Open CASCADE学习|圆柱螺旋线绘制原理探究

1、圆柱螺旋线绘制原理

在OCC中,圆柱面的参数方程为:

设P为(x0,y0,z0),则

x=x0+r*cos(u)

y=y0+r*sin(u)

z=z0+v

但u、v之间有关系时,此方程表达为圆柱螺旋线,u、v之间为线性关系时是等螺距螺旋线,u、v之间为非线性关系时是变螺距螺旋线。

2、Draw Test Harness命令绘制圆柱螺旋线

使用Tcl命令在Draw Test Harness中生成的圆柱螺旋线并到出Brep数据如下:

pload ALL

cylinder aCylinder 6

line aLine2d 0 0 1 1

trim aSegment aLine2d 0 2*pi

mkedge aHelixEdge aSegment aCylinder 0 6*pi

dump aHelixEdge

代码先加载所有模块,然后创建一个圆柱面aCylinder;一条二维直线aLine2d;再将参数范围限定在0到2PI之间;最后使用了用曲面及其上的pcurve来创建边的算法mkedge生成了螺旋线并导出Brep数据。

3、Brep数据

Brep数据如下所示,下面直接在该数据中进行解释说明。

*********** Dump of aHelixEdge *************

Shape : 3, FORWARD

Dump of 3 TShapes

-----------------

Flags : Free, Modified, Checked, Orientable, Closed, Infinite, Convex, Locked

TShape # 1 : EDGE11010000 0000027C9109C6E0

+3 -2

Tolerance : 1e-07

same parametrisation of curves

same range on curves

- PCurve : 1 on surface 1, range : 0 18.8495559215388

UV Points : 0, 0 13.3286488144751, 13.3286488144751

- Polygon 3D : 1

这里存储螺旋线的起点、终点Pcurve以及Polygon 3D

该螺旋线始于Tshape3,终于Tshape2,其是圆柱面上的参数曲线,其参数范围为:

u:[0, 13.3286488144751]

v:[0, 13.3286488144751]

参数由Curve2ds中的1号直线的起点、方向,及范围[0,18.8495559215388]确定

螺旋线的参数方程由参数范围及surface中的1号面确定

TShape # 2 : VERTEX01011010 0000027C910A35A0

Tolerance : 1e-07

- Point 3D : 4.33958778097726, 4.14342586408793, 13.3286488144751

这里存储螺旋线的终点,坐标为(4.33958778097726,4.14342586408793,13.3286488144751)

TShape # 3 : VERTEX01011010 0000027C910A2F20

Tolerance : 1e-07

- Point 3D : 6, 0, 0

这里存储螺旋线的起点,坐标为(6,0,0)

-------

Dump of 1 Curve2ds

-------

1 : Line

Origin :0, 0

Axis  :0.707106781186547, 0.707106781186547

这里存储Pcurve的起点及方向,这个方向是归一化后的

-------

Dump of 0 Curves

-------

-------

Dump of 1 Polygon3Ds

-------

1 : Polygon3D with 79 Nodes

with parameters

Deflection : 0.054777818570848

Nodes :

     1 :                 6                 0                 0

2 : 5.91147846277275  1.02685071172685 0.171988435739901

3 : 5.64852587194202  2.02340195561871 0.343976871479801

4 : 5.21890121669389  2.96024831566391 0.515965307219702

5 : 4.63528150866612  3.80974609855013 0.687953742959602

6 : 3.91488771909563  4.54682902107328 0.859942178699503

7 : 3.07897663653632 5.14974784544481   1.0319306144394

8 : 2.15221363899269  5.60071213794584   1.2039190501793

9 : 1.16194488819403 5.88641521444077   1.3759074859192

10 : 0.137390421503272  5.99842678308898  1.54789592165911

11 : -0.891218048958075   5.9334416984758  1.71988435739901

12 : -1.89352918885328  5.69337748713017  1.89187279313891

13 : -2.83996762388782  5.28531776672595  2.06386122887881

14 : -3.70260662567498   4.7213032285067  2.23584966461871

15 : -4.45599215071128  4.01797635045298  2.40783810035861

16 : -5.07789391739641  3.19609032470432  2.57982653609851

17 : -5.54996135893326  2.27989668940233  2.75181497183841

18 : -5.85826509678857  1.29642973421194  2.92380340757831

19 : -5.99370795735972 0.274708794695026  3.09579184331821

20 : -5.95229340390531 -0.755118026420635  3.26778027905811

21 : -5.73524346307045 -1.76266344470738  3.43976871479801

22 : -5.34896266632775 -2.71819763708086  3.61175715053791

23 : -4.80484907032021 -3.59352548501371  3.78374558627782

24 : -4.11895793236278 -4.36281853294699  3.95573402201772

25 : -3.31152796508963 -5.00337711315361  4.12772245775762

26 : -2.40638414913624 -5.49630014889888  4.29971089349752

27 : -1.43023472516923 -5.82704287189653  4.47169932923742

28 : -0.41188310904629 -5.98584599739104  4.64368776497732

29 : 0.618622015733548 -5.96802369312068  4.81567620071722

30 : 1.63087334991494 -5.77410184500908 4.98766463645712

31 : 2.59500221211051 -5.40980253975517 5.15965307219702

32 : 3.48255987933138 -4.88587522219627 5.33164150793692

33 : 4.26735702855079 -4.21777950951424 5.50362994367683

34 : 4.92623650974859 -3.42522902154295 5.67561837941673

35 : 5.43975664808373 -2.53160968745753 5.84760681515663

36 : 5.79276491287537 -1.5632896929744  6.01959525089653

  37 : 5.97484502603907 -0.548841429573404 6.19158368663643

38 : 5.98062431706958 0.481801596174212 6.36357212237633

39 : 5.80993225539153 1.49822801594453  6.53556055811623

40 : 5.46780548223566 2.47044595335207  6.70754899385613

41 :  4.9643391935641 3.36976799961708  6.87953742959603

42 : 4.31438925931528 4.16965769807366  7.05152586533593

43 : 3.53713386858935  4.8465125601486  7.22351430107583

44 : 2.65550763538804 5.38036050821837  7.39550273681573

45 : 1.69552486285233 5.75544919528003  7.56749117255563

46 : 0.685511934561036  5.96071081227519  7.73947960829553

47 : -0.344728517141907  5.99008866791378  7.91146804403543

48 : -1.36479700275703  5.84271590454862  8.08345647977533

49 : -2.34459417880975  5.52294107669921  8.25544491551523

50 : -3.25520899456837  5.04019983747482  8.42743335125513

51 : -4.06977177559527  4.40873651906849  8.59942178699503

52 : -4.76424707204225   3.6471838226962  8.77141022273493

53 : -5.31814287697335  2.77801302014544  8.94339865847483

54 : -5.71511528768318  1.82687088993449  9.11538709421473

55 : -5.94345076816078 0.821822953225958  9.28737552995463

56 : -5.99641178249436 -0.207474660531981  9.45936396569454

57 : -5.87243560054993 -1.23065028232791  9.63135240143444

58 : -5.57518040972927 -2.21751288586357  9.80334083717434

59 : -5.11341737217911 -3.13894293957327  9.97532927291424

60 : -4.50077181253901 -3.96775164185642  10.1473177086541

61 : -3.75532117304723 -4.67948318591521   10.319306144394

62 : -2.89906159921539 -5.25313638162524  10.4912945801339

63 : -1.95725889562388 -5.67178434141331  10.6632830158738

64 : -0.95770300330158 -5.92307394496026  10.8352714516137

65 : 0.0701120030405293 -5.99959034493436  11.0072598873536

66 : 1.09585820195355 -5.89907575821934 11.1792483230935

67 : 2.08926871665989 -5.62449608672513 11.3512367588334

68 : 3.02103080520639 -5.18395340198907 11.5232251945733

69 :  3.8636507967903 -4.59044687590017 11.6952136303132

70 : 4.59226535242716 -3.86148921180638 11.8672020660531

71 : 5.18537511194659 -3.01858989404074  12.039190501793

72 : 5.62547907946288 -2.08662050371539 12.2111789375329

73 : 5.89959102839457 -1.09308082852379 12.3831673732728

74 : 5.99962268837775 -0.0672874215806556 12.5551558090127

75 : 5.92262240730803 0.960491447360601 12.7271442447526

76 : 5.67086224626782 1.95992892316386  12.8991326804925

77 : 5.25177093741309 2.90153442525559  13.0711211162324

78 : 4.83571236765298 3.55188483728401  13.1998849653538

79 : 4.33958778097726  4.14342586408793  13.3286488144751

这里存储螺旋线的数据点,一共80个点

Parameters :

0 0.243228378394701 0.486456756789402 0.729685135184103 0.972913513578804 1.2161418919735 1.45937027036821 1.70259864876291 1.94582702715761 2.18905540555231 2.43228378394701 2.67551216234171 2.91874054073641 3.16196891913111 3.40519729752581 3.64842567592052 3.89165405431522 4.13488243270992 4.37811081110462 4.62133918949932 4.86456756789402 5.10779594628872 5.35102432468343 5.59425270307813 5.83748108147283 6.08070945986753 6.32393783826223 6.56716621665693 6.81039459505164 7.05362297344634 7.29685135184104 7.54007973023574 7.78330810863044 8.02653648702514 8.26976486541984 8.51299324381454 8.75622162220924 8.99945000060394 9.24267837899865 9.48590675739335 9.72913513578805 9.97236351418275 10.2155918925774 10.4588202709721 10.7020486493668 10.9452770277616 11.1885054061563 11.431733784551 11.6749621629457 11.9181905413404 12.1614189197351 12.4046472981298 12.6478756765245 12.8911040549192 13.1343324333139 13.3775608117086 13.6207891901033 13.864017568498 14.1072459468927 14.3504743252874 14.5937027036821 14.8369310820768 15.0801594604715 15.3233878388662 15.5666162172609 15.8098445956556 16.0530729740503 16.296301352445 16.5395297308397 16.7827581092344 17.0259864876291 17.2692148660237 17.5124432444184 17.7556716228131 17.9989000012078 18.2421283796025 18.4853567579972 18.667456339768 18.8495559215388

这里存储输入的参数

-------

Dump of 0 PolygonOnTriangulations

-------

-------

Dump of 1 surfaces

-------

1 : CylindricalSurface

 Origin :0, 0, 0

Axis  :0, 0, 1

XAxis :1, 0, -0

YAxis :-0, 1, 0

Radius :6

这里存储确定圆柱面参数方程所需的起点、向量及半径

-------

Dump of 0 Triangulations

-------

-------

Dump of 0 Locations

-------

从这个文件数据可以看出,该螺旋线的参数方程为

x=0+6*cos(u)

y=0+6*sin(u)

z=0+v

v=u,u取6*PI*[0,√2/2]即[0, 13.3286488144751]

此螺旋线螺旋角为45°

4、C++代码绘制圆柱螺旋线

TopoDS_Shape createHelix()
{Handle_Geom_CylindricalSurface aCylinder = new Geom_CylindricalSurface(gp::XOY(), 6.0);gp_Lin2d aLine2d(gp_Pnt2d(0.0, 0.0), gp_Dir2d(1.0, 1.0));Handle(Geom2d_TrimmedCurve) aSegment = GCE2d_MakeSegment(aLine2d, 0.0, M_PI * 2.0);TopoDS_Shape aHelixEdge = BRepBuilderAPI_MakeEdge(aSegment, aCylinder, 0.0, 6.0 * M_PI);//BRepTools::Write(aHelixEdge, "d:/helix.brep");return aHelixEdge;
}
​
 

 
参考文献:1、https://www.cppblog.com/eryar/archive/2015/07/09/211212.html2、https://dev.opencascade.org/doc/occt-7.7.0/overview/html/specification__brep_format.html

       

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/649399.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

