2011-09-22 19 views
6

Contexto: Estoy intentando recortar un mapa topográfico en la elipse de tamaño mínimo alrededor de varias turbinas eólicas, para minimizar el tamaño del mapa. El programa que realiza este recorte de mapa puede recortar elipses, pero solo elipses con ejes alineados a lo largo de los ejes xey.Elipse limitante limitada a ejes horizontales/verticales

Sé el algorithm for the bounding ellipse problem (buscando la elipse de área más pequeña que encierra un conjunto de puntos).

Pero, ¿cómo restrinjo este algoritmo (o hago un algoritmo diferente) para que la elipse resultante tenga su eje principal orientado horizontal o verticalmente, lo que dé la elipse más pequeña y nunca en ángulo?

enter image description here

Por supuesto, esta restricción hace que la elipse que resulta más grande que "necesita" para ser como para abarcar todos los puntos, pero eso es la restricción, no obstante.

+0

y qué hay de hacer que el algoritmo sea más general: permitiendo más elipsis y buscando una solución con el criterio de información más alto (equivalente al valor de AIC más pequeño)? – TMS

Respuesta

2

el algoritmo descrito here (referencia en el enlace que ya ha proporcionado) se trata de resolver el siguiente problema de optimización:

minimize log(det(A)) 
s.t. (P_i - c)'*A*(P_i - c)<= 1 

Uno puede extender este sistema de desigualdades con la siguiente restricción (V es la matriz de rotación elipse, para obtener información detallada, consulte el siguiente enlace):

V == [[1, 0], [0, 1]] // horizontal ellipse 

o

V == [[0, -1], [1, 0]] // vertical ellipse 

Resolver el problema de optimización con cualquiera de estas restricciones y calcular el cuadrado de las elipses resultantes le dará el resultado requerido.