iOS 中 CGPointApplyAffineTransform 函数的公式

Formula for CGPointApplyAffineTransform function in iOS

我正在尝试根据 iOS 代码

在 Android 中仿射旋转矩阵

iOS有两个函数CGAffineTransformMakeRotationCGPointApplyAffineTransform用于计算

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);

我可以使用上面的公式计算第 1 步的 a、b、c、d

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 的矩阵 class - 不工作

我也尝试过 Java 的 AffineTransform - 不工作

CGAffineTransform 函数背后的数学原理在 “The Math Behind the Matrices” in the Quartz 2D Programming Guide 中有描述。

使用仿射变换对点进行变换的公式如下:

x' = ax + cy + tx
y' = bx + dy + ty

顺带一提,你在第1步中把b和c的符号调反了,起到了反转旋转方向的作用