Cut out a cuboid out of a bigger cuboid and calculate the resulting coordinates
2 views (last 30 days)
Show older comments
Hi community,
I describe multiple cuboid objects with alphashape. Now i want to cut out a smaller cuboid out of a bigger cuboid and get the remaining coordinates of the big cuboid.
Is there any easier solution to do so? Like simular to the polyshape function 'subtract' (https://de.mathworks.com/help/matlab/ref/polyshape.subtract.html). I tried it also ones with the polyshape function. For this i used the top of the bigger cuboid and the top of the smaler cubiod, so two 2D-areas, and used the subtract function for polyshape'. Afterwards i repmat the coordinates and added the max and min corresponding z-coordinate. The code:
coordinates_bigCubiod = [-100 -100 -50; -100 -100 50; 100 -100 50; 100 -100 -50;...
100 100 -50; -100 100 -50; -100 100 50; 100 100 50];
coordinates_smallCubiod = [-25 -12.5 -25; -25 -12.5 25; 25 -12.5 25; 25 -12.5 -25;...
25 12.5 -25; -25 12.5 -25; -25 12.5 25; 25 12.5 25];
polyshape_bigCubiod = polyshape(coordinates_bigCubiod([2 7 8 3],[1 2]));
polyshape_smallCubiod = polyshape(coordinates_smallCubiod([2 7 8 3],[1 2]));
%substract cuboid
polyshape_bigCubiod = subtract(polyshape_bigCubiod,polyshape_smallCubiod);
vertices_topPlate = polyshape_bigCubiod.Vertices(~logical(sum(isnan(polyshape_bigCubiod.Vertices),2)),:);
z_values = unique(coordinates_bigCubiod(:,3));
z_values = repelem(z_values,size(vertices_topPlate,1));
coordinates_bigCubiod = [repmat(vertices_topPlate,[2,1]) z_values];
alphashape_bigCubiod = alphaShape(coordinates_bigCubiod);
figure();
plot(alphashape_bigCubiod);
Unfortunatly, if i plot now the alphashape it doesnt look at all how it should look.
Do you have any idea how to solve this problem?
Thanks a lot in advance!
2 Comments
Matt J
on 22 Mar 2023
Your code does not run, see error message above.
As a minor point, you've also spelled cuboid incorrectly throughout your code.
Answers (1)
Nikhilesh
on 31 Mar 2023
Hi Nicolas,
You can try using " Patch Function " to create the cuboids and then substract them using boolean operation.
See Also
Categories
Find more on Bounding Regions in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!