SlideShare ist ein Scribd-Unternehmen logo
1 von 9
1 
Graphics with Processing 
2013-02 基本図形と曲線 
http://vilab.org 
塩澤秀和
2006-2013 H. SHIOZAWA http://vilab.org 
2 
1.2 プログラムの基本構造(復習) 
基本的なsetup処理 
 size(幅, 高さ) 
 ウィンドウを開く 
 setupの最初に必要 
 frameRate(回数) 
 1秒間あたりの描画コマ数 
 アニメーション(動画)に利用 
 省略した場合は毎秒60コマ 
 noLoop() 
 アニメーションを無効化する 
 loop()で解除できる 
プログラムの基本構造 
 サンプルプログラム 
 Examples → Basics → 
Structure → SetupDraw 
 コメントはC++やJavaと同じ 
 void setup() 
 初期設定関数(メソッド) 
 プログラム開始時に,自動的に 
1回だけ実行される 
 void draw() 
 描画関数(メソッド) 
 画面上で描画をする必要がある 
ときに自動的に実行される 
 アニメーション(loop)の場合, 
繰り返し何回も実行される 
 他にも再描画が必要なとき実行 
setup draw 
毎秒n回 
開始 
終了
2006-2013 H. SHIOZAWA http://vilab.org 
3 
1.3 基本的な描画(復習) 
Processingの座標系 
ウィンドウ 
色の数値表現 
 白黒(グレー) 
 0~255の整数 
 カラー 
 0~255の整数(RGB)×3個 
 例: stroke(r, g, b) 
描画の準備 
 background(色) 
 背景色でウィンドウを塗りつぶす 
 通常,drawの最初にやる 
 stroke(色) 
 線の色を指定する 
 strokeWeight(太さ) 
 線の太さを指定する 
基本図形 
 point(x座標, y座標) 
 点を打つ 
 line(x1, y1, x2, y2) 
 直線を引く 
 rect(x, y, 幅, 高さ) 
 長方形(矩形)を描く 
原点(0, 0) x 
y 
(width-1, height-1)
2006-2013 H. SHIOZAWA http://vilab.org 
4 
2.1 変数と制御構造(Javaと同じ) 
データ型 
 int, float, byte 
 数値 
 実数はfloatが標準 
 boolean 
 真偽値(Yes/No) 
 定数: true(真), false(偽) 
 char 
 文字(漢字も可) 
 char ch = 'あ' 
 String 
 文字列 
 String str = "あいうえお" 
 文字列の連結 
 +演算子で文字列を連結できる 
制御構造 
 if-else 
 switch-case 
 条件分岐 
 for, while 
 ループ(繰り返し) 
 do-whileは(一応)ない 
 break 
 ループ中断 
演算子 
 関係演算子 
 == != < > <= >= 
 論理演算子 
 || (OR) && (AND) ! (NOT)
2006-2013 H. SHIOZAWA http://vilab.org 
5 
2.2 基本図形 
図形描画関数 
 point, line, rect 
 点,直線,長方形(既出) 
 triangle(x1, y1, x2, y2, 
x3, y3) 
 3点を結ぶ三角形 
 quad(x1, y1, x2, y2, 
x3, y3, x4, y4) 
 4点を結ぶ四角形 
 ellipse(x, y, 幅, 高さ) 
 楕円(円) 
 arc(x, y, 幅, 高さ, 
開始角, 終了角) 
 弧(角度はラジアン) 
 πとして定数PIが使える 
描画色 
 stroke(色) 
 線(境界線)の色を設定 
 noStroke()で境界線なし 
 strokeWeight(太さ) 
 線の太さを設定 
 fill(色) 
 塗りつぶしの色を設定 
 noFill()で塗りつぶしなし 
座標指定モード 
 rectMode(モード) 
 ellipseMode(モード) 
 左上を指定: CORNER 
 中心を指定: CENTER
2006-2013 H. SHIOZAWA http://vilab.org 
6 
2.3 曲線の表現形式 
曲線の数式表現(p.58) 
 陽関数形式 
 y = f(x) 型 
 例 
 陰関数形式 
 f(x, y) = 0 型 
 例 
 パラメータ形式 
 x = f(t), y = g(t) 型 
 パラメータ=媒介変数 
 例 
