ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

HydroD:辅助脚本函数

2021-11-08 17:36:06  阅读:156  来源: 互联网

标签:body 辅助 函数 HydroD Points num2str str end name


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 船型数学公式

image

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;
for  i=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

image

标签:body,辅助,函数,HydroD,Points,num2str,str,end,name
来源: https://www.cnblogs.com/chetwin/p/15523393.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有