#pragma once #include "./Curve.hpp" enum class CurveIterationMode { BASIC, LENGTH }; class CurveIterator { private: Curve *curve; unsigned int steps; CurveIterationMode iterationMode; float estimatedLength; int basicStepCounter; float lengthStepCounter; float leftBound; float rightBound; float lastIncrement; void resetIterator(); void computeLength(); public: CurveIterator(Curve *curve, unsigned int steps, CurveIterationMode basicOrLength); void nextStep(); float getStep(); void setProgress(float at); glm::vec3 evaluation(); glm::vec3 derivation(); Curve* getCurve(); };