You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
28 lines
565 B
28 lines
565 B
var utils = require('../utils') |
|
, nodes = require('../nodes'); |
|
|
|
/** |
|
* Return the tangent of the given `angle`. |
|
* |
|
* @param {Unit} angle |
|
* @return {Unit} |
|
* @api public |
|
*/ |
|
|
|
module.exports = function tan(angle) { |
|
utils.assertType(angle, 'unit', 'angle'); |
|
|
|
var radians = angle.val; |
|
|
|
if (angle.type === 'deg') { |
|
radians *= Math.PI / 180; |
|
} |
|
|
|
var m = Math.pow(10, 9); |
|
|
|
var sin = Math.round(Math.sin(radians) * m) / m |
|
, cos = Math.round(Math.cos(radians) * m) / m |
|
, tan = Math.round(m * sin / cos ) / m; |
|
|
|
return new nodes.Unit(tan, ''); |
|
};
|
|
|