计算机图形学-画椭圆和圆.docx

计算机图形学-画椭圆和圆.docx
计算机图形学-画椭圆和圆.docx

计算机图形学实验

圆、椭圆的中点算法

学院:计算机科学与技术学院专业:软件工程

班级:软工152

学号:1500170408

学生姓名:刘强坤

学院:计算机科学与技术专业:软件工程班级:软工152

VS 2015

圆:

Void BreSenham_Circle( int xc, int yc, int {

r)

int x, y, d;

X = 0;

学院:计算机科学与技术

专业:软件工程 班级:软工152

y = r; d = 3 - 2 * r; glVertex2i(x + xc, y + yc);

while (X V y)

{

if (d V 0)

{

d = d + 4 * X + 6;

}

else

{ d = d + 4 * (X - y) + 10;

验 内 容

y--;

}

x++;

glVertex2i(x + xc, y + yc);

glVertex2i(y + xc, X + yc);

glVertex2i(y + xc, -X + yc);

glVertex2i(x + xc, -y + yc);

glVertex2i(-x + xc, -y + yc);

glVertex2i(-y + xc, -X + yc);

glVertex2i(-x + xc, y + yc);

glVertex2i(-y + xc, X + yc);

}

}

椭圆:

Void Ellipsepot( int x0, int y0, int x, int y)

{

// 1

SetPiXel(( x0 + x), ( y0 + y));

// 2

SetPiXel(( x0 + x), ( y0 - y));

// 3

SetPiXel(( x0 - x), ( y0 - y));

//4

SetPiXel(( x0 - x), ( y0 + y));

}

//中点画椭圆算法

void MidPOint_Ellipse( int x0, int y0, int a, int b) {

double Sqa = a*a;

double Sqb = b*b;

double d = Sqb + sqa*(0.25 - b);

int X = 0;

int y = b;

EllipSepot( x0, y0, x, y);

// 1

while (Sqb*(x + 1) V Sqa*(y - 0.5))

{

if (d V 0)

{

d += Sqb*(2 * X + 3);

实感觉自己对于图形用函数表达出来还是有点不行,多亏了室友的讲解,才画了出来验

计算机图形学基础教程习题课1第二版孙家广胡事民编著

1.列举计算机图形学的主要研究内容。 计算机中图形的表示方法、图形的计算、图形的处理和图形的显示。 图形硬件、图形标准、图形交互技术、光栅图形生成算法、曲线曲面造型、实体造型、真实感图形计算与显示算法,以及科学计算可视化、计算机动画、自然景物仿真、虚拟现实等。 2.常用的图形输出设备是什么? 显示器(CRT、LCD、等离子)、打印机、绘图仪等。 2.常用的图形输入设备是什么? 键盘、鼠标、跟踪球、空间球、数据手套、光笔、触摸屏、扫描仪等。 3.列出3种图形软件工具。 AutoCAD、SolidWorks、UG、ProEngineer、CorelDraw、Photoshop、PaintShop、Visio、3DMAX、MAY A、Alias、Softimage等。 错误:CAD 4.写出|k|>1的直线Bresenham画线算法。 d d d d 设直线方程为:y=kx+b,即x=(y-b)/k,有x i+1=x i+(y i+1-y i)/k = x i+1/k,其中k=dy/dx。因为直线的起始点在象素中心,所以误差项d的初值d0=0。y下标每增加1,d的值相应递增1/k,即d=d+1/k。一旦d≥1,就把它减去1,这样保证d在0、1之间。 ●当d≥0.5时,最接近于当前象素的右上方象素(x i+1,y i+1),x方向加1,d减 去1; ●而当d<0.5时,更接近于上方象素(x i,y i+1)。 为方便计算,令e=d-0.5,e的初值为-0.5,增量为1/k。

●当e≥0时,取当前象素(x i,y i)的右上方象素(x i+1,y i+1),e减小1; ●而当e<0时,更接近于上方象素(x i,y i+1)。 void Bresenhamline (int x0,int y0,int x1, int y1,int color) { int x, y, dx, dy; float k, e; dx = x1-x0, dy = y1-y0, k=dy/dx; e=-0.5, x=x0, y=y0; for (i=0; i≤dy; i++) { drawpixel (x, y, color); y=y+1,e=e+1/k; if (e≥0) { x++, e=e-1;} } } 4.写出|k|>1的直线中点画线算法。 构造判别式:d=F(M)=F(x p+0.5,y p+1)=a(x p+0.5)+b(y p+1)+c ●当d<0,M在Q点左侧,取右上方P2为下一个象素; ●当d>0,M在Q点右侧,取上方P1为下一个象素; ●当d=0,选P1或P2均可,约定取P1为下一个象素; 增量计算: ●若d≥0,取正上方象素P1 (x p, y p+1),要判下一个象素位置,应计算

图形学实验三-画圆

实验三圆的生成算法 一、实验目的 编写圆的扫描转换算法程序,验证算法的正确性。 二、实验任务(2学时) 编写中点画圆法的扫描转换程序,考虑原点在(x0,y0)处程序的改动;编写Bresenham 画圆法的扫描转换程序,思考其与中点画圆算法的区别于联系。 三、实验内容 1、圆的Bresenham算法 (1)算法 设圆的半径为r。先考虑圆心在(0, 0),并从x=0、y=r,开始的顺时针方向的1/8圆周的生成过程。在这种情况下,x每步增加1,从x=0开始,到x=y结束。即有 x i+1 = x i + 1 相应的y i+1则在两种可能中选择: y i+1 = y i或者y i+1 = y i-1 选择的原则是考察精确值y是靠近y i还是 靠近y i-1(如右图), 计算式为: y2 = r2-(x i+1)2 d1 = y i2-y2 = yi2-r2+(x i+1)2 d2 = y2-(y i-1)2 = r2-(x i+1)2-(y i-1)2 令p i=d1-d2,并代入d1、d2,则有 p i = 2(x i+1)2 + y i2 + (y i-1)2-2r2 p i称为误差。如果p i<0则y i+1=y i,否则y i+1=y i-1。 p i的递归式为 p i+1 = p i + 4x i +6+2(y i+12- y i2) -2(y i+1-y i) p i的初值由上式代入x i=0,y i=r而得 p1 = 3-2r 根据上面的推导,圆周生成算法思想如下: 1) 求误差初值,p1=3-2r,i=1,画点(0, r); 2)求下一个光栅位置,其中x i+1=x i+1,如果p i<0则y i+1=y i,否则y i+1=y i-1; 3) 画点(x i+1, y i+1); 4)计算下一个误差,如果p i<0则p i+1=p i+4x i+6,否则p i+1=p i+4(x i-y i)+10;

