需要JavaScript和三角函数的帮助

Need help for javascript and trigonometry

本文关键字:帮助 三角函数 JavaScript 需要      更新时间:2023-09-26

http://jsfiddle.net/techsin/CxFRC/15/所有镶边都只能单击并拖动向上和向后箭头。

pastebin.com/gXS1J7zw

问题:我无法c=$('.con')横向翻译/翻译。我已经设法做到了前后。但我无法计算出侧身的公式。

这是我的第一次尝试。使用箭头键,前进和后退工作在不同的功能中。但左右不要。

有问题的代码:你不需要担心其余的代码 右左的主要逻辑在这里。我尝试找到垂直角度,但它的行为相反,然后与相反。

第一个有效且无需注意的代码:

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; 
    }

x 是决定左/右或前进/后退的符号。速度在这里是斜边。Pi/180 表示度到弧度。弧度到度的 180/Pi(绕 x 轴旋转)rx 和 ry 在函数 ch 中定义。并表示主 (.ma) 容器的旋转。Rx 由鼠标的垂直移动定义。

我不需要这样做,但我想这样做。我想让3D资源管理器像一个大厅。只是为了好玩。我曾经像9年前一样在Flash中做这种事情。那时我还是个孩子。

主要问题是侧向并不总是 -x 或 +x,这取决于外部容器旋转了多少(围绕 xyz)。因此,如果 m 绕 y 轴旋转 90 个,只告诉 c 移动 x+ 会使 c 实际上看起来像是在回退或减少 z。

连续尝试两天后,我无法解决此问题。

http://jsfiddle.net/techsin/hGkMj/1/-- 检出 3D

http://jsfiddle.net/techsin/hGkMj/6/-- 检出 3D

http://jsfiddle.net/techsin/9YjSC/3 我这样做是为了清楚地了解我想要做什么。 移动鼠标,并使用箭头键。需要在预览窗口中单击。

我发现了问题。在你的函数 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;
    }

希望这有帮助!