RegionFunctionとしてConvexHullを使用するには?


5

私は2Dの領域でサポートされているデータセットを持っています。 RegionPlotとContourPlotをデータの補間に使用したいが、プロットをデータがサポートされている領域に制限したい。

Paste私のデータのサポート。

私は簡単にComputationalGeometryパッケージから凸包と地域を見つける:

グラフィックス今すぐ[多角形[L2 [[凸包[L2]]]]]

enter image description here

私は情報をContourPlotsのRegionFunctionやRegionPlotの制限として使用できるものに変えたいとします。

私に方法を教えてもらえますか?

  0

私はそれがほとんど重複している、同意、ありがとうございます。ここでは、新しい機能はRegionFunctionとしての使用ですが、あなたのリンクで提供されているanwersの効率はそれを可能にするはずです。 24 8月. 132013-08-24 15:35:44

8

バージョン10(現在はプログラミングクラウドを通じて公開されています)では、機能を特定の地域に限定する別の方法がサポートされています。この方法は、Polygonオブジェクト、および他のgeometrical regionオブジェクトで直接使用できます。

ここでは例です:

poly=Polygon[{{1, 0}, {0, Sqrt[3]}, {-1, 0}}] 

ContourPlot[x^2+y^2, {x,y} ∈ poly] 

enter image description here

は、新しい機能for finding convex hullsもあります、そして得られたオブジェクトが領域であるので、それが機能ドメインとしてContourPlotで使用することができます

points = RandomReal[{-1, 1}, {6, 2}] 

ContourPlot[x^2+y^2, {x,y} ∈ ConvexHullMesh[points]] 

enter image description here

警告:この構文を使用して生成されますメッシュによって証明されるようにMathematicaは、作図中に異なるサンプリングアルゴリズムを使用するようになります:

enter image description here


2

私はちょうど彼が私が行う必要があり、正確に何をする機能

inPolyQ[pt_?VectorQ, poly_?MatrixQ] := 
Chop[Total[VectorAngle @@@ Partition[(# - pt) & /@ poly, 2, 1, 
{1, 1 - 2 Boole[TrueQ[First[poly] == Last[poly]]]}]] - 2 π] == 0 

を提供していますJ.M.

によってコメントに解決策を見つけました。

RegionPlot[otherStuff && inPol[{x, y}], {x, 0, 100}, {y, 0, 60}] 

とRegionFunction

ContourPlot[int[x, y], {x, 0, 100}, {y, 0, 60}, RegionFunction -> (inPol[#1, #2] &)] 
に持っている:L2は私のデータのサポートの一覧がある場合は

、私はRegionPlotの制約を持っている

pol = l2[[ConvexHull[l2]]]; 
inPol = inPolyQ2[#, pol] &; 

を使用することができます

編集:組み込み関数もあります。Graphics Mesh InPolygonQ [ポリ、ポイント] "ポイント"がポリゴン "ポリ"にあるかどうかをチェックする。