正多面体の折紙

正多面体の折紙や紙工作についてまとめました. 正多面体は, 正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まで!

アマゾン

 

京アカ オンライン茶話会 10/12(土)開催します

1年ぶりに、京アカ・オンライン茶話会を開催したいと思います。
おひとりワンテーマずつ持ち寄って、おしゃべりしてみませんか。
今関心のあること、近況、やってみたいこと、気になる本や映画など話題は何でもOKです。
参加者の前で話してみたら、何かが起きるかも。

【日時】2024年10月12日(土)20時~22時30分 〔19時50分から入れるようにします〕
【事前申込】メーリングリスト登録の方は不要。
メーリングリストで10/11ごろZoomアドレスをお知らせします。
メール会員外の方は、下記まで10/11(金)までにお申し込みください。
(会員外の方の申込先) ibashoasile@gmail.com (担当:京都アカデメイア 古藤)
【参加費】無料 途中入退室自由

※対面のイベント(京都東山散策を予定)も11月下旬に予定されています。

ブルデュー『話すということ: 言語的交換のエコノミー』読書会(隔週月曜日20時~)が始まります

こんにちは、正会員の酒井麻依子です。
これまでのオンライン読書会でジュディス・バトラーの『触発する言葉』の序文を読んできましたが、無事に終了しました。
次回からは、ピエール・ブルデューの『話すということ: 言語的交換のエコノミー』(稲賀繁美 訳 藤原書店)を読みます。  https://www.fujiwara-shoten-store.jp/SHOP/9784938661649.html

(本の紹介)ソシュールにはじまる現代言語学の盲目性を、ハイデガー哲学の権威主義を、アルチュセール派マルクス主義の正統性の神話を、言語の社会的機能の視点から暴き、理論的言説が魔術的言説に他ならぬことを初めて喝破しえた衝撃作

範囲はこれから相談するところです。
新しい本に進むに伴い、日時を隔週の月曜日20:00-21:30に変更します。
初回は9月30日(月)です。
※初回は間に合わない方も途中から参加していただいて大丈夫です。
参加を希望される方は、京都アカデメイア kyotoacademeia@gmail.com にご連絡ください。

次の京アカ輪読会はダグラス・ラミス『戦争するってどんなこと?』(平凡社)です。

京アカ輪読会では8月24日(土)20:00より、ダグラス・ラミス『戦争するってどんなこと?』(平凡社2014)を読み始めます。元沖縄海兵隊員の政治学者が戦争について易しく説き明かします。予習も予備知識も不要、お試し参加も歓迎。どなたでも無料で参加できます。本は各自でご用意下さい。お問合わせは kyotoacademeia@gmail.com まで!

アマゾン