回答編集履歴

1

見直しキャンペーン中

2023/07/28 17:02

投稿

TN8001
TN8001

スコア9326

test CHANGED
@@ -1,145 +1,74 @@
1
1
  > 現在のディスプレイウインドウです。虹色にする事ができません。
2
-
3
2
  > 下記の部分が間違っているのでしょうか。
4
-
5
-
6
3
 
7
4
  `stroke(angle, 100, 100)`のように書くときは、`HSB`モードを使用します(`colorMode(HSB, 360, 100, 100)`等)
8
5
 
9
-
10
-
11
6
  デフォルトは`RGB`モードですので、赤成分だけをいじっていることになります。
12
-
13
7
  それでは虹色にはなりようがありませんね?
14
-
15
-
16
8
 
17
9
  [colorMode / Processing.org](https://processing.org/reference/colorMode_.html)
18
10
 
19
-
20
-
21
11
  ---
22
-
23
-
24
12
 
25
13
  > lineの長さを変化させ、波打っているように見せる
26
14
 
27
-
28
-
29
15
  編集されたので取り下げたということだと思いますが、一応やってみました。
30
-
31
-
32
16
 
33
17
  完全にランダムだと波打っているようには見えないため、[noise](https://processing.org/reference/noise_.html)(パーリンノイズ)でやるのがいいんでしょう(よくわかっていませんが^^;
34
18
 
35
-
36
-
37
19
  単純にnoiseでやるとスムーズにつながらない部分が出るため、ググって出てきたこちらをそのまま使わわせていただきました。
38
-
39
20
  [周期的ノイズについて(2020.06.12) • Koji's Site](http://koji.jpn.org/mytweetprocessing/tw20200612/)
40
-
41
-
42
21
 
43
22
  しかし線がピクピクする(微妙に角度が変わる)のが気になります(精度の問題?? 線が十分長い(2000とか)と気にならないのですが^^;
44
23
 
45
-
46
-
47
24
  ```Processing
48
-
49
25
  import java.awt.Rectangle;
50
-
51
-
52
26
 
53
27
  Rectangle[] faces;
54
28
 
55
29
 
56
-
57
-
58
-
59
30
  void setup() {
60
-
61
31
  size(400, 400);
62
-
63
32
  // 色相 彩度 明るさ
64
-
65
33
  colorMode(HSB, 360, 100, 100);
66
-
67
34
  noFill();
68
35
 
69
-
70
-
71
36
  faces = new Rectangle[]{ new Rectangle(100, 100), };
72
-
73
37
  }
74
38
 
75
-
76
-
77
39
  void draw() {
78
-
79
40
  background(0);
80
-
81
-
82
41
 
83
42
  faces[0].setLocation(mouseX - 50, mouseY - 50);
84
43
 
85
-
86
-
87
44
  for (Rectangle face : faces) {
88
-
89
45
  niji(face);
90
-
91
46
  }
92
-
93
47
  }
94
48
 
95
-
96
-
97
49
  void niji(Rectangle rect) {
98
-
99
50
  pushMatrix();
100
-
101
51
  translate(rect.x + rect.width/2, rect.y + rect.height/2);
102
52
 
103
-
104
-
105
53
  for (int j = 1; j <= 50; j++) {
106
-
107
54
  // colorModeで色相を0~360に設定したので、jを度に変える 360°以上回っているので剰余をとって360内に収める
108
-
109
55
  stroke(degrees(j) % 360, 100, 100);
110
56
 
111
-
112
-
113
57
  // 周期的ノイズ 1のところを大きくすると変動が早くなる 小さくすると遅くなる
114
-
115
58
  float d = cnoise(degrees(j) + frameCount * 1, 360) * 30;
116
-
117
59
  // 上のforを j <= 500 とかにするとわかりやすいが、単純にnoiseだと3時の位置がスムーズに繋がらない
118
-
119
60
  //float d = noise((degrees(j) % 360) * 0.05, frameCount * 0.05) * 30;
120
61
 
121
-
122
-
123
62
  float l = 150 + d;
124
-
125
63
  line(cos(j) * 50, sin(j) * 50, cos(j) * l, sin(j) * l);
126
-
127
64
  }
128
-
129
65
  popMatrix();
130
-
131
66
  }
132
67
 
133
-
134
-
135
68
  // [周期的ノイズについて(2020.06.12) • Koji's Site](http://koji.jpn.org/mytweetprocessing/tw20200612/)
136
-
137
69
  float cnoise(float t, float c) {
138
-
139
70
  float p = t * TWO_PI / c;
140
-
141
71
  return noise(cos(p) + 1, sin(p) + 2);
142
-
143
72
  }
144
-
145
73
  ```
74
+ ![アプリ動画](https://ddjkaamml8q8x.cloudfront.net/questions/2023-07-29/e4251680-f768-4ee8-bbc2-647e5835cb69.gif)