在上一篇文章《游戲中戰(zhàn)斗傷害范圍攻擊計(jì)算完整全版》我們計(jì)算了扇形,多邊形,圓形,等傷害范圍獲取。
但是前天的多邊形規(guī)整計(jì)算中,我發(fā)現(xiàn)一個(gè)問(wèn)題,就是在獲取多邊形判斷的時(shí)候,總有驗(yàn)證不足的情況,也就是未包含出現(xiàn)!
最后百度幾何原理,得到一個(gè)算法
1 /*我們可以把多邊形可以看做是一條從某點(diǎn)出發(fā)的閉合路,可以觀察到在內(nèi)部的點(diǎn)永遠(yuǎn)都在路的同一邊。2 給定線段的兩個(gè)點(diǎn)P0(x0,y0)和P1(x1,y1),目標(biāo)點(diǎn)P(x,y),它們有如下的關(guān)系:3 計(jì)算(y - y0) (x1 - x0) - (x - x0) (y1 - y0)4 如果答案小于0則說(shuō)明P在線段的右邊,大于0則在左邊,等于0說(shuō)明在線段上。5 */
更簡(jiǎn)單便捷的方式,支持浮點(diǎn)數(shù)計(jì)算:
1 /** 2 * 驗(yàn)證點(diǎn)在多邊形內(nèi) 3 * 4 * @param x 5 * @param z 6 * @return 7 */ 8 public boolean contains(double x, double z) { 9 /*我們可以把多邊形可以看做是一條從某點(diǎn)出發(fā)的閉合路,可以觀察到在內(nèi)部的點(diǎn)永遠(yuǎn)都在路的同一邊。10 給定線段的兩個(gè)點(diǎn)P0(x0,y0)和P1(x1,y1),目標(biāo)點(diǎn)P(