两点直线分离

2024-04-25 17:26:21 发布

您现在位置:Python中文网/ 问答频道 /正文

给定x-y坐标的两点,我有一条指定的线。现在我想在二维numpy数组中,区分直线左边的点和右边的点。你知道吗

下面的代码实现了这个技巧-但是双循环伤害了我的宗教感情(对numpy)。一定有更聪明的方法?你知道吗

def myline(a_x,a_y,b_x,b_y):
start=np.zeros((100,100))
for x in range(100):
    for y in range(100):
        val= (b_x - a_x)*(y - a_y) - (x - a_x)*(b_y - a_y)
        if val<=0:
            start[x,y]=1
return start

Tags: 方法代码innumpyfor技巧defrange
1条回答
网友
1楼 · 发布于 2024-04-25 17:26:21

可以使用ogrid对其进行矢量化:

x, y = np.ogrid[:100, :100]
start = (b_x - a_x)*(y - a_y) - (x - a_x)*(b_y - a_y) <= 0

这将给你一个布尔掩码。如果你想要其他的数据类型

start = start.astype(np.int)

相关问题 更多 >