二维(三维)坐标系中旋转矩阵详细推导

文章详细介绍了二维坐标系中点的旋转变换,包括逆时针和顺时针旋转的矩阵表示。通过三角函数和坐标变换,推导出旋转矩阵公式,并解释了如何利用旋转矩阵进行点的坐标变换。同时,讨论了坐标系自身的旋转对点坐标的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

求三维坐标系的旋转矩阵通常需要求分别沿3个坐标轴的二维坐标系下的旋转矩阵,二维坐标系下的旋转矩阵的推导过程通常以某一点逆时针旋转 θ \theta θ角度进行推理。以下将通过此例来详细讲解二维坐标系下的旋转矩阵推导过程,并进一步给出其他方式的旋转矩阵。

一、二维坐标中点的旋转变换

点的旋转矩阵(逆时针旋转)

已知点 P ( x , y ) P(x, y) P(x,y),将该点以逆时针方向旋转 θ \theta θ角度后得到点 P ′ ( x ′ , y ′ ) P^{\prime}(x^{\prime}, y^{\prime}) P(x,y),如下图所示。求由点 P P P到点 P ′ P^{\prime} P的旋转矩阵。
请添加图片描述

  • 设半径为 r r r,由图可以分别得到以下三角公式:

    • 对于点 P ( x , y ) P(x, y) P(x,y)
      x = r cos ⁡ α y = r sin ⁡ α (1) \begin{aligned} & x=r \cos \alpha \\ & y=r \sin \alpha \end{aligned} \tag{1} x=rcosαy=rsinα(1)
    • 对于点 P ′ ( x ′ , y ′ ) P^{\prime}(x^{\prime}, y^{\prime}) P(x,y)
      x ′ = r cos ⁡ ( α + θ ) y ′ = r sin ⁡ ( α + θ ) (2) \begin{aligned} & x^{\prime}=r \cos (\alpha+\theta) \\ & y^{\prime}=r \sin (\alpha+\theta) \end{aligned} \tag{2} x=rcos(α+θ)y=rsin(α+θ)(2)
  • 根据两角和的正弦与余弦公式:
    sin ⁡ ( α + θ ) = sin ⁡ α cos ⁡ θ + cos ⁡ α sin ⁡ θ cos ⁡ ( α + θ ) = cos ⁡ α cos ⁡ θ − sin ⁡ α sin ⁡ θ (3) \begin{aligned} & \sin (\alpha+\theta)=\sin \alpha \cos \theta+\cos \alpha \sin \theta \\ & \cos (\alpha+\theta)=\cos \alpha \cos \theta-\sin \alpha \sin \theta \end{aligned} \tag{3} sin(α+θ)=sinαcosθ+cosαsinθcos(α+θ)=cosαcosθsinαsinθ(3)

  • 将公式(3)代入公式(2),可得到:

### 二维坐标系转换的数学公式与算法 #### 转换原理 在二维空间中,当需要将一个点从某个局部坐标系 \(X'O'Y'\) 映射到另一个全局坐标系 \(XOY\) 中时,可以通过旋转和平移操作完成。具体来说,这种转换可以分为两部分:一是由于两个坐标系之间的相对旋转引起的坐标变化;二是由于两个坐标系之间的相对位移所导致的变化。 给定条件包括: - 坐标系 \(X'O'Y'\) 相对于 \(XOY\) 的偏移量 \((T_x, T_y)\)[^2]; - 坐标系 \(X'O'Y'\) 相对于 \(XOY\)旋转角度 \(\alpha\)[^2]; - 点 \(P(X', Y')\) 在局部坐标系中的位置。 目标是求解该点在全局坐标系中的位置 \((X, Y)\)。 通过几何推导可得以下公式: \[ X = X' \cos(\alpha) - Y' \sin(\alpha) + T_x \] \[ Y = X' \sin(\alpha) + Y' \cos(\alpha) + T_y \] 上述公式的矩阵形式为: \[ \begin{bmatrix} X \\ Y \\ 1 \end{bmatrix} = \begin{bmatrix} \cos(\alpha) & -\sin(\alpha) & T_x \\ \sin(\alpha) & \cos(\alpha) & T_y \\ 0 & 0 & 1 \end{bmatrix} \cdot \begin{bmatrix} X' \\ Y' \\ 1 \end{bmatrix} \] 这里引入了齐次坐标的表示方式,即将二维向量扩展至三维来统一表达平移和旋转变换的操作[^1]。 #### 实现代码示例 以下是基于 Python 和 NumPy 库实现的一个简单例子,用于计算点在不同坐标系间的映射关系: ```python import numpy as np def transform_point(x_prime, y_prime, alpha, tx, ty): """ 将点 (x_prime, y_prime) 从局部坐标系转换到全局坐标系 参数: x_prime: 局部坐标系下点的横坐标 y_prime: 局部坐标系下点的纵坐标 alpha: 局部坐标系相对于全局坐标系旋转角(弧度制) tx: 局部坐标系原点相对于全局坐标系原点的水平偏移 ty: 局部坐标系原点相对于全局坐标系原点的竖直偏移 返回: tuple: 全局坐标系下的点坐标 (X, Y) """ # 构造变换矩阵 transformation_matrix = np.array([ [np.cos(alpha), -np.sin(alpha), tx], [np.sin(alpha), np.cos(alpha), ty], [0 , 0 , 1 ] ]) # 齐次坐标表示 point_homogeneous = np.array([x_prime, y_prime, 1]) # 执行变换 result = np.dot(transformation_matrix, point_homogeneous) return result[0], result[1] # 测试数据 x_prime_test = 3 y_prime_test = 4 alpha_test = np.radians(45) # 45 degrees converted to radians tx_test = 2 ty_test = 3 result_X, result_Y = transform_point(x_prime_test, y_prime_test, alpha_test, tx_test, ty_test) print(f"Transformed Point Coordinates: ({result_X}, {result_Y})") ``` 此函数实现了从局部坐标系到全局坐标系的转换过程,并利用齐次坐标简化了运算逻辑。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值