Формула для функции 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, что приводит к изменению направления вращения.

Другие вопросы по тегам