Matlab拟合曲面,计算质心浮心
船体主要要素:主尺度、船型系数、尺度比代码实现x 长y 宽z 高 / 深dy = 0.01;% mesh.ys 还是一个struct数组 mesh . zs = 0 : dz : boat . D;meshgrid生成网格dA是是网格中一个单元格的面积,以平方米为单位。numel:返回数组 A 中的元素数目 n。
·
统一单位:米和千克
假象船:长0.3米,宽0.2米,深0.1米
1. 定义船(长、宽、高、船型系数)
船体主要要素:主尺度、船型系数、尺度比
- 主尺度

- 船型系数

1.水线面系数
2.中横剖面系数
3.方形系数
4.棱形系数
5.垂向棱形系数
- 代码实现
boat.L = 0.30; % length in meters 长
boat.W = 0.20; % width in meters 宽
boat.HB = boat.W / 2; % half breadth in meters
boat.D = 0.10; % depth in meters 深
boat.mass = 1.5; % kg
boat.n = 2; % shape parameter 船舶系数
max_area = boat.D * boat.W % 深*宽
max_volume = max_area * boat.L % 体积
density_water = 1025; % 1025 kg / m^3 海水密度
max_mass = max_volume * density_water % 质量 m = ρ * V
boat.L 是 struct 类型

2. 定义一个二维网格
- 代码实现
代码实现
x 长
y 宽
z 高 / 深
dy = 0.01; % meters
dz = 0.01; % meters
mesh.ys = -boat.HB:dy:boat.HB; % mesh.ys 还是一个struct数组
mesh.zs = 0:dz:boat.D; % meters
[mesh.ygrid,mesh.zgrid] = meshgrid(mesh.ys,mesh.zs); % meshgrid
mesh
meshgrid 生成网格
total_area = boat.W * boat.D % m^2
mesh.dA = total_area / numel(mesh.ygrid) % numel
dA是是网格中一个单元格的面积,以平方米为单位。
numel:返回数组 A 中的元素数目 n
3.描述船体形状(幂函数)
- 代码实现

y = mesh.ys; % mesh.ys = -boat.HB:dy:boat.HB;
n = boat.n;
z = boat.D * abs(y/boat.HB).^n;
plot(y, z)

4.使用一个逻辑矩阵来表示船内和船外的单元格
- 代码实现
hull = mesh.zgrid > z % 将zgrid和z矩阵作比较,真为1,假为2
redmap = [1,1,1;1,0,0];
colormap(redmap); % colormap
image(mesh.ys,mesh.zs,flipud(hull),'AlphaData',0.5);
% AlphaData - 透明度数据
5.计算质心
- 代码实现

M(质量的总和,其实理论上直接用数据即可,但是还是算了算)
原因在于后面要求修改质量
% 求和函数 matrixSum 作用是求矩阵里面所有元素的和
matrixSum(masses);
% masses是指前面网格化
% 设置的y,z的点中每个网格的质量,相当于还是把船离散化
% 怎么求每个点的质量?
% 总质量/点的个数
% 点的个数呢
matrixSum(boat.hull) %% 逻辑矩阵中有几个1代表就是几个点
% 每个点的质量
masses=boat.hull*boat.mass_per_cell
% 求和
matrixSum(masses.*mesh.ygrid)/ boat.mass;
6.加入压舱石之后计算质心
求新的 masses
% 因为是压舱石,代表是加在船底的而不是所有地方都增加质量
% 1. 找到船型的最低点,改变其质量
% 2. 再用centerOfmass函数求新的质心
[abc,index_z]=min(z); %z=
position_02=[y(index_z),abc];
masses = addMass2(0.5,position_02,masses,mesh);
COM_weight2 = centerOfMass2(masses, mesh);
7.计算浮心
- 水线
- 淹没区域
- 利用 centerOfmass 函数
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐

所有评论(0)