【幾何学×Processing】第4回 点と線が織りなす「三角形」の真実:内角の和180°をコードと平行線で証明する

暗いサイバー空間のような背景に、光り輝く三角形と平行補助線が描かれた、「幾何学×Processing」第4回のアイキャッチ画像。上部に「【幾何学×Processing】第4回 点と線が織りなす「三角形」の真実 内角の和180°をコードと平行線で証明する」と大きくタイトルが表示されています。 中央には頂点A、B、Cを持つ三角形があり、頂点Aを通る「水平な平行補助線(一直線)」が左右に伸びています。底辺の角B(青)と角C(黄)が、錯角によって頂点Aの左右(「B」「C」)にそれぞれワープし、元からある角A(赤)と合わさって「半円(まっすぐな直線)」を形作っている様子が、色鮮やかな扇形と矢印で図解されています。 背景には、グリッド線や幾何学的なベクトル、スライダー、そしてProcessingのソースコード「angleA = degrees(PVector.angleBetween(vAB, vAC));」などがサイバー感のあるネオンカラーで重なり合っています。
  • URLをコピーしました!

記事の途中でスライダーを動かして、三角形の形がどう変わっても合計180度が崩れない様子をリアルタイムに確認できます。

今回の記事の目的
ワタタク

どうもクリエイティブコーダーのワタタクです。

記事の目的に書いてある第3回では、「私たちが画面上に line() で描いているものは、無限に伸びる『直線』ではなく、両端に明確な境界を持つ『線分』である」というお話をしました。数学的な厳密さを持ってピクセルと向き合うことで、コードの1行1行に宿る解像度が一段上がったのではないでしょうか。

さて、第4回となる今回のテーマは、その「線分」を3本組み合わせて初めて生まれる形「三角形」です。

2本の線分を繋いでも「角(くの字)」ができるだけですが、3本目を繋いで空間をキュッと閉じると、そこには突如として「面」と「内角」が立ち現れます。あらゆる3Dポリゴンやメッシュ構造の最小単位であり、これ以上要素を減らすことができない図形の原点です。

そして、この三角形には、私たちが小学校の算数で必ず叩き込まれる絶対のルールがあります。

「三角形の3つの内角を足すと、どんな形でも絶対に180度になる」

学校では、ノートに描いた三角形をハサミでチョキチョキ切り落とし、3つの角を突き合わせて「ほら、半円(一直線=180度)になったでしょ!」と実験させられた記憶があるかもしれません。ですが、コードで無数の座標を扱い、時に針のように細長い三角形や巨大な三角形を動的に生成するプログラマーの視点からすると、一つの疑問が湧きます。

「たまたま手元で切った紙がそうだっただけで、動的に生成される無数の三角形すべてで例外がないと、なぜ言い切れるのか?」

ハサミで切る必要はありません。

今回は、「底辺と平行な補助線を1本走らせる」という幾何学的な視点を使うことで、なぜ三角形が180度という完璧な調和を保ち続けるのかを、Processingの思考実験とともに美しく解き明かしていきます。

そもそも三角形とは何かについてを詳しく知りたいからは以下の記事を参考にしてください。

この記事を書いた人

クリエイティブコーダー Watataku のプロフィール写真
ワタタク(Watataku)

クリエイティブコーダー

「才能」ではなく「発見」で描く。文系・36歳からの上達ログ。

  • ゼロから独学でクリエイティブコーディングに挑戦し、以下の実績を達成
    • 開始1年8ヶ月目までに公募6つに挑戦し、3つ入選(勝率50%)
      • KITTE大阪の18メートルあるAxCROSS大型スクリーン
      • 虎ノ門ヒルズステーションタワーB2F TOKYO NODE エントランスサイネージで展示
      • UN:O(東京大手町)にある会員限定のサテライトオフィスにて2作品選出・常設展示
  • 開始1年9ヶ月目に、虎ノ門ヒルズ49階、地上250mのインフィニティプールへ作品提供・展示
目次

3本の「線分」が交わるとき:空間が閉じるという大事件

第3回でお話しした通り、Processingで line(x1, y1, x2, y2) を実行したときに描かれるのは、両端が決まっている「線分(Line Segment)」です。

  • 1本の線分:ただの「長さ」と「傾き」
  • 2本の線分をつなぐ:向きが変わる「角(くの字)」
  • 3本目の線分で端と端を結ぶ:空間がピタッと閉じられ、「内側」と「外側」が生まれる

Processing

// 3本の線分を結んで三角形をつくる
line(ax, ay, bx, by); // 線分AB
line(bx, by, cx, cy); // 線分BC
line(cx, cy, ax, ay); // 線分CA

3本の線分で領域を閉じた瞬間、その内側に3つの角(内角:A, B, C)が誕生します。

これが多角形(Polygon)の最小単位であり、3D空間のあらゆる立体(メッシュ)を構成する基本骨格です。

そして、この3つの角の角度をそれぞれ計算して足し合わせると、どんな形の三角形であっても、驚くべきことに必ずひとつの数値に収束します。

角A + 角B+ 角C = 180°

ハサミの実験の限界:コードの世界では通用しない

小学校の算数では、紙に描いた三角形をハサミで切り刻み、3つの角を突き合わせて「ほら、半円(一直線=180度)になったね」と教わります。

しかし、Processingやp5.jsでジェネラティブアートを作っている私たちは知っています。

// 頂点の座標が毎フレーム乱数で激しく変動する
float ax = random(width);
float ay = random(height);

針のように極限まで尖った細長い三角形、画面の端と端にまたがる巨大な三角形、あるいはほぼ一直線に潰れかけた三角形。画面上には毎秒何千パターンもの三角形が動的に生成されます。

