在宅ワークのリアルをベテランとビギナーにインタビュー>>

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

このQ&Aに関連する最新のQ&A

A 回答 (3件)

オイラー角による座標変換だと


任意の方向ベクトルを軸にした回転はややこしくなるので
四元数を使った座標変換がオススメです

参考URLを見て頂ければここに書くことはないと思います
(ただ私の知識がないだけですが...)

また、任意の点を中心に回転させたいなら
ゲタを履かせて座標変換してから、ゲタを取ればいいだけなので簡単にできるはずです

ゲタを履かせるの意味がわからないかも知れませんが
Aを中心にBを回転させるとすると
BからAを引き、平行移動させてAを原点に持ってきて
同じく平行移動させた(B-A)を回転させ、その結果(B-A)'にAを足してもう一度平行移動させて
ってことです、解るかな?
B → (B-A) → (B-A)' → (B-A)'+A

参考URL:http://staff.aist.go.jp/toru-nakata/quaternion.h …
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
参考URLを元によく考えてみます。

お礼日時:2005/03/03 09:46

 ベクトルうんたらと考えてるとちょっとややこしい(でしょう)ので、平行移動と回転移動の組み合わせで考えてみてください。

ただし、これは行列の乗算の知識が必要となります。

 z軸を中心にした回転座標は以下の行列の式から求められます。

[ Ax ] [ cosθ sinθ 0 ][ Bx ]
[ Ay ]= [-sinθ cosθ 0 ][ By ]
[ Az ] [ 0   0  1 ][ Bz ]

 求める座標値はA、元の座標値はB、回転角はθです。これと平行移動を繰り返せば、質問のB-C方向をZ軸に置き換えることができ、また元に戻すことができます。
 なお、上の式のAとBは質問のものとは無関係です。
    • good
    • 2
この回答へのお礼

回答ありがとうございます。
この式から求める座標Aというのは、XY平面の(0,0,0)のZ軸で回転させるということで理解できましたが、
例えば、(5、10、0)を原点に回転させるときは行列をどう変更すればいいのかわかりません。よろしければ教えていただきたいのですが。よろしくお願いします。

お礼日時:2005/02/24 13:37

この問題は、少なくとも、空間座標系、三角関数、行列といった知識が必要でしょうから、失礼ながら、



>>自分の数学レベルは中学生並でベクトルが少しだけ理解できるていど

では無理だと思いますが...。
    • good
    • 1

このQ&Aに関連する人気のQ&A

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

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q3次元座標を原点中心に回転したい

任意のゼロでないベクトル(a,b,c)を原点中心に回転し、z軸に合致させるとする。同じ回転移動を3次元座標上の任意の点(x,y,z)に対して行った時の移動後座標が知りたいのです。

計算と結果を教えて下さい。

Aベストアンサー

A No. 1 です。補足。

「回転行列」
http://www.cg.info.hiroshima-cu.ac.jp/~miyazaki/knowledge/tech07.html

ロドリゲスの公式もあります。

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

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

エクセルで回転する座標の出し方
(例)
座標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)などを使ってるがアークタンジェントでは書式がわからな...続きを読む

Aベストアンサー

エクセルは行列演算ができます。
ビジネスでは回転は出てきたことがなく(統計ではあり)、小生の知識は生半可ですが参考までに記してみます。(誤りの個所がもしあればごご容赦ください。)
理系の方なら、ご存知なければ、勉強して見てください。
#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
あと原点まで座標を戻す必要があると思います。

エクセルは行列演算ができます。
ビジネスでは回転は出てきたことがなく(統計ではあり)、小生の知識は生半可ですが参考までに記してみます。(誤りの個所がもしあればごご容赦ください。)
理系の方なら、ご存知なければ、勉強して見てください。
#1のご回答の回転の行列を左側からの行列乗算をすれば
複雑な関数式を使わなくてできるはず。
>エクセルで回転する座標の出し方
点(x1、y1)を原点周りにΘラヂアン(or度)回転した時の点の新座標、点(X2,Y2)を計算すると言うことですね。回...続きを読む

