// Calcula projeção // Dado o segundo vetor retorna a projeção do primeiro no segundo. public void projecao(Vetor2D vec2) { double projX = (vec2.getX() * (((x * vec2.getX()) + (y * vec2.getY())) / ((Math.Pow(vec2.getX(), 2)) + (Math.Pow(vec2.getY(), 2))))); double projY = (vec2.getY() * (((x * vec2.getX()) + (y * vec2.getY())) / ((Math.Pow(vec2.getX(), 2)) + (Math.Pow(vec2.getY(), 2))))); Console.WriteLine("Projeção vetorial = (" + Math.Round(projX, 2) + " " + Math.Round(projY, 2) + ")"); }
// Calcula angulo // Dado o segundo vetor retorna o angulo entre o primeiro e o segundo vetor. public double angulo(Vetor2D vec2) { return((Math.Acos(escalar(vec2) / (modulo() * modulo(vec2))) * 180) / Math.PI); }
// Calcula escalar // Dado o segundo vetor retorna o escalar entre o primeiro e o segundo vetor. public double escalar(Vetor2D vec2) { return((x * vec2.getX()) + (y * vec2.getY())); }
public double modulo(Vetor2D vec2) { return(Math.Sqrt(Math.Pow(vec2.getX(), 2) + Math.Pow(vec2.getY(), 2))); }
public Vetor2D projVetor(Vetor2D vet1) { return(vet1.multiplica(prodEscalar(vet1) / Math.Pow(vet1.norma(), 2))); }
public Vetor2D soma(Vetor2D vet1) { Vetor2D aux = new Vetor2D(x + vet1.getX(), y + vet1.getY()); return(aux); }
public Vetor2D multiplica(double escalar) { Vetor2D aux = new Vetor2D(escalar * x, escalar * y); return(aux); }
public double angulo(Vetor2D vet1) { return(Math.Acos(prodEscalar(vet1) / (norma() * vet1.norma()))); }
public double prodEscalar(Vetor2D vet1) { return(x * vet1.getX() + y * vet1.getY()); }