Cómo identificar subtriangulo dentro de un rectángulo dado una coordenada en ese rectángulo

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

Pregunta

Problema ilustración

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

¿Fue útil?

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top