パラメトリック曲線(p.62) 
 パラメータ形式による曲線 
 少ない変数で滑らかな曲線 
 曲線を点列に分解するのが簡単 
 点間を補間する曲線 
 Ferguson曲線 
 Catmull-Rom曲線 
 制御点による曲線 
 Bezier曲線 
 Bスプライン曲線 
 CGモデリングで広く用いられる 
 重み付き制御点による曲線 
 有理Bezier曲線 
 NURBS曲線(Non-Uniform 
Rational B-Spline) 
2 2 y  r  x 
0 2 2 2 x  y  r  
   
x r t 
 
cos 
y  
r sin 
t
2006-2013 H. SHIOZAWA http://vilab.org 
 
 
2 P(t)  (1t) P  2t(1t)P  t P 
 
 
 
 
 
 
x 
2 2 
x 
1 
x 
2 0 (1 ) 2 (1 ) 
x t 
( ) 
P1(x1, y1)   
7 
2.4 ベジエ曲線 
ベジエ曲線の描画 
 bezier(x0, y0, x1, y1, 
x2, y2, x3, y3) 
P2(x2, y2) 
 単純な数式で自然な曲線 
 CGでは通常3次(以上)が 
利用される 
ベジエ曲線の数式表現(p.64) 
 2次ベジエ曲線(3点) 
 3次ベジエ曲線(4点) 
サンプルプログラム 
 File → Examples 
 → Basics → Form → Bezier 
P0(x0, y0) 
P3(x3, y3) 
 
  
 
   
 
  
 
    
 
  
 
    
 
  
 
2 
1 
0 
( ) 
y 
t 
y 
t t 
y 
t 
y t 
P(t) = (1-t)3P0 +3t(1-t)2P1 + 
3t 2 (1-t)P2 +t3P3 
2 
2 
0 1
2006-2013 H. SHIOZAWA http://vilab.org 
 
 
 
 
 
 
 
 
8 
2.5 補間曲線 
補完曲線の描画 
 curve(x0, y0, x1, y1, 
x2, y2, x3, y3) 
P2(x2, y2) 
P3(x3, y3) 
P1(x1, y1) 
P0(x0, y0) 
 4点を滑らかに補間し,真ん中 
の2点を結ぶ曲線を描く 
Catmull-Rom曲線の数式表現 
 3次のスプライン曲線 
1 
 座標計算 
 Catmull-Romスプライン曲線 
  
 
 
 
 
 
 
 
 
 
 
1 3 3 1 
2 5 4 1 
 
 
 
 
 
 
 
 
 
 
  
 
  
 
P 
0 
P 
1 
P 
2 
3 
3 2 
1 0 1 0 
0 2 0 0 
1 
2 
( ) 
P 
P t t t t 
  
x t t t t 
 
x 
0 
x 
1 
2 
  
1 3 3 1 
 
 
2 5 4 1 
1 0 1 0 
0 2 0 0 
x 
x 
 
 
 
 
 
 
 0 2 1 
1 
2 
1 
1 
 
 
 
 
x x x x t 
     
( 3 3 ) 
2 
2 
0 1 2 3 
3 
0 1 2 3 
3 
3 2 
(2 5 4 ) ( ) 2 
( ) 
x x x x t x x t x 
        
 
 
 
 
 
 
 
 
 
  

2006-2013 H. SHIOZAWA http://vilab.org 
9 
2.6 演習課題 
課題 
 基本図形を組み合わせて,何か 
キャラクターの絵を描くプログラ 
ムを作成しなさい 
 ただし,必ず1つ以上curveか 
bezierを使うこと 
 方眼紙に絵を描いてから,座標 
を入力するとよい 
 例:アンパンマン,ドラえもん 
 提出 
 しめきり: 次回講義開始時 
 http://www2.vilab.org/upl 
oad/cg-upload.html 
 課題で「第2回」を選択する 
 ソースコード(.pdeファイル)だけ 
を提出すること 
今回のプログラムの基本構造 
void setup() { 
size(400, 400); 
// アニメーションは不要 
noLoop(); 
} 
void draw() { 
// 背景色を塗る 
background(240, 240, 255); 
// 線の色と塗りつぶしの色を 
// 設定しながら,図形を描く(例) 
stroke(0, 0, 255); 
fill(255, 0, 0); 
ellipse(150, 100, 50, 100); 
noFill(); 
rect(50, 200, 200, 100); 
}

