ArrayMesh[array]
各セルが幾何次元 d を有し,配列の非零の値を表す階数 d の配列から,メッシュ領域を生成する.
ArrayMesh
ArrayMesh[array]
各セルが幾何次元 d を有し,配列の非零の値を表す階数 d の配列から,メッシュ領域を生成する.
詳細とオプション
- ArrayMeshは,セルが区間,正方形,あるいは立方体であり,格子点が一様間隔で置かれた整数点である格子から生成される.
- ArrayMeshは連続する array の行を下向きに並べ,連続する列を横方向に並べる.
- ArrayMeshにはMeshRegionと同じオプションに次を加えたものが使える.
-
DataRange Automatic 生成するメッシュ座標の範囲 DataReversed False 行の順序を逆にするかどうか - ArrayMeshはSparseArrayオブジェクトに使うことができる.
例題
すべて開く すべて閉じる例 (3)
スコープ (2)
ArrayMesh[{1, 1, 0, 0, 1}]ArrayMesh[{{1, 1, 0, 1}, {1, 1, 1, 1}, {0, 1, 0, 1}}]ArrayMesh[{{{1, 1}, {1, 1}, {1, 0}}, {{0, 1}, {1, 1}, {0, 0}}}]ArrayMeshはSparseArrayに使うことができる:
ArrayMesh[SparseArray[{{x_, y_} /; Abs[x - y] < 2 -> 1}, {3, 3}]]オプション (14)
DataRange (1)
DataRangeを使って生成するメッシュ座標の範囲を指定することができる:
ArrayMesh[{{1, 0}, {1, 1}}]MeshCoordinates[%]ArrayMesh[{{1, 0}, {1, 1}}, DataRange -> {{0, 1}, {0, 2}}]MeshCoordinates[%]DataReversed (1)
DataReversedを使って行の順序を逆にすることができる:
ArrayMesh[{{1, 0, 0}, {1, 1, 0}, {1, 0, 1}, {1, 1, 1}}]ArrayMesh[{{1, 0, 0}, {1, 1, 0}, {1, 0, 1}, {1, 1, 1}}, DataReversed -> True]MeshCellHighlight (2)
MeshCellHighlightを使ってArrayMeshの一部のハイライトを指定することができる:
ArrayMesh[{{1, 0}, {1, 1}}, MeshCellHighlight -> {{1, All} -> Red, {0, All} -> Green}]ArrayMesh[{{1, 0}, {1, 1}}, MeshCellHighlight -> {{1, 1} -> {Thick, Red}, {1, 2} -> {Dashed, Green}}]ArrayMesh[{{1, 0}, {1, 1}}, MeshCellHighlight -> {Line[{4, 6}] -> {Thick, Red}, Line[{5, 6}] -> {Dashed, Green}}]MeshCellLabel (2)
MeshCellLabelを使ってArrayMeshの一部にラベルを付けることができる:
ArrayMesh[{{1, 0}, {1, 1}}, MeshCellLabel -> {0 -> "Index"}]ArrayMesh[{{1, 0}, {1, 1}}, MeshCellLabel -> {{1, 2} -> "x", {1, 1} -> "y"}]ArrayMesh[{{1, 0}, {1, 1}}, MeshCellLabel -> {Line[{5, 6}] -> "x", Line[{4, 6}] -> "y"}]MeshCellMarker (1)
MeshCellMarkerを使ってArrayMeshの一部に値を割り当てることができる:
ArrayMesh[{{1, 0}}, MeshCellMarker -> {{0, 1} -> 1, {0, 2} -> 2, {0, 3} -> 3, {0, 4} -> 4}]MeshCellLabelを使ってマーカーを示す:
ArrayMesh[{{1, 0}}, MeshCellMarker -> {{0, 1} -> 1, {0, 2} -> 2, {0, 3} -> 3, {0, 4} -> 4}, MeshCellLabel -> {0 -> "Marker"}]MeshCellShapeFunction (2)
MeshCellShapeFunctionを使ってArrayMeshの一部に値を割り当てることができる:
ArrayMesh[{{{1, 0}}}, MeshCellShapeFunction -> {1 -> (Tube[#1, .1]&)}]ArrayMesh[{{{1, 0}}}, MeshCellShapeFunction -> {{1, 4} -> (Tube[#1, .1]&)}]ArrayMesh[{{{1, 0}}}, MeshCellShapeFunction -> {Line[{1, 2}] -> (Tube[#1, .1]&)}]MeshCellStyle (3)
MeshCellStyleを使ってArrayMeshの一部のスタイリングを指定することができる:
ArrayMesh[{{1, 0}}, MeshCellStyle -> {{1, All} -> Red, {0, All} -> Green}]ArrayMesh[{{1, 0}}, MeshCellStyle -> {{1, 1} -> {Thick, Red}, {1, 2} -> {Dashed, Green}}]ArrayMesh[{{1, 0}}, MeshCellStyle -> {Line[{3, 4}] -> {Thick, Red}, Line[{2, 4}] -> {Dashed, Green}}]ArrayMesh[{{1, 0, 0, 1}, {1, 1, 0, 1}, {1, 0, 1, 1}}, MeshCellStyle -> {{2, All} -> Black, {2, 1} -> Red, {2, {2, 3}} -> Pink}]アプリケーション (15)
セルオートマトン (5)
ArrayMesh[CellularAutomaton[30, {{1}, 0}, 50]]ArrayMesh /@ CellularAutomaton[{14, {2, 1}, {1, 1, 1}}, {{{{1}}}, 0}, 10]外部総和型2Dセルオートマトンを使って迷路のようなパターンを作る:
ArrayMesh[CellularAutomaton[{746, {2, {{2, 2, 2}, {2, 1, 2}, {2, 2, 2}}}, {1, 1}}, {{Table[1, {7}]}, 0}, {{{150}}}]]c = CellularAutomaton[{224, {2, {{2, 2, 2}, {2, 1, 2}, {2, 2, 2}}}, {1, 1}}, {{{0, 1, 0}, {0, 0, 1}, {1, 1, 1}}, 0}, 8];glider = (First /@ Position[Flatten[#], 1])& /@ c;ArrayMesh[ConstantArray[1, {5, 5}], MeshCellStyle -> {{1, All} -> Black, {2, All} -> White, {2, #} -> Black}]& /@ gliderTable[ArrayMesh[CellularAutomaton[{i, {2, 1}, {1, 1}}, {{{1}}, 0}, {{{30}}}]], {i, 2, 20, 4}]Table[ArrayMesh[Mean[CellularAutomaton[{i, {2, 1}, {1, 1}}, {{{1}}, 0}, 10]]], {i, 2, 20, 4}]画像 (2)
2D画像をMeshRegionに変換する:
img = [image];cells = ImageData[img];style = MapIndexed[{2, First[#2]} -> GrayLevel[#1] &, Flatten[cells]];ArrayMesh[cells, MeshCellStyle -> style]img = Image3D[RandomReal[1, {2, 3, 4}], ColorFunction -> GrayLevel]cells = Transpose[ImageData[img], {2, 3, 1}];style = MapIndexed[{3, First[#2]} -> GrayLevel[#1] &, Flatten[cells]];ArrayMesh[cells, MeshCellStyle -> style]パターン (2)
ArrayMesh[Table[If[Mod[i, 4] == 2 && Mod[j, 4] == 2, 0, 1], {i, 11}, {j, 11}]]ArrayMesh[{{{1, 1, 1}, {1, 0, 1}, {1, 1, 1}},
{{1, 1, 1}, {1, 0, 1}, {1, 1, 1}}, {{1, 1, 1}, {1, 0, 1}, {1, 1, 1}}}]ArrayMesh[CellularAutomaton[{14, {2, 1}, {1, 1}}, {{{1}}, 0}, 10]]Seidelメッシュ,つまり,トンネルが交差せずに全方向に通っているメッシュ領域を作る:
SeidelMesh[{r_, s_, t_}] := ArrayMesh[Table[If[Mod[i, 4] == 2 && Mod[j, 4] == 2 || Mod[i, 4] == 0 && Mod[k, 4] == 0 || Mod[j, 4] == 0 && Mod[k, 4] == 2, 0, 1], {i, 3 + r 4}, {j, 3 + s 4}, {k, 3 + t 4}]]SeidelMesh[{1, 1, 1}]境界メッシュを変換しそれにスタイルを付けると理解し易くなる:
HighlightMesh[BoundaryMesh[%], {Style[1, None], Style[2, Opacity[0.5]]}]置換系 (4)
ArrayMesh[{1, 0, 1, 0, 0, 0, 1, 0, 1}]Table[Rationalize[RegionMeasure[ArrayMesh[n]]], {n, SubstitutionSystem[{1 -> {1, 0, 1}, 0 -> {0, 0, 0}}, {1}, 5]}]FindSequenceFunction[%, n]ArrayMesh[{#}]& /@ SubstitutionSystem[{1 -> {1, 0, 1}, 0 -> {0, 0, 0}}, {1}, 3]ArrayMesh /@ SubstitutionSystem[{1 -> {{1, 1, 1}, {1, 0, 1}, {1, 1, 1}}, 0 -> ConstantArray[0, {3, 3}]}, {{1}}, 3]ArrayMesh /@ SubstitutionSystem[{1 -> 1 - CrossMatrix[{1, 1, 1}], 0 -> ConstantArray[0, {3, 3, 3}]}, {{{1}}}, 3]ゲームデザイン (2)
m = Join@@ConstantArray[{{0, 1, 0, 1, 0, 1, 0, 1}, {1, 0, 1, 0, 1, 0, 1, 0}}, 4];p = First /@ Position[Flatten[m], 1];style = {{1, All} -> {Thick, Black}, {2, All} -> White, {2, #}& /@ p -> Black};r = ArrayMesh[ConstantArray[1, {8, 8}], MeshCellStyle -> style]m = Join@@ConstantArray[{{{0}, {1}, {0}, {1}, {0}, {1}, {0}, {1}}, {{1}, {0}, {1}, {0}, {1}, {0}, {1}, {0}}}, 4];p = First /@ Position[Flatten[m], 1];style = {{1, All} -> {Thick, Black}, {3, All} -> White, {3, #}& /@ p -> Black};r = ArrayMesh[ConstantArray[1, {8, 8, 1}], MeshCellStyle -> style]それぞれが4つの正方形からなる形であるテトロミノを生成する:
reg = ArrayMesh /@ {(| | | | |
| - | - | - | - |
| 1 | 0 | 0 | 0 |
| 1 | 0 | 0 | 0 |
| 1 | 0 | 0 | 0 |
| 1 | 0 | 0 | 0 |), (| | | | |
| - | - | - | - |
| 1 | 1 | 0 | 0 |
| 0 | 1 | 0 | 0 |
| 0 | 1 | 0 | 0 |
| 0 | 0 | 0 | 0 |), (| | | | |
| - | - | - | - |
| 1 | 1 | 0 | 0 |
| 1 | 0 | 0 | 0 |
| 1 | 0 | 0 | 0 |
| 0 | 0 | 0 | 0 |), (| | | | |
| - | - | - | - |
| 0 | 1 | 0 | 0 |
| 1 | 1 | 0 | 0 |
| 0 | 1 | 0 | 0 |
| 0 | 0 | 0 | 0 |), (| | | | |
| - | - | - | - |
| 1 | 0 | 0 | 0 |
| 1 | 1 | 0 | 0 |
| 0 | 1 | 0 | 0 |
| 0 | 0 | 0 | 0 |), (| | | | |
| - | - | - | - |
| 1 | 1 | 0 | 0 |
| 1 | 1 | 0 | 0 |
| 0 | 0 | 0 | 0 |
| 0 | 0 | 0 | 0 |), (| | | | |
| - | - | - | - |
| 1 | 1 | 0 | 0 |
| 0 | 1 | 1 | 0 |
| 0 | 0 | 0 | 0 |
| 0 | 0 | 0 | 0 |)}col = ColorData[97, "ColorList"];Table[MeshRegion[reg[[i]], MeshCellStyle -> {2 -> col[[i]]}], {i, 7}]特性と関係 (6)
ArrayMeshの出力は常に全次元のMeshRegionである:
ArrayMesh[RandomInteger[1, {3, 4}]]{MeshRegionQ[%], RegionDimension[%]}ArrayMeshは1Dの区間からなる:
ArrayMesh[{1, 1, 0, 0, 1}]MeshCells[%, RegionDimension[%]]ArrayMesh[{{0, 0, 1, 1}, {0, 1, 1, 0}, {1, 0, 0, 0}}]MeshCells[%, RegionDimension[%]]ArrayMesh[{{{1, 0}, {0, 1}}}]MeshCells[%, RegionDimension[%]]ArrayPlotを使ってプロットを生成することができる:
arr = {{0, 1, 1, 0}, {1, 0, 1, 0}, {1, 1, 0, 1}};ArrayMesh[arr]ArrayPlot[arr]MatrixPlotを使ってプロットを生成することができる:
arr = {{0, 1, 1, 0}, {1, 0, 1, 0}, {1, 1, 0, 1}};ArrayMesh[arr]MatrixPlot[arr]BoundaryMeshを使って境界メッシュ領域を求める:
BoundaryMesh[ArrayMesh[{{0, 1, 1, 0}, {1, 0, 1, 0}, {1, 1, 0, 1}}]]DataRange range はRescalingTransform[{...},range]を使うことに等しい:
ArrayMesh[{{1, 0}, {1, 1}}, DataRange -> {{1, 2}, {1, 3}}, Frame -> True]box = TransformedRegion[ArrayMesh[{{1, 0}, {1, 1}}], RescalingTransform[{{0, 2}, {0, 2}}, {{1, 2}, {1, 3}}]];MeshRegion[box, Frame -> True]関連するガイド
-
▪
- メッシュベースの幾何学的領域 ▪
- 幾何学的計算
テキスト
Wolfram Research (2016), ArrayMesh, Wolfram言語関数, https://reference.wolfram.com/language/ref/ArrayMesh.html.
CMS
Wolfram Language. 2016. "ArrayMesh." Wolfram Language & System Documentation Center. Wolfram Research. https://reference.wolfram.com/language/ref/ArrayMesh.html.
APA
Wolfram Language. (2016). ArrayMesh. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/ArrayMesh.html
BibTeX
@misc{reference.wolfram_2026_arraymesh, author="Wolfram Research", title="{ArrayMesh}", year="2016", howpublished="\url{https://reference.wolfram.com/language/ref/ArrayMesh.html}", note=[Accessed: 16-September-2026]}
BibLaTeX
@online{reference.wolfram_2026_arraymesh, organization={Wolfram Research}, title={ArrayMesh}, year={2016}, url={https://reference.wolfram.com/language/ref/ArrayMesh.html}, note=[Accessed: 16-September-2026]}