頭の中でもやもやと考えていたものを、ちょっと
造形してみることにする。渦巻きを立体化してみる。
OpenSCADの本には、「時計の文字盤」の作り方を載せて
いたんだけど、この文字盤は、市販の時計用ムーブメント
を組み合わせることを想定したもの。
実はこれ、もうちょっとその先を考えていたことがあって、
3Dプリンタだけで、時計を作れないもんかなぁ?と。
つまり、コチコチと機械的に時を刻むメカ時計。
メカの時計というと、やっぱり、ゼンマイ、ガンギ車、
アンクル、キャリッジ、トゥールビヨンを使って、
コチコチと秒針が進むまでを3Dプリンタで出力して…
というのがあるわけ。
ガンギ車とか、アンクルとかは、まぁ幾何学的なもの
なので、プリミティブの組み合わせからなんとか
なっちゃうものだと思うわけど、ゼンマイ型のたぐい
は、プリミティブからは作れない。
なので、いわゆる渦巻き型を作るスクリプトを
書いてみよう、と。
ポリゴンで渦を描いて、それをlinear_extrude
で立体化する感じに。
ゼンマイの板厚、巻き数(回転角)、内径、外形
といった基礎数値を指定すると、それに合わせた
ゼンマイを吐き出してくれるスクリプトにして
みた。こんなかんじ。
$fn = 180;
function fc(i,rd, rt, w, agl)
= (rd * (rt + (i / agl) * (1-rt)) + w) * cos(i);
function fs(i,rd, rt ,w, agl)
= (rd * (rt + (i / agl) * (1-rt)) + w) * sin(i);
module obj(r1, r2, w, a) {
s = 360 / $fn;
rt = r1 / r2;
for (i = [0 : s : a -s]) {
p1 = [fc(i,r2,rt,0,a),
fs(i,r2,rt,0,a)];
p2 = [fc(i+s,r2,rt,0,a),
fs(i+s,r2,rt,0,a)];
p3 = [fc(i+s,r2,rt,w,a),
fs(i+s,r2,rt,w,a)];
p4 = [fc(i,r2,rt,w,a),
fs(i,r2,rt,w,a)];
polygon (
points = [p1, p2, p3, p4]
);
}
}
linear_extrude(height = 25) {
inner_r = 20;
outer_r = 50;
width = 1;
angle = 3600;
obj(r1 = inner_r,
r2 = outer_r,
w = width,
a = angle);
}
加工精度にかかわる特殊変数は、とりあえず$fnだけ
対応しておいた。($faと$fsは無効)
これで、板厚1mm、回転角3600度(10周分)、内側の
半径20mm、外側の半径50mm、ゼンマイの高さ25mmという
パラメタに設定して、出来たのがこんな感じ。
パラメタの設定次第で、いろんなバリエーションの
ゼンマイが作れるようにできた。
さて、こんなのとか、ガンギ車とかを3Dプリンタで
作ったりするひとなんて、いないだろうなぁ、なんて
思ってたら、
http://gigazine.net/news/20160114-3d-printed-watch/
いた。モロに、やろうと思ってたことをやってるひと
いたよ。
これ見事だな。ゼンマイ巻いてエネルギーを蓄えると、
コチコチと時を刻む、フルスペックの時計に仕上がってる。
これなんだ。これなんだよ。目指してたのは。
https://twitter.com/r_mono_lab/status/760938060703866880
24ビット、96kHzの、Raspberry Pi内蔵のシンセ。
いいなぁ。