kartographie.yukterez.net
Simon Tyran, Yukterez (12,2015)

(* Polar Nord & Süd <> Equirectangular *)
Eq2Pn[{x_,y_}]:={(2 y Cos[x]),(2 y Sin[x])};
Eq2Ps[{x_,y_}]:={(-2 y Cos[x]),(2 y Sin[x])};

(* Equirectangular <> Mercator *)
Eq2Mc[{x_,y_}]:={x-0,Log[Tan[(π/4)+(y/2)]]};
Mc2Eq[{x_,y_}]:={x+0, (π/2)-2 ArcTan[(E^(-y))]};

(* Equirectangular <> Stereographisch *)
Eq2St[{x_,y_}]:={2 Tan[(π/4)-(y/2)]Sin[x-0], -2 Tan[(π/4)-(y/2)]Cos[x-0]};
St2Eq[{x_,y_}]:={0+ArcTan[-y, x], -2 ArcTan[2,(Sqrt[(x^2)+(y^2)])]+(π/2)};

(* Equirectangular <> Mollweide *)
Eq2Mol[{x_,y_}]:={Lmol[x,y],Bmol[y]};
θ[y_,rad_: 1]:=ArcSin[y];
Bmol[y_]:=ArcSin[(2 θ[y]+Sin[2 θ[y]])/π];
Lmol[x_,y_]:=0+π x/(2 Cos[θ[y]]);

(* Equirectangular >> Hammer Aitoff *)
Eq2HA[{x_,y_}]:={Lha[x,y],Bha[x,y]};
ζ[x_,y_]:=Sqrt[1-(x^2)/16-(y^2)/4];
Bha[x_,y_]:=ArcSin[ζ[x,y] y];
Lha[x_,y_]:=2 ArcTan[ζ[x,y] x/(2 (2 ((ζ[x,y])^2)-1))];

(* Hammer Aitoff >> Equirectangular *)
HA2Eq[{x_,y_}]:={X[x,y],Y[x,y]};
X[x_,y_]:=((2(Sqrt[2])Cos[y]Sin[x/2])/(Sqrt[1+Cos[y]Cos[x/2]]));
Y[x_,y_]:=(((Sqrt[2])Sin[y])/(Sqrt[1+Cos[y]Cos[x/2]]));

(* Sinusoidial >> Equirectangular *)
Eq2Sin[{x_,y_}]:={(x-0)Cos[y],y}

(* Equirectangular >> Sinusoidial *)
Sin2Eq[{x_,y_}]:={0+x/Cos[y],y}

(* Quincunx <> Equirectangular *)
Eq2Pq[{x_,y_}]:={Arg[fPq[x+I y]],2 ArcCot[Abs[fPq[x+I y]]]};
R=EllipticK[1/2];

