计算机图形学直线扫描转论文,计算机图形学实验报告-实验1直线段扫描转换.doc...
PAGE 32
PAGE 7
计算机图形学
实验报告
班级 计算机工硕班
学号 2011220456
姓名 王泽晶
实验一:直线段扫描转换
实验目的
通过本次试验,学生可以掌握直线段的扫描转换算法及其程序设计方法。
实验内容
绘制20*20的网格线,格子X和Y方向间隔均为20像素,网格起始坐标在(20,20)。我们使用此网格模拟像素矩阵(),格子交叉点是像素中心。
输入直线段两端点,可使用以下两种方法之一:
对话框输入
鼠标在网格内以鼠标左键按下-拖动-抬起方式输入。注意:直线段两端点要自动取整到模拟的像素中心位置
进行直线段扫描转换,通过点击鼠标右键调用方式或者菜单调用的方式执行。计算完成后,将扫描转换结果,在模拟的像素矩阵中,使用圆形显示出来。
方法一:直线的中点算法
算法的主要思想:
讨论斜率k∈[1,+∞)上的直线段的中点算法。
对直线,左下方的端点为(x0,y0),右上方的端点为(x1,y1)。直线段的方程为:
现在假定已求得像素(),则如图得
由于直线的斜率k∈[1,+∞),故m=1/k∈(0,1],则
在直线上,区间内存在两个像素NE和E。根据取整原则,当在中点M右方时,取像素NE,否则取像素E,即
若取,则上式变为
计算的递推公式如下:
=
算法的初始条件为:
相应的程序示例:
public function drawLine(pixelDrawer:Function, x0:int,y0:int,x1:int,y1:int):void
{
var dx:Number = x1 - x0;
var dy:Number = y1 - y0;
var x:Number;
var y:Number;
if ((dx == 0) && (dy == 0) )
{
// 两点重合时,直接绘制重合的点
pixelDrawer( x0, y0 );
return;
}
else if ( dx==0 )
{
// 第二点落在X轴上,直接绘制直线上的点
var step:Number = dy / Math.abs(dy);
for (y=y0; y!=y1; y+=step )
pixelDrawer( x0, y );
}
else if ( dy==0 )
{
// 第二点落在Y轴上,直接绘制直线上的点
step = dx / Math.abs(dx);
for (x=x0; x!=x1; x+=step )
pixelDrawer( x, y0 );
}
var stepX:Number = dx / Math.abs(dx);
var stepY:Number = dy / Math.abs(dy);
x = x0, y = y0;
pixelDrawer( x, y ); // 绘制起点
var k:Number = dy / dx;
if ( Math.abs(k)<1.0 ) // 斜率<1的情形,以X为自变量递增
{
var a:Number = -Math.abs(dy);
var b:Number = Math.abs(dx);
var d:Number = 2 * a + b;
var d1:Number = 2 * a;
var d2:Number = 2 * (a + b);
while ( x!=x1 )
{
if ( d<0 ) { x += stepX; y += stepY; d += d2; }
else { x += stepX; d += d1; }
pixelDrawer( x, y );
}
}
else // 斜率>=1的情形,以Y为自变量递增
{
a = -Math.abs(dx);
b = Math.abs(dy);
d = 2 * a + b, d1 = 2 * a, d2 = 2 * (a + b);
while ( y!=y1 )
{
if ( d<0 ) { x += stepX; y += stepY; d += d2; }
else { y += stepY; d += d1; }
pixelDrawer( x, y );
}
}
pixelDrawer( x1, y1 ); // 绘制终点
}
编译
计算机图形学直线扫描转论文,计算机图形学实验报告-实验1直线段扫描转换.doc...相关推荐
- 计算机图学实验报告,计算机图形学实验报告实验1
计算机图形学实验报告实验1 (9页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 9.9 积分 贵州大学实验报告学院:计算机科学与信息专业:计科班级:101 ...
- 计算机直线的绘制实验报告,dda画直线实验报告
dda画直线实验报告 (5页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 9.9 积分 本科实验报告实验名称: DDA直线画法 课程名称: 计算机图形学 ...
- 大学计算机张青答案,《大学计算机Ⅰ》实验报告实验一1
<大学计算机Ⅰ>实验报告实验一1 (4页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 9.9 积分 广东金融学院实验报告课程名称:大学计算机I ...
- 计算机控制系统AD实验报告,实验一AD转换实验报告.docx
文档介绍: 实验一AD转换实验报告.docx计算机控制系统实验报告实验一实验名称:A/D转换实验二零一六年三月实验_A/D转换实验.实验要求利用ADC做A/D转换器,将模拟量转换成二进制数字量,用延时 ...
- 计算机仿真技术应用报告,计算机仿真技术实验报告-实验二
计算机仿真技术实验报告-实验二 (7页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 9.9 积分 <仿真技术与应用>实验报告计算机仿真技术实验 ...
- 计算机结构实验三,计算机体系结构实验报告——实验三.pdf
计算机体系结构实验报告--实验三 1.实验目的: 通过实验,熟练掌握WINDLX 的操作方法,特别注意在单步执行WinDLX程序中,流水线 中指令的节拍数. 2.实验内容: (1) 用WinDLX模拟 ...
- 计算机控制系统AD实验报告,实验一AD转换实验报告
实验一AD转换实验报告 (6页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 9.9 积分 计算机控制系统实验报告实验一实验名称:A/D转换实验二零一六年三 ...
- 大学计算机实验三,《大学计算机Ⅰ》实验报告实验三
<大学计算机Ⅰ>实验报告实验三 (3页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 9.9 积分 广东金融学院实验报告课程名称:大学计算机I实 ...
- 与计算机图形学相关的研究论文,计算机图形学相关论文范文数据库,与计算机图形学的相关技术与相关专科毕业论文范文...
计算机图形学相关论文范文数据库,与计算机图形学的相关技术与相关专科毕业论文范文 关于计算机图形学及计算机及计算机动画方面的免费优秀学术论文范文,计算机图形学相关本科毕业论文,关于计算机图形学的相关技术 ...
最新文章
- consolez设置
- 说到心里的哲理个性签名 学生时代的恋爱无非就是陪伴二字
- ConcurrentHashMap源码分析(2)——JDK1.8的实现
- python是不是特别垃圾-python为啥比较流行(垃圾桶)
- wpf 如何设置弹出窗口必须关闭才能打开其他软件_新电脑到手后,这3项定要这样设置,能让你的电脑多用三年!...
- SAP Spartacus routing parameter mapping介绍
- xp系统如何开启共享服务器,xp系统怎么关闭共享服务 xp系统共享打印机如何设置...
- 多线程的那点儿事(之原子锁)
- JS 正则(RegExp)
- css 列表内容滚动,stroll.js 炫酷的 CSS3 列表滚动动画集合 - 文章教程
- String,PChar,PByte,Array of Char,Array of Byte 转换---来自大富翁
- pajek中文乱码:ASCII字符处理
- 设计模式第一篇---懒汉模式
- Hadoop-Spark企业应用实战
- 【DB宝36】使用Docker分分钟搭建漂亮的prometheus+grafana监控
- zc706开发板的linux开发,第一篇:zc706 开箱及开发环境搭建
- 正则表达式 取最后一个 . 然后进行匹配
- 什么软件测试cpu满载,功耗实测——待机/CPU满载/3DMark_CPUCPU评测-中关村在线
- 我的iMac苹果电脑的系统崩溃和恢复
- 车内看车头正不正技巧_科目二考试最实用技巧!