文件上传之秒传功能

秒传是一种文件的传输机制,用于在文件已经存在于目标服务器上时,通过校验文件的唯一标识,实现快速而无需从新上传整个文件,它解决了重复上传相同文件的问题,提高了文件传输的效率和节省了带宽资源。 技术阐述&#xff…

免 费 小程序商城搭建之鸿鹄云商 SAAS云产品概述

【SAAS云平台】打造全行业全渠道全场景的SaaS产品,为店铺经营场景提供一体化解决方案;门店经营区域化、网店经营一体化,本地化、全方位、一站式服务,为多门店提供统一运营解决方案;提供丰富多样的营销玩法覆盖所有经营…

软件测试面试八股文(2024新版)

🍅 视频学习:文末有免费的配套视频可观看 🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 1、你的测试职业发展是什么? 测试经验越多,测试能力越高。所以我的职业发…

【unity实战】实现蓄力丢手榴弹、烟雾弹、燃烧弹的效果

文章目录 爆炸燃烧烟雾效果资产手榴弹丢手雷烟雾弹、燃烧弹实现手雷每次撞墙弹发出音效(补充)完结 爆炸燃烧烟雾效果资产 https://assetstore.unity.com/packages/vfx/particles/war-fx-5669 手榴弹 手榴弹配置好刚体,碰撞体 新增脚本Th…

Qlik Sense : Store With Retry (保存重试机制)

Background sometime you cannot store the file directly ,maybe there are another process are reading/storeing the file , so you would need to wait another proecess done and retry . then we come up this solution . 有时您不能直接存储文件,可能还有…

实验:eNSP AR通过telnet远程登录另外一台AR

实验2:eNSP AR通过telnet远程登录另外一台AR 基于实验1的基础上来进行,我们通过AR2220登录AR3260 首先设置远程登录密码 1、user-interface vty 0 4 进入用户的虚拟终端 2、设置密码 set authentication password cipher Huawei 这里的意思就是设置密…

数据结构(C语言版)代码实现(四)——静态单链表的部分代码实现

目录 参考材料、格式 头文件SLinkList.h 库、宏定义、函数类型声明 线性表的静态单链表存储结构 按值查找 初始化静态链表 分配空间 回收空间 打印已用链表中的元素 求集合(A-B)U(B-A)中的元素(重点介绍) 调试过程 修改报错与警告 调试 完整…

找不到msvcp110.dll怎么办,msvcp110.dll丢失修复方法分享

当计算机系统中无法找到msvcp110.dll这个特定的动态链接库文件时,可能会引发一系列运行问题和功能受限的情况。msvcp110.dll是Microsoft Visual C Redistributable Package的一部分,对于许多基于Windows的应用程序来说,它是至关重要的运行组件…

vue模拟聊天页面列表:滚动到底部,滚动到顶部触发加载更多

先看下效果&#xff1a; 代码&#xff1a; <template><div><div style"text-align: center"><button click"scrollTop">滚动到顶部</button><button click"scrollBottom">滚动到底部</button></d…

Vue深入学习2—虚拟DOM和Diff算法

1、snabbdom 是什么&#xff1f; snabbdom是“速度"的意思&#xff0c;源码只有200行&#xff0c;使用TS写的&#xff0c;让东西变得模块化 2、snabbdom 的 h 函数如何工作&#xff1f; h函数用于产生虚拟节点&#xff0c;同时也可以嵌套使用&#xff0c;得到虚拟DOM树&am…

kuberneters可视化界面-kuboard

