このディレクトリの索引
#  http://oshiete.goo.ne.jp/qa/7474619.html
#  A,B,Cを使って直角三角形が成り立ち真となる関係right triangleを定義するプログラムを教えてください。今のところ
#  triangle(A,B,C).
#  vertical(seg(point(X,Y),point(X,Y1)).
#  horizontal(seg(point(X,Y),point(X1,Y)).
#  を使うところまではわかっているのですが先に進みません。


'A,B,Cを使って直角三角形が成り立ち真となる関係'(座標(A),座標(B),座標(C)) :-
        '三点の座標から辺の長さを得る'(A,B,C,_辺1,_辺2,_辺3),
        'A,B,Cを使って直角三角形が成り立ち真となる関係'(辺の長さ(_辺1),辺の長さ(_辺2),辺の長さ(_辺3)).
'A,B,Cを使って直角三角形が成り立ち真となる関係'(辺の長さ(A),辺の長さ(B),辺の長さ(C)) :-
        A > B,A > C,
        A * A =:= B * B + C * C,!.
'A,B,Cを使って直角三角形が成り立ち真となる関係'(辺の長さ(A),辺の長さ(B),辺の長さ(C)) :-
        B > A,B > C,
        'A,B,Cを使って直角三角形が成り立ち真となる関係'(辺の長さ(B),辺の長さ(A),辺の長さ(C)).
'A,B,Cを使って直角三角形が成り立ち真となる関係'(辺の長さ(A),辺の長さ(B),辺の長さ(C)) :-
        C > A,C > B,
        'A,B,Cを使って直角三角形が成り立ち真となる関係'(辺の長さ(C),辺の長さ(A),辺の長さ(B)).
'A,B,Cを使って直角三角形が成り立ち真となる関係'(ラジアン角度(A),辺の長さ(B),辺の長さ(C)) :-
        A is pi / 2,!.
'A,B,Cを使って直角三角形が成り立ち真となる関係'(辺の長さ(A),ラジアン角度(B),辺の長さ(C)) :-
        'A,B,Cを使って直角三角形が成り立ち真となる関係'(角度(B),辺の長さ(A),辺の長さ(C)).
'A,B,Cを使って直角三角形が成り立ち真となる関係'(辺の長さ(A),ラジアン角度(B),辺の角度(C)) :-
        'A,B,Cを使って直角三角形が成り立ち真となる関係'(角度(C),辺の長さ(A),辺の長さ(B)).
'A,B,Cを使って直角三角形が成り立ち真となる関係'(度数法角度(A),辺の長さ(B),辺の長さ(C)) :-
        180.0 is A * 1.0,!.
'A,B,Cを使って直角三角形が成り立ち真となる関係'(辺の長さ(A),度数法角度(B),辺の長さ(C)) :-
        'A,B,Cを使って直角三角形が成り立ち真となる関係'(度数法角度(B),辺の長さ(A),辺の長さ(C)).
'A,B,Cを使って直角三角形が成り立ち真となる関係'(辺の長さ(A),辺の長さ(B),度数法角度(C)) :-
        'A,B,Cを使って直角三角形が成り立ち真となる関係'(度数法角度(C),辺の長さ(A),辺の長さ(B)).

'三点の座標から辺の長さを得る'((X1,Y1),(X2,Y2),(X3,Y3),_辺1,_辺2,_辺3) :-
        _辺1 is sqrt((X1-X2) * (X1-X2) + (Y1-Y2) * (Y1-Y2)),
        _辺2 is sqrt((X1-X3) * (X1-X3) + (Y1-Y3) * (Y1-Y3)),
        _辺1 is sqrt((X2-X3) * (X2-X3) + (Y2-Y3) * (Y2-Y3)).