Здравствуйте, у меня стоит следующая задача: есть сборка, в ней нужно для каждой детали вычислить углы наклона относительно осей. Например по оси Х угол=...б по оси У угол=... по оси Z угол=... Подскажите какой интерфейс использовать или сам алгоритм вычисления
Для матрицы трансформации на углы 0.3 и 0.7
M
[[ 0.73068165 0.29552021 0.61544466 0. ]
[-0.22602632 0.95533649 -0.19037934 0. ]
[-0.64421769 0. 0.76484219 0. ]
[ 0. 0. 0. 1. ]]
по адресу:
http://www.rossprogrammproduct.com/translations/Matrix%20and%20Quaternion%20FAQ.htm Вопрос 37.
Рассказывают про значение в матрице, равное синусу одного из углов, только оно оказалось в другом месте.
Если посмотреть функции от углов
>>> print math.sin(0.3),math.cos(0.3),math.sin(0.7),math.cos(0.7)
0.295520206661 0.955336489126 0.644217687238 0.764842187284
значение 0.644217687238 есть в матрице.
Один угол есть, со вторым наверное легче.
>>>
Цитироватьдля каждой детали вычислить углы наклона относительно осей
Может быть, вопрос нужно сформулировать так: Вычислить углы наклона ЛСК детали относительно осей АСК?
А то не понятно, что считать первой осью (прямой, линейным ребром или плоскостью) делали, относительно которой требуется найти угол "относительно оси".
Вторая ось в Вашем вопросе тоже не конкретизирована (это может быть как другая ось ЛСК этой же детали, оси АСК, оси ЛСК других деталей и т.д.).
Если моя версия Вашего вопроса верная, то похожий на днях рассматривался: http://forum.ascon.ru/index.php/topic,29230.0.html (http://forum.ascon.ru/index.php/topic,29230.0.html)
(Вы же его и задавали).
Я имел в виду угол наклона детали относительно ЛСК детали
ЦитироватьЯ имел в виду угол наклона детали относительно ЛСК детали
Математически угол можно определить только в трех случаях:
1) между двумя прямыми,
2) между прямой и плоскостью, и
3) между двумя плоскостями.
(3-й вариант Вам не подходит, т.к. мы ищем углы с осями ЛСК, которые являются прямыми.)
Если отвечать на Ваш вопрос формально, то я совершенно не представляю, каким образом измерить угол наклона детали, которая является, например, шаром, относительно чего-то (того же ЛСК).
Поэтому необходимо конкретизировать вопрос, т.е., указать, относительно каких прямых (прямые ребра детали) или плоскостей (плоские грани детали) нужно определить угол с ЛСК.
Другой вариант, - вероятно, Вы имеете ввиду
углы, указанные при вставке Вашей детали в сборку? Тогда вопрос так и нужно было ставить.
В этом случае - Вам сюда:
1) ksPart::GetPlacements
2) ksPlacement::GetAxis