java3D与计算机图形学期末复习 第三章 java3D基本图形功能
图片与定义摘自《Java 3D 与计算机三维动态图形网络编程设计》
重点复习:
1、LineArray类
LineArray类是组织与定义线的数组类。
该类生成的线段是不连续的,线段的连接方式:0-1,2-3,4-5等。其中,1、2之间与3、4之间不连接。
2、LineAttributes类
LineAttributes类定义所有与线的显示相关的属性与状态。
3、IndexedLineArray类
IndexedLineArray类从定义好的所有点的坐标中选择一部分连成线段显示。
4、LineStripArray类
LineStripArray类将定义好的数据点分组,分别连成几段连续的线段,分成几个组,组间线段连续,各组之间互不连接。
5、多边形属性类PolygonAttributes类
PolygonAttributes类用来定义多边形显示时的相关属性。
三种显示模式:
6、多边形面及其法向量的计算
如图所示,求法向量?
先求出点乘,计算出两向量的夹角:
通过叉乘,计算出法向量N:
7、多边形可视化的填充算法
(1)种子填充算法
种子填色算法首先在要填充的多边形区域内选择一个填色种子点( Seed Point),然后以该种子点为基础,通过与多边形边界的像素点相比较进行填色。
种子填色算法主要有四邻法(如左图)和八邻法(如右图):
(2)扫描线填充算法
每一条扫描线从上向下以一个像素单位为间隔逐次向下扫描,采用奇偶计数法判断多边形内部的点对。
出现点重合时采取的处理方法:
首先按照多边形顶点顺时针方向标明:A、B、C、D、E、F、G
扫描线6:扫描到3个顶点,G点处两点重合,按奇偶计数法会出现错误。于是将入线FG的G点的y轴坐标向下移动1个像素单位(我理解为逆时针方向)。
扫描线7:扫描到3个顶点,D点处两点重合,按奇偶计数法会出现错误。于是将入线CD的D点的y轴坐标向上移动1个像素单位(我理解为逆时针方向)。
8、三角面TriangleArray类
TriangleArray类以一维顶点数组给出顶点的坐标值,从前向后依次以3个顶点形成一个三角形,并且上一个三角形与下一个三角形之间没有公用顶点。
9、三角带TriangleStripArray类
在同一个三角形Strip内,生成三角形时,第一个三角形由前3个顶点生成,第一个三角形的后两个顶点与第四个顶点形成第二个三角形,其余依次类推。
两个子Strip之间没有交点。
10、三角扇TriangleFanArray类
TriangleFanArray类在组织三角形时,以第一个顶点为公用顶点,依次与其余顶点分别连接形成三角形。用这种方法生成的一系列三角形公用第一个顶点。如图: