我想知道如何编写一个精确的算法来计算参数化表面 f : R^2 --> R^3
和三角网格的交点。
我的第一种思路是:
nStepsU = 100
nStepsV = 100
tolerance=0.01 // pick some sensical value
intersectionVertices={}
for u from minU to maxU in nStepsU:
for v from minV to maxV in nStepsV:
for v in verticesInMesh:
if euclidean distance( f(u,v), v ) < tolerance:
add vertex v in a set
connect the vertices in intersectionVertices with a line strip
draw the vertices in intersectionVertices
这个算法非常简单但效率较低(n ^ 3),并没有考虑到网格的拓扑结构是基于三角形的,因此输出的点是网格的点而不是利用曲面与三角形相交产生的计算点,并且严重依赖于所设置的公差。
是否有更好的想法或者能够为我推荐一个合适的库来解决这个问题?
x(r,theta) = r*cos(theta)
,y(r,theta) = theta
,z(r,theta) = r*sin(theta)
,因此不可能区分内部和外部。 - linello