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
|