Jogl-scaling

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

JOGL-スケーリング

この章では、JOGLを使用してオブジェクトを拡大縮小する方法、つまりオブジェクトのサイズを拡大または縮小する方法について説明します。

オブジェクトのスケーリングは、 GLMatrixFunc インターフェイスの* glScalef(float x、float y、float z)*メソッドを使用して行われます。 このメソッドは、x、y、z軸に沿ってそれぞれスケール係数を指定する3つの浮動小数点パラメーターを受け入れます。

たとえば、次のプログラムでは、三角形が50%に縮小されます。 ここでは、値50がすべての軸に沿ってパラメーターとして渡されます。

私たちは三角形をスケーリングするためにプログラムを見てみましょう-

import javax.media.opengl.GL2;
import javax.media.opengl.GLAutoDrawable;
import javax.media.opengl.GLCapabilities;
import javax.media.opengl.GLEventListener;
import javax.media.opengl.GLProfile;
import javax.media.opengl.awt.GLCanvas;

import javax.swing.JFrame;

public class Scaling implements GLEventListener {

   @Override

   public void display( GLAutoDrawable drawable ) {

      final GL2 gl = drawable.getGL().getGL2();
      gl.glScalef( 0.50f,0.25f,0.50f );
      gl.glBegin( GL2.GL_TRIANGLES );

     //Drawing Using Triangles
      gl.glColor3f( 1.0f, 0.0f, 0.0f );  //Red
      gl.glVertex3f( 0.5f,0.7f,0.0f );   //Top

      gl.glColor3f( 0.0f,1.0f,0.0f );    //blue
      gl.glVertex3f( -0.2f,-0.50f,0.0f );//Bottom Left

      gl.glColor3f( 0.0f,0.0f,1.0f );    //green
      gl.glVertex3f( 0.5f,-0.5f,0.0f );  //Bottom Right

      gl.glEnd();
   }

   @Override
   public void dispose( GLAutoDrawable arg0 ) {
     //method body
   }

   @Override
   public void init( GLAutoDrawable arg0 ) {
     //method body
   }

   @Override
   public void reshape( GLAutoDrawable arg0, int arg1, int arg2, int arg3, int arg4 ) {
     //method body
   }

   public static void main( String[] args ) {

     //getting the capabilities object of GL2 profile
      final GLProfile profile = GLProfile.get( GLProfile.GL2 );
      GLCapabilities capabilities = new GLCapabilities(profile);

     //The canvas
      final GLCanvas glcanvas = new GLCanvas( capabilities );
      Scaling scaling = new Scaling();
      glcanvas.addGLEventListener( scaling );
      glcanvas.setSize( 400, 400 );

     //creating frame
      final JFrame frame  = new JFrame (" Dimnished Triangle (Scaling )");

     //adding canvas to it
      frame.getContentPane().add(glcanvas);
      frame.setSize(frame.getContentPane().getPreferredSize());
      frame.setVisible(true);

   }//end of main

}//end of classimport javax.media.opengl.GL2;

上記のプログラムをコンパイルして実行すると、次の出力が得られます。 ここでは、TriangleColor.javaによって生成された元の三角形と比較して、減少した三角形を観察できます-

スケーリング