Processingマニュアル

Processingリファレンスマニュアル Ver.1.1.2

基本的な関数

 

■ void setup() { }

プログラムがスタートしたときに一回だけ呼ばれる関数。初期化処理に使用する

 

■ void draw() { }

setup()関数のあとに呼ばれる関数。関数内のコードを繰り返し実行する

 

■ size() ウインドウサイズや描画モードの設定

size(640, 480);

size(640, 480, P3D); 3D表示の場合

 

■ void 戻り値のない関数を意味する

 

 

ウインドウ表示

 

■ width, height

システム変数。ウインドウの幅と高さを保持

 

■ frameRate() フレームレート(1秒間に画面を更新する回数)の設定

指定しない場合は毎秒60フレーム

frameRate(30);

 

■ frameCount 累計のフレーム数

 

 

変数

 

■ データ型

int                   整数  例 整数型の変数aを宣言する int a;

long                整数 64bit

float                浮動小数点数(実数)  例 実数型の変数aを宣言する float a;

double             浮動小数点数 64bit

boolean            論理値 true(真) または false(偽)

char                文字(1文字)

String              文字列

color                色

PImage            画像 .png、.jpg、.gif が扱える

 

■ 変数のスコープ 変数の有効範囲のこと

グローバル変数

setup()の前に最初に宣言された変数は、どこからでも使える

ローカル変数

setup()ブロックの中で作られた変数は、setup()の中でだけ有効。同様にブロック(波カッコ { } で囲まれた範囲)の中で作られた変数は、そのブロックの中でだけ有効

 

■ データ型の変換

int(a) または (int)a 整数に変換

float(a) または (float)a 浮動小数点数に変換

 

 

定数

 

■ PI

円周率 3.14159265358979323846

 

 

配列とアレイリスト

 

■ [] 1次元配列

int[] numbers = new int[3];

numbers[0] = 10;

numbers[1] = 20;

numbers[2] = 30;

 

■ [][] 2次元配列

int[][] numbers = new int[3][3];

numbers[0][0] = 10;

 

ArrayList オブジェクト配列用のクラス オブジェクトの追加と削除が容易

ArrayList<Ball> ball;

ball = new ArrayList<Ball>();

ball.add(new Ball());

for (int i = ball.size ()-1; i >= 0; i–) {

Ball b = ball.get(i);

b.update();

if (b.life <= 0) {

ball.remove(i);

}

b.display();

}

 

 

演算子

 

インクリメント・デクリメント

++                  a++     aに1を足す

– –                   a – –     aから1を引く

加減乗除

+                    a + b

–                     a – b

*                    a * b

/                     a / b

 

剰余

%                   a % b   aをbで割った余り

 

大小関係

>                    a > b

<                    a < b

<=                  a <= b

>=                  a >= b

 

等号と不等号

==                  a == b            aとbが等しい

!=                   a != b              aとbが等しくない

 

代入

=                    a = 5               aに5を代入

+=                  a += 5            aに5を足したものを代入 a = a + 5 と同じ

-=                   a -= 5            aから5を引いたものを代入

*=                  a *= 5            aに5をかけたものを代入

/=                   a /= 5            aを5で割ったものを代入

%=                 a %= 5            aを5で割った余りを代入

 

論理積と論理和と否定

論理積

&&                  a && b             aかつb

論理和

||                    a || b              aまたはb

否定

!                     !a                   aの否定

 

論理演算

&&       全てがtrueのときのみtrue

true && false → false

false && true → false

true && true → true

false && false → false

 

||         ひとつでもtrueのときtrue

true || false → true

false || true → true

true || true → true

false || false → false

 

NAND   !(A&&B)

NOR     !(A||B)

XOR     (A&&(!B)) || ((!A)&&B)

 

 

関数

 

算術関数

abs(a)              aの絶対値

sqrt(a)             aの平方根

sq(a)               aの2乗

pow(a, b)         aのb乗

exp(a)             eのa乗

log(a)              自然対数

round(a)          小数点以下を四捨五入

floor(a)            小数点以下を切り捨て

ceil(a)              小数点以下を切り上げ

min(a, b)         最小値

max(a, b)         最大値

dist(x1, y1, x2, y2)       2点間の距離

