python,三维坐标旋转代码
时间: 2023-08-26 21:03:46 浏览: 515
以下是 Python 中三维坐标旋转的代码示例:
```python
import math
# 定义三维坐标点类
class Point:
def __init__(self, x, y, z):
self.x = x
self.y = y
self.z = z
# 定义三维坐标系旋转函数
def rotate_point(point, angle_x, angle_y, angle_z):
# 计算旋转矩阵
cos_x = math.cos(angle_x)
sin_x = math.sin(angle_x)
cos_y = math.cos(angle_y)
sin_y = math.sin(angle_y)
cos_z = math.cos(angle_z)
sin_z = math.sin(angle_z)
# X 轴旋转
new_y = point.y * cos_x - point.z * sin_x
new_z = point.y * sin_x + point.z * cos_x
point.y = new_y
point.z = new_z
# Y 轴旋转
new_x = point.x * cos_y + point.z * sin_y
new_z = -point.x * sin_y + point.z * cos_y
point.x = new_x
point.z = new_z
# Z 轴旋转
new_x = point.x * cos_z - point.y * sin_z
new_y = point.x * sin_z + point.y * cos_z
point.x = new_x
point.y = new_y
return point
# 测试
p = Point(1, 0, 0)
print("原坐标:", p.x, p.y, p.z)
p = rotate_point(p, math.pi/2, 0, 0)
print("X 轴旋转 90 度后坐标:", p.x, p.y, p.z)
p = rotate_point(p, 0, math.pi/2, 0)
print("Y 轴旋转 90 度后坐标:", p.x, p.y, p.z)
p = rotate_point(p, 0, 0, math.pi/2)
print("Z 轴旋转 90 度后坐标:", p.x, p.y, p.z)
```
该代码定义了一个三维坐标点类 `Point`,并且提供了一个 `rotate_point` 函数用于旋转三维坐标系。`rotate_point` 函数接受一个三维坐标点对象、三个角度参数(分别表示绕 X 轴、Y 轴、Z 轴旋转的角度),并且返回旋转后的新坐标点。该函数内部实现了三维坐标系的旋转矩阵计算,以及绕 X/Y/Z 轴的旋转操作。最后,该代码进行了一系列测试,展示了三维坐标系旋转的效果。
阅读全文