OpenCASCADE构造一般曲面

eryar@163.com

Abstract. 本文主要介绍常见的曲面如一般柱面(拉伸曲面)、旋转面在OpenCASCADE中的构造方法,由此思考一般放样算法的实现。

Key Words. Common Surface, Extrusion, Revolution

1.Introduction

实体Solid就是由面组成,面中包含几何曲面,常见的几何曲面有平面,柱面,旋转面等。对几何曲面有一些功能要求:如计算指定参数u,v处的点,切线等,即求指定参数u,v处的0阶导数、1阶导数,N阶导数;获取参数空间等。

图1. 放样曲面

由类图可以看出,放样曲面Swept Surface有两种形式:Geom_SurfaceOfLinearExtrusion和Geom_SurfaceOfRevolution。一种是线性拉伸成形的曲面,一种是旋转成形的曲面。

图2. 拉伸曲面

如上图1所示,可以将一条曲线沿一方向拉伸一定的距离来构造曲面,被拉伸的曲线称为准线。

图3. 旋转曲面

如上图2所示,将一条曲线绕指定的轴线旋转一定的角度得到一个旋转面。

本文结合OpenCASCADE中源码来说明拉伸曲面及旋转曲面原理。

2.The Surface of Extrusion

OpenCASCADE中线性拉伸曲面的类名为:Geom_SurfaceOfLinearExtrusion,其参数方程如下:

其中参数u的定义域决定准线C(u)的参数范围;参数v的取值范围是无穷的。即拉伸曲面是一个很长的柱面,如果在参数v上不加限制的话。其中一些计算功能代码如下所示:

//! Shift the point along direction to the given distance (theShift)
void Shift(const Standard_Real theShift, gp_Pnt& thePoint) const
{
thePoint.ChangeCoord() += myDirection.XYZ() * theShift;
} void GeomEvaluator_SurfaceOfExtrusion::D0(
const Standard_Real theU, const Standard_Real theV,
gp_Pnt& theValue) const
{
if (!myBaseAdaptor.IsNull())
myBaseAdaptor->D0(theU, theValue);
else
myBaseCurve->D0(theU, theValue); Shift(theV, theValue);
}

从计算曲面上在指定参数u,v处的点的函数D0()可以看出,先根据参数u计算出准线上的点,再将点沿拉伸方向移动拉伸向量模的距离。

图4. 拉伸多边形

如上图4所示为将多边形准线沿着Z方向拉伸得到一个拉伸曲面。

3.The Surface of Revolution

OpenCASCADE中旋转曲面的类名为:Geom_SurfaceOfRevolution,其参数方程如下:

其中计算旋转曲面上对应参数u,v的点的代码如下:

void GeomEvaluator_SurfaceOfRevolution::D0(
const Standard_Real theU, const Standard_Real theV,
gp_Pnt& theValue) const
{
if (!myBaseAdaptor.IsNull())
myBaseAdaptor->D0(theV, theValue);
else
myBaseCurve->D0(theV, theValue); gp_Trsf aRotation;
aRotation.SetRotation(myRotAxis, theU);
theValue.Transform(aRotation);
}

根据代码可知,先根据参数v计算曲线上的点,再将点按指定的轴旋转变换。

图5. 旋转曲面

如上图5所示,将红色母线绕Y轴旋转90度得到的旋转曲面。线性拉伸曲面和旋转曲面都是特定条件下的放样曲面。拉伸曲面为沿直线放样得到的曲面,旋转曲面是沿圆放样得到的曲面。由此,可以思考一个问题,那就是如何将任意一个曲面沿任意路径来放样构造曲面呢?

图6. 放样曲面

