2002年度Iコース課題


プログラミング

課題1:java-1

RGBの加色混合の図をfillArcを使って描きなさい。

ヒント:

1つは、3つの円について、各円の円弧が、別の円の中心を通るように設計すると、fillArcを使って塗りつぶせるということです。たとえば、下の2つの円については、例えば次のように、重ね合わせます。

gc.fillOval( 50, 200, 100, 100 );
// 色を変えてから
gc.fillOval( 100, 200, 100, 100 );

そうすれば、その間の重なった部分を、各円を中心とする120度の2つの円弧を描くことによって塗りつぶせます。

gc.fillArc( 50, 200, 100, 100, 300, 120 );
gc.fillArc( 100, 200, 100, 100, 120, 120 );

次に、それぞれの3つの円の中心を考えます。それらの座標を、(x1,y1)、(x2,y2)、(x3,y3)と仮に 変数で考えておきます。ここで、(x1, y1)は、青の上に突出した円、 (x2,y2)が左側の緑の円、(x3,y3)が右側の赤の円のそれぞれ中心の座標だと思ってください。
そうしますと、これらの中心は、正三角形を形成していることがわかります。 ですから、高さは、底辺のルート3/2である、つまり底辺の半分の大きさに、 ルート3を掛けたものであると言えます。よって、(x2,y2)と(x3,y3)から、 (x1,y1)の位置が求められます。

x1 = (x2 + x3 ) / 2;
y1 = y2 - (int)((x3 - x2 ) / 2 * 1.7320508);

ただし、円や弧を描くときは、中心ではなく、内接する四角形の左上の頂点の座標になりますから、半径r分だけを引く必要があります。 この計算は、プログラムでやるもよし、自分で手計算でやっても構いません。 さて、角度ですが、Cyan、Yellow、Magentaの部分は、120度の角度差で、 それぞれ重なる2つの円弧として塗りつぶせばよいし、Whiteは、60度の 角度差で、重なる3つの円弧として塗りつぶせばよいことがわかります。

課題2:java-2

教科書の課題の6−2。ただし、10段で、一番右側の四角は赤色表示してください。

課題3:java-3

教科書のP113ページのカラーテーブルを、文字列"Hello,Macintosh!"を表示する形に変えてみなさい。以下に、SansSerifフォントのボールド体、30ポイントで、赤と青を入れ替えた形のアプレットビューワで表示した例を示します。教科書にしたがって、横に青を、縦に赤を変化させなさい。また、フォントは、Serifフォントの、イタリック体で、24ポイントぐらいで表示させなさい。

 

ヒント:まず、変数red、blue以外に文字列の何番目かをカウントするための変数を用意します。仮にiとしましょう。なお、文字列は、最初の文字は0番目ですので、注意してください。まずは、外側の繰返しの内側で、int red=0;の後に、以下のような代入をしておいてください。

int i=0; // 0番目の文字から始めます

予め、フォントがセットされており、変数fmにフォント情報(フォントメトリックス)のオブジェクトが入っているとします。内側の繰返しで、以下のように記述すると、i番目までの文字までの文字列の幅が計算されます。substringについては、教科書のP260を読んで理解してください。

int w;
w = fm.stringWidth( "Hello,Maintosh!".substring( 0, i ) );

次に、表示させるときに、この文字列の幅を利用して、表示させます。i番目の文字だけを表示させたいときは、同じようにsubstringを利用します。内側の繰返しで、以下の部分を、fillRectのかわりにいれてやるとよいでしょう。

gc.drawString( "Hello,Maintosh!".substring( i, i+1 ), x座標, y座標 );

x座標には、先程のwの値を用いて、適切な式を入れなさい。また、y 座標も教科書P113のカラーテーブルの例から、24ポイントがはいるような形で、適切な式を考えなさい。また内側の繰返しで、red += 16;となっているように、変数iの値も1つずつ増やしていきます。

課題4:java-4

