2010-06-14 3 views

risposta

1
  1. controllare o si intersecano primo (cercare di prendere punti da un rettangolo e verificare o è all'interno di altre rettangolo).
    Ci sono diversi modi per farlo. Un metodo (non il migliore, ma facile da spiegare) è il seguente.
    Lasciate A1, A2, A3, A4 - punti rettangolo, T - qualche altro punto.
    Quindi contare i quadrati per i triangoli:
    S1 = (A1,A2,T), S2 = S(A2,A3,T), S3 = S(A3, A4, T), S4 = S(A4, A1, A2).
    Lasciate S_rectangle essere quadrato reattivo.
    Quindi T si trova all'interno del rettangolo < =>S1 + S2 + S3 + S4 = S_rectangle.

    Se i reagenti non si intersecano tra loro, procedere come segue.

  2. Calcolare le coordinate di tutti gli 8 punti di 2 rettangoli.

  3. Prendere il minimo tra tutti i 4 * 4 = 16 coppie di punti (punti da diversi rettangoli).
    Indichiamolo min_1.

  4. Poi, prendere un certo punto dal primo rettangolo (4 modi per farlo),
    prendere 4 segmenti di un altro rettangolo (4 vie),
    controllo sia perpendicolari da quel punto a quel segmento entra dentro segmento.
    Prendi il minimo di tali perpendicolari. Indichiamolo min_2.

  5. lo stesso come in 3, ma prendere punti dal secondo rettangolo, le linee del primo:
    si ottiene min_3. Coordinate

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

+0

Grazie mille. Sembra OK :) – WhiteFlare

+0

@WhiteFlare, siete i benvenuti! – Max

+1

Cosa succede se si intersecano? –

1
  1. Calcolare di tutti 8 punti 2 rettangoli.
  2. Prendere le due distanze più basse tra tutte 4 * 4 = 16 coppie di punti (punti da diversi rettangoli). e ottenere i 3 punti P1, P2 e P3 {Due di loro appartengono a un rettangolo e il terzo per l'altro}
  3. i 2 punti appartengono ad un rettangolo dovrebbe considerato come segmento, Ora trovare la distanza corta tra un segmento e il terzo punto.