Я пытаюсь создать объект в openSCAD, который определяется несколькими частями, каждая из которых имеет длину, крен, рыскание и шаг.Я нашел библиотеку, которая может помочь, но я изо всех сил в соединении частей, чтобы сформировать один объект.Как я могу соединить эти детали в правильной ориентации?
На следующем рисунке показан минималистский пример того, что я хочу: https://imgur.com/a/G0CtDSj
На изображении вы видите объект, состоящий издве части: одна идет вверх и одна перпендикулярна первой части.Обе части могут иметь рыскание, крен и тангаж.Второй объект (всегда) связан с концом первого объекта.
Я получил это частично в openSCAD с использованием scad-utils и list-comppresion-demos.Но только если первый объект имеет только один из кренов, тангажа и рыскания со значением, отличным от 0. Если два или все из них имеют другое значение, то у второго объекта не будет правильной начальной ориентации.
Вы можете найти мой код здесь: http://snippi.com/s/fao18l8.
Здесь происходит ориентация вторых объектов.С t1 - первый объект, t2 - второй объект.
skin(t1_object);
t1_top = t1_object[len(t1_object)-1][0];
translate(t1_top) // place on top of the t1
rotate([90,0,0]) // rotate 90 degrees
rotate([t1Yaw,t1Roll,-t1Pitch]) // rotate to same orientation as t2
translate([-thickness,-thickness,-thickness]) // change position to really overlap other object
skin(t2_object);
Я думаю, что мне не хватает математики для объединения крена, тангажа и рыскания.Я также попытался изучить используемые библиотеки, но у них не так много документации, и я все время теряюсь в их реализации своего кода (много рекурсии).Может ли кто-нибудь указать мне правильное направление?