raptop changed the topic of #principia to: READ THE FAQ: http://goo.gl/gMZF9H; The current version is Fréchet. We currently target 1.5.1, 1.6.1, and 1.7.x. <scott_manley> anyone that doubts the wisdom of retrograde bop needs to get the hell out | https://xkcd.com/323/ | <egg> calculating the influence of lamont on Pluto is a bit silly… | <egg> also 4e16 m * 2^-52 is uncomfortably large
egg|cell|egg has joined #principia
Raidernick_ has joined #principia
Raidernick has quit [Ping timeout: 189 seconds]
egg|laptop|egg has quit [Remote host closed the connection]
egg|laptop|egg has joined #principia
Mike` has quit [Ping timeout: 189 seconds]
Mike` has joined #principia
egg|laptop|egg has quit [Remote host closed the connection]
<discord-> l​amont. — @egg you know anything about the numerical stability of converting a vector into the frenet frame and then back again?
Jesin has quit [Ping timeout: 190 seconds]
<discord-> w​aptdragon3. — just out of curiosity, what would happen if 2 planets/moons collided in principia. would the attrative force grow towards infinity eventually causing a divide by zero error, or is there a minimum distance?
<discord-> A​cer_Saccharum. — apocalypse happens
<discord-> A​cer_Saccharum. — principia usually throws a big error message when a planet-planet interaction is happening too fast
<discord-> A​cer_Saccharum. — apocalypse happens
<discord-> A​cer_Saccharum. — principia throws a big error message when a planet-planet interaction is happening too fast (edited)
<UmbralRaptop> an Apocalypse, which IIRC destroys the universe (crashes KSP)
<discord-> B​utcher. — Cool. Sounds interesting.
<discord-> w​aptdragon3. — Nice. Been playing Universe Sandbox 2 and was reminded of principia abd got curious
<discord-> w​aptdragon3. — Btw how'd a bot answer?
<discord-> A​cer_Saccharum. — it isn't really a bot
<discord-> A​cer_Saccharum. — the bot is a bridge to the principia IRC channel
<discord-> w​aptdragon3. — It's a sentient AI? LOL
<discord-> w​aptdragon3. — Irc?
<discord-> A​cer_Saccharum. — Internet Relay Chat
<discord-> L​u K.. — can u boomers plz let irc die
<discord-> L​u K.. — disc iz the futureee
<discord-> A​cer_Saccharum. — it's where people talked about principia before the channel on this server
<discord-> w​aptdragon3. — Nice
<discord-> A​cer_Saccharum. — if you wanted a copy of principia in the early days you had to ask for one there if I recall
<discord-> n​eph. — Look at these kids. Never used IRC. Incredible
* discord- n​eph. — shakes my head_
<discord-> n​eph. — \/me shakes my head (edited)
<discord-> n​eph. — Wow, gotta dress it up nice for discord apparently
<discord-> L​u K.. — irc was just painful to look at
<discord-> L​u K.. — no emojis, i mean w t f
<discord-> K​irk. — Back in the early days of Principia for stock tylo would perturb laythe(?) out of its orbit and eventually collide, causing laythe to make a 90 degree turn and be accelerate to a reasonable fraction of the speed of light
<discord-> K​irk. — Back in the early days of Principia for stock tylo would perturb laythe(?) out of its orbit and eventually collide, causing laythe to make a 90 degree turn and be accelerated to a reasonable fraction of the speed of light (edited)
<discord-> n​eph. — For how long has Principia been in development?
<discord-> K​irk. — Which would crash the game
<discord-> A​cer_Saccharum. — mid 2014 I believe
<discord-> n​eph. — What an incredible piece of software, never mind the fact it's a game modification
<discord-> A​cer_Saccharum. — ~~mid 2014 I believe~~
<discord-> A​cer_Saccharum. — the first "release" mentioned in the thread OP is from February 2014 (edited)
<discord-> L​u K.. — wow
<discord-> L​u K.. — do u need a physics phd to work on principia
<discord-> n​eph. — I believe you're looking for this: <https://github.com/mockingbirdnest/Principia/tree/master/documentation>
<discord-> B​utcher. — Depends what you want to do with it.
<discord-> L​u K.. — how about i just start with linear algebra & calculus of one variable next semester then apply to be a principia modder in maybe 6 yrs
<discord-> B​utcher. — I'd say a maths degree would not be amiss.
<discord-> n​eph. — Don't neglect your numerical analysis courses
<discord-> L​u K.. — is that statistix?
<discord-> B​utcher. — Most of it is a bit out of my comfort zone.
<discord-> n​eph. — You can look it up.
<discord-> A​cer_Saccharum. — you aren't paying by the letter, it's 2020
<discord-> L​u K.. — my kb is broke, ed&c dont work
<discord-> S​ir Mortimer. — > can u boomers plz let irc die
<discord-> S​ir Mortimer. — no.
<discord-> S​ir Mortimer. — learn to spell first, millenial.
<discord-> L​u K.. — never
<discord-> S​ir Mortimer. — *googling boomer+
<discord-> S​ir Mortimer. — *googling boomer* (edited)
<discord-> n​eph. — Hate to do it to you, but you're missing an n there, Mortimer
<discord-> L​u K.. — rule #1 - never do wat the boomers says
<discord-> A​cer_Saccharum. — if he/she's studying single variable calc now, he/she's likely not a millenial
<discord-> S​ir Mortimer. — born between 1946 and 1964
<discord-> S​ir Mortimer. — phew 😛
<discord-> n​eph. — Yeah, how old are you?
<discord-> S​ir Mortimer. — younger 😛
<discord-> L​u K.. — i'm a late b**l**oomer
<discord-> A​cer_Saccharum. — I am under the impression millennials ended in '96 or '97
<discord-> S​ir Mortimer. — learn to spell first, millenialn. (edited)
<discord-> n​eph. — Yeah, how old are you, Lu? (edited)
<discord-> S​ir Mortimer. — > Hate to do it to you, but you're missing an n there, Mortimer
<discord-> S​ir Mortimer. — don't know what you're talkin gabout.
<discord-> A​cer_Saccharum. — but we're way #offtopic
<discord-> S​ir Mortimer. — @Acer_Saccharum that's the norm here 🙂
<discord-> A​cer_Saccharum. — well we're all mad anyway
<discord-> n​eph. — Xennials 🦾 🦾
<discord-> A​cer_Saccharum. — so I guess you're right 🙃 @Sir Mortimer
<discord-> A​cer_Saccharum. — well we're all mad here anyway (edited)
<discord-> B​utcher. — @Sir Mortimer I assume you're probably gen X, like all the cool kids.
<discord-> n​eph. — I don't like this. My mother is gen X.
<discord-> n​eph. — Invite me to your funerals, would ya? 😉
<discord-> S​ir Mortimer. — > irc was just painful to look at
<discord-> S​ir Mortimer. — > no emojis, i mean w t f
<discord-> S​ir Mortimer. — the thing about emojis is that there are so many it is hard to memorize them all, or find them on a keyboard. if only there was a way to do with less symbols, say, ~25 of them, which, when combined in a specific way, could convey any possible meaning and word, wouldn't that be grand
<discord-> S​ir Mortimer. — you could use such a system to find the emoji you're looking for
<discord-> L​u K.. — just type : then a word lol
<discord-> S​ir Mortimer. — : rocket
<discord-> S​ir Mortimer. — doesn't work.
<discord-> L​u K.. — no space
<discord-> S​ir Mortimer. — @Butcher *googling gen X*
<discord-> S​ir Mortimer. — yep.
<discord-> S​ir Mortimer. — holy shit I almost made it to millenialn
<discord-> B​utcher. — @Sir Mortimer yeah. ;l
<discord-> B​utcher. — I liked text emojis
<discord-> B​utcher. — :< rip.
<discord-> L​u K.. — o yea, i forgot about those
Jesin has joined #principia
egg|cell|egg has quit [Ping timeout: 200 seconds]
<egg> Not sure why you think using IRC prevents one from using emoji
<egg> That which is in Unicode is plain text: 🥚
<discord-> e​gg. — @lamont I think I need more context to answer your question: what Frenet frame, how is it computed, and why are you doing that anyway? Or is the question just about computing Q (Q⁻¹ v) for a rotation Q represented as a quaternion ? But in that case, why?
egg|cell|egg has joined #principia
egg|cell|egg has quit [Quit: Quit]
egg|cell|egg has joined #principia
egg|cell|egg has quit [Read error: -0x1: UNKNOWN ERROR CODE (0001)]
egg|cell|egg has joined #principia
armed_troop has quit [*.net *.split]
egg|cell|egg has quit [Read error: Connection reset by peer]
egg|cell|egg has joined #principia
egg|cell|egg has quit [Ping timeout: 202 seconds]
egg|cell|egg has joined #principia
egg|cell|egg has quit [Ping timeout: 190 seconds]
egg|cell|egg has joined #principia
* UmbralRaptop 🔪🗡⚔
<UmbralRaptop> (the hundred-odd emoji in the Unicode standard work just fine in IRC)
<discord-> l​amont. — no, not as a quaternion, just vector projection
<discord-> e​gg. — @lamont what do you mean
<discord-> e​gg. — a matrix?
<discord-> e​gg. — whose Frenet frame are we talking about and why are you going back and forth like that
<discord-> l​amont. — the standard ksp one
<discord-> l​amont. — to setup a maneuver node you have to convert a cartesian vector into prograde, radial, normal components
<discord-> n​eph. — That sounds barbaric
<discord-> l​amont. — ```
<discord-> l​amont. — public static Vector3d DeltaVToManeuverNodeCoordinates(this Orbit o, double UT, Vector3d dV)
<discord-> l​amont. — {
<discord-> l​amont. — Vector3d r = o.getRelativePositionAtUT(UT).xzy;
<discord-> l​amont. — double r2 = Vector3d.Dot(r, r);
<discord-> l​amont. — Vector3d v = o.getOrbitalVelocityAtUT(UT).xzy;
<discord-> l​amont. — double v2 = Vector3d.Dot(v, v);
<discord-> l​amont. — Vector3d h = -Vector3d.Cross(r, v);
<discord-> l​amont. — double h2 = Vector3d.Dot(h, h);
<discord-> l​amont. —
<discord-> l​amont. — Vector3d rad = Vector3d.Dot(r, dV) / r2 * r;
<discord-> l​amont. — Vector3d norm = Vector3d.Dot(h, dV) / h2 * h;
<discord-> l​amont. — Vector3d pro = Vector3d.Dot(v, dV) / v2 * v;
<discord-> l​amont. —
<discord-> l​amont. — Debug.Log("preconversion = " + dV);
<discord-> l​amont. — Debug.Log("convertedback = " + ( rad + norm + pro ));
<discord-> l​amont. — return new Vector3d(Vector3d.Dot(rad, r.normalized), Vector3d.Dot(norm, h.normalized), Vector3d.Dot(pro, v.normalized));
<discord-> l​amont. — }
<discord-> l​amont. — ```
<discord-> l​amont. — so just doing that there's a large loss of precision
<discord-> l​amont. — [LOG 10:31:44.870] preconversion = [-1702.31639387466, -1035.87396524822, -757.217684249349]
<discord-> l​amont. — [LOG 10:31:44.870] convertedback = [-1702.30690186963, -1035.87396524821, -757.238022540237]
<discord-> l​amont. — ```
<discord-> l​amont. — [LOG 10:31:44.870] preconversion = [-1702.31639387466, -1035.87396524822, -757.217684249349]
<discord-> l​amont. — [LOG 10:31:44.870] convertedback = [-1702.30690186963, -1035.87396524821, -757.238022540237]
<discord-> l​amont. — ``` (edited)
<discord-> l​amont. — (and i've tried multiple different variants of that, this latest one i was trying to avoid debugging any calls to .normalized in order to see if the sqrt() operator was causing precision issues)
<discord-> l​amont. — why is z (which is middle component because we're in silly space) so highly accurate but x and y are not?
<discord-> n​eph. — Is that always the case?
<discord-> l​amont. — generally yeah
<discord-> n​eph. — Can you randomly generate a couple thousand vectors and run them forth and back?
<discord-> l​amont. — this is from a highly precise debug-hacked circular orbit around kerbin with zero inclination. so z comes entirely from the h/norm-component.
<discord-> l​amont. — sure?
<discord-> l​amont. — well not really
<discord-> l​amont. — i'll just get the same values.
egg|cell|egg has quit [Ping timeout: 190 seconds]
<discord-> l​amont. — yeah so if i varied UT, but thats mildly annoying
<discord-> n​eph. — I guess I should have asked for random position & velocity vectors
egg|cell|egg has joined #principia
<discord-> n​eph. — I bet if you fed your 9 dimensions of information (position components, velocity components, component error) into something dimension-reducing like PCA you'd find some strong correleation. Probably with a distinctively floating point choppiness
<discord-> l​amont. — its pretty consistent that z is high precision though, which was leading me down the inverse-rotation-trolling-me path for awhile
<discord-> l​amont. — PCA?
<discord-> n​eph. — Principal component analysis
<discord-> n​eph. — Actually, UMAP might be better
<discord-> n​eph. — That's such a massive loss of precision.
<discord-> n​eph. — Are these singles or halves?
<discord-> n​eph. — As provided by ksp? I see you're storing them as doubles
<discord-> n​eph. — As provided by ksp? I see you're playing with them as doubles (edited)
<UmbralRaptop> . o O (rederive Newtonian mechanics with a neural net)
<discord-> l​amont. — yep doubles
<discord-> n​eph. — Rel. errors: {5.57593469×10^-6, 0.×10^-14, -0.00002685923917}
<discord-> n​eph. — Any idea how many times it's rounding?
<discord-> n​eph. — Any idea how many times it's rounding inside .Dot? (edited)
<discord-> n​eph. — I find it weird that such a linear algorithm would be so ill-conditioned.
<discord-> l​amont. — r and v aren't necessarily orthogonal, although for this problem it is very close
<discord-> l​amont. — h is obviously very orthogonal
<discord-> n​eph. — Why would they be not fully independent?
<discord-> l​amont. — (for the orbit i just happen to be in)
<discord-> l​amont. — they're linearly independent, but not orthogonal
<discord-> n​eph. — That doesn't compute.
<discord-> l​amont. — r and v are only orthogonal for flight path angles of zero (so circular orbits or apopasis or periapsis)
<discord-> n​eph. — Wait, r isn't your radial component?
<discord-> l​amont. — yes
<discord-> n​eph. — My mistake
<discord-> n​eph. — I've only every played with Principia
<discord-> n​eph. — Is the basis for maneuver plotting in stock non-independant??? that makes no sense whatsoever
<discord-> n​eph. — Your radial and normal basis vectors will always be independent
<discord-> n​eph. — But that third vector in the basis must be the x product of that, so (\vec h \times \vec v) \time \vec v, if I'm not mistaken
<discord-> n​eph. — But that third vector in the basis must be the x product of that, so (\vec h \times \vec v) \times \vec v, if I'm not mistaken (edited)
<discord-> n​eph. — But that third vector in the basis must be the x product of that, so (**h** x **v**) x **v**, if I'm not mistaken (edited)
<discord-> l​amont. — yeah normal is always orthogonal, but the radial and prograde vectors are not orthogonal
<discord-> l​amont. — (not necessarily)
<discord-> n​eph. — How
<discord-> n​eph. — What happens if you're heading directly towards the center of the planet? Now your basis is degenerate and you can only model a plane within 3-space
<discord-> l​amont. — uh, any orbit that isn't circular or where you're not at the periapsis/apoapsis the flight path angle isn't zero
<discord-> n​eph. — What happens if you're heading directly towards the center of the planet? Now your basis is degenerate and you can only describe a plane within 3-space (edited)
<discord-> l​amont. — yeah, that's all screwed up and no longer linearly independent. if you were on that "orbit" and placed a maneuvernode the results might be funny.
<discord-> n​eph. — stock really runs on this shit??
<discord-> l​amont. — heh yes
<discord-> n​eph. — oh my god
<discord-> n​eph. — I don't know how you guys do it
egg|cell|egg has quit [Ping timeout: 198 seconds]
egg|cell|egg has joined #principia
<discord-> n​eph. — At least there's one orthogonal pair in your basis (most of the time)
<discord-> n​eph. — At least you've got unique representation (most of the time)
<discord-> n​eph. — I have a suspicion that if you defined some orthogonal basis first, then converted into the ksp basis using a smart trick, you might actually increase your precision.
<discord-> n​eph. — I'd define your basis as {**r_norm**, **r_norm** x **v_norm**, and (**r_norm** x **v_norm**) x **v_norm**} (hope that's right)
<discord-> n​eph. — I'd define your basis as {**r_norm**, **r_norm** x **v_norm**, (**r_norm** x **v_norm**) x **v_norm**} (hope that's right) (edited)
<discord-> n​eph. — Then, you know that the 2nd component will be the same in ksp world so leave that
<discord-> n​eph. — **3**_ortho = **3**_ksp * (**r**_norm x **v**_norm) x **v**_norm
<discord-> n​eph. — And then I think that leaves **1**_ksp = **1**_ortho - **3**_ksp * **r**_norm
<discord-> n​eph. — I suppose you could do it the Principia way instead, fixing the normal and tangent components and then changing from binormal into radial, but I don't think that's any different in practice than fixing normal and radial components and then changing from ground tangent into prograde
<discord-> l​amont. — i suspect that it needs to be projected onto the radial / normal / prograde basis so that adding up the vector "projections" recovers the original burn vector
<discord-> n​eph. — I suppose you could do it the Principia way instead, fixing the normal and tangent basis and then changing from binormal into radial, but I don't think that's any different in practice than fixing normal and radial basis and then changing from ground tangent into prograde (edited)
<discord-> n​eph. — If it doesn't you're not just changing basis, you're changing the vector too
<discord-> n​eph. — You can have a non-orthogonal basis for a vector space (until your basis is no longer a basis because you're heading straight towards the planet)
<discord-> e​gg. — @lamont OK so that code just has a matrix multiplication in its last line (except that they haven't invented the matrix so they store three rows)
<discord-> n​eph. — I bet if you slowed way down in orbit, you'd have massive subtraction cancellation error from your almost-degenerate basis
<discord-> e​gg. — @lamont I suspect the loss of precision is when computing the matrix itself
<discord-> l​amont. — no, its the lack of an orthogonal basis
<discord-> e​gg. — what do you mean
<discord-> n​eph. — @egg the lines outputting have nothing to do with the object that function is returning
<discord-> n​eph. — That's probably fucked too, but different
<discord-> l​amont. — Vector3d.Dot(r,v) != 0
<discord-> e​gg. — @neph I'm not talking about that output
<discord-> n​eph. — My mistake
<discord-> e​gg. — I'm talking about the code
<discord-> e​gg. — @lamont well yes, that statement is true, what's your point
<discord-> l​amont. — that code is doing vector decomposition onto a non-orthogonal space, then adding them back up
<discord-> l​amont. — that don't work
<discord-> e​gg. — hmm
<discord-> n​eph. — You can do that
<discord-> n​eph. — You're just decomposing it wrong
<discord-> n​eph. — You can decompose using just projection in an orthogonal basis
<discord-> e​gg. — OK let me actually read that code
<discord-> n​eph. — But in a non-orthogonal basis you'll need to solve a matrix
<discord-> e​gg. — neph please stop lengthening the backlog, I'm pretty sure I remember linear algebra I, but my screen is only so tall
<discord-> n​eph. — @lamont
<discord-> n​eph. — I'll step back 🙂
<discord-> l​amont. — ah, i need to do grahm-schmidt (sp?) properly
<discord-> n​eph. — I'll step back 🙂 More excited than knowledgeable (edited)
<discord-> e​gg. — @lamont I think you might be mistaken when it comes to the coordinates KSP uses
<discord-> e​gg. — KSP's radial is not radial
<discord-> l​amont. — oh
<discord-> e​gg. — it really is the normal (in the diffgeo sense)
<discord-> l​amont. — is it orthonormal to h + v?
<discord-> e​gg. — yeah
<discord-> l​amont. — oh well fuck that'd do it
<discord-> e​gg. — where h is the binormal (diffgeo sense, orbit normal in orbital mechanics)
<discord-> e​gg. — @lamont that's why we ditch the KSP terminology and use TNB, they don't even really use what they say anyway :D
<discord-> l​amont. — yeah, in mtg now, but i'll try that later, that might be it
<discord-> e​gg. — interestingly the usual orbital mechanics convention uses radial
<discord-> e​gg. — but it uses horizontal along-track rather than prograde
<discord-> e​gg. — (which makes it not the Frenet frame at all)
<discord-> l​amont. — right
<discord-> e​gg. — the KSP frame is nice in that it's the Frenet frame, which is natural and generalizes well
<discord-> e​gg. — (to Principia's funny frames for instance :-p)
<discord-> e​gg. — @neph so the answer is simply "KSP is bad at naming"
<discord-> l​amont. — "every mod does maneuver nodes wrong"
<discord-> n​eph. — I was incredulous that they wouldn't use something orthonormal. Glad to hear they're not
<discord-> n​eph. — I was incredulous that they wouldn't use something orthonormal. Glad to hear they're not doing that (edited)
<discord-> n​eph. — I was incredulous that they wouldn't use something orthonormal. Glad to hear they're better than that (edited)
<discord-> e​gg. — they're not *much* better than that tbh
<discord-> e​gg. — there's that one place that extracts the diagonal elements of a matrix
<discord-> e​gg. — poor man's diagonalization
<discord-> e​gg. — it preserves the trace at least,
<discord-> n​eph. — Haha, that's about all you'd preserve.
<discord-> n​eph. — Haha, that's about all you'd preserve (edited)
UmbralRaptop has quit [Quit: Bye]
UmbralRaptop has joined #principia
<discord-> e​gg. — meow
UmbralRaptor has joined #principia
UmbralRaptor has quit [Client Quit]
UmbralRaptop has quit [Read error: Connection reset by peer]
UmbralRaptor has joined #principia
UmbralRaptop has joined #principia
UmbralRaptor has quit [Read error: Connection reset by peer]
UmbralRaptop has quit [Client Quit]
UmbralRaptop has joined #principia
UmbralRaptop has quit [Client Quit]
UmbralRaptop has joined #principia
<_whitenotifier-d13c> [Principia] eggrobin opened pull request #2451: Tensor contraction - https://git.io/JvTdi
<_whitenotifier-d13c> [Principia] eggrobin synchronize pull request #2451: Tensor contraction - https://git.io/JvTdi
<_whitenotifier-d13c> [Principia] eggrobin synchronize pull request #2451: Tensor contraction - https://git.io/JvTdi
<_whitenotifier-d13c> [Principia] Pending. Build queued… - 
<_whitenotifier-d13c> [Principia] Pending. Building… - http://casanova.westeurope.cloudapp.azure.com:8080/job/Principia/4096/
<_whitenotifier-d13c> [Principia] Failure. Build finished. - http://casanova.westeurope.cloudapp.azure.com:8080/job/Principia/4096/
egg|cell|egg has quit [Ping timeout: 202 seconds]