我们正在尝试定义一个Haskell函数,该函数给出坐标x,y给定起点(x0,y0),距起始坐标的距离,以及通过两个点的直线的斜率。有什么想法吗?
它可能会有
的签名 endPoint :: (Double, Double) -> double -> double -> (Double, Double)
如何在纸上执行此操作是使用距离公式(第二个点作为变量/未知数),然后为此新点提供x和y的某个比率,将该比率用作替换为点斜率公式,应该给出y和x中的一个,然后再将该值插入公式中,得到我们还没有的x和y。
从this question,我们可以做距离公式,但我们如何处理替换?在Haskell有可能吗?
答案 0 :(得分:2)
根据slope的定义,这个问题可以这样解决:
endPoint :: (Double, Double) -> Double -> Double -> (Double, Double)
endPoint (x0, y0) m d = (x0 + dx, y0 + dy)
where theta = atan m
dx = d * cos theta
dy = d * sin theta
这是一个关于点(2,8)和(3,20)的例子:
*Main> endPoint (2,8) 12 (sqrt $ 12 * 12 + 1)
(3.000000000000001,20.0)