I tried to define a patchwork using its dual subdivision, as shown at the end of the tutorial https://polymake.org/doku.php/user_guid ... /patchwork .
My code is as follows :
Code: Select all
my $dual_sub = new fan::SubdivisionOfPoints(POINTS=>[[1, 2, 0, 0],[1, 1, 0, 1],[1, 0, 0, 2],[1, 1, 1, 0],[1, 0, 1, 1],[1, 0, 2, 0]],MAXIMAL_CELLS=>[[3, 4, 5],[1, 3, 4],[1, 2, 4],[0, 1, 3]]);
my $h2 = new Hypersurface<Min>(DUAL_SUBDIVISION=>$dual_sub);
my $h2_pw = $h2->PATCHWORK(SIGNS=>[0, 1, 0, 1, 1, 0]);
my $h2_pw_r = $h2_pw->realize();
As a comparison, the dual subdivision I am defining above and the associated signs are those of a Harnack curve of degree 2 (unless I have made a very dumb mistake), as can be checked with the following code (that runs without any problem) :polymake: ERROR: "/usr/local/share/polymake/perllib/Polymake/Core/BigObjectType.pm", line 1017: Can't locate object method "code" via package "0" (perhaps you forgot to load "0"?)
Code: Select all
my $h1 = harnack_curve(2);
my $h1_pw1 = $h1->PATCHWORK;
print $h1->DUAL_SUBDIVISION->POINTS;
print "\n";
print $h1->DUAL_SUBDIVISION->MAXIMAL_CELLS;
print "\n";
print $h1_pw1->SIGNS;
print "\n";
my $h1_pw_r = $h1_pw1->realize();
What causes this problem ? Is it because there is no canonical embedding of the hypersurface in the real/projective space ?
Thank you very much for your time !
Best regards,
Charles Arnal
P.S. :
A short side question : I think I have noticed that when defining a hypersurface as above with a dual subdivision, the POINTS of the triangulation need to be its vertices (in other words, there cannot be points in POINTS that are e.g. in the interior of a maximal cell) - otherwise, some signs in SIGNS are ignored.
This can be seen in the following code :
Code: Select all
my $dual_sub = new fan::SubdivisionOfPoints(POINTS=>[[1, 2, 0, 0],[1, 1, 0, 1],[1, 0, 0, 2],[1, 1, 1, 0],[1, 0, 1, 1],[1, 0, 2, 0]],
MAXIMAL_CELLS=>[[0,2,5]]);
my $h2 = new Hypersurface<Min>(DUAL_SUBDIVISION=>$dual_sub);
my $h2_pw = $h2->PATCHWORK(SIGNS=>[0, 0, 0, 0, 0, 0]);