奇异递归模板模式(curiously recurring template pattern,CRTP)是C++模板编程时的一种常见的做法,即把派生类作为基类的模板参数。 一般的形式为 template <class T> struct Base { void interface() { // ... static_cast<T*>(this)->implementation(); // ... } static void static_func() { // ... T::static…
奇异递归模板模式(curiously recurring template pattern,CRTP)是C++模板编程时的一种常见的做法,即把派生类作为基类的模板参数。 一般的形式为 template <class T> struct Base { void interface() { // ... static_cast<T*>(this)->implementation(); // ... } static void static_func() { // ... T::static…
第一章 简介 1.1 什么是Cg Cg是一门编程语言。Cg在图形硬件汇编语言的基础上封装了一层,其与OpenGL和DX的高级光照语言兼容。Cg基于C语言。 1.1.1 为可编程图形硬件设计的语言 Cg的目标是:为使用图形硬件渲染的物体的形状、外观和运动提供可编程控制的能力。当然也可以用来实现物理模拟、混合和其他非光照任务。 1.1.2 Cg的数据流模型 Cg是基于数据流模型的。Cg程序实际上是在GPU上执行的。 1.1.3 图形处理器的特殊性和中央处理器的通用性 CPU是以多种用途为目…
条款01:视C++为一个语言联邦 C++是一种多重范型编程语言,同时支持过程形式,面向对象形式,函数形式,泛型形式,元编程形式的编程方式 C++主要有四种编程风格 C: 以区块、语句、预处理器、内置类型、数组、指针等为主 C with class: 围绕构造函数、析构函数、封装、继承、多态、动态绑定等概念展开 Template C++: 模板以及模板元编程范型 STL: 协调容器、迭代器、算法及函数对象的模板库 C++高效编程规则取决于你使用C++哪一部分 条款02:尽量以const,enum,inline替换 #…
[author]详见下载,包括,论文,参考文献,视频,源代码,书签[/author] 基于 3D 激光雷达的运动目标检测与追踪系统设计与实现 摘要 自动驾驶技术是指在无需人类的干预下,汽车能够感知周围的环境并自主做出决策。针对在汽车自主驾驶的过程中,面对复杂路况下,对多个运动目标进行实时检测的问题。本文提出了一套基于 3D 激光雷达的运动目标检测与追踪的解决方案。系统分为障碍物检测与运动目标追踪两个部分。在障碍物检测方面,首先在解决激光雷达数据量大的问题上,选取适当范围的点云数据,并对其使用体素下采样滤波,然后…
第一章 开始 lua是一种解释执行语言,一般后缀名为.lua 1.1 程序块 一个程序块是一连串的语句和命令,可以是任意大小的,lua程序块件不需要符号分割,不过也支持使用分号分割 lua通常作为一种数据描述语言来使用,即使几兆的程序,lua解释器处理也没有问题 退出lua命令行可输入ctrl+z(Linux下为ctrl+d),或调用lua函数 “os.exit()” lua 参数 -i 可以指定在打开交互命令前,先打开哪些文件,dofile(parameter)可以加载lua程序,例:lua -i pr…
定义 将一个复杂对象的构建与其表示相分离,使得同样的构建过程(稳定)可以创建不同的表示(变化)。 动机 在软件系统中,有时候面临着“一个复杂对象”的创建工作,其通常由各个部分的子对象用一定的算法构成;由于需求的变化,这个复杂对象的各个部分经常面临着剧烈的变化,但是将它们组合在一起的算法却相对稳定。 如何应对这种变化?如何提供一种“封装机制”来隔离出“复杂对象的各个部分”的变化,从而保持系统中的“稳定构建算法”不随着需求改变而改变? 结构 要点 Builder 模式主要用于“分步骤构建一个复杂的对象”。在这其中“分步…
定义 使用原型实例指定创建对象的种类,然后通过拷贝这些原型对象来创建新的对象。 动机 在软件系统中,经常面临着“某些结构复杂的对象”的创建工作;由于需求的变化,这些对象经常面临着剧烈的变化,但是它们却拥有比较稳定一致的接口。 如何应对这种变化?如何向“客户程序(使用这些对象的程序)”隔离出“这些易变对象”,从而使得“依赖这些易变对象的客户程序”不随着需求改变而改变。 结构 要点 Prototype模式同样用于隔离类对象的使用者和具体类型(易变类)之间的耦合关系,它同样要求这些“易变类”拥有“稳定的接口”。 Prot…
定义 提供一个接口,让该接口负责创建一系列“相关或者相互依赖的对象”,无需指定它们具体的类。 动机 在软件系统中,经常面临着“一系列相互依赖的对象”的创建工作;同时,由于需求的变化,往往存在更多系列对象的创建工作。 如何应对这种变化?如何绕过常规的对象创建方法(new),提供一种“封装机制”来避免客户程序和这种“多系列具体对象创建工作”的紧耦合? 结构 要点 如果没有应对“多系列对象构建”的需求变化,则没有必要使用 Abstract Factory模式,这时候使用简单的工厂完全可以。 “系列对象”指的…
定义 定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method使得一个类的实例化延迟(目的:解耦,手段:虚函数)到子类。 动机 在软件系统中,经常面临着创建对象的工作;由于需求的变化, 需要创建的对象的具体类型经常变化。 如何应对这种变化?如何绕过常规的对象创建方法(new),提供一 种“封装机制”来避免客户程序和这种“具体对象创建工作”的紧 耦合? 结构 要点 Factory Method模式用于隔离类对象的使用者和具体类型之间的 耦合关系。面对一个经常变化的具体类型,紧耦合关系(new…