OSG粒子系统与阴影 - ​​​​​​​阴影shadow(7)

OSG阴影

        在虚拟现实仿真中,为了真实地模拟自然效果,阴影效果是不可缺少的,它对一个场景的真实性是非常重要的。在游戏或仿真中,一个高效的阴影往往能够提供非常强悍的视觉真实感。

osgShadow

        在OSG中专门定义了一个名字空间osgShadow来控制渲染实时阴影。实时阴影是一种相对高级的技术,在每一顿,场景中的几何体或灯光位置变动时要计算一个叫做shadow volume的物体shadow volume实际上是一个三维物体,是投影物体的轮廓,总是从光源方向投出。osgShadow库的主要组成模块可以用图11-10来表示,下面分别介绍这些模块。

图11-10 osgShadow库的主要组成模块

  • osgShadow::ShadowedScene类: 阴影组节点,它继承自osg::Group,因此可以添加子节点。同时,它可以指定投影对象和接受投影的对象
  1. void setReceivesShadowTraversalMask(unsigned int mask);  
  2. unsigned int getReceivesShadowTraversalMask() const;  
  3. void setCastsShadowTraversalMask(unsigned int mask);  
  4. unsigned int getCastsShadowTraversalMask() const;  

        指定阴影实现的方法如下:

  1. void setShadowTechnique(ShadowTechnique *technique)  
  2. ShadowTechnique* getShadowTechnique()   
  3. 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 &center,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 &center, 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 &center, 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阴影示例裁图

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/224960.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

lua的gc原理

lua垃圾回收(Garbage Collect)是lua中一个比较重要的部分。由于lua源码版本变迁&#xff0c;目前大多数有关这个方面的文章都还是基于lua5.1版本&#xff0c;有一定的滞后性。因此本文通过参考当前的5.3.4版本的Lua源码&#xff0c;希望对Lua的GC算法有一个较为详尽的探讨。 L…

【LeetCode】每日一题 2023_11_28 设计前中后队列(数组/链表/双端队列)

文章目录 刷题前唠嗑题目&#xff1a;设计前中后队列题目描述代码与解题思路偷看大佬题解 结语 刷题前唠嗑 LeetCode&#xff1f;启动&#xff01;&#xff01;&#xff01; 这道题的难度&#xff0c;才是我想象中的中等题的难度好吧&#xff0c;昨天那玩意对我来说还是太难了…

9个AI视频后期处理神器——Runway 全功能超详细使用教程(3)

前面2期内容&#xff0c;主要给大家重点介绍了Runway视频生成技术的核心产品功能板块Gen1、Gen2、FI使用教程&#xff0c;还没有看过的小伙伴可以回看往期文章。除了视频生成AI技术外&#xff0c;Runway还具有图片、视频后期处理30多项单个功能&#xff0c;例如视频修复、视频主…

封装可多选的组件(Autocomplete)

一。组件库Material UI 1.1 地址 https://v4.mui.com/zh/getting-started/installation/ 1.2 简介 自称世界上最受欢迎的React UI组件库(能看到这里的基本用法应该都清楚了&#xff0c;我就不重复了) 二。效果展示 三。代码展示 import React from reactimport { useField, us…

阿里云ACE认证之国际版与国内版对比!

大厂疯狂裁员&#xff0c;互联网行业迎来寒冬&#xff0c;技术人员被动陷入疯狂内卷。在愈加内卷的IT领域&#xff0c;“云计算”作为少有的蓝海&#xff0c;无疑是打工人未来实现职场提升、摆脱内卷的绝佳选择&#xff01; 对于云计算行业的人来说&#xff0c;最值得考的肯定是…

rust-flexi_logger

flexi_logger 是字节开源的rust日志库。目前有log4rs、env_log 等库&#xff0c;综合比较下来&#xff0c;还是flexi_logger简单容易上手&#xff0c;而且自定义很方便&#xff0c;以及在效率方面感觉也会高&#xff0c;下篇文章我们来测试下。 下面来看下怎么使用 关注 vx gol…

jq+canvas:实现图片上传+裁剪+保存等功能

效果图 上传图片之前&#xff1a; 上传图片之后&#xff0c;点击放大/缩小后的效果&#xff1a; 裁剪之后的效果&#xff1a; 代码实现如下&#xff1a; 1.html部分 <input type"file" id"fileInput" accept"image/png, image/gif, image/j…

Python提取PDF表格(基于AUTOSAR_SWS_CANDriver.pdf)

个人学习笔记&#xff0c;仅供参考。 需求&#xff1a;提取AUTOSAR SWS中所有的API接口信息&#xff0c;用于生成C代码。 此处以AUTOSAR_SWS_CANDriver.pdf为例&#xff0c;若需要提取多个SWS文件&#xff0c;遍历各个文件即可。 1.Python包 pdfplumber是一款完全用python开…

【FMC139】青翼科技基于VITA57.1标准的4路500MSPS/1GSPS/1.25GSPS采样率14位AD采集FMC子卡模块

板卡概述 FMC139是一款基于VITA57.1标准规范的JESD204B接口FMC子卡模块&#xff0c;该模块可以实现4路14-bit、500MSPS/1GSPS ADC采集功能。该板卡ADC器件采用ADI公司的AD9680芯片,全功率-3dB模拟输入带宽可达2GHz。该ADC与FPGA的主机接口通过8通道的高速串行GTX收发器进行互联…

SpringCloud-高级篇(五)

一&#xff1a;分布式事务理论基础 原子性&#xff08;Atomicity&#xff09; 原子性是指事务是一个不可分割的工作单位&#xff0c;事务中的操作要么都发生&#xff0c;要么都不发生。 一致性&#xff08;Consistency&#xff09; 事务前后数据的完整性必须保持一致。 隔离性&…

计算机服务器中了mallox勒索病毒如何处理,mallox勒索病毒解密文件恢复

科技技术的发展推动了企业的生产运营&#xff0c;网络技术的不断应用&#xff0c;极大地方便了企业日常生产生活&#xff0c;但网络毕竟是一把双刃剑&#xff0c;网络安全威胁一直存在&#xff0c;近期&#xff0c;云天数据恢复中心接到很多企业的求助&#xff0c;企业的计算机…

【离散数学】——期末刷题题库(命题逻辑)

&#x1f383;个人专栏&#xff1a; &#x1f42c; 算法设计与分析&#xff1a;算法设计与分析_IT闫的博客-CSDN博客 &#x1f433;Java基础&#xff1a;Java基础_IT闫的博客-CSDN博客 &#x1f40b;c语言&#xff1a;c语言_IT闫的博客-CSDN博客 &#x1f41f;MySQL&#xff1a…