#  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: construction.rules,v 1.4 2004/11/15 16:04:55 gawrilow Exp $

###################################################################################
#
#  This rulefile is currently included only in order to get client group comments.
#  The definitions of construction functions will be added later.
#
###################################################################################

# topic: clients/Producing from scratch
# With these clients you can create polytopes belonging to various parameterized
# families which occur frequently in polytope theory, as well as random
# polytopes with different models of randomness.

# category: Producing from scratch
# Create the 24-cell polytope.
# return: RationalPolytope

## user_function c24_cell() {
##    my $p=new Apps::polytope::RationalPolytope;
##    client("24-cell", $p);
##    returnObject($p);
## }

# category: Producing from scratch
# Create the 600-cell polytope.
# Cf. Coxeter, Introduction to Geometry, pp 403-404.
# return: RationalPolytope

## user_function c600_cell() {
##    my $p=new Apps::polytope::RationalPolytope;
##    client("600-cell", $p);
##    returnObject($p);
## }

# category: Producing from scratch
# Create the @c d-dimensional associahedron (or Stasheff polytope).
# We use the facet description given in Ziegler's book on polytopes, section 9.2;
# note that this description is not full-dimensional.
# return: RationalPolytope

## user_function associahedron($) {
##    my $p=new Apps::polytope::RationalPolytope;
##    my $d=shift;
##    if (!is_numeric($d) || $d<=0) {
##       croak("usage: associahedron( dimension )");
##    }
##    client("associahedron", $p, $d);
##    returnObject($p);
## }


# topic: clients/Producing a new polyhedron from others
# Another important way of constructing polytopes is to modify an 
# already existing polytope.
#
# Actually, these clients don't alter the input polytope
# (it is forbidden in @c polymake), but create a new polytope object (file).
#
# Many clients can at your choice either calculate the vertex or facet coordinates,
# or constrain themselves on the purely combinatorial description of the
# resulting polytope.


# topic: clients/Transforming a polyhedron
# These clients take a realized polytope and produce a new one by applying a
# suitable affine or projective transformation in order to obtain some special
# coordinate description but preserve the combinatorial type.
#
# For example, before you can polarize an arbitrary polyhedron, it
# must be transformed to a combinatorially equivalent bounded polytope with the
# origin as a relatively interior point. It is achieved with the sequence
# @c @see orthantify - @c @see bound - @c @see center - @c @see polarize.


# Local Variables:
# mode: perl
# c-basic-offset:3
# End:
