示例#1
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.");
     }
 }
示例#2
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.");
     }
 }
示例#3
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.");
            }
        }