画像処理で円周率を求める①物理編

posted in: Processing | 0

先日、このような投稿を見つけました

1 kgの物体に対して100のn乗 kgの物体を水平にぶつけると、壁側の物体の衝突数は314159265…となり、円周率が求められるというものです

多くの人は、このツイートのように「そんな馬鹿な」と最初に思うはずです

そこで、車輪の再発明とはなりますが、これを画像処理を用いたシミュレーションで確かめることにしました

まずはその背景となる物理を理解することにします

理解するついでに、解説することにしました

前提条件

改めて、この物理の前提条件を書きます

それは下の図に示す通りです

左から、質量無限の壁(動かない)、質量1 kgの物体1(緑)、質量m2 = 100n kgの物体2(青)があります

壁は、速度vで衝突してきたものを、速度マイナスvで逆方向に返します(反発係数が1)

物体1は、最初は停止しています

一方で物体2は、摩擦ゼロの床上を左に速度v2で向かってきており、物体1に衝突します

この衝突をプラス1として数えます

さらに、速度v1で動き始めた物体1は壁にぶつかり、跳ね返ります

この衝突も、プラス1として数えます

この一連の動作を繰り返すと、最終的な衝突数Nは314159265…になります

実は結論から言うと、上図の赤枠内の式(1)として表したように、衝突数Nはπ×√m2となります

このように質量m2にはルートがついているため、質量m2が100nであることによって、最終的な衝突数は円周率3.14の10倍や100倍といったきれいな数字になってくれます

では、なぜこうなるのかを見ていきましょう

位相空間を描く

この現象を視覚的に理解するために、位相空間を描いてみましょう

位相空間とは、難しそうな名前ですが、ただのグラフです

なんのグラフかというと、今ある2つの物体の速度v1とv2をそれぞれヨコ軸・タテ軸に表示したグラフです

v1とv2の間にどのような関係式が成り立つかを考えれば、例えばy=xで直線を表すかのような描画が可能になります

今回成り立つ関係式は次の通りです

①運動エネルギー(E)保存の法則

②運動量保存(M)の法則

という2つです

これらについて、v1とv2を用いて具体的に表した数式は、下図ように、式(2)と式(3)になります

ここで式(2)を位相空間上にプロットしたものが、図の左下の楕円形となります

2つの物体の速度v1、v2がこの赤い楕円の円周上にある間は、エネルギーが保存されているということです

このようにエネルギー保存の法則が円形でなく楕円形となるのは、物体2が小さい速度であっても大きい質量を有しており、速度ではなく質量という形でエネルギーを貯めておけるためです

ただこの楕円は、人間にとって捉えにくい形状であるので、縦軸を√m2倍引き延ばすことで、正円に変換しましょう

これは式(4)の式を適用することで可能です

これによって、式(2)は式(5)の形になり、「x2+y2=一定」という正円の方程式に一致します(上図の右側)

同時に、式(3)は式(6)の形になります

注意点として挙げられるのが、新たな縦軸はv2ではなくv2‘になっていることです

つまり、これからは(v1, v2)のペアではなく、(v1, v2‘)のペアをプロットすることになります

(v1, v2‘)のプロット点は、常にこの新しい正円の円周上にある、ということになります

位相空間上のプロット点の変動を考える

では、物体の衝突を考えていきます

ここでは、話を簡単にするために、物体1と物体2はどちらも質量が1 kgであるとします

1 = 100の0乗であり、n = 0の場合に相当します

まずは、物体2が速度-1で動いているとき(左をマイナスと定義)、すなわちまだ衝突数が0であるときの位相空間上のプロットを見ましょう

このときの状況を下の図の左側に示します

物体1は速度が0ですから、(v1, v2‘)のプロットは(0, -1)となり、赤い円周上の最下部にあることが確認できます

このとき、物体1と物体2のエネルギーの合計Eは、式(5)より0.5であり、このあとも一生そのままです

一方で、物体1と物体2の運動量の合計Mは、式(6)より-1であり、物体1と物体2の衝突時のみ一定値として保たれます

[衝突数N=1]

そこで、次に物体1と物体2が衝突してみたとします(上の図の右側)

衝突が起きるわけですから、(v1, v2‘)のペアは今までの値を捨て、それぞれ新しい値をとります

その新しい値のペアはまた赤い円周上に生じます

では、そのどこかというと、これを求めるときに運動量保存の法則を使います

