HydroD(辅助脚本函数)
HydroD:辅助函数
【HydroD(辅助脚本函数)】在HydroD中,使用JS脚本可以快速进行模拟参数设置,但是经过尝试,HydroD中的JS脚本语言并不支持现在JavaScript中的一些语法。所以考虑采用Matlab字符串拼接能力,生成特定所需的JS脚本命令。
生成FrequencySet
HydroD中具有生成均匀间隔FrequencySet的能力,有时候需要生成不均匀FrequencySet,所以采用以下函数生成对应字符串
demo
omega=[2:0.2:5,5:0.1:10]';
omega=unique(omega);
str=CreateFreSet(omega);
function out=CreateFreSet(Fre)
% Fre:输入圆频率列向量(N*1)
head='FrequencySet1 = FrequencySet(FrequencyTypeFrequency, Array(';
tail='));
';
[N,~]=size(Fre);
content=[];
for i=1:1:N-1
content=[content,num2str(Fre(i),'%.2f rad/s ,')];
end
content=[content,num2str(Fre(N),'%.2f rad/s')];
content=[head,content,tail];
out=content;
end
Genie 绘制直线 demo
function str = genLine(Points,name)
%% 两点绘制线条JS脚本
% Curve13 = CreateLineTwoPoints(Point(0 m,0 m,0 m), Point(0 m,10 m,0 m));
head=[name,'= CreateLineTwoPoints('];
body=[];
for i=1:1:2
tmp=['Point(',num2str(Points(i,1)),',',num2str(Points(i,2)),',',num2str(Points(i,3)),')'];
if i~=1
body=[body,','];
end
body=[body,tmp];
end
tail=');
';
str=[head,body,tail];
end
Genie 绘制样条线
function str = genCrurve(Points,name)
% 生成绘制样条线JS脚本
% Points:(N*3);
[N,~]=size(Points);
head=[name,'=PolyCurve();
',name,'.Clear();
'];
body=[];
for i=1:1:N
tmp=[name,'.addPoint(Point(',num2str(Points(i,1)),',',...
num2str(Points(i,2)),',',num2str(Points(i,3)),'), ggSpline);
'];
body=[body,tmp];
end
tail=[name,'.rebuild();
'];
str=[head,body,tail];
end
Genie 绘制圆
function str= genCircle(name,center,normal,r)
%% 中心、法向,半径绘制圆
% Curve= CreateCircleFromPlaneAndRadius(Point(0,0,z), Vector3d(0,0,1), r);
head=[name,'= CreateCircleFromPlaneAndRadius('];
center_=['Point(',num2str(center(1)),',',num2str(center(2)),',',num2str(center(3)),')'];
normal_=['Vector3d(',num2str(normal(1)),',',num2str(normal(2)),',',num2str(normal(3)),');
'];
body=[center_,',',normal_,',',num2str(r)];
tail=');
';
str=[head,body,tail];
end
Genie绘制Wigley船型 Wigley 船型数学公式
文章图片
demo
clear;
clc;
L=2;
%长
B=0.3;
%宽
d=0.125;
%吃水draft
a2=0.2;
a4=0.0;
%系数a2,a4
alpha=1.0;
Eta=@(Zeta,Ksi) (1-Zeta^2)*(1-Ksi^2)*...
(1+a2*Ksi^2+a4*Ksi^4)+alpha*Zeta^2*...
(1-Zeta^8)*(1-Ksi^2)^4;
ksi=-1:0.1:1;
zeta=0:0.05:1;
index=1;
fori=1:1:21%x
for k=1:1:21 %z
index=21*(i-1)+k;
eta=Eta(zeta(k),ksi(i));
Points(index,:)=...
[ksi(i)*L/2,eta*B/2,-1*zeta(k)*d];
end
end
%% 绘图
figure(1)
plot3(Points(:,1),Points(:,2),Points(:,3),'r*');
hold on
axis equal;
grid on
%% 生成str字符串
str=[];
for i=1:1:21
str_tmp=genCurve([Points(21*i-20:21*i,:)],num2str(i,'Curve%03d'));
str=[str,str_tmp];
end
文章图片
推荐阅读
- 「按键精灵安卓版」关于全分辨率脚本的一些理解(非游戏app)
- Linux|109 个实用 shell 脚本
- Java代码辅助效率工具Lombok(注解|Java代码辅助效率工具Lombok(注解,自动生成代码)
- 5.|5. Python 入门- 课程 5 脚本
- linux作业9
- Python|教你写个简单好用的Python脚本一键自动整理文件非常适合办公用~
- Ubuntu|Ubuntu 下添加开机启动脚本
- 分享5个短小精悍的Python趣味脚本|分享5个短小精悍的Python趣味脚本,适合小白上手!
- 脚本自动化打包
- Windows平台使用bat脚本导出日志