Mi chiedo come sia possibile scrivere un algoritmo preciso per calcolare la frontiera della superficie di intersezione tra una superficie parametrica f : R^2 --> R^3
e una maglia triangolata.Intersezione di una mesh con una superficie parametrica
ho pensato ad un primo approccio:
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
Questo algoritmo, è molto semplice ma lento (n^3) e non tiene conto del fatto che la topografia della rete è basata su triangoli così i punti di output sono punti della mesh e non punti calcolati che sfruttano l'intersezione della superficie con i triangoli ed è fortemente dipendente dalla tolleranza che si deve impostare.
Qualcuno ha un'idea migliore o può portarmi a una libreria adatta per questo scopo?
Avete ulteriori informazioni sulla superficie? Puoi progettare in modo efficiente? Riesci a trovare in modo efficiente su quale lato di un punto è? – maxim1000
La superficie è un helicoide 'x (r, theta) = r * cos (theta)', 'y (r, theta) = theta',' z (r, theta) = r * sin (theta) 'lo è anche impossibile distinguere un interno e uno esterno – linello
Oh, giusto. Quindi la mia risposta non è esattamente esatta. Ma puoi ancora determinare theta e r da (x, y, z) e calcolare una distanza segnata da quella. Ciò che non mi è chiaro è, quanto preciso ti aspetti che sia? Cosa succede se un triangolo si interseca con la superficie più volte nella direzione y? –