SlideShare a Scribd company logo
ProcessingWorkshop
Processing
電子アートとビジュアルデザインのための
プログラミング言語であり、統合開発環境
である。視覚的なフィードバックが即座に
得られるため、初心者がプログラミングを
学習するのに適しており、電子スケッチ
ブックの基盤としても利用できる。Java
を単純化し、グラフィック機能に特化した
言語といえる。(Wikipedia より抜粋)
ProcessingWorkshop
Run
プログラムを実行
Stop
実行中のプログラムを停止
Editor
プログラムを記述するところ
Console
エラーがあるとここに表示される
Setup
Run
初期化設定を書くところ。Run を押した瞬間に一度だけ呼ばれる。
Draw
描画処理を書くところ。デフォルトだと一秒間に 60 回同じ処理が
繰り返される。
ProcessingWorkshop
void setup()
{
}
void draw()
{
}
Stop
ProcessingWorkshop
Coordinate - Axis
x( 0, 0 )
y
Math
x( 0, 0 )
y
Program
数学とプログラムでは y 軸の向きが逆なので注意!
ProcessingWorkshop
Coordinate - Example
x
10030
y
100
50
70
80
line( 30, 50, 70, 80 );
( x 30, y 50 ) から ( x 70, y 80 ) に線を引く
ProcessingWorkshop
Primitives - Line
line( x1, y1, x2, y2 );
Point1 Point2
Point1( x1, y1 ) と Point2( x2, y2 ) を結ぶ直線を引く
ProcessingWorkshop
Primitives - Line
//---------------------------------------- setup
void setup()
{
// set window size
size( 100, 100 );
}
//---------------------------------------- draw
void draw()
{
// draw line
line( 30, 50, 70, 80 );
}
ProcessingWorkshop
Primitives - Rect
rect( x, y, width, height );
Point
Point( x, y ) を左上とした、幅 width、高さ height の矩形を描く
rectMode( CENTER ) で Point( x, y ) を中心として描画する
rectMode( CORNER ) で Point( x, y ) を左上として描画する
ProcessingWorkshop
Primitives - Rect
//---------------------------------------- setup
void setup()
{
// set window size
size( 200, 200 );
}
//---------------------------------------- draw
void draw()
{
// set rect mode CORNER
rectMode( CORNER );
  
// draw rect
rect( 100, 100, 50, 50 );
// set rect mode CENTER
rectMode( CENTER );
// draw rect
rect( 100, 100, 50, 50 );
}
ProcessingWorkshop
Primitives - Ellipse
ellipse( x, y, width, height );
Point
Point( x, y ) を中心とした、幅 width、高さ height の楕円を描く
正円を描く場合は、width と height に同じ数値を入れる
ProcessingWorkshop
Primitives - Ellipse
//---------------------------------------- setup
void setup()
{
// set window size
size( 200, 200 );
}
//---------------------------------------- draw
void draw()
{
// draw circle
ellipse( 100, 100, 50, 50 );
// draw ellipse
ellipse( 100, 100, 100, 10 );
}
ProcessingWorkshop
Primitives - Triangle
Point1( x1, y1 ), Point2( x2, y2 ), Point3( x3, y3 ) を結ぶ三角形を描く
triangle( x1, y1, x2, y2, x3, y3 );
Point1 Point2 Point3
ProcessingWorkshop
Primitives - Triangle
//---------------------------------------- setup
void setup()
{
// set window size
size( 200, 200 );
}
//---------------------------------------- draw
void draw()
{
// draw top triangle
triangle( 0, 0, 200, 0, 100, 100 );
// draw bottom triangle
triangle( 0, 200, 200, 200, 100, 100 );
}
ProcessingWorkshop
Color - Background
background( red, green, blue );
background( gray );
( red, green, blue ) または ( gray )、それぞれ 0 から 255 までの数値で背景色を指定
ProcessingWorkshop
Color - Background
//---------------------------------------- setup
void setup()
{
// set window size
size( 200, 200 );
}
//---------------------------------------- draw
void draw()
{
// fill background
background( 127, 0, 0 );
}
ProcessingWorkshop
Color - Stroke
stroke( red, green, blue );
stroke( gray );
noStroke();
( red, green, blue ) または ( gray )、それぞれ 0 から 255 までの数値で線色を指定
noStroke() で線なし
指定しない場合は黒になる
ProcessingWorkshop
Color - Stroke
//---------------------------------------- setup
void setup()
{
// set window size
size( 200, 200 );
}
//---------------------------------------- draw
void draw()
{
// fill background
background( 127, 0, 0 );
// set stroke color
stroke( 255, 255, 0 );
// draw bottom circle
ellipse( 100, 130, 100, 100 );
// disable stroke
noStroke();
// draw top circle
ellipse( 100, 70, 70, 70 );
}
ProcessingWorkshop
Color - Fill
fill( red, green, blue );
fill( gray );
noFill();
( red, green, blue ) または ( gray )、それぞれ 0 から 255 までの数値で塗りつぶし色を指定
noFill() で塗りつぶしなし
指定しない場合は白になる
ProcessingWorkshop
Color - Fill
//---------------------------------------- setup
void setup()
{
// set window size
size( 200, 200 );
}
//---------------------------------------- draw
void draw()
{
// fill background
background( 255, 200, 200 );
// set fill color
fill( 255, 255, 127 );
// draw bottom circle
ellipse( 100, 130, 100, 100 );
// disable fill
noFill();
// draw top circle
ellipse( 100, 70, 70, 70 );
}
ProcessingWorkshop
Drawing
//---------------------------------------- setup
void setup()
{
// set window size
size( 640, 440 );
}
//---------------------------------------- draw
void draw()
{
// fill background
background( 192, 128, 64 );
// no stroke
noStroke();
// set fill color
fill( 0 );
// left eye
ellipse( ( 320 - 150 ), 170, 80, 80 );
// right eye
ellipse( ( 320 + 150 ), 170, 80, 80 );
// mouth
triangle( 320, 280, ( 320 - 80 ), ( 280 + 70 ), ( 320 + 80 ), ( 280 + 70 ) );
}
ProcessingWorkshop
Variables
変数
数値を入れておく箱のようなもの。
変数にはそれぞれ種類があり、それを「型」
という。
値を保存しておきたい場合や、同じ値を何
度も使用する場合、計算をする場合に使う。
変数を使う前には、使いたい変数の型と名
前を宣言する必要がある。
int 型: 整数
float 型: 小数(浮動小数点数) int 型 float 型
5 255
1024
127
68 94
16
5.99
255.1 127.0
68.34
94.21
16.08
//---------------------------------------- global
// declare variables
int x;
int y;
int diameter;
//---------------------------------------- setup
void setup()
{
// set window size
size( 640, 480 );
// assign values to variables
x = 320;
y = 240;
diameter = 200;
}
//---------------------------------------- draw
void draw()
{
// fill background
background( 255 );
// disable stroke
noStroke();
// set fill color
fill( 255, 0, 0 );
// draw ellipse with variables
ellipse( x, y, diameter, diameter );
}
ProcessingWorkshop
Variables - Declaration
//---------------------------------------- global
// declare variables
int x;
int y;
int diameter;
//---------------------------------------- setup
void setup()
{
// set window size
size( 640, 480 );
// assign values to variables
x = 320;
y = 240;
diameter = 200;
}
//---------------------------------------- draw
void draw()
{
// fill background
background( 255 );
// disable stroke
noStroke();
// set fill color
fill( 255, 0, 0 );
// draw ellipse with variables
ellipse( x, y, diameter, diameter );
// update x
x = x + 1;
}
ProcessingWorkshop
Variables - Animation
ProcessingWorkshop
Conditional
i f 文
特定の条件下だけ通常とは違う処理をさせ
たいときに使う。
if( 条件 )
{
// ここに処理を描く
}
関係演算子
// a が b と等しいとき
if( a == b )
{
// ここに処理
}
// a が b と等しくないとき
if( a != b )
{
// ここに処理
}
// a が b より小さいとき
if( a < b )
{
// ここに処理
}
// a が b 以下のとき
if( a <= b )
{
// ここに処理
}
// a が b より大きいとき
if( a > b )
{
// ここに処理
}
// a が b 以上のとき
if( a >= b )
{
// ここに処理
}
//---------------------------------------- global
// declare variables
int x;
int y;
int diameter;
//---------------------------------------- setup
void setup()
{
// set window size
size( 640, 480 );
// assign values to variables
x = 0;
y = 240;
diameter = 200;
}
//---------------------------------------- draw
void draw()
{
// fill background
background( 255 );
// disable stroke
noStroke();
// set fill color
fill( 255, 0, 0 );
// draw ellipse with variables
ellipse( x, y, diameter, diameter );
// update x
x = x + 1;
// reset x when x is over window width
if( x > width )
{
x = 0;
}
}
ProcessingWorkshop
Conditional - Animation
//---------------------------------------- global
// declare variables
int x;
int y;
int diameter;
//---------------------------------------- setup
void setup()
{
// set window size
size( 640, 480 );
// assign values to variables
diameter = 200;
x = -( diameter / 2 );
y = 240;
}
//---------------------------------------- draw
void draw()
{
// fill background
background( 255 );
// disable stroke
noStroke();
// set fill color
fill( 255, 0, 0 );
// draw ellipse with variables
ellipse( x, y, diameter, diameter );
// update x
x = x + 1;
// reset x when x is over window width
if( ( x - ( diameter / 2 ) ) > width )
{
x = -( diameter / 2 );
}
}
ProcessingWorkshop
Conditional - NaturalAnimation
ProcessingWorkshop
SerialCommunication
ProcessingWorkshop
SerialCommunication //---------------------------------------- import
// import serial library
import processing.serial.*;
//---------------------------------------- global
// serial object
Serial serial;
int val = 0;
//---------------------------------------- setup
void setup()
{
// set window size
size( 480, 480 );
// listup serial devices to console
printArray( Serial.list() );
// setup serial
serial = new Serial( this, Serial.list()[ 5 ], 9600 );
// clear serial
serial.clear();
// buffer serial until 'n'
serial.bufferUntil( 'n' );
}
//---------------------------------------- draw
void draw()
{
// fill background
background( 0 );
}
//------------------------------------------------------------ serialEvent
void serialEvent( Serial _serial )
{
// read string until 'n' from serial buffer
String str = _serial.readStringUntil( 'n' );
// if str is not null
if( str != null )
{
// trim str
str = trim( str );
// convert string to int
val = int( str );
// print value to console
println( val );
}
}
ProcessingWorkshop
SerialCommunication
//---------------------------------------- import
// import serial library
import processing.serial.*;
//---------------------------------------- global
// serial object
Serial serial;
int val = 0;
float angle = 0.0;
float centerX, centerY;
//---------------------------------------- setup
void setup()
{
// set window size
size( 480, 480 );
// fill background
background( 0 );
centerX = width / 2;
centerY = height / 2;
// listup serial devices to console
printArray( Serial.list() );
// setup serial
serial = new Serial( this, Serial.list()[ 5 ], 9600 );
// clear serial
serial.clear();
// buffer serial until 'n'
serial.bufferUntil( 'n' );
}
//---------------------------------------- draw
void draw()
{
// disable stroke
noStroke();
// fill background slowly
fill( 0, 2 );
rect( 0, 0, width, height );
// set stroke color
stroke( 0, 255, 0 );
// update angle
++angle;
float radius = val / 4;
float x = centerX + ( cos( radians( angle ) ) * radius );
float y = centerY + ( sin( radians( angle ) ) * radius );
// draw line
line( centerX, centerY, x, y );
}
// serialEvent は変更しないので割愛

