简介:本文主要介绍vtkImplicitFunction接口及其子类的实现原理和用途。
目录
1. vtkPlane
2. vtkPolyPlane
1. vtkPlane
描述:vtkPlane提供了各种平面的计算方法,包括点到面的投影,计算点到面的距离及面的法向量等。
EvaluateFunction: 返回点到平面的距离(正数表示点在平面法向量一侧;反之相反)。
2. vtkPolyPlane
描述:vtkPolyPlane是vtkPolyLine在Z轴方向的拉伸,可以在vtkCutter中使用。
核心算法实现:
ComputeNormals-->计算每条直线所构成的Plane的法向量
EvaluateFunction实现原理:
x点在无限直线p1p2上的投影点在p1p2之间
x点在无限直线p1p2上的投影点在p1的左侧
x点在无限直线p1p2上的投影点在p1的右侧
for循环:针对每条线
a. 获取该线的两点p1,p2;
b. 计算x点到直线p1,p2的距离(采用点到有限直线距离的计算方法,参考 vtk基础知识 博客);
c. 若x点到直线的最近点在p1,p2之间,则最小距离为x点到直线的距离;计算x点在直线的左侧or右侧。
d. 若x点在无限直线p1p2上的投影点在p1的左侧,则最小距离为x点到p1点的距离;计算x点在直线与前一条直线的左侧or右侧。
e. 若x点在无限直线p1p2上的投影点在p1的右侧,则最小距离为x点到p2点的距离;计算x点在直线与后一条直线的左侧or右侧。
返回x点在vtkPolyPlane的距离,以及方向(左侧为正,右侧为负)。