]> git.plutz.net Git - serve0/commitdiff
custom readout of host provided Motion Processor Service
authorPaul Hänsch <paul@plutz.net>
Sun, 10 Mar 2019 18:07:19 +0000 (19:07 +0100)
committerPaul Hänsch <paul@plutz.net>
Sun, 10 Mar 2019 18:07:19 +0000 (19:07 +0100)
stereoview.js

index 50863d5533f5219f0db0aff3362d36e2b8a4ffc6..edba3784704ff3775e980c6f355e431a351c946e 100644 (file)
@@ -66,7 +66,7 @@ function draw() {
     if ( gp.buttons[3].pressed ) { fov += 10; controlTimeout = Date.now() + 500; }
   }
 
-  // debug.textContent = "" + video.currentTime + " " + controlTimeout;
+  // debug.textContent = "" + video.currentTime + " " + controlTimeout + " " + tx + " " + ty + " " + tz;
 };
 
 function stereoview(layout, video) {
@@ -87,6 +87,30 @@ function stereoview(layout, video) {
   lc = lv.getContext("2d");
   rc = rv.getContext("2d");
   
+  mpuevent = new EventSource("http://localhost:314");
+  var x = [], y = [], z = [], cnt = -1, inertia = 6;
+
+  mpuevent.addEventListener("bearing", function(e) {
+    bearing = e.data.split(" ");
+    yaw = -parseFloat(bearing[0]);
+  }, false);
+  mpuevent.addEventListener("motion", function(e) {
+    motion = e.data.split(" ");
+
+    cnt = (cnt + 1) % inertia;
+    x[cnt] = parseFloat(motion[0]);
+    y[cnt] = parseFloat(motion[1]);
+    z[cnt] = parseFloat(motion[2]);
+
+    // tx = 0; x.forEach( function(n, i){ tx += n; } ); tx /= inertia;
+    ty = 0; y.forEach( function(n, i){ ty += n; } ); ty /= inertia;
+    tz = 0; z.forEach( function(n, i){ tz += n; } ); tz /= inertia;
+
+    pitch =   Math.asin((tz / 9.81 > 1)?1:(tz/9.81)) / Math.PI * 180 + 22.5;
+    roll  = - Math.asin((ty / 9.81 > 1)?1:(ty/9.81)) / Math.PI * 180;
+    // yaw   = (yaw + ty) % 360;
+  }, false );
+  
   window.addEventListener("devicemotion", (function() {
     var x = [], y = [], z = [], cnt = -1, inertia = 6;
     return function(event) {