Back to questions
Junior — Middle
48
Каким образом осуществить вращение набора 3D-координатных точек на 30 градусов вокруг выбранной оси координат?
Answer from AI
sobes.tech AI
Для вращения набора 3D-точек на 30 градусов вокруг выбранной оси (например, оси X, Y или Z) можно использовать матрицы поворота. В Python удобно применять библиотеку NumPy для работы с матрицами и векторами.
Пример вращения вокруг оси Z на 30 градусов:
import numpy as np
def rotate_points(points, angle_deg, axis='z'):
angle_rad = np.radians(angle_deg)
if axis == 'x':
R = np.array([
[1, 0, 0],
[0, np.cos(angle_rad), -np.sin(angle_rad)],
[0, np.sin(angle_rad), np.cos(angle_rad)]
])
elif axis == 'y':
R = np.array([
[np.cos(angle_rad), 0, np.sin(angle_rad)],
[0, 1, 0],
[-np.sin(angle_rad), 0, np.cos(angle_rad)]
])
elif axis == 'z':
R = np.array([
[np.cos(angle_rad), -np.sin(angle_rad), 0],
[np.sin(angle_rad), np.cos(angle_rad), 0],
[0, 0, 1]
])
else:
raise ValueError("Axis must be 'x', 'y' or 'z'")
rotated_points = points @ R.T # умножение каждой точки на матрицу поворота
return rotated_points
# Пример использования:
points = np.array([
[1, 0, 0],
[0, 1, 0],
[0, 0, 1]
])
rotated = rotate_points(points, 30, axis='z')
print(rotated)
Здесь points — массив с координатами точек (каждая строка — точка), функция возвращает новые координаты после поворота.