課題B以降の課題ソースおよびリンク用オブジェクトなどは下記リンク先を参照されたい。 課題ソースおよびリンク用オブジェクトなど
〆切日 | 2009/11/02, 13:45(JST) |
提出先 | WebCT |
提出内容 | 下記のB-1,B-2の課題全て(余裕のある者は発展課題B-21,22,23に挑戦してよい) |
-----------
課題B-1(必修)
目標:課題A-1で作成したプログラムを、分割コンパイルできる形にする。
課題A-1において、
各人は
ベースプログラム(rd-animator-skeleton.c)
をもとにスクリプト読込プログラムを完成させているはずである。
これを、
ヘッダファイル、
大域変数のファイル、
および関数を種別にわけた3つのファイル、
の合計5つのソースファイルに分割し、分割コンパイルできるようにせよ。
ただし、ヘッダファイルは、
「型の定義(構造体の定義)」、
「大域変数の外部参照の宣言」、
「関数プロトタイプ」の3つのパートから構成されるようにすること。
残りの4ファイルについては、今回作成するヘッダファイルをincludeすること。
[コンパイル例]
$ gcc -Wall -c rd-animator-global.c
$ gcc -Wall -c rd-animator-data.c
$ gcc -Wall -c rd-animator-script.c
$ gcc -Wall -c rd-animator-main.c
$ gcc -o rd-animator-run rd-animator-global.o rd-animator-data.o rd-animator-script.o rd-animator-main.o
提出物:
以下のファイルを下記のようにzipにしてまとめたうえでB-1.zipを提出すること。
$ zip B-1.zip rd-animator-common.h rd-animator-global.c rd-animator-data.c rd-animator-script.c rd-animator-main.c shortscript034k-result.txt
項目 | ファイル名 | 注意点 |
B-1-1 | rd-animator-common.h | ヘッダファイル |
B-1-2 | rd-animator-global.c | 大域変数ファイル |
B-1-3 | rd-animator-data.c | データ構造体の操作関連の関数 |
B-1-4 | rd-animator-script.c | スクリプトファイルからの読み込み関連の関数 |
B-1-5 | rd-animator-main.c | メイン関数 |
B-1-6 | shortscript034k-result.txt | (サンプルスクリプト034kを読み込んだ結果を保存したテキストファイル) |
-----------
課題B-2(必修)
目標:課題B-1で作成した分割プログラムソースを、他の分割ソースと組み合わせることでCG表示を行う。
[コンパイル例]
$ gcc -Wall -c rd-animator-data.c
$ gcc -Wall -c rd-animator-script.c
$ gcc -o Animator-runB2
fl-animator-global.o
rd-animator-data.o
rd-animator-script.o
fl-animator-geomextra.o
fl-animator-geom.o
fl-animator-drawprimitive.o
fl-animator-drawextra.o
fl-animator-drawcore.o
fl-animator-callback.o
fl-animator-initgl.o
fl-animator-main.o
-lglut -lm
提出物:
以下のファイルを下記のようにzipにしてまとめたうえでB-2.zipを提出すること。
$ zip B-2.zip rd-animator-data.c rd-animator-script.c Animator-runB2
項目 | ファイル名 | 注意点 |
B-2-1 | rd-animator-data.c | B-2の変更を行ったもの |
B-2-2 | rd-animator-script.c | B-2の変更を行ったもの |
B-2-3 | Animator-runB2 | 生成した実行バイナリファイル |
-----------
課題B-21(発展)
目標:物体の線分数と面数の数え上げ
課題A-1において利用した ベースプログラム(rd-animator-skeleton.c) に基づいてスクリプトを読み込んだとき、 各物体における線分の数とパッチ面の数を表示できるようにせよ。 表示は標準出力でよい。
提出物:
以下のファイルを下記のようにzipにしてまとめたうえでB-21.zipを提出すること。
$ zip B-21.zip rd-animator-skeleton.c shortscript025-result.txt
項目 | ファイル名 | 注意点 |
B-21-1 | 数え上げをできるようにしたプログラムソース | 単一ファイルソースで提出。 |
B-21-2 | shortscript025-result.txt | サンプルスクリプト025を読み込んだ結果を保存したテキストファイル |
-----------
課題B-22(発展)
目標:課題A-1で作成したプログラムにおける、外部仕様の拡張
課題A-1において利用した
ベースプログラム(rd-animator-skeleton.c)
に基づいてスクリプト読込プログラムを行うと、
外部仕様における
"C: [animation Contnued]"において、ObjectIDが0の場合にはどのようなことが起こるか。
該当するプログラムソース部分を示して説明せよ。(B-22-1)
外部仕様における
"C: [animation Contnued]"において、ObjectIDが0の場合は
「その直前のanimation(AないしC)のObjectIDを引き続き利用するものとする」という
仕様に変更することを考える。
この仕様に沿ったプログラム変更を実施し、
shortscript025b.txtを用いてその変更を確認せよ。
提出物:
以下のファイルを下記のようにzipにしてまとめたうえでB-22.zipを提出すること。
$ zip B-22.zip B-22-1.txt rd-animator-skeleton.c
項目 | ファイル名 | 注意点 |
B-22-1 | B-22-1.txt(テキストファイル) | 該当するソース(一部抜粋でよい)と説明 |
B-22-2 | 仕様を変更したスクリプト読込プログラムソース | 単一ソースファイルで提出。 |
-----------
課題B-23(発展)
目標:Callback関数の設定を自分で行う
st-animator-callback.c,
st-animator-main.c
の2つのプログラムソースはCallback関数が設定されていないため、そのままでは健全に動かない。
そこで、これらにCallback関数を正しく設定し、
この2ファイルについてもオブジェクトファイルを自分のものと置き換えて実行ファイルを生成せよ。
[コンパイル例]
$ gcc -Wall -c st-animator-callback.c
$ gcc -Wall -c st-animator-main.c
$ gcc -o Animator-runB23
fl-animator-global.o
rd-animator-data.o
rd-animator-script.o
fl-animator-geomextra.o
fl-animator-geom.o
fl-animator-drawprimitive.o
fl-animator-drawextra.o
fl-animator-drawcore.o
st-animator-callback.o
fl-animator-initgl.o
st-animator-main.o
-lglut -lm
提出物:
以下のファイルを下記のようにzipにしてまとめたうえでB-23.zipを提出すること。
$ zip B-23.zip st-animator-callback.c st-animator-main.c Animator-runB23
項目 | ファイル名 | 注意点 |
B-23-1 | st-animator-callback.c | B-23の変更を行ったもの |
B-23-2 | st-animator-main.c | B-23の変更を行ったもの |
B-23-3 | Animator-runB23 | 生成した実行バイナリファイル |