2012-02-24 9 views
5

私は-webkit-transform: rotateX(rotation in deg);を使用して3Dで回転するこのカルーセルを持っています。それには10のペインがあり、36度毎にペインが中央に配置されています。カルーセルで最も近いペインの回転角度を計算する方法

今、私はtouchendイベントで呼び出される "スナップイン"エフェクトを作成しようとしています。

私の問題は、任意の回転値から、-1820度と言うと、どのペインを計算するのですか、どのペナルティが最も近いペインを計算するのですか?

希望は意味があります。ヒントは高く評価されるだろう。

答えて

4

私はあなたの質問によく答えるならば、基本的に除算の余りであるwg3schoolsに従うモジュラス演算子をパーセント記号%として定義するべきです。

例: 5%2は、だから今は、前の角度(レッツ・コールにご角度resepctの位置を知っているあなたは

var initialAngle= getAngle(); //let's say it's 1820 
var closestPane= initialAngle%36; //which gives you 20. 

ようsemthingんでしたあなたのケースでは1

に等しく、それは)。 さらに簡単な操作(36-20 = 16)を行うと、次の角度からの距離もわかります。

angle before ---- A ---- angle after 
      20deg 16deg 

これは

+0

多分あなたの上に何かがありますが、私が必要とするのは-1820から最大+36の角度です。 – jenswirf

+0

私の答え –

+0

を編集して、モジュロ演算子を理解してください。必要な場合は、「モジュロ基本的には」という意味です。最初の数値から2番目の数値を離し続けます。負の数には、残っているものは答え "'です。ここにはhttp://ask.metafilter.com/43903/Help-me-understand-modulus-operatorsが掲載されています。 –

0

は、ここで私はDanele Bの入力に基づいてしまったものだ役に立てば幸い...

function snapToAngle(Angle) { 
var deltaAngle = Math.abs(Angle)%36; 

    if (Angle >= 0) { 
     (deltaAngle <= 18) ? Angle -= deltaAngle : Angle+=36-deltaAngle; 
    } else { 
     (deltaAngle <= 18) ? Angle += deltaAngle : Angle -= 36-deltaAngle; 
    } 
return Angle; 
} 

私はこれを書いてすっきり方法があります確信しているが、それはように見えます仕事..

関連する問題