Auf Punkt in einem Dreicheck testen

Hallo zusammen,

hat vielleicht jemand eine Idee wie man überprüfen könnte ob ein Punkt in einem
rechtwinklig Dreieck liegt ?

Von dem Dreieck selbst stehen mir immer die Koordinaten der Eckpunkte zur Verfügung.

Mein Implementierung für ein Rechteck sieht wie folgt aus:

Code:
return( p_point.x >= rect.x && 
          p_point.y >= rect.y &&
          p_point.x <  rect.x + width && 
          p_point.y <  rect.y + height );

Jetzt fehlt mir sowas nur für eben ein Dreieck
 
Deine Methode für das Rechteck funktioniert nur, wenn die Kanten des Rechtecks senkrecht und waagrecht im Koordinatensystem liegen.
Für alle Formen mit mehr als 2 Eckpunkten und geraden Kanten kannst Du es etwa folgendermaßen machen: Du ermittelst die Steigungen der Kanten sowie der Verbindungslinien zwischen dem zu testenden Punkt und den Eckpunkten. Dann vergleichst Du die ermittelten Kantensteigungen mit den Steigungen der Verbindungslinien. Zur Ermittlung der Vergleichsbedingungen mußt Du die relative Position der Punkte beachten.
 
Mhmm... das Forum kann kein (La)Tex, also mach ich mal eine Metanotation:

Du hast Dein Dreieck ABC und den Punkt P

Dann kannst Du mit:

Vektor(AP) = r*Vektor(AB)+s*Vektor(AC)

r und s bestimmen. Es muß dann aber auf Grund der linearen Abhängighkeit für r und s folgendes gelten:

0 <= r <= 1
0 <= s <= 1
0 <= r + s <= 1

Diese Überprüfung funktioniert bei allen n-dimensionalen Vektorräumen.
 
Zurück