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? |
|
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. |
|
anonim |
» 2012-11-27 16:05:20 Poszukaj może czegoś o równaniu okręgu, to powinno pomóc,. |
|
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 :) |
|
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? |
|
DejaVu |
» 2012-12-01 21:59:43 |
|
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 :) |
|
« 1 » |