[Bprocessor-commit] model/src/net/sourceforge/bprocessor/model Space.java, 1.44, 1.45
Status: Pre-Alpha
Brought to you by:
henryml
From: Nordholt <nor...@us...> - 2006-08-08 15:15:10
|
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; |