protected override void OnLoad(EventArgs e) { base.OnLoad(e); camera.xmin = 0; camera.xmax = 600; camera.ymin = 0; camera.ymax = 600; Console.WriteLine(" --- Ajuda / Teclas: "); Console.WriteLine(" [ H ] mostra teclas usadas. "); objetoId = Utilitario.charProximo(objetoId); obj_Retangulo = new Retangulo(objetoId, null, new Ponto4D(50, 50, 0), new Ponto4D(150, 150, 0)); obj_Retangulo.ObjetoCor.CorR = 255; obj_Retangulo.ObjetoCor.CorG = 0; obj_Retangulo.ObjetoCor.CorB = 255; objetosLista.Add(obj_Retangulo); objetoSelecionado = obj_Retangulo; #if CG_Privado objetoId = Utilitario.charProximo(objetoId); obj_SegReta = new Privado_SegReta(objetoId, null, new Ponto4D(50, 150), new Ponto4D(150, 250)); obj_SegReta.ObjetoCor.CorR = 255; obj_SegReta.ObjetoCor.CorG = 255; obj_SegReta.ObjetoCor.CorB = 0; objetosLista.Add(obj_SegReta); objetoSelecionado = obj_SegReta; objetoId = Utilitario.charProximo(objetoId); obj_Circulo = new Privado_Circulo(objetoId, null, new Ponto4D(100, 300), 50); obj_Circulo.ObjetoCor.CorR = 0; obj_Circulo.ObjetoCor.CorG = 255; obj_Circulo.ObjetoCor.CorB = 255; objetosLista.Add(obj_Circulo); objetoSelecionado = obj_Circulo; #endif GL.ClearColor(0.5f, 0.5f, 0.5f, 1.0f); }
protected override void OnLoad(EventArgs e) { base.OnLoad(e); camera.xmin = 0; camera.xmax = 600; camera.ymin = 0; camera.ymax = 600; Console.WriteLine(" --- Ajuda / Teclas: "); Console.WriteLine(" [ H ] mostra teclas usadas. "); objetoNovo = new Poligono(objetoId + 1, null); objetosLista.Add(objetoNovo); objetoNovo.PontosAdicionar(new Ponto4D(50, 350)); objetoNovo.PontosAdicionar(new Ponto4D(150, 350)); // N3-Exe6: "troque" para deixar o rastro objetoNovo.PontosAdicionar(new Ponto4D(100, 450)); objetoSelecionado = objetoNovo; objetoNovo = null; #if CG_Privado obj_Retangulo = new Retangulo(objetoId + 1, null, new Ponto4D(50, 50, 0), new Ponto4D(150, 150, 0)); objetosLista.Add(obj_Retangulo); obj_Retangulo.PrimitivaCor = OpenTK.Color.Violet; objetoSelecionado = obj_Retangulo; obj_SegReta = new Privado_SegReta(objetoId + 1, null, new Ponto4D(50, 150), new Ponto4D(150, 250)); objetosLista.Add(obj_SegReta); obj_SegReta.PrimitivaCor = OpenTK.Color.Tomato; objetoSelecionado = obj_SegReta; obj_Circulo = new Privado_Circulo(objetoId + 1, null, new Ponto4D(100, 300), 50); objetosLista.Add(obj_Circulo); obj_Circulo.PrimitivaCor = OpenTK.Color.Tan; objetoSelecionado = obj_Circulo; #endif GL.ClearColor(OpenTK.Color.Gray); }
protected override void OnLoad(EventArgs e) { base.OnLoad(e); camera.xmin = 0; camera.xmax = 600; camera.ymin = 0; camera.ymax = 600; Console.WriteLine(" --- Ajuda / Teclas: "); Console.WriteLine(" [ H ] mostra teclas usadas. "); obj_Retangulo = new Retangulo("A", null, new Ponto4D(50, 50, 0), new Ponto4D(150, 150, 0)); objetosLista.Add(obj_Retangulo); obj_Retangulo.PrimitivaCor = System.Drawing.Color.Violet; objetoSelecionado = obj_Retangulo; #if CG_Privado obj_SegReta = new Privado_SegReta("B", null, new Ponto4D(50, 150), new Ponto4D(150, 250)); objetosLista.Add(obj_SegReta); obj_SegReta.PrimitivaCor = System.Drawing.Color.Tomato; objetoSelecionado = obj_SegReta; obj_Circulo = new Privado_Circulo("C", null, new Ponto4D(100, 300), 50); objetosLista.Add(obj_Circulo); obj_Circulo.PrimitivaCor = System.Drawing.Color.Tan; objetoSelecionado = obj_Circulo; #endif GL.ClearColor(0.5f, 0.5f, 0.5f, 1.0f); }
protected override void OnLoad(EventArgs e) { base.OnLoad(e); Console.WriteLine(" --- Ajuda / Teclas: "); Console.WriteLine(" [ H ] mostra teclas usadas. "); obj_Retangulo = new Retangulo("A", null, new Ponto4D(50, 50, 0), new Ponto4D(150, 150, 0)); objetosLista.Add(obj_Retangulo); objetoSelecionado = obj_Retangulo; obj_Cilindro = new Cilindro("D", null); objetosLista.Add(obj_Cilindro); obj_Cilindro.EscalaXYZ(50, 50, 50); obj_Cilindro.TranslacaoXYZ(150, 0, 0); // obj_Cone = new Cone("E", null); // objetosLista.Add(obj_Cone); // obj_Cone.EscalaXYZ(50, 50, 50); // obj_Cone.TranslacaoXYZ(200,0,0); obj_Cubo = new Cubo("F", null); objetosLista.Add(obj_Cubo); obj_Cubo.EscalaXYZ(50, 50, 50); objetoSelecionado = obj_Cilindro; camera.At = new Vector3(0, 0, 0); camera.Eye = new Vector3(1000, 1000, 1000); camera.Near = 100.0f; camera.Far = 2000.0f; GL.ClearColor(Color.Gray); GL.Enable(EnableCap.DepthTest); GL.Enable(EnableCap.CullFace); }
protected override void OnLoad(EventArgs e) { base.OnLoad(e); Console.WriteLine(" --- Ajuda / Teclas: "); Console.WriteLine(" [ H ] mostra teclas usadas. "); Utilitario.AjudaJogo(); camera.Eye = new Vector3(0, 12, 17); camera.At = new Vector3(0, 0, 0); obj_Tabuleiro = new Tabuleiro(Utilitario.charProximo(), null, camera); objetosLista.Add(obj_Tabuleiro); objetoSelecionado = obj_Tabuleiro; // Ponto4D pto = obj_Tabuleiro.getPontoInicialPeca(Ambiente.MEIO, 0, 0.8f); // obj_Dado = new Dado(Utilitario.charProximo(), null, pto, 0.8f, new Cor(0, 0, 255, 255), new Cor(255, 0, 0, 255)); // objetosLista.Add(obj_Dado); // objetoSelecionado = obj_Dado; // camera.Eye = new Vector3(2, 2, 2); // camera.At = new Vector3(0, 0, 0); // obj_Cubo = new Cubo(Utilitario.charProximo(), null); // objetosLista.Add(obj_Cubo); // objetoSelecionado = obj_Cubo; #if CG_Privado //FIXME: arrumar os outros objetos objetoId = Utilitario.charProximo(objetoId); obj_Cilindro = new Cilindro(objetoId, null); obj_Cilindro.ObjetoCor.CorR = 177; obj_Cilindro.ObjetoCor.CorG = 166; obj_Cilindro.ObjetoCor.CorB = 136; objetosLista.Add(obj_Cilindro); obj_Cilindro.Translacao(2, 'x'); objetoId = Utilitario.charProximo(objetoId); obj_Esfera = new Esfera(objetoId, null); obj_Esfera.ObjetoCor.CorR = 177; obj_Esfera.ObjetoCor.CorG = 166; obj_Esfera.ObjetoCor.CorB = 136; objetosLista.Add(obj_Esfera); obj_Esfera.Translacao(4, 'x'); objetoId = Utilitario.charProximo(objetoId); obj_Cone = new Cone(objetoId, null); obj_Cone.ObjetoCor.CorR = 177; obj_Cone.ObjetoCor.CorG = 166; obj_Cone.ObjetoCor.CorB = 136; objetosLista.Add(obj_Cone); obj_Cone.Translacao(6, 'x'); #endif GL.ClearColor(0.5f, 0.5f, 0.5f, 1.0f); GL.Enable(EnableCap.DepthTest); GL.Enable(EnableCap.CullFace); }
protected override void OnMouseDown(MouseButtonEventArgs e) { BBox bboxMenor = this.circuloMenor.BBox; int xPointClick = e.X >= 300 ? e.X - 300 : 300 - e.X; int yPointClick = e.Y >= 300 ? e.Y - 300 : 300 - e.Y; double distancePoitsClick = (Math.Sqrt((xPointClick * xPointClick) + (yPointClick * yPointClick))) / 2; if (distancePoitsClick <= this.circuloMenor.Radius && e.Mouse.LeftButton == ButtonState.Pressed) { this.mouseMoverPto = true; this.objetoSelecionado = this.circuloMenor; } else { this.mouseMoverPto = false; this.objetoSelecionado = null; this.centerCirculoMenor = new Ponto4D(0, 0); } }
protected override void OnLoad(EventArgs e) { base.OnLoad(e); Console.WriteLine(" --- Ajuda / Teclas: "); Console.WriteLine(" [ H ] mostra teclas usadas. "); obj_Retangulo = new Retangulo("A", null, new Ponto4D(50, 50, 0), new Ponto4D(150, 150, 0)); objetosLista.Add(obj_Retangulo); objetoSelecionado = obj_Retangulo; #if CG_Privado obj_SegReta = new Privado_SegReta("B", null, new Ponto4D(50, 150), new Ponto4D(150, 250)); objetosLista.Add(obj_SegReta); objetoSelecionado = obj_SegReta; obj_Circulo = new Privado_Circulo("C", null, new Ponto4D(100, 300), 50); objetosLista.Add(obj_Circulo); objetoSelecionado = obj_Circulo; #endif GL.ClearColor(Color.Gray); }
protected override void OnLoad(EventArgs e) { base.OnLoad(e); Console.WriteLine(" --- Ajuda / Teclas: "); Console.WriteLine(" [ H ] mostra teclas usadas. "); objetoId = Utilitario.charProximo(objetoId); obj_Cubo = new Cubo(objetoId, null); objetosLista.Add(obj_Cubo); objetoSelecionado = obj_Cubo; #if CG_Privado //FIXME: arrumar os outros objetos objetoId = Utilitario.charProximo(objetoId); obj_Cilindro = new Cilindro(objetoId, null); obj_Cilindro.ObjetoCor.CorR = 177; obj_Cilindro.ObjetoCor.CorG = 166; obj_Cilindro.ObjetoCor.CorB = 136; objetosLista.Add(obj_Cilindro); obj_Cilindro.Translacao(2, 'x'); objetoId = Utilitario.charProximo(objetoId); obj_Esfera = new Esfera(objetoId, null); obj_Esfera.ObjetoCor.CorR = 177; obj_Esfera.ObjetoCor.CorG = 166; obj_Esfera.ObjetoCor.CorB = 136; objetosLista.Add(obj_Esfera); obj_Esfera.Translacao(4, 'x'); objetoId = Utilitario.charProximo(objetoId); obj_Cone = new Cone(objetoId, null); obj_Cone.ObjetoCor.CorR = 177; obj_Cone.ObjetoCor.CorG = 166; obj_Cone.ObjetoCor.CorB = 136; objetosLista.Add(obj_Cone); obj_Cone.Translacao(6, 'x'); #endif GL.ClearColor(0.5f, 0.5f, 0.5f, 1.0f); GL.Enable(EnableCap.DepthTest); GL.Enable(EnableCap.CullFace); }
protected override void OnKeyDown(OpenTK.Input.KeyboardKeyEventArgs e) { // Console.Clear(); //TODO: não funciona. if (e.Key == Key.H) { Utilitario.AjudaTeclado(); } else if (e.Key == Key.F1) { Utilitario.AjudaJogo(); } else if (e.Key == Key.Escape) { Exit(); } //-------------------------------------------------------------- else if (e.Key == Key.Number9) { objetoSelecionado = null; // desmacar objeto selecionado } else if (e.Key == Key.B) { bBoxDesenhar = !bBoxDesenhar; //FIXME: bBox não está sendo atualizada. } else if (e.Key == Key.Enter) { obj_Tabuleiro.enter(); } else if (e.Key == Key.E) { Console.WriteLine("--- Objetos / Pontos: "); for (var i = 0; i < objetosLista.Count; i++) { Console.WriteLine(objetosLista[i]); } } //-------------------------------------------------------------- else if (e.Key == Key.X) { menuEixoSelecao = 'x'; } else if (e.Key == Key.Y) { menuEixoSelecao = 'y'; } else if (e.Key == Key.Z) { menuEixoSelecao = 'z'; } else if (e.Key == Key.Minus) { deslocamento--; } else if (e.Key == Key.Plus) { deslocamento++; } else if (e.Key == Key.C) { menuSelecao = "[menu] C: Câmera"; } else if (e.Key == Key.O) { menuSelecao = "[menu] O: Objeto"; } // Menu: seleção else if (menuSelecao.Equals("[menu] C: Câmera")) { camera.MenuTecla(e.Key, menuEixoSelecao, deslocamento); } else if (menuSelecao.Equals("[menu] O: Objeto")) { if (objetoSelecionado != null) { objetoSelecionado.MenuTecla(e.Key, menuEixoSelecao, deslocamento, bBoxDesenhar); } else { Console.WriteLine(" ... Objeto NÃO selecionado."); } } else { Console.WriteLine(" __ Tecla não implementada."); } if (!(e.Key == Key.LShift)) //FIXME: não funciona. { Console.WriteLine("__ " + menuSelecao + "[" + deslocamento + "]"); } }
protected override void OnKeyDown(OpenTK.Input.KeyboardKeyEventArgs e) { if (e.Key == Key.H) { Utilitario.AjudaTeclado(); } else if (e.Key == Key.Escape) { Exit(); } else if (e.Key == Key.E) { Console.WriteLine("--- Objetos / Pontos: "); for (var i = 0; i < objetosLista.Count; i++) { Console.WriteLine(objetosLista[i]); } } else if (e.Key == Key.O) { bBoxDesenhar = !bBoxDesenhar; } else if (e.Key == Key.Enter) { if (objetoNovo != null) { objetoNovo.PontosRemoverUltimo(); // N3-Exe6: "truque" para deixar o rastro objetoSelecionado = objetoNovo; objetoNovo = null; } } else if (e.Key == Key.Space) { if (objetoNovo == null) { objetoNovo = new Poligono(objetoId + 1, null); objetosLista.Add(objetoNovo); objetoNovo.PontosAdicionar(new Ponto4D(mouseX, mouseY)); objetoNovo.PontosAdicionar(new Ponto4D(mouseX, mouseY)); // N3-Exe6: "troque" para deixar o rastro } else { objetoNovo.PontosAdicionar(new Ponto4D(mouseX, mouseY)); } } else if (objetoSelecionado != null) { if (e.Key == Key.M) { Console.WriteLine(objetoSelecionado.Matriz); } else if (e.Key == Key.P) { Console.WriteLine(objetoSelecionado); } else if (e.Key == Key.I) { objetoSelecionado.AtribuirIdentidade(); } //TODO: não está atualizando a BBox com as transformações geométricas else if (e.Key == Key.Left) { objetoSelecionado.TranslacaoXYZ(-10, 0, 0); } else if (e.Key == Key.Right) { objetoSelecionado.TranslacaoXYZ(10, 0, 0); } else if (e.Key == Key.Up) { objetoSelecionado.TranslacaoXYZ(0, 10, 0); } else if (e.Key == Key.Down) { objetoSelecionado.TranslacaoXYZ(0, -10, 0); } else if (e.Key == Key.PageUp) { objetoSelecionado.EscalaXYZ(2, 2, 2); } else if (e.Key == Key.PageDown) { objetoSelecionado.EscalaXYZ(0.5, 0.5, 0.5); } else if (e.Key == Key.Home) { objetoSelecionado.EscalaXYZBBox(0.5, 0.5, 0.5); } else if (e.Key == Key.End) { objetoSelecionado.EscalaXYZBBox(2, 2, 2); } else if (e.Key == Key.Number1) { objetoSelecionado.Rotacao(10); } else if (e.Key == Key.Number2) { objetoSelecionado.Rotacao(-10); } else if (e.Key == Key.Number3) { objetoSelecionado.RotacaoZBBox(10); } else if (e.Key == Key.Number4) { objetoSelecionado.RotacaoZBBox(-10); } else if (e.Key == Key.Number9) { objetoSelecionado = null; // desmacar objeto selecionado } else { Console.WriteLine(" __ Tecla não implementada."); } } else { Console.WriteLine(" __ Tecla não implementada."); } }
protected override void OnLoad(EventArgs e) { base.OnLoad(e); Console.WriteLine(" --- Ajuda / Teclas: "); Console.WriteLine(" [ H ] mostra teclas usadas. "); //Chão obj_Cubo = new Cubo("Chao", null, chao); objetosLista.Add(obj_Cubo); obj_Cubo.EscalaXYZ(1000, 1, 1000); obj_Cubo.TranslacaoXYZ(3, -1, 2); //Cerca obj_Cubo = new Cubo("Cerca1", null, cerca); objetosLista.Add(obj_Cubo); obj_Cubo.EscalaXYZ(30, 100, 1000); obj_Cubo.TranslacaoXYZ(485, 55, 0); obj_Cubo = new Cubo("Cerca2", null, cerca); objetosLista.Add(obj_Cubo); obj_Cubo.EscalaXYZ(1000, 100, 30); obj_Cubo.TranslacaoXYZ(0, 55, -485); obj_Cubo = new Cubo("Cerca3", null, cerca); objetosLista.Add(obj_Cubo); obj_Cubo.EscalaXYZ(30, 100, 1000); obj_Cubo.TranslacaoXYZ(-485, 55, 0); obj_Cubo = new Cubo("Cerca4", null, cerca); objetosLista.Add(obj_Cubo); obj_Cubo.EscalaXYZ(1000, 100, 30); obj_Cubo.TranslacaoXYZ(0, 55, 485); //Barreira obj_Cubo = new Cubo("Barreira1", null, barreira); objetosLista.Add(obj_Cubo); obj_Cubo.EscalaXYZ(100, 100, 100); obj_Cubo.TranslacaoXYZ(420, 55, -298); obj_Cubo = new Cubo("Barreira2", null, barreira); objetosLista.Add(obj_Cubo); obj_Cubo.EscalaXYZ(100, 100, 100); obj_Cubo.TranslacaoXYZ(-420, 55, 298); obj_Cubo = new Cubo("Barreira3", null, barreira); objetosLista.Add(obj_Cubo); obj_Cubo.EscalaXYZ(650, 100, 100); obj_Cubo.TranslacaoXYZ(0, 55, 0); //Personagens //Inimigos obj_Cubo = new Cubo("Inimigo01", null, tankInimigoBack); this.inimgo = obj_Cubo; objetosLista.Add(obj_Cubo); obj_Cubo.EscalaXYZ(100, 1, 100); obj_Cubo.TranslacaoXYZ(0, 55, -350); //Eu obj_Cubo = new Cubo("Personagem", null, tankFront); this.personagem = obj_Cubo; objetosLista.Add(obj_Cubo); obj_Cubo.EscalaXYZ(100, 1, 100); obj_Cubo.TranslacaoXYZ(0, 55, 350); objetoSelecionado = obj_Cubo; camera.Eye = new Vector3(0f, 1400, 850); camera.At = new Vector3(0f, 0f, 0f); camera.Near = 100f; camera.Far = 2000.0f; GL.ClearColor(0, 0, 0, 255); GL.Enable(EnableCap.DepthTest); GL.Enable(EnableCap.CullFace); // GL.Disable(EnableCap.CullFace); }
protected override void OnLoad(EventArgs e) { this.pushMove(1, 0, 0, 3); Transformacao4D tr = new Transformacao4D(); Transformacao4D trAux = new Transformacao4D(); trAux.AtribuirTranslacao(0, 0.3, 0); tr.AtribuirRotacaoX(Math.PI / 33); this.movimentos.Add(trAux.MultiplicarMatriz(tr)); this.qtMovimentos.Add(33); this.pushMove(1, 0, 0, 4); this.movimentos.Add(trAux.MultiplicarMatriz(tr)); this.qtMovimentos.Add(33); this.pushMove(1, 0, 0, 3); this.pushMove(0, 0, 1, 10); this.pushMove(0, 1, 0, 10); this.pushMove(0, 0, -1, 10); this.pushMove(-1, 0, 0, 10); this.pushMove(0, -1, 0, 5); tr = new Transformacao4D(); trAux = new Transformacao4D(); trAux.AtribuirTranslacao(0.3, 0, 0); tr.AtribuirRotacaoY(Math.PI / 33); this.movimentos.Add(trAux.MultiplicarMatriz(tr)); this.qtMovimentos.Add(33); this.pushMove(0, 0, 1, 10); this.pushMove(0, -1, 0, 5); this.pushMove(1, 0, 0, 10); this.pushMove(0, 0, -1, 10); this.movimentos.Add(trAux.MultiplicarMatriz(tr)); this.qtMovimentos.Add(33); this.pushMove(1, 0, 0, 10); base.OnLoad(e); Console.WriteLine(" --- Ajuda / Teclas: "); Console.WriteLine(" [ H ] mostra teclas usadas. "); // obj_Retangulo = new Retangulo("A", null, new Ponto4D(50, 50, 0), new Ponto4D(150, 150, 0)); // objetosLista.Add(obj_Retangulo); // objetoSelecionado = obj_Retangulo; // obj_Cilindro = new Cilindro("D", null); // objetosLista.Add(obj_Cilindro); // obj_Cilindro.EscalaXYZ(50, 50, 50); // obj_Cilindro.TranslacaoXYZ(150, 0, 0); // obj_Esfera = new Esfera("E", null); // objetosLista.Add(obj_Esfera); // obj_Esfera.EscalaXYZ(50, 50, 50); // obj_Esfera.TranslacaoXYZ(200, 0, 0); // obj_Cone = new Cone("F", null); // objetosLista.Add(obj_Cone); // obj_Cone.EscalaXYZ(50, 50, 50); // obj_Cone.TranslacaoXYZ(250,0,0); // obj_Cubo = new Cubo("G", null); // objetosLista.Add(obj_Cubo); // obj_Cubo.EscalaXYZ(50, 50, 50); obj_Cubo = new Cubo("G", null); objetosLista.Add(obj_Cubo); obj_Cubo.EscalaXYZ(50, 50, 50); objetoSelecionado = obj_Cubo; camera.At = new Vector3(0, 0, 0); camera.Eye = new Vector3(1000, 1000, 1000); // camera.Eye = new Vector3(0, 0, 1000); camera.Near = 100.0f; camera.Far = 4000.0f; GL.ClearColor(127, 127, 127, 255); GL.Enable(EnableCap.DepthTest); // GL.Enable(EnableCap.CullFace); GL.Disable(EnableCap.CullFace); }
protected override void OnKeyDown(OpenTK.Input.KeyboardKeyEventArgs e) { if (e.Key == Key.H) { Utilitario.AjudaTeclado(); } else if (e.Key == Key.Escape) { Exit(); } else if (e.Key == Key.E) { Console.WriteLine("--- Objetos / Pontos: "); for (var i = 0; i < objetosLista.Count; i++) { Console.WriteLine(objetosLista[i]); } } else if (e.Key == Key.O) { bBoxDesenhar = !bBoxDesenhar; } else if (e.Key == Key.Enter) { if (objetoNovo != null) { objetoNovo.PontosRemoverUltimo(); // N3-Exe6: "truque" para deixar o rastro objetoSelecionado = objetoNovo; objetoNovo = null; } } else if (e.Key == Key.Left) { this.AtRotateX(-1 / 2); this.AtRotateY(1); } else if (e.Key == Key.Right) { this.AtRotateX(1 / 2); this.AtRotateY(-1); } else if (e.Key == Key.Up) { this.EyeRotate(1); } else if (e.Key == Key.Down) { this.EyeRotate(-1); } else if (objetoSelecionado != null) { if (e.Key == Key.Space) { objetoSelecionado.Matriz = objetoSelecionado.Matriz.MultiplicarMatriz(this.movimentos[i]); j++; if (j >= this.qtMovimentos[i]) { i++; j = 0; if (i >= this.movimentos.Count) { i = 0; } } } else if (e.Key == Key.M) { Console.WriteLine(objetoSelecionado.Matriz); } else if (e.Key == Key.P) { Console.WriteLine(objetoSelecionado); } else if (e.Key == Key.I) { objetoSelecionado.AtribuirIdentidade(); this.i = 0; this.j = 0; } else if (e.Key == Key.Number8) { objetoSelecionado.TranslacaoXYZ(0, 0, 10); } else if (e.Key == Key.Number9) { objetoSelecionado.TranslacaoXYZ(0, 0, -10); } else if (e.Key == Key.PageUp) { objetoSelecionado.EscalaXYZ(2, 2, 2); } else if (e.Key == Key.PageDown) { objetoSelecionado.EscalaXYZ(0.5, 0.5, 0.5); } else if (e.Key == Key.Home) { objetoSelecionado.EscalaXYZBBox(0.5, 0.5, 0.5); } else if (e.Key == Key.End) { objetoSelecionado.EscalaXYZBBox(2, 2, 2); } else if (e.Key == Key.Number1) { objetoSelecionado.Rotacao(10); } else if (e.Key == Key.Number2) { objetoSelecionado.Rotacao(-10); } else if (e.Key == Key.Number3) { objetoSelecionado.RotacaoZBBox(10); } else if (e.Key == Key.Number4) { objetoSelecionado.RotacaoZBBox(-10); } else if (e.Key == Key.Number0) { objetoSelecionado = null; } else if (e.Key == Key.X) { objetoSelecionado.TrocaEixoRotacao('x'); } else if (e.Key == Key.Y) { objetoSelecionado.TrocaEixoRotacao('y'); } else if (e.Key == Key.Z) { objetoSelecionado.TrocaEixoRotacao('z'); } else { Console.WriteLine(" __ Tecla não implementada."); } } else { Console.WriteLine(" __ Tecla não implementada."); } }
protected override void OnMouseDown(MouseButtonEventArgs e) { this.xPointClick = e.X >= 300 ? (e.X - 300) + 300 : 300 - (300 - e.X); this.yPointClick = e.Y >= 300 ? 300 - (e.Y - 300) : 300 + (300 - e.Y); this.createDynamicPolygon = false; if (!this.poligonoQualquer) { objetoNovo = null; } if (e.Mouse.LeftButton.Equals(ButtonState.Pressed)) { if (!this.poligonoQualquer) { this.objetoSelecionado = null; Poligono poligono; BBox bBox; List <Ponto4D> pontos; Ponto4D pontoAtual, pontoAux; double ti, xi; int iteracoes = 0; foreach (Object objeto in this.objetosLista) { poligono = (Poligono)objeto; bBox = poligono.BBox; pontos = new List <Ponto4D>(); if (xPointClick <= bBox.obterMaiorX && yPointClick <= bBox.obterMaiorY && xPointClick >= bBox.obterMenorX && yPointClick >= bBox.obterMenorY) { // Famosa ScanLine pontos = poligono.getPontosPoligono(); for (int i = 0; i < pontos.Count; i++) { pontoAtual = pontos[i]; if ((i + 1) == pontos.Count) { pontoAux = pontos[0]; } else { pontoAux = pontos[i + 1]; } ti = (yPointClick - pontoAtual.Y) / (pontoAux.Y - pontoAtual.Y); if (ti > 0) { xi = (pontoAtual.X + (pontoAux.X - pontoAtual.X) * ti); if (xi > xPointClick) { iteracoes++; } } } if (iteracoes % 2 != 0) { this.objetoSelecionado = poligono; } } } } else { objetoNovo.PontosUltimo().X = mouseX; objetoNovo.PontosUltimo().Y = mouseY; objetoNovo.PontosAdicionar(new Ponto4D(this.mouseX, this.mouseY)); objetoNovo.PontosAdicionar(new Ponto4D(this.mouseX, this.mouseY)); } } else if (e.Mouse.RightButton.Equals(ButtonState.Pressed)) { if (objetoSelecionado != null && this.verticeMaisProximo == null) { this.objetosLista.Remove(objetoSelecionado); objetoSelecionado = null; } else if (objetoSelecionado != null && this.verticeMaisProximo != null) { Poligono poligono = (Poligono)objetoSelecionado; if (poligono.getPontosPoligono().Count > 3) { poligono.getPontosPoligono().Remove(this.verticeMaisProximo); this.objetoSelecionado = null; this.verticeMaisProximo = null; } else { this.objetosLista.Remove(objetoSelecionado); objetoSelecionado = null; } } } else { Console.WriteLine("Número: "); string consoleInput = Console.ReadLine(); int nVertices = Convert.ToInt32(consoleInput); objetoNovo = new Poligono(objetoId + 1, null); int cont = 360 / nVertices; for (int i = 0; i < 360; i += cont) { double degInRad = i * 3.1416 / 180; objetoNovo.PontosAdicionar(new Ponto4D((Math.Cos(degInRad) * 50) + xPointClick, (Math.Sin(degInRad) * 50) + yPointClick)); } objetosLista.Add(objetoNovo); objetoSelecionado = objetoNovo; } }
protected override void OnKeyDown(OpenTK.Input.KeyboardKeyEventArgs e) { if (e.Key == Key.H) { Utilitario.AjudaTeclado(); } else if (e.Key == Key.Escape) { Exit(); } else if (e.Key == Key.E) { Console.WriteLine("--- Objetos / Pontos: "); for (var i = 0; i < objetosLista.Count; i++) { Console.WriteLine(objetosLista[i]); } } else if (e.Key == Key.O) { bBoxDesenhar = !bBoxDesenhar; } else if (e.Key == Key.Enter) { if (objetoNovo != null) { objetoNovo.PontosRemoverUltimo(); // N3-Exe6: "truque" para deixar o rastro objetoSelecionado = objetoNovo; objetoNovo = null; } } else if (e.Key == Key.Space) { if (objetoNovo == null) { objetoNovo = new Poligono(objetoId + 1, null); objetosLista.Add(objetoNovo); objetoNovo.PontosAdicionar(new Ponto4D(mouseX, mouseY)); objetoNovo.PontosAdicionar(new Ponto4D(mouseX, mouseY)); // N3-Exe6: "troque" para deixar o rastro } else { objetoNovo.PontosAdicionar(new Ponto4D(mouseX, mouseY)); } } else if (e.Key == Key.R) { if (!poligonoQualquer) { this.poligonoQualquer = true; objetoNovo = new Poligono(objetoId + 1, null); objetoNovo.setAberto(true); objetoNovo.PontosAdicionar(new Ponto4D(this.mouseX, this.mouseY)); objetoNovo.PontosAdicionar(new Ponto4D(this.mouseX, this.mouseY)); this.objetosLista.Add(objetoNovo); objetoSelecionado = objetoNovo; } else { this.poligonoQualquer = false; objetoSelecionado = null; objetoNovo.PontosRemoverUltimo(); objetoNovo = null; } } else if (e.Key == Key.L) { //Pegar o último vertice e editar if (this.objetoSelecionado != null && this.verticeMaisProximo == null) { Poligono poligonoSelecionado = (Poligono)this.objetoSelecionado; List <Ponto4D> ponto4DsPoligono = poligonoSelecionado.getPontosPoligono(); int diferencaXSelecionado = 0; int diferencaYSelecionado = 0; foreach (Ponto4D pontoPoligono in ponto4DsPoligono) { int diferencaXCalculado = Math.Abs(Math.Abs(this.mouseX) - Math.Abs((int)pontoPoligono.X)); int diferencaYCalculado = Math.Abs(Math.Abs(this.mouseY) - Math.Abs((int)pontoPoligono.Y)); if (this.verticeMaisProximo == null || (diferencaXCalculado < diferencaXSelecionado && diferencaYCalculado < diferencaYSelecionado)) { this.verticeMaisProximo = pontoPoligono; diferencaXSelecionado = diferencaXCalculado; diferencaYSelecionado = diferencaYCalculado; } } } else { this.objetoSelecionado = null; this.verticeMaisProximo = null; } } else if (e.Key == Key.T) { //Translação Poligono poligono = (Poligono)this.objetoSelecionado; Transformacao4D transformacao4D = poligono.Matriz; double[] teste = transformacao4D.ObterDados(); this.translacaoX++; this.translacaoY++; teste[11] = this.translacaoX; teste[12] = this.translacaoY; teste[13] = this.translacaoY; Console.Write(""); } else if (e.Key == Key.Q) { //Encerrar objetoNovo.PontosRemoverUltimo(); this.createDynamicPolygon = false; objetoNovo = null; objetoSelecionado = null; } else if (e.Key == Key.N) { if (!this.createDynamicPolygon) { this.createDynamicPolygon = true; objetoSelecionado = null; objetoNovo = new Poligono(objetoId + 1, null); this.objetosLista.Add(objetoNovo); objetoNovo.PontosAdicionar(new Ponto4D(this.mouseX, this.mouseY)); objetoNovo.PontosAdicionar(new Ponto4D(this.mouseX, this.mouseY)); objetoSelecionado = objetoNovo; } else { objetoNovo.PontosUltimo().X = mouseX; objetoNovo.PontosUltimo().Y = mouseY; objetoNovo.PontosAdicionar(new Ponto4D(this.mouseX, this.mouseY)); } } else if (objetoSelecionado != null) { if (e.Key == Key.M) { Console.WriteLine(objetoSelecionado.Matriz); } else if (e.Key == Key.P) { Console.WriteLine(objetoSelecionado); } else if (e.Key == Key.I) { objetoSelecionado.AtribuirIdentidade(); } //TODO: não está atualizando a BBox com as transformações geométricas else if (e.Key == Key.Left) { objetoSelecionado.TranslacaoXYZ(-10, 0, 0); } else if (e.Key == Key.Right) { objetoSelecionado.TranslacaoXYZ(10, 0, 0); } else if (e.Key == Key.Up) { objetoSelecionado.TranslacaoXYZ(0, 10, 0); } else if (e.Key == Key.Down) { objetoSelecionado.TranslacaoXYZ(0, -10, 0); } else if (e.Key == Key.PageUp) { objetoSelecionado.EscalaXYZ(2, 2, 2); } else if (e.Key == Key.PageDown) { objetoSelecionado.EscalaXYZ(0.5, 0.5, 0.5); } else if (e.Key == Key.Home) { objetoSelecionado.EscalaXYZBBox(0.5, 0.5, 0.5); } else if (e.Key == Key.B) { if (!TRE) { TRE = true; } else { TRE = false; } } else if (e.Key == Key.C) { if (!scale) { scale = true; } else { scale = false; } } else if (e.Key == Key.X) { if (!this.rotatate) { this.rotatate = true; } else { this.rotatate = false; } } else if (e.Key == Key.End) { objetoSelecionado.EscalaXYZBBox(2, 2, 2); } else if (e.Key == Key.Number1) { objetoSelecionado.Rotacao(10); } else if (e.Key == Key.Number2) { objetoSelecionado.Rotacao(-10); } else if (e.Key == Key.Number3) { objetoSelecionado.RotacaoZBBox(10); } else if (e.Key == Key.Number4) { objetoSelecionado.RotacaoZBBox(-10); } else if (e.Key == Key.Number9) { objetoSelecionado = null; } else if (e.Key == Key.Number5) { Poligono poligonoSelecionado = (Poligono)objetoSelecionado; poligonoSelecionado.PrimitivaCor = OpenTK.Color.Red; } else if (e.Key == Key.Number6) { Poligono poligonoSelecionado = (Poligono)objetoSelecionado; poligonoSelecionado.PrimitivaCor = OpenTK.Color.Green; } else if (e.Key == Key.Number7) { Poligono poligonoSelecionado = (Poligono)objetoSelecionado; poligonoSelecionado.PrimitivaCor = OpenTK.Color.Blue; } else { Console.WriteLine(" __ Tecla não implementada."); } } else { Console.WriteLine(" __ Tecla não implementada."); } }