Как я могу нарисовать половину тора? - PullRequest
1 голос
/ 27 июня 2009

Я учу себя программированию игр OpenGL из обучающих программ в сети. Я хочу нарисовать половину тора, чтобы он выглядел как ворота. Как я могу это сделать, кто-нибудь знает математику? В большинстве уроков онлайн показано, как нарисовать полный тор.

Ответы [ 2 ]

3 голосов
/ 17 июля 2009

Вот ответ, который адаптирует учебник OpenGL Redbook torus.c

Вот их код для рисования тора:

static void torus(int numc, int numt)
{
   int i, j, k;
   double s, t, x, y, z, twopi;

   twopi = 2 * PI_;
   for (i = 0; i < numc; i++) {
      glBegin(GL_QUAD_STRIP);
      for (j = 0; j <= numt; j++) {
         for (k = 1; k >= 0; k--) {
            s = (i + k) % numc + 0.5;
            t = j % numt;

            x = (1+.1*cos(s*twopi/numc))*cos(t*twopi/numt);
            y = (1+.1*cos(s*twopi/numc))*sin(t*twopi/numt);
            z = .1 * sin(s * twopi / numc);
            glVertex3f(x, y, z);
         }
      }
      glEnd();
   }
}

То, что это делает, рисует объем вращения. Вы можете использовать эту же идею, за исключением остановки этого цикла на полпути (т.е. for(i = 0; i < numc/2; i++) )

2 голосов
/ 06 июля 2009

Установите плоскость отсечения надлежащим образом ([0,0,1,0] должно работать, предполагая, что + Z 'вверх') и нарисуйте полный тор.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...