「紙を切って確かめる」という物理的な実験は、目の前にあるたった1枚の紙に対する確認にはなっても、「プログラムが生成し得る無数の三角形すべてで絶対に破綻しない」という保証にはなりません。

私たちが知りたいのは、個別の実験結果ではなく、「なぜそうならざるを得ないのか」という構造的なロジックです。

たった1本の「平行な補助線」が、幾何学を解き明かす

この謎を解く鍵は、ハサミではなく、たった1本の「平行線(Parallel Line)」です。

底辺となる線分BCと完全に同じ傾きを持つまっすぐな補助線 L を、頂点Aを通過するように1本スーッと引いてみてください。

// 底辺BCと平行な線を、頂点Aを通るように引くイメージ
stroke(150);
// 補助線 L の描画
line(0, ay, width, ay);

この補助線を引いた瞬間、画面上に幾何学の美しい対称性が立ち現れます。

「Z(ゼット)」の軌跡:錯角による角度のワープ

平行な2本の線のあいだをナナメの線分(辺AB)が貫くと、アルファベットの「Z」のような形が形成されます。

このとき、平行線の性質によって、内側の折れ曲がった角度同士は完全に一致します(錯角)。

  1. 左側の辺ABを辿る:底辺にある「角B(青)」が、Zのラインを通って、頂点Aの左側の空間へそのままワープして配置されます。
  2. 右側の辺ACを辿る:今度は逆向きのZ(逆Z)ができ、底辺にある「角C(黄)」が、頂点Aの右側の空間へそのままワープして配置されます。
  3. 頂点Aの内部には:三角形の頭頂部である「角A(赤)」が最初から鎮座しています。

結果として、頂点Aの周囲には、「角B(青)+ 角A(赤)+ 角C(黄)」が隙間なくぴったり並ぶことになります。

そして、その3つが合体して作っている土台は何でしょうか?

私たちが最初に引いた、頂点Aを通る「まっすぐな補助線(一直線)」そのものです。

一直線は角度にして 180°(半円)

紙を切って集めなくても、「頂点Aに平行線を1本引く」という視点の転換だけで、三角形の3つの角の合計が常に180°(半円) になることが完璧に証明されます。

実際に操作してに検証する「不変の調和」【EXPLORABLE EXPLANATION】

「理屈は分かったけれど、頂点Aを極端に動かしても本当に成立するのか?」

言葉で理解した幾何学を、指先の感覚に落とし込むためのインタラクティブ図解を用意しました。

スライダーを動かして、頂点Aの座標を左右・上下に激しく揺さぶってみてください。

不変の幾何学:三角形の内角の和 = 180°

Interactive Proof
角A (赤) 角B (青) 角C (黄)
頂点Aの水平移動 中央
頂点Aの高さ(三角形の変形) 標準
内角の合計(角A + 角B + 角C)
–° + –° + –° = 180.0°
※頂点をどれだけ極端に動かしても、頂点Aに集まった3つの角は常に一直線(半円)を描き続けます。

スライダーを左右の限界値まで引っ張ってみてください。

三角形が極端な鈍角三角形に変形し、角Aが押しつぶされて広がっても、そのぶん角Bや角Cが鋭く縮み、頂点Aに集まった3色の扇形は常に狂いなく一直線を描き続けます。

幾何学における「証明」とは、暗記した式を唱えることではなく、「どう変形しようとも崩れない構造の必然性を目撃すること」に他なりません。

コードで味わう:ベクトルと内積で角度を取り出す

頂点Aを挟む2本の線分を、それぞれベクトル u = AB, v = ACとして捉えると、ベクトルの内積の公式から角度 θ を求めることができます。

// Processingでの内角Aの計算例(pA, pB, pC は PVector 型)
PVector vAB = PVector.sub(pB, pA); // 頂点AからBへ向かうベクトル
PVector vAC = PVector.sub(pC, pA); // 頂点AからCへ向かうベクトル

// 2つのベクトルのなす角(ラジアン)を求め、度に変換する
float angleA = degrees(PVector.angleBetween(vAB, vAC));

この処理を頂点B、頂点Cに対しても行い、コンソールに合計値を出力してみると、どれだけマウスで頂点を振り回しても、コンソールには常に 180.000... が刻まれます。

自分の書いたコードが、数千年前のエウクレイデス(ユークリッド)が発見した絶対の幾何学法則の上で寸分の狂いもなく躍動している——。

クリエイティブコーディングの快感は、まさにこうした瞬間にあります。

まとめ・今回の言語化を終えて

第3回の「線分」から一歩進み、今回は3本の線分が結ばれて生まれる「三角形」の不変のルールを解き明かしました。

  • 3本の線分が境界を作るとき、空間に「内角」が生まれる。
  • ハサミで切る実験は個別の結果に過ぎないが、「1本の平行線と錯角」を用いれば、あらゆる三角形の合計が180度になる必然性が一瞬で証明される。
  • 画面上の座標が動的にどれほど激しく歪もうとも、数学的な調和は決して崩れない。

三角形の性質を知ることは、単に算数のテストで点数を取ることではなく、画面上にポリゴンを構築し、物理演算を走らせ、美しく調和のとれたビジュアルをプログラミングするための「強固な土台」を手に入れること。

次回(第5回)は、この三角形がさらに集まることで何が起きるのか。四角形、の世界へと足を踏み入れていきます。

▼ あわせて読みたい

ワタタク

それでは今日もレッツワクワクコーディング。

ワタタク(Watataku)
クリエイティブコーダー
独学1年9ヶ月で虎ノ門ヒルズ49階、地上250mのインフィニティプールへ作品提供・展示

言葉×コード×手書き。三位一体の表現が成長する過程の記録

【発信】クリエイティブコーディング(2024.3~) / 絵(2025.11~) / モレスキン / 思考法 / 生き方

▼運営者について
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次