OSG粒子系统与阴影 - 阴影shadow(7)
OSG阴影
在虚拟现实仿真中,为了真实地模拟自然效果,阴影效果是不可缺少的,它对一个场景的真实性是非常重要的。在游戏或仿真中,一个高效的阴影往往能够提供非常强悍的视觉真实感。
osgShadow库
在OSG中专门定义了一个名字空间osgShadow来控制渲染实时阴影。实时阴影是一种相对高级的技术,在每一顿,场景中的几何体或灯光位置变动时要计算一个叫做shadow volume的物体shadow volume实际上是一个三维物体,是投影物体的轮廓,总是从光源方向投出。osgShadow库的主要组成模块可以用图11-10来表示,下面分别介绍这些模块。
图11-10 osgShadow库的主要组成模块
- osgShadow::ShadowedScene类: 阴影组节点,它继承自osg::Group,因此可以添加子节点。同时,它可以指定投影对象和接受投影的对象。
- void setReceivesShadowTraversalMask(unsigned int mask);
- unsigned int getReceivesShadowTraversalMask() const;
- void setCastsShadowTraversalMask(unsigned int mask);
- unsigned int getCastsShadowTraversalMask() const;
指定阴影实现的方法如下:
- void setShadowTechnique(ShadowTechnique *technique)
- ShadowTechnique* getShadowTechnique()
- const ShadowTechnique* getShadowTechnique() const
- osgShadow::ShadowTechnique 类:实现各种阴影的基类,它派生出3 个子类分别为ShadowMap、ShadowTexture和ShadowVolume。
- osgShadow::ShadowMap:实现阴影贴图(shadow map)类。
- osgShadow::ShadowTexture:实现阴影纹理(shadow texture)类。
- osgShadow::ShadowVolume:实现基于模板缓存的体积阴影(volume shadow)的阴影技法类。
阴影的实现方法有很多种,现在比较流行的主要是shadow mapping 和shadow volume,前者实现起来相对简单,可以发挥现在GPU可编程流水线的能力,但是由于先天不足,shadow mapping在处理动态光源/物体时开销过大,经常作为一种静态场景中的廉价替代物。而shadow volume的强项正好是shadow mapping的短处,像DOOM3这种大量运用动态光源并且要对时刻都在运动中的物体投射阴影,shadow volume是现阶段唯一的选择。
<1> shadow mapping算法
一个物体之所以会处在阴影中,是由于在它和光源之间存在着遮蔽物,或者说遮蔽物离光源的距离比物体近,这就是shadow mapping算法的基本原理。
[1] 以光源为视点,或者说是在光源坐标系下对整个场景进行渲染,目的是要得到一幅所有物体相对于光源的depth map(也就是常说的 shadow map),也就是这幅图像中每个像素的值代表着场景里面离光源最近的像素的深度值。由于这个阶段感兴趣的只是像素的深度值,所以可以把所有的光照计算关掉,并打开z_test和z_write 的渲染状态。
[2] 将视点恢复到原来的正常位置,渲染整个场景,对每个像素计算它和光源的距离,然后将这个值和 depth map 中应的值比较以确定这个像素点是否处在影当中,然后根据比较的结果对shadowed fragment 和 lighted fragment 分别进行不同的光照计算,这样就可以得到阴影的效果了。
从上面的分析可以看出,depth map 的渲染只和光源的位置及场景中物体的位置有关,无论视点怎么运动,只要光源和物体的相互位置关系不变,shadow map 就可以被重复使用,因此,对于没有动态光源的场景,shadow mapping 是很明智的一种选择。
<2> shadow volume 算法
shadow volume 算法第一次被提出是在 1977 年 Franklin C.Crow 写的一篇论文《SHADOWALGORITHMS_FOR_COMPUTER_GRAPHICS》里,其基本原理是根据光源和遮蔽物的位置关系计算出场景中会产生阴影的区域,然后对所有物体进行检测,以确定其会不会受阴影的影响。具体的算法可查看原论文,这里就不再翻译了。
在一个场景中添加阴影的主要步骤如下:
(1) 创建一个阴影场景(osgShadow::ShadowedScene)对象,添加相应的子节点,并标识阴影接收对象和阴影投影对象。
(2)创建一个阴影技术对象,主要有 osgShadow::ShadowMap、osgShadow::ShadowTexture和osgShadow::ShadowVolume,并关联到阴影场景对象。
(3)把阴影场景对象作为子节点加到场景根节点下,实例渲染。
下面来看一个简单的阴影示例。
阴影示例
阴影(osgShadow)示例的代码如程序清单 11-8 示。
/********************************* 阴影 *********************************/
const int ReceivesShadowTraversalMask = 0x1;// 标识阴影接收对象
const int CastsShadowTraversalMask = 0x2;
const float vertex[][3] = {{ 5998.7998, 41456.1016, 1.7800 },{ 5998.7998, 41456.3984, 1.8200 },{ 5998.7998, 41456.6992, 1.8600 },{ 5998.7998, 41457.0000, 1.8800 },{ 5998.7998, 41457.3008, 1.9000 },{ 5998.7998, 41457.6016, 1.9000 },{ 5998.7998, 41457.8984, 1.8900 },{ 5998.7998, 41458.1992, 1.8800 },{ 5998.7998, 41458.5000, 1.8600 },{ 5998.7998, 41458.8008, 1.8500 },{ 5998.7998, 41459.1016, 1.8300 },{ 5998.7998, 41459.3984, 1.8100 },{ 5998.7998, 41459.6992, 1.7800 },{ 5998.7998, 41460.0000, 1.7500 },{ 5998.7998, 41460.3008, 1.7300 },{ 5998.7998, 41460.6016, 1.7100 },{ 5998.7998, 41460.8984, 1.7000 },{ 5998.7998, 41461.1992, 1.6900 },{ 5998.7998, 41461.5000, 1.7000 },{ 5998.7998, 41461.8008, 1.7400 },{ 5998.7998, 41462.1016, 1.7900 },{ 5998.7998, 41462.3984, 1.8600 },{ 5998.7998, 41462.6992, 1.9400 },{ 5998.7998, 41463.0000, 1.9900 },{ 5998.7998, 41463.3008, 2.0200 },{ 5998.7998, 41463.6016, 2.0300 },{ 5998.7998, 41463.8984, 2.0300 },{ 5998.7998, 41464.1992, 2.0200 },{ 5998.7998, 41464.5000, 2.0100 },{ 5998.7998, 41464.8008, 1.9900 },{ 5998.7998, 41465.1016, 1.9700 },{ 5998.7998, 41465.3984, 1.9600 },{ 5998.7998, 41465.6992, 1.9500 },{ 5998.7998, 41466.0000, 1.9500 },{ 5998.7998, 41466.3008, 1.9500 },{ 5998.7998, 41466.6016, 1.9500 },{ 5998.7998, 41466.8984, 1.9400 },{ 5998.7998, 41467.1992, 1.9300 },{ 5998.7998, 41467.5000, 1.9200 },{ 5999.1001, 41456.1016, 1.8600 },{ 5999.1001, 41456.3984, 1.9100 },{ 5999.1001, 41456.6992, 1.9600 },{ 5999.1001, 41457.0000, 1.9900 },{ 5999.1001, 41457.3008, 2.0100 },{ 5999.1001, 41457.6016, 2.0000 },{ 5999.1001, 41457.8984, 1.9700 },{ 5999.1001, 41458.1992, 1.9400 },{ 5999.1001, 41458.5000, 1.9100 },{ 5999.1001, 41458.8008, 1.8700 },{ 5999.1001, 41459.1016, 1.8400 },{ 5999.1001, 41459.3984, 1.8000 },{ 5999.1001, 41459.6992, 1.7700 },{ 5999.1001, 41460.0000, 1.7400 },{ 5999.1001, 41460.3008, 1.7300 },{ 5999.1001, 41460.6016, 1.7200 },{ 5999.1001, 41460.8984, 1.7200 },{ 5999.1001, 41461.1992, 1.7300 },{ 5999.1001, 41461.5000, 1.7600 },{ 5999.1001, 41461.8008, 1.7900 },{ 5999.1001, 41462.1016, 1.8300 },{ 5999.1001, 41462.3984, 1.8700 },{ 5999.1001, 41462.6992, 1.9100 },{ 5999.1001, 41463.0000, 1.9400 },{ 5999.1001, 41463.3008, 1.9700 },{ 5999.1001, 41463.6016, 1.9900 },{ 5999.1001, 41463.8984, 2.0100 },{ 5999.1001, 41464.1992, 2.0200 },{ 5999.1001, 41464.5000, 2.0100 },{ 5999.1001, 41464.8008, 1.9900 },{ 5999.1001, 41465.1016, 1.9700 },{ 5999.1001, 41465.3984, 1.9600 },{ 5999.1001, 41465.6992, 1.9600 },{ 5999.1001, 41466.0000, 1.9600 },{ 5999.1001, 41466.3008, 1.9600 },{ 5999.1001, 41466.6016, 1.9600 },{ 5999.1001, 41466.8984, 1.9600 },{ 5999.1001, 41467.1992, 1.9600 },{ 5999.1001, 41467.5000, 1.9600 },{ 5999.3999, 41456.1016, 1.9200 },{ 5999.3999, 41456.3984, 1.9800 },{ 5999.3999, 41456.6992, 2.0300 },{ 5999.3999, 41457.0000, 2.0600 },{ 5999.3999, 41457.3008, 2.0700 },{ 5999.3999, 41457.6016, 2.0500 },{ 5999.3999, 41457.8984, 2.0100 },{ 5999.3999, 41458.1992, 1.9700 },{ 5999.3999, 41458.5000, 1.9200 },{ 5999.3999, 41458.8008, 1.8700 },{ 5999.3999, 41459.1016, 1.8300 },{ 5999.3999, 41459.3984, 1.7900 },{ 5999.3999, 41459.6992, 1.7500 },{ 5999.3999, 41460.0000, 1.7300 },{ 5999.3999, 41460.3008, 1.7200 },{ 5999.3999, 41460.6016, 1.7200 },{ 5999.3999, 41460.8984, 1.7400 },{ 5999.3999, 41461.1992, 1.7700 },{ 5999.3999, 41461.5000, 1.8100 },{ 5999.3999, 41461.8008, 1.8400 },{ 5999.3999, 41462.1016, 1.8700 },{ 5999.3999, 41462.3984, 1.8900 },{ 5999.3999, 41462.6992, 1.9100 },{ 5999.3999, 41463.0000, 1.9200 },{ 5999.3999, 41463.3008, 1.9400 },{ 5999.3999, 41463.6016, 1.9700 },{ 5999.3999, 41463.8984, 2.0000 },{ 5999.3999, 41464.1992, 2.0100 },{ 5999.3999, 41464.5000, 2.0100 },{ 5999.3999, 41464.8008, 2.0000 },{ 5999.3999, 41465.1016, 1.9800 },{ 5999.3999, 41465.3984, 1.9700 },{ 5999.3999, 41465.6992, 1.9700 },{ 5999.3999, 41466.0000, 1.9700 },{ 5999.3999, 41466.3008, 1.9800 },{ 5999.3999, 41466.6016, 1.9800 },{ 5999.3999, 41466.8984, 1.9900 },{ 5999.3999, 41467.1992, 1.9900 },{ 5999.3999, 41467.5000, 2.0100 },{ 5999.7002, 41456.1016, 1.9800 },{ 5999.7002, 41456.3984, 2.0300 },{ 5999.7002, 41456.6992, 2.0700 },{ 5999.7002, 41457.0000, 2.0900 },{ 5999.7002, 41457.3008, 2.0800 },{ 5999.7002, 41457.6016, 2.0500 },{ 5999.7002, 41457.8984, 2.0000 },{ 5999.7002, 41458.1992, 1.9500 },{ 5999.7002, 41458.5000, 1.9000 },{ 5999.7002, 41458.8008, 1.8400 },{ 5999.7002, 41459.1016, 1.8000 },{ 5999.7002, 41459.3984, 1.7600 },{ 5999.7002, 41459.6992, 1.7200 },{ 5999.7002, 41460.0000, 1.7100 },{ 5999.7002, 41460.3008, 1.7100 },{ 5999.7002, 41460.6016, 1.7200 },{ 5999.7002, 41460.8984, 1.7500 },{ 5999.7002, 41461.1992, 1.8000 },{ 5999.7002, 41461.5000, 1.8600 },{ 5999.7002, 41461.8008, 1.9000 },{ 5999.7002, 41462.1016, 1.9300 },{ 5999.7002, 41462.3984, 1.9400 },{ 5999.7002, 41462.6992, 1.9400 },{ 5999.7002, 41463.0000, 1.9500 },{ 5999.7002, 41463.3008, 1.9600 },{ 5999.7002, 41463.6016, 1.9800 },{ 5999.7002, 41463.8984, 2.0000 },{ 5999.7002, 41464.1992, 2.0100 },{ 5999.7002, 41464.5000, 2.0100 },{ 5999.7002, 41464.8008, 2.0000 },{ 5999.7002, 41465.1016, 1.9900 },{ 5999.7002, 41465.3984, 1.9800 },{ 5999.7002, 41465.6992, 1.9800 },{ 5999.7002, 41466.0000, 1.9900 },{ 5999.7002, 41466.3008, 2.0000 },{ 5999.7002, 41466.6016, 2.0100 },{ 5999.7002, 41466.8984, 2.0200 },{ 5999.7002, 41467.1992, 2.0400 },{ 5999.7002, 41467.5000, 2.0600 },{ 6000.0000, 41456.1016, 2.0200 },{ 6000.0000, 41456.3984, 2.0400 },{ 6000.0000, 41456.6992, 2.0600 },{ 6000.0000, 41457.0000, 2.0600 },{ 6000.0000, 41457.3008, 2.0400 },{ 6000.0000, 41457.6016, 2.0000 },{ 6000.0000, 41457.8984, 1.9500 },{ 6000.0000, 41458.1992, 1.9000 },{ 6000.0000, 41458.5000, 1.8400 },{ 6000.0000, 41458.8008, 1.7900 },{ 6000.0000, 41459.1016, 1.7500 },{ 6000.0000, 41459.3984, 1.7100 },{ 6000.0000, 41459.6992, 1.6900 },{ 6000.0000, 41460.0000, 1.6800 },{ 6000.0000, 41460.3008, 1.6900 },{ 6000.0000, 41460.6016, 1.7200 },{ 6000.0000, 41460.8984, 1.7600 },{ 6000.0000, 41461.1992, 1.8200 },{ 6000.0000, 41461.5000, 1.8800 },{ 6000.0000, 41461.8008, 1.9300 },{ 6000.0000, 41462.1016, 1.9600 },{ 6000.0000, 41462.3984, 1.9600 },{ 6000.0000, 41462.6992, 1.9600 },{ 6000.0000, 41463.0000, 1.9600 },{ 6000.0000, 41463.3008, 1.9700 },{ 6000.0000, 41463.6016, 1.9900 },{ 6000.0000, 41463.8984, 2.0100 },{ 6000.0000, 41464.1992, 2.0200 },{ 6000.0000, 41464.5000, 2.0200 },{ 6000.0000, 41464.8008, 2.0100 },{ 6000.0000, 41465.1016, 1.9900 },{ 6000.0000, 41465.3984, 1.9900 },{ 6000.0000, 41465.6992, 1.9900 },{ 6000.0000, 41466.0000, 2.0000 },{ 6000.0000, 41466.3008, 2.0200 },{ 6000.0000, 41466.6016, 2.0400 },{ 6000.0000, 41466.8984, 2.0600 },{ 6000.0000, 41467.1992, 2.0800 },{ 6000.0000, 41467.5000, 2.1000 },{ 6000.2998, 41456.1016, 2.0600 },{ 6000.2998, 41456.3984, 2.0700 },{ 6000.2998, 41456.6992, 2.0700 },{ 6000.2998, 41457.0000, 2.0500 },{ 6000.2998, 41457.3008, 2.0200 },{ 6000.2998, 41457.6016, 1.9700 },{ 6000.2998, 41457.8984, 1.9000 },{ 6000.2998, 41458.1992, 1.8400 },{ 6000.2998, 41458.5000, 1.7800 },{ 6000.2998, 41458.8008, 1.7400 },{ 6000.2998, 41459.1016, 1.7000 },{ 6000.2998, 41459.3984, 1.6800 },{ 6000.2998, 41459.6992, 1.6700 },{ 6000.2998, 41460.0000, 1.6700 },{ 6000.2998, 41460.3008, 1.6800 },{ 6000.2998, 41460.6016, 1.7100 },{ 6000.2998, 41460.8984, 1.7400 },{ 6000.2998, 41461.1992, 1.7800 },{ 6000.2998, 41461.5000, 1.8300 },{ 6000.2998, 41461.8008, 1.8700 },{ 6000.2998, 41462.1016, 1.8900 },{ 6000.2998, 41462.3984, 1.9000 },{ 6000.2998, 41462.6992, 1.9000 },{ 6000.2998, 41463.0000, 1.9100 },{ 6000.2998, 41463.3008, 1.9300 },{ 6000.2998, 41463.6016, 1.9500 },{ 6000.2998, 41463.8984, 1.9800 },{ 6000.2998, 41464.1992, 2.0000 },{ 6000.2998, 41464.5000, 2.0100 },{ 6000.2998, 41464.8008, 2.0100 },{ 6000.2998, 41465.1016, 2.0000 },{ 6000.2998, 41465.3984, 2.0000 },{ 6000.2998, 41465.6992, 2.0000 },{ 6000.2998, 41466.0000, 2.0200 },{ 6000.2998, 41466.3008, 2.0400 },{ 6000.2998, 41466.6016, 2.0600 },{ 6000.2998, 41466.8984, 2.0800 },{ 6000.2998, 41467.1992, 2.1100 },{ 6000.2998, 41467.5000, 2.1300 },{ 6000.6001, 41456.1016, 2.1000 },{ 6000.6001, 41456.3984, 2.1100 },{ 6000.6001, 41456.6992, 2.1000 },{ 6000.6001, 41457.0000, 2.0700 },{ 6000.6001, 41457.3008, 2.0200 },{ 6000.6001, 41457.6016, 1.9500 },{ 6000.6001, 41457.8984, 1.8700 },{ 6000.6001, 41458.1992, 1.8000 },{ 6000.6001, 41458.5000, 1.7400 },{ 6000.6001, 41458.8008, 1.7000 },{ 6000.6001, 41459.1016, 1.6800 },{ 6000.6001, 41459.3984, 1.6600 },{ 6000.6001, 41459.6992, 1.6600 },{ 6000.6001, 41460.0000, 1.6700 },{ 6000.6001, 41460.3008, 1.6800 },{ 6000.6001, 41460.6016, 1.7000 },{ 6000.6001, 41460.8984, 1.7200 },{ 6000.6001, 41461.1992, 1.7400 },{ 6000.6001, 41461.5000, 1.7700 },{ 6000.6001, 41461.8008, 1.7900 },{ 6000.6001, 41462.1016, 1.8100 },{ 6000.6001, 41462.3984, 1.8200 },{ 6000.6001, 41462.6992, 1.8200 },{ 6000.6001, 41463.0000, 1.8400 },{ 6000.6001, 41463.3008, 1.8600 },{ 6000.6001, 41463.6016, 1.9000 },{ 6000.6001, 41463.8984, 1.9400 },{ 6000.6001, 41464.1992, 1.9600 },{ 6000.6001, 41464.5000, 1.9800 },{ 6000.6001, 41464.8008, 1.9900 },{ 6000.6001, 41465.1016, 2.0000 },{ 6000.6001, 41465.3984, 2.0100 },{ 6000.6001, 41465.6992, 2.0200 },{ 6000.6001, 41466.0000, 2.0400 },{ 6000.6001, 41466.3008, 2.0600 },{ 6000.6001, 41466.6016, 2.0900 },{ 6000.6001, 41466.8984, 2.1100 },{ 6000.6001, 41467.1992, 2.1300 },{ 6000.6001, 41467.5000, 2.1600 },{ 6000.8999, 41456.1016, 2.1000 },{ 6000.8999, 41456.3984, 2.1000 },{ 6000.8999, 41456.6992, 2.0800 },{ 6000.8999, 41457.0000, 2.0500 },{ 6000.8999, 41457.3008, 2.0000 },{ 6000.8999, 41457.6016, 1.9200 },{ 6000.8999, 41457.8984, 1.8400 },{ 6000.8999, 41458.1992, 1.7800 },{ 6000.8999, 41458.5000, 1.7200 },{ 6000.8999, 41458.8008, 1.6900 },{ 6000.8999, 41459.1016, 1.6700 },{ 6000.8999, 41459.3984, 1.6600 },{ 6000.8999, 41459.6992, 1.6600 },{ 6000.8999, 41460.0000, 1.6700 },{ 6000.8999, 41460.3008, 1.6800 },{ 6000.8999, 41460.6016, 1.6900 },{ 6000.8999, 41460.8984, 1.7100 },{ 6000.8999, 41461.1992, 1.7200 },{ 6000.8999, 41461.5000, 1.7300 },{ 6000.8999, 41461.8008, 1.7400 },{ 6000.8999, 41462.1016, 1.7500 },{ 6000.8999, 41462.3984, 1.7600 },{ 6000.8999, 41462.6992, 1.7700 },{ 6000.8999, 41463.0000, 1.7900 },{ 6000.8999, 41463.3008, 1.8200 },{ 6000.8999, 41463.6016, 1.8600 },{ 6000.8999, 41463.8984, 1.9000 },{ 6000.8999, 41464.1992, 1.9400 },{ 6000.8999, 41464.5000, 1.9700 },{ 6000.8999, 41464.8008, 1.9900 },{ 6000.8999, 41465.1016, 2.0100 },{ 6000.8999, 41465.3984, 2.0300 },{ 6000.8999, 41465.6992, 2.0500 },{ 6000.8999, 41466.0000, 2.0700 },{ 6000.8999, 41466.3008, 2.0900 },{ 6000.8999, 41466.6016, 2.1200 },{ 6000.8999, 41466.8984, 2.1400 },{ 6000.8999, 41467.1992, 2.1600 },{ 6000.8999, 41467.5000, 2.1800 },{ 6001.2002, 41456.1016, 2.0600 },{ 6001.2002, 41456.3984, 2.0400 },{ 6001.2002, 41456.6992, 2.0200 },{ 6001.2002, 41457.0000, 1.9800 },{ 6001.2002, 41457.3008, 1.9400 },{ 6001.2002, 41457.6016, 1.8800 },{ 6001.2002, 41457.8984, 1.8100 },{ 6001.2002, 41458.1992, 1.7600 },{ 6001.2002, 41458.5000, 1.7200 },{ 6001.2002, 41458.8008, 1.7000 },{ 6001.2002, 41459.1016, 1.6800 },{ 6001.2002, 41459.3984, 1.6700 },{ 6001.2002, 41459.6992, 1.6700 },{ 6001.2002, 41460.0000, 1.6800 },{ 6001.2002, 41460.3008, 1.6900 },{ 6001.2002, 41460.6016, 1.7000 },{ 6001.2002, 41460.8984, 1.7100 },{ 6001.2002, 41461.1992, 1.7100 },{ 6001.2002, 41461.5000, 1.7200 },{ 6001.2002, 41461.8008, 1.7200 },{ 6001.2002, 41462.1016, 1.7300 },{ 6001.2002, 41462.3984, 1.7400 },{ 6001.2002, 41462.6992, 1.7500 },{ 6001.2002, 41463.0000, 1.7700 },{ 6001.2002, 41463.3008, 1.8100 },{ 6001.2002, 41463.6016, 1.8700 },{ 6001.2002, 41463.8984, 1.9300 },{ 6001.2002, 41464.1992, 1.9800 },{ 6001.2002, 41464.5000, 2.0200 },{ 6001.2002, 41464.8008, 2.0400 },{ 6001.2002, 41465.1016, 2.0500 },{ 6001.2002, 41465.3984, 2.0600 },{ 6001.2002, 41465.6992, 2.0800 },{ 6001.2002, 41466.0000, 2.1000 },{ 6001.2002, 41466.3008, 2.1200 },{ 6001.2002, 41466.6016, 2.1500 },{ 6001.2002, 41466.8984, 2.1700 },{ 6001.2002, 41467.1992, 2.1900 },{ 6001.2002, 41467.5000, 2.2200 },{ 6001.5000, 41456.1016, 2.0000 },{ 6001.5000, 41456.3984, 1.9700 },{ 6001.5000, 41456.6992, 1.9400 },{ 6001.5000, 41457.0000, 1.9000 },{ 6001.5000, 41457.3008, 1.8600 },{ 6001.5000, 41457.6016, 1.8200 },{ 6001.5000, 41457.8984, 1.7800 },{ 6001.5000, 41458.1992, 1.7500 },{ 6001.5000, 41458.5000, 1.7200 },{ 6001.5000, 41458.8008, 1.7100 },{ 6001.5000, 41459.1016, 1.7000 },{ 6001.5000, 41459.3984, 1.6900 },{ 6001.5000, 41459.6992, 1.6900 },{ 6001.5000, 41460.0000, 1.7000 },{ 6001.5000, 41460.3008, 1.7100 },{ 6001.5000, 41460.6016, 1.7100 },{ 6001.5000, 41460.8984, 1.7200 },{ 6001.5000, 41461.1992, 1.7200 },{ 6001.5000, 41461.5000, 1.7200 },{ 6001.5000, 41461.8008, 1.7200 },{ 6001.5000, 41462.1016, 1.7200 },{ 6001.5000, 41462.3984, 1.7300 },{ 6001.5000, 41462.6992, 1.7500 },{ 6001.5000, 41463.0000, 1.7800 },{ 6001.5000, 41463.3008, 1.8200 },{ 6001.5000, 41463.6016, 1.8900 },{ 6001.5000, 41463.8984, 1.9700 },{ 6001.5000, 41464.1992, 2.0300 },{ 6001.5000, 41464.5000, 2.0800 },{ 6001.5000, 41464.8008, 2.0900 },{ 6001.5000, 41465.1016, 2.0900 },{ 6001.5000, 41465.3984, 2.0900 },{ 6001.5000, 41465.6992, 2.1000 },{ 6001.5000, 41466.0000, 2.1200 },{ 6001.5000, 41466.3008, 2.1500 },{ 6001.5000, 41466.6016, 2.1700 },{ 6001.5000, 41466.8984, 2.2000 },{ 6001.5000, 41467.1992, 2.2200 },{ 6001.5000, 41467.5000, 2.2600 },{ 6001.7998, 41456.1016, 1.9400 },{ 6001.7998, 41456.3984, 1.9100 },{ 6001.7998, 41456.6992, 1.8700 },{ 6001.7998, 41457.0000, 1.8400 },{ 6001.7998, 41457.3008, 1.8100 },{ 6001.7998, 41457.6016, 1.7900 },{ 6001.7998, 41457.8984, 1.7700 },{ 6001.7998, 41458.1992, 1.7500 },{ 6001.7998, 41458.5000, 1.7300 },{ 6001.7998, 41458.8008, 1.7200 },{ 6001.7998, 41459.1016, 1.7100 },{ 6001.7998, 41459.3984, 1.7100 },{ 6001.7998, 41459.6992, 1.7100 },{ 6001.7998, 41460.0000, 1.7100 },{ 6001.7998, 41460.3008, 1.7200 },{ 6001.7998, 41460.6016, 1.7200 },{ 6001.7998, 41460.8984, 1.7300 },{ 6001.7998, 41461.1992, 1.7300 },{ 6001.7998, 41461.5000, 1.7200 },{ 6001.7998, 41461.8008, 1.7200 },{ 6001.7998, 41462.1016, 1.7200 },{ 6001.7998, 41462.3984, 1.7300 },{ 6001.7998, 41462.6992, 1.7600 },{ 6001.7998, 41463.0000, 1.7900 },{ 6001.7998, 41463.3008, 1.8400 },{ 6001.7998, 41463.6016, 1.9200 },{ 6001.7998, 41463.8984, 2.0100 },{ 6001.7998, 41464.1992, 2.0800 },{ 6001.7998, 41464.5000, 2.1200 },{ 6001.7998, 41464.8008, 2.1300 },{ 6001.7998, 41465.1016, 2.1200 },{ 6001.7998, 41465.3984, 2.1100 },{ 6001.7998, 41465.6992, 2.1200 },{ 6001.7998, 41466.0000, 2.1300 },{ 6001.7998, 41466.3008, 2.1600 },{ 6001.7998, 41466.6016, 2.1800 },{ 6001.7998, 41466.8984, 2.2100 },{ 6001.7998, 41467.1992, 2.2400 },{ 6001.7998, 41467.5000, 2.2800 },{ 6002.1001, 41456.1016, 1.8900 },{ 6002.1001, 41456.3984, 1.8500 },{ 6002.1001, 41456.6992, 1.8200 },{ 6002.1001, 41457.0000, 1.8000 },{ 6002.1001, 41457.3008, 1.7800 },{ 6002.1001, 41457.6016, 1.7600 },{ 6002.1001, 41457.8984, 1.7500 },{ 6002.1001, 41458.1992, 1.7400 },{ 6002.1001, 41458.5000, 1.7400 },{ 6002.1001, 41458.8008, 1.7300 },{ 6002.1001, 41459.1016, 1.7300 },{ 6002.1001, 41459.3984, 1.7200 },{ 6002.1001, 41459.6992, 1.7200 },{ 6002.1001, 41460.0000, 1.7200 },{ 6002.1001, 41460.3008, 1.7300 },{ 6002.1001, 41460.6016, 1.7300 },{ 6002.1001, 41460.8984, 1.7400 },{ 6002.1001, 41461.1992, 1.7300 },{ 6002.1001, 41461.5000, 1.7200 },{ 6002.1001, 41461.8008, 1.7200 },{ 6002.1001, 41462.1016, 1.7300 },{ 6002.1001, 41462.3984, 1.7500 },{ 6002.1001, 41462.6992, 1.7800 },{ 6002.1001, 41463.0000, 1.8200 },{ 6002.1001, 41463.3008, 1.8800 },{ 6002.1001, 41463.6016, 1.9600 },{ 6002.1001, 41463.8984, 2.0600 },{ 6002.1001, 41464.1992, 2.1300 },{ 6002.1001, 41464.5000, 2.1700 },{ 6002.1001, 41464.8008, 2.1700 },{ 6002.1001, 41465.1016, 2.1500 },{ 6002.1001, 41465.3984, 2.1400 },{ 6002.1001, 41465.6992, 2.1300 },{ 6002.1001, 41466.0000, 2.1400 },{ 6002.1001, 41466.3008, 2.1600 },{ 6002.1001, 41466.6016, 2.1800 },{ 6002.1001, 41466.8984, 2.2100 },{ 6002.1001, 41467.1992, 2.2400 },{ 6002.1001, 41467.5000, 2.2900 },{ 6002.3999, 41456.1016, 1.8300 },{ 6002.3999, 41456.3984, 1.8000 },{ 6002.3999, 41456.6992, 1.7800 },{ 6002.3999, 41457.0000, 1.7600 },{ 6002.3999, 41457.3008, 1.7400 },{ 6002.3999, 41457.6016, 1.7400 },{ 6002.3999, 41457.8984, 1.7400 },{ 6002.3999, 41458.1992, 1.7400 },{ 6002.3999, 41458.5000, 1.7400 },{ 6002.3999, 41458.8008, 1.7400 },{ 6002.3999, 41459.1016, 1.7300 },{ 6002.3999, 41459.3984, 1.7300 },{ 6002.3999, 41459.6992, 1.7300 },{ 6002.3999, 41460.0000, 1.7300 },{ 6002.3999, 41460.3008, 1.7400 },{ 6002.3999, 41460.6016, 1.7400 },{ 6002.3999, 41460.8984, 1.7400 },{ 6002.3999, 41461.1992, 1.7400 },{ 6002.3999, 41461.5000, 1.7300 },{ 6002.3999, 41461.8008, 1.7300 },{ 6002.3999, 41462.1016, 1.7400 },{ 6002.3999, 41462.3984, 1.7700 },{ 6002.3999, 41462.6992, 1.8000 },{ 6002.3999, 41463.0000, 1.8500 },{ 6002.3999, 41463.3008, 1.9200 },{ 6002.3999, 41463.6016, 2.0100 },{ 6002.3999, 41463.8984, 2.1100 },{ 6002.3999, 41464.1992, 2.1800 },{ 6002.3999, 41464.5000, 2.2200 },{ 6002.3999, 41464.8008, 2.2200 },{ 6002.3999, 41465.1016, 2.1900 },{ 6002.3999, 41465.3984, 2.1700 },{ 6002.3999, 41465.6992, 2.1500 },{ 6002.3999, 41466.0000, 2.1600 },{ 6002.3999, 41466.3008, 2.1700 },{ 6002.3999, 41466.6016, 2.1900 },{ 6002.3999, 41466.8984, 2.2100 },{ 6002.3999, 41467.1992, 2.2400 },{ 6002.3999, 41467.5000, 2.2900 },{ 6002.7002, 41456.1016, 1.8100 },{ 6002.7002, 41456.3984, 1.7900 },{ 6002.7002, 41456.6992, 1.7800 },{ 6002.7002, 41457.0000, 1.7600 },{ 6002.7002, 41457.3008, 1.7500 },{ 6002.7002, 41457.6016, 1.7500 },{ 6002.7002, 41457.8984, 1.7500 },{ 6002.7002, 41458.1992, 1.7500 },{ 6002.7002, 41458.5000, 1.7500 },{ 6002.7002, 41458.8008, 1.7500 },{ 6002.7002, 41459.1016, 1.7400 },{ 6002.7002, 41459.3984, 1.7300 },{ 6002.7002, 41459.6992, 1.7300 },{ 6002.7002, 41460.0000, 1.7300 },{ 6002.7002, 41460.3008, 1.7400 },{ 6002.7002, 41460.6016, 1.7400 },{ 6002.7002, 41460.8984, 1.7500 },{ 6002.7002, 41461.1992, 1.7400 },{ 6002.7002, 41461.5000, 1.7400 },{ 6002.7002, 41461.8008, 1.7400 },{ 6002.7002, 41462.1016, 1.7500 },{ 6002.7002, 41462.3984, 1.7900 },{ 6002.7002, 41462.6992, 1.8300 },{ 6002.7002, 41463.0000, 1.8800 },{ 6002.7002, 41463.3008, 1.9500 },{ 6002.7002, 41463.6016, 2.0400 },{ 6002.7002, 41463.8984, 2.1400 },{ 6002.7002, 41464.1992, 2.2100 },{ 6002.7002, 41464.5000, 2.2600 },{ 6002.7002, 41464.8008, 2.2500 },{ 6002.7002, 41465.1016, 2.2200 },{ 6002.7002, 41465.3984, 2.2000 },{ 6002.7002, 41465.6992, 2.1900 },{ 6002.7002, 41466.0000, 2.1900 },{ 6002.7002, 41466.3008, 2.2100 },{ 6002.7002, 41466.6016, 2.2200 },{ 6002.7002, 41466.8984, 2.2400 },{ 6002.7002, 41467.1992, 2.2700 },{ 6002.7002, 41467.5000, 2.3100 },{ 6003.0000, 41456.1016, 1.8400 },{ 6003.0000, 41456.3984, 1.8300 },{ 6003.0000, 41456.6992, 1.8200 },{ 6003.0000, 41457.0000, 1.8100 },{ 6003.0000, 41457.3008, 1.8000 },{ 6003.0000, 41457.6016, 1.7900 },{ 6003.0000, 41457.8984, 1.7800 },{ 6003.0000, 41458.1992, 1.7700 },{ 6003.0000, 41458.5000, 1.7600 },{ 6003.0000, 41458.8008, 1.7600 },{ 6003.0000, 41459.1016, 1.7500 },{ 6003.0000, 41459.3984, 1.7400 },{ 6003.0000, 41459.6992, 1.7400 },{ 6003.0000, 41460.0000, 1.7400 },{ 6003.0000, 41460.3008, 1.7500 },{ 6003.0000, 41460.6016, 1.7500 },{ 6003.0000, 41460.8984, 1.7500 },{ 6003.0000, 41461.1992, 1.7500 },{ 6003.0000, 41461.5000, 1.7500 },{ 6003.0000, 41461.8008, 1.7500 },{ 6003.0000, 41462.1016, 1.7700 },{ 6003.0000, 41462.3984, 1.8000 },{ 6003.0000, 41462.6992, 1.8500 },{ 6003.0000, 41463.0000, 1.9100 },{ 6003.0000, 41463.3008, 1.9800 },{ 6003.0000, 41463.6016, 2.0600 },{ 6003.0000, 41463.8984, 2.1500 },{ 6003.0000, 41464.1992, 2.2200 },{ 6003.0000, 41464.5000, 2.2700 },{ 6003.0000, 41464.8008, 2.2700 },{ 6003.0000, 41465.1016, 2.2400 },{ 6003.0000, 41465.3984, 2.2300 },{ 6003.0000, 41465.6992, 2.2200 },{ 6003.0000, 41466.0000, 2.2300 },{ 6003.0000, 41466.3008, 2.2600 },{ 6003.0000, 41466.6016, 2.2800 },{ 6003.0000, 41466.8984, 2.3000 },{ 6003.0000, 41467.1992, 2.3300 },{ 6003.0000, 41467.5000, 2.3700 },{ 6003.2998, 41456.1016, 1.8500 },{ 6003.2998, 41456.3984, 1.8600 },{ 6003.2998, 41456.6992, 1.8700 },{ 6003.2998, 41457.0000, 1.8700 },{ 6003.2998, 41457.3008, 1.8600 },{ 6003.2998, 41457.6016, 1.8500 },{ 6003.2998, 41457.8984, 1.8200 },{ 6003.2998, 41458.1992, 1.8000 },{ 6003.2998, 41458.5000, 1.7800 },{ 6003.2998, 41458.8008, 1.7700 },{ 6003.2998, 41459.1016, 1.7600 },{ 6003.2998, 41459.3984, 1.7500 },{ 6003.2998, 41459.6992, 1.7500 },{ 6003.2998, 41460.0000, 1.7500 },{ 6003.2998, 41460.3008, 1.7600 },{ 6003.2998, 41460.6016, 1.7600 },{ 6003.2998, 41460.8984, 1.7600 },{ 6003.2998, 41461.1992, 1.7600 },{ 6003.2998, 41461.5000, 1.7600 },{ 6003.2998, 41461.8008, 1.7700 },{ 6003.2998, 41462.1016, 1.7800 },{ 6003.2998, 41462.3984, 1.8200 },{ 6003.2998, 41462.6992, 1.8700 },{ 6003.2998, 41463.0000, 1.9300 },{ 6003.2998, 41463.3008, 1.9900 },{ 6003.2998, 41463.6016, 2.0700 },{ 6003.2998, 41463.8984, 2.1500 },{ 6003.2998, 41464.1992, 2.2100 },{ 6003.2998, 41464.5000, 2.2600 },{ 6003.2998, 41464.8008, 2.2600 },{ 6003.2998, 41465.1016, 2.2500 },{ 6003.2998, 41465.3984, 2.2500 },{ 6003.2998, 41465.6992, 2.2500 },{ 6003.2998, 41466.0000, 2.2800 },{ 6003.2998, 41466.3008, 2.3200 },{ 6003.2998, 41466.6016, 2.3500 },{ 6003.2998, 41466.8984, 2.3800 },{ 6003.2998, 41467.1992, 2.4100 },{ 6003.2998, 41467.5000, 2.4400 },{ 6003.6001, 41456.1016, 1.8600 },{ 6003.6001, 41456.3984, 1.8800 },{ 6003.6001, 41456.6992, 1.9000 },{ 6003.6001, 41457.0000, 1.9200 },{ 6003.6001, 41457.3008, 1.9200 },{ 6003.6001, 41457.6016, 1.9000 },{ 6003.6001, 41457.8984, 1.8700 },{ 6003.6001, 41458.1992, 1.8400 },{ 6003.6001, 41458.5000, 1.8100 },{ 6003.6001, 41458.8008, 1.7900 },{ 6003.6001, 41459.1016, 1.7700 },{ 6003.6001, 41459.3984, 1.7600 },{ 6003.6001, 41459.6992, 1.7600 },{ 6003.6001, 41460.0000, 1.7600 },{ 6003.6001, 41460.3008, 1.7700 },{ 6003.6001, 41460.6016, 1.7700 },{ 6003.6001, 41460.8984, 1.7800 },{ 6003.6001, 41461.1992, 1.7700 },{ 6003.6001, 41461.5000, 1.7700 },{ 6003.6001, 41461.8008, 1.7800 },{ 6003.6001, 41462.1016, 1.8000 },{ 6003.6001, 41462.3984, 1.8400 },{ 6003.6001, 41462.6992, 1.9000 },{ 6003.6001, 41463.0000, 1.9500 },{ 6003.6001, 41463.3008, 2.0200 },{ 6003.6001, 41463.6016, 2.0900 },{ 6003.6001, 41463.8984, 2.1600 },{ 6003.6001, 41464.1992, 2.2200 },{ 6003.6001, 41464.5000, 2.2600 },{ 6003.6001, 41464.8008, 2.2700 },{ 6003.6001, 41465.1016, 2.2700 },{ 6003.6001, 41465.3984, 2.2700 },{ 6003.6001, 41465.6992, 2.2900 },{ 6003.6001, 41466.0000, 2.3400 },{ 6003.6001, 41466.3008, 2.4000 },{ 6003.6001, 41466.6016, 2.4500 },{ 6003.6001, 41466.8984, 2.4900 },{ 6003.6001, 41467.1992, 2.5100 },{ 6003.6001, 41467.5000, 2.5200 },{ 6003.8999, 41456.1016, 1.8800 },{ 6003.8999, 41456.3984, 1.9000 },{ 6003.8999, 41456.6992, 1.9300 },{ 6003.8999, 41457.0000, 1.9600 },{ 6003.8999, 41457.3008, 1.9600 },{ 6003.8999, 41457.6016, 1.9400 },{ 6003.8999, 41457.8984, 1.9000 },{ 6003.8999, 41458.1992, 1.8700 },{ 6003.8999, 41458.5000, 1.8400 },{ 6003.8999, 41458.8008, 1.8100 },{ 6003.8999, 41459.1016, 1.7800 },{ 6003.8999, 41459.3984, 1.7700 },{ 6003.8999, 41459.6992, 1.7600 },{ 6003.8999, 41460.0000, 1.7700 },{ 6003.8999, 41460.3008, 1.7800 },{ 6003.8999, 41460.6016, 1.7900 },{ 6003.8999, 41460.8984, 1.7900 },{ 6003.8999, 41461.1992, 1.7900 },{ 6003.8999, 41461.5000, 1.7900 },{ 6003.8999, 41461.8008, 1.8000 },{ 6003.8999, 41462.1016, 1.8200 },{ 6003.8999, 41462.3984, 1.8700 },{ 6003.8999, 41462.6992, 1.9300 },{ 6003.8999, 41463.0000, 2.0000 },{ 6003.8999, 41463.3008, 2.0600 },{ 6003.8999, 41463.6016, 2.1400 },{ 6003.8999, 41463.8984, 2.2100 },{ 6003.8999, 41464.1992, 2.2800 },{ 6003.8999, 41464.5000, 2.3200 },{ 6003.8999, 41464.8008, 2.3200 },{ 6003.8999, 41465.1016, 2.3200 },{ 6003.8999, 41465.3984, 2.3300 },{ 6003.8999, 41465.6992, 2.3500 },{ 6003.8999, 41466.0000, 2.4100 },{ 6003.8999, 41466.3008, 2.4900 },{ 6003.8999, 41466.6016, 2.5500 },{ 6003.8999, 41466.8984, 2.5900 },{ 6003.8999, 41467.1992, 2.6000 },{ 6003.8999, 41467.5000, 2.6000 },{ 6004.2002, 41456.1016, 1.9100 },{ 6004.2002, 41456.3984, 1.9200 },{ 6004.2002, 41456.6992, 1.9600 },{ 6004.2002, 41457.0000, 1.9800 },{ 6004.2002, 41457.3008, 1.9800 },{ 6004.2002, 41457.6016, 1.9500 },{ 6004.2002, 41457.8984, 1.9100 },{ 6004.2002, 41458.1992, 1.8700 },{ 6004.2002, 41458.5000, 1.8400 },{ 6004.2002, 41458.8008, 1.8100 },{ 6004.2002, 41459.1016, 1.7900 },{ 6004.2002, 41459.3984, 1.7800 },{ 6004.2002, 41459.6992, 1.7700 },{ 6004.2002, 41460.0000, 1.7800 },{ 6004.2002, 41460.3008, 1.7900 },{ 6004.2002, 41460.6016, 1.8000 },{ 6004.2002, 41460.8984, 1.8100 },{ 6004.2002, 41461.1992, 1.8100 },{ 6004.2002, 41461.5000, 1.8000 },{ 6004.2002, 41461.8008, 1.8100 },{ 6004.2002, 41462.1016, 1.8400 },{ 6004.2002, 41462.3984, 1.9000 },{ 6004.2002, 41462.6992, 1.9700 },{ 6004.2002, 41463.0000, 2.0500 },{ 6004.2002, 41463.3008, 2.1400 },{ 6004.2002, 41463.6016, 2.2200 },{ 6004.2002, 41463.8984, 2.3100 },{ 6004.2002, 41464.1992, 2.3800 },{ 6004.2002, 41464.5000, 2.4300 },{ 6004.2002, 41464.8008, 2.4400 },{ 6004.2002, 41465.1016, 2.4200 },{ 6004.2002, 41465.3984, 2.4200 },{ 6004.2002, 41465.6992, 2.4400 },{ 6004.2002, 41466.0000, 2.5100 },{ 6004.2002, 41466.3008, 2.5800 },{ 6004.2002, 41466.6016, 2.6500 },{ 6004.2002, 41466.8984, 2.6900 },{ 6004.2002, 41467.1992, 2.6900 },{ 6004.2002, 41467.5000, 2.6800 },{ 6004.5000, 41456.1016, 1.9500 },{ 6004.5000, 41456.3984, 1.9500 },{ 6004.5000, 41456.6992, 1.9600 },{ 6004.5000, 41457.0000, 1.9700 },{ 6004.5000, 41457.3008, 1.9600 },{ 6004.5000, 41457.6016, 1.9300 },{ 6004.5000, 41457.8984, 1.8900 },{ 6004.5000, 41458.1992, 1.8500 },{ 6004.5000, 41458.5000, 1.8200 },{ 6004.5000, 41458.8008, 1.8000 },{ 6004.5000, 41459.1016, 1.7900 },{ 6004.5000, 41459.3984, 1.7800 },{ 6004.5000, 41459.6992, 1.7800 },{ 6004.5000, 41460.0000, 1.7900 },{ 6004.5000, 41460.3008, 1.8000 },{ 6004.5000, 41460.6016, 1.8200 },{ 6004.5000, 41460.8984, 1.8300 },{ 6004.5000, 41461.1992, 1.8300 },{ 6004.5000, 41461.5000, 1.8300 },{ 6004.5000, 41461.8008, 1.8400 },{ 6004.5000, 41462.1016, 1.8700 },{ 6004.5000, 41462.3984, 1.9400 },{ 6004.5000, 41462.6992, 2.0200 },{ 6004.5000, 41463.0000, 2.1200 },{ 6004.5000, 41463.3008, 2.2100 },{ 6004.5000, 41463.6016, 2.3200 },{ 6004.5000, 41463.8984, 2.4200 },{ 6004.5000, 41464.1992, 2.5000 },{ 6004.5000, 41464.5000, 2.5600 },{ 6004.5000, 41464.8008, 2.5600 },{ 6004.5000, 41465.1016, 2.5400 },{ 6004.5000, 41465.3984, 2.5400 },{ 6004.5000, 41465.6992, 2.5500 },{ 6004.5000, 41466.0000, 2.6100 },{ 6004.5000, 41466.3008, 2.6800 },{ 6004.5000, 41466.6016, 2.7400 },{ 6004.5000, 41466.8984, 2.7800 },{ 6004.5000, 41467.1992, 2.7800 },{ 6004.5000, 41467.5000, 2.7600 },{ 6004.7998, 41456.1016, 1.9800 },{ 6004.7998, 41456.3984, 1.9600 },{ 6004.7998, 41456.6992, 1.9400 },{ 6004.7998, 41457.0000, 1.9100 },{ 6004.7998, 41457.3008, 1.8900 },{ 6004.7998, 41457.6016, 1.8600 },{ 6004.7998, 41457.8984, 1.8300 },{ 6004.7998, 41458.1992, 1.8100 },{ 6004.7998, 41458.5000, 1.7900 },{ 6004.7998, 41458.8008, 1.7900 },{ 6004.7998, 41459.1016, 1.7900 },{ 6004.7998, 41459.3984, 1.7900 },{ 6004.7998, 41459.6992, 1.7900 },{ 6004.7998, 41460.0000, 1.8000 },{ 6004.7998, 41460.3008, 1.8200 },{ 6004.7998, 41460.6016, 1.8400 },{ 6004.7998, 41460.8984, 1.8500 },{ 6004.7998, 41461.1992, 1.8600 },{ 6004.7998, 41461.5000, 1.8700 },{ 6004.7998, 41461.8008, 1.8900 },{ 6004.7998, 41462.1016, 1.9200 },{ 6004.7998, 41462.3984, 1.9900 },{ 6004.7998, 41462.6992, 2.0800 },{ 6004.7998, 41463.0000, 2.1700 },{ 6004.7998, 41463.3008, 2.2700 },{ 6004.7998, 41463.6016, 2.3900 },{ 6004.7998, 41463.8984, 2.5100 },{ 6004.7998, 41464.1992, 2.6100 },{ 6004.7998, 41464.5000, 2.6700 },{ 6004.7998, 41464.8008, 2.6800 },{ 6004.7998, 41465.1016, 2.6600 },{ 6004.7998, 41465.3984, 2.6500 },{ 6004.7998, 41465.6992, 2.6600 },{ 6004.7998, 41466.0000, 2.7100 },{ 6004.7998, 41466.3008, 2.7700 },{ 6004.7998, 41466.6016, 2.8300 },{ 6004.7998, 41466.8984, 2.8700 },{ 6004.7998, 41467.1992, 2.8700 },{ 6004.7998, 41467.5000, 2.8500 },{ 6005.1001, 41456.1016, 2.0300 },{ 6005.1001, 41456.3984, 1.9800 },{ 6005.1001, 41456.6992, 1.9300 },{ 6005.1001, 41457.0000, 1.8900 },{ 6005.1001, 41457.3008, 1.8400 },{ 6005.1001, 41457.6016, 1.8200 },{ 6005.1001, 41457.8984, 1.8000 },{ 6005.1001, 41458.1992, 1.8000 },{ 6005.1001, 41458.5000, 1.8000 },{ 6005.1001, 41458.8008, 1.8000 },{ 6005.1001, 41459.1016, 1.7800 },{ 6005.1001, 41459.3984, 1.7900 },{ 6005.1001, 41459.6992, 1.8000 },{ 6005.1001, 41460.0000, 1.8200 },{ 6005.1001, 41460.3008, 1.8400 },{ 6005.1001, 41460.6016, 1.8600 },{ 6005.1001, 41460.8984, 1.8800 },{ 6005.1001, 41461.1992, 1.9000 },{ 6005.1001, 41461.5000, 1.9200 },{ 6005.1001, 41461.8008, 1.9400 },{ 6005.1001, 41462.1016, 1.9800 },{ 6005.1001, 41462.3984, 2.0500 },{ 6005.1001, 41462.6992, 2.1300 },{ 6005.1001, 41463.0000, 2.2100 },{ 6005.1001, 41463.3008, 2.3100 },{ 6005.1001, 41463.6016, 2.4300 },{ 6005.1001, 41463.8984, 2.5600 },{ 6005.1001, 41464.1992, 2.6600 },{ 6005.1001, 41464.5000, 2.7400 },{ 6005.1001, 41464.8008, 2.7600 },{ 6005.1001, 41465.1016, 2.7400 },{ 6005.1001, 41465.3984, 2.7400 },{ 6005.1001, 41465.6992, 2.7500 },{ 6005.1001, 41466.0000, 2.7900 },{ 6005.1001, 41466.3008, 2.8600 },{ 6005.1001, 41466.6016, 2.9100 },{ 6005.1001, 41466.8984, 2.9400 },{ 6005.1001, 41467.1992, 2.9500 },{ 6005.1001, 41467.5000, 2.9300 },{ 6005.3999, 41456.1016, 2.0700 },{ 6005.3999, 41456.3984, 2.0200 },{ 6005.3999, 41456.6992, 1.9500 },{ 6005.3999, 41457.0000, 1.8900 },{ 6005.3999, 41457.3008, 1.8400 },{ 6005.3999, 41457.6016, 1.8100 },{ 6005.3999, 41457.8984, 1.8000 },{ 6005.3999, 41458.1992, 1.8000 },{ 6005.3999, 41458.5000, 1.8000 },{ 6005.3999, 41458.8008, 1.8000 },{ 6005.3999, 41459.1016, 1.7900 },{ 6005.3999, 41459.3984, 1.8000 },{ 6005.3999, 41459.6992, 1.8200 },{ 6005.3999, 41460.0000, 1.8400 },{ 6005.3999, 41460.3008, 1.8600 },{ 6005.3999, 41460.6016, 1.8800 },{ 6005.3999, 41460.8984, 1.9100 },{ 6005.3999, 41461.1992, 1.9300 },{ 6005.3999, 41461.5000, 1.9600 },{ 6005.3999, 41461.8008, 1.9900 },{ 6005.3999, 41462.1016, 2.0300 },{ 6005.3999, 41462.3984, 2.0900 },{ 6005.3999, 41462.6992, 2.1700 },{ 6005.3999, 41463.0000, 2.2500 },{ 6005.3999, 41463.3008, 2.3400 },{ 6005.3999, 41463.6016, 2.4500 },{ 6005.3999, 41463.8984, 2.5600 },{ 6005.3999, 41464.1992, 2.6600 },{ 6005.3999, 41464.5000, 2.7400 },{ 6005.3999, 41464.8008, 2.7700 },{ 6005.3999, 41465.1016, 2.7800 },{ 6005.3999, 41465.3984, 2.8000 },{ 6005.3999, 41465.6992, 2.8300 },{ 6005.3999, 41466.0000, 2.8800 },{ 6005.3999, 41466.3008, 2.9400 },{ 6005.3999, 41466.6016, 2.9800 },{ 6005.3999, 41466.8984, 3.0200 },{ 6005.3999, 41467.1992, 3.0300 },{ 6005.3999, 41467.5000, 3.0200 },{ 6005.7002, 41456.1016, 2.0900 },{ 6005.7002, 41456.3984, 2.0300 },{ 6005.7002, 41456.6992, 1.9600 },{ 6005.7002, 41457.0000, 1.8900 },{ 6005.7002, 41457.3008, 1.8300 },{ 6005.7002, 41457.6016, 1.8000 },{ 6005.7002, 41457.8984, 1.8000 },{ 6005.7002, 41458.1992, 1.8000 },{ 6005.7002, 41458.5000, 1.8000 },{ 6005.7002, 41458.8008, 1.8000 },{ 6005.7002, 41459.1016, 1.8100 },{ 6005.7002, 41459.3984, 1.8200 },{ 6005.7002, 41459.6992, 1.8300 },{ 6005.7002, 41460.0000, 1.8500 },{ 6005.7002, 41460.3008, 1.8800 },{ 6005.7002, 41460.6016, 1.9000 },{ 6005.7002, 41460.8984, 1.9200 },{ 6005.7002, 41461.1992, 1.9500 },{ 6005.7002, 41461.5000, 1.9800 },{ 6005.7002, 41461.8008, 2.0200 },{ 6005.7002, 41462.1016, 2.0600 },{ 6005.7002, 41462.3984, 2.1200 },{ 6005.7002, 41462.6992, 2.2000 },{ 6005.7002, 41463.0000, 2.2800 },{ 6005.7002, 41463.3008, 2.3700 },{ 6005.7002, 41463.6016, 2.4600 },{ 6005.7002, 41463.8984, 2.5500 },{ 6005.7002, 41464.1992, 2.6400 },{ 6005.7002, 41464.5000, 2.7200 },{ 6005.7002, 41464.8008, 2.7700 },{ 6005.7002, 41465.1016, 2.8100 },{ 6005.7002, 41465.3984, 2.8600 },{ 6005.7002, 41465.6992, 2.9100 },{ 6005.7002, 41466.0000, 2.9600 },{ 6005.7002, 41466.3008, 3.0100 },{ 6005.7002, 41466.6016, 3.0500 },{ 6005.7002, 41466.8984, 3.0900 },{ 6005.7002, 41467.1992, 3.1000 },{ 6005.7002, 41467.5000, 3.1000 },{ 6006.0000, 41456.1016, 2.0700 },{ 6006.0000, 41456.3984, 2.0100 },{ 6006.0000, 41456.6992, 1.9400 },{ 6006.0000, 41457.0000, 1.8700 },{ 6006.0000, 41457.3008, 1.8000 },{ 6006.0000, 41457.6016, 1.8000 },{ 6006.0000, 41457.8984, 1.8000 },{ 6006.0000, 41458.1992, 1.8000 },{ 6006.0000, 41458.5000, 1.8000 },{ 6006.0000, 41458.8008, 1.8100 },{ 6006.0000, 41459.1016, 1.8200 },{ 6006.0000, 41459.3984, 1.8300 },{ 6006.0000, 41459.6992, 1.8400 },{ 6006.0000, 41460.0000, 1.8600 },{ 6006.0000, 41460.3008, 1.8900 },{ 6006.0000, 41460.6016, 1.9100 },{ 6006.0000, 41460.8984, 1.9300 },{ 6006.0000, 41461.1992, 1.9600 },{ 6006.0000, 41461.5000, 1.9900 },{ 6006.0000, 41461.8008, 2.0300 },{ 6006.0000, 41462.1016, 2.0800 },{ 6006.0000, 41462.3984, 2.1500 },{ 6006.0000, 41462.6992, 2.2400 },{ 6006.0000, 41463.0000, 2.3200 },{ 6006.0000, 41463.3008, 2.4100 },{ 6006.0000, 41463.6016, 2.5000 },{ 6006.0000, 41463.8984, 2.6000 },{ 6006.0000, 41464.1992, 2.6900 },{ 6006.0000, 41464.5000, 2.7800 },{ 6006.0000, 41464.8008, 2.8300 },{ 6006.0000, 41465.1016, 2.8800 },{ 6006.0000, 41465.3984, 2.9200 },{ 6006.0000, 41465.6992, 2.9700 },{ 6006.0000, 41466.0000, 3.0200 },{ 6006.0000, 41466.3008, 3.0700 },{ 6006.0000, 41466.6016, 3.1200 },{ 6006.0000, 41466.8984, 3.1500 },{ 6006.0000, 41467.1992, 3.1700 },{ 6006.0000, 41467.5000, 3.1700 },{ 6006.2998, 41456.1016, 2.0300 },{ 6006.2998, 41456.3984, 1.9700 },{ 6006.2998, 41456.6992, 1.9000 },{ 6006.2998, 41457.0000, 1.8300 },{ 6006.2998, 41457.3008, 1.8000 },{ 6006.2998, 41457.6016, 1.8000 },{ 6006.2998, 41457.8984, 1.8000 },{ 6006.2998, 41458.1992, 1.8000 },{ 6006.2998, 41458.5000, 1.8000 },{ 6006.2998, 41458.8008, 1.8200 },{ 6006.2998, 41459.1016, 1.8300 },{ 6006.2998, 41459.3984, 1.8500 },{ 6006.2998, 41459.6992, 1.8600 },{ 6006.2998, 41460.0000, 1.8800 },{ 6006.2998, 41460.3008, 1.9000 },{ 6006.2998, 41460.6016, 1.9200 },{ 6006.2998, 41460.8984, 1.9400 },{ 6006.2998, 41461.1992, 1.9700 },{ 6006.2998, 41461.5000, 2.0100 },{ 6006.2998, 41461.8008, 2.0500 },{ 6006.2998, 41462.1016, 2.1000 },{ 6006.2998, 41462.3984, 2.1800 },{ 6006.2998, 41462.6992, 2.2700 },{ 6006.2998, 41463.0000, 2.3600 },{ 6006.2998, 41463.3008, 2.4500 },{ 6006.2998, 41463.6016, 2.5600 },{ 6006.2998, 41463.8984, 2.6700 },{ 6006.2998, 41464.1992, 2.7700 },{ 6006.2998, 41464.5000, 2.8600 },{ 6006.2998, 41464.8008, 2.9100 },{ 6006.2998, 41465.1016, 2.9400 },{ 6006.2998, 41465.3984, 2.9700 },{ 6006.2998, 41465.6992, 3.0100 },{ 6006.2998, 41466.0000, 3.0600 },{ 6006.2998, 41466.3008, 3.1200 },{ 6006.2998, 41466.6016, 3.1800 },{ 6006.2998, 41466.8984, 3.2200 },{ 6006.2998, 41467.1992, 3.2400 },{ 6006.2998, 41467.5000, 3.2400 },{ 6006.6001, 41456.1016, 1.9600 },{ 6006.6001, 41456.3984, 1.9100 },{ 6006.6001, 41456.6992, 1.8500 },{ 6006.6001, 41457.0000, 1.8000 },{ 6006.6001, 41457.3008, 1.8000 },{ 6006.6001, 41457.6016, 1.8000 },{ 6006.6001, 41457.8984, 1.8000 },{ 6006.6001, 41458.1992, 1.8000 },{ 6006.6001, 41458.5000, 1.8000 },{ 6006.6001, 41458.8008, 1.8200 },{ 6006.6001, 41459.1016, 1.8400 },{ 6006.6001, 41459.3984, 1.8600 },{ 6006.6001, 41459.6992, 1.8800 },{ 6006.6001, 41460.0000, 1.9000 },{ 6006.6001, 41460.3008, 1.9100 },{ 6006.6001, 41460.6016, 1.9300 },{ 6006.6001, 41460.8984, 1.9500 },{ 6006.6001, 41461.1992, 1.9800 },{ 6006.6001, 41461.5000, 2.0200 },{ 6006.6001, 41461.8008, 2.0700 },{ 6006.6001, 41462.1016, 2.1200 },{ 6006.6001, 41462.3984, 2.2000 },{ 6006.6001, 41462.6992, 2.3000 },{ 6006.6001, 41463.0000, 2.3900 },{ 6006.6001, 41463.3008, 2.4900 },{ 6006.6001, 41463.6016, 2.6100 },{ 6006.6001, 41463.8984, 2.7300 },{ 6006.6001, 41464.1992, 2.8400 },{ 6006.6001, 41464.5000, 2.9300 },{ 6006.6001, 41464.8008, 2.9700 },{ 6006.6001, 41465.1016, 2.9800 },{ 6006.6001, 41465.3984, 3.0000 },{ 6006.6001, 41465.6992, 3.0300 },{ 6006.6001, 41466.0000, 3.0900 },{ 6006.6001, 41466.3008, 3.1700 },{ 6006.6001, 41466.6016, 3.2400 },{ 6006.6001, 41466.8984, 3.3000 },{ 6006.6001, 41467.1992, 3.3200 },{ 6006.6001, 41467.5000, 3.3200 },{ 6006.8999, 41456.1016, 1.8800 },{ 6006.8999, 41456.3984, 1.8500 },{ 6006.8999, 41456.6992, 1.8000 },{ 6006.8999, 41457.0000, 1.8000 },{ 6006.8999, 41457.3008, 1.8000 },{ 6006.8999, 41457.6016, 1.8000 },{ 6006.8999, 41457.8984, 1.8000 },{ 6006.8999, 41458.1992, 1.8000 },{ 6006.8999, 41458.5000, 1.8000 },{ 6006.8999, 41458.8008, 1.8200 },{ 6006.8999, 41459.1016, 1.8500 },{ 6006.8999, 41459.3984, 1.8800 },{ 6006.8999, 41459.6992, 1.9000 },{ 6006.8999, 41460.0000, 1.9200 },{ 6006.8999, 41460.3008, 1.9300 },{ 6006.8999, 41460.6016, 1.9400 },{ 6006.8999, 41460.8984, 1.9600 },{ 6006.8999, 41461.1992, 1.9900 },{ 6006.8999, 41461.5000, 2.0400 },{ 6006.8999, 41461.8008, 2.0800 },{ 6006.8999, 41462.1016, 2.1400 },{ 6006.8999, 41462.3984, 2.2300 },{ 6006.8999, 41462.6992, 2.3300 },{ 6006.8999, 41463.0000, 2.4300 },{ 6006.8999, 41463.3008, 2.5400 },{ 6006.8999, 41463.6016, 2.6700 },{ 6006.8999, 41463.8984, 2.7900 },{ 6006.8999, 41464.1992, 2.9100 },{ 6006.8999, 41464.5000, 3.0000 },{ 6006.8999, 41464.8008, 3.0400 },{ 6006.8999, 41465.1016, 3.0400 },{ 6006.8999, 41465.3984, 3.0500 },{ 6006.8999, 41465.6992, 3.0800 },{ 6006.8999, 41466.0000, 3.1500 },{ 6006.8999, 41466.3008, 3.2400 },{ 6006.8999, 41466.6016, 3.3200 },{ 6006.8999, 41466.8984, 3.3800 },{ 6006.8999, 41467.1992, 3.4000 },{ 6006.8999, 41467.5000, 3.4000 },{ 6007.2002, 41456.1016, 1.8300 },{ 6007.2002, 41456.3984, 1.8000 },{ 6007.2002, 41456.6992, 1.8000 },{ 6007.2002, 41457.0000, 1.8000 },{ 6007.2002, 41457.3008, 1.8000 },{ 6007.2002, 41457.6016, 1.8000 },{ 6007.2002, 41457.8984, 1.8000 },{ 6007.2002, 41458.1992, 1.8000 },{ 6007.2002, 41458.5000, 1.8000 },{ 6007.2002, 41458.8008, 1.8000 },{ 6007.2002, 41459.1016, 1.8600 },{ 6007.2002, 41459.3984, 1.8900 },{ 6007.2002, 41459.6992, 1.9200 },{ 6007.2002, 41460.0000, 1.9400 },{ 6007.2002, 41460.3008, 1.9500 },{ 6007.2002, 41460.6016, 1.9600 },{ 6007.2002, 41460.8984, 1.9800 },{ 6007.2002, 41461.1992, 2.0100 },{ 6007.2002, 41461.5000, 2.0600 },{ 6007.2002, 41461.8008, 2.1100 },{ 6007.2002, 41462.1016, 2.1700 },{ 6007.2002, 41462.3984, 2.2600 },{ 6007.2002, 41462.6992, 2.3700 },{ 6007.2002, 41463.0000, 2.4800 },{ 6007.2002, 41463.3008, 2.6000 },{ 6007.2002, 41463.6016, 2.7300 },{ 6007.2002, 41463.8984, 2.8600 },{ 6007.2002, 41464.1992, 2.9700 },{ 6007.2002, 41464.5000, 3.0600 },{ 6007.2002, 41464.8008, 3.0900 },{ 6007.2002, 41465.1016, 3.0900 },{ 6007.2002, 41465.3984, 3.1000 },{ 6007.2002, 41465.6992, 3.1300 },{ 6007.2002, 41466.0000, 3.2100 },{ 6007.2002, 41466.3008, 3.3100 },{ 6007.2002, 41466.6016, 3.4100 },{ 6007.2002, 41466.8984, 3.4800 },{ 6007.2002, 41467.1992, 3.5000 },{ 6007.2002, 41467.5000, 3.4800 },{ 6007.5000, 41456.1016, 1.8000 },{ 6007.5000, 41456.3984, 1.7800 },{ 6007.5000, 41456.6992, 1.8000 },{ 6007.5000, 41457.0000, 1.8000 },{ 6007.5000, 41457.3008, 1.8000 },{ 6007.5000, 41457.6016, 1.8000 },{ 6007.5000, 41457.8984, 1.8000 },{ 6007.5000, 41458.1992, 1.8000 },{ 6007.5000, 41458.5000, 1.8000 },{ 6007.5000, 41458.8008, 1.8400 },{ 6007.5000, 41459.1016, 1.8800 },{ 6007.5000, 41459.3984, 1.9100 },{ 6007.5000, 41459.6992, 1.9400 },{ 6007.5000, 41460.0000, 1.9600 },{ 6007.5000, 41460.3008, 1.9700 },{ 6007.5000, 41460.6016, 1.9900 },{ 6007.5000, 41460.8984, 2.0100 },{ 6007.5000, 41461.1992, 2.0500 },{ 6007.5000, 41461.5000, 2.1000 },{ 6007.5000, 41461.8008, 2.1600 },{ 6007.5000, 41462.1016, 2.2300 },{ 6007.5000, 41462.3984, 2.3200 },{ 6007.5000, 41462.6992, 2.4400 },{ 6007.5000, 41463.0000, 2.5600 },{ 6007.5000, 41463.3008, 2.6800 },{ 6007.5000, 41463.6016, 2.8000 },{ 6007.5000, 41463.8984, 2.9200 },{ 6007.5000, 41464.1992, 3.0200 },{ 6007.5000, 41464.5000, 3.1100 },{ 6007.5000, 41464.8008, 3.1300 },{ 6007.5000, 41465.1016, 3.1200 },{ 6007.5000, 41465.3984, 3.1200 },{ 6007.5000, 41465.6992, 3.1500 },{ 6007.5000, 41466.0000, 3.2400 },{ 6007.5000, 41466.3008, 3.3700 },{ 6007.5000, 41466.6016, 3.4800 },{ 6007.5000, 41466.8984, 3.5700 },{ 6007.5000, 41467.1992, 3.5800 },{ 6007.5000, 41467.5000, 3.5600 },{ 6007.7998, 41456.1016, 1.8100 },{ 6007.7998, 41456.3984, 1.7800 },{ 6007.7998, 41456.6992, 1.8000 },{ 6007.7998, 41457.0000, 1.8000 },{ 6007.7998, 41457.3008, 1.8000 },{ 6007.7998, 41457.6016, 1.8000 },{ 6007.7998, 41457.8984, 1.8000 },{ 6007.7998, 41458.1992, 1.8000 },{ 6007.7998, 41458.5000, 1.8000 },{ 6007.7998, 41458.8008, 1.8700 },{ 6007.7998, 41459.1016, 1.9000 },{ 6007.7998, 41459.3984, 1.9400 },{ 6007.7998, 41459.6992, 1.9700 },{ 6007.7998, 41460.0000, 1.9900 },{ 6007.7998, 41460.3008, 2.0000 },{ 6007.7998, 41460.6016, 2.0200 },{ 6007.7998, 41460.8984, 2.0500 },{ 6007.7998, 41461.1992, 2.1000 },{ 6007.7998, 41461.5000, 2.1600 },{ 6007.7998, 41461.8008, 2.2300 },{ 6007.7998, 41462.1016, 2.3100 },{ 6007.7998, 41462.3984, 2.4100 },{ 6007.7998, 41462.6992, 2.5400 },{ 6007.7998, 41463.0000, 2.6600 },{ 6007.7998, 41463.3008, 2.7800 },{ 6007.7998, 41463.6016, 2.8900 },{ 6007.7998, 41463.8984, 2.9900 },{ 6007.7998, 41464.1992, 3.0800 },{ 6007.7998, 41464.5000, 3.1600 },{ 6007.7998, 41464.8008, 3.1800 },{ 6007.7998, 41465.1016, 3.1700 },{ 6007.7998, 41465.3984, 3.1800 },{ 6007.7998, 41465.6992, 3.2100 },{ 6007.7998, 41466.0000, 3.3000 },{ 6007.7998, 41466.3008, 3.4300 },{ 6007.7998, 41466.6016, 3.5400 },{ 6007.7998, 41466.8984, 3.6300 },{ 6007.7998, 41467.1992, 3.6400 },{ 6007.7998, 41467.5000, 3.6000 },{ 6008.1001, 41456.1016, 1.8200 },{ 6008.1001, 41456.3984, 1.7900 },{ 6008.1001, 41456.6992, 1.8000 },{ 6008.1001, 41457.0000, 1.8000 },{ 6008.1001, 41457.3008, 1.8000 },{ 6008.1001, 41457.6016, 1.8000 },{ 6008.1001, 41457.8984, 1.8000 },{ 6008.1001, 41458.1992, 1.8000 },{ 6008.1001, 41458.5000, 1.8700 },{ 6008.1001, 41458.8008, 1.9000 },{ 6008.1001, 41459.1016, 1.9300 },{ 6008.1001, 41459.3984, 1.9600 },{ 6008.1001, 41459.6992, 2.0000 },{ 6008.1001, 41460.0000, 2.0200 },{ 6008.1001, 41460.3008, 2.0400 },{ 6008.1001, 41460.6016, 2.0700 },{ 6008.1001, 41460.8984, 2.1000 },{ 6008.1001, 41461.1992, 2.1600 },{ 6008.1001, 41461.5000, 2.2300 },{ 6008.1001, 41461.8008, 2.3100 },{ 6008.1001, 41462.1016, 2.3900 },{ 6008.1001, 41462.3984, 2.5000 },{ 6008.1001, 41462.6992, 2.6300 },{ 6008.1001, 41463.0000, 2.7500 },{ 6008.1001, 41463.3008, 2.8700 },{ 6008.1001, 41463.6016, 2.9800 },{ 6008.1001, 41463.8984, 3.0800 },{ 6008.1001, 41464.1992, 3.1600 },{ 6008.1001, 41464.5000, 3.2300 },{ 6008.1001, 41464.8008, 3.2600 },{ 6008.1001, 41465.1016, 3.2500 },{ 6008.1001, 41465.3984, 3.2600 },{ 6008.1001, 41465.6992, 3.2900 },{ 6008.1001, 41466.0000, 3.3800 },{ 6008.1001, 41466.3008, 3.4900 },{ 6008.1001, 41466.6016, 3.5900 },{ 6008.1001, 41466.8984, 3.6700 },{ 6008.1001, 41467.1992, 3.6700 },{ 6008.1001, 41467.5000, 3.6400 },{ 6008.3999, 41456.1016, 1.8100 },{ 6008.3999, 41456.3984, 1.8000 },{ 6008.3999, 41456.6992, 1.8000 },{ 6008.3999, 41457.0000, 1.8000 },{ 6008.3999, 41457.3008, 1.8000 },{ 6008.3999, 41457.6016, 1.8000 },{ 6008.3999, 41457.8984, 1.8000 },{ 6008.3999, 41458.1992, 1.8000 },{ 6008.3999, 41458.5000, 1.9100 },{ 6008.3999, 41458.8008, 1.9400 },{ 6008.3999, 41459.1016, 1.9600 },{ 6008.3999, 41459.3984, 1.9900 },{ 6008.3999, 41459.6992, 2.0200 },{ 6008.3999, 41460.0000, 2.0500 },{ 6008.3999, 41460.3008, 2.0800 },{ 6008.3999, 41460.6016, 2.1200 },{ 6008.3999, 41460.8984, 2.1600 },{ 6008.3999, 41461.1992, 2.2200 },{ 6008.3999, 41461.5000, 2.2900 },{ 6008.3999, 41461.8008, 2.3600 },{ 6008.3999, 41462.1016, 2.4400 },{ 6008.3999, 41462.3984, 2.5600 },{ 6008.3999, 41462.6992, 2.6900 },{ 6008.3999, 41463.0000, 2.8100 },{ 6008.3999, 41463.3008, 2.9400 },{ 6008.3999, 41463.6016, 3.0600 },{ 6008.3999, 41463.8984, 3.1700 },{ 6008.3999, 41464.1992, 3.2700 },{ 6008.3999, 41464.5000, 3.3500 },{ 6008.3999, 41464.8008, 3.3700 },{ 6008.3999, 41465.1016, 3.3600 },{ 6008.3999, 41465.3984, 3.3600 },{ 6008.3999, 41465.6992, 3.3800 },{ 6008.3999, 41466.0000, 3.4500 },{ 6008.3999, 41466.3008, 3.5500 },{ 6008.3999, 41466.6016, 3.6400 },{ 6008.3999, 41466.8984, 3.7100 },{ 6008.3999, 41467.1992, 3.7100 },{ 6008.3999, 41467.5000, 3.6900 },{ 6008.7002, 41456.1016, 1.7800 },{ 6008.7002, 41456.3984, 1.7800 },{ 6008.7002, 41456.6992, 1.8000 },{ 6008.7002, 41457.0000, 1.8000 },{ 6008.7002, 41457.3008, 1.8000 },{ 6008.7002, 41457.6016, 1.8000 },{ 6008.7002, 41457.8984, 1.8000 },{ 6008.7002, 41458.1992, 1.9000 },{ 6008.7002, 41458.5000, 1.9400 },{ 6008.7002, 41458.8008, 1.9800 },{ 6008.7002, 41459.1016, 2.0100 },{ 6008.7002, 41459.3984, 2.0400 },{ 6008.7002, 41459.6992, 2.0800 },{ 6008.7002, 41460.0000, 2.1100 },{ 6008.7002, 41460.3008, 2.1500 },{ 6008.7002, 41460.6016, 2.1800 },{ 6008.7002, 41460.8984, 2.2300 },{ 6008.7002, 41461.1992, 2.2800 },{ 6008.7002, 41461.5000, 2.3300 },{ 6008.7002, 41461.8008, 2.3800 },{ 6008.7002, 41462.1016, 2.4600 },{ 6008.7002, 41462.3984, 2.5700 },{ 6008.7002, 41462.6992, 2.7000 },{ 6008.7002, 41463.0000, 2.8300 },{ 6008.7002, 41463.3008, 2.9700 },{ 6008.7002, 41463.6016, 3.1000 },{ 6008.7002, 41463.8984, 3.2300 },{ 6008.7002, 41464.1992, 3.3600 },{ 6008.7002, 41464.5000, 3.4500 },{ 6008.7002, 41464.8008, 3.4800 },{ 6008.7002, 41465.1016, 3.4600 },{ 6008.7002, 41465.3984, 3.4600 },{ 6008.7002, 41465.6992, 3.4700 },{ 6008.7002, 41466.0000, 3.5300 },{ 6008.7002, 41466.3008, 3.6200 },{ 6008.7002, 41466.6016, 3.7000 },{ 6008.7002, 41466.8984, 3.7600 },{ 6008.7002, 41467.1992, 3.7700 },{ 6008.7002, 41467.5000, 3.7500 },{ 6009.0000, 41456.1016, 1.7300 },{ 6009.0000, 41456.3984, 1.7500 },{ 6009.0000, 41456.6992, 1.7500 },{ 6009.0000, 41457.0000, 1.8000 },{ 6009.0000, 41457.3008, 1.8000 },{ 6009.0000, 41457.6016, 1.8000 },{ 6009.0000, 41457.8984, 1.8600 },{ 6009.0000, 41458.1992, 1.9000 },{ 6009.0000, 41458.5000, 1.9500 },{ 6009.0000, 41458.8008, 2.0000 },{ 6009.0000, 41459.1016, 2.0600 },{ 6009.0000, 41459.3984, 2.1100 },{ 6009.0000, 41459.6992, 2.1700 },{ 6009.0000, 41460.0000, 2.2100 },{ 6009.0000, 41460.3008, 2.2400 },{ 6009.0000, 41460.6016, 2.2800 },{ 6009.0000, 41460.8984, 2.3200 },{ 6009.0000, 41461.1992, 2.3400 },{ 6009.0000, 41461.5000, 2.3700 },{ 6009.0000, 41461.8008, 2.4000 },{ 6009.0000, 41462.1016, 2.4500 },{ 6009.0000, 41462.3984, 2.5500 },{ 6009.0000, 41462.6992, 2.6800 },{ 6009.0000, 41463.0000, 2.8100 },{ 6009.0000, 41463.3008, 2.9400 },{ 6009.0000, 41463.6016, 3.0900 },{ 6009.0000, 41463.8984, 3.2300 },{ 6009.0000, 41464.1992, 3.3700 },{ 6009.0000, 41464.5000, 3.4900 },{ 6009.0000, 41464.8008, 3.5200 },{ 6009.0000, 41465.1016, 3.5200 },{ 6009.0000, 41465.3984, 3.5200 },{ 6009.0000, 41465.6992, 3.5400 },{ 6009.0000, 41466.0000, 3.6000 },{ 6009.0000, 41466.3008, 3.6900 },{ 6009.0000, 41466.6016, 3.7600 },{ 6009.0000, 41466.8984, 3.8300 },{ 6009.0000, 41467.1992, 3.8400 },{ 6009.0000, 41467.5000, 3.8300 },{ 6009.2998, 41456.1016, 1.7000 },{ 6009.2998, 41456.3984, 1.7100 },{ 6009.2998, 41456.6992, 1.7200 },{ 6009.2998, 41457.0000, 1.7400 },{ 6009.2998, 41457.3008, 1.7600 },{ 6009.2998, 41457.6016, 1.7900 },{ 6009.2998, 41457.8984, 1.8400 },{ 6009.2998, 41458.1992, 1.8900 },{ 6009.2998, 41458.5000, 1.9400 },{ 6009.2998, 41458.8008, 2.0000 },{ 6009.2998, 41459.1016, 2.0800 },{ 6009.2998, 41459.3984, 2.1500 },{ 6009.2998, 41459.6992, 2.2300 },{ 6009.2998, 41460.0000, 2.2800 },{ 6009.2998, 41460.3008, 2.3300 },{ 6009.2998, 41460.6016, 2.3800 },{ 6009.2998, 41460.8984, 2.4200 },{ 6009.2998, 41461.1992, 2.4300 },{ 6009.2998, 41461.5000, 2.4300 },{ 6009.2998, 41461.8008, 2.4300 },{ 6009.2998, 41462.1016, 2.4500 },{ 6009.2998, 41462.3984, 2.5400 },{ 6009.2998, 41462.6992, 2.6500 },{ 6009.2998, 41463.0000, 2.7700 },{ 6009.2998, 41463.3008, 2.8900 },{ 6009.2998, 41463.6016, 3.0300 },{ 6009.2998, 41463.8984, 3.1800 },{ 6009.2998, 41464.1992, 3.3200 },{ 6009.2998, 41464.5000, 3.4500 },{ 6009.2998, 41464.8008, 3.5000 },{ 6009.2998, 41465.1016, 3.5200 },{ 6009.2998, 41465.3984, 3.5400 },{ 6009.2998, 41465.6992, 3.5800 },{ 6009.2998, 41466.0000, 3.6500 },{ 6009.2998, 41466.3008, 3.7500 },{ 6009.2998, 41466.6016, 3.8400 },{ 6009.2998, 41466.8984, 3.9100 },{ 6009.2998, 41467.1992, 3.9400 },{ 6009.2998, 41467.5000, 3.9300 },{ 6009.6001, 41456.3984, 1.6900 },{ 6009.6001, 41456.6992, 1.7000 },{ 6009.6001, 41457.0000, 1.7100 },{ 6009.6001, 41457.3008, 1.7300 },{ 6009.6001, 41457.6016, 1.7600 },{ 6009.6001, 41457.8984, 1.8000 },{ 6009.6001, 41458.1992, 1.8500 },{ 6009.6001, 41458.5000, 1.9000 },{ 6009.6001, 41458.8008, 1.9700 },{ 6009.6001, 41459.1016, 2.0500 },{ 6009.6001, 41459.3984, 2.1400 },{ 6009.6001, 41459.6992, 2.2200 },{ 6009.6001, 41460.0000, 2.3100 },{ 6009.6001, 41460.3008, 2.3800 },{ 6009.6001, 41460.6016, 2.4600 },{ 6009.6001, 41460.8984, 2.5200 },{ 6009.6001, 41461.1992, 2.5400 },{ 6009.6001, 41461.5000, 2.5200 },{ 6009.6001, 41461.8008, 2.5200 },{ 6009.6001, 41462.1016, 2.5300 },{ 6009.6001, 41462.3984, 2.5900 },{ 6009.6001, 41462.6992, 2.6900 },{ 6009.6001, 41463.0000, 2.7900 },{ 6009.6001, 41463.3008, 2.8900 },{ 6009.6001, 41463.6016, 3.0100 },{ 6009.6001, 41463.8984, 3.1400 },{ 6009.6001, 41464.1992, 3.2600 },{ 6009.6001, 41464.5000, 3.3700 },{ 6009.6001, 41464.8008, 3.4400 },{ 6009.6001, 41465.1016, 3.4900 },{ 6009.6001, 41465.3984, 3.5500 },{ 6009.6001, 41465.6992, 3.6100 },{ 6009.6001, 41466.0000, 3.7000 },{ 6009.6001, 41466.3008, 3.8100 },{ 6009.6001, 41466.6016, 3.9200 },{ 6009.6001, 41466.8984, 4.0000 },{ 6009.6001, 41467.1992, 4.0400 },{ 6009.6001, 41467.5000, 4.0400 },{ 6009.6001, 41467.8008, 4.0500 },{ 6009.8999, 41456.3984, 1.6900 },{ 6009.8999, 41456.6992, 1.7000 },{ 6009.8999, 41457.0000, 1.7100 },{ 6009.8999, 41457.3008, 1.7200 },{ 6009.8999, 41457.6016, 1.7400 },{ 6009.8999, 41457.8984, 1.7600 },{ 6009.8999, 41458.1992, 1.7900 },{ 6009.8999, 41458.5000, 1.8200 },{ 6009.8999, 41458.8008, 1.9000 },{ 6009.8999, 41459.1016, 2.0000 },{ 6009.8999, 41459.3984, 2.1000 },{ 6009.8999, 41459.6992, 2.2000 },{ 6009.8999, 41460.0000, 2.3100 },{ 6009.8999, 41460.3008, 2.4200 },{ 6009.8999, 41460.6016, 2.5200 },{ 6009.8999, 41460.8984, 2.6200 },{ 6009.8999, 41461.1992, 2.6500 },{ 6009.8999, 41461.5000, 2.6600 },{ 6009.8999, 41461.8008, 2.6700 },{ 6009.8999, 41462.1016, 2.6900 },{ 6009.8999, 41462.3984, 2.7400 },{ 6009.8999, 41462.6992, 2.8200 },{ 6009.8999, 41463.0000, 2.9000 },{ 6009.8999, 41463.3008, 2.9900 },{ 6009.8999, 41463.6016, 3.0700 },{ 6009.8999, 41463.8984, 3.1600 },{ 6009.8999, 41464.1992, 3.2400 },{ 6009.8999, 41464.5000, 3.3100 },{ 6009.8999, 41464.8008, 3.4000 },{ 6009.8999, 41465.1016, 3.4800 },{ 6009.8999, 41465.3984, 3.5700 },{ 6009.8999, 41465.6992, 3.6600 },{ 6009.8999, 41466.0000, 3.7700 },{ 6009.8999, 41466.3008, 3.8800 },{ 6009.8999, 41466.6016, 3.9900 },{ 6009.8999, 41466.8984, 4.0900 },{ 6009.8999, 41467.1992, 4.1300 },{ 6009.8999, 41467.5000, 4.1400 },{ 6009.8999, 41467.8008, 4.1600 },};void shadower_11_8(const string &strDataFolder)
{osg::ref_ptr<osgViewer::Viewer> viewer = new osgViewer::Viewer();osg::ref_ptr<osg::GraphicsContext::Traits> traits = new osg::GraphicsContext::Traits;traits->x = 40;traits->y = 40;traits->width = 600;traits->height = 480;traits->windowDecoration = true;traits->doubleBuffer = true;traits->sharedContext = 0;osg::ref_ptr<osg::GraphicsContext> gc = osg::GraphicsContext::createGraphicsContext(traits.get());osg::ref_ptr<osg::Camera> camera = viewer->getCamera();camera->setGraphicsContext(gc.get());camera->setViewport(new osg::Viewport(0, 0, traits->width, traits->height));GLenum buffer = traits->doubleBuffer ? GL_BACK : GL_FRONT;camera->setDrawBuffer(buffer);camera->setReadBuffer(buffer);osg::ref_ptr<osg::Group> root = new osg::Group();// 创建一个阴影节点,并标识接收对象和投影对象osg::ref_ptr<osgShadow::ShadowedScene> shadowedScene = new osgShadow::ShadowedScene();shadowedScene->setReceivesShadowTraversalMask(ReceivesShadowTraversalMask);shadowedScene->setCastsShadowTraversalMask(CastsShadowTraversalMask);// 创建阴影纹理osg::ref_ptr<osgShadow::ShadowTexture> st = new osgShadow::ShadowTexture();// 关联阴影纹理shadowedScene->setShadowTechnique(st);osg::ref_ptr<osg::Node> node = new osg::Node();node = createModel(strDataFolder);// 添加场景数据并添加光源shadowedScene->addChild(createLight(node.get()));shadowedScene->addChild(node.get());root->addChild(shadowedScene.get());// 优化场景数据osgUtil::Optimizer optimize;optimize.optimize(root.get());viewer->setSceneData(root.get());viewer->realize();viewer->run();
}// 创建动画路径
osg::ref_ptr<osg::AnimationPath> createAnimationPath(osg::Vec3 ¢er,float radius, double looptime)
{osg::ref_ptr<osg::AnimationPath> animationPath = new osg::AnimationPath;animationPath->setLoopMode(osg::AnimationPath::LOOP);int numSamples = 40;float yaw = 0.0;float yaw_delta = 2.0 * osg::PI / (numSamples - 1.0);float roll = osg::inDegrees(30.0);double time = 0.0;double time_delta = looptime / (double)numSamples;for (int i = 0; i < numSamples; ++i){osg::Vec3 position(center + osg::Vec3(sinf(yaw) * radius, cosf(yaw) * radius, 0.0));osg::Quat rotation(osg::Quat(roll, osg::Vec3(0.0, 1.0, 0.0))*osg::Quat(-(yaw + osg::inDegrees(90.0)), osg::Vec3(0.0, 0.0, 1.0)));animationPath->insert(time, osg::AnimationPath::ControlPoint(position, rotation));yaw += yaw_delta;time += time_delta;}return animationPath.get();
}// 创建地形平面
osg::ref_ptr<osg::Node> createBase(const string &strDataFolder, const osg::Vec3 ¢er, float radius)
{osg::ref_ptr<osg::Geode> geode = new osg::Geode;// 设置纹理属性osg::ref_ptr<osg::StateSet> stateset = new osg::StateSet();string strDataPath = strDataFolder + "Images\\lz.rgb";osg::ref_ptr<osg::Image> image = osgDB::readImageFile(strDataPath);if (image.get()){osg::ref_ptr<osg::Texture2D> texture = new osg::Texture2D;texture->setImage(image.get());stateset->setTextureAttributeAndModes(0, texture.get(), osg::StateAttribute::ON);}geode->setStateSet(stateset.get());// 申请一个高程类osg::ref_ptr<osg::HeightField> grid = new osg::HeightField;grid->allocate(38, 39);grid->setOrigin(center + osg::Vec3(-radius, -radius, 0.0));grid->setXInterval(radius * 2.0 / (38 - 1.0));grid->setYInterval(radius * 2.0 / (39 - 1.0));// 得到最高值和最低值,以确定合适的高程素芳和高程偏移float minHeight = FLT_MAX;float maxHeight = -FLT_MAX;for (unsigned int r = 0; r < 39; ++r){for (unsigned int c = 0; c < 38; ++c){float h = vertex[r + c * 39][2];if (h > maxHeight){maxHeight = h;}if (h < minHeight){minHeight = h;}}}float heightScale = radius * 0.5 / (maxHeight - minHeight);float heightOffset = -(minHeight + maxHeight) * 0.5;// 设置行列数据for (unsigned int r = 0; r < 39; ++r){for (unsigned int c = 0; c < 38; ++c){float h = vertex[r + c * 39][2];grid->setHeight(c, r, (h + heightOffset) * heightScale);}}geode->addDrawable(new osg::ShapeDrawable(grid.get()));osg::ref_ptr<osg::Group> group = new osg::Group;group->addChild(geode.get());return group.get();
}// 创建飞机动画模型
osg::ref_ptr<osg::Node> createMovingModel(const string &strDataFolder, osg::Vec3 ¢er, float radius)
{float animationLength = 10.0;osg::ref_ptr<osg::AnimationPath> animationPath = createAnimationPath(center, radius,animationLength);osg::ref_ptr<osg::Group> model = new osg::Group;string strDataPath = strDataFolder + "cessna.osg";osg::ref_ptr<osg::Node> cessna = osgDB::readNodeFile(strDataPath);if (cessna.get()){const osg::BoundingSphere &bs = cessna->getBound();float size = radius / bs.radius() * 0.3;osg::ref_ptr< osg::MatrixTransform> positioned = new osg::MatrixTransform;positioned->setDataVariance(osg::Object::STATIC);positioned->setMatrix(osg::Matrix::translate(-bs.center())*osg::Matrix::scale(size, size, size)*osg::Matrix::rotate(osg::inDegrees(180.0f), 0.0f, 0.0f, 2.0f));positioned->addChild(cessna.get());osg::ref_ptr<osg::MatrixTransform> xform = new osg::MatrixTransform;xform->setUpdateCallback(new osg::AnimationPathCallback(animationPath, 0.0, 2.0));xform->addChild(positioned);model->addChild(xform.get());}return model.get();
}// 创建场景数据
osg::ref_ptr<osg::Node> createModel(const string &strDataFolder)
{osg::Vec3 center(0, 0, 0);float radius = 100.0;osg::Vec3 lightPosition(center + osg::Vec3(0, 0, radius));osg::ref_ptr<osg::Node> shadower = createMovingModel(strDataFolder, center, radius * 0.5);shadower->setNodeMask(CastsShadowTraversalMask);osg::ref_ptr<osg::Node> shadowed = createBase(strDataFolder, center - osg::Vec3(0, 0, radius*0.25), radius);shadowed->setNodeMask(CastsShadowTraversalMask);osg::ref_ptr<osg::Group> group = new osg::Group;group->addChild(shadowed.get());group->addChild(shadower.get());return group.get();
}// 创建一个光照
osg::ref_ptr<osg::Node> createLight(osg::ref_ptr<osg::Node> model)
{osg::ComputeBoundsVisitor cbbv;model->accept(cbbv);osg::BoundingBox bb = cbbv.getBoundingBox();osg::Vec4 lightpos;lightpos.set(bb.center().x(), bb.center().y(), bb.zMax() + bb.radius() * 2.0, 1.0);osg::ref_ptr<osg::LightSource> ls = new osg::LightSource();ls->getLight()->setPosition(lightpos);ls->getLight()->setAmbient(osg::Vec4(0.2, 0.2, 0.2, 1.0));ls->getLight()->setDiffuse(osg::Vec4(0.8, 0.8, 0.8, 1.0));return ls.get();
}
运行程序,截图如图 11-11 所示
图11-11阴影示例裁图
相关文章:

