回答編集履歴
3
追記
test
CHANGED
@@ -45,3 +45,109 @@
|
|
45
45
|
...
|
46
46
|
|
47
47
|
と、多分どんどん大きな負の値になるかと思いますが、それは意図したものですか? (画像の高さに負の値を与えるとなにが表示されるんだろう? 画像がひっくり返るんだっけ?)
|
48
|
+
|
49
|
+
|
50
|
+
|
51
|
+
---
|
52
|
+
|
53
|
+
TN8001さんの回答みてて、そう言えばgetで切り出しってできなかったっけ? ということで試してみたもの。ご参考まで。
|
54
|
+
|
55
|
+
```Processing
|
56
|
+
|
57
|
+
PImage single;
|
58
|
+
|
59
|
+
PImage quad;
|
60
|
+
|
61
|
+
int w, h;
|
62
|
+
|
63
|
+
float x = 0, vx = 0.05; //値は適宜いじってみてください
|
64
|
+
|
65
|
+
float y = 0, vy = -0.5;
|
66
|
+
|
67
|
+
|
68
|
+
|
69
|
+
void setup() {
|
70
|
+
|
71
|
+
size(640, 480);
|
72
|
+
|
73
|
+
//文字列を切っているのは単にソースコードの横幅を抑えるため
|
74
|
+
|
75
|
+
single = loadImage("https://teratail-v2.storage.googleapis.com/uploads/"+
|
76
|
+
|
77
|
+
"avatars/u10/107752/752e11b31475761a_thumbnail.png");
|
78
|
+
|
79
|
+
w=single.width; //よく使うので見やすくするため
|
80
|
+
|
81
|
+
h=single.height;
|
82
|
+
|
83
|
+
image(single, 0, 0);//4枚並べて表示
|
84
|
+
|
85
|
+
image(single, 0, h);
|
86
|
+
|
87
|
+
image(single, w, 0);
|
88
|
+
|
89
|
+
image(single, w, h);
|
90
|
+
|
91
|
+
//画面外にはみ出す場合はgetで画素が取れないので
|
92
|
+
|
93
|
+
//PGraphicsで仮想画面とか考える必要あり(今回は大丈夫)
|
94
|
+
|
95
|
+
quad=get(0, 0, w*2, h*2);//並べた画像を取り込む
|
96
|
+
|
97
|
+
background(0); //小細工の証拠隠滅
|
98
|
+
|
99
|
+
noFill();
|
100
|
+
|
101
|
+
stroke(0, 255, 0);
|
102
|
+
|
103
|
+
}
|
104
|
+
|
105
|
+
|
106
|
+
|
107
|
+
void draw() {
|
108
|
+
|
109
|
+
int x0=50;
|
110
|
+
|
111
|
+
int y0=height/2-h;//上下真ん中に表示したい
|
112
|
+
|
113
|
+
int x1=350;
|
114
|
+
|
115
|
+
int y1=height/2-h/2;
|
116
|
+
|
117
|
+
|
118
|
+
|
119
|
+
background(0);
|
120
|
+
|
121
|
+
|
122
|
+
|
123
|
+
//この2行は切り出し位置を表示しているだけ
|
124
|
+
|
125
|
+
image(quad, x0, y0);
|
126
|
+
|
127
|
+
rect(x+x0, y+y0, w, h);
|
128
|
+
|
129
|
+
|
130
|
+
|
131
|
+
//getで切り出した部分画像を表示
|
132
|
+
|
133
|
+
image(quad.get((int)x, (int)y, w, h), x1, y1);
|
134
|
+
|
135
|
+
|
136
|
+
|
137
|
+
//切り出し位置更新
|
138
|
+
|
139
|
+
x=x+vx;
|
140
|
+
|
141
|
+
if (x<0)x=w;
|
142
|
+
|
143
|
+
if (x>w)x=0;
|
144
|
+
|
145
|
+
y=y+vy;
|
146
|
+
|
147
|
+
if (y<0)y=h;
|
148
|
+
|
149
|
+
if (y>w)y=0;
|
150
|
+
|
151
|
+
}
|
152
|
+
|
153
|
+
```
|
2
訂正
test
CHANGED
@@ -34,13 +34,13 @@
|
|
34
34
|
|
35
35
|
image関数の第5パラメータ、画像の高さですが、例えばいわゆるFullHDのディスプレイだったとすると
|
36
36
|
|
37
|
-
y=
|
37
|
+
y=3,i=0のとき3
|
38
38
|
|
39
|
-
y=
|
39
|
+
y=3,i=1のとき-537
|
40
40
|
|
41
|
-
y=
|
41
|
+
y=3,i=2のとき-1077
|
42
42
|
|
43
|
-
y=
|
43
|
+
y=3,i=1のとき-1617
|
44
44
|
|
45
45
|
...
|
46
46
|
|
1
マークダウンの記号処理
test
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
|
1
|
+
質問の編集画面に入り、コード部分を選択して、<code>を押してください( [ヘルプ](https://teratail.com/help/question-tips#questionTips3-5-1)を参照。スマホの場合は...知りません)。そうすると、コード部分が区切られてインデントも表示され、非常に見やすくなります(というかそうでないのが見にくい)
|
2
2
|
|
3
3
|
|
4
4
|
|
@@ -20,11 +20,15 @@
|
|
20
20
|
|
21
21
|
```Processing
|
22
22
|
|
23
|
+
//冒頭の操作(<code>)でこういう表示になります
|
24
|
+
|
23
25
|
for (int i=0; i<30; i++) {
|
24
26
|
|
25
27
|
image(img2, width*3/4, height*2/3, width/3, y-height/2*i);
|
26
28
|
|
27
29
|
}
|
30
|
+
|
31
|
+
|
28
32
|
|
29
33
|
```
|
30
34
|
|