質問編集履歴

8

訂正

2019/09/04 05:30

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -545,3 +545,9 @@
545
545
  }
546
546
 
547
547
  ```
548
+
549
+
550
+
551
+
552
+
553
+ ![イメージ説明](e874c7401cdba2cd061eb99ce888c058.png)

7

訂正

2019/09/04 05:30

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -119,3 +119,429 @@
119
119
 
120
120
 
121
121
  ```
122
+
123
+ 角度
124
+
125
+ ```ここに言語を入力
126
+
127
+ package hm.orz.chaos114.android.kyouenchecker;
128
+
129
+
130
+
131
+ import java.util.ArrayList;
132
+
133
+ import java.util.List;
134
+
135
+
136
+
137
+ public class GameModel {
138
+
139
+
140
+
141
+ class Point {
142
+
143
+ double x;
144
+
145
+ double y;
146
+
147
+
148
+
149
+ Point(double x, double y) {
150
+
151
+ this.x = x;
152
+
153
+ this.y = y;
154
+
155
+ }
156
+
157
+
158
+
159
+ double getAbs() {
160
+
161
+ return Math.sqrt(x * x + y * y);
162
+
163
+ }
164
+
165
+
166
+
167
+ Point difference(Point p2) {
168
+
169
+ return new Point(x - p2.x, y - p2.y);
170
+
171
+ }
172
+
173
+
174
+
175
+ Point sum(Point p2) {
176
+
177
+ return new Point(x + p2.x, y + p2.y);
178
+
179
+ }
180
+
181
+
182
+
183
+ @Override
184
+
185
+ public String toString() {
186
+
187
+ return "Point [x=" + x + ", y=" + y + "]";
188
+
189
+ }
190
+
191
+ }
192
+
193
+
194
+
195
+ /**
196
+
197
+ * Ax+By+C=0を表現するクラス。
198
+
199
+ */
200
+
201
+ class Line {
202
+
203
+ Point p1;
204
+
205
+ Point p2;
206
+
207
+ double a;
208
+
209
+ double b;
210
+
211
+ double c;
212
+
213
+
214
+
215
+ Line(Point p1, Point p2) {
216
+
217
+ this.p1 = p1;
218
+
219
+ this.p2 = p2;
220
+
221
+
222
+
223
+ a = p1.y - p2.y;
224
+
225
+ b = p2.x - p1.x;
226
+
227
+ c = p1.x * p2.y - p2.x * p1.y;
228
+
229
+ }
230
+
231
+
232
+
233
+ double getY(double x) {
234
+
235
+ double y = -1 * (a * x + c) / b;
236
+
237
+
238
+
239
+ return y;
240
+
241
+ }
242
+
243
+
244
+
245
+ @Override
246
+
247
+ public String toString() {
248
+
249
+ return "Line [p1=" + p1 + ", p2=" + p2 + ", a=" + a + ", b=" + b
250
+
251
+ + ", c=" + c + "]";
252
+
253
+ }
254
+
255
+ }
256
+
257
+
258
+
259
+ /**
260
+
261
+ * 共円情報を表現するクラス。
262
+
263
+ *
264
+
265
+ * @author noboru
266
+
267
+ */
268
+
269
+ class KyouenData {
270
+
271
+ Point p1;
272
+
273
+ Point p2;
274
+
275
+ Point p3;
276
+
277
+ Point p4;
278
+
279
+
280
+
281
+ public KyouenData(Point p1, Point p2, Point p3, Point p4) {
282
+
283
+ this.p1 = p1;
284
+
285
+ this.p2 = p2;
286
+
287
+ this.p3 = p3;
288
+
289
+ this.p4 = p4;
290
+
291
+ }
292
+
293
+ }
294
+
295
+
296
+
297
+ List<Point> points = new ArrayList<Point>();
298
+
299
+
300
+
301
+ public void add(int x, int y) {
302
+
303
+ Point p = new Point(x, y);
304
+
305
+
306
+
307
+ points.add(p);
308
+
309
+ }
310
+
311
+
312
+
313
+ public KyouenData isKyouen() {
314
+
315
+ if (points.size() < 4) {
316
+
317
+ return null;
318
+
319
+ }
320
+
321
+
322
+
323
+ Point p1 = points.get(points.size() - 1);
324
+
325
+
326
+
327
+ for (int i = 0; i < points.size() - 1; i++) {
328
+
329
+ Point p2 = points.get(i);
330
+
331
+ for (int j = i + 1; j < points.size() - 1; j++) {
332
+
333
+ Point p3 = points.get(j);
334
+
335
+ for (int k = j + 1; k < points.size() - 1; k++) {
336
+
337
+ Point p4 = points.get(k);
338
+
339
+ boolean kyouen = isKyouen(p1, p2, p3, p4);
340
+
341
+ if (kyouen) {
342
+
343
+ return new KyouenData(p1, p2, p3, p4);
344
+
345
+ }
346
+
347
+ }
348
+
349
+ }
350
+
351
+ }
352
+
353
+
354
+
355
+ return null;
356
+
357
+ }
358
+
359
+
360
+
361
+ public boolean isKyouen(Point p1, Point p2, Point p3, Point p4) {
362
+
363
+ // p1,p2の垂直二等分線を求める
364
+
365
+ Line l12 = getMidperpendicular(p1, p2);
366
+
367
+ // p2,p3の垂直二等分線を求める
368
+
369
+ Line l23 = getMidperpendicular(p2, p3);
370
+
371
+
372
+
373
+ // 交点を求める
374
+
375
+ Point intersection123 = getIntersection(l12, l23);
376
+
377
+ if (intersection123 == null) {
378
+
379
+ // p1,p2,p3が直線上に存在する場合
380
+
381
+ Line l34 = getMidperpendicular(p3, p4);
382
+
383
+ Point intersection234 = getIntersection(l23, l34);
384
+
385
+ if (intersection234 == null) {
386
+
387
+ // p2,p3,p4が直線状に存在する場合
388
+
389
+ return true;
390
+
391
+ }
392
+
393
+ } else {
394
+
395
+ double dist1 = getDistance(p1, intersection123);
396
+
397
+ double dist2 = getDistance(p4, intersection123);
398
+
399
+ if (Math.abs(dist1 - dist2) < 0.0000001) {
400
+
401
+ return true;
402
+
403
+ }
404
+
405
+ }
406
+
407
+ return false;
408
+
409
+ }
410
+
411
+
412
+
413
+ /**
414
+
415
+ * 2点間の距離を求める。
416
+
417
+ *
418
+
419
+ * @param p1 座標1
420
+
421
+ * @param p2 座標2
422
+
423
+ * @return 距離
424
+
425
+ */
426
+
427
+ public double getDistance(Point p1, Point p2) {
428
+
429
+ Point dist = p1.difference(p2);
430
+
431
+
432
+
433
+ return dist.getAbs();
434
+
435
+ }
436
+
437
+
438
+
439
+ /**
440
+
441
+ * 2直線の交点を求める。
442
+
443
+ *
444
+
445
+ * @param l1 直線1
446
+
447
+ * @param l2 直線2
448
+
449
+ * @return 交点座標(交点が存在しない場合、null)
450
+
451
+ */
452
+
453
+ public Point getIntersection(Line l1, Line l2) {
454
+
455
+ double f1 = l1.p2.x - l1.p1.x;
456
+
457
+ double g1 = l1.p2.y - l1.p1.y;
458
+
459
+ double f2 = l2.p2.x - l2.p1.x;
460
+
461
+ double g2 = l2.p2.y - l2.p1.y;
462
+
463
+
464
+
465
+ double det = f2 * g1 - f1 * g2;
466
+
467
+ if (det == 0) {
468
+
469
+ return null;
470
+
471
+ }
472
+
473
+
474
+
475
+ double dx = l2.p1.x - l1.p1.x;
476
+
477
+ double dy = l2.p1.y - l1.p1.y;
478
+
479
+ double t1 = (f2 * dy - g2 * dx) / det;
480
+
481
+
482
+
483
+ return new Point(l1.p1.x + f1 * t1, l1.p1.y + g1 * t1);
484
+
485
+ }
486
+
487
+
488
+
489
+ /**
490
+
491
+ * 2点の垂直二等分線を求める。
492
+
493
+ *
494
+
495
+ * @param p1 座標1
496
+
497
+ * @param p2 座標2
498
+
499
+ * @return 垂直二等分線
500
+
501
+ */
502
+
503
+ public Line getMidperpendicular(Point p1, Point p2) {
504
+
505
+ Point midpoint = getMidpoint(p1, p2);
506
+
507
+ Point dif = p1.difference(p2);
508
+
509
+ Point gradient = new Point(dif.y, -1 * dif.x);
510
+
511
+
512
+
513
+ Line midperpendicular = new Line(midpoint, midpoint.sum(gradient));
514
+
515
+ return midperpendicular;
516
+
517
+ }
518
+
519
+
520
+
521
+ /**
522
+
523
+ * 中点を求める。
524
+
525
+ *
526
+
527
+ * @param p1 座標1
528
+
529
+ * @param p2 座標2
530
+
531
+ * @return 中点座標
532
+
533
+ */
534
+
535
+ public Point getMidpoint(Point p1, Point p2) {
536
+
537
+
538
+
539
+ Point midpoint = new Point((p1.x + p2.x) / 2, (p1.y + p2.y) / 2);
540
+
541
+ return midpoint;
542
+
543
+ }
544
+
545
+ }
546
+
547
+ ```