OSG粒子系统与阴影 - 阴影shadow(7)
OSG阴影 在虚拟现实仿真中,为了真实地模拟自然效果,阴影效果是不可缺少的,它对一个场景的真实性是非常重要的。在游戏或仿真中,一个高效的阴影往往能够提供非常强悍的视觉真实感。 osgShadow库 在OSG中专门定义了一个名字空间osg…...

vue3项目中使用富文本编辑器
前言 适配 Vue3 的富文本插件不多,我看了很多插件官网,也有很多写的非常棒的,有UI非常优雅让人耳目一新的,也有功能非常全面的。 如: Quill,简单易用,功能全面。editorjs,UI极其优…...

Java EE 进程线程
JavaEE 进程&线程 文章目录 JavaEE 进程&线程1. 进程1.1 概念1.2 进程管理1.3 PCB (Process Control Block) 2. 线程2.1 概念2.1 线程与进程的区别2.3 创建线程 1. 进程 1.1 概念 什么是进程? 进程是操作系统对一个正在执行的程序的一种抽象 我们可以打开…...
GPT写SQL的模版
表:profit_loss_sum_m_snapshot 计算字段:成本cost_whole求和,收入income_whole求和,收入求和-成本求和,成本目标cost_target求和,收入求和-成本目标求和 条件:日期statis_date在2023-11-01&…...
蓝桥杯官网练习题(平均)
问题描述 有一个长度为 n 的数组( n 是 10 的倍数),每个数 ai 都是区间 [0,9] 中的整数。小明发现数组里每种数出现的次数不太平均,而更改第 i 个数的代价为 bi,他想更改若干个数的值使得这 10 种数出现的次数相等…...

