Cut out a cuboid out of a bigger cuboid and calculate the resulting coordinates
    13 visualizaciones (últimos 30 días)
  
       Mostrar comentarios más antiguos
    
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 comentarios
  Matt J
      
      
 el 22 de Mzo. de 2023
				Your code does not run, see error message above.
As a minor point, you've also spelled cuboid incorrectly throughout your code.
Respuestas (1)
  Nikhilesh
    
 el 31 de Mzo. de 2023
        Hi Nicolas,
You can try using " Patch Function " to create the cuboids and then substract them using boolean operation.
Ver también
Categorías
				Más información sobre Elementary Polygons en Help Center y File Exchange.
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!



