/**
 * @license
 * Copyright 2019 Google LLC
 * SPDX-License-Identifier: Apache-2.0
 */

// Former goog.module ID: Blockly.utils.math

/**
 * Converts degrees to radians.
 * Copied from Closure's goog.math.toRadians.
 *
 * @param angleDegrees Angle in degrees.
 * @returns Angle in radians.
 */
export function toRadians(angleDegrees: number): number {
  return (angleDegrees * Math.PI) / 180;
}

/**
 * Converts radians to degrees.
 * Copied from Closure's goog.math.toDegrees.
 *
 * @param angleRadians Angle in radians.
 * @returns Angle in degrees.
 */
export function toDegrees(angleRadians: number): number {
  return (angleRadians * 180) / Math.PI;
}

/**
 * Clamp the provided number between the lower bound and the upper bound.
 *
 * @param lowerBound The desired lower bound.
 * @param number The number to clamp.
 * @param upperBound The desired upper bound.
 * @returns The clamped number.
 */
export function clamp(
  lowerBound: number,
  number: number,
  upperBound: number,
): number {
  if (upperBound < lowerBound) {
    const temp = upperBound;
    upperBound = lowerBound;
    lowerBound = temp;
  }
  return Math.max(lowerBound, Math.min(number, upperBound));
}