From 39319037334fceace696fa806678d3c3dfd884e2 Mon Sep 17 00:00:00 2001 From: leeyan44 <86589062+leeyan44@users.noreply.github.com> Date: Mon, 19 Jul 2021 22:13:47 +0800 Subject: [PATCH] create a Volume.js in the math file Volume.js in the math file is to calculate the volume of some shapes such as Cuboid, Cube, Cone, Pyramid, Cylinder, Triangular Prism, Pentagonal Prism, Sphere and Hemisphere. --- Maths/Volume.js | 114 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 114 insertions(+) create mode 100644 Maths/Volume.js diff --git a/Maths/Volume.js b/Maths/Volume.js new file mode 100644 index 000000000..ae65925a3 --- /dev/null +++ b/Maths/Volume.js @@ -0,0 +1,114 @@ +/* + Calculate the volume of the shapes + + Volume for Cuboid + Volume for Cube + Volume for Cone + Volume for Pyramid + Volume for Cylinder + Volume for Triangular Prism + Volume for Pentagonal Prism + Volume for Sphere + Volume for Hemisphere + */ + +/* + Calculate the volume for a Cuboid + return width * length * height +*/ +const volCuboid = (width, length, height) => { + isNumber(width, 'Width') + isNumber(length, 'Length') + isNumber(height, 'Height') + return (width * length * height) +} + +/* + Calculate the volume for a Cube + return length * length * length +*/ +const volCube = (length) => { + isNumber(length, 'Length') + return (length ** 3) +} + +/* + Calculate the volume for a Cone + return PI * radius^2 * height/3 +*/ +const volCone = (radius, height) => { + isNumber(radius, 'Radius') + isNumber(height, 'Height') + return (Math.PI * radius ** 2 * height/3) +} + +/* + Calculate the volume for a Pyramid + return (baseLength * baseWidth * height) / 3 +*/ +const volPyramid = (baseLength, baseWidth, height) => { + isNumber(baseLength, 'BaseLength') + isNumber(baseWidth, 'BaseWidth') + isNumber(height, 'Height') + return (baseLength * baseWidth * height) / 3 +} + +/* + Calculate the volume for a Cylinder + return PI * radius^2 * height +*/ +const volCylinder = (radius, height) => { + isNumber(radius, 'Radius') + isNumber(height, 'Height') + return (Math.PI * radius ** 2 * height) +} + +/* + Calculate the volume for a Triangular Prism + return 1 / 2 * baseLengthTriangle * heightTriangle * height +*/ +const volTriangularPrism = (baseLengthTriangle, heightTriangle, height) => { + isNumber(baseLengthTriangle, 'BaseLengthTriangle') + isNumber(heightTriangle, 'HeightTriangle') + isNumber(height, 'Height') + return (1 / 2 * baseLengthTriangle * heightTriangle * height) +} + +/* + Calculate the volume for a Pentagonal Prism + return 5/2 * pentagonalLength * pentagonalBaseLength * height +*/ +const volPentagonalPrism = (pentagonalLength, pentagonalBaseLength, height) => { + isNumber(pentagonalLength, 'PentagonalLength') + isNumber(pentagonalBaseLength, 'PentagonalBaseLength') + isNumber(height, 'Height') + return (5/2 * pentagonalLength * pentagonalBaseLength * height) +} + +/* + Calculate the volume for a Sphere + return 4/3 * PI * radius^3 +*/ +const volSphere = (radius) => { + isNumber(radius, 'Radius') + return (4/3 * PI * radius ** 3) +} + +/* + Calculate the volume for a Hemisphere + return (2 * PI * radius^3)/3 +*/ +const volHemisphere = (radius) => { + isNumber(radius, 'Radius') + return (2 * PI * radius ** 3)/3 +} + +const isNumber = (number, noName = 'number') => { + if (typeof number !== 'number') { + throw new TypeError('The ' + noName + ' should be Number type') + } else if (number < 0) { + throw new Error('The ' + noName + ' only accepts positive values') + } +} + +export {volCuboid, volCube, volCone, volPyramid, volCylinder, volTriangularPrism, volPentagonalPrism, volSphere, volHemisphere }