prośba o pomoc z programem (układanie kół)

1

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.

0

może uproszczę i uściślę, 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?

0

Ogarnij podstawy geometrii analitycznej na początek.
Obszar po którym rysujesz traktujesz jako pierwszą ćwiartkę układu współrzędnych.
Zacznij od czegoś takiego może:
http://www.geometryexpressions.com/explore.php?p=04-Examples%2F02-Example_Book%2F04-Circles&f=Example_094_The_Triangle_Tangential_To_3_Tangential_Circles.htm
Widzisz trójkąt równoboczny ABC? Wystarczy na jego wierzchołkach opisać okręgi o promieniach równych połowie długości krawędzi tego trójkąta (D).
Wybierasz sobie losowo dwa wierzchołki trójkąta, a trzeci obliczasz analitycznie...
Jak już będziesz miał taki trójkąt to możesz obliczyć wierzchołek następnego trójkąta, przylegającego do tego trójkąta i w ten sposób będziesz miał czwarte koło przylegające do pozostałych, itd, itd....

0

Kolega mk, z którym mam zaszczyt współpracować przy tworzeniu programu, trochę niezrozumiale opisał problem. Chodzi o układanie obok siebie kół o różnych promieniach, losowanych w trakcie wykonywania przez program rysunku. Rozwiązanie z trójkątem równobocznym nie jest więc tutaj odpowiednie.*

Program ma wybrać promień a następnie narysować koło w takim miejscu aby przylegało do innych, narysowanych już kół. Cała kanwa rysunku musi być zapełniona kołami tak szczelnie, jak to widać na załączonych w pierwszym poście rysunkach.

Myśleliśmy o zastosowaniu algorytmu genetycznego ale mamy jeszcze nadzieję, że uda się ten problem rozwiązać w prostszy sposób.


  • Dokładnie to kół o określonym promieniu ma być 80%, promienie reszty kół mają być dobierane losowo z zadanego przedziału wartości. Obawiam się, że nie jestem w stanie uzyskać dokładnej liczby odpowiadającej 80% wszystkich narysowanych kół. Losowy charakter procesu rysowania uniemożliwia bowiem dokładne wyznaczenie liczby wszystkich kół. Więc musi być to wartość przybliżona. Ale to problem poboczny.
0

teraz pytanie. Czy koła maja być rozsiane dowolnie (byleby się stykały), czy mają być może upakowane optymalnie w jakiejś określonej przestrzeni?
Ogólnie jakie macie więzy na ten problem (poza stykaniem się kół).
Te 20% kół to jak się ma do promienia pozostałych kół? Czy to są ziarna piasku między kamieniami?

0

Losujecie punkty a i b, promienie a, b i c:
Sposób na policzenie wsp. punktu C:
http://www36.zippyshare.com/v/28289865/file.html
Popiłem trochę więc nie ręczę za to.

1 użytkowników online, w tym zalogowanych: 0, gości: 1