Матрица вращения облака точек вида x,y,z вокруг собственной оси

Матрица поворота данных вида xyz вокруг собственной оси Добрый день. Не могу исправить ошибку в коде что бы при вороте данные в формате 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.")

Ответы (0 шт):