计算机图形学实验报告


    
    计算机图形学实验报告




    姓 名:

    学 号:

    班 级: 计算机班

    实验点:

    实验时间:

    实验

    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. 实验目的 为了体现面向对象的程序设计思想,本实验采...

    2年前   
    669    0

    计算机图形学实验报告

    《计算机图形学》实验报告姓 名: 学 号: 班 级: 计算机班 ...

    6个月前   
    200    0

    计算机实验报告

    计算机实验报告  课程:大学计算机基础         班级 : *****          学号:**       姓名:***  组别:        同组者姓名:           ...

    10年前   
    611    0

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

    北京语言大学网络教育学院《计算机图形学》模拟试卷一注意: 1.试卷保密,考生不得将试卷带出考场或撕页,否则成绩作废。请监考老师负责监督。2.请各位考生注意考试纪律,考试作弊全部成绩以零分计算。...

    3年前   
    1165    0

    计算机基本组成实验报告

    电 子 科 技 大 学 实验报告   学生姓名:                           学 号:   一、     实验室名称:  计算机学院硬件实验室   二、 ...

    12年前   
    12510    0

    计算机应用基础实验报告

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

    6年前   
    3376    0

    计算机组成原理实验报告

    计算机组织与体系结构实 验 报 告评 语:成绩教 师: 年 月 日班 级: ________学 号: __________...

    1年前   
    433    0

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

    计 算 机 组 成 原 理 实 验 报 告Computer Organization Lab Reports__________________________________________...

    1年前   
    475    0

    计算机网络实验报告

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

    3年前   
    652    0

    计算机网络实验报告

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

    3年前   
    624    0

    计算机网络实验报告

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

    4年前   
    1628    0

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

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

    1年前   
    388    0

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

    计算机图形学期末考试题库  一、单项选择题1.  计算机图形显示器一般使用什么颜色模型?(B)A)RGB; B)CMY; C)HSV ; D)HLS     2.  哪一个不是国际标准化...

    3年前   
    1161    0

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

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

    1年前   
    393    0

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

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

    2年前   
    326    0

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

    计算机上机实验内容及实验报告要求  一、《软件技术基础》上机实验内容  1.顺序表的建立、插入、删除。  2.带头结点的单链表的建立(用尾插法)、插入、删除。  二、提交到个人10m硬盘空间的...

    12年前   
    767    0

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

    计算机网络实验报告册实验一 交换机基本配置实验学时:2学时实验类型:验证实验要求:必修一、实验目的1.掌握桌面网络组建方法2.掌握 Quidway S系列中低端交换机几种常见配置方法二、实验...

    3年前   
    587    0

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

    计算机输入输出系统接口实验报告姓名:学号:二 0 16 年 X月实验一 环境熟悉与 I/O 地址译码一、实验目的掌握I/O地址译码电路的工作原理。二、实验内容将接口实验包中所带的 EX-138...

    8个月前   
    272    0

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

    计算机操作系统内存分配实验报告一、实验目的熟悉主存的分配与回收。理解在不同的存储管理方式下,如何实现主存空间的分配与回收。掌握动态分区分配方式中的数据结构和分配算法及动态分区存储管理方式及其实...

    3年前   
    605    0

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

    计算机病毒及其防范技术实验报告(例文)   计算机病毒及其防范技术 课程实验报告   项目名称:  对于特定病毒的查杀程序  姓名:  雷雨诗   日期:  2021...

    2年前   
    881    0

    文档贡献者

    文***品

    贡献于2023-10-19

    下载需要 2 香币 [香币充值 ]
    亲,您也可以通过 分享原创文档 来获得香币奖励!
    下载文档

    该用户的其他文档