geometry/cylinder.js

import Circle from './circle.js';

/**
 * Formulas related to cylinders.
 *
 * @class Cylinder
 * @memberof geometry
 */
export default class Cylinder {
    /**
     * Calculates the lateral area of a cylinder
     *
     * @example
     * mathform.geometry.Cylinder.lateralArea(); // ~6.28
     *
     * @memberof! geometry.Cylinder#
     * @param   {number} r    - radius
     * @param   {number} h    - height
     * @returns {number}        2πrh
     * @static
     */
    static lateralArea(r, h) {
        return 2 * Math.PI * r * h;
    }

    /**
     * Calculates the lateral area of a cylinder
     *
     * @example
     * mathform.geometry.Cylinder.totalArea(1, 1); // ~12.57
     *
     * @memberof! geometry.Cylinder#
     * @param   {number} r    - radius
     * @param   {number} h    - height
     * @returns {number}        2πrh+2πr²
     * @static
     */
    static totalArea(r, h) {
        return Cylinder.lateralArea(r, h) + 2 * Circle.area(r);
    }

    /**
     * Calculates the lateral area of a cylinder
     *
     * @example
     * mathform.geometry.Cylinder.volume(1, 1); // ~3.14
     *
     * @memberof! geometry.Cylinder#
     * @param   {number} r    - radius
     * @param   {number} h    - height
     * @returns {number}        πr²h
     * @static
     */
    static volume(r, h) {
        return Math.PI * r ** 2 * h;
    }

    /**
     * TODO: add functions for finding radius
     */
}