三维图表


坐标

三维笛卡尔坐标的表示方法是(x,y,z),如果要使用三维球坐标(r,φ,θ),必须 设置选项

SphericalCoor=true

坐标轴

坐标轴的语法是

\pstThreeDCoor[参数]
以下是坐标轴相关的参数
参数描述缺省值
Alpha坐标系的水平旋转角度45
Beta坐标系的垂直旋转角度30
xMin最小x值-1
xMax最大x值4
yMin最小y值-1
yMax最大y值4
zMin最小z值-1
zMax最大z值4
nameXx轴的名字$x$
spotXx轴名字的标注角度180
nameYy轴的名字$y$
spotYy轴名字的标注角度0
nameZz轴的名字$z$
spotZz轴名字的标注角度90
IIIDticks是否使用三维刻度false
Dxx轴步长1
Dyy轴步长1
Dzz轴步长1
IIIDxTicksPlane三维x轴刻度所在的平面xy
IIIDyTicksPlane三维y轴刻度所在的平面yz
IIIDzTicksPlane三维z轴刻度所在的平面yz
IIIDticksize三维刻度的大小0.1
IIIDxticksep三维x轴刻度标注与轴的距离-0.4
IIIDyticksep三维y轴刻度标注与轴的距离-0.2
IIIDzticksep三维z轴刻度标注与轴的距离0.2
drawingtrue
比如
\begin{pspicture}
\pstThreeDCoor[linecolor =black ,%
IIIDticks,IIIDzTicksPlane=xz,
IIIDzticksep=-0.2,%
IIIDxTicksPlane=xz,IIIDxticksep=-0.2,%
IIIDyTicksPlane=xy,IIIDyticksep=0.2,%
Dx=2,Dy=1,Dz=0.25,Alpha=-135,Beta=-30]%
\end{pspicture}

平面网格

平面网格的语法是

\pstThreeDPlaneGrid[参数](xMin,yMin)(xMax,yMax)
参数
planeGrid
设置网格所在平面,值可以是xy、xz、yz,缺省值是xy。参数
subticks
设置刻度数量,缺省值是10。参数
planeGridOffset
设置网格平移的距离,缺省值是0。比如
\begin{pspicture}
\pstThreeDCoor[xMin=0,yMin=0,zMin=0,xMax=7,yMax=7,zMax=7,linewidth=2pt]
\psset{linewidth=0.1pt,linecolor=lightgray}
\pstThreeDPlaneGrid(0,0)(7,7)
\pstThreeDPlaneGrid[planeGrid=xz](0,0)(7,7)
\pstThreeDPlaneGrid[planeGrid=yz](0,0)(7,7)
\end{pspicture}

放置

选项

origin=lt|lB|lb|t|c|B|b|rt|rB|rb
用来设置被放置的文本或对象的引用位置,其中l表示左侧,r表示右侧,t表示顶部, b表示底部,B表示基线,c表示中心,缺省值是c。

命令

\pstThreeDPut[参数](x,y,z){内容}
把“内容”的引用点放在(x,y,z)处。比如
\begin{pspicture}
\psgrid
\psset{Alpha=-60,Beta=30}
\pstThreeDCoor[linecolor=blue,%
xMin=-1,xMax=2,yMin=-1,yMax=2,zMin=-1,zMax=2]
\pstThreeDPut(1,0.5,1.25){pst -3 dplot}
\pstThreeDDot[drawCoor=true](1,0.5,1.25)
\end{pspicture}

命令

\pstPlanePut[plane=平面,planecorr=对齐校正](x,y,z){对象}
把对象放在“平面”上,“平面”是xy、yx、xz中的一个,缺省值是xy。“对象” 可以是任意的文本或图形,引用点是lB。“对齐校正”可以是 比如
\begin{pspicture}
\psgrid
\psset{origin=lb}
\pstThreeDCoor[xMax=3.2,yMax=3.2,zMax=4]
\pstThreeDDot[drawCoor=true,linecolor=red](1,-1 ,2)
\pstPlanePut[plane=xy,planecorr=normal](1,-1,2)
{\fbox{\Huge\red\textbf{XY}}}
\pstThreeDDot[drawCoor=true,linecolor=green](1,3,1)
\pstPlanePut[plane=xz,planecorr=normal](1,3,1)
{\fbox{\Huge\green\textbf{XZ}}}
\pstThreeDDot[drawCoor=true,linecolor=blue](-1.5,0.5,3)
\pstPlanePut[plane=yz,planecorr=normal](-1.5,0.5,3)
{\fbox{\Huge\blue\textbf{YZ}}}
\end{pspicture}

