• memoの左手转右手


    memoの左手转右手

    说的是坐标系。
    假设两个坐标系都是X向右,Y向上。那么,右手系的Z是从屏幕垂直向外,左手系的Z就是垂直屏幕向里。
    向量假设是列向量。(OpenGL系的毛病啊,列向量,右手系,泪目)

    先说结论

    变换矩阵为:

    [S_z= ext{Diag}(1,1,-1,1)=egin{bmatrix} 1 & 0 & 0 & 0 \ 0 & 1 & 0 & 0 \ 0 & 0 & -1 & 0 \ 0 & 0 & 0 & 1 \ end{bmatrix} ]

    对于点或者向量来说:

    [v_{ ext{RH}} = S_z cdot v_{ ext{LH}} ]

    对于矩阵来说:

    [A_{ ext{RH}} = S_z cdot A_{ ext{LH}} cdot S_z ]

    简单示例代码如下:

    Vector3 v_LH(x_LH, y_LH, z_LH);
    Matrix4 A_LH(
        a11, a12, a13, a14,
        a21, a22, a23, a24,
        a31, a32, a33, a34,
        a41, a42, a43, a44);
    
    Vector3 v_RH(x_LH, y_LH, -z_LH);
    Matrix4 A_RH(
        a11, a12, -a13, a14,
        a21, a22, -a23, a24,
        -a31, -a32, a33, -a34,
        a41, a42, -a43, a44);
    

    参考文献:Conversion of Left-Handed Coordinates to Right-Handed Coordinates

  • 相关阅读:
    解决Qt creator无法输入中文
    JSP 问题总结
    oracle锁与死锁概念,阻塞产生的原因以及解决方案
    QT学习记录
    使用函数式接口
    使用函数式接口来传递行为
    Prototype(原型)
    Singleton(单例)
    Factory
    Template
  • 原文地址:https://www.cnblogs.com/daiday/p/14982761.html
Copyright © 2020-2023  润新知