| 
 
	积分1965贡献 精华在线时间 小时注册时间2014-4-13最后登录1970-1-1 
 | 
 
| 
本帖最后由 柿子柿子柿子 于 2020-9-24 11:44 编辑
x
登录后查看更多精彩内容~您需要 登录 才可以下载或查看,没有帐号?立即注册 
  
 在研究判断台风路径是否经过或蹭过某片区域的时候,找了一圈好像只找到了个线段与矩形区域是否重叠的经验贴。
 然后就在这个经验贴的基础上实验了一下,发现此方法可行。
 
 使用的是matplotlib.path下的一个类的方法。
 然后下面实验的程序输出的结果为:
 True
 True
 True
 False
 True
 
 ===========下面是程序===========
 # -*-coding:utf-8 -*-
 import matplotlib.path as ppath
 import numpy as np
 
 if __name__ == '__main__':
 
 # 圆
 circle = ppath.Path.unit_circle()
 
 # 两个正方向框
 _path1 = np.array([[0,0], [0,1], [1,1], [1,0], [0,0]])
 _code1 = np.array([1,2,2,2,79], dtype = np.uint8)
 _path2 = _path1.copy()
 _path2[:,0] = _path2[:,0] + 3
 _code2 = _code1.copy()
 _rec = ppath.Path(np.vstack((_path1, _path2)), np.hstack((_code1, _code2)))
 
 # 线段
 line = ppath.Path([[3.2,0.5], [3.5,0.7]])
 print(_rec.intersects_path(line))
 line = ppath.Path([[-1,0], [1,2]])
 print(_rec.intersects_path(line))
 #
 line = ppath.Path([[-1,1], [-1,-1]])
 print(circle.intersects_path(line))
 line = ppath.Path([[-1,1], [1,2]])
 print(circle.intersects_path(line))
 line = ppath.Path([[-1,-1], [1,2]])
 print(circle.intersects_path(line))
 
 
 
 | 
 |