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

news2025/1/13 3:31:00

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.coloradmin.cn/o/1259684.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ShowWeb-浏览器插件:可视化元素路径查看器

ShowWeb&#x1f47b;&#xff1a;可视化元素路径查看器适配【谷歌】【Edge】 每次写前端最烦的就是一层一层找元素&#xff0c;又臭又长。所以我开发了一个小插件来缓解这个问题&#xff0c;这个插件可以输出整个路径&#xff0c;并把最后元素的内容输出方便查看&#xff0c;…

docker基础快速入门:基础命令、网络、docker compose工具

docker基础命令快速入门 目录 docker基本命令docker 网络docker compose Docker介绍 Docker是一个虚拟环境容器&#xff0c;可以将你的开发环境、代码、配置文件等一并打包到这个容器中&#xff0c;并发布和应用到任意平台中。 Docker的三个概念 镜像 Docker镜像是一个特…

Java飞翔的小鸟

一、项目分析 创建一个窗口和画板&#xff0c;把画板放到窗口上&#xff0c;在画板上绘画图片 &#xff08;2&#xff09;让小鸟在画面中动起来&#xff0c;可以上下飞 &#xff08;3&#xff09;让地面和管道动起来 &#xff08;4&#xff09;碰撞检测 &#xff08;5&#xf…

2023信息技术应用创新论坛|云轴科技ZStack分享云原生超融合在智慧交通的应用

11月25日&#xff0c;2023信息技术应用创新论坛在常州开幕。江苏省工业和信息化厅副厅长池宇、中国电子工业标准化技术协会理事长胡燕、常州市常务副市长李林等领导出席论坛并致辞。中国工程院院士郑纬民出席并作主题报告。来自产学研用金等各界的千余名代表参加本次论坛。 在“…

UE5 - 虚幻引擎各模块流程图

来自虚幻官方的一些资料&#xff0c;分享一下&#xff1b; 一些模块的流程图&#xff0c;比如动画模块&#xff1a; 或角色相关流程&#xff1a; 由于图片比较大&#xff0c;上传到了网络&#xff0c;可自取&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1BQ2KiuP08c…

MATLAB的rvctools工具箱熟悉运动学【机械臂机器人示例】

1、rvctools下载安装 rvctools下载地址&#xff1a;rvctools下载 截图如下&#xff0c;点击红色箭头指示的“Download Shared Folder” 即可下载 下载之后进行解压&#xff0c;解压到D:\MATLAB\toolbox这个工具箱目录&#xff0c;这个安装路径根据自己的情况来选择&#xff0c…

【华为OD】统一考试C卷真题 100%通过: 传递悄悄话 二叉树遍历 C/C++实现

目录 题目描述&#xff1a; 示例1 解题思路&#xff1a; 代码实现&#xff1a; 题目描述&#xff1a; 给定一个二叉树&#xff0c;每个节点上站着一个人&#xff0c;节点数字表示父节点到该节点传递悄悄话需要花费的时间。 初始时&#xff0c;根节点所在位置的人有一个悄悄…

中通快递查询入口,根据物流更新量筛选出需要的单号记录

批量中通快递单号的物流信息&#xff0c;根据物流更新量将需要的单号记录筛选出来。 所需工具&#xff1a; 一个【快递批量查询高手】软件 中通快递单号若干 操作步骤&#xff1a; 步骤1&#xff1a;运行【快递批量查询高手】软件&#xff0c;并登录 步骤2&#xff1a;点击主…

代码随想录算法训练营第六十天|84. 柱状图中最大的矩形

84. 柱状图中最大的矩形 给定 n 个非负整数&#xff0c;用来表示柱状图中各个柱子的高度。每个柱子彼此相邻&#xff0c;且宽度为 1 。 求在该柱状图中&#xff0c;能够勾勒出来的矩形的最大面积。 示例 1: 输入&#xff1a;heights [2,1,5,6,2,3] 输出&#xff1a;10 解释…

PT里如何针对某个模块设置false path

