Skip to content

Archive

Category: Astronomy

The Global Telescope Network is an interesting group I have come across. It is an informal group of professional astronomers, students, observatories and amateur astronomers who are interested in supporting the Fermi Gamma-ray Space Telescope, Swift and XMM-Newton space missions run by NASA.

First, let me clarify what these missions are all about.

The Fermi Gamma-ray Space Telescope is a gamma-ray telescope that is sitting in orbit around the Earth. Gamma-rays are rays of energy (similar to light or UV rays) which are the highest energy waves of all. This telescope is able to detect these types of rays, so that we can study them. The telescope is named after Enrico Fermi, who was a physicist who pioneered the study of high-energy physics.

XMM-Newton is also an orbiting telescope, which studies X-rays. The very same rays they use in medical rooms to see inside you. X-rays also have a very high energy, but not quite as high as gamma-rays.

The Swift telescope is an orbiting telescope that is able to detect light in multiple wavelength telescope, with three detectors that can detect gamma-ray, ultra-violet and visible light. The main objective of the Swift telescope is to find and study gamma-ray bursts.

The purpose of the Global Telescope Network is for interested people and organizations to work together to analyze and support the data captured by these telescopes. Essentially, aiding in the scientific research of high-energy astrophysics.

the great thing is that if you have a bit of astronomical knowledge, then they are always looking for volunteers.

  • Share/Bookmark

A few days ago, I got a question in regards to my tutorials on my blog from Kamal, and was quite surprised when I saw his credentials.

Kamal works for the NASA Education and Public Outreach Group at the Sonoma State University. Yes, that is right, I said he has some association with NASA. That dream of every kid who has any interest in space at all.

And no, he is not an astronaut (although I have no doubt he would jump at the chance) but is involved in creating educational material about NASA’s high-energy astrophysics space missions.

Kamal’s blog, Science Square, focuses on science. It is very interesting reads and rather than concentrating on high-end science that only a phD student could understand, all his articles are easily accessible to the average person.

He is also one of the authors of the web comic Epo’s Chronicle.

  • Share/Bookmark

Google Maps has evolved a little bit from just providing maps of Earth.

For a while now, Google Maps has also provided maps of the night sky as well, but did you know you can also use Google Maps to view the surface of the Moon and Mars as well.

You can read all about it on the Google Maps blog.

Now, where did you say those little green men had their colony on Mars again?

  • Share/Bookmark

Finding the angular diameter of a planet is a trivial task once we have found the distance to the planet, which we have found here.

The only thing else we need is the angular diameter at 1AU, and then applying the formula,
angular diameter = angular diameter at 1AU / distance
we get the value we are looking for.

		public static double CalcPlanetDiam(double fDistance, double fAngDiam1AU)
		{
			return (fAngDiam1AU / fDistance);
		}
  • Share/Bookmark

This calculation is based on the position calculation, but also includes finding the phase and distance, which are required for finding the magnitude.

