Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Kolizja piksela z sześciokątem (sf::CircleShape)

Ostatnio zmodyfikowano 2015-08-31 07:13
Autor Wiadomość
Gibas11
Temat założony przez niniejszego użytkownika
Kolizja piksela z sześciokątem (sf::CircleShape)
» 2015-08-30 16:28:24
Jak w temacie, mam sześciokąt utworzony tak:
C/C++
sf::CircleShape triangle = sf::CircleShape( 29, 3 );
I chcę sprawdzić czy pixel się w nim zawiera, wymyśliłem jakieś rozwiązanie na około z wykorzystaniem sf::RenderTexture ale prędkość nie powala, a ja potrzebuję maksymalnej wydajności.

Pozdrawiam!

EDIT: Nie zwracać uwagi na "triangle", pierwotnie miał to być trójkąt i jeszcze nie zmieniłem nazw. :/
P-137059
DejaVu
» 2015-08-30 16:58:42
wyprowadz wzor matematyczny jak chcesz szybko sprawdzac czy punkt nalezy do szesciokata.
P-137060
Gibas11
Temat założony przez niniejszego użytkownika
» 2015-08-30 17:23:42
A jak taki wzór wygląda? Niestety, ale moja edukacja stoi jeszcze na stosunkowo niskim poziomie (teraz idę do 1. klasy liceum) i na żadnym Polskim forum nie znalazłem przejrzystych informacji na ten temat. :/
P-137061
michal11
» 2015-08-30 19:12:34
triangle.getGlobalBounds().contains( px, py );

Nie sprawdzałem tego dokładnie ale powinno działać, oczywiście px i py to współrzędne twojego piksela.

Linki do dok.:
http://www.sfml-dev.org​/documentation/2.3.1​/classsf_1_1Shape.php#a5257341fe832884dbba6b9dc855e33cc
http://www.sfml-dev.org​/documentation/2.3.1​/classsf_1_1Rect.php#aa8a5364c84de6dd5299f833b54e31ef1

Ew. masz tam też funkcję która przyjmuje Vector2<T>.

Co do odpowiedzi DejaVu, aby wyznaczyć taki wzór wystarczy narysować sobie ten sześcian w układzie współrzędnych, narysować 3 pkt. jeden wew. sześciokąta, jeden "na linii" i jeden na zewnątrz. Wtedy będzie łatwiej ci to wyznaczyć.
P-137065
DejaVu
» 2015-08-30 20:46:08
triangle.getGlobalBounds().contains( px, py );
Nie sprawdzałem tego dokładnie ale powinno działać, oczywiście px i py to współrzędne twojego piksela.
Sądzę, że to sprawdza czy punkt się zawiera w kole, a nie w sześcianie.
P-137068
Gibas11
Temat założony przez niniejszego użytkownika
» 2015-08-30 21:24:04
Niestety, nie ma tak miło, funkcja, którą podałeś sprawdza czy piksel zawiera się w prostokącie, "opisanym" (sądzę, że można to tak nazwać, niewiele brakuje) na figurze. :/ Ale problem rozwiązany, jednak rozgryzłem jak ogarnąć ten wzór. Wprawdzie przy założeniu, że sześciokąt foremny zawsze stoi "prosto", ale zawsze coś. :) Tematu na razie nie zamykam, jak będę miał gotowy kod, to tu wrzucę, będzie dla kolejnych pokoleń. :)
P-137072
maly
» 2015-08-31 07:13:57
Do stwierdzenia czy punkt znajduje się wewnątrz wielokąta nie potrzebne są wzory matematyczne, wystarczy algorytm opisany na tej stronie
http://www.alienryderflex.com​/polygon/ który załatwia sprawę nie tylko z wielokątami wypukłymi ale także z wklęsłymi jak i posiadającymi w sobie dziury.
P-137080
« 1 »
  Strona 1 z 1