我正在「拾陆楼」和朋友们讨论有趣的话题&#xff0c;你⼀起来吧&#xff1f; 拾陆楼知识星球入口 如题&#xff0c;这个问题实际上讲的是get_cells的用法&#xff0c;我们要抓取某个模块内的全部cell&#xff0c;在ICC2里可以get_flat_cells xx/xx/module_name*&#xff0c;但…

Linux 基本语句_12_信号

用途&#xff1a; 信号可以直接进行用户进程与内核进程之间的交互 特性&#xff1a; 对于一个进程&#xff0c;其可以注册或者不注册信号&#xff0c;不注册的信号&#xff0c;进程接受后会按默认功能处理&#xff0c;对于注册后的信号&#xff0c;进程会按自定义处理 自定义…

Mysql之局域网内不同ip互登陆mysql

1 navicat修改mysql表中user> host改为% 2 重新加载mysql服务 3登陆mysql -h 192.168.x.xxx&#xff08;计算机ip&#xff09; -P 3306 -uroot -p123456&#xff08;密码&#xff09;

AI大模型相关产品的数据飞轮如何建设?

1、背景 数据飞轮&#xff0c;是今年大模型带火的一个典型词汇&#xff0c;通过客户在应用程序中输入的提示词这样的数据反馈&#xff0c;使大模型快速迭代。简单说&#xff1a;好的产品 -> 更多的用户数据 -> 更好的模型质量 -> 更好的产品就进入了一个正向循环。一…

单片机学习10——独立按键

独立按键输入检测&#xff1a; #include<reg52.h>sbit LED1P1^0; sbit KEY1P3^4;void main() {KEY11;while(1){if(KEY10) //KEY1按下{LED10; //LED1被点亮}else{LED11;}} } 按键 #include<reg52.h>#define uchar unsigned char #define uint unsigned intsbit …

linux下的工具---vim

一、了解vim 1、vim是linux的开发工具 2、vi/vim的区别简单点来说&#xff0c;它们都是多模式编辑器&#xff0c;不同的是vim是vi的升级版本&#xff0c;它不仅兼容vi的所有指令&#xff0c;而且还有一些新的特性在里面。例如语法加亮&#xff0c;可视化操作不仅可以在终端运行…

苍穹外卖项目笔记(5)——Redis

1 入门 1.1 Redis 简介 Redis 是一个基于内存的 key-value 结构数据库&#xff0c;官网链接&#xff08;中文&#xff09;&#xff1a;https://www.redis.net.cn 特点&#xff1a; 基于内存存储&#xff0c;读写性能高适合存储热点数据&#xff08;热点商品、资讯、新闻&am…

数据结构与算法编程题31

判断给定二叉树是否是完全二叉树 #define _CRT_SECURE_NO_WARNINGS#include <iostream> using namespace std;typedef char ElemType; #define ERROR 0 #define OK 1 #define Maxsize 100 #define STR_SIZE 1024typedef struct BiTNode {ElemType data;BiTNode* lchild, …

160 相交链表

解题思路&#xff1a; \qquad 若两个链表a, b相交&#xff0c;则它们之间的区别就仅在于相交节点之前的部分&#xff08;其实任意两个链表最终都会相交&#xff0c;最坏相交于NULL节点&#xff09;。一开始的思路&#xff1a; \qquad\qquad\qquad 1、找到两个链表较长的那个&…

Linux基础项目开发1:量产工具——程序框架(一)

前言&#xff1a; 前面已经将Linux应用开发基础知识学习完了&#xff0c;现在让我们来做个小项目练练手&#xff0c;对之前的一些知识点进行一个更加具体详细的认识与了解&#xff0c;我们要进行的项目名称为&#xff1a;电子产品量产测试与烧写工具&#xff0c;这是一套软件&a…

车内总线通信技术简述

1. 前言 本文主要分享一些汽车总线通信技术&#xff08;CAN、CANFD、LIN、Flex Ray、MOST、LVDS、TTP/C、Ethernet&#xff09;&#xff0c;希望对大家能有所帮助。 2. 多种汽车总线通信技术 2.1 CAN CAN&#xff08;Controller Area Network&#xff09;全称为“控制器局域…