1

http://jsfiddle.net/techsin/CxFRC/15/すべてのクロムは、上下矢印をクリックしてドラッグするだけです。

pastebin.com/gXS1J7zw

問題:c=$('.con') go/translate を横向きにすることができません。前後はなんとかできました。しかし、私は横向きの式を練習することはできません.

これは私の最初の試みです。矢印キーを使用して、前方と後方の作業は別の機能にあります。しかし、左右はしません。

問題のコード:残りのコードについて心配する必要はありません。右左のメイン ロジックはここにあります。直角を見つけようとしましたが、反対の動作をし、反対の反対の動作をします。

動作し、注意する必要のない最初のコード:

function forwBack(x){ 
   az+= x*(Math.cos((Math.PI/180)*ry))*Math.cos((Math.PI/180)*rx)*speed;
   ax-= x*(Math.sin((Math.PI/180)*ry))*Math.cos((Math.PI/180)*rx)*speed;
   ay+= x*(Math.sin((Math.PI/180)*rx))*speed; 
}

今、私が望むことをしないコード...ベクトルに垂直に変換します。

     function rightLeft(x){
       az+= Math.sin(ry*(Math.PI/180))*(Math.cos((rx+90)*(Math.PI/180))*speed*x);
       ax-= Math.cos(ry*(Math.PI/180))*(Math.cos((rx+90)*(Math.PI/180))*speed*x);
       ay+= Math.sin((rx+90)*(Math.PI/180))*speed*x; 
    }

×は左右前後を決める記号です。ここでは速度は斜辺です。度からラジアンへの Pi/180。ラジアンから度への 180/Pi。(x 軸周りの回転) rx と ry は関数 ch.. で定義され、main(.ma) コンテナーの回転を表します。rx は、マウスの垂直方向の動きによって定義されます。

私はこれをする必要はありませんが、したいです。ホールのような 3D エクスプローラーを作りたい.. ただの楽しみです。私は9年前のようにフラッシュでこの種のことをしていました。私はその時子供でした。

主な問題は、横方向が常に -x または +x であるとは限らないことです。これは、外側のコンテナーがどれだけ回転したか (xyz 周り) によって異なります。したがって、m が y 軸を中心に 90 度回転した場合、c に x+ を移動するように指示するだけで、c は実際には z に戻ったり縮小したりしているように見えます。

2日間続けて試した後、これを修正できません。

http://jsfiddle.net/techsin/hGkMj/1/ -- 3d のチェックアウト

http://jsfiddle.net/techsin/hGkMj/6/ -- 3d のチェックアウト

http://jsfiddle.net/techsin/9YjSC/3 私がやろうとしていることを明確にするためにこれを作成しました。マウスを移動し、矢印キーを使用します。プレビュー ウィンドウをクリックする必要があります。

4

1 に答える 1

0

問題が見つかりました。関数 rightLeft では、x と y を反転しています。関数を書き直したところ、正常に動作しています。

    function rightLeft(x){
        var dAy = 0 ; 
        var dAz = Math.cos((ry+90)*(Math.PI/180))*speed*x;
        var dAx = Math.sin((rx+90)*(Math.PI/180))*speed*x;
        console.log("dAx = " + dAx + " dAz = " + dAz + " dAy = " + dAy);
        ax-= dAx;
        az+= dAz;
        ay+= dAy;
    }

お役に立てれば!

于 2013-09-20T20:28:02.637 に答える