c++实现的三维图形平移//倆矩阵相乘方法不太理解。解决方法

c++实现的三维图形平移//倆矩阵相乘方法不太理解。。。
本帖最后由 mirroatl256 于 2013-11-04 22:45:38 编辑
先是俩矩阵相乘

T[0][0]=1;
        T[0][1]=0;
        T[0][2]=0;
        T[0][3]=0;
T[1][0]=1;
        T[1][1]=1;
        T[1][2]=0; 
        T[1][3]=0; 
        T[2][0]=0;
        T[2][1]=0; 
T[2][2]=1;
        T[2][3]=0;
T[3][0]=0;
T[3][1]=10;//右移10个像素
T[3][2]=0;
T[3][3]=1;
        //4*4三维数组
        P3D[0][0]=0;P3D[0][1]=0;P3D[0][2]=0;P3D[0][3]=1;//A点(0,0,0)
P3D[1][0]=0;P3D[1][1]=a;P3D[1][2]=0;P3D[1][3]=1;//B点(0,a,0)
P3D[2][0]=0;P3D[2][1]=a;P3D[2][2]=a;P3D[2][3]=1;//C点(0,a,a)
P3D[3][0]=0;P3D[3][1]=0;P3D[3][2]=a;P3D[3][3]=1;//D点(0,0,a)
P3D[4][0]=a;P3D[4][1]=0;P3D[4][2]=0;P3D[4][3]=1;//E点(a,0,0)
P3D[5][0]=a;P3D[5][1]=a;P3D[5][2]=0;P3D[5][3]=1;//F点(a,a,0)
P3D[6][0]=a;P3D[6][1]=a;P3D[6][2]=a;P3D[6][3]=1;//G点(a,a,a)
P3D[7][0]=a;P3D[7][1]=0;P3D[7][2]=a;P3D[7][3]=1;//H点(a,0,a)



void CSixView::Calculate(double P3D[][4], double T[][4])//矩阵相乘
{
//这个矩阵相乘,为啥循环8次 ,
//每次要4次把P3D每行4个元素分别与T每列4个元素相对应的下标元素相乘4次 
//分别赋值给P3D每行的每个元素 。
//内层循环时,
//比如第一次循环,把P3D的4个元素 与T第一列 相乘的结果赋值给P3D[0][0]
//比如第二次循环,把P3D的4个元素 与T第一列 相乘的结果赋值给P3D[0][1]
//。。。。。。。。。。。。
//虽然过程知道,但是,不明白这是啥原理?
       for(int i=0;i<8;i++)
for(int j=0;j<4;j++)
P3D[i][j]=P3D[i][0]*T[0][j]+P3D[i][1]*T[1][j]+P3D[i][2]*T[2][j]+P3D[i][3]*T[3][j];
}



//矩阵运算完,就是3维转二维,然后就是画点。。。。

------解决方案--------------------
你是不是在看别人的程序,从你提供的代码来看,绝对是垃圾代码一堆

再看下去你就掉沟里了

OpenGL编程怎么能限于加减乘除计算?  

怎么画线,画3D模型,怎么设置颜色材质,怎么实现动画效果,这些是要看的,矩阵计算封装个类就可以了