Problema em rotacionar com Polygon

2 respostas
G
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.

2 Respostas

Ataxexe

Não duplique seus posts


se estiver com dúvidas sobre qual fórum abrir, peça que um moderador mova o tópico caso seja necessário.

G

deculpe, pensei ter deletado , pois vi q tinha colocado na categoria diferente

Criado 4 de fevereiro de 2013
Ultima resposta 4 de fev. de 2013
Respostas 2
Participantes 2