# Copyright (c) 1997-2004 # Ewgenij Gawrilow, Michael Joswig (Technische Universitaet Berlin, Germany) # http://www.math.tu-berlin.de/polymake, mailto:polymake@math.tu-berlin.de # # 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. #----------------------------------------------------------------------------- # $Project: polymake $$Id: VisualPointSet.pm 7540 2006-12-21 21:04:18Z gawrilow $ ############################################################################### # # Visual::PointSet - a cloud of points # package Visual::PointSet; use Struct ( [ '@ISA' => 'Visual::Object' ], # [ "coord vector", ... ] [ '@Vertices | Points' => 'check_points(#%)', default => 'croak("Points missing")' ], # ambient dimension (detected by Points) '$Dim', # "string sting ..." to be split on the white spaces # or [ "string", ... ] # or "hidden" suppress any labels # default: point indices (0,1,...) as labels [ '$VertexLabels | PointLabels' => 'unify_labels(#%)', default => 'undef' ], # "R G B" same color for all points # or [ "R G B", ... ] indexed by point number # or { number => "R G B" } keyed by point number # or sub { } point number -> "R G B" [ '$VertexColor | PointColor' => 'unify_decor(#%)', merge => '$this->merge_decor(#%)', default => '$Visual::Color::vertices' ], # the same formats as for PointColor # recognized values: # "thickness N" diameter of circles representing the points # "hidden" draw neither circles nor point labels [ '$VertexStyle | PointStyle' => 'unify_decor(#%)', merge => '$this->merge_decor(#%)' ], # boolean: don't show this object at the session start (only makes sense for interactive viewers) '$Hidden', ); sub new { my $self=&_new; $self->Dim ||= dim($self->Points); $self; } declare %decorations=( PointLabels => enum('hidden'), VertexLabels => enum('hidden') ); @decorations{qw( Name Title PointColor PointStyle VertexColor VertexStyle Hidden )}=(); 1 # Local Variables: # c-basic-offset:3 # End: