柳田國男『明治大正史 世相篇』のオンライン輪読会を始めます(初回1月25日)

京アカオンライン輪読会では1月25日(土)20:00から柳田國男『明治大正史 世相篇』を読みます。本は各自で購入してください(どの版元でも可)。参加無料、予習不要、誰でも歓迎、お試し参加もOKです!
お問合せは kyotoacademeia@gmail.com まで。

amazonへのリンク

 

 

ヘロンの公式

はじめに

3辺の長さから3角形の面積を求める方法として、ヘロンの公式があります. 今回はこのヘロンの公式を2通りの方法で証明します. 証明1はピタゴラスの定理を用いており, 高校の授業で普通に習う内容です. 他方で, 証明 2 は三角形の内接円を用いており, 意外と知られていないので皆様に知ってもらいたいです.
PDFファイル.

補題2の証明

作成: 藤原大樹
更新: 2025年1月18日

バルーンアート(藤間法)

はじめに

バルーンアートで数学の正多面体を作っています。作成方法は複数あるのですが、今回は静岡大学の藤間信久教授による技法を紹介します(以下藤間法と呼ぶ)。藤間法では、すべての節点をピンチツイストで表現し、それらによる複数のバブルを束ねて正多面体の頂点とします。藤間法の詳細は参考資料[1][2]を見て下さい。[1]は藤間教授にメールすれば貰えます。参考資料[3][4]ではピンチツイストを含む基礎技法が紹介されています。藤間教授には講座資料を頂くだけでなく、質疑応答、組立手順の助言を頂くなど大変お世話になりました。有難うございます。

現状では正多面体の内4種類、正4面体、正6面体、正8面体、正12面体を組立てることができました。残る正20面体は、私のスキルでは組立不可能でした。出来た事と出来なかった事を合わせて解説します。以下では正多面体の設計図と完成写真を示します。設計図の丸Pはピンチツイスト(Pinch Twist)によるバブルを表します。

正4面体

正4面体A

正4面体A

正4面体B

正4面体B

正6面体

正6面体A

正6面体A

正6面体B

正6面体B

正6面体C

正6面体C

正8面体

正8面体A

正8面体A

正8面体B

正8面体B

正8面体D

正8面体D

正12面体

正12面体A

正12面体A

正20面体

正20面体C

正20面体Cは組立不可能でした。1本のバルーンに6個のピンチツイストこぶを作ると、1辺の長さが8センチぐらいになりました。これでは短すぎて組立てられません。

正20面体A

正20面体B

正20面体ABは組立不可能でした。バルーン同士が絡み合って丸い形になってくれません。何が悪いのかいまいち分かりませんでした。設計も組立手順も悪くないと思うのですが、、、。正20面体は今後の課題とします。

正20面体Aが絡まっている状態

参考資料

[1] 藤間信久, 2017, バルーンアートで学ぶ 正多面体の幾何学
これは公開講座の講義資料で、藤間教授にメールすると頂けます。
藤間教授の連絡先は、https://train1.eng.shizuoka.ac.jp/fujima/collaborator.htmlに記載。

[2] 鈴木伊織, 2017, バルーンアートで学ぶ『正多面体の幾何学』, トップガンジャーナル 第26号,  https://topgun.ed.shizuoka.ac.jp/topgun-journal/
藤間教授が開催した公開講座の様子が報告されています。

[3] Masayoshi Matsumoto, 2023, バルーンアートのはじめ方 ~これだけで大体 OK!基礎技法集~ Ver1.24. , https://isopresso-shop.booth.pm/items/847287
無料のPDFファイルがダウンロードできます。

[4] Masayoshi Matsumoto, 2020, バルーンアートの基礎技法 10 選 / 10 Basic Skills to Make Balloon Animals, https://www.youtube.com/watch?v=xFI6UjOjR7o
上記の基礎技法集に対応した動画です。

[5] 藤原大樹, 2025, 設計図(藤間法)

[6] 藤原大樹, 2025, 組立手順書(藤間法)

作成: 藤原大樹
更新: 2025年1月15日

正多面体の折紙

正多面体の折紙や紙工作についてまとめました. 正多面体は, 正4面体, 立方体, 正8面体, 正12面体, 及び正20面体の5種類のみです. 多面体の折紙作品は散見されますが、その作品を実際に自分で作ろうとすると、情報が全く整理されておらず困ります. そこで, 5種類の正多面体を折紙でどのように工作するかについて文献を調査し整理しました. 同じ多面体モデルに対して多数の工作方法があり, その中には工作初心者にとって難易度が高すぎる手法もありました. 本稿では, 難易度が比較的易しい工作方法のみを厳選して紹介します.

PDFファイル(約17メガバイト)

 

作成: 藤原大樹
更新: 2025年1月20日

 

Pythonを用いたgraphviz

はじめに

graphvizはグラフ理論のイラストを描画するためのツールです。
今回はPythonを用いてgraphvizを利用します。
使い方は以下のサンプルコードを見ながら理解していって下さい。
私の動作環境はCoCalcです。

Hello World

# sample_01.py
# Hello-World
from graphviz import Graph

g = Graph() # 無向グラフを生成
g.format = 'jpeg' # ファイルフォーマットを設定

# 節点を追加
g.node('Hello')
g.node('World')

# 枝を追加
g.edge('Hello', 'World')

# グラフを出力
g.render('output')

特定の節点を塗りつぶす

# sample_02.py
# 特定の節点を塗りつぶす
from graphviz import Graph

g = Graph() # 無向グラフを生成
g.format = 'jpeg' # ファイルフォーマットを設定

# 節点を追加
g.node('Hello')
g.node('World', style='filled', fillcolor='pink')

# 枝を追加
g.edge('Hello', 'World')

# グラフを出力
g.render('output')

全ての節点を円にする

# sample_03.py
# すべての節点を円にする
from graphviz import Graph

g = Graph() # 無向グラフを生成
g.format = 'jpeg' # ファイルフォーマットを設定

# すべての節点を円にする
g.attr('node', shape='circle')

# 節点を追加
g.node('Hello')
g.node('World')

# 枝を追加
g.edge('Hello', 'World')

# グラフを出力
g.render('output')

すべての枝を太くする

# sample_04.py
# すべての枝を太くする
from graphviz import Graph

g = Graph() # 無向グラフを生成
g.format = 'jpeg' # ファイルフォーマットを設定

# すべての枝を太くする
g.attr('edge', penwidth='10')

# 節点を追加
g.node('A')
g.node('B')
g.node('C')

# 枝を追加
g.edge('A', 'B')
g.edge('B', 'C')

# グラフを出力
g.render('output')

特定の枝の色を変える

# sample_05.py
# 特定の枝の色を変える
from graphviz import Graph

g = Graph() # 無向グラフを生成
g.format = 'jpeg' # ファイルフォーマットを設定

# 節点を追加
g.node('A')
g.node('B')
g.node('C')

# 枝を追加
g.edge('A', 'B', color='blue')
g.edge('B', 'C', color='red')

# グラフを出力
g.render('output')

特定の枝を2重3重にする

# sample_06.py
# 特定の枝を2重3重にする
from graphviz import Graph

g = Graph() # 無向グラフを生成
g.format = 'jpeg' # ファイルフォーマットを設定

# 節点を追加
g.node('A')
g.node('B')
g.node('C')

# 枝を追加
# 枝を2重にする
g.edge('A', 'B')
g.edge('A', 'B')
# 枝を3重にする
g.edge('B', 'C')
g.edge('B', 'C')
g.edge('B', 'C')

# グラフを出力
g.render('output')

すべての節点ラベルをBにする

# sample_07.py
# すべての節点ラベルをBにする
from graphviz import Graph

g = Graph() # 無向グラフを生成
g.format = 'jpeg' # ファイルフォーマットを設定

# すべての節点ラベルをBにする
g.attr('node', label='B')

# 節点を追加
g.node('x')
g.node('y')
g.node('z')

# 枝を追加
g.edge('x', 'y')
g.edge('y', 'z')

# グラフを出力
g.render('output')

カラースキームを用いて枝の色を変更する

# sample_08.py
# カラースキームを用いて枝の色を変更する
from graphviz import Graph

g = Graph() # 無向グラフを生成
g.format = 'jpeg' # ファイルフォーマットを設定

# 枝にカラースキームを用いる
g.attr('edge', colorscheme='paired12')

# 節点を追加
g.node('x')
g.node('y')
g.node('z')

# 枝を追加
g.edge('x', 'y', color='2')
g.edge('y', 'z', color='4')

# グラフを出力
g.render('output')

最小枝長を設定する

# sample_09.py
# 最小枝長を設定する
from graphviz import Graph

g = Graph() # 無向グラフを生成
g.format = 'jpeg' # ファイルフォーマットを設定

# 節点を追加
g.node('x')
g.node('y')
g.node('z')

# 枝を追加
g.edge('x', 'y')
# 最小枝長を設定
g.edge('y', 'z', minlen='3')

# グラフを出力
g.render('output')

上下逆さまに表示する

# sample_10.py
# 上下逆さまに表示する
from graphviz import Graph

g = Graph() # 無向グラフを生成
g.format = 'jpeg' # ファイルフォーマットを設定

# 上下逆さまに表示する
g.attr(rankdir='BT') # bottom to top

# 節点を追加
g.node('x')
g.node('y')
g.node('z')

# 枝を追加
g.edge('x', 'y')
g.edge('y', 'z')

# グラフを出力
g.render('output')

節点のフォントサイズを設定する

# sample_11.py
# 節点のフォントサイズを設定する
from graphviz import Graph

g = Graph() # 無向グラフを生成
g.format = 'jpeg' # ファイルフォーマットを設定

# 節点を追加
g.node('x', fontsize='16')
g.node('y', fontsize='32')
g.node('z', fontsize='64')

# 枝を追加
g.edge('x', 'y')
g.edge('y', 'z')

# グラフを出力
g.render('output')

節点を小さくする

# sample_12.py
# 節点を小さくする
from graphviz import Graph

g = Graph() # 無向グラフを生成
g.format = 'jpeg' # ファイルフォーマットを設定
# 節点の形を円にする
g.attr('node', shape='circle')
g.attr('node', fixedsize='true')

# 節点を追加
g.node('x', width='0.3', height='0.3')
g.node('y', width='0.5', height='0.5')
g.node('z', width='0.8', height='0.8')

# 枝を追加
g.edge('x', 'y')
g.edge('y', 'z')

# グラフを出力
g.render('output')

正四面体

# tetra.py
# 正四面体
from graphviz import Graph

# [1] グラフ全体の設定
# [1.1] 全体の設定
g = Graph() # 無向グラフを生成
g.format = 'svg' # ファイルフォーマットを設定
g.engine = 'twopi'

# [1.2] 全節点の設定
# 節点にカラースキームを用いる
g.attr('node', colorscheme='paired12')
# 節点内部を塗りつぶす
g.attr('node', style='filled')
# 節点の形を円にする
g.attr('node', shape='circle')
# 節点のフォントサイズを設定
g.attr('node', fontsize='16')
# 節点を小さくする
g.attr('node', width='0.3', height='0.3')
g.attr('node', fixedsize='true')
# 節点のラベルをBにする
#g.attr('node', label='B')

# [1.3] 全枝の設定
# 枝を太くする
g.attr('edge', penwidth='10')
# 枝にカラースキームを用いる
g.attr('edge', colorscheme='paired12')

# [2] 各節点の設定
g.node('1', fillcolor='2')
g.node('2', fillcolor='6')
g.node('3', fillcolor='6')
g.node('4', fillcolor='2')

# [3] 各枝の設定
g.edge('1', '2', color='6')
g.edge('1', '3', color='2')
g.edge('1', '4', color='6')
g.edge('2', '3', color='2')
g.edge('2', '4', color='2')
g.edge('3', '4', color='6')

# グラフを出力
g.render('tetra')

枝ラベルの色を設定する

# sample_13.py
# 枝ラベルの色を設定する
from graphviz import Graph

g = Graph() # 無向グラフを生成
g.format = 'jpeg' # ファイルフォーマットを設定

# 節点を追加
g.node('x')
g.node('y')
g.node('z')

# 枝を追加
g.edge('x', 'y', label='bridge', fontcolor='blue')
g.edge('y', 'z', label='over', fontcolor='green')

# グラフを出力
g.render('output')

作成: 藤原大樹
更新: 2025年1月3日

京都散策イベント開催決定!

ただ集ってプラプラするだけの会をします。秋の土曜日にお暇な方はどうぞ。
普段オフラインで集まらない&あまり身体を動かさない京アカなので、それらの機会にしようという主旨ですが、非会員の方もどうぞ。

・日時:11月16日(土)12:30~夕方頃まで
・集合場所:京阪電車 清水五条駅 南東出口(半兵衛麩の大きな建物があるところ)

・途中参加・途中離脱自由。
・現在、希望のスポットとして、安井金毘羅宮・五条通近辺の清水焼関連スポットが挙がっています。
・昼食は各自で。
・歩く量は集まった人々の体力次第で。

参加ご希望の方、ご質問のある方は、
kyotoacademeia@gmail.com まで。ドタキャン可です。

チラシのPDFファイル

京アカ輪読会の次の本は 井筒俊彦『イスラーム文化』(岩波文庫)です。10月26日(土)20:00~

京アカオンライン輪読会では、10月26日(土)20:00より、井筒俊彦『イスラーム文化』(岩波文庫)を読みます。お試し参加、ときどきの参加も歓迎です。どなたでも無料で参加できます。お問合せはkyotoacademeia@gmail.comまで!

アマゾン