package View;

import java.awt.Point;
import java.awt.Polygon;
import java.awt.Shape;
import java.awt.geom.AffineTransform;

/**
 * Contains helper functions for the views.
 * @author kolja
 *
 */
public class RenderHelper {
    /**
     * creates an arrow shape to draw it, for example as an edge.
     * @param fromPt the starting point of the arrow
     * @param toPt the destination point of the arrow
     * @return the shape
     */
    public static Shape createArrowShape(Point fromPt, Point toPt) {
        Polygon arrowPolygon = new Polygon();
        arrowPolygon.addPoint(-3,6);
        arrowPolygon.addPoint(3,0);
        arrowPolygon.addPoint(-3,-6);
        arrowPolygon.addPoint(-3,6);

        double rotate = Math.atan2( ( toPt.y - fromPt.y ) , ( toPt.x - fromPt.x ) );

        AffineTransform transform = new AffineTransform();
        transform.translate(toPt.x, toPt.y);
        transform.rotate(rotate);

        return transform.createTransformedShape(arrowPolygon);
    }
}
