2016-10-02 1 views
0

Nous essayons de définir une fonction de Haskell qui donne les coordonnées x, y en fonction d'un point de départ (x0, y0), de la distance du coordon de départ et de la pente de la ligne traversant les deux points. Des idées?Comment trouver une coordonnée x y distante d'un point donné de la pente m?

Il aura probablement une signature de

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

Comment vous faire sur le papier est d'utiliser la formule de distance (avec le second point en tant que variables/inconnues), ce qui vous donne un certain rapport des x et y pour ce nouveau point, utilisez ce rapport comme substitution dans la formule point-pente, ce qui devrait donner un de y et x, puis branchez à nouveau cette valeur dans la formule pour obtenir le x et le y nous ne le faisons pas avoir encore. De this question, nous pouvons faire la formule de la distance, mais comment pouvons-nous faire face à la substitution? Est-ce possible à Haskell?

+5

Cela ressemble à un problème de maths. Résolvez-le avec du papier et un crayon et branchez le résultat dans votre programme, paramétré par toutes les variables appropriées. – dfeuer

+1

Ce problème n'a pas une solution unique; il a toujours deux solutions. Comment allez-vous choisir lequel utiliser? – Cirdec

Répondre

2

Selon la définition de slope, ce problème pourrait être résolu comme ceci:

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 

Voici un exemple autour du point (2,8) et (3,20):

*Main> endPoint (2,8) 12 (sqrt $ 12 * 12 + 1) 
(3.000000000000001,20.0) 
+0

c'est exactement ce dont j'avais besoin, merci! –