pst-3dplot(\parametricplotThreeD)

\psplotThreeD(pst-3dplot)では、gnuplot の 1/0 のようなテクニックが使えないため、長方形領域の図しか書けないようです(2015/11/12現在)が、\parametricplotThreeD を駆使すれば色々できそうです。

まず、曲面上に円を描いてみます(円周率「\pstPI1」のためだけに pst-math が必要です)。

\psset{unit=20pt,Beta=30,Alpha=30,algebraic=true,spotX=-60,spotY=90}

\begin{pspicture}(-3,-3)(3,5)
\pstThreeDCoor[linecolor=black,xMax=3,yMax=3,zMax=5,xMin=-3,yMin=-3,zMin=0,drawing=true]

% 2 変数関数 \F の定義と曲面の描画
\newcommand{\F}[2]{( 8 - (#1 - 1)^2 - (#2 - 1)^2 ) / 2}
\psplotThreeD[drawStyle=xyLines,xPlotpoints=8,yPlotpoints=8](-2,2)(-2,2){\F{x}{y}}

% 曲面上の円
\parametricplotThreeD[linecolor=cyan](-\pstPI1,\pstPI1){2*cos(t) | 2*sin(t) | \F{2*cos(t)}{2*sin(t)}}
\end{pspicture}

parametricplotThreeD_1

カクカク曲面の解消法はコチラ。次に、曲面をシアンの円で刳り貫いたような図を(ちょっと強引に)描いてみます。

\psset{unit=20pt,Beta=30,Alpha=30,algebraic=true,spotX=-60,spotY=90}

\begin{pspicture}(-3,-3)(3,5)
\pstThreeDCoor[linecolor=black,xMax=3,yMax=3,zMax=5,xMin=-3,yMin=-3,zMin=0,drawing=true]

% 2 変数関数 \F の定義
\newcommand{\F}[2]{( 8 - (#1 - 1)^2 - (#2 - 1)^2 ) / 2}

% 半円の定義(\f:下側、\g:上側) 
\newcommand{\f}[1]{(- sqrt(4 - (#1)^2))}
\newcommand{\g}[1]{(sqrt(4 - (#1)^2))}

% 擬似ハッチング:始点 \f{\r} と終点 \g{\r} を結ぶ線分により表現
\multido{\r=-1.5+0.5}{7}{
	% y 軸平行
	\parametricplotThreeD[linecolor=cyan](0,1){\r | (1 - t)*\f{\r} + t*\g{\r} | \F{\r}{(1 - t)*\f{\r} + t*\g{\r}}}
	% x 軸平行
	\parametricplotThreeD[linecolor=cyan](0,1){(1 - t)*\f{\r} + t*\g{\r} | \r | \F{(1 - t)*\f{\r} + t*\g{\r}}{\r}}
}

% 曲面上の円
\parametricplotThreeD[linecolor=cyan](-\pstPI1,\pstPI1){2*cos(t) | 2*sin(t) | \F{2*cos(t)}{2*sin(t)}}
\end{pspicture}

parametricplotThreeD_2

これも微妙にカクカクしていますが、plotstyle=curve とすれば解消できます。