From bc92cc37c50bf7a6171ab7c8df882d54a4da86d1 Mon Sep 17 00:00:00 2001 From: mattoverby Date: Wed, 20 Aug 2025 18:09:17 -0500 Subject: [PATCH 1/9] update readme --- README.md | 93 +++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 91 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 74e7534..024906b 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,91 @@ -# optimization-cloth-tutorial -A tutorial to implicit cloth simulation with numerical optimization +# Implicit Cloth Simulation with Gradient Descent + +A gentle introduction to optimization-based implicit time integration for [CSCI 5611](https://umtc.catalog.prod.coursedog.com/courses/8103481). + +_This is a work in progress. I released this around 2021 and it hasn't seen many updates. Please let me know if you have suggestions: mattoverby@gmail.com_ + +## Introduction + +Cloth simulation is standard coursework for undergraduate computer graphics. +Many assignments focus on explicit methods like [forward Euler](https://en.wikipedia.org/wiki/Euler_method). +While efficient and simple, explicit integrators are notoriously unstable for large time steps and high stiffness. +Implicit methods, e.g., [backward Euler](https://en.wikipedia.org/wiki/Backward_Euler_method), offer a solution to that problem. +The standard [Baraff & Witkin approach](https://doi.org/10.1145/280814.280821) (B&W) forms a Taylor approximation to the Eqs. of motion, i.e., Newton's method. +This results in a block-sparse linear system for which the velocity deltas are solved via [conjugate gradient](https://www.cs.cmu.edu/~quake-papers/painless-conjugate-gradient.pdf). + +The B&W method is conceptually straight forward. However, there are numerous gotchas not apparent in the original references. +In particular, working out the Jacobians of some models can be nontrivial. Even when correct, the derivatives can still produce hard-to-debug instabilities. +The [dynamic deformables course notes](https://doi.org/10.1145/3388769.3407490) describes this well, and I highly recommend reviewing the later chapters on cloth simulation for a thorough review of the topic. +Nonetheless, implicit time integration remains a valuable and sometimes necessary tool for modern graphics applications. + +Recently, optimization-based methods have grown in popularity. This approach formulates the Eqs. of motion as an [iteratively minimized objective function](https://en.wikipedia.org/wiki/Optimization_problem). +These methods provide unparalleled robustness and extensibility, e.g., [state of the art solvers](https://doi.org/10.1145/3450626.3459767) for cloth simulation. +The implementation is often easier to construct piece-by-piece than B&W-style integrators. + +Below we describe a simple implicit solver for mass-spring systems using gradient descent. +This is meant solely as a tutorial to optimization-based time stepping, and not for practical applications. +For that, you'll want to consider higher-order optimization algorithms or [local-global type solvers](https://github.com/alecjacobson/computer-graphics-mass-spring-systems). + +## Implementation + +The objective we aim to minimize is the sum of internal elastic energy potentials plus a quadratic penalty of linear momentum: + +,
+, + +for vertex locations *x*, time step (sec) *h*, diagonal mass matrix *M*, velocities *v*, and external forces (gravity, wind, etc...) +. The term is the *explicit predictor* +that is computed at the beginning of the time step. Computing a frame of animation amounts to iteratively minimizing the above objective until some convergence criteria is met +(e.g., the norm of the gradient is below some threshold). + +### Interface + +Below we lay out the steps to produce an optimization-based solver for implicit cloth simulation. +The dependencies will be fetched through a [DownloadProject](https://github.com/Crascit/DownloadProject) CMake script. +[Eigen](https://eigen.tuxfamily.org) is used for linear algebra, which is an industry standard library for vector math. +Rendering and mesh I/O is handled with [libigl](https://libigl.github.io) which also contains many excellent routines for mesh processing. +In libigl, meshes are stored as two dense matrices, an nx3 matrix for vertices and an mx3 matrix for faces. +Animating the mesh is done through a pre-draw callback in which we call our solver to update the vertex positions. +It takes a little finesse to improve the rendering, so we'll save that for another day. + +To compile, execute the following commands: +1. mkdir build +2. cd build +3. cmake .. +4. make -j + +### Energies + +Whenever I write a new simulator, I start with the most basic elastic energy as the deformable primitives: a Hookean spring with stiffness *k* and rest length . The potential energy of a spring is . +These springs are created from the unique edges of tCe triangle mesh, with bending springs created between adjacent triangles. +The [Cloth class](src/cloth.hpp) generates this data given vertex and face buffers. +We can also evaluate temporary springs to deal with collisions. One end point is the vertex, and the other is the projection onto the surface it's penetrating. + +### Optimization + +[Gradient descent](https://en.wikipedia.org/wiki/Gradient_descent) is a simple first-order method that steps along the negative gradient w.r.t. *x* at each iteration: . We use *i* to denote the iteration and *p* as the descent direction. By all accounts, gradient descent is a poor choice due to its low rate of convergence. You can certainly improve performance with other higher-order optimizers. However, I personally advocate starting with gradient descent when writing new optimization code. The optimizer is so simple it's hard to make a mistake - if there are bugs, they are surely in your energy or gradient calculations. This can be a helpful debugging strategy! + +Each iteration, we have to make sure we aren't overshooting the objective and increase the energy. This is accomplished by scaling the descent direction with a scalar *s* using [line search](https://en.wikipedia.org/wiki/Line_search). All together, an iteration of gradient descent involves: + +,
+,
+. + +Both energy and gradient use similar calculations so you can save resources (and implementation efforts) by computing them both at same time. I like to use one function for both and skip gradient calculation with a conditional during line search. You can see the evaluation of the objective and gradient in the [Objective class](src/Objective.hpp), with gradient descent in [Solver](src/Solver.hpp). + +### Common Problems +With these pieces you have enough to implement an implicit cloth solver. But there are a number of common problems to be aware of if your solver starts behaving erratically: +- Using masses that aren't scaled by the area of the mesh +- The cloth mesh is unrealistically large or small: Each unit of the implementation should correspond to one meter or centimeter. Whatever you choose, be consistent. +- The time step is too large or small (it should be somewhere between 1/1000 and 1/20) +- Forgetting to resize or initialize matrix values +- Dividing by zero and error propogation: A single zero-length spring can produce instabilities, as its result is passed all the way up the food chain to the solver. Using asserts, guards, and std::isfinite any time you do a division will save you a lot of trouble (see the [Objective class](src/Objective.hpp) for an example). + +## Next Steps + +There are many ways to improve the solver illustrated above: +- Parallelizing the objective and gradient calculation (I recommend [TBB](https://software.intel.com/en-us/oneapi/onetbb)) +- Collision against triangle meshes with a [signed distance field](https://github.com/InteractiveComputerGraphics/TriangleMeshDistance) +- Better energy models with triangular elements ([Dynamic Deformables appendix D](https://doi.org/10.1145/3388769.3407490)) +- Preconditioning or accelerated versions of gradient descent +- Optimizers with better convergence like [L-BFGS](https://en.wikipedia.org/wiki/Limited-memory_BFGS) or [projected Newton](https://doi.org/10.1145/1073368.1073394) From 178d48de4401a74ee47d9657fa1a2f4820cc23dd Mon Sep 17 00:00:00 2001 From: mattoverby Date: Wed, 20 Aug 2025 19:16:17 -0500 Subject: [PATCH 2/9] added src --- .gitignore | 1 - README.md | 2 +- cmake/libigl.cmake | 11 + data/plane.obj | 3966 +++++++++++++++++++++++++++++++++++++++++++ data/sphere.obj | 2564 ++++++++++++++++++++++++++++ src/ClothAssert.hpp | 48 + src/ClothMesh.hpp | 140 ++ src/Objective.hpp | 108 ++ src/Solver.hpp | 133 ++ src/main.cpp | 91 + 10 files changed, 7062 insertions(+), 2 deletions(-) create mode 100644 cmake/libigl.cmake create mode 100644 data/plane.obj create mode 100644 data/sphere.obj create mode 100644 src/ClothAssert.hpp create mode 100644 src/ClothMesh.hpp create mode 100644 src/Objective.hpp create mode 100644 src/Solver.hpp create mode 100644 src/main.cpp diff --git a/.gitignore b/.gitignore index d4fb281..8ea30e8 100644 --- a/.gitignore +++ b/.gitignore @@ -5,7 +5,6 @@ *.slo *.lo *.o -*.obj # Precompiled Headers *.gch diff --git a/README.md b/README.md index 024906b..465159a 100644 --- a/README.md +++ b/README.md @@ -58,7 +58,7 @@ To compile, execute the following commands: Whenever I write a new simulator, I start with the most basic elastic energy as the deformable primitives: a Hookean spring with stiffness *k* and rest length . The potential energy of a spring is . These springs are created from the unique edges of tCe triangle mesh, with bending springs created between adjacent triangles. -The [Cloth class](src/cloth.hpp) generates this data given vertex and face buffers. +The [ClothMesh class](src/ClothMesh.hpp) generates this data given vertex and face buffers. We can also evaluate temporary springs to deal with collisions. One end point is the vertex, and the other is the projection onto the surface it's penetrating. ### Optimization diff --git a/cmake/libigl.cmake b/cmake/libigl.cmake new file mode 100644 index 0000000..1aae978 --- /dev/null +++ b/cmake/libigl.cmake @@ -0,0 +1,11 @@ +if(TARGET igl::core) + return() +endif() + +include(FetchContent) +FetchContent_Declare( + libigl + GIT_REPOSITORY https://github.com/libigl/libigl.git + GIT_TAG v2.5.0 +) +FetchContent_MakeAvailable(libigl) \ No newline at end of file diff --git a/data/plane.obj b/data/plane.obj new file mode 100644 index 0000000..a4f9c26 --- /dev/null +++ b/data/plane.obj @@ -0,0 +1,3966 @@ +v 0.778336 0.000000 0.778336 +v 0.778336 0.000000 1.000000 +v 1.000000 0.000000 1.000000 +v 1.000000 0.000000 0.778336 +v 0.556664 0.000000 0.778336 +v 0.556664 0.000000 1.000000 +v 0.335000 0.000000 0.778336 +v 0.335000 0.000000 1.000000 +v 0.113336 0.000000 0.778336 +v 0.113336 0.000000 1.000000 +v -0.108336 0.000000 0.778336 +v -0.108336 0.000000 1.000000 +v -0.330000 0.000000 0.778336 +v -0.330000 0.000000 1.000000 +v -0.551664 0.000000 0.778336 +v -0.551664 0.000000 1.000000 +v -0.773336 0.000000 0.778336 +v -0.773336 0.000000 1.000000 +v -0.995000 0.000000 0.778336 +v -0.995000 0.000000 1.000000 +v 0.778336 0.000000 0.556664 +v 1.000000 0.000000 0.556664 +v 0.556664 0.000000 0.556664 +v 0.335000 0.000000 0.556664 +v 0.113336 0.000000 0.556664 +v -0.108336 0.000000 0.556664 +v -0.330000 0.000000 0.556664 +v -0.551664 0.000000 0.556664 +v -0.773336 0.000000 0.556664 +v -0.995000 0.000000 0.556664 +v 0.778336 0.000000 0.335000 +v 1.000000 0.000000 0.335000 +v 0.556664 0.000000 0.335000 +v 0.335000 0.000000 0.335000 +v 0.113336 0.000000 0.335000 +v -0.108336 0.000000 0.335000 +v -0.330000 0.000000 0.335000 +v -0.551664 0.000000 0.335000 +v -0.773336 0.000000 0.335000 +v -0.995000 0.000000 0.335000 +v 0.778336 0.000000 0.113336 +v 1.000000 0.000000 0.113336 +v 0.556664 0.000000 0.113336 +v 0.335000 0.000000 0.113336 +v 0.113336 0.000000 0.113336 +v -0.108336 0.000000 0.113336 +v -0.330000 0.000000 0.113336 +v -0.551664 0.000000 0.113336 +v -0.773336 0.000000 0.113336 +v -0.995000 0.000000 0.113336 +v 0.778336 0.000000 -0.108336 +v 1.000000 0.000000 -0.108336 +v 0.556664 0.000000 -0.108336 +v 0.335000 0.000000 -0.108336 +v 0.113336 0.000000 -0.108336 +v -0.108336 0.000000 -0.108336 +v -0.330000 0.000000 -0.108336 +v -0.551664 0.000000 -0.108336 +v -0.773336 0.000000 -0.108336 +v -0.995000 0.000000 -0.108336 +v 0.778336 0.000000 -0.330000 +v 1.000000 0.000000 -0.330000 +v 0.556664 0.000000 -0.330000 +v 0.335000 0.000000 -0.330000 +v 0.113336 0.000000 -0.330000 +v -0.108336 0.000000 -0.330000 +v -0.330000 0.000000 -0.330000 +v -0.551664 0.000000 -0.330000 +v -0.773336 0.000000 -0.330000 +v -0.995000 0.000000 -0.330000 +v 0.778336 0.000000 -0.551664 +v 1.000000 0.000000 -0.551664 +v 0.556664 0.000000 -0.551664 +v 0.335000 0.000000 -0.551664 +v 0.113336 0.000000 -0.551664 +v -0.108336 0.000000 -0.551664 +v -0.330000 0.000000 -0.551664 +v -0.551664 0.000000 -0.551664 +v -0.773336 0.000000 -0.551664 +v -0.995000 0.000000 -0.551664 +v 0.778336 0.000000 -0.773336 +v 1.000000 0.000000 -0.773336 +v 0.556664 0.000000 -0.773336 +v 0.335000 0.000000 -0.773336 +v 0.113336 0.000000 -0.773336 +v -0.108336 0.000000 -0.773336 +v -0.330000 0.000000 -0.773336 +v -0.551664 0.000000 -0.773336 +v -0.773336 0.000000 -0.773336 +v -0.995000 0.000000 -0.773336 +v 0.778336 0.000000 -0.995000 +v 1.000000 0.000000 -0.995000 +v 0.556664 0.000000 -0.995000 +v 0.335000 0.000000 -0.995000 +v 0.113336 0.000000 -0.995000 +v -0.108336 0.000000 -0.995000 +v -0.330000 0.000000 -0.995000 +v -0.551664 0.000000 -0.995000 +v -0.773336 0.000000 -0.995000 +v -0.995000 0.000000 -0.995000 +v 0.778336 0.000000 0.889168 +v 0.889168 0.000000 1.000000 +v 0.889168 0.000000 0.889168 +v 1.000000 0.000000 0.889168 +v 0.889168 0.000000 0.778336 +v 0.556664 0.000000 0.889168 +v 0.667500 0.000000 1.000000 +v 0.667500 0.000000 0.889168 +v 0.667500 0.000000 0.778336 +v 0.335000 0.000000 0.889168 +v 0.445832 0.000000 1.000000 +v 0.445832 0.000000 0.889168 +v 0.445832 0.000000 0.778336 +v 0.113336 0.000000 0.889168 +v 0.224168 0.000000 1.000000 +v 0.224168 0.000000 0.889168 +v 0.224168 0.000000 0.778336 +v -0.108336 0.000000 0.889168 +v 0.002500 0.000000 1.000000 +v 0.002500 0.000000 0.889168 +v 0.002500 0.000000 0.778336 +v -0.330000 0.000000 0.889168 +v -0.219168 0.000000 1.000000 +v -0.219168 0.000000 0.889168 +v -0.219168 0.000000 0.778336 +v -0.551664 0.000000 0.889168 +v -0.440832 0.000000 1.000000 +v -0.440832 0.000000 0.889168 +v -0.440832 0.000000 0.778336 +v -0.773336 0.000000 0.889168 +v -0.662500 0.000000 1.000000 +v -0.662500 0.000000 0.889168 +v -0.662500 0.000000 0.778336 +v -0.995000 0.000000 0.889168 +v -0.884168 0.000000 1.000000 +v -0.884168 0.000000 0.889168 +v -0.884168 0.000000 0.778336 +v 0.778336 0.000000 0.667500 +v 0.889168 0.000000 0.667500 +v 1.000000 0.000000 0.667500 +v 0.889168 0.000000 0.556664 +v 0.556664 0.000000 0.667500 +v 0.667500 0.000000 0.667500 +v 0.667500 0.000000 0.556664 +v 0.335000 0.000000 0.667500 +v 0.445832 0.000000 0.667500 +v 0.445832 0.000000 0.556664 +v 0.113336 0.000000 0.667500 +v 0.224168 0.000000 0.667500 +v 0.224168 0.000000 0.556664 +v -0.108336 0.000000 0.667500 +v 0.002500 0.000000 0.667500 +v 0.002500 0.000000 0.556664 +v -0.330000 0.000000 0.667500 +v -0.219168 0.000000 0.667500 +v -0.219168 0.000000 0.556664 +v -0.551664 0.000000 0.667500 +v -0.440832 0.000000 0.667500 +v -0.440832 0.000000 0.556664 +v -0.773336 0.000000 0.667500 +v -0.662500 0.000000 0.667500 +v -0.662500 0.000000 0.556664 +v -0.995000 0.000000 0.667500 +v -0.884168 0.000000 0.667500 +v -0.884168 0.000000 0.556664 +v 0.778336 0.000000 0.445832 +v 0.889168 0.000000 0.445832 +v 1.000000 0.000000 0.445832 +v 0.889168 0.000000 0.335000 +v 0.556664 0.000000 0.445832 +v 0.667500 0.000000 0.445832 +v 0.667500 0.000000 0.335000 +v 0.335000 0.000000 0.445832 +v 0.445832 0.000000 0.445832 +v 0.445832 0.000000 0.335000 +v 0.113336 0.000000 0.445832 +v 0.224168 0.000000 0.445832 +v 0.224168 0.000000 0.335000 +v -0.108336 0.000000 0.445832 +v 0.002500 0.000000 0.445832 +v 0.002500 0.000000 0.335000 +v -0.330000 0.000000 0.445832 +v -0.219168 0.000000 0.445832 +v -0.219168 0.000000 0.335000 +v -0.551664 0.000000 0.445832 +v -0.440832 0.000000 0.445832 +v -0.440832 0.000000 0.335000 +v -0.773336 0.000000 0.445832 +v -0.662500 0.000000 0.445832 +v -0.662500 0.000000 0.335000 +v -0.995000 0.000000 0.445832 +v -0.884168 0.000000 0.445832 +v -0.884168 0.000000 0.335000 +v 0.778336 0.000000 0.224168 +v 0.889168 0.000000 0.224168 +v 1.000000 0.000000 0.224168 +v 0.889168 0.000000 0.113336 +v 0.556664 0.000000 0.224168 +v 0.667500 0.000000 0.224168 +v 0.667500 0.000000 0.113336 +v 0.335000 0.000000 0.224168 +v 0.445832 0.000000 0.224168 +v 0.445832 0.000000 0.113336 +v 0.113336 0.000000 0.224168 +v 0.224168 0.000000 0.224168 +v 0.224168 0.000000 0.113336 +v -0.108336 0.000000 0.224168 +v 0.002500 0.000000 0.224168 +v 0.002500 0.000000 0.113336 +v -0.330000 0.000000 0.224168 +v -0.219168 0.000000 0.224168 +v -0.219168 0.000000 0.113336 +v -0.551664 0.000000 0.224168 +v -0.440832 0.000000 0.224168 +v -0.440832 0.000000 0.113336 +v -0.773336 0.000000 0.224168 +v -0.662500 0.000000 0.224168 +v -0.662500 0.000000 0.113336 +v -0.995000 0.000000 0.224168 +v -0.884168 0.000000 0.224168 +v -0.884168 0.000000 0.113336 +v 0.778336 0.000000 0.002500 +v 0.889168 0.000000 0.002500 +v 1.000000 0.000000 0.002500 +v 0.889168 0.000000 -0.108336 +v 0.556664 0.000000 0.002500 +v 0.667500 0.000000 0.002500 +v 0.667500 0.000000 -0.108336 +v 0.335000 0.000000 0.002500 +v 0.445832 0.000000 0.002500 +v 0.445832 0.000000 -0.108336 +v 0.113336 0.000000 0.002500 +v 0.224168 0.000000 0.002500 +v 0.224168 0.000000 -0.108336 +v -0.108336 0.000000 0.002500 +v 0.002500 0.000000 0.002500 +v 0.002500 0.000000 -0.108336 +v -0.330000 0.000000 0.002500 +v -0.219168 0.000000 0.002500 +v -0.219168 0.000000 -0.108336 +v -0.551664 0.000000 0.002500 +v -0.440832 0.000000 0.002500 +v -0.440832 0.000000 -0.108336 +v -0.773336 0.000000 0.002500 +v -0.662500 0.000000 0.002500 +v -0.662500 0.000000 -0.108336 +v -0.995000 0.000000 0.002500 +v -0.884168 0.000000 0.002500 +v -0.884168 0.000000 -0.108336 +v 0.778336 0.000000 -0.219168 +v 0.889168 0.000000 -0.219168 +v 1.000000 0.000000 -0.219168 +v 0.889168 0.000000 -0.330000 +v 0.556664 0.000000 -0.219168 +v 0.667500 0.000000 -0.219168 +v 0.667500 0.000000 -0.330000 +v 0.335000 0.000000 -0.219168 +v 0.445832 0.000000 -0.219168 +v 0.445832 0.000000 -0.330000 +v 0.113336 0.000000 -0.219168 +v 0.224168 0.000000 -0.219168 +v 0.224168 0.000000 -0.330000 +v -0.108336 0.000000 -0.219168 +v 0.002500 0.000000 -0.219168 +v 0.002500 0.000000 -0.330000 +v -0.330000 0.000000 -0.219168 +v -0.219168 0.000000 -0.219168 +v -0.219168 0.000000 -0.330000 +v -0.551664 0.000000 -0.219168 +v -0.440832 0.000000 -0.219168 +v -0.440832 0.000000 -0.330000 +v -0.773336 0.000000 -0.219168 +v -0.662500 0.000000 -0.219168 +v -0.662500 0.000000 -0.330000 +v -0.995000 0.000000 -0.219168 +v -0.884168 0.000000 -0.219168 +v -0.884168 0.000000 -0.330000 +v 0.778336 0.000000 -0.440832 +v 0.889168 0.000000 -0.440832 +v 1.000000 0.000000 -0.440832 +v 0.889168 0.000000 -0.551664 +v 0.556664 0.000000 -0.440832 +v 0.667500 0.000000 -0.440832 +v 0.667500 0.000000 -0.551664 +v 0.335000 0.000000 -0.440832 +v 0.445832 0.000000 -0.440832 +v 0.445832 0.000000 -0.551664 +v 0.113336 0.000000 -0.440832 +v 0.224168 0.000000 -0.440832 +v 0.224168 0.000000 -0.551664 +v -0.108336 0.000000 -0.440832 +v 0.002500 0.000000 -0.440832 +v 0.002500 0.000000 -0.551664 +v -0.330000 0.000000 -0.440832 +v -0.219168 0.000000 -0.440832 +v -0.219168 0.000000 -0.551664 +v -0.551664 0.000000 -0.440832 +v -0.440832 0.000000 -0.440832 +v -0.440832 0.000000 -0.551664 +v -0.773336 0.000000 -0.440832 +v -0.662500 0.000000 -0.440832 +v -0.662500 0.000000 -0.551664 +v -0.995000 0.000000 -0.440832 +v -0.884168 0.000000 -0.440832 +v -0.884168 0.000000 -0.551664 +v 0.778336 0.000000 -0.662500 +v 0.889168 0.000000 -0.662500 +v 1.000000 0.000000 -0.662500 +v 0.889168 0.000000 -0.773336 +v 0.556664 0.000000 -0.662500 +v 0.667500 0.000000 -0.662500 +v 0.667500 0.000000 -0.773336 +v 0.335000 0.000000 -0.662500 +v 0.445832 0.000000 -0.662500 +v 0.445832 0.000000 -0.773336 +v 0.113336 0.000000 -0.662500 +v 0.224168 0.000000 -0.662500 +v 0.224168 0.000000 -0.773336 +v -0.108336 0.000000 -0.662500 +v 0.002500 0.000000 -0.662500 +v 0.002500 0.000000 -0.773336 +v -0.330000 0.000000 -0.662500 +v -0.219168 0.000000 -0.662500 +v -0.219168 0.000000 -0.773336 +v -0.551664 0.000000 -0.662500 +v -0.440832 0.000000 -0.662500 +v -0.440832 0.000000 -0.773336 +v -0.773336 0.000000 -0.662500 +v -0.662500 0.000000 -0.662500 +v -0.662500 0.000000 -0.773336 +v -0.995000 0.000000 -0.662500 +v -0.884168 0.000000 -0.662500 +v -0.884168 0.000000 -0.773336 +v 0.778336 0.000000 -0.884168 +v 0.889168 0.000000 -0.884168 +v 1.000000 0.000000 -0.884168 +v 0.889168 0.000000 -0.995000 +v 0.556664 0.000000 -0.884168 +v 0.667500 0.000000 -0.884168 +v 0.667500 0.000000 -0.995000 +v 0.335000 0.000000 -0.884168 +v 0.445832 0.000000 -0.884168 +v 0.445832 0.000000 -0.995000 +v 0.113336 0.000000 -0.884168 +v 0.224168 0.000000 -0.884168 +v 0.224168 0.000000 -0.995000 +v -0.108336 0.000000 -0.884168 +v 0.002500 0.000000 -0.884168 +v 0.002500 0.000000 -0.995000 +v -0.330000 0.000000 -0.884168 +v -0.219168 0.000000 -0.884168 +v -0.219168 0.000000 -0.995000 +v -0.551664 0.000000 -0.884168 +v -0.440832 0.000000 -0.884168 +v -0.440832 0.000000 -0.995000 +v -0.773336 0.000000 -0.884168 +v -0.662500 0.000000 -0.884168 +v -0.662500 0.000000 -0.995000 +v -0.995000 0.000000 -0.884168 +v -0.884168 0.000000 -0.884168 +v -0.884168 0.000000 -0.995000 +v 0.833752 0.000000 0.944584 +v 0.889168 0.000000 0.944584 +v 0.833752 0.000000 0.889168 +v 0.944584 0.000000 0.833752 +v 0.889168 0.000000 0.833752 +v 0.944584 0.000000 0.889168 +v 0.612082 0.000000 0.944584 +v 0.667500 0.000000 0.944584 +v 0.612082 0.000000 0.889168 +v 0.722918 0.000000 0.833752 +v 0.667500 0.000000 0.833752 +v 0.722918 0.000000 0.889168 +v 0.390416 0.000000 0.944584 +v 0.445832 0.000000 0.944584 +v 0.390416 0.000000 0.889168 +v 0.501248 0.000000 0.833752 +v 0.445832 0.000000 0.833752 +v 0.501248 0.000000 0.889168 +v 0.168752 0.000000 0.944584 +v 0.224168 0.000000 0.944584 +v 0.168752 0.000000 0.889168 +v 0.279584 0.000000 0.833752 +v 0.224168 0.000000 0.833752 +v 0.279584 0.000000 0.889168 +v -0.052918 0.000000 0.944584 +v 0.002500 0.000000 0.944584 +v -0.052918 0.000000 0.889168 +v 0.057918 0.000000 0.833752 +v 0.002500 0.000000 0.833752 +v 0.057918 0.000000 0.889168 +v -0.274584 0.000000 0.944584 +v -0.219168 0.000000 0.944584 +v -0.274584 0.000000 0.889168 +v -0.163752 0.000000 0.833752 +v -0.219168 0.000000 0.833752 +v -0.163752 0.000000 0.889168 +v -0.496248 0.000000 0.944584 +v -0.440832 0.000000 0.944584 +v -0.496248 0.000000 0.889168 +v -0.385416 0.000000 0.833752 +v -0.440832 0.000000 0.833752 +v -0.385416 0.000000 0.889168 +v -0.717918 0.000000 0.944584 +v -0.662500 0.000000 0.944584 +v -0.717918 0.000000 0.889168 +v -0.607082 0.000000 0.833752 +v -0.662500 0.000000 0.833752 +v -0.607082 0.000000 0.889168 +v -0.939584 0.000000 0.944584 +v -0.884168 0.000000 0.944584 +v -0.939584 0.000000 0.889168 +v -0.828752 0.000000 0.833752 +v -0.884168 0.000000 0.833752 +v -0.828752 0.000000 0.889168 +v 0.833752 0.000000 0.722918 +v 0.889168 0.000000 0.722918 +v 0.833752 0.000000 0.667500 +v 0.944584 0.000000 0.612082 +v 0.889168 0.000000 0.612082 +v 0.944584 0.000000 0.667500 +v 0.612082 0.000000 0.722918 +v 0.667500 0.000000 0.722918 +v 0.612082 0.000000 0.667500 +v 0.722918 0.000000 0.612082 +v 0.667500 0.000000 0.612082 +v 0.722918 0.000000 0.667500 +v 0.390416 0.000000 0.722918 +v 0.445832 0.000000 0.722918 +v 0.390416 0.000000 0.667500 +v 0.501248 0.000000 0.612082 +v 0.445832 0.000000 0.612082 +v 0.501248 0.000000 0.667500 +v 0.168752 0.000000 0.722918 +v 0.224168 0.000000 0.722918 +v 0.168752 0.000000 0.667500 +v 0.279584 0.000000 0.612082 +v 0.224168 0.000000 0.612082 +v 0.279584 0.000000 0.667500 +v -0.052918 0.000000 0.722918 +v 0.002500 0.000000 0.722918 +v -0.052918 0.000000 0.667500 +v 0.057918 0.000000 0.612082 +v 0.002500 0.000000 0.612082 +v 0.057918 0.000000 0.667500 +v -0.274584 0.000000 0.722918 +v -0.219168 0.000000 0.722918 +v -0.274584 0.000000 0.667500 +v -0.163752 0.000000 0.612082 +v -0.219168 0.000000 0.612082 +v -0.163752 0.000000 0.667500 +v -0.496248 0.000000 0.722918 +v -0.440832 0.000000 0.722918 +v -0.496248 0.000000 0.667500 +v -0.385416 0.000000 0.612082 +v -0.440832 0.000000 0.612082 +v -0.385416 0.000000 0.667500 +v -0.717918 0.000000 0.722918 +v -0.662500 0.000000 0.722918 +v -0.717918 0.000000 0.667500 +v -0.607082 0.000000 0.612082 +v -0.662500 0.000000 0.612082 +v -0.607082 0.000000 0.667500 +v -0.939584 0.000000 0.722918 +v -0.884168 0.000000 0.722918 +v -0.939584 0.000000 0.667500 +v -0.828752 0.000000 0.612082 +v -0.884168 0.000000 0.612082 +v -0.828752 0.000000 0.667500 +v 0.833752 0.000000 0.501248 +v 0.889168 0.000000 0.501248 +v 0.833752 0.000000 0.445832 +v 0.944584 0.000000 0.390416 +v 0.889168 0.000000 0.390416 +v 0.944584 0.000000 0.445832 +v 0.612082 0.000000 0.501248 +v 0.667500 0.000000 0.501248 +v 0.612082 0.000000 0.445832 +v 0.722918 0.000000 0.390416 +v 0.667500 0.000000 0.390416 +v 0.722918 0.000000 0.445832 +v 0.390416 0.000000 0.501248 +v 0.445832 0.000000 0.501248 +v 0.390416 0.000000 0.445832 +v 0.501248 0.000000 0.390416 +v 0.445832 0.000000 0.390416 +v 0.501248 0.000000 0.445832 +v 0.168752 0.000000 0.501248 +v 0.224168 0.000000 0.501248 +v 0.168752 0.000000 0.445832 +v 0.279584 0.000000 0.390416 +v 0.224168 0.000000 0.390416 +v 0.279584 0.000000 0.445832 +v -0.052918 0.000000 0.501248 +v 0.002500 0.000000 0.501248 +v -0.052918 0.000000 0.445832 +v 0.057918 0.000000 0.390416 +v 0.002500 0.000000 0.390416 +v 0.057918 0.000000 0.445832 +v -0.274584 0.000000 0.501248 +v -0.219168 0.000000 0.501248 +v -0.274584 0.000000 0.445832 +v -0.163752 0.000000 0.390416 +v -0.219168 0.000000 0.390416 +v -0.163752 0.000000 0.445832 +v -0.496248 0.000000 0.501248 +v -0.440832 0.000000 0.501248 +v -0.496248 0.000000 0.445832 +v -0.385416 0.000000 0.390416 +v -0.440832 0.000000 0.390416 +v -0.385416 0.000000 0.445832 +v -0.717918 0.000000 0.501248 +v -0.662500 0.000000 0.501248 +v -0.717918 0.000000 0.445832 +v -0.607082 0.000000 0.390416 +v -0.662500 0.000000 0.390416 +v -0.607082 0.000000 0.445832 +v -0.939584 0.000000 0.501248 +v -0.884168 0.000000 0.501248 +v -0.939584 0.000000 0.445832 +v -0.828752 0.000000 0.390416 +v -0.884168 0.000000 0.390416 +v -0.828752 0.000000 0.445832 +v 0.833752 0.000000 0.279584 +v 0.889168 0.000000 0.279584 +v 0.833752 0.000000 0.224168 +v 0.944584 0.000000 0.168752 +v 0.889168 0.000000 0.168752 +v 0.944584 0.000000 0.224168 +v 0.612082 0.000000 0.279584 +v 0.667500 0.000000 0.279584 +v 0.612082 0.000000 0.224168 +v 0.722918 0.000000 0.168752 +v 0.667500 0.000000 0.168752 +v 0.722918 0.000000 0.224168 +v 0.390416 0.000000 0.279584 +v 0.445832 0.000000 0.279584 +v 0.390416 0.000000 0.224168 +v 0.501248 0.000000 0.168752 +v 0.445832 0.000000 0.168752 +v 0.501248 0.000000 0.224168 +v 0.168752 0.000000 0.279584 +v 0.224168 0.000000 0.279584 +v 0.168752 0.000000 0.224168 +v 0.279584 0.000000 0.168752 +v 0.224168 0.000000 0.168752 +v 0.279584 0.000000 0.224168 +v -0.052918 0.000000 0.279584 +v 0.002500 0.000000 0.279584 +v -0.052918 0.000000 0.224168 +v 0.057918 0.000000 0.168752 +v 0.002500 0.000000 0.168752 +v 0.057918 0.000000 0.224168 +v -0.274584 0.000000 0.279584 +v -0.219168 0.000000 0.279584 +v -0.274584 0.000000 0.224168 +v -0.163752 0.000000 0.168752 +v -0.219168 0.000000 0.168752 +v -0.163752 0.000000 0.224168 +v -0.496248 0.000000 0.279584 +v -0.440832 0.000000 0.279584 +v -0.496248 0.000000 0.224168 +v -0.385416 0.000000 0.168752 +v -0.440832 0.000000 0.168752 +v -0.385416 0.000000 0.224168 +v -0.717918 0.000000 0.279584 +v -0.662500 0.000000 0.279584 +v -0.717918 0.000000 0.224168 +v -0.607082 0.000000 0.168752 +v -0.662500 0.000000 0.168752 +v -0.607082 0.000000 0.224168 +v -0.939584 0.000000 0.279584 +v -0.884168 0.000000 0.279584 +v -0.939584 0.000000 0.224168 +v -0.828752 0.000000 0.168752 +v -0.884168 0.000000 0.168752 +v -0.828752 0.000000 0.224168 +v 0.833752 0.000000 0.057918 +v 0.889168 0.000000 0.057918 +v 0.833752 0.000000 0.002500 +v 0.944584 0.000000 -0.052918 +v 0.889168 0.000000 -0.052918 +v 0.944584 0.000000 0.002500 +v 0.612082 0.000000 0.057918 +v 0.667500 0.000000 0.057918 +v 0.612082 0.000000 0.002500 +v 0.722918 0.000000 -0.052918 +v 0.667500 0.000000 -0.052918 +v 0.722918 0.000000 0.002500 +v 0.390416 0.000000 0.057918 +v 0.445832 0.000000 0.057918 +v 0.390416 0.000000 0.002500 +v 0.501248 0.000000 -0.052918 +v 0.445832 0.000000 -0.052918 +v 0.501248 0.000000 0.002500 +v 0.168752 0.000000 0.057918 +v 0.224168 0.000000 0.057918 +v 0.168752 0.000000 0.002500 +v 0.279584 0.000000 -0.052918 +v 0.224168 0.000000 -0.052918 +v 0.279584 0.000000 0.002500 +v -0.052918 0.000000 0.057918 +v 0.002500 0.000000 0.057918 +v -0.052918 0.000000 0.002500 +v 0.057918 0.000000 -0.052918 +v 0.002500 0.000000 -0.052918 +v 0.057918 0.000000 0.002500 +v -0.274584 0.000000 0.057918 +v -0.219168 0.000000 0.057918 +v -0.274584 0.000000 0.002500 +v -0.163752 0.000000 -0.052918 +v -0.219168 0.000000 -0.052918 +v -0.163752 0.000000 0.002500 +v -0.496248 0.000000 0.057918 +v -0.440832 0.000000 0.057918 +v -0.496248 0.000000 0.002500 +v -0.385416 0.000000 -0.052918 +v -0.440832 0.000000 -0.052918 +v -0.385416 0.000000 0.002500 +v -0.717918 0.000000 0.057918 +v -0.662500 0.000000 0.057918 +v -0.717918 0.000000 0.002500 +v -0.607082 0.000000 -0.052918 +v -0.662500 0.000000 -0.052918 +v -0.607082 0.000000 0.002500 +v -0.939584 0.000000 0.057918 +v -0.884168 0.000000 0.057918 +v -0.939584 0.000000 0.002500 +v -0.828752 0.000000 -0.052918 +v -0.884168 0.000000 -0.052918 +v -0.828752 0.000000 0.002500 +v 0.833752 0.000000 -0.163752 +v 0.889168 0.000000 -0.163752 +v 0.833752 0.000000 -0.219168 +v 0.944584 0.000000 -0.274584 +v 0.889168 0.000000 -0.274584 +v 0.944584 0.000000 -0.219168 +v 0.612082 0.000000 -0.163752 +v 0.667500 0.000000 -0.163752 +v 0.612082 0.000000 -0.219168 +v 0.722918 0.000000 -0.274584 +v 0.667500 0.000000 -0.274584 +v 0.722918 0.000000 -0.219168 +v 0.390416 0.000000 -0.163752 +v 0.445832 0.000000 -0.163752 +v 0.390416 0.000000 -0.219168 +v 0.501248 0.000000 -0.274584 +v 0.445832 0.000000 -0.274584 +v 0.501248 0.000000 -0.219168 +v 0.168752 0.000000 -0.163752 +v 0.224168 0.000000 -0.163752 +v 0.168752 0.000000 -0.219168 +v 0.279584 0.000000 -0.274584 +v 0.224168 0.000000 -0.274584 +v 0.279584 0.000000 -0.219168 +v -0.052918 0.000000 -0.163752 +v 0.002500 0.000000 -0.163752 +v -0.052918 0.000000 -0.219168 +v 0.057918 0.000000 -0.274584 +v 0.002500 0.000000 -0.274584 +v 0.057918 0.000000 -0.219168 +v -0.274584 0.000000 -0.163752 +v -0.219168 0.000000 -0.163752 +v -0.274584 0.000000 -0.219168 +v -0.163752 0.000000 -0.274584 +v -0.219168 0.000000 -0.274584 +v -0.163752 0.000000 -0.219168 +v -0.496248 0.000000 -0.163752 +v -0.440832 0.000000 -0.163752 +v -0.496248 0.000000 -0.219168 +v -0.385416 0.000000 -0.274584 +v -0.440832 0.000000 -0.274584 +v -0.385416 0.000000 -0.219168 +v -0.717918 0.000000 -0.163752 +v -0.662500 0.000000 -0.163752 +v -0.717918 0.000000 -0.219168 +v -0.607082 0.000000 -0.274584 +v -0.662500 0.000000 -0.274584 +v -0.607082 0.000000 -0.219168 +v -0.939584 0.000000 -0.163752 +v -0.884168 0.000000 -0.163752 +v -0.939584 0.000000 -0.219168 +v -0.828752 0.000000 -0.274584 +v -0.884168 0.000000 -0.274584 +v -0.828752 0.000000 -0.219168 +v 0.833752 0.000000 -0.385416 +v 0.889168 0.000000 -0.385416 +v 0.833752 0.000000 -0.440832 +v 0.944584 0.000000 -0.496248 +v 0.889168 0.000000 -0.496248 +v 0.944584 0.000000 -0.440832 +v 0.612082 0.000000 -0.385416 +v 0.667500 0.000000 -0.385416 +v 0.612082 0.000000 -0.440832 +v 0.722918 0.000000 -0.496248 +v 0.667500 0.000000 -0.496248 +v 0.722918 0.000000 -0.440832 +v 0.390416 0.000000 -0.385416 +v 0.445832 0.000000 -0.385416 +v 0.390416 0.000000 -0.440832 +v 0.501248 0.000000 -0.496248 +v 0.445832 0.000000 -0.496248 +v 0.501248 0.000000 -0.440832 +v 0.168752 0.000000 -0.385416 +v 0.224168 0.000000 -0.385416 +v 0.168752 0.000000 -0.440832 +v 0.279584 0.000000 -0.496248 +v 0.224168 0.000000 -0.496248 +v 0.279584 0.000000 -0.440832 +v -0.052918 0.000000 -0.385416 +v 0.002500 0.000000 -0.385416 +v -0.052918 0.000000 -0.440832 +v 0.057918 0.000000 -0.496248 +v 0.002500 0.000000 -0.496248 +v 0.057918 0.000000 -0.440832 +v -0.274584 0.000000 -0.385416 +v -0.219168 0.000000 -0.385416 +v -0.274584 0.000000 -0.440832 +v -0.163752 0.000000 -0.496248 +v -0.219168 0.000000 -0.496248 +v -0.163752 0.000000 -0.440832 +v -0.496248 0.000000 -0.385416 +v -0.440832 0.000000 -0.385416 +v -0.496248 0.000000 -0.440832 +v -0.385416 0.000000 -0.496248 +v -0.440832 0.000000 -0.496248 +v -0.385416 0.000000 -0.440832 +v -0.717918 0.000000 -0.385416 +v -0.662500 0.000000 -0.385416 +v -0.717918 0.000000 -0.440832 +v -0.607082 0.000000 -0.496248 +v -0.662500 0.000000 -0.496248 +v -0.607082 0.000000 -0.440832 +v -0.939584 0.000000 -0.385416 +v -0.884168 0.000000 -0.385416 +v -0.939584 0.000000 -0.440832 +v -0.828752 0.000000 -0.496248 +v -0.884168 0.000000 -0.496248 +v -0.828752 0.000000 -0.440832 +v 0.833752 0.000000 -0.607082 +v 0.889168 0.000000 -0.607082 +v 0.833752 0.000000 -0.662500 +v 0.944584 0.000000 -0.717918 +v 0.889168 0.000000 -0.717918 +v 0.944584 0.000000 -0.662500 +v 0.612082 0.000000 -0.607082 +v 0.667500 0.000000 -0.607082 +v 0.612082 0.000000 -0.662500 +v 0.722918 0.000000 -0.717918 +v 0.667500 0.000000 -0.717918 +v 0.722918 0.000000 -0.662500 +v 0.390416 0.000000 -0.607082 +v 0.445832 0.000000 -0.607082 +v 0.390416 0.000000 -0.662500 +v 0.501248 0.000000 -0.717918 +v 0.445832 0.000000 -0.717918 +v 0.501248 0.000000 -0.662500 +v 0.168752 0.000000 -0.607082 +v 0.224168 0.000000 -0.607082 +v 0.168752 0.000000 -0.662500 +v 0.279584 0.000000 -0.717918 +v 0.224168 0.000000 -0.717918 +v 0.279584 0.000000 -0.662500 +v -0.052918 0.000000 -0.607082 +v 0.002500 0.000000 -0.607082 +v -0.052918 0.000000 -0.662500 +v 0.057918 0.000000 -0.717918 +v 0.002500 0.000000 -0.717918 +v 0.057918 0.000000 -0.662500 +v -0.274584 0.000000 -0.607082 +v -0.219168 0.000000 -0.607082 +v -0.274584 0.000000 -0.662500 +v -0.163752 0.000000 -0.717918 +v -0.219168 0.000000 -0.717918 +v -0.163752 0.000000 -0.662500 +v -0.496248 0.000000 -0.607082 +v -0.440832 0.000000 -0.607082 +v -0.496248 0.000000 -0.662500 +v -0.385416 0.000000 -0.717918 +v -0.440832 0.000000 -0.717918 +v -0.385416 0.000000 -0.662500 +v -0.717918 0.000000 -0.607082 +v -0.662500 0.000000 -0.607082 +v -0.717918 0.000000 -0.662500 +v -0.607082 0.000000 -0.717918 +v -0.662500 0.000000 -0.717918 +v -0.607082 0.000000 -0.662500 +v -0.939584 0.000000 -0.607082 +v -0.884168 0.000000 -0.607082 +v -0.939584 0.000000 -0.662500 +v -0.828752 0.000000 -0.717918 +v -0.884168 0.000000 -0.717918 +v -0.828752 0.000000 -0.662500 +v 0.833752 0.000000 -0.828752 +v 0.889168 0.000000 -0.828752 +v 0.833752 0.000000 -0.884168 +v 0.944584 0.000000 -0.939584 +v 0.889168 0.000000 -0.939584 +v 0.944584 0.000000 -0.884168 +v 0.612082 0.000000 -0.828752 +v 0.667500 0.000000 -0.828752 +v 0.612082 0.000000 -0.884168 +v 0.722918 0.000000 -0.939584 +v 0.667500 0.000000 -0.939584 +v 0.722918 0.000000 -0.884168 +v 0.390416 0.000000 -0.828752 +v 0.445832 0.000000 -0.828752 +v 0.390416 0.000000 -0.884168 +v 0.501248 0.000000 -0.939584 +v 0.445832 0.000000 -0.939584 +v 0.501248 0.000000 -0.884168 +v 0.168752 0.000000 -0.828752 +v 0.224168 0.000000 -0.828752 +v 0.168752 0.000000 -0.884168 +v 0.279584 0.000000 -0.939584 +v 0.224168 0.000000 -0.939584 +v 0.279584 0.000000 -0.884168 +v -0.052918 0.000000 -0.828752 +v 0.002500 0.000000 -0.828752 +v -0.052918 0.000000 -0.884168 +v 0.057918 0.000000 -0.939584 +v 0.002500 0.000000 -0.939584 +v 0.057918 0.000000 -0.884168 +v -0.274584 0.000000 -0.828752 +v -0.219168 0.000000 -0.828752 +v -0.274584 0.000000 -0.884168 +v -0.163752 0.000000 -0.939584 +v -0.219168 0.000000 -0.939584 +v -0.163752 0.000000 -0.884168 +v -0.496248 0.000000 -0.828752 +v -0.440832 0.000000 -0.828752 +v -0.496248 0.000000 -0.884168 +v -0.385416 0.000000 -0.939584 +v -0.440832 0.000000 -0.939584 +v -0.385416 0.000000 -0.884168 +v -0.717918 0.000000 -0.828752 +v -0.662500 0.000000 -0.828752 +v -0.717918 0.000000 -0.884168 +v -0.607082 0.000000 -0.939584 +v -0.662500 0.000000 -0.939584 +v -0.607082 0.000000 -0.884168 +v -0.939584 0.000000 -0.828752 +v -0.884168 0.000000 -0.828752 +v -0.939584 0.000000 -0.884168 +v -0.828752 0.000000 -0.939584 +v -0.884168 0.000000 -0.939584 +v -0.828752 0.000000 -0.884168 +v 0.778336 0.000000 0.833752 +v 0.833752 0.000000 0.833752 +v 0.778336 0.000000 0.944584 +v 0.833752 0.000000 1.000000 +v 0.944584 0.000000 1.000000 +v 0.944584 0.000000 0.944584 +v 1.000000 0.000000 0.944584 +v 1.000000 0.000000 0.833752 +v 0.944584 0.000000 0.778336 +v 0.833752 0.000000 0.778336 +v 0.556664 0.000000 0.833752 +v 0.612082 0.000000 0.833752 +v 0.556664 0.000000 0.944584 +v 0.612082 0.000000 1.000000 +v 0.722918 0.000000 1.000000 +v 0.722918 0.000000 0.944584 +v 0.722918 0.000000 0.778336 +v 0.612082 0.000000 0.778336 +v 0.335000 0.000000 0.833752 +v 0.390416 0.000000 0.833752 +v 0.335000 0.000000 0.944584 +v 0.390416 0.000000 1.000000 +v 0.501248 0.000000 1.000000 +v 0.501248 0.000000 0.944584 +v 0.501248 0.000000 0.778336 +v 0.390416 0.000000 0.778336 +v 0.113336 0.000000 0.833752 +v 0.168752 0.000000 0.833752 +v 0.113336 0.000000 0.944584 +v 0.168752 0.000000 1.000000 +v 0.279584 0.000000 1.000000 +v 0.279584 0.000000 0.944584 +v 0.279584 0.000000 0.778336 +v 0.168752 0.000000 0.778336 +v -0.108336 0.000000 0.833752 +v -0.052918 0.000000 0.833752 +v -0.108336 0.000000 0.944584 +v -0.052918 0.000000 1.000000 +v 0.057918 0.000000 1.000000 +v 0.057918 0.000000 0.944584 +v 0.057918 0.000000 0.778336 +v -0.052918 0.000000 0.778336 +v -0.330000 0.000000 0.833752 +v -0.274584 0.000000 0.833752 +v -0.330000 0.000000 0.944584 +v -0.274584 0.000000 1.000000 +v -0.163752 0.000000 1.000000 +v -0.163752 0.000000 0.944584 +v -0.163752 0.000000 0.778336 +v -0.274584 0.000000 0.778336 +v -0.551664 0.000000 0.833752 +v -0.496248 0.000000 0.833752 +v -0.551664 0.000000 0.944584 +v -0.496248 0.000000 1.000000 +v -0.385416 0.000000 1.000000 +v -0.385416 0.000000 0.944584 +v -0.385416 0.000000 0.778336 +v -0.496248 0.000000 0.778336 +v -0.773336 0.000000 0.833752 +v -0.717918 0.000000 0.833752 +v -0.773336 0.000000 0.944584 +v -0.717918 0.000000 1.000000 +v -0.607082 0.000000 1.000000 +v -0.607082 0.000000 0.944584 +v -0.607082 0.000000 0.778336 +v -0.717918 0.000000 0.778336 +v -0.995000 0.000000 0.833752 +v -0.939584 0.000000 0.833752 +v -0.995000 0.000000 0.944584 +v -0.939584 0.000000 1.000000 +v -0.828752 0.000000 1.000000 +v -0.828752 0.000000 0.944584 +v -0.828752 0.000000 0.778336 +v -0.939584 0.000000 0.778336 +v 0.778336 0.000000 0.612082 +v 0.833752 0.000000 0.612082 +v 0.778336 0.000000 0.722918 +v 0.944584 0.000000 0.722918 +v 1.000000 0.000000 0.722918 +v 1.000000 0.000000 0.612082 +v 0.944584 0.000000 0.556664 +v 0.833752 0.000000 0.556664 +v 0.556664 0.000000 0.612082 +v 0.612082 0.000000 0.612082 +v 0.556664 0.000000 0.722918 +v 0.722918 0.000000 0.722918 +v 0.722918 0.000000 0.556664 +v 0.612082 0.000000 0.556664 +v 0.335000 0.000000 0.612082 +v 0.390416 0.000000 0.612082 +v 0.335000 0.000000 0.722918 +v 0.501248 0.000000 0.722918 +v 0.501248 0.000000 0.556664 +v 0.390416 0.000000 0.556664 +v 0.113336 0.000000 0.612082 +v 0.168752 0.000000 0.612082 +v 0.113336 0.000000 0.722918 +v 0.279584 0.000000 0.722918 +v 0.279584 0.000000 0.556664 +v 0.168752 0.000000 0.556664 +v -0.108336 0.000000 0.612082 +v -0.052918 0.000000 0.612082 +v -0.108336 0.000000 0.722918 +v 0.057918 0.000000 0.722918 +v 0.057918 0.000000 0.556664 +v -0.052918 0.000000 0.556664 +v -0.330000 0.000000 0.612082 +v -0.274584 0.000000 0.612082 +v -0.330000 0.000000 0.722918 +v -0.163752 0.000000 0.722918 +v -0.163752 0.000000 0.556664 +v -0.274584 0.000000 0.556664 +v -0.551664 0.000000 0.612082 +v -0.496248 0.000000 0.612082 +v -0.551664 0.000000 0.722918 +v -0.385416 0.000000 0.722918 +v -0.385416 0.000000 0.556664 +v -0.496248 0.000000 0.556664 +v -0.773336 0.000000 0.612082 +v -0.717918 0.000000 0.612082 +v -0.773336 0.000000 0.722918 +v -0.607082 0.000000 0.722918 +v -0.607082 0.000000 0.556664 +v -0.717918 0.000000 0.556664 +v -0.995000 0.000000 0.612082 +v -0.939584 0.000000 0.612082 +v -0.995000 0.000000 0.722918 +v -0.828752 0.000000 0.722918 +v -0.828752 0.000000 0.556664 +v -0.939584 0.000000 0.556664 +v 0.778336 0.000000 0.390416 +v 0.833752 0.000000 0.390416 +v 0.778336 0.000000 0.501248 +v 0.944584 0.000000 0.501248 +v 1.000000 0.000000 0.501248 +v 1.000000 0.000000 0.390416 +v 0.944584 0.000000 0.335000 +v 0.833752 0.000000 0.335000 +v 0.556664 0.000000 0.390416 +v 0.612082 0.000000 0.390416 +v 0.556664 0.000000 0.501248 +v 0.722918 0.000000 0.501248 +v 0.722918 0.000000 0.335000 +v 0.612082 0.000000 0.335000 +v 0.335000 0.000000 0.390416 +v 0.390416 0.000000 0.390416 +v 0.335000 0.000000 0.501248 +v 0.501248 0.000000 0.501248 +v 0.501248 0.000000 0.335000 +v 0.390416 0.000000 0.335000 +v 0.113336 0.000000 0.390416 +v 0.168752 0.000000 0.390416 +v 0.113336 0.000000 0.501248 +v 0.279584 0.000000 0.501248 +v 0.279584 0.000000 0.335000 +v 0.168752 0.000000 0.335000 +v -0.108336 0.000000 0.390416 +v -0.052918 0.000000 0.390416 +v -0.108336 0.000000 0.501248 +v 0.057918 0.000000 0.501248 +v 0.057918 0.000000 0.335000 +v -0.052918 0.000000 0.335000 +v -0.330000 0.000000 0.390416 +v -0.274584 0.000000 0.390416 +v -0.330000 0.000000 0.501248 +v -0.163752 0.000000 0.501248 +v -0.163752 0.000000 0.335000 +v -0.274584 0.000000 0.335000 +v -0.551664 0.000000 0.390416 +v -0.496248 0.000000 0.390416 +v -0.551664 0.000000 0.501248 +v -0.385416 0.000000 0.501248 +v -0.385416 0.000000 0.335000 +v -0.496248 0.000000 0.335000 +v -0.773336 0.000000 0.390416 +v -0.717918 0.000000 0.390416 +v -0.773336 0.000000 0.501248 +v -0.607082 0.000000 0.501248 +v -0.607082 0.000000 0.335000 +v -0.717918 0.000000 0.335000 +v -0.995000 0.000000 0.390416 +v -0.939584 0.000000 0.390416 +v -0.995000 0.000000 0.501248 +v -0.828752 0.000000 0.501248 +v -0.828752 0.000000 0.335000 +v -0.939584 0.000000 0.335000 +v 0.778336 0.000000 0.168752 +v 0.833752 0.000000 0.168752 +v 0.778336 0.000000 0.279584 +v 0.944584 0.000000 0.279584 +v 1.000000 0.000000 0.279584 +v 1.000000 0.000000 0.168752 +v 0.944584 0.000000 0.113336 +v 0.833752 0.000000 0.113336 +v 0.556664 0.000000 0.168752 +v 0.612082 0.000000 0.168752 +v 0.556664 0.000000 0.279584 +v 0.722918 0.000000 0.279584 +v 0.722918 0.000000 0.113336 +v 0.612082 0.000000 0.113336 +v 0.335000 0.000000 0.168752 +v 0.390416 0.000000 0.168752 +v 0.335000 0.000000 0.279584 +v 0.501248 0.000000 0.279584 +v 0.501248 0.000000 0.113336 +v 0.390416 0.000000 0.113336 +v 0.113336 0.000000 0.168752 +v 0.168752 0.000000 0.168752 +v 0.113336 0.000000 0.279584 +v 0.279584 0.000000 0.279584 +v 0.279584 0.000000 0.113336 +v 0.168752 0.000000 0.113336 +v -0.108336 0.000000 0.168752 +v -0.052918 0.000000 0.168752 +v -0.108336 0.000000 0.279584 +v 0.057918 0.000000 0.279584 +v 0.057918 0.000000 0.113336 +v -0.052918 0.000000 0.113336 +v -0.330000 0.000000 0.168752 +v -0.274584 0.000000 0.168752 +v -0.330000 0.000000 0.279584 +v -0.163752 0.000000 0.279584 +v -0.163752 0.000000 0.113336 +v -0.274584 0.000000 0.113336 +v -0.551664 0.000000 0.168752 +v -0.496248 0.000000 0.168752 +v -0.551664 0.000000 0.279584 +v -0.385416 0.000000 0.279584 +v -0.385416 0.000000 0.113336 +v -0.496248 0.000000 0.113336 +v -0.773336 0.000000 0.168752 +v -0.717918 0.000000 0.168752 +v -0.773336 0.000000 0.279584 +v -0.607082 0.000000 0.279584 +v -0.607082 0.000000 0.113336 +v -0.717918 0.000000 0.113336 +v -0.995000 0.000000 0.168752 +v -0.939584 0.000000 0.168752 +v -0.995000 0.000000 0.279584 +v -0.828752 0.000000 0.279584 +v -0.828752 0.000000 0.113336 +v -0.939584 0.000000 0.113336 +v 0.778336 0.000000 -0.052918 +v 0.833752 0.000000 -0.052918 +v 0.778336 0.000000 0.057918 +v 0.944584 0.000000 0.057918 +v 1.000000 0.000000 0.057918 +v 1.000000 0.000000 -0.052918 +v 0.944584 0.000000 -0.108336 +v 0.833752 0.000000 -0.108336 +v 0.556664 0.000000 -0.052918 +v 0.612082 0.000000 -0.052918 +v 0.556664 0.000000 0.057918 +v 0.722918 0.000000 0.057918 +v 0.722918 0.000000 -0.108336 +v 0.612082 0.000000 -0.108336 +v 0.335000 0.000000 -0.052918 +v 0.390416 0.000000 -0.052918 +v 0.335000 0.000000 0.057918 +v 0.501248 0.000000 0.057918 +v 0.501248 0.000000 -0.108336 +v 0.390416 0.000000 -0.108336 +v 0.113336 0.000000 -0.052918 +v 0.168752 0.000000 -0.052918 +v 0.113336 0.000000 0.057918 +v 0.279584 0.000000 0.057918 +v 0.279584 0.000000 -0.108336 +v 0.168752 0.000000 -0.108336 +v -0.108336 0.000000 -0.052918 +v -0.052918 0.000000 -0.052918 +v -0.108336 0.000000 0.057918 +v 0.057918 0.000000 0.057918 +v 0.057918 0.000000 -0.108336 +v -0.052918 0.000000 -0.108336 +v -0.330000 0.000000 -0.052918 +v -0.274584 0.000000 -0.052918 +v -0.330000 0.000000 0.057918 +v -0.163752 0.000000 0.057918 +v -0.163752 0.000000 -0.108336 +v -0.274584 0.000000 -0.108336 +v -0.551664 0.000000 -0.052918 +v -0.496248 0.000000 -0.052918 +v -0.551664 0.000000 0.057918 +v -0.385416 0.000000 0.057918 +v -0.385416 0.000000 -0.108336 +v -0.496248 0.000000 -0.108336 +v -0.773336 0.000000 -0.052918 +v -0.717918 0.000000 -0.052918 +v -0.773336 0.000000 0.057918 +v -0.607082 0.000000 0.057918 +v -0.607082 0.000000 -0.108336 +v -0.717918 0.000000 -0.108336 +v -0.995000 0.000000 -0.052918 +v -0.939584 0.000000 -0.052918 +v -0.995000 0.000000 0.057918 +v -0.828752 0.000000 0.057918 +v -0.828752 0.000000 -0.108336 +v -0.939584 0.000000 -0.108336 +v 0.778336 0.000000 -0.274584 +v 0.833752 0.000000 -0.274584 +v 0.778336 0.000000 -0.163752 +v 0.944584 0.000000 -0.163752 +v 1.000000 0.000000 -0.163752 +v 1.000000 0.000000 -0.274584 +v 0.944584 0.000000 -0.330000 +v 0.833752 0.000000 -0.330000 +v 0.556664 0.000000 -0.274584 +v 0.612082 0.000000 -0.274584 +v 0.556664 0.000000 -0.163752 +v 0.722918 0.000000 -0.163752 +v 0.722918 0.000000 -0.330000 +v 0.612082 0.000000 -0.330000 +v 0.335000 0.000000 -0.274584 +v 0.390416 0.000000 -0.274584 +v 0.335000 0.000000 -0.163752 +v 0.501248 0.000000 -0.163752 +v 0.501248 0.000000 -0.330000 +v 0.390416 0.000000 -0.330000 +v 0.113336 0.000000 -0.274584 +v 0.168752 0.000000 -0.274584 +v 0.113336 0.000000 -0.163752 +v 0.279584 0.000000 -0.163752 +v 0.279584 0.000000 -0.330000 +v 0.168752 0.000000 -0.330000 +v -0.108336 0.000000 -0.274584 +v -0.052918 0.000000 -0.274584 +v -0.108336 0.000000 -0.163752 +v 0.057918 0.000000 -0.163752 +v 0.057918 0.000000 -0.330000 +v -0.052918 0.000000 -0.330000 +v -0.330000 0.000000 -0.274584 +v -0.274584 0.000000 -0.274584 +v -0.330000 0.000000 -0.163752 +v -0.163752 0.000000 -0.163752 +v -0.163752 0.000000 -0.330000 +v -0.274584 0.000000 -0.330000 +v -0.551664 0.000000 -0.274584 +v -0.496248 0.000000 -0.274584 +v -0.551664 0.000000 -0.163752 +v -0.385416 0.000000 -0.163752 +v -0.385416 0.000000 -0.330000 +v -0.496248 0.000000 -0.330000 +v -0.773336 0.000000 -0.274584 +v -0.717918 0.000000 -0.274584 +v -0.773336 0.000000 -0.163752 +v -0.607082 0.000000 -0.163752 +v -0.607082 0.000000 -0.330000 +v -0.717918 0.000000 -0.330000 +v -0.995000 0.000000 -0.274584 +v -0.939584 0.000000 -0.274584 +v -0.995000 0.000000 -0.163752 +v -0.828752 0.000000 -0.163752 +v -0.828752 0.000000 -0.330000 +v -0.939584 0.000000 -0.330000 +v 0.778336 0.000000 -0.496248 +v 0.833752 0.000000 -0.496248 +v 0.778336 0.000000 -0.385416 +v 0.944584 0.000000 -0.385416 +v 1.000000 0.000000 -0.385416 +v 1.000000 0.000000 -0.496248 +v 0.944584 0.000000 -0.551664 +v 0.833752 0.000000 -0.551664 +v 0.556664 0.000000 -0.496248 +v 0.612082 0.000000 -0.496248 +v 0.556664 0.000000 -0.385416 +v 0.722918 0.000000 -0.385416 +v 0.722918 0.000000 -0.551664 +v 0.612082 0.000000 -0.551664 +v 0.335000 0.000000 -0.496248 +v 0.390416 0.000000 -0.496248 +v 0.335000 0.000000 -0.385416 +v 0.501248 0.000000 -0.385416 +v 0.501248 0.000000 -0.551664 +v 0.390416 0.000000 -0.551664 +v 0.113336 0.000000 -0.496248 +v 0.168752 0.000000 -0.496248 +v 0.113336 0.000000 -0.385416 +v 0.279584 0.000000 -0.385416 +v 0.279584 0.000000 -0.551664 +v 0.168752 0.000000 -0.551664 +v -0.108336 0.000000 -0.496248 +v -0.052918 0.000000 -0.496248 +v -0.108336 0.000000 -0.385416 +v 0.057918 0.000000 -0.385416 +v 0.057918 0.000000 -0.551664 +v -0.052918 0.000000 -0.551664 +v -0.330000 0.000000 -0.496248 +v -0.274584 0.000000 -0.496248 +v -0.330000 0.000000 -0.385416 +v -0.163752 0.000000 -0.385416 +v -0.163752 0.000000 -0.551664 +v -0.274584 0.000000 -0.551664 +v -0.551664 0.000000 -0.496248 +v -0.496248 0.000000 -0.496248 +v -0.551664 0.000000 -0.385416 +v -0.385416 0.000000 -0.385416 +v -0.385416 0.000000 -0.551664 +v -0.496248 0.000000 -0.551664 +v -0.773336 0.000000 -0.496248 +v -0.717918 0.000000 -0.496248 +v -0.773336 0.000000 -0.385416 +v -0.607082 0.000000 -0.385416 +v -0.607082 0.000000 -0.551664 +v -0.717918 0.000000 -0.551664 +v -0.995000 0.000000 -0.496248 +v -0.939584 0.000000 -0.496248 +v -0.995000 0.000000 -0.385416 +v -0.828752 0.000000 -0.385416 +v -0.828752 0.000000 -0.551664 +v -0.939584 0.000000 -0.551664 +v 0.778336 0.000000 -0.717918 +v 0.833752 0.000000 -0.717918 +v 0.778336 0.000000 -0.607082 +v 0.944584 0.000000 -0.607082 +v 1.000000 0.000000 -0.607082 +v 1.000000 0.000000 -0.717918 +v 0.944584 0.000000 -0.773336 +v 0.833752 0.000000 -0.773336 +v 0.556664 0.000000 -0.717918 +v 0.612082 0.000000 -0.717918 +v 0.556664 0.000000 -0.607082 +v 0.722918 0.000000 -0.607082 +v 0.722918 0.000000 -0.773336 +v 0.612082 0.000000 -0.773336 +v 0.335000 0.000000 -0.717918 +v 0.390416 0.000000 -0.717918 +v 0.335000 0.000000 -0.607082 +v 0.501248 0.000000 -0.607082 +v 0.501248 0.000000 -0.773336 +v 0.390416 0.000000 -0.773336 +v 0.113336 0.000000 -0.717918 +v 0.168752 0.000000 -0.717918 +v 0.113336 0.000000 -0.607082 +v 0.279584 0.000000 -0.607082 +v 0.279584 0.000000 -0.773336 +v 0.168752 0.000000 -0.773336 +v -0.108336 0.000000 -0.717918 +v -0.052918 0.000000 -0.717918 +v -0.108336 0.000000 -0.607082 +v 0.057918 0.000000 -0.607082 +v 0.057918 0.000000 -0.773336 +v -0.052918 0.000000 -0.773336 +v -0.330000 0.000000 -0.717918 +v -0.274584 0.000000 -0.717918 +v -0.330000 0.000000 -0.607082 +v -0.163752 0.000000 -0.607082 +v -0.163752 0.000000 -0.773336 +v -0.274584 0.000000 -0.773336 +v -0.551664 0.000000 -0.717918 +v -0.496248 0.000000 -0.717918 +v -0.551664 0.000000 -0.607082 +v -0.385416 0.000000 -0.607082 +v -0.385416 0.000000 -0.773336 +v -0.496248 0.000000 -0.773336 +v -0.773336 0.000000 -0.717918 +v -0.717918 0.000000 -0.717918 +v -0.773336 0.000000 -0.607082 +v -0.607082 0.000000 -0.607082 +v -0.607082 0.000000 -0.773336 +v -0.717918 0.000000 -0.773336 +v -0.995000 0.000000 -0.717918 +v -0.939584 0.000000 -0.717918 +v -0.995000 0.000000 -0.607082 +v -0.828752 0.000000 -0.607082 +v -0.828752 0.000000 -0.773336 +v -0.939584 0.000000 -0.773336 +v 0.778336 0.000000 -0.939584 +v 0.833752 0.000000 -0.939584 +v 0.778336 0.000000 -0.828752 +v 0.944584 0.000000 -0.828752 +v 1.000000 0.000000 -0.828752 +v 1.000000 0.000000 -0.939584 +v 0.944584 0.000000 -0.995000 +v 0.833752 0.000000 -0.995000 +v 0.556664 0.000000 -0.939584 +v 0.612082 0.000000 -0.939584 +v 0.556664 0.000000 -0.828752 +v 0.722918 0.000000 -0.828752 +v 0.722918 0.000000 -0.995000 +v 0.612082 0.000000 -0.995000 +v 0.335000 0.000000 -0.939584 +v 0.390416 0.000000 -0.939584 +v 0.335000 0.000000 -0.828752 +v 0.501248 0.000000 -0.828752 +v 0.501248 0.000000 -0.995000 +v 0.390416 0.000000 -0.995000 +v 0.113336 0.000000 -0.939584 +v 0.168752 0.000000 -0.939584 +v 0.113336 0.000000 -0.828752 +v 0.279584 0.000000 -0.828752 +v 0.279584 0.000000 -0.995000 +v 0.168752 0.000000 -0.995000 +v -0.108336 0.000000 -0.939584 +v -0.052918 0.000000 -0.939584 +v -0.108336 0.000000 -0.828752 +v 0.057918 0.000000 -0.828752 +v 0.057918 0.000000 -0.995000 +v -0.052918 0.000000 -0.995000 +v -0.330000 0.000000 -0.939584 +v -0.274584 0.000000 -0.939584 +v -0.330000 0.000000 -0.828752 +v -0.163752 0.000000 -0.828752 +v -0.163752 0.000000 -0.995000 +v -0.274584 0.000000 -0.995000 +v -0.551664 0.000000 -0.939584 +v -0.496248 0.000000 -0.939584 +v -0.551664 0.000000 -0.828752 +v -0.385416 0.000000 -0.828752 +v -0.385416 0.000000 -0.995000 +v -0.496248 0.000000 -0.995000 +v -0.773336 0.000000 -0.939584 +v -0.717918 0.000000 -0.939584 +v -0.773336 0.000000 -0.828752 +v -0.607082 0.000000 -0.828752 +v -0.607082 0.000000 -0.995000 +v -0.717918 0.000000 -0.995000 +v -0.995000 0.000000 -0.939584 +v -0.939584 0.000000 -0.939584 +v -0.995000 0.000000 -0.828752 +v -0.828752 0.000000 -0.828752 +v -0.828752 0.000000 -0.995000 +v -0.939584 0.000000 -0.995000 +# 1369 vertices, 0 vertices normals + +f 362 363 364 +f 365 366 367 +f 368 369 370 +f 371 372 373 +f 374 375 376 +f 377 378 379 +f 380 381 382 +f 383 384 385 +f 386 387 388 +f 389 390 391 +f 392 393 394 +f 395 396 397 +f 398 399 400 +f 401 402 403 +f 404 405 406 +f 407 408 409 +f 410 411 412 +f 413 414 415 +f 416 417 418 +f 419 420 421 +f 422 423 424 +f 425 426 427 +f 428 429 430 +f 431 432 433 +f 434 435 436 +f 437 438 439 +f 440 441 442 +f 443 444 445 +f 446 447 448 +f 449 450 451 +f 452 453 454 +f 455 456 457 +f 458 459 460 +f 461 462 463 +f 464 465 466 +f 467 468 469 +f 470 471 472 +f 473 474 475 +f 476 477 478 +f 479 480 481 +f 482 483 484 +f 485 486 487 +f 488 489 490 +f 491 492 493 +f 494 495 496 +f 497 498 499 +f 500 501 502 +f 503 504 505 +f 506 507 508 +f 509 510 511 +f 512 513 514 +f 515 516 517 +f 518 519 520 +f 521 522 523 +f 524 525 526 +f 527 528 529 +f 530 531 532 +f 533 534 535 +f 536 537 538 +f 539 540 541 +f 542 543 544 +f 545 546 547 +f 548 549 550 +f 551 552 553 +f 554 555 556 +f 557 558 559 +f 560 561 562 +f 563 564 565 +f 566 567 568 +f 569 570 571 +f 572 573 574 +f 575 576 577 +f 578 579 580 +f 581 582 583 +f 584 585 586 +f 587 588 589 +f 590 591 592 +f 593 594 595 +f 596 597 598 +f 599 600 601 +f 602 603 604 +f 605 606 607 +f 608 609 610 +f 611 612 613 +f 614 615 616 +f 617 618 619 +f 620 621 622 +f 623 624 625 +f 626 627 628 +f 629 630 631 +f 632 633 634 +f 635 636 637 +f 638 639 640 +f 641 642 643 +f 644 645 646 +f 647 648 649 +f 650 651 652 +f 653 654 655 +f 656 657 658 +f 659 660 661 +f 662 663 664 +f 665 666 667 +f 668 669 670 +f 671 672 673 +f 674 675 676 +f 677 678 679 +f 680 681 682 +f 683 684 685 +f 686 687 688 +f 689 690 691 +f 692 693 694 +f 695 696 697 +f 698 699 700 +f 701 702 703 +f 704 705 706 +f 707 708 709 +f 710 711 712 +f 713 714 715 +f 716 717 718 +f 719 720 721 +f 722 723 724 +f 725 726 727 +f 728 729 730 +f 731 732 733 +f 734 735 736 +f 737 738 739 +f 740 741 742 +f 743 744 745 +f 746 747 748 +f 749 750 751 +f 752 753 754 +f 755 756 757 +f 758 759 760 +f 761 762 763 +f 764 765 766 +f 767 768 769 +f 770 771 772 +f 773 774 775 +f 776 777 778 +f 779 780 781 +f 782 783 784 +f 785 786 787 +f 788 789 790 +f 791 792 793 +f 794 795 796 +f 797 798 799 +f 800 801 802 +f 803 804 805 +f 806 807 808 +f 809 810 811 +f 812 813 814 +f 815 816 817 +f 818 819 820 +f 821 822 823 +f 824 825 826 +f 827 828 829 +f 830 831 832 +f 833 834 835 +f 836 837 838 +f 839 840 841 +f 842 843 844 +f 845 846 847 +f 848 364 849 +f 850 851 362 +f 363 852 853 +f 854 367 853 +f 855 856 365 +f 366 857 849 +f 858 370 859 +f 860 861 368 +f 369 862 863 +f 850 373 863 +f 848 864 371 +f 372 865 859 +f 866 376 867 +f 868 869 374 +f 375 870 871 +f 860 379 871 +f 858 872 377 +f 378 873 867 +f 874 382 875 +f 876 877 380 +f 381 878 879 +f 868 385 879 +f 866 880 383 +f 384 881 875 +f 882 388 883 +f 884 885 386 +f 387 886 887 +f 876 391 887 +f 874 888 389 +f 390 889 883 +f 890 394 891 +f 892 893 392 +f 393 894 895 +f 884 397 895 +f 882 896 395 +f 396 897 891 +f 898 400 899 +f 900 901 398 +f 399 902 903 +f 892 403 903 +f 890 904 401 +f 402 905 899 +f 906 406 907 +f 908 909 404 +f 405 910 911 +f 900 409 911 +f 898 912 407 +f 408 913 907 +f 914 412 915 +f 916 917 410 +f 411 918 919 +f 908 415 919 +f 906 920 413 +f 414 921 915 +f 922 418 923 +f 924 857 416 +f 417 856 925 +f 926 421 925 +f 927 928 419 +f 420 929 923 +f 930 424 931 +f 932 865 422 +f 423 864 933 +f 924 427 933 +f 922 934 425 +f 426 935 931 +f 936 430 937 +f 938 873 428 +f 429 872 939 +f 932 433 939 +f 930 940 431 +f 432 941 937 +f 942 436 943 +f 944 881 434 +f 435 880 945 +f 938 439 945 +f 936 946 437 +f 438 947 943 +f 948 442 949 +f 950 889 440 +f 441 888 951 +f 944 445 951 +f 942 952 443 +f 444 953 949 +f 954 448 955 +f 956 897 446 +f 447 896 957 +f 950 451 957 +f 948 958 449 +f 450 959 955 +f 960 454 961 +f 962 905 452 +f 453 904 963 +f 956 457 963 +f 954 964 455 +f 456 965 961 +f 966 460 967 +f 968 913 458 +f 459 912 969 +f 962 463 969 +f 960 970 461 +f 462 971 967 +f 972 466 973 +f 974 921 464 +f 465 920 975 +f 968 469 975 +f 966 976 467 +f 468 977 973 +f 978 472 979 +f 980 929 470 +f 471 928 981 +f 982 475 981 +f 983 984 473 +f 474 985 979 +f 986 478 987 +f 988 935 476 +f 477 934 989 +f 980 481 989 +f 978 990 479 +f 480 991 987 +f 992 484 993 +f 994 941 482 +f 483 940 995 +f 988 487 995 +f 986 996 485 +f 486 997 993 +f 998 490 999 +f 1000 947 488 +f 489 946 1001 +f 994 493 1001 +f 992 1002 491 +f 492 1003 999 +f 1004 496 1005 +f 1006 953 494 +f 495 952 1007 +f 1000 499 1007 +f 998 1008 497 +f 498 1009 1005 +f 1010 502 1011 +f 1012 959 500 +f 501 958 1013 +f 1006 505 1013 +f 1004 1014 503 +f 504 1015 1011 +f 1016 508 1017 +f 1018 965 506 +f 507 964 1019 +f 1012 511 1019 +f 1010 1020 509 +f 510 1021 1017 +f 1022 514 1023 +f 1024 971 512 +f 513 970 1025 +f 1018 517 1025 +f 1016 1026 515 +f 516 1027 1023 +f 1028 520 1029 +f 1030 977 518 +f 519 976 1031 +f 1024 523 1031 +f 1022 1032 521 +f 522 1033 1029 +f 1034 526 1035 +f 1036 985 524 +f 525 984 1037 +f 1038 529 1037 +f 1039 1040 527 +f 528 1041 1035 +f 1042 532 1043 +f 1044 991 530 +f 531 990 1045 +f 1036 535 1045 +f 1034 1046 533 +f 534 1047 1043 +f 1048 538 1049 +f 1050 997 536 +f 537 996 1051 +f 1044 541 1051 +f 1042 1052 539 +f 540 1053 1049 +f 1054 544 1055 +f 1056 1003 542 +f 543 1002 1057 +f 1050 547 1057 +f 1048 1058 545 +f 546 1059 1055 +f 1060 550 1061 +f 1062 1009 548 +f 549 1008 1063 +f 1056 553 1063 +f 1054 1064 551 +f 552 1065 1061 +f 1066 556 1067 +f 1068 1015 554 +f 555 1014 1069 +f 1062 559 1069 +f 1060 1070 557 +f 558 1071 1067 +f 1072 562 1073 +f 1074 1021 560 +f 561 1020 1075 +f 1068 565 1075 +f 1066 1076 563 +f 564 1077 1073 +f 1078 568 1079 +f 1080 1027 566 +f 567 1026 1081 +f 1074 571 1081 +f 1072 1082 569 +f 570 1083 1079 +f 1084 574 1085 +f 1086 1033 572 +f 573 1032 1087 +f 1080 577 1087 +f 1078 1088 575 +f 576 1089 1085 +f 1090 580 1091 +f 1092 1041 578 +f 579 1040 1093 +f 1094 583 1093 +f 1095 1096 581 +f 582 1097 1091 +f 1098 586 1099 +f 1100 1047 584 +f 585 1046 1101 +f 1092 589 1101 +f 1090 1102 587 +f 588 1103 1099 +f 1104 592 1105 +f 1106 1053 590 +f 591 1052 1107 +f 1100 595 1107 +f 1098 1108 593 +f 594 1109 1105 +f 1110 598 1111 +f 1112 1059 596 +f 597 1058 1113 +f 1106 601 1113 +f 1104 1114 599 +f 600 1115 1111 +f 1116 604 1117 +f 1118 1065 602 +f 603 1064 1119 +f 1112 607 1119 +f 1110 1120 605 +f 606 1121 1117 +f 1122 610 1123 +f 1124 1071 608 +f 609 1070 1125 +f 1118 613 1125 +f 1116 1126 611 +f 612 1127 1123 +f 1128 616 1129 +f 1130 1077 614 +f 615 1076 1131 +f 1124 619 1131 +f 1122 1132 617 +f 618 1133 1129 +f 1134 622 1135 +f 1136 1083 620 +f 621 1082 1137 +f 1130 625 1137 +f 1128 1138 623 +f 624 1139 1135 +f 1140 628 1141 +f 1142 1089 626 +f 627 1088 1143 +f 1136 631 1143 +f 1134 1144 629 +f 630 1145 1141 +f 1146 634 1147 +f 1148 1097 632 +f 633 1096 1149 +f 1150 637 1149 +f 1151 1152 635 +f 636 1153 1147 +f 1154 640 1155 +f 1156 1103 638 +f 639 1102 1157 +f 1148 643 1157 +f 1146 1158 641 +f 642 1159 1155 +f 1160 646 1161 +f 1162 1109 644 +f 645 1108 1163 +f 1156 649 1163 +f 1154 1164 647 +f 648 1165 1161 +f 1166 652 1167 +f 1168 1115 650 +f 651 1114 1169 +f 1162 655 1169 +f 1160 1170 653 +f 654 1171 1167 +f 1172 658 1173 +f 1174 1121 656 +f 657 1120 1175 +f 1168 661 1175 +f 1166 1176 659 +f 660 1177 1173 +f 1178 664 1179 +f 1180 1127 662 +f 663 1126 1181 +f 1174 667 1181 +f 1172 1182 665 +f 666 1183 1179 +f 1184 670 1185 +f 1186 1133 668 +f 669 1132 1187 +f 1180 673 1187 +f 1178 1188 671 +f 672 1189 1185 +f 1190 676 1191 +f 1192 1139 674 +f 675 1138 1193 +f 1186 679 1193 +f 1184 1194 677 +f 678 1195 1191 +f 1196 682 1197 +f 1198 1145 680 +f 681 1144 1199 +f 1192 685 1199 +f 1190 1200 683 +f 684 1201 1197 +f 1202 688 1203 +f 1204 1153 686 +f 687 1152 1205 +f 1206 691 1205 +f 1207 1208 689 +f 690 1209 1203 +f 1210 694 1211 +f 1212 1159 692 +f 693 1158 1213 +f 1204 697 1213 +f 1202 1214 695 +f 696 1215 1211 +f 1216 700 1217 +f 1218 1165 698 +f 699 1164 1219 +f 1212 703 1219 +f 1210 1220 701 +f 702 1221 1217 +f 1222 706 1223 +f 1224 1171 704 +f 705 1170 1225 +f 1218 709 1225 +f 1216 1226 707 +f 708 1227 1223 +f 1228 712 1229 +f 1230 1177 710 +f 711 1176 1231 +f 1224 715 1231 +f 1222 1232 713 +f 714 1233 1229 +f 1234 718 1235 +f 1236 1183 716 +f 717 1182 1237 +f 1230 721 1237 +f 1228 1238 719 +f 720 1239 1235 +f 1240 724 1241 +f 1242 1189 722 +f 723 1188 1243 +f 1236 727 1243 +f 1234 1244 725 +f 726 1245 1241 +f 1246 730 1247 +f 1248 1195 728 +f 729 1194 1249 +f 1242 733 1249 +f 1240 1250 731 +f 732 1251 1247 +f 1252 736 1253 +f 1254 1201 734 +f 735 1200 1255 +f 1248 739 1255 +f 1246 1256 737 +f 738 1257 1253 +f 1258 742 1259 +f 1260 1209 740 +f 741 1208 1261 +f 1262 745 1261 +f 1263 1264 743 +f 744 1265 1259 +f 1266 748 1267 +f 1268 1215 746 +f 747 1214 1269 +f 1260 751 1269 +f 1258 1270 749 +f 750 1271 1267 +f 1272 754 1273 +f 1274 1221 752 +f 753 1220 1275 +f 1268 757 1275 +f 1266 1276 755 +f 756 1277 1273 +f 1278 760 1279 +f 1280 1227 758 +f 759 1226 1281 +f 1274 763 1281 +f 1272 1282 761 +f 762 1283 1279 +f 1284 766 1285 +f 1286 1233 764 +f 765 1232 1287 +f 1280 769 1287 +f 1278 1288 767 +f 768 1289 1285 +f 1290 772 1291 +f 1292 1239 770 +f 771 1238 1293 +f 1286 775 1293 +f 1284 1294 773 +f 774 1295 1291 +f 1296 778 1297 +f 1298 1245 776 +f 777 1244 1299 +f 1292 781 1299 +f 1290 1300 779 +f 780 1301 1297 +f 1302 784 1303 +f 1304 1251 782 +f 783 1250 1305 +f 1298 787 1305 +f 1296 1306 785 +f 786 1307 1303 +f 1308 790 1309 +f 1310 1257 788 +f 789 1256 1311 +f 1304 793 1311 +f 1302 1312 791 +f 792 1313 1309 +f 1314 796 1315 +f 1316 1265 794 +f 795 1264 1317 +f 1318 799 1317 +f 1319 1320 797 +f 798 1321 1315 +f 1322 802 1323 +f 1324 1271 800 +f 801 1270 1325 +f 1316 805 1325 +f 1314 1326 803 +f 804 1327 1323 +f 1328 808 1329 +f 1330 1277 806 +f 807 1276 1331 +f 1324 811 1331 +f 1322 1332 809 +f 810 1333 1329 +f 1334 814 1335 +f 1336 1283 812 +f 813 1282 1337 +f 1330 817 1337 +f 1328 1338 815 +f 816 1339 1335 +f 1340 820 1341 +f 1342 1289 818 +f 819 1288 1343 +f 1336 823 1343 +f 1334 1344 821 +f 822 1345 1341 +f 1346 826 1347 +f 1348 1295 824 +f 825 1294 1349 +f 1342 829 1349 +f 1340 1350 827 +f 828 1351 1347 +f 1352 832 1353 +f 1354 1301 830 +f 831 1300 1355 +f 1348 835 1355 +f 1346 1356 833 +f 834 1357 1353 +f 1358 838 1359 +f 1360 1307 836 +f 837 1306 1361 +f 1354 841 1361 +f 1352 1362 839 +f 840 1363 1359 +f 1364 844 1365 +f 1366 1313 842 +f 843 1312 1367 +f 1360 847 1367 +f 1358 1368 845 +f 846 1369 1365 +f 101 362 364 +f 362 102 363 +f 364 363 103 +f 104 365 367 +f 365 105 366 +f 367 366 103 +f 106 368 370 +f 368 107 369 +f 370 369 108 +f 101 371 373 +f 371 109 372 +f 373 372 108 +f 110 374 376 +f 374 111 375 +f 376 375 112 +f 106 377 379 +f 377 113 378 +f 379 378 112 +f 114 380 382 +f 380 115 381 +f 382 381 116 +f 110 383 385 +f 383 117 384 +f 385 384 116 +f 118 386 388 +f 386 119 387 +f 388 387 120 +f 114 389 391 +f 389 121 390 +f 391 390 120 +f 122 392 394 +f 392 123 393 +f 394 393 124 +f 118 395 397 +f 395 125 396 +f 397 396 124 +f 126 398 400 +f 398 127 399 +f 400 399 128 +f 122 401 403 +f 401 129 402 +f 403 402 128 +f 130 404 406 +f 404 131 405 +f 406 405 132 +f 126 407 409 +f 407 133 408 +f 409 408 132 +f 134 410 412 +f 410 135 411 +f 412 411 136 +f 130 413 415 +f 413 137 414 +f 415 414 136 +f 138 416 418 +f 416 105 417 +f 418 417 139 +f 140 419 421 +f 419 141 420 +f 421 420 139 +f 142 422 424 +f 422 109 423 +f 424 423 143 +f 138 425 427 +f 425 144 426 +f 427 426 143 +f 145 428 430 +f 428 113 429 +f 430 429 146 +f 142 431 433 +f 431 147 432 +f 433 432 146 +f 148 434 436 +f 434 117 435 +f 436 435 149 +f 145 437 439 +f 437 150 438 +f 439 438 149 +f 151 440 442 +f 440 121 441 +f 442 441 152 +f 148 443 445 +f 443 153 444 +f 445 444 152 +f 154 446 448 +f 446 125 447 +f 448 447 155 +f 151 449 451 +f 449 156 450 +f 451 450 155 +f 157 452 454 +f 452 129 453 +f 454 453 158 +f 154 455 457 +f 455 159 456 +f 457 456 158 +f 160 458 460 +f 458 133 459 +f 460 459 161 +f 157 461 463 +f 461 162 462 +f 463 462 161 +f 163 464 466 +f 464 137 465 +f 466 465 164 +f 160 467 469 +f 467 165 468 +f 469 468 164 +f 166 470 472 +f 470 141 471 +f 472 471 167 +f 168 473 475 +f 473 169 474 +f 475 474 167 +f 170 476 478 +f 476 144 477 +f 478 477 171 +f 166 479 481 +f 479 172 480 +f 481 480 171 +f 173 482 484 +f 482 147 483 +f 484 483 174 +f 170 485 487 +f 485 175 486 +f 487 486 174 +f 176 488 490 +f 488 150 489 +f 490 489 177 +f 173 491 493 +f 491 178 492 +f 493 492 177 +f 179 494 496 +f 494 153 495 +f 496 495 180 +f 176 497 499 +f 497 181 498 +f 499 498 180 +f 182 500 502 +f 500 156 501 +f 502 501 183 +f 179 503 505 +f 503 184 504 +f 505 504 183 +f 185 506 508 +f 506 159 507 +f 508 507 186 +f 182 509 511 +f 509 187 510 +f 511 510 186 +f 188 512 514 +f 512 162 513 +f 514 513 189 +f 185 515 517 +f 515 190 516 +f 517 516 189 +f 191 518 520 +f 518 165 519 +f 520 519 192 +f 188 521 523 +f 521 193 522 +f 523 522 192 +f 194 524 526 +f 524 169 525 +f 526 525 195 +f 196 527 529 +f 527 197 528 +f 529 528 195 +f 198 530 532 +f 530 172 531 +f 532 531 199 +f 194 533 535 +f 533 200 534 +f 535 534 199 +f 201 536 538 +f 536 175 537 +f 538 537 202 +f 198 539 541 +f 539 203 540 +f 541 540 202 +f 204 542 544 +f 542 178 543 +f 544 543 205 +f 201 545 547 +f 545 206 546 +f 547 546 205 +f 207 548 550 +f 548 181 549 +f 550 549 208 +f 204 551 553 +f 551 209 552 +f 553 552 208 +f 210 554 556 +f 554 184 555 +f 556 555 211 +f 207 557 559 +f 557 212 558 +f 559 558 211 +f 213 560 562 +f 560 187 561 +f 562 561 214 +f 210 563 565 +f 563 215 564 +f 565 564 214 +f 216 566 568 +f 566 190 567 +f 568 567 217 +f 213 569 571 +f 569 218 570 +f 571 570 217 +f 219 572 574 +f 572 193 573 +f 574 573 220 +f 216 575 577 +f 575 221 576 +f 577 576 220 +f 222 578 580 +f 578 197 579 +f 580 579 223 +f 224 581 583 +f 581 225 582 +f 583 582 223 +f 226 584 586 +f 584 200 585 +f 586 585 227 +f 222 587 589 +f 587 228 588 +f 589 588 227 +f 229 590 592 +f 590 203 591 +f 592 591 230 +f 226 593 595 +f 593 231 594 +f 595 594 230 +f 232 596 598 +f 596 206 597 +f 598 597 233 +f 229 599 601 +f 599 234 600 +f 601 600 233 +f 235 602 604 +f 602 209 603 +f 604 603 236 +f 232 605 607 +f 605 237 606 +f 607 606 236 +f 238 608 610 +f 608 212 609 +f 610 609 239 +f 235 611 613 +f 611 240 612 +f 613 612 239 +f 241 614 616 +f 614 215 615 +f 616 615 242 +f 238 617 619 +f 617 243 618 +f 619 618 242 +f 244 620 622 +f 620 218 621 +f 622 621 245 +f 241 623 625 +f 623 246 624 +f 625 624 245 +f 247 626 628 +f 626 221 627 +f 628 627 248 +f 244 629 631 +f 629 249 630 +f 631 630 248 +f 250 632 634 +f 632 225 633 +f 634 633 251 +f 252 635 637 +f 635 253 636 +f 637 636 251 +f 254 638 640 +f 638 228 639 +f 640 639 255 +f 250 641 643 +f 641 256 642 +f 643 642 255 +f 257 644 646 +f 644 231 645 +f 646 645 258 +f 254 647 649 +f 647 259 648 +f 649 648 258 +f 260 650 652 +f 650 234 651 +f 652 651 261 +f 257 653 655 +f 653 262 654 +f 655 654 261 +f 263 656 658 +f 656 237 657 +f 658 657 264 +f 260 659 661 +f 659 265 660 +f 661 660 264 +f 266 662 664 +f 662 240 663 +f 664 663 267 +f 263 665 667 +f 665 268 666 +f 667 666 267 +f 269 668 670 +f 668 243 669 +f 670 669 270 +f 266 671 673 +f 671 271 672 +f 673 672 270 +f 272 674 676 +f 674 246 675 +f 676 675 273 +f 269 677 679 +f 677 274 678 +f 679 678 273 +f 275 680 682 +f 680 249 681 +f 682 681 276 +f 272 683 685 +f 683 277 684 +f 685 684 276 +f 278 686 688 +f 686 253 687 +f 688 687 279 +f 280 689 691 +f 689 281 690 +f 691 690 279 +f 282 692 694 +f 692 256 693 +f 694 693 283 +f 278 695 697 +f 695 284 696 +f 697 696 283 +f 285 698 700 +f 698 259 699 +f 700 699 286 +f 282 701 703 +f 701 287 702 +f 703 702 286 +f 288 704 706 +f 704 262 705 +f 706 705 289 +f 285 707 709 +f 707 290 708 +f 709 708 289 +f 291 710 712 +f 710 265 711 +f 712 711 292 +f 288 713 715 +f 713 293 714 +f 715 714 292 +f 294 716 718 +f 716 268 717 +f 718 717 295 +f 291 719 721 +f 719 296 720 +f 721 720 295 +f 297 722 724 +f 722 271 723 +f 724 723 298 +f 294 725 727 +f 725 299 726 +f 727 726 298 +f 300 728 730 +f 728 274 729 +f 730 729 301 +f 297 731 733 +f 731 302 732 +f 733 732 301 +f 303 734 736 +f 734 277 735 +f 736 735 304 +f 300 737 739 +f 737 305 738 +f 739 738 304 +f 306 740 742 +f 740 281 741 +f 742 741 307 +f 308 743 745 +f 743 309 744 +f 745 744 307 +f 310 746 748 +f 746 284 747 +f 748 747 311 +f 306 749 751 +f 749 312 750 +f 751 750 311 +f 313 752 754 +f 752 287 753 +f 754 753 314 +f 310 755 757 +f 755 315 756 +f 757 756 314 +f 316 758 760 +f 758 290 759 +f 760 759 317 +f 313 761 763 +f 761 318 762 +f 763 762 317 +f 319 764 766 +f 764 293 765 +f 766 765 320 +f 316 767 769 +f 767 321 768 +f 769 768 320 +f 322 770 772 +f 770 296 771 +f 772 771 323 +f 319 773 775 +f 773 324 774 +f 775 774 323 +f 325 776 778 +f 776 299 777 +f 778 777 326 +f 322 779 781 +f 779 327 780 +f 781 780 326 +f 328 782 784 +f 782 302 783 +f 784 783 329 +f 325 785 787 +f 785 330 786 +f 787 786 329 +f 331 788 790 +f 788 305 789 +f 790 789 332 +f 328 791 793 +f 791 333 792 +f 793 792 332 +f 334 794 796 +f 794 309 795 +f 796 795 335 +f 336 797 799 +f 797 337 798 +f 799 798 335 +f 338 800 802 +f 800 312 801 +f 802 801 339 +f 334 803 805 +f 803 340 804 +f 805 804 339 +f 341 806 808 +f 806 315 807 +f 808 807 342 +f 338 809 811 +f 809 343 810 +f 811 810 342 +f 344 812 814 +f 812 318 813 +f 814 813 345 +f 341 815 817 +f 815 346 816 +f 817 816 345 +f 347 818 820 +f 818 321 819 +f 820 819 348 +f 344 821 823 +f 821 349 822 +f 823 822 348 +f 350 824 826 +f 824 324 825 +f 826 825 351 +f 347 827 829 +f 827 352 828 +f 829 828 351 +f 353 830 832 +f 830 327 831 +f 832 831 354 +f 350 833 835 +f 833 355 834 +f 835 834 354 +f 356 836 838 +f 836 330 837 +f 838 837 357 +f 353 839 841 +f 839 358 840 +f 841 840 357 +f 359 842 844 +f 842 333 843 +f 844 843 360 +f 356 845 847 +f 845 361 846 +f 847 846 360 +f 1 848 849 +f 848 101 364 +f 849 364 103 +f 101 850 362 +f 850 2 851 +f 362 851 102 +f 103 363 853 +f 363 102 852 +f 853 852 3 +f 3 854 853 +f 854 104 367 +f 853 367 103 +f 104 855 365 +f 855 4 856 +f 365 856 105 +f 103 366 849 +f 366 105 857 +f 849 857 1 +f 5 858 859 +f 858 106 370 +f 859 370 108 +f 106 860 368 +f 860 6 861 +f 368 861 107 +f 108 369 863 +f 369 107 862 +f 863 862 2 +f 2 850 863 +f 850 101 373 +f 863 373 108 +f 101 848 371 +f 848 1 864 +f 371 864 109 +f 108 372 859 +f 372 109 865 +f 859 865 5 +f 7 866 867 +f 866 110 376 +f 867 376 112 +f 110 868 374 +f 868 8 869 +f 374 869 111 +f 112 375 871 +f 375 111 870 +f 871 870 6 +f 6 860 871 +f 860 106 379 +f 871 379 112 +f 106 858 377 +f 858 5 872 +f 377 872 113 +f 112 378 867 +f 378 113 873 +f 867 873 7 +f 9 874 875 +f 874 114 382 +f 875 382 116 +f 114 876 380 +f 876 10 877 +f 380 877 115 +f 116 381 879 +f 381 115 878 +f 879 878 8 +f 8 868 879 +f 868 110 385 +f 879 385 116 +f 110 866 383 +f 866 7 880 +f 383 880 117 +f 116 384 875 +f 384 117 881 +f 875 881 9 +f 11 882 883 +f 882 118 388 +f 883 388 120 +f 118 884 386 +f 884 12 885 +f 386 885 119 +f 120 387 887 +f 387 119 886 +f 887 886 10 +f 10 876 887 +f 876 114 391 +f 887 391 120 +f 114 874 389 +f 874 9 888 +f 389 888 121 +f 120 390 883 +f 390 121 889 +f 883 889 11 +f 13 890 891 +f 890 122 394 +f 891 394 124 +f 122 892 392 +f 892 14 893 +f 392 893 123 +f 124 393 895 +f 393 123 894 +f 895 894 12 +f 12 884 895 +f 884 118 397 +f 895 397 124 +f 118 882 395 +f 882 11 896 +f 395 896 125 +f 124 396 891 +f 396 125 897 +f 891 897 13 +f 15 898 899 +f 898 126 400 +f 899 400 128 +f 126 900 398 +f 900 16 901 +f 398 901 127 +f 128 399 903 +f 399 127 902 +f 903 902 14 +f 14 892 903 +f 892 122 403 +f 903 403 128 +f 122 890 401 +f 890 13 904 +f 401 904 129 +f 128 402 899 +f 402 129 905 +f 899 905 15 +f 17 906 907 +f 906 130 406 +f 907 406 132 +f 130 908 404 +f 908 18 909 +f 404 909 131 +f 132 405 911 +f 405 131 910 +f 911 910 16 +f 16 900 911 +f 900 126 409 +f 911 409 132 +f 126 898 407 +f 898 15 912 +f 407 912 133 +f 132 408 907 +f 408 133 913 +f 907 913 17 +f 19 914 915 +f 914 134 412 +f 915 412 136 +f 134 916 410 +f 916 20 917 +f 410 917 135 +f 136 411 919 +f 411 135 918 +f 919 918 18 +f 18 908 919 +f 908 130 415 +f 919 415 136 +f 130 906 413 +f 906 17 920 +f 413 920 137 +f 136 414 915 +f 414 137 921 +f 915 921 19 +f 21 922 923 +f 922 138 418 +f 923 418 139 +f 138 924 416 +f 924 1 857 +f 416 857 105 +f 139 417 925 +f 417 105 856 +f 925 856 4 +f 4 926 925 +f 926 140 421 +f 925 421 139 +f 140 927 419 +f 927 22 928 +f 419 928 141 +f 139 420 923 +f 420 141 929 +f 923 929 21 +f 23 930 931 +f 930 142 424 +f 931 424 143 +f 142 932 422 +f 932 5 865 +f 422 865 109 +f 143 423 933 +f 423 109 864 +f 933 864 1 +f 1 924 933 +f 924 138 427 +f 933 427 143 +f 138 922 425 +f 922 21 934 +f 425 934 144 +f 143 426 931 +f 426 144 935 +f 931 935 23 +f 24 936 937 +f 936 145 430 +f 937 430 146 +f 145 938 428 +f 938 7 873 +f 428 873 113 +f 146 429 939 +f 429 113 872 +f 939 872 5 +f 5 932 939 +f 932 142 433 +f 939 433 146 +f 142 930 431 +f 930 23 940 +f 431 940 147 +f 146 432 937 +f 432 147 941 +f 937 941 24 +f 25 942 943 +f 942 148 436 +f 943 436 149 +f 148 944 434 +f 944 9 881 +f 434 881 117 +f 149 435 945 +f 435 117 880 +f 945 880 7 +f 7 938 945 +f 938 145 439 +f 945 439 149 +f 145 936 437 +f 936 24 946 +f 437 946 150 +f 149 438 943 +f 438 150 947 +f 943 947 25 +f 26 948 949 +f 948 151 442 +f 949 442 152 +f 151 950 440 +f 950 11 889 +f 440 889 121 +f 152 441 951 +f 441 121 888 +f 951 888 9 +f 9 944 951 +f 944 148 445 +f 951 445 152 +f 148 942 443 +f 942 25 952 +f 443 952 153 +f 152 444 949 +f 444 153 953 +f 949 953 26 +f 27 954 955 +f 954 154 448 +f 955 448 155 +f 154 956 446 +f 956 13 897 +f 446 897 125 +f 155 447 957 +f 447 125 896 +f 957 896 11 +f 11 950 957 +f 950 151 451 +f 957 451 155 +f 151 948 449 +f 948 26 958 +f 449 958 156 +f 155 450 955 +f 450 156 959 +f 955 959 27 +f 28 960 961 +f 960 157 454 +f 961 454 158 +f 157 962 452 +f 962 15 905 +f 452 905 129 +f 158 453 963 +f 453 129 904 +f 963 904 13 +f 13 956 963 +f 956 154 457 +f 963 457 158 +f 154 954 455 +f 954 27 964 +f 455 964 159 +f 158 456 961 +f 456 159 965 +f 961 965 28 +f 29 966 967 +f 966 160 460 +f 967 460 161 +f 160 968 458 +f 968 17 913 +f 458 913 133 +f 161 459 969 +f 459 133 912 +f 969 912 15 +f 15 962 969 +f 962 157 463 +f 969 463 161 +f 157 960 461 +f 960 28 970 +f 461 970 162 +f 161 462 967 +f 462 162 971 +f 967 971 29 +f 30 972 973 +f 972 163 466 +f 973 466 164 +f 163 974 464 +f 974 19 921 +f 464 921 137 +f 164 465 975 +f 465 137 920 +f 975 920 17 +f 17 968 975 +f 968 160 469 +f 975 469 164 +f 160 966 467 +f 966 29 976 +f 467 976 165 +f 164 468 973 +f 468 165 977 +f 973 977 30 +f 31 978 979 +f 978 166 472 +f 979 472 167 +f 166 980 470 +f 980 21 929 +f 470 929 141 +f 167 471 981 +f 471 141 928 +f 981 928 22 +f 22 982 981 +f 982 168 475 +f 981 475 167 +f 168 983 473 +f 983 32 984 +f 473 984 169 +f 167 474 979 +f 474 169 985 +f 979 985 31 +f 33 986 987 +f 986 170 478 +f 987 478 171 +f 170 988 476 +f 988 23 935 +f 476 935 144 +f 171 477 989 +f 477 144 934 +f 989 934 21 +f 21 980 989 +f 980 166 481 +f 989 481 171 +f 166 978 479 +f 978 31 990 +f 479 990 172 +f 171 480 987 +f 480 172 991 +f 987 991 33 +f 34 992 993 +f 992 173 484 +f 993 484 174 +f 173 994 482 +f 994 24 941 +f 482 941 147 +f 174 483 995 +f 483 147 940 +f 995 940 23 +f 23 988 995 +f 988 170 487 +f 995 487 174 +f 170 986 485 +f 986 33 996 +f 485 996 175 +f 174 486 993 +f 486 175 997 +f 993 997 34 +f 35 998 999 +f 998 176 490 +f 999 490 177 +f 176 1000 488 +f 1000 25 947 +f 488 947 150 +f 177 489 1001 +f 489 150 946 +f 1001 946 24 +f 24 994 1001 +f 994 173 493 +f 1001 493 177 +f 173 992 491 +f 992 34 1002 +f 491 1002 178 +f 177 492 999 +f 492 178 1003 +f 999 1003 35 +f 36 1004 1005 +f 1004 179 496 +f 1005 496 180 +f 179 1006 494 +f 1006 26 953 +f 494 953 153 +f 180 495 1007 +f 495 153 952 +f 1007 952 25 +f 25 1000 1007 +f 1000 176 499 +f 1007 499 180 +f 176 998 497 +f 998 35 1008 +f 497 1008 181 +f 180 498 1005 +f 498 181 1009 +f 1005 1009 36 +f 37 1010 1011 +f 1010 182 502 +f 1011 502 183 +f 182 1012 500 +f 1012 27 959 +f 500 959 156 +f 183 501 1013 +f 501 156 958 +f 1013 958 26 +f 26 1006 1013 +f 1006 179 505 +f 1013 505 183 +f 179 1004 503 +f 1004 36 1014 +f 503 1014 184 +f 183 504 1011 +f 504 184 1015 +f 1011 1015 37 +f 38 1016 1017 +f 1016 185 508 +f 1017 508 186 +f 185 1018 506 +f 1018 28 965 +f 506 965 159 +f 186 507 1019 +f 507 159 964 +f 1019 964 27 +f 27 1012 1019 +f 1012 182 511 +f 1019 511 186 +f 182 1010 509 +f 1010 37 1020 +f 509 1020 187 +f 186 510 1017 +f 510 187 1021 +f 1017 1021 38 +f 39 1022 1023 +f 1022 188 514 +f 1023 514 189 +f 188 1024 512 +f 1024 29 971 +f 512 971 162 +f 189 513 1025 +f 513 162 970 +f 1025 970 28 +f 28 1018 1025 +f 1018 185 517 +f 1025 517 189 +f 185 1016 515 +f 1016 38 1026 +f 515 1026 190 +f 189 516 1023 +f 516 190 1027 +f 1023 1027 39 +f 40 1028 1029 +f 1028 191 520 +f 1029 520 192 +f 191 1030 518 +f 1030 30 977 +f 518 977 165 +f 192 519 1031 +f 519 165 976 +f 1031 976 29 +f 29 1024 1031 +f 1024 188 523 +f 1031 523 192 +f 188 1022 521 +f 1022 39 1032 +f 521 1032 193 +f 192 522 1029 +f 522 193 1033 +f 1029 1033 40 +f 41 1034 1035 +f 1034 194 526 +f 1035 526 195 +f 194 1036 524 +f 1036 31 985 +f 524 985 169 +f 195 525 1037 +f 525 169 984 +f 1037 984 32 +f 32 1038 1037 +f 1038 196 529 +f 1037 529 195 +f 196 1039 527 +f 1039 42 1040 +f 527 1040 197 +f 195 528 1035 +f 528 197 1041 +f 1035 1041 41 +f 43 1042 1043 +f 1042 198 532 +f 1043 532 199 +f 198 1044 530 +f 1044 33 991 +f 530 991 172 +f 199 531 1045 +f 531 172 990 +f 1045 990 31 +f 31 1036 1045 +f 1036 194 535 +f 1045 535 199 +f 194 1034 533 +f 1034 41 1046 +f 533 1046 200 +f 199 534 1043 +f 534 200 1047 +f 1043 1047 43 +f 44 1048 1049 +f 1048 201 538 +f 1049 538 202 +f 201 1050 536 +f 1050 34 997 +f 536 997 175 +f 202 537 1051 +f 537 175 996 +f 1051 996 33 +f 33 1044 1051 +f 1044 198 541 +f 1051 541 202 +f 198 1042 539 +f 1042 43 1052 +f 539 1052 203 +f 202 540 1049 +f 540 203 1053 +f 1049 1053 44 +f 45 1054 1055 +f 1054 204 544 +f 1055 544 205 +f 204 1056 542 +f 1056 35 1003 +f 542 1003 178 +f 205 543 1057 +f 543 178 1002 +f 1057 1002 34 +f 34 1050 1057 +f 1050 201 547 +f 1057 547 205 +f 201 1048 545 +f 1048 44 1058 +f 545 1058 206 +f 205 546 1055 +f 546 206 1059 +f 1055 1059 45 +f 46 1060 1061 +f 1060 207 550 +f 1061 550 208 +f 207 1062 548 +f 1062 36 1009 +f 548 1009 181 +f 208 549 1063 +f 549 181 1008 +f 1063 1008 35 +f 35 1056 1063 +f 1056 204 553 +f 1063 553 208 +f 204 1054 551 +f 1054 45 1064 +f 551 1064 209 +f 208 552 1061 +f 552 209 1065 +f 1061 1065 46 +f 47 1066 1067 +f 1066 210 556 +f 1067 556 211 +f 210 1068 554 +f 1068 37 1015 +f 554 1015 184 +f 211 555 1069 +f 555 184 1014 +f 1069 1014 36 +f 36 1062 1069 +f 1062 207 559 +f 1069 559 211 +f 207 1060 557 +f 1060 46 1070 +f 557 1070 212 +f 211 558 1067 +f 558 212 1071 +f 1067 1071 47 +f 48 1072 1073 +f 1072 213 562 +f 1073 562 214 +f 213 1074 560 +f 1074 38 1021 +f 560 1021 187 +f 214 561 1075 +f 561 187 1020 +f 1075 1020 37 +f 37 1068 1075 +f 1068 210 565 +f 1075 565 214 +f 210 1066 563 +f 1066 47 1076 +f 563 1076 215 +f 214 564 1073 +f 564 215 1077 +f 1073 1077 48 +f 49 1078 1079 +f 1078 216 568 +f 1079 568 217 +f 216 1080 566 +f 1080 39 1027 +f 566 1027 190 +f 217 567 1081 +f 567 190 1026 +f 1081 1026 38 +f 38 1074 1081 +f 1074 213 571 +f 1081 571 217 +f 213 1072 569 +f 1072 48 1082 +f 569 1082 218 +f 217 570 1079 +f 570 218 1083 +f 1079 1083 49 +f 50 1084 1085 +f 1084 219 574 +f 1085 574 220 +f 219 1086 572 +f 1086 40 1033 +f 572 1033 193 +f 220 573 1087 +f 573 193 1032 +f 1087 1032 39 +f 39 1080 1087 +f 1080 216 577 +f 1087 577 220 +f 216 1078 575 +f 1078 49 1088 +f 575 1088 221 +f 220 576 1085 +f 576 221 1089 +f 1085 1089 50 +f 51 1090 1091 +f 1090 222 580 +f 1091 580 223 +f 222 1092 578 +f 1092 41 1041 +f 578 1041 197 +f 223 579 1093 +f 579 197 1040 +f 1093 1040 42 +f 42 1094 1093 +f 1094 224 583 +f 1093 583 223 +f 224 1095 581 +f 1095 52 1096 +f 581 1096 225 +f 223 582 1091 +f 582 225 1097 +f 1091 1097 51 +f 53 1098 1099 +f 1098 226 586 +f 1099 586 227 +f 226 1100 584 +f 1100 43 1047 +f 584 1047 200 +f 227 585 1101 +f 585 200 1046 +f 1101 1046 41 +f 41 1092 1101 +f 1092 222 589 +f 1101 589 227 +f 222 1090 587 +f 1090 51 1102 +f 587 1102 228 +f 227 588 1099 +f 588 228 1103 +f 1099 1103 53 +f 54 1104 1105 +f 1104 229 592 +f 1105 592 230 +f 229 1106 590 +f 1106 44 1053 +f 590 1053 203 +f 230 591 1107 +f 591 203 1052 +f 1107 1052 43 +f 43 1100 1107 +f 1100 226 595 +f 1107 595 230 +f 226 1098 593 +f 1098 53 1108 +f 593 1108 231 +f 230 594 1105 +f 594 231 1109 +f 1105 1109 54 +f 55 1110 1111 +f 1110 232 598 +f 1111 598 233 +f 232 1112 596 +f 1112 45 1059 +f 596 1059 206 +f 233 597 1113 +f 597 206 1058 +f 1113 1058 44 +f 44 1106 1113 +f 1106 229 601 +f 1113 601 233 +f 229 1104 599 +f 1104 54 1114 +f 599 1114 234 +f 233 600 1111 +f 600 234 1115 +f 1111 1115 55 +f 56 1116 1117 +f 1116 235 604 +f 1117 604 236 +f 235 1118 602 +f 1118 46 1065 +f 602 1065 209 +f 236 603 1119 +f 603 209 1064 +f 1119 1064 45 +f 45 1112 1119 +f 1112 232 607 +f 1119 607 236 +f 232 1110 605 +f 1110 55 1120 +f 605 1120 237 +f 236 606 1117 +f 606 237 1121 +f 1117 1121 56 +f 57 1122 1123 +f 1122 238 610 +f 1123 610 239 +f 238 1124 608 +f 1124 47 1071 +f 608 1071 212 +f 239 609 1125 +f 609 212 1070 +f 1125 1070 46 +f 46 1118 1125 +f 1118 235 613 +f 1125 613 239 +f 235 1116 611 +f 1116 56 1126 +f 611 1126 240 +f 239 612 1123 +f 612 240 1127 +f 1123 1127 57 +f 58 1128 1129 +f 1128 241 616 +f 1129 616 242 +f 241 1130 614 +f 1130 48 1077 +f 614 1077 215 +f 242 615 1131 +f 615 215 1076 +f 1131 1076 47 +f 47 1124 1131 +f 1124 238 619 +f 1131 619 242 +f 238 1122 617 +f 1122 57 1132 +f 617 1132 243 +f 242 618 1129 +f 618 243 1133 +f 1129 1133 58 +f 59 1134 1135 +f 1134 244 622 +f 1135 622 245 +f 244 1136 620 +f 1136 49 1083 +f 620 1083 218 +f 245 621 1137 +f 621 218 1082 +f 1137 1082 48 +f 48 1130 1137 +f 1130 241 625 +f 1137 625 245 +f 241 1128 623 +f 1128 58 1138 +f 623 1138 246 +f 245 624 1135 +f 624 246 1139 +f 1135 1139 59 +f 60 1140 1141 +f 1140 247 628 +f 1141 628 248 +f 247 1142 626 +f 1142 50 1089 +f 626 1089 221 +f 248 627 1143 +f 627 221 1088 +f 1143 1088 49 +f 49 1136 1143 +f 1136 244 631 +f 1143 631 248 +f 244 1134 629 +f 1134 59 1144 +f 629 1144 249 +f 248 630 1141 +f 630 249 1145 +f 1141 1145 60 +f 61 1146 1147 +f 1146 250 634 +f 1147 634 251 +f 250 1148 632 +f 1148 51 1097 +f 632 1097 225 +f 251 633 1149 +f 633 225 1096 +f 1149 1096 52 +f 52 1150 1149 +f 1150 252 637 +f 1149 637 251 +f 252 1151 635 +f 1151 62 1152 +f 635 1152 253 +f 251 636 1147 +f 636 253 1153 +f 1147 1153 61 +f 63 1154 1155 +f 1154 254 640 +f 1155 640 255 +f 254 1156 638 +f 1156 53 1103 +f 638 1103 228 +f 255 639 1157 +f 639 228 1102 +f 1157 1102 51 +f 51 1148 1157 +f 1148 250 643 +f 1157 643 255 +f 250 1146 641 +f 1146 61 1158 +f 641 1158 256 +f 255 642 1155 +f 642 256 1159 +f 1155 1159 63 +f 64 1160 1161 +f 1160 257 646 +f 1161 646 258 +f 257 1162 644 +f 1162 54 1109 +f 644 1109 231 +f 258 645 1163 +f 645 231 1108 +f 1163 1108 53 +f 53 1156 1163 +f 1156 254 649 +f 1163 649 258 +f 254 1154 647 +f 1154 63 1164 +f 647 1164 259 +f 258 648 1161 +f 648 259 1165 +f 1161 1165 64 +f 65 1166 1167 +f 1166 260 652 +f 1167 652 261 +f 260 1168 650 +f 1168 55 1115 +f 650 1115 234 +f 261 651 1169 +f 651 234 1114 +f 1169 1114 54 +f 54 1162 1169 +f 1162 257 655 +f 1169 655 261 +f 257 1160 653 +f 1160 64 1170 +f 653 1170 262 +f 261 654 1167 +f 654 262 1171 +f 1167 1171 65 +f 66 1172 1173 +f 1172 263 658 +f 1173 658 264 +f 263 1174 656 +f 1174 56 1121 +f 656 1121 237 +f 264 657 1175 +f 657 237 1120 +f 1175 1120 55 +f 55 1168 1175 +f 1168 260 661 +f 1175 661 264 +f 260 1166 659 +f 1166 65 1176 +f 659 1176 265 +f 264 660 1173 +f 660 265 1177 +f 1173 1177 66 +f 67 1178 1179 +f 1178 266 664 +f 1179 664 267 +f 266 1180 662 +f 1180 57 1127 +f 662 1127 240 +f 267 663 1181 +f 663 240 1126 +f 1181 1126 56 +f 56 1174 1181 +f 1174 263 667 +f 1181 667 267 +f 263 1172 665 +f 1172 66 1182 +f 665 1182 268 +f 267 666 1179 +f 666 268 1183 +f 1179 1183 67 +f 68 1184 1185 +f 1184 269 670 +f 1185 670 270 +f 269 1186 668 +f 1186 58 1133 +f 668 1133 243 +f 270 669 1187 +f 669 243 1132 +f 1187 1132 57 +f 57 1180 1187 +f 1180 266 673 +f 1187 673 270 +f 266 1178 671 +f 1178 67 1188 +f 671 1188 271 +f 270 672 1185 +f 672 271 1189 +f 1185 1189 68 +f 69 1190 1191 +f 1190 272 676 +f 1191 676 273 +f 272 1192 674 +f 1192 59 1139 +f 674 1139 246 +f 273 675 1193 +f 675 246 1138 +f 1193 1138 58 +f 58 1186 1193 +f 1186 269 679 +f 1193 679 273 +f 269 1184 677 +f 1184 68 1194 +f 677 1194 274 +f 273 678 1191 +f 678 274 1195 +f 1191 1195 69 +f 70 1196 1197 +f 1196 275 682 +f 1197 682 276 +f 275 1198 680 +f 1198 60 1145 +f 680 1145 249 +f 276 681 1199 +f 681 249 1144 +f 1199 1144 59 +f 59 1192 1199 +f 1192 272 685 +f 1199 685 276 +f 272 1190 683 +f 1190 69 1200 +f 683 1200 277 +f 276 684 1197 +f 684 277 1201 +f 1197 1201 70 +f 71 1202 1203 +f 1202 278 688 +f 1203 688 279 +f 278 1204 686 +f 1204 61 1153 +f 686 1153 253 +f 279 687 1205 +f 687 253 1152 +f 1205 1152 62 +f 62 1206 1205 +f 1206 280 691 +f 1205 691 279 +f 280 1207 689 +f 1207 72 1208 +f 689 1208 281 +f 279 690 1203 +f 690 281 1209 +f 1203 1209 71 +f 73 1210 1211 +f 1210 282 694 +f 1211 694 283 +f 282 1212 692 +f 1212 63 1159 +f 692 1159 256 +f 283 693 1213 +f 693 256 1158 +f 1213 1158 61 +f 61 1204 1213 +f 1204 278 697 +f 1213 697 283 +f 278 1202 695 +f 1202 71 1214 +f 695 1214 284 +f 283 696 1211 +f 696 284 1215 +f 1211 1215 73 +f 74 1216 1217 +f 1216 285 700 +f 1217 700 286 +f 285 1218 698 +f 1218 64 1165 +f 698 1165 259 +f 286 699 1219 +f 699 259 1164 +f 1219 1164 63 +f 63 1212 1219 +f 1212 282 703 +f 1219 703 286 +f 282 1210 701 +f 1210 73 1220 +f 701 1220 287 +f 286 702 1217 +f 702 287 1221 +f 1217 1221 74 +f 75 1222 1223 +f 1222 288 706 +f 1223 706 289 +f 288 1224 704 +f 1224 65 1171 +f 704 1171 262 +f 289 705 1225 +f 705 262 1170 +f 1225 1170 64 +f 64 1218 1225 +f 1218 285 709 +f 1225 709 289 +f 285 1216 707 +f 1216 74 1226 +f 707 1226 290 +f 289 708 1223 +f 708 290 1227 +f 1223 1227 75 +f 76 1228 1229 +f 1228 291 712 +f 1229 712 292 +f 291 1230 710 +f 1230 66 1177 +f 710 1177 265 +f 292 711 1231 +f 711 265 1176 +f 1231 1176 65 +f 65 1224 1231 +f 1224 288 715 +f 1231 715 292 +f 288 1222 713 +f 1222 75 1232 +f 713 1232 293 +f 292 714 1229 +f 714 293 1233 +f 1229 1233 76 +f 77 1234 1235 +f 1234 294 718 +f 1235 718 295 +f 294 1236 716 +f 1236 67 1183 +f 716 1183 268 +f 295 717 1237 +f 717 268 1182 +f 1237 1182 66 +f 66 1230 1237 +f 1230 291 721 +f 1237 721 295 +f 291 1228 719 +f 1228 76 1238 +f 719 1238 296 +f 295 720 1235 +f 720 296 1239 +f 1235 1239 77 +f 78 1240 1241 +f 1240 297 724 +f 1241 724 298 +f 297 1242 722 +f 1242 68 1189 +f 722 1189 271 +f 298 723 1243 +f 723 271 1188 +f 1243 1188 67 +f 67 1236 1243 +f 1236 294 727 +f 1243 727 298 +f 294 1234 725 +f 1234 77 1244 +f 725 1244 299 +f 298 726 1241 +f 726 299 1245 +f 1241 1245 78 +f 79 1246 1247 +f 1246 300 730 +f 1247 730 301 +f 300 1248 728 +f 1248 69 1195 +f 728 1195 274 +f 301 729 1249 +f 729 274 1194 +f 1249 1194 68 +f 68 1242 1249 +f 1242 297 733 +f 1249 733 301 +f 297 1240 731 +f 1240 78 1250 +f 731 1250 302 +f 301 732 1247 +f 732 302 1251 +f 1247 1251 79 +f 80 1252 1253 +f 1252 303 736 +f 1253 736 304 +f 303 1254 734 +f 1254 70 1201 +f 734 1201 277 +f 304 735 1255 +f 735 277 1200 +f 1255 1200 69 +f 69 1248 1255 +f 1248 300 739 +f 1255 739 304 +f 300 1246 737 +f 1246 79 1256 +f 737 1256 305 +f 304 738 1253 +f 738 305 1257 +f 1253 1257 80 +f 81 1258 1259 +f 1258 306 742 +f 1259 742 307 +f 306 1260 740 +f 1260 71 1209 +f 740 1209 281 +f 307 741 1261 +f 741 281 1208 +f 1261 1208 72 +f 72 1262 1261 +f 1262 308 745 +f 1261 745 307 +f 308 1263 743 +f 1263 82 1264 +f 743 1264 309 +f 307 744 1259 +f 744 309 1265 +f 1259 1265 81 +f 83 1266 1267 +f 1266 310 748 +f 1267 748 311 +f 310 1268 746 +f 1268 73 1215 +f 746 1215 284 +f 311 747 1269 +f 747 284 1214 +f 1269 1214 71 +f 71 1260 1269 +f 1260 306 751 +f 1269 751 311 +f 306 1258 749 +f 1258 81 1270 +f 749 1270 312 +f 311 750 1267 +f 750 312 1271 +f 1267 1271 83 +f 84 1272 1273 +f 1272 313 754 +f 1273 754 314 +f 313 1274 752 +f 1274 74 1221 +f 752 1221 287 +f 314 753 1275 +f 753 287 1220 +f 1275 1220 73 +f 73 1268 1275 +f 1268 310 757 +f 1275 757 314 +f 310 1266 755 +f 1266 83 1276 +f 755 1276 315 +f 314 756 1273 +f 756 315 1277 +f 1273 1277 84 +f 85 1278 1279 +f 1278 316 760 +f 1279 760 317 +f 316 1280 758 +f 1280 75 1227 +f 758 1227 290 +f 317 759 1281 +f 759 290 1226 +f 1281 1226 74 +f 74 1274 1281 +f 1274 313 763 +f 1281 763 317 +f 313 1272 761 +f 1272 84 1282 +f 761 1282 318 +f 317 762 1279 +f 762 318 1283 +f 1279 1283 85 +f 86 1284 1285 +f 1284 319 766 +f 1285 766 320 +f 319 1286 764 +f 1286 76 1233 +f 764 1233 293 +f 320 765 1287 +f 765 293 1232 +f 1287 1232 75 +f 75 1280 1287 +f 1280 316 769 +f 1287 769 320 +f 316 1278 767 +f 1278 85 1288 +f 767 1288 321 +f 320 768 1285 +f 768 321 1289 +f 1285 1289 86 +f 87 1290 1291 +f 1290 322 772 +f 1291 772 323 +f 322 1292 770 +f 1292 77 1239 +f 770 1239 296 +f 323 771 1293 +f 771 296 1238 +f 1293 1238 76 +f 76 1286 1293 +f 1286 319 775 +f 1293 775 323 +f 319 1284 773 +f 1284 86 1294 +f 773 1294 324 +f 323 774 1291 +f 774 324 1295 +f 1291 1295 87 +f 88 1296 1297 +f 1296 325 778 +f 1297 778 326 +f 325 1298 776 +f 1298 78 1245 +f 776 1245 299 +f 326 777 1299 +f 777 299 1244 +f 1299 1244 77 +f 77 1292 1299 +f 1292 322 781 +f 1299 781 326 +f 322 1290 779 +f 1290 87 1300 +f 779 1300 327 +f 326 780 1297 +f 780 327 1301 +f 1297 1301 88 +f 89 1302 1303 +f 1302 328 784 +f 1303 784 329 +f 328 1304 782 +f 1304 79 1251 +f 782 1251 302 +f 329 783 1305 +f 783 302 1250 +f 1305 1250 78 +f 78 1298 1305 +f 1298 325 787 +f 1305 787 329 +f 325 1296 785 +f 1296 88 1306 +f 785 1306 330 +f 329 786 1303 +f 786 330 1307 +f 1303 1307 89 +f 90 1308 1309 +f 1308 331 790 +f 1309 790 332 +f 331 1310 788 +f 1310 80 1257 +f 788 1257 305 +f 332 789 1311 +f 789 305 1256 +f 1311 1256 79 +f 79 1304 1311 +f 1304 328 793 +f 1311 793 332 +f 328 1302 791 +f 1302 89 1312 +f 791 1312 333 +f 332 792 1309 +f 792 333 1313 +f 1309 1313 90 +f 91 1314 1315 +f 1314 334 796 +f 1315 796 335 +f 334 1316 794 +f 1316 81 1265 +f 794 1265 309 +f 335 795 1317 +f 795 309 1264 +f 1317 1264 82 +f 82 1318 1317 +f 1318 336 799 +f 1317 799 335 +f 336 1319 797 +f 1319 92 1320 +f 797 1320 337 +f 335 798 1315 +f 798 337 1321 +f 1315 1321 91 +f 93 1322 1323 +f 1322 338 802 +f 1323 802 339 +f 338 1324 800 +f 1324 83 1271 +f 800 1271 312 +f 339 801 1325 +f 801 312 1270 +f 1325 1270 81 +f 81 1316 1325 +f 1316 334 805 +f 1325 805 339 +f 334 1314 803 +f 1314 91 1326 +f 803 1326 340 +f 339 804 1323 +f 804 340 1327 +f 1323 1327 93 +f 94 1328 1329 +f 1328 341 808 +f 1329 808 342 +f 341 1330 806 +f 1330 84 1277 +f 806 1277 315 +f 342 807 1331 +f 807 315 1276 +f 1331 1276 83 +f 83 1324 1331 +f 1324 338 811 +f 1331 811 342 +f 338 1322 809 +f 1322 93 1332 +f 809 1332 343 +f 342 810 1329 +f 810 343 1333 +f 1329 1333 94 +f 95 1334 1335 +f 1334 344 814 +f 1335 814 345 +f 344 1336 812 +f 1336 85 1283 +f 812 1283 318 +f 345 813 1337 +f 813 318 1282 +f 1337 1282 84 +f 84 1330 1337 +f 1330 341 817 +f 1337 817 345 +f 341 1328 815 +f 1328 94 1338 +f 815 1338 346 +f 345 816 1335 +f 816 346 1339 +f 1335 1339 95 +f 96 1340 1341 +f 1340 347 820 +f 1341 820 348 +f 347 1342 818 +f 1342 86 1289 +f 818 1289 321 +f 348 819 1343 +f 819 321 1288 +f 1343 1288 85 +f 85 1336 1343 +f 1336 344 823 +f 1343 823 348 +f 344 1334 821 +f 1334 95 1344 +f 821 1344 349 +f 348 822 1341 +f 822 349 1345 +f 1341 1345 96 +f 97 1346 1347 +f 1346 350 826 +f 1347 826 351 +f 350 1348 824 +f 1348 87 1295 +f 824 1295 324 +f 351 825 1349 +f 825 324 1294 +f 1349 1294 86 +f 86 1342 1349 +f 1342 347 829 +f 1349 829 351 +f 347 1340 827 +f 1340 96 1350 +f 827 1350 352 +f 351 828 1347 +f 828 352 1351 +f 1347 1351 97 +f 98 1352 1353 +f 1352 353 832 +f 1353 832 354 +f 353 1354 830 +f 1354 88 1301 +f 830 1301 327 +f 354 831 1355 +f 831 327 1300 +f 1355 1300 87 +f 87 1348 1355 +f 1348 350 835 +f 1355 835 354 +f 350 1346 833 +f 1346 97 1356 +f 833 1356 355 +f 354 834 1353 +f 834 355 1357 +f 1353 1357 98 +f 99 1358 1359 +f 1358 356 838 +f 1359 838 357 +f 356 1360 836 +f 1360 89 1307 +f 836 1307 330 +f 357 837 1361 +f 837 330 1306 +f 1361 1306 88 +f 88 1354 1361 +f 1354 353 841 +f 1361 841 357 +f 353 1352 839 +f 1352 98 1362 +f 839 1362 358 +f 357 840 1359 +f 840 358 1363 +f 1359 1363 99 +f 100 1364 1365 +f 1364 359 844 +f 1365 844 360 +f 359 1366 842 +f 1366 90 1313 +f 842 1313 333 +f 360 843 1367 +f 843 333 1312 +f 1367 1312 89 +f 89 1360 1367 +f 1360 356 847 +f 1367 847 360 +f 356 1358 845 +f 1358 99 1368 +f 845 1368 361 +f 360 846 1365 +f 846 361 1369 +f 1365 1369 100 +# 2592 faces, 0 coords texture + +# End of File diff --git a/data/sphere.obj b/data/sphere.obj new file mode 100644 index 0000000..66d8c5e --- /dev/null +++ b/data/sphere.obj @@ -0,0 +1,2564 @@ +v 0.199804 0.456491 0.041162 +v 0.199804 0.456491 -0.041162 +v 0.133202 0.481930 0.000000 +v -0.199804 0.456491 -0.041162 +v -0.199804 0.456491 0.041162 +v -0.133202 0.481930 0.000000 +v 0.199804 -0.456491 -0.041162 +v 0.199804 -0.456491 0.041162 +v 0.133202 -0.481930 -0.000000 +v -0.199804 -0.456491 0.041162 +v -0.199804 -0.456491 -0.041162 +v -0.133202 -0.481930 -0.000000 +v 0.456491 -0.041162 -0.199804 +v 0.456491 0.041162 -0.199804 +v 0.481930 0.000000 -0.133202 +v 0.456491 0.041162 0.199804 +v 0.456491 -0.041162 0.199804 +v 0.481930 -0.000000 0.133202 +v -0.456491 -0.041162 0.199804 +v -0.456491 0.041162 0.199804 +v -0.481930 -0.000000 0.133202 +v -0.456491 0.041162 -0.199804 +v -0.456491 -0.041162 -0.199804 +v -0.481930 0.000000 -0.133202 +v -0.041162 -0.199804 0.456491 +v 0.041162 -0.199804 0.456491 +v 0.000000 -0.133203 0.481930 +v 0.041162 0.199803 0.456491 +v -0.041162 0.199803 0.456491 +v 0.000000 0.133202 0.481930 +v -0.041162 0.199804 -0.456491 +v 0.041162 0.199804 -0.456491 +v 0.000000 0.133203 -0.481930 +v 0.041162 -0.199803 -0.456491 +v -0.041162 -0.199803 -0.456491 +v 0.000000 -0.133202 -0.481930 +v 0.323289 0.256687 0.282127 +v 0.282127 0.323289 0.256687 +v 0.256687 0.282127 0.323289 +v -0.323289 0.256687 0.282127 +v -0.256687 0.282127 0.323289 +v -0.282127 0.323289 0.256687 +v 0.323289 0.256687 -0.282127 +v 0.256687 0.282127 -0.323289 +v 0.282127 0.323289 -0.256687 +v -0.323289 0.256687 -0.282127 +v -0.282127 0.323289 -0.256687 +v -0.256687 0.282127 -0.323289 +v 0.323289 -0.256687 0.282127 +v 0.256687 -0.282127 0.323289 +v 0.282127 -0.323289 0.256687 +v -0.323289 -0.256687 0.282127 +v -0.282127 -0.323289 0.256687 +v -0.256687 -0.282127 0.323289 +v 0.323289 -0.256687 -0.282127 +v 0.282127 -0.323289 -0.256687 +v 0.256687 -0.282127 -0.323289 +v -0.323289 -0.256687 -0.282127 +v -0.256687 -0.282127 -0.323289 +v -0.282127 -0.323289 -0.256687 +v 0.066396 0.483196 -0.110058 +v 0.132041 0.458122 -0.150629 +v 0.065827 0.462153 -0.179114 +v 0.065827 0.462153 0.179115 +v 0.132041 0.458122 0.150630 +v 0.066396 0.483196 0.110059 +v 0.310120 0.390102 0.040571 +v 0.355641 0.351454 0.000000 +v 0.310120 0.390102 -0.040571 +v -0.066396 0.483196 0.110059 +v -0.132041 0.458122 0.150630 +v -0.065827 0.462153 0.179115 +v -0.065827 0.462153 -0.179114 +v -0.132041 0.458122 -0.150629 +v -0.066396 0.483196 -0.110058 +v -0.310120 0.390102 -0.040571 +v -0.355641 0.351454 0.000000 +v -0.310120 0.390102 0.040571 +v 0.066396 -0.483196 0.110058 +v 0.132041 -0.458122 0.150629 +v 0.065827 -0.462153 0.179114 +v 0.065827 -0.462153 -0.179115 +v 0.132041 -0.458122 -0.150630 +v 0.066396 -0.483196 -0.110059 +v 0.310120 -0.390102 -0.040571 +v 0.355641 -0.351454 -0.000000 +v 0.310120 -0.390102 0.040571 +v -0.066396 -0.483196 -0.110059 +v -0.132041 -0.458122 -0.150630 +v -0.065827 -0.462153 -0.179115 +v -0.065827 -0.462153 0.179114 +v -0.132041 -0.458122 0.150629 +v -0.066396 -0.483196 0.110058 +v -0.310120 -0.390102 0.040571 +v -0.355641 -0.351454 -0.000000 +v -0.310120 -0.390102 -0.040571 +v 0.483196 0.110059 -0.066396 +v 0.458122 0.150630 -0.132041 +v 0.462153 0.179115 -0.065827 +v 0.462153 -0.179115 -0.065828 +v 0.458122 -0.150630 -0.132041 +v 0.483196 -0.110059 -0.066396 +v 0.390102 -0.040571 -0.310120 +v 0.351454 0.000000 -0.355641 +v 0.390102 0.040571 -0.310120 +v 0.483196 -0.110059 0.066396 +v 0.458122 -0.150630 0.132041 +v 0.462153 -0.179115 0.065827 +v 0.462153 0.179115 0.065828 +v 0.458122 0.150630 0.132041 +v 0.483196 0.110059 0.066396 +v 0.390102 0.040571 0.310120 +v 0.351454 -0.000000 0.355641 +v 0.390102 -0.040571 0.310120 +v -0.483196 0.110059 0.066396 +v -0.458122 0.150630 0.132041 +v -0.462153 0.179115 0.065828 +v -0.462153 -0.179115 0.065827 +v -0.458122 -0.150630 0.132041 +v -0.483196 -0.110059 0.066396 +v -0.390102 -0.040571 0.310120 +v -0.351454 -0.000000 0.355641 +v -0.390102 0.040571 0.310120 +v -0.483196 -0.110059 -0.066396 +v -0.458122 -0.150630 -0.132041 +v -0.462153 -0.179115 -0.065828 +v -0.462153 0.179115 -0.065827 +v -0.458122 0.150630 -0.132041 +v -0.483196 0.110059 -0.066396 +v -0.390102 0.040571 -0.310120 +v -0.351454 0.000000 -0.355641 +v -0.390102 -0.040571 -0.310120 +v 0.110059 -0.066396 0.483196 +v 0.150630 -0.132042 0.458122 +v 0.179115 -0.065828 0.462153 +v -0.179115 -0.065828 0.462153 +v -0.150630 -0.132042 0.458122 +v -0.110059 -0.066396 0.483196 +v -0.040571 -0.310120 0.390102 +v 0.000000 -0.355641 0.351453 +v 0.040571 -0.310120 0.390102 +v -0.110059 0.066396 0.483196 +v -0.150630 0.132041 0.458122 +v -0.179115 0.065827 0.462153 +v 0.179115 0.065827 0.462153 +v 0.150630 0.132041 0.458122 +v 0.110059 0.066396 0.483196 +v 0.040571 0.310120 0.390102 +v 0.000000 0.355641 0.351454 +v -0.040571 0.310120 0.390102 +v 0.110059 0.066396 -0.483196 +v 0.150630 0.132042 -0.458122 +v 0.179115 0.065828 -0.462153 +v -0.179115 0.065828 -0.462153 +v -0.150630 0.132042 -0.458122 +v -0.110059 0.066396 -0.483196 +v -0.040571 0.310120 -0.390102 +v 0.000000 0.355641 -0.351453 +v 0.040571 0.310120 -0.390102 +v -0.110059 -0.066396 -0.483196 +v -0.150630 -0.132041 -0.458122 +v -0.179115 -0.065827 -0.462153 +v 0.179115 -0.065827 -0.462153 +v 0.150630 -0.132041 -0.458122 +v 0.110059 -0.066396 -0.483196 +v 0.040571 -0.310120 -0.390102 +v 0.000000 -0.355641 -0.351454 +v -0.040571 -0.310120 -0.390102 +v 0.148003 0.351155 0.323706 +v 0.173076 0.391726 0.258061 +v 0.106512 0.396324 0.285626 +v 0.285626 0.106511 0.396324 +v 0.323706 0.148002 0.351155 +v 0.258061 0.173076 0.391726 +v 0.391726 0.258061 0.173077 +v 0.396324 0.285626 0.106512 +v 0.351155 0.323706 0.148003 +v -0.173076 0.391726 0.258061 +v -0.148003 0.351155 0.323706 +v -0.106512 0.396324 0.285626 +v -0.396324 0.285626 0.106512 +v -0.391726 0.258061 0.173077 +v -0.351155 0.323706 0.148003 +v -0.323706 0.148002 0.351155 +v -0.285626 0.106511 0.396324 +v -0.258061 0.173076 0.391726 +v 0.173076 0.391726 -0.258061 +v 0.148003 0.351155 -0.323706 +v 0.106512 0.396324 -0.285626 +v 0.396324 0.285626 -0.106511 +v 0.391726 0.258061 -0.173076 +v 0.351155 0.323706 -0.148002 +v 0.323706 0.148003 -0.351155 +v 0.285626 0.106512 -0.396324 +v 0.258061 0.173077 -0.391726 +v -0.148003 0.351155 -0.323706 +v -0.173076 0.391726 -0.258061 +v -0.106512 0.396324 -0.285626 +v -0.285626 0.106512 -0.396324 +v -0.323706 0.148003 -0.351155 +v -0.258061 0.173077 -0.391726 +v -0.391726 0.258061 -0.173076 +v -0.396324 0.285626 -0.106511 +v -0.351155 0.323706 -0.148002 +v 0.173076 -0.391726 0.258061 +v 0.148003 -0.351155 0.323706 +v 0.106512 -0.396324 0.285626 +v 0.396324 -0.285626 0.106511 +v 0.391726 -0.258061 0.173076 +v 0.351155 -0.323706 0.148002 +v 0.323706 -0.148003 0.351155 +v 0.285626 -0.106512 0.396324 +v 0.258061 -0.173077 0.391726 +v -0.148003 -0.351155 0.323706 +v -0.173076 -0.391726 0.258061 +v -0.106512 -0.396324 0.285626 +v -0.285626 -0.106512 0.396324 +v -0.323706 -0.148003 0.351155 +v -0.258061 -0.173077 0.391726 +v -0.391726 -0.258061 0.173076 +v -0.396324 -0.285626 0.106511 +v -0.351155 -0.323706 0.148002 +v 0.148003 -0.351155 -0.323706 +v 0.173076 -0.391726 -0.258061 +v 0.106512 -0.396324 -0.285626 +v 0.285626 -0.106511 -0.396324 +v 0.323706 -0.148002 -0.351155 +v 0.258061 -0.173076 -0.391726 +v 0.391726 -0.258061 -0.173077 +v 0.396324 -0.285626 -0.106512 +v 0.351155 -0.323706 -0.148003 +v -0.173076 -0.391726 -0.258061 +v -0.148003 -0.351155 -0.323706 +v -0.106512 -0.396324 -0.285626 +v -0.396324 -0.285626 -0.106512 +v -0.391726 -0.258061 -0.173077 +v -0.351155 -0.323706 -0.148003 +v -0.323706 -0.148002 -0.351155 +v -0.285626 -0.106511 -0.396324 +v -0.258061 -0.173076 -0.391726 +v 0.066536 0.493844 0.041121 +v 0.066536 0.493844 -0.041121 +v 0.193093 0.445504 0.119339 +v 0.259629 0.420089 0.078217 +v 0.259629 0.420089 -0.078217 +v 0.193093 0.445504 -0.119338 +v -0.066536 0.493844 -0.041121 +v -0.066536 0.493844 0.041121 +v -0.193093 0.445504 -0.119338 +v -0.259629 0.420089 -0.078217 +v -0.259629 0.420089 0.078217 +v -0.193093 0.445504 0.119339 +v 0.066536 -0.493844 -0.041121 +v 0.066536 -0.493844 0.041121 +v 0.193093 -0.445504 -0.119339 +v 0.259629 -0.420089 -0.078217 +v 0.259629 -0.420089 0.078217 +v 0.193093 -0.445504 0.119338 +v -0.066536 -0.493844 0.041121 +v -0.066536 -0.493844 -0.041121 +v -0.193093 -0.445504 0.119338 +v -0.259629 -0.420089 0.078217 +v -0.259629 -0.420089 -0.078217 +v -0.193093 -0.445504 -0.119339 +v 0.493844 -0.041121 -0.066536 +v 0.493844 0.041121 -0.066536 +v 0.445504 -0.119338 -0.193093 +v 0.420089 -0.078217 -0.259629 +v 0.420089 0.078217 -0.259629 +v 0.445504 0.119339 -0.193093 +v 0.493844 0.041121 0.066536 +v 0.493844 -0.041121 0.066536 +v 0.445504 0.119338 0.193093 +v 0.420089 0.078217 0.259629 +v 0.420089 -0.078217 0.259629 +v 0.445504 -0.119339 0.193093 +v -0.493844 -0.041121 0.066536 +v -0.493844 0.041121 0.066536 +v -0.445504 -0.119339 0.193093 +v -0.420089 -0.078217 0.259629 +v -0.420089 0.078217 0.259629 +v -0.445504 0.119338 0.193093 +v -0.493844 0.041121 -0.066536 +v -0.493844 -0.041121 -0.066536 +v -0.445504 0.119339 -0.193093 +v -0.420089 0.078217 -0.259629 +v -0.420089 -0.078217 -0.259629 +v -0.445504 -0.119338 -0.193093 +v -0.041121 -0.066536 0.493844 +v 0.041121 -0.066536 0.493844 +v -0.119338 -0.193094 0.445504 +v -0.078217 -0.259629 0.420089 +v 0.078217 -0.259629 0.420089 +v 0.119338 -0.193094 0.445504 +v 0.041121 0.066535 0.493844 +v -0.041121 0.066535 0.493844 +v 0.119338 0.193093 0.445504 +v 0.078217 0.259629 0.420089 +v -0.078217 0.259629 0.420089 +v -0.119338 0.193093 0.445504 +v -0.041121 0.066536 -0.493844 +v 0.041121 0.066536 -0.493844 +v -0.119338 0.193094 -0.445504 +v -0.078217 0.259629 -0.420089 +v 0.078217 0.259629 -0.420089 +v 0.119338 0.193094 -0.445504 +v 0.041121 -0.066535 -0.493844 +v -0.041121 -0.066535 -0.493844 +v 0.119338 -0.193093 -0.445504 +v 0.078217 -0.259629 -0.420089 +v -0.078217 -0.259629 -0.420089 +v -0.119338 -0.193093 -0.445504 +v 0.226995 0.234215 0.378967 +v 0.185874 0.300750 0.353554 +v 0.353554 0.185874 0.300750 +v 0.378967 0.226995 0.234215 +v 0.300750 0.353554 0.185874 +v 0.234215 0.378967 0.226996 +v -0.300750 0.353554 0.185874 +v -0.234215 0.378967 0.226996 +v -0.378967 0.226995 0.234215 +v -0.353554 0.185874 0.300750 +v -0.226995 0.234215 0.378967 +v -0.185874 0.300750 0.353554 +v 0.300750 0.353554 -0.185874 +v 0.234215 0.378967 -0.226995 +v 0.378967 0.226996 -0.234215 +v 0.353554 0.185874 -0.300750 +v 0.226995 0.234215 -0.378967 +v 0.185874 0.300751 -0.353554 +v -0.226995 0.234215 -0.378967 +v -0.185874 0.300751 -0.353554 +v -0.353554 0.185874 -0.300750 +v -0.378967 0.226996 -0.234215 +v -0.300750 0.353554 -0.185874 +v -0.234215 0.378967 -0.226995 +v 0.300750 -0.353554 0.185874 +v 0.234215 -0.378967 0.226995 +v 0.378967 -0.226996 0.234215 +v 0.353554 -0.185874 0.300750 +v 0.226995 -0.234215 0.378967 +v 0.185874 -0.300751 0.353554 +v -0.226995 -0.234215 0.378967 +v -0.185874 -0.300751 0.353554 +v -0.353554 -0.185874 0.300750 +v -0.378967 -0.226996 0.234215 +v -0.300750 -0.353554 0.185874 +v -0.234215 -0.378967 0.226995 +v 0.226995 -0.234215 -0.378967 +v 0.185874 -0.300750 -0.353554 +v 0.353554 -0.185874 -0.300750 +v 0.378967 -0.226995 -0.234215 +v 0.300750 -0.353554 -0.185874 +v 0.234215 -0.378967 -0.226996 +v -0.300750 -0.353554 -0.185874 +v -0.234215 -0.378967 -0.226996 +v -0.378967 -0.226995 -0.234215 +v -0.353554 -0.185874 -0.300750 +v -0.226995 -0.234215 -0.378967 +v -0.185874 -0.300750 -0.353554 +v 0.000000 0.457521 -0.201677 +v 0.065600 0.432465 -0.242221 +v 0.000000 0.495219 -0.068976 +v 0.191807 0.421955 -0.187519 +v 0.000000 0.495219 0.068976 +v 0.000000 0.457521 0.201678 +v 0.065600 0.432465 0.242221 +v 0.191807 0.421955 0.187520 +v 0.303412 0.379326 -0.118543 +v 0.303412 0.379326 0.118543 +v 0.391921 0.307821 0.040543 +v 0.391921 0.307821 -0.040543 +v -0.065600 0.432465 0.242221 +v -0.191807 0.421955 0.187520 +v -0.065600 0.432465 -0.242221 +v -0.191807 0.421955 -0.187519 +v -0.303412 0.379326 0.118543 +v -0.303412 0.379326 -0.118543 +v -0.391921 0.307821 -0.040543 +v -0.391921 0.307821 0.040543 +v 0.000000 -0.457521 0.201677 +v 0.065600 -0.432465 0.242221 +v 0.000000 -0.495219 0.068976 +v 0.191807 -0.421955 0.187519 +v 0.000000 -0.495219 -0.068976 +v 0.000000 -0.457521 -0.201678 +v 0.065600 -0.432465 -0.242221 +v 0.191807 -0.421955 -0.187520 +v 0.303412 -0.379326 0.118543 +v 0.303412 -0.379326 -0.118543 +v 0.391921 -0.307821 -0.040543 +v 0.391921 -0.307821 0.040543 +v -0.065600 -0.432465 -0.242221 +v -0.191807 -0.421955 -0.187520 +v -0.065600 -0.432465 0.242221 +v -0.191807 -0.421955 0.187519 +v -0.303412 -0.379326 -0.118543 +v -0.303412 -0.379326 0.118543 +v -0.391921 -0.307821 0.040543 +v -0.391921 -0.307821 -0.040543 +v 0.457521 0.201678 0.000000 +v 0.432465 0.242221 -0.065600 +v 0.495219 0.068976 0.000000 +v 0.421955 0.187520 -0.191807 +v 0.495219 -0.068976 -0.000000 +v 0.457521 -0.201678 -0.000000 +v 0.432465 -0.242221 -0.065600 +v 0.421955 -0.187519 -0.191807 +v 0.379326 0.118543 -0.303412 +v 0.379326 -0.118543 -0.303412 +v 0.307821 -0.040543 -0.391921 +v 0.307821 0.040543 -0.391921 +v 0.432465 -0.242221 0.065600 +v 0.421955 -0.187520 0.191807 +v 0.432465 0.242221 0.065600 +v 0.421955 0.187519 0.191807 +v 0.379326 -0.118543 0.303412 +v 0.379326 0.118543 0.303412 +v 0.307821 0.040543 0.391921 +v 0.307821 -0.040543 0.391921 +v -0.457521 0.201678 0.000000 +v -0.432465 0.242221 0.065600 +v -0.495219 0.068976 0.000000 +v -0.421955 0.187519 0.191807 +v -0.495219 -0.068976 -0.000000 +v -0.457521 -0.201678 -0.000000 +v -0.432465 -0.242221 0.065600 +v -0.421955 -0.187520 0.191807 +v -0.379326 0.118543 0.303412 +v -0.379326 -0.118543 0.303412 +v -0.307821 -0.040543 0.391921 +v -0.307821 0.040543 0.391921 +v -0.432465 -0.242221 -0.065600 +v -0.421955 -0.187519 -0.191807 +v -0.432465 0.242221 -0.065600 +v -0.421955 0.187520 -0.191807 +v -0.379326 -0.118543 -0.303412 +v -0.379326 0.118543 -0.303412 +v -0.307821 0.040543 -0.391921 +v -0.307821 -0.040543 -0.391921 +v 0.201678 -0.000000 0.457521 +v 0.242221 -0.065600 0.432465 +v 0.068976 -0.000000 0.495219 +v 0.187520 -0.191807 0.421955 +v -0.068976 -0.000000 0.495219 +v -0.201678 -0.000000 0.457521 +v -0.242221 -0.065600 0.432465 +v -0.187520 -0.191807 0.421955 +v 0.118543 -0.303413 0.379326 +v -0.118543 -0.303413 0.379326 +v -0.040543 -0.391921 0.307821 +v 0.040543 -0.391921 0.307821 +v -0.242221 0.065600 0.432465 +v -0.187520 0.191807 0.421955 +v 0.242221 0.065600 0.432465 +v 0.187520 0.191807 0.421955 +v -0.118543 0.303412 0.379326 +v 0.118543 0.303412 0.379326 +v 0.040543 0.391921 0.307821 +v -0.040543 0.391921 0.307821 +v 0.201678 0.000000 -0.457521 +v 0.242221 0.065600 -0.432465 +v 0.068976 0.000000 -0.495219 +v 0.187520 0.191807 -0.421955 +v -0.068976 0.000000 -0.495219 +v -0.201678 0.000000 -0.457521 +v -0.242221 0.065600 -0.432465 +v -0.187520 0.191807 -0.421955 +v 0.118543 0.303413 -0.379326 +v -0.118543 0.303413 -0.379326 +v -0.040543 0.391921 -0.307821 +v 0.040543 0.391921 -0.307821 +v -0.242221 -0.065600 -0.432465 +v -0.187520 -0.191807 -0.421955 +v 0.242221 -0.065600 -0.432465 +v 0.187520 -0.191807 -0.421955 +v -0.118543 -0.303412 -0.379326 +v 0.118543 -0.303412 -0.379326 +v 0.040543 -0.391921 -0.307821 +v -0.040543 -0.391921 -0.307821 +v 0.131433 0.475529 0.081230 +v 0.262866 0.425326 0.000000 +v 0.131433 0.475529 -0.081230 +v -0.131433 0.475529 -0.081230 +v -0.262866 0.425326 0.000000 +v -0.131433 0.475529 0.081230 +v 0.131433 -0.475529 -0.081230 +v 0.262866 -0.425326 -0.000000 +v 0.131433 -0.475529 0.081230 +v -0.131433 -0.475529 0.081230 +v -0.262866 -0.425326 -0.000000 +v -0.131433 -0.475529 -0.081230 +v 0.475529 -0.081230 -0.131433 +v 0.425326 0.000000 -0.262866 +v 0.475529 0.081230 -0.131433 +v 0.475529 0.081230 0.131433 +v 0.425326 -0.000000 0.262866 +v 0.475529 -0.081230 0.131433 +v -0.475529 -0.081230 0.131433 +v -0.425326 -0.000000 0.262866 +v -0.475529 0.081230 0.131433 +v -0.475529 0.081230 -0.131433 +v -0.425326 0.000000 -0.262866 +v -0.475529 -0.081230 -0.131433 +v -0.081230 -0.131433 0.475529 +v 0.000000 -0.262866 0.425326 +v 0.081230 -0.131433 0.475529 +v 0.081230 0.131433 0.475529 +v 0.000000 0.262865 0.425326 +v -0.081230 0.131433 0.475529 +v -0.081230 0.131433 -0.475529 +v 0.000000 0.262866 -0.425326 +v 0.081230 0.131433 -0.475529 +v 0.081230 -0.131433 -0.475529 +v 0.000000 -0.262865 -0.425326 +v -0.081230 -0.131433 -0.475529 +v 0.293893 0.212662 0.344095 +v 0.344095 0.293893 0.212663 +v 0.212663 0.344095 0.293893 +v -0.344095 0.293893 0.212663 +v -0.293893 0.212662 0.344095 +v -0.212663 0.344095 0.293893 +v 0.344095 0.293893 -0.212662 +v 0.293893 0.212663 -0.344095 +v 0.212663 0.344095 -0.293892 +v -0.293893 0.212663 -0.344095 +v -0.344095 0.293893 -0.212662 +v -0.212663 0.344095 -0.293892 +v 0.344095 -0.293893 0.212662 +v 0.293893 -0.212663 0.344095 +v 0.212663 -0.344095 0.293892 +v -0.293893 -0.212663 0.344095 +v -0.344095 -0.293893 0.212662 +v -0.212663 -0.344095 0.293892 +v 0.293893 -0.212662 -0.344095 +v 0.344095 -0.293893 -0.212663 +v 0.212663 -0.344095 -0.293893 +v -0.344095 -0.293893 -0.212663 +v -0.293893 -0.212662 -0.344095 +v -0.212663 -0.344095 -0.293893 +v 0.000000 0.480969 -0.136633 +v 0.129946 0.431334 -0.216944 +v 0.000000 0.480969 0.136634 +v 0.129946 0.431334 0.216945 +v 0.351023 0.346890 0.080311 +v 0.351023 0.346890 -0.080311 +v -0.129946 0.431334 0.216945 +v -0.129946 0.431334 -0.216944 +v -0.351023 0.346890 -0.080311 +v -0.351023 0.346890 0.080311 +v 0.000000 -0.480969 0.136633 +v 0.129946 -0.431334 0.216944 +v 0.000000 -0.480969 -0.136634 +v 0.129946 -0.431334 -0.216945 +v 0.351023 -0.346890 -0.080311 +v 0.351023 -0.346890 0.080311 +v -0.129946 -0.431334 -0.216945 +v -0.129946 -0.431334 0.216944 +v -0.351023 -0.346890 0.080311 +v -0.351023 -0.346890 -0.080311 +v 0.480969 0.136634 0.000000 +v 0.431334 0.216945 -0.129946 +v 0.480969 -0.136634 -0.000000 +v 0.431334 -0.216945 -0.129946 +v 0.346890 -0.080311 -0.351023 +v 0.346890 0.080311 -0.351023 +v 0.431334 -0.216945 0.129946 +v 0.431334 0.216945 0.129946 +v 0.346890 0.080311 0.351023 +v 0.346890 -0.080311 0.351023 +v -0.480969 0.136634 0.000000 +v -0.431334 0.216945 0.129946 +v -0.480969 -0.136634 -0.000000 +v -0.431334 -0.216945 0.129946 +v -0.346890 -0.080311 0.351023 +v -0.346890 0.080311 0.351023 +v -0.431334 -0.216945 -0.129946 +v -0.431334 0.216945 -0.129946 +v -0.346890 0.080311 -0.351023 +v -0.346890 -0.080311 -0.351023 +v 0.136634 -0.000000 0.480969 +v 0.216945 -0.129946 0.431334 +v -0.136634 -0.000000 0.480969 +v -0.216945 -0.129946 0.431334 +v -0.080311 -0.351023 0.346890 +v 0.080311 -0.351023 0.346890 +v -0.216945 0.129946 0.431334 +v 0.216945 0.129946 0.431334 +v 0.080311 0.351023 0.346890 +v -0.080311 0.351023 0.346890 +v 0.136634 0.000000 -0.480969 +v 0.216945 0.129946 -0.431334 +v -0.136634 0.000000 -0.480969 +v -0.216945 0.129946 -0.431334 +v -0.080311 0.351023 -0.346890 +v 0.080311 0.351023 -0.346890 +v -0.216945 -0.129946 -0.431334 +v 0.216945 -0.129946 -0.431334 +v 0.080311 -0.351023 -0.346890 +v -0.080311 -0.351023 -0.346890 +v 0.000000 0.500000 0.000000 +v 0.250000 0.404509 0.154509 +v 0.250000 0.404509 -0.154508 +v -0.250000 0.404509 -0.154508 +v -0.250000 0.404509 0.154509 +v 0.000000 -0.500000 -0.000000 +v 0.250000 -0.404509 -0.154509 +v 0.250000 -0.404509 0.154508 +v -0.250000 -0.404509 0.154508 +v -0.250000 -0.404509 -0.154509 +v 0.500000 0.000000 0.000000 +v 0.404509 -0.154508 -0.250000 +v 0.404509 0.154509 -0.250000 +v 0.404509 0.154508 0.250000 +v 0.404509 -0.154509 0.250000 +v -0.500000 0.000000 0.000000 +v -0.404509 -0.154509 0.250000 +v -0.404509 0.154508 0.250000 +v -0.404509 0.154509 -0.250000 +v -0.404509 -0.154508 -0.250000 +v 0.000000 -0.000000 0.500000 +v -0.154509 -0.250000 0.404509 +v 0.154509 -0.250000 0.404509 +v 0.154509 0.250000 0.404509 +v -0.154509 0.250000 0.404509 +v 0.000000 0.000000 -0.500000 +v -0.154509 0.250000 -0.404509 +v 0.154509 0.250000 -0.404509 +v 0.154509 -0.250000 -0.404509 +v -0.154509 -0.250000 -0.404509 +v 0.000000 0.425326 -0.262865 +v 0.000000 0.425326 0.262866 +v 0.425326 0.262866 0.000000 +v -0.425326 0.262866 0.000000 +v 0.000000 -0.425326 0.262865 +v 0.000000 -0.425326 -0.262866 +v 0.425326 -0.262866 -0.000000 +v -0.425326 -0.262866 -0.000000 +v 0.262866 0.000000 -0.425326 +v 0.262866 -0.000000 0.425326 +v -0.262866 -0.000000 0.425326 +v -0.262866 0.000000 -0.425326 +vn 0.3980 0.9139 0.0792 +vn 0.3981 0.9139 -0.0792 +vn 0.2698 0.9629 -0.0000 +vn -0.3980 0.9139 -0.0792 +vn -0.3981 0.9139 0.0792 +vn -0.2698 0.9629 0.0000 +vn 0.3980 -0.9139 -0.0792 +vn 0.3981 -0.9139 0.0792 +vn 0.2698 -0.9629 0.0000 +vn -0.3980 -0.9139 0.0792 +vn -0.3981 -0.9139 -0.0792 +vn -0.2698 -0.9629 -0.0000 +vn 0.9139 -0.0792 -0.3980 +vn 0.9139 0.0792 -0.3980 +vn 0.9629 0.0000 -0.2698 +vn 0.9139 0.0792 0.3980 +vn 0.9139 -0.0792 0.3980 +vn 0.9629 -0.0000 0.2698 +vn -0.9139 -0.0792 0.3980 +vn -0.9139 0.0792 0.3980 +vn -0.9629 0.0000 0.2698 +vn -0.9139 0.0792 -0.3980 +vn -0.9139 -0.0792 -0.3980 +vn -0.9629 -0.0000 -0.2698 +vn -0.0792 -0.3981 0.9139 +vn 0.0792 -0.3981 0.9139 +vn 0.0000 -0.2698 0.9629 +vn 0.0792 0.3981 0.9139 +vn -0.0792 0.3981 0.9139 +vn -0.0000 0.2698 0.9629 +vn -0.0792 0.3981 -0.9139 +vn 0.0792 0.3981 -0.9139 +vn 0.0000 0.2698 -0.9629 +vn 0.0792 -0.3981 -0.9139 +vn -0.0792 -0.3981 -0.9139 +vn -0.0000 -0.2698 -0.9629 +vn 0.6441 0.5159 0.5648 +vn 0.5648 0.6441 0.5159 +vn 0.5159 0.5648 0.6441 +vn -0.6441 0.5159 0.5648 +vn -0.5159 0.5648 0.6441 +vn -0.5648 0.6441 0.5159 +vn 0.6441 0.5159 -0.5648 +vn 0.5159 0.5648 -0.6441 +vn 0.5648 0.6441 -0.5159 +vn -0.6441 0.5159 -0.5648 +vn -0.5648 0.6441 -0.5159 +vn -0.5159 0.5648 -0.6441 +vn 0.6441 -0.5159 0.5648 +vn 0.5159 -0.5648 0.6441 +vn 0.5648 -0.6441 0.5159 +vn -0.6441 -0.5159 0.5648 +vn -0.5648 -0.6441 0.5159 +vn -0.5159 -0.5648 0.6441 +vn 0.6441 -0.5159 -0.5648 +vn 0.5648 -0.6441 -0.5159 +vn 0.5159 -0.5648 -0.6441 +vn -0.6441 -0.5159 -0.5648 +vn -0.5159 -0.5648 -0.6441 +vn -0.5648 -0.6441 -0.5159 +vn 0.1339 0.9657 -0.2224 +vn 0.2615 0.9170 -0.3013 +vn 0.1334 0.9250 -0.3558 +vn 0.1334 0.9250 0.3558 +vn 0.2615 0.9170 0.3013 +vn 0.1339 0.9657 0.2224 +vn 0.6214 0.7795 0.0789 +vn 0.7092 0.7050 -0.0000 +vn 0.6214 0.7795 -0.0789 +vn -0.1339 0.9657 0.2224 +vn -0.2615 0.9170 0.3013 +vn -0.1334 0.9250 0.3558 +vn -0.1334 0.9250 -0.3558 +vn -0.2615 0.9170 -0.3013 +vn -0.1339 0.9657 -0.2224 +vn -0.6214 0.7795 -0.0789 +vn -0.7092 0.7050 0.0000 +vn -0.6214 0.7795 0.0789 +vn 0.1339 -0.9657 0.2224 +vn 0.2615 -0.9170 0.3013 +vn 0.1334 -0.9250 0.3558 +vn 0.1334 -0.9250 -0.3558 +vn 0.2615 -0.9170 -0.3013 +vn 0.1339 -0.9657 -0.2224 +vn 0.6214 -0.7795 -0.0789 +vn 0.7092 -0.7050 0.0000 +vn 0.6214 -0.7795 0.0789 +vn -0.1339 -0.9657 -0.2224 +vn -0.2615 -0.9170 -0.3013 +vn -0.1334 -0.9250 -0.3558 +vn -0.1334 -0.9250 0.3558 +vn -0.2615 -0.9170 0.3013 +vn -0.1339 -0.9657 0.2224 +vn -0.6214 -0.7795 0.0789 +vn -0.7092 -0.7050 -0.0000 +vn -0.6214 -0.7795 -0.0789 +vn 0.9657 0.2224 -0.1339 +vn 0.9169 0.3013 -0.2617 +vn 0.9250 0.3558 -0.1334 +vn 0.9250 -0.3558 -0.1334 +vn 0.9169 -0.3013 -0.2617 +vn 0.9657 -0.2224 -0.1339 +vn 0.7795 -0.0789 -0.6214 +vn 0.7050 0.0000 -0.7092 +vn 0.7795 0.0790 -0.6214 +vn 0.9657 -0.2224 0.1339 +vn 0.9169 -0.3013 0.2617 +vn 0.9250 -0.3558 0.1334 +vn 0.9250 0.3558 0.1334 +vn 0.9169 0.3013 0.2617 +vn 0.9657 0.2224 0.1339 +vn 0.7795 0.0789 0.6214 +vn 0.7050 -0.0000 0.7092 +vn 0.7795 -0.0790 0.6214 +vn -0.9657 0.2224 0.1339 +vn -0.9169 0.3013 0.2617 +vn -0.9250 0.3558 0.1334 +vn -0.9250 -0.3558 0.1334 +vn -0.9169 -0.3013 0.2617 +vn -0.9657 -0.2224 0.1339 +vn -0.7795 -0.0789 0.6214 +vn -0.7050 0.0000 0.7092 +vn -0.7795 0.0790 0.6214 +vn -0.9657 -0.2224 -0.1339 +vn -0.9169 -0.3013 -0.2617 +vn -0.9250 -0.3558 -0.1334 +vn -0.9250 0.3558 -0.1334 +vn -0.9169 0.3013 -0.2617 +vn -0.9657 0.2224 -0.1339 +vn -0.7795 0.0789 -0.6214 +vn -0.7050 -0.0000 -0.7092 +vn -0.7795 -0.0790 -0.6214 +vn 0.2224 -0.1339 0.9657 +vn 0.3013 -0.2615 0.9170 +vn 0.3558 -0.1334 0.9250 +vn -0.3558 -0.1334 0.9250 +vn -0.3013 -0.2615 0.9170 +vn -0.2224 -0.1339 0.9657 +vn -0.0789 -0.6214 0.7795 +vn 0.0000 -0.7092 0.7050 +vn 0.0789 -0.6214 0.7795 +vn -0.2224 0.1339 0.9657 +vn -0.3013 0.2615 0.9170 +vn -0.3558 0.1334 0.9250 +vn 0.3558 0.1334 0.9250 +vn 0.3013 0.2615 0.9170 +vn 0.2224 0.1339 0.9657 +vn 0.0789 0.6214 0.7795 +vn -0.0000 0.7092 0.7050 +vn -0.0789 0.6214 0.7795 +vn 0.2224 0.1339 -0.9657 +vn 0.3013 0.2615 -0.9170 +vn 0.3558 0.1334 -0.9250 +vn -0.3558 0.1334 -0.9250 +vn -0.3013 0.2615 -0.9170 +vn -0.2224 0.1339 -0.9657 +vn -0.0789 0.6214 -0.7795 +vn 0.0000 0.7092 -0.7050 +vn 0.0789 0.6214 -0.7795 +vn -0.2224 -0.1339 -0.9657 +vn -0.3013 -0.2615 -0.9170 +vn -0.3558 -0.1334 -0.9250 +vn 0.3558 -0.1334 -0.9250 +vn 0.3013 -0.2615 -0.9170 +vn 0.2224 -0.1339 -0.9657 +vn 0.0789 -0.6214 -0.7795 +vn -0.0000 -0.7092 -0.7050 +vn -0.0789 -0.6214 -0.7795 +vn 0.2955 0.7042 0.6456 +vn 0.3443 0.7831 0.5180 +vn 0.2156 0.7917 0.5716 +vn 0.5716 0.2157 0.7916 +vn 0.6456 0.2955 0.7042 +vn 0.5179 0.3443 0.7831 +vn 0.7831 0.5180 0.3443 +vn 0.7916 0.5717 0.2157 +vn 0.7041 0.6456 0.2955 +vn -0.3443 0.7831 0.5179 +vn -0.2955 0.7042 0.6456 +vn -0.2156 0.7917 0.5716 +vn -0.7917 0.5716 0.2156 +vn -0.7831 0.5179 0.3443 +vn -0.7041 0.6456 0.2955 +vn -0.6456 0.2955 0.7042 +vn -0.5717 0.2157 0.7916 +vn -0.5179 0.3443 0.7831 +vn 0.3443 0.7831 -0.5179 +vn 0.2955 0.7042 -0.6456 +vn 0.2156 0.7917 -0.5716 +vn 0.7917 0.5716 -0.2156 +vn 0.7831 0.5179 -0.3443 +vn 0.7041 0.6456 -0.2955 +vn 0.6456 0.2955 -0.7042 +vn 0.5717 0.2157 -0.7916 +vn 0.5179 0.3443 -0.7831 +vn -0.2955 0.7042 -0.6456 +vn -0.3443 0.7831 -0.5180 +vn -0.2156 0.7917 -0.5716 +vn -0.5716 0.2157 -0.7916 +vn -0.6456 0.2955 -0.7042 +vn -0.5179 0.3443 -0.7831 +vn -0.7831 0.5180 -0.3443 +vn -0.7916 0.5717 -0.2157 +vn -0.7041 0.6456 -0.2955 +vn 0.3443 -0.7831 0.5179 +vn 0.2955 -0.7042 0.6456 +vn 0.2156 -0.7917 0.5716 +vn 0.7917 -0.5716 0.2156 +vn 0.7831 -0.5179 0.3443 +vn 0.7041 -0.6456 0.2955 +vn 0.6456 -0.2955 0.7042 +vn 0.5717 -0.2157 0.7916 +vn 0.5179 -0.3443 0.7831 +vn -0.2955 -0.7042 0.6456 +vn -0.3443 -0.7831 0.5180 +vn -0.2156 -0.7917 0.5716 +vn -0.5716 -0.2157 0.7916 +vn -0.6456 -0.2955 0.7042 +vn -0.5179 -0.3443 0.7831 +vn -0.7831 -0.5180 0.3443 +vn -0.7916 -0.5717 0.2157 +vn -0.7041 -0.6456 0.2955 +vn 0.2955 -0.7042 -0.6456 +vn 0.3443 -0.7831 -0.5180 +vn 0.2156 -0.7917 -0.5716 +vn 0.5716 -0.2157 -0.7916 +vn 0.6456 -0.2955 -0.7042 +vn 0.5179 -0.3443 -0.7831 +vn 0.7831 -0.5180 -0.3443 +vn 0.7916 -0.5717 -0.2157 +vn 0.7041 -0.6456 -0.2955 +vn -0.3443 -0.7831 -0.5179 +vn -0.2955 -0.7042 -0.6456 +vn -0.2156 -0.7917 -0.5716 +vn -0.7917 -0.5716 -0.2156 +vn -0.7831 -0.5179 -0.3443 +vn -0.7041 -0.6456 -0.2955 +vn -0.6456 -0.2955 -0.7042 +vn -0.5717 -0.2157 -0.7916 +vn -0.5179 -0.3443 -0.7831 +vn 0.1376 0.9879 0.0715 +vn 0.1376 0.9879 -0.0715 +vn 0.3935 0.8901 0.2297 +vn 0.5093 0.8459 0.1582 +vn 0.5093 0.8459 -0.1582 +vn 0.3935 0.8901 -0.2297 +vn -0.1376 0.9879 -0.0715 +vn -0.1376 0.9879 0.0715 +vn -0.3935 0.8901 -0.2297 +vn -0.5093 0.8459 -0.1582 +vn -0.5093 0.8459 0.1582 +vn -0.3935 0.8901 0.2297 +vn 0.1376 -0.9879 -0.0715 +vn 0.1376 -0.9879 0.0715 +vn 0.3935 -0.8901 -0.2297 +vn 0.5093 -0.8459 -0.1582 +vn 0.5093 -0.8459 0.1582 +vn 0.3935 -0.8901 0.2297 +vn -0.1376 -0.9879 0.0715 +vn -0.1376 -0.9879 -0.0715 +vn -0.3935 -0.8901 0.2297 +vn -0.5093 -0.8459 0.1582 +vn -0.5093 -0.8459 -0.1582 +vn -0.3935 -0.8901 -0.2297 +vn 0.9879 -0.0715 -0.1376 +vn 0.9879 0.0715 -0.1376 +vn 0.8901 -0.2297 -0.3935 +vn 0.8459 -0.1582 -0.5093 +vn 0.8459 0.1582 -0.5093 +vn 0.8901 0.2297 -0.3935 +vn 0.9879 0.0715 0.1376 +vn 0.9879 -0.0715 0.1376 +vn 0.8901 0.2297 0.3935 +vn 0.8459 0.1582 0.5093 +vn 0.8459 -0.1582 0.5093 +vn 0.8901 -0.2297 0.3935 +vn -0.9879 -0.0715 0.1376 +vn -0.9879 0.0715 0.1376 +vn -0.8901 -0.2297 0.3935 +vn -0.8459 -0.1582 0.5093 +vn -0.8459 0.1582 0.5093 +vn -0.8901 0.2297 0.3935 +vn -0.9879 0.0715 -0.1376 +vn -0.9879 -0.0715 -0.1376 +vn -0.8901 0.2297 -0.3935 +vn -0.8459 0.1582 -0.5093 +vn -0.8459 -0.1582 -0.5093 +vn -0.8901 -0.2297 -0.3935 +vn -0.0715 -0.1376 0.9879 +vn 0.0715 -0.1376 0.9879 +vn -0.2297 -0.3935 0.8901 +vn -0.1582 -0.5093 0.8459 +vn 0.1582 -0.5093 0.8459 +vn 0.2297 -0.3935 0.8901 +vn 0.0715 0.1376 0.9879 +vn -0.0715 0.1376 0.9879 +vn 0.2297 0.3935 0.8901 +vn 0.1582 0.5093 0.8459 +vn -0.1582 0.5093 0.8459 +vn -0.2297 0.3935 0.8901 +vn -0.0715 0.1376 -0.9879 +vn 0.0715 0.1376 -0.9879 +vn -0.2297 0.3935 -0.8901 +vn -0.1582 0.5093 -0.8459 +vn 0.1582 0.5093 -0.8459 +vn 0.2297 0.3935 -0.8901 +vn 0.0715 -0.1376 -0.9879 +vn -0.0715 -0.1376 -0.9879 +vn 0.2297 -0.3935 -0.8901 +vn 0.1582 -0.5093 -0.8459 +vn -0.1582 -0.5093 -0.8459 +vn -0.2297 -0.3935 -0.8901 +vn 0.4524 0.4786 0.7525 +vn 0.3808 0.5944 0.7083 +vn 0.7083 0.3808 0.5944 +vn 0.7525 0.4524 0.4786 +vn 0.5943 0.7083 0.3809 +vn 0.4786 0.7525 0.4524 +vn -0.5944 0.7083 0.3808 +vn -0.4786 0.7525 0.4524 +vn -0.7525 0.4524 0.4786 +vn -0.7083 0.3808 0.5944 +vn -0.4524 0.4786 0.7525 +vn -0.3808 0.5944 0.7083 +vn 0.5944 0.7083 -0.3808 +vn 0.4786 0.7525 -0.4524 +vn 0.7525 0.4524 -0.4786 +vn 0.7083 0.3808 -0.5944 +vn 0.4524 0.4786 -0.7525 +vn 0.3808 0.5944 -0.7083 +vn -0.4524 0.4786 -0.7525 +vn -0.3808 0.5944 -0.7083 +vn -0.7083 0.3808 -0.5944 +vn -0.7525 0.4524 -0.4786 +vn -0.5943 0.7083 -0.3809 +vn -0.4786 0.7525 -0.4524 +vn 0.5944 -0.7083 0.3808 +vn 0.4786 -0.7525 0.4524 +vn 0.7525 -0.4524 0.4786 +vn 0.7083 -0.3808 0.5944 +vn 0.4524 -0.4786 0.7525 +vn 0.3808 -0.5944 0.7083 +vn -0.4524 -0.4786 0.7525 +vn -0.3808 -0.5944 0.7083 +vn -0.7083 -0.3808 0.5944 +vn -0.7525 -0.4524 0.4786 +vn -0.5943 -0.7083 0.3809 +vn -0.4786 -0.7525 0.4524 +vn 0.4524 -0.4786 -0.7525 +vn 0.3808 -0.5944 -0.7083 +vn 0.7083 -0.3808 -0.5944 +vn 0.7525 -0.4524 -0.4786 +vn 0.5943 -0.7083 -0.3809 +vn 0.4786 -0.7525 -0.4524 +vn -0.5944 -0.7083 -0.3808 +vn -0.4786 -0.7525 -0.4524 +vn -0.7525 -0.4524 -0.4786 +vn -0.7083 -0.3808 -0.5944 +vn -0.4524 -0.4786 -0.7525 +vn -0.3808 -0.5944 -0.7083 +vn -0.0000 0.9117 -0.4109 +vn 0.1235 0.8645 -0.4872 +vn -0.0000 0.9897 -0.1429 +vn 0.3793 0.8449 -0.3773 +vn -0.0000 0.9897 0.1429 +vn 0.0000 0.9117 0.4109 +vn 0.1234 0.8645 0.4872 +vn 0.3793 0.8449 0.3773 +vn 0.6105 0.7566 -0.2344 +vn 0.6105 0.7566 0.2344 +vn 0.7883 0.6106 0.0763 +vn 0.7883 0.6106 -0.0763 +vn -0.1235 0.8645 0.4872 +vn -0.3793 0.8449 0.3773 +vn -0.1234 0.8645 -0.4872 +vn -0.3793 0.8449 -0.3773 +vn -0.6105 0.7566 0.2344 +vn -0.6105 0.7566 -0.2344 +vn -0.7883 0.6106 -0.0763 +vn -0.7883 0.6106 0.0763 +vn -0.0000 -0.9117 0.4109 +vn 0.1235 -0.8645 0.4872 +vn -0.0000 -0.9897 0.1429 +vn 0.3793 -0.8449 0.3773 +vn -0.0000 -0.9897 -0.1429 +vn 0.0000 -0.9117 -0.4109 +vn 0.1234 -0.8645 -0.4872 +vn 0.3793 -0.8449 -0.3773 +vn 0.6105 -0.7566 0.2344 +vn 0.6105 -0.7566 -0.2344 +vn 0.7883 -0.6106 -0.0763 +vn 0.7883 -0.6106 0.0763 +vn -0.1235 -0.8645 -0.4872 +vn -0.3793 -0.8449 -0.3773 +vn -0.1234 -0.8645 0.4872 +vn -0.3793 -0.8449 0.3773 +vn -0.6105 -0.7566 -0.2344 +vn -0.6105 -0.7566 0.2344 +vn -0.7883 -0.6106 0.0763 +vn -0.7883 -0.6106 -0.0763 +vn 0.9117 0.4109 0.0000 +vn 0.8645 0.4872 -0.1235 +vn 0.9897 0.1429 0.0000 +vn 0.8449 0.3773 -0.3793 +vn 0.9897 -0.1429 0.0000 +vn 0.9117 -0.4109 -0.0000 +vn 0.8645 -0.4872 -0.1234 +vn 0.8449 -0.3773 -0.3793 +vn 0.7566 0.2344 -0.6104 +vn 0.7566 -0.2344 -0.6105 +vn 0.6106 -0.0763 -0.7883 +vn 0.6106 0.0763 -0.7883 +vn 0.8645 -0.4872 0.1235 +vn 0.8449 -0.3773 0.3793 +vn 0.8645 0.4872 0.1234 +vn 0.8449 0.3773 0.3793 +vn 0.7566 -0.2344 0.6104 +vn 0.7566 0.2344 0.6105 +vn 0.6106 0.0763 0.7883 +vn 0.6106 -0.0763 0.7883 +vn -0.9117 0.4109 -0.0000 +vn -0.8645 0.4872 0.1235 +vn -0.9897 0.1429 -0.0000 +vn -0.8449 0.3773 0.3793 +vn -0.9897 -0.1429 -0.0000 +vn -0.9117 -0.4109 0.0000 +vn -0.8645 -0.4872 0.1234 +vn -0.8449 -0.3773 0.3793 +vn -0.7566 0.2344 0.6104 +vn -0.7566 -0.2344 0.6105 +vn -0.6106 -0.0763 0.7883 +vn -0.6106 0.0763 0.7883 +vn -0.8645 -0.4872 -0.1235 +vn -0.8449 -0.3773 -0.3793 +vn -0.8645 0.4872 -0.1234 +vn -0.8449 0.3773 -0.3793 +vn -0.7566 -0.2344 -0.6104 +vn -0.7566 0.2344 -0.6105 +vn -0.6106 0.0763 -0.7883 +vn -0.6106 -0.0763 -0.7883 +vn 0.4109 0.0000 0.9117 +vn 0.4872 -0.1234 0.8645 +vn 0.1429 0.0000 0.9897 +vn 0.3773 -0.3793 0.8449 +vn -0.1429 0.0000 0.9897 +vn -0.4109 -0.0000 0.9117 +vn -0.4872 -0.1235 0.8645 +vn -0.3773 -0.3793 0.8449 +vn 0.2344 -0.6105 0.7566 +vn -0.2344 -0.6105 0.7566 +vn -0.0763 -0.7883 0.6106 +vn 0.0763 -0.7883 0.6106 +vn -0.4872 0.1234 0.8645 +vn -0.3773 0.3793 0.8449 +vn 0.4872 0.1235 0.8645 +vn 0.3773 0.3793 0.8449 +vn -0.2344 0.6105 0.7566 +vn 0.2344 0.6105 0.7566 +vn 0.0763 0.7883 0.6106 +vn -0.0763 0.7883 0.6106 +vn 0.4109 -0.0000 -0.9117 +vn 0.4872 0.1234 -0.8645 +vn 0.1429 -0.0000 -0.9897 +vn 0.3773 0.3793 -0.8449 +vn -0.1429 -0.0000 -0.9897 +vn -0.4109 0.0000 -0.9117 +vn -0.4872 0.1235 -0.8645 +vn -0.3773 0.3793 -0.8449 +vn 0.2344 0.6105 -0.7566 +vn -0.2344 0.6105 -0.7566 +vn -0.0763 0.7883 -0.6106 +vn 0.0763 0.7883 -0.6106 +vn -0.4872 -0.1234 -0.8645 +vn -0.3773 -0.3793 -0.8449 +vn 0.4872 -0.1235 -0.8645 +vn 0.3773 -0.3793 -0.8449 +vn -0.2344 -0.6105 -0.7566 +vn 0.2344 -0.6105 -0.7566 +vn 0.0763 -0.7883 -0.6106 +vn -0.0763 -0.7883 -0.6106 +vn 0.2691 0.9510 0.1524 +vn 0.5157 0.8568 -0.0000 +vn 0.2691 0.9510 -0.1524 +vn -0.2691 0.9510 -0.1524 +vn -0.5157 0.8568 0.0000 +vn -0.2691 0.9510 0.1524 +vn 0.2691 -0.9510 -0.1524 +vn 0.5157 -0.8568 0.0000 +vn 0.2691 -0.9510 0.1524 +vn -0.2691 -0.9510 0.1524 +vn -0.5157 -0.8568 -0.0000 +vn -0.2691 -0.9510 -0.1524 +vn 0.9510 -0.1524 -0.2691 +vn 0.8568 0.0000 -0.5157 +vn 0.9510 0.1524 -0.2691 +vn 0.9510 0.1524 0.2691 +vn 0.8568 -0.0000 0.5157 +vn 0.9510 -0.1524 0.2691 +vn -0.9510 -0.1524 0.2691 +vn -0.8568 0.0000 0.5157 +vn -0.9510 0.1524 0.2691 +vn -0.9510 0.1524 -0.2691 +vn -0.8568 -0.0000 -0.5157 +vn -0.9510 -0.1524 -0.2691 +vn -0.1524 -0.2691 0.9510 +vn 0.0000 -0.5157 0.8568 +vn 0.1524 -0.2691 0.9510 +vn 0.1524 0.2691 0.9510 +vn -0.0000 0.5157 0.8568 +vn -0.1524 0.2691 0.9510 +vn -0.1524 0.2691 -0.9510 +vn 0.0000 0.5157 -0.8568 +vn 0.1524 0.2691 -0.9510 +vn 0.1524 -0.2691 -0.9510 +vn -0.0000 -0.5157 -0.8568 +vn -0.1524 -0.2691 -0.9510 +vn 0.5877 0.4353 0.6819 +vn 0.6819 0.5877 0.4353 +vn 0.4353 0.6819 0.5877 +vn -0.6819 0.5877 0.4353 +vn -0.5877 0.4353 0.6819 +vn -0.4353 0.6819 0.5877 +vn 0.6819 0.5877 -0.4353 +vn 0.5877 0.4353 -0.6819 +vn 0.4353 0.6819 -0.5877 +vn -0.5877 0.4353 -0.6819 +vn -0.6819 0.5877 -0.4353 +vn -0.4353 0.6819 -0.5877 +vn 0.6819 -0.5877 0.4353 +vn 0.5877 -0.4353 0.6819 +vn 0.4353 -0.6819 0.5877 +vn -0.5877 -0.4353 0.6819 +vn -0.6819 -0.5877 0.4353 +vn -0.4353 -0.6819 0.5877 +vn 0.5877 -0.4353 -0.6819 +vn 0.6819 -0.5877 -0.4353 +vn 0.4353 -0.6819 -0.5877 +vn -0.6819 -0.5877 -0.4353 +vn -0.5877 -0.4353 -0.6819 +vn -0.4353 -0.6819 -0.5877 +vn -0.0000 0.9601 -0.2796 +vn 0.2539 0.8631 -0.4365 +vn 0.0000 0.9601 0.2796 +vn 0.2539 0.8631 0.4365 +vn 0.7062 0.6904 0.1569 +vn 0.7062 0.6904 -0.1569 +vn -0.2539 0.8631 0.4365 +vn -0.2539 0.8631 -0.4365 +vn -0.7062 0.6904 -0.1569 +vn -0.7062 0.6904 0.1569 +vn -0.0000 -0.9601 0.2796 +vn 0.2539 -0.8631 0.4365 +vn 0.0000 -0.9601 -0.2796 +vn 0.2539 -0.8631 -0.4365 +vn 0.7062 -0.6904 -0.1569 +vn 0.7062 -0.6904 0.1569 +vn -0.2539 -0.8631 -0.4365 +vn -0.2539 -0.8631 0.4365 +vn -0.7062 -0.6904 0.1569 +vn -0.7062 -0.6904 -0.1569 +vn 0.9601 0.2796 0.0000 +vn 0.8631 0.4365 -0.2539 +vn 0.9601 -0.2796 -0.0000 +vn 0.8631 -0.4365 -0.2539 +vn 0.6904 -0.1569 -0.7062 +vn 0.6904 0.1569 -0.7062 +vn 0.8631 -0.4365 0.2539 +vn 0.8631 0.4365 0.2539 +vn 0.6904 0.1569 0.7062 +vn 0.6904 -0.1569 0.7062 +vn -0.9601 0.2796 -0.0000 +vn -0.8631 0.4365 0.2539 +vn -0.9601 -0.2796 0.0000 +vn -0.8631 -0.4365 0.2539 +vn -0.6904 -0.1569 0.7062 +vn -0.6904 0.1569 0.7062 +vn -0.8631 -0.4365 -0.2539 +vn -0.8631 0.4365 -0.2539 +vn -0.6904 0.1569 -0.7062 +vn -0.6904 -0.1569 -0.7062 +vn 0.2796 0.0000 0.9601 +vn 0.4365 -0.2539 0.8631 +vn -0.2796 -0.0000 0.9601 +vn -0.4365 -0.2539 0.8631 +vn -0.1569 -0.7062 0.6904 +vn 0.1569 -0.7062 0.6904 +vn -0.4365 0.2539 0.8631 +vn 0.4365 0.2539 0.8631 +vn 0.1569 0.7062 0.6904 +vn -0.1569 0.7062 0.6904 +vn 0.2796 -0.0000 -0.9601 +vn 0.4365 0.2539 -0.8631 +vn -0.2796 0.0000 -0.9601 +vn -0.4365 0.2539 -0.8631 +vn -0.1569 0.7062 -0.6904 +vn 0.1569 0.7062 -0.6904 +vn -0.4365 -0.2539 -0.8631 +vn 0.4365 -0.2539 -0.8631 +vn 0.1569 -0.7062 -0.6904 +vn -0.1569 -0.7062 -0.6904 +vn 0.0000 1.0000 0.0000 +vn 0.5000 0.8090 0.3090 +vn 0.5000 0.8090 -0.3090 +vn -0.5000 0.8090 -0.3090 +vn -0.5000 0.8090 0.3090 +vn 0.0000 -1.0000 0.0000 +vn 0.5000 -0.8090 -0.3090 +vn 0.5000 -0.8090 0.3090 +vn -0.5000 -0.8090 0.3090 +vn -0.5000 -0.8090 -0.3090 +vn 1.0000 0.0000 0.0000 +vn 0.8090 -0.3090 -0.5000 +vn 0.8090 0.3090 -0.5000 +vn 0.8090 0.3090 0.5000 +vn 0.8090 -0.3090 0.5000 +vn -1.0000 0.0000 0.0000 +vn -0.8090 -0.3090 0.5000 +vn -0.8090 0.3090 0.5000 +vn -0.8090 0.3090 -0.5000 +vn -0.8090 -0.3090 -0.5000 +vn 0.0000 0.0000 1.0000 +vn -0.3090 -0.5000 0.8090 +vn 0.3090 -0.5000 0.8090 +vn 0.3090 0.5000 0.8090 +vn -0.3090 0.5000 0.8090 +vn 0.0000 0.0000 -1.0000 +vn -0.3090 0.5000 -0.8090 +vn 0.3090 0.5000 -0.8090 +vn 0.3090 -0.5000 -0.8090 +vn -0.3090 -0.5000 -0.8090 +vn 0.0000 0.8507 -0.5257 +vn 0.0000 0.8507 0.5257 +vn 0.8507 0.5257 -0.0000 +vn -0.8507 0.5257 0.0000 +vn 0.0000 -0.8507 0.5257 +vn 0.0000 -0.8507 -0.5257 +vn 0.8507 -0.5257 0.0000 +vn -0.8507 -0.5257 -0.0000 +vn 0.5257 0.0000 -0.8507 +vn 0.5257 -0.0000 0.8507 +vn -0.5257 0.0000 0.8507 +vn -0.5257 -0.0000 -0.8507 +f 1//1 2//2 3//3 +f 4//4 5//5 6//6 +f 7//7 8//8 9//9 +f 10//10 11//11 12//12 +f 13//13 14//14 15//15 +f 16//16 17//17 18//18 +f 19//19 20//20 21//21 +f 22//22 23//23 24//24 +f 25//25 26//26 27//27 +f 28//28 29//29 30//30 +f 31//31 32//32 33//33 +f 34//34 35//35 36//36 +f 37//37 38//38 39//39 +f 40//40 41//41 42//42 +f 43//43 44//44 45//45 +f 46//46 47//47 48//48 +f 49//49 50//50 51//51 +f 52//52 53//53 54//54 +f 55//55 56//56 57//57 +f 58//58 59//59 60//60 +f 61//61 62//62 63//63 +f 64//64 65//65 66//66 +f 67//67 68//68 69//69 +f 70//70 71//71 72//72 +f 73//73 74//74 75//75 +f 76//76 77//77 78//78 +f 79//79 80//80 81//81 +f 82//82 83//83 84//84 +f 85//85 86//86 87//87 +f 88//88 89//89 90//90 +f 91//91 92//92 93//93 +f 94//94 95//95 96//96 +f 97//97 98//98 99//99 +f 100//100 101//101 102//102 +f 103//103 104//104 105//105 +f 106//106 107//107 108//108 +f 109//109 110//110 111//111 +f 112//112 113//113 114//114 +f 115//115 116//116 117//117 +f 118//118 119//119 120//120 +f 121//121 122//122 123//123 +f 124//124 125//125 126//126 +f 127//127 128//128 129//129 +f 130//130 131//131 132//132 +f 133//133 134//134 135//135 +f 136//136 137//137 138//138 +f 139//139 140//140 141//141 +f 142//142 143//143 144//144 +f 145//145 146//146 147//147 +f 148//148 149//149 150//150 +f 151//151 152//152 153//153 +f 154//154 155//155 156//156 +f 157//157 158//158 159//159 +f 160//160 161//161 162//162 +f 163//163 164//164 165//165 +f 166//166 167//167 168//168 +f 169//169 170//170 171//171 +f 172//172 173//173 174//174 +f 175//175 176//176 177//177 +f 178//178 179//179 180//180 +f 181//181 182//182 183//183 +f 184//184 185//185 186//186 +f 187//187 188//188 189//189 +f 190//190 191//191 192//192 +f 193//193 194//194 195//195 +f 196//196 197//197 198//198 +f 199//199 200//200 201//201 +f 202//202 203//203 204//204 +f 205//205 206//206 207//207 +f 208//208 209//209 210//210 +f 211//211 212//212 213//213 +f 214//214 215//215 216//216 +f 217//217 218//218 219//219 +f 220//220 221//221 222//222 +f 223//223 224//224 225//225 +f 226//226 227//227 228//228 +f 229//229 230//230 231//231 +f 232//232 233//233 234//234 +f 235//235 236//236 237//237 +f 238//238 239//239 240//240 +f 241//241 3//3 242//242 +f 243//243 244//244 1//1 +f 2//2 245//245 246//246 +f 247//247 6//6 248//248 +f 249//249 250//250 4//4 +f 5//5 251//251 252//252 +f 253//253 9//9 254//254 +f 255//255 256//256 7//7 +f 8//8 257//257 258//258 +f 259//259 12//12 260//260 +f 261//261 262//262 10//10 +f 11//11 263//263 264//264 +f 265//265 15//15 266//266 +f 267//267 268//268 13//13 +f 14//14 269//269 270//270 +f 271//271 18//18 272//272 +f 273//273 274//274 16//16 +f 17//17 275//275 276//276 +f 277//277 21//21 278//278 +f 279//279 280//280 19//19 +f 20//20 281//281 282//282 +f 283//283 24//24 284//284 +f 285//285 286//286 22//22 +f 23//23 287//287 288//288 +f 289//289 27//27 290//290 +f 291//291 292//292 25//25 +f 26//26 293//293 294//294 +f 295//295 30//30 296//296 +f 297//297 298//298 28//28 +f 29//29 299//299 300//300 +f 301//301 33//33 302//302 +f 303//303 304//304 31//31 +f 32//32 305//305 306//306 +f 307//307 36//36 308//308 +f 309//309 310//310 34//34 +f 35//35 311//311 312//312 +f 313//313 39//39 314//314 +f 315//315 316//316 37//37 +f 38//38 317//317 318//318 +f 319//319 42//42 320//320 +f 321//321 322//322 40//40 +f 41//41 323//323 324//324 +f 325//325 45//45 326//326 +f 327//327 328//328 43//43 +f 44//44 329//329 330//330 +f 331//331 48//48 332//332 +f 333//333 334//334 46//46 +f 47//47 335//335 336//336 +f 337//337 51//51 338//338 +f 339//339 340//340 49//49 +f 50//50 341//341 342//342 +f 343//343 54//54 344//344 +f 345//345 346//346 52//52 +f 53//53 347//347 348//348 +f 349//349 57//57 350//350 +f 351//351 352//352 55//55 +f 56//56 353//353 354//354 +f 355//355 60//60 356//356 +f 357//357 358//358 58//58 +f 59//59 359//359 360//360 +f 361//361 63//63 362//362 +f 363//363 242//242 61//61 +f 62//62 246//246 364//364 +f 365//365 66//66 241//241 +f 366//366 367//367 64//64 +f 65//65 368//368 243//243 +f 245//245 69//69 369//369 +f 244//244 370//370 67//67 +f 68//68 371//371 372//372 +f 366//366 72//72 373//373 +f 365//365 248//248 70//70 +f 71//71 252//252 374//374 +f 363//363 75//75 247//247 +f 361//361 375//375 73//73 +f 74//74 376//376 249//249 +f 251//251 78//78 377//377 +f 250//250 378//378 76//76 +f 77//77 379//379 380//380 +f 381//381 81//81 382//382 +f 383//383 254//254 79//79 +f 80//80 258//258 384//384 +f 385//385 84//84 253//253 +f 386//386 387//387 82//82 +f 83//83 388//388 255//255 +f 257//257 87//87 389//389 +f 256//256 390//390 85//85 +f 86//86 391//391 392//392 +f 386//386 90//90 393//393 +f 385//385 260//260 88//88 +f 89//89 264//264 394//394 +f 383//383 93//93 259//259 +f 381//381 395//395 91//91 +f 92//92 396//396 261//261 +f 263//263 96//96 397//397 +f 262//262 398//398 94//94 +f 95//95 399//399 400//400 +f 401//401 99//99 402//402 +f 403//403 266//266 97//97 +f 98//98 270//270 404//404 +f 405//405 102//102 265//265 +f 406//406 407//407 100//100 +f 101//101 408//408 267//267 +f 269//269 105//105 409//409 +f 268//268 410//410 103//103 +f 104//104 411//411 412//412 +f 406//406 108//108 413//413 +f 405//405 272//272 106//106 +f 107//107 276//276 414//414 +f 403//403 111//111 271//271 +f 401//401 415//415 109//109 +f 110//110 416//416 273//273 +f 275//275 114//114 417//417 +f 274//274 418//418 112//112 +f 113//113 419//419 420//420 +f 421//421 117//117 422//422 +f 423//423 278//278 115//115 +f 116//116 282//282 424//424 +f 425//425 120//120 277//277 +f 426//426 427//427 118//118 +f 119//119 428//428 279//279 +f 281//281 123//123 429//429 +f 280//280 430//430 121//121 +f 122//122 431//431 432//432 +f 426//426 126//126 433//433 +f 425//425 284//284 124//124 +f 125//125 288//288 434//434 +f 423//423 129//129 283//283 +f 421//421 435//435 127//127 +f 128//128 436//436 285//285 +f 287//287 132//132 437//437 +f 286//286 438//438 130//130 +f 131//131 439//439 440//440 +f 441//441 135//135 442//442 +f 443//443 290//290 133//133 +f 134//134 294//294 444//444 +f 445//445 138//138 289//289 +f 446//446 447//447 136//136 +f 137//137 448//448 291//291 +f 293//293 141//141 449//449 +f 292//292 450//450 139//139 +f 140//140 451//451 452//452 +f 446//446 144//144 453//453 +f 445//445 296//296 142//142 +f 143//143 300//300 454//454 +f 443//443 147//147 295//295 +f 441//441 455//455 145//145 +f 146//146 456//456 297//297 +f 299//299 150//150 457//457 +f 298//298 458//458 148//148 +f 149//149 459//459 460//460 +f 461//461 153//153 462//462 +f 463//463 302//302 151//151 +f 152//152 306//306 464//464 +f 465//465 156//156 301//301 +f 466//466 467//467 154//154 +f 155//155 468//468 303//303 +f 305//305 159//159 469//469 +f 304//304 470//470 157//157 +f 158//158 471//471 472//472 +f 466//466 162//162 473//473 +f 465//465 308//308 160//160 +f 161//161 312//312 474//474 +f 463//463 165//165 307//307 +f 461//461 475//475 163//163 +f 164//164 476//476 309//309 +f 311//311 168//168 477//477 +f 310//310 478//478 166//166 +f 167//167 479//479 480//480 +f 459//459 171//171 367//367 +f 458//458 314//314 169//169 +f 170//170 318//318 368//368 +f 456//456 174//174 313//313 +f 455//455 419//419 172//172 +f 173//173 418//418 315//315 +f 317//317 177//177 370//370 +f 316//316 416//416 175//175 +f 176//176 415//415 371//371 +f 373//373 180//180 460//460 +f 374//374 320//320 178//178 +f 179//179 324//324 457//457 +f 377//377 183//183 319//319 +f 380//380 422//422 181//181 +f 182//182 424//424 321//321 +f 323//323 186//186 454//454 +f 322//322 429//429 184//184 +f 185//185 432//432 453//453 +f 362//362 189//189 472//472 +f 364//364 326//326 187//187 +f 188//188 330//330 469//469 +f 369//369 192//192 325//325 +f 372//372 402//402 190//190 +f 191//191 404//404 327//327 +f 329//329 195//195 464//464 +f 328//328 409//409 193//193 +f 194//194 412//412 462//462 +f 471//471 198//198 375//375 +f 470//470 332//332 196//196 +f 197//197 336//336 376//376 +f 468//468 201//201 331//331 +f 467//467 439//439 199//199 +f 200//200 438//438 333//333 +f 335//335 204//204 378//378 +f 334//334 436//436 202//202 +f 203//203 435//435 379//379 +f 382//382 207//207 452//452 +f 384//384 338//338 205//205 +f 206//206 342//342 449//449 +f 389//389 210//210 337//337 +f 392//392 413//413 208//208 +f 209//209 414//414 339//339 +f 341//341 213//213 444//444 +f 340//340 417//417 211//211 +f 212//212 420//420 442//442 +f 451//451 216//216 395//395 +f 450//450 344//344 214//214 +f 215//215 348//348 396//396 +f 448//448 219//219 343//343 +f 447//447 431//431 217//217 +f 218//218 430//430 345//345 +f 347//347 222//222 398//398 +f 346//346 428//428 220//220 +f 221//221 427//427 399//399 +f 479//479 225//225 387//387 +f 478//478 350//350 223//223 +f 224//224 354//354 388//388 +f 476//476 228//228 349//349 +f 475//475 411//411 226//226 +f 227//227 410//410 351//351 +f 353//353 231//231 390//390 +f 352//352 408//408 229//229 +f 230//230 407//407 391//391 +f 393//393 234//234 480//480 +f 394//394 356//356 232//232 +f 233//233 360//360 477//477 +f 397//397 237//237 355//355 +f 400//400 433//433 235//235 +f 236//236 434//434 357//357 +f 359//359 240//240 474//474 +f 358//358 437//437 238//238 +f 239//239 440//440 473//473 +f 481//481 1//1 3//3 +f 1//1 482//482 2//2 +f 3//3 2//2 483//483 +f 484//484 4//4 6//6 +f 4//4 485//485 5//5 +f 6//6 5//5 486//486 +f 487//487 7//7 9//9 +f 7//7 488//488 8//8 +f 9//9 8//8 489//489 +f 490//490 10//10 12//12 +f 10//10 491//491 11//11 +f 12//12 11//11 492//492 +f 493//493 13//13 15//15 +f 13//13 494//494 14//14 +f 15//15 14//14 495//495 +f 496//496 16//16 18//18 +f 16//16 497//497 17//17 +f 18//18 17//17 498//498 +f 499//499 19//19 21//21 +f 19//19 500//500 20//20 +f 21//21 20//20 501//501 +f 502//502 22//22 24//24 +f 22//22 503//503 23//23 +f 24//24 23//23 504//504 +f 505//505 25//25 27//27 +f 25//25 506//506 26//26 +f 27//27 26//26 507//507 +f 508//508 28//28 30//30 +f 28//28 509//509 29//29 +f 30//30 29//29 510//510 +f 511//511 31//31 33//33 +f 31//31 512//512 32//32 +f 33//33 32//32 513//513 +f 514//514 34//34 36//36 +f 34//34 515//515 35//35 +f 36//36 35//35 516//516 +f 517//517 37//37 39//39 +f 37//37 518//518 38//38 +f 39//39 38//38 519//519 +f 520//520 40//40 42//42 +f 40//40 521//521 41//41 +f 42//42 41//41 522//522 +f 523//523 43//43 45//45 +f 43//43 524//524 44//44 +f 45//45 44//44 525//525 +f 526//526 46//46 48//48 +f 46//46 527//527 47//47 +f 48//48 47//47 528//528 +f 529//529 49//49 51//51 +f 49//49 530//530 50//50 +f 51//51 50//50 531//531 +f 532//532 52//52 54//54 +f 52//52 533//533 53//53 +f 54//54 53//53 534//534 +f 535//535 55//55 57//57 +f 55//55 536//536 56//56 +f 57//57 56//56 537//537 +f 538//538 58//58 60//60 +f 58//58 539//539 59//59 +f 60//60 59//59 540//540 +f 541//541 61//61 63//63 +f 61//61 483//483 62//62 +f 63//63 62//62 542//542 +f 543//543 64//64 66//66 +f 64//64 544//544 65//65 +f 66//66 65//65 481//481 +f 482//482 67//67 69//69 +f 67//67 545//545 68//68 +f 69//69 68//68 546//546 +f 543//543 70//70 72//72 +f 70//70 486//486 71//71 +f 72//72 71//71 547//547 +f 541//541 73//73 75//75 +f 73//73 548//548 74//74 +f 75//75 74//74 484//484 +f 485//485 76//76 78//78 +f 76//76 549//549 77//77 +f 78//78 77//77 550//550 +f 551//551 79//79 81//81 +f 79//79 489//489 80//80 +f 81//81 80//80 552//552 +f 553//553 82//82 84//84 +f 82//82 554//554 83//83 +f 84//84 83//83 487//487 +f 488//488 85//85 87//87 +f 85//85 555//555 86//86 +f 87//87 86//86 556//556 +f 553//553 88//88 90//90 +f 88//88 492//492 89//89 +f 90//90 89//89 557//557 +f 551//551 91//91 93//93 +f 91//91 558//558 92//92 +f 93//93 92//92 490//490 +f 491//491 94//94 96//96 +f 94//94 559//559 95//95 +f 96//96 95//95 560//560 +f 561//561 97//97 99//99 +f 97//97 495//495 98//98 +f 99//99 98//98 562//562 +f 563//563 100//100 102//102 +f 100//100 564//564 101//101 +f 102//102 101//101 493//493 +f 494//494 103//103 105//105 +f 103//103 565//565 104//104 +f 105//105 104//104 566//566 +f 563//563 106//106 108//108 +f 106//106 498//498 107//107 +f 108//108 107//107 567//567 +f 561//561 109//109 111//111 +f 109//109 568//568 110//110 +f 111//111 110//110 496//496 +f 497//497 112//112 114//114 +f 112//112 569//569 113//113 +f 114//114 113//113 570//570 +f 571//571 115//115 117//117 +f 115//115 501//501 116//116 +f 117//117 116//116 572//572 +f 573//573 118//118 120//120 +f 118//118 574//574 119//119 +f 120//120 119//119 499//499 +f 500//500 121//121 123//123 +f 121//121 575//575 122//122 +f 123//123 122//122 576//576 +f 573//573 124//124 126//126 +f 124//124 504//504 125//125 +f 126//126 125//125 577//577 +f 571//571 127//127 129//129 +f 127//127 578//578 128//128 +f 129//129 128//128 502//502 +f 503//503 130//130 132//132 +f 130//130 579//579 131//131 +f 132//132 131//131 580//580 +f 581//581 133//133 135//135 +f 133//133 507//507 134//134 +f 135//135 134//134 582//582 +f 583//583 136//136 138//138 +f 136//136 584//584 137//137 +f 138//138 137//137 505//505 +f 506//506 139//139 141//141 +f 139//139 585//585 140//140 +f 141//141 140//140 586//586 +f 583//583 142//142 144//144 +f 142//142 510//510 143//143 +f 144//144 143//143 587//587 +f 581//581 145//145 147//147 +f 145//145 588//588 146//146 +f 147//147 146//146 508//508 +f 509//509 148//148 150//150 +f 148//148 589//589 149//149 +f 150//150 149//149 590//590 +f 591//591 151//151 153//153 +f 151//151 513//513 152//152 +f 153//153 152//152 592//592 +f 593//593 154//154 156//156 +f 154//154 594//594 155//155 +f 156//156 155//155 511//511 +f 512//512 157//157 159//159 +f 157//157 595//595 158//158 +f 159//159 158//158 596//596 +f 593//593 160//160 162//162 +f 160//160 516//516 161//161 +f 162//162 161//161 597//597 +f 591//591 163//163 165//165 +f 163//163 598//598 164//164 +f 165//165 164//164 514//514 +f 515//515 166//166 168//168 +f 166//166 599//599 167//167 +f 168//168 167//167 600//600 +f 589//589 169//169 171//171 +f 169//169 519//519 170//170 +f 171//171 170//170 544//544 +f 588//588 172//172 174//174 +f 172//172 569//569 173//173 +f 174//174 173//173 517//517 +f 518//518 175//175 177//177 +f 175//175 568//568 176//176 +f 177//177 176//176 545//545 +f 547//547 178//178 180//180 +f 178//178 522//522 179//179 +f 180//180 179//179 590//590 +f 550//550 181//181 183//183 +f 181//181 572//572 182//182 +f 183//183 182//182 520//520 +f 521//521 184//184 186//186 +f 184//184 576//576 185//185 +f 186//186 185//185 587//587 +f 542//542 187//187 189//189 +f 187//187 525//525 188//188 +f 189//189 188//188 596//596 +f 546//546 190//190 192//192 +f 190//190 562//562 191//191 +f 192//192 191//191 523//523 +f 524//524 193//193 195//195 +f 193//193 566//566 194//194 +f 195//195 194//194 592//592 +f 595//595 196//196 198//198 +f 196//196 528//528 197//197 +f 198//198 197//197 548//548 +f 594//594 199//199 201//201 +f 199//199 579//579 200//200 +f 201//201 200//200 526//526 +f 527//527 202//202 204//204 +f 202//202 578//578 203//203 +f 204//204 203//203 549//549 +f 552//552 205//205 207//207 +f 205//205 531//531 206//206 +f 207//207 206//206 586//586 +f 556//556 208//208 210//210 +f 208//208 567//567 209//209 +f 210//210 209//209 529//529 +f 530//530 211//211 213//213 +f 211//211 570//570 212//212 +f 213//213 212//212 582//582 +f 585//585 214//214 216//216 +f 214//214 534//534 215//215 +f 216//216 215//215 558//558 +f 584//584 217//217 219//219 +f 217//217 575//575 218//218 +f 219//219 218//218 532//532 +f 533//533 220//220 222//222 +f 220//220 574//574 221//221 +f 222//222 221//221 559//559 +f 599//599 223//223 225//225 +f 223//223 537//537 224//224 +f 225//225 224//224 554//554 +f 598//598 226//226 228//228 +f 226//226 565//565 227//227 +f 228//228 227//227 535//535 +f 536//536 229//229 231//231 +f 229//229 564//564 230//230 +f 231//231 230//230 555//555 +f 557//557 232//232 234//234 +f 232//232 540//540 233//233 +f 234//234 233//233 600//600 +f 560//560 235//235 237//237 +f 235//235 577//577 236//236 +f 237//237 236//236 538//538 +f 539//539 238//238 240//240 +f 238//238 580//580 239//239 +f 240//240 239//239 597//597 +f 601//601 241//241 242//242 +f 241//241 481//481 3//3 +f 242//242 3//3 483//483 +f 481//481 243//243 1//1 +f 243//243 602//602 244//244 +f 1//1 244//244 482//482 +f 483//483 2//2 246//246 +f 2//2 482//482 245//245 +f 246//246 245//245 603//603 +f 601//601 247//247 248//248 +f 247//247 484//484 6//6 +f 248//248 6//6 486//486 +f 484//484 249//249 4//4 +f 249//249 604//604 250//250 +f 4//4 250//250 485//485 +f 486//486 5//5 252//252 +f 5//5 485//485 251//251 +f 252//252 251//251 605//605 +f 606//606 253//253 254//254 +f 253//253 487//487 9//9 +f 254//254 9//9 489//489 +f 487//487 255//255 7//7 +f 255//255 607//607 256//256 +f 7//7 256//256 488//488 +f 489//489 8//8 258//258 +f 8//8 488//488 257//257 +f 258//258 257//257 608//608 +f 606//606 259//259 260//260 +f 259//259 490//490 12//12 +f 260//260 12//12 492//492 +f 490//490 261//261 10//10 +f 261//261 609//609 262//262 +f 10//10 262//262 491//491 +f 492//492 11//11 264//264 +f 11//11 491//491 263//263 +f 264//264 263//263 610//610 +f 611//611 265//265 266//266 +f 265//265 493//493 15//15 +f 266//266 15//15 495//495 +f 493//493 267//267 13//13 +f 267//267 612//612 268//268 +f 13//13 268//268 494//494 +f 495//495 14//14 270//270 +f 14//14 494//494 269//269 +f 270//270 269//269 613//613 +f 611//611 271//271 272//272 +f 271//271 496//496 18//18 +f 272//272 18//18 498//498 +f 496//496 273//273 16//16 +f 273//273 614//614 274//274 +f 16//16 274//274 497//497 +f 498//498 17//17 276//276 +f 17//17 497//497 275//275 +f 276//276 275//275 615//615 +f 616//616 277//277 278//278 +f 277//277 499//499 21//21 +f 278//278 21//21 501//501 +f 499//499 279//279 19//19 +f 279//279 617//617 280//280 +f 19//19 280//280 500//500 +f 501//501 20//20 282//282 +f 20//20 500//500 281//281 +f 282//282 281//281 618//618 +f 616//616 283//283 284//284 +f 283//283 502//502 24//24 +f 284//284 24//24 504//504 +f 502//502 285//285 22//22 +f 285//285 619//619 286//286 +f 22//22 286//286 503//503 +f 504//504 23//23 288//288 +f 23//23 503//503 287//287 +f 288//288 287//287 620//620 +f 621//621 289//289 290//290 +f 289//289 505//505 27//27 +f 290//290 27//27 507//507 +f 505//505 291//291 25//25 +f 291//291 622//622 292//292 +f 25//25 292//292 506//506 +f 507//507 26//26 294//294 +f 26//26 506//506 293//293 +f 294//294 293//293 623//623 +f 621//621 295//295 296//296 +f 295//295 508//508 30//30 +f 296//296 30//30 510//510 +f 508//508 297//297 28//28 +f 297//297 624//624 298//298 +f 28//28 298//298 509//509 +f 510//510 29//29 300//300 +f 29//29 509//509 299//299 +f 300//300 299//299 625//625 +f 626//626 301//301 302//302 +f 301//301 511//511 33//33 +f 302//302 33//33 513//513 +f 511//511 303//303 31//31 +f 303//303 627//627 304//304 +f 31//31 304//304 512//512 +f 513//513 32//32 306//306 +f 32//32 512//512 305//305 +f 306//306 305//305 628//628 +f 626//626 307//307 308//308 +f 307//307 514//514 36//36 +f 308//308 36//36 516//516 +f 514//514 309//309 34//34 +f 309//309 629//629 310//310 +f 34//34 310//310 515//515 +f 516//516 35//35 312//312 +f 35//35 515//515 311//311 +f 312//312 311//311 630//630 +f 624//624 313//313 314//314 +f 313//313 517//517 39//39 +f 314//314 39//39 519//519 +f 517//517 315//315 37//37 +f 315//315 614//614 316//316 +f 37//37 316//316 518//518 +f 519//519 38//38 318//318 +f 38//38 518//518 317//317 +f 318//318 317//317 602//602 +f 605//605 319//319 320//320 +f 319//319 520//520 42//42 +f 320//320 42//42 522//522 +f 520//520 321//321 40//40 +f 321//321 618//618 322//322 +f 40//40 322//322 521//521 +f 522//522 41//41 324//324 +f 41//41 521//521 323//323 +f 324//324 323//323 625//625 +f 603//603 325//325 326//326 +f 325//325 523//523 45//45 +f 326//326 45//45 525//525 +f 523//523 327//327 43//43 +f 327//327 613//613 328//328 +f 43//43 328//328 524//524 +f 525//525 44//44 330//330 +f 44//44 524//524 329//329 +f 330//330 329//329 628//628 +f 627//627 331//331 332//332 +f 331//331 526//526 48//48 +f 332//332 48//48 528//528 +f 526//526 333//333 46//46 +f 333//333 619//619 334//334 +f 46//46 334//334 527//527 +f 528//528 47//47 336//336 +f 47//47 527//527 335//335 +f 336//336 335//335 604//604 +f 608//608 337//337 338//338 +f 337//337 529//529 51//51 +f 338//338 51//51 531//531 +f 529//529 339//339 49//49 +f 339//339 615//615 340//340 +f 49//49 340//340 530//530 +f 531//531 50//50 342//342 +f 50//50 530//530 341//341 +f 342//342 341//341 623//623 +f 622//622 343//343 344//344 +f 343//343 532//532 54//54 +f 344//344 54//54 534//534 +f 532//532 345//345 52//52 +f 345//345 617//617 346//346 +f 52//52 346//346 533//533 +f 534//534 53//53 348//348 +f 53//53 533//533 347//347 +f 348//348 347//347 609//609 +f 629//629 349//349 350//350 +f 349//349 535//535 57//57 +f 350//350 57//57 537//537 +f 535//535 351//351 55//55 +f 351//351 612//612 352//352 +f 55//55 352//352 536//536 +f 537//537 56//56 354//354 +f 56//56 536//536 353//353 +f 354//354 353//353 607//607 +f 610//610 355//355 356//356 +f 355//355 538//538 60//60 +f 356//356 60//60 540//540 +f 538//538 357//357 58//58 +f 357//357 620//620 358//358 +f 58//58 358//358 539//539 +f 540//540 59//59 360//360 +f 59//59 539//539 359//359 +f 360//360 359//359 630//630 +f 631//631 361//361 362//362 +f 361//361 541//541 63//63 +f 362//362 63//63 542//542 +f 541//541 363//363 61//61 +f 363//363 601//601 242//242 +f 61//61 242//242 483//483 +f 542//542 62//62 364//364 +f 62//62 483//483 246//246 +f 364//364 246//246 603//603 +f 601//601 365//365 241//241 +f 365//365 543//543 66//66 +f 241//241 66//66 481//481 +f 543//543 366//366 64//64 +f 366//366 632//632 367//367 +f 64//64 367//367 544//544 +f 481//481 65//65 243//243 +f 65//65 544//544 368//368 +f 243//243 368//368 602//602 +f 603//603 245//245 369//369 +f 245//245 482//482 69//69 +f 369//369 69//69 546//546 +f 482//482 244//244 67//67 +f 244//244 602//602 370//370 +f 67//67 370//370 545//545 +f 546//546 68//68 372//372 +f 68//68 545//545 371//371 +f 372//372 371//371 633//633 +f 632//632 366//366 373//373 +f 366//366 543//543 72//72 +f 373//373 72//72 547//547 +f 543//543 365//365 70//70 +f 365//365 601//601 248//248 +f 70//70 248//248 486//486 +f 547//547 71//71 374//374 +f 71//71 486//486 252//252 +f 374//374 252//252 605//605 +f 601//601 363//363 247//247 +f 363//363 541//541 75//75 +f 247//247 75//75 484//484 +f 541//541 361//361 73//73 +f 361//361 631//631 375//375 +f 73//73 375//375 548//548 +f 484//484 74//74 249//249 +f 74//74 548//548 376//376 +f 249//249 376//376 604//604 +f 605//605 251//251 377//377 +f 251//251 485//485 78//78 +f 377//377 78//78 550//550 +f 485//485 250//250 76//76 +f 250//250 604//604 378//378 +f 76//76 378//378 549//549 +f 550//550 77//77 380//380 +f 77//77 549//549 379//379 +f 380//380 379//379 634//634 +f 635//635 381//381 382//382 +f 381//381 551//551 81//81 +f 382//382 81//81 552//552 +f 551//551 383//383 79//79 +f 383//383 606//606 254//254 +f 79//79 254//254 489//489 +f 552//552 80//80 384//384 +f 80//80 489//489 258//258 +f 384//384 258//258 608//608 +f 606//606 385//385 253//253 +f 385//385 553//553 84//84 +f 253//253 84//84 487//487 +f 553//553 386//386 82//82 +f 386//386 636//636 387//387 +f 82//82 387//387 554//554 +f 487//487 83//83 255//255 +f 83//83 554//554 388//388 +f 255//255 388//388 607//607 +f 608//608 257//257 389//389 +f 257//257 488//488 87//87 +f 389//389 87//87 556//556 +f 488//488 256//256 85//85 +f 256//256 607//607 390//390 +f 85//85 390//390 555//555 +f 556//556 86//86 392//392 +f 86//86 555//555 391//391 +f 392//392 391//391 637//637 +f 636//636 386//386 393//393 +f 386//386 553//553 90//90 +f 393//393 90//90 557//557 +f 553//553 385//385 88//88 +f 385//385 606//606 260//260 +f 88//88 260//260 492//492 +f 557//557 89//89 394//394 +f 89//89 492//492 264//264 +f 394//394 264//264 610//610 +f 606//606 383//383 259//259 +f 383//383 551//551 93//93 +f 259//259 93//93 490//490 +f 551//551 381//381 91//91 +f 381//381 635//635 395//395 +f 91//91 395//395 558//558 +f 490//490 92//92 261//261 +f 92//92 558//558 396//396 +f 261//261 396//396 609//609 +f 610//610 263//263 397//397 +f 263//263 491//491 96//96 +f 397//397 96//96 560//560 +f 491//491 262//262 94//94 +f 262//262 609//609 398//398 +f 94//94 398//398 559//559 +f 560//560 95//95 400//400 +f 95//95 559//559 399//399 +f 400//400 399//399 638//638 +f 633//633 401//401 402//402 +f 401//401 561//561 99//99 +f 402//402 99//99 562//562 +f 561//561 403//403 97//97 +f 403//403 611//611 266//266 +f 97//97 266//266 495//495 +f 562//562 98//98 404//404 +f 98//98 495//495 270//270 +f 404//404 270//270 613//613 +f 611//611 405//405 265//265 +f 405//405 563//563 102//102 +f 265//265 102//102 493//493 +f 563//563 406//406 100//100 +f 406//406 637//637 407//407 +f 100//100 407//407 564//564 +f 493//493 101//101 267//267 +f 101//101 564//564 408//408 +f 267//267 408//408 612//612 +f 613//613 269//269 409//409 +f 269//269 494//494 105//105 +f 409//409 105//105 566//566 +f 494//494 268//268 103//103 +f 268//268 612//612 410//410 +f 103//103 410//410 565//565 +f 566//566 104//104 412//412 +f 104//104 565//565 411//411 +f 412//412 411//411 639//639 +f 637//637 406//406 413//413 +f 406//406 563//563 108//108 +f 413//413 108//108 567//567 +f 563//563 405//405 106//106 +f 405//405 611//611 272//272 +f 106//106 272//272 498//498 +f 567//567 107//107 414//414 +f 107//107 498//498 276//276 +f 414//414 276//276 615//615 +f 611//611 403//403 271//271 +f 403//403 561//561 111//111 +f 271//271 111//111 496//496 +f 561//561 401//401 109//109 +f 401//401 633//633 415//415 +f 109//109 415//415 568//568 +f 496//496 110//110 273//273 +f 110//110 568//568 416//416 +f 273//273 416//416 614//614 +f 615//615 275//275 417//417 +f 275//275 497//497 114//114 +f 417//417 114//114 570//570 +f 497//497 274//274 112//112 +f 274//274 614//614 418//418 +f 112//112 418//418 569//569 +f 570//570 113//113 420//420 +f 113//113 569//569 419//419 +f 420//420 419//419 640//640 +f 634//634 421//421 422//422 +f 421//421 571//571 117//117 +f 422//422 117//117 572//572 +f 571//571 423//423 115//115 +f 423//423 616//616 278//278 +f 115//115 278//278 501//501 +f 572//572 116//116 424//424 +f 116//116 501//501 282//282 +f 424//424 282//282 618//618 +f 616//616 425//425 277//277 +f 425//425 573//573 120//120 +f 277//277 120//120 499//499 +f 573//573 426//426 118//118 +f 426//426 638//638 427//427 +f 118//118 427//427 574//574 +f 499//499 119//119 279//279 +f 119//119 574//574 428//428 +f 279//279 428//428 617//617 +f 618//618 281//281 429//429 +f 281//281 500//500 123//123 +f 429//429 123//123 576//576 +f 500//500 280//280 121//121 +f 280//280 617//617 430//430 +f 121//121 430//430 575//575 +f 576//576 122//122 432//432 +f 122//122 575//575 431//431 +f 432//432 431//431 641//641 +f 638//638 426//426 433//433 +f 426//426 573//573 126//126 +f 433//433 126//126 577//577 +f 573//573 425//425 124//124 +f 425//425 616//616 284//284 +f 124//124 284//284 504//504 +f 577//577 125//125 434//434 +f 125//125 504//504 288//288 +f 434//434 288//288 620//620 +f 616//616 423//423 283//283 +f 423//423 571//571 129//129 +f 283//283 129//129 502//502 +f 571//571 421//421 127//127 +f 421//421 634//634 435//435 +f 127//127 435//435 578//578 +f 502//502 128//128 285//285 +f 128//128 578//578 436//436 +f 285//285 436//436 619//619 +f 620//620 287//287 437//437 +f 287//287 503//503 132//132 +f 437//437 132//132 580//580 +f 503//503 286//286 130//130 +f 286//286 619//619 438//438 +f 130//130 438//438 579//579 +f 580//580 131//131 440//440 +f 131//131 579//579 439//439 +f 440//440 439//439 642//642 +f 640//640 441//441 442//442 +f 441//441 581//581 135//135 +f 442//442 135//135 582//582 +f 581//581 443//443 133//133 +f 443//443 621//621 290//290 +f 133//133 290//290 507//507 +f 582//582 134//134 444//444 +f 134//134 507//507 294//294 +f 444//444 294//294 623//623 +f 621//621 445//445 289//289 +f 445//445 583//583 138//138 +f 289//289 138//138 505//505 +f 583//583 446//446 136//136 +f 446//446 641//641 447//447 +f 136//136 447//447 584//584 +f 505//505 137//137 291//291 +f 137//137 584//584 448//448 +f 291//291 448//448 622//622 +f 623//623 293//293 449//449 +f 293//293 506//506 141//141 +f 449//449 141//141 586//586 +f 506//506 292//292 139//139 +f 292//292 622//622 450//450 +f 139//139 450//450 585//585 +f 586//586 140//140 452//452 +f 140//140 585//585 451//451 +f 452//452 451//451 635//635 +f 641//641 446//446 453//453 +f 446//446 583//583 144//144 +f 453//453 144//144 587//587 +f 583//583 445//445 142//142 +f 445//445 621//621 296//296 +f 142//142 296//296 510//510 +f 587//587 143//143 454//454 +f 143//143 510//510 300//300 +f 454//454 300//300 625//625 +f 621//621 443//443 295//295 +f 443//443 581//581 147//147 +f 295//295 147//147 508//508 +f 581//581 441//441 145//145 +f 441//441 640//640 455//455 +f 145//145 455//455 588//588 +f 508//508 146//146 297//297 +f 146//146 588//588 456//456 +f 297//297 456//456 624//624 +f 625//625 299//299 457//457 +f 299//299 509//509 150//150 +f 457//457 150//150 590//590 +f 509//509 298//298 148//148 +f 298//298 624//624 458//458 +f 148//148 458//458 589//589 +f 590//590 149//149 460//460 +f 149//149 589//589 459//459 +f 460//460 459//459 632//632 +f 639//639 461//461 462//462 +f 461//461 591//591 153//153 +f 462//462 153//153 592//592 +f 591//591 463//463 151//151 +f 463//463 626//626 302//302 +f 151//151 302//302 513//513 +f 592//592 152//152 464//464 +f 152//152 513//513 306//306 +f 464//464 306//306 628//628 +f 626//626 465//465 301//301 +f 465//465 593//593 156//156 +f 301//301 156//156 511//511 +f 593//593 466//466 154//154 +f 466//466 642//642 467//467 +f 154//154 467//467 594//594 +f 511//511 155//155 303//303 +f 155//155 594//594 468//468 +f 303//303 468//468 627//627 +f 628//628 305//305 469//469 +f 305//305 512//512 159//159 +f 469//469 159//159 596//596 +f 512//512 304//304 157//157 +f 304//304 627//627 470//470 +f 157//157 470//470 595//595 +f 596//596 158//158 472//472 +f 158//158 595//595 471//471 +f 472//472 471//471 631//631 +f 642//642 466//466 473//473 +f 466//466 593//593 162//162 +f 473//473 162//162 597//597 +f 593//593 465//465 160//160 +f 465//465 626//626 308//308 +f 160//160 308//308 516//516 +f 597//597 161//161 474//474 +f 161//161 516//516 312//312 +f 474//474 312//312 630//630 +f 626//626 463//463 307//307 +f 463//463 591//591 165//165 +f 307//307 165//165 514//514 +f 591//591 461//461 163//163 +f 461//461 639//639 475//475 +f 163//163 475//475 598//598 +f 514//514 164//164 309//309 +f 164//164 598//598 476//476 +f 309//309 476//476 629//629 +f 630//630 311//311 477//477 +f 311//311 515//515 168//168 +f 477//477 168//168 600//600 +f 515//515 310//310 166//166 +f 310//310 629//629 478//478 +f 166//166 478//478 599//599 +f 600//600 167//167 480//480 +f 167//167 599//599 479//479 +f 480//480 479//479 636//636 +f 632//632 459//459 367//367 +f 459//459 589//589 171//171 +f 367//367 171//171 544//544 +f 589//589 458//458 169//169 +f 458//458 624//624 314//314 +f 169//169 314//314 519//519 +f 544//544 170//170 368//368 +f 170//170 519//519 318//318 +f 368//368 318//318 602//602 +f 624//624 456//456 313//313 +f 456//456 588//588 174//174 +f 313//313 174//174 517//517 +f 588//588 455//455 172//172 +f 455//455 640//640 419//419 +f 172//172 419//419 569//569 +f 517//517 173//173 315//315 +f 173//173 569//569 418//418 +f 315//315 418//418 614//614 +f 602//602 317//317 370//370 +f 317//317 518//518 177//177 +f 370//370 177//177 545//545 +f 518//518 316//316 175//175 +f 316//316 614//614 416//416 +f 175//175 416//416 568//568 +f 545//545 176//176 371//371 +f 176//176 568//568 415//415 +f 371//371 415//415 633//633 +f 632//632 373//373 460//460 +f 373//373 547//547 180//180 +f 460//460 180//180 590//590 +f 547//547 374//374 178//178 +f 374//374 605//605 320//320 +f 178//178 320//320 522//522 +f 590//590 179//179 457//457 +f 179//179 522//522 324//324 +f 457//457 324//324 625//625 +f 605//605 377//377 319//319 +f 377//377 550//550 183//183 +f 319//319 183//183 520//520 +f 550//550 380//380 181//181 +f 380//380 634//634 422//422 +f 181//181 422//422 572//572 +f 520//520 182//182 321//321 +f 182//182 572//572 424//424 +f 321//321 424//424 618//618 +f 625//625 323//323 454//454 +f 323//323 521//521 186//186 +f 454//454 186//186 587//587 +f 521//521 322//322 184//184 +f 322//322 618//618 429//429 +f 184//184 429//429 576//576 +f 587//587 185//185 453//453 +f 185//185 576//576 432//432 +f 453//453 432//432 641//641 +f 631//631 362//362 472//472 +f 362//362 542//542 189//189 +f 472//472 189//189 596//596 +f 542//542 364//364 187//187 +f 364//364 603//603 326//326 +f 187//187 326//326 525//525 +f 596//596 188//188 469//469 +f 188//188 525//525 330//330 +f 469//469 330//330 628//628 +f 603//603 369//369 325//325 +f 369//369 546//546 192//192 +f 325//325 192//192 523//523 +f 546//546 372//372 190//190 +f 372//372 633//633 402//402 +f 190//190 402//402 562//562 +f 523//523 191//191 327//327 +f 191//191 562//562 404//404 +f 327//327 404//404 613//613 +f 628//628 329//329 464//464 +f 329//329 524//524 195//195 +f 464//464 195//195 592//592 +f 524//524 328//328 193//193 +f 328//328 613//613 409//409 +f 193//193 409//409 566//566 +f 592//592 194//194 462//462 +f 194//194 566//566 412//412 +f 462//462 412//412 639//639 +f 631//631 471//471 375//375 +f 471//471 595//595 198//198 +f 375//375 198//198 548//548 +f 595//595 470//470 196//196 +f 470//470 627//627 332//332 +f 196//196 332//332 528//528 +f 548//548 197//197 376//376 +f 197//197 528//528 336//336 +f 376//376 336//336 604//604 +f 627//627 468//468 331//331 +f 468//468 594//594 201//201 +f 331//331 201//201 526//526 +f 594//594 467//467 199//199 +f 467//467 642//642 439//439 +f 199//199 439//439 579//579 +f 526//526 200//200 333//333 +f 200//200 579//579 438//438 +f 333//333 438//438 619//619 +f 604//604 335//335 378//378 +f 335//335 527//527 204//204 +f 378//378 204//204 549//549 +f 527//527 334//334 202//202 +f 334//334 619//619 436//436 +f 202//202 436//436 578//578 +f 549//549 203//203 379//379 +f 203//203 578//578 435//435 +f 379//379 435//435 634//634 +f 635//635 382//382 452//452 +f 382//382 552//552 207//207 +f 452//452 207//207 586//586 +f 552//552 384//384 205//205 +f 384//384 608//608 338//338 +f 205//205 338//338 531//531 +f 586//586 206//206 449//449 +f 206//206 531//531 342//342 +f 449//449 342//342 623//623 +f 608//608 389//389 337//337 +f 389//389 556//556 210//210 +f 337//337 210//210 529//529 +f 556//556 392//392 208//208 +f 392//392 637//637 413//413 +f 208//208 413//413 567//567 +f 529//529 209//209 339//339 +f 209//209 567//567 414//414 +f 339//339 414//414 615//615 +f 623//623 341//341 444//444 +f 341//341 530//530 213//213 +f 444//444 213//213 582//582 +f 530//530 340//340 211//211 +f 340//340 615//615 417//417 +f 211//211 417//417 570//570 +f 582//582 212//212 442//442 +f 212//212 570//570 420//420 +f 442//442 420//420 640//640 +f 635//635 451//451 395//395 +f 451//451 585//585 216//216 +f 395//395 216//216 558//558 +f 585//585 450//450 214//214 +f 450//450 622//622 344//344 +f 214//214 344//344 534//534 +f 558//558 215//215 396//396 +f 215//215 534//534 348//348 +f 396//396 348//348 609//609 +f 622//622 448//448 343//343 +f 448//448 584//584 219//219 +f 343//343 219//219 532//532 +f 584//584 447//447 217//217 +f 447//447 641//641 431//431 +f 217//217 431//431 575//575 +f 532//532 218//218 345//345 +f 218//218 575//575 430//430 +f 345//345 430//430 617//617 +f 609//609 347//347 398//398 +f 347//347 533//533 222//222 +f 398//398 222//222 559//559 +f 533//533 346//346 220//220 +f 346//346 617//617 428//428 +f 220//220 428//428 574//574 +f 559//559 221//221 399//399 +f 221//221 574//574 427//427 +f 399//399 427//427 638//638 +f 636//636 479//479 387//387 +f 479//479 599//599 225//225 +f 387//387 225//225 554//554 +f 599//599 478//478 223//223 +f 478//478 629//629 350//350 +f 223//223 350//350 537//537 +f 554//554 224//224 388//388 +f 224//224 537//537 354//354 +f 388//388 354//354 607//607 +f 629//629 476//476 349//349 +f 476//476 598//598 228//228 +f 349//349 228//228 535//535 +f 598//598 475//475 226//226 +f 475//475 639//639 411//411 +f 226//226 411//411 565//565 +f 535//535 227//227 351//351 +f 227//227 565//565 410//410 +f 351//351 410//410 612//612 +f 607//607 353//353 390//390 +f 353//353 536//536 231//231 +f 390//390 231//231 555//555 +f 536//536 352//352 229//229 +f 352//352 612//612 408//408 +f 229//229 408//408 564//564 +f 555//555 230//230 391//391 +f 230//230 564//564 407//407 +f 391//391 407//407 637//637 +f 636//636 393//393 480//480 +f 393//393 557//557 234//234 +f 480//480 234//234 600//600 +f 557//557 394//394 232//232 +f 394//394 610//610 356//356 +f 232//232 356//356 540//540 +f 600//600 233//233 477//477 +f 233//233 540//540 360//360 +f 477//477 360//360 630//630 +f 610//610 397//397 355//355 +f 397//397 560//560 237//237 +f 355//355 237//237 538//538 +f 560//560 400//400 235//235 +f 400//400 638//638 433//433 +f 235//235 433//433 577//577 +f 538//538 236//236 357//357 +f 236//236 577//577 434//434 +f 357//357 434//434 620//620 +f 630//630 359//359 474//474 +f 359//359 539//539 240//240 +f 474//474 240//240 597//597 +f 539//539 358//358 238//238 +f 358//358 620//620 437//437 +f 238//238 437//437 580//580 +f 597//597 239//239 473//473 +f 239//239 580//580 440//440 +f 473//473 440//440 642//642 diff --git a/src/ClothAssert.hpp b/src/ClothAssert.hpp new file mode 100644 index 0000000..7975731 --- /dev/null +++ b/src/ClothAssert.hpp @@ -0,0 +1,48 @@ +// Copyright Matt Overby 2021. +// Distributed under the MIT License. + +#ifndef CLOTHASSERT_HPP +#define CLOTHASSERT_HPP 1 + +#include +#include +#include + +namespace cloth +{ + +static inline void AssertHandler(bool cond, const std::string& file, const int& line) +{ + if (!cond) + { + std::string err_msg = "Assertion failed in "+file+" line "+std::to_string(line); + throw std::runtime_error(err_msg.c_str()); + } +} + +static inline void AssertHandlerMsg(bool cond, const std::string& file, const int& line, const std::string &msg) +{ + if (!cond) + { + std::string err_msg = "Assertion failed in "+file+" line "+std::to_string(line)+": "+msg; + throw std::runtime_error(err_msg.c_str()); + } +} + +} + +// Neat trick that allows macros with multiple arguments: +// https://stackoverflow.com/questions/3046889/optional-parameters-with-c-macros +// Also consider using #condition + +#define ClothAssert_withmsg(cond, msg) AssertHandlerMsg(cond, std::string(__FILE__), __LINE__, msg) +#define ClothAssert_nomsg(cond) AssertHandler(cond, std::string(__FILE__), __LINE__) +#define ClothAssert_stripargs(xx,cond,msg,FUNC, ...) FUNC + +#define ClothAssert(...) \ + ClothAssert_stripargs(,##__VA_ARGS__,\ + ClothAssert_withmsg(__VA_ARGS__),\ + ClothAssert_nomsg(__VA_ARGS__),\ + ) + +#endif diff --git a/src/ClothMesh.hpp b/src/ClothMesh.hpp new file mode 100644 index 0000000..214ab9d --- /dev/null +++ b/src/ClothMesh.hpp @@ -0,0 +1,140 @@ +// Copyright Matt Overby 2021. +// Distributed under the MIT License. + +#ifndef CLOTHMESH_HPP +#define CLOTHMESH_HPP 1 + +#include "ClothAssert.hpp" +#include +#include + +namespace cloth +{ + +class ClothMesh +{ +public: + + Eigen::MatrixXd V; // rest vertices [nx3] + Eigen::MatrixXi F; // faces [fx3] + Eigen::MatrixXi E; // edges [ex3] + Eigen::VectorXd E0; // edge rest length + Eigen::MatrixXi B; // bend edges [bx3] + Eigen::VectorXd B0; // bend rest length + Eigen::VectorXd masses; // per-vertex masses + Eigen::VectorXi V_offset; // per-mesh index into V + Eigen::VectorXi F_offset; // per-mesh index into F + + // Adds a mesh to the collection of deformables and returns mesh number + inline int add_mesh(const Eigen::MatrixXd &inV, const Eigen::MatrixXi &inF) + { + int mesh_idx = -1; + ClothAssert(inV.rows() > 0 && inV.cols()==3); + ClothAssert(inF.rows() > 0 && inF.cols()==3); + + // First mesh? + if (V_offset.size()==0) + { + using namespace Eigen; + V_offset = VectorXi::Zero(2); + F_offset = VectorXi::Zero(2); + V_offset[1] = inV.rows(); + F_offset[1] = inF.rows(); + V = inV; + F = inF; + mesh_idx = 0; + } + else + { + mesh_idx = V_offset.size()-1; + V_offset.conservativeResize(mesh_idx+2); + F_offset.conservativeResize(mesh_idx+2); + V_offset[mesh_idx+1] = inV.rows(); + F_offset[mesh_idx+1] = inF.rows(); + V.conservativeResize(V.rows() + inV.rows(), 3); + V.bottomRows(inV.rows()) = inV; + F.conservativeResize(F.rows() + inF.rows(), 3); + F.bottomRows(inF.rows()) = inF; + } + + masses = Eigen::VectorXd::Constant(V.rows(), 0.1/V.rows()); + + compute_edges(); + return mesh_idx; + } + + // Computes edges and cross-edges from faces + inline void compute_edges() + { + using namespace Eigen; + std::map, std::pair> edges; // [edge, bend] + typedef std::map, std::pair>::iterator EdgeIter; + int n_bend = 0; // keep track of valid bend edges (non-border) + + int nf = F.rows(); + for (int i=0; i edge = std::make_pair(F(i,j), F(i,(j+1)%3)); + int adj = F(i,(j+2)%3); + if (edge.second < edge.first) + { + std::swap(edge.first, edge.second); + } + + EdgeIter it = edges.find(edge); + if (it == edges.end()) + { + edges[edge] = std::make_pair(adj, -1); + } + else + { + n_bend++; + std::pair &adj_pair = it->second; + adj_pair.second = adj; + if (adj_pair.second < adj_pair.first) + { + std::swap(adj_pair.first, adj_pair.second); + } + } + } + } + + // Loop over map and create eigen buffers + E = MatrixXi::Zero(edges.size(), 2); + E0 = VectorXd::Constant(edges.size(), -1); + B = MatrixXi::Zero(n_bend, 2); + B0 = VectorXd::Constant(n_bend, -1); + + int edge_idx = 0; + int bend_idx = 0; + for(EdgeIter it = edges.begin(); it != edges.end(); ++it, ++edge_idx) + { + const std::pair &e = it->first; + E(edge_idx,0) = e.first; + E(edge_idx,1) = e.second; + E0[edge_idx] = (V.row(e.first) - V.row(e.second)).norm(); + + const std::pair &b = it->second; + if (b.first >= 0 && b.second >= 0) + { + ClothAssert(bend_idx < B.rows()); + B(bend_idx,0) = b.first; + B(bend_idx,1) = b.second; + B0[bend_idx] = (V.row(b.first) - V.row(b.second)).norm(); + bend_idx++; + } + } + + // Check to make sure we set every edge + ClothAssert(E0.minCoeff() >= 0); + ClothAssert(B0.minCoeff() >= 0); + + } // end compute edges + +}; + +} + +#endif diff --git a/src/Objective.hpp b/src/Objective.hpp new file mode 100644 index 0000000..4e0d1ff --- /dev/null +++ b/src/Objective.hpp @@ -0,0 +1,108 @@ +// Copyright Matt Overby 2021. +// Distributed under the MIT License. + +#ifndef OBJECTIVE_HPP +#define OBJECTIVE_HPP 1 + +#include "ClothAssert.hpp" +#include "ClothMesh.hpp" + +namespace cloth +{ + +class Objective +{ +public: + + // Computes and returns the Hookean energy of a spring with rest length r and stiffness k. + // If x.rows == grad.rows, the gradients (f, -f) are added to grad. + double spring_gradient( + const Eigen::MatrixXd &x, + int e0, + int e1, + double r, + double k, + Eigen::MatrixXd &grad) const + { + using namespace Eigen; + Vector3d x0 = x.row(e0); + Vector3d x1 = x.row(e1); + Vector3d edge = (x0-x1); + double l = edge.norm(); + if (grad.rows() == x.rows() && l > 1e-12) + { + edge /= l; + edge *= (l-r)*k; + ClothAssert(edge.allFinite()); + grad.row(e0) += edge; + grad.row(e1) -= edge; + } + double energy = 0.5 * k * (l-r) * (l-r); // (k/2)||l-l0||^2 + ClothAssert(std::isfinite(energy)); + return energy; + } + + // Spring energies that push vertices out of collision. + // We'll cheat a bit and hard code the sphere radius and center since we know it. + double collision_gradient( + const Eigen::MatrixXd &x, + int idx, + double k, + Eigen::MatrixXd &grad) const + { + using namespace Eigen; + Vector3d cent(0,0,0); + double rad = 0.51; + Vector3d xi = x.row(idx); + Vector3d dir = (xi-cent); + double l = dir.norm(); + if (l > rad) { return 0; } + if (grad.rows() == x.rows() && l > 1e-12) + { + dir /= l; + dir *= (l-rad)*k; + ClothAssert(dir.allFinite()); + grad.row(idx) += dir; + } + double energy = 0.5 * k * (l-rad) * (l-rad); // (k/2)||l-l0||^2 + ClothAssert(std::isfinite(energy)); + return energy; + } + + // Momentum potential: ||x-xbar||^2_M / (2dt^2) + // Like springs above, if xrows == grad.rows, gradient is added. + // Unlike springs, the momentum is a global term. + inline double momentum_gradient( + const Eigen::MatrixXd &x, + const Eigen::MatrixXd &x_start, + const Eigen::MatrixXd &v, + const Eigen::VectorXd &masses, + double dt, + Eigen::MatrixXd &grad) const + { + using namespace Eigen; + // Some of this can be precomputed to speed up evaluations + MatrixXd x_bar = x_start + dt * v; + MatrixXd dx = x - x_bar; + MatrixXd M_dx = masses.asDiagonal() * dx; + double dot = 0; + for (int i=0; i<3; ++i) + { + dot += dx.col(i).dot(M_dx.col(i)); + } + + double energy = dot / (2.0*dt*dt); + if (grad.rows() == x.rows()) + { + M_dx *= (1.0 / (dt*dt)); + grad += M_dx; + } + ClothAssert(std::isfinite(energy)); + return energy; + } + +}; + +} + +#endif diff --git a/src/Solver.hpp b/src/Solver.hpp new file mode 100644 index 0000000..1b6af68 --- /dev/null +++ b/src/Solver.hpp @@ -0,0 +1,133 @@ +// Copyright Matt Overby 2021. +// Distributed under the MIT License. + +#ifndef SOLVER_HPP +#define SOLVER_HPP 1 + +#include "Objective.hpp" +#include "ClothMesh.hpp" + +namespace cloth +{ + +class Solver +{ +public: + + // State variables + Eigen::MatrixXd x; // positions [nx3] + Eigen::MatrixXd v; // velocities [nx3] + Eigen::MatrixXd x_start; // start of timestep [nx3] + double spring_k; + double bend_k; + double collision_k; + + Solver() : + spring_k(100), + bend_k(100), + collision_k(300) + {} + + // Initalizes state variables, returns true if success + bool initialize(const ClothMesh &cloth) + { + if (cloth.V.rows() == 0 || cloth.V.cols() != 3) + { + return false; + } + + x = cloth.V; + v = Eigen::MatrixXd::Zero(x.rows(), 3); + x_start = x; + return true; + } + + // Computes the energy and gradient (if desired) of the objective + double gradient(const ClothMesh &cloth, const Objective &objective, + double dt, const Eigen::MatrixXd &xk, Eigen::MatrixXd &grad) const + { + double tot_energy = 0; + + // Momentum potential + tot_energy += objective.momentum_gradient( + xk, x_start, v, cloth.masses, dt, grad); + + // Stretch springs + int num_edges = cloth.E.rows(); + for (int i=0; i energy_k) + { + alpha *= 0.5; + x = xk - alpha * grad; + } + } + } + +}; + +} + +#endif diff --git a/src/main.cpp b/src/main.cpp new file mode 100644 index 0000000..2c54eff --- /dev/null +++ b/src/main.cpp @@ -0,0 +1,91 @@ +// Copyright Matt Overby 2021. +// Distributed under the MIT License. + +#include +#include +#include +#include + +#include "Solver.hpp" + +using namespace Eigen; +using namespace cloth; + +int main(int argc, char *argv[]) +{ + (void)(argc); + (void)(argv); + + std::string plane = CLOTH_ROOT_DIR "/data/plane.obj"; + std::string sphere = CLOTH_ROOT_DIR "/data/sphere.obj"; + MatrixXd V, cV; + MatrixXi F, cF; + if (!igl::readOBJ(plane, V, F) || !igl::readOBJ(sphere, cV, cF)) + { + return EXIT_FAILURE; + } + + // Shrink the sphere (radius 1, centered about origin) + //cV *= 0.75; + + // Move cloth above the sphere + V.col(1).array() += 0.5; + + // Create cloth object + ClothMesh cloth; + cloth.add_mesh(V, F); + + // Objective function + Objective objective; + + // Create solver + double dt = 1.0 / 24.0; + Solver solver; + if (!solver.initialize(cloth)) + { + return EXIT_FAILURE; + } + + // Create combined matrices to pass to igl + MatrixXd fullX(V.rows() + cV.rows(), 3); + fullX.topRows(V.rows()) = solver.x; + fullX.bottomRows(cV.rows()) = cV; + MatrixXi fullF(F.rows() + cF.rows(), 3); + fullF.topRows(F.rows()) = F; + fullF.bottomRows(cF.rows()) = cF; + fullF.bottomRows(cF.rows()).array() += V.rows(); + + std::cout << "Press A to simulate, R to reset" << std::endl; + + // Create viewer + igl::opengl::glfw::Viewer viewer; + viewer.data().set_face_based(true); + viewer.data().set_mesh(fullX, fullF); + viewer.core().is_animating = false; + + viewer.callback_key_pressed = [&](igl::opengl::glfw::Viewer&, unsigned int key, int)->bool + { + char c = char(key); + if (c == 'r') + { + solver.initialize(cloth); + } + return false; + }; + + viewer.callback_pre_draw = [&](igl::opengl::glfw::Viewer&)->bool + { + if (viewer.core().is_animating) + { + solver.solve(cloth, objective, dt); // solve the time step + fullX.topRows(V.rows()) = solver.x; // update vertex positions + viewer.data().set_mesh(fullX, fullF); + viewer.data().compute_normals(); // update normals after defo + } + return false; + }; + + viewer.launch(); + + return EXIT_SUCCESS; +} From 5cfbff076db028ec40e9ba34d9e6a206c86c7192 Mon Sep 17 00:00:00 2001 From: mattoverby Date: Wed, 20 Aug 2025 20:21:28 -0500 Subject: [PATCH 3/9] added test --- src/main.cpp | 30 ++++++++++++---------------- test/test.cpp | 54 +++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 66 insertions(+), 18 deletions(-) create mode 100644 test/test.cpp diff --git a/src/main.cpp b/src/main.cpp index 2c54eff..a064e0f 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -5,7 +5,6 @@ #include #include #include - #include "Solver.hpp" using namespace Eigen; @@ -18,9 +17,9 @@ int main(int argc, char *argv[]) std::string plane = CLOTH_ROOT_DIR "/data/plane.obj"; std::string sphere = CLOTH_ROOT_DIR "/data/sphere.obj"; - MatrixXd V, cV; - MatrixXi F, cF; - if (!igl::readOBJ(plane, V, F) || !igl::readOBJ(sphere, cV, cF)) + MatrixXd V, sphereV; + MatrixXi F, sphereF; + if (!igl::readOBJ(plane, V, F) || !igl::readOBJ(sphere, sphereV, sphereF)) { return EXIT_FAILURE; } @@ -29,7 +28,7 @@ int main(int argc, char *argv[]) //cV *= 0.75; // Move cloth above the sphere - V.col(1).array() += 0.5; + V.col(1).array() += 0.6; // Create cloth object ClothMesh cloth; @@ -46,21 +45,16 @@ int main(int argc, char *argv[]) return EXIT_FAILURE; } - // Create combined matrices to pass to igl - MatrixXd fullX(V.rows() + cV.rows(), 3); - fullX.topRows(V.rows()) = solver.x; - fullX.bottomRows(cV.rows()) = cV; - MatrixXi fullF(F.rows() + cF.rows(), 3); - fullF.topRows(F.rows()) = F; - fullF.bottomRows(cF.rows()) = cF; - fullF.bottomRows(cF.rows()).array() += V.rows(); - std::cout << "Press A to simulate, R to reset" << std::endl; // Create viewer igl::opengl::glfw::Viewer viewer; viewer.data().set_face_based(true); - viewer.data().set_mesh(fullX, fullF); + viewer.data().set_mesh(V, F); + viewer.data().set_colors(RowVector3d(0.659, 0.847, 1)); + viewer.append_mesh(); + viewer.data(1).set_mesh(sphereV, sphereF); + viewer.data(1).set_colors(RowVector3d(0.7, 0.7, 0.7)); viewer.core().is_animating = false; viewer.callback_key_pressed = [&](igl::opengl::glfw::Viewer&, unsigned int key, int)->bool @@ -78,9 +72,9 @@ int main(int argc, char *argv[]) if (viewer.core().is_animating) { solver.solve(cloth, objective, dt); // solve the time step - fullX.topRows(V.rows()) = solver.x; // update vertex positions - viewer.data().set_mesh(fullX, fullF); - viewer.data().compute_normals(); // update normals after defo + V = solver.x; // update vertex positions + viewer.data(0).set_mesh(V, F); + viewer.data(0).compute_normals(); // update normals after defo } return false; }; diff --git a/test/test.cpp b/test/test.cpp new file mode 100644 index 0000000..85b26cc --- /dev/null +++ b/test/test.cpp @@ -0,0 +1,54 @@ +// Copyright Matt Overby 2021. +// Distributed under the MIT License. + +#include +#include +#include +#include "Solver.hpp" + +using namespace Eigen; +using namespace cloth; + +int main(int argc, char *argv[]) +{ + (void)(argc); + (void)(argv); + + std::string plane = CLOTH_ROOT_DIR "/data/plane.obj"; + std::string sphere = CLOTH_ROOT_DIR "/data/sphere.obj"; + MatrixXd V, cV; + MatrixXi F, cF; + if (!igl::readOBJ(plane, V, F) || !igl::readOBJ(sphere, cV, cF)) + { + return EXIT_FAILURE; + } + + // Shrink the sphere (radius 1, centered about origin) + //cV *= 0.75; + + // Move cloth above the sphere + V.col(1).array() += 0.5; + + // Create cloth object + ClothMesh cloth; + cloth.add_mesh(V, F); + + // Objective function + Objective objective; + + // Create solver + double dt = 1.0 / 24.0; + Solver solver; + if (!solver.initialize(cloth)) + { + return EXIT_FAILURE; + } + + int timesteps = 10; + for (int step=0; step < timesteps; ++step) + { + solver.solve(cloth, objective, dt); // solve the time step + } + + return EXIT_SUCCESS; +} From 087d736be2b7e4e849dbd2be6b402b5b4d0cb803 Mon Sep 17 00:00:00 2001 From: mattoverby Date: Wed, 20 Aug 2025 20:34:19 -0500 Subject: [PATCH 4/9] update test --- src/Solver.hpp | 7 ++++--- src/main.cpp | 3 --- test/test.cpp | 8 +++++--- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/Solver.hpp b/src/Solver.hpp index 1b6af68..1b065a3 100644 --- a/src/Solver.hpp +++ b/src/Solver.hpp @@ -21,11 +21,13 @@ class Solver double spring_k; double bend_k; double collision_k; + int max_solver_iter; Solver() : spring_k(100), bend_k(100), - collision_k(300) + collision_k(300), + max_solver_iter(400) {} // Initalizes state variables, returns true if success @@ -99,8 +101,7 @@ class Solver MatrixXd grad = MatrixXd::Zero(x.rows(), 3); MatrixXd xk = MatrixXd::Zero(x.rows(), 3); - int max_iters = 400; - for (int iter = 0; iter < max_iters; ++iter) + for (int iter = 0; iter < max_solver_iter; ++iter) { // Compute current energy and gradient xk = x; // store state at current iteration diff --git a/src/main.cpp b/src/main.cpp index a064e0f..2b04ccd 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -24,9 +24,6 @@ int main(int argc, char *argv[]) return EXIT_FAILURE; } - // Shrink the sphere (radius 1, centered about origin) - //cV *= 0.75; - // Move cloth above the sphere V.col(1).array() += 0.6; diff --git a/test/test.cpp b/test/test.cpp index 85b26cc..5a6bd9a 100644 --- a/test/test.cpp +++ b/test/test.cpp @@ -23,9 +23,6 @@ int main(int argc, char *argv[]) return EXIT_FAILURE; } - // Shrink the sphere (radius 1, centered about origin) - //cV *= 0.75; - // Move cloth above the sphere V.col(1).array() += 0.5; @@ -39,6 +36,11 @@ int main(int argc, char *argv[]) // Create solver double dt = 1.0 / 24.0; Solver solver; + + // 20 iters won't converge but it will test + // all the functions are operational. + solver.max_solver_iter = 20; + if (!solver.initialize(cloth)) { return EXIT_FAILURE; From ac599ee2c32424d7ca731660b35df3205bb28c10 Mon Sep 17 00:00:00 2001 From: mattoverby Date: Thu, 21 Aug 2025 11:27:32 -0500 Subject: [PATCH 5/9] updated github action --- .github/workflows/build_and_test.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index c244123..f8969bd 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -21,6 +21,7 @@ jobs: - name: build run: | + cd optimization-cloth-tutorial cmake -DCLOTH_DEBUG=ON . make -j From faffef56a49c86b1bd36434da2ee293410872ec7 Mon Sep 17 00:00:00 2001 From: mattoverby Date: Thu, 21 Aug 2025 11:28:36 -0500 Subject: [PATCH 6/9] updated github action --- .github/workflows/build_and_test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index f8969bd..c723464 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -20,8 +20,8 @@ jobs: sudo apt-get install -y build-essential cmake - name: build + working-directory: ${{ github.workspace }}/optimization-cloth-tutorial run: | - cd optimization-cloth-tutorial cmake -DCLOTH_DEBUG=ON . make -j From 467a7ab181211efbff8e97cdf2ff6defa67dc852 Mon Sep 17 00:00:00 2001 From: mattoverby Date: Thu, 21 Aug 2025 11:34:13 -0500 Subject: [PATCH 7/9] updated github action --- .github/workflows/build_and_test.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index c723464..b3281c5 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -20,10 +20,11 @@ jobs: sudo apt-get install -y build-essential cmake - name: build - working-directory: ${{ github.workspace }}/optimization-cloth-tutorial + working-directory: ${{ github.workspace }} run: | cmake -DCLOTH_DEBUG=ON . make -j - name: test + working-directory: ${{ github.workspace }} run: make test From 43f1e8503dc22ae6cef15a0327bbf9ff9787def3 Mon Sep 17 00:00:00 2001 From: mattoverby Date: Thu, 21 Aug 2025 12:49:02 -0500 Subject: [PATCH 8/9] added cmakelists --- CMakeLists.txt | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 CMakeLists.txt diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..f969716 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,42 @@ +# Copyright Matt Overby 2021. +# Distributed under the MIT License. +cmake_minimum_required(VERSION 3.5) + +project(cloth_sim_tutorial LANGUAGES CXX) + +option(CLOTH_DEBUG "run with debug options" OFF) +set(CMAKE_CXX_STANDARD 14) +set(CMAKE_CXX_STANDARD_REQUIRED ON) +list(PREPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake) +add_definitions(-DCLOTH_ROOT_DIR="${CMAKE_CURRENT_SOURCE_DIR}") + +# Change compile flags for debug +if (CLOTH_DEBUG) + add_definitions(-DCLOTH_DEBUG) + set(CMAKE_BUILD_TYPE Debug) + if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wundef -Wextra -Wno-long-long -Wlogical-op -Wshadow -Wmaybe-uninitialized") + endif() +else() + set(CMAKE_BUILD_TYPE Release) +endif() + +# Libigl also includes Eigen, etc +include(libigl) +igl_include(glfw) + +# Gather src +include_directories(${CMAKE_CURRENT_SOURCE_DIR}/src) +file(GLOB SRC + ${CMAKE_CURRENT_SOURCE_DIR}/src/*.hpp + ${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp) + +# Create binary +add_executable(${PROJECT_NAME} ${SRC}) +target_link_libraries(${PROJECT_NAME} PUBLIC igl::glfw) + +# Unit testing (work in progress) +enable_testing() +add_executable(cloth_test ${CMAKE_CURRENT_SOURCE_DIR}/test/test.cpp) +target_link_libraries(cloth_test PUBLIC igl::glfw) +add_test(NAME TestClothSolver COMMAND cloth_test) From 35d10af6f77fe2c92a1c5aad2c6d19ca359c12c0 Mon Sep 17 00:00:00 2001 From: mattoverby Date: Thu, 21 Aug 2025 12:55:33 -0500 Subject: [PATCH 9/9] cloth test only flag --- .github/workflows/build_and_test.yml | 2 +- CMakeLists.txt | 12 ++++++++---- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index b3281c5..9514767 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -22,7 +22,7 @@ jobs: - name: build working-directory: ${{ github.workspace }} run: | - cmake -DCLOTH_DEBUG=ON . + cmake -DCLOTH_TESTING_ONLY=ON . make -j - name: test diff --git a/CMakeLists.txt b/CMakeLists.txt index f969716..40242ff 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -5,6 +5,8 @@ cmake_minimum_required(VERSION 3.5) project(cloth_sim_tutorial LANGUAGES CXX) option(CLOTH_DEBUG "run with debug options" OFF) +option(CLOTH_TESTING_ONLY "only compile unit tests" OFF) + set(CMAKE_CXX_STANDARD 14) set(CMAKE_CXX_STANDARD_REQUIRED ON) list(PREPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake) @@ -23,7 +25,6 @@ endif() # Libigl also includes Eigen, etc include(libigl) -igl_include(glfw) # Gather src include_directories(${CMAKE_CURRENT_SOURCE_DIR}/src) @@ -32,11 +33,14 @@ file(GLOB SRC ${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp) # Create binary -add_executable(${PROJECT_NAME} ${SRC}) -target_link_libraries(${PROJECT_NAME} PUBLIC igl::glfw) +if (NOT CLOTH_TESTING_ONLY) + igl_include(glfw) + add_executable(${PROJECT_NAME} ${SRC}) + target_link_libraries(${PROJECT_NAME} PUBLIC igl::glfw) +endif() # Unit testing (work in progress) enable_testing() add_executable(cloth_test ${CMAKE_CURRENT_SOURCE_DIR}/test/test.cpp) -target_link_libraries(cloth_test PUBLIC igl::glfw) +target_link_libraries(cloth_test PUBLIC igl::core) add_test(NAME TestClothSolver COMMAND cloth_test)