aboutsummaryrefslogtreecommitdiff
path: root/assets/js/pedometer4.js
diff options
context:
space:
mode:
Diffstat (limited to 'assets/js/pedometer4.js')
-rw-r--r--assets/js/pedometer4.js93
1 files changed, 93 insertions, 0 deletions
diff --git a/assets/js/pedometer4.js b/assets/js/pedometer4.js
new file mode 100644
index 0000000..6b59963
--- /dev/null
+++ b/assets/js/pedometer4.js
@@ -0,0 +1,93 @@
+// Interval milliseconds between accelerometer readings
+const poll_interval = 200
+
+
+$(document).ready(function(){
+
+ // We may not have an accelerometer
+ var has_accel = false
+
+ // Make the SVG occupy all the screen
+ $('body').css({ width: '100vw', height: '100vh', margin: 0, padding: 0, overflow: 'hidden' })
+ $('#left-bits').css({ width: '100%', height: '100%', background: '#931', margin: 0 })
+ .removeAttr('viewBox')
+ .each(function() { $(this)[0].setAttribute('viewBox', '0 0 ' + parseInt($('body').css('width')) + ' ' + parseInt($('body').css('height'))) })
+
+ console.log("-- ready --");
+
+ // on déclare l'ensemble des variables ax et ay sont les données
+ // d'acceleration, n c'est la norme, maxn et minn les valeurs max
+ // et min de la norme, et pas le nombre de pas
+ var n=0, maxn = 0, minn = 0, pas = 0,
+ ax = 0, ay = 0, az = 0, pass=0;
+
+ function odmHandler(e) {
+ // we do have an accelerometer
+ has_accel = true
+ // read from it
+ ax = event.accelerationIncludingGravity.x ;
+ ay = event.accelerationIncludingGravity.y ;
+ az = event.accelerationIncludingGravity.z ;
+ }
+
+ // fake an accelerometer
+ // min/max at -12/12 mean reasonably fast pace
+ // grow to accelerate
+ // < 10 might not bring any result
+ function fakeAccel() {
+ var min = -12, max = 12
+ return Math.random() * (max - min) + min;
+ }
+
+ function mockAccelerometer() {
+ // we're on a desktop, yep
+ has_accel = false
+ // make up values
+ ax = fakeAccel()
+ ay = fakeAccel()
+ az = fakeAccel()
+ }
+
+ //programme d'alberto desarullo qui va chercher les données de l'accelerometre
+ // Why do you have the interface if you don't have the device?
+ if (window.DeviceMotionEvent != undefined) {
+ window.ondevicemotion = odmHandler
+
+ var ev = new Event("requestMove");
+
+ function pollAccelerometer() {
+ setInterval(makeStep, poll_interval)
+ }
+
+ function makeStep() {
+ if (!has_accel) {
+ // no accelerometer: fake values
+ mockAccelerometer()
+ }
+ // on calcule la norme c'est à dire la taille du
+ // vecteur qui est défini par les points
+ // d'accélération ax ay et az
+ n0 = n;
+ n = Math.sqrt (ax*ax + ay*ay + az*az);
+
+ // on calcule un min et max pour la norme
+ if (n < n0) {
+ minn = n ;
+ } else if (n > n0) {
+ maxn = n ;
+ }
+
+ // on définit un seuil qui correspond à un pas
+ if ((maxn - minn) > 10) {
+ // on simule multi-joueur en assignant une team au pas
+ //pas = pas+1;
+ var this_team = teams[rInt(0, teams.length - 1)]
+ updateScore(this_team, 1)
+ document.dispatchEvent(ev);
+ }
+ }
+
+ pollAccelerometer();
+ }
+
+})