C# Berechnung Punkt im Dreieck
lima-city → Forum → Programmiersprachen → Programmieren mit .NET & Mono
code
double
eigentliche routine
formel
http
kopf
programmieren
punkt
rechtwinkligen dreiecks
syntax
text
umsetzen
vektor
vorstellen
wissen
-
Wie der Titel schon lautet möchte ich wissen wie man berechnet ob ein Punkt innerhalb eines (rechtwinkligen) Dreiecks liegt oder nicht. Da ich 14 bin und Vektoren noch nicht hatte (ich kann mir aber ein bisschen was darunter vorstellen) wäre eine Erklärung ohne Vektoren ganz nett (oder so erklärt dass ich es verstehe ).
Da ich es in C# programmieren will wäre es auch nett dass die Formel so ist dass ich sie in C# umsetzen kann.
Beitrag zuletzt geändert: 18.6.2009 12:53:28 von mifa -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Hier das ganze in Java (hab die C#-Syntax nicht im Kopf), aber die Portiertung nach C# sollte ja trivial sein:
Erstmal eine Klasse für Vektoren in R²:
public class VectorR2 { public double x1; public double x2; public VectorR2 (double x1, double x2) { this.x1 = x1; this.x2 = x2; } public VectorR2 sub (VectorR2 other) { return new VectorR2 (x1 - other.x1, x2 - other.x2); } public double dot (VectorR2 other) { return x1 * other.x1 + x2 * other.x2; } }
Und hier die eigentliche Routine
public boolean isInTriangle (VectorR2 a, VectorR2 b, VectorR2 c, VectorR2 p) { VectorR2 v0 = c.sub (a); VectorR2 v1 = b.sub (a); VectorR2 v2 = p.sub (a); double dot00 = v0.dot (v0); double dot01 = v0.dot (v1); double dot02 = v0.dot (v2); double dot11 = v1.dot (v1); double dot12 = v1.dot (v2); double denom = dot00 * dot11 - dot01 * dot01; double u = (dot11 * dot02 - dot01 * dot12) / denom; double v = (dot00 * dot12 - dot01 * dot02) / denom; return (u > 0) && (v > 0) && (u + v < 1); }
Beitrag zuletzt geändert: 19.6.2009 23:41:04 von census -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage