Comment identifier dans un rectangle sous-triangle donné une coordonnée dans ce rectangle

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

Question

Etant donné un rectangle de largeur h w et la hauteur. et une coordonnée x, y dans ce rectangle, je voudrais identifier quel triangle je suis dans.

i.e.. la fonction doit prendre des paramètres (x, y) et de retour a, b, c, d ou un nombre basé zéro représentant le fait que l'indice de triangle ie (0 = A, 1 = B 2 = C, 3 = D) si elles sont en cet ordre.

Je pense que ce serait quelque chose comme> = la formule de la ligne rouge et> = la formule de la ligne verte?

Je voudrais implémenter dans VB.NET

Était-ce utile?

La solution

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";
}

Autres conseils

L'équation de la ligne verte: h * x + w * y = h * w

L'équation de la ligne rouge: 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

Je considérerais l'angle de la ligne au point à partir du haut à gauche et à droite coins supérieurs. Si elle est inférieure à 45 degrés (réglage de l'orientation de base du bord) dans les deux cas, alors le point est en C. D'autres combinaisons couvriront les trois autres triangles.

Vous ne devez pas vraiment pour calculer les fonctions trigonométriques inverses pour ce faire, comme le rapport des longueurs des lignes vous donne des informations assez (et le péché (45) ... ou plutôt le péché (pi / 4) est un valeur fixe).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top