Пример #1
0
        /// <summary>
        /// constutor.
        /// </summary>
        /// <param name="cena">Imagem para ser processada neste control (retirada dos eixos 2D).</param>
        /// <param name="location">Parâmetro de posição do canto superior esquerdo do control.</param>
        /// <param name="pai">control que servirá de container para o control currente.</param>
        ///<param name="tamanhoGzimo">determina as dimensões do Gzimo.</param>
        ///<param name="tamanhoImagens">estabelece o tamanho de cada imagem adicionada ao control</param>
        /// <param name="typeGzm">tipo de cursor especial que age sobre o control</param>
        /// <param name="extensionSize">número para aumento da área de atuação do control currente.</param>
        /// <param name="fatorIsometrico">fator de divisão do eixo 3D que é projetado nos eixos 2D.</param>
        /// <param name="tipoPerspectiva">tipo de perspectiva [true]: isométrica, [false]: geométrica.</param>
        public usrCtrBxDeterminaEixos(Bitmap _cena,
                                      PointF location,
                                      Control pai,
                                      Size tamanhoGzimo,
                                      Size tamanhoImagens,
                                      double fatorIsometrico,
                                      bool tipoPerspectiva)
        {
            if (tipoPerspectiva)
            {
                this.perspectiva = vetor3.transformacaoPerspectivaIsometrica;
            }
            else
            {
                this.perspectiva = vetor3.transformacaoPerspectivaGeometrica;
            }
            this.fatorIso = fatorIsometrico;
            this.perspectivaIsometrica     = tipoPerspectiva;
            this.typeAngleForRotationGzimo = vetor3.tipoAngulo.Relativo;
            this.Location           = new Point((int)location.X, (int)location.Y);
            this.cena               = new Bitmap(_cena);
            this.lstBasesGuardadas  = new List <vetor3[]>();
            this.cmBxBasesGuardadas = new ComboBox();
            posicaoCursor           = new PointF(location.X, location.Y);
            Matriz3DparaImagem2D.transformacaoPerspectiva perspectiva = null;
            if (tipoPerspectiva)
            {
                perspectiva = vetor3.transformacaoPerspectivaIsometrica;
            }
            else
            {
                perspectiva = vetor3.transformacaoPerspectivaGeometrica;
            }
            this.gzimosCurrentes = new GzimoEixos[1];
            //________________________________________________________________________________________________________________________
            // incializa a imagem que guardará tudo para ser desenhado neste control.
            cenaInteira = new Bitmap((int)(this.cena.Width * 4.0), (int)(this.cena.Height * 4.0));
            //_________________________________________________________________________________________________________________________

            // seta o ponteiro de função de evento de girar a roda do mouse.
            this.MouseWheel += usrCtrBxDeterminaEixos_MouseWheel;
            // seta o ponteiro de função de eventos de clicar com o mouse sobre o control.
            this.MouseDown += usrCtrBxDeterminaEixos_MouseWheel;
            // adiciona o control à window pai.
            pai.Controls.Add(this);

            // calcula o tamanho do current control.
            this.Size = new Size(this.cenaInteira.Width + 20, this.cenaInteira.Height + 20);

            // seta o control container.
            this.controlContainer = pai;
            // redesenha o control.
            this.Refresh();
        }
Пример #2
0
        } // void descentraliza()

        /// <summary>
        /// rotaciona o Gzimo eixos em um determinado plano (XZ,YZ ou XY).
        /// </summary>
        /// <param name="omega">ângulo para rotacionar o plano parâmetro, deve estar em graus.</param>
        /// <param name="pln">plano para rotacionar.</param>
        public void rotacionaGzimoEixos(double omega, vetor3.planoRotacao pln, vetor3.tipoAngulo typeAngle)
        {
            double omegaX, omegaY, omegaZ;

            omegaX = 0.0;
            omegaY = 0.0;
            omegaZ = 0.0;
            switch (pln)
            {
            case vetor3.planoRotacao.XY:
                omegaX = 0.0;
                omegaY = 0.0;
                omegaZ = omega;
                break;

            case vetor3.planoRotacao.XZ:
                omegaX = 0.0;
                omegaY = omega;
                omegaZ = 0.0;
                break;

            case vetor3.planoRotacao.YZ:
                omegaX = omega;
                omegaY = 0.0;
                omegaZ = 0.0;
                break;
            } // switch
            if (typeAngle == vetor3.tipoAngulo.Relativo)
            {
                // rotaciona os eixos.
                this.eixoXGzimo.rotacionaVetor(omegaY, omegaX, omegaZ);
                this.eixoYGzimo.rotacionaVetor(omegaY, omegaX, omegaZ);
                this.eixoZGzimo.rotacionaVetor(omegaY, omegaX, omegaZ);
                this.eixoXGzimo.normaliza();
                this.eixoYGzimo.normaliza();
                this.eixoZGzimo.normaliza();
            } // if typeAngle
            if (typeAngle == vetor3.tipoAngulo.Absoluto)
            {
                // rotaciona os eixos.
                this.eixoXGzimo.rotacionaVetorAnguloAbsoluto(omegaZ, omegaX, omegaY);
                this.eixoYGzimo.rotacionaVetorAnguloAbsoluto(omegaZ, omegaX, omegaY);
                this.eixoZGzimo.rotacionaVetorAnguloAbsoluto(omegaZ, omegaX, omegaY);
                this.eixoXGzimo.normaliza();
                this.eixoYGzimo.normaliza();
                this.eixoZGzimo.normaliza();
            } // if typeAngle
        }     // rotacionaGzimmoeixos()