Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>It appears that there is no straight forward process to do this. The best method I found is to convert from RAE coordinates to SEZ coordinates, then from SEZ coordinates to ECR coordinates. Here is some C# code I modified to C++ to achieve this:</p> <pre><code>void main() { // NOTE: distances are in meters, while angles are in degrees double siteECR[] = { -763997.48, -5458565.87, 3196706.0 }; double objRAE[] = { 30000.0, 310.0, 18.0 }; double objECR[] = { 0.0, 0.0, 0.0 }; // Should return ~[-764142.7629, -5458517.683, 3217218.18] in objECR RAEtoECR(siteECR, objRAE, objECR); } /************************************************************************************************************************/ /* Converts a Range, Azimuth, Elevation location to a Latitude, Longitude, Altitude location */ /* siteLLA - array holding the Latitude, Longitude, and Altitude of the site location in degrees and meters */ /* rae - array holding the Range, Azimuth, and Elevation, in degrees, of the object viewed from the site location */ /* objECR - destination array to hold the ECR X, Y, Z location in meters */ /************************************************************************************************************************/ void RAEtoECR(double siteECR[], double rae[], double objECR[]) { double tempSEZ[] = { 0.0, 0.0, 0.0 }; double siteLLA[] = { 0.0, 0.0, 0.0 }; ECRtoLLA(siteECR, siteLLA); RAEtoSEZ(siteLLA, objRAE, tempSEZ); SEZtoECR(siteLLA, tempSEZ, objECR); } /************************************************************************************************************************/ /* Converts a Range, Azimuth, Elevation location to a South, East, Zenith location */ /* siteLLA - array holding the Latitude, Longitude, and Altitude of the site location in degrees and meters */ /* rae - array holding the Range, Azimuth, and Elevation, in degrees, of the object viewed from the site location */ /* sez - destination array to hold the South, East, and Zenith coordinates of the object being viewed in meters */ /************************************************************************************************************************/ void RAEtoSEZ(double siteLLA[], double rae[], double sez[]) { double range, azimuth, elevation; range = rae[0]; azimuth = rae[1]; elevation = rae[2]; // Compute needed math double slat = sin(Deg2Rad(siteLLA[0])); double slon = sin(Deg2Rad(siteLLA[1])); double clat = cos(Deg2Rad(siteLLA[0])); double clon = cos(Deg2Rad(siteLLA[1])); // Convert to radians azimuth = DEG2RAD(azimuth); elevation = DEG2RAD(elevation); // Convert sez[0] = -range * cos(elevation) * cos(azimuth); sez[1] = range * cos(elevation) * sin(azimuth); sez[2] = range * sin(elevation); } /************************************************************************************************************************/ /* Converts a South, East, Zenith location to an ECR X, Y, Z location */ /* siteLLA - array holding the Latitude, Longitude, and Altitude of the site location in degrees and meters */ /* sez - array holding the South, East, and Zenith coordinates of the object being viewed in meters */ /* ecr - destination array to hold the ECR X, Y, Z location in meters */ /************************************************************************************************************************/ void SEZtoECR(double siteLLA[], double sez[], double ecr[]) { // Convert siteLLA to XYZ double[] siteXYZ = { 0.0, 0.0, 0.0 }; LLAtoECR(siteLLA, siteXYZ); double south, east, zenith; south = sez[0]; east = sez[1]; zenith = sez[2]; // Compute needed math double slat = sin(Deg2Rad(siteLLA[0])); double slon = sin(Deg2Rad(siteLLA[1])); double clat = cos(Deg2Rad(siteLLA[0])); double clon = cos(Deg2Rad(siteLLA[1])); // Convert ecr[0] = ( slat * clon * south) + (-slon * east) + (clat * clon * zenith) + siteXYZ[0]; ecr[1] = ( slat * slon * south) + ( clon * east) + (clat * slon * zenith) + siteXYZ[1]; ecr[2] = (-clat * south) + ( slat * zenith) + siteXYZ[2]; } </code></pre>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. VO
      singulars
      1. This table or related slice is empty.
    2. VO
      singulars
      1. This table or related slice is empty.
    3. VO
      singulars
      1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload