このディレクトリの索引
http://toro.2ch.net/test/read.cgi/tech/1337692704/19
#  【 課題 】初期位置 (X0, Y0) からx方向、y方向に初速度 (A, B) で物体を投げたとき、
#        y=0となるまでの物体の軌跡を出力するプログラムを作成しなさい。
#        プログラムは複数のクラスを定義して作成すること。
#  【 形態 】1. Javaアプリケーション(main()で開始) 
#  【 GUI  】制限なし 
#  【 期限 】6/24 
#  【 Ver  】java version "1.7.0_02"

'初速_vx0,_t秒後の_x座標'(_x0,_vx0,_t,_x) :-
        _x is _vx0 * _t + _x0.

'初速_vy0,_t秒後の_y座標'(_y0,_vy0,_t,_y) :-
        _y is _vy0 * _t - (9.8 * _t * _t) / 2 + _y0.

'初期位置 (X0, Y0) からx方向、y方向に初速度 (A, B) で物体を投げたとき、y=0となるまでの物体の軌跡を出力する'(_X0,_Y0,_A,_B) :-
        '初期位置 (X0, Y0) からx方向、y方向に初速度 (A, B) で物体を投げたとき、y=0となるまでの物体の軌跡を出力する'(0,0,0,_A,_B,_x,_y,L1),
        座標位置置換(100,100,L1,L2),
        物体の軌跡を出力する(L2).

'初期位置 (X0, Y0) からx方向、y方向に初速度 (A, B) で物体を投げたとき、y=0となるまでの物体の軌跡を出力する'(_,_X0,_Y0,_A,_B,_x,_y,[]) :-
        _y < 0,!.
'初期位置 (X0, Y0) からx方向、y方向に初速度 (A, B) で物体を投げたとき、y=0となるまでの物体の軌跡を出力する'(_t,_X0,_Y0,_A,_B,_x,_y,[[_x,_y]|R]) :-
        _t_2 is _t + 0.01,
        '初速_vx0,_t秒後の_x座標'(_X0,_A,_t_2,_x_2),        
        '初速_vy0,_t秒後の_y座標'(_Y0,_B,_t_2,_y_2),
        '初期位置 (X0, Y0) からx方向、y方向に初速度 (A, B) で物体を投げたとき、y=0となるまでの物体の軌跡を出力する'(_t,_X0,_Y0,_A,_B,_x_2,_y_2,R).


座標位置置換(_,_,[],[]).
座標位置置換(_x変位,_y変位,[[_x_1,_y_1]|R1],[_x_2,_y_2|R2]) :-
        _x_2 is _x_1 + _x変位,
        _y_2 is _y_1 + _y変位,
        座標位置置換(_x変位,_y変位,R1,R2).

物体の軌跡を出力する(L) :-
        newpage,
        moveto(100,100),
        setlinewith(1),
        curveto(L),
        stroke,
        showpage.