mirror of
https://github.com/TheAlgorithms/JavaScript.git
synced 2025-07-05 08:16:50 +08:00
algorithm: find length of an arc and area of the sector formed by an arc of a circle (#1119)
* Add an algorithm to find length and area of an arc of a circle * Updated to follow Javascript Standard Style * Update CircularArc.js * Update CircularArc.js * Add tests * Followed Javascript standard style
This commit is contained in:

committed by
GitHub

parent
8461271fc8
commit
109e4a685b
31
Maths/CircularArc.js
Normal file
31
Maths/CircularArc.js
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
import { degreeToRadian } from './DegreeToRadian.js'
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @function circularArcLength
|
||||||
|
* @description calculate the length of a circular arc
|
||||||
|
* @param {Integer} radius
|
||||||
|
* @param {Integer} degrees
|
||||||
|
* @returns {Integer} radius * angle_in_radians
|
||||||
|
* @see https://en.wikipedia.org/wiki/Circular_arc
|
||||||
|
* @example circularArcLength(3, 45) = 2.356194490192345
|
||||||
|
*/
|
||||||
|
function circularArcLength (radius, degrees) {
|
||||||
|
return radius * degreeToRadian(degrees)
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* @function circularArcArea
|
||||||
|
* @description calculate the area of the sector formed by an arc
|
||||||
|
* @param {Integer} radius
|
||||||
|
* @param {Integer} degrees
|
||||||
|
* @returns {Integer} 0.5 * r * r * angle_in_radians
|
||||||
|
* @see https://en.wikipedia.org/wiki/Circular_arc
|
||||||
|
* @example circularArcArea(3,45) = 3.5342917352885173
|
||||||
|
*/
|
||||||
|
function circularArcArea (radius, degrees) {
|
||||||
|
return Math.pow(radius, 2) * degreeToRadian(degrees) / 2
|
||||||
|
}
|
||||||
|
|
||||||
|
export {
|
||||||
|
circularArcLength,
|
||||||
|
circularArcArea
|
||||||
|
}
|
19
Maths/test/CircularArc.test.js
Normal file
19
Maths/test/CircularArc.test.js
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
import { circularArcLength, circularArcArea } from '../CircularArc'
|
||||||
|
|
||||||
|
describe('circularArcLength', () => {
|
||||||
|
it('with natural number', () => {
|
||||||
|
const arcLengthOfOneThirty = circularArcLength(1, 30)
|
||||||
|
const arcLengthOfThreeSixty = circularArcLength(3, 60)
|
||||||
|
expect(arcLengthOfOneThirty).toBe(0.5235987755982988)
|
||||||
|
expect(arcLengthOfThreeSixty).toBe(3.141592653589793)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
describe('circularArcArea', () => {
|
||||||
|
it('with natural number', () => {
|
||||||
|
const arcAreaOfOneThirty = circularArcArea(1, 30)
|
||||||
|
const arcAreaOfThreeSixty = circularArcArea(3, 60)
|
||||||
|
expect(arcAreaOfOneThirty).toBe(0.2617993877991494)
|
||||||
|
expect(arcAreaOfThreeSixty).toBe(4.71238898038469)
|
||||||
|
})
|
||||||
|
})
|
Reference in New Issue
Block a user