通过椭圆上任一点到称为椭圆焦点的两个定点的距离可给出椭圆的精确定义:椭圆上任一点到这两点的距离之和都等于一个常数(参见图3.21 )。如果椭圆上的任一点P = (x,y)到两个焦点的距离为d1和d2,那么椭圆的通用方程可以表示为...
分类:
编程语言 时间:
2016-04-22 19:11:27
阅读次数:
352
生成圆和椭圆等基本曲线的函数并未作为图元功能包含在OpenGL核心库中。但该库包含了显示Bezier样条的功能,该曲线是由一组离散点定义的多项式。OpenGL实用库(GLU)中包含有球面和柱面等三维曲面函数以及生成B样条的函数,它是包含简化Bezier曲线的样条曲线的总集。我们可以使用有理B样条显示圆、椭圆和其他二维曲线。此外,OpenGL实用工具包(GLUT)中还有可以用来显示某些三维曲面(如球面、锥面和其他形体)的函数。然而,所有这些函数比本章中介绍的基本图元应用得更多,因此我们将在第7章进一步讨论这一...
分类:
编程语言 时间:
2016-04-19 20:10:52
阅读次数:
196
而利用并行计算机,则可通过将计算分割到可用的多个处理器中来得到线段的像素位置。分割问题的一种解决方法是将现有的顺序算法放到多个处理器上。我们也可以寻找其他处理办法,从而使像素位置能以并行方式有效地计算。在设计并行算法中,重要的是要考虑平衡可用处理器间的处理负载。
给定np个处理器,我们可以通过把线段分割成np个子段,并在每个子段中同时生成线段而建立起并行的Bresenham画线算法。
上面讨论过的线段生成算法顺序地确定像素位...
分类:
编程语言 时间:
2016-04-19 12:20:57
阅读次数:
222
Bresenham画线算法是由Bresenham提出的一种精确而有效的光栅线生成算法,该算法仅仅使用增量整数计算。另外Bresenham算法还可用于显示圆和其他曲线。图3.8和图3.9给出了绘制线段的屏幕局部。垂直轴表示扫描线位置,水平轴标识像素列。在这个例子中,我们以单位x间隔取样,并且需要确定每次取样时两个可能的像素位置中的哪一个更接近于线路径。从图3.8中的左端点开始,需要确定下一个取样像素位置是(11, 1l)还是(1 1, 12)。类似地,图3.9则给出了像素位置(50,50)为左端点的具有负斜率...
分类:
编程语言 时间:
2016-04-19 12:20:57
阅读次数:
329
实现线段和其他对象显示函数的最后一步工作是设定帧缓存的颜色值。由于扫描转换算法以连续的单位间隔生成像素位置,因此扫描转换算法可使用增量方法在每一步高效地存取帧缓存。作为一个特殊的例子,假设帧缓存矩阵是以行为主要顺序进行编址,并且像素位置从屏幕左上方((0,0)变化到屏幕右上方气(xmax,ymax)...
分类:
其他好文 时间:
2016-04-19 12:15:05
阅读次数:
210
场景中的直线段由其两端点的坐标位置来定义。要在光栅监视器上显示一线段,图形系统必须先将两端点投影到整数屏幕坐标,并确定离两端点间的直线路径最近的像素位置。接下来将颜色值装人帧缓存相应的像素坐标处。视频控制器从帧缓存读出写入的颜色值并绘制屏幕像素。这一过程将一线段数字化为一组离散的整数位置。一般而言,这些位置是实际线路径的近似。例如,计算出的线位置(10.48, 20.51)转换为像素位置(10, 21)。坐标值舍入到整数,引起除水平和垂直以外所有线段的阶梯效应(“锯齿形”),如图3.5所示。光栅线段特有的阶...
分类:
编程语言 时间:
2016-04-16 19:28:18
阅读次数:
356
数字微分分析仪(digital differential analyzer, DDA)方法是一种线段扫描转换算法,基于使用等式(3.4)或等式(3.5)计算的&x或&y。在一个坐标轴上以单位间隔对线段取样,从而确定另一个坐标轴上最靠近线路径的对应整数值。首先考虑如图3.6所示的具有正斜率的线段。例如,如果斜率小于等于1,则以单位x间隔(&x = 1)取样,并逐个计算每一个y值:下标k取整数值,从第一个点1开始递增直至最后端点。由于m可以是0与1之间的任意实数,所以计算出的y值必须取整。对于具有大于l的正斜率...
分类:
编程语言 时间:
2016-04-16 19:16:49
阅读次数:
172
图形软件包一般都提供一个描述一条或多条直线段的函数,其中每一直线段由两个端点坐标位置定义。在OpenGL中,和选择一个点位置一样,我们使用glVertex函数选择单个端点的坐标位置。我们使用一对glBegin/g1End来引入一串端点位置。有三个OpenGL符号常量可用于指定如何把这一串端点位置连接成一组直线段。默认情况下,每一符号常量显示白色实线。
使用图元线常量GL_LINES可连接每一对相邻端点而得到一组直线段。通常,这会导致一组未连接的线段,除非重复某些坐标位置。如果只描述了一个端点则...
分类:
其他好文 时间:
2016-04-15 12:05:08
阅读次数:
125
本词条缺少名片图,补充相关内容使词条更完整,还能快速升级,赶紧来编辑吧! 在计算机图形学中,深度缓冲(Depth Buffer)又称Z缓冲区,是一个与渲染目标有相同大小的缓冲,这个缓冲记录每个像素的深度。深度缓冲的目的在于正确地生成通常的深度感知效果:较近的物体遮挡较远的物体。 在计算机图形学中,深 ...
分类:
其他好文 时间:
2016-04-15 00:16:34
阅读次数:
179
显示三维场景的图形监视器的设计,采用了从振动的柔性镜面反射CRT图像的技术。此类系统的操作原理如图2.16所示。当变焦反射镜振动时改变焦距长度。这些振动是同CRT上对象的显示同步的。因此,将该对象上的每一点从镜面反射到空间位置,对应于该点到指定观察位置的距离。这样就允许我们围绕着一个对象或场景行走,并从不同的角度进行观察。
图2.17给出了Genisco SpaceGraph系统,它采用振动镜将三维对象投影进25 cm x 25 cm x 25 cm空间。这个系统也能显示选定对一象在不同深度横截面的...
分类:
其他好文 时间:
2016-04-12 17:28:29
阅读次数:
212