EDIT:Mám úhel z použití Math.atan2(), který pak chci přidat nebo odečíst hodnoty. Toto sčítání a odečítání však někdy znamená, že úhel je větší než pí nebo menší než -pi a já hledám způsob, jak vrátit jeden z těchto vnějších úhlů zpět do správného rozsahu.
Snažím se najít hodnotu mod 2pi v JavaScipt pomocí následujícího kódu:
foo % Math.PI * 2;
Vždy to však vrátí jen foo, i když zkusím toto:
var bar = Math.PI * 2; foo % bar;
Může mi někdo vysvětlit, proč to nefunguje?
DLiKS
Odpověď
Neděláte úkol:
foo = foo % Math.PI * 2;
Nebo:
foo %= Math.PI * 2;
EDIT:
Abych parafrázoval vaši aktualizovanou otázku, máte hodnotu foo, což může být jakýkoli úhel, jakkoli chcete, aby foo bylo v rozsahu [-pi,pi]. Musíte to udělat programově:
foo %= 2 * Math.PI; // Now in the range [-2pi,2pi] if (Math.abs(foo) > Math.PI) { foo -= 2 * Math.PI * Math.sign(foo); }