[Bprocessor-commit] model/src/net/sourceforge/bprocessor/model Surface.java, 1.190, 1.191
Status: Pre-Alpha
Brought to you by:
henryml
From: Michael L. <he...@us...> - 2007-10-09 12:44:07
|
Update of /cvsroot/bprocessor/model/src/net/sourceforge/bprocessor/model In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv24696/src/net/sourceforge/bprocessor/model Modified Files: Surface.java Log Message: Removed some extrude operation Index: Surface.java =================================================================== RCS file: /cvsroot/bprocessor/model/src/net/sourceforge/bprocessor/model/Surface.java,v retrieving revision 1.190 retrieving revision 1.191 diff -C2 -d -r1.190 -r1.191 *** Surface.java 9 Oct 2007 11:58:12 -0000 1.190 --- Surface.java 9 Oct 2007 12:44:10 -0000 1.191 *************** *** 750,873 **** /** ! * Extrude this surface ! * @param delta How much to extrude along the normal in meters ! * @param sides Will contain the sides that are created ! * @return The top in the extruded surface ! */ ! public Surface extrude(double delta, Set sides) { ! Map v2dir = new HashMap(); ! Surface top = extrude(delta, sides, new HashMap(), new HashMap(), ! new HashMap(), v2dir); ! Collection c = v2dir.values(); ! Iterator iter = c.iterator(); ! while (iter.hasNext()) { ! Object o = iter.next(); ! if (o instanceof Direction) { ! Direction d = (Direction)o; ! Vertex dir = d.getDirection(); ! Vertex v = dir.copy(); ! v.scale(delta); ! d.getVertex().move(v.getX(), v.getY(), v.getZ()); ! } ! } ! return top; ! } ! ! /** ! * Make the new vertices, edges and surfaces for extrusion ! * @param delta the length of extrusion in meters ! * @param sides Will contain the sides that are created ! * @param e2e a edge to new extruded parallel edge map ! * @param v2e a vertex to orthogonal edge map ! * @param e2s a edge to extruded surface map ! * @param v2dir a vertex to direction map ! * @return The top in the extruded surface */ ! public Surface extrude(double delta, Set sides, Map e2e, Map v2e, Map e2s, Map v2dir) { ! Vertex normal = normal(); ! ! List<Vertex> vertices = getVertices(); ! ! List<Edge> edges = getEdges(); ! ! int n = vertices.size(); ! ! Vertex[] v = new Vertex[n]; ! Edge[] e = new Edge[n]; ! ! ! Vertex[] vmap = new Vertex[n]; ! Edge[] topmap = new Edge[n]; ! Edge[] sidemap = new Edge[n]; ! Surface[] facemap = new Surface[n]; ! ! Surface top = null; ! ! vertices.toArray(v); ! edges.toArray(e); ! ! for (int i = 0; i < n; i++) { ! if (v2dir.containsKey(v[i])) { ! Direction d = (Direction)v2dir.get(v[i]); ! vmap[i] = d.getVertex(); ! d.alterDirection(normal); ! } else { ! vmap[i] = v[i].copy(); ! v2dir.put(v[i], new Direction(vmap[i], normal)); ! getOwner().add(vmap[i]); ! } ! } ! ! for (int i = 0; i < n; i++) { ! if (e2e.containsKey(e[i])) { ! topmap[i] = (Edge)e2e.get(e[i]); ! } else { ! topmap[i] = new Edge(vmap[i], vmap[(i + 1) % n]); ! e2e.put(e[i], topmap[i]); ! getOwner().add(topmap[i]); ! } ! } ! ! for (int i = 0; i < n; i++) { ! if (v2e.containsKey(v[i])) { ! sidemap[i] = (Edge)v2e.get(v[i]); ! } else { ! sidemap[i] = new Edge(v[i], vmap[i]); ! v2e.put(v[i], sidemap[i]); ! getOwner().add(sidemap[i]); ! } ! } ! ! for (int i = 0; i < n; i++) { ! if (e2s.containsKey(e[i])) { ! facemap[i] = (Surface)e2s.get(e[i]); ! } else { ! Edge b = e[i]; ! Edge r = sidemap[i]; ! Edge l = sidemap[(i + 1) % n]; ! Edge t = topmap[i]; ! List newEdges = new LinkedList(); ! newEdges.add(r); ! newEdges.add(t); ! newEdges.add(l); ! newEdges.add(b); ! facemap[i] = new Surface(newEdges); ! e2s.put(b, facemap[i]); ! getOwner().add(facemap[i]); ! } ! sides.add(facemap[i]); ! } ! ! { ! List newEdges = new LinkedList(); ! for (int i = 0; i < n; i++) { ! newEdges.add(topmap[n - i - 1]); } - top = new Surface(newEdges); - getOwner().add(top); } - - assignSpaceForExtrusion(delta, n, facemap, top); - return top; } --- 750,781 ---- /** ! * Extrude and add to space ! * @param delta Distance ! * @param sides Collection of created sides ! * @return top */ ! public Surface extrude(double delta, Set<Surface> sides) { ! Space owner = getOwner(); ! Surface top = extrusion(delta, sides); ! Collection<Surface> creation = new LinkedList(sides); ! creation.add(top); ! if (owner != null) { ! for (Surface side : creation) { ! for (Edge edge : side.getEdges()) { ! if (edge.from.getOwner() == null) { ! owner.add(edge.from); ! } ! if (edge.to.getOwner() == null) { ! owner.add(edge.to); ! } ! if (edge.getOwner() == null) { ! owner.add(edge); ! } ! } ! if (side.getOwner() == null) { ! owner.add(side); ! } } } return top; } |