问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

点的坐标系变换原理与代码示例详解

创作时间:
作者:
@小白创作中心

点的坐标系变换原理与代码示例详解

引用
CSDN
1.
https://blog.csdn.net/qq_35971623/article/details/138267205

坐标系变换是计算机视觉、机器人学等领域中的一个基本概念,它涉及到如何将一个坐标系中的点转换到另一个坐标系中。本文将详细介绍点的坐标系变换原理,并通过具体的代码示例帮助读者理解这一过程。

变换矩阵

变换矩阵在坐标系变换中扮演着核心角色。它包含了两个主要部分:旋转矩阵和平移矩阵。

  1. 旋转矩阵:旋转矩阵描述了两个坐标系之间的旋转关系。具体来说,旋转矩阵的列向量表示旋转后的新坐标轴在原坐标系中的投影。例如,第一列向量表示旋转后的新X轴在原坐标系X、Y、Z轴方向上的投影。

  2. 平移矩阵:平移矩阵描述了两个坐标系原点之间的位置关系。它表示一个坐标系的原点在另一个坐标系中的位置。

旋转矩阵的性质

旋转矩阵具有以下重要性质:

  • 列向量是单位向量:每个列向量的长度为1,表示旋转后的坐标轴方向。
  • 列向量两两正交:任意两个列向量之间的点积为0,表示旋转后的坐标轴相互垂直。

从局部坐标系到全局坐标系

公式推导

代码示例

import numpy as np

def transform_to_global(local_point, rotation_matrix, translation_vector):
    # 将局部坐标系中的点转换到全局坐标系中
    global_point = np.dot(rotation_matrix, local_point) + translation_vector
    return global_point

# 示例:将局部坐标系(车辆坐标系)上的点(局部规划路径终点*10)转换到全局坐标系上(蓝色点)
local_point = np.array([10, 0, 0])  # 局部坐标系中的点
rotation_matrix = np.array([[np.cos(np.pi/4), -np.sin(np.pi/4), 0],
                            [np.sin(np.pi/4), np.cos(np.pi/4), 0],
                            [0, 0, 1]])  # 旋转矩阵
translation_vector = np.array([5, 5, 0])  # 平移向量

global_point = transform_to_global(local_point, rotation_matrix, translation_vector)
print("Global point:", global_point)

从全局坐标系到局部坐标系

要将全局坐标系中的点转换回局部坐标系,可以使用逆变换矩阵。逆变换矩阵由旋转矩阵的转置和平移向量的相反数组成。

def transform_to_local(global_point, rotation_matrix, translation_vector):
    # 将全局坐标系中的点转换回局部坐标系
    local_point = np.dot(rotation_matrix.T, global_point - translation_vector)
    return local_point

# 示例:将全局坐标系中的点转换回局部坐标系
global_point = np.array([15, 5, 0])  # 全局坐标系中的点
rotation_matrix = np.array([[np.cos(np.pi/4), -np.sin(np.pi/4), 0],
                            [np.sin(np.pi/4), np.cos(np.pi/4), 0],
                            [0, 0, 1]])  # 旋转矩阵
translation_vector = np.array([5, 5, 0])  # 平移向量

local_point = transform_to_local(global_point, rotation_matrix, translation_vector)
print("Local point:", local_point)

通过上述代码示例,我们可以清晰地看到如何使用变换矩阵将点在不同坐标系之间进行转换。这对于机器人导航、计算机视觉等领域的应用具有重要意义。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号