IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

 
 Ответить  Открыть новую тему 
> Окружность
сообщение
Сообщение #1


Бывалый
***

Группа: Пользователи
Сообщений: 195
Пол: Мужской
Реальное имя: Сергей

Репутация: -  2  +


Как в Delphi нарисовать окружность на канве???
Обычным уравнением x^2+y^2=R^2, ничего не получается.


--------------------
♣♣♣
"Себя великим не считай, гордясь величьем предков,
Величья не добудешь ты и золота ценою!
Хоть светит на небе луна, но отраженным светом -
Чужою славой не живи, не будь второй луною!!!"
♣♣♣
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Бывалый
***

Группа: Пользователи
Сообщений: 195
Пол: Мужской
Реальное имя: Сергей

Репутация: -  2  +


Спасибо, уже разобрался smile.gif
  alpha := alpha + b;
x:=200 + Round(Cos(alpha) * r);
y:=200 + Round(Sin(alpha) * r);


--------------------
♣♣♣
"Себя великим не считай, гордясь величьем предков,
Величья не добудешь ты и золота ценою!
Хоть светит на небе луна, но отраженным светом -
Чужою славой не живи, не будь второй луною!!!"
♣♣♣
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Цитата(Сергей Меркурьев @ 10.06.2010 8:39) *
Как в Delphi нарисовать окружность на канве???
Обычным уравнением x^2+y^2=R^2, ничего не получается.
Вообще-то, можно рисовать Ellipse с равными осями. Но мне интересно - что значит "не получается"? Давай разберемся. Как ты делаешь?


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Бывалый
***

Группа: Пользователи
Сообщений: 195
Пол: Мужской
Реальное имя: Сергей

Репутация: -  2  +


Вообще я хотел просто с помощью пормул нарисовать окружность, и по ней двигать объект.
задав радиус=100, координаты центра (200,200). И начал вычислять Y по уравнению:
y=sqrt (sqr®-sqr(x));
У меня получилось нарисовать только 3 и 4 четверти... то есть нижняя часть окружности. В остальных случаях у меня выходит ошибка о том, что вычисляется квадратный кореньиз отрицательного числа.


--------------------
♣♣♣
"Себя великим не считай, гордясь величьем предков,
Величья не добудешь ты и золота ценою!
Хоть светит на небе луна, но отраженным светом -
Чужою славой не живи, не будь второй луною!!!"
♣♣♣
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Цитата(Сергей Меркурьев @ 10.06.2010 9:46) *
начал вычислять Y по уравнению:
y=sqrt (sqr®-sqr(x));
У меня получилось нарисовать только 3 и 4 четверти... то есть нижняя часть окружности. В остальных случаях у меня выходит ошибка о том, что вычисляется квадратный кореньиз отрицательного числа.
Сереж, ты же понимаешь уже наверное, что так нельзя - нужно показывать весь причастный фрагмент кода.

PS
А если пишешь просто формулу (не на Паскале или Си), то используй тэги для sub- и sup-индексов..


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гость






Сергей Меркурьев
Знаешь, что такое полярная система координат? Если принять за центр этой системы твою точку центра окружности, то
ρ(φ) = 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;

Вот и все сложности. И никаких проблем с разными четвертями и вычислением корня из отрицательного числа...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


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


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Злостный любитель
*****

Группа: Пользователи
Сообщений: 1 755
Пол: Мужской

Репутация: -  62  +


> Но все равно интересно разобраться - можно же обойтись и без синусов-косинусов, если аккуратно все сделать (чисто из споривного интересу)).

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


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Бывалый
***

Группа: Пользователи
Сообщений: 195
Пол: Мужской
Реальное имя: Сергей

Репутация: -  2  +


Показать код к сожалению уже не могу smile.gif
Цитата
можно же обойтись и без синусов-косинусов, если аккуратно все сделать (чисто из споривного интересу)).


Но было бы неплохо узнать, как это сделать


--------------------
♣♣♣
"Себя великим не считай, гордясь величьем предков,
Величья не добудешь ты и золота ценою!
Хоть светит на небе луна, но отраженным светом -
Чужою славой не живи, не будь второй луною!!!"
♣♣♣
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Злостный любитель
*****

Группа: Пользователи
Сообщений: 1 755
Пол: Мужской

Репутация: -  62  +


Повторяю.
Гуглить по фразе "Алгоритмы Брезенхема".


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 24.12.2024 1:43
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name