回答編集履歴
2
見直しキャンペーン中
answer
CHANGED
@@ -1,75 +1,78 @@
|
|
1
|
-
drawSakuraの中の意味は全く分かっていません。
|
2
|
-
元記事の、
|
3
|
-
> drawSakura(width/2, height/2, 130); // 横の位置、縦の位置、大きさ調整用変数
|
4
|
-
|
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)
|
6
|
-
|
7
|
-
から130を変えればよさそうに思いました。
|
8
|
-
実際に変えている範囲(50-200)は手調整で特に根拠はありません。
|
9
|
-
```Processing
|
10
|
-
int scale = 130; // 大きさに関する値(大きいほど拡大される)
|
11
|
-
boolean isExpand = true; // boolean型の変数isExpandを定義&初期化(trueで拡大)
|
12
|
-
|
13
|
-
void setup() {
|
14
|
-
size(500, 500);
|
15
|
-
}
|
16
|
-
|
17
|
-
void draw() {
|
18
|
-
background(255);
|
19
|
-
|
20
|
-
if (200 < scale) { // 縮小モードへ
|
21
|
-
isExpand = false;
|
22
|
-
} else if (scale < 50) { // 拡大モードへ
|
23
|
-
isExpand = true;
|
24
|
-
}
|
25
|
-
|
26
|
-
if (isExpand) { // 拡大
|
27
|
-
scale++;
|
28
|
-
} else { // 縮小
|
29
|
-
scale--;
|
30
|
-
}
|
31
|
-
|
32
|
-
noFill();
|
33
|
-
strokeWeight(2);
|
34
|
-
stroke(200, 0, 0);
|
35
|
-
drawSakura(width / 2, height / 2, scale); // 横の位置、縦の位置、大きさ調整用変数
|
36
|
-
}
|
37
|
-
|
38
|
-
void drawSakura(int ox, int oy, int or) {
|
39
|
-
pushMatrix();
|
40
|
-
translate(ox + 1, oy + 1);
|
41
|
-
beginShape();
|
42
|
-
for (int theta = 0; theta < 360; theta++) {
|
43
|
-
float A = (sin(radians(theta * 5)) + cos(radians(theta * 10))) / 2.0;
|
44
|
-
float B = A * 0.5 + 1.0;
|
45
|
-
float R = or * B;
|
46
|
-
float x = R * sin(radians(theta + 90));
|
47
|
-
float y = R * cos(radians(theta + 90));
|
48
|
-
|
49
|
-
vertex(x, y);
|
50
|
-
}
|
51
|
-
endShape(CLOSE);
|
52
|
-
popMatrix();
|
53
|
-
}
|
54
|
-
```
|
55
|
-
|
56
|
-
|
57
|
-
---
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
if (
|
64
|
-
i
|
65
|
-
}
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
1
|
+
drawSakuraの中の意味は全く分かっていません。
|
2
|
+
元記事の、
|
3
|
+
> drawSakura(width/2, height/2, 130); // 横の位置、縦の位置、大きさ調整用変数
|
4
|
+
|
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)
|
6
|
+
|
7
|
+
から130を変えればよさそうに思いました。
|
8
|
+
実際に変えている範囲(50-200)は手調整で特に根拠はありません。
|
9
|
+
```Processing
|
10
|
+
int scale = 130; // 大きさに関する値(大きいほど拡大される)
|
11
|
+
boolean isExpand = true; // boolean型の変数isExpandを定義&初期化(trueで拡大)
|
12
|
+
|
13
|
+
void setup() {
|
14
|
+
size(500, 500);
|
15
|
+
}
|
16
|
+
|
17
|
+
void draw() {
|
18
|
+
background(255);
|
19
|
+
|
20
|
+
if (200 < scale) { // 縮小モードへ
|
21
|
+
isExpand = false;
|
22
|
+
} else if (scale < 50) { // 拡大モードへ
|
23
|
+
isExpand = true;
|
24
|
+
}
|
25
|
+
|
26
|
+
if (isExpand) { // 拡大
|
27
|
+
scale++;
|
28
|
+
} else { // 縮小
|
29
|
+
scale--;
|
30
|
+
}
|
31
|
+
|
32
|
+
noFill();
|
33
|
+
strokeWeight(2);
|
34
|
+
stroke(200, 0, 0);
|
35
|
+
drawSakura(width / 2, height / 2, scale); // 横の位置、縦の位置、大きさ調整用変数
|
36
|
+
}
|
37
|
+
|
38
|
+
void drawSakura(int ox, int oy, int or) {
|
39
|
+
pushMatrix();
|
40
|
+
translate(ox + 1, oy + 1);
|
41
|
+
beginShape();
|
42
|
+
for (int theta = 0; theta < 360; theta++) {
|
43
|
+
float A = (sin(radians(theta * 5)) + cos(radians(theta * 10))) / 2.0;
|
44
|
+
float B = A * 0.5 + 1.0;
|
45
|
+
float R = or * B;
|
46
|
+
float x = R * sin(radians(theta + 90));
|
47
|
+
float y = R * cos(radians(theta + 90));
|
48
|
+
|
49
|
+
vertex(x, y);
|
50
|
+
}
|
51
|
+
endShape(CLOSE);
|
52
|
+
popMatrix();
|
53
|
+
}
|
54
|
+
```
|
55
|
+

|
56
|
+
|
57
|
+
---
|
58
|
+
|
59
|
+
### 余談
|
60
|
+
|
61
|
+
ある数値iを、
|
62
|
+
```Processing
|
63
|
+
if (i < 10) {
|
64
|
+
i--;
|
65
|
+
}
|
66
|
+
if (0 < i) {
|
67
|
+
i++;
|
68
|
+
}
|
69
|
+
```
|
70
|
+
とした時、iの初期値が
|
71
|
+
* 0の場合、最初のifで-1になり次のifには一向に入らずどんどんマイナスになります
|
72
|
+
* 5の場合、最初のifで4になり次のifで5に戻り変化がなくなります
|
73
|
+
* 10の場合、最初のifには入らず次のifでどんどんプラスになります
|
74
|
+
|
75
|
+
なんとなくiは0-10の間を往復しそうな気がしますが、そうはなりません。
|
76
|
+
閾値を超えた(下回った)時に、モードを切り替えるbooleanを用意するのが常套手段です。
|
77
|
+
|
75
78
|
動きがあると楽しいですね。
|
1
コードハイライト名変更
answer
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
|
7
7
|
から130を変えればよさそうに思いました。
|
8
8
|
実際に変えている範囲(50-200)は手調整で特に根拠はありません。
|
9
|
-
```
|
9
|
+
```Processing
|
10
10
|
int scale = 130; // 大きさに関する値(大きいほど拡大される)
|
11
11
|
boolean isExpand = true; // boolean型の変数isExpandを定義&初期化(trueで拡大)
|
12
12
|
|
@@ -56,7 +56,7 @@
|
|
56
56
|
以下余談
|
57
57
|
---
|
58
58
|
ある数値iを、
|
59
|
-
```
|
59
|
+
```Processing
|
60
60
|
if (i < 10) {
|
61
61
|
i--;
|
62
62
|
}
|