grapes3Dのarg関数の周期がπ?

まだ3Dを使い始めたばかりですが、気になった点があります。

arg(2d)関数の周期は2πですが、arg(3d)の方はπになっています。
π周期では情報が欠落していまい、予期せぬ挙動を示すことがあるのですが、これは仕様なのでしょうか?。

user.png テツ time.png 2015/03/14(Sat) 07:13 No.2097
Re: grapes3Dのarg関数の周期がπ?
「π周期」は不適切なので訂正します。

ベクトルの回転方向が欠落してしまうという意味です。つまり
arg(P,Q) = arg(Q,P)
user_com.png テツ time.png 2015/03/14(Sat) 07:58 No.2099
Re: grapes3Dのarg関数の周期がπ?
> arg(P,Q) = arg(Q,P)

これは仕様です。
確かにP,Qの回転方向が失われますが,言い換えると(この関数を作ったとき)回転方向を指定するいいやり方を思いつかなかったからです。
P,QをP×Q(外積)方向から見たときの回転角をθとすると,その逆方向から見たときは2πーθで,結果が違ってきますが,2つのパラメータP,Qだけからその方向を決める手立てがないからです。

対策ですが,argH(P)関数を使ってください。
これは,点Pの水平方向の偏角(0から2π)を表します。
2点PQを回転移動してxy平面(に平行な平面)に移すなど工夫が必要かと思いますがこれしかありません。
例:P,Qの角度を計測する軸となる方向のべクトルをAとします。
S = tilt(P,A,(0,0,1))
T = tilt(Q,A,(0,0,1))
これで,S,Tはxy平面上に移るので,求める角は
argH(T)ーargH(S)
となります。
ただしこれにも欠点があり,3点OPQが一直線上にあるとき,tilt関数がエラーを出してしまいます。今後の課題とさせていただきます。
user_com.png ともだ time.png 2015/03/14(Sat) 11:33 No.2101
Re: grapes3Dのarg関数の周期がπ?
回答ありがとうございました。

それらの関数で検討してみます。
user_com.png テツ time.png 2015/03/14(Sat) 16:04 No.2102
処理 記事No 暗証キー

- JoyfulNote -