997{
998
1000
1002
1003 A2f mask(boost::extents[sz.y()][sz.x()]);
1004 for (int r = 0; r < sz.y(); ++r) {
1005 for (int c = 0; c < sz.x(); ++c) {
1006 float p = 0;
1007 for (
unsigned int j = 0; j <
pimpl->bitmap_oversampled; ++ j) {
1008 for (
unsigned int i = 0; i <
pimpl->bitmap_oversampled; ++ i) {
1009 if (
pimpl->bitmap[r *
pimpl->bitmap_oversampled + j][c *
pimpl->bitmap_oversampled + i])
1010 p += 1.f;
1011 }
1012 }
1013 p /= float(
pimpl->bitmap_oversampled *
pimpl->bitmap_oversampled * 2);
1014 mask[r][c] = p;
1015 }
1016 }
1017
1018
1020 }
1021
1022
1023 for (int r = 0; r < sz.y(); ++r) {
1025 for (int c = 0; c < sz.x(); ++c) {
1026 #if 1
1027 float p =
pimpl->accumulator[r][c];
1028 #else
1029 float p = mask[r][c];
1030 #endif
1031 int idx = int(floor(p *
float(
pimpl->color_gradient.size()) + 0.5f));
1032 V3uc clr =
pimpl->color_gradient[std::clamp(idx, 0,
int(
pimpl->color_gradient.size()-1))];
1033 *ptr ++ = clr.get<0>();
1034 *ptr ++ = clr.get<1>();
1035 *ptr ++ = clr.get<2>();
1036 *ptr ++ = (idx == 0) ? 0 : 255;
1037 }
1038 }
1039}
BoundingBox viewport
Definition ExtrusionSimulator.hpp:51
Point image_size
Definition ExtrusionSimulator.hpp:50
Kernel::Point_3 Point
Definition MeshRepair.cpp:81
void gcode_spread_points(A2f &acc, const A2f &mask, const ExtrusionPoints &points, ExtrusionSimulationType simulationType)
Definition ExtrusionSimulator.cpp:652
boost::multi_array< float, 2 > A2f
Definition ExtrusionSimulator.cpp:75
@ ExtrusionSimulationDontSpread
Definition ExtrusionSimulator.hpp:13
V3< unsignedchar >::Type V3uc
Definition ExtrusionSimulator.cpp:65