Blame generator.h

e31ea0
e31ea0
#ifndef GENERATOR_H
e31ea0
#define GENERATOR_H
e31ea0
e31ea0
e31ea0
#include "track.h"
e31ea0
#include "collider.h"
e31ea0
e31ea0
e31ea0
class Generator {
e31ea0
public:
e31ea0
    virtual ~Generator() { }
e31ea0
    virtual bool generate(const Collider &collider, Track &track) const = 0;
e31ea0
};
e31ea0
e31ea0
class GeneratorRowsZAX: public Generator {
e31ea0
public:
e31ea0
    Real step_z;
e31ea0
    Real step_a;
e31ea0
    Real step_x;
e31ea0
    
e31ea0
    Real min_x;
e31ea0
    Real max_x;
e31ea0
    Real min_z;
e31ea0
    Real max_z;
e31ea0
    Real safe_z;
e31ea0
    
e31ea0
    Real feed_speed;
e31ea0
    Real move_speed;
e31ea0
    
b2ca59
    bool skip_middle_layers;
b2ca59
    bool feed_in_rotation;
b2ca59
    
e31ea0
    explicit GeneratorRowsZAX():
e31ea0
        step_z(1),
e31ea0
        step_a(1),
e31ea0
        step_x(0.1),
e31ea0
        min_x(),
e31ea0
        max_x(),
e31ea0
        min_z(),
e31ea0
        max_z(),
e31ea0
        safe_z(),
e31ea0
        feed_speed(600),
b2ca59
        move_speed(1500),
b2ca59
        skip_middle_layers(false),
b2ca59
        feed_in_rotation(false)
e31ea0
    { }
e31ea0
    
1bcd85
    void tool_point(Track &track, const TrackPoint &p) const;
e31ea0
    void tool_up(Track &track, Real safe_z) const;
e31ea0
    void tool_feed(Track &track, Real safe_z, Real z1, Real z, Real a, Real x) const;
b2ca59
    void touch(const Collider &collider, Track &track, Real safe_z, Real z1, Real z0, Real a, Real x, bool skip_z0) const;
e31ea0
    
e31ea0
    bool generate(const Collider &collider, Track &track) const override;
e31ea0
};
e31ea0
e31ea0
e31ea0
#endif