Weitere ähnliche Inhalte

Was ist angesagt?

論理指向とプログラミング2010年度秋学期第9回
論理指向とプログラミング2010年度秋学期第9回論理指向とプログラミング2010年度秋学期第9回
論理指向とプログラミング2010年度秋学期第9回
Noritada Shimizu
 
プログラミング技法特論第4回
プログラミング技法特論第4回プログラミング技法特論第4回
プログラミング技法特論第4回
Noritada Shimizu
 
SIMDで整数除算
SIMDで整数除算SIMDで整数除算
SIMDで整数除算
shobomaru
 

Was ist angesagt? (20)

CG2013 09
CG2013 09CG2013 09
CG2013 09
 
The boolean operation for Cubic Bezier
The boolean operation for Cubic BezierThe boolean operation for Cubic Bezier
The boolean operation for Cubic Bezier
 
Rの初歩: 6. グラフィックス
Rの初歩:  6. グラフィックスRの初歩:  6. グラフィックス
Rの初歩: 6. グラフィックス
 
glossはおもろい
glossはおもろいglossはおもろい
glossはおもろい
 
Processingによるプログラミング入門 第4回
Processingによるプログラミング入門 第4回Processingによるプログラミング入門 第4回
Processingによるプログラミング入門 第4回
 
【Unity道場スペシャル 2017博多】クォータニオン完全マスター
【Unity道場スペシャル 2017博多】クォータニオン完全マスター【Unity道場スペシャル 2017博多】クォータニオン完全マスター
【Unity道場スペシャル 2017博多】クォータニオン完全マスター
 
Processingによるプログラミング入門 第2回
Processingによるプログラミング入門 第2回Processingによるプログラミング入門 第2回
Processingによるプログラミング入門 第2回
 
20150725 オープンキャンパス資料
20150725 オープンキャンパス資料20150725 オープンキャンパス資料
20150725 オープンキャンパス資料
 
【Unity道場】ゲーム制作に使う数学を学習しよう
【Unity道場】ゲーム制作に使う数学を学習しよう【Unity道場】ゲーム制作に使う数学を学習しよう
【Unity道場】ゲーム制作に使う数学を学習しよう
 
論理指向とプログラミング2010年度秋学期第9回
論理指向とプログラミング2010年度秋学期第9回論理指向とプログラミング2010年度秋学期第9回
論理指向とプログラミング2010年度秋学期第9回
 
Processing資料(1) Processingの基本
Processing資料(1) Processingの基本Processing資料(1) Processingの基本
Processing資料(1) Processingの基本
 
岡山県立大学オープンキャンパス資料
岡山県立大学オープンキャンパス資料岡山県立大学オープンキャンパス資料
岡山県立大学オープンキャンパス資料
 
【Unite Tokyo 2018】誘導ミサイル完全マスター
【Unite Tokyo 2018】誘導ミサイル完全マスター【Unite Tokyo 2018】誘導ミサイル完全マスター
【Unite Tokyo 2018】誘導ミサイル完全マスター
 
PCD2019 TOKYO ワークショップ「2時間で!Processingでプログラミング入門」
PCD2019 TOKYO ワークショップ「2時間で!Processingでプログラミング入門」PCD2019 TOKYO ワークショップ「2時間で!Processingでプログラミング入門」
PCD2019 TOKYO ワークショップ「2時間で!Processingでプログラミング入門」
 
3次元図形をSchemeで造ろう!
3次元図形をSchemeで造ろう!3次元図形をSchemeで造ろう!
3次元図形をSchemeで造ろう!
 
Processing資料(4) アニメーション
Processing資料(4) アニメーションProcessing資料(4) アニメーション
Processing資料(4) アニメーション
 
プログラミング技法特論第4回
プログラミング技法特論第4回プログラミング技法特論第4回
プログラミング技法特論第4回
 
会津合宿2015Day3:D問題
会津合宿2015Day3:D問題会津合宿2015Day3:D問題
会津合宿2015Day3:D問題
 
Processing資料(6) 様々な図形
Processing資料(6) 様々な図形Processing資料(6) 様々な図形
Processing資料(6) 様々な図形
 
