- 博客(840)
- 资源 (16)
- 收藏
- 关注
转载 OpenGL用Polygon Offset解决z-fighting和stitching
在OpenGL中,如果想绘制一个多边形同时绘制其边界,可是先使用多边形模式GL_FILL绘制物体,然后使用多边形模式GL_LINE和不同的颜色再次绘制这个多边形。但是由于直线和多边形的光栅化方式不同,导致位于同一位置的多边形和直线的深度值并不相同,进而导致直线有时在多边形的里面,有时在多边形的外面,这种现象就是"Stiching"。
2024-03-29 15:48:37 1
转载 OpenCasCade 中 TCollection_HExtendedString、TCollection_ExtendedString与QString的相互转换
在进行Opencascad+QT开发时,会遇到字符串之间的转换,因为Opencascad中有的字符串类型为TCollection_HExtendedString、TCollection_ExtendedString,比如设置名称,而QT用的字符串类型为QString,这就需要转换。为了自己方便查找,所以将这两者的转换写到这里。
2024-02-29 10:45:33 39
转载 Open Cascade 获取面的内外环线
在特定应用场景下,需要对于一个拓扑面(TopoDS_Face)其进行补洞或打洞操作,如下图所示。补洞或打洞过程中需要获取面的环线(TopoDS_Wire),本文即介绍如何获取拓扑面的环线及其基本原理。面补洞、打洞示意图。
2024-02-23 11:12:52 74
转载 Opencascade 开发中V3d_View的常用方法和代码总结
原文链接:https://blog.csdn.net/m0_52660853/article/details/130999774。
2024-02-23 10:56:19 69
转载 C++ #if defined (WIN32)和#ifdef(WIN32)
其中,不同系统下编译器定义的宏如下表,在该系统上大多数编译器均支持此宏。#if defined计算表达式并检查真值,可以执行复合条件。#ifdef检查是否已定义该名称的宏,只能使用一个条件。
2024-02-19 14:20:04 146
转载 OCC三维几何对象工具包TKG3d
Geom_Axis1Placement:定义3D空间的轴;Geom_Axis2Placement:定义一个右手坐标轴;Geom_AxisPlacement:抽象基类,用于定义轴或坐标系;Geom_Direction:定义三维矢量;Geom_Plane:定义三维平面;Geom_Point:点的抽象基类;Geom_CartesianPoint:定义笛卡尔坐标下三维点;Geom_Vector:Geom_Direction的抽象基类;
2024-02-18 14:20:44 65
转载 glPushMatrix/glPopMatrix简介及示例(在不同位置绘制图形)
例如,在调用 glTranslatef(1.0, 0.0, 0.0) 之后,当前矩阵会被更新成平移矩阵,在调用glRotatef(30, 0.0, 1.0, 0.0)之后,当前矩阵会被更新成旋转矩阵。在绘制圆柱体时,需要对每个圆柱体进行不同的平移和旋转变换,所以需要使用glPushMatrix()函数将当前矩阵压入栈中,这样可以保证每个圆柱体之间互不影响。glPushMatrix() 函数将当前矩阵复制一份并压入栈中,这样就可以在之后的操作中使用栈顶的矩阵进行变换而不会影响之前的变换。
2024-02-01 14:23:12 75
转载 投影矩阵和视口变换矩阵(math-projection and viewport matrix)
写在前面前面几节分别介绍了,本节继续学习坐标变换过程中的投影变换。这里主要是从数学角度推导投影矩阵。,这里对他的推导思路稍微进行了整理。通过本节可以了解到。
2024-01-30 17:08:08 81
转载 OpenCascade拓扑对象之:裁剪环的理解
对一些类型的曲面,例如:平面、圆柱面,可能在一个或两个方向上是无限大的,例如:对平面来说,通常是无限大的面,u、v参数的范围是无限大的;每个TopoDS_Face记录一系列的TopoDS_Wire对象,但这些Wire对象没有明确的区分外环和内环,因为TopoDS_Wire也可能是一个共享对象,可能对一个Face来说是外环,对另一个Face来说是内环(考虑:立方体上的一个孔的和上平面相交的Wire)。其中,通常有一个外环,是区域最外边的轮廓,还有一个或多个内环,表明的是该区域内部的各个孔。
2024-01-26 14:54:37 91
转载 OpenCascade拓扑对象之:基于TopoDS_Shape的Map的理解
这里,定义了一个hash表,键值为TopoDS_Shape对象,在该定义中,使用了TopTools_ShapeMapHasher类来作为hash表中的对比类。当对边进行打断时,直接打断共边,生成两个新的TopoDS_TEdge对象,比对有向边进行处理更简洁和合理。因此,在OpenCascade中,会频繁通过建表,获取共享对象,基于共享对象进行处理。因为对共享对象,例如:两个有向边共享一个共边的情况,两个有向边都使用一个TopoDS_TEdge对象,但方向通常是一正一反。
2024-01-26 14:45:41 79
转载 OpenCascade拓扑对象之:有向边和共边
在BRep_TEdge类中,不仅记录了通常共边的信息,还记录了邻接信息、参数曲线信息、边的连续性信息等多种信息。对manifold情形,通常两个有向边共用一个共边,两个有向边的方向通常是一正一反(一个有向边和共边同向,一个有向边和共边反向)。有向边和共边的邻接关系,是拓扑结构中一个重要的关系,借助该关系,可以实现例如:遍历共边所邻接的所有Face这样的操作。一个参数范围,是3D曲线上的参数范围,通常Edge是曲线上的一段,特别对无限长的曲线(例如:直线),必须有一个参数域范围。端点对应的Vertex对象。
2024-01-26 14:33:39 80
转载 OpenCascade拓扑对象之:拓扑对象方向继承关系
例如:如果一个Face反向了,通常裁剪环Wire也需要反向,Wire中的Edge也需要反向,这样才能保证拓扑结构的正确性。在TopExp_Explorer类的实现总,创建TopExp_Iterator类对象时,传递的cumOri值为默认值,即为true,因此默认是考虑上了父对象的方向的,也因此组合了父对象的方向。例如:Face中当要基于surface进行参数域或裁剪环操作时,通常不考虑Face的方向,基于surface来进行裁剪环的处理,可以省去很多的麻烦。子对象的方向将根据父对象的方向属性而进行调整。
2024-01-26 14:32:14 51
转载 OpenCascade拓扑对象之:TopoDS_Shape对象及其子对象
如此一来,要获取子对象所在的父对象,通常需要建表机制,通过遍历父对象的子对象,建立子对象和父对象对应关系的表,例如:遍历Face的Edge,建立Edge和face间的表,从而获得Edge邻接的Face对象列表。例如:Face记录了Edge的共享对象,而Edge又反向记录了Face对象,则会形成循环依赖,当对象自动释放时,可能两者都释放不了,这个是引用计数计数的一个问题。B)出于共享的考虑。首先,该列表放在BopoDS_TShape中,即放在共享对象中,是因为对一些共享对象的子对象,通常也是需要被共享的。
2024-01-26 14:19:03 104
转载 OpenCascade 句柄机制
即使不考虑其他拓扑对象的共享,有向边共享共边对象这一事实(Parasolid:Fin和Edge,ACIS:CoEdge和Edge),就导致必须有相应的共享对象管理机制。实体拓扑对象处理中的一个难点,是共享对象的管理,这一点非常重要,对3D几何造型引擎非常关键。如果处理不好,轻则内存泄漏,重则系统不稳定,会因为共享对象产生的内存错误,可能导致莫名的死机问题。这一点,会很影响算法的实现效率。因此,OCCT的拓扑结构实现,采用了单向包含关系,即每个拓扑对象只记录自己的子对象,而子对象不记录对父对象的引用。
2024-01-26 14:15:11 62
转载 OpenCascade拓扑对象TopoDS_Shape的三要素
例如:这个可能是一个BRep_TEdge对象,记录了一条共边的数据,包括:一条3D曲线、曲线的参数范围等等数据,或者可能是BRep_TFace对象,记录了一个曲面对象及其相关数据。基于共享的考虑,那么会生成10个TopoDS_Shape对象,每个对象记录相同的BRep_TFace对象,方向可能相同,可能相反,而myLocation记录了如何从原始Face对象经过变换变换到最终对象。对一个TopoDS_Shape对象,通过在定时器中不断改变位置信息,可以实现简单的动画效果,当然,这个的效率是不高的。
2024-01-26 13:58:07 64
转载 CAD中“非流形体”几何简介
结构中不同单元连接,接触,复合材料,散热,CFD多流场,EDA,TCAD,在这些分析中,最大的特点是不同属性(不同的材料,几何层,业务属性等)的几何要在一起分析,而且不同属性的几何之间相互接触!传统意义上的几何表达无法处理非流形体,所以在仿真处理中,一般是不同的几何分别生成网格,然后对网格进行合并。Cell结构的特点是,在进行布尔并运算之后,原有的几何都保留,属性也保留,以刚才的两个立方体为例,进行布尔运算之后,公共面会被保留,而且只会保留一个面,两个实体的信息分别存储在各自的Cell信息中。
2024-01-26 13:46:25 88
转载 OpenCasCade 包围盒
包围盒是一个简单的几何空间,里面包含着复杂形状的物体。为物体添加包围体的目的是快速的进行碰撞检测或者进行精确的碰撞检测之前进行过滤(即当包围体碰撞,才进行精确碰撞检测和处理)。包围体类型包括球体、轴对齐包围盒(AABB)、有向包围盒(OBB)、8-DOP以及凸壳。包围盒广泛地应用于碰撞检测,比如射击、点击、相撞等,每一个物体都有自己的包围盒。因为包围盒一般为规则物体,因此用它来代替物体本身进行计算,会比直接用物体本身更加高效和简单。
2024-01-26 11:55:56 105
转载 法线贴图基本介绍及工具推荐
法线贴图(Normal Map)是一种用于在游戏和计算机图形中模拟凹凸表面的技术。它使用 RGB 颜色来表示法线向量的方向,从而创建出伪造的高度细节,使表面看起来更加逼真。
2023-12-19 14:15:14 183
原创 UI界面程序鼠标右键弹出菜单的一些事
在做客户端UI程序时,鼠标右键弹出菜单这种操作非常常见,一般在鼠标右键按下或者鼠标右键抬起事件中响应操作,显示菜单即可,但是有时涉及到鼠标的移动,就是鼠标按下右键且移动时,则不需要弹出菜单,其它时候正常弹出。这种情况有很多种实现方式,但是操作体验上,差别较大,下面记录一种实现方案。
2023-12-05 17:44:37 1145
转载 二维几何点集处理
按角度排序,先计算多边形的中点,即所有顶点的平均,以该点做向量起始点,各个点为向量终止点,计算该向量与x轴或y轴所成角度,根据角度排序。叉乘排序,针对凸多边形完成逆时针排序,两个向量叉乘得垂直于这两个向量所在平面的法向量,带有正负,根据正负可以判断两点的顺逆问题。
2023-11-23 15:57:20 246
转载 dxflib实现dxf文件的读写
dxflib是开源的读写dxf文件的库,在QCAD上可以直接下载(QCAD - Downloads)。dxf作为一种通用的绘图文件格式,包含的信息量非常大,要去理解文件的内容也比较受苦,详细的解释在论坛里可以找到(dxf 格式详解_dxf是什么文件格式_runing9的博客-CSDN博客)。使用dxflib库的优势在于它很好地简化了各部分的读写,代码可读性很强,同时配库只需要将压缩包下的src文件包含在目录中即可。
2023-11-20 10:54:17 209
原创 VSCode配置MingW编译调试环境
即 Minimalist GNU For Windows。它是一些头文件和端口库的集合,该集合允许人们在没有第三方动态链接库的情况下使用 GCC(GNU Compiler C)产生 Windows32 程序。实际上 MinGW 并不是一个 C/C++ 编译器,而是一套 GNU 工具集合。除开 GCC (GNU 编译器集合) 以外,MinGW 还包含有一些其他的 GNU 程序开发工具 (比如 gawk bison 等等)。
2023-11-15 15:35:29 454
原创 VSCode配置msvc编译调试环境
VS Code 使用 Electron 框架构建用户界面,该框架使用 Chromium 和 Node.js 构建桌面应用程序。这使得 VS Code 能够在 Windows、Linux 和 macOS 上运行,并且可以使用 Web 技术 (HTML、CSS 和 JavaScript) 构建用户界面。VS Code 使用 Monaco 引擎来提供文本编辑功能。
2023-11-15 11:59:23 1610
原创 C++ 类 根据成员变量的指针获取类对象的指针
实现方式有多种,原理是相同的利用c++类的内存分布,初始化的类的成员变量在内存中的储存地址是基于类对象的地址的偏移值确定的,已知成员变量的内存地址,再减去类结构的各个成员变量基于类基址的偏移值,就可以计算出类对象的内存地址,不同的类结构,内存结构也不同,详情参考文末参考文章,讲解的比较详细。
2023-11-03 10:23:37 319
转载 C++中 {}的功能
在一个代码块中,可以定义局部变量,控制变量的作用范围,以及变量的生命周期。原文链接:https://blog.csdn.net/weixin_63414068/article/details/132421692。版权声明:本文为CSDN博主「宋雷720」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。花括号可用于初始化各种类型的数据结构,例如数组、结构体、容器等。对于没有默认构造函数的类,花括号可以用于默认初始化。在类的构造函数中,花括号可以用于成员初始化列表。
2023-11-01 10:47:49 267
转载 认识PCI-e插槽
PCl-e的全称为PCI总线(PCI Express),是计算机的一种高速总线,而总线就相当于计算机里的一条路,提供给不同的设备和硬件进行数据交互的道路。PCI-e是2001年由Intel提出的,用于替代PCI、PCI-X和AGP等老式总线。示意图为CVN Z790 GAMING FROZEN V20主板PCl-e是高速穿行点对点双通道高宽带传输,简单点说就是能为连接的设备分配独立通道,以此提高带宽速度以及数据传输的速率,并且支持主动电源管理、错误报告、热插拔等功能。
2023-10-30 11:36:53 115
转载 C#中字符串与字节数组的转换方式
本文介绍了C#中字符串与字节数组的转换方式,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下。
2023-10-12 09:31:34 1099
转载 Windows图标是空白该如何解决
既然找到了原因,解决办法也很简单,我们只需要将有问题的图标缓存文件删除掉,让系统重新建立图标缓存即可。,首先了解图标空白的原因:第一次对图标进行显示时,系统会对文件或系统会对文件或程序的图标进行缓存。在打开的目录下找到 Iconcache.db文件,将其删除。任意打开一个文件夹,选择查看,勾选“查看隐藏的项目”打开任务管理器,找到Windows资源管理器并重启。完成以上四步,图标就可以重新显示了。重启Windows资源管理器。
2023-10-09 15:22:32 361 2
原创 VS中cmake多配置构建设置
是一种跨平台开源工具,用于定义在多个平台上运行的生成过程。Visual Studio C 和 C++ 开发不再仅适用于 Windows。本教程介绍如何在 Windows 和 Linux 上使用 Visual Studio C++ 进行跨平台开发。由于它基于 CMake,无需创建或生成 Visual Studio 项目。打开包含 CMakeLists.txt 文件的文件夹时,Visual Studio 会自动配置 IntelliSense 并生成设置。
2023-09-21 17:23:34 1492
转载 CMake:自定义配置
以上就是所有 CMake 环境配置相关的知识了。我们首先学习了如何使用-G开关指定生成器,并使用和--config在单配置和多配置构建器下进行构建。然后我们学习了 CMake 的三种变量类型,并了解了如何将变量缓存到 CMake Cache 中以便下次使用。
2023-09-21 14:59:15 236
转载 Windows 系统上用 .NET/C# 查找所有窗口,并获得窗口信息
剩下的我们需要其他各种方法用于获取窗口的其他属性。枚举所有窗口仅需要使用到。,其中需要定义一个委托。作为传入参数的类型。
2023-09-20 14:04:28 1163
转载 vs安装番茄助手没有任务栏
C:\Users\用户名\AppData\Local\Microsoft\VisualStudio\16.0_36832cb3\Extensions\opqkp1jn.muf。双击安装显示失败,打开vs扩展-管理扩展里有番茄,但工具栏没有。双击番茄安装包没反应,先右击属性勾选兼容性。后crack文件夹中的VA_X.dll替换。再重新打开vs(没啥变化)中的VA_X.dll。
2023-09-06 16:54:04 303
转载 贝塞尔曲线与B样条
B样条的表达式为其中Pi为各个控制顶点。B样条表达式与贝塞尔曲线十分相似,最大的区别就是基函数的不同。下标由伯恩斯坦基函数的n变为B样条基函数的k,表示B样条的多项式的次数和控制顶点的数目是没有关系的,而是由使用者自定义的。注意这里u的取值是uk-1到un+1。其中Bi,k(u)称为k阶(k-1次)B样条基函数。k用以刻画阶次,可以是2到n+1之间的任意整数。对于贝塞尔曲线来说,阶数和次数是一样的,都是n。但对于B样条,阶数(k)就是次数(k-1)加1,和n无关。
2023-08-25 15:53:39 415
转载 C# SqlSugar框架的学习使用
最近有个开发项目准备启动,由于要求的开发周期较短,所以准备用个C#的框架,原本最初考虑用成熟的EF框架,但是觉得那个框架也太重了,就在网上找找了别的,无意间发现了SqlSugar的框架。简单试了下,发现真是的方便,入门也简单。稳定性和技术支持, 虽然不是官方ORM, 但在稳定性上也是有着数年用户积累,如果遇到问题可以在GITHUB提出来,会根据紧急度定期解决。高性能 ,不夸张的说,去掉Sql在数据库执行的时间,SqlSugar是EF数倍性能,另外在批量操作和一对多查询上也有不错的SQL优化。
2023-08-24 11:34:46 214
转载 C# 图片与Base64码的相互转化问题(代码详解)
Base64由于以上优点被广泛应用于计算机的各个领域,然而由于输出内容中包括两个以上“符号类”字符(+, /, =),不同的应用场景又分别研制了Base64的各种“变种”。为统一和规范化Base64的输出,Base62x被视为无符号化的改进版本。Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法。Base64编码是从二进制到字符的过程,可用于在HTTP环境下传递较长的标识信息。
2023-08-24 11:09:50 2500
转载 插值与拟合
对于情况较复杂的实际问题(因素不易化简,作用机理不详)可直接使用数据组建模型,寻找简单的因果变量之间的数量关系, 从而对未知的情形作预报。拟合模型的组建是通过对有关变量的观测数据的观察、分析和选择恰当的数学表达方式得到的。插值与拟合方法就是要通过这些数据去确定某一类已知函数的参数或寻求某个近似函数,使所得到的近似函数与已知数据有较高的拟合精度。实际问题当中碰到的函数 f (x) 是各种各样的,有的表达式很复杂,有的甚至给不出数学的式子,只提供了一些离散数据,譬如,某些点上的函数值和导数值。
2023-08-21 15:22:57 100
转载 贝塞尔曲线
贝塞尔曲线于 1962 年,由法国工程师皮埃尔·贝济埃(Pierre Bézier)所广泛发表,他运用贝塞尔曲线来为汽车的主体进行设计,贝塞尔曲线最初由保尔·德·卡斯特里奥于1959年运用德卡斯特里奥算法开发,以稳定数值的方法求出贝塞尔曲线.贝塞尔曲线有着很多特殊的性质, 在图形设计和路径规划中应用都非常广泛, 贝塞尔曲线完全由其控制点决定其形状, n个控制点对应着n-1阶的贝塞尔曲线,并且可以通过递归的方式来绘制.先感受一下贝塞尔曲线:贝塞尔曲线。
2023-08-18 17:10:09 139
转载 EDA软件全方位梳理
(1)IC设计类:我们在《芯片产业链系列2》的文章中层介绍过,芯片设计流程主要可分为前端设计与后端设计,其中前端设计(也称为逻辑设计)主要涉及芯片的功能设计,后端设计(也称为物理设计)主要涉及工艺有关的设计,使其成为具备制造意义的芯片。网上的资料中对EDA的分类有不同的说法,一种常见的分类方法是把EDA分为IC设计软件、电路设计与仿真工具、PCB设计软件、PLD设计工具及其它EDA软件等,另一种常见的分类方法是按产品将EDA分为数字设计类、模拟设计类、晶圆制造类、封装类、服务等五大类。2、国产EDA问世。
2023-08-18 11:05:03 693
CommUSB.rar
2020-08-19
缓冲区溢出实验
2015-12-01
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人