Ortodroom

Allikas: Vikipeedia

Ortodroom on matemaatikas geodeetiline joon kerapinnal.

Geograafias nimetatakse ortodroomiks geodeetilist joont maakeral või maaellipsoidil ning samuti sellist joont ligikaudselt järgivat joont Maa pinna lähedal.

Maaellipsoidil kulgeb iga ortodroom mööda tasandit, mis on määratud mingi kahe erineva punktiga maaellipsoidi pinnal ning Maa keskpunktiga.

Lühim tee (lühim "linnulennuline" tee) kahe erineva punkti vahel maakera või maaellipsoidi pinnal või Maa pinna lähedal on ortodroom. Kui need kaks punkti ei ole antipoodid, on lühim tee nende vahel üheselt määratud. Näiteks lennutrassid kulgevad kütuse kokkuhoiu huvides ideaaljuhul piki ortodroomi.

Ekvaator ning kõik meridiaanid on ortodroomid.

Kaardil kujutatud punased jooned on ekvaator, nullmeridiaan, lühim tee Tallinna ja Sydney vahel ning lühim tee Pariisi ja New Yorgi vahel.

Neli ortodroomi, neist vaid kaks kujutuvad sirglõikudena. Kaart on Robinsoni projektsioonis.

Rakendus[muuda | redigeeri lähteteksti]

Java meetod arvutamaks Maa orotodoomi pikkust asukoha ja sihtkoha vahel. Tagastatav vastus on täpne murdarv kilomeetrites, sisaldades ainult murdarvude ühtlustamisest ja Maa ebakorrapärasusest tingitud viga.

	/**
	 * Thaddeus Vincenty's inverse method formulae implementation in java
	 * for geographical distance between two given points on earth.
	 * @param L1
	 *        geographical latitude of standpoint in radians
	 * @param G1
	 *        geographical longitude of standpoint in radians
	 * @param L2
	 *        geographical latitude of destination in radians
	 * @param G2
	 *        geographical longitude of destination in radians
	 * @return geographical distance in km 
	 */
	public static double getDistance(final double L1, final double G1,
			final double L2, final double G2) {
		double delta, p0, p1, p2, p3;
		// The average radius for a spherical approximation of Earth
		double rEarth = 6371.01d;
 
		delta = G1 - G2;
		p0 = Math.cos(L2) * Math.cos(delta);
		p1 = Math.cos(L2) * Math.sin(delta);
		p2 = Math.cos(L1) * Math.sin(L2) - Math.sin(L1) * p0;
		p3 = Math.sin(L1) * Math.sin(L2) + Math.cos(L1) * p0;
 
		return rEarth * Math.atan2(Math.sqrt(p1 * p1 + p2 * p2), p3);
	}