Open CASCADE学习|将双曲线转换为B样条曲线

圆锥曲线(Conic Section),又称圆锥截线,是二次曲线的一种,它是通过一个平面与一个双圆锥相交而生成的曲线。根据平面与圆锥的相交方式,圆锥曲线可以分为四种基本类型:椭圆、抛物线、双曲线和退化的圆锥曲线(包括点、直线和相交线)。

椭圆(Ellipse):

当平面与圆锥的侧面相交,且不穿过圆锥的顶点时,生成的曲线是椭圆。椭圆有两个焦点,所有点到这两个焦点的距离之和是一个常数,这个常数称为椭圆的长轴。

抛物线(Parabola):

当平面与圆锥的侧面相交,并且恰好穿过圆锥的一个顶点时,生成的曲线是抛物线。抛物线有一个焦点和一个直接rix(焦点到抛物线顶点的距离)。

双曲线(Hyperbola):

当平面与圆锥的侧面相交,并且与通过顶点的圆锥的生成线相交时,生成的曲线是双曲线。双曲线有两个焦点,所有点到这两个焦点的距离之差的绝对值是一个常数。

退化的圆锥曲线:

当平面与圆锥的相交方式导致曲线退化时,可以得到退化的圆锥曲线。这些退化情况包括:

点:当平面通过圆锥的顶点并与圆锥的生成线相交时。

直线:当平面与圆锥的侧面相交但不通过顶点,且与圆锥的生成线平行时。

相交线:当两个平面分别与圆锥相交,且这两个交线相交于一点时。

圆锥曲线在数学、物理和工程领域都有广泛的应用。例如,在天文学中,行星轨道可以近似为椭圆;在光学中,透镜和反射器的设计常常基于抛物线或双曲线的形状;在工程学中,桥梁和建筑物的结构设计也会用到圆锥曲线。

下面的代码实现将一个双曲线(Hyperbola)转换为B样条曲线(BSpline Curve),并打印出转换器的信息。

#define WNT
#include <gp_Hypr2d.hxx>
#include <Convert_HyperbolaToBSplineCurve.hxx>
void DumpConvertorInfo(const Convert_ConicToBSplineCurve& theConvertor)
{std::cout << "Degree: " << theConvertor.Degree() << std::endl;std::cout << "Poles/Weights: " << std::endl;for (Standard_Integer i = 1; i <= theConvertor.NbPoles(); ++i){const gp_Pnt2d& aPole = theConvertor.Pole(i);std::cout << i << ": " << aPole.X() << ", " << aPole.Y() << " w(" << theConvertor.Weight(i) << ")" << std::endl;}
​std::cout << "Knots: " << std::endl;for (Standard_Integer j = 1, m = 0; j <= theConvertor.NbKnots(); ++j){for (Standard_Integer k = 1; k <= theConvertor.Multiplicity(j); ++k){std::cout << ++m << ": " << theConvertor.Knot(j) << std::endl;}}std::cout << "==========================================" << std::endl;
}
​
void TestHyperbolaConvert(void)
{gp_Hypr2d aHyperbola;aHyperbola.SetMajorRadius(2.0);aHyperbola.SetMinorRadius(1.0);Convert_HyperbolaToBSplineCurve aConvertor(aHyperbola, 1.0, M_PI);std::cout << "Convert Hyperbola to BSpline Curve: " << std::endl;DumpConvertorInfo(aConvertor);
}
​
int main(int argc, char* argv[])
{TestHyperbolaConvert();return 0;
}
​

Convert Hyperbola to BSpline Curve:

Degree: 2

Poles/Weights:

1: 3.08616, 1.1752 w(1)

2: 4.94242, 2.39387 w(1.63022)

3: 23.1839, 11.5487 w(1)

Knots:

1: 1

2: 1

3: 1

4: 3.14159

5: 3.14159

6: 3.14159

==========================================

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

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

相关文章

redis -Set

