mirror of
https://github.com/NGSolve/netgen.git
synced 2024-11-12 00:59:16 +05:00
Merge branch 'splitimprove2' into 'master'
Splitimprove2 See merge request jschoeberl/netgen!330
This commit is contained in:
commit
31a64cd728
@ -1035,6 +1035,39 @@ double MinDistLP2 (const Point3d & lp1, const Point3d & lp2, const Point3d & p)
|
||||
}
|
||||
|
||||
|
||||
double MinDistLP2 (const Point3d & lp1, const Point3d & lp2, const Point3d & p, double & lam)
|
||||
{
|
||||
Vec3d v(lp1, lp2);
|
||||
Vec3d vlp(lp1, p);
|
||||
|
||||
// dist(lam) = \| vlp \|^2 - 2 lam (v1p, v) + lam^2 \| v \|^2
|
||||
|
||||
// lam = (v * vlp) / (v * v);
|
||||
// if (lam < 0) lam = 0;
|
||||
// if (lam > 1) lam = 1;
|
||||
|
||||
double num = v*vlp;
|
||||
double den = v*v;
|
||||
|
||||
if (num <= 0)
|
||||
{
|
||||
lam = 0.0;
|
||||
return Dist2 (lp1, p);
|
||||
}
|
||||
|
||||
if (num >= den)
|
||||
{
|
||||
lam = 1.0;
|
||||
return Dist2 (lp2, p);
|
||||
}
|
||||
|
||||
lam = num/den;
|
||||
if (den > 0)
|
||||
return vlp.Length2() - num * num /den;
|
||||
else
|
||||
return vlp.Length2();
|
||||
}
|
||||
|
||||
|
||||
double MinDistTP2 (const Point3d & tp1, const Point3d & tp2,
|
||||
const Point3d & tp3, const Point3d & p)
|
||||
@ -1102,7 +1135,7 @@ double MinDistTP2 (const Point3d & tp1, const Point3d & tp2,
|
||||
|
||||
// 0 checks !!!
|
||||
double MinDistLL2 (const Point3d & l1p1, const Point3d & l1p2,
|
||||
const Point3d & l2p1, const Point3d & l2p2)
|
||||
const Point3d & l2p1, const Point3d & l2p2, double & lam1, double & lam2 )
|
||||
{
|
||||
// dist(lam1,lam2) = \| l2p1+lam2v2 - (l1p1+lam1 v1) \|
|
||||
// min !
|
||||
@ -1112,7 +1145,7 @@ double MinDistLL2 (const Point3d & l1p1, const Point3d & l1p2,
|
||||
Vec3d v2 (l2p1, l2p2);
|
||||
|
||||
double a11, a12, a22, rs1, rs2;
|
||||
double lam1, lam2, det;
|
||||
double det;
|
||||
|
||||
a11 = v1*v1;
|
||||
a12 = -(v1*v2);
|
||||
@ -1138,14 +1171,27 @@ double MinDistLL2 (const Point3d & l1p1, const Point3d & l1p2,
|
||||
}
|
||||
|
||||
double minv, hv;
|
||||
minv = MinDistLP2 (l1p1, l1p2, l2p1);
|
||||
hv = MinDistLP2 (l1p1, l1p2, l2p2);
|
||||
if (hv < minv) minv = hv;
|
||||
minv = MinDistLP2 (l1p1, l1p2, l2p1, lam1);
|
||||
lam2 = 0.;
|
||||
hv = MinDistLP2 (l1p1, l1p2, l2p2, lam1);
|
||||
if (hv < minv)
|
||||
{
|
||||
lam2 = 1.;
|
||||
minv = hv;
|
||||
}
|
||||
|
||||
hv = MinDistLP2 (l2p1, l2p2, l1p1);
|
||||
if (hv < minv) minv = hv;
|
||||
hv = MinDistLP2 (l2p1, l2p2, l1p2);
|
||||
if (hv < minv) minv = hv;
|
||||
hv = MinDistLP2 (l2p1, l2p2, l1p1, lam2);
|
||||
if (hv < minv)
|
||||
{
|
||||
lam1 = 0.;
|
||||
minv = hv;
|
||||
}
|
||||
hv = MinDistLP2 (l2p1, l2p2, l1p2, lam2);
|
||||
if (hv < minv)
|
||||
{
|
||||
lam1 = 1.;
|
||||
minv = hv;
|
||||
}
|
||||
|
||||
return minv;
|
||||
}
|
||||
|
@ -91,6 +91,9 @@ extern double MinDistTP2 (const Point3d & tp1, const Point3d & tp2,
|
||||
extern double MinDistLL2 (const Point3d & l1p1, const Point3d & l1p2,
|
||||
const Point3d & l2p1, const Point3d & l2p2);
|
||||
|
||||
extern double MinDistLL2 (const Point3d & l1p1, const Point3d & l1p2,
|
||||
const Point3d & l2p1, const Point3d & l2p2, double & lam1, double & lam2 );
|
||||
|
||||
}
|
||||
|
||||
#endif
|
||||
|
@ -28,6 +28,106 @@ double CalcBadReplacePoints (const Mesh::T_POINTS & points, const MeshingParamet
|
||||
return CalcTetBadness (*p[0], *p[1], *p[2], *p[3], h, mp);
|
||||
}
|
||||
|
||||
static ArrayMem<Element, 3> SplitElement (Element old, PointIndex pi0, PointIndex pi1, PointIndex pinew)
|
||||
{
|
||||
ArrayMem<Element, 3> new_elements;
|
||||
// split element by cutting edge pi0,pi1 at pinew
|
||||
auto np = old.GetNP();
|
||||
old.flags.illegal_valid = 0;
|
||||
if(np == 4)
|
||||
{
|
||||
// Split tet into two tets
|
||||
Element newel0 = old;
|
||||
Element newel1 = old;
|
||||
for (int i : Range(4))
|
||||
{
|
||||
if(newel0[i] == pi0) newel0[i] = pinew;
|
||||
if(newel1[i] == pi1) newel1[i] = pinew;
|
||||
}
|
||||
new_elements.Append(newel0);
|
||||
new_elements.Append(newel1);
|
||||
}
|
||||
else if (np == 5)
|
||||
{
|
||||
// split pyramid into pyramid and two tets
|
||||
Element new_pyramid = old;
|
||||
new_pyramid[4] = pinew;
|
||||
new_elements.Append(new_pyramid);
|
||||
|
||||
auto pibase = (pi0==old[4]) ? pi1 : pi0;
|
||||
auto pitop = (pi0==old[4]) ? pi0 : pi1;
|
||||
|
||||
Element new_tet0 = old;
|
||||
Element new_tet1 = old;
|
||||
new_tet0.SetType(TET);
|
||||
new_tet1.SetType(TET);
|
||||
|
||||
size_t pibase_index=0;
|
||||
for(auto i : Range(4))
|
||||
if(old[i]==pibase)
|
||||
pibase_index = i;
|
||||
|
||||
new_tet0[0] = old[(pibase_index+1)%4];
|
||||
new_tet0[1] = old[(pibase_index+2)%4];
|
||||
new_tet0[2] = pinew;
|
||||
new_tet0[3] = pitop;
|
||||
new_elements.Append(new_tet0);
|
||||
|
||||
new_tet1[0] = old[(pibase_index+2)%4];
|
||||
new_tet1[1] = old[(pibase_index+3)%4];
|
||||
new_tet1[2] = pinew;
|
||||
new_tet1[3] = pitop;
|
||||
new_elements.Append(new_tet1);
|
||||
}
|
||||
|
||||
return new_elements;
|
||||
};
|
||||
|
||||
static double SplitElementBadness (const Mesh::T_POINTS & points, const MeshingParameters & mp, Element old, PointIndex pi0, PointIndex pi1, MeshPoint & pnew)
|
||||
{
|
||||
double badness = 0;
|
||||
auto np = old.GetNP();
|
||||
PointIndex dummy{-1};
|
||||
if(np == 4)
|
||||
{
|
||||
// Split tet into two tets
|
||||
badness += CalcBadReplacePoints ( points, mp, old, 0, pi0, dummy, pnew );
|
||||
badness += CalcBadReplacePoints ( points, mp, old, 0, pi1, dummy, pnew );
|
||||
}
|
||||
else if (np == 5)
|
||||
{
|
||||
// split pyramid into pyramid and two tets
|
||||
auto pibase = (pi0==old[4]) ? pi1 : pi0;
|
||||
auto pitop = (pi0==old[4]) ? pi0 : pi1;
|
||||
|
||||
badness += CalcBadReplacePoints ( points, mp, old, 0, pitop, dummy, pnew );
|
||||
|
||||
Element tet = old;
|
||||
tet.SetType(TET);
|
||||
|
||||
size_t pibase_index=0;
|
||||
for(auto i : Range(4))
|
||||
if(old[i]==pibase)
|
||||
pibase_index = i;
|
||||
|
||||
MeshPoint p[4];
|
||||
p[0] = points[old[(pibase_index+1)%4]];
|
||||
p[1] = points[old[(pibase_index+2)%4]];
|
||||
p[2] = pnew;
|
||||
p[3] = points[pitop];
|
||||
badness += CalcTetBadness (p[0], p[1], p[2], p[3], 0, mp);
|
||||
|
||||
p[0] = points[old[(pibase_index+2)%4]];
|
||||
p[1] = points[old[(pibase_index+3)%4]];
|
||||
p[2] = pnew;
|
||||
p[3] = points[pitop];
|
||||
badness += CalcTetBadness (p[0], p[1], p[2], p[3], 0, mp);
|
||||
}
|
||||
|
||||
return badness;
|
||||
};
|
||||
|
||||
|
||||
/*
|
||||
Combine two points to one.
|
||||
Set new point into the center, if both are
|
||||
@ -59,6 +159,7 @@ double MeshOptimize3d :: CombineImproveEdge (Mesh & mesh,
|
||||
{
|
||||
Element & elem = mesh[ei];
|
||||
if (elem.IsDeleted()) return false;
|
||||
if(elem.GetType() != TET) return false; // TODO: implement case where pi0 or pi1 is top of a pyramid
|
||||
|
||||
if (elem[0] == pi1 || elem[1] == pi1 || elem[2] == pi1 || elem[3] == pi1)
|
||||
{
|
||||
@ -3902,6 +4003,207 @@ void MeshOptimize3d :: SwapImprove2 (Mesh & mesh, OPTIMIZEGOAL goal)
|
||||
(*testout) << "swapimprove2 done" << "\n";
|
||||
}
|
||||
|
||||
double MeshOptimize3d :: SplitImprove2Element (Mesh & mesh,
|
||||
ElementIndex ei,
|
||||
const Table<ElementIndex, PointIndex> & elements_of_point,
|
||||
const Array<double> & el_badness,
|
||||
bool check_only)
|
||||
{
|
||||
auto & el = mesh[ei];
|
||||
if(el.GetType() != TET)
|
||||
return false;
|
||||
|
||||
// Optimize only bad elements
|
||||
if(el_badness[ei] < 100)
|
||||
return false;
|
||||
|
||||
// search for very flat tets, with two disjoint edges nearly crossing, like a rectangle with diagonals
|
||||
static constexpr int tetedges[6][2] =
|
||||
{ { 0, 1 }, { 0, 2 }, { 0, 3 },
|
||||
{ 1, 2 }, { 1, 3 }, { 2, 3 } };
|
||||
|
||||
int minedge = -1;
|
||||
double mindist = 1e99;
|
||||
double minlam0, minlam1;
|
||||
|
||||
for (int i : Range(3))
|
||||
{
|
||||
auto pi0 = el[tetedges[i][0]];
|
||||
auto pi1 = el[tetedges[i][1]];
|
||||
auto pi2 = el[tetedges[5-i][0]];
|
||||
auto pi3 = el[tetedges[5-i][1]];
|
||||
|
||||
double lam0, lam1;
|
||||
double dist = MinDistLL2(mesh[pi0], mesh[pi1], mesh[pi2], mesh[pi3], lam0, lam1 );
|
||||
if(dist<mindist)
|
||||
{
|
||||
mindist = dist;
|
||||
minedge = i;
|
||||
minlam0 = lam0;
|
||||
minlam1 = lam1;
|
||||
}
|
||||
}
|
||||
|
||||
if(minedge==-1)
|
||||
return false;
|
||||
|
||||
auto pi0 = el[tetedges[minedge][0]];
|
||||
auto pi1 = el[tetedges[minedge][1]];
|
||||
auto pi2 = el[tetedges[5-minedge][0]];
|
||||
auto pi3 = el[tetedges[5-minedge][1]];
|
||||
|
||||
// we cannot split edges on the boundary
|
||||
if(mesh.BoundaryEdge (pi0,pi1) || mesh.BoundaryEdge(pi2, pi3))
|
||||
return false;
|
||||
|
||||
ArrayMem<ElementIndex, 50> has_both_points0;
|
||||
ArrayMem<ElementIndex, 50> has_both_points1;
|
||||
|
||||
Point3d p[4] = { mesh[el[0]], mesh[el[1]], mesh[el[2]], mesh[el[3]] };
|
||||
auto center = Center(p[0]+minlam0*(p[1]-p[0]), p[2]+minlam1*(p[3]-p[2]));
|
||||
MeshPoint pnew;
|
||||
|
||||
pnew(0) = center.X();
|
||||
pnew(1) = center.Y();
|
||||
pnew(2) = center.Z();
|
||||
|
||||
// find all tets with edge (pi0,pi1) or (pi2,pi3)
|
||||
for (auto ei0 : elements_of_point[pi0] )
|
||||
{
|
||||
Element & elem = mesh[ei0];
|
||||
if (elem.IsDeleted()) return false;
|
||||
if (ei0 == ei) continue;
|
||||
|
||||
if (elem[0] == pi1 || elem[1] == pi1 || elem[2] == pi1 || elem[3] == pi1 || (elem.GetNP()==5 && elem[4]==pi1) )
|
||||
if(!has_both_points0.Contains(ei0))
|
||||
has_both_points0.Append (ei0);
|
||||
}
|
||||
|
||||
for (auto ei1 : elements_of_point[pi2] )
|
||||
{
|
||||
Element & elem = mesh[ei1];
|
||||
if (elem.IsDeleted()) return false;
|
||||
if (ei1 == ei) continue;
|
||||
|
||||
if (elem[0] == pi3 || elem[1] == pi3 || elem[2] == pi3 || elem[3] == pi3 || (elem.GetNP()==5 && elem[4]==pi3))
|
||||
if(!has_both_points1.Contains(ei1))
|
||||
has_both_points1.Append (ei1);
|
||||
}
|
||||
|
||||
double badness_before = el_badness[ei];
|
||||
double badness_after = 0.0;
|
||||
|
||||
for (auto ei0 : has_both_points0)
|
||||
{
|
||||
if(mesh[ei0].GetType()!=TET)
|
||||
return false;
|
||||
badness_before += el_badness[ei0];
|
||||
badness_after += SplitElementBadness (mesh.Points(), mp, mesh[ei0], pi0, pi1, pnew);
|
||||
}
|
||||
for (auto ei1 : has_both_points1)
|
||||
{
|
||||
if(mesh[ei1].GetType()!=TET)
|
||||
return false;
|
||||
badness_before += el_badness[ei1];
|
||||
badness_after += SplitElementBadness (mesh.Points(), mp, mesh[ei1], pi2, pi3, pnew);
|
||||
}
|
||||
|
||||
if(check_only)
|
||||
return badness_after-badness_before;
|
||||
|
||||
if(badness_after<badness_before)
|
||||
{
|
||||
PointIndex pinew = mesh.AddPoint (center);
|
||||
el.flags.illegal_valid = 0;
|
||||
el.Delete();
|
||||
|
||||
for (auto ei1 : has_both_points0)
|
||||
{
|
||||
auto new_els = SplitElement(mesh[ei1], pi0, pi1, pinew);
|
||||
for(const auto & el : new_els)
|
||||
mesh.AddVolumeElement(el);
|
||||
mesh[ei1].Delete();
|
||||
}
|
||||
for (auto ei1 : has_both_points1)
|
||||
{
|
||||
auto new_els = SplitElement(mesh[ei1], pi2, pi3, pinew);
|
||||
for(const auto & el : new_els)
|
||||
mesh.AddVolumeElement(el);
|
||||
mesh[ei1].Delete();
|
||||
}
|
||||
}
|
||||
return badness_after-badness_before;
|
||||
}
|
||||
|
||||
// Split two opposite edges of very flat tet and let all 4 new segments have one common vertex
|
||||
// Imagine a square with 2 diagonals -> new point where diagonals cross, remove the flat tet
|
||||
void MeshOptimize3d :: SplitImprove2 (Mesh & mesh)
|
||||
{
|
||||
static Timer t("MeshOptimize3d::SplitImprove2"); RegionTimer reg(t);
|
||||
static Timer tsearch("Search");
|
||||
static Timer topt("Optimize");
|
||||
|
||||
int ne = mesh.GetNE();
|
||||
auto elements_of_point = mesh.CreatePoint2ElementTable();
|
||||
int ntasks = 4*ngcore::TaskManager::GetNumThreads();
|
||||
|
||||
const char * savetask = multithread.task;
|
||||
multithread.task = "Optimize Volume: Split Improve 2";
|
||||
|
||||
Array<double> el_badness (ne);
|
||||
|
||||
ParallelForRange(Range(ne), [&] (auto myrange)
|
||||
{
|
||||
for (ElementIndex ei : myrange)
|
||||
{
|
||||
if(mp.only3D_domain_nr && mp.only3D_domain_nr != mesh[ei].GetIndex())
|
||||
continue;
|
||||
el_badness[ei] = CalcBad (mesh.Points(), mesh[ei], 0);
|
||||
}
|
||||
});
|
||||
|
||||
mesh.BoundaryEdge (1,2); // ensure the boundary-elements table is built
|
||||
|
||||
Array<std::tuple<double, ElementIndex>> split_candidates(ne);
|
||||
std::atomic<int> improvement_counter(0);
|
||||
|
||||
tsearch.Start();
|
||||
ParallelForRange(Range(ne), [&] (auto myrange)
|
||||
{
|
||||
for(ElementIndex ei : myrange)
|
||||
{
|
||||
if(mp.only3D_domain_nr && mp.only3D_domain_nr != mesh[ei].GetIndex())
|
||||
continue;
|
||||
double d_badness = SplitImprove2Element(mesh, ei, elements_of_point, el_badness, true);
|
||||
if(d_badness<0.0)
|
||||
{
|
||||
int index = improvement_counter++;
|
||||
split_candidates[index] = make_tuple(d_badness, ei);
|
||||
}
|
||||
}
|
||||
}, ntasks);
|
||||
tsearch.Stop();
|
||||
|
||||
auto elements_with_improvement = split_candidates.Part(0, improvement_counter.load());
|
||||
QuickSort(elements_with_improvement);
|
||||
|
||||
size_t cnt = 0;
|
||||
topt.Start();
|
||||
for(auto [d_badness, ei] : elements_with_improvement)
|
||||
{
|
||||
if( SplitImprove2Element(mesh, ei, elements_of_point, el_badness, false) < 0.0)
|
||||
cnt++;
|
||||
}
|
||||
topt.Stop();
|
||||
|
||||
PrintMessage (5, cnt, " elements split");
|
||||
(*testout) << "SplitImprove2 done" << "\n";
|
||||
|
||||
if(cnt>0)
|
||||
mesh.Compress();
|
||||
multithread.task = savetask;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
void Mesh :: SwapImprove2 (OPTIMIZEGOAL goal)
|
||||
|
@ -26,6 +26,9 @@ public:
|
||||
void SplitImprove (Mesh & mesh, OPTIMIZEGOAL goal = OPT_QUALITY);
|
||||
void SplitImproveSequential (Mesh & mesh, OPTIMIZEGOAL goal = OPT_QUALITY);
|
||||
double SplitImproveEdge (Mesh & mesh, OPTIMIZEGOAL goal, Table<ElementIndex,PointIndex> & elementsonnode, Array<double> &elerrs, NgArray<INDEX_3> &locfaces, double badmax, PointIndex pi1, PointIndex pi2, PointIndex ptmp, bool check_only=false);
|
||||
|
||||
void SplitImprove2 (Mesh & mesh);
|
||||
double SplitImprove2Element (Mesh & mesh, ElementIndex ei, const Table<ElementIndex, PointIndex> & elements_of_point, const Array<double> & elerrs, bool check_only);
|
||||
|
||||
|
||||
double SwapImproveEdge (Mesh & mesh, OPTIMIZEGOAL goal, const NgBitArray * working_elements, Table<ElementIndex,PointIndex> & elementsonnode, INDEX_3_HASHTABLE<int> & faces, PointIndex pi1, PointIndex pi2, bool check_only=false);
|
||||
|
@ -684,6 +684,7 @@ namespace netgen
|
||||
{
|
||||
case 'c': optmesh.CombineImprove(mesh3d, OPT_REST); break;
|
||||
case 'd': optmesh.SplitImprove(mesh3d); break;
|
||||
case 'D': optmesh.SplitImprove2(mesh3d); break;
|
||||
case 's': optmesh.SwapImprove(mesh3d); break;
|
||||
// case 'u': optmesh.SwapImproveSurface(mesh3d); break;
|
||||
case 't': optmesh.SwapImprove2(mesh3d); break;
|
||||
|
@ -1198,12 +1198,13 @@ namespace netgen
|
||||
// s .. swap faces
|
||||
// c .. combine elements
|
||||
// d .. divide elements
|
||||
// D .. divide and join opposite edges, remove element
|
||||
// p .. plot, no pause
|
||||
// P .. plot, Pause
|
||||
// h .. Histogramm, no pause
|
||||
// H .. Histogramm, pause
|
||||
*/
|
||||
string optimize3d = "cmdmustm";
|
||||
string optimize3d = "cmdDmustm";
|
||||
/// number of 3d optimization steps
|
||||
int optsteps3d = 3;
|
||||
/**
|
||||
|
@ -124,8 +124,8 @@
|
||||
},
|
||||
{
|
||||
"angles_tet": [
|
||||
16.335,
|
||||
152.61
|
||||
15.88,
|
||||
154.64
|
||||
],
|
||||
"angles_trig": [
|
||||
20.0,
|
||||
@ -133,9 +133,9 @@
|
||||
],
|
||||
"ne1d": 136,
|
||||
"ne2d": 222,
|
||||
"ne3d": 348,
|
||||
"quality_histogram": "[0, 0, 0, 0, 0, 4, 3, 5, 4, 9, 18, 23, 27, 46, 55, 62, 55, 20, 16, 1]",
|
||||
"total_badness": 514.05343802
|
||||
"ne3d": 352,
|
||||
"quality_histogram": "[0, 0, 0, 0, 0, 5, 5, 7, 4, 7, 14, 26, 24, 54, 64, 61, 47, 18, 14, 2]",
|
||||
"total_badness": 527.329265
|
||||
},
|
||||
{
|
||||
"angles_tet": [
|
||||
@ -293,33 +293,33 @@
|
||||
},
|
||||
{
|
||||
"angles_tet": [
|
||||
13.26,
|
||||
163.45
|
||||
14.466,
|
||||
161.38
|
||||
],
|
||||
"angles_trig": [
|
||||
11.907,
|
||||
152.58
|
||||
13.564,
|
||||
150.65
|
||||
],
|
||||
"ne1d": 32,
|
||||
"ne2d": 220,
|
||||
"ne3d": 556,
|
||||
"quality_histogram": "[0, 0, 0, 4, 7, 14, 27, 33, 41, 29, 37, 47, 34, 50, 41, 51, 63, 38, 30, 10]",
|
||||
"total_badness": 997.95710204
|
||||
"ne3d": 563,
|
||||
"quality_histogram": "[0, 0, 0, 3, 3, 7, 24, 22, 35, 34, 40, 43, 45, 60, 61, 53, 58, 41, 27, 7]",
|
||||
"total_badness": 960.07699692
|
||||
},
|
||||
{
|
||||
"angles_tet": [
|
||||
2.8811,
|
||||
172.75
|
||||
5.6575,
|
||||
169.44
|
||||
],
|
||||
"angles_trig": [
|
||||
9.0948,
|
||||
156.22
|
||||
7.092,
|
||||
155.41
|
||||
],
|
||||
"ne1d": 48,
|
||||
"ne2d": 428,
|
||||
"ne3d": 770,
|
||||
"quality_histogram": "[2, 11, 24, 35, 27, 40, 36, 49, 76, 95, 61, 81, 68, 31, 52, 32, 17, 19, 12, 2]",
|
||||
"total_badness": 2061.8554811
|
||||
"ne3d": 763,
|
||||
"quality_histogram": "[0, 1, 12, 30, 35, 44, 39, 49, 82, 100, 68, 81, 55, 44, 49, 23, 22, 19, 8, 2]",
|
||||
"total_badness": 1832.2349397
|
||||
},
|
||||
{
|
||||
"angles_tet": [
|
||||
@ -471,9 +471,9 @@
|
||||
],
|
||||
"ne1d": 262,
|
||||
"ne2d": 726,
|
||||
"ne3d": 2153,
|
||||
"quality_histogram": "[0, 5, 20, 35, 79, 117, 112, 108, 75, 47, 53, 85, 111, 177, 250, 290, 240, 204, 118, 27]",
|
||||
"total_badness": 4183.5255584
|
||||
"ne3d": 2167,
|
||||
"quality_histogram": "[0, 4, 17, 35, 75, 117, 114, 112, 77, 51, 58, 86, 115, 177, 248, 293, 239, 204, 118, 27]",
|
||||
"total_badness": 4176.9278168
|
||||
},
|
||||
{
|
||||
"angles_tet": [
|
||||
@ -507,18 +507,18 @@
|
||||
},
|
||||
{
|
||||
"angles_tet": [
|
||||
5.4026,
|
||||
168.34
|
||||
5.9887,
|
||||
161.33
|
||||
],
|
||||
"angles_trig": [
|
||||
13.552,
|
||||
13.133,
|
||||
150.46
|
||||
],
|
||||
"ne1d": 262,
|
||||
"ne2d": 726,
|
||||
"ne3d": 2048,
|
||||
"quality_histogram": "[0, 2, 10, 18, 56, 101, 108, 97, 63, 36, 41, 60, 100, 164, 255, 284, 287, 195, 135, 36]",
|
||||
"total_badness": 3675.3946288
|
||||
"ne3d": 2060,
|
||||
"quality_histogram": "[0, 2, 5, 15, 46, 103, 106, 104, 71, 36, 48, 67, 99, 165, 253, 287, 287, 195, 136, 35]",
|
||||
"total_badness": 3642.1604728
|
||||
},
|
||||
{
|
||||
"angles_tet": [
|
||||
@ -633,14 +633,14 @@
|
||||
154.37
|
||||
],
|
||||
"angles_trig": [
|
||||
19.374,
|
||||
19.317,
|
||||
128.1
|
||||
],
|
||||
"ne1d": 428,
|
||||
"ne2d": 926,
|
||||
"ne3d": 1071,
|
||||
"quality_histogram": "[0, 0, 0, 0, 0, 1, 3, 22, 48, 36, 110, 131, 98, 115, 161, 162, 68, 66, 30, 20]",
|
||||
"total_badness": 1667.9770545
|
||||
"ne3d": 1086,
|
||||
"quality_histogram": "[0, 0, 0, 0, 0, 1, 3, 22, 44, 37, 108, 133, 101, 117, 167, 161, 67, 71, 33, 21]",
|
||||
"total_badness": 1684.0903817
|
||||
}
|
||||
],
|
||||
"cubemcyl.geo": [
|
||||
@ -860,18 +860,18 @@
|
||||
},
|
||||
{
|
||||
"angles_tet": [
|
||||
15.925,
|
||||
16.061,
|
||||
157.39
|
||||
],
|
||||
"angles_trig": [
|
||||
17.814,
|
||||
16.851,
|
||||
127.45
|
||||
],
|
||||
"ne1d": 36,
|
||||
"ne2d": 152,
|
||||
"ne3d": 381,
|
||||
"quality_histogram": "[0, 0, 0, 0, 0, 9, 13, 18, 26, 25, 30, 29, 42, 32, 39, 28, 41, 21, 22, 6]",
|
||||
"total_badness": 648.79536841
|
||||
"ne3d": 385,
|
||||
"quality_histogram": "[0, 0, 0, 0, 0, 10, 8, 21, 24, 22, 29, 37, 42, 28, 43, 24, 38, 22, 25, 12]",
|
||||
"total_badness": 647.21940974
|
||||
},
|
||||
{
|
||||
"angles_tet": [
|
||||
@ -1014,18 +1014,18 @@
|
||||
},
|
||||
{
|
||||
"angles_tet": [
|
||||
5.1577,
|
||||
170.71
|
||||
5.7043,
|
||||
170.47
|
||||
],
|
||||
"angles_trig": [
|
||||
8.073,
|
||||
161.81
|
||||
8.0227,
|
||||
160.66
|
||||
],
|
||||
"ne1d": 0,
|
||||
"ne2d": 192,
|
||||
"ne3d": 748,
|
||||
"quality_histogram": "[0, 5, 41, 63, 100, 92, 74, 71, 54, 49, 43, 43, 23, 20, 20, 20, 10, 5, 12, 3]",
|
||||
"total_badness": 2470.4393077
|
||||
"ne3d": 749,
|
||||
"quality_histogram": "[0, 2, 30, 63, 86, 89, 71, 68, 67, 54, 50, 43, 27, 28, 17, 23, 13, 9, 7, 2]",
|
||||
"total_badness": 2339.9827516
|
||||
},
|
||||
{
|
||||
"angles_tet": [
|
||||
@ -1166,18 +1166,18 @@
|
||||
},
|
||||
{
|
||||
"angles_tet": [
|
||||
20.184,
|
||||
19.932,
|
||||
144.83
|
||||
],
|
||||
"angles_trig": [
|
||||
21.582,
|
||||
21.622,
|
||||
126.14
|
||||
],
|
||||
"ne1d": 432,
|
||||
"ne2d": 9544,
|
||||
"ne3d": 69863,
|
||||
"quality_histogram": "[0, 0, 0, 0, 0, 0, 1, 7, 30, 69, 222, 646, 1562, 3675, 7035, 11242, 14646, 15515, 11810, 3403]",
|
||||
"total_badness": 85648.446235
|
||||
"ne3d": 69846,
|
||||
"quality_histogram": "[0, 0, 0, 0, 0, 0, 1, 7, 30, 71, 221, 652, 1560, 3667, 7028, 11234, 14630, 15524, 11810, 3411]",
|
||||
"total_badness": 85625.275421
|
||||
}
|
||||
],
|
||||
"ellipticcyl.geo": [
|
||||
@ -1376,9 +1376,9 @@
|
||||
],
|
||||
"ne1d": 10108,
|
||||
"ne2d": 30160,
|
||||
"ne3d": 152987,
|
||||
"quality_histogram": "[0, 3, 1, 3, 6, 20, 57, 149, 535, 1257, 2919, 5827, 10443, 16376, 21793, 26060, 26579, 22897, 14346, 3716]",
|
||||
"total_badness": 202618.94822
|
||||
"ne3d": 153012,
|
||||
"quality_histogram": "[0, 3, 1, 3, 6, 20, 57, 149, 536, 1257, 2919, 5836, 10439, 16388, 21788, 26067, 26565, 22916, 14350, 3712]",
|
||||
"total_badness": 202656.25887
|
||||
},
|
||||
{
|
||||
"angles_tet": [
|
||||
@ -1391,9 +1391,9 @@
|
||||
],
|
||||
"ne1d": 5988,
|
||||
"ne2d": 11102,
|
||||
"ne3d": 29317,
|
||||
"quality_histogram": "[3, 4, 5, 8, 16, 44, 120, 246, 699, 1024, 1561, 2491, 3110, 3894, 4329, 4296, 3374, 2408, 1353, 332]",
|
||||
"total_badness": 43465.268618
|
||||
"ne3d": 29343,
|
||||
"quality_histogram": "[3, 4, 5, 8, 14, 42, 121, 248, 691, 1040, 1542, 2504, 3118, 3920, 4331, 4281, 3366, 2421, 1367, 317]",
|
||||
"total_badness": 43497.876838
|
||||
},
|
||||
{
|
||||
"angles_tet": [
|
||||
@ -1406,9 +1406,9 @@
|
||||
],
|
||||
"ne1d": 9622,
|
||||
"ne2d": 23964,
|
||||
"ne3d": 80994,
|
||||
"quality_histogram": "[2, 14, 4, 20, 18, 40, 94, 224, 488, 1114, 2412, 4540, 7490, 10250, 12758, 13185, 12021, 9204, 5660, 1456]",
|
||||
"total_badness": 111934.48598
|
||||
"ne3d": 80995,
|
||||
"quality_histogram": "[2, 14, 4, 20, 18, 40, 94, 225, 485, 1115, 2415, 4537, 7493, 10248, 12753, 13190, 12020, 9207, 5660, 1455]",
|
||||
"total_badness": 111934.52308
|
||||
}
|
||||
],
|
||||
"hinge.stl": [
|
||||
@ -1490,17 +1490,17 @@
|
||||
{
|
||||
"angles_tet": [
|
||||
20.701,
|
||||
140.94
|
||||
144.6
|
||||
],
|
||||
"angles_trig": [
|
||||
22.443,
|
||||
122.89
|
||||
122.07
|
||||
],
|
||||
"ne1d": 1862,
|
||||
"ne2d": 19474,
|
||||
"ne3d": 136555,
|
||||
"quality_histogram": "[0, 0, 0, 0, 0, 0, 0, 1, 12, 59, 278, 860, 2542, 6422, 13021, 21252, 29142, 31120, 24008, 7838]",
|
||||
"total_badness": 165971.00359
|
||||
"ne3d": 136546,
|
||||
"quality_histogram": "[0, 0, 0, 0, 0, 0, 0, 1, 12, 59, 281, 864, 2538, 6435, 13014, 21236, 29154, 31109, 24006, 7837]",
|
||||
"total_badness": 165965.29798
|
||||
}
|
||||
],
|
||||
"lense.in2d": [
|
||||
@ -1690,18 +1690,18 @@
|
||||
"manyholes.geo": [
|
||||
{
|
||||
"angles_tet": [
|
||||
14.385,
|
||||
14.551,
|
||||
155.18
|
||||
],
|
||||
"angles_trig": [
|
||||
13.429,
|
||||
16.38,
|
||||
141.4
|
||||
],
|
||||
"ne1d": 5886,
|
||||
"ne2d": 48052,
|
||||
"ne3d": 178770,
|
||||
"quality_histogram": "[0, 0, 0, 0, 0, 5, 15, 82, 303, 822, 2352, 6216, 10998, 19000, 27368, 30676, 31225, 26902, 18298, 4508]",
|
||||
"total_badness": 233986.23978
|
||||
"ne3d": 178844,
|
||||
"quality_histogram": "[0, 0, 0, 0, 0, 5, 11, 71, 288, 829, 2312, 6198, 10948, 18856, 27414, 30640, 31333, 26927, 18474, 4538]",
|
||||
"total_badness": 233920.54177
|
||||
},
|
||||
{
|
||||
"angles_tet": [
|
||||
@ -1715,8 +1715,8 @@
|
||||
"ne1d": 2746,
|
||||
"ne2d": 13866,
|
||||
"ne3d": 29391,
|
||||
"quality_histogram": "[0, 0, 0, 0, 13, 14, 37, 138, 377, 848, 1450, 2328, 3278, 4286, 4195, 3745, 3323, 2685, 1964, 710]",
|
||||
"total_badness": 42208.591965
|
||||
"quality_histogram": "[0, 0, 0, 0, 13, 14, 37, 136, 380, 846, 1453, 2331, 3276, 4281, 4196, 3749, 3317, 2686, 1967, 709]",
|
||||
"total_badness": 42208.382479
|
||||
},
|
||||
{
|
||||
"angles_tet": [
|
||||
@ -1729,9 +1729,9 @@
|
||||
],
|
||||
"ne1d": 4106,
|
||||
"ne2d": 27994,
|
||||
"ne3d": 70783,
|
||||
"quality_histogram": "[0, 0, 0, 1, 30, 72, 170, 340, 660, 1449, 2616, 4104, 6681, 9272, 10482, 10764, 9861, 7627, 4870, 1784]",
|
||||
"total_badness": 99055.647638
|
||||
"ne3d": 70797,
|
||||
"quality_histogram": "[0, 0, 0, 1, 30, 72, 170, 340, 665, 1450, 2605, 4080, 6678, 9294, 10482, 10758, 9889, 7627, 4870, 1786]",
|
||||
"total_badness": 99064.519397
|
||||
}
|
||||
],
|
||||
"manyholes2.geo": [
|
||||
@ -1746,9 +1746,9 @@
|
||||
],
|
||||
"ne1d": 10202,
|
||||
"ne2d": 55380,
|
||||
"ne3d": 128240,
|
||||
"quality_histogram": "[0, 0, 0, 0, 4, 29, 79, 237, 725, 1935, 4437, 7722, 11695, 17431, 18582, 18325, 17276, 15158, 10938, 3667]",
|
||||
"total_badness": 176228.44994
|
||||
"ne3d": 128239,
|
||||
"quality_histogram": "[0, 0, 0, 0, 4, 29, 79, 237, 724, 1933, 4439, 7719, 11694, 17428, 18585, 18328, 17275, 15160, 10938, 3667]",
|
||||
"total_badness": 176224.09669
|
||||
}
|
||||
],
|
||||
"matrix.geo": [
|
||||
@ -1763,14 +1763,14 @@
|
||||
],
|
||||
"ne1d": 174,
|
||||
"ne2d": 1198,
|
||||
"ne3d": 5066,
|
||||
"quality_histogram": "[0, 0, 11, 118, 169, 57, 61, 111, 95, 184, 293, 368, 508, 651, 617, 577, 496, 429, 246, 75]",
|
||||
"total_badness": 8799.2034431
|
||||
"ne3d": 5070,
|
||||
"quality_histogram": "[0, 0, 11, 117, 166, 59, 60, 113, 98, 185, 297, 374, 498, 658, 620, 577, 494, 424, 240, 79]",
|
||||
"total_badness": 8804.2621534
|
||||
},
|
||||
{
|
||||
"angles_tet": [
|
||||
7.9601,
|
||||
167.83
|
||||
9.3063,
|
||||
165.3
|
||||
],
|
||||
"angles_trig": [
|
||||
7.9174,
|
||||
@ -1778,9 +1778,9 @@
|
||||
],
|
||||
"ne1d": 106,
|
||||
"ne2d": 610,
|
||||
"ne3d": 1654,
|
||||
"quality_histogram": "[0, 1, 12, 50, 83, 156, 195, 155, 160, 124, 137, 141, 133, 102, 67, 34, 32, 43, 24, 5]",
|
||||
"total_badness": 4104.7339693
|
||||
"ne3d": 1659,
|
||||
"quality_histogram": "[0, 1, 13, 49, 81, 155, 190, 149, 159, 132, 135, 145, 137, 107, 66, 37, 33, 40, 26, 4]",
|
||||
"total_badness": 4094.4605262
|
||||
},
|
||||
{
|
||||
"angles_tet": [
|
||||
@ -1808,9 +1808,9 @@
|
||||
],
|
||||
"ne1d": 174,
|
||||
"ne2d": 1198,
|
||||
"ne3d": 5005,
|
||||
"quality_histogram": "[0, 0, 7, 100, 165, 53, 56, 108, 103, 165, 278, 336, 503, 574, 623, 631, 520, 438, 264, 81]",
|
||||
"total_badness": 8524.8161998
|
||||
"ne3d": 5012,
|
||||
"quality_histogram": "[0, 0, 7, 101, 161, 60, 53, 107, 93, 172, 281, 320, 519, 570, 616, 653, 509, 445, 260, 85]",
|
||||
"total_badness": 8527.4907589
|
||||
},
|
||||
{
|
||||
"angles_tet": [
|
||||
@ -1830,7 +1830,7 @@
|
||||
{
|
||||
"angles_tet": [
|
||||
18.203,
|
||||
145.26
|
||||
145.38
|
||||
],
|
||||
"angles_trig": [
|
||||
17.821,
|
||||
@ -1838,9 +1838,9 @@
|
||||
],
|
||||
"ne1d": 418,
|
||||
"ne2d": 5968,
|
||||
"ne3d": 101047,
|
||||
"quality_histogram": "[0, 0, 0, 0, 0, 1, 5, 8, 52, 104, 356, 989, 2551, 5548, 10164, 16045, 20725, 22251, 16920, 5328]",
|
||||
"total_badness": 124081.88321
|
||||
"ne3d": 101113,
|
||||
"quality_histogram": "[0, 0, 0, 0, 0, 0, 4, 7, 51, 102, 349, 993, 2550, 5563, 10196, 16090, 20698, 22258, 16911, 5341]",
|
||||
"total_badness": 124155.81178
|
||||
}
|
||||
],
|
||||
"ortho.geo": [
|
||||
@ -2034,29 +2034,29 @@
|
||||
162.28
|
||||
],
|
||||
"angles_trig": [
|
||||
14.582,
|
||||
14.714,
|
||||
141.01
|
||||
],
|
||||
"ne1d": 160,
|
||||
"ne2d": 286,
|
||||
"ne3d": 590,
|
||||
"quality_histogram": "[0, 0, 0, 0, 6, 10, 15, 24, 40, 62, 65, 67, 64, 47, 50, 45, 38, 42, 12, 3]",
|
||||
"total_badness": 1045.1530377
|
||||
"ne3d": 598,
|
||||
"quality_histogram": "[0, 0, 0, 0, 3, 2, 13, 17, 35, 62, 59, 74, 66, 57, 56, 49, 39, 43, 19, 4]",
|
||||
"total_badness": 1009.5773389
|
||||
},
|
||||
{
|
||||
"angles_tet": [
|
||||
12.731,
|
||||
162.52
|
||||
11.213,
|
||||
163.54
|
||||
],
|
||||
"angles_trig": [
|
||||
15.335,
|
||||
148.34
|
||||
13.446,
|
||||
152.87
|
||||
],
|
||||
"ne1d": 232,
|
||||
"ne2d": 598,
|
||||
"ne3d": 1383,
|
||||
"quality_histogram": "[0, 0, 0, 1, 13, 17, 35, 53, 69, 92, 121, 143, 146, 153, 154, 121, 115, 84, 52, 14]",
|
||||
"total_badness": 2341.0219936
|
||||
"ne3d": 1380,
|
||||
"quality_histogram": "[0, 0, 0, 2, 10, 15, 36, 48, 63, 92, 116, 131, 160, 158, 151, 113, 125, 91, 56, 13]",
|
||||
"total_badness": 2309.6335564
|
||||
},
|
||||
{
|
||||
"angles_tet": [
|
||||
@ -2116,9 +2116,9 @@
|
||||
],
|
||||
"ne1d": 886,
|
||||
"ne2d": 2592,
|
||||
"ne3d": 8268,
|
||||
"quality_histogram": "[4, 9, 33, 42, 41, 54, 43, 47, 100, 142, 258, 402, 641, 938, 1253, 1305, 1193, 1022, 588, 153]",
|
||||
"total_badness": 12309.108485
|
||||
"ne3d": 8269,
|
||||
"quality_histogram": "[4, 9, 33, 44, 40, 53, 44, 46, 101, 142, 258, 402, 641, 938, 1253, 1304, 1193, 1022, 589, 153]",
|
||||
"total_badness": 12315.265721
|
||||
},
|
||||
{
|
||||
"angles_tet": [
|
||||
@ -2131,9 +2131,9 @@
|
||||
],
|
||||
"ne1d": 570,
|
||||
"ne2d": 1202,
|
||||
"ne3d": 1823,
|
||||
"quality_histogram": "[2, 22, 36, 57, 66, 78, 105, 136, 163, 183, 187, 160, 150, 143, 114, 76, 69, 47, 25, 4]",
|
||||
"total_badness": 4525.5906501
|
||||
"ne3d": 1839,
|
||||
"quality_histogram": "[2, 21, 37, 57, 67, 78, 110, 136, 161, 177, 190, 158, 155, 149, 115, 78, 69, 51, 24, 4]",
|
||||
"total_badness": 4553.9697099
|
||||
},
|
||||
{
|
||||
"angles_tet": [
|
||||
@ -2162,8 +2162,8 @@
|
||||
"ne1d": 956,
|
||||
"ne2d": 2828,
|
||||
"ne3d": 8577,
|
||||
"quality_histogram": "[3, 9, 37, 48, 48, 52, 58, 60, 87, 127, 205, 328, 507, 805, 1199, 1394, 1476, 1215, 736, 183]",
|
||||
"total_badness": 12579.939101
|
||||
"quality_histogram": "[3, 9, 37, 48, 48, 52, 57, 61, 87, 129, 205, 326, 507, 804, 1200, 1394, 1476, 1215, 736, 183]",
|
||||
"total_badness": 12580.561684
|
||||
},
|
||||
{
|
||||
"angles_tet": [
|
||||
@ -2176,9 +2176,9 @@
|
||||
],
|
||||
"ne1d": 1554,
|
||||
"ne2d": 6372,
|
||||
"ne3d": 31588,
|
||||
"quality_histogram": "[2, 7, 14, 6, 25, 55, 52, 67, 91, 190, 307, 635, 1249, 2307, 3892, 5308, 6146, 5974, 4098, 1163]",
|
||||
"total_badness": 40793.027008
|
||||
"ne3d": 31607,
|
||||
"quality_histogram": "[2, 7, 14, 7, 26, 53, 50, 67, 90, 188, 312, 638, 1249, 2301, 3886, 5314, 6167, 5965, 4114, 1157]",
|
||||
"total_badness": 40813.948339
|
||||
},
|
||||
{
|
||||
"angles_tet": [
|
||||
@ -2191,9 +2191,9 @@
|
||||
],
|
||||
"ne1d": 2992,
|
||||
"ne2d": 23322,
|
||||
"ne3d": 281957,
|
||||
"quality_histogram": "[4, 9, 10, 11, 11, 21, 33, 65, 96, 260, 755, 2146, 5563, 13605, 27734, 44577, 59933, 63963, 48268, 14893]",
|
||||
"total_badness": 344644.09939
|
||||
"ne3d": 281896,
|
||||
"quality_histogram": "[4, 10, 12, 10, 9, 21, 29, 61, 95, 246, 747, 2146, 5540, 13546, 27675, 44558, 59947, 64037, 48291, 14912]",
|
||||
"total_badness": 344508.9779
|
||||
}
|
||||
],
|
||||
"revolution.geo": [
|
||||
@ -2417,31 +2417,31 @@
|
||||
147.57
|
||||
],
|
||||
"angles_trig": [
|
||||
16.998,
|
||||
17.184,
|
||||
119.06
|
||||
],
|
||||
"ne1d": 480,
|
||||
"ne2d": 2394,
|
||||
"ne3d": 6711,
|
||||
"quality_histogram": "[0, 0, 0, 0, 1, 2, 5, 9, 18, 27, 60, 127, 255, 455, 730, 1074, 1345, 1332, 952, 319]",
|
||||
"total_badness": 8467.8828851
|
||||
"quality_histogram": "[0, 0, 0, 0, 2, 2, 7, 8, 21, 26, 61, 123, 262, 462, 722, 1073, 1348, 1317, 960, 317]",
|
||||
"total_badness": 8476.8430085
|
||||
}
|
||||
],
|
||||
"shaft.geo": [
|
||||
{
|
||||
"angles_tet": [
|
||||
9.1003,
|
||||
164.73
|
||||
8.3002,
|
||||
162.65
|
||||
],
|
||||
"angles_trig": [
|
||||
9.2165,
|
||||
146.85
|
||||
9.3888,
|
||||
147.77
|
||||
],
|
||||
"ne1d": 708,
|
||||
"ne2d": 1722,
|
||||
"ne3d": 2725,
|
||||
"quality_histogram": "[0, 0, 3, 6, 15, 19, 28, 47, 87, 138, 286, 386, 316, 291, 250, 298, 242, 178, 104, 31]",
|
||||
"total_badness": 4420.5345142
|
||||
"ne3d": 2740,
|
||||
"quality_histogram": "[0, 0, 1, 5, 8, 15, 31, 39, 87, 146, 294, 392, 329, 286, 245, 291, 247, 185, 108, 31]",
|
||||
"total_badness": 4403.8888129
|
||||
},
|
||||
{
|
||||
"angles_tet": [
|
||||
@ -2460,18 +2460,18 @@
|
||||
},
|
||||
{
|
||||
"angles_tet": [
|
||||
7.5703,
|
||||
165.31
|
||||
12.907,
|
||||
159.86
|
||||
],
|
||||
"angles_trig": [
|
||||
12.063,
|
||||
152.34
|
||||
11.963,
|
||||
148.8
|
||||
],
|
||||
"ne1d": 510,
|
||||
"ne2d": 1004,
|
||||
"ne3d": 1832,
|
||||
"quality_histogram": "[0, 0, 2, 8, 9, 35, 44, 79, 84, 110, 107, 164, 159, 194, 235, 212, 202, 104, 66, 18]",
|
||||
"total_badness": 3083.8429043
|
||||
"ne3d": 1838,
|
||||
"quality_histogram": "[0, 0, 0, 4, 9, 30, 35, 80, 75, 109, 121, 152, 156, 200, 242, 206, 210, 105, 80, 24]",
|
||||
"total_badness": 3018.9734455
|
||||
},
|
||||
{
|
||||
"angles_tet": [
|
||||
@ -2479,14 +2479,14 @@
|
||||
162.65
|
||||
],
|
||||
"angles_trig": [
|
||||
14.459,
|
||||
150.06
|
||||
15.525,
|
||||
147.01
|
||||
],
|
||||
"ne1d": 708,
|
||||
"ne2d": 1722,
|
||||
"ne3d": 2703,
|
||||
"quality_histogram": "[0, 0, 0, 0, 2, 3, 11, 17, 48, 118, 246, 396, 350, 292, 274, 307, 281, 221, 102, 35]",
|
||||
"total_badness": 4122.3827179
|
||||
"ne3d": 2713,
|
||||
"quality_histogram": "[0, 0, 0, 1, 3, 1, 11, 22, 49, 109, 260, 408, 344, 300, 273, 303, 272, 215, 106, 36]",
|
||||
"total_badness": 4151.3073463
|
||||
},
|
||||
{
|
||||
"angles_tet": [
|
||||
@ -2644,18 +2644,18 @@
|
||||
},
|
||||
{
|
||||
"angles_tet": [
|
||||
8.1657,
|
||||
165.53
|
||||
9.1579,
|
||||
165.65
|
||||
],
|
||||
"angles_trig": [
|
||||
9.2408,
|
||||
143.87
|
||||
8.211,
|
||||
143.3
|
||||
],
|
||||
"ne1d": 30,
|
||||
"ne2d": 116,
|
||||
"ne3d": 262,
|
||||
"quality_histogram": "[0, 0, 4, 26, 30, 52, 33, 16, 22, 13, 11, 12, 11, 8, 6, 7, 6, 3, 2, 0]",
|
||||
"total_badness": 832.73325512
|
||||
"ne3d": 264,
|
||||
"quality_histogram": "[0, 0, 7, 21, 33, 55, 37, 14, 20, 15, 10, 6, 13, 10, 6, 7, 5, 3, 2, 0]",
|
||||
"total_badness": 850.25370446
|
||||
},
|
||||
{
|
||||
"angles_tet": [
|
||||
@ -2997,18 +2997,18 @@
|
||||
},
|
||||
{
|
||||
"angles_tet": [
|
||||
1.7223,
|
||||
174.81
|
||||
1.6657,
|
||||
174.24
|
||||
],
|
||||
"angles_trig": [
|
||||
4.9314,
|
||||
166.92
|
||||
4.1081,
|
||||
164.43
|
||||
],
|
||||
"ne1d": 0,
|
||||
"ne2d": 692,
|
||||
"ne3d": 2691,
|
||||
"quality_histogram": "[26, 258, 398, 331, 349, 264, 205, 192, 123, 145, 87, 67, 74, 48, 30, 33, 29, 20, 11, 1]",
|
||||
"total_badness": 14056.890733
|
||||
"ne3d": 2737,
|
||||
"quality_histogram": "[17, 200, 365, 335, 363, 301, 234, 187, 154, 143, 106, 84, 56, 48, 38, 45, 27, 19, 12, 3]",
|
||||
"total_badness": 13234.755766
|
||||
},
|
||||
{
|
||||
"angles_tet": [
|
||||
@ -3083,14 +3083,14 @@
|
||||
],
|
||||
"ne1d": 690,
|
||||
"ne2d": 1684,
|
||||
"ne3d": 5193,
|
||||
"quality_histogram": "[0, 0, 1, 1, 1, 11, 32, 47, 111, 196, 275, 365, 465, 566, 668, 699, 617, 545, 452, 141]",
|
||||
"total_badness": 7518.4794095
|
||||
"ne3d": 5177,
|
||||
"quality_histogram": "[0, 0, 1, 0, 1, 8, 27, 37, 108, 191, 285, 369, 461, 565, 670, 690, 621, 536, 462, 145]",
|
||||
"total_badness": 7461.1502455
|
||||
},
|
||||
{
|
||||
"angles_tet": [
|
||||
8.1301,
|
||||
160.14
|
||||
8.0938,
|
||||
167.14
|
||||
],
|
||||
"angles_trig": [
|
||||
7.7605,
|
||||
@ -3098,9 +3098,9 @@
|
||||
],
|
||||
"ne1d": 390,
|
||||
"ne2d": 522,
|
||||
"ne3d": 1353,
|
||||
"quality_histogram": "[0, 0, 3, 13, 12, 38, 80, 115, 128, 149, 170, 126, 139, 107, 87, 85, 54, 34, 11, 2]",
|
||||
"total_badness": 2731.8393348
|
||||
"ne3d": 1349,
|
||||
"quality_histogram": "[0, 0, 4, 13, 12, 41, 78, 115, 124, 147, 169, 127, 141, 104, 86, 86, 55, 34, 11, 2]",
|
||||
"total_badness": 2729.6156372
|
||||
},
|
||||
{
|
||||
"angles_tet": [
|
||||
@ -3114,8 +3114,8 @@
|
||||
"ne1d": 512,
|
||||
"ne2d": 874,
|
||||
"ne3d": 2381,
|
||||
"quality_histogram": "[0, 0, 0, 3, 9, 15, 42, 68, 122, 139, 198, 209, 307, 380, 349, 235, 137, 97, 46, 25]",
|
||||
"total_badness": 3929.5802554
|
||||
"quality_histogram": "[0, 0, 0, 3, 9, 13, 41, 68, 124, 140, 196, 214, 302, 390, 345, 237, 128, 98, 47, 26]",
|
||||
"total_badness": 3927.0434195
|
||||
},
|
||||
{
|
||||
"angles_tet": [
|
||||
@ -3128,14 +3128,14 @@
|
||||
],
|
||||
"ne1d": 690,
|
||||
"ne2d": 1684,
|
||||
"ne3d": 5099,
|
||||
"quality_histogram": "[0, 0, 1, 1, 0, 3, 23, 37, 102, 189, 265, 343, 430, 564, 673, 707, 612, 543, 465, 141]",
|
||||
"total_badness": 7304.8063731
|
||||
"ne3d": 5095,
|
||||
"quality_histogram": "[0, 0, 1, 0, 0, 4, 19, 34, 101, 181, 263, 354, 439, 548, 689, 696, 611, 547, 467, 141]",
|
||||
"total_badness": 7282.7477612
|
||||
},
|
||||
{
|
||||
"angles_tet": [
|
||||
6.8825,
|
||||
166.88
|
||||
16.895,
|
||||
145.94
|
||||
],
|
||||
"angles_trig": [
|
||||
17.568,
|
||||
@ -3143,13 +3143,13 @@
|
||||
],
|
||||
"ne1d": 1050,
|
||||
"ne2d": 3812,
|
||||
"ne3d": 17990,
|
||||
"quality_histogram": "[0, 0, 1, 0, 0, 0, 3, 15, 34, 64, 183, 570, 1424, 2206, 2299, 2682, 2720, 2713, 2367, 709]",
|
||||
"total_badness": 23464.671179
|
||||
"ne3d": 18003,
|
||||
"quality_histogram": "[0, 0, 0, 0, 0, 0, 3, 15, 34, 61, 181, 573, 1428, 2189, 2298, 2700, 2707, 2735, 2389, 690]",
|
||||
"total_badness": 23471.146878
|
||||
},
|
||||
{
|
||||
"angles_tet": [
|
||||
14.338,
|
||||
15.34,
|
||||
149.41
|
||||
],
|
||||
"angles_trig": [
|
||||
@ -3158,26 +3158,26 @@
|
||||
],
|
||||
"ne1d": 1722,
|
||||
"ne2d": 10042,
|
||||
"ne3d": 84837,
|
||||
"quality_histogram": "[0, 0, 0, 0, 0, 3, 55, 1435, 719, 373, 691, 1186, 2492, 5459, 8935, 13171, 16437, 16966, 12825, 4090]",
|
||||
"total_badness": 108583.90765
|
||||
"ne3d": 84812,
|
||||
"quality_histogram": "[0, 0, 0, 0, 0, 2, 49, 1423, 720, 374, 704, 1174, 2454, 5477, 8890, 13211, 16429, 16935, 12870, 4100]",
|
||||
"total_badness": 108503.84867
|
||||
}
|
||||
],
|
||||
"twobricks.geo": [
|
||||
{
|
||||
"angles_tet": [
|
||||
22.934,
|
||||
142.89
|
||||
29.453,
|
||||
134.56
|
||||
],
|
||||
"angles_trig": [
|
||||
18.806,
|
||||
142.29
|
||||
26.574,
|
||||
91.538
|
||||
],
|
||||
"ne1d": 72,
|
||||
"ne2d": 50,
|
||||
"ne3d": 41,
|
||||
"quality_histogram": "[0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 8, 2, 16, 3, 4, 0, 0, 0, 0]",
|
||||
"total_badness": 68.897088924
|
||||
"ne3d": 36,
|
||||
"quality_histogram": "[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 8, 2, 18, 2, 4, 0, 0, 0, 0]",
|
||||
"total_badness": 55.618194358
|
||||
},
|
||||
{
|
||||
"angles_tet": [
|
||||
@ -3211,18 +3211,18 @@
|
||||
},
|
||||
{
|
||||
"angles_tet": [
|
||||
22.934,
|
||||
142.89
|
||||
29.453,
|
||||
134.56
|
||||
],
|
||||
"angles_trig": [
|
||||
18.806,
|
||||
142.29
|
||||
26.574,
|
||||
91.538
|
||||
],
|
||||
"ne1d": 72,
|
||||
"ne2d": 50,
|
||||
"ne3d": 41,
|
||||
"quality_histogram": "[0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 8, 2, 16, 3, 4, 0, 0, 0, 0]",
|
||||
"total_badness": 68.897088924
|
||||
"ne3d": 36,
|
||||
"quality_histogram": "[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 8, 2, 18, 2, 4, 0, 0, 0, 0]",
|
||||
"total_badness": 55.618194358
|
||||
},
|
||||
{
|
||||
"angles_tet": [
|
||||
@ -3252,24 +3252,24 @@
|
||||
"ne2d": 346,
|
||||
"ne3d": 595,
|
||||
"quality_histogram": "[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 23, 40, 55, 95, 101, 105, 99, 60, 8]",
|
||||
"total_badness": 777.63275563
|
||||
"total_badness": 777.63275434
|
||||
}
|
||||
],
|
||||
"twocubes.geo": [
|
||||
{
|
||||
"angles_tet": [
|
||||
22.934,
|
||||
142.89
|
||||
29.453,
|
||||
134.56
|
||||
],
|
||||
"angles_trig": [
|
||||
18.806,
|
||||
142.29
|
||||
26.574,
|
||||
91.538
|
||||
],
|
||||
"ne1d": 72,
|
||||
"ne2d": 50,
|
||||
"ne3d": 41,
|
||||
"quality_histogram": "[0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 8, 2, 16, 3, 4, 0, 0, 0, 0]",
|
||||
"total_badness": 68.897088924
|
||||
"ne3d": 36,
|
||||
"quality_histogram": "[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 8, 2, 18, 2, 4, 0, 0, 0, 0]",
|
||||
"total_badness": 55.618194358
|
||||
},
|
||||
{
|
||||
"angles_tet": [
|
||||
@ -3303,18 +3303,18 @@
|
||||
},
|
||||
{
|
||||
"angles_tet": [
|
||||
22.934,
|
||||
142.89
|
||||
29.453,
|
||||
134.56
|
||||
],
|
||||
"angles_trig": [
|
||||
18.806,
|
||||
142.29
|
||||
26.574,
|
||||
91.538
|
||||
],
|
||||
"ne1d": 72,
|
||||
"ne2d": 50,
|
||||
"ne3d": 41,
|
||||
"quality_histogram": "[0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 8, 2, 16, 3, 4, 0, 0, 0, 0]",
|
||||
"total_badness": 68.897088924
|
||||
"ne3d": 36,
|
||||
"quality_histogram": "[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 8, 2, 18, 2, 4, 0, 0, 0, 0]",
|
||||
"total_badness": 55.618194358
|
||||
},
|
||||
{
|
||||
"angles_tet": [
|
||||
@ -3344,7 +3344,7 @@
|
||||
"ne2d": 346,
|
||||
"ne3d": 595,
|
||||
"quality_histogram": "[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 23, 40, 55, 95, 101, 105, 99, 60, 8]",
|
||||
"total_badness": 777.63275563
|
||||
"total_badness": 777.63275434
|
||||
}
|
||||
],
|
||||
"twocyl.geo": [
|
||||
|
Loading…
Reference in New Issue
Block a user