OpenGL - синусоидальные и косинусные волны в jogl (JAVA) - PullRequest
0 голосов
/ 14 марта 2012

Я пытаюсь закодировать синусоидальную и косинусную волны, которые будут отображаться на моей панели. Я пытаюсь это сделать в своем классе EventListener, создав метод drawCurves ().

CurvesGLEventListener:

package firstAttempt;

import javax.media.opengl.GL;
import javax.media.opengl.GLAutoDrawable;
import javax.media.opengl.GLEventListener;
import javax.media.opengl.glu.GLU;

/**
 * For now we will focus only two of the GLEventListeners init() and display().
 */
public class CurvesGLEventListener implements GLEventListener {

    /**
     * Interface to the GLU library.
     */
    private GLU glu;

    /**
     * Take care of initialization here.
     */
    public void init(GLAutoDrawable drawable) {
        GL gl = drawable.getGL();
        glu = new GLU();

        gl.glClearColor(0.0f, 0.0f, 0.0f, 1.0f);

        gl.glViewport(0, 0, 900, 550);
        gl.glMatrixMode(GL.GL_PROJECTION);
        gl.glLoadIdentity();
        glu.gluOrtho2D(0.0, 900.0, 0.0, 550.0);
    }

    /**
     * Take care of drawing here.
     */
    public void display(GLAutoDrawable drawable) {

        GL gl = drawable.getGL();

        drawCurves();

    }

    public void reshape(GLAutoDrawable drawable, int x, int y, int width,
            int height) {
    }

    public void displayChanged(GLAutoDrawable drawable,
            boolean modeChanged, boolean deviceChanged) {
    }
    private void drawCurves() {
            /**
             * Here is where I need to implement the method
             **/
    }
}

Мне сообщили, что с этой точки зрения я должен построить свою волну, используя:

(x, (Math.sin(x/60.0)*100.0))
(x, (Math.cos(x/60.0)*100.0))

Не могли бы вы помочь мне реализовать этот метод? Хорошей идеей является то, что метод принимает аргумент (например, int whichOne), чтобы объявить, какая волна рисуется каждый раз.

1 Ответ

0 голосов
/ 14 марта 2012

Ну, я не собираюсь писать код для вас, но этот , похоже, имеет способ с использованием сплайнов Безье. Конечно, это в Lua, но вы должны иметь возможность транспонировать его в методы Java.

...