【无标题】动手学深度学习_现代神经网络_未完
这里写目录标题 深度学习之前的网络 AlexNetAlexNet得到了竞赛冠军AlexNet架构Alex net更多细节数据增强 VGGNiN知识补充flop暂退法 drop_out 深度学习之前的网络 1、核方法 机器学习 SVM现在还是很广泛的使用,因为对调参的需求不那么大,对调参不太敏感…...

Java王者荣耀
GameFrame 图片 package 王者荣耀;import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import java.io.File; import java.util.ArrayList;import javax.soun…...

【理解ARM架构】操作寄存器实现UART | 段的概念 | IDE背后的命令
🐱作者:一只大喵咪1201 🐱专栏:《理解ARM架构》 🔥格言:你只管努力,剩下的交给时间! 目录 🍠操作寄存器实现UART🍟UART原理🍟编程 🍠…...
python 左值查找 右值查找
左值查找 在一组数据中查找出 数字x 在这组数据中第一次出现的索引并输出,没有找到则输出-1查找方式:二分查找 数据前提:一组数据要有序一组数据: arr [2, 3, 3, 3, 5, 7, 9, 11, 13, 15, 17]测试: 示例1ÿ…...
机器学习之自监督学习(四)MoCo系列翻译与总结(二)
MoCo中相关工作的对比分析 去噪自动编码器(Denoising Autoencoder)是一种用于学习数据表示的神经网络模型。它的主要目标是通过去除输入数据中的噪声,学习到输入数据的有用表示,从而提高模型对干净数据的鲁棒性。下面是对去噪自动…...
元宇宙企业3d数字展厅轻松低本搭建更全面、多元、趣味化的展览
对所有企业来说,拥有一个3D线上展厅是互联网营销必不可少的部分,但是3D线上展厅定制周期长费用高,让很多企业公司望而却步,web3d开发公司制作的3D线上企业展厅制作平台备导览地图、语音解说、交互热点、全景漫游、自主行走、链接跳…...
华为OD机试真题-开源项目热榜-2023年OD统一考试(C卷)
题目描述: 某个开源社区希望将最近热度比较高的开源项目出一个榜单,推荐给社区里面的开发者。对于每个开源项目,开发者可以进行关注(watch)、收藏(star)、fork、提issue、提交合并请求(MR)等。 数据库里面统计了每个开源项目关注、收藏、fork、issue、MR的数量,开源项目的热…...

