返回應用程式

DVD 標誌到底會不會撞到角落?

發布於 2026 年 8 月 4 日

彈跳的 DVD 標誌在黑色畫面上劃出的虛線軌跡,標誌停在左下角

任何看過 DVD 螢幕保護程式的人都想過同一件事:它到底會不會撞到角落,還是我正在浪費生命?

這個問題有精確的答案。不是機率,也不是平均值,而是可以事先從四件事算出來的答案:畫面多大、標誌多大、移動多快,以及從哪裡出發。以下分三步說明。

第一步:畫面比看起來小

先從真正在彈跳的東西看起。標誌是一個矩形而不是一個點,所以真正在移動的是它的左上角;而那個角永遠碰不到畫面的右緣,因為標誌其餘的部分擋在前面。它能活動的餘地是畫面減去標誌

接著把速度算進來。標誌每一幀位移固定的像素數,四個像素是典型值,所以它只能停在那段餘地中每隔 4 個像素的位置上。中間那些像素不是比較少見,而是根本到不了。

把它們刪掉,整個畫面就完全不同了。下圖左側每一個交點都是一個像素,但只有青色的點能容納標誌。右側則是把那些青色點單獨取出來。

左:32 乘 20 的像素格線,每第 4 個交點以青色標示。右:同樣那些青色點單獨構成的 8 乘 5 格線,四個角以金色標示

剩下來的,才是這個問題真正存在的格線,而它的大小就只是:

所以一個 3840 × 2160 的畫面搭配 176 × 80 的標誌、每幀 4 個像素,並不是一個四百萬像素的問題。它是一個 916 × 520 的問題。

整個化簡就到這裡。任何畫面、任何標誌、任何速度,都歸結為一個點在 X 乘 Y 的格線上一格一格斜著走。這兩個數字決定了之後的一切。

有一個前提,先講清楚。 以上全部都假設標誌沿著真正的對角線移動——每往下一個像素就往旁邊一個像素。DVD 播放器最初的螢幕保護程式就是這樣動的,下面要分析的那支影片也是。若換成別的角度發射,格線就會瓦解,本頁所有漂亮的結論也會跟著瓦解。

第二步:一個數字就決定它究竟會不會發生

接下來這部分最容易讓人意外。標誌究竟會不會抵達角落,跟你等多久毫無關係。在第一幀之前就已成定局。

原因如下。先把角落放一邊,只看邊緣。當標誌斜著走過 X 乘 Y 的格線時,它每 X 幀會碰到左緣或右緣一次,像鐘錶一樣準;每 Y 幀碰到上緣或下緣一次。彈跳從不會擾亂這些節奏,因為彈跳就是那個節奏——碰到邊緣指的正是這件事。

所謂角落,不過就是兩個鬧鐘在同一幀響起。

於是問題不再是幾何問題,而變成兩個週期性鬧鐘的問題:已知各自在週期中的位置,它們有沒有可能同時響?兩個鬧鐘唯有在第一次響起的間隔是兩者週期共同之物的倍數時,才可能碰在一起。而 X 與 Y 共同之物,就是它們的最大公因數

判準就是這樣而已。取 gcd(X, Y)。若標誌往右下出發,只有當這個因數整除其起始座標的時才會抵達角落;若往右上出發,則只有當它整除兩者的時。否則兩個鬧鐘就永遠錯開,而讓它多跑一會兒並不能修好一個節奏。

兩個一模一樣的 12 乘 8 格線:左邊的路徑從 (0,4) 出發並抵達角落,右邊從 (1,4) 出發,永遠繞行卻碰不到任何一個角

同一個 12 × 8 格線上,兩個相鄰的起始格,其中 gcd(12, 8) = 4。從 (0, 4) 出發,差是 4,是乾淨的倍數,兩個鬧鐘就對上了。從 (1, 4) 出發,差是 3,永遠對不上。

由此得到一條可以一眼套用的規則:大約每個最大公因數會有一格起始位置行得通。

而且實務上感受得到。第一步那個 916 × 520 的格線最大公因數是 4,所以在那個設定下,四分之三的起始位置在標誌還沒動過一次之前就已經沒救了。

所以如果你盯著螢幕保護程式看了一小時卻什麼也沒發生,未必是運氣不好。你看的可能是一個在數學上根本交不出結果的迴圈。

