This API enables the user to get updates describing the relative heading and pitch of a mobile device.

The RelativeAngle angles always start at a value of 0 and, as the device is rotated, the relative angles are updated in degrees. Rotating the device to the left causes the relative heading value to decrease, whereas rotating to the right causes the value to increase. Tilting the device downward causes the relative pitch value to decrease, whereas upward tilting causes the value to increase

Use this API if you need both relative heading and pitch at the same time. Otherwise, refer to the RelativeHeading or RelativePitch APIs.


var relativeAngle = new MotionStack.RelativeAngle();

relativeAngle.start(function (e) {

  if (Math.abs(e.heading) > 360) {


new MotionStack.RelativeAngle([options])

Create a new RelativeAngle instance object.

Argument Type Description
options Object Options to pass in for the new RelativeAngle instance (optional)

  • continuous {Boolean}
  • Determines whether the angles can grow indefinitely. When this is false, the value of relative heading is bounded between 0 and 360 degrees, and relative pitch is bounded between -180 and +180 degrees.

    Default: false

  • direction {String}
  • Designates which relative angle to calculate.

    • "heading"
    • Update the relative heading angle.
    • "pitch"
    • Update the relative pitch angle.
    • "all"
    • Update both relative heading and pitch angles.

    Default: "all"

  • fireOnAnimationFrame {Boolean}
  • Only emit the latest event within requestAnimationFrame intervals.

    Default: false

var relativeAngle = new MotionStack.RelativeAngle({continuous: true});

Instance Methods

start(callback, [context])

Start receiving relative angle updates.

Argument Type Description
callback Function Callback function that receives an object as an argument

  • function(e)
  • e.heading {Number}
    Current heading angle of the device as measured from the initial heading when the start() method was first invoked on the given instance
  • e.pitch {Number}
    Current pitch angle of the device as measured from the initial pitch when the start() method was first invoked on the given instance
  • e.timeStamp {Number}
    The time in milliseconds when the data is collected
context Object Context in which to invoke the callback (optional).
relativeAngle.start(function(e) {


Stop relative heading updates.