[Bprocessor-commit] gl/src/net/sourceforge/bprocessor/gl/view Transformation.java,NONE,1.1 AbstractV
Status: Pre-Alpha
Brought to you by:
henryml
From: Michael L. <he...@us...> - 2005-08-26 14:48:25
|
Update of /cvsroot/bprocessor/gl/src/net/sourceforge/bprocessor/gl/view In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv26667/src/net/sourceforge/bprocessor/gl/view Modified Files: AbstractView.java View.java View3D.java Added Files: Transformation.java Log Message: Added Transformation that implements transforming between model and screen coordinates. Index: AbstractView.java =================================================================== RCS file: /cvsroot/bprocessor/gl/src/net/sourceforge/bprocessor/gl/view/AbstractView.java,v retrieving revision 1.11 retrieving revision 1.12 diff -C2 -d -r1.11 -r1.12 *** AbstractView.java 25 Aug 2005 14:34:07 -0000 1.11 --- AbstractView.java 26 Aug 2005 14:48:15 -0000 1.12 *************** *** 106,109 **** --- 106,118 ---- protected IntBuffer selectBuffer; + /** The modelview matrix used for rendering the scene */ + protected double[] modelMatrix = new double[16]; + + /** The projection matrix used for rendering the scene */ + protected double[] projMatrix = new double[16]; + + /** The viewport used for rendering the scene */ + protected int[] viewport = new int[4]; + /** The x-coordinate of last selection */ protected double x; *************** *** 723,727 **** double far = z1 / 0xFFFFFFFF; double near = z2 / 0xFFFFFFFF; ! System.out.println("z1 = " + far + "z2 = " + near); } bufferOffset += names; --- 732,736 ---- double far = z1 / 0xFFFFFFFF; double near = z2 / 0xFFFFFFFF; ! System.out.println("z1 = " + far + " z2 = " + near); } bufferOffset += names; *************** *** 820,822 **** --- 829,839 ---- */ public abstract double[] toCanvasCoords(double[] coords); + + /** + * Get transformation for model to screen coordinates + * @return The transformation + */ + public Transformation transformation() { + return null; + } } Index: View3D.java =================================================================== RCS file: /cvsroot/bprocessor/gl/src/net/sourceforge/bprocessor/gl/view/View3D.java,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** View3D.java 25 Aug 2005 09:44:18 -0000 1.7 --- View3D.java 26 Aug 2005 14:48:15 -0000 1.8 *************** *** 75,78 **** --- 75,84 ---- gl.glRotated(rotationX, 1.0, 0.0, 0.0); gl.glRotated(rotationZ, 0.0, 0.0, 1.0); + + + gl.glGetDoublev(GL.GL_MODELVIEW_MATRIX, modelMatrix); + gl.glGetDoublev(GL.GL_PROJECTION_MATRIX, projMatrix); + gl.glGetIntegerv(GL.GL_VIEWPORT, viewport); + } *************** *** 160,162 **** --- 166,177 ---- } } + + /** + * Get transformation for model to screen coordinates + * @return The transformation + */ + public Transformation transformation() { + return new Transformation(glu, modelMatrix, projMatrix, viewport); + } + } --- NEW FILE: Transformation.java --- //--------------------------------------------------------------------------------- // $Id: Transformation.java,v 1.1 2005/08/26 14:48:15 henryml Exp $ // // Copyright (c) 2005 The BProcessor Team (http://bprocessor.sourceforge.net) // Released under the Lesser GNU Public License v2.1 //--------------------------------------------------------------------------------- package net.sourceforge.bprocessor.gl.view; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import net.java.games.jogl.GLU; import net.sourceforge.bprocessor.model.Edge; import net.sourceforge.bprocessor.model.Surface; import net.sourceforge.bprocessor.model.Vertex; /** * The Transformation is represented by the two matrices * modelview and projection and the viewport, and has methods * to transform coordinates from model to screen and back again. * */ public class Transformation { /** The glu */ private GLU glu; /** * The modelview contains the modelview matrix represented * as 16 double values. */ private double[] modelview; /** * The projection contains the projection matrix represented * as 16 double values. */ private double[] projection; /** * The viewport contains the viewport represented as 4 * int values */ private int[] viewport; /** * Constructor * * @param glu The GLU * @param modelview The modelview * @param projection The projection * @param viewport The viewport */ public Transformation(GLU glu, double[] modelview, double[] projection, int[] viewport) { super(); this.glu = glu; this.modelview = modelview; this.projection = projection; this.viewport = viewport; } /** * Projects the Surface to screen coordinates * * @param surface The Surface to project * @return The projected Ssurface */ public Surface project(Surface surface) { List edges = new ArrayList(); Iterator iter = surface.getEdges().iterator(); while (iter.hasNext()) { Edge current = (Edge) iter.next(); edges.add(project(current)); } Surface projected = new Surface("projection of " + surface.getName()); projected.setEdges(edges); return projected; } /** * Projects the Edge to screen coordinates * @param edge The edge to project * @return The projected edge */ public Edge project(Edge edge) { Vertex from = project(edge.getFrom()); Vertex to = project(edge.getTo()); Edge projected = new Edge("projection of " + edge.getName()); projected.setFrom(from); projected.setTo(to); return projected; } /** * Projects the Vertex to screen coordinates * @param vertex The Vertex to project * @return The projected Vertex */ public Vertex project(Vertex vertex) { double x = vertex.getX(); double y = vertex.getY(); double z = vertex.getZ(); double[] view = new double[3]; glu.gluProject(x, y, z, modelview, projection, viewport, view); Vertex projection = new Vertex("projection of " + vertex.getName()); System.out.println("x = " + view[0]); projection.setX(view[0]); projection.setY(view[1]); projection.setZ(view[2]); return projection; } } Index: View.java =================================================================== RCS file: /cvsroot/bprocessor/gl/src/net/sourceforge/bprocessor/gl/view/View.java,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** View.java 25 Aug 2005 09:45:42 -0000 1.6 --- View.java 26 Aug 2005 14:48:15 -0000 1.7 *************** *** 154,157 **** --- 154,163 ---- */ public double[] getAlignPoint(); + + /** + * Get transformation for model to screen coordinates + * @return The transformation + */ + public Transformation transformation(); /** |