# Cut out a cuboid out of a bigger cuboid and calculate the resulting coordinates

4 views (last 30 days)
Nicolas Kaiser on 22 Mar 2023
Commented: Nicolas Kaiser on 31 Mar 2023
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?
##### 2 CommentsShow 1 older commentHide 1 older comment
Nicolas Kaiser on 23 Mar 2023
I updated the code :)

Nikhilesh on 31 Mar 2023
Hi Nicolas,
You can try using " Patch Function " to create the cuboids and then substract them using boolean operation.
Nicolas Kaiser on 31 Mar 2023
Is there a function to subtract to patch objects from each other? I can not find any related function for this. Thanks for your help :)

### Categories

Find more on Elementary Polygons in Help Center and File Exchange

R2022b

### Community Treasure Hunt

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

Start Hunting!