本文整理汇总了Java中javax.media.opengl.glu.GLU.gluProject方法的典型用法代码示例。如果您正苦于以下问题:Java GLU.gluProject方法的具体用法?Java GLU.gluProject怎么用?Java GLU.gluProject使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类javax.media.opengl.glu.GLU
的用法示例。
在下文中一共展示了GLU.gluProject方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: getProjectionCoordinates
import javax.media.opengl.glu.GLU; //导入方法依赖的package包/类
/**
* Gets the projection coordinates of the position in model-view based on the camera
* @param gl open gl context
* @param position any position in 3D
* @param camera the camera
* @return array of the coordinates, 0th coordinate is x, 1st coordinate is y, Result can be null if the point is behind
* the camera
*/
public static ScreenCoordinates getProjectionCoordinates(GL2 gl, Vector3d position, Camera camera) {
Vector3d viewVector = camera.getOppositeOrientation().getN();
Vector3d diffVector = position.subtract(camera.getPosition());
if (viewVector.dot(diffVector) < 0) { // object is in front of the camera
double modelView[] = new double[16];
double projection[] = new double[16];
int viewport[] = new int[4];
gl.glGetDoublev(GL2.GL_MODELVIEW_MATRIX, modelView, 0);
gl.glGetDoublev(GL2.GL_PROJECTION_MATRIX, projection, 0 );
gl.glGetIntegerv(GL2.GL_VIEWPORT, viewport, 0 );
double[] my2DPoint = new double[4];
GLU glu = new GLU();
glu.gluProject(position.getX(), position.getY(), position.getZ(),
modelView, 0, projection, 0, viewport, 0, my2DPoint, 0);
return new ScreenCoordinates(my2DPoint);
}
return null;
}
示例2: getScreenCoordinates
import javax.media.opengl.glu.GLU; //导入方法依赖的package包/类
public static Location getScreenCoordinates(GL gl, GLU glu, Location worldPosition, Location store) {
if (store == null) {
store = new Location(0,0,0);
}
// Modelview matrix
DoubleBuffer mvBuffer = DoubleBuffer.allocate(16);
gl.glGetDoublev(GL.GL_MODELVIEW_MATRIX, mvBuffer);
// Projection_matrix
DoubleBuffer prBuffer = DoubleBuffer.allocate(16);
gl.glGetDoublev(GL.GL_PROJECTION_MATRIX, prBuffer);
// Viewport matrix
IntBuffer vpBuffer = IntBuffer.allocate(16);
gl.glGetIntegerv(GL.GL_VIEWPORT, vpBuffer);
DoubleBuffer result = DoubleBuffer.allocate(3);
glu.gluProject(worldPosition.x,
worldPosition.y,
worldPosition.z,
mvBuffer,
prBuffer,
vpBuffer,
result);
store = new Location(result.get(0), result.get(1), result.get(2));
return store;
}
示例3: get2DPoint
import javax.media.opengl.glu.GLU; //导入方法依赖的package包/类
private Point get2DPoint(Vector3f coords, int[] viewport,double[] modelViewMatrix, double[] projectionMatrix, GLU glu) {
double coordsTransformed[] = new double[3];
glu.gluProject(
coords.getX(),
coords.getY(),
coords.getZ(),
modelViewMatrix, 0,
projectionMatrix, 0,
viewport, 0,
coordsTransformed, 0);
coordsTransformed[1] = viewport[3] - coordsTransformed[1] - 1;
return new Point((int) coordsTransformed[0], (int) coordsTransformed[1]);
}