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.mfbz.cn/a/350476.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

数位dp,HDU 4151 The Special Number

一、题目 1、题目描述 In this problem, we assume the positive integer with the following properties are called ‘the special number’: 1) The special number is a non-negative integer without any leading zero. 2) The numbers in every digit of the special nu…

Linux基础指令大汇总

Linux的指令比较多,在学习的过程中要学会总结和归纳,同时结合实践多多使用,就像学数学一样,不是背过公式就等于掌握的,而是要知道在什么时候用,怎么用才是关键。 这篇文章会列举一系列常用的指令&#xff0…

springblade框架实现多数据源

文章目录 前言1、 application-dev.yml配置文件2、service层3、修改 spring.datasource.dynamic.enabled 备注总结 前言 公司要求使用springblade框架开发,需要用到多数据源的场景 1、 application-dev.yml配置文件 #数据源配置 spring:datasource:dynamic:primar…

腾讯云服务器一键部署幻兽帕鲁联机服务器详细教程(Linux系统)

腾讯云作为国内领先的云计算服务商,为广大用户提供了稳定、高效的云计算服务。本文将详细介绍如何在腾讯云服务器(Linux系统)实现一键部署幻兽帕鲁联机服务器,帮助大家快速搭建自己的游戏联机服务器。 第一步:购买服务…

初识数据库

数据库技术的基础术语 在学习数据库技术之前,我们先认识与该技术密切相关的基本术语,分别是数据库 (Database, DB)、数据库管理系统(Database Management System, DBMS)和数据库 系统(Database System, DBS),具体介绍如下。 1. 数据库 数…

【Linux install】详细的Ubuntu和win双系统安装指南

文章目录 1.前期准备1.1 制作启动盘1.2关闭快速启动、安全启动、bitlocker1.2.1 原因1.2.2 进入BIOSshell命令行进入BIOSwindows设置中高级启动在开机时狂按某个键进入BIOS 1.2.3 关闭Fast boot和Secure boot 1.3 划分磁盘空间1.3.1 查看目前的虚拟内存大小 2.开始安装2.1 使用…

代码随想录 Leetcode102. 二叉树的层序遍历

题目&#xff1a; 代码(首刷看解析 2024年1月24日&#xff09;&#xff1a; class Solution { public:vector<vector<int>> levelOrder(TreeNode* root) {vector<vector<int>> res;if(root nullptr) return res;queue<TreeNode*> que;TreeNode…

智能充电桩,机器人 wifi蓝牙 解决方案

新联鑫威低功耗高性价比sdio wifi/蓝牙combo的模块单频2.4g的CYWL6208&#xff0c;双频2.4g/5g CYWL6312可以应用到一些低延时 高性能 低功耗 联网需求的交流直流充电桩&#xff0c;扭力扳手&#xff0c;agv机器人&#xff0c;目前支持主流的stm32F4/GD32F4 瑞萨 psoc的主控&am…

博弈论(牛客练习赛)

思路&#xff1a;我们考虑小念赢 1、如果n>1并且p0&#xff0c;小念可以连续取两次&#xff0c;相当于小念有挂&#xff0c;可以从必败态转为必胜态&#xff0c;必赢。 2、如果n>1并且m>n-1&#xff0c;小念第一次取n-1个&#xff0c;小念必赢。 代码&#xff1a; …

(大众金融)SQL server面试题(2)-游戏打包销售折扣

今天&#xff0c;面试了一家公司&#xff0c;什么也不说先来三道面试题做做&#xff0c;第二题。 那么&#xff0c;我们就开始做题吧&#xff0c;谁叫我们是打工人呢。 题目是这样的&#xff1a; 销售平台进行游戏打包促销。将任意个游戏打包为一组&#xff0c;根据游戏数量…

RabbitMQ之死信交换机

