こんにちは私はポイントがPrologを使って矩形上にあるかどうかを調べようとしています。ここで(ULX、ULY)は矩形の左上の点であり、(LRX、LRY)は矩形の右下の点であり、(X、Y)は形状上にあるかどうかを確認するための点です。ポイントが矩形上にあるかどうかを調べる
私はこれを試してみましたが、私はエラーを取得保管ケースにそれらを分離するので、私は疲れて
on(point2d(X,Y), rectangle(point2d(ULX, ULY), point2d(LRX, LRY))):-
URX is LRX,
URY is ULY,
LLX is ULX,
LLY is LRY,
%Checks if point is in area 1
(Y =:= ULY,
X > ULX,
X < URX)
;
%OR Checks if point is in area 2
(X =:= URX,
Y < URY,
Y > LRY)
;
%OR Checks if point is in area 4
(X =:= ULX,
Y < ULY,
Y > LLY)
;
%OR Checks if point is in area 3
(Y =:= LLY,
X > LLX,
X < LRX)
;
(X =:= ULX,
Y =:= ULY)
;
(X =:= URX,
Y =:= URY)
;
(X =:= LLX,
Y =:= LLY)
;
X =:= LRX,
Y =:= LRY.
(=:引数が十分にインスタンス化されていない:=/2)。しかし、点が四角形上にある場合、私は真の値に続いて偽を得ます。それが偽であれば、私はちょうど1つの偽の価値を得る。どんな助けでも大歓迎です。ありがとうございました。
%Checks if point is in area 1
on(point2d(X,Y), rectangle(point2d(ULX, ULY), point2d(LRX, _))):-
URX is LRX,
%URY is ULY,
%LLX is ULX,
%LLY is LRY,
Y =:= ULY,
X > ULX,
X < URX.
%OR Checks if point is in area 2
on(point2d(X,Y), rectangle(point2d(_, ULY), point2d(LRX, LRY))):-
URX is LRX,
URY is ULY,
%LLX is ULX,
%LLY is LRY,
X =:= URX,
Y < URY,
Y > LRY.
%OR Checks if point is in area 4
on(point2d(X,Y), rectangle(point2d(ULX, ULY), point2d(_, LRY))):-
%URX is LRX,
%URY is ULY,
%LLX is ULX,
LLY is LRY,
X =:= ULX,
Y < ULY,
Y > LLY.
%OR Checks if point is in area 3
on(point2d(X,Y), rectangle(point2d(ULX, _), point2d(LRX, LRY))):-
%URX is LRX,
%URY is ULY,
LLX is ULX,
LLY is LRY,
Y =:= LLY,
X > LLX,
X < LRX.
on(point2d(X,Y), rectangle(point2d(ULX, ULY), point2d(_, _))):-
% URX is LRX,
%URY is ULY,
%LLX is ULX,
%LLY is LRY,
X =:= ULX,
Y =:= ULY.
on(point2d(X,Y), rectangle(point2d(_, ULY), point2d(LRX, _))):-
URX is LRX,
URY is ULY,
%LLX is ULX,
%LLY is LRY,
X =:= URX,
Y =:= URY.
on(point2d(X,Y), rectangle(point2d(ULX, _), point2d(_, LRY))):-
%URX is LRX,
%URY is ULY,
LLX is ULX,
LLY is LRY,
X =:= LLX,
Y =:= LLY.
on(point2d(X,Y), rectangle(point2d(_, _), point2d(LRX, LRY))):-
% URX is LRX,
% URY is ULY,
% LLX is ULX,
%LLY is LRY,
X =:= LRX,
Y =:= LRY.
こんにちは@DanielLyonsありがとうございました。正方形が上の点と長さしか持たないという点を考慮すると、点が正方形にあるかどうかを調べるのを助けてください。 on(point2d(X、Y)、square(point2d(ULX、ULY)、L))のように。ありがとうございました – HGI