Java程序员的C++回归路(二)

接前: 之前记录的笔记,终于想起来上传完整。 第7章: 类 定义抽象数据类型 任何对成员对象的访问都可以解释为使用this来访问,即this->member。 =default :默认构造函数。如果定义在类内部,则默认是内联的。 struct和class 使用struct和class定义类,唯一的区别在于默认的访问范围,struct是public而class是private 友元函数 类的特性 定义类型成员 在类中使用格式: public: typedef std::string::s
分类: 其他 发布时间: 07-16 23:20 阅读次数: 0

Linux下自制回收站

Linux下自制回收站   相信熟悉linux系统的人都知道rm的厉害,也大都听说过有rm造成的生产事故,本文将详细介绍如何在linux环境下制作回收站以避免数据误删除,如何恢复回收站中的数据,如何查看回收站中的数据,如何清除回收站中的数据。 1、利用别名   alias rm=trash  ---在执行rm时,其实是调用trasn()方法,trash方法在后面介绍,其作用是移动文件   alias ur=undelfile ----在执行ur时,其实是调用undelfile()方法,unde
分类: 其他 发布时间: 07-16 23:20 阅读次数: 0

算法篇-11-分支限界-布线&装载&旅行售货员

分支限界 回溯法以深度优先搜索解空间树,分支限界法以广度优先搜索。 即在当前结点处生成其所有子节点,然后从当前活结点的列表中选择下一个扩展结点重复如此,当然不要忘记了判断是否存在可行解。 由于采用树的广度优先遍历,所以我们一般用队列实现。队列可分为一般队列FIFO与优先队列(人工指定优先级)。 在选择扩展结点时我们一般加限界条件加以取舍。 关于剪枝与限界策略即判断扩展结点的子树是否可存在
分类: 其他 发布时间: 07-16 23:20 阅读次数: 0

OpenCV学习一《Linux下安装OpenCV》

第一步:安装源码前先安装好需要的第三⽅方环境 需要的编译环境 ■ [compiler] sudo apt-get install build-essential # 注释说明 64位ubuntu在安装build-essential遇到依赖问题的解决办法 解决方案的博客地址:https://blog.csdn.net/sunranlb/article/details/46946147 依赖的库 ■ [required] sudo apt-get install cmake git libgtk2
分类: 其他 发布时间: 07-16 23:20 阅读次数: 0

算法篇-12-分支限界-限定价格内最小重量机器设计&运动员最佳组队

本系列所有代码https://github.com/YIWANFENG/Algorithm-github 限定价格内最小重量机器设计 题目: 一个机器,由n个部件组成,每个部件都可从m各不同的供应厂商处购得,设w[i][j]是从j处购得部件i的重量,c[i][j]是价格。给出总价格不超过d的最小重量机器设计。   算法分析与相关公式: 既然要最小重量,我们就选中以当前购物方案E的总重量
分类: 其他 发布时间: 07-16 23:20 阅读次数: 0

算法篇-13-随机化-线性同余&主元素问题&N皇后问题&素数测试

本系列所有代码https://github.com/YIWANFENG/Algorithm-github 线性同余产生伪随机数 算法思路分析以及相关数学公式: X(n+1) = (a * X(n) + c) % m这样的公式,其中:  模m, m > 0 系数a, 0  增量c, 0  原始值(种子) 0  其中参数c, m, a比较敏感,或者说直接影响了伪随机数产生的质量
分类: 其他 发布时间: 07-16 23:20 阅读次数: 0

算法篇-14-A*算法解决八数码问题

问题描述 八数码问题:在3×3的方格棋盘上,摆放着1到8这八个数码,有1个方格是空的,其初始状态如图1所示,要求对空格执行空格左移、空格右移、空格上移和空格下移这四个操作使得棋盘从初始状态到目标状态。 1 2 3 8  0 4 7 6 5  (a)初始状态
分类: 其他 发布时间: 07-16 23:19 阅读次数: 0

Adaboost算法与应用实例简析

Adaboost 算法wiki简介 AdaBoost,是英文"AdaptiveBoosting"(自适应增强)的缩写,是一种机器学习方法,由YoavFreund和RobertSchapire提出。[1]AdaBoost方法的自适应在于:前一个分类器分错的样本会被用来训练下一个分类器。AdaBoost方法对于噪声数据和异常数据很敏感。但在一些问题中,AdaBoost方法相对于大多数其它学习算法
分类: 其他 发布时间: 07-16 23:19 阅读次数: 0

Kmeans算法及其示例

Kmeans算法 Kmeans是简单的聚类分析算法。其常用在数据分析与人工智能中。 简单说,Kmeans算法就是把一个集合中的东西分为若干子集,这几个子集内的元素具有空间相近或者特点相近。 做法: 1.    随机选取K各中心点,生成对应的k个簇。 2.    遍历所有的数据点,依据“距离’”将每一个数据点划分到最近的中心点所在的簇。 3.    计算每个簇所有的数据点的平均值
分类: 其他 发布时间: 07-16 23:19 阅读次数: 0

BMP图片格式解析并显示示例程序

格式原理参考 http://blog.csdn.net/o_sun_o/article/details/8351037 http://blog.csdn.net/lanbing510/article/details/8176231 https://en.wikipedia.org/wiki/BMP_file_format 关于解析以上几个网站,尤其wiki写的很好,我就
分类: 其他 发布时间: 07-16 23:19 阅读次数: 0

零和博弈-极大极小搜索&Alpha-Beta剪枝(井字游戏)

