Jogl-transformation

提供:Dev Guides
移動先:案内検索

JOGL-変換

OpenGLは、オブジェクトへの色の適用、スケーリング、照明、オブジェクトの回転など、より多くの機能を提供します。 この章では、JOGLを使用したオブジェクトのいくつかの変換について説明します。

ウィンドウ上のオブジェクトの移動

前の章で、線を描画し、単純な線を使用してさまざまな形状を描画するプログラムについて説明しました。 この方法で作成された図形は、ウィンドウ内の任意の場所に表示できます。 メソッド* glTranslatef(float x、float y、float z)*を使用して行われます。

このメソッドは、 javax.media.opengl.fixedfunc パッケージに含まれる GLMatrixFunc インターフェースに属します。

GLMatrixFuncインターフェース

インターフェース-GLMatrixFunc

パッケージ-javax.media.opengl.fixedfunc

次の表は、このインターフェイスのいくつかの重要なメソッドを示しています-

Sr.No. Methods and Description
1

void glRotatef(float angle, float x, float y, float z)

現在のマトリックスを回転します。

2

void glScalef(float x, float y, float z)

現在のマトリックスのスケーリングに使用されます。

3

void glTranslatef(float x, float y,float z)

現在のマトリックスを変換するために使用されます。

4

void glLoadIdentity()

現在の行列に単位行列をロードします。

  • glTranslate()メソッドは、座標系の原点をパラメーター(x、y、z)で指定された点に移動し、 glTranslate()*メソッドに次のように渡されます。

引数。 未変換の座標系を保存および復元するには、* glPushMatrix()および glPopMatrix()*メソッドが使用されます。

gl.glTranslatef(0f, 0f, -2.5f);
  • glTranslate()が使用されるたびに、画面上のコンポーネントの位置が変更されます。 したがって、 *GLEventListener インターフェイスの* reshape()*メソッドをオーバーライドし、OpenGLビューポートと投影行列を初期化する必要があります。

次のコードは、ビューポートと投影行列を初期化するテンプレートを示しています-

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

  //TODO Auto-generated method stub
   final GL2 gl = drawable.getGL().getGL2();

  //get the OpenGL 2 graphics object
   if(height <= 0) height = 1;

  //preventing devided by 0 exception height = 1;
   final float h = (float) width/(float) height;

  //display area to cover the entire window
   gl.glViewport(0, 0, width, height);

  //transforming projection matrix
   gl.glMatrixMode(GL2.GL_PROJECTION);
   gl.glLoadIdentity();
   glu.gluPerspective(45.0f, h, 1.0, 20.0);

  //transforming model view gl.glLoadIdentity();
   gl.glMatrixMode(GL2.GL_MODELVIEW);
   gl.glLoadIdentity();
}