当前位置: 首页 > news >正文

Open CASCADE学习| ​提取曲面的PCurve

PCurve这个概念,字面上来理解就是参数曲线(Parametric Curve)。参数空间曲线是在参数曲面的双参数空间中的二维样条曲线。

二维曲线定义的目的只有一个:pCurve,参数曲线。OCC采用参数法构建几何结构,所有的三维曲线(面的边界)都对应于二维参数曲线pCurve。二维参数曲线pCurve上的二维点对应实际曲线上的三维点。如下代码,我们遍历一个Topo_Face的Edge,然后求得Edge对应的pCurve。并显示Face的二维参数面。

​
// OpenCascade library.
#define WNT
#include <TopoDS.hxx>
#include <TopExp.hxx>
#include <TopExp_Explorer.hxx>
#include <BRepPrimAPI_MakeSphere.hxx>
#include <BRepBuilderAPI_MakeWire.hxx>
#include <BRep_Tool.hxx>
#include <BRepBuilderAPI_MakeEdge2d.hxx>
​
#pragma comment(lib, "TKernel.lib")
#pragma comment(lib, "TKMath.lib")
#pragma comment(lib, "TKBRep.lib")
#pragma comment(lib, "TKTopAlgo.lib")
#pragma comment(lib, "TKPrim.lib")
​
​
int main(int argc, char* argv[])
{TopoDS_Face face = BRepPrimAPI_MakeSphere(1.0);TopExp_Explorer aWireExp(face, TopAbs_WIRE);for (aWireExp; aWireExp.More(); aWireExp.Next()) {//获取每条wireBRepBuilderAPI_MakeWire wire2d;TopoDS_Wire aTempWire = TopoDS::Wire(aWireExp.Current());//获取EdgeTopExp_Explorer aEdgeExp(aTempWire, TopAbs_EDGE);for (aEdgeExp; aEdgeExp.More(); aEdgeExp.Next()) {TopoDS_Edge aTempEdge = TopoDS::Edge(aEdgeExp.Current());
​//获取PCurveStandard_Real aPFirst, aPLast;Handle(Geom2d_Curve) aPCurve = BRep_Tool::CurveOnSurface(aTempEdge, face, aPFirst, aPLast);//获取此时PCurve的端点坐标,即UV值。gp_Pnt2d pStart, pEnd;aPCurve->D0(aPFirst, pStart);aPCurve->D0(aPLast, pEnd);std::cout << "\n";std::cout << "         起始点坐标:[" << pStart.X() << "," << pStart.Y() << "]\n";std::cout << "         终止点坐标:[" << pEnd.X() << "," << pEnd.Y() << "]\n";TopoDS_Edge aEdge2d = BRepBuilderAPI_MakeEdge2d(aPCurve, aPFirst, aPLast);wire2d.Add(aEdge2d);
​}}
​return 0;
}

  起始点坐标:[0,1.5708]

         终止点坐标:[6.28319,1.5708]

         起始点坐标:[6.28319,-1.5708]

         终止点坐标:[6.28319,1.5708]

         起始点坐标:[0,-1.5708]

         终止点坐标:[6.28319,-1.5708]

         起始点坐标:[0,-1.5708]

         终止点坐标:[0,1.5708]

相关文章:

Open CASCADE学习| ​提取曲面的PCurve

PCurve这个概念&#xff0c;字面上来理解就是参数曲线&#xff08;Parametric Curve&#xff09;。参数空间曲线是在参数曲面的双参数空间中的二维样条曲线。 二维曲线定义的目的只有一个&#xff1a;pCurve&#xff0c;参数曲线。OCC采用参数法构建几何结构&#xff0c;所有的…...

GMS测试BTSfail-CVE-2022-20451

描述&#xff1a; 项目需要过GMS兼容性测试&#xff0c;BTS这块我们环境没有&#xff0c;送检之后出现了一个BTS的Alert&#xff0c;这个是必须要解决的。下面的warning可以不考虑。 这个是patch问题&#xff0c;根据代理提供的pdf文件找到一个id:为A-235098883的补丁&#xf…...

