Zastanawiam się, jak można zapisać dokładny algorytm obliczania granicy powierzchni przecięcia między parametryczną powierzchnią f : R^2 --> R^3
a siatką trójkątów.Przecięcie siatki z parametryczną powierzchnią
myślałem pierwszego podejścia:
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
Algorytm ten jest bardzo prosty, ale powolny (n^3) i nie zachowuje się uwagę, że topografia siatki trójkątów jest oparty na tak punkty wyjściowe są punktami siatki, a nie punktami obliczonymi z wykorzystaniem przecięcia powierzchni z trójkątami i są silnie zależne od tolerancji, którą należy ustawić.
Czy ktoś ma lepszy pomysł, czy może mnie do tego celu doprowadzić do odpowiedniej biblioteki?
Czy masz dodatkowe informacje na temat powierzchni? Czy potrafisz efektywnie projektować? Czy potrafisz znaleźć efektywnie, po której stronie jest punkt? – maxim1000
Powierzchnia to helicoid 'x (r, theta) = r * cos (theta)', 'y (r, theta) = theta',' z (r, theta) = r * sin (theta) ' Niemożliwe jest rozróżnienie wewnątrz i na zewnątrz – linello
Oh, prawo. Więc moja odpowiedź nie jest dokładnie na miejscu. Ale nadal możesz określić theta i r od (x, y, z) i obliczyć odległość od tego. Nie jestem jednak pewien, jak precyzyjnie się tego spodziewasz? A co, jeśli jeden trójkąt przecina się z powierzchnią wiele razy w kierunku y? –