-PR-
解決
済み

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

  • 困ってます
  • 質問No.26211
  • 閲覧数4570
  • ありがとう数12
  • 気になる数0
  • 回答数4
  • コメント数0

お礼率 65% (13/20)

例 三角形(a,b,c)の a を基点として回転させる計算方法

a x = 200 y = 100
b x = 1500 y = 100
c x = 1500 y = 900

難しくはないと思いますが三角関数が苦手なので教えて下さい。
通報する
  • 回答数4
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

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

  • 回答No.1
レベル14

ベストアンサー率 57% (1014/1775)

回転する角度をθとします。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

お礼率 65% (13/20)

とても解かり易い回答ありがとうございました。
私が知りたかった計算式です。

学問から20年も離れますと、使っていない方式など
ほとんど忘れてしまい皆様のお力をお借りしなければなりません。
これからもよろしくお願いします。
投稿日時 - 2001-01-13 19:15:47
-PR-
-PR-

その他の回答 (全3件)

  • 回答No.2
レベル7

ベストアンサー率 33% (3/9)

 a が原点にくるように並行移動し、原点を中心として回転移動させ、もう一度並行移動させ a を元の位置に戻します。  具体的に回転角をθとすると、 |cosθ -sinθ||bx-ax|+|ax| |sinθ  cosθ||by-ay| |ay| (分りにくいかもしれませんが、 2×2の行列に、ベクトルabをかけて、ベクトルoaを足してます。)  数値を代入すると |cosθ -si ...続きを読む
 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

お礼率 65% (13/20)

│の意味を教えて下さい。
投稿日時 - 2001-01-10 14:07:00
お礼コメント
lible_io

お礼率 65% (13/20)

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


  • 回答No.3
レベル8

ベストアンサー率 35% (7/20)

複素数を利用する方法。 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で回転中心を元の位置に戻す。 あとは計算し ...続きを読む
複素数を利用する方法。

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

お礼率 65% (13/20)

iの値の意味が解かりません。
教えて下さい。
投稿日時 - 2001-01-10 14:04:58
お礼コメント
lible_io

お礼率 65% (13/20)

回答有り難うございました。
学問から20年も離れますと、使っていない方式など
ほとんど忘れてしまい皆様のお力をお借りしなければなりません。
これからもよろしくお願いします。
投稿日時 - 2001-01-13 19:16:59
  • 回答No.4
レベル8

ベストアンサー率 57% (11/19)

lible_ioさんは、虚数や、行列を知らないようですので、 中学生ぐらいの数学力だとして説明します。 基点という意味がちょっと分かりかねたんで、aを回転の中心として図形を 回転させるにはということで説明します。 aを中心に図形を回転するのに一番わかりやすいやり方は aを原点に持ってくるように図形を平行移動します。 つまりx方向に -200、y方向に -100づつ頂点を移動します。 ...続きを読む
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

お礼率 65% (13/20)

回答有り難うございました。
学問から20年も離れますと、使っていない方式など
ほとんど忘れてしまい皆様のお力をお借りしなければなりません。
これからもよろしくお願いします。
投稿日時 - 2001-01-13 19:16:28
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
このQ&Aにこう思った!同じようなことあった!感想や体験を書こう
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