EstimatedPointNormals[{p1,p2,…}]
点 p1,p2,…の法線ベクトルを推定する.
EstimatedPointNormals[mreg]
メッシュ領域 mreg の頂点の法線ベクトルを推定する.
EstimatedPointNormals
EstimatedPointNormals[{p1,p2,…}]
点 p1,p2,…の法線ベクトルを推定する.
EstimatedPointNormals[mreg]
メッシュ領域 mreg の頂点の法線ベクトルを推定する.
詳細とオプション
- EstimatedPointNormalsは,通常,点の集合から超曲面の方向を求めるために使われる.
- EstimatedPointNormals[{p1,p2,…}]はリスト{n1,n2,…}を与える.ここで,niは piの単位法線ベクトルである.
- EstimatedPointNormals[{p1,p2,…}]の piは座標または明示的なPointオブジェクトのリストでよい.
- Methodオプションも与えられる.次は,使用可能なMethod設定である.
-
"PlaneFitting" 最近傍を使った平面フィット "FaceWeighted" 重み付き面の法線
例題
すべて開く すべて閉じる例 (3)
pts = CirclePoints[20];
EstimatedPointNormals[pts]//ShallowGraphics[{Point[pts], Arrow /@ Transpose[{pts, pts + %}]}]pts = SpherePoints[100];
EstimatedPointNormals[pts]//ShallowGraphics3D[{Point[pts], Arrow /@ Transpose[{pts, pts + %}]}]曲面をランダムにサンプリングすることで点のクラウドを生成する:
pts = RandomPoint[ResourceData["Stanford Bunny"], 20000];
Graphics3D[{AbsolutePointSize[1], Point[pts]}]Graphics3D[{Point[pts, VertexNormals -> EstimatedPointNormals[pts]]}]スコープ (2)
基本的な用法 (1)
pts = {{-0.9}, {-1.0}, {-1.1}, {0.9}, {1.0}, {1.1}};
EstimatedPointNormals[pts]Graphics[{Point[Append[#, 0]& /@ pts], Arrow /@ Transpose[{Append[#, 0]& /@ pts, Append[#, 0]& /@ (pts + %)}]}]pts = RandomPoint[Circle[], 50];
EstimatedPointNormals[pts]//ShallowGraphics[{Point[pts], Arrow /@ Transpose[{pts, pts + %}]}]pts = RandomPoint[Sphere[], 100];
EstimatedPointNormals[pts]//ShallowGraphics3D[{Point[pts], Arrow /@ Transpose[{pts, pts + %}]}]pts = RandomPoint[Sphere[{0, 0, 0, 0, 0}], 120];
EstimatedPointNormals[pts]//Shallow指定 (1)
EstimatedPointNormalsは点の集合を取る:
pts = {{-5, 0}, {-3, 0}, {-1, 0}, {1, 0}, {3, 0}, {5, 0}};EstimatedPointNormals[pts]Pointのリストを使う:
EstimatedPointNormals[Point[pts]]オプション (2)
Method (2)
EstimatedPointNormals[CirclePoints[8], Method -> "PlaneFitting"]デフォルトで,メッシュ頂点法線は隣接する面法線の加重平均を使用して推定される:
mesh = [image];coords = MeshCoordinates[mesh];
normals = EstimatedPointNormals[mesh];Show[mesh, Graphics3D[{Arrow[Transpose[{coords, coords + normals}]]}]]pnormals = EstimatedPointNormals[mesh, Method -> "PlaneFitting"];Show[mesh, Graphics3D[{Arrow[Transpose[{coords, coords + pnormals}]]}]]EstimatedPointNormals[mesh, Method -> "PlaneFitting"] === EstimatedPointNormals[MeshCoordinates[mesh]]アプリケーション (3)
基本的なアプリケーション (1)
滑らかな曲面の十分に密なサンプリングを与えられた場合に,空間的に近くにあるサンプルは曲面上でも近くにあると考えることができる:
pts = Table[(2 + 2 / 3.5Sin[5 t]) * {Cos[t], Sin[t]}, {t, 0, 2 Pi, Pi / 40}];
nng = NearestNeighborGraph[pts, 4]各点の周りの局所的な曲面は,したがって,点の最近傍からサンプルを取ったものである:
ngs = NeighborhoodGraph[nng, pts[[#]]]& /@ {1, 10, 65}局所的な曲面はそのサンプル点にフィットされた平面で近似できる:
fitPlane[p_] := Hyperplane[Eigensystem[Covariance[p]][[2, 2]], Mean[p]]
Show[#, Graphics[{Red, fitPlane[VertexList[#]]}]]& /@ ngsこれらのフィットされた平面の法線は対応する点の推定法線として使うことができる:
nls = Table[n = Eigensystem[Covariance[AdjacencyList[nng, pts[[pi]]]]][[2, 2]];
n * Sign[Dot[n, pts[[pi]]]], {pi, Length[pts]}];Graphics[Table[Arrow[{pts[[pi]], pts[[pi]] + nls[[pi]]}], {pi, Length[pts]}]]点群描画 (1)
pts = RandomPoint[ResourceData["Cow"], 6000];
Graphics3D[{AbsolutePointSize[1], Point[pts]}]Graphics3D[{Point[pts, VertexNormals -> EstimatedPointNormals[pts]]}]Graphics3D[{EdgeForm[], ResourceData["Cow"]}]特性と関係 (2)
EstimatedPointNormalsは表面再構成のために法線が生成できる:
pts = MeshCoordinates[ResourceData["Horse"]];
Graphics3D[{AbsolutePointSize[1], Point[pts]}]GradientFittedMesh[Point[pts, VertexNormals -> EstimatedPointNormals[pts]]]もとになっている関数が分からなければ偏微分を使って直接法線ベクトルを計算することができる:
f[x_, y_] := Sin[x + Cos[y]]
fx = Subscript[∂, x]f[x, y];
fy = Subscript[∂, y]f[x, y];
fnormal[a_, b_] := {-fx, -fy, 1} /. {x -> a, y -> b};
farrow[x_, y_] := Arrow[{{x, y, f[x, y]}, {x, y, f[x, y]} + fnormal[x, y]}]
arrows = Table[farrow[x, y], {x, -Pi, Pi, Pi / 6}, {y, -Pi, Pi, Pi / 6}];
Show[Plot3D[f[x, y], {x, -Pi, Pi}, {y, -Pi, Pi}], Graphics3D[{Arrowheads[Small], arrows}], PlotRange -> All]インタラクティブな例題 (1)
テキスト
Wolfram Research (2022), EstimatedPointNormals, Wolfram言語関数, https://reference.wolfram.com/language/ref/EstimatedPointNormals.html.
CMS
Wolfram Language. 2022. "EstimatedPointNormals." Wolfram Language & System Documentation Center. Wolfram Research. https://reference.wolfram.com/language/ref/EstimatedPointNormals.html.
APA
Wolfram Language. (2022). EstimatedPointNormals. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/EstimatedPointNormals.html
BibTeX
@misc{reference.wolfram_2026_estimatedpointnormals, author="Wolfram Research", title="{EstimatedPointNormals}", year="2022", howpublished="\url{https://reference.wolfram.com/language/ref/EstimatedPointNormals.html}", note=[Accessed: 07-August-2026]}
BibLaTeX
@online{reference.wolfram_2026_estimatedpointnormals, organization={Wolfram Research}, title={EstimatedPointNormals}, year={2022}, url={https://reference.wolfram.com/language/ref/EstimatedPointNormals.html}, note=[Accessed: 07-August-2026]}