2

在javascript中,我试图绘制一条用户定义的角度线。

基本上,我有一个点 (x,y) 和一个角度来创建下一个点。线的长度需要为 10px。

假设开始点是 (180, 200)...如果我给它角度“A”并且(我猜)斜边是 10,那么我的方程是什么来获得 X 和 Y斜坡?

谢谢你的帮助!

4

4 回答 4

7

好吧,从基本的三角学...

正弦 A° = Y/10

cos A° = X/10

10^2 = Y^2 + X^2

于 2009-11-30T18:05:14.077 回答
3

正如多伊尔先生尖刻暗示的那样,数学并不难,但是:

1)确保您清楚参考角度以及坐标的方向;最简单的三角函数假设您正在处理传统的笛卡尔坐标,其中 x 向右增加,y 向上增加页面,而大多数绘图 api y 向下增加页面,x 向右增加。

2)确保您了解数学函数是否需要度数或弧度,并为它们提供适当的参数。

于 2009-11-30T18:06:44.360 回答
2

假设 H = Hypotenuse(在您的示例中为 10),这是您的斜率公式:

Y2 = H(Sin(A)) + Y1
   = 10(Sin(A)) + 200

X2 = Sqrt((H^2)-(Y2^2)) + X1
   = Sqrt(100 - (Y2^2)) + 180

所以现在你有了

(180, 200) -> (X2, Y2)

其中 X2、Y2 将根据 A 和 H 的值而变化

要检查我们的计算 - 可以使用斜率方程计算 A(由用户输入),将 X1、X2、Y1 和 Y2 值替换为原始输入和结果输出。

A = InvTan((Y2 - Y1) / (X2 - X1))
  = InvTan((Y2 - 200) / (X2 - 180))
于 2009-11-30T18:41:38.097 回答
1

也许一个更好的方式来看待这个问题是使用向量:

替代文字
(来源:equationsheet.com

你也可以这样写向量:

替代文字
(来源:equationsheet.com

在哪里

替代文字
(来源:equationsheet.com

设置第一个等于第二个让我们在给定起点、角度和距离的情况下求解终点:

替代文字
(来源:equationsheet.com

替代文字
(来源:equationsheet.com

于 2009-12-01T02:22:46.397 回答