biorhythm - cymatics (2/3)

Visualization of the Chladni figures

A simple formula for the amplitude of a standing wave for a point (x,y) on a quadratic surface with a support in the center exists :

cos(n * x * pi / l) * cos(m * z * pi / l) - 
cos(m * x * pi / l) * cos(n * z * pi / l)

with l is the length of the plate and m and n are integer factors for the various modes.
Locations where this formula evaluates (close) to zero are the areas where the sand settles and forms the Chladni pattern.

More information and background at the amazing website of Paul Bourke.

POVRay

For the visualization of the Chladni figures I used POVRay, a free 3D visualization software that achieves an amazing rendering quality by using raytracing with radiosity and photon-mapping and is capable of volume rendering.
Scenes in POVRay are  defined in a textual scene description language, similar to a programming language. POVRay is not limited to rendering polygons and surface meshes, but can also directly render various forms of mathematical formulas, like parametric and implicit surfaces.
Implicit surfaces or isosurfaces are defined by a equation f(x,y,z)=0 which means their surface is defined and rendered in space where their function evaluates to zero.
With isosurfaces we can directly render the Chladni figure in POVRay. However the node-lines are currently still infinitely thin, because only the zeroes of the function are rendered. In reality, the sand collects also on locations, where the vibrations are very soft. but not zero. Therefore I thickened the isosurface a bit by taking it's absolute value and subtracting a small constant, that controls the thickness of the nodal lines.
Here the first simple POVRay scene:

camera{ 
  orthographic
  up y 
  right x 
} 

background { rgb 1 }

#declare l = 0.4;                            
#declare n = 5; 
#declare m = 1;

isosurface {
  function {                   
    abs(cos(n*pi*x/l) * cos(m*pi*y/l) - cos(m*pi*x/l) * cos(n*pi*y/l)) -0.1
  }
  contained_by { 
    box { <-l,-l,0>, <l,l,0.1> }    
  } 
}

Now the parameters can be varied and animated. In the visualization we are not limited to integer values but can also use continous values. In the next example n=5 and m is animated between 1 and 5:


In the next post I'll show how to extend the figure into the third dimension...

Keine Kommentare:

Kommentar veröffentlichen