SIMDで整数除算
SIMDで整数除算SIMDで整数除算
SIMDで整数除算
 

Andere mochten auch (8)

CG2013 14
CG2013 14CG2013 14
CG2013 14
 
CG2013 10
CG2013 10CG2013 10
CG2013 10
 
CG2013 13
CG2013 13CG2013 13
CG2013 13
 
SFC Design theory 2012 6/20
SFC Design theory 2012 6/20SFC Design theory 2012 6/20
SFC Design theory 2012 6/20
 
SFC Design theory 2012 6/27
SFC Design theory 2012 6/27SFC Design theory 2012 6/27
SFC Design theory 2012 6/27
 
SFC Design theory 2012 6/13
SFC Design theory 2012 6/13SFC Design theory 2012 6/13
SFC Design theory 2012 6/13
 
HTML5 Conference 2015 Design Sprint
HTML5 Conference 2015 Design SprintHTML5 Conference 2015 Design Sprint
HTML5 Conference 2015 Design Sprint
 
曲面レイトレ入門
曲面レイトレ入門曲面レイトレ入門
曲面レイトレ入門
 

Ähnlich wie CG2013 02

Media Art II 2013 第7回 : openFrameworks 3Dグラフィクス、OpenGL
Media Art II 2013 第7回 : openFrameworks 3Dグラフィクス、OpenGLMedia Art II 2013 第7回 : openFrameworks 3Dグラフィクス、OpenGL
Media Art II 2013 第7回 : openFrameworks 3Dグラフィクス、OpenGL
Atsushi Tadokoro
 

Ähnlich wie CG2013 02 (20)

SFC Design theory 2012 6/6
SFC Design theory 2012 6/6SFC Design theory 2012 6/6
SFC Design theory 2012 6/6
 
3次元図形をSchemeで造ろう!
3次元図形をSchemeで造ろう!3次元図形をSchemeで造ろう!
3次元図形をSchemeで造ろう!
 
openFrameworks Workshop in Kanazawa v001
openFrameworks Workshop in Kanazawa v001openFrameworks Workshop in Kanazawa v001
openFrameworks Workshop in Kanazawa v001
 
[DL輪読会]GQNと関連研究,世界モデルとの関係について
[DL輪読会]GQNと関連研究,世界モデルとの関係について[DL輪読会]GQNと関連研究,世界モデルとの関係について
[DL輪読会]GQNと関連研究,世界モデルとの関係について
 
誤差逆伝播法の計算(ディープラーニング)
誤差逆伝播法の計算(ディープラーニング)誤差逆伝播法の計算(ディープラーニング)
誤差逆伝播法の計算(ディープラーニング)
 
行列計算を利用したデータ解析技術
行列計算を利用したデータ解析技術行列計算を利用したデータ解析技術
行列計算を利用したデータ解析技術
 
R intro
R introR intro
R intro
 
NN, CNN, and Image Analysis
NN, CNN, and Image AnalysisNN, CNN, and Image Analysis
NN, CNN, and Image Analysis
 
Media Art II 2013 第7回 : openFrameworks 3Dグラフィクス、OpenGL
Media Art II 2013 第7回 : openFrameworks 3Dグラフィクス、OpenGLMedia Art II 2013 第7回 : openFrameworks 3Dグラフィクス、OpenGL
Media Art II 2013 第7回 : openFrameworks 3Dグラフィクス、OpenGL
 
Siv3Dで楽しむゲームとメディアアート開発
Siv3Dで楽しむゲームとメディアアート開発Siv3Dで楽しむゲームとメディアアート開発
Siv3Dで楽しむゲームとメディアアート開発
 
20160723 オープンキャンパス資料
20160723 オープンキャンパス資料20160723 オープンキャンパス資料
20160723 オープンキャンパス資料
 
OpenCVの拡張ユーティリティ関数群
OpenCVの拡張ユーティリティ関数群OpenCVの拡張ユーティリティ関数群
OpenCVの拡張ユーティリティ関数群
 
Sec15 dynamic programming
Sec15 dynamic programmingSec15 dynamic programming
Sec15 dynamic programming
 
静岡Developers勉強会 HTML5&CSS3
静岡Developers勉強会 HTML5&CSS3静岡Developers勉強会 HTML5&CSS3
静岡Developers勉強会 HTML5&CSS3
 
