绘制三维物体时,需要3d点转成2d点进行绘制//不太明白。。。
//Transform3DTo2D(P3D,P2D,8);
//参数double P2D[8][2]; //第一维 形状物体8个点 第二维 x、y坐标值
//参数double P3D[8][4]; //第一维 形状物体8个点 第二维 x、 y、 z 坐标值、原点到x y z 点的矢量长度
void CSixView::Transform3DTo2D(const double P3D[][4], double P2D[][2], const int n)//三维坐标变换为二维坐标
{
for(int i=0;i<n;i++)
{
P2D[i][0]=P3D[i][1]-P3D[i][0]/sqrt((double)2);
//将i点 的三维的y轴值 - x轴值 / 2的开平方 是啥意思???
P2D[i][1]=-P3D[i][2]+P3D[i][0]/sqrt((double)2);
//将i点 的三维的z轴值 - x轴值 / 2的开平方 是啥意思???
}
}
[解决办法]
点可以被平移,也可以被旋转,也可同时旋转+平移
向量可被旋转(向量最后一位是0,在和4X4矩阵相乘时矩阵第四列无效)
矩阵4X4就是一个旋转+平移的复合矩阵,如果被乘对象是点,那就是对点做操作,如果被乘对象是向量,则只有旋转效果
而缩放则视4X4右下角数字是否为1,1:无缩放,非1:缩放(仅对点有效)