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]

Reply via email to