This repository has been archived on 2023-08-20. You can view files and clone it, but cannot push or open issues or pull requests.
yap-6.3/Logtalk/examples/poem/point2.lgt
2001-06-06 19:40:57 +00:00

40 lines
924 B
Plaintext

/* Points are going to be the fundamental quantity. */
/* These will be defined in Cartesian co-ordinates. */
:- object(point(_X, _Y)).
:- info([
authors is 'Paulo Moura',
version is 1.0,
date is 2000/4/22,
comment is 'Parametric object for representing geometric points.',
parnames is ['X', 'Y'],
source is 'Example adopted from the POEM system by Ben Staveley-Taylor.']).
:- public(identical/1).
:- mode(identical(+nonvar), one).
:- public(distance/2).
:- mode(distance(+nonvar, -number), one).
identical(point(X1, Y1)) :-
/* succeeds if the argument and owner points are the same. */
parameter(1, X),
parameter(2, Y),
X1 = X,
Y1 = Y.
distance(point(X1, Y1), Distance) :-
/* finds the distance between argument and owner points. */
parameter(1, X),
parameter(2, Y),
Distance is sqrt((X1-X)*(X1-X)+(Y1-Y)*(Y1-Y)).
:- end_object.