- 博客(132)
- 收藏
- 关注
原创 顶点着色器片段着色器
gl_Position:设置顶点位置,vec4(aPos, 1.0) 将三维坐标转换为四维向量。FragColor = vec4(1.0, 0.5, 0.2, 1.0):设置输出颜色为橙色。0:顶点属性位置,与顶点着色器中的layout (location = 0)对应。3 * sizeof(float):步长(stride),每个顶点属性的字节数。VAO(顶点数组对象)用于存储顶点属性配置和绑定的VBO(顶点缓冲对象)。(void*)0:偏移量(offset),在数据缓冲区中的起始位置。
2024-08-03 10:28:30
596
原创 YOLOv8-OBB ONNRuntime推理部署
本文将介绍如何使用 ONNX 进行 YOLOv8 Oriented Bounding Box (OBB) 推理。本例中,我们将使用 Python 编写的代码进行图像处理和对象检测,并展示如何加载模型、预处理图像、进行推理以及后处理结果。
2024-07-28 09:15:23
693
1
原创 Bowyer-Watson算法
基于这些性质,Delaunay 三角剖分算法的一种实现方式是 Bowyer-Watson 算法,这是一种增量算法。
2024-06-05 21:39:09
1510
2
原创 L2Norm 的实现
L2 范数归一化(L2 Normalization)是将每个样本(向量)除以其 L2 范数,以使得每个样本的 L2 范数为 1, 这样做可以使得样本在欧几里得空间中位于单元圆上。L2范数(L2 norm),也称为欧几里德范数(Euclidean norm)或2-范数,是向量元素的平方和的平方根。而 L2 范数归一化就是将向量。
2024-03-26 14:04:21
1687
原创 线性回归 Pytorch
通常情况下,我们使用均方误差(Mean Squared Error, MSE)作为损失函数,用于衡量模型预测值与真实值之间的差异。线性回归是一种用于建立自变量(输入)和因变量(输出)之间线性关系的方法。在多维线性回归中,我们考虑多个自变量与一个因变量之间的线性关系。,使得损失函数最小化。我们通过梯度下降等优化算法来实现这一目标。具体地,我们反复迭代更新权重和偏置项,直到损失函数收敛到最小值。模型训练的目标是找到最优的权重。
2024-03-08 09:46:22
1045
原创 GoogleTest 单元测试
假设我们有两个函数 complexFunction 和 helperFunction,其中 complexFunction 调用了 helperFunction。我们将编写测试 complexFunction 的单元测试,并在调用 helperFunction 的地方打桩。现在,我们将编写一个单元测试来测试 complexFunction 并在调用 helperFunction 的地方打桩。
2024-02-03 21:18:04
669
原创 Jarvis步进法(Jarvis March)凸包算法
这样可以确保在构建的凸包上,点的极角是递增的,最终形成一个逆时针方向的凸多边形。算法的时间复杂度主要取决于对点的排序操作,通常为O(n log n),其中n是点的数量。从点集中选择一个起始点,然后在每一步中选择下一个顶点,该顶点是当前点集中与当前点形成的线段上,极角最小的点。扫描过程: 从起始点开始,选择当前点(假设为p),然后选择下一个点(假设为q),这个点是当前点p与其他点形成的线段上,极角最小的点。选择起始点的过程可以通过遍历点集,找到y坐标最小的点,并在y坐标相同时,选择x坐标最小的点。
2024-01-10 09:49:35
1083
原创 Graham扫描凸包算法
扫描过程: 从第三个点开始,按照排序后的顺序逐个处理每个点。下面,我将提供一个简单的凸包算法实现,基于Graham扫描算法。Graham扫描算法的基本思想是通过选择一个特殊的起点,将点集按照极角排序,然后通过栈的操作来逐步构建凸包。,其中n是点的数量。该算法的优势在于其相对简单的实现和较好的性能。然而,需要注意的是,在特定情况下,例如存在大量共线点的情况下,算法的性能可能会有所下降。通常选择最下面且最左边的点,以确保算法的稳定性。构建凸包: 扫描完成后,栈中的点就是凸包的顶点,它们按照逆时针方向排列。
2024-01-10 09:30:54
629
原创 OpenGL 绘制一个三角形
在上一篇 OpenGL 顶点着色器和片段着色器的介绍实现中,我们向进一步绘制三角形,事实上只需要修改 一下两处即可。在顶点着色器中定义了三角形的顶点数组。
2024-01-08 20:26:58
408
原创 C++/OpenGL应用程序
GLFW 库包含 GLFWwindow 类,我们可以在其上进行 3D 场景绘制。OpenGL 也向我们提供了用于 GLSL 程序载入可编程着色阶段并对其进行编译的命令。最后 OpenGL 使用缓冲将 3D 模型和其他相关图像数据发送到管线中。图像应用程序大部分是 C++ 编写,OpenGL 调用实现与 3D 渲染相关任务将会使用一些扩展库: GLEW、GLM、GLFW、SOLL2 等。
2024-01-07 22:15:25
635
原创 均匀与准均匀 B样条算法
pt∑i0nPiFiktpti0∑nPiFikt方程中n1n+1n1个控制点,PiP_iPii01⋯ni01⋯n要用到n1n+1n1个kkk次 B 样条基函数FikF_{i, k}Fiki01⋯ni01⋯n, 节点矢量为Tt0t1⋯tnk1Tt0t1⋯tnk1。FiktFikt。
2024-01-04 16:30:24
1394
原创 有效边表填充算法
按照扫描线从上往下的顺序,依次处理和多边形相交的扫描线,对于当前处理的扫描线找到和它相交的所有边的交点,按照交点横坐标从小到大的顺序,两个两个配对,配对之后填充每对交点之间的像素,所有的扫描线处理完成之后,图形的扫描就结束了。三角形与当前扫描线相交的边称为有效边。在处理一条扫描线时仅对有效边进行求教运算,可以避免与多边形的所有边求交。桶表是一个纵向扫描线链表,链表的长度为多边形所覆盖的最大扫描线数,链表的每个节点称为桶,链接边表。这个图事实上就是 DDA 算法中的。为主轴位移的方向,执行。
2024-01-02 23:17:53
1779
原创 椭圆中点算法
椭圆的扫描转换与圆的扫描转换有相似之处,但也有不同,主要区别是椭圆弧上存在改变主位移方向的临界点。瞬时针绘制四分椭圆弧的中点算法,根据对称性可以绘制完整的椭圆。方向上减 1 或 减 0, 取决于中点误差项的值,在区域。而在下一个中点处,不等号改变方向,则说明椭圆弧从区域。显然,在临界点处,法矢量分量的大小发生了变化。的方向递增一个单位,第一个参与判断的中点是。从曲线上的斜率角度来看,在临界点处,斜率为。内,椭圆弧的起点扫描转换后的像素点为。方向为主位移方向,在临界点处,有。内,主位移方向发生变化,由。
2023-12-29 08:18:22
1981
原创 Bezier 曲线拼接圆
为了描述复杂物体的轮廓曲线,经常需要将多段 Bezier 曲线拼接起来,并在结合处满足一定的连续性条件。假设两段 三次 Bezier 曲线分别为。使用一段三次 Bezier 曲线绘制拼接圆。两段三次 Bezier 曲线 达到。参考 《孔令德 计算几何算法与实现》, 在这一点处有相同的切线方向,,其控制多边形的顶点分别为。
2023-12-26 14:09:40
589
原创 WU反走样算法
由离散量表示连续量而引起的失真称为走样,用于减轻走样现象的技术成为反走样,游戏中称为抗锯齿。走样是连续图形离散为想想点后引起的失真,真实像素面积不为 零。走样是光栅扫描显示器的一种固有现象,只能减轻,不可避免。空间混色原理指出,人眼对某一区域颜色的识别是取这个区域颜色的平均值,Wu 反走样算法原理是对理想直线上的任一点,同时用两个不同亮度等级的相邻像素来表示。Wu 反走样算法是对距离进行加权的反走样算法。
2023-12-26 09:02:44
1678
原创 直线中点算法
中点算法是一种浮点数算法,现在的计算机做浮点数运算和整数运算一样快中点算法设计巧妙,不需要取证操作中点算法同样适用于绘制圆和椭圆参考 《计算几何算法与实现》孔令德。
2023-12-24 19:35:36
1044
原创 Bresenham 算法
1965 年,Bresenham 为数字绘图仪开发了一种绘制直线的算法,该算法同样使用于光栅扫描显示器,被称为 Bresenham 算法。
2023-12-24 15:00:28
1299
原创 三次 Bezier 曲线 bern 基函数的形式
Bezier 曲线是三次多项式,称为三次 Bezier 曲线,Bezier 曲线的控制多边形有 4 个控制点,参考 《计算几何算法与实现》孔令德。
2023-12-22 14:20:11
1034
原创 双三次 Bezier 曲面
Bezier 曲面是由 Bezier 曲线扩展得到,它是两组正交的 Bezier 曲线控制点构造空间网格生成的曲面puv∑i03∑j03PijBi3uBj3vuv∈01×01puvi0∑3j0∑3PijBi3uBj3vuv∈01×01其中,PijP_{ij}Pij是 16 个控制点,Bi3uBi3u和Bj3vBj。
2023-12-21 11:17:08
1283
原创 Bezier 曲线 2D
控制多边形的第一个顶点和最后一个顶点位于曲线上,多边形的第一条边和最后一条边表示了曲线在起点和终点的切矢量方向,其顶点则用于定义曲线的导数,阶次和形状。在工程项目中,最常见的是三次Bezier 曲线,其次数是二次Bezier 曲线,高次Bezier 曲线一般很少用。二次 Bezier 曲线,当 n=2 时,Bezier 曲线的控制多边形有 3 个控制点,三次 Bezier 曲线,当 n=3 时,Bezier 曲线控制多边形有 4 个控制点,, Bezier 曲线是二次多项式,称为二次 Bezier 曲线,
2023-12-19 23:10:52
1046
原创 DDA 算法
在 CAD (计算机辅助设计)中,算法是一种简单而有效的直线绘制算法,但有时由于浮点运算的误差,可能导致绘制的直线不够精确。在实际应用中,为了提高精度,可能需要采用其他更复杂的算法,如。CAD 算法是指在计算机辅助设计软件中使用的算法,用于实现各种设计和绘图功能,CAD 广泛应用于建筑、机械、电子等领域,可以大大提高设计效率和精度。绘图算法是 CAD 软件的基础,它包括点、线、圆、曲线、等基本图形绘制方法。CAD 算法是计算机辅助设计的算法,几何算法是解决几何问题的算法。算法常被用来绘制直线。
2023-12-14 14:46:52
549
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人