2010-06-14 5 views

Répondre

1
  1. Vérifiez soit qu'ils se croisent d'abord (essayer de prendre le point d'un rectangle et vérifier soit il est à l'intérieur autre rectangle).
    Il y a plusieurs façons de le faire. Une méthode (pas le meilleur, mais facile à expliquer) est la suivante.
    Soit A1, A2, A3, A4 - points rectangle, T - un autre point.
    Ensuite, comptez les carrés pour les triangles:
    S1 = (A1,A2,T), S2 = S(A2,A3,T), S3 = S(A3, A4, T), S4 = S(A4, A1, A2).
    Soit S_rectangle être un carré de réactance.
    Puis T se trouve à l'intérieur du rectangle < =>S1 + S2 + S3 + S4 = S_rectangle.

    Si les rétreints ne se croisent pas, effectuez ces étapes.

  2. Calculer les coordonnées de tous les 8 points de 2 rectangles.

  3. Prendre le minimum parmi tous les 4 * 4 = 16 paires de points (points de différents rectangles).
    Notons le min_1.

  4. Ensuite, prendre un certain point par rapport au premier rectangle (4 façons de le faire),
    prendre 4 segments d'un autre rectangle (4 voies),
    contrôle soit perpendiculaire de ce point à ce segment pénètre dans le segment.
    Prenez le mininmum de telles perpendiculaires. Notons le min_2.

  5. La même chose que dans 3, mais prendre le point du second rectangle, les lignes de la première:
    vous obtenez min_3.

  6. result = min(min_1, min_2, min_3)

+0

Merci beaucoup. Il semble OK :) – WhiteFlare

+0

@WhiteFlare, vous êtes les bienvenus! – Max

+1

Et s'ils s'entrecoupent? –

1
  1. calculer les coordonnées de tous les points de 8 2 rectangles.
  2. Prendre les deux plus faibles distances parmi tous les 4 * 4 = 16 paires de points (points de différents rectangles). et obtenir les 3 points P1, P2 et P3 {Deux d'entre eux appartiennent à un rectangle et le troisième à l'autre}
  3. Les 2 points appartiennent à un rectangle devrait considérer comme segment, maintenant trouver la distance courte entre un segment et le troisième point.
Questions connexes