TSX.setBoundingBox(-5, 5, 5, -5)
TSX.addAxis()
let box = [-5, 5];
let view = TSX.view3D(-6, -3, 8, 8, box, box, [0, 5],
{
xPlaneRear: { visible: false },
yPlaneRear: { visible: false },
});
// Function F to be plotted
let F = (x: number, y: number) => Math.pow(x, .5) + Math.pow(y, .5);
// 3D surface
let s = view.functiongraph3D(
F,
box,
box,
{
strokeWidth: 0.5,
stepsU: 70,
stepsV: 70
})
let sliderZ = TSX.slider([-4.5, 4.5], [-1, 4.5], [0, 2, 10], { name: 'Z' })
// some level curves at z=0
let curves = [1, 3, 5, 7, 9, 11]
curves.forEach((n: number) => {
view.curve3D(
(x: number) => n * Math.pow(x, .5) / Math.pow(x, 2),
(y: number) => y,
(z: number) => 0,
[0, 5],
{ strokeColor: 'black' })
})
// finally the curve on the surface
view.curve3D(
(x: number) => sliderZ.Value() * Math.pow(x, .5) / Math.pow(x, 2),
(y: number) => y,
(z: number) => Math.pow(sliderZ.Value(), .5) ,
[0, 5],
{ strokeColor: 'red', strokeWidth: 3 })