Skip to content

Instantly share code, notes, and snippets.

@tiye
Created May 12, 2024 04:15
Show Gist options
  • Save tiye/50f22a3aeac8c6a59ca7823f1af7787a to your computer and use it in GitHub Desktop.
Save tiye/50f22a3aeac8c6a59ca7823f1af7787a to your computer and use it in GitHub Desktop.
quadratic
// https://sequelaencollection.home.blog/3d-chaotic-attractors/
// -0.875, -0.173, 0.307, -0.436, 0.598,
// 0.003, -0.039, 0.96, -0.84, 0.885,
// 0.774, 0.281, -0.015, 0.585, 0.442,
// -0.18, -0.535, -0.151, -0.971, -0.48,
// 0.777, 0.418, 0.185, 0.006, 0.45,
// -0.066, 0.498, 0.142, -0.246, -0.939
const a0 = -0.875; const a1 = -0.173; const a2 = 0.307; const a3 = -0.436; const a4 = 0.598;
const a5 = 0.003; const a6 = -0.039; const a7 = 0.96; const a8 = -0.84; const a9 = 0.885;
const a10 = 0.774; const a11 = 0.281; const a12 = -0.015; const a13 = 0.585; const a14 = 0.442;
const a15 = -0.18; const a16 = -0.535; const a17 = -0.151; const a18 = -0.971; const a19 = -0.48;
const a20 = 0.777; const a21 = 0.418; const a22 = 0.185; const a23 = 0.006; const a24 = 0.45;
const a25 = -0.066; const a26 = 0.498; const a27 = 0.142; const a28 = -0.246; const a29 = -0.939;
fn iterate_fn(p: vec3f, dt: f32) -> AttractorResult {
let x = p.x;
let y = p.y;
let z = p.z;
let xy = x * y;
let xz = x * z;
let yz = y * z;
let xx = x * x;
let yy = y * y;
let zz = z * z;
let dx = a0 + a1 * x + a2 * y + a3 * z + a4 * xy + a5 * xz + a6 * yz + a7 * xx + a8 * yy + a9 * zz;
let dy = a10 + a11 * x + a12 * y + a13 * z + a14 * xy + a15 * xz + a16 * yz + a17 * xx + a18 * yy + a19 * zz;
let dz = a20 + a21 * x + a22 * y + a23 * z + a24 * xy + a25 * xz + a26 * yz + a27 * xx + a28 * yy + a29 * zz;
let d = vec3<f32>(dx, dy, dz);
return AttractorResult(
d,
vec3(dx, dy, dz),
length(d) * 2.1
);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment