• ベストアンサー

座標を回転させる計算方法を教えて下さい。

例 三角形(a,b,c)の a を基点として回転させる計算方法 a x = 200 y = 100 b x = 1500 y = 100 c x = 1500 y = 900 難しくはないと思いますが三角関数が苦手なので教えて下さい。

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

  • ベストアンサー
  • stomachman
  • ベストアンサー率57% (1014/1775)
回答No.1

回転する角度をθとします。a点のxをax, yをayと書きます。以下同様。 px=bx-ax, py=by-ay を計算し、 px' = px cosθ - py sinθ py' = px sinθ + py cosθ そして、 bx' = ax+px', by' = ay+py' このbx', by'が新しいbの座標です。cも同様にして計算すればおっけー。

lible_io
質問者

お礼

とても解かり易い回答ありがとうございました。 私が知りたかった計算式です。 学問から20年も離れますと、使っていない方式など ほとんど忘れてしまい皆様のお力をお借りしなければなりません。 これからもよろしくお願いします。

その他の回答 (3)

  • k-ji
  • ベストアンサー率57% (11/19)
回答No.4

lible_ioさんは、虚数や、行列を知らないようですので、 中学生ぐらいの数学力だとして説明します。 基点という意味がちょっと分かりかねたんで、aを回転の中心として図形を 回転させるにはということで説明します。 aを中心に図形を回転するのに一番わかりやすいやり方は aを原点に持ってくるように図形を平行移動します。 つまりx方向に -200、y方向に -100づつ頂点を移動します。 a x = 200 - 200 = 0 a y = 100 - 100 = 0 b x = 1500 - 200 = 1300 b y = 100 - 100 = 0 c x = 1500 - 200 = 1300 c y = 900 - 100 = 800 となります。 そして各頂点を原点を中心として点を回転する公式に当てはめます。 回転する角度を θ とした場合 a は原点にあるので回転しても移動しないので。 x = 0 y = 0 bのx,yそれぞれの座標は x = 1300 × cos θ - 0 × sin θ y = 13000× sin θ + 0 × cos θ bのx,yそれぞれの座標は x = 1300 × cos θ - 0 × sin θ y = 13000× sin θ + 800 × cos θ そして、回転した後の図形を、最初に平行移動をしているので aが元の位置に戻るように x 方向に200 y 方向に 100づつ それぞれの頂点を平行移動します。 a の座標は x = 0 + 200 = 200 y = 100 + 100 = 100 bのx,yそれぞれの座標は x = 1300 × cos θ - 0 × sin θ + 200 y = 13000× sin θ + 0 × cos θ + 100 bのx,yそれぞれの座標は x = 1300 × cos θ - 0 × sin θ + 200 y = 13000× sin θ + 800 × cos θ + 100 となり、これで図形abc を頂点a を中心に θ だけ回転した図形が 出来あがります。

lible_io
質問者

お礼

回答有り難うございました。 学問から20年も離れますと、使っていない方式など ほとんど忘れてしまい皆様のお力をお借りしなければなりません。 これからもよろしくお願いします。

  • Sephy
  • ベストアンサー率35% (7/20)
回答No.3

複素数を利用する方法。 i*i = -1 a(200+100i) b(1500+100i) c(1500+900i) 回転する角度θ b' = (b-a)(cosθ+isinθ)+a c' = (c-a)(cosθ+isinθ)+a (b-a)で回転中心を原点に移動、(cosθ+isinθ)をかけて回転、最後に+aで回転中心を元の位置に戻す。 あとは計算して実部と虚部にわけてやると、実部がx座標、虚部がy座標になります。 (結局下記の方々と言ってることは変わって無い・・・)

lible_io
質問者

お礼

回答有り難うございました。 学問から20年も離れますと、使っていない方式など ほとんど忘れてしまい皆様のお力をお借りしなければなりません。 これからもよろしくお願いします。

lible_io
質問者

補足

iの値の意味が解かりません。 教えて下さい。

回答No.2

 a が原点にくるように並行移動し、原点を中心として回転移動させ、もう一度並行移動させ a を元の位置に戻します。  具体的に回転角をθとすると、 |cosθ -sinθ||bx-ax|+|ax| |sinθ  cosθ||by-ay| |ay| (分りにくいかもしれませんが、 2×2の行列に、ベクトルabをかけて、ベクトルoaを足してます。)  数値を代入すると |cosθ -sinθ||1500-200|+|200| |sinθ  cosθ|| 100-100| |100|  c も同様に |cosθ -sinθ||1500-200|+|200| |sinθ  cosθ|| 900-100| |100| です。

lible_io
質問者

お礼

回答有り難うございました。 学問から20年も離れますと、使っていない方式など ほとんど忘れてしまい皆様のお力をお借りしなければなりません。 これからもよろしくお願いします。

lible_io
質問者

補足

│の意味を教えて下さい。

