尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

深入解析:三维坐标转换

深入解析:三维坐标转换
📅 发布时间:2026/6/19 12:22:09

深入解析:三维坐标转换

如果坐标(x,y,z)->(y,-z,-x)可以使用坐标系:

import math def mat_vec_mult(matrix, vector):    """    将 3x3 矩阵与 3x1 向量相乘。    参数:        matrix: 3x3 的旋转矩阵        vector: 3x1 的向量    返回:        3x1 的结果向量    """    result = [0, 0, 0]    for i in range(3):        result[i] = sum(matrix[i][j] * vector[j] for j in range(3))    return result def rotation_matrix_intrinsic_xyz(alpha, beta, gamma, degrees=True):    """    计算内旋顺序(绕 x、y、z 轴)下的旋转矩阵。    参数:        alpha: 绕 x 轴的旋转角度        beta:  绕 y 轴的旋转角度        gamma: 绕 z 轴的旋转角度        degrees: 如果为 True,则输入角度为度;否则为弧度    返回:        3x3 的旋转矩阵,作为嵌套列表    """    if degrees:        alpha = math.radians(alpha)        beta = math.radians(beta)        gamma = math.radians(gamma)     # 绕 x 轴的旋转矩阵    Rx = [        [1, 0, 0],        [0, math.cos(alpha), -math.sin(alpha)],        [0, math.sin(alpha),  math.cos(alpha)]    ]     # 绕 y 轴的旋转矩阵    Ry = [        [ math.cos(beta), 0, math.sin(beta)],        [0, 1, 0],        [-math.sin(beta), 0, math.cos(beta)]    ]     # 绕 z 轴的旋转矩阵    Rz = [        [math.cos(gamma), -math.sin(gamma), 0],        [math.sin(gamma),  math.cos(gamma), 0],        [0, 0, 1]    ]     # 矩阵乘法:R = Rx * Ry * Rz    def mat_mult(A, B):        result = [[0]*3 for _ in range(3)]        for i in range(3):            for j in range(3):                result[i][j] = sum(A[i][k] * B[k][j] for k in range(3))        return result     # R = mat_mult(Rx, mat_mult(Ry, Rz))    R=mat_mult(Rz, mat_mult(Ry, Rx))    return R # 示例:绕 x 轴旋转 30 度,绕 y 轴旋转 45 度,绕 z 轴旋转 60 度# alpha = -90  # 绕 x 轴的角度# beta = 180  # 绕 y 轴的角度# gamma = 45 # 绕 z 轴的角度 alpha = -90  # 绕 x 轴的角度beta = 0  # 绕 y 轴的角度gamma = 90 # 绕 z 轴的角度 rotation_matrix = rotation_matrix_intrinsic_xyz(alpha, beta, gamma) print("旋转矩阵:")for row in rotation_matrix:    print(row) a=[0,0,1]# 应用旋转矩阵+b = mat_vec_mult(rotation_matrix, a) print("旋转矩阵:",b)

这里,用内旋方法(每次都绕自己变化的轴转),R=Rz*Ry*Rx先绕x轴转,再绕y轴转,最后绕z轴转,可得到结果。

也可以用外旋的方法,绕x轴转,再绕y轴转,最后绕z轴转R=Rx*Ry*Rz,绕原来的坐标轴:

import math def mat_vec_mult(matrix, vector):    """    将 3x3 矩阵与 3x1 向量相乘。    参数:        matrix: 3x3 的旋转矩阵        vector: 3x1 的向量    返回:        3x1 的结果向量    """    result = [0, 0, 0]    for i in range(3):        result[i] = sum(matrix[i][j] * vector[j] for j in range(3))    return result def rotation_matrix_intrinsic_xyz(alpha, beta, gamma, degrees=True):    """    计算内旋顺序(绕 x、y、z 轴)下的旋转矩阵。    参数:        alpha: 绕 x 轴的旋转角度        beta:  绕 y 轴的旋转角度        gamma: 绕 z 轴的旋转角度        degrees: 如果为 True,则输入角度为度;否则为弧度    返回:        3x3 的旋转矩阵,作为嵌套列表    """    if degrees:        alpha = math.radians(alpha)        beta = math.radians(beta)        gamma = math.radians(gamma)     # 绕 x 轴的旋转矩阵    Rx = [        [1, 0, 0],        [0, math.cos(alpha), -math.sin(alpha)],        [0, math.sin(alpha),  math.cos(alpha)]    ]     # 绕 y 轴的旋转矩阵    Ry = [        [ math.cos(beta), 0, math.sin(beta)],        [0, 1, 0],        [-math.sin(beta), 0, math.cos(beta)]    ]     # 绕 z 轴的旋转矩阵    Rz = [        [math.cos(gamma), -math.sin(gamma), 0],        [math.sin(gamma),  math.cos(gamma), 0],        [0, 0, 1]    ]     # 矩阵乘法:R = Rx * Ry * Rz    def mat_mult(A, B):        result = [[0]*3 for _ in range(3)]        for i in range(3):            for j in range(3):                result[i][j] = sum(A[i][k] * B[k][j] for k in range(3))        return result     R = mat_mult(Rx, mat_mult(Ry, Rz)) #外旋    # R=mat_mult(Rz, mat_mult(Ry, Rx)) #内旋    return R # 示例:绕 x 轴旋转 30 度,绕 y 轴旋转 45 度,绕 z 轴旋转 60 度# alpha = -90  # 绕 x 轴的角度# beta = 180  # 绕 y 轴的角度# gamma = 45 # 绕 z 轴的角度 alpha = -90  # 绕 x 轴的角度beta = -90 # 绕 y 轴的角度gamma = 0 # 绕 z 轴的角度 rotation_matrix = rotation_matrix_intrinsic_xyz(alpha, beta, gamma) print("旋转矩阵:")for row in rotation_matrix:    print(row) a=[1,0,0]# 应用旋转矩阵+b = mat_vec_mult(rotation_matrix, a) print("旋转矩阵:",b)

相关新闻

  • Wails + Go + React跨平台RTSP播放器分享
  • 【A】Strategy above the depths
  • 完整教程:Python 训练营打卡 Day 43

最新新闻

  • MC68020协处理器接口:CIR寄存器与响应原语机制详解
  • 京保通保安服务有限公司:校园医院厂区商场多场景安保服务优选 - 品牌推荐官
  • 孟州市行知塑业密胺餐具推荐:商用餐饮全场景解决方案供应商 - 品牌推荐官
  • 郑州黄金回收避雷指南,认准合扬不被商家偷偷扣克重 - 奢侈品回收评测
  • 郑州黄金回收水深别上当,合扬门店称重报价全透明 - 奢侈品回收评测
  • 2026年Kafuter胶水系列推荐:上海岩旦机电科技提供篷布/密封胶全品类解决方案 - 品牌推荐官

日新闻

  • 5分钟掌握Python进化算法:Geatpy高性能优化工具完全指南
  • Microchip 24AA044 EEPROM选型与应用全指南:从参数解析到实战编程
  • 华为的鸿蒙到底有多牛?为什么称作遥遥领先?

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号