Is there a function in MATLAB for detecting points inside a polyhedron?

105 次查看(过去 30 天)
The INPOLYGON function in MATLAB detects points inside a polygonal region. I would like to determine whether a given three-dimensional point is inside a polyhedron.

采纳的回答

MathWorks Support Team
The TSEARCHN and DELAUNAY functions in MATLAB can be used to detect whether a given three-dimensional point is inside a convex polyhedron for a small datasets. For example, consider the polyhedron defined by the vertices generated by the following commands:
n = 12; % Number of vertices
theta = 2*pi*rand(n,1)-pi; % Random theta
phi = pi*rand(n,1) - pi/2; % Random phi
x = cos(phi).*cos(theta); % Create x values
y = cos(phi).*sin(theta); % Create y values
z = sin(phi); % Create z values
The following commands determine if 20 randomly generated points within the unit square are also within the given polyhedron.
xyz = rand(3, n); % Generate random points
tri = delaunayn([x y z]); % Generate delaunay triangulization
tn = tsearchn([x y z], tri, xyz'); % Determine which triangle point is within
IsInside = ~isnan(tn) % Convert to logical vector

更多回答(1 个)

KAE
KAE 2020-2-18
You could use inpolyhedron from the FEX, discussed here.

类别

Help CenterFile Exchange 中查找有关 Call C++ from MATLAB 的更多信息

产品


版本

R14SP1

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by