Lines Matching refs:IFS
9 * Kaleidoscopic Iterated Function Systems (IFS)
20 if (fractal->IFS.absX) z.x = fabs(z.x);
21 if (fractal->IFS.absY) z.y = fabs(z.y);
22 if (fractal->IFS.absZ) z.z = fabs(z.z);
26 if (fractal->IFS.enabled[i])
28 z = Matrix33MulFloat4(fractal->IFS.rot[i], z);
29 REAL length = dot(z, fractal->IFS.direction[i]);
31 if (length < fractal->IFS.distance[i])
33 z -= fractal->IFS.direction[i]
34 * (2.0f * (length - fractal->IFS.distance[i]) * fractal->IFS.intensity[i]);
39 if (fractal->IFS.rotationEnabled)
40 z = Matrix33MulFloat4(fractal->IFS.mainRot, z - fractal->IFS.offset) + fractal->IFS.offset;
42 if (fractal->IFS.edgeEnabled)
44 if (fractal->IFS.edge.x > 0.0f) z.x = fractal->IFS.edge.x - fabs(fractal->IFS.edge.x - z.x);
45 if (fractal->IFS.edge.y > 0.0f) z.y = fractal->IFS.edge.y - fabs(fractal->IFS.edge.y - z.y);
46 if (fractal->IFS.edge.z > 0.0f) z.z = fractal->IFS.edge.z - fabs(fractal->IFS.edge.z - z.z);
49 z *= fractal->IFS.scale;
50 if (fractal->IFS.mengerSpongeMode)
52 z.x -= fractal->IFS.offset.x * (fractal->IFS.scale - 1.0f);
53 z.y -= fractal->IFS.offset.y * (fractal->IFS.scale - 1.0f);
54 if (z.z > 0.5f * fractal->IFS.offset.z * (fractal->IFS.scale - 1.0f))
55 z.z -= fractal->IFS.offset.z * (fractal->IFS.scale - 1.0f);
59 z -= fractal->IFS.offset * (fractal->IFS.scale - 1.0f);
61 aux->DE *= fabs(fractal->IFS.scale);