Нарисовать полусферу(Open GL)

Тема в разделе "WASM.OpenGL", создана пользователем nobodyzzz, 7 май 2006.

  1. nobodyzzz

    nobodyzzz New Member

    Публикаций:
    0
    Регистрация:
    13 июл 2005
    Сообщения:
    475
    Приветствую тебе о всезнающий All!

    Может подскажет кто алгоритм рисования полусферы.

    Поиск пока ничего конкретного не дал(хотя я наверно плохо ищу). Я так понял надо копать в стороноу триангуляции. Хотя в glu можно рисовать сферу может через него что-ниить можно сделать.

    Заранее благодарен.
     
  2. r90

    r90 New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2005
    Сообщения:
    898
    возьми сорцы glut и посмотри как там рисуются всякие сферы/цилиндры/чайники.
     
  3. nobodyzzz

    nobodyzzz New Member

    Публикаций:
    0
    Регистрация:
    13 июл 2005
    Сообщения:
    475
    Вроде бы нашел то что надо(прощу прощения за Pascal):

    "Рано или поздно вам потребуется узнать, как в OpenGL можно получить вырезку пространственных фигур, например, полусферу. Следующий пример (подкаталог Ex38) поможет узнать, как это делается. В нем рисуется четверть сферы.

    Для вырезки части пространства используется новая для нас команда glClipPlane. Для вырезки можно использовать несколько плоскостей, эта команда идентифицирует используемые плоскости. Первый аргумент -символическое имя плоскости вырезки, второй - адрес массива, задающего эту плоскость. Символические имена начинаются с GL_CLIP_PLANE, дальше следует цифра, нумерация начинается с нуля.

    При каждой вырезке отсекается полупространство, массив задает вектор, определяющий остающуюся часть. Вектор не должен быть обязательно перпендикулярен осям, как в нашем примере.

    Для получения четверти сферы проделываем две вырезки: сначала обрезаем нижнее полупространство, удаляя все вершины с отрицательным значением координаты Y, затем отсекаем левое полупространство, т. e. удаляются вершины с отрицательным значением координаты X:



    const eqn: Array [0.. 3] of GLdouble = (0. 0, 1. 0, 0. 0, 0. 0);

    eqn2: Array [0.. 3] of GLdouble = (1. 0, 0. 0, 0. 0, 0. 0);

    // удаление нижней половины, для у < 0

    glClipPlane (GL_CLIP_PLANEO, @eqn); // идентифицируем плоскость отсечения

    glEnable (GL_CLIP_PLANEO); // включаем первую плоскость отсечения

    // удаление левой половины, для x < 0

    glClipPlane (GL_CLIP_PLANE1, @eqn2);

    glEnable (GL_CLIP_PLANE1); // включаем вторую плоскость отсечения



    url : http://ogoncharenko.narod.ru/DelphiMain/Delphi_OpenGL/Chapter3/1.htm"
     
  4. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    nobodyzzz



    Фигня это все. Построй сетку в сферической системе координат - вот тебе и будет сфера (полусфера)
     
  5. nobodyzzz

    nobodyzzz New Member

    Публикаций:
    0
    Регистрация:
    13 июл 2005
    Сообщения:
    475


    Ну фигня не фигня, а это я так понял самый простой вариант, а мне надо бы по-быстрее сие состряпать ибо делаю не себе(курсач заказали=)). Хотя, все равно, спасибо за ответ