More Related Content

PDF
Processing workshop
PDF
C++11概要 ライブラリ編
PPT
C++でHello worldを書いてみた
ODP
C++でのゲームプログラミングをしたときのお話 札幌C++勉強会 #4 〜スタートゲームプログラミング〜
PPTX
PDF
ゲーム開発者のための C++11/C++14
PDF
Effective Modern C++ 読書会 Item 35
ODP
Ekmett勉強会発表資料
Processing workshop
C++11概要 ライブラリ編
C++でHello worldを書いてみた
C++でのゲームプログラミングをしたときのお話 札幌C++勉強会 #4 〜スタートゲームプログラミング〜
ゲーム開発者のための C++11/C++14
Effective Modern C++ 読書会 Item 35
Ekmett勉強会発表資料

What's hot (20)

PDF
enchant.jsでゲーム制作をはじめてみよう
PDF
Ekmett勉強会発表資料
KEY
Stroustrup11章雑感
PDF
お前は PHP の歴史的な理由の数を覚えているのか
PDF
Siv3Dで楽しむゲームとメディアアート開発
PDF
enchant.jsでゲーム制作をはじめてみよう 「パンダの会」バージョン
PPTX
CG2013 05
KEY
JavaScript Hackathon for Students
PDF
Boost.Coroutine
PDF
Van laarhoven lens
PDF
Html canvas shooting_and_performanceup
PDF
C++0x in programming competition
KEY
Arctic.js
PDF
Continuation with Boost.Context
PDF
Canvas de shooting 制作のポイント
PDF
コルーチンの使い方
PDF
20分くらいでわかった気分になれるC++20コルーチン
PDF
openFrameworks基礎 たくさんの図形を動かす 静的配列と動的配列 - 芸大グラフィックスプログラミング演習B
PDF
PDF
コルーチンを使おう
enchant.jsでゲーム制作をはじめてみよう
Ekmett勉強会発表資料
Stroustrup11章雑感
お前は PHP の歴史的な理由の数を覚えているのか
Siv3Dで楽しむゲームとメディアアート開発
enchant.jsでゲーム制作をはじめてみよう 「パンダの会」バージョン
CG2013 05
JavaScript Hackathon for Students
Boost.Coroutine
Van laarhoven lens
Html canvas shooting_and_performanceup
C++0x in programming competition
Arctic.js
Continuation with Boost.Context
Canvas de shooting 制作のポイント
コルーチンの使い方
20分くらいでわかった気分になれるC++20コルーチン
openFrameworks基礎 たくさんの図形を動かす 静的配列と動的配列 - 芸大グラフィックスプログラミング演習B
コルーチンを使おう
Ad

