JOGL - Chia tỷ lệ

Chương này hướng dẫn bạn cách chia tỷ lệ một đối tượng tức là., Tăng hoặc giảm kích thước của một đối tượng bằng JOGL.

Việc chia tỷ lệ một đối tượng được thực hiện bằng cách sử dụng glScalef(float x, float y, float z) phương pháp của GLMatrixFuncgiao diện. Phương pháp này chấp nhận ba tham số dấu phẩy động, bằng cách sử dụng chúng tôi chỉ định các hệ số tỷ lệ dọc theo các trục x, y và z tương ứng.

Ví dụ, trong chương trình sau đây, một tam giác được giảm đi 50%. Ở đây, giá trị 50 được truyền dưới dạng tham số dọc theo tất cả các trục.

Chúng ta hãy xem qua chương trình để chia tỷ lệ một tam giác -

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;

Khi biên dịch và thực hiện chương trình trên, chúng ta nhận được kết quả sau. Tại đây, bạn có thể quan sát thấy một hình tam giác nhỏ hơn so với hình tam giác ban đầu do TriangleColor.java tạo ra -