显示一个立方体的斜二测图(用数组存放正方体的各顶点坐标)

显示一个立方体的斜二测图(用数组存放正方体的各顶点坐标)

代码已经过编译,可直接使用。

#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;
}

输入运行时参数:
显示一个立方体的斜二测图(用数组存放正方体的各顶点坐标)
运行后立方体图案:
显示一个立方体的斜二测图(用数组存放正方体的各顶点坐标)