3d Orbits um Sphäre mit Koordinaten oder Punkten auf Umlaufbahn
Moin,
die frage steht auch auf englisch zur verfügung:
http://www.latex-community.org/forum/viewtopic.php?f=45&t=26046 und
http://tex.stackexchange.com/questions/234972/3d-orbits-around-sphere-arc-points-or-orbit-coordinates-positioning
In overleaf (ehemals writelatex) sofern zugänglich:
https://www.overleaf.com/2433347sbhpck#/6330259/
Nun zum Problem.<br />
Das problem ist die path umgebung die die Pläne nicht anerkennt erkennt bzw. nur den einen, und zwar den des ersten orbits und dessen subspur, blau und grün. Die Punkte Blau und Schwarz sind somit leicht zu platzierung, leider funktioniert das nicht für andere Pläne.<br />
Zu finden ist die Zeile das Problem in den Zeilen weiter unten unter ###-problem-###<br />
Die Orangenen Punkte sollten also eigentlich auf den roten linien liegen. liegen, da wo O undo sind. <br />
Leider verstehe ich nicht warum das ganze nicht funktioniert, zudem da auch die änderung von path zu draw keinen unterschied macht macht, genauso wenig wie die änderung von orbplanetwo zu xzplane ist das ganze etwas merkwürdig. <br />
Da dies nur das minimalbeispiel ist und noch einiges in der grafik hinzukommt ist das manuelle setzen der punkte nicht gerade nützlich. <br />
Ich freue mich über jede unterstützung und seien es nur vorschläge.
\documentclass{article}
\usepackage{tikz, tikz-3dplot}
\usetikzlibrary{calc,fadings,decorations.pathreplacing}
%% helper macros
\newcommand{\pgfmathsinandcos}[3]{%
\pgfmathsetmacro#1{sin(#3)}%
\pgfmathsetmacro#2{cos(#3)}%
}
\newcommand{\LongitudePlane}[3][current plane]{%
\pgfmathsinandcos\sinEl\cosEl{#2} % elevation
\pgfmathsinandcos\sint\cost{#3} % azimuth
\tikzset{#1/.style={cm={\cost,\sint*\sinEl,0,\cosEl,(0,0)}}}
}
\newcommand{\LatitudePlane}[3][current plane]{%
\pgfmathsinandcos\sinEl\cosEl{#2} % elevation
\pgfmathsinandcos\sint\cost{#3} % latitude
\pgfmathsetmacro\yshift{\cosEl*\sint}
\tikzset{#1/.style={cm={\cost,0,0,\cost*\sinEl,(0,\yshift)}}} %
}
\newcommand{\OrbitPlane}[3][current plane]{%
\pgfmathsinandcos\sinEl\cosEl{#2} % elevation
\pgfmathsinandcos\sint\cost{#3} % azimuth
\tikzset{#1/.style={cm={\cost,\sint*\sinEl,0,\cosEl,(0,0)}}}
}
\newcommand{\DrawLongitudeCircle}[2][1]{
\LongitudePlane{\angEl}{#2}
\tikzset{current plane/.prefix style={scale=#1}}
% angle of "visibility"
\pgfmathsetmacro\angVis{atan(sin(#2)*cos(\angEl)/sin(\angEl))} %
\draw[current plane] (\angVis:1) arc (\angVis:\angVis+180:1);
\draw[current plane,dashed] (\angVis-180:1) arc (\angVis-180:\angVis:1);
}
\newcommand{\DrawLatitudeCircle}[2][1]{
\LatitudePlane{\angEl}{#2}
\tikzset{current plane/.prefix style={scale=#1}}
\pgfmathsetmacro\sinVis{sin(#2)/cos(#2)*sin(\angEl)/cos(\angEl)}
% angle of "visibility"
\pgfmathsetmacro\angVis{asin(min(1,max(\sinVis,-1)))}
\draw[current plane] (\angVis:1) arc (\angVis:-\angVis-180:1);
\draw[current plane,dashed] (180-\angVis:1) arc (180-\angVis:\angVis:1);
}
\newcommand{\DrawOrbitCircle}[2][1]{
\OrbitPlane{\angEl-8}{#2} % orbit kippen!!!
\tikzset{current plane/.prefix style={scale=#1}}
% angle of "visibility"
\pgfmathsetmacro\angVis{atan(sin(#2)*cos(\angEl)/sin(\angEl))} %
% original
\draw[current plane] (\angVis:1) arc (\angVis:\angVis+180:1); % sichtbarkeit des vor der kugel befindlichen bereichs
\draw[current plane,dashed] (\angVis-180:1) arc (\angVis-180:\angVis:1);
} % achtung unten auch eine winkeländerung !!!???
%% document-wide tikz options and styles
\tikzset{%
>=latex, % option for nice arrows
inner sep=0pt,%
outer sep=2pt,%
mark coordinate/.style={inner sep=0pt,outer sep=0pt,minimum size=3pt,fill=black,circle}%
}
\begin{document}
\begin{tikzpicture}
%% some definitions
\def\R{4} % sphere radius
\def\rr{5} % orbit radius?
\def\angEl{35} % elevation angle
\def\angAz{-105} % azimuth angle
\def\angPhi{-40} % longitude of point P
\def\angBeta{25} % latitude of point P
%######################################################################
%% working planes
\pgfmathsetmacro\H{\R*cos(\angEl)} % distance to north pole
\tikzset{xyplane/.style={cm={cos(\angAz),sin(\angAz)*sin(\angEl),-sin(\angAz),cos(\angAz)*sin(\angEl),(0,-\H)}}}
\LongitudePlane[xzplane]{\angEl}{\angAz}
\LongitudePlane[pzplane]{\angEl}{\angPhi}
\LongitudePlane[yzplane]{\angEl}{\angAz+90}
\LatitudePlane[equator]{\angEl}{0}
\OrbitPlane[orbplanetwo]{\angEl-8}{\angAz} % dem orbit oben und unten winkel anpassen
\OrbitPlane[orbplane]{\angEl-8}{\angAz+60} % dem orbit oben und unten winkel anpassen
%######################################################################
%% draw xyplane and sphere
\fill[ball color=white!50!gray] (0,0) circle (\R); % 3D lighting effect
\draw[white] (0,0) circle (\R);
%% characteristic points
\coordinate[mark coordinate, color=yellow] (O) at (0,0);
\coordinate[mark coordinate, color=black] (N) at (0,\H);
\coordinate[mark coordinate, color=black] (S) at (0,-\H);
\path[orbplane] (\angBeta+10:\R/1) coordinate[mark coordinate,color=black] (P1); % works fine
\path[orbplane] (\angBeta+10:\rr/1) coordinate[mark coordinate,color=blue] (P2); % works fine
\path[orbplane] (\angBeta-5:\R/1) coordinate[mark coordinate,color=black] (S1); % works fine
\path[orbplane] (\angBeta-5:\rr/1) coordinate[mark coordinate,color=blue] (S2); % works fine
%#############################-problem-#########################################
\path[orbplanetwo] (\angPhi:\R/1) (\angPhi+50:\R/1) coordinate[mark coordinate,color=orange] (A1); % not at the expected position ???
\path[orbplanetwo] (\angBeta+15:\rr/1) (\angBeta:\rr/1) coordinate[mark coordinate,color=orange] (A2); % not at the expected position ???
\path[xzplane] (\R/1,0) coordinate[mark coordinate,color=orange] (a1); % not
%##-wanted position of the orange dots-#####
\node at the expected position ???
\path[yzplane] (\R/1,0) coordinate[mark coordinate,color=orange] (a2); % not (-0.93,0) {o};
\node at the expected position ???, on same point as above???
(-1.15,0.05) {O};
%######################################################################
% Äquator, Orbit, Subspur etc.
%% draw meridians and latitude circles
\DrawLatitudeCircle[\R,yellow]{0} % equator
\DrawOrbitCircle[\rr,cyan]{\angAz+60} % orbit plane drehen !!!
\DrawOrbitCircle[\R,green]{\angAz+60} % orbit subspur !!!
\DrawOrbitCircle[\rr,red]{\angAz} % orbit plane drehen !!!
\DrawOrbitCircle[\R,red]{\angAz} % orbit subspur !!!
% %######################################################################
\end{tikzpicture}
\end{document}
![alt text][1]
[1]: http://texwelt.de/wissen/upfiles/EOS-test.jpghttp://texwelt.de/wissen/upfiles/EOS-test2.jpg