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;
}
|