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. c#检查点是否存在于一个多边形
- 3. 如何检查一个点是否在KML多边形(GIS Shapefile)
- 4. 如何检查是否一个点是一个多边形
- 5. 是否可以检查一个点是否在geojson的多边形内?
- 6. 确定点是否在多边形内
- 7. 如何检查点是否与多边形相交
- 8. 点在二维多边形内
- 9. DbGeography如何检查点在多边形内?
- 10. 如何检查Postgres中的两个多边形是否相交?
- 11. 检查多边形是否自相交
- 12. 检查一个点是否在多边形(地图)
- 13. Mongodb:检查一个点是否在一个存储的多边形内
- 14. 如何检查一个点(int - 坐标)是否在三角形的斜边内
- 15. 检查位置(纬度经度)是否在KML多边形内
- 16. Swift:点在多边形?如何检查用户的位置是否属于Geo-JSON多边形?
- 17. 检查一个多边形点是否在另一个单张内
- 18. 如何在多边形内找到点?
- 19. 如何检查一个圆是否位于凸多边形的内部
- 20. Java geotools检查点是否包含在具有容差的多边形中
- 21. 如何检查多边形是否凸出?
- 22. 如何检测标记是否在谷歌地图中的多边形内
- 23. 确定是否点在多边形
- 24. 如何确定一系列点(或多边形)是否在矩形区域内?
- 25. 如何检查Spark Graphx图形中是否存在边缘
- 26. 如何测试一个点是否在二维整数坐标中的凸多边形内?
- 27. 如何将一组二维点(多点)转换为多边形?
- 28. 这一点是否在一个多边形内?
- 29. 如何知道一个点是否在一个多边形的内部android
- 30. 检查LatLong是否在一个多边形
使用[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?你还没有指定你的环境。 =) –