Como identificar o subtriangle dentro de um retângulo dada uma coordenada nesse retângulo
-
22-09-2019 - |
Pergunta
Dado um retângulo de largura w e altura h. e uma coordenada x, y Naquele retângulo, gostaria de identificar qual triângulo eu estou dentro.
ou seja, a função deve tomar parâmetros (x, y) e retornar a, b, c, d ou um número baseado em zero representando esse índice de triângulo isto é (0 = a, 1 = b, 2 = c, 3 = d) se forem naquela ordem.
Eu acho que isso seria algo como> = a fórmula da linha vermelha e> = a fórmula da linha verde?
Eu gostaria de implementar isso em vb.net
Solução
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";
}
Outras dicas
Equação da linha verde: h * x + w * y = h * w
Equação da linha vermelha: 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
Eu consideraria o ângulo da linha até o ponto, dos cantos superior esquerdo e superior direito. Se for inferior a 45 graus (ajustando a direção base da borda) em ambos os casos, o ponto está em C. Outras combinações cobrirão os outros três triângulos.
Na verdade, você não precisa calcular as funções inversas de trigo para fazer isso, pois a proporção dos comprimentos das linhas fornece informações suficientes (e pecado (45) ... ou melhor, pecado (pi/4) é um valor fixo) .