Javaアプレットについて質問です。
ある点(x, y)から角度degの方向に引数を移動距離lengthのみを用いて
移動させたいのですが、どうすればいいですか?
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答1件
0
ベストアンサー
こんにちは。
コードを書いて検証はしていませんが、以下でいけるかと思います。
lang
1x += length * Math.cos(Math.toRadians(deg)); 2y += length * Math.sin(Math.toRadians(deg));
参考:三角関数
以上ご参考になれば幸いです。
追記
Wikipediaの三角関数の説明を使って説明します。
この説明の「定義」のすぐ下の右に
∠Cを直角とする直角三角形ABC
の図があると思います。
この図で、点Aの座標を(x,y)とし、∠Aの角度をdeg(度)としますと、
求めたいのは点Bの座標ですが、図にある三角形の辺の長さ、a と bを
使うと、
B(x+b, y+a)
となりますので、あとは、aとbをlength(図では h )とdegを使って
置き換えればよいことになります。
図だと、∠Aの大きさをθとして
a = h × sin θ
b = h × cos θ
となっていますが、これをjavaのプログラムに直すときに、ちょっと気をつけ
なければならないのが、javaのサイン、コサインを求めるメソッド
Math.sin(angle)
Math.cos(angle)
は、角度の引数angleをラジアンで与えなければなりません。
度(deg)をラジアン(rad)に変換するには、
rad = deg * Math.PI / 180;
ですが、Mathクラスには
Math.toRadians
という便利なメソッドがあるのでこれを使いますと、
b = length * Math.cos(Math.toRadians(deg));
a = length * Math.sin(Math.toRadians(deg));
となり、これらに、それぞれ移動前の座標(x,y)を
加えると、求めたい
B(x+b, y+a)
の座標が得られます。
以上です。
投稿2015/06/02 08:54
編集2015/06/02 09:20総合スコア9058
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/06/02 09:18