Gnuplotあれこれ
GnuplotあれこれGnuplotあれこれ
Gnuplotあれこれ
 
SSII2022 [TS3] コンテンツ制作を支援する機械学習技術​〜 イラストレーションやデザインの基礎から最新鋭の技術まで 〜​
SSII2022 [TS3] コンテンツ制作を支援する機械学習技術​〜 イラストレーションやデザインの基礎から最新鋭の技術まで 〜​SSII2022 [TS3] コンテンツ制作を支援する機械学習技術​〜 イラストレーションやデザインの基礎から最新鋭の技術まで 〜​
SSII2022 [TS3] コンテンツ制作を支援する機械学習技術​〜 イラストレーションやデザインの基礎から最新鋭の技術まで 〜​
 
第17回コンピュータビジョン勉強会@関東
第17回コンピュータビジョン勉強会@関東第17回コンピュータビジョン勉強会@関東
第17回コンピュータビジョン勉強会@関東
 
Enjoy handwritten digits recognition AI !!
Enjoy handwritten digits recognition AI !!Enjoy handwritten digits recognition AI !!
Enjoy handwritten digits recognition AI !!
 
Processing授業テキスト
Processing授業テキストProcessing授業テキスト
Processing授業テキスト
 
STC-OC2019_1st201906
STC-OC2019_1st201906STC-OC2019_1st201906
STC-OC2019_1st201906
 

