4
#include "gfanapplication.h"
6
class XfigConstructionApplication : public GFanApplication
9
bool includeInDefaultInstallation()
13
XfigConstructionApplication()
19
return "_xfigconstruction";
25
IntegerVectorList a=P.parseIntegerVectorList();
26
IntegerVectorList b=P.parseIntegerVectorList();
27
IntegerVector invertVector=P.parseIntegerVector();
29
int nEdges=a.begin()->size();
30
int nCycles=a.size()/dimension;
31
fprintf(Stderr,"nEdges %i nCycles %i\n",nEdges,nCycles);
33
for(int i=0;i<nEdges;i++)
35
IntegerVector direction(dimension);
37
IntegerVectorList::const_iterator J=a.begin();
38
for(int j=0;j<nCycles;j++)
40
for(int k=0;k<dimension;k++)
45
if(dot(direction,direction))break;
47
direction=invertVector[i]*direction;
48
IntegerVector scaleVectorSum(dimension);
49
if(dot(direction,direction))
51
IntegerVectorList::const_iterator J=a.begin();
52
for(int j=0;j<nCycles;j++)
54
IntegerVector cycleVector(dimension);
55
for(int k=0;k<dimension;k++)
57
cycleVector[k]=(*J)[i];
60
int sign=dot(cycleVector,direction)/dot(direction,direction);
62
IntegerVector scaleVector(dimension);
63
for(int k=0;k<dimension;k++)
65
scaleVector[k]=(*b.begin())[j*4+k];
67
scaleVectorSum+=sign*scaleVector;
69
if(!scaleVectorSum.isZero())
71
fprintf(Stderr,"%i:",i);
72
AsciiPrinter(Stderr).printVector(direction);
73
AsciiPrinter(Stderr).printVector(scaleVectorSum);
75
fprintf(Stderr," %i\n",dot(direction,scaleVectorSum));
76
fprintf(Stdout,"4 0 0 50 -1 0 6 0.0000 6 480 2805 3375 3675 ");
77
fprintf(Stdout,"$\\\\left(\\\\begin{tabular}{c}");
78
for(int k=0;k<dimension;k++)
80
if(k)fprintf(Stdout,"\\\\\\\\");
81
fprintf(Stdout," %i ",scaleVectorSum[k]);
83
fprintf(Stdout,"\\\\end{tabular}\\\\right)");
84
fprintf(Stdout,"\\\\cdot s_{%i}",i);
85
fprintf(Stdout,"\\\\left(\\\\begin{tabular}{c}");
86
for(int k=0;k<dimension;k++)
88
if(k)fprintf(Stdout,"\\\\\\\\");
89
fprintf(Stdout," %i ",direction[k]);
91
fprintf(Stdout,"\\\\end{tabular}\\\\right)$");
92
fprintf(Stdout,"\\001\n");
98
AsciiPrinter(Stdout).printVectorList(multiplyIntegerVectorList(a,b));
101
const char *helpText()
103
return "This program should not be in the final release. It is used for generating xfig files for showing non realizable state polyhedra.\n";
107
static XfigConstructionApplication theApplication;