運動量保存の法則を示す式(6)は、式(7)の「v2‘ = 傾き×v1+切片」という形に変換できるわけです

この式(7)の形は、傾きが-1/√m2の直線に対応しています

今回のm2 = 1という場合では、その傾きは-1になります

つまり点(0, -1)を通るこの直線と、赤い円の交点が、新しい(v1, v2‘)の位置となります

新しい(v1. v2‘)は、赤い円周上の最も左側にある点(-1, 0)です

このことは、物体2のエネルギーが完全に物体1に移り、物体2が停止する代わりに物体1が動きだすことを意味しています

[衝突数N=2]

動きはじめた物体1は、次に左の壁にぶつかり、逆向きに反発します

当然、このときもエネルギー保存の法則は一定のまま、E=0.5を保持します

しかし、この衝突は”物体1と壁”の衝突ですから、”物体1と物体2″の間にある運動量保存の法則は成り立ちません

物体1が反転することによって速度は-1から+1に変化し、これに伴って運動量の合計Mも-1から+1に変化します

この挙動は、位相空間上においては下図左のように、紫の右向きの水平線で表されます

このようにして、(v1, v2‘)は新しい点(1, 0)に移動するわけです

[衝突数N=3]

残るは、右向きになった物体1が物体2に衝突するのみです

この場合も、運動量保存の法則が成り立ちますから、 式(7)を活用することができます

この式は位相空間上において、図の右側に示した通り、(v1, v2‘)が一番右の(1, 0)から一番上の(0, 1)へ向かう直線に対応します

一般に、v2 > v1 > 0という状況になると、遅い物体1はより速い物体2に追いつきませんから、衝突は終了します

この関係はv2‘ > √m2 × v_1と書き換えることができ、図のピンクの領域に対応します

点(0, 1)はこのピンクの領域に収まっているので、衝突は終了ということになります

今回の衝突数の合計は3であり、これは円周率3.14の3となります

Nはπ×√m2 ですので、m2が100なら衝突数は31に、m2が10000なら衝突数は314になります

位相空間の図解

位相空間上のプロットの挙動が分かったところで、Nとm2の関係を詳しく見ていきましょう

上で示した一連の衝突は、円周上におけるプロットの変遷であり、円を分割することによって、3つの等しい大きさの円弧を生じています(下図の左)

また、これらの点をつないでいくと、一回の衝突ごとに、水色で表される角度θが生成していることが確認できます

ここで、円周角の定理を用います

円周角θと対応する中心角は2θの大きさで表されるという定理ですね(上図の中央)

これを用いると、分割によって生じた3つの円弧は全て、2θの中心角を有することが分かります

ここでθとNの関係について確実に言えることは、N個ある2θを合計した角度である2θ×Nは、2π(360度)に満たないということです

これは、2θ×N < 2πと表すことができ、式(9)のようにθ×N < πと書き換えられます

この式を満たしている限り、Nはどこまでも大きくなることができます

物体1と2の質量がどちらも1 kgであるとき、図からθはπ/4であり、式(9)よりN < 4(N = 3)となることが確認できます

【補足】

上の図を見ると、 2θ×N = 3π/4と思われる方もいらっしゃるかもしれません

たしかに、1 kg vs. 1 kgという今回の場合ではそうですが、一般的ではありません

試しに、N = 4まで衝突が起きる場合を考えてみてください

この場合は、第一象限にある円周上にもう一つのプロット点が増えます

すると、第一象限の円周も分割され、新たなθを生じるわけです

このとき2θ×N は3π/4を超えており、2θ×N = 3π/4 はもはや満たされないことが分かると思います

したがって、いつも確実に言える一般事象は、 θ×N < π ということになります

θと物体2の質量の関係

では、急に出てきたθとは、物理的にはどんな意味をもつのでしょうか

物体2の質量m2とどのような関係があるのでしょうか

これは下の図から明らかにすることができます

θとは、式(7)と横軸の間の角度です

ここで、式(7)は傾きが-1/√m2の直線です

図のθを形成する2つの直線を上下反転させてみると、この傾きは+1/√m2に対応します

さらに、この傾きはtanθです

つまり、tanθ = 1/√m2がなりたちます

これをθについて解くと、θ = arctan(1/√m2)と表すことができます

一般に、εが小さいとき、arctan(ε) = εとして近似してよいことになっています

このため、さらにθはθ = 1/√m2 …式(10)として書き換えることができるわけです

Nと物体2の質量の関係

式(9)より、Nとθの関係がわかりました

また式(10)より、θとm2の関係が分かりました

ということは、これらを組み合わせれば、Nとm_2の関係が分かりますね

これが、上の図の右側で表したように、N < √m2 × πとなるわけです

m2が100 kgなら √m2×π は31.415…であり、Nはこれを満たすまで増えてよいのです

したがって、衝突数は円周率の10倍や100倍に対応しており、m2が大きいほどに、その精度は向上します

これで、この衝突の物理を理解することができました

次回は、これをProcessingを用いた画像処理でシミュレーションします

読んでいただきありがとうございました。

HALOT ONEによる3Dプリント

posted in: 3D Modeling, 3D Printing | 0

先日、ラボで新たな3Dプリンターを購入しました

CrealityのHALOT ONEです

以下のような見た目です

かっこいいですね(どの3Dプリンターも光造形なら大体はこのような見た目だとは思いますが)

このプリンターは、スクリーンから層ごとに面照射を行うことで光造形するというLCD方式のプリンターです

一般にLayer by layerというやつです

私の家にあるELEGOO MARS 2 Proと同じ方式ですね

(なぜかよくSLA方式と書かれていたりしますが、SLAは正しくはレーザー方式だと思っています)

今回これをラボで購入したのは、主には実験器具をつくるためという目的があります

てわけで、実験器具をモデリングし、3Dプリントすることにしました

目標とする実験器具は、光照射器のスタンドです

ただ今回はHALOT ONEを初めて稼働させることになるので、HALOT ONEがそもそも動くのかを見るのも目的となっています

モデリングの極意

今回はB4の後輩にモデリングのやり方から説明して取り組んだので、シンプルな造形を行いました

シンプルなモデリングであっても注意すべきこととしては、列挙すると下の通りです

①モデリング中のオブジェクトの長さの絶対値はあとでどうにでもなるので、相対値は間違えないこと

②オブジェクトの外側にある面の向きは、stl出力前に全て外向きであることを確認する

(頂点の全選択をしたあと、Alt+Nを押すと開くメニューから、全ての面を外向きにできます。もし外側なのに内側設定となっている面があると、うまく印刷されません)

③モディファイヤーを使用した場合は、stl出力時には全て適用しておくこと

(ミラーモディファイヤー使って出力したオブジェクトは、ミラー側だけが印刷されない場合がありえます。ミラーモディファイヤーは適用しておくことで、予め実体のあるオブジェクトとしておきましょう)

④線分上に位置している頂点がその線分と結合していない場合は、結合させておくこと

(線分と頂点が結合しているかどうかは、Gキーで頂点をつかんでみればわかります。頂点を動かしているのに、線分がその動きについてこない場合は、頂点と線分が結合していません)

以上が注意点です

これが守られていれば、印刷用ファイルとしては問題ないでしょう

モデリング結果

モデリング後のライトスタンドがこちら

このようにスタンドは「凹」を組み合わせたような形となっています

この凹んだ部分に上向きのライトを置くわけです

ライトの下側からは熱が排出されますから、出来るだけ空気が流れ込みやすいような設計としてあるそうです

(この設計はB4の後輩が考えたものです)

スライシング

作製したモデルのスライシングを行います

スライシングソフトは、HALOT ONE付属のHALOT BOXを使いました

図は、stlファイルを取り込んだ画面です

本来ならば、次にサポート剤の設置を行います

しかし、このソフトはCHITUBOXに比べると使いにくかったので、サポート材は設定せずにスライシングのみを行いました

実はこの選択は、場合によっては良くないです

なぜなら、45°ルールというものが存在するからです

45°ルールというのは、上の画像に示す通りです

造形物の曲がる角度が45°以下であれば、その印刷は一般に余裕であることを意味します

しかし、45°を超えたあたりから難しくなります

これは、一層ずつプリントされるという原理上、印刷初期において、張り出し部分は非常に小さな厚みしかもてず、崩れやすいためです

特に、90°を超えてしまうとサポート材なしでは印刷不可能になります

これは、図の赤色部分で示したように、張り出し部分の先端が浮島のようになってしまうからですね

浮島となることでバラバラにならないように、床(黒線)からサポートを生やして、つなげてあげる必要があります

ところで今回の印刷物はΠ字骨格を有しており、中央の張り出し部分を支えるものがありません

では、これは印刷できないのでしょうか?

実は、そんなこともないです

Π字の張り出し部分は両側の支柱に支えられるため比較的安定であり、露光時間を十分にとることで、サポート材なしで印刷することができます

(実は45°ルールは熱形式の3Dプリントに対して用いられるルールであり、光造形の場合はそれほど気にするべきことではないかもしれません)

3Dプリントの条件・結果

というわけで今回採用した印刷条件はこちらです

レジンはNOVA 3Dの水洗いレジン(グレー)です

こちらは通常2秒の露光時間で固まりますから、今回の6秒という露光時間は十分な時間であることが分かります

加えて、Motor Speedの10 mm/sはMAXとしてあります

これは印刷時間を短縮させるためです

印刷物はそこそこ大きいので、5~6時間かかりました

今回は初歩的なミスとして、印刷途中でのレジンの補給を怠りました

このため、上の写真では光照射中であるにも関わらず、バット中にレジンがなくなっていることが確認できます

印刷物のSide Viewに注目すると、張り出し部分の造形に成功していることが分かります

しかし、Top Viewに注目すると、レジンの補給を怠ったせいで、上面側が少し欠けてしまっていますね。。。

しかし問題ないです

光ですぐ固まるというレジンの性質が、光造形プリンターの良いところではありませんか

ということで、欠けた部分にレジンをつけたし、さらにUV照射すれば御覧の通り、欠けた部分は目立たなくなりました

こういう自由度の高い修正は、高分子を溶融させる熱方式の3Dプリンターでは難しいかもしれませんね

最終的に、この造形物の空孔部分にはライトが収まり、ライトスタンドとして機能させることができました

したがって、HALOT ONEも高い光造形ポテンシャルを有することが分かりました

ここまで読んでくださり、ありがとうございました。

実験器具の3Dプリント

posted in: 3D Modeling, 3D Printing, Technology | 0

先日、研究室でサンプルに光照射しようとして、この装置を用いました

EvoluChemというやつです

どういうものかというと、設置したサンプルに対してまとめて光をあてられるような装置です

具体的には、光源とサンプルホルダーを下のようにセットアップすることで、サンプルホルダーに置かれた試験管に光をあてることができます

どういう仕組みかというと、下の図の通りです

このように、装置内の鏡で光が反射されることで、サンプルホルダーのあらゆる部分に光が当たるような仕組みとなっています

そこで私が行おうとしたのは、光照射しながらのUV吸収スペクトル測定です

強い光を照射すると大体の分子って壊れるんですが、それが吸収スペクトルの変化具合から分かるんですよね

ただ、試験管からいちいち溶液を取り出してUVセルに入れて測定、という実験操作では時間がかかってしまいますよね

てわけで、UV吸収スペクトル用の測定セルをこちらの装置にセットしようとしたところ。。。

いやセル入らんやん!ってなりました

この白色の試験管ホルダー(青色部分は除く)、一万円もするんですよ?(もっと汎用性あれよ!)

入らないのはどうしようもないので、ダンボールでUVセルホルダーを自作することにしました

そしてできたがったものがこちら(下)

御覧の通り、しょぼい感じです

しかし、その機能は果たしてくれます

上の図のように、開いた穴の部分にUVセルをぴったりはめ込むことで、UVセルを固定できます

これによって、UVセルへの安定した光照射が可能となります

しかしながら、これでも満足いかない部分があります

それは、セルの壁面がダンボールと密着することです

これは、摩擦力によってセルを支えているために仕方のないことです

しかし、セルって基本的にはきれいな状態を保ちたいものなので、あまりダンボールとこすれあう状態にはしたくないわけです

てなわけで、試験管ホルダーみたいな形状のセルホルダーを設計して3Dプリントすることにしました

3Dモデリング

まずは設計図を書きます

UVセルの大きさと、それを支える土台の適切な大きさを調べます

ダンボールでつくった土台の時点でうまくはまっているので、ダンボールの大きさを参考にしました

(普通は、土台部分として適切な長さを、装置から直接的に測定したほうがいいです)

こんな感じで設計図を書きます

建築の人が見たら素人丸出しなんでしょうが、最低限のことは書いてあります

全体を支える土台部分は51 mm x 89 mm x 5 mmとします

セルの入る穴の大きさは、1.35 mm x 1.35 mmです

厚みはテキトーにつけておきます

これをもとに、Blenderでモデリングしていきます

こんな感じ(上)になりました

マス目を1 cm単位として見なしています

ポイントは、端っこの頂点(GAINENZロゴの左下)を原点座標に合わせていることです

これによって、寸法の直感的な把握が可能となります

【補足】

加えて、今回のミスったモデリング例を下に示します

一見普通そうに見える3Dモデル(図の左上)ですが、その内部においては下矢印(黄色)の位置に余計な面が存在してしまっています(図の右上)

その結果、穴であってほしいはずの空間が、面の内側で囲まれたことで埋まっている空間と認識され、印刷されるわけです(図の下)

これを解決するには、単にモデル内部の余計な面を取り去ればよいです

3Dプリント

上述したモデルをstl形式で出力したら、スライシングします

スライシングの前にサポート材を入れるわけですが、一点注意です

下の図のように、窓枠の間にはサポート材を入れないようにしましょう

ここで自動設定にしたがって窓枠間にもサポート材を入れてしまうと、印刷後にとれなくなります

印刷結果がこちら(下)

一見、問題なさそうです

特筆すべきこととしては、GAINENZのロゴがきれいに印刷されてますね

このポイントは、光照射面側にロゴを配置することです

おそらく、光照射面と反対側にロゴがあったら、これほどきれいには印刷されていないでしょうね

ただ、一つ問題を見出しました

1.35 mmで設計した穴の大きさが、1.30 mmになってしまっていたんですよね

つまり、予測より1.04倍小さくなってしまっていたのです

そこで、1.04倍大きいバージョンもつくりました

こちらのバージョンでは、また同じレジンで作製しても面白くないので、透明レジンを使いました

NOVA 3Dの「高透」です

このレジンを用いる際の注意点としては、固まりにくいことが挙げられます

ですので、このレジンを用いた場合は、普段通りの光照射条件では造形できません

そこで私は今回、通常の「露光時間:2秒、初期層の露光時間:35秒」という条件を「 露光時間:8秒、初期層の露光時間:40秒」という条件に変更し、印刷を試みました

その結果がこちら

造形物がビルドプラットフォーム上に出来上がってます

造形物はその後、イソプロピルアルコール(IPA)で洗浄し、二次硬化します

二次硬化後は少し曇ってしまっているのが惜しいですね

造形完了直後はすごくきれいだということで、ツイッターでは反響がありました

二つ揃えて写真をとってみると、下の通りです

なぜ、辺を揃えて撮影しなかったのでしょうね

とにかく、透明なUVセルホルダーの方が1.04倍大きいです

まずは、灰色のホルダーをセットしてみます

なんと、装置にぴったりはまった上、UVセルもきちんと入ってくれました

想定より1.04倍小さく印刷されてしまっていたと思っていたのに、成功です

これで、下のように、満遍なく光照射できますね

Cell-holder

一方、透明なホルダーの方はどうかというと、こちらの通りです

UVセルをホールドできるので問題ないのですが、土台部分が少し大きいために、装置のやや上側へ乗りあげてしまっていますね

おそらく、設計の時点で1.04倍くらいの誤差があったということだと思います

以上をまとめると、たくさんのUVセルにまとめて光を当てられるようになったことで、QOLが向上しました

みなさんも3DプリンターでQOLを向上させましょう

ここまで読んでくださり、ありがとうございました。

Blenderで数学教材

posted in: 3D Animation, 3D Modeling | 0

 先日、ツイッターで下のような数学教材を見つけました

数学教材の報告

図には、黒い二次関数曲線(y=x^2+1+ax)と赤い一次関数曲線(y=c|x|)が示されています

(ここでaとcは任意の実数です)

それらは、あるx座標で接点を形成しています

そして、この接点のx座標は、aの値によらないのがポイントになります

つまり、aの値を変えてみることで、二次関数曲線の形を変えてみたとしても、一次関数と接点を形成するx座標は不変ということです

このaを変える操作が、図の座標全体を支える下側の木片を傾ける操作に相当します

下側の木片が傾くと、その上にある各棒の相対的な高さが変わります

一方で、各棒のx座標は維持されます

このため、木片を傾けた結果、図示された関数はx座標上の接点を保ちながら、対応する形の変化を示すというわけです

この数学そのものは別に面白くはないんですが、このような視覚的に分かりやすい教材は感心に値しますよね

