首页 > 编程语言 >opencascade Adaptor3d_CurveOnSurface源码学习

opencascade Adaptor3d_CurveOnSurface源码学习

时间:2024-09-20 21:03:03浏览次数:11  
标签:const 曲线 Standard 源码 EXPORT opencascade Adaptor3d OVERRIDE CurveOnSurface

opencascade Adaptor3d_CurveOnSurface

前言

用于连接由Geom包中表面上的曲线提供的服务,以及使用这条曲线的算法所要求的服务。该曲线被定义为一个二维曲线,来自Geom2d包,位于表面的参数空间中

方法

1

默认构造函数
Standard_EXPORT Adaptor3d_CurveOnSurface();

2

通过给定的表面句柄S构造
Standard_EXPORT Adaptor3d_CurveOnSurface(const Handle(Adaptor3d_Surface)& S);

3

通过给定的二维曲线句柄C和表面句柄S构造
从二维曲线和表面创建CurveOnSurface。
Standard_EXPORT Adaptor3d_CurveOnSurface(const Handle(Adaptor2d_Curve2d)& C, const Handle(Adaptor3d_Surface)& S);

4

适配器的浅拷贝
Standard_EXPORT virtual Handle(Adaptor3d_Curve) ShallowCopy() const Standard_OVERRIDE;

5

更改表面
Standard_EXPORT void Load(const Handle(Adaptor3d_Surface)& S);

6

更改二维曲线
Standard_EXPORT void Load(const Handle(Adaptor2d_Curve2d)& C);

7

同时加载曲线和表面
Standard_EXPORT void Load(const Handle(Adaptor2d_Curve2d)& C, const Handle(Adaptor3d_Surface)& S);

8

获取二维曲线的句柄(常量)
Standard_EXPORT const Handle(Adaptor2d_Curve2d)& GetCurve() const;

9

获取表面的句柄(常量)
Standard_EXPORT const Handle(Adaptor3d_Surface)& GetSurface() const;

10

获取二维曲线的句柄(非常量)
Standard_EXPORT Handle(Adaptor2d_Curve2d)& ChangeCurve();

11

获取表面的句柄(非常量)
Standard_EXPORT Handle(Adaptor3d_Surface)& ChangeSurface();

12

获取曲线的第一个参数
Standard_EXPORT Standard_Real FirstParameter() const Standard_OVERRIDE;

13

获取曲线的最后一个参数
Standard_EXPORT Standard_Real LastParameter() const Standard_OVERRIDE;

14

获取曲线的连续性类型
Standard_EXPORT GeomAbs_Shape Continuity() const Standard_OVERRIDE;

15

返回满足连续性的区间数量
Standard_EXPORT Standard_Integer NbIntervals(const GeomAbs_Shape S) const Standard_OVERRIDE;

16

将满足连续性的区间参数存储在
Standard_EXPORT void Intervals(TColStd_Array1OfReal& T, const GeomAbs_Shape S) const Standard_OVERRIDE;

17

返回在参数之间的曲线等效体,使用来测试3D点的混淆
Standard_EXPORT Handle(Adaptor3d_Curve) Trim(const Standard_Real First, const Standard_Real Last, const Standard_Real Tol) const Standard_OVERRIDE;

18

检查曲线是否闭合
Standard_EXPORT Standard_Boolean IsClosed() const Standard_OVERRIDE;

19

检查曲线是否周期性
Standard_EXPORT Standard_Boolean IsPeriodic() const Standard_OVERRIDE;

20

获取曲线的周期(如果周期性)
Standard_EXPORT Standard_Real Period() const Standard_OVERRIDE;

21

计算参数U在曲线上的点
Standard_EXPORT gp_Pnt Value(const Standard_Real U) const Standard_OVERRIDE;

22

计算参数U在曲线上的点(与D0相同)
Standard_EXPORT void D0(const Standard_Real U, gp_Pnt& P) const Standard_OVERRIDE;

23

计算参数U在曲线上的点及其一阶导数
Standard_EXPORT void D1(const Standard_Real U, gp_Pnt& P, gp_Vec& V) const Standard_OVERRIDE;

24

