x
Yes
No
Do you want to visit DriveHQ English website?
首页
产品服务
价格
免费试用
下载客户端
关于我们
云文件服务
|
云备份服务
|
FTP服务
|
企业邮箱服务
|
网站托管
|
客户端软件
云文件服务
云备份服务
FTP服务
企业级邮箱服务
网站托管
客户端软件
DXUTShapes.cpp - Hosted on DriveHQ Cloud IT Platform
返回上层目录
上传
下载
共享
发布
新建文件夹
新建文件
复制
剪切
删除
粘贴
评论
升级服务
路径: \\game3dprogramming\materials\DarkPuzzle\DXUT\Optional\DXUTShapes.cpp
旋转
特效
属性
历史版本
//-------------------------------------------------------------------------------------- // 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; }
DXUTShapes.cpp
网页地址
文件地址
上一页
18/29
下一页
下载
( 164 KB )
Comments
Total ratings:
0
Average rating:
无评论
of 10
Would you like to comment?
Join now
, or
Logon
if you are already a member.