Verificare se un punto è in un area
Ciao a tutti,
ho tre punti nello spazio 2D (A, B, C).
Devo verificare se il punto P si trova all'interno dell'area delimitata dai tre punti (A, B, C).
Per farlo, mi calcolo le 3 rette e imposto un sistema.
Graficamente, posso rendermi facilmente conto in che modo impostare il sistema perchè mi rendo conto di quale retta è più in alto e di quale è più in basso.
Devo implementare questa logica in un programmino C, ma come faccio a capire quale retta prendere come bordo superiore e quale prendere come bordo inferiore?
Grazie mille del vostro aiuto.
ho tre punti nello spazio 2D (A, B, C).
Devo verificare se il punto P si trova all'interno dell'area delimitata dai tre punti (A, B, C).
Per farlo, mi calcolo le 3 rette e imposto un sistema.
Graficamente, posso rendermi facilmente conto in che modo impostare il sistema perchè mi rendo conto di quale retta è più in alto e di quale è più in basso.
Devo implementare questa logica in un programmino C, ma come faccio a capire quale retta prendere come bordo superiore e quale prendere come bordo inferiore?
Grazie mille del vostro aiuto.
Risposte
Un metodo alternativo per risolvere il tuo problema è quello di calcolarsi le coordinate baricentriche. All'interno della pagina di wikipedia linkata, ci sono delle formule per calcolare queste coordinate e come usarle per stabilire se un punto è interno ad un triangolo.
Alternativamente si può testare che per ogni retta determinata da un lato, il punto sia nel semipiano dove si trova il triangolo. Per stabilire quali dei due semipiani si può scegliere una delle seguenti strade:
1. Stabilire a priori un orientamento dei punti (per cui i punti sono in ordine orario o antiorario). In questo caso si può stabilire a priori quale semipiano considerare.
2. Verificare in che semipiano si trova il punto esterno al lato che si sta considerando.
Alternativamente si può testare che per ogni retta determinata da un lato, il punto sia nel semipiano dove si trova il triangolo. Per stabilire quali dei due semipiani si può scegliere una delle seguenti strade:
1. Stabilire a priori un orientamento dei punti (per cui i punti sono in ordine orario o antiorario). In questo caso si può stabilire a priori quale semipiano considerare.
2. Verificare in che semipiano si trova il punto esterno al lato che si sta considerando.