Source: core/geometry/geo-reg-poly.js

"use strict"

/**
 * Functions related to regular polygons
 * @memberof core.geometry
 * @namespace regPoly
 */

const geoRegPoly = ({ lib, swLib }) => {
    return {
        /**
         * ...
         * @memberof core.geometry.regPoly
         * @returns ...
         */
        sideLengthFromApothem: (apothem, numSides) => {
            return apothem * 2 * Math.tan(Math.PI / numSides);
        },
        /**
         * ...
         * @memberof core.geometry.regPoly
         * @returns ...
         */
        sideLengthFromCircumRadius: (circumradius, numSides) => {
            return circumradius * 2 * Math.sin(Math.PI / numSides);
        },
        /**
         * ...
         * @memberof core.geometry.regPoly
         * @returns ...
         */
        apothemFromCircumradius: (circumradius, numSides) => {
            return circumradius * Math.cos(Math.PI / numSides)
        },
        /**
         * ...
         * @memberof core.geometry.regPoly
         * @returns ...
         */
        apothemFromSideLength: (sideLength, numSides) => {
            return sideLength / 2 * Math.tan(Math.PI / numSides)
        },
        /**
         * ...
         * @memberof core.geometry.regPoly
         * @returns ...
         */
        circumradiusFromApothem: (apothem, numSides) => {
            return apothem / Math.cos(Math.PI / numSides);
        },
        /**
         * ...
         * @memberof core.geometry.regPoly
         * @returns ...
         */
        circumradiusFromSideLength: (sideLength, numSides) => {
            return sideLength / 2 * Math.sin(Math.PI / numSides)
        },
        /**
         * ...
         * @memberof core.geometry.regPoly
         * @returns ...
         */
        interiorAngle: (numSides) => {
            return 2 * Math.PI / numSides;
        },
    }
}

module.exports = {
    init: geoRegPoly,
};