Java 扫描线填充,区分交点和峰值

Java 扫描线填充,区分交点和峰值,java,algorithm,polygon,fill,scanline,Java,Algorithm,Polygon,Fill,Scanline,我正在应用扫描线算法来填充随机生成的类似大陆的形状。我遇到的主要问题是,当直线与作为尖端的点相交时。我创建了一些图像来帮助将其可视化 我基本上需要帮助,弄清楚如何区分交点是否为“尖端”。就像在第一张图中一样,因为这两个都是尖端,所以我在它们之间画了一条线,即使这条线在大陆形状之外。尝试检查交叉点的左侧和右侧。如果他们都在红线以下,那就是小费 这是我所能做的最好的,我不知道更多关于线是如何定义的 第二个图像是什么?你现在得到了什么?在第二张图片中,我得到了一条从第一个蓝点到最后一个蓝点的线。所

我正在应用扫描线算法来填充随机生成的类似大陆的形状。我遇到的主要问题是,当直线与作为尖端的点相交时。我创建了一些图像来帮助将其可视化


我基本上需要帮助,弄清楚如何区分交点是否为“尖端”。就像在第一张图中一样,因为这两个都是尖端,所以我在它们之间画了一条线,即使这条线在大陆形状之外。

尝试检查交叉点的左侧和右侧。如果他们都在红线以下,那就是小费


这是我所能做的最好的,我不知道更多关于线是如何定义的

第二个图像是什么?你现在得到了什么?在第二张图片中,我得到了一条从第一个蓝点到最后一个蓝点的线。所以我先填充内部部分,然后再填充外部部分。如果你的线条只是像素,你就完蛋了。你必须把水灌满。如果直线是多边形表示的一部分,则该多边形中的单个顶点表示具有两条边的交点。应该不会引起问题——如果两条边位于扫描线的同一侧,则将其视为两条边。你说的“在扫描线的同一侧”是什么意思?这些线从形状的最顶端开始,有一个像素厚。我从图像的左侧到右侧画一条线,然后查看所有的交点。然后使用这些交点,我画一条线来填充内部。之后,我向下移动一个像素,直到重复相同的过程,直到到达图像的最低点shape@user1801501如果线条是逐像素定义的,那么你就必须向左看一个像素,向右看一个像素。