日々適当

hibitekitou

任意軸での回転行列

sansu |2012-09-28


こんな感じでp0、p1、p2の3つの点があって、p0からp1へのベクトルを回転軸としてp2を回してみましょうって時、どうするか。
これは単純にベクトルのたし算でできちゃいます。ICE Treeはこんな感じ。



詳しくは、こーいうところを見るのがいいでしょうかね(丸投げ)。

3次元の回転 (原点を通る任意方向回転軸,座標系に依存しないベクトル・回転行列表現 )

ところで、これを変形していくと、回転行列が求められます。うん、求められるらしいですよ?w



回転軸上の単位ベクトルを (Ax, Ay, Az) として、θ度回転している時の式です。
これをICE Treeに実装すると、



と非常に煩雑になります。でも、これを正しくかければ、いい感じに行くようですね。
上記ICE Treeは回転軸がp0→p1なので、p2の位置を、p0を原点に戻す量だけ動かした上で、上記回転の変換をかけ(Multiplay by Matrixを使います)、出てきた結果に対してまたp0の位置分だけ動かしてやるという手順を踏んでいます。

ってことで、これをスクリプト実装してやれば、「スライスツールをスクリプトから設定することを考える [日々適当] 」こいつがちゃんとできるはずです。たぶん、以前実装した時はp0分だけ動かしてやることをしていなかったのが悪かったのでは無いかと想像していますがどうですかね。
コメント ( 0 )|Trackback ( )
 
コメント
 
コメントはありません。
コメントを投稿する
ブログ作成者から承認されるまでコメントは反映されません
 
名前
タイトル
URL
コメント
コメント利用規約に同意の上コメント投稿を行ってください。

数字4桁を入力し、投稿ボタンを押してください。