• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed C++ SFML - rysowanie elipsy

Object Storage Arubacloud
0 głosów
522 wizyt
pytanie zadane 28 czerwca 2018 w C i C++ przez Jakub 0 Pasjonat (23,120 p.)
zamknięte 2 lipca 2018 przez Jakub 0

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 :)

komentarz zamknięcia: temat wyczerpany

1 odpowiedź

0 głosów
odpowiedź 28 czerwca 2018 przez criss Mędrzec (172,590 p.)
wybrane 2 lipca 2018 przez Jakub 0
 
Najlepsza

Może tak będzie łatwiej:

(index/ilosc_punktow) * 2*pi - pi/2

2pi to cały okrąg czyli 360 stopni. Wiec ulamek 1/ilosc_punktow * 2pi da ci kąt co jaki ma się pojawiać punkt tworzący elipse. Więc jak pomnożysz to przez `index`, to dostaniesz kąt właściwy dla punktu nr `index`. pi/2 jest odejmowane, żeby zamienić ze sobą radius.x i radius.y (zauważ, że sinus to cosinus przesunięty o -pi/2).

komentarz 2 lipca 2018 przez Jakub 0 Pasjonat (23,120 p.)
Dziękuje za odp. Przepraszam że wcześniej nie odpisałem ale nie miałem możliwości. Ogólnie zrozumiałem bardziej idee wyliczania tego konta. Ale o funkcjach trygonometrycznych mam jednak za małą wiedzę :/ ( a jeszcze w szkole ich nie miałem ).

Jak na razie sam od siebie uczę się z tych filmików:

https://www.youtube.com/watch?v=c2UlPn2WM5c

Czy polecasz mi jakieś dobre materiały do ich nauki? A może po prostu uczyć się do przodu z mojej książki do matmy na następny rok?
komentarz 2 lipca 2018 przez criss Mędrzec (172,590 p.)
Byle książka do matmy dla szkoły średniej starczy spokojnie :) To nie jest żaden skomplikowany temat. A na pewno niezbędny przy jakichkolwiek gierkach...
komentarz 2 lipca 2018 przez Jakub 0 Pasjonat (23,120 p.)
To jak lepiej zrozumiem to wszystko to jeszcze raz zerknę bardziej świadomie do odpowiedzi ;)

Podobne pytania

0 głosów
4 odpowiedzi 1,138 wizyt
pytanie zadane 25 lipca 2016 w C i C++ przez mrdropex Początkujący (430 p.)
0 głosów
0 odpowiedzi 107 wizyt
pytanie zadane 30 stycznia 2022 w C i C++ przez toko Dyskutant (7,670 p.)
0 głosów
1 odpowiedź 405 wizyt
pytanie zadane 20 listopada 2018 w C i C++ przez oliwzcak12 Użytkownik (550 p.)

92,556 zapytań

141,404 odpowiedzi

319,562 komentarzy

61,942 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...