drawPlot3 = plot3.createDrawFunction(`
uniform float p0_x;
uniform float p0_y;
uniform float p1_x;
uniform float p1_y;
vec2 f (vec2 z) {
vec2 p0 = vec2(0,0);
vec2 p0_ = vec2(p0_x, p0_y);
vec2 p1_ = vec2(p1_x,p1_y);
vec2 p1 = vec2(1,0);
vec2 a0 = cmul(vec2(3,0), p0_);
vec2 a1 = cmul(vec2(3,0), p1_);
vec2 c0 = cmul(vec2(3,0), p0_ - p0);
vec2 c1 = cmul(vec2(6,0), p1_ - p0_);
vec2 c2 = cmul(vec2(3,0), p1 - p1_);
z = cmul(vec2(.25,0), z) + vec2(.5, 0);
vec2 z_ = vec2(1,0) - z;
vec2 z_z_ = cmul(z_, z_);
vec2 z_z = cmul(z_, z);
vec2 zz = cmul(z, z);
vec2 dx = cmul(vec2(c0.x, 0), z_z_) + cmul(vec2(c1.x, 0), z_z) + cmul(vec2(c2.x, 0), zz);
vec2 dy = cmul(vec2(c0.y, 0), z_z_) + cmul(vec2(c1.y, 0), z_z) + cmul(vec2(c2.y, 0), zz);
return csqrt(cmul(dx,dx) + cmul(dy,dy));
}
`)