zoukankan      html  css  js  c++  java
  • 绕任意点旋转的矩阵

    三维空间中有时候需要计算绕任意点旋转的矩阵,假设绕点P(x1,y1)旋转α角度,则步骤分为三步:

    1.计算将P点平移到原点的矩阵T1。

    2.计算旋转α角度的旋转矩阵R1。

    3.计算将从原点平移到P点的平移矩阵T2。

    最终的结果矩阵matrix = T1 * R1 * T2,旋转后的顶点坐标P' = matrix * P。

    代码如下:

     1 vec4 getRoateByPoint(vec3 point,vec3 roatePoint,float angleZ)
     2 {
     3     
     4     //=================得到变换矩阵  start====================
     5     //平移到原点的平移矩阵
     6     mat4 firstransfromMat = mat4(1.0, 0.0, 0.0, -roatePoint.x,
     7                                  0.0, 1.0, 0.0, -roatePoint.y,
     8                                  0.0, 0.0, 1.0, -roatePoint.z,
     9                                  0.0, 0.0, 0.0, 1.0);
    10                                  0.0, 0.0, 0.0, 1.0);
    11   
    12     
    13     mat4 RoateMatZ = mat4(cos(angleZ), -sin(angleZ), 0.0, 0.0,
    14                           sin(angleZ), cos(angleZ), 0.0, 0.0,
    15                           0.0, 0.0, 1.0, 0.0,
    16                           0.0, 0.0, 0.0, 1.0);
    17     
    18     //平移到目标点的平移矩阵
    19     mat4 lasttransformat = mat4(1.0, 0.0, 0.0, roatePoint.x,
    20                                 0.0, 1.0, 0.0, roatePoint.y,
    21                                 0.0, 0.0, 1.0, roatePoint.z,
    22                                 0.0, 0.0, 0.0, 1.0);
    23     //=================得到变换矩阵  end====================
    24     return firstransfromMat * RoateMatZ * lasttransformat * vec4(point,1.0);//
    25 }
  • 相关阅读:
    RCP二级菜单的实现
    volatile 的作用
    C6678 核间通信(IPC)
    大小端模式详解
    SPI 极性与相位对采样的影响
    DSP c6678的启动方式
    DSP CCS初学
    volatile的作用
    JTree/DefaultMutableTreeNode 树形结构
    java.awt.Graphics2D绘制流程图基本元素
  • 原文地址:https://www.cnblogs.com/calence/p/6207569.html
Copyright © 2011-2022 走看看