実現したいこと
javascriptで取得した加速度から位置と向きを計算したい
発生している問題・分からないこと
取得した加速度から位置を取得する方法がわからない
向きの計算は分かる
該当のソースコード
javascript
1let sa = document.getElementById("sta");2let so = document.getElementById("sto");3let l = [];4let rx = 0;5let ry = 0;6let rz = 0;7let gx = 0;8let gy = 0;9let gz = 0;10let prz = 0;11let a = null;12let lp = null;13//動画14async function c() {15 const L = document.querySelector('#L')16 const s = await navigator.mediaDevices.getUserMedia({video:{facingMode:"environment"}});17 L.srcObject = s;18 const md = new MediaRecorder(s,{mimeType:'video/webm'});19 function sta(){20 md.start();21 //向きと座標を配列で記録22 l = [];23 lp = setInterval(() => {24 if(rx == 0 || ry == 0){25 l.push(0,0,rz/500*9,gx,gy,gz);26 }else{27 l.push(Math.atan(ry/rz)/Math.PI*-180,Math.atan(rx/rz)/Math.PI*-180,prz/500*9,gx,gy,gz);28 }29 }, 100);30 }31 function sto(){32 md.stop();33 clearInterval(lp);34 }35 sa.addEventListener('click', sta);36 so.addEventListener('click', sto);37 md.addEventListener('dataavailable', event => {38 //ダウンロード39 a = document.createElement('a');40 a.href = URL.createObjectURL(event.data);41 a.download = 'sample.mp4';42 a.click();43 a = document.createElement('a');44 a.href = URL.createObjectURL(new Blob([l.join()], {"type":"text/plain"}));45 a.download = 'sample.txt';46 a.click();47 });48}49c();50window.addEventListener("devicemotion", function(e){51 //向き52 prz = prz + e.rotationRate.gamma;53 rx = Number(e.accelerationIncludingGravity.x)-Number(e.acceleration.x);54 ry = Number(e.accelerationIncludingGravity.y)-Number(e.acceleration.y);55 rz = Number(e.accelerationIncludingGravity.z)-Number(e.acceleration.z);56 //位置57 gx = //わからないところ;58 gy = //わからないところ;59 gz = //わからないところ;60});
試したこと・調べたこと
上記の詳細・結果
3つ向きから三角関数を使って座標を求めるのは分かりますが実際にやってみると結構難しくて
かみ砕いて説明してほしいです
補足
言ってなかったですがblenderと組み合わせてcgを作るので
同時に動画を撮るプログラムも書いてます
0 コメント