第三步:角落會把一切反轉

還有一個事實,而結局正繫於此。

一般的彈跳只改變一半的運動。往右下走時撞到右牆,水平方向的正負號翻轉,標誌改往左下走。垂直方向那一半完全不受影響地繼續,所以標誌仍在開拓沒走過的地方。

角落則同時翻轉兩個正負號。右下變成左上——不是一個新方向,而是它抵達時方向的正好相反。而把速度的兩個分量都變號,等於按下倒帶。

實際發生的正是如此。標誌去程走過的每一格,回程都會依相反順序再走一遍。它做過的每一次彈跳,都會倒著再做一次。這條軌跡是一個迴文。

一張格線圖,顯示一條封閉的彈跳迴圈剛好碰到兩個角落,兩個都在左緣,另外兩個角未加標示

所以彈跳的標誌並不是一條只要給夠時間就終會走遍各處的躁動線條。它是一個封閉的往返迴路,兩端各有一個折返點,而那些折返點就是角落。

我們最後會再回到這一點,因為四個角的問題正是由它徹底定案。

兩次撞角之間隔多久

第二步的那兩個鬧鐘,不只告訴你會不會撞到角落。再往下推一點,它們也會告訴你多久一次。

它們同時響過一次之後,最快什麼時候能再同時響?必須等 X 的週期走完整數次,同時 Y 的週期也走完整數次。第一個同時是 X 與 Y 倍數的時刻,依定義就是它們的最小公倍數。沒有別的要算了。

看看大家都在分享的那支 4K 60fps 影片。它的標誌有 317 個水平停留位置與 186 個垂直停留位置,所以 X = 316、Y = 185。這兩個數互質,最大公因數為 1,依第二步表示那個畫面上任何起始位置都行得通。而 lcm(316, 185) 就只是 316 × 185 = 58,460 幀:16 分 14 秒又 20 幀

這個預測可以驗證,而且成立。 在那支影片中,第一次撞角落在 13:29:38,第二次落在 29:43:58——這是分、秒、幀的表示法。我們算過了:48,578 幀與 107,038 幀,相差正好 58,460,精確到幀。

為什麼你的解析度幾乎不重要

你會看到「16 分 14 秒」被反覆引用,彷彿它是從 4K 60fps 推出來的。並不是。看看這個答案實際上由什麼組成:

lcm(X, Y) = X × Y ÷ gcd(X, Y)

兩次撞角之間的等待時間,以幀為單位。

解析度會移動 X 與 Y,但移動得很溫和:畫面加倍,兩者大致也各自加倍。可是 gcd 位在分母,而 gcd 並不是一個尺寸。它是「哪些數字剛好共有因數」的偶然,而且可能在兩組看起來一模一樣的設定之間,從 1 跳到 127。

效果就是這樣。同一個 284 × 128 的標誌、同樣每幀 4 個像素,只換畫面:

像素多了四倍,等待卻短了 27 倍。這和一般的說法正好相反,而且跟 4K 比較大毫無關係——原因是 889 與 508 共有 127,而 409 與 238 什麼也沒共有。

標誌大小也會造成同樣的效果,而且同樣劇烈。把畫面固定在 3840 × 2160、速度固定在每幀 4 個像素,保持標誌真實的長寬比,只改變它的大小:

同樣的畫面、同樣的幀率、同樣的速度。標誌寬度差八個像素,就是等一分鐘和等兩小時的差別——足足 127 倍的跳躍,因為 889 與 508 共有因數 127,而 887 與 507 什麼都沒共有。而且請注意這串數字並沒有任何趨勢。它也沒有理由有:它追隨的是因數,不是尺寸。

所以答案並不受任何東西的大小支配。隨便動一個設定,整套算術就會從頭重新排列。

那麼要多久才會撞遍四個角?

這就帶我們來到大家真正想知道答案的問題。如果一個角要十六分鐘,四個角應該一小時左右吧?

不。你永遠不會看到。一小時不會,一年不會,就算讓它跑到宇宙熱寂也不會。

第三步已經給了理由。角落不是讓標誌轉向,而是把它反轉:於是標誌沿著自己來時的路折返到第二個角落,再次反轉,然後回來。這是一個剛好只有兩個折返點的封閉迴路。另外兩個角並不是很遠,也不是機率低。它們根本就不在這條路線上,而這個系統裡沒有任何機制能把它們放上去。

