# i_algbr Library part 2

 See the previous page for details of "Field Strength", "Field Limit", "SOR switch", "SOR offset" and "SOR angle" parameters A Folium Surface looks something like a paraboloid glued to a plane. The parameters are: Field Strength Neck width factor - the larger you set this, the narrower the neck where the paraboloid meets the plane. Divergence - the higher you set this value, the wider the paraboloid gets. ``` function { - f_folium_surface(x,y,z,0.01,3,5)} ``` The 2d folium curve can be rotated around the X axis to generate the same 3d surface as the above, or it can be extruded in the Z direction (by switching the SOR switch off), or it can be rotated around the Y axis, like this. The parameters are: Field Strength Neck width factor - same as the 3d surface if you're revolving it around the Y axis. Divergence - same as the 3d surface if you're revolving it around the Y axis. SOF switch SOF offset SOF angle ``` function { f_folium_surface_2d(x,y,z,0.01,1,1,1,0,0)} ``` The "Torus Gumdrop" surface us something like a torus with a couple of gumdrops hanging off the end. The parameters are: Field Strength ``` function { - f_torus_gumdrop(x,y,z,0.01)} ``` This is the "Hunt Surface". The parameters are: Field Strength ``` function { -f_hunt_surface(x,y,z,0.1)} ``` This is a "Hyperbolic Torus". The parameters are: Field Strength Major radius: separation between the centres of the tubes at the closest point. Minor radius: thickness of the tubes at the closest point. ``` function { - f_hyperbolic_torus (x, y, z, 1, 0.6, 0.4)} ``` The Kampyle of Eudoxus" is like two infinite planes with a dimple at the centre. The parameters are: Field Strength Dimple: When zero, the two dimples punch right through and meet at the centre. Non-zero values give less dimpling. Closeness: Higher values make the two planes become closer. ``` function { f_kampyle_of_eudoxus(x,y,z,1,0,1)} ``` The 2d curve that generates the above surface can be extruded in the Z direction or rotated about various axes by using the SOR parameters. In this case I've created the same shape as in the 3d version. The parameters are: Field Strength Dimple: When zero, the two dimples punch right through and meet at the centre. Non-zero values give less dimpling. Closeness: Higher values make the two planes become closer. SOR switch SOR offset SOR angle ``` function { - f_kampyle_of_eudoxus_2d (x, y, z, 1, 0, 1, 1, 0, 90)} ``` The Klein Bottle is the 3d equivalent of the Moebius Strip. It's a surface with only one side. It's hard to see what's going on from one side, so I've made the surface partially transparent so that those of you with good imaginations can get a hint of how the whole shape works. The parameters are: Field Strength ``` function { f_klein_bottle(x,y,z,-1)} ``` The Kummer surface consists of a collection of radiating rods. The parameters are: Field Strength ``` function { -f_kummer_surface_v1(x,y,z,0.01)} ``` Version 2 of the Kummer Surface only looks like radiating rods when the parameters are set to particular negative values. For positive values it tends to look rather like a superellipsoid. The parameters are: Field Strength Rod width (negative): Setting this parameter to larger negative values increases the diameter of the rods 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 numbers cause the rods to become narrower away from the origin, and have a finite length. Influences the length of half of the rods. Changing the sign affects the other half of the rods. 0 has no effect. ``` function {f_kummer_surface_v2 (x, y, z, 0.001, -2, -0.94, 0.4)} ``` The "Lemniscate_of_Gerono" surface is an hourglass shape. Two teardrops with their ends connected. The parameters are: Field Strength ``` function { f_lemniscate_of_gerono(x,y,z,1)} ``` The 2d version of the Lemniscate can be extruded in the Z direction, or used as a surface of revolution to generate the equivalent of the 3d version, or revolved in different ways. To produce the 3d Lemniscate, switch SOR on and set the SOR offset to zero and the SOR angle to 90. I've cut the surface in half so that you can see the figure-of-eight curve that sweeps round the Y axis to generate this surface of revolution. The parameters are: Field Strength Size: increasing this makes the 2d curve larger and less rounded. Width: increasing this makes the 2d curve fatter. SOR switch SOR offset SOR angle ``` function { f_lemniscate_of_gerono_2d (x,y,z,-0.1,1,1,1,2,-45)} ``` This paraboloid is the surface of revolution that you get if you rotate a parabola about the Y axis. To do this without using the built in function declare a function to represent the parabola y - x*x = 0, then use substitution of variables to perform the SOR operation: ```#declare F = function {y - x*x} isosurface { function { F(sqrt(x*x + z*z), y, z)} ``` The parameters are: Field Strength ``` function { - f_paraboloid(x,y,z,1)} ``` This is a parabolic torus. The parameters are: Field Strength Major radius. Minor radius. ``` function { - f_parabolic_torus(x,y,z, 0.1, 0.6, 0.5)} ``` The piriform surface looks rather like half a lemniscate. The parameters are: Field Strength ``` function { f_piriform(x, y, z, 1)} ``` The 2d version of the Piriform can be extruded in the Z direction, or used as a surface of revolution to generate the equivalent of the 3d version, or revolved in different ways. This might be a useful shape for making hot air balloons - reduce the fatness parameter to make a weather balloon. The parameters are: Field Strength Size factor 1: increasing this makes the curve larger. Size factor 2: making this less negative makes the curve larger but also thinner. Fatness: increasing this makes the curve fatter. SOR switch SOR offset SOR angle ``` function { f_piriform_2d (x, y, z, -1, 1, -1, 1, 1, 0, -90)} ```