Update of /cvsroot/bprocessor/model/src/net/sourceforge/bprocessor/model
In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv16686/src/net/sourceforge/bprocessor/model
Modified Files:
Space.java
Log Message:
corrected a precision error and prevented nullpointer exception when extruding in the isClosed mechanism
Index: Space.java
===================================================================
RCS file: /cvsroot/bprocessor/model/src/net/sourceforge/bprocessor/model/Space.java,v
retrieving revision 1.44
retrieving revision 1.45
diff -C2 -d -r1.44 -r1.45
*** Space.java 31 Jul 2006 17:16:13 -0000 1.44
--- Space.java 8 Aug 2006 15:15:05 -0000 1.45
***************
*** 1436,1440 ****
} else {
closed = false;
! }
}
return closed;
--- 1436,1440 ----
} else {
closed = false;
! }
}
return closed;
***************
*** 1471,1476 ****
if (Math.abs(angle) < 0.00001 && spaceVector.dot(j) < 0) {
colourable = true;
! }
! }
return colourable;
}
--- 1471,1476 ----
if (Math.abs(angle) < 0.00001 && spaceVector.dot(j) < 0) {
colourable = true;
! }
! }
return colourable;
}
***************
*** 1488,1491 ****
--- 1488,1494 ----
Vertex j = startSurface.normal();
+ if (j == null) {
+ return null;
+ }
if (startSurface.getFrontDomain() == this) {
j.scale(1 / j.length());
***************
*** 1511,1515 ****
Surface neighbour = null;
double minAngle = (Math.PI * 2 + 1);
! double angle = minAngle;
while (it.hasNext()) {
Surface s = (Surface)it.next();
--- 1514,1520 ----
Surface neighbour = null;
double minAngle = (Math.PI * 2 + 1);
! double angle = minAngle;
! boolean foundAngle = false;
! boolean hadEx = false;
while (it.hasNext()) {
Surface s = (Surface)it.next();
***************
*** 1517,1531 ****
LinkedList l = new LinkedList(s.getEdges());
Vertex notShared = findNextVertex(sharedEdge, sharedVertex, l);
! angle = findAngle(sharedVertex, notShared, cs);
! if (angle < minAngle && colourable(s, angle, i, j)) {
! minAngle = angle;
! neighbour = s;
! }
! if (s.getExterior() != null) {
! angle = (angle + Math.PI) % (2 * Math.PI);
! if (angle < minAngle && colourable(s.getExterior(),
! angle, i, j)) {
minAngle = angle;
! neighbour = s.getExterior();
}
}
--- 1522,1542 ----
LinkedList l = new LinkedList(s.getEdges());
Vertex notShared = findNextVertex(sharedEdge, sharedVertex, l);
! if (notShared != null) {
! angle = findAngle(sharedVertex, notShared, cs);
! if (angle < minAngle) {
! foundAngle = true;
! }
! if (angle < minAngle && colourable(s, angle, i, j)) {
minAngle = angle;
! neighbour = s;
! }
! if (s.getExterior() != null) {
! hadEx = true;
! angle = (angle + Math.PI) % (2 * Math.PI);
! if (angle < minAngle && colourable(s.getExterior(),
! angle, i, j)) {
! minAngle = angle;
! neighbour = s.getExterior();
! }
}
}
***************
*** 1550,1554 ****
projEdgeDir.scale(1 / projEdgeDir.length());
Vertex xAxis = coordinateSystem.getI().copy();
! double angle = Math.acos(xAxis.dot(projEdgeDir));
if (coordinateSystem.translate(projNotShared).getY() >= 0) {
angle = Math.PI - angle;
--- 1561,1571 ----
projEdgeDir.scale(1 / projEdgeDir.length());
Vertex xAxis = coordinateSystem.getI().copy();
! double cosAngle = xAxis.dot(projEdgeDir);
! if (cosAngle > 1 && cosAngle < 1.001) {
! cosAngle = 1;
! } else if (cosAngle < -1 && cosAngle > -1.001) {
! cosAngle = -1;
! }
! double angle = Math.acos(cosAngle);
if (coordinateSystem.translate(projNotShared).getY() >= 0) {
angle = Math.PI - angle;
|