Модераторы: Rickert, Alexeis, BorisVorontsov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Построение сетки дугообразной формы, Построить сетку по форме объекта 
V
    Опции темы
explorer
Дата 14.5.2009, 15:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 104
Регистрация: 26.2.2008

Репутация: нет
Всего: 2



Доброго времени суток, знатоки!
Возникла довольно непростая задача. Требуется построить сетку в виде сегмента кольца. 
У самого сегмента известны лишь границы (прямоугольник, в который этот сегмент вписан) и набор точек, из которых он состоит. Точки заданы неравномерно (интервал может варьироваться от пикселя до 50-60). Известна толщина кольца и внешний радиус. 

Подскажите, пожалуйста, как можно "натянуть" сетку на такой объект? Естественно, объекты могут быть с произвольными параметрами. 
Поиск по форуму не помог. 


--------------------
 
PM MAIL WWW ICQ   Вверх
C/L
Дата 15.5.2009, 10:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 107
Регистрация: 31.7.2004
Где: Самара

Репутация: нет
Всего: 1



Посмотри вот этот фрагмент из моей демки:
Код

void TPRIMITIVE::ToTor(float r){
    for(TVERTARR::iterator it = verts.begin(); it != verts.end(); ++it){
        TVECTOR v = (*it).pos;
        float alpha = 2 * M_PI * v.x;
        float betta = 2 * M_PI * v.y;
        (*it).pos.x = 1 + r * cosf(betta)*sinf(alpha);
        (*it).pos.y = 1 + r * cosf(betta)*cosf(alpha);
        (*it).pos.z = r * sinf(betta);
        (*it).norm.x = cosf(betta)*sinf(alpha);
        (*it).norm.y = cosf(betta)*cosf(alpha);
        (*it).norm.z = sinf(betta);
    }
}

Здесь сетка переделывается в тор по координатам точек x и y. Координаты точек сетки по z не учитываются. Координаты должны лежать в диапазоне от 0 до 1. Тогда получится полный тор или кольцо, как вы его называете. Если нужен только сегмент тора (например, половина) то надо ограничить координаты от 0 до 0,5. Если реальные координаты больше этих значений, то можно просто промасштабировать их умножив на какой нибудь коэффициент.
PM MAIL WWW ICQ   Вверх
explorer
Дата 19.5.2009, 08:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 104
Регистрация: 26.2.2008

Репутация: нет
Всего: 2



Спасибо, идея очень хорошая. 
Еще сам покопался, нашел воможность построения сеток любой формы с помощью OpenGL. Смотрите в сторону Evaluators, если кому интересно. Единственный минус заключается в том, что данный метод не позволяет рисовать сетку различными цветами (по горизонтали одним, по вертикали другим). Придется строить 2 сетки.
Можно посмотреть информацию здесь.
--------------------
 
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Вы можете найти полезным что...
Alexeis
Rickert
  • Английская документация по DirectX лежит где-то здесь.
  • Английская документация по OpenGL лежит где-то там.
  • Гейм-дев у нас обсуждают где-то тут

Ждём вас! С уважением, Alexeis, Rickert.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Мультимедия, OpenGL/DirectX | Следующая тема »


 




[ Время генерации скрипта: 0.0595 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.