2

Valszeg kevesen emlékeznek rá, de amikor a Javascript bevezette a setTimeout() függvényt, akkor egy bizonyos okból az nem tudott gyorsabban ütemezni, mint 55msec.

De miért 55msec?

Azért, mert azoknak a számítógépeknek az időzítője másodpercenként 18.2-t ütött, innen pedig 1000msec / 18.2 = 54.95-ös érték.

De miért 18.2?

Az érték úgy jön ki, hogy a PC-kben használt "órát" (PIT - Programmable Interval Timer) akkoriban egy Intel 8254 chip szolgáltatta. Amikor ez az "óra" ketyegett egyet, megnövelt egy számértéket eggyel. Ez a számérték maximum 65536 (2^16 - azaz két byte) értéket vehetett fel. Mindig, amikor átfordult, az "óra" "ütött" egyet. Az óra frekvenciája 1.19318 Mhz volt, ezt elosztjuk 65536-tal, akkor kijön a 18.2-es érték.

De miért pont 1.19318 Mhz?

Ez a frekvencia pont harmada az NTSC colorburst (szín szinkron jel) frekvenciának (3.57954 MHz). Ez a frekvencia arra való, hogy színinformációt adjon az amúgy fekete-fehér képhez. Úgy találták, hogy ez a 3.57954 MHz elegendő távolságban van a fényességinformációtól és a hangsávtól, így egyikkel sem fog interferálni (azaz, pl. nem sistereg a hang vagy nem zizisedik a kép).

De továbbra is, miért 3.57954 MHz?

Nos, ez úgy jön ki, hogy összeszorzunk néhány mágikus számot! Ezek pedig sorban:

  • az NTSC szabvány által meghatározott vízszintes vonalak száma a képernyőn, azaz a függőleges felbontás: 525 "scan line". A folyamatosság fenntartása miatt viszont csak minden második sort rajzolta a tévé egy körben (interlace), így ezt az 525-öt el kell felezni: 262.5
  • a váltakozó áram frekvenciája: 60 Hz (ebből lett a képfrissítési frekvencia)
  • 5 * 7 * 13 / 2

Így együtt kiadják az eredményt, 262.5 * 60 * 5 * 7 * 13 / 2 = 3.583.125 (elegendően közel van a fent említetthez). Ha nagyon pontosak akarunk lenni, akkor a váltóáram frekvenciájának használt értéket le kell csökkenteni egész pontosan 59.94-re.

(Egyébként, ha ez utóbbi a frekvenciát megfelezzük, akkor 29.97-et kapunk, és a régi motorosoknak már egyből PTSD-je lesz a videókódolás macerája miatt - na így függ össze ez az egész.)

Most akkor már megint mi ez a 5 * 7 * 13 / 2?

Mert ez olcsó volt! Ezeket a számokat olyan oszcillátorokkal állították elő, amik gyártása nagy tömegben és olcsón történt, ezért felhasználták a tévékben már meglévő eszközöket, hogy ilyen szorzatokat állítsanak elő.

Szóval az, hogy 2002-ben miért nem lehetett sűrűbben ütemezni az animációkat azért volt korlátozva, mert valaki 1938-ban kitalálta, hogy hogyan lehet színes tévét csinálni.

[ctrl+enter]
markdown formázási segítség