专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »C语言教程 » 轴对称图形:在图形模式下显示3D图形绕任意轴旋转的程序 »正文

轴对称图形:在图形模式下显示3D图形绕任意轴旋转的程序

来源: 发布时间:星期四, 2008年9月25日 浏览:29次 评论:0

在图形模式下显示3D图形绕任意轴旋转的程序,物体的每一个顶点的坐标都储存在外部变量point中了,比如说第一个顶点就是point[0],他的坐标是(point[0][0],point[0][1],point[0][2])。整个步骤我想在程序的注释中讲得很清楚了。我qq是164449625,欢迎留言。最好用WINTC编译。

#include \"stdio.h\"
#include \"Conio.h\"
#include \"graphics.h\"
#include \"math.h\"
#define closegr closegraph
#define PI 3.1415926
#define I 30
double point[I][3]={{300,260,100},{200,260,100},{200,160,100},{300,160,100},{300,260,100},
{300,260,120},{200,260,120},{200,160,120},{300,160,120},{300,260,120},
{300,260,140},{200,260,140},{200,160,140},{300,160,140},{300,260,140},
{300,260,160},{200,260,160},{200,160,160},{300,160,160},{300,260,160},
{300,260,180},{200,260,180},{200,160,180},{300,160,180},{300,260,180},
{300,260,200},{200,260,200},{200,160,200},{300,160,200},{300,260,200}
}, /*用来存放物体各个顶点的坐标*/
chp[I][3],
vector[3]; /* 运动轴的方向矢量,该矢量的起点是原点,三个元素用来存放终点的坐标*/


void initgr(void)
{int gd=DETECT,gm=0;
registerbgidriver(EGAVGA_driver);
initgraph(&gd,&gm,\"\");
}

main()
{
double x,y,z,x1,y1,z1,t,io=1,
angle1,angle2,axletree[2][3],i,f[3];
int s=0,e=27; /*这里设定转动轴的终点point[e][x]和起点point[s][x]*/

vector[0]=point[e][0]-point[s][0]; /*该运动轴由点point[7]和point[0]作为终点和起点*/
vector[1]=point[e][1]-point[s][1];
vector[2]=point[e][2]-point[s][2];

for(i=-1,t=0;t<2;t++) /*得到运动轴上的两个点用来显示轴*/
{
x=point[e][0]+(i*vector[0]);
y=point[e][1]+(i*vector[1]);
z=point[e][2]+(i*vector[2]);
axletree[t][0]=x;
axletree[t][1]=y;
axletree[t][2]=z;
i+=15;
}


if(vector[0]<=0) /*如果vector[0]==0&&vector[1]==0方向矢量的angle1不存在*/
{
if(!vector[0]&&!vector[1])
{
angle1=10000;
angle2=0.5*PI;
}
else
angle1=PI-asin(vector[1]/sqrt((vector[0]*vector[0])+(vector[1]*vector[1]))); /*注意这里的vector[1]取正或者取负都成立*/

相关文章

读者评论

  • 共0条 分0页

发表评论

  • 昵称:
  • 内容: