<style> .reveal, .reveal h1, .reveal h2, .reveal h3, .reveal h4, .reveal h5, .reveal h6 { font-family: "Source Sans Pro", "Helvetica Neue", Helvetica, Arial, "Microsoft JhengHei", Meiryo, sans-serif; } h1, h2, h3, h4, h5, h6 { text-transform: none !important; } .color-yellow{ color: yellow; } .alert { padding: 15px; margin-bottom: 20px; border: 1px solid transparent; border-radius: 4px; text-align: left; padding: 10px 0; } .alert-info { color: #31708f; background-color: #d9edf7; border-color: #bce8f1; } .alert-success { color: #3c763d; background-color: #dff0d8; border-color: #d6e9c6; } .alert-danger { color: #a94442; background-color: #f2dede; border-color: #ebccd1; } .reveal .slides span { text-align: left; display: inline-block; } p, li { font-size: 0.88em !important; } li>p { font-size: 1em !important; } </style> ## 編み紙工作ワークショップ **(理論解説付き)** ![](https://hackmd.io/_uploads/rJN96JWph.png) 日本数学協会 第21回 年次大会 ---- ### スケジュール * 作り方の説明 (30分) * 材料 * 組立方法 (立体射影) * 組立方法 (懸垂面と螺旋面) * 数学的解説 (30分) * 立体射影とは? * 懸垂面と螺旋面の関係 * もっと理論的解説 (30分) * 弾性論の話 * 数値計算の話 * 曲率と埋め込みの関係 ---- ### 注意事項 * 質問があれば随時どうぞ! * 本スライドは以下のリンクで公開されています ![](https://hackmd.io/_uploads/HJ-y3ZxCh.png) https://hackmd.io/@hyrodium/SyLQ51bTh --- ### 自己紹介 ![](https://hyrodium.github.io/assets/logo.png =300x) ![](https://media0.giphy.com/media/BWClhsM6ACc7QaPNDc/giphy.gif?cid=790b761199dc032c147fd3e0de271eb710c7d2a1b936172e&rid=giphy.gif&ct=g =300x) [堀川 由人, ほりたみゅ, @Hyrodium](https://hyrodium.github.io/ja) ---- ### 経歴など * 学職歴 * 大阪府立高専 * 大阪大学工学部 * 大阪大学大学院工学研究科 (修士課程) * (就職) * 大阪大学大学院基礎工学研究科 (招聘研究員) * イベント関連 (一部抜粋) * 2015/06/20 第1回日曜数学会 * 2015/11/14 サイエンスアゴラ * 2016/02/13 HackDay2016 * 2018/08/04 Maker Faire Tokyo 2018 * 2018/10/06 MathPower2018 * 2019/01/16 JMM2019 * 2023/07/25 JuliaCon2023 ---- ### 興味: 数学的対象の可視化 * POV-Rayをつかったアニメーション * Julia言語による数値計算 * Desmosによるグラフ描画 * レーザー加工機による工作 ![](https://media0.giphy.com/media/BWClhsM6ACc7QaPNDc/giphy.gif?cid=790b761199dc032c147fd3e0de271eb710c7d2a1b936172e&rid=giphy.gif&ct=g =x160) ![](https://hackmd.io/_uploads/H1vMP4lR3.png =x160) ![](https://hackmd.io/_uploads/ryXbUEgC3.png =x160) ![](https://64.media.tumblr.com/31d2616643fed6e8d84bd86fea3f58b5/tumblr_pcx01x5rAb1s2lbywo1_1280.jpg =x160) --- ## 作り方の説明 * 材料 * 組立方法 (立体射影) * 組立方法 (懸垂面と螺旋面) ---- ### 材料 * キット一式 * 立体射影 or 螺旋面懸垂面 * 木工ボンド * 数が少ないので、分け合ってお使い下さい * 竹串 * ボンド塗布用 ---- ### 組立方法 (立体射影) ![](https://hackmd.io/_uploads/rJN96JWph.png =x400) [説明書](https://hackmd.io/@hyrodium/HJsIPNKqo) ---- ### 組立方法 (螺旋面懸垂面) ![](https://s2.booth.pm/9ef24c7d-314e-42fd-80a0-f1721317f696/i/5046306/719374f8-4769-410d-bca7-d1e17eb0ecd7_base_resized.jpg =x400) [説明書](https://hackmd.io/@hyrodium/Hy4D5r633) --- ## 数学的解説 * 立体射影とは? * 懸垂面と螺旋面の関係 ---- ### 立体射影とは? ![](https://hackmd.io/_uploads/rJN96JWph.png) 球面$S^n$と平面$\mathbb{R}^n$を対応させる写像のこと (※北極を除く) ---- #### $n=1$の場合 ![](https://hackmd.io/_uploads/SksoxlbTn.png =x400) 円周$S^1$上の1点と直線$\mathbb{R}^1$上の1点が対応する ---- #### $n=2$の場合 ![](https://hackmd.io/_uploads/r1aAleZTh.png =x400) 球面$S^2$上の1点と直線$\mathbb{R}^2$上の1点が対応する ---- #### なぜ格子点が浮かぶのか? ![](https://64.media.tumblr.com/f50f212f984572f408e538b205a878bb/tumblr_o0siovptTJ1s2lbywo4_r1_500.gifv) 平面上の格子点に対応する球面上の点に穴があるため! ---- #### 立体射影の応用 * 逆数の作図 * [第一回日曜数学会](https://www.docswell.com/s/hyrodium/KQXX75-2022-03-14-235327) * Riemann球面上の直方体 * [第四回日曜数学会](https://www.docswell.com/s/hyrodium/KJ3GV5-2022-12-15-173057) * メビウス変換の可視化 * [HackDay2016](https://www.youtube.com/watch?v=Aw-YASXbI04) * MRP (Modified Rodrigues Parameters, 3次元の回転) * [Rotations.jl](https://juliageometry.github.io/Rotations.jl/dev/3d_quaternion/) * 4次元多胞体の可視化 * [POV-Rayで作ったアニメーション](https://twitter.com/Hyrodium/status/948831531853783040) * etc. ---- ### 懸垂面と螺旋面の関係 ![](https://s2.booth.pm/9ef24c7d-314e-42fd-80a0-f1721317f696/i/5046306/719374f8-4769-410d-bca7-d1e17eb0ecd7_base_resized.jpg =600x) ---- #### 懸垂面 (Catenoid) \begin{align*} \boldsymbol{p}_{[0]}(u,v) &=\begin{pmatrix} \cosh(v)\cos(u) \\ \cosh(v)\sin(u) \\ v \end{pmatrix} \end{align*} ![](https://i.imgur.com/xvqz45P.png =300x) ---- #### 螺旋面 (Helicoid) \begin{align*} \boldsymbol{p}_{[0]}(u,v) &=\begin{pmatrix} \sinh(v)\cos(u) \\ \sinh(v)\sin(u) \\ u \end{pmatrix} \end{align*} ![](https://i.imgur.com/pEcYIeg.png =300x) ---- #### 相互に変形可能! ![](https://media4.giphy.com/media/v1.Y2lkPTc5MGI3NjExaW10ZjFyeHV0dzZ3MTAwdDZpdm9jeTd4d2w4ZGU3YTJiaTM4cXprMSZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/8L0hVH1F6oqOHJZKbz/giphy.gif =400x) なぜ変形可能か? →第一基本形式(Riemann計量)が各点で等しいから ---- #### 極小曲面 by Henry Segerman 懸垂面・螺旋面は極小曲面としての性質を持つ <iframe width="560" height="315" src="https://www.youtube.com/embed/jReQUm9EB9k?si=O5xBb9jFY3KJTrCG" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe> --- ## もっと理論的解説 * 弾性論の話 * 数値計算の話 * 曲率と埋め込みの関係 **退屈なら工作を続けてOK!** ---- ### お伝えしたいこと * To みなさん * Julia言語は数値計算に向いた良い言語! * To 幾何学者 * Gauss曲率・測地的曲率との関連が理論的に面白い! * To 工作愛好家 * 数学・プログラミングで製作が広がるのでオススメ! ---- ### 先行研究① 平面材料から作られる立体形状の例 ![](https://i.imgur.com/81eZYlg.png =313x) ![](https://i.imgur.com/mZzqd0U.png =420x) * 手法: 曲面を可展面で近似してから切出形状を決定 * 問題点: 材料の**繋ぎ目で滑らかにならない** 目的: 可展面近似を用いずに, 高精度に曲面形状を構成 ---- ### 先行研究② ![](https://i.imgur.com/d9WCT94.png =450x) https://www.youtube.com/watch?v=lrr2iKXSYz4 * 手法: 3次元的な材料変形を考慮して切出形状を決定 * 問題点: **隙間が発生**・**外在的な埋込に計算結果が依存** 目的: 2次元弾性体としてモデリングして切出形状を決定 ---- ### 平面材料の変形 : 面外と面内 ![](https://media.giphy.com/media/DBbgzDEBMRQ2lCDc1C/giphy.webp =220x) ![](https://media.giphy.com/media/3d4QFpCTnxbIVho19W/giphy.webp =220x) ![](https://media.giphy.com/media/1BcQS15okiYvn0CAqp/giphy.webp =220x) * 曲面の第一基本形式を * 面外変形: 保つ * 面内変形: 保たない * 通常の折り紙/紙工作では可展面のみを構成可能 * 面外変形: 可展面のみ構成可能 * 面内変形: 可展面以外も構成可能 ---- ### 紙の弾性的性質 具体例: 紙を捩って常螺旋面($K< 0$)が作れる 面外変形のみなら可展面($K=0$) ($K$:Gauss曲率) ![](https://i.imgur.com/zXgiJrL.jpg =600x) * 紙は面内方向にも変形可能. * [面外変形のエネルギー] $\ll$ [面内変形のエネルギー] ---- <!-- .slide: data-transition="none" --> ### 問題設定 1. 曲面を座標に沿って曲面片に分割 1. 平面材料から曲面に変形すると歪エネルギーが発生 1. エネルギー最小の形状を最も自然な切出形状とする ![](https://i.imgur.com/5BgYqyL.png =700x) ---- <!-- .slide: data-transition="none" --> ### 問題設定 1. **曲面を座標に沿って曲面片に分割** 1. 平面材料から曲面に変形すると歪エネルギーが発生 1. エネルギー最小の形状を最も自然な切出形状とする ![](https://i.imgur.com/exm3E7z.png =700x) ---- <!-- .slide: data-transition="none" --> ### 問題設定 1. 曲面を座標に沿って曲面片に分割 1. **平面材料から曲面に変形すると歪エネルギーが発生** 1. エネルギー最小の形状を最も自然な切出形状とする ![](https://i.imgur.com/mYuULoq.png =700x) ---- <!-- .slide: data-transition="none" --> ### 問題設定 1. 曲面を座標に沿って曲面片に分割 1. 平面材料から曲面に変形すると歪エネルギーが発生 1. **エネルギー最小の形状を最も自然な切出形状とする** ![](https://media.giphy.com/media/cPTAy4w4IFugabge1l/giphy.webp =700x) ---- ### 基準状態と現状態 * 基準状態 : 変形前で歪エネルギーが発生していない * 現状態 : 変形後で歪エネルギーが発生している ![](https://media.giphy.com/media/cPTAy4w4IFugabge1l/giphy.webp =350x) ![](https://media.giphy.com/media/8A7t5VLdWWfx1qYkkm/giphy.webp =350x) 「平面材料から曲面片へ変形させた際のエネルギー」と 「曲面片から平面への埋め込みで入るエネルギー」は ほぼ同じ 以降では基準状態と現状態を入れ替えて定式化する ---- ### Riemann多様体上の非線形弾性論 ![](https://media.giphy.com/media/8A7t5VLdWWfx1qYkkm/giphy.webp =420x) 材料に発生する歪エネルギー$W$は次の順で定義される * 基準状態$M_{[0]}$, 現状態$M_{[t]}$のRiemann計量 $g_{[0]}, g_{[t]}$ * Green歪テンソル $E=\frac{1}{2}(g_{[t]}-g_{[0]})$ * 歪エネルギー $W=\int_M \frac{1}{2}C(E,E)\upsilon_{[0]}$ 歪エネルギー$W$が最小となる 埋込$M_{[0]}\to \mathbb{E}^2$を探す --- ## ElasticSurfaceEmbedding.jl * 環境構築 * 編み紙の全体の流れ * 数値計算の全体の流れ * デモ ---- ### 環境構築 REPLのpkgモードで以下を実行 ``` (@v1.8) pkg> add BasicBSpline StaticArrays IntervalSets (@v1.8) pkg> add https://github.com/hyrodium/BasicBSplineExporter.jl (@v1.8) pkg> add https://github.com/hyrodium/ElasticSurfaceEmbedding.jl ``` ---- ### 編み紙の全体の流れ ![](https://i.imgur.com/iBWlT4Q.png) 1. 曲面の形状の定義 1. 曲面を長細い曲面片に分割 1. それぞれの曲面片の切り出し形状の計算 1. 平面材料(紙)から切り出し 1. 編んで完成! ---- ### 数値計算の全体の流れ 1. 曲面の形状の定義 1. 測地的曲率から初期値決定 1. 反復計算 a. Newton法で反復計算 b. B-spline多様体のリファインメント ---- ### デモ (放物面) ```julia= using ElasticSurfaceEmbedding using IntervalSets using StaticArrays # Overload the shape definition ElasticSurfaceEmbedding.surface(x,y) = SVector(x, y, x^2+y^2) # (1) split the surface into strips dom = [(-1..1, (i-1)/10..i/10) for i in 1:10] # (2) Embed the strips onto a plane res = auto_allsteps(dom) export_pinned_steps("paraboloid", res) ``` ---- ### 放物面を編む ![](https://i.imgur.com/2TrVqIf.png =x350) ![](https://i.imgur.com/nVgJP7D.jpg =x350) レーザー加工機で紙を切って編む ---- ### 紙の幅のトレードオフ * 幅が大きいほど * 材料に無理な変形(歪)が発生 * 滑らかな曲面ができない * 幅が小さいほど * 組み立てが複雑になる ![](https://hackmd.io/_uploads/rJGN0EeAn.png =x200) ![](https://hackmd.io/_uploads/Sk3OCVeCn.png =x200) ![](https://hackmd.io/_uploads/rkh_R4xCn.png =x200) ---- ### 歪の近似定理 \begin{align*} E^{\langle0\rangle}_{11} \approx \frac{1}{2}K_{[0]}B^2\left(r^2-\frac{1}{3}\right) \end{align*} ![](https://hackmd.io/_uploads/BJEheSxAh.png =800x) この値が0.01以下になるような幅$B$を選べばOK! ---- ### 埋め込み近似定理 * 曲面上の測地的曲率 * 埋め込み形状の平面曲率 これらが(ほぼ)一致する! ![](https://i.imgur.com/8ZZdz6o.png =450x) ![](https://i.imgur.com/4M9iFWP.png =450x) ---- ### 他の作品たち ![](https://pbs.twimg.com/media/E8v4uoKVIAgenv0?format=jpg&name=large =x300) ![](https://pbs.twimg.com/media/E8v4uU4UUAEFS5Y?format=jpg&name=large =x300) ![](https://i.imgur.com/uQcFxaN.jpg =x300) ![](http://gallery.bridgesmathart.org/sites/live.gallery.host.sunstormlab.com/files/styles/large/public/jmm2019/yuto-horikawa/append.jpg) ↑双曲放物面 6回対称↑ --- ## まとめ * 数学たのしい! * 工作たのしい! * Juliaたのしい! ---- ## なぜ編み紙? * 曲面上の座標から簡単に分割できる * 十分な強度 * 変形可能 * 薄い ![](https://hackmd.io/_uploads/B15w9Eg03.png =x135) ![](https://hackmd.io/_uploads/rk0MoVgAh.jpg =x135) ![](https://hackmd.io/_uploads/rkRcKNl0n.jpg =x135) ![](https://hackmd.io/_uploads/S192YNxRh.jpg =x135)
{"breaks":true,"lang":"ja","dir":"ltr","robots":"noindex, nofollow","slideOptions":"{\"theme\":\"white\",\"transition\":\"slide\"}","title":"日本数学協会 第21回 年次大会","description":"2023-03-14","contributors":"[{\"id\":\"41421433-16a1-4a57-ac11-6f7b7becb765\",\"add\":12165,\"del\":1983}]"}
    262 views