The formula for the magnitude is quite straightforward once we have these values, as shown below. The calculation needs the magnitude of the object at 1AU as the basis to calculate the magnitude at the specified distance.

		public static void CalcPlanetMag(DateTime dEpoch, DateTime dDate, double fPOrbPeriod, double fPEcc, double fPEpochLong, double fPPeriLong, double fPSMA, double fPAscNode, double fPIncl, double fEOrbPeriod, double fEEcc, double fEEpochLong, double fEPeriLong, double fESMA, bool bInnerPlanet,  double fMag1AU, ref double fMag)
		{
			double fD, fPN, fPM, fPL, fPV, fPR;
			double fEN, fEM, fEL, fEV, fER;
			double fPsi, fX, fY, fA, fL1, fR1, fLambda, fT, fPhase, fDistance;

			fD = UraniaTime.GetDaysBetween(dDate, dEpoch);
			fPN = (360.0/365.242191) * (fD / fPOrbPeriod);
			fPN = Trig.PutIn360Deg(fPN);
			fPM = fPN + fPEpochLong - fPPeriLong;
			fPL = fPN + ((360.0 / Math.PI) * fPEcc * Math.Sin(Trig.DegToRad(fPM))) + fPEpochLong;
			fPL = Trig.PutIn360Deg(fPL);
			fPV = fPL - fPPeriLong;
			fPR = (fPSMA * (1 - (fPEcc * fPEcc))) / (1 + (fPEcc * Math.Cos(Trig.DegToRad(fPV))));

			fEN = (360.0/365.242191) * (fD / fEOrbPeriod);
			fEN = Trig.PutIn360Deg(fEN);
			fEM = fEN + fEEpochLong - fEPeriLong;
			fEL = fEN + ((360.0 / Math.PI) * fEEcc * Math.Sin(Trig.DegToRad(fEM))) + fEEpochLong;
			fEL = Trig.PutIn360Deg(fEL);
			fEV = fEL - fEPeriLong;
			fER = ((1 - (fEEcc * fEEcc))) / (1 + (fEEcc * Math.Cos(Trig.DegToRad(fEV))));

			fPsi = Math.Asin(Math.Sin(Trig.DegToRad(fPL - fPAscNode)) * Math.Sin(Trig.DegToRad(fPIncl)));
			fPsi = Trig.RadToDeg(fPsi);

			fY = Math.Sin(Trig.DegToRad(fPL - fPAscNode));
			fX = Math.Cos(Trig.DegToRad(fPL - fPAscNode));
			fT = Math.Atan((fY/fX) * Math.Sin(Trig.DegToRad(fPIncl)));
			fT = Math.Atan((fY/fX));
			fT = Trig.RadToDeg(fT) ;
			fT = Trig.TanQuadrant(fX, fY, fT);
			fL1 = fT + fPAscNode;
			fL1 = Trig.PutIn360Deg(fL1);
			fR1 = fPR * Math.Cos(Trig.DegToRad(fPsi));

			if (bInnerPlanet == true)
			{
				fA = Math.Atan((fR1 * Math.Sin(Trig.DegToRad(fEL - fL1)))/(fER - (fR1 * Math.Cos(Trig.DegToRad(fEL - fL1)))));
				fA = Trig.RadToDeg(fA);
				fLambda = 180 + fEL + fA;
			}
			else
			{
				fLambda = Math.Atan((fER * Math.Sin(Trig.DegToRad(fL1 - fEL)))/(fR1 - (fER * Math.Cos(Trig.DegToRad(fL1 - fEL)))));
				fLambda = Trig.RadToDeg(fLambda) + fL1;
				fLambda = Trig.PutIn360Deg(fLambda);
			}

			fPhase = 0.5 * (1 + Math.Abs(Math.Cos(Trig.DegToRad(fLambda - fPL))));
			fDistance = Math.Sqrt((fER * fER) + (fPR * fPR) - (2.0 * fER * fPR * Math.Cos(Trig.DegToRad(fPL - fEL))));

			fMag = (5 * Math.Log10((fPR * fDistance)/(Math.Sqrt(fPhase)))) + fMag1AU;

		}
  • Share/Bookmark

The calculation for the distance of the Earth to a planet is also based on the position calculation, but is a little bit simpler. To get all the information we need, we do not need the full position calculation, and it is enough to find the heliographical coordinates of the planet and the Earth.

Once we have these values, we can then find the distance between the two.

		public static void CalcPlanetDistance(DateTime dEpoch, DateTime dDate, double fPOrbPeriod, double fPEcc, double fPEpochLong, double fPPeriLong, double fPSMA, double fPAscNode, double fPIncl, double fEOrbPeriod, double fEEcc, double fEEpochLong, double fEPeriLong, double fESMA,  ref double fDistance)
		{
			double fD, fPN, fPM, fPL, fPV, fPR;
			double fEN, fEM, fEL, fEV, fER, fRho;

			fD = UraniaTime.GetDaysBetween(dDate, dEpoch);
			fPN = (360.0/365.242191) * (fD / fPOrbPeriod);
			fPN = Trig.PutIn360Deg(fPN);
			fPM = fPN + fPEpochLong - fPPeriLong;
			fPL = fPN + ((360.0 / Math.PI) * fPEcc * Math.Sin(Trig.DegToRad(fPM))) + fPEpochLong;
			fPL = Trig.PutIn360Deg(fPL);
			fPV = fPL - fPPeriLong;
			fPR = (fPSMA * (1 - (fPEcc * fPEcc))) / (1 + (fPEcc * Math.Cos(Trig.DegToRad(fPV))));

			fEN = (360.0/365.242191) * (fD / fEOrbPeriod);
			fEN = Trig.PutIn360Deg(fEN);
			fEM = fEN + fEEpochLong - fEPeriLong;
			fEL = fEN + ((360.0 / Math.PI) * fEEcc * Math.Sin(Trig.DegToRad(fEM))) + fEEpochLong;
			fEL = Trig.PutIn360Deg(fEL);
			fEV = fEL - fEPeriLong;
			fER = ((1 - (fEEcc * fEEcc))) / (1 + (fEEcc * Math.Cos(Trig.DegToRad(fEV))));

			fRho = Math.Sqrt((fER * fER) + (fPR * fPR) - (2.0 * fER * fPR * Math.Cos(Trig.DegToRad(fPL - fEL))));
			fDistance = fRho;
		}
  • Share/Bookmark

