武汉理工计算机图形学大作业源码Word下载.docx

上传人:b****6 文档编号:18229429 上传时间:2022-12-14 格式:DOCX 页数:13 大小:75.33KB
下载 相关 举报
武汉理工计算机图形学大作业源码Word下载.docx_第1页
第1页 / 共13页
武汉理工计算机图形学大作业源码Word下载.docx_第2页
第2页 / 共13页
武汉理工计算机图形学大作业源码Word下载.docx_第3页
第3页 / 共13页
武汉理工计算机图形学大作业源码Word下载.docx_第4页
第4页 / 共13页
武汉理工计算机图形学大作业源码Word下载.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

武汉理工计算机图形学大作业源码Word下载.docx

《武汉理工计算机图形学大作业源码Word下载.docx》由会员分享,可在线阅读,更多相关《武汉理工计算机图形学大作业源码Word下载.docx(13页珍藏版)》请在冰豆网上搜索。

武汉理工计算机图形学大作业源码Word下载.docx

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();

五、小结

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 艺术

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1