自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

积累点滴,保持自我

遇见问题,解决问题

  • 博客(857)
  • 资源 (16)
  • 收藏
  • 关注

转载 C#多线程——Thread睡眠、中断、合并、暂停与恢复、终止

如果一个线程处于阻塞状态(如调用了Sleep()、Join()等阻塞方法以及可中断通道的I/O操作后的阻塞),则在线程状态为WaitSleepJoin状态时,就会在阻塞方法调用处抛出ThreadInterruptException异常,并且在抛出异常后将线程状态设置为其他状态,从而线程从阻塞状态醒过来,并在结束线程前让程序员有足够的时间来处理中断请求。然而,应用程序不会检测到这种情形。1.取消终止线程的请求,并恢复线程,继续执行ResetAbort后面的语句,然后执行catch块之 后的语句。

2024-06-03 16:04:40 62

转载 万向节死锁

要理解万向节死锁的产生原因,首先要理解欧拉角变换,欧拉角变换是基于最初始的坐标进行变换而非变换后的坐标进行变换。欧拉角变换需要空间中的三个角(即变换后每个轴的偏移量),另外还有每个轴的变换顺序。值得注意的是,如果按照不同轴的顺序来改变每个角,其变换的结果是不一样的。在Unity中,变换顺序为Y>Z>X所以先对Y轴变换,就不会影响Z和X轴初始时物体:2.正常旋转对Y轴旋转90°:旋转X轴:正常旋转Z轴:正常。

2024-05-31 16:31:38 12

转载 c# 线程 AutoResetEvent 和 ManualResetEvent

此时,调用 `WaitOne` 方法时,如果 AutoResetEvent 处于无信号状态,则线程将被阻塞,直到调用 `Set` 方法将其置为有信号状态。这样就会又很多个线程等待同一个信号,由于AutoResetEvent是自动恢复无信号的,所以只有一个等待线程会被唤醒并继续执行,那这一个线程肯定是最先调用WaitOnce的地方,因为一旦调用了WaitOnce并通过了,AutoResetEvent自动恢复无信号。其他的当然得继续等咯。信号同步的原理就是等待信号,有信号状态直接过,无信号就等。

2024-05-28 11:02:56 12

原创 OpenCASCADE Draw模块TKDraw项目问题修改

在调试Draw模块代码时,出现一个小问题,导致无法正常运行。

2024-05-24 17:34:40 188

转载 向量点乘(内积)和叉乘(外积、向量积)概念及几何意义解读

向量是由n个实数组成的一个n行1列(n*1)或一个1行n列(1*n)的有序数组;向量的点乘,也叫向量的内积、数量积,对两个向量执行点乘运算,

2024-05-23 17:03:02 8

转载 OpenGL图形渲染管线、VBO、VAO、EBO概念及用例

并且可以开辟很多个VBO,每个VBO在OpenGL中有它的唯一标识ID,这个ID对应着具体的VBO的显存地址,通过这个ID可以对特定的VBO内的数据进行存取操作。图形渲染管线的整个处理流程可以被划分为几个阶段,上一个阶段的输出数据作为下一个阶段的输入数据,是一个串行的,面向过程的执行过程。即像素化,把细分着色器输出的基本图形映射为屏幕上网格的像素点,生成供片段着色器处理的片段(Fragment),光栅化包含一个剪裁操作,会舍弃超出定义的视窗之外的像素。

2024-05-23 15:22:07 6

转载 OpenGL纹理Textures

纹理是一个2D图片(甚至也有1D和3D的纹理),它可以用来添加物体的细节。

2024-05-23 14:37:29 9

转载 opengl-glsl语法

struct type-name{} 类似c语言中的 结构体。float foo[3] glsl只支持1维数组。

2024-05-23 14:19:17 9

转载 B+树

B+树中的所有数据均保存在叶子结点,且根结点和内部结点均只是充当控制查找记录的媒介,并不代表数据本身,所有的内部结点元素都同时存在于子结点中,是子节点元素中是最大(或最小)元素。并且此时91所在结点的兄弟节点无法给该节点提供关键字,因此该结点和兄弟结点合并,并且需要修改合并后的节点的父节点的关键字值,合并后的结点的关键字个数满足条件。在B+树中,叶节点包含信息,所有非叶节点仅起索引作用,非叶节点的每个索引项只含有对应子树的最大关键字和指向该子树的指针,不含有该关键字对应记录的存储地址。(橙色为修改之后的)