计算参数U在曲线上的点及其一阶和二阶导数
Standard_EXPORT void D2(const Standard_Real U, gp_Pnt& P, gp_Vec& V1, gp_Vec& V2) const Standard_OVERRIDE;

25

计算参数U在曲线上的点及其一阶、二阶和三阶导数
Standard_EXPORT void D3(const Standard_Real U, gp_Pnt& P, gp_Vec& V1, gp_Vec& V2, gp_Vec& V3) const Standard_OVERRIDE;

26

返回参数U处N阶导数的值
Standard_EXPORT gp_Vec DN(const Standard_Real U, const Standard_Integer N) const Standard_OVERRIDE;

27

返回与三维空间分辨率对应的参数分辨率
Standard_EXPORT Standard_Real Resolution(const Standard_Real R3d) const Standard_OVERRIDE;

28

返回当前区间内曲线的类型:直线、圆、椭圆、双曲线、抛物线、贝塞尔曲线、B样条曲线、其他曲线
Standard_EXPORT GeomAbs_CurveType GetType() const Standard_OVERRIDE;

用法示例

Adaptor3d_CurveOnSurface 是 OpenCascade 中的一个类,用于表示在曲面上的 3D 曲线。这个类通常用于表示 UV 曲线在曲面上的映射,并可以从中提取 3D 曲线的点、导数等信息。下面是一个简单的例子,展示如何使用 Adaptor3d_CurveOnSurface 来在曲面上定义和处理曲线。

例子:在一个平面上创建一个 UV 曲线并使用 Adaptor3d_CurveOnSurface

这个例子展示了如何在平面上定义一个 UV 曲线(例如,直线),并使用 Adaptor3d_CurveOnSurface 来获取曲线在 3D 空间中的点。

#include <Geom_Plane.hxx>
#include <Geom2d_Line.hxx>
#include <GeomAdaptor.hxx>
#include <Adaptor3d_CurveOnSurface.hxx>
#include <BRepBuilderAPI_MakeEdge.hxx>
#include <BRepBuilderAPI_MakeFace.hxx>
#include <BRepTools.hxx>
#include <TopoDS_Shape.hxx>
#include <TopoDS_Face.hxx>
#include <TopoDS_Edge.hxx>

int main() {
    // 创建一个平面
    gp_Pnt origin(0.0, 0.0, 0.0);
    gp_Dir normal(0.0, 0.0, 1.0);
    Handle(Geom_Plane) plane = new Geom_Plane(origin, normal);

    // 创建一个 UV 线(直线)
    gp_Pnt2d uvStart(0.0, 0.0);
    gp_Dir2d uvDir(1.0, 1.0);
    Handle(Geom2d_Line) uvLine = new Geom2d_Line(uvStart, uvDir);

    // 创建一个面(用平面创建)
    TopoDS_Face face = BRepBuilderAPI_MakeFace(plane, Precision::Confusion());

    // 使用 Adaptor3d_CurveOnSurface 定义曲线
    Adaptor3d_CurveOnSurface curveOnSurface(uvLine, face);

    // 获取曲线的 3D 点
    gp_Pnt point3D;
    Standard_Real parameter = 0.0;
    point3D = curveOnSurface.Value(parameter);

    // 输出 3D 点
    std::cout << "3D Point: (" << point3D.X() << ", " << point3D.Y() << ", " << point3D.Z() << ")" << std::endl;

    return 0;
}

代码解释:

  1. 创建平面:

    • 使用 Geom_Plane 创建一个平面,指定了原点和法向量。
  2. 创建 UV 曲线:

    • 使用 Geom2d_Line 创建一个 2D 线(即 UV 曲线)。在参数空间中,这条直线表示一个方向上的线性变化。
  3. 创建面:

    • 使用 BRepBuilderAPI_MakeFace 从平面创建一个面。
  4. 定义曲线:

    • 使用 Adaptor3d_CurveOnSurface 将 UV 曲线与面关联,定义了曲面上的 3D 曲线。
  5. 获取 3D 点:

    • 使用 Value 方法在指定的参数下获取曲线上的 3D 点。

参考
参考链接

标签:const,曲线,Standard,源码,EXPORT,opencascade,Adaptor3d,OVERRIDE,CurveOnSurface
From: https://www.cnblogs.com/yzxxty/p/18423054

