vhardy 2002/12/02 05:02:39 Modified: sources/org/apache/batik/gvt MarkerShapePainter.java Log: Fixed bug reported on public mailing list regarding marker. This actually showed an error in reference image markersOrientB.png Revision Changes Path 1.9 +24 -9 xml-batik/sources/org/apache/batik/gvt/MarkerShapePainter.java Index: MarkerShapePainter.java =================================================================== RCS file: /home/cvs/xml-batik/sources/org/apache/batik/gvt/MarkerShapePainter.java,v retrieving revision 1.8 retrieving revision 1.9 diff -u -r1.8 -r1.9 --- MarkerShapePainter.java 9 Jul 2002 17:17:54 -0000 1.8 +++ MarkerShapePainter.java 2 Dec 2002 13:02:39 -0000 1.9 @@ -562,12 +562,17 @@ if (inSlope == null) { return 0; } - - double rotationIn = Math.atan2(inSlope[1], inSlope[0])*180./Math.PI; - double rotationOut = Math.atan2(outSlope[1], outSlope[0])*180./Math.PI; - double rotation = (rotationIn + rotationOut)/2; - - return rotation; + + double dx = inSlope[0] + outSlope[0]; + double dy = inSlope[1] + outSlope[1]; + + if (dx == 0 && dy == 0) { + // The two vectors are exact opposites. There is no way to + // know which direction to go (+90 or -90). Choose +90 + return Math.atan2(inSlope[1], inSlope[0])*180./Math.PI + 90; + } else { + return Math.atan2(dy, dx)*180./Math.PI; + } } /** @@ -657,7 +662,7 @@ return null; } - return new double[] { dx, dy }; + return normalize(new double[] { dx, dy }); } /** @@ -730,7 +735,17 @@ return null; } - return new double[] { dx, dy }; + return normalize(new double[] { dx, dy }); + } + + /** + * Normalizes the input vector. This assumes an non-zero length + */ + public double[] normalize(double[] v) { + double n = Math.sqrt(v[0]*v[0]+v[1]*v[1]); + v[0] /= n; + v[1] /= n; + return v; } /**
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]