前言 消息队列是分布式系统中常用的组件&#xff0c;用于异步通信、解耦和提高系统可靠性。然而&#xff0c;在实际应用中&#xff0c;难免会遇到一些异常情况&#xff0c;例如消息处理失败、超时等。为了更好地处理这些异常情况&#xff0c;死信交换机&#xff08;Dead Lette…

C++:组合、继承与多态

面向对象设计的重要目的之一就是代码重用&#xff0c;这也是C的重要特性之一。代码重用鼓励人们使用已有的&#xff0c;得到认可并经过测试的高质量代码。多态允许以常规方式书写代码来访问多种现有的且已专门化了的相关类。继承和多态是面向对象程序设计方法的两个最主要的特性…

使用vs2022将c语言文件打包成exe可执行程序分享给朋友(详解)

目录 1.给vs2022安装打包插件 2.新建打包项目 找到自己想要打包好的项目 3.拷贝必要的资源 3.1拷贝素材 3.2***导入输出文件***** 4.设置项目在桌面显示的图标 4.1找好图标素材&#xff0c;利用在线工具生成图标格式 4.2将图标放到桌面显示中来 5.最终生成打包 1.给vs…

鸿蒙ArkUI开发-实现增删Tab页签

场景介绍 部分应用在使用过程中需要自定义添加或删除标签的场景&#xff0c;比如在浏览器中的顶部标签栏中需要新打开或关闭网页页签&#xff0c;而这种场景与Tabs组件效果类似&#xff0c;但Tabs组件不提供增加或删除页签的功能&#xff0c;不能自由的增加删除页签&#xff0…

C语言实现希尔排序算法(附带源代码)

希尔排序 希尔排序&#xff0c;也称递减增量排序算法&#xff0c;是插入排序的一种更高效的改进版本。希尔排序是非稳定排序算法。 希尔排序是基于插入排序的以下两点性质而提出改进方法的&#xff1a; 插入排序在对几乎已经排好序的数据操作时&#xff0c;效率高&#xff0…

如何轻松实现一键转发微信好友的朋友圈文案?

随着朋友圈日渐流行&#xff0c;我们越来越希望能够快速方便地与朋友们分享我们的想法和感受。然而&#xff0c;每次都需要保存图片、复制粘贴文案&#xff0c;这无疑增加了我们的工作量和时间成本。 现在&#xff0c;我将和大家分享一款神奇的工具——微信管理系统&#xff0…

【C++中STL】map/multimap容器

map/multimap容器 map基本概念map构造和赋值map的大小和交换map插入和删除map的查找和统计 map排序 map基本概念 map中的所有元素都是pair对组&#xff0c;高效率&#xff0c;pair中的第一个元素为key&#xff08;键值&#xff09;&#xff0c;起到索引作用&#xff0c;第二个…

硬件基础:存储器

之前对存储器做过简单的汇总&#xff0c;参考这篇文章&#xff1a; 计算机/微机存储技术_路溪非溪的博客-CSDN博客 这次&#xff0c;我们从数字集成电路的角度再次补充学习一下存储器的知识。 定义和分类 从这里面我们能知道一些关键词。 存储介质主要是半导体器件和磁性材料。…

C语言指针进阶之一字符指针

目录 1.指针知识回顾 2.字符指针 2.1字符指针的一般使用 2.2字符指针的另外一种使用 1.指针知识回顾 ①.指针就是个变量&#xff0c;用来存放地址&#xff0c;地址唯一标识了一片空间。 内存会划分成一个个的内存单元&#xff0c;每个内存单元都有一个独立的编号&#xff0…

Vue深入学习3—数据响应式原理

1、数据响应式原理 1.1、MVVM是什么&#xff1f; 简单来说&#xff0c;就是数据变了&#xff0c;视图也会跟着变&#xff0c;首先你得定义一个带有{{ }}的模板Model&#xff0c;当数据中的值变化了&#xff0c;视图View就会跟着变化&#xff1b;视图模型View-model是模板Model和…