Update of /cvsroot/bprocessor/model/src/net/sourceforge/bprocessor/model
In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv22012/src/net/sourceforge/bprocessor/model
Modified Files:
Space.java
Log Message:
Envelope computation
Index: Space.java
===================================================================
RCS file: /cvsroot/bprocessor/model/src/net/sourceforge/bprocessor/model/Space.java,v
retrieving revision 1.63
retrieving revision 1.64
diff -C2 -d -r1.63 -r1.64
*** Space.java 18 Sep 2006 08:19:25 -0000 1.63
--- Space.java 19 Sep 2006 09:17:44 -0000 1.64
***************
*** 1240,1243 ****
--- 1240,1256 ----
}
if (container) {
+ result.addAll(collectInterior());
+ }
+ return result;
+ }
+
+ /**
+ *
+ * @return the interior set of vertices
+ */
+ public Set collectInterior() {
+ Set result = new HashSet();
+ Iterator it;
+ if (container) {
it = elements.values().iterator();
while (it.hasNext()) {
***************
*** 1537,1540 ****
--- 1550,1616 ----
}
+ /**
+ * Calculate the envelope
+ */
+ public void computeEnvelope() {
+ Collection vertices = collectInterior();
+ double xmin = Double.MAX_VALUE;
+ double xmax = Double.MIN_VALUE;
+ double ymin = Double.MAX_VALUE;
+ double ymax = Double.MIN_VALUE;
+ double zmin = Double.MAX_VALUE;
+ double zmax = Double.MIN_VALUE;
+ Iterator iter = vertices.iterator();
+ while (iter.hasNext()) {
+ Vertex current = (Vertex) iter.next();
+ double x = current.getX();
+ double y = current.getY();
+ double z = current.getZ();
+ if (x < xmin) {
+ xmin = x;
+ }
+ if (x > xmax) {
+ xmax = x;
+ }
+ if (y < ymin) {
+ ymin = y;
+ }
+ if (y > ymax) {
+ ymax = y;
+ }
+ if (z < zmin) {
+ zmin = z;
+ }
+ if (z > zmax) {
+ zmax = z;
+ }
+ }
+ Vertex p4 = new Vertex(xmin, ymin, zmin);
+ Vertex p3 = new Vertex (xmin, ymax, zmin);
+ Vertex p2 = new Vertex(xmax, ymax, zmin);
+ Vertex p1 = new Vertex(xmax, ymin, zmin);
+ getOwner().insert(p1);
+ getOwner().insert(p2);
+ getOwner().insert(p3);
+ getOwner().insert(p4);
+ Edge e1 = new Edge(p1, p2);
+ Edge e2 = new Edge(p2, p3);
+ Edge e3 = new Edge(p3, p4);
+ Edge e4 = new Edge(p4, p1);
+ getOwner().insert(e1);
+ getOwner().insert(e2);
+ getOwner().insert(e3);
+ getOwner().insert(e4);
+ List edges = new LinkedList();
+ edges.add(e1);
+ edges.add(e2);
+ edges.add(e3);
+ edges.add(e4);
+ Surface bottom = new Surface(edges);
+ getOwner().insert(bottom);
+ bottom.setFrontDomain(this);
+ bottom.extrude(zmax - zmin, new HashSet());
+ }
+
/**
* Finds out if this space is closed or not.
|