2Dあるいは3Dのグラフィックス g をBoundaryMeshRegionに離散化させる.
BoundaryDiscretizeGraphics[g,patt]
パターン patt にマッチする g 中の要素のみを離散化させる.
BoundaryDiscretizeGraphics
2Dあるいは3Dのグラフィックス g をBoundaryMeshRegionに離散化させる.
BoundaryDiscretizeGraphics[g,patt]
パターン patt にマッチする g 中の要素のみを離散化させる.
詳細とオプション
- BoundaryDiscretizeGraphicsは,全次元のグラフィックスプリミティブを,BoundaryMeshRegionで使われる区分線形要素からなる境界表現に離散化させる.
- 全次元の部分(2Dの面積および3Dの体積)のみが離散化される.
- グラフィックス g は,Graphics,Graphics3D,または個別のグラフィックスプリミティブでよい.
- BoundaryDiscretizeGraphicsは,事実上,GraphicsおよびGraphics3D中の複数のプリミティブを和集合の操作として扱う.
- Graphicsの有界区分線形プリミティブ(これらは厳密に表すことができる)
-
Triangle[…] 塗り潰された三角形 (2D) Polygon[…] 塗り潰された多角形 (2D) Rectangle[…] 塗り潰された矩形 (2D) Parallelogram[…] 塗り潰された平行四辺形 (2D) Simplex[…] 単体 (2D) - これに加え,SSSTriangle,SASTriangle,ASATriangle,AASTriangleも評価するとTriangleになり,厳密に表すことができる.
- Graphicsの非有界区間線形プリミティブ(有限範囲のみを表すことができる)
-
HalfPlane[…] 半空間 (2D) ConicHullRegion[…] 線形円錐 (2D) - Graphicsの非線形プリミティブ(近似的にのみ表すことができる)
-
Disk[…] 円板,塗り潰された楕円,扇形(2D) FilledCurve[…] 塗り潰された閉じた曲線 (2D) - Graphics3Dの有界区間線形プリミティブ(これらは厳密に表すことができる)
-
Cuboid[…] 塗り潰された直方体 (3D) Parallelepiped[…] 塗り潰された平行六面体 (3D) Tetrahedron[…] 塗り潰された四面体 (3D) Hexahedron[…] 塗り潰された六面体 (3D) Pyramid[…] 塗り潰された角錐 (3D) Prism[…] 塗り潰された角柱 (3D) Simplex[…] 単体 (3D) - Graphics3Dの非有界区間線形プリミティブ(有限範囲のみを表すことができる)
-
ConicHullRegion[…] 線形円錐(3D) - Graphics3Dの非線形プリミティブ(近似的にのみ表すことができる)
-
Ball[…] 球体あるいは塗り潰された球 (3D) Ellipsoid[…] 塗り潰された楕円体 (3D) Cylinder[…] 塗り潰された円柱(3D) Cone[…] 塗り潰された円錐 (3D) - BoundaryDiscretizeGraphicsには,BoundaryMeshRegionと同じオプションに以下の追加・変更を加えたものが使える.
-
AccuracyGoal Automatic 目標確度 MaxCellMeasure Automatic 最大セル測度 Method Automatic 使用するメソッド PlotRange Automatic 含める範囲 PerformanceGoal $PerformanceGoal スピードあるいは品質を考慮するかどうか PrecisionGoal Automatic 目標精度 - AccuracyGoal->a およびPrecisionGoal->p のときは,領域 reg あるいは離散化された領域 dreg とRegionSymmetricDifference[reg,dreg]の任意の点との間の最大距離を
より小さいものに保とうと試みられる.ただし,
はプロット範囲の対角線の長さである.
例題
すべて開く すべて閉じる例 (3)
Diskを含む2Dの特別な領域を離散化する:
BoundaryDiscretizeGraphics[Disk[]]BoundaryDiscretizeGraphics[Parallelogram[{0, 0}, {{1, 1}, {1, 0}}]]Coneを含む3Dの特別な領域を離散化する:
BoundaryDiscretizeGraphics[Cone[]]BoundaryDiscretizeGraphics[Prism[{{1, 0, 1}, {0, 0, 0}, {2, 0, 0}, {1, 2, 1}, {0, 2, 0}, {2, 2, 0}}]]2DのGraphics全体を離散化する.ここでは複数プリミティブが和集合として捉えられている:
BoundaryDiscretizeGraphics[[image]]Area[%]スコープ (15)
Graphics (9)
Diskを含む2Dの特殊な領域を離散化する:
BoundaryDiscretizeGraphics[Graphics[{Disk[]}]]BoundaryDiscretizeGraphics[Graphics[{Parallelogram[{0, 0}, {{1, 1}, {1, 0}}]}]]LineおよびPolygonを含むGraphicsComplexのGraphicsを離散化する:
v = {{0, 0}, {3, 0}, {3, 3}, {0, 3}};g = Graphics /@ {GraphicsComplex[v, Line[{1, 2, 3, 4, 1}]], GraphicsComplex[v, Polygon[{1, 2, 3, 4}]]}BoundaryDiscretizeGraphics /@ gRectangleおよびDiskを含むGraphicsComplexのGraphicsを離散化する:
v = {{0, 0}, {2, 0}, {2, 2}, {0, 2}};g = Graphics /@ {GraphicsComplex[v, Rectangle /@ {1, 2, 3, 4}], GraphicsComplex[v, Disk /@ {1, 2, 3, 4}]}BoundaryDiscretizeGraphics /@ g複数のプリミティブが1和集合としてみなされる,二次元Graphics全体を離散化する:
BoundaryDiscretizeGraphics[[image]]Area[%]g = Graphics[{Orange, Triangle[{{2, -1}, {3, 0}, {2, 1}}], Triangle[{{1, -1}, {3, 0}, {1, 1}}], Blue, Rectangle[{0.4, -0.5}, {1.2, 0.5}], Brown, Disk[{0, 0}, 0.5]}]BoundaryDiscretizeGraphics[g, _Triangle | _Disk]BoundaryDiscretizeGraphics[g, x_ /; Area[x] < 1]すべての(All)プリミティブを離散化する:
BoundaryDiscretizeGraphics[g, All]有界区間線形Graphicsプリミティブは,厳密に表すことができる:
g = Graphics[{Triangle[], Rectangle[{0.5, 1}], Polygon[{{1, 0.5}, {3, -0.5}, {2, 0.5}, {3, 1.5}}]}]BoundaryDiscretizeGraphics[g]非有界区間線形Graphicsプリミティブは,有限範囲でのみ表すことができる:
p = {HalfPlane[{{1, 0}, {2, 1}}, {1, -1}], ConicHullRegion[{{-1, 0}}, {{-1, -1}, {-1, 1}}]};g = Graphics[p, PlotRange -> {{-3, 3}, {-1.5, 1.5}}]BoundaryDiscretizeGraphics[g]非線形Graphicsプリミティブは,近似的にのみ表すことができる:
g = Graphics[{Disk[{3, 0}, {6, 2}], Disk[{2, 0}, 5, {Pi / 4, 7Pi / 4}]}]BoundaryDiscretizeGraphics[g]MaxCellMeasureを使って離散化のレベルを制御する:
g = Graphics[{Disk[{0, 0}], Disk[{1.5, 0}]}]Table[BoundaryDiscretizeGraphics[g, MaxCellMeasure -> {"Length" -> m}], {m, {0.9, 0.6, 0.3}}]Graphics3D (6)
Coneを含む3Dの特殊な領域を離散化する:
BoundaryDiscretizeGraphics[Graphics3D[{Cone[]}]]BoundaryDiscretizeGraphics[Graphics3D[{Prism[{{1, 0, 1}, {0, 0, 0}, {2, 0, 0}, {1, 2, 1}, {0, 2, 0}, {2, 2, 0}}]}]]g = Graphics3D[{Orange, Opacity[0.4], EdgeForm[Dashed], Cylinder[]}]BoundaryDiscretizeGraphics[g]PolyhedronのGraphicsComplexがあるGraphics3Dを離散化する:
v = {{0, 0, 0}, {2, 0, 0}, {2, 2, 0}, {0, 2, 0}, {1, 1, 2}};
i = {{1, 2, 5}, {2, 3, 5}, {3, 4, 5}, {4, 1, 5}, {1, 2, 3, 4}};g = Graphics3D[GraphicsComplex[v, Polyhedron[i]]]BoundaryDiscretizeGraphics[g]有界区間線形Graphics3Dプリミティブは,厳密に表すことができる:
g = Graphics3D[Parallelepiped[{0, 0, 0}, {{1, 0, 0}, {1, 1, 0}, {0, 1, 1}}], Boxed -> False]BoundaryDiscretizeGraphics[g]非線形Graphics3Dプリミティブは,近似的にのみ表すことができる:
BoundaryDiscretizeGraphics[Graphics3D[{Ball[]}]]MaxCellMeasureを使って離散化のレベルを制御する:
g = Graphics3D[{Ball[]}]Table[BoundaryDiscretizeGraphics[g, MaxCellMeasure -> m], {m, {0.3, 0.01, 0.001}}]オプション (23)
MaxCellMeasure (6)
g = Graphics[{Disk[{0, 0}], Disk[{1.5, 0}]}]BoundaryDiscretizeGraphics[g, MaxCellMeasure -> 0.1]g = Graphics[{Disk[{0, 0}], Disk[{1.5, 0}]}]br = BoundaryDiscretizeGraphics[g, MaxCellMeasure -> {"Length" -> 0.5}]AnnotationValue[{br, 1}, MeshCellMeasure]g = Graphics3D[{Ball[]}]BoundaryDiscretizeGraphics[g, MaxCellMeasure -> 0.05]g = Graphics3D[{Ball[]}]br = BoundaryDiscretizeGraphics[g, MaxCellMeasure -> {"Area" -> 0.1}]表面積のHistogram:
Histogram[AnnotationValue[{br, 2}, MeshCellMeasure]]g = Graphics[{Disk[{0, 0}], Disk[{1.5, 0}]}]Table[BoundaryDiscretizeGraphics[g, MaxCellMeasure -> {"Length" -> m}], {m, {0.9, 0.6, 0.3}}]g = Graphics3D[Ball[]]Table[BoundaryDiscretizeGraphics[g, MaxCellMeasure -> {"Area" -> m}], {m, {1, 0.01, 0.003}}]MeshCellHighlight (2)
MeshCellHighlightを使うとBoundaryMeshRegionの一部のハイライトを指定することができる:
BoundaryDiscretizeGraphics[Disk[], MeshCellHighlight -> {{1, All} -> Red, {0, All} -> Black}]個々のセルはそのセルのセル指標を使ってハイライトすることができる:
BoundaryDiscretizeGraphics[Simplex[2], MeshCellHighlight -> {{1, 1} -> {Thick, Red}, {1, 2} -> {Dashed, Black}}]BoundaryDiscretizeGraphics[Simplex[2], MeshCellHighlight -> {Line[{1, 2}] -> {Thick, Red}, Line[{2, 3}] -> {Dashed, Black}}]MeshCellLabel (3)
MeshCellLabelを使ってBoundaryMeshRegionの一部にラベルを付けることができる:
BoundaryDiscretizeGraphics[Parallelogram[{0, 0}, {{1, 1}, {1, 0}}], MeshCellLabel -> {0 -> "Index"}]BoundaryDiscretizeGraphics[Rectangle[], MeshCellLabel -> {0 -> "Index", 1 -> "Index"}]個々のセルはそのセルのセル指標を使ってラベルを付けることができる:
BoundaryDiscretizeGraphics[Rectangle[], MeshCellLabel -> {{0, 1} -> "x", {0, 2} -> "y"}]BoundaryDiscretizeGraphics[Rectangle[], MeshCellLabel -> {Point[1] -> "x", Point[2] -> "y"}]MeshCellMarker (1)
MeshCellMarkerを使ってBoundaryMeshRegionの一部に値を割り当てることができる:
BoundaryDiscretizeGraphics[Rectangle[], MeshCellMarker -> {{0, 1} -> 1, {0, 2} -> 1}]MeshCellLabelを使ってマーカーを示す:
BoundaryDiscretizeGraphics[Rectangle[], MeshCellMarker -> {{0, 1} -> 1, {0, 2} -> 2}, MeshCellLabel -> {0 -> "Marker"}]MeshCellShapeFunction (2)
MeshCellShapeFunctionを使ってBoundaryMeshRegionの一部についての関数を指定することができる:
BoundaryDiscretizeGraphics[Rectangle[], MeshCellShapeFunction -> {0 -> (Disk[#, .1]&)}]BoundaryDiscretizeGraphics[Rectangle[], MeshCellShapeFunction -> {{0, 1} -> (Disk[#, .1]&), {0, 2} -> (Disk[#, {.1, .2}]&)}]BoundaryDiscretizeGraphics[Rectangle[], MeshCellShapeFunction -> {Point[1] -> (Disk[#, .1]&), Point[2] -> (Disk[#, {.1, .2}]&)}]MeshCellStyle (2)
MeshCellStyleを使ってBoundaryMeshRegionの一部のスタイルを指定することができる:
BoundaryDiscretizeGraphics[Disk[], MeshCellStyle -> {{1, All} -> Red, {0, All} -> Black}]個々のセルはそのセルの指標を使ってハイライトすることができる:
BoundaryDiscretizeGraphics[Simplex[2], MeshCellStyle -> {{1, 1} -> {Thick, Red}, {1, 2} -> {Dashed, Black}}]BoundaryDiscretizeGraphics[Simplex[2], MeshCellStyle -> {Line[{1, 2}] -> {Thick, Red}, Line[{2, 3}] -> {Dashed, Black}}]PlotRange (5)
Automaticは,有限領域の全体を含む:
g = Graphics[{Triangle[], Disk[{-1, -1}]}];BoundaryDiscretizeGraphics[g, PlotRange -> Automatic]Automaticは,無限領域の一部を含む:
g = Graphics[{HalfPlane[{{1, 0}, {2, 1}}, {1, -1}], ConicHullRegion[{{-1, 0}}, {{-1, -1}, {-1, 1}}]}];BoundaryDiscretizeGraphics[g, PlotRange -> Automatic]g = Graphics[{Disk[{0, 0}], Disk[{1.5, 0}]}, PlotRange -> {{-1, 3}, {-1, 1}}]BoundaryDiscretizeGraphics[g]BoundaryDiscretizeGraphics[g, PlotRange -> {{0, 3}, {0, 1}}]g = Graphics[{Disk[], HalfPlane[{{1, 0}, {2, 1}}, {1, -1}]}];BoundaryDiscretizeGraphics[g, PlotRange -> {{-3, 3}, {-3, 3}}]g = Graphics3D[{Cone[]}]BoundaryDiscretizeGraphics[g, PlotRange -> {{-1, 1}, {-1, 1}, {-1, 0}}]g = Graphics[{Disk[], HalfPlane[{{1, 0}, {2, 1}}, {1, -1}]}];Table[BoundaryDiscretizeGraphics[g, PlotRange -> pr], {pr, {All, Automatic, Full}}]PlotTheme (2)
アプリケーション (3)
グラフィックスを幾何学領域に変換することで,その体積を計算する:
p = PolyhedronData["Dodecahedron", "Polyhedron"];ℛ = BoundaryDiscretizeGraphics[p]Volume[ℛ]Textを幾何学領域に変換する:
t = Text[Style["π", Bold]]BoundaryDiscretizeGraphics[t, _Text, MaxCellMeasure -> 0.1]BoundaryDiscretizeGraphics[CountryData["USA", {"Polygon", "Mercator"}]]特性と関係 (9)
g = Graphics[{Disk[], Triangle[{{1.3, -1}, {3.3, 0}, {1.3, 1}}], Rectangle[{0.7, -0.5}]}]BoundaryDiscretizeGraphics[g]g = Graphics[{Triangle[], Rectangle[{0.5, 1}], Polygon[{{1, 0.5}, {3, -0.5}, {2, 0.5}, {3, 1.5}}]}]BoundaryDiscretizeGraphics[g]非有界線形プリミティブは,有限範囲でしか表すことができない:
p = {HalfPlane[{{1, 0}, {2, 1}}, {1, -1}], ConicHullRegion[{{-1, 0}}, {{-1, -1}, {-1, 1}}]};g = Graphics[p, PlotRange -> {{-3, 3}, {-1.5, 1.5}}]BoundaryDiscretizeGraphics[g]非線形プリミティブは,近似的にしか離散化することができない:
g = Graphics[{Disk[{3, 0}, {6, 2}], Disk[{2, 0}, 5, {Pi / 4, 7Pi / 4}]}]BoundaryDiscretizeGraphics[g]DiscretizeGraphicsを使ってMeshRegion表現を得る:
g = Graphics[{Brown, Disk[{1.5, 1}], Orange, Rectangle[]}]{br, mr} = {BoundaryDiscretizeGraphics[g], DiscretizeGraphics[g]}{BoundaryMeshRegionQ[br], MeshRegionQ[mr]}BoundaryDiscretizeRegionを使って任意のRegionQオブジェクトを離散化することができる:
BoundaryDiscretizeRegion[ImplicitRegion[x ^ 2 - y ^ 2 ≤ 1, {{x, -2, 2}, {y, -2, 2}}]]BoundaryDiscretizeGraphicsを使って,GraphicsオブジェクトおよびGraphics3Dオブジェクトを離散化することができる:
BoundaryDiscretizeGraphics[Graphics[{Parallelogram[], Disk[{2, 2}]}]]どちらも,グラフィックスプリミティブでもある特殊な領域を離散化することができる:
{BoundaryDiscretizeRegion[Disk[]], BoundaryDiscretizeGraphics[Disk[]]}幾何領域でもあるグラフィックスプリミティブは,離散化せずに用いることができる:
r = Disk[{0, 0}, 1];RegionQ[r]Area[r]Area[BoundaryDiscretizeGraphics[r]]Rasterizeは,描画された任意の式を,Rasterオブジェクトを含むGraphicsに離散化する:
g = Graphics[{Disk[{0, 0}], Circle[{1, 0}]}]Rasterize[g, RasterSize -> {30, 20}, ImageSize -> 100]Imageは,描画された任意の式を,Imageオブジェクトに離散化する:
g = Graphics[{Disk[{0, 0}], Circle[{1, 0}]}]Image[g, ImageSize -> {30, 20}, Magnification -> 4]考えられる問題 (1)
Offset座標のプリミティブは離散化されない:
g = Graphics[{Disk[{1, 1 / 2}, Offset[{10, 40}]], Triangle[]}, Frame -> True]BoundaryDiscretizeGraphics[g]関連するガイド
-
▪
- メッシュベースの幾何学的領域 ▪
- 幾何学的計算
テキスト
Wolfram Research (2014), BoundaryDiscretizeGraphics, Wolfram言語関数, https://reference.wolfram.com/language/ref/BoundaryDiscretizeGraphics.html (2015年に更新).
CMS
Wolfram Language. 2014. "BoundaryDiscretizeGraphics." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2015. https://reference.wolfram.com/language/ref/BoundaryDiscretizeGraphics.html.
APA
Wolfram Language. (2014). BoundaryDiscretizeGraphics. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/BoundaryDiscretizeGraphics.html
BibTeX
@misc{reference.wolfram_2026_boundarydiscretizegraphics, author="Wolfram Research", title="{BoundaryDiscretizeGraphics}", year="2015", howpublished="\url{https://reference.wolfram.com/language/ref/BoundaryDiscretizeGraphics.html}", note=[Accessed: 14-September-2026]}
BibLaTeX
@online{reference.wolfram_2026_boundarydiscretizegraphics, organization={Wolfram Research}, title={BoundaryDiscretizeGraphics}, year={2015}, url={https://reference.wolfram.com/language/ref/BoundaryDiscretizeGraphics.html}, note=[Accessed: 14-September-2026]}