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
|