На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела "Программирование графики"
1) Данный раздел предназначен для обсуждения проблем, возникающих при программировании задач, связанных с чтением, сохранением, обработкой, созданием, отрисовкой графической информации (в том числе - 3D [OpenGL, Direct3D] и анимации [в т.ч. VFW, DirectShow, OpenDML]).
Флэш обсуждают здесь!.

2) Если вы хотите получить совет для конкретной платформы/языка программирования, обязательно укажите их в вопросе.

3) Уважаемые новички! Мы приветствуем Ваше желание научить всех посетителей раздела правильному программированию. Но огромная просьба, перед тем, как писать поучения в старых (последний ответ - "старее" месяца, а особенно, если вопрошавший не появляется на форуме уже не первый месяц, в чем можно убедиться в его профиле) темах, хорошо подумать, будет ли кому-нибудь, кроме Вас cамих, это интересно.



Ваше мнение о модераторах: user posted imageBarazuk, user posted imageOpenGL, user posted imageMikle
Модераторы: OpenGL, Mikle
  
> Параллелепипед
    Есть небольшая задача построить параллелепипед с развертки как на фото, хоть в GLU и нет готовых лыж для построения параллелепипеда, строю его так:
    ExpandedWrap disabled
        void piped(GLfloat a, GLfloat b, GLfloat c)
        {
          glShadeModel(GL_FLAT);
          glPolygonMode(GL_FRONT_AND_BACK,GL_FILL);
          
          glBegin(GL_QUAD_STRIP);
            glVertex3f(-a/2,-b/2,-c/2);
            glVertex3f(-a/2,-b/2, c/2);
            glVertex3f(-a/2, b/2,-c/2);
            glVertex3f(-a/2, b/2, c/2);
            
            glVertex3f( a/2, b/2,-c/2);
            glVertex3f( a/2, b/2, c/2);
            
            glVertex3f( a/2,-b/2,-c/2);
            glVertex3f( a/2,-b/2, c/2);
            
            glVertex3f(-a/2,-b/2,-c/2);
            glVertex3f(-a/2,-b/2, c/2);
          glEnd();
          
          glBegin(GL_QUADS);
            glVertex3f(-a/2,-b/2, c/2);
            glVertex3f(-a/2, b/2, c/2);
            glVertex3f( a/2, b/2, c/2);
            glVertex3f( a/2,-b/2, c/2);
            
            glVertex3f(-a/2,-b/2,-c/2);
            glVertex3f(-a/2, b/2,-c/2);
            glVertex3f( a/2, b/2,-c/2);
            glVertex3f( a/2,-b/2,-c/2);
          glEnd();  
        }

    Но не пойму как построить внутренность, как ее нужно строить?
    Прикреплённая картинка
    Прикреплённая картинка
      Цитата skinex @
      Есть небольшая задача построить параллелепипед с развертки как на фото...
      Прикреплённая картинка
      Прикреплённая картинка
      Если это - развёртка, то хоть руками набросайте желаемый объект (прикрепите здесь картинку), а то непонятно, что сие за параллелепипед? :no-sad:
        Размерность указать?
          Вот как-то так, это проекция самой фигуры, вид сверху.
          Прикреплённая картинка
          Прикреплённая картинка
            Имелось ввиду, чтобы вы набросали 3D-изображение объекта (параллелепипеда?). А то у вас в тексте идёт то 'развёртка', то 'проекция'. :yes-sad:
              Вот так ведь выглядит обычный параллелепипед, а вот внутри него, должно быть то что подано выше, это выходит как такой домик, внутри параллелепипеда находятся те перегородки, с теми размерами.
              Прикреплённая картинка
              Прикреплённая картинка
                Цитата skinex @
                Вот как-то так, это проекция самой фигуры, вид сверху.
                Как-то несогласованы размеры. :blush: 6 как 10, а 10,5 вообще меньше 6 выглядит. :) Может это и не суть, но всё же несложно ж было б натуральнее нарисовать?..
                Впрочем, в итоге параллелепипед - это как план квартиры, а перегородки на схеме с размерами - как стены комнат или как?
                  Да как стены комнат, рисовал я очень на глаз, а размеры можно и входными данными сделать.
                    Ну тогда просто набросали бы три функции (на основе вами уже написанного glBegin(GL_QUADS); ), кои рисовали бы прямоугольники в плоскостях XY, YZ , ZX со входными значениями (x0,y0,z0) да размерами стены. А там бы и получилось быстро их вызвать 3 раза (у вас 3 стены) и всё. Ещё параметром можно цвет задать, красоты ради.
                    Типа такого:
                    ExpandedWrap disabled
                      void PaintWallZX( float x0,float y0,float z0, float lenZ,float lenX)
                      {
                          glBegin(GL_QUADS);
                            glVertex3f( x0, y0, z0);
                            ...
                            glVertex3f( x0, y0, z0+lenZ);
                          glEnd();
                      }
                      А параметры lenX и lenZ, что именно задают?
                        Цитата skinex @
                        А параметры lenX и lenZ, что именно задают?
                        Очевидно длину стен. (высоту, если вдоль Z).
                          Как я понял полный код выглядит так:
                          ExpandedWrap disabled
                            void PaintWallZX( float x0,float y0,float z0, float lenZ,float lenX)
                            {
                                glBegin(GL_QUADS);
                                  glVertex3f( x0, y0, z0);
                                  glVertex3f( x0+lenX, y0, z0);
                                  glVertex3f( x0, y0, z0+lenZ);
                                glEnd();
                            }

                          Это выходит лишь в плоскоcти XZ, и аналогичное проделать с XY и YZ?

                          Добавлено
                          Все равно не пойму как оно может быть привязано к граням, и как окончательно строятся эти перегородки.. :wall: :wall: :wall:
                          0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                          0 пользователей:


                          Рейтинг@Mail.ru
                          [ Script execution time: 0,1298 ]   [ 22 queries used ]   [ Generated: 28.04.24, 07:17 GMT ]