ボタンが押されたら、時間が更新されるようにするアプレットを作る。

課題5:java-5

教科書の9-2

課題6:java-6

1995年1月1日は、日曜日である。1995年以降の指定した年月日(変数などに代入して指定する)の曜日を求めるアプリケーションを作れ。

ヒント:うるう年であるかどうか注意しながらを、1995年から指定した年の前年までを足し合わせていく(365あるいは366)。その後に、その年の指定された月日が、何日目であるかを足していく。このときに、3月以降の場合はうるう年かどうかをチェックする。また、その月の手前まで、大の月、小の月に注意しながら足し合わせていく。全体を足せば、1995年1月1日から、その日が何日目であるかを調べることができる。その数を7で割った余りを求める。この余りの値が、0であれば日曜日、1であれば月曜日…6であれば土曜日ということになる。

課題7:java-7

教科書の11-2

ヒント:格子の中の色は一定なので、たとえばx座標から青色成分を算出するには、整数除算と掛け算を利用する。

int blue = (x -30) / 16 * 16;   //  16で割ることによって、半端な成分を切り捨てることになる

課題8:java-8

Design Conceptの資料を参考にして、ベジェ曲線を描画するアプレットを作成しなさい。

課題9:java-9

教科書の13-2。ただし、縦棒グラフで出力すること。また、発生させる乱数の範囲は、1〜100の範囲で発生させること。

ヒント:最初のfor文で乱数を発生させ、次のfor文で最大値・最小値を求め、3つめのfor文で表示を行なう


デジタルデザイン

課題1:design-1

正方形と正円を複数個持ちいて(どちらかだけでも良い)、動きを表現するような作品を描き、次のような感じを表現せよ。

★浮揚感のあるリズム感
氏名・学籍番号と、各作品のタイトルをつけて、A4用紙一枚に印刷して提出せよ。また、JPEG形式のビットマップ画像に変換し、指定のフォルダ(public_html/designworks/)に保存し、Web上に公開せよ。なお、ファイル名は以下のような形にする。

rhythm_名前.jpg     例:rhythm_TakashiHattori.jpg

課題2:design-2

★自然の中にある曲線の模写
教室の外に行き、葉を3種類の葉を一枚ずつ拾ってくること。デザイン的に良いと思われる葉を選ぶこと。また、葉脈が見えにくい常緑樹の分厚い葉は、避けること。この葉について、葉の輪郭、葉脈の輪郭を正確に模写すること。スキャナやトレース機能は使わないこと。また、葉脈について、安逸な1本の線で表現しないこと。葉脈も含め、必ず、すべてを輪郭として捉えて、Illustratorの曲線描画機能を用いて模写すること。デザイン上必要であれば、葉が茎にどのようについているかも描き込め。線の太さは任意であるが、正確な模写に必要な太さを選べ。

3種類の葉は、1枚の画像に横か縦に並べられたい。それぞれの植物の名前をつけて、JPEG形式のビットマップ画像に変換(RGBカラーモードにしておくこと)し、指定のフォルダ(public_html/designworks/)に保存し、Web上に公開せよ。なお、ファイル名は以下のような形にする。ビットマップ画像の解像度は標準(96dpi〜144dpi)、品質は最高とする。

leaf_名前.jpg      例:leaf_TakashiHattori.jpg

課題3:design-3

★文字のデザイン
漢字2文字程度(各文字は8画以上であること)と、ひらがな2文字程度を、ローマ字2文字程度(大文字でも小文字でも構わない)についてオリジナルフォントをデザインされたい。各曲線や、文字構造のそれぞれの形に気を配り、作品として統一の取れたものにすること。各文字のサイズは、かなり大きくても構わない。例えば、72pt〜96pt程度。デザインされたすべての文字を1つのビットマップ画像ファイルにまとめられたい。JPEG形式のビットマップ画像に変換(RGBカラーモードにしておくこと)し、指定のフォルダ(各人のホームディレクトリ/public_html/designworks/)に保存し、Web上に公開されたい。なお、ファイル名は以下のような形にする。ビットマップ画像の解像度は標準(96dpi〜144dpi)、品質は最高とする。

