
円を2D図形上を移動させよう
CIRCLE-0500 円を少しづつ大きくしてX軸上を往復運動させるプログラムです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
//=========================================== // 円の往復によるパターン //=========================================== // CreationDate:2025年2月6日 木曜日14:04:00 //=================【環境設定】================ size(400, 400); //画面サイズ translate(200, 200); //原点を移動 //=================【初期設定】================ noFill(); //塗りつぶしなし int dt=4; //円の移動距離(Distance traveled) int r=40; //円の半径 int x=0, y=0; //XY座標初期化 //==================メイン==================== for (int i=1; i<=100; i++) { //100回繰り返す if ( i % 10==0) { // i を10で割った時の余りが0の時に dt=-dt; //円の進行方向を反転させる } circle(x, y, r); //円を描く r=r+8; //円を大きくする x=x+dt; //円を移動 } |

参考
X1ターボ/X1シリーズ・プログラム200選 特選グラフィックスデザイン 共著;畠中兼司・北尾和信 発行日:昭和60年5月1日初版発行 発行所:株式会社 学習研究社
CIRCLE-0501 この円に交互に色を付けてみます。今回は小さい円から大きくするのではなく、大きい円から小さくしていきます。小さい円からだと塗りつぶしが上書きされてしまい、全面がただ1色の平面になってしまうからです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
//=========================================== // 円の往復によるパターン2 //=========================================== // CreationDate:2025年2月6日 木曜日16:55:58 //=================【環境設定】================ size(400, 400); //画面サイズ translate(200, 200); //原点を移動 //=================【初期設定】================ noStroke(); //塗りつぶしなし int dt=4; //円の移動距離(Distance traveled) int d=600; //円の直径(diameter) int x=0, y=0; //XY座標初期化 int sw=0; //色の変更スイッチ //==================メイン==================== for (int i=100; i>1; i--) { //100回繰り返す if ( i % 10==0) { // i を10で割った時の余りが0の時に dt=-dt; //円の進行方向を反転させる } //swが0か1で色を変更する if (sw==0 ) {fill(#D6D6B5); sw=1;} else {fill(#769583); sw=0;} circle(x, y, d); //円を描く d=d-6; //円を小さくする x=x+dt; //円を移動 } |

CIRCLE-0502 正三角形上を円が移動していきます。swith文を使って進行方向を変えています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
//=========================================== // 正三角形上を移動する円のパターン //=========================================== // CreationDate:2025年2月6日 木曜日20:50:14 //=================【環境設定】================ size(400, 400); translate(200, 200); //=================【初期設定】================ float a=3; //正三角形の一辺 float x=0, y=-a/2; //X,Y座標 float d=20; //円の初期直径 noFill(); //塗りつぶしなし //==================メイン==================== for (int t =1; t<=9; t++) { //9回繰り返し int sw= t % 3; // 移動スイッチ for ( int i=0; i<=10; i++) { //10回繰り返し circle(x, y, d); //円の描画 switch(sw) { case 1: //正三角形の頂点から右下へ移動 x=x+a/2; y=y+a*sqrt(3)/2; break; case 2: //右下から左下へ x=x-a; break; default: //左下から頂点へ x=x+a/2; y=y-a*sqrt(3)/2; break; } d=d+a*2; //円を大きくする } } |


CIRCLE-0503 正方形上を円が移動していきます。switch文で正方形の一辺を移動させています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
//=========================================== // 正方形上を移動する円のパターン //=========================================== // CreationDate:2025年2月13日 木曜日17:00:03 //=================【環境設定】================ size(400, 400); translate(200, 200); scale(1,-1); //=================【初期設定】================ float a=3; //正方形の一辺 float x=-a/2, y=a/2; //X,Y座標 float d=20; //円の初期直径 noFill(); //塗りつぶしなし //==================メイン==================== for (int t =1; t<=9; t++) { //9回繰り返し int sw= t % 4; // 移動スイッチ for (int i=0; i<=10; i++) { //10回繰り返し circle(x, y, d); //円の描画 switch(sw) { case 1: //正方形の左上から右上へ移動 x=x+a; break; case 2: //右上から右下へ y=y-a; break; case 3: //右下から左下へ x=x-a; break; default: //左下から左上へ y=y+a; break; } d=d+a*2; //円を大きくする } } |

CIRCLE-0504 円周上を移動させます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
//=========================================== // 円周上を移動する円 //=========================================== // CreationDate: 2025年2月18日 火曜日16:56:53 //=================【環境設定】================ size(400, 400); //画面サイズ translate(width/2, height/2); //原点を移動 //=================【初期設定】================ noFill(); float x=0; float y=0; //円の初期位置 float r=600; //円の半径(変更可) float r2=10; //移動半径(変更可) //==================メイン==================== for (float th=0; th<r*3; th+=radians(20)) { //0から始めて20度増分し〜r*3まで{ }内を繰り返す x=r2*cos(th); // 円を移動する y=r2*sin(th); circle(x, y, r); //円を描画 r=r-10; //円の半径を次第に小さくする } |


コメント