- 博客(20)
- 收藏
- 关注
原创 多边形布尔运算(2)
本文给出多边形布尔运算的实现,采用的算法在一文介绍。首先定义MarkedPoint结构体作为辅助数据结构,其定义如下:其中original表示多边形原始的点,即非交点;value是点的几何数。
2024-04-30 08:42:09
295
原创 多边形布尔运算(1)
两平面向量交点的几何数的绝对值取1,这两个向量在该交点处各有一个几何数,其正负号由向量的旋向决定——记这两个平面向量分别为P1和P2,若从P2旋转到P1为逆时针,则P1在该交点处的几何数为-1,则P2在该交点处的几何数为+1;其中O(n1×n2)是关键的复杂度,算法的主要开销在计算交点,交点计算的复杂度决定了整个算法的复杂度,算法的优化也取决于交点计算,尽量避免不必要的交点计算操作是很重要的。一般地,当其中一个多边形的环中无几何数不为0的点时,即一个多边形的环中无交点时,便是计算得到了所有的环。
2024-04-30 08:38:25
1914
1
原创 相交判断算法
提供参数inside决定一个AABB矩形包含在另一个AABB矩形中时是否算相交。提供inside参数决定多边形包含在圆内部或圆包含在多边形内部是否算相交。提供inside参数决定一个多边形包含在另一个多边形内部是否算相交。多边形完全在AABB矩形内或AABB矩形完全在多边形内也算相交。提供inside参数决定多段线完全在多边形内部时是否算相交。提供inside参数决定一个圆包含在另一个圆中是否算相交。圆完全在AABB矩形内或AABB矩形完全在圆内也算相交。多段线完全在AABB矩形内也算相交。
2024-04-29 13:11:49
381
原创 判断在几何对象内算法
判断一个三角形是否完全在另一个三角形内部:与三角形相交或有顶点在三角形上均不算在三角形内部。判断有限长线段是否完全在三角形内:线段与三角形相交或有端点在三角形上均不算在三角形内部。判断点是否在多边形内:coincide决定是否包含点在多边形上的情况。判断点是否在三角形内:coincide决定是否包含点在三角形上的情况。判断点是否在AABB矩形内:coincide决定是否包含点在AABB矩形上的情况。判断点是否在圆内:coincide决定是否包含点在圆上的情况。
2024-04-29 13:02:15
172
原创 距离算法
点到直线距离:如果为有限长线段且垂足不在线段上,则计算点到线段端点距离。点到多段线距离:计算点到每一段有限长线段的距离,取最近距离。点到多边形距离:计算点到每一段有限长线段的距离,取最近距离。
2024-04-29 12:59:11
241
原创 基本几何对象(9)——Bezier
定义Bezier类,这是为了能绘制曲线才定义的类。Bezier对象中有一个Polyline对象来表示贝塞尔曲线的形状,而Bezier本身的点则表示控制点。为了降低性能开销,仅在构造Bezier和修改Bezier控制点时重新计算贝塞尔曲线的形状,变换Bezier时,分别对Bezier本身的点和其中的Polyline的点做变换,而不重新计算形状。下面给出Bezier的声明。下面给出Bezier的实现。
2024-04-29 12:55:32
205
原创 基本几何对象(8)——Line
定义Line类,表示有限长的线段或无限长的直线,但这个类很少用,因为通常都是直接用两点表示Line了。下面给出Line的声明。下面给出Line的实现。
2024-04-29 12:50:55
175
原创 基本几何对象(6)——Triangle
定义Triangle类,用于多边形的三角耳切。下面给出Triangle的声明。下面给出Triangle的实现。
2024-04-29 12:49:22
131
原创 基本几何对象(5)——Polygon
定义Polygon类,作为多边形,这是一个常用的几何对象。Polygon是有相同首尾点的Polyline,因此我选择在Polyline的尾部添加一个和头部点相同的点作为尾部点,而非像某些实现那样在获取第尾部点时返回头部点。下面给出Polygon的声明。下面给出Polygon的实现。
2024-04-29 12:47:33
637
原创 基本几何对象(4)——Polyline
定义Polyline类,作为多段线,这回是一个常用的几何对象。下面给出Polyline的声明。下面给出Polyline的实现。
2024-04-29 12:00:07
318
原创 基本几何对象(3)——AABBRect
定义AABBRect类,通常用于表示其他几何对象的AABB外接矩形,用于相交的快速判断。下面给出AABBRect的声明。下面给出AABBRect的实现。
2024-04-29 11:58:28
112
原创 基本几何对象(2)——Point
定义Point类,即点,同时也可以作为平面向量使用。Point的加减乘除是作为向量的加减乘除。下面给出Point的声明。下面给出Point的实现。
2024-04-29 11:55:12
150
原创 基本几何对象(1)——Geometry
定义基础的Geometry类,作为所有几何类的基类,方便用Geometry指针进行统一操作:长度、空判别、清空、克隆、变换、旋转、平移、缩放、凸包、外接AABB矩形、最小外界矩形。Geometry定义了type()虚函数,返回一个枚举值,表示Geometry指针所指向对象的实际类型,下面给出枚举值的定义。另外,在计算时还依赖如圆周率这样的常数,下面列出所有用到的常数。下面给出Geometry的声明。下面给出Geometry的实现。
2024-04-29 11:53:33
287
原创 Mask图像与json文件相互转换
做机器学习处理图像时,需要标注图像,其中一种标注是标出图像中的某些区域,生成Mask图像或记录下这些区域的轮廓点坐标。通常,标注直接生成其中一种文件,即只生成json文件或只生成Mask图像。故在此贴出Mask图像与json文件相互转换的Python代码。如果输入文件夹,则会将文件夹下所有json文件或mask图片转成对应文件输出到指定路径中。python json_to_mask.py 文件夹或json文件 输出文件夹。python mask_to_json.py 文件夹或mask图片 输出文件夹。
2022-12-22 17:25:38
6099
17
原创 查找exe依赖dll库的Python脚本
打包exe时需要将依赖的dll库一起打包,这些dll库数量多,所以我写了Python脚本将指定exe的依赖dll库输出到指定文件夹中。
2022-10-19 08:23:47
518
原创 用Python控制Kinect相机
一般是用C++控制Kinect,用Python还是比较少的,但还是存在用Python控制Kinect相机的需求,毕竟Python更简单些,能进一步降低开发门槛。开发环境Windows系统Python 3.8或更低版本,Python版本不能高于3.8Open3D 0.13.0Open3D – A Modern Library for 3D Data ProcessingAzure kinect SDK 1.4.1Azure-Kinect-Sensor-SDK/usage.md at
2021-11-14 17:06:11
5323
3
gcc-linaro-13.0.0-2022.10-x86_64_arm-linux-gnueabihf
2022-10-03
x86_64-12.1.0-release-posix-sjlj-rt_v10-rev3
2022-10-03
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人