武汉理工计算机图形学大作业源码Word下载.docx
- 文档编号:18229429
- 上传时间:2022-12-14
- 格式:DOCX
- 页数:13
- 大小:75.33KB
武汉理工计算机图形学大作业源码Word下载.docx
《武汉理工计算机图形学大作业源码Word下载.docx》由会员分享,可在线阅读,更多相关《武汉理工计算机图形学大作业源码Word下载.docx(13页珍藏版)》请在冰豆网上搜索。
intx,y,dx,dy,i;
floatk,e;
dx=x1-x0;
dy=y1-y0;
k=1.0*dy/dx;
e=-0.5;
x=x0;
y=y0;
for(i=0;
i<
=dx;
i++)
{putpixel(x,y,color);
x=x+1;
e=e+k;
if(e>
=0){y++,e=e-1;
}
voidmain()
intgd=DETECT;
intgm;
initgraph(&
gd,&
gm,"
c:
\\tc30\\bgi"
);
bresenhamline(100,100,600,200,WHITE);
getchar();
4.程序运行截图
二、用C语言编写:
画y=sin(x)的图形(要求画出[-2π,2π]的图形及笛卡尔坐标)
#include"
stdio.h"
graphics.h"
math.h"
voiddrawSin(intx,inty,intA){
inti=0;
line(x-300,y,x+300,y);
line(x+290,y-10,x+300,y);
line(x+290,y+10,x+300,y);
line(x,y-200,x,y+200);
line(x-10,y-190,x,y-200);
line(x+10,y-190,x,y-200);
for(i=-314/2;
i<
(314/2);
i++)
{
putpixel(x+i,(int)A*sin((double)i/25)+y,WHITE);
}
C:
drawSin(300,200,100);
getch();
closegraph();
4.程序运行截图
三、用C语言编写一个小圆沿着大圆运动的程序。
3.程序源代码
#include<
math.h>
voidmain()
intgd=DETECT;
intgm;
inti;
floatx;
x=0;
initgraph(&
gd,&
gm,"
\\tc"
cleardevice();
for(i=0;
=1800;
{circle(320,240,100);
circle(320+100*cos(x),240+100*sin(x),30);
x=x+3.1415926/180;
delay(100);
cleardevice();
closegraph();
四、对图1中的零件图形,如何根据它所标注的尺寸,按照适当的顺序有步聚地画出该图形。
conio.h>
stdlib.h>
floatRi,Ro,Rc,u1,v1,u2,v2,u3,v3,mmaxx,mmaxy;
floatx1,y1,x2,y2,x3,y3,x4,y4,x5,y5,x6,y6;
floatcx1,cy1,cx2,cy2,cx3,cy3,cx4,cy4,cx5,cy5,cx6,cy6,ox1,oy1,ox2,oy2,
ox3,oy3,ox4,oy4,ox5,oy5,ox6,oy6;
voidEnterData()
clrscr();
gotoxy(1,6);
printf("
Entertheradiusof:
hecircle.\n"
gotoxy(1,8);
Entereincircleradius(>
=12.5):
\n"
scanf("
%f"
&
Ri);
Enterout_circleradius(>
=25.0):
\n"
Ro);
Enterconvex_radius(>
=10.0):
Rc);
voidInitialize()
intgraphdriver,grapgmode;
graphdriver=DETECT;
initgraph(&
graphdriver,&
grapgmode,"
\\TC30\\BGI"
mmaxx=getmaxx()/2;
mmaxy=getmaxy()/2;
voidBase_Center_Line()
floatdesh_R;
desh_R=(4*Ro+Ri)/5;
u1=((4*Ro+Ri)/5)*cos(-30*0.017453);
v1=((4*Ro+Ri)/5)*sin(-30*0.017453);
u2=0.0;
v2=((4*Ro+Ri)/5);
u3=((4*Ro+Ri)/5)*cos(210*0.017453);
v3=((4*Ro+Ri)/5)*sin(210*0.017453);
line(mmaxx-Ro-Rc,mmaxy,mmaxx-(Ro+Rc)/2,mmaxy);
line(mmaxx-(Ro+Rc)/2+5,mmaxy,mmaxx-(Ro+Rc)/2+5,mmaxy);
line(mmaxx-(Ro+Rc)/2+10,mmaxy,mmaxx-(Ro+Rc)/2,mmaxy);
line(mmaxx+(Ro+Rc)/2+5,mmaxy,mmaxx-(Ro+Rc)/2+5,mmaxy);
line(mmaxx+(Ro+Rc)/2+10,mmaxy,mmaxx+Ro+Rc,mmaxy);
line(mmaxx,mmaxy+Ro+Rc,mmaxx,mmaxy+(Ro+Rc)/2+10);
line(mmaxx,mmaxy+(Ro+Rc)/2+5,mmaxx,mmaxy+(Ro+Rc)/2+5);
line(mmaxx,mmaxy+(Ro+Rc)/2,mmaxx,mmaxy-(Ro+Rc)/2+10);
line(mmaxx,mmaxy-(Ro+Rc)/2+5,mmaxx,mmaxy-(Ro+Rc)/2+5);
line(mmaxx,mmaxy-(Ro+Rc)/2,mmaxx,mmaxy-Ro-Rc);
arc(mmaxx,mmaxy,0,25,desh_R);
arc(mmaxx,mmaxy,28,29,desh_R);
arc(mmaxx,mmaxy,32,110,desh_R);
arc(mmaxx,mmaxy,113,114,desh_R);
arc(mmaxx,mmaxy,117,185,desh_R);
arc(mmaxx,mmaxy,187,188,desh_R);
arc(mmaxx,mmaxy,191,255,desh_R);
arc(mmaxx,mmaxy,258,259,desh_R);
arc(mmaxx,mmaxy,262,300,desh_R);
arc(mmaxx,mmaxy,303,304,desh_R);
arc(mmaxx,mmaxy,307,360,desh_R);
voidKnown_Circle()
circle(mmaxx,mmaxy,Ri);
circle(mmaxx+u1,mmaxy-v1,Rc/2);
circle(mmaxx+u2,mmaxy-v2,Rc/2);
circle(mmaxx+u3,mmaxy-v3,Rc/2);
voidLink_Arc_Center()
floatA,B,D1,D2,D3,B2_4AC1,B2_4AC2,B2_4AC3;
floatBD1,BD2,BD3,Root1,Root2,Root3,temp;
A=Ro*Ro+8*Ro*Rc/5+16*Rc*Rc/25;
B=Ro*Ro+8*Ro*Rc/5-13*Rc*Rc/5;
D1=u1*u1+v1*v1;
D2=u2*u2+v2*v2;
D3=u3*u3+v3*v3;
BD1=B+D1;
BD2=B+D2;
BD3=B+D3;
B2_4AC1=u1*u1*((4*A*D1)-BD1*BD1);
B2_4AC2=u2*u2*((4*A*D2)-BD2*BD2);
B2_4AC3=u3*u3*((4*A*D3)-BD3*BD3);
Root1=sqrt(B2_4AC1);
Root2=sqrt(B2_4AC2);
Root3=sqrt(B2_4AC3);
y1=(v1*BD1-Root1)/(2*D1);
temp=A-y1*y1;
x1=sqrt(temp);
y2=(v1*BD1+Root1)/(2*D1);
temp=A-y2*y2;
x2=sqrt(temp);
y3=(v2*BD2+Root2)/(2*D2);
temp=A-y3*y3;
x3=sqrt(temp);
y4=(v2*BD2+Root2)/(2*D2);
x4=-sqrt(A-y4*y4);
y5=(v3*BD3+Root3)/(2*D3);
x5=-sqrt(A-y5*y5);
y6=(v3*BD3-Root3)/(2*D3);
x6=-sqrt(A-y6*y6);
voidTangent_Point()
floatRj,Lc,Lo;
Rj=4*Rc/5;
Lc=4.0/5.0;
Lo=Rj/Rc;
cx1=(x1+Lc*u1)/(1+Lc);
cy1=(y1+Lc*v1)/(1+Lc);
cx2=(x2+Lc*u1)/(1+Lc);
cy2=(y2+Lc*v1)/(1+Lc);
cx3=(x3+Lc*u2)/(1+Lc);
cy3=(y3+Lc*v2)/(1+Lc);
cx4=(x4+Lc*u2)/(1+Lc);
cy4=(y4+Lc*v2)/(1+Lc);
cx5=(x5+Lc*u3)/(1+Lc);
cy5=(y5+Lc*v3)/(1+Lc);
cx6=(x6+Lc*u3)/(1+Lc);
cy6=(y6+Lc*v3)/(1+Lc);
ox1=(x1+Lo*0.0)/(1+Lo);
oy1=(y1+Lo*0.0)/(1+Lo);
ox2=(x2+Lo*0.0)/(1+Lo);
oy2=(y2+Lo*0.0)/(1+Lo);
ox3=(x3+Lo*0.0)/(1+Lo);
oy3=(y3+Lo*0.0)/(1+Lo);
ox4=(x4+Lo*0.0)/(1+Lo);
oy4=(y4+Lo*0.0)/(1+Lo);
ox5=(x5+Lo*0.0)/(1+Lo);
oy5=(y5+Lo*0.0)/(1+Lo);
ox6=(x6+Lo*0.0)/(1+Lo);
oy6=(y6+Lo*0.0)/(1+Lo);
voidMyarc(floatctx,floatcty,floatstartx,floatstarty,floatendx,floatendy,floatR)
floatsx,sy,ex,ey,sangle,eangle;
sx=startx-ctx;
sy=starty-cty;
ex=endx-ctx;
ey=endy-cty;
if(sx!
=0.0)
if(sx>
0.00)sangle=atan(sy/sx);
if(sx<
0.0)sangle=atan(sy/sx)+3.1415926;
else
if(sy>
0.0)sangle=3.1415926/2;
if(sy<
0.0)sangle=3*3.1415926/2;
if(ex!
if(ex>
0.0)eangle=atan(ey/ex);
if(ex<
0.0)eangle=atan(ey/ex)+3.1415926;
if(ey>
0.0)eangle=3.1415926/2;
if(ey<
0.0)eangle=3*3.1415926/2;
sangle=sangle/0.017453;
eangle=eangle/0.017453;
arc(mmaxx+ctx,mmaxy-cty,sangle,eangle,R);
voidOut_Link_Arc()
floatRj;
Myarc(u1,v1,cx1,cy1,cx2,cy2,Rc);
Myarc(x2,y2,ox2,oy2,cx2,cy2,Rj);
Myarc(0.0,0.0,ox2,oy2,ox3,oy3,Ro);
Myarc(x3,y3,cx3,cy3,ox3,oy3,Rj);
Myarc(u2,v2,cx3,cy3,cx4,cy4,Rc);
Myarc(x4,y4,ox4,oy4,cx4,cy4,Rj);
Myarc(0.0,0.0,ox4,oy4,ox5,oy5,Ro);
Myarc(x5,y5,cx5,cy5,ox5,oy5,Rj);
Myarc(u3,v3,cx5,cy5,cx6,cy6,Rc);
Myarc(x6,y6,ox6,oy6,cx6,cy6,Rj);
Myarc(0.0,0.0,ox6,oy6,ox1,oy1,Ro);
Myarc(x1,y1,cx1,cy1,ox1,oy1,Rj);
EnterData();
Initialize();
Base_Center_Line();
Known_Circle();
Link_Arc_Center();
Tangent_Point();
Out_Link_Arc();
getche();
五、小结
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 武汉理工 计算机 图形学 作业 源码