1.点法向量和单元法向量
三维平面的法向量是指垂直于该平面的三维向量。曲面在某点P处的法向量为垂直于该点切平面的向量。对于一个网格模型,其每一个点和单元都可以计算一个法向量,在三维计算机图形学中法向量一个重要应用是光照和阴影计算。对于网格模型,模型是有一定数量的面片(单元)来逼近的,面片越多,则模型越精细;反之,则越粗糙。在计算网格模型的法向量时,单元法向量计算比较简单,可以通过组成每个单元的任意两条边的叉乘向量并归一化来表示。而,对于点的法向量,则是由所有使用该点的单元法向量的平均值来表示。VTK中计算法向量的Filter是vtkPolyDataNormals()。该类针对单元为 三角形或者多边形类型的vtkPolyData数据进行计算。由于法向量分为点法向量和单元法向量,可以通过函数SetComputeCellNormals()和SetComputePointNormals()来设置需要计算的法向量类型。默认情况下计算点法向量,关闭单元法向量计算。示例演示了一个vtkPolyData模型的点法向量和单位法向量的计算:#include <vtkAutoInit.h> VTK_MODULE_INIT(vtkRenderingOpenGL); VTK_MODULE_INIT(vtkInteractionStyle); #include <vtkSmartPointer.h> #include <vtkPolyDataReader.h> #include <vtkPolyDataNormals.h> //计算法向量 #include <vtkMaskPoints.h> #include <vtkArrowSource.h> #include <vtkGlyph3D.h> #include <vtkPointData.h> #include