3D坐标旋转公式
3D坐标旋转公式
- 介绍
- 1. 绕z轴旋转
- 2. 绕x轴旋转
- 3. 绕y轴旋转
介绍
3D坐标旋转公式的推导通常涉及绕坐标轴(x轴、y轴、z轴)的旋转。这些旋转可以用旋转矩阵表示。以下将详细推导绕每个坐标轴的旋转公式,基于三角函数和向量投影的概念。假设使用右手坐标系,旋转角度为θ,且旋转为正旋转(符合右手定则:拇指指向轴的正方向,手指弯曲方向为旋转正方向)。
1. 绕z轴旋转
当点绕z轴旋转时,其z坐标保持不变,而x和y坐标的变化类似于2D平面旋转。考虑点P(x, y, z),绕z轴旋转θ角度后得到点P’(x’, y’, z’)。
设点P在xy平面上的投影与x轴的夹角为φ,则:
x=rcosϕ,y=rsinϕx = r \cos\phi, \quad y = r \sin\phi x=rcosϕ,y=rsinϕ
其中r是点P到z轴的距离(投影半径)。旋转后,夹角变为φ + θ,因此:
x′=rcos(ϕ+θ)=r(cosϕcosθ−sinϕsinθ)=xcosθ−ysinθx' = r \cos(\phi + \theta) = r (\cos\phi \cos\theta - \sin\phi \sin\theta) = x \cos\theta - y \sin\theta x′=rcos(ϕ+θ)=r(cosϕcosθ−sinϕsinθ)=xcosθ−ysinθ
y′=rsin(ϕ+θ)=r(sinϕcosθ+cosϕsinθ)=xsinθ+ycosθy' = r \sin(\phi + \theta) = r (\sin\phi \cos\theta + \cos\phi \sin\theta) = x \sin\theta + y \cos\theta y′=rsin(ϕ+θ)=r(sinϕcosθ+cosϕsinθ)=xsinθ+ycosθ
z′=zz' = z z′=z
因此,绕z轴旋转的矩阵为:
Rz(θ)=[cosθ−sinθ0sinθcosθ0001]R_z(\theta) = \begin{bmatrix} \cos\theta & -\sin\theta & 0 \\ \sin\theta & \cos\theta & 0 \\ 0 & 0 & 1 \end{bmatrix} Rz(θ)=cosθsinθ0−sinθcosθ0001
2. 绕x轴旋转
当点绕x轴旋转时,其x坐标保持不变,而y和z坐标的变化类似于2D旋转在yz平面内。考虑点P(x, y, z),绕x轴旋转θ角度后得到点P’(x’, y’, z’)。
设点P在yz平面上的投影与y轴的夹角为φ,则:
y=rcosϕ,z=rsinϕy = r \cos\phi, \quad z = r \sin\phi y=rcosϕ,z=rsinϕ
其中r是点P到x轴的距离。旋转后,夹角变为φ + θ,因此:
y′=rcos(ϕ+θ)=r(cosϕcosθ−sinϕsinθ)=ycosθ−zsinθy' = r \cos(\phi + \theta) = r (\cos\phi \cos\theta - \sin\phi \sin\theta) = y \cos\theta - z \sin\theta y′=rcos(ϕ+θ)=r(cosϕcosθ−sinϕsinθ)=ycosθ−zsinθ
z′=rsin(ϕ+θ)=r(sinϕcosθ+cosϕsinθ)=ysinθ+zcosθz' = r \sin(\phi + \theta) = r (\sin\phi \cos\theta + \cos\phi \sin\theta) = y \sin\theta + z \cos\theta z′=rsin(ϕ+θ)=r(sinϕcosθ+cosϕsinθ)=ysinθ+zcosθ
x′=xx' = x x′=x
因此,绕x轴旋转的矩阵为:
Rx(θ)=[1000cosθ−sinθ0sinθcosθ]R_x(\theta) = \begin{bmatrix} 1 & 0 & 0 \\ 0 & \cos\theta & -\sin\theta \\ 0 & \sin\theta & \cos\theta \end{bmatrix} Rx(θ)=1000cosθsinθ0−sinθcosθ
3. 绕y轴旋转
当点绕y轴旋转时,其y坐标保持不变,而x和z坐标的变化类似于2D旋转在xz平面内。但需要注意的是,从正y轴看(视线沿负y方向),正旋转为顺时针方向。因此,在xz平面内的旋转相当于2D顺时针旋转。
考虑点P(x, y, z),绕y轴旋转θ角度后得到点P’(x’, y’, z’)。在xz平面内,点P的投影坐标为(x, z),旋转后为(x’, z’)。对于2D顺时针旋转,有:
x′=xcosθ+zsinθx' = x \cos\theta + z \sin\theta x′=xcosθ+zsinθ
z′=−xsinθ+zcosθz' = -x \sin\theta + z \cos\theta z′=−xsinθ+zcosθ
y′=yy' = y y′=y
因此,绕y轴旋转的矩阵为:
Ry(θ)=[cosθ0sinθ010−sinθ0cosθ]R_y(\theta) = \begin{bmatrix} \cos\theta & 0 & \sin\theta \\ 0 & 1 & 0 \\ -\sin\theta & 0 & \cos\theta \end{bmatrix} Ry(θ)=cosθ0−sinθ010sinθ0cosθ