否則稱爲硬邊緣,這是鼠標無法穿過的線條。在遊戲等中很有用。實現鼠標邊界的邊緣
目前,我有一個函數返回,如果我的鼠標光標是在屏幕上繪製的多邊形。如果不是,則將光標移動到多邊形中最後一個存儲的點。
if (!PointInPolygon(local, polyGon))
{
Cursor.Position = safePoint;
}
else
{
safePoint = Cursor.Position;
}
我不喜歡這樣的一對夫婦的原因:
由於緩慢的更新時間或出於某種原因,我有時能打破開箱。然後將該位置作爲safePoint存儲在多邊形之外。然後我的鼠標卡在這個位置。
傾斜的邊緣應該在斜坡方向上猛擊鼠標。再次將鼠標向右推,一個「/」形牆應該在光標在右上角。但由於這種方法的性質,通過該行將重置光標到以前的位置。繼續向右推只會繼續重新設置光標,並且不會將其推上「斜坡」。
是否有任何其他方法來解決這個問題?我主要擔心最後一個問題:這種斜率橫向行爲是我的程序的主要目標,我需要讓它工作。即使我使用這種基本方法,對於特定行爲的優化有什麼想法?
編輯:
已經由Reed,我反而回到最接近當前出界外點的點建議。考慮到四邊形的四個角點,我將如何找到形狀中/上的最近點?
嗯,好主意。現在我只需要弄清楚,考慮到四邊界限制四邊形,那麼找到最近點的最佳/最簡單的方法是什麼? – cksubs 2009-07-28 01:42:00
這裏有一些適合你的算法:http://www.devmaster.net/forums/archive/index.php/t-103.html對於小多邊形(取決於你的情況,但通常少於10個部分),只是強力搜索點 - >段通常是最快的方法。 – 2009-07-28 15:11:37