MATLAB运用

您所在的位置:网站首页 cad怎样计算立体的重心 MATLAB运用

MATLAB运用

2023-07-16 09:48| 来源: 网络整理| 查看: 265

在上一章中,我们根据水花号的二维设计图构建出了它的三维模型。 传送门 本章会在上一章的基础上,计算水花号的船体重心。

我们把水花号的船体的密度看作均匀分布的物体。 那么大家应该都知道,一个密度均匀分布的三维物体的重心计算方法: X = ∑ i = 1 n x i N X= \frac { \sum_{i=1}^nxi }{N} X=N∑i=1n​xi​ Y = ∑ i = 1 n y i N Y= \frac { \sum_{i=1}^nyi }{N} Y=N∑i=1n​yi​ Z = ∑ i = 1 n z i N Z= \frac { \sum_{i=1}^nzi }{N} Z=N∑i=1n​zi​ 我们现在的图形是这样的: 在这里插入图片描述 但这随之而来了一个问题: 我们的有效点太少了,质心的计算会产生很大误差啊(黑色的点为有效点) 所以我们得到了解决这个问题的方法:

增加三维模型的有效点由有效点计算重心 增加三维模型的有效点

在介绍这个之前,还请读者了解系统函数griddata(通过插值来增加有效点) 我们之前得到了X,Y,Z三个有效点的数组。 现在我们只需要在这有效点之间插入插值,使得其与拟合的图像贴合。 那么这些插值就会是新的有效点了。 我们写下代码(matlab)

