Как преобразовать точки в фиксированную форму независимо от их вращения? ⇐ Python

Программы на Python
Anonymous
Как преобразовать точки в фиксированную форму независимо от их вращения?

Сообщение Anonymous »

У нас есть несколько точек в 3D пространстве. Две из этих точек лежат точно на оси Y. Проблема в том, что точки могли быть повернуты. Теперь, как мне преобразовать точки, независимо от их вращения, в фиксированную форму?
Другими словами, независимо от направления, в котором она была повернута, она должна быть преобразована в стандартную и фиксированную форму.

Буду очень признателен за вашу помощь.

Код: Выделить всё

points = np.array([[0.,0.,0.]
[-0.075135,0.538134,-0.323848]
[-0.,0.697979,-0.]
[-0.105474,0.11303,-0.087109]
[-0.169698,0.267493,-0.465798]])

# points = rotate_points_around_point(points, 180, "y", points[0])

points = np.array([[0.,0.,0.]
[ 0.075135,0.538134,0.323848]
[-0.,0.697979,0.]
[ 0.105474,0.11303,0.087109]
[ 0.169698,0.267493,0.465798]])}

# points = rotate_points_around_point(points, 20, "y", points[0])

points = np.array([[0.,0.,0.]
[ 0.181367,0.538134,0.27862]
[-0.,0.697979,0.]
[ 0.128906,0.11303,0.045782]
[ 0.318777,0.267493,0.379667]])
Если точки вводятся в функцию с любым поворотом, выходные данные должны быть в фиксированной форме. Другой пример: если мы представим себе автомобиль[/b], колеса автомобиля всегда должны находиться на земле. Стандартная форма автомобиля такова, что колеса находятся на земле.
[img]https://i. sstatic.net/WZ0abiwX.jpg[/img]

Изображение

Это всего лишь пример с 5 баллами. Может быть 100 баллов. Важно то, что при любом вращении вокруг оси Y он должен принимать фиксированную форму.
Что мне пришло в голову, так это проверить к какой плоскости точки ближе всего. Например, если они расположены ближе к плоскости XZ, поверните точки так, чтобы они находились на минимальном расстоянии от этой плоскости. Однако эта идея может быть неверной.
Например, независимо от вращения входных данных, выходные данные должны быть преобразованы следующим образом:

Код: Выделить всё

[[ 0.        0.        0.      ]
[ 0.075135  0.538134  0.323848]
[-0.        0.697979  0.      ]
[ 0.105474  0.11303   0.087109]
[ 0.169698  0.267493  0.465798]]
Я ценю ваши идеи и рекомендации.

Подробнее здесь: https://stackoverflow.com/questions/790 ... r-rotation

Вернуться в «Python»