Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

2次元と3次元の簡単な幾何学

平面における直線の方程式

  1. あるベクトルa\boldsymbol{a}に対して平行な直線

  2. あるベクトルa\boldsymbol{a}に対して垂直な直線

という2つの方法がある

ベクトルaに平行な直線

PPを通って、ベクトルa(0)\boldsymbol{a} (\neq \boldsymbol{0})に平行な直線をllとすれば、点XXll上にあることは、ベクトルPX\vec{PX}a\boldsymbol{a}に並行であること、すなわち

PX=ta\vec{PX} = t \boldsymbol{a}

となるような実数ttが存在することと同等である。

P,XP, Xの位置ベクトルをそれぞれp,x\boldsymbol{p}, \boldsymbol{x}とすれば、PX=ta\vec{PX} = t \boldsymbol{a}

xp=ta\boldsymbol{x} - \boldsymbol{p} = t \boldsymbol{a}

あるいは

x=p+ta\boldsymbol{x} = \boldsymbol{p} + t \boldsymbol{a}

と書き直すことができる。ttがあらゆる実数値をとれば、XXll上のあらゆる位置を取る。

x=p+ta\boldsymbol{x} = \boldsymbol{p} + t \boldsymbol{a} を、ttを媒介変数とする直線llベクトル方程式 といい、a\boldsymbol{a}ll方向ベクトル という。

通常のように ベクトルを成分表示して a=(a,b),p=(x0,y0),x=(x,y)\boldsymbol{a}=(a, b), \boldsymbol{p}=(x_0, y_0), \boldsymbol{x}=(x, y) とすれば x=p+ta\boldsymbol{x} = \boldsymbol{p} + t \boldsymbol{a}

(x,y)=(x0,y0)+t(a,b)(x, y)=(x_0, y_0) + t(a, b)

すなわち

x=x0+ta,y=y0+tbx=x_0 + t a, \quad y=y_0+t b

と表される。 これはべクトル方程式を座標を用いて書き表したものである。

なおa\boldsymbol{a}0\mathbf{0} ではないから、 a,ba, b の少なくとも一方は 0 ではない。

Source
import numpy as np
import matplotlib.pyplot as plt

a = np.array([2, 1])
p = np.array([0, 1])
t = 2
x = p + t * a

fig, ax = plt.subplots(figsize=[4.5, 2.5], dpi=100)
o = [0, 0]
ax.arrow(*o, *a, color="darkorange")
ax.text(*a, "a", color="darkorange")

ax.scatter(*p, color="steelblue")
ax.text(*p, "p ", color="steelblue", ha="right")
ax.scatter(*x, color="steelblue")
ax.text(*x, "x ", color="steelblue", ha="right")

ax.arrow(*p, *(x - p), color="steelblue")
pos = p + (x - p) / 2
ax.text(*pos, r"$x = \vec{p} + t \vec{a}$", color="steelblue", ha="right")
ax.set(title=fr"line with $t={t}$, $a={a}$, $p={p}$")
fig.show()
<Figure size 450x250 with 1 Axes>

tを消去した直線の方程式

媒介変数ttを消去した形にすることもできる

x=x0+tax = x_0 + t abbを掛けて、y=y0+tby=y_0+t baaを掛けて、両者を差し引けば

bxay=bx0+btaay0atb=bx0ay0b x - a y = b x_0 + b t a - a y_0 - a t b\\ = b x_0 - a y_0

α=b,β=a,γ=ay0bx0\alpha=b, \quad \beta=-a, \gamma=a y_0-b x_0として

αx+βy+γ=0\alpha x+\beta y+\gamma=0

2点を通る直線

2点 A,BA,B (ただしABA\neq B)を通る直線のべクトル方程式は

x=a+t(ba)\boldsymbol{x}=\boldsymbol{a}+t(\boldsymbol{b}-\boldsymbol{a})

あるいは

