From 1b0ac73da25915d4cb4d2754f7c12d1b81fc9f90 Mon Sep 17 00:00:00 2001 From: Aman kanojiya <50018596+AMANKANOJIYA@users.noreply.github.com> Date: Tue, 12 Oct 2021 15:21:27 +0530 Subject: [PATCH] Magnitude and Angle of Vector (#5225) * Magnitude and Angle Core function to find Magnitude and Angle of two Given Vector * Magnitude and Angle with Doctest added Doctest to the functions * Update linear_algebra/src/lib.py Co-authored-by: Christian Clauss * Update linear_algebra/src/lib.py Co-authored-by: Christian Clauss * Changes done and Magnitude and Angle Issues * black Co-authored-by: Christian Clauss --- linear_algebra/src/lib.py | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/linear_algebra/src/lib.py b/linear_algebra/src/lib.py index 74aeb9137..6a18df5e1 100644 --- a/linear_algebra/src/lib.py +++ b/linear_algebra/src/lib.py @@ -148,6 +148,36 @@ class Vector: else: # error case raise Exception("invalid operand!") + def magnitude(self) -> float: + """ + Magnitude of a Vector + + >>> Vector([2, 3, 4]).magnitude() + 5.385164807134504 + + """ + return sum([i ** 2 for i in self.__components]) ** (1 / 2) + + def angle(self, other: Vector, deg: bool = False) -> float: + """ + find angle between two Vector (self, Vector) + + >>> Vector([3, 4, -1]).angle(Vector([2, -1, 1])) + 1.4906464636572374 + >>> Vector([3, 4, -1]).angle(Vector([2, -1, 1]), deg = True) + 85.40775111366095 + >>> Vector([3, 4, -1]).angle(Vector([2, -1])) + Traceback (most recent call last): + ... + Exception: invalid operand! + """ + num = self * other + den = self.magnitude() * other.magnitude() + if deg: + return math.degrees(math.acos(num / den)) + else: + return math.acos(num / den) + def copy(self) -> Vector: """ copies this vector and returns it.