Appending to surface

This is an example of appending an area to a surface/mesh. Click on 'Append' below the plot to extend the plot of sin(x)*sin(y) along the
positive x-axis; the initial surface is blue, and appended regions will be orange.

Mouse controls: Left-click and drag to rotate; alt (Mac)- or ctrl (Windows)-click-drag or middle-click-drag to pan; scroll or shift-click-drag
to zoom. Touch screen controls: one finger to rotate; two-finger scroll to pan; pinch to zoom. Click/tap on the cube icons to snap to a side-on
view.

Append.

You can see how the plot is constructed in the HTML source:

The direction of the appending is specified by params.append_axis. Clicking the above pseudo-link only appends to "+x",
but the append_data() function in this page is ready to handle the other choices, you just have to change append_axis.

If you append to the x-axis, then the appended data must include every existing y-value (and params.data.y must still be specified), and
vice versa.

Despite being called "append", the entire surface gets re-constructed, since the underlying data structures defining it are fixed-length arrays.
For the KdV solitons example, I instead initialised most of the surface to null, and then used
three_d.update_surface_point_z() as needed.