Пример #1
0
        private void picBoxPrincipal_MouseMove(object sender, MouseEventArgs e)
        {
            switch (e.Button)
            {
            case MouseButtons.Right:
                cont++;
                if (cont > 3)
                {
                    Ponto p = new Ponto();
                    objeto.pontoCentral(p);
                    Aplicacoes.transladar(-p.x, -p.y, -p.z, objeto);
                    Aplicacoes.rotacionarZ(((e.Y - My) * 0.1) * (Math.PI / 180), objeto);
                    Aplicacoes.transladar(p.x, p.y, p.z, objeto);

                    desenharObjeto(bm, objeto);
                    cont = 0;
                }
                break;

            case MouseButtons.Left:
                cont++;
                if (cont > 3)
                {
                    Ponto p = new Ponto();
                    objeto.pontoCentral(p);

                    Aplicacoes.transladar(-p.x, -p.y, -p.z, objeto);
                    Aplicacoes.rotacionarX(((e.Y - My) * 0.1) * (Math.PI / 180), objeto);
                    Aplicacoes.rotacionarY(((e.X - Mx) * 0.1) * (Math.PI / 180), objeto);
                    Aplicacoes.transladar(p.x, p.y, p.z, objeto);
                    desenharObjeto(bm, objeto);

                    if (checkBoxVistas.Checked)
                    {
                        obS.pontoCentral(p);
                        Aplicacoes.transladar(-p.x, -p.y, -p.z, obS);
                        Aplicacoes.rotacionarZ(((e.Y - My) * 0.1) * (Math.PI / 180), obS);
                        Aplicacoes.transladar(p.x, p.y, p.z, obS);
                        desenharVista(bmS, obS);
                        picBoxSuperior.Image = bmS;

                        obF.pontoCentral(p);
                        Aplicacoes.transladar(-p.x, -p.y, -p.z, obF);
                        Aplicacoes.rotacionarY(((e.X - Mx) * 0.1) * (Math.PI / 180), obF);
                        Aplicacoes.transladar(p.x, p.y, p.z, obF);
                        desenharVista(bmF, obF);
                        picBoxFrontal.Image = bmF;

                        obL.pontoCentral(p);
                        Aplicacoes.transladar(-p.x, -p.y, -p.z, obL);
                        Aplicacoes.rotacionarX(((e.Y - My) * 0.1) * (Math.PI / 180), obL);
                        Aplicacoes.transladar(p.x, p.y, p.z, obL);
                        desenharVista(bmL, obL);
                        picBoxLateral.Image = bmL;
                    }
                    cont = 0;
                }
                break;
            }
        }
Пример #2
0
        private void btnAbrirOBJ_Click(object sender, EventArgs e)
        {
            openFileDialog.FileName = "";
            openFileDialog.Filter   = "Object (*.obj)|*.obj";
            if (openFileDialog.ShowDialog() == DialogResult.OK)
            {
                picBoxPrincipal.Image = bm;
                System.IO.StreamReader sr = new System.IO.StreamReader(openFileDialog.FileName);
                objeto = new OBJ();
                Aplicacoes.AbrirOBJ(objeto, sr, cx, cy);
                sr.Close();

                Ponto p = new Ponto();
                objeto.pontoCentral(p);
                Aplicacoes.transladar(-p.x, -p.y, -p.z, objeto);
                Aplicacoes.rotacionarZ(Math.PI, objeto);
                Aplicacoes.transladar(p.x, p.y, p.z, objeto);

                desenharObjeto(bm, objeto);

                int tam;

                Aplicacoes.transladar(-p.x, -p.y, -p.z, objeto);
                Aplicacoes.escalar(0.66, 0.66, 0.66, objeto);
                Aplicacoes.transladar(p.x - cx + 101, p.y - cy + 95, p.z - (cx + cy) / 2 + (101 + 95) / 2, objeto);
                obF       = new OBJ();
                obS       = new OBJ();
                obL       = new OBJ();
                obF.faces = obS.faces = obL.faces = objeto.faces;
                tam       = objeto.pontosOri.Count;
                for (int i = 0; i < tam; i++)
                {
                    obF.pontosOri.Add(new Ponto(objeto.pontosAtuais.ElementAt <Ponto>(i)));
                    obS.pontosOri.Add(new Ponto(objeto.pontosAtuais.ElementAt <Ponto>(i)));
                    obL.pontosOri.Add(new Ponto(objeto.pontosAtuais.ElementAt <Ponto>(i)));

                    obF.pontosAtuais.Add(new Ponto(objeto.pontosAtuais.ElementAt <Ponto>(i)));
                    obS.pontosAtuais.Add(new Ponto(objeto.pontosAtuais.ElementAt <Ponto>(i)));
                    obL.pontosAtuais.Add(new Ponto(objeto.pontosAtuais.ElementAt <Ponto>(i)));
                }
                Aplicacoes.transladar(-(p.x - cx + 101), -(p.y - cy + 95), -(p.z - (cx + cy) / 2 + (101 + 95) / 2), objeto);
                Aplicacoes.escalar(1.34, 1.34, 1.34, objeto);
                Aplicacoes.transladar(p.x, p.y, p.z, objeto);

                obS.pontoCentralOri(p);
                Aplicacoes.transladar(-p.x, -p.y, -p.z, obS);
                Aplicacoes.rotacionarX((90 * Math.PI) / 180, obS);
                Aplicacoes.transladar(p.x, p.y, p.z, obS);
                obL.pontoCentralOri(p);
                Aplicacoes.transladar(-p.x, -p.y, -p.z, obL);
                Aplicacoes.rotacionarY((90 * Math.PI) / 180, obL);
                Aplicacoes.transladar(p.x, p.y, p.z, obL);
            }
        }