Qエクセルを用いた3次元座標変換

3次元座標空間において、座標軸を回転・平行移動させて3つの座標点のz座標をすべて0にする方法を教えていただけないでしょうか。

例:(x1,y1,z1), (x2,y2,z2), (x3,y3,z3)
→(回転・平行移動)→
(x1',y1',0), (x2', y2', 0), (x3', y3', 0) 

また、この3つの座標点以外の座標点についても、
これと同じ回転・平行移動を一括して行う方法があれば教えてください。

よろしくお願いします。

Aベストアンサー

(x1,y1,z1), (x2,y2,z2), (x3,y3,z3)
この3点で決まる平面の法線ベクトルを求める
次にその法線ベクトルをz軸に重ねるような回転行列を求める
これで回転行列によって3点は全てz座標が等しくなっている
最後にその等しいz座標の分だけz軸に沿って平行移動する。

Q3次元ベクトルをある軸ベクトルで回転させたい

3次元ベクトルの求め方を教えてください。

下記図のように始点を軸ベクトルでθ(度)だけ回転したときの?の位置を求めたいのです。
これはどのような計算方法になるのでしょうか?なかなか思いつかなくて非常に悩んでいます。
アドバイスや回答をいただけたら助かります。よろしくお願いします。

Aベストアンサー

