You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何高效筛选位于两条直线界定的指定区域内的点?

问题:筛选位于指定区域内的点

我有以下点配置:

import numpy as np 

T=np.array([9,9])
X1=np.array([8,16])
X2=np.array([16,3])
points=np.array([[4, 15],
                 [13,17],
                 [2, 5],
                 [16,8]])

该配置的点分布:点T坐标为(9,9),X1为(8,16),X2为(16,3),另有四个待判断点;黄色区域为目标区域,始终处于点X1和X2相对于点T的对侧。

给定T、X1和X2,我希望找出points数组中所有位于黄色区域内的点,该黄色区域始终处于点X1和X2的对侧(相对于点T所在的两条直线)。请问如何通过简单高效的方式实现这一需求?


编辑1:尝试的解决方案(存在错误)

我尝试了如下代码:

T=np.array([9,9])
X1=np.array([10,2])
X2=np.array([2,15])
points=np.array([[2, 5]])

valid_points = list()

# 计算过T、X1的直线方程y = mx + b
slope1 = np.diff(list(zip(T, X1)))
m1 = np.divide(slope1[1], slope1[0])
b1 = T[1] - m1*T[0]

# 计算过T、X2的直线方程y = mx + b
slope2 = np.diff(list(zip(T, X2)))
m2 = np.divide(slope2[1], slope2[0])
b2 = T[1] - m2*T[0]

for point in points:
    # 检查点是否在两条直线下方
    for m, b in (m1, b1), (m2, b2):
        if point[1] > m*point[0] + b:
            break
    else:
        # 仅当两个检查都通过时添加
        valid_points.append(point)
        
print(valid_points)

对应的点配置:点T为(9,9),X1为(10,2),X2为(2,15),待判断点为(2,5),目标区域位于X1和X2相对于T的对侧。

上述代码返回[2,5],但正确结果应为[],因为该点不在目标区域内,说明此方案存在错误。


内容的提问来源于stack exchange,提问作者Optical_flow_lover

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 01:45:31