我一直在尝试制作一个程序,其中一个球从一个旋转的矩形反弹,我不得不学习一些基本的三角学,但是当我运行它时我注意到的是它是半不准确的。就像每当球击中矩形只是略微偏离中心时,它就会向右或者以一个不想要的方向反弹。为了更好地了解我的问题,如果您去了my fiddle,我将不胜感激。
我认为这是数学方面的问题,(考虑到我的成绩直到10年级或11年级才会学到它),但可能更多。
这是数学函数:
function getNormal(a) {
return {
x: Math.sin(a),
y: Math.cos(a)
}
}
function reflect(n, v) {
let d = 2 * dot(v, n);
v.x -= d * n.x;
v.y -= d * n.y;
return v;
}
function dot(v1, v2) {
return v1.x * v2.x + v1.y * v2.y;
}
答案 0 :(得分:0)
似乎a是切向角(表面线的角度),在这种情况下,您的正常计算是错误的
x: - Math.sin(a),
y: Math.cos(a)
(or for opposite normal)
x: Math.sin(a),
y: - Math.cos(a)
还有一个可能的问题 - 三角函数是否以您的语言使用弧度或度数?