map(a, b, c, d, e)         aを範囲b-cから別の範囲d-eへ変換

 

三角関数

sin(a)              サイン

cos(a)              コサイン

tan(a)              タンジェント

asin(a)             アークサイン

acos(a)            アークコサイン

atan(a)            アークタンジェント

degrees(a)       角度の単位をラジアンから度へ変換

radians(a)        角度の単位を度からラジアンへ変換 180度はπ(パイ)ラジアン

 

■ random() 乱数の生成

random(1, 5)    1以上5未満の乱数(float)を生成

random(5)       0以上5未満の乱数(float)を生成

 

■ noise() パーリンノイズの生成。戻り値は0.0から1.0の間の値(float)

noise(1)
noise(1, 1)
noise(1, 1, 1)

自作の関数の例

void myFunc1(){println(1);}                            戻り値なし、引数なし

void myFunc2(int n){println(n);}                     戻り値なし、引数あり

int myFunc3(){return 1;}                                戻り値あり、引数なし

int myFunc4(int m, int n){return m*n;}            戻り値あり、引数あり

 

 

条件分岐と繰り返し

 

■ if~else 条件分岐

【構文】

if (式) {

} else if(式) {

} else {

}

 

式 真か偽の判定に使われる条件式

文 判定の結果実行される1つまたは複数の文

 

例1

int a=5;

if (a==5) {

println(“a=5”);

}

 

例2

for (int i = 5; i < 95; i++) {

if (i < 35) {

line(30, i, 80, i);

} else if (i < 65) {

line(20, i, 90, i);

} else {

line(0, i, 100, i);

}

}

 

■ for 繰り返し

【構文】

for (初期化; 条件式; 更新) {

}

 

初期化 繰り返しの最初に1度だけ実行される文

条件式 評価の結果が真(true)ならば文が実行される

更新 各回の処理の最後に実行される文

文 判定の結果実行される1つまたは複数の文

 

for (int i = 0; i < 40; i++) {

line(30, i, 80, i);

}

 

■ while 繰り返し

【構文】

while (式) {

}

 

式 真か偽の判定に使われる条件式

文 判定の結果実行される1つまたは複数の文

 

int i = 0;

while (i < 80) {

line(30, i, 80, i);

i = i + 5;

}

 

■ switch()~case 分岐処理

【構文】

switch(式) {

case label1:

case label2:

default:

}

 

int num = 1;

switch(num) {

case 0:

println(“Zero”);

break;

case 1:

println(“One”);

break;

default:

println(“None”);

break;

}

 

■ breakとcontinue

break               ブロックからの脱出

continue           処理をスキップする

 

 

図形の描画

 

■ 2次元図形

point(x、y)                                         座標(x, y)に点を打つ

line(x1, y1, x2, y2)                             始点と終点の座標を指定して直線を描く

triangle(x1, y1, x2, y2, x3, y3)            3点の座標を指定して三角形を描く

rect(x, y, w, h)                                   座標、幅、高さを指定して長方形を描く

quad(x1, y1, x2, y2, x3, y3, x4, y4)     4点の座標を指定して四角形を描く

arc(x, y, w, h, start, stop)                    角度を指定して円弧を描く

ellipse(x, y, w, h)                                座標、幅、高さを指定して楕円を描く

 

■ 3次元図形

box(w, h, d)                ボックスを描く

sphere(r)                     半径rの球を描く

 

■ バーテックス

beginShape()               頂点の定義を始める

vertex(x, y)                 頂点を定義する

endShape()                 頂点の定義を終える

 

■ PGraphics このクラスを用いるとオフスクリーンのグラフィックスバッファーに描画できる

createGraphicsでコンテキストを生成しbeginDraw()とendDraw()の間に記述した各種メソッドで描画する

PGraphics alpha;

alpha = createGraphics(50, 50);

alpha.beginDraw();

alpha.noStroke();

alpha.fill(150, 150, 255);

alpha.ellipse(25, 25, 10, 10);

alpha.endDraw();

image(alpha, 25, 25);

 

座標変換

 

translate(x, y)              座標を(x, y)だけ移動する。効果は蓄積する。draw()でリセットされる

rotate(a)                      aラジアン回転させる。効果は蓄積する。draw()でリセットされる

rotateX(a)                    x軸を基準に回転させる

