サイクロイド歯車を手で描く
プラグインなどを使わずに Fusion360 だけでサイクロイド歯車を描いてみる†
LANG: p5js_live
// =============== ここが設定
const gif_url = 'https://dora.bk.tsukuba.ac.jp/~takeuchi/?plugin=attach&refer=%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2%2FFusion360%2F%E3%82%B5%E3%82%A4%E3%82%AF%E3%83%AD%E3%82%A4%E3%83%89%E6%AD%AF%E8%BB%8A%E3%82%92%E6%89%8B%E3%81%A7%E6%8F%8F%E3%81%8F&openfile=cycloid_gear.gif';
const multi = 1; // スライダーは multi 回ループで最大値になる
const fps = 10; // 描画頻度 (frame per second)
const maxWidth = 600; // 横幅最大値
// ================ ここから下は汎用コード
let gif = null;
let frameSlider = null;
let w, h;
p.preload = () => gif = p.loadImage(gif_url);
const draw = () => {
let index = frameSlider.value();
gif.setFrame(index % gif.numFrames()); // フレームを選択して
p.image(gif, 0, 0, w, h); // 描画
}
p.setup = () => {
p.frameRate(fps);
w = Math.min(maxWidth, gif.width);
h = gif.height * w / gif.width;
p.createCanvas(w, h + 20);
frameSlider = p.createSlider(0, gif.numFrames() * multi - 1);
frameSlider.value(0);
frameSlider.position(0, h);
frameSlider.size(w);
frameSlider.input(draw);
draw();
}
p.draw = () => {
if(p.mouseIsPressed) return;
frameSlider.value((frameSlider.value() + 1) % (gif.numFrames() * multi));
draw();
}
書き方†
- 2つの基準円が接する点に、それぞれの基準円の 1/3 の円を追加して4つの円を描く
- ここでは直径 60mm と 30mm の歯車を作るので、追加で 20mm と 10mm の円を描いた
- 基準円上を2つの小円が滑らずに転がった際に最初の接点が描く軌道が歯形になる
- 中心から見た小円の中心までの半径と、小円の半径とを、基準円と小円との直径の比率だけ異なる角度で回してやるとこの歯形曲線上の点を得られる
60mm の歯車の方はこんな感じ
始めの接点からピッチの 1/4 ずつを取って歯形とする。
30mm の歯車の方はこんな感じ
始めの接点からピッチの 1/4 ずつを取って歯形とする。
押し出して鏡面対称で複製
円周パターン
完成
フィレットを追加する†
歯先を 1mm 伸ばした点を基準としてトロコイド曲線を描いで歯元形状を決める。
埋める。
円周パターンして完成
歯先を延長するよりも、歯先を丸めた方が良いのかも†
サイクロイド歯車の歯先は先鋭になるので、上のように歯先をさらに延長して頂隙を作るのではなく、むしろ歯先を丸めることで頂隙を確保しつつ、トロコイド曲線はほぼ本来の歯先位置を基準に書いた方が美しい歯形が得られそう。
質問・コメント†
添付ファイル:
Counter: 170 (from 2010/06/03),
today: 1,
yesterday: 4