letter_名前.jpg      例:letter_TakashiHattori.jpg

課題4:design-4

★顔の模写
美しい女性の顔を斜め正面から美しく描け。比率や曲線で美しさを出せ。ハッチングの機能を用いて、ハッチによる陰影をつけてみよ。JPEG形式のビットマップ画像に変換(RGBカラーモードにしておくこと)し、指定のフォルダ(public_html/designworks/)に保存し、Web上に公開せよ。なお、ファイル名は以下のような形にする。ビットマップ画像の解像度は標準(96dpi〜144dpi)、品質は最高とする。

female_名前.jpg      例:female_TakashiHattori.jpg

課題5:design-5

★植物の文様
植物の絵柄を用いた文様を制作しなさい。制作には、Illustratorを用いなさい。1つ作り、繰返しさせてどのようになるか作ってみなさい。その結果を、JPEG形式のビットマップ画像に変換(RGBカラーモードにしておくこと)し、指定のフォルダ(public_html/designworks/)に保存し、Web上に公開しなさい。なお、ファイル名は以下のような形にします。ビットマップ画像の解像度は標準(96dpi〜144dpi)、品質は最高とします。

pattern_名前.jpg      例:pattern_TakashiHattori.jpg

また、このJPEG形式のファイルについて、丁度よい大きさになるようにPhotoshopで調整しなさい。Webに公開するときは、画像の幅が600ピクセル以下になるようにします。

課題6:design-6

★色相環図

色相環図を描きなさい。この図に、色の同化などの効果を使っても構いません。その結果を、JPEG形式のビットマップ画像に変換(RGBカラーモードにしておくこと)し、Photoshopで、解像度、カラーモードを調整して指定のフォルダ(public_html/designworks/)に保存し、Web上に公開しなさい。なお、ファイル名は以下のような形にします。ビットマップ画像の解像度は標準(96dpi〜144dpi)、品質は最高とします。

color_名前.jpg      例:color_TakashiHattori.jpg

また、このJPEG形式のファイルについて、丁度よい大きさになるようにPhotoshopで調整しなさい。Webに公開するときは、画像の幅が600ピクセル以下になるようにします。

 

課題7:design-7

★手のデッサンとテキスチャ

1.自分の利き手ではない方の手(マウスやペンを握らない方の手)を、Photoshopのブラシを用いて、陰影だけで描きなさい。描画時のカラーモードは、グレースケールとします。

2.Photoshopのフィルタの機能を使って、自然にあるようなテキスチャ(たとえば、光の反射する水面や、錆びた鉄の表面など)を作りなさい。また、報告のメールには、何を模したものか、および、その作成の過程を以下のように、説明しなさい。ただし、以下の例のような安易な作り方は推奨されない。

水面
1.背景レイヤーを水色で塗りつぶす
2.新規レイヤーを作る(グレースケールにて)
3.フィルタで雲の描画1を使う
4.水晶フィルタを用いる
5.エッジの強調を用いる
6.作成されたレイヤーの描画モードをスクリーンにする

その結果を、JPEG形式のビットマップ画像に変換(RGBカラーモードにしておくこと)し、Photoshopで、解像度、カラーモードを調整して指定のフォルダ(public_html/designworks/)に保存し、Web上に公開しなさい。なお、ファイル名は以下のような形にします。ビットマップ画像の解像度は標準(96dpi〜144dpi)、品質は最高とします。

hand_名前.jpg 例:hand_TakashiHattori.jpg ドローイングについて
texture_名前.jpg 例:texture_TakashiHattori.jpg テキスチャについて

また、このJPEG形式のファイルについて、丁度よい大きさになるようにPhotoshopで調整しなさい。Webに公開するときは、画像の幅が600ピクセル以下になるようにします。

