Start | Super Packer | Atari Graphics Studio | Graph2Font | Mads | MadPascal | Atari Zines | YouTube | http://madteam.atari8.info |
Zajec/Sword
Megatazin #2
Witam wszystkich zainteresowanych
pisaniem dem i intr. Sam nie znam się na
asemblerze lecz wiem jak większość efektów
jest zrobiona od strony teoretycznej.
Pierwszym opisanym przeze mnie
efektem jest ...
Gdy chcemy zrobić animację wektorową
w dwóch wymiarach to musimy użyć do
obrotu punktu wzór z pierwszej klasy
szkoły średniej: Xr=X0+(X-X0)*cosA+(Y-Y0)*sinA Yr=X0+(Y-X0)*cosA+(X-Y0)*sinA gdzie: X0, Y0 - współrzędne punktu obrotu X, Y - współrzędne obracanego punktu A - kąt o jaki obracamy Xr, Yr - współrzędne punktu po obrocie
Powstaje pytanie skąd w asemblerze
wziąć wartości sinusa i cosinusa kąta.
Otóż potrzebne liczby umieszczamy w
tablicy. Do wykonania tablicy można
wykorzystać program w języku wyższego
poziomu np. Turbo Basicu.
Ten efekt przedstawia animowane okręgi "schodzące" do wewnątrz lejka lub "rozchodzące" się z zewnątrz lejka. Efekt jest niczym innym jak animacją na kolorach a animację uzyskuje się poprzez złudzenie optyczne. Podstawową sprawą jest stworzenie takiego rysunku aby na nim była możliwość animacji na kolorach. Rysunek taki najłatwiej stworzyć w Turbo Basicu dlatego też poniższy program który tworzy "lejek" został napisany w Turbo Basicu. 10 GRAPHICS 15:C=1:R=96:X0=79:P=2:CC=1 12 FOR YO=191 TO 95 STEP -1:COLOR C 14 CIRCLE XO,YO,R:C=C+1:R=R-1 16 IF C=4 THEN C=1 18 NEXT Y0:P=2 20 RESTORE 28:FOR Q=0 TO 2:READ A,B,C 22 D=CC*16:A=A+D:B=B+D:C=C+D 24 POKE 708,A:POKE 709,B:POKE 710,C 26 PAUSE P:NEXT Q:GOTO 20 28 DATA 2,4,6,4,6,2,6,2,4 Zmieniając wartość 'P' zmieniamy prędkość animacji, natomiast parametrem 'CC' zmieniamy kolor lejka animowanego (tutaj 1 kolor szary). Niedokładności w rysunku czarne pixle można zmniejszyć dopisując linie 13 CIRCLE X0,Y0,R-1
Lecz najlepiej pozostałe czarne pixele
zamalować ręcznie pod dowolnym
programem graficznym.
Można uzyskać bardzo prosto, wystarczy
uśrednić kolor wszystkich pixeli na
ekranie, tzn. kolor pixela o wsp. X,Y
równy jest średniej arytmetycznej kolorów
pixeli, jego otaczających.
Uzyskamy podobnie jak rozmycie jedynie z taką zmianą, że kolor pixela o wsp. X,Y równy jest równaniu: C=S+(S-W) gdzie: S - stara wartość aktualnego punktu W - średnia arytmetyczna kolorów punktów bezpośrednio sąsiadujących z aktualnym C - nowa intensywność koloru aktualnego punktu Aby uzyskać tzw. bobsy należy umieć wyświetlić szybko kulę na ekranie w trybie $0E Antica (gdyż on najlepiej nadaje się do tego efektu). Kulę oczywiście rysujemy sobie sami w dowolnym programie graficznym, a jej rozmiary nie powinny przekroczyć 16x16 pixeli. Następnym krokiem jest ułożenie sobie tablicy sinusów i cosinusów. Teraz zostaje nam napisać tylko program. Kula ma poruszać się po dowolnej krzywej, którą najlepiej wyliczyć ze wzoru Lisa-żu, który brzmi: Xn=int(sin(X*3.14/180)*R)+W Yn=int(cos(Y*3.14/180)*R)+W gdzie: Xn - nowa pozycja x Yn - nowa pozycja y X - stara pozycja x Y - stara pozycja y R i W - parametry dowolne(>0 i <100) od których zależny jest przebieg krzywej
Jeżeli już wyliczyliśmy nowe X i Y
dla kuli, teraz musimy znaleźć w pamięci
komputera miejsce na 4 ekrany
po czym rysujemy kulę o wsp. X,Y na
ekranie 1, obliczamy nowe X,Y, przełączamy
na 2 ekran i rysujemy kule o
nowych wsp. X,Y ponownie obliczamy X i
Y, przełączamy na 3 ekran, liczymy
ponownie X,Y przełączamy na 4 ekran i
rysujemy, liczymy nowe X,Y i przełączamy
na 1 ekran i tak w kółko...
Morphing punktowy polega na płynnym "przechodzeniu" jednej figury punktowej w drugą. Przed wykonaniem animacji liczymy dla każdego punktu dx = (x2 - x1) / ik dy = (y2 - y1) / ik gdzie: (x2,y2) - punkt docelowy (x,y) - punkt przechodzący dx,dy - przyrosty dla współrzędnych punktu, na każdy krok animacji ik - (ile kroków) ilośc kroków animacji W czasie animacji wykonujemy kolejno: 1. Zetrzyj punkt (x,y) 2. Policz: x=x+dx, y=y+dy 3. Postaw punkt (x,y)
Operacje 1-3 wykonujemy (ik) razy.
ten artykuł. Zajec/Sword |
madteam.atari8.info © MadTeam, hosted: www.atari8.info |