Foro de elhacker.net

Foros Generales => Dudas Generales => Mensaje iniciado por: guillehampp en 9 Abril 2015, 01:15 am



Título: Calculo Intersección de rectangulos
Publicado por: guillehampp en 9 Abril 2015, 01:15 am
Hola, me han dado un problema, como calcular la intersección de dos rectángulos?
La verdad que eh googleado y no me ha quedado del todo claro.
Alguien sabe como?, muchas gracias!!


Título: Re: Calculo Intersección de rectangulos
Publicado por: engel lex en 9 Abril 2015, 02:23 am
intersección de rectangulos... primero imagen explicativa...

(http://i.imgur.com/enjMRQj.png)

en caso de estar paralelos al eje

lo primero que hay que hallar son los 2 vertices más extremos horizontales y verticales

horizontales: 1,3,7,8
verticales: 1,2,3,4

la interseccion en cada eje son los vertices que no pertenecen a los extremos

así que

horizotales: 2,4,5,6
verticales: 5,6,7,8

como estamos separandolos por eje entonces sabemos que (le daré nombre)

X2 = X4 -> XI
X5 = X6 -> XII

Y5 = Y7 -> YI
Y6 = Y8 -> YII

lo que nos resulta en 2 X y 2 Y para crear 4 coordenadas

(XI,YI) -> punto A en el grafico
(XI,YII) -> punto B en el grafico
(XII,YI) -> punto 5 en el grafico
(XII,YII) -> punto 6 en el grafico

y con esto ya tenemos todas las coordenadas de nuestro rectángulo intersección

espero se entienda!  ::)


Título: Re: Calculo Intersección de rectangulos
Publicado por: guillehampp en 9 Abril 2015, 02:37 am
Muy Claro!!, Muchas Gracias!


Título: Re: Calculo Intersección de rectangulos
Publicado por: Gh057 en 9 Abril 2015, 06:05 am
Hola! tan solo una pequeña observación, lo que consultas puedes localizarlo como "colisiones". La misma puede calcularse tanto para objetos irregulares, esferas, o en su forma más simple, rectángulos; detectándose mediante la diferencia de sus extremos. Saludos.

(agrego) una pequeña referencia en el motor de búsqueda del foro, es referido a como "evitarlos" mas, puede serte útil para redondear el concepto...
http://foro.elhacker.net/buscador2-t426904.0.html;msg1986728#msg1986728


Título: Re: Calculo Intersección de rectangulos
Publicado por: guillehampp en 9 Abril 2015, 15:38 pm
Claro, lo que pasa que no es propiamente una Colisión, yo tomo 4 valores por pantalla de 1 rectángulo (largo, alto, X , Y), y de otro rectángulo lo mismo.

Según las medidas que yo de y la ubicación, tendría que saber en que puntos se intersectan.
No se si me explico bien


Título: Re: Calculo Intersección de rectangulos
Publicado por: engel lex en 9 Abril 2015, 15:41 pm
eso se llama una colisión... una colisión es una intersección...

si explicas un poco más sobre tu tema, podríamos caer en detalle


Título: Re: Calculo Intersección de rectangulos
Publicado por: Gh057 en 9 Abril 2015, 16:01 pm
me cito a mí mismo...
detectándose mediante la diferencia de sus extremos.

mirando el gráfico propocionado por engel lex se puede entender perfectamente, detectas mediante diferencia que el punto 5 está dentro del rango del vector 12, tu coordenada de corte es sobre X la misma que 2 (colisión por derecha, puede suceder que el punto 5 no corte, pero si lo haga el punto 7 por izquierda...) misma lógica para el eje Y y obtienes los puntos que te permiten armar tu rectángulo por proyección...

Por lo mismo indicaba lo de los tres puntos necesarios para formar el par de vectores. Espero haber sido más claro, sino por favor indícanos con más detalle el problema y podríamos ser más específicos... saludos!  


Título: Re: Calculo Intersección de rectangulos
Publicado por: Soquita en 11 Mayo 2019, 20:01 pm
intersección de rectangulos... primero imagen explicativa...

(http://i.imgur.com/enjMRQj.png)

en caso de estar paralelos al eje

lo primero que hay que hallar son los 2 vertices más extremos horizontales y verticales

horizontales: 1,3,7,8
verticales: 1,2,3,4

la interseccion en cada eje son los vertices que no pertenecen a los extremos

así que

horizotales: 2,4,5,6
verticales: 5,6,7,8

como estamos separandolos por eje entonces sabemos que (le daré nombre)

X2 = X4 -> XI
X5 = X6 -> XII

Y5 = Y7 -> YI
Y6 = Y8 -> YII

lo que nos resulta en 2 X y 2 Y para crear 4 coordenadas

(XI,YI) -> punto A en el grafico
(XI,YII) -> punto B en el grafico
(XII,YI) -> punto 5 en el grafico
(XII,YII) -> punto 6 en el grafico

y con esto ya tenemos todas las coordenadas de nuestro rectángulo intersección

espero se entienda!  ::)

Entiendo todo lo que explicas y te lo agradezco porque se nota que esta persona también también estuvo en el mismo curso que estoy ahora.  Mi problema es llevarlo al código, por favor me puedes indicar si me quedó bien escrito o esta perverso?... Gracias

// ¡Declara tu estructura rectangular aquí!
struct rectangle {
   int x, y, width, height;
};
 // ESCRIBE ESTA FUNCION
rectangle canonicalize(rectangle r) {
 r.x=abs(r.x);
 r.y=abs(r.y);
 r.width=abs(r.width);
 r.height=abs(r.height);
  return r;
}
rectangle intersection(rectangle r1, rectangle r2) {
 // ESCRIBE ESTA FUNCION
  r1.x=(r1.x,r2.x);
  r1.y= (r1.y,r2.y);
  r1.width=(r1.width,r2.width);
  r1.height=(r1.height,r2.height);                                                                                                                                                                             
  return r1;
}


Título: Re: Calculo Intersección de rectangulos
Publicado por: r32 en 11 Mayo 2019, 20:25 pm
Hola Soquita, probablemente no te has dado cuenta que el tema es de hace 4 años, con lo que no esperes una respuesta.
Abre un nuevo tema y se te atenderá.

Gracias y un saludo.