3次元ビデオゲームや、映画やコマーシャルのCG、プロジェクションマッピングなど、3次元ベクトルデータを回転させたり、拡大縮小したりする処理は重要性を増している。阪大の問4では、こういった実践問題の練習が可能であり、その点からみれば興味深い問題である。しかし、このような計算を手計算で行うのは大変であり、試験問題を(時間内に)解く、という観点から非常に厳しいやり方かもしれない。
理論物理学の観点からすれば、3次元の力学モデルを構築し、1次変換を駆使して自由自在に処理したい、というのは自然な欲求であり、興味深い。このような計算で研鑽を積んでおけばプログラマーになったときにきっと役に立つはずだ。
4点PQRSがつくる平面、これは(1)で考えた平面であるが、これが八面体ABCDEFを切り取る断面積を計算する問題である。まずはこの平面の方程式を考えてみよう。平面の方程式の一般形はax+by+cz+d=0と表される。したがって、条件が4つあれば未定係数a,b,c,dが決定できるように思える。しかしそうは問屋が卸さない。なぜだろうか?仮に、4つの異なる点がこの平面にあることがわかったとしよう。方程式はaxi+byi+czi+d=0,(i=1,2,3,4)となる。条件を満たすi番目の点を(xi,yi,zi)と表す。4つの連立方程式をa,b,c,dについて解くことになるが、行列を用いると(x1y1z11x2y2z21x3y3z31x4y4z41)(abcd)=→0と表せるが、逆行列が存在しても(a,b,c,d)は自明な解、つまりすべて0、になってしまうし、逆行列が存在しなくてもこの連立方程式は解けないことになる。何れにしても手詰まりということである。
これはどうしてかというと、平面の方程式がどのように得られたか考え、この問題の(1)を思い出せばすぐにわかる。平面の方程式は、平面にある一点(x0,y0,z0)と、平面の法線ベクトル(a,b,c)、さらに平面内の任意の点(x,y,z)を使ってa(x−x0)+b(y−y0)+c(z−z0)=0すなわち平面上の直線と法線は直交する(内積が0)という条件により記述される。点(x,y,z)と(x0,y0,z0)を結ぶ直線の上に無い点(x,y1,z1)を用いてもう一つの条件a(x−x1)+b(y−y1)+c(z−z1)=0までは独立した条件として認めることができる。すなわち、平面上の2点が分かれば(a,b,c,d)のうち2つまでは決めることができる。しかし、3つ目の点(x2,y2,z2)がわかっても、それは役に立たない。というのは、平面内のベクトル(x−x2,y−y2,z−z2)は、先の2つのベクトルとは独立ではなくて、むしろ先の2つのベクトルの線型結合で書けてしまうからである。つまり、(x−x2y−y2z−z2)=p(x−x0y−y0z−z0)+q(x−x1y−y1z−z1)が成立するので、新しい方程式にならないのだ。ここでp,qは適当な実数である。平面上のベクトルの一次独立性とは、問(1)の答えに他ならない。
したがって、平面の方程式を決めるなら、平面上の一点を探すこと、そして次は法線ベクトルを直接見つけることなのである。ただし、法線ベクトルは平面上にある3点を見つけることができれば、計算することができる。
法線ベクトルは、平面上の任意のベクトルと直交するので、平面上の2つの独立なベクトルの「外積」を計算するばよいのである。例えば、平面上の3点(三角形をなすような3点)を用いて2つの独立のベクトルe1=(x1−x0,y1−y0,z1−z0),e2=(x2−x0,y2−y0,z2−z0)を作り、この2つの外積e1×e2を計算すると、e1×e2∥(abc)となっているのである。
すなわち、平面の方程式は
(e1×e2)⋅(r−r0)=0とまとめることができる。ただし、r=(x,y,z),r0=(x0,y0,z0)である。
式(1)を使って、まずは平面PQRSの方程式を求めてみよう。 題意に与えられているように、点PはABを1−s:sに分割する点だから→OP=s→OA+(1−s)→OBである。これをデカルト座標で表現するとP=(1−s,0,s)である。同様の計算によりQ=(0,1−s,s),R=(−1+t,0,−t)となる。一次独立なベクトルとして、→PQと→PRを取ろう。この2つのベクトルは→PQ=(1−s)(−110),→PR=(−2+t+s0−(t+s))と計算される。この2つのベクトルの外積→PQ×→PRは→PQ×→PR=(−t−s−t−s2−t−s)となる。点P(1-s,0,s)を使って平面の方程式を書き下すと(t+s)(x+y)+(t+s−2)z+s−t=0
となる。
次に三角形ABCが作る平面の方程式を求めてみる。この平面上の独立な基底として→ABと→ACを選ぶ。→AB=(10−1),→AC=(01−1)であるから、→AB×→AC=(111)となる。したがって、対応する平面の方程式はABC:x+y+z−1=0である。
式(2)から式(3)を引くとz=s, 足すとx+y+s−1=0を得る。つまり、これが平面PQRSと平面ABCの交線の方程式である。 この交線のうち、交線上にある点Pから点Qまでの線分が求める八面体ABCDEFと平面PQRSの交線である。
平面ABCの隣の面は三角形ABEである。同じように計算すると、
→AE=(0−1−1),→AE×→AB=(1−11)したがって、点Aを通ることも使うと、平面の方程式はx−y+z−1=0となる。これをPQRSの方程式と連立させると、交線の方程式が得られ、それはx+(t+s−1)y+s−1=0,(t+s)y−z+s=0となる。この線分のうち、Pから始まりxy平面と交わるところまでが求める断面の辺に相当する。交点をTと名付ければ、Tの座標は(上の方程式から)T(tt+s,−st+s,0)であることが計算できる。
この「地道な作業」を平面BEF, ACD, EDF,CDF、そしておまけとして平面BCDEについて行えば、断面積の形や寸法がわかるだろう。以下、必要な計算の結果だけをまとめて書いておこう。
(1)△BEF:
→FB=(101),→FE=(0−11),→FB×→FE=(1−1−1),x−y−z−1=0
PQRSとの交線はy=(1−t−s)x+t−1,z=(t+s)x−t
交点はTとS(0,−1+t,−t)になる。
(2)△EDF:
→FD=(−101),→FD×→FE=(111),x+y+z+1=0
PQRSとの交線はx+y−t+1=0,z=−t
交点はR(−1+t,0,−t),S。
(3)△CDF:
→FC=(011),→FC×→FD=(1−11),x−y−z+1=0
PQRSとの交線はx+(t+s−1)y−t+1=0,z=(t+s)y−t
交点はR,U(−st+s,tt+s,0)
(4)△ACD
→AD=(−10−1),→AD×→AC=(1−1−1),x−y−z+1=0
PQRSとの交線は(t+s−1)x+y+s−1=0,z=(t+s)x+s
交点はU,Q。
以上より、断面は六角形QPTSRUであり、直線PQ, TU, SRはxy平面に対し水平であるから、互いに平行の関係にある。したがって、六角形の面積は2つの台形QPTUとRSTUに分解して求めることができる。PQ=√2(1−s), SR=√2(1−t), TU=√2であることはすぐにわかる。また、PQとTUの距離はs、TUとSRの距離はtであることも(座標の情報より)自明である。したがって、六角形の面積Xは
X=s(2−s)√2+t(2−t)√2=√2(t+s)−1√2(t2+s2)
とかける。t2+s2=(t+s)2−2tsであることを用い、さらにt+s=2/3という条件を代入するとXはsの二次式になる。
X=5√29−√2(s−13)2
したがって、最大値はs=t=1/3のときで5√2/9である。
s+t=2/3という条件は最後の最後まで使わない方がよい。なぜか途中で中途半端に使用すると、まちがった答えへといってしまう(非常に不思議)。
この問題では、3次元空間中の座標を使って解いたが、回転によってもう少し見通しをよくしてから解くこともできる。次はその方法を試してみよう。
0 件のコメント:
コメントを投稿