Ich möchte eine Kugel mit einem Loch zeichnen, wie unten gezeigt:
Was ich bisher getan habe, ist, in Inkscape einen Umriss der gewünschten Form zu erstellen und ihn in ein pstricks
Bild 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.
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}