一 &#xff0c;Set(集合)介绍 Redis的Set是string类型的无序集合。集合成员是唯一的&#xff0c;这就意味着集合中不能出现重复的数据。Redis 中 集合是通过哈希表实现的&#xff0c;所以添加&#xff0c;删除&#xff0c;查找的复杂度都是O(1)。集合中最大的成员数为 232 - 1…

【粉丝福利社】鸿蒙App开发全流程实战(文末送书-进行中)

&#x1f3c6; 作者简介&#xff0c;愚公搬代码 &#x1f3c6;《头衔》&#xff1a;华为云特约编辑&#xff0c;华为云云享专家&#xff0c;华为开发者专家&#xff0c;华为产品云测专家&#xff0c;CSDN博客专家&#xff0c;CSDN商业化专家&#xff0c;阿里云专家博主&#xf…

Redisson实现限流

1. 引入Redisson 参考: 这篇文章即可。 2. 使用RedissonClinet实现 代码如下&#xff1a; import org.redisson.api.RRateLimiter; import org.redisson.api.RateIntervalUnit; import org.redisson.api.RateType; import org.redisson.api.RedissonClient; import org.spri…

鸿蒙:滑动条组件Slider

滑动条组件&#xff0c;通常用于快速调节设置值&#xff0c;如音量调节、亮度调节等应用场景。 说明 该组件从API Version 7开始支持。 子组件 无 接口 Slider(options?: {value?: number, min?: number, max?: number, step?: number, style?: SliderStyle, direc…

书生 浦语大模型全链路开源体系

通用大模型成为发展通用人工智能的重要途径 书生 浦语大模型的开源历程 书生 浦语 2.0体系&#xff0c;面向不同的使用需求&#xff0c;每个规格包含三个模型版本&#xff0c;&#xff08;7B、20B&#xff09;InternLM2-Base、InternLM2、InternLM2-Chat。 大模型是回归语言建…

数据可视化-ECharts Html项目实战(9)

在之前的文章中&#xff0c;我们学习了如何在ECharts中编写气泡图&#xff0c;词云图。想了解的朋友可以查看这篇文章。同时&#xff0c;希望我的文章能帮助到你&#xff0c;如果觉得我的文章写的不错&#xff0c;请留下你宝贵的点赞&#xff0c;谢谢。 数据可视化-ECharts Ht…

鸿蒙OS开发问题:【尺寸适配算法】

背景 如何在HarmonyOS 系统上出设计稿&#xff1f; 问题1: 为什么要计算虚拟高度&#xff0c;即 virtualHeight static adaptDimension(value: number): number {let deviceDisplay: display.Display GlobalContext.getContext().getObject(display) as display.Display;le…

PEReDi 完全隐私的央行数字货币方案

第一个对完全隐私保护建模的方案&#xff0c;基于账户模型&#xff0c;要求交易双方都在线。 角色分类 中央银行 B B B&#xff1a;负责发行数字货币和货币政策&#xff0c;但不控制用户账户的状态&#xff0c;没有能力对交易的发送者或接收者进行去匿名化或披露与特定交易相…

瑞吉外卖实战学习--11、分类管理的列表分页查询

分类管理的列表分页查询 前言1、创建接口2、基于分页组件来实现的 前言 通过前端接口可以看到请求和传递的参数&#xff0c;本文章是基于mybatisPlus的分页插件来实现的 1、创建接口 GetMapping("/page")public R<Page> page(int page,int pageSize){ // …

halcon图像腐蚀

1、原理 使用结构元素在图像上移动&#xff0c;只有结构元素上的所有像素点都属于图像中时&#xff0c;才保留结构元素中心点所在的像素&#xff0c;常用于分离连接的两个物体、消除噪声。 2、halcon代码 dev_open_file_dialog (read_image, default, default, Selection) r…

C语言经典例题(12) --- 杨辉三角、井字棋、定闹钟、排电梯、欧几里得

