relleno hacer figuras dibujar cuadro cuadrado consola con como asteriscos c++ geometry

c++ - hacer - dibujar cuadrado en c# consola



Cómo encontrar un cuadro de límite mínimo orientado arbitrariamente en c++ (5)

Tal vez esto funcione para usted:

  • encuentre el punto central de todos sus puntos (suma de todos x / número de x, igual para y)
  • toma el punto más alejado del centro como punto de esquina
  • línea de proyecto hasta el segundo punto más lejano en un ángulo de 90 ° del punto de la esquina
  • iterar sobre los puntos del otro lado del punto central y encontrar el mínimo

Así que digamos que tengo una lista de N pares de coordenadas largas positivas (puntos).
¿Cómo encuentro el rectángulo más pequeño que contiene todos ellos?
El rectángulo también puede tener coordenadas flotantes y puede rotarse en cualquier ángulo y reducirse aún más ... ¡No solo X, Y, ancho y alto!

Ya sé cómo encontrar el polígono más pequeño o el rectángulo no girado, pero no es lo que necesito ... Deseo saber cómo encontrar el cuadro delimitador mínimo orientado arbitrariamente.



Esta página de wikipedia señala que puede resolver este problema utilizando el hecho de que el rectángulo mínimo debe tener un borde colineal con uno de los bordes del casco convexo.


No sé si esto sería de ayuda para usted, pero aquí están mis pensamientos sobre cómo abordaría el problema.

Necesitará funciones para encontrar los puntos más "en la esquina" (en su ejemplo, los puntos 2 a la izquierda y 2 a la derecha). Teniendo en cuenta esos 4 puntos, conéctelos con líneas.

(Note en su imagen de ejemplo, el punto superior no estaría contenido en el rectángulo generado, así que ...) Entonces necesitará una función para determinar si el rectángulo generado contiene todos los puntos dados; si no, extienda los puntos finales (en este caso, los 2 puntos superiores del rectángulo generado) por N (que es una medida única ... diga un píxel, o si es inteligente, la distancia al punto que está fuera de límites más / menos uno dependiente de la dirección) y reevaluar.