X = [ 24.000000 24.000000 24.000000 24.000000 24.000000 24.000000 24.000000 24.000000 24.000000 24.000000 24.000000 24.000000 48.000000 48.000000 48.000000 48.000000 48.000000 48.000000 48.000000 48.000000 48.000000 48.000000 48.000000 48.000000 48.000000 48.000000 48.000000 48.000000 48.000000 48.000000 72.000000 72.000000 72.000000 72.000000 72.000000 72.000000 72.000000 72.000000 72.000000 72.000000 72.000000 72.000000 72.000000 72.000000 72.000000 72.000000 72.000000 72.000000 72.000000 72.000000 96.000000 96.000000 96.000000 96.000000 96.000000 96.000000 96.000000 96.000000 96.000000 96.000000 96.000000 96.000000 96.000000 96.000000 96.000000 96.000000 96.000000 96.000000 96.000000 96.000000 120.000000 120.000000 120.000000 120.000000 120.000000 120.000000 120.000000 120.000000 120.000000 120.000000 120.000000 120.000000 120.000000 120.000000 120.000000 120.000000 120.000000 120.000000 120.000000 120.000000 144.000000 144.000000 144.000000 144.000000 144.000000 144.000000 144.000000 144.000000 144.000000 144.000000 144.000000 144.000000 144.000000 144.000000 144.000000 144.000000 144.000000 144.000000 144.000000 144.000000 168.000000 168.000000 168.000000 168.000000 168.000000 168.000000 168.000000 168.000000 168.000000 168.000000 168.000000 168.000000 168.000000 168.000000 168.000000 168.000000 168.000000 168.000000 168.000000 168.000000 192.000000 192.000000 192.000000 192.000000 192.000000 192.000000 192.000000 192.000000 192.000000 192.000000 192.000000 192.000000 192.000000 192.000000 192.000000 192.000000 192.000000 192.000000 192.000000 192.000000 216.000000 216.000000 216.000000 216.000000 216.000000 216.000000 216.000000 216.000000 216.000000 216.000000 216.000000 216.000000 216.000000 216.000000 216.000000 216.000000 216.000000 216.000000 216.000000 216.000000 240.000000 240.000000 240.000000 240.000000 240.000000 240.000000 240.000000 240.000000 240.000000 240.000000 240.000000 240.000000 240.000000 240.000000 240.000000 240.000000 240.000000 240.000000 240.000000 240.000000 264.000000 264.000000 264.000000 264.000000 264.000000 264.000000 264.000000 264.000000 264.000000 264.000000 264.000000 264.000000 0.000000 288.000000 ]; Y = [ 27.750000 -27.750000 27.750000 -27.750000 17.000000 -17.000000 16.000000 -16.000000 9.750000 -9.750000 7.500000 -7.500000 41.750000 -41.750000 41.750000 -41.750000 39.375000 -39.375000 36.500000 -36.500000 32.500000 -32.500000 29.500000 -29.500000 24.375000 -24.375000 16.500000 -16.500000 9.750000 -9.750000 50.875000 -50.875000 50.875000 -50.875000 51.250000 -51.250000 49.750000 -49.750000 46.250000 -46.250000 41.250000 -41.250000 36.250000 -36.250000 27.500000 -27.500000 16.250000 -16.250000 6.250000 -6.250000 57.250000 -57.250000 57.250000 -57.250000 55.250000 -55.250000 54.000000 -54.000000 51.875000 -51.875000 48.625000 -48.625000 44.125000 -44.125000 35.250000 -35.250000 25.500000 -25.500000 9.250000 -9.250000 56.250000 -56.250000 56.250000 -56.250000 59.750000 -59.750000 58.750000 -58.750000 56.750000 -56.750000 53.500000 -53.500000 51.125000 -51.125000 41.750000 -41.750000 27.500000 -27.500000 14.750000 -14.750000 56.500000 -56.500000 56.500000 -56.500000 58.750000 -58.750000 58.250000 -58.250000 58.000000 -58.000000 55.250000 -55.250000 49.250000 -49.250000 43.000000 -43.000000 28.750000 -28.750000 17.500000 -17.500000 58.500000 -58.500000 58.500000 -58.500000 57.250000 -57.250000 57.000000 -57.000000 56.750000 -56.750000 53.875000 -53.875000 50.000000 -50.000000 46.500000 -46.500000 16.250000 -16.250000 15.250000 -15.250000 55.750000 -55.750000 55.750000 -55.750000 55.000000 -55.000000 54.750000 -54.750000 53.500000 -53.500000 49.000000 -49.000000 43.500000 -43.500000 33.000000 -33.000000 19.500000 -19.500000 10.750000 -10.750000 50.500000 -50.500000 50.500000 -50.500000 50.000000 -50.000000 48.500000 -48.500000 48.000000 -48.000000 45.500000 -45.500000 33.500000 -33.500000 21.000000 -21.000000 11.500000 -11.500000 8.750000 -8.750000 48.000000 -48.000000 48.000000 -48.000000 47.500000 -47.500000 45.875000 -45.875000 43.000000 -43.000000 34.000000 -34.000000 16.875000 -16.875000 10.500000 -10.500000 6.500000 -6.500000 4.500000 -4.500000 41.000000 -41.000000 41.000000 -41.000000 41.375000 -41.375000 42.625000 -42.625000 33.500000 -33.500000 11.500000 -11.500000 0.000000 0.000000 ]; Z = [ 24.000000 24.000000 18.000000 18.000000 12.000000 12.000000 6.000000 6.000000 0.000000 0.000000 -6.000000 -6.000000 24.000000 24.000000 18.000000 18.000000 12.000000 12.000000 6.000000 6.000000 0.000000 0.000000 -6.000000 -6.000000 -12.000000 -12.000000 -18.000000 -18.000000 -24.000000 -24.000000 24.000000 24.000000 18.000000 18.000000 12.000000 12.000000 6.000000 6.000000 0.000000 0.000000 -6.000000 -6.000000 -12.000000 -12.000000 -18.000000 -18.000000 -24.000000 -24.000000 -30.000000 -30.000000 24.000000 24.000000 18.000000 18.000000 12.000000 12.000000 6.000000 6.000000 0.000000 0.000000 -6.000000 -6.000000 -12.000000 -12.000000 -18.000000 -18.000000 -24.000000 -24.000000 -30.000000 -30.000000 24.000000 24.000000 18.000000 18.000000 12.000000 12.000000 6.000000 6.000000 0.000000 0.000000 -6.000000 -6.000000 -12.000000 -12.000000 -18.000000 -18.000000 -24.000000 -24.000000 -30.000000 -30.000000 24.000000 24.000000 18.000000 18.000000 12.000000 12.000000 6.000000 6.000000 0.000000 0.000000 -6.000000 -6.000000 -12.000000 -12.000000 -18.000000 -18.000000 -24.000000 -24.000000 -30.000000 -30.000000 24.000000 24.000000 18.000000 18.000000 12.000000 12.000000 6.000000 6.000000 0.000000 0.000000 -6.000000 -6.000000 -12.000000 -12.000000 -18.000000 -18.000000 -24.000000 -24.000000 -30.000000 -30.000000 24.000000 24.000000 18.000000 18.000000 12.000000 12.000000 6.000000 6.000000 0.000000 0.000000 -6.000000 -6.000000 -12.000000 -12.000000 -18.000000 -18.000000 -24.000000 -24.000000 -30.000000 -30.000000 24.000000 24.000000 18.000000 18.000000 12.000000 12.000000 6.000000 6.000000 0.000000 0.000000 -6.000000 -6.000000 -12.000000 -12.000000 -18.000000 -18.000000 -24.000000 -24.000000 -30.000000 -30.000000 24.000000 24.000000 18.000000 18.000000 12.000000 12.000000 6.000000 6.000000 0.000000 0.000000 -6.000000 -6.000000 -12.000000 -12.000000 -18.000000 -18.000000 -24.000000 -24.000000 -30.000000 -30.000000 24.000000 24.000000 18.000000 18.000000 12.000000 12.000000 6.000000 6.000000 0.000000 0.000000 -6.000000 -6.000000 24.000000 24.000000 ]; [Xi,Yi]=meshgrid(0:3:300,-50:1:50); Zi=griddata(X,Y,Z, Xi,Yi); surf(Xi,Yi,Zi); shading flat; axis('equal');

