2016-10-02 91 views
0

我们试图定义一个Haskell函数,该函数给出坐标x,y的给定起点(x0,y0),起始坐标的距离以及经过这两个点的直线的斜率。有任何想法吗?如何找到离斜坡m上给定点d距离的xy坐标?

这将可能有

endPoint :: (Double, Double) -> double -> double -> (Double, Double)

签名,你会怎么做这在纸面上是使用距离公式(与第二点作为变量/未知),然后给你一些比对于这个新点的x和y,使用该比例代入点斜率公式,它应该给出y和x之一,然后再将该值插入公式中以获得x和y我们不会还没。

this question,我们可以做距离公式,但我们该如何处理替代? Haskell有可能吗?

+5

这听起来像是一个数学问题。用纸和铅笔解决,并将结果插入到程序中,通过适当的变量进行参数化。 – dfeuer

+1

此问题没有独特的解决方案;它总是有两个解决方案。你将如何选择使用哪一个? – Cirdec

回答

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) 
+0

这正是我所需要的,谢谢! –