在prolog中将度数和分钟转换为弧度

时间:2017-12-05 06:47:09

标签: prolog

假设我的事实定义如下,

airport(atl, 'Atlanta ', degmin(33,39 ), degmin(84,25 ) ).

我希望将degmin转换为弧度。这是我的尝试:

toRadians(Source, LatRad, LongRad) :-
        airport(Source, _, degmin(X_1, Y_1 ), degmin(X_2, Y_2)),
        radians(X_1,Y_1,res),
        radians(X_2,Y_2,res2),
        LatRad is res, LongRad is res2.    
radians(Deg,Min,res) :- res is (Deg + Min/60).

然而,当我运行它时,我得到了这个。

?- toRadians(atl,Lat,Long).
false.

我期待像

这样的东西
 ?- toRadians(atl,Lat,Long).
    Lat = some number
    Long = some number
    True.

出了什么问题?

1 个答案:

答案 0 :(得分:1)

这是你的程序更正:

airport(atl, 'Atlanta ', degmin(33,39 ), degmin(84,25 ) ).

toRadians(Source, LatRad, LongRad) :-
        airport(Source, _, degmin(X_1, Y_1 ), degmin(X_2, Y_2)),
        radians(X_1,Y_1,Res),
        radians(X_2,Y_2,Res2),
        LatRad is Res, LongRad is Res2.    
radians(Deg,Min,Res) :- Res is (Deg + Min/60).

?-toRadians(atl,Lat,Long).
Lat = 33.65,
Long = 84.41666666666667

(我不知道这是否是您想要获得的价值)。无论如何,问题来自这样一个事实,例如,你用大写字母R写了res而不是Res。这很重要,因为在prolog变量中必须用一个大写字母作为第一个字母,请阅读this