Orbital elements: Difference between revisions

m
→‎{{header|Sidef}}: use the Vector class added in Sidef 3.60
m (→‎version 2: changed whitespace.)
m (→‎{{header|Sidef}}: use the Vector class added in Sidef 3.60)
Line 1,173:
true_anomaly
) {
 
var (i, j, k) = (
MatrixVector([1, 0, 0]),
MatrixVector([0, 1, 0]),
MatrixVector([0, 0, 1]),
)
 
Line 1,194 ⟶ 1,195:
rotate(\i, \j, argument_of_periapsis)
 
var l = (eccentricity == 1  ? 2*semimajor_axis
  : semimajor_axis*(1 - eccentricity**2))
 
var (c, s) = with(true_anomaly) { (.cos, .sin) }
Line 1,204 ⟶ 1,205:
 
var speed = muladd(i, rprime*c - r*s, j, rprime*s + r*c)
speed /= speed[0].map{_**2}.sum.sqrtabs
speed *= sqrt(2/r - 1/semimajor_axis)
 
struct Result { position, speed }
Result([position, speed].map {|v| v[0] }...)
}
 
Line 1,224 ⟶ 1,225:
<pre>
Arguments: [1, 1/10, 0, 355/678, 0, 0]:
Position : [Vector(0.779422843398679832042176328223663037464703527986, 0.450000034653684237432302249506712706822033851071, 0])
Speed : [Vector(-0.552770840960443759673279062314259546277084494097, 0.957427083179761535246200368614952095349966503287, 0])
 
Arguments: [1, 1/10, 0.174532925199432957692369076848861271344287188854, 0.523598775598298873077107230546583814032861566563, 0.785398163397448309615660845819875721049292349844, 0]:
Position : [Vector(0.23777128398220654779107184959165027147748809404, 0.860960261697715834668966272382699039216399966872, 0.110509023572075562109405412890808505271310143909])
Speed : [Vector(-1.06193301748006004757467368094494935655538772696, 0.275850020569249507846452830330085489348356659642, 0.135747024865598167166145512759280712986072818844])
</pre>
 
2,747

edits