メールマガジン・新着情報一覧
- TOP
- メールマガジン・新着情報一覧
- A-0151. 3点を通る平面の方程式 — T.T
2023.11.08
A-0151. 3点を通る平面の方程式 — T.T
◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇ 3点を通る平面の方程式 発行:エスオーエル株式会社 https://www.sol-j.co.jp/ 連載「X線CTで高精度寸法測定!?」 2023年11月8日号 VOL.151 平素は格別のお引き立てを賜り、厚く御礼申し上げます。 X線CTによる精密測定やアプリケーション開発情報などをテーマに、 無料にてメールマガジンを配信いたしております。 ◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇ 最近は、幾何学のちょっとした計算であれば、 ソフトウェアがすぐに答えを出してくれます。 (ちょっとしたどころか、かなり複雑な計算もすぐに答えが出ます。) でも、どんな計算をさせたいのかは、人間が考える必要があります。 そして、考えるためには、自力でも計算できる基礎力は必要です。 時々出会う問題に、「3点を通る平面の方程式」を求めたい というものがあります。 (最近も実務で何度か使いました。) 今回は、3点が与えられたときに、 平面の方程式を出す一般公式を書き下してみます。 まず、与える3点 a, b, c の座標を a = (a1, a2, a3) b = (b1, b2, b3) c = (c1, c2, c3) とします。 3点を結べば、三角形ができますが、 その三角形が乗っかる平面の式を求めるということです。 このとき a, b, c の座標は、ベクトルになっているので、 (b-a), (c-a) というベクトルの差を取ることで、 三角形の2辺に対応するベクトルを得ることができます。 それぞれのベクトルの成分を書くと、 b-a = (b1-a1, b2-a2, b3-a3) c-a = (c1-a1, c2-a2, c3-a3) となります。 (ベクトルの差なので、各成分の差を並べるだけです。) さて、平面に沿う2つのベクトルができましたので、 この外積を取ることにします。 外積を取ることで、2つのベクトルに垂直なベクトル n ができます。 つまり、平面の法線方向を向いたベクトルになります。 外積も機械的に計算できます。 n = (b-a)×(c-a) の各成分は、 n1 = (b2-a2)(c3-a3)-(b3-a3)(c2-a2) n2 = (b3-a3)(c1-a1)-(b1-a1)(c3-a3) n3 = (b1-a1)(c2-a2)-(b2-a2)(c1-a1) となります。 続いて、平面の方程式: Ax + By + Cz + D = 0 における係数 A, B, C, D について考えます。 法線方向を向いたベクトルをこれらの係数で書くことができれば、 目的を達成できそうです。 そこでまず、この平面が X軸、Y軸、Z軸 と交わる点を求めます。 X軸との交点は、(x, 0, 0) を代入することで、 Ax + D = 0 となるので、x = -D/A のように解けます。 同様に、Y軸とZ軸についても計算すると、3つの交点座標が (-D/A, 0, 0) ( 0, -D/B, 0) ( 0, 0, -D/C) だと分かります。 3つの点の座標が分かれば、最初にやった手順と同じように、 ベクトルの差を取って、2つのベクトルを作り、外積を計算します。 差を取ってできる2つのベクトルは、 (-D/A, D/B, 0) ( 0, D/B, -D/C) となり、 その外積 m = (-D/A, D/B, 0)×(0, D/B, -D/C) は、 m = ( (-DD)/(BC), (-DD)/(AC), (-DD)/(AB)) と計算できます。 このままでは少し分かりにくいので、定数倍を括りだします。 すると、 m = -DD/(ABC) (A, B, C) となります。 さて、与えられた3点 a, b, c から作ったベクトル n と、 平面の方程式の係数 A, B, C, D で表されるベクトル m ができました。 どちらも、法線方向を向いたベクトルです。 平面の方程式は、両辺を定数倍しても同じ式なので、 n = (A, B, C) と取っても良いことが分かります。 つまり、 A = (b2-a2)(c3-a3)-(b3-a3)(c2-a2) B = (b3-a3)(c1-a1)-(b1-a1)(c3-a3) C = (b1-a1)(c2-a2)-(b2-a2)(c1-a1) のように求まったことになります。 最後に、Dを求めるために、 与えられた3点のうちの一つ a を使って、 A a1 + B a2 + C a3 + D = 0 を解いて、 D = -(A a1 + B a2 + C a3) を得ます。 改めて、今回得た公式を書くと、 A = (b2-a2)(c3-a3)-(b3-a3)(c2-a2) B = (b3-a3)(c1-a1)-(b1-a1)(c3-a3) C = (b1-a1)(c2-a2)-(b2-a2)(c1-a1) D = -(A a1 + B a2 + C a3) になります。 与えられた3点で作ったベクトルの外積の成分が きれいに平面の式の係数になるというのは、 何か心に感じるものがありませんか? -- 高野智暢