在javascript中,我试图绘制一条与用户定义角度相符的线。
基本上,我有一个点(x,y)和一个角度来创建下一个点。线的长度需要为10px。
让我们说开始的点是(180,200)...如果我给它角度“A”并且(我猜)斜边是10,我的等式是什么来得到X和Y是斜坡?
感谢您的帮助!
答案 0 :(得分:7)
sin A°= Y / 10
cos A°= X / 10
10 ^ 2 = Y ^ 2 + X ^ 2
答案 1 :(得分:3)
正如多伊尔先生所暗示的那样,数学并不那么难,但是:
1)确保你清楚角度的参考内容以及坐标的方向;大多数简单的触发器假设你正在处理传统的笛卡尔坐标,x向右增加,y增加页面,而大多数绘图api的页面向下增加,x增加到右边。
2)确保你理解数学函数是否需要度数或弧度,并为它们提供适当的参数。
答案 2 :(得分:2)
假设H =斜边(在你的例子中是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))
答案 3 :(得分:1)
查看问题的更好方法是使用向量:
(来源:equationsheet.com)
你也可以这样写矢量:
(来源:equationsheet.com)
其中
(来源:equationsheet.com)
将第一个设置为等于第二个让我们在给定起点,角度和距离的情况下求解终点:
(来源:equationsheet.com)
(来源:equationsheet.com)