1

Java OpenGL でレーダーを構築したいと考えています。基本的にこのメソッドでは、プレイヤーの現在位置、プレイヤーが向いている角度、敵の位置を渡します。敵がまっすぐ前にいる場合、赤い点 (敵を象徴する) は円 (レーダー) の上部にあるはずです。これは 0 度と言えます。真っ直ぐ右だと赤い点が90度とか。どうすれば正確にそれを行うことができますか?私はatan2()の提案を見て回りましたが、それを使用する方法が本当にわかりませんでした. より効率的で効率的な方法があれば、それも教えてください。

編集:内積やcosなどの代わりに点をプロットする方法を使用し、プレーヤーの位置を原点として使用しています。しかし、距離の式を使用して選択した数 70 よりも距離が大きい場合、レーダーの端に敵のドットを表示するにはどうすればよいでしょうか? 70 未満のものはレーダー内に収まりますが、70 を超える敵は、敵のドットが消えるのではなく、レーダーの端を一周するようにしたいと思います。

4

2 に答える 2

1

プレイヤーと敵が座標を使用して2D空間(または3D空間でさえも、平地などの2D平面上を移動する)で表現されていると仮定すると、より簡単な方法は、プレーヤー/敵のエンティティをレーダーに配置し、プレーヤーが真の北に対して現在向いている角度に基づいて、プレーヤーを原点としてレーダーに回転変換を適用します。

于 2012-12-08T17:48:31.543 に答える
1

ベクトルを使用している場合は、2つのベクトルの内積が、それらの大きさとそれらの間の角度の正弦の積に等しいというプロパティを使用できます。

u。v = | u | | v | cos(シータ)

はプレーヤーuの方向であり、vはプレーヤーから敵へのベクトルです。

あなたが探しているthetaので、あなたはただ使う必要があります:

theta = acos((v .u)/(| v | | u |))

これは角度を与えるだけであり、左か右かはわからないことに注意してください。それを見つけるために、外積を取り、それが正か負かを確認できます。

is_left = | u X v | <0

于 2012-12-08T17:48:32.950 に答える