请各位帮我看看这个旋转三角形的角度问题!!
我确实是把角度增量设定的每侦一度啊,怎么运行起来后每侦起码增加了20度啊,是精度丢失的问题吗?望各位说下,谢谢!!
#include<graphics.h>
#include<math.h>
#include<dos.h>
#define PI 3.1415926535898
typedef struct POINT1
{
float x,y,z;
}POINT3D;
int main()
{
POINT3D x[3];
POINT3D tx[3];
int i,k=0,angle=0;
int gdriver=DETECT,gmode;
initgraph(&gdriver,&gmode,"d:\\tc3\\bgi");
x[0].x=0;x[0].y=20;x[0].z=0;
x[1].x=10;x[1].y=-10;x[1].z=0;
x[2].x=-10;x[2].y=-10;x[2].z=0;
while(1)
{
setcolor(BLACK);
line(tx[0].x,tx[0].y,tx[1].x,tx[1].y);
line(tx[2].x,tx[2].y,tx[1].x,tx[1].y);
line(tx[0].x,tx[0].y,tx[2].x,tx[2].y);
angle++;
if(angle>=360)
angle=0;
for(i=0;i<3;i++)
{
tx[i].x=x[i].x*cos(angle/PI)+x[i].z*sin(angle/PI);
tx[i].y=x[i].y;
tx[i].z=(-x[i].x)*sin(angle/PI)+x[i].z*cos(angle/PI);
}
for(i=0;i<3;i++)
{
tx[i].x=tx[i].x;
tx[i].y=tx[i].y;
tx[i].z=tx[i].z+30;
}
for(i=0;i<3;i++)
{
tx[i].x=tx[i].x/tx[i].z;
tx[i].y=tx[i].y/tx[i].z;
}
for(i=0;i<3;i++)
{
tx[i].x=(tx[i].x+1)*200;
tx[i].y=400-(tx[i].y+1)*200;
}
setcolor(WHITE);
line(tx[0].x,tx[0].y,tx[1].x,tx[1].y);
line(tx[2].x,tx[2].y,tx[1].x,tx[1].y);
line(tx[0].x,tx[0].y,tx[2].x,tx[2].y);
delay(300);
k++;
if(k>50)
break;
}
getch();
return 0;