Page 1 of 1

another questions re: vert(hom(p, q))

Posted: 27 Dec 2012, 00:03
by Jack Love
Can polymake express a vertex map of hom(p, q) explicitly as a map, i.e., as a linear-map-matrix and a shift vector?

Thank you!

Re: another questions re: vert(hom(p, q))

Posted: 16 Jun 2019, 13:29
by joswig
Each point in the mapping polytope/Hom-polytope is encoded as the constant 1 (for homogenization) plus a matrix encoded as consecutive row vectors.
That matrix encodes a projective transformation (yielding affine coordinates, however), such that it can be applied to points in the polytope corresponding to the first argument directly.

Here is a use case (which will become part of the interactive help in the next polymake release):
Let us look at the mapping polytope of the unit interval and the standard unimodular triangle.

Code: Select all

> $I=simplex(1); $T=simplex(2); $Hom_IT=mapping_polytope($I,$T);
The dimension equals (dim I + 1) * dim T.

Code: Select all

> print $Hom_IT->DIM 4 > print rows_labeled($Hom_IT->FACETS,$Hom_IT->FACET_LABELS); v0*F0:0 1 0 0 0 v0*F1:0 0 0 1 0 v0*F2:1 -1 0 -1 0 v1*F0:0 1 1 0 0 v1*F1:0 0 0 1 1 v1*F2:1 -1 -1 -1 -1 > print $Hom_IT->N_VERTICES; 9
This is how to turn, e.g., the first vertex into a linear map.

Code: Select all

> $v=$Hom_IT->VERTICES->[0]; > $M=new Matrix([$v->slice([1..2]),$v->slice([3..4])]); > print $I->VERTICES * transpose($M); 0 0 1 0
The above are coordinates in R^2, without the homogenization commonly used in polymake.