零和博弈概念 二人利益对立完备信息博弈过程,在我们分析表达中就是对一个过程进行按规定双方交替操作,每次操作即搜索时选择对自己有利的情况(获益选最大,损失选最小),借助的数据结构自然是树。博弈树中每一层是某一方的走法选项。假设先手为MAX,后手为MIN。MAX可选的方案间为or关系(MAX自己掌握选项),MAX可选的方案对于可供 MIN选的方案为and关系(MAX无法决定,是MIN决定,也就是
分类: 其他 发布时间: 07-16 23:18 阅读次数: 0

求解用g(X)的线性表达式最佳近似f(Y)的一种方式

在复习概率论时突然发现这一条,想到以后自己应该会用上,所以在这里记录下。这里是利用g(X) 的线性表达式近似表达f(Y),或许以后更多的是用g(X)的非线性表达式表达f(Y)吧,那么有时间也写写泰勒表达式吧。   首先用e表示这种关系的近似程度,在概率论中我们可以使用方差来表示。 e = E{ (Y – (a+bX))^2} =E(Y^2) + b^2*E(X^2) +a^2 -2b*E(X
分类: 其他 发布时间: 07-16 23:18 阅读次数: 0

设计自己的软渲染器1-准备篇

软渲染器:简单说来就是借助软件将3D模型数据渲染成我们屏幕上的画面内容。 相关知识:线性代数,基本图形学知识,基本操作系统知识。 主要参考:《计算机图形学》第四版《3D游戏编程大师技巧》 Blog*N。 《3D游戏编程大师技巧》是完成了一个3D游戏引擎,而这里所写的软渲染器只是其中一部分,本系列只是为了解流程,不考虑效率,没有做相关优化。 系列代码:https://github
分类: 其他 发布时间: 07-16 23:18 阅读次数: 0

设计自己的软渲染器2-构建3D世界到2D屏幕显示的基本变换

说明 在这一节中,我们将一步步的从基础构起,完成由3D物体坐标转换为到屏幕上所看到的图像的变换流程,最终反映在程序中便是我们输入的三位点依据我们设置的观察方式投影到了屏幕上。这部分内容可以参考《计算机图形学》第四版。   首先明白几个概念。 1.    模型坐标系,在此坐标系下构建我们的3D物体(一般以物体几何中心为坐标中心)。 2.    世界坐标系,拥有所有3D物体的整个3D世界。
分类: 其他 发布时间: 07-16 23:18 阅读次数: 0

设计自己的软渲染器3-渲染线框模型

在这一部分,我们将实现线框模型的显示与渲染,实际上就是把点连接起来。 画线算法很多,我在这里介绍经典的画线算法: Bresenham快速画直线算法 直线光栅化是指用像素点来模拟直线,比如下图用蓝色的像素点来模拟红色的直线。 给定两个点起点P1(x1, y1), P2(x2, y2),设line(p1,p2)的斜率为k,p1.x 则,从p1开始,下一个点要么在他的右邻接点要么在
分类: 其他 发布时间: 07-16 23:17 阅读次数: 0

设计自己的软渲染器4-光栅化与Z-buffer

这一次我们将使用光栅化与Z-Buffer来填充我们之前所画的线框模型中的三角形面。  光栅化 我们模型经过投影变换后的仍然只是几个顶点的位置信息而已,如果我们画三角形,想要的不仅仅是三个顶点,还想要确定填充三角形所需要的所有像素的信息(连续信息描述变换为离散信息描述),总结来说,光栅化就是确定一个几何图元所覆盖的所有像素及其信息。 如下图所示: 接下来我们将实现基于线扫描的光栅化三
分类: 其他 发布时间: 07-16 23:17 阅读次数: 0

设计自己的软渲染器5-光照

之前我们为每一个面随机赋予颜色,然而在渲染场景时,为了贴合现实世界,还需要在渲染中加入明暗的对比。在这我们不仅要实现黑白变化还有每个面受到光照的影响后产生的亮度变化。 平面着色 现在先介绍简单的平面着色。它会计算光照的角度,使每个面有更好的光照效果,但每个面都会被指定一个单一且没有变化的颜色。这种方法虽然会产生出不真实的效果,但相比于没有明暗变化已经进步了。   计算每一个面的法线向量,由
分类: 其他 发布时间: 07-16 23:17 阅读次数: 0

设计自己的软渲染器6-纹理映射与背面剔除

纹理映射 纹理映射说白了就是将一幅图像贴在我们所要贴的物体的表面。 为每个多边形顶点附一个纹理坐标,然后再纹理素材上取样贴在一个多边形上,然后达到所要的视觉效果。 如下为一个正方体箱子每个面都贴上纹理。   将上图当作一个颜色矩阵,每个颜色有一个坐标(U,V),而三维的立方体每个点都有一个三维坐标(x,y,z),我们利用坐标映射((x,y,z)-(U,V))为空白的立方体着色。
分类: 其他 发布时间: 07-16 23:17 阅读次数: 0

设计自己的软渲染器-附代码相关

本系列github代码库地址 https://github.com/YIWANFENG/MiniRenderer 本系列可运行项目下载地址 http://download.csdn.net/download/hffhjh111/10210438 一些的参考资料 大牛Blog: https://www.davrous.com/2013/06/13/tutorial-serie
分类: 其他 发布时间: 07-16 23:16 阅读次数: 0

线性同余方程-扩展欧几里得算法

线性同余方程定义对于线性同余方程这个式子的意思即 (ax)%n = b  如果 x0 是方程的一个解,那么所有的解可以表示为:其中d = gcd(a,n)性质此方程有解当且仅当 b 能够被 a 与 n 的最大公约数整除(记作 gcd(a,n) | b)用算法表示即 b%gcd(a,n) == 0  解法推理(扩展欧几里得算法求特解)由上面可知我们只要求出一个特解即可得通解。由裴蜀定理(对任何整数a...
分类: 其他 发布时间: 07-16 23:16 阅读次数: 0