- ベストアンサー
エクセルで回転する座標の出し方
エクセルで回転する座標の出し方 (例) 座標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
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
エクセルは行列演算ができます。 ビジネスでは回転は出てきたことがなく(統計ではあり)、小生の知識は生半可ですが参考までに記してみます。(誤りの個所がもしあればごご容赦ください。) 理系の方なら、ご存知なければ、勉強して見てください。 #1のご回答の回転の行列を左側からの行列乗算をすれば 複雑な関数式を使わなくてできるはず。 >エクセルで回転する座標の出し方 点(x1、y1)を原点周りにΘラヂアン(or度)回転した時の点の新座標、点(X2,Y2)を計算すると言うことですね。回転するの「する」は「させた」の意味ですね。 >回転方向は反時計回り これは通常です。 >角度計算がラジアンになる ご存知でしょうが、エクセルにはRADIANS関数があります。RADIANS(角度)=ラヂアン >デグリも関数はあるけど ラヂアンを度に変換。 =DEGREES(角度)=度 >書式がわからない エクセルに書式という別の用語があり紛らわしいですが、ここでは、引数の配置、数と意味のこと? >無理やり(PI()/180)などを使ってるが RADIANS関数を使わなければそうなりますね。 >アークタンジェントでは書式がわからない =ATAN(数値)でラヂアン値が-π/2からπ/2の間で返ってくる。 >書式がわからない 前述の通り、意味が判らない。 ---- 値としてA1に角度を120とか度で入れる D2にCOS(s)にあたる=COS(RADIANS(A1)) D3にsin(s)にあたる=SIN(RADIANS(A1)) E2に-SIN(s)にあたる=-SIN(RADIANS(A1)) E3にcos(s)にあたる=COS(RADIANS(A1)) A2にX1の座標値、A3にY1の座標値、 B2に中心のX座標、B3に中心のY座標を入れる。 C2に=A2-b2,C3に=A3-B2 C2:C3にD2:E2の行列をかける。 http://www.metro-hs.ac.jp/rs/sinohara/zahyou_rot/zahyou_rotate.htm 行列の乗算はMMULT関数を使います。 E2に=MMULT(c2:c3,D2:E3)と入れてControlキーShiftキーを左手指で押さえて、右手指でEnterキーを押す。 「配列数式」です。 シフト+コントロル+エンタキーを押す前に答えを出すセルの範囲指定(F2:D3)をしておく必要があります。 http://www.katch.ne.jp/~kiyopon/kansuu/abs.html#MMULT あと原点まで座標を戻す必要があると思います。
その他の回答 (3)
- nishi6
- ベストアンサー率67% (869/1280)
G4セル =ASIN(C4/SQRT(C4^2+E4^2)) は =ASIN(E4/SQRT(C4^2+E4^2)) または =ACOS(C4/SQRT(C4^2+E4^2)) または =ATAN(E4/C4) に変更して下さい。質問が45度だったので、間違えてしまいました。
- nishi6
- ベストアンサー率67% (869/1280)
A B C D E F G 1 X座標 Y座標 2 回転中心 [ x0] 0 [ y0] 0 3 ラジアン 4 初期位置 [x100] 100 [y100] 100 角度 0.785398163 5 ↑ 6 =ASIN(C4/SQRT(C4^2+E4^2)) 7 [度(入力)] ラジアン 8 90 1.570796327 ← =A8*PI()/180 9 10 [求めるx] 0 11 ↑ 12 =$C$2+($C$4-$C$2)*COS(B8-$G$4)-($E$4-$E$2)*SIN(B8-$G$4) 13 14 [求めるy] 141.4213562 15 ↑ 16 =$E$2+($C$4-$C$2)*SIN(B8-$G$4)+($E$4-$E$2)*COS(B8-$G$4) ●初期位置と回転中心の角度をG4で求めています G4 = ASIN(C4/SQRT(C4^2+E4^2)) ●入力した回転度数をB8でラジアンに変換しています B8 = A8*PI()/180 ●X座標の答えを求めています C10 = $C$2+($C$4-$C$2)*COS(B8-$G$4)-($E$4-$E$2)*SIN(B8-$G$4) ●Y座標の答えを求めています C14 = $E$2+($C$4-$C$2)*SIN(B8-$G$4)+($E$4-$E$2)*COS(B8-$G$4) [ ]の横、または下に入力します。 質問にあるように回転角度を捉えれば上のようになると思います。ご参考に。
- wolv
- ベストアンサー率37% (376/1001)
とりあえず、原点中心の回転は、 x2 = cos(θ)*x1 -sin(θ)*y1 y2 = sin(θ)*x1 +cos(θ)*y1 この計算式みたいなのでできます。 (θの単位はたぶんラジアン) 回転の中心を(x0,y0),回転前の座標を(x1,y1)回転後の座標を(x2,y2)とすれば、 x2 = x0 + cos(θ)*(x1-x0) - sin(θ)*(y1-y0) y2 = y0 + sin(θ)*(x1-x0) + cos(θ)*(y1-y0) でできます。