processingの基本文法まとめ
大学の授業でProcessingを扱っており、テスト対策のために文法を煩雑ですがまとめましたので、誰かのお役に立てればと思いあげておきます。
基本文法
関数の定義
戻り値の型 関数名(仮引数の宣言){
処理
return文(戻り値)
}
画面サイズを決定する
size(x, y);
コメント
- その行のみ
// コメント
- 内部全体
/*
コメント
*/
変数の型
int 整数
double, float 小数
bool 真偽値
color 色データ
String 文字列
キャスト
a = (型) 式
繰り返し
for( 初期化の式1; 繰り返すかどうか調べる式2; 変化のための式3){
繰り返す処理;
}
while( 繰り返すかどうか調べる式){
繰り返す処理;
}
do{
最低1回は処理し,繰り返す処理;
} while( 繰り返すかどうか調べる式);
ランダム
random(最大値)
random(最低値, 最大値)
random() 0以上1未満で乱数を発生
2点間の距離を求める
dist(x1, y1, x2, y2)
map関数
map(a, b, c, d, e) //aを範囲b-cから別の範囲d-eへ変換する
演算子
記号 | 名前 |
---|---|
+= | 加算代入 |
-= | 減算代入 |
*= | 乗算代入 |
/= | 除算代入 |
%= | 剰余代入 |
インクリメント演算子
++a // a=a+1のこと
b = ++a //a=a+1, b=a のこと。先にインクリメントする(a=3の時、b=4となる)
b = a++ // b=a, a=a+1 のこと。 代入後にインクリメントする(a=3の時、b=3となる)
絵画関数
線を描く
line(始点のx座標, 始点のy座標, 終点のx座標,終点のy座標);
点を描く
point(x座標, y座標);
矩形(長方形、正方形)を描く
rect(左上角のx座標, 左上角のy座標, 矩形の幅, 矩形の高さ);
※[rect()関数の座標指定方法の変更]
rectMode(CORNER); → 左上角の座標で指定(指定なしと同様)
rectMode(CENTER); → 中心の座標で指定
四辺形を描く
quad(点1のx座標, 点1のy座標,点2のx座標, 点2のy座標,点3のx座標, 点3のy座標,点4のx座標, 点4のy座標);
三角形を描く
triangle(角1のx座標, 角1のy座標,角2のx座標, 角2のy座標,角3のx座標, 角3のy座標);
円を描く
ellipse(中心のx座標, 中心のy座標, 楕円の幅, 楕円の高さ);
弧を描く
arc(中心x座標, 中心y座標, 幅, 高さ, 始まり角度,終わり角度);
曲線を描く
bezier(点1のx座標(x1), 点1のy座標(y1),制御点1のx座標(cx1), 制御点1のy座標(cy1),制御点2のx座標(cx2), 制御点2のy座標(cy2),点2のx座標(x2), 点2のy座標(y2));
点を打って繋げる
beginShape();
vertex(点のx座標,点のy座標)
curveVertex(点のx座標,点のy座標)
endShape(CLOSE);
endShape();
色をつける
(グレースケール・RGB・HSBが使える)
- 背景に色を付ける
background(選択したい色); - 縁の色を指定する
stroke(選択したい色); - 塗りつぶしの色を指定する
fill(選択したい色);
色の取り消しと線の太さ
- 線を取り消す
noStroke() - 線の太さを指定
strokeWeight() - 塗りつぶしをなくす(線だけ表示)
noFill()
色の各値の最大値を指定
colorMode(RGB, 255); //RGBの各値の最大値を255に設定
colorMode(HSB, 360, 100, 100); //HSBの各値の最大値を、H360,S100,B100に設定
文字を書く
text("文字列", x, y)
文字の大きさなど
//文字の大きさ
textSize(大きさ)
textAlign(文字の位置)
移動系
座標移動
translate(x軸方向の移動量, y軸方向の移動量);
座標回転
rotate(角度のラジアン値);
rotate(radians(角度));
座標系を保存する
pushMatrix(); 座標系を保存
popMatrix(); 座標系を取り出す
アニメーション
基本関数
void setup() {
一度だけ実行される
}
void draw() {
停止するまで繰り返される
}
フレームレート
frameRate(フレーム数)
イベントハンドラ
マウスを追跡
//現在のマウスの位置
mouseX, mouseY
//一つ前のフレームのマウスの位置
pmouseX, pmouseY
マウスをクリック
mousePressed
//押されたボタンを判別
mouseButton == LEFT //(LEFT, CENTER, RIGHT)
キーを押す
keyPressed //キーが押されているときだけtrue
keyReleased //キーを話しているときだけtrue
//最も新しく押されたキーを判別する変数
Key == 'n'
//カーソルキーを判別
keyCode == LEFT // (UP,DOWN,LEFT,RIGHT,ALT,CONTROL,SHIFT)
クラスなど
クラスの定義
class クラス名 {
処理
}
イニシャライザ(コンストラクタ)
コンストラクタ名 (引数){
ステートメント;
}
オブジェクト変数の宣言
クラス名 変数名; //参照型の変数の型という
変数名 = new コンストラクタ名(引数) //newを使ってインスタンスを初期化する
画像の利用
PImage 変数名;
変数名 = loadImage("画像URL");
image(変数名, x座標, y座標);
//svgの場合はこれ
loadShape("URL.svg");
//スケッチフォルダーの中に「data」というファイルがあるのでそこに入れる
CSVファイルの読み込み
loadStrings("ファイル名");
data = int(split(temp[0], ",")); //データをコンマdで分割して配列dataに代入
画像の書き出し
// 現在のウィンドウを画像として書きだす
save(ファイル名を指定); //.png, .jpg, .tif に対応
saveFrame()
ファイル出力
saveStrings("ファイル名", data);
3DCG
3Dライブラリ
P3D
OpenGL
import processing.opengl.*;
3次元座標系
size(x座標, y座標, P3D);
描画
sphere(半径) //星を作成
vertex(
照明
ambientLight() – 環境光源
directionalLight() –指向性光源
pointLight() – 点光源
spotLight() – スポットライト,スポット光源
カメラ
camera(mouseX, mouseY, 200, //Camera location
width/2.0, height/2.0, 0, //Camera target
0, 1, 0); //Camera orientation