osg,objectarx及occt之间矩阵的转换

osg的矩阵表达形式为osg::Matrix

ObjectArx的矩阵表达式为AcGeMatrix3d

occt的矩阵表达式分gp_Trsf及支持变形的gp_GTrsf

 

osg矩阵转化为ObjectArx

复制代码
osg::Matrix mVPW;
TcGeMatrix3d matrix;
for (int i = 0; i < 4; ++i)
{
    for (int j = 0; j < 4; ++j)
    {
        matrix(j, i) = mVPW(i, j);
    }
}

注意行列是要反一下的
复制代码

osg矩阵转换为gp_Trsf,必须是等比矩阵可用

    gp_Trsf aTrsf;
    aTrsf.SetValues(mVPW(0, 0), mVPW(1, 0), mVPW(2, 0), mVPW(3, 0),
                    mVPW(0, 1), mVPW(1, 1), mVPW(2, 1),    mVPW(3, 1),
                    mVPW(0, 2), mVPW(1, 2), mVPW(2, 2), mVPW(3, 2));

osg矩阵转换为gp_GTrsf

复制代码
gp_GTrsf aGTrsf;
for (int i = 0; i < 3; ++i)
{
    for (int j = 0; j < 4; ++j)
    {
        aGTrsf.SetValue(i + 1, j + 1, mVPW(j, i));
    }
}

注意行列是反的
复制代码

 

posted @   unicornsir  阅读(44)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示