Vue学习笔记12--Vue3之setup/ref函数/reactive函数/Vue3响应式原理/reactive对比ref

一、拉开序幕的setup 理解&#xff1a;Vue3中一个新的配置项&#xff0c;值为一个函数。setup是所有Composition API(组合API&#xff09;表演的舞台。组件中所用到的&#xff1a;数据、方法等&#xff0c;均要配置在setup中。setup函数的两种返回值&#xff1a; 若返回一个对…...

座位预约|座位预约小程序|基于微信小程序的图书馆自习室座位预约管理系统设计与实现(源码+数据库+文档)

座位预约小程序目录 目录 基于微信小程序的图书馆自习室座位预约管理系统设计与实现 一、前言 二、系统功能设计 三、系统实现 1、管理员服务端功能模块 2、学生微信端功能模块 四、数据库设计 1、实体ER图 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 …...

03 Redis之命令(基本命令+Key命令+String型Value命令与应用场景)

Redis 根据命令所操作对象的不同&#xff0c;可以分为三大类&#xff1a;对 Redis 进行基础性操作的命令&#xff0c;对 Key 的操作命令&#xff0c;对 Value 的操作命令。 3.1 Redis 基本命令 一些可选项对大小写敏感, 所以应尽量将redis的所有命令大写输入 首先通过 redis-…...

go语言函数进阶

1.变量作用域 全局变量 全局变量是定义在函数外部的变量&#xff0c;它在程序整个运行周期内都有效。 在函数中可以访问到全局变量。 package mainimport "fmt"//定义全局变量num var num int64 10func testGlobalVar() {fmt.Printf("num%d\n", num) /…...

Python编程技巧 – 函数参数

Python编程技巧 – 函数参数 Python Programming Skills - Functional Parameters 1. 函数的定义 函数有简明扼要的定义。 函数是一个代码块&#xff0c;仅在调用时运行。可以将数据&#xff08;称为参数&#xff09;传递到函数中。函数可以返回数据作为结果。 2. 函数的结…...

python222网站实战(SpringBoot+SpringSecurity+MybatisPlus+thymeleaf+layui)-帖子管理实现

锋哥原创的SpringbootLayui python222网站实战&#xff1a; python222网站实战课程视频教程&#xff08;SpringBootPython爬虫实战&#xff09; ( 火爆连载更新中... )_哔哩哔哩_bilibilipython222网站实战课程视频教程&#xff08;SpringBootPython爬虫实战&#xff09; ( 火…...

LabVIEW扫频阻抗测试系统

实现扫频阻抗法用于检测变压器绕组变形&#xff0c;结合了短路阻抗法和频响法的优点&#xff0c;但受限于硬件精度&#xff0c;尤其是50 Hz短路阻抗测试存在稳定性和准确性的问题。通过LabVIEW编程&#xff0c;控制宽频带信号发生器和高速采集卡&#xff0c;提高测试结果的稳定…...

C语言——指针进阶(四)

目录 一.前言 二.指针和数组笔试题解析 2.1 二维数组 2.2 指针笔试题 三.全部代码 四.结语 一.前言 本文我们将迎来指针的结尾&#xff0c;包含了二维数组与指针的试题解析。码字不易&#xff0c;希望大家多多支持我呀&#xff01;&#xff08;三连&#xff0b;关注&…...

Django介绍

一、介绍 Django是Python语言中的一个Web框架&#xff0c;Python语言中主流的web框架有Django、Tornado、Flask 等多种 优势&#xff1a;大而全&#xff0c;框架本身集成了ORM、模型绑定、模板引擎、缓存、Session等功能&#xff0c;是一个全能型框架&#xff0c;拥有自己的A…...

【idea】几个不错的idea插件让我码速又快了

