mirror of
https://github.com/stevenrobertson/cuburn.git
synced 2025-02-05 11:40:04 -05:00
Merge Erik's variations (TY!)
This commit is contained in:
commit
7556d79ae5
@ -112,8 +112,8 @@ var(13, 'julia', """
|
||||
var(14, 'bent', """
|
||||
float nx = 1.0f;
|
||||
if (tx < 0.0f) nx = 2.0f;
|
||||
float ny = 1.0;
|
||||
if (ty < 0.0f) ty = 0.5f;
|
||||
float ny = 1.0f;
|
||||
if (ty < 0.0f) ny = 0.5f;
|
||||
ox += w * nx * tx;
|
||||
oy += w * ny * ty;
|
||||
""")
|
||||
@ -121,8 +121,13 @@ var(14, 'bent', """
|
||||
var(15, 'waves', """
|
||||
float c10 = {{px.get(None, 'pre_xy')}};
|
||||
float c11 = {{px.get(None, 'pre_yy')}};
|
||||
ox += w * (tx + c10 + sinf(ty * {{px.get('xf.waves_dx2')}}));
|
||||
oy += w * (ty + c11 + sinf(tx * {{px.get('xf.waves_dy2')}}));
|
||||
float dx = {{px.get(None, 'pre_xo')}};
|
||||
float dy = {{px.get(None, 'pre_yo')}};
|
||||
float dx2 = 1.0f / (dx * dx);
|
||||
float dy2 = 1.0f / (dy * dy);
|
||||
|
||||
ox += w * (tx + c10 + sinf(ty * dx2));
|
||||
oy += w * (ty + c11 + sinf(tx * dy2));
|
||||
""")
|
||||
|
||||
var(16, 'fisheye', """
|
||||
@ -238,6 +243,7 @@ var(29, 'cylinder', """
|
||||
ox += w * sinf(tx);
|
||||
oy += w * ty;
|
||||
""")
|
||||
|
||||
var(30, 'perspective', """
|
||||
float pdist = {{px.get('xf.perspective_dist')}};
|
||||
float pvsin = {{px.get('np.sin(xf.perspective_angle*np.pi/2)', 'pvsin')}};
|
||||
@ -249,6 +255,25 @@ var(30, 'perspective', """
|
||||
oy += w * pvfcos * ty * t;
|
||||
""")
|
||||
|
||||
var(31, 'noise', """
|
||||
float tmpr = mwc_next_01(rctx) * 2.0f * M_PI;
|
||||
float r = w * mwc_next_01(rctx);
|
||||
ox += tx * r * cosf(tmpr);
|
||||
oy += ty * r * sinf(tmpr);
|
||||
""")
|
||||
|
||||
var(32, 'julian', """
|
||||
float power = {{px.get('xf.julian_power')}};
|
||||
float t_rnd = truncf(mwc_next_01(rctx) * fabsf(power));
|
||||
float a = atan2f(ty, tx);
|
||||
float tmpr = (a + 2.0f * M_PI * t_rnd) / power;
|
||||
float cn = {{px.get('xf.julian_dist / xf.julian_power / 2', 'julian_cn')}};
|
||||
float r = w * powf(tx * tx + ty * ty, cn);
|
||||
|
||||
ox += r * cosf(tmpr);
|
||||
oy += r * sinf(tmpr);
|
||||
""")
|
||||
|
||||
var(33, 'juliascope', """
|
||||
float ang = atan2f(ty, tx);
|
||||
float power = {{px.get('xf.juliascope_power', 'juscope_power')}};
|
||||
@ -265,3 +290,675 @@ var(33, 'juliascope', """
|
||||
oy += r * sinf(tmpr);
|
||||
""")
|
||||
|
||||
var(34, 'blur', """
|
||||
float tmpr = mwc_next_01(rctx) * 2.0f * M_PI;
|
||||
float r = w * mwc_next_01(rctx);
|
||||
ox += r * cosf(tmpr);
|
||||
oy += r * sinf(tmpr);
|
||||
""")
|
||||
|
||||
var(35, 'gaussian', """
|
||||
float ang = mwc_next_01(rctx) * 2.0f * M_PI;
|
||||
float r = weight * ( mwc_next_01(rctx) + mwc_next_01(rctx)
|
||||
+ mwc_next_01(rctx) + mwc_next_01(rctx) - 2.0f );
|
||||
ox += r * cosf(ang);
|
||||
oy += r * sinf(ang);
|
||||
""")
|
||||
|
||||
var(36, 'radial_blur', """
|
||||
float blur_angle = {{px.get('xf.radial_blur_angle')}} * M_PI * 0.5f;
|
||||
float spinvar = sinf(blur_angle);
|
||||
float zoomvar = cosf(blur_angle);
|
||||
float r = weight * ( mwc_next_01(rctx) + mwc_next_01(rctx)
|
||||
+ mwc_next_01(rctx) + mwc_next_01(rctx) - 2.0f );
|
||||
float ra = sqrtf(tx*tx + ty*ty);
|
||||
float tmpa = atan2f(ty, tx) + spinvar * r;
|
||||
float rz = zoomvar * r - 1.0f;
|
||||
ox += ra*cosf(tmpa) + rz*tx;
|
||||
oy += ra*sinf(tmpa) + rz*ty;
|
||||
""")
|
||||
|
||||
var(37, 'pie', """
|
||||
float slices = {{px.get('xf.pie_slices')}};
|
||||
float sl = truncf(mwc_next_01(rctx) * slices + 0.5f);
|
||||
float a = {{px.get('xf.pie_rotation')}} +
|
||||
2.0f * M_PI * (sl + mwc_next_01(rctx) + {{px.get('xf.pie_thickness')}} / slices;
|
||||
float r = w * mwc_next_01(rctx);
|
||||
ox += r * cosf(a);
|
||||
oy += r * sinf(a);
|
||||
""")
|
||||
|
||||
var(38, 'ngon', """
|
||||
float power = {{px.get('xf.ngon_power')}} * 0.5f
|
||||
float b = 2.0f * M_PI / {{px.get('xf.ngon_sides')}}
|
||||
float corners = {{px.get('xf.ngon_corners')}}
|
||||
float circle = {{px.get('xf.ngon_circle')}}
|
||||
|
||||
float r_factor = powf(tx*tx + ty*ty, power);
|
||||
float theta = atan2f(ty, tx);
|
||||
float phi = theta - b * floorf(theta/b);
|
||||
if (phi > b/2.0f) phi -= b;
|
||||
float amp = (corners * (1.0f / cosf(phi) - 1.0f) + circle) / r_factor;
|
||||
|
||||
ox += w * tx * amp;
|
||||
oy += w * ty * amp;
|
||||
"""}
|
||||
|
||||
var(39, 'curl', """
|
||||
float c1 = {{px.get('xf.curl_c1')}};
|
||||
float c2 = {{px.get('xf.curl_c2')}};
|
||||
|
||||
float re = 1.0f + c1*tx + c2*(tx*tx - ty*ty);
|
||||
float im = c1*ty + 2.0f*c2*tx*ty;
|
||||
float r = w / (re*re + im*im);
|
||||
|
||||
ox += r * (tx*re + ty*im);
|
||||
oy += r * (ty*re + tx*im);
|
||||
""")
|
||||
|
||||
var(40, 'rectangles', """
|
||||
float rx = {{px.get('xf.rectangles_x')}};
|
||||
float ry = {{px.get('xf.rectangles_y')}};
|
||||
|
||||
ox += w * ( (rx==0.0f) ? tx : rx * (2.0f * floorf(tx/rx) + 1.0f) - tx);
|
||||
oy += w * ( (ry==0.0f) ? ty : ry * (2.0f * floorf(ty/ry) + 1.0f) - ty);
|
||||
""")
|
||||
|
||||
var(41, 'arch', """
|
||||
float ang = mwc_next_01(rctx) * w * M_PI;
|
||||
|
||||
ox += w * sinf(ang);
|
||||
oy += w * sinf(ang) * sinf(ang) / cosf(ang);
|
||||
""")
|
||||
|
||||
var(42, 'tangent', """
|
||||
ox += w * sinf(tx) / cosf(ty);
|
||||
oy += w * tanf(ty);
|
||||
""")
|
||||
|
||||
var(43, 'square', """
|
||||
ox += w * (mwc_next_01(rctx) - 0.5f);
|
||||
oy += w * (mwc_next_01(rctx) - 0.5f);
|
||||
""")
|
||||
|
||||
var(44, 'rays', """
|
||||
float ang = w * mwc_next_01(rctx) * M_PI;
|
||||
float r = w / (tx*tx + ty*ty);
|
||||
float tanr = w * tanf(ang) * r;
|
||||
ox += tanr * cosf(tx);
|
||||
oy += tanr * sinf(ty);
|
||||
""")
|
||||
|
||||
var(45, 'blade', """
|
||||
float r = mwc_next_01(rctx) * w * sqrtf(tx*tx + ty*ty);
|
||||
ox += w * tx * (cosf(r) + sinf(r));
|
||||
oy += w * tx * (cosf(r) - sinf(r));
|
||||
""")
|
||||
|
||||
var(46, 'secant2', """
|
||||
float r = w * sqrtf(tx*tx + ty*ty);
|
||||
float cr = cosf(r);
|
||||
float icr = 1.0f / cr;
|
||||
icr += (cr < 0 ? 1 : -1);
|
||||
|
||||
ox += w * tx;
|
||||
oy += w * icr;
|
||||
""")
|
||||
|
||||
# var 47 is twintrian, has a call to badvalue in it
|
||||
|
||||
var(48, 'cross', """
|
||||
float s = tx*tx - ty*ty;
|
||||
float r = w * sqrtf(1.0f / (s*s));
|
||||
|
||||
ox += r * tx;
|
||||
oy += r * ty;
|
||||
""")
|
||||
|
||||
var(49, 'disc2', """
|
||||
float twist = {{px.get('xf.disc2_twist')}};
|
||||
float rotpi = {{px.get('xf.disc2_rot * M_PI', 'disc2_rotpi')}};
|
||||
|
||||
float sintwist = sinf(twist);
|
||||
float costwist = cosf(twist) - 1.0f;
|
||||
|
||||
if (twist > 2.0f * M_PI) {
|
||||
float k = (1.0f + twist - 2.0f * M_PI);
|
||||
sintwist *= k;
|
||||
costwist *= k;
|
||||
}
|
||||
|
||||
if (twist < -2.0f * M_PI) {
|
||||
float k = (1.0f + twist + 2.0f * M_PI);
|
||||
sintwist *= k;
|
||||
costwist *= k;
|
||||
}
|
||||
|
||||
float t = rotpi * (tx + ty);
|
||||
float r = w * atan2f(tx, ty) / M_PI;
|
||||
|
||||
ox += r * (sinf(t) + costwist);
|
||||
oy += r * (cosf(t) + sintwist);
|
||||
""")
|
||||
|
||||
var(50, 'super_shape', """
|
||||
float ang = atan2f(ty, tx);
|
||||
float theta = 0.25f * ({{px.get('xf.super_shape_m')}} * ang + M_PI);
|
||||
float t1 = fabsf(cosf(theta));
|
||||
float t2 = fabsf(sinf(theta));
|
||||
t1 = powf(t1,{{px.get('xf.super_shape_n2')}});
|
||||
t2 = powf(t2,{{px.get('xf.super_shape_n3')}});
|
||||
float myrnd = {{px.get('xf.super_shape_rnd')}};
|
||||
float d = sqrtf(tx*tx+ty*ty);
|
||||
|
||||
float r = w * ((myrnd*mwc_next_01(rctx) + (1.0f-myrnd)*d) - {{px.get('xf.super_shape_holes')}})
|
||||
* powf(t1+t2, {{px.get('-1.0 / xf.super_shape_holes', 'super_shape_pneg')}}) / d;
|
||||
|
||||
ox += r * tx;
|
||||
oy += r * ty;
|
||||
""")
|
||||
|
||||
var(51, 'flower', """
|
||||
float holes = {{px.get('xf.flower_holes')}};
|
||||
float petals = {{px.get('xf.flower_petals')}};
|
||||
|
||||
float r = w * (mwc_next_01(rctx) - holes) * cosf(petals*atan2f(ty, tx)) / sqrtf(tx*tx + ty*ty);
|
||||
|
||||
ox += r * tx;
|
||||
oy += r * ty;
|
||||
""")
|
||||
|
||||
var(52, 'conic', """
|
||||
float d = sqrtf(tx*tx + ty*ty);
|
||||
float ct = tx / d;
|
||||
float holes = {{px.get('xf.conic_holes')}};
|
||||
float eccen = {{px.get('xf.conic_eccentricity')}};
|
||||
|
||||
float r = w * (mwc_next_01(rctx) - holes) * eccen / (1.0f + eccen*ct) / d;
|
||||
|
||||
ox += r * tx;
|
||||
oy += r * ty;
|
||||
""")
|
||||
|
||||
var(53, 'parabola', """
|
||||
float r = sqrtf(tx*tx + ty*ty);
|
||||
float sr = sinf(r);
|
||||
float cr = cosf(r);
|
||||
|
||||
ox += {{px.get('xf.parabola_height')}} * w * sr * sr * mwc_next_01(rctx);
|
||||
oy += {{px.get('xf.parabola_width')}} * w * cr * mwc_next_01(rctx);
|
||||
""")
|
||||
|
||||
var(54, 'bent2', """
|
||||
float nx = 1.0f;
|
||||
if (tx < 0.0f) nx = {{px.get('xf.bent2_x')}};
|
||||
float ny = 1.0f;
|
||||
if (ty < 0.0f) ny = {{px.get('xf.bent2_y')}};
|
||||
ox += w * nx * tx;
|
||||
oy += w * ny * ty;
|
||||
""")
|
||||
|
||||
var(55, 'bipolar', """
|
||||
float x2y2 = tx*tx + ty*ty;
|
||||
float t = x2y2 + 1.0f;
|
||||
float x2 = tx * 2.0f;
|
||||
float ps = -M_PI_2 * {{px.get('xf.bipolar_shift')}}
|
||||
float y = 0.5 * atan2f(2.0f * ty, x2y2 - 1.0f) + ps;
|
||||
|
||||
if (y > M_PI_2)
|
||||
y = -M_PI_2 + fmodf(y + M_PI_2, M_PI);
|
||||
else if (y < -M_PI_2)
|
||||
y = M_PI_2 - fmodf(M_PI_2 - y, M_PI);
|
||||
|
||||
ox += w * 0.25f * M_2_PI * logf( (t+x2) / (t-x2) );
|
||||
oy += w * M_2_PI * y;
|
||||
""")
|
||||
|
||||
var(56, 'boarders', """
|
||||
float roundX = rintf(tx);
|
||||
float roundY = rintf(ty);
|
||||
float offsetX = tx - roundX;
|
||||
float offsetY = ty - roundY;
|
||||
|
||||
if (mwc_next_01(rctx) > 0.75f) {
|
||||
ox += w * (offsetX*0.5f + roundX);
|
||||
oy += w * (offsetY*0.5f + roundY);
|
||||
} else {
|
||||
if (fabsf(offsetX) >= fabsf(offsetY)) {
|
||||
if (offsetX >= 0.0f) {
|
||||
ox += w * (offsetX*0.5f + roundX + 0.25f);
|
||||
oy += w * (offsetY*0.5f + roundY + 0.25f * offsetY / offsetX);
|
||||
} else {
|
||||
ox += w * (offsetX*0.5f + roundX - 0.25f);
|
||||
oy += w * (offsetY*0.5f + roundY - 0.25f * offsetY / offsetX);
|
||||
}
|
||||
} else {
|
||||
if (offsetY >= 0.0f) {
|
||||
oy += w * (offsetY*0.5f + roundY + 0.25f);
|
||||
ox += w * (offsetX*0.5f + roundX + offsetX / offsetY * 0.25f);
|
||||
} else {
|
||||
oy += w * (offsetY*0.5f + roundY - 0.25f);
|
||||
ox += w * (offsetX*0.5f + roundX - offsetX / offsetY * 0.25f);
|
||||
}
|
||||
}
|
||||
}
|
||||
""")
|
||||
|
||||
var(57, 'butterfly', """
|
||||
/* wx is weight*4/sqrt(3*pi) */
|
||||
float wx = w * 1.3029400317411197908970256609023f;
|
||||
float y2 = ty * 2.0f
|
||||
float r = wx * sqrtf(fabsf(ty * tx)/(tx*tx + y2*y2));
|
||||
ox += r * tx;
|
||||
oy += r * y2;
|
||||
""")
|
||||
|
||||
var(58, 'cell', """
|
||||
float cell_size = {{px.get('xf.cell_size')}}
|
||||
float inv_cell_size = 1.0f/cell_size;
|
||||
|
||||
/* calculate input cell */
|
||||
float x = floorf(tx * inv_cell_size);
|
||||
float y = floorf(ty * inv_cell_size);
|
||||
|
||||
/* Offset from cell origin */
|
||||
float dx = tx - x*cell_size;
|
||||
float dy = ty - y*cell_size;
|
||||
|
||||
/* interleave cells */
|
||||
if (y >= 0.0f) {
|
||||
if (x >= 0.0f) {
|
||||
y *= 2.0f;
|
||||
x *= 2.0f;
|
||||
} else {
|
||||
y *= 2.0f;
|
||||
x = -(2.0f*x+1.0f);
|
||||
}
|
||||
} else {
|
||||
if (x >= 0.0f) {
|
||||
y = -(2.0f*y+1.0f);
|
||||
x *= 2.0f;
|
||||
} else {
|
||||
y = -(2.0f*y+1.0f);
|
||||
x = -(2.0f*x+1.0f);
|
||||
}
|
||||
}
|
||||
|
||||
ox += w * (dx + x*cell_size);
|
||||
oy -= w * (dy + y*cell_size);
|
||||
""")
|
||||
|
||||
var(59, 'cpow', """
|
||||
float a = atan2f(ty, tx);
|
||||
float lnr = 0.5f * logf(sqrtf(tx*tx+ty*ty));
|
||||
float power = {{px.get('xf.cpow_power')}}
|
||||
float va = 2.0f * M_PI / power;
|
||||
float vc = {{px.get('xf.cpow_r')}} / power;
|
||||
float vd = {{px.get('xf.cpow_i')}} / power;
|
||||
float ang = vc*a + vd*lnr + va*floorf(power*mwc_next_01(rctx));
|
||||
float m = w * expf(vc * lnr - vd * a);
|
||||
ox += m * cosf(ang);
|
||||
oy += m * sinf(ang);
|
||||
""")
|
||||
|
||||
var(60, 'curve', """
|
||||
float pc_xlen = {{px.get('xf.curve_xlength * xf.curve_xlength','pc_xlen')}};
|
||||
float pc_ylen = {{px.get('xf.curve_ylength * xf.curve_ylength','pc_ylen')}};
|
||||
|
||||
if (pc_xlen<1E-20f) pc_xlen = 1E-20f;
|
||||
if (pc_ylen<1E-20f) pc_ylen = 1E-20f;
|
||||
|
||||
ox += w * (tx + {{px.get('xf.curve_xamp')}} * expf(-ty*ty/pc_xlen));
|
||||
ox += w * (ty + {{px.get('xf.curve_yamp')}} * expf(-tx*tx/pc_ylen));
|
||||
""")
|
||||
|
||||
var(61, 'edisc', """
|
||||
float tmp = tx*tx + ty*ty + 1.0f;
|
||||
float tmp2 = 2.0f * tx;
|
||||
float r1 = sqrtf(tmp+tmp2);
|
||||
float r2 = sqrtf(tmp-tmp2);
|
||||
float xmax = (r1+r2) * 0.5f;
|
||||
float a1 = logf(xmax + sqrtf(xmax - 1.0f));
|
||||
float a2 = -acosf(tx/xmax);
|
||||
float neww = w / 11.57034632f;
|
||||
|
||||
float snv = sinf(a1);
|
||||
float csv = cosf(a1);
|
||||
if (ty > 0.0f) snv = -snv;
|
||||
|
||||
ox += neww * coshf(a2) * csv;
|
||||
oy += neww * sinhf(s2) * snv;
|
||||
""")
|
||||
|
||||
var(62, 'elliptic', """
|
||||
float tmp = tx*tx + ty*ty + 1.0f;
|
||||
float x2 = 2.0f * tx;
|
||||
float xmax = 0.5f * (sqrtf(tmp+x2) + sqrtf(tmp-x2));
|
||||
float a = tx / xmax;
|
||||
float b = 1.0f - a*a;
|
||||
float ssx = xmax - 1.0f;
|
||||
float neww = w / M_PI_2;
|
||||
|
||||
if (b < 0.0f)
|
||||
b = 0.0f;
|
||||
else
|
||||
b = sqrtf(b);
|
||||
|
||||
if (ssx < 0.0f)
|
||||
ssx = 0.0f;
|
||||
else
|
||||
ssx = sqrtf(ssx);
|
||||
|
||||
ox += neww * atan2f(a,b);
|
||||
|
||||
if (ty > 0.0f)
|
||||
oy += neww * logf(xmax + ssx);
|
||||
else
|
||||
oy -= neww * logf(xmax + ssx);
|
||||
""")
|
||||
|
||||
var(63, 'escher', """
|
||||
float a = atan2f(ty,tx);
|
||||
float lnr = 0.5f * logf(tx*tx + ty*ty);
|
||||
float ebeta = {{px.get('xf.escher_beta')}};
|
||||
float seb = sinf(ebeta);
|
||||
float ceb = cosf(ebeta);
|
||||
float vc = 0.5f * (1.0f + ceb);
|
||||
float vd = 0.5f * seb;
|
||||
float m = w * expf(vc*lnr - vd*a);
|
||||
float n = vc*a + vd*lnr;
|
||||
|
||||
ox += m * cosf(n);
|
||||
oy += m * sinf(n);
|
||||
""")
|
||||
|
||||
var(64, 'foci', """
|
||||
float expx = expf(tx) * 0.5f;
|
||||
float expnx = 0.25f / expx;
|
||||
float sn = sinf(ty);
|
||||
float cn = cosf(ty);
|
||||
float tmp = w / (expx + expnx - cn);
|
||||
ox += tmp * (expx - expnx);
|
||||
oy += tmp * sn;
|
||||
""")
|
||||
|
||||
var(65, 'lazysusan', """
|
||||
float lx = {{px.get('xf.lazysusan_x')}};
|
||||
float ly = {{px.get('xf.lazysusan_y')}};
|
||||
float x = tx - lx;
|
||||
float y = ty + ly;
|
||||
float r = sqrtf(x*x + y*y);
|
||||
|
||||
if (r < w) {
|
||||
float a = atan2f(y,x) + {{px.get('xf.lazysusan_spin')}} +
|
||||
{{px.get('xf.lazysusan_twist')}}*(w-r);
|
||||
r = w * r;
|
||||
|
||||
ox += r * cosf(a) + lx;
|
||||
oy += r * sinf(a) - ly;
|
||||
|
||||
} else {
|
||||
r = w * (1.0f + {{px.get('xf.lazysusan_space')}} / r);
|
||||
|
||||
ox += r * x + lx;
|
||||
oy += r * y - ly;
|
||||
}
|
||||
""")
|
||||
|
||||
var(66, 'loonie', """
|
||||
float r2 = tx*tx + ty*ty;;
|
||||
float w2 = w*w;
|
||||
|
||||
if (r2 < w2) {
|
||||
float r = w * sqrtf(w2/r2 - 1.0f);
|
||||
ox += r * tx;
|
||||
oy += r * ty;
|
||||
} else {
|
||||
ox += w * tx;
|
||||
oy += w * ty;
|
||||
}
|
||||
""")
|
||||
|
||||
var(67, 'pre_blur', """
|
||||
float rndG = w * (mwc_next_01(rctx) + mwc_next_01(rctx)
|
||||
+ mwc_next_01(rctx) + mwc_next_01(rctx) - 2.0f);
|
||||
float rndA = mwc_next_01(rctx) * 2.0f * M_PI;
|
||||
|
||||
/* Note: original coordinate changed */
|
||||
tx += rndG * cosf(rndA);
|
||||
ty += rndG * sinf(rndA);
|
||||
""")
|
||||
|
||||
var(68, 'modulus', """
|
||||
float mx = {{px.get('xf.modulus_x')}}
|
||||
float my = {{px.get('xf.modulus_y')}}
|
||||
float xr = 2.0f*mx;
|
||||
float yr = 2.0f*my;
|
||||
|
||||
if (tx > mx)
|
||||
ox += w * (-mx + fmodf(tx + mx, xr));
|
||||
else if (tx < -mx)
|
||||
ox += w * ( mx - fmodf(mx - tx, xr));
|
||||
else
|
||||
ox += w * tx;
|
||||
|
||||
if (ty > my)
|
||||
oy += w * (-my + fmodf(ty + my, yr));
|
||||
else if (ty < -my)
|
||||
oy += w * ( my - fmodf(my - ty, yr));
|
||||
else
|
||||
oy += w * ty;
|
||||
""")
|
||||
|
||||
var(69, 'oscope', """
|
||||
float tpf = 2.0f * M_PI * {{px.get('xf.oscope_frequency')}};
|
||||
float amp = {{px.get('xf.oscope_amplitude')}};
|
||||
float sep = {{px.get('xf.oscope_separation')}};
|
||||
float dmp = {{px.get('xf.oscope_damping')}};
|
||||
|
||||
float t = amp * expf(-fabsf(tx)*dmp) * cosf(tpf*tx) + sep;
|
||||
|
||||
ox += w*tx;
|
||||
if (fabsf(ty) <= t)
|
||||
oy -= w*ty;
|
||||
else
|
||||
oy += w*ty;
|
||||
""")
|
||||
|
||||
var(70, 'polar2', """
|
||||
float p2v = w / M_PI;
|
||||
ox += p2v * atan2f(x,y);
|
||||
oy += 0.5f * p2v * logf(tx*tx + ty*ty);
|
||||
""")
|
||||
|
||||
var(71, 'popcorn2', """
|
||||
float c = {{px.get('xf.popcorn2_c')}};
|
||||
ox += w * (tx + {{px.get('xf.popcorn2_x')}} * sinf(tanf(ty*c)));
|
||||
oy += w * (ty + {{px.get('xf.popcorn2_y')}} * sinf(tanf(tx*c)));
|
||||
""")
|
||||
|
||||
var(72, 'scry', """
|
||||
/* note that scry does not multiply by weight, but as the */
|
||||
/* values still approach 0 as the weight approaches 0, it */
|
||||
/* should be ok */
|
||||
float t = tx*tx + ty*ty;
|
||||
float r = 1.0f / (sqrtf(t) * (t + 1.0f/w));
|
||||
ox += tx*r;
|
||||
oy += ty*r;
|
||||
""")
|
||||
|
||||
var(73, 'separation', """
|
||||
float sx2 = {{px.get('xf.separation_x * xf.separation_x', 'sx2')}};
|
||||
float sy2 = {{px.get('xf.separation_y * xf.separation_y', 'sy2')}};
|
||||
|
||||
if (tx > 0.0f)
|
||||
ox += w * (sqrtf(tx*tx + sx2) - tx*{{ps.get('xf.separation_xinside')}});
|
||||
else
|
||||
ox -= w * (sqrtf(tx*tx + sx2) + tx*{{ps.get('xf.separation_xinside')}});
|
||||
|
||||
if (ty > 0.0f)
|
||||
oy += w * (sqrtf(ty*ty + sy2) - ty*{{ps.get('xf.separation_yinside')}});
|
||||
else
|
||||
oy -= w * (sqrtf(ty*ty + sy2) + ty*{{ps.get('xf.separation_yinside')}});
|
||||
""")
|
||||
|
||||
var(74, 'split', """
|
||||
if (cosf(tx*{{px.get('xf.split_xsize')}}*M_PI) >= 0.0f)
|
||||
oy += w*ty;
|
||||
else
|
||||
oy -= w*ty;
|
||||
|
||||
if (cosf(ty*{{px.get('xf.split_ysize')}}*M_PI) >= 0.0f)
|
||||
ox += w*tx;
|
||||
else
|
||||
ox -= w*tx;
|
||||
""")
|
||||
|
||||
var(75, 'splits', """
|
||||
if (tx >= 0.0f)
|
||||
ox += w*(tx + {{ps.get('xf.splits_x')}});
|
||||
else
|
||||
ox += w*(tx - {{ps.get('xf.splits_x')}});
|
||||
|
||||
if (f->ty >= 0)
|
||||
oy += w*(ty + {{ps.get('xf.splits_y')}});
|
||||
else
|
||||
oy += w*(ty - {{ps.get('xf.splits_y')}});
|
||||
""")
|
||||
|
||||
var(76, 'stripes', """
|
||||
float roundx = floorf(tx + 0.5f);
|
||||
float offsetx = tx - roundx;
|
||||
ox += w * (offsetx * (1.0f - {{ps.get('xf.stripes_space')}}) + roundx);
|
||||
oy += w * (ty + offsetx*offsetx*{{ps.get('xf.stripes_warp')}});
|
||||
""")
|
||||
|
||||
var(77, 'wedge', """
|
||||
float r = sqrtf(tx*tx + ty*ty);
|
||||
float a = atan2f(ty, tx) + {{ps.get('xf.wedge_swirl')}} * r;
|
||||
float wc = {{ps.get('xf.wedge_count')}};
|
||||
float wa = {{ps.get('xf.wedge_angle')}};
|
||||
float c = floorf((wc * a + M_PI) * M_1_PI * 0.5f);
|
||||
float comp_fac = 1 - wa * wc * M_1_PI * 0.5f;
|
||||
a = a * comp_fac + c * wa;
|
||||
r = w * (r + {{ps.get('xf.wedge_hole')}});
|
||||
ox += r * cosf(a);
|
||||
oy += r * sinf(a);
|
||||
""")
|
||||
|
||||
var(81, 'waves2', """
|
||||
ox += w*(tx + {{ps.get('xf.waves2_scalex')}}*sinf(ty * {{ps.get('xf.waves2_freqx')}}));
|
||||
oy += w*(ty + {{ps.get('xf.waves2_scaley')}}*sinf(tx * {{ps.get('xf.waves2_freqy')}}));
|
||||
""")
|
||||
|
||||
var(82, 'exp', """
|
||||
float expe = expf(f->tx);
|
||||
ox += w * expe * cosf(ty);
|
||||
oy += w * expe * sinf(ty);
|
||||
""")
|
||||
|
||||
var(83, 'log', """
|
||||
ox += w * 0.5f * logf(tx*tx + ty*ty);
|
||||
oy += w * atan2f(ty, tx);
|
||||
""")
|
||||
|
||||
var(84, 'sin', """
|
||||
ox += w * sinf(tx) * coshf(ty);
|
||||
oy += w * cosf(tx) * sinhf(ty);
|
||||
""")
|
||||
|
||||
var(85, 'cos', """
|
||||
ox += w * cosf(tx) * coshf(ty);
|
||||
oy -= w * sinf(tx) * sinhf(ty);
|
||||
""")
|
||||
|
||||
var(86, 'tan', """
|
||||
float tanden = 1.0f/(cosf(2.0*tx) + coshf(2.0f*ty));
|
||||
ox += w * tanden * sinf(2.0f*tx);
|
||||
oy += w * tanden * sinhf(2.0f*ty);
|
||||
""")
|
||||
|
||||
var(87, 'sec', """
|
||||
float secden = 2.0f/(cosf(2.0f*tx) + coshf(2.0f*ty));
|
||||
ox += w * secden * cosf(tx) * coshf(ty);
|
||||
oy += w * secden * sinf(tx) * sinhf(ty);
|
||||
""")
|
||||
|
||||
var(88, 'csc', """
|
||||
float cscden = 2.0f/(coshf(2.0f*ty) - cosf(2.0f*tx));
|
||||
ox += w * cscden * sinf(tx) * coshf(ty);
|
||||
oy -= w * cscden * cosf(tx) * sinhf(ty);
|
||||
""")
|
||||
|
||||
var(89, 'cot', """
|
||||
float cotden = 1.0f/(coshf(2.0f*ty) - cosf(2.0f*tx));
|
||||
ox += w * cotden * sinf(2.0f*tx);
|
||||
oy += w * cotden * -1.0f * sinhf(2.0f*ty);
|
||||
""")
|
||||
|
||||
var(90, 'sinh', """
|
||||
ox += w * sinhf(tx) * cosf(ty);
|
||||
oy += w * coshf(tx) * sinf(ty);
|
||||
""")
|
||||
|
||||
var(91, 'cosh', """
|
||||
ox += w * coshf(tx) * cosf(ty);
|
||||
oy += w * sinhf(tx) * sinf(ty);
|
||||
""")
|
||||
|
||||
var(92, 'tanh', """
|
||||
float tanhden = 1.0f/(cosf(2.0f*ty) + coshf(2.0f*tx));
|
||||
ox += w * tanhden * sinhf(2.0f*tx);
|
||||
oy += w * tanhden * sinf(2.0f*ty);
|
||||
""")
|
||||
|
||||
var(93, 'sech', """
|
||||
float sechden = 2.0f/(cosf(2.0f*ty) + coshf(2.0f*tx));
|
||||
ox += w * sechden * cosf(ty) * coshf(tx);
|
||||
oy -= w * sechden * sinf(ty) * sinhf(tx);
|
||||
""")
|
||||
|
||||
var(94, 'csch', """
|
||||
cschden = 2.0f/(coshf(2.0f*tx) - cosf(2.0f*ty));
|
||||
ox += w * cschden * sinhf(tx) * cosf(ty);
|
||||
oy -= w * cschden * coshf(tx) * sinf(ty);
|
||||
""")
|
||||
|
||||
var(95, 'coth', """
|
||||
cothden = 1.0f/(coshf(2.0f*tx) - cosf(2.0f*ty));
|
||||
ox += w * cothden * sinhf(2.0f*tx);
|
||||
oy += w * cothden * sinf(2.0f*ty);
|
||||
""")
|
||||
|
||||
var(97, 'flux', """
|
||||
float xpw = tx + w;
|
||||
float xmw = tx - w;
|
||||
float avgr = w * (2.0f + {{px.get('xf.flux_spread')}}) * sqrtf(sqrtf(ty*ty+xpw*xpw)/sqrtf(ty*ty+xmw*xmw));
|
||||
float avga = (atan2f(ty, xmw) - atan2f(ty,xpw))*0.5f;
|
||||
ox += avgr * cosf(avga);
|
||||
oy += avgr * sinf(avga);
|
||||
""")
|
||||
|
||||
var(98, 'mobius', """
|
||||
float rea = {{px.get('xf.mobius_re_a')}};
|
||||
float ima = {{px.get('xf.mobius_im_a')}};
|
||||
float reb = {{px.get('xf.mobius_re_b')}};
|
||||
float imb = {{px.get('xf.mobius_im_b')}};
|
||||
float rec = {{px.get('xf.mobius_re_c')}};
|
||||
float imc = {{px.get('xf.mobius_im_c')}};
|
||||
float red = {{px.get('xf.mobius_re_d')}};
|
||||
float imd = {{px.get('xf.mobius_im_d')}};
|
||||
|
||||
float re_u, im_u, re_v, im_v, rad_v;
|
||||
|
||||
re_u = rea * tx - ima * ty + reb;
|
||||
im_u = rea * ty + ima * tx + imb;
|
||||
re_v = rec * tx - imc * ty + red;
|
||||
im_v = rec * ty + imc * tx + imd;
|
||||
|
||||
rad_v = w / (re_v*re_v + im_v*im_v);
|
||||
|
||||
ox += rad_v * (re_u*re_v + im_u*im_v);
|
||||
oy += rad_v * (im_u*re_v - re_u*im_v);
|
||||
""")
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user