Добавить синусоиду в треугольную сетку - PullRequest
0 голосов
/ 04 ноября 2011

может кто-нибудь помочь мне добавить волну греха на мою треугольную сетку, чтобы помочь мне получить волновой эффект.

for(int i = 0; i<150; i++){
        for(int j = 0; j<150; j++){
            grid[i][j] = 0;
            glBegin(GL_LINE_LOOP);
                glVertex3f(i*3,grid[i][j],j*3);
                glVertex3f(i*3,grid[i][j],j*3+3);
                glVertex3f(i*3+3,grid[i][j],j*3);
            glEnd();
            glBegin(GL_LINE_LOOP);
                glVertex3f(i*3,grid[i][j],j*3+3);
                glVertex3f(i*3+3,grid[i][j],j*3+3);
                glVertex3f(i*3+3,grid[i][j],j*3);
            glEnd();
        }

    }

Если я правильно понял, все, что мне нужно сделать, это добавить грехзначение в сетку [я] [J], я прав?Все ли значения y должны быть установлены в одну и ту же сетку [i] [j]?

1 Ответ

0 голосов
/ 04 ноября 2011

Это действительно зависит от того, чего вы пытаетесь достичь.

Пытаетесь ли вы создать поверхность, которая, если смотреть на нее, выглядит как синусоида?Если это так, то при условии, что вы модулируете ось Y, а ось Z не играет никакой роли, вам нужно определить частоту, которую вы хотите использовать.т. е. y = A * синус (w * x + p), где A - амплитуда, w - угловая частота, а p - фаза.

Вам также нужно будет учитывать количество точек выборки на xось, чтобы он не выглядел псевдонимом.Синус - непрерывная функция, но вы берете только 150 сэмплов.

Также вы можете пересмотреть, как рассчитать и нарисовать вашу последнюю сетку треугольника.Ваш текущий код не самый эффективный, потому что вы пересчитываете вашу сетку каждый кадр.Возможно, вы захотите инициализировать сетку, а затем нарисовать треугольные полосы и т. Д. В Интернете много обсуждается это.

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