Compute the polygons resulting from plane-mesh intersection.
POLYS = intersectPlaneMesh(P, V, F)
Computes the interection between a plane and a mesh given by vertex and
face lists. The result is a cell array of polygons.
The function currently returns at most one polygon in the cell array
POLYS.
Example
% Intersect a cube by a plane
[v f] = createCube; v = v * 10;
plane = createPlane([5 5 5], [3 4 5]);
% draw the primitives
figure; hold on; set(gcf, 'renderer', 'opengl');
axis([-10 20 -10 20 -10 20]); view(3);
drawMesh(v, f); drawPlane3d(plane);
% compute intersection polygon
polys = intersectPlaneMesh(plane, v, f);
drawPolygon3d(polys, 'LineWidth', 2);
% Intersect a torus by a set of planes, and draw the results
% first creates a torus slightly shifted and rotated
torus = [.5 .6 .7 30 10 3 4];
figure; drawTorus(torus, 'nTheta', 180, 'nPhi', 180);
hold on; view (3); axis equal; light;
% convert to mesh representation
[v, f] = torusMesh(torus, 'nTheta', 64, 'nPhi', 64);
% compute intersections with collection of planes
xList = -50:5:50;
polySet = cell(length(xList), 1);
for i = 1:length(xList)
x0 = xList(i);
plane = createPlane([x0 .5 .5], [1 .2 .3]);
polySet{i} = intersectPlaneMesh2(plane, v, f);
end
% draw the resulting 3D polygons
drawPolygon3d(polySet, 'lineWidth', 2, 'color', 'k')
See also
meshes3d, intersectPlanes, intersectEdgePlane
Package: matgeom