显示一个立方体的斜二测图(用数组存放正方体的各顶点坐标)
显示一个立方体的斜二测图(用数组存放正方体的各顶点坐标)
代码已经过编译,可直接使用。
#include<graphics.h>
#include<stdio.h>
#include<math.h>
float t=0.5,b;
//斜二测
void twoxiece(float *p){
int i,q[24],j=0;
float x,y,z;
for(i=0;i<24;i=i+3){
x=p[i];y=p[i+1];z=p[i+2];
p[i]=x+z*t*cos(b);
p[i+1]=y+z*t*sin(b);
p[i+2]=0;
}
for(i=0;i<24;i=i+3){
q[j++]=(int)p[i];
q[j++]=(int)p[i+1];
}
int s1[10]={q[0],q[1],q[2],q[3],q[10],q[11],q[8],q[9],q[0],q[1]};
int s2[10]={q[4],q[5],q[6],q[7],q[14],q[15],q[12],q[13],q[4],q[5]};
drawpoly(5,s1);
drawpoly(5,s2);
line(q[0],q[1],q[6],q[7]);
line(q[2],q[3],q[4],q[5]);
line(q[8],q[9],q[14],q[15]);
line(q[10],q[11],q[12],q[13]);
}
//主函数
int main(){
int gd=DETECT,gmode;
double pi=3.1415926;
float p[24]={0,0,0,100,0,0,100,100,0,0,100,0,0,0,100,100,0,100,100,100,100,0,100,100};
printf("a=arccot2\n");
printf("输入b角度:\n");
scanf("%f",&b);
b=pi*b/180;
initgraph(&gd,&gmode,"");
twoxiece(p);
getchar();
getchar();
closegraph();
return 0;
}
输入运行时参数:
运行后立方体图案: