2017-09-21 17 views
-1

私はある距離を運転している車を記述するJavaのプロジェクトに取り組んでいます。関数ドライブには、移動距離、x比、y比の3つのパラメータがあります。 Hereは関数の説明です距離と座標平面上のxとyの比が与えられた計算終了座標?

これまでのドライブ機能はこれまでのものです。私はPythagorean theromの使用について考えていたのでC変数を持っていますが、そこからどこに行くのかはわかりません。

public double drive(int distance, double xRatio, double yRatio) 
{ 
    double disTraveled = 0.00; 
    boolean empty = false; 

    double c = 0.00; 

    c = Math.sqrt((xRatio * xRatio) + (yRatio * yRatio)); 

    for(int i = 0; i < distance && empty == false; i++) 
    { 
     if(gasTank.getLevel() == 0) 
     { 
       System.out.printf("Ran out gas after driving %.2f miles\n", disTraveled); 
       empty = true; 
     } 
     else 
     { 


      /*xCoord += xRatio; 
      yCoord += yRatio; 

      gasTank.setLevel(gasTank.getLevel() - (1.00/engine.getMpg())); 

      disTraveled ++;*/ 
     } 
    } 

    return disTraveled; 
} 

最終的な座標を見つけるために必要なアルゴリズムに問題があります。私は何を終点にすることができますか?

+0

最終的な座標を見つけるためにこれまでに何がなされていますか? –

+0

'x'と' y'で記述された三角形の斜辺の長さを計算します(別の方法が分からない場合は 'java.lang.Math'にそのメソッドがあります)。それを 'r'と呼んでください。そして 'y'と同様に' finalx = x * distance/r'だけです。 –

+2

質問**にこれまでのコード**を含めてください。コードのスクリーンショットや写真を投稿しないでください。コードを含めるときは、貼り付けたコードを選択してコードを適切にフォーマットしてから、コードフォーマットボタン( '{}) 'を使用してください。 –

答えて

0

ステップ1

既知の量を書き留めます。これには、あなたの角度、距離、および基準座標が含まれていなければなりません。例えば:

Angle: 37 degrees Distance: 27 feet Starting point: x0 = 3; y0 = 5 

ステップ2

は、角度の余弦を計算し、距離によって、これを掛けます。

cos(37) = 0.7986 27 * 0.7986 = 21.563 

ステップ3

角度の正弦を計算し、距離によって、これを掛けます。

sin(37) = 0.6018 27 * 0.6018 = 16.249 

ステップ4

x座標始点から及びy座標第二の点の座標を取得するために正弦結果を追加するために、コサイン結果を追加します。

x1 = x0 + 21.563 = 3 + 21.563 = 24.563

y1 = y0 + 16.249 = 5 + 16.249 = 21.249 

通知は、あなたのx/yのCOORDSから角度を計算します。

これをJavaコードとして記述するのはあまり難しくありません。見てください Java.Math

+0

必要がない限り、角度を含めないでください。パフォーマンスがかなり低下し、あいまいさが生じる可能性があります。方向ベクトルを正規化することで、同じことをもっと安く行うことができます。 Btw、角度を計算する方法についての説明なしでは、この回答は不完全です(OPが角度を計算する方法を知っている場合、彼はおそらく残りのステップを実行する方法も知っています)。 –

関連する問題