teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

改善

2020/01/02 13:26

投稿

thkana
thkana

スコア7738

answer CHANGED
@@ -56,13 +56,38 @@
56
56
  fill(random(255), random(255), random(255), 50);
57
57
  ellipse(x, y, 10, 10);
58
58
 
59
- fill(#959592);
60
- rect(0, 1030, 2000, 50);
61
59
  break EXIT;
62
60
  }
63
61
  }
64
62
  }
63
+ fill(#959592);
64
+ rect(0, 1030, 2000, 50);
65
65
  }
66
66
  ```
67
67
  おおよそ梢のあたりでランダムに生成した点がいずれかの梢の末端から距離20以内だったら描画する、としてみた。
68
- どうでしょうね。![サンプル](31759eecd4189dd7bac1d0ca8d4db7e0.jpeg)
68
+ どうでしょうね。![サンプル](31759eecd4189dd7bac1d0ca8d4db7e0.jpeg)
69
+
70
+ ---
71
+ 改善案
72
+ 乱数で「ハズレだったらもう一度」方式は、現実的には大丈夫だけどリクツの上では「永遠に欲しい値が得られない」という可能性があるので、あまり気持ちよくない。
73
+ 「梢の一つを乱数で選んで、そこから半径20の範囲のどこかに円を描く」に変えてみる。実用上ほぼ変わらないけれど。
74
+ それと全く質問に関係ない変更をひとつ。
75
+ ```Processing
76
+ void draw() {
77
+ int n=(int)random(0, bow.size());
78
+ float r=random(0, 20);
79
+ float th=random(0, PI*2);
80
+ x=bow.get(n).x+r*cos(th);
81
+ y=bow.get(n).y+r*sin(th);
82
+
83
+ noStroke();
84
+ colorMode(HSB,255,255,255,100);
85
+ fill(random(255), 255, 255, 50);//HSBでこうした方が色が華やかになるかな
86
+ ellipse(x, y, 10, 10);
87
+ colorMode(ARGB);
88
+
89
+ fill(#959592);
90
+ rect(0, 1030, 2000, 50);
91
+ }
92
+ ```
93
+ ![サンプル2](2190bc069b1605356055f3baf275737a.jpeg)