mirror of
https://github.com/TheAlgorithms/JavaScript.git
synced 2025-07-06 01:18:23 +08:00
chore: Merge pull request #640 from leeyan44/master
Added Volume.js into the Math file
This commit is contained in:
123
Maths/Volume.js
Normal file
123
Maths/Volume.js
Normal file
@ -0,0 +1,123 @@
|
||||
/*
|
||||
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
|
||||
Reference: https://www.cuemath.com/measurement/volume-of-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
|
||||
Reference: https://www.cuemath.com/measurement/volume-of-cube/
|
||||
return length * length * length
|
||||
*/
|
||||
const volCube = (length) => {
|
||||
isNumber(length, 'Length')
|
||||
return (length ** 3)
|
||||
}
|
||||
|
||||
/*
|
||||
Calculate the volume for a Cone
|
||||
Reference: https://www.cuemath.com/measurement/volume-of-cone/
|
||||
return PI * radius^2 * height/3
|
||||
*/
|
||||
const volCone = (radius, height) => {
|
||||
isNumber(radius, 'Radius')
|
||||
isNumber(height, 'Height')
|
||||
return (Math.PI * radius ** 2 * height / 3.0)
|
||||
}
|
||||
|
||||
/*
|
||||
Calculate the volume for a Pyramid
|
||||
Reference: https://www.cuemath.com/measurement/volume-of-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.0
|
||||
}
|
||||
|
||||
/*
|
||||
Calculate the volume for a Cylinder
|
||||
Reference: https://www.cuemath.com/measurement/volume-of-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
|
||||
Reference: http://lrd.kangan.edu.au/numbers/content/03_volume/04_page.htm
|
||||
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
|
||||
Reference: https://www.cuemath.com/measurement/volume-of-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
|
||||
Reference: https://www.cuemath.com/measurement/volume-of-sphere/
|
||||
return 4/3 * PI * radius^3
|
||||
*/
|
||||
const volSphere = (radius) => {
|
||||
isNumber(radius, 'Radius')
|
||||
return (4 / 3 * Math.PI * radius ** 3)
|
||||
}
|
||||
|
||||
/*
|
||||
Calculate the volume for a Hemisphere
|
||||
Reference: https://www.cuemath.com/measurement/volume-of-hemisphere/
|
||||
return (2 * PI * radius^3)/3
|
||||
*/
|
||||
const volHemisphere = (radius) => {
|
||||
isNumber(radius, 'Radius')
|
||||
return (2.0 * Math.PI * radius ** 3) / 3.0
|
||||
}
|
||||
|
||||
const isNumber = (number, noName = 'number') => {
|
||||
if (typeof number !== 'number') {
|
||||
throw new TypeError('The ' + noName + ' should be Number type')
|
||||
} else if (number < 0 || (!Number.isFinite(number))) {
|
||||
throw new Error('The ' + noName + ' only accepts positive values')
|
||||
}
|
||||
}
|
||||
|
||||
export { volCuboid, volCube, volCone, volPyramid, volCylinder, volTriangularPrism, volPentagonalPrism, volSphere, volHemisphere }
|
Reference in New Issue
Block a user