|
D.13.2.7 coneViaPoints
Procedure from library gfan.lib (see gfan_lib).
- Usage:
- coneViaPoints(HL); intmat HL
coneViaPoints(HL,L); intmat HL, intmat L
coneViaPoints(HL,L,flags); intmat HL, intmat L, int flags
- Return:
- cone
- Purpose:
- cone generated by half lines generated by the row vectors of HL
and (if stated) by lines generated by the row vectors of L;
flags may range between 0,..,3 defining an upper and lower bit
(0=0*2+0, 1=0*2+1, 2=1*2+0, 3=1*2+1),
if upper bit is 1, then program assumes that each row vector in HL
generates a ray of the cone,
if lower bit is 1, then program assumes that the span of the row
vectors of L is the lineality space of the cone,
if either bit is 0, then program computes the information itself.
Example:
| LIB "gfan.lib";
// Let's define a cone in R^3 generated by the following half lines:
intmat HL[5][3]=
1,0, 0,
-1,0, 0,
0,1, 1,
0,1,-1,
0,0, 1;
cone c=coneViaPoints(HL);
c;
==> AMBIENT_DIM
==> 3
==> FACETS
==> 0,1,0,
==> 0,1,1
==> LINEAR_SPAN
==>
==>
kill HL,c;
// Note that (1,0,0) and (-1,0,0) form a line, hence also possible:
intmat HL[3][3]=
0,1, 1,
0,1,-1,
0,0, 1;
intmat L[1][3]=
1,0,0;
cone c=coneViaPoints(HL,L);
c;
==> AMBIENT_DIM
==> 3
==> FACETS
==> 0,1,0,
==> 0,1,1
==> LINEAR_SPAN
==>
==>
kill HL,L,c;
// lineality space is exactly Lin(1,0,0)
intmat HL[3][3]=
0,1, 1,
0,1,-1,
0,0, 1;
intmat L[1][3]=
1,0,0;
cone c=coneViaPoints(HL,L,1);
c;
==> AMBIENT_DIM
==> 3
==> FACETS
==> 0,1,0,
==> 0,1,1
==> LINEAR_SPAN
==>
==>
kill HL,L,c;
// and that (0,1,-1), (0,1,1) generate rays
intmat HL[3][3]=
0,1, 1,
0,1,-1;
intmat L[1][3]=
1,0,0;
cone c=coneViaPoints(HL,L,1);
c;
==> AMBIENT_DIM
==> 3
==> FACETS
==> 0,1,-1,
==> 0,1, 1
==> LINEAR_SPAN
==>
==>
kill HL,L,c;
// and that (0,1,-1), (0,1,1) generate rays
intmat HL[3][3]=
0,1, 1,
0,1,-1;
intmat L[1][3]=
1,0,0;
cone c=coneViaPoints(HL,L,3);
c;
==> AMBIENT_DIM
==> 3
==> FACETS
==> 0,1,-1,
==> 0,1, 1
==> LINEAR_SPAN
==>
==>
|
|