
算法
文章平均质量分 59
一片云略过
这个作者很懒,什么都没留下…
展开
-
旋转矩阵到欧拉角的变换以及注意点(matlab的dcm2angle函数和网络常见的python函数对比分析)
欧拉角两种不同的定义方式外旋:在从一个坐标系旋转到另一个的过程中,以固定的最初的坐标系为依据,绕X、Y、Z三个轴的指向方向做旋转;**内旋:**在一个坐标系旋转到另一个过程中,例如旋转顺序为x-y-z,那么在最初绕x轴旋转后,Y、Z的轴发生变化,之后绕Y轴旋转时按照第一步旋转过后的Y’方向做旋转,以此类推, 完成Z轴的旋转。Tips:欧拉角表示的旋转方式必须要有对应的旋转顺序(如X-Y-Z、Y-X-Z等),不同的旋转顺序将导致不同的结果。计算过程验证通过维基百科的内旋表查看,不同的旋转方式也原创 2021-07-16 16:12:23 · 1613 阅读 · 0 评论 -
pytorch中gather函数的官方样例理解
在简书、csdn中的很多帖子中,都没有根据gather函数的官方解释进行理解的,很多同学们根据二维矩阵或三维矩阵的单例去理解后不具备通用性,这是因为不结合三维角度去解释是错误的。下边给出结合官方解释去理解gather函数的处理过程的思路。这里是官方文档的解释torch.gather(input, dim, index, out=None) → TensorGathers values along an axis specified by dim.For a 3-D tensor the outp原创 2021-04-07 17:03:56 · 397 阅读 · 5 评论 -
opengl画圆柱体、圆锥等并使用四元数旋转
opengl画圆锥和圆柱体具体资源欢迎下载:https://download.youkuaiyun.com/download/qq_32563773/13077923画圆锥如要画出想画的立方体,必须计算出来顶点数组对象,并且根据顶点定义的位置,简历索引关系,进而使用CreateGLResources函数完成绘画。第一步计算出顶点位置:我们可以将底面的圆看成是一条直线绕一个顶点旋转,这样旋转一定的角度后,另一个定点的位置即所要求的顶点坐标。若我们分的够多,即旋转角度设立的越小,越相似于圆形。(类似于古代割圆术的原创 2020-10-30 15:51:04 · 3025 阅读 · 0 评论 -
使用四元数完成控制三维物体旋转全过程(详解全流程)
使用四元数完成控制三维物体旋转全过程(详解全流程)在使用四元数的时候,查到晚上很多的文章要么是针对数学问题就行推导,要么就是胡乱复制粘贴乱写一起的文章,而没有详细解释在实践过程中,如何一步步完成计算的全部过程,对小白极度不友好。因此本人写出本文章,本文不讲数学原理,只专注于描述全部实现的过程,对数学感兴趣的可以自行百度,希望能够和大家沟通交流,同时减轻小白的理解压力。同时欢迎下载相应的资源:https://download.youkuaiyun.com/download/qq_32563773/13077923原创 2020-10-30 15:39:36 · 3206 阅读 · 1 评论 -
鼠标点击画出几何图(glad+glfw的方法进行opengl开发)
思路:点击窗口,获取窗口的位置后存储下来,以此完成所有点击点的信息。并在每一帧的渲染中渲染出全部的顶点,即可完成画三角形。在这里使用了如下两个函数,检测是否鼠标有移动或者点击动作:在鼠标点击后,在vector中添加顶点位置信息:同时,在glfwCursorPosCallback函数中,会得到当前帧鼠标的位置,但是鼠标位置需要计算在当前opengl窗口的位置,由于该函数会实时更新数据,因此可以在此函数中更新GPU中的缓存数据,完成实时显示的显示效果:最后设定好渲染器后,可显示画三角形:.原创 2020-10-30 15:03:42 · 1600 阅读 · 1 评论 -
画出koch snowflake(glad+glfw的方法进行opengl开发)
本文使用glad+glfw的方法进行opengl开发对于koch snowflake的画法有很多,我选择采用对三角形的线段进行划分的方法,取线段的中间1/3段,然后旋转60度得到第三个点的坐标,进而渲染出整个koch snowflake。计算原理:首先计算线段中的点的位置:根据两个点的坐标,乘以线段的比例位置,计算得到分割的点的坐标。根据两个坐标的点,计算第三个点的坐标,具体原理见上图.最后使用递归的方式得到所有的线段。glBufferData在把输出传到显存前,会先清空显存内容,只保留原创 2020-10-30 15:00:53 · 523 阅读 · 0 评论 -
stl、obj、3DS三种3D模型加载,使用OpenGl+GLSL框架并添加双层纹理,并完成逐顶点光照和逐像素光照(GouraudShading+PhongS)
搭建自己的OpenGl+GLSL框架并添加第二张纹理前言在第一个实验中,我发现使用glut的一些不方便之处,同时意识到实验一中的不足,对**于OBJ文件并没有读取出其中的纹理信息,**因此,在查阅相关的文档后发现,GLFW代培GLAD是目前较为流行的方案,相对于glut来说,glad更新更流行,因此换用了次框架,同时使用了Assimp库。一个非常流行的模型导入库是Assimp,它是Open Asset Import Library(开放的资产导入库)的缩写。Assimp能够导入很多种不同的模型文件格式原创 2020-05-22 10:18:44 · 2058 阅读 · 0 评论 -
Vzense的DCAM710深度相机使用
Vzense的DCAM710深度相机使用为了完成现实中人体和unity开发的虚拟世界实现联动,即现实中的人映射到虚拟环境中,以此实现人机交互。本人初始时希望选用kinect完成开发,但是由于采购问题,以及产品的便携性,最终转为选用tof相机完成本项目。在识别人体的关节点第一步,就是识别出人体的轮廓,以下为轮廓的识别效果:...原创 2020-08-25 20:21:00 · 1475 阅读 · 8 评论 -
递归详解及算法应用
本文来自B站郝斌老师的《数据结构》整理的来,若有侵权,欢迎私信我。课程来源:https://www.bilibili.com/video/av6159200?p=59递归定义:一个函数自己直接或间接调用自己递归满足三个条件递归必须得有一个明确的中止条件该函数所处理的数据规模必须在递减这个转化必须是可解的循环和递归递归易于理解速度慢存储空间大循环不易理解速度快存储空间小函数的调用:当在一个函数的运行期间调用另一个函数时,在运行被调函数之前,系统需要完成.原创 2020-08-25 19:58:59 · 203 阅读 · 0 评论 -
链表的定义及概念(附c语言实现链表的初始化、长度计算、排序、插入、删除、显示的函数实现过程)
链表链表为离散存储的数据结构。由n个节点离散分配,彼此通过指针相连,每个节点只有一个前驱节点和后驱节点,首节点没有前驱节点,尾节点没有后驱节点。关键概念:首节点:第一个有效节点尾节点:最后一个有效节点头节点:第一个有效节点前的那个节点头节点不存放有效数据加头节点的目的主要是为了方便对链表的操作头指针:指向头节点的指针变量尾指针:指向尾节点的指针变量实现链表元素的插入和删除算法(伪代码):插入:r=p->pNext; p->pNex原创 2020-08-06 09:02:28 · 559 阅读 · 0 评论 -
数据结构预备知识---指针、指针与一维数组、指针与结构体
指针指针【int * p】表示int类型的,存放着地址的变量p。p表示一个地址,*p表示指向p地址的一个变量。例如:int main (void){ int i = 10; int j; int * p; p = &i;//使用i的地址为p初始化 j = *p; printf("i = %d\n j = %d \n *p = %d\n",i,j,*p); //输出为i = 10,j=10,*p=10 *p =原创 2020-08-03 21:16:41 · 220 阅读 · 0 评论 -
动态规划算法使用特点与例题
动态规划动态规划题目的特点:计数-有多少种方式走到右下角-有多少方式选出k个数使得和是Sum求最大最小值-从左上角走到右下角路径的最大数字和-最长上升的子序列长度求存在性-取石子游戏,先手是否必胜-能不能选出k个数使得和是Sum例题:有三种硬币,分别面值2元,5元和7元,每种硬币都有足够多。若需要买一本书,如何用最少的硬币组合正好付清,不需要对方找钱?拼出x所需要的最少硬币数为:F[x]=min(F[x−2]+1,F[x−5]+1,f[x−7]+1)F[x]原创 2020-07-30 16:27:12 · 375 阅读 · 0 评论