共用方式為


Windows 機密文件不必把搖桿當微波爐

Raymond Chen

我最近在看 我同事 Audio Fool 所寫的部落格,讓我想起了多年前曾經犯下的一個錯誤,至今仍讓我惴惴不安。當初 DirectInput® 力回饋搖桿介面當紅時,許多搖桿廠商受邀到 Microsoft 位於華盛頓州列德蒙 (Redmond) 市的辦公室,共同商討即將推出新介面的相關細節,並且提出自己的意見作為回饋 (別誤會,這不是雙關語)。

在那些會議當中討論了許多議題,但最令我難忘的還是大家針對週期性力道 (periodic force) 該以時段表示還是頻率表示無法達成共識。其中在場的一家廠商說什麼也不肯罷休,因為他們公司已經寫好驅動程式,指定以頻率表示週期性力道,而他不想更改。拜託!開會目的就是要商討新介面的相關細節,怎麼可能因為哪一家廠商不想更改自己的驅動程式,而屈就他們拍板定案呢?

但是這家廠商實在鬧得太厲害了,最後大家只好棄械妥協,同意以頻率而非時段來指定週期性力道的速率。反正,不管選擇哪一個都差不多嘛。每秒振動 10 次的頻率力道,不就是十分之一秒的時段力道嗎?時段和頻率只不過是一體兩面罷了。

事實真是如此嗎?時段是以毫秒表示,動態範圍是 1 毫秒到 50 天左右。50 天的時段對人類來說好像沒什麼,而 1 毫秒的時段更是快到根本不被視為週期性現象 (與其說是週期,不如說是音調吧)。

另一方面,頻率是以赫茲表示,動態範圍是每秒 1 赫茲到 40 億個週期。這麼一來,以搖桿播放音樂會不會太牽強了點?萬一所產生的力道剛好落到微波爐頻率帶,那會出現什麼局面呢?

問題在於,以這種不切實際的表示法來表示力道,一旦達到頻率範圍的高點,就必須付出代價。很不巧,模擬飛行剛好就是時段較長的週期性力道。雖然我不懂這背後的物理學,不過我聽說這麼一來飛行員會發現,控制桿的週期性力道慢了數分鐘。一般說來,飛機會傾向以非常慢速的垂直正弦波飛行,而飛行員必須採取行動來抵制這個傾向,才能保持水平飛行。如果力道的速率是以時段表示,模擬飛行方案就能夠指定一個時段 120,000 毫秒。但如果以頻率表示,就是 0.0083 赫茲,這就遠慢於驅動程式介面所能表示的最慢頻率 (亦即 1 赫茲)。因此,模擬飛行所能要求的最慢力道,就是每秒重複一次的力道,而這對於模擬飛行所要模仿的實際效果來說仍然很快。

即使過了這麼多年,我還是擺脫不了它帶給我的不安,於是就在最近,我決定去查看有關力回饋的文件記錄。出乎我意料之外,DIPERIODIC 結構竟然是以時段而不是頻率來表示週期性力道 (為了使測量精確,它採用百萬分之一秒作為單位,換句話說,現在不管是播放音樂還是駕駛飛機都沒問題了)。到底是後來修正了這個錯誤?還是我老人痴呆,把以前的事都記反了?不管怎樣,我再也不必擔心我犯的這個錯誤了 (如果真的有發生的話)。

Raymond Chen的網站「The Old New Thing」以及同名著作 (Addison-Wesley,2007 年) 均探討 Windows 的歷史和 Win32 程式設計。這顏色跟你真速配。

© 2008 Microsoft Corporation and CMP Media, LLC. 保留所有權利;未經允許,嚴禁部分或全部複製.