我有一条随机生成的曲线和一条贯穿它的线。我已经使用插值找到了曲线与线的交点坐标。但现在我必须找到这些点之间的曲线区域。我的代码如下:
import numpy as np
import matplotlib.pylab as pl
from matplotlib import mlab
def find_inter_coord(a,x):
y = a-x
index = mlab.find((y[1:] >= 0) & (y[:-1] < 0)| (y[1:] < 0) & (y[:-1] >= 0))
crossing_index = [i - y[i] / (y[i+1] - y[i]) for i in index]
return crossing_index
data = np.random.uniform(low=-1000, high=-200, size=(100,))
pt = -750.5
pt_array = (pt) * 100
x = find_inter_coord(data, pt)
pl.figure(figsize = (10,5))
pl.plot(data)
pl.plot(pt_array)
pl.scatter(x, [pt for p in x], color='red')
图表如下:
现在我需要找到pt_array行下方所有曲线的区域..我该怎么做?任何帮助都会受到重视。感谢
答案 0 :(得分:0)
要查找曲线的区域,您可以执行以下步骤:
交点(xi, pt)
和子线点(xj, yj)
之间的三角形区域(标记为 A 的区域)仅为0.5 * (xj - xi) * (pt - yj)
。对于标记为 C 的区域,只需颠倒x
坐标的顺序。
两个子线点(xi, yi)
和(xj, yj)
(标记为 B 的区域)之间的梯形区域为0.5 * (xj - xi) * (yi + yj)
右边的区域A,C显示了一个角落的情况,您可能需要或可能不需要处理不同的角度,三角形区域之间没有梯形区域。