• 締切済み

平面に反射する点を求めたいのですが…。

はじめまして。 当方大学生です。立体的なものの考え方が苦手で、考えていたら余計こんがらがってきてしまいました。 既知の平面H:ax + by + cz + d = 0 があります。 この平面を突き抜ける形で、点がP = (p1,p2,p3) からQ = (q1,q2,q3)へ移動していきます。P、Qの値も既知です。 (※)この平面が点の動く範囲を制限する制約条件(境界面)となっていて、点が動いた時に境界面を越えたら反射するプログラムを組み込みたいのですが…。 このとき、平面を突き抜ける事なく、点を平面Hに対して反射させた新たな点R = (r1,r2,r3)を求めたいです。 わかる方、教えていただけたら嬉しいです。 よろしくお願いします。

みんなの回答

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.3

#2 の補足で OK です.

  • info22
  • ベストアンサー率55% (2225/4034)
回答No.2

自助努力の解答のプロセスを補足に書いてください。 ヒントのみにします。 線分PQと平面Hの交点をO、点Pから平面Hに下ろした垂線の足をSと置くと 点P,O,Q,R,Sは同一平面M上にあり、平面Hと平面Mは直交します。 点P,O,Qは同一直線上にあり、点OとSを結ぶ直線は平面Hと平面Mの交線となっている。 そして、反射の法則は平面M上でP→Oで平面Hの点Oで反射し、O→Rと進む。 この反射は平面M上で起こっている。 座標系を三次元アフィン変換して、モデルを単純化すれば簡単でしょう。 つまり平面Hをz=0の平面とし、平面Mをx=0の平面とし、Oを原点とすると、反射経路はz軸対称に起こり、反射点が原点Oになります。 ∠PORはz軸により二等分されます。また∠QORはx軸で二等分されます。 反射の様子を横から見た図をA4に紙に書いて、空間の任意の角度で持って、平行移動とX軸とY軸の周りの回転だけで上のような単純化位置に反射図面を移動できることを確認してください。平行移動->Xの周りの回転-> Y軸の周りに回転->反射法則適用->元に戻す逆行列操作を機械的にするだけです。 平面内での反射なら、中学生でもできるでしょう。 3次元空間で任意の平面内での反射としてやたら変数を増やし、一般化しようとするのは、何の意味やメリットもありません。 三次元アフィン変換の中の平行移動と各座標軸の周りの回転だけで、上記のような単純なモデル化ができますし、そのモデル化も、平行移動行列とX軸の周りの回転行列移動とY軸の周りの回転移動行列の積であらわせます。 少し、三次元のアフィン変換を勉強して、座標系の平行移動と回転移動に行列計算をマスターして下さい。 http://ft-lab.ne.jp/cgi-bin/wiki.cgi?page=%A5%A2%A5%D5%A5%A3%A5%F3%CA%D1%B4%B9_3DCG http://www-antenna.ee.titech.ac.jp/~hira/hobby/edu/afin_trans/math_html/index.html

daarc1gy
質問者

補足

返信ありがとうございます。 説明不足で申し訳ありません、僕が考えていた方法を書きます。 自信がないので、間違っていたらすいません。 点Qから平面Hに垂直に交わる直線はパラメータの値をtとすれば、 x = at + q1 y = bt + q2 z = ct + q3 と表せ、これを平面Hの方程式に代入します。 すると点Sに対応するパラメータの値(t’とします)が得られます。 そこから点S = (at’ + q1、bt’ + q2、ct’ + q3 ) と定められます。 この点S=(s1,s2,s3)とすると、 そこから反射した点R = (2s1 - q1、2s2 - q2、2s3 - q3)と求まりました。 この方法でよいのか、間違っているのかよくわかりません。 ちなみにこの場合線分QSと線分SRの長さは等しくなり、∠QORを平面Hが二等分しているという事でしょうか? アフィン変換というのは初めて聞きました、今から添付のページを参考に見てきます。 稚拙な文章でわかりにくいかと思いますが、よろしくお願いします。

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

全部省略すると P と Q が H に関し同じ側にあれば R=Q, 反対側にあれば R は H に関し Q と対称な点になるはず.

daarc1gy
質問者

お礼

お返事ありがとうございます。 内容はわかるのですが、具体的にどのように求めるのかで迷っています。 勉強不足なのでしょうが、自分でもう少し考えてみたいと思います。 お忙しい中返信ありがとうございます。