Нарисовать окружность на несколько способов
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
| ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
| [216.73.216.43] |
|
|
| Страницы: (2) 1 [2] все ( Перейти к последнему сообщению ) |
Нарисовать окружность на несколько способов
|
Сообщ.
#16
,
|
|
|
|
Постановка вопроса очень не точная:
Ну допустим с алгоритмом Брезенхема все понятно. А допустим рисование как (R*sin(a), R*cos(a)) a[-п; п] и (a, +/-sqrt(R2 - a2)). a[-R; R] Чисто математически это фактически одно и тоже. А алгоритмически? Добавлено Хотя если копнуть еще глубже, то и Алгоритм Брезенхема основан на идее целочисленного приближения к искомым соотношениям. |
|
Сообщ.
#17
,
|
|
|
|
Цитата shm @ Чисто математически это фактически одно и тоже. А алгоритмически? Разные. В одном используются тригонометрические, в другом - корень. Там и стоимость иная будет. Короче эта задача на то, насколько мы знаем, что такое окружность. И чтобы взглянуть на нее с разных сторон, разных свойств, которые можно использовать, чтобы ее отрисовать. Кроме названных двух (пифагор, синус-косинус) знаю еще два. Интересно узнать, какие еще могут быть. |
|
Сообщ.
#18
,
|
|
|
|
Цитата Машина @ Интересно узнать, какие еще могут быть. Тысячи их. Влоть до того, что можно банально задать коэффициентны в табличке (тех же синусов и косинусов) и по ним построить приближение искомой окружности, что собственно и делается почти во всех видеоиграх. Причем ,если это сделать правильно, то окружность получится даже красивее, чем по алгоритму Брезенхема. Добавлено Цитата Машина @ Кроме названных двух Цитата shm @ алгоритмом Брезенхема для рисования окружностей. |
|
Сообщ.
#19
,
|
|
|
|
Цитата shm @ Влоть до того, что можно банально задать коэффициентны в табличке (тех же синусов и косинусов) и по ним построить приближение искомой окружности, что собственно и делается почти во всех видеоиграх. Ну разные методы вычисления син-кос не будем учитывать. Так же, как разные способы умножения, взятия корня и т.п. Брезенхем для окружностей - не знал, спасибо! По-быстрому не пойму, какой принцип там используется. |
|
Сообщ.
#20
,
|
|
|
|
Машина, принцип примерно такой же, как при рисовании прямой. Только для прямой стоимость прямого и диагонального шагов фиксированы, а для окружности они на каждом шагу меняются (впрочем правило простое, хватает обычного суммирования)
|
|
Сообщ.
#21
,
|
|
|
|
Цитата amk @ Машина, принцип примерно такой же, как при рисовании прямой. Только для прямой стоимость прямого и диагонального шагов фиксированы, а для окружности они на каждом шагу меняются (впрочем правило простое, хватает обычного суммирования) Это да, просто как в алгоритме определяется, что данный пиксел принадлежит траектории окружности, не понял. |
|
Сообщ.
#22
,
|
|
|
|
Уравнение круга можно записать в виде: x^2 + y^2 - r^2 = 0.
В качестве следующей точки выбирается та, значение в которой ближе к нулю. Рисование начинается с точек, находящихся на горизонтальной и вертикальной осях окружности. При рисовании используется свойства симметрии (так что рисовать приходится только 1/8 окружности) Загляни лучше в википедию: алгоритм Брезенхэма, там всё подробно описано и для прямых, и для кривых второго порядка. Вообще можно что-то подобное написать и для кривых более высоких порядков, но там выигрыш не очень велик. |
|
Сообщ.
#23
,
|
|
|
|
Цитата amk @ Уравнение круга можно записать в виде: x^2 + y^2 - r^2 = 0. В качестве следующей точки выбирается та, значение в которой ближе к нулю. Разве пифагор там используется? Я смотрел конечно. Не нашел ни умножения, ни корней, а как без них? |
|
Сообщ.
#24
,
|
|
|
|
1) Разделяй и властвуй.
2) Брезенхема. 3) Сплайны. 4) Тайтл. |
|
Сообщ.
#25
,
|
|
|
|
Цитата Машина @ Тем не менее в основе там именно уравнение окружности. И тот факт что квадрат можно вычислить используя только сложения.Разве пифагор там используется? Я смотрел конечно. 12 = 1 22 = 1 + 3 32 = 1 + 3 + 5 52 = 1 + 3 + 5 + 7 и т.д Там конечно не значение функции в точках вычисляется, а некое число, знак которого определяет в каком направлении (прямо или по диагонали) делать следующий шаг. Годится сумма значений функции в точках-претендентах. |
|
Сообщ.
#26
,
|
|
|
|
Цитата amk @ Тем не менее в основе там именно уравнение окружности. И тот факт что квадрат можно вычислить используя только сложения. Ага, точно. Спасибо ![]() Цитата Pavia @ 1) Разделяй и властвуй. 2) Брезенхема. 3) Сплайны. 4) Тайтл. Можно подробней по пунктам 1 и 4? Сплайны - аппроксимация? |