三维坐标变换为二维坐标//为什么二维不用double P2D[8][3];而用double P2D[8][2]???
//为什么二维不用double P2D[8][3];而用double P2D[8][2]???
void CSixView::Transform3DTo2D(const double P3D[][4], double P2D[][2], const int n)//三维坐标变换为二维坐标
{
//三维坐标
//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)
for(int i=0;i<n;i++)
{
P2D[i][0]=P3D[i][1]-P3D[i][0]/sqrt(2.0);
P2D[i][1]=-P3D[i][2]+P3D[i][0]/sqrt(2.0);
}
}
[解决办法]
一般投影有两种轴测投影,斜二侧投影,和正等侧
1)45,135度 夹角,斜二测投影,立方体比较好
3)120 度夹角,正等测,投影,球体,圆柱体比较好。
45度角 z轴 向上,x轴向右,y轴和向右上 和 z轴x轴 成 45角
135度角 z轴 向上,x轴向右,y轴和向左下 和z轴, x轴 成 135角
120度角 z轴 向上,x轴向右下,y轴和向左下 互成120度角
斜二测投影 x,z 比例为1 y比例为 (√2)/2 x:y:z =1: (√2)/2 :1
正等测投影 正常应该为 x:y:z =(√3)/2 :(√3)/2:(√3)/2,不过画图时一般是x:y:z =1:1:1
另外,还有一种叫做,透射投影,一般用来,画立体图形,按照视线进行投影。
特点是: 远小近大,不成比例;不过和人观察事物的效果一致,立体感强。
一般 ,绘图除了绘制,轴测投影的投影图外。
还要绘制,透射投影的效果图。
[解决办法]
按右手法则,可以:
z轴 向上,y轴向右, 左斜x轴 与z轴;y轴 各成 45角