Javascript 计算所需的力
我试图对一个物体施加一个力。让它以鼠标位置相对于对象生成的角度移动 我有这个角度Javascript 计算所需的力,javascript,vector,matter.js,Javascript,Vector,Matter.js,我试图对一个物体施加一个力。让它以鼠标位置相对于对象生成的角度移动 我有这个角度 targetAngle = Matter.Vector.angle(myBody.pos, mouse.position); 现在我需要施加一个力,使物体沿着这个角度移动。 对于applyForce方法,我应该在下面的值中输入什么 // applyForce(body, position, force) Body.applyForce(myBody, { x : ??, y : ?? },
targetAngle = Matter.Vector.angle(myBody.pos, mouse.position);
现在我需要施加一个力,使物体沿着这个角度移动。
对于applyForce方法,我应该在下面的值中输入什么
// applyForce(body, position, force)
Body.applyForce(myBody, {
x : ??, y : ??
},{
x:??, y: ?? // how do I derive this force??
});
我应该在这里输入x和y值,以使身体沿着鼠标和身体之间的角度移动。要施加力使对象朝该方向移动,需要以弧度为单位获取角度的正弦和余弦。只需将对象的位置作为第一个向量传递,即可不应用转矩(旋转) 如果需要,还可以查看
applyForce()
上的文档
(我知道这个问题已经很老了,我或多或少是为偶然发现它的人做的)你可以依赖
Matter.Vector
模块,并使用它对位置向量进行减法、归一化和乘法:
var force = 10;
var deltaVector = Matter.Vector.sub(mouse.position, myBody.position);
var normalizedDelta = Matter.Vector.normalise(deltaVector);
var forceVector = Matter.Vector.mult(normalizedDelta, force);
Body.applyForce(myBody, myBody.position, forceVector);
这很有帮助,但什么是旋转?难道他不想用mouseX和mouseY作为指导吗。你也错过了一些分号后180。如果这是在wiki或示例中就好了。我认为您的
theta
变量与targetAngle
相同。因此,您可以将目标角度输入到cosine()
和sine()
函数中。θ的值是targetAngle
转换为弧度。targetAngle
已经是弧度了-请参阅文档,这个答案肯定比Brennananen的不太理想的(尽管正确)更可取使用三角函数(反向)将角度转换为矢量的解决方案。
var force = 10;
var deltaVector = Matter.Vector.sub(mouse.position, myBody.position);
var normalizedDelta = Matter.Vector.normalise(deltaVector);
var forceVector = Matter.Vector.mult(normalizedDelta, force);
Body.applyForce(myBody, myBody.position, forceVector);