changed SliceIndex to use floating point keys.

This commit is contained in:
tamasmeszaros 2018-11-28 15:02:23 +01:00
parent 34587bd00f
commit 729e35f1ff
2 changed files with 8 additions and 4 deletions

View file

@ -624,8 +624,10 @@ void SLAPrint::process()
auto& lyrs = levels[h]; // this initializes a new record auto& lyrs = levels[h]; // this initializes a new record
lyrs.emplace_back(oslices[i], po.m_instances); lyrs.emplace_back(oslices[i], po.m_instances);
float fh = float(double(h) * SCALING_FACTOR);
// now for the public slice index: // now for the public slice index:
SLAPrintObject::SliceRecord& sr = po.m_slice_index[h]; SLAPrintObject::SliceRecord& sr = po.m_slice_index[fh];
// There should be only one slice layer for each print object // There should be only one slice layer for each print object
assert(sr.model_slices_idx == EMPTY_SLICE); assert(sr.model_slices_idx == EMPTY_SLICE);
sr.model_slices_idx = i; sr.model_slices_idx = i;
@ -641,7 +643,9 @@ void SLAPrint::process()
auto& lyrs = levels[h]; auto& lyrs = levels[h];
lyrs.emplace_back(sslices[i], po.m_instances); lyrs.emplace_back(sslices[i], po.m_instances);
SLAPrintObject::SliceRecord& sr = po.m_slice_index[h]; float fh = float(double(h) * SCALING_FACTOR);
SLAPrintObject::SliceRecord& sr = po.m_slice_index[fh];
assert(sr.support_slices_idx == EMPTY_SLICE); assert(sr.support_slices_idx == EMPTY_SLICE);
sr.support_slices_idx = i; sr.support_slices_idx = i;
} }

View file

@ -92,8 +92,8 @@ public:
// levels of the model in scaled-clipper coordinates. The levels correspond // levels of the model in scaled-clipper coordinates. The levels correspond
// to the z coordinate of the object coordinate system. // to the z coordinate of the object coordinate system.
struct SliceRecord { struct SliceRecord {
using Key = long long; using Key = float;
inline static float scale_back(Key h) { return float(h * SCALING_FACTOR); } // inline static float scale_back(Key h) { return float(h * SCALING_FACTOR); }
using Idx = size_t; using Idx = size_t;
static const Idx NONE = Idx(-1); // this will be the max limit of size_t static const Idx NONE = Idx(-1); // this will be the max limit of size_t