Cómo identificar subtriangulo dentro de un rectángulo dado una coordenada en ese rectángulo
-
22-09-2019 - |
Pregunta
Dado un rectángulo de anchura w y la altura h. y una coordenada x, y en ese rectángulo Me gustaría identificar qué triángulo estoy dentro.
es decir. la función debería tener parámetros (x, y) y volver a, b, c, d o un número basado cero que representa que el índice de triángulo es decir, (0 = A, 1 = B, 2 = C, 3 = D) si están en ese orden.
Creo que esto sería algo así como> = la fórmula de la línea roja y> = la fórmula de la línea verde?
Me gustaría implementar esto en VB.NET
Solución
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";
}
Otros consejos
ecuación de línea verde: h * x + w * y = h * w
La ecuación de la línea roja: 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
Me consideraría el ángulo de la línea hasta el punto de la parte superior izquierda y derecha esquinas superiores. Si es menor de 45 grados (ajuste de la dirección de base de la arista) en ambos casos entonces el punto está en C. Otras combinaciones cubrirán los otros tres triángulos.
Usted no necesita realmente para calcular funciones trigonométricas inversas para ello, como la relación de las longitudes de las líneas le da suficiente información (y el pecado (45) ... o más bien sin (pi / 4) es una valor fijo).