• 表紙
  • まとめ
  • イメージ
  • 数式
  • Python

まとめノート

「トーラス」とは

ドーナツのように空洞が1つある曲面のこと。

方程式

$R, r > 0$ のとき, $(\sqrt{x^2+y^2}- R)^2 + z^2 = r^2$

A. 媒介変数表示

$\left\{ \begin{array}{rl}
x &=& (R + r \cos \theta) \cos \varphi \\
y &=& (R + r \cos \theta) \sin \varphi \\
z &=& r \sin \theta \end{array} \right. $

B. トーラス上のループ

水平方向の円周 $\mathbf{S}^1$ はロンジチュードループ(緯線)であり, 垂直方向の円周 $\mathbf{S}^1$ はメリディアンループ(経線)である。

C. トーラスの計量

表面積:$4\pi^2rR$, 体積:$2\pi^2r^2R$

D. 平坦トーラス

トーラスは長方形の対辺同士を貼り合わせてできる。(トーラスの展開図は長方形である。)

ポイント解説

A

外回りのロンジチュードループの半径が $R+r$, 内回りの半径が $R-r$, メリディアンループの半径が $r$ に対応する.

B

参考図

D

イメージ

上手に絵描けた

発展(位相的性質)

  1. $\mathbf{S}^1 \times \mathbf{S}^1$ と同相
  2. 向き付け可能な種数 $1$ の曲面
  3. オイラー数:$0$
  4. 基本群:$\pi_1(\mathbf{T} ) \cong \mathbf{S}^1 \times \mathbf{S}^1$

イメージ

トーラスはドーナツの形として有名です。

トーラスのイメージ

穴が1つ空いたモノをトーラスと言います。

ドーナツや浮き輪の表面の形をトーラスと言います。

穴の空いたもの

ミスドでドーナツの写真を撮影しました。

この画像にはトーラスが3つ写っています。

ミスタードーナツ(三重県津駅)で撮影

スタバで撮影した写真も載せておきます。

この画像にはトーラスが2つ写っています。

スターバックス(なんばウォーク店)で撮影

位相的トーラス

トーラスは穴の空いたものなので、コーヒーカップもトーラスです。

コーヒーカップの底が厚くなった状態(コーヒーを満タンに注いだ状態)は穴が1つだけの図形です。だから、コーヒーカップもトーラスです。

このような、底を厚くすることは連続的な変形と言います。連続的な変形で、ドーナツもコーヒーカップも同じトーラスと見なすことを位相的に同じ(同相)といいます。

平坦トーラスのイメージ

ゲームのマップ

ドラゴンクエストのマップなどのように、マップの左から出ると右から出てきて,マップの上から出ると下から出てくる世界はトーラスの形です。

このトーラスの世界アニメ作成しました。

トーラスの展開図

長方形の左から出ると右に出る、上から出ると下から出る、ということは長方形の向かい合う辺がくっついてるということです。

トーラスの展開(Blenderで作成)

長方形の左右の辺同士、上下の辺同士をくっつけるとドーナツの形になります。逆に、ドーナツを展開した形は長方形ということができます。

参考図(トーラス上のループの展開)

トーラスを展開した形を、平坦トーラスといい、これもドーナツやコーヒーカップと同相な図形と言います。

以上が、位相的に同じ(同相)なトーラスというものです。

トーラスの数式

トーラスの数式や名称、性質を紹介します。

トーラス上の名称

ドーナツをイメージしてください。

トーラス上のループ(円周)

水平方向に回転する円周 $\mathbf{S}^1$ は、ロンジチュードループ(緯線)と呼ばれます。

垂直方向に回転する円周 $\mathbf{S}^1$ は、メリディアンループ(経線)と呼ばれます。

トーラスを表す記号

トーラス(ドーナツ)は「円周を円周でグルッと回した形状」と言うことができます。

円周を $\mathbf{S}^1$ と書くと、数学的にはトーラス $\mathbf{T}$ は $\mathbf{T} = \mathbf{S}^1 \times \mathbf{S}^1$ と表せます。

トーラスの数式

最大のロンジチュードループの半径が $R+r$ , 最小の半径が $R-r$ で、メリディアンループの半径が $r$ のトーラスを紹介します。

トーラスの方程式

$R, r > 0$ のとき、次式はトーラスを表します:

$$(\sqrt{x^2+y^2}- R)^2 + z^2 = r^2$$

媒介変数表示

$R, r > 0$, $0 \leq \theta, \varphi < 2 \pi$ のとき、次式はトーラスを表します:

$$\left\{\begin{array}{rl}
x &=& (R + r \cos \theta) \cos \varphi \\
y &=& (R + r \cos \theta) \sin \varphi \\
z &=& r \sin \theta \\
\end{array} \right. $$

数式の解説

媒介変数表示の数式の導出を説明します。方程式は、媒介変数表示の式でパラメータを消去すれば得られます。

ロンジチュードループの観察

変数 $\theta$ を固定して、トーラスを観察しましょう。

媒介変数表示の式から、次の2式が成立します:

$$\left\{ \begin{array}{cl}
x^2 + y^2 &=& (R + r \cos \theta)^2 \\
z &=& r \sin \theta
\end{array} \right. $$

これは $z$ 軸上の点を中心とする水平方向に広がる円周(ロンジチュード)を表します。

$\theta$$0$$\pi/2$$\pi$$3\pi/2$$2\pi$
$z$$0$$R$$R-r$$R$$R+r$
半径$R+r$$R$$R-r$$R$$R+r$
$\theta$ を固定したときの様子

変数 $\theta$ を $0 \to 2 \pi$ と動かすと、最も外側の円周( $z=0$ )→頂上部の円周( $z=1$ )→最も内側の円周( $z=0$ )→最下部の円周( $z=-1$ )→最も外側の円周( $z=0$ )と曲面を描くことが分かります。

メリディアンループの観察

変数 $\varphi$ を固定してトーラスを観察しましょう。

$\cos \varphi = 1$, $\sin \varphi = 0$ のとき($\varphi = 0$), 次式が成り立ちます:

$$(x-R)^2 + z^2 = r^2$$

これは 垂直方向の円周(メリディアンループ)を表します。

$\varphi = 0$ ではないときは、図形を $z$ 軸を中心に $xy$ 平面を$-\varphi$ だけ回転すれば,同様に $\theta$ が描く図形は垂直方向の円周だと分かります。

つまり、$xy$ 平面の方向で偏角 $\varphi$ の場所のメリディアンループと一致します。

結論として、描かれる図形がトーラスと分かります。■

トーラスの計量

トーラスの表面積や体積の求め方を紹介します。

表面積

メリディアンループの周の長さが、半径 $R$ の円(ロンジチュード)の分だけあるので、トーラスの表面積は次の通り:

$$2 \pi r \times 2 \pi R = 4 \pi^2 rR.$$

体積

メリディアンループの円の面積が、半径$R$ の円(ロンジチュード)の分だけあるので、トーラスの体積は次の通り:

$$\pi r^2 \times 2 \pi R = 2 \pi^2 r^2 R.$$

プログラミング

トーラスの媒介変数表示を利用して、3次元の図をPythonで出力するコードを紹介します。

媒介変数表示によるPythonコード

Pythonの出力コード

$R$ と $r$ の値を変更すると、違う円周の長さを持つトーラスができます。

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

# トーラスの媒介変数表示の関数
def torus_parametric(u, v, R, r):
    x = (R + r * np.cos(v)) * np.cos(u)
    y = (R + r * np.cos(v)) * np.sin(u)
    z = r * np.sin(v)
    return x, y, z

# 媒介変数の範囲
u = np.linspace(0, 2 * np.pi, 100)
v = np.linspace(0, 2 * np.pi, 100)
u, v = np.meshgrid(u, v)

# トーラスのパラメータ
R = 3  # 大円の半径
r = 1  # 小円の半径

# 媒介変数を用いて座標を計算
x, y, z = torus_parametric(u, v, R, r)

# 3Dプロット
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.plot_surface(x, y, z, cmap='viridis')

# すべての軸の目盛を合わせる
ax.set_box_aspect([np.ptp(coord) for coord in [x, y, z]])

# グラフを表示
plt.show()

トーラスの出力例

$R$ と $r$ を色々と変更して、綺麗に見えるトーラスを探しました。

コメントを残す