目录 前言 Gradianto插件 jclasslib Bytecode viewer插件 Grep Console 插件 GenerateAllSetter 插件 GsonFormat 插件 JRebel and XRebel 插件 leetcode editor 插件 maven helper 插件 SequenceDiagram 插件 Statistic 插件 Translation 插件 前言 idea可以说是j…...

LabVIEW直流电机转速检测与控制

研究了使用LabVIEW软件和ELVIS实验平台来检测和控制直流电机的转速。通过集成光电传感器和霍尔传感器&#xff0c;实现了对电机转速的精确测量和调节。 系统组成&#xff1a;系统由NI ELVIS实验平台、光电传感器、霍尔传感器和直流电机组成。通过这些硬件元件&#xff0c;系统…...

༺༽༾ཊ—Unity之-05-抽象工厂模式—ཏ༿༼༻

首先创建一个项目&#xff0c; 在这个初始界面我们需要做一些准备工作&#xff0c; 建基础通用文件夹&#xff0c; 创建一个Plane 重置后 缩放100倍 加一个颜色&#xff0c; 任务&#xff1a;使用 抽象工厂模式 创建 人物与宠物 模型&#xff0c; 首先资源商店下载 人物与宠物…...

力扣面试题02.07-链表相交

链表相交 题目链接 解题思路&#xff1a; 题目可以确定如果相交&#xff0c;那么相交的部分一定是在链表的结尾部分第一步求得两条链表的长度第二步长度做差&#xff0c;将长的那条链表与短的那条链表后部分对其第三步遍历后面的部分&#xff0c;如果当前节点相等&#xff0c;…...

Java集合-ArrayList

集合就是一个保存数据的容器。在计算机中引入集合&#xff0c;是为了便于处理一组类似的数据。Java标准库自带的java.util包提供了集合相关的接口和实现类&#xff1a;Collection接口&#xff0c;它是除了Map接口外所有其他集合类的根接口。 Java的Java.uitl包主要提供以下三种…...

数据结构·单链表经典例题

1. 移除链表元素 OJ链接&#xff1a;力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 本题是说给出一个链表的头节点head和一个整数val&#xff0c;如果发现节点中存的数据有val就删掉它&#xff0c;最后返回修改后的链表头节点地址 如果题目中没有明确…...

Linux常用指令的整合

之前面试被问到了Linux相关的指令&#xff0c;所以我整理的一份常用的Linux指令列表&#xff0c;适用于大多数Linux发行版&#xff0c;现分享给大家&#xff1a; 文件操作 ls&#xff1a;列出目录内容。cd [目录]&#xff1a;更改当前目录。pwd&#xff1a;显示当前目录路径。m…...

阿里云centos安装mysql,并修改初始密码

阿里云centos安装mysql&#xff0c;并修改初始密码 安装数据库、修改初始密码、并测试建立自己的数据库步骤1&#xff1a;创建数据库和用户步骤2&#xff1a;配置Nginx1. 创建新的站点配置文件2. 编辑配置文件3. 保存并退出编辑器4. 测试配置文件是否正确5. 重新加载 Nginx 以应…...

【JavaScript基础入门】04 JavaScript基础语法(二)

JavaScript基础语法&#xff08;二&#xff09; 目录 JavaScript基础语法&#xff08;二&#xff09;变量变量是什么声明变量变量类型动态类型注释 数字与运算符数字类型算术运算符操作运算符比较运算符逻辑运算符运算符的优先级 变量 变量是什么 在计算机中&#xff0c;数据…...

One-API终极部署实战:从零构建企业级AI接口分发平台

One-API终极部署实战&#xff1a;从零构建企业级AI接口分发平台 【免费下载链接】one-api OpenAI 接口管理 & 分发系统&#xff0c;支持 Azure、Anthropic Claude、Google PaLM 2、智谱 ChatGLM、百度文心一言、讯飞星火认知、阿里通义千问以及 360 智脑&#xff0c;可用于…...

如何使用设计模式-误区

