- ベストアンサー
数学演算のサンプルコード集のあるサイトを探しています(VB6)
VB6で数学演算のソースコードのサンプル集を探しています。 例えば今回は3次元のベクトルをX,Y,Z軸周りに任意の角度だけ回転する行列をプログラムしたいので、アフィン変換のサンプルなんかないかと探しています。いいサイトがあれば教えていただけませんでしょうか。 よろしくお願いします。
- subarist00
- お礼率98% (5802/5895)
- Visual Basic
- 回答数1
- ありがとう数2
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
まったくの素人なので、 参考になるかはわかりませんが、 検索したらこんなのがありました。
関連するQ&A
- 線形変換を教えてください!!
線形変換を教えてください!! 『原点を通り、ベクトル(sinα,0,cosα)に直交する平面についての折り返しを表す行列を求めよ』という問題があります。 その答えは 『y軸のまわりの角度-αの回転、xy平面についての折り返し、y軸の周りの角度αの回転を続けて行えばよい』となっています。 しかし、自分なりに考えてみて 『y軸のまわりの角度αの回転(z軸をベクトル(sinα,0,cosα)に重ねるため)、xy平面についての折り返し、y軸の周りの角度αの回転(z軸をもとに戻すため)』と考えたほうがしっくりきます。当然答えは違ってくるのですが… 考え方に間違いがあるでしょうか?
- ベストアンサー
- 数学・算数
- 3次元の座標変換と角度について。
3次元のシミュレーションの勉強をしています。 3次元の座標変換で x,y,z:変換前の座標; x',y',z':変換後の座標; θ:回転する角度; lx,ly,lz:平行移動量; としたとき、 X軸に関する回転 |1 0 0 0| |0 cosθ sinθ 0| [x' y' z' 1] = [x y z 1]|0 -sinθ cosθ0| |0 0 0 1| Y軸に関する回転 |cosθ0 -sinθ0| |0 1 0 0| [x' y' z' 1] = [x y z 1]|sinθ0 cosθ 0| |0 0 0 1| Z軸に関する回転 |cosθ sinθ 0 0| |-sinθcosθ0 0| [x' y' z' 1] = [x y z 1]|0 0 1 0| |0 0 0 1| 平行移動 |1 0 0 0| |0 1 0 0| [x' y' z' 1] = [x y z 1]|0 0 1 0| |lx ly lz 1| 物体の姿勢を表現するときは [物体の姿勢の変換行列] = [Z軸の回転行列][X軸の回転行列][Y軸の回転行列][平行移動] |XX XY XZ 0| XX,XY,XZ・・・X軸の単位ベクトルを変換した場合のベクトル |YX YY YZ 0| YX,YY,YZ・・・Y軸の単位ベクトルを変換した場合のベクトル = |ZX ZY ZZ 0| ZX,ZY,ZZ・・・Z軸の単位ベクトルを変換した場合のベクトル |LX LY LZ 1| LX,LY,LZ・・・平行移動量ベクトル というのは分かるのですが、 X軸、Y軸、Z軸の単位ベクトルを変換した後のベクトルから X軸、Y軸、Z軸にそれぞれ何度ずつ回転させたかを求めるにはどのようにすればよいのでしょうか? つまり、X軸に対して30度、Y軸に対して45度、Z軸に対して60度回転させた後の |XX XY XZ 0| |YX YY YZ 0| |ZX ZY ZZ 0| |LX LY LZ 1| の値からX軸に対して30度、Y軸に対して45度、Z軸に対して60度回転している事を導きたいのです。 分かる方教えてください。 お願いします。 (質問に関して、 http://www.ceres.dti.ne.jp/~ykuroda/oyaj/bone/basic3d.html を参考にさせていただきました。)
- ベストアンサー
- 数学・算数
- 線形代数学 ベクトル(0,1,1)を軸とするθの回転を与える行列
線形代数学を最近学び始めて、いきずまってしまいました。 任意のベクトル(でいいのかな)を軸とするθの回転を与える行列を求める問題です。 問題として 3次元ユークリッド空間に直交座標x,y,zを入れて考える。 (1)x軸の周りのπ/4だけの回転を表す行列Qを求めよ。 (2)ベクトル(0,1,1)を軸とするθの回転を与える行列Q(-1)Rz(θ)Qを計算せよ。 ※Q(-1)はQの逆行列です。Rz(θ)はz軸の周りのθ回転の行列です。 (2)がわからなくて困っています。 行列Q(-1)Rz(θ)Qという形は対角化の形に似ているのですが、 これは、対角化を考えた時に、ベクトルが(0,1,1)がx軸と直角に交わっているからQが直行行列になるのかな~とか、思うのですが、 θ回転するのに対角行列が出てくる意味が少しわからないので、 (2)でなぜ行列Q(-1)Rz(θ)Qになるのか、解説をお願いします。 ちょっとわかりにくい文章になってしまってるかもしれませんが、 申し訳ありません・・・。
- ベストアンサー
- 数学・算数
- 数学の問題がわかりません。助けてください。
数学の授業を受講しているのですが…助けてください… 単位立方体をx軸回りに30度回転後、y軸回りに45度回転してz=0の面に直投影するとき、下記の設問に答えなさい。ただし、z軸は紙面に垂直とする。 (1)合成変換行列を求めよ。 (2)投影変換後の2次元座標を求めよ。 (3)投影図を図示しなさい。 宜しくお願いいたします~ぺこ林
- 締切済み
- 数学・算数
- 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と各軸での回転角度は違うものという認識でいいのでしょうか? 元の座標系において,各軸回りに順番に回転させればいいかと思うのですが,どうもイメージがつかみきれません. よろしくお願い致します.
- ベストアンサー
- 数学・算数
- 線形代数 行列 対称 回転
3次元(xyz)におけるX軸に対する軸対称(回転対称)は、 3次元の回転行列を用いて、 1 0 0 0 cosθ -sinθ 0 sinθ cosθ θ=πとすると 1 0 0 0 -1 0 0 0 -1 と教えて頂きました。 前回の質問:http://okwave.jp/qa/q7596237.html その他の、y軸,z軸対称も同様に、y軸の回転行列 でθ=π,z軸の回転行列でθ=πとすれば導けるでしょうか? また、2次元(xy)における回転行列は、 cosθ -sinθ sinθ cosθ です。 これにθ=πを代入すると、 -1 0 0 -1 となります。 しかし、2次元における軸対称は 1 0 0 -1 となると思います。 どこが間違っているのでしょうか? 以上、ご回答よろしくお願い致します。
- ベストアンサー
- 数学・算数
- 回転した座標軸と一致させるための回転軸と角度の算出
こんにちは。お知恵をお借りしたく質問致します。 プログラミング中で出た話題なのですが、計算の問題ですので数学カテゴリが適しているだろうと思い、投稿いたします。 ちょっと説明しにくく図を添付致しましたので併せてご覧いただければと思います。(線がふるえていて申し訳ないです。) 図のように、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軸)を回転軸としてφ度回転する」という関数もあるので、オイラー角を求める方法でも構いません。 その他、説明不足な点がありましたら随時追記致しますので、ご指摘願います。 どうかよろしくお願いいたします。
- ベストアンサー
- 数学・算数
お礼
ご回答ありがとうございます。
補足
チェック遅くなりましてすみません。早速の回答有難うございます。 Direct3D使ってるんですね。DirectXを使うと何も数学を知らなくてもできてしまうのはいいのですが、どちらかというと処理速度は多少遅くてもいいので自分で書いたものを探しています。 そういうものはありませんでしょうか?