Viewers also liked (6)

PDF
Feed Silo Shipment
PDF
ECO SPIN MOD BROCHURE
DOC
Resume -Dinesh Sharma
PDF
第三回 冬のスイッチ大勉強会 - Particle編 -
DOCX
Modul taaruf dan ukhuwah
PDF
第二回 冬のスイッチ大勉強会 - FullColorLED & MPU-6050編 -
Feed Silo Shipment
ECO SPIN MOD BROCHURE
Resume -Dinesh Sharma
第三回 冬のスイッチ大勉強会 - Particle編 -
Modul taaruf dan ukhuwah
第二回 冬のスイッチ大勉強会 - FullColorLED & MPU-6050編 -
Ad

Similar to Processing workshop v3.0 (20)

PDF
riscv instruction sets lets-impl-rv32i.pdf
PDF
PWAnight_20221019_クリエイティブコーディングとは?
PDF
仮想記憶の構築法
PDF
Pfi Seminar 2010 1 7
PDF
データサイエンスワールドからC++を眺めてみる
PDF
x86とコンテキストスイッチ
PDF
Ssaw08 0916
PDF
TypeScript 1.0 オーバービュー
PDF
C base design methodology with s dx and xilinx ml
PDF
仮想記憶入門 BSD-4.3を例題に
PDF
VerilatorとSystemC
PDF
Burikaigi 2023「C# Live Coding!」 小島の分
PDF
Node.js × 音声認識 - 東京Node学園 2012 LT枠 6番目
PDF
Synthesijer and Synthesijer.Scala in HLS-friends 201512
PPTX
Boost jp9 program_options
PPTX
Develop Web Application with Node.js + Express
PDF
Microsoft SQL Serverソースエンドポイント-スタンドアロン環境での非sysadminユーザーのセットアップ
PDF
coma Study Room vol.2 Arduino Workshop
PDF
ノンプログラマーでも明日から使えるJavaScript簡単プログラム 先生:柳井 政和
riscv instruction sets lets-impl-rv32i.pdf
PWAnight_20221019_クリエイティブコーディングとは?
仮想記憶の構築法
Pfi Seminar 2010 1 7
データサイエンスワールドからC++を眺めてみる
x86とコンテキストスイッチ
Ssaw08 0916
TypeScript 1.0 オーバービュー
C base design methodology with s dx and xilinx ml
仮想記憶入門 BSD-4.3を例題に
VerilatorとSystemC
Burikaigi 2023「C# Live Coding!」 小島の分
Node.js × 音声認識 - 東京Node学園 2012 LT枠 6番目
Synthesijer and Synthesijer.Scala in HLS-friends 201512
Boost jp9 program_options
Develop Web Application with Node.js + Express
Microsoft SQL Serverソースエンドポイント-スタンドアロン環境での非sysadminユーザーのセットアップ
coma Study Room vol.2 Arduino Workshop
ノンプログラマーでも明日から使えるJavaScript簡単プログラム 先生:柳井 政和

Processing workshop v3.0