Тема: Эллипс
Показать сообщение отдельно
  #4  
Старый 11.04.2008, 19:17
MegaPiha MegaPiha вне форума
Активный
 
Регистрация: 24.03.2008
Сообщения: 227
Версия Delphi: Delphi 7
Репутация: 30
По умолчанию

Цитата:
Сообщение от The Shadow
Спасибо. Ошибка была там.
Но теперь
Заменил
Код:
Result:=Round(Sqrt(Abs(RealB*RealB - (X*X*RealB*RealB)/(RealA*RealA))));
...
for i:=0 to Image1.Width do
Image1.Canvas.Pixels[i, Ellipse(i, Image1.Width, Image1.Height)]:=clBlack;

Тут нельзя использовать никаких abs. А то получается что если a*a < x*x они как бы меняются местами. Главное условие x должен быть меньше a по модулю. Рисовать надо по циклу, где x принимает значения допустим от -100 до 100.
И использовать два уравнения. Первое положительная полудуга. Второе отрицательная полудуга.
y=b/a*sqrt(a*a-x*x);
y=-b/a*sqrt(a*a-x*x);
И получаем замечательный эллипс.
Ответить с цитированием