CAD不规则图形的面积怎么计算

2024-05-18 14:17

1. CAD不规则图形的面积怎么计算

简单的方法如下: 
1. 输入命令 region (面域生成命令)回车,选择你的封闭图形的所有边,使你的图形构成面域。 
2. 输入命令 massprop (查询面域/质量特性命令)回车,点击你的图形任意边(也即选择面域),跳出来的ACAD文档窗口中不仅仅有面积,还有周长……以及其他若干力学特性数据了。 

不仅仅限于直线和弧,边界包括样条曲线,只要处于同一平面中,能生成面域的图,都能用此方法查询。

CAD不规则图形的面积怎么计算

2. matlab如何计算面积

1、首先打开开始菜单,点击matlab软件,如下图所示

2、接下来在命令行中通过imread读入一个图片,输入以下代码,如下图所示

3、然后利用imshow显示读入的图片,输入以下代码,如下图所示

4、回车以后就可以看到显示的图片信息,如下图所示

5、接下来利用bwarea计算目标面积即可,输入以下代码,如下图所示

6、最后就可以看到目标的面积计算出来了,如下图所示

3. 如何利用matlab求图形面积

用梯形积分法求其面积。
首先,从图形中取点xi,yi,列出x向量和y向量,即
x=[。。。];    
y=[。。。];
然后,用trapz( ) 函数求出面积
z=trapz(x,y)   %面积

如何利用matlab求图形面积

4. 怎么用MATLAB测这个图形的面积

我是最佳答案的小号。
matlab代码:
I=imread('1.jpg');%二值化函数的输入图像既可以是彩色图像也可以是灰度图像
th=0.3; %设置不同的阈值,可以得到不同的二值化的结果,th在[0,1]之间
J=im2bw(I,th);    %二值化
[row,col]=size(J);
count=0;
for i =1:row
for j=1:col
if(J(i,j)==0) count=count+1;end
end
end
ss=count*1e-6;%面积ss等于黑点个数乘以1e-6
disp(ss);
subplot(121),imshow(I); 
subplot(122),imshow(J);
我设置的阈值是0.3,算出来的结果是0.0137。

5. matlab,求不规则三维图形体积?

我咋看也是个光滑曲面呀,哪来的体积?当然假如xy面到曲面之间全被填充为实体,应该能用循环或积分计算每个xy单位面积上的曲顶柱体的体积,然后求和,我用循环尝试了下:
z=[
0.82        0.71        0.63        0.41        0.62
0.83        0.63        0.46        0.4        0.48
0.55        0.47        0.48        0.37        0.52
0.5        0.41        0.49        0.39        0.42
0.52        0.57        0.47        0.45        0.34];
 
x=[-1:0.5:1]
y=[-1:0.5:1]
surf(x,y,z);
shading interp;
for i=1:5
   for j=1:5 
       M(i,j)=z(i,j)*0.5*0.5(对于每个面积为0.5*0.5的小方格以上的曲顶柱体求体积)
   end
end
sum (sum(M))对体积数组(25个元素体积求和)结果如下:
M =
    0.2050    0.1775    0.1575    0.1025    0.1550
    0.2075    0.1575    0.1150    0.1000    0.1200
    0.1375    0.1175    0.1200    0.0925    0.1300
    0.1250    0.1025    0.1225    0.0975    0.1050
    0.1300    0.1425    0.1175    0.1125    0.0850
>> size(M)
ans =
     5     5
>> sum(M)
ans =
    0.8050    0.6975    0.6325    0.5050    0.5950
>> sum(ans)
ans =
    3.2350
楼主给的数据点太少,导致求曲顶柱体体积的此种运算需要插值法进行加点运算,我偷懒了,没有进行差值运算,毕竟忘了很久了,而且插值法有很多种(据我所知都有3-4种),运用在三维图形中就更麻烦了,所以只是用了楼主给出的25个数据点高程进行最最粗略的估算。
如果嫌此种方法太简单,只要数据够多或者插值法加点很多就可以对求高程的z数组进行编辑以获得更多的高程数据:
假设九个方格共十六个点,各点高程为z(i,j)各点为权重w(i,j)并假设16点权重和为1,则方格中心位置高程插值
Z(i,j)=sum(w(i,j)*z(i,j))九宫16点插值拟合法(16个空间高程点的加权平均,也称三次样条插值)
如果是两个曲面之间的距离,则可使用上面的体积元素之差作为曲顶柱体的高。
拟合完毕了就是照搬公式的体积求和运算:每个高程对应的xy面上的小方格乘以高程,然后对[高程*面积]所有元素求和,就能得到曲顶柱体的近似体积,插值越多,数据点越多,近似越精确!
总体来讲:思路很简单,但是过程复杂,所牵涉的知识比较多,希望对您有帮助!

matlab,求不规则三维图形体积?

6. 求matlab代码 运用链码计算不规则图形的周长以及面积

