Учитывая список углов поворота (позволяет говорить о оси X):Что такое правильный способ создать Numpy массив преобразования матриц
import numpy as np
x_axis_rotations = np.radians([0,10,32,44,165])
Я могу создать массив матриц, соответствующие эти углы, делая так:
matrices = []
for angle in x_axis_rotations:
matrices.append(np.asarray([[1 , 0 , 0],[0, np.cos(angle), -np.sin(angle)], [0, np.sin(angle), np.cos(angle)]]))
matrices = np.array(matrices)
Это будет работать, но он не использует сильный Numpy для работы с большими массивами ... так что, если мой массив углов в миллионах, делая это таким образом, не будет очень быстро.
Есть ли лучший (более быстрый) способ создания массива матриц преобразования из массива входов?
Так что, если я правильно понимаю, вы хотите 3D-массив? Откуда поступает вход? Файл или что-то, что вы генерируете во время выполнения? – ventsyv
Не могли бы вы объяснить, почему вы хотите хранить эти матрицы, а не вычислять их при их использовании? – Simpom
@Simpom Я хочу реализовать технику «точка-треугольник», описанную в [этой статье] (http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.479.8237&rep=rep1&type=pdf). Идея состоит в том, что путем предварительной вычисления матрицы преобразования для каждого треугольника сетки становится возможным уменьшить 3D-расстояние от задачи к точкам треугольника до более простой двумерной, которая может быть рассчитана быстрее, чем при выполнении барицентрического вычисления. Если все, что я хочу, это одноточечный запрос, то да, нет необходимости вычислять матрицы. Но если у меня есть миллион точек для запроса, это должно оказаться полезным. – Fnord