首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python:在矩阵中的两个坐标之间画线

Python:在矩阵中的两个坐标之间画线
EN

Stack Overflow用户
提问于 2018-05-17 09:11:32
回答 5查看 4.9K关注 0票数 2

我有一个大小为N x N的矩阵,定义为M = np.zeros((N,N))和两个坐标[x0,y0][x1,y1]。现在我想把这两点和一点联系起来。

N=5的一个例子是:

让我们在矩阵中将坐标设置为2

代码语言:javascript
运行
复制
[x0,y0] = [0,3]
[x1,y1] = [4,2]

那么矩阵应该类似于:

代码语言:javascript
运行
复制
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

做这件事的简单方法是什么?

EN

Stack Overflow用户

发布于 2018-05-17 09:56:37

考虑DDA线生成算法。它用于绘制两点之间的直线上的点。在这里,您必须填充数组中的位置,而不是画布。

以下是我对此的看法:

代码语言:javascript
运行
复制
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()

解释:

  1. 找到两个轴(dx和dy)要覆盖的距离。
  2. 计算要在任意轴中覆盖的单元格的步骤->最大值no的数目。
  3. 找出你需要增加多少
  4. 循环表示步骤数,并绘制点和增量。您需要将其转换为绝对值,因为列表指针需要是整数。

0 0 0 1 0 0 00 0 0

票数 1
EN
查看全部 5 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50387606

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档