Update of /cvsroot/bprocessor/model/src/net/sourceforge/bprocessor/model
In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv2634/src/net/sourceforge/bprocessor/model
Modified Files:
Geometry.java Space.java
Log Message:
Improved geometry insertion
Index: Space.java
===================================================================
RCS file: /cvsroot/bprocessor/model/src/net/sourceforge/bprocessor/model/Space.java,v
retrieving revision 1.83
retrieving revision 1.84
diff -C2 -d -r1.83 -r1.84
*** Space.java 19 Oct 2006 09:56:21 -0000 1.83
--- Space.java 19 Oct 2006 15:28:51 -0000 1.84
***************
*** 621,630 ****
*/
public Edge insert(Edge edge) {
! if (edge.getLength() == 0) {
! return null;
}
Vertex from = insert(edge.getFrom());
Vertex to = insert(edge.getTo());
edge.setFrom(from);
edge.setTo(to);
--- 621,634 ----
*/
public Edge insert(Edge edge) {
! if (edge.getOwner() == this) {
! return edge;
}
Vertex from = insert(edge.getFrom());
Vertex to = insert(edge.getTo());
+ if (from == to) {
+ return null;
+ }
+
edge.setFrom(from);
edge.setTo(to);
Index: Geometry.java
===================================================================
RCS file: /cvsroot/bprocessor/model/src/net/sourceforge/bprocessor/model/Geometry.java,v
retrieving revision 1.33
retrieving revision 1.34
diff -C2 -d -r1.33 -r1.34
*** Geometry.java 19 Oct 2006 09:56:21 -0000 1.33
--- Geometry.java 19 Oct 2006 15:28:51 -0000 1.34
***************
*** 178,187 ****
/**
! * Insert the list of edges in the model by splitting
! * surfaces etc.
* @param edges The list of edges
* @return a list of the surfaces created
*/
! public static List insert(List edges) {
List result = new LinkedList();
Edge first = (Edge) edges.get(0);
--- 178,186 ----
/**
! * Find surfaces formed by a sequence of newly inserted edges
* @param edges The list of edges
* @return a list of the surfaces created
*/
! public static List surfaceAnalysis(List edges) {
List result = new LinkedList();
Edge first = (Edge) edges.get(0);
***************
*** 762,779 ****
Space space = Project.getInstance().getActiveSpace();
List result = new LinkedList();
! if (!edges.isEmpty()) {
! Vertex v = Edge.commonVertex((Edge) edges.get(0), (Edge) edges.get(edges.size() - 1));
! if (v != null && edges.size() > 2) {
! List actual = new LinkedList();
! Iterator iter = edges.iterator();
! while (iter.hasNext()) {
! Edge current = (Edge) iter.next();
! Edge edge = space.insert(current);
! if (edge != null) {
! actual.add(edge);
! }
}
! if (actual.size() > 2) {
! Surface surface = new Surface(actual);
result.add(surface);
space.add(surface);
--- 761,781 ----
Space space = Project.getInstance().getActiveSpace();
List result = new LinkedList();
! List actual = new LinkedList();
! {
! Iterator iter = edges.iterator();
! while (iter.hasNext()) {
! Edge current = (Edge) iter.next();
! Edge edge = space.insert(current);
! if (edge != null) {
! actual.add(edge);
}
! }
! }
! if (!actual.isEmpty()) {
! Vertex v = Edge.commonVertex((Edge) actual.get(0), (Edge) actual.get(actual.size() - 1));
! if (v != null && actual.size() > 2) {
! Surface surface = new Surface(actual);
! Surface existing = space.findSurface(surface);
! if (existing == null) {
result.add(surface);
space.add(surface);
***************
*** 781,794 ****
}
} else {
! List actual = new LinkedList();
! Iterator iter = edges.iterator();
! while (iter.hasNext()) {
! Edge current = (Edge) iter.next();
! Edge edge = space.insert(current);
! if (edge != null) {
! actual.add(edge);
! }
! }
! result.addAll(insert(actual));
}
}
--- 783,787 ----
}
} else {
! result.addAll(surfaceAnalysis(actual));
}
}
|