设计一个三维向量类Vector3D,包含三维向量的一些基本运算,如加法、减法以及点乘、叉乘。如v1 = (1, 2, 3),v2 = (4, 5, 6),运行效果如图1所示
时间: 2024-02-29 17:53:07 浏览: 79
根据矢量的点乘与叉乘可以算出:-三维坐标变换
好的,我可以为您设计一个三维向量类Vector3D。以下是代码实现:
```python
class Vector3D:
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 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 dot_product(self, other):
return self.x * other.x + self.y * other.y + self.z * other.z
def cross_product(self, other):
return Vector3D(self.y * other.z - self.z * other.y,
self.z * other.x - self.x * other.z,
self.x * other.y - self.y * other.x)
```
在上述代码中,我们定义了一个向量类Vector3D,它包含三个坐标x、y、z。我们还实现了向量的加法、减法、点乘和叉乘。
在向量的加减法中,我们可以使用Python中的运算符重载来实现向量的加减法操作。在点乘和叉乘中,我们使用向量的数学公式来实现。
接下来,我们可以测试一下这个向量类:
```python
v1 = Vector3D(1, 2, 3)
v2 = Vector3D(4, 5, 6)
print(f'v1 = {v1}')
print(f'v2 = {v2}')
print(f'v1 + v2 = {v1 + v2}')
print(f'v1 - v2 = {v1 - v2}')
print(f'v1 · v2 = {v1.dot_product(v2)}')
print(f'v1 x v2 = {v1.cross_product(v2)}')
```
运行结果如下:
```
v1 = (1, 2, 3)
v2 = (4, 5, 6)
v1 + v2 = (5, 7, 9)
v1 - v2 = (-3, -3, -3)
v1 · v2 = 32
v1 x v2 = (-3, 6, -3)
```
我们可以看到,向量的加减法、点乘和叉乘都得到了正确的结果。
阅读全文