2010-06-14 2 views

Antwort

1
  1. überprüfen sie entweder schneiden zuerst (versucht Punkt von einem Rechteck zu nehmen und prüfen, entweder es in anderem Rechteck).
    Es gibt mehrere Möglichkeiten, dies zu tun. Eine Methode (nicht die beste, aber einfach zu erklären) ist die folgende.
    Lassen Sie A1, A2, A3, A4 - Rechteckpunkte, T - ein anderer Punkt.
    Dann Quadrate für Dreiecke zählen:
    S1 = (A1,A2,T), S2 = S(A2,A3,T), S3 = S(A3, A4, T), S4 = S(A4, A1, A2).
    Lassen Sie S_rectangle Rectangle-Quadrat sein.
    Dann liegt T innerhalb des Rechtecks ​​< =>S1 + S2 + S3 + S4 = S_rectangle.

    Wenn sich Rectangles nicht schneiden, führen Sie diese Schritte aus.

  2. Berechnen Sie die Koordinaten aller 8 Punkte von 2 Rechtecken.

  3. Nimm mindestens alle 4 * 4 = 16 Punktepaare (Punkte aus verschiedenen Rechtecken).
    Wir bezeichnen es als min_1.

  4. Dann nimm einen Punkt aus dem ersten Rechteck (4 Wege dies zu tun),
    nehmen 4 Segmente eines anderes Rechtecks ​​(4 Wege),
    Prüfung entweder senkrecht von diesem Punkt an, dass das Segmentinnensegment erhält.
    Nehmen Sie die Mininmum solcher Loten. Lass es uns min_2 bezeichnen.

  5. Das gleiche wie in 3, aber Punkt aus dem zweiten Rechteck nehmen, Linien von den ersten:
    Sie erhalten min_3.

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

+0

Vielen Dank. Es scheint OK :) – WhiteFlare

+0

@WhiteFlare, Sie sind herzlich willkommen! – Max

+1

Was ist, wenn sie sich schneiden? –

1
  1. berechnen Koordinaten aller Punkte 8 von 2 Rechtecke.
  2. Nehmen Sie die zwei niedrigsten Abstände zwischen alle 4 * 4 = 16 Punktepaare (Punkte aus verschiedenen Rechtecken). Und die drei Punkte P1 erhalten, P2 und P3 {Zwei von ihnen zu einem Rechteck gehören und die dritte in dem anderen}
  3. Die 2 Punkte zu einem Rechteck gehören sollte als Segment betrachtet, nun die kurze Strecke finden zwischen einem Segment und dem dritten Punkt.