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

program rysujący okręgi w C++

Ostatnio zmodyfikowano 2012-12-03 20:33
Autor Wiadomość
mkmkmk
Temat założony przez niniejszego użytkownika
program rysujący okręgi w C++
» 2012-11-27 14:35:04
Dzień dobry,
potrzebuję napisać program żeby układał strukturki podbne jak tutaj: http://puzzlezapper.com/blog/2012/01/polycircles/ (tyle, że ja ma tylko 4ry rodzaje struktur -mam już je napisane w C++), ale chcę by układał je podobnie jak tu: http://puzzlezapper.com/blog/2012/02/polypennywise/ -czyli, żeby były układane jak najbliżej siebie (mają się stykać, ale nie nachodzić na siebie) -niestety nie wiem, jaki kod wpisać do programu, żeby tak się układały. Nie mam na to pomysłu.
Inną sprawę jest, że jednego rodzaju struktur ma być ok 80% a reszta random:) -ale myślę, że to jest łatwe do zrobienia.
mam te struktury napisane w C++ (2D), a także narysowane w 3D i 2D w CADzie, ale tego chyba nie da się zaimplementować.
Chodzi o to, żeby one były tak blisko siebie ułożone przez program ja w przykładzie.
Nie wiem czy wyraziłem się jasno, jeśli będzie potrzeba mogę rozwinąć temat i odpowiedzieć na wszystkie pytania. Jeśli ktoś robił coś podobnego i wie jak się do tego zabrać prosiłbym o pomoc.

Upraszczając chodzi o taki algorytm który będzie rysował kolejne grupy kół obok innych tak by przylegały, ale się nie przecinały. Pisał może kiedyś ktoś coś takiego?
P-69974
DejaVu
» 2012-11-27 14:51:42
Rysować okręgi możesz przy pomocy biblioteki SFML 2.0. Ustalanie właściwych pozycji okręgów to już inna bajka. W praktyce wiąże się to z implementacją algorytmu do wykrywania kolizji okręgów na scenie. Rozbijaj problem na mniejsze, tj. jeżeli nie wiesz jak narysować okrąg na ekranie to załóż do tego osobny temat. Jeżeli nie wiesz jak napisać jakiś algorytm to również załóż do tego osobny temat.
P-69975
anonim
» 2012-11-27 16:05:20
Poszukaj może czegoś o równaniu  okręgu, to powinno pomóc,.
P-69978
crash
» 2012-11-27 18:04:40
Tia, równanie okręgu. Okręgi stykają się, gdy promień pierwszego i promień drugiego == odległość ich środków; adekwatnie kiedy odległość środków > r1+r2 to okręgi nie stykają się, a w przeciwnym wypadku nachodzą na siebie.

Równanie okręgu r^2 = (a-x)^2  + (y-b)^2

r - promień
(a,b) - środek okręgu
(x,y) - każdy punkt, który wchodzi w skład okręgu (nie chodzi o pole lecz o obwód)

Przydałaby się funkcja rysująca okrąg w danym punkcie, argumenty to środek i promień, ewentualnie kolor. Jeśli każdy okrąg ma stały promień, to trzeba wykorzystać, że odległość dwóch środków okręgów to 2*r. Żeby przypadkowo okręgi na siebie nie wchodziły, można zastosować tablicę środków i sprawdzać wedle niej czy następny generowany środek nie będzie za blisko któregoś z okręgów. Samo sprawdzanie w niektórych przypadkach może być bardzo czasochłonne, więc jak DejaVu pisał, można skorzystać z kolizji, podejrzewam, że gotowe narzędzie będzie działało lepiej :)
P-69994
mkmkmk
Temat założony przez niniejszego użytkownika
» 2012-12-01 18:22:37
a gdzie znajdę jakiś dobry opis, który mógłbym wykorzystać o tym wykrywaniu kolizji?
P-70221
DejaVu
» 2012-12-01 21:59:43
http://forum.4programmers.net/C_i_C++/207480-prosba_o_pomoc_z_programem_ukladanie_kol

Ciągniesz swój temat na dwa fronty. Jak szukasz konkretnych informacji, to:
Frazy, które należy wpisać w wyszukiwarkę google:
W każdym razie wykrywanie kolizji w 'grach' to nie jest spacerek, więc nie liczyłbym na to, że ktoś Ci udzieli wyczerpującej odpowiedzi.
P-70228
CodeMeister
» 2012-12-03 20:33:57
@crash

Okręgi stykają się, gdy promień pierwszego i promień drugiego == odległość ich środków;

Jak może być promień równy odległości ich środków czyli 2 * promień

Chyba, że coś źle zrozumiałem ;)

//Edit:

A sorry, mój błąd :)
P-70302
« 1 »
  Strona 1 z 1