Osuuko DVD-logo koskaan kulmaan?
Jokainen DVD-näytönsäästäjää katsonut on miettinyt samaa: osuuko se kulmaan, vai hukkaanko minä aikaani?
Kysymykseen on täsmällinen vastaus. Ei todennäköisyys eikä keskiarvo, vaan vastaus, jonka voi laskea etukäteen neljästä asiasta: kuinka iso ruutu on, kuinka iso logo on, kuinka nopeasti se liikkuu ja mistä se lähti. Näin se käy, kolmessa askeleessa.
Askel yksi: ruutu on pienempi kuin miltä näyttää
Aloitetaan siitä, mikä oikeasti pomppii. Logo on suorakulmio eikä piste, joten matkaa tekee sen vasen yläkulma — eikä se kulma voi koskaan yltää ruudun oikeaan reunaan, koska loput logosta ovat tiellä. Sen liikkumavara on ruutu miinus logo.
Nyt mukaan nopeus. Logo siirtyy kiinteän määrän pikseleitä ruutua kohden — neljä on tyypillinen — joten se voi pysähtyä vain joka 4. pikselille tuosta liikkumavarasta. Väliin jäävät pikselit eivät ole vain harvinaisia. Ne ovat saavuttamattomia.
Poista ne, ja kuva muuttuu täysin. Alla vasemmalla jokainen risteys on pikseli, ja vain syaaninväriset voivat pitää logoa. Oikealla samat syaaninväriset pisteet omillaan.
Jäljelle jää ruudukko, jolla ongelma todella elää, ja sen koko on yksinkertaisesti:
- X = (ruudun leveys − logon leveys) ÷ nopeus
- Y = (ruudun korkeus − logon korkeus) ÷ nopeus
Niinpä 3840 × 2160 -ruutu, jolla on 176 × 80 kokoinen logo ja 4 pikselin nopeus ruutua kohden, ei ole neljän miljoonan pikselin ongelma. Se on 916 × 520 -ongelma.
Siinä on koko pelkistys. Mikä tahansa ruutu, mikä tahansa logo, mikä tahansa nopeus: piste, joka etenee vinottain X kertaa Y -ruudukolla, yksi ruutu kerrallaan. Nuo kaksi lukua ratkaisevat kaiken muun.
Yksi oletus, sanottuna heti alkuun. Kaikki tämä olettaa, että logo kulkee aitoa lävistäjää — yhden pikselin sivulle jokaista alaspäin kuljettua pikseliä kohden. Näin käyttäytyi DVD-soittimien alkuperäinen näytönsäästäjä, ja näin käyttäytyy alempana analysoitu video. Lähetä se jollain muulla kulmalla, ja ruudukko hajoaa vieden mukanaan jokaisen tällä sivulla esitetyn siistin tuloksen.
Askel kaksi: yksi ainoa luku ratkaisee, tapahtuuko se koskaan
Nyt se osa, joka yllättää. Sillä, yltääkö logo koskaan kulmaan, ei ole mitään tekemistä odotusajan kanssa. Se on ratkaistu ennen ensimmäistä ruutua.
Tästä syystä. Unohda kulmat hetkeksi ja katso pelkkiä reunoja. Vinottain X kertaa Y -ruudukolla edetessään logo koskettaa vasenta tai oikeaa reunaa joka X ruudun välein kuin kellokoneisto, ja ylä- tai alareunaa joka Y ruudun välein. Pomppiminen ei koskaan häiritse noita rytmejä, koska pomppiminen on se rytmi — se on juuri sitä, mitä reunaan koskettaminen tarkoittaa.
Kulma ei ole muuta kuin molemmat herätyskellot samassa ruudussa.
Kysymys lakkaa siis olemasta geometrinen ja muuttuu kysymykseksi kahdesta toistuvasta herätyskellosta: kun tiedetään, missä kohtaa jaksoaan kumpikin on, soivatko ne koskaan yhtä aikaa? Kaksi herätyskelloa voivat osua yhteen vain, jos niiden ensimmäisten soittojen väli on niiden jaksojen yhteisen tekijän monikerta. Ja X:n ja Y:n yhteinen on niiden suurin yhteinen tekijä.
Siinä on koko testi. Ota syt(X, Y). Jos logo lähti alas oikealle, se yltää kulmaan vain silloin, kun tuo tekijä jakaa sen aloituskoordinaattien erotuksen; jos se lähti ylös oikealle, vain kun se jakaa niiden summan. Muuten herätyskellot ovat ikuisesti eri tahdissa, eikä pidempi käyttö korjaa rytmiä.
Kaksi vierekkäistä aloitusruutua samalla 12 × 8 -ruudukolla, jossa syt(12, 8) = 4. Pisteestä (0, 4) erotus on 4, siisti monikerta, ja herätyskellot osuvat yhteen. Pisteestä (1, 4) erotus on 3, eivätkä ne osu koskaan.
Tästä seuraa sääntö, jonka voi soveltaa silmämääräisesti: suunnilleen yksi aloitusruutu jokaista syt:tä kohden toimii.
- syt = 1
Jokainen aloituspaikka yltää kulmaan. Ihan jokainen, taatusti.
- syt = 2
Yksi kahdesta. Puolet ovat toivottomia.
- syt = 3
Yksi kolmesta.
- syt = 4
Yksi neljästä.
- syt = 6
Yksi kuudesta — alle 17 %.
- syt = 12
Yksi kahdestatoista. Yli 91 % ei johda mihinkään.
Ja se tuntuu käytännössä. Askeleen yksi 916 × 520 -ruudukon syt on 4, joten siinä kokoonpanossa kolme neljäsosaa aloituspaikoista on menetetty ennen kuin logo on liikahtanut kertaakaan.
Jos siis olet tuijottanut näytönsäästäjää tunnin ilman tulosta, kyse ei ehkä ole huonosta tuurista. Ehkä katselet silmukkaa, joka ei matemaattisesti voi tuottaa mitään.
Askel kolme: kulma kääntää kaiken
Vielä yksi tosiasia, ja juuri sen varassa loppu lepää.
Tavallinen pomppu muuttaa vain puolet liikkeestä. Osu oikeaan seinään matkalla alas oikealle, ja vaakasuora etumerkki kääntyy: logo menee nyt alas vasemmalle. Pystysuora puolisko jatkaa täysin koskemattomana, joten logo valtaa yhä uutta maastoa.
Kulma kääntää molemmat etumerkit kerralla. Alas-oikealle muuttuu ylös-vasemmalle — ei uusi suunta, vaan täsmälleen vastakkainen sille, jolla se saapui. Ja nopeuden molempien puoliskojen kääntäminen on sama asia kuin painaa takaisinkelausta.
Ja juuri niin käy. Jokaisen ruudun, jonka logo ylitti mennessään, se ylittää uudelleen palatessaan, käänteisessä järjestyksessä. Jokaisen tekemänsä pompun se tekee uudelleen takaperin. Rata on palindromi.
Pomppiva logo ei siis ole levoton viiva, joka lopulta käy kaikkialla, kunhan sille antaa tarpeeksi aikaa. Se on suljettu meno-paluupiiri, jonka kummassakin päässä on käännekohta, ja nuo käännekohdat ovat kulmia.
Palaamme tähän lopussa, sillä se ratkaisee neljän kulman kysymyksen lopullisesti.
Kuinka pitkä väli osumien välillä
Askeleen kaksi kaksi herätyskelloa eivät kerro vain osutaanko kulmaan. Kun lankaa vetää hieman pidemmälle, ne kertovat myös kuinka usein.
Kun ne kerran ovat soineet yhtä aikaa, milloin aikaisintaan ne voivat tehdä sen uudelleen? Eivät ennen kuin kokonainen määrä X-jaksoja on kulunut ja samalla kokonainen määrä Y-jaksoja. Ensimmäinen hetki, joka on sekä X:n että Y:n monikerta, on määritelmän mukaan niiden pienin yhteinen jaettava. Enempää ei ole laskettavaa.
- Toimivalla aloituksella kulmaosuma sattuu joka pyj(X, Y) ruutua, täsmälleen, ilman että se koskaan ajautuisi
- Ja jokainen rata, yltipä se kulmaan tai ei, sulkeutuu itseensä joka 2 × pyj(X, Y) ruutua: meno käännekohtaan ja paluu takaisin, aivan kuten askel kolme kuvasi
Otetaan se 4K-video 60 fps:llä, jota kaikki jakavat. Sen logolla on 317 vaakasuoraa ja 186 pystysuoraa lepopaikkaa, joten X = 316 ja Y = 185. Nuo kaksi ovat keskenään jaottomia — syt on 1 — mikä askeleen kaksi mukaan tarkoittaa, että jokainen aloituspaikka tuolla ruudulla toimii. Ja pyj(316, 185) on yksinkertaisesti 316 × 185 = 58 460 ruutua: 16 minuuttia, 14 sekuntia ja 20 ruutua.
Tuo ennuste on testattavissa, ja se pitää. Kyseisessä videossa ensimmäinen kulmaosuma osuu kohtaan 13:29:38 ja toinen kohtaan 29:43:58 — minuutteja, sekunteja ja ruutuja. Tarkistimme: 48 578 ruutua ja 107 038 ruutua, ero täsmälleen 58 460, ruudun tarkkuudella.
Miksi tarkkuutesi tuskin merkitsee mitään
Näet toistettavan ”16 minuuttia 14 sekuntia” ikään kuin se seuraisi 4K:sta 60 fps:llä. Ei seuraa. Katso, mistä vastaus oikeasti koostuu:
pyj(X, Y) = X × Y ÷ syt(X, Y)
Odotus ruutuina yhden kulmaosuman ja seuraavan välillä.
Tarkkuus siirtää X:ää ja Y:tä, ja siirtää niitä lempeästi: ruudun kaksinkertaistaminen suunnilleen kaksinkertaistaa kummankin. Mutta syt on nimittäjässä, eikä syt ole koko. Se on sattuma siitä, mitkä luvut jakavat tekijöitä, ja se voi hypätä ykkösestä 127:ään kahden identtiseltä näyttävän kokoonpanon välillä.
Näin se vaikuttaa. Sama 284 × 128 logo samalla 4 pikselin nopeudella ruutua kohden, vain ruutu vaihdettuna:
- 1080p
Ruudukko 409 × 238. Niillä ei ole mitään yhteistä, joten pyj on koko 409 × 238: kulmaosuma 27 minuutin välein.
- 4K
Ruudukko 889 × 508. Niillä on yhteinen tekijä 127, joka jakautuu suoraan pois: 59 sekunnin välein.
Nelinkertainen määrä pikseleitä, ja odotuksesta tuli 27 kertaa lyhyempi. Se on täysin päinvastoin kuin asia yleensä kerrotaan, eikä sillä ole mitään tekemistä 4K:n suuruuden kanssa — se johtuu siitä, että 889 ja 508 jakavat luvun 127, kun taas 409 ja 238 eivät jaa mitään.
Logon koko tekee saman ja yhtä rajusti. Pidä ruutu koossa 3840 × 2160 ja nopeus 4 pikselissä ruutua kohden, säilytä logon todelliset mittasuhteet ja muuta vain sen kokoa:
- 176 px logo
Ruudukko 916 × 520. Kulmaosuma 33 minuutin ja 5 sekunnin välein — joka neljännestä aloituksesta.
- 204 px logo
Ruudukko 909 × 517. Joka 2,18 tunti, mutta mistä tahansa aloituksesta.
- 256 px logo
Ruudukko 896 × 511. Alas 18 minuuttiin ja 10 sekuntiin, joka seitsemännestä aloituksesta.
- 284 px logo
Ruudukko 889 × 508, joilla on yhteinen tekijä 127. Joka 59. sekunti.
- 292 px logo
Ruudukko 887 × 507, keskenään jaottomia. Takaisin ylös 2,08 tuntiin.
- 300 px logo
Ruudukko 885 × 506. Joka 2,07 tunti. Ei trendiä — se hyppii.
Sama ruutu, sama ruutunopeus, sama vauhti. Kahdeksan pikseliä logon leveydessä on ero minuutin ja kahden tunnin odotuksen välillä — 127-kertainen hyppy, koska 889 ja 508 jakavat tekijän 127, kun taas 887 ja 507 eivät jaa yhtään mitään. Ja huomaa, ettei sarja noudata mitään trendiä. Sillä ei ole siihen syytäkään: se seuraa jakajia, ei mittoja.
Vastausta ei siis ohjaa minkään koko. Liikauta mitä tahansa asetusta, ja laskenta järjestyy alusta uudelleen.
Kuinka kauan siis kaikkiin neljään kulmaan?
Mikä tuo meidät kysymykseen, johon ihmiset todella haluavat vastauksen. Jos yhteen kulmaan menee kuusitoista minuuttia, neljään pitäisi mennä noin tunti. Eikö niin?
Ei. Et näe sitä koskaan — et tunnissa, et vuodessa, et vaikka antaisit sen käydä maailmankaikkeuden lämpökuolemaan asti.
Askel kolme antoi jo syyn. Kulma ei taivuta logoa, se kääntää sen: logo kulkee siis omaa rataansa takaisin toiseen kulmaan, kääntyy taas ja palaa. Se on suljettu piiri, jossa on täsmälleen kaksi käännekohtaa. Kaksi muuta kulmaa eivät ole kaukana eivätkä epätodennäköisiä. Ne eivät yksinkertaisesti ole reitillä, eikä mikään järjestelmässä voisi koskaan niitä sinne panna.
Eikä sekään, mitkä kaksi saat, ole onnenkauppaa. Kuten kaikki muukin täällä, se määräytyi aloitusruudusta.
Tarkistimme tämän sen sijaan että olisimme olettaneet. Kun simuloitiin 281 250 aloituskokoonpanoa — kaikki ruudukot 26×26:een asti, molemmat lävistäjäsuunnat, jokainen aloitusruutu — tulos oli 2 kulmaa tai 0 kulmaa joka ainoa kerta. Yksikään ajo ei tuottanut 1:tä, 3:a tai 4:ää. Niistä 205 342 ylsi kahteen kulmaan ja 75 908 ei yhteenkään.
Rehellinen vastaus kysymykseen ”kuinka kauan kaikkiin neljään kulmaan?” ei siis ole luku lainkaan. Odotusta ei ole, koska ei ole tapahtumaa jota odottaa — ja se ratkesi ennen kuin logo oli saanut ensimmäisen pomppunsa loppuun.
Kokeile itse
Simulaattorimme on nopein tapa saada tuntuma pomppimiseen, yhdellä rehellisellä varauksella: se lähettää jokaisen logon satunnaisella kulmalla 25° ja 65° väliltä, ei kiinteällä 45°:lla. Se oli tietoinen valinta — näyttää paremmalta ja radat pysyvät kiinnostavina — mutta se tarkoittaa, että kulmaosumat noudattavat siellä omaa logiikkaansa eivätkä yllä olevaa siistiä ruudukkolaskentaa. Se siisti laskenta kuuluu aidon lävistäjän tapaukseen: alkuperäisiin DVD-soittimiin ja siihen videoon, jonka mittasimme.
Sen sijaan voit muuttaa jokaista muuttujaa, jonka ympärillä tämä artikkeli pyörii, ja katsoa mitä ne tekevät pomppimiselle. Säädä nopeutta ja kokoa, nosta objektien määrää lähettääksesi useita logoja eri radoille yhtä aikaa, ja vaihtele kuvasuhdetta 16:9-, 9:16- ja 1:1-vaihtoehtojen välillä — jokainen niistä on eri muotoinen ongelma.
Vie se sitten GIF-muotoon, MP4- tai WebM-videoksi aina 1080p:hen asti, tai itsenäiseksi HTML-tiedostoksi, joka pyörii ikuisesti ilman internetyhteyttä — jos haluat jättää yhden käymään ja nähdä kulmaosuman omin silmin.
Ei vesileimaa, ei tiliä, ei kuluja. Kuvasi käsitellään omassa selaimessasi eikä sitä ladata mihinkään.
Usein kysytyt kysymykset
Osuuko DVD-logo oikeasti koskaan kulmaan?
Joskus — ja se ratkeaa sillä hetkellä, kun se lähtee liikkeelle. Tietyllä ruudulla, logolla ja nopeudella aloituspaikka joko yltää kulmaan tai ei yllä koskaan. Kolmatta lopputulosta ei ole eikä onnella ole osuutta. Testi on pelkkää laskentaa: otetaan ruudukon leveyden ja korkeuden suurin yhteinen tekijä. Alas oikealle lähtevä logo yltää kulmaan vain, jos tuo tekijä jakaa sen aloituskoordinaattien erotuksen; ylös oikealle lähtevä vain, jos se jakaa niiden summan. Suunnilleen yksi aloitusruutu jokaista syt:tä kohden täyttää ehdon.
Kuinka kauan DVD-logolla kestää osua kulmaan?
Pelkistä ruutu siihen ruudukkoon, jonka paikkoja logo voi todella käyttää. Jos ruudukko on X leveä ja Y korkea, kulmaosuma sattuu joka X:n ja Y:n pienin yhteinen jaettava ruutua. Paljon jaetussa 4K-videossa 60 fps:llä se on 58 460 ruutua eli 16 minuuttia ja 14 sekuntia osumien välissä. Tuo luku kuuluu juuri sille videolle, ei 4K:lle yleensä.
Ratkaiseeko näytön tarkkuus, kuinka kauan kulmaosumassa kestää?
Ei. Ajoimme saman logon samalla nopeudella molemmilla: 1080p-ruutu antoi kulmaosuman 27 minuutin välein ja 4K-ruutu 59 sekunnin välein. Nelinkertainen määrä pikseleitä ja 27 kertaa lyhyempi odotus. Ajan ratkaisee se, onko ruudukon leveydellä ja korkeudella yhteisiä tekijöitä, ei pikselien määrä — mikä tahansa vastaus, joka kuuluu vain ”4K 60 fps:llä”, kuvaa siis yhtä tiettyä videota eikä 4K:n ominaisuutta.
Voiko DVD-logo osua kaikkiin neljään kulmaan?
Ei, eikä pelkästään siksi että se olisi epätodennäköistä — se on mahdotonta. Heti kulmaan päästyään logo kääntyy takaisin täsmälleen sitä rataa, jota se saapui, kulkee sen toiseen kulmaan, kääntyy taas ja toistaa tätä ikuisesti. Reitti on suljettu silmukka kahden kulman välillä, joten kahta muuta ei voi koskaan saavuttaa siitä aloituksesta. Pidempi odottaminen ei auta.
Kuinka moneen kulmaan DVD-logo voi osua?
Täsmälleen kahteen tai ei yhteenkään. Simuloimme 281 250 aloituskokoonpanoa kaikilla ruudukoilla 26×26:een asti molempiin lävistäjäsuuntiin, eikä yksikään ajo tuottanut koskaan yhtä, kolmea tai neljää kulmaa.
Onko kulmaosuma sattumanvarainen?
Ei lainkaan — se on täysin determinististä. Ruudun, logon, nopeuden ja aloituspaikan perusteella voi laskea etukäteen, osutaanko kulmaan koskaan, kuinka pitkä odotus on ja mitkä kaksi kulmaa ne ovat. Ennakoimattomuus on pomppimisen luoma illuusio.