(x',y',z')表示新的位置,
(x,y,z)表示当前位置,
(dx,dy,dz)平移的量。
加法2D平移
[egin{bmatrix}
x' \
y' \
end{bmatrix}
=
egin{bmatrix}
x \
y \
end{bmatrix}
+
egin{bmatrix}
dx \
dy \
end{bmatrix}
]
加法3D平移
[egin{bmatrix}
x' \
y' \
z' \
end{bmatrix}
=
egin{bmatrix}
x \
y \
z \
end{bmatrix}
+
egin{bmatrix}
dx \
dy \
dz \
end{bmatrix}
]
乘法2D平移
[egin{bmatrix}
x' \
y' \
1 \
end{bmatrix}
=
egin{bmatrix}
1 & 0 & dx \
0 & 1 & dy \
0 & 0 & 1 \
end{bmatrix}
egin{bmatrix}
x \
y \
1 \
end{bmatrix}
=
egin{bmatrix}
1(x) + 0(y) + dx(1) \
0(x) + 1(y) + dy(1) \
0(x) + 0(y) + 1(1) \
end{bmatrix}
]
乘法3D平移
[egin{bmatrix}
x' \
y' \
z' \
1 \
end{bmatrix}
=
egin{bmatrix}
1 & 0 & 0 & dx \
0 & 1 & 0 & dy \
0 & 0 & 1 & dz \
0 & 0 & 0 & 1 \
end{bmatrix}
egin{bmatrix}
x \
y \
z \
1 \
end{bmatrix}
=
egin{bmatrix}
1(x) + 0(y) +0(z) + dx(1) \
0(x) + 1(y) +0(z) + dy(1) \
0(x) + 0(y) +1(z) + dz(1) \
0(x) + 0(y) +0(z) + 1(1) \
end{bmatrix}
]
(x',y',z')表示一个点经过缩放后的新位置,
(x,y,z)表示未缩放前的原始位置,
Sx、Sy、Sz分别表示在x轴、y轴和z轴方向上的缩放因子。
注意:计算多个点的缩放,需要将每个点位置分别代入公式计算。
2D缩放
[egin{bmatrix}
x' \
y' \
1 \
end{bmatrix}
=
egin{bmatrix}
Sx & 0 & 0 \
0 & Sy & 0 \
0 & 0 & 1 \
end{bmatrix}
egin{bmatrix}
x \
y \
1 \
end{bmatrix}
=
egin{bmatrix}
Sx(x) + 0(y) + 0(1) \
0(x) + Sy(y) + 0(1) \
0(x) + 0(y) + 1(1) \
end{bmatrix}
]
3D缩放
[egin{bmatrix}
x' \
y' \
z' \
1 \
end{bmatrix}
=
egin{bmatrix}
Sx & 0 & 0 & 0 \
0 & Sy & 0 & 0 \
0 & 0 & Sz & 0 \
0 & 0 & 0 & 1 \
end{bmatrix}
egin{bmatrix}
x \
y \
z \
1 \
end{bmatrix}
=
egin{bmatrix}
Sx(x) + 0(y) +0(z) + 0(1) \
0(x) + Sy(y) +0(z) + 0(1) \
0(x) + 0(y) +Sz(z) + 0(1) \
0(x) + 0(y) +0(z) + 1(1) \
end{bmatrix}
]
2D旋转
(x',y',z')表示一个点经过旋转后的新位置,
(x,y,z)表示未旋转前的原始位置,
( heta)为旋转角度(编程中以弧度为单位)
注意:计算多个点的旋转,需要将每个点位置分别代入公式计算。
[egin{bmatrix}
x' \
y' \
1 \
end{bmatrix}
=
egin{bmatrix}
cos heta & -sin heta & 0 \
sin heta & cos heta & 0 \
0 & 0 & 1 \
end{bmatrix}
egin{bmatrix}
x \
y \
1 \
end{bmatrix}
]
绕Z轴3D旋转
[egin{bmatrix}
x' \
y' \
z' \
1 \
end{bmatrix}
=
egin{bmatrix}
cos heta & -sin heta & 0 & 0 \
sin heta & cos heta & 0 & 0 \
0 & 0 & 1 & 0 \
0 & 0 & 0 & 1 \
end{bmatrix}
egin{bmatrix}
x \
y \
z \
1 \
end{bmatrix}
]
绕X轴3D旋转
[egin{bmatrix}
x' \
y' \
z' \
1 \
end{bmatrix}
=
egin{bmatrix}
1 & 0 & 0 & 0 \
0 & cos heta & -sin heta & 0 \
0 & sin heta & cos heta & 0 \
0 & 0 & 0 & 1 \
end{bmatrix}
egin{bmatrix}
x \
y \
z \
1 \
end{bmatrix}
]
绕Y轴3D旋转
[egin{bmatrix}
x' \
y' \
z' \
1 \
end{bmatrix}
=
egin{bmatrix}
cos heta & 0 & sin heta & 0 \
0 & 1 & 0 & 0 \
-sin heta & 0 & cos heta & 0 \
0 & 0 & 0 & 1 \
end{bmatrix}
egin{bmatrix}
x \
y \
z \
1 \
end{bmatrix}
]
四元数实现旋转
https://zhuanlan.zhihu.com/p/27471300?group_id=862339882582945792
https://www.cnblogs.com/hjlweilong/p/6018213.html
https://blog.csdn.net/linyijiong/article/details/79777399
https://www.cnblogs.com/jins-note/p/9512753.html