图形与可视化 实验大纲

《图形与可视化》课程实验教学大纲 编号: 课程总学时:64 实验学时:24 课程总学分:3.5 实验学分:(非单独设课的实验不用填此项) 先修课程:线性代数、C++与OO程序设计 适用专业:计算机科学与技术 一、本课程实验的主要目的与任务 《图形与可视化》是计算机科学与技术专业本科教学中的一门重要的专业课。通过本课程的教学,帮助学生掌握图形与可视化的基础知识,了解该学科的前沿科技,并能运用图形软件包OpenGL,进行简单的图像处理软件代码设计。 《图形与可视化》是一门理论性和应用性很强的课程。开设实验课程有助于加深学生对图形算法的理解,培养其分析问题,解决问题的能力。 通过本课程实验要求学生基本达到如下要求: 1. 掌握OpenGL的基本语法与程序结构。 2. 掌握如何通过点、线、面、体的构造方法。 3. 掌握如何对三维物体增加光照和纹理来增强其真实感。 4. 掌握如何构建一个真实的三维场景的基本过程和实现方法。 二、本课程实验应开设项目 三、各实验项目主要实验内容和基本要求 实验1 直线绘制算法( 4学时) 1.实验目的 (1) 了解OpenGL的基本的编程思想和程序结构。 (2) 了解OpenGL中绘制点、线、面的相关函数。 (3) 掌握如果通过定义空间点和构成方式来形成不同的空间物体。

2.实验内容 (1) 熟悉实验环境。 (2) 利用相关直线绘制算法绘制一条直线,建议使用DDA算法或Bresenham算法。 (3) 绘制一个颜色插值的三角形面。 (4) 综合利用所学知识,绘制分形物体。给出原理,步骤,设计绘制方案。可自己选择分形物体的类型,如分形树、Koch雪花、Sierpinski三角形(二维或三维)、Julia集、Mandelbrot集等。 3.实验要求 (1) 预习实验相关知识,了解实验目的与内容。 (2) 根据实验目的和内容,制定相关的实验方案并进行实施。 (3) 实验结束后,对相关内容进行总结和反思。 4.实验器材 (1) PC机及配套软件、一人一套。 实验2 曲线与曲面(4学时) 1.实验目的 (1) 掌握Bezier曲线和Hermite曲线的绘制方法。理解如何通过折线来近似一条曲线。 (2) 了解Bezier曲面和Hermite曲面的绘制方法。 2.实验内容 (1) 绘制一条四阶Bezier曲线或者Hermite曲线。 (2) 要求控制点、控制多边形、Bezier曲线或Hermite曲线用不同颜色表示。 (3) 掌握如何控制点、线的属性。 (4) 要求有能力的同学能够实现Bezier曲面或者Hermite曲面。 (5) 了解Utah茶壶的Bezier曲面构造方法。 3.实验要求 (1) 预习实验相关知识,了解实验目的与内容。 (2) 根据实验目的和内容,制定相关的实验方案并进行实施。 (3) 实验结束后,对相关内容进行总结和反思。 4.实验器材 (1) PC机及配套软件、一人一套。 实验3 体的表示与变换( 4学时) 1.实验目的 (1) 掌握三维形体的数据表示与存储。 (2) 掌握二维和三维几何变换的矩阵形式。 (3) 掌握视图变换的矩阵表达。 (4) 理解世界坐标系与观察坐标系的相对关系。 (5) 理解几何变换的实质是矩阵操作。 (6) 掌握平行投影、透视投影。 (7) 隐藏面消除、深度测试的基本原理。 (8) 使用多边形网格建模并进行变换。 2.实验内容

计算机图形学正负法画圆

计算机图形学试验报告(六) 试验名称:利用正负法画圆 专业:地理信息系统班级:2011级1班学号:********姓名:日期:2013年 一、试验内容 1、利用中点法思想编写函数; 2、利用算法生成圆; 3、完成属性设置和增加交互功能; 二、试验目的 通过上机操作,编写中点法生成圆,理解重点算法的生成原理,并实现简单的交互功能。 三、试验原理 中点法生成圆,是利用函数曲线的交点与两个像素的中点的位置关系,来确定下一像素点的选取,决策变量d的初始值为d=d=5.0/4-r; 当点(x,y)在圆内时,d<0;当点在圆外时,d>0;当点在圆上时,d=0。根据判别变量F的正负,可设定x,y的移动方向,然后利用映射变换生成整个圆。 四、程序设计流程

