@@ -230,9 +230,6 @@ function run_iso2mesh_test(tests)
230
230
fprintf(' Test surface boolean operations\n ' );
231
231
fprintf(sprintf(' %s\n ' , char(ones(1 , 79 ) * 61 )));
232
232
233
- dir(mcpath(' ' ))
234
- mcpath(' cork' )
235
-
236
233
[no1 , el1 ] = meshgrid5(1 : 2 , 1 : 2 , 1 : 2 );
237
234
el1 = volface(el1 );
238
235
[no1 , el1 ] = removeisolatednode(no1 , el1 );
@@ -276,11 +273,111 @@ function run_iso2mesh_test(tests)
276
273
test_iso2mesh(' surfboolean resolve region 2' , @savejson , round_to_digits(sum(elemvolume(node , elem(elem(: , 5 ) == 2 , 1 : 4 ))), 5 ), ' [7.973]' );
277
274
test_iso2mesh(' surfboolean self intersecting test' , @savejson , surfboolean(no1 , el1 , ' self' , no2 , el2 ), ' [1]' );
278
275
279
- [no3 , el3 ] = meshgrid5(1 : 0.4 : 1.4 , 1 : 0.4 : 1.4 , 1 : 0.4 : 1.4 );
280
- el3 = volface(el3 );
281
- [no3 , el3 ] = removeisolatednode(no3 , el3 );
276
+ % [no3, el3] = meshgrid5(1:0.4:1.4, 1:0.4:1.4, 1:0.4:1.4);
277
+ % el3 = volface(el3);
278
+ % [no3, el3] = removeisolatednode(no3, el3);
279
+
280
+ % [no4, el4] = surfboolean(no1, el1, 'separate', no3, el3);
281
+ % [node, elem] = s2m(no4, el4, 1, 100, 'tetgen', [1.5, 1.5, 1.5]);
282
+ % test_iso2mesh('surfboolean separate', @savejson, unique(elem(:, 5))', '[0,1]');
283
+ end
284
+
285
+ %%
286
+ if (ismember(' vol' , tests ))
287
+ fprintf(sprintf(' %s\n ' , char(ones(1 , 79 ) * 61 )));
288
+ fprintf(' Test binary volume processing\n ' );
289
+ fprintf(sprintf(' %s\n ' , char(ones(1 , 79 ) * 61 )));
290
+
291
+ vol = zeros(3 , 4 , 3 );
292
+ vol(2 , 2 : 3 , 2 ) = 1 ;
293
+
294
+ test_iso2mesh(' volgrow 1' , @savejson , volgrow(vol ), ' [[[0,0,0],[0,1,0],[0,1,0],[0,0,0]],[[0,1,0],[1,1,1],[1,1,1],[0,1,0]],[[0,0,0],[0,1,0],[0,1,0],[0,0,0]]]' , ' NestArray' , 1 );
295
+ test_iso2mesh(' volgrow 2' , @savejson , volgrow(vol , 2 ), ' [[[0,1,0],[1,1,1],[1,1,1],[0,1,0]],[[1,1,1],[1,1,1],[1,1,1],[1,1,1]],[[0,1,0],[1,1,1],[1,1,1],[0,1,0]]]' , ' NestArray' , 1 );
296
+ test_iso2mesh(' volgrow nonbinary 2' , @savejson , volgrow(vol * 2.5 , 2 ), ' [[[0,1,0],[1,1,1],[1,1,1],[0,1,0]],[[1,1,1],[1,1,1],[1,1,1],[1,1,1]],[[0,1,0],[1,1,1],[1,1,1],[0,1,0]]]' , ' NestArray' , 1 );
297
+
298
+ mask = zeros(3 , 3 , 3 );
299
+ mask(1 : 13 : end ) = 1 ;
300
+
301
+ test_iso2mesh(' volgrow user mask' , @savejson , volgrow(vol , 1 , mask ), ' [[[0,0,1],[0,0,1],[0,0,0],[0,0,0]],[[0,0,0],[0,1,0],[0,1,0],[0,0,0]],[[0,0,0],[0,0,0],[1,0,0],[1,0,0]]]' , ' NestArray' , 1 );
302
+ test_iso2mesh(' volgrow 2d' , @savejson , volgrow(vol(: , : , 2 )), ' [[0,1,1,0],[1,1,1,1],[0,1,1,0]]' , ' NestArray' , 1 );
303
+ test_iso2mesh(' volgrow 2d with user mask' , @savejson , volgrow(vol(: , : , 2 ), 1 , [1 1 0 ; 1 1 1 ; 0 0 1 ]), ' [[1,1,0,0],[1,1,1,1],[0,1,1,1]]' , ' NestArray' , 1 );
304
+ test_iso2mesh(' volgrow 2d with logical inputs' , @savejson , volgrow(logical(squeeze(vol(: , 2 , : ))), 1 , logical([0 1 0 ; 0 1 1 ; 0 0 1 ])), ' [[1,0,0],[1,1,0],[0,1,0]]' , ' NestArray' , 1 );
305
+
306
+ vol1 = volgrow(magic(60 ) > 2000 , 2 );
307
+ test_iso2mesh(' volgrow 2d with complex mask' , @savejson , sum(vol1(: )), ' [3380]' , ' NestArray' , 1 );
308
+ test_iso2mesh(' volgrow 2d with simple mask' , @savejson , volgrow([0 0 0 0 ; 0 0 1 0 ; 0 0 0 0 ], 2 ), ' [[0,1,1,1],[1,1,1,1],[0,1,1,1]]' , ' NestArray' , 1 );
309
+ test_iso2mesh(' volgrow 2d with ones mask' , @savejson , volgrow([0 0 0 0 ; 0 0 1 0 ; 0 0 0 0 ], 1 , ones(3 )), ' [[0,1,1,1],[0,1,1,1],[0,1,1,1]]' );
310
+
311
+ vol1 = volgrow(full(sparse([2 , 5 , 7 ], [3 , 3 , 6 ], [1 1 1 ], 10 , 8 )), 10 , [0 0 0 ; 1 1 1 ; 0 0 0 ]);
312
+ mask = repmat([0 , 1 , 0 , 0 , 1 , 0 , 1 , 0 , 0 , 0 ]' , 1 , 8 );
313
+ test_iso2mesh(' volgrow 2d x-line mask' , @savejson , all(vol1(: ) == mask(: )), ' [true]' );
314
+
315
+ vol1 = volgrow(full(sparse([2 , 5 , 7 ], [3 , 3 , 6 ], [1 1 1 ], 10 , 8 )), 10 , [0 1 0 ; 0 1 0 ; 0 1 0 ]);
316
+ mask = repmat([0 , 0 , 1 , 0 , 0 , 1 , 0 , 0 ], 10 , 1 );
317
+ test_iso2mesh(' volgrow 2d y-line mask' , @savejson , all(vol1(: ) == mask(: )), ' [true]' );
318
+
319
+ vol = ones(3 , 4 , 5 );
320
+ vol(1 : 6 ) = 0 ;
321
+ vol(end ) = 0 ;
322
+
323
+ test_iso2mesh(' volshrink 3d 1' , @savejson , volshrink(vol ), ' [[[0,0,1,1,1],[0,0,1,1,1],[0,1,1,1,1],[1,1,1,1,1]],[[0,0,1,1,1],[0,0,1,1,1],[0,1,1,1,1],[1,1,1,1,0]],[[0,0,1,1,1],[0,0,1,1,1],[0,1,1,1,0],[1,1,1,0,0]]]' , ' NestArray' , 1 );
324
+
325
+ vol1 = volshrink(volgrow(volshrink(vol ), 1 , ones(3 , 3 , 3 )), 1 , ones(3 , 3 , 3 ));
326
+ test_iso2mesh(' volshrink 3d ones' , @savejson , vol1 , ' [[[0,0,1,1,1],[0,0,1,1,1],[1,1,1,1,1],[1,1,1,1,1]],[[0,0,1,1,1],[0,0,1,1,1],[1,1,1,1,1],[1,1,1,1,1]],[[0,0,1,1,1],[0,0,1,1,1],[1,1,1,1,1],[1,1,1,1,1]]]' , ' NestArray' , 1 );
327
+ test_iso2mesh(' volshrink 3d 2x user mask' , @savejson , volshrink(~vol1 , 2 , repmat([0 0 0 ; 0 1 0 ; 0 1 0 ], 1 , 1 , 3 )), ' [[[0,0,0,0,0],[0,0,0,0,0],[0,0,0,0,0],[0,0,0,0,0]],[[0,0,0,0,0],[0,0,0,0,0],[0,0,0,0,0],[0,0,0,0,0]],[[0,0,0,0,0],[0,0,0,0,0],[0,0,0,0,0],[0,0,0,0,0]]]' , ' NestArray' , 1 );
328
+
329
+ vol1 = volshrink([0 1 1 1 ; 0 1 1 1 ; 0 1 1 0 ]);
330
+ mask = [0 0 1 1 ; 0 0 1 0 ; 0 0 0 0 ];
331
+ test_iso2mesh(' volshrink 2d' , @savejson , all(vol1(: ) == mask(: )), ' [true]' );
332
+ test_iso2mesh(' volshrink 2d 2x' , @savejson , volshrink(vol1 ), ' [[0,0,0,0],[0,0,0,0],[0,0,0,0]]' );
333
+
334
+ vol1 = volshrink((magic(10 ) > 20 ), 2 , logical([0 1 0 ; 1 1 1 ; 0 1 1 ]));
335
+ mask = [0 0 0 0 0 0 0 1 1 1 ; 0 0 0 0 0 0 0 1 1 1 ; 0 0 0 0 0 0 1 1 1 1 ; 0 0 0 0 0 0 0 1 1 1 ; 0 0 0 0 0 0 0 1 1 1 ; 0 0 0 0 0 0 1 1 1 1 ; 0 0 0 0 0 1 1 1 1 1 ; 0 0 0 0 0 1 1 1 1 1 ; 0 0 0 0 1 1 1 1 1 1 ; 0 0 0 0 1 1 1 1 1 1 ];
336
+ test_iso2mesh(' volshrink 2d 2x user mask' , @savejson , all(vol1(: ) == mask(: )), ' [true]' );
337
+
338
+ vol = zeros(30 , 40 , 50 );
339
+ vol(10 : 20 , 20 : 35 , 20 : 40 ) = 1 ;
340
+ vol(13 : 18 , 25 : 30 , 25 : 30 ) = 0 ;
341
+ vol(14 : 17 , 26 : 28 , 1 : 30 ) = 0 ;
342
+
343
+ vol1 = volclose(vol , 2 );
344
+ test_iso2mesh(' volclose 2x' , @savejson , sum(vol1(: )), ' [3566]' );
345
+ vol1 = volclose(vol , 4 );
346
+ test_iso2mesh(' volclose 4x' , @savejson , sum(vol1(: )), ' [3682]' );
347
+ vol1 = volopen(volclose(vol , 2 ), 2 );
348
+ test_iso2mesh(' volopen/volclose 2x' , @savejson , sum(vol1(: )), ' [2994]' );
349
+ vol1 = volclose(volopen(vol , 2 ), 2 );
350
+ test_iso2mesh(' volopen/volclose 2x' , @savejson , sum(vol1(: )), ' [2604]' );
351
+
352
+ vol1 = fillholes3d(volclose(vol , 2 ));
353
+ test_iso2mesh(' fillholes3d + volclose' , @savejson , sum(vol1(: )), ' [3682]' );
354
+
355
+ vol1 = fillholes3d(vol , 2 );
356
+ test_iso2mesh(' fillholes3d 2x' , @savejson , sum(vol1(: )), ' [3682]' );
357
+
358
+ vol1 = fillholes3d(vol , 1 );
359
+ test_iso2mesh(' fillholes3d 1x' , @savejson , sum(vol1(: )), ' [3478]' );
360
+
361
+ vol1 = fillholes3d(vol , 5 );
362
+ test_iso2mesh(' fillholes3d 5x' , @savejson , sum(vol1(: )), ' [4097]' );
363
+
364
+ vol1 = fillholes3d(vol , 4 , permute(repmat([0 0 0 ; 0 1 0 ; 0 0 0 ], 1 , 1 , 3 ), [3 1 2 ]));
365
+ test_iso2mesh(' fillholes3d x-axis mask' , @savejson , sum(vol1(: )), ' [3696]' );
366
+
367
+ vol1 = fillholes3d(vol , 4 , repmat([0 0 0 ; 0 1 0 ; 0 0 0 ], 1 , 1 , 3 ));
368
+ test_iso2mesh(' fillholes3d z-axis mask' , @savejson , sum(vol1(: )), ' [3682]' );
369
+
370
+ vol1 = laplacefill(volclose(vol , 2 ));
371
+ test_iso2mesh(' laplacefill' , @savejson , sum(vol1(: )), ' [3682]' );
372
+
373
+ vol1 = laplacefill(volclose(vol , 2 ), [], ' bicgstab' , 1e-6 );
374
+ test_iso2mesh(' laplacefill bicgstab' , @savejson , sum(vol1(: )), ' [3682]' );
375
+
376
+ vol1 = laplacefill(volclose(vol , 2 ), [2 , 2 , 2 ]);
377
+ vol1 = (vol1 < 1e- 10 );
378
+ test_iso2mesh(' laplacefill close seed' , @savejson , sum(vol1(: )), ' [3682]' );
282
379
283
- [ no4 , el4 ] = surfboolean( no1 , el1 , ' separate ' , no3 , el3 );
284
- [ node , elem ] = s2m( no4 , el4 , 1 , 100 , ' tetgen ' , [ 1.5 , 1.5 , 1.5 ] );
285
- test_iso2mesh(' surfboolean resolve region 2 ' , @savejson , unique(elem( : , 5 )) ' , ' [0,1 ]' );
380
+ vol1 = laplacefill( vol , [ 2 , 2 , 2 ] );
381
+ vol1 = ( vol1 > 1e - 10 );
382
+ test_iso2mesh(' laplacefill open seed ' , @savejson , sum(vol1( : )) , ' [56580 ]' );
286
383
end
0 commit comments