2016-03-31 2 views
0

私はグラフを作成し、XMLファイルから解析されたさまざまな行を描画するvb.netで書かれたプログラムを持っています。各行は、グラフ上の点がその点の上または下になければならないかどうかを定義します。ポイントが上限を上回るか下回るかを確認するにはどうすればよいですか?

簡単に言えば、私は、最も近い数字の上と下を特定の点で見つける方法を探しています。

私たちは直線を持っています{(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)) 

あなたが見ることができるように、これらは明らかに同じ値を返します両方ので、私は私が与えられた下のリストに最も近い番号を検索することができる方法を知りたいです同じことをしますが、その値を上に検索してください。

P.S.検証しているポイントが、私たちのライン上の頂点の1つとしてx軸上の正確に同じ場所にある可能性があります。これを無関係に解決するソリューションを探しています。

答えて

0

申し訳ありませんが、コメントするには長すぎます。

それはあなたがそれを比較しているラインによって決まります...もしあなたのラインが関数であれば、それは決して「後退しません」ことを意味し、ポイントのY値と点Xでのライン

それは機能ではありません場合は、それが困難だし、多分あなたはhttps://mathematica.stackexchange.com/

のように、数学のQ &サイト上でその質問をする必要があります
関連する問題