五、试验程序 (1) #include “graphics.h” #include “conio.h” void MidpointCircle(x0,y0,r,color) { int x,y; float d; x=0; y=r; d=5.0/4-r; //设置初始变量d while(x<=y) { //结束判断 putdot(x0,y0,x,y,color); if(d<0) d+=x*2.0+3; //更新判别变量 else { d+=2.0*(x-y)+5; y--; //点在圆外,向下走一个单位} x++; } } putdot(x0,y0,x,y,color) { putpixel(x0+x,y0+y,color); putpixel(x0+x,y0-y,color); putpixel(x0-x,y0+y,color); putpixel(x0-x,y0-y,color); putpixel(x0+y,y0+x,color);

图形学画圆实验报告

图形学画圆实验报告

4.2.3程序实现与上机实习(二) 一、实验目的 编写圆和椭圆的扫描转换算法程序,验证算法的正确性。 二、实验任务 1.编写中点画圆法的扫描转换程序,考虑原点在(x0,y0)处程序的改动; 2.添加鼠标程序,实现交互式画圆;3.编写中点画椭圆法的扫描转换程序;4.添加鼠标程序,实现交互式画椭圆;三、实验内容 1.编写中点画圆法的扫描转换程序,考虑原点在(x0,y0)处程序的改动; 分析:考虑圆心不再原点,设圆心坐标为(x0,y0)。通过平移坐标原点到圆心,则第二个8分圆上一点p(x,y),其原始坐标为 x’=x+x0 y’=y+y0 即p’1(x0 +x, y+y0) 其它7个对称点分别是:p’2(x0+y,y+x0), p’3

