回答編集履歴
2
見直しキャンペーン中
test
CHANGED
@@ -1,149 +1,78 @@
|
|
1
1
|
drawSakuraの中の意味は全く分かっていません。
|
2
|
-
|
3
2
|
元記事の、
|
4
|
-
|
5
3
|
> drawSakura(width/2, height/2, 130); // 横の位置、縦の位置、大きさ調整用変数
|
6
|
-
|
7
|
-
|
8
4
|
|
9
5
|
[Processing で描ける図形まとめ - Qiita#花びらが分かれていないタイプ](https://qiita.com/reona396/items/5fa4babc8243c4ed4914#%E8%8A%B1%E3%81%B3%E3%82%89%E3%81%8C%E5%88%86%E3%81%8B%E3%82%8C%E3%81%A6%E3%81%84%E3%81%AA%E3%81%84%E3%82%BF%E3%82%A4%E3%83%97)
|
10
6
|
|
11
|
-
|
12
|
-
|
13
7
|
から130を変えればよさそうに思いました。
|
14
|
-
|
15
8
|
実際に変えている範囲(50-200)は手調整で特に根拠はありません。
|
16
|
-
|
17
9
|
```Processing
|
18
|
-
|
19
10
|
int scale = 130; // 大きさに関する値(大きいほど拡大される)
|
20
|
-
|
21
11
|
boolean isExpand = true; // boolean型の変数isExpandを定義&初期化(trueで拡大)
|
22
12
|
|
23
|
-
|
24
|
-
|
25
13
|
void setup() {
|
26
|
-
|
27
14
|
size(500, 500);
|
28
|
-
|
29
15
|
}
|
30
16
|
|
31
|
-
|
32
|
-
|
33
17
|
void draw() {
|
34
|
-
|
35
18
|
background(255);
|
36
19
|
|
37
|
-
|
38
|
-
|
39
20
|
if (200 < scale) { // 縮小モードへ
|
40
|
-
|
41
21
|
isExpand = false;
|
42
|
-
|
43
22
|
} else if (scale < 50) { // 拡大モードへ
|
44
|
-
|
45
23
|
isExpand = true;
|
46
|
-
|
47
24
|
}
|
48
25
|
|
49
|
-
|
50
|
-
|
51
26
|
if (isExpand) { // 拡大
|
52
|
-
|
53
27
|
scale++;
|
54
|
-
|
55
28
|
} else { // 縮小
|
56
|
-
|
57
29
|
scale--;
|
58
|
-
|
59
30
|
}
|
60
31
|
|
61
|
-
|
62
|
-
|
63
32
|
noFill();
|
64
|
-
|
65
33
|
strokeWeight(2);
|
66
|
-
|
67
34
|
stroke(200, 0, 0);
|
68
|
-
|
69
35
|
drawSakura(width / 2, height / 2, scale); // 横の位置、縦の位置、大きさ調整用変数
|
70
|
-
|
71
36
|
}
|
72
37
|
|
73
|
-
|
74
|
-
|
75
38
|
void drawSakura(int ox, int oy, int or) {
|
76
|
-
|
77
39
|
pushMatrix();
|
78
|
-
|
79
40
|
translate(ox + 1, oy + 1);
|
80
|
-
|
81
41
|
beginShape();
|
82
|
-
|
83
42
|
for (int theta = 0; theta < 360; theta++) {
|
84
|
-
|
85
43
|
float A = (sin(radians(theta * 5)) + cos(radians(theta * 10))) / 2.0;
|
86
|
-
|
87
44
|
float B = A * 0.5 + 1.0;
|
88
|
-
|
89
45
|
float R = or * B;
|
90
|
-
|
91
46
|
float x = R * sin(radians(theta + 90));
|
92
|
-
|
93
47
|
float y = R * cos(radians(theta + 90));
|
94
48
|
|
95
|
-
|
96
|
-
|
97
49
|
vertex(x, y);
|
98
|
-
|
99
50
|
}
|
100
|
-
|
101
51
|
endShape(CLOSE);
|
102
|
-
|
103
52
|
popMatrix();
|
104
|
-
|
105
53
|
}
|
106
|
-
|
107
54
|
```
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
55
|
+
![アプリ動画](https://ddjkaamml8q8x.cloudfront.net/questions/2023-07-17/71e000ee-fe91-4fb1-bcfb-95285369859c.gif)
|
112
56
|
|
113
57
|
---
|
114
58
|
|
59
|
+
### 余談
|
60
|
+
|
115
61
|
ある数値iを、
|
116
|
-
|
117
62
|
```Processing
|
118
|
-
|
119
63
|
if (i < 10) {
|
120
|
-
|
121
64
|
i--;
|
122
|
-
|
123
65
|
}
|
124
|
-
|
125
66
|
if (0 < i) {
|
126
|
-
|
127
67
|
i++;
|
128
|
-
|
129
68
|
}
|
130
|
-
|
131
69
|
```
|
132
|
-
|
133
70
|
とした時、iの初期値が
|
134
|
-
|
135
71
|
* 0の場合、最初のifで-1になり次のifには一向に入らずどんどんマイナスになります
|
136
|
-
|
137
72
|
* 5の場合、最初のifで4になり次のifで5に戻り変化がなくなります
|
138
|
-
|
139
73
|
* 10の場合、最初のifには入らず次のifでどんどんプラスになります
|
140
74
|
|
141
|
-
|
142
|
-
|
143
75
|
なんとなくiは0-10の間を往復しそうな気がしますが、そうはなりません。
|
144
|
-
|
145
76
|
閾値を超えた(下回った)時に、モードを切り替えるbooleanを用意するのが常套手段です。
|
146
77
|
|
147
|
-
|
148
|
-
|
149
78
|
動きがあると楽しいですね。
|
1
コードハイライト名変更
test
CHANGED
@@ -14,7 +14,7 @@
|
|
14
14
|
|
15
15
|
実際に変えている範囲(50-200)は手調整で特に根拠はありません。
|
16
16
|
|
17
|
-
```
|
17
|
+
```Processing
|
18
18
|
|
19
19
|
int scale = 130; // 大きさに関する値(大きいほど拡大される)
|
20
20
|
|
@@ -114,7 +114,7 @@
|
|
114
114
|
|
115
115
|
ある数値iを、
|
116
116
|
|
117
|
-
```
|
117
|
+
```Processing
|
118
118
|
|
119
119
|
if (i < 10) {
|
120
120
|
|