三角学问题:圆与矩形碰撞

Problems with trigonometry: Circles coliding with rectangles

我一直在尝试制作一个球从旋转矩形反弹的程序,为此我必须学习一些基本的三角学,但是当我 运行 时我注意到的是这是半不准确的。就像每当球稍微偏离中心一点点击中矩形时,它要么直接穿过,要么朝它不应该的方向弹开。为了更好地了解我的问题,如果您去查看 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;
}

好像a是切线角(面线的角度),这种情况下你的正常计算是错误的

    x: - Math.sin(a),
    y: Math.cos(a)

    (or for opposite normal)
    x: Math.sin(a),
    y: - Math.cos(a)

另一个可能的问题 - 三角函数在您的语言中使用弧度还是度数?