NX中3*3坐标系矩阵的存储形式,第一行是X坐标还是第一列是X坐标


在NX中向量乘矩阵会用到的两个函数UF_MTX3_multiply 和UF_MTX3_multiply_t 

向量乘矩阵是如何计算;

行向量乘以矩阵的话用行向量乘以矩阵的每一列,矩阵乘以列向量的话用矩阵的每一行乘以列向量

     公式一

 所以代表坐标系的矩阵在NX中的存储形式是还是(其中{x1,y1,z1}表示坐标系的X轴坐标)对于向量X矩阵是非常重要的。

所以用代码验证了一下代码如下;

UF_initialize();
    //----------------------------------------------------

    double douVecX[3] = { 1.0,0.0,0.0 };
    double douMtx[9] = { 1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0,9.0 };//矩阵
    double douVec[3];

    UF_MTX3_vec_multiply(douVecX, douMtx, douVec);
    char msg[256];
    sprintf_s(msg, "douVec = %f %f %f\n", douVec[0], douVec[1], douVec[2]);
    UF_UI_open_listing_window();
    UF_UI_write_listing_window(msg);

    //----------------------------------------------------
UF_terminate();

输出结果为1,4,7。

结合公式一,将公式一中的a=1,b=0,c=0。则结果为{x1,x2,x3};

所以矩阵douMtx在NX中的存储形式应为;

            

同理若将douMtx换成一个坐标系矩阵,则可证明

NX中3*3矩阵的第一列存储的是坐标系的X轴。