今回の内容
- 演習10.1: 顔を描画する関数(drawFace3)の作成
- 演習10.2: 構造体を利用するための準備
- 課題10.1: 構造体を利用した顔の描画
- 課題10.2: 自由作成
各課題に取り組む手順
- まず自力でプログラムを書いてみる. 間違っていても構わない.教科書やWeb上のリファレンスを見ても構わない.
- ひととおり入力を終えたら,ビルドする前にソースをレポートに貼り付けておく.
- ビルドする.ビルドエラーをレポートに貼り付けておく.
- エラーを取り除き,正しく動作するプログラムを作成する.
- 自力で考えた限界のソースコードをレポートに貼り付けておく.
- 友人と相談した場合,誰と相談したか,また,相談した結果気がついた間違いをレポートに記述する.
- 完成版のソースコード,および,実行結果の画像をレポートに貼り付ける.
[準備]
[演習10.1]
- 第6回(グラフィック3 (複雑な描画))で行った顔の描画(drawFace())を参考にして,以下を作成する.
- 関数drawFace3()


実行結果

- うまく動かないときは,つぎを確認する.
- - #include が含まれているか.
- - ソースコードに以下の関数が含まれているか.
void drawCircle(double pos_x, double pos_y, double *color, double radius, int startAngle, int endAngle)
void drawFace3(int type)
void display(void)
void init(void)
int main(int argc, char* argv[])
[演習10.2]

そうすると、眉(左)は、
pos_0 = posGiven[0];
sing1 = -1.0;
size = 0.3;
param1 = 0.3;
pos_1 = posGiven[1];
sing2 = 1.0;
param2 = 0.4;
color = color_f
param3 = 0.1;
startangle = 0;
endangle = 180;
上記の左辺が構造体メンバとなるような構造体 face を考えてみよう
typedef struct {
double pos_0; // 位置x座標
double pos_1; // 位置y座標
double size; // サイズ
double sign1; // 符号
double sign2; // 符号
double param1; // パラメータ1
double param2; // パラメータ2
double param3; // パラメータ3
double color[3];// カラー
int startangle;// 円の開始角度
int endangle; // 円の終了角度
} face;
ここでは、typedef宣言を利用し、構造体の宣言と同時にその構造体をface型としている
[課題10.1]
以上を踏まえて、演習10.1と同じ結果になるプログラムを構造体を用いて書いてみよう。

- drawCircle()関数
- - drawCircle()関数の引数が"face fval"となるようにdrawCircle()関数の中身を書き換える。(fvalは変数名)


- それ以外の関数
- - void init(void)
- - void display(void)
- - int main(int argc, char* argv[])
- 上の3つの関数は、演習10.1のコードと変更はない
[課題10.2] (応用)
課題10.1では、face型の構造体変数をそれぞれ
brow_left, brow_right, eye_left, eye_right, nose, mouth_t0, mouth_t1, faceline
という変数名で作成した。これらの変数を構造体配列にしたプログラムに書き直してみよう。
構造体配列へのデータの格納の順序は、基本的には上記の構造体変数の順序とするが、異なっていてもよい。
レポート
- 提出先・期限
- https://www.kagoshima-u.ac.jp/manaba/の「プログラミング言語I及び演習」のレポートより提出
- 演習当日の23:55まで
- 内容
- Microsoft Wordを用いてレポートを作成すること.
下記について記述すること.
- 演習10.1 (ビルド前のソース,最初のビルドで見つかったエラーの一覧,自力で考えた限界のソースコード,最終ソースコード,実行結果の画像)
- 演習10.2 (構造体の宣言を追加したソースコード)
- 課題10.1 (ビルド前のソース,最初のビルドで見つかったエラーの一覧,自力で考えた限界のソースコード,最終ソースコード,実行結果の画像)
- 課題10.2 (ビルド前のソース,最初のビルドで見つかったエラーの一覧,自力で考えた限界のソースコード,最終ソースコード,実行結果の画像)
- 結論(今回の演習を通じて学んだことについて''客観的かつ具体的に''述べる.)
- 所感(感想や意見などを自由に書いてよい.)
- 提出ファイル
- Wordファイルにソースコードやキャプチャした実行画面などを貼り付けてmanabaのレポートから提出すること.
- (*.cファイルを送る必要はありません。)
- テンプレート等(Word)
- Word表紙 (回数やタイトルなどを適宜修正して使うこと.)