#
# PM3D surfaces are not fully included in the calculation of hidden line removal.
# Older versions of gnuplot allowed you to approximate the correct occlusion
# by drawing the surface twice, once "with pm3d" to produce the surface you
# want to show, and once "with lines lt -2" to include the same surface in
# hidden3d calculations but drawn with invisible lines.
# gnuplot version 5 does the approximation for you so the extra copy of the
# surface is no longer necessary.
#
set isosamples 25,25
set xyplane at 0
unset key

set palette rgbformulae 31,-11,32
set style fill solid 0.5
set cbrange [-1:1]

set title "Mixing pm3d surfaces with hidden-line plots"

f(x,y) = sin(-sqrt((x+5)**2+(y-7)**2)*0.5)

set hidden3d front
splot f(x,y) with pm3d, x*x-y*y with lines lc rgb "black"

pause -1 "Hit return to continue"
reset

#
# Image surfaces are similarly overlooked in the calculation of hidden line removal.
# I.e. this demo doesn't actually work yet.  It's here for testing.
#
set isosamples 25,25
set xyplane at 0
unset key

set cbrange [0:255]
set palette cubehelix

set title "Mixing image surface with hidden-line plots"

set hidden3d front
splot 'blutux.rgb' binary array=(128,128) flip=y format='%uchar%uchar%uchar' origin=(-10,-10,0) dx=0.156 dy=0.156 using ($1+$2+$3)/3 with image, \
x*x-y*y with lines lc rgb "black"

pause -1 "Hit return to continue"
reset
#
# Another example of pm3d hidden surface removal,
# this time using pm3d depth-ordering
#
set multiplot title "Interlocking Tori"
set title "PM3D surface\nno depth sorting"

set parametric
set urange [-pi:pi]
set vrange [-pi:pi]
set isosamples 50,20

set origin -0.02,0.0
set size 0.55, 0.9

unset key
unset xtics
unset ytics
unset ztics
set border 0
set view 60, 30, 1.5, 0.9
unset colorbox

set pm3d scansbackward
splot cos(u)+.5*cos(u)*cos(v),sin(u)+.5*sin(u)*cos(v),.5*sin(v) with pm3d, \
      1+cos(u)+.5*cos(u)*cos(v),.5*sin(v),sin(u)+.5*sin(u)*cos(v) with pm3d

set title "PM3D surface\ndepth sorting"

set origin 0.40,0.0
set size 0.55, 0.9
set colorbox vertical user origin 0.9, 0.15 size 0.02, 0.50
set format cb "%.1f"

set pm3d depthorder
splot cos(u)+.5*cos(u)*cos(v),sin(u)+.5*sin(u)*cos(v),.5*sin(v) with pm3d, \
      1+cos(u)+.5*cos(u)*cos(v),.5*sin(v),sin(u)+.5*sin(u)*cos(v) with pm3d

unset multiplot

pause -1 "Hit return to continue"

reset
