POV-Ray中使用declare递归定义Sierpinski结构

原文出处:http://cgpad.com/SPAN/articles_show/293

declare可以定义object,而且有意思的是,declare可以对object进行递归定义。下面是我用此种方法做的Sierpinski结构:


#declare __object = sphere { <0, 0, 0>, 0.2
texture { __texture }
}

#declare __iter = 0;
#while (__iter <= 6)
#declare __object = union{
object{__object pigment {color rgb <0.0, 0.45, 0.0>}}
object{__object translate x * 0.6 scale 0.5 pigment {color rgb <0.5, 0.45, 0.0>}}
object{__object translate y * 0.6 scale 0.5 pigment {color rgb <0.5, 0.65, 0.0>}}
object{__object translate z * 0.6 scale 0.5 pigment {color rgb <0.8, 0.45, 0.0>}}
}
#local __iter = __iter + 1;
#end

object{__object translate <0.3, 0.1, 0> scale 4.8 translate <-1.1, -0.4, 0>}

其中,初始元__object被定义为半径为0.2的球体,在后面的递归重新定义中,被copy了三次,每次移动一个0.6的距离并缩小一半。下图是渲染结果:

你可能感兴趣的:(ERP)