计算机图形学大作业.docx

上传人:b****5 文档编号:12281270 上传时间:2023-04-17 格式:DOCX 页数:13 大小:57.32KB
下载 相关 举报
计算机图形学大作业.docx_第1页
第1页 / 共13页
计算机图形学大作业.docx_第2页
第2页 / 共13页
计算机图形学大作业.docx_第3页
第3页 / 共13页
计算机图形学大作业.docx_第4页
第4页 / 共13页
计算机图形学大作业.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

计算机图形学大作业.docx

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

计算机图形学大作业.docx

计算机图形学大作业

学生学号

实验课成绩

《计算机图形学》大作业

实验课程名称

计算机图形学

开课学院

计算机科学与技术学院

指导教师姓名

佘名高

学生姓名

学生专业班级

201-201学年第学期

3、程序源代码

#include

#include

voidbresenhamline(intx0,inty0,intx1,inty1,intcolor)

{

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,"");

bresenhamline(200,132,570,200,WHITE);

getchar();

}

4、程序运行截图

 

3、程序源代码

#include"stdio.h"

#include"graphics.h"

#include"math.h"

voiddrawSin(intx,inty,intA){

inti=0;

line(x-300,y,x+340,y);line(x+330,y-10,x+340,y);line(x+330,y+10,x+340,y);

line(x,y-250,x,y+250);line(x-10,y-240,x,y-250);line(x+10,y-240,x,y-250);

for(i=-314/2;i<314/2;i++)

{

putpixel(x+i,(int)A*sin((double)i/25)+y,WHITE);

}

}

voidmain()

{

intgd=DETECT;

intgm;

initgraph(&gd,&gm,"");

drawSin(300,250,100);

getchar();

closegraph();

}

4、程序运行截图

 

3、程序源代码

#include

#include

#include

voidmain()

{

intgd=DETECT;

intgm;

inti;

floatx;

x=0;

initgraph(&gd,&gm,"");

cleardevice();

for(i=0;i<=1800;i++)

{circle(350,250,150);

circle(350+150*cos(x),250+150*sin(x),30);

x=x+3.1415926/180;

Sleep(10);

cleardevice();

}

getchar();

closegraph();

}

4、程序运行截图

 

3、程序源代码

#include

#include

#include

#include

#include

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

printf("Entereincircleradius(>=12.5):

\n");

scanf("%f",&Ri);

printf("Enterout_circleradius(>=25.0):

\n");

scanf("%f",&Ro);

printf("Enterconvex_radius(>=10.0):

\n");

scanf("%f",&Rc);

}

voidInitialize()

{

intgraphdriver,grapgmode;

graphdriver=DETECT;

initgraph(&graphdriver,&grapgmode,"");

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!

=0.0)

{

if(ex>0.0)eangle=atan(ey/ex);

if(ex<0.0)eangle=atan(ey/ex)+3.1415926;

}

else

{

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;

Rj=4*Rc/5;

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

}

voidmain()

{

EnterData();

Initialize();

Base_Center_Line();

Known_Circle();

Link_Arc_Center();

Tangent_Point();

Out_Link_Arc();

getche();

closegraph();

}

3、程序运行截图

 

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

当前位置:首页 > 经管营销 > 经济市场

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

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