[Bprocessor-commit] model/src/net/sourceforge/bprocessor/model Camera.java,1.13,1.14
Status: Pre-Alpha
Brought to you by:
henryml
|
From: Nordholt <nor...@us...> - 2006-05-17 17:11:44
|
Update of /cvsroot/bprocessor/model/src/net/sourceforge/bprocessor/model In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv14953 Modified Files: Camera.java Log Message: method to zoom out to view the entire model Index: Camera.java =================================================================== RCS file: /cvsroot/bprocessor/model/src/net/sourceforge/bprocessor/model/Camera.java,v retrieving revision 1.13 retrieving revision 1.14 diff -C2 -d -r1.13 -r1.14 *** Camera.java 11 Feb 2006 15:02:21 -0000 1.13 --- Camera.java 17 May 2006 17:11:41 -0000 1.14 *************** *** 10,13 **** --- 10,14 ---- import java.util.Iterator; import java.util.List; + import java.util.Set; import org.apache.log4j.Logger; *************** *** 388,391 **** --- 389,423 ---- /** + * Moves the camera to a position where the entire model is visible. + */ + public void viewEntireModel() { + Set allVertices = Project.getInstance().world().collect(); + if (!allVertices.isEmpty()) { + Vertex modelCenter = Project.getInstance().world().center(); + Iterator it = allVertices.iterator(); + double maxDistance = 0; + while (it.hasNext()) { + Vertex v = (Vertex) it.next(); + double distance = v.minus(modelCenter).length(); + if (distance > maxDistance) { + maxDistance = distance; + } + } + double cameraDistance = + maxDistance / Math.tan(Math.toRadians((this.getFocalwidth() / 2))); + Vertex cameraPos = new Vertex(1, 1, 1); + cameraPos.scale(cameraDistance / cameraPos.length()); + cameraPos = cameraPos.add(modelCenter); + setCenter(new double[] {modelCenter.getX(), + modelCenter.getY(), + modelCenter.getZ()}); + setCamera(new double[] {cameraPos.getX(), + cameraPos.getY(), + cameraPos.getZ()}); + setRoll(new double[] {-1, -1, 1}); + } + } + + /** * Print camera * @return String |