Saxum/extern/bullet/Demos/DX11ClothDemo/DXUT/Optional/DXUTShapes.cpp
Fabian Klemp aeb6218d2d Renaming.
2014-10-24 11:49:46 +02:00

5664 lines
164 KiB
C++

//--------------------------------------------------------------------------------------
// File: DXUTShapes.cpp
//
// Shape creation functions for DXUT
//
// Copyright (c) Microsoft Corporation. All rights reserved
//--------------------------------------------------------------------------------------
#include "DXUT.h"
#include "DXUTShapes.h"
//--------------------------------------------------------------------------------------
// VERTEX is the vertex layout for all DXUT created shapes
//--------------------------------------------------------------------------------------
struct VERTEX
{
D3DXVECTOR3 pos;
D3DXVECTOR3 norm;
};
static const D3D10_INPUT_ELEMENT_DESC s_ShapeLayout[] =
{
{ "POSITION", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, 0, D3D10_INPUT_PER_VERTEX_DATA, 0 },
{ "NORMAL", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, 12, D3D10_INPUT_PER_VERTEX_DATA, 0 },
};
//--------------------------------------------------------------------------------------
static inline void sincosf( float angle, float* psin, float* pcos )
{
*psin = sinf( angle );
*pcos = cosf( angle );
}
//--------------------------------------------------------------------------------------
// Create D3DX10Mesh from the input vertex and index data
//--------------------------------------------------------------------------------------
HRESULT CreateShapeMesh( ID3D10Device* pDev10, ID3DX10Mesh** ppMesh, VERTEX* pVertices, UINT NumVertices,
WORD* pIndices, UINT NumIndices )
{
HRESULT hr = S_OK;
// Create the mesh
hr = D3DX10CreateMesh( pDev10,
s_ShapeLayout,
sizeof( s_ShapeLayout ) / sizeof( s_ShapeLayout[0] ),
s_ShapeLayout[0].SemanticName,
NumVertices,
NumIndices / 3,
0,
ppMesh );
if( FAILED( hr ) )
return hr;
// Set the Vertex Data
( *ppMesh )->SetVertexData( 0, pVertices );
// Set the Index Data
( *ppMesh )->SetIndexData( pIndices, NumIndices );
// Set attributes
DWORD dwNumAttr = 1;
D3DX10_ATTRIBUTE_RANGE* pAttr = new D3DX10_ATTRIBUTE_RANGE[dwNumAttr];
if( !pAttr )
return E_OUTOFMEMORY;
pAttr[0].AttribId = 0;
pAttr[0].FaceStart = 0;
pAttr[0].FaceCount = NumIndices / 3;
pAttr[0].VertexStart = 0;
pAttr[0].VertexCount = NumVertices;
( *ppMesh )->SetAttributeTable( pAttr, dwNumAttr );
SAFE_DELETE_ARRAY( pAttr );
// Create the internal mesh VBs and IBs
( *ppMesh )->CommitToDevice();
return hr;
}
//----------------------------------------------------------------------------
// Box
//----------------------------------------------------------------------------
static float cubeN[6][3] =
{
{-1.0f, 0.0f, 0.0f}, {0.0f, 1.0f, 0.0f}, {1.0f, 0.0f, 0.0f},
{0.0f, -1.0f, 0.0f}, {0.0f, 0.0f, 1.0f}, {0.0f, 0.0f, -1.0f}
};
static WORD cubeF[6][4] =
{
{ 0, 1, 5, 4 }, { 4, 5, 6, 7 }, { 7, 6, 2, 3 },
{ 1, 0, 3, 2 }, { 1, 2, 6, 5 }, { 0, 4, 7, 3 }
};
static float cubeV[8][3] =
{
// Lower tier (lower in y)
{-.5f, -.5f, -.5f},
{-.5f, -.5f, .5f},
{ .5f, -.5f, .5f},
{ .5f, -.5f, -.5f},
// Upper tier
{-.5f, .5f, -.5f},
{-.5f, .5f, .5f},
{ .5f, .5f, .5f},
{ .5f, .5f, -.5f},
};
static float cubeT[4][2] =
{
// Lower tier (lower in y)
{0.0f, 0.0f},
{0.0f, 1.0f},
{1.0f, 1.0f},
{1.0f, 0.0f}
};
static WORD cubeFT[6][4] =
{
{ 3, 0, 1, 2 }, { 0, 1, 2, 3 }, { 1, 2, 3, 0 },
{ 0, 1, 2, 3 }, { 3, 0, 1, 2 }, { 0, 1, 2, 3 }
};
//--------------------------------------------------------------------------------------
// MakeBox helper
//--------------------------------------------------------------------------------------
static void MakeBox(
VERTEX* pVertices,
DWORD* pPointRep,
WORD* pwIndices,
float fWidth,
float fHeight,
float fDepth )
{
// Fill in the data
VERTEX* pVertex = pVertices;
WORD* pwFace = pwIndices;
UINT iVertex = 0;
// i iterates over the faces, 2 triangles per face
for( int i = 0; i < 6; i++ )
{
for( int j = 0; j < 4; j++ )
{
pVertex->pos.x = cubeV[cubeF[i][j]][0] * fWidth;
pVertex->pos.y = cubeV[cubeF[i][j]][1] * fHeight;
pVertex->pos.z = cubeV[cubeF[i][j]][2] * fDepth;
pVertex->norm.x = cubeN[i][0];
pVertex->norm.y = cubeN[i][1];
pVertex->norm.z = cubeN[i][2];
if( pPointRep != NULL )
{
*pPointRep = cubeF[i][j];
pPointRep++;
}
pVertex++;
}
pwFace[0] = ( WORD )( iVertex );
pwFace[1] = ( WORD )( iVertex + 1 );
pwFace[2] = ( WORD )( iVertex + 2 );
pwFace += 3;
pwFace[0] = ( WORD )( iVertex + 2 );
pwFace[1] = ( WORD )( iVertex + 3 );
pwFace[2] = ( WORD )( iVertex );
pwFace += 3;
iVertex += 4;
}
}
//--------------------------------------------------------------------------------------
// DXUTCreateBox - create a box mesh
//--------------------------------------------------------------------------------------
HRESULT WINAPI DXUTCreateBox( ID3D10Device* pDevice, float fWidth, float fHeight, float fDepth, ID3DX10Mesh** ppMesh )
{
HRESULT hr = S_OK;
WORD* pwIndices = NULL;
VERTEX* pVertices = NULL;
// Set up the defaults
if( D3DX_DEFAULT_FLOAT == fWidth )
fWidth = 1.0f;
if( D3DX_DEFAULT_FLOAT == fHeight )
fHeight = 1.0f;
if( D3DX_DEFAULT_FLOAT == fDepth )
fDepth = 1.0f;
// Validate parameters
if( !pDevice )
return D3DERR_INVALIDCALL;
if( !ppMesh )
return D3DERR_INVALIDCALL;
if( fWidth < 0.0f )
return D3DERR_INVALIDCALL;
if( fHeight < 0.0f )
return D3DERR_INVALIDCALL;
if( fDepth < 0.0f )
return D3DERR_INVALIDCALL;
// Create the mesh
UINT cFaces = 12;
UINT cVertices = 24;
// Create enough memory for the vertices and indices
pVertices = new VERTEX[ cVertices ];
if( !pVertices )
return E_OUTOFMEMORY;
pwIndices = new WORD[ cFaces * 3 ];
if( !pwIndices )
return E_OUTOFMEMORY;
// Create a box
MakeBox( pVertices, NULL, pwIndices, fWidth, fHeight, fDepth );
// Create a mesh
hr = CreateShapeMesh( pDevice, ppMesh, pVertices, cVertices, pwIndices, cFaces * 3 );
// Free up the memory
SAFE_DELETE_ARRAY( pVertices );
SAFE_DELETE_ARRAY( pwIndices );
return hr;
}
#define CACHE_SIZE 240
//----------------------------------------------------------------------------
// MakeCylinder helper
//----------------------------------------------------------------------------
static void MakeCylinder(
VERTEX* pVertices,
DWORD* pPointReps,
WORD* pwIndices,
float fRadius1,
float fRadius2,
float fLength,
UINT uSlices,
UINT uStacks )
{
UINT i, j;
// Sin/Cos caches
float sinI[CACHE_SIZE], cosI[CACHE_SIZE];
for( i = 0; i < uSlices; i++ )
sincosf( 2.0f * D3DX_PI * i / uSlices, sinI + i, cosI + i );
// Compute side normal angle
float fDeltaRadius = fRadius2 - fRadius1;
float fSideLength = sqrtf( fDeltaRadius * fDeltaRadius + fLength * fLength );
float fNormalXY = ( fSideLength > 0.00001f ) ? ( fLength / fSideLength ) : 1.0f;
float fNormalZ = ( fSideLength > 0.00001f ) ? ( -fDeltaRadius / fSideLength ) : 0.0f;
// Generate vertices
VERTEX* pVertex = pVertices;
float fZ, fRadius;
DWORD iVertex;
// Base cap (uSlices + 1)
fZ = fLength * -0.5f;
fRadius = fRadius1;
iVertex = 0;
pVertex->pos = D3DXVECTOR3( 0.0f, 0.0f, fZ );
pVertex->norm = D3DXVECTOR3( 0.0f, 0.0f, -1.0f );
pVertex++;
if( pPointReps != NULL )
pPointReps[iVertex] = iVertex;
iVertex++;
for( i = 0; i < uSlices; i++ )
{
pVertex->pos = D3DXVECTOR3( fRadius * sinI[i], fRadius * cosI[i], fZ );
pVertex->norm = D3DXVECTOR3( 0.0f, 0.0f, -1.0f );
pVertex++;
// link into stack vertices, which follow
if( pPointReps != NULL )
pPointReps[iVertex] = iVertex + uSlices;
iVertex++;
}
// Stacks ((uStacks + 1)*uSlices)
for( j = 0; j <= uStacks; j++ )
{
float f = ( float )j / ( float )uStacks;
fZ = fLength * ( f - 0.5f );
fRadius = fRadius1 + f * fDeltaRadius;
for( i = 0; i < uSlices; i++ )
{
pVertex->pos = D3DXVECTOR3( fRadius * sinI[i], fRadius * cosI[i], fZ );
pVertex->norm = D3DXVECTOR3( fNormalXY * sinI[i], fNormalXY * cosI[i], fNormalZ );
pVertex++;
if( pPointReps != NULL )
pPointReps[iVertex] = iVertex;
iVertex++;
}
}
// Top cap (uSlices + 1)
fZ = fLength * 0.5f;
fRadius = fRadius2;
for( i = 0; i < uSlices; i++ )
{
pVertex->pos = D3DXVECTOR3( fRadius * sinI[i], fRadius * cosI[i], fZ );
pVertex->norm = D3DXVECTOR3( 0.0f, 0.0f, 1.0f );
pVertex++;
// link into stack vertices, which precede
if( pPointReps != NULL )
pPointReps[iVertex] = iVertex - uSlices;
iVertex++;
}
pVertex->pos = D3DXVECTOR3( 0.0f, 0.0f, fZ );
pVertex->norm = D3DXVECTOR3( 0.0f, 0.0f, 1.0f );
pVertex++;
if( pPointReps != NULL )
pPointReps[iVertex] = iVertex;
iVertex++;
// Generate indices
WORD* pwFace = pwIndices;
UINT uRowA, uRowB;
// Z+ pole (uSlices)
uRowA = 0;
uRowB = 1;
for( i = 0; i < uSlices - 1; i++ )
{
pwFace[0] = ( WORD )( uRowA );
pwFace[1] = ( WORD )( uRowB + i );
pwFace[2] = ( WORD )( uRowB + i + 1 );
pwFace += 3;
}
pwFace[0] = ( WORD )( uRowA );
pwFace[1] = ( WORD )( uRowB + i );
pwFace[2] = ( WORD )( uRowB );
pwFace += 3;
// Interior stacks (uStacks * uSlices * 2)
for( j = 0; j < uStacks; j++ )
{
uRowA = 1 + ( j + 1 ) * uSlices;
uRowB = uRowA + uSlices;
for( i = 0; i < uSlices - 1; i++ )
{
pwFace[0] = ( WORD )( uRowA + i );
pwFace[1] = ( WORD )( uRowB + i );
pwFace[2] = ( WORD )( uRowA + i + 1 );
pwFace += 3;
pwFace[0] = ( WORD )( uRowA + i + 1 );
pwFace[1] = ( WORD )( uRowB + i );
pwFace[2] = ( WORD )( uRowB + i + 1 );
pwFace += 3;
}
pwFace[0] = ( WORD )( uRowA + i );
pwFace[1] = ( WORD )( uRowB + i );
pwFace[2] = ( WORD )( uRowA );
pwFace += 3;
pwFace[0] = ( WORD )( uRowA );
pwFace[1] = ( WORD )( uRowB + i );
pwFace[2] = ( WORD )( uRowB );
pwFace += 3;
}
// Z- pole (uSlices)
uRowA = 1 + ( uStacks + 2 ) * uSlices;
uRowB = uRowA + uSlices;
for( i = 0; i < uSlices - 1; i++ )
{
pwFace[0] = ( WORD )( uRowA + i );
pwFace[1] = ( WORD )( uRowB );
pwFace[2] = ( WORD )( uRowA + i + 1 );
pwFace += 3;
}
pwFace[0] = ( WORD )( uRowA + i );
pwFace[1] = ( WORD )( uRowB );
pwFace[2] = ( WORD )( uRowA );
pwFace += 3;
}
//----------------------------------------------------------------------------
// DXUTCreateCylinder - create a cylinder mesh
//----------------------------------------------------------------------------
HRESULT WINAPI DXUTCreateCylinder( ID3D10Device* pDevice, float fRadius1, float fRadius2, float fLength, UINT uSlices,
UINT uStacks, ID3DX10Mesh** ppMesh )
{
HRESULT hr = S_OK;
WORD* pwIndices = NULL;
VERTEX* pVertices = NULL;
// Set up the defaults
if( D3DX_DEFAULT_FLOAT == fRadius1 )
fRadius1 = 1.0f;
if( D3DX_DEFAULT_FLOAT == fRadius2 )
fRadius2 = 1.0f;
if( D3DX_DEFAULT_FLOAT == fLength )
fLength = 1.0f;
if( D3DX_DEFAULT == uSlices )
uSlices = 8;
if( D3DX_DEFAULT == uStacks )
uStacks = 8;
// Validate parameters
if( !pDevice )
return D3DERR_INVALIDCALL;
if( !ppMesh )
return D3DERR_INVALIDCALL;
if( fRadius1 < 0.0f )
return D3DERR_INVALIDCALL;
if( fRadius2 < 0.0f )
return D3DERR_INVALIDCALL;
if( fLength < 0.0f )
return D3DERR_INVALIDCALL;
if( uSlices < 2 )
return D3DERR_INVALIDCALL;
if( uStacks < 1 )
return D3DERR_INVALIDCALL;
if( uSlices >= CACHE_SIZE )
uSlices = CACHE_SIZE - 1;
// Create the mesh
UINT cFaces = ( uStacks + 1 ) * uSlices * 2;
UINT cVertices = 2 + ( uStacks + 3 ) * uSlices;
// Create enough memory for the vertices and indices
pVertices = new VERTEX[ cVertices ];
if( !pVertices )
return E_OUTOFMEMORY;
pwIndices = new WORD[ cFaces * 3 ];
if( !pwIndices )
return E_OUTOFMEMORY;
// Create a cylinder
MakeCylinder( pVertices, NULL, pwIndices, fRadius1, fRadius2,
fLength, uSlices, uStacks );
// Create a mesh
hr = CreateShapeMesh( pDevice, ppMesh, pVertices, cVertices, pwIndices, cFaces * 3 );
// Free up the memory
SAFE_DELETE_ARRAY( pVertices );
SAFE_DELETE_ARRAY( pwIndices );
return hr;
}
//--------------------------------------------------------------------------------------
// MakePolygon helper
//--------------------------------------------------------------------------------------
static void MakePolygon( VERTEX* pVertices,
WORD* pwIndices,
float fLength,
UINT uSides )
{
// Calculate the radius
float radius = fLength * 0.5f / sinf( D3DX_PI / ( float )uSides );
float angle = ( float )( 2.0f * D3DX_PI / ( float )uSides );
// Fill in vertices
VERTEX* pVertex = pVertices;
pVertex->pos = D3DXVECTOR3( 0.0f, 0.0f, 0.0f );
pVertex->norm = D3DXVECTOR3( 0.0f, 0.0f, 1.0f );
pVertex++;
for( UINT j = 0; j < uSides; j++ )
{
float s, c;
sincosf( angle * j, &s, &c );
pVertex->pos = D3DXVECTOR3( c * radius, s * radius, 0.0f );
pVertex->norm = D3DXVECTOR3( 0.0f, 0.0f, 1.0f );
pVertex++;
}
// Fill in indices
WORD* pwFace = pwIndices;
UINT iFace;
for( iFace = 0; iFace < uSides - 1; iFace++ )
{
pwFace[0] = 0;
pwFace[1] = ( WORD )iFace + 1;
pwFace[2] = ( WORD )iFace + 2;
pwFace += 3;
}
// handle the wrapping of the last case
pwFace[0] = 0;
pwFace[1] = ( WORD )iFace + 1;
pwFace[2] = 1;
}
//----------------------------------------------------------------------------
// DXUTCreatePolygon - create a polygon mesh
//----------------------------------------------------------------------------
HRESULT WINAPI DXUTCreatePolygon( ID3D10Device* pDevice, float fLength, UINT uSides, ID3DX10Mesh** ppMesh )
{
HRESULT hr = S_OK;
WORD* pwIndices = NULL;
VERTEX* pVertices = NULL;
// Set up the defaults
if( D3DX_DEFAULT == uSides )
uSides = 3;
if( D3DX_DEFAULT_FLOAT == fLength )
fLength = 1.0f;
// Validate parameters
if( !pDevice )
return D3DERR_INVALIDCALL;
if( !ppMesh )
return D3DERR_INVALIDCALL;
if( fLength < 0.0f )
return D3DERR_INVALIDCALL;
if( uSides < 3 )
return D3DERR_INVALIDCALL;
// Create the mesh
UINT cFaces = uSides;
UINT cVertices = uSides + 1;
// Create enough memory for the vertices and indices
pVertices = new VERTEX[ cVertices ];
if( !pVertices )
return E_OUTOFMEMORY;
pwIndices = new WORD[ cFaces * 3 ];
if( !pwIndices )
return E_OUTOFMEMORY;
// Create a polygon
MakePolygon( pVertices, pwIndices, fLength, uSides );
// Create a mesh
hr = CreateShapeMesh( pDevice, ppMesh, pVertices, cVertices, pwIndices, cFaces * 3 );
// Free up the memory
SAFE_DELETE_ARRAY( pVertices );
SAFE_DELETE_ARRAY( pwIndices );
return hr;
}
//---------------------------------------------------------------------
// MakeSphere helper
//---------------------------------------------------------------------
static void MakeSphere(
VERTEX* pVertices,
WORD* pwIndices,
float fRadius,
UINT uSlices,
UINT uStacks )
{
UINT i, j;
// Sin/Cos caches
float sinI[CACHE_SIZE], cosI[CACHE_SIZE];
float sinJ[CACHE_SIZE], cosJ[CACHE_SIZE];
for( i = 0; i < uSlices; i++ )
sincosf( 2.0f * D3DX_PI * i / uSlices, sinI + i, cosI + i );
for( j = 0; j < uStacks; j++ )
sincosf( D3DX_PI * j / uStacks, sinJ + j, cosJ + j );
// Generate vertices
VERTEX* pVertex = pVertices;
// +Z pole
pVertex->pos = D3DXVECTOR3( 0.0f, 0.0f, fRadius );
pVertex->norm = D3DXVECTOR3( 0.0f, 0.0f, 1.0f );
pVertex++;
// Stacks
for( j = 1; j < uStacks; j++ )
{
for( i = 0; i < uSlices; i++ )
{
D3DXVECTOR3 norm( sinI[i]* sinJ[j], cosI[i]* sinJ[j], cosJ[j] );
pVertex->pos = norm * fRadius;
pVertex->norm = norm;
pVertex++;
}
}
// Z- pole
pVertex->pos = D3DXVECTOR3( 0.0f, 0.0f, -fRadius );
pVertex->norm = D3DXVECTOR3( 0.0f, 0.0f, -1.0f );
pVertex++;
// Generate indices
WORD* pwFace = pwIndices;
UINT uRowA, uRowB;
// Z+ pole
uRowA = 0;
uRowB = 1;
for( i = 0; i < uSlices - 1; i++ )
{
pwFace[0] = ( WORD )( uRowA );
pwFace[1] = ( WORD )( uRowB + i + 1 );
pwFace[2] = ( WORD )( uRowB + i );
pwFace += 3;
}
pwFace[0] = ( WORD )( uRowA );
pwFace[1] = ( WORD )( uRowB );
pwFace[2] = ( WORD )( uRowB + i );
pwFace += 3;
// Interior stacks
for( j = 1; j < uStacks - 1; j++ )
{
uRowA = 1 + ( j - 1 ) * uSlices;
uRowB = uRowA + uSlices;
for( i = 0; i < uSlices - 1; i++ )
{
pwFace[0] = ( WORD )( uRowA + i );
pwFace[1] = ( WORD )( uRowA + i + 1 );
pwFace[2] = ( WORD )( uRowB + i );
pwFace += 3;
pwFace[0] = ( WORD )( uRowA + i + 1 );
pwFace[1] = ( WORD )( uRowB + i + 1 );
pwFace[2] = ( WORD )( uRowB + i );
pwFace += 3;
}
pwFace[0] = ( WORD )( uRowA + i );
pwFace[1] = ( WORD )( uRowA );
pwFace[2] = ( WORD )( uRowB + i );
pwFace += 3;
pwFace[0] = ( WORD )( uRowA );
pwFace[1] = ( WORD )( uRowB );
pwFace[2] = ( WORD )( uRowB + i );
pwFace += 3;
}
// Z- pole
uRowA = 1 + ( uStacks - 2 ) * uSlices;
uRowB = uRowA + uSlices;
for( i = 0; i < uSlices - 1; i++ )
{
pwFace[0] = ( WORD )( uRowA + i );
pwFace[1] = ( WORD )( uRowA + i + 1 );
pwFace[2] = ( WORD )( uRowB );
pwFace += 3;
}
pwFace[0] = ( WORD )( uRowA + i );
pwFace[1] = ( WORD )( uRowA );
pwFace[2] = ( WORD )( uRowB );
pwFace += 3;
}
//----------------------------------------------------------------------------
// DXUTCreateSphere - create a sphere mesh
//----------------------------------------------------------------------------
HRESULT WINAPI DXUTCreateSphere( ID3D10Device* pDevice, float fRadius, UINT uSlices, UINT uStacks,
ID3DX10Mesh** ppMesh )
{
HRESULT hr = S_OK;
WORD* pwIndices = NULL;
VERTEX* pVertices = NULL;
// Set up the defaults
if( D3DX_DEFAULT_FLOAT == fRadius )
fRadius = 1.0f;
if( D3DX_DEFAULT == uSlices )
uSlices = 8;
if( D3DX_DEFAULT == uStacks )
uStacks = 8;
// Validate parameters
if( !pDevice )
return D3DERR_INVALIDCALL;
if( !ppMesh )
return D3DERR_INVALIDCALL;
if( fRadius < 0.0f )
return D3DERR_INVALIDCALL;
if( uSlices < 2 )
return D3DERR_INVALIDCALL;
if( uStacks < 2 )
return D3DERR_INVALIDCALL;
if( uSlices > CACHE_SIZE )
uSlices = CACHE_SIZE;
if( uStacks > CACHE_SIZE )
uStacks = CACHE_SIZE;
// Create the mesh
UINT cFaces = 2 * ( uStacks - 1 ) * uSlices;
UINT cVertices = ( uStacks - 1 ) * uSlices + 2;
// Create enough memory for the vertices and indices
pVertices = new VERTEX[ cVertices ];
if( !pVertices )
return E_OUTOFMEMORY;
pwIndices = new WORD[ cFaces * 3 ];
if( !pwIndices )
return E_OUTOFMEMORY;
// Create a sphere
MakeSphere( pVertices, pwIndices, fRadius, uSlices, uStacks );
// Create a mesh
hr = CreateShapeMesh( pDevice, ppMesh, pVertices, cVertices, pwIndices, cFaces * 3 );
// Free up the memory
SAFE_DELETE_ARRAY( pVertices );
SAFE_DELETE_ARRAY( pwIndices );
return hr;
}
//---------------------------------------------------------------------
// MakeTorus helper
//---------------------------------------------------------------------
static void MakeTorus(
VERTEX* pVertices,
WORD* pwIndices,
float fInnerRadius,
float fOuterRadius,
UINT uSides,
UINT uRings )
{
UINT i, j;
//
// Compute the vertices
//
VERTEX* pVertex = pVertices;
for( i = 0; i < uRings; i++ )
{
float theta = ( float )i * 2.0f * D3DX_PI / ( float )uRings;
float st, ct;
sincosf( theta, &st, &ct );
for( j = 0; j < uSides; j++ )
{
float phi = ( float )j * 2.0f * D3DX_PI / uSides;
float sp, cp;
sincosf( phi, &sp, &cp );
pVertex->pos.x = ct * ( fOuterRadius + fInnerRadius * cp );
pVertex->pos.y = -st * ( fOuterRadius + fInnerRadius * cp );
pVertex->pos.z = sp * fInnerRadius;
pVertex->norm.x = ct * cp;
pVertex->norm.y = -st * cp;
pVertex->norm.z = sp;
pVertex++;
}
}
//
// Compute the indices:
// There are uRings * uSides faces
// Each face has 2 triangles (6 indices)
//
// Tube i has indices:
// Left Edge: i*(uSides+1) -- i*(uSides+1)+uSides
// Right Edge: (i+1)*(uSides+1) -- (i+1)*(uSides+1)+uSides
//
// Face j on tube i has the 4 indices:
// Left Edge: i*(uSides+1)+j -- i*(uSides+1)+j+1
// Right Edge: (i+1)*(uSides+1)+j -- (i+1)*(uSides+1)+j+1
//
WORD* pwFace = pwIndices;
for( i = 0; i < uRings - 1; i++ )
{
for( j = 0; j < uSides - 1; j++ )
{
// Tri 1 (Top-Left tri, CCW)
pwFace[0] = ( WORD )( i * uSides + j );
pwFace[1] = ( WORD )( i * uSides + j + 1 );
pwFace[2] = ( WORD )( ( i + 1 ) * uSides + j );
pwFace += 3;
// Tri 2 (Bottom-Right tri, CCW)
pwFace[0] = ( WORD )( ( i + 1 ) * uSides + j );
pwFace[1] = ( WORD )( i * uSides + j + 1 );
pwFace[2] = ( WORD )( ( i + 1 ) * uSides + j + 1 );
pwFace += 3;
}
// Tri 1 (Top-Left tri, CCW)
pwFace[0] = ( WORD )( i * uSides + j );
pwFace[1] = ( WORD )( i * uSides );
pwFace[2] = ( WORD )( ( i + 1 ) * uSides + j );
pwFace += 3;
// Tri 2 (Bottom-Right tri, CCW)
pwFace[0] = ( WORD )( ( i + 1 ) * uSides + j );
pwFace[1] = ( WORD )( i * uSides + 0 );
pwFace[2] = ( WORD )( ( i + 1 ) * uSides + 0 );
pwFace += 3;
}
// join the two ends of the tube
for( j = 0; j < uSides - 1; j++ )
{
// Tri 1 (Top-Left tri, CCW)
pwFace[0] = ( WORD )( i * uSides + j );
pwFace[1] = ( WORD )( i * uSides + j + 1 );
pwFace[2] = ( WORD )( j );
pwFace += 3;
// Tri 2 (Bottom-Right tri, CCW)
pwFace[0] = ( WORD )( j );
pwFace[1] = ( WORD )( i * uSides + j + 1 );
pwFace[2] = ( WORD )( j + 1 );
pwFace += 3;
}
// Tri 1 (Top-Left tri, CCW)
pwFace[0] = ( WORD )( i * uSides + j );
pwFace[1] = ( WORD )( i * uSides );
pwFace[2] = ( WORD )( j );
pwFace += 3;
// Tri 2 (Bottom-Right tri, CCW)
pwFace[0] = ( WORD )( j );
pwFace[1] = ( WORD )( i * uSides );
pwFace[2] = ( WORD )( 0 );
pwFace += 3;
}
//----------------------------------------------------------------------------
// DXUTCreateTorus - create a torus mesh
//----------------------------------------------------------------------------
HRESULT WINAPI DXUTCreateTorus( ID3D10Device* pDevice, float fInnerRadius, float fOuterRadius, UINT uSides,
UINT uRings, ID3DX10Mesh** ppMesh )
{
HRESULT hr = S_OK;
WORD* pwIndices = NULL;
VERTEX* pVertices = NULL;
// Set up the defaults
if( D3DX_DEFAULT_FLOAT == fInnerRadius )
fInnerRadius = 1.0f;
if( D3DX_DEFAULT_FLOAT == fOuterRadius )
fOuterRadius = 2.0f;
if( D3DX_DEFAULT == uSides )
uSides = 8;
if( D3DX_DEFAULT == uRings )
uRings = 15;
// Validate parameters
if( !pDevice )
return D3DERR_INVALIDCALL;
if( !ppMesh )
return D3DERR_INVALIDCALL;
if( fInnerRadius < 0.0f )
return D3DERR_INVALIDCALL;
if( fOuterRadius < 0.0f )
return D3DERR_INVALIDCALL;
if( uSides < 3 )
return D3DERR_INVALIDCALL;
if( uRings < 3 )
return D3DERR_INVALIDCALL;
// Create the mesh
UINT cFaces = 2 * uSides * uRings;
UINT cVertices = uRings * uSides;
// Create enough memory for the vertices and indices
pVertices = new VERTEX[ cVertices ];
if( !pVertices )
return E_OUTOFMEMORY;
pwIndices = new WORD[ cFaces * 3 ];
if( !pwIndices )
return E_OUTOFMEMORY;
// Create a torus
MakeTorus( pVertices, pwIndices, fInnerRadius, fOuterRadius,
uSides, uRings );
// Create a mesh
hr = CreateShapeMesh( pDevice, ppMesh, pVertices, cVertices, pwIndices, cFaces * 3 );
// Free up the memory
SAFE_DELETE_ARRAY( pVertices );
SAFE_DELETE_ARRAY( pwIndices );
return hr;
}
//----------------------------------------------------------------------------
// Teapot data
//----------------------------------------------------------------------------
#define NUMTEAPOTVERTICES 1178
#define NUMTEAPOTINDICES 6768
static float teapotPositionsFloats[NUMTEAPOTVERTICES*3] =
{
0.678873f, 0.330678f, 0.000000f,
0.669556f, 0.358022f, 0.000000f,
0.671003f, 0.374428f, 0.000000f,
0.680435f, 0.379897f, 0.000000f,
0.695077f, 0.374428f, 0.000000f,
0.712148f, 0.358022f, 0.000000f,
0.728873f, 0.330678f, 0.000000f,
0.654243f, 0.330678f, 0.187963f,
0.645254f, 0.358022f, 0.185461f,
0.646650f, 0.374428f, 0.185850f,
0.655751f, 0.379897f, 0.188383f,
0.669877f, 0.374428f, 0.192314f,
0.686348f, 0.358022f, 0.196898f,
0.702484f, 0.330678f, 0.201389f,
0.584502f, 0.330678f, 0.355704f,
0.576441f, 0.358022f, 0.350969f,
0.577693f, 0.374428f, 0.351704f,
0.585854f, 0.379897f, 0.356498f,
0.598522f, 0.374428f, 0.363938f,
0.613292f, 0.358022f, 0.372613f,
0.627762f, 0.330678f, 0.381111f,
0.475873f, 0.330678f, 0.497000f,
0.469258f, 0.358022f, 0.490385f,
0.470285f, 0.374428f, 0.491412f,
0.476982f, 0.379897f, 0.498109f,
0.487377f, 0.374428f, 0.508505f,
0.499498f, 0.358022f, 0.520626f,
0.511373f, 0.330678f, 0.532500f,
0.334576f, 0.330678f, 0.605630f,
0.329842f, 0.358022f, 0.597569f,
0.330577f, 0.374428f, 0.598820f,
0.335370f, 0.379897f, 0.606982f,
0.342810f, 0.374428f, 0.619649f,
0.351485f, 0.358022f, 0.634419f,
0.359984f, 0.330678f, 0.648889f,
0.166836f, 0.330678f, 0.675370f,
0.164334f, 0.358022f, 0.666381f,
0.164722f, 0.374428f, 0.667777f,
0.167255f, 0.379897f, 0.676878f,
0.171187f, 0.374428f, 0.691004f,
0.175771f, 0.358022f, 0.707475f,
0.180262f, 0.330678f, 0.723611f,
-0.021127f, 0.330678f, 0.700000f,
-0.021127f, 0.358022f, 0.690683f,
-0.021127f, 0.374428f, 0.692130f,
-0.021127f, 0.379897f, 0.701563f,
-0.021127f, 0.374428f, 0.716204f,
-0.021127f, 0.358022f, 0.733276f,
-0.021127f, 0.330678f, 0.750000f,
-0.224715f, 0.330678f, 0.675370f,
-0.215631f, 0.358022f, 0.666381f,
-0.211606f, 0.374428f, 0.667777f,
-0.211463f, 0.379897f, 0.676878f,
-0.214020f, 0.374428f, 0.691004f,
-0.218098f, 0.358022f, 0.707475f,
-0.222516f, 0.330678f, 0.723611f,
-0.396831f, 0.330678f, 0.605630f,
-0.383671f, 0.358022f, 0.597569f,
-0.378758f, 0.374428f, 0.598820f,
-0.380125f, 0.379897f, 0.606982f,
-0.385806f, 0.374428f, 0.619649f,
-0.393832f, 0.358022f, 0.634419f,
-0.402238f, 0.330678f, 0.648889f,
-0.535002f, 0.330678f, 0.497000f,
-0.521278f, 0.358022f, 0.490385f,
-0.517539f, 0.374428f, 0.491412f,
-0.521346f, 0.379897f, 0.498109f,
-0.530257f, 0.374428f, 0.508505f,
-0.541831f, 0.358022f, 0.520626f,
-0.553627f, 0.330678f, 0.532500f,
-0.636757f, 0.330678f, 0.355704f,
-0.624483f, 0.358022f, 0.350969f,
-0.622910f, 0.374428f, 0.351704f,
-0.629359f, 0.379897f, 0.356498f,
-0.641146f, 0.374428f, 0.363938f,
-0.655593f, 0.358022f, 0.372613f,
-0.670016f, 0.330678f, 0.381111f,
-0.699623f, 0.330678f, 0.187963f,
-0.689317f, 0.358022f, 0.185461f,
-0.689830f, 0.374428f, 0.185850f,
-0.698396f, 0.379897f, 0.188382f,
-0.712247f, 0.374428f, 0.192314f,
-0.728617f, 0.358022f, 0.196898f,
-0.744738f, 0.330678f, 0.201389f,
-0.721127f, 0.330678f, 0.000000f,
-0.711810f, 0.358022f, 0.000000f,
-0.713257f, 0.374428f, 0.000000f,
-0.722690f, 0.379897f, 0.000000f,
-0.737331f, 0.374428f, 0.000000f,
-0.754403f, 0.358022f, 0.000000f,
-0.771127f, 0.330678f, 0.000000f,
-0.696498f, 0.330678f, -0.187963f,
-0.687508f, 0.358022f, -0.185461f,
-0.688904f, 0.374428f, -0.185850f,
-0.698005f, 0.379897f, -0.188383f,
-0.712131f, 0.374428f, -0.192314f,
-0.728602f, 0.358022f, -0.196898f,
-0.744738f, 0.330678f, -0.201389f,
-0.626757f, 0.330678f, -0.355704f,
-0.618696f, 0.358022f, -0.350969f,
-0.619948f, 0.374428f, -0.351704f,
-0.628109f, 0.379897f, -0.356498f,
-0.640776f, 0.374428f, -0.363938f,
-0.655546f, 0.358022f, -0.372613f,
-0.670016f, 0.330678f, -0.381111f,
-0.518127f, 0.330678f, -0.497000f,
-0.511512f, 0.358022f, -0.490385f,
-0.512539f, 0.374428f, -0.491412f,
-0.519237f, 0.379897f, -0.498109f,
-0.529632f, 0.374428f, -0.508505f,
-0.541753f, 0.358022f, -0.520626f,
-0.553627f, 0.330678f, -0.532500f,
-0.376831f, 0.330678f, -0.605630f,
-0.372096f, 0.358022f, -0.597569f,
-0.372832f, 0.374428f, -0.598820f,
-0.377625f, 0.379897f, -0.606982f,
-0.385065f, 0.374428f, -0.619649f,
-0.393740f, 0.358022f, -0.634419f,
-0.402238f, 0.330678f, -0.648889f,
-0.209090f, 0.330678f, -0.675370f,
-0.206588f, 0.358022f, -0.666381f,
-0.206977f, 0.374428f, -0.667777f,
-0.209510f, 0.379897f, -0.676878f,
-0.213441f, 0.374428f, -0.691004f,
-0.218025f, 0.358022f, -0.707475f,
-0.222516f, 0.330678f, -0.723611f,
-0.021127f, 0.330678f, -0.700000f,
-0.021127f, 0.358022f, -0.690683f,
-0.021127f, 0.374428f, -0.692130f,
-0.021127f, 0.379897f, -0.701563f,
-0.021127f, 0.374428f, -0.716204f,
-0.021127f, 0.358022f, -0.733276f,
-0.021127f, 0.330678f, -0.750000f,
0.166836f, 0.330678f, -0.675370f,
0.164334f, 0.358022f, -0.666381f,
0.164722f, 0.374428f, -0.667777f,
0.167255f, 0.379897f, -0.676878f,
0.171187f, 0.374428f, -0.691004f,
0.175771f, 0.358022f, -0.707475f,
0.180262f, 0.330678f, -0.723611f,
0.334576f, 0.330678f, -0.605630f,
0.329842f, 0.358022f, -0.597569f,
0.330577f, 0.374428f, -0.598820f,
0.335370f, 0.379897f, -0.606982f,
0.342810f, 0.374428f, -0.619649f,
0.351485f, 0.358022f, -0.634419f,
0.359984f, 0.330678f, -0.648889f,
0.475873f, 0.330678f, -0.497000f,
0.469258f, 0.358022f, -0.490385f,
0.470285f, 0.374428f, -0.491412f,
0.476982f, 0.379897f, -0.498109f,
0.487377f, 0.374428f, -0.508505f,
0.499498f, 0.358022f, -0.520626f,
0.511373f, 0.330678f, -0.532500f,
0.584502f, 0.330678f, -0.355704f,
0.576441f, 0.358022f, -0.350969f,
0.577693f, 0.374428f, -0.351704f,
0.585854f, 0.379897f, -0.356498f,
0.598522f, 0.374428f, -0.363938f,
0.613292f, 0.358022f, -0.372613f,
0.627762f, 0.330678f, -0.381111f,
0.654243f, 0.330678f, -0.187963f,
0.645254f, 0.358022f, -0.185461f,
0.646650f, 0.374428f, -0.185850f,
0.655751f, 0.379897f, -0.188382f,
0.669877f, 0.374428f, -0.192314f,
0.686348f, 0.358022f, -0.196898f,
0.702484f, 0.330678f, -0.201389f,
0.790794f, 0.199602f, 0.000000f,
0.849243f, 0.069567f, 0.000000f,
0.900748f, -0.058384f, 0.000000f,
0.941836f, -0.183211f, 0.000000f,
0.969035f, -0.303870f, 0.000000f,
0.978873f, -0.419322f, 0.000000f,
0.762227f, 0.199602f, 0.218016f,
0.818619f, 0.069567f, 0.233711f,
0.868312f, -0.058384f, 0.247541f,
0.907954f, -0.183211f, 0.258573f,
0.934196f, -0.303870f, 0.265877f,
0.943688f, -0.419322f, 0.268519f,
0.681335f, 0.199602f, 0.412576f,
0.731904f, 0.069567f, 0.442277f,
0.776465f, -0.058384f, 0.468449f,
0.812014f, -0.183211f, 0.489328f,
0.835546f, -0.303870f, 0.503149f,
0.844058f, -0.419322f, 0.508148f,
0.555337f, 0.199602f, 0.576464f,
0.596836f, 0.069567f, 0.617963f,
0.633404f, -0.058384f, 0.654531f,
0.662577f, -0.183211f, 0.683704f,
0.681888f, -0.303870f, 0.703015f,
0.688873f, -0.419322f, 0.710000f,
0.391449f, 0.199602f, 0.702462f,
0.421150f, 0.069567f, 0.753032f,
0.447322f, -0.058384f, 0.797593f,
0.468201f, -0.183211f, 0.833141f,
0.482022f, -0.303870f, 0.856674f,
0.487021f, -0.419322f, 0.865185f,
0.196889f, 0.199602f, 0.783354f,
0.212583f, 0.069567f, 0.839746f,
0.226413f, -0.058384f, 0.889439f,
0.237446f, -0.183211f, 0.929081f,
0.244750f, -0.303870f, 0.955323f,
0.247391f, -0.419322f, 0.964815f,
-0.021127f, 0.199602f, 0.811921f,
-0.021127f, 0.069567f, 0.870370f,
-0.021127f, -0.058384f, 0.921875f,
-0.021127f, -0.183211f, 0.962963f,
-0.021127f, -0.303870f, 0.990162f,
-0.021127f, -0.419322f, 1.000000f,
-0.239143f, 0.199602f, 0.783354f,
-0.254838f, 0.069567f, 0.839746f,
-0.268668f, -0.058384f, 0.889439f,
-0.279701f, -0.183211f, 0.929081f,
-0.287004f, -0.303870f, 0.955323f,
-0.289646f, -0.419322f, 0.964815f,
-0.433704f, 0.199602f, 0.702462f,
-0.463404f, 0.069567f, 0.753032f,
-0.489576f, -0.058384f, 0.797593f,
-0.510455f, -0.183211f, 0.833141f,
-0.524276f, -0.303870f, 0.856674f,
-0.529275f, -0.419322f, 0.865185f,
-0.597591f, 0.199602f, 0.576464f,
-0.639090f, 0.069567f, 0.617963f,
-0.675658f, -0.058384f, 0.654531f,
-0.704831f, -0.183211f, 0.683704f,
-0.724142f, -0.303870f, 0.703015f,
-0.731127f, -0.419322f, 0.710000f,
-0.723589f, 0.199602f, 0.412576f,
-0.774159f, 0.069567f, 0.442277f,
-0.818720f, -0.058384f, 0.468449f,
-0.854269f, -0.183211f, 0.489328f,
-0.877801f, -0.303870f, 0.503149f,
-0.886312f, -0.419322f, 0.508148f,
-0.804481f, 0.199602f, 0.218016f,
-0.860873f, 0.069567f, 0.233711f,
-0.910566f, -0.058384f, 0.247540f,
-0.950208f, -0.183211f, 0.258573f,
-0.976450f, -0.303870f, 0.265877f,
-0.985942f, -0.419322f, 0.268518f,
-0.833049f, 0.199602f, 0.000000f,
-0.891498f, 0.069567f, 0.000000f,
-0.943002f, -0.058384f, 0.000000f,
-0.984090f, -0.183211f, 0.000000f,
-1.011289f, -0.303870f, 0.000000f,
-1.021127f, -0.419322f, 0.000000f,
-0.804481f, 0.199602f, -0.218016f,
-0.860873f, 0.069567f, -0.233711f,
-0.910566f, -0.058384f, -0.247541f,
-0.950208f, -0.183211f, -0.258573f,
-0.976450f, -0.303870f, -0.265877f,
-0.985942f, -0.419322f, -0.268519f,
-0.723589f, 0.199602f, -0.412576f,
-0.774159f, 0.069567f, -0.442277f,
-0.818720f, -0.058384f, -0.468449f,
-0.854269f, -0.183211f, -0.489328f,
-0.877801f, -0.303870f, -0.503149f,
-0.886312f, -0.419322f, -0.508148f,
-0.597591f, 0.199602f, -0.576464f,
-0.639090f, 0.069567f, -0.617963f,
-0.675658f, -0.058384f, -0.654531f,
-0.704831f, -0.183211f, -0.683704f,
-0.724142f, -0.303870f, -0.703015f,
-0.731127f, -0.419322f, -0.710000f,
-0.433704f, 0.199602f, -0.702462f,
-0.463404f, 0.069567f, -0.753032f,
-0.489576f, -0.058384f, -0.797593f,
-0.510455f, -0.183211f, -0.833141f,
-0.524276f, -0.303870f, -0.856674f,
-0.529275f, -0.419322f, -0.865185f,
-0.239143f, 0.199602f, -0.783354f,
-0.254838f, 0.069567f, -0.839746f,
-0.268668f, -0.058384f, -0.889439f,
-0.279701f, -0.183211f, -0.929081f,
-0.287004f, -0.303870f, -0.955323f,
-0.289646f, -0.419322f, -0.964815f,
-0.021127f, 0.199602f, -0.811921f,
-0.021127f, 0.069567f, -0.870370f,
-0.021127f, -0.058384f, -0.921875f,
-0.021127f, -0.183211f, -0.962963f,
-0.021127f, -0.303870f, -0.990162f,
-0.021127f, -0.419322f, -1.000000f,
0.196889f, 0.199602f, -0.783354f,
0.212583f, 0.069567f, -0.839746f,
0.226413f, -0.058384f, -0.889439f,
0.237446f, -0.183211f, -0.929081f,
0.244750f, -0.303870f, -0.955323f,
0.247391f, -0.419322f, -0.964815f,
0.391449f, 0.199602f, -0.702462f,
0.421150f, 0.069567f, -0.753032f,
0.447322f, -0.058384f, -0.797593f,
0.468201f, -0.183211f, -0.833141f,
0.482022f, -0.303870f, -0.856674f,
0.487021f, -0.419322f, -0.865185f,
0.555337f, 0.199602f, -0.576464f,
0.596836f, 0.069567f, -0.617963f,
0.633404f, -0.058384f, -0.654531f,
0.662577f, -0.183211f, -0.683704f,
0.681888f, -0.303870f, -0.703015f,
0.688873f, -0.419322f, -0.710000f,
0.681335f, 0.199602f, -0.412576f,
0.731904f, 0.069567f, -0.442277f,
0.776465f, -0.058384f, -0.468449f,
0.812014f, -0.183211f, -0.489328f,
0.835546f, -0.303870f, -0.503149f,
0.844058f, -0.419322f, -0.508148f,
0.762227f, 0.199602f, -0.218016f,
0.818619f, 0.069567f, -0.233711f,
0.868312f, -0.058384f, -0.247540f,
0.907954f, -0.183211f, -0.258573f,
0.934196f, -0.303870f, -0.265877f,
0.943688f, -0.419322f, -0.268518f,
0.960354f, -0.522620f, 0.000000f,
0.914058f, -0.608211f, 0.000000f,
0.853873f, -0.677134f, 0.000000f,
0.793688f, -0.730433f, 0.000000f,
0.747391f, -0.769148f, 0.000000f,
0.728873f, -0.794322f, 0.000000f,
0.925821f, -0.522620f, 0.263546f,
0.881153f, -0.608211f, 0.251115f,
0.823086f, -0.677134f, 0.234954f,
0.765018f, -0.730433f, 0.218793f,
0.720351f, -0.769148f, 0.206361f,
0.702484f, -0.794322f, 0.201389f,
0.828036f, -0.522620f, 0.498738f,
0.787981f, -0.608211f, 0.475213f,
0.735910f, -0.677134f, 0.444630f,
0.683839f, -0.730433f, 0.414047f,
0.643784f, -0.769148f, 0.390521f,
0.627762f, -0.794322f, 0.381111f,
0.675725f, -0.522620f, 0.696852f,
0.642854f, -0.608211f, 0.663981f,
0.600123f, -0.677134f, 0.621250f,
0.557391f, -0.730433f, 0.578519f,
0.524521f, -0.769148f, 0.545648f,
0.511373f, -0.794322f, 0.532500f,
0.477611f, -0.522620f, 0.849163f,
0.454085f, -0.608211f, 0.809108f,
0.423502f, -0.677134f, 0.757037f,
0.392919f, -0.730433f, 0.704966f,
0.369394f, -0.769148f, 0.664911f,
0.359984f, -0.794322f, 0.648889f,
0.242419f, -0.522620f, 0.946948f,
0.229987f, -0.608211f, 0.902281f,
0.213826f, -0.677134f, 0.844213f,
0.197666f, -0.730433f, 0.786145f,
0.185234f, -0.769148f, 0.741478f,
0.180262f, -0.794322f, 0.723611f,
-0.021127f, -0.522620f, 0.981482f,
-0.021127f, -0.608211f, 0.935185f,
-0.021127f, -0.677134f, 0.875000f,
-0.021127f, -0.730433f, 0.814815f,
-0.021127f, -0.769148f, 0.768519f,
-0.021127f, -0.794322f, 0.750000f,
-0.284673f, -0.522620f, 0.946948f,
-0.272242f, -0.608211f, 0.902281f,
-0.256081f, -0.677134f, 0.844213f,
-0.239920f, -0.730433f, 0.786145f,
-0.227489f, -0.769148f, 0.741478f,
-0.222516f, -0.794322f, 0.723611f,
-0.519865f, -0.522620f, 0.849163f,
-0.496340f, -0.608211f, 0.809108f,
-0.465757f, -0.677134f, 0.757037f,
-0.435174f, -0.730433f, 0.704966f,
-0.411649f, -0.769148f, 0.664911f,
-0.402238f, -0.794322f, 0.648889f,
-0.717979f, -0.522620f, 0.696852f,
-0.685109f, -0.608211f, 0.663981f,
-0.642377f, -0.677134f, 0.621250f,
-0.599646f, -0.730433f, 0.578519f,
-0.566775f, -0.769148f, 0.545648f,
-0.553627f, -0.794322f, 0.532500f,
-0.870290f, -0.522620f, 0.498738f,
-0.830236f, -0.608211f, 0.475213f,
-0.778164f, -0.677134f, 0.444630f,
-0.726093f, -0.730433f, 0.414047f,
-0.686038f, -0.769148f, 0.390521f,
-0.670016f, -0.794322f, 0.381111f,
-0.968075f, -0.522620f, 0.263546f,
-0.923408f, -0.608211f, 0.251115f,
-0.865340f, -0.677134f, 0.234954f,
-0.807273f, -0.730433f, 0.218793f,
-0.762605f, -0.769148f, 0.206361f,
-0.744738f, -0.794322f, 0.201389f,
-1.002609f, -0.522620f, 0.000000f,
-0.956312f, -0.608211f, 0.000000f,
-0.896127f, -0.677134f, 0.000000f,
-0.835942f, -0.730433f, 0.000000f,
-0.789646f, -0.769148f, 0.000000f,
-0.771127f, -0.794322f, 0.000000f,
-0.968075f, -0.522620f, -0.263546f,
-0.923408f, -0.608211f, -0.251115f,
-0.865340f, -0.677134f, -0.234954f,
-0.807273f, -0.730433f, -0.218793f,
-0.762605f, -0.769148f, -0.206361f,
-0.744738f, -0.794322f, -0.201389f,
-0.870290f, -0.522620f, -0.498738f,
-0.830236f, -0.608211f, -0.475213f,
-0.778164f, -0.677134f, -0.444630f,
-0.726093f, -0.730433f, -0.414047f,
-0.686038f, -0.769148f, -0.390521f,
-0.670016f, -0.794322f, -0.381111f,
-0.717979f, -0.522620f, -0.696852f,
-0.685109f, -0.608211f, -0.663981f,
-0.642377f, -0.677134f, -0.621250f,
-0.599646f, -0.730433f, -0.578519f,
-0.566775f, -0.769148f, -0.545648f,
-0.553627f, -0.794322f, -0.532500f,
-0.519865f, -0.522620f, -0.849163f,
-0.496340f, -0.608211f, -0.809108f,
-0.465757f, -0.677134f, -0.757037f,
-0.435174f, -0.730433f, -0.704966f,
-0.411648f, -0.769148f, -0.664911f,
-0.402238f, -0.794322f, -0.648889f,
-0.284673f, -0.522620f, -0.946948f,
-0.272242f, -0.608211f, -0.902281f,
-0.256081f, -0.677134f, -0.844213f,
-0.239920f, -0.730433f, -0.786145f,
-0.227489f, -0.769148f, -0.741478f,
-0.222516f, -0.794322f, -0.723611f,
-0.021127f, -0.522620f, -0.981482f,
-0.021127f, -0.608211f, -0.935185f,
-0.021127f, -0.677134f, -0.875000f,
-0.021127f, -0.730433f, -0.814815f,
-0.021127f, -0.769148f, -0.768519f,
-0.021127f, -0.794322f, -0.750000f,
0.242419f, -0.522620f, -0.946948f,
0.229987f, -0.608211f, -0.902281f,
0.213827f, -0.677134f, -0.844213f,
0.197666f, -0.730433f, -0.786145f,
0.185234f, -0.769148f, -0.741478f,
0.180262f, -0.794322f, -0.723611f,
0.477611f, -0.522620f, -0.849163f,
0.454085f, -0.608211f, -0.809108f,
0.423502f, -0.677134f, -0.757037f,
0.392919f, -0.730433f, -0.704966f,
0.369394f, -0.769148f, -0.664911f,
0.359984f, -0.794322f, -0.648889f,
0.675725f, -0.522620f, -0.696852f,
0.642854f, -0.608211f, -0.663981f,
0.600123f, -0.677134f, -0.621250f,
0.557391f, -0.730433f, -0.578519f,
0.524521f, -0.769148f, -0.545648f,
0.511373f, -0.794322f, -0.532500f,
0.828036f, -0.522620f, -0.498738f,
0.787981f, -0.608211f, -0.475213f,
0.735910f, -0.677134f, -0.444630f,
0.683839f, -0.730433f, -0.414047f,
0.643784f, -0.769148f, -0.390521f,
0.627762f, -0.794322f, -0.381111f,
0.925821f, -0.522620f, -0.263546f,
0.881153f, -0.608211f, -0.251115f,
0.823086f, -0.677134f, -0.234954f,
0.765018f, -0.730433f, -0.218793f,
0.720351f, -0.769148f, -0.206361f,
0.702484f, -0.794322f, -0.201389f,
0.722796f, -0.812898f, 0.000000f,
0.692762f, -0.830433f, 0.000000f,
0.621060f, -0.845884f, 0.000000f,
0.489984f, -0.858211f, 0.000000f,
0.281824f, -0.866370f, 0.000000f,
-0.021127f, -0.869322f, 0.000000f,
0.696621f, -0.812898f, 0.199757f,
0.667643f, -0.830433f, 0.191692f,
0.598465f, -0.845884f, 0.172439f,
0.472000f, -0.858211f, 0.137243f,
0.271165f, -0.866370f, 0.081348f,
0.622505f, -0.812898f, 0.378023f,
0.596519f, -0.830433f, 0.362761f,
0.534484f, -0.845884f, 0.326326f,
0.421079f, -0.858211f, 0.259720f,
0.240982f, -0.866370f, 0.153944f,
0.507059f, -0.812898f, 0.528186f,
0.485734f, -0.830433f, 0.506861f,
0.434826f, -0.845884f, 0.455953f,
0.341762f, -0.858211f, 0.362889f,
0.193968f, -0.866370f, 0.215095f,
0.356896f, -0.812898f, 0.643632f,
0.341634f, -0.830433f, 0.617646f,
0.305199f, -0.845884f, 0.555611f,
0.238593f, -0.858211f, 0.442206f,
0.132817f, -0.866370f, 0.262109f,
0.178630f, -0.812898f, 0.717749f,
0.170565f, -0.830433f, 0.688771f,
0.151312f, -0.845884f, 0.619592f,
0.116116f, -0.858211f, 0.493128f,
0.060221f, -0.866370f, 0.292292f,
-0.021127f, -0.812898f, 0.743924f,
-0.021127f, -0.830433f, 0.713889f,
-0.021127f, -0.845884f, 0.642188f,
-0.021127f, -0.858211f, 0.511111f,
-0.021127f, -0.866370f, 0.302951f,
-0.220884f, -0.812898f, 0.717749f,
-0.212820f, -0.830433f, 0.688771f,
-0.193566f, -0.845884f, 0.619592f,
-0.158370f, -0.858211f, 0.493128f,
-0.102475f, -0.866370f, 0.292292f,
-0.399151f, -0.812898f, 0.643632f,
-0.383889f, -0.830433f, 0.617646f,
-0.347454f, -0.845884f, 0.555611f,
-0.280847f, -0.858211f, 0.442206f,
-0.175071f, -0.866370f, 0.262109f,
-0.549313f, -0.812898f, 0.528186f,
-0.527988f, -0.830433f, 0.506861f,
-0.477080f, -0.845884f, 0.455953f,
-0.384016f, -0.858211f, 0.362889f,
-0.236223f, -0.866370f, 0.215095f,
-0.664759f, -0.812898f, 0.378023f,
-0.638773f, -0.830433f, 0.362761f,
-0.576738f, -0.845884f, 0.326326f,
-0.463333f, -0.858211f, 0.259720f,
-0.283236f, -0.866370f, 0.153944f,
-0.738876f, -0.812898f, 0.199757f,
-0.709898f, -0.830433f, 0.191692f,
-0.640719f, -0.845884f, 0.172439f,
-0.514255f, -0.858211f, 0.137243f,
-0.313419f, -0.866370f, 0.081348f,
-0.765051f, -0.812898f, 0.000000f,
-0.735016f, -0.830433f, 0.000000f,
-0.663315f, -0.845884f, 0.000000f,
-0.532238f, -0.858211f, 0.000000f,
-0.324079f, -0.866370f, 0.000000f,
-0.738876f, -0.812898f, -0.199757f,
-0.709898f, -0.830433f, -0.191692f,
-0.640719f, -0.845884f, -0.172439f,
-0.514255f, -0.858211f, -0.137243f,
-0.313419f, -0.866370f, -0.081348f,
-0.664759f, -0.812898f, -0.378023f,
-0.638773f, -0.830433f, -0.362761f,
-0.576738f, -0.845884f, -0.326326f,
-0.463333f, -0.858211f, -0.259720f,
-0.283236f, -0.866370f, -0.153944f,
-0.549313f, -0.812898f, -0.528186f,
-0.527988f, -0.830433f, -0.506861f,
-0.477080f, -0.845884f, -0.455953f,
-0.384016f, -0.858211f, -0.362889f,
-0.236223f, -0.866370f, -0.215095f,
-0.399151f, -0.812898f, -0.643632f,
-0.383889f, -0.830433f, -0.617646f,
-0.347454f, -0.845884f, -0.555611f,
-0.280847f, -0.858211f, -0.442206f,
-0.175071f, -0.866370f, -0.262109f,
-0.220884f, -0.812898f, -0.717749f,
-0.212820f, -0.830433f, -0.688771f,
-0.193566f, -0.845884f, -0.619592f,
-0.158370f, -0.858211f, -0.493128f,
-0.102475f, -0.866370f, -0.292292f,
-0.021127f, -0.812898f, -0.743924f,
-0.021127f, -0.830433f, -0.713889f,
-0.021127f, -0.845884f, -0.642188f,
-0.021127f, -0.858211f, -0.511111f,
-0.021127f, -0.866370f, -0.302951f,
0.178630f, -0.812898f, -0.717749f,
0.170565f, -0.830433f, -0.688771f,
0.151312f, -0.845884f, -0.619592f,
0.116116f, -0.858211f, -0.493128f,
0.060221f, -0.866370f, -0.292292f,
0.356896f, -0.812898f, -0.643632f,
0.341634f, -0.830433f, -0.617646f,
0.305199f, -0.845884f, -0.555611f,
0.238593f, -0.858211f, -0.442206f,
0.132817f, -0.866370f, -0.262109f,
0.507059f, -0.812898f, -0.528186f,
0.485734f, -0.830433f, -0.506861f,
0.434826f, -0.845884f, -0.455953f,
0.341762f, -0.858211f, -0.362889f,
0.193968f, -0.866370f, -0.215095f,
0.622505f, -0.812898f, -0.378023f,
0.596519f, -0.830433f, -0.362761f,
0.534484f, -0.845884f, -0.326326f,
0.421079f, -0.858211f, -0.259720f,
0.240982f, -0.866370f, -0.153944f,
0.696621f, -0.812898f, -0.199757f,
0.667643f, -0.830433f, -0.191692f,
0.598465f, -0.845884f, -0.172439f,
0.472000f, -0.858211f, -0.137243f,
0.271165f, -0.866370f, -0.081348f,
-0.821127f, 0.143178f, 0.000000f,
-0.983396f, 0.142657f, 0.000000f,
-1.119275f, 0.139012f, 0.000000f,
-1.227377f, 0.129116f, 0.000000f,
-1.306313f, 0.109845f, 0.000000f,
-1.354692f, 0.078074f, 0.000000f,
-1.371127f, 0.030678f, 0.000000f,
-0.817424f, 0.151512f, 0.062500f,
-0.984648f, 0.150952f, 0.062500f,
-1.124351f, 0.147036f, 0.062500f,
-1.235248f, 0.136407f, 0.062500f,
-1.316052f, 0.115709f, 0.062500f,
-1.365477f, 0.081585f, 0.062500f,
-1.382239f, 0.030678f, 0.062500f,
-0.808164f, 0.172345f, 0.100000f,
-0.987777f, 0.171689f, 0.100000f,
-1.137040f, 0.167098f, 0.100000f,
-1.254924f, 0.154637f, 0.100000f,
-1.340400f, 0.130370f, 0.100000f,
-1.392441f, 0.090362f, 0.100000f,
-1.410016f, 0.030678f, 0.100000f,
-0.796127f, 0.199428f, 0.112500f,
-0.991845f, 0.198647f, 0.112500f,
-1.153535f, 0.193178f, 0.112500f,
-1.280502f, 0.178335f, 0.112500f,
-1.372053f, 0.149428f, 0.112500f,
-1.427493f, 0.101772f, 0.112500f,
-1.446127f, 0.030678f, 0.112500f,
-0.784090f, 0.226511f, 0.100000f,
-0.995913f, 0.225605f, 0.100000f,
-1.170030f, 0.219258f, 0.100000f,
-1.306081f, 0.202032f, 0.100000f,
-1.403706f, 0.168487f, 0.100000f,
-1.462545f, 0.113182f, 0.100000f,
-1.482238f, 0.030678f, 0.100000f,
-0.774831f, 0.247345f, 0.062500f,
-0.999042f, 0.246342f, 0.062500f,
-1.182719f, 0.239320f, 0.062500f,
-1.325757f, 0.220261f, 0.062500f,
-1.428054f, 0.183147f, 0.062500f,
-1.489509f, 0.121959f, 0.062500f,
-1.510016f, 0.030678f, 0.062500f,
-0.771127f, 0.255678f, 0.000000f,
-1.000294f, 0.254636f, 0.000000f,
-1.187794f, 0.247345f, 0.000000f,
-1.333627f, 0.227553f, 0.000000f,
-1.437794f, 0.189011f, 0.000000f,
-1.500294f, 0.125470f, 0.000000f,
-1.521127f, 0.030678f, 0.000000f,
-0.774831f, 0.247345f, -0.062500f,
-0.999042f, 0.246342f, -0.062500f,
-1.182719f, 0.239320f, -0.062500f,
-1.325757f, 0.220261f, -0.062500f,
-1.428054f, 0.183147f, -0.062500f,
-1.489509f, 0.121959f, -0.062500f,
-1.510016f, 0.030678f, -0.062500f,
-0.784090f, 0.226511f, -0.100000f,
-0.995913f, 0.225605f, -0.100000f,
-1.170030f, 0.219258f, -0.100000f,
-1.306081f, 0.202032f, -0.100000f,
-1.403706f, 0.168487f, -0.100000f,
-1.462545f, 0.113182f, -0.100000f,
-1.482238f, 0.030678f, -0.100000f,
-0.796127f, 0.199428f, -0.112500f,
-0.991845f, 0.198647f, -0.112500f,
-1.153535f, 0.193178f, -0.112500f,
-1.280502f, 0.178335f, -0.112500f,
-1.372053f, 0.149428f, -0.112500f,
-1.427493f, 0.101772f, -0.112500f,
-1.446127f, 0.030678f, -0.112500f,
-0.808164f, 0.172345f, -0.100000f,
-0.987777f, 0.171689f, -0.100000f,
-1.137040f, 0.167098f, -0.100000f,
-1.254924f, 0.154637f, -0.100000f,
-1.340400f, 0.130370f, -0.100000f,
-1.392441f, 0.090362f, -0.100000f,
-1.410016f, 0.030678f, -0.100000f,
-0.817424f, 0.151512f, -0.062500f,
-0.984648f, 0.150952f, -0.062500f,
-1.124351f, 0.147036f, -0.062500f,
-1.235248f, 0.136407f, -0.062500f,
-1.316052f, 0.115709f, -0.062500f,
-1.365477f, 0.081585f, -0.062500f,
-1.382239f, 0.030678f, -0.062500f,
-1.362563f, -0.033905f, 0.000000f,
-1.335942f, -0.110988f, 0.000000f,
-1.289877f, -0.194322f, 0.000000f,
-1.222979f, -0.277655f, 0.000000f,
-1.133859f, -0.354739f, 0.000000f,
-1.021127f, -0.419322f, 0.000000f,
-1.373219f, -0.037332f, 0.062500f,
-1.345270f, -0.116647f, 0.062500f,
-1.297053f, -0.201440f, 0.062500f,
-1.227232f, -0.285886f, 0.062500f,
-1.134467f, -0.364159f, 0.062500f,
-1.017424f, -0.430433f, 0.062500f,
-1.399861f, -0.045900f, 0.100000f,
-1.368590f, -0.130793f, 0.100000f,
-1.314993f, -0.219235f, 0.100000f,
-1.237862f, -0.306462f, 0.100000f,
-1.135989f, -0.387709f, 0.100000f,
-1.008164f, -0.458211f, 0.100000f,
-1.434495f, -0.057039f, 0.112500f,
-1.398905f, -0.149183f, 0.112500f,
-1.338315f, -0.242369f, 0.112500f,
-1.251683f, -0.333211f, 0.112500f,
-1.137967f, -0.418324f, 0.112500f,
-0.996127f, -0.494322f, 0.112500f,
-1.469130f, -0.068177f, 0.100000f,
-1.429221f, -0.167573f, 0.100000f,
-1.361637f, -0.265502f, 0.100000f,
-1.265503f, -0.359960f, 0.100000f,
-1.139946f, -0.448939f, 0.100000f,
-0.984090f, -0.530433f, 0.100000f,
-1.495772f, -0.076745f, 0.062500f,
-1.452540f, -0.181719f, 0.062500f,
-1.379576f, -0.283298f, 0.062500f,
-1.276134f, -0.380536f, 0.062500f,
-1.141468f, -0.472489f, 0.062500f,
-0.974831f, -0.558211f, 0.062500f,
-1.506428f, -0.080173f, 0.000000f,
-1.461868f, -0.187377f, 0.000000f,
-1.386752f, -0.290416f, 0.000000f,
-1.280387f, -0.388766f, 0.000000f,
-1.142076f, -0.481909f, 0.000000f,
-0.971127f, -0.569322f, 0.000000f,
-1.495772f, -0.076745f, -0.062500f,
-1.452540f, -0.181719f, -0.062500f,
-1.379576f, -0.283298f, -0.062500f,
-1.276134f, -0.380536f, -0.062500f,
-1.141468f, -0.472489f, -0.062500f,
-0.974831f, -0.558211f, -0.062500f,
-1.469130f, -0.068177f, -0.100000f,
-1.429221f, -0.167573f, -0.100000f,
-1.361637f, -0.265502f, -0.100000f,
-1.265503f, -0.359960f, -0.100000f,
-1.139946f, -0.448939f, -0.100000f,
-0.984090f, -0.530433f, -0.100000f,
-1.434495f, -0.057039f, -0.112500f,
-1.398905f, -0.149183f, -0.112500f,
-1.338315f, -0.242369f, -0.112500f,
-1.251683f, -0.333211f, -0.112500f,
-1.137967f, -0.418324f, -0.112500f,
-0.996127f, -0.494322f, -0.112500f,
-1.399861f, -0.045900f, -0.100000f,
-1.368590f, -0.130793f, -0.100000f,
-1.314993f, -0.219235f, -0.100000f,
-1.237862f, -0.306462f, -0.100000f,
-1.135989f, -0.387709f, -0.100000f,
-1.008164f, -0.458211f, -0.100000f,
-1.373219f, -0.037332f, -0.062500f,
-1.345270f, -0.116647f, -0.062500f,
-1.297053f, -0.201440f, -0.062500f,
-1.227232f, -0.285886f, -0.062500f,
-1.134467f, -0.364159f, -0.062500f,
-1.017424f, -0.430433f, -0.062500f,
0.828873f, -0.156822f, 0.000000f,
1.008271f, -0.131127f, 0.000000f,
1.114058f, -0.063766f, 0.000000f,
1.172623f, 0.030678f, 0.000000f,
1.210354f, 0.137623f, 0.000000f,
1.253641f, 0.242484f, 0.000000f,
1.328873f, 0.330678f, 0.000000f,
0.828873f, -0.187377f, 0.137500f,
1.015061f, -0.156719f, 0.131173f,
1.123935f, -0.083314f, 0.115355f,
1.183734f, 0.017484f, 0.094792f,
1.222700f, 0.130318f, 0.074228f,
1.269073f, 0.239835f, 0.058411f,
1.351095f, 0.330678f, 0.052083f,
0.828873f, -0.263766f, 0.220000f,
1.032036f, -0.220698f, 0.209877f,
1.148626f, -0.132182f, 0.184568f,
1.211512f, -0.015502f, 0.151667f,
1.253564f, 0.112057f, 0.118765f,
1.307654f, 0.233212f, 0.093457f,
1.406651f, 0.330678f, 0.083333f,
0.828873f, -0.363072f, 0.247500f,
1.054104f, -0.303870f, 0.236111f,
1.180725f, -0.195711f, 0.207639f,
1.247623f, -0.058384f, 0.170625f,
1.293688f, 0.088317f, 0.133611f,
1.357808f, 0.224602f, 0.105139f,
1.478873f, 0.330678f, 0.093750f,
0.828873f, -0.462377f, 0.220000f,
1.076172f, -0.387043f, 0.209877f,
1.212823f, -0.259240f, 0.184568f,
1.283734f, -0.101266f, 0.151667f,
1.333811f, 0.064577f, 0.118765f,
1.407962f, 0.215992f, 0.093457f,
1.551095f, 0.330678f, 0.083333f,
0.828873f, -0.538766f, 0.137500f,
1.093148f, -0.451022f, 0.131173f,
1.237515f, -0.308108f, 0.115355f,
1.311512f, -0.134252f, 0.094792f,
1.364675f, 0.046316f, 0.074228f,
1.446543f, 0.209369f, 0.058410f,
1.606651f, 0.330678f, 0.052083f,
0.828873f, -0.569322f, 0.000000f,
1.099938f, -0.476614f, 0.000000f,
1.247391f, -0.327655f, 0.000000f,
1.322623f, -0.147447f, 0.000000f,
1.377021f, 0.039012f, 0.000000f,
1.461975f, 0.206720f, 0.000000f,
1.628873f, 0.330678f, 0.000000f,
0.828873f, -0.538766f, -0.137500f,
1.093148f, -0.451022f, -0.131173f,
1.237515f, -0.308108f, -0.115355f,
1.311512f, -0.134252f, -0.094792f,
1.364675f, 0.046316f, -0.074228f,
1.446543f, 0.209369f, -0.058410f,
1.606651f, 0.330678f, -0.052083f,
0.828873f, -0.462377f, -0.220000f,
1.076172f, -0.387043f, -0.209877f,
1.212823f, -0.259240f, -0.184568f,
1.283734f, -0.101266f, -0.151667f,
1.333811f, 0.064577f, -0.118765f,
1.407962f, 0.215992f, -0.093457f,
1.551095f, 0.330678f, -0.083333f,
0.828873f, -0.363072f, -0.247500f,
1.054104f, -0.303870f, -0.236111f,
1.180725f, -0.195711f, -0.207639f,
1.247623f, -0.058384f, -0.170625f,
1.293688f, 0.088317f, -0.133611f,
1.357808f, 0.224602f, -0.105139f,
1.478873f, 0.330678f, -0.093750f,
0.828873f, -0.263766f, -0.220000f,
1.032036f, -0.220698f, -0.209877f,
1.148626f, -0.132182f, -0.184568f,
1.211512f, -0.015502f, -0.151667f,
1.253564f, 0.112057f, -0.118765f,
1.307654f, 0.233212f, -0.093457f,
1.406651f, 0.330678f, -0.083333f,
0.828873f, -0.187377f, -0.137500f,
1.015061f, -0.156719f, -0.131173f,
1.123935f, -0.083314f, -0.115355f,
1.183734f, 0.017484f, -0.094792f,
1.222700f, 0.130318f, -0.074228f,
1.269073f, 0.239835f, -0.058410f,
1.351095f, 0.330678f, -0.052083f,
1.353410f, 0.346303f, 0.000000f,
1.375169f, 0.355678f, 0.000000f,
1.391373f, 0.358803f, 0.000000f,
1.399243f, 0.355678f, 0.000000f,
1.396003f, 0.346303f, 0.000000f,
1.378873f, 0.330678f, 0.000000f,
1.377077f, 0.346641f, 0.050540f,
1.398763f, 0.356295f, 0.046682f,
1.413711f, 0.359584f, 0.041667f,
1.419477f, 0.356450f, 0.036651f,
1.413617f, 0.346834f, 0.032793f,
1.393688f, 0.330678f, 0.031250f,
1.436244f, 0.347485f, 0.080864f,
1.457748f, 0.357839f, 0.074691f,
1.469556f, 0.361538f, 0.066667f,
1.470060f, 0.358379f, 0.058642f,
1.457652f, 0.348160f, 0.052469f,
1.430725f, 0.330678f, 0.050000f,
1.513161f, 0.348582f, 0.090972f,
1.534428f, 0.359845f, 0.084028f,
1.542154f, 0.364077f, 0.075000f,
1.535817f, 0.360886f, 0.065972f,
1.514897f, 0.349884f, 0.059028f,
1.478873f, 0.330678f, 0.056250f,
1.590078f, 0.349679f, 0.080864f,
1.611109f, 0.361851f, 0.074691f,
1.614753f, 0.366616f, 0.066667f,
1.601575f, 0.363394f, 0.058642f,
1.572143f, 0.351608f, 0.052469f,
1.527021f, 0.330678f, 0.050000f,
1.649245f, 0.350523f, 0.050540f,
1.670094f, 0.363394f, 0.046682f,
1.670597f, 0.368569f, 0.041667f,
1.652158f, 0.365323f, 0.036651f,
1.616178f, 0.352934f, 0.032793f,
1.564058f, 0.330678f, 0.031250f,
1.672912f, 0.350860f, 0.000000f,
1.693688f, 0.364011f, 0.000000f,
1.692935f, 0.369350f, 0.000000f,
1.672391f, 0.366095f, 0.000000f,
1.633792f, 0.353465f, 0.000000f,
1.578873f, 0.330678f, 0.000000f,
1.649245f, 0.350523f, -0.050540f,
1.670094f, 0.363394f, -0.046682f,
1.670597f, 0.368569f, -0.041667f,
1.652158f, 0.365323f, -0.036651f,
1.616178f, 0.352934f, -0.032793f,
1.564058f, 0.330678f, -0.031250f,
1.590078f, 0.349679f, -0.080864f,
1.611109f, 0.361851f, -0.074691f,
1.614753f, 0.366616f, -0.066667f,
1.601575f, 0.363394f, -0.058642f,
1.572143f, 0.351608f, -0.052469f,
1.527021f, 0.330678f, -0.050000f,
1.513161f, 0.348582f, -0.090972f,
1.534428f, 0.359845f, -0.084028f,
1.542154f, 0.364077f, -0.075000f,
1.535817f, 0.360886f, -0.065972f,
1.514897f, 0.349884f, -0.059028f,
1.478873f, 0.330678f, -0.056250f,
1.436244f, 0.347485f, -0.080864f,
1.457748f, 0.357839f, -0.074691f,
1.469556f, 0.361538f, -0.066667f,
1.470060f, 0.358379f, -0.058642f,
1.457652f, 0.348160f, -0.052469f,
1.430725f, 0.330678f, -0.050000f,
1.377077f, 0.346641f, -0.050540f,
1.398763f, 0.356295f, -0.046682f,
1.413711f, 0.359584f, -0.041667f,
1.419477f, 0.356450f, -0.036651f,
1.413617f, 0.346834f, -0.032793f,
1.393688f, 0.330678f, -0.031250f,
-0.021127f, 0.705678f, 0.000000f,
0.118225f, 0.694220f, 0.000000f,
0.160354f, 0.664011f, 0.000000f,
0.141373f, 0.621303f, 0.000000f,
0.097391f, 0.572345f, 0.000000f,
0.064521f, 0.523386f, 0.000000f,
0.078873f, 0.480678f, 0.000000f,
0.113346f, 0.694220f, 0.037539f,
0.154000f, 0.664011f, 0.048885f,
0.135681f, 0.621303f, 0.043764f,
0.093237f, 0.572345f, 0.031902f,
0.061512f, 0.523386f, 0.023022f,
0.075354f, 0.480678f, 0.026852f,
0.099515f, 0.694220f, 0.070966f,
0.135987f, 0.664011f, 0.092417f,
0.119549f, 0.621303f, 0.082741f,
0.081463f, 0.572345f, 0.060324f,
0.052990f, 0.523386f, 0.043553f,
0.065391f, 0.480678f, 0.050815f,
0.077943f, 0.694220f, 0.099070f,
0.107891f, 0.664011f, 0.129019f,
0.094388f, 0.621303f, 0.115516f,
0.063104f, 0.572345f, 0.084231f,
0.039709f, 0.523386f, 0.060836f,
0.049873f, 0.480678f, 0.071000f,
0.049838f, 0.694220f, 0.120642f,
0.071290f, 0.664011f, 0.157114f,
0.061614f, 0.621303f, 0.140676f,
0.039197f, 0.572345f, 0.102590f,
0.022426f, 0.523386f, 0.074117f,
0.029688f, 0.480678f, 0.086519f,
0.016412f, 0.694220f, 0.134473f,
0.027758f, 0.664011f, 0.175127f,
0.022637f, 0.621303f, 0.156808f,
0.010774f, 0.572345f, 0.114364f,
0.001895f, 0.523386f, 0.082639f,
0.005725f, 0.480678f, 0.096482f,
-0.021127f, 0.694220f, 0.139352f,
-0.021127f, 0.664011f, 0.181482f,
-0.021127f, 0.621303f, 0.162500f,
-0.021127f, 0.572345f, 0.118519f,
-0.021127f, 0.523386f, 0.085648f,
-0.021127f, 0.480678f, 0.100000f,
-0.058666f, 0.694220f, 0.134473f,
-0.070013f, 0.664011f, 0.175127f,
-0.064892f, 0.621303f, 0.156808f,
-0.053029f, 0.572345f, 0.114364f,
-0.044149f, 0.523386f, 0.082639f,
-0.047979f, 0.480678f, 0.096481f,
-0.092093f, 0.694220f, 0.120642f,
-0.113544f, 0.664011f, 0.157114f,
-0.103868f, 0.621303f, 0.140676f,
-0.081451f, 0.572345f, 0.102590f,
-0.064680f, 0.523386f, 0.074117f,
-0.071942f, 0.480678f, 0.086519f,
-0.120197f, 0.694220f, 0.099070f,
-0.150146f, 0.664011f, 0.129019f,
-0.136643f, 0.621303f, 0.115516f,
-0.105359f, 0.572345f, 0.084231f,
-0.081963f, 0.523386f, 0.060836f,
-0.092127f, 0.480678f, 0.071000f,
-0.141770f, 0.694220f, 0.070966f,
-0.178241f, 0.664011f, 0.092417f,
-0.161803f, 0.621303f, 0.082741f,
-0.123717f, 0.572345f, 0.060324f,
-0.095244f, 0.523386f, 0.043553f,
-0.107646f, 0.480678f, 0.050815f,
-0.155600f, 0.694220f, 0.037539f,
-0.196254f, 0.664011f, 0.048885f,
-0.177936f, 0.621303f, 0.043764f,
-0.135491f, 0.572345f, 0.031902f,
-0.103767f, 0.523386f, 0.023022f,
-0.117609f, 0.480678f, 0.026852f,
-0.160479f, 0.694220f, 0.000000f,
-0.202609f, 0.664011f, 0.000000f,
-0.183627f, 0.621303f, 0.000000f,
-0.139646f, 0.572345f, 0.000000f,
-0.106775f, 0.523386f, 0.000000f,
-0.121127f, 0.480678f, 0.000000f,
-0.155600f, 0.694220f, -0.037539f,
-0.196254f, 0.664011f, -0.048885f,
-0.177936f, 0.621303f, -0.043764f,
-0.135491f, 0.572345f, -0.031902f,
-0.103767f, 0.523386f, -0.023022f,
-0.117609f, 0.480678f, -0.026852f,
-0.141770f, 0.694220f, -0.070966f,
-0.178241f, 0.664011f, -0.092417f,
-0.161803f, 0.621303f, -0.082741f,
-0.123717f, 0.572345f, -0.060324f,
-0.095244f, 0.523386f, -0.043553f,
-0.107646f, 0.480678f, -0.050815f,
-0.120197f, 0.694220f, -0.099070f,
-0.150146f, 0.664011f, -0.129019f,
-0.136643f, 0.621303f, -0.115516f,
-0.105359f, 0.572345f, -0.084231f,
-0.081963f, 0.523386f, -0.060836f,
-0.092127f, 0.480678f, -0.071000f,
-0.092093f, 0.694220f, -0.120642f,
-0.113544f, 0.664011f, -0.157114f,
-0.103868f, 0.621303f, -0.140676f,
-0.081451f, 0.572345f, -0.102590f,
-0.064680f, 0.523386f, -0.074117f,
-0.071942f, 0.480678f, -0.086519f,
-0.058666f, 0.694220f, -0.134473f,
-0.070013f, 0.664011f, -0.175127f,
-0.064892f, 0.621303f, -0.156808f,
-0.053029f, 0.572345f, -0.114364f,
-0.044149f, 0.523386f, -0.082639f,
-0.047979f, 0.480678f, -0.096482f,
-0.021127f, 0.694220f, -0.139352f,
-0.021127f, 0.664011f, -0.181482f,
-0.021127f, 0.621303f, -0.162500f,
-0.021127f, 0.572345f, -0.118519f,
-0.021127f, 0.523386f, -0.085648f,
-0.021127f, 0.480678f, -0.100000f,
0.016412f, 0.694220f, -0.134473f,
0.027758f, 0.664011f, -0.175127f,
0.022637f, 0.621303f, -0.156808f,
0.010774f, 0.572345f, -0.114364f,
0.001895f, 0.523386f, -0.082639f,
0.005725f, 0.480678f, -0.096481f,
0.049838f, 0.694220f, -0.120642f,
0.071290f, 0.664011f, -0.157114f,
0.061614f, 0.621303f, -0.140676f,
0.039197f, 0.572345f, -0.102590f,
0.022426f, 0.523386f, -0.074117f,
0.029688f, 0.480678f, -0.086519f,
0.077943f, 0.694220f, -0.099070f,
0.107891f, 0.664011f, -0.129019f,
0.094388f, 0.621303f, -0.115516f,
0.063104f, 0.572345f, -0.084231f,
0.039709f, 0.523386f, -0.060836f,
0.049873f, 0.480678f, -0.071000f,
0.099515f, 0.694220f, -0.070966f,
0.135987f, 0.664011f, -0.092417f,
0.119549f, 0.621303f, -0.082741f,
0.081463f, 0.572345f, -0.060324f,
0.052990f, 0.523386f, -0.043553f,
0.065391f, 0.480678f, -0.050815f,
0.113346f, 0.694220f, -0.037539f,
0.154000f, 0.664011f, -0.048885f,
0.135681f, 0.621303f, -0.043764f,
0.093237f, 0.572345f, -0.031902f,
0.061512f, 0.523386f, -0.023022f,
0.075354f, 0.480678f, -0.026852f,
0.154336f, 0.448734f, 0.000000f,
0.265910f, 0.425123f, 0.000000f,
0.391373f, 0.405678f, 0.000000f,
0.508502f, 0.386234f, 0.000000f,
0.595077f, 0.362623f, 0.000000f,
0.628873f, 0.330678f, 0.000000f,
0.148162f, 0.448734f, 0.047115f,
0.255810f, 0.425123f, 0.077075f,
0.376859f, 0.405678f, 0.110764f,
0.489867f, 0.386234f, 0.142215f,
0.573395f, 0.362623f, 0.165462f,
0.606002f, 0.330678f, 0.174537f,
0.130681f, 0.448734f, 0.089161f,
0.227213f, 0.425123f, 0.145857f,
0.335762f, 0.405678f, 0.209611f,
0.437101f, 0.386234f, 0.269130f,
0.512003f, 0.362623f, 0.313123f,
0.541243f, 0.330678f, 0.330296f,
0.103451f, 0.448734f, 0.124579f,
0.182669f, 0.425123f, 0.203796f,
0.271748f, 0.405678f, 0.292875f,
0.354910f, 0.386234f, 0.376037f,
0.416377f, 0.362623f, 0.437505f,
0.440373f, 0.330678f, 0.461500f,
0.068034f, 0.448734f, 0.151808f,
0.124730f, 0.425123f, 0.248340f,
0.188484f, 0.405678f, 0.356889f,
0.248003f, 0.386234f, 0.458228f,
0.291995f, 0.362623f, 0.533130f,
0.309169f, 0.330678f, 0.562370f,
0.025988f, 0.448734f, 0.169289f,
0.055948f, 0.425123f, 0.276938f,
0.089637f, 0.405678f, 0.397986f,
0.121088f, 0.386234f, 0.510995f,
0.144335f, 0.362623f, 0.594523f,
0.153410f, 0.330678f, 0.627130f,
-0.021127f, 0.448734f, 0.175463f,
-0.021127f, 0.425123f, 0.287037f,
-0.021127f, 0.405678f, 0.412500f,
-0.021127f, 0.386234f, 0.529630f,
-0.021127f, 0.362623f, 0.616204f,
-0.021127f, 0.330678f, 0.650000f,
-0.068242f, 0.448734f, 0.169289f,
-0.098202f, 0.425123f, 0.276938f,
-0.131891f, 0.405678f, 0.397986f,
-0.163343f, 0.386234f, 0.510995f,
-0.186589f, 0.362623f, 0.594523f,
-0.195664f, 0.330678f, 0.627130f,
-0.110288f, 0.448734f, 0.151808f,
-0.166985f, 0.425123f, 0.248340f,
-0.230738f, 0.405678f, 0.356889f,
-0.290258f, 0.386234f, 0.458228f,
-0.334250f, 0.362623f, 0.533130f,
-0.351424f, 0.330678f, 0.562370f,
-0.145706f, 0.448734f, 0.124579f,
-0.224924f, 0.425123f, 0.203796f,
-0.314002f, 0.405678f, 0.292875f,
-0.397164f, 0.386234f, 0.376037f,
-0.458632f, 0.362623f, 0.437505f,
-0.482627f, 0.330678f, 0.461500f,
-0.172935f, 0.448734f, 0.089161f,
-0.269467f, 0.425123f, 0.145857f,
-0.378016f, 0.405678f, 0.209611f,
-0.479355f, 0.386234f, 0.269130f,
-0.554258f, 0.362623f, 0.313123f,
-0.583498f, 0.330678f, 0.330296f,
-0.190416f, 0.448734f, 0.047115f,
-0.298065f, 0.425123f, 0.077075f,
-0.419113f, 0.405678f, 0.110764f,
-0.532122f, 0.386234f, 0.142215f,
-0.615650f, 0.362623f, 0.165462f,
-0.648257f, 0.330678f, 0.174537f,
-0.196590f, 0.448734f, 0.000000f,
-0.308164f, 0.425123f, 0.000000f,
-0.433627f, 0.405678f, 0.000000f,
-0.550757f, 0.386234f, 0.000000f,
-0.637331f, 0.362623f, 0.000000f,
-0.671127f, 0.330678f, 0.000000f,
-0.190416f, 0.448734f, -0.047115f,
-0.298065f, 0.425123f, -0.077075f,
-0.419113f, 0.405678f, -0.110764f,
-0.532122f, 0.386234f, -0.142215f,
-0.615650f, 0.362623f, -0.165462f,
-0.648257f, 0.330678f, -0.174537f,
-0.172935f, 0.448734f, -0.089161f,
-0.269467f, 0.425123f, -0.145857f,
-0.378016f, 0.405678f, -0.209611f,
-0.479355f, 0.386234f, -0.269130f,
-0.554258f, 0.362623f, -0.313123f,
-0.583498f, 0.330678f, -0.330296f,
-0.145706f, 0.448734f, -0.124579f,
-0.224924f, 0.425123f, -0.203796f,
-0.314002f, 0.405678f, -0.292875f,
-0.397164f, 0.386234f, -0.376037f,
-0.458632f, 0.362623f, -0.437505f,
-0.482627f, 0.330678f, -0.461500f,
-0.110288f, 0.448734f, -0.151808f,
-0.166985f, 0.425123f, -0.248340f,
-0.230738f, 0.405678f, -0.356889f,
-0.290258f, 0.386234f, -0.458228f,
-0.334250f, 0.362623f, -0.533130f,
-0.351424f, 0.330678f, -0.562370f,
-0.068242f, 0.448734f, -0.169289f,
-0.098202f, 0.425123f, -0.276938f,
-0.131891f, 0.405678f, -0.397986f,
-0.163343f, 0.386234f, -0.510995f,
-0.186589f, 0.362623f, -0.594523f,
-0.195664f, 0.330678f, -0.627130f,
-0.021127f, 0.448734f, -0.175463f,
-0.021127f, 0.425123f, -0.287037f,
-0.021127f, 0.405678f, -0.412500f,
-0.021127f, 0.386234f, -0.529630f,
-0.021127f, 0.362623f, -0.616204f,
-0.021127f, 0.330678f, -0.650000f,
0.025988f, 0.448734f, -0.169289f,
0.055948f, 0.425123f, -0.276938f,
0.089637f, 0.405678f, -0.397986f,
0.121088f, 0.386234f, -0.510995f,
0.144335f, 0.362623f, -0.594523f,
0.153410f, 0.330678f, -0.627130f,
0.068034f, 0.448734f, -0.151808f,
0.124730f, 0.425123f, -0.248340f,
0.188484f, 0.405678f, -0.356889f,
0.248003f, 0.386234f, -0.458228f,
0.291996f, 0.362623f, -0.533130f,
0.309169f, 0.330678f, -0.562370f,
0.103451f, 0.448734f, -0.124579f,
0.182669f, 0.425123f, -0.203796f,
0.271748f, 0.405678f, -0.292875f,
0.354910f, 0.386234f, -0.376037f,
0.416377f, 0.362623f, -0.437505f,
0.440373f, 0.330678f, -0.461500f,
0.130681f, 0.448734f, -0.089161f,
0.227213f, 0.425123f, -0.145857f,
0.335762f, 0.405678f, -0.209611f,
0.437101f, 0.386234f, -0.269130f,
0.512003f, 0.362623f, -0.313123f,
0.541243f, 0.330678f, -0.330296f,
0.148162f, 0.448734f, -0.047115f,
0.255810f, 0.425123f, -0.077075f,
0.376859f, 0.405678f, -0.110764f,
0.489867f, 0.386234f, -0.142215f,
0.573395f, 0.362623f, -0.165462f,
0.606002f, 0.330678f, -0.174537f,
};
static D3DXVECTOR3* teapotPositions = ( D3DXVECTOR3* )teapotPositionsFloats;
static float teapotNormalsfloats[NUMTEAPOTVERTICES*3] =
{
-0.945751f, -0.322256f, -0.041309f,
-0.992771f, -0.120019f, -0.001089f,
-0.842751f, 0.538169f, 0.012052f,
-0.083588f, 0.996288f, 0.020560f,
0.532170f, 0.846603f, 0.007614f,
0.779300f, 0.626641f, 0.003491f,
0.879896f, 0.475165f, 0.001103f,
-0.902413f, -0.322783f, -0.285416f,
-0.958558f, -0.120097f, -0.258348f,
-0.816875f, 0.538579f, -0.206514f,
-0.086190f, 0.996277f, -0.001604f,
0.511484f, 0.846942f, 0.145167f,
0.751363f, 0.627164f, 0.205227f,
0.849281f, 0.475682f, 0.229015f,
-0.797449f, -0.323303f, -0.509461f,
-0.858625f, -0.120328f, -0.498282f,
-0.735017f, 0.538957f, -0.411431f,
-0.082580f, 0.996294f, -0.024043f,
0.455735f, 0.847352f, 0.272581f,
0.671856f, 0.627868f, 0.392927f,
0.760399f, 0.476384f, 0.441420f,
-0.639341f, -0.323439f, -0.697589f,
-0.701183f, -0.120461f, -0.702731f,
-0.604040f, 0.539064f, -0.586980f,
-0.073399f, 0.996309f, -0.044511f,
0.369925f, 0.847499f, 0.380659f,
0.547722f, 0.628143f, 0.552663f,
0.620826f, 0.476660f, 0.622391f,
-0.437782f, -0.323142f, -0.839003f,
-0.496373f, -0.120437f, -0.859715f,
-0.432443f, 0.538876f, -0.722914f,
-0.059523f, 0.996312f, -0.061801f,
0.259388f, 0.847326f, 0.463418f,
0.386844f, 0.627880f, 0.675366f,
0.439492f, 0.476398f, 0.761506f,
-0.204681f, -0.322547f, -0.924159f,
-0.256209f, -0.120257f, -0.959112f,
-0.230122f, 0.538458f, -0.810621f,
-0.041668f, 0.996304f, -0.075119f,
0.130300f, 0.846904f, 0.515534f,
0.198391f, 0.627182f, 0.753183f,
0.226852f, 0.475703f, 0.849850f,
0.035941f, -0.330214f, -0.943221f,
-0.001376f, -0.125569f, -0.992084f,
-0.012701f, 0.535792f, -0.844254f,
-0.020672f, 0.996343f, -0.082901f,
-0.007571f, 0.846427f, 0.532451f,
-0.003482f, 0.626608f, 0.779327f,
-0.001103f, 0.475165f, 0.879896f,
0.269574f, -0.386954f, -0.881814f,
0.249993f, -0.181783f, -0.951030f,
0.211872f, 0.499984f, -0.839718f,
0.002768f, 0.995768f, -0.091859f,
-0.146446f, 0.844150f, 0.515718f,
-0.205497f, 0.625909f, 0.752335f,
-0.229034f, 0.475536f, 0.849358f,
0.482854f, -0.445924f, -0.753661f,
0.483883f, -0.261599f, -0.835118f,
0.442338f, 0.434016f, -0.784836f,
0.036680f, 0.993502f, -0.107746f,
-0.278510f, 0.839949f, 0.465746f,
-0.394390f, 0.624142f, 0.674465f,
-0.441541f, 0.475913f, 0.760624f,
0.669165f, -0.453044f, -0.589041f,
0.686401f, -0.287530f, -0.667967f,
0.643212f, 0.404496f, -0.650124f,
0.074604f, 0.991460f, -0.106959f,
-0.391289f, 0.837987f, 0.380356f,
-0.555484f, 0.623132f, 0.550586f,
-0.622636f, 0.476008f, 0.621080f,
0.821788f, -0.407716f, -0.398036f,
0.849894f, -0.244430f, -0.466834f,
0.778095f, 0.435804f, -0.452374f,
0.095458f, 0.992115f, -0.081218f,
-0.473659f, 0.839871f, 0.265074f,
-0.678265f, 0.623724f, 0.388490f,
-0.761768f, 0.475842f, 0.439641f,
0.919150f, -0.348512f, -0.183583f,
0.956218f, -0.171139f, -0.237398f,
0.838823f, 0.493898f, -0.229000f,
0.094322f, 0.994404f, -0.047578f,
-0.520640f, 0.843596f, 0.131452f,
-0.754753f, 0.625180f, 0.198741f,
-0.849997f, 0.475426f, 0.226882f,
0.945537f, -0.322183f, 0.046446f,
0.991881f, -0.126966f, 0.007216f,
0.847572f, 0.530605f, -0.008996f,
0.087879f, 0.995918f, -0.020615f,
-0.533063f, 0.846041f, -0.007711f,
-0.779612f, 0.626253f, -0.003532f,
-0.879926f, 0.475109f, -0.001109f,
0.902413f, -0.322783f, 0.285416f,
0.958558f, -0.120097f, 0.258348f,
0.816875f, 0.538579f, 0.206514f,
0.086190f, 0.996277f, 0.001604f,
-0.511484f, 0.846942f, -0.145167f,
-0.751363f, 0.627164f, -0.205227f,
-0.849281f, 0.475682f, -0.229015f,
0.797449f, -0.323303f, 0.509461f,
0.858625f, -0.120328f, 0.498282f,
0.735017f, 0.538957f, 0.411431f,
0.082580f, 0.996294f, 0.024043f,
-0.455735f, 0.847352f, -0.272581f,
-0.671856f, 0.627868f, -0.392927f,
-0.760399f, 0.476384f, -0.441420f,
0.639341f, -0.323439f, 0.697589f,
0.701183f, -0.120461f, 0.702731f,
0.604040f, 0.539064f, 0.586980f,
0.073399f, 0.996309f, 0.044511f,
-0.369925f, 0.847499f, -0.380659f,
-0.547722f, 0.628143f, -0.552663f,
-0.620826f, 0.476660f, -0.622391f,
0.437782f, -0.323142f, 0.839003f,
0.496373f, -0.120437f, 0.859715f,
0.432443f, 0.538876f, 0.722914f,
0.059523f, 0.996312f, 0.061801f,
-0.259388f, 0.847326f, -0.463418f,
-0.386844f, 0.627880f, -0.675366f,
-0.439492f, 0.476398f, -0.761506f,
0.204681f, -0.322547f, 0.924159f,
0.256209f, -0.120257f, 0.959112f,
0.230122f, 0.538458f, 0.810621f,
0.041668f, 0.996304f, 0.075119f,
-0.130300f, 0.846904f, -0.515534f,
-0.198391f, 0.627182f, -0.753183f,
-0.226852f, 0.475703f, -0.849850f,
-0.041309f, -0.322256f, 0.945751f,
-0.001089f, -0.120019f, 0.992771f,
0.012052f, 0.538169f, 0.842751f,
0.020560f, 0.996288f, 0.083588f,
0.007614f, 0.846603f, -0.532170f,
0.003491f, 0.626641f, -0.779300f,
0.001103f, 0.475165f, -0.879896f,
-0.285416f, -0.322783f, 0.902413f,
-0.258348f, -0.120097f, 0.958558f,
-0.206514f, 0.538579f, 0.816875f,
-0.001604f, 0.996277f, 0.086190f,
0.145167f, 0.846942f, -0.511484f,
0.205227f, 0.627164f, -0.751363f,
0.229015f, 0.475682f, -0.849281f,
-0.509461f, -0.323303f, 0.797449f,
-0.498282f, -0.120328f, 0.858625f,
-0.411431f, 0.538957f, 0.735017f,
-0.024043f, 0.996294f, 0.082580f,
0.272581f, 0.847352f, -0.455735f,
0.392927f, 0.627868f, -0.671856f,
0.441420f, 0.476384f, -0.760399f,
-0.697589f, -0.323439f, 0.639341f,
-0.702731f, -0.120461f, 0.701183f,
-0.586980f, 0.539064f, 0.604040f,
-0.044511f, 0.996309f, 0.073399f,
0.380659f, 0.847499f, -0.369925f,
0.552663f, 0.628143f, -0.547722f,
0.622391f, 0.476660f, -0.620826f,
-0.839003f, -0.323142f, 0.437782f,
-0.859715f, -0.120437f, 0.496373f,
-0.722914f, 0.538876f, 0.432443f,
-0.061801f, 0.996312f, 0.059523f,
0.463418f, 0.847326f, -0.259388f,
0.675366f, 0.627880f, -0.386844f,
0.761506f, 0.476398f, -0.439492f,
-0.924159f, -0.322547f, 0.204681f,
-0.959112f, -0.120257f, 0.256209f,
-0.810621f, 0.538458f, 0.230122f,
-0.075119f, 0.996304f, 0.041668f,
0.515534f, 0.846904f, -0.130300f,
0.753183f, 0.627182f, -0.198391f,
0.849850f, 0.475703f, -0.226852f,
0.908180f, 0.418579f, 0.000170f,
0.920061f, 0.391776f, 0.000335f,
0.939254f, 0.343222f, 0.000478f,
0.963807f, 0.266599f, 0.000552f,
0.988261f, 0.152772f, 0.000449f,
0.998933f, -0.046187f, -0.000262f,
0.876892f, 0.419073f, 0.235451f,
0.888349f, 0.392247f, 0.238702f,
0.906891f, 0.343648f, 0.243832f,
0.930644f, 0.266938f, 0.250291f,
0.954351f, 0.152959f, 0.256551f,
0.964867f, -0.046304f, 0.258627f,
0.785456f, 0.419734f, 0.454843f,
0.795707f, 0.392883f, 0.460971f,
0.812334f, 0.344228f, 0.470766f,
0.833667f, 0.267414f, 0.483207f,
0.855012f, 0.153250f, 0.495448f,
0.864663f, -0.046372f, 0.500207f,
0.641599f, 0.419990f, 0.641841f,
0.649935f, 0.393130f, 0.650410f,
0.663494f, 0.344457f, 0.664173f,
0.680925f, 0.267607f, 0.681710f,
0.698421f, 0.153377f, 0.699059f,
0.706532f, -0.046369f, 0.706160f,
0.454545f, 0.419737f, 0.785627f,
0.460384f, 0.392890f, 0.796043f,
0.469929f, 0.344241f, 0.812813f,
0.482239f, 0.267436f, 0.834220f,
0.494660f, 0.153286f, 0.855462f,
0.500666f, -0.046300f, 0.864402f,
0.235117f, 0.419078f, 0.876980f,
0.238044f, 0.392258f, 0.888521f,
0.242894f, 0.343667f, 0.907136f,
0.249206f, 0.266970f, 0.930926f,
0.255668f, 0.153012f, 0.954579f,
0.259142f, -0.046198f, 0.964734f,
-0.000170f, 0.418579f, 0.908181f,
-0.000335f, 0.391776f, 0.920061f,
-0.000478f, 0.343222f, 0.939254f,
-0.000552f, 0.266599f, 0.963807f,
-0.000449f, 0.152772f, 0.988261f,
0.000262f, -0.046187f, 0.998933f,
-0.235451f, 0.419073f, 0.876892f,
-0.238702f, 0.392247f, 0.888349f,
-0.243832f, 0.343648f, 0.906891f,
-0.250291f, 0.266938f, 0.930644f,
-0.256551f, 0.152959f, 0.954351f,
-0.258627f, -0.046304f, 0.964867f,
-0.454843f, 0.419734f, 0.785456f,
-0.460971f, 0.392883f, 0.795707f,
-0.470766f, 0.344228f, 0.812334f,
-0.483207f, 0.267414f, 0.833667f,
-0.495448f, 0.153250f, 0.855012f,
-0.500207f, -0.046372f, 0.864663f,
-0.641841f, 0.419990f, 0.641599f,
-0.650410f, 0.393130f, 0.649935f,
-0.664173f, 0.344457f, 0.663494f,
-0.681710f, 0.267607f, 0.680925f,
-0.699059f, 0.153377f, 0.698421f,
-0.706160f, -0.046369f, 0.706532f,
-0.785627f, 0.419737f, 0.454545f,
-0.796043f, 0.392890f, 0.460384f,
-0.812813f, 0.344241f, 0.469929f,
-0.834220f, 0.267436f, 0.482239f,
-0.855462f, 0.153286f, 0.494660f,
-0.864402f, -0.046300f, 0.500666f,
-0.876980f, 0.419078f, 0.235117f,
-0.888521f, 0.392258f, 0.238044f,
-0.907136f, 0.343667f, 0.242894f,
-0.930926f, 0.266970f, 0.249206f,
-0.954579f, 0.153012f, 0.255668f,
-0.964734f, -0.046198f, 0.259142f,
-0.908181f, 0.418579f, -0.000170f,
-0.920061f, 0.391776f, -0.000335f,
-0.939254f, 0.343222f, -0.000478f,
-0.963807f, 0.266599f, -0.000552f,
-0.988261f, 0.152772f, -0.000449f,
-0.998933f, -0.046187f, 0.000262f,
-0.876892f, 0.419073f, -0.235451f,
-0.888349f, 0.392247f, -0.238702f,
-0.906891f, 0.343648f, -0.243832f,
-0.930644f, 0.266938f, -0.250291f,
-0.954351f, 0.152959f, -0.256551f,
-0.964867f, -0.046304f, -0.258627f,
-0.785456f, 0.419734f, -0.454843f,
-0.795707f, 0.392883f, -0.460971f,
-0.812334f, 0.344228f, -0.470766f,
-0.833667f, 0.267414f, -0.483207f,
-0.855012f, 0.153250f, -0.495448f,
-0.864663f, -0.046372f, -0.500207f,
-0.641599f, 0.419990f, -0.641841f,
-0.649935f, 0.393130f, -0.650410f,
-0.663494f, 0.344457f, -0.664173f,
-0.680925f, 0.267607f, -0.681710f,
-0.698421f, 0.153377f, -0.699059f,
-0.706532f, -0.046369f, -0.706160f,
-0.454545f, 0.419737f, -0.785627f,
-0.460384f, 0.392890f, -0.796043f,
-0.469929f, 0.344241f, -0.812813f,
-0.482239f, 0.267436f, -0.834220f,
-0.494660f, 0.153286f, -0.855462f,
-0.500666f, -0.046300f, -0.864402f,
-0.235117f, 0.419078f, -0.876980f,
-0.238044f, 0.392258f, -0.888521f,
-0.242894f, 0.343667f, -0.907136f,
-0.249206f, 0.266970f, -0.930926f,
-0.255668f, 0.153012f, -0.954579f,
-0.259142f, -0.046198f, -0.964734f,
0.000170f, 0.418579f, -0.908181f,
0.000335f, 0.391776f, -0.920061f,
0.000478f, 0.343222f, -0.939254f,
0.000552f, 0.266599f, -0.963807f,
0.000449f, 0.152772f, -0.988261f,
-0.000262f, -0.046187f, -0.998933f,
0.235451f, 0.419073f, -0.876892f,
0.238702f, 0.392247f, -0.888349f,
0.243832f, 0.343648f, -0.906891f,
0.250291f, 0.266938f, -0.930644f,
0.256551f, 0.152959f, -0.954351f,
0.258627f, -0.046304f, -0.964867f,
0.454843f, 0.419734f, -0.785456f,
0.460971f, 0.392883f, -0.795707f,
0.470766f, 0.344228f, -0.812334f,
0.483207f, 0.267414f, -0.833667f,
0.495448f, 0.153250f, -0.855012f,
0.500207f, -0.046372f, -0.864663f,
0.641841f, 0.419990f, -0.641599f,
0.650410f, 0.393130f, -0.649935f,
0.664173f, 0.344457f, -0.663494f,
0.681710f, 0.267607f, -0.680925f,
0.699059f, 0.153377f, -0.698421f,
0.706160f, -0.046369f, -0.706532f,
0.785627f, 0.419737f, -0.454545f,
0.796043f, 0.392890f, -0.460384f,
0.812813f, 0.344241f, -0.469929f,
0.834220f, 0.267436f, -0.482239f,
0.855462f, 0.153286f, -0.494660f,
0.864402f, -0.046300f, -0.500666f,
0.876980f, 0.419078f, -0.235117f,
0.888521f, 0.392258f, -0.238044f,
0.907136f, 0.343667f, -0.242894f,
0.930926f, 0.266970f, -0.249206f,
0.954579f, 0.153012f, -0.255668f,
0.964734f, -0.046198f, -0.259142f,
0.943833f, -0.330414f, -0.002283f,
0.821403f, -0.570341f, -0.002745f,
0.709541f, -0.704661f, -0.001958f,
0.652305f, -0.757957f, -0.000466f,
0.728669f, -0.684856f, 0.003576f,
0.889124f, -0.457656f, 0.003164f,
0.912037f, -0.330868f, 0.242313f,
0.793697f, -0.570897f, 0.210051f,
0.685340f, -0.705168f, 0.181787f,
0.629635f, -0.758420f, 0.168401f,
0.702387f, -0.685364f, 0.192168f,
0.857690f, -0.458122f, 0.233435f,
0.817716f, -0.331385f, 0.470664f,
0.711528f, -0.571608f, 0.408646f,
0.614071f, -0.705839f, 0.353140f,
0.563713f, -0.759034f, 0.325721f,
0.627891f, -0.686037f, 0.367569f,
0.767411f, -0.458787f, 0.447879f,
0.668728f, -0.331557f, 0.665486f,
0.582010f, -0.571874f, 0.578122f,
0.502096f, -0.706097f, 0.499327f,
0.460496f, -0.759271f, 0.459838f,
0.511760f, -0.686297f, 0.516816f,
0.625950f, -0.459060f, 0.630437f,
0.474660f, -0.331321f, 0.815429f,
0.413434f, -0.571590f, 0.708771f,
0.356547f, -0.705839f, 0.612100f,
0.326530f, -0.759035f, 0.563244f,
0.361346f, -0.686040f, 0.631489f,
0.442349f, -0.458832f, 0.770585f,
0.246794f, -0.330773f, 0.910869f,
0.215429f, -0.570870f, 0.792274f,
0.185619f, -0.705168f, 0.684313f,
0.169311f, -0.758421f, 0.629390f,
0.185170f, -0.685368f, 0.704260f,
0.227231f, -0.458188f, 0.859319f,
0.002283f, -0.330414f, 0.943833f,
0.002745f, -0.570341f, 0.821403f,
0.001958f, -0.704661f, 0.709541f,
0.000466f, -0.757957f, 0.652305f,
-0.003576f, -0.684856f, 0.728669f,
-0.003164f, -0.457656f, 0.889124f,
-0.242313f, -0.330868f, 0.912037f,
-0.210051f, -0.570897f, 0.793697f,
-0.181787f, -0.705168f, 0.685340f,
-0.168401f, -0.758420f, 0.629635f,
-0.192168f, -0.685364f, 0.702387f,
-0.233435f, -0.458122f, 0.857690f,
-0.470664f, -0.331385f, 0.817716f,
-0.408646f, -0.571608f, 0.711528f,
-0.353140f, -0.705839f, 0.614071f,
-0.325721f, -0.759034f, 0.563713f,
-0.367569f, -0.686037f, 0.627891f,
-0.447879f, -0.458787f, 0.767411f,
-0.665486f, -0.331557f, 0.668728f,
-0.578122f, -0.571874f, 0.582010f,
-0.499327f, -0.706097f, 0.502096f,
-0.459838f, -0.759271f, 0.460496f,
-0.516816f, -0.686297f, 0.511760f,
-0.630437f, -0.459060f, 0.625950f,
-0.815429f, -0.331321f, 0.474660f,
-0.708771f, -0.571590f, 0.413434f,
-0.612100f, -0.705839f, 0.356547f,
-0.563244f, -0.759035f, 0.326530f,
-0.631489f, -0.686040f, 0.361346f,
-0.770585f, -0.458832f, 0.442349f,
-0.910869f, -0.330773f, 0.246794f,
-0.792274f, -0.570870f, 0.215429f,
-0.684313f, -0.705168f, 0.185619f,
-0.629390f, -0.758421f, 0.169311f,
-0.704260f, -0.685368f, 0.185170f,
-0.859319f, -0.458188f, 0.227231f,
-0.943833f, -0.330414f, 0.002283f,
-0.821403f, -0.570341f, 0.002745f,
-0.709541f, -0.704661f, 0.001958f,
-0.652305f, -0.757957f, 0.000466f,
-0.728669f, -0.684856f, -0.003576f,
-0.889124f, -0.457656f, -0.003164f,
-0.912037f, -0.330868f, -0.242313f,
-0.793697f, -0.570897f, -0.210051f,
-0.685340f, -0.705168f, -0.181787f,
-0.629635f, -0.758420f, -0.168401f,
-0.702387f, -0.685364f, -0.192168f,
-0.857690f, -0.458122f, -0.233435f,
-0.817716f, -0.331385f, -0.470664f,
-0.711528f, -0.571608f, -0.408646f,
-0.614071f, -0.705839f, -0.353140f,
-0.563713f, -0.759034f, -0.325721f,
-0.627891f, -0.686037f, -0.367569f,
-0.767411f, -0.458787f, -0.447879f,
-0.668728f, -0.331557f, -0.665486f,
-0.582010f, -0.571874f, -0.578122f,
-0.502096f, -0.706097f, -0.499327f,
-0.460496f, -0.759271f, -0.459838f,
-0.511760f, -0.686297f, -0.516816f,
-0.625950f, -0.459060f, -0.630437f,
-0.474660f, -0.331321f, -0.815429f,
-0.413434f, -0.571590f, -0.708771f,
-0.356547f, -0.705839f, -0.612100f,
-0.326530f, -0.759035f, -0.563244f,
-0.361346f, -0.686040f, -0.631489f,
-0.442349f, -0.458832f, -0.770585f,
-0.246794f, -0.330773f, -0.910869f,
-0.215429f, -0.570870f, -0.792274f,
-0.185619f, -0.705168f, -0.684313f,
-0.169311f, -0.758421f, -0.629390f,
-0.185170f, -0.685368f, -0.704260f,
-0.227231f, -0.458188f, -0.859319f,
-0.002283f, -0.330414f, -0.943833f,
-0.002745f, -0.570341f, -0.821403f,
-0.001958f, -0.704661f, -0.709541f,
-0.000466f, -0.757957f, -0.652305f,
0.003576f, -0.684856f, -0.728669f,
0.003164f, -0.457656f, -0.889124f,
0.242313f, -0.330868f, -0.912037f,
0.210051f, -0.570897f, -0.793697f,
0.181787f, -0.705168f, -0.685340f,
0.168401f, -0.758420f, -0.629635f,
0.192168f, -0.685364f, -0.702387f,
0.233435f, -0.458122f, -0.857690f,
0.470664f, -0.331385f, -0.817716f,
0.408646f, -0.571608f, -0.711528f,
0.353140f, -0.705839f, -0.614071f,
0.325721f, -0.759034f, -0.563713f,
0.367569f, -0.686037f, -0.627891f,
0.447879f, -0.458787f, -0.767411f,
0.665486f, -0.331557f, -0.668728f,
0.578122f, -0.571874f, -0.582010f,
0.499327f, -0.706097f, -0.502096f,
0.459838f, -0.759271f, -0.460496f,
0.516816f, -0.686297f, -0.511760f,
0.630437f, -0.459060f, -0.625950f,
0.815429f, -0.331321f, -0.474660f,
0.708771f, -0.571590f, -0.413434f,
0.612100f, -0.705839f, -0.356547f,
0.563244f, -0.759035f, -0.326530f,
0.631489f, -0.686040f, -0.361346f,
0.770585f, -0.458832f, -0.442349f,
0.910869f, -0.330773f, -0.246794f,
0.792274f, -0.570870f, -0.215429f,
0.684313f, -0.705168f, -0.185619f,
0.629390f, -0.758421f, -0.169311f,
0.704260f, -0.685368f, -0.185170f,
0.859319f, -0.458188f, -0.227231f,
0.777345f, -0.628990f, -0.010332f,
0.361793f, -0.932236f, -0.006477f,
0.152402f, -0.988315f, -0.002559f,
0.066422f, -0.997791f, -0.001190f,
0.027401f, -0.999624f, -0.001027f,
0.000000f, -1.000000f, 0.000000f,
0.753154f, -0.629440f, 0.191218f,
0.350766f, -0.932386f, 0.087291f,
0.147688f, -0.988344f, 0.036926f,
0.064386f, -0.997796f, 0.016021f,
0.026706f, -0.999625f, 0.006087f,
0.677297f, -0.629962f, 0.380023f,
0.315543f, -0.932612f, 0.175124f,
0.132774f, -0.988389f, 0.073881f,
0.057900f, -0.997805f, 0.032133f,
0.024157f, -0.999626f, 0.012794f,
0.556310f, -0.630147f, 0.541695f,
0.259523f, -0.932707f, 0.250409f,
0.109137f, -0.988408f, 0.105540f,
0.047613f, -0.997809f, 0.045941f,
0.020018f, -0.999627f, 0.018575f,
0.398014f, -0.629932f, 0.666911f,
0.186318f, -0.932635f, 0.308995f,
0.078296f, -0.988394f, 0.130182f,
0.034185f, -0.997806f, 0.056696f,
0.014564f, -0.999627f, 0.023117f,
0.211443f, -0.629395f, 0.747766f,
0.099921f, -0.932420f, 0.347287f,
0.041912f, -0.988352f, 0.146303f,
0.018338f, -0.997798f, 0.063741f,
0.008087f, -0.999625f, 0.026150f,
0.010332f, -0.628990f, 0.777345f,
0.006477f, -0.932236f, 0.361793f,
0.002559f, -0.988315f, 0.152402f,
0.001190f, -0.997791f, 0.066422f,
0.001027f, -0.999624f, 0.027401f,
-0.191218f, -0.629440f, 0.753154f,
-0.087291f, -0.932386f, 0.350766f,
-0.036926f, -0.988344f, 0.147688f,
-0.016021f, -0.997796f, 0.064386f,
-0.006087f, -0.999625f, 0.026706f,
-0.380023f, -0.629962f, 0.677297f,
-0.175124f, -0.932612f, 0.315543f,
-0.073881f, -0.988389f, 0.132774f,
-0.032133f, -0.997805f, 0.057900f,
-0.012794f, -0.999626f, 0.024157f,
-0.541695f, -0.630147f, 0.556310f,
-0.250409f, -0.932707f, 0.259523f,
-0.105540f, -0.988408f, 0.109137f,
-0.045941f, -0.997809f, 0.047613f,
-0.018575f, -0.999627f, 0.020018f,
-0.666911f, -0.629932f, 0.398014f,
-0.308995f, -0.932635f, 0.186318f,
-0.130182f, -0.988394f, 0.078296f,
-0.056696f, -0.997806f, 0.034185f,
-0.023117f, -0.999627f, 0.014564f,
-0.747766f, -0.629395f, 0.211443f,
-0.347287f, -0.932420f, 0.099921f,
-0.146303f, -0.988352f, 0.041912f,
-0.063741f, -0.997798f, 0.018338f,
-0.026150f, -0.999625f, 0.008087f,
-0.777345f, -0.628990f, 0.010332f,
-0.361793f, -0.932236f, 0.006477f,
-0.152402f, -0.988315f, 0.002559f,
-0.066422f, -0.997791f, 0.001190f,
-0.027401f, -0.999624f, 0.001027f,
-0.753154f, -0.629440f, -0.191218f,
-0.350766f, -0.932386f, -0.087291f,
-0.147688f, -0.988344f, -0.036926f,
-0.064386f, -0.997796f, -0.016021f,
-0.026706f, -0.999625f, -0.006087f,
-0.677297f, -0.629962f, -0.380023f,
-0.315543f, -0.932612f, -0.175124f,
-0.132774f, -0.988389f, -0.073881f,
-0.057900f, -0.997805f, -0.032133f,
-0.024157f, -0.999626f, -0.012794f,
-0.556310f, -0.630147f, -0.541695f,
-0.259523f, -0.932707f, -0.250409f,
-0.109137f, -0.988408f, -0.105540f,
-0.047613f, -0.997809f, -0.045941f,
-0.020018f, -0.999627f, -0.018575f,
-0.398014f, -0.629932f, -0.666911f,
-0.186318f, -0.932635f, -0.308995f,
-0.078296f, -0.988394f, -0.130182f,
-0.034185f, -0.997806f, -0.056696f,
-0.014564f, -0.999627f, -0.023117f,
-0.211443f, -0.629395f, -0.747766f,
-0.099921f, -0.932420f, -0.347287f,
-0.041912f, -0.988352f, -0.146303f,
-0.018338f, -0.997798f, -0.063741f,
-0.008087f, -0.999625f, -0.026150f,
-0.010332f, -0.628990f, -0.777345f,
-0.006477f, -0.932236f, -0.361793f,
-0.002559f, -0.988315f, -0.152402f,
-0.001190f, -0.997791f, -0.066422f,
-0.001027f, -0.999624f, -0.027401f,
0.191218f, -0.629440f, -0.753154f,
0.087291f, -0.932386f, -0.350766f,
0.036926f, -0.988344f, -0.147688f,
0.016021f, -0.997796f, -0.064386f,
0.006087f, -0.999625f, -0.026706f,
0.380023f, -0.629962f, -0.677297f,
0.175124f, -0.932612f, -0.315543f,
0.073881f, -0.988389f, -0.132774f,
0.032133f, -0.997805f, -0.057900f,
0.012794f, -0.999626f, -0.024157f,
0.541695f, -0.630147f, -0.556310f,
0.250409f, -0.932707f, -0.259523f,
0.105540f, -0.988408f, -0.109137f,
0.045941f, -0.997809f, -0.047613f,
0.018575f, -0.999627f, -0.020018f,
0.666911f, -0.629932f, -0.398014f,
0.308995f, -0.932635f, -0.186318f,
0.130182f, -0.988394f, -0.078296f,
0.056696f, -0.997806f, -0.034185f,
0.023117f, -0.999627f, -0.014564f,
0.747766f, -0.629395f, -0.211443f,
0.347287f, -0.932420f, -0.099921f,
0.146303f, -0.988352f, -0.041912f,
0.063741f, -0.997798f, -0.018338f,
0.026150f, -0.999625f, -0.008087f,
0.003252f, -0.999017f, 0.044215f,
0.015240f, -0.999884f, -0.000426f,
0.059928f, -0.998202f, -0.000876f,
0.167134f, -0.985934f, -0.001083f,
0.403838f, -0.914830f, -0.000203f,
0.792445f, -0.609943f, 0.000242f,
0.995161f, -0.098254f, -0.001013f,
0.003195f, -0.927908f, 0.372795f,
0.015041f, -0.949764f, 0.312606f,
0.059227f, -0.948266f, 0.311904f,
0.164453f, -0.933549f, 0.318499f,
0.388162f, -0.854219f, 0.345890f,
0.729394f, -0.561905f, 0.390189f,
0.912351f, -0.095332f, 0.398156f,
0.002232f, -0.597680f, 0.801731f,
0.010830f, -0.681497f, 0.731741f,
0.043613f, -0.679614f, 0.732272f,
0.120047f, -0.660320f, 0.741327f,
0.267930f, -0.580441f, 0.768962f,
0.467285f, -0.367107f, 0.804287f,
0.584006f, -0.067606f, 0.808929f,
-0.000653f, 0.152635f, 0.988282f,
-0.002559f, 0.000905f, 0.999996f,
-0.007405f, 0.000384f, 0.999972f,
-0.016090f, -0.004746f, 0.999859f,
-0.025703f, -0.019620f, 0.999477f,
-0.020936f, -0.035053f, 0.999166f,
-0.002824f, -0.023899f, 0.999710f,
-0.003296f, 0.756255f, 0.654269f,
-0.015405f, 0.681251f, 0.731887f,
-0.059217f, 0.676283f, 0.734258f,
-0.158438f, 0.643792f, 0.748619f,
-0.334170f, 0.526967f, 0.781432f,
-0.518177f, 0.278028f, 0.808822f,
-0.588929f, 0.016391f, 0.808019f,
-0.004352f, 0.967350f, 0.253408f,
-0.020677f, 0.949300f, 0.313691f,
-0.081844f, 0.945117f, 0.316317f,
-0.226175f, 0.916097f, 0.331076f,
-0.500500f, 0.784289f, 0.366594f,
-0.804374f, 0.439635f, 0.399630f,
-0.916460f, 0.037237f, 0.398390f,
-0.004517f, 0.999011f, -0.044228f,
-0.021584f, 0.999767f, 0.000265f,
-0.086245f, 0.996274f, 0.000157f,
-0.240673f, 0.970606f, -0.000608f,
-0.540280f, 0.841484f, -0.001597f,
-0.877811f, 0.479008f, 0.000390f,
-0.999074f, 0.043021f, 0.000686f,
-0.004094f, 0.927919f, -0.372759f,
-0.019687f, 0.949518f, -0.313093f,
-0.079023f, 0.945545f, -0.315752f,
-0.219600f, 0.917458f, -0.331734f,
-0.488715f, 0.790534f, -0.369071f,
-0.797673f, 0.452036f, -0.399226f,
-0.916555f, 0.045675f, -0.397293f,
-0.002516f, 0.597699f, -0.801716f,
-0.012433f, 0.681272f, -0.731925f,
-0.050950f, 0.677183f, -0.734048f,
-0.140298f, 0.648898f, -0.747829f,
-0.303501f, 0.546934f, -0.780224f,
-0.495541f, 0.315794f, -0.809143f,
-0.586888f, 0.043544f, -0.808497f,
0.000557f, -0.152599f, -0.988288f,
0.002074f, -0.000969f, -0.999997f,
0.005499f, -0.001410f, -0.999984f,
0.011569f, 0.000546f, -0.999933f,
0.019331f, 0.010342f, -0.999760f,
0.017294f, 0.025347f, -0.999529f,
0.002733f, 0.020710f, -0.999782f,
0.002668f, -0.756195f, -0.654340f,
0.012416f, -0.681586f, -0.731633f,
0.047946f, -0.679845f, -0.731787f,
0.130533f, -0.659594f, -0.740200f,
0.293034f, -0.569168f, -0.768231f,
0.500213f, -0.318883f, -0.805047f,
0.587808f, -0.026599f, -0.808563f,
0.003191f, -0.967332f, -0.253494f,
0.014981f, -0.949482f, -0.313464f,
0.058954f, -0.947784f, -0.313417f,
0.164056f, -0.933187f, -0.319761f,
0.391212f, -0.853217f, -0.344925f,
0.743675f, -0.542841f, -0.390219f,
0.913602f, -0.073956f, -0.399828f,
0.972925f, 0.231121f, -0.000918f,
0.912330f, 0.409438f, -0.003849f,
0.828029f, 0.560649f, -0.006408f,
0.716807f, 0.697239f, -0.006712f,
0.575989f, 0.817451f, -0.003302f,
0.495133f, 0.867633f, -0.045350f,
0.893985f, 0.213142f, 0.394158f,
0.840605f, 0.383895f, 0.382108f,
0.768860f, 0.531454f, 0.355543f,
0.672509f, 0.665677f, 0.323426f,
0.545610f, 0.779633f, 0.307380f,
0.479303f, 0.843050f, 0.244000f,
0.576388f, 0.133958f, 0.806122f,
0.544470f, 0.253746f, 0.799478f,
0.508754f, 0.364144f, 0.780108f,
0.461180f, 0.471780f, 0.751490f,
0.387281f, 0.561166f, 0.731509f,
0.371347f, 0.666129f, 0.646818f,
0.002410f, -0.014515f, 0.999892f,
0.001301f, -0.016411f, 0.999865f,
0.000720f, -0.020201f, 0.999796f,
0.003256f, -0.021359f, 0.999767f,
0.008876f, -0.013337f, 0.999872f,
0.072759f, 0.131709f, 0.988615f,
-0.569088f, -0.161451f, 0.806271f,
-0.524317f, -0.294841f, 0.798850f,
-0.472635f, -0.410610f, 0.779754f,
-0.415783f, -0.508606f, 0.753953f,
-0.349674f, -0.579676f, 0.736006f,
-0.279208f, -0.530698f, 0.800252f,
-0.885693f, -0.241406f, 0.396574f,
-0.803204f, -0.449996f, 0.390343f,
-0.697513f, -0.613444f, 0.370354f,
-0.588462f, -0.732277f, 0.342757f,
-0.485206f, -0.813008f, 0.321860f,
-0.425879f, -0.823534f, 0.374725f,
-0.965787f, -0.259335f, 0.000592f,
-0.872611f, -0.488406f, 0.003010f,
-0.748651f, -0.662945f, 0.005037f,
-0.622443f, -0.782648f, 0.005056f,
-0.509112f, -0.860697f, 0.002551f,
-0.455515f, -0.889038f, 0.046023f,
-0.888605f, -0.232245f, -0.395529f,
-0.809378f, -0.443445f, -0.385051f,
-0.704052f, -0.611598f, -0.360913f,
-0.592713f, -0.733528f, -0.332607f,
-0.486334f, -0.814293f, -0.316868f,
-0.441890f, -0.860789f, -0.252538f,
-0.574477f, -0.139332f, -0.806575f,
-0.532235f, -0.275661f, -0.800460f,
-0.480844f, -0.396171f, -0.782201f,
-0.423172f, -0.499323f, -0.756044f,
-0.355443f, -0.574187f, -0.737543f,
-0.348424f, -0.670745f, -0.654753f,
-0.001891f, 0.012937f, -0.999915f,
0.001397f, 0.011921f, -0.999928f,
0.005089f, 0.014178f, -0.999887f,
0.004896f, 0.016722f, -0.999848f,
-0.002003f, 0.012285f, -0.999922f,
-0.068183f, -0.130578f, -0.989091f,
0.573387f, 0.149188f, -0.805587f,
0.541227f, 0.266714f, -0.797456f,
0.503525f, 0.377270f, -0.777258f,
0.451452f, 0.484144f, -0.749530f,
0.372386f, 0.571022f, -0.731616f,
0.289707f, 0.529053f, -0.797604f,
0.892654f, 0.216131f, -0.395546f,
0.837234f, 0.384836f, -0.388510f,
0.763231f, 0.531640f, -0.367202f,
0.665469f, 0.666102f, -0.336837f,
0.537995f, 0.781974f, -0.314766f,
0.455324f, 0.810920f, -0.367545f,
-0.145927f, 0.987044f, 0.066705f,
-0.350253f, 0.936641f, -0.005157f,
-0.710995f, 0.703191f, -0.003047f,
-0.899400f, 0.437101f, 0.004678f,
-0.930238f, 0.366579f, 0.016656f,
-0.845840f, 0.533040f, 0.020564f,
-0.646372f, 0.763018f, 0.002776f,
-0.128906f, 0.841567f, 0.524546f,
-0.292019f, 0.852082f, 0.434375f,
-0.615355f, 0.675119f, 0.406882f,
-0.799678f, 0.453205f, 0.393853f,
-0.814130f, 0.384381f, 0.435251f,
-0.711742f, 0.496654f, 0.496746f,
-0.538718f, 0.683956f, 0.491922f,
-0.054328f, 0.445430f, 0.893667f,
-0.120328f, 0.535740f, 0.835765f,
-0.285367f, 0.495269f, 0.820533f,
-0.427214f, 0.405516f, 0.808112f,
-0.455262f, 0.354182f, 0.816880f,
-0.386518f, 0.375163f, 0.842530f,
-0.289150f, 0.468105f, 0.835027f,
0.075157f, -0.092491f, 0.992873f,
0.130249f, 0.040179f, 0.990667f,
0.205304f, 0.124938f, 0.970691f,
0.176764f, 0.184322f, 0.966840f,
0.082193f, 0.182483f, 0.979767f,
0.009842f, 0.124532f, 0.992167f,
-0.004171f, 0.105296f, 0.994432f,
0.213849f, -0.587755f, 0.780264f,
0.361728f, -0.447069f, 0.818097f,
0.601635f, -0.258541f, 0.755772f,
0.672221f, -0.099063f, 0.733693f,
0.583247f, -0.084870f, 0.807849f,
0.409251f, -0.235708f, 0.881451f,
0.284284f, -0.385654f, 0.877755f,
0.302637f, -0.880762f, 0.364237f,
0.496428f, -0.756105f, 0.426456f,
0.790450f, -0.487110f, 0.371365f,
0.895860f, -0.277360f, 0.347141f,
0.865262f, -0.295907f, 0.404673f,
0.690272f, -0.542643f, 0.478606f,
0.467747f, -0.753579f, 0.461879f,
0.321563f, -0.944505f, -0.067141f,
0.531566f, -0.847002f, 0.005046f,
0.833505f, -0.552508f, 0.002163f,
0.944185f, -0.329343f, -0.006880f,
0.932318f, -0.361245f, -0.016874f,
0.768639f, -0.639601f, -0.010215f,
0.513002f, -0.858387f, 0.000964f,
0.278331f, -0.809595f, -0.516806f,
0.491568f, -0.763636f, -0.418594f,
0.788478f, -0.493107f, -0.367624f,
0.891089f, -0.275271f, -0.360815f,
0.856479f, -0.282922f, -0.431739f,
0.692218f, -0.527331f, -0.492704f,
0.473487f, -0.749262f, -0.463052f,
0.166654f, -0.429938f, -0.887344f,
0.339768f, -0.458348f, -0.821264f,
0.590160f, -0.276240f, -0.758553f,
0.668115f, -0.103914f, -0.736766f,
0.590009f, -0.076740f, -0.803741f,
0.433287f, -0.219357f, -0.874154f,
0.299036f, -0.368898f, -0.880052f,
0.027869f, 0.102187f, -0.994375f,
0.088152f, 0.031815f, -0.995599f,
0.174456f, 0.096185f, -0.979956f,
0.188708f, 0.161291f, -0.968697f,
0.127686f, 0.175774f, -0.976115f,
0.054509f, 0.130986f, -0.989885f,
0.015877f, 0.116730f, -0.993037f,
-0.081072f, 0.607187f, -0.790412f,
-0.164116f, 0.522469f, -0.836715f,
-0.319626f, 0.463405f, -0.826495f,
-0.422971f, 0.383450f, -0.821013f,
-0.424534f, 0.353597f, -0.833511f,
-0.351612f, 0.388106f, -0.851905f,
-0.270475f, 0.475063f, -0.837352f,
-0.133739f, 0.917541f, -0.374476f,
-0.316043f, 0.839490f, -0.442011f,
-0.631181f, 0.656649f, -0.412823f,
-0.807405f, 0.443017f, -0.389658f,
-0.821659f, 0.386229f, -0.419171f,
-0.707748f, 0.517393f, -0.481037f,
-0.526814f, 0.693790f, -0.491043f,
-0.461017f, 0.887371f, -0.005987f,
-0.290675f, 0.956710f, -0.014601f,
0.085518f, 0.995086f, -0.049913f,
0.887713f, 0.456166f, -0.062285f,
0.822992f, -0.567263f, 0.029937f,
0.659878f, -0.743158f, 0.110798f,
-0.391094f, 0.831360f, 0.394824f,
-0.253310f, 0.936825f, 0.241231f,
0.015366f, 0.995010f, -0.098588f,
0.520185f, 0.549881f, -0.653482f,
0.628856f, -0.382376f, -0.677000f,
0.578948f, -0.646092f, -0.497378f,
-0.223422f, 0.660928f, 0.716420f,
-0.156131f, 0.874986f, 0.458282f,
-0.036467f, 0.998264f, -0.046261f,
0.156637f, 0.682491f, -0.713913f,
0.263632f, 0.005571f, -0.964607f,
0.312409f, -0.324778f, -0.892704f,
-0.001751f, 0.339383f, 0.940647f,
-0.021119f, 0.759902f, 0.649695f,
-0.044404f, 0.998121f, 0.042219f,
-0.032529f, 0.802862f, -0.595277f,
-0.008745f, 0.371564f, -0.928366f,
0.042529f, 0.077913f, -0.996053f,
0.280020f, -0.238192f, 0.929975f,
0.227305f, 0.491486f, 0.840699f,
-0.003105f, 0.987407f, 0.158172f,
-0.143918f, 0.895866f, -0.420370f,
-0.200177f, 0.683872f, -0.701604f,
-0.187188f, 0.500198f, -0.845437f,
0.453673f, -0.746835f, 0.486229f,
0.692158f, -0.080062f, 0.717291f,
0.185758f, 0.942536f, 0.277704f,
-0.211188f, 0.955274f, -0.207004f,
-0.312961f, 0.881061f, -0.354665f,
-0.336331f, 0.811345f, -0.478122f,
0.482445f, -0.875816f, -0.013906f,
0.913013f, -0.405572f, -0.043811f,
0.506909f, 0.853920f, 0.117742f,
-0.234033f, 0.972124f, 0.014295f,
-0.348033f, 0.937468f, 0.005277f,
-0.384064f, 0.921073f, -0.064185f,
0.457762f, -0.717668f, -0.524792f,
0.683347f, -0.063014f, -0.727369f,
0.357361f, 0.898186f, -0.256038f,
-0.207010f, 0.947863f, 0.242287f,
-0.314387f, 0.872357f, 0.374372f,
-0.361040f, 0.872819f, 0.328385f,
0.280225f, -0.218552f, -0.934724f,
0.261124f, 0.434074f, -0.862203f,
0.060553f, 0.978577f, -0.196775f,
-0.131809f, 0.881094f, 0.454203f,
-0.195016f, 0.658858f, 0.726550f,
-0.247824f, 0.630359f, 0.735684f,
0.008860f, 0.321862f, -0.946745f,
0.001382f, 0.733189f, -0.680023f,
-0.012720f, 0.997949f, -0.062734f,
-0.011656f, 0.785221f, 0.619106f,
0.000967f, 0.344022f, 0.938961f,
-0.037360f, 0.214324f, 0.976048f,
-0.213360f, 0.648838f, -0.730401f,
-0.140052f, 0.865891f, -0.480227f,
-0.000809f, 0.999500f, 0.031611f,
0.194529f, 0.659081f, 0.726478f,
0.266832f, -0.005234f, 0.963729f,
0.219380f, -0.217247f, 0.951145f,
-0.384886f, 0.827121f, -0.409553f,
-0.240915f, 0.932642f, -0.268588f,
0.065830f, 0.996786f, 0.045658f,
0.597011f, 0.507703f, 0.621141f,
0.613004f, -0.369418f, 0.698395f,
0.486873f, -0.566787f, 0.664610f,
0.000000f, 1.000000f, 0.000000f,
0.395791f, 0.918207f, 0.015676f,
0.964544f, 0.263762f, 0.009177f,
0.839041f, -0.544056f, -0.003654f,
0.788969f, -0.614430f, 0.001943f,
0.991025f, -0.133647f, 0.002953f,
0.732531f, 0.680606f, -0.013206f,
0.377669f, 0.918491f, 0.117221f,
0.929557f, 0.263662f, 0.257694f,
0.811158f, -0.544801f, 0.212638f,
0.761156f, -0.615195f, 0.205370f,
0.956515f, -0.133833f, 0.259168f,
0.710689f, 0.680955f, 0.176694f,
0.333696f, 0.918791f, 0.210878f,
0.830713f, 0.263784f, 0.490239f,
0.727549f, -0.545809f, 0.415650f,
0.681011f, -0.616288f, 0.395491f,
0.856413f, -0.134443f, 0.498480f,
0.640176f, 0.681271f, 0.355027f,
0.267591f, 0.918878f, 0.289928f,
0.675416f, 0.263955f, 0.688579f,
0.594970f, -0.546203f, 0.589638f,
0.555330f, -0.616730f, 0.557901f,
0.698694f, -0.134804f, 0.702606f,
0.526898f, 0.681345f, 0.508082f,
0.183499f, 0.918711f, 0.349712f,
0.474031f, 0.264098f, 0.839969f,
0.422194f, -0.545768f, 0.723802f,
0.392296f, -0.616276f, 0.682867f,
0.493598f, -0.134679f, 0.859199f,
0.378184f, 0.681197f, 0.626856f,
0.086498f, 0.918378f, 0.386136f,
0.239605f, 0.264096f, 0.934261f,
0.219887f, -0.544743f, 0.809262f,
0.201667f, -0.615183f, 0.762155f,
0.253529f, -0.134173f, 0.957977f,
0.202631f, 0.680866f, 0.703820f,
-0.015676f, 0.918207f, 0.395791f,
-0.009177f, 0.263762f, 0.964544f,
0.003654f, -0.544057f, 0.839041f,
-0.001943f, -0.614430f, 0.788969f,
-0.002953f, -0.133647f, 0.991025f,
0.013206f, 0.680606f, 0.732531f,
-0.117221f, 0.918491f, 0.377669f,
-0.257694f, 0.263662f, 0.929557f,
-0.212638f, -0.544801f, 0.811158f,
-0.205370f, -0.615195f, 0.761156f,
-0.259168f, -0.133833f, 0.956515f,
-0.176694f, 0.680955f, 0.710689f,
-0.210878f, 0.918791f, 0.333696f,
-0.490239f, 0.263784f, 0.830713f,
-0.415650f, -0.545809f, 0.727549f,
-0.395491f, -0.616288f, 0.681011f,
-0.498480f, -0.134443f, 0.856413f,
-0.355027f, 0.681271f, 0.640176f,
-0.289928f, 0.918878f, 0.267591f,
-0.688579f, 0.263955f, 0.675416f,
-0.589638f, -0.546203f, 0.594970f,
-0.557901f, -0.616730f, 0.555330f,
-0.702606f, -0.134804f, 0.698694f,
-0.508082f, 0.681345f, 0.526898f,
-0.349712f, 0.918711f, 0.183499f,
-0.839969f, 0.264098f, 0.474031f,
-0.723802f, -0.545768f, 0.422194f,
-0.682867f, -0.616276f, 0.392296f,
-0.859199f, -0.134679f, 0.493598f,
-0.626856f, 0.681197f, 0.378184f,
-0.386136f, 0.918378f, 0.086498f,
-0.934261f, 0.264096f, 0.239605f,
-0.809262f, -0.544743f, 0.219887f,
-0.762155f, -0.615183f, 0.201667f,
-0.957977f, -0.134173f, 0.253529f,
-0.703820f, 0.680866f, 0.202631f,
-0.395791f, 0.918207f, -0.015676f,
-0.964544f, 0.263762f, -0.009177f,
-0.839041f, -0.544057f, 0.003654f,
-0.788969f, -0.614430f, -0.001943f,
-0.991025f, -0.133647f, -0.002953f,
-0.732531f, 0.680606f, 0.013206f,
-0.377669f, 0.918491f, -0.117221f,
-0.929557f, 0.263662f, -0.257694f,
-0.811158f, -0.544801f, -0.212638f,
-0.761156f, -0.615195f, -0.205370f,
-0.956515f, -0.133833f, -0.259168f,
-0.710689f, 0.680955f, -0.176694f,
-0.333696f, 0.918791f, -0.210878f,
-0.830713f, 0.263784f, -0.490239f,
-0.727549f, -0.545809f, -0.415650f,
-0.681011f, -0.616288f, -0.395491f,
-0.856413f, -0.134443f, -0.498480f,
-0.640176f, 0.681271f, -0.355027f,
-0.267591f, 0.918878f, -0.289928f,
-0.675416f, 0.263955f, -0.688579f,
-0.594970f, -0.546203f, -0.589638f,
-0.555330f, -0.616730f, -0.557901f,
-0.698694f, -0.134804f, -0.702606f,
-0.526898f, 0.681345f, -0.508082f,
-0.183499f, 0.918711f, -0.349712f,
-0.474031f, 0.264098f, -0.839969f,
-0.422194f, -0.545768f, -0.723802f,
-0.392296f, -0.616276f, -0.682867f,
-0.493598f, -0.134679f, -0.859199f,
-0.378184f, 0.681197f, -0.626856f,
-0.086498f, 0.918378f, -0.386136f,
-0.239605f, 0.264096f, -0.934261f,
-0.219887f, -0.544743f, -0.809262f,
-0.201667f, -0.615183f, -0.762155f,
-0.253529f, -0.134173f, -0.957977f,
-0.202631f, 0.680866f, -0.703820f,
0.015676f, 0.918207f, -0.395791f,
0.009177f, 0.263762f, -0.964544f,
-0.003654f, -0.544057f, -0.839041f,
0.001943f, -0.614430f, -0.788969f,
0.002953f, -0.133647f, -0.991025f,
-0.013206f, 0.680606f, -0.732531f,
0.117221f, 0.918491f, -0.377669f,
0.257694f, 0.263662f, -0.929557f,
0.212638f, -0.544801f, -0.811158f,
0.205370f, -0.615195f, -0.761156f,
0.259168f, -0.133833f, -0.956515f,
0.176694f, 0.680955f, -0.710689f,
0.210878f, 0.918791f, -0.333696f,
0.490239f, 0.263784f, -0.830713f,
0.415650f, -0.545809f, -0.727549f,
0.395491f, -0.616288f, -0.681011f,
0.498480f, -0.134443f, -0.856413f,
0.355027f, 0.681271f, -0.640176f,
0.289928f, 0.918878f, -0.267591f,
0.688579f, 0.263955f, -0.675416f,
0.589638f, -0.546203f, -0.594970f,
0.557901f, -0.616730f, -0.555330f,
0.702606f, -0.134804f, -0.698694f,
0.508082f, 0.681345f, -0.526898f,
0.349712f, 0.918711f, -0.183499f,
0.839969f, 0.264098f, -0.474031f,
0.723802f, -0.545768f, -0.422194f,
0.682867f, -0.616276f, -0.392296f,
0.859199f, -0.134679f, -0.493598f,
0.626856f, 0.681197f, -0.378184f,
0.386136f, 0.918378f, -0.086498f,
0.934261f, 0.264096f, -0.239605f,
0.809262f, -0.544743f, -0.219887f,
0.762155f, -0.615183f, -0.201667f,
0.957977f, -0.134173f, -0.253529f,
0.703820f, 0.680866f, -0.202631f,
0.299763f, 0.954005f, -0.004004f,
0.180158f, 0.983637f, -0.001176f,
0.158462f, 0.987365f, 0.000232f,
0.213709f, 0.976895f, 0.002171f,
0.489301f, 0.872063f, 0.009504f,
0.686607f, 0.726410f, -0.029990f,
0.290238f, 0.954117f, 0.073644f,
0.174086f, 0.983681f, 0.045452f,
0.152777f, 0.987401f, 0.041212f,
0.205547f, 0.976963f, 0.057393f,
0.469598f, 0.872357f, 0.135911f,
0.670656f, 0.726754f, 0.148493f,
0.260698f, 0.954280f, 0.146242f,
0.156021f, 0.983742f, 0.088932f,
0.136587f, 0.987448f, 0.079312f,
0.183282f, 0.977046f, 0.108577f,
0.417739f, 0.872696f, 0.252776f,
0.608331f, 0.727460f, 0.317389f,
0.214008f, 0.954348f, 0.208377f,
0.127716f, 0.983767f, 0.126063f,
0.111442f, 0.987466f, 0.111767f,
0.149005f, 0.977076f, 0.152056f,
0.338347f, 0.872812f, 0.351738f,
0.505565f, 0.727811f, 0.463351f,
0.153158f, 0.954293f, 0.256647f,
0.090962f, 0.983745f, 0.154830f,
0.078913f, 0.987448f, 0.136822f,
0.104831f, 0.977040f, 0.185479f,
0.236319f, 0.872663f, 0.427333f,
0.369272f, 0.727651f, 0.578067f,
0.081449f, 0.954136f, 0.288080f,
0.047744f, 0.983685f, 0.173450f,
0.040760f, 0.987400f, 0.152903f,
0.053164f, 0.976955f, 0.206721f,
0.117360f, 0.872307f, 0.474665f,
0.207008f, 0.727038f, 0.654648f,
0.004004f, 0.954005f, 0.299763f,
0.001176f, 0.983637f, 0.180158f,
-0.000232f, 0.987365f, 0.158462f,
-0.002171f, 0.976895f, 0.213709f,
-0.009504f, 0.872063f, 0.489301f,
0.029990f, 0.726410f, 0.686607f,
-0.073644f, 0.954117f, 0.290238f,
-0.045452f, 0.983681f, 0.174086f,
-0.041212f, 0.987401f, 0.152777f,
-0.057393f, 0.976963f, 0.205547f,
-0.135911f, 0.872357f, 0.469598f,
-0.148493f, 0.726754f, 0.670656f,
-0.146242f, 0.954280f, 0.260698f,
-0.088932f, 0.983742f, 0.156021f,
-0.079312f, 0.987448f, 0.136587f,
-0.108577f, 0.977046f, 0.183282f,
-0.252776f, 0.872696f, 0.417739f,
-0.317389f, 0.727460f, 0.608331f,
-0.208377f, 0.954348f, 0.214008f,
-0.126063f, 0.983767f, 0.127716f,
-0.111767f, 0.987466f, 0.111442f,
-0.152056f, 0.977076f, 0.149005f,
-0.351738f, 0.872812f, 0.338347f,
-0.463351f, 0.727811f, 0.505565f,
-0.256647f, 0.954293f, 0.153158f,
-0.154830f, 0.983745f, 0.090962f,
-0.136822f, 0.987448f, 0.078913f,
-0.185479f, 0.977040f, 0.104831f,
-0.427333f, 0.872663f, 0.236319f,
-0.578067f, 0.727651f, 0.369272f,
-0.288080f, 0.954136f, 0.081449f,
-0.173450f, 0.983685f, 0.047744f,
-0.152903f, 0.987400f, 0.040760f,
-0.206721f, 0.976955f, 0.053164f,
-0.474665f, 0.872307f, 0.117360f,
-0.654648f, 0.727038f, 0.207008f,
-0.299763f, 0.954005f, 0.004004f,
-0.180158f, 0.983637f, 0.001176f,
-0.158462f, 0.987365f, -0.000232f,
-0.213709f, 0.976895f, -0.002171f,
-0.489301f, 0.872063f, -0.009504f,
-0.686607f, 0.726410f, 0.029990f,
-0.290238f, 0.954117f, -0.073644f,
-0.174086f, 0.983681f, -0.045452f,
-0.152777f, 0.987401f, -0.041212f,
-0.205547f, 0.976963f, -0.057393f,
-0.469598f, 0.872357f, -0.135911f,
-0.670656f, 0.726754f, -0.148493f,
-0.260698f, 0.954280f, -0.146242f,
-0.156021f, 0.983742f, -0.088932f,
-0.136587f, 0.987448f, -0.079312f,
-0.183282f, 0.977046f, -0.108577f,
-0.417739f, 0.872696f, -0.252776f,
-0.608331f, 0.727460f, -0.317389f,
-0.214008f, 0.954348f, -0.208377f,
-0.127716f, 0.983767f, -0.126063f,
-0.111442f, 0.987466f, -0.111767f,
-0.149005f, 0.977076f, -0.152056f,
-0.338347f, 0.872812f, -0.351738f,
-0.505565f, 0.727811f, -0.463351f,
-0.153158f, 0.954293f, -0.256647f,
-0.090962f, 0.983745f, -0.154830f,
-0.078913f, 0.987448f, -0.136822f,
-0.104831f, 0.977040f, -0.185479f,
-0.236319f, 0.872663f, -0.427333f,
-0.369272f, 0.727651f, -0.578067f,
-0.081449f, 0.954136f, -0.288080f,
-0.047744f, 0.983685f, -0.173450f,
-0.040760f, 0.987400f, -0.152903f,
-0.053164f, 0.976955f, -0.206721f,
-0.117360f, 0.872307f, -0.474665f,
-0.207008f, 0.727038f, -0.654648f,
-0.004004f, 0.954005f, -0.299763f,
-0.001176f, 0.983637f, -0.180158f,
0.000232f, 0.987365f, -0.158462f,
0.002171f, 0.976895f, -0.213709f,
0.009504f, 0.872063f, -0.489301f,
-0.029990f, 0.726410f, -0.686607f,
0.073644f, 0.954117f, -0.290238f,
0.045452f, 0.983681f, -0.174086f,
0.041212f, 0.987401f, -0.152777f,
0.057393f, 0.976963f, -0.205547f,
0.135911f, 0.872357f, -0.469598f,
0.148493f, 0.726754f, -0.670656f,
0.146242f, 0.954280f, -0.260698f,
0.088932f, 0.983742f, -0.156021f,
0.079312f, 0.987448f, -0.136587f,
0.108577f, 0.977046f, -0.183282f,
0.252776f, 0.872696f, -0.417739f,
0.317389f, 0.727460f, -0.608331f,
0.208377f, 0.954348f, -0.214008f,
0.126063f, 0.983767f, -0.127716f,
0.111767f, 0.987466f, -0.111442f,
0.152056f, 0.977076f, -0.149005f,
0.351738f, 0.872812f, -0.338347f,
0.463351f, 0.727811f, -0.505565f,
0.256647f, 0.954293f, -0.153158f,
0.154830f, 0.983745f, -0.090962f,
0.136822f, 0.987448f, -0.078913f,
0.185479f, 0.977040f, -0.104831f,
0.427333f, 0.872663f, -0.236319f,
0.578067f, 0.727651f, -0.369272f,
0.288080f, 0.954136f, -0.081449f,
0.173450f, 0.983685f, -0.047744f,
0.152903f, 0.987400f, -0.040760f,
0.206721f, 0.976955f, -0.053164f,
0.474665f, 0.872307f, -0.117360f,
0.654648f, 0.727038f, -0.207008f,
};
static D3DXVECTOR3* teapotNormals = ( D3DXVECTOR3* )teapotNormalsfloats;
static WORD teapotIndices[NUMTEAPOTINDICES] =
{
0, 7, 8,
8, 1, 0,
1, 8, 9,
9, 2, 1,
2, 9, 10,
10, 3, 2,
3, 10, 11,
11, 4, 3,
4, 11, 12,
12, 5, 4,
5, 12, 13,
13, 6, 5,
7, 14, 15,
15, 8, 7,
8, 15, 16,
16, 9, 8,
9, 16, 17,
17, 10, 9,
10, 17, 18,
18, 11, 10,
11, 18, 19,
19, 12, 11,
12, 19, 20,
20, 13, 12,
14, 21, 22,
22, 15, 14,
15, 22, 23,
23, 16, 15,
16, 23, 24,
24, 17, 16,
17, 24, 25,
25, 18, 17,
18, 25, 26,
26, 19, 18,
19, 26, 27,
27, 20, 19,
21, 28, 29,
29, 22, 21,
22, 29, 30,
30, 23, 22,
23, 30, 31,
31, 24, 23,
24, 31, 32,
32, 25, 24,
25, 32, 33,
33, 26, 25,
26, 33, 34,
34, 27, 26,
28, 35, 36,
36, 29, 28,
29, 36, 37,
37, 30, 29,
30, 37, 38,
38, 31, 30,
31, 38, 39,
39, 32, 31,
32, 39, 40,
40, 33, 32,
33, 40, 41,
41, 34, 33,
35, 42, 43,
43, 36, 35,
36, 43, 44,
44, 37, 36,
37, 44, 45,
45, 38, 37,
38, 45, 46,
46, 39, 38,
39, 46, 47,
47, 40, 39,
40, 47, 48,
48, 41, 40,
42, 49, 50,
50, 43, 42,
43, 50, 51,
51, 44, 43,
44, 51, 52,
52, 45, 44,
45, 52, 53,
53, 46, 45,
46, 53, 54,
54, 47, 46,
47, 54, 55,
55, 48, 47,
49, 56, 57,
57, 50, 49,
50, 57, 58,
58, 51, 50,
51, 58, 59,
59, 52, 51,
52, 59, 60,
60, 53, 52,
53, 60, 61,
61, 54, 53,
54, 61, 62,
62, 55, 54,
56, 63, 64,
64, 57, 56,
57, 64, 65,
65, 58, 57,
58, 65, 66,
66, 59, 58,
59, 66, 67,
67, 60, 59,
60, 67, 68,
68, 61, 60,
61, 68, 69,
69, 62, 61,
63, 70, 71,
71, 64, 63,
64, 71, 72,
72, 65, 64,
65, 72, 73,
73, 66, 65,
66, 73, 74,
74, 67, 66,
67, 74, 75,
75, 68, 67,
68, 75, 76,
76, 69, 68,
70, 77, 78,
78, 71, 70,
71, 78, 79,
79, 72, 71,
72, 79, 80,
80, 73, 72,
73, 80, 81,
81, 74, 73,
74, 81, 82,
82, 75, 74,
75, 82, 83,
83, 76, 75,
77, 84, 85,
85, 78, 77,
78, 85, 86,
86, 79, 78,
79, 86, 87,
87, 80, 79,
80, 87, 88,
88, 81, 80,
81, 88, 89,
89, 82, 81,
82, 89, 90,
90, 83, 82,
84, 91, 92,
92, 85, 84,
85, 92, 93,
93, 86, 85,
86, 93, 94,
94, 87, 86,
87, 94, 95,
95, 88, 87,
88, 95, 96,
96, 89, 88,
89, 96, 97,
97, 90, 89,
91, 98, 99,
99, 92, 91,
92, 99, 100,
100, 93, 92,
93, 100, 101,
101, 94, 93,
94, 101, 102,
102, 95, 94,
95, 102, 103,
103, 96, 95,
96, 103, 104,
104, 97, 96,
98, 105, 106,
106, 99, 98,
99, 106, 107,
107, 100, 99,
100, 107, 108,
108, 101, 100,
101, 108, 109,
109, 102, 101,
102, 109, 110,
110, 103, 102,
103, 110, 111,
111, 104, 103,
105, 112, 113,
113, 106, 105,
106, 113, 114,
114, 107, 106,
107, 114, 115,
115, 108, 107,
108, 115, 116,
116, 109, 108,
109, 116, 117,
117, 110, 109,
110, 117, 118,
118, 111, 110,
112, 119, 120,
120, 113, 112,
113, 120, 121,
121, 114, 113,
114, 121, 122,
122, 115, 114,
115, 122, 123,
123, 116, 115,
116, 123, 124,
124, 117, 116,
117, 124, 125,
125, 118, 117,
119, 126, 127,
127, 120, 119,
120, 127, 128,
128, 121, 120,
121, 128, 129,
129, 122, 121,
122, 129, 130,
130, 123, 122,
123, 130, 131,
131, 124, 123,
124, 131, 132,
132, 125, 124,
126, 133, 134,
134, 127, 126,
127, 134, 135,
135, 128, 127,
128, 135, 136,
136, 129, 128,
129, 136, 137,
137, 130, 129,
130, 137, 138,
138, 131, 130,
131, 138, 139,
139, 132, 131,
133, 140, 141,
141, 134, 133,
134, 141, 142,
142, 135, 134,
135, 142, 143,
143, 136, 135,
136, 143, 144,
144, 137, 136,
137, 144, 145,
145, 138, 137,
138, 145, 146,
146, 139, 138,
140, 147, 148,
148, 141, 140,
141, 148, 149,
149, 142, 141,
142, 149, 150,
150, 143, 142,
143, 150, 151,
151, 144, 143,
144, 151, 152,
152, 145, 144,
145, 152, 153,
153, 146, 145,
147, 154, 155,
155, 148, 147,
148, 155, 156,
156, 149, 148,
149, 156, 157,
157, 150, 149,
150, 157, 158,
158, 151, 150,
151, 158, 159,
159, 152, 151,
152, 159, 160,
160, 153, 152,
154, 161, 162,
162, 155, 154,
155, 162, 163,
163, 156, 155,
156, 163, 164,
164, 157, 156,
157, 164, 165,
165, 158, 157,
158, 165, 166,
166, 159, 158,
159, 166, 167,
167, 160, 159,
161, 0, 1,
1, 162, 161,
162, 1, 2,
2, 163, 162,
163, 2, 3,
3, 164, 163,
164, 3, 4,
4, 165, 164,
165, 4, 5,
5, 166, 165,
166, 5, 6,
6, 167, 166,
6, 13, 174,
174, 168, 6,
168, 174, 175,
175, 169, 168,
169, 175, 176,
176, 170, 169,
170, 176, 177,
177, 171, 170,
171, 177, 178,
178, 172, 171,
172, 178, 179,
179, 173, 172,
13, 20, 180,
180, 174, 13,
174, 180, 181,
181, 175, 174,
175, 181, 182,
182, 176, 175,
176, 182, 183,
183, 177, 176,
177, 183, 184,
184, 178, 177,
178, 184, 185,
185, 179, 178,
20, 27, 186,
186, 180, 20,
180, 186, 187,
187, 181, 180,
181, 187, 188,
188, 182, 181,
182, 188, 189,
189, 183, 182,
183, 189, 190,
190, 184, 183,
184, 190, 191,
191, 185, 184,
27, 34, 192,
192, 186, 27,
186, 192, 193,
193, 187, 186,
187, 193, 194,
194, 188, 187,
188, 194, 195,
195, 189, 188,
189, 195, 196,
196, 190, 189,
190, 196, 197,
197, 191, 190,
34, 41, 198,
198, 192, 34,
192, 198, 199,
199, 193, 192,
193, 199, 200,
200, 194, 193,
194, 200, 201,
201, 195, 194,
195, 201, 202,
202, 196, 195,
196, 202, 203,
203, 197, 196,
41, 48, 204,
204, 198, 41,
198, 204, 205,
205, 199, 198,
199, 205, 206,
206, 200, 199,
200, 206, 207,
207, 201, 200,
201, 207, 208,
208, 202, 201,
202, 208, 209,
209, 203, 202,
48, 55, 210,
210, 204, 48,
204, 210, 211,
211, 205, 204,
205, 211, 212,
212, 206, 205,
206, 212, 213,
213, 207, 206,
207, 213, 214,
214, 208, 207,
208, 214, 215,
215, 209, 208,
55, 62, 216,
216, 210, 55,
210, 216, 217,
217, 211, 210,
211, 217, 218,
218, 212, 211,
212, 218, 219,
219, 213, 212,
213, 219, 220,
220, 214, 213,
214, 220, 221,
221, 215, 214,
62, 69, 222,
222, 216, 62,
216, 222, 223,
223, 217, 216,
217, 223, 224,
224, 218, 217,
218, 224, 225,
225, 219, 218,
219, 225, 226,
226, 220, 219,
220, 226, 227,
227, 221, 220,
69, 76, 228,
228, 222, 69,
222, 228, 229,
229, 223, 222,
223, 229, 230,
230, 224, 223,
224, 230, 231,
231, 225, 224,
225, 231, 232,
232, 226, 225,
226, 232, 233,
233, 227, 226,
76, 83, 234,
234, 228, 76,
228, 234, 235,
235, 229, 228,
229, 235, 236,
236, 230, 229,
230, 236, 237,
237, 231, 230,
231, 237, 238,
238, 232, 231,
232, 238, 239,
239, 233, 232,
83, 90, 240,
240, 234, 83,
234, 240, 241,
241, 235, 234,
235, 241, 242,
242, 236, 235,
236, 242, 243,
243, 237, 236,
237, 243, 244,
244, 238, 237,
238, 244, 245,
245, 239, 238,
90, 97, 246,
246, 240, 90,
240, 246, 247,
247, 241, 240,
241, 247, 248,
248, 242, 241,
242, 248, 249,
249, 243, 242,
243, 249, 250,
250, 244, 243,
244, 250, 251,
251, 245, 244,
97, 104, 252,
252, 246, 97,
246, 252, 253,
253, 247, 246,
247, 253, 254,
254, 248, 247,
248, 254, 255,
255, 249, 248,
249, 255, 256,
256, 250, 249,
250, 256, 257,
257, 251, 250,
104, 111, 258,
258, 252, 104,
252, 258, 259,
259, 253, 252,
253, 259, 260,
260, 254, 253,
254, 260, 261,
261, 255, 254,
255, 261, 262,
262, 256, 255,
256, 262, 263,
263, 257, 256,
111, 118, 264,
264, 258, 111,
258, 264, 265,
265, 259, 258,
259, 265, 266,
266, 260, 259,
260, 266, 267,
267, 261, 260,
261, 267, 268,
268, 262, 261,
262, 268, 269,
269, 263, 262,
118, 125, 270,
270, 264, 118,
264, 270, 271,
271, 265, 264,
265, 271, 272,
272, 266, 265,
266, 272, 273,
273, 267, 266,
267, 273, 274,
274, 268, 267,
268, 274, 275,
275, 269, 268,
125, 132, 276,
276, 270, 125,
270, 276, 277,
277, 271, 270,
271, 277, 278,
278, 272, 271,
272, 278, 279,
279, 273, 272,
273, 279, 280,
280, 274, 273,
274, 280, 281,
281, 275, 274,
132, 139, 282,
282, 276, 132,
276, 282, 283,
283, 277, 276,
277, 283, 284,
284, 278, 277,
278, 284, 285,
285, 279, 278,
279, 285, 286,
286, 280, 279,
280, 286, 287,
287, 281, 280,
139, 146, 288,
288, 282, 139,
282, 288, 289,
289, 283, 282,
283, 289, 290,
290, 284, 283,
284, 290, 291,
291, 285, 284,
285, 291, 292,
292, 286, 285,
286, 292, 293,
293, 287, 286,
146, 153, 294,
294, 288, 146,
288, 294, 295,
295, 289, 288,
289, 295, 296,
296, 290, 289,
290, 296, 297,
297, 291, 290,
291, 297, 298,
298, 292, 291,
292, 298, 299,
299, 293, 292,
153, 160, 300,
300, 294, 153,
294, 300, 301,
301, 295, 294,
295, 301, 302,
302, 296, 295,
296, 302, 303,
303, 297, 296,
297, 303, 304,
304, 298, 297,
298, 304, 305,
305, 299, 298,
160, 167, 306,
306, 300, 160,
300, 306, 307,
307, 301, 300,
301, 307, 308,
308, 302, 301,
302, 308, 309,
309, 303, 302,
303, 309, 310,
310, 304, 303,
304, 310, 311,
311, 305, 304,
167, 6, 168,
168, 306, 167,
306, 168, 169,
169, 307, 306,
307, 169, 170,
170, 308, 307,
308, 170, 171,
171, 309, 308,
309, 171, 172,
172, 310, 309,
310, 172, 173,
173, 311, 310,
173, 179, 318,
318, 312, 173,
312, 318, 319,
319, 313, 312,
313, 319, 320,
320, 314, 313,
314, 320, 321,
321, 315, 314,
315, 321, 322,
322, 316, 315,
316, 322, 323,
323, 317, 316,
179, 185, 324,
324, 318, 179,
318, 324, 325,
325, 319, 318,
319, 325, 326,
326, 320, 319,
320, 326, 327,
327, 321, 320,
321, 327, 328,
328, 322, 321,
322, 328, 329,
329, 323, 322,
185, 191, 330,
330, 324, 185,
324, 330, 331,
331, 325, 324,
325, 331, 332,
332, 326, 325,
326, 332, 333,
333, 327, 326,
327, 333, 334,
334, 328, 327,
328, 334, 335,
335, 329, 328,
191, 197, 336,
336, 330, 191,
330, 336, 337,
337, 331, 330,
331, 337, 338,
338, 332, 331,
332, 338, 339,
339, 333, 332,
333, 339, 340,
340, 334, 333,
334, 340, 341,
341, 335, 334,
197, 203, 342,
342, 336, 197,
336, 342, 343,
343, 337, 336,
337, 343, 344,
344, 338, 337,
338, 344, 345,
345, 339, 338,
339, 345, 346,
346, 340, 339,
340, 346, 347,
347, 341, 340,
203, 209, 348,
348, 342, 203,
342, 348, 349,
349, 343, 342,
343, 349, 350,
350, 344, 343,
344, 350, 351,
351, 345, 344,
345, 351, 352,
352, 346, 345,
346, 352, 353,
353, 347, 346,
209, 215, 354,
354, 348, 209,
348, 354, 355,
355, 349, 348,
349, 355, 356,
356, 350, 349,
350, 356, 357,
357, 351, 350,
351, 357, 358,
358, 352, 351,
352, 358, 359,
359, 353, 352,
215, 221, 360,
360, 354, 215,
354, 360, 361,
361, 355, 354,
355, 361, 362,
362, 356, 355,
356, 362, 363,
363, 357, 356,
357, 363, 364,
364, 358, 357,
358, 364, 365,
365, 359, 358,
221, 227, 366,
366, 360, 221,
360, 366, 367,
367, 361, 360,
361, 367, 368,
368, 362, 361,
362, 368, 369,
369, 363, 362,
363, 369, 370,
370, 364, 363,
364, 370, 371,
371, 365, 364,
227, 233, 372,
372, 366, 227,
366, 372, 373,
373, 367, 366,
367, 373, 374,
374, 368, 367,
368, 374, 375,
375, 369, 368,
369, 375, 376,
376, 370, 369,
370, 376, 377,
377, 371, 370,
233, 239, 378,
378, 372, 233,
372, 378, 379,
379, 373, 372,
373, 379, 380,
380, 374, 373,
374, 380, 381,
381, 375, 374,
375, 381, 382,
382, 376, 375,
376, 382, 383,
383, 377, 376,
239, 245, 384,
384, 378, 239,
378, 384, 385,
385, 379, 378,
379, 385, 386,
386, 380, 379,
380, 386, 387,
387, 381, 380,
381, 387, 388,
388, 382, 381,
382, 388, 389,
389, 383, 382,
245, 251, 390,
390, 384, 245,
384, 390, 391,
391, 385, 384,
385, 391, 392,
392, 386, 385,
386, 392, 393,
393, 387, 386,
387, 393, 394,
394, 388, 387,
388, 394, 395,
395, 389, 388,
251, 257, 396,
396, 390, 251,
390, 396, 397,
397, 391, 390,
391, 397, 398,
398, 392, 391,
392, 398, 399,
399, 393, 392,
393, 399, 400,
400, 394, 393,
394, 400, 401,
401, 395, 394,
257, 263, 402,
402, 396, 257,
396, 402, 403,
403, 397, 396,
397, 403, 404,
404, 398, 397,
398, 404, 405,
405, 399, 398,
399, 405, 406,
406, 400, 399,
400, 406, 407,
407, 401, 400,
263, 269, 408,
408, 402, 263,
402, 408, 409,
409, 403, 402,
403, 409, 410,
410, 404, 403,
404, 410, 411,
411, 405, 404,
405, 411, 412,
412, 406, 405,
406, 412, 413,
413, 407, 406,
269, 275, 414,
414, 408, 269,
408, 414, 415,
415, 409, 408,
409, 415, 416,
416, 410, 409,
410, 416, 417,
417, 411, 410,
411, 417, 418,
418, 412, 411,
412, 418, 419,
419, 413, 412,
275, 281, 420,
420, 414, 275,
414, 420, 421,
421, 415, 414,
415, 421, 422,
422, 416, 415,
416, 422, 423,
423, 417, 416,
417, 423, 424,
424, 418, 417,
418, 424, 425,
425, 419, 418,
281, 287, 426,
426, 420, 281,
420, 426, 427,
427, 421, 420,
421, 427, 428,
428, 422, 421,
422, 428, 429,
429, 423, 422,
423, 429, 430,
430, 424, 423,
424, 430, 431,
431, 425, 424,
287, 293, 432,
432, 426, 287,
426, 432, 433,
433, 427, 426,
427, 433, 434,
434, 428, 427,
428, 434, 435,
435, 429, 428,
429, 435, 436,
436, 430, 429,
430, 436, 437,
437, 431, 430,
293, 299, 438,
438, 432, 293,
432, 438, 439,
439, 433, 432,
433, 439, 440,
440, 434, 433,
434, 440, 441,
441, 435, 434,
435, 441, 442,
442, 436, 435,
436, 442, 443,
443, 437, 436,
299, 305, 444,
444, 438, 299,
438, 444, 445,
445, 439, 438,
439, 445, 446,
446, 440, 439,
440, 446, 447,
447, 441, 440,
441, 447, 448,
448, 442, 441,
442, 448, 449,
449, 443, 442,
305, 311, 450,
450, 444, 305,
444, 450, 451,
451, 445, 444,
445, 451, 452,
452, 446, 445,
446, 452, 453,
453, 447, 446,
447, 453, 454,
454, 448, 447,
448, 454, 455,
455, 449, 448,
311, 173, 312,
312, 450, 311,
450, 312, 313,
313, 451, 450,
451, 313, 314,
314, 452, 451,
452, 314, 315,
315, 453, 452,
453, 315, 316,
316, 454, 453,
454, 316, 317,
317, 455, 454,
317, 323, 462,
462, 456, 317,
456, 462, 463,
463, 457, 456,
457, 463, 464,
464, 458, 457,
458, 464, 465,
465, 459, 458,
459, 465, 466,
466, 460, 459,
460, 466, 461,
323, 329, 467,
467, 462, 323,
462, 467, 468,
468, 463, 462,
463, 468, 469,
469, 464, 463,
464, 469, 470,
470, 465, 464,
465, 470, 471,
471, 466, 465,
466, 471, 461,
329, 335, 472,
472, 467, 329,
467, 472, 473,
473, 468, 467,
468, 473, 474,
474, 469, 468,
469, 474, 475,
475, 470, 469,
470, 475, 476,
476, 471, 470,
471, 476, 461,
335, 341, 477,
477, 472, 335,
472, 477, 478,
478, 473, 472,
473, 478, 479,
479, 474, 473,
474, 479, 480,
480, 475, 474,
475, 480, 481,
481, 476, 475,
476, 481, 461,
341, 347, 482,
482, 477, 341,
477, 482, 483,
483, 478, 477,
478, 483, 484,
484, 479, 478,
479, 484, 485,
485, 480, 479,
480, 485, 486,
486, 481, 480,
481, 486, 461,
347, 353, 487,
487, 482, 347,
482, 487, 488,
488, 483, 482,
483, 488, 489,
489, 484, 483,
484, 489, 490,
490, 485, 484,
485, 490, 491,
491, 486, 485,
486, 491, 461,
353, 359, 492,
492, 487, 353,
487, 492, 493,
493, 488, 487,
488, 493, 494,
494, 489, 488,
489, 494, 495,
495, 490, 489,
490, 495, 496,
496, 491, 490,
491, 496, 461,
359, 365, 497,
497, 492, 359,
492, 497, 498,
498, 493, 492,
493, 498, 499,
499, 494, 493,
494, 499, 500,
500, 495, 494,
495, 500, 501,
501, 496, 495,
496, 501, 461,
365, 371, 502,
502, 497, 365,
497, 502, 503,
503, 498, 497,
498, 503, 504,
504, 499, 498,
499, 504, 505,
505, 500, 499,
500, 505, 506,
506, 501, 500,
501, 506, 461,
371, 377, 507,
507, 502, 371,
502, 507, 508,
508, 503, 502,
503, 508, 509,
509, 504, 503,
504, 509, 510,
510, 505, 504,
505, 510, 511,
511, 506, 505,
506, 511, 461,
377, 383, 512,
512, 507, 377,
507, 512, 513,
513, 508, 507,
508, 513, 514,
514, 509, 508,
509, 514, 515,
515, 510, 509,
510, 515, 516,
516, 511, 510,
511, 516, 461,
383, 389, 517,
517, 512, 383,
512, 517, 518,
518, 513, 512,
513, 518, 519,
519, 514, 513,
514, 519, 520,
520, 515, 514,
515, 520, 521,
521, 516, 515,
516, 521, 461,
389, 395, 522,
522, 517, 389,
517, 522, 523,
523, 518, 517,
518, 523, 524,
524, 519, 518,
519, 524, 525,
525, 520, 519,
520, 525, 526,
526, 521, 520,
521, 526, 461,
395, 401, 527,
527, 522, 395,
522, 527, 528,
528, 523, 522,
523, 528, 529,
529, 524, 523,
524, 529, 530,
530, 525, 524,
525, 530, 531,
531, 526, 525,
526, 531, 461,
401, 407, 532,
532, 527, 401,
527, 532, 533,
533, 528, 527,
528, 533, 534,
534, 529, 528,
529, 534, 535,
535, 530, 529,
530, 535, 536,
536, 531, 530,
531, 536, 461,
407, 413, 537,
537, 532, 407,
532, 537, 538,
538, 533, 532,
533, 538, 539,
539, 534, 533,
534, 539, 540,
540, 535, 534,
535, 540, 541,
541, 536, 535,
536, 541, 461,
413, 419, 542,
542, 537, 413,
537, 542, 543,
543, 538, 537,
538, 543, 544,
544, 539, 538,
539, 544, 545,
545, 540, 539,
540, 545, 546,
546, 541, 540,
541, 546, 461,
419, 425, 547,
547, 542, 419,
542, 547, 548,
548, 543, 542,
543, 548, 549,
549, 544, 543,
544, 549, 550,
550, 545, 544,
545, 550, 551,
551, 546, 545,
546, 551, 461,
425, 431, 552,
552, 547, 425,
547, 552, 553,
553, 548, 547,
548, 553, 554,
554, 549, 548,
549, 554, 555,
555, 550, 549,
550, 555, 556,
556, 551, 550,
551, 556, 461,
431, 437, 557,
557, 552, 431,
552, 557, 558,
558, 553, 552,
553, 558, 559,
559, 554, 553,
554, 559, 560,
560, 555, 554,
555, 560, 561,
561, 556, 555,
556, 561, 461,
437, 443, 562,
562, 557, 437,
557, 562, 563,
563, 558, 557,
558, 563, 564,
564, 559, 558,
559, 564, 565,
565, 560, 559,
560, 565, 566,
566, 561, 560,
561, 566, 461,
443, 449, 567,
567, 562, 443,
562, 567, 568,
568, 563, 562,
563, 568, 569,
569, 564, 563,
564, 569, 570,
570, 565, 564,
565, 570, 571,
571, 566, 565,
566, 571, 461,
449, 455, 572,
572, 567, 449,
567, 572, 573,
573, 568, 567,
568, 573, 574,
574, 569, 568,
569, 574, 575,
575, 570, 569,
570, 575, 576,
576, 571, 570,
571, 576, 461,
455, 317, 456,
456, 572, 455,
572, 456, 457,
457, 573, 572,
573, 457, 458,
458, 574, 573,
574, 458, 459,
459, 575, 574,
575, 459, 460,
460, 576, 575,
576, 460, 461,
577, 584, 585,
585, 578, 577,
578, 585, 586,
586, 579, 578,
579, 586, 587,
587, 580, 579,
580, 587, 588,
588, 581, 580,
581, 588, 589,
589, 582, 581,
582, 589, 590,
590, 583, 582,
584, 591, 592,
592, 585, 584,
585, 592, 593,
593, 586, 585,
586, 593, 594,
594, 587, 586,
587, 594, 595,
595, 588, 587,
588, 595, 596,
596, 589, 588,
589, 596, 597,
597, 590, 589,
591, 598, 599,
599, 592, 591,
592, 599, 600,
600, 593, 592,
593, 600, 601,
601, 594, 593,
594, 601, 602,
602, 595, 594,
595, 602, 603,
603, 596, 595,
596, 603, 604,
604, 597, 596,
598, 605, 606,
606, 599, 598,
599, 606, 607,
607, 600, 599,
600, 607, 608,
608, 601, 600,
601, 608, 609,
609, 602, 601,
602, 609, 610,
610, 603, 602,
603, 610, 611,
611, 604, 603,
605, 612, 613,
613, 606, 605,
606, 613, 614,
614, 607, 606,
607, 614, 615,
615, 608, 607,
608, 615, 616,
616, 609, 608,
609, 616, 617,
617, 610, 609,
610, 617, 618,
618, 611, 610,
612, 619, 620,
620, 613, 612,
613, 620, 621,
621, 614, 613,
614, 621, 622,
622, 615, 614,
615, 622, 623,
623, 616, 615,
616, 623, 624,
624, 617, 616,
617, 624, 625,
625, 618, 617,
619, 626, 627,
627, 620, 619,
620, 627, 628,
628, 621, 620,
621, 628, 629,
629, 622, 621,
622, 629, 630,
630, 623, 622,
623, 630, 631,
631, 624, 623,
624, 631, 632,
632, 625, 624,
626, 633, 634,
634, 627, 626,
627, 634, 635,
635, 628, 627,
628, 635, 636,
636, 629, 628,
629, 636, 637,
637, 630, 629,
630, 637, 638,
638, 631, 630,
631, 638, 639,
639, 632, 631,
633, 640, 641,
641, 634, 633,
634, 641, 642,
642, 635, 634,
635, 642, 643,
643, 636, 635,
636, 643, 644,
644, 637, 636,
637, 644, 645,
645, 638, 637,
638, 645, 646,
646, 639, 638,
640, 647, 648,
648, 641, 640,
641, 648, 649,
649, 642, 641,
642, 649, 650,
650, 643, 642,
643, 650, 651,
651, 644, 643,
644, 651, 652,
652, 645, 644,
645, 652, 653,
653, 646, 645,
647, 654, 655,
655, 648, 647,
648, 655, 656,
656, 649, 648,
649, 656, 657,
657, 650, 649,
650, 657, 658,
658, 651, 650,
651, 658, 659,
659, 652, 651,
652, 659, 660,
660, 653, 652,
654, 577, 578,
578, 655, 654,
655, 578, 579,
579, 656, 655,
656, 579, 580,
580, 657, 656,
657, 580, 581,
581, 658, 657,
658, 581, 582,
582, 659, 658,
659, 582, 583,
583, 660, 659,
583, 590, 667,
667, 661, 583,
661, 667, 668,
668, 662, 661,
662, 668, 669,
669, 663, 662,
663, 669, 670,
670, 664, 663,
664, 670, 671,
671, 665, 664,
665, 671, 672,
672, 666, 665,
590, 597, 673,
673, 667, 590,
667, 673, 674,
674, 668, 667,
668, 674, 675,
675, 669, 668,
669, 675, 676,
676, 670, 669,
670, 676, 677,
677, 671, 670,
671, 677, 678,
678, 672, 671,
597, 604, 679,
679, 673, 597,
673, 679, 680,
680, 674, 673,
674, 680, 681,
681, 675, 674,
675, 681, 682,
682, 676, 675,
676, 682, 683,
683, 677, 676,
677, 683, 684,
684, 678, 677,
604, 611, 685,
685, 679, 604,
679, 685, 686,
686, 680, 679,
680, 686, 687,
687, 681, 680,
681, 687, 688,
688, 682, 681,
682, 688, 689,
689, 683, 682,
683, 689, 690,
690, 684, 683,
611, 618, 691,
691, 685, 611,
685, 691, 692,
692, 686, 685,
686, 692, 693,
693, 687, 686,
687, 693, 694,
694, 688, 687,
688, 694, 695,
695, 689, 688,
689, 695, 696,
696, 690, 689,
618, 625, 697,
697, 691, 618,
691, 697, 698,
698, 692, 691,
692, 698, 699,
699, 693, 692,
693, 699, 700,
700, 694, 693,
694, 700, 701,
701, 695, 694,
695, 701, 702,
702, 696, 695,
625, 632, 703,
703, 697, 625,
697, 703, 704,
704, 698, 697,
698, 704, 705,
705, 699, 698,
699, 705, 706,
706, 700, 699,
700, 706, 707,
707, 701, 700,
701, 707, 708,
708, 702, 701,
632, 639, 709,
709, 703, 632,
703, 709, 710,
710, 704, 703,
704, 710, 711,
711, 705, 704,
705, 711, 712,
712, 706, 705,
706, 712, 713,
713, 707, 706,
707, 713, 714,
714, 708, 707,
639, 646, 715,
715, 709, 639,
709, 715, 716,
716, 710, 709,
710, 716, 717,
717, 711, 710,
711, 717, 718,
718, 712, 711,
712, 718, 719,
719, 713, 712,
713, 719, 720,
720, 714, 713,
646, 653, 721,
721, 715, 646,
715, 721, 722,
722, 716, 715,
716, 722, 723,
723, 717, 716,
717, 723, 724,
724, 718, 717,
718, 724, 725,
725, 719, 718,
719, 725, 726,
726, 720, 719,
653, 660, 727,
727, 721, 653,
721, 727, 728,
728, 722, 721,
722, 728, 729,
729, 723, 722,
723, 729, 730,
730, 724, 723,
724, 730, 731,
731, 725, 724,
725, 731, 732,
732, 726, 725,
660, 583, 661,
661, 727, 660,
727, 661, 662,
662, 728, 727,
728, 662, 663,
663, 729, 728,
729, 663, 664,
664, 730, 729,
730, 664, 665,
665, 731, 730,
731, 665, 666,
666, 732, 731,
733, 740, 741,
741, 734, 733,
734, 741, 742,
742, 735, 734,
735, 742, 743,
743, 736, 735,
736, 743, 744,
744, 737, 736,
737, 744, 745,
745, 738, 737,
738, 745, 746,
746, 739, 738,
740, 747, 748,
748, 741, 740,
741, 748, 749,
749, 742, 741,
742, 749, 750,
750, 743, 742,
743, 750, 751,
751, 744, 743,
744, 751, 752,
752, 745, 744,
745, 752, 753,
753, 746, 745,
747, 754, 755,
755, 748, 747,
748, 755, 756,
756, 749, 748,
749, 756, 757,
757, 750, 749,
750, 757, 758,
758, 751, 750,
751, 758, 759,
759, 752, 751,
752, 759, 760,
760, 753, 752,
754, 761, 762,
762, 755, 754,
755, 762, 763,
763, 756, 755,
756, 763, 764,
764, 757, 756,
757, 764, 765,
765, 758, 757,
758, 765, 766,
766, 759, 758,
759, 766, 767,
767, 760, 759,
761, 768, 769,
769, 762, 761,
762, 769, 770,
770, 763, 762,
763, 770, 771,
771, 764, 763,
764, 771, 772,
772, 765, 764,
765, 772, 773,
773, 766, 765,
766, 773, 774,
774, 767, 766,
768, 775, 776,
776, 769, 768,
769, 776, 777,
777, 770, 769,
770, 777, 778,
778, 771, 770,
771, 778, 779,
779, 772, 771,
772, 779, 780,
780, 773, 772,
773, 780, 781,
781, 774, 773,
775, 782, 783,
783, 776, 775,
776, 783, 784,
784, 777, 776,
777, 784, 785,
785, 778, 777,
778, 785, 786,
786, 779, 778,
779, 786, 787,
787, 780, 779,
780, 787, 788,
788, 781, 780,
782, 789, 790,
790, 783, 782,
783, 790, 791,
791, 784, 783,
784, 791, 792,
792, 785, 784,
785, 792, 793,
793, 786, 785,
786, 793, 794,
794, 787, 786,
787, 794, 795,
795, 788, 787,
789, 796, 797,
797, 790, 789,
790, 797, 798,
798, 791, 790,
791, 798, 799,
799, 792, 791,
792, 799, 800,
800, 793, 792,
793, 800, 801,
801, 794, 793,
794, 801, 802,
802, 795, 794,
796, 803, 804,
804, 797, 796,
797, 804, 805,
805, 798, 797,
798, 805, 806,
806, 799, 798,
799, 806, 807,
807, 800, 799,
800, 807, 808,
808, 801, 800,
801, 808, 809,
809, 802, 801,
803, 810, 811,
811, 804, 803,
804, 811, 812,
812, 805, 804,
805, 812, 813,
813, 806, 805,
806, 813, 814,
814, 807, 806,
807, 814, 815,
815, 808, 807,
808, 815, 816,
816, 809, 808,
810, 733, 734,
734, 811, 810,
811, 734, 735,
735, 812, 811,
812, 735, 736,
736, 813, 812,
813, 736, 737,
737, 814, 813,
814, 737, 738,
738, 815, 814,
815, 738, 739,
739, 816, 815,
739, 746, 823,
823, 817, 739,
817, 823, 824,
824, 818, 817,
818, 824, 825,
825, 819, 818,
819, 825, 826,
826, 820, 819,
820, 826, 827,
827, 821, 820,
821, 827, 828,
828, 822, 821,
746, 753, 829,
829, 823, 746,
823, 829, 830,
830, 824, 823,
824, 830, 831,
831, 825, 824,
825, 831, 832,
832, 826, 825,
826, 832, 833,
833, 827, 826,
827, 833, 834,
834, 828, 827,
753, 760, 835,
835, 829, 753,
829, 835, 836,
836, 830, 829,
830, 836, 837,
837, 831, 830,
831, 837, 838,
838, 832, 831,
832, 838, 839,
839, 833, 832,
833, 839, 840,
840, 834, 833,
760, 767, 841,
841, 835, 760,
835, 841, 842,
842, 836, 835,
836, 842, 843,
843, 837, 836,
837, 843, 844,
844, 838, 837,
838, 844, 845,
845, 839, 838,
839, 845, 846,
846, 840, 839,
767, 774, 847,
847, 841, 767,
841, 847, 848,
848, 842, 841,
842, 848, 849,
849, 843, 842,
843, 849, 850,
850, 844, 843,
844, 850, 851,
851, 845, 844,
845, 851, 852,
852, 846, 845,
774, 781, 853,
853, 847, 774,
847, 853, 854,
854, 848, 847,
848, 854, 855,
855, 849, 848,
849, 855, 856,
856, 850, 849,
850, 856, 857,
857, 851, 850,
851, 857, 858,
858, 852, 851,
781, 788, 859,
859, 853, 781,
853, 859, 860,
860, 854, 853,
854, 860, 861,
861, 855, 854,
855, 861, 862,
862, 856, 855,
856, 862, 863,
863, 857, 856,
857, 863, 864,
864, 858, 857,
788, 795, 865,
865, 859, 788,
859, 865, 866,
866, 860, 859,
860, 866, 867,
867, 861, 860,
861, 867, 868,
868, 862, 861,
862, 868, 869,
869, 863, 862,
863, 869, 870,
870, 864, 863,
795, 802, 871,
871, 865, 795,
865, 871, 872,
872, 866, 865,
866, 872, 873,
873, 867, 866,
867, 873, 874,
874, 868, 867,
868, 874, 875,
875, 869, 868,
869, 875, 876,
876, 870, 869,
802, 809, 877,
877, 871, 802,
871, 877, 878,
878, 872, 871,
872, 878, 879,
879, 873, 872,
873, 879, 880,
880, 874, 873,
874, 880, 881,
881, 875, 874,
875, 881, 882,
882, 876, 875,
809, 816, 883,
883, 877, 809,
877, 883, 884,
884, 878, 877,
878, 884, 885,
885, 879, 878,
879, 885, 886,
886, 880, 879,
880, 886, 887,
887, 881, 880,
881, 887, 888,
888, 882, 881,
816, 739, 817,
817, 883, 816,
883, 817, 818,
818, 884, 883,
884, 818, 819,
819, 885, 884,
885, 819, 820,
820, 886, 885,
886, 820, 821,
821, 887, 886,
887, 821, 822,
822, 888, 887,
896, 890, 889,
890, 896, 897,
897, 891, 890,
891, 897, 898,
898, 892, 891,
892, 898, 899,
899, 893, 892,
893, 899, 900,
900, 894, 893,
894, 900, 901,
901, 895, 894,
902, 896, 889,
896, 902, 903,
903, 897, 896,
897, 903, 904,
904, 898, 897,
898, 904, 905,
905, 899, 898,
899, 905, 906,
906, 900, 899,
900, 906, 907,
907, 901, 900,
908, 902, 889,
902, 908, 909,
909, 903, 902,
903, 909, 910,
910, 904, 903,
904, 910, 911,
911, 905, 904,
905, 911, 912,
912, 906, 905,
906, 912, 913,
913, 907, 906,
914, 908, 889,
908, 914, 915,
915, 909, 908,
909, 915, 916,
916, 910, 909,
910, 916, 917,
917, 911, 910,
911, 917, 918,
918, 912, 911,
912, 918, 919,
919, 913, 912,
920, 914, 889,
914, 920, 921,
921, 915, 914,
915, 921, 922,
922, 916, 915,
916, 922, 923,
923, 917, 916,
917, 923, 924,
924, 918, 917,
918, 924, 925,
925, 919, 918,
926, 920, 889,
920, 926, 927,
927, 921, 920,
921, 927, 928,
928, 922, 921,
922, 928, 929,
929, 923, 922,
923, 929, 930,
930, 924, 923,
924, 930, 931,
931, 925, 924,
932, 926, 889,
926, 932, 933,
933, 927, 926,
927, 933, 934,
934, 928, 927,
928, 934, 935,
935, 929, 928,
929, 935, 936,
936, 930, 929,
930, 936, 937,
937, 931, 930,
938, 932, 889,
932, 938, 939,
939, 933, 932,
933, 939, 940,
940, 934, 933,
934, 940, 941,
941, 935, 934,
935, 941, 942,
942, 936, 935,
936, 942, 943,
943, 937, 936,
944, 938, 889,
938, 944, 945,
945, 939, 938,
939, 945, 946,
946, 940, 939,
940, 946, 947,
947, 941, 940,
941, 947, 948,
948, 942, 941,
942, 948, 949,
949, 943, 942,
950, 944, 889,
944, 950, 951,
951, 945, 944,
945, 951, 952,
952, 946, 945,
946, 952, 953,
953, 947, 946,
947, 953, 954,
954, 948, 947,
948, 954, 955,
955, 949, 948,
956, 950, 889,
950, 956, 957,
957, 951, 950,
951, 957, 958,
958, 952, 951,
952, 958, 959,
959, 953, 952,
953, 959, 960,
960, 954, 953,
954, 960, 961,
961, 955, 954,
962, 956, 889,
956, 962, 963,
963, 957, 956,
957, 963, 964,
964, 958, 957,
958, 964, 965,
965, 959, 958,
959, 965, 966,
966, 960, 959,
960, 966, 967,
967, 961, 960,
968, 962, 889,
962, 968, 969,
969, 963, 962,
963, 969, 970,
970, 964, 963,
964, 970, 971,
971, 965, 964,
965, 971, 972,
972, 966, 965,
966, 972, 973,
973, 967, 966,
974, 968, 889,
968, 974, 975,
975, 969, 968,
969, 975, 976,
976, 970, 969,
970, 976, 977,
977, 971, 970,
971, 977, 978,
978, 972, 971,
972, 978, 979,
979, 973, 972,
980, 974, 889,
974, 980, 981,
981, 975, 974,
975, 981, 982,
982, 976, 975,
976, 982, 983,
983, 977, 976,
977, 983, 984,
984, 978, 977,
978, 984, 985,
985, 979, 978,
986, 980, 889,
980, 986, 987,
987, 981, 980,
981, 987, 988,
988, 982, 981,
982, 988, 989,
989, 983, 982,
983, 989, 990,
990, 984, 983,
984, 990, 991,
991, 985, 984,
992, 986, 889,
986, 992, 993,
993, 987, 986,
987, 993, 994,
994, 988, 987,
988, 994, 995,
995, 989, 988,
989, 995, 996,
996, 990, 989,
990, 996, 997,
997, 991, 990,
998, 992, 889,
992, 998, 999,
999, 993, 992,
993, 999, 1000,
1000, 994, 993,
994, 1000, 1001,
1001, 995, 994,
995, 1001, 1002,
1002, 996, 995,
996, 1002, 1003,
1003, 997, 996,
1004, 998, 889,
998, 1004, 1005,
1005, 999, 998,
999, 1005, 1006,
1006, 1000, 999,
1000, 1006, 1007,
1007, 1001, 1000,
1001, 1007, 1008,
1008, 1002, 1001,
1002, 1008, 1009,
1009, 1003, 1002,
1010, 1004, 889,
1004, 1010, 1011,
1011, 1005, 1004,
1005, 1011, 1012,
1012, 1006, 1005,
1006, 1012, 1013,
1013, 1007, 1006,
1007, 1013, 1014,
1014, 1008, 1007,
1008, 1014, 1015,
1015, 1009, 1008,
1016, 1010, 889,
1010, 1016, 1017,
1017, 1011, 1010,
1011, 1017, 1018,
1018, 1012, 1011,
1012, 1018, 1019,
1019, 1013, 1012,
1013, 1019, 1020,
1020, 1014, 1013,
1014, 1020, 1021,
1021, 1015, 1014,
1022, 1016, 889,
1016, 1022, 1023,
1023, 1017, 1016,
1017, 1023, 1024,
1024, 1018, 1017,
1018, 1024, 1025,
1025, 1019, 1018,
1019, 1025, 1026,
1026, 1020, 1019,
1020, 1026, 1027,
1027, 1021, 1020,
1028, 1022, 889,
1022, 1028, 1029,
1029, 1023, 1022,
1023, 1029, 1030,
1030, 1024, 1023,
1024, 1030, 1031,
1031, 1025, 1024,
1025, 1031, 1032,
1032, 1026, 1025,
1026, 1032, 1033,
1033, 1027, 1026,
890, 1028, 889,
1028, 890, 891,
891, 1029, 1028,
1029, 891, 892,
892, 1030, 1029,
1030, 892, 893,
893, 1031, 1030,
1031, 893, 894,
894, 1032, 1031,
1032, 894, 895,
895, 1033, 1032,
895, 901, 1040,
1040, 1034, 895,
1034, 1040, 1041,
1041, 1035, 1034,
1035, 1041, 1042,
1042, 1036, 1035,
1036, 1042, 1043,
1043, 1037, 1036,
1037, 1043, 1044,
1044, 1038, 1037,
1038, 1044, 1045,
1045, 1039, 1038,
901, 907, 1046,
1046, 1040, 901,
1040, 1046, 1047,
1047, 1041, 1040,
1041, 1047, 1048,
1048, 1042, 1041,
1042, 1048, 1049,
1049, 1043, 1042,
1043, 1049, 1050,
1050, 1044, 1043,
1044, 1050, 1051,
1051, 1045, 1044,
907, 913, 1052,
1052, 1046, 907,
1046, 1052, 1053,
1053, 1047, 1046,
1047, 1053, 1054,
1054, 1048, 1047,
1048, 1054, 1055,
1055, 1049, 1048,
1049, 1055, 1056,
1056, 1050, 1049,
1050, 1056, 1057,
1057, 1051, 1050,
913, 919, 1058,
1058, 1052, 913,
1052, 1058, 1059,
1059, 1053, 1052,
1053, 1059, 1060,
1060, 1054, 1053,
1054, 1060, 1061,
1061, 1055, 1054,
1055, 1061, 1062,
1062, 1056, 1055,
1056, 1062, 1063,
1063, 1057, 1056,
919, 925, 1064,
1064, 1058, 919,
1058, 1064, 1065,
1065, 1059, 1058,
1059, 1065, 1066,
1066, 1060, 1059,
1060, 1066, 1067,
1067, 1061, 1060,
1061, 1067, 1068,
1068, 1062, 1061,
1062, 1068, 1069,
1069, 1063, 1062,
925, 931, 1070,
1070, 1064, 925,
1064, 1070, 1071,
1071, 1065, 1064,
1065, 1071, 1072,
1072, 1066, 1065,
1066, 1072, 1073,
1073, 1067, 1066,
1067, 1073, 1074,
1074, 1068, 1067,
1068, 1074, 1075,
1075, 1069, 1068,
931, 937, 1076,
1076, 1070, 931,
1070, 1076, 1077,
1077, 1071, 1070,
1071, 1077, 1078,
1078, 1072, 1071,
1072, 1078, 1079,
1079, 1073, 1072,
1073, 1079, 1080,
1080, 1074, 1073,
1074, 1080, 1081,
1081, 1075, 1074,
937, 943, 1082,
1082, 1076, 937,
1076, 1082, 1083,
1083, 1077, 1076,
1077, 1083, 1084,
1084, 1078, 1077,
1078, 1084, 1085,
1085, 1079, 1078,
1079, 1085, 1086,
1086, 1080, 1079,
1080, 1086, 1087,
1087, 1081, 1080,
943, 949, 1088,
1088, 1082, 943,
1082, 1088, 1089,
1089, 1083, 1082,
1083, 1089, 1090,
1090, 1084, 1083,
1084, 1090, 1091,
1091, 1085, 1084,
1085, 1091, 1092,
1092, 1086, 1085,
1086, 1092, 1093,
1093, 1087, 1086,
949, 955, 1094,
1094, 1088, 949,
1088, 1094, 1095,
1095, 1089, 1088,
1089, 1095, 1096,
1096, 1090, 1089,
1090, 1096, 1097,
1097, 1091, 1090,
1091, 1097, 1098,
1098, 1092, 1091,
1092, 1098, 1099,
1099, 1093, 1092,
955, 961, 1100,
1100, 1094, 955,
1094, 1100, 1101,
1101, 1095, 1094,
1095, 1101, 1102,
1102, 1096, 1095,
1096, 1102, 1103,
1103, 1097, 1096,
1097, 1103, 1104,
1104, 1098, 1097,
1098, 1104, 1105,
1105, 1099, 1098,
961, 967, 1106,
1106, 1100, 961,
1100, 1106, 1107,
1107, 1101, 1100,
1101, 1107, 1108,
1108, 1102, 1101,
1102, 1108, 1109,
1109, 1103, 1102,
1103, 1109, 1110,
1110, 1104, 1103,
1104, 1110, 1111,
1111, 1105, 1104,
967, 973, 1112,
1112, 1106, 967,
1106, 1112, 1113,
1113, 1107, 1106,
1107, 1113, 1114,
1114, 1108, 1107,
1108, 1114, 1115,
1115, 1109, 1108,
1109, 1115, 1116,
1116, 1110, 1109,
1110, 1116, 1117,
1117, 1111, 1110,
973, 979, 1118,
1118, 1112, 973,
1112, 1118, 1119,
1119, 1113, 1112,
1113, 1119, 1120,
1120, 1114, 1113,
1114, 1120, 1121,
1121, 1115, 1114,
1115, 1121, 1122,
1122, 1116, 1115,
1116, 1122, 1123,
1123, 1117, 1116,
979, 985, 1124,
1124, 1118, 979,
1118, 1124, 1125,
1125, 1119, 1118,
1119, 1125, 1126,
1126, 1120, 1119,
1120, 1126, 1127,
1127, 1121, 1120,
1121, 1127, 1128,
1128, 1122, 1121,
1122, 1128, 1129,
1129, 1123, 1122,
985, 991, 1130,
1130, 1124, 985,
1124, 1130, 1131,
1131, 1125, 1124,
1125, 1131, 1132,
1132, 1126, 1125,
1126, 1132, 1133,
1133, 1127, 1126,
1127, 1133, 1134,
1134, 1128, 1127,
1128, 1134, 1135,
1135, 1129, 1128,
991, 997, 1136,
1136, 1130, 991,
1130, 1136, 1137,
1137, 1131, 1130,
1131, 1137, 1138,
1138, 1132, 1131,
1132, 1138, 1139,
1139, 1133, 1132,
1133, 1139, 1140,
1140, 1134, 1133,
1134, 1140, 1141,
1141, 1135, 1134,
997, 1003, 1142,
1142, 1136, 997,
1136, 1142, 1143,
1143, 1137, 1136,
1137, 1143, 1144,
1144, 1138, 1137,
1138, 1144, 1145,
1145, 1139, 1138,
1139, 1145, 1146,
1146, 1140, 1139,
1140, 1146, 1147,
1147, 1141, 1140,
1003, 1009, 1148,
1148, 1142, 1003,
1142, 1148, 1149,
1149, 1143, 1142,
1143, 1149, 1150,
1150, 1144, 1143,
1144, 1150, 1151,
1151, 1145, 1144,
1145, 1151, 1152,
1152, 1146, 1145,
1146, 1152, 1153,
1153, 1147, 1146,
1009, 1015, 1154,
1154, 1148, 1009,
1148, 1154, 1155,
1155, 1149, 1148,
1149, 1155, 1156,
1156, 1150, 1149,
1150, 1156, 1157,
1157, 1151, 1150,
1151, 1157, 1158,
1158, 1152, 1151,
1152, 1158, 1159,
1159, 1153, 1152,
1015, 1021, 1160,
1160, 1154, 1015,
1154, 1160, 1161,
1161, 1155, 1154,
1155, 1161, 1162,
1162, 1156, 1155,
1156, 1162, 1163,
1163, 1157, 1156,
1157, 1163, 1164,
1164, 1158, 1157,
1158, 1164, 1165,
1165, 1159, 1158,
1021, 1027, 1166,
1166, 1160, 1021,
1160, 1166, 1167,
1167, 1161, 1160,
1161, 1167, 1168,
1168, 1162, 1161,
1162, 1168, 1169,
1169, 1163, 1162,
1163, 1169, 1170,
1170, 1164, 1163,
1164, 1170, 1171,
1171, 1165, 1164,
1027, 1033, 1172,
1172, 1166, 1027,
1166, 1172, 1173,
1173, 1167, 1166,
1167, 1173, 1174,
1174, 1168, 1167,
1168, 1174, 1175,
1175, 1169, 1168,
1169, 1175, 1176,
1176, 1170, 1169,
1170, 1176, 1177,
1177, 1171, 1170,
1033, 895, 1034,
1034, 1172, 1033,
1172, 1034, 1035,
1035, 1173, 1172,
1173, 1035, 1036,
1036, 1174, 1173,
1174, 1036, 1037,
1037, 1175, 1174,
1175, 1037, 1038,
1038, 1176, 1175,
1176, 1038, 1039,
1039, 1177, 1176,
};
//----------------------------------------------------------------------------
// MakeTeapot Helper
//----------------------------------------------------------------------------
static void MakeTeapot(
VERTEX* pVertices,
WORD* pwIndices )
{
DWORD iVertex;
// Copy vertices
for( iVertex = 0; iVertex < NUMTEAPOTVERTICES; iVertex++ )
{
pVertices[iVertex].pos = teapotPositions[iVertex];
pVertices[iVertex].norm = teapotNormals[iVertex];
}
// Copy face indices
WORD* pwFace = pwIndices;
WORD* pwFaceLim = pwFace + NUMTEAPOTINDICES;
WORD* pwTeapotFace = teapotIndices;
while( pwFace < pwFaceLim )
{
pwFace[0] = pwTeapotFace[0];
pwFace[1] = pwTeapotFace[1];
pwFace[2] = pwTeapotFace[2];
pwFace += 3;
pwTeapotFace += 3;
}
}
//----------------------------------------------------------------------------
// DXUTCreateTeapot - createa teapot mesh
//----------------------------------------------------------------------------
HRESULT WINAPI DXUTCreateTeapot( ID3D10Device* pDevice, ID3DX10Mesh** ppMesh )
{
HRESULT hr = S_OK;
WORD* pwIndices = NULL;
VERTEX* pVertices = NULL;
// Validate parameters
if( !pDevice )
return D3DERR_INVALIDCALL;
if( !ppMesh )
return D3DERR_INVALIDCALL;
// Create the mesh
UINT cFaces = NUMTEAPOTINDICES / 3;
UINT cVertices = NUMTEAPOTVERTICES;
// Create enough memory for the vertices and indices
pVertices = new VERTEX[ cVertices ];
if( !pVertices )
return E_OUTOFMEMORY;
pwIndices = new WORD[ cFaces * 3 ];
if( !pwIndices )
return E_OUTOFMEMORY;
// Create a teapot
MakeTeapot( pVertices, pwIndices );
// Create a mesh
hr = CreateShapeMesh( pDevice, ppMesh, pVertices, cVertices, pwIndices, cFaces * 3 );
// Free up the memory
SAFE_DELETE_ARRAY( pVertices );
SAFE_DELETE_ARRAY( pwIndices );
return hr;
}