带参数的立方体的 Pst-Solides3D 变换

带参数的立方体的 Pst-Solides3D 变换

我正在研究 Pst-Solides3d 文档中 4.14.3 给出的示例:与到原点的距离相关的转换。

代码如下

\documentclass[a4paper,10pt]{article}
\usepackage[utf8x]{inputenc}
\usepackage[english]{babel} 
\usepackage[english,verbose]{layout}
\usepackage{pstricks-add}
\usepackage{auto-pst-pdf}
\usepackage{multido}
\usepackage{pst-solides3d}
\usepackage{fp}
\begin{document}
\begin{pspicture}(-3,-4)(4,3) 
\psset{viewpoint=20 60 20 rtp2xyz,lightsrc=10 15 7, 
Decran=20} 
 \pstVerb{ 
 /gro { 
 4 dict begin 
 /M defpoint3d 
 /a 0.5 def 
 /b 1 a 3 sqrt mul sub def 
 /k M norme3d a mul b add def 
 M k mulv3d 
 end 
 } def}% 

 \psset{linewidth=.02,linecolor=gray} 
 \psSolid[object=cube,a=3,ngrid=9,transform=gro](0,0,0)% 
\end{pspicture}
\end{document}

并相应地变换立方体。我想要的是能够在循环中对过程进行参数化,以使用参数 \a。

\documentclass[a4paper,10pt]{article}
\usepackage[utf8x]{inputenc}
\usepackage[english]{babel} 
\usepackage[english,verbose]{layout}
\usepackage{pstricks-add}
\usepackage{auto-pst-pdf}
\usepackage{multido}
\usepackage{pst-solides3d}
\usepackage{fp}
\begin{document}
\multido{\iA=0+1}{15}{%
\FPeval{\iB}{\iA*0.5/15}%
\begin{pspicture}(-3,-4)(4,3) 
\psset{viewpoint=20 60 20 rtp2xyz,lightsrc=10 15 7, 
Decran=20} 
 \pstVerb{ 
 /gro { 
 4 dict begin 
 /M defpoint3d 
 /a \iB\space def 
 /b 1 a 3 sqrt mul sub def 
 /k M norme3d a mul b add def 
 M k mulv3d 
 end 
 } def}% 
 \psset{linewidth=.02,linecolor=gray} 
 \psSolid[object=cube,a=3,ngrid=9,transform=gro](0,0,0)% 
\end{pspicture}
\newpage
}
\end{document}

因此参数 a 在 15 个步骤中从 0 变化到 0.5(模 1 增量..)。但是当我在 /a 后放置除数字以外的任何内容时,pst-Solides3d 会不喜欢它。有什么解决办法吗?

为了完全清楚:我的目标是为立方体上的坐标变换制作动画。变换由函数 /gro 给出。目标变换立方体具有参数 /a = 0.5 的变换。/a = 0 根本不会变换立方体。所以我的目标是生成 /a 范围从 0 到 0.5 的图片,即从未变换到完全变换的立方体。然后我将使用 animategraphics 为变换制作动画。

编辑:我已经弄明白了,我所缺少的只是 \iB 之后的 \space。

相关内容