0
A
回答
0
通過使用自定義類Vector2雙X和雙Y屬性,你可以使用下面的代碼來檢查,如果給定的「位置」是「點」的多邊形內:
public bool CheckCollision(Vector2[] Points, Vector2 Position)
{
double MinX = Points.Min(a => a.X);
double MinY = Points.Min(a => a.Y);
double MaxX = Points.Max(a => a.X);
double MaxY = Points.Max(a => a.Y);
if(Position.X < MinX || Position.X > MaxX || Position.Y < MinY || Position.Y > MaxY)
return false;
int I = 0;
int J = Points.Count() - 1;
bool IsMatch = false;
for(; I < Points.Count(); J = I++)
{
//When the position is right on a point, count it as a match.
if(Points[ I ].X == Position.X && Points[ I ].Y == Position.Y)
return true;
if(Points[ J ].X == Position.X && Points[ J ].Y == Position.Y)
return true;
//When the position is on a horizontal or vertical line, count it as a match.
if(Points[ I ].X == Points[ J ].X && Position.X == Points[ I ].X && Position.Y >= Math.Min(Points[ I ].Y, Points[ J ].Y) && Position.Y <= Math.Max(Points[ I ].Y, Points[ J ].Y))
return true;
if(Points[ I ].Y == Points[ J ].Y && Position.Y == Points[ I ].Y && Position.X >= Math.Min(Points[ I ].X, Points[ J ].X) && Position.X <= Math.Max(Points[ I ].X, Points[ J ].X))
return true;
if(((Points[ I ].Y > Position.Y) != (Points[ J ].Y > Position.Y)) && (Position.X < (Points[ J ].X - Points[ I ].X) * (Position.Y - Points[ I ].Y)/(Points[ J ].Y - Points[ I ].Y) + Points[ I ].X))
{
IsMatch = !IsMatch;
}
}
return IsMatch;
}
我希望這幫助。 享受!
相關問題
- 1. 檢查點是否在多邊形中
- 2. 如何檢查點是否在Javascript中的多邊形
- 3. SQLite點檢查一個點是否在一個多邊形內
- 4. Mongodb:如何檢查點是否包含在多邊形中?
- 5. 檢查點是否多邊形
- 6. c#檢查點是否存在於一個多邊形
- 7. 如何檢查一個點是否在KML多邊形(GIS Shapefile)
- 8. 如何檢查是否一個點是一個多邊形
- 9. 是否可以檢查一個點是否在geojson的多邊形內?
- 10. JAVA:點多邊形?如何檢查用戶的位置是否在kml多邊形內?
- 11. 檢查點是否在部分打開的多邊形中
- 12. 確定點是否在多邊形內?
- 13. 確定點是否在多邊形內
- 14. 如何檢查點是否與多邊形相交
- 15. 檢查是否多邊形是凸
- 16. 點在二維多邊形內
- 17. 檢查地理點是否在Python中的多邊形內或外
- 18. 檢查點是否位於(或靠近)凸多邊形邊緣
- 19. DbGeography如何檢查點在多邊形內?
- 20. 如何檢查Postgres中的兩個多邊形是否相交?
- 21. 檢查點是一個多邊形
- 22. 檢查多邊形是否自相交
- 23. 檢查一個點是否在多邊形(地圖)
- 24. 谷歌地圖v3:檢查點是否存在於多邊形
- 25. Mongodb:檢查一個點是否在一個存儲的多邊形內
- 26. 如何檢查一個點(int - 座標)是否在三角形的斜邊內
- 27. 檢查多邊形在C++中
- 28. 檢查位置(緯度經度)是否在KML多邊形內
- 29. 檢查像素是否在多邊形內
- 30. Swift:點在多邊形?如何檢查用戶的位置是否屬於Geo-JSON多邊形?
使用[GraphicsPath.AddPolygon()](https://msdn.microsoft.com/en-us/library/16k3da3w(v = vs.110).aspx)和[GraphicsPath.IsVisible](https:// msdn.microsoft.com/en-us/library/d20k495d(v=vs.110).aspx)? –
當你使用WinForms時,它確實有效。 –
...你是或者不是**使用WinForms?你還沒有指定你的環境。 =) –