<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}]"}