[Bprocessor-commit] model/src/net/sourceforge/bprocessor/model Surface.java, 1.113, 1.114 Space.jav
Status: Pre-Alpha
Brought to you by:
henryml
From: Michael L. <he...@us...> - 2006-10-10 09:24:06
|
Update of /cvsroot/bprocessor/model/src/net/sourceforge/bprocessor/model In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv24241/src/net/sourceforge/bprocessor/model Modified Files: Surface.java Space.java Log Message: extrusion operation suitable for scripting Index: Surface.java =================================================================== RCS file: /cvsroot/bprocessor/model/src/net/sourceforge/bprocessor/model/Surface.java,v retrieving revision 1.113 retrieving revision 1.114 diff -C2 -d -r1.113 -r1.114 *** Surface.java 10 Oct 2006 06:35:28 -0000 1.113 --- Surface.java 10 Oct 2006 09:23:57 -0000 1.114 *************** *** 434,439 **** */ public Surface extrusion(double delta, Set sides) { ! return null; } --- 434,527 ---- */ public Surface extrusion(double delta, Set sides) { + Vertex normal = normal(); + normal.scale(delta); + List vertices = getVertices(); + List 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++) { ! vmap[i] = v[i].copy().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); ! newEdges.add(t); ! 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); ! } ! ! // FIXME should return the sides instead of assigning ! // spaces here. ! boolean flip = false; ! ! if (exterior != null) { ! Vertex n0 = normal(); ! Vertex n1 = exterior.normal(); ! Vertex o = n0.add(n1); ! if (o.isZero()) { ! flip = true; ! } ! } ! ! for (int i = 0; i < n; i++) { ! if (delta < 0) { ! facemap[i].setBackDomain(getBackDomain()); ! if (exterior != null) { ! if (flip) { ! facemap[i].setFrontDomain(exterior.getFrontDomain()); ! } else { ! facemap[i].setFrontDomain(exterior.getBackDomain()); ! } ! } ! } else { ! facemap[i].setFrontDomain(getFrontDomain()); ! if (exterior != null) { ! if (flip) { ! facemap[i].setBackDomain(exterior.getBackDomain()); ! } else { ! facemap[i].setBackDomain(exterior.getFrontDomain()); ! } ! } ! } ! } ! if (delta < 0) { ! top.setBackDomain(getBackDomain()); ! } else { ! top.setFrontDomain(getFrontDomain()); ! } ! ! return top; } Index: Space.java =================================================================== RCS file: /cvsroot/bprocessor/model/src/net/sourceforge/bprocessor/model/Space.java,v retrieving revision 1.75 retrieving revision 1.76 diff -C2 -d -r1.75 -r1.76 *** Space.java 9 Oct 2006 14:03:15 -0000 1.75 --- Space.java 10 Oct 2006 09:23:57 -0000 1.76 *************** *** 878,881 **** --- 878,882 ---- surface.setEdges(actual); add(surface); + Geometry.holeAnalysis(surface); return surface; } |