
图形学
文章平均质量分 82
哈市雪花
图形几何、数据处理、并行计算相关研究和研发,公众号:geometrylib,欢迎交流
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
平面与平面相交算法杂谈
空间平面方程:空间两平面如果不平行,那么一定相交于一条空间直线,空间平面求交有多种方法,本文进行相关讨论。原创 2025-02-13 19:21:55 · 1193 阅读 · 0 评论 -
关于精度话题的杂谈
浮点值的存储、运算都可能会带来精度损失,了解精度损失背后的机制原因方便我们更好的了解什么情况下会发生精度损失、什么情况下精度损失较大,以及思考怎么避免或减少精度损失。原创 2025-02-09 17:50:18 · 789 阅读 · 0 评论 -
点(线)集最小包围外轮廓效果赏析
作者基于递归迭代求解实现点集的最小外轮廓计算,在CGLib库中实现,已集成于CGViewer,可联系作者试用,欢迎提出宝贵意见。下图为CGViewer中绘制、计算和显示效果,原创 2025-02-06 21:35:30 · 512 阅读 · 0 评论 -
两种精度较高的三点定圆算法
化繁为简,追求数学公式简洁之美往往能保持较高得计算精度。上述算法实现已集成进博主开发得CGLib库中,效果请参考微信公众号,欢迎关注交流。瞅瞅迷你CAD可以长什么样?开发一款迷你CAD专注于图形几何、数据处理、并行计算技术,欢迎交流。原创 2025-01-24 20:00:00 · 633 阅读 · 0 评论 -
QT中使用OpenGL function
QT做界面编程很方便,QT+OpenGL的使用也很方便,因为QT对原生的OpenGL API进行了面向对象化的封装。有些时候我们需要使用原生的OpenGL API,这在QT中也很方便,该怎么做呢?原创 2024-12-29 19:56:29 · 674 阅读 · 0 评论 -
CGAL配置和编译记录
CGAL开源库值得学习和研究,在配置编译CGAL过程中遇到了若干坑,记录一下,方便自己和需要的人。原创 2024-12-20 20:30:00 · 1247 阅读 · 0 评论 -
图形几何之美系列:线段集合中提取轮廓
以前用过相关的库,忘记名字了,记得是构造了TopoPolygonTree,可以获取最大外轮廓,以及构成该最大外轮廓的其他轮廓,而内部轮廓是以树的形式表示,每个树节点是一个轮廓,树节点的深度(node.deep % 2 == 0?outer : inner)代表其是外轮廓还是内轮廓。重新研究实现,进行代码的测试和问题修改,简单记录如下。原创 2024-12-18 18:19:19 · 989 阅读 · 0 评论 -
网格剖分算法 & 铺装填充算法效果
原图--》提取轮廓线--》计算最小外包轮廓--》网格剖分--》铺装填充。奇奇怪怪的图形几何算法,欢迎交流。原创 2024-12-17 17:52:29 · 420 阅读 · 0 评论 -
图形几何之美系列:铺装算法效果赏析
调整tile的尺寸和铺装范围,像更加精美的艺术图案,可以作为logo或图标,赋予了艺术和数学之美~图案变得更具艺术感~电视机?一切皆可铺装,像纹理填充一样。嘿嘿,不咋炫酷的轮廓,也变得更加艺术,色彩之美跃然于眼眸~狗子像穿了一件精心织就而成的纹理衣饰,变得抽象起来~轮廓铺装:地板铺装、墙砖铺砖、吊顶铺装、图案填充。可以用铺装算法,使得设计和艺术变得更有创造力。你知道怎么设置地砖排布吗?有一块布料,怎么填充好看的纹理?原创 2024-12-14 21:43:52 · 261 阅读 · 0 评论 -
项目使用bullet库编译时遇到Error LNK2001的解决方案
bullet库作为物理引擎提供很强大的功能,其目标是游戏场景的物理分析,包括碰撞、动力等方面,具有广泛的应用。参考上述步骤执行,目的是编译bullet库、编译项目时该宏的定义保持一致,因为btScalar会被bullet导出接口的变量使用,如btVector3、btVector4等,避免项目对该变量的理解和bullet编译时赋予的意义不一致。原创 2024-12-02 19:31:21 · 742 阅读 · 0 评论 -
图像处理 之 凸包和最小外围轮廓生成
最小包围轮廓之美一起来欣赏图形之美~原创 2024-11-18 23:13:08 · 509 阅读 · 0 评论 -
图形几何之美系列:二维凸包艺术赏析
凸包话题包括二维凸包、三维凸包以及高维凸包。对于平面点集,探究如何构造可以覆盖给定点集最小的凸多边形;对于三维空间点集,探究如何构造可以覆盖点集的最小凸实体;凸包的计算和应用还可以扩展到高维空间,用于解决更复杂的几何问题。作者实现的完整实现了二三维凸包算法,相关技术文章和参考作者优快云博文,本文仅对二维凸包效果进展展示和赏析,和大家一起领略图形几何之美~提示:作者优快云博文1. [凸包计算]求解点集合的凸包轮廓2. 几何算法系列-三维凸包。原创 2024-11-16 21:17:55 · 778 阅读 · 0 评论 -
图形几何之美系列:法向量计算之轮廓有向面积辅助法
有多种方法可计算轮廓的法向量,如根据轮廓类型进行法向量的计算、轮廓有向面积辅助法、Newell向量法等。如上文多边形轮廓面积计算中的内容所述,轮廓的法向量和面积密切相关,我们常说的法向量为单位法向量,而模长等于面积的法向量是多边形轮廓多维度的几何和物理属性,更能表达轮廓的几何特征。图:轮廓法向量需要注意的是由于浮点数存储和运算的精度损失,可能造成求轮廓法向的精度损失,如角点由于精度损失并非精确的在一个平面上(而是在容差范围内属于一个平面)、角点距离很近导致可能进一步影响法向计算的精度等。原创 2024-11-15 21:45:00 · 1032 阅读 · 0 评论 -
图形几何之美系列:面积计算之梯形投影求和
一种常用的是微积分思路的分段求和办法是将组成轮廓的每条线段与X轴或Y轴进行有向投影,轮廓边线与X轴或Y轴的投影之和即为轮廓的有向面积。原创 2024-11-12 23:07:14 · 973 阅读 · 0 评论 -
图形几何之美系列:仿射变换矩阵之Y-Up和Z-Up
所有的3D工具都包含一个具有X、Y和Z轴的三维环境。在这些工具中,X轴方向是相同的,即在前视图是从左到右的水平线。然而, 不同的 3D 工具可能对Y轴和Z轴的朝向有不同的解释。一些3D工具是Y-Up的, 即Y轴是竖直方向的;而其他的3D工具是Z-Up的, 即Z轴是竖直方向的。原创 2024-11-11 21:34:31 · 514 阅读 · 0 评论 -
图形几何之美系列:仿射变换矩阵之先转后偏
如果一次仿射变换中存在多种类型的姿态变换,需要先进行矩阵左上角的3X3部分(缩放、旋转、镜像、非均匀变换)的构造处理,最后再叠加偏移。这是我们从一些书籍或老司机口中得知的重要经验,大白话就是“先转后偏”,那么为什么要这样呢?先偏后转不行吗?还是先转后偏有其不可忽略的独门绝技?如果先偏移,则需要基于偏移值的坐标点进行矩阵左上角3X3部分的构造,这将变得复杂的多,这对于大多数人来说不可接受,毕竟我们很多时候要做的是化繁为简,同时提高精度。下面我们对比下先转后偏和先偏后转的特点和区别。原创 2024-11-11 21:29:00 · 1315 阅读 · 0 评论 -
图形几何之美系列:仿射变换矩阵(二)
在几何计算、图形渲染、动画、游戏开发等领域,常需要进行元素的平移、旋转、缩放等操作,一种广泛应用且简便的方法是使用仿射变换进行处理。相关的概念还有欧拉角、四元数等,四元数在图形学中主要用于解决旋转问题,特别是在三维空间中绕任意轴的旋转,且四元数与仿射变换可以相互转换。。本篇我们继续进行探索,包括等内容。原创 2024-11-10 17:03:15 · 1182 阅读 · 0 评论 -
图形几何之美系列:仿射变换矩阵
仿射变换是一种结合了线性变换和平移的变换,不仅包括旋转、缩放等线性变换,还包括平移操作。变换前是直线的,变换后依然是直线;直线比例保持不变。仿射变换可以用形如下图的4x4矩阵表示,即仿射变换矩阵。图:4x4矩阵注意如果没有特殊说明,本文所述仿射变换矩阵皆为矩阵乘列向量/点方式的,即把向量和点作为4x1矩阵参与运算,如下图所示。原创 2024-11-09 14:03:20 · 1463 阅读 · 0 评论 -
小记-如何快速调整图片的分辨率
首先我们先明确一些概念,避免被网上形形色色的软件和所谓的“经验教程”所迷惑,有好的经验,但很多时候更多的是质量差的经验,甚至是广告,文章都是抄,抄的还不对,迷惑了广大网友。像素(Pixel): 图像显示的基本单位,是用来计算数码影像的一种单位。Pix是picture的简写,加上“元素”element,就得到pixel,故“像素”表示“图像元素”之意,有时亦被称为pel(picture element)。像素也是是专用于屏幕的概念,指的是屏幕可以解析的最小的点。原创 2024-11-08 21:37:50 · 997 阅读 · 0 评论 -
图形几何之美系列:三维实体结构表达
实体结构的表达由多种方式,如分解表示、构造表示**CSG**(Constructive Solid Geometry)、边界表示**BRep**(Boundary Representation)、网格表示等。常见的分解表示法有四叉树、八叉树、BSP树等方式。CSG方式出现较早,后来出现了BRep普及比较快,现在大部分领先的几何内核(ACIS、PS、OCC等)采用BRep方式,有关两者的优缺点和适用场景比较的讨论已有很多,本文不再赘述。原创 2024-11-07 20:30:00 · 1072 阅读 · 0 评论 -
几何算法系列:空间实体体积计算公式推导
面积和体积的计算是常见和基础的几何算法话题,面积和体积通常作为面或构件的基本信息参与相关的建模、计算、分析等过程。有关面积的计算,可以参考博主此前的文章,一种误差较小的轮廓面积计算算法_轮廓面积计算原理-优快云博客基于微分思想的轮廓面积计算方法之一是将多边形轮廓边与X轴会Y轴进行围合,形成一个个梯形,每个梯形的面积有符号,累计求和即得到多边形轮廓的面积。详见博主之前的文章,记录导致计算轮廓面积出错的一个坑点-优快云博客计算轮廓面积是常见的几何算法话题,获取轮廓面积、计算轮廓法线等场景会涉及到。原创 2024-10-23 19:02:45 · 1165 阅读 · 0 评论 -
几何算法系列-三维凸包
凸包是基础几何算法工具函数,一些场景需要计算并显示凸包,或使用凸包以加速计算。计算三维凸包有多种方法,如增量构建、分治法等,博主采用增量构建方法计算凸包。有关二维凸包的计算请参考博主此前文章(已经是5年多以前的文章了,时光荏苒......)原创 2024-10-22 18:20:09 · 1618 阅读 · 0 评论 -
网格剖分-耳切法效果展示
将简单多边形转换成一组由同样顶点组成的三角形集合是计算机图形学中的一个经典问题。问题中,简单多边形是指由一组有序顶点组成的,点V0~点Vn-1。相邻的顶点之间通过边(Vi,Vi-1)连接,并且边(Vn-1,V0)连接起始点。每个顶点被两条边所共享,而边的所有交点都是顶点。将一个简单多边分解成三角形集合的方法称之为多边形的三角形化(triangulation of thePolygon)。几何学的知识告诉我们,由n个顶点组成的简单多边形总是可以分解成n-2个三角形。原创 2024-10-09 19:28:54 · 1410 阅读 · 0 评论 -
关于三维布尔运算的思考(2)
可以根据实际场景进行布尔运算方式的选择,需要考虑效果、效率、适应性、技术难度、几何数据表达方式等因素。当然也可以直接采用已有的几何内核,专注于应用开发,将应用做好做广,也是一种很好的选择。原创 2024-09-28 12:53:26 · 710 阅读 · 0 评论 -
一种误差较小的计算轮廓法向的方法
单纯的选取任意两个相邻边来计算法向可能是错误的,因为存在凹角的情况,这时得到的“法向”与正确的法向是方向相反的。而进一步通过轮廓面积计算来得到法向的符号貌似是一种比较准确的补偿方法,是的,很有效,但是上述选取任意相邻边计算的法向可能精度损失较大,如相邻边的3个点偏离平面较大、相邻3个点存在距离很近的情况等导致法向精度损失较大。原创 2024-09-27 19:17:56 · 690 阅读 · 0 评论 -
利用WPF绘制轮廓并保存为图片
WPF作为显示工具也挺好用,用C#开发应用软件会比较省力,当然也有其缺点,如在对效率要求较高的情况下有性能问题,本文记录用WPF绘制轮廓并保存为图片相关内容。显示效果也还不错,满足调试使用了,原创 2024-09-18 18:52:15 · 567 阅读 · 0 评论 -
从线段中搜寻提取闭合轮廓(三)
做底层和数据的调试问题也是个麻烦事,如果没有方便的可视化工具辅助,那将令人感到痛苦,借助可视化的工具可以让我们高效、省心,进而心情舒畅,重要的是可以提高调试效率。当然可视化工具也分不同层次的,大致分为手动操作为主的、自动为主的两种,手动操作为主的也要区分工具准确性、易用性,如果碰到难用的也是经常令人心情烦躁,甚至破口大骂;而易用性较好的会比较省心,但由于其手动操作为主的特点,需要耗时耗力,也难以心情很舒畅。(中间吐槽省略......)原创 2024-09-11 17:43:14 · 720 阅读 · 0 评论 -
三维布尔运算对不规范几何数据的兼容处理
上一篇文章谈过八叉树布尔运算,对于规范几何数据的情况是没有问题的。在实际情况中,由于几何数据来源不一,处理和生成方式不一,我们无法保证进行布尔运算的几何数据都是规范的,对于不规范情况有时候也有需求,这就需要兼容不规范数据情况,当然这种兼容不是一味的让步,而是对于存在有限的不规范数据的兼容处理。原创 2024-09-07 22:26:13 · 628 阅读 · 0 评论 -
八叉树CSG布尔运算
三角网格布尔运算有多种理论支撑实现,比如BSP网格布尔运算方法、八叉树网格布尔运算等,同样,不同的方法有其特点及适用范围。BSP网格布尔运算依赖于较为严格的实体规范表达,即参与运算的几何实体需要是闭合的、规整的,如果出现不闭合的几何实体,运算可能出错,比如对一颗网格化表达的树进行布尔就会出错,得到意想不到的造型效果。如果实体内部由有其他元素时也会出现上述问题,比如大坝内部有其他多种围挡等建造元素时。八叉树布尔运算适用性较好,缘于其较好的鲁棒性——对于不规整几何体的兼容处理能力。原创 2024-09-07 22:03:20 · 1034 阅读 · 0 评论 -
记录导致计算轮廓面积出错的一个坑点
计算轮廓面积是常见的几何算法话题,获取轮廓面积、计算轮廓法线等场景会涉及到。计算轮廓面积的方法有很多,一种常用的是微积分思路的分段求和办法,即组成轮廓的每条线段与X轴或Y轴进行有向投影,轮廓边线与X轴或Y轴的投影之和即为轮廓的有向面积。其中第0、1、6的投影为正,第2、3、4、5的投影为负,累积即为轮廓面积(绿色填充部分)。如上所示,如果关心面积的正负时,一般将轮廓移到第一或第四象限再求面积。满足上述条件时,逆时针轮廓的面积为正,顺时针轮廓的面积为负。原创 2024-08-01 18:33:16 · 647 阅读 · 0 评论 -
关于三维布尔运算的几点思考
三维布尔运算根据三维实体数据结构表达分为CSG布尔运算、Brep布尔运算、三角网格布尔运算等类型。这几种类型算法在不同情境下有不同的优势,根据情况进行选择。但这也不能作为随意选择方案的借口,在不分析实际情况下。CSG和BRep布尔运算能够保留原始几何拓扑信息,适用于各类设计编辑场景,如建模设计软件中。而三角网格布尔运算也是常见和常用的,由于一些因素,当前实体的表达方式就是三角面网格方式,也需要对这些实体进行编辑,这时候三角网格布尔运算是最佳选择方案。原创 2023-05-28 10:23:32 · 3037 阅读 · 0 评论 -
我的创作纪念日-哈市雪花
文章总是有意义的,是分享传播知识,也是记录自己技术成长的点滴,帮助别人,也方便自己原创 2023-04-12 18:43:33 · 1539 阅读 · 0 评论 -
几何算法学习实践和应用(二维)
几何算法底层的原理很多是相通的,用到的也都是基础的工具函数,学习和积累非常重要。很多原理可由二维推广到三维,一些复杂三维算法可以分解为二维实现。原创 2023-03-13 23:34:53 · 1682 阅读 · 0 评论 -
几何算法学习实践(三维)
将个人几何算法学习和实践进行记录,方便自己和有需要的人。学习和实践相结合,建立小项目进行练手,该项目包含几何工具库与图形显示两部分。原创 2023-03-12 12:41:00 · 2393 阅读 · 2 评论 -
点合并算法的思考
1.写在前面去年因为某项目遇到模型卡顿问题,分析原因发现是模型中点没有进行合并,故而设计了点合并的技术方案,由于某些原因该方案未能实施,仅仅是方案,放在技术方案堆里,以一篇文档形式。平时的积累尤其重要,尝试更优,加之日积月累,会有比较大的进展和进步,技术如此,工作也一样。平时面试偶尔也会以该题目为背景问一下面试者,看看思路怎样,有想法还不错的,也有不知所措的...好了,闲扯到这里,开始吧。2.思路2.1.方案一ifcOpenShell是将点的hash作为key,建立map,map&l原创 2021-09-13 23:07:13 · 1601 阅读 · 0 评论 -
矩阵求逆的简单记录
写在前面话说第一次完整的编写矩阵求逆函数是在写结构力学求解器时候,那时候用的是初等变换法,效率较低,不过那时候还没顾得上效率,求解器没有开发完整,记得只支持连续跨简支梁求弯矩(不记得这个术语还准确不...),好吧,是时候引出正文了。4X4转换矩阵求逆方法求逆矩阵方法很多,效率不一,而研究矩阵数据结构的设计就可以是一个领域了,怎么样占用内存小?怎么样运算效率高,当然本文不涉及这些的研究,有兴趣可以自行搜索学习这方面知识。https://zhuanlan.zhihu.com/p/500.原创 2021-07-22 23:19:22 · 2262 阅读 · 1 评论 -
微软glTF-SDK代码示例及源码研究
上一篇:GLtf读写库的初步研究1.glTF-SDK现状及问题1、接口使用较为方便;有简单示例;2、研究源码及示例,仅支持连续的addAccessor(),即连续的add绑定同一bufferView的Accessors,比如很多个mesh,(1)只能统一获取所有的indices(positions、uvs)再连续的addAccessories,绑定到一个indices的bufferView上;然后再绑定positions的,其次再绑定uvs...,这样流程不太 方便,占内存较大;(2)对于每原创 2021-03-11 23:10:12 · 2541 阅读 · 3 评论 -
GLtf读写库的初步研究
1.背景最近需要写gltf,预研了下相关的库,不得不说还是比较多的,毕竟GLtf的目标:“3D领域的JPEG”已经被行业比较广泛的接受和参与建设了;2.简要总结1、 KhronosGroup/glTF-CSharp-Loaderhttps://github.com/KhronosGroup/glTF-CSharp-Loader备注:竟然是根据gltf specification schema文件生成代码....和我们的XX需求场景一样2、微软的glTF-SDKhttps://githu原创 2021-02-21 23:03:54 · 1765 阅读 · 1 评论 -
3dTile技术研究-小结
上篇:3dTile技术研究-概念详述(10)Instanced 3D Model1.背景又看了一遍cesium的3D Tiles格式规范,看的过程中简单记录知识点,进行简单总结。由于总结记录的是“只言片语”,详细内容还请参考博主关于3dTiles的文章。如需要看详细的文章,请参考博主的3dTiles系列文章(文章末尾有链接)。2. LOD技术的研究1、Cesium官方,包括子章节https://github.com/CesiumGS/3d-tiles2、3DTile 的geometr原创 2021-02-18 17:00:39 · 1716 阅读 · 3 评论 -
3dTile技术研究-概念详述(10)Instanced 3D Model
上篇:3dTile技术研究-概念详述(7)Batched 3D Model下篇:3dTile技术研究-概念详述(8)Feature Table3dTile技术研究-概念详述(9)Batch Table1. 内容(Contents)概述(Overview) 布局(Layout) Padding 标头(Header) Feature Table Semantics Instance semantics Global semantics Instan.原创 2021-02-17 18:42:51 · 1043 阅读 · 0 评论