Skip to content

Instantly share code, notes, and snippets.

@nulltask
Created January 16, 2014 16:57
Show Gist options
  • Select an option

  • Save nulltask/8458688 to your computer and use it in GitHub Desktop.

Select an option

Save nulltask/8458688 to your computer and use it in GitHub Desktop.
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>devicemotion</title>
<meta name="viewport" content="width=320px, initial-scale=1">
<style>
body {
margin: 0;
padding: 0;
}
h1 {
font-family: 'Helvetica Neue', 'Helvetica';
margin-left: 1em;
font-size: 0.5em;
}
</style>
</head>
<body>
<h1>acceleration</h1>
<canvas class="acceleration" width="320" height="200"></canvas>
<h1>accelerationIncludingGravity</h1>
<canvas class="acceleration-including-gravity" width="320" height="200"></canvas>
<script src="http://rawgithub.com/joewalnes/smoothie/master/smoothie.js"></script>
<script>
var accelerationCanvas = document.querySelector('.acceleration');
var accelerationIncludingGravityCanvas = document.querySelector('.acceleration-including-gravity');
var accelerationSets = [new TimeSeries(), new TimeSeries(), new TimeSeries()];
var accelerationIncludingGravitySets = [new TimeSeries(), new TimeSeries(), new TimeSeries()];
var ratio = window.devicePixelRatio || 1;
if (1 != ratio) {
[accelerationCanvas, accelerationIncludingGravityCanvas].forEach(function(canvas) {
var ctx = canvas.getContext('2d');
canvas.style.width = canvas.width + 'px';
canvas.style.height = canvas.height + 'px';
canvas.width *= ratio;
canvas.height *= ratio;
ctx.scale(ratio, ratio);
});
}
var chartOptions = {
millisPerPixel: 10,
grid: { strokeStyle: '#555555', lineWidth: 1, millisPerLine: 1000, verticalSections: 4 },
horizontalLines: [{ color: '#ffffff', lineWidth: 3, value: 0 }]
};
var timeSeriesOptions = [
{ strokeStyle: 'rgba(255, 0, 0, 1)', fillStyle: 'rgba(255, 0, 0, 0)', lineWidth: 1.5 },
{ strokeStyle: 'rgba(0, 255, 0, 1)', fillStyle: 'rgba(0, 255, 0, 0)', lineWidth: 1.5 },
{ strokeStyle: 'rgba(0, 0, 255, 1)', fillStyle: 'rgba(0, 0, 255, 0)', lineWidth: 1.5 }
];
var accelerationTimeline = new SmoothieChart(chartOptions);
var accelerationIncludingGravityTimeline = new SmoothieChart(chartOptions);
for (var i = 0; i < accelerationSets.length; ++i) {
accelerationTimeline.addTimeSeries(accelerationSets[i], timeSeriesOptions[i]);
}
for (var i = 0; i < accelerationIncludingGravitySets.length; ++i) {
accelerationIncludingGravityTimeline.addTimeSeries(accelerationIncludingGravitySets[i], timeSeriesOptions[i]);
}
accelerationTimeline.streamTo(accelerationCanvas);
accelerationIncludingGravityTimeline.streamTo(accelerationIncludingGravityCanvas);
window.addEventListener('devicemotion', function(e) {
var now = +new Date();
accelerationSets[0].append(now, e.acceleration.x);
accelerationSets[1].append(now, e.acceleration.y);
accelerationSets[2].append(now, e.acceleration.z);
accelerationIncludingGravitySets[0].append(now, e.accelerationIncludingGravity.x);
accelerationIncludingGravitySets[1].append(now, e.accelerationIncludingGravity.y);
accelerationIncludingGravitySets[2].append(now, e.accelerationIncludingGravity.z);
});
</script>
</body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment