Paint an arrow extremity in Java 2D
28/01/2009
protected void paintArrowExtremity(Graphics2D g, int x1, int y1, int x2, int y2, double factor) { // Angles (téta) double theta; double thetabis = 0; // Angle de la pointe double alpha = Math.toRadians(90-30); // Longueur de la fl?che int l = (int) (7*factor); int x[] = new int[3]; int y[] = new int[3]; theta = (x2-x1)/(Math.sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1))); thetabis = Math.acos(theta); if (y1<y2) { x[0]=x2; x[1]=(int) (l*Math.cos(thetabis-Math.PI/2-alpha)+x2); x[2]=(int) (l*Math.cos(thetabis+Math.PI/2+alpha)+x2); y[0]=y2; y[1]=(int) (l*Math.sin(thetabis-Math.PI/2-alpha)+y2); y[2]=(int) (l*Math.sin(thetabis+Math.PI/2+alpha)+y2); } else { x[0]=x2; x[1]=(int) (l*Math.cos(thetabis-Math.PI/2-alpha)+x2); x[2]=(int) (l*Math.cos(thetabis+Math.PI/2+alpha)+x2); y[0]=y2; y[1]=y2+(y2-(int) (l*Math.sin(thetabis-Math.PI/2-alpha)+y2)); y[2]=y2+(y2-(int) (l*Math.sin(thetabis+Math.PI/2+alpha)+y2)); } g.fillPolygon(x, y, 3); }