From 0fb4d86691cf4fe6ba769fb2c092bcb80c2cdf14 Mon Sep 17 00:00:00 2001 From: Don Cross Date: Mon, 17 Aug 2020 21:31:04 -0400 Subject: [PATCH] Reworked terse_vector_t to use (x, y, z) instead of c[3]. The code reads so much easier to use normal (x, y, z) coordinates. --- generate/codegen.c | 2 +- generate/template/astronomy.c | 75 ++++++++-------- source/c/astronomy.c | 157 +++++++++++++++++----------------- 3 files changed, 116 insertions(+), 118 deletions(-) diff --git a/generate/codegen.c b/generate/codegen.c index 8841840e..b2f73256 100644 --- a/generate/codegen.c +++ b/generate/codegen.c @@ -1610,7 +1610,7 @@ static int PlutoStateTable_C(cg_context_t *context, const top_model_t *model) CHECK(TopPosition(model, tt, &equ)); fprintf(context->outfile, - "%c { %10.1lf, {{%20.16lf, %20.16lf, %20.16lf}}, {{%23.16le, %23.16le, %23.16le}} }\n", + "%c { %10.1lf, {%20.16lf, %20.16lf, %20.16lf}, {%23.16le, %23.16le, %23.16le} }\n", (i==0 ? ' ' : ','), tt, equ.x, equ.y, equ.z, equ.vx, equ.vy, equ.vz); } diff --git a/generate/template/astronomy.c b/generate/template/astronomy.c index a7678cf3..9b7becb2 100644 --- a/generate/template/astronomy.c +++ b/generate/template/astronomy.c @@ -41,7 +41,9 @@ extern "C" { typedef struct { - double c[3]; + double x; + double y; + double z; } terse_vector_t; @@ -50,49 +52,49 @@ static const terse_vector_t VecZero; static terse_vector_t VecAdd(terse_vector_t a, terse_vector_t b) { terse_vector_t c; - c.c[0] = a.c[0] + b.c[0]; - c.c[1] = a.c[1] + b.c[1]; - c.c[2] = a.c[2] + b.c[2]; + c.x = a.x + b.x; + c.y = a.y + b.y; + c.z = a.z + b.z; return c; } static terse_vector_t VecSub(terse_vector_t a, terse_vector_t b) { terse_vector_t c; - c.c[0] = a.c[0] - b.c[0]; - c.c[1] = a.c[1] - b.c[1]; - c.c[2] = a.c[2] - b.c[2]; + c.x = a.x - b.x; + c.y = a.y - b.y; + c.z = a.z - b.z; return c; } static void VecIncr(terse_vector_t *target, terse_vector_t source) { - target->c[0] += source.c[0]; - target->c[1] += source.c[1]; - target->c[2] += source.c[2]; + target->x += source.x; + target->y += source.y; + target->z += source.z; } static void VecDecr(terse_vector_t *target, terse_vector_t source) { - target->c[0] -= source.c[0]; - target->c[1] -= source.c[1]; - target->c[2] -= source.c[2]; + target->x -= source.x; + target->y -= source.y; + target->z -= source.z; } static terse_vector_t VecMul(double s, terse_vector_t v) { terse_vector_t p; - p.c[0] = s * v.c[0]; - p.c[1] = s * v.c[1]; - p.c[2] = s * v.c[2]; + p.x = s * v.x; + p.y = s * v.y; + p.z = s * v.z; return p; } static void VecScale(terse_vector_t *target, double scalar) { - target->c[0] *= scalar; - target->c[1] *= scalar; - target->c[2] *= scalar; + target->x *= scalar; + target->y *= scalar; + target->z *= scalar; } static astro_vector_t PublicVec(astro_time_t time, terse_vector_t terse) @@ -101,9 +103,9 @@ static astro_vector_t PublicVec(astro_time_t time, terse_vector_t terse) vector.status = ASTRO_SUCCESS; vector.t = time; - vector.x = terse.c[0]; - vector.y = terse.c[1]; - vector.z = terse.c[2]; + vector.x = terse.x; + vector.y = terse.y; + vector.z = terse.z; return vector; } @@ -1796,9 +1798,9 @@ static terse_vector_t VsopRotate(const double ecl[3]) Z FK5 0.000000000000 +0.397776982902 +0.917482137087 Z VSOP87A */ - equ.c[0] = ecl[0] + 0.000000440360*ecl[1] - 0.000000190919*ecl[2]; - equ.c[1] = -0.000000479966*ecl[0] + 0.917482137087*ecl[1] - 0.397776982902*ecl[2]; - equ.c[2] = 0.397776982902*ecl[1] + 0.917482137087*ecl[2]; + equ.x = ecl[0] + 0.000000440360*ecl[1] - 0.000000190919*ecl[2]; + equ.y = -0.000000479966*ecl[0] + 0.917482137087*ecl[1] - 0.397776982902*ecl[2]; + equ.z = 0.397776982902*ecl[1] + 0.917482137087*ecl[2]; return equ; } @@ -1835,9 +1837,9 @@ static astro_vector_t CalcVsop(const vsop_model_t *model, astro_time_t time) /* Package the position as astro_vector_t. */ vector.status = ASTRO_SUCCESS; vector.t = time; - vector.x = pos.c[0]; - vector.y = pos.c[1]; - vector.z = pos.c[2]; + vector.x = pos.x; + vector.y = pos.y; + vector.z = pos.z; return vector; } @@ -1917,9 +1919,7 @@ static body_state_t CalcVsopPosVel(const vsop_model_t *model, double tt) state.v = VsopRotate(eclip); /* Convert speed units from [AU/millennium] to [AU/day]. */ - state.v.c[0] /= DAYS_PER_MILLENNIUM; - state.v.c[1] /= DAYS_PER_MILLENNIUM; - state.v.c[2] /= DAYS_PER_MILLENNIUM; + VecScale(&state.v, 1 / DAYS_PER_MILLENNIUM); return state; } @@ -1998,7 +1998,6 @@ typedef struct $ASTRO_PLUTO_TABLE(); - static body_state_t AdjustBarycenterPosVel(body_state_t *ssb, double tt, astro_body_t body, double planet_gm) { body_state_t planet; @@ -2051,16 +2050,16 @@ static void AddAcceleration(terse_vector_t *acc, terse_vector_t small_pos, doubl { double dx, dy, dz, r2, pull; - dx = major_pos.c[0] - small_pos.c[0]; - dy = major_pos.c[1] - small_pos.c[1]; - dz = major_pos.c[2] - small_pos.c[2]; + dx = major_pos.x - small_pos.x; + dy = major_pos.y - small_pos.y; + dz = major_pos.z - small_pos.z; r2 = dx*dx + dy*dy + dz*dz; pull = gm / (r2 * sqrt(r2)); - acc->c[0] += dx * pull; - acc->c[1] += dy * pull; - acc->c[2] += dz * pull; + acc->x += dx * pull; + acc->y += dy * pull; + acc->z += dz * pull; } diff --git a/source/c/astronomy.c b/source/c/astronomy.c index 196b58b7..5b77e661 100644 --- a/source/c/astronomy.c +++ b/source/c/astronomy.c @@ -41,7 +41,9 @@ extern "C" { typedef struct { - double c[3]; + double x; + double y; + double z; } terse_vector_t; @@ -50,49 +52,49 @@ static const terse_vector_t VecZero; static terse_vector_t VecAdd(terse_vector_t a, terse_vector_t b) { terse_vector_t c; - c.c[0] = a.c[0] + b.c[0]; - c.c[1] = a.c[1] + b.c[1]; - c.c[2] = a.c[2] + b.c[2]; + c.x = a.x + b.x; + c.y = a.y + b.y; + c.z = a.z + b.z; return c; } static terse_vector_t VecSub(terse_vector_t a, terse_vector_t b) { terse_vector_t c; - c.c[0] = a.c[0] - b.c[0]; - c.c[1] = a.c[1] - b.c[1]; - c.c[2] = a.c[2] - b.c[2]; + c.x = a.x - b.x; + c.y = a.y - b.y; + c.z = a.z - b.z; return c; } static void VecIncr(terse_vector_t *target, terse_vector_t source) { - target->c[0] += source.c[0]; - target->c[1] += source.c[1]; - target->c[2] += source.c[2]; + target->x += source.x; + target->y += source.y; + target->z += source.z; } static void VecDecr(terse_vector_t *target, terse_vector_t source) { - target->c[0] -= source.c[0]; - target->c[1] -= source.c[1]; - target->c[2] -= source.c[2]; + target->x -= source.x; + target->y -= source.y; + target->z -= source.z; } static terse_vector_t VecMul(double s, terse_vector_t v) { terse_vector_t p; - p.c[0] = s * v.c[0]; - p.c[1] = s * v.c[1]; - p.c[2] = s * v.c[2]; + p.x = s * v.x; + p.y = s * v.y; + p.z = s * v.z; return p; } static void VecScale(terse_vector_t *target, double scalar) { - target->c[0] *= scalar; - target->c[1] *= scalar; - target->c[2] *= scalar; + target->x *= scalar; + target->y *= scalar; + target->z *= scalar; } static astro_vector_t PublicVec(astro_time_t time, terse_vector_t terse) @@ -101,9 +103,9 @@ static astro_vector_t PublicVec(astro_time_t time, terse_vector_t terse) vector.status = ASTRO_SUCCESS; vector.t = time; - vector.x = terse.c[0]; - vector.y = terse.c[1]; - vector.z = terse.c[2]; + vector.x = terse.x; + vector.y = terse.y; + vector.z = terse.z; return vector; } @@ -2802,9 +2804,9 @@ static terse_vector_t VsopRotate(const double ecl[3]) Z FK5 0.000000000000 +0.397776982902 +0.917482137087 Z VSOP87A */ - equ.c[0] = ecl[0] + 0.000000440360*ecl[1] - 0.000000190919*ecl[2]; - equ.c[1] = -0.000000479966*ecl[0] + 0.917482137087*ecl[1] - 0.397776982902*ecl[2]; - equ.c[2] = 0.397776982902*ecl[1] + 0.917482137087*ecl[2]; + equ.x = ecl[0] + 0.000000440360*ecl[1] - 0.000000190919*ecl[2]; + equ.y = -0.000000479966*ecl[0] + 0.917482137087*ecl[1] - 0.397776982902*ecl[2]; + equ.z = 0.397776982902*ecl[1] + 0.917482137087*ecl[2]; return equ; } @@ -2841,9 +2843,9 @@ static astro_vector_t CalcVsop(const vsop_model_t *model, astro_time_t time) /* Package the position as astro_vector_t. */ vector.status = ASTRO_SUCCESS; vector.t = time; - vector.x = pos.c[0]; - vector.y = pos.c[1]; - vector.z = pos.c[2]; + vector.x = pos.x; + vector.y = pos.y; + vector.z = pos.z; return vector; } @@ -2923,9 +2925,7 @@ static body_state_t CalcVsopPosVel(const vsop_model_t *model, double tt) state.v = VsopRotate(eclip); /* Convert speed units from [AU/millennium] to [AU/day]. */ - state.v.c[0] /= DAYS_PER_MILLENNIUM; - state.v.c[1] /= DAYS_PER_MILLENNIUM; - state.v.c[2] /= DAYS_PER_MILLENNIUM; + VecScale(&state.v, 1 / DAYS_PER_MILLENNIUM); return state; } @@ -3004,52 +3004,51 @@ typedef struct static const body_state_t PlutoStateTable[] = { - { -730000.0, {{-26.1182072321075829, -14.3761681778249830, 3.3844025152994774}}, {{ 1.6339372163655529e-03, -2.7861699588507534e-03, -1.3585880229444957e-03}} } -, { -693500.0, {{ 43.6599275018260613, 15.7782921408810637, -8.2269833881374197}}, {{-2.5043046295860396e-04, 2.1163039457238022e-03, 7.3466073583102224e-04}} } -, { -657000.0, {{-17.0086014985032854, 33.0590743876419708, 15.4080189624258548}}, {{-1.9676551946049311e-03, -1.8337707766770380e-03, 2.0125441459958719e-05}} } -, { -620500.0, {{ 26.9005106893170947, -21.5285596810213917, -14.7987712668074689}}, {{ 2.2939261196998199e-03, 1.7431871970058934e-03, -1.4585639832643377e-04}} } -, { -584000.0, {{ 20.2303809506997041, 43.2669666571891156, 7.3829660919233735}}, {{-1.9754081700584848e-03, 5.3457141292226470e-04, 7.5929169129792552e-04}} } -, { -547500.0, {{-22.5571440338751295, -19.2958112538447288, 0.7806423603825809}}, {{ 2.1494578646505005e-03, -2.4266772630044198e-03, -1.4013084013574030e-03}} } -, { -511000.0, {{ 43.0236236810360140, 19.6179542007346654, -6.8406553041565390}}, {{-4.7729923671057766e-04, 2.0208979483877301e-03, 7.7191815992131417e-04}} } -, { -474500.0, {{-20.4245105862934473, 29.5157679318004575, 15.3408675727018000}}, {{-1.8003167284198391e-03, -2.1025226687936670e-03, -1.1262333332858843e-04}} } -, { -438000.0, {{ 30.7746921076872191, -18.2366370153037458, -14.9455358798962816}}, {{ 2.0113162005464535e-03, 1.9353827024189184e-03, -2.0937793168297053e-06}} } -, { -401500.0, {{ 16.7235440456361140, 44.0505598318602907, 8.6886113939439973}}, {{-2.0565226049264105e-03, 3.2710694138777488e-04, 7.2006155046578529e-04}} } -, { -365000.0, {{-18.4891734360057143, -23.1428732331142157, -1.6436720878799393}}, {{ 2.5524223225831953e-03, -2.0035792463878955e-03, -1.3910737531294321e-03}} } -, { -328500.0, {{ 42.0853950560733949, 22.9742531259520106, -5.5131410205411608}}, {{-6.7105845193949449e-04, 1.9177289500464923e-03, 7.9770011059533674e-04}} } -, { -292000.0, {{-23.2753639151192857, 25.8185142987693794, 15.0553815885983209}}, {{-1.6062295460974561e-03, -2.3395961498532914e-03, -2.4377362639479245e-04}} } -, { -255500.0, {{ 33.9015793210130454, -14.9421228983498118, -14.8664994855707153}}, {{ 1.7455105487563175e-03, 2.0655068871493817e-03, 1.1695000657629788e-04}} } -, { -219000.0, {{ 13.3770189322701665, 44.4442211120182549, 9.8260227015846819}}, {{-2.1171882923251405e-03, 1.3114714542921137e-04, 6.7884578840323264e-04}} } -, { -182500.0, {{-14.1723844533378838, -26.0054690135836388, -3.8387026446526260}}, {{ 2.8419751785822194e-03, -1.5579441656564316e-03, -1.3408416711060398e-03}} } -, { -146000.0, {{ 40.9468572586402928, 25.9049735920209017, -4.2563362404987810}}, {{-8.3652705194050571e-04, 1.8129497136404069e-03, 8.1564228273060249e-04}} } -, { -109500.0, {{-25.5839689598009237, 22.0699164999424546, 14.5902026036780406}}, {{-1.3923977856330628e-03, -2.5442249745421868e-03, -3.7169906721828429e-04}} } -, { -73000.0, {{ 36.4035708396755808, -11.7473067389593133, -14.6304139635222619}}, {{ 1.5037714418940607e-03, 2.1500325702247347e-03, 2.1523781242947619e-04}} } -, { -36500.0, {{ 10.2436041239517408, 44.5280986402285350, 10.8048664487065693}}, {{-2.1615839201822632e-03, -5.1418983893534152e-05, 6.3687060751429743e-04}} } -, { 0.0, {{ -9.8753695807739028, -27.9789262247367461, -5.7537118247042978}}, {{ 3.0287533248818345e-03, -1.1276087003635514e-03, -1.2651326732361079e-03}} } -, { 36500.0, {{ 39.7009143866164109, 28.4327664903825230, -3.0906026170880683}}, {{-9.7720559866138271e-04, 1.7121518344796007e-03, 8.2822409843551052e-04}} } -, { 73000.0, {{-27.3620419812795213, 18.4265651225705902, 13.9975343005913544}}, {{-1.1690934621340430e-03, -2.7143131627458072e-03, -4.9312695340366763e-04}} } -, { 109500.0, {{ 38.3556091850032033, -8.7643800131842013, -14.2951819118807286}}, {{ 1.2922798115839052e-03, 2.2032141141126154e-03, 2.9606522103424232e-04}} } -, { 146000.0, {{ 7.3929490279056296, 44.3826789515344231, 11.6295002148543460}}, {{-2.1932815453830153e-03, -2.1751799585363732e-04, 5.9556516201113893e-04}} } -, { 182500.0, {{ -5.8649529029432070, -29.1987619981354349, -7.3502494912123018}}, {{ 3.1339384323665490e-03, -7.4205968379700848e-04, -1.1783357537604210e-03}} } -, { 219000.0, {{ 38.4269476345328584, 30.5667598351631895, -2.0378379641213549}}, {{-1.0958945370083525e-03, 1.6194885149658572e-03, 8.3705272532545749e-04}} } -, { 255500.0, {{-28.6586488201636094, 15.0309000931700982, 13.3365724093667239}}, {{-9.4611899595407856e-04, -2.8506813871559205e-03, -6.0508645822989350e-04}} } -, { 292000.0, {{ 39.8319806717527598, -6.0784057667647184, -13.9098153586561750}}, {{ 1.1117769689167254e-03, 2.2362097830151747e-03, 3.6230548231153126e-04}} } -, { 328500.0, {{ 4.8371523764030018, 44.0723119541530082, 12.3146147867801634}}, {{-2.2164547537724495e-03, -3.6790365636784901e-04, 5.5542723844615902e-04}} } -, { 365000.0, {{ -2.2619763759486737, -29.8581508706765391, -8.6502366418978376}}, {{ 3.1821176368396439e-03, -4.0915169873994336e-04, -1.0895893040651994e-03}} } -, { 401500.0, {{ 37.1576590087419305, 32.3528396259588220, -1.0950381786229393}}, {{-1.1988412606829513e-03, 1.5356290902994688e-03, 8.4339118209852005e-04}} } -, { 438000.0, {{-29.5767402292298733, 11.8635359435865020, 12.6313230398719423}}, {{-7.2292830060955327e-04, -2.9587820140709459e-03, -7.0824296450300425e-04}} } -, { 474500.0, {{ 40.9541099577599113, -3.6589805945369926, -13.4994699563949752}}, {{ 9.5387298337127409e-04, 2.2572135462476943e-03, 4.1826529781127707e-04}} } -, { 511000.0, {{ 2.4859523114116473, 43.6181887566155453, 12.8914184596698913}}, {{-2.2339745420393194e-03, -5.1034757181915515e-04, 5.1485330196244779e-04}} } -, { 547500.0, {{ 1.0594791441638154, -30.1357921778686659, -9.7458684762962609}}, {{ 3.1921591684898362e-03, -1.1305312796150061e-04, -9.9954096945965398e-04}} } -, { 584000.0, {{ 35.8778640130143884, 33.8942263660709031, -0.2245246362768878}}, {{-1.2941245730845226e-03, 1.4560427668318845e-03, 8.4762160640136956e-04}} } -, { 620500.0, {{-30.2026537318922905, 8.7794211940578180, 11.8609238187578043}}, {{-4.9002221381806493e-04, -3.0438768469137345e-03, -8.0605935262762732e-04}} } -, { 657000.0, {{ 41.8536204011375759, -1.3790965838041744, -13.0624345337527110}}, {{ 8.0674627557123521e-04, 2.2702374399790701e-03, 4.6832587475464563e-04}} } -, { 693500.0, {{ 0.2468843977112088, 43.0303960481226611, 13.3909343344166665}}, {{-2.2436121787266041e-03, -6.5238074250728356e-04, 4.7172729553195559e-04}} } -, { 730000.0, {{ 4.2432528370898517, -30.1182016908248045, -10.7074412313490512}}, {{ 3.1725847067411131e-03, 1.6098461202269649e-04, -9.0672150593867700e-04}} } + { -730000.0, {-26.1182072321075829, -14.3761681778249830, 3.3844025152994774}, { 1.6339372163655529e-03, -2.7861699588507534e-03, -1.3585880229444957e-03} } +, { -693500.0, { 43.6599275018260613, 15.7782921408810637, -8.2269833881374197}, {-2.5043046295860396e-04, 2.1163039457238022e-03, 7.3466073583102224e-04} } +, { -657000.0, {-17.0086014985032854, 33.0590743876419708, 15.4080189624258548}, {-1.9676551946049311e-03, -1.8337707766770380e-03, 2.0125441459958719e-05} } +, { -620500.0, { 26.9005106893170947, -21.5285596810213917, -14.7987712668074689}, { 2.2939261196998199e-03, 1.7431871970058934e-03, -1.4585639832643377e-04} } +, { -584000.0, { 20.2303809506997041, 43.2669666571891156, 7.3829660919233735}, {-1.9754081700584848e-03, 5.3457141292226470e-04, 7.5929169129792552e-04} } +, { -547500.0, {-22.5571440338751295, -19.2958112538447288, 0.7806423603825809}, { 2.1494578646505005e-03, -2.4266772630044198e-03, -1.4013084013574030e-03} } +, { -511000.0, { 43.0236236810360140, 19.6179542007346654, -6.8406553041565390}, {-4.7729923671057766e-04, 2.0208979483877301e-03, 7.7191815992131417e-04} } +, { -474500.0, {-20.4245105862934473, 29.5157679318004575, 15.3408675727018000}, {-1.8003167284198391e-03, -2.1025226687936670e-03, -1.1262333332858843e-04} } +, { -438000.0, { 30.7746921076872191, -18.2366370153037458, -14.9455358798962816}, { 2.0113162005464535e-03, 1.9353827024189184e-03, -2.0937793168297053e-06} } +, { -401500.0, { 16.7235440456361140, 44.0505598318602907, 8.6886113939439973}, {-2.0565226049264105e-03, 3.2710694138777488e-04, 7.2006155046578529e-04} } +, { -365000.0, {-18.4891734360057143, -23.1428732331142157, -1.6436720878799393}, { 2.5524223225831953e-03, -2.0035792463878955e-03, -1.3910737531294321e-03} } +, { -328500.0, { 42.0853950560733949, 22.9742531259520106, -5.5131410205411608}, {-6.7105845193949449e-04, 1.9177289500464923e-03, 7.9770011059533674e-04} } +, { -292000.0, {-23.2753639151192857, 25.8185142987693794, 15.0553815885983209}, {-1.6062295460974561e-03, -2.3395961498532914e-03, -2.4377362639479245e-04} } +, { -255500.0, { 33.9015793210130454, -14.9421228983498118, -14.8664994855707153}, { 1.7455105487563175e-03, 2.0655068871493817e-03, 1.1695000657629788e-04} } +, { -219000.0, { 13.3770189322701665, 44.4442211120182549, 9.8260227015846819}, {-2.1171882923251405e-03, 1.3114714542921137e-04, 6.7884578840323264e-04} } +, { -182500.0, {-14.1723844533378838, -26.0054690135836388, -3.8387026446526260}, { 2.8419751785822194e-03, -1.5579441656564316e-03, -1.3408416711060398e-03} } +, { -146000.0, { 40.9468572586402928, 25.9049735920209017, -4.2563362404987810}, {-8.3652705194050571e-04, 1.8129497136404069e-03, 8.1564228273060249e-04} } +, { -109500.0, {-25.5839689598009237, 22.0699164999424546, 14.5902026036780406}, {-1.3923977856330628e-03, -2.5442249745421868e-03, -3.7169906721828429e-04} } +, { -73000.0, { 36.4035708396755808, -11.7473067389593133, -14.6304139635222619}, { 1.5037714418940607e-03, 2.1500325702247347e-03, 2.1523781242947619e-04} } +, { -36500.0, { 10.2436041239517408, 44.5280986402285350, 10.8048664487065693}, {-2.1615839201822632e-03, -5.1418983893534152e-05, 6.3687060751429743e-04} } +, { 0.0, { -9.8753695807739028, -27.9789262247367461, -5.7537118247042978}, { 3.0287533248818345e-03, -1.1276087003635514e-03, -1.2651326732361079e-03} } +, { 36500.0, { 39.7009143866164109, 28.4327664903825230, -3.0906026170880683}, {-9.7720559866138271e-04, 1.7121518344796007e-03, 8.2822409843551052e-04} } +, { 73000.0, {-27.3620419812795213, 18.4265651225705902, 13.9975343005913544}, {-1.1690934621340430e-03, -2.7143131627458072e-03, -4.9312695340366763e-04} } +, { 109500.0, { 38.3556091850032033, -8.7643800131842013, -14.2951819118807286}, { 1.2922798115839052e-03, 2.2032141141126154e-03, 2.9606522103424232e-04} } +, { 146000.0, { 7.3929490279056296, 44.3826789515344231, 11.6295002148543460}, {-2.1932815453830153e-03, -2.1751799585363732e-04, 5.9556516201113893e-04} } +, { 182500.0, { -5.8649529029432070, -29.1987619981354349, -7.3502494912123018}, { 3.1339384323665490e-03, -7.4205968379700848e-04, -1.1783357537604210e-03} } +, { 219000.0, { 38.4269476345328584, 30.5667598351631895, -2.0378379641213549}, {-1.0958945370083525e-03, 1.6194885149658572e-03, 8.3705272532545749e-04} } +, { 255500.0, {-28.6586488201636094, 15.0309000931700982, 13.3365724093667239}, {-9.4611899595407856e-04, -2.8506813871559205e-03, -6.0508645822989350e-04} } +, { 292000.0, { 39.8319806717527598, -6.0784057667647184, -13.9098153586561750}, { 1.1117769689167254e-03, 2.2362097830151747e-03, 3.6230548231153126e-04} } +, { 328500.0, { 4.8371523764030018, 44.0723119541530082, 12.3146147867801634}, {-2.2164547537724495e-03, -3.6790365636784901e-04, 5.5542723844615902e-04} } +, { 365000.0, { -2.2619763759486737, -29.8581508706765391, -8.6502366418978376}, { 3.1821176368396439e-03, -4.0915169873994336e-04, -1.0895893040651994e-03} } +, { 401500.0, { 37.1576590087419305, 32.3528396259588220, -1.0950381786229393}, {-1.1988412606829513e-03, 1.5356290902994688e-03, 8.4339118209852005e-04} } +, { 438000.0, {-29.5767402292298733, 11.8635359435865020, 12.6313230398719423}, {-7.2292830060955327e-04, -2.9587820140709459e-03, -7.0824296450300425e-04} } +, { 474500.0, { 40.9541099577599113, -3.6589805945369926, -13.4994699563949752}, { 9.5387298337127409e-04, 2.2572135462476943e-03, 4.1826529781127707e-04} } +, { 511000.0, { 2.4859523114116473, 43.6181887566155453, 12.8914184596698913}, {-2.2339745420393194e-03, -5.1034757181915515e-04, 5.1485330196244779e-04} } +, { 547500.0, { 1.0594791441638154, -30.1357921778686659, -9.7458684762962609}, { 3.1921591684898362e-03, -1.1305312796150061e-04, -9.9954096945965398e-04} } +, { 584000.0, { 35.8778640130143884, 33.8942263660709031, -0.2245246362768878}, {-1.2941245730845226e-03, 1.4560427668318845e-03, 8.4762160640136956e-04} } +, { 620500.0, {-30.2026537318922905, 8.7794211940578180, 11.8609238187578043}, {-4.9002221381806493e-04, -3.0438768469137345e-03, -8.0605935262762732e-04} } +, { 657000.0, { 41.8536204011375759, -1.3790965838041744, -13.0624345337527110}, { 8.0674627557123521e-04, 2.2702374399790701e-03, 4.6832587475464563e-04} } +, { 693500.0, { 0.2468843977112088, 43.0303960481226611, 13.3909343344166665}, {-2.2436121787266041e-03, -6.5238074250728356e-04, 4.7172729553195559e-04} } +, { 730000.0, { 4.2432528370898517, -30.1182016908248045, -10.7074412313490512}, { 3.1725847067411131e-03, 1.6098461202269649e-04, -9.0672150593867700e-04} } }; static const int PLUTO_NUM_STATES = 41; - static body_state_t AdjustBarycenterPosVel(body_state_t *ssb, double tt, astro_body_t body, double planet_gm) { body_state_t planet; @@ -3102,16 +3101,16 @@ static void AddAcceleration(terse_vector_t *acc, terse_vector_t small_pos, doubl { double dx, dy, dz, r2, pull; - dx = major_pos.c[0] - small_pos.c[0]; - dy = major_pos.c[1] - small_pos.c[1]; - dz = major_pos.c[2] - small_pos.c[2]; + dx = major_pos.x - small_pos.x; + dy = major_pos.y - small_pos.y; + dz = major_pos.z - small_pos.z; r2 = dx*dx + dy*dy + dz*dz; pull = gm / (r2 * sqrt(r2)); - acc->c[0] += dx * pull; - acc->c[1] += dy * pull; - acc->c[2] += dz * pull; + acc->x += dx * pull; + acc->y += dy * pull; + acc->z += dz * pull; }