diff --git a/src/main/java/com/thealgorithms/maths/Volume.java b/src/main/java/com/thealgorithms/maths/Volume.java index 4b73f849b..0f282b2ab 100644 --- a/src/main/java/com/thealgorithms/maths/Volume.java +++ b/src/main/java/com/thealgorithms/maths/Volume.java @@ -90,4 +90,16 @@ public final class Volume { public static double volumePyramid(double baseArea, double height) { return (baseArea * height) / 3; } + + /** + * Calculate the volume of a frustum of a cone. + * + * @param r1 radius of the top of the frustum + * @param r2 radius of the bottom of the frustum + * @param height height of the frustum + * @return volume of the frustum + */ + public static double volumeFrustumOfCone(double r1, double r2, double height) { + return (Math.PI * height / 3) * (r1 * r1 + r2 * r2 + r1 * r2); + } } diff --git a/src/test/java/com/thealgorithms/maths/VolumeTest.java b/src/test/java/com/thealgorithms/maths/VolumeTest.java index 1bdb3ae80..7cd0c6716 100644 --- a/src/test/java/com/thealgorithms/maths/VolumeTest.java +++ b/src/test/java/com/thealgorithms/maths/VolumeTest.java @@ -32,5 +32,8 @@ public class VolumeTest { /* test pyramid */ assertTrue(Volume.volumePyramid(10, 3) == 10.0); + + /* test frustum */ + assertTrue(Volume.volumeFrustumOfCone(3, 5, 7) == 359.188760060433); } }