function CIR = C_CIR(Img)
%% 函数功能:计算输入的灰度图像的(或二值图像)的周长
%   函数输入:二值图像
%   函数输入:周长
%%  测试链码求周长CIR
I = im2bw(Img);
[m, n] = size(I); 
figure(1); imshow(I); title('原图');
R = 1;    % 二值图像的背景像素
I0 = zeros(m+2, n+2) + R; % 原图像+边框,避免边界查找出错
I0(2:(m+1), 2:(n+1)) = I;
x0 = 0;
y0 = 0;
fsp = 0; % 是否找到起始点
%%%%%%%%%%%%%%%%%%%% 寻找目标边界的一个边界点 %%%%%%%%%%%%%%%%
for i = 1:m
for j = 1:n
if (I0(i,j) ~= R)
x0 = i; % 记录起始点的纵坐标
y0 = j; % 记录起始点的横坐标
fsp = 1;
break;
end
end
if fsp == 1
break;
end
end
row = x0;
col = y0;
%%%%%%%%%%%%%%%%%% 按某一方向查找边界并且记录 %%%%%%%%%%%%%%%%%%%%%%%%
A = [];         % 存储边界点坐标的矩阵
B = zeros(m,n); % 边界跟踪的图像矩阵
ended = 0;
direction = 4;  % 从起始点的左边开始查找
while (ended == 0)
found_next = 0;
b = [row-1, col-1]; % 消除边框,与原图保持一致
A = [A;b];
B(row-1, col-1) = 255;
while (found_next == 0)
switch mod(direction,8)
case 0
if (I0(row, col + 1)~= R)
row  = row; % 记录当前坐标
col = col + 1;
direction = 5;  % 下一点从方向5开始查找
found_next = 1; % 找到边界点,准备跳出循环
end;
case 1
if (I0(row - 1, col + 1) ~= R)
row = row - 1;
col = col + 1;
direction = 6;
found_next = 1;
end;
case 2
if (I0(row - 1, col) ~= R)
row = row - 1;
col = col;
direction = 7;
found_next = 1;
end
case 3
if (I0(row - 1, col - 1) ~= R)
row = row - 1;
col = col - 1;
direction = 0;
found_next = 1;
end
case 4
if (I0(row, col - 1) ~= R)
row = row;
col = col - 1;
direction = 1;
found_next = 1;
end
case 5
if (I0(row + 1, col - 1) ~= R)
row = row + 1;
col = col - 1;
direction = 2;
found_next = 1;
end
case 6
if (I0(row + 1, col) ~= R)
row = row + 1;
col = col;
direction = 3;
found_next = 1;
end
case 7
if (I0(row + 1, col + 1) ~= R)
row = row + 1;
col = col + 1;
direction = 4;
found_next = 1;
end
end
if (found_next == 0)
direction = direction + 1;
end
end
if (and((x0 == row), (y0 == col)))
ended = 1;
end
end
A1 = [A; [x0-1,y0-1]];
figure(2); imshow(B); % 输出跟踪结果
hold on
%%%%%%%%%%%%%%%%%%%%%%%%%%% 求8方向链码 %%%%%%%%%%%%%%%%%%%%%%
C = [];
for i = 1:length(A1) - 1
if (A1(i+1, 1) - A1(i, 1) == 0) &&  ( A1(i+1, 2) - A1(i, 2) == 1)
code = 0;
C = [C, code];
end
if (A1(i+1, 1) - A1(i, 1) == -1) && ( A1(i+1, 2) - A1(i, 2) == 1)
code = 1;
C = [C, code];
end
if (A1(i+1, 1) - A1(i, 1) == -1) &&  (A1(i+1, 2) - A1(i,2) == 0)
code = 2;
C = [C, code];
end
if (A1(i+1, 1) - A1(i, 1) == -1) && (A1(i+1, 2) - A1(i, 2) == -1)
code = 3;
C = [C, code];
end
if (A1(i+1, 1) - A1(i,1) == 0) &&  (A1(i+1, 2) - A1(i,2) == -1)
code = 4;
C = [C, code];
end
if (A1(i+1, 1) - A1(i, 1) == 1) && (A1(i+1, 2) - A1(i, 2) == -1)
code = 5;
C = [C, code];
end
if (A1(i+1, 1) - A1(i, 1) == 1) &&  (A1(i+1, 2) - A1(i, 2) == 0)
code = 6;
C = [C, code];
end
if (A1(i+1, 1) - A1(i, 1) == 1) && (A1(i+1, 2) - A1(i, 2) == 1)
code = 7;
C = [C, code];
end
end
%%%%%%%%%%%%%%%%%%%%%% 计算周长CIR %%%%%%%%%%%%%%%%%%%%%%%%%%%
sum1 = 0;
sum2 = 0;
for i = 1:length(C)
if mod(C(1,i), 2) == 0
sum1 = sum1 + 1;
end
if mod(C(1,i), 2) == 1
sum2 = sum2 + 1;
end 
end
CIR = sum1 + sum2 * sqrt(2); % 计算边界周长
end

7. matlab中怎样计算图形的面积(曲线与x轴围成的面积为不规则图形,且表达式未知)

最简单的思路:先转成灰度图,然后转成二值图像,然后利用黑色/总像素的比值乘以图像的总面积,得到图形的面积。如果想做的细,其中的任何一个步骤都会很精致,尤其是二值化,算法有很多种,需要结合实际情况选择合用的算法,或者编写程序根据图像特征自动选择算法。再麻烦一点的话,彩色图像的色彩分割本身就是一个硕士课题了。

matlab中怎样计算图形的面积(曲线与x轴围成的面积为不规则图形,且表达式未知)

8. matlab如何求出图形面积?

你可以把数据按横坐标分段,对每一小块做convhull,然后把每一小块的面积累加起来。这样相对简单,凹包算法比较麻烦