Wie kann man mit pgfplots oder TikZ eine Kugel mit einem Loch zeichnen?

Wie kann man mit pgfplots oder TikZ eine Kugel mit einem Loch zeichnen?

Ich möchte eine Kugel mit einem Loch zeichnen, wie unten gezeigt:

Kugel mit Loch

Was ich bisher getan habe, ist, in Inkscape einen Umriss der gewünschten Form zu erstellen und ihn in ein pstricksBild zu exportieren.

Der automatisch generierte Code ist wie folgt

\documentclass[10pt]{article}
\usepackage{pstricks}
\usepackage{auto-pst-pdf}
\begin{document}
\psset{xunit=.5pt,yunit=.5pt,runit=.5pt}
\begin{pspicture}(286.29050428,360.71140079)
{
 \pscustom[linewidth=2.83464567,linecolor=black]
 {
  \newpath
  \moveto(139.52774929,302.33545622)
  \curveto(180.48641764,305.30507638)(198.90888567,270.4308578)(199.85526803,242.00794504)
  \curveto(200.1155263,234.19166284)(186.99812409,224.51682819)(184.40553827,224.35110725)
  \lineto(104.9497852,222.87970693)
  \curveto(88.89492283,226.469763)(86.61774992,248.37367481)(89.50005543,260.40047544)
  \curveto(96.87234898,283.72077654)(115.91783433,300.07697685)(139.52774929,302.33545622)
 \closepath
\moveto(257.23997858,231.70812772)
  \curveto(263.21746016,212.03697559)(275.69856756,194.81507449)(280.78243276,176.53051764)
  \curveto(292.2452863,136.57533276)(278.2086463,87.90979575)(255.03287811,56.6111841)
  \curveto(229.44509858,25.45612268)(188.65669795,4.73497622)(151.29897071,1.4335589)
  \curveto(97.6206652,0.66208174)(49.36511244,27.44230221)(21.81552756,69.11809433)
  \curveto(-15.19498205,130.75954693)(4.53473008,178.71026567)(30.64394457,226.55821528)
  \curveto(31.47129827,272.50697496)(39.60579402,316.15887796)(77.72883024,338.38482819)
  \curveto(115.85187024,360.61077843)(151.91151118,367.26575166)(193.96965921,347.94894536)
  \curveto(242.3634822,326.81267827)(253.5873222,273.83813969)(257.23997858,231.70812772)
  \closepath
 }
}
\end{pspicture}
\end{document}

Dadurch entsteht ein Bild wie unten dargestellt.

Bildbeschreibung hier eingeben

Wie kann ich dies schattieren, um etwas Ähnliches wie oben gezeigt zu erstellen? Gibt es eine andere Möglichkeit, dies mit einem anderen Paket wie TikZ zu erreichen?

Antwort1

Dies kann Ihnen einen Anfang verschaffen.

\documentclass[tikz,border=3.14mm]{standalone}
% from https://tex.stackexchange.com/a/76216/121799
\tikzset{clip even odd rule/.code={\pgfseteorule}} 
\begin{document}
\begin{tikzpicture}
\pgfmathsetmacro{\myangleA}{140}
 \path (\myangleA:3) + (0,1) coordinate (aux);
 \clip[clip even odd rule,draw]
 ([xshift=8mm,yshift=-2mm]aux) 
   arc(180:0:{3*cos(180-\myangleA)-0.3*(1+cos(\myangleA))-0.8})
   -- ++ (0,-0.3) arc(0:-90:0.3) -- 
   ++({-3*cos(180-\myangleA)+0.6*(1+cos(\myangleA))},0) 
   arc(-90:-180:0.4) -- cycle 
  (aux)
  arc(180:0:{3*cos(180-\myangleA)-0.3*(1+cos(\myangleA))}) 
  -- ++ (0,-1) arc(180:360-140:0.3)
  arc(180-\myangleA:\myangleA-360:3)
  arc(\myangleA-180:0:0.3)
  --  cycle  ;
  \shade[ball color=gray] (2,-2) circle [radius=8cm];
\end{tikzpicture}
\end{document}

Bildbeschreibung hier eingeben

verwandte Informationen