深入探索Maven:优雅构建Java项目的新方式(一)
Maven高级 1,分模块开发1.1 分模块开发设计1.2 分模块开发实现 2,依赖管理2.1 依赖传递与冲突问题2.2 可选依赖和排除依赖方案一:可选依赖方案二:排除依赖 3,聚合和继承3.1 聚合步骤1:创建一个空的maven项目步骤2:将项目的打包方式改为pom步骤…...

Shopee如何入驻?如何防封?
Shopee作为东南亚领航电商平台,面向东南亚蓝海市场,近年来随着东南亚市场蒸蒸日上,虾皮也吸引了大批量的跨境商家入驻。那么接下来就给想要入驻的虾皮小白一个详细的安全入驻教程。 一、商家如何入驻 虾皮与LAZADA最大的区别就是商家即卖家&…...

2024年第十六届山东省职业院校技能大赛中职组 “网络安全”赛项竞赛正式卷任务书
2024年第十六届山东省职业院校技能大赛中职组 “网络安全”赛项竞赛正式卷任务书 2024年第十六届山东省职业院校技能大赛中职组 “网络安全”赛项竞赛正式卷A模块基础设施设置/安全加固(200分)A-1:登录安全加固(Windows, Linux&am…...

Python编程基础
Python是一种简单易学的编程语言,广泛应用于Web开发、数据分析、人工智能等领域。无论您是初学者还是有一定编程经验的人士,都可以从Python的基础知识开始建立自己的编程技能。 目录 理论Python语言的发展程序设计语言的分类静态语言与脚本语言的区别 代…...

python类和对象
1.使用对象组织数据 class Student:nameNone #记录名字 stu1Student() #创建对象 stu1.name"abc" #为对象属性赋值2.类的定义和使用 2.1成员方法的定义语法 传参的时候self是透明的,不用管 class Stu:nameNonedef sayHi(self):print(f"你好&#x…...

ubuntu操作系统中docker下Hadoop分布式前置环境配置实验
版本: centos7 hadoop 3.1.3 java JDK:1.8 集群规划: masterslave1slave2HDFS NameNode DataNode DataNode SecondryNameNode DataNode YARNNodeManager ResourceManage NodeManager NodeManager 1.docker容器: 把普通用户加入到docker组&am…...

【Linux学习笔记】protobuf 基本数据编码
https://zhuanlan.zhihu.com/p/557457644https://zhuanlan.zhihu.com/p/557457644 [新文导读] 从Base64到Protobuf,详解Protobuf的数据编码原理本篇将从Base64再到Base128编码,带你一起从底层来理解Protobuf的数据编码原理。本文结构总体与 Protobuf 官…...

OpenCV快速入门:图像分析——图像分割和图像修复
文章目录 前言一、图像分割1.1 漫水填充法1.1.1 漫水填充法原理1.1.2 漫水填充法实现步骤1.1.3 代码实现 1.2 分水岭法1.2.1 分水岭法原理1.2.2 分水岭法实现步骤1.2.3 代码实现 1.3 GrabCut法1.3.1 GrabCut法原理1.3.2 GrabCut法实现步骤1.3.3 代码实现 1.4 Mean-Shift法1.4.1…...
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする 1、前言(1)情况说明(2)工程师的信仰2、知识点(1) にする1,接续:名词+にする2,接续:疑问词+にする3,(A)は(B)にする。(2)復習:(1)复习句子(2)ために & ように(3)そう(4)にする3、…...
Python爬虫(二):爬虫完整流程
爬虫完整流程详解(7大核心步骤实战技巧) 一、爬虫完整工作流程 以下是爬虫开发的完整流程,我将结合具体技术点和实战经验展开说明: 1. 目标分析与前期准备 网站技术分析: 使用浏览器开发者工具(F12&…...

企业如何增强终端安全?
在数字化转型加速的今天,企业的业务运行越来越依赖于终端设备。从员工的笔记本电脑、智能手机,到工厂里的物联网设备、智能传感器,这些终端构成了企业与外部世界连接的 “神经末梢”。然而,随着远程办公的常态化和设备接入的爆炸式…...

安全突围:重塑内生安全体系:齐向东在2025年BCS大会的演讲
文章目录 前言第一部分:体系力量是突围之钥第一重困境是体系思想落地不畅。第二重困境是大小体系融合瓶颈。第三重困境是“小体系”运营梗阻。 第二部分:体系矛盾是突围之障一是数据孤岛的障碍。二是投入不足的障碍。三是新旧兼容难的障碍。 第三部分&am…...

Python Ovito统计金刚石结构数量
大家好,我是小马老师。 本文介绍python ovito方法统计金刚石结构的方法。 Ovito Identify diamond structure命令可以识别和统计金刚石结构,但是无法直接输出结构的变化情况。 本文使用python调用ovito包的方法,可以持续统计各步的金刚石结构,具体代码如下: from ovito…...
Java数值运算常见陷阱与规避方法
整数除法中的舍入问题 问题现象 当开发者预期进行浮点除法却误用整数除法时,会出现小数部分被截断的情况。典型错误模式如下: void process(int value) {double half = value / 2; // 整数除法导致截断// 使用half变量 }此时...

打手机检测算法AI智能分析网关V4守护公共/工业/医疗等多场景安全应用
一、方案背景 在现代生产与生活场景中,如工厂高危作业区、医院手术室、公共场景等,人员违规打手机的行为潜藏着巨大风险。传统依靠人工巡查的监管方式,存在效率低、覆盖面不足、判断主观性强等问题,难以满足对人员打手机行为精…...

【Veristand】Veristand环境安装教程-Linux RT / Windows
首先声明,此教程是针对Simulink编译模型并导入Veristand中编写的,同时需要注意的是老用户编译可能用的是Veristand Model Framework,那个是历史版本,且NI不会再维护,新版本编译支持为VeriStand Model Generation Suppo…...

ZYNQ学习记录FPGA(一)ZYNQ简介
一、知识准备 1.一些术语,缩写和概念: 1)ZYNQ全称:ZYNQ7000 All Pgrammable SoC 2)SoC:system on chips(片上系统),对比集成电路的SoB(system on board) 3)ARM:处理器…...

自然语言处理——文本分类
文本分类 传统机器学习方法文本表示向量空间模型 特征选择文档频率互信息信息增益(IG) 分类器设计贝叶斯理论:线性判别函数 文本分类性能评估P-R曲线ROC曲线 将文本文档或句子分类为预定义的类或类别, 有单标签多类别文本分类和多…...