java - 检查一个点是在 ArrayList 的多边形内部还是外部

标签 java arraylist

我希望能够检查用户输入的点是否在一组有界点的内部或外部。我知道 java 中 Polygon 类的 .contains 函数,但我想知道如何对 < Point > 的 ArrayList 执行类似的操作。

这是我正在尝试的示例:

多边形的点是: (-10, 0) (-1,-10) (0, 10) (1, -10) (10,0)

测试点: 5 0

Inside

测试点:8 8

Outside

任何正确方向的提示将不胜感激!

最佳答案

这似乎有点家庭作业,所以我不打算详细介绍,但假设列出的多边形点始终按顺序排列,您可以连接多边形中所有点之间的线以关闭其边界,然后从样本点向外转换光线。如果射线在到达多边形所在区域之前经过奇数条线,则表示采样点位于多边形内部。如果它穿过偶数条线,则它位于多边形之外。 (如果它从未穿过一条线,那么它也在多边形之外,假设光线足够长,可以从采样点所在的位置击中多边形的边缘。)祝您好运。

More Information

关于java - 检查一个点是在 ArrayList 的多边形内部还是外部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25828848/

相关文章:

java - FragmentManager.beginTransaction() 不能应用于 (int, android.app.fragment)

javascript - 如何使用 JS 获取不同的值并对 JSON 的总数求和

java - Android Java 如何从列表中正确删除 int?

android - 从文件夹内的音频文件填充自定义 ListView

java - SWT 按钮网格

java - 自定义 spring boot 自动配置未检测到 bean

java - 选项卡已折叠

java - 如何使用 Android Studio 编写具有指定索引范围的短数组?

java - 如何连接两个 arraylist<String> 并存储到第三个 arraylist<String> 中?

java - 改变多维列表的特定行