|
|
Hi all,
I was trying to define the Menger Sponge level 4 as an Isosurface for
visualisation with K3DSurf and this is my best result :
===============================================================
// Menger Sponge Level 4
// Author: Abderrahman Taha (Sep 2007)
#include "stdinc.inc"
#include "arrays.inc"
global_settings {
assumed_gamma 1
}
sky_sphere {
pigment {gradient y
color_map {
[0 color Blue*0.6]
[1 color White]
}
}
}
#default {finish {ambient 0}}
//----------------------------------------
#declare CamLoc = < 2, 2,-2>;
camera {
location CamLoc
look_at <0, 0, 0>
}
light_source {<-20, 30, -30>*3 color White*1.5}
light_source {CamLoc color rgb 0.3}
//----------------------------------------
isosurface {
function {
( pow(x,1000) + pow(y,1000) +pow(z,1000) -1)*
(
(abs(x) >1/3 | abs(y) > 1/3 ) &( abs(z) >1/3 | abs(y) > 1/3 ) &( abs(x) >1/3
| abs(z) > 1/3 )
&
( (( ( (abs(x-2/3) <1/9) + (abs(x+2/3) <1/9) + (abs(x) <1/9) ) *
((abs(y-2/3) < 1/9) +(abs(y) < 1/9) +(abs(y+2/3) <1/9) + (abs(z-2/3) < 1/9)
+(abs(z) < 1/9) +
(abs(z+2/3) < 1/9))) +( ( (abs(z-2/3) <1/9) + (abs(z+2/3) <1/9) + (abs(z)
<1/9) ) *
( (abs(y-2/3) < 1/9) + (abs(y) < 1/9) + (abs(y+2/3) < 1/9))) ) =0)
&
( (( ( (abs(x-2/3) <1/27)+(abs(x-2/3-2/9) <1/27) + (abs(x-2/3+2/9) <1/27)
+(abs(x+2/3) <1/27) +
(abs(x+2/3-2/9) <1/27) + (abs(x+2/3+2/9) <1/27) +(abs(x) <1/27) +
(abs(x-2/9) <1/27) +
(abs(x+2/9) <1/27)) * ((abs(y-2/3) < 1/27) + (abs(y-2/3-2/9) < 1/27) +
(abs(y-2/3+2/9) < 1/27) +
(abs(y) < 1/27) + (abs(y-2/9) < 1/27) + (abs(y+2/9) < 1/27) + (abs(y+2/3)
<1/27) +
(abs(y+2/3-2/9) <1/27) + (abs(y+2/3+2/9) <1/27) + (abs(z-2/3) < 1/27) +
(abs(z-2/3-2/9) < 1/27) +
(abs(z-2/3+2/9) < 1/27) + (abs(z) < 1/27) + (abs(z-2/9) < 1/27) +
(abs(z+2/9) < 1/27) +
(abs(z+2/3) < 1/27) + (abs(z+2/3-2/9) < 1/27) + (abs(z+2/3+2/9) < 1/27) )) +
( ( (abs(z-2/3) <1/27) + (abs(z-2/3-2/9) <1/27) + (abs(z-2/3+2/9) <1/27) +
(abs(z+2/3) <1/27) +
(abs(z+2/3-2/9) <1/27) + (abs(z+2/3+2/9) <1/27) + (abs(z) <1/27) +
(abs(z-2/9) <1/27) +
(abs(z+2/9) <1/27) ) * ( (abs(y-2/3) < 1/27) + (abs(y-2/3-2/9) < 1/27) +
(abs(y-2/3+2/9) < 1/27) +
(abs(y) < 1/27) + (abs(y-2/9) < 1/27) + (abs(y+2/9) < 1/27) + (abs(y+2/3) <
1/27) +
(abs(y+2/3-2/9) < 1/27) + (abs(y+2/3+2/9) < 1/27)))) =0)
&
( ((
(
(abs(x-2/3) <1/81)+ (abs(x-2/3-2/27) <1/81)+ (abs(x-2/3+2/27) <1/81)+
(abs(x-2/3-2/9) <1/81) + (abs(x-2/3-2/9-2/27) <1/81) + (abs(x-2/3-2/9+2/27)
<1/81) +
(abs(x-2/3+2/9) <1/81) +(abs(x-2/3+2/9-2/27) <1/81) +(abs(x-2/3+2/9+2/27)
<1/81) +
(abs(x+2/3) <1/81) +(abs(x+2/3-2/27) <1/81) +(abs(x+2/3+2/27) <1/81) +
(abs(x+2/3-2/9) <1/81) +(abs(x+2/3-2/9-2/27) <1/81) +(abs(x+2/3-2/9+2/27)
<1/81) +
(abs(x+2/3+2/9) <1/81) +(abs(x+2/3+2/9-2/27) <1/81) +(abs(x+2/3+2/9+2/27)
<1/81) +
(abs(x) <1/81) + (abs(x-2/27) <1/81) +(abs(x+2/27) <1/81) +
(abs(x-2/9) <1/81) + (abs(x-2/9-2/27) <1/81) + (abs(x-2/9+2/27) <1/81) +
(abs(x+2/9) <1/81)+(abs(x+2/9-2/27) <1/81)+(abs(x+2/9+2/27) <1/81)
) *
(
(abs(y-2/3) < 1/81) + (abs(y-2/3-2/27) < 1/81) +(abs(y-2/3+2/27) < 1/81) +
(abs(y-2/3-2/9) < 1/81) + (abs(y-2/3-2/9-2/27) < 1/81) +(abs(y-2/3-2/9+2/27)
< 1/81) +
(abs(y-2/3+2/9) < 1/81) +(abs(y-2/3+2/9-2/27) < 1/81) +(abs(y-2/3+2/9+2/27)
< 1/81) +
(abs(y) < 1/81) + (abs(y-2/27) < 1/81) + (abs(y+2/27) < 1/81) +
(abs(y-2/9) < 1/81) + (abs(y-2/9-2/27) < 1/81) + (abs(y-2/9+2/27) < 1/81) +
(abs(y+2/9) < 1/81) + (abs(y+2/9-2/27) < 1/81) + (abs(y+2/9+2/27) < 1/81) +
(abs(y+2/3) <1/81) + (abs(y+2/3-2/27) <1/81) + (abs(y+2/3+2/27) <1/81) +
(abs(y+2/3-2/9) <1/81) + (abs(y+2/3-2/9-2/27) <1/81) + (abs(y+2/3-2/9+2/27)
<1/81) +
(abs(y+2/3+2/9) <1/81) + (abs(y+2/3+2/9-2/27) <1/81) + (abs(y+2/3+2/9+2/27)
<1/81) +
(abs(z-2/3) < 1/81) + (abs(z-2/3-2/27) < 1/81) + (abs(z-2/3+2/27) < 1/81) +
(abs(z-2/3-2/9) < 1/81) + (abs(z-2/3-2/9-2/27) < 1/81) +
(abs(z-2/3-2/9+2/27) < 1/81) +
(abs(z-2/3+2/9) < 1/81) + (abs(z-2/3+2/9-2/27) < 1/81) +
(abs(z-2/3+2/9+2/27) < 1/81) +
(abs(z) < 1/81) + (abs(z-2/27) < 1/81) + (abs(z+2/27) < 1/81) +
(abs(z-2/9) < 1/81) + (abs(z-2/9-2/27) < 1/81) + (abs(z-2/9+2/27) < 1/81) +
(abs(z+2/9) < 1/81) + (abs(z+2/9-2/27) < 1/81) + (abs(z+2/9+2/27) < 1/81) +
(abs(z+2/3) < 1/81) + (abs(z+2/3-2/27) < 1/81) + (abs(z+2/3+2/27) < 1/81) +
(abs(z+2/3-2/9) < 1/81) + (abs(z+2/3-2/9-2/27) < 1/81) +
(abs(z+2/3-2/9+2/27) < 1/81) +
(abs(z+2/3+2/9) < 1/81) +(abs(z+2/3+2/9-2/27) < 1/81) +(abs(z+2/3+2/9+2/27)
< 1/81)
)) +
(
(
(abs(z-2/3) <1/81) + (abs(z-2/3-2/27) <1/81) + (abs(z-2/3+2/27) <1/81) +
(abs(z-2/3-2/9) <1/81) + (abs(z-2/3-2/9-2/27) <1/81) + (abs(z-2/3-2/9+2/27)
<1/81) +
(abs(z-2/3+2/9) <1/81) + (abs(z-2/3+2/9-2/27) <1/81) + (abs(z-2/3+2/9+2/27)
<1/81) +
(abs(z+2/3) <1/81) + (abs(z+2/3-2/27) <1/81) + (abs(z+2/3+2/27) <1/81) +
(abs(z+2/3-2/9) <1/81) + (abs(z+2/3-2/9-2/27) <1/81) + (abs(z+2/3-2/9+2/27)
<1/81) +
(abs(z+2/3+2/9) <1/81) + (abs(z+2/3+2/9-2/27) <1/81) + (abs(z+2/3+2/9+2/27)
<1/81) +
(abs(z) <1/81) + (abs(z-2/27) <1/81) + (abs(z+2/27) <1/81) +
(abs(z-2/9) <1/81) + (abs(z-2/9-2/27) <1/81) + (abs(z-2/9+2/27) <1/81) +
(abs(z+2/9) <1/81) + (abs(z+2/9-2/27) <1/81) + (abs(z+2/9+2/27) <1/81)
) * (
(abs(y-2/3) < 1/81) + (abs(y-2/3-2/27) < 1/81) + (abs(y-2/3+2/27) < 1/81) +
(abs(y-2/3-2/9) < 1/81) + (abs(y-2/3-2/9-2/27) < 1/81) +
(abs(y-2/3-2/9+2/27) < 1/81) +
(abs(y-2/3+2/9) < 1/81) + (abs(y-2/3+2/9-2/27) < 1/81) +
(abs(y-2/3+2/9+2/27) < 1/81) +
(abs(y) < 1/81) + (abs(y-2/27) < 1/81) + (abs(y+2/27) < 1/81) +
(abs(y-2/9) < 1/81) + (abs(y-2/9-2/27) < 1/81) + (abs(y-2/9+2/27) < 1/81) +
(abs(y+2/9) < 1/81) + (abs(y+2/9-2/27) < 1/81) + (abs(y+2/9+2/27) < 1/81) +
(abs(y+2/3) < 1/81) + (abs(y+2/3-2/27) < 1/81) + (abs(y+2/3+2/27) < 1/81) +
(abs(y+2/3-2/9) < 1/81) + (abs(y+2/3-2/9-2/27) < 1/81) +
(abs(y+2/3-2/9+2/27) < 1/81) +
(abs(y+2/3+2/9) < 1/81) + (abs(y+2/3+2/9-2/27) < 1/81) +
(abs(y+2/3+2/9+2/27) < 1/81)
)
)) =0)
)
}
threshold 0
max_gradient 5
texture {
pigment {color rgb < 0.3, 0.85, 0.4>}
normal {bozo 0.1 scale < 1, 0.15, 1>}
}
}
=================================================================
By googling I found that there is a Pov-Ray script that describe the Menger
Sponge as an isosurface but I can't locate it. I'm looking for it because
I'm interested in the isosurface formula that was used and want to compare
it to my own result. If you've any infos please let me know.
Cheers,
Taha
PS: Menger Sponge Code for K3DSurf and screen shots can be found here :
http://k3dsurf.s4.bizhat.com/viewtopic.php?t=61&mforum=k3dsurf
Post a reply to this message
|
|