[Bprocessor-commit] model/src/net/sourceforge/bprocessor/model Space.java, 1.63, 1.64
Status: Pre-Alpha
Brought to you by:
henryml
From: Michael L. <he...@us...> - 2006-09-19 09:17:46
|
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. |