こういう工夫に感心してしまうのは、私自身、理科の塾講師の経験があり、視覚的に分かりやすい説明をするために試行錯誤していたからかもしれません(〇葉学院てとこです)

しかし、この教材は一見、作るのが大変そうですよね

実際、この作成者のツイッターを拝見すると以下のようなことが書かれています

「この教具は,教職大学院のゼミ生と教材研究していて考えたものです.私が大体の仕組みをつくって,昨日キャンパス内の屋外で,ゼミ生とふたりでやすりをかけたり,グラフを書き込んだりして仕上げました.」

いろいろと手が込んでいますね...

しかしです

仕組みをつくることが一番重要な段階ですから、GAINENZの立場としては、その後のやすりがけとかには時間を使いたくないと思うわけです

そこで、今回はこの仕組みをBlenderによる3Dアニメーションで再現すればええやん、となりました

以下では、この仕組みをどうやってBlenderで再現したかについて解説します

数学的背景の理解

数学的背景と偉そうに書きましたが、数学を解説する仕組みをつくるなら、まずはその数学を理解することが必要です

つまり、二次関数(y=x^2+1+ax)と一次関数(y=c|x|)がaによらず接点を形成するのは本当か?ということを数学的に確かめる必要があります

そこで、まずは普通に、これらの連立方程式を解いて接点を求めてみましょう

今回に関しては、微分とか使いますので、中学から高校程度の数学知識があればよさそうです

立式は以下の通りです

本記事で用いる数学の前提

したがって、接点のx座標はたしかにcによらず、一定の値である±1になることが分かりました

グラフの概形の理解

Blenderでいきなり作図、というわけにもいきませんので、まずはエクセルでグラフの形をつくってみましょう

一番上の教材を意識して、グラフは離散的なプロットで表現することとします

ここで、x軸の取る値は-2から2までを0.1ずつとします

aの値は0と1と-1を試行しましょう

各場合のcについては、方程式の解c = 2 + a (x >= 0)かつc = -2 + a (x < 0)を用いることで、aに対応するcの値が得られます

実際に求めた値を列挙すると下の通りです

a = 0のとき、c = 2 (x >= 0)かつc = -2 (x < 0)

a = 1のとき、c = 3 (x >= 0)かつc = -1 (x < 0)

a = -1のとき、c = 1 (x >= 0)かつc = -3 (x < 0)

これらの値をベースに、二次関数と一次関数を描いてみた結果が下の通りです

二次関数と直線の挙動をExcelで再現した結果

きれいな結果ですね

当たり前ですが、接点は必ずx=±1に見られます

Blenderによる教材の再現

エクセルの図をBlenderで表現してみましょう

まずは、エクセルの図を画像形式にしてBlender上に出現させます(下)

座標系のBlenderへの取り込み

ここまでできたら、画像の各点に対応する箇所に、頂点をつくるだけです

Ctrl+Rで横軸を分割してから、縦軸を細分化するとよいでしょう

ミラーモディファイアを使うと、作業を効率化することができます

テキトーでもいいので頂点をつくりたいという場合は、ナイフツール(Kキー)で十分かもしれません

続いては、4つの頂点に囲まれた四角形部分のマテリアル設定を行って、色を変えることで、プロットとして表現します

Blenderによるプロットの配置設定画面

図を見ると、プロットの解像度以上に辺が分割されすぎな気もしますが、細かいことは気にしない

最後に、アニメーションをつくるため、各棒にアーマチュアを導入しましょう

Blenderによる数学教材のアニメーション設定画面

アーマチュアを41本導入しました

数自体は多いですが、その動作は図の左側に示されているように、sinカーブ的な単純なアニメーションなので余裕ですね

できたアニメーションはこちらの通りです

Blenderならではの利点としては、そもそも木材を用意する必要がないとか、やすりがけをする必要がないとかだけでなく、aがどのように変化しているかも連動して示せるということが挙げられます

まあ、手に取れる教材のほうが優れている部分ももちろんあると思います

今回はたまたま見つけた数学教材を題材として取り上げましたが、数学に限らず他の教材でも使えそうです

以上、Blenderで数学教材を再現する方法でした

12/12追記

Processingを用いることで、本教材のグレードアップを試みました

具体的には、クリックによる傾き調節が可能な教材として仕上げました

こちらからご覧になれます