我有一个大小为N x N的矩阵,定义为M = np.zeros((N,N))和两个坐标[x0,y0]和[x1,y1]。现在我想把这两点和一点联系起来。
N=5的一个例子是:
让我们在矩阵中将坐标设置为2。
[x0,y0] = [0,3]
[x1,y1] = [4,2]那么矩阵应该类似于:
M =
0 0 0 2 0
0 0 0 1 0
0 0 1 0 0
0 0 1 0 0
0 0 2 0 0做这件事的简单方法是什么?
发布于 2018-05-17 09:56:37
考虑DDA线生成算法。它用于绘制两点之间的直线上的点。在这里,您必须填充数组中的位置,而不是画布。
以下是我对此的看法:
def printarr():
for row in board:
print ' '.join([str(x) for x in row])
def makeline():
dx = point2[0] - point1[0]
dy = point2[1] - point1[1]
steps = dx if (dx>dy) else dy
xinc= dx/float(steps)
yinc = dy/float(steps)
x = point1[0]
y = point1[1]
for i in range(steps+1):
if (board[abs(x),abs(y)] == 0):
board[abs(x),abs(y)]=1
x+=xinc
y+=yinc
point1 = [2,2]
point2 = [10,12]
board[point1[0],point1[1]] = 2
board[point2[0],point2[1]] = 2
makeline()
printarr()解释:
0 0 0 1 0 0 00 0 0
https://stackoverflow.com/questions/50387606
复制相似问题