相关文章

  • 调试、开发板、串口、Vitis、源码。
    ###调试和编译步骤1.**准备工作**:  -在开始调试之前,请确保开发板已通电,并且正确连接了开发板上的串口(USB-232)。查看串口号可以通过设备管理器进行确认。2.**编译项目**:  -右击项目,在弹出的菜单中选择编译选项来编译工程。3.**启动调试**:  -右击“he......
  • STM32F407单片机编程入门(九)低功耗模式实战含源码
    文章目录一.概要二.STM32单片机低功耗基本介绍三.STM32F407单片机待机模式介绍四.CubeMX配置一个待机低功耗例程五.CubeMX工程源代码下载六.小结一.概要在生活中通过关掉电器组件可以实现省电节能的目的,同样的道理单片机也可以通过这种方法实现降低功耗。单片机是由......
  • [附源码]图书借阅管理系统+SpringBoot+Vue前后端分离
    今天带来一款优秀的项目:图书借阅管理系统源码 。系统采用的流行的前后端分离结构,内含功能包括"系统权限角色",“登录,注册”,“图书管理”,“借阅管理”,“图书类别管理”,“系统账号管理”。如果您有任何问题,也请联系小编,小编是经验丰富的程序员!一.系统演示视频 https:......
  • opencascade Bnd_Range源码学习区间计算
    opencascadeBnd_Range前言这个类描述了由两个实数值限定的1D空间中的区间。一个区间可以是无效的,这表示区间中不包含任何点。方法1默认构造函数。创建一个无效区间。Bnd_Range();2构造函数。创建最小最大值区间Bnd_Range(constStandard_RealtheMin,constStandar......
  • 基于JSP客户关系管理系统的设计与实现的计算机毕设源码+论文
    摘要:本客户关系管理系统是使用JSP编程语言和SQLServer2000数据库共同来完成的,采用面向对象方法,对客户关系管理系统进行设计与实现。分析设计了客户关系管理系统的静态模型和动态模型,完成了系统开发的分析、设计和实现的工作。本客户关系管理系统通过Web方式完成用户与系统的交互,系......
  • 首码邀请码拉新注册锁码排单系统源码开发
    首码邀请码拉新注册锁码排单系统是一种用于管理用户邀请和注册的系统,通常应用于需要通过邀请机制来控制新用户增长的应用场景。这种系统可以帮助平台更好地管理用户增长速度、防止恶意注册,并确保每个邀请码的有效性和唯一性。以下是对这种系统的源码开发案例进行分析一、系统概述首......
  • 相亲交友系统源码 连接你我,不再孤单
     在这个数字时代,人们的生活方式已经发生了巨大的变化。随着工作压力增大和社会竞争激烈化,很多人发现自己很难有时间和机会去结识新的朋友,更不用说找到适合自己的伴侣了。相亲交友系统正是在这种背景下应运而生,它不仅简化了交友过程,更为单身人士提供了一个广阔的平台,让他们有机会遇......
  • 配送跑腿小程序源码大揭秘:快速部署你的服务平台
    在配送跑腿行业的快速发展中,开发一款专属的小程序可以为您的业务带来显著提升。如何借助现成的源码进行快速开发和部署,构建高效的配送服务平台?本文将为您揭秘配送跑腿小程序的源码结构,并通过代码示例,帮助您轻松实现功能部署和业务上线。一、源码开发的核心优势使用开源代码可以显著......
  • 上门安装维修服务预约平台源码开发
    预约上门安装维修系统接单平台是一种为用户提供便捷的上门服务解决方案的应用。这种系统通常用于家电维修、家具安装、家政服务等领域,通过线上预约、派单、跟踪等流程,提高服务效率和用户体验。开发编辑wcz9563以下是对该设计的详细解析以下是对该系统的开发案例解析和源码示例。一......
  • 链动2+1模式系统发源码之区域代理架构设计与功能解析
    链动2+1模式系统开发源码中的区域代理设计,主要围绕行政区划分的省、市、区代理机制进行构建,旨在通过这一机制促进线上线下的融合,提升区域市场的覆盖。以下是对该设计的详细解析一、区域代理的设立与获取方式1. 设立原则:区域代理分为省级代理、市级代理和区县代理,每个级别均基于行......