CGと形状モデリング 授業資料 長井 超慧(東京大学)

Slides:



Advertisements
Similar presentations
ファーストイヤー・セミナーⅡ 第13回 2次元グラフィックス(1). 2次元グラフィックス Ultra-C では、これまで利用してきた「標準入出力」 以外に「グラフィックス画面」があり、図形などを 表示できる C 言語のグラフィックスには細かな規定がなく、こ れから学ぶ内容が他の環境、システムでは利用でき.
Advertisements

初年次セミナー 第13回 2次元グラフィックス(1).
情報・知能工学系 山本一公 プログラミング演習Ⅱ 第3回 配列(1) 情報・知能工学系 山本一公
情報処理演習 (9)グラフィックス システム科学領域 日浦 慎作.
初年次セミナー 第14回 2次元グラフィックス(2).
プログラミング入門 電卓番外編 ~エクセルで関数表示~.
プログラミング入門2 第4回 配列 for文 変数宣言 初期化
プログラミング言語としてのR 情報知能学科 白井 英俊.
ファーストイヤー・セミナーⅡ 第8回 データの入力.
6/19 前回復習 for文による繰り返し計算 演習1:1から10まで足して画面に結果を表示する 提出者: 1人
第4回:ボールを画面内で弾ませよう! (オブジェクトの移動、二次元)
C言語 配列 2016年 吉田研究室.
Excelによる3-D/等高線グラフの描画 2変数関数の描画 Excel によるグレイスケールマップ風描画
Excelによる3-D/等高線グラフの描画 2変数関数の描画 Excel によるグレイスケールマップ風描画
形状モデリングにおいて,任意の自由曲面を定義する必要のある場合がある.自由曲面の表現法について説明する.
第6章 2重ループ&配列 2重ループと配列をやります.
問題 1 キーボードから入力した数の合計を計算するプログラムを 作成せよ。最初に、何個の数を入力するかその数を入力 するようにする。
精密工学科プログラミング基礎Ⅱ 第3回資料 今回の授業で習得してほしいこと: 2次元配列の使い方 (前回の1次元配列の復習もします.)
C 言語について 補足資料 資料および授業の情報は :
JAVA GUIプログラミング 第2回 グラフィックスを使っての演習 グラフを描こう.
CGプログラミング論 平成28年5月25日 森田 彦.
グラフィックス、その1 色の表示 フォントを変えて文字を表示 直線、四角形、楕円形の描画 円弧の描画 多角形の描画
プログラムの制御構造 選択・繰り返し.
岩村雅一 知能情報工学演習I 第11回(後半第5回) 岩村雅一
CGプログラミング論 平成28年6月8日 森田 彦.
CGと形状モデリング 授業資料 長井 超慧(東京大学)
CGと形状モデリング 授業資料 1,2限: 大竹豊(東京大学) 3,4限: 俵 丈展(理化学研究所)
第二回 VB講座 電卓を作ろう.
電気・機械・情報概論 VBAプログラミング 第2回 2018年7月2日
Cプログラミング演習 第7回 メモリ内でのデータの配置.
電界中の電子の運動 シミュレータ作成 精密工学科プログラミング基礎 資料.
ポリゴンメッシュ (1) - データ構造とレンダリングに必要な計算 -
CAD曲線 (ベジエ曲線・Bスプライン曲線)
プログラミング入門 電卓を作ろう・パートIV!!.
TCanvas BCB:TCanvasクラスでグラフィックを扱う。 TFormなどもプロパティとして持っている。
点・線分・多角形を レンダリングする方法 東京大学 精密工学専攻 大竹豊.
前回の練習問題.
第6回:ラケットを動かそう! (キーボードによる物体の操作)
ポリゴンメッシュ (2) - 変形と簡略化- 東京大学 精密工学専攻 大竹豊 資料および授業の情報は :
岩村雅一 知能情報工学演習I 第11回(後半第5回) 岩村雅一
岩村雅一 知能情報工学演習I 第9回(後半第3回) 岩村雅一
CGと形状モデリング 授業資料 1,2限: 大竹豊(東京大学) 3,4限: 俵 丈展(理化学研究所)
情報処理Ⅱ 第2回:2003年10月14日(火).
計算機プログラミングI 第5回 配列 文字列(Stringクラス) mainの引数 配列の利用例
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
プログラミング言語論 第六回 理工学部 情報システム工学科 新田直也.
C言語 はじめに 2016年 吉田研究室.
データ構造とアルゴリズム (第5回) 静岡大学工学部 安藤和敏
復習 breakとcontinueの違い int i; for (i = 1; i <= 100; i++) { ・・・処理1・・・・
復習 Cにおけるループからの脱出と制御 break ループを強制終了する.if文と組み合わせて利用するのが一般的. continue
Excelによる3-D/等高線グラフの描画 2変数関数の描画 Excel によるグレイスケールマップ風描画
第6回:得点を表示しよう! (文字の表示、乱数)
バネモデルの シミュレータ作成 精密工学科プログラミング基礎 資料.
復習 if ~ 選択制御文(条件分岐) カッコが必要 true 条件 false 真(true)なら この中が aを2倍する 実行される
CGプログラミング論 平成28年5月18日 森田 彦.
精密工学科プログラミング基礎 第7回資料 (11/27実施)
点・線分・多角形を レンダリングする方法 東京大学 精密工学専攻 大竹豊.
VB6.0でグラフを書こう(とりあえず2次元)
精密工学科プログラミング基礎Ⅱ 第2回資料 今回の授業で習得してほしいこと: 配列の使い方 (今回は1次元,次回は2次元をやります.)
情報処理Ⅱ 第2回 2004年10月12日(火).
プログラミング入門2 第5回 配列 変数宣言、初期化について
CGと形状モデリング 授業資料 1,2限: 大竹豊(東京大学) 3,4限: 俵 丈展(理化学研究所)
プログラミング入門2 第3回 条件分岐(2) 繰り返し文 篠埜 功.
プログラミング演習I 補講用課題
岩村雅一 知能情報工学演習I 第7回(後半第1回) 岩村雅一
第1章 文字の表示と計算 printfと演算子をやります.
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
計算機プログラミングI 第2回 2002年10月17日(木) 履習登録 複習 ライブラリの利用 (2.6-7) 式・値・代入 (2.6-8)
計算機プログラミングI 第5回 2002年11月7日(木) 配列: 沢山のデータをまとめたデータ どんなものか どうやって使うのか
PowerPoint の基本操作 情報機器の操作 (e).
Presentation transcript:

CGと形状モデリング 授業資料 長井 超慧(東京大学) 資料および授業の情報は : http://www.den.t.u-tokyo.ac.jp/nagai/CG/

この資料の目的 C言語とかC++言語でのプログラミングは以下だけ つかえればなんでも計算できることを実感する if for 配列 ファイルの入出力 関数 (なくてもいいが、ないと大変) とりあえずこの3つをやる

以下でも良いが、配列との兼ね合いのためCでは推奨されません (フォートランでは推称されます) for 文 N 回繰り返したいとき for(int i=0; i<N; i++){ ここにやりたいこと 変数 i にアクセスすることで何回目か知ることが出来る } 以下でも良いが、配列との兼ね合いのためCでは推奨されません (フォートランでは推称されます) for(int i=1; i<=N; i++){ ここにやりたいこと }

for 文の利用例 緑から水色に段々と色が変化する直線を描く 色を変えながら短い線分を沢山描く for(int i=0; i<10; i++){ glColor3f(0, 1, 0.1*i); glBegin(GL_LINES); glVertex3f(0.1*i, 0, 0); glVertex3f(0.1*(i+1), 0, 0); glEnd(); } 色の指定 i=4 のとき 10等分 (0,0) (1,0) (0.4,0) (0.5,0)

2重 for 文 N 回の繰り返しをM回したいとき for(int j=0; j<M; j++){ もしあればここにもやりたいこと ただし、変数 j を使うことだけ for(int i=0; i<N; i++){ ここにやりたいこと 変数 i と j にアクセスすることで 何回目か知ることが出来る }

2重 for 文の利用例 段々色が変化する水平な線分を 下から上にたくさん描く 色は左下が緑で、右下が水色 左上が黄色で、右上が白 段々色が変化する水平な線分を 下から上にたくさん描く 色は左下が緑で、右下が水色    左上が黄色で、右上が白 i=4, j=5 のとき for(int j=0; j<11; j++){ for(int i=0; i<10; i++){ glColor3f(0.1*j, 1, 0.1*i); glBegin(GL_LINES); glVertex3f(0.1*i, 0.1*j, 0); glVertex3f(0.1*(i+1), 0.1*j, 0); glEnd(); } (0,1) (1,1) (0.4,0.5) (0.5,0.5) (0,0) (1,0) 10等分を11本

課題1 prog1.5-1 を使う 中心原点、半径1の円を 100本の線分で描け 中心原点、半径1の円を 100本の線分で描け 半径1のとき赤で、 中心に向かうにつれて黄色へ     徐々に色が変化する同心円を描け 最初は色を考えないで一色で同心円を描くとよい

配列 N 個の小数値を N 個の整数値を 格納したいとき 格納したいとき float B[N]; //宣言 int A[N]; //宣言 Cでは配列は 0 が始まりです。 (フォートランでは1からです)

配列の利用例 あらかじめ決まっている値を 打ち込んでおいて点として表示 あらかじめ決まっている値を 打ち込んでおいて点として表示 宣言と同時に 代入を行う書き方 (知らなくてもOK) float x[5] = {0.5, 0.1, 0.3, -0.4, 0}; float y[5] = {-0.5, 0.2, -0.9, 0.8, 0}; glColor3f(0, 0, 0); glBegin(GL_POINTS); for(int i=0; i<5; i++){ glVertex3f(x[i], y[i], 0); } glEnd();

課題2 prog1.5-2 を使う 配列 x と y にあらかじめ円周上の点を 代入し、50本の線分で円を描け 始点と終点に隙間があってはダメ 配列 x と y の値を更新しつつ、 一番外の円周上が黒、中心付近で緑へ 徐々に色が変化する同心円を描け 円の間隔は一定でなくとも、 減っていればよい 【任意】 三角関数の計算回数が なるべく少なくなるように工夫せよ

以下は、知っていると便利です (知らなくても if を並べれば同じことができる) 処理を何かの条件で分けたいときにつかう if(条件){ 条件をクリアしたときに行いたいこと } 以下は、知っていると便利です (知らなくても if を並べれば同じことができる) if(条件){ 条件をクリアしたときに行いたいこと } else{ 条件をクリアしなかったときに行いたいこと

If の利用例 赤と青の線分を交互に描く こうしておくと 数が変わったときに 変更が楽 int N = 10; for(int i=0; i<N; i++){ if(i%2 == 0){ glColor3f(0, 0, 1); } else{ glColor3f(1, 0, 0); glBegin(GL_LINES); glVertex3f( (float)i/N, 0, 0); glVertex3f( (float)(i+1)/N, 0, 0); glEnd(); i を 2で 割った余り 整数÷整数は 整数になって しまうので 小数へ変換

課題3 prog1.5-3 を使う 色が3色交互にかわるような ルーレットを描け 赤と青の チェッカー模様を描け 色が3色交互にかわるような ルーレットを描け GL_POLYGON で 三角形を並べる 赤と青の チェッカー模様を描け P.6 のプログラムを改造する AかつB ⇒ A && B AまたはB ⇒ A || B

課題 4 prog1.5-4 を使う 以下関数のグラフを線分の集まりで描け 関数の値(yの値)に応じて         線分の色が変わるようにせよ 色は,

課題 5 prog1.5-5 を使う xy 平面上に n 個の点電荷を配置すると、 ある点 (x,y) での電位は以下の式で計算できる 以下のように5個の点電荷が配置されているとき、 点電荷の位置を半径0.1の円(正は白、負は黒)で表示せよ 平面状に色つきの正方形を沢山並べて 電位の値を描け (物理定数 k は 1 としてよい) //電荷の x 座標 float a[5] = {0, 0.5, -0.5, -0.5, 0.5}; //電荷の y 座標 float b[5] = {0, 0.5, 0.5, -0.5, -0.5}; //電荷の値 float q[5] = {0.125, 0.25, -0.25, 0.25, -0.25}; 1個だけのとき

課題 6 適当なプログラムをコピーして使う フラクタル: コッホ曲線を描け 参考URL: http://ja.wikipedia.org/wiki/コッホ曲線

課題 7 課題3を変更する 5色のチェック模様を描けるように変更せよ