OpenCasCade数学库 - 点(gp_Pnt)
gp_Pnt描述了三维空间中的一个点。
gp_Pnt的定义:
class gp_Pnt
{
public:...
private:gp_XYZ coord;
};
默认情况下,位置为原点。
inline gp_Pnt::gp_Pnt() { }
两点的重心。计算公式为:(Alpha*this + Beta*P) / (Alpha + Beta)
inline void gp_Pnt::BaryCenter(const Standard_Real A,const gp_Pnt& P,const Standard_Real B)
{coord.SetLinearForm(A,coord,B,P.coord);coord.Divide(A + B);
}
两个点是否相等的判断:两点间距小于等于容差。
inline Standard_Boolean gp_Pnt::IsEqual(const gp_Pnt& Other,const Standard_Real LinearTolerance) const
{ return Distance (Other) <= LinearTolerance;
}
点关于点的对称变换。
void gp_Pnt::Mirror (const gp_Pnt& P)
{coord.Reverse ();gp_XYZ XYZ = P.coord;XYZ.Multiply (2.0);coord.Add (XYZ);
}
点关于轴的对称变换。
void gp_Pnt::Mirror (const gp_Ax1& A1)
{gp_Trsf T;T.SetMirror (A1);T.Transforms (coord);
}
点关于面的对称变换。
void gp_Pnt::Mirror (const gp_Ax2& A2)
{gp_Trsf T;T.SetMirror (A2);T.Transforms (coord);
}
旋转,A1是旋转轴,Ang是旋转角度。
inline void gp_Pnt::Rotate (const gp_Ax1& A1, const Standard_Real Ang)
{gp_Trsf T;T.SetRotation (A1, Ang);T.Transforms (coord);
}
缩放
inline void gp_Pnt::Scale (const gp_Pnt& P, const Standard_Real S)
{gp_XYZ XYZ = P.coord;XYZ.Multiply (1.0 - S);coord.Multiply (S);coord.Add (XYZ);
}
变换
void gp_Pnt::Transform (const gp_Trsf& T)
{if (T.Form() == gp_Identity) { }else if (T.Form() == gp_Translation) { coord.Add (T.TranslationPart ()); }else if (T.Form() == gp_Scale){coord.Multiply (T.ScaleFactor ());coord.Add (T.TranslationPart ());}else if(T.Form() == gp_PntMirror) {coord.Reverse ();coord.Add (T.TranslationPart ());}else { T.Transforms(coord);}
}
平移
inline void gp_Pnt::Translate (const gp_Vec& V)
{ coord.Add (V.XYZ());
}
OpenCasCade数学库 - 点(gp_Pnt)相关推荐
- OpenCasCade数学库 - 包围盒(Bnd_Box)的变换(Transformed)
1.包围盒(Bnd_Box)的定义 class Bnd_Box { public:... private:Standard_Real Xmin;Standard_Real Xmax;Standard_ ...
- OpenCasCade数学库 - 函数IsEqual
1.gp_Dir 方向的相等判断:方向相同.(方向夹角接近0度) inline Standard_Boolean gp_Dir::IsEqual(const gp_Dir& Other, co ...
- OpenCasCade数学库 - 方向(gp_Dir)
gp_Dir描述了三维空间中的一个单位向量. gp_Dir的定义. class gp_Dir { public:... private:gp_XYZ coord; }; 默认情况下,位置为原点,方向为 ...
- c++数学库 方法库 向量库等用法
c++数学库 http://www.cplusplus.com/reference/cmath/ C++ 有用库 https://en.cppreference.com/w/cpp/links/lib ...
- math-neon基于NEON指令的数学库
这是一个开源的库,地址为https://code.google.com/p/math-neon/,根据项目介绍应该是利用neon指令实现的数学库:包括三角.对数.指数等基于浮点的运算实现,以及矩阵运算 ...
- STM32 进阶教程 19 - IQmath数学库的使用
前言 STM32 M3 系列是不带浮点运算单元的,小数运算都是采用定点转浮点试式实现的,本节给大家介绍一个很好用的定点转浮点数学运算库,IQmath是德州仪器 (TI) 的一个高度优化的高精度数学函数 ...
- 计算机网络与影视多媒体技术 南京理工大学,计算机网络多媒体数学库和课件结构设计-计算机仿真论文-计算机论文(8页)-原创力文档...
计算机网络多媒体数学库和课件结构设计-计算机仿真论文-计算机论文 --文章均为WORD文档,下载后可直接编辑使用亦可打印-- 摘要:随着互联网时代的来临,计算机技术被广泛应用于各行各业.教育信息的改革 ...
- Lua_第17 章 数学库
第17 章 数学库 在这一章中(以下关于标准库的几章中相同)我的主要目的不是对每个函数给出完整地说明,而是告诉你标准库可以提供什么功能.为了可以清楚地说明问题,我可能 会忽略一些小的选项或者行为.基本 ...
- math.js:灵活强大的JavaScript数学库
最近为期权开发一些基本技术指标,用到一些C++的数学库,刚好看到JavaScript的math.js库,这里对math.js做一下简单介绍. 一.什么是math.js math.js是一个广泛应用于J ...
- gcc编译缺少数学库
Linux下编译出现以下提示可以在编译的后面加上-lm,例如,arm-none-linux-gnueabi-gcc -o example1 example1.c -lm,意思就是添加数学库的意思,编译 ...
最新文章
- 熟悉scala命令,scala语言运行超级素数和猴子大王
- 【Whalepaper】CV论文研读 - Involution内卷:超越Convolution的新算子
- 光流 | 基于HS光流算法的稠密光流提取(Matlab源代码)
- 【数据结构与算法】常用算法
- ECMAScript 语法提案的批准流程
- EXCEL教程下载地址
- C3P0连接池的配置和使用
- python做生物信息学分析_Python从零开始第五章生物信息学⑤生存分析(log-rank)
- cs6制作拼图游戏 dreamweaver_如何使用Dreamweaver cs6设计拼图游戏?
- 计算机毕业设计Java自行车在线租赁管理系统2021(源码+系统+mysql数据库+Lw文档)
- 解析12306订票流程
- 前端知识-vue-3、组件化开发
- 重视论文降重,应对论文查重
- [IPhone] 如何将制作图片放大缩小的动作
- 换钱计划调用函数c语言编程,CCF NOI1034 钞票兑换
- php计数器归零,php计数器lt;?/*-一个简单的计数器*/functio 爱问知识人
- VSCode 居然是个娱乐软件?让你 high 到爆的几款插件
- java 数组是连续存储吗_数组在Java中储存在()中_学小易找答案
- VBA打开已加密的Excel文件
- 格式: echo -e \033[字背景颜色 字体颜色m字符串\033[0m
热门文章
- for循环,数字类型与字符串
- Shell常用实例,查看IP,创建用户,安装应用等。
- 当http响应内容较长时 在Filter过滤器中设置响应头部失效的问题
- 文心一言API使用教程(python版)
- 数据分析终极一问:指标波动多大才算是异常?
- 教学中利用计算机软件,[在计算机AUTOCAD软件教学中利用任务驱动教学法的探讨] 任务驱动教学法...
- python3绘制股票K线图的那些坑【三】pyQtgraph绘制精美股票K线图--对数系正确实现集成Tushare数据源
- 教你3招 保护你的数字遗产
- Python 使用torch.autograd.grad实现对输入求导
- linux挂载超过2T的大磁盘