物体の干渉

前回は,フィールドの下(別の場所)に物体を並べていました.
では,このサンプルプログラムを実行してください.
今回はlibrobo.aではなく,librobo2.aを使って,

gcc main4.c -o main4 -L. -lrobo2 -lm -lpthread -lGL -lglut -lGLU

でコンパイルしてください.

これは,すでに一列に並んでいる物体を,同じ列に,半径の小さい順で横並びにするためのプログラムです.
しかし,物体を移動させる先に,すでに別の物体がある場合,物体を解放することができません.

練習

7個全ての物体を下 (y = -0.3) に退避させてから,中央 (y = 0.0) に半径の小さい順に物体を横並びにするプログラムを作成してください.
ただし,サンプルプログラムが実行しようとしていた整列と同様に,x軸に対してあまり隙間なく整列してください.
この作業の完了までにかかった時間を表示してください.

課題

練習プログラムを改良して,7個の物体を中央 (y = 0.0) に半径の小さい順に物体をなるべく早く整列できるプログラムを作成してください.
ただし,練習プログラム同様に,x軸に対してあまり隙間なく整列してください.
練習での作業時間と比較し,改良プログラムでどれだけ作業を高速化できたかを示してください.
(実行ごとに物体位置はランダムに変化しますので,それぞれのプログラムを10回程度実行した結果の平均で議論しましょう)

適宜コメントを入れたり,関数化したりして,他人にもわかりやすいプログラムになるように心がけてください.全くコメントのないものは減点します.
他人のプログラムを写したことが判明した場合は,両者とも0点になります.課題内容に対応していないプログラムにも点をつけません.

発展課題

中央(y=0.0)に,重量の小さい順に物体を横並びにするプログラムを作成してください.
できるだけ高速な整列を目指しましょう.

提出物

提出物一式を入れるフォルダの名前は学生番号にしてください(ログインIDではない!).

  • 課題プログラムファイル
  • 高速化のアイデアを書いたテキストファイル
  • 作業時間を比較したエクセルファイルなど(形式は自由)
  • 発展課題プログラムファイル(発展課題)
  • PBLの授業の感想を書いたテキストファイル(来年度の授業のために,忌憚のない率直な意見をお願いします.批判的な内容であっても減点は一切しません.)

提出期限

二週間後までに上記のフォルダをzipに圧縮したものをCLEで提出してください.

  • 1・2組:2/9
  • 3・4組:2/5

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2018-01-22 (月) 11:35:47 (89d)