You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用JavaFX获取直线上所有整数增量点组成的数组

直线整数增量点集合实现方案

你需要的功能可以直接用经典的布雷森汉姆直线算法实现,这是计算机图形学领域专门用于计算栅格平面上两点连线上所有整数坐标点的算法,无浮点运算、效率高,天然覆盖两个端点。

代码实现(Python版本)

def get_line_points(x1: int, y1: int, x2: int, y2: int) -> list[tuple[int, int]]:
    points = []
    dx = abs(x2 - x1)
    dy = abs(y2 - y1)
    # 坐标步进方向
    step_x = 1 if x1 < x2 else -1
    step_y = 1 if y1 < y2 else -1
    error = dx - dy

    while True:
        points.append((x1, y1))
        # 抵达终点终止循环
        if x1 == x2 and y1 == y2:
            break
        double_error = 2 * error
        if double_error > -dy:
            error -= dy
            x1 += step_x
        if double_error < dx:
            error += dx
            y1 += step_y
    return points

测试验证

用你给出的示例调用:
get_line_points(0, 20, 0, 40)
返回结果和你要求的完全一致:[(0, 20), (0, 21), (0, 22), ..., (0, 39), (0, 40)]

该实现支持任意斜率的直线,包括水平线、垂直线、正/负斜率斜线,输出的点都是严格沿直线分布的整数坐标点。

内容的提问来源于stack exchange,提问作者Jinger Jesus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 17:24:05