= #JxnPortable\docs\plot_examples\PlotFrameDemo.jxn

owner = @Frame( "PlotFrameDemo" )
#JXN:include/SliderInclude
owner.setFont( @java.awt.Font( "Dialog", Font.BOLD, 16 ) )
#JXN:include/P3dInclude
phi = p3d_phi
!
!
! graphs depending on one single variable x or t
!
! 1a: x -> y
y1a = sin x / x
pf1a = plot( x, y1a ).setXYLabels( "x", "y = f(x)" )
!
! 1b: t -> x, y
x1b = exp -4 t * cos( 10 PI t - toRadians phi )
y1b = exp -4 t * sin( 10 PI t - toRadians phi )
pf1b = plot( x1b, y1b ).setXYLabels( "x", "y" ).setHeadline( "x = f(t);   y = g(t)" )
!
! 1c: t -> x, y, z
x1c = sqrt 1.25 t * cos 10 PI t
y1c = sqrt 1.25 t * sin 10 PI t
z1c = 1.25 t
pf1c = plot( p3d ).add( x1c, y1c, z1c )
pf1c.setAutoScale(0).setHeadline( "x = f(t);   y = g(t);   z = h(t)" )
!
!
! graphs depending on two variables u and v
!
! 2a: x, y -> z
uv2a = @JxnUVGrid( -2.5, 2.5, 0.25, -2.5, 2.5, 0.25, -2 )
x2a = uv2a.u()
y2a = uv2a.v()
! z2a = max( h0 - x2a^2 - 4 y2a^2, 0 )
z2a = ( x2a^2 + 2.5 y2a^2 - y2a ) * exp( 1 - x2a^2 - y2a^2 )
pf2a = plot( p3d ).add( x2a, y2a, z2a )
pf2a.setAutoScale(0).setHeadline( "z = f(x,y)" )
!
! 2b: u, v -> x, y
uv2b = @JxnUVGrid( 0., 360., 30., 0., 1.0, 0.2, -5 )
x2b = uv2b.v() cosD( uv2b.u() + phi )
y2b = uv2b.v() sinD( uv2b.u() + phi )
pf2b = plot( x2b, y2b, 1. ).setXYLabels( "x", "y" ).setHeadline( "x = f(u,v);   y = g(u,v)" )
!
! 2c: u, v -> x, y, z
uv2c = @JxnUVGrid( -90., 90., 30., -210., 210., 30., 10 )
lat = uv2c.u()
lon = clip( uv2c.v(), -180., 180. )
x2c = cosD lat * cosD lon
y2c = cosD lat * sinD lon
z2c = sinD lat
zv2c = sw( getZ( p3d, { x2c, y2c, z2c } ), Double.NaN + z2c, z2c )  ! visible -> solid line
zh2c = sw( getZ( p3d, { x2c, y2c, z2c } ), z2c, Double.NaN + z2c )  ! hidden -> broken line
pf2c = plot( p3d ).add( x2c, y2c, zv2c ).add( x2c, y2c, zh2c, R, -1 )
pf2c.setHeadline( "x = f(u,v);   y = g(u,v);   z = h(u,v)" )
!
!
grid15 = @Panel()  ! 6 PlotFrame are merged into one common Frame together with the slider and slider variable fields.
#JXN:include/Grid15Include.jxn( pf1a, pf1b, pf1c, pf2a, pf2b, pf2c )
owner.add( grid15, java.awt.BorderLayout.CENTER )
slider.getSliderFrame().hide()
#JXN:include/FrameInclude.jxn