计算机图形学大作业武汉理工大学.docx

上传人:b****9 文档编号:23408675 上传时间:2023-05-16 格式:DOCX 页数:11 大小:85.26KB
下载 相关 举报
计算机图形学大作业武汉理工大学.docx_第1页
第1页 / 共11页
计算机图形学大作业武汉理工大学.docx_第2页
第2页 / 共11页
计算机图形学大作业武汉理工大学.docx_第3页
第3页 / 共11页
计算机图形学大作业武汉理工大学.docx_第4页
第4页 / 共11页
计算机图形学大作业武汉理工大学.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

计算机图形学大作业武汉理工大学.docx

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

计算机图形学大作业武汉理工大学.docx

计算机图形学大作业武汉理工大学

学号

成绩

 

 

《计算机图形学基础》大作业

 

课程名称

计算机图形学基础

开课学院

计算机科学与技术学院

指导教师姓名

学生姓名

学生专业班级

 

20-20学年第学期

 

一、命题计划

题目:

C语言图形编程

(以下题目文档要求:

①基本论述②算法③程序源代码④界面图)

二、内容与要求

(1)撰写内容

1.根据Bresenham直线绘制算法,实现直线的绘制。

2.用C语言编写:

画y=sin(x)的图形(要求画出[-2π,2π]的图形及笛卡尔坐标)

3.用C语言编写一个小圆沿着大圆运动的程序。

4.对图1中的零件图形,如何根据它所标注的尺寸,按照适当的顺序有步聚地画出该图形。

提示:

首先要分析此零件图形的几何关系,了解构成这个图形各线段的性质,才能顺利地绘出此图形。

线段(直线或圆弧)在零件图形中分为三类,即已知线段、中间线段和连接线段。

以圆弧为例,按几何原理,已知圆心的两个位置尺寸与半径尺寸便可画出圆。

因此图形中,已知这三个尺寸的圆弧称为已知圆弧,画图时应该最先画出。

凡已知其中二个尺寸的圆弧称为中间圆弧。

凡只已知一个尺寸(一般是圆弧半径)的圆弧称为连接圆弧。

中间圆弧和连接圆弧都缺省圆心的位置尺寸,它的几何位置是根据相切的条件来确定的。

因此画圆弧的顺序为:

先画已知圆弧,再画中间圆弧,最后画连接圆弧。

本零件图形是对称图形,三个小圆均匀分布在圆周中心线上,φ10,φ25,φ50和R10都是已知圆弧,R8为连接圆弧,φ50是已知圆弧的端点和R10已知圆弧的端点与连接圆弧的端点相切,从而构成整个图形。

(2)撰写要求

1.基本论述

2.算法

3.程序源代码

4.程序运行截图

5.小结

一、根据Bresenham直线绘制算法,实现直线的绘制。

1.基本论述

 

2.算法

 

3.程序源代码

#include

#include

#include

#include

voidmain()

{

intgd=DETECT,gm;//使用自检的方式

initgraph(&gd,&gm,"");//初始化图形系统

cleardevice();//清屏

intx,y;//起始点

intxe,ye;//终点

intx1=20,y1=30;

intx2=200,y2=100;

intdx=fabs(x2-x1),dy=fabs(y2-y1);

intd=2*dy-dx;

if(x1>x2)

{

x=x2;

y=y2;

xe=x1;

ye=y1;

}

else

{

x=x1;

y=y1;

xe=x2;

ye=y2;

}

moveto(x,y);

while(x

{

x=x+1;

if(d<0)

d=d+2*dy;

else

{

y=y+1;

d=d+2*(dy-dx);

}

lineto(x,y);

}

getch();

closegraph();//关闭图形系统

}

4.程序运行截图

5.小结

 

二、用C语言编写:

画y=sin(x)的图形(要求画出[-2π,2π]的图形及笛卡尔坐标)

1.基本论述

 

2.算法

 

3.程序源代码

#include

#include

#include

#include

voidmain()

{

initgraph(600,400);

cleardevice();

floatx,y,del,d;

inta,b;

a=getmaxx()/2;

b=getmaxy()/2;

line(a,0,a-10,10);

line(a,0,a+10,10);

line(2*a,b,2*a-10,b-10);

line(2*a,b,2*a-10,b+10);

line(0,b,2*a,b);

line(a,0,a,2*b);

outtextxy(a+5,b+5,"0");

outtextxy(2*a-15,b+5,"x");

outtextxy(a+5,15,"y");

outtextxy(a+20*3.14-10,b+5,"π/2");

outtextxy(a+40*3.14-5,b+5,"π");

outtextxy(a+60*3.14-15,b+5,"3π/2");

outtextxy(a+80*3.14-10,b+5,"2π");

outtextxy(a-20*3.14-10,b+5,"-π/2");

outtextxy(a-40*3.14-10,b+5,"-π");

outtextxy(a-60*3.14-15,b+5,"-3π/2");

outtextxy(a-80*3.14-10,b+5,"-2π");

outtextxy(a-10,b-90,"1");

outtextxy(a-10,b-180,"2");

outtextxy(a-15,b+90,"-1");

d=2*3.1416;

del=0.001;

for(x=-d;x<=d;x+=del)

{

y=sin(x);

putpixel(x*40+a,-y*80+b,WHITE);

}

getch();

closegraph();

}

4.程序运行截图

 

5.小结

 

三、用C语言编写一个小圆沿着大圆运动的程序。

1.基本论述

 

2.算法

 

3.程序源代码

#include

#include

#include

#include

voidmain()

{

initgraph(800,600);

cleardevice();

floatx=0;

inta=0;

for(inti=0;1<=2000;i++)

{

for(a=0;;a++)

{

circle(a%800,300,100);

circle(a%800+100*cos(x),300+100*sin(x),30);

x+=0.01;

Sleep(20);

cleardevice();

}

}

getch();

closegraph();

}

 

4.程序运行截图

5.小结

 

四、对图1中的零件图形,如何根据它所标注的尺寸,按照适当的顺序有步聚地画出该图形。

1.基本论述

 

2.算法

 

3.程序运行截图

4.小结

 

5.代码

#include

#include

#include

#include

voidmain()

{

initgraph(1000,800);

cleardevice();

floatPI=3.1415926;

floatt=PI/180;

inta=400;

intb=300;

floatr=100*sqrt(3);

circle(a,b,100);

circle(a,b-r,50);

circle(a+r*cos(7*PI/6),b-r*sin(7*PI/6),50);

circle(a-r*cos(7*PI/6),b-r*sin(7*PI/6),50);

arc(a-100,b-r-100,a+100,b-r+100,0,180*t);

arc(a-200,b-200,a+200,b+200,0,60*t);

arc(a-200,b-200,a+200,b+200,120*t,180*t);

arc(a-200,b-200,a+200,b+200,240*t,300*t);

arc(a-r*cos(7*PI/6)+100,b-r*sin(7*PI/6)-100,a-r*cos(7*PI/6)-100,b-r*sin(7*PI/6)+100,240*t,60*t);

arc(a+r*cos(7*PI/6)+100,b-r*sin(7*PI/6)-100,a+r*cos(7*PI/6)-100,b-r*sin(7*PI/6)+100,120*t,300*t);

 

getch();

closegraph();

}

 

注:

程序均在VC6.0的环境下编译,由于程序调用了,所以在vc中必须添加他们的头文件和函数库才行(这个网上是可以搜到滴),这样就和TurboC一样了。

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

当前位置:首页 > 自然科学 > 物理

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

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