Idea skonstruowania dot tunelu:
: 26 sie 2009, 20:54
1. Biorę sobie okrąg i obliczam powiedzmy 64 (albo 32) pozycje plotów z niego i zapisuję pozycje dotów mieszczące się na ekranie - to daje mi najmniejsze możliwe przesunięcie o kąt 360/64 czyli około 6 stopni.
Zapisanie pozycji tych plotów to raptem 128 bajtów albo można zapisać już przeliczone ich pozycje jako adresy na bitmapie i pozycje bitu do nich jako trzeci bajt co da 192 bajty na okrąg.
2. Przesuwam mój okrąg do tylu w osi Z i powracam do punktu 1.
W taki sposób robię 9 razy i mam pozycje dla 10ciu okręgów dla 640 dotów co raptem daje mi zajęcie 1280 lub 1920 bajtów.
Po tak zapisanej trajektorii mogę przesuwać moje wybrane pointy sprawiając wrażenie 3d tunelu i dodatkowo:
Biorę sobie przykładowo jakiś wycinek funkcji f(x) = 1/x i:
(Zapisanie wartości może zająć powiedzmy 256bajtów lub także jako offsety na bitmapie osobno dla X i osobno dla Y)
Dodając wartości funkcji do Y (pointów) – wyginam tunel do góry w pionie
Odejmując od Y – wyginam tunel w dół w pionie
Dodając do X wyginam tunel w prawo obserwatora
Odejmując od Y wyginam tunel w lewo
Dalej jeszcze dodając w X i odejmując w Y wyginam tunel w prawo dół
Etcetera
Przesuwając „pozycję tunelu we funkcji” kontroluję wielkość wygięcia tunelu.
Pozostaje tylko zapalać i gasić wybrane pointy i przesuwać je po trajektorii jakiejś funkcji.
Poprawcie mnie gdzie się mylę bo jak jest dobrze to zapewne pierwszy na to nie wpadłem.
Zapisanie pozycji tych plotów to raptem 128 bajtów albo można zapisać już przeliczone ich pozycje jako adresy na bitmapie i pozycje bitu do nich jako trzeci bajt co da 192 bajty na okrąg.
2. Przesuwam mój okrąg do tylu w osi Z i powracam do punktu 1.
W taki sposób robię 9 razy i mam pozycje dla 10ciu okręgów dla 640 dotów co raptem daje mi zajęcie 1280 lub 1920 bajtów.
Po tak zapisanej trajektorii mogę przesuwać moje wybrane pointy sprawiając wrażenie 3d tunelu i dodatkowo:
Biorę sobie przykładowo jakiś wycinek funkcji f(x) = 1/x i:
(Zapisanie wartości może zająć powiedzmy 256bajtów lub także jako offsety na bitmapie osobno dla X i osobno dla Y)
Dodając wartości funkcji do Y (pointów) – wyginam tunel do góry w pionie
Odejmując od Y – wyginam tunel w dół w pionie
Dodając do X wyginam tunel w prawo obserwatora
Odejmując od Y wyginam tunel w lewo
Dalej jeszcze dodając w X i odejmując w Y wyginam tunel w prawo dół
Etcetera
Przesuwając „pozycję tunelu we funkcji” kontroluję wielkość wygięcia tunelu.
Pozostaje tylko zapalać i gasić wybrane pointy i przesuwać je po trajektorii jakiejś funkcji.
Poprawcie mnie gdzie się mylę bo jak jest dobrze to zapewne pierwszy na to nie wpadłem.