プロが教えるわが家の防犯対策術!

エクセルで回転する座標の出し方
(例)
座標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

A 回答 (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 …
行列の乗算はMMULT関数を使います。
E2に=MMULT(c2:c3,D2:E3)と入れてControlキーShiftキーを左手指で押さえて、右手指でEnterキーを押す。
「配列数式」です。
シフト+コントロル+エンタキーを押す前に答えを出すセルの範囲指定(F2:D3)をしておく必要があります。
http://www.katch.ne.jp/~kiyopon/kansuu/abs.html# …
あと原点まで座標を戻す必要があると思います。
    • good
    • 1

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度だったので、間違えてしまいました。
    • good
    • 1

    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

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)

[  ]の横、または下に入力します。
質問にあるように回転角度を捉えれば上のようになると思います。ご参考に。
    • good
    • 3

とりあえず、原点中心の回転は、


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)
でできます。
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A