Skip to content

Instantly share code, notes, and snippets.

@jgphilpott
Last active May 16, 2023 18:48
Show Gist options
  • Save jgphilpott/092c0f3e1bcfa75f543e8485b9b23e7d to your computer and use it in GitHub Desktop.
Save jgphilpott/092c0f3e1bcfa75f543e8485b9b23e7d to your computer and use it in GitHub Desktop.
A collection of functions for converting between different units of angle.
### Angle Conversions ###
convertAngle =
degree: {}
gradian: {}
milliradian: {}
radian: {}
arcSecond: {}
arcMinute: {}
### Degree Conversions ###
convertAngle.degree.degree = deg$deg = (deg) -> deg # Degree to Degree
convertAngle.degree.gradian = deg$gad = (deg) -> deg * (200 / 180) # Degree to Gradian
convertAngle.degree.milliradian = deg$mrad = (deg) -> deg * ((1000 * Math.PI) / 180) # Degree to Milliradian
convertAngle.degree.radian = deg$rad = (deg) -> deg * (Math.PI / 180) # Degree to Radian
convertAngle.degree.arcSecond = deg$soa = (deg) -> deg * 3600 # Degree to Second of Arc
convertAngle.degree.arcMinute = deg$moa = (deg) -> deg * 60 # Degree to Minute of Arc
### Gradian Conversions ###
convertAngle.gradian.degree = gad$deg = (gad) -> gad * (180 / 200) # Gradian to Degree
convertAngle.gradian.gradian = gad$gad = (gad) -> gad # Gradian to Gradian
convertAngle.gradian.milliradian = gad$mrad = (gad) -> gad * ((1000 * Math.PI) / 200) # Gradian to Milliradian
convertAngle.gradian.radian = gad$rad = (gad) -> gad * (Math.PI / 200) # Gradian to Radian
convertAngle.gradian.arcSecond = gad$soa = (gad) -> gad * 3240 # Gradian to Second of Arc
convertAngle.gradian.arcMinute = gad$moa = (gad) -> gad * 54 # Gradian to Minute of Arc
### Milliradian Conversions ###
convertAngle.milliradian.degree = mrad$deg = (mrad) -> mrad * (180 / (1000 * Math.PI)) # Milliradian to Degree
convertAngle.milliradian.gradian = mrad$gad = (mrad) -> mrad * (200 / (1000 * Math.PI)) # Milliradian to Gradian
convertAngle.milliradian.milliradian = mrad$mrad = (mrad) -> mrad # Milliradian to Milliradian
convertAngle.milliradian.radian = mrad$rad = (mrad) -> mrad / 1000 # Milliradian to Radian
convertAngle.milliradian.arcSecond = mrad$soa = (mrad) -> mrad * ((180 * 3600) / (1000 * Math.PI)) # Milliradian to Second of Arc
convertAngle.milliradian.arcMinute = mrad$moa = (mrad) -> mrad * ((180 * 60) / (1000 * Math.PI)) # Milliradian to Minute of Arc
### Radian Conversions ###
convertAngle.radian.degree = rad$deg = (rad) -> rad * (180 / Math.PI) # Radian to Degree
convertAngle.radian.gradian = rad$gad = (rad) -> rad * (200 / Math.PI) # Radian to Gradian
convertAngle.radian.milliradian = rad$mrad = (rad) -> rad * 1000 # Radian to Milliradian
convertAngle.radian.radian = rad$rad = (rad) -> rad # Radian to Radian
convertAngle.radian.arcSecond = rad$soa = (rad) -> rad * ((180 * 3600) / Math.PI) # Radian to Second of Arc
convertAngle.radian.arcMinute = rad$moa = (rad) -> rad * ((180 * 60) / Math.PI) # Radian to Minute of Arc
### Second of Arc Conversions ###
convertAngle.arcSecond.degree = soa$deg = (soa) -> soa / 3600 # Second of Arc to Degree
convertAngle.arcSecond.gradian = soa$gad = (soa) -> soa / 3240 # Second of Arc to Gradian
convertAngle.arcSecond.milliradian = soa$mrad = (soa) -> soa * ((1000 * Math.PI) / (180 * 3600)) # Second of Arc to Milliradian
convertAngle.arcSecond.radian = soa$rad = (soa) -> soa * (Math.PI / (180 * 3600)) # Second of Arc to Radian
convertAngle.arcSecond.arcSecond = soa$soa = (soa) -> soa # Second of Arc to Second of Arc
convertAngle.arcSecond.arcMinute = soa$moa = (soa) -> soa / 60 # Second of Arc to Minute of Arc
### Minute of Arc Conversions ###
convertAngle.arcMinute.degree = moa$deg = (moa) -> moa / 60 # Minute of Arc to Degree
convertAngle.arcMinute.gradian = moa$gad = (moa) -> moa / 54 # Minute of Arc to Gradian
convertAngle.arcMinute.milliradian = moa$mrad = (moa) -> moa * ((1000 * Math.PI) / (180 * 60)) # Minute of Arc to Milliradian
convertAngle.arcMinute.radian = moa$rad = (moa) -> moa * (Math.PI / (180 * 60)) # Minute of Arc to Radian
convertAngle.arcMinute.arcSecond = moa$soa = (moa) -> moa * 60 # Minute of Arc to Second of Arc
convertAngle.arcMinute.arcMinute = moa$moa = (moa) -> moa # Minute of Arc to Minute of Arc
/* Angle Conversions */
var convertAngle, deg$deg, deg$gad, deg$moa, deg$mrad, deg$rad, deg$soa, gad$deg, gad$gad, gad$moa, gad$mrad, gad$rad, gad$soa, moa$deg, moa$gad, moa$moa, moa$mrad, moa$rad, moa$soa, mrad$deg, mrad$gad, mrad$moa, mrad$mrad, mrad$rad, mrad$soa, rad$deg, rad$gad, rad$moa, rad$mrad, rad$rad, rad$soa, soa$deg, soa$gad, soa$moa, soa$mrad, soa$rad, soa$soa;
convertAngle = {
degree: {},
gradian: {},
milliradian: {},
radian: {},
arcSecond: {},
arcMinute: {}
};
/* Degree Conversions */
convertAngle.degree.degree = deg$deg = function(deg) {
return deg; // Degree to Degree
};
convertAngle.degree.gradian = deg$gad = function(deg) {
return deg * (200 / 180); // Degree to Gradian
};
convertAngle.degree.milliradian = deg$mrad = function(deg) {
return deg * ((1000 * Math.PI) / 180); // Degree to Milliradian
};
convertAngle.degree.radian = deg$rad = function(deg) {
return deg * (Math.PI / 180); // Degree to Radian
};
convertAngle.degree.arcSecond = deg$soa = function(deg) {
return deg * 3600; // Degree to Second of Arc
};
convertAngle.degree.arcMinute = deg$moa = function(deg) {
return deg * 60; // Degree to Minute of Arc
};
/* Gradian Conversions */
convertAngle.gradian.degree = gad$deg = function(gad) {
return gad * (180 / 200); // Gradian to Degree
};
convertAngle.gradian.gradian = gad$gad = function(gad) {
return gad; // Gradian to Gradian
};
convertAngle.gradian.milliradian = gad$mrad = function(gad) {
return gad * ((1000 * Math.PI) / 200); // Gradian to Milliradian
};
convertAngle.gradian.radian = gad$rad = function(gad) {
return gad * (Math.PI / 200); // Gradian to Radian
};
convertAngle.gradian.arcSecond = gad$soa = function(gad) {
return gad * 3240; // Gradian to Second of Arc
};
convertAngle.gradian.arcMinute = gad$moa = function(gad) {
return gad * 54; // Gradian to Minute of Arc
};
/* Milliradian Conversions */
convertAngle.milliradian.degree = mrad$deg = function(mrad) {
return mrad * (180 / (1000 * Math.PI)); // Milliradian to Degree
};
convertAngle.milliradian.gradian = mrad$gad = function(mrad) {
return mrad * (200 / (1000 * Math.PI)); // Milliradian to Gradian
};
convertAngle.milliradian.milliradian = mrad$mrad = function(mrad) {
return mrad; // Milliradian to Milliradian
};
convertAngle.milliradian.radian = mrad$rad = function(mrad) {
return mrad / 1000; // Milliradian to Radian
};
convertAngle.milliradian.arcSecond = mrad$soa = function(mrad) {
return mrad * ((180 * 3600) / (1000 * Math.PI)); // Milliradian to Second of Arc
};
convertAngle.milliradian.arcMinute = mrad$moa = function(mrad) {
return mrad * ((180 * 60) / (1000 * Math.PI)); // Milliradian to Minute of Arc
};
/* Radian Conversions */
convertAngle.radian.degree = rad$deg = function(rad) {
return rad * (180 / Math.PI); // Radian to Degree
};
convertAngle.radian.gradian = rad$gad = function(rad) {
return rad * (200 / Math.PI); // Radian to Gradian
};
convertAngle.radian.milliradian = rad$mrad = function(rad) {
return rad * 1000; // Radian to Milliradian
};
convertAngle.radian.radian = rad$rad = function(rad) {
return rad; // Radian to Radian
};
convertAngle.radian.arcSecond = rad$soa = function(rad) {
return rad * ((180 * 3600) / Math.PI); // Radian to Second of Arc
};
convertAngle.radian.arcMinute = rad$moa = function(rad) {
return rad * ((180 * 60) / Math.PI); // Radian to Minute of Arc
};
/* Second of Arc Conversions */
convertAngle.arcSecond.degree = soa$deg = function(soa) {
return soa / 3600; // Second of Arc to Degree
};
convertAngle.arcSecond.gradian = soa$gad = function(soa) {
return soa / 3240; // Second of Arc to Gradian
};
convertAngle.arcSecond.milliradian = soa$mrad = function(soa) {
return soa * ((1000 * Math.PI) / (180 * 3600)); // Second of Arc to Milliradian
};
convertAngle.arcSecond.radian = soa$rad = function(soa) {
return soa * (Math.PI / (180 * 3600)); // Second of Arc to Radian
};
convertAngle.arcSecond.arcSecond = soa$soa = function(soa) {
return soa; // Second of Arc to Second of Arc
};
convertAngle.arcSecond.arcMinute = soa$moa = function(soa) {
return soa / 60; // Second of Arc to Minute of Arc
};
/* Minute of Arc Conversions */
convertAngle.arcMinute.degree = moa$deg = function(moa) {
return moa / 60; // Minute of Arc to Degree
};
convertAngle.arcMinute.gradian = moa$gad = function(moa) {
return moa / 54; // Minute of Arc to Gradian
};
convertAngle.arcMinute.milliradian = moa$mrad = function(moa) {
return moa * ((1000 * Math.PI) / (180 * 60)); // Minute of Arc to Milliradian
};
convertAngle.arcMinute.radian = moa$rad = function(moa) {
return moa * (Math.PI / (180 * 60)); // Minute of Arc to Radian
};
convertAngle.arcMinute.arcSecond = moa$soa = function(moa) {
return moa * 60; // Minute of Arc to Second of Arc
};
convertAngle.arcMinute.arcMinute = moa$moa = function(moa) {
return moa; // Minute of Arc to Minute of Arc
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment