mirror of
https://github.com/TheAlgorithms/Java.git
synced 2025-07-24 04:54:21 +08:00
194 lines
5.7 KiB
Java
194 lines
5.7 KiB
Java
package com.thealgorithms.maths;
|
|
|
|
/**
|
|
* Find the area of various geometric shapes
|
|
*/
|
|
public class Area {
|
|
|
|
/**
|
|
* String of IllegalArgumentException for radius
|
|
*/
|
|
private static final String POSITIVE_RADIUS = "Must be a positive radius";
|
|
|
|
/**
|
|
* String of IllegalArgumentException for height
|
|
*/
|
|
private static final String POSITIVE_HEIGHT = "Must be a positive height";
|
|
|
|
/**
|
|
* String of IllegalArgumentException for base
|
|
*/
|
|
private static final String POSITIVE_BASE = "Must be a positive base";
|
|
|
|
/**
|
|
* Calculate the surface area of a cube.
|
|
*
|
|
* @param sideLength side length of cube
|
|
* @return surface area of given cube
|
|
*/
|
|
public static double surfaceAreaCube(final double sideLength) {
|
|
if (sideLength <= 0) {
|
|
throw new IllegalArgumentException("Must be a positive sideLength");
|
|
}
|
|
return 6 * sideLength * sideLength;
|
|
}
|
|
|
|
/**
|
|
* Calculate the surface area of a sphere.
|
|
*
|
|
* @param radius radius of sphere
|
|
* @return surface area of given sphere
|
|
*/
|
|
public static double surfaceAreaSphere(final double radius) {
|
|
if (radius <= 0) {
|
|
throw new IllegalArgumentException(POSITIVE_RADIUS);
|
|
}
|
|
return 4 * Math.PI * radius * radius;
|
|
}
|
|
|
|
/**
|
|
* Calculate the area of a rectangle.
|
|
*
|
|
* @param length length of a rectangle
|
|
* @param width width of a rectangle
|
|
* @return area of given rectangle
|
|
*/
|
|
public static double surfaceAreaRectangle(final double length, final double width) {
|
|
if (length <= 0) {
|
|
throw new IllegalArgumentException("Must be a positive length");
|
|
}
|
|
if (width <= 0) {
|
|
throw new IllegalArgumentException("Must be a positive width");
|
|
}
|
|
return length * width;
|
|
}
|
|
|
|
/**
|
|
* Calculate surface area of a cylinder.
|
|
*
|
|
* @param radius radius of the floor
|
|
* @param height height of the cylinder.
|
|
* @return volume of given cylinder
|
|
*/
|
|
public static double surfaceAreaCylinder(final double radius, final double height) {
|
|
if (radius <= 0) {
|
|
throw new IllegalArgumentException(POSITIVE_RADIUS);
|
|
}
|
|
if (height <= 0) {
|
|
throw new IllegalArgumentException(POSITIVE_RADIUS);
|
|
}
|
|
return 2 * (Math.PI * radius * radius + Math.PI * radius * height);
|
|
}
|
|
|
|
/**
|
|
* Calculate the area of a square.
|
|
*
|
|
* @param sideLength side length of square
|
|
* @return area of given square
|
|
*/
|
|
public static double surfaceAreaSquare(final double sideLength) {
|
|
if (sideLength <= 0) {
|
|
throw new IllegalArgumentException("Must be a positive sideLength");
|
|
}
|
|
return sideLength * sideLength;
|
|
}
|
|
|
|
/**
|
|
* Calculate the area of a triangle.
|
|
*
|
|
* @param base base of triangle
|
|
* @param height height of triangle
|
|
* @return area of given triangle
|
|
*/
|
|
public static double surfaceAreaTriangleRectangle(final double base, final double height) {
|
|
if (base <= 0) {
|
|
throw new IllegalArgumentException(POSITIVE_BASE);
|
|
}
|
|
if (height <= 0) {
|
|
throw new IllegalArgumentException(POSITIVE_HEIGHT);
|
|
}
|
|
return base * height / 2;
|
|
}
|
|
|
|
/**
|
|
* Calculate the area of a parallelogram.
|
|
*
|
|
* @param base base of a parallelogram
|
|
* @param height height of a parallelogram
|
|
* @return area of given parallelogram
|
|
*/
|
|
public static double surfaceAreaParallelogram(final double base, final double height) {
|
|
if (base <= 0) {
|
|
throw new IllegalArgumentException(POSITIVE_BASE);
|
|
}
|
|
if (height <= 0) {
|
|
throw new IllegalArgumentException(POSITIVE_HEIGHT);
|
|
}
|
|
return base * height;
|
|
}
|
|
|
|
/**
|
|
* Calculate the area of a trapezium.
|
|
*
|
|
* @param base1 upper base of trapezium
|
|
* @param base2 bottom base of trapezium
|
|
* @param height height of trapezium
|
|
* @return area of given trapezium
|
|
*/
|
|
public static double surfaceAreaTrapezium(final double base1, final double base2, final double height) {
|
|
if (base1 <= 0) {
|
|
throw new IllegalArgumentException(POSITIVE_BASE + 1);
|
|
}
|
|
if (base2 <= 0) {
|
|
throw new IllegalArgumentException(POSITIVE_BASE + 2);
|
|
}
|
|
if (height <= 0) {
|
|
throw new IllegalArgumentException(POSITIVE_HEIGHT);
|
|
}
|
|
return (base1 + base2) * height / 2;
|
|
}
|
|
|
|
/**
|
|
* Calculate the area of a circle.
|
|
*
|
|
* @param radius radius of circle
|
|
* @return area of given circle
|
|
*/
|
|
public static double surfaceAreaCircle(final double radius) {
|
|
if (radius <= 0) {
|
|
throw new IllegalArgumentException(POSITIVE_RADIUS);
|
|
}
|
|
return Math.PI * radius * radius;
|
|
}
|
|
|
|
/**
|
|
* Calculate the surface area of a hemisphere.
|
|
*
|
|
* @param radius radius of hemisphere
|
|
* @return surface area of given hemisphere
|
|
*/
|
|
public static double surfaceAreaHemisphere(final double radius) {
|
|
if (radius <= 0) {
|
|
throw new IllegalArgumentException(POSITIVE_RADIUS);
|
|
}
|
|
return 3 * Math.PI * radius * radius;
|
|
}
|
|
|
|
/**
|
|
* Calculate the surface area of a cone.
|
|
*
|
|
* @param radius radius of cone.
|
|
* @param height of cone.
|
|
* @return surface area of given cone.
|
|
*/
|
|
public static double surfaceAreaCone(final double radius, final double height) {
|
|
if (radius <= 0) {
|
|
throw new IllegalArgumentException(POSITIVE_RADIUS);
|
|
}
|
|
if (height <= 0) {
|
|
throw new IllegalArgumentException(POSITIVE_HEIGHT);
|
|
}
|
|
return Math.PI * radius * (radius + Math.pow(height * height + radius * radius, 0.5));
|
|
}
|
|
}
|