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);
 	}

Attachment: josm-routes.tar.bz2
Description: BZip2 compressed data

_______________________________________________
Talk-cz mailing list
Talk-cz@openstreetmap.org
http://lists.openstreetmap.org/listinfo/talk-cz

Odpovedet emailem