• ベストアンサー

入射角反射角

VC++6.0+DirectX8.0SDKで2Dのゲームを作っています。 壁にあたったら反射するという事をしたいのですが、 角度αの面に対してベクトルAがぶつかったとして 反射後のベクトルA'を計算するにはどうすればいいでしょうか? (x成分y成分の具体的な計算方法を知りたいです) 数学的に高校レベルかと思うのですが・・・ 恥ずかしながらご教授ください。

質問者が選んだベストアンサー

  • ベストアンサー
  • aodesu
  • ベストアンサー率14% (6/42)
回答No.1

教科書などを見れば分かると思うんだけど・・・ 検索エンジンで検索すれば出てくると思うし。 角度αで当たったら、角度αで反対に反射します。 図示できないのでうまく説明できないけど。 例えばX-YグラフY=0に壁があるとして、 (2,1)から原点方向に球を投げると(-2、1)の方向に球は向かいます。 ようするにX=0に関して線対称の位置に行くってことです。

sha-girl
質問者

お礼

ありがとうございます。 入射角と反射角が等しいのはわかるのですが具体的に 30度の面に対してベクトル(2,-1)がぶつかったときの 反射後のベクトルを求める式を知りたいのです。 図に書いて考えると 答えとしてはベクトル(0,√3)になるのだと思うのですが(自信無し) これを一般的な式で変換したいわけです。 もちろんwebでは調べましたが、 なかなか自分に理解できるページが無かったので・・・。 どこか参考になるページがあれば宜しくお願いします。 (ちなみに教科書はありません・・・)

sha-girl
質問者

補足

とりあえず、私なりに考えたのは 最初のベクトルAから余弦定理から arccosでなす角βを求めて 反射後のベクトルは x'=|A|cos(α+β) y'=|A|sin(α+β) といった感じになるのでしょうか。

その他の回答 (4)

noname#11476
noname#11476
回答No.5

失礼しました。文字が化けていますね。 >面上の点(どれでも任意)をP 面上の点(どれでも任意)をPs >入射方向ベクトルaの出発点が必要でこれをPasdjr> 入射方向ベクトルaの出発点が必要でこれをPaとすると、 です。

sha-girl
質問者

お礼

詳しく分かり易い説明とても参考になります。ありがとうございました。

noname#11476
noname#11476
回答No.4

ぶつかる面の法線ベクトルをn、面上の点(どれでも任意)をP、入射方向ベクトルをa、出射方向ベクトルをbとします。 まず、方向ベクトルは、 b=a-2(a・n)n ('・'は内積を表します。 ax * nx + ay * ny + az * nz ですね) で求まります。(全て単位ベクトル=大きさ1のベクトルで計算しています) 具体的に平面状でぶつかった点Pcを求めるには、入射方向ベクトルaの出発点が必要でこれをPasdjr> Pc = Pa + {n・(Ps-Pa)/(n・a)}a となります。 上記は三次元空間で考えましたが、二次元であればz成分を0にするだけです。 では。

  • aodesu
  • ベストアンサー率14% (6/42)
回答No.3

以前レスをつけたものです。 この前はもっと基本的なことだと思っていたから。 球を投げる地点Aの位置ベクトルをA→、 球が当たる地点Bの位置ベクトルをB→とします。 面の法線に対してAから垂線を引きます。 それの交点をCとします。 C→からA→をひいて、それをさらにC→に足すと、Aが反射後に向かう(通る)位置のAを原点とした位置ベクトルが分かります。 それをD→とすると、 D→からBA→をひくとベクトルが求まります。 余弦定理とか難しいことは必要ないです。 考え方は他にもいろいろあるので、計算方法も一つではありません。

sha-girl
質問者

お礼

再度ご回答頂きありがとうございます。大変勉強になりました。

  • HogePiyo
  • ベストアンサー率57% (24/42)
回答No.2

http://www.geocities.co.jp/SiliconValley/2530/ ↑ここのブロック崩しのソースと、 http://pc.2ch.net/tech/kako/1004/10048/1004855513.html ↑ここのスレ辺りが参考になるかと思います。

参考URL:
http://www.geocities.co.jp/SiliconValley/2530/
sha-girl
質問者

お礼

参考にさせて頂きます。ご回答ありがとうございました。

関連するQ&A

  • 鏡の入射角?

    私は算数、数学が苦手なので分かりやすく教えて頂けるとありがたいです。 うまく説明できないのですが。 例えば、壁に立て掛けた鏡があったとして、 その鏡は垂直ではなく、斜めに立て掛けてあるとする。 地面に平行にレーザーポインターで鏡に向かって照射する レーザーポインターから鏡までの距離を1mとする 鏡の角度がきついほど、鏡から跳ね返ってきた光は、 レーザーポインターの場所より上の方に行くと思うのですが 角度が1度の時は、レーザーポインターより何cm上に行くのか。 角度が10度の時は、レーザーポインターより何cm上に行くのか。 どういう計算をしたら導きだせますか?

  • 幾何学(プリズムに光が入射してから出るまで)

    コーナーキューブプリズムに関してです。 幾何学の問題で、前の質問関連なのですが、今斜線部分の領域に入った光(方向ベクトルA,B,Cと始点x0,y0,z0で表せる直線)を考えます。その光はすべての面(斜線部よりも奥側のxz面、xy面、yz面の3面。すなわち3つの直角二等辺三角形。)で反射した後入ってきた方向にそのまま光を跳ね返します。 例:最初に方向ベクトル(A,B,C)の入射光が斜線部分の領域を通過後xz面に入射、そのxz面に到達した点を再び始点とし方向ベクトルは(A,-B,C)となり(内部での1回目の反射)、その後その直線はxy面かyz面に到達する。もしxy面に到達したのであれば、その到達した点を始点とし方向ベクトルは(A,-B,-C)となり(内部での2回目の反射)、つぎにyz面に到達しその到達し、その到達した点を始点とし方向ベクトル(-A,-B,-C)となり(内部での3回目の反射)入射面(斜線部)を通じて入射光が入ってきた方向に跳ね返す。 ここで、上記の入射光の始点と方向ベクトルは任意に設定しました。 上記を踏まえて質問ですが、今内部(入射してから3回反射されて出るまで)の光路長(入射面上の2点と内部の3点の距離)を求めることを考えます。また、入射面が傾いたときどのように光路長が変化するかも考えます(入射面の法線ベクトルと入射光線の方向ベクトルのなす角と光路長の関係を考えています)。 入射面(図でいう斜線部分)に光が上手く入るようにする条件(入射面に入らばい場合もあるので)は、入射面(斜線部)を表す領域が(前に質問で教えて頂いた通り)x/a+y/b+z/c=1,x≧0,y≧0,z≧0ということが分かったので入射光線の直線の方程式を上記の始点と方向ベクトルから求め、入射面の方程式と連立させて、面上の点が上記の不等式の範囲を満たせばよいということは分かりました。 しかし、最初にxy面、yz面、zx面のどの面に到達するのか、次にどの面に到達するのか(最初がxy面ならば次はyzかzxがある)の判定が必要になります。三回目はその二つが定まれば自動的に決まります。その最初にどの面に到達して、次にどの面に到達するのかはどのような条件下で決まるのでしょうか?入射光の方向ベクトルと各面の法線ベクトルのなす角から決まるのでしょうか? 長文ですみません。以上一点宜しくお願い致します。

  • ベクトルの変換について

    あるベクトルのうち、特定の向きの力だけを減らしたベクトルを計算したいのですが、どうすればできるでしょうか? 2Dベクトルです。 0度、90度の向きの力を減らすのであればx、y要素を演算するだけでいいのかと思うんですが、それ以外の角度の方法がわかりません。 またゲームのプログラムで使うので、数学的でなくとも計算できれば構いません。

  • 分光反射率の求め方

    三刺激値X,Y,Zを求めるときに使用する式で。 分光反射率を入れて計算をするのですが、 その分光反射率はどのように求めれば良いのでしょうか? L*a*b*を使用して求めるのでしょうか? 知っている方がいましたらよろしくお願いします。

  • 傾斜している面の反射について

    反射光の計算方法について教えてください。 高度は地面と平行が0度、真上から地面が90度 方角は北が0度、東90度、南180度、西270度とした場合です。 <光源> 高度:a度 方角:b度 <反射面> 長方形で平らな鏡 反射面を真南から西側へc度回転して設置 傾きは反射面を上にして北側の辺を上げ、d度で設置 この場合、反射光の方角と仰角はどのように計算すればよいでしょうか。 計算式やシミュレーションツールがあれば、教えてください。

  • 円周角を教えて下さい

    数学で円周角の部分(角度計算等が問題として出される範囲)が根本的に分かりません。 現在中2で連立、一次関数などの部分は入試レベルも解けるので ある程度理解力はあると思っています 詳しく、ていねいに教えて頂けたら嬉しいです

  • 法線ベクトルの問題

    この問題について教えてください。 「次の2直線のなす角aを求めよ。ただし、0≦θ≦90°とする」 x+√3y-1=0・・・(1) x-√3y+4=0・・・(2) 答えは二つの式の法線ベクトルをだして内積を使って角度を求めるらしいのですが、二つの式自体のベクトルを使ってできませんか? 自分でやってみました。 (1)のベクトルは成分であらわすと(√3,-1) (2)のベクトルは成分であらわすと(√3,1) これより 内積は-2| cosθ=-1/2 θ=120° ただし、0°≦θ≦90°より a=60° 答え自体は一緒です。ただ解答は法線ベクトルを用いています。このような種類の問題で法線ベクトルを使う必要がありますか?ご回答よろしくお願いします。

  • 3次元で回転させた座標値の計算方法

    点(Ax、Ay、Az)を3次元空間にある、点(Bx、By、Bz)から、点(Cx、Cy、Cz)に向かう直線を軸に任意の角度で回転させたときの、点(A’x、A’y、A’z)の座標値の計算方法を教えてください。ただし自分の数学レベルは中学生並でベクトルが少しだけ理解できるていどです。よろしくお願いします。

  • 反射的、対称的、推移的!??

    数学の問題なのですが、教科書を読んでみてもいまいち理解できません・・・ 問題は6問あるのですが、やはりぴんときません・・・ 自然数、整数、実数全体の集合を、それぞれN,Z,Rとするとき、次の関係Sについて反射的か、対称的か、推移的か、そのいずれでもないかを述べよ 1 x,y∈R, xSy:x≦y 2 x,y∈N, xSy:x+yは偶数である 3 a,b∈N, aSb:ab>5 4 a,b∈N, aSb:aはbの約数である 5 a,b∈N, aSb:a<b 6 (x,y),(a,b)∈R×R,(x,y)S(a,b):x≦y,y≦b 1に関しては、反射的、推移的であるが、対照的でない、という解答(1≦2だが2≦1ではない)で良いのでしょうか。 よろしくお願いします。

  • 反射角と入射角

    中学3年生です。 理科の問題で解説に入射角が小さくなると、屈折角も小さくなる。と書いてあるのですが、入射角が小さくなると屈折角も小さくなることは分かるのですが、なぜそうなるのかが書いてありません。 いまいち理解できないので教えて下さい。(理科は得意教科です。)

専門家に質問してみよう