回答編集履歴

2

コメント追記

2020/11/21 14:23

投稿

thkana
thkana

スコア7703

test CHANGED
@@ -214,13 +214,13 @@
214
214
 
215
215
  PImage hand1;
216
216
 
217
- final int refX=50;
217
+ final int refX=50; //針画像で回転の中心座標x
218
-
218
+
219
- final int refY=180;
219
+ final int refY=180; //針画像で回転の中心座標y
220
-
220
+
221
- final int centerX=400;
221
+ final int centerX=400; //回転の中心x
222
-
222
+
223
- final int centerY=240;
223
+ final int centerY=240; //回転の中心y
224
224
 
225
225
  float angle=0;
226
226
 

1

追記

2020/11/21 14:23

投稿

thkana
thkana

スコア7703

test CHANGED
@@ -155,3 +155,103 @@
155
155
  }
156
156
 
157
157
  ```
158
+
159
+
160
+
161
+ ---
162
+
163
+ 追記 単独の針の画像で描く
164
+
165
+
166
+
167
+ なんだか難しいと言われてしまったのでソコだけのサンプル。
168
+
169
+
170
+
171
+ 原理的には同じことで長針短針秒針3回描けばいいので針一本分だけ描いてみる。
172
+
173
+ ```Processing
174
+
175
+ //本題とは関係ない参考:針の画像を描く
176
+
177
+ //背景を透過にするためmaskを使ってpngでsaveする
178
+
179
+ PImage img1,msk;
180
+
181
+ size(100,200);
182
+
183
+ noStroke();
184
+
185
+ fill(0);
186
+
187
+ background(255);
188
+
189
+ triangle(50,20,45,180,55,180);
190
+
191
+ circle(50,180,20);
192
+
193
+ img1=get();
194
+
195
+ msk=img1.get();
196
+
197
+ msk.filter(INVERT);
198
+
199
+ img1.mask(msk);
200
+
201
+ img1.save("hand1.png");
202
+
203
+ ```
204
+
205
+ これで次の画像ファイルが生成される。
206
+
207
+ ![針の画像](fdf1674fe63b0bec82085f26b192c116.png)
208
+
209
+
210
+
211
+ このファイルを読み込んで、ぐるぐる回せばよい
212
+
213
+ ```Processing
214
+
215
+ PImage hand1;
216
+
217
+ final int refX=50;
218
+
219
+ final int refY=180;
220
+
221
+ final int centerX=400;
222
+
223
+ final int centerY=240;
224
+
225
+ float angle=0;
226
+
227
+
228
+
229
+ void setup(){
230
+
231
+ size(640,480);
232
+
233
+ hand1=loadImage("https://teratail-v2.storage.googleapis.com/"+
234
+
235
+ "uploads/contributed_images/fdf1674fe63b0bec82085f26b192c116.png");
236
+
237
+ //URL文字列が長くなって見にくいのが嫌で分割している。
238
+
239
+ }
240
+
241
+
242
+
243
+ void draw(){
244
+
245
+ background(0xc0);
246
+
247
+ translate(centerX,centerY); //centerX,centerYを新たな0,0とする
248
+
249
+ rotate(angle); //0,0を中心に座標系を回す
250
+
251
+ image(hand1,-refX,-refY); //refX,refYが0,0に来るように描画
252
+
253
+ angle+=0.01;
254
+
255
+ }
256
+
257
+ ```