幾何学プラレールを本当に走れるように3Dプリンタで作りたい。その1
カテゴリー:#DIYプラレール(記事数:26)

2019.01.22

幾何学プラレールを本当に走れるように3Dプリンタで作りたい。その1

この前紹介したこれ

リンク先では市販されているレールを使い、美しいけど実際は走れない感じで組んでいますが、これ、俺が遊んでいる3Dプリンターのプラレール出力プログラムを使えば走れるように作れるかも!

リンク先の画像をよく見ると、6回右に曲がって、1回左に曲がる。を繰り返しているように見えます。プラレールの標準レール(曲がったやつ)は半径は不明ですが、8個つなぐと円形になるので、1つあたり45度、すなわち270度進んで、45度反対方向にカーブって事。実際にどうなるかパソコン上で試してみました。出力のための座標決定の計算に必要な要素としてはこんな感じ(個人的メモ)


OpenSCADは関数のスコープが謎なので、Perlで組んでシミュレーションしてみたところ


おお!!確かに同じようにつながった!!!!!ただし白い線でレールのつなぎ目を表していますが、レールを45度間隔で出力した場合ではレールのつなぎ目にレールが重なる部分がくるようで問題ありそうです。う~ん。カスタムで分岐させつつ、レールの出力単位を変更する必要がありそうです。

使ったPerlのスクリプトは下記のような感じ。レール1つ分が終了した後の進行方向は上記の手書きの式を微分して求めています。

-----------------------------------
#!/usr/bin/perl
#
use GD;

$im = GD::Image->new(1000,1000);
$black=$im->colorAllocate(0,0,0);
$white=$im->colorAllocate(255,255,255);
$red=$im->colorAllocate(255,0,0);
$green=$im->colorAllocate(0,128,0);

$im->line(500,0,500,1000,$green);
$im->line(0,500,1000,500,$green);

@result=(0,0,0,1);
for($i=1;$i<=8;$i++){
@result=&right(@result);
@result=&right(@result);
@result=&right(@result);
@result=&right(@result);
@result=&right(@result);
@result=&right(@result);
@result=&left(@result);
}

$png = $im->png;
open (WR,'>out.png');
binmode WR;
print WR $png;
close WR;

exit;

sub right(){
($x1,$y1,$xa,$ya)=@_;
$r=100;
$xc=$x1+$ya*$r*sqrt(1/($ya*$ya+$xa*$xa));
$yc=$y1-$xa*$r*sqrt(1/($ya*$ya+$xa*$xa));

$im->filledArc(500+$x1,500+$y1,4,4,0,360,$white);
for ($t=0;$t<=45;$t=$t+0.05){
$x2=$xc+cos($t/360*3.14*2)*($x1-$xc)+sin($t/360*3.14*2)*($y1-$yc);
$y2=$yc+cos($t/360*3.14*2)*($y1-$yc)+sin($t/360*3.14*2)*(-$x1+$xc);
#bibun
$xv=-sin($t/360*3.14*2)*($x1-$xc)+cos($t/360*3.14*2)*($y1-$yc);
$yv=-sin($t/360*3.14*2)*($y1-$yc)+cos($t/360*3.14*2)*(-$x1+$xc);
$im->filledArc(500+$x2,500+$y2,1,1,0,360,$red);
};
$im->filledArc(500+$x2,500+$y2,3,3,0,360,$red);
return ($x2,$y2,$xv,$yv);
}


sub left(){
($x1,$y1,$xa,$ya)=@_;
$r=100;
$xc=$x1-$ya*$r*sqrt(1/($ya*$ya+$xa*$xa));
$yc=$y1+$xa*$r*sqrt(1/($ya*$ya+$xa*$xa));

$im->filledArc(500+$x1,500+$y1,4,4,0,360,$white);
for ($t=0;$t>=-45;$t=$t-0.05){
$x2=$xc+cos($t/360*3.14*2)*($x1-$xc)+sin($t/360*3.14*2)*($y1-$yc);
$y2=$yc+cos($t/360*3.14*2)*($y1-$yc)+sin($t/360*3.14*2)*(-$x1+$xc);
#bibun
$xv=-sin($t/360*3.14*2)*($x1-$xc)+cos($t/360*3.14*2)*($y1-$yc);
$yv=-sin($t/360*3.14*2)*($y1-$yc)+cos($t/360*3.14*2)*(-$x1+$xc);
$im->filledArc(500+$x2,500+$y2,1,1,0,360,$green);
};
return ($x2,$y2,-$xv,-$yv);
}
-----------------------------------


試しに他のつなぎ方も試してみました。

右に2回、左に1回、8回繰り返し。これだとデカい環状でつながります。


右に3回、左に1回、4回繰り返し。小さく4角形につながります。


右に3回、左に2回、8回繰り返し。これだとアホみたいにデカい環状でつながります。


右に4回、左に1回、8回繰り返し。これは結構美しい!!!!


