blob: a296553d62f2f448ff0cb417db950cb83e724268 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
// Based on implementation by @platsch
#ifndef slic3r_SlicingAdaptive_hpp_
#define slic3r_SlicingAdaptive_hpp_
#include "Slicing.hpp"
#include "admesh/stl.h"
namespace Slic3r
{
class ModelVolume;
class SlicingAdaptive
{
public:
void clear();
void set_slicing_parameters(SlicingParameters params) { m_slicing_params = params; }
void prepare(const ModelObject &object);
// Return next layer height starting from the last print_z, using a quality measure
// (quality in range from 0 to 1, 0 - highest quality at low layer heights, 1 - lowest print quality at high layer heights).
// The layer height curve shall be centered roughly around the default profile's layer height for quality 0.5.
float next_layer_height(const float print_z, float quality, size_t ¤t_facet);
float horizontal_facet_distance(float z);
struct FaceZ {
std::pair<float, float> z_span;
// Cosine of the normal vector towards the Z axis.
float n_cos;
// Sine of the normal vector towards the Z axis.
float n_sin;
};
protected:
SlicingParameters m_slicing_params;
std::vector<FaceZ> m_faces;
};
}; // namespace Slic3r
#endif /* slic3r_SlicingAdaptive_hpp_ */
|