Advertisement
Leamich

class vector

Sep 14th, 2023
837
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.76 KB | None | 0 0
  1. class Vector:
  2.     """Класс вектора с координатами x, y, z"""
  3.     x: float
  4.     y: float
  5.     z: float
  6.  
  7.     def __init__(self, x: float = 0.0, y: float = 0.0, z: float = 0.0):
  8.         """
  9.        Инициализируется без параметров - тогда создастся вектор (0, 0, 0)
  10.        Инициализируется с 3-мя параметрами (float) - вектор {x, y, z}
  11.        """
  12.         self.x = x
  13.         self.y = y
  14.         self.z = z
  15.  
  16.     def get_distance(self, pt: "Vector") -> float:
  17.         """Принимает вектор pt и возвращает расстояние до данного вектора"""
  18.         return ((self.x - pt.x) ** 2 + (self.y - pt.y) ** 2 + (self.z - pt.z) ** 2) ** .5
  19.  
  20.     @property
  21.     def length(self) -> float:
  22.         """Возвращает длину вектора"""
  23.         return self.get_distance(Vector())
  24.  
  25.     def __mul__(self, other: float) -> "Vector":
  26.         return Vector(self.x * other, self.y * other, self.z * other)
  27.  
  28.     @property
  29.     def normalized(self):
  30.         """Возвращает единичный вектор, сонаправленный данному"""
  31.         return self * (1 / self.length)
  32.  
  33.     def __str__(self):
  34.         return "{{{:.2f}, {:.2f}, {:.2f}}}".format(self.x, self.y, self.z)
  35.  
  36.  
  37. if __name__ == '__main__':
  38.     pt1 = Vector(1, 1, 1)
  39.     pt2 = Vector(2, 2, 2)
  40.     print(f"Distance from {pt1} to {pt2} is {round(pt1.get_distance(pt2), 2)}")
  41.     print(f"Length {pt1} is {round(pt1.length, 2)}")
  42.     print(f"Length {pt1} is {round(pt2.length, 2)}")
  43.     print(f"Normalized vector for {pt1} is {pt1.normalized}")
  44.     print(f"Normalized vector for {pt2} is {pt2.normalized}")
  45.     print(help(pt1))
  46.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement