设计一个三维向量类(Vector),包含x, y, z三个坐标,默认为0。
时间: 2024-03-08 22:46:06 浏览: 63
实现一个三维坐标的Point类。
4星 · 用户满意度95%
好的,我可以帮你设计一个简单的三维向量类(Vector)。
```python
class Vector:
def __init__(self, x=0, y=0, z=0):
self.x = x
self.y = y
self.z = z
def __str__(self):
return f"({self.x}, {self.y}, {self.z})"
def __add__(self, other):
return Vector(self.x + other.x, self.y + other.y, self.z + other.z)
def __sub__(self, other):
return Vector(self.x - other.x, self.y - other.y, self.z - other.z)
def __mul__(self, other):
if isinstance(other, Vector):
return Vector(self.y * other.z - self.z * other.y,
self.z * other.x - self.x * other.z,
self.x * other.y - self.y * other.x)
elif isinstance(other, (int, float)):
return Vector(self.x * other, self.y * other, self.z * other)
def __rmul__(self, other):
return self.__mul__(other)
```
这个向量类包含了三个坐标值 x, y, z,默认为0。其中,我们定义了几个方法:
- `__init__(self, x=0, y=0, z=0)`:初始化方法,可以传入三个参数 x, y, z,如果没有传入,则默认为0。
- `__str__(self)`:输出向量的字符串表示,格式为 "(x, y, z)"。
- `__add__(self, other)`:向量加法,返回两个向量相加的结果。
- `__sub__(self, other)`:向量减法,返回两个向量相减的结果。
- `__mul__(self, other)`:向量乘法,可以传入另一个向量或一个标量,返回两个向量的叉积或向量与标量的乘积。
- `__rmul__(self, other)`:向量与标量的乘法,实现了标量在左边的乘法。
这个向量类还可以进一步扩展,比如增加向量的长度、归一化等方法。
阅读全文