获取基于三角形的屏幕坐标

时间:2011-01-22 19:11:55

标签: javascript math

如果我有斜边的长度及其角度,我如何找到相邻的和相反的?

我用JavaScript编写这个,我只是想找到斜边使用长度和角度结束的屏幕坐标(x / y)。 所以,另外,我需要知道如何从笛卡尔坐标转换为屏幕坐标。

对不起,这可能是一个非常愚蠢的问题。

如果我不清楚,这是草图:

alt text

这样的事情:

function getLineEndCoords(originX, originY, hypotenuse, angle){
    // Probably something to do with tangents and cosines.
    return [x,y]
}

此外,如果有人知道任何好的JS库,这些东西(等轴测图,显示相关的数学)会很方便。

2 个答案:

答案 0 :(得分:4)

使用soh cah toa:

sin(A) = o/h
cos(A) = a/h

因此:

x = hypotenuse*sin(angle) + origionX
y = hypotenuse*cos(angle) + origionY

通常更容易记住,一个轴是角度的正弦乘以长度,另一个是角度的余弦乘以长度。

编辑:

抱歉,我忘了添加原点。

答案 1 :(得分:3)

你走了:

function getLineEndCoords(originX, originY, hypotenuse, angle){
  return [originX+Math.cos(angle)*hypotenuse,originY-Math.sin(angle)*hypotenuse];
  }

上面的代码具有相对于右x轴的角度(如草图中所示)。例如,角度0将是时钟上的数字3。以弧度(90度)为单位的角度PI / 2将是12点钟。该函数还将坐标作为屏幕坐标返回,其中Y在您下降时增加,而不是在笛卡尔平面上增加。

请注意,javascript三角函数只接受弧度,而不接受度数。你的角度参数必须是弧度。以下是从度数转换为弧度的代码:

function deg2rad(deg){
  return deg*Math.PI/180;
  }