rotateY(a)                    y軸を基準に回転させる

rotateZ(a)                    z軸を基準に回転させる

scale(x, y)                   拡大と縮小

pushMatrix()                現在の座標系をスタックに保存

popMatrix()                 元の座標系をスタックから取り出す

 

 

 

background(r, g, b, alpha) または background(gray)       背景色を設定

stroke(r, g, b, alpha) または stroke(gray)                       線の色を指定

noStroke()                                                                線や輪郭を描画しない

fill(r, g, b, alpha) または fill(gray)                                            塗り色を指定

noFill()                                                                     図形内部の色を塗らない

color(r, g, b, alpha) または color(gray)                          色を作成

 

colorMode(HSB , max1, max2, max3)    色相・彩度・明度で指定するHSBモードに切り替え

colorMode(HSB, 360, 100, 100);

color bg = color(180, 50, 50);

background(bg);

 

 

描画時の属性

 

strokeWeight(w)           線の太さを指定

smooth()                     滑らかな描画(アンチエイリアス)を有効化 最初から有効化されている

 

 

画像

 

画像表示

PImage                                  画像を扱うクラス 例 PImage img;

loadImage()                            画像を読み込む

例 img = loadImage(“myimage.jpg”);

createImage(w, h, RGB)            バッファを作成する

image(img, x, y, width, height) 画像を表示する

例 image(img, 0, 0); 幅と高さは省略可

tint(r, g, b, alpha)                    画像に色を付ける

imageMode(mode)       modeがCORNERのとき画像の左上、CENTERの時中心を基準

background(img)         背景に画像を表示する 画像はスケッチウインドウと同サイズであること

 

画像表示例

PImage img;

img = loadImage(“myimage.jpg”);

image(img, 0, 0);

 

 

 

■ フィルター処理

二値化

PImage img;

img = loadImage(“apples.jpg”);

image(img, 0, 0);

filter(THRESHOLD);

 

差分

background(loadImage(“rockies.jpg”));

PImage img = loadImage(“bricks.jpg”);

image(img, 0, 0);

blend(img, 0, 0, 33, 100, 67, 0, 33, 100, DIFFERENCE );

 

■ ピクセル処理

loadPixels();

for (int y = 0; y < height; y++) {

for (int x = 0; x < width; x++) {

pixels[y * width + x] = color(255, 255, 255); // x列y行のピクセルを白にする

}

}

updatePixels();

 

 

文字の出力

 

text(stringdata, x, y, width, height) 文字を表示する

textSize() 文字の大きさを設定

 

 

フレームの保存

 

save(filename) 現在のフレームを保存

save(“abc.png”);

 

 

マウスとキーボード

 

■ マウス

mouseX                       マウスカーソルの水平方向の位置

mouseY                       マウスカーソルの垂直方向の位置

pmouseX                     前のフレームでのマウスカーソルの水平位置

pmouseY                     前のフレームでのマウスカーソルの垂直位置

mouseDragged()          ボタンが押された状態でマウスが移動したときに呼び出される関数

mousePressed()            マウスボタンが押されると呼び出される関数

mouseReleased()          マウスボタンから指が離れたときに呼び出される関数

mouseClicked()            マウスボタンが押されてから離されたときに呼び出される関数

 

■ キーボード

keyPressed()                キーが押されるたびに呼び出される関数

keyReleased()              キーから指が離れたときに呼び出される関数

 

 

 

void keyPressed() {

if (key == ‘s’ || key == ‘S’) {

save(“result.png”);

}

}

 

上矢印キーのときは if (keyCode == UP) {}

UPと同様に DOWN, LEFT, RIGHTも使える

 

 

コンソール出力

 

println(data)                コンソール(下部の黒い領域)へ出力する

 

 

時間

 

■ 経過時間

millis()             プログラムを起動してからの時間をミリ秒単位で返す

 

void timer() {

float time0 = millis();

float time1=0;

while (time1 < 5000) {

time1 = millis() – time0;

}

}

 

■現在時刻

second()          秒

minute()          分

hour();            時

 

void draw() {

background(204);

int s = second();

int m = minute();

int h = hour();

line(s, 0, s, 33);

line(m, 33, m, 66);

line(h, 66, h, 100);

}