2 votos

Desplazamiento de posiciones de rectángulos para evitar solapamientos

Tengo los siguientes casos en los que los rectángulos se superponen. enter image description here

Tengo las coordenadas del rectángulo de intersección(Azul). ¿Cómo puedo desplazar las coordenadas de inicio (superior izquierda X-Y) de los 2 rectángulos para evitar la superposición, siempre que tengo las coordenadas del rectángulo de intersección.

0voto

TheGreatDuck Puntos 106

La respuesta es que los problemas a los que te enfrentas dependen de las coordenadas de la región de intersección azul que tengas, pero sea como sea es de hecho imposible sin conocer la ubicación de los otros rectángulos.

Si sólo tienes la coordenada superior izquierda de la región azul, entonces la respuesta es no. Sin ninguna otra información, estás actuando en el vacío. Todo lo que sabes es que los rectángulos se cruzan en algún punto. No sabes nada más que eso. Básicamente tendrías que desplazarlos a una distancia "infinita", porque la región de intersección podría ser desde casi imperceptiblemente pequeña a cualquier tamaño arbitrariamente grande.

Sin embargo, si tienes las dos esquinas del rectángulo azul sigues estando jodido. Ahora bien, por las imágenes de tu diagrama ninguno de los rectángulos está inscrito dentro del otro, y sabes que el rectángulo rosa está arriba a la izquierda del rectángulo amarillo. En ese caso si dejamos que $W$ es la anchura del rectángulo azul y $H$ sea la altura del rectángulo azul, entonces desplazando el rectángulo amarillo $W + 1$ unidades a la derecha y el $H + 1$ unidades hacia abajo garantizará absolutamente que no haya intersecciones. El " $1$ " es un valor intermedio para evitar que los lados se toquen. Opcionalmente, puede eliminarlo si se permiten las intersecciones laterales.

Si el rectángulo azul está inscrito, entonces estás 100% jodido y necesitarías las coordenadas de los rectángulos rosa y amarillo. Todo se reduce a lo siguiente.

Supongamos que ese desplazamiento existe. Sea la anchura del rectángulo amarillo equivalente a una unidad en el $x$ y que siga de forma similar para $y$ . Esto está permitido ya que estamos definiendo efectivamente un sistema de coordenadas diferente isométrico al sistema de coordenadas original y por lo tanto todas las propiedades geométricas abstractas (existencia de intersecciones, líneas paralelas, ángulos, distancias relativas, etc.) se conservan. Como el rectángulo amarillo está inscrito, sabemos que tiene las mismas coordenadas que el rectángulo azul. Supongamos también que el rectángulo amarillo tiene su ángulo superior izquierdo en el origen. Sea $U$ y $V$ son la anchura y la altura del rectángulo rosa. Para desplazar el rectángulo amarillo fuera del rectángulo rosa debe existir un vector $(a,b)$ tal que $a \geq U$ y $b \geq V$ y este vector debe funcionar para todos $(U,V)$ pares. Sin embargo, esto equivale a afirmar que existe un número real $a$ tal que $a$ es mayor que todos los demás números reales. Esto es imposible y es una contradicción. Por lo tanto no se puede desplazar un rectángulo inscrito al exterior de otro rectángulo sin conocer el tamaño del rectángulo exterior.

En aras de la exhaustividad, supongamos que conoce el tamaño del rectángulo exterior en una situación de inscripción completa. Entonces, desplazando $(U+1,V+1)$ unidades en el sistema de coordenadas original servirá para tomar prestada la notación de la prueba anterior.

También voy a incluir que el desplazamiento $(a,b) - (c,d)$ donde $(a,b)$ es la esquina inferior derecha del rectángulo rosa y $(c,d)$ es la esquina superior izquierda del rectángulo amarillo.

Para ir más allá sería necesario un caso de uso específico de este desplazamiento. Basándome en que no se ha incluido, asumo que el caso de uso o bien no existe o, alternativamente, sólo te importa el desplazamiento en cualquier dirección o magnitud, siempre y cuando cese la intersección. Si esto es incorrecto, entonces se puede abordar en una futura actualización de este post.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X