33            void set(
double a, 
double b)
 
 
   44                if (temp < 0) { temp = 0; }
 
   45                else if (temp > 1) { temp = 1; }
 
   48                if (temp < 0) { temp = 0; }
 
   49                else if (temp > 1) { temp = 1; }
 
 
 
   82            void set(
int a, 
int b)
 
 
 
  130            Str.append(VarName + 
" ");
 
  131            for (
int i = 0; i < 
Array.size(); i++)
 
  133                std::string tempTextX = std::to_string(
Array[i].x);
 
  134                std::string tempTextY = std::to_string(
Array[i].y);
 
  135                Str.append(tempTextX + 
" " + tempTextY);
 
  136                if (i != 
Array.size() - 1)
 
 
  144        template <
typename T>
 
  147            Str.append(VarName + 
" ");
 
  148            if constexpr (std::is_same_v<T, float> || std::is_same_v<T, double>)
 
  150                Str.append(std::to_string(value));
 
  154                Str.append(std::to_string(
static_cast<int>(value)));
 
  157            std::cout << std::endl << Str;
 
 
  162            if (std::isdigit(Str[0]) | (Str[0] == 
'-'))
 
  164                value = std::stod(Str);
 
 
  170            if (std::isdigit(Str[0]) | (Str[0] == 
'-'))
 
  172                value = float(std::stod(Str));
 
 
  178            if (std::isdigit(Str[0]) | (Str[0] == 
'-'))
 
  180                value = std::stoi(Str);
 
 
  187            if (std::isdigit(Str[0]))
 
  189                value = bool(std::stoi(Str));
 
 
  196            if (std::isdigit(Str[0]))
 
 
 
This class is designed to be elegant, so it can be directly passed to GPU as parameters.
 
std::vector< Coord2D > mFinalCoord
 
void updateResampleLinearLine()
 
std::vector< Coord2D > mResamplePoint
 
void setVarByStr(std::string Str, float &value)
 
std::map< float, EndPoint > mLength_EndPoint_Map
 
void addFloatItemToCoord(float x, float y, std::vector< Coord2D > &coordArray)
 
void setInterpMode(bool useBezier)
 
Canvas::Interpolation mInterpMode
 
void rebuildHandlePoint(std::vector< Coord2D > coordSet)
 
std::vector< Coord2D > mBezierPoint
 
void setVarByStr(std::string Str, int &value)
 
std::vector< Coord2D > getPoints()
 
void addPoint(float x, float y)
 
void setCurveClose(bool s)
 
void convertCoordToStr(std::string VarName, std::vector< Canvas::Coord2D > Array, std::string &Str)
 
std::vector< Coord2D > mUserHandle
 
std::vector< double > mLengthArray
 
Canvas::Interpolation & getInterpMode()
 
std::vector< Coord2D > mUserCoord
 
virtual void updateBezierCurve()
 
void buildSegMent_Length_Map(std::vector< Coord2D > BezierPtSet)
 
void setVarByStr(std::string Str, bool &value)
 
void setSpacing(double s)
 
std::vector< Coord2D > & getUserPoints()
 
void setVarByStr(std::string Str, Canvas::Interpolation &value)
 
std::vector< Coord2D > & getUserHandles()
 
void resamplePointFromLine(std::vector< Coord2D > pointSet)
 
void updateBezierPointToBezierSet(Coord2D p0, Coord2D p1, Coord2D p2, Coord2D p3, std::vector< Coord2D > &bezierSet)
 
void convertVarToStr(std::string VarName, T value, std::string &Str)
 
void addPointAndHandlePoint(Coord2D point, Coord2D handle_1, Coord2D handle_2)
 
void setVarByStr(std::string Str, double &value)
 
virtual void UpdateFieldFinalCoord()
 
This is an implementation of AdditiveCCD based on peridyno.
 
Coord2D(double a, double b, int i)
 
void set(double a, double b)
 
Coord2D(double a, double b)
 
EndPoint(int first, int second)