回答編集履歴

2

見直しキャンペーン中

2023/07/17 05:05

投稿

TN8001
TN8001

スコア9326

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

コードハイライト名変更

2019/11/23 08:07

投稿

TN8001
TN8001

スコア9326

test CHANGED
@@ -14,7 +14,7 @@
14
14
 
15
15
  実際に変えている範囲(50-200)は手調整で特に根拠はありません。
16
16
 
17
- ```java
17
+ ```Processing
18
18
 
19
19
  int scale = 130; // 大きさに関する値(大きいほど拡大される)
20
20
 
@@ -114,7 +114,7 @@
114
114
 
115
115
  ある数値iを、
116
116
 
117
- ```java
117
+ ```Processing
118
118
 
119
119
  if (i < 10) {
120
120