質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
ファイル

ファイルとは、文字列に基づいた名前又はパスからアクセスすることができる、任意の情報のブロック又は情報を格納するためのリソースです。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

解決済

2回答

1495閲覧

ファイルを読み込んで計算したい

退会済みユーザー

退会済みユーザー

総合スコア0

ファイル

ファイルとは、文字列に基づいた名前又はパスからアクセスすることができる、任意の情報のブロック又は情報を格納するためのリソースです。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

0クリップ

投稿2019/09/03 14:21

編集2019/09/04 05:30

下記の2つのコードを組み合わせて見たいのですが,
jsonファイルを選択し,そのファイルの区切りごとに計算を行いたいのですが,可能でしょうか.
ご理解いただける方いましたら,よろしくお願いいたします.

<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>html5 + js で json ファイルにアクセスしてデータを取得する</title> <script> function getJSON() { var req = new XMLHttpRequest(); // XMLHttpRequest オブジェクトを生成する req.onreadystatechange = function() { // XMLHttpRequest オブジェクトの状態が変化した際に呼び出されるイベントハンドラ if(req.readyState == 4 && req.status == 200){ // サーバーからのレスポンスが完了し、かつ、通信が正常に終了した場合 var data = JSON.parse(req.responseText); // 取得した JSON ファイルの中身を変数へ格納 var len = data.length; // JSON のデータ数を取得 // JSON のデータ数分処理 for(var i=0; i<len; i++) { console.log("id: " + data[i].id + ", name: " + data[i].name); } } }; req.open("GET", "sample.json", false); // HTTPメソッドとアクセスするサーバーのURLを指定 req.send(null); // 実際にサーバーへリクエストを送信 } </script> </head> <body> <input type="button" value="JSONファイルを取得し、内容をブラウザのコンソールへ出力" onclick="getJSON();"> </body> </html>
int main(void){ float x,y,angle; //座標の読み込み printf("x="); scanf("%f",&x); printf("y="); scanf("%f",&y); angle=acos(x/sqrt(x*x+y*y)); angle=angle*180.0/PI; if(y<0)angle=360.0-angle; printf("角度=%f",angle); return 0; }

jsonのサンプルになります.

{"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":[]}]}

角度

package hm.orz.chaos114.android.kyouenchecker; import java.util.ArrayList; import java.util.List; public class GameModel { class Point { double x; double y; Point(double x, double y) { this.x = x; this.y = y; } double getAbs() { return Math.sqrt(x * x + y * y); } Point difference(Point p2) { return new Point(x - p2.x, y - p2.y); } Point sum(Point p2) { return new Point(x + p2.x, y + p2.y); } @Override public String toString() { return "Point [x=" + x + ", y=" + y + "]"; } } /** * Ax+By+C=0を表現するクラス。 */ class Line { Point p1; Point p2; double a; double b; double c; Line(Point p1, Point p2) { this.p1 = p1; this.p2 = p2; a = p1.y - p2.y; b = p2.x - p1.x; c = p1.x * p2.y - p2.x * p1.y; } double getY(double x) { double y = -1 * (a * x + c) / b; return y; } @Override public String toString() { return "Line [p1=" + p1 + ", p2=" + p2 + ", a=" + a + ", b=" + b + ", c=" + c + "]"; } } /** * 共円情報を表現するクラス。 * * @author noboru */ class KyouenData { Point p1; Point p2; Point p3; Point p4; public KyouenData(Point p1, Point p2, Point p3, Point p4) { this.p1 = p1; this.p2 = p2; this.p3 = p3; this.p4 = p4; } } List<Point> points = new ArrayList<Point>(); public void add(int x, int y) { Point p = new Point(x, y); points.add(p); } public KyouenData isKyouen() { if (points.size() < 4) { return null; } Point p1 = points.get(points.size() - 1); for (int i = 0; i < points.size() - 1; i++) { Point p2 = points.get(i); for (int j = i + 1; j < points.size() - 1; j++) { Point p3 = points.get(j); for (int k = j + 1; k < points.size() - 1; k++) { Point p4 = points.get(k); boolean kyouen = isKyouen(p1, p2, p3, p4); if (kyouen) { return new KyouenData(p1, p2, p3, p4); } } } } return null; } public boolean isKyouen(Point p1, Point p2, Point p3, Point p4) { // p1,p2の垂直二等分線を求める Line l12 = getMidperpendicular(p1, p2); // p2,p3の垂直二等分線を求める Line l23 = getMidperpendicular(p2, p3); // 交点を求める Point intersection123 = getIntersection(l12, l23); if (intersection123 == null) { // p1,p2,p3が直線上に存在する場合 Line l34 = getMidperpendicular(p3, p4); Point intersection234 = getIntersection(l23, l34); if (intersection234 == null) { // p2,p3,p4が直線状に存在する場合 return true; } } else { double dist1 = getDistance(p1, intersection123); double dist2 = getDistance(p4, intersection123); if (Math.abs(dist1 - dist2) < 0.0000001) { return true; } } return false; } /** * 2点間の距離を求める。 * * @param p1 座標1 * @param p2 座標2 * @return 距離 */ public double getDistance(Point p1, Point p2) { Point dist = p1.difference(p2); return dist.getAbs(); } /** * 2直線の交点を求める。 * * @param l1 直線1 * @param l2 直線2 * @return 交点座標(交点が存在しない場合、null) */ public Point getIntersection(Line l1, Line l2) { double f1 = l1.p2.x - l1.p1.x; double g1 = l1.p2.y - l1.p1.y; double f2 = l2.p2.x - l2.p1.x; double g2 = l2.p2.y - l2.p1.y; double det = f2 * g1 - f1 * g2; if (det == 0) { return null; } double dx = l2.p1.x - l1.p1.x; double dy = l2.p1.y - l1.p1.y; double t1 = (f2 * dy - g2 * dx) / det; return new Point(l1.p1.x + f1 * t1, l1.p1.y + g1 * t1); } /** * 2点の垂直二等分線を求める。 * * @param p1 座標1 * @param p2 座標2 * @return 垂直二等分線 */ public Line getMidperpendicular(Point p1, Point p2) { Point midpoint = getMidpoint(p1, p2); Point dif = p1.difference(p2); Point gradient = new Point(dif.y, -1 * dif.x); Line midperpendicular = new Line(midpoint, midpoint.sum(gradient)); return midperpendicular; } /** * 中点を求める。 * * @param p1 座標1 * @param p2 座標2 * @return 中点座標 */ public Point getMidpoint(Point p1, Point p2) { Point midpoint = new Point((p1.x + p2.x) / 2, (p1.y + p2.y) / 2); return midpoint; } }

イメージ説明

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kei344

2019/09/04 02:45 編集

適切な質問タグをつけましょう。(HTML/CSSはほぼ無関係、多分JavaScriptの問題のはずだが、その場合でも後半のコードの意図がわからない) また、ご自身で試されたコードを質問文に追記し、「何」が「どのように」わからないのか、コードのどの部分で詰まっているのかなどを具体的に追記されたほうが回答が望めると思います。
yambejp

2019/09/04 03:25

json自体のサンプルはありませんか?
yambejp

2019/09/04 04:21

例示のjsonにはidやnameの要素がありませんので それを取り出すことは不可能ですね
退会済みユーザー

退会済みユーザー

2019/09/04 04:35

すみません,ありがとうございます.
yambejp

2019/09/04 04:48

javaのソースが追記されましたが、javaでやりたいのですか? であればタグを追加してその旨記載ください
退会済みユーザー

退会済みユーザー

2019/09/04 04:50

いえ,javaでやりたいわけではないです.ややこしくしまして申し訳ありません.
退会済みユーザー

退会済みユーザー

2019/09/04 05:39 編集

11個目と13個目なので(0.759441,774.344)と(682.34,376.67)が右尻と右足首の座標になります. よろしくおながいいたします. こちたで大丈夫でしょうか?
退会済みユーザー

退会済みユーザー

2019/09/04 05:55

すみません,ありがとうございます. console.log([b[20],b[21]]); console.log([b[24],b[25]]); とコードを書いてくださっているのですが,角度を求める場合はaとbを使用した方がよろしいでしょうか?.
yambejp

2019/09/04 05:58

a,bは座標のとり方を例示したにすぎません あとは計算できるならご自身の力でなんとかしてください
退会済みユーザー

退会済みユーザー

2019/09/04 06:03

すみません,座標の取り方はこのように記載するんですね,何も知らず,すみません.
yambejp

2019/09/04 06:06 編集

θ=tan^(-1) 高さ/底辺です これが理解できないならこの命題は諦めたほうがいいです
退会済みユーザー

退会済みユーザー

2019/09/04 10:42

すみません,ここまでの解説をありがとうございます.
guest

回答2

0

ベストアンサー

  • sample.json

json

1[{"id":1,"name":"hoge"},{"id":2,"name":"fuga"},{"id":3,"name":"piyo"}] 2

javascript

1<script> 2window.addEventListener('DOMContentLoaded', ()=>{ 3 document.querySelector('#btn').addEventListener('click',()=>{ 4 fetch("sample.json").then(x=>x.json()).then(data=>{ 5 data.forEach(x=>{ 6 console.log("id: " + x.id + ", name: " + x.name); 7 }); 8 }); 9 }); 10}); 11</script> 12<input type="button" value="JSONファイルを取得し、内容をブラウザのコンソールへ出力" id="btn"> 13

jsonの評価

11個目と13個目なので(0.759441,774.344)と(682.34,376.67)

全然違いますね、この数値は20,21番目および24,25番目です

javascript

1var a=JSON.parse(`{"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":[]}]}`); 2var b=a.people[0][""]; 3console.log([b[20],b[21]]); 4console.log([b[24],b[25]]);

アークタンジェントの考え方

底辺=1、高さ=ルート3の直角三角形の角度の求め方

javascript

1var width=1; 2var height=Math.sqrt(3);//ルート3 3var radian=Math.atan(height/width); 4var angle=radian*180/Math.PI; 5console.log(radian); 6console.log(angle); 7

投稿2019/09/04 03:40

編集2019/09/04 06:50
yambejp

総合スコア114829

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2019/09/04 04:24 編集

丁寧に解説いただき,大変助かりました. もしよろしければ,jsonファイルのサンプルを追加しましたので,解説をお願いいたします. 解説していただいたようにこのjsonでも大丈夫でしょうか?
yambejp

2019/09/04 04:26

例示のサンプルjsonを利用する場合は、どの部分を使って 何をしたいか例示いただかないと回答のしようがありません
退会済みユーザー

退会済みユーザー

2019/09/04 04:38 編集

はい,すみません,できたらしたいことなんですが,jsonファイルの座標を使用して,角度を求めたいです,全ての関節でx,y座標が1つずつなため,上記の差コードを使用したいと思います. JavaScriptではできないかもしれません,申し訳ないです.
yambejp

2019/09/04 04:53

> 全ての関節でx,y座標が1つずつ 例示されたjsonの仕様を解説してください ・「関節」とはなにか ・どこが「x.y座標」をしめしているのか? ・最終的にどういう計算をしてどう表示したいのか?
退会済みユーザー

退会済みユーザー

2019/09/04 05:11

openposeという体の座標を取得するライブラリがあるのですが,そこから取得した2dの関節座標になります.説明不足でしたら,解説し直します. 座標の角度を求めたいです.右足首と右尻の座標があるのですが,足の曲げ度合いなどをその2つの座標で角度計算を行いたいです.それを左にも行いたいです.やりたいことのみを伝えてしまい申し訳ありません. 宜しくお願いいたします.
yambejp

2019/09/04 05:16

ライブラリがどうかはこの際不問で大丈夫 jsonファイルのどこをどうしたいかにだけ集中してお応えください データの羅列を見せられてもこちらでは何がどういうデータか 判断できません。 (仕様がわからないなら質問はこの掲示板ではなくライブラリ供給 元に対して行うべきです)
yambejp

2019/09/04 05:26

Zuishinさん 大変参考になりました
退会済みユーザー

退会済みユーザー

2019/09/04 05:27

jsonファイルの右尻と右足首の行の取得を行って角度計算を行いたいです.とちらで,質問の答えとなっていますでしょうか?
退会済みユーザー

退会済みユーザー

2019/09/04 05:28

yambejpさんそちらは,間違えて,追記したものになります.申し訳ありません
yambejp

2019/09/04 05:28

例示のjsonだと"具体的に"、なにとなにですか?数値でお応えください
yambejp

2019/09/04 05:54

jsonの検証結果追記しておきました もっと正確に情報は伝達してください で、この2つの数字から「角度」はどうしたいのですか? x,yのそれぞれの差から商をとってアークタンジェントする?
退会済みユーザー

退会済みユーザー

2019/09/04 06:01

勉強不足のため,角度の求め方は,言っていただいた方法でお願いいたします.
guest

0

すみません,訂正しました.

投稿2019/09/03 17:17

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kyoya0819

2019/09/03 21:36

回答ではありません
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問