计算机图形学大作业武汉理工大学.docx
- 文档编号:9030073
- 上传时间:2023-05-16
- 格式:DOCX
- 页数:11
- 大小:85.26KB
计算机图形学大作业武汉理工大学.docx
《计算机图形学大作业武汉理工大学.docx》由会员分享,可在线阅读,更多相关《计算机图形学大作业武汉理工大学.docx(11页珍藏版)》请在冰点文库上搜索。
计算机图形学大作业武汉理工大学
学号
成绩
《计算机图形学基础》大作业
课程名称
计算机图形学基础
开课学院
计算机科学与技术学院
指导教师姓名
学生姓名
学生专业班级
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的环境下编译,由于程序调用了
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 图形学 作业 武汉理工大学