放射状に広がる
閾値により、スイッチがオンオフするプログラム例です。マウスのx座標が、閾値(今の場合画面幅の二分の一)を超えたら、スイッチが入り、円が放射状に広がります。スイッチのoffとonの位置をユーザに示すため、画面下部に「off | on」と表示しました。文字を画面に表示する方法は、基本関数の「タイポグラフィ」セクションで説明しています。【リストRadial】では次の部分が、文字描画のためのフォントの準備です。「タイポグラフィ」セクションの【2】の方法を使っています。
PFont f; //フォントデータオブジェクト用変数の準備
f = createFont("Arial", 14); //文字を描くためのフォントの準備
textFont(f); //PFontオブジェクトの設定
textAlign(CENTER, CENTER); //描く文字列の中央の座標を指定
【リストRadial】
int wide=150; // 画面の大きさ
float len; // 円が描かれる円周の半径
float x; // 円のx座標
float y; // 円のy座標
float centerX; // 画面の中央
float centerY; // 画面の中央
float level; // 閾値
boolean move = false;
int degree= 10; //放射線の間隔角度
float init=0; //移動速度の初期値
float s = init; // 移動速度
float a = 0.3; // 加速
float d = 10; // 円の直径
PFont f; //フォントデータオブジェクト
void setup() {
size(wide,wide);
frameRate(30); //1秒に30回再描画
centerX=width/2.0; // 画面の中央
centerY=height/2.0; // 画面の中央
x=centerX; // 中心点、はじめは画面の中央
y=centerY;
level=centerX; // 閾値
noStroke(); // 線は引かない
f = createFont("Arial", 14); //文字を描くためのフォントの準備
textFont(f);
textAlign(CENTER, CENTER); //描く文字列の中央の座標を指定
}
void draw() {
background(255); //モニタ画面の背景を白でクリア
if(move){ //移動中
if(len>=wide/2) { //十分広がったら、はじめに戻す
move= false;
x=centerX; y=centerY;
s=init; //移動速度の初期値
len=0;
}
s = s + a;
len = len+s;
} else { //移動していないとき
if( mouseX >= level){ //マウスの位置が閾値を越え、スイッチが入った
move = true;
}
}
fill(200, 0, 0); //赤で、円周上にdegree(10)度の間隔で、円を描く
for(float angle=0; angle<360; angle=angle+degree){
x = centerX + len*cos(radians(angle));
y = centerY - len*sin(radians(angle));
ellipse(x, y, d,d);
}
fill(0); //画面下部に、黒で、off | onの文字を描く
text("off", centerX/2, height-10);
text("|", centerX, height-10);
text("on", 3*centerX/2, height-10);
}