2017-04-24 6 views
0

斜めの面に基づいて速度xとyを計算することを協議する質問があります。三角形の。私は、私は各コ​​ーナーのすべての角度を知っていると私はAを知っている、それは私が探し始めている、常に600コードの法則の使い方

で、正弦定理に出くわした。この場合、次の描画

enter image description here

をチェック私はこれを使用すべきだと思うが、私はそれをJavaでどのように使うのか分からない。

ご協力いただきまして誠にありがとうございます。

これは、私はあなたが正弦定理を必要としない、これまで

 Vector2 pos = mBall.getPosition(); 
    double angleA = Math.atan2(target.x - pos.x, target.y - pos.y) * 180.0d/Math.PI; 
    double angleB = 90.0f; 
    double angleC = 180f - (angleA + angleB); 
    double sideA = MAXIMUM_VELOCITY; 
    double lawofsines = sideA/Math.sin(Math.toRadians(angleA)); 
+1

値は1以下です。_B_ ___長さ_A_です。明らかに 'B = A * sin(a)'と 'C = A * sin(c)'である。 c = A * cos(a) '_c =90º - a_であることに気付く。 – 9000

+1

@ 9000:「明確に」後に式を書くときは、非常に注意が必要です。 –

+0

あなたは問題をより明確に定義する必要があります。なぜなら、それはまったく明らかではないからです。入力が何であるか、そして予想される出力が何であるかを述べてください。 Javaコードも正弦の法則もありません...今、 'x、y'座標から角度を計算し、対応する角度からそれらの座標を計算しようとします。 –

答えて

1

atan2が間違っています。呼び出し規約は、弓の接線に1つの後にモデル化され、atan(dy/dx)

atan2(dy, dx) 

しかし、これまでのコードから分かるように、あなたがターゲットに単位方向と天使を計算する必要がないことです十分な、

dx = target.x-pos.x 
dy = target.y-pos.y 

ds = Math.hypot(dx,dy) 

vel.x = MAXIMUM_VELOCITY * (dx/ds) 
vel.y = MAXIMUM_VELOCITY * (dy/ds) 
0

を得たものです。

X = A*Cos(a) where a is the angle and A is the hypotenuse 
Y = A*Sin(a) 

これはRight Triangleの性質から来ている:あなただけ使用することができます垂直な通常の座標系であるので、XとYの寸法は、定義されています。

+0

問題は: 'X'と' Y'はすでに分かっています。私は正直なところOPが何を望んでいるのか分からない。 –

関連する問題