zoukankan      html  css  js  c++  java
  • 3D 矩阵旋转

    如图,需要将点(向量) v(x, y, 0) 绕 z 轴旋转角度 θ,求旋转后的点(向量) v'(x', y', 0)。

    大概思路:

    1. 将 v(x, y, 0) 分解, v(x, y, 0) = x * p(1, 0, 0) + y * q(0, 1, 0) + 0 * r(0, 0, 1)   -   r 为 z 轴方向基向量

    2. 绕 z 轴旋转基向量 p(1, 0, 0) 为 p'(cos(θ), sin(θ), 0), q(0, 1, 0) 为 q'(cos(90 + θ), sin(90 + θ), 0)

    3. 由向量 p' 和 q' 可以表示 v',即 v'(x', y', 0) = x * p'(cos(θ), sin(θ), 0) + y * q'(cos(90 + θ), sin(90 + θ), 0) + 0 * (0, 0, 1)

    用公式写一下逻辑:对一个点(向量)v, 可以用基向量表示为

    其中,p, q, r 分别表示为 x, y, z 轴上基向量。让 v 绕 z 轴旋转角度 θ,可以表示为

    其中 v' 表示旋转后的点(向量), p' 表示基向量 p 绕 z 轴旋转角度 θ, q' 表示基向量 q 绕 z 轴旋转角度 θ。3D坐标系以右手坐标系为准,即 x轴正方向右,y轴正方向上,z正方向外。p', q' 分别为

    最后得到旋转后的点 v' 表示为

    最后得到一个点(向量)绕 z 轴旋转的矩阵 Mz 为 

    同理可得到绕 x 轴和绕 y 轴的旋转矩阵 MxMy 分别为

    ,  

    懒是一种态度
  • 相关阅读:
    npm升级package.json依赖包到最新版本号
    vue中 父子组件的通讯
    vue组件开发
    vue模拟后端获取数据——json-server与express
    vue-cli 2.x 搭建项目
    python socket编程
    python异常处理
    python反射
    python特殊成员函数
    Executor ExecutorService Executors
  • 原文地址:https://www.cnblogs.com/idoublewei/p/3634282.html
Copyright © 2011-2022 走看看