1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
|
# Copyright (c) 1997-2024
# Ewgenij Gawrilow, Michael Joswig, and the polymake team
# Technische Universität Berlin, Germany
# https://polymake.org
#
# This program is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by the
# Free Software Foundation; either version 2, or (at your option) any
# later version: http://www.gnu.org/licenses/gpl.txt.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#-------------------------------------------------------------------------------
# @category Finite metric spaces
# Computes the envelope for a given subdivision of points.
# @param fan::SubdivisionOfPoints sd
# @option Bool extended If True, the envelope of the extended tight span is computed.
# @return Polytope
user_function tight_span_envelope($;{extended=>0}){
my ($sd,$options) = @_;
if($$options{"extended"}){
my $d = $sd->POINTS->cols()-1;
my $vec = new Vector($sd->WEIGHTS->dim()+$d);
$vec->slice(sequence(0, $sd->WEIGHTS->dim())) = $sd->WEIGHTS;
my $mat = $sd->POINTS->minor(All,~[0])/unit_matrix($d);
return new Polytope(INEQUALITIES=>$vec|$mat);
}else{
return new Polytope(INEQUALITIES=>$sd->WEIGHTS|$sd->POINTS->minor(All,~[0]));
}
}
# Local Variables:
# c-basic-offset:3
# mode: perl
# End:
|