| 注册
home doc ppt pdf
请输入搜索内容

热门搜索

年终总结个人简历事迹材料租赁合同演讲稿项目管理职场社交

计算机图形学实验报告

文***品

贡献于2023-10-19

字数:4192


计算机图形学实验报告




姓 名:

学 号:

班 级: 计算机班

实验点:

实验时间:

实验

1 实验目求
理解直线生成原理掌握典型直线生成算法掌握步处理分析实验数力
编程实现DDA算法Bresenham中点算法定起点终点直线分调DDA算法Bresenham中点算法进行批量绘制记录两种算法绘制时间利excel等数分析软件试验结果编制成表格绘制折线图较两种算法性

2 实验环境工具
开发环境:Visual C++ 60
实验台:Experiment_Frame_One(制台)

3 实验结果
31 程序流程图
开始

(1)DDA算法
计算kb

K<1


xy


结束
xx+1yy+k
绘点
yy+1xx+1k
绘点


(2)Mid_Bresenham算法
开始


计算dxdy

dx>dy


Ddy2*dx
Ddx2*dy


yx


结束
绘点
绘点

D<0

D<0


xx+1D D + 2*dy 2*dx
yy+1
D D 2*dx
yy+1

yy+1D D + 2*dx 2*dy
xx+1
D D 2*dy
xx+1










32 程序代码

算法实现
绘制素函数DrawPixel(x y)

(1) DDA算法

void CExperiment_Frame_OneViewDDA(int X0 int Y0 int X1 int Y1)
{
请实现DDA算法
float k b
float d
k float(Y1 Y0)float(X1 X0)
b float(X1*Y0 X0*Y1)float(X1 X0)

if(fabs(k)< 1)
{
if(X0 > X1)
{
int temp X0
X0 X1
X1 temp
}
int x
float y
x (int)X0
y (float)Y0
while(x < X1)
{
DrawPixel(x round(y))
x ++
y y + k
}
}
else
{
if(Y0 > Y1)
{
int temp Y0
Y0 Y1
Y1 temp
}
float x
int y
x (float)X0
y (int)Y0
while(y < Y1)
{
DrawPixel(round(x) y)
y ++
x x + 1k
}
}
return
}

(2) Mid_Bresenham算法

void CExperiment_Frame_OneViewMid_Bresenham(int X0 int Y0 int X1 int Y1)
{
请实现Mid_Bresenham算法
int D
int dx dy
int x y
dx X1 X0
dy Y1 Y0
x X0
y Y0
if(dx > dy)
{
D dx 2*dy
while(x < X1)
{
DrawPixel(x y)
if(D < 0)
{
y y +1
D D + 2*dx 2*dy
}
else
{
D D 2*dy
}
x++
}
}
else
{
D dy 2*dx
while(y < Y1)
{
DrawPixel(x y)
if(D < 0)
{
x x +1
D D + 2*dy 2*dx
}
else
{
D D 2*dx
}
y++
}
}
return
}

33 运行结果

(1)DDA算法

(2)Mid_Bresenham算法


34 运行结果分析
DDA算法直观实现简单涉浮点数运算利硬件实现Mid_Bresenham算法DDA算法简单两种算法实现生成直线会

4 实验心
通实验学掌握两种直线扫描转换算法方法优点实现结果需通较确定种方法更优更符合正确结果





实验二

1 实验目求
理解边形扫描转换原理掌握典型边形扫描转换算法掌握步处理分析实验数力
编程实现基X扫描线转换算法(必做)

2 实验环境工具
开发环境:Visual C++ 60
实验台:Polygon_Conversion(制台)

3 实验结果
31 程序流程图
X扫描线转换算法
开始

计算xmaxymax

绘点

扫描线线段否交点

x排序

根公式求交点记录

交点否线段第顶点

判断类型顶点记录交点




32 程序代码

*********************************************************************
功:X扫描线转换算法
参数说明:
vertices[][2]顶点列表
VertexNum 顶点数目
备注:
DrawPixel(int x int y) 绘制素点(x y)
**********************************************************************

