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);
}