найти точку на окружности эллипса, которая находится внутри прямоугольника с центральной точкой, высотой и шириной? - PullRequest
6 голосов
/ 06 мая 2010

У меня есть прямоугольник в .NET, в котором я рисую эллипс.

Я знаю ширину, высоту и центральную точку этого прямоугольника.

Конечно, центральная точка прямоугольникатакже является центральной точкой эллипса.

Я знаю, как рассчитать точку на окружности, однако я не имею понятия об эллипсе.

У меня есть эти параметры и угол, янужна точка на эллипсе, может кто-нибудь выложить формулу?

Я где-то видел, что нужно вычислить 2 точки, в которых пойдут 2 радиуса, сумма радиусов будет фиксированной, и они соответственно изменятся в размере.

Я не знаю, как это сделать, у меня есть только высота, ширина и центральная точка прямоугольника и, конечно, угол, в котором я хочу найти точку.

спасибо за любыепомогите Шломи

1 Ответ

13 голосов
/ 06 мая 2010

Вы можете использовать каноническую форму в полярных координатах для вашей задачи, где ширина и высота прямоугольника равна w и h соответственно.

alt text

alt text

где t - угол в радианах, a - w / 2 и b - ч / 2

Итак, чтобы построить свой эллипс, все, что вам нужно сделать, это изменить t от 0 до 360 градусов (в радианах, так что это 0 и 2pi ) и в зависимости от того, как вы располагаете t , вы получаете очки на эллипсе.

Поскольку ваш прямоугольник не центрирован в начале координат, вам придется сместить его по координатам центра прямоугольника, скажем, (C x , C y )

const double C_x = 10, C_y = 20, w = 40, h = 50;
for(double t = 0; t <=2*pi; t+=0.01)
{
   double X = C_x+(w/2)*cos(t);
   double Y = C_y+(h/2)*sin(t);
   // Do what you want with X & Y here 
}
...