16 for(
double t = M.cuts.front(); t < M.cuts.back(); t += space) {
17 Point pos = M(t), perp = Mperp(t);
26class LengthTester:
public Toy {
31 std::ostringstream *notify,
32 int width,
int height,
bool save, std::ostringstream *timer_stream)
override {
41 std::vector< Piecewise<D2<SBasis> > > pieces;
44 for (
auto & piece : pieces){
49 cairo_set_line_width (cr, .5);
62 *timer_stream <<
"arc_length_parametrization, time = " << als_time << std::endl;
67 *notify <<
"pieces = " << uniform_B.
size() <<
";\n";
74 for(
int i = 0; i <
SIZE; i++) {
87int main(
int argc,
char **argv) {
88 init(argc, argv,
new LengthTester);
static void dot_plot(cairo_t *cr, Piecewise< D2< SBasis > > const &M, double space=10)
Conversion between Bezier control points and SBasis curves.
static int constexpr SIZE
Adaptor that creates 2D functions from 1D ones.
Function defined as discrete pieces.
void concat(const Piecewise< T > &other)
Two-dimensional point that doubles as a vector.
void push_back(double x, double y)
Geom::D2< Geom::SBasis > asBezier()
std::vector< Geom::Point > pts
void ask_for_timeslice()
Ask the OS nicely for a big time slice.
vector< Handle * > handles
virtual void save(FILE *f)
virtual void draw(cairo_t *cr, std::ostringstream *notify, int w, int h, bool save, std::ostringstream *timing_stream)
Lifts one dimensional objects into 2D.
Various utility functions.
std::vector< Geom::Piecewise< Geom::D2< Geom::SBasis > > > split_at_discontinuities(Geom::Piecewise< Geom::D2< Geom::SBasis > > const &pwsbin, double tol=.0001)
std::vector< Piecewise< D2< SBasis > > > fuse_nearby_ends(std::vector< Piecewise< D2< SBasis > > > const &f, double tol=0)
Bezier derivative(Bezier const &a)
Piecewise< D2< SBasis > > arc_length_parametrization(D2< SBasis > const &M, unsigned order=3, double tol=.01)
D2< T > rot90(D2< T > const &a)
void cairo_pw_d2_sb(cairo_t *cr, Geom::Piecewise< Geom::D2< Geom::SBasis > > const &p)
void draw_line_seg(cairo_t *cr, Geom::Point a, Geom::Point b)
two-dimensional geometric operators.
Polynomial in symmetric power basis (S-basis)
void cairo_set_source_rgba(cairo_t *cr, colour c)
void init(int argc, char **argv, Toy *t, int width=600, int height=600)