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

时间:2014-10-27 16:18:46

标签: javascript math geometry angle sin

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

我有这些功能:

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

最后:

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)

}

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

更新

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

1 个答案:

答案 0 :(得分:4)

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

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

enter image description here

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