Wie subtriangle innerhalb eines Rechtecks zu identifizieren gegeben eine Koordinate in diesem Rechteck
-
22-09-2019 - |
Frage
ein Rechteck mit einer Breite w und Höhe h gegeben. und eine Koordinate x, y in diesem Rechteck würde Ich mag zu identifizieren, welches Dreieck Ich bin im Innern.
d. die Funktion soll nehmen Parameter (x, y) und das Rück a, b, c, d oder eine Null-basierte Zahl darstellt dieses Dreieck Index dh (0 = A, 1 = B 2 = C, 3 = D), wenn sie in diese Reihenfolge.
ich denke, das wäre so etwas wie> = die Formel der roten Linie und> = die Formel von der grünen Linie?
Ich möchte dies implementieren in VB.NET
Lösung
aboveRed = x*h > y*w;
aboveGreen = (w-x)*h > y*w;
if (aboveRed)
{
if (aboveGreen) return "C"; else return "B";
}
else
{
if (aboveGreen) return "D"; else return "A";
}
Andere Tipps
Die Gleichung der grünen Linie: h * x + w * y = h * w
Die Gleichung der roten Linie: x * h - y * w = 0
Public Function GetTriangleNumber(ByVal x As Integer, ByVal y As Integer)
As Integer
Dim overGreenLine As Boolean = ((((h * x) + (w * y)) - (h * w)) < 0)
Dim overRedLine As Boolean = (((h * x) - (w * y)) > 0)
If overGreenLine Then
Return IIf(overRedLine, 2, 3)
End If
Return IIf(overRedLine, 1, 0)
End Function
würde ich den Winkel der Linie zu dem Punkt, von oben links und oben rechts Ecken betrachten. Wenn es weniger als 45 Grad ist (Einstellung für die Grundrichtung der Flanke) in beiden Fällen dann der Punkt ist, in C. Andere Kombinationen, die anderen drei Dreiecken abdecken.
Sie haben nicht wirklich brauchen, um zu berechnen inversen trigonometrischen Funktionen, dies zu tun, wie das Verhältnis der Längen der Linien, die Sie genug Informationen gibt (und sin (45) ... oder besser gesagt sin (pi / 4) ein Festwert).