boolean drawFlag = true;  //謠冗判繧定。後≧繧ソ繧、繝溘Φ繧ー縺九←縺�°繧呈アコ螳壹☆繧九€�

void setup() {
  size(400, 400);
}

void draw() {

  if (drawFlag) {  //謠冗判繧ソ繧、繝溘Φ繧ー縺ァ縺ゅl縺ー

    background(255);
    float cx = width/2;  //蜀��荳ュ蠢�(x)
    float cy = height/2;  //蜀��荳ュ蠢�(y)
    float innerRadius = 0;  //蜀��縺ョ貂ヲ縺ョ蜊雁セ�
    float outerRadius = 0;  //螟門�縺ョ貂ヲ縺ョ蜊雁セ�

    float innerRadiusBlur = 0;  //蜀��縺ョ貂ヲ縺ョ蜊雁セ��豁ェ縺ソ譛€螟ァ蛟、
    float outerRadiusBlur = 0;  //螟門�縺ョ貂ヲ縺ョ蜊雁セ��豁ェ縺ソ譛€螟ァ蛟、
    float innerRadiusBlurTarget = 0;  //蜀��縺ョ貂ヲ縺ョ蜊雁セ��豁ェ縺ソ譛€螟ァ蛟、縺ョ逶ョ讓吝€、
    float outerRadiusBlurTarget = 10;  //蜀��縺ョ貂ヲ縺ョ蜊雁セ��豁ェ縺ソ譛€螟ァ蛟、縺ョ逶ョ讓吝€、
    float angle = 0.1;  //蜀��縺ョ貂ヲ縺ィ螟門�縺ョ貂ヲ繧呈磁邯壹☆繧狗キ壹�蛯セ縺�
    float angleTarget = 0.1;  //蜀��縺ョ貂ヲ縺ィ螟門�縺ョ貂ヲ繧呈磁邯壹☆繧狗キ壹�蛯セ縺阪�逶ョ讓吝€、

    for (int i=0; i<200; i++) {

      innerRadius += 1.3;  //蜀��縺ョ貂ヲ縺ョ蜊雁セ�r谿オ髫守噪縺ォ螟ァ縺阪¥縺励※縺�¥
      outerRadius += 2.3;  //蜀��縺ョ貂ヲ縺ョ蜊雁セ�r谿オ髫守噪縺ォ螟ァ縺阪¥縺励※縺�¥

      if (random(20) > 18) {  // 10%縺ョ遒コ邇�〒
        innerRadiusBlurTarget = random(30);  //蜀��縺ョ豁ェ縺ソ譛€螟ァ驥上r螟画峩縺吶k 譛€菴�0 -> 譛€螟ァ30
      }
      if (random(20) > 18) {  // 10%縺ョ遒コ邇�〒
        outerRadiusBlurTarget = 30 + random(30);  //螟門�縺ョ豁ェ縺ソ譛€螟ァ驥上r螟画峩縺吶k 譛€菴�30 -> 譛€螟ァ60
      }
      if (random(20) > 19) {  // 5%縺ョ遒コ邇�〒
        angleTarget = random(PI)*0.3 + 0.2;  //蜀��縺ョ貂ヲ縺ィ螟門�縺ョ貂ヲ繧呈磁邯壹☆繧狗キ壹�蛯セ縺阪�逶ョ讓吝€、繧貞、画峩縺吶k 譛€菴�0.2 -> 譛€螟ァ マ€縺ョ30%+0.2
      }

      innerRadiusBlur += (innerRadiusBlurTarget - innerRadiusBlur)/10.0;  //逶ョ讓吝€、縺ォ蜷代°縺」縺ヲ繧、繝シ繧ク繝ウ繧ー繧偵°縺代↑縺後i霑代▼縺代※縺�¥
      outerRadiusBlur += (outerRadiusBlurTarget - outerRadiusBlur)/10.0;  //逶ョ讓吝€、縺ォ蜷代°縺」縺ヲ繧、繝シ繧ク繝ウ繧ー繧偵°縺代↑縺後i霑代▼縺代※縺�¥
      angle += (angleTarget - angle)/20.0;  //逶ョ讓吝€、縺ォ蜷代°縺」縺ヲ繧、繝シ繧ク繝ウ繧ー繧偵°縺代↑縺後i霑代▼縺代※縺�¥

      //p1縺ッ蜀��縺ョ貂ヲ縺ョ菴咲スョ繧呈アコ螳壹☆繧�
      float radian = TWO_PI / 100.0 * i;  //隗貞コヲ 0 -> 4マ€ (720蠎ヲ)
      float radius = innerRadius + innerRadiusBlur;  //蜊雁セ� 蝓コ譛ャ蛟、 + 繝悶Ξ蛟、
      float p1x = cos(radian) * radius + cx; 
      float p1y = sin(radian) * radius + cy; 
      
      //p2縺ッ蜀��縺ョ貂ヲ縺ョ菴咲スョ繧呈アコ螳壹☆繧�
      radian += angle;  //蜀��縺ョ隗貞コヲ縺ォ縲悟�蛛エ縺ョ貂ヲ縺ィ螟門�縺ョ貂ヲ繧呈磁邯壹☆繧狗キ壹�蛯セ縺阪€阪r蜉�邂励☆繧�
      radius = outerRadius + outerRadiusBlur;  //蜊雁セ� 蝓コ譛ャ蛟、 + 繝悶Ξ蛟、
      float p2x = cos(radian) * radius + cx; 
      float p2y = sin(radian) * radius + cy; 

      line(p1x, p1y, p2x, p2y);
    }
    drawFlag = false;  //謠冗判縺檎オゆコ�@縺溘�縺ァ繝輔Λ繧ー繧断alse縺ォ縺励※縺翫¥
  }
}
void mousePressed() {
  drawFlag = true;  //謠冗判繧ソ繧、繝溘Φ繧ー縺ォ縺吶k
}