チュートリアル | (トピック一覧へ戻る) |
import processing.opengl.*; import igeo.*; size( 480, 360, IG.GL ); for( int i=0; i < 10; i++ ){ new IPoint(i, 0, 0); }
上記のスケッチは以下と同義となります。
import processing.opengl.*; import igeo.*; size( 480, 360, IG.GL ); new IPoint(0,0,0); // 1st execution. i=0 new IPoint(1,0,0); // 2nd execution. i=1 new IPoint(2,0,0); // 3rd execution. i=2 new IPoint(3,0,0); // 4th execution. i=3 new IPoint(4,0,0); // 5th execution. i=4 new IPoint(5,0,0); // 6th execution. i=5 new IPoint(6,0,0); // 7th execution. i=6 new IPoint(7,0,0); // 8th execution. i=7 new IPoint(8,0,0); // 9th execution. i=8 new IPoint(9,0,0); //10th execution. i=9
カウンタ変数(i)がゼロ(0)から始まり、反復回数が(N)である場合、(i)の最大値は(N-1)となることに注意してください。 上記の例においては、反復回数が10であるため、カウンタ変数(i)は最小値0から最大値9となっています。
右側の図でFor文の処理の流れを確認します。
カウンタ変数 i の反復処理の中での用い方によって様々な形状を生成することができます。
import processing.opengl.*; import igeo.*; size( 480, 360, IG.GL ); for( int i=0; i < 10; i++){ new IPoint(0, 0, i*5); }
点をX軸で反復させる代わりに、このスケッチではZ軸で5ユニット間隔で反復しています。 以下のスケッチでは各点をカウンタ変数に基づいた色に設定しています。
import processing.opengl.*; import igeo.*; size( 480, 360, IG.GL ); for( int i=0; i < 10; i++){ new IPoint(0, 0, i*5).clr(i*0.1,0,0); }
以下のスケッチもカウンタ変数を引数に用いるもうひとつの例です。
import processing.opengl.*; import igeo.*; size( 480, 360, IG.GL ); for( int i=0; i < 10; i++){ new IPoint(i*10-50, 10-i*5, i*4).clr(i*0.1, 1.0-i*0.1, 0); }
動作の理解のために以下のスケッチでは上記のスケッチをFor文を使わず実装しています。
import processing.opengl.*; import igeo.*; size( 480, 360, IG.GL ); new IPoint(-50, 10, 0).clr( 0, 1.0, 0); // i=0 new IPoint(-40, 5, 4).clr(0.1, 0.9, 0); // i=1 new IPoint(-30, 0, 8).clr(0.2, 0.8, 0); // i=2 new IPoint(-20, -5, 12).clr(0.3, 0.7, 0); // i=3 new IPoint(-10, -10, 16).clr(0.4, 0.6, 0); // i=4 new IPoint( 0, -15, 20).clr(0.5, 0.5, 0); // i=5 new IPoint( 10, -20, 24).clr(0.6, 0.4, 0); // i=6 new IPoint( 20, -25, 28).clr(0.7, 0.3, 0); // i=7 new IPoint( 30, -30, 32).clr(0.8, 0.2, 0); // i=8 new IPoint( 40, -35, 36).clr(0.9, 0.1, 0); // i=9
以下のスケッチでは三角法関数sinとcosを利用し、螺旋形状を生成しています。
import processing.opengl.*; import igeo.*; size( 480, 360, IG.GL ); for( int i=0; i < 10; i++){ new IPoint(sin(i*0.5)*20, cos(i*0.5)*20, i*10-50).hsb(i*0.1,1,1); }
import processing.opengl.*; import igeo.*; size( 480, 360, IG.GL ); for(int i=0; i < 10; i++){ for(int j=0; j < 10; j++){ new IPoint(i*10, j*10, 0).clr(i*0.1, j*0.1, 0); } }
import processing.opengl.*; import igeo.*; size( 480, 360, IG.GL ); for(int i=0; i < 10; i++){ for(int j=0; j < 10; j++){ for(int k=0; k < 10; k++){ new IPoint(i*10, j*10, k*10).clr(i*0.1, j*0.1, k*0.1); } } }