# set terminal canvas  rounded size 600,400 enhanced fsize 10 lw 1.6 fontscale 1 name "spline_6" jsdir "."
# set output 'spline.6.js'
set dummy t, y
set grid nopolar
set grid xtics nomxtics ytics nomytics noztics nomztics nortics nomrtics \
 nox2tics nomx2tics noy2tics nomy2tics nocbtics nomcbtics
set grid layerdefault   lt 0 linecolor 0 linewidth 0.500,  lt 0 linecolor 0 linewidth 0.500
set key fixed right top vertical Right noreverse enhanced autotitle box lt black linewidth 1.000 dashtype solid
set arrow 1 from 0.330000, 0.200000, 0.00000 to 0.230000, 0.366667, 0.00000 head back nofilled linewidth 1.000 dashtype solid
set arrow 2 from 0.660000, 0.800000, 0.00000 to 0.526667, 0.866667, 0.00000 head back nofilled linewidth 1.000 dashtype solid
set arrow 3 from 0.330000, 0.200000, 0.00000 to 0.0300000, 0.700000, 0.00000 head back nofilled linewidth 1.000 dashtype solid
set arrow 4 from 0.660000, 0.800000, 0.00000 to 0.260000, 1.00000, 0.00000 head back nofilled linewidth 1.000 dashtype solid
set parametric
set style data lines
set title "The cubic Hermite basis functions in use" 
set trange [ 0.00000 : 1.00000 ] noreverse nowriteback
set xrange [ 0.00000 : 1.00000 ] noreverse nowriteback
set x2range [ * : * ] noreverse writeback
set yrange [ -0.200000 : 1.40000 ] noreverse nowriteback
set y2range [ * : * ] noreverse writeback
set zrange [ * : * ] noreverse writeback
set cbrange [ * : * ] noreverse writeback
set rrange [ * : * ] noreverse writeback
set colorbox vertical origin screen 0.9, 0.2 size screen 0.05, 0.6 front  noinvert bdefault
m0(x) = 1
m1(x) = x
m2(x) = x**2
m3(x) = x**3
h00(x) = x**2 * ( 2 * x - 3) + 1
h01(x) = -x**2 * (2 * x - 3)
h10(x) = x * (x - 1)**2
h11(x) = x**2 * (x - 1)
bez0(x) = (1 - x)**3
bez1(x) = 3 * (1 - x)**2 * x
bez2(x) = 3 * (1 - x) * x**2
bez3(x) = x**3
bsp0(x) = ( 1 - 3 * x + 3 * x**2 - x**3 ) / 6
bsp1(x) = ( 4 - 6 * x**2 + 3 * x**3 ) / 6
bsp2(x) = ( 1 + 3 * x + 3 * x**2 - 3 * x**3 ) / 6
bsp3(x) = x**3 / 6
cub_bezier_x(t) = bez0(t) * x0 + bez1(t) * x1 + bez2(t) * x2 + bez3(t) * x3
cub_bezier_y(t) = bez0(t) * y0 + bez1(t) * y1 + bez2(t) * y2 + bez3(t) * y3
cub_bsplin_x(t) = bsp0(t) * x0 + bsp1(t) * x1 + bsp2(t) * x2 + bsp3(t) * x3
cub_bsplin_y(t) = bsp0(t) * y0 + bsp1(t) * y1 + bsp2(t) * y2 + bsp3(t) * y3
cub_hermit_x1(t) = h00(t) * x1 + h01(t) * x2 + h10(t) * xv0 + h11(t) * xv1
cub_hermit_y1(t) = h00(t) * y1 + h01(t) * y2 + h10(t) * yv0 + h11(t) * yv1
cub_hermit_x2(t) = h00(t) * x1 + h01(t) * x2 + h10(t) * xv0*3 + h11(t) * xv1*3
cub_hermit_y2(t) = h00(t) * y1 + h01(t) * y2 + h10(t) * yv0*3 + h11(t) * yv1*3
y0 = 1
y1 = 0.2
y2 = 0.8
y3 = 0
x0 = 0
x1 = 0.33
x2 = 0.66
x3 = 1
xv0 = -0.3
yv0 = 0.5
xv1 = -0.4
yv1 = 0.2
plot cub_hermit_x1(t), cub_hermit_y1(t) with lines lt 2,     cub_hermit_x2(t), cub_hermit_y2(t) with lines lt 3