[問題] 判斷座標是否落於範圍內
想請教各位前輩,小弟目前有一個問題:
(x1,y1)┌────────────┐(x2,y2)
│ │
│ .←(x,y) │
│ │
(x3,y3)└────────────┘(x4,y4)
目前判斷(x,y)是否於上面四方型的方法是採用:GraphicsPath.IsVisible
x1 <-> x2 = width y1 <-> y2 =height
width, heihgt 的範圍太大了(20000以上),往往判斷一符圖下來要10分鐘以上
(跑width, heihgt loop),不知各位前輩有沒有什麼好方法,可以讓速度再快一點?
感謝
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.253.83.48
※ 文章網址: https://www.ptt.cc/bbs/C_Sharp/M.1509981000.A.2F1.html
推
11/07 00:48,
6年前
, 1F
11/07 00:48, 1F
→
11/07 00:48,
6年前
, 2F
11/07 00:48, 2F
→
11/07 01:04,
6年前
, 3F
11/07 01:04, 3F
for (int iY = 0; iY < iHeight; ++iY)
{
for (int iW = 0; iW < iWidth; ++iW)
{
mouseLocation.X = (float)iNodataX;
if (!range.IsVisible(mouseLocation))
{
dataArray[temp1 + iY * iWidth + iW] = Convert.ToDouble(null);
dataArray[temp2 + iY * iWidth + iW] = Convert.ToDouble(null);
dataArray[temp3 + iY * iWidth + iW] = Convert.ToDouble(null);
}
}
}
概略是上面 有經過測試,當iHeight 跟iWidth愈大的時候會愈慢
主要是慢在 range.IsVisible <-判斷座標是否在該範圍內
推
11/07 09:36,
6年前
, 4F
11/07 09:36, 4F
→
11/07 14:38,
6年前
, 5F
11/07 14:38, 5F
感謝h大,後來google射線法後 確實以該法就解決了。
推
11/07 20:12,
6年前
, 6F
11/07 20:12, 6F
→
11/07 20:13,
6年前
, 7F
11/07 20:13, 7F
→
11/07 20:18,
6年前
, 8F
11/07 20:18, 8F
→
11/07 20:18,
6年前
, 9F
11/07 20:18, 9F
回L大 很感謝您 其實原先就是3個(跟您4個是相同的意思)迴圈,
沒有全跑 不過也是很慢
您說的Rectangle.Contains 我會再找時間試看看,真的很感謝前輩^^
※ 編輯: AutoTea (111.253.79.212), 11/07/2017 23:22:42
推
11/22 12:19,
6年前
, 10F
11/22 12:19, 10F
討論串 (同標題文章)