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 -