Il problema è un po' complesso:
Ho quattro punti in ordine casuale nello spazio 3D.
I quatto punti appartengono allo stesso piano.
Il problema consiste nel creare due triangoli qualunque che abbiano i vertici nei quattro punti, ma che non abbiano sovrapposizione di aree.
Possibile soluzione in R2 (mondo 2D):
se i punti sono tutti su uno stesso piano (XY, XZ o YZ) allora posso utilizzare questo metodo:
Creo un triangolo con i primi tre punti (A,B,C)
Prendo il quarto punto D e considero la sua posizione rispetto a ciascuno degli altri punti (per esempio A) e il segmento formato dagli altri 2 (B,C). Se A sta dalla parte opposta di D rispetto a BC, allora il A è da escludere nella formazione del secondo triangolo.
Per verificare la posizione del punto rispetto al segmento considero il segno della seguente formula:
in cui p0 è un punto e p1p2 sono gli estremi del segmento rispetto al quale devo considerare la posizione.
(p1.X - p0.X) * (p2.Y - p0.Y) - (p2.X - p0.X) * (p1.Y - p0.Y)
se il segno è positivo, il punto è “alla sinistra” del segmento, se è negativo è “alla destra”, se è 0, il punto giace sul segmento.
Per esempio, nella figura sotto C è il punto da escludere perché sta dalla parte opposta di D rispetto al segmento AB.
Avrò così i due triangolo ABC e ABD
Esiste qualcosa di analogo in R3 (mondo 3D) o un altro metodo per giungere ad una soluzione?
[img]c:\image.bmp[/img]