예제 #1
0
 public void aplica(Transformada transformada)
 {
     foreach (Point3D ponto in this.getPontos())
     {
         ponto.setValor(CgUtils.mult(ponto.getValor(), transformada.getDefinicao()));
     }
 }
        public void configTransformada(float theta, float phi, float rho, float d)
        {
            this.theta = theta;
            this.phi   = phi;
            this.rho   = rho;
            this.d     = d;

            t3d.setDefinicao(Transformada.Tv3D(theta, phi, rho));

            CgUtils.show(t3d.getDefinicao());
        }
        //desenha a geometria passada por parametro
        private void desenhaGeometria(Geometria geometria)
        {
            //context.setColor(geometria.getCor());


            foreach (Aresta aresta in geometria.getArestas())
            {
                //aqui preciso de dois pontos após transformada de visualização


                Point3D p1 = new Point3D(CgUtils.mult(geometria.getPontos()[aresta.pInicial].getValor(), t3d.getDefinicao()));
                Point3D p2 = new Point3D(CgUtils.mult(geometria.getPontos()[aresta.pFinal].getValor(), t3d.getDefinicao()));


                panel1.CreateGraphics().DrawLine(
                    new Pen(Brushes.Aqua),
                    ix(-d * p1.getX() / p1.getZ()),
                    iy(-d * p1.getY() / p1.getZ()),
                    ix(-d * p2.getX() / p2.getZ()),
                    iy(-d * p2.getY() / p2.getZ()));
            }
        }
    static Transformada build(String[] dados)
    {
        Transformada transformada = new Transformada();

        transformada.setId(dados[0]);
        transformada.setDefinicao(Transformada.identidade());

        for (int i = 1; i < dados.GetLength(0); i++)
        {
            String[] parameters = dados[i].Split(' ');

            float[,] definicaoAtual = null;

            if (parameters[0] == "tt")
            {
                definicaoAtual = Transformada.Tt(Convert.ToSingle(parameters[1]), Convert.ToSingle(parameters[2]), Convert.ToSingle(parameters[3]));
            }
            else if (parameters[0] == "trz")
            {
                definicaoAtual = Transformada.TrZ(Convert.ToSingle(parameters[1]));
            }
            else if (parameters[0] == "trx")
            {
                definicaoAtual = Transformada.TrX(Convert.ToSingle(parameters[1]));
            }
            else if (parameters[0] == "try")
            {
                definicaoAtual = Transformada.TrY(Convert.ToSingle(parameters[1]));
            }
            else if (parameters[0] == "ts")
            {
                definicaoAtual = Transformada.Ts(Convert.ToSingle(parameters[1]), Convert.ToSingle(parameters[2]), Convert.ToSingle(parameters[3]));
            }

            transformada.setDefinicao(CgUtils.mult(transformada.getDefinicao(), definicaoAtual));
        }
        return(transformada);
    }