请各位帮我看看这个旋转三角形的角度问题!!

RabbitLBJ 2009-07-17 10:00:08
我确实是把角度增量设定的每侦一度啊,怎么运行起来后每侦起码增加了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;
...全文
79 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
RabbitLBJ 2009-07-18
  • 打赏
  • 举报
回复
.......
wanyuzhen 2009-07-18
  • 打赏
  • 举报
回复
转完之后还有其他操作啊
楼住只是在xoz平面转,然后Z 正向移动30,接着进行 X,Y变换
天地一棵树 2009-07-17
  • 打赏
  • 举报
回复
不懂,帮顶!!!
RabbitLBJ 2009-07-17
  • 打赏
  • 举报
回复
大家帮我看看啊,麻烦了!!

70,024

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