Come identificare subtriangle all'interno di un rettangolo dato un coordinata in quel rettangolo
-
22-09-2019 - |
Domanda
Dato un rettangolo di larghezza w e altezza h. e una x, y in quel rettangolo di coordinate desidero identificare quali triangolo sono all'interno.
vale a dire. la funzione dovrebbe prendere parametri (x, y) e ritorno a, b, c, d oppure un numero zero basato rappresentare tale indice triangolo cioè (0 = A, 1 = B, 2 = C, 3 = D) qualora siano quell'ordine.
Credo che questo sarebbe qualcosa di simile> = la formula della linea rossa e> = la formula della linea verde?
mi piacerebbe implementare questo in VB.NET
Soluzione
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";
}
Altri suggerimenti
L'equazione della linea verde: h * x + w * y = h * w
L'equazione della linea rossa: 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
Vorrei prendere in considerazione l'angolo della linea fino al punto da angoli superiori sinistro e destro superiori. Se è inferiore a 45 gradi (regolazione per la direzione di base del bordo) in entrambi i casi il punto si trova in C. Altre combinazioni copriranno gli altri tre triangoli.
Non è effettivamente necessario calcolare funzioni trigonometriche inverse per fare questo, come il rapporto tra la lunghezza delle linee ti dà abbastanza informazioni (e il peccato (45) ... o meglio sin (pi / 4) è un valore fisso).