質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
CSS3

CSS(Cascading Style Sheet)の第3版です。CSS3と略されることが多いです。色やデザインを柔軟に変更することが可能になります。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

1回答

714閲覧

javascriptでdeviceorientationの値がおかしくなる

ryuryu

総合スコア7

CSS3

CSS(Cascading Style Sheet)の第3版です。CSS3と略されることが多いです。色やデザインを柔軟に変更することが可能になります。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

2クリップ

投稿2018/01/16 11:12

編集2018/01/17 02:45

deviceorientationのイベントでe.alpha, e.beta, e.gammaを取得してDOM要素を回転させようと思うのですが、
デバイスを地面に対して垂直(縦)にした時にgammma、alphaの値が一瞬おかしくなってしまいます。
厳密に言いますと、縦に近づけるほどおかしくなります。
また、水平にした時は問題なく動作しております。

他サイトで公開されているサンプルをいくつか見てみましたが、この不具合に対応しているものは見当たりませんでした。
deviceorientationの仕様でこの様な値が返ってきているのだと思いますが
何か対応策などありましたらご教授いただけますと幸いです。

下記、行なっている処理の一部です。

window.addEventListener('deviceorientation', deviceOrientationHandler, false); function deviceOrientationHandler (e) { var rotateX = e.beta; var rotateY = e.gamma; $(".test").css({ "transform": "rotateX(" + rotateX + "deg) rotateY(" + rotateY + "deg)" }); }

追記:
値に関しまして、例えば端末を横に回転したりせずただ垂直に持ち上げた時はbetaの値のみ変更しており
gammaの値も途中まではほぼ0の値(値が変わらない)を出していましたが、
端末の角度が80度を超えたあたりからgammaの値が急に増加し垂直状態で90となりました。
垂直を超えてさらに回転させると値が突然-90となりそこから-80,-70と値が変化していきました。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

turbgraphics200

2018/01/16 11:36

具体的にどのようにおかしくなるのかを追記したほうがいいと思われ
kei344

2018/01/16 12:51

質問文のコードはコードブロックで囲んでいただけませんか? ```(バッククオート3つ)で囲み、前後に改行をいれるか、コードを選択して「<code>」ボタンを押すとコードブロックになります。
ryuryu

2018/01/17 02:46

turbgraphics200様、kei344様ご回答ありがとうございます。ご指摘頂いた内容で編集・追記させていただきました。
guest

回答1

0

いわゆるジンバルロックに近い現象かもしれません。

1つの角度が極端になると、他の角度で自由度が減ってくるので、ちょっとした誤差が増幅されて、値の異常な振れとなってしまうのです。

投稿2018/01/16 23:42

maisumakun

総合スコア145184

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ryuryu

2018/01/17 02:50

maisumakun様、ご回答ありがとうございます。 ジンバルロックという現象があるんですね。 仰っている内容と今回の不具合は近い感じが致します。 ただ、その場合どういった計算式でその値を修正すれば良いのか私には分からないです。。。 引き続き調査をしてみますが何かご参考になる処理、またはソースなどはご存知でしょうか? お手数おかけしますがご回答頂けますと幸いです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問