<<<<<<< HEAD package helpers; import java.awt.Graphics2D; import shapes.Polygon2D; /** * Class providing methods used for drawing. * */ public class DrawingHelper { /** * Draws an arrow head. * @param g2d The graphics on which to draw the arrow head. * @param startx The x coordinate of the arrow line's starting point * @param starty The y coordinate of the arrow line's starting point * @param endx The x coordinate of the arrow line's ending point * @param endy The y coordinate of the arrow line's ending point * @param stroke The stroke of the arrow head */ public static void drawArrowHead(Graphics2D g2d, double startx, double starty, double endx, double endy, float stroke) { //Find the arrow line's direction double aDir = Math.atan2(startx - endx, starty - endy); int i1 = 12 + Math.round(stroke * 2); int i2 = 6 + Math.round(stroke); //Create the polygon representing the arrow head Polygon2D.Double tmpPoly = new Polygon2D.Double(); tmpPoly.moveTo(endx, endy); // arrow tip tmpPoly.lineTo(endx + xCor(i1, aDir + .5), endy + yCor(i1, aDir + .5)); tmpPoly.lineTo(endx + xCor(i2, aDir), endy + yCor(i2, aDir)); tmpPoly.lineTo(endx + xCor(i1, aDir - .5), endy + yCor(i1, aDir - .5)); tmpPoly.lineTo(endx, endy); // arrow tip tmpPoly.closePath(); //Draw the arrow head g2d.fill(tmpPoly); } private static int yCor(int len, double dir) { return (int) Math.round(len * Math.cos(dir)); } private static int xCor(int len, double dir) { return (int) Math.round(len * Math.sin(dir)); } } ======= package helpers; import java.awt.Graphics2D; import shapes.Polygon2D; /** * Class providing methods used for drawing. * */ public class DrawingHelper { /** * Draws an arrow head. * @param g2d The graphics on which to draw the arrow head. * @param startx The x coordinate of the arrow line's starting point * @param starty The y coordinate of the arrow line's starting point * @param endx The x coordinate of the arrow line's ending point * @param endy The y coordinate of the arrow line's ending point * @param stroke The stroke of the arrow head */ public static void drawArrowHead(Graphics2D g2d, double startx, double starty, double endx, double endy, float stroke) { //Find the arrow line's direction double aDir = Math.atan2(startx - endx, starty - endy); int i1 = 12 + Math.round(stroke * 2); int i2 = 6 + Math.round(stroke); //Create the polygon representing the arrow head Polygon2D.Double tmpPoly = new Polygon2D.Double(); tmpPoly.moveTo(endx, endy); // arrow tip tmpPoly.lineTo(endx + xCor(i1, aDir + .5), endy + yCor(i1, aDir + .5)); tmpPoly.lineTo(endx + xCor(i2, aDir), endy + yCor(i2, aDir)); tmpPoly.lineTo(endx + xCor(i1, aDir - .5), endy + yCor(i1, aDir - .5)); tmpPoly.lineTo(endx, endy); // arrow tip tmpPoly.closePath(); //Draw the arrow head g2d.fill(tmpPoly); } private static int yCor(int len, double dir) { return (int) Math.round(len * Math.cos(dir)); } private static int xCor(int len, double dir) { return (int) Math.round(len * Math.sin(dir)); } } >>>>>>> origin/abdalla