OpenCASCADE构造一般曲面的更多相关文章

  1. OpenNURBS to OpenCASCADE

    OpenNURBS to OpenCASCADE eryar@163.com Abstract. The OpenNURBS initiative provides CAD/CAM/CAE and c ...

  2. OpenCASCADE Face Normals

    OpenCASCADE Face Normals eryar@163.com Abstract. 要显示一个逼真的三维模型,其顶点坐标.顶点法向.纹理坐标这三个信息必不可少.本文主要介绍如何在Open ...

  3. Geometry Surface of OpenCascade BRep

    Geometry Surface of OpenCascade BRep eryar@163.com 摘要Abstract:几何曲面是参数表示的曲面 ,在边界表示中其数据存在于BRep_TFace中, ...

  4. OpenCASCADE 参数曲线曲面面积

    OpenCASCADE 参数曲线曲面面积 eryar@163.com Abstract. 本文介绍了参数曲面的第一基本公式,并应用曲面的第一基本公式,结合OpenCASCADE中计算多重积分的类,对任 ...

  5. OpenCASCADE 参数曲面面积

    OpenCASCADE 参数曲面面积 eryar@163.com Abstract. 本文介绍了参数曲面的第一基本公式,并应用曲面的第一基本公式,结合OpenCASCADE中计算多重积分的类,对任意参 ...

  6. Surface Normal Averaging

    Surface Normal Averaging eryar@163.com 摘要Abstract:正确设置网格面上点的法向,对几何体在光照等情况下显示得更真实,这样就可以减少顶点数量,提高渲染速度. ...

  7. pro-engineer&UG

    Pro/Engineer操作软件是美国参数技术公司(PTC)旗下的CAD/CAM/CAE一体化的三维软件.Pro/Engineer软件以参数化著称,是参数化技术的最早应用者,在目前的三维造型软件领域中 ...

  8. CAD&CG GDC 2018大会论文录用名单

    Section 1 增强现实与图形学: 报告时间:2018-8-25 14:00-15:30 报告地点:会议室1 P000009 基于增强现实的产品质量信息传递方法 P000104 重彩画的风格转移 ...

  9. OpenCascade拓扑对象之:Face的方向、参数域和曲面间的关系

    @font-face { font-family: "Times New Roman" } @font-face { font-family: "宋体" } @ ...

随机推荐

  1. 使用JavaScript生成二维码教程-附qrcodejs中文文档

    使用javascript生成二维码 依赖jquery 需要使用到的库 https://github.com/davidshimjs/qrcodejs DIV <div id="qrco ...

  2. SQL1

    这是社团的题目,我现在就写出来吧,总共两种方法,一种手注,一种用工具(sqlmap). 一.手注(盲注) 1,我们打开题目,可以看到一个登陆页面,这是我们在输入框里面输入万能密码:  ' and '1 ...

  3. ligerUI---下拉菜单(menubar)动态显示(从后台获取数据)

    写在前面: ligerui的下拉菜单是有点丑的,这也是没有办法的事........这里主要记录下,如何从后台获取数据进行菜单显示. 有两种方式:1.使用json数组来动态添加  2.字符串拼接.  其 ...

  4. kafka 集群搭建

    环境:ubuntu14.04 版本:jdk1.8,zookeeper 3.4.10,kafka 2.11 搭建步骤: 1. 搭建zookeeper集群 参考链接:zookeeper集群搭建 2. 下载 ...

  5. lua table操作实例详解

    lua_gettable lua_getglobal(L, "mytable") <== push mytable lua_pushnumber(L, 1)        & ...

  6. 使用Angular Router导航基础

    名称 简介 Routes 路由配置,保存着那个URL对应着哪个组件,以及在哪个RouterOulet中展示组件. RouterOutlet 在HTML中标记路由内容呈现位置的占位符指令. Router ...

  7. C#学习笔记---数据库连接与异常

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.D ...

  8. 拓扑排序&关键路径

    拓扑排序:AOV网 概念 example:选课问题:AOV网 顶点活动(Activity On Vertex)网是指用顶点表示活动,而用边集表示活动关系的有向图. 在这个例子中,课程为结点,而有向边表 ...

  9. [flask/python/web] 解析flask web开发(Miguel著)一书第11章主页不显示博文表单的问题

    ---------------------------------------------以下内容2017.7.14更新---------------------------------------- ...

  10. js 获取每月有几周,根据年月周获取该周从周一到周日的日期等方法

    本文基于react-native 本人在用react-native写一个关于课程表的APP时需要课程表按照日期周期显示,网上查了许多方法,都没有达到自己想要的效果,根据一些方法的参考,再根据自己思维写 ...