Home Reference Source Repository

src/geometry/degree.js

/**
 * @fileOverview Convert to and from degree
 * @author Jean-Philippe.Lambert@ircam.fr
 * @copyright 2015-2016 IRCAM, Paris, France
 * @license BSD-3-Clause
 */

/**
 * Degree to radian multiplication factor.
 *
 * @type {Number}
 */
export const toRadianFactor = Math.PI / 180;

/**
 * Radian to degree multiplication factor.
 *
 * @type {Number}
 */
export const fromRadianFactor = 1 / toRadianFactor;

/**
 * Convert an angle in degrees to radians.
 *
 * @param {Number} angle in degrees
 * @returns {Number} angle in radians
 */
export function toRadian(angle) {
  return angle * toRadianFactor;
}

/**
 * Convert an angle in radians to degrees.
 *
 * @param {Number} angle in radians
 * @returns {Number} angle in degrees
 */
export function fromRadian(angle) {
  return angle * fromRadianFactor;
}

/**
 * Get the cosinus of an angle in degrees.
 *
 * @param {Number} angle
 * @returns {Number}
 */
export function cos(angle) {
  return Math.cos(angle * toRadianFactor);
}

/**
 * Get the sinus of an angle in degrees.
 *
 * @param {Number} angle
 * @returns {Number}
 */
export function sin(angle) {
  return Math.sin(angle * toRadianFactor );
}

/**
 * Get the arc-tangent (2 arguments) of 2 angles in degrees.
 *
 * @param {Number} y
 * @param {Number} x
 * @returns {Number}
 */
export function atan2(y, x) {
  return Math.atan2(y, x) * fromRadianFactor;
}

export default {
  atan2,
  cos,
  fromRadian,
  fromRadianFactor,
  sin,
  toRadian,
  toRadianFactor,
};