节点

节点的语法是

\pstThreeDNode(x,y,z){名字}

点的语法是

\pstThreeDDot[参数](x,y,z)
如果参数
drawCoor
被设置为true,在绘制点时还会用虚线画出坐标。比如
\begin{pspicture}
\psgrid
\pstThreeDCoor[xMin=-2,xMax=2,yMin=-2,yMax=2,zMin=-2,zMax=2]
\psset{dotstyle=*,dotscale=2,linecolor=red ,drawCoor=true}
\pstThreeDDot(-1,1,1)
\pstThreeDDot(1.5,-1,-1)
\end{pspicture}

线段和折线

线段和折线的语法是

\pstThreeDLine[参数]{箭头}(x1,y1,z1)(...)(xn,yn,zn)
比如
\begin{pspicture}
\psgrid
\pstThreeDCoor[xMin=-2,xMax=2,yMin=-2,yMax=2,zMin=-2,zMax=2]
\psset{dotstyle=*,dotscale=2,linecolor=red ,drawCoor=true}
\pstThreeDDot(-1,1,1)
\pstThreeDDot(1.5,-1,-1)
\pstThreeDLine[linewidth=3pt,linecolor=blue,arrows=->]%
(-1,1,0.5)(1.5,-1,-1)
\end{pspicture}

三角形

三角形的语法是

\pstThreeDTriangle[参数](P1)(P2)(P3)
比如
\begin{pspicture}
\psgrid
\pstThreeDCoor[xMin=-4,xMax=4,yMin=-3,yMax=5,zMin=-4,zMax=3]
\pstThreeDTriangle[fillcolor=yellow,fillstyle=solid,%
linecolor=blue,linewidth=1.5pt](5,1,2)(3,4,-1)(-1,-2,2)
\pstThreeDTriangle[drawCoor=true,linecolor=black,%
linewidth=2pt](3,1,-2)(1,4,-1)(-2,2,0)
\end{pspicture}

矩形

矩形的语法是

\pstThreeDSquare(向量o)(向量u)(向量v)
比如
\begin{pspicture}
\psgrid
\pstThreeDCoor[xMin=-3,xMax=3,yMin=-1,yMax=4,zMin=-1,zMax=3]
{\psset{fillcolor=blue,fillstyle=solid,
drawCoor=true,dotstyle=*}
\pstThreeDSquare(-2,2,3)(4,0,0)(0,1,0)}
\end{pspicture}

盒子

盒子的语法是

\pstThreeDBox[参数](向量o)(向量u)(向量v)(向量w)
比如
\begin{pspicture}
\psgrid
\psset{Alpha=30,Beta=30}
\pstThreeDCoor[xMin=-3,xMax=1,yMin=-1,yMax=2,zMin=-1,zMax=4]
\pstThreeDBox(-1,1,2)(0,0,2)(2,0,0)(0,1,0)
\pstThreeDDot[drawCoor=true](-1,1,2)
\end{pspicture}

圆和椭圆

为了绘制圆弧,有两个特别的参数

beginAngle
endAngle

椭圆的语法是

\pstThreeDEllipse[参数](cx,cy,cz)(ux,uy,uz)(vx,vy,vz)
其中c是椭圆中心,u和v是两个方向向量。比如
\begin{pspicture}
\psgrid
\pstThreeDCoor[xMax=2,yMax=2,zMax=2]
\pstThreeDDot[linecolor=red,drawCoor=true](1,0.5,0.5)
\psset{linecolor=blue,linewidth=1.5pt}
\pstThreeDEllipse(1,0.5,0.5)(-0.5,1,0.5)(1,-0.5,-1)
\psset{beginAngle=0,endAngle=270,linecolor=green}
\pstThreeDEllipse(1,0.5,0.5)(-0.5,0.5,0.5)(0.5,0.5,-1)
\end{pspicture}

圆的语法是

