Is there a function in MATLAB for detecting points inside a polyhedron?
80 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
MathWorks Support Team
il 6 Gen 2012
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.
Risposta accettata
MathWorks Support Team
il 6 Gen 2012
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
0 Commenti
Più risposte (1)
Vedere anche
Categorie
Scopri di più su Delaunay Triangulation in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!