得到图像: 在这里插入图片描述

这样,我们的有效点就从240个变到了个了10000个了。

由有效点计算重心

有了10000个有效点,我们计算重心也会变得轻而易举。 由公式: X = ∑ i = 1 n x i N X= \frac { \sum_{i=1}^nxi }{N} X=N∑i=1n​xi​ Y = ∑ i = 1 n y i N Y= \frac { \sum_{i=1}^nyi }{N} Y=N∑i=1n​yi​ Z = ∑ i = 1 n z i N Z= \frac { \sum_{i=1}^nzi }{N} Z=N∑i=1n​zi​ 我们写下代码(matlab)

X = [ 24.000000 24.000000 24.000000 24.000000 24.000000 24.000000 24.000000 24.000000 24.000000 24.000000 24.000000 24.000000 48.000000 48.000000 48.000000 48.000000 48.000000 48.000000 48.000000 48.000000 48.000000 48.000000 48.000000 48.000000 48.000000 48.000000 48.000000 48.000000 48.000000 48.000000 72.000000 72.000000 72.000000 72.000000 72.000000 72.000000 72.000000 72.000000 72.000000 72.000000 72.000000 72.000000 72.000000 72.000000 72.000000 72.000000 72.000000 72.000000 72.000000 72.000000 96.000000 96.000000 96.000000 96.000000 96.000000 96.000000 96.000000 96.000000 96.000000 96.000000 96.000000 96.000000 96.000000 96.000000 96.000000 96.000000 96.000000 96.000000 96.000000 96.000000 120.000000 120.000000 120.000000 120.000000 120.000000 120.000000 120.000000 120.000000 120.000000 120.000000 120.000000 120.000000 120.000000 120.000000 120.000000 120.000000 120.000000 120.000000 120.000000 120.000000 144.000000 144.000000 144.000000 144.000000 144.000000 144.000000 144.000000 144.000000 144.000000 144.000000 144.000000 144.000000 144.000000 144.000000 144.000000 144.000000 144.000000 144.000000 144.000000 144.000000 168.000000 168.000000 168.000000 168.000000 168.000000 168.000000 168.000000 168.000000 168.000000 168.000000 168.000000 168.000000 168.000000 168.000000 168.000000 168.000000 168.000000 168.000000 168.000000 168.000000 192.000000 192.000000 192.000000 192.000000 192.000000 192.000000 192.000000 192.000000 192.000000 192.000000 192.000000 192.000000 192.000000 192.000000 192.000000 192.000000 192.000000 192.000000 192.000000 192.000000 216.000000 216.000000 216.000000 216.000000 216.000000 216.000000 216.000000 216.000000 216.000000 216.000000 216.000000 216.000000 216.000000 216.000000 216.000000 216.000000 216.000000 216.000000 216.000000 216.000000 240.000000 240.000000 240.000000 240.000000 240.000000 240.000000 240.000000 240.000000 240.000000 240.000000 240.000000 240.000000 240.000000 240.000000 240.000000 240.000000 240.000000 240.000000 240.000000 240.000000 264.000000 264.000000 264.000000 264.000000 264.000000 264.000000 264.000000 264.000000 264.000000 264.000000 264.000000 264.000000 0.000000 288.000000 ]; Y = [ 27.750000 -27.750000 27.750000 -27.750000 17.000000 -17.000000 16.000000 -16.000000 9.750000 -9.750000 7.500000 -7.500000 41.750000 -41.750000 41.750000 -41.750000 39.375000 -39.375000 36.500000 -36.500000 32.500000 -32.500000 29.500000 -29.500000 24.375000 -24.375000 16.500000 -16.500000 9.750000 -9.750000 50.875000 -50.875000 50.875000 -50.875000 51.250000 -51.250000 49.750000 -49.750000 46.250000 -46.250000 41.250000 -41.250000 36.250000 -36.250000 27.500000 -27.500000 16.250000 -16.250000 6.250000 -6.250000 57.250000 -57.250000 57.250000 -57.250000 55.250000 -55.250000 54.000000 -54.000000 51.875000 -51.875000 48.625000 -48.625000 44.125000 -44.125000 35.250000 -35.250000 25.500000 -25.500000 9.250000 -9.250000 56.250000 -56.250000 56.250000 -56.250000 59.750000 -59.750000 58.750000 -58.750000 56.750000 -56.750000 53.500000 -53.500000 51.125000 -51.125000 41.750000 -41.750000 27.500000 -27.500000 14.750000 -14.750000 56.500000 -56.500000 56.500000 -56.500000 58.750000 -58.750000 58.250000 -58.250000 58.000000 -58.000000 55.250000 -55.250000 49.250000 -49.250000 43.000000 -43.000000 28.750000 -28.750000 17.500000 -17.500000 58.500000 -58.500000 58.500000 -58.500000 57.250000 -57.250000 57.000000 -57.000000 56.750000 -56.750000 53.875000 -53.875000 50.000000 -50.000000 46.500000 -46.500000 16.250000 -16.250000 15.250000 -15.250000 55.750000 -55.750000 55.750000 -55.750000 55.000000 -55.000000 54.750000 -54.750000 53.500000 -53.500000 49.000000 -49.000000 43.500000 -43.500000 33.000000 -33.000000 19.500000 -19.500000 10.750000 -10.750000 50.500000 -50.500000 50.500000 -50.500000 50.000000 -50.000000 48.500000 -48.500000 48.000000 -48.000000 45.500000 -45.500000 33.500000 -33.500000 21.000000 -21.000000 11.500000 -11.500000 8.750000 -8.750000 48.000000 -48.000000 48.000000 -48.000000 47.500000 -47.500000 45.875000 -45.875000 43.000000 -43.000000 34.000000 -34.000000 16.875000 -16.875000 10.500000 -10.500000 6.500000 -6.500000 4.500000 -4.500000 41.000000 -41.000000 41.000000 -41.000000 41.375000 -41.375000 42.625000 -42.625000 33.500000 -33.500000 11.500000 -11.500000 0.000000 0.000000 ]; Z = [ 24.000000 24.000000 18.000000 18.000000 12.000000 12.000000 6.000000 6.000000 0.000000 0.000000 -6.000000 -6.000000 24.000000 24.000000 18.000000 18.000000 12.000000 12.000000 6.000000 6.000000 0.000000 0.000000 -6.000000 -6.000000 -12.000000 -12.000000 -18.000000 -18.000000 -24.000000 -24.000000 24.000000 24.000000 18.000000 18.000000 12.000000 12.000000 6.000000 6.000000 0.000000 0.000000 -6.000000 -6.000000 -12.000000 -12.000000 -18.000000 -18.000000 -24.000000 -24.000000 -30.000000 -30.000000 24.000000 24.000000 18.000000 18.000000 12.000000 12.000000 6.000000 6.000000 0.000000 0.000000 -6.000000 -6.000000 -12.000000 -12.000000 -18.000000 -18.000000 -24.000000 -24.000000 -30.000000 -30.000000 24.000000 24.000000 18.000000 18.000000 12.000000 12.000000 6.000000 6.000000 0.000000 0.000000 -6.000000 -6.000000 -12.000000 -12.000000 -18.000000 -18.000000 -24.000000 -24.000000 -30.000000 -30.000000 24.000000 24.000000 18.000000 18.000000 12.000000 12.000000 6.000000 6.000000 0.000000 0.000000 -6.000000 -6.000000 -12.000000 -12.000000 -18.000000 -18.000000 -24.000000 -24.000000 -30.000000 -30.000000 24.000000 24.000000 18.000000 18.000000 12.000000 12.000000 6.000000 6.000000 0.000000 0.000000 -6.000000 -6.000000 -12.000000 -12.000000 -18.000000 -18.000000 -24.000000 -24.000000 -30.000000 -30.000000 24.000000 24.000000 18.000000 18.000000 12.000000 12.000000 6.000000 6.000000 0.000000 0.000000 -6.000000 -6.000000 -12.000000 -12.000000 -18.000000 -18.000000 -24.000000 -24.000000 -30.000000 -30.000000 24.000000 24.000000 18.000000 18.000000 12.000000 12.000000 6.000000 6.000000 0.000000 0.000000 -6.000000 -6.000000 -12.000000 -12.000000 -18.000000 -18.000000 -24.000000 -24.000000 -30.000000 -30.000000 24.000000 24.000000 18.000000 18.000000 12.000000 12.000000 6.000000 6.000000 0.000000 0.000000 -6.000000 -6.000000 -12.000000 -12.000000 -18.000000 -18.000000 -24.000000 -24.000000 -30.000000 -30.000000 24.000000 24.000000 18.000000 18.000000 12.000000 12.000000 6.000000 6.000000 0.000000 0.000000 -6.000000 -6.000000 24.000000 24.000000 ]; [Xi,Yi]=meshgrid(0:3:300,-50:1:50); Zi=griddata(X,Y,Z, Xi,Yi); surf(Xi,Yi,Zi); shading flat; axis('equal'); Mass_x=0;%x轴上的重心 tnt=0;%有效点的个数 for i=1:100 for j=1:100 %if Zi(i,j)>450 && Zi(i,j)450 && Zi(i,j)


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3