このディレクトリの索引

http://pc12.2ch.net/test/read.cgi/tech/1255709298/389
#  四角形の頂点が全て、三角形の内側にある事。 

四角形の頂点が全て、三角形の内側にある(_四角形X1,_四角形Y1,_四角形X2,_四角形Y2,_四角形X3,_四角形Y3,_四角形X4,_四角形Y4,X1,Y1,X2,Y2,X3,Y3) :-
    三角形による包含判定(_四角形のX1,_四角形のY1,X1,Y1,X2,Y2,X3,Y3),
    三角形による包含判定(_四角形のX2,_四角形のY2,X1,Y1,X2,Y2,X3,Y3),
    三角形による包含判定(_四角形のX3,_四角形のY3,X1,Y1,X2,Y2,X3,Y3),
    三角形による包含判定(_四角形のX4,_四角形のY4,X1,Y1,X2,Y2,X3,Y3).

三角形による包含判定(PのX座標,PのY座標,X1,Y1,X2,Y2,X3,Y3) :-
    _中心X座標 is (X1+X2+X3) / 3,
    _中心Y座標 is (Y1+Y2+Y3) / 3,
    それぞれ2点を通る2直線が交差しない(PのX座標,PのY座標,_中心X座標,_中心Y座標,X1,Y1,X2,Y2),
    それぞれ2点を通る2直線が交差しない(PのX座標,PのY座標,_中心X座標,_中心Y座標,X1,Y1,X3,Y3),
    それぞれ2点を通る2直線が交差しない(PのX座標,PのY座標,_中心X座標,_中心Y座標,X2,Y2,X3,Y3).

それぞれ2点を通る2直線が交差しない(X1,Y1,X2,Y2,X3,Y3,X4,Y4) :-
    U1 is (X1-X2)*(Y3-Y1)+(Y1-Y2)*(X1-X3),
    U2 is (X1-X2)*(Y4-Y1)+(Y1-Y2)*(X1-X4),
    U is U1 * U2,
    U >= 0.

それぞれ2点を通る2直線が交差する(X1,Y1,X2,Y2,X3,Y3,X4,Y4) :-
    U1 is (X1-X2)*(Y3-Y1)+(Y1-Y2)*(X1-X3),
    U2 is (X1-X2)*(Y4-Y1)+(Y1-Y2)*(X1-X4),
    U is U1 * U2,
    U < 0.