From e4d283186f95612b3d5c4ebc09c973fd2eab8395 Mon Sep 17 00:00:00 2001 From: Daniel Chappuis Date: Wed, 10 Jul 2013 00:23:15 +0200 Subject: [PATCH] Modify some examples --- examples/common/Capsule.cpp | 136 ++++ examples/common/Capsule.h | 81 +++ examples/common/meshes/capsule.obj | 1060 ++++++++++++++++++++++++++++ 3 files changed, 1277 insertions(+) create mode 100644 examples/common/Capsule.cpp create mode 100644 examples/common/Capsule.h create mode 100644 examples/common/meshes/capsule.obj diff --git a/examples/common/Capsule.cpp b/examples/common/Capsule.cpp new file mode 100644 index 00000000..07216c5e --- /dev/null +++ b/examples/common/Capsule.cpp @@ -0,0 +1,136 @@ +/******************************************************************************** +* ReactPhysics3D physics library, http://code.google.com/p/reactphysics3d/ * +* Copyright (c) 2010-2013 Daniel Chappuis * +********************************************************************************* +* * +* This software is provided 'as-is', without any express or implied warranty. * +* In no event will the authors be held liable for any damages arising from the * +* use of this software. * +* * +* Permission is granted to anyone to use this software for any purpose, * +* including commercial applications, and to alter it and redistribute it * +* freely, subject to the following restrictions: * +* * +* 1. The origin of this software must not be misrepresented; you must not claim * +* that you wrote the original software. If you use this software in a * +* product, an acknowledgment in the product documentation would be * +* appreciated but is not required. * +* * +* 2. Altered source versions must be plainly marked as such, and must not be * +* misrepresented as being the original software. * +* * +* 3. This notice may not be removed or altered from any source distribution. * +* * +********************************************************************************/ + +// Libraries +#include "Capsule.h" + + +// Constructor +Capsule::Capsule(float radius, float height, const openglframework::Vector3 &position, + float mass, reactphysics3d::DynamicsWorld* dynamicsWorld) + : openglframework::Mesh(), mRadius(radius), mHeight(height) { + + // Load the mesh from a file + openglframework::MeshReaderWriter::loadMeshFromFile("meshes/capsule.obj", *this); + + // Calculate the normals of the mesh + calculateNormals(); + + // Compute the scaling matrix + mScalingMatrix = openglframework::Matrix4(mRadius, 0, 0, 0, + 0, (mHeight + 2.0 * mRadius) / 3.0, 0,0, + 0, 0, mRadius, 0, + 0, 0, 0, 1); + + // Initialize the position where the sphere will be rendered + translateWorld(position); + + // Create the collision shape for the rigid body (sphere shape) + // ReactPhysics3D will clone this object to create an internal one. Therefore, + // it is OK if this object is destroy right after calling Dynamics::createRigidBody() + const rp3d::CapsuleShape collisionShape(mRadius, mHeight); + + // Compute the inertia tensor of the body using its collision shape + rp3d::Matrix3x3 inertiaTensor; + collisionShape.computeLocalInertiaTensor(inertiaTensor, mass); + + // Initial position and orientation of the rigid body + rp3d::Vector3 initPosition(position.x, position.y, position.z); + rp3d::Quaternion initOrientation = rp3d::Quaternion::identity(); + rp3d::Transform transform(initPosition, initOrientation); + + // Create a rigid body corresponding to the sphere in the dynamics world + mRigidBody = dynamicsWorld->createRigidBody(transform, mass, inertiaTensor, collisionShape); +} + +// Destructor +Capsule::~Capsule() { + + // Destroy the mesh + destroy(); +} + +// Render the sphere at the correct position and with the correct orientation +void Capsule::render(openglframework::Shader& shader, + const openglframework::Matrix4& worldToCameraMatrix) { + + // Bind the shader + shader.bind(); + + // Set the model to camera matrix + const openglframework::Matrix4 localToCameraMatrix = worldToCameraMatrix * mTransformMatrix; + shader.setMatrix4x4Uniform("localToCameraMatrix", localToCameraMatrix); + + // Set the normal matrix (inverse transpose of the 3x3 upper-left sub matrix of the + // model-view matrix) + const openglframework::Matrix3 normalMatrix = + localToCameraMatrix.getUpperLeft3x3Matrix().getInverse().getTranspose(); + shader.setMatrix3x3Uniform("normalMatrix", normalMatrix); + + glEnableClientState(GL_VERTEX_ARRAY); + glEnableClientState(GL_NORMAL_ARRAY); + if (hasTexture()) { + glEnableClientState(GL_TEXTURE_COORD_ARRAY); + } + + glVertexPointer(3, GL_FLOAT, 0, getVerticesPointer()); + glNormalPointer(GL_FLOAT, 0, getNormalsPointer()); + if(hasTexture()) { + glTexCoordPointer(2, GL_FLOAT, 0, getUVTextureCoordinatesPointer()); + } + + // For each part of the mesh + for (unsigned int i=0; igetInterpolatedTransform(); + + // Compute the transform used for rendering the sphere + float matrix[16]; + transform.getOpenGLMatrix(matrix); + openglframework::Matrix4 newMatrix(matrix[0], matrix[4], matrix[8], matrix[12], + matrix[1], matrix[5], matrix[9], matrix[13], + matrix[2], matrix[6], matrix[10], matrix[14], + matrix[3], matrix[7], matrix[11], matrix[15]); + + // Apply the scaling matrix to have the correct sphere dimensions + mTransformMatrix = newMatrix * mScalingMatrix; +} diff --git a/examples/common/Capsule.h b/examples/common/Capsule.h new file mode 100644 index 00000000..e99f9fa4 --- /dev/null +++ b/examples/common/Capsule.h @@ -0,0 +1,81 @@ +/******************************************************************************** +* ReactPhysics3D physics library, http://code.google.com/p/reactphysics3d/ * +* Copyright (c) 2010-2013 Daniel Chappuis * +********************************************************************************* +* * +* This software is provided 'as-is', without any express or implied warranty. * +* In no event will the authors be held liable for any damages arising from the * +* use of this software. * +* * +* Permission is granted to anyone to use this software for any purpose, * +* including commercial applications, and to alter it and redistribute it * +* freely, subject to the following restrictions: * +* * +* 1. The origin of this software must not be misrepresented; you must not claim * +* that you wrote the original software. If you use this software in a * +* product, an acknowledgment in the product documentation would be * +* appreciated but is not required. * +* * +* 2. Altered source versions must be plainly marked as such, and must not be * +* misrepresented as being the original software. * +* * +* 3. This notice may not be removed or altered from any source distribution. * +* * +********************************************************************************/ + +#ifndef CAPSULE_H +#define CAPSULE_H + +// Libraries +#include "openglframework.h" +#include "reactphysics3d.h" + +// Class Sphere +class Capsule : public openglframework::Mesh { + + private : + + // -------------------- Attributes -------------------- // + + /// Radius of the capsule + float mRadius; + + /// Height of the capsule + float mHeight; + + /// Rigid body used to simulate the dynamics of the sphere + rp3d::RigidBody* mRigidBody; + + /// Scaling matrix (applied to a sphere to obtain the correct sphere dimensions) + openglframework::Matrix4 mScalingMatrix; + + // -------------------- Methods -------------------- // + + public : + + // -------------------- Methods -------------------- // + + /// Constructor + Capsule(float radius, float height, const openglframework::Vector3& position, + float mass, rp3d::DynamicsWorld* dynamicsWorld); + + /// Destructor + ~Capsule(); + + /// Return a pointer to the rigid body of the sphere + rp3d::RigidBody* getRigidBody(); + + /// Update the transform matrix of the sphere + void updateTransform(); + + /// Render the sphere at the correct position and with the correct orientation + void render(openglframework::Shader& shader, + const openglframework::Matrix4& worldToCameraMatrix); +}; + +// Return a pointer to the rigid body of the sphere +inline rp3d::RigidBody* Capsule::getRigidBody() { + return mRigidBody; +} + +#endif diff --git a/examples/common/meshes/capsule.obj b/examples/common/meshes/capsule.obj new file mode 100644 index 00000000..8479fb35 --- /dev/null +++ b/examples/common/meshes/capsule.obj @@ -0,0 +1,1060 @@ +# Blender v2.66 (sub 0) OBJ File: '' +v -0.195090 1.481026 0.000000 +v -0.382683 1.424120 0.000000 +v -0.555570 1.331710 0.000000 +v -0.707107 1.207348 0.000000 +v -0.831470 1.055811 0.000000 +v -0.923880 0.882924 0.000000 +v -0.980785 0.695331 0.000000 +v -1.000000 0.500241 0.000000 +v -0.191342 1.481026 -0.038060 +v -0.375330 1.424120 -0.074658 +v -0.544895 1.331710 -0.108386 +v -0.693520 1.207348 -0.137950 +v -0.815493 1.055811 -0.162212 +v -0.906127 0.882924 -0.180240 +v -0.961940 0.695331 -0.191342 +v -0.980785 0.500241 -0.195090 +v -0.180240 1.481026 -0.074658 +v -0.353553 1.424120 -0.146447 +v -0.513280 1.331710 -0.212608 +v -0.653281 1.207348 -0.270598 +v -0.768178 1.055811 -0.318190 +v -0.853553 0.882924 -0.353553 +v -0.906127 0.695331 -0.375330 +v -0.923880 0.500241 -0.382684 +v -0.162212 1.481026 -0.108387 +v -0.318190 1.424120 -0.212608 +v -0.461940 1.331710 -0.308658 +v -0.587938 1.207348 -0.392848 +v -0.691342 1.055811 -0.461940 +v -0.768178 0.882924 -0.513280 +v -0.815493 0.695331 -0.544895 +v -0.831470 0.500241 -0.555570 +v -0.137950 1.481026 -0.137950 +v -0.270598 1.424120 -0.270598 +v -0.392847 1.331710 -0.392848 +v -0.500000 1.207348 -0.500000 +v -0.587938 1.055811 -0.587938 +v -0.653281 0.882924 -0.653282 +v -0.693520 0.695331 -0.693520 +v -0.707107 0.500241 -0.707107 +v -0.108386 1.481026 -0.162212 +v -0.212607 1.424120 -0.318190 +v -0.308658 1.331710 -0.461940 +v -0.392847 1.207348 -0.587938 +v -0.461939 1.055811 -0.691342 +v -0.513280 0.882924 -0.768178 +v -0.544895 0.695331 -0.815493 +v -0.555570 0.500241 -0.831470 +v -0.074658 1.481026 -0.180240 +v -0.146446 1.424120 -0.353554 +v -0.212607 1.331710 -0.513280 +v -0.270598 1.207348 -0.653282 +v -0.318189 1.055811 -0.768178 +v -0.353553 0.882924 -0.853554 +v -0.375330 0.695331 -0.906128 +v -0.382683 0.500241 -0.923880 +v -0.038060 1.481026 -0.191342 +v -0.074658 1.424120 -0.375331 +v -0.108386 1.331710 -0.544895 +v -0.137949 1.207348 -0.693520 +v -0.162211 1.055811 -0.815493 +v -0.180240 0.882924 -0.906128 +v -0.191341 0.695331 -0.961940 +v -0.195090 0.500241 -0.980785 +v 0.000000 1.481026 -0.195091 +v 0.000000 1.424120 -0.382684 +v 0.000000 1.331710 -0.555570 +v 0.000000 1.207348 -0.707107 +v 0.000000 1.055811 -0.831470 +v 0.000000 0.882924 -0.923880 +v 0.000000 0.695331 -0.980785 +v 0.000000 0.500241 -1.000000 +v 0.038061 1.481026 -0.191342 +v 0.074658 1.424120 -0.375330 +v 0.108387 1.331710 -0.544895 +v 0.137950 1.207348 -0.693520 +v 0.162212 1.055811 -0.815493 +v 0.180240 0.882924 -0.906128 +v 0.191342 0.695331 -0.961940 +v 0.195091 0.500241 -0.980785 +v 0.074658 1.481026 -0.180240 +v 0.146447 1.424120 -0.353554 +v 0.212608 1.331710 -0.513280 +v 0.270599 1.207348 -0.653282 +v 0.318190 1.055811 -0.768178 +v 0.353554 0.882924 -0.853553 +v 0.375331 0.695331 -0.906127 +v 0.382684 0.500241 -0.923880 +v 0.108387 1.481026 -0.162212 +v 0.212608 1.424120 -0.318190 +v 0.308659 1.331710 -0.461940 +v 0.392848 1.207348 -0.587938 +v 0.461940 1.055811 -0.691342 +v 0.513280 0.882924 -0.768178 +v 0.544895 0.695331 -0.815493 +v 0.555571 0.500241 -0.831470 +v 0.137950 1.481026 -0.137950 +v 0.270599 1.424120 -0.270598 +v 0.392848 1.331710 -0.392848 +v 0.500000 1.207348 -0.500000 +v 0.587938 1.055811 -0.587938 +v 0.653282 0.882924 -0.653281 +v 0.693520 0.695331 -0.693520 +v 0.707107 0.500241 -0.707107 +v 0.162212 1.481026 -0.108386 +v 0.318190 1.424120 -0.212608 +v 0.461940 1.331710 -0.308658 +v 0.587938 1.207348 -0.392847 +v 0.691342 1.055811 -0.461940 +v 0.768178 0.882924 -0.513280 +v 0.815493 0.695331 -0.544895 +v 0.831470 0.500241 -0.555570 +v 0.180240 1.481026 -0.074658 +v 0.353554 1.424120 -0.146447 +v 0.513280 1.331710 -0.212608 +v 0.653282 1.207348 -0.270598 +v 0.768178 1.055811 -0.318190 +v 0.853554 0.882924 -0.353553 +v 0.906128 0.695331 -0.375330 +v 0.923880 0.500241 -0.382683 +v 0.191342 1.481026 -0.038060 +v 0.375331 1.424120 -0.074658 +v 0.544896 1.331710 -0.108386 +v 0.693520 1.207348 -0.137950 +v 0.815493 1.055811 -0.162212 +v 0.906128 0.882924 -0.180240 +v 0.961940 0.695331 -0.191342 +v 0.980785 0.500241 -0.195090 +v 0.195091 1.481026 0.000000 +v 0.382684 1.424120 0.000000 +v 0.555571 1.331710 0.000000 +v 0.707107 1.207348 0.000000 +v 0.831470 1.055811 0.000000 +v 0.923880 0.882924 0.000000 +v 0.980785 0.695331 0.000000 +v 1.000000 0.500241 0.000000 +v 0.191342 1.481026 0.038060 +v 0.375331 1.424120 0.074658 +v 0.544896 1.331710 0.108386 +v 0.693520 1.207348 0.137950 +v 0.815493 1.055811 0.162212 +v 0.906128 0.882924 0.180240 +v 0.961940 0.695331 0.191342 +v 0.980785 0.500241 0.195090 +v 0.180240 1.481026 0.074658 +v 0.353554 1.424120 0.146447 +v 0.513280 1.331710 0.212608 +v 0.653282 1.207348 0.270598 +v 0.768178 1.055811 0.318190 +v 0.853554 0.882924 0.353554 +v 0.906128 0.695331 0.375330 +v 0.923880 0.500241 0.382683 +v 0.162212 1.481026 0.108387 +v 0.318190 1.424120 0.212608 +v 0.461940 1.331710 0.308658 +v 0.587938 1.207348 0.392848 +v 0.691342 1.055811 0.461940 +v 0.768178 0.882924 0.513280 +v 0.815493 0.695331 0.544895 +v 0.831470 0.500241 0.555570 +v 0.137950 1.481026 0.137950 +v 0.270598 1.424120 0.270598 +v 0.392848 1.331710 0.392848 +v 0.500000 1.207348 0.500000 +v 0.587938 1.055811 0.587938 +v 0.653282 0.882924 0.653282 +v 0.693520 0.695331 0.693520 +v 0.707107 0.500241 0.707107 +v 0.108387 1.481026 0.162212 +v 0.212608 1.424120 0.318190 +v 0.308659 1.331710 0.461940 +v 0.392848 1.207348 0.587938 +v 0.461940 1.055811 0.691342 +v 0.513280 0.882924 0.768178 +v 0.544895 0.695331 0.815493 +v 0.555570 0.500241 0.831469 +v 0.074658 1.481026 0.180240 +v 0.146447 1.424120 0.353554 +v 0.212608 1.331710 0.513280 +v 0.270598 1.207348 0.653281 +v 0.318190 1.055811 0.768178 +v 0.353554 0.882924 0.853553 +v 0.375330 0.695331 0.906127 +v 0.382683 0.500241 0.923879 +v 0.038061 1.481026 0.191342 +v 0.074658 1.424120 0.375330 +v 0.108387 1.331710 0.544895 +v 0.137950 1.207348 0.693520 +v 0.162212 1.055811 0.815493 +v 0.180240 0.882924 0.906127 +v 0.191342 0.695331 0.961940 +v 0.195090 0.500241 0.980785 +v 0.000000 1.481026 0.195090 +v 0.000000 1.424120 0.382684 +v 0.000000 1.331710 0.555570 +v 0.000000 1.207348 0.707107 +v 0.000000 1.055811 0.831469 +v 0.000000 0.882924 0.923879 +v 0.000000 0.695331 0.980785 +v 0.000000 0.500241 1.000000 +v -0.038060 1.481026 0.191342 +v -0.074658 1.424120 0.375330 +v -0.108386 1.331710 0.544895 +v -0.137949 1.207348 0.693520 +v -0.162211 1.055811 0.815493 +v -0.180240 0.882924 0.906127 +v -0.191342 0.695331 0.961939 +v -0.195090 0.500241 0.980785 +v -0.074658 1.481026 0.180240 +v -0.146446 1.424120 0.353553 +v -0.212607 1.331710 0.513280 +v -0.270598 1.207348 0.653281 +v -0.318189 1.055811 0.768177 +v -0.353553 0.882924 0.853553 +v -0.375330 0.695331 0.906127 +v -0.382683 0.500241 0.923879 +v -0.108386 1.481026 0.162212 +v -0.212607 1.424120 0.318190 +v -0.308658 1.331710 0.461940 +v -0.392847 1.207348 0.587938 +v -0.461939 1.055811 0.691341 +v -0.513280 0.882924 0.768178 +v -0.544895 0.695331 0.815493 +v -0.555570 0.500241 0.831469 +v -0.137949 1.481026 0.137950 +v -0.270598 1.424120 0.270598 +v -0.392847 1.331710 0.392847 +v -0.500000 1.207348 0.500000 +v -0.587937 1.055811 0.587937 +v -0.653281 0.882924 0.653281 +v -0.693519 0.695331 0.693519 +v -0.707106 0.500241 0.707106 +v 0.000000 1.500241 0.000000 +v -0.162211 1.481026 0.108386 +v -0.318189 1.424120 0.212608 +v -0.461939 1.331710 0.308658 +v -0.587937 1.207348 0.392847 +v -0.691341 1.055811 0.461939 +v -0.768177 0.882924 0.513280 +v -0.815493 0.695331 0.544895 +v -0.831469 0.500241 0.555570 +v -0.180240 1.481026 0.074658 +v -0.353553 1.424120 0.146447 +v -0.513280 1.331710 0.212607 +v -0.653281 1.207348 0.270598 +v -0.768177 1.055811 0.318189 +v -0.853553 0.882924 0.353553 +v -0.906127 0.695331 0.375330 +v -0.923879 0.500241 0.382683 +v -0.191341 1.481026 0.038060 +v -0.375330 1.424120 0.074658 +v -0.544895 1.331710 0.108386 +v -0.693520 1.207348 0.137950 +v -0.815492 1.055811 0.162211 +v -0.906127 0.882924 0.180240 +v -0.961939 0.695331 0.191341 +v -0.980784 0.500241 0.195090 +v -1.000000 -0.503485 0.000000 +v -0.980785 -0.698576 0.000000 +v -0.923880 -0.886169 0.000000 +v -0.831470 -1.059056 0.000000 +v -0.707107 -1.210592 0.000000 +v -0.555570 -1.334955 0.000000 +v -0.382683 -1.427365 0.000000 +v -0.195090 -1.484271 0.000000 +v -0.980785 -0.503485 -0.195090 +v -0.961940 -0.698576 -0.191342 +v -0.906127 -0.886169 -0.180240 +v -0.815493 -1.059056 -0.162212 +v -0.693520 -1.210592 -0.137950 +v -0.544895 -1.334955 -0.108386 +v -0.375330 -1.427365 -0.074658 +v -0.191341 -1.484271 -0.038060 +v -0.923880 -0.503485 -0.382684 +v -0.906127 -0.698576 -0.375330 +v -0.853553 -0.886169 -0.353554 +v -0.768178 -1.059056 -0.318190 +v -0.653281 -1.210592 -0.270598 +v -0.513280 -1.334955 -0.212608 +v -0.353553 -1.427365 -0.146447 +v -0.180240 -1.484271 -0.074658 +v -0.831470 -0.503485 -0.555570 +v -0.815493 -0.698576 -0.544895 +v -0.768178 -0.886169 -0.513280 +v -0.691342 -1.059056 -0.461940 +v -0.587938 -1.210592 -0.392848 +v -0.461940 -1.334955 -0.308658 +v -0.318189 -1.427365 -0.212608 +v -0.162211 -1.484271 -0.108386 +v -0.707107 -0.503485 -0.707107 +v -0.693520 -0.698576 -0.693520 +v -0.653281 -0.886169 -0.653282 +v -0.587938 -1.059056 -0.587938 +v -0.500000 -1.210592 -0.500000 +v -0.392847 -1.334955 -0.392848 +v -0.270598 -1.427365 -0.270598 +v -0.137949 -1.484271 -0.137950 +v -0.555570 -0.503485 -0.831470 +v -0.544895 -0.698576 -0.815493 +v -0.513280 -0.886169 -0.768178 +v -0.461939 -1.059056 -0.691342 +v -0.392847 -1.210592 -0.587938 +v -0.308658 -1.334955 -0.461940 +v -0.212607 -1.427365 -0.318190 +v -0.108386 -1.484271 -0.162212 +v -0.382683 -0.503485 -0.923880 +v -0.375330 -0.698576 -0.906128 +v -0.353553 -0.886169 -0.853554 +v -0.318189 -1.059056 -0.768178 +v -0.270598 -1.210592 -0.653282 +v -0.212607 -1.334955 -0.513280 +v -0.146446 -1.427365 -0.353554 +v -0.074658 -1.484271 -0.180240 +v -0.195090 -0.503485 -0.980785 +v -0.191341 -0.698576 -0.961940 +v -0.180240 -0.886169 -0.906128 +v -0.162211 -1.059056 -0.815493 +v -0.137949 -1.210592 -0.693520 +v -0.108386 -1.334955 -0.544895 +v -0.074658 -1.427365 -0.375330 +v -0.038060 -1.484271 -0.191342 +v 0.000000 -0.503485 -1.000000 +v 0.000000 -0.698576 -0.980785 +v 0.000000 -0.886169 -0.923880 +v 0.000000 -1.059056 -0.831470 +v 0.000000 -1.210592 -0.707107 +v 0.000000 -1.334955 -0.555570 +v 0.000000 -1.427365 -0.382684 +v 0.000000 -1.484271 -0.195090 +v 0.195091 -0.503485 -0.980785 +v 0.191342 -0.698576 -0.961940 +v 0.180240 -0.886169 -0.906128 +v 0.162212 -1.059056 -0.815493 +v 0.137950 -1.210592 -0.693520 +v 0.108387 -1.334955 -0.544895 +v 0.074658 -1.427365 -0.375330 +v 0.038061 -1.484271 -0.191342 +v 0.382684 -0.503485 -0.923880 +v 0.375331 -0.698576 -0.906127 +v 0.353554 -0.886169 -0.853554 +v 0.318190 -1.059056 -0.768178 +v 0.270599 -1.210592 -0.653282 +v 0.212608 -1.334955 -0.513280 +v 0.146447 -1.427365 -0.353553 +v 0.074658 -1.484271 -0.180240 +v 0.555571 -0.503485 -0.831470 +v 0.544895 -0.698576 -0.815493 +v 0.513280 -0.886169 -0.768178 +v 0.461940 -1.059056 -0.691342 +v 0.392848 -1.210592 -0.587938 +v 0.308659 -1.334955 -0.461940 +v 0.212608 -1.427365 -0.318190 +v 0.108387 -1.484271 -0.162212 +v 0.707107 -0.503485 -0.707107 +v 0.693520 -0.698576 -0.693520 +v 0.653282 -0.886169 -0.653282 +v 0.587938 -1.059056 -0.587938 +v 0.500000 -1.210592 -0.500000 +v 0.392848 -1.334955 -0.392847 +v 0.270598 -1.427365 -0.270598 +v 0.137950 -1.484271 -0.137950 +v 0.831470 -0.503485 -0.555570 +v 0.815493 -0.698576 -0.544895 +v 0.768178 -0.886169 -0.513280 +v 0.691342 -1.059056 -0.461940 +v 0.587938 -1.210592 -0.392847 +v 0.461940 -1.334955 -0.308658 +v 0.318190 -1.427365 -0.212608 +v 0.162212 -1.484271 -0.108386 +v 0.923880 -0.503485 -0.382683 +v 0.906128 -0.698576 -0.375330 +v 0.853554 -0.886169 -0.353553 +v 0.768178 -1.059056 -0.318190 +v 0.653282 -1.210592 -0.270598 +v 0.513280 -1.334955 -0.212607 +v 0.353554 -1.427365 -0.146447 +v 0.180240 -1.484271 -0.074658 +v 0.980785 -0.503485 -0.195090 +v 0.961940 -0.698576 -0.191342 +v 0.906128 -0.886169 -0.180240 +v 0.815493 -1.059056 -0.162212 +v 0.693520 -1.210592 -0.137950 +v 0.544895 -1.334955 -0.108386 +v 0.375331 -1.427365 -0.074658 +v 0.191342 -1.484271 -0.038060 +v 1.000000 -0.503485 0.000000 +v 0.980785 -0.698576 0.000000 +v 0.923880 -0.886169 0.000000 +v 0.831470 -1.059056 0.000000 +v 0.707107 -1.210592 0.000000 +v 0.555571 -1.334955 0.000000 +v 0.382684 -1.427365 0.000000 +v 0.195091 -1.484271 0.000000 +v 0.980785 -0.503485 0.195090 +v 0.961940 -0.698576 0.191342 +v 0.906128 -0.886169 0.180240 +v 0.815493 -1.059056 0.162212 +v 0.693520 -1.210592 0.137950 +v 0.544895 -1.334955 0.108386 +v 0.375331 -1.427365 0.074658 +v 0.191342 -1.484271 0.038060 +v 0.923880 -0.503485 0.382683 +v 0.906128 -0.698576 0.375330 +v 0.853554 -0.886169 0.353553 +v 0.768178 -1.059056 0.318190 +v 0.653282 -1.210592 0.270598 +v 0.513280 -1.334955 0.212608 +v 0.353554 -1.427365 0.146447 +v 0.180240 -1.484271 0.074658 +v 0.831470 -0.503485 0.555570 +v 0.815493 -0.698576 0.544895 +v 0.768178 -0.886169 0.513280 +v 0.691342 -1.059056 0.461940 +v 0.587938 -1.210592 0.392848 +v 0.461940 -1.334955 0.308658 +v 0.318190 -1.427365 0.212608 +v 0.162212 -1.484271 0.108386 +v 0.707107 -0.503485 0.707107 +v 0.693520 -0.698576 0.693520 +v 0.653282 -0.886169 0.653282 +v 0.587938 -1.059056 0.587938 +v 0.500000 -1.210592 0.500000 +v 0.392848 -1.334955 0.392848 +v 0.270598 -1.427365 0.270598 +v 0.137950 -1.484271 0.137950 +v 0.555570 -0.503485 0.831469 +v 0.544895 -0.698576 0.815493 +v 0.513280 -0.886169 0.768178 +v 0.461940 -1.059056 0.691342 +v 0.392848 -1.210592 0.587938 +v 0.308659 -1.334955 0.461940 +v 0.212608 -1.427365 0.318190 +v 0.108387 -1.484271 0.162212 +v 0.000000 -1.503485 0.000000 +v 0.382683 -0.503485 0.923879 +v 0.375330 -0.698576 0.906127 +v 0.353554 -0.886169 0.853553 +v 0.318190 -1.059056 0.768178 +v 0.270598 -1.210592 0.653281 +v 0.212608 -1.334955 0.513280 +v 0.146447 -1.427365 0.353553 +v 0.074658 -1.484271 0.180240 +v 0.195090 -0.503485 0.980785 +v 0.191342 -0.698576 0.961940 +v 0.180240 -0.886169 0.906128 +v 0.162212 -1.059056 0.815493 +v 0.137950 -1.210592 0.693520 +v 0.108387 -1.334955 0.544895 +v 0.074658 -1.427365 0.375330 +v 0.038061 -1.484271 0.191342 +v 0.000000 -0.503485 1.000000 +v 0.000000 -0.698576 0.980785 +v 0.000000 -0.886169 0.923880 +v 0.000000 -1.059056 0.831469 +v 0.000000 -1.210592 0.707107 +v 0.000000 -1.334955 0.555570 +v 0.000000 -1.427365 0.382683 +v 0.000000 -1.484271 0.195090 +v -0.195090 -0.503485 0.980785 +v -0.191342 -0.698576 0.961939 +v -0.180240 -0.886169 0.906127 +v -0.162211 -1.059056 0.815493 +v -0.137949 -1.210592 0.693520 +v -0.108386 -1.334955 0.544895 +v -0.074658 -1.427365 0.375330 +v -0.038060 -1.484271 0.191342 +v -0.382683 -0.503485 0.923879 +v -0.375330 -0.698576 0.906127 +v -0.353553 -0.886169 0.853553 +v -0.318189 -1.059056 0.768177 +v -0.270598 -1.210592 0.653281 +v -0.212607 -1.334955 0.513280 +v -0.146446 -1.427365 0.353553 +v -0.074657 -1.484271 0.180240 +v -0.555570 -0.503485 0.831469 +v -0.544895 -0.698576 0.815493 +v -0.513280 -0.886169 0.768178 +v -0.461939 -1.059056 0.691341 +v -0.392847 -1.210592 0.587938 +v -0.308658 -1.334955 0.461940 +v -0.212607 -1.427365 0.318190 +v -0.108386 -1.484271 0.162212 +v -0.707106 -0.503485 0.707106 +v -0.693519 -0.698576 0.693519 +v -0.653281 -0.886169 0.653281 +v -0.587937 -1.059056 0.587937 +v -0.500000 -1.210592 0.500000 +v -0.392847 -1.334955 0.392847 +v -0.270598 -1.427365 0.270598 +v -0.137949 -1.484271 0.137950 +v -0.831469 -0.503485 0.555570 +v -0.815493 -0.698576 0.544895 +v -0.768178 -0.886169 0.513280 +v -0.691341 -1.059056 0.461939 +v -0.587937 -1.210592 0.392847 +v -0.461939 -1.334955 0.308658 +v -0.318189 -1.427365 0.212608 +v -0.162211 -1.484271 0.108386 +v -0.923879 -0.503485 0.382683 +v -0.906127 -0.698576 0.375330 +v -0.853553 -0.886169 0.353553 +v -0.768177 -1.059056 0.318189 +v -0.653281 -1.210592 0.270598 +v -0.513280 -1.334955 0.212607 +v -0.353553 -1.427365 0.146447 +v -0.180240 -1.484271 0.074658 +v -0.980784 -0.503485 0.195090 +v -0.961939 -0.698576 0.191341 +v -0.906127 -0.886169 0.180240 +v -0.815492 -1.059056 0.162211 +v -0.693520 -1.210592 0.137950 +v -0.544895 -1.334955 0.108386 +v -0.375330 -1.427365 0.074658 +v -0.191341 -1.484271 0.038060 +s off +f 7 6 14 15 +f 8 7 15 16 +f 2 1 9 10 +f 3 2 10 11 +f 4 3 11 12 +f 5 4 12 13 +f 6 5 13 14 +f 11 10 18 19 +f 12 11 19 20 +f 13 12 20 21 +f 14 13 21 22 +f 15 14 22 23 +f 16 15 23 24 +f 10 9 17 18 +f 23 22 30 31 +f 24 23 31 32 +f 18 17 25 26 +f 19 18 26 27 +f 20 19 27 28 +f 21 20 28 29 +f 22 21 29 30 +f 29 28 36 37 +f 30 29 37 38 +f 31 30 38 39 +f 32 31 39 40 +f 26 25 33 34 +f 27 26 34 35 +f 28 27 35 36 +f 35 34 42 43 +f 36 35 43 44 +f 37 36 44 45 +f 38 37 45 46 +f 39 38 46 47 +f 40 39 47 48 +f 34 33 41 42 +f 47 46 54 55 +f 48 47 55 56 +f 42 41 49 50 +f 43 42 50 51 +f 44 43 51 52 +f 45 44 52 53 +f 46 45 53 54 +f 53 52 60 61 +f 54 53 61 62 +f 55 54 62 63 +f 56 55 63 64 +f 50 49 57 58 +f 51 50 58 59 +f 52 51 59 60 +f 58 57 65 66 +f 59 58 66 67 +f 60 59 67 68 +f 61 60 68 69 +f 62 61 69 70 +f 63 62 70 71 +f 64 63 71 72 +f 70 69 77 78 +f 71 70 78 79 +f 72 71 79 80 +f 66 65 73 74 +f 67 66 74 75 +f 68 67 75 76 +f 69 68 76 77 +f 76 75 83 84 +f 77 76 84 85 +f 78 77 85 86 +f 79 78 86 87 +f 80 79 87 88 +f 74 73 81 82 +f 75 74 82 83 +f 88 87 95 96 +f 82 81 89 90 +f 83 82 90 91 +f 84 83 91 92 +f 85 84 92 93 +f 86 85 93 94 +f 87 86 94 95 +f 94 93 101 102 +f 95 94 102 103 +f 96 95 103 104 +f 90 89 97 98 +f 91 90 98 99 +f 92 91 99 100 +f 93 92 100 101 +f 100 99 107 108 +f 101 100 108 109 +f 102 101 109 110 +f 103 102 110 111 +f 104 103 111 112 +f 98 97 105 106 +f 99 98 106 107 +f 112 111 119 120 +f 106 105 113 114 +f 107 106 114 115 +f 108 107 115 116 +f 109 108 116 117 +f 110 109 117 118 +f 111 110 118 119 +f 118 117 125 126 +f 119 118 126 127 +f 120 119 127 128 +f 114 113 121 122 +f 115 114 122 123 +f 116 115 123 124 +f 117 116 124 125 +f 124 123 131 132 +f 125 124 132 133 +f 126 125 133 134 +f 127 126 134 135 +f 128 127 135 136 +f 122 121 129 130 +f 123 122 130 131 +f 136 135 143 144 +f 130 129 137 138 +f 131 130 138 139 +f 132 131 139 140 +f 133 132 140 141 +f 134 133 141 142 +f 135 134 142 143 +f 141 140 148 149 +f 142 141 149 150 +f 143 142 150 151 +f 144 143 151 152 +f 138 137 145 146 +f 139 138 146 147 +f 140 139 147 148 +f 147 146 154 155 +f 148 147 155 156 +f 149 148 156 157 +f 150 149 157 158 +f 151 150 158 159 +f 152 151 159 160 +f 146 145 153 154 +f 159 158 166 167 +f 160 159 167 168 +f 154 153 161 162 +f 155 154 162 163 +f 156 155 163 164 +f 157 156 164 165 +f 158 157 165 166 +f 165 164 172 173 +f 166 165 173 174 +f 167 166 174 175 +f 168 167 175 176 +f 162 161 169 170 +f 163 162 170 171 +f 164 163 171 172 +f 171 170 178 179 +f 172 171 179 180 +f 173 172 180 181 +f 174 173 181 182 +f 175 174 182 183 +f 176 175 183 184 +f 170 169 177 178 +f 183 182 190 191 +f 184 183 191 192 +f 178 177 185 186 +f 179 178 186 187 +f 180 179 187 188 +f 181 180 188 189 +f 182 181 189 190 +f 189 188 196 197 +f 190 189 197 198 +f 191 190 198 199 +f 192 191 199 200 +f 186 185 193 194 +f 187 186 194 195 +f 188 187 195 196 +f 195 194 202 203 +f 196 195 203 204 +f 197 196 204 205 +f 198 197 205 206 +f 199 198 206 207 +f 200 199 207 208 +f 194 193 201 202 +f 207 206 214 215 +f 208 207 215 216 +f 202 201 209 210 +f 203 202 210 211 +f 204 203 211 212 +f 205 204 212 213 +f 206 205 213 214 +f 212 211 219 220 +f 213 212 220 221 +f 214 213 221 222 +f 215 214 222 223 +f 216 215 223 224 +f 210 209 217 218 +f 211 210 218 219 +f 224 223 231 232 +f 218 217 225 226 +f 219 218 226 227 +f 220 219 227 228 +f 221 220 228 229 +f 222 221 229 230 +f 223 222 230 231 +f 230 229 238 239 +f 231 230 239 240 +f 232 231 240 241 +f 226 225 234 235 +f 227 226 235 236 +f 228 227 236 237 +f 229 228 237 238 +f 237 236 244 245 +f 238 237 245 246 +f 239 238 246 247 +f 240 239 247 248 +f 241 240 248 249 +f 235 234 242 243 +f 236 235 243 244 +f 249 248 256 257 +f 243 242 250 251 +f 244 243 251 252 +f 245 244 252 253 +f 246 245 253 254 +f 247 246 254 255 +f 248 247 255 256 +f 1 233 9 +f 9 233 17 +f 17 233 25 +f 25 233 33 +f 33 233 41 +f 41 233 49 +f 49 233 57 +f 57 233 65 +f 65 233 73 +f 73 233 81 +f 81 233 89 +f 89 233 97 +f 97 233 105 +f 105 233 113 +f 113 233 121 +f 121 233 129 +f 129 233 137 +f 137 233 145 +f 145 233 153 +f 153 233 161 +f 161 233 169 +f 169 233 177 +f 177 233 185 +f 185 233 193 +f 193 233 201 +f 201 233 209 +f 209 233 217 +f 217 233 225 +f 225 233 234 +f 234 233 242 +f 242 233 250 +f 255 254 5 6 +f 256 255 6 7 +f 250 233 1 +f 257 256 7 8 +f 251 250 1 2 +f 252 251 2 3 +f 253 252 3 4 +f 254 253 4 5 +f 263 262 270 271 +f 264 263 271 272 +f 265 264 272 273 +f 259 258 266 267 +f 260 259 267 268 +f 261 260 268 269 +f 262 261 269 270 +f 273 272 280 281 +f 267 266 274 275 +f 268 267 275 276 +f 269 268 276 277 +f 270 269 277 278 +f 271 270 278 279 +f 272 271 279 280 +f 279 278 286 287 +f 280 279 287 288 +f 281 280 288 289 +f 275 274 282 283 +f 276 275 283 284 +f 277 276 284 285 +f 278 277 285 286 +f 285 284 292 293 +f 286 285 293 294 +f 287 286 294 295 +f 288 287 295 296 +f 289 288 296 297 +f 283 282 290 291 +f 284 283 291 292 +f 297 296 304 305 +f 291 290 298 299 +f 292 291 299 300 +f 293 292 300 301 +f 294 293 301 302 +f 295 294 302 303 +f 296 295 303 304 +f 303 302 310 311 +f 304 303 311 312 +f 305 304 312 313 +f 299 298 306 307 +f 300 299 307 308 +f 301 300 308 309 +f 302 301 309 310 +f 309 308 316 317 +f 310 309 317 318 +f 311 310 318 319 +f 312 311 319 320 +f 313 312 320 321 +f 307 306 314 315 +f 308 307 315 316 +f 321 320 328 329 +f 315 314 322 323 +f 316 315 323 324 +f 317 316 324 325 +f 318 317 325 326 +f 319 318 326 327 +f 320 319 327 328 +f 327 326 334 335 +f 328 327 335 336 +f 329 328 336 337 +f 323 322 330 331 +f 324 323 331 332 +f 325 324 332 333 +f 326 325 333 334 +f 332 331 339 340 +f 333 332 340 341 +f 334 333 341 342 +f 335 334 342 343 +f 336 335 343 344 +f 337 336 344 345 +f 331 330 338 339 +f 344 343 351 352 +f 345 344 352 353 +f 339 338 346 347 +f 340 339 347 348 +f 341 340 348 349 +f 342 341 349 350 +f 343 342 350 351 +f 350 349 357 358 +f 351 350 358 359 +f 352 351 359 360 +f 353 352 360 361 +f 347 346 354 355 +f 348 347 355 356 +f 349 348 356 357 +f 356 355 363 364 +f 357 356 364 365 +f 358 357 365 366 +f 359 358 366 367 +f 360 359 367 368 +f 361 360 368 369 +f 355 354 362 363 +f 368 367 375 376 +f 369 368 376 377 +f 363 362 370 371 +f 364 363 371 372 +f 365 364 372 373 +f 366 365 373 374 +f 367 366 374 375 +f 374 373 381 382 +f 375 374 382 383 +f 376 375 383 384 +f 377 376 384 385 +f 371 370 378 379 +f 372 371 379 380 +f 373 372 380 381 +f 380 379 387 388 +f 381 380 388 389 +f 382 381 389 390 +f 383 382 390 391 +f 384 383 391 392 +f 385 384 392 393 +f 379 378 386 387 +f 392 391 399 400 +f 393 392 400 401 +f 387 386 394 395 +f 388 387 395 396 +f 389 388 396 397 +f 390 389 397 398 +f 391 390 398 399 +f 398 397 405 406 +f 399 398 406 407 +f 400 399 407 408 +f 401 400 408 409 +f 395 394 402 403 +f 396 395 403 404 +f 397 396 404 405 +f 403 402 410 411 +f 404 403 411 412 +f 405 404 412 413 +f 406 405 413 414 +f 407 406 414 415 +f 408 407 415 416 +f 409 408 416 417 +f 415 414 422 423 +f 416 415 423 424 +f 417 416 424 425 +f 411 410 418 419 +f 412 411 419 420 +f 413 412 420 421 +f 414 413 421 422 +f 421 420 428 429 +f 422 421 429 430 +f 423 422 430 431 +f 424 423 431 432 +f 425 424 432 433 +f 419 418 426 427 +f 420 419 427 428 +f 433 432 441 442 +f 427 426 435 436 +f 428 427 436 437 +f 429 428 437 438 +f 430 429 438 439 +f 431 430 439 440 +f 432 431 440 441 +f 440 439 447 448 +f 441 440 448 449 +f 442 441 449 450 +f 436 435 443 444 +f 437 436 444 445 +f 438 437 445 446 +f 439 438 446 447 +f 446 445 453 454 +f 447 446 454 455 +f 448 447 455 456 +f 449 448 456 457 +f 450 449 457 458 +f 444 443 451 452 +f 445 444 452 453 +f 458 457 465 466 +f 452 451 459 460 +f 453 452 460 461 +f 454 453 461 462 +f 455 454 462 463 +f 456 455 463 464 +f 457 456 464 465 +f 464 463 471 472 +f 465 464 472 473 +f 466 465 473 474 +f 460 459 467 468 +f 461 460 468 469 +f 462 461 469 470 +f 463 462 470 471 +f 470 469 477 478 +f 471 470 478 479 +f 472 471 479 480 +f 473 472 480 481 +f 474 473 481 482 +f 468 467 475 476 +f 469 468 476 477 +f 482 481 489 490 +f 476 475 483 484 +f 477 476 484 485 +f 478 477 485 486 +f 479 478 486 487 +f 480 479 487 488 +f 481 480 488 489 +f 487 486 494 495 +f 488 487 495 496 +f 489 488 496 497 +f 490 489 497 498 +f 484 483 491 492 +f 485 484 492 493 +f 486 485 493 494 +f 493 492 500 501 +f 494 493 501 502 +f 495 494 502 503 +f 496 495 503 504 +f 497 496 504 505 +f 498 497 505 506 +f 492 491 499 500 +f 505 504 512 513 +f 506 505 513 514 +f 500 499 507 508 +f 501 500 508 509 +f 502 501 509 510 +f 503 502 510 511 +f 504 503 511 512 +f 434 265 273 +f 434 273 281 +f 434 281 289 +f 434 289 297 +f 434 297 305 +f 434 305 313 +f 434 313 321 +f 434 321 329 +f 434 329 337 +f 434 337 345 +f 434 345 353 +f 434 353 361 +f 434 361 369 +f 434 369 377 +f 434 377 385 +f 434 385 393 +f 434 393 401 +f 434 401 409 +f 434 409 417 +f 434 417 425 +f 434 425 433 +f 434 433 442 +f 434 442 450 +f 434 450 458 +f 434 458 466 +f 434 466 474 +f 434 474 482 +f 434 482 490 +f 434 490 498 +f 434 498 506 +f 434 506 514 +f 511 510 261 262 +f 512 511 262 263 +f 513 512 263 264 +f 514 513 264 265 +f 508 507 258 259 +f 434 514 265 +f 509 508 259 260 +f 510 509 260 261 +f 128 378 370 120 +f 120 370 362 112 +f 136 386 378 128 +f 144 394 386 136 +f 152 402 394 144 +f 402 152 160 410 +f 168 418 410 160 +f 176 426 418 168 +f 426 176 184 435 +f 192 443 435 184 +f 200 451 443 192 +f 451 200 208 459 +f 216 467 459 208 +f 224 475 467 216 +f 232 483 475 224 +f 241 491 483 232 +f 249 499 491 241 +f 257 507 499 249 +f 8 258 507 257 +f 16 266 258 8 +f 266 16 24 274 +f 32 282 274 24 +f 40 290 282 32 +f 290 40 48 298 +f 56 306 298 48 +f 64 314 306 56 +f 314 64 72 322 +f 80 330 322 72 +f 88 338 330 80 +f 96 346 338 88 +f 104 354 346 96 +f 112 362 354 104