
用不到三角函數的機率雖然真的很高,但人生在世,你永遠不知道會發生什麼事,有一天不小心就遇上了。我自己剛好有切身經驗,分享給大家參考。
很久很久以前,PC的三葉蟲時代,我是剛出道的軟體工程師。公司有一項產品,是特定行業的自動排版工具,其中一項功能,是字型的任意角度旋轉,對這個行業十分重要。今天看來屬於許多作業系統的基本功能,當年則必須購買外掛的字型產生器(例如迄今猶在的華康),但通常僅提供基本的90度旋轉,其餘自理。

敝人實在欠缺美學素養,左看右瞧都找不出那裡歪,只好到客戶那邊請教專家。師傅說他們本來只覺得怪怪的,後來把字體放大列印,旋轉前後的字對著光線交疊,不正處就一目瞭然了。這麼簡單竟然沒想到。說穿只是邊角上的些微變形,若非相疊對比,實在很難看得出來 。對師傅眼光之銳利,真是佩服到五體投地,當下應允儘速解決,回家挑燈夜戰。
於是回頭逐步檢視原論文的演算法。先前寫程式只是依樣葫蘆,並沒有詳細研究背後的原理。深究後才發現,數學方法仍不脫三角函數、矩陣,厲害處在於充分利用當時CPU所擅長的整數及位元運算,使速度提高百倍以上。經過幾小時反覆查驗比對,終於發現某處的位移量 (offset) 有偏差,稍加修正便得到一張真正完美的旋轉字圖,比對之下殊無二致。
我們靠這一點點「不歪」的功能逐退競爭對手,後來更打下大片江山,歸根究底,只是修正小小的三角函數運算失誤而已。對手沒能及時因應,主要因為他們的技術來自字型廠商;對字型廠商而言,這個小眾市場並非當務之急,隔了好一陣子才修正,時機已逝。事實上我們決定自己動手,也是因為我們的字型供應商不願支援。可見技術掌握在自己手裡,緊要關頭自然便有好處。
至於三角函數,工作多年以來真正用上,似乎也只有這麼一回。然而機會之窗稍縱即逝,手上沒個三兩三,看得見也未必撈得著,不是嗎?
原發表於Jeff & Jill的窩,2015/06/12 14:47:22
沒有留言:
張貼留言