右に4回、左に2回、4回繰り返し。変な形です(^^;


右に5回、左に1回、2回繰り返し。楕円形


右に5回、左に2回、8回繰り返し。これも結構面白い。


右に6回、左に1回、8回繰り返し。最初に紹介したやつです。これがコンパクトで一番美しいですね。


右に6回、左に2回、2回繰り返し。変な形。


右に7回、左に1回、4回繰り返し。これはちょっと「幾何学」って感じで面白いかもしれません。


右に7回、左に2回、8回繰り返し。これもかなり面白い!!!が中心部分のパーツは一体形成する必要がありそう。


これは面白いかも。実際にこの形で走れるレールをこれから出力してみようと思います。

昨晩の息子(5才)との会話
息子「パッパ~、xxちゃんも大人になったら3Dプリンターで好きなレール作れるようになるかなー」
俺「うんうん、大人にならなくても小学生ぐらいになったら作れるよー」
息子「あと何回寝たら小学生?」
俺「1000回ぐらい」
息子「100が10個?」
俺「そお」

誰でも作れるようになるわけじゃないんだが、彼はどこまで行くんだろうか?親の影響は強力で残酷だ。可哀そうだが、リア充文系人生はもう無理なんじゃないだろうか。

そっか1歳半でプラレール与えたんだね。ちっこくてかわいー。今じゃヒドイ悪ガキなのに。

Category:#DIYプラレール



■ ■ ■ コメント ■ ■ ■

いいっすね!=10

名前 ↑B

コメント(※改行は省略されます)

※3回以上の連続書き込み不可
この記事のアクセス数:1444

本カテゴリーで直近コメントが書かれた記事
04/29 10:41:DIYカスタムプラレール売りに出しました!485366分前
03/23 01:08:お花見仕様のピンク水玉カスタム幾何学プラレール。by多色3Dプリンター。ちゃんと走るよ動画374日前
03/04 20:54:ピンクの水玉プラレールを大量製造中392日前
02/17 12:54:Bambulab A1 miniの多色出力でピンクの水玉のプラレール!408日前


→カテゴリー:#DIYプラレール(記事数:26)
本カテゴリーの最近の記事(コメント数)
2024.04.28DIYカスタムプラレール売りに出しました!11コメ
2024.03.22お花見仕様のピンク水玉カスタム幾何学プラレール。by多色3Dプリンター。ちゃんと走るよ動画38コメ
2024.03.02ピンクの水玉プラレールを大量製造中5コメ
2024.02.16Bambulab A1 miniの多色出力でピンクの水玉のプラレール!26コメ
2022.02.18俺のゴーストがこれを3Dプリンターとプラレールで再現しろと言っている8コメ
2021.04.05DIY幾何学プラレール第3弾【出力データあり】。これも美しいなぁ♪2コメ
2021.01.11DIY幾何学プラレール第2弾(メルカリに出品中)91コメ
2020.12.24幾何学DIYプラレール2020年12月最新版【3Dプリンタ用データ(stl)有り】21コメ
2020.03.05DIY幾何学プラレール3Dプリント用データ(.stl)公開(ver.2020.02.29)。完璧じゃないけど56コメ
2019.12.19DIY幾何学プラレールの外周部脱線多発ゾーンの要因分析71コメ

譛€霑代�蟶ク騾」縺輔s
orz笘�38縲€逋ス笘�53縲€繧峨�笘�32縲€繝医け繝。繝シ笘�17縲€縺ェ縺ェ縺励&縺�笘�72縲€F笘�52縲€縺オ縺�■繧�>繧�(蟷エ蠎ヲ譛ォ縺セ縺」縺溘j) TW笘�95縲€マ�笘�105縲€umomo笘�2縲€迚ケ蜻ス縺輔s笘�79縲€JP笘�26縲€繝昴さ笘�346縲€縺オ縺�>縺。繧�s笘�2縲€縺�↓繧�(em縺ァ繝阪け繧オ繧ケ5竊抵ソス)笘�38縲€Dcd笘�83縲€縺吶″繧�″笘�77縲€驟斐b縺舌i笘�41縲€縺オ縺�■繧�>繧薙&繧薙�縺√s(繧�k繧翫f繝ゥ繝ェ繝シ)笘�101縲€縺�<(貊�幻闍ヲ闌カ荵�@縺カ繧�)笘�70縲€縺輔※縺輔※笘�30縲€縺ィ縺上a縺�笘�82縲€マ�(縺ッ縺倥a縺ヲ縺ョ縺吶∪縺サ) TW笘�52縲€蜷榊商螻矩未隘ソ莠コ TW笘�25縲€笘�笘�45縲€knob笘�2縲€774(竊仙濠隗偵�縺イ縺ィ)笘�83縲€蛹ソ蜷搾シ�笘�28縲€隰�笘�80縲€莠ャ繝昴Φ3B(諢丞慍縺ァ繧ゅお繝�ず)笘�40縲€10蟷エ驕ク謇�笘�48縲€