測試圓或球與某個點(diǎn)是否相交十分簡單,其實(shí)就是測試一個點(diǎn)是否在圓或者球內(nèi)。以圓為例。圓通過圓心和半徑定義。如果在[5,6]處有一個單位圓,要判斷點(diǎn)[5.5,6.5]是否在該圓內(nèi),第一步是計算出該點(diǎn)與圓心的位置。這是通過對圓心的向量與該點(diǎn)的向量做減法得到的:[5, 6] - [5.5, 6.5] = [0.5, 0.5],減法的結(jié)果是從該點(diǎn)到圓心的一個向量。然后求出該向量的長度,也就是該點(diǎn)與圓的距離。計算得到的長度為0.707。如果這個長度小于圓的半徑,那么點(diǎn)在圓內(nèi);如果長度大于圓的半徑,則點(diǎn)在圓外。如果兩者相等,則點(diǎn)在圓周上,如圖8-12所示。
相同的方法也適用于球和點(diǎn)的相交性測試。這可以快速測試玩家是否在特定的位置,或者鼠標(biāo)是否單擊了特定的區(qū)域。如果不能想象出來,可以嘗試在紙上繪制幾個例子,直到自己熟悉了這種方法。此時,試著思考一下如何進(jìn)行圓與圓或者球與球的相交性測試。