x=(1t)a+tb\boldsymbol{x}=(1-t) \boldsymbol{a}+t \boldsymbol{b}

で与えられる

a=(3,5),b=(5,3)\boldsymbol{a}=(3, 5), \boldsymbol{b}=(-5, -3)を通る直線の方程式を求める。

x=(1t)a+tb\boldsymbol{x}=(1-t) \boldsymbol{a}+t \boldsymbol{b}

より

x=(1t)(35)+t(53)\boldsymbol{x}= (1-t) \begin{pmatrix} 3 \\ 5 \end{pmatrix} + t \begin{pmatrix} -5 \\ -3 \end{pmatrix}
# 与えられた点
x1, y1 = 3, 5
x2, y2 = -5, -3

# 傾きmを計算
m = (y2 - y1) / (x2 - x1)

# 傾きを使用して点傾き形式の方程式を求める
# 点 (x1, y1) = (3, 5) を使用
m, y1 - m*x1
(1.0, 2.0)

ベクトルaに垂直な直線

平面上の点PPを通り、0\boldsymbol{0}でないベクトルa\boldsymbol{a}に垂直な直線llを考える。

XXが直線ll上にあるためには、ベクトルPX\overrightarrow{P X}a\boldsymbol{a}垂直であることが必要かつ十分である。

PX=xp\overrightarrow{P X}=\boldsymbol{x}-\boldsymbol{p}であるから、このことは

a(xp)=0 または ax=ap\boldsymbol{a} \cdot(\boldsymbol{x}-\boldsymbol{p})=0 \quad \text{ または } \quad \boldsymbol{a} \cdot \boldsymbol{x}=\boldsymbol{a} \cdot \boldsymbol{p}

a=(a,b),p=(x0,y0),x=(x,y)\boldsymbol{a}=(a, b), \boldsymbol{p}=\left(x_0, y_0\right), \quad \boldsymbol{x}=(x, y) とおけば、

a(xx0)+b(yy0)=0 または ax+by=ax0+by0a\left(x-x_0\right)+b\left(y-y_0\right)=0 \quad \text{ または } \quad a x+b y=a x_0+b y_0

と書かれる。ax0+by0a x_0+b y_0は定数なのでccとおけば

ax+by=cax + by = c

となる。

a=(a,b)\boldsymbol{a}=(a, b)のような直線に垂直なベクトルは 法ベクトル という。

空間における直線の方程式

任意の点AAの位置ベクトルがベクトルa=OA\boldsymbol{a}=\overrightarrow{O A}として定義される(OOは原点の座標)

PP を 1 つの点とし, a\boldsymbol{a}0\mathbf{0} でない 1 つのべクトルとする。 PP を通って a\boldsymbol{a} に平行な直線 ll のベクトル方程式は、 前と同様に

x=p+ta\boldsymbol{x}=\boldsymbol{p}+t \boldsymbol{a}

によって与えられる。ttを媒介変数、a\boldsymbol{a}を方向ベクトルという。

ベクトルを成分表示して a=(a,b,c),p=(x0,y0,z0),x=(x,y,z)\boldsymbol{a}=(a, b, c), \boldsymbol{p}=\left(x_0, y_0, z_0\right), \boldsymbol{x}=(x, y, z) とすれば、x=p+ta\boldsymbol{x}=\boldsymbol{p}+t \boldsymbol{a}

x=x0+ta,y=y0+tb,z=z0+tcx=x_0+t a, \quad y=y_0+t b, \quad z=z_0+t c

と書くことができる

tの消去

a,b,ca,b,cのいずれも0でなければ

xx0a=yy0b=zz0c\frac{x-x_0}{a}=\frac{y-y_0}{b}=\frac{z-z_0}{c}

としてttを消去できる。

そうでない場合、たとえばa=0,b0,c0a=0, b\neq0, c\neq 0の場合は

