2024年4月28日发(作者:)
计算机图形学学习心得
计算机图形学是20世纪60年代以后,随着计算机技术(包括计算
机硬件技术和软件技术)的发展和完善而形成的一门新兴学科。下面是
小编为大家收集整理的计算机图形学学习心得,欢迎大家阅读。
计算机图形学学习心得篇1
一、实验目的
了解梁友栋算法和编码裁剪算法并利用该算法思想实现某一图形
或直线段的裁剪,加深对梁友栋算法和编码裁剪算法的理解。
二、实验内容
利用梁友栋算法(参数化线段裁剪算法)或编码裁剪算法变成实现对
直线段或者任一图形的裁剪。
三、实验原理
梁友栋算法简介如下:
设线段两端点坐标分别为P1(x1,y1)和P2(x2,y2),则其参数化直线
方程可写成下列形式:
0≤u≤1
当u=0时,得点P1,当u=1时,得点P2。线段的裁剪条件可以
由下面的不等式表示: Wxl≤x1﹢uΔx≤Wxr;Wyb≤y1﹢uΔy≤Wyt
这四个不等式可以表示为:upk≤qk k=1,2,3,4
其中,参数p,q定义为:
p1﹦-Δx, q1﹦x1﹣Wxl
p2﹦Δx, q2﹦Wxr﹣x1
p3﹦-Δy, q3﹦y1﹣Wyb
p4﹦Δy, q4﹦Wyt﹣y1
下标k=1,2,3,4分别对应裁剪窗口的左、右、下、上四条边界线。
如果线段平行于裁剪窗口的某两边界,则必有相应的pk﹦0,如果还
满足qk<0,则线段的端点位于窗口外部,即线段在窗口外,应该舍弃。
如果qk≥0,线段在窗口内。当pk<0时,直线是从裁剪窗口第k条边
界线的外部延伸到内部。当pk>0时,直线是从裁剪窗口第k条边界
线的内部延伸到外部。当pk不等于零时,可以计算出线段与第k条裁
剪窗口边界线的交点参数: 根据定义,对于每条线段,pk中必有两个
小于零,而另两个大于零。对于小于零的pk,直线同第k条裁剪窗口
边线是从外到内相遇的,此时如果线段同第k条裁剪窗口边界线有交
点的话,是参数u从0变大时遇到的,这时计算出相应的rk值,取0
和各个rk值之中的最大值记为u1。与此相反,对于大于零的pk,计
算出相应的rk值,取1和各个rk值之中的最小值记为u2。两个参数
u1和u2定义了在裁剪窗口内的线段部分。如果u1>u2,则线段完全
落在裁剪窗口之外,应被舍弃。否则被裁剪线段可见部分的端点由参
数u1和u2计算出来。
四、实验环境
Windows XP VisualC++6.0
五、实验步骤
进入VisualC++6.0环境,在菜单中选择“FileàNewàProjects”,
然后选择“MFCAppWizard(exe)”新建一个工程文件单击“OK”,
在弹出的对话框中选择“Single document”,单击“Finish”,在
VisualC++6.0编程界面中选择CMyView单击右键,选择“Add
Member Function”,在弹出的对话框中添写“void”和函数名。
// 图形裁减 : implementation of the CMyView class
//
#include "stdafx.h"
#include "图形裁减.h"
#include "图形裁减Doc.h"
#include "图形裁减View.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE = __FILE__;
#endif
///////////////////////////////////////////////////////////////////


发布评论