一、kuboard安装 可以选用&#xff0c;docker和docker-commpose kuberneters 安装 kuboard官网 1、 docker安装 sudo docker run -d \--restartunless-stopped \--namekuboard \-p 80:80/tcp \-p 10081:10081/tcp \-e KUBOARD_ENDPOINT"http://192.168.1.10:80" …

linux的kali安装,换源,更新包

下载kali kali.org进入官网后点第二个 然后点第一个 解压kali 下载后获得.7z压缩包&#xff0c;建议移动到合适自己电脑的位置进行解压&#xff0c;我喜欢放在D盘 启动kali 双击进入解压出的文件夹&#xff0c;将唯一一个.vmx文件用vmware打开&#xff08;没装的自行提前装…

数据结构奇妙旅程之二叉树题型解法总结

꒰˃͈꒵˂͈꒱ write in front ꒰˃͈꒵˂͈꒱ ʕ̯•͡˔•̯᷅ʔ大家好&#xff0c;我是xiaoxie.希望你看完之后,有不足之处请多多谅解&#xff0c;让我们一起共同进步૮₍❀ᴗ͈ . ᴗ͈ აxiaoxieʕ̯•͡˔•̯᷅ʔ—CSDN博客 本文由xiaoxieʕ̯•͡˔•̯᷅ʔ 原创 CSDN …

【深度学习】CodeFormer训练过程,如何训练人脸修复模型CodeFormer

文章目录 BasicSR介绍环境数据阶段 I - VQGAN阶段 II - CodeFormer (w0)阶段 III - CodeFormer (w1) 代码地址&#xff1a;https://github.com/sczhou/CodeFormer/releases/tag/v0.1.0 论文的一些简略介绍&#xff1a; https://qq742971636.blog.csdn.net/article/details/134…

链路追踪-调用链跟踪-Jaeger

文章目录 一、什么是链路跟踪二、OpenCensusOpenCensus 主要特点OpenTracing标准基本概念Span 三、典型服务端产品什么是OpenTracing?opentracing 使用介绍 四、JaegerJaeger 包含的模块Jaeger-client&#xff08;客户端库&#xff09; 五、Jaeger服务容器化部署过程问题整理 …

csdn黑色背景用法

在edge浏览器下&#xff0c;下载油猴脚本管理器 脚本下载 edge扩展 效果图如下&#xff1a;&#xff1a;&#xff1a;

[ACM学习] 进制转换

进制的本质 本质是每一位的数位上的数字乘上这一位的权重 将任意进制转换为十进制 原来还很疑惑为什么从高位开始&#xff0c;原来从高位开始的&#xff0c;可以被滚动地乘很多遍。 将十进制转换为任意进制

适合深夜发朋友圈的心灵鸡汤(整理70句)

1、很多时候&#xff0c;我们赢得了口舌&#xff0c;却失去了感情。 2、失恋到极致的时候&#xff0c;我真的会用后退来保护自己。 3、全身心地去爱&#xff0c;你可能会受到伤害&#xff0c;但这是完整人生的唯一方式。 4、自由不是想干什么就干什么&#xff0c;而是不想干…

Linux中LVM实验

LVM实验&#xff1a; 1、分区 -L是大小的意思-n名称的意思 从vg0&#xff08;卷组&#xff09;分出来 2、格式化LV逻辑卷 LVM扩容 如果icdir空间不够了&#xff0c; 扩展空间lvextend -L 5G /dev/vg0/lv1 /dev/vg0/lv1(pp,vg,lv) 刷新文件系统xfs_growfs /lvdir VG扩容 …

php:规范小数位数,例:10.00展示为10,10.98展示为10.98

代码 <?php$value 10.98; // 原始的双精度类型值if ($value floor($value)) {$formattedValue number_format($value, 0); // 10.00 转换为 10echo $formattedValue;} else {$formattedValue number_format($value, 2); // 10.98 保持为 10.98echo $formattedValue;} …