\pstThreeDCircle[参数](cx,cy,cz)(ux,uy,uz)(vx,vy,vz)
参数的含义与椭圆一样。比如
\begin{pspicture}
\psgrid
\pstThreeDCoor[xMax=2,yMax=2,zMax=2,linecolor=black]
\psset{linecolor=red,linewidth=2pt,plotpoints=20,showpoints=true}
\pstThreeDCircle(1.6,+0.6,1.7)(0.8,0.4,0.8)(0.8,-0.8,-0.4)
\pstThreeDDot[drawCoor=true,linecolor=blue](1.6,+0.6,1.7)
\end{pspicture}

球体

球体的语法是

\pstThreeDSphere[参数](x,y,z){半径}
其中(x,y,z)是 中心。比如
\begin{pspicture}
\psgrid
\pstThreeDCoor[xMin=-3,yMax=2]
\pstThreeDSphere[linecolor=blue](1,-1,2){2}
\pstThreeDDot[dotstyle=x,linecolor=red,drawCoor=true](1,-1,2)
\end{pspicture}

函数图表

首先要说明的是本部分所说的函数必须是Postscript语言表达的。第一个函数图表的语法是

\psplotThreeD[参数](xMin,xMax)(yMin,yMax){函数}
以下是相关的参数
参数
plotstyledots、line、polygon、curve、ecurve、ccurve、none
showpointstrue、false
xPlotpoints整数
yPlotpoints整数
drawStylexLines、yLines、xyLines、yxLines
hiddenLinetrue、false
比如
\begin{pspicture}
\psgrid
\psset{Beta=15}
\psplotThreeD[plotstyle=line,drawStyle=xLines,%
yPlotpoints=50,xPlotpoints=50,linewidth=1pt](-4,4)(-4,4){%
x 3 exp x y 4 exp mul add x 5 div sub 10 mul
2.729 x dup mul y dup mul add neg exp mul
2.729 x 1.225 sub dup mul y dup mul add neg exp add}
\pstThreeDCoor[xMin=-1,xMax=5,yMin=-1,yMax=5,zMin=-1,zMax=5]
\end{pspicture}

参数化的函数图标的语法是

\parametricplotThreeD(t1,t2)(u1,u2){函数表达式}
\parametricplotThreeD(t1,t2){函数表达式}
比如
\begin{pspicture}
\psgrid
\parametricplotThreeD[xPlotpoints=200,linecolor=blue,%
linewidth=1.5pt,plotstyle=curve](0,2160){%
2.5 t cos mul 2.5 t sin mul t 600 div}
\pstThreeDCoor[zMax=5]
\end{pspicture}

数据图表

如果数据来自外部文件,可以用

\fileplotThreeD[参数]{数据文件}
比如
\begin{pspicture}
\psset{xunit=0.5cm,yunit=0.75cm,Alpha=30,Beta=30}
\pstThreeDCoor[xMin=-10,xMax=10,yMin=-10,yMax=10,zMin=-2,zMax=10]
\fileplotThreeD[plotstyle=line]{data3D.Roessler}
\end{pspicture}

使用命令

\dataplotThreeD[参数]{数据对象}
前先要用命令
\readdata{数据对象}{数据文件}
把数据从外部文件读入数据对象。比如
\begin{pspicture}
\psset{xunit=0.5cm,yunit=0.75cm,Alpha=-30}
\pstThreeDCoor[xMin=-10,xMax=10,yMin=-10,yMax=10,zMin=-2,zMax=10]
\dataplotThreeD[plotstyle=line]{\dataThreeD}
\end{pspicture}

命令

\listplotThreeD[参数]{数据对象}
与“\dataplotThreeD”相似,它能处理数据中Postscript代码。比如先 构造数据对象
\dataread{\data}{data3D.Roessler}
\newcommand{\dataThreeDDraft}{%
\data\space
gsave
/Helvetica findfont 40 scalefont setfont
45 rotate
0.9 setgray
-60 30 moveto ( DRAFT ) show
grestore}
然后产生图表
\begin{pspicture}
\psset{xunit=0.5cm,yunit=0.5cm,Alpha=0,Beta=90}
\pstThreeDCoor[xMin=-10,xMax=10,yMin=-10,yMax=7.5,zMin=-2,zMax =10]
\listplotThreeD[plotstyle=line]{\dataThreeDDraft}
\end{pspicture}


目录