use blib;
use Carp;
$SIG{__DIE__} = sub {die Carp::longmess(@_);};
use PDL;
#$PDL::Graphics::TriD::verbose=1;
use PDL::Graphics::TriD;
use PDL::Graphics::TriD::Image;
use PDL::IO::Pic;
use PDL::Graphics::TriD::GoBoard;
# Calculate some random function
print "START\n";
sub snap {
if(1) {return}
my $ppdl = grabpic3d();
print "GOT PICTURE!\n";
wpic $ppdl,"$_[0].jpg";
system("xv $_[0].jpg");
}
$gob = pdl [
[
[1, 0, 0, 0],
[0, 1, 0, 0],
[0, 0, 1, 0],
[0, 0, 0, 1],
],
[
[0.5, 0.5, 0, 0],
[0.5, 0, 0.5, 0],
[0.5, 0, 0, 0.5],
[0, 0, 0.5, 0.5],
],
[
[0.33, 0.33, 0.33, 0],
[0.33, 0.33, 0, 0.33],
[0.33, 0, 0.33, 0.33],
[0, 0.33, 0.33, 0.33],
],
[
[0.25, 0.25, 0.25, 0.25],
[0.25, 0.25, 0.25, 0.25],
[0.25, 0.25, 0.25, 0.25],
[0.25, 0.25, 0.25, 0.25],
]
];
$gob2 = $gob->slice(":,1:2,1:2");
$gob3 = $gob->slice(":,2:3,2:3");
$b = new PDL::Graphics::TriD::GoBoard({Data => $gob});
$b->add_inlay($gob2,1,1,0.25);
$b->add_inlay($gob3,2,2,0.5);
if(1) {
$win = PDL::Graphics::TriD::get_current_window();
$win->clear_objects();
$win->add_object($b);
$win->twiddle();
}
snap "pic0";
# $f = zeroes(10,10);
# $foo = cos(xvals($f)/1.5) * cos(yvals($f)/1.5)/2;
$t = xvals zeroes 30,30;
$u = yvals zeroes 30,30;
$x = sin($u*0.5 + $t * 0.1)/2+0.5;
$y = cos($u*0.3 + $t * 0.27)/2+0.5;
$z = cos($u*0.1 + $t * 0.56)/2+0.5;
PDL::Graphics::TriD::imagrgb([$x,$y,$z]);
snap "pic1.1";
$x .= $t / 30;
$y .= $u / 30;
$z .= 0.5*($t + $u)/30;
$r = zeroes(4,4,4,4)+0.1;
$g = zeroes(4,4,4,4);
$b = zeroes(4,4,4,4);
($tmp = $r->slice(":,:,2,2")) .= 1;
($tmp = $r->slice(":,:,:,1")) .= 0.5;
($tmp = $g->slice("2,:,1,2")) .= 1;
($tmp = $b->slice("2,3,1,:")) .= 1;
$t = 0.1 * xvals zeroes 300;
$x = sin($t * 0.1)/2+0.5;
$y = cos($t * 0.27)/2+0.5;
$z = cos($t * 0.56)/2+0.5;
line3d([$x,$y,$z],[$x,1-$x,0]);
snap "pic4";
$f = zeroes(3,3);
$foo = ((xvals $f) - 2) ** 2 + ((yvals $f) -2) ** 2;
print $foo;
print "TOIMAG\n";
PDL::Graphics::TriD::imag3d([$foo]); # Use default values to make a 3D plot.
# Stops here for rotating until user presses 'q'.
snap "pic5";
print "OUTOFIMAG\n";