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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Необходимо сделать отверстие в детали на OpenGL 
:(
    Опции темы
russians
Дата 27.11.2006, 20:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Как сделать в детали отверстие (цилиндр) от одной плоскости до другой без разбиения плоскости на два полукруга?
PM MAIL   Вверх
AltX
Дата 27.11.2006, 21:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Может с этим попробуешь разобраться.
Вроде то, что тебе надо описано(почти), но exe-шники у него как-то плохо работают.
http://opengl.org.ru/books/open_gl/chapter4.12.html
вот ссылка на оглавление этой книги.
http://opengl.org.ru/books/open_gl/
PM MAIL   Вверх
russians
Дата 28.11.2006, 20:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



А если не использовать трафарет?
Можно как-нибудь разрещать деталь, например на два куска с полуокружностью на каждом, только вот как это сделать на выпуклом полигоне?
PM MAIL   Вверх
AltX
Дата 28.11.2006, 20:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Попробуй поискать матерьял по Tess-обьектам. Помоему, они в <gl/glu.h>.
У меня есть пример по работе с ними но он в Delphi.
Вроде с их помощью можно указывать отверстия в фигурах.

Присоединённый файл ( Кол-во скачиваний: 12 )
Присоединённый файл  Ex60.rar 6,50 Kb
PM MAIL   Вверх
russians
Дата 4.12.2006, 18:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Господа, бьюсь об стену уже 12 дней с этими дырами, и никакой путёвой информации по этому поводу нет...
Вот цилиндр:
for (i=1;i<2*n;i++)
{
    glBegin(GL_POLYGON); // цилиндр - 1
       glNormal3f(0,-0.15-0.05*sin((i+0.5)*PI/n),-0.05+0.05*cos((i+0.5)*PI/n));
       glVertex3f(0.7-0.05*sin(i*PI/n),0.225+0.05*cos(i*PI/n),0.2);
       glVertex3f(0.7-0.05*sin((i+1)*PI/n),0.225+0.05*cos((i+1)*PI/n),0.2);
       glVertex3f(0.7-0.05*sin((i+1)*PI/n),0.225+0.05*cos((i+1)*PI/n),0.3);
       glVertex3f(0.7-0.05*sin(i*PI/n),0.225+0.05*cos(i*PI/n),0.3);
    glEnd();
}


glBegin(GL_POLYGON); //полигон, в котором нужно сделать дыру к цилиндру, то есть чтобы было как отверстие 
glNormal3f(0.1,0,0.3);
glVertex3f(0.1,0,0.3);
glVertex3f(0.9,0,0.3);
glVertex3f(0.9,0.3,0.3);
glVertex3f(0.75,0.45,0.3);
glVertex3f(0,0.45,0.3);
glVertex3f(0,0,0.3);
glEnd();

Господа, как это сделать через интегрирование или трафареты??? Горю...  smile 

Это сообщение отредактировал(а) russians - 4.12.2006, 19:05
PM MAIL   Вверх
Arks
Дата 6.12.2006, 22:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Поищи в инете, книгу М. Краснов "Графика в проектах Delphi". Там есть пара примеров, где интегрированнием вырезается. Может его найду у себя...

ПРАВКА:
Нашёл. Вот пример кода из главы 5:
Код
procedure Hole (Rad : GLFloat);
begin
  glBegin(GL_QUAD_STRIP);
  For i := 0 to 2 * Level - 1 do begin
    glVertex3f(Rad * sin (Pi / (4 * Level) * i - Pi /4),
               Rad * cos (Pi / (4 * Level) * i - Pi /4), 0.0);
    glVertex3f(-Rad + Rad * i / 10, Rad, 0.0);
    glVertex3f(Rad * sin (Pi / (4 * Level) * (i + 1) - Pi /4),
               Rad * cos (Pi / (4 * Level) * (i + 1) - Pi /4), 0.0);
    glVertex3f(-Rad + Rad * (i + 1) / 10, Rad, 0.0);
  end;
  glEnd;

  glBegin(GL_QUAD_STRIP);
  For i := 0 to 2 * Level - 1 do begin
    glVertex3f(Rad * sin (Pi / (4 * Level) * i + Pi / 4),
               Rad * cos (Pi / (4 * Level) * i + Pi / 4), 0.0);
    glVertex3f(Rad, Rad - Rad * i / 10, 0.0);
    glVertex3f(Rad * sin (Pi / (4 * Level) * (i + 1) + Pi / 4),
               Rad * cos (Pi / (4 * Level) * (i + 1) + Pi / 4), 0.0);
    glVertex3f(Rad, Rad - Rad * (i + 1)/ 10, 0.0);
  end;
  glEnd;

  glBegin(GL_QUAD_STRIP);
  For i := 0 to 2 * Level - 1 do begin
    glVertex3f(Rad * sin (Pi / (4 * Level) * i - 3 * Pi / 4 ),
               Rad * cos (Pi / (4 * Level) * i - 3 * Pi / 4), 0.0);
    glVertex3f(-Rad, -Rad + Rad * i / 10, 0.0);
    glVertex3f(Rad * sin (Pi / (4 * Level) * (i + 1) - 3 * Pi / 4 ),
               Rad * cos (Pi / (4 * Level) * (i + 1) - 3 * Pi / 4), 0.0);
    glVertex3f(-Rad, -Rad + Rad * (i + 1) / 10, 0.0);
  end;
  glEnd;

  glBegin(GL_QUAD_STRIP);
  For i := 0 to 2 * Level - 1 do begin
    glVertex3f(Rad * sin (Pi / (4 * Level) * i + 3 * Pi / 4 ),
               Rad * cos (Pi / (4 * Level) * i + 3 * Pi / 4), 0.0);
    glVertex3f(Rad - Rad * i / 10, -Rad, 0.0);
    glVertex3f(Rad * sin (Pi / (4 * Level) * (i + 1) + 3 * Pi / 4),
               Rad * cos (Pi / (4 * Level) * (i + 1) + 3 * Pi / 4), 0.0);
    glVertex3f(Rad - Rad * (i + 1) / 10, -Rad, 0.0);
  end;
  glEnd;
end;


А также я присоединил пример из главы 2. Там в 2д рисуется квадрат с вырезанным кругом внутри.

Это сообщение отредактировал(а) Arks - 6.12.2006, 22:30

Присоединённый файл ( Кол-во скачиваний: 12 )
Присоединённый файл  Ex36.rar 7,95 Kb
PM MAIL ICQ Skype MSN   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Вы можете найти полезным что...
Alexeis
Rickert
  • Английская документация по DirectX лежит где-то здесь.
  • Английская документация по OpenGL лежит где-то там.
  • Гейм-дев у нас обсуждают где-то тут

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

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


 




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


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

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