0

単純な反射スプライト効果を実現しようとしています。画面の隅から隅まで伸びる対角線を想像してください。次に、スプ​​ライト (または画像) を特定の量だけ回転させ、対角線の片側に配置します。画面の反射側に配置されるスプライト (または画像) の別のインスタンスをプログラムで回転させる数式は何でしょうか? 反射が垂直か水平か (画像を単純に反転するだけ) を判断するのは簡単で、結果のスプライトをどこに配置するかを判断することはできますが、結果のスプライトを決定しようとすると、まったく異なるレベルの複雑さのように思えます。角度。

提案やプログラミング式はありますか? 私は一般的に三角法が苦手で、手がかりを見つけることができません。繰り返しますが、元のスプライトの角度と同様に、反射線の角度がわかっています (または見つけることができます)。反映されたスプライトが表示されたときにどのように回転するかを決定したいだけです。

4

1 に答える 1

0

私があなたを正しく理解していれば、反射されたスプライトの角度 (対角線に対する) が元のスプライトの角度 (再び対角線に対して) と同じであるが負であることを確認するのと同じくらい簡単なはずです。

これを画像で表示します (元のスプライトが左下、反射が右上にあります):

ある角度について反射する

したがって、角度 θ I1と θ R1を見ると、次のことがわかります。
θ I1は元の画像と対角線の間の角度です
θ R1は反射画像と対角線の間の角度です

これらの角度は等しく反対で、つまり 55° と -55° です。


ただし、一般的なケースで必要な回転を計算するには、それだけでは十分ではない可能性があるため、もう少し詳しく説明します。基本的に、前に述べたように、反射されたスプライトと線の間の角度は、元のスプライトと線の間の角度と等しく、反対である必要があります。これは、共通の参照方向に対する各スプライトと線の間の角度の差が等しく反対であることを確認することと同じです。

画像をもう一度見て、共通の参照方向が右にあると仮定します。一貫性がある限り、これを別のものにしても問題ありません。また、各スプライトの緑色の矢印は、スプライトの回転が 0° のときに参照方向と平行になると仮定します。

そのことを念頭に置いて、直線 θ Lの角度が 35° であることがわかります (正の回転は時計回りです)。

また、元のスプライト θ I2の回転が 45°であることもわかります。

したがって、元のスプライトと線の間の角度は θ I2 − θ Lで、10° に等しくなります。

繰り返しますが、各スプライトと線の間の角度は等しく反対である必要があります。あれは:

θ I2 − θ L = −1 * (θ R2 − θ L )

反射したスプライトに必要な回転を見つけるには、その方程式を次のように並べ替えます。

θ R2 = 2θ L − θ I2

θ Lと θ I2の値を入れると、次のようになります。

θ R2 = 2*35° − 45° = 25°


したがって、この例では、反射されたスプライトの回転 θ R2は 25° と計算され、画像から正しいことがわかります。ただし、再確認したい場合は、反射したスプライトと線 (θ R2 - θ L ) の間の角度の差が -10° であることに注意してください。これは、θ I2 - θ Lと等しく、反対です。この回転を適用する前に、反射したスプライトを反転することを忘れないでください (緑色の矢印が反転する軸であると仮定します)。

于 2013-11-04T10:10:10.053 に答える