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

回答編集履歴

3

追記

2021/11/28 02:28

投稿

thkana
thkana

スコア7738

answer CHANGED
@@ -21,4 +21,57 @@
21
21
  y=3,i=2のとき-1077
22
22
  y=3,i=1のとき-1617
23
23
  ...
24
- と、多分どんどん大きな負の値になるかと思いますが、それは意図したものですか? (画像の高さに負の値を与えるとなにが表示されるんだろう? 画像がひっくり返るんだっけ?)
24
+ と、多分どんどん大きな負の値になるかと思いますが、それは意図したものですか? (画像の高さに負の値を与えるとなにが表示されるんだろう? 画像がひっくり返るんだっけ?)
25
+
26
+ ---
27
+ TN8001さんの回答みてて、そう言えばgetで切り出しってできなかったっけ? ということで試してみたもの。ご参考まで。
28
+ ```Processing
29
+ PImage single;
30
+ PImage quad;
31
+ int w, h;
32
+ float x = 0, vx = 0.05; //値は適宜いじってみてください
33
+ float y = 0, vy = -0.5;
34
+
35
+ void setup() {
36
+ size(640, 480);
37
+ //文字列を切っているのは単にソースコードの横幅を抑えるため
38
+ single = loadImage("https://teratail-v2.storage.googleapis.com/uploads/"+
39
+ "avatars/u10/107752/752e11b31475761a_thumbnail.png");
40
+ w=single.width; //よく使うので見やすくするため
41
+ h=single.height;
42
+ image(single, 0, 0);//4枚並べて表示
43
+ image(single, 0, h);
44
+ image(single, w, 0);
45
+ image(single, w, h);
46
+ //画面外にはみ出す場合はgetで画素が取れないので
47
+ //PGraphicsで仮想画面とか考える必要あり(今回は大丈夫)
48
+ quad=get(0, 0, w*2, h*2);//並べた画像を取り込む
49
+ background(0); //小細工の証拠隠滅
50
+ noFill();
51
+ stroke(0, 255, 0);
52
+ }
53
+
54
+ void draw() {
55
+ int x0=50;
56
+ int y0=height/2-h;//上下真ん中に表示したい
57
+ int x1=350;
58
+ int y1=height/2-h/2;
59
+
60
+ background(0);
61
+
62
+ //この2行は切り出し位置を表示しているだけ
63
+ image(quad, x0, y0);
64
+ rect(x+x0, y+y0, w, h);
65
+
66
+ //getで切り出した部分画像を表示
67
+ image(quad.get((int)x, (int)y, w, h), x1, y1);
68
+
69
+ //切り出し位置更新
70
+ x=x+vx;
71
+ if (x<0)x=w;
72
+ if (x>w)x=0;
73
+ y=y+vy;
74
+ if (y<0)y=h;
75
+ if (y>w)y=0;
76
+ }
77
+ ```

2

訂正

2021/11/28 02:27

投稿

thkana
thkana

スコア7738

answer CHANGED
@@ -16,9 +16,9 @@
16
16
 
17
17
  ```
18
18
  image関数の第5パラメータ、画像の高さですが、例えばいわゆるFullHDのディスプレイだったとすると
19
- y=0,i=0のとき0
19
+ y=3,i=0のとき3
20
- y=0,i=1のとき-540
20
+ y=3,i=1のとき-537
21
- y=0,i=2のとき-1080
21
+ y=3,i=2のとき-1077
22
- y=0,i=1のとき-1620
22
+ y=3,i=1のとき-1617
23
23
  ...
24
24
  と、多分どんどん大きな負の値になるかと思いますが、それは意図したものですか? (画像の高さに負の値を与えるとなにが表示されるんだろう? 画像がひっくり返るんだっけ?)

1

マークダウンの記号処理

2021/11/28 00:18

投稿

thkana
thkana

スコア7738

answer CHANGED
@@ -1,4 +1,4 @@
1
- ソースコードの始まる直前行と最終行の次に行頭から``` だけの行書いてください。行頭 ```Processing としてもいいですが。そうすると、コード部分が区切られてインデントも表示され、非常に見やすくなります(というかそうでないのが見にくい)
1
+ 質問の編集画面に入り、コード部分を選択して<code>押してください( [ヘルプ](https://teratail.com/help/question-tips#questionTips3-5-1)を参照スマホ場合...知りません)。そうすると、コード部分が区切られてインデントも表示され、非常に見やすくなります(というかそうでないのが見にくい)
2
2
 
3
3
  それと、
4
4
  > 範囲外に余計なものがでてきてしまう。
@@ -9,9 +9,11 @@
9
9
 
10
10
  ちょっと質問の範囲からは外れるかも知れませんが
11
11
  ```Processing
12
+ //冒頭の操作(<code>)でこういう表示になります
12
13
  for (int i=0; i<30; i++) {
13
14
  image(img2, width*3/4, height*2/3, width/3, y-height/2*i);
14
15
  }
16
+
15
17
  ```
16
18
  image関数の第5パラメータ、画像の高さですが、例えばいわゆるFullHDのディスプレイだったとすると
17
19
  y=0,i=0のとき0