CG2013 02

  • 1. 1 Graphics with Processing 2013-02 基本図形と曲線 http://vilab.org 塩澤秀和
  • 2. 2006-2013 H. SHIOZAWA http://vilab.org 2 1.2 プログラムの基本構造(復習) 基本的なsetup処理  size(幅, 高さ)  ウィンドウを開く  setupの最初に必要  frameRate(回数)  1秒間あたりの描画コマ数  アニメーション(動画)に利用  省略した場合は毎秒60コマ  noLoop()  アニメーションを無効化する  loop()で解除できる プログラムの基本構造  サンプルプログラム  Examples → Basics → Structure → SetupDraw  コメントはC++やJavaと同じ  void setup()  初期設定関数(メソッド)  プログラム開始時に,自動的に 1回だけ実行される  void draw()  描画関数(メソッド)  画面上で描画をする必要がある ときに自動的に実行される  アニメーション(loop)の場合, 繰り返し何回も実行される  他にも再描画が必要なとき実行 setup draw 毎秒n回 開始 終了
  • 3. 2006-2013 H. SHIOZAWA http://vilab.org 3 1.3 基本的な描画(復習) Processingの座標系 ウィンドウ 色の数値表現  白黒(グレー)  0~255の整数  カラー  0~255の整数(RGB)×3個  例: stroke(r, g, b) 描画の準備  background(色)  背景色でウィンドウを塗りつぶす  通常,drawの最初にやる  stroke(色)  線の色を指定する  strokeWeight(太さ)  線の太さを指定する 基本図形  point(x座標, y座標)  点を打つ  line(x1, y1, x2, y2)  直線を引く  rect(x, y, 幅, 高さ)  長方形(矩形)を描く 原点(0, 0) x y (width-1, height-1)
  • 4. 2006-2013 H. SHIOZAWA http://vilab.org 4 2.1 変数と制御構造(Javaと同じ) データ型  int, float, byte  数値  実数はfloatが標準  boolean  真偽値(Yes/No)  定数: true(真), false(偽)  char  文字(漢字も可)  char ch = 'あ'  String  文字列  String str = "あいうえお"  文字列の連結  +演算子で文字列を連結できる 制御構造  if-else  switch-case  条件分岐  for, while  ループ(繰り返し)  do-whileは(一応)ない  break  ループ中断 演算子  関係演算子  == != < > <= >=  論理演算子  || (OR) && (AND) ! (NOT)
  • 5. 2006-2013 H. SHIOZAWA http://vilab.org 5 2.2 基本図形 図形描画関数  point, line, rect  点,直線,長方形(既出)  triangle(x1, y1, x2, y2, x3, y3)  3点を結ぶ三角形  quad(x1, y1, x2, y2, x3, y3, x4, y4)  4点を結ぶ四角形  ellipse(x, y, 幅, 高さ)  楕円(円)  arc(x, y, 幅, 高さ, 開始角, 終了角)  弧(角度はラジアン)  πとして定数PIが使える 描画色  stroke(色)  線(境界線)の色を設定  noStroke()で境界線なし  strokeWeight(太さ)  線の太さを設定  fill(色)  塗りつぶしの色を設定  noFill()で塗りつぶしなし 座標指定モード  rectMode(モード)  ellipseMode(モード)  左上を指定: CORNER  中心を指定: CENTER
  • 6. 2006-2013 H. SHIOZAWA http://vilab.org 6 2.3 曲線の表現形式 曲線の数式表現(p.58)  陽関数形式  y = f(x) 型  例  陰関数形式  f(x, y) = 0 型  例  パラメータ形式  x = f(t), y = g(t) 型  パラメータ=媒介変数  例 パラメトリック曲線(p.62)  パラメータ形式による曲線  少ない変数で滑らかな曲線  曲線を点列に分解するのが簡単  点間を補間する曲線  Ferguson曲線  Catmull-Rom曲線  制御点による曲線  Bezier曲線  Bスプライン曲線  CGモデリングで広く用いられる  重み付き制御点による曲線  有理Bezier曲線  NURBS曲線(Non-Uniform Rational B-Spline) 2 2 y  r  x 0 2 2 2 x  y  r     x r t  cos y  r sin t
  • 7. 2006-2013 H. SHIOZAWA http://vilab.org   2 P(t)  (1t) P  2t(1t)P  t P       x 2 2 x 1 x 2 0 (1 ) 2 (1 ) x t ( ) P1(x1, y1)   7 2.4 ベジエ曲線 ベジエ曲線の描画  bezier(x0, y0, x1, y1, x2, y2, x3, y3) P2(x2, y2)  単純な数式で自然な曲線  CGでは通常3次(以上)が 利用される ベジエ曲線の数式表現(p.64)  2次ベジエ曲線(3点)  3次ベジエ曲線(4点) サンプルプログラム  File → Examples  → Basics → Form → Bezier P0(x0, y0) P3(x3, y3)                            2 1 0 ( ) y t y t t y t y t P(t) = (1-t)3P0 +3t(1-t)2P1 + 3t 2 (1-t)P2 +t3P3 2 2 0 1
  • 8. 2006-2013 H. SHIOZAWA http://vilab.org         8 2.5 補間曲線 補完曲線の描画  curve(x0, y0, x1, y1, x2, y2, x3, y3) P2(x2, y2) P3(x3, y3) P1(x1, y1) P0(x0, y0)  4点を滑らかに補間し,真ん中 の2点を結ぶ曲線を描く Catmull-Rom曲線の数式表現  3次のスプライン曲線 1  座標計算  Catmull-Romスプライン曲線             1 3 3 1 2 5 4 1                 P 0 P 1 P 2 3 3 2 1 0 1 0 0 2 0 0 1 2 ( ) P P t t t t   x t t t t  x 0 x 1 2   1 3 3 1   2 5 4 1 1 0 1 0 0 2 0 0 x x        0 2 1 1 2 1 1     x x x x t      ( 3 3 ) 2 2 0 1 2 3 3 0 1 2 3 3 3 2 (2 5 4 ) ( ) 2 ( ) x x x x t x x t x                    
  • 9. 2006-2013 H. SHIOZAWA http://vilab.org 9 2.6 演習課題 課題  基本図形を組み合わせて,何か キャラクターの絵を描くプログラ ムを作成しなさい  ただし,必ず1つ以上curveか bezierを使うこと  方眼紙に絵を描いてから,座標 を入力するとよい  例:アンパンマン,ドラえもん  提出  しめきり: 次回講義開始時  http://www2.vilab.org/upl oad/cg-upload.html  課題で「第2回」を選択する  ソースコード(.pdeファイル)だけ を提出すること 今回のプログラムの基本構造 void setup() { size(400, 400); // アニメーションは不要 noLoop(); } void draw() { // 背景色を塗る background(240, 240, 255); // 線の色と塗りつぶしの色を // 設定しながら,図形を描く(例) stroke(0, 0, 255); fill(255, 0, 0); ellipse(150, 100, 50, 100); noFill(); rect(50, 200, 200, 100); }