void CPolygon_ConversionViewX_Scan_Line_Conersion(int Vertices[][2] int VertexNum)
{
int ymax ymincount
float k

ymaxVertices[0][1]
yminVertices[0][1]

for(int p 0 p < VertexNum p++){ 求y高点低点
if(Vertices[p][1] > ymax) ymaxVertices[p][1]

if(Vertices[p][1] < ymin) yminVertices[p][1]
}

int Xn[100] i ymax2 ymin2 temp

for( i ymin i < ymax i++){ 求交点

count0
for( int j 0 j < VertexNum j++)
{

if(j (VertexNum1) ){ 点第点线段

if(Vertices[j][1] > Vertices[0][1]){ 线段y值值
ymax2Vertices[j][1]
ymin2Vertices[0][1]
}
else{
ymax2Vertices[0][1]
ymin2Vertices[j][1]
}

if((iymin2)){ 判断交点否线段
k (float) ( (float)(Vertices[j][0]Vertices[0][0]) (float)(Vertices[j][1]Vertices[0][1]) )
Xn[count](int) ( (k * (float)i k *(float) Vertices[0][1] + (float)Vertices[0][0]) + 05)
count++
}

else if( i Vertices[j][1] ){ 扫描线线段顶点算前顶点

if( (Vertices[j1][1] > i) && (Vertices[0][1] > i)){
Xn[count]Vertices[j][0]
count++
Xn[count]Vertices[j][0]
count++
}

else if( ((Vertices[j1][1] < i) && (Vertices[0][1] > i)) || ((Vertices[j1][1] > i) && (Vertices[0][1] < i)) ) {
Xn[count]Vertices[j][0]
count++
}
}
}

else{ 线段交点
if(Vertices[j][1] > Vertices[j+1][1]){
ymax2Vertices[j][1]
ymin2Vertices[j+1][1]
}
else{
ymax2Vertices[j+1][1]
ymin2Vertices[j][1]
}

if((iymin2)){
k (float) ( (float) (Vertices[j][0]Vertices[j+1][0]) (float) (Vertices[j][1]Vertices[j+1][1]) )
Xn[count](int) ( (k *(float) i k * (float)Vertices[j+1][1] + Vertices[j+1][0]) + 05)
count++
}

else if( i Vertices[j][1] ){ 扫描线线段顶点算前顶点

if(j 0){ 交点第点

if( (Vertices[j1][1] > i) && (Vertices[j+1][1] > i)){
Xn[count]Vertices[j][0]
count++
Xn[count]Vertices[j][0]
count++
}

else if( ((Vertices[j1][1] < i) && (Vertices[j+1][1] > i)) || ((Vertices[j1][1] > i) && (Vertices[j+1][1] < i)) ){
Xn[count]Vertices[j][0]
count++
}
else{}
}
else { 交点第点
if( (Vertices[VertexNum1][1] > i) && (Vertices[j+1][1] > i)){
Xn[count]Vertices[j][0]
count++
Xn[count]Vertices[j][0]
count++
}

else if( ((Vertices[VertexNum1][1] < i) && (Vertices[j+1][1] > i)) || ((Vertices[VertexNum1][1] > i) && (Vertices[j+1][1] < i)) ) {
Xn[count]Vertices[j][0]
count++
}

}
}
}
}

for( int m 0 m < count1 m++ ){ 交点x坐标排序
for( int n m+1 n < count n++ ){
if( Xn[m] > Xn[n] ){
tempXn[m]
Xn[m]Xn[n]
Xn[n]temp
}
}
}
for( int a 0 a < count a+2 ){ 绘制素点
for( int b Xn[a] b < Xn[a+1] b++){

DrawPixel(b i)
}
}

}

return
}


33 运行结果



34 运行结果分析
运行结果实现意边形区域填充

4 实验心
通实验学掌握X扫描线转换算法实现区域填充编写算法程中断改进算法学帮助解决困难改进效边表算法没编写实现程序断改进中断优化中学许知识
文档香网(httpswwwxiangdangnet)户传

《香当网》用户分享的内容,不代表《香当网》观点或立场,请自行判断内容的真实性和可靠性!
该内容是文档的文本内容,更好的格式请下载文档

下载文档,方便阅读与编辑

文档的实际排版效果,会与网站的显示效果略有不同!!

需要 2 香币 [ 分享文档获得香币 ]

该文档为用户出售和定价!

购买文档

相关文档

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

计算机图形学实验报告(例文)  计算机图形学实验报告   0900213 38 8 郭佩佩  实验一  建立计图实验环境 1. 实验目的 为了体现面向对象的程序设计思想,本实验采用基于 Visual C 十十集成环境的 MFC 编程方法,从开发 windows 应用程序的角度,来建立一个菜单交互式绘图基本环境,为后续的实验打基础。  2. 实验内容 1)  建立

z***i 2年前 上传677   0

计算机图形学实验报告

《计算机图形学》实验报告姓 名: 学 号: 班 级: 计算机班 实验地点: 实验时间: 实验一1 实验

文***品 6个月前 上传208   0

计算机实验报告

