我希望能够检查用户输入的点是否在一组有界点的内部或外部。我知道 java 中 Polygon 类的 .contains 函数,但我想知道如何对 < Point > 的 ArrayList 执行类似的操作。
这是我正在尝试的示例:
多边形的点是: (-10, 0) (-1,-10) (0, 10) (1, -10) (10,0)
测试点: 5 0
Inside
测试点:8 8
Outside
任何正确方向的提示将不胜感激!
最佳答案
这似乎有点家庭作业,所以我不打算详细介绍,但假设列出的多边形点始终按顺序排列,您可以连接多边形中所有点之间的线以关闭其边界,然后从样本点向外转换光线。如果射线在到达多边形所在区域之前经过奇数条线,则表示采样点位于多边形内部。如果它穿过偶数条线,则它位于多边形之外。 (如果它从未穿过一条线,那么它也在多边形之外,假设光线足够长,可以从采样点所在的位置击中多边形的边缘。)祝您好运。
关于java - 检查一个点是在 ArrayList 的多边形内部还是外部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25828848/