Ahoj, tak nakonec to nebylo tak těžké. Je to známý problém dělení nulou "smernice = [cokoli] / (val1 - val2)", kde směrnice je buď "ua", nebo kombinace "ndx, ndy". Většinou existuje na stejný problém řešení i bez počítání směrnic a bez problematického dělení, místo toho posílám patch jdoucí cestou nejmenšího odporu... :-) Asi není potřeba ho vysvětlovat, jsou to jednořádkové úpravy.
Ale vrtá mi hlavou, jak Ti to mohlo fungovat. Že by se v jiné verzi Javy dalo korektně pracovat s nekonečny? S pozdravem, Radek Černoch 2009/4/22 Jiri Klement <jiri.klem...@gmail.com>: > Cyklostezky pomoci relaci jsem doplnil, kontroluje to type=route, > route=bicycle, na network nazalezi. > > Zdrojaky vzdycky prikladam primo do jaru. Pro pohodlnejsi ladeni jsem > nahral i eclipse projekt: > http://jttt.110mb.com/josm-routes.zip > Je mozne to ladit primo z eclise, staci si pridat JOSM projekt a > pustit to pomoci josm-routes.launch.
--- AbstractLinePainter.java.old 2009-03-07 11:10:00.000000000 +0000 +++ AbstractLinePainter.java 2009-04-22 11:40:15.000000000 +0100 @@ -15,7 +15,8 @@ x3 = l2.getX1(), y3 = l2.getY1(), x4 = l2.getX2(), y4 = l2.getY2(); - double ua = ((x4 - x3) * (y1 - y3) - (y4 - y3) * (x1 - x3)) / ((y4 - y3) * (x2 - x1) - (x4 - x3)*(y2 - y1)); + double ua = ((x4 - x3) * (y1 - y3) - (y4 - y3) * (x1 - x3)) + / ((y4 - y3) * (x2 - x1) - (x4 - x3) * (y2 - y1) + Double.MIN_NORMAL); intersection.x = x1 + ua * (x2 - x1); intersection.y = y1 + ua * (y2 - y1); @@ -45,8 +46,8 @@ // Normalize double length = Math.sqrt(ndx * ndx + ndy * ndy); - ndx = ndx / length; - ndy = ndy / length; + ndx = ndx / (length + Double.MIN_NORMAL); + ndy = ndy / (length + Double.MIN_NORMAL); return new Point2D.Double(p1.getX() + shift * ndx, p1.getY() + shift * ndy); }
josm-routes.tar.bz2
Description: BZip2 compressed data
_______________________________________________ Talk-cz mailing list Talk-cz@openstreetmap.org http://lists.openstreetmap.org/listinfo/talk-cz