我们经常会遇到,我们需要一个面上的中心点的时候,API并没有给出一个直接的方法,这样子我们需要自己去用几何知识去计算出一个面的中心点。不管这个面的形状是怎样子的,都可以算出一个在这个面的凸起点围起来的最大轮廓线。 先上代码后讲解,Just Do It!!!
public static XYZ GetFaceCenter(this Face temFace) { var faceBound = temFace.GetBoundingBox(); UV maxUV = faceBound.Max; UV minUV = faceBound.Min; UV uvPoint = (maxUV + minUV) / 2; XYZ centerPoint = temFace.Evaluate(uvPoint).SetZ(); return centerPoint; }讲解: (1)先得到这个面的BoundingBox
(2)再取这个包络框的两个顶点
这里需要注意的是。我们取到的点是UV坐标系的,也就是这个平面的原点和U方向、V方向组成的一个面。因此,在坐标点的数值上不是直接相同的。 (3)通过Evaluate方法,取到UV点在这个面上相应的坐标点。得到XYZ坐标。 这次分享就到这里啦,关注我,学习更多二次开发的小知识,每周持续更新中。。。