Помощь - Поиск - Пользователи - Календарь
Полная версия: Окружность
Форум «Всё о Паскале» > Современный Паскаль и другие языки > Делфи
Cheburashka
Как в Delphi нарисовать окружность на канве???
Обычным уравнением x^2+y^2=R^2, ничего не получается.
Cheburashka
Спасибо, уже разобрался smile.gif
  alpha := alpha + b;
x:=200 + Round(Cos(alpha) * r);
y:=200 + Round(Sin(alpha) * r);
Lapp
Цитата(Сергей Меркурьев @ 10.06.2010 8:39) *
Как в Delphi нарисовать окружность на канве???
Обычным уравнением x^2+y^2=R^2, ничего не получается.
Вообще-то, можно рисовать Ellipse с равными осями. Но мне интересно - что значит "не получается"? Давай разберемся. Как ты делаешь?
Cheburashka
Вообще я хотел просто с помощью пормул нарисовать окружность, и по ней двигать объект.
задав радиус=100, координаты центра (200,200). И начал вычислять Y по уравнению:
y=sqrt (sqr®-sqr(x));
У меня получилось нарисовать только 3 и 4 четверти... то есть нижняя часть окружности. В остальных случаях у меня выходит ошибка о том, что вычисляется квадратный кореньиз отрицательного числа.
Lapp
Цитата(Сергей Меркурьев @ 10.06.2010 9:46) *
начал вычислять Y по уравнению:
y=sqrt (sqr®-sqr(x));
У меня получилось нарисовать только 3 и 4 четверти... то есть нижняя часть окружности. В остальных случаях у меня выходит ошибка о том, что вычисляется квадратный кореньиз отрицательного числа.
Сереж, ты же понимаешь уже наверное, что так нельзя - нужно показывать весь причастный фрагмент кода.

PS
А если пишешь просто формулу (не на Паскале или Си), то используй тэги для sub- и sup-индексов..
volvo
Сергей Меркурьев
Знаешь, что такое полярная система координат? Если принять за центр этой системы твою точку центра окружности, то
ρ(φ) = r, при 0 <= φ < 2π

Что тебе это дает? Все просто:

phi := 0;
while phi < 2 * pi do
begin
X := center_x + trunc(r * cos(phi));
Y := center_y - trunc(r * sin(phi));

// рисуешь на канве точку с координатами X, Y

phi := phi + delta_phi; { <--- приращение угла подберешь сам }
end;

Вот и все сложности. И никаких проблем с разными четвертями и вычислением корня из отрицательного числа...
Lapp
Цитата(volvo @ 10.06.2010 10:06) *
Вот и все сложности. И никаких проблем с разными четвертями и вычислением корня из отрицательного числа...
Это-то он сделал.. см. пост №2.
Я задал свой вопрос еще до того, как это увидел. Но все равно интересно разобраться - можно же обойтись и без синусов-косинусов, если аккуратно все сделать (чисто из споривного интересу)).
TarasBer
> Но все равно интересно разобраться - можно же обойтись и без синусов-косинусов, если аккуратно все сделать (чисто из споривного интересу)).

Можно, и всё на одних целых числах, без умножений и делений в главном цикле.
Как - гуглить по фразе "Алгоритмы Брезенхема".
Cheburashka
Показать код к сожалению уже не могу smile.gif
Цитата
можно же обойтись и без синусов-косинусов, если аккуратно все сделать (чисто из споривного интересу)).


Но было бы неплохо узнать, как это сделать
TarasBer
Повторяю.
Гуглить по фразе "Алгоритмы Брезенхема".
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.