Матрица вращения облака точек вида x,y,z вокруг собственной оси
Добрый день. Не могу исправить ошибку в коде что бы при вороте данные в формате x,y,z - вращались только вокруг собственной оси, а не "убегали в сторону".
import numpy as np
# Загрузка данных из файла data.xyz
data = np.loadtxt('data.xyz', delimiter=',')
# Определение центра вращения
x_center = np.mean(data[:, 0])
y_center = np.mean(data[:, 1])
z_center = np.mean(data[:, 2])
center = np.array([x_center, y_center, z_center])
# Угол альфа (в радианах)
alpha = np.radians(45) # Например, для угла 45 градусов
# Матрица поворота для вращения вокруг оси Z
def rotation_matrix_z(theta):
return np.array([[np.cos(theta), -np.sin(theta), 0],
[np.sin(theta), np.cos(theta), 0],
[0, 0, 1]])
# Матрица поворота
rotation_matrix = rotation_matrix_z(alpha)
# Перенос данных к центру вращения
data_centered = data - center
# Поворот данных
data_rotated = np.dot(data_centered, rotation_matrix.T) + center
# Сохранение данных в новый файл rotated_data.xyz
np.savetxt('rotated_data.xyz', data_rotated, delimiter=',')
print("Координаты повернуты вокруг оси Z на угол alpha и сохранены в файл rotated_data.xyz.")