计算机实验报告  课程:大学计算机基础         班级 : *****          学号:**       姓名:***  组别:        同组者姓名:                 仪器编号:          实验日期:     实验 windows 2000 操作  +[Print Screen]   打开“画图”程序   单击“文件/新建”菜单   在

h***n 10年前 上传617   0

计算机图形学模拟试卷和答案

北京语言大学网络教育学院《计算机图形学》模拟试卷一注意: 1.试卷保密,考生不得将试卷带出考场或撕页,否则成绩作废。请监考老师负责监督。2.请各位考生注意考试纪律,考试作弊全部成绩以零分计算。3.本试卷满分100分,答题时间为90分钟。4.本试卷分为试题卷和答题卷,所有答案必须答在答题卷上,答在试题卷上不给分。一、【单项选择题】(本大题共10小题,每小题2分,共20分)在每小题列

文***品 3年前 上传1176   0

计算机基本组成实验报告

电 子 科 技 大 学 实验报告   学生姓名:                           学 号:   一、     实验室名称:  计算机学院硬件实验室   二、  实验项目名称:计算机基本组成实验   三、    实验原理 在计算机中,CPU是运算中心和控制中心,系统中的所有设备都是通过三条总线(DB数据总线、AB地址总线、CB控制总线)以及相应的输入/输出接

x***8 12年前 上传12523   0

计算机应用基础实验报告

目的:理解微型计算机的结构和工作原理,掌握组装一台微型计算机所需的硬件由几分钟组成,并学会配置微机硬件配置。

z***2 6年前 上传3388   0

计算机组成原理实验报告 (2)

计 算 机 组 成 原 理 实 验 报 告Computer Organization Lab Reports______________________________________________________________________________班级: ___ 姓名:__ _ 学号:_____ 实验日期:_____________学院: ___ _ 专业:_ ___

z***u 1年前 上传488   0

计算机组成原理实验报告

计算机组织与体系结构实 验 报 告评 语:成绩教 师: 年 月 日班 级: ________学 号: ____________姓 名: ______实验地点: E-Ⅱ区 311 _实验时间: 第三批 实验一 存储器实验

z***u 1年前 上传443   0

计算机网络实验报告

1.理解电子邮件的工作原理;2.掌握电子邮件的申请方法;3.掌握电子邮件的使用方法。

一***旵 3年前 上传660   0

计算机网络实验报告

1、观察教学机房,了解计算机网络结构,并画出计算机网络拓扑结构图。 2、了解计算机网络中的网络设备,并了解每台计算机上使用的网络标识、网络协议。 3、制作2根直通双绞线和2根交叉线,并测试。 4、分别用制作好的直通线、交叉线以及串口线、并口线,连接两台计算机。

M***9 4年前 上传1637   0

计算机网络实验报告

(1)理解远程登录的工作原理;(2)掌握远程登录的设置方法;(3)熟悉远程桌面的使用方法;(4)理解端口的含义。

一***旵 3年前 上传633   0

计算机组成原理实验报告 (1)

郑州航空工业管理学院计算机科学与应用系实验报告课 程 名: 计算机组成原理 学 号: 姓 名: 指导教师: 成 绩; 计算

文***品 1年前 上传414   0

计算机图形学期末考试题库

计算机图形学期末考试题库  一、单项选择题1.  计算机图形显示器一般使用什么颜色模型?(B)A)RGB; B)CMY; C)HSV ; D)HLS     2.  哪一个不是国际标准化组织(ISO)批准的图形标准?(D)A)GKS; B)PHIGS; C)CGM ; D)DXF     3.  下述用数值微分法(DDA)画斜率的绝对值小于1的直线的C语言子程序中哪一行有

文***品 3年前 上传1183   0

大学微型计算机原理及应用本科实验报告

本科实验报告课程名称: 微型计算机原理及应用 实验项目: 多位十进制数相加 实验地点: 博学馆四层微机实验室 专业班级: 学 号: 学生姓名: 指导教师:

z***u 1年前 上传410   0

计算机上机实验内容及实验报告要求