課題8:design-8

Strata3Dで建物のモデルを作りなさい。窓などは、凹みで表現しても構いません。その結果を、VRML形式で保存し、指定のフォルダ(public_html/designworks/)に保存し、Web上に公開しなさい。なお、ファイル名は以下のような形にします。ビットマップ画像の解像度は標準(96dpi〜144dpi)、品質は最高とする。

building_名前.wrl 例:building_TakashiHattori.wrl

また、このVRML形式のファイルについては、Netscapeの方でみなさい。現在、VRMLを見ることのできるプラグインがNetscapeの方からしか用意されていません。

課題9:design-9

1.前回の建物のモデルにテキスチャー・マッピングを施した後、レンダリングして、ビットマップ画像にしなさい。一番よいアングルで建物をレンダリングすること。
2.立体的な花を作りなさい。テキスチャーマッピングを用いて、文様(柄)を入れよ。ベジェサーフェースやバンプマッピングなどを用いて、茎、葉や花びらの弛みや凹凸などを表現せよ。レンダリングして、JPEG形式の画像で保存し、そのURLをメールで送ること。
結果は、JPEG形式のビットマップ画像に変換(RGBカラーモードにしておくこと)し、Photoshopで、解像度、カラーモードを調整して指定のフォルダ(public_html/designworks/)に保存し、Web上に公開しなさい。なお、ファイル名は以下のような形にします。ビットマップ画像の解像度は標準(96dpi〜144dpi)、品質は最高とする。

building_名前.jpg 例:building_TakashiHattori.jpg 建物について
flower_名前.jpg 例:flower_TakashiHattori.jpg 花について

また、このJPEG形式のファイルについて、丁度よい大きさになるようにPhotoshopで調整しなさい。Webに公開するときは、画像の幅が600ピクセル以下になるようにする。

課題A:design-A

新幹線の先頭車両を作りなさい。新幹線には、0系、100系、200系、500系、700系、E1〜E4系などの種別があるが、どの車両か明示しなさい。テキスチャーマッピングのステンシルを用いて、窓をいれよ。ベジェサーフェースを用いて、先頭部の曲線を表現せよ。スカートの中の車両部なども、表現せよ。レンダリングして、JPEG形式の画像を作りなさい。このJPEG形式のビットマップ画像は、RGBカラーモードにし、Photoshopで、解像度を調整して指定のフォルダ(public_html/designworks/)に保存し、Web上に公開しなさい。なお、ファイル名は以下のような形にします。ビットマップ画像の解像度は標準(96dpi〜144dpi)、品質は最高とする。また、VRMLでも保存して、いろいろな角度から見れるようにせよ。

JNR_名前.jpg 例:JNR_TakashiHattori.jpg レンダリング画像
JNR_名前.wrl 例:JNR_TakashiHattori.wrl VRMLモデル

課題B:design-B

320×240の画面サイズで、3DCGのアニメーションを作り、3秒間〜20秒間のストーリーのあるQuickTimeムービーで保存し、Premiereでタイトルなどをつけて編集後に、Webページとして見れる場所に移動しなさい。またタイトルには、その内容・意図などを明示するようにしなさい。もし、それでも、Web上で見れない状態であれば、メールで連絡してください。ファイル名は、以下のような形とします。

anime_名前.mov 例:anime_TakashiHattori.mov

メールで担当者にURLを報告されたい。また、授業の感想なども併せて報告されたし。URLの報告は、次回の授業開始前までとする。なお、ムービーのファイルサイズは「1MB以下」になるように、圧縮などについても調整されたい。

課題C:design-C(optional)

提出は任意とします。成績には関係ありません。自分のWebのホームページを飾るために、400×300の画面サイズで、LiveMotionでFlashのアニメーションを作りなさい。SWF形式のファイルとします。

opening_名前.swf  例:opening_TakashiHattori.swf