"本章主要探讨了图元的属性,特别是点、线、多边形等几何图元在计算机图形学中的表示与处理。其中,点在多边形内的包含性检验是重要的几何操作,包括检验夹角之和以及通过射线法检查交点数。此外,章节还涉及颜色和灰度的概念,如RGB、HSV、HLS和Lab颜色空间,以及灰度的定义。在颜色处理方面,讲解了颜色强度、光亮度、颜色存储方式如RGB和索引颜色表,并介绍了OpenGL的颜色函数,如设定颜色显示模型、指定当前颜色分量以及清除缓存颜色的方法。最后,讨论了图元的绘制,包括使用顶点构造不同类型的图元。"
在计算机图形学中,点在多边形内的包含性检验是判断一个点是否位于一个多边形内部的关键算法。常见的方法有两种:一是检验夹角之和,即计算点到多边形各边的向量与多边形边的夹角,如果夹角之和为2π,那么点通常被认为在多边形内;二是射线法,从点出发画一条射线,如果射线与多边形的边界相交的次数为奇数,则点在多边形内,偶数次则在多边形外。
颜色和灰度是图形渲染的基础。颜色可以通过不同的颜色空间来表示,例如RGB(红绿蓝)是最常用的一种,它通过三个基本颜色的不同组合来产生所有可见颜色。HSV(色相、饱和度、明度)和HLS(色相、饱和度、亮度)空间则更适合于颜色的选择和调整。Lab颜色空间则是基于人类视觉感知设计的,旨在更精确地匹配人眼对颜色的感知。灰度是颜色的一种简化形式,当R、G、B值相等时,我们得到的就是不同程度的灰色。
OpenGL作为一款强大的图形库,提供了丰富的颜色处理功能。例如,可以使用`glutInitDisplayMode()`设定颜色显示模式,选择单缓冲或双缓冲,以及RGB、RGBA或索引颜色模式。`glColor*()`系列函数用于指定当前颜色,而`glClearColor()`用于设置清除缓冲区时的颜色。`glClear()`函数则用于清除指定缓冲区,如颜色缓冲、深度缓冲或模板缓冲。
在图元绘制部分,顶点是构建图形的基本元素。`glVertex()`函数用于定义顶点坐标,而`glBegin()`和`glEnd()`之间的顶点集合会根据参数决定形成哪种类型的图元,如点、线和多边形。这些图元是构建复杂图形的基础,通过组合不同的图元和颜色效果,可以创建出丰富多彩的视觉场景。