用 sin 或 cos 计算三角形的角度

Sas*_*dar 2 javascript math geometry trigonometry angle

我正在尝试根据三角形边计算角度,最好是用 sin 计算。前 2 个是辅助getDistance函数getPointsDifference

我有这些功能:

var getDistance = function(p1, p2){
    var dx = p1.x - p2.x, dy = p1.y - p2.y;
    return Math.sqrt(dx*dx + dy*dy);
}

var getPointsDifference = function(p1, p2){

    return {
        x: -1 * (p1.x - p2.x),
        y: (p1.y - p2.y)
    }
}
Run Code Online (Sandbox Code Playgroud)

最后:

var getMenuChoice = function(cx,cy, x, y){

    var distance = getDistance({x:cx,y:cy}, {x:x,y:y});

    if (distance <= 100) {
        console.log(1)
    } else {
        console.log(2)
    }

    var diff = getPointsDifference({x:cx,y:cy}, {x:x,y:y});
    var a = Math.sin(diff.y/distance)

    console.log("asdf:", a)

}
Run Code Online (Sandbox Code Playgroud)

有人可以告诉我我做错了什么吗?我想以度为单位计算结果。

更新

我检测到屏幕上有一个舔,它给了我 ax,y,然后我从屏幕中心的 cx 和 cy 中减去那些 x,y

Che*_*ery 5

这称为从(或到,取决于您需要的)点击点到屏幕中心的矢量角度(或方向)。不需要计算角度的距离和反正弦(而不是你的正弦) - 你可以只使用Math.atan2(dy, dx);

dy是 y (y2 - y1) 的变化,dx是这两点之间 x (x2 - x1) 的变化。您可以使用常规Math.atan(dy / dx),但必须确保您没有除以零,并且必须考虑 dy 和 dx 的符号才能在正确的象限中得到答案。Math.atan2将为您做这一切。下面的图片只是一个提醒。

在此输入图像描述

是的,答案将以弧度为单位,正如评论中提到的那样。转换很简单degrees = radians * (180 / Math.PI);