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

回答編集履歴

2

見直しキャンペーン中

2023/07/17 05:05

投稿

TN8001
TN8001

スコア10180

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
- ある数値iを、
59
- ```Processing
60
- if (i < 10) {
61
- i--;
62
- }
63
- if (0 < i) {
64
- i++;
65
- }
66
- ```
67
- とした時、iの初期値が
68
- * 0の場合、最初のifで-1になり次のifには一向に入らずどんどんマイナスになります
69
- * 5の場合、最初のifで4になり次のifで5に戻り変化がなくなります
70
- * 10の場合最初ifには入らず次のifでどんどんプラスになります
71
-
72
- なんとなくiは0-10間を往復しそうしますが、そうはなりません。
73
- 閾値を超えた(下回った)時にモードを切り替えるbooleanを用意するが常套手段です
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
+ ![アプリ動画](https://ddjkaamml8q8x.cloudfront.net/questions/2023-07-17/71e000ee-fe91-4fb1-bcfb-95285369859c.gif)
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

コードハイライト名変更

2019/11/23 08:07

投稿

TN8001
TN8001

スコア10180

answer CHANGED
@@ -6,7 +6,7 @@
6
6
 
7
7
  から130を変えればよさそうに思いました。
8
8
  実際に変えている範囲(50-200)は手調整で特に根拠はありません。
9
- ```java
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
- ```java
59
+ ```Processing
60
60
  if (i < 10) {
61
61
  i--;
62
62
  }