在javascript中,我试图绘制一条用户定义的角度线。
基本上,我有一个点 (x,y) 和一个角度来创建下一个点。线的长度需要为 10px。
假设开始点是 (180, 200)...如果我给它角度“A”并且(我猜)斜边是 10,那么我的方程是什么来获得 X 和 Y斜坡?
谢谢你的帮助!
在javascript中,我试图绘制一条用户定义的角度线。
基本上,我有一个点 (x,y) 和一个角度来创建下一个点。线的长度需要为 10px。
假设开始点是 (180, 200)...如果我给它角度“A”并且(我猜)斜边是 10,那么我的方程是什么来获得 X 和 Y斜坡?
谢谢你的帮助!
好吧,从基本的三角学...
正弦 A° = Y/10
cos A° = X/10
10^2 = Y^2 + X^2
正如多伊尔先生尖刻暗示的那样,数学并不难,但是:
1)确保您清楚参考角度以及坐标的方向;最简单的三角函数假设您正在处理传统的笛卡尔坐标,其中 x 向右增加,y 向上增加页面,而大多数绘图 api y 向下增加页面,x 向右增加。
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))
也许一个更好的方式来看待这个问题是使用向量:
(来源:equationsheet.com)
你也可以这样写向量:
(来源:equationsheet.com)
在哪里
(来源:equationsheet.com)
设置第一个等于第二个让我们在给定起点、角度和距离的情况下求解终点:
(来源:equationsheet.com)
(来源:equationsheet.com)