在虚拟现实仿真中,为了真实地模拟自然效果,阴影效果是不可缺少的,它对一个场景的真实性是非常重要的。在游戏或仿真中,一个高效的阴影往往能够提供非常强悍的视觉真实感。
在OSG中专门定义了一个名字空间osgShadow来控制渲染实时阴影。实时阴影是一种相对高级的技术,在每一顿,场景中的几何体或灯光位置变动时要计算一个叫做shadow volume的物体shadow volume实际上是一个三维物体,是投影物体的轮廓,总是从光源方向投出。osgShadow库的主要组成模块可以用图11-10来表示,下面分别介绍这些模块。
图11-10 osgShadow库的主要组成模块
指定阴影实现的方法如下:
阴影的实现方法有很多种,现在比较流行的主要是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 viewer = new osgViewer::Viewer();
osg::ref_ptr 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 gc = osg::GraphicsContext::createGraphicsContext(traits.get());
osg::ref_ptr 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 root = new osg::Group();
// 创建一个阴影节点,并标识接收对象和投影对象
osg::ref_ptr shadowedScene = new osgShadow::ShadowedScene();
shadowedScene->setReceivesShadowTraversalMask(ReceivesShadowTraversalMask);
shadowedScene->setCastsShadowTraversalMask(CastsShadowTraversalMask);
// 创建阴影纹理
osg::ref_ptr st = new osgShadow::ShadowTexture();
// 关联阴影纹理
shadowedScene->setShadowTechnique(st);
osg::ref_ptr 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 createAnimationPath(osg::Vec3 ¢er,
float radius, double looptime)
{
osg::ref_ptr 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 createBase(const string &strDataFolder, const osg::Vec3 ¢er,
float radius)
{
osg::ref_ptr geode = new osg::Geode;
// 设置纹理属性
osg::ref_ptr stateset = new osg::StateSet();
string strDataPath = strDataFolder + "Images\\lz.rgb";
osg::ref_ptr image = osgDB::readImageFile(strDataPath);
if (image.get())
{
osg::ref_ptr texture = new osg::Texture2D;
texture->setImage(image.get());
stateset->setTextureAttributeAndModes(0, texture.get(), osg::StateAttribute::ON);
}
geode->setStateSet(stateset.get());
// 申请一个高程类
osg::ref_ptr 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 group = new osg::Group;
group->addChild(geode.get());
return group.get();
}
// 创建飞机动画模型
osg::ref_ptr createMovingModel(const string &strDataFolder, osg::Vec3 ¢er,
float radius)
{
float animationLength = 10.0;
osg::ref_ptr animationPath = createAnimationPath(center, radius,animationLength);
osg::ref_ptr model = new osg::Group;
string strDataPath = strDataFolder + "cessna.osg";
osg::ref_ptr 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 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 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 shadower = createMovingModel(strDataFolder, center, radius * 0.5);
shadower->setNodeMask(CastsShadowTraversalMask);
osg::ref_ptr shadowed = createBase(strDataFolder, center - osg::Vec3(0, 0, radius*0.25), radius);
shadowed->setNodeMask(CastsShadowTraversalMask);
osg::ref_ptr group = new osg::Group;
group->addChild(shadowed.get());
group->addChild(shadower.get());
return group.get();
}
// 创建一个光照
osg::ref_ptr createLight(osg::ref_ptr 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 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阴影示例裁图