6
Come si calcola la distanza minima tra due rettangoli?
È facile per i rettangoli che non hanno angoli (vale a dire 0
gradi uno), ma per ruotato di rettangoli con angoli diversi, non so come farlo.
Potete consigliare in qualche modo?Distanza minima tra due rettangoli ruotati con diverse angolazioni
WhiteFlare
A
risposta
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.
Calcolare le coordinate di tutti gli 8 punti di 2 rettangoli.
Prendere il minimo tra tutti i 4 * 4 = 16 coppie di punti (punti da diversi rettangoli).
Indichiamolo min_1
.
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
.
lo stesso come in 3
, ma prendere punti dal secondo rettangolo, le linee del primo:
si ottiene min_3
. Coordinate
result = min(min_1, min_2, min_3)
1
- Calcolare di tutti 8 punti 2 rettangoli.
- 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}
- i 2 punti appartengono ad un rettangolo dovrebbe considerato come segmento, Ora trovare la distanza corta tra un segmento e il terzo punto.
fonte
2010-06-14 20:32:41
Grazie mille. Sembra OK :) – WhiteFlare
@WhiteFlare, siete i benvenuti! – Max
Cosa succede se si intersecano? –