8 const gfan::ZVector &interiorPoint,
const gfan::ZMatrix &normalVectors)
10 int k = normalVectors.getHeight();
11 std::vector<bool> needToFlip(
k,
true);
13 int n = normalVectors.getWidth();
14 gfan::ZMatrix testVectors(
k,n);
15 gfan::ZVector bigInteriorPoint = 1000*interiorPoint;
16 for (
int i=0;
i<
k;
i++)
17 testVectors[
i] = bigInteriorPoint+normalVectors[
i];
21 if (sigma->contains(interiorPoint))
23 for (
int i=0;
i<
k;
i++)
25 if (needToFlip[
i] && sigma->contains(testVectors[
i]))
27 needToFlip[
i] =
false;
34 for (groebnerCones::iterator sigma = workingList.begin(); sigma!=workingList.end(); sigma++)
36 if (sigma->contains(interiorPoint))
38 for (
int i=0;
i<
k;
i++)
40 if (needToFlip[
i] && sigma->contains(testVectors[
i]))
42 needToFlip[
i] =
false;
61 workingList.insert(startingCone);
63 std::set<gfan::ZVector> finishedInteriorPoints;
64 while(!workingList.empty())
72 for (
int i=0;
i<interiorPoints.getHeight();
i++)
77 gfan::ZVector interiorPoint = interiorPoints[
i];
90 for (
int j=0;
j<normalVectors.getHeight();
j++)
95 workingList.insert(neighbour);
99 finishedInteriorPoints.insert(interiorPoint);
103 workingList.erase(sigma);
106 Print(
"cones finished: %lu cones in working list: %lu\n",
107 (
unsigned long)
tropicalVariety.size(), (
unsigned long)workingList.size());
114 const gfan::ZMatrix &interiorPoints)
116 int k = interiorPoints.getHeight();
117 std::vector<bool> needToFlip(
k,
true);
121 for (
int i=0;
i<
k;
i++)
123 if (needToFlip[
i] && sigma->contains(interiorPoints[
i]))
124 needToFlip[
i] =
false;
128 for (groebnerCones::iterator sigma = workingList.begin(); sigma!=workingList.end(); sigma++)
130 for (
int i=0;
i<
k;
i++)
132 if (needToFlip[
i] && sigma->contains(interiorPoints[
i]))
133 needToFlip[
i] =
false;
147 workingList.insert(startingCone);
148 std::set<gfan::ZVector> finishedInteriorPoints;
151 while(!workingList.empty())
158 workingList.erase(workingList.begin());
161 gfan::ZMatrix interiorPoints = interiorPointsAndOuterFacetNormals.first;
162 gfan::ZMatrix outerFacetNormals = interiorPointsAndOuterFacetNormals.second;
165 for (
int i=0;
i<interiorPoints.getHeight();
i++)
167 gfan::ZVector interiorPoint = interiorPoints[
i];
169 if (needToFlip[
i]==
true)
172 workingList.insert(neighbour);
174 finishedInteriorPoints.insert(interiorPoints[
i]);
180 Print(
"cones finished: %lu cones in working list: %lu\n",
181 (
unsigned long)
groebnerFan.size(), (
unsigned long)workingList.size());