zoukankan      html  css  js  c++  java
  • 绕空间任意轴旋转矩阵

     其中,(u,v,w)为单位旋转轴,(a,b,c)为旋转轴上一点坐标

    //绕空间任意轴旋转矩阵
            public static double[] GetRotateMatrix(XDPOINT p,XDVector axis,double angleRad)
            {
                axis = axis.Unit();
                double[] M = LCMetroKernel.IdentityMatrix4x4();
                double a = p.x; double b = p.y; double c = p.z;
                double u = axis.I;  double v = axis.J;  double w = axis.K;
                double Cos = Math.Cos(angleRad);
                double Sin = Math.Sin(angleRad);
    
                M[0] = u * u + (v * v + w * w) * Cos;
                M[1] = u * v * (1 - Cos) - w * Sin;
                M[2] = u * w * (1 - Cos) + v * Sin;
                M[3] = (a * (v * v + w * w) - u * (b * v + c * w)) * (1 - Cos) + (b * w - c * v) * Sin;
                M[4] = u * v * (1 - Cos) + w * Sin;
                M[5] = v * v + (u * u + w * w) * Cos;
                M[6] = v * w * (1 - Cos) - u * Sin;
                M[7] = (b * (u * u + w * w) - v * (a * u + c * w)) * (1 - Cos) + (c * u - a * w) * Sin;
                M[8] = u * w * (1 - Cos) - v * Sin;
                M[9] = v * w * (1 - Cos) + u * Sin;
                M[10] = w * w + (u * u + v * v) * Cos;
                M[11] = (c * (u * u + v * v) - w * (a * u + b * v)) * (1 - Cos) + (a * v - b * u) * Sin;
    
                return M;
            }
  • 相关阅读:
    相关系数
    T检验
    Python模块常用的几种安装方式
    DOM与SAX读取XML方式的不同
    Base64编码
    node.js网页爬虫
    Node.js Express 框架
    Node.js Web 模块
    Node.js GET/POST请求
    Node.js 常用工具
  • 原文地址:https://www.cnblogs.com/larry-xia/p/12161399.html
Copyright © 2011-2022 走看看