Problema em rotacionar com Polygon

package geom;

import java.awt.Polygon;
import java.awt.geom.Point2D;

public class Estrela
{

    protected static final Point2D.Double[] ponto = new Point2D.Double[9];
    protected static Polygon estrela = new Polygon();
    protected static double x, y, e = 1.0, grau = 0.0;
    protected static double meioPoligonoX = 0.0, meioPoligonoY = 0.0;

    protected static void alteraEstado()
    {
        ponto[8] = new Point2D.Double(57.0D + x, 57.0D + y);
        meioPoligonoX = ponto[8].x;
        meioPoligonoY = ponto[8].y;
        ponto[0] = new Point2D.Double((((0.0 + x) - ponto[8].x) * e) + ponto[8].x,
                (((57.0 + y) - ponto[8].y) * e) + ponto[8].y);
        ponto[1] = new Point2D.Double((((43.0 + x) - ponto[8].x) * e) + ponto[8].x,
                (((43.0 + y) - ponto[8].y) * e) + ponto[8].y);
        ponto[2] = new Point2D.Double((((57.0 + x) - ponto[8].x) * e) + ponto[8].x,
                (((0.0 + y) - ponto[8].y) * e) + ponto[8].y);
        ponto[3] = new Point2D.Double((((71.0 + x) - ponto[8].x) * e) + ponto[8].x,
                (((43.0 + y) - ponto[8].y) * e) + ponto[8].y);
        ponto[4] = new Point2D.Double((((114.0 + x) - ponto[8].x) * e) + ponto[8].x,
                (((57.0 + y) - ponto[8].y) * e) + ponto[8].y);
        ponto[5] = new Point2D.Double((((71.0 + x) - ponto[8].x) * e) + ponto[8].x,
                (((71.0 + y) - ponto[8].y) * e) + ponto[8].y);
        ponto[6] = new Point2D.Double((((57.0 + x) - ponto[8].x) * e) + ponto[8].x,
                (((114.0 + y) - ponto[8].y) * e) + ponto[8].y);
        ponto[7] = new Point2D.Double((((43.0 + x) - ponto[8].x) * e) + ponto[8].x,
                (((71.0 + y) - ponto[8].y) * e) + ponto[8].y);
        rotaciona();
    }

    protected static void rotaciona()
    {
        double auy, aux;
        for (int i = 0; i < ponto.length - 1; i++)
        {
            aux = ponto[i].x - meioPoligonoX;
            auy = ponto[i].y - meioPoligonoY;
            aux = (aux * Math.cos(Math.toRadians(grau))) - (auy * Math.sin(Math.toRadians(grau)));
            auy = (auy * Math.cos(Math.toRadians(grau))) + (aux * Math.sin(Math.toRadians(grau)));
            aux += meioPoligonoX;
            auy += meioPoligonoY;
            ponto[i] = new Point2D.Double(aux,auy);
        }
    }

    public static void desenhaStar()
    {
        int pontosX[] = new int[ponto.length - 1];
        int pontosY[] = new int[ponto.length - 1];
        for (int i = 0; i < ponto.length - 1; i++)
        {
            pontosX[i] = (int) ponto[i].x;
            pontosY[i] = (int) ponto[i].y;
        }
        estrela = new Polygon(pontosX, pontosY, ponto.length - 1);
    }
}

gostaria da visao experiente de vcs para ver o meu erro, pois estou chamando este poligono e o desenhando num painel com Graphics. mas o problema e q na hora de rotacionar, ele se comporta como se fosse 3d e rotaciona nao so de coma pra baixo como de um lado pra outro dando a impressao de uma animacao 3d.

Bem, você pode tentar modificar só as posições x e manter as y intactas. Outra alternativa é aplicar a calsse AffineTransform nos pontos.

ja resolvi o problema. o problema estava em como fiz as atribuicoes no metodo rotaciona. Entao resolvi o problema assim:

[code]

protected static void rotaciona()//rotaciona o poligono
{
double x,aux;
double y,auy;
double seno = Math.sin(Math.toRadians(grau));
double cos = Math.cos(Math.toRadians(grau));
for(int i =0; i<ponto.length-1;i++)
{
aux = ponto[i].getX() - meioPoligonoX;//ponto[5].getX();
auy = ponto[i].getY() - meioPoligonoY;//ponto[5].getY();
x = aux * cos - auy * seno;
y = aux * seno + auy * cos;
x += meioPoligonoX;//ponto[5].getX();
y += meioPoligonoY;//ponto[5].getY();
ponto[i].setLocation(x, y);
}
}
[/code]>