计算机上机实验内容及实验报告要求  一、《软件技术基础》上机实验内容  1.顺序表的建立、插入、删除。  2.带头结点的单链表的建立(用尾插法)、插入、删除。  二、提交到个人10m硬盘空间的内容及截止时间  1.分别建立二个文件夹,取名为顺序表和单链表。  2.在这二个文件夹中,分别存放上述二个实验的相关文件。每个文件夹中应有三个文件(.c文件、.obj文件和.exe文

p***0 12年前 上传784   0

计算机输入输出系统接口实验报告

计算机输入输出系统接口实验报告姓名:学号:二 0 16 年 X月实验一 环境熟悉与 I/O 地址译码一、实验目的掌握I/O地址译码电路的工作原理。二、实验内容将接口实验包中所带的 EX-138.DSN 文件用 ISIS 7 打开。改变 A9~A3 的接线方法,从而得到 Y0;

文***享 8个月前 上传281   0

计算机操作系统内存分配实验报告

计算机操作系统内存分配实验报告一、实验目的熟悉主存的分配与回收。理解在不同的存储管理方式下,如何实现主存空间的分配与回收。掌握动态分区分配方式中的数据结构和分配算法及动态分区存储管理方式及其实现过程。二、实验内容和要求主存的分配和回收的实现是与主存储器的管理方式有关的。所谓分配,就是解决多道作业或多进程如何共享主存空间的问题。所谓回收,就是当作业运行完成时将作业或进程所占的主存空间归还

文***品 3年前 上传620   0

XX大学计算机网络实验报告

计算机网络实验报告册实验一 交换机基本配置实验学时:2学时实验类型:验证实验要求:必修一、实验目的1.掌握桌面网络组建方法2.掌握 Quidway S系列中低端交换机几种常见配置方法二、实验内容1. 通过 Console口搭建配置环境2. 通过 Telnet搭建配置环境3. 熟悉 VRP的各种视图及各视图下的常用命令三、实验原理、方法和手段1. 交换机配置方

文***品 3年前 上传599   0

《计算机网络基础》课内实验报告

《计算机网络基础》课内实验学 部: 经济与管理学院 专 业: 市场营销(网络营销) 班 级: 学 号: 姓 名: 指导教师:

徐***计 2年前 上传332   0

计算机病毒及其防范技术实验报告(例文)

计算机病毒及其防范技术实验报告(例文)   计算机病毒及其防范技术 课程实验报告   项目名称:  对于特定病毒的查杀程序  姓名:  雷雨诗   日期:  2021 年 4 月 22 日   一、项目简介:  针对教员给出的病毒源代码(完整版),通过对特征码的扫描的方式,编写的两个专杀程序。这两个程序分别通过对两种特征码的扫描进行特征码的扫描

z***i 2年前 上传902   0

**民族师范学院数学与计算机科学学院上机实验报告

**民族师范学院数学与计算机科学学院上机实验报告   201 年 至 201 年度    第   学期 上机时间   专业年级:数本151 姓  名 王行舟 08   实验项目:《数学建模算法与应用》第37页,习题3.   3.1某工厂向用户提供发动机,按合同规定,其交货数量和日期是:第一季度末交40台,第二季度末交60台,第三季度末交80台。工厂的最大生产能力为每季100

w***啊 6年前 上传2833   0

化学实验报告

化学实验报告  化学是一门以实验为基础的学科。化学上的许多理论和定律都是从实验中发现归纳出来的。同时,化学理论的应用、评价也有赖于实验的探索和检验。虽然到了近代乃至现代,化学的飞速进步已经产生了各种新的研究方法,但是,实验方法仍然是化学不可缺少的研究手段。新课程改革将科学探究作为突破口,科学探究不但是一种重要的学习方式,同时也是中学化学课程的重要内容,它对发展学生的科学素养具有不可替代的作用

静***开 11年前 上传1068   0

**学院实验报告

实验内容:使用金融数据库查找宏观经济及行业相关数据,使用Excel进行作图分析。根据所得数据以及图形分析相关问题。实验目的:掌握金融数据库软件的相关使用,操作,快捷查找数据,能够制作美观图形,对于数据有效分析。

e***3 3年前 上传690   0

电路实验报告

实验一 元件特性的示波测量法一、实验目的1、学习用示波器测量正弦信号的相位差。2、学习用示波器测量电压、电流、磁链、电荷等电路的基本变量3、掌握元件特性的示波测量法,加深对元件特性的理解。二、实验任务1、 用直接测量法和李萨如图形法测量移相器的相移即实验原理图如图 5-6示。

小***库 3年前 上传3105   0

教育实验报告

教育实验报告  教育实验报告  对某种教育现象实验后,要对整个实验过程进行全面总结,提出一个客观的、概括的、能反映全过程及其结果的书面材料,即谓教育实验报告。教育实验报告可分为三部分:①前言。②实验过程和结果。③讨论及结论。实验报告的基本结构:  (1)题目。应以简练、概括、明确的语句反映出教育的对象、领域、方法和问题,使读者一目了然,判断出有无阅读价值。  (2)单位、作者。应

松***布 12年前 上传759   0