Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Vector:
- """Класс вектора с координатами x, y, z"""
- x: float
- y: float
- z: float
- def __init__(self, x: float = 0.0, y: float = 0.0, z: float = 0.0):
- """
- Инициализируется без параметров - тогда создастся вектор (0, 0, 0)
- Инициализируется с 3-мя параметрами (float) - вектор {x, y, z}
- """
- self.x = x
- self.y = y
- self.z = z
- def get_distance(self, pt: "Vector") -> float:
- """Принимает вектор pt и возвращает расстояние до данного вектора"""
- return ((self.x - pt.x) ** 2 + (self.y - pt.y) ** 2 + (self.z - pt.z) ** 2) ** .5
- @property
- def length(self) -> float:
- """Возвращает длину вектора"""
- return self.get_distance(Vector())
- def __mul__(self, other: float) -> "Vector":
- return Vector(self.x * other, self.y * other, self.z * other)
- @property
- def normalized(self):
- """Возвращает единичный вектор, сонаправленный данному"""
- return self * (1 / self.length)
- def __str__(self):
- return "{{{:.2f}, {:.2f}, {:.2f}}}".format(self.x, self.y, self.z)
- if __name__ == '__main__':
- pt1 = Vector(1, 1, 1)
- pt2 = Vector(2, 2, 2)
- print(f"Distance from {pt1} to {pt2} is {round(pt1.get_distance(pt2), 2)}")
- print(f"Length {pt1} is {round(pt1.length, 2)}")
- print(f"Length {pt1} is {round(pt2.length, 2)}")
- print(f"Normalized vector for {pt1} is {pt1.normalized}")
- print(f"Normalized vector for {pt2} is {pt2.normalized}")
- print(help(pt1))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement