 |
 |
|
 |
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
---%<---%<---%<---%<
#version 3.7;
global_settings{assumed_gamma 1}
#default{ finish{ambient 0.1 diffuse 0.9}}
camera {
orthographic
location <0,0,1> look_at 0
right x*image_width/image_height
}
#declare Chladni = function(x,y,z,A,B,C,L,M,N){
(A * sin(pi * L * x) * sin(pi * M * y) * sin(pi * N * z) +
B * sin(pi * M * x) * sin(pi * N * y) * sin(pi * L * z) +
C * sin(pi * N * x) * sin(pi * L * y) * sin(pi * M * z)) / (A+B+C)
}
box {
<-0.5, -0.5, 0>, <0.5, 0.5, 0>
texture {
pigment {
function{Chladni(x,y,z,3.3,4.0,1.0,2.3,3.8,2.1)}
color_map {
[0 rgb 0]
[0 rgb 1]
[0.05 rgb 1]
[0.05 rgb 0]
}
}
translate <0,0,0.8>
scale 0.15
finish {
ambient 1.0
diffuse 0.0
}
}
}
---%<---%<---%<---
Post a reply to this message
Attachments:
Download 'chladni.png' (90 KB)
Preview of image 'chladni.png'

|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
Ah, the good ole' Chladni functions :)
I've played around with these in both 2D and 3D. I think it takes some time to
evaluate all the possibilities and choose the really good patterns that emerge.
The Chladni patterns remind me of the Zernicke polynomials that I investigated
when exploring lens distortions that cause and relieve astigmatism.
And then there are the spherical harmonics and the atomic oribitals.
Presumably there are a lot more related phenomena that could be pressed into
service for 2D patterns and 3D shapes.
It would be even nicer if there exists a way to interpolate between them.
I have an idea for interpolating between all of the 16 different Boolean
operations via Grey code numbers along the edges connecting the vertices of a
hypercube . . .
.... which may require time expansion, insomnia, and something stronger than
coffee and a gin & tomic.
- BE
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
On 08/04/2026 20:39, MichaelJF wrote:
>
> Using Firefox, I get a brief glimpse of a website displaying POV-Stairs
> macros, but a few seconds later I’m redirected to a porn site. As far as
> I know, Geocities has been offline since 2009. Perhaps someone is trying
> to lure visitors to their website using old content.
>
Neither the website nor Firefox is to blame.
Your computer is simply infected with malware ;)
--
kurtz le pirate
compagnie de la banquise
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
On 10/04/2026 17:17, ingo wrote:
>
> #declare Chladni = function(x,y,z,A,B,C,L,M,N){
> (A * sin(pi * L * x) * sin(pi * M * y) * sin(pi * N * z) +
> B * sin(pi * M * x) * sin(pi * N * y) * sin(pi * L * z) +
> C * sin(pi * N * x) * sin(pi * L * y) * sin(pi * M * z)) / (A+B+C)
> }
>
Chladni patterns... another area I wanted to explore but never got
around to. Congrats on this “simple” code, too
--
kurtz le pirate
compagnie de la banquise
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
kurtz le pirate <kur### [at] free fr> wrote:
> Chladni patterns... another area I wanted to explore but never got
Maybe this absolute classic will inspire you to forge ahead:
https://www.youtube.com/watch?v=tFAcYruShow
- BE
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
On 2026-04-10 19:36, Bald Eagle wrote:
> Maybe this absolute classic will inspire you to forge ahead:
So far I have used cloth animation, springy mesh, to generate sound.
Adjust tension stiffness mass and sample vertex positions 44100 times
per sec. Not stable yet. May be useful for Chladni simulation.
My actual goal with cloth is to sample vertices movement, get
frequencies of that, sort by frequency, create spectrograms, feed those
to thousands of oscillators.
But there must be a way to get time = frequency in into or out off
Chadni and go from there to get harmonics. Not looked onto that.
We'll see what comes of it,
ingo
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
Am 10.04.26 um 19:06 schrieb kurtz le pirate:
> On 08/04/2026 20:39, MichaelJF wrote:
>
>>
>> Using Firefox, I get a brief glimpse of a website displaying POV-
>> Stairs macros, but a few seconds later I’m redirected to a porn site.
>> As far as I know, Geocities has been offline since 2009. Perhaps
>> someone is trying to lure visitors to their website using old content.
>>
>
> Neither the website nor Firefox is to blame.
> Your computer is simply infected with malware ;)
>
>
>
>
Should I switch from Ubuntu to Windows?
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
Some ideas regarding Chladni. Untested code in Nim (sorry) as it has to
fit into my pattern and audio synthesis stuff, but it should not be to
complex to convert to POV-Ray (I'm tempted).
for a rectangulare plate:
proc chladniRect*(ampA, ampB, m, n, Lx, Ly: float): Pattern =
proc fn(x, y, z: float): float =
ampA * sin(PI * m * x / Lx) * sin(PI * n * y / Ly) +
ampB * sin(PI * n * x / Lx) * sin(PI * m * y / Ly)
initPattern(fn)
proc chladniRectFreq*(m, n, Lx, Ly, waveSpeed: float): float =
(waveSpeed / 2.0) * sqrt((m/Lx)*(m/Lx) + (n/Ly)*(n/Ly))
type
PlateMaterial* = object
E: float # Young's modulus (Pa) - stiffness
rho: float # density (kg/m³)
nu: float # Poisson's ratio - lateral contraction
h: float # thickness (m)
const
Steel* = PlateMaterial(
E: 200e9, rho: 7800.0, nu: 0.28, h: 0.001
)
Aluminium* = PlateMaterial(
E: 70e9, rho: 2700.0, nu: 0.33, h: 0.001
)
Glass* = PlateMaterial(
E: 70e9, rho: 2500.0, nu: 0.23, h: 0.001
)
Wood* = PlateMaterial( # spruce, along grain
E: 12e9, rho: 450.0, nu: 0.35, h: 0.003
)
Brass* = PlateMaterial(
E: 100e9, rho: 8500.0, nu: 0.35, h: 0.001
)
proc waveSpeed*(mat: PlateMaterial): float =
## Flexural wave speed in thin plate
let B = mat.E * mat.h * mat.h * mat.h /
(12.0 * (1.0 - mat.nu * mat.nu)) # bending stiffness
let rhoH = mat.rho * mat.h # mass per unit area
sqrt(B / rhoH) # simplified phase velocity
now the other way around:
f_mn = (c / 2) * sqrt((m/Lx)^2 + (n/Ly)^2)
invert
(2f/c)² = (m/Lx)^ + (n/Ly)^
now finde modes at frequency
loop over modes, get chladni and sum
this should then be convered to a spectrogram and create the sound from
that.
It can be extended to 3d room modes so one can simulate small room
acoustics (below Schroeder freq) and walk trough a .df3 media room that
show the soundfield.
ingo
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
"Bald Eagle" <cre### [at] netscape net> wrote:
> I'm posting this here as a proxy for the author, because I just stumbled across
> it and think it's AWESOME.
>
> I'm archiving it at home once I get network access restored.
>
> https://www.geocities.ws/povstairs/
Good news: this library is also in the Object Collection. An updated version
will reappear on that server when it is restored. In the meantime, those having
trouble with the above website can access the files at:
https://github.com/LeForgeron/PovContributions/tree/master/staircase/chrisb%202.0
As for the author, he was the original administrator of the Object Collection,
and he disappeared sometime in late 2009.
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
My Chladni patterns inspired from Ingo
--- sdl ----------------------------------------------------------------
camera {
orthographic
location <0,0,-1>
look_at 0
right x*image_width/image_height
}
light_source {
<0,0,-100>
color rgb 1
}
#declare fnChladni = function(x,y,z,_n,_m,_l) {
cos(_n*pi*x/_l)*cos(_m*pi*y/_l) - cos(_m*pi*x/_l)*cos(_n*pi*y/_l)
}
#declare n = 7; // number of curves
#declare d = 1/(n+1); // gap
#declare ep = 0.008; // line thickness
#declare Col0 = rgb 0; // first color
#declare Col1 = rgb 1; // second color
#declare CMap = color_map {
[0 Col0 ]
#declare i = 1;
#while ( i < n+1 )
#declare x0 = i*d-ep;
#declare x1 = i*d+ep;
[ x0 Col0 ]
[ x0 Col1 ]
[ x1 Col1 ]
[ x1 Col0 ]
#declare i = i + 1;
#end
[ 1 Col0 ]
}
// Chladni params
#declare m = 5;
#declare n = 13;
#declare l = 0.6;
plane {
z, 0
texture {
pigment {
function { fnChladni(x,y,z,n,m,l) }
color_map { CMap }
}
}
}
--- sdl ----------------------------------------------------------------
--
kurtz le pirate
compagnie de la banquise
Post a reply to this message
Attachments:
Download 'chladni_4.jpeg.jpg' (973 KB)
Preview of image 'chladni_4.jpeg.jpg'

|
 |
|  |
|  |
|
 |
|
 |
|  |
|
 |