The perenial (quasi-fractal) hermetic dictum "as above, so below" has been formulated by numerous great minds:

The path up and down are one and the same.

Knowing all things must belong to him who has in the highest degree universal knowledge; for he knows in a sense all the instances that fall under the universal.

Herman Hesse
The things we can see are the same things that exist within us. There is no reality except the one contained inside. This is why many people live in delusion. They take images outside as sole reality, never realizing that they are linked to internal causes.

William Blake
To see a world in a grain of sand,
And a heaven in a wild flower,
Hold infinity in the palm of your hand,
And eternity in an hour.

Tis true without lying, certain and most true. That which is below is like that which is above and that which is above is like that which is below to do the miracles of one only thing. And as all things have been and arose from one by the meditation of one: so all things have their birth from this one thing by adaptation.

Katha Upanishad
“Those who see all creatures in themselves
And themselves in all creatures know no fear.
Those who see all creatures in themselves
And themselves in all creatures know no grief.
How can the multiplicity of life
Delude the one who sees its

<script type="module">
 import THREE from "https://esm.sh/three.js";

const container = document.getElementById("canvas-cont");

// Set up the scene, camera, and renderer
const scene = new THREE.Scene();
const camera = new THREE.OrthographicCamera(-2, 2, 2, -2, 0.1, 100);
const renderer = new THREE.WebGLRenderer();
renderer.setSize(window.innerWidth, window.innerHeight);

// Create a plane geometry for the fractal
const geometry = new THREE.PlaneGeometry(4, 4);

// Create a custom shader material for the Julia set
const material = new THREE.ShaderMaterial({
  uniforms: {
    c: { value: new THREE.Vector2(0, 0) }
  vertexShader: `
                varying vec2 vUv;

                void main() {
                    vUv = uv;
                    gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);
  fragmentShader: `
                uniform vec2 c;
                varying vec2 vUv;
vec3 colorize(float t) {
                    return vec3(0.5 * cos(1.5 * 3.14159 * t) + 0.5, 0.5 * sin(1.5 * 3.14159 * t) + 0.5, 0.5 * t + 0.5);

                void main() {
                    vec2 z = (vUv * 4.0 - 2.0);
                    float n = 0.0;

                    for (int i = 0; i < 100; i++) {
                        z = vec2(z.x * z.x - z.y * z.y, 2.0 * z.x * z.y) + c;

                        if (dot(z, z) > 4.0) {


                    float t = n / 100.0;
                    vec3 color = colorize(t);
                    gl_FragColor = vec4(color, 1.0);

// Create a mesh for the fractal and add it to the scene
const fractal = new THREE.Mesh(geometry, material);

camera.position.z = 1;

// Create an animate function to render the scene and update the fractal
function animate(time) {
  const elapsedTime = time * 0.0005; // Slower animation
  material.uniforms.c.value.x = 0.7885 * Math.cos(elapsedTime);
  material.uniforms.c.value.y = 0.7885 * Math.sin(elapsedTime);

  renderer.render(scene, camera);



<div id="canvas-cont"></div>


Top Skip to content