HydroD:辅助函数

在HydroD中,使用JS脚本可以快速进行模拟参数设置,但是经过尝试,HydroD中的JS脚本语言并不支持现在JavaScript中的一些语法。所以考虑采用Matlab字符串拼接能力,生成特定所需的JS脚本命令。

生成FrequencySet

HydroD中具有生成均匀间隔FrequencySet的能力,有时候需要生成不均匀FrequencySet,所以采用以下函数生成对应字符串

demo

  1. omega=[2:0.2:5,5:0.1:10]';
  2. omega=unique(omega);
  3. str=CreateFreSet(omega);
  1. function out=CreateFreSet(Fre)
  2. % Fre:输入圆频率列向量(N*1
  3. head='FrequencySet1 = FrequencySet(FrequencyTypeFrequency, Array(';
  4. tail='));';
  5. [N,~]=size(Fre);
  6. content=[];
  7. for i=1:1:N-1
  8. content=[content,num2str(Fre(i),'%.2f rad/s ,')];
  9. end
  10. content=[content,num2str(Fre(N),'%.2f rad/s')];
  11. content=[head,content,tail];
  12. out=content;
  13. end

Genie 绘制直线

demo

  1. function str = genLine(Points,name)
  2. %% 两点绘制线条JS脚本
  3. % Curve13 = CreateLineTwoPoints(Point(0 m,0 m,0 m), Point(0 m,10 m,0 m));
  4. head=[name,'= CreateLineTwoPoints('];
  5. body=[];
  6. for i=1:1:2
  7. tmp=['Point(',num2str(Points(i,1)),',',num2str(Points(i,2)),',',num2str(Points(i,3)),')'];
  8. if i~=1
  9. body=[body,','];
  10. end
  11. body=[body,tmp];
  12. end
  13. tail=');';
  14. str=[head,body,tail];
  15. end

Genie 绘制样条线

  1. function str = genCrurve(Points,name)
  2. % 生成绘制样条线JS脚本
  3. % Points:(N*3);
  4. [N,~]=size(Points);
  5. head=[name,'=PolyCurve();',name,'.Clear();'];
  6. body=[];
  7. for i=1:1:N
  8. tmp=[name,'.addPoint(Point(',num2str(Points(i,1)),',',...
  9. num2str(Points(i,2)),',',num2str(Points(i,3)),'), ggSpline);'];
  10. body=[body,tmp];
  11. end
  12. tail=[name,'.rebuild();'];
  13. str=[head,body,tail];
  14. end

Genie 绘制圆

  1. function str= genCircle(name,center,normal,r)
  2. %% 中心、法向,半径绘制圆
  3. % Curve= CreateCircleFromPlaneAndRadius(Point(0,0,z), Vector3d(0,0,1), r);
  4. head=[name,'= CreateCircleFromPlaneAndRadius('];
  5. center_=['Point(',num2str(center(1)),',',num2str(center(2)),',',num2str(center(3)),')'];
  6. normal_=['Vector3d(',num2str(normal(1)),',',num2str(normal(2)),',',num2str(normal(3)),');'];
  7. body=[center_,',',normal_,',',num2str(r)];
  8. tail=');';
  9. str=[head,body,tail];
  10. end

Genie绘制Wigley船型

Wigley 船型数学公式

demo

  1. clear;clc;
  2. L=2; %长
  3. B=0.3; %宽
  4. d=0.125; %吃水draft
  5. a2=0.2;a4=0.0; %系数a2,a4
  6. alpha=1.0;
  7. Eta=@(Zeta,Ksi) (1-Zeta^2)*(1-Ksi^2)*...
  8. (1+a2*Ksi^2+a4*Ksi^4)+alpha*Zeta^2*...
  9. (1-Zeta^8)*(1-Ksi^2)^4;
  10. ksi=-1:0.1:1;
  11. zeta=0:0.05:1;
  12. index=1;
  13. for i=1:1:21%x
  14. for k=1:1:21 %z
  15. index=21*(i-1)+k;
  16. eta=Eta(zeta(k),ksi(i));
  17. Points(index,:)=...
  18. [ksi(i)*L/2,eta*B/2,-1*zeta(k)*d];
  19. end
  20. end
  21. %% 绘图
  22. figure(1)
  23. plot3(Points(:,1),Points(:,2),Points(:,3),'r*');hold on
  24. axis equal;grid on
  25. %% 生成str字符串
  26. str=[];
  27. for i=1:1:21
  28. str_tmp=genCurve([Points(21*i-20:21*i,:)],num2str(i,'Curve%03d'));
  29. str=[str,str_tmp];
  30. 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. Layui的落幕,是否预示一个时代的结束?

    1.今天,看到LayUi(读音类UI)官方说,LayUI官网将关闭,多少有些伤感. 或许,有人会所,通知里也说了,"新版下载.文档和示例等仍会在Github 和 Gitee" 但, ...

  2. PC+PLC通过Modbus协议构建工控系统

    一. 概述 工业设备采用HMI+PLC控制是比较常见的方案,随着工业自动化的要求越来越高,现在很多设备都要求接入企业MES系统,MES系统一般为WEB系统,接口形式大部分为HTTP协议,这种传统方案和 ...

  3. ~/.emacs emacs 配置文件

    windows ~/.emacs (when (>= emacs-major-version 24) (require 'package) (add-to-list 'package-archi ...

  4. P7046-「MCOI-03」诗韵【SAM,倍增,树状数组】

    正题 题目链接:https://www.luogu.com.cn/problem/P7046 题目大意 给出一个长度为 \(n\) 的字符串,然后 \(m\) 次把它的一个子串加入集合.如果一个字符串 ...

  5. P4323-[JSOI2016]独特的树叶【换根dp,树哈希】

    正题 题目链接:https://www.luogu.com.cn/problem/P4323 题目大意 给出\(n\)个点的树和加上一个点之后的树(编号打乱). 求多出来的是哪个点(如果有多少个就输出 ...

  6. Redis之品鉴之旅(四)

    发布订阅,简单场景下的发布订阅完全可以使用. 可以简单的理解,将一个公众号视为发布者,关注公众号的人视作订阅者,公众号发布一条文章或者消息,凡事订阅公众号的都可以收到消息.一个人可以订阅多个公众号,一 ...

  7. React-高阶函数_函数柯里化

    高阶函数_函数柯里化 高阶函数(定义) 如果一个函数符合下面两个规范,就是高阶函数: 如果A函数,接收的参数是一个函数,那么A就是一个高阶函数(比如数组方法arr.map()接收的就是一个处理item ...

  8. salesforce零基础学习(一百零八)MFA

    本篇参考:https://security.salesforce.com/mfa https://sfdc.co/bvtuQT  (MFA官方研讨会的文档) https://sfdc.co/iwiQK ...

  9. HCNP Routing&Switching之路由引入导致的问题及解决方案

    前文我们了解了路由引入相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15359902.html:今天我们来讨论下由于路由引入所导致的问题以及怎么避免此 ...

  10. 残差网络resnet理解与pytorch代码实现

    写在前面 ​ 深度残差网络(Deep residual network, ResNet)自提出起,一次次刷新CNN模型在ImageNet中的成绩,解决了CNN模型难训练的问题.何凯明大神的工作令人佩服 ...