OpenCASCADE点向圆柱面投影

2023-10-07 08:40

本文主要是介绍OpenCASCADE点向圆柱面投影,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

OpenCASCADE点向圆柱面投影

eryar@163.com

 

OpenCASCADE的类Extrema_ExtPElS提供了点到基本曲面的投影计算功能,距离可能是最大值或是最小值。如下图所示的点到圆柱的投影会有两个投影点P1P2,则点到圆柱的距离的最小值是PP1的距离,最大值是PP2的距离。本文主要是对此类中点到圆柱的投影算法进行分析。

 

Extrema_ExtPElS类中计算点到圆柱的投影源码列出如下:

 

结合源码的注释可以看出点P到圆柱S的投影主要按有如下步骤:

l 计算点P到以圆柱S轴线为法线的平面的投影点Pp

l 若点P在轴线上,则计算失败返回;

l 计算点Pp在圆柱U方向的参数U1(角度);

l 将参数U1(角度)加180度得到参数U2

l 计算参数(U1V),(U2V)对应在圆柱面上的点;

上述实现主要也是使用向量的运算,所以程序简单且性能高。其中保存的距离是距离的平方值,这种方式主要考虑的是自带的开方函数性能,除非后面要用到距离才会自己去开方,这样也是提供性能的一种处理方式。

OpenCASCADE的向量类gp_Vec提供了一个函数AngleWithRef(),查看源码可知这个函数主要是计算两个向量之间的夹角,其中参数向量Ref是用来处理角度的正负。当两个向量叉乘的向量与参考向量Ref反向时,也会将得到的角度值取负。

下面通过一个简单的小程序来将计算结果在Draw Test Harness中可视化,这样可以直观地验证一下:

 

将生成的脚本文件加载到DRAW中得到如下图所示的结果:

 

从上图可以看出,投影得到的两个点P1P2的高度值与点P是相同的。

转载于:https://www.cnblogs.com/opencascade/p/Project_Point_Cylinder.html

这篇关于OpenCASCADE点向圆柱面投影的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/157250

相关文章

opencascade AIS_InteractiveContext源码学习5 immediate mode rendering 即时模式渲染

AIS_InteractiveContext 前言 交互上下文(Interactive Context)允许您在一个或多个视图器中管理交互对象的图形行为和选择。类方法使这一操作非常透明。需要记住的是,对于已经被交互上下文识别的交互对象,必须使用上下文方法进行修改。如果交互对象尚未加载到交互上下文中,您才能直接调用交互对象的方法。 每个可选择的对象必须指定负责整体选择对象的选择模式(全局选

box-shadow投影

格式 box-shadow: h-shadow v-shadow blur spread color inset; 比如 box-shadow:10px 10px  20px  5px  block;    //前两个值可以为负值,表示向上或向左 当需要四周阴影时,前两个值都设为0 0即可。

opencascade 判断两个TopoDS-Shape 是否相同

我们使用opencascade提取实体时,经常会出现实体重复,例如从正方体实体中提取Edge,我们会发现能提取出24个Edge,但正方体只有12条边,这是因为每条边有两个面,进行了重复提取。         如果我们想去掉重复的边,可以通过判断两条边是否相等实现(实际上不需要通过此方法),但是通过 == 运算符进行判断通常是无效的,即两条重合的边在运算符 == 下会被判定为否,那

opencascade AIS_InteractiveContext源码学习2

AIS_InteractiveContext 前言 交互上下文(Interactive Context)允许您在一个或多个视图器中管理交互对象的图形行为和选择。类方法使这一操作非常透明。需要记住的是,对于已经被交互上下文识别的交互对象,必须使用上下文方法进行修改。如果交互对象尚未加载到交互上下文中,您才能直接调用交互对象的方法。 每个可选择的对象必须指定负责整体选择对象的选择模式(全局选

opencascade AIS_InteractiveContext源码学习3 highlighting management 对象高亮管理

AIS_InteractiveContext 前言 交互上下文(Interactive Context)允许您在一个或多个视图器中管理交互对象的图形行为和选择。类方法使这一操作非常透明。需要记住的是,对于已经被交互上下文识别的交互对象,必须使用上下文方法进行修改。如果交互对象尚未加载到交互上下文中,您才能直接调用交互对象的方法。 每个可选择的对象必须指定负责整体选择对象的选择模式(全局选

opencascade AIS_InteractiveContext源码学习4 object local transformation management

AIS_InteractiveContext 前言 交互上下文(Interactive Context)允许您在一个或多个视图器中管理交互对象的图形行为和选择。类方法使这一操作非常透明。需要记住的是,对于已经被交互上下文识别的交互对象,必须使用上下文方法进行修改。如果交互对象尚未加载到交互上下文中,您才能直接调用交互对象的方法。 每个可选择的对象必须指定负责整体选择对象的选择模式(全局选

展览中的投影墙互动有哪些新玩法?

随着投影技术的飞速发展,它已经突破了传统场地、面积和形式的限制,为各类展示场景带来了前所未有的新颖投影形式。这些投影案例中,不乏一些在不规则墙面、独特物品外观上精彩呈现的典范。这些结合投影技术与互动技术的展示形式,不仅令观众眼前一亮,更为他们带来了更加生动、有趣且沉浸式的体验。今天,就让我们一起深入探索投影互动墙在展览展示中的几种令人惊艳的创意形式吧! 一、墙面互动投影游戏 墙面互动投影与

utm投影

一 概述      UTM (Universal Transverse Mercator)坐标系是由美国军方在1947提出的。虽然我们仍然将其看作与“高斯-克吕格”相似的坐标系统,但实际上UTM采用了网格的分带(或分块)。除在美国本土采用Clarke 1866椭球体以外,UTM在世界其他地方都采用WGS84。 UTM是由美国制定,因此起始分带并不在本初子午线,而是在180度,因而所有美国本土都处

Opencascade实体转VTK对象渲染测试

前面编译了基于QT5.12.7+VTK8.2的库,本次就根据这个VTK库实现VTK嵌入QT并将Opencascade实体对象在VTK中进行渲染。     一、vtk嵌入qt 通过查看VTK的开发文档发现,vtk嵌入qt可以通过将QWidget提升为QVTKOpenGLNativeWidget实现,在qtdesigner中事例如下: 本人定义了一个qtvtk窗口类,在构造函数中,

SQL-查询结果显示-投影、去重、重命名、排序

一、数据查询 1、数据查询是指根据用户需求从数据库中提取数据并将查询结果显示出来,SQL语言中的SELECT语句可以完成数据查询 2、完整的数据查询语句的格式: SELECT 【ALL|DISTINCT】<目标列表达式1>【,<目标列表达式2>,...】 FROM <表名或视图名1>【,<表名或视图名2>,...】 【WHERE <元组选择条件表达式>】 【GROUP BY <属性列名