2017-04-24 1641 views
0

如何获得python中两点之间的所有坐标点? 例如:我有一个点的坐标为x1,y1,另一个点的坐标为x10,y10。我需要他们之间的所有点(在这种情况下,例如x2,y2 ... x9,y9)。非常感谢您的帮助!如何计算python中两点之间的直线坐标?

+2

您是否指的是找到在由p1和p10之间的距离定义的半径内找到的点? (其中'p1 =(x1,y1)'和'p10 =(x10,y10)')? – jrd1

+0

有一个无限的数字。你只是想要整数? –

回答

2

“所有这些”?有一个无限的数字。您可以使用calculate the slope and intercept of the line between those two points。知道那些你可以用x的每一个值计算y的值,你就可以使用这个线的方程。

这是高中代数。有什么问题?

考虑两点(x1, y1)(x2, y2)公式为它们之间的界限是:

y = m*x + b 

其中

m = slope = (y1-y2)/(x1-x2) 

b = y-intercept = (x1*y1 - x2*y1)/(x1-x2) 

如果你的意思是“绘制圆形传球在两点之间找到所有的点“,我'd计算中心点作为该线的中点,半径等于该线的长度。您可以通过确定距中心的距离并将其与半径进行比较来计算某个点是否位于圆内或外。

圆圈内部和外部都有无数的点。你真的想在这里做什么?

+1

我认为OP指的是在由两点之间的距离定义的半径内找出点(即从他提到x1和x10的事实 - 暗示其间最多有8个其他点)。 – jrd1

+1

我无法分辨OP的含义。我为两者提供了解决方案。如果反对票是你的,我建议删除它。我的两个解决方案都是正确的。 – duffymo

+1

同意,同样!我认为你的回答是准确的。希望他能尽快澄清。 downvote不是我的,但最后一个upvote是(从+ 1/-1推到+ 2/-1)。 – jrd1

1
def intermediates(p1, p2, nb_points=8): 
    """"Return a list of nb_points equally spaced points 
    between p1 and p2""" 
    # If we have 8 intermediate points, we have 8+1=9 spaces 
    # between p1 and p2 
    x_spacing = (p2[0] - p1[0])/(nb_points + 1) 
    y_spacing = (p2[1] - p1[1])/(nb_points + 1) 

    return [[p1[0] + i * x_spacing, p1[1] + i * y_spacing] 
      for i in range(1, nb_points+1)] 

print(intermediates([1, 2], [10, 6.5], nb_points=8)) 

# [[2.0, 2.5], [3.0, 3.0], [4.0, 3.5], [5.0, 4.0], 
# [6.0, 4.5], [7.0, 5.0], [8.0, 5.5], [9.0, 6.0]] 
1

似乎要生成的整数点给定点之间的线段的列表。这个问题已在计算机图形学中解决,例如,使用Bresenham algorithmDDA algo

相关问题