[Bprocessor-commit] model/src/net/sourceforge/bprocessor/model Line.java, 1.24, 1.25
Status: Pre-Alpha
Brought to you by:
henryml
From: Nordholt <nor...@us...> - 2006-09-18 14:35:59
|
Update of /cvsroot/bprocessor/model/src/net/sourceforge/bprocessor/model In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv28326/src/net/sourceforge/bprocessor/model Modified Files: Line.java Log Message: fixed up the intersections method Index: Line.java =================================================================== RCS file: /cvsroot/bprocessor/model/src/net/sourceforge/bprocessor/model/Line.java,v retrieving revision 1.24 retrieving revision 1.25 diff -C2 -d -r1.24 -r1.25 *** Line.java 8 Sep 2006 13:25:59 -0000 1.24 --- Line.java 18 Sep 2006 14:35:47 -0000 1.25 *************** *** 268,309 **** double v2; double w1; ! double w2; ! if (d.getX() != 0 || c.getX() != 0) { ! u1 = d.getX(); ! v1 = c.getX(); ! w1 = p.getX() - o.getX(); ! if (d.getY() != 0 || c.getY() != 0) { ! u2 = d.getY(); ! v2 = c.getY(); ! w2 = p.getY() - o.getY(); ! } else if (d.getZ() != 0 || c.getZ() != 0) { ! u2 = d.getZ(); ! v2 = c.getZ(); ! w2 = p.getZ() - o.getZ(); ! } else { ! return null; ! } ! } else if (d.getY() != 0 || c.getY() != 0) { ! u1 = d.getY(); ! v1 = c.getY(); ! w1 = p.getY() - o.getY(); ! if (d.getZ() != 0 || c.getZ() != 0) { ! u2 = d.getZ(); ! v2 = c.getZ(); ! w2 = p.getZ() - o.getZ(); ! } else { ! return null; ! } ! } else { ! return null; } double denom = v1 * u2 - v2 * u1; if (denom == 0) { - //lines are parrallel return null; } double s = ((v2 * w1 - v1 * w2) / denom); double t = ((u1 * w2 - u2 * w1) / -denom); - d.scale(-s); c.scale(-t); --- 268,304 ---- double v2; double w1; ! double w2; ! u1 = d.getX(); ! u2 = d.getY(); ! v1 = c.getX(); ! v2 = c.getY(); ! w1 = p.getX() - o.getX(); ! w2 = p.getY() - o.getY(); ! if (!check(u1, u2, v1, v2)) { ! u1 = d.getZ(); ! u2 = d.getY(); ! v1 = c.getZ(); ! v2 = c.getY(); ! w1 = p.getZ() - o.getZ(); ! w2 = p.getY() - o.getY(); } + if (!check(u1, u2, v1, v2)) { + u1 = d.getZ(); + u2 = d.getX(); + v1 = c.getZ(); + v2 = c.getX(); + w1 = p.getZ() - o.getZ(); + w2 = p.getX() - o.getX(); + } + if (!check(u1, u2, v1, v2)) { + log.info("suitable parameters could not be found for intersection"); + return null; + } double denom = v1 * u2 - v2 * u1; if (denom == 0) { return null; } double s = ((v2 * w1 - v1 * w2) / denom); double t = ((u1 * w2 - u2 * w1) / -denom); d.scale(-s); c.scale(-t); *************** *** 311,320 **** Vertex inter2 = c.add(p); if (inter1.equalEps(inter2)) { - //lines are not in the same plane return inter1; } else { return null; } ! } /** --- 306,331 ---- Vertex inter2 = c.add(p); if (inter1.equalEps(inter2)) { return inter1; } else { return null; } ! } ! /** ! * Checks if parameters for the intersection method are ok ! * @param u1 u1 ! * @param u2 u2 ! * @param v1 v1 ! * @param v2 v2 ! * @return ok or not ok ! */ ! private boolean check(double u1, double u2, double v1, double v2) { ! if ((Math.abs(u1) < 0.00001 && Math.abs(u2) < 0.00001) || ! (Math.abs(v1) < 0.00001 && Math.abs(v2) < 0.00001) || ! (Math.abs(u1) < 0.00001 && Math.abs(v1) < 0.00001) || ! (Math.abs(u2) < 0.00001 && Math.abs(v2) < 0.00001)) { ! return false; ! } ! return true; ! } /** |