public void SaturnRings() { double jd = 2448972.5 + 0.00068; CrdsHeliocentrical earth = PlanetPositions.GetPlanetCoordinates(3, jd, true); CrdsHeliocentrical saturn = PlanetPositions.GetPlanetCoordinates(6, jd, true); RingsAppearance rings = PlanetEphem.SaturnRings(jd, saturn, earth, 23.43971); Assert.AreEqual(35.87, rings.a, 1e-2); Assert.AreEqual(10.15, rings.b, 1e-2); Assert.AreEqual(16.442, rings.B, 1e-3); Assert.AreEqual(4.198, rings.DeltaU, 1e-3); Assert.AreEqual(6.741, rings.P, 1e-3); }
private void DrawRingsUntextured(Graphics g, RingsAppearance rings, int half, double scale) { float startAngle = -180 * half + ((rings.B > 0) ? 180 : 0) - 1e-2f; // three rings for (int r = 0; r < 3; r++) { float aOut = (float)(rings.GetRingSize(r, RingEdge.Outer, RingAxis.Major) * scale); float bOut = (float)(rings.GetRingSize(r, RingEdge.Outer, RingAxis.Minor) * scale); float aIn = (float)(rings.GetRingSize(r, RingEdge.Inner, RingAxis.Major) * scale); float bIn = (float)(rings.GetRingSize(r, RingEdge.Inner, RingAxis.Minor) * scale); GraphicsPath gp = new GraphicsPath(); gp.AddArc(-aOut, -bOut, aOut * 2, bOut * 2, startAngle, 180 + 1e-2f * 2); gp.Reverse(); gp.AddArc(-aIn, -bIn, aIn * 2, bIn * 2, startAngle, 180 + 1e-2f * 2); g.FillPath(brushRings[r], gp); } }