void GeneralPolygon::addEquilateralTriangle(float scaleX, float scaleY, const sf::Vector2f& displace) { GeneralPolygon::Contour tri; sf::Vector2f scale(scaleX, scaleY); auto dot = [](const sf::Vector2f& a, const sf::Vector2f& b)-> sf::Vector2f {return sf::Vector2f(a.x*b.x, a.y*b.y);}; tri.push_back( dot( sf::Vector2f(0.0f,0.5f) + displace, scale) ); tri.push_back( dot( sf::Vector2f(-0.5f,-0.5f) + displace, scale) ); tri.push_back( dot( sf::Vector2f(0.5f,-0.5f) + displace, scale) ); addContour(tri); }
void GeneralPolygon::addRectangle(float scaleX, float scaleY, const sf::Vector2f& displace) { GeneralPolygon::Contour rect; sf::Vector2f scale(scaleX, scaleY); auto dot = [](const sf::Vector2f& a, const sf::Vector2f& b)-> sf::Vector2f {return sf::Vector2f(a.x*b.x, a.y*b.y);}; rect.push_back( dot( sf::Vector2f(0.5f,0.5f), scale) + displace); rect.push_back( dot( sf::Vector2f(-0.5f,0.5f), scale) + displace ); rect.push_back( dot( sf::Vector2f(-0.5f,-0.5f), scale) + displace ); rect.push_back( dot( sf::Vector2f(0.5f,-0.5f), scale) + displace ); addContour(rect); }
void GeneralPolygon::addPentagram(float scaleX, float scaleY, const sf::Vector2f& displace) { GeneralPolygon::Contour pentagram; sf::Vector2f scale(scaleX, scaleY); auto dot = [](const sf::Vector2f& a, const sf::Vector2f& b)-> sf::Vector2f {return sf::Vector2f(a.x*b.x, a.y*b.y);}; float PI = atan(1)*4; float degreeToRad = PI/180.0f; pentagram.push_back( dot( sf::Vector2f(0.5f*cos(18*degreeToRad), 0.5f*sin(18*degreeToRad)), scale) + displace ); pentagram.push_back( dot( sf::Vector2f(0.0f, 0.5f), scale) + displace ); pentagram.push_back( dot( sf::Vector2f(0.5f*cos(162*degreeToRad), 0.5f*sin(162*degreeToRad)), scale) + displace ); pentagram.push_back( dot( sf::Vector2f(0.5f*cos(234*degreeToRad), 0.5f*sin(234*degreeToRad)), scale) + displace ); pentagram.push_back( dot( sf::Vector2f(0.5f*cos(306*degreeToRad), 0.5f*sin(306*degreeToRad)), scale) + displace ); addContour(pentagram); }
void Ctr2SufManager::readContour(const int filenum, char** fnames) { clearOldContour(); ////clear processed data //clearPData(); ////clear partition data //clearPartition(); ////clear face contour data //clearFaceContour(); // //clear mesh delete mesh; mesh = NULL; addContour(filenum, fnames); }
void GeneralPolygon::addLetterE(float scaleX, float scaleY, const sf::Vector2f& displace) { GeneralPolygon::Contour E; sf::Vector2f scale(scaleX, scaleY); auto dot = [](const sf::Vector2f& a, const sf::Vector2f& b)-> sf::Vector2f {return sf::Vector2f(a.x*b.x, a.y*b.y);}; E.push_back( dot( sf::Vector2f(0.5f,0.5f), scale) + displace ); E.push_back( dot( sf::Vector2f(-0.5f,0.5f), scale ) + displace ); E.push_back( dot( sf::Vector2f(-0.5f,-0.5f), scale) + displace ); E.push_back( dot( sf::Vector2f(0.5f,-0.5f), scale) + displace ); E.push_back( dot( sf::Vector2f(0.5f,-0.3f), scale) + displace ); E.push_back( dot( sf::Vector2f(-0.1f,-0.3f), scale) + displace ); E.push_back( dot( sf::Vector2f(-0.1f,-0.1f), scale) + displace ); E.push_back( dot( sf::Vector2f(0.5f,-0.1f), scale) + displace ); E.push_back( dot( sf::Vector2f(0.5f,0.1f), scale) + displace ); E.push_back( dot( sf::Vector2f(-0.1f,0.1f), scale) + displace ); E.push_back( dot( sf::Vector2f(-0.1f,0.3f), scale) + displace ); E.push_back( dot( sf::Vector2f(0.5f,0.3f), scale) + displace ); addContour(E); }
void addHole(const std::vector<Vector2> &hole) { addContour(hole, true); }
void addContour(const std::vector<Vector2> &contour) { addContour(contour, false); }