Accueil > Java > Paint an arrow extremity in Java 2D

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);
}

Java

Les commentaires sont fermés.