Hello John ,
   This piece of code should do the work.
 
 /**
     *Draw a diamond ending at the end vertex .The startvertex is necessary to
     *determine the orientation in space
     *diagnolLength ==2*medianLength  and arrowBaselength==diagnolLength..
     *
     */
    public static void drawDiamond(Point endVertex ,double alongDiagnolLength,double perpendicularDiagnolLength,
         Point startVertex,Graphics2D g2,boolean fill){ 
 
 double medianLength=alongDiagnolLength/2;
 double arrowBaseLength=perpendicularDiagnolLength;
 
 Point t1=new Point(0,0);//the end points of the base of the triangle....
 Point t2=new Point(0,0); 
 Point t3=new Point(0,0);
 
 double b=arrowBaseLength/2;//base/2
 double d=getDistance(endVertex ,startVertex);
 double ratio=medianLength/d;
 double ratio1=2*ratio;
 
 double  x=endVertex.getX()+ratio*(startVertex.getX()-endVertex.getX());
 double  y=endVertex.getY()+ratio*(startVertex.getY()-endVertex.getY());
 
 int mx=(int) (2*x-endVertex.getX());
 int my=(int) (2*y-endVertex.getY());
 t3.setLocation(mx,my); 
 
 int diff= (int) (endVertex.getX()-startVertex.getX());
 if(Math.abs(diff)==0){
     t1.setLocation((int) (x-b),y);
     t2.setLocation((int) (x+b),y);
     int[] xs={(int) endVertex.getX(),(int) t1.getX(), mx,(int) t2.getX()};
     int[] ys={(int) endVertex.getY(),(int) t1.getY(), my,(int) t2.getY()};
     if(fill){
  g2.fillPolygon(xs,ys,4);
     }
     else{
  g2.drawPolygon(xs,ys,4);
     }
     return;
     }else{
     double x1,y1,x2,y2;
     double m=getSlope( new Line2D.Double(endVertex.getX(),endVertex.getY(),startVertex.getX(),startVertex.getY()) );
     double denom=Math.sqrt(1+m*m);
     y1=b/denom;x1=-m*y1;y2=-y1;x2=-x1;
     t1.setLocation(x+x1,y+y1);
     t2.setLocation(x+x2,y+y2);
     int[] xs={(int) endVertex.getX(),(int) t1.getX(), mx, (int) t2.getX()};
     int[] ys={(int) endVertex.getY(),(int) t1.getY(), my, (int) t2.getY()};
     if(fill){
  g2.fillPolygon(xs,ys,4);
     }
     else{
  g2.drawPolygon(xs,ys,4);
     }
     return;
     
 }
    }
 
 

Rajagopalan N
Senior Software Engineer
Yasu Technologies pvt Ltd
http://www.yasutech.com

 

Reply via email to