Beispiel #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());
        }
        //Inicia todas as animacoes de todas as geometrias que foram salvas
        private void btn_IniciarAnimacao_Click(object sender, EventArgs e)
        {
            this.animacao = true;
            int count = 0;
            int tempo = 0;

            if (txt_tempo.Text == "")
            {
                txt_tempo.Text = "0";
            }
            tempo = int.Parse(txt_tempo.Text);
            while (count < tempo)
            {
                for (int j = 0; j < coordenadasAnimacoes.Count(); j++)
                {
                    for (int i = 0; i < geometrias.Count(); i++)
                    {
                        if (geometrias[i].getId() == coordenadasAnimacoes[j].nome)
                        {
                            objTransformada.setDefinicao(Transformada.TrZ(coordenadasAnimacoes[j].trZ));
                            geometrias[i].aplica(objTransformada);
                            addGeometria(geometrias[i]);
                            objTransformada.setDefinicao(Transformada.TrX(coordenadasAnimacoes[j].trX));
                            geometrias[i].aplica(objTransformada);
                            addGeometria(geometrias[i]);
                            objTransformada.setDefinicao(Transformada.TrY(coordenadasAnimacoes[j].trY));
                            geometrias[i].aplica(objTransformada);
                            addGeometria(geometrias[i]);
                            objTransformada.setDefinicao(Transformada.Tt(coordenadasAnimacoes[j].ttX, coordenadasAnimacoes[j].ttY, coordenadasAnimacoes[j].ttZ));
                            geometrias[i].aplica(objTransformada);
                            addGeometria(geometrias[i]);
                            objTransformada.setDefinicao(Transformada.Ts(coordenadasAnimacoes[j].tsX, coordenadasAnimacoes[j].tsY, coordenadasAnimacoes[j].tsZ));
                            geometrias[i].aplica(objTransformada);
                            addGeometria(geometrias[i]);
                        }
                    }
                    desenhaGeometrias();
                }
                Thread.Sleep(100);
                count++;
            }
        }
    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);
    }
 //Aplicar transformacao
 private void btn_Transformada_Click(object sender, EventArgs e)
 {
     if (comboBox_transformada.Text == "Rotacao")
     {
         for (int i = 0; i < geometrias.Count(); i++)
         {
             if (geometrias[i].getId() == txt_getId.Text)
             {
                 if (txt_tZ.Text == "")
                 {
                     txt_tZ.Text = "0";
                 }
                 if (txt_tX.Text == "")
                 {
                     txt_tX.Text = "0";
                 }
                 if (txt_tY.Text == "")
                 {
                     txt_tY.Text = "0";
                 }
                 objTransformada.setDefinicao(Transformada.TrZ(int.Parse(txt_tZ.Text)));
                 geometrias[i].aplica(objTransformada);
                 objTransformada.setDefinicao(Transformada.TrX(int.Parse(txt_tX.Text)));
                 geometrias[i].aplica(objTransformada);
                 objTransformada.setDefinicao(Transformada.TrY(int.Parse(txt_tY.Text)));
                 geometrias[i].aplica(objTransformada);
                 addGeometria(geometrias[i]);
                 desenhaGeometrias();
             }
         }
     }
     if (comboBox_transformada.Text == "Translacao")
     {
         for (int i = 0; i < geometrias.Count(); i++)
         {
             if (geometrias[i].getId() == txt_getId.Text)
             {
                 if (txt_tZ.Text == "")
                 {
                     txt_tZ.Text = "0";
                 }
                 if (txt_tX.Text == "")
                 {
                     txt_tX.Text = "0";
                 }
                 if (txt_tY.Text == "")
                 {
                     txt_tY.Text = "0";
                 }
                 objTransformada.setDefinicao(Transformada.Tt(float.Parse(txt_tX.Text), float.Parse(txt_tY.Text), float.Parse(txt_tZ.Text)));
                 geometrias[i].aplica(objTransformada);
                 addGeometria(geometrias[i]);
                 desenhaGeometrias();
             }
         }
     }
     if (comboBox_transformada.Text == "Scala")
     {
         for (int i = 0; i < geometrias.Count(); i++)
         {
             if (geometrias[i].getId() == txt_getId.Text)
             {
                 if (txt_tZ.Text == "")
                 {
                     txt_tZ.Text = "1";
                 }
                 if (txt_tX.Text == "")
                 {
                     txt_tX.Text = "1";
                 }
                 if (txt_tY.Text == "")
                 {
                     txt_tY.Text = "1";
                 }
                 objTransformada.setDefinicao(Transformada.Ts(float.Parse(txt_tX.Text), float.Parse(txt_tY.Text), float.Parse(txt_tZ.Text)));
                 geometrias[i].aplica(objTransformada);
                 addGeometria(geometrias[i]);
                 desenhaGeometrias();
             }
         }
     }
 }
 public Transformada()
 {
     this.setDefinicao(Transformada.Tv3D(0.0f, 0.0f, 0.0f));
 }