python设计一个三维向量类,并实现向量的加法、减法以及向量与标量的乘法与浮点除法和向下取整除法运算
时间: 2024-05-09 22:15:21 浏览: 214
c++实现任意维数向量类的操作.7z
以下是一个简单的实现:
```python
import math
class Vector3D:
def __init__(self, x, y, z):
self.x = x
self.y = y
self.z = z
def __add__(self, other):
return Vector3D(self.x + other.x, self.y + other.y, self.z + other.z)
def __sub__(self, other):
return Vector3D(self.x - other.x, self.y - other.y, self.z - other.z)
def __mul__(self, value):
if isinstance(value, Vector3D):
return Vector3D(self.x * value.x, self.y * value.y, self.z * value.z)
else:
return Vector3D(self.x * value, self.y * value, self.z * value)
def __truediv__(self, value):
return Vector3D(self.x / value, self.y / value, self.z / value)
def __floordiv__(self, value):
return Vector3D(self.x // value, self.y // value, self.z // value)
def __repr__(self):
return f"Vector3D({self.x}, {self.y}, {self.z})"
def length(self):
return math.sqrt(self.x ** 2 + self.y ** 2 + self.z ** 2)
def normalize(self):
length = self.length()
if length != 0:
self.x /= length
self.y /= length
self.z /= length
v1 = Vector3D(1, 2, 3)
v2 = Vector3D(4, 5, 6)
print(v1 + v2) # Vector3D(5, 7, 9)
print(v1 - v2) # Vector3D(-3, -3, -3)
print(v1 * 2) # Vector3D(2, 4, 6)
print(v1 / 2) # Vector3D(0.5, 1.0, 1.5)
print(v1 // 2) # Vector3D(0, 1, 1)
```
在这个实现中,我们定义了一个 `Vector3D` 类,该类具有三个实例变量 `x`,`y` 和 `z`,代表向量的三个分量。
我们还定义了几个运算符重载方法,包括向量加法、向量减法、向量标量乘法、向量浮点除法和向量向下取整除法。这些方法都返回一个新的 `Vector3D` 对象。
我们还定义了 `length()` 方法来计算向量的长度,并定义了 `normalize()` 方法来将向量归一化为单位向量。
最后,我们在示例中展示了 `Vector3D` 类的一些用法。
阅读全文