6

訂正

2019/09/04 04:34

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -107,3 +107,15 @@
107
107
  }
108
108
 
109
109
  ```
110
+
111
+ jsonのサンプルになります.
112
+
113
+ ```
114
+
115
+
116
+
117
+ {"version":1.3,"people":[{"person_id":[-1],"":[697.949,94.5086,0.94138,707.771,188.626,0.848754,650.953,186.622,0.811076,633.314,278.739,0.71239,633.262,353.129,0.488111,762.639,192.509,0.823329,776.307,286.508,0.759441,774.344,368.784,0.857891,682.34,376.676,0.637581,645.007,368.791,0.591105,558.818,468.779,0.699771,482.45,554.885,0.64443,725.383,382.537,0.603878,739.041,513.835,0.599071,760.679,621.513,0.671196,690.146,88.7003,0.88057,711.711,86.7748,0.952311,682.239,114.095,0.319907,733.239,114.094,0.925611,762.639,648.948,0.645668,778.303,645.02,0.677848,756.741,631.319,0.429501,494.209,586.314,0.559349,478.536,582.399,0.491725,472.6,558.846,0.350561],"face_keypoints_2d":[],"hand_left_keypoints_2d":[],"hand_right_keypoints_2d":[],"pose_keypoints_3d":[],"face_keypoints_3d":[],"hand_left_keypoints_3d":[],"hand_right_keypoints_3d":[]}]}
118
+
119
+
120
+
121
+ ```

5

質問内容変更

2019/09/04 04:19

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -1,3 +1,5 @@
1
+ 下記の2つのコードを組み合わせて見たいのですが,
2
+
1
3
  jsonファイルを選択し,そのファイルの区切りごとに計算を行いたいのですが,可能でしょうか.
2
4
 
3
5
  ご理解いただける方いましたら,よろしくお願いいたします.

4

質問内容変更

2019/09/03 18:58

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -1,21 +1,107 @@
1
+ jsonファイルを選択し,そのファイルの区切りごとに計算を行いたいのですが,可能でしょうか.
2
+
3
+ ご理解いただける方いましたら,よろしくお願いいたします.
4
+
1
- 本文の書き方
5
+ ```
6
+
7
+ <!DOCTYPE html>
8
+
9
+ <html lang="ja">
10
+
11
+ <head>
12
+
13
+ <meta charset="UTF-8">
14
+
15
+ <title>html5 + js で json ファイルにアクセスしてデータを取得する</title>
16
+
17
+ <script>
18
+
19
+ function getJSON() {
20
+
21
+ var req = new XMLHttpRequest(); // XMLHttpRequest オブジェクトを生成する
22
+
23
+ req.onreadystatechange = function() { // XMLHttpRequest オブジェクトの状態が変化した際に呼び出されるイベントハンドラ
24
+
25
+ if(req.readyState == 4 && req.status == 200){ // サーバーからのレスポンスが完了し、かつ、通信が正常に終了した場合
2
26
 
3
27
 
4
28
 
5
- 5つ要点抑えると回答が得られやすくなります。
29
+ var data = JSON.parse(req.responseText); // 取得した JSON ファイル中身変数へ格納
6
30
 
7
- 前提・実現したいこと
8
-
9
- (例)PHP(CakePHP)で●●なシステムを作っています。 ■■な機能実装したいのですがうまく動きません。
31
+ var len = data.length; // JSON のデータ数取得
10
32
 
11
33
 
12
34
 
13
- 発生している問題・エラメッセージ
35
+ // JSON のデタ数分処理
14
36
 
15
- 問題が発生するまでの流れ・手順
37
+ for(var i=0; i<len; i++) {
16
38
 
17
- ソースコード
39
+ console.log("id: " + data[i].id + ", name: " + data[i].name);
18
40
 
19
- 問題の発生した環境
41
+ }
20
42
 
43
+
44
+
45
+ }
46
+
47
+ };
48
+
49
+ req.open("GET", "sample.json", false); // HTTPメソッドとアクセスするサーバーのURLを指定
50
+
51
+ req.send(null); // 実際にサーバーへリクエストを送信
52
+
53
+ }
54
+
55
+ </script>
56
+
21
- (例)言語・ライブラリのバージョン
57
+ </head>
58
+
59
+ <body>
60
+
61
+ <input type="button" value="JSONファイルを取得し、内容をブラウザのコンソールへ出力" onclick="getJSON();">
62
+
63
+ </body>
64
+
65
+ </html>
66
+
67
+
68
+
69
+
70
+
71
+ ```
72
+
73
+
74
+
75
+ ```
76
+
77
+ int main(void){
78
+
79
+ float x,y,angle;
80
+
81
+ //座標の読み込み
82
+
83
+ printf("x=");
84
+
85
+ scanf("%f",&x);
86
+
87
+ printf("y=");
88
+
89
+ scanf("%f",&y);
90
+
91
+
92
+
93
+ angle=acos(x/sqrt(x*x+y*y));
94
+
95
+ angle=angle*180.0/PI;
96
+
97
+ if(y<0)angle=360.0-angle;
98
+
99
+
100
+
101
+ printf("角度=%f",angle);
102
+
103
+ return 0;
104
+
105
+ }
106
+
107
+ ```

3

質問内容変更

2019/09/03 18:57

投稿

退会済みユーザー
test CHANGED
@@ -1 +1 @@
1
- 外部ファイルを読み込んで計算したい
1
+ ファイルを読み込んで計算したい
test CHANGED
File without changes

2

訂正

2019/09/03 18:53

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -1,113 +1,21 @@
1
- ### 前提・実現したいこと
1
+ 本文の書き方
2
2
 
3
3
 
4
4
 
5
+ 5つの要点を抑えると回答が得られやすくなります。
5
6
 
7
+ 前提・実現したいこと
6
8
 
7
- 外部のlogファイルを読み込み1行づつ実行して角度をだすシステムを作成したいと考えています。
9
+ (例)PHP(CakePHP)で●●なシステムを作ています。 ■■な機能を実装したいのですがうまく動きません。
8
-
9
- コードで参考文献を見たのですが,自身では見つけられず,どなたかよろしくお願いいたします.
10
10
 
11
11
 
12
12
 
13
+ 発生している問題・エラーメッセージ
13
14
 
15
+ 問題が発生するまでの流れ・手順
14
16
 
17
+ ソースコード
15
18
 
19
+ 問題の発生した環境
16
20
 
17
- ### 該当のソースコード
18
-
19
-
20
-
21
- ```ここに言語名を入力
22
-
23
- <html>
24
-
25
- <html lang="ja"><head><meta charset="UTF-8"></head>
26
-
27
- <body>
28
-
29
- <script>
30
-
31
- var xhr = null; // 使える場合はMicrosoft.XMLHTTP, 使えない場合はXMLHttpRequest
32
-
33
- try { xhr = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) { xhr = new XMLHttpRequest(); }
34
-
35
-
36
-
37
- var path = "d.log"; // 読み込む外部ファイル
38
-
39
- xhr.open("GET", path, true);
40
-
41
- xhr.onreadystatechange = function(){
42
-
43
- if(xhr.readyState === 4) {
44
-
45
- var data = xhr.responseText; // 外部ファイルの内容
46
-
47
- console.log(data);
48
-
49
- }
50
-
51
- };
52
-
53
- xhr.send();
54
-
55
- int main(void){
56
-
57
- float x,y,angle;
58
-
59
- //座標の読み込み
60
-
61
- printf("x=");
62
-
63
- scanf("%f",&x);
64
-
65
- printf("y=");
66
-
67
- scanf("%f",&y);
68
-
69
-
70
-
71
- angle=acos(x/sqrt(x*x+y*y));
72
-
73
- angle=angle*180.0/PI;
74
-
75
- if(y<0)angle=360.0-angle;
76
-
77
-
78
-
79
- printf("角度=%f",angle);
80
-
81
- return 0;
82
-
83
- }
84
-
85
-
86
-
87
- </script>
88
-
89
- </body>
90
-
91
-
92
-
93
-
94
-
95
- </html>
96
-
97
-
98
-
99
- ```
100
-
101
- ### 補足情報(FW/ツールのバージョンなど)
21
+ (例)言語・ライブラリのバージョン
102
-
103
- html,css,jsで書いています.
104
-
105
- logファイルの一部
106
-
107
- ```
108
-
109
- **00265F目の出力順番: [265:0], 位置: [(0, [533.384, 212.046])]
110
-
111
- **00266F目の出力順番: [266:0], 位置: [(0, [529.505, 210.108])]
112
-
113
- ```

1

訂正しました.

2019/09/03 17:17

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -4,9 +4,9 @@
4
4
 
5
5
 
6
6
 
7
- 外部のlogファイルを読み込み1行づつ実行して角度をだすシステムを作ています。
7
+ 外部のlogファイルを読み込み1行づつ実行して角度をだすシステムを作成したいと考えています。
8
8
 
9
- 座標部分か読み込みたいす.
9
+ コードで参考文献を見たですが,自身では見つけれず,どなかよろしくお願いたします.
10
10
 
11
11
 
12
12