# i_nfunc Library part 1 f_ellipsoid generates spheres and ellipsoids. The parameters are: X scale (inverse) Y scale (inverse) Z scale (inverse) Setting these scaling parameters to 1/n gives exactly the same effect as performing a scale operation to increase the scaling by n in the corresponding direction. ``` function {f_ellipsoid(x,y,z,1,3,1)} threshold 1 ``` f_blob generates blobs that are similar to a CSG blob with two spherical components. For some unknown reason, this function only seems to work with negative threshold settings. (It took me lots of attempts with blank images before I thought of trying that.) The parameters are: X distance between the two components Blob strength of component 1 Inverse blob radius of component 1 Blob strength of component 2 Inverse blob radius of component 2 ``` function {f_blob(x,y,z,1,1,0.7,1,1)} threshold -0.01 ``` This is f_flange_cover The parameters are: Spikiness. Set this to very low values to increase the spikes. Set it to 1 and you get a sphere. Inverse size. Increase this to decrease the size of the surface. (The other parameters also drastically affect the size, but this parameter has no other effects). Flange. Increase this to increase the flanges that appear between the spikes. Set it to 1 for no flanges. Threshold. Setting this parameter to 1 and the threshold to zero has exactly the same effect as setting this parameter to zero and the threshold to -1. ``` function {f_flange_cover(x,y,z,0.01,35,1.5,1)}``` The f_blob2 surface is similar to a CSG blob with two spherical components. The parameters are: Separation. One blob component is at the origin, and the other is this distance away on the X axis. Inverse size. Increase this to decrease the size of the surface. Blob strength. Threshold. Setting this parameter to 1 and the threshold to zero has exactly the same effect as setting this parameter to zero and the threshold to -1. ``` function {f_blob2(x,y,z,1,3,2,1)} ``` The f_cross_ellipsoids surface is like the union of three crossed ellipsoids, one oriented along each axis. The parameters are: Eccentricity. When less than 1, the ellipsoids are oblate, when greater than 1 the ellipsoids are prolate, when zero the ellipsoids are spherical (and hence the whole surface is a sphere). Inverse size. Increase this to decrease the size of the surface. Diameter. Increase this to increase the size of the ellipsoids. Threshold. Setting this parameter to 1 and the threshold to zero has exactly the same effect as setting this parameter to zero and the threshold to -1. ``` function {f_cross_ellipsoids(x,y,z,0.1,8,4,1)} ``` The f_isect_ellipsoids surface is like the intersection of three crossed ellipsoids, one oriented along each axis. The parameters are: Eccentricity. When less than 1, the ellipsoids are oblate, when greater than 1 the ellipsoids are prolate, when zero the ellipsoids are spherical (and hence the whole surface is a sphere). Inverse size. Increase this to decrease the size of the surface. Diameter. Increase this to increase the size of the ellipsoids. Threshold. Setting this parameter to 1 and the threshold to zero has exactly the same effect as setting this parameter to zero and the threshold to -1. ``` f_isect_ellipsoids(x,y,z,3,1,4,1) ``` This is the f_spikes surface. The parameters are: Spikiness. Set this to very low values to increase the spikes. Set it to 1 and you get a sphere. Hollowness. Increasing this causes the sides to bend in more. Size. Increasing this increases the size of the object. Roundness. This parameter has a subtle effect on the roundness of the spikes. Fatness. Increasing this makes the spikes fatter. ``` function { - f_spikes(x,y,z,0.04,8,1,1,1)} threshold -1 ``` This function can be used to generate the surface of revolution of any polynomial up to degree 4. The parameters are: Constant Y coefficient. Y2 coefficient. Y3 coefficient. Y4 coefficient. To put it another way: If we call the parameters A, B, C, D, E; then this function generates the surface of revolution formed by revolving "x = A + By + Cy2 + Dy3 + Ey4" around the Y axis. ``` function {f_poly4(x,y,z,0,1,-1,0,0)} ```