На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: ANDLL, ALXR
  
> Нарисовать окружность на несколько способов
   
На сколько способов вы можете нарисовать окружность? (читай пост)
Гости не могут просматривать результаты голосования.
Гости не могут голосовать 
    На каком-нибудь языке надо нарисовать окружность. Для вывода графики доступно только рисование отрезка. Окружность - с приемлемой для человеческого глаза точностью.

    Решения пишите в спойлере (описательно, не код).
      Машина, а как рисовать окружности на способы?.. :-?
        Неправильно выразил, поправьте плз :D
          Вопрос черезчур абстрактный. Например, поддерживает ли устройство вывода полярные координаты? Да и вообще, с математической точки зрения при "Для вывода графики доступно только рисование отрезка" мы всегда получаем многоугольник :)
            В общем случае на поставленный вопрос, есть только один ответ: "1 способ - отрезками" 8-)
              двумя - ещё точками.
                Цитата Vesper @
                двумя - ещё точками.

                Не, у нас по условию доступны только отрезки. Правда, очень короткий отрезок будет точкой, но рисовать-то ее мы все равно будем отреком :)
                  Цитата OpenGL @
                  Не, у нас по условию доступны только отрезки. Правда, очень короткий отрезок будет точкой, но рисовать-то ее мы все равно будем отреком
                  Очень которкий отрезок будет отрезком, потому что для него мы все равно укажем две точкии у него все равно будет хоть единичная но длина... :rolleyes:
                  Сообщение отредактировано: fatalist -
                    Где-то в этом коде должна будет фигурировать буква "Пи...", я так щетаю... :crazy:
                      Цитата fatalist @
                      Очень которкий отрезок будет отрезком, потому что для него мы все равно укажем две точкии у него все равно будет хоть единичная но длина...

                      Но выглядеть-то он будет точкой :D
                        1) оператор отрисовки окружности :D
                        2) x(g) , y(g)
                        3) (x - h)^2 + (y - k)^2 = r^2
                          Цитата OpenGL @
                          Но выглядеть-то он будет точкой
                          С нулевой толщиной, нет... а про толщину гразговора не было, так что считаем ее нулевой :tong:
                            Цитата Мяут-Настоящий @
                            Да и вообще, с математической точки зрения при "Для вывода графики доступно только рисование отрезка" мы всегда получаем многоугольник :)

                            Цитата Машина @
                            Окружность - с приемлемой для человеческого глаза точностью.



                            Цитата SVK @
                            1) оператор отрисовки окружности :D
                            2) x(g) , y(g)
                            3) (x - h)^2 + (y - k)^2 = r^2

                            Решение пишите в спойлере. И что за x(g), y(g) ? Оператора окружности нет, будь внимательней :rtfm:

                            Добавлено
                            Цитата Мяут-Настоящий @
                            Например, поддерживает ли устройство вывода полярные координаты?

                            Ну не мудри, обычное рисование на матричном экране (x, y).
                              А нарисовать прямую и сказать, что это "окружность, вид с боку" не вкатит?
                                :no:

                                Добавлено
                                Также можно исключить вариант "Забить вручную координаты" как слишком банальный. Надо использовать алгоритм :rolleyes:
                                  Постановка вопроса очень не точная:
                                  Ну допустим с алгоритмом Брезенхема все понятно.
                                  А допустим рисование как
                                  (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.1206 ]   [ 16 queries used ]   [ Generated: 28.07.26, 00:04 GMT ]