} // 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()
/// <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()
} // 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()
/// <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)); }