
Wie zeichne ich eine graustufenschattierte Kugel mit tikz-3dplot
? Ich habe versucht, \tdplotsphericalsurfaceplot
mit einem Radius von zu verwenden 1
, der parametricfill
von den Kugelwinkeln abhängt. Es sieht jedoch so aus, als könnte ich nur den Farbton der Farbe (im HSB-Raum) vorschreiben, gemäß derfolgender Beitrag, was mir nicht passt. Ich könnte den ganzen Weg gehen und neu definieren \tdplotdosurfaceplot
, aber das scheint mir übertrieben.
Lassen Sie mich betonen, dass ich möchteWAHR3D-Zeichnung (der Rest meines Bildeserfordert3D-Koordinaten: Ich muss Bögen zeichnen), daher kann ich keine 2D-Tricks verwenden wie
\draw [ball color=white] (0,0,0) circle (1) ;
das ist alsonichtein Duplikat vonwie-zeichnet-man-eine-schattierte-Kugel. Ich möchte ausdrücklich eine 3D-Zeichnung, vorzugsweise mit tikz-3dplot
, bin aber auch für andere 3D-Pakete offen.
Hier sind zwei MWEs: Die erste Kugel verwendet eine gleichmäßige Färbung, während die zweite eine lineare Kombination der Kugelwinkel verwendet:
\begin{tikzpicture}[tdplot_main_coords]
\tdplotsphericalsurfaceplot[parametricfill]{24}{24}{1} {black}{50}{}{}{}
\begin{scope}[xshift=4cm]
\tdplotsphericalsurfaceplot[parametricfill]{24}{24}{1} {black}{\tdplottheta+\tdplotphi}{}{}{}
\end{scope}
\end{tikzpicture}
Ich würde auch gerne die parametrischen Linien loswerden ... Vielleicht ist dies nicht das richtige Paket zum Arbeiten oder der richtige Befehl im Paket.
Antwort1
Bessere Nutzung pgfplots
(adaptiert vondieser Beitrag). Die parametrische Füllung \theta+\phi
sieht meiner Meinung nach ziemlich seltsam aus.
\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat=1.15}
\begin{document}
\begin{tikzpicture}
\begin{axis}
[
width=6cm,height=6cm,
axis equal,enlargelimits=false,
axis lines=none,
domain=0:180,samples=21,
y domain=0:360,samples y=21,
colormap/blackwhite,
view={100}{10},
]
\addplot3
[
surf,
z buffer=sort,
shader=flat,
point meta={acos(z/sqrt(x*x+y*y+z*z)) + atan2(y,x)}
] (
{sin(x)*cos(y)},
{sin(x)*sin(y)},
{cos(x)}
);
\end{axis}
\end{tikzpicture}
\end{document}
Antwort2
Nachdem ich hier und da ein paar Dinge ausprobiert habe, bin ich zu einer akzeptablen Lösung gekommen, die tikz-3dplot
(mit Mängeln, siehe unten) verwendet wird. Hier ist ein MWE, das ein sphärisches Dreieck zeigt, das auf der schattierten Kugel gezeichnet ist. Für andere Schattierungen gehen Sie einfach zuwie-zeichnet-man-eine-schattierte-Kugel.
Die folgende Lösung schummelt teilweise: Sie zeichnet keine schattierte Kugel, sondern eine schattierte 2D-Scheibe in der Perspektive; daher muss man sie im 3-Raum drehen, damit sie wie eine Kugel aussieht (daher die gedrehten Koordinaten). Die Kugelkoordinaten der Bögen sind jedoch korrekt.
\documentclass[11pt]{article}
\usepackage{tikz,tikz-3dplot}
\tdplotsetmaincoords{80}{110}
\begin{document}
\begin{figure}
\begin{center}
\begin{tikzpicture}[scale=3,tdplot_main_coords]
% spherical background
\tdplotsetrotatedcoords{20}{80}{0}
\draw [ball color=white,very thin,tdplot_rotated_coords] (0,0,0) circle (1) ;
% equator
\draw [dashed] (0,0,0) circle (1) ;
% spherical triangle
\tdplotdefinepoints(0,0,0)(0.8,-0.4,-0.4)(0.4,0.8,-0.4)
\tdplotdrawpolytopearc[thick]{1}{}{}
\tdplotdefinepoints(0,0,0)(0.4,0.8,-0.4)(0.45,0.22,0.9)
\tdplotdrawpolytopearc[thick]{1}{}{}
\tdplotdefinepoints(0,0,0)(0.45,0.22,0.9)(0.8,-0.4,-0.4)
\tdplotdrawpolytopearc[thick]{1}{}{}
\end{tikzpicture}
\end{center}
\end{figure}
\end{document}
Ein weiterer Nachteil ist die umständliche Syntax tikz-3dplot
zum Definieren von Bögen und die Tatsache, dass Sie diese nicht mit dem coordinate
Befehl mischen können.