Skip to content

Commit

Permalink
Merge pull request #29 from observerly/feature/utilities/getNormalize…
Browse files Browse the repository at this point in the history
…dInclinationDegree

feat: Added getNormalizedInclinationDegree() to utilities module in @observerly/astrometry.
  • Loading branch information
michealroberts authored Aug 16, 2023
2 parents df4df32 + e2bf3c3 commit bdb082b
Show file tree
Hide file tree
Showing 2 changed files with 79 additions and 1 deletion.
36 changes: 36 additions & 0 deletions src/utilities.ts
Original file line number Diff line number Diff line change
Expand Up @@ -61,3 +61,39 @@ export const getNormalizedAzimuthalDegree = (degrees: number): number => {
}

/*****************************************************************************************************************/

/**
*
* getNormalizedInclinationDegree()
*
* Normalizes an inclination angle it to a value between 0 and 360.
*
* @param degrees - The angle in degrees to convert.
* @returns The normalized angle in degrees.
*
*/
export const getNormalizedInclinationDegree = (degrees: number): number => {
let d = degrees

// Correct for angles greater than 90° or less than -90°
if (degrees > 90) {
d = 180 - degrees
}

// Correct for angles less than -90°
if (degrees < -90) {
d = -180 - degrees
}

if (d < 0) {
d % -90
}

if (d > 0) {
d % 90
}

return d
}

/*****************************************************************************************************************/
44 changes: 43 additions & 1 deletion tests/utilities.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,8 @@ import { describe, expect, it } from 'vitest'
import {
convertDegreesToRadians,
convertRadiansToDegrees,
getNormalizedAzimuthalDegree
getNormalizedAzimuthalDegree,
getNormalizedInclinationDegree
} from '../src/utilities'

/*****************************************************************************************************************/
Expand Down Expand Up @@ -106,3 +107,44 @@ describe('getNormalizedAzimuthalDegree', () => {
})

/*****************************************************************************************************************/

describe('getNormalizedInclinationDegree', () => {
it('should be defined', () => {
expect(getNormalizedInclinationDegree).toBeDefined()
})

it('should correctly normalize a degree value to between -90 and 90', () => {
let degree = getNormalizedInclinationDegree(91)
expect(degree).toBe(89)

degree = getNormalizedInclinationDegree(-91)
expect(degree).toBe(-89)

degree = getNormalizedInclinationDegree(0)
expect(degree).toBe(0)

degree = getNormalizedInclinationDegree(90)
expect(degree).toBe(90)

degree = getNormalizedInclinationDegree(-90)
expect(degree).toBe(-90)

degree = getNormalizedInclinationDegree(180)
expect(degree).toBe(0)

degree = getNormalizedInclinationDegree(-180)
expect(degree).toBe(0)

degree = getNormalizedInclinationDegree(270)
expect(degree).toBe(-90)

degree = getNormalizedInclinationDegree(-270)
expect(degree).toBe(90)

degree = getNormalizedInclinationDegree(120)
expect(degree).toBe(60)

degree = getNormalizedInclinationDegree(-130)
expect(degree).toBe(-50)
})
})

0 comments on commit bdb082b

Please sign in to comment.