Hoa*_*ynh 0 apache-flex math geometry transform matrix
我编写了一个程序(像这样),由于用户在缩放,倾斜,旋转和平移方面的输入,该程序生成了转换矩阵并将其应用于对象。
现在我要反过来做:给定转换矩阵,如何计算这些值?矩阵是2D(a,b,c,d,tx,ty)。
我知道这是一个纯粹的数学问题,但是我在高中时还不够集中……
我在本教程中发现了很多有用的信息,这些信息为我解决了这个问题。这是那些关心的人的公式:
平移(像素)
x := tx
y := ty
Run Code Online (Sandbox Code Playgroud)
规模(时间)
scale_x := sqrt(a^2 + b^2)
scale_y := sqrt(c^2 + d^2)
Run Code Online (Sandbox Code Playgroud)
偏斜度
skew_x := 180/pi * atan2(d, c) - 90
skew_y := 180/pi * atan2(b, a)
Run Code Online (Sandbox Code Playgroud)
旋转度
这是棘手的部分:旋转不是基本的变换函数;实际上,这是偏斜和缩放相结合的结果。您可以通过对象x和y轴倾斜对象,然后对其进行缩放以使其看起来像已旋转。x偏斜角通常被视为旋转角:
rotation := skew_x
Run Code Online (Sandbox Code Playgroud)
有时:
rotation := skew_y
Run Code Online (Sandbox Code Playgroud)