Once we know how to find the position of the planet, it is very easy to find the phase of the planet.

The first part of the calculation is identical to the calculation to find the planet position.

The actual formula to find the phase is
Phase = 0.5 * (1 + Abs(Cos(Ecliptic longitude – heliographical longitude)))

This is the only addition to the calculation we did previously

		public static void CalcPlanetPhase(DateTime dEpoch, DateTime dDate, double fPOrbPeriod, double fPEcc, double fPEpochLong, double fPPeriLong, double fPSMA, double fPAscNode, double fPIncl, double fEOrbPeriod, double fEEcc, double fEEpochLong, double fEPeriLong, double fESMA, bool bInnerPlanet,  ref double fPhase)
		{
			double fD, fPN, fPM, fPL, fPV, fPR;
			double fEN, fEM, fEL, fEV, fER;
			double fPsi, fX, fY, fA, fL1, fR1, fLambda, fT;

			fD = UraniaTime.GetDaysBetween(dDate, dEpoch);
			fPN = (360.0/365.242191) * (fD / fPOrbPeriod);
			fPN = Trig.PutIn360Deg(fPN);
			fPM = fPN + fPEpochLong - fPPeriLong;
			fPL = fPN + ((360.0 / Math.PI) * fPEcc * Math.Sin(Trig.DegToRad(fPM))) + fPEpochLong;
			fPL = Trig.PutIn360Deg(fPL);
			fPV = fPL - fPPeriLong;
			fPR = (fPSMA * (1 - (fPEcc * fPEcc))) / (1 + (fPEcc * Math.Cos(Trig.DegToRad(fPV))));

			fEN = (360.0/365.242191) * (fD / fEOrbPeriod);
			fEN = Trig.PutIn360Deg(fEN);
			fEM = fEN + fEEpochLong - fEPeriLong;
			fEL = fEN + ((360.0 / Math.PI) * fEEcc * Math.Sin(Trig.DegToRad(fEM))) + fEEpochLong;
			fEL = Trig.PutIn360Deg(fEL);
			fEV = fEL - fEPeriLong;
			fER = ((1 - (fEEcc * fEEcc))) / (1 + (fEEcc * Math.Cos(Trig.DegToRad(fEV))));

			fPsi = Math.Asin(Math.Sin(Trig.DegToRad(fPL - fPAscNode)) * Math.Sin(Trig.DegToRad(fPIncl)));
			fPsi = Trig.RadToDeg(fPsi);

			fY = Math.Sin(Trig.DegToRad(fPL - fPAscNode));
			fX = Math.Cos(Trig.DegToRad(fPL - fPAscNode));
			fT = Math.Atan((fY/fX) * Math.Sin(Trig.DegToRad(fPIncl)));
			fT = Math.Atan((fY/fX));
			fT = Trig.RadToDeg(fT) ;
			fT = Trig.TanQuadrant(fX, fY, fT);
			fL1 = fT + fPAscNode;
			fL1 = Trig.PutIn360Deg(fL1);
			fR1 = fPR * Math.Cos(Trig.DegToRad(fPsi));

			if (bInnerPlanet == true)
			{
				fA = Math.Atan((fR1 * Math.Sin(Trig.DegToRad(fEL - fL1)))/(fER - (fR1 * Math.Cos(Trig.DegToRad(fEL - fL1)))));
				fA = Trig.RadToDeg(fA);
				fLambda = 180 + fEL + fA;
			}
			else
			{
				fLambda = Math.Atan((fER * Math.Sin(Trig.DegToRad(fL1 - fEL)))/(fR1 - (fER * Math.Cos(Trig.DegToRad(fL1 - fEL)))));
				fLambda = Trig.RadToDeg(fLambda) + fL1;
				fLambda = Trig.PutIn360Deg(fLambda);
			}

			fPhase = 0.5 * (1 + Math.Abs(Math.Cos(Trig.DegToRad(fLambda - fPL))));

		}
  • Share/Bookmark