Формула для функции CGPointApplyAffineTransform в iOS
Я пытаюсь связать матрицу поворота в Android на основе кода iOS
iOS имеет две функции CGAffineTransformMakeRotation
а также CGPointApplyAffineTransform
используется для расчета
Step 1: CGAffineTransformMakeRotation();
Input:
2.2860321998596191
Result:
a = -0.65579550461444569,
b = 0.75493857771840255,
c = -0.75493857771840255,
d = -0.65579550461444569,
tx = 0, ty = 0
Formula:
double A = Math.cos(RadiansRotated);
double B = -Math.sin(RadiansRotated);
double C = Math.sin(RadiansRotated);
double D = Math.cos(RadiansRotated);
Я могу рассчитать a,b,c,d для шага 1, используя приведенную выше формулу
Step 2: CGPointApplyAffineTransform()
Input :
x = 612.55191924649432,
y = -391.95960729287646
And Matrix return from Step 1
Result:
x = -105.80336653205421,
y = 719.48442314773808
Кто-нибудь знает формулу, используемую в ApplyAffineTransform?
Мне нужна помощь для шага 2
Я пытался с матрицей класса Android - не работает
Я также пробовал с AffineTransform Java - не работает
1 ответ
Математика за CGAffineTransform
Функции описаны в разделе "Математика за матрицами" в Руководстве по программированию в Quartz 2D.
Формулы для преобразования точки с использованием аффинного преобразования имеют вид:
х ' = топор + ци + т х
y ' = bx + dy + t y
Кстати, на вашем шаге 1 вы поменяли местами знаки b и c, что приводит к изменению направления вращения.