-[PhariseuS]- Opublikowano 28 Listopada 2007 Udostępnij Opublikowano 28 Listopada 2007 Zainspirowany Tymonowym przykładem transformacje.gm6 postanowiłem pójść o krok dalej - napisałem funkcję rysującą wielokąt o dowolnej przekątnej (skala), dowolnej rotacji i nie mniej dowolnej liczbie boków. Sam skrypt jest przyjazny dla tych, którzy dopiero zaczynają swoją przygodę z GML (komentarze!). Nie będę się więc rozpisywał, gdyż wszystko jest opisane właśnie w komentarzach. //funkcja rysuj_wielokat(ilosc_bokow,skala,rotacja) //- funkcja pozwalająca //użytkownikowi rysowac wielokat foremny o dowolnej liczbie bokow (no moze bez //przesady, przy ponad dwudziestu to juz zaczyna wygladac jak kolo) // // //copyright by Phar 2007 //Jesli skorzystasz z tego przykladu, miloby bylo gdyby wzmianka o tym //pojawila sie w liscie plac twojej gry. Ciebie to nic nie kosztuje, //a niebywale podnosi moje morale i daje mi motywacje! // // //argumenty funkcji: ////ilosc_bokow - okresla nam oczywiscie ilosc bokow (katow?) wielokata ////skala - odleglosc laczaca srodek figury z wierzcholkiem, okresla nam jak wielka ////////////bedzie nasza figura (analogicznie do promienia w draw_circle()) ////rotacja - obrot narysowanej juz figury o dany kat (w stopniach 0-360) //Kilka uwag: //po pierwsze i najważniejsze to sprawdzic, czy uzyszkodnik podal logiczne argumenty, //ewentualnie poprawic to, co sie da ilosc_bokow=argument0; skala=argument1; rotacja=argument2; if ilosc_bokow<3 then { draw_text(x,y,"BLAD!#Wielokat ma conajmniej 3 katy!"); //i wtedy nie ma bata, funkcje przerywamy. } else { //po pierwsze nalezy sie dowiedziec, co ile stopni //generowany jest kolejny wierzcholek //(dla matematycznych zboli: odnalezc kat pomiedzy //przekatnymi) coile=360/ilosc_bokow; //teraz mozna juz generowac wierzcholki. //zapiszemy je w dwuwymiarowej tablicy, //gdzie pierwszy wymiar oznacza indeks wierzcholka, //a drugi wymiar - dany koordynat (0 to x, 1 to y) for (i=0; i<ilosc_bokow; i+=1) { wierzcholek[i,0]=x+lengthdir_x(skala,i*coile+90+rotacja); wierzcholek[i,1]=y+lengthdir_y(skala,i*coile+90+rotacja); } //no to teraz sobie porysujemy. draw_primitive_begin(pr_trianglefan) { for (j=0; j<ilosc_bokow; j+=1) { draw_vertex(wierzcholek[j,0],wierzcholek[j,1]); } draw_vertex(wierzcholek[0,0],wierzcholek[0,1]); //(nie zapomnijmy o wierzcholku konczacym) } draw_primitive_end(); } Dołączam także przykład dla Game Makera 7 - spokojnie pójdzie na niezarejestrowanej wersji. Enjoy! Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Tymon Opublikowano 28 Listopada 2007 Udostępnij Opublikowano 28 Listopada 2007 Zgubiłeś }. ;) Pozytywne. Dobrze napisane, ładnie opisane. Cieszy mnie, że jestem źródłem inspiracji. :) Napisanie transformacje.gm6 służyło nieco innemu celowi, zaraz poszukam tego co zrobiłem na jego podstawie. EDIT https://gmclan.org/up152_3_p3d.html Strzałki, Z, X obracanie. S solid. Prosty efekt bez użycia funkcji d3d. ;) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
-[PhariseuS]- Opublikowano 28 Listopada 2007 Autor Udostępnij Opublikowano 28 Listopada 2007 Zgubiłeś }. Niezaprzeczalnie. Dzięki! Cieszy mnie, że jestem źródłem inspiracji. No no, bo się zaraz w sobie zakochasz ;) EDIT: Super przykład, ale byłoby jeszcze lepiej, gdybyś udostępnił nam wersję edytowalną ;D Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Tymon Opublikowano 28 Listopada 2007 Udostępnij Opublikowano 28 Listopada 2007 Nie popadajmy w skrajności jak niektórzy na GMclanie. ;) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
-[PhariseuS]- Opublikowano 28 Listopada 2007 Autor Udostępnij Opublikowano 28 Listopada 2007 Nie bardzo rozumiem o co chodzi z tymi skrajnościami o_O No ale dobra. Czy ktoś z redakcji mógłby umieścić ów *.gmk w sekcji Przykłady działu Download? Bo albo nie umiem sam tego zrobić, albo nie mam uprawnień. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się