|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Apr 2009
Messaggi: 1926
|
intersezioni tra 2 rettangoli
salve, avrei bisogno di un semplice algoritmo che, dati 2 rettangoli, mi verifica se si intersecano o meno..
ogni rettangolo è semplicemente individuato da x,y (la x va da sinistra a destra, la y dall'alto al basso) e da width e hight... quindi i punti sono (x,y) (x,y+height), (x+width,y), (x+width,y+height) grazie
__________________
Come installare la rom cucinata V11-7 fixed di Hyperx: http://www.hwupgrade.it/forum/showpo...ostcount=21774 |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Nov 2001
Città: Boscoreale (NA)
Messaggi: 421
|
algoritmo per quale linguaggio? php, c++ etc etc
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Dec 2006
Messaggi: 3808
|
io sfrutterei le proiezioni sugli assi e la distanza dal centro, ma questo è solo il primo input che mi viene in mente.
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Sep 2005
Messaggi: 1400
|
forse geometricamente puoi sfruttare qualche calcolo con matrici o delle proprietà dei vettori
|
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Nov 2001
Città: Boscoreale (NA)
Messaggi: 421
|
dovresti fare il confronto tra le coordinate
Cioè rettangolo A(x1,y1) (x2,y2) e rettangolo B(x1,y1) (x2,y2) Ax1 <= Bx1 <= Ax2 AND Ay1 <= By1 <= Ay2 e anche per l'altra coordinata Ax1 <= Bx2 <= Ax2 AND Ay1 <= By2 <= Ay2 se una delle 2 è verificata..i rettangoli intersecano |
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
La questione è un po' più banale.
Dati i due rettangoli R1 e R2, allineati con gli assi, puoi verificare l'intersezione come verifica dell'intersezione delle proiezioni dei due rettangoli sugli assi. Il che si traduce in una verifica di interesezione tra due coppie di segmenti in uno spazio unidimensionale: S0X(R0.X, R0.X + R0.W) interseca S1X(R1.X, R1.X + R1.W) S0Y(R0.Y, R0.Y + R0.H) intereseca S1Y(R1.Y, R1.Y + R1.H) Se entrambe le intersezioni sono vere, allora i due rettangoli si intersecano. E quand'è che due segmenti SA e SB si intersecano? Quando: (SA.inizio >= SB.inizio && SA.inizio < SB.fine) oppure (SB.inizio >= SA.inizio && SB.inizio < SB.fine) Da cui deriva che, detti R1 e R2 i rettangoli, x, y, w e h le loro proprietà: S0X0 = R0X S0X1 = R0X + R0W S0Y0 = R0Y S0Y1 = R0Y + R0H S1X0 = R1X S1X1 = R1X + R1W S1Y0 = R1Y S1Y1 = R1Y + R1H XINT = (S0X0 >= S1X0 && S0X0 < S1X1) || (S1X0 >= S0X0 && S1X0 < S0X1) YINT = (S0Y0 >= S1Y0 && S0Y0 < S1Y1) || (S1Y0 >= S0Y0 && S1Y0 < S0Y1) INTERSEZIONE = XINT && YINT Magari si può anche risparmiare qualche confronto ma il principio è quello.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
|
|
|
|
|
#7 | |
|
Senior Member
Iscritto dal: Dec 2006
Messaggi: 3808
|
Quote:
|
|
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
E' evidente nella richiesta: neanche Euclide riuscirebbe ad individuare un rettangolo non allineato con gli assi dati un punto e due estensioni.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
|
|
|
|
|
#9 | |
|
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Quote:
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 04:28.




















