40 lines
924 B
Plaintext
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.
|