
を使ってグレースケールの陰影付き球を描くにはどうすればいいでしょうか?半径が に等しく、球面角度に応じて をtikz-3dplot
使ってみました。しかし、色の色相(HSB空間)しか指定できないようです。\tdplotsphericalsurfaceplot
1
parametricfill
次の投稿、これは私には合いません。 まで行って再定義することもできます \tdplotdosurfaceplot
が、それはやりすぎのようです。
私が望んでいることを強調させてください真実3D描画(残りの絵必要3D座標:円弧を描く必要があるので、2Dのトリックを使うことができません。
\draw [ball color=white] (0,0,0) circle (1) ;
これはないの複製陰影のある球体の描き方明確に 3D 図面を希望しており、できれば を使用していますtikz-3dplot
が、他の 3D パッケージでも構いません。
ここに 2 つの MWE があります。最初の球は均一な色付けを使用し、2 番目は球面角度の線形結合を使用します。
\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}
パラメトリック ラインも削除したいと思います... おそらく、これは作業に適したパッケージではないか、パッケージ内の適切なコマンドではないのでしょう。
答え1
より良い使い方pgfplots
(この郵便受け)。パラメトリック塗りつぶしは、\theta+\phi
私の意見では非常に奇妙に見えます。
\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}
答え2
あちこちでいろいろ試した結果、私は許容できる解決策を見つけました。これはtikz-3dplot
(欠点はありますが、下記参照)使用しています。これはMWEで、陰影のある球体上に球面三角形が描かれています。異なる陰影については、陰影のある球体の描き方。
以下のソリューションは部分的にごまかしをしています。陰影付きの球を描画するのではなく、遠近法で陰影付きの 2D ディスクを描画します。したがって、球のように見えるようにするには、3 次元空間で回転させる必要がある (回転した座標がこれです)。ただし、円弧の球面座標は正確です。
\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}
もう 1 つの欠点は、円弧を定義するための の構文が扱いにくくtikz-3dplot
、それを コマンドと混在させることができないことですcoordinate
。