Example #1
0
        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);
        }
Example #2
0
        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);
        }
Example #3
0
        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);
        }
Example #5
0
        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);
        }
Example #6
0
        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);
        }
Example #8
0
        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);
        }
Example #9
0
        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 + "]");
            }
        }
Example #10
0
 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.");
     }
 }
Example #11
0
        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);
        }
Example #12
0
        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);
        }
Example #13
0
 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.");
     }
 }
Example #14
0
        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;
            }
        }
Example #15
0
        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.");
            }
        }