関連するQ&A

  • 直角座標系の回転の計算方法

    下の計算は直角座標系の回転の計算(∇×A)の一部です。 i_x(∂/∂x) × (i_yA_y) i_x × ((∂i_y/∂x)Ay + i_y(∂A_y/∂x)) =i_z(∂A_y/∂x) という風に計算したのですが、 この計算手順はあっていますでしょうか? 答えはあっていると想うので、計算手順があっているかどうか知りたいのですが・・。 i_x、i_y、i_zは単位ベクトルです。 ベクトルA = i_xA_x + i_yA_y + i_zA_zで表されます。

  • 角度を調べる計算方法を教えて下さい。

    例 三角形(a,b,c)の a 辺の角度を取得する計算方法を教えて下さい。 a x = 200 y = 100 b x = 1500 y = 100 c x = 1500 y = 900

  • 回転した座標系を基準とし、再回転したときの回転行列について

    x軸、y軸、z軸が互いに直角に交わる座標系を考えます。(これを座標系Aとします) 座標系Aを、原点を中心とし、各軸ごとにθxa,θya,θzaだけ回転させた座標系を座標系Bとします。 さらに、座標系Bを基準とし、各軸ごとにθxb,θyb,θzbだけ回転させた座標系を座標系Cとします。 このとき、座標系Aから見た座標系Cの回転角は、どのように計算すればよろしいでしょうか? 座標系Aを基準とした回転角で座標系Bを計算し、さらに座標系Aを基準とした回転角で座標系Cを計算し……という問題であれば、単純に回転行列を掛けていけばいいと思うのですが、 「1つ前の座標を基準とした回転角を与えられたとき、全体でどれだけ回転したか?」 を表現する方法がわからなかったので、ご教示いただければ幸いです。 何卒よろしくお願いいたします。

  • 3次元での回転による座標変換

    3次元での回転による座標変換に関して質問があります. X軸,Y軸,Z軸の直交座標系があるとします. この座標系において,ある位置ベクトル(a1,b1,c1)がX軸,Y軸,Z軸と成す角度は,θx,θy,θzは,ベクトルの内積から算出可能だと思います. θx=a1/sqrt(a1^2+b1^2+c1^2) θy=b1/sqrt(a1^2+b1^2+c1^2) θz=c1/sqrt(a1^2+b1^2+c1^2) X,Y,Zの直交座標系を回転させて,この位置ベクトルの向きを基準としたX'軸,Y'軸,Z'軸による新しい直交座標系を設定するには,どのようにすればよいでしょうか? θx,θy,θzと各軸での回転角度は違うものという認識でいいのでしょうか? 元の座標系において,各軸回りに順番に回転させればいいかと思うのですが,どうもイメージがつかみきれません. よろしくお願い致します.

  • 任意の地点からの回転座標の求め方

    座標A,B,C,Dからなる四角形を中心Dを基準にして、 θ角度を回転させたあとの各点の座標(X,Y)が知りたいのですが、 計算式がまったく分かりません。 昔、勉強したのかもしれませんが文系だったのでさっぱりです。 どなたか教えてください。 お願いいたします。 A--------D |           | |     D     | |           | B--------C

  • エクセルでの座標計算の質問

    基準座標座標X-300 Y-300 の点を X0Y0を中心に回した計算式です E2に回転したい角度を入れて計算します A1= X 基準座標 A2= -300 B1= Y 基準座標 B2= -300 C1= 基準角度 C2= 45       C2式 =ATAN(A2/B2)/(PI()/180) D1= 中心からの距離 D2= 424.2640687   C2式 =SQRT(A2*A2+B2*B2) E1= 回転角度 E2= 0 F1= 合計角度 F2= 45 C2式=C2+E2 G1= X 答え G2= 300 C2式=COS(F2*PI()/180)*D2 H1= Y 答え H2= 300 C2式=SIN(F2*PI()/180)*D2 このとき回転角度E2の値を換えて計算をしたいのですが 45とか135を入れると合計角度が 90度180度になり XかYの答えが0になるのですが 2.59893E-14 このような答えになります この文字列は何でしょうか? 答えを0にはできませんか (注意)   まだ未完成です正と負の使い分けが出来ていません   X-300Y-300で角度を振ってないのに答えは180度   振った答えになっています (これも未解決) EXCEL2000 WINXP

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

    エクセルで回転する座標の出し方 (例) 座標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(x,y,z)をX,Y,Zを基準として(θx、θy、θz)で回転させます。この回転でできた点をBとします。 そのBを同じ様にX,Y,Zで回転させて元へ戻したい場合、 X,Y,Zの順番で回転させているので、 戻すにはZ,Y,Xの順番に回転させればB=Aとなると思います。 tanや内積などを使い、回転角度を考えその角度で回転させることを考えました。 しかし、tanを用いた場合も内積で考えた場合も多少誤差が生じます。(θx=60度になるはずが、計算すると57度になったりする) 正しく回転角度(θx、θy、θz)を求めたい場合はどうすればいいのでしょうか? 一応回転の式はグラフィックス関係の本から調べました。 また自分でθx、θy、θzを入力した場合A=Bとなるので、 式は問題ないと考えています。 現状ではBを逆回転する際のθzを tan(√(Bx^2+By^2)/√(Bz^2))=θz Z軸逆回転したものをB'とすればθyは tan(√(Bx'^2+Bz'^2)/√(By'^2))=θy さらにY軸逆回転したものをB~とすればθyは tan(√(By~^2+Bz~^2)/√(Bx~'^2))=θx となりこれで求める事ができると考えています。 内積で考えた場合は内積の式からcosθを求め、acos(cosθ)で求めています。 長々とすみませんが、よろしくお願いします。

  • 座標の回転

    x,y座標で表されるある点を反時計回りにα°回転したX、Y座標に変換しました。 かつてこのサイトで教えていただいたとおり (x、y)=(rcosθ,rsinθ)とおき,αだけ回転した座標なので (X,Y)=(rcos(θ+α),rsin(θ+α)) 加法定理を使って X=xcosα-ysinα Y=xsinα+ycosα と計算しました。 ところが,ある本に同様の計算がついていたのですが, X=xcosα+ysinα Y=-xsinα+ycosα となっており正負が異なります。(私と同じように反時計回りの回転)  私の計算が違っているのでしょうか。それとも何かの仮定が異なっているのでしょうか。 (ちなみにある本は作図により上記の結果を求めています。)  分かりにくいかもしれませんが,適切な指摘をお願いいたします。

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

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