(x0+y,y0-x),p ’4 (x0+x,y0-y),p ’5 (x0-x,y0-y),p ’6 (x0-y,y0-x),p ’7 (x0-y,y0+x),p ’8 (x0-x,y0+y) 算法程序如下: MidpointCircle(int x0,int y0,int r, int color) { int x,y; float d; x=0;y=r;d=1.25-r; CirPot(x0,y0,x,y,color); while (x<=y) { if(d<0) { d+=2*x+3; x++; } else { d+=2*(x-y)+5; x++; y--; } O(0Y X R X Y p ’1(x0 p ’2 p ’3 p ’4 p ’5 p ’6 p ’7 p ’8

CirPot(x0,y0,x,y,color); } /* while*/ } /* MidpointCiecle */ int CirPot(int x0,int y0,int x,int y,int color) { Setpixel((x0+x),(y0+y)); Setpixel((x0+y),(y0+x)); Setpixel((x0+y),(y0-x)); Setpixel((x0+x),(y0-y)); Setpixel((x0-x),(y0-y)); Setpixel((x0-y),(y0-x)); Setpixel((x0-y),(y0+x)); Setpixel((x0-x),(y0+y)); } 程序实现步骤: (1)建立MidPointCircle工程文件; (2)右击CMidPointCircleView类,建立成员函数 void MidpointCircle(CDC *pDC,int x0, int y0, int r, COLORREF color) int CirPot(CDC *pDC,int x0, int y0, int x,

信息可视化与其发展(计算机图形学)

《计算机图形学》(课程编号:0882438)2009 - 2010 学年第 3学期 大作业 学院: 学号: 姓名: 成绩: 2010 年 6 月25 日

信息可视化技术的发展与应用可视化是指在人通过视觉观察并在头脑中形成客观事物的影像的过程,这是一个心智处理过程。可视化提高了人对事物的观察能力及整体概念的形成等。可视化结果便于人的记忆和理解,同时其对于信息的处理和表达方式有其他方法无法取代的优势。可视化技术以人们惯于接受图形、图像并辅以信息处理技术将客观事物及其内在的联系表现出来。可视化不仅是客观现实的形象再现,也是客观规律、知识和信息的有机融合。它的应用范围很广,主要有: (1)科学计算可视化 科学计算可视化是指空间数据场的可视化,它是用计算机图形学和图像处理技术,将科学计算过程中产生的数据及计算结果转换为图形或图像在屏幕上显示出来并进行交互处理的理论、方法和技术。其应用有: a)科学计算可视化在电网调度系统中的应用 电网调度一方面需要对其进行持续有力的分析与处理。另一方面,传统的仿真研究形式也需要加以改进,以方便对数学模型的调整并加深研究者对仿结果的理解,从而揭示电网运行的内在规律。当电力系统中各种发电、变电、输配电及用电设备之间的相互联结关系情况已经确定时,电力系统运行状态的描述通常是通过反映例如电压、功率、电流等变量的数值来实现的。由于科学计算可视化技术在大量信息的抽象综合、系统总体状况表示方面的优点,因此在电网调度力系统实时监视方面能够开展很好的应用,这些应用包括利用等高线技术监视电压等、动画潮流技术监视线路流动功率等、饼图技术监视线路(变压器)负载率等、三维交互技术用来监视多个信息(例如电压和功率)

圆的认识与画圆练习

圆的认识与画圆练习 教学内容:青岛版数学六年级上册56~59页,信息窗1第2课时。 教学目标: 1.进一步体会圆的特征;熟练掌握圆的各部分名称,能灵活、正确地按要求画圆,用圆的知识来解释生活中的简单现象;认识扇形,知道扇形的大小与圆心角的关系。 2.在画圆练习中,发展学生的空间观念。 3.经历对圆的认识知识的整理梳理,培养学生归纳、概括能力。 4.培养学生独立思考及综合运用知识解决问题的能力。 教学重点和难点: 教学重点:进一步体会圆的特征,熟练的按要求画圆。 教学难点:归纳圆的特征,发展空间观念,应用所学知识解决生活中的实际问题。 教具、学具: 教师准备:多媒体课件、圆规、三角板。 学生准备:圆规、三角板。 教学过程: 一、问题回顾,再现新知。 1.谈话导入:同学们,还记得上节课我们学习交通中的圆吗?说一说你对圆都有哪些了解?(引导学生回顾有关圆的知识。) 预设: (1)圆的画法; (2)圆的各部分名称; (3)圆的特征; (4)圆是轴对称图形。…… 2.自主整理圆的知识。 请同学们用自己喜欢的方法整理有关圆的知识。 教师出示复习指导:

(1)我们是用什么工具画圆的?说一说是怎样画的? (2)什么是圆心、半径、直径?用哪个字母表示? (3)同一个圆里半径和直径有什么关系? (4)圆是轴对称图形吗?有多少条对称轴? (5)什么是扇形,扇形的大小与什么有关? 3.汇报交流,构建知识网络。 学生汇报,其他生认真倾听及时补充,教师根据学生的回答将知识点适当板书,形成知识网。 (1)用图钉、细线和铅笔画圆。 圆的画法:(2)用圆形的盖子。①圆规两脚分开定好两脚尖距离; (3)用圆规画圆②把有针尖的一脚固定在一点上; ③把有铅笔的一脚旋转一周。 圆圆心:圆规针尖固定一点叫圆心,用O表示。 的圆的各半径:连接圆心和圆上任意一点的线段叫半径用r表示。 部分名称直径:通过圆心并且两端都在圆上的线段叫直径d表示。 认 识(1)同一个圆里有无数条半径和直径; 圆的特征:所有的直径都相等,所有的半径都相等; 直径是半径的2倍d=2r,半径是直径的r=d/2 (2)圆是轴对称图形,直径所在的直线都是圆的对称轴。 4.小结评价:看来大家掌握的不错,今天我们就来利用圆的知识解决一些实际问题。(板书课题:圆的认识与画圆练习) 二、分层练习,巩固提高。 (一)基本练习,巩固新知。 1.判断:(补充练习) (1)圆有无数条对称轴。() (2)圆的直径就是圆的对称轴。()

计算机图形学画圆实验报告

洛阳理工学院实验报告用纸

(2)画理想圆流程图如图-1: 图-1:画理想圆流程图 (3)中点画圆法 图-2 中点画圆法当前象素与下一象素的候选者

数,将乘法运算改成加法运算,即仅用整数实现中点画圆法。 (4)Bresenham画圆法 Bresenham画线法与中点画线法相似,,它通过每列象素中确定与理想直线最近的象素来进行直线的扫描的转换的。通过各行,各列的象素中心构造一组虚拟网格线的交点,然后确定该列象素中与此交点最近的的象素。该算法的巧妙之处在于可以采用增量计算,使得对于每一列,只要检查一个误差项的符号,就可以确定该列的所求对象。 假设x列的象素已确定,其行下标为y。那么下一个象素的列坐标必为x+1。而行坐标要么不变,要么递增1。是否递增1取决于如图所示的误差项d的值。因为直线的起始点在象素中心,所以误差项d的初始值为0。X下标每增加1,d的值相应递增直线的斜率值,即d=d+k(k=y/x为直线斜率)。一旦d>=1时,就把它减去,这样保证d始终在0、1之间。当d>0.5时,直线与x+1垂直网络线交点最接近于当前象素(x,y)的右上方象素(x+1,y+1);而当d<0.5时,更接近于象素(x+1,y),当d=0。5时,与上述二象素一样接近,约定取(x+1,y+1)。令e=d-0。5。则当e>=0时,下一象素的y下标增加1,而当e〈0时,下一象素的y下标不增。E的初始值为-0.5. (二)实验设计 画填充点流程图,如图-3: 图-3:圆的像素填充过程NS图 画理想圆,记录圆心坐标,计算半径大小,并记录 是否开始填充 否 是 初始化计数器、标志变量,设置最大计数值 调用Bresenha m画圆算法 否 是 填充标记是否为真 (While)计数变量小于最大计数值 循环变量temp + 1 填充计算出来的temp个坐 标点 计算需要填充坐标数组的 前temp个坐标

计算机图形学试题及答案(汇总)

一、 判断题(10x1=10分) 1、 构成图形的要素可分为两类:刻画形状的点、线、面、体的非几何要素(集合要素)与反映物体表面属性或材质 的明暗、色彩等的(非几何要素)几何要素。( 错误 ) 2、 参数法描述的图形叫图形;点阵法描述的图形叫图像。( 正确 ) 3、 EGA (增强图形适配器)/VGA (视频图形阵列)为增强图形显示效果的一种图形处理软件的名称。( 错误 ) 4、 对山、水等不规则对象进行造型时,大多采用过程式模拟方法。( 正确 ) 5、 若两个图形是拓扑等价的,则一个图形可通过做弹性运动与另一个图形相重合。( 正确 ) 6、 0阶参数连续性和0阶几何连续性的定义是相同的。( 正确 ) 7、 Bezier 曲线可做局部调整。( 错误 ) 8、 字符的图形表示分为点阵和矢量两种形式。( 正确 ) 9、 LCD 表示(液晶显示器)发光二极管显示器。( 错误 ) 10、 使用齐次坐标可以将n 维空间的一个点向量唯一的映射到n+1维空间中。( 错误 ) 二、 填空题(15x2=30分) 1、目前常用的PC 图形显示子系统主要由3个部件组成:(1)帧缓冲存储器、(2)显示控制器、(3)ROM BIOS 。 2、 图形的输入设备有(4)键盘、鼠标、光笔(至少写三种);图形的显示设备有(5)CRT 显示器、LCD 、投影仪(至少写三种)。 3、常用坐标系一般可以分为:建模坐标系、用户坐标系、(6观察坐标系、(7)规格化设备坐标系、(8)设备坐标系。 4、在多边形的扫描转换过程中,主要是通过确定穿越多边形区域的扫描线的覆盖区间来填充,而区域填充则是从(9)给定的位置开始涂描直到(10)指定的边界条件为止。 5、一个交互式计算机图形系统应具有(11)计算 、(12)存储、(13)对话、(14)输入和输出等五个方面的功能。 三、 简答题(5x6=30分) 1、 请列举常用的直线段裁减算法(四种)。 答:答:直接求交算法、编码算法、中点再分算法、Cyrus-Beck 算法。 2、 考虑三个不同的光栅系统,分辨率依次为480640?,10241280?,20482560?。欲存储每个像素12位, 这些系统各需要多大的帧缓冲器(字节数)? 答:480640?需要的帧缓存为KB 4508/12480640=?? 10241280?需要的帧缓存为KB 19208/1210241280=?? 20482560 ?需要的帧缓存为KB 76808/1220482560=?? 3、 什么叫做走样?什么叫做反走样?反走样技术包括那些? 答:走样指的是用离散量表示连续量引起的失真。 为了提高图形的显示质量。需要减少或消除因走样带来的阶梯形或闪烁效果,用于减少或消除这种效果的方法称为反走样。 其方法是①前滤波,以较高的分辨率显示对象;②后滤波,即加权区域取样,在高于显示分辨率的较高分辨率下用点取样方法计算,然后对几个像素的属性进行平均得到较低分辨率下的像素属性。 4、 试说明一致缩放(s x =s y )和旋转形成可交换的操作对。 答:????? ??? ??-=???????? ??-????????? ??=1000cos sin 0sin cos 1000cos sin 0sin cos 10 00 001θθθθ θθθθ y y x x y x s s s s s s T ???? ???? ? ?-=??????????????????? ??-=10 00cos sin 0sin cos 10 000010 00cos sin 0sin cos 2θθθθθθ θθ y x y x y x s s s s s s T

计算机图形学实验报告 (2)

中南大学信息科学与工程学院 实验报告实验名称 实验地点科技楼四楼 实验日期2014年6月 指导教师 学生班级 学生姓名 学生学号 提交日期2014年6月

实验一Window图形编程基础 一、实验类型:验证型实验 二、实验目的 1、熟练使用实验主要开发平台VC6.0; 2、掌握如何在编译平台下编辑、编译、连接和运行一个简单的Windows图形应用程序; 3、掌握Window图形编程的基本方法; 4、学会使用基本绘图函数和Window GDI对象; 三、实验内容 创建基于MFC的Single Document应用程序(Win32应用程序也可,同学们可根据自己的喜好决定),程序可以实现以下要求: 1、用户可以通过菜单选择绘图颜色; 2、用户点击菜单选择绘图形状时,能在视图中绘制指定形状的图形; 四、实验要求与指导 1、建立名为“颜色”的菜单,该菜单下有四个菜单项:红、绿、蓝、黄。用户通过点击不同的菜单项,可以选择不同的颜色进行绘图。 2、建立名为“绘图”的菜单,该菜单下有三个菜单项:直线、曲线、矩形 其中“曲线”项有级联菜单,包括:圆、椭圆。 3、用户通过点击“绘图”中不同的菜单项,弹出对话框,让用户输入绘图位置,在指定位置进行绘图。

五、实验结果: 六、实验主要代码 1、画直线:CClientDC *m_pDC;再在OnDraw函数里给变量初始化m_pDC=new CClientDC(this); 在OnDraw函数中添加: m_pDC=new CClientDC(this); m_pDC->MoveTo(10,10); m_pDC->LineTo(100,100); m_pDC->SetPixel(100,200,RGB(0,0,0)); m_pDC->TextOut(100,100); 2、画圆: void CMyCG::LineDDA2(int xa, int ya, int xb, int yb, CDC *pDC) { int dx = xb - xa; int dy = yb - ya; int Steps, k; float xIncrement,yIncrement; float x = xa,y= ya; if(abs(dx)>abs(dy))

计算机图形学-画椭圆和圆

计算机图形学实验 圆、椭圆的中点算法 学院:计算机科学与技术学院专业:软件工程 班级:软工152 学号:08 学生姓名:刘强坤

姓名刘强坤学号408 实验组实验时间10-24 指导教师成绩实验项目名称圆,椭圆中点算法 实 验要求优化后的算法:二次差分法可任意指定圆心坐标 实 验 目 的 实 验 环 境 VS 2015 实验内容圆: void Bresenham_Circle( int xc, int yc, int r) ( int x, y, d; x = 0; y = r; d = 3 - 2 * r; glVertex2i(x + xc, y + yc); while (x < y) ( if (d < 0) ( d = d + 4 * x + 6; ) else ( d = d + 4 * (x - y) + 10; 学院:计算机科学与技术专业:软件工程班级:软工152

y--; ) x++; glVertex2i(x + xc, y + yc); glVertex2i(y + xc, x + yc); glVertex2i(y + xc, -x + yc); glVertex2i(x + xc, -y + yc); glVertex2i(-x + xc, -y + yc); glVertex2i(-y + xc, -x + yc); glVertex2i(-x + xc, y + yc); glVertex2i(-y + xc, x + yc); ) ) 椭圆: void Ellipsepot( int x0, int y0, int x, int y) ( //1 setPixel(( x0 + x), ( y0 + y)); // 2 setPixel(( x0 + x), ( y0 - y)); // 3 setPixel(( x0 - x), ( y0 - y)); // 4 setPixel(( x0 - x), ( y0 + y)); ) //中点画椭圆算法 void MidPoint_Ellipse( int x0, int y0, int a, int b) ( double sqa = a*a; double sqb = b*b; double d = sqb + sqa*(0.25 - b); int x = 0; int y = b; Ellipsepot( x0, y0, x, y); // 1 while (sqb*(x + 1) < sqa*(y - 0.5)) ( if (d < 0) ( d += sqb*(2 * x + 3);

圆的画法

圆的画法 教学目标: 1. 培养学生自主画圆的能力,让学生经历用自己的方法画圆,按要求用圆规画圆的过程。 2. 让学生掌握用圆规按要求画圆的方法,认识圆的大小和半径的关系。 3. 让学生积极参加动手画圆活动,获得成功的学习体验,发展初步的空间观念。 教学重点: 掌握用圆规按要求画圆的方法。 教学难点: 掌握用圆规按要求画圆的方法。 课前准备: 多媒体课件、圆规、直尺一把、剪刀一把、白纸一张。 教学过程: 一、谈话导入 (一)师:在上一节课,我们已经认识圆, 同学们会不会画圆?这节课我们就一起去学习 怎么样画圆。(板书课题:画圆) 二、自主画圆 (一)讨论:可以怎样画?再利用自己准备好的物品画圆。 (二)交流:交流自己画出的圆,并说一说是怎样画的。

三、用圆规画圆 (一)师说:前面我们借助实物来描摹画圆,画出圆的大小是固定的,不能随意变化。为了既准确又方便地画出一个圆,我们可以用画圆的专用工具——圆规来画。 1.下面同学们先用圆规试画一个圆,然后与同桌的同学说说你是怎样画的? 2.找两名学生说说如何画圆。 3.归纳画圆的步骤。(画圆的步骤归纳起来,有三步。) (1)把圆规的两脚分开,定好两脚间的距离作为半径。(板书:定半径) (2)把有针尖的一只脚固定在一点上作为圆心。(板书:定圆心)(3)让装有铅笔尖的一只脚旋转一周。(板书:旋转一周) 4.请同学按要求画圆。(下面请同学们按照这三个步骤画出要求的圆。) (1)用圆规画一个半径是2cm 的圆,并用字母O、r、d 表示出它的圆心、半径和直径。从上节课学习的知识过渡到这节课学习的新知识,揭示课题。让学生自主画圆,培养学生动手能力和自主探究能力。巩固学生掌握用圆规按要求画圆的方法。 (2)用圆规画一个半径是4cm 的圆。 5.在画圆时要注意什么?(有针尖的一只脚不能动,两脚间的距离不能变。) 6.刚才我们画出两个位置和大小都不同的圆,想一想:圆的位置

画圆的方法

一、画圆的方法: 1、用手指画圆。以大拇指为圆心,以食指与大拇指之间的距离为半径,旋转一周所形成的图形就是圆形。 2、用线绳、图钉和笔画圆。用图钉固定线绳的一端做圆心,将笔系在线绳的另一端,拉直绳子作半径,旋转线绳一周所形成的图形就是圆。 3、用圆规画圆。将圆规的一个针脚固定在本上做圆心,用圆规两个针脚间的距离作半径,旋转圆规一周所形成的图形就是圆。 4、用物体的圆形面画圆。按住物体的圆形面,用笔在物体的圆形面的圆周上画一圈所形成的图形就是一个圆。 二、为什么车轮都是圆形的? 答:因为在同一个圆中所有的半径都相等。车轴在圆心的位置,圆形车轮在滚动时,圆心在一条直线上运动,这样车才更平稳。而其他的图形不具备这样的特点,所以车轮都是圆形的。 三、井盖为什么是圆形的? 答:因为在圆形中,直径是圆中最长的线段,在同一个圆内有无数条直径,所有的直径都相等,无论怎样翻转井盖,井盖都不会掉下去,这样更安全。 四、围观时大家为什么自觉的就站成圆形? 答:因为圆中同一个圆中所有的半径都相等。围成圆形时,每一个围观的人与被围观的事物之间的距离都是相等的,所有站成圆形能让每个人看清楚围观的事物。 五、寻找圆直径的方法。 1、圆形的纸片等一切可以对折的圆形,用对折的方法找到圆的直径。 2、可以用两个三角板和一个直尺来找圆的的直径。(如图1-1所示) 1-1 1-2 1-3 AB之间的线段的长度就是圆的直径。 3、画出圆的外接正方形,正方形的边长就是圆的直径。(如图1-2所示) 4、量出圆的周长,用圆的周长除以3.14也可以得到圆的直径的长度。 5、画出圆中的一条弦,找到弦的中点,过中点画这条弦的垂线,圆周上这两点间的线段就是圆的直径。(如图1-3所示) 六、圆周长的测量方法。 1、滚动法。画出圆的一条直径,在直尺上滚动圆一周,从直径的一个端点和直尺的零刻度线重合开始向前滚动直到再次滚动到起始的端点为止。此时的读数就是这个圆的周长。 2、绳测法。用绳绕圆片一周,剪去多余的绳子,量出绳子的长度就是这个圆片的周长。

Vtk(Visualization Toolkit)-开放资源的免费软件系统,主要用于三维计算机图形学、图像处理和可视化

Vtk(Visualization Toolkit)-开放资源的免费软件系统,主要用于三维计算机图形学、图像处理和可视化 Vtk(Visualization Toolkit)-开放资源的免费软件系统,主要用于三维计算机图形学、图像处理和可视化,在面向对象原理的基础上设计和实现的内核用C++构建,包含有大约 250 000行代码,650多个类,还包含有几个转换界面,因此也可以自由的通过Java,Tcl/Tk 和Python各种语言使用Vtk。 学术术语来源--- 三维可视化系统对髋关节骨性结构的评价 文章亮点: 1 实验设计所涉及的软件使用了成熟的MC算法,采用VC6.0++及VTK软件编译完成。 2 软件体积小,具有便捷的可移动性,可实现使用DICOM数据重建骨骼三维模型的功能,产生的模型较为真实,可以使用旋转、缩放、移动等操作进行多方位观察,对临床复杂型骨折有一定参考价值。 3 后期可通过改进算法、增加功能来改善软件的使用体验。 关键词: 植入物|数字化骨科|VC++6.0|VTK|医学三维可视化系统|MC算法 主题词: 软件;成像,三维;算法;人机系统 摘要 背景:目前通过二维断层图像信息来判断病变组织的具体性状其难度仍然较大,而运用医学三维重建技术,将能够显著改善医务工作者对相关疾病诊断的工作效率和准确率。目的:开发一套医学三维可视系统,能够通过读取髋关节DICOM数据重建相应部位三维模型,并通过重建模型直观观察病变髋关节的形态。 方法:使用个人电脑在WindowsXP操作系统,开发环境为VC++6.0,安装VTK 5.6并进行必要设置,使用MFC开发一套医学三维可视化系统,具体步骤如下:①创建一个绘制对象。②创建一个绘制窗,将绘制对象加入绘制窗口。③读取CT图像序列,设置读取图像序列的路径。④使用MC算法抽取等值面(生成三角面片),根据灰度的不同,分别从切片数据中提取出皮肤和骨骼。设置输入图像序列数据;设置抽取的组织轮廓线灰度值。

计算机图形学-设计算法绘制直线与圆

信息与计算科学专业基础课 Computer Report Of course 计算机图形学课程实验 报告 实验题目设计算法绘制直线与圆 班级 姓名 学号 指导教师 日期

实验说明 试验目的: 掌握直线和圆的基本生成算法思想,并上机编程实现相应的算法。 试验地点: 教九楼401 数学系机房 实验要求(Direction): 1. 每个学生单独完成;2.开发语言为TurboC 或C++,也可使用其它语言;3.请在自己的实验报告上写明姓名、学号、班级;4.每次交的实验报告内容包括:题目、试验目的和意义、程序制作步骤、主程序、运行结果图以及参考文件;5. 自己保留一份可执行程序,考试前统一检查和上交。 实验内容 实验题一 实验题目 1).用DDA 法在屏幕上画一条具有三个像素宽的直线段L1。要求:(1)直线段L1的两个端点坐标和画线颜色都要求可以随机输入;(2)要求输出直线段L1上的各点坐标;(3)画出直线的同时要求标明两端点坐标。 2).将课堂所讲的斜率01、-1

数学教学用画圆器制作方法

本技术新型涉及教学领域,尤其涉及一种数学教学用画圆器。本技术新型要解决的技术问题是提供一种不会对黑板造成损坏、画圆时不会偏移位置的数学教学用画圆器。为了解决上述技术问题,本技术新型提供了这样一种数学教学用画圆器,包括有第一支杆等;第一支杆左侧后部连接有第一轴承座,第一轴承座上连接有第一转杆,第一转杆与第一支杆连接,第一轴承座左侧连接有橡胶柱,橡胶柱左侧连接有吸盘,第一支杆左侧前部连接有夹紧装置。本技术新型通过让吸盘吸在黑板上作图,这样能够达到教师在黑板上画图时,不损坏黑板的目的,并且设置有夹紧装置和移动装置的缘由。 技术要求 1.一种数学教学用画圆器,其特征在于,包括有第一支杆(1)、第一轴承座(2)、第一转杆(3)、橡胶柱(4)、吸盘(5)和夹紧装置(6),第一支杆(1)左侧后部连接有第一轴承座(2),第一轴承座(2)上连接有第一转杆(3),第一转杆(3)与第一支杆(1)连接,第一轴承座(2)左侧连接有橡胶柱(4),橡胶柱(4)左侧连接有吸盘(5),第一支杆(1)左侧前部连接有夹紧装置(6)。 2.根据权利要求1所述的一种数学教学用画圆器,其特征在于,夹紧装置(6)包括有第二支杆(601)、螺杆(602)、固 定夹板(603)、移动夹板(604)、螺帽(606)、第二弹簧(607)和第三支杆(608),第一支杆(1)左侧连接有固定夹板(603),固定夹板(603)前后两端均连接第三支杆(608),第三支杆(608)右侧连接有螺杆(602),第三支杆(608)右侧连接有第二弹簧(607),第二弹簧(607)的另一端连接有第二支杆(601),第二支杆(601)之间连接有移动夹板(604),第二支杆(601)上开有螺纹孔(605),螺杆(602)穿过螺纹孔(605),螺杆(602)上连接有螺帽 (606),螺杆(602)穿过第二弹簧(607)。

计算机图形学

计算机图形学模拟试题一 1、举例说明计算机图形学的主要应用领域(至少说明5个应用领域) 计算机及辅助设计与制造、可视化、图形实时绘制与自然景物仿真、计算机动画、用户接口、计算机艺术 2、分别解释直线生成算法DDA法、中点画线法和Bresenham法的基本原理。 DDA法:设过端点P0(x0 ,y0)、P1(x1 ,y1)的直线段为L(P0 ,P1),则直线段L的斜率 L 的起点P0的横坐标x0向L的终点P1的横坐标x1步进,取步长=1(个象素),用L的直线方程y=kx+b计算相应的y坐标,并取象素点(x,round(y))作为当前点的坐标。因 为: y i+1 = kx i+1+b= k1x i+b+kDx = y i+kDx所以,当Dx =1; y i+1 = y i+k。也就是说,当x每递增1,y递增k(即直线斜率)。 假定直线斜率k在0~1之间,当前象素点为(x p,y p),则下一个象素点有两种可选择点P1(x p+1,y p)或P2(x p+1,y p+1)。若P1与P2的中点(x p+1,y p+0.5)称为M,Q为理想直线与x=x p+1垂线的交点。当M在Q的下方时,则取P2应为下一个象素点;当M在Q的上方时,则取P1为下一个象素点。这就是中点画线法的基本原理。 Bresenham法的基本原理:过各行各列象素中心构造一组虚拟网格线。按直线从起点到终点的顺序计算直线与各垂直网格线的交点,然后确定该列象素中与此交点最近的象素。该算

法的巧妙之处在于采用增量计算,使得对于每一列,只要检查一个误差项的符号,就可以确定该列的所求象素。 3、什么是反走样?常用的反走样方法有哪三种? 在光栅图形中,非水平和垂直的直线用象素集合表示时,会呈锯齿状,这种现象称之为走样。反走样方法:提高分辨率、区域采样、加权区域采样。 4、与显式、隐式方程表示曲线、曲面相比,参数方程法有哪些优势? 求导方便,不会出现计算上的困难。参数方程中,代数、几何相关和无关的变量是完全分离的,而且对变量个数不限,从而便于用于把低维空间的曲线、曲面扩展到高维空间去。这种变量分离的特点使可以用数学公式处理几何分量。 5、什么是光照模型?举两个简单光照模型的例子。 光照模型:为模拟这一现象,我们建立一些数学模型来替代复杂的物理模型,这些模型就称为简单光照明模型。Phong光照明模型、增量式光照明模型 计算机图形学模拟试题二 6、举例说明真实感图形实时绘制与自然景物仿真方面的前沿研究内容。 计算机及辅助设计与制造、可视化、图形实时绘制与自然景物仿真、计算机动画、用户接口、计算机艺术 7、解释中点画圆法的基本原理。

Circle方法用于绘制圆

Circle方法用于绘制圆、椭圆、扇形或弧,其语法格式如下: [对象。]Circle[[Step](x,y)],半径[,颜色][,起始角][,终止角了[长短轴比率]. 对象可以是窗体或图片框控件,其中各参数的含义如下: Step:该参数是可选的,如果使用该参数,则表示圆心坐标(x,y)是相对当前点(CurrentX,CurrentY)的,而不是相对坐标原点的。 (x,y):用于指定圆的圆心,也是可选的,如果省略则圆心为当前点(CurrentX,GurrentY)。 半径:用于指定圆的半径,对于椭圆来讲,该值是椭圆的长轴长度。 颜色:指定所绘制图形的颜色。 起始角、终止角:用来指定圆弧或扇形的起始角度与终止角度,单位为弧度。取值范围为0~2π时,绘制的是圆弧:给起始角与终止角取值前添加一个负号,则所绘制的是扇形,负号表示绘制圆心到圆弧的径向线。省略这两个参数,则所绘制的是圆或椭圆。 VB规定,从起始角按逆时针方向绘制圆弧至到终止角处,水平向右方向为0度,且与坐标系统无关,如图9.18所示。 长短轴比率:当需要绘制椭圆时,可使用该参数指定椭圆长短轴的比率。若值大于1,则所绘制的是竖立的椭圆;若值小于1,则所绘制的是扁平的椭圆。该值的缺省值为1,即省略时绘制的是圆。

例如,使用下列语句绘制出的各种图形如图9.19所示。 实例9.4绘制太极图 使用Circle方法绘制出如图9.20所示的太极图。 代码如下:

首先定义了一个名为Tjt的子过程,形参x和Y为太极图的圆心,r为半径。在窗体的Click事件过程中以不同的参数调用Tjt子过程,运行程序,单击窗体后就会在窗体的不同位置绘制出大小不同的太极图。

《计算机图形学》实验报告模板(圆的扫描转换)

实验报告 课程名称计算机图形学 实验(实训)名称直线的扫描转换 班级信息与计算科学2009级姓名袁明学号2009010301040 同组者 实验(实训)日期完成日期 本实验(实训)所用学时统计 预习实验(实训)报告总计 评阅意见:成绩

实验报告 一、实验目的 1、掌握用数值微分法进行直线的扫描转换; 2、掌握用中点画线法进行直线的扫描转换; 3、掌握用Bresenham画线法进行直线的扫描转换; 4、学会在C语言环境下图形显示模式的设置。 二、算法原理介绍 1、数值微分法: DDA(Digital Differential Analyzer)画线算法也称数值微分法,是一种增量算法。它的算法实质是用数值方法解微分方程,通过同时对x和y各增加一个小增量,计算下一步的x、y值。 已知一条直线段L(P0, P1),其端点坐标为:P0 (x0, y0), P1(x1, y1)。可计算出直线的斜率k为: k=y1-y0/x1-x0 考虑当x从xi?xi+1时y的变化规律: 设?x=xi+1- xi xi+1= xi+ ?x 计算yi+1= kxi+1+b= k (xi+ ?x) +b = kxi+b+k?x = yi+k?x 当?x =1; yi+1 = yi+k 假定端点坐标均为整数,取直线起点P0 (x0, y0)作为初始坐标。画线过程从x的左端点x0开始,向x右端点步进,每步x递增1,y递增k(即直线斜率);取像素点(x,round(y))作为当前点的坐标。 注意上述分析的算法仅适用于|k|≤1的情形。在这种情况下,x每增加1,y最多增加1。当|k|>1时,必须把x,y地位互换 增量算法:在一个迭代算法中,如果每一步的x、 y值是用前一步的值加上一个增量来获得,则称为增量算法。 2、中点画线法: 假设x坐标为xp的各像素点中,与直线最近者已确定,为P(xp,yp),那么,下一个与直线最近的像素只能是正右方的P1(xp+1,yp),或右上方的P2(xp+1,yp+1)两者之一。令M为P1和P2的中点,易知M的坐标为(xp+1,yp+0.5)。 设Q是理想直线与垂直线x=xp+1

相关文档
最新文档