文章目录 1.杨辉三角2.井字棋3.小乐乐定闹钟4.小乐乐排电梯5.小乐乐与欧几里得 1.杨辉三角 题目描述: KK知道什么叫杨辉三角之后对杨辉三角产生了浓厚的兴趣&#xff0c;他想知道杨辉三角的前n行&#xff0c;请编程帮他 解答。杨辉三角&#xff0c;本质上是二项式(ab)的n次方…

【Python刷题】将有序数组转换为二叉搜索树

问题描述 给你一个整数数组 nums &#xff0c;其中元素已经按 升序 排列&#xff0c;请你将其转换为一棵 平衡 二叉搜索树。 高度平衡的意思是&#xff1a;二叉树是一颗满足“每个结点的左右两个子树的高度差的绝对值不超过1”的二叉树。 示例 1&#xff1a; 输入&#xf…

Java学习33-Java 多线程Thread 多线程安全问题

Thread的生命周期 JDK1.5之前 JDK1.5之后分为 NEW RUNNABLE BLOCKED WAITING TIMED_WAITING TERMINATED 多线程安全问题 举例&#xff0c;要求三个窗口同时卖票&#xff0c;总共有100张票&#xff0c;打印出卖票过程&#xff0c;不允许重复售卖 package Thread;public class …

Codeforces Round 930 (Div. 2) C. Bitwise Operation Wizard

题目 思路&#xff1a; #include <bits/stdc.h> using namespace std; #define int long long #define pb push_back #define fi first #define se second #define lson p << 1 #define rson p << 1 | 1 const int maxn 1e6 5, inf 1e9, maxm 4e4 5; co…

linux:生产者消费者模型

个人主页 &#xff1a; 个人主页 个人专栏 &#xff1a; 《数据结构》 《C语言》《C》《Linux》 文章目录 前言一、生产者消费者模型二、基于阻塞队列的生产者消费者模型代码实现 总结 前言 本文是对于生产者消费者模型的知识总结 一、生产者消费者模型 生产者消费者模型就是…

OpenHarmony实战开发-如何实现购物示例应用

​介绍 本示例展示在进场时加载进场动画&#xff0c;整体使用Tabs容器设计应用框架&#xff0c;通过TabContent组件设置分页面&#xff0c;在子页面中绘制界面。通过Navigation完成页面之间的切换。在详情页中通过 Video组件加载视频资源&#xff0c;使用CustomDialogControll…

Python 代码混淆工具概述

在保护Python代码安全方面&#xff0c;有多种混淆工具可供选择&#xff0c;包括 Cython, Nuitka, Pyminifier 和 IPA guard。本文将介绍这些工具的特点和适用情况&#xff0c;以及在实际应用中的注意事项。 &#x1f4dd; 摘要 本文探讨了几种常见的 Python 代码混淆工具&am…

用Typora+picgo+cloudflare+Telegraph-image的免费,无需服务器,无限空间的图床搭建(避坑指南)

用TyporapicgocloudflareTelegraph-image的免费&#xff0c;无需服务器&#xff0c;无限空间的图床搭建&#xff08;避坑指南&#xff09; 前提&#xff1a;有github何cloudflare (没有的话注册也很快) 首先&#xff0c;是一个别人写的详细的配置流程&#xff0c;傻瓜式教程&am…

【微机原理实战笔记】浅入理解汇编源文件

记录在学习微机原理时候的知识点&#xff0c;以便温故而知新。 Rd&#xff1a;目的操作数的寄存器 Rn、Rm&#xff1a;代指源操作数的寄存器 #num&#xff1a;代指立即数 label&#xff1a;代指标号 浅入理解汇编源文件 汇编源文件代码结构文件类型堆栈对齐与指示编译器 输出、…

嵌入式网络硬件方案

一. 简介 本文来了解一下嵌入式有些网络中&#xff0c;涉及的网络硬件方案。 注意&#xff1a;本文说明的是有些网络。 提起网络&#xff0c;我们一般想到的硬件就是“网卡”&#xff0c;“网卡”这个概念最早从电脑领域传出来&#xff0c;顾名思义就是能上网的卡。在电脑领…