From 863185d2b424113fcd30d7856645a45a12c3e399 Mon Sep 17 00:00:00 2001 From: Gustavo Kamihara <49957327+Japoncio3k@users.noreply.github.com> Date: Mon, 31 Oct 2022 13:40:36 -0300 Subject: [PATCH] algorithm class: pyramid (#1254) * Added pyramid * Removed * 1 * Change class name --- Geometry/Pyramid.js | 25 +++++++++++++++++++++++++ Geometry/Test/Pyramid.test.js | 11 +++++++++++ 2 files changed, 36 insertions(+) create mode 100644 Geometry/Pyramid.js create mode 100644 Geometry/Test/Pyramid.test.js diff --git a/Geometry/Pyramid.js b/Geometry/Pyramid.js new file mode 100644 index 000000000..759b7376e --- /dev/null +++ b/Geometry/Pyramid.js @@ -0,0 +1,25 @@ +/** + * This class represents a regular pyramid and can calculate its volume and surface area + * https://en.wikipedia.org/wiki/Pyramid_(geometry) + * @constructor + * @param {number} bsl - The side length of the base of the pyramid. + * @param {number} height - The height of the pyramid + */ +export default class Pyramid { + constructor (bsl, height) { + this.bsl = bsl + this.height = height + } + + baseArea = () => { + return Math.pow(this.bsl, 2) + } + + volume = () => { + return this.baseArea() * this.height / 3 + } + + surfaceArea = () => { + return this.baseArea() + this.bsl * 4 / 2 * Math.sqrt(Math.pow(this.bsl / 2, 2) + Math.pow(this.height, 2)) + } +} diff --git a/Geometry/Test/Pyramid.test.js b/Geometry/Test/Pyramid.test.js new file mode 100644 index 000000000..a6d2b16d1 --- /dev/null +++ b/Geometry/Test/Pyramid.test.js @@ -0,0 +1,11 @@ +import Pyramid from '../Pyramid' + +const pyramid = new Pyramid(3, 5) + +test('The Volume of a cone with base radius equal to 3 and height equal to 5', () => { + expect(parseFloat(pyramid.volume().toFixed(2))).toEqual(15) +}) + +test('The Surface Area of a cone with base radius equal to 3 and height equal to 5', () => { + expect(parseFloat(pyramid.surfaceArea().toFixed(2))).toEqual(40.32) +})