// 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) + ")"); }
static void Main(string[] args) { Vetor2D v1 = new Vetor2D(); Vetor2D v2 = new Vetor2D(); v1.constroeVetor(); v2.constroeVetor(); Console.WriteLine("Vetor 1 = (" + v1.getX() + " " + v1.getY() + ")"); Console.WriteLine("Vetor 2 = (" + v2.getX() + " " + v2.getY() + ")"); v1.set(1, 2); v2.set(4, 3); Console.WriteLine("Novo vetor 1 = (" + v1.getX() + " " + v1.getY() + ")"); Console.WriteLine("Novo vetor 2 = (" + v2.getX() + " " + v2.getY() + ")"); Console.WriteLine("Escalar = " + v1.escalar(v2)); Console.WriteLine("Modulo = " + Math.Round(v1.modulo(), 2)); Console.WriteLine("Angulo = " + Math.Round(v1.angulo(v2), 2) + "°"); v1.projecao(v2); }
public double modulo(Vetor2D vec2) { return(Math.Sqrt(Math.Pow(vec2.getX(), 2) + Math.Pow(vec2.getY(), 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())); }