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;
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

HydroD:辅助脚本函数的更多相关文章

  1. [Python] 用python做一个游戏辅助脚本,完整思路

    一.说明 简述:本文将以4399小游戏<宠物连连看经典版2>作为测试案例,通过识别小图标,模拟鼠标点击,快速完成配对.对于有兴趣学习游戏脚本的同学有一定的帮助. 运行环境:Win10/Py ...

  2. unity中三种调用其他脚本函数的方法

    第一种,被调用脚本函数为static类型,调用时直接用  脚本名.函数名()第二种,GameObject.Find("脚本所在的物体的名字").SendMessage(" ...

  3. unity中调用其他脚本函数的方法(小白之路)

    第一种,被调用脚本函数为static类型,调用时直接用  脚本名.函数名().很不实用-- 第二种,GameObject.Find("脚本所在物体名").SendMessage(& ...

  4. gcov辅助脚本

    gcov辅助脚本(金庆的专栏)代码覆盖测试查看结果时,需要进入代码所在目录,调用gcov,然后vi查看.因为代码目录结构复杂,进出子目录太麻烦,所以用以下脚本直接生成与查看.一般是用TSVN列出有更改 ...

  5. UDK脚本函数性能工具

    数据采集 游戏中使用控制台命令来采集脚本函数性能数据 ProfileGame Start  // 开始捕获性能数据 ProfileGame Stop  // 停止捕获并保存数据文件,并保存到[Game ...

  6. 运维shell脚本函数语法

    在fun.sh 文件里,使用函数来封装脚本内容 usege() { echo "hello world" echo "脚本怎么使用函数......"}usege ...

  7. 通用javascript脚本函数库

    /* 名字:Common.js 功能:通用javascript脚本函数库 包括: 1.Trim(str)--去除字符串两边的空格 2.XMLEncode(str)--对字符串进行XML编码 3.Sho ...

  8. Beeline里面执行hive脚本 函数nvl2()与replace()报错

    Beeline里面执行hive脚本函数nvl2()与replace()报错 写脚本的时候是在impala里面执行的,都正常,但是转换为调度的时候是在beeline里面执行的 就会有问题了. 详情如下: ...

  9. LinuxShell脚本——函数

    LinuxShell脚本——函数 摘要:本文主要学习了Shell中函数的定义和使用. 函数的定义 Shell函数的本质是一段可以重复使用的脚本代码,这段代码被提前编写好了,放在了指定的位置,使用时直接 ...

随机推荐

  1. 如何快速下载ubuntu镜像

    使用国内镜像地址下载: 中科大http://mirrors.ustc.edu.cn/ubuntu-releases/ 阿里云开源镜像站http://mirrors.aliyun.com/ubuntu- ...

  2. python学习笔记(十三)-python对Excel进行读写修改操作

    日常工作中会遇到Excel的读写问题.我们可以使用xlwt 模块将数据写入Excel表格,使用xlrd 模块从Excel读取数据,使用xlutils模块和xlrd模块结合对Excel数据进行修改.下面 ...

  3. P1758-[NOI2009]管道取珠【dp】

    正题 题目链接:https://www.luogu.com.cn/problem/P1758 题目大意 给出一个大小为\(n\)和一个大小为\(m\)的栈,每次选择一个栈弹出栈顶然后记录这个字母,求所 ...

  4. CF1446F-Line Distance【计算几何,树状数组,二分】

    正题 题目链接:https://www.luogu.com.cn/problem/CF1446F 题目大意 给出\(n\)个点,求所有点对构成的直线中与原点距离第\(k\)小的距离 \(2\leq n ...

  5. firewalld防火墙详解

    众所周知,在RHEL7系统中,firewalld防火墙取代了iptables防火墙.我们都知道iptables的防火墙策略是交由内核层面的netfilter网络过滤器来处理的,而firewalld则是 ...

  6. mysql从零开始之MySQL PHP 语法

    MySQL PHP 语法 MySQL 可应用于多种语言,包括 PERL, C, C++, JAVA 和 PHP,在这些语言中,MySQL 在 PHP 的 web 开发中是应用最广泛. 在本教程中我们大 ...

  7. 华为Awareness kit,您旅途路上的超智能管家

    前言 前段时间看了一部纪录片<中国游客在巴黎>,讲述了外国人眼中"中国式旅游":热衷景点打卡,沉迷拍照留念,无暇仔细欣赏:留足时间,买买买,不能枉此行.网友总结中国式旅 ...

  8. Serverless X OpenKruise 部署效率优化之道

    作者 | 许成铭(竞霄) Serverless 作为云计算的最佳实践.云原生发展的方向和未来演进趋势,其核心价值在于快速交付.智能弹性.更低成本.SAE(Serverless 应用引擎)作为首款面向应 ...

  9. 洛谷3571 POI2014 SUP-Supercomputer (斜率优化)

    一道神仙好题. 首先看到有多组\(k\),第一反应就是离线. 考虑贪心. 我们每次一定是尽量选择有儿子的节点.以便于我们下一次扩展. 但是对于一个\(k\),每次贪心的复杂度是\(O(n)\) 总复杂 ...

  10. pytest执行时mian函数传参

    在代码中执行pytest可以通过main函数 加参数来指定运行规则时,参数需要放在列表或者元祖中 # pytest.main(["--html=report.html"]) # p ...