worksheets solved maths kids for exercises app math

math - solved - Elipse que delimita un rectángulo



math worksheets (5)

Pregunta de Maths101: ¿alguien sabe cómo calcular una elipse (ancho / alto) que encerrará un rectángulo dado? Obviamente, no existe una sola elipse, estoy buscando un algoritmo que me proporcione varias combinaciones de ancho / alto, ¿o quizás el área más pequeña de elipse? Es para una GUI, por lo que estoy buscando una relación estéticamente agradable de alto / ancho.

Gracias por adelantado.


Suponiendo que te refieres a circunscrito (que es más preciso que "cerrado"), aquí puedes leer sobre cómo circunscribir un rectángulo . A partir de ahí, puede estirarlo a rectangular, como dice Alnitak.


Si le da a su elipse la misma relación de aspecto que el rectángulo, puede trabajar sobre la base de que lo que quiere es un círculo que encierre un cuadrado y luego se estira como si hubiera transformado el cuadrado en el rectángulo requerido.

Para un cuadrado con la mitad de la longitud lateral = 1, el radio del círculo sería sqrt (2).

Entonces, al barrer theta de 0 a 360 '', los puntos de coordenadas de la elipse serán:

  • x = cos (theta) * sqrt (2) * rect.width + x.center;
  • y = sin (theta) * sqrt (2) * rect.height + y.center;

donde rect.width y rect.height son los medios anchos de los lados correspondientes.


Experimentalmente, encontré que una elipse definida por un rectángulo que es sqrt (2) más grande que el rectángulo interno funciona. Pase el sqrt (2) a esta función y obtendrá el rectángulo apropiado:

RectangleF boundingEllipse = GetScaledRectangle (innerRect, Convert.ToSingle (Math.Sqrt (2d)));

RectangleF privado GetScaledRectangle (rectángulo Rectángulo, escala flotante) {ancho de flotante = rect.Width * scale; altura flotante = escala rect.Height *;

float gap = width - rect.Width; float left = rect.Left - (gap / 2f); gap = height - rect.Height; float top = rect.Top - (gap / 2f); return new RectangleF(left, top, width, height);

}


  1. La fórmula de Elipse es (x / A) ^ 2 + (y / B) ^ 2 = 1, donde A y B son radios de elipse
  2. Los lados del rectángulo son Rw y Rh
  3. Supongamos que queremos elipse con las mismas proporciones que el rectángulo; entonces, si hacemos una imagen cuadrada en círculo (A = B, Rq = Rh) y la exprimimos, guardamos bien la relación de la elipse A / B igual que la relación de los lados del rectángulo Rw / Rh;

Esto nos lleva al siguiente sistema de ecuaciones:
(x / A) ^ 2 + (y / B) ^ 2 = 1
A / B = Rw / Rh

Vamos a resolverlo: A = B * (Rw / Rh)
(Rh / 2B) ^ 2 + (Rh / 2B) ^ 2 = 1
Rh = sqrt (2) * B

Y la solución final:
A = Rw / sqrt (2)
B = Rh / sqrt (2)

Ejemplo:
elipse http://i55.tinypic.com/sxhlc0.gif


La ecuación para una elipse centrada en el origen es

(x/A)^2 + (y/B)^2 = 1

Ahora, si desea encerrar un rectángulo de MxN con un eclipse, puede mover su centro al origen de las coordenadas. Las coordenadas de arriba a la derecha son (M/2,N/2) , reemplazando en la ecuación de elipse tienes una fórmula que puedes usar para resolver B dada A (o A dada B).

Si tienes un rectángulo de 4x2, las coordenadas de arriba a la derecha son (2,1), reemplazando tienes el (2/A)^2 + (1/B)^2 = 1 , luego si A=4 resolviendo para B da B=1/sqrt(1-(1/2)^2) .