2024-05-17 15:28:54 7

转载 常见的hash算法及其原理

Hash,一般翻译做“散列”,也有直接音译为“哈希”的,就是把任意长度的输入(又叫做预映射, pre-image),通过散列算法,变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,而不可能从散列值来唯一的确定输入值。简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。

2024-05-17 11:47:20 6

转载 英伟达产品系列分类、架构

这个架构是专为光线追踪和基于 AI 的神经图形设计的 GPU,能够提供高性能的游戏、专业图形、AI 和计算性能。同时,它加强了对深度学习和人工智能计算的支持,引入了NVIDIA 的Tensor Cores。Ampere 架构是 NVIDIA 的第二代深度学习架构,引入了更多的Tensor Cores、第三代NVLink以及改进的Ray Tracing技术。Maxwell 架构进一步提高了功耗效率,并引入了一些新的技术,例如多层次的内存系统、动态超分辨率技术和VR Direct技术。

2024-04-24 10:55:52 136

转载 OCC -C++ 应用程序性能优化

系统在接收到一定大小内存请求时,首先查找内部维护的内存空闲块表,并且需要根据一定的算法(例如分配最先找到的不小于申请大小的内存块给请求者,或者分配最适于申请大小的内存块等)找到合适大小的内存块。对于几何造型内核OpenCASCADE,由于会涉及到大量的数值算法,如矩阵相关计算,微积分,Newton迭代法解方程,以及非线性优化的一些算法,如BFGS,FRPR,PSO等等用于多元函数的极值求解,所以这些数值算法的性能直接影响系统的性能。与没有使用内存优化的时候0.1相比,使用了内存优化处理的要快40%左右。

2024-04-11 17:27:56 52

转载 OpenCASCADE Connect Edges to Wires

不规则的任意形状的曲面片,只能通过WIRE来限定。两种方式的处理逻辑是不同的,对于第一种依次添加EDGE的方式,则要求添加的EDGE是相连的。功能与ShapeAnalysis_FreeBounds中的ConnectEdgesToWires类似,但多个要求,这些EDGE都是一个FACE上的EDGE,而且对这些EDGE的Orientation也有要求。有时在构造WIRE的时候,拿到的是一些无序的EDGE,如何将无序的EDGE生成WIRE,OpenCASCADE中提供了多种方法,下面分别来对这些方法进行介绍。

2024-04-11 17:00:55 62

转载 OpenCASCADE STEP Color

Abstract. STEP AP214的STEP中是带有颜色信息的,OCCT可以读取其中的颜色信息。本文介绍一种比官方XCAFDoc_ColorTool更方便的获取方法。

2024-04-11 16:30:04 62

转载 opencascade常用资料整合

KGV大佬将occt draw工具移植到了web端,测试occt编译为webassembly的能力和性能,大佬博客有几篇文章进行了详细解读,我已经翻译并且发布在本人知乎上了。根据作者说是用的.net后端运行的occt,前端用three.js显示的。一个开源CAD技术博客,有很多关于occt的内容,还有其他开源CAD方案的讨论,作者还开发了一个在线CAD工具,不过是用openscad做的。OCCT 12年资深工程师做的教程,是个俄罗斯大佬,一步一步用例子教学,弥补了官方文档案例太少,基本抓瞎的问题。

2024-04-11 14:57:08 64

转载 通过网页调用本地的exe程序

