局部坐标系和世界坐标系的关系

本文详细介绍了三维坐标系中物体位置变换的过程,重点讨论了局部坐标系与世界坐标系之间的转换矩阵。通过矩阵运算,阐述了如何使用逆矩阵来更新局部坐标系,以反映物体在世界坐标系中的位置变化。同时,提到了变换矩阵在物体平移中的作用,并给出了求解新局部矩阵的公式,为理解3D图形学中的坐标变换提供了清晰的理论依据。

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

通常矩阵是用4*4表示

其中

a11 a12 a13 通常用来表示物体的x坐标轴信息

a21 a22 a23 通常用来表示物体的y坐标轴信息

a31 a32 a33 通常用来表示物体的z坐标轴信息

a41 a42 a43 通常用来表示物体的原点坐标位置

a14 a24 a34 通常用来表示物体的平移部分
 

局部坐标系和世界坐标系的关系

当物体在世界坐标系下进行变换位置,需要一个变换矩阵

矩阵*矩阵的逆=单位矩阵

其中

局部坐标系:M局

世界坐标系:M世

局部转世界坐标系的转换矩阵:T转

物体位置发生变换的变换矩阵:V变

求变换后的局部矩阵

 

T转是不会变化的。设新的局部矩阵为:M新局

M局 * T转=M世;

T转 =(M局^-1)   *  M世;    (1)  //转换矩阵=局部矩阵的逆矩阵*世界矩阵

(M局*T转)*V变= M世*V变

M新局*T转=M世*V变                   //新的局部矩阵*局部转世界矩阵=世界矩阵*世界变换矩阵

M新局=M世*V变*(T转^-1); (2)

有1、2式可以求出变换的局部矩阵

### 局部坐标系世界坐标系的转换 为了实现从局部坐标系世界坐标系的转换,需要构建一个旋转矩阵 \( RT \),该矩阵能够表示两个坐标系之间的变换关系。具体过程如下: 定义局部坐标系的三个轴向量分别为 \( X_{local} \), \( Y_{local} \), \( Z_{local} \)[^1]。 #### 构建旋转矩阵 假设已知局部坐标系相对于全局坐标系的方向余弦,则可以构成如下的旋转矩阵 \( R \): \[ R = \begin{bmatrix} X_{local}.x & Y_{local}.x & Z_{local}.x \\ X_{local}.y & Y_{local}.y & Z_{local}.y \\ X_{local}.z & Y_{local}.z & Z_{local}.z \\ \end{bmatrix} \] 其中每一列代表了新的基底在旧有标准正交基下对应的分量表达形式。 对于任意一点 P,在局部坐标系内的位置可以通过乘上这个旋转矩阵来获得其在全球坐标系的位置: \[ P_{world} = RP_{local} \] 如果存在平移偏置的话还需要加上原点 O 的位移矢量 T : \[ P_{world} = RP_{local} + T \] 这里需要注意的是,当涉及到实际编程时,通常会采用齐次坐标的方式来进行上述运算,这样可以使整个操作更加简洁高效。 ```python import numpy as np def transform_point(local_point, rotation_matrix, translation_vector): """ 将局部坐标系中的点转换至世界坐标系 参数: local_point (np.array): 形状为(3,)的numpy数组,表示待转换的三维空间内某点坐标的列向量 rotation_matrix (np.matrix): 形状为(3, 3)的numpy矩阵,用于描述由局部坐标系转到全球坐标系所需的旋转变换 translation_vector (np.array): 形状为(3,)的numpy数组,表示局部坐标系相对应于全球坐标系的原点偏移量 返回值: world_point (np.array): 转换后的三维空间内某点的世界坐标 """ # 使用齐次坐标处理方式简化计算流程 homogeneous_local_point = np.append(local_point, 1) transformation_matrix = np.vstack((rotation_matrix.T, translation_vector)) transformation_matrix = np.column_stack((transformation_matrix, [[0], [0], [0], [1]])) homogeneous_world_point = transformation_matrix @ homogeneous_local_point world_point = homogeneous_world_point[:3]/homogeneous_world_point[-1] return world_point ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值