3次元ビデオゲームや、映画やコマーシャルのCG、プロジェクションマッピングなど、3次元ベクトルデータを回転させたり、拡大縮小したりする処理は重要性を増している。阪大の問4では、こういった実践問題の練習が可能であり、その点からみれば興味深い問題である。しかし、このような計算を手計算で行うのは大変であり、試験問題を(時間内に)解く、という観点から非常に厳しいやり方かもしれない。
理論物理学の観点からすれば、3次元の力学モデルを構築し、1次変換を駆使して自由自在に処理したい、というのは自然な欲求であり、興味深い。このような計算で研鑽を積んでおけばプログラマーになったときにきっと役に立つはずだ。
4点PQRSがつくる平面、これは(1)で考えた平面であるが、これが八面体ABCDEFを切り取る断面積を計算する問題である。まずはこの平面の方程式を考えてみよう。平面の方程式の一般形は\(ax+by+cz+d=0\)と表される。したがって、条件が4つあれば未定係数\(a,b,c,d\)が決定できるように思える。しかしそうは問屋が卸さない。なぜだろうか?仮に、4つの異なる点がこの平面にあることがわかったとしよう。方程式は\[ax_i+by_i+cz_i+d=0, \quad (i=1,2,3,4)\]となる。条件を満たす\(i\)番目の点を\((x_i,y_i,z_i)\)と表す。4つの連立方程式をa,b,c,dについて解くことになるが、行列を用いると\[\left(\begin{array}{cccc}x_1 & y_1 & z_1 & 1\\ x_2 & y_2 & z_2 & 1\\ x_3 & y_3 & z_3 & 1\\ x_4 & y_4 & z_4 & 1\end{array}\right) \left(\begin{array}{c}a \\ b\\ c\\ d\end{array}\right) = \vec{0} \]と表せるが、逆行列が存在しても(a,b,c,d)は自明な解、つまりすべて0、になってしまうし、逆行列が存在しなくてもこの連立方程式は解けないことになる。何れにしても手詰まりということである。
これはどうしてかというと、平面の方程式がどのように得られたか考え、この問題の(1)を思い出せばすぐにわかる。平面の方程式は、平面にある一点\((x_0,y_0,z_0)\)と、平面の法線ベクトル\((a,b,c)\)、さらに平面内の任意の点\((x,y,z)\)を使って\[a(x-x_0)+b(y-y_0)+c(z-z_0)=0\]すなわち平面上の直線と法線は直交する(内積が0)という条件により記述される。点\((x,y,z)\)と\((x_0,y_0,z_0)\)を結ぶ直線の上に無い点\((x_,y_1,z_1)\)を用いてもう一つの条件\[a(x-x_1)+b(y-y_1)+c(z-z_1)=0\]までは独立した条件として認めることができる。すなわち、平面上の2点が分かれば(a,b,c,d)のうち2つまでは決めることができる。しかし、3つ目の点\((x_2,y_2,z_2)\)がわかっても、それは役に立たない。というのは、平面内のベクトル\((x-x_2,y-y_2,z-z_2)\)は、先の2つのベクトルとは独立ではなくて、むしろ先の2つのベクトルの線型結合で書けてしまうからである。つまり、\[\left(\begin{array}{c}x-x_2\\y-y_2\\z-z_2\end{array}\right)=p\left(\begin{array}{c}x-x_0\\y-y_0\\z-z_0\end{array}\right) + q\left(\begin{array}{c}x-x_1\\y-y_1\\z-z_1\end{array}\right)\]が成立するので、新しい方程式にならないのだ。ここで\(p,q\)は適当な実数である。平面上のベクトルの一次独立性とは、問(1)の答えに他ならない。
したがって、平面の方程式を決めるなら、平面上の一点を探すこと、そして次は法線ベクトルを直接見つけることなのである。ただし、法線ベクトルは平面上にある3点を見つけることができれば、計算することができる。
法線ベクトルは、平面上の任意のベクトルと直交するので、平面上の2つの独立なベクトルの「外積」を計算するばよいのである。例えば、平面上の3点(三角形をなすような3点)を用いて2つの独立のベクトル\(\mathbf{e}_1=(x_1-x_0, y_1-y_0,z_1-z_0),\quad \mathbf{e}_2=(x_2-x_0, y_2-y_0,z_2-z_0)\)を作り、この2つの外積\(\mathbf{e}_1\times\mathbf{e}_2\)を計算すると、\[\mathbf{e}_1\times\mathbf{e}_2 \parallel \left(\begin{array}{c}a\\ b\\ c\end{array}\right)\]となっているのである。
すなわち、平面の方程式は
\[\begin{equation}\left(\mathbf{e}_1\times\mathbf{e}_2\right)\cdot\left(\mathbf{r}-\mathbf{r}_0\right)={0}\end{equation}\]とまとめることができる。ただし、\(\mathbf{r}=(x,y,z), \quad \mathbf{r}_0=(x_0,y_0,z_0)\)である。
式(1)を使って、まずは平面PQRSの方程式を求めてみよう。 題意に与えられているように、点PはABを\(1-s:s\)に分割する点だから\(\vec{OP}=s\vec{OA}+(1-s)\vec{OB}\)である。これをデカルト座標で表現すると\(P=(1-s,0,s)\)である。同様の計算により\(Q=(0,1-s,s), R=(-1+t,0,-t)\)となる。一次独立なベクトルとして、\(\vec{PQ}\)と\(\vec{PR}\)を取ろう。この2つのベクトルは\[\vec{PQ}=(1-s)\left(\begin{array}{c}-1\\ 1 \\ 0\end{array}\right), \quad \vec{PR}=\left(\begin{array}{c}-2+t+s\\ 0\\ -(t+s)\end{array}\right)\]と計算される。この2つのベクトルの外積\(\vec{PQ}\times\vec{PR}\)は\[\vec{PQ}\times\vec{PR}=\left(\begin{array}{c} -t-s\\ -t-s \\ 2-t-s\end{array}\right)\]となる。点P(1-s,0,s)を使って平面の方程式を書き下すと\[\begin{equation}
(t+s)(x+y)+(t+s-2)z+s-t=0
\end{equation}\]
となる。
次に三角形ABCが作る平面の方程式を求めてみる。この平面上の独立な基底として\(\vec{AB}\)と\(\vec{AC}\)を選ぶ。\[\vec{AB}=\left(\begin{array}{c}1\\ 0\\ -1\end{array}\right), \quad \vec{AC}=\left(\begin{array}{c}0\\ 1\\ -1\end{array}\right)\]であるから、\[\vec{AB}\times\vec{AC} = \left(\begin{array}{c}1\\ 1\\ 1\end{array}\right)\]となる。したがって、対応する平面の方程式は\[\begin{equation}{\rm ABC:} \quad x+y+z-1=0\end{equation}\]である。
式(2)から式(3)を引くと\(z=s\), 足すと\(x+y+s-1=0\)を得る。つまり、これが平面PQRSと平面ABCの交線の方程式である。 この交線のうち、交線上にある点Pから点Qまでの線分が求める八面体ABCDEFと平面PQRSの交線である。
平面ABCの隣の面は三角形ABEである。同じように計算すると、
\[
\vec{AE}=\left(\begin{array}{c}0\\ -1\\ -1\end{array}\right), \quad
\vec{AE}\times\vec{AB} = \left(\begin{array}{c}1\\ -1\\ 1\end{array}\right)
\]したがって、点Aを通ることも使うと、平面の方程式は\[\begin{equation}x-y+z-1=0\end{equation}\]となる。これをPQRSの方程式と連立させると、交線の方程式が得られ、それは\[x+(t+s-1)y+s-1=0, \quad (t+s)y-z+s=0\]となる。この線分のうち、Pから始まりxy平面と交わるところまでが求める断面の辺に相当する。交点をTと名付ければ、Tの座標は(上の方程式から)\[T(\frac{t}{t+s},-\frac{s}{t+s},0)\]であることが計算できる。
この「地道な作業」を平面BEF, ACD, EDF,CDF、そしておまけとして平面BCDEについて行えば、断面積の形や寸法がわかるだろう。以下、必要な計算の結果だけをまとめて書いておこう。
(1)△BEF:
\[\begin{equation}
\vec{FB}=\left(\begin{array}{c} 1\\ 0 \\ 1\end{array}\right), \quad
\vec{FE}=\left(\begin{array}{c} 0\\ -1 \\ 1\end{array}\right), \quad
\vec{FB}\times\vec{FE} = \left(\begin{array}{c}1\\ -1\\ -1\end{array}\right), \\
x-y-z-1=0
\end{equation}\]
PQRSとの交線は\[y=(1-t-s)x+t-1, \quad z=(t+s)x-t\]
交点はTと\(S(0, -1+t,-t)\)になる。
(2)△EDF:
\[\begin{equation}
\vec{FD}=\left(\begin{array}{c} -1\\ 0 \\ 1\end{array}\right), \quad
\vec{FD}\times\vec{FE} = \left(\begin{array}{c}1\\ 1\\ 1\end{array}\right), \\
x+y+z+1=0
\end{equation}\]
PQRSとの交線は\[x+y-t+1=0, \quad z=-t\]
交点は\(R(-1+t,0,-t)\),S。
(3)△CDF:
\[\begin{equation}
\vec{FC}=\left(\begin{array}{c} 0\\ 1 \\ 1\end{array}\right), \quad
\vec{FC}\times\vec{FD} = \left(\begin{array}{c}1\\ -1\\ 1\end{array}\right), \\
x-y-z+1=0
\end{equation}\]
PQRSとの交線は\[x+(t+s-1)y-t+1=0, \quad z=(t+s)y-t\]
交点はR,\[U(-\frac{s}{t+s},\frac{t}{t+s},0)\]
(4)△ACD
\[\begin{equation}
\vec{AD}=\left(\begin{array}{c} -1\\ 0 \\ -1\end{array}\right), \quad
\vec{AD}\times\vec{AC} = \left(\begin{array}{c}1\\ -1\\ -1\end{array}\right), \\
x-y-z+1=0
\end{equation}\]
PQRSとの交線は\[(t+s-1)x+y+s-1=0, \quad z=(t+s)x+s\]
交点はU,Q。
以上より、断面は六角形QPTSRUであり、直線PQ, TU, SRはxy平面に対し水平であるから、互いに平行の関係にある。したがって、六角形の面積は2つの台形QPTUとRSTUに分解して求めることができる。PQ=\(\sqrt{2}(1-s)\), SR=\(\sqrt{2}(1-t)\), TU=\(\sqrt{2}\)であることはすぐにわかる。また、PQとTUの距離はs、TUとSRの距離はtであることも(座標の情報より)自明である。したがって、六角形の面積Xは
\[
X=\frac{s(2-s)}{\sqrt{2}} + \frac{t(2-t)}{\sqrt{2}} = \sqrt{2}(t+s) - \frac{1}{\sqrt{2}}(t^2+s^2)
\]
とかける。\(t^2+s^2 = (t+s)^2 - 2ts\)であることを用い、さらに\(t+s=2/3\)という条件を代入するとXはsの二次式になる。
\[
X= \frac{5\sqrt{2}}{9}-\sqrt{2}\left(s-\frac{1}{3}\right)^2
\]
したがって、最大値は\(s=t=1/3\)のときで\(5\sqrt{2}/{9}\)である。
\(s+t=2/3\)という条件は最後の最後まで使わない方がよい。なぜか途中で中途半端に使用すると、まちがった答えへといってしまう(非常に不思議)。
この問題では、3次元空間中の座標を使って解いたが、回転によってもう少し見通しをよくしてから解くこともできる。次はその方法を試してみよう。
0 件のコメント:
コメントを投稿