@fractorysolutions/safe-units
Version:
Type-safe TypeScript units of measure
58 lines • 1.66 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.atan2 = exports.tan = exports.sin = exports.cos = exports.atan = exports.asin = exports.acos = void 0;
var numberMeasure_1 = require("../measure/numberMeasure");
var base_1 = require("./base");
/**
* `Math.acos` for `number` measures.
* @param x a dimensionless value
* @returns an angle
*/
exports.acos = wrapInverseTrigFn(Math.acos);
/**
* `Math.asin` for `number` measures.
* @param x a dimensionless value
* @returns an angle
*/
exports.asin = wrapInverseTrigFn(Math.asin);
/**
* `Math.atan` for `number` measures.
* @param x a dimensionless value
* @returns an angle
*/
exports.atan = wrapInverseTrigFn(Math.atan);
/**
* `Math.cos` for `number` measures.
* @param x an angle
* @returns a dimensionless value
*/
exports.cos = wrapTrigFn(Math.cos);
/**
* `Math.sin` for `number` measures.
* @param x an angle
* @returns a dimensionless value
*/
exports.sin = wrapTrigFn(Math.sin);
/**
* `Math.tan` for `number` measures.
* @param x an angle
* @returns a dimensionless value
*/
exports.tan = wrapTrigFn(Math.tan);
/**
* `Math.atan2` for `number` measures.
* @param x a length
* @param y a length
* @returns an angle
*/
function atan2(y, x) {
return numberMeasure_1.Measure.of(Math.atan2(y.value, x.value), base_1.radians);
}
exports.atan2 = atan2;
function wrapTrigFn(f) {
return function (angle) { return numberMeasure_1.Measure.dimensionless(f(angle.value)); };
}
function wrapInverseTrigFn(f) {
return function (angle) { return numberMeasure_1.Measure.of(f(angle.value), base_1.radians); };
}
//# sourceMappingURL=trig.js.map