aboutsummaryrefslogtreecommitdiff
path: root/assets/js/pedometer4.js
blob: 6b599634dc510418df43a4c81935613c68b8179f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
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();
    } 

})