Loading [MathJax]/jax/output/CommonHTML/jax.js

2018年3月14日水曜日

阪大2018問4の後半:平面と平面の交線を利用する

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(xx0)+b(yy0)+c(zz0)=0すなわち平面上の直線と法線は直交する(内積が0)という条件により記述される。点(x,y,z)(x0,y0,z0)を結ぶ直線の上に無い点(x,y1,z1)を用いてもう一つの条件a(xx1)+b(yy1)+c(zz1)=0までは独立した条件として認めることができる。すなわち、平面上の2点が分かれば(a,b,c,d)のうち2つまでは決めることができる。しかし、3つ目の点(x2,y2,z2)がわかっても、それは役に立たない。というのは、平面内のベクトル(xx2,yy2,zz2)は、先の2つのベクトルとは独立ではなくて、むしろ先の2つのベクトルの線型結合で書けてしまうからである。つまり、(xx2yy2zz2)=p(xx0yy0zz0)+q(xx1yy1zz1)が成立するので、新しい方程式にならないのだ。ここでp,qは適当な実数である。平面上のベクトルの一次独立性とは、問(1)の答えに他ならない。

したがって、平面の方程式を決めるなら、平面上の一点を探すこと、そして次は法線ベクトルを直接見つけることなのである。ただし、法線ベクトルは平面上にある3点を見つけることができれば、計算することができる。

法線ベクトルは、平面上の任意のベクトルと直交するので、平面上の2つの独立なベクトルの「外積」を計算するばよいのである。例えば、平面上の3点(三角形をなすような3点)を用いて2つの独立のベクトルe1=(x1x0,y1y0,z1z0),e2=(x2x0,y2y0,z2z0)を作り、この2つの外積e1×e2を計算すると、e1×e2(abc)となっているのである。

すなわち、平面の方程式は
(e1×e2)(rr0)=0とまとめることができる。ただし、r=(x,y,z),r0=(x0,y0,z0)である。

式(1)を使って、まずは平面PQRSの方程式を求めてみよう。 題意に与えられているように、点PはABを1s:sに分割する点だからOP=sOA+(1s)OBである。これをデカルト座標で表現するとP=(1s,0,s)である。同様の計算によりQ=(0,1s,s),R=(1+t,0,t)となる。一次独立なベクトルとして、PQPRを取ろう。この2つのベクトルはPQ=(1s)(110),PR=(2+t+s0(t+s))と計算される。この2つのベクトルの外積PQ×PRPQ×PR=(tsts2ts)となる。点P(1-s,0,s)を使って平面の方程式を書き下すと(t+s)(x+y)+(t+s2)z+st=0
となる。

次に三角形ABCが作る平面の方程式を求めてみる。この平面上の独立な基底としてABACを選ぶ。AB=(101),AC=(011)であるから、AB×AC=(111)となる。したがって、対応する平面の方程式はABC:x+y+z1=0である。

式(2)から式(3)を引くとz=s,  足すとx+y+s1=0を得る。つまり、これが平面PQRSと平面ABCの交線の方程式である。 この交線のうち、交線上にある点Pから点Qまでの線分が求める八面体ABCDEFと平面PQRSの交線である。

平面ABCの隣の面は三角形ABEである。同じように計算すると、
 AE=(011),AE×AB=(111)したがって、点Aを通ることも使うと、平面の方程式はxy+z1=0となる。これをPQRSの方程式と連立させると、交線の方程式が得られ、それはx+(t+s1)y+s1=0,(t+s)yz+s=0となる。この線分のうち、Pから始まりxy平面と交わるところまでが求める断面の辺に相当する。交点をTと名付ければ、Tの座標は(上の方程式から)T(tt+s,st+s,0)であることが計算できる。

この「地道な作業」を平面BEF, ACD, EDF,CDF、そしておまけとして平面BCDEについて行えば、断面積の形や寸法がわかるだろう。以下、必要な計算の結果だけをまとめて書いておこう。
(1)△BEF:
FB=(101),FE=(011),FB×FE=(111),xyz1=0
PQRSとの交線はy=(1ts)x+t1,z=(t+s)xt
交点はTとS(0,1+t,t)になる。

(2)△EDF:
FD=(101),FD×FE=(111),x+y+z+1=0
PQRSとの交線はx+yt+1=0,z=t 
交点はR(1+t,0,t),S。

(3)△CDF:
FC=(011),FC×FD=(111),xyz+1=0
PQRSとの交線はx+(t+s1)yt+1=0,z=(t+s)yt
 交点はR,U(st+s,tt+s,0)

(4)△ACD
AD=(101),AD×AC=(111),xyz+1=0
 PQRSとの交線は(t+s1)x+y+s1=0,z=(t+s)x+s
交点はU,Q。

以上より、断面は六角形QPTSRUであり、直線PQ, TU, SRはxy平面に対し水平であるから、互いに平行の関係にある。したがって、六角形の面積は2つの台形QPTUとRSTUに分解して求めることができる。PQ=2(1s), SR=2(1t), TU=2であることはすぐにわかる。また、PQとTUの距離はs、TUとSRの距離はtであることも(座標の情報より)自明である。したがって、六角形の面積Xは
X=s(2s)2+t(2t)2=2(t+s)12(t2+s2)
とかける。t2+s2=(t+s)22tsであることを用い、さらにt+s=2/3という条件を代入するとXはsの二次式になる。
X=5292(s13)2
したがって、最大値はs=t=1/3のときで52/9である。

s+t=2/3という条件は最後の最後まで使わない方がよい。なぜか途中で中途半端に使用すると、まちがった答えへといってしまう(非常に不思議)。

この問題では、3次元空間中の座標を使って解いたが、回転によってもう少し見通しをよくしてから解くこともできる。次はその方法を試してみよう。


0 件のコメント:

コメントを投稿