Cercar en aquest blog

dijous, 11 de març del 2010

Selecció de cares (2)

Finalment el mètode que havia plantejat no ha resultat satisfactori. Segur que el problema era meu, però els resultats són els que acaben manant.

Després de remanar bastant per internet, he descobert un mètode diferent i bastant més simple que sí que he sabut aplicar.
Consisteix en, donat un triangle ABC i un punt P, per a saber si P cau dins o fora del triangle, mirar el sentit de gir en la generació dels triangles ABC, ABP, BCP i APC. Si els sentits de tots els girs són idèntics, vol dir que el punt cau dins el triangle.

Matemàticament, això es comprova mirant els productes vectorials de dos vectors de cada triangle. Aquests vectors seran normals a cada un dels triangles. Si després els normalitzem, assegurem que el mòdul de cadascun d'aquests sigui unitari. Llavors, per a saber si tots els sentits de gir són iguals, o saber que el sentit de tots els vectors és el mateix (evidentment la direcció serà igual), podem anar sumant els vectors en parelles. Si el resultat d'una suma dóna (0,0,0) voldrà dir que els vectors eren oposats i per tant la direcció dels triangles que els han generat diferents.

Llavors, el cost de comprovar si un punt pertany a un triangle vindrà donat per:

Calcular 2 vectors pels triangles ABC, ABP, BCP i APC.
Calcular la normal de cada un d'aquests triangles fent el producte creu dels dos vectors corresponents (sent coherents a l'hora de posar el primer i el segon en ordre)
Normalitzar cada una de les 4 normals.
Sumar normal(ABC)+normal(ABP) ; normal(ABC)+normal(BCP) ; normal(ABC)+normal(APC) i comprovar que cap dels resultats és (0,0,0).