x=x0,yy0b=zz0cx=x_0, \quad \frac{y-y_0}{b}=\frac{z-z_0}{c}

とすればよい

空間における平面の方程式

ベクトルaに垂直な平面

所与の点PP0\boldsymbol{0}でないベクトルa\boldsymbol{a}について、PPをとおってa\boldsymbol{a}に垂直な1つの平面α\alphaが定められる

空間の点XXがその平面上にあるためには、ベクトルPX=xp\overrightarrow{P X}=\boldsymbol{x}-\boldsymbol{p}a\boldsymbol{a}垂直であることが必要かつ十分であるから、 平面α\alphaの方程式は

a(xp)=0 または ax=ap\boldsymbol{a} \cdot(\boldsymbol{x}-\boldsymbol{p})=0 \quad \text{ または } \quad \boldsymbol{a} \cdot \boldsymbol{x}=\boldsymbol{a} \cdot \boldsymbol{p}

となる。

a=(a,b,c),p=(x0,y0,z0),x=(x,y,z)\boldsymbol{a}=(a, b, c), \boldsymbol{p}=\left(x_0, y_0, z_0\right), \boldsymbol{x}=(x, y, z) とおけば

a(xx0)+b(yy0)+c(zz0)=0a\left(x-x_0\right)+b\left(y-y_0\right)+c\left(z-z_0\right)=0

となり、定数ax0+by0+cz0a x_0+b y_0+c z_0dd とおけば

ax+by+cz=da x+b y+c z=d

(3,1,2)(-3,1,2) を通り、 ベクトル (2,4,5)(2,4,-5) に垂直な平面の方程式を求めたいとする。

ax+by+cz=ax0+by0+cz0a x+b y+c z = a x_0+b y_0+c z_0

なので

2x+4y5z=6+4102 x + 4 y - 5z = -6 + 4 - 10

よって

2x+4y5z=122 x + 4 y - 5z = -12

垂直なベクトルをどう求めるか

法線ベクトルを求める

3点を通る平面

空間の平面は空間上の異なる3点で決まる。これらをP(p1,p2,p3),P(p1,p2,p3),P(p1,p2,p3)\mathrm{P}(p_1, p_2, p_3), \mathrm{P}^{\prime}\left(p_1^{\prime}, p_2^{\prime}, p_3^{\prime}\right), \mathrm{P}^{\prime \prime}\left(p_1^{\prime \prime}, p_2^{\prime \prime}, p_3^{\prime \prime}\right)とすると

平面上の点X(x1,x2,x3)X\left(x_1, x_2, x_3\right)はパラメータs,tRs, t \in \mathbb{R}を用いて

OX=OP+sPP+tPP\overrightarrow{\mathrm{OX}}=\overrightarrow{\mathrm{OP}}+s \overrightarrow{\mathrm{PP}^{\prime}}+t \overrightarrow{\mathrm{PP}^{\prime \prime}}

と書くことができる(平面のパラメータ表示)

PPを通りa,bR3\boldsymbol{a}, \boldsymbol{b} \in \mathbb{R}^3の2方向に張られた平面Π\Pi

Π={OP+sa+tbs,tR}=OP+Ra+Rb\Pi = \{\overrightarrow{\mathrm{OP}}+s \boldsymbol{a}+t \boldsymbol{b} \mid s, t \in \mathbb{R}\}=\overrightarrow{\mathrm{OP}}+\mathbb{R} \boldsymbol{a}+\mathbb{R} \boldsymbol{b}

が考えられる。Π\Pi

OX=OP+sa+tb(s,tR)\overrightarrow{\mathrm{OX}}=\overrightarrow{\mathrm{OP}}+s \boldsymbol{a}+t \boldsymbol{b} \quad (s, t \in \mathbb{R})

と書ける点XXの全体である。

import matplotlib.pyplot as plt
import numpy as np

