На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: ANDLL, ALXR
Страницы: (2) 1 [2]  все  ( Перейти к последнему сообщению )  
> Нарисовать окружность на несколько способов
   
На сколько способов вы можете нарисовать окружность? (читай пост)
Гости не могут просматривать результаты голосования.
Гости не могут голосовать 
    Постановка вопроса очень не точная:
    Ну допустим с алгоритмом Брезенхема все понятно.
    А допустим рисование как
    (R*sin(a), R*cos(a)) a[-п; п]
    и
    (a, +/-sqrt(R2 - a2)). a[-R; R]
    Чисто математически это фактически одно и тоже. А алгоритмически?

    Добавлено
    Хотя если копнуть еще глубже, то и Алгоритм Брезенхема основан на идее целочисленного приближения к искомым соотношениям.
    Сообщение отредактировано: shm -
      Цитата shm @
      Чисто математически это фактически одно и тоже. А алгоритмически?

      Разные. В одном используются тригонометрические, в другом - корень. Там и стоимость иная будет.

      Короче эта задача на то, насколько мы знаем, что такое окружность. И чтобы взглянуть на нее с разных сторон, разных свойств, которые можно использовать, чтобы ее отрисовать. Кроме названных двух (пифагор, синус-косинус) знаю еще два. Интересно узнать, какие еще могут быть.
        Цитата Машина @
        Интересно узнать, какие еще могут быть.

        Тысячи их. Влоть до того, что можно банально задать коэффициентны в табличке (тех же синусов и косинусов) и по ним построить приближение искомой окружности, что собственно и делается почти во всех видеоиграх. Причем ,если это сделать правильно, то окружность получится даже красивее, чем по алгоритму Брезенхема.

        Добавлено
        Цитата Машина @
        Кроме названных двух

        Цитата shm @
        алгоритмом Брезенхема

        для рисования окружностей.
        Сообщение отредактировано: shm -
          Цитата shm @
          Влоть до того, что можно банально задать коэффициентны в табличке (тех же синусов и косинусов) и по ним построить приближение искомой окружности, что собственно и делается почти во всех видеоиграх.

          Ну разные методы вычисления син-кос не будем учитывать. Так же, как разные способы умножения, взятия корня и т.п.

          Брезенхем для окружностей - не знал, спасибо! По-быстрому не пойму, какой принцип там используется.
            Машина, принцип примерно такой же, как при рисовании прямой. Только для прямой стоимость прямого и диагонального шагов фиксированы, а для окружности они на каждом шагу меняются (впрочем правило простое, хватает обычного суммирования)
              Цитата amk @
              Машина, принцип примерно такой же, как при рисовании прямой. Только для прямой стоимость прямого и диагонального шагов фиксированы, а для окружности они на каждом шагу меняются (впрочем правило простое, хватает обычного суммирования)

              Это да, просто как в алгоритме определяется, что данный пиксел принадлежит траектории окружности, не понял.
                Уравнение круга можно записать в виде: x^2 + y^2 - r^2 = 0.
                В качестве следующей точки выбирается та, значение в которой ближе к нулю.

                Рисование начинается с точек, находящихся на горизонтальной и вертикальной осях окружности. При рисовании используется свойства симметрии (так что рисовать приходится только 1/8 окружности)
                Загляни лучше в википедию: алгоритм Брезенхэма, там всё подробно описано и для прямых, и для кривых второго порядка. Вообще можно что-то подобное написать и для кривых более высоких порядков, но там выигрыш не очень велик.
                  Цитата amk @
                  Уравнение круга можно записать в виде: x^2 + y^2 - r^2 = 0.
                  В качестве следующей точки выбирается та, значение в которой ближе к нулю.

                  Разве пифагор там используется? Я смотрел конечно. Не нашел ни умножения, ни корней, а как без них?
                    1) Разделяй и властвуй.
                    2) Брезенхема.
                    3) Сплайны.
                    4) Тайтл.
                    Сообщение отредактировано: Pavia -
                      Цитата Машина @
                      Разве пифагор там используется? Я смотрел конечно.
                      Тем не менее в основе там именно уравнение окружности. И тот факт что квадрат можно вычислить используя только сложения.
                      12 = 1
                      22 = 1 + 3
                      32 = 1 + 3 + 5
                      52 = 1 + 3 + 5 + 7
                      и т.д
                      Там конечно не значение функции в точках вычисляется, а некое число, знак которого определяет в каком направлении (прямо или по диагонали) делать следующий шаг. Годится сумма значений функции в точках-претендентах.
                        Цитата amk @
                        Тем не менее в основе там именно уравнение окружности. И тот факт что квадрат можно вычислить используя только сложения.

                        Ага, точно. Спасибо :)

                        Цитата Pavia @
                        1) Разделяй и властвуй.
                        2) Брезенхема.
                        3) Сплайны.
                        4) Тайтл.

                        Можно подробней по пунктам 1 и 4?
                        Сплайны - аппроксимация?
                        1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
                        0 пользователей:


                        Рейтинг@Mail.ru
                        [ Script execution time: 0.0842 ]   [ 16 queries used ]   [ Generated: 28.07.26, 00:06 GMT ]