(* Quincunx <> Equirectangular *)
Eq2pQ[{x_,y_}]:={Arg[fPq[x+I y]],2 ArcCot[Abs[fPq[x+I y]]]};
j[ε_]:=Max[0,Ceiling[Log2[4 Abs[ε]]]];
ζ[ε_]:=(((ε (2^(-j[ε]))))^2);
fPq[ε_]:=
Nest[-((((((#)^2)+2) ((#)^2)-1)/((((#)^2)-2) ((#)^2)-1)))&,(1-((ζ[ε])/4) (1+((ζ[ε])/30) (1+((ζ[ε])/8))))/(1+((ζ[ε])/4) (1-((ζ[ε])/30) (1-((ζ[ε])/8)))),j[ε]];

(* Kugelkoodinaten -> 3D *)
xyz[{x_,y_}]:=
{Sin[y]Cos[x],
Sin[y]Sin[x],
Cos[y]}

(* Rotation auf der x-Achse *)
Xyz[{x_, y_, z_}, α_]:=
{x Cos[α]-y Sin[α],x Sin[α]+y Cos[α],z}

(* Rotation auf der y-Achse *)
xYz[{x_, y_, z_}, β_]:=
{x Cos[β]+z Sin[β],y,z Cos[β]-x Sin[β]}

(* Rotation auf der z-Achse *)
xyZ[{x_, y_, z_}, ψ_]:=
{x,y Cos[ψ]-z Sin[ψ],y Sin[ ψ]+z Cos[ψ]}

(* 3D -> Kugelkoordinaten *)
xy[{x_, y_, z_}]:=
{ArcTan[x,y],ArcCos[z]}

(* Winkeltransformation *)
rm[pic_,α_, β_, ψ_]:=xy[xyZ[xYz[Xyz[xyz[pic], α], β], ψ]];
Eq2Eq[{x_, y_}]:=rm[{x, y}, α, β, ψ];

(* Gitter *)
color=Black; dX=H/9; dY=dX; W=4000; H=W/2;
linesX:={color, Thick, Line[{{0+dx,0},{0+dx,H}}]};
linesY:={color, Thick, Line[{{0,0+dy},{W,0+dy}}]};
lines={Table[linesX, {dx,0, W, dX}], Table[linesY, {dy,0, H, dY}]};
grid=Graphics[lines, PlotRange->{{0, W},{0,H}}, Frame->False, ImageSize->1400];

(* Winkelkorrektur *)
Δ=π/1400;

Eq=Import["C:\\Users\\Yukterez\\Desktop\\Equirectangular-projection.jpg"];
(* Plattkarte von der Festplatte laden *)

Eq=Import["https://upload.wikimedia.org/wikipedia/commons/e/ea/Equirectangular-projection.jpg"]
(* Plattkarte aus dem Internet laden *)

Mw=ImageTransformation[Eq,Eq2Mol,DataRange->{{-π,π},{-π/2,π/2}},PlotRange->{{-2,2},{-1,1}}]
(* Equirectangular -> Mollweide *)

eqMw=ImageForwardTransformation[Mw,Eq2Mol,DataRange->{{-2,2},{-1,1}},PlotRange->{{-π,π},{-π/2,π/2}}]
(* Mollweide -> Equirectangular *)

Ha=ImageTransformation[Eq,Eq2HA,DataRange->{{-π,π},{-π/2,π/2}},PlotRange->{{-2 (Sqrt[2]),2 (Sqrt[2])},{-(Sqrt[2]),(Sqrt[2])}}]
(* Equirectangular -> Hammer-Aitoff*)

eqHa=ImageTransformation[Ha,HA2Eq,DataRange->{{-2 (Sqrt[2]),2 (Sqrt[2])},{-(Sqrt[2]),(Sqrt[2])}},PlotRange->{{-π,π},{-π/2,π/2}}]
(* Hammer-Aitoff -> Equirectangular *)

Sn=ImageForwardTransformation[Eq,Eq2Sin,DataRange->{{-π,π},{-π/2,π/2}},PlotRange->{{-π,π},{-π/2,π/2}}]
(* Equirectangular -> Sinusoidial *)

eqSn=ImageForwardTransformation[Sn,Sin2Eq,DataRange->{{-π,π},{-π/2,π/2}},PlotRange->{{-π,π},{-π/2,π/2}}]
(* Sinusoidial -> Equirectangular *)

Pq=ImageTransformation[Eq,Eq2Pq,DataRange->{{-π,π},{0,π}},PlotRange->{{0,4 R},{-R,3 R}}]
(* Equirectangular -> Quincunx *)

eqPq=ImageForwardTransformation[Pq,Eq2Pq,DataRange->{{0,4 R},{-R,3 R}},PlotRange->{{-π,π},{-0,π}}]
(* Quincunx -> Equirectangular *)

Pn=ImageForwardTransformation[Eq,Eq2Pn,DataRange->{{-π,π},{-π,0}},PlotRange->{{-2 π,2 π},{-2 π,2 π}}]
(* Equirectangular -> Polar Nord *)

eqPn=ImageTransformation[Pn,Eq2Pn,DataRange->{{-2 π,2 π},{-2 π,2 π}},PlotRange->{{-π,π},{-π,0}}]
(* Polar Nord -> Equirectangular *)

Ps=ImageForwardTransformation[Eq,Eq2Ps,DataRange->{{-π,π},{0,π}},PlotRange->{{-2 π,2 π},{-2 π,2 π}}]
(* Equirectangular -> Polar Süd *)

eqPs=ImageTransformation[Ps,Eq2Ps,DataRange->{{-2 π,2 π},{-2 π,2 π}},PlotRange->{{-π,π},{0,π}}]
(* Polar Süd -> Equirectangular *)

St=ImageForwardTransformation[Eq,Eq2St,DataRange->{{-π-Δ,π+Δ},{-π/2,π/2}},PlotRange->{{-2 π,2 π},{-2 π,2 π}}]
(* Equirectangular -> Stereographisch *)

eqSt=ImageForwardTransformation[St,St2Eq,DataRange->{{-2 π,2 π},{-2 π,2 π}},PlotRange->{{-π-Δ,π+Δ},{-π/2,π/2}}]
(* Stereographisch -> Equirectangular *)

Mc=ImageForwardTransformation[Eq,Eq2Mc,DataRange->{{-π,π},{-π/2,π/2}},PlotRange->{{- π, π},{- π, π}}]
(* Equirectangular -> Mercator *)

eqMc=ImageForwardTransformation[Mc,Mc2Eq,DataRange->{{-π,π},{-π,π}},PlotRange->{{- π, π},{- π/2, π/2}}]
(* Mercator -> Equirectangular *)

α=+π; β=+π/2; ψ=+π/4; (* Perspektive *)
EQ=ImageTransformation[Eq,Eq2Eq,DataRange->{{-π,π},{0,π}},PlotRange->{{-π,π},{0,π}}]

Clear[α, β, ψ];
Kugel[pic_,{X_,Y_,Z_}]:=SphericalPlot3D[
1,{u,0,π},{v,0,2 π},
Mesh->None,
TextureCoordinateFunction->({#5,1-#4}&),
PerformanceGoal->"Quality",
PlotStyle->Directive[Texture[pic]],
Lighting->"Neutral",
Axes->False,
RotationAction->"Clip",
SphericalRegion->True,
Boxed->False,
ViewPoint->{X,Y,Z},
ViewAngle->1/5,
ImageSize->(444^2)/492,
PlotPoints->150];
sphere=Manipulate[Kugel[Eq,{
x Cos[α] Cos[β],
x Cos[ψ] Sin[α]+x Cos[α] Sin[β] Sin[ψ],
-x Cos[α] Cos[ψ] Sin[β]+x Sin[α] Sin[ψ]
}],{α,0,2 π},{β,0,2 π}, {ψ,0,2 π}, {{x,5},1/2,20}]
(* Equirectangular -> Sphere *)

(* Simon Tyran (Yukterez), Wien (Austria) 12,2015 *)