o = np.array([0, 0])
p = np.array([1, 1])
a = np.array([0, 2])
b = np.array([2, 0])
x = p + a + b

fig, ax = plt.subplots()
arrow_cfg = dict(width=0.01, color="black", length_includes_head=True)
ax.arrow(*o, *a, **arrow_cfg)
ax.arrow(*o, *b, **arrow_cfg)

ax.scatter(*x)
<Figure size 640x480 with 1 Axes>
import matplotlib.pyplot as plt
import numpy as np

o = np.array([0, 0])
p = np.array([1, 1])
a = np.array([0, 2])
b = np.array([2, 0])
x = p + a + b

fig, ax = plt.subplots()
arrow_cfg = dict(width=0.01, color="black", length_includes_head=True)
ax.arrow(*o, *a, **arrow_cfg)
ax.arrow(*o, *b, **arrow_cfg)

ax.scatter(*x)
<Figure size 640x480 with 1 Axes>
a=(a1,a2,a3)Tb=(b1,b2,b3)T\boldsymbol{a} = (a_1,a_2,a_3)^T\\ \boldsymbol{b} = (b_1,b_2,b_3)^T\\

とすると

OX=OP+sa+tb{x1p1=sa1+tb1x2p2=sa2+tb2x3p3=sa3+tb3\overrightarrow{\mathrm{OX}}=\overrightarrow{\mathrm{OP}}+s \boldsymbol{a}+t \boldsymbol{b} \Longleftrightarrow \left\{\begin{array}{l} x_1-p_1=s a_1+t b_1 \\ x_2-p_2=s a_2+t b_2 \\ x_3-p_3=s a_3+t b_3 \end{array}\right.

となるので、この連立1次方程式を解く。

第1,2式を行列表記すると

[a1b1a2b2][st]=[x1p1x2p2]\left[\begin{array}{ll} a_1 & b_1 \\ a_2 & b_2 \end{array}\right] \left[\begin{array}{l} s \\ t \end{array}\right] = \left[\begin{array}{l} x_1-p_1 \\ x_2-p_2 \end{array}\right]

なので

[st]=[a1b1a2b2]1[x1p1x2p2]\left[\begin{array}{l} s \\ t \end{array}\right]=\left[\begin{array}{ll} a_1 & b_1 \\ a_2 & b_2 \end{array}\right]^{-1}\left[\begin{array}{l} x_1-p_1 \\ x_2-p_2 \end{array}\right]

となるので、第2,32,3式に代入すれば、Δ12:=a1b2a2b10\Delta_{12}:=a_1 b_2-a_2 b_1 \neq 0 の下に

[x2p2x3p3]=[a2b2a3b3][a1b1a2b2]1[x1p1x2p2]=1Δ12[a2b2a3b3][b2b1a2a1][x1p1x2p2]=1Δ12[0a1b2a2b1a3b2a2b3a1b3a3b1][x1p1x2p2]\begin{aligned} & {\left[\begin{array}{c} x_2-p_2 \\ x_3-p_3 \end{array}\right]=\left[\begin{array}{ll} a_2 & b_2 \\ a_3 & b_3 \end{array}\right]\left[\begin{array}{ll} a_1 & b_1 \\ a_2 & b_2 \end{array}\right]^{-1}\left[\begin{array}{l} x_1-p_1 \\ x_2-p_2 \end{array}\right]} \\ & =\frac{1}{\Delta_{12}}\left[\begin{array}{ll} a_2 & b_2 \\ a_3 & b_3 \end{array}\right]\left[\begin{array}{rr} b_2 & -b_1 \\ -a_2 & a_1 \end{array}\right]\left[\begin{array}{l} x_1-p_1 \\ x_2-p_2 \end{array}\right] \\ & =\frac{1}{\Delta_{12}}\left[\begin{array}{cc} 0 & a_1 b_2-a_2 b_1 \\ a_3 b_2-a_2 b_3 & a_1 b_3-a_3 b_1 \end{array}\right]\left[\begin{array}{l} x_1-p_1 \\ x_2-p_2 \end{array}\right] \end{aligned}

この第2成分は

x3p3=a3b2a2b3Δ12(x1p1)+a1b3a3b1Δ12(x2p2)x_3-p_3=\frac{a_3 b_2-a_2 b_3}{\Delta_{12}}\left(x_1-p_1\right)+\frac{a_1 b_3-a_3 b_1}{\Delta_{12}}\left(x_2-p_2\right)

となり、

Δ12(x3p3)=a3b2a2b3(x1p1)+a1b3a3b1(x2p2)\Delta_{12} (x_3-p_3) = a_3 b_2-a_2 b_3 (x_1-p_1) + a_1 b_3-a_3 b_1 (x_2-p_2)

つまり

a2b2a3b3(x1p1)+a3b3a1b1(x2p2)a1b1a2b2(x3p3)=0\left|\begin{array}{ll} a_2 & b_2 \\ a_3 & b_3 \end{array}\right| (x_1-p_1) + \left|\begin{array}{ll} a_3 & b_3 \\ a_1 & b_1 \end{array}\right| (x_2-p_2) -\left|\begin{array}{ll} a_1 & b_1 \\ a_2 & b_2 \end{array}\right| (x_3-p_3) =0

なので

[λ,μ,ν]=[a2b2a3b3,a3b3a1b1,a1b1a2b2][\lambda, \mu, \nu]=\left[\left|\begin{array}{ll} a_2 & b_2 \\ a_3 & b_3 \end{array}\right|,\left|\begin{array}{ll} a_3 & b_3 \\ a_1 & b_1 \end{array}\right|,\left|\begin{array}{ll} a_1 & b_1 \\ a_2 & b_2 \end{array}\right|\right]

をつかって

[λ,μ,ν][x1p1x2p2x3p3]=0[\lambda, \mu, \nu]\left[\begin{array}{l}x_1-p_1 \\ x_2-p_2 \\ x_3-p_3\end{array}\right]=0

と表すことができる

ベクトル積で表す平面の方程式

[λ,μ,ν][x1p1x2p2x3p3]=0[\lambda, \mu, \nu]\left[\begin{array}{l}x_1-p_1 \\ x_2-p_2 \\ x_3-p_3\end{array}\right]=0

[λ,μ,ν][\lambda, \mu, \nu]はベクトル積(外積)a×b\boldsymbol{a} \times \boldsymbol{b}であるため、

平面の方程式は、外積と内積を使って

(a×b)(xp)=0(\boldsymbol{a} \times \boldsymbol{b}) \cdot (\boldsymbol{x}-\boldsymbol{p}) = 0

と書くことができる

(法線ベクトルaaを 外積 a×b\boldsymbol{a} \times \boldsymbol{b}で求める)

ベクトル積は以下のように(形式的に)書くことができる

a×b=a1b1e1a2b2e2a3b3e3=abe\boldsymbol{a} \times \boldsymbol{b}=\left|\begin{array}{lll} a_1 & b_1 & \boldsymbol{e}_1 \\ a_2 & b_2 & \boldsymbol{e}_2 \\ a_3 & b_3 & \boldsymbol{e}_3 \end{array}\right|=\left|\begin{array}{lll} \boldsymbol{a} & \boldsymbol{b} & \boldsymbol{e} \end{array}\right|

そのため、(xp)(\boldsymbol{x}-\boldsymbol{p})との内積をとるということは、eexpx-pで置き換えた行列に対する行列式

(a×b)(xp)=abxp(\boldsymbol{a} \times \boldsymbol{b}) \cdot (\boldsymbol{x}-\boldsymbol{p}) = \left|\begin{array}{lll} \boldsymbol{a} & \boldsymbol{b} & \boldsymbol{x}-\boldsymbol{p} \end{array}\right|

ということになる