1、计算机图形学大作业学生学号实验课成绩计算机图形学大作业实验课程名称计算机图形学开 课 学 院计算机科学与技术学院指导教师姓名佘名高学 生 姓 名学生专业班级201-201 学年 第 学期3、程序源代码#include#includevoid bresenhamline (int x0,int y0,int x1, int y1,int color)int x, y, dx, dy,i;float k, e;dx = x1-x0; dy = y1- y0; k=1.0*dy/dx;e=-0.5; x=x0; y=y0;for (i=0; i= 0) y+, e=e-1;void main() i
2、nt gd = DETECT; int gm; initgraph(&gd,&gm, ); bresenhamline(200,132,570,200, WHITE); getchar();4、程序运行截图3、程序源代码#include stdio.h#include graphics.h#include math.hvoid drawSin(int x,int y,int A) int i = 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);li
3、ne(x-10,y-240,x,y-250);line(x+10,y-240,x,y-250); for (i = -314/2;i314/2;i+) putpixel(x+i,(int)A*sin(double)i/25)+y, WHITE); void main() int gd = DETECT; int gm; initgraph(&gd,&gm,); drawSin(300,250,100); getchar(); closegraph();4、程序运行截图3、程序源代码#include #include#include void main() int gd = DETECT; in
4、t gm; int i; float x; 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#includefloat Ri,Ro,Rc,u1,v1,u2,v2,u
5、3,v3,mmaxx,mmaxy;float x1,y1,x2,y2,x3,y3,x4,y4,x5,y5,x6,y6;float cx1,cy1,cx2,cy2,cx3,cy3,cx4,cy4,cx5,cy5,cx6,cy6,ox1,oy1,ox2,oy2, ox3,oy3,ox4,oy4,ox5,oy5,ox6,oy6;void EnterData() clrscr(); gotoxy(1,6); printf(Enter the radius of: he circle. n); gotoxy(1,8); printf(Entere in circle radius(=12.5):n);
6、scanf(%f,&Ri); printf(Enter out_circle radius(=25.0): n); scanf(%f,&Ro); printf(Enter convex_radius(=10.0): n); scanf(%f,&Rc);void Initialize() int graphdriver,grapgmode; graphdriver=DETECT; initgraph(&graphdriver,&grapgmode, ); mmaxx=getmaxx()/2; mmaxy=getmaxy()/2;void Base_Center_Line() float desh
7、_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(mmax
8、x-(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
9、)/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
10、); 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);void Known_Circle() circle(mmaxx,mmaxy,Ri); circle(mmaxx+u1,mmaxy-v1,Rc/2); circle(mmaxx+u2,mmaxy-v2,Rc/2); circle(mmaxx+u3,mmaxy-v3,
11、Rc/2);void Link_Arc_Center() float A,B,D1,D2,D3,B2_4AC1,B2_4AC2,B2_4AC3; float BD1,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
12、*(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)/(
13、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); void Tangent_Point() float Rj,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);
14、 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
15、+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); void Myarc(float ctx,float cty,float startx,float starty,float endx,float endy,float R) float sx,sy,ex,ey,sangle,eangle; sx=startx-ctx; sy=starty-cty;
16、 ex=endx-ctx; ey=endy-cty; if(sx!=0.0) if(sx0.00)sangle=atan(sy/sx); if(sx0.0)sangle=3.1415926/2; if(sy0.0)eangle=atan(ey/ex); if(ex0.0)eangle=3.1415926/2; if(ey0.0)eangle=3*3.1415926/2; sangle=sangle/0.017453; eangle=eangle/0.017453; arc(mmaxx+ctx,mmaxy-cty,sangle,eangle,R); void Out_Link_Arc() flo
17、at Rj; 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);void main() EnterData(); Initialize(); Base_Center_Line(); Known_Circle(); Link_Arc_Center(); Tangent_Point(); Out_Link_Arc(); getche(); closegraph(); 3、程序运行截图
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1