通过学习设计模式&#xff0c;可以使软件开发人员的面向对象分析和设计的能力得到很大的拓展和加强&#xff0c;即使编程人员还没有直接使用设计模式&#xff0c;只要真正用心理解了设计模式&#xff0c;那么软件开发人员的设计水平也将得到很大的提高。当然&#xff0c;学习设…...

告别硬件!用Proteus8.9和VSPD虚拟串口,5分钟搞定51单片机串口通信仿真

零成本玩转51单片机串口通信&#xff1a;Proteus与VSPD虚拟串口实战指南 记得刚接触单片机开发时&#xff0c;最头疼的就是硬件问题——买开发板要钱&#xff0c;买USB转串口模块要钱&#xff0c;连杜邦线都得精打细算。直到发现ProteusVSPD这对黄金组合&#xff0c;才明白原来…...

PyRadiomics环境配置全攻略:从依赖冲突到稳定运行的系统化解法

PyRadiomics环境配置全攻略&#xff1a;从依赖冲突到稳定运行的系统化解法 【免费下载链接】pyradiomics Open-source python package for the extraction of Radiomics features from 2D and 3D images and binary masks. Support: https://discourse.slicer.org/c/community/…...

Spring WebFlux + Reactivate-Feign实战:如何用响应式编程提升微服务性能

Spring WebFlux Reactivate-Feign实战&#xff1a;构建高性能响应式微服务架构 在当今高并发、低延迟的应用场景中&#xff0c;传统同步阻塞式的微服务调用方式逐渐暴露出性能瓶颈。当系统面临突发流量时&#xff0c;线程资源迅速耗尽&#xff0c;响应时间急剧上升&#xff0c…...

达梦数据库-归档日志文件-记录总结

达梦数据库-归档日志文件-记录总结DM数据库可以运行在归档模式或非归档模式下。如果是归档模式&#xff0c;联机日志文件中的内容保存到硬盘中&#xff0c;形成归档日志文件&#xff1b;如果是非归档模式&#xff0c;则不会形成归档日志。归档日志文件以归档时间命名&#xff0…...

Vue3 + Vite + SuperMap iClient3D 避坑指南:从零搭建三维GIS项目(附常见报错解决方案)

Vue3 Vite SuperMap iClient3D 三维GIS开发实战&#xff1a;从环境搭建到避坑指南 三维地理信息系统&#xff08;3D GIS&#xff09;开发正成为智慧城市、数字孪生等领域的核心技术栈。本文将带你从零开始&#xff0c;基于Vue3和Vite构建工具&#xff0c;整合SuperMap iClien…...

宝塔面板新手避坑指南:从服务器选购到LNMP环境一键部署全流程

宝塔面板新手避坑指南&#xff1a;从服务器选购到LNMP环境一键部署全流程 第一次接触服务器运维的新手&#xff0c;往往会被各种专业术语和复杂操作搞得晕头转向。作为过来人&#xff0c;我深知那种面对命令行时的无助感。宝塔面板的出现&#xff0c;确实让服务器管理变得简单了…...

LM2596 DC-DC开关电源芯片的实战应用与优化设计

1. LM2596芯片基础与工作原理 LM2596这颗DC-DC降压芯片可以说是电子工程师的老朋友了&#xff0c;从工业设备到消费电子产品都能见到它的身影。我第一次用它是在大学做智能车项目时&#xff0c;需要把12V电池电压降到5V给单片机供电。当时对比了几款芯片后选择了LM2596&#xf…...

基于LMS算法的16位SAR ADC中电容失配数字校正技术研究:Split ADC原理、MAT...

基于lms电容失配数字校正的16bit sar adc的split adc MATLAB可对比校正前后精度&#xff0c;原理基于国外论文&#xff0c;不支持。 适合进阶学习&#xff0c;想要对sar adc数字校正建模有了解的同学可以。SAR ADC设计里最头疼的就是电容失配问题。当工艺跑到16bit精度时&#…...