このディレクトリの索引
http://toro.2ch.net/test/read.cgi/tech/1325685876/349
#  【質問テンプレ】 
#  [1] 授業単元:プログラミング演習 
#  [2] 問題文(含コード&リンク): 
#  その物体を構成している三角形のそれぞれの辺の中点をとって一個の三角形を四つに分割し、新しい三角形の配列に加えていくプログラムを作れ。 
#  (頂点の配列に、新しくできた中点の座標を加えていく。 
#  そしてそれを加えられた頂点の配列から3つずつ選び新しい三角形を構成する配列を作る。) 
#  

'その物体を構成している三角形のそれぞれの辺の中点をとって一個の三角形を四つに分割し、新しい三角形の配列に加えていく'([_三角形の頂点ならび|R1],_新しい三角形の構成) :-
        四つの三角形(_三角形の頂点ならび,_新しい三角形の構成,R2),
        'その物体を構成している三角形のそれぞれの辺の中点をとって一個の三角形を四つに分割し、新しい三角形の配列に加えていく'(R1,R2),!.
'その物体を構成している三角形のそれぞれの辺の中点をとって一個の三角形を四つに分割し、新しい三角形の配列に加えていく'([],[]).

四つの三角形([[X1,Y1],[X2,Y2],[X3,Y3]],[[[X1,Y1],[_x1,_y1],[_x2,_y2]],[[X2,Y2],[_x1,_y1],[_x3,_y3]],[[X3,Y3],[_x3,_y3],[_x1,_y1]],[[_x1,_y1],[_x2,_y2],[_x3,_y3]]|R2],R2) :-
        _x1 is (X1+X2) / 2,
        _y1 is (Y1+Y2) / 2,
        _x2 is (X1+X3) / 2,
        _y2 is (Y1+Y3) / 2,
        _x3 is (X2+X3) / 2,
        _y3 is (Y2+Y3) / 2.