+ std::vector<Vec2> Evaluate(const std::vector<Real> & u) const;
+
+ std::vector<Real> SolveXParam(const Real & x) const;
+ std::vector<Real> SolveYParam(const Real & x) const;
+
+ // Get points with same X
+ inline std::vector<Vec2> SolveX(const Real & x) const
+ {
+ return Evaluate(SolveXParam(x));
+ }
+ // Get points with same Y
+ inline std::vector<Vec2> SolveY(const Real & y) const
+ {
+ return Evaluate(SolveYParam(y));
+ }
+
+ bool operator==(const Bezier & equ) const
+ {
+ return (x0 == equ.x0 && y0 == equ.y0
+ && x1 == equ.x1 && y1 == equ.y1
+ && x2 == equ.x2 && y2 == equ.y2
+ && x3 == equ.x3 && y3 == equ.y3);
+ }
+ bool operator!=(const Bezier & equ) const {return !this->operator==(equ);}