Wie subtriangle innerhalb eines Rechtecks ​​zu identifizieren gegeben eine Koordinate in diesem Rechteck

StackOverflow https://stackoverflow.com/questions/2310794

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

War es hilfreich?

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).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top