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

5 次查看(过去 30 天)
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!

回答(1 个)

Nikhilesh
Nikhilesh 2023-3-31
Hi Nicolas,
You can try using " Patch Function " to create the cuboids and then substract them using boolean operation.
  1 个评论
Nicolas Kaiser
Nicolas Kaiser 2023-3-31
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 :)

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Bounding Regions 的更多信息

产品


版本

R2022b

Community Treasure Hunt

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

Start Hunting!

Translated by