Moin,
die Frage steht auch auf Englisch zur Verfügung:
"3D Orbits around Sphere, arc points or orbit coordinates pos" auf Außerdem als Projekt auf In overleaf (ehemals writelatex) sofern zugänglich. Nun zum Problem:Das Problem ist die Zu finden ist das Problem in den Zeilen weiter unten unter Leider verstehe ich nicht warum das Ganze nicht funktioniert, zudem da auch die Änderung von Da dies nur das Minimalbeispiel ist und noch einiges in der Grafik hinzukommt, ist das manuelle Setzen der Punkte nicht gerade nützlich. Ich freue mich über jede Unterstützung und seien es nur Vorschläge. Open in Online-Editor
\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 \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 %#############################-problem-######################################### \path[orbplanetwo] (\angPhi+50:\R/1) coordinate[mark coordinate,color=orange] (A1); % not at the expected position ??? \path[orbplanetwo] (\angBeta:\rr/1) coordinate[mark coordinate,color=orange] (A2); % not at the expected position ??? %##-wanted position of the orange dots-##### \node at (-0.93,0) {o}; \node at (-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} gefragt 26 Mär '15, 11:19 startrucky saputello |
Die Antwort wurde auf tex.stachexchange.org gegeben. beantwortet 27 Mär '15, 09:08 startrucky 1
@startrucky Danke für die Info! Hatte es vorhin gefunden und die Lösung hier für interessierte Leser aufgeschrieben, gepostet ein paar Sekunden nachdem Du gerade das schriebst. Wegen der Ausführlichkeit würde ich meinen Post stehenlassen und vllt. den hier entfernen. Oder übernimm den Text hier rein. :-)
(27 Mär '15, 09:11)
stefan ♦♦
|
Fürs Archivieren der Lösung: TonioElGringo fand die Ursache auf TeX.SX: in der Definition von Open in Online-Editor
\tikzset{#1/.style={cm={\cost,\sint*\sinEl,0,\cosEl,(0,0)}}} Die Makros Mit Open in Online-Editor
\tikzset{#1/.estyle={cm={\cost,\sint*\sinEl,0,\cosEl,(0,0)}}} Es gibt nur leider einen Bug in der aktuellen TikZ-Version, wenn Open in Online-Editor
\tikzset{current plane/.prefix style={scale=#1}} Beheben lässt sich das dadurch, dass statt durch Open in Online-Editor
\newcommand{\DrawOrbitCircle}[2][3]{ \OrbitPlane{\angEl-8}{#2} % orbit kippen!!! % angle of "visibility" \pgfmathsetmacro\angVis{atan(sin(#2)*cos(\angEl)/sin(\angEl))} % % original \draw[scale=#1,current plane] (\angVis:1) arc (\angVis:\angVis+180:1); % sichtbarkeit des vor der kugel befindlichen bereichs \draw[scale=#1,current plane,dashed] (\angVis-180:1) arc (\angVis-180:\angVis:1); } % achtung unten auch eine winkeländerung !!!??? Dann funktioniert es, zusammen mit
Permanenter link
Dieser Antwort ist "Community Wiki" markiert.
beantwortet 27 Mär '15, 09:09 stefan ♦♦ |
@startrucky Willkommen auf der TeXwelt! Schön, dass es hier auch steht, auf Deutsch verstehe ich es gleich besser. :-) An den verlinkten Stellen gab es ja noch keine Lösung. Was ich toll fände: evtl. Verringern der Komplexität durch Herausnehmen von unbeteiligten Orbits und Punkten, Isolieren zu einem einzigen Problempunkt mit Orbit, und wenn es gelingt: einen Punkt manuell setzen, wo er eigentlich hingehört, vergleichbar mit dem Winkel-gesetzten Punkt, wo er falsch landet. Nur als Idee, was beim Troubleshooten noch helfen könnte. (Fragen können jederzeit editiert werden.)
Leider wird es wohl nicht einfacher als dass.
Ich habe mir erlaubt, die Lesbarkeit durch kleine sprachliche Korrekturen und korrektes Markdown (hoffentlich) zu verbessern. Bitte kein HTML verwenden. Das führt nicht immer zum korrekten Ergebnis. Informationen zur Nutzung von TeXwelt und der Markdown-Syntax findet sich u. a. auch in der FAQ.