上机实验2:绘制直线与圆

上机实验2:绘制直线与圆

ID:15457739

大小:335.00 KB

页数:33页

时间:2018-08-03

上机实验2:绘制直线与圆_第1页
上机实验2:绘制直线与圆_第2页
上机实验2:绘制直线与圆_第3页
上机实验2:绘制直线与圆_第4页
上机实验2:绘制直线与圆_第5页
资源描述:

《上机实验2:绘制直线与圆》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、ComputerGraphicsReportOfcourseexperiment信息与计算科学专业基础课计算机图形学课程实验报告实验题目设计算法绘制直线与圆班级计算091姓名王姣学号3090811002指导教师胡钢日期2012-4-20西安理工大学理学院应用数学系二零零八年春季学期-32-实验2设计算法绘制直线与圆@实验说明试验目的:掌握直线和圆的基本生成算法思想,并上机编程实现相应的算法。试验地点:教九楼401数学系机房实验要求(Direction):1.每个学生单独完成;2.开发语言为TurboC或C++,也可使用其它语言;3.请在自己的实验报告上写明姓

2、名、学号、班级;4.每次交的实验报告内容包括:题目、试验目的和意义、程序制作步骤、主程序、运行结果图以及参考文件;5.自己保留一份可执行程序,考试前统一检查和上交。@实验内容:实验题一1.1实验题目1).用DDA法在屏幕上画一条具有三个像素宽的直线段L1。要求:(1)直线段L1的两个端点坐标和画线颜色都要求可以随机输入;(2)要求输出直线段L1上的各点坐标;(3)画出直线的同时要求标明两端点坐标。2).将课堂所讲的斜率01、-1

3、图形函数进行绘图;2.熟悉并掌握C语言的图形模式控制函数,图形屏幕操作函数,以及基本图形函数;3.通过对TurboC进行图形程序设计的基本方法的学习,能绘制出简单的图形;4.熟悉并掌握DDA法在屏幕上画一条具有三个像素宽的直线段L1以及通用的中点画线算法。通过DDA法及用的中点画线算法,了解图形系统初始化、图形系统关闭和图形模式的控制,并熟练运用图形坐标的设置,包括定点、读取光标以及图形颜色的设置。-32-1.3程序制作步骤(包括算法思想、算法流程图等)1.自动搜索显示器类型和显示模式,初始化图形系统,通过printf、scanf语句控制线段的端点坐标和画线

4、颜色的自由输入;2.DDAline:设直线之起点为(x1,y1),终点为(x2,y2),则斜率k为:则有:1).可通过计算由x方向的增量引起y的改变生成直线。由(为直线上某步的初值)则2).也可通过计算由y方向的增量引起x的改变生成直线。由(为直线上某步的初值)则:3.Midpointline:1).假定X坐标为的各像素点中,与直线最近点已确定为(用实心小圆表示),那么下一个与直线最近的象素点只能是正右方的或右上方两者之一。2).再以M表示P1与P2的中点,即又设Q是理想直线与垂直线的交点。显然有:p1.当M在Q的下方,则P2离直线近,应取为下一个象素点;p

5、2.当M在Q的上方,则P1离直线近,应取为下一个象素点。p3.当M和Q重合,则P1和P2离直线一样近,两者均可取为下一个象素点1.4主程序#include"graphics.h"#include"stdlib.h"#include"stdio.h"#include"conio.h"#include"math.h"DDAline(intx1,inty1,intx2,inty2,intc)-32-{floatdelta_x,delta_y,x,y;intdx,dy,steps,k;dx=x2-x1;dy=y2-y1;if(abs(dx)>abs(dy))step

6、s=3*abs(dx);elsesteps=3*abs(dy);delta_x=(float)dx/(float)steps;delta_y=(float)dy/(float)steps;x=x1;y=y1;for(k=1;k<=steps;k++){putpixel(int(x+0.5),int(y+0.5),c);x+=delta_x;y+=delta_y;}return0;}voidmain(){chart[100];intx1,inty1,intx2,inty2,intc;-32-voiddda_line(intx1,inty1,intx2,inty

7、2,intc);intgraphdriver=DETECT,graphmode;initgraph(&graphdriver,&graphmode,"D:\TC");/*初始化图形系统*/printf("输入两端点坐标:");scanf("%d%d%d%d",&x1,&y1,&x2,&y2);printf("输入画线颜色:");scanf("%d",&c);DDAline(x1,y1,x2,y2,c);sprintf(t,"(%d,%d)",x1,y1);outtextxy(x1,y1,t);sprintf(t,"(%d,%d)",x2,y2);o

8、uttextxy(x2,y2,t);getch();

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。