Grau schattierte Kugel mit tikz-3dplot

Grau schattierte Kugel mit tikz-3dplot

Wie zeichne ich eine graustufenschattierte Kugel mit tikz-3dplot? Ich habe versucht, \tdplotsphericalsurfaceplotmit einem Radius von zu verwenden 1, der parametricfillvon 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. Bildbeschreibung hier eingeben

Antwort1

Bessere Nutzung pgfplots(adaptiert vondieser Beitrag). Die parametrische Füllung \theta+\phisieht 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}

Bildbeschreibung hier eingeben

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-3dplotzum Definieren von Bögen und die Tatsache, dass Sie diese nicht mit dem coordinateBefehl mischen können. sphärisches Dreieck auf schattierter Kugel

verwandte Informationen