2017-04-24 444 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