Witam, mam taką klasę kształtu dziedziczącą po sf::Shape :
class EllipseShape : public sf::Shape {
private:
sf::Vector2f radius;
public:
explicit EllipseShape(const sf::Vector2f& r) {
radius = r;
update();
}
void setRadius(const sf::Vector2f& r) {
radius = r;
update();
}
const sf::Vector2f& getRadius() {
return radius;
}
///-------------------------------------
virtual unsigned getPointCount() const override {
return 30;
}
virtual sf::Vector2f getPoint(unsigned index) const override {
static const float pi = 3.14159265358979323846f;
float angle = index * 2 * pi / getPointCount() - pi / 2;
float x = std::cos(angle) * radius.x;
float y = std::sin(angle) * radius.y;
return sf::Vector2f(radius.x+x, radius.y+y);
}
};
Źródło: https://www.sfml-dev.org/tutorials/2.5/graphics-shape.php
Ogólnie większość rzeczy rozumiem, co robi każda z metod itd... Tak samo w miarę rozumiem funkcje trygonometryczne i wciąż się ich uczę. Chodzi mi tylko o wzór na kąt:
float angle = index * 2 * pi / getPointCount() - pi / 2;
nie wiem do końca ( a tak szczerze to kompletnie ) z czego on wynika:
Będę bardzo wdzięczny za wyjaśnienie zasady jego działania albo odesłania pod odpowiedni link który da mi może więcej wiedzy na ten temat.
Z góry dziękuje i pozdrawiam :)