- 积分
- 1965
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2014-4-13
- 最后登录
- 1970-1-1
|
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
本帖最后由 柿子柿子柿子 于 2020-9-24 11:44 编辑
在研究判断台风路径是否经过或蹭过某片区域的时候,找了一圈好像只找到了个线段与矩形区域是否重叠的经验贴。
然后就在这个经验贴的基础上实验了一下,发现此方法可行。
使用的是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))
|
|