-
Python 类继承与mix In
Min-in类
Mix-in类,中文称为混合类、混搭类,可用于多重继承,使逻辑清楚。Mix-in类类只实现单个小功能,只定义了其它类可能需要的一套附加方法,而不定义自己的实例属性,不要求使用者调用其
__init__
构造器。Min-in类 Mix-in类,中文称为混合类、混搭类,可用于多重继承,使逻辑清楚。Mix-in类类只实现单个小功能,只定义了其它类可能需要的一套附加方法,而不定义自己的实例属性,不要求使用者调用其__init__构造器。 只在Mix-in类制作工具类时,使用多重继承,可以使单个小功能,构成复杂功能。达到增加一些额外功能,又避免复杂的继承层次结构污染代码。 java, C++可以通过定义接口类,来实现同样的功能。 Mix-in 技术按一下规则来限制多重继承: 继承用单一继承; 第二个及两个以上的父类必须是 Mix-in...
2018, Aug 13 — 1 minute read
-
Cmake笔记
1.变量
1.变量 设置变量:set(SRC_DIR ./src) 引用变量:${SRC_DIR} 设置系统的环境变量: SET(ENV{变量名} 值) 引用系统的环境变量: $ENV{NAME} 2.常用预定义变量...
2018, Aug 07 — 6 minute read
-
Python 生成器注意事项
1.长列表适合写成生成器
1.长列表适合写成生成器 读取文件中的内容,可以形成列表项。长的列表可能使内存崩溃。此时可以使用生成器。 def read_content(file): with open(file) as f: for line...
2018, Aug 05 — 2 minute read
-
Osg阴影与光照
1.预定义几何体
osg::Shape类,直接继承自osg::Object是各种内嵌几何体的基类,可用于剔除和碰撞检测,还可用于生成预定义的几何体对象。
1.预定义几何体 osg::Shape类,直接继承自osg::Object是各种内嵌几何体的基类,可用于剔除和碰撞检测,还可用于生成预定义的几何体对象。 预定义的几何体对象可以与osg::Drawable的子类osg::ShapeDrawable关联,生成可绘制对象。 osg::ref_ptr<osg::Geode> QUtils::createBall(float radius) { ref_ptr<TessellationHints> hints =...
2018, Jul 31 — 4 minute read
-
Osg粒子效果
粒子系统(osgParticle::ParticleSystem)- 维护并管理一系列粒子的生成,更新,渲染和销毁。粒子系统类继承自Drawable类。粒子的渲染控制因此与其它Drawable对象的渲染类似:控制其渲染属性StateAttribute即可。OSG提供了一个方便的函数以允许用户控制三个常用的渲染状态属性。方法setDefaultAttributes可以用于指定材质(或者指定为NULL以禁用材质),允许/禁止附加的图像融合,允许/禁止光照。
粒子系统(osgParticle::ParticleSystem)- 维护并管理一系列粒子的生成,更新,渲染和销毁。粒子系统类继承自Drawable类。粒子的渲染控制因此与其它Drawable对象的渲染类似:控制其渲染属性StateAttribute即可。OSG提供了一个方便的函数以允许用户控制三个常用的渲染状态属性。方法setDefaultAttributes可以用于指定材质(或者指定为NULL以禁用材质),允许/禁止附加的图像融合,允许/禁止光照。 粒子(osgParticle::Particle)- 粒子系统的基本单元。粒子类同时具有物理属性和图像属性。它的形状可以是任意的点(POINT),四边形(QUAD),四边形带(QUAD_TRIPSTRIP),六角形(HEXAGON)或者线(LINE)。每个粒子都有自己的生命周期。生命周期也就是每个粒子可以存活的秒数。(生命周期为负数的粒子可以存活无限长时间)所有的粒子都具有大小(SIZE),ALPHA值和颜色(COLOR)属性。每一组粒子都可以指定其最大和最小值。为了便于粒子生命周期的管理,粒子系统通过改变生命周期的最大和最小值来控制单个粒子的渲染。(根据已经消耗的时间,在最小和最大值之间进行线性插值) 程序员也可以自行指定最小到最大值的插值方法。(参见osgParticle::Interpolator的代码) 放置器(osgParticle::Placer)- 设置粒子的初始位置。用户可以使用预定义的放置器或者定义自己的放置器。已定义的放置器包括:点放置器PointPlacer(所有的粒子从同一点出生),扇面放置器SectorPlacer(所有的粒子从一个指定中心点,半径范围和角度范围的扇面出生),以及多段放置器MultiSegmentPlacer(用户指定一系列的点,粒子沿着这些点定义的线段出生)。 发射器(osgParticle::Shooter)- 指定粒子的初始速度。RadialShooter类允许用户指定一个速度范围(米/秒)以及弧度值表示的方向。方向由两个角度指定:theta角 -...
2018, Jul 28 — 4 minute read