基于MATLAB的多面体生成及其体积计算等

  • Post author:
  • Post category:其他

MATLAB 中包含一系列多面体相关的函数,其生成多面体函数以及多面体体积计算的输入参数均为多面体的顶点,具体原理可查阅Delaunary相关文献。具体代码如下,

%%功能:生成多面体以及计算其体积,判断某点是否在多面体内部

clc;
clear all;
close all;
x = gallery(‘uniformdata’,[30 1],0);%%[0 ;0 ;0 ;0 ;10 ;10 ;10 ;10 ];%%生成随机顶点的x坐标
y = gallery(‘uniformdata’,[30 1],1);%%[ 0 ; 0 ; 10; 10 ; 0 ; 0 ; 10 ; 10 ];%%生成随机顶点的y坐标
z = gallery(‘uniformdata’,[30 1],2);%%[ 0; 10; 0; 10; 0; 10; 0; 10];%%生成随机顶点的z坐标
point_set=[x y z];%%顶点坐标集合
p_detected=rand(1,3);%%待检验点
tri = delaunayTriangulation(point_set);%%delaunay三角剖分

tetramesh(tri,’FaceAlpha’,0.3);%%绘制多边形图
 hold on;
 scatter3(p_detected(1,1),p_detected(1,2),p_detected(1,3),100,’filled’,’r’)%%标注待检测点
 t = tsearchn(point_set,tri,p_detected);%%判断待检测点是否在多面体内
 if isnan(t) 
    disp(‘No’) ;
 else
    disp(‘Yes’) ;
 end

[ch ,volume] = convexHull(tri);%%计算多面体体积
 fprintf(‘%s %d’,’volume=’,volume);


版权声明:本文为weixin_42683131原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。