左に回転

アバター
もるも
記事: 54
登録日時: 9年前
連絡を取る:

左に回転

投稿記事 by もるも » 1年前

マス目移動だとか、しゃがむだとかは実装できたが、回転に苦戦。
オイラー角で縦軸に足し引きすればいいだけなんだけども、
目的の角度に近づいたか判定するときに、-90から減ると269とかになるから混乱してしまう。

眠くて頭が回らないから明日にしよう。

アバター
usao
記事: 1889
登録日時: 11年前

Re: 左に回転

投稿記事 by usao » 1年前

いきなり関係ない話ですが,
個人的には「角度」という値をなるべく用いずに済む方法が好きです.

なぜかというと,「角度」って
度(degree) で言えば,0と360 とか -180と180 とか どこかで値が不連続な点がある.これが嫌.

これのせいで例えば,「2つの角度を与えるから,差を求めろ」みたいなのとかで
何故か無意味に混乱というかミスしやすくて嫌.(ただの算数なのに!w)
「45度と60度」て言われるなら差は15度だけど,
「-20度と370度」だとか言われるともう嫌になるw 何故なのか?

---

「オイラー角(回転姿勢を3つの角度で表すやつ)」も嫌いw.
専ら1軸周りで回しているうちはまだいいんだけど…点そうじゃなくなった時点で回転具合がイミフすぎて嫌.
「3つの角度」で頑張るのは私には無理.

アバター
usao
記事: 1889
登録日時: 11年前

Re: 左に回転

投稿記事 by usao » 1年前

角度関係の話で
「360で割った剰余を取ればいい」だとかドヤ顔で言ってくる奴が必ず出てくるのも嫌だ.
…というか「剰余」が嫌.

・値が整数じゃないときに剰余を一発で求める手段ってあるんだっけ…?(% 演算子じゃダメだよね?)
・負の値に対する剰余って…結果どうなるんだっけ?(言語使用的にどう決まってるのか)

とか何とか無意味に混乱が増すので.

アバター
usao
記事: 1889
登録日時: 11年前

Re: 左に回転

投稿記事 by usao » 1年前

というわけで,「角度」ってやつはとっても危険.
生の状態で振り回すと即バグる.
一刻も早く三角関数あたりに食わせて目の前から消滅せしむる必要がある(個人の感想です)

アバター
usao
記事: 1889
登録日時: 11年前

Re: 左に回転

投稿記事 by usao » 1年前

…みたいな話をちょっと前に Stack Overflow で書いたら,
案の定,「お前は馬鹿なのか…?」みたいな反応をいただきました.

全く冗談が通じない場所というのも窮屈なものですね.

アバター
もるも
記事: 54
登録日時: 9年前
連絡を取る:

Re: 左に回転

投稿記事 by もるも » 1年前

>>usaoさん
結局0と360を跨いでいるところが解決できなくて、
bingちゃんに質問したら、条件式とかそういうのじゃなくてコルーチンを提案されましたw
自力で頑張ろうとしたのに、Unityの機能を活かせずややこしくコード書いているという事実に悲しくなります(;^ω^)

アバター
いわん
記事: 30
登録日時: 8年前

Re: 左に回転

投稿記事 by いわん » 1年前

私は角度を扱うときは下の様な関数を使って角度を正規化しています。
-180 ~ 180 の角度に正規化しているのは正面を 0度とすると符号だけで右側か左側かわかりますので。
min = 0, max = 360 とすれば常に正の値に正規化することもできます。

CODE:

double normalize(double d)
{
    const double min = -180;
    const double max = 180;
    const double rd = max - min;
    double x = fmod(d, rd);
    if (x < min)    return x + rd;
    if (x >= max)   return x - rd;
    return x;
}
> usaoさん
fmod 関数で実数の剰余が求められます。剰余の符号は被除数の符号に依存するようです。

アバター
もるも
記事: 54
登録日時: 9年前
連絡を取る:

Re: 左に回転

投稿記事 by もるも » 1年前

>>いわんさん
すでにオブジェクトが持っている値に固執しておりました(;^ω^)
置き換えればよかったのか~