先ず、中心点(Sx,Sy,Sz)が原点にくるよう全体を平行移動させます。
(一番最後に元に戻します)
始点(Px,Py,Pz)は、(Px-Sx,Py-Sy,Pz-Sz)に移ります。この座標を(Px',Py',Pz')とします。

次に、回転軸ベクトル(Ax Ay Az)を回転させ、x軸に合致させます。それには二回の
回転変換が必要です。
最初に、ベクトル(Ax Ay Az)と、x軸方向単位ベクトル(1 0 0)のなす平面の法線ベクトルが
z軸に合うよう、x軸を回転させます(その角度をφとします)。
すると、回転軸ベクトルはx-y平面上に乗るので、それがx軸に合うよう、z軸を回転させます
(その角度をψとします)。

ベクトル(Ax Ay Az)と、x軸方向単位ベクトル(1 0 0)のなす平面の法線ベクトルは、(0 Az -Ay)。
x軸周りにφ回転させると、このベクトルは、
「1  0    0   「 0  =「      0
0 cosφ -sinφ   Az   Az・cosφ+Ay・sinφ
0 sinφ  cosφ」 -Ay」  Az・sinφ-Ay・cosφ」
で、z軸ベクトルに合うので
「      0      =「0
Az・cosφ+Ay・sinφ  0 
Az・sinφ-Ay・cosφ」  1」
これから、cosφ=-Ay/(Ay^2+Az^2)、sinφ=Az/(Ay^2+Az^2)
∴ φ=Arctan(-Az/Ay)

回転軸ベクトル(Ax Ay Az)は、
「1  0    0   「Ax =「      Ax      =「       Ax                   =「Ax 
0 cosφ -sinφ   Ay   Ay・cosφ-Az・sinφ   Ay・{-Ay/(Ay^2+Az^2)}-Az・{Az/(Ay^2+Az^2)}   -1
0 sinφ  cosφ」  Az」   Ay・sinφ+Az・cosφ」  Ay・{Az/(Ay^2+Az^2)}+Az・{-Ay/(Ay^2+Az^2)}」  0」
に変換され、x-y平面上に乗ります。これを(Ax' Ay' Az') とします。
つまり、(Ax' Ay' Az')=(Ax -1 0)

始点(Px',Py',Pz')もこの変換を受けるのですが、変換を全部纏めて後、一括変換させます。

今度は、x-y平面上に乗った回転軸ベクトル(Ax' Ay' Az')を、z軸の周りにψ回転させます。
「cosψ -sinψ 0 「Ax'  =「Ax'・cosψ-Ay'・sinψ =「Ax・cosψ+sinψ
sinψ  cosψ 0   Ay'   Ax'・sinψ+Ay'・cosψ   Ax・sinψ-cosψ
  0    0   1」  Az'」       Az'      」     0      」
これが、x軸ベクトルに合うので、
Ax・cosψ+sinψ=1
Ax・sinψ-cosψ=0
これから、cosψ=Ax/(Ax^2+1)、sinψ=1/(Ax^2+1)
∴ ψ=Arctan(1/Ax)

以上の回転の変換の積は、
「cosψ -sinψ 0 「1  0    0   =「cosψ -sinψ・cosφ  sinψ・sinφ
sinψ  cosψ 0   0 cosφ -sinφ   sinψ  cosψ・cosφ -cosψ・sinφ
  0    0   1」  0 sinφ  cosφ」   0     sinφ      cosφ   」

この変換を始点(Px',Py',Pz')に施します。
「cosψ -sinψ・cosφ  sinψ・sinφ  「Px' = 「Px'・cosψ-Py'・sinψ・cosφ+Pz'・sinψ・sinφ
sinψ  cosψ・cosφ -cosψ・sinφ  Py'   Px'・sinψ+Py'・cosψ・cosφ-Pz'・cosψ・sinφ
  0     sinφ      cosφ   」 Pz'」  Py'・sinφ+Pz'・cosφ               」 

この点を(Px”,Py”,Pz”)とします。

さて、ここでx軸に合った回転軸ベクトル(1 0 0)周りに(Px”,Py”,Pz”)を角度θ、回転させます。
「1  0    0   「Px” =「     Px”   
0 cosθ -sinθ   Py”  Py”・cosθ-Pz”・sinθ 
0 sinθ  cosθ」  Pz”」  Py”・sinθ+Pz”・cosθ」

これを(P_x, P_y, P_z)とします。

今度は、回転させた回転軸を元に戻す変換です。
回転の変換の逆行列は、行列各要素の余因子の行と列を入れ替えたものを行列式で割ったもので、
行列式は、(cosψ)^2+(sinψ)^2=1 なので、逆行列は
「 cosψ      sinψ        0  
-sinψ・cosφ  cosψ・cosφ   sinφ
sinψ・sinφ   -cosψ・sinφ  cosφ」

これを、(P_x, P_y, P_z)に施します。
「 cosψ      sinψ        0   「P_x =「P_x・cosψ+P_y・sinψ
-sinψ・cosφ  cosψ・cosφ   sinφ  P_y   -P_x・sinψ・cosφ+P_y・cosψ・cosφ+P_z・sinφ
sinψ・sinφ   -cosψ・sinφ  cosφ」 P_z」  P_x・sinψ・sinφ-P_y・cosψ・sinφ+P_z・cosφ」

結局、θ回転後のP点の座標は、
x座標 : P_x・cosψ+P_y・sinψ
y座標 : -P_x・sinψ・cosφ+P_y・cosψ・cosφ+P_z・sinφ
z座標 : P_x・sinψ・sinφ-P_y・cosψ・sinφ+P_z・cosφ
となります。

ここで、置き換えた変数を順次、元に戻します。
P_x、P_y、P_z を Px”、Py”、Pz” に、
Px”、Py”、Pz” を Px’、Py’、Pz’ に、
最後に、平行移動を戻して Px’、Py’、Pz’ を Px、Py、Pz に直します。

先ず、中心点(Sx,Sy,Sz)が原点にくるよう全体を平行移動させます。
(一番最後に元に戻します)
始点(Px,Py,Pz)は、(Px-Sx,Py-Sy,Pz-Sz)に移ります。この座標を(Px',Py',Pz')とします。

次に、回転軸ベクトル(Ax Ay Az)を回転させ、x軸に合致させます。それには二回の
回転変換が必要です。
最初に、ベクトル(Ax Ay Az)と、x軸方向単位ベクトル(1 0 0)のなす平面の法線ベクトルが
z軸に合うよう、x軸を回転させます(その角度をφとします)。
すると、回転軸ベクトルはx-y平面上に乗るので、それがx軸...続きを読む

Q回転した座標軸と一致させるための回転軸と角度の算出

こんにちは。お知恵をお借りしたく質問致します。
プログラミング中で出た話題なのですが、計算の問題ですので数学カテゴリが適しているだろうと思い、投稿いたします。

ちょっと説明しにくく図を添付致しましたので併せてご覧いただければと思います。(線がふるえていて申し訳ないです。)

図のように、xyz座標を回転してXYZ座標の向きに一致させたいと考えています。
また、「指定した軸(α,β,γ)を回転軸としてθ度回転する」という関数があるので、それを活用しようと考えています。α,β,γはコサイン値(方向余弦)です。回転方向は、ベクトルの向きに時計回り…右ネジの法則みたいな感じです。

x軸から見たXの角度(θxX), y軸からのX(θyX), z軸からのX(θzX)
同様にx軸から見たY(θxY),θyY,θzY、θxZ,θyZ,θzZ
といったように、それらの角度(コサイン値)は分かっています。
(=xyz座標からみたXベクトルの方向余弦、Yベクトルの方向余弦、Zベクトルの方向余弦が分かっている。)

z軸とZ軸の外積を取ったベクトルを回転軸として、θzZが分かっているのでその角度で回転することでZ軸は一致しますけど、XY軸は合いません。(当然ですが…)

そのXY軸を合わせるためにまた回転するというのも遠回りで、任意の軸1本を中心に何度か回転するだけ(上記関数を1度使用するだけ)で、必ず向きが一致する解があると思うのですが、その任意軸と角度を算出する方法が分かりません。

一般にどういう計算をするのでしょうか。アドバイスいただければ幸いです。
なお、上記関数を用いない方法でも構いません。
「X軸(Y軸、Z軸)を回転軸としてφ度回転する」という関数もあるので、オイラー角を求める方法でも構いません。

その他、説明不足な点がありましたら随時追記致しますので、ご指摘願います。
どうかよろしくお願いいたします。

こんにちは。お知恵をお借りしたく質問致します。
プログラミング中で出た話題なのですが、計算の問題ですので数学カテゴリが適しているだろうと思い、投稿いたします。

ちょっと説明しにくく図を添付致しましたので併せてご覧いただければと思います。(線がふるえていて申し訳ないです。)

図のように、xyz座標を回転してXYZ座標の向きに一致させたいと考えています。
また、「指定した軸(α,β,γ)を回転軸としてθ度回転する」という関数があるので、それを活用しようと考えています。α,β,γはコサイン値(方向余弦)...続きを読む

Aベストアンサー

というかそのままでいいのか。バカだ。。。。

回転前の基底ex, ey, ez,回転後の基底eX, eY, eZとして

eX = cos(θxX) ex + cos(θyX) ey + cos(θzX) ez
eY = cos(θxY) ex + cos(θyY) ey + cos(θzY) ez
eZ = cos(θxZ) ex + cos(θyZ) ey + cos(θzZ) ez

だから,この係数行列がそのまま座標回転行列。
座標回転行列は実直交行列なので,この転置行列が逆行列。

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

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

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

難しくはないと思いますが三角関数が苦手なので教えて下さい。

Aベストアンサー

回転する角度をθとします。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も同様にして計算すればおっけー。

Q3次元座標2点からの直線式の求め方

お世話になります。

3次元座標2点からの直線式(ax+by+cz=0)の求め方を教えて下さい。

2次元座標であれば、1つの傾きから算出できるのですが、3次元座標になると、X-Y平面、Y-Z平面での傾きの使い方がこんがらかってしまいます。
基本的な質問で申し訳ありませんが、よろしくお願い致します。

座標1 = (x1,y1,z1)
座標2 = (x2,y2,z2)

以上

Aベストアンサー

> 直線式(ax+by+cz=0)の求め方を教えて下さい。
3次元座標では(ax+by+cz=0)は原点を通る平面になり、直線の式ではありません。ax+by+cz=dは平面の一般式です。

2点を通る直線の式には公式があります。
以下のように簡単に導けます。
点(x1,y1,z1)を通り方向ベクトル(x2-x1,y2-y1,z2-z1)の直線ですから
媒介変数形式で
(x,y,z)=(x1,y1,z1)+t(x2-x1,y2-y1,z2-z1)
と成ります。
これを変形してすれば
(x-x1)/(x2-x1)=(y-y1)/(y2-y1)=(z-z1)/(z2-z1)
と3次元座標の直線の式となります。

Q三次元空間の3点のなす角度

三次元空間の3点のなす角度を知る公式が知り無たいのです。直交座標で、3点の x, y, z 座標値はわかっているものとします。

自分でいろいろ考えたのですが、かなりややこしくなってしまいこれは公式を見つけないとだめだなと思いました。よろしくお願いします。

Aベストアンサー

3点をA(a1,a2,a3),B(b1,b2,b3),C(c1,c2,c3)とします.
ベクトルAB,ベクトルAC,ベクトルBCを算出します.
そうすると三角形ができます.
あとは知りたい角をθと置いて,余弦定理を使ってcosθを求めます.
求まったcosθの値からθを求めましょう.

Q3次元の回転角度の求め方について教えてください。

3次元の回転角度の求め方について教えてください。

3軸の加速度センサーがあります。
まず加速度センサーのZ軸を重力方向に置いたときの加速度センサーの値を(x1,y1,z1)=(0,0,1)とします。
加速度センサーのx軸、y軸、z軸をそれぞれ回転させたあとの加速度センサーの値を(x2,y2,z2)とします
(このとき加速度センサーは静止しているので、センサーの値は重力の分力になります)。
(x2,y2,z2)が既知のとき(x1,y1,z1)に戻すためのそれぞれの回転角はどのように求めれば良いのか教えてください。

(x2,y2,z2)→(x1,y1,z1)へ移動するときの回転角を
φ(z軸の回転角)、ψ(x軸の回転角)、θ(y軸の回転角)
とします。
回転行列
(x1) = (cosφ -sinφ 0) (cosθ 0 sinθ) (1 0 0 ) (x2)
(y1) = (sinφ cosφ 0) (0 1 0 ) (0 cosψ -sinψ) (y2)
(z1) = (0 0 1) (-sinθ 0 cosθ) (0 sinψ cosψ ) (z2)
より,3行3列の行列を計算すると
0=cosφcosθx2 + (-sinφcosψ+cosφsinθsinψ)y2+(sinφsinψ+cosφsinθcosψ)z2
0=sinφcosθx2 + (cosφcosψ+sinφsinθsinψ)y2+(-cosφsinψ+sinφsinθcosψ)z2
1=-sinθx2 + cosθsinψy2 + cosθcosψz2

となると思うのですが、この式からφ、ψ、θが導きだせません。
どうすれば求めることができるか教えていただけますか。

3次元の回転角度の求め方について教えてください。

3軸の加速度センサーがあります。
まず加速度センサーのZ軸を重力方向に置いたときの加速度センサーの値を(x1,y1,z1)=(0,0,1)とします。
加速度センサーのx軸、y軸、z軸をそれぞれ回転させたあとの加速度センサーの値を(x2,y2,z2)とします
(このとき加速度センサーは静止しているので、センサーの値は重力の分力になります)。
(x2,y2,z2)が既知のとき(x1,y1,z1)に戻すためのそれぞれの回転角はどのように求めれば良いのか教えてください。

(x2,y2,z2...続きを読む

Aベストアンサー

>cosφ=(y2z1-y1z2)/√(z1^2+z2^2)について、どういう方程式から導かれたのか教えていただけますか?

2点(x1, y1, z1),(x2, y2, z2)と直交する点を(x3, y3, z3)とします。(2点の外積)
(x3, y3, z3)=(y2z1-y1z2, z2x1-z1x2, x2y1-x1y2)

このとき次のことが成り立ちます。
x3^2+y3^2+z3^2=1
x1x3+y1y3+z1z3=0
x2x3+y2y3+z2z3=0

最初のz軸での回転は、点(x3, y3, z3)がxz平面に移動するように回転させます。(y座標=0になる)
次のy軸での回転は、その点が(1, 0, 0)に移動するように回転させます。
最後のx軸での回転は、(x1, y1, z1),(x2, y2, z2)はyz平面に移動しているので、(x1, y1, z1)が(0, 0, 1)に移動するように回転させます。

最初の回転角度は、点(x3, y3)のy座標を0にするので、
cosφ=x3/√(x3^2+y3^2)
sinφ=-y3/√(x3^2+y3^2)

x3^2+y3^2
=(y2z1-y1z2)^2+(z2x1-z1x2)^2
=y2^2*z1^2-2y1y2z1z2+y1^2*z2^2+z2^2*x1^2-2z1z2x1x2+z1^2*x2^2
=(x1^2+y1^2)z2^2+(x2^2+y2^2)z1^2-2(x1x2+y1y2)z1z2
=(1-z1^2)z2^2+(1-z2^2)z1^2-2(-z1z2)z1z2
=z1^2+z2^2
なので、
cosφ=(y2z1-y1z2)/√(z1^2+z2^2)
sinφ=(x2z1-x1z2)/√(z1^2+z2^2)

ψ,θも同じようにして求められます。

>cosφ=(y2z1-y1z2)/√(z1^2+z2^2)について、どういう方程式から導かれたのか教えていただけますか?

2点(x1, y1, z1),(x2, y2, z2)と直交する点を(x3, y3, z3)とします。(2点の外積)
(x3, y3, z3)=(y2z1-y1z2, z2x1-z1x2, x2y1-x1y2)

このとき次のことが成り立ちます。
x3^2+y3^2+z3^2=1
x1x3+y1y3+z1z3=0
x2x3+y2y3+z2z3=0

最初のz軸での回転は、点(x3, y3, z3)がxz平面に移動するように回転させます。(y座標=0になる)
次のy軸での回転は、その点が(1, 0, 0)に移動するように回転させます。
...続きを読む

QExcel2000で3次元プロット図を作成するには?

Excel2000で3次元プロット図を作成するにはどのようにしたら良いのでしょうか?
3つの特徴量(x,y,z)を持った複数のデータを3次元(x,y,z)座標上にプロットする
グラフを作成したいのです。
3次元グラフは立体的(斜め上から見たような)に描かせたいのです。
ご存知の方、ご教授願います。

Aベストアンサー

3次元のグラフを作成するときは一度2次元にして作成します
とりあえず、x,y,zすべての情報をセルに書き出します
Z軸周りに回転せずX軸周りにα、Y軸周りにβ回転させた場合の
図形のX-Y平面に投射した図は以下のpx,pyの点をグラフにすればできます
公式は以下のとおりです
px=x*cos(β)+z*sin(β)
py=y*cos(α)-(-x*sin(β)+z*cos(β))*sin(α)
実際にはPXとPYの点をグラフにすればできます
例えば、z=x+yの場合シートは以下のとおりになるかと思います
z x y px py
2 1 1 ・・ ・・
3 1 2 ・・ ・・
※pxとpyは面倒なので自分で計算してください
またαとβはラジアンで入力してください
度(θ)をラジアン(x)に変更する公式は
x=θ*pai/180
です
pai=3.14159・・・です
関数にパイがありますのでそれを使用してください
わからないことありましたらまた回答します


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

人気Q&Aランキング