我計算A(X0,Y0)之間和B(X1,Y1)的點在二維(X,Y)的距離。每個距離在2D相交的線的點增加的順序座標
我有以下代碼表示在給定的兩個邊界點中的每個小區,A(X0,Y0)和B(X1,Y1)的相交點。
def intersected_points(x0, x1, y0, y1):
# slope
m = (y1 - y0)/(x1 - x0)
# Boundary of the selected points
x_ceil = ceil(min (x0, x1))
x_floor = floor(max(x0, x1))
y_ceil = ceil(min(y0, y1))
y_floor = floor(max(y0, y1))
# calculate all intersected x coordinate
ax = []
for x in arange(x_ceil, x_floor + 1, 1):
ax.append([ x, m * (x - x0) + y0 ])
# calculate all intersected y coordinate
for y in arange(y_ceil, y_floor + 1, 1):
ax.append([ (y - y0) * (1./m) + x0, y ])
return ax
示例值:
intersected_points(1.5, 4.4, 0.5, 4.1);
輸出:
[
[2.0, 1.1206896551724137],
[3.0, 2.3620689655172411],
[4.0, 3.6034482758620685],
[1.9027777777777779, 1.0],
[2.7083333333333335, 2.0],
[3.5138888888888893, 3.0],
[4.3194444444444446, 4.0]
]
我得到的輸出是混合和未分選的值,因此,對於每一個單元座標,其中線穿過。 ,但我想應該是(包括邊界點)結果:(X0,Y0),所有的相交點,(X1,Y1) 其中X0,Y0 - INTIAL,X1,Y1 - 最後一點。其他值是相交的線座標!
它看起來像你可以只追加'[X0,Y0]'和'[X1,Y1 ]'到'ax',然後在返回之前對'ax'進行排序。 – 2013-05-05 00:41:25
我沒有看到你在哪裏計算*距離*。這裏距離 – 2013-05-05 01:13:32
是,你發現像點之間的區別:(X1-X0),(X2-X1),(X3-X2),(X4-X3),...這是我想怎麼說。 – Spider 2013-05-05 16:52:40