至於是兩個角,也同樣不是運氣。跟這裡的一切一樣,在起始格的那一刻就定下了。

這一點我們是查證過的,而不是憑空假設。 模擬 281,250 種起始組合——26×26 以內的所有格線、兩個對角方向、每一個起始格——結果每一次都是 2 個角或 0 個角。沒有任何一次跑出 1、3 或 4。其中 205,342 次抵達兩個角,75,908 次一個也沒碰到。

所以對「還要多久才會撞遍四個角?」誠實的回答根本不是一個數字。沒有等待,因為根本沒有可等的事件——而這在標誌完成第一次彈跳之前就已成定局。

自己動手試試

我們的模擬器是最快建立彈跳手感的方式,但有一點必須誠實說明:它讓每個標誌以 25° 到 65° 之間的隨機角度出發,而不是固定的 45°。這是刻意的選擇——這樣比較好看,軌跡也不會太單調——但也因此那裡的撞角遵循的是自己的邏輯,而不是上面那套乾淨的格線算術。那套乾淨的算術屬於真正對角線的情況:最初的 DVD 播放器,以及我們量測的那支影片。

你能做的,是把這篇文章談到的每個變數都調一調,看看它們對彈跳有什麼影響。調整速度縮放,提高物件數量讓多個標誌同時沿不同軌跡跑,並在 16:9、9:16 與 1:1 之間切換長寬比——每一種都是形狀不同的問題。

接著可以匯出成 GIF、匯出成最高 1080p 的 MP4WebM,或匯出成獨立的 HTML 檔,不需網路連線就能永遠循環播放——如果你想讓它一直跑著,親眼看見一次撞角的話。

沒有浮水印、不需帳號、完全免費。你的圖片由你自己的瀏覽器處理,不會上傳到任何地方。

常見問題

DVD 標誌真的會撞到角落嗎?

有時候會,而且這在它開始移動的那一刻就已經決定了。給定畫面、標誌與速度,某個起始位置要嘛會抵達角落,要嘛永遠不會。沒有第三種結果,也沒有運氣的成分。判準是算術:取格線寬與高的最大公因數。往右下出發的標誌,只有當這個因數能整除其起始座標的差時才會抵達角落;往右上出發,則只有當它整除兩者的和時才會。大約每個最大公因數會有一格起始位置符合條件。

DVD 標誌要多久才會撞到角落?

把畫面縮減成標誌真正能占據的位置所構成的格線。若該格線寬 X、高 Y,撞角就每隔 X 與 Y 的最小公倍數幀發生一次。在那支廣為流傳的 4K 60fps 影片裡是 58,460 幀,也就是兩次撞角相隔 16 分 14 秒。這個數字屬於那支影片,而非 4K 本身的性質。

螢幕解析度會決定撞角要花多久嗎?

不會。我們用同一個標誌、同樣的速度在兩種解析度上跑:1080p 畫面每 27 分鐘撞角一次,4K 畫面則是每 59 秒一次。像素多了四倍,等待卻短了 27 倍。決定時間長短的是格線的寬與高有沒有共同因數,而不是有多少像素——所以任何只說「4K 60fps」的答案,描述的是某一支特定影片,而不是 4K 的性質。

DVD 標誌有可能把四個角都撞到嗎?

不可能,而且不只是機率低的問題,是根本做不到。標誌一抵達角落就會沿著它來時的路徑原路反向折返,一路回到第二個角落,再次反向,如此永遠重複。這條路線是兩個角落之間的封閉迴圈,因此從那個起點出發永遠碰不到另外兩個角。等再久也沒有用。

DVD 標誌最多能撞到幾個角?

剛好兩個,或是一個都沒有。我們針對 26×26 以內的所有格線、兩個對角方向,模擬了 281,250 種起始組合,從來沒有任何一次跑出一個、三個或四個角的結果。

撞角是隨機的嗎?

完全不是,它是徹底決定論的。只要知道畫面、標誌、速度與起始位置,就能事先算出會不會撞到角落、要等多久,以及會是哪兩個角。那種不可預測感,是彈跳製造出來的錯覺。