计算机图形学基础课程设计
用VB实现的简单图形学的基本变换,包括直线生成算法、椭圆生成算法、平移、旋转等。需要源代码以及程序的可以在百度空间留言。
中点画线算法的原则是:如下图所示,但斜率K<1时,选定一个点之后,再计算中点M。如果M>0,这线更靠近E点,下一点选择为E点。反之选择NE点。
首先:f(x,y) = ax+by+c=0,
且 y = dy/dx *x + B,
so : f(x,y) = dy*x-dx*y+Bdx =0
so: a = dy, b = -dx, c = Bdx.
假设,已经选定P点,应用中点法则选择下一点是,我们只要计算f(x+1,y+1/2),并考察是正数还是负数。我们定义d=f(x+1,y+1/2)=a(x+1)+b(y+1/2)+c.这样,对于d>0,d<0,我们只要选择NE点和E点就可以了。这边假设选定为E点,那么中点M的位置怎么变化和d的值如何变化呢?显然M就沿着x轴递增一步。 此时:d1 = f(x+2,y+1/2)从d1中减去d,可以得到一个增量差。d1= a = dy

。 同理:如果选定下一点为NE点,d2 = a+b = dy-dx。
基于上面的讨论,增量的中点技术可以概括为:在每一步,我们根据上一步所得到的增量的符号去选择下一个像素点。然后根据说选择的像素,判定变量增加相应的增量差d1或d2。对于初始值,我们选择第一个端点为(x0,y0)。则M为(x0+1,y+1/2).f(x0+1,y0+1/2) = f(x0,y0)+a+b/2.
故: d0 = a+b/2 = dy - dx/2
为去掉d0中的小数,我们对d0进行放大。(在方程两边同乘于2)
d0 = 2*dy – dx d1 = 2*dy d2 = 2*(dy-dx)
2.1.3、Breshenham算法扫描转换直线段:
算法步骤:
假定直线的起点、终点分别为:(x1,y1), (x2,y2),且都为整数。
则直线方程为y=mx+b,其中b=y1-mx1,m=dy/dx,当x每递增1,y递增k(即直线斜率)
取yi+1,yi由d1,d2的大小决定y=m(xi+1)+b,
d1=y- yi, d2= yi+1–y,
当d1- d2>0 , y; 1i 1 yi
当d1- d2<0 , yi 1 yi;
你可能喜欢
- 计算机图形学大作业
- 图形设计
- 计算机图形学实验报告
- 太阳系行星
- 计算机图形学代码
- 计算机基础课程
- 计算机图形学实习报告
- 计算机图形学大作业封面 及要求2页
- 计算机图形学大作业7页
- 计算机图形学大作业10页
- 武汉理工计算机图形学大作业源码17页
- 《计算机图形学》大作业2013-12 - 副本10页
- 计算机图形学大作业5页
- 第一章图形设计的概念29页
- 广告图形创意设计18页
- java 图形程序设计41页
- 第11章图形设计36页
- 《装饰图形设计》教学设计 【TXT文本】_3973页
- 平面图形的设计10页
- 《计算机图形学》实验报告模板(圆的扫描转换)7页
- 计算机图形学实验报告-221页
- 计算机图形学实验报告2页
- 计算机图形学实验报告4页
- 计算机图形学实验报告19页
- 计算机图形学实验报告12页
- 太阳系行星之ppt12页
- 太阳系行星运行模拟C++程序语言11页
- 太阳系行星八兄弟3页
- 太阳系行星详细介绍12页
- 太阳系行星的K均值聚类划分4页
- 太阳系行星详细介绍12页
- 《计算机应用基础》项目教学课程教案59页
- 计算机技术基础课程设计--课题(杨民生)2页
- 计算机应用基础系列课程1721页
- 计算机应用基础系列课程1815页
- 计算机应用基础系列课程1919页
- 计算机应用基础系列课程1515页
- 计算机图形学实习报告48页
- 计算机图形学实习报告34页
- 计算机图形学实习报告24页
- 计算机图形学实习报告13页
- 计算机图形学上机实习报告3页
- 计算机图形学实习报告7页


