如何确定某点是高于还是低于限制?

时间:2016-03-31 13:36:26

标签: vb.net graph geometry

我有一个用vb.net编写的程序,它创建一个图形并在其上绘制从XML文件解析的各种行。每一行都定义图表上的点是否必须高于或低于它。

简单地说,我正在寻找一种方法来找到最接近的数字ABOVE和BELOW某一点。

所以说我们有一条直线{(0,0)(1,1)(2,2)(3,3)} 我们要验证的一点(1.5,4)说这一点需要超出界限。

另外,我应该提一下,这条线可能并不总是一条直线,而是有许多代表曲线的线段。

我怀疑最简单的方法是找到x轴上我们点周围线上的2个点,得到它们之间的斜率,然后进行插值。

所以我尝试了这个:

pointBelow = validationLine.points.Aggregate(Function(x, y) If(Math.Abs(x.X - paramPoint.XValue) < Math.Abs(y.X - paramPoint.YValues(0)), x, y))

pointAbove = validationLine.points.Aggregate(Function(x, y) If(Math.Abs(x.X - paramPoint.XValue) < Math.Abs(y.X - paramPoint.YValues(0)), x, y))

正如你所看到的,这些显然都会返回相同的值,所以我想知道如何在列表中搜索给定值的最接近的数字,然后执行相同的操作,但搜索ABOVE该值。

P.S。我们验证的点也可能在x轴上与我们线上的一个顶点完全相同,我正在寻找一种解决方案,无论如何都能解决这个问题。

1 个答案:

答案 0 :(得分:0)

很抱歉,但发表评论的时间太长了。

这取决于你要比较它的线...如果你的线是一个函数,它意味着它永远不会'向后',你只需要比较点和你的线的Y值在X点。

如果它不是一个功能,那就更难了,也许你应该在数学Q&amp; A网站上提出这个问题,比如https://mathematica.stackexchange.com/