Eigen库的简单使用说明
Eigen库的简单使用说明稠密矩阵和数组操作矩阵在使用的时候默认命名空间为Eigen
矩阵类矩阵模板Matrix 类采用六个模板参数,其中前三个为强制模板参数
1Matrix<typename Scalar, int RowsAtCompileTime, int ColsAtCompileTime>
Scalar 为数据类型
RowsAtCompileTime 为编译时矩阵的行数
ColsAtCompileTime 为编译时矩阵的列数
在指定行列的大小时也可使用 Dynamic 来使矩阵定义为动态大小,如下所示
1Eigen::Matrix<float, 3, Eigen::Dynamic> m;
也可使用 typedef 来定义特殊的矩阵
1typedef Matrix<float, 3, 1> Vector3f;
矩阵初始化常见的初始化方式如下所示
123456789101112131415// 1.Vector2d a(5.0, 6.0);// 2.Matrix<int, 1, 5> b = {1, 2, 3, 4, ...
new / delete 和 malloc / free 的异同
new / delete 和 malloc / free 的异同栈区和堆区
栈:在函数内部声明的所有变量都将占用栈内存。
堆:这是程序中未使用的内存,在程序运行时可用于动态分配内存。
相同之处new / delete 和 malloc / free 都用于堆区内存的管理
不同之处
new / delete 是操作符,malloc / free 是库函数。
申请内存的过程:
new不需要指定内存大小,而malloc需要
new在申请内存后会调用类的构造函数
new申请动态内存失败时,会抛出bac_alloc异常
new申请动态内存成功时返回的是对象类型的指针,无须进行类型转换;malloc申请动态内存成功时返回void * ,需要通过强制类型转换。
释放内存的过程:
调用free之前需要检查需要释放的指针是否为空,使用delete 释放内存则不需要检查指针是否为NULL
delete在释放内存前会调用类的析构函数
浅析Cpp中的构造函数和析构函数
浅析Cpp中的构造函数和析构函数构造函数分类构造函数分为以下四类:
⽆参数构造函数:如果没有明确写出⽆参数构造函数,编译器会⾃动⽣成默认的⽆参数构造函数。
⼀般构造函数:创建对象时根据传⼊参数不同调⽤不同的构造函数。
拷⻉构造函数:拷⻉构造函数的函数参数为对象本身的引⽤,⽤于根据⼀个已存在的对象复制 出⼀个新的该类的对象。
类型转换构造函数:根据⼀个指定类型的对象创建⼀个本类的对象,也可以算是⼀般构造函数的⼀种。
这里注意,还有一个与拷贝构造相关的运算符重载:
赋值运算符的重载:类似拷⻉构造函数,将=右边的本类对象的值复制给=左边的对象,它不属于构造函数,=左右两边的对象必需已经被创建。如果没有显示的写赋值运算符的重载,系统也会⽣成默认的赋值运算符,做⼀些基本的拷⻉⼯作。
初始化表(参考)1234567class Test{ int a; double b; string c; Test(int a1, double b1, string c1): a(a1), b(b1), c(c1){}};
性能消耗构造函数的 ...
如何实现简易的火焰传播效果
如何实现简易的火焰传播效果先展示下效果
具体实现所需组件:12345├────── StaticMesh (网格体组件)│ ├── Sphere (球形碰撞体)│ └── ParticleSystem (粒子系统)
蓝图首先,触发时开启粒子效果,其次将自己可燃的标签删除,再次获得碰撞体内所有的可燃物品。
最后,点燃所有可燃物品。
大功告成。
浅析常见的设计模式
浅析常见的设计模式状态模式应用:角色状态、场景切换、UI切换等。
意图:允许对象在内部状态发生改变时改变它的行为,对象看起来好像修改了它的类。
主要解决:对象的行为依赖于它的状态(属性),并且可以根据它的状态改变而改变它的相关行为。
何时使用:代码中包含大量与对象状态有关的条件语句。
如何解决:将各种具体的状态类抽象出来。
关键代码:通常命令模式的接口中只有一个方法。而状态模式的接口中有一个或者多个方法。而且,状态模式的实现类的方法,一般返回值,或者是改变实例变量的值。也就是说,状态模式一般和对象的状态有关。实现类的方法有不同的功能,覆盖接口中的方法。状态模式和命令模式一样,也可以用于消除 if…else 等条件选择语句。
应用实例: 1、打篮球的时候运动员可以有正常状态、不正常状态和超常状态。 2、曾侯乙编钟中,’钟是抽象接口’,’钟A’等是具体状态,’曾侯乙编钟’是具体环境(Context)。
外观模式应用:状态切换和维护时可使用外观模式简化Client的代码。
意图:为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。
主要解 ...