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