Utilisation : Les liens ne sont pas apparents. Pour obtenir des informations sur un mot clé, cliquez-le dans le script !
Quant aux images, cliquez sur le titre en commentaire qui correspond à la figure choisie pour faire apparaître un "popup" qui contiendra le résultat (Ex : si vous cliquez le commentaire "// FRAME 1", vous aurez la fonction "f_algbr_cyl1" en image).
// Persistence of Vision Ray Tracer Scene Description File // File: i_internal.pov // Date: 11-04-2001 // Author: RenŽ Smellenbergh // Demo: showing all internal functions of the "functions.inc" to be used in isosurfaces // This scene uses the clock to switch between functions. // Set "initial frame" to 1 and "final frame" to 78 // Using the "subset start" and "subset end" allows to choose the desired frames // example: all frames: start 1, end 78 // frame 14 (cushion): start 14, end 14 #if (clock_on = 0) #warning " This demo was designed to be used with the clock: \n please read the comments in the scene's header" #end #include "functions.inc" #declare AreaLightOn = off; //Specify if you want soft shadows (slower!) or not global_settings { assumed_gamma 1.8 noise_generator 2 } camera { location <0, 0,-40> look_at <0, 0, 0> angle 20 } light_source { <1000, 1000,-1200> rgb 1.3 #if (AreaLightOn = yes) area_light <30, 0, 0>, <0, 30, 0>, 6, 6 adaptive 1 jitter orient circular #end } light_source {<0, 0,-40> rgb 0.5 shadowless} //Fill in light background {color red 0.184314 green 0.309804 blue 0.309804} #declare IsoTexture = texture {pigment {rgb <1.0, 0.8, 0.5>} finish {phong 0.6 phong_size 250}} #declare ContTexture = texture {pigment {rgb 0.65} finish {ambient 0.35 phong 1.0 phong_size 40}} // FRAME 1 #if (frame_number = 1) // f_algbr_cyl1 : lathe form isosurface { function {f_algbr_cyl1(x, y, z, 1, 1.5, 1, 0, 0)} // P0 = Field Strength // P1 = Field limit // P2 = SOR switch // P3 = SOR offset // P4 = SOR angle contained_by {sphere {0, 1.1}} max_gradient 1.5 texture {IsoTexture} no_shadow scale 3 rotate x*-25 translate <3.5,-1, 0> } // f_algbr_cyl1 : extruded form intersection { isosurface { function {f_algbr_cyl1(x, y, z, 1, 1.5, 0, 0, 0)} // P0 = Field Strength // P1 = Field limit // P2 = SOR switch // P3 = SOR offset // P4 = SOR angle contained_by {box {<-1.05,-0.4,-0.01>, <1.05, 0.4, 3>}} max_gradient 1.2 texture {IsoTexture} no_shadow } box {<-1.05,-0.4,-0.01>*0.9999, <1.05, 0.4, 3>*0.9999 texture {ContTexture}} scale 3 rotate x*-10 translate <-3,-1, 0> } #end // FRAME 2 #if (frame_number = 2) // f_algbr_cyl2 : lathe form isosurface { function {-(f_algbr_cyl2(x, y, z, 0.3, 5, 1, 0, 0))} // P0 = Field Strength // P1 = Field limit // P2 = SOR switch // P3 = SOR offset // P4 = SOR angle contained_by {box {<-1.6,-0.01,-1.6>, <1.6, 2.4, 1.6>}} max_gradient 1.2 texture {IsoTexture} no_shadow scale 1.9 rotate x*-15 translate <3.2,-4, 0> } // f_algbr_cyl2 : extruded form intersection { isosurface { function {f_algbr_cyl2(x, y, z,-0.3, 5, 0, 0, 0)} // P0 = Field Strength // P1 = Field limit // P2 = SOR switch // P3 = SOR offset // P4 = SOR angle accuracy 0.0001 contained_by {box {<-1.6,-0.01,-0.01>, <1.6, 2.4, 3>}} max_gradient 5.4 texture {IsoTexture} no_shadow } box {<-1.6,-0.01,-0.01>*0.9999, <1.6, 2.4, 3>*0.9999 texture {ContTexture}} scale 1.9 rotate x*-15 translate <-3.2,-4, 0> } #end // FRAME 3 #if (frame_number = 3) // f_algbr_cyl3 : lathe form isosurface { function {f_algbr_cyl3(x, y, z,-1, 3, 1, 0, 0)} // P0 = Field Strength // P1 = Field limit // P2 = SOR switch // P3 = SOR offset // P4 = SOR angle contained_by {box {<-1.05,-0.01,-1.05>, <1.05, 1.3, 1.05>}} max_gradient 6.5 texture {IsoTexture} no_shadow scale 3.2 rotate x*-20 translate <2.7,-3.5, 0> } // f_algbr_cyl3 : extruded form #declare LCorner = <-1.05,-0.01,-0.01>; #declare RCorner = <1.05, 1.3, 3>; intersection { isosurface { function {f_algbr_cyl3(x, y, z,-1, 3, 0, 0, 0)} // P0 = Field Strength // P1 = Field limit // P2 = SOR switch // P3 = SOR offset // P4 = SOR angle contained_by {box {LCorner, RCorner}} max_gradient 2 texture {IsoTexture} no_shadow } box {LCorner*0.9999, RCorner*0.9999 texture {ContTexture}} scale 3.2 rotate y*-5 rotate x*-10 translate <-4.8,-3.5, 0> } light_source {<-10, 4, 0> rgb 0.5 shadowless} #end // FRAME 4 #if (frame_number = 4) // f_algbr_cyl4 : lathe form isosurface { function {f_algbr_cyl4(x, y, z,-0.4, 5, 1, 0, 0)} // P0 = Field Strength // P1 = Field limit // P2 = SOR switch // P3 = SOR offset // P4 = SOR angle contained_by {sphere {0, 1.2}} max_gradient 7.1 texture {IsoTexture} no_shadow scale 3.3 rotate x*-10 translate <3.5,-0.8, 0> } // f_algbr_cyl4 : extruded form #declare LCorner = <-0.9,-0.55,-0.01>; #declare RCorner = <0.9, 1.0, 6>; intersection { isosurface { function {f_algbr_cyl4(x, y, z,-0.4, 5, 0, 0, 0)} // P0 = Field Strength // P1 = Field limit // P2 = SOR switch // P3 = SOR offset // P4 = SOR angle contained_by {box {LCorner, RCorner}} max_gradient 4 texture {IsoTexture} no_shadow } box {LCorner*0.9999, RCorner*0.9999 texture {ContTexture}} scale 3.3 translate <-3.3,-0.8, 0> } #end // FRAME 5 #if (frame_number = 5) isosurface { function {f_bicorn(x, y, z,-0.01, 3)} // P0 = Field strength // P1 = Y Scale (inverse). The surface is always the same shape. Setting the scale to 1 gives // a surface with a radius of about 1 unit contained_by {sphere {0, 3}} max_gradient 5.0 texture {IsoTexture} no_shadow scale 1.5 rotate x*-20 } #end // FRAME 6 #if (frame_number = 6) isosurface { function {f_bifolia(x, y, z,-1, 3)} // P0 = Field Strength // P1 = Scale. Setting the scale to 3 gives a surface with a radius of about 1 unit contained_by {box {<-1.0,-0.01,-1.0>, <1.0, 0.8, 1.0>}} max_gradient 7.3 texture {IsoTexture} no_shadow scale 4.5 rotate x*-20 } #end // FRAME 7 #if (frame_number = 7) #declare LCorner = <-1.9,-1.3,-1.3>; #declare RCorner = <1.8, 1.3, 1.3>; isosurface { function {f_blob(x, y, z, 1.4, 1, 0.8, 1.2, 1)} // P0 = X distance between the 2 components // P1 = Strength of component 1 // P2 = Radius component 1 (inv) // P3 = Strength of component 2 // P4 = Radius component 2 (inv) threshold -0.3 contained_by {box {LCorner, RCorner}} max_gradient 1.8 texture {IsoTexture} no_shadow scale 4 } #end // FRAME 8 #if (frame_number = 8) #declare LCorner = <-0.5,-0.5,-0.5>; #declare RCorner = <1.4, 0.5, 0.5>; isosurface { function {f_blob2(x, y, z, 1, 1/0.2, 2, 1)} // P0 = Separation (One comp at origin) // P1 = Size (inv) // P2 = Strength // P3 = Threshold contained_by {box {LCorner, RCorner}} max_gradient 3.9 texture {IsoTexture} no_shadow scale 7 translate x*-3.5 } #end // frame_number = 51 // FRAME 9 #if (frame_number = 9) isosurface { function {f_boy_surface(x, y, z,-0.001, 0.01)} // P0 = Field Strength. Set extremely low to avoid that the shape breaks up. // P1 = Scale. The surface is always the same shape. contained_by {box {<-1.0,-1.45,-0.1>, <1.5, 1.2, 2.2>}} max_gradient 2 texture {IsoTexture} no_shadow scale 3 rotate y*15 rotate x*-20 } #end // FRAME 10 #if (frame_number = 10) #declare LCorner = <-1.0,-0.5,-0.55>; #declare RCorner = <1.0, 0.6, 1.1>; isosurface { function {f_comma(x, y, z, 1)} // P0 = size contained_by {box {LCorner, RCorner}} max_gradient 1.4 texture {IsoTexture} no_shadow scale 5 rotate y*-30 rotate x*-35 translate y*-1.8 } #end // FRAME 11 #if (frame_number = 11) #declare Radius = 2.4; isosurface { function {f_cross_ellipsoids(x, y, z, 0.05, 8, 8, 1)} // P0 = Eccentricity // P1 = Size (inv) // P2 = Diameter // P3 = Threshold contained_by {sphere {0, Radius}} max_gradient 12 texture {IsoTexture} no_shadow scale 2 rotate y*25 rotate x*-20 } #end // FRAME 12 #if (frame_number = 12) #declare LCorner = <-3.2,-0.1,-2.5>; #declare RCorner = <3.2, 2, 2.5>; intersection { isosurface { function {f_crossed_trough(x, y, z,-0.05)} // P0 = Field Strength contained_by {box {LCorner, RCorner}} max_gradient 0.5 texture {IsoTexture} no_shadow } box {LCorner*0.9999, RCorner*0.9999 texture {ContTexture}} scale 1.8 rotate x*-90 } #end // FRAME 13 #if (frame_number = 13) #declare Radius = 8; intersection { isosurface { function {f_cubic_saddle(x, y, z,-0.5)} // P0 = Field Strength contained_by {sphere {0, Radius}} max_gradient 38.1 texture {IsoTexture} no_shadow } sphere {0, Radius-0.00001 texture {ContTexture}} scale 0.8 rotate z*135 rotate x*-20 translate y*1.2 } #end // FRAME 14 #if (frame_number = 14) isosurface { function {f_cushion(x, y, z,-0.25)} // P0 = Field Strength contained_by {box {<-1.1,-1.3,-0.45>, <1.1, 1.3, 1.2>}} max_gradient 2.9 texture {IsoTexture} no_shadow scale 3 rotate y*-145 } #end // FRAME 15 #if (frame_number = 15) isosurface { function {f_devils_curve(x, y, z,-0.2)} //P0= Field Strength contained_by {box {<-1.2,-1.2,-1.2>, <1.2, 1.2, 1.2>}} max_gradient 2.5 texture {IsoTexture} no_shadow scale 4 rotate x*5 } #end // FRAME 16 #if (frame_number = 16) // f_devils_curve_2d : lathe form isosurface { function {f_devils_curve_2d(x, y, z,-1, 0.25, 0.3, 1, 0, 0)} // P0 = Field Strength // P1 = X factor. The X and Y factors control the size of the central feature // P2 = Y factor // If the X factor is slightly stronger than the Y factor, then the side pieces // are linked to the central piece by a horizontal bridge at each corner. // If the Y factor is slightly greater than the X factor, then there is a vertical // gap between the side pieces and the central piece at each corner. // If the X and Y factors are equal each of the four corners meets at a point. // P3 = SOR switch // P4 = SOR offset // P5 = SOR angle contained_by {box {<-0.7,-0.8,-0.8>, <0.7, 0.7, 0.7>}} max_gradient 3.3 texture {IsoTexture} no_shadow scale 4.2 rotate x*-2 translate <3.3,-0.5, 0> } // f_devils_curve_2d : extruded form #declare LCorner = <-0.7,-0.8,-0.01>; #declare RCorner = <0.7, 0.7, 6>; intersection { isosurface { function {f_devils_curve_2d(x, y, z,-1, 0.25, 0.3, 0, 0, 0)} // P0 = Field Strength // P1 = X factor. The X and Y factors control the size of the central feature // P2 = Y factor // If the X factor is slightly stronger than the Y factor, then the side pieces // are linked to the central piece by a horizontal bridge at each corner. // If the Y factor is slightly greater than the X factor, then there is a vertical // gap between the side pieces and the central piece at each corner. // If the X and Y factors are equal each of the four corners meets at a point. // P3 = SOR switch // P4 = SOR offset // P5 = SOR angle contained_by {box {LCorner, RCorner}} max_gradient 1.5 texture {IsoTexture} no_shadow } box {LCorner*0.9999, RCorner*0.9999 texture {ContTexture}} scale 4.2 rotate x*-2 translate <-3.3,-0.5, 0> no_shadow } #end // FRAME 17 #if (frame_number = 17) isosurface { function {f_dupin_cyclid(x, y, z,-.05, 0.27, 0.04, 0.55, 0.0, 1.0)} // P0 = Field Strength // P1 = Major radius of torus // P2 = Minor radius of torus // P3 = X displacement of torus // P4 = Y displacement of torus // P5 = radius of inversion contained_by {box {<1.0,-0.6,-1.6>, <4.3, 0.6, 1.6>}} max_gradient 2.1 texture {IsoTexture} no_shadow scale 1.5 rotate x*-90 } #end // FRAME 18 #if (frame_number = 18) #declare Radius = 1.0; isosurface { function {f_ellipsoid(x, y, z, 1/0.95, 1/0.3, 1/0.95)} // P0 = X scale (inv) // P1 = Y scale (inv) // P2 = Z scale (inv) threshold 1 contained_by {sphere {0, Radius}} max_gradient 2.7 texture {IsoTexture} no_shadow scale 5.5 rotate x*-25 translate y*-1 } #end // FRAME 19 #if (frame_number = 19) isosurface { function {f_enneper(x, y, z,-0.1)} // P0 = Field Strength contained_by {box {<-3.5,-3.5,-3.8>, <3.5, 3.5,-0.25>}} max_gradient 85 texture {IsoTexture} no_shadow scale 1.1 rotate y*15 } #end // FRAME 20 #if (frame_number = 20) #declare Radius = 1.6; isosurface { function {f_flange_cover(x, y, z, 0.01, 35, 1.5, 1.2)} // P0 = Spikiness (1 = sph; <= spikes) // P1 = Size (inv) // P2 = Flange (1 = no; >=flanges) // P3 = Threshold contained_by {sphere {0, Radius}} max_gradient 11 texture {IsoTexture} no_shadow scale 3.45 rotate y*15 rotate x*-30 translate y*-0.1 } #end // FRAME 21 #if (frame_number = 21) #declare LCorner = <-0.0,-0.9,-0.9>; #declare RCorner = <0.8, 0.9, 0.9>; intersection { isosurface { function {f_folium_surface(x, y, z,-0.02, 15, 15)} // P0 = Field Strength // P1 = Neck width factor - the larger you set this, the narrower the neck where the paraboloid meets the plane // P2 = Divergence - the higher the value, the wider the paraboloid gets contained_by {box {LCorner, RCorner}} max_gradient 1.3 texture {IsoTexture} no_shadow } box {LCorner*0.9999, RCorner*0.9999 texture {ContTexture}} scale 5.5 rotate z*90 rotate x*-25 translate y*-1.5 no_shadow } #end // FRAME 22 #if (frame_number = 22) // f_folium_surface_2d : lathe form #declare LCorner = <-0.7,-0.8,-0.7>; #declare RCorner = <0.7, 0.8, 0.7>; intersection { isosurface { function {f_folium_surface_2d(x, y, z,-0.01, 12, 20, 1, 0, 0)} // P0 = Field Strength // P1 = Neck width factor - same as 3d surface if you're revolving it around the Y axis // P2 = Divergence - same as 3d surface if you're revolving it around the Y axis // P3 = SOR switch // P4 = SOR offset // P5 = SOR angle contained_by {box {LCorner, RCorner}} max_gradient 0.5 texture {IsoTexture} no_shadow } box {LCorner*0.9999, RCorner*0.9999 texture {ContTexture}} scale 5 rotate x*3 translate <2.5,-0.5, 0> no_shadow } // f_folium_surface_2d : extruded form #declare LCorner = <-0.7,-0.8,-0.01>; #declare RCorner = <0.7, 0.8, 3>; intersection { isosurface { function {f_folium_surface_2d(x, y, z,-0.01, 12, 20, 0, 0, 0)} // P0 = Field Strength // P1 = Neck width factor - same as 3d surface if you're revolving it around the Y axis // P2 = Divergence - same as 3d surface if you're revolving it around the Y axis // P3 = SOR switch // P4 = SOR offset // P5 = SOR angle contained_by {box {LCorner, RCorner}} max_gradient 0.3 texture {IsoTexture} } box {LCorner*0.9999, RCorner*0.9999 texture {ContTexture}} scale 5 rotate x*3 translate <-5.5,-0.5, 0> no_shadow } #end // FRAME 23 #if (frame_number = 23) isosurface { function {f_glob(x, y, z,-1)} // P0 = Field Strength contained_by {box {<-1.0,-1.5,-1.6>, <1.5, 1.5, 1.6>}} max_gradient 6.5 texture {IsoTexture} no_shadow scale 3.7 rotate z*90 rotate x*10 } #end // FRAME 24 #if (frame_number = 24) isosurface { function {f_heart(x, y, z,-0.001)} // P0 = Field Strength contained_by {box {<-0.8,-1.2,-1.1>, <0.8, 1.2, 1.3>}} max_gradient 0.1 texture {IsoTexture} no_shadow scale 3 rotate y*-90 rotate z*-90 } #end // FRAME 25 #if (frame_number = 25) #declare LCorner = <-3.7,-1.7,-3.7>; #declare RCorner = <3.7, 1.7, 3.7>; isosurface { function {f_helical_torus(x, y, z, 2, 7, 1, 0.1, 1, 0.5, 1, 6, 2.0, 0)} // P0 = Major radius // P1 = Nr of winding loops // P2 = Twistness winding // P3 = Flatness of winding? // P4 = Threshold // P5 = Negative minor radius? // P6 = Another fatness of winding control // P7 = Groove period // P8 = Groove amplitude // P9 = Groove phase contained_by {box {LCorner, RCorner}} max_gradient 13 texture {IsoTexture} no_shadow scale 1.7 rotate x*-45 } #end // FRAME 26 #if (frame_number = 26) #declare LCorner = <-1.5,-2.9,-1.5>; #declare RCorner = <1.5, 2.9, 1.5>; isosurface { function {f_helix1(x, y, z, 1, 8, 0.3, 0.9, 0.6, 0.2, 0)} // P0 = number of helixes // P1 = frequency // P2 = minor radius // P3 = major radius // P4 = Y scale cross section // P5 = cross section // P6 = cross section rotation (¡) contained_by {box {LCorner, RCorner}} max_gradient 1.5 texture {IsoTexture} no_shadow scale 1.9 rotate z*-54 } #end // FRAME 27 #if (frame_number = 27) #declare LCorner = <-1,-2.9,-1>; #declare RCorner = <1, 2.9, 1>; isosurface { function {f_helix2(x, y, z, 0, 8, 0.35, 0.4, 0, 0.5, 0)} // P0 = not used // P1 = frequency // P2 = minor radius // P3 = major radius // P4 = not used // P5 = cross section // P6 = cross section rotation (¡) contained_by {box {LCorner, RCorner}} max_gradient 4.3 texture {IsoTexture} no_shadow scale 2.2 rotate z*-54 } #end // FRAME 28 #if (frame_number = 28) #declare LCorner = <-4,-4,-4>; #declare RCorner = <4, 4, 4>; isosurface { function {f_hex_x(x, y, z, 1)} // P0 = not used threshold 0.6 contained_by {box {LCorner, RCorner}} max_gradient 1 texture {IsoTexture} no_shadow } #end // FRAME 29 #if (frame_number = 29) #declare LCorner = <-4,-4,-4>; #declare RCorner = <4, 4, 4>; isosurface { function {f_hex_y(x, y, z, 1)} // P0 = not used threshold 0.1 contained_by {box {LCorner, RCorner}} max_gradient 1 texture {IsoTexture} no_shadow } #end // FRAME 30 #if (frame_number = 30) #declare Radius = 1.5; intersection { isosurface { function {f_hetero_mf(x, y, z, 1.1, 2.05, 15, 0.26, 0.01, 1)} // P0 = H // P1 = lacunarity // P2 = octaves // P3 = offset // P4 = T // P5 = noise generator type contained_by {sphere {0, Radius}} max_gradient 5.5 texture {IsoTexture} no_shadow } sphere {0, Radius-0.00001 texture {ContTexture}} scale 4.3 translate y*-1.7 } #end // FRAME 31 #if (frame_number = 31) isosurface { function {f_hunt_surface(x, y, z,-0.01)} // P0 = Field Strength contained_by {sphere {0, 3.8}} max_gradient 84 texture {IsoTexture} no_shadow scale 1.2 rotate y*-45 } #end // FRAME 32 #if (frame_number = 32) isosurface { function {f_hyperbolic_torus(x, y, z,-0.005, 1, 0.6)} // P0 = Field Strength // P1 = Major radius: separation between the centres of the tubes at the closest point // P2 = Minor radius: thickness of the tubes at the closest point contained_by {box {<-4,-0.9,-4>, <4, 0.9, 4>}} max_gradient 0.9 texture {IsoTexture} no_shadow scale 1.5 rotate x*-90 } #end // FRAME 33 #if (frame_number = 33) #declare Radius = 0.9; isosurface { function {f_isect_ellipsoids(x, y, z, 5, 1, 18, 1)} // P0 = Eccentricity // P1 = Size (inv) // P2 = Diameter // P3 = Threshold contained_by {sphere {0, Radius}} max_gradient 20 texture {IsoTexture} no_shadow scale 5 rotate y*25 rotate x*-20 no_shadow } #end // FRAME 34 #declare ContainerOn = off; #declare SphereOn = 0; #if (frame_number = 34) #declare LCorner = <-1.0,-1.5,-1.5>; #declare RCorner = <1.0, 1.5, 1.5>; intersection { isosurface { function {f_kampyle_of_eudoxus(x, y, z,-0.001, 0.01, 2)} // P0 = Field Strength // P1 = Dimple: When zero, the two dimples punch right through and meet at the centre. Non-zero values give less dimpling // P2 = Closeness: Higher values make the two planes become closer contained_by {box {LCorner, RCorner}} max_gradient 0.04 texture {IsoTexture} no_shadow } box {LCorner*0.9999, RCorner*0.9999 texture {ContTexture}} scale 3.8 rotate z*90 no_shadow } #end // FRAME 35 #if (frame_number = 35) // f_kampyle_of_eudoxus_2d : lathe form #declare LCorner = <-1.6,-1.1,-1.6>; #declare RCorner = <1.6, 1.15, 1.6>; intersection { isosurface { function {f_kampyle_of_eudoxus_2d(x, y, z,-0.001, 0, 2, 1, 0, 90)} // P0 = Field Strength // P1 = Dimple: When zero, the two dimples punch right through and meet at the centre. Non-zero values give less dimpling // P2 = Closeness: Higher values make the two planes become closer // P3 = SOR switch // P4 = SOR offset // P5 = SOR angle contained_by {box {LCorner, RCorner}} max_gradient 0.2 texture {IsoTexture} } box {LCorner*0.9999, RCorner*0.9999 texture {ContTexture}} scale 1.9 rotate x*-1 translate <3,-1, 0> no_shadow } // f_kampyle_of_eudoxus_2d : extruded form #declare LCorner = <-1.1,-1.6,-0.01>; #declare RCorner = <1.15, 1.6, 8>; intersection { isosurface { function {f_kampyle_of_eudoxus_2d(x, y, z,-0.001, 0, 2, 0, 0, 0)} // P0 = Field Strength // P1 = Dimple: When zero, the two dimples punch right through and meet at the centre. Non-zero values give less dimpling // P2 = Closeness: Higher values make the two planes become closer // P3 = SOR switch // P4 = SOR offset // P5 = SOR angle contained_by {box {LCorner, RCorner}} max_gradient 0.05 texture {IsoTexture} no_shadow } box {LCorner*0.9999, RCorner*0.9999 texture {ContTexture}} scale 1.9 rotate z*90 rotate x*-1 translate <-3.6,-1, 0> no_shadow } light_source {<0,-1,-0.5> rgb 0.3 shadowless} #end // FRAME 36 #if (frame_number = 36) isosurface { function {f_klein_bottle(x, y, z,-0.0005)} // P0 = Field strength contained_by {sphere {0, 4.2}} max_gradient 2.7 texture {IsoTexture} no_shadow scale 1.3 rotate y*110 rotate x*5 } #end // FRAME 37 #if (frame_number = 37) #declare LCorner = <-7.4,-7.4,-7.4>; #declare RCorner = <7.4, 7.4, 7.4>; intersection { isosurface { function {f_kummer_surface_v1(x, y, z,-0.01)} // P0 = Field Strength contained_by {box {LCorner, RCorner}} max_gradient 8.3 texture {IsoTexture} no_shadow } box {LCorner*0.9999, RCorner*0.9999 texture {ContTexture}} scale 0.55 rotate y*-25 } #end // FRAME 38 #if (frame_number = 38) isosurface { function {f_kummer_surface_v2(x, y, z,-0.0005,-0.3,-0.97, 0)} // P0 = Field Strength // P1 = Rod width (negative): Setting this parameter to larger negative values increases the diameter of the rods // P2 = Divergence (negative): Setting this number to -1 causes the rods to become approximately cylindrical. // Larger negative values cause the rods to become fatter further from the origin // Smaller negative values cause the rods to become narrower away from the origin, and have a finite length // P3 = Influences the length of half of the rods. Changing the sign affects the other half of the rods. 0 has no effect contained_by {box {-3.8, 3.8}} max_gradient 0.2 texture {IsoTexture} no_shadow scale 1.1 rotate y*25 rotate x*-5 } #end // FRAME 39 #if (frame_number = 39) isosurface { function {f_lemniscate_of_gerono(x, y, z,-0.1)} // P0 = Field Strength contained_by {box {<-1.05,-0.55,-0.55>, <1.05, 0.55, 0.55>}} max_gradient 0.3 texture {IsoTexture} no_shadow scale 6 rotate y*15 } #end // FRAME 40 #if (frame_number = 40) // f_ lemniscate_of_gerono_2d : lathe form #declare LCorner = <-3,-1,-3>; #declare RCorner = <3, 1, 3>; isosurface { function {f_lemniscate_of_gerono_2d(x, y, z,-0.1, 1, 1, 1, 2,-45)} // P0 = Field Strength // P1 = Size: increasing this makes the 2d curve larger and less rounded // P2 = Width: increasing this makes the 2d curve flatter // P3 = SOR switch // P4 = SOR offset // P5 = SOR angle contained_by {box {LCorner, RCorner}} max_gradient 2.8 texture {IsoTexture} scale 1.4 rotate x*-15 translate <2.0,-2.4, 0> no_shadow } // f_lemniscate_of_gerono_2d : extruded form #declare LCorner = <-3,-1,-0.01>; #declare RCorner = <3, 1, 8>; intersection { isosurface { function {f_lemniscate_of_gerono_2d(x, y, z,-0.1, 1, 1, 0, 2,-45)} // P0 = Field Strength // P1 = Size: increasing this makes the 2d curve larger and less rounded // P2 = Width: increasing this makes the 2d curve flatter // P3 = SOR switch // P4 = SOR offset // P5 = SOR angle contained_by {box {LCorner, RCorner}} max_gradient 5 texture {IsoTexture} no_shadow } box {LCorner*0.9999, RCorner*0.9999 texture {ContTexture}} scale 1.4 rotate z*45 rotate x*-3 translate <-4.8,-2.4, 0> no_shadow } #end // FRAME 41 #if (frame_number = 41) #declare LCorner = <-1,-0.05,-1>; #declare RCorner = <1, 0.05, 1>; intersection { isosurface { function {f_mesh1(x, y, z, 1/8, 1/8, 1/10, 0.01, 1/10)} // P0 = X frequency // P1 = Z frequency // P2 = scale (X-Z) // P3 = amplitude // P4 = scale Y threshold 0.001 contained_by {box {LCorner, RCorner}} max_gradient 0.2 texture {IsoTexture} no_shadow } box {LCorner*0.9999, RCorner*0.9999 texture {ContTexture}} scale 6 rotate x*-30 } #end // FRAME 42 #if (frame_number = 42) isosurface { function {f_mitre(x, y, z,-0.5)} // P0 = Field Strength contained_by {box {<-0.4,-1,-1>, <0.4, 1, 1>}} max_gradient 3.1 texture {IsoTexture} no_shadow scale 4.5 rotate y*-45 } #end // FRAME 43 #if (frame_number = 43) #declare LCorner = <-10,-4,-4>; #declare RCorner = <6, 4, 4>; intersection { isosurface { function {f_nodal_cubic(x, y, z,-0.005)} // P0 = Field Strength contained_by {box {LCorner, RCorner}} max_trace 3 max_gradient 0.4 texture {IsoTexture} no_shadow } box {LCorner*0.9999, RCorner*0.9999 texture {ContTexture}} scale 0.9 rotate <0, 110, 0> no_shadow } #end // FRAME 44 #if (frame_number = 44) isosurface { function {f_odd(x, y, z,-0.1)} // P0 = Field Strength contained_by {box {<-1.05,-1.3,-0.45>, <1.05, 1.3, 1.1>}} max_gradient 1.0 texture {IsoTexture} no_shadow scale 3.5 rotate y*-45 translate x*0.8 } #end // FRAME 45 #if (frame_number = 45) isosurface { function {f_ovals_of_cassini(x, y, z,-0.1, 0.4, 0.18, 6)} // P0 = Field strength // P1 = Major radius - like the major radius of a torus // P2 = Filling. Zero for a torus. With higher values the hole in the middle starts to fill up. Even higher values give an ellipsoid with a dimple // P3 = Thickness. Higher values give plumper results contained_by {box {<-0.82,-0.35,-0.82>, <0.82, 0.35, 0.82>}} max_gradient 0.4 texture {IsoTexture} no_shadow scale 6 rotate x*-45 } #end // FRAME 46 #if (frame_number = 46) isosurface { function {f_paraboloid(x, y, z,-1)} // P0 = Field Strength contained_by {box {<-1.4,-0.1,-1.4>, <1.4, 1.9, 1.4>}} max_gradient 3.2 texture {IsoTexture} no_shadow scale 3.5 rotate x*20 translate y*-3.5 } #end // FRAME 47 #if (frame_number = 47) isosurface { function {f_parabolic_torus(x, y, z,-0.1, 0.4, 0.5)} // P0 = Field Strength // P1 = Major radius // P2 = Minor radius contained_by {box {<-1.4,-0.4,-0.4>, <1.4, 0.4, 1.2>}} max_gradient 0.7 texture {IsoTexture} no_shadow scale 4.5 rotate x*-92 rotate y*-8 translate y*-1.6 } #end // FRAME 48 #if (frame_number = 48) #declare Radius = 4; intersection { isosurface { function {f_ph(x, y, z)} threshold 0.5 contained_by {sphere {0, Radius}} max_gradient 2 texture {IsoTexture} } sphere {0, Radius - 0.0001 texture {ContTexture}} } #end // FRAME 49 #if (frame_number = 49) isosurface { function {f_pillow(x, y, z, 1)} // P0 = Field Strength contained_by {box {<-1.2,-1.2,-1.2>, <1.2, 1.2, 1.2>}} max_gradient 5.9 texture {IsoTexture} no_shadow scale 2.7 rotate y*45 rotate x*-20 } #end // FRAME 50 #if (frame_number = 50) isosurface { function {f_piriform(x, y, z, 0.7)} // P0 = Field Strength contained_by {box {<0,-0.4,-0.4>, <1, 0.4, 0.4>}} max_gradient 0.9 texture {IsoTexture} no_shadow scale 10 rotate y*-20 translate x*-4 } #end // FRAME 51 #if (frame_number = 51) // f_piriform_2d : lathe form #declare LCorner = <-0.4,-0.1,-0.4>; #declare RCorner = <0.4, 1.1, 0.4>; isosurface { function {f_piriform_2d(x, y, z,-1, 1,-1, 0.9, 1, 0,-90)} // P0 = Field Strength // P1 = Size factor1: increasing this makes the curve larger // P2 = Size factor 2: making this less negative makes the curve larger but also thinner // P3 = Flatness: increasing this makes the curve fatter // P4 = SOR switch // P5 = SOR offset // P6 = SOR angle contained_by {box {LCorner, RCorner}} max_gradient 1.4 texture {IsoTexture} scale 7.5 translate <3,-4.6, 0> no_shadow } // f_piriform_2d : extruded form #declare LCorner = <-0.4,-0.4,-0.01>; #declare RCorner = <1.1, 0.4, 7>; intersection { isosurface { function {f_piriform_2d(x, y, z,-1, 1,-1, 0.9, 0, 0, 0)} // P0 = Field Strength // P1 = Size factor1: increasing this makes the curve larger // P2 = Size factor 2: making this less negative makes the curve larger but also thinner // P3 = Flatness: increasing this makes the curve fatter // P4 = SOR switch // P5 = SOR offset // P6 = SOR angle contained_by {box {LCorner, RCorner}} max_gradient 1.4 texture {IsoTexture} } box {LCorner*0.9999, RCorner*0.9999 texture {ContTexture}} scale 7.5 rotate z*90 rotate y*1 translate <-3.3,-4.6, 0> } #end // FRAME 52 #if (frame_number = 52) #declare LCorner = <-0.3, 0,-0.3>; #declare RCorner = <0.3, 1, 0.3>; isosurface { function {f_poly4(x, y, z, 0, 1,-1, 0, 0)} // P0 = Constant // P1 = Y coefficient // p2 = Y2 coefficient // p3 = Y3 coefficient // p4 = Y4 coefficient contained_by {box {LCorner, RCorner}} max_gradient 1.4 texture {IsoTexture} scale 8 translate y*-4 no_shadow } #end // FRAME 53 #if (frame_number = 53) #declare Radius = 4; intersection { isosurface { function {f_polytubes(x, y, z, 8,-1,-1/100,-0.02, 0.1,-0.25)} // P0 = nr of wires // P1 = radial onset (around Y) inverse // P2 = radial scale (around Y) // P3 = profile shape // positive values = parabolish becoming sharper ith higher values // P4 = amplitude pos/neg part of profile // P5 = amplitude profile threshold 0.4 contained_by {sphere {0, Radius}} max_gradient 28 texture {IsoTexture} no_shadow } sphere {0, Radius-0.00001 texture {ContTexture}} scale 1.6 rotate y*2 rotate x*-18 } #end // FRAME 54 #if (frame_number = 54) #declare LCorner = <-5.5,-7.3,-5.5>; #declare RCorner = <5.5, 7.3, 5.5>; isosurface { function {f_quantum(x, y, z, 0)} // P0 = Not used contained_by {box {LCorner, RCorner}} max_gradient 6 texture {IsoTexture} scale 0.7 rotate x*-20 no_shadow } #end // FRAME 55 #if (frame_number = 55) isosurface { function {f_quartic_paraboloid(x, y, z,-0.01)} // P0 = Field Strength contained_by {box {<-1.45,-0.1,-1.45>, <1.45, 2.5, 1.45>}} max_gradient 0.2 texture {IsoTexture} no_shadow scale 3 rotate y*45 rotate x*20 translate y*-4 } #end // FRAME 56 #if (frame_number = 56) #declare LCorner = <-3.5,-3.0,-3.5>; #declare RCorner = <3.5, 3.0, 3.5>; intersection { isosurface { function {f_quartic_saddle(x, y, z, 0.05)} // P0 = Field Strength contained_by {box {LCorner, RCorner}} max_gradient 11 texture {IsoTexture} } box {LCorner*0.9999, RCorner*0.9999 texture {ContTexture}} scale 1.2 rotate y*5 rotate x*-15 no_shadow } #end // FRAME 57 #if (frame_number = 57) isosurface { function {f_quartic_cylinder(x, y, z,-1, 0.8, 0.2)} // P0 = Field Strength // P1 = Diameter of the "bubble" // P2 = Controls the width of the tube and the vertical scale of the "bubble" contained_by {box {<-0.85,-2.5,-0.85>, <0.85, 2.5, 0.85>}} max_gradient 8.8 texture {IsoTexture} scale 2.0 no_shadow } #end // FRAME 58 #if (frame_number = 58) isosurface { function {f_r(x, y, z)} threshold 0.7 contained_by {sphere {0, 0.75}} max_gradient 1 texture {IsoTexture} scale 5 } #end // FRAME 59 #if (frame_number = 59) #declare Radius = 4; isosurface { function {f_sphere(x, y, z, (Radius-0.5)) + (-f_ridge(x*3, y*3, z*3, 1, 3, 1, 0.2, 0, 0)*0.9)} // P0 = Lambda // P1 = Octaves // P2 = Omega // P3 = Offset // P4 = Ridge // P5 = noise generator type [0,1,2,3] contained_by {sphere {0, Radius*1.1}} max_gradient 5 texture {IsoTexture} } #end // FRAME 60 #if (frame_number = 60) #declare Radius = 4; isosurface { function {f_sphere(x, y, z, Radius-0.5) + (-f_ridged_mf(x*2, y*2, z*3, 2, 3, 1, 0.1, 1, 0)*2)} // P0 = H // P1 = Lacunarity // P2 = Octaves // P3 = Offset // P4 = Gain // P5 = noise generator type [0,1,2,3] contained_by {sphere {0, Radius*1.1}} max_gradient 10 texture {IsoTexture} } #end // FRAME 61 #if (frame_number = 61) #declare LCorner = <-1.1,-1.1,-1.1>; #declare RCorner = <1.1, 1.1, 1.1>; isosurface { function {f_rounded_box(x, y, z, 0.3, 1, 1, 1)} // P0 = radius rounded corner // P1 = scale x // P2 = scale y // P3 = scale z contained_by {box {LCorner, RCorner}} max_gradient 1 texture {IsoTexture} scale 3 rotate y*-35 rotate x*-20 translate <0, 0, 0> no_shadow } #end // FRAME 62 #if (frame_number = 62) #declare Radius = 1.01; isosurface { function {f_sphere(x, y, z, 1)} // P0 = Radius contained_by {sphere {0, Radius}} max_gradient 1.0 texture {IsoTexture} scale 4 no_shadow } #end // FRAME 63 #if (frame_number = 63) #declare Radius = 2.5; isosurface { function {f_spikes(x, y, z, 0.04, 5.6,-4, 0.1, 1)} // P0 = Spikiness // P1 = Hollowness // P2 = Size (<0 with thresh 0) // P3 = Roundness // P4 = Fatness contained_by {sphere {0, Radius}} max_gradient 11 texture {IsoTexture} scale 2 rotate y*30 rotate x*-18 no_shadow } #end // FRAME 64 #if (frame_number = 64) #declare LCorner = <-1.2,-0.2,-1.2>; #declare RCorner = <1.2, 0.7, 1.2>; intersection { isosurface { function {f_spikes_2d(x, y, z, 0.7, 15, 15, 2.2)} // P0 = Height central spike // P1 = X frequency of spikes // P2 = Z frequency of spikes // P3 = Height dimming from center accuracy 0.0001 contained_by {box {LCorner, RCorner}} max_gradient 10 texture {IsoTexture} no_shadow } box {LCorner*0.9999, RCorner*0.9999 texture {ContTexture}} scale 4.9 rotate x*-25 translate y*-0.7 } #end // FRAME 65 #if (frame_number = 65) #declare LCorner = <-1,-0.05,-1>; #declare RCorner = <1, 0.05, 1>; isosurface { function {f_spiral(x, y, z, 0.2, 0.04, 1, 0, 0, 1)} // P0 = distance between windings // P1 = Y thickness // P2 = outer diameter // P3 = not used // P4 = not used // P5 = cross section shape contained_by {box {LCorner, RCorner}} max_gradient 1.3 texture {IsoTexture} scale 6.3 rotate x*-30 no_shadow } #end // FRAME 66 #if (frame_number = 66) isosurface { function {f_steiners_roman(x, y, z,-1)} // P0 = Field Strength contained_by {sphere {0, 0.6}} max_gradient 0.3 texture {IsoTexture} scale 8.5 rotate y*25 rotate x*-25 no_shadow } #end // FRAME 67 #if (frame_number = 67) #declare Radius = 2.4; intersection { isosurface { function {f_strophoid(x, y, z,-0.2, 2, 0.5, 0.9)} // P0 = Field Strength // P1 = Size of bulb. Larger values give larger bulbs. Negative values give a bulb on the other side of the plane // P2 = Sharpness. // When 0, the bulb is like a sphere that just touches the plane. // When positive, there is a crossover point // When negative the bulb simply bulges out of the plane like a pimple // P3 = Flatness. Higher values make the top end of the bulb fatter contained_by {sphere {0, 2.4}} max_gradient 1.4 texture {IsoTexture} } sphere {0, Radius-0.00001 texture {ContTexture}} scale 2 rotate y*-28 rotate x*10 translate x*0.6 no_shadow } #end // FRAME 68 #if (frame_number = 68) // f_strophoid_2d : lathe form #declare Radius = 8.5; isosurface { function {f_strophoid_2d(x, y, z, 0.02,-8, 0.8, 0.3, 1, 0, 0)} // P0 = Field Strength // P1 = Size of bulb // Larger values give larger bulbs // Negative values give a bumb on the other side of the plane // P2 = Sharpness // When 0, the bulb is like a sphere that just touches the plane. // When positive, there is a crossover point // When negative the bulb simply bulges out of the plane like a pimple // P3 = Flatness. Higher values make the top end of the bulb fatter // P4 = SOR switch // P5 = SOR offset // P6 = SOR angle contained_by {sphere {0, Radius}} max_gradient 1.4 texture {IsoTexture} scale 0.4 rotate x*-10 translate <2.6,-1, 0> } // f_strophoid_2d : extruded form #declare LCorner = <-1.0,-8.0,-0.01>; #declare RCorner = <8.5, 8.0, 14>; intersection { isosurface { function {f_strophoid_2d(x, y, z, 0.02,-8, 0.8, 0.3, 0, 0, 0)} // P0 = Field Strength // P1 = Size of bulb // Larger values give larger bulbs // Negative values give a bumb on the other side of the plane // P2 = Sharpness // When 0, the bulb is like a sphere that just touches the plane. // When positive, there is a crossover point // When negative the bulb simply bulges out of the plane like a pimple // P3 = Flatness. Higher values make the top end of the bulb fatter // P4 = SOR switch // P5 = SOR offset // P6 = SOR angle contained_by {box {LCorner, RCorner}} max_gradient 1.6 texture {IsoTexture} } box {LCorner*0.9999, RCorner*0.9999 texture {ContTexture}} scale 0.4 rotate x*-10 translate <-5,-1, 0> } #end // FRAME 69 #if (frame_number = 69) #declare Radius = 1.4; isosurface { function {-f_superellipsoid(x, y, z, 0.3, 0.5)} // P0 = rounding NS // P1 = rounding EW contained_by {sphere {0, Radius}} max_gradient 0.9 texture {IsoTexture} scale 3.8 rotate y*-40 rotate x*-20 no_shadow } #end // FRAME 70 #if (frame_number = 70) isosurface { function {f_sphere(x, y, z, 1) + sin(f_th(x, y, z)*20)*0.05*(1-y*y)} contained_by {sphere {0, 1.1}} max_gradient 1.5 texture {IsoTexture} scale 4 rotate x*-35 } #end // FRAME 71 #if (frame_number = 71) #declare LCorner = <-1,-0.25,-1>; #declare RCorner = <1, 0.25, 1>; isosurface { function {f_torus(x, y, z, 0.8, 0.2)} // P0 = major radius // P1 = minor radius contained_by {box {LCorner, RCorner}} max_gradient 1 texture {IsoTexture} scale 5.5 rotate x*-30 no_shadow } #end // FRAME 72 #if (frame_number = 72) isosurface { function {f_torus2(x, y, z,-1, 0.4, 0.07)} // P0 = Field Strength // P1 = Major radius // P2 = Minor radius contained_by {box {<-0.5,-0.1,-0.5>, <0.5, 0.1, 0.5>}} max_gradient 0.6 texture {IsoTexture} scale 12 rotate x*-35 no_shadow } #end // FRAME 73 #if (frame_number = 73) isosurface { function {f_torus_gumdrop(x, y, z,-0.01)} // P0 = Field Strength contained_by {sphere {0, 2.1}} max_gradient 1.1 texture {IsoTexture} no_shadow scale 2 rotate y*18 } #end // FRAME 74 #if (frame_number = 74) #declare LCorner = <-3.3,-0.2,-2.5>; #declare RCorner = <3.3, 3.5, 3.0>; intersection { isosurface { function {f_umbrella(x, y, z,-0.2)} // P0 = Field Strength contained_by {box {LCorner, RCorner}} max_gradient 2.6 texture {IsoTexture} no_shadow } box {LCorner*0.9999, RCorner*0.9999 texture {ContTexture}} scale 1.5 rotate x*60 translate y*-0.7 } #end // FRAME 75 #if (frame_number = 75) #declare LCorner = <-1.8,-0.15,-1.8>; #declare RCorner = <1.8, 1.1, 1.8>; intersection { isosurface { function {f_witch_of_agnesi(x, y, z,-0.09, 0.02)} // P0 = Field Strength // P1 = Controls width of the spike. The height of the spike is always about 1 unit contained_by {box {LCorner, RCorner}} max_gradient 0.6 texture {IsoTexture} no_shadow } box {LCorner*0.9999, RCorner*0.9999 texture {ContTexture}} scale 3 rotate x*-20 translate y*-1.9 } #end // FRAME 76 #if (frame_number = 76) // f_witch_of_agnesi_2d : lathe form #declare LCorner = <-1.6,-0.2,-2.2>; #declare RCorner = <1.6, 2.2, 2.2>; intersection { isosurface { function {f_witch_of_agnesi_2d(x, y, z,-0.2, 0.2, 0.08, 1, 0, 0)} // P0 = Field Strength // P1 = Controls width of the spike. // P2 = Controls the height of the spike // P3 = SOR switch // P4 = SOR offset // P5 = SOR angle contained_by {box {LCorner, RCorner}} max_gradient 1.9 texture {IsoTexture} } box {LCorner*0.9999, RCorner*0.9999 texture {ContTexture}} scale 1.8 rotate x*-15 translate <3.1,-1.5, 0> } // f_witch_of_agnesi_2d : extruded form #declare LCorner = <-1.6,-0.2,-2.2>; #declare RCorner = <1.6, 2.2, 2.2>; intersection { isosurface { function {f_witch_of_agnesi_2d(x, y, z,-0.2, 0.2, 0.08, 0, 0, 0)} // P0 = Field Strength // P1 = Controls width of the spike. // P2 = Controls the height of the spike // P3 = SOR switch // P4 = SOR offset // P5 = SOR angle contained_by {box {LCorner, RCorner}} max_gradient 0.8 texture {IsoTexture} } box {LCorner*0.9999, RCorner*0.9999 texture {ContTexture}} scale 1.8 rotate x*-15 translate <-3.1,-1.5, 0> } #end // FRAME 77 #if (frame_number = 77) #declare Radius = 4; isosurface { function {f_sphere(x, y, z, 4) + f_noise3d(x*1/0.5, y*1/0.3, z*1/0.4)*0.8} contained_by {sphere {0, Radius}} evaluate 1, 10, 0.99 max_gradient 1.4 texture {IsoTexture} } #end // FRAME 78 #if (frame_number = 78) #declare Radius = 4; isosurface { // function {f_sphere(x, y, z, 4) + f_noise_generator (x*1/0.5, y*1/0.3, z*1/0.4, 1)*0.8} function {f_sphere(x, y, z, 4) + f_noise_generator(x, y, z, 1)*0.8} // P0 = type of noise_generator used (0, 1, 2 or 3) contained_by {sphere {0, Radius}} evaluate 1, 10, 0.99 max_gradient 1.4 texture {IsoTexture} } #end
Pour les images, cliquez sur le titre en commentaire qui correspond à la figure choisie pour faire apparaître un "popup" qui contiendra le résultat (Ex : si vous cliquez le commentaire "// FRAME 1", vous aurez la fonction "f_algbr_cyl1" en image).
Et voici le fichier de lancement :
; Persistence Of Vision raytracer version 3.5 sample file. Input_File_Name = i_internal.pov Initial_Frame = 1 Final_Frame = 78 Initial_Clock = 0 Final_Clock = 1 Pause_when_Done = off Cyclic_Animation = off ;;insures it reaches 1.0