![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
几何
文章平均质量分 89
哈市雪花
图形几何、数据处理、并行计算相关研究和研发,公众号:geometrylib,欢迎交流
展开
-
DWG转PDF字体研究记录
最近需要对PDF中的符合业务规则的文字进行提取,发现有些文字不是文字信息形式存储,而是polyline形式表达,意味着仅仅有形体上的表达,丢失了原本的文字信息。经过沟通得知,这些PDF是AutoCAD软件导出的,拿到原始dwg文件进行了测试和研究。原创 2024-06-20 11:28:59 · 974 阅读 · 0 评论 -
将点作为C++ map容器key值时的踩坑记录
空间点具有X,Y,Z坐标等数据,一些情况下我们需要将点作为map容器的key值,比如识别重复点或处理轮廓等情况。原创 2024-05-31 18:55:06 · 350 阅读 · 0 评论 -
关于三维布尔运算的几点思考
三维布尔运算根据三维实体数据结构表达分为CSG布尔运算、Brep布尔运算、三角网格布尔运算等类型。这几种类型算法在不同情境下有不同的优势,根据情况进行选择。但这也不能作为随意选择方案的借口,在不分析实际情况下。CSG和BRep布尔运算能够保留原始几何拓扑信息,适用于各类设计编辑场景,如建模设计软件中。而三角网格布尔运算也是常见和常用的,由于一些因素,当前实体的表达方式就是三角面网格方式,也需要对这些实体进行编辑,这时候三角网格布尔运算是最佳选择方案。原创 2023-05-28 10:23:32 · 2464 阅读 · 0 评论 -
几何算法学习实践和应用(二维)
几何算法底层的原理很多是相通的,用到的也都是基础的工具函数,学习和积累非常重要。很多原理可由二维推广到三维,一些复杂三维算法可以分解为二维实现。原创 2023-03-13 23:34:53 · 1381 阅读 · 0 评论 -
几何算法学习实践(三维)
将个人几何算法学习和实践进行记录,方便自己和有需要的人。学习和实践相结合,建立小项目进行练手,该项目包含几何工具库与图形显示两部分。原创 2023-03-12 12:41:00 · 1860 阅读 · 2 评论 -
点合并算法的思考
1.写在前面去年因为某项目遇到模型卡顿问题,分析原因发现是模型中点没有进行合并,故而设计了点合并的技术方案,由于某些原因该方案未能实施,仅仅是方案,放在技术方案堆里,以一篇文档形式。平时的积累尤其重要,尝试更优,加之日积月累,会有比较大的进展和进步,技术如此,工作也一样。平时面试偶尔也会以该题目为背景问一下面试者,看看思路怎样,有想法还不错的,也有不知所措的...好了,闲扯到这里,开始吧。2.思路2.1.方案一ifcOpenShell是将点的hash作为key,建立map,map&l原创 2021-09-13 23:07:13 · 1404 阅读 · 0 评论 -
轮廓布尔运算原理及实现思路
轮廓布尔运算包括以下运算:反、交、并、差、异或。一、取反一个轮廓既可以代表实体也可以代表负实体,约定轮廓逆时针时为实体轮廓,顺时针时为负实体轮廓,轮廓取反即反转轮廓方向即可。实体轮廓轮廓取反二、轮廓交轮廓交三、轮廓并轮廓并四、轮廓差轮廓差五、轮廓异或两个多边形的异或是一个多边形,其内部区域为原来两个多变性差的并六、其中取反和交是两种...原创 2019-08-11 13:07:43 · 2027 阅读 · 0 评论 -
[缩放矩阵]缩放矩阵推导
已知p1(x1,y1,z1)、p0(x0,y0,z0),求p1点基于p0点的缩放矩阵,x、y、z方向缩放因子分别为sX,sY,sZ。p1基于原点缩放矩阵为,,而实际上是需要p1点基于p0点进行缩放,那么需要再将p0到原点一段坐标恢复过来,即,需要加偏移[(1-sX)*x0, (1-sY)*y0, (1-sZ)*z0],最后完整矩阵为:,此矩阵为矩阵乘列向量形式矩阵。...原创 2019-03-23 14:54:55 · 3307 阅读 · 2 评论 -
两种方法推导二维旋转矩阵
红色线标识单位向量Vector,Vector逆时针旋转θ得到蓝色线标识单位向量Vector',该过程旋转矩阵应如何推导。两种方法:1.数学推导,已知,Vector(x,y)= (cosα,sinα);Vector' (x',y')= (cos(α+θ),sin(α+θ)) =(cosα*cosθ-sinα*sinθ, sinα*cosθ+cosα*s...原创 2019-03-13 20:39:59 · 3947 阅读 · 1 评论 -
三维旋转矩阵推导
1.绕X轴旋转,分别求出Y、Z基向量绕X轴旋转θ后描述,X基向量不变为X'=(1,0,0),Y基向量绕X轴旋转θ后为Y'=(0,cosθ,sinθ),Z基向量绕X轴旋转θ后为Z'=(0,-sinθ,cosθ),若为矩阵乘列向量形式,矩阵为,1 0 00 cosθ -sinθ0 sinθ cosθ ,...原创 2019-03-15 00:13:33 · 1760 阅读 · 0 评论 -
[计算几何题目集锦]
其实也谈不上推荐,只是自己做过的题目而已,甚至有的题目尚未AC,让在挣扎中。之所以推荐计算几何题,是因为,本人感觉ACM各种算法中计算几何算是比较实际的算法,在很多领域有着重要的用途计算几何题的特点与做题要领:1.大部分不会很难,少部分题目思路很巧妙2.做计算几何题目,模板很重要,模板必须高度可靠。3.要注意代码的组织,因为计算几何的题目很容易上两百行代码,里面大部分是模板。如果代码一片混...转载 2019-03-09 21:06:56 · 365 阅读 · 0 评论 -
【向量运算】平面点集求连线斜率最大/最小的两个点
在博客中看到一个问题https://blog.csdn.net/lyapple2008/article/details/16928393,经思考后觉得可以用向量运算来解决。(1)任意一点与其余点连线得一系列向量lstVector1,该点与其他点都连过了,后续其他点不必与该点再连;(2)选取lstVector1中任一向量,求其余向量减去该向量所得一系列向量lstVector2...原创 2019-03-09 18:16:52 · 1420 阅读 · 0 评论 -
【分治法】求平面点集距离最近的两个点及其距离
问题:平面点集求其中距离最近的两个点及其距离。思路:采用分治法,将“求n个点之间最小距离”问题划分为很多个“求n/t个点之间最小距离”问题。(1)将lstPoint根据X坐标由小到大排序得到点集pointsSortedX,方法很多,冒泡、选择、插入、归并,快排等,本文采用快排,其优点就不多说了。(2)pointsSortedX为一个点集,可以采用二分法分为两个数量均分的点集points...原创 2019-03-09 17:22:19 · 11207 阅读 · 0 评论 -
求椭圆圆心到椭圆弧最近点和最近距离
前提知识:任意点P0与其到二次曲线y最近点(最远点)P1的连线必垂直于y在P1点处的切线。推论:这样椭圆心到椭圆距离有四个极值点,即椭圆长轴与椭圆两个交点(极大值点),椭圆短轴与椭圆两个交点(极小值点),而在极大值点与极小值点之间距离与参数角关系曲线Y是光滑的,这样当参数角位于极大值与极小值之间时,Y是单调递减的,同样在极小值与极大值之间,Y是单调递增的。一段椭圆弧可以表示为完...原创 2019-03-06 21:32:30 · 3818 阅读 · 0 评论 -
[凸包计算]求解点集合的凸包轮廓
前提:约定1----平面上两向量基于平面法向的夹角为[0-2π);约定2----下文中路径为有向的;约定3----下文中法向Normal由屏幕内指向屏幕外;当然上述约定并不是绝对的,只是为了表述原理方便,或者说化繁为简而设的条件,当然你可以约定Normal为指向屏幕内,这也是可以的,原理是不变的。根据右手定则,Vector1基于Normal与Vector2夹角如图1为锐角,...原创 2019-03-01 23:34:00 · 1779 阅读 · 0 评论 -
【离散椭圆弧】将椭圆弧按弧长等分为一定数量弧上点
由于椭圆弧长积分的解析解不存在,用数值分析方法近似求解。下面以第一象限椭圆弧为例说明一种近似求解方法,(1)首先圆是椭圆的特殊形式,长短轴长相等,对于圆心角为θ的圆弧长为R*θ,当圆心角足够小时可以认为tanθ≈θ,弧长可以认为L≈R*tanθ≈R*θ,其中明R为圆心到微段弧上点的距离,这个近似简化对于椭圆弧同样有效。(2)对于椭圆存在x=a*cosθy=b*s...原创 2019-02-24 23:11:37 · 7301 阅读 · 7 评论 -
椭圆弧参数角和扫略角之间的转化
椭圆参数方程:x=a*cosθy=b*sinθ那么怎样将θ与扫略角α之间互相转换呢?已知,tanα=y/x=(b*sinθ)/(a*cosθ)得tanα=b/a*tanθ;tanθ=a/b*tanα;需注意tan周期为PI,以上求得的值可能与真实值相差PI,这时只需判断象限是否一致来修正结果值,令t=PI/2.0;if((int)(α/t) != (...原创 2019-02-24 10:46:20 · 1121 阅读 · 1 评论