このディレクトリの索引
http://toro.2ch.net/test/read.cgi/tech/1337692704/242
#  【課題】http://www.dotup.org/uploda/www.dotup.org3205225.txt.html 
#  【形態】1. Javaアプリケーション(main()で開始) 
#  【GUI】4. 制限なし 
#  【期限】提出期限:7月18日 20時まで 
#  【Ver】java version "1.7.0_03 
#    よろしくお願いします。  
# 
# 
#  
#  1.線分オブジェクトを定義
#  
#  二点 (Point) を両端とする線分 (LineSegment) のクラスを定義する
#  
#  a1. フィールド : (Point型) p1, p2
#  LineSegment オブジェクトを生成した直後では,
#  p1, p2 フィールドは null であることに注意
#  a2. 線分の長さを得るメソッド getLength() を定義する。
#  引数無し,戻り値の型はdouble
#  
#  
#  2.長方形オブジェクトを定義
#  
#  左上隅と右下隅の二点 (Point) で与えられる長方形 (Rectangle) のクラスを定義する
#  
#  フィールド : (Point型) top_left, bottom_right
#  次のメソッドを定義し,実行する。
#  
#  a: 面積を求める double getArea()
#  
#  b: 周囲の長さを求める int getPerimeter()
#  
#  c: ある点が内部に含まれるかどうかを調べる
#      boolean isAround(Point p)   
#  
#  複数課題で申し訳ありませんがよろしくお願いします。

線分の定義(_識別子,_X座標_1,_Y座標_1,_X座標_2,_Y座標_2) :-
        assertz(線分(_識別子,X座標_1,_X座標_1)),
        assertz(線分(_識別子,Y座標_1,_Y座標_1)),
        assertz(線分(_識別子,X座標_2,_X座標_2)),
        assertz(線分(_識別子,Y座標_2,_Y座標_2)).

線分の長さを得る(_識別子,_線分の長さ) :-
        二つの端点の座標を得る(_識別子,_X座標_1,_Y座標_1,_X座標_2,_Y座標_2),
        _線分の長さ is sqrt((_X座標_2-_X座標_1) * (_X座標_2-_X座標_1) + (_Y座標_2-_Y座標_1) * (_Y座標_2-_Y座標_1)).

二つの端点の座標を得る(_識別子,_X座標_1,_Y座標_1,_X座標_2,_Y座標_2) :-
        線分(_識別子,X座標_1,_X座標_1),
        線分(_識別子,Y座標_1,_Y座標_1),
        線分(_識別子,X座標_2,_X座標_2),
        線分(_識別子,Y座標_2,_Y座標_2).

長方形の定義(_識別子,_左上隅のX座標,_左上隅のY座標,_右下隅のX座標,_右下隅のY座標) :-
        assertz(長方形(_識別子,左上隅のX座標,_左上隅のX座標)),
        assertz(長方形(_識別子,左上隅のX座標,_左上隅のY座標)),
        assertz(長方形(_識別子,右下隅のX座標,_右下隅のX座標)),
        assertz(長方形(_識別子,右下隅のX座標,_右下隅のY座標)).

長方形の面積を求める(_識別子,_長方形の面積) :-
        左上隅と右下隅の座標を得る(_識別子,_左上隅のX座標,_左上隅のY座標,_右下隅のX座標,_右下隅のY座標),
        _長方形の面積 is abs(_右下隅のX座標-_左上隅のX座標) * abs(_右下隅のY座標-_左上隅のY座標).

左上隅と右下隅の座標を得る(_識別子,_左上隅のX座標,_左上隅のY座標,_右下隅のX座標,_右下隅のY座標) :-
        長方形(_識別子,左上隅のX座標,_左上隅のX座標),
        長方形(_識別子,左上隅のX座標,_左上隅のY座標),
        長方形(_識別子,右下隅のX座標,_右下隅のX座標),
        長方形(_識別子,右下隅のX座標,_右下隅のY座標).

周囲の長さを求める(_識別子,_周囲の長さ) :-
        辺の長さを得る(_識別子,_辺の長さ_1,_辺の長さ_2,_辺の長さ_3,_辺の長さ_4),
        _周囲の長さ is _辺の長さ_1 + _辺の長さ_2 + _辺の長さ_3 + _辺の長さ_4.

辺の長さを得る(_識別子,_辺の長さ_1,_辺の長さ_2,_辺の長さ_3,_辺の長さ_4) :-
        左上隅と右下隅の座標を得る(_識別子,_左上隅のX座標,_左上隅のY座標,_右下隅のX座標,_右下隅のY座標),
        _辺の長さ_1 is abs(_右下隅のX座標-_左上隅のX座標),
        _辺の長さ_2 = _辺の長さ_1,
        _辺の長さ_3 is abs(_右下隅のY座標-_左上隅のY座標),
        _辺の長さ_4 = _辺の長さ_3.

ある点が内部に含まれるかどうかを調べる(_識別子,_ある点のX座標,_ある点のY座標) :-
        左上隅と右下隅の座標を得る(_識別子,_左上隅のX座標,_左上隅のY座標,_右下隅のX座標,_右下隅のY座標),
        _ある点のX座標 >= _左上隅のX座標,
        _ある点のX座標 =< _右下隅のX座標,
        _ある点のY座標 =< _左上隅のY座標,
        _ある点のY座標 >= _右下隅のY座標.