• ベストアンサー

円形ボリュームのUIの実装方法

言語は寧ろなんでも良い(Dalvik javaで実装予定)のですが、音楽再生アプリケーションで、 シークバーではなく、円形のボリュームを実装しようと考えています。 ボリュームの画像を用意したのですが、 UIをドラッグした時の、回転の計算方法が思いつきません。 ドラッグイベントはx,yでAPIより受け取り、移動時のx,yの差をとるとして、 直線の動きなら、単にXまたはYを引くだけで計算できると思いますが、 X,Yの差を回転角度に計算する場合、どの様に計算すれば、それっぽくなるのでしょうか? 三平方を使うのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
noname#247307
noname#247307
回答No.1

円形のGUIがあり、マウスポインタのある方向(GUIの中心位置からマウスポインタのある方向の角度)が計算できればいいわけですね。 これはたいていのプログラミング言語に搭載されているatan2関数で計算できると思います。(X,Yがマウスポインタの位置、CX, CYが円の中心位置) 角度 = atan2(Y- CY, X- CX); これでラジアンによる角度が得られますので、後はその角度にGUIのグラフィックを回転して描画すればよいと思います。

chanmanxxx
質問者

お礼

遅くなり失礼いたしました。 ご回答の通りに、atan2でそれっぽくできました。 ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • エクセルで回転する座標の出し方

    エクセルで回転する座標の出し方 (例) 座標X100、Y100の点から好きな角度を回したときのX、Yの座標の求め方 回転中心はX0、Y0 回転方向は反時計回り 例で言えば X141.421、Y0  が0度       X0、Y141.421  が90度       X-141.421、Y0 が180度       X0、Y-141.421 が270度 エクセルでの問題点は 1.角度計算がラジアンになる デグリも関数はあるけど書式がわからない  無理やり(PI()/180)などを使ってるがアークタンジェントでは書式がわからない 2.正と負の計算式・答えが負になるときの処理ができない  回転角度が270度とか 今電卓で打っているのは 100/100=ATAN ----------------------最初の角度 100*100+100*100の答えのルート--------回転中心からの直線距離 最初の角度+動かしたい角度------------求めたい座標の角度 SIN求めたい座標の角度*直線距離-------Y座標 答え COS求めたい座標の角度*直線距離-------X座標 答え 最初のX、Y座標と 動かしたい角度を入れると答えが出るような 物が作りたいです よろしくお願いします エクセル2000 WINXP

  • javascriptの円形画像ギャラリーのサンプル

    こんにちは、現在ホームページを作ろうと思っていて 1点javascriptによる実装を考えております。 http://www.flashmo.com/preview/flashmo_098_3d_curve_wall がイメージに近いのですが、これだとflashなので、 これに似たjavascriptを探しております。 (・ドラッグとかでスピードが変わらなくてもよく、   単にゆっくり回転している物を探しております。  ・単に画像ギャラリーのsliderを少し円形(3D)にしたものを   探しております。) なにか情報がございましたら どんな情報でも良いので、ご相談させてくださいませ。 失礼致します。

  • 3次元空間におけるアフィン変換について

    3次元空間で直線を軸とした回転運動している物体の座標の特定をしたいと考えています。 最終的にX、Y、Z軸を軸とする回転角度を得ることができればと思っています。 具体的に以下のような数学の問題があったとして、 どう解いていくかを経緯も含めて教えていただきたいのです。 [設問] 3次元空間に点A(x,y,z) = (0,0,0)と点B(100,-100,100)の2点がある。 また直線ABに含まれない点C(50,-50,0)がある。 点Cを含み直線ABに直交する平面と直線ABとの交点をDとし 点Cが線分CDを半径として当該平面上の円を一定の速度で回転している。 このとき点Cの円周上の回転角度をaとする時、 点Cのx、Y、Z軸それぞれを軸とした回転角度をaを用いて表しなさい

  • 回転した楕円を任意の直線に投影した長さの求め方

    回転した楕円を任意の直線に投影した長さの求め方 長軸を2a、短軸を2bとした場合の楕円x^2/a^2+y^2/b^2=1(楕円上の点は(a*cosθ、b*sinθ))を、長軸とx軸との角度φとして回転させ、原点を通る任意の直線(例えばx軸との角度ψが10度の直線)に投影した長さ(例えば、x軸(ψ=0)なら楕円が収まる長方形の横の長さ)の求め方が分かりません。 今のところの考えでは、 (1).回転後の楕円を求める。 ⇒x^2+y^2=a^2*(cosφ)^2+b^2*(sinφ)^2 (楕円上の点は(a*cosθ*cosφ-b*sinθ*sinφ、a*sinθ*cosφ+b*cosθ*sinφ)) (2).投影する直線の式を求める。 ⇒? (3).(2)の直線と(2)の直線の垂線で楕円と1点で接する直線の交点の座標を求める。 (4).(3)の点と原点との距離を算出し、投影した長さを求める。 というように考えていますが、(2)のところで行き詰ってしまっています。 長くなりましたが、 ・そもそも、この考えかたは合っているのでしょうか。 ・あっている場合、(2)以降を教えていただけると助かります。 ・他に計算が楽になる求め方は無いでしょうか。 よろしくお願いします。

  • 極座標変換

    教えて下さい。 ある円形の外周を測定したとき(円形の物体を回して測定する。測定器は固定されている。)、横軸を位相、縦軸を測定値とすると、θ(0~n),r(0~n)のデータを極座標変換すると、x(0~n),y(0~n)のデータに置き換わると思います。これを横軸x縦軸yでグラフ化すると円になると思います。ここまでは合ってます? 円形の物体が真円であると仮定すると、横軸位相に対して縦軸測定値は、傾き0の直線になると思います。 しかし、円形の物体を回したときに回転中心と円形の物体の中心がずれていると、偏心して回転するため、直線にならなくて、曲線になると思います。(正弦波に近い曲線)この得られた曲線から極座標変換して、xy平面上に円を描きたいのですがどのようにすればいいのでしょうか?教えて下さい。

  • 傾いた座標の再計算について

    1600×1200の長方形の画像があり、X, Yの座標が存在します。 画像を20°の角度で右下がりに回転し、さらにその画像を長方形にぴったり収まるようにした場合にX,Yの座標を再計算したいのですが、方法がわかりません。 何か公式などに当てはめて計算することはできるでしょうか? 仮にX,Yを(300,400)にした場合の再計算方法をおしえて教えてください。

  • x,y座標から角度の差、大きさの差の求め方について

    角度=315度 大きさ=43.8 角度=313.794度 大きさ=43.4 の角度の差、大きさの差をX,Y座標で求めた場合 X1=43.8×cos315=30.971 Y1=43.8×sin315=-30.971 X2=43.4×cos313.794=30.036 Y2=43.4×sin313.794=-31.32754 x,y座標から角度の差、大きさの差の求め方について ご教示いただけますでしょうか?

  • 3次元で回転させた座標値の計算方法

    点(Ax、Ay、Az)を3次元空間にある、点(Bx、By、Bz)から、点(Cx、Cy、Cz)に向かう直線を軸に任意の角度で回転させたときの、点(A’x、A’y、A’z)の座標値の計算方法を教えてください。ただし自分の数学レベルは中学生並でベクトルが少しだけ理解できるていどです。よろしくお願いします。

  • 回転後の座標について 5軸加工機

    今年中に、OKKの縦型マシニング機械(三菱Neomatic)に日研のNCインデックス(角度と回転ができる仕様)を載せる予定です。 使いやすくするため、テーブル回転後の座標を、変数で計算ができるプログラムを作っているのですが、うまくいかず頭をかかえてる毎日であります。 そこで、皆様の力をお願いしたく質問させていただきます。 私の希望としては、 #101=回転させたいG54からのX座標(+OR-) #102=回転させたいG54からのY座標(+OR-) #103=回転させたいG54からのZ座標(+OR-) #104=回転C(+OR-) #105=角度A(+OR-) 上記、G54座標中心からずれた数値(#101から#103)から、回転&角度(#104、#105)の数値を変更するだけで、ひねった後の座標を計算し、その答えをG55の座標系に入れるプログラムを作っているのですが、いくつか問題がある為うまくいきません。 ◎G54のワーク座標がテーブル回転中心ではない。 ◎G54のワーク座標の中心位置から、さらにずらした位置を回転させたい。 ◎X,Y,Z及び、回転軸C、角度軸A 共にプラス数値とマイナス数値があり計算が困難。 ◎回転軸C、角度軸A 共に90度以上回る。 この様な原因があり、電卓で計算した数値と変数で計算させた数値が違い、困った次第であります。 機械の特徴としては、 ◎機械座標はマイナス数値 ◎テーブル回転中心座標は#501=X #502=Y #503=Z に登録済み。 ★☆まとめ☆★ #5221=G54X座標 #5222=G54Y座標 #5223=G54X座標 を使い #101=回転させたいG54からのX座標(+OR-) #102=回転させたいG54からのY座標(+OR-) #103=回転させたいG54からのZ座標(+OR-) #104=回転C(+OR-) #105=角度A(+OR-) で移動させた数値の答えを #5221=G54X座標 #5222=G54Y座標 #5223=G54Z座標 に登録したい。 文章が下手で申し訳ありませんが、どなたか変数を使い回転後の座標が計算できるプログラムをお教え下さい。 不明な点等ございましたらお教え下さい。 大変困っているので宜しくお願いします。 まとめの部分を下記の様に修正いたします。 ★☆まとめ☆★ #5221=G54X座標 #5222=G54Y座標 #5223=G54X座標 を使い #101=回転させたいG54からのX座標(+OR-) #102=回転させたいG54からのY座標(+OR-) #103=回転させたいG54からのZ座標(+OR-) #104=回転C(+OR-) #105=角度A(+OR-) で移動させた数値の答えを #5241=G55X座標 #5242=G55Y座標 #5243=G55Z座標 に登録したい。

  • 数II 不等式の証明

    「a,b,x,yが実数のとき、不等式√a²+b²+1√x²+y²+1≧|ax+by+1|が成り立つことを証明せよ。また、等号が成り立つのはどのようなときか。」という問題の求め方がわかりません。平方して差をとるのは分かるんですか、肝心な計算ができません。絶対値がついているものを二乗するとどう変化するのですか?