[過去ログ] 【ゲームエンジン】Unityなんでも質問スレpart1 (1002レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
576
(1): 名前は開発中のものです。 [] 2020/07/22(水) 16:13:06.73 ID:N4vFd5MR(2/4) AAS
>>569
569(1): 名前は開発中のものです。 [sage] 2020/07/22(水) 15:14:13.57 ID:rK8bipiH(1/14) AAS
HandleAngleは貴方が求めた計算値だよね?
ローカル軸にToAngleAxisかけてるからじゃないのかな?
Handle.localRotation.eulerAngles.xに-符号は付かないんだよ
~ >>571
571(1): 名前は開発中のものです。 [sage] 2020/07/22(水) 15:37:55.82 ID:rK8bipiH(3/14) AAS
>HandleAngle = 358, HandleAxis = (1, 0, 0)
>HandleAngle = 359, HandleAxis = (1, 0, 0)
HandleAxisが右向き

>HandleAngle = 359, HandleAxis = (-1, 0, 0)
>HandleAngle = 358, HandleAxis = (-1, 0, 0)
HandleAxisが左向き

右向き/左向きで軸が入れ替わってるんだよ分かる?
すみません、仰る通り HandleAngle については見やすくするために負の値で表現しました。実際は

実際の角度:0 ~ 90 ~ 180 ~ 270 ~ 360 (0)
HandleAngle :0 ~ 90 ~ 0/360 ~ 270 ~ 360/0

です。

軸が反転する理由はよく分からないのですが、とりあえずそういうものだと受け入れて対処したという状況です。
Unity公式のクォータニオンの説明( 外部リンク[html]:docs.unity3d.com )では、角度は180°までしか表現できないとあります。
これは恐らく、
『ベクトル a 周りの (180 + x)° の回転 = ベクトル -a 周りの (180 - x)° の回転』
と表現される、という意味だと解釈したのですが、なぜか ToAngleAxis で返される Angle の値の範囲は0から360なんです。

一方、Quaternion.w = cos(θ/2) であることから、Quaternion.w からarccosによって角度を求める際、Quaternion.w と角度が一対一対応になるのは 0° < θ/2 < 180° すなわち 0° < θ < 360° ですから、角度を0から360で処理していても不都合は無いと思うのですが…
上の式で x に 180 + x を代入すれば、
『ベクトル a 周りの (360 + x)° の回転 = ベクトル -a 周りの -x° の回転』
となって私のと同じ状態になるので、この辺が絡んでいるのではないかと思っているのですが、よく分かりません。
1-
あと 426 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.016s