2009年5月2日星期六

CAD/CAM图形变换程序设计

实验一图形变换
用任一种高级语言编写出3~4种常用的二维、三维图形基本变换程序。要求在报告中写出具体的调试过程,并附上源程序。


(1)二维坐标平移变换
egraphics.h
emath.h
estdio.h
main()
{intm,n,i,j,k;
intgd=DETECT,gm;
intarray[4][2]={{60,50},{200,50},{200,100},{60,100}};

intbrray[4][2]={0};
scanf(%d%d,m,n);

for(i=0;i4;i++)
{brray[i][0]=array[i][0]+m;brray[i][1]=array[i][1]+n;}
initgraph(gd,gm,c:\\tc);
cleardevice();
setbkcolor(9);
setcolor(4);
rectangle(array[3][0],array[3][1],array[1][0],array[1][1]);
rectangle(brray[3][0],brray[3][1],brray[1][0],brray[1][1]);
getch();
closegraph();
}
输入:34
输出:两个图形的平移过程。

(2)二维坐标比例变换
egraphics.h
main()
{intgd=DETECT,gm;floata,b,x1,y1,x2,y2;
scanf(%f,%f,%f,%f,%f,%f,x1,y1,x2,y2,a,b);
initgraph(gd,gm,c:\\tc);
cleardevice();
setbkcolor(9);setcolor(4);
rectangle(x1,y1,x2,y2);
getch();
x1=x1;
y1=y1;
x2=(x2-x1)*a+x2;
y2=(y2-y1)*b+y2;
rectangle(x1,y1,x2,y2);
getch();closegraph();
}
输入:20,30,50,60,2,3
输出:两个图形比例变换。

(3)二维任意图形相对任意点旋转一个角度
egraphics.h
emath.h
voidrect(x0,y0,theta0,a,n)
intx0,y0,theta0,a[5][2];
{intx1,y1,x2,y2;
intx,y,i;
floattheta;
theta=theta0*0.0174533;
x1=a[0][0]*cos(theta)-a[0][1]*sin(theta);
y1=a[0][0]*sin(theta)+a[0][1]*cos(theta);
x2=x1+x0;
y2=-y1+y0;
moveto(x2,y2);
for(i=0;in;i++)
{x=a[i][0]*cos(theta)-a[i][1]*sin(theta);
y=a[i][0]*sin(theta)-a[i][1]*cos(theta);
x=x+x0;
y=-y+y0;
lineto(x,y);}}
main()
{staticintarray[5][2]={{0,0},{80,0},{80,20},{0,20},{0,0}};
intx0=0,y0=0,n=5;
inttheta0;
intgd=DETECT,gm;
initgraph(gd,gm,c:\\tc);
printf(inputtheta0\n);
scanf(%d,theta0);
cleardevice();
setbkcolor(9);setcolor(4);
rectangle(0,20,80,0);
rect(x0,y0,theta0,array,n);
getch();closegraph();}
输入一个角度
输出图形旋转变换
||浏览()|(0)最近读者:网友评论:发表评论:姓名:*姓名最长为50字节网址或邮箱:(选填)内容:验证码:请点击后输入四位验证码,字母不区分大小写

没有评论:

发表评论