三维笛卡尔坐标的表示方法是(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 nameX x轴的名字 $x$ spotX x轴名字的标注角度 180 nameY y轴的名字 $y$ spotY y轴名字的标注角度 0 nameZ z轴的名字 $z$ spotZ z轴名字的标注角度 90 IIIDticks 是否使用三维刻度 false Dx x轴步长 1 Dy y轴步长 1 Dz z轴步长 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 drawing true
\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){函数}以下是相关的参数
比如
参数 值 plotstyle dots、line、polygon、curve、ecurve、ccurve、none showpoints true、false xPlotpoints 整数 yPlotpoints 整数 drawStyle xLines、yLines、xyLines、yxLines hiddenLine true、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}