-
1. Data: 2011-12-18 09:42:39
Temat: hidden code - na przyklad nanoboty
Od: " " <f...@N...gazeta.pl>
natknalem sie na pewna kwestie powiedzmy wlasnie z tematow
architekturyzacyjnych (choc nie wiem czy to najbardziej
adekwatne slowo)
powiedzmy ze mam kawalek kodu realizujacy dzialania
1-pikselowych nanobotow w 2d: ogolnie zaczyna sie to
(w sensie sledzenia toku wykonania) od dolu i leci w
gore -> w zwiazku z tym prosze skoczyc na sam dol i
czytac akapitami od dolu do gory, bedzie wygodniej:
/////
(fir kenobi)
W sumie to jest pointa tych rozwazan bo mz dochodzi
sie tutaj do pojecia 'hidden code' (lub czegos takiego
bo wymaga to przemyslenia), okazuje sie kod ze sekcja
pierwszej zaczyn anabierac sklonnosci do nabierania
nowej postaci kodu - ktory rozni sie od normalnego
'jawnego' i fizykalnego kodu sekcji drugiej i trzeciej
:)
Podobnie tylko w sposob bardziej skomplikowany sprawa
ma sie z kwestia 'internalnegj' planszety kolizyjnej
'internalizowania' pol x i y i wystawienia wylacznego
interfejsu do przesuwania nano w przestrzeni
to normalizujKat to przyciecie kata do zakresu 0.0-360.0
void nanoSetAngle(int i, float angle)
{
normalizujKat(&angle);
nano[i].angle = angle;
nano[i].dirx = cos(nano[i].angle*degree360);
nano[i].diry = sin(nano[i].angle*degree360);
}
Konkretnie u mnie jest to cacheowanie skladowych
predkosci nanobota, normalnie nanobot ma wspolrzedne
x y i angle (oraz v itd) - gdzie angle (moglem znalezc
lepsza nazwe moze a po praostu) jest katem kierunku ruchu
nanobota, przy liczeniu kazdego kroku ruchu trzeba
policzyc skladowa vx i vy przy pomocy sinusa i cosinusa,
z praktycznych powodow wyraznie wydajniej jest
liczyc to nie co krok a tylko przy zmianie kata,
innymi slowy scacheowac dwa 'internalne' floaty dirx i diry
w strukturze Nano i uzywac dirx i diry natomiast
wystawic Nano wylaczny interfejs do zmiany kata, cos
w stylu
Normalnie jak mowie sa to raczej same struktury ale
w zwiazku z istatna potrzeba wprowadzenia struktury
informacji kolizyjnych sekcja ta nieco sie rozbudowala.
Jest zreszta jeszcze jeden przyczynek tego samoego
rodzaju jak rozbudowa przez obsluge tablicy/planszy
kolizyjnej
Jeszcze uwaga czemu taki podzial gora i dol - wiaze on
sie jak juz zreszta napisalem z kolejnoscia poziomow
wywolan, np srednia sekcja jest 'zasilana' z dolnej
natomiast,sama wywoluje i uzywa, operuje, na 'fragmentach',
'koncowkach' z sekcji gornej
Zasadniczo to o czym chcialem glownie napisac wiaze sie
z pierwszą sekcja tj najwyzsza w pliku, normalnie nie
ma tam chyba za bardzo nic poza samym typem Nano (strukturą)
i kontenerem na nano (czyli tablica nano[]), niestety
w zwiazku m.in. z kwestiami opisywanymi w watku "Wada
spacjali kolizyjnej" pojawilo sie cos nowego
W metodzie move() i sredniej sekcji kodu bylaby zawarta
glowna funkconalnosc gry czy symulacji - nad tym trzebaby
sie najbardziej nabiedzic - ale tez powtarzam byc moze
wygodniej byloby ta posrednia sekcje odkreskowac
komentarzem od eskcji nizszej i wyzszej, co ew ulatwiloby
skupienie sie na robocie
Sam ten kod ponizej (niejako 'root' czyli rozdzielnik
dzialan mialbym chec nazwac 'niską sekcją' albo coś
takiego, chodzi o to ze np kod powyzej czyli opisywana
metoda move() nalezy juz do innej sekcji - sredniej,
a opisywane jeszce wyzej 'koncowki' do ew wyzszej
sekcji- taki podzial pozwala sie w pewnym sensie
lepiej poorientowac
void updateNanoboty()
{
initNano();
for(int i=0; i<3;i++) //przemnoznik dla fizyki
moveNano();
drawNano();
}
ogolnie zaczyna sie to od metody update() spod ktorej
wywolywane sa init() (na fladze tylko raz) draw() i move(),
galezie draw() i init sa bardzo proste i szybko sie koncza,
to co ciekawe zawarte jest ew w metodzie move()
--
Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/
-
2. Data: 2011-12-18 09:54:07
Temat: hidden code - na przyklad nanoboty
Od: " " <f...@N...gazeta.pl>
tak wogole to moge dodac ze ja wlasnie z tymi interfejsami
do 'hidden' kode (czy cache code czy jak to nazwac) mam
pewien problem, nie wiem jak to ladnie skonstruowac poznazywac
i wydzielic - np zrobilem obsluge tablicy kolizyjnej
i wystawilem jakis tam interfejs ale nie podoba mi sie
to poki co - a taki zgrzyt rzutuje na jakosc dlaszego kodu
--
Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/