[Bprocessor-commit] model/src/net/sourceforge/bprocessor/model Command.java, 1.40, 1.41
Status: Pre-Alpha
Brought to you by:
henryml
From: Michael L. <he...@us...> - 2007-11-26 13:29:58
|
Update of /cvsroot/bprocessor/model/src/net/sourceforge/bprocessor/model In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv9778/src/net/sourceforge/bprocessor/model Modified Files: Command.java Log Message: refactored extrude Index: Command.java =================================================================== RCS file: /cvsroot/bprocessor/model/src/net/sourceforge/bprocessor/model/Command.java,v retrieving revision 1.40 retrieving revision 1.41 diff -C2 -d -r1.40 -r1.41 *** Command.java 26 Nov 2007 10:51:00 -0000 1.40 --- Command.java 26 Nov 2007 13:29:59 -0000 1.41 *************** *** 1378,1416 **** } ! private Prism extrude(Surface bottom, double distance) { List<Surface> sides = new LinkedList(); ! Vertex normal = bottom.normal(); ! normal.scaleInPlace(distance); ! List vertices = bottom.getVertices(); ! List edges = bottom.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++) { ! vmap[i] = v[i].add(normal); ! } ! for (int i = 0; i < n; i++) { ! topmap[i] = new Edge(vmap[i], vmap[(i + 1) % n]); ! } for (int i = 0; i < n; i++) { ! sidemap[i] = new Edge(v[i], vmap[i]); } for (int i = 0; i < n; i++) { ! 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); --- 1378,1419 ---- } ! private Prism connect(Surface bottom, Surface top) { ! List<Surface> sides = connect(bottom.getEdges(), top.getEdges()); ! return new Prism(top, bottom, sides); ! } ! ! private List<Surface> connect(List bedges, List tedges) { List<Surface> sides = new LinkedList(); ! List bvertices = Offset.vertices(bedges); ! int n = bedges.size(); ! ! Edge[] be = new Edge[n]; ! Vertex[] bv = new Vertex[n]; ! ! bvertices.toArray(bv); ! bedges.toArray(be); ! ! ! List tvertices = Offset.vertices(tedges); ! ! Edge[] te = new Edge[n]; ! Vertex[] tv = new Vertex[n]; ! ! tvertices.toArray(tv); ! tedges.toArray(te); ! ! Edge[] sidemap = new Edge[n]; for (int i = 0; i < n; i++) { ! sidemap[i] = new Edge(bv[i], tv[i]); } for (int i = 0; i < n; i++) { ! Edge b = be[i]; Edge r = sidemap[i]; Edge l = sidemap[(i + 1) % n]; ! Edge t = te[i]; List newEdges = new LinkedList(); newEdges.add(r); *************** *** 1418,1437 **** newEdges.add(l); newEdges.add(b); ! facemap[i] = new Surface(newEdges); ! 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); } ! Prism prism = new Prism(top, bottom, sides); return prism; } /** {@inheritDoc} */ @Override --- 1421,1446 ---- newEdges.add(l); newEdges.add(b); ! sides.add(new Surface(newEdges)); } ! return sides; ! } ! ! private Prism extrude(Surface bottom, double distance) { ! Vertex normal = bottom.normal(); ! normal.scaleInPlace(distance); ! HashMap map = new HashMap(); ! Surface top = (Surface) bottom.copy(map); ! ! for (Vertex current : top.getVertices()) { ! current.set(current.add(normal)); } ! Prism prism = connect(bottom, top); return prism; } + + /** {@inheritDoc} */ @Override |