如何使用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
相关产品推荐
相关产品推荐

