Кто-то спросил меня недавно, могу ли я напечатать браслет с изображением, выгравированным на его стороне.Оберните изображение вокруг цилиндра
Для меня проблема проста: у меня есть 2-я декартова система (x, y), которая выражает точки векторизованного изображения, отправленного мной человеком. Я хочу рассматривать их как трехмерную цилиндрическую систему (theta, r, z '), где r постоянна. Наконец, я хочу преобразовать эту трехмерную цилиндрическую систему в 3d-декартовую систему (x ', y', z ') обычным способом.
Итак:
z' = y
y' = r cos(x)
x' = r sin(x)
Проблема заключается в том, я не знаю, как выразить это OpenSCAD. Существует опция преобразования матрицы с использованием multmatrix(), но это допускает только линейное преобразование - т. Е. Я не могу выразить такие вещи, как cos (x), по крайней мере, насколько мне известно.
То, что я хочу, это либо:
существующий модуль/хак, чтобы выразить это преобразование, или
общий способ выполнения за вершинных преобразований, как и вершинных шейдеров в GLSL
По крайней мере, можно ли подтвердить, что такие вещи недоступны в OpenSCAD?
я могу Посмотрите, как это работает как решение. Я знаю, что поверхность() может использоваться на изображении, иначе я бы задал этот вопрос. Проблема заключается не в том, как преобразовать изображение в трехмерную фигуру, а в том, как сгибать полученную трехмерную фигуру, чтобы она соответствовала сторонам браслета. – 16807
Так я имел в виду: поверните свой браслет с осью, параллельной оси y, и вычислите для каждой точки на x-y-плоскости значение z по окружности вашего браслета.Используя эти значения в surface.dat, вы получаете с поверхностью() контраст нижней части вашего браслета. Вы можете настроить x и z на глубину гравировки. Как и в случае с поверхностью() только одна уникальная точка z для каждой точки, возможно, вам нужно разделить несколько секторов. –