location(nadya, amsterdam).
location(andy, amsterdam).
location(ralf, leiden).
location(kurt, enschede).
location(timo, rotterdam).
location(elizabeth, evanston).
location(edoardo, leiden).


coordinates(denHaag,52.073,4.3052).
coordinates(rotterdam,51.920,4.4522).
coordinates(leiden,52.147,4.5016).
coordinates(haarlem,52.382,4.6354).
coordinates(alkmaar,52.632,4.7501).
coordinates(amsterdam,52.365,4.9104).
coordinates(utrecht,52.102,5.1077).
coordinates(eindhoven,51.436,5.4781).
coordinates(maastricht,50.845,5.6901).
coordinates(nijmegen,51.836,5.8584).
coordinates(enschede,52.222,6.9049).


intowns(You, Me):-
	location(You, Yours),
	location(Me, Mine),
	distance(Yours, Mine, X),
	X =< 100. % change this constant depending on how willing you are to travel.

distance(X, Y, Distance) :-
	coordinates(X, XLat1, XLong1),
	coordinates(Y, XLat2, XLong2),
	Lat1 is (XLat1 / 180) * pi, % this is radian/degrees conversion.
	Lat2 is (XLat2 / 180) * pi,
	Long1 is (XLong1 / 180) * pi,
	Long2 is (XLong2 / 180) * pi,
	Dlat is Lat2 - Lat1,
	Dlong is Long2 - Long1,
	A is sin(Dlat / 2) ** 2 + cos(Lat1) * cos(Lat2) * (sin(Dlong / 2) ** 2),
	C is 2 * atan(sqrt(A), sqrt(1-A)),
	Distance is 6367 * C.