创建一个自定义链接协议,实际上在浏览器中定义了一个新的 URL 方案,能够通过点击链接来触发自定义操作。如果您的 EXE 文件不需要参数,那么您可以简化注册表项中的命令设置。这种方法的原理是相同的,只是命令设置中省略了参数部分。如果您的 EXE 文件不需要接收参数,您可以直接指定 EXE 文件的路径。链接时,操作系统会调用相应的命令,从而启动本地程序。请注意,这个示例中的路径需要根据您的实际情况进行调整。在这个示例中,链接的 URL 是。在上面的示例中,将您的协议名称(在上面的示例中,将您的协议名称(

2024-04-11 10:08:43 378

转载 Unicode(UTF-8,UTF-16,UTF-32)解析规则

Unicode只是一个符号集,它只规定了符号的二进制代码,并没有规定这个二进制代码应该如何进行存储,简单的讲就是,Unicode为所有字符提供一个唯一的编号,然后UTF-8、UTF-16等只是将字符的Unicode编号编码成相应的二进制代码进行存储或运算,所以相同Unicode编号若用不同的编码方式进行编码,最后会产生不同的二进制代码,这就是有时候文件造成乱码的原因。Unicode与JavaScript详解(阮一峰)字符编码笔记:ASCII,Unicode 和 UTF-8(阮一峰)

2024-04-10 11:03:58 46

转载 OpenGL用Polygon Offset解决z-fighting和stitching

在OpenGL中,如果想绘制一个多边形同时绘制其边界,可是先使用多边形模式GL_FILL绘制物体,然后使用多边形模式GL_LINE和不同的颜色再次绘制这个多边形。但是由于直线和多边形的光栅化方式不同,导致位于同一位置的多边形和直线的深度值并不相同,进而导致直线有时在多边形的里面,有时在多边形的外面,这种现象就是"Stiching"。

2024-03-29 15:48:37 92

转载 OpenCasCade 中 TCollection_HExtendedString、TCollection_ExtendedString与QString的相互转换

在进行Opencascad+QT开发时,会遇到字符串之间的转换,因为Opencascad中有的字符串类型为TCollection_HExtendedString、TCollection_ExtendedString,比如设置名称,而QT用的字符串类型为QString,这就需要转换。为了自己方便查找,所以将这两者的转换写到这里。

2024-02-29 10:45:33 81

转载 Open Cascade 获取面的内外环线

在特定应用场景下,需要对于一个拓扑面(TopoDS_Face)其进行补洞或打洞操作,如下图所示。补洞或打洞过程中需要获取面的环线(TopoDS_Wire),本文即介绍如何获取拓扑面的环线及其基本原理。面补洞、打洞示意图。

2024-02-23 11:12:52 167

转载 Opencascade 开发中V3d_View的常用方法和代码总结

原文链接:https://blog.csdn.net/m0_52660853/article/details/130999774。

2024-02-23 10:56:19 170

转载 C++ #if defined (WIN32)和#ifdef(WIN32)

其中,不同系统下编译器定义的宏如下表,在该系统上大多数编译器均支持此宏。#if defined计算表达式并检查真值,可以执行复合条件。#ifdef检查是否已定义该名称的宏,只能使用一个条件。

2024-02-19 14:20:04 450

转载 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 157

转载 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 259

转载 投影矩阵和视口变换矩阵(math-projection and viewport matrix)

写在前面前面几节分别介绍了,本节继续学习坐标变换过程中的投影变换。这里主要是从数学角度推导投影矩阵。,这里对他的推导思路稍微进行了整理。通过本节可以了解到。

2024-01-30 17:08:08 252

转载 OpenCascade拓扑对象之:裁剪环的理解

对一些类型的曲面,例如:平面、圆柱面,可能在一个或两个方向上是无限大的,例如:对平面来说,通常是无限大的面,u、v参数的范围是无限大的;每个TopoDS_Face记录一系列的TopoDS_Wire对象,但这些Wire对象没有明确的区分外环和内环,因为TopoDS_Wire也可能是一个共享对象,可能对一个Face来说是外环,对另一个Face来说是内环(考虑:立方体上的一个孔的和上平面相交的Wire)。其中,通常有一个外环,是区域最外边的轮廓,还有一个或多个内环,表明的是该区域内部的各个孔。

2024-01-26 14:54:37 130

转载 OpenCascade拓扑对象之:基于TopoDS_Shape的Map的理解

这里,定义了一个hash表,键值为TopoDS_Shape对象,在该定义中,使用了TopTools_ShapeMapHasher类来作为hash表中的对比类。当对边进行打断时,直接打断共边,生成两个新的TopoDS_TEdge对象,比对有向边进行处理更简洁和合理。因此,在OpenCascade中,会频繁通过建表,获取共享对象,基于共享对象进行处理。因为对共享对象,例如:两个有向边共享一个共边的情况,两个有向边都使用一个TopoDS_TEdge对象,但方向通常是一正一反。

2024-01-26 14:45:41 122

转载 OpenCascade拓扑对象之:有向边和共边

在BRep_TEdge类中,不仅记录了通常共边的信息,还记录了邻接信息、参数曲线信息、边的连续性信息等多种信息。对manifold情形,通常两个有向边共用一个共边,两个有向边的方向通常是一正一反(一个有向边和共边同向,一个有向边和共边反向)。有向边和共边的邻接关系,是拓扑结构中一个重要的关系,借助该关系,可以实现例如:遍历共边所邻接的所有Face这样的操作。一个参数范围,是3D曲线上的参数范围,通常Edge是曲线上的一段,特别对无限长的曲线(例如:直线),必须有一个参数域范围。端点对应的Vertex对象。

2024-01-26 14:33:39 129

转载 OpenCascade拓扑对象之:拓扑对象方向继承关系

例如:如果一个Face反向了,通常裁剪环Wire也需要反向,Wire中的Edge也需要反向,这样才能保证拓扑结构的正确性。在TopExp_Explorer类的实现总,创建TopExp_Iterator类对象时,传递的cumOri值为默认值,即为true,因此默认是考虑上了父对象的方向的,也因此组合了父对象的方向。例如:Face中当要基于surface进行参数域或裁剪环操作时,通常不考虑Face的方向,基于surface来进行裁剪环的处理,可以省去很多的麻烦。子对象的方向将根据父对象的方向属性而进行调整。

2024-01-26 14:32:14 88

转载 OpenCascade拓扑对象之:TopoDS_Shape对象及其子对象

如此一来,要获取子对象所在的父对象,通常需要建表机制,通过遍历父对象的子对象,建立子对象和父对象对应关系的表,例如:遍历Face的Edge,建立Edge和face间的表,从而获得Edge邻接的Face对象列表。例如:Face记录了Edge的共享对象,而Edge又反向记录了Face对象,则会形成循环依赖,当对象自动释放时,可能两者都释放不了,这个是引用计数计数的一个问题。B)出于共享的考虑。首先,该列表放在BopoDS_TShape中,即放在共享对象中,是因为对一些共享对象的子对象,通常也是需要被共享的。

2024-01-26 14:19:03 197

转载 OpenCascade 句柄机制

即使不考虑其他拓扑对象的共享,有向边共享共边对象这一事实(Parasolid:Fin和Edge,ACIS:CoEdge和Edge),就导致必须有相应的共享对象管理机制。实体拓扑对象处理中的一个难点,是共享对象的管理,这一点非常重要,对3D几何造型引擎非常关键。如果处理不好,轻则内存泄漏,重则系统不稳定,会因为共享对象产生的内存错误,可能导致莫名的死机问题。这一点,会很影响算法的实现效率。因此,OCCT的拓扑结构实现,采用了单向包含关系,即每个拓扑对象只记录自己的子对象,而子对象不记录对父对象的引用。

2024-01-26 14:15:11 99

转载 OpenCascade拓扑对象TopoDS_Shape的三要素

例如:这个可能是一个BRep_TEdge对象,记录了一条共边的数据,包括:一条3D曲线、曲线的参数范围等等数据,或者可能是BRep_TFace对象,记录了一个曲面对象及其相关数据。基于共享的考虑,那么会生成10个TopoDS_Shape对象,每个对象记录相同的BRep_TFace对象,方向可能相同,可能相反,而myLocation记录了如何从原始Face对象经过变换变换到最终对象。对一个TopoDS_Shape对象,通过在定时器中不断改变位置信息,可以实现简单的动画效果,当然,这个的效率是不高的。

2024-01-26 13:58:07 98

转载 CAD中“非流形体”几何简介

结构中不同单元连接,接触,复合材料,散热,CFD多流场,EDA,TCAD,在这些分析中,最大的特点是不同属性(不同的材料,几何层,业务属性等)的几何要在一起分析,而且不同属性的几何之间相互接触!传统意义上的几何表达无法处理非流形体,所以在仿真处理中,一般是不同的几何分别生成网格,然后对网格进行合并。Cell结构的特点是,在进行布尔并运算之后,原有的几何都保留,属性也保留,以刚才的两个立方体为例,进行布尔运算之后,公共面会被保留,而且只会保留一个面,两个实体的信息分别存储在各自的Cell信息中。

2024-01-26 13:46:25 270

转载 OpenCasCade 包围盒

包围盒是一个简单的几何空间,里面包含着复杂形状的物体。为物体添加包围体的目的是快速的进行碰撞检测或者进行精确的碰撞检测之前进行过滤(即当包围体碰撞,才进行精确碰撞检测和处理)。包围体类型包括球体、轴对齐包围盒(AABB)、有向包围盒(OBB)、8-DOP以及凸壳。包围盒广泛地应用于碰撞检测,比如射击、点击、相撞等,每一个物体都有自己的包围盒。因为包围盒一般为规则物体,因此用它来代替物体本身进行计算,会比直接用物体本身更加高效和简单。

2024-01-26 11:55:56 248

转载 法线贴图基本介绍及工具推荐

法线贴图(Normal Map)是一种用于在游戏和计算机图形中模拟凹凸表面的技术。它使用 RGB 颜色来表示法线向量的方向,从而创建出伪造的高度细节,使表面看起来更加逼真。

2023-12-19 14:15:14 229

原创 UI界面程序鼠标右键弹出菜单的一些事

在做客户端UI程序时,鼠标右键弹出菜单这种操作非常常见,一般在鼠标右键按下或者鼠标右键抬起事件中响应操作,显示菜单即可,但是有时涉及到鼠标的移动,就是鼠标按下右键且移动时,则不需要弹出菜单,其它时候正常弹出。这种情况有很多种实现方式,但是操作体验上,差别较大,下面记录一种实现方案。

2023-12-05 17:44:37 1221

转载 二维几何点集处理

按角度排序,先计算多边形的中点,即所有顶点的平均,以该点做向量起始点,各个点为向量终止点,计算该向量与x轴或y轴所成角度,根据角度排序。叉乘排序,针对凸多边形完成逆时针排序,两个向量叉乘得垂直于这两个向量所在平面的法向量,带有正负,根据正负可以判断两点的顺逆问题。

2023-11-23 15:57:20 285

转载 dxflib实现dxf文件的读写

dxflib是开源的读写dxf文件的库,在QCAD上可以直接下载(QCAD - Downloads)。dxf作为一种通用的绘图文件格式,包含的信息量非常大,要去理解文件的内容也比较受苦,详细的解释在论坛里可以找到(dxf 格式详解_dxf是什么文件格式_runing9的博客-CSDN博客)。使用dxflib库的优势在于它很好地简化了各部分的读写,代码可读性很强,同时配库只需要将压缩包下的src文件包含在目录中即可。

2023-11-20 10:54:17 454

原创 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 865

原创 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 3433

GDIGDI+.rar

MFC中使用GDI与GDI+

2021-05-13

FxRamnit.rar

本机遇到 执行exe文件 会生成xxsrv.exe文件 ,使用此工具全盘扫描修复即可

2021-05-11

Project1.rar

资源中包含USB通讯类,Win32测试程序,以及MFC界面测试程序,使用简单,vs2015开发

2020-08-21

CommUSB.rar

windows下USB通讯程序,使用hid.lib等windows库,附件包含usb基本通信类,依靠输入VID与PID来打开USB,有完整测试程序,VS2015开发

2020-08-19

RadASM.v2.21.8f

汇编开发集成工具RadASM,自己常用的汇编开发集成工具

2018-07-18

c++人脸相似度检测MFC源码

c++利用opencv实现两张人脸图片的相似度检测,完整程序源码

2018-07-18

遍历匹配串口

c#遍历匹配串口(向每个串口发数据,根据返回数据确定是否为所需串口)

2018-07-18

送给破解新手的160个小程序

适合破解新手的160个crackme练手

2015-12-02

各种学习破解的基本工具

各种破解所需的工具整理打包,不用再去乱找了

2015-12-01

缓冲区溢出实验

1、利用RPC漏洞建立超级用户 利用工具scanms.exe文件检测RPC漏洞,利用工具软件attack.exe对172.18.25.109进行攻击。攻击的结果将在对方计算机上建立一个具有管理员权限的用户,并终止了对方的RPC服务。 2、利用IIS溢出进行攻击 利用软件Snake IIS溢出工具可以让对方的IIS溢出,还可以捆绑执行的命令和在对方计算机上开辟端口。 3、利用WebDav远程溢出使用工具软件nc.exe和webdavx3.exe远程溢出。

2015-12-01

dos命令大全

掌握DOS命令你就算是黑客入门了,熟悉这些是每个网络安全人员必备的

2015-08-17

IECookiesView_1.77

可以查看cookies信息 可以修改cookies信息,绿色汉化,个别杀软误报你懂得

2015-07-24

代理猎手工具

查找代理服务器,验证代理服务器,,,等等

2015-07-07

Lansee1.72

一款非常给力的局域网查看工具 具有网络数据抓包 共享 操作等功能

2015-07-07

流光扫描工具

流光5.0汉化版扫描工具, 简单易操作,功能强大,慎用

2015-07-07

Cisco Packet Tracer5.0 汉化包

可以将英语版的工具汉化,使人们 更容易理解和运用

2015-03-26

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除