cpp
文章平均质量分 60
cxy_hust
这个作者很懒,什么都没留下…
展开
-
字符的基本处理
【代码】字符的基本处理。原创 2022-08-24 16:13:19 · 240 阅读 · 0 评论 -
滑动窗口2[lc]
priority_queue经常用 或者st、edhttps://leetcode.cn/problems/constrained-subsequence-sum/1499findMaxOfEquationInVec 满足不等式的最大值1 题目https://leetcode.cn/problems/max-value-of-equation/1610visiblePoints 可见顶点的最大数目1 题目https://leetcode.cn/problems/maximum-number-of原创 2022-07-10 11:12:52 · 224 阅读 · 0 评论 -
lc回溯1
回溯的思想在于回这个字,以最经典的八皇后作为例子:当然,回溯也有当前搜索的解空间的情况,比如对于棋盘就是目前已经放置的所有的位置,可以使用记忆化搜锁下面的题目中0698就使用了https://leetcode.cn/problems/partition-to-k-equal-sum-subsets/1 解题思路:2 1.2的时机例子如下:典型的多余的for循环:1取到1,2取到2,那么当最外层的2取到2,1又取到1,那不就是重复计算了嘛标准的带有返回值的写法:我写的回溯不喜欢带返回值,后面是带有返回原创 2022-07-04 20:58:47 · 173 阅读 · 0 评论 -
cpp调用restapi的简单尝试 - restc-cpp client
restClient in cpp: https://github.com/jgaa/restc-cppopenssl下载:https://github.com/CristiFati/Prebuilt-Binaries/blob/master/OpenSSL/v1.1.1/OpenSSL-1.1.1o-Win-pc064.zip个人示例:https://mock.apifox.cn/m1/1153222-0-default/roomlist4 示例代码以及测试安装docker,执行restc-cpp的原创 2022-06-21 17:29:48 · 394 阅读 · 0 评论 -
trajan 塔杨算法 求割点,割边
t[i][j]原创 2022-06-21 12:47:11 · 169 阅读 · 0 评论 -
dijstra迪杰斯特拉算法
t[i][j]原创 2022-06-21 12:46:29 · 155 阅读 · 0 评论 -
learnOGL 结合代码看一些光照模型以及高级光照
直接看这个shader:2 gamma矫正一句话理解他: 物理显示器显示(线性空间)的颜色亮度为0.5,人看到的亮度会为0.5^2.2,也就是更暗了,于是需要先做1/2.2次幂的拔高在使用了gamma校正之后,另一个不同之处是光照衰减(Attenuation)。真实的物理世界中,光照的衰减和光源的距离的平方成反比。但是由于本身有gamma矫正,所以我们就用双曲线函数衰减就行了,因为最后会乘以2.2次幂!约等于距离平方反比3 阴影映射(定向阴影贴图技术)(基于光照空间的深度缓冲和正常渲染空间的深度缓冲做原创 2022-06-20 22:02:03 · 258 阅读 · 0 评论 -
杨氏矩阵(young table)
t[i][j]原创 2022-06-16 17:43:40 · 134 阅读 · 0 评论 -
games101中的离线渲染 - 光线追踪
Whitted-style光线追踪算法是由Turner Whitted在1980年提出的,用于解决复杂曲面的反射折射效果。最终每个像素的颜色(相比于blin phong 模型多了反射和折射):fragColor = 直接光照颜色 + 反射光带来的颜色 + 折射光带来的颜色。核心思想:利用了光路是可逆的,由浅入深主要有以下两个步骤:如下图:从相机作为原点出发,连接像素发射一条光线ray,假设碰撞到物体就结束(不反射,不折射3),那么直接光源照射到碰撞到物体的点,然后逆着ray到对应的像素,就得到了对应像素的原创 2022-06-14 16:40:58 · 374 阅读 · 0 评论 -
[MVP viewport 相机详解]实时渲染里的光线追踪 - games202实时渲染课后作业5
回顾基于蒙特卡罗中的rayTracing,大致看一下其计算量:当图像目标设置为768768,然后每个像素sample32次(蒙特卡罗的经典方式),每次光线进入到下一层的概率为0.25,那么平均castray会被计算多少次呢?32 * (10.25 + 2 * 0.125 + 3 0.0625 + …) 大概就是0.7532 = 24次,也就76876824的castRay的计算,花费的时间大概为23min,效果为:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YWO9Zm6原创 2022-06-14 16:39:21 · 606 阅读 · 0 评论 -
二分搜索1
二分原创 2022-06-11 14:23:10 · 79 阅读 · 0 评论 -
lcBFS1 题集
1 BFS最关键的是:- bfs本身的特性,一个是按照层数往下遍历,一个是可以决定是否遍历完当前层再往下遍历- bfs的队列初始化即为bfs的搜索起点,然后注意状态问题,当每个节点带有状态以后,bfs的visited变量就不仅仅是node的编号,应该是node的编号 + “当前状态”,具体参考(0864,0847)- 注意:遍历当前层,需要把size记录成临时变量,因为curLevel会加入新元素- 注意:入队后就需要置为visited,否则可能重复入队bfs的遍历本质上可以看成当前点,到所有后原创 2022-05-30 13:15:32 · 147 阅读 · 0 评论 -
algoHierHolzerEulerPath - 半欧拉图/欧拉图的欧拉路径计算
1 欧拉图基本概念:圈:任选图中一个顶点为起点,沿着不重复的边,经过不重复的顶点为途径,之后又回到起点的闭合途径称为圈。欧拉路径:通过图中所有边一次且仅一次遍历所有顶点的路径称为欧拉(Euler)路径;欧拉回路:通过图中所有边一次且仅一次行遍所有顶点的回路称为欧拉回路;欧拉图:具有欧拉回路的图称为欧拉图;半欧拉图:有欧拉路径但没有欧拉回路的图称为半欧拉图。欧拉图与半欧拉图的判定:G是欧拉图 ⇔ G中所有顶点的度均为偶数 ⇔ G是若干个边不重的圈的并。G是半欧拉图原创 2022-03-07 15:41:51 · 1059 阅读 · 0 评论 -
std::thread传入引用值需要使用std::ref[ref][cpp]
1 std::thread传入引用值需要使用std::refstd::ref的说明: Constructs an object of the appropriate reference_wrapper type to hold a reference to elem.其实主要是,如果要向thread传参的时候,该参数在线程内会被修改,需要用这个ref作为一个wrapper将对象包裹成为一个引用然后传入。void main() { while(1){ ...<省略>原创 2021-08-28 17:43:28 · 1351 阅读 · 0 评论 -
pangolin动态点云展示示例[pangolin][动态点云]
0 结果展示1 下载编译pangolin的库https://github.com/stevenlovegrove/Pangolin.git该库中本身含有libpng, libjpg, libzip2 当需要调用该库时:调用时依赖如下:(本项目并未上传所有依赖,部分依赖需要单独下载然后放到thirdparty目录里)# includeF:\prjs\ORB_SLAM3_Fix\ORB_SLAM3\Thirdparty\Pangolin\include;F:\prjs\ORB_SLAM3_Fix原创 2021-08-28 17:42:26 · 949 阅读 · 0 评论 -
Clion在win10使用Glog & 日志打印到标准输出[glog][打印到标准输出]
glog使用:项目地址:git@github.com:xychen5/tryGlog.git推荐使用类似于clion的ide,然后打开该项目,即可编译运行。1 主要作用:能够将glog的日志在cmd中打印主要调用了函数: google::SetStderrLogging(google::INFO); // print the logs whose severity > [info]2 output:样例输出代码如下:I0718 16:09:07.626883 18628 ma原创 2021-07-18 16:25:41 · 1184 阅读 · 0 评论 -
freeimage转到cvmat & 单通道图像转到3通道[freeimage][cvmat]
0 结果1 代码将freeImage转为cv::mat,代码如下:#include <FreeImage.h>#include <opencv2\opencv.hpp>using namespace cv;// #define _CRT_SECURE_NO_WARNINGS#pragma warning(disable : 4996)void FI2MAT(FIBITMAP* src, Mat& dst){ //FIT_BITMAP //s原创 2021-07-17 19:38:27 · 427 阅读 · 0 评论 -
使用pangolin 动态展示点云变化[pangolin][动态ply]
0 结果展示1 下载编译pangolin的库https://github.com/stevenlovegrove/Pangolin.git该库中本身含有libpng, libjpg, libzip2 当需要调用该库时:调用时依赖如下:(本项目并未上传所有依赖,部分依赖需要单独下载然后放到thirdparty目录里)# includeF:\prjs\ORB_SLAM3_Fix\ORB_SLAM3\Thirdparty\Pangolin\include;F:\prjs\ORB_SLAM3_Fix原创 2021-07-17 18:50:28 · 801 阅读 · 0 评论 -
osg智能指针错误 - Warning: deleting still referenced object
1.1 问题描述类的定义如下:class QOsgWidget {public: ///< essential widget, use this ptr to be the real widget osgQOpenGLWidget* pWidget = nullptr; // QOsgWidget(QWidget* parent = nullptr); QOsgWidget(const std::string& modelPath, QWidget* pa原创 2021-06-15 19:13:57 · 430 阅读 · 1 评论 -
关于内存申请位置不对带来的野指针问题[段错误][非法内存访问]
2 关于内存申请位置不对带来的野指针问题2.1 问题描述: resize(height() * 639 / 480, height()); QOsgWidget *bBoxEdit = new QOsgWidget(modelPath, static_cast<QWidget*>(this)); // use an ArgumentParser object to manage the program arguments.原创 2021-06-06 21:15:53 · 188 阅读 · 4 评论 -
编译orb_slam3[windows]
1 下载git clone https://github.com/UZ-SLAMLab/ORB_SLAM3.git ORB_SLAM3建议编译前,先看一下该项目上的一个pull request:(使用原来项目问题过多, 遇到的每一个问题在第4节都会详细描述,于是使用如下的一个PR)https://github.com/UZ-SLAMLab/ORB_SLAM3/pull/53推荐使用vs2015生成器;2 编译2.1 DBoW2 编译(如果使用pr,本步骤可以不看,2.3的orbslam3也对所原创 2021-05-31 19:26:11 · 1363 阅读 · 1 评论 -
osg模型调整
osg模型调整光照以及模型闪烁问题[z-lighting]0 模型闪烁原因推测1 关于模型闪烁的问题,很可能是由于坐标的值的有效位数超过了7位,目前的opengl的gpu渲染(老一点的显卡以及gl)都是以单精度来渲染点的位置的,所以如果坐标很大,很可能导致单精度无法精确表示有效位数超过7位的数据,然后发生截断。2 关于z-lighting的问题,尝试了网上大多数的方法:可以使用osg封装的polygonOffset来避免重叠面片交替出现的问题,当然最好的方案是找的模型本身重叠面片就少1 mesh原创 2021-05-20 10:29:23 · 985 阅读 · 0 评论 -
windows下编译colmap3.6[colmap][gmp][mfpr]
编译colmap1 前期准备1 github上下载colmap稳定版源码:https://github.com/colmap/colmap/archive/refs/tags/3.6.zip之后解压进入,执行: git init2 确保编译环境1 确保你的vs不是vs2019 16.9.3以及以上,否则会有奇怪的cuda错误, 解决方案是:1.1 将vs2019卸载1.2 去https://docs.microsoft.com/en-us/visualstudio/releases/20原创 2021-05-16 15:05:51 · 1883 阅读 · 0 评论 -
野指针带来的堆错误(nt.dll)[堆已损坏]
记野指针带来的堆错误错误流程:结构体里面有指针,结构体的vector整个赋值给了别人,然后自己的直接clear了,然后vector的clear()会释放指针的内存,但是却不会将指针置空再去访问时就出错简单错误再现#include <iostream>class A {public: A() { ptr = new char[3]; } inline void Release() { if (ptr != nullpt原创 2021-03-27 17:25:24 · 458 阅读 · 0 评论 -
error LNK2038: 检测到XXXX_DEBUG_LEVEL的不匹配项__可能的解决方案[vs2019]
1 问题原因问题的错误日志:1>libboost_regex-vc140-mt-1_61.lib(static_mutex.obj) : error LNK2038: 检测到“_ITERATOR_DEBUG_LEVEL”的不匹配项: 值“0”不匹配值“2”(CalVolumeDiff.obj 中)1>libboost_regex-vc140-mt-1_61.lib(static_mutex.obj) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“原创 2021-03-01 21:08:54 · 572 阅读 · 0 评论 -
linux安装eigen与测试
1 下载git clone https://gitlab.com/libeigen/eigen.git2 编译安装cd eigenmkdir buildcmake ..make install该方法默认安装在:/usr/local/include/eigen3 /usr/local/share/eigen33 测试将下面代码命名为testEigen.cpp:#include <iostream>#include <eigen3/Eigen/Dense>u原创 2020-09-24 19:44:04 · 4353 阅读 · 0 评论 -
karosaju算法求图中的强连通子集
1 karosaju算法的理解:对其每一步的理解详情见:https://www.cnblogs.com/nullzx/p/6437926.html2 karosaju算法的实现:此算法主要针对有向图的强连通子集的查询;对原图进行dfs(当然有可能是多次,直到你遍历所有的点),按照结束时间从早到晚,将其压入finish的数组中; 对逆图: 按照1步里面的finish,从最晚结...原创 2019-09-07 19:48:57 · 393 阅读 · 0 评论 -
Akari问题详细解答
1,问题:1,问题描述:Akari 问题Akari问题有时又被称为Light up或者Beleuchtung,源于日本逻辑解密游戏系列Nikoli,同属于Nikoli谜题的除Akari之外还有Sudoku(数独)和Kakuro(数谜)等。游戏规则很简单。点灯游戏的棋盘是一张方形格网,其中的格子可能是黑色也可能是白色。游戏目标是在格网中放置灯泡,使之能照亮所有的白色方格。如果一个方格...原创 2019-07-27 23:00:22 · 1968 阅读 · 0 评论