예제 #1
0
        } // transformacaoPerspectivaIsometrica()

        /// <summary>
        /// transformação geométrica simples, dividindo as coordenadas [x] e [y] pela
        /// coordenda 3D [z], aumentada e multiplicada esta por um [fatorGeometrico].
        /// </summary>
        /// <param name="v"></param>
        /// <param name="fatorGeometrico"></param>
        /// <returns></returns>
        public static vetor2 transformacaoPerspectivaGeometrica(vetor3 v, double fatorGeometrico)
        {
            vetor2 v2 = new vetor2((fatorGeometrico + 20.0) * v.X / (v.Z + fatorGeometrico),
                                   (fatorGeometrico + 20.0) * v.Y / (v.Z + fatorGeometrico));

            return(v2);
        } // transformacaoPerspectivaGeometrica()
예제 #2
0
        /// <summary>
        /// transformação isométrica simples, trasladando-se a coordenada 3D z para cada cordenada 2D x e y.
        /// </summary>
        /// <param name="v">vetor 3D a ser transformado em perspectiva isométrica.</param>
        /// <param name="fatorIsometrico">índice de divisão sobre a cordenada que é projetada nos eixos 2D.</param>
        /// <returns>retorna o vetor 2D transformado isometricamente.</returns>
        public static vetor2 transformacaoPerspectivaIsometrica(vetor3 v, double fatorIsometrico)
        {
            vetor2 v2 = new vetor2(v.X + v.Z / fatorIsometrico, v.Y + v.Z / fatorIsometrico);

            v2.cor = v.cor;
            return(v2);
        } // transformacaoPerspectivaIsometrica()
예제 #3
0
        } // quadranteDoVetor2D()

        /// <summary>
        /// determina se o vetor currente e o vetor parâmetro são iguais,
        /// </summary>
        /// <param name="v">vetor 2D parâmetro.</param>
        /// <returns>[true] se os vetores são iguais, [false] se não são.</returns>
        public bool igualVetor2(vetor2 v)
        {
            if ((Math.Abs(this.X - v.X) < 0.001) && (Math.Abs(this.Y - v.Y) < 0.001))
            {
                return(true);
            }
            return(false);
        } // igualVetor2()
예제 #4
0
        /// <summary>
        /// faz a normalizacao de um vetor 2D (magnitude = 1.0F);
        /// </summary>
        /// <param name="p">vetor 2D a ser normalizado.</param>
        /// <returns>retornao o vetor 2D normalizado.</returns>
        public static vetor2 normaliza(vetor2 p)
        {
            double d = (double)Math.Sqrt(p.X * p.X + p.Y * p.Y);

            return(new vetor2(p.X / d, p.Y / d, p.cor));
        }