diff --git a/examples/CGAL/README.txt b/examples/CGAL/README.txt new file mode 100644 index 00000000..fd036c52 --- /dev/null +++ b/examples/CGAL/README.txt @@ -0,0 +1,5 @@ +This folder presents two simple modules using CGAL bindings allowing for easy tetrahedric mesh generation from either a polyhedron of its surface or a point cloud (using a convexe hull). + +You can you this through the two mains (mesh_from_point_cloud_using_convex_hull.py and mesh_from_polyhedron.py) through command line (use -h for more information) or simply use the cgal_utils.py module if you want to build new scripts upon this work. The most important class being CGAL_Mesh_3_IO_Util heping to deal with the CGal data structure and use they results as numpy array. To see usage example, see mesh_from_polyhedron.py:CGAL_Mesh_from_polyhedron(). + +Those scripts are here to replace the components MeshGenerationFromPolyhedron and TriangularConvexHull3D from the CGALPLugin https://github.com/sofa-framework/CGALPlugin diff --git a/examples/CGAL/cgal_utils.py b/examples/CGAL/cgal_utils.py new file mode 100644 index 00000000..97b096c7 --- /dev/null +++ b/examples/CGAL/cgal_utils.py @@ -0,0 +1,259 @@ +from CGAL.CGAL_Polyhedron_3 import Polyhedron_3, Polyhedron_modifier +from CGAL.CGAL_Mesh_3 import Mesh_3_Complex_3_in_triangulation_3 +from CGAL.CGAL_Mesh_3 import Polyhedral_mesh_domain_3 +from CGAL.CGAL_Mesh_3 import Mesh_3_parameters +from CGAL.CGAL_Mesh_3 import Default_mesh_criteria +from CGAL.CGAL_Kernel import Point_3 +from CGAL import CGAL_Mesh_3 + +import numpy as np +import dataclasses +from typing import List, Optional + +from enum import Enum +from pathlib import Path + +import time + +from vtkmodules.vtkIOGeometry import ( + vtkBYUReader, + vtkOBJReader, + vtkSTLReader + ) +from vtkmodules.vtkIOLegacy import vtkPolyDataReader +from vtkmodules.vtkIOPLY import vtkPLYReader +from vtkmodules.vtkIOXML import vtkXMLPolyDataReader + +import vtk +from vtk.util import numpy_support +from vtk.numpy_interface import algorithms as algs + +timestamp = {} + +def tic(hash = 0): + global timestamp + timestamp[hash] = time.time_ns() + +def toc(hash = 0): + global timestamp + return f"{((time.time_ns() - timestamp[hash])/1000000):.3f} miliseconds" + + +def ReadPolyData(file_name): + #FROM Vtk examples https://examples.vtk.org/site/Python/Snippets/ReadPolyData/ + + valid_suffixes = ['.g', '.obj', '.stl', '.ply', '.vtk', '.vtp'] + + path = Path(file_name) + if path.suffix: + ext = path.suffix.lower() + if path.suffix not in valid_suffixes: + print(f'No reader for this file suffix: {ext}') + return None + else: + if ext == ".ply": + reader = vtkPLYReader() + reader.SetFileName(file_name) + reader.Update() + poly_data = reader.GetOutput() + elif ext == ".vtp": + reader = vtkXMLPolyDataReader() + reader.SetFileName(file_name) + reader.Update() + poly_data = reader.GetOutput() + elif ext == ".obj": + reader = vtkOBJReader() + reader.SetFileName(file_name) + reader.Update() + poly_data = reader.GetOutput() + elif ext == ".stl": + reader = vtkSTLReader() + reader.SetFileName(file_name) + reader.Update() + poly_data = reader.GetOutput() + elif ext == ".vtk": + reader = vtkPolyDataReader() + reader.SetFileName(file_name) + reader.Update() + poly_data = reader.GetOutput() + elif ext == ".g": + reader = vtkBYUReader() + reader.SetGeometryFileName(file_name) + reader.Update() + poly_data = reader.GetOutput() + + return poly_data + + +class CGAL_Mesh_3_IO_Util(object): + + points : np.array + triangles : np.array + tetras : np.array + + class Elem(Enum): + POINTS = 1 + TRIANGLES = 3 + TETRA = 4 + + def __init__(self,mesh): + self.mesh = mesh + + def extract(self, elems : list[Elem]): + + print(f"Extracting data into numpy objects...") + tic() + + for elem in elems: + vnbe = {} + match elem: + case CGAL_Mesh_3_IO_Util.Elem.TRIANGLES: + for elemf in self.mesh.facets(): + for i in range(3): + if not elemf.vertex in vnbe: + vnbe[elemf.vertex(i)] = 1 + else: + vnbe[elem.vertex(i)] += 1 + case CGAL_Mesh_3_IO_Util.Elem.TETRA: + for elemc in self.mesh.cells(): + for i in range(4): + if not elemc.vertex in vnbe: + vnbe[elemc.vertex(i)] = 1 + else: + vnbe[elemc.vertex(i)] += 1 + + + V = {} + it = 0 + for vertice in self.mesh.triangulation().finite_vertices(): + if vertice in vnbe: + V[vertice] = it + it += 1 + + if CGAL_Mesh_3_IO_Util.Elem.POINTS in elems: + self.points = np.empty((len(V),3)) + id = 0 + for key in V.keys(): + self.points[id][:] = [self.mesh.triangulation().point(key).x(), self.mesh.triangulation().point(key).y(), self.mesh.triangulation().point(key).z()] + id+=1 + + match elem: + case CGAL_Mesh_3_IO_Util.Elem.TRIANGLES: + self.triangles = np.empty((self.mesh.number_of_facets(),3), dtype=np.int32) + id = 0 + for elemt in self.mesh.facets(): + self.triangles[id][:] = [V[elemt.vertex(0)],V[elemt.vertex(1)],V[elemt.vertex(2)]] + id+= 1 + case CGAL_Mesh_3_IO_Util.Elem.TETRA: + self.tetras = np.empty((self.mesh.number_of_cells(),4), dtype=np.int32) + id = 0 + for elemc in self.mesh.cells(): + self.tetras[id][:] = [V[elemc.vertex(0)],V[elemc.vertex(1)],V[elemc.vertex(2)], V[elemc.vertex(3)]] + id += 1 + print(f"Done ! Took {toc()}") + if CGAL_Mesh_3_IO_Util.Elem.TRIANGLES in elems: + print(f"Extracted {self.points.shape[0]} points and {self.triangles.shape[0]} triangles") + if CGAL_Mesh_3_IO_Util.Elem.TETRA in elems: + print(f"Extracted {self.points.shape[0]} points and {self.tetras.shape[0]} tetras") + + + + def write_out(self, filename): + path = Path(filename) + ext = path.suffix.lower() + if ext != ".vtk" and ext != ".vtu": + print("Only vtk or vtu extension are suported") + return + + if (not "tetras" in self.__dict__) and ext == ".vtu": + print("VTU only supported for tetrahedral meshes. Use vtk instead") + return + + print(f"Saving into {filename}...") + tic() + + if "tetras" in self.__dict__: + ugrid = vtk.vtkUnstructuredGrid() + else: + ugrid = vtk.vtkPolyData() + + vtk_points = vtk.vtkPoints() + vtk_points.SetData(numpy_support.numpy_to_vtk(self.points, deep=True)) + ugrid.SetPoints(vtk_points) + + + if "triangles" in self.__dict__: + for triangle in self.triangles: + vtkTriangleObj = vtk.vtkTriangle() + vtkTriangleObj.GetPointIds().SetId(0,triangle[0]) + vtkTriangleObj.GetPointIds().SetId(1,triangle[1]) + vtkTriangleObj.GetPointIds().SetId(2,triangle[2]) + ugrid.InsertNextCell(vtkTriangleObj.GetCellType(), vtkTriangleObj.GetPointIds()) + if "tetras" in self.__dict__: + for tetra in self.tetras: + vtkTetraObj = vtk.vtkTetra() + vtkTetraObj.GetPointIds().SetId(0,tetra[0]) + vtkTetraObj.GetPointIds().SetId(1,tetra[1]) + vtkTetraObj.GetPointIds().SetId(2,tetra[2]) + vtkTetraObj.GetPointIds().SetId(3,tetra[3]) + ugrid.InsertNextCell(vtkTetraObj.GetCellType(), vtkTetraObj.GetPointIds()) + + + if "tetras" in self.__dict__: + writer = vtk.vtkUnstructuredGridWriter() + else: + writer = vtk.vtkPolyDataWriter() + writer.SetFileVersion(42) + writer.SetInputData(ugrid) + writer.SetFileName(filename) + writer.Write() + print(f"Done ! Took {toc()}") + + + + + +class CGAL_Mesh_from(object): + + class Refiner(Enum): + NONE = 0 + LLOYD = 1 + ODT = 3 + PERTURB = 4 + + @dataclasses.dataclass + class Refiner_input(): + refiner_type : Enum + + time_limit : Optional[float] = 20.0 #(ALL) to set up, in seconds, a CPU time limit after which the optimization process is stopped. This time is measured using CGAL::Real_timer. 0 means that there is no time limit. + max_iteration_number : Optional[int] = 200 #(LLOYD & ODT only) limit on the number of performed iterations. 0 means that there is no limit on the number of performed iterations. + convergence : Optional[int] = 0.0 #(LLOYD & ODT only) threshold ratio of stopping criterion based on convergence: the optimization process is stopped when at the last iteration the displacement of any vertex is less than a given fraction of the length of the shortest edge incident to that vertex. + free_bound : Optional[bool] = False #(LLOYD & ODT only) designed to reduce running time of each optimization iteration. Any vertex that has a displacement less than a given fraction of the length of its shortest incident edge, is frozen (i.e. is not relocated). The parameter freeze_bound gives the threshold ratio. If it is set to 0, freezing of vertices is disabled. + silver_bound : Optional[bool] = False #(PERTURB only) is designed to give, in degrees, a targeted lower bound on dihedral angles of mesh cells. The exudation process considers in turn all the mesh cells that have a smallest dihedral angle less than sliver_bound and tries to make them disappear by weighting their vertices. The optimization process stops when every cell in the mesh achieves this quality. The default value is 0 and means that there is no targeted bound: the exuder then runs as long as it can improve the smallest dihedral angles of the set of cells incident to some vertices. + + + IOUtil : CGAL_Mesh_3_IO_Util + + def __init__(self): + pass + + def generate(self): + pass + + + def __getattr__(self, name): + match name: + case "points": + return self.IOUtil.points + case "triangles": + return self.IOUtil.triangles + case "tetras": + return self.IOUtil.tetras + case _: + if name in self.__dict__: + return self.__dict__[name] + else: + raise AttributeError() + + + diff --git a/examples/CGAL/data/point_cloud.pcd b/examples/CGAL/data/point_cloud.pcd new file mode 100644 index 00000000..f6f48c52 Binary files /dev/null and b/examples/CGAL/data/point_cloud.pcd differ diff --git a/examples/CGAL/data/torus.obj b/examples/CGAL/data/torus.obj new file mode 100644 index 00000000..9ac9ddbf --- /dev/null +++ b/examples/CGAL/data/torus.obj @@ -0,0 +1,3263 @@ +# This file uses centimeters as units for non-parametric coordinates. + +v 1.434962 -0.000000 -0.156434 +v 1.381741 -0.000000 -0.309017 +v 1.294498 -0.000000 -0.453991 +v 1.175380 -0.000000 -0.587785 +v 1.027319 -0.000000 -0.707107 +v 0.853963 -0.000000 -0.809017 +v 0.659580 -0.000000 -0.891007 +v 0.448955 -0.000000 -0.951057 +v 0.227276 -0.000000 -0.987689 +v 0.000001 -0.000000 -1.000001 +v -0.221675 -0.000000 -0.987689 +v -0.437893 -0.000000 -0.951057 +v -0.643328 -0.000000 -0.891007 +v -0.832923 -0.000000 -0.809018 +v -1.002008 -0.000000 -0.707107 +v -1.146420 -0.000000 -0.587786 +v -1.262604 -0.000000 -0.453991 +v -1.347697 -0.000000 -0.309017 +v -1.399607 -0.000000 -0.156435 +v -1.417053 -0.000000 -0.000000 +v -1.399607 -0.000000 0.156434 +v -1.347698 -0.000000 0.309017 +v -1.262604 -0.000000 0.453991 +v -1.146420 -0.000000 0.587785 +v -1.002008 -0.000000 0.707107 +v -0.832923 -0.000000 0.809017 +v -0.643329 -0.000000 0.891007 +v -0.437893 -0.000000 0.951057 +v -0.221676 -0.000000 0.987688 +v 0.000000 -0.000000 1.000000 +v 0.227275 -0.000000 0.987688 +v 0.448955 -0.000000 0.951057 +v 0.659579 -0.000000 0.891007 +v 0.853962 -0.000000 0.809017 +v 1.027318 -0.000000 0.707107 +v 1.175378 -0.000000 0.587785 +v 1.294497 -0.000000 0.453991 +v 1.381740 -0.000000 0.309017 +v 1.434960 -0.000000 0.156434 +v 1.452847 -0.000000 -0.000000 +v 1.464707 0.154509 -0.160262 +v 1.415555 0.154509 -0.316579 +v 1.326176 0.154509 -0.465101 +v 1.204143 0.154509 -0.602170 +v 1.052460 0.154509 -0.724411 +v 0.874861 0.154509 -0.828815 +v 0.675721 0.154509 -0.912811 +v 0.459942 0.154509 -0.974331 +v 0.232838 0.154509 -1.011859 +v 0.000001 0.154509 -1.024472 +v -0.227100 0.154509 -1.011859 +v -0.448609 0.154509 -0.974331 +v -0.659072 0.154509 -0.912812 +v -0.853306 0.154509 -0.828816 +v -1.026529 0.154509 -0.724411 +v -1.174475 0.154509 -0.602170 +v -1.293502 0.154509 -0.465101 +v -1.380678 0.154509 -0.316580 +v -1.428912 0.154509 -0.160263 +v -1.441525 0.154509 -0.000000 +v -1.428912 0.154509 0.160263 +v -1.380678 0.154509 0.316579 +v -1.293502 0.154509 0.465100 +v -1.174475 0.154509 0.602169 +v -1.026529 0.154509 0.724411 +v -0.853306 0.154509 0.828815 +v -0.659072 0.154509 0.912811 +v -0.448609 0.154509 0.974331 +v -0.227101 0.154509 1.011859 +v 0.000000 0.154509 1.024472 +v 0.232837 0.154509 1.011859 +v 0.459941 0.154509 0.974331 +v 0.675720 0.154509 0.912811 +v 0.874860 0.154509 0.828815 +v 1.052459 0.154509 0.724411 +v 1.204142 0.154509 0.602169 +v 1.326175 0.154509 0.465100 +v 1.415554 0.154509 0.316579 +v 1.464706 0.154509 0.160263 +v 1.477319 0.154509 -0.000000 +v 1.534852 0.293893 -0.171372 +v 1.494722 0.293893 -0.338525 +v 1.418111 0.293893 -0.497343 +v 1.287618 0.293893 -0.643914 +v 1.125419 0.293893 -0.774630 +v 0.935509 0.293893 -0.886272 +v 0.722564 0.293893 -0.976090 +v 0.491827 0.293893 -1.041875 +v 0.248979 0.293893 -1.082005 +v 0.000001 0.293893 -1.095492 +v -0.242844 0.293893 -1.082005 +v -0.479708 0.293893 -1.041875 +v -0.704761 0.293893 -0.976091 +v -0.912460 0.293893 -0.886272 +v -1.097691 0.293893 -0.774630 +v -1.255893 0.293893 -0.643914 +v -1.383171 0.293893 -0.497343 +v -1.458928 0.293893 -0.338526 +v -1.499057 0.293893 -0.171373 +v -1.512545 0.293893 -0.000000 +v -1.499057 0.293893 0.171372 +v -1.458928 0.293893 0.338525 +v -1.383171 0.293893 0.497343 +v -1.255893 0.293893 0.643914 +v -1.097691 0.293893 0.774630 +v -0.912460 0.293893 0.886271 +v -0.704761 0.293893 0.976090 +v -0.479708 0.293893 1.041874 +v -0.242844 0.293893 1.082004 +v 0.000000 0.293893 1.095492 +v 0.248978 0.293893 1.082004 +v 0.491826 0.293893 1.041874 +v 0.722563 0.293893 0.976090 +v 0.935508 0.293893 0.886271 +v 1.125418 0.293893 0.774629 +v 1.287617 0.293893 0.643914 +v 1.418110 0.293893 0.497343 +v 1.494722 0.293893 0.338526 +v 1.534851 0.293893 0.171373 +v 1.548339 0.293893 -0.000000 +v 1.644107 0.404509 -0.188676 +v 1.599925 0.404509 -0.372708 +v 1.527498 0.404509 -0.547561 +v 1.417634 0.404509 -0.708932 +v 1.239057 0.404509 -0.852847 +v 1.029971 0.404509 -0.975762 +v 0.795524 0.404509 -1.074650 +v 0.541488 0.404509 -1.147077 +v 0.274119 0.404509 -1.191259 +v 0.000001 0.404509 -1.206108 +v -0.267364 0.404509 -1.191259 +v -0.528146 0.404509 -1.147077 +v -0.775923 0.404509 -1.074650 +v -1.004594 0.404509 -0.975762 +v -1.208529 0.404509 -0.852847 +v -1.382706 0.404509 -0.708933 +v -1.491703 0.404509 -0.547562 +v -1.564130 0.404509 -0.372708 +v -1.608311 0.404509 -0.188677 +v -1.623161 0.404509 -0.000000 +v -1.608311 0.404509 0.188677 +v -1.564130 0.404509 0.372708 +v -1.491703 0.404509 0.547561 +v -1.382706 0.404509 0.708932 +v -1.208529 0.404509 0.852847 +v -1.004594 0.404509 0.975762 +v -0.775923 0.404509 1.074650 +v -0.528147 0.404509 1.147076 +v -0.267365 0.404509 1.191258 +v 0.000000 0.404509 1.206107 +v 0.274119 0.404509 1.191258 +v 0.541487 0.404509 1.147076 +v 0.795523 0.404509 1.074650 +v 1.029970 0.404509 0.975761 +v 1.239056 0.404509 0.852847 +v 1.417632 0.404509 0.708932 +v 1.527497 0.404509 0.547561 +v 1.599924 0.404509 0.372708 +v 1.644106 0.404509 0.188677 +v 1.658955 0.404509 -0.000000 +v 1.781775 0.475528 -0.210481 +v 1.732487 0.475528 -0.415780 +v 1.651690 0.475528 -0.610840 +v 1.541374 0.475528 -0.790860 +v 1.382249 0.475528 -0.951407 +v 1.149000 0.475528 -1.088526 +v 0.887459 0.475528 -1.198842 +v 0.604066 0.475528 -1.279639 +v 0.305798 0.475528 -1.328927 +v 0.000001 0.475528 -1.345492 +v -0.298263 0.475528 -1.328927 +v -0.589182 0.475528 -1.279639 +v -0.865593 0.475528 -1.198843 +v -1.120691 0.475528 -1.088526 +v -1.348193 0.475528 -0.951407 +v -1.505579 0.475528 -0.790861 +v -1.615895 0.475528 -0.610841 +v -1.696692 0.475528 -0.415780 +v -1.745980 0.475528 -0.210482 +v -1.762545 0.475528 -0.000000 +v -1.745980 0.475528 0.210481 +v -1.696692 0.475528 0.415780 +v -1.615895 0.475528 0.610840 +v -1.505579 0.475528 0.790860 +v -1.348193 0.475528 0.951406 +v -1.120691 0.475528 1.088526 +v -0.865593 0.475528 1.198842 +v -0.589182 0.475528 1.279639 +v -0.298263 0.475528 1.328926 +v 0.000000 0.475528 1.345492 +v 0.305797 0.475528 1.328926 +v 0.604065 0.475528 1.279639 +v 0.887458 0.475528 1.198842 +v 1.148999 0.475528 1.088526 +v 1.382248 0.475528 0.951406 +v 1.541373 0.475528 0.790860 +v 1.651689 0.475528 0.610840 +v 1.732486 0.475528 0.415780 +v 1.781774 0.475528 0.210481 +v 1.798339 0.475528 -0.000000 +v 1.934381 0.500000 -0.234651 +v 1.879433 0.500000 -0.463525 +v 1.789358 0.500000 -0.680986 +v 1.666374 0.500000 -0.881678 +v 1.513509 0.500000 -1.060661 +v 1.280945 0.500000 -1.213526 +v 0.989370 0.500000 -1.336510 +v 0.673433 0.500000 -1.426586 +v 0.340914 0.500000 -1.481533 +v 0.000001 0.500000 -1.500001 +v -0.332513 0.500000 -1.481533 +v -0.656840 0.500000 -1.426586 +v -0.964993 0.500000 -1.336511 +v -1.249384 0.500000 -1.213526 +v -1.477713 0.500000 -1.060661 +v -1.630579 0.500000 -0.881679 +v -1.753563 0.500000 -0.680986 +v -1.843638 0.500000 -0.463526 +v -1.898586 0.500000 -0.234652 +v -1.917053 0.500000 -0.000000 +v -1.898586 0.500000 0.234652 +v -1.843638 0.500000 0.463525 +v -1.753563 0.500000 0.680986 +v -1.630579 0.500000 0.881678 +v -1.477713 0.500000 1.060660 +v -1.249384 0.500000 1.213526 +v -0.964993 0.500000 1.336510 +v -0.656840 0.500000 1.426585 +v -0.332514 0.500000 1.481533 +v 0.000000 0.500000 1.500000 +v 0.340913 0.500000 1.481533 +v 0.673432 0.500000 1.426585 +v 0.989368 0.500000 1.336510 +v 1.280943 0.500000 1.213526 +v 1.513507 0.500000 1.060660 +v 1.666373 0.500000 0.881678 +v 1.789357 0.500000 0.680986 +v 1.879432 0.500000 0.463526 +v 1.934380 0.500000 0.234652 +v 1.952847 0.500000 -0.000000 +v 2.086987 0.475528 -0.258822 +v 2.026380 0.475528 -0.511271 +v 1.927027 0.475528 -0.751131 +v 1.791374 0.475528 -0.972496 +v 1.622763 0.475528 -1.169915 +v 1.412889 0.475528 -1.338526 +v 1.091280 0.475528 -1.474179 +v 0.742800 0.475528 -1.573532 +v 0.376030 0.475528 -1.634140 +v 0.000001 0.475528 -1.654509 +v -0.366764 0.475528 -1.634140 +v -0.724498 0.475528 -1.573532 +v -1.064392 0.475528 -1.474179 +v -1.378078 0.475528 -1.338526 +v -1.586967 0.475528 -1.169915 +v -1.755579 0.475528 -0.972496 +v -1.891231 0.475528 -0.751132 +v -1.990584 0.475528 -0.511272 +v -2.051192 0.475528 -0.258823 +v -2.071562 0.475528 -0.000000 +v -2.051192 0.475528 0.258822 +v -1.990585 0.475528 0.511271 +v -1.891231 0.475528 0.751131 +v -1.755579 0.475528 0.972496 +v -1.586967 0.475528 1.169914 +v -1.378078 0.475528 1.338526 +v -1.064393 0.475528 1.474178 +v -0.724498 0.475528 1.573531 +v -0.366765 0.475528 1.634139 +v 0.000000 0.475528 1.654509 +v 0.376029 0.475528 1.634139 +v 0.742799 0.475528 1.573531 +v 1.091279 0.475528 1.474178 +v 1.412888 0.475528 1.338526 +v 1.622761 0.475528 1.169914 +v 1.791373 0.475528 0.972496 +v 1.927025 0.475528 0.751131 +v 2.026378 0.475528 0.511271 +v 2.086986 0.475528 0.258822 +v 2.107356 0.475528 -0.000000 +v 2.224656 0.404509 -0.280626 +v 2.158942 0.404509 -0.554343 +v 2.051219 0.404509 -0.814410 +v 1.904138 0.404509 -1.054424 +v 1.721322 0.404509 -1.268474 +v 1.507272 0.404509 -1.451290 +v 1.183215 0.404509 -1.598371 +v 0.805378 0.404509 -1.706094 +v 0.407709 0.404509 -1.771808 +v 0.000001 0.404509 -1.793894 +v -0.397662 0.404509 -1.771808 +v -0.785533 0.404509 -1.706094 +v -1.154062 0.404509 -1.598371 +v -1.471477 0.404509 -1.451291 +v -1.685527 0.404509 -1.268475 +v -1.868343 0.404509 -1.054425 +v -2.015423 0.404509 -0.814411 +v -2.123147 0.404509 -0.554344 +v -2.188860 0.404509 -0.280627 +v -2.210946 0.404509 -0.000000 +v -2.188860 0.404509 0.280626 +v -2.123147 0.404509 0.554343 +v -2.015424 0.404509 0.814410 +v -1.868343 0.404509 1.054424 +v -1.685527 0.404509 1.268474 +v -1.471477 0.404509 1.451290 +v -1.154063 0.404509 1.598370 +v -0.785534 0.404509 1.706094 +v -0.397663 0.404509 1.771807 +v 0.000000 0.404509 1.793893 +v 0.407708 0.404509 1.771807 +v 0.805376 0.404509 1.706093 +v 1.183214 0.404509 1.598370 +v 1.507271 0.404509 1.451290 +v 1.721321 0.404509 1.268474 +v 1.904137 0.404509 1.054424 +v 2.051217 0.404509 0.814410 +v 2.158941 0.404509 0.554343 +v 2.224654 0.404509 0.280627 +v 2.246740 0.404509 -0.000000 +v 2.333910 0.293893 -0.297930 +v 2.264144 0.293893 -0.588525 +v 2.149778 0.293893 -0.864629 +v 1.993629 0.293893 -1.119442 +v 1.799540 0.293893 -1.346691 +v 1.572291 0.293893 -1.540781 +v 1.256175 0.293893 -1.696930 +v 0.855039 0.293893 -1.811296 +v 0.432849 0.293893 -1.881062 +v 0.000001 0.293893 -1.904510 +v -0.422183 0.293893 -1.881062 +v -0.833971 0.293893 -1.811296 +v -1.225224 0.293893 -1.696931 +v -1.536495 0.293893 -1.540781 +v -1.763744 0.293893 -1.346692 +v -1.957833 0.293893 -1.119443 +v -2.113983 0.293893 -0.864630 +v -2.228349 0.293893 -0.588526 +v -2.298114 0.293893 -0.297931 +v -2.321562 0.293893 -0.000000 +v -2.298115 0.293893 0.297931 +v -2.228349 0.293893 0.588525 +v -2.113983 0.293893 0.864629 +v -1.957833 0.293893 1.119442 +v -1.763744 0.293893 1.346691 +v -1.536495 0.293893 1.540780 +v -1.225225 0.293893 1.696930 +v -0.833972 0.293893 1.811296 +v -0.422184 0.293893 1.881061 +v 0.000000 0.293893 1.904509 +v 0.432848 0.293893 1.881061 +v 0.855038 0.293893 1.811296 +v 1.256174 0.293893 1.696930 +v 1.572289 0.293893 1.540780 +v 1.799538 0.293893 1.346691 +v 1.993627 0.293893 1.119442 +v 2.149777 0.293893 0.864629 +v 2.264143 0.293893 0.588526 +v 2.333908 0.293893 0.297931 +v 2.357356 0.293893 -0.000000 +v 2.404055 0.154509 -0.309040 +v 2.331688 0.154509 -0.610472 +v 2.213058 0.154509 -0.896871 +v 2.051085 0.154509 -1.161187 +v 1.849758 0.154509 -1.396910 +v 1.614035 0.154509 -1.598237 +v 1.303019 0.154509 -1.760209 +v 0.886924 0.154509 -1.878840 +v 0.448990 0.154509 -1.951207 +v 0.000001 0.154509 -1.975530 +v -0.437926 0.154509 -1.951208 +v -0.865070 0.154509 -1.878840 +v -1.270914 0.154509 -1.760210 +v -1.578240 0.154509 -1.598237 +v -1.813963 0.154509 -1.396911 +v -2.015289 0.154509 -1.161187 +v -2.177262 0.154509 -0.896872 +v -2.295892 0.154509 -0.610472 +v -2.368260 0.154509 -0.309041 +v -2.392582 0.154509 -0.000000 +v -2.368260 0.154509 0.309041 +v -2.295893 0.154509 0.610472 +v -2.177262 0.154509 0.896871 +v -2.015290 0.154509 1.161187 +v -1.813963 0.154509 1.396910 +v -1.578240 0.154509 1.598236 +v -1.270914 0.154509 1.760209 +v -0.865071 0.154509 1.878839 +v -0.437927 0.154509 1.951207 +v 0.000000 0.154509 1.975529 +v 0.448989 0.154509 1.951206 +v 0.886922 0.154509 1.878839 +v 1.303017 0.154509 1.760209 +v 1.614034 0.154509 1.598236 +v 1.849757 0.154509 1.396910 +v 2.051083 0.154509 1.161187 +v 2.213056 0.154509 0.896871 +v 2.331686 0.154509 0.610472 +v 2.404054 0.154509 0.309041 +v 2.428376 0.154509 -0.000000 +v 2.428226 -0.000000 -0.312869 +v 2.354962 -0.000000 -0.618034 +v 2.234862 -0.000000 -0.907981 +v 2.070883 -0.000000 -1.175571 +v 1.867062 -0.000000 -1.414214 +v 1.628419 -0.000000 -1.618035 +v 1.319160 -0.000000 -1.782014 +v 0.897911 -0.000000 -1.902114 +v 0.454552 -0.000000 -1.975378 +v 0.000001 -0.000000 -2.000001 +v -0.443351 -0.000000 -1.975378 +v -0.875786 -0.000000 -1.902114 +v -1.286657 -0.000000 -1.782014 +v -1.592623 -0.000000 -1.618035 +v -1.831267 -0.000000 -1.414215 +v -2.035087 -0.000000 -1.175571 +v -2.199066 -0.000000 -0.907982 +v -2.319166 -0.000000 -0.618035 +v -2.392430 -0.000000 -0.312869 +v -2.417053 -0.000000 -0.000000 +v -2.392430 -0.000000 0.312869 +v -2.319167 -0.000000 0.618034 +v -2.199067 -0.000000 0.907981 +v -2.035087 -0.000000 1.175571 +v -1.831267 -0.000000 1.414214 +v -1.592624 -0.000000 1.618034 +v -1.286657 -0.000000 1.782013 +v -0.875787 -0.000000 1.902113 +v -0.443352 -0.000000 1.975377 +v 0.000000 -0.000000 2.000000 +v 0.454551 -0.000000 1.975377 +v 0.897909 -0.000000 1.902113 +v 1.319158 -0.000000 1.782013 +v 1.628418 -0.000000 1.618034 +v 1.867061 -0.000000 1.414214 +v 2.070881 -0.000000 1.175571 +v 2.234860 -0.000000 0.907981 +v 2.354960 -0.000000 0.618034 +v 2.428224 -0.000000 0.312869 +v 2.452847 -0.000000 -0.000000 +v 2.404055 -0.154509 -0.309040 +v 2.331688 -0.154509 -0.610472 +v 2.213058 -0.154509 -0.896871 +v 2.051085 -0.154509 -1.161187 +v 1.849758 -0.154509 -1.396910 +v 1.614035 -0.154509 -1.598237 +v 1.303019 -0.154509 -1.760209 +v 0.886924 -0.154509 -1.878840 +v 0.448990 -0.154509 -1.951207 +v 0.000001 -0.154509 -1.975530 +v -0.437926 -0.154509 -1.951208 +v -0.865070 -0.154509 -1.878840 +v -1.270914 -0.154509 -1.760210 +v -1.578240 -0.154509 -1.598237 +v -1.813963 -0.154509 -1.396911 +v -2.015289 -0.154509 -1.161187 +v -2.177262 -0.154509 -0.896872 +v -2.295892 -0.154509 -0.610472 +v -2.368260 -0.154509 -0.309041 +v -2.392582 -0.154509 -0.000000 +v -2.368260 -0.154509 0.309041 +v -2.295893 -0.154509 0.610472 +v -2.177262 -0.154509 0.896871 +v -2.015290 -0.154509 1.161187 +v -1.813963 -0.154509 1.396910 +v -1.578240 -0.154509 1.598236 +v -1.270914 -0.154509 1.760209 +v -0.865071 -0.154509 1.878839 +v -0.437927 -0.154509 1.951207 +v 0.000000 -0.154509 1.975529 +v 0.448989 -0.154509 1.951206 +v 0.886922 -0.154509 1.878839 +v 1.303017 -0.154509 1.760209 +v 1.614034 -0.154509 1.598236 +v 1.849757 -0.154509 1.396910 +v 2.051083 -0.154509 1.161187 +v 2.213056 -0.154509 0.896871 +v 2.331686 -0.154509 0.610472 +v 2.404054 -0.154509 0.309041 +v 2.428376 -0.154509 -0.000000 +v 2.333910 -0.293893 -0.297930 +v 2.264144 -0.293893 -0.588525 +v 2.149778 -0.293893 -0.864629 +v 1.993629 -0.293893 -1.119442 +v 1.799540 -0.293893 -1.346691 +v 1.572291 -0.293893 -1.540781 +v 1.256175 -0.293893 -1.696930 +v 0.855039 -0.293893 -1.811296 +v 0.432849 -0.293893 -1.881062 +v 0.000001 -0.293893 -1.904510 +v -0.422183 -0.293893 -1.881062 +v -0.833971 -0.293893 -1.811296 +v -1.225224 -0.293893 -1.696931 +v -1.536495 -0.293893 -1.540781 +v -1.763744 -0.293893 -1.346692 +v -1.957833 -0.293893 -1.119443 +v -2.113983 -0.293893 -0.864630 +v -2.228349 -0.293893 -0.588526 +v -2.298114 -0.293893 -0.297931 +v -2.321562 -0.293893 -0.000000 +v -2.298115 -0.293893 0.297931 +v -2.228349 -0.293893 0.588525 +v -2.113983 -0.293893 0.864629 +v -1.957833 -0.293893 1.119442 +v -1.763744 -0.293893 1.346691 +v -1.536495 -0.293893 1.540780 +v -1.225225 -0.293893 1.696930 +v -0.833972 -0.293893 1.811296 +v -0.422184 -0.293893 1.881061 +v 0.000000 -0.293893 1.904509 +v 0.432848 -0.293893 1.881061 +v 0.855038 -0.293893 1.811296 +v 1.256174 -0.293893 1.696930 +v 1.572289 -0.293893 1.540780 +v 1.799538 -0.293893 1.346691 +v 1.993627 -0.293893 1.119442 +v 2.149777 -0.293893 0.864629 +v 2.264143 -0.293893 0.588526 +v 2.333908 -0.293893 0.297931 +v 2.357356 -0.293893 -0.000000 +v 2.224656 -0.404509 -0.280626 +v 2.158942 -0.404509 -0.554343 +v 2.051219 -0.404509 -0.814410 +v 1.904138 -0.404509 -1.054424 +v 1.721322 -0.404509 -1.268474 +v 1.507272 -0.404509 -1.451290 +v 1.183215 -0.404509 -1.598371 +v 0.805378 -0.404509 -1.706094 +v 0.407709 -0.404509 -1.771808 +v 0.000001 -0.404509 -1.793894 +v -0.397662 -0.404509 -1.771808 +v -0.785533 -0.404509 -1.706095 +v -1.154062 -0.404509 -1.598371 +v -1.471477 -0.404509 -1.451291 +v -1.685527 -0.404509 -1.268475 +v -1.868343 -0.404509 -1.054425 +v -2.015424 -0.404509 -0.814411 +v -2.123147 -0.404509 -0.554344 +v -2.188860 -0.404509 -0.280627 +v -2.210946 -0.404509 -0.000000 +v -2.188860 -0.404509 0.280626 +v -2.123147 -0.404509 0.554343 +v -2.015424 -0.404509 0.814410 +v -1.868343 -0.404509 1.054424 +v -1.685527 -0.404509 1.268474 +v -1.471477 -0.404509 1.451290 +v -1.154063 -0.404509 1.598370 +v -0.785534 -0.404509 1.706094 +v -0.397663 -0.404509 1.771807 +v 0.000000 -0.404509 1.793893 +v 0.407708 -0.404509 1.771807 +v 0.805376 -0.404509 1.706094 +v 1.183214 -0.404509 1.598370 +v 1.507271 -0.404509 1.451290 +v 1.721321 -0.404509 1.268474 +v 1.904137 -0.404509 1.054424 +v 2.051218 -0.404509 0.814410 +v 2.158941 -0.404509 0.554343 +v 2.224654 -0.404509 0.280627 +v 2.246740 -0.404509 -0.000000 +v 2.086987 -0.475528 -0.258822 +v 2.026380 -0.475528 -0.511271 +v 1.927027 -0.475528 -0.751131 +v 1.791374 -0.475528 -0.972496 +v 1.622763 -0.475528 -1.169915 +v 1.412889 -0.475528 -1.338526 +v 1.091280 -0.475528 -1.474179 +v 0.742800 -0.475528 -1.573532 +v 0.376030 -0.475528 -1.634140 +v 0.000001 -0.475528 -1.654510 +v -0.366764 -0.475528 -1.634140 +v -0.724498 -0.475528 -1.573532 +v -1.064392 -0.475528 -1.474179 +v -1.378078 -0.475528 -1.338526 +v -1.586967 -0.475528 -1.169915 +v -1.755579 -0.475528 -0.972497 +v -1.891231 -0.475528 -0.751132 +v -1.990585 -0.475528 -0.511272 +v -2.051192 -0.475528 -0.258823 +v -2.071562 -0.475528 -0.000000 +v -2.051192 -0.475528 0.258822 +v -1.990585 -0.475528 0.511271 +v -1.891231 -0.475528 0.751131 +v -1.755579 -0.475528 0.972496 +v -1.586967 -0.475528 1.169914 +v -1.378078 -0.475528 1.338526 +v -1.064393 -0.475528 1.474178 +v -0.724499 -0.475528 1.573531 +v -0.366765 -0.475528 1.634139 +v 0.000000 -0.475528 1.654509 +v 0.376029 -0.475528 1.634139 +v 0.742799 -0.475528 1.573531 +v 1.091279 -0.475528 1.474178 +v 1.412888 -0.475528 1.338526 +v 1.622762 -0.475528 1.169914 +v 1.791373 -0.475528 0.972496 +v 1.927025 -0.475528 0.751131 +v 2.026379 -0.475528 0.511271 +v 2.086986 -0.475528 0.258822 +v 2.107356 -0.475528 -0.000000 +v 1.934381 -0.500000 -0.234651 +v 1.879433 -0.500000 -0.463525 +v 1.789358 -0.500000 -0.680986 +v 1.666374 -0.500000 -0.881678 +v 1.513509 -0.500000 -1.060661 +v 1.280945 -0.500000 -1.213526 +v 0.989370 -0.500000 -1.336510 +v 0.673433 -0.500000 -1.426586 +v 0.340914 -0.500000 -1.481533 +v 0.000001 -0.500000 -1.500001 +v -0.332513 -0.500000 -1.481533 +v -0.656840 -0.500000 -1.426586 +v -0.964993 -0.500000 -1.336511 +v -1.249384 -0.500000 -1.213526 +v -1.477713 -0.500000 -1.060661 +v -1.630579 -0.500000 -0.881679 +v -1.753563 -0.500000 -0.680986 +v -1.843638 -0.500000 -0.463526 +v -1.898586 -0.500000 -0.234652 +v -1.917053 -0.500000 -0.000000 +v -1.898586 -0.500000 0.234652 +v -1.843638 -0.500000 0.463525 +v -1.753563 -0.500000 0.680986 +v -1.630579 -0.500000 0.881678 +v -1.477713 -0.500000 1.060660 +v -1.249384 -0.500000 1.213526 +v -0.964993 -0.500000 1.336510 +v -0.656840 -0.500000 1.426585 +v -0.332514 -0.500000 1.481533 +v 0.000000 -0.500000 1.500000 +v 0.340913 -0.500000 1.481533 +v 0.673432 -0.500000 1.426585 +v 0.989368 -0.500000 1.336510 +v 1.280943 -0.500000 1.213526 +v 1.513507 -0.500000 1.060660 +v 1.666373 -0.500000 0.881678 +v 1.789357 -0.500000 0.680986 +v 1.879432 -0.500000 0.463526 +v 1.934380 -0.500000 0.234652 +v 1.952847 -0.500000 -0.000000 +v 1.781775 -0.475528 -0.210481 +v 1.732487 -0.475528 -0.415780 +v 1.651690 -0.475528 -0.610840 +v 1.541374 -0.475528 -0.790860 +v 1.382249 -0.475528 -0.951406 +v 1.149000 -0.475528 -1.088526 +v 0.887459 -0.475528 -1.198842 +v 0.604066 -0.475528 -1.279639 +v 0.305798 -0.475528 -1.328927 +v 0.000001 -0.475528 -1.345492 +v -0.298262 -0.475528 -1.328927 +v -0.589181 -0.475528 -1.279639 +v -0.865593 -0.475528 -1.198842 +v -1.120690 -0.475528 -1.088526 +v -1.348193 -0.475528 -0.951407 +v -1.505579 -0.475528 -0.790861 +v -1.615895 -0.475528 -0.610841 +v -1.696692 -0.475528 -0.415780 +v -1.745979 -0.475528 -0.210482 +v -1.762545 -0.475528 -0.000000 +v -1.745980 -0.475528 0.210481 +v -1.696692 -0.475528 0.415780 +v -1.615895 -0.475528 0.610840 +v -1.505579 -0.475528 0.790860 +v -1.348193 -0.475528 0.951406 +v -1.120691 -0.475528 1.088526 +v -0.865593 -0.475528 1.198842 +v -0.589182 -0.475528 1.279639 +v -0.298263 -0.475528 1.328926 +v 0.000000 -0.475528 1.345492 +v 0.305797 -0.475528 1.328926 +v 0.604065 -0.475528 1.279639 +v 0.887458 -0.475528 1.198842 +v 1.148999 -0.475528 1.088526 +v 1.382248 -0.475528 0.951406 +v 1.541373 -0.475528 0.790860 +v 1.651689 -0.475528 0.610840 +v 1.732486 -0.475528 0.415780 +v 1.781774 -0.475528 0.210481 +v 1.798339 -0.475528 -0.000000 +v 1.644107 -0.404509 -0.188676 +v 1.599925 -0.404509 -0.372708 +v 1.527498 -0.404509 -0.547561 +v 1.417634 -0.404509 -0.708932 +v 1.239057 -0.404509 -0.852847 +v 1.029971 -0.404509 -0.975762 +v 0.795524 -0.404509 -1.074650 +v 0.541488 -0.404509 -1.147077 +v 0.274119 -0.404509 -1.191259 +v 0.000001 -0.404509 -1.206108 +v -0.267364 -0.404509 -1.191259 +v -0.528146 -0.404509 -1.147077 +v -0.775923 -0.404509 -1.074650 +v -1.004594 -0.404509 -0.975762 +v -1.208529 -0.404509 -0.852847 +v -1.382705 -0.404509 -0.708933 +v -1.491703 -0.404509 -0.547562 +v -1.564129 -0.404509 -0.372708 +v -1.608311 -0.404509 -0.188677 +v -1.623160 -0.404509 -0.000000 +v -1.608311 -0.404509 0.188677 +v -1.564129 -0.404509 0.372708 +v -1.491703 -0.404509 0.547561 +v -1.382706 -0.404509 0.708932 +v -1.208529 -0.404509 0.852847 +v -1.004594 -0.404509 0.975761 +v -0.775923 -0.404509 1.074650 +v -0.528146 -0.404509 1.147076 +v -0.267365 -0.404509 1.191258 +v 0.000000 -0.404509 1.206107 +v 0.274119 -0.404509 1.191258 +v 0.541487 -0.404509 1.147076 +v 0.795523 -0.404509 1.074650 +v 1.029970 -0.404509 0.975761 +v 1.239056 -0.404509 0.852847 +v 1.417632 -0.404509 0.708932 +v 1.527497 -0.404509 0.547561 +v 1.599924 -0.404509 0.372708 +v 1.644105 -0.404509 0.188677 +v 1.658955 -0.404509 -0.000000 +v 1.534852 -0.293893 -0.171372 +v 1.494722 -0.293893 -0.338525 +v 1.418111 -0.293893 -0.497343 +v 1.287618 -0.293893 -0.643914 +v 1.125419 -0.293893 -0.774630 +v 0.935509 -0.293893 -0.886271 +v 0.722564 -0.293893 -0.976090 +v 0.491827 -0.293893 -1.041875 +v 0.248979 -0.293893 -1.082005 +v 0.000001 -0.293893 -1.095492 +v -0.242844 -0.293893 -1.082005 +v -0.479708 -0.293893 -1.041875 +v -0.704761 -0.293893 -0.976091 +v -0.912460 -0.293893 -0.886272 +v -1.097691 -0.293893 -0.774630 +v -1.255893 -0.293893 -0.643914 +v -1.383171 -0.293893 -0.497343 +v -1.458927 -0.293893 -0.338526 +v -1.499057 -0.293893 -0.171373 +v -1.512545 -0.293893 -0.000000 +v -1.499057 -0.293893 0.171372 +v -1.458927 -0.293893 0.338525 +v -1.383171 -0.293893 0.497343 +v -1.255893 -0.293893 0.643914 +v -1.097691 -0.293893 0.774629 +v -0.912460 -0.293893 0.886271 +v -0.704761 -0.293893 0.976090 +v -0.479708 -0.293893 1.041874 +v -0.242844 -0.293893 1.082004 +v 0.000000 -0.293893 1.095491 +v 0.248978 -0.293893 1.082004 +v 0.491826 -0.293893 1.041874 +v 0.722563 -0.293893 0.976090 +v 0.935508 -0.293893 0.886271 +v 1.125418 -0.293893 0.774629 +v 1.287617 -0.293893 0.643914 +v 1.418110 -0.293893 0.497343 +v 1.494722 -0.293893 0.338525 +v 1.534851 -0.293893 0.171373 +v 1.548339 -0.293893 -0.000000 +v 1.464707 -0.154509 -0.160262 +v 1.415555 -0.154509 -0.316579 +v 1.326176 -0.154509 -0.465100 +v 1.204143 -0.154509 -0.602169 +v 1.052459 -0.154509 -0.724411 +v 0.874861 -0.154509 -0.828815 +v 0.675721 -0.154509 -0.912811 +v 0.459942 -0.154509 -0.974331 +v 0.232838 -0.154509 -1.011859 +v 0.000001 -0.154509 -1.024472 +v -0.227100 -0.154509 -1.011859 +v -0.448609 -0.154509 -0.974331 +v -0.659072 -0.154509 -0.912811 +v -0.853306 -0.154509 -0.828815 +v -1.026528 -0.154509 -0.724411 +v -1.174475 -0.154509 -0.602170 +v -1.293501 -0.154509 -0.465101 +v -1.380678 -0.154509 -0.316579 +v -1.428912 -0.154509 -0.160263 +v -1.441525 -0.154509 -0.000000 +v -1.428912 -0.154509 0.160263 +v -1.380678 -0.154509 0.316579 +v -1.293501 -0.154509 0.465100 +v -1.174475 -0.154509 0.602169 +v -1.026529 -0.154509 0.724411 +v -0.853306 -0.154509 0.828815 +v -0.659072 -0.154509 0.912811 +v -0.448609 -0.154509 0.974330 +v -0.227101 -0.154509 1.011859 +v 0.000000 -0.154509 1.024472 +v 0.232837 -0.154509 1.011859 +v 0.459941 -0.154509 0.974330 +v 0.675720 -0.154509 0.912811 +v 0.874860 -0.154509 0.828815 +v 1.052458 -0.154509 0.724411 +v 1.204142 -0.154509 0.602169 +v 1.326175 -0.154509 0.465100 +v 1.415553 -0.154509 0.316579 +v 1.464706 -0.154509 0.160263 +v 1.477319 -0.154509 -0.000000 +vt 0.000000 1.000000 +vt 0.025000 1.000000 +vt 0.050000 1.000000 +vt 0.075000 1.000000 +vt 0.100000 1.000000 +vt 0.125000 1.000000 +vt 0.150000 1.000000 +vt 0.175000 1.000000 +vt 0.200000 1.000000 +vt 0.225000 1.000000 +vt 0.250000 1.000000 +vt 0.275000 1.000000 +vt 0.300000 1.000000 +vt 0.325000 1.000000 +vt 0.350000 1.000000 +vt 0.375000 1.000000 +vt 0.400000 1.000000 +vt 0.425000 1.000000 +vt 0.450000 1.000000 +vt 0.475000 1.000000 +vt 0.500000 1.000000 +vt 0.525000 1.000000 +vt 0.550000 1.000000 +vt 0.575000 1.000000 +vt 0.600000 1.000000 +vt 0.625000 1.000000 +vt 0.650000 1.000000 +vt 0.675000 1.000000 +vt 0.700000 1.000000 +vt 0.725000 1.000000 +vt 0.750000 1.000000 +vt 0.775000 1.000000 +vt 0.800000 1.000000 +vt 0.825000 1.000000 +vt 0.850000 1.000000 +vt 0.875000 1.000000 +vt 0.900000 1.000000 +vt 0.925000 1.000000 +vt 0.950000 1.000000 +vt 0.975000 1.000000 +vt 1.000000 1.000000 +vt 0.000000 0.950000 +vt 0.025000 0.950000 +vt 0.050000 0.950000 +vt 0.075000 0.950000 +vt 0.100000 0.950000 +vt 0.125000 0.950000 +vt 0.150000 0.950000 +vt 0.175000 0.950000 +vt 0.200000 0.950000 +vt 0.225000 0.950000 +vt 0.250000 0.950000 +vt 0.275000 0.950000 +vt 0.300000 0.950000 +vt 0.325000 0.950000 +vt 0.350000 0.950000 +vt 0.375000 0.950000 +vt 0.400000 0.950000 +vt 0.425000 0.950000 +vt 0.450000 0.950000 +vt 0.475000 0.950000 +vt 0.500000 0.950000 +vt 0.525000 0.950000 +vt 0.550000 0.950000 +vt 0.575000 0.950000 +vt 0.600000 0.950000 +vt 0.625000 0.950000 +vt 0.650000 0.950000 +vt 0.675000 0.950000 +vt 0.700000 0.950000 +vt 0.725000 0.950000 +vt 0.750000 0.950000 +vt 0.775000 0.950000 +vt 0.800000 0.950000 +vt 0.825000 0.950000 +vt 0.850000 0.950000 +vt 0.875000 0.950000 +vt 0.900000 0.950000 +vt 0.925000 0.950000 +vt 0.950000 0.950000 +vt 0.975000 0.950000 +vt 1.000000 0.950000 +vt 0.000000 0.900000 +vt 0.025000 0.900000 +vt 0.050000 0.900000 +vt 0.075000 0.900000 +vt 0.100000 0.900000 +vt 0.125000 0.900000 +vt 0.150000 0.900000 +vt 0.175000 0.900000 +vt 0.200000 0.900000 +vt 0.225000 0.900000 +vt 0.250000 0.900000 +vt 0.275000 0.900000 +vt 0.300000 0.900000 +vt 0.325000 0.900000 +vt 0.350000 0.900000 +vt 0.375000 0.900000 +vt 0.400000 0.900000 +vt 0.425000 0.900000 +vt 0.450000 0.900000 +vt 0.475000 0.900000 +vt 0.500000 0.900000 +vt 0.525000 0.900000 +vt 0.550000 0.900000 +vt 0.575000 0.900000 +vt 0.600000 0.900000 +vt 0.625000 0.900000 +vt 0.650000 0.900000 +vt 0.675000 0.900000 +vt 0.700000 0.900000 +vt 0.725000 0.900000 +vt 0.750000 0.900000 +vt 0.775000 0.900000 +vt 0.800000 0.900000 +vt 0.825000 0.900000 +vt 0.850000 0.900000 +vt 0.875000 0.900000 +vt 0.900000 0.900000 +vt 0.925000 0.900000 +vt 0.950000 0.900000 +vt 0.975000 0.900000 +vt 1.000000 0.900000 +vt 0.000000 0.850000 +vt 0.025000 0.850000 +vt 0.050000 0.850000 +vt 0.075000 0.850000 +vt 0.100000 0.850000 +vt 0.125000 0.850000 +vt 0.150000 0.850000 +vt 0.175000 0.850000 +vt 0.200000 0.850000 +vt 0.225000 0.850000 +vt 0.250000 0.850000 +vt 0.275000 0.850000 +vt 0.300000 0.850000 +vt 0.325000 0.850000 +vt 0.350000 0.850000 +vt 0.375000 0.850000 +vt 0.400000 0.850000 +vt 0.425000 0.850000 +vt 0.450000 0.850000 +vt 0.475000 0.850000 +vt 0.500000 0.850000 +vt 0.525000 0.850000 +vt 0.550000 0.850000 +vt 0.575000 0.850000 +vt 0.600000 0.850000 +vt 0.625000 0.850000 +vt 0.650000 0.850000 +vt 0.675000 0.850000 +vt 0.700000 0.850000 +vt 0.725000 0.850000 +vt 0.750000 0.850000 +vt 0.775000 0.850000 +vt 0.800000 0.850000 +vt 0.825000 0.850000 +vt 0.850000 0.850000 +vt 0.875000 0.850000 +vt 0.900000 0.850000 +vt 0.925000 0.850000 +vt 0.950000 0.850000 +vt 0.975000 0.850000 +vt 1.000000 0.850000 +vt 0.000000 0.800000 +vt 0.025000 0.800000 +vt 0.050000 0.800000 +vt 0.075000 0.800000 +vt 0.100000 0.800000 +vt 0.125000 0.800000 +vt 0.150000 0.800000 +vt 0.175000 0.800000 +vt 0.200000 0.800000 +vt 0.225000 0.800000 +vt 0.250000 0.800000 +vt 0.275000 0.800000 +vt 0.300000 0.800000 +vt 0.325000 0.800000 +vt 0.350000 0.800000 +vt 0.375000 0.800000 +vt 0.400000 0.800000 +vt 0.425000 0.800000 +vt 0.450000 0.800000 +vt 0.475000 0.800000 +vt 0.500000 0.800000 +vt 0.525000 0.800000 +vt 0.550000 0.800000 +vt 0.575000 0.800000 +vt 0.600000 0.800000 +vt 0.625000 0.800000 +vt 0.650000 0.800000 +vt 0.675000 0.800000 +vt 0.700000 0.800000 +vt 0.725000 0.800000 +vt 0.750000 0.800000 +vt 0.775000 0.800000 +vt 0.800000 0.800000 +vt 0.825000 0.800000 +vt 0.850000 0.800000 +vt 0.875000 0.800000 +vt 0.900000 0.800000 +vt 0.925000 0.800000 +vt 0.950000 0.800000 +vt 0.975000 0.800000 +vt 1.000000 0.800000 +vt 0.000000 0.750000 +vt 0.025000 0.750000 +vt 0.050000 0.750000 +vt 0.075000 0.750000 +vt 0.100000 0.750000 +vt 0.125000 0.750000 +vt 0.150000 0.750000 +vt 0.175000 0.750000 +vt 0.200000 0.750000 +vt 0.225000 0.750000 +vt 0.250000 0.750000 +vt 0.275000 0.750000 +vt 0.300000 0.750000 +vt 0.325000 0.750000 +vt 0.350000 0.750000 +vt 0.375000 0.750000 +vt 0.400000 0.750000 +vt 0.425000 0.750000 +vt 0.450000 0.750000 +vt 0.475000 0.750000 +vt 0.500000 0.750000 +vt 0.525000 0.750000 +vt 0.550000 0.750000 +vt 0.575000 0.750000 +vt 0.600000 0.750000 +vt 0.625000 0.750000 +vt 0.650000 0.750000 +vt 0.675000 0.750000 +vt 0.700000 0.750000 +vt 0.725000 0.750000 +vt 0.750000 0.750000 +vt 0.775000 0.750000 +vt 0.800000 0.750000 +vt 0.825000 0.750000 +vt 0.850000 0.750000 +vt 0.875000 0.750000 +vt 0.900000 0.750000 +vt 0.925000 0.750000 +vt 0.950000 0.750000 +vt 0.975000 0.750000 +vt 1.000000 0.750000 +vt 0.000000 0.700000 +vt 0.025000 0.700000 +vt 0.050000 0.700000 +vt 0.075000 0.700000 +vt 0.100000 0.700000 +vt 0.125000 0.700000 +vt 0.150000 0.700000 +vt 0.175000 0.700000 +vt 0.200000 0.700000 +vt 0.225000 0.700000 +vt 0.250000 0.700000 +vt 0.275000 0.700000 +vt 0.300000 0.700000 +vt 0.325000 0.700000 +vt 0.350000 0.700000 +vt 0.375000 0.700000 +vt 0.400000 0.700000 +vt 0.425000 0.700000 +vt 0.450000 0.700000 +vt 0.475000 0.700000 +vt 0.500000 0.700000 +vt 0.525000 0.700000 +vt 0.550000 0.700000 +vt 0.575000 0.700000 +vt 0.600000 0.700000 +vt 0.625000 0.700000 +vt 0.650000 0.700000 +vt 0.675000 0.700000 +vt 0.700000 0.700000 +vt 0.725000 0.700000 +vt 0.750000 0.700000 +vt 0.775000 0.700000 +vt 0.800000 0.700000 +vt 0.825000 0.700000 +vt 0.850000 0.700000 +vt 0.875000 0.700000 +vt 0.900000 0.700000 +vt 0.925000 0.700000 +vt 0.950000 0.700000 +vt 0.975000 0.700000 +vt 1.000000 0.700000 +vt 0.000000 0.650000 +vt 0.025000 0.650000 +vt 0.050000 0.650000 +vt 0.075000 0.650000 +vt 0.100000 0.650000 +vt 0.125000 0.650000 +vt 0.150000 0.650000 +vt 0.175000 0.650000 +vt 0.200000 0.650000 +vt 0.225000 0.650000 +vt 0.250000 0.650000 +vt 0.275000 0.650000 +vt 0.300000 0.650000 +vt 0.325000 0.650000 +vt 0.350000 0.650000 +vt 0.375000 0.650000 +vt 0.400000 0.650000 +vt 0.425000 0.650000 +vt 0.450000 0.650000 +vt 0.475000 0.650000 +vt 0.500000 0.650000 +vt 0.525000 0.650000 +vt 0.550000 0.650000 +vt 0.575000 0.650000 +vt 0.600000 0.650000 +vt 0.625000 0.650000 +vt 0.650000 0.650000 +vt 0.675000 0.650000 +vt 0.700000 0.650000 +vt 0.725000 0.650000 +vt 0.750000 0.650000 +vt 0.775000 0.650000 +vt 0.800000 0.650000 +vt 0.825000 0.650000 +vt 0.850000 0.650000 +vt 0.875000 0.650000 +vt 0.900000 0.650000 +vt 0.925000 0.650000 +vt 0.950000 0.650000 +vt 0.975000 0.650000 +vt 1.000000 0.650000 +vt 0.000000 0.600000 +vt 0.025000 0.600000 +vt 0.050000 0.600000 +vt 0.075000 0.600000 +vt 0.100000 0.600000 +vt 0.125000 0.600000 +vt 0.150000 0.600000 +vt 0.175000 0.600000 +vt 0.200000 0.600000 +vt 0.225000 0.600000 +vt 0.250000 0.600000 +vt 0.275000 0.600000 +vt 0.300000 0.600000 +vt 0.325000 0.600000 +vt 0.350000 0.600000 +vt 0.375000 0.600000 +vt 0.400000 0.600000 +vt 0.425000 0.600000 +vt 0.450000 0.600000 +vt 0.475000 0.600000 +vt 0.500000 0.600000 +vt 0.525000 0.600000 +vt 0.550000 0.600000 +vt 0.575000 0.600000 +vt 0.600000 0.600000 +vt 0.625000 0.600000 +vt 0.650000 0.600000 +vt 0.675000 0.600000 +vt 0.700000 0.600000 +vt 0.725000 0.600000 +vt 0.750000 0.600000 +vt 0.775000 0.600000 +vt 0.800000 0.600000 +vt 0.825000 0.600000 +vt 0.850000 0.600000 +vt 0.875000 0.600000 +vt 0.900000 0.600000 +vt 0.925000 0.600000 +vt 0.950000 0.600000 +vt 0.975000 0.600000 +vt 1.000000 0.600000 +vt 0.000000 0.550000 +vt 0.025000 0.550000 +vt 0.050000 0.550000 +vt 0.075000 0.550000 +vt 0.100000 0.550000 +vt 0.125000 0.550000 +vt 0.150000 0.550000 +vt 0.175000 0.550000 +vt 0.200000 0.550000 +vt 0.225000 0.550000 +vt 0.250000 0.550000 +vt 0.275000 0.550000 +vt 0.300000 0.550000 +vt 0.325000 0.550000 +vt 0.350000 0.550000 +vt 0.375000 0.550000 +vt 0.400000 0.550000 +vt 0.425000 0.550000 +vt 0.450000 0.550000 +vt 0.475000 0.550000 +vt 0.500000 0.550000 +vt 0.525000 0.550000 +vt 0.550000 0.550000 +vt 0.575000 0.550000 +vt 0.600000 0.550000 +vt 0.625000 0.550000 +vt 0.650000 0.550000 +vt 0.675000 0.550000 +vt 0.700000 0.550000 +vt 0.725000 0.550000 +vt 0.750000 0.550000 +vt 0.775000 0.550000 +vt 0.800000 0.550000 +vt 0.825000 0.550000 +vt 0.850000 0.550000 +vt 0.875000 0.550000 +vt 0.900000 0.550000 +vt 0.925000 0.550000 +vt 0.950000 0.550000 +vt 0.975000 0.550000 +vt 1.000000 0.550000 +vt 0.000000 0.500000 +vt 0.025000 0.500000 +vt 0.050000 0.500000 +vt 0.075000 0.500000 +vt 0.100000 0.500000 +vt 0.125000 0.500000 +vt 0.150000 0.500000 +vt 0.175000 0.500000 +vt 0.200000 0.500000 +vt 0.225000 0.500000 +vt 0.250000 0.500000 +vt 0.275000 0.500000 +vt 0.300000 0.500000 +vt 0.325000 0.500000 +vt 0.350000 0.500000 +vt 0.375000 0.500000 +vt 0.400000 0.500000 +vt 0.425000 0.500000 +vt 0.450000 0.500000 +vt 0.475000 0.500000 +vt 0.500000 0.500000 +vt 0.525000 0.500000 +vt 0.550000 0.500000 +vt 0.575000 0.500000 +vt 0.600000 0.500000 +vt 0.625000 0.500000 +vt 0.650000 0.500000 +vt 0.675000 0.500000 +vt 0.700000 0.500000 +vt 0.725000 0.500000 +vt 0.750000 0.500000 +vt 0.775000 0.500000 +vt 0.800000 0.500000 +vt 0.825000 0.500000 +vt 0.850000 0.500000 +vt 0.875000 0.500000 +vt 0.900000 0.500000 +vt 0.925000 0.500000 +vt 0.950000 0.500000 +vt 0.975000 0.500000 +vt 1.000000 0.500000 +vt 0.000000 0.450000 +vt 0.025000 0.450000 +vt 0.050000 0.450000 +vt 0.075000 0.450000 +vt 0.100000 0.450000 +vt 0.125000 0.450000 +vt 0.150000 0.450000 +vt 0.175000 0.450000 +vt 0.200000 0.450000 +vt 0.225000 0.450000 +vt 0.250000 0.450000 +vt 0.275000 0.450000 +vt 0.300000 0.450000 +vt 0.325000 0.450000 +vt 0.350000 0.450000 +vt 0.375000 0.450000 +vt 0.400000 0.450000 +vt 0.425000 0.450000 +vt 0.450000 0.450000 +vt 0.475000 0.450000 +vt 0.500000 0.450000 +vt 0.525000 0.450000 +vt 0.550000 0.450000 +vt 0.575000 0.450000 +vt 0.600000 0.450000 +vt 0.625000 0.450000 +vt 0.650000 0.450000 +vt 0.675000 0.450000 +vt 0.700000 0.450000 +vt 0.725000 0.450000 +vt 0.750000 0.450000 +vt 0.775000 0.450000 +vt 0.800000 0.450000 +vt 0.825000 0.450000 +vt 0.850000 0.450000 +vt 0.875000 0.450000 +vt 0.900000 0.450000 +vt 0.925000 0.450000 +vt 0.950000 0.450000 +vt 0.975000 0.450000 +vt 1.000000 0.450000 +vt 0.000000 0.400000 +vt 0.025000 0.400000 +vt 0.050000 0.400000 +vt 0.075000 0.400000 +vt 0.100000 0.400000 +vt 0.125000 0.400000 +vt 0.150000 0.400000 +vt 0.175000 0.400000 +vt 0.200000 0.400000 +vt 0.225000 0.400000 +vt 0.250000 0.400000 +vt 0.275000 0.400000 +vt 0.300000 0.400000 +vt 0.325000 0.400000 +vt 0.350000 0.400000 +vt 0.375000 0.400000 +vt 0.400000 0.400000 +vt 0.425000 0.400000 +vt 0.450000 0.400000 +vt 0.475000 0.400000 +vt 0.500000 0.400000 +vt 0.525000 0.400000 +vt 0.550000 0.400000 +vt 0.575000 0.400000 +vt 0.600000 0.400000 +vt 0.625000 0.400000 +vt 0.650000 0.400000 +vt 0.675000 0.400000 +vt 0.700000 0.400000 +vt 0.725000 0.400000 +vt 0.750000 0.400000 +vt 0.775000 0.400000 +vt 0.800000 0.400000 +vt 0.825000 0.400000 +vt 0.850000 0.400000 +vt 0.875000 0.400000 +vt 0.900000 0.400000 +vt 0.925000 0.400000 +vt 0.950000 0.400000 +vt 0.975000 0.400000 +vt 1.000000 0.400000 +vt 0.000000 0.350000 +vt 0.025000 0.350000 +vt 0.050000 0.350000 +vt 0.075000 0.350000 +vt 0.100000 0.350000 +vt 0.125000 0.350000 +vt 0.150000 0.350000 +vt 0.175000 0.350000 +vt 0.200000 0.350000 +vt 0.225000 0.350000 +vt 0.250000 0.350000 +vt 0.275000 0.350000 +vt 0.300000 0.350000 +vt 0.325000 0.350000 +vt 0.350000 0.350000 +vt 0.375000 0.350000 +vt 0.400000 0.350000 +vt 0.425000 0.350000 +vt 0.450000 0.350000 +vt 0.475000 0.350000 +vt 0.500000 0.350000 +vt 0.525000 0.350000 +vt 0.550000 0.350000 +vt 0.575000 0.350000 +vt 0.600000 0.350000 +vt 0.625000 0.350000 +vt 0.650000 0.350000 +vt 0.675000 0.350000 +vt 0.700000 0.350000 +vt 0.725000 0.350000 +vt 0.750000 0.350000 +vt 0.775000 0.350000 +vt 0.800000 0.350000 +vt 0.825000 0.350000 +vt 0.850000 0.350000 +vt 0.875000 0.350000 +vt 0.900000 0.350000 +vt 0.925000 0.350000 +vt 0.950000 0.350000 +vt 0.975000 0.350000 +vt 1.000000 0.350000 +vt 0.000000 0.300000 +vt 0.025000 0.300000 +vt 0.050000 0.300000 +vt 0.075000 0.300000 +vt 0.100000 0.300000 +vt 0.125000 0.300000 +vt 0.150000 0.300000 +vt 0.175000 0.300000 +vt 0.200000 0.300000 +vt 0.225000 0.300000 +vt 0.250000 0.300000 +vt 0.275000 0.300000 +vt 0.300000 0.300000 +vt 0.325000 0.300000 +vt 0.350000 0.300000 +vt 0.375000 0.300000 +vt 0.400000 0.300000 +vt 0.425000 0.300000 +vt 0.450000 0.300000 +vt 0.475000 0.300000 +vt 0.500000 0.300000 +vt 0.525000 0.300000 +vt 0.550000 0.300000 +vt 0.575000 0.300000 +vt 0.600000 0.300000 +vt 0.625000 0.300000 +vt 0.650000 0.300000 +vt 0.675000 0.300000 +vt 0.700000 0.300000 +vt 0.725000 0.300000 +vt 0.750000 0.300000 +vt 0.775000 0.300000 +vt 0.800000 0.300000 +vt 0.825000 0.300000 +vt 0.850000 0.300000 +vt 0.875000 0.300000 +vt 0.900000 0.300000 +vt 0.925000 0.300000 +vt 0.950000 0.300000 +vt 0.975000 0.300000 +vt 1.000000 0.300000 +vt 0.000000 0.250000 +vt 0.025000 0.250000 +vt 0.050000 0.250000 +vt 0.075000 0.250000 +vt 0.100000 0.250000 +vt 0.125000 0.250000 +vt 0.150000 0.250000 +vt 0.175000 0.250000 +vt 0.200000 0.250000 +vt 0.225000 0.250000 +vt 0.250000 0.250000 +vt 0.275000 0.250000 +vt 0.300000 0.250000 +vt 0.325000 0.250000 +vt 0.350000 0.250000 +vt 0.375000 0.250000 +vt 0.400000 0.250000 +vt 0.425000 0.250000 +vt 0.450000 0.250000 +vt 0.475000 0.250000 +vt 0.500000 0.250000 +vt 0.525000 0.250000 +vt 0.550000 0.250000 +vt 0.575000 0.250000 +vt 0.600000 0.250000 +vt 0.625000 0.250000 +vt 0.650000 0.250000 +vt 0.675000 0.250000 +vt 0.700000 0.250000 +vt 0.725000 0.250000 +vt 0.750000 0.250000 +vt 0.775000 0.250000 +vt 0.800000 0.250000 +vt 0.825000 0.250000 +vt 0.850000 0.250000 +vt 0.875000 0.250000 +vt 0.900000 0.250000 +vt 0.925000 0.250000 +vt 0.950000 0.250000 +vt 0.975000 0.250000 +vt 1.000000 0.250000 +vt 0.000000 0.200000 +vt 0.025000 0.200000 +vt 0.050000 0.200000 +vt 0.075000 0.200000 +vt 0.100000 0.200000 +vt 0.125000 0.200000 +vt 0.150000 0.200000 +vt 0.175000 0.200000 +vt 0.200000 0.200000 +vt 0.225000 0.200000 +vt 0.250000 0.200000 +vt 0.275000 0.200000 +vt 0.300000 0.200000 +vt 0.325000 0.200000 +vt 0.350000 0.200000 +vt 0.375000 0.200000 +vt 0.400000 0.200000 +vt 0.425000 0.200000 +vt 0.450000 0.200000 +vt 0.475000 0.200000 +vt 0.500000 0.200000 +vt 0.525000 0.200000 +vt 0.550000 0.200000 +vt 0.575000 0.200000 +vt 0.600000 0.200000 +vt 0.625000 0.200000 +vt 0.650000 0.200000 +vt 0.675000 0.200000 +vt 0.700000 0.200000 +vt 0.725000 0.200000 +vt 0.750000 0.200000 +vt 0.775000 0.200000 +vt 0.800000 0.200000 +vt 0.825000 0.200000 +vt 0.850000 0.200000 +vt 0.875000 0.200000 +vt 0.900000 0.200000 +vt 0.925000 0.200000 +vt 0.950000 0.200000 +vt 0.975000 0.200000 +vt 1.000000 0.200000 +vt 0.000000 0.150000 +vt 0.025000 0.150000 +vt 0.050000 0.150000 +vt 0.075000 0.150000 +vt 0.100000 0.150000 +vt 0.125000 0.150000 +vt 0.150000 0.150000 +vt 0.175000 0.150000 +vt 0.200000 0.150000 +vt 0.225000 0.150000 +vt 0.250000 0.150000 +vt 0.275000 0.150000 +vt 0.300000 0.150000 +vt 0.325000 0.150000 +vt 0.350000 0.150000 +vt 0.375000 0.150000 +vt 0.400000 0.150000 +vt 0.425000 0.150000 +vt 0.450000 0.150000 +vt 0.475000 0.150000 +vt 0.500000 0.150000 +vt 0.525000 0.150000 +vt 0.550000 0.150000 +vt 0.575000 0.150000 +vt 0.600000 0.150000 +vt 0.625000 0.150000 +vt 0.650000 0.150000 +vt 0.675000 0.150000 +vt 0.700000 0.150000 +vt 0.725000 0.150000 +vt 0.750000 0.150000 +vt 0.775000 0.150000 +vt 0.800000 0.150000 +vt 0.825000 0.150000 +vt 0.850000 0.150000 +vt 0.875000 0.150000 +vt 0.900000 0.150000 +vt 0.925000 0.150000 +vt 0.950000 0.150000 +vt 0.975000 0.150000 +vt 1.000000 0.150000 +vt 0.000000 0.100000 +vt 0.025000 0.100000 +vt 0.050000 0.100000 +vt 0.075000 0.100000 +vt 0.100000 0.100000 +vt 0.125000 0.100000 +vt 0.150000 0.100000 +vt 0.175000 0.100000 +vt 0.200000 0.100000 +vt 0.225000 0.100000 +vt 0.250000 0.100000 +vt 0.275000 0.100000 +vt 0.300000 0.100000 +vt 0.325000 0.100000 +vt 0.350000 0.100000 +vt 0.375000 0.100000 +vt 0.400000 0.100000 +vt 0.425000 0.100000 +vt 0.450000 0.100000 +vt 0.475000 0.100000 +vt 0.500000 0.100000 +vt 0.525000 0.100000 +vt 0.550000 0.100000 +vt 0.575000 0.100000 +vt 0.600000 0.100000 +vt 0.625000 0.100000 +vt 0.650000 0.100000 +vt 0.675000 0.100000 +vt 0.700000 0.100000 +vt 0.725000 0.100000 +vt 0.750000 0.100000 +vt 0.775000 0.100000 +vt 0.800000 0.100000 +vt 0.825000 0.100000 +vt 0.850000 0.100000 +vt 0.875000 0.100000 +vt 0.900000 0.100000 +vt 0.925000 0.100000 +vt 0.950000 0.100000 +vt 0.975000 0.100000 +vt 1.000000 0.100000 +vt 0.000000 0.050000 +vt 0.025000 0.050000 +vt 0.050000 0.050000 +vt 0.075000 0.050000 +vt 0.100000 0.050000 +vt 0.125000 0.050000 +vt 0.150000 0.050000 +vt 0.175000 0.050000 +vt 0.200000 0.050000 +vt 0.225000 0.050000 +vt 0.250000 0.050000 +vt 0.275000 0.050000 +vt 0.300000 0.050000 +vt 0.325000 0.050000 +vt 0.350000 0.050000 +vt 0.375000 0.050000 +vt 0.400000 0.050000 +vt 0.425000 0.050000 +vt 0.450000 0.050000 +vt 0.475000 0.050000 +vt 0.500000 0.050000 +vt 0.525000 0.050000 +vt 0.550000 0.050000 +vt 0.575000 0.050000 +vt 0.600000 0.050000 +vt 0.625000 0.050000 +vt 0.650000 0.050000 +vt 0.675000 0.050000 +vt 0.700000 0.050000 +vt 0.725000 0.050000 +vt 0.750000 0.050000 +vt 0.775000 0.050000 +vt 0.800000 0.050000 +vt 0.825000 0.050000 +vt 0.850000 0.050000 +vt 0.875000 0.050000 +vt 0.900000 0.050000 +vt 0.925000 0.050000 +vt 0.950000 0.050000 +vt 0.975000 0.050000 +vt 1.000000 0.050000 +vt 0.000000 -0.000000 +vt 0.025000 -0.000000 +vt 0.050000 -0.000000 +vt 0.075000 -0.000000 +vt 0.100000 -0.000000 +vt 0.125000 -0.000000 +vt 0.150000 -0.000000 +vt 0.175000 -0.000000 +vt 0.200000 -0.000000 +vt 0.225000 -0.000000 +vt 0.250000 -0.000000 +vt 0.275000 -0.000000 +vt 0.300000 -0.000000 +vt 0.325000 -0.000000 +vt 0.350000 -0.000000 +vt 0.375000 -0.000000 +vt 0.400000 -0.000000 +vt 0.425000 -0.000000 +vt 0.450000 -0.000000 +vt 0.475000 -0.000000 +vt 0.500000 -0.000000 +vt 0.525000 -0.000000 +vt 0.550000 -0.000000 +vt 0.575000 -0.000000 +vt 0.600000 -0.000000 +vt 0.625000 -0.000000 +vt 0.650000 -0.000000 +vt 0.675000 -0.000000 +vt 0.700000 -0.000000 +vt 0.725000 -0.000000 +vt 0.750000 -0.000000 +vt 0.775000 -0.000000 +vt 0.800000 -0.000000 +vt 0.825000 -0.000000 +vt 0.850000 -0.000000 +vt 0.875000 -0.000000 +vt 0.900000 -0.000000 +vt 0.925000 -0.000000 +vt 0.950000 -0.000000 +vt 0.975000 -0.000000 +vt 1.000000 -0.000000 +f 41/42 42/43 1/1 +f 2/2 1/1 42/43 +f 42/43 43/44 2/2 +f 3/3 2/2 43/44 +f 43/44 44/45 3/3 +f 4/4 3/3 44/45 +f 44/45 45/46 4/4 +f 5/5 4/4 45/46 +f 45/46 46/47 5/5 +f 6/6 5/5 46/47 +f 46/47 47/48 6/6 +f 7/7 6/6 47/48 +f 47/48 48/49 7/7 +f 8/8 7/7 48/49 +f 48/49 49/50 8/8 +f 9/9 8/8 49/50 +f 49/50 50/51 9/9 +f 10/10 9/9 50/51 +f 50/51 51/52 10/10 +f 11/11 10/10 51/52 +f 52/53 12/12 51/52 +f 12/12 11/11 51/52 +f 53/54 13/13 52/53 +f 13/13 12/12 52/53 +f 54/55 14/14 53/54 +f 14/14 13/13 53/54 +f 55/56 15/15 54/55 +f 15/15 14/14 54/55 +f 56/57 16/16 55/56 +f 16/16 15/15 55/56 +f 57/58 17/17 56/57 +f 17/17 16/16 56/57 +f 58/59 18/18 57/58 +f 18/18 17/17 57/58 +f 59/60 19/19 58/59 +f 19/19 18/18 58/59 +f 59/60 60/61 19/19 +f 20/20 19/19 60/61 +f 60/61 61/62 20/20 +f 21/21 20/20 61/62 +f 61/62 62/63 21/21 +f 22/22 21/21 62/63 +f 62/63 63/64 22/22 +f 23/23 22/22 63/64 +f 63/64 64/65 23/23 +f 24/24 23/23 64/65 +f 64/65 65/66 24/24 +f 25/25 24/24 65/66 +f 65/66 66/67 25/25 +f 26/26 25/25 66/67 +f 66/67 67/68 26/26 +f 27/27 26/26 67/68 +f 67/68 68/69 27/27 +f 28/28 27/27 68/69 +f 68/69 69/70 28/28 +f 29/29 28/28 69/70 +f 69/70 70/71 29/29 +f 30/30 29/29 70/71 +f 70/71 71/72 30/30 +f 31/31 30/30 71/72 +f 72/73 32/32 71/72 +f 32/32 31/31 71/72 +f 73/74 33/33 72/73 +f 33/33 32/32 72/73 +f 74/75 34/34 73/74 +f 34/34 33/33 73/74 +f 75/76 35/35 74/75 +f 35/35 34/34 74/75 +f 76/77 36/36 75/76 +f 36/36 35/35 75/76 +f 77/78 37/37 76/77 +f 37/37 36/36 76/77 +f 78/79 38/38 77/78 +f 38/38 37/37 77/78 +f 79/80 39/39 78/79 +f 39/39 38/38 78/79 +f 79/80 80/81 39/39 +f 40/40 39/39 80/81 +f 80/81 41/82 40/40 +f 1/41 40/40 41/82 +f 82/84 42/43 81/83 +f 42/43 41/42 81/83 +f 43/44 42/43 83/85 +f 42/43 82/84 83/85 +f 83/85 84/86 43/44 +f 44/45 43/44 84/86 +f 84/86 85/87 44/45 +f 45/46 44/45 85/87 +f 85/87 86/88 45/46 +f 46/47 45/46 86/88 +f 86/88 87/89 46/47 +f 47/48 46/47 87/89 +f 87/89 88/90 47/48 +f 48/49 47/48 88/90 +f 88/90 89/91 48/49 +f 49/50 48/49 89/91 +f 89/91 90/92 49/50 +f 50/51 49/50 90/92 +f 91/93 51/52 90/92 +f 51/52 50/51 90/92 +f 92/94 52/53 91/93 +f 52/53 51/52 91/93 +f 93/95 53/54 92/94 +f 53/54 52/53 92/94 +f 94/96 54/55 93/95 +f 54/55 53/54 93/95 +f 95/97 55/56 94/96 +f 55/56 54/55 94/96 +f 96/98 56/57 95/97 +f 56/57 55/56 95/97 +f 97/99 57/58 96/98 +f 57/58 56/57 96/98 +f 57/58 97/99 58/59 +f 58/59 97/99 98/100 +f 98/100 99/101 58/59 +f 59/60 58/59 99/101 +f 99/101 100/102 59/60 +f 60/61 59/60 100/102 +f 100/102 101/103 60/61 +f 61/62 60/61 101/103 +f 102/104 62/63 101/103 +f 62/63 61/62 101/103 +f 63/64 62/63 103/105 +f 62/63 102/104 103/105 +f 103/105 104/106 63/64 +f 64/65 63/64 104/106 +f 104/106 105/107 64/65 +f 65/66 64/65 105/107 +f 105/107 106/108 65/66 +f 66/67 65/66 106/108 +f 106/108 107/109 66/67 +f 67/68 66/67 107/109 +f 107/109 108/110 67/68 +f 68/69 67/68 108/110 +f 108/110 109/111 68/69 +f 69/70 68/69 109/111 +f 109/111 110/112 69/70 +f 70/71 69/70 110/112 +f 111/113 71/72 110/112 +f 71/72 70/71 110/112 +f 112/114 72/73 111/113 +f 72/73 71/72 111/113 +f 113/115 73/74 112/114 +f 73/74 72/73 112/114 +f 114/116 74/75 113/115 +f 74/75 73/74 113/115 +f 115/117 75/76 114/116 +f 75/76 74/75 114/116 +f 116/118 76/77 115/117 +f 76/77 75/76 115/117 +f 117/119 77/78 116/118 +f 77/78 76/77 116/118 +f 77/78 117/119 78/79 +f 78/79 117/119 118/120 +f 118/120 119/121 78/79 +f 79/80 78/79 119/121 +f 119/121 120/122 79/80 +f 80/81 79/80 120/122 +f 120/122 81/123 80/81 +f 41/82 80/81 81/123 +f 121/124 122/125 81/83 +f 82/84 81/83 122/125 +f 123/126 83/85 122/125 +f 83/85 82/84 122/125 +f 84/86 83/85 124/127 +f 83/85 123/126 124/127 +f 124/127 125/128 84/86 +f 85/87 84/86 125/128 +f 125/128 126/129 85/87 +f 86/88 85/87 126/129 +f 126/129 127/130 86/88 +f 87/89 86/88 127/130 +f 127/130 128/131 87/89 +f 88/90 87/89 128/131 +f 128/131 129/132 88/90 +f 89/91 88/90 129/132 +f 129/132 130/133 89/91 +f 90/92 89/91 130/133 +f 131/134 91/93 130/133 +f 91/93 90/92 130/133 +f 132/135 92/94 131/134 +f 92/94 91/93 131/134 +f 133/136 93/95 132/135 +f 93/95 92/94 132/135 +f 134/137 94/96 133/136 +f 94/96 93/95 133/136 +f 135/138 95/97 134/137 +f 95/97 94/96 134/137 +f 136/139 96/98 135/138 +f 96/98 95/97 135/138 +f 96/98 136/139 97/99 +f 97/99 136/139 137/140 +f 137/140 138/141 97/99 +f 98/100 97/99 138/141 +f 138/141 139/142 98/100 +f 99/101 98/100 139/142 +f 139/142 140/143 99/101 +f 100/102 99/101 140/143 +f 140/143 141/144 100/102 +f 101/103 100/102 141/144 +f 141/144 142/145 101/103 +f 102/104 101/103 142/145 +f 143/146 103/105 142/145 +f 103/105 102/104 142/145 +f 104/106 103/105 144/147 +f 103/105 143/146 144/147 +f 144/147 145/148 104/106 +f 105/107 104/106 145/148 +f 145/148 146/149 105/107 +f 106/108 105/107 146/149 +f 146/149 147/150 106/108 +f 107/109 106/108 147/150 +f 147/150 148/151 107/109 +f 108/110 107/109 148/151 +f 148/151 149/152 108/110 +f 109/111 108/110 149/152 +f 149/152 150/153 109/111 +f 110/112 109/111 150/153 +f 151/154 111/113 150/153 +f 111/113 110/112 150/153 +f 152/155 112/114 151/154 +f 112/114 111/113 151/154 +f 153/156 113/115 152/155 +f 113/115 112/114 152/155 +f 154/157 114/116 153/156 +f 114/116 113/115 153/156 +f 155/158 115/117 154/157 +f 115/117 114/116 154/157 +f 156/159 116/118 155/158 +f 116/118 115/117 155/158 +f 116/118 156/159 117/119 +f 117/119 156/159 157/160 +f 157/160 158/161 117/119 +f 118/120 117/119 158/161 +f 158/161 159/162 118/120 +f 119/121 118/120 159/162 +f 159/162 160/163 119/121 +f 120/122 119/121 160/163 +f 160/163 121/164 120/122 +f 81/123 120/122 121/164 +f 161/165 162/166 121/124 +f 122/125 121/124 162/166 +f 163/167 123/126 162/166 +f 123/126 122/125 162/166 +f 164/168 124/127 163/167 +f 124/127 123/126 163/167 +f 125/128 124/127 165/169 +f 124/127 164/168 165/169 +f 165/169 166/170 125/128 +f 126/129 125/128 166/170 +f 166/170 167/171 126/129 +f 127/130 126/129 167/171 +f 167/171 168/172 127/130 +f 128/131 127/130 168/172 +f 168/172 169/173 128/131 +f 129/132 128/131 169/173 +f 169/173 170/174 129/132 +f 130/133 129/132 170/174 +f 171/175 131/134 170/174 +f 131/134 130/133 170/174 +f 172/176 132/135 171/175 +f 132/135 131/134 171/175 +f 173/177 133/136 172/176 +f 133/136 132/135 172/176 +f 174/178 134/137 173/177 +f 134/137 133/136 173/177 +f 175/179 135/138 174/178 +f 135/138 134/137 174/178 +f 135/138 175/179 136/139 +f 136/139 175/179 176/180 +f 176/180 177/181 136/139 +f 137/140 136/139 177/181 +f 177/181 178/182 137/140 +f 138/141 137/140 178/182 +f 178/182 179/183 138/141 +f 139/142 138/141 179/183 +f 179/183 180/184 139/142 +f 140/143 139/142 180/184 +f 180/184 181/185 140/143 +f 141/144 140/143 181/185 +f 181/185 182/186 141/144 +f 142/145 141/144 182/186 +f 183/187 143/146 182/186 +f 143/146 142/145 182/186 +f 184/188 144/147 183/187 +f 144/147 143/146 183/187 +f 145/148 144/147 185/189 +f 144/147 184/188 185/189 +f 185/189 186/190 145/148 +f 146/149 145/148 186/190 +f 186/190 187/191 146/149 +f 147/150 146/149 187/191 +f 187/191 188/192 147/150 +f 148/151 147/150 188/192 +f 188/192 189/193 148/151 +f 149/152 148/151 189/193 +f 189/193 190/194 149/152 +f 150/153 149/152 190/194 +f 191/195 151/154 190/194 +f 151/154 150/153 190/194 +f 192/196 152/155 191/195 +f 152/155 151/154 191/195 +f 193/197 153/156 192/196 +f 153/156 152/155 192/196 +f 194/198 154/157 193/197 +f 154/157 153/156 193/197 +f 195/199 155/158 194/198 +f 155/158 154/157 194/198 +f 155/158 195/199 156/159 +f 156/159 195/199 196/200 +f 196/200 197/201 156/159 +f 157/160 156/159 197/201 +f 197/201 198/202 157/160 +f 158/161 157/160 198/202 +f 198/202 199/203 158/161 +f 159/162 158/161 199/203 +f 199/203 200/204 159/162 +f 160/163 159/162 200/204 +f 200/204 161/205 160/163 +f 121/164 160/163 161/205 +f 201/206 202/207 161/165 +f 162/166 161/165 202/207 +f 202/207 203/208 162/166 +f 163/167 162/166 203/208 +f 204/209 164/168 203/208 +f 164/168 163/167 203/208 +f 165/169 164/168 205/210 +f 164/168 204/209 205/210 +f 205/210 206/211 165/169 +f 166/170 165/169 206/211 +f 206/211 207/212 166/170 +f 167/171 166/170 207/212 +f 207/212 208/213 167/171 +f 168/172 167/171 208/213 +f 208/213 209/214 168/172 +f 169/173 168/172 209/214 +f 209/214 210/215 169/173 +f 170/174 169/173 210/215 +f 211/216 171/175 210/215 +f 171/175 170/174 210/215 +f 212/217 172/176 211/216 +f 172/176 171/175 211/216 +f 213/218 173/177 212/217 +f 173/177 172/176 212/217 +f 214/219 174/178 213/218 +f 174/178 173/177 213/218 +f 174/178 214/219 175/179 +f 175/179 214/219 215/220 +f 175/179 215/220 176/180 +f 176/180 215/220 216/221 +f 216/221 217/222 176/180 +f 177/181 176/180 217/222 +f 217/222 218/223 177/181 +f 178/182 177/181 218/223 +f 218/223 219/224 178/182 +f 179/183 178/182 219/224 +f 219/224 220/225 179/183 +f 180/184 179/183 220/225 +f 220/225 221/226 180/184 +f 181/185 180/184 221/226 +f 221/226 222/227 181/185 +f 182/186 181/185 222/227 +f 222/227 223/228 182/186 +f 183/187 182/186 223/228 +f 224/229 184/188 223/228 +f 184/188 183/187 223/228 +f 185/189 184/188 225/230 +f 184/188 224/229 225/230 +f 186/190 185/189 226/231 +f 185/189 225/230 226/231 +f 226/231 227/232 186/190 +f 187/191 186/190 227/232 +f 227/232 228/233 187/191 +f 188/192 187/191 228/233 +f 228/233 229/234 188/192 +f 189/193 188/192 229/234 +f 229/234 230/235 189/193 +f 190/194 189/193 230/235 +f 231/236 191/195 230/235 +f 191/195 190/194 230/235 +f 232/237 192/196 231/236 +f 192/196 191/195 231/236 +f 233/238 193/197 232/237 +f 193/197 192/196 232/237 +f 234/239 194/198 233/238 +f 194/198 193/197 233/238 +f 235/240 195/199 234/239 +f 195/199 194/198 234/239 +f 195/199 235/240 196/200 +f 196/200 235/240 236/241 +f 236/241 237/242 196/200 +f 197/201 196/200 237/242 +f 237/242 238/243 197/201 +f 198/202 197/201 238/243 +f 238/243 239/244 198/202 +f 199/203 198/202 239/244 +f 239/244 240/245 199/203 +f 200/204 199/203 240/245 +f 240/245 201/246 200/204 +f 161/205 200/204 201/246 +f 241/247 242/248 201/206 +f 202/207 201/206 242/248 +f 242/248 243/249 202/207 +f 203/208 202/207 243/249 +f 243/249 244/250 203/208 +f 204/209 203/208 244/250 +f 244/250 245/251 204/209 +f 205/210 204/209 245/251 +f 206/211 205/210 246/252 +f 205/210 245/251 246/252 +f 246/252 247/253 206/211 +f 207/212 206/211 247/253 +f 247/253 248/254 207/212 +f 208/213 207/212 248/254 +f 249/255 209/214 248/254 +f 209/214 208/213 248/254 +f 249/255 250/256 209/214 +f 210/215 209/214 250/256 +f 251/257 211/216 250/256 +f 211/216 210/215 250/256 +f 251/257 252/258 211/216 +f 212/217 211/216 252/258 +f 253/259 213/218 252/258 +f 213/218 212/217 252/258 +f 254/260 214/219 253/259 +f 214/219 213/218 253/259 +f 214/219 254/260 215/220 +f 215/220 254/260 255/261 +f 256/262 216/221 255/261 +f 216/221 215/220 255/261 +f 256/262 257/263 216/221 +f 217/222 216/221 257/263 +f 257/263 258/264 217/222 +f 218/223 217/222 258/264 +f 258/264 259/265 218/223 +f 219/224 218/223 259/265 +f 259/265 260/266 219/224 +f 220/225 219/224 260/266 +f 260/266 261/267 220/225 +f 221/226 220/225 261/267 +f 261/267 262/268 221/226 +f 222/227 221/226 262/268 +f 262/268 263/269 222/227 +f 223/228 222/227 263/269 +f 263/269 264/270 223/228 +f 224/229 223/228 264/270 +f 264/270 265/271 224/229 +f 225/230 224/229 265/271 +f 226/231 225/230 266/272 +f 225/230 265/271 266/272 +f 266/272 267/273 226/231 +f 227/232 226/231 267/273 +f 267/273 268/274 227/232 +f 228/233 227/232 268/274 +f 269/275 229/234 268/274 +f 229/234 228/233 268/274 +f 269/275 270/276 229/234 +f 230/235 229/234 270/276 +f 271/277 231/236 270/276 +f 231/236 230/235 270/276 +f 271/277 272/278 231/236 +f 232/237 231/236 272/278 +f 273/279 233/238 272/278 +f 233/238 232/237 272/278 +f 274/280 234/239 273/279 +f 234/239 233/238 273/279 +f 234/239 274/280 235/240 +f 235/240 274/280 275/281 +f 276/282 236/241 275/281 +f 236/241 235/240 275/281 +f 276/282 277/283 236/241 +f 237/242 236/241 277/283 +f 277/283 278/284 237/242 +f 238/243 237/242 278/284 +f 278/284 279/285 238/243 +f 239/244 238/243 279/285 +f 279/285 280/286 239/244 +f 240/245 239/244 280/286 +f 280/286 241/287 240/245 +f 201/246 240/245 241/287 +f 281/288 282/289 241/247 +f 242/248 241/247 282/289 +f 282/289 283/290 242/248 +f 243/249 242/248 283/290 +f 283/290 284/291 243/249 +f 244/250 243/249 284/291 +f 284/291 285/292 244/250 +f 245/251 244/250 285/292 +f 285/292 286/293 245/251 +f 246/252 245/251 286/293 +f 286/293 287/294 246/252 +f 247/253 246/252 287/294 +f 287/294 288/295 247/253 +f 248/254 247/253 288/295 +f 288/295 289/296 248/254 +f 249/255 248/254 289/296 +f 289/296 290/297 249/255 +f 250/256 249/255 290/297 +f 291/298 251/257 290/297 +f 251/257 250/256 290/297 +f 292/299 252/258 291/298 +f 252/258 251/257 291/298 +f 293/300 253/259 292/299 +f 253/259 252/258 292/299 +f 294/301 254/260 293/300 +f 254/260 253/259 293/300 +f 295/302 255/261 294/301 +f 255/261 254/260 294/301 +f 295/302 296/303 255/261 +f 256/262 255/261 296/303 +f 296/303 297/304 256/262 +f 257/263 256/262 297/304 +f 297/304 298/305 257/263 +f 258/264 257/263 298/305 +f 298/305 299/306 258/264 +f 259/265 258/264 299/306 +f 299/306 300/307 259/265 +f 260/266 259/265 300/307 +f 300/307 301/308 260/266 +f 261/267 260/266 301/308 +f 301/308 302/309 261/267 +f 262/268 261/267 302/309 +f 302/309 303/310 262/268 +f 263/269 262/268 303/310 +f 303/310 304/311 263/269 +f 264/270 263/269 304/311 +f 304/311 305/312 264/270 +f 265/271 264/270 305/312 +f 305/312 306/313 265/271 +f 266/272 265/271 306/313 +f 306/313 307/314 266/272 +f 267/273 266/272 307/314 +f 307/314 308/315 267/273 +f 268/274 267/273 308/315 +f 308/315 309/316 268/274 +f 269/275 268/274 309/316 +f 309/316 310/317 269/275 +f 270/276 269/275 310/317 +f 311/318 271/277 310/317 +f 271/277 270/276 310/317 +f 312/319 272/278 311/318 +f 272/278 271/277 311/318 +f 313/320 273/279 312/319 +f 273/279 272/278 312/319 +f 314/321 274/280 313/320 +f 274/280 273/279 313/320 +f 315/322 275/281 314/321 +f 275/281 274/280 314/321 +f 315/322 316/323 275/281 +f 276/282 275/281 316/323 +f 316/323 317/324 276/282 +f 277/283 276/282 317/324 +f 317/324 318/325 277/283 +f 278/284 277/283 318/325 +f 318/325 319/326 278/284 +f 279/285 278/284 319/326 +f 319/326 320/327 279/285 +f 280/286 279/285 320/327 +f 320/327 281/328 280/286 +f 241/287 280/286 281/328 +f 321/329 322/330 281/288 +f 282/289 281/288 322/330 +f 322/330 323/331 282/289 +f 283/290 282/289 323/331 +f 323/331 324/332 283/290 +f 284/291 283/290 324/332 +f 324/332 325/333 284/291 +f 285/292 284/291 325/333 +f 325/333 326/334 285/292 +f 286/293 285/292 326/334 +f 287/294 286/293 327/335 +f 286/293 326/334 327/335 +f 327/335 328/336 287/294 +f 288/295 287/294 328/336 +f 328/336 329/337 288/295 +f 289/296 288/295 329/337 +f 329/337 330/338 289/296 +f 290/297 289/296 330/338 +f 331/339 291/298 330/338 +f 291/298 290/297 330/338 +f 332/340 292/299 331/339 +f 292/299 291/298 331/339 +f 333/341 293/300 332/340 +f 293/300 292/299 332/340 +f 293/300 333/341 294/301 +f 294/301 333/341 334/342 +f 335/343 295/302 334/342 +f 295/302 294/301 334/342 +f 335/343 336/344 295/302 +f 296/303 295/302 336/344 +f 336/344 337/345 296/303 +f 297/304 296/303 337/345 +f 337/345 338/346 297/304 +f 298/305 297/304 338/346 +f 338/346 339/347 298/305 +f 299/306 298/305 339/347 +f 339/347 340/348 299/306 +f 300/307 299/306 340/348 +f 340/348 341/349 300/307 +f 301/308 300/307 341/349 +f 341/349 342/350 301/308 +f 302/309 301/308 342/350 +f 342/350 343/351 302/309 +f 303/310 302/309 343/351 +f 343/351 344/352 303/310 +f 304/311 303/310 344/352 +f 344/352 345/353 304/311 +f 305/312 304/311 345/353 +f 345/353 346/354 305/312 +f 306/313 305/312 346/354 +f 307/314 306/313 347/355 +f 306/313 346/354 347/355 +f 347/355 348/356 307/314 +f 308/315 307/314 348/356 +f 348/356 349/357 308/315 +f 309/316 308/315 349/357 +f 349/357 350/358 309/316 +f 310/317 309/316 350/358 +f 351/359 311/318 350/358 +f 311/318 310/317 350/358 +f 352/360 312/319 351/359 +f 312/319 311/318 351/359 +f 353/361 313/320 352/360 +f 313/320 312/319 352/360 +f 313/320 353/361 314/321 +f 314/321 353/361 354/362 +f 355/363 315/322 354/362 +f 315/322 314/321 354/362 +f 355/363 356/364 315/322 +f 316/323 315/322 356/364 +f 356/364 357/365 316/323 +f 317/324 316/323 357/365 +f 357/365 358/366 317/324 +f 318/325 317/324 358/366 +f 358/366 359/367 318/325 +f 319/326 318/325 359/367 +f 359/367 360/368 319/326 +f 320/327 319/326 360/368 +f 360/368 321/369 320/327 +f 281/328 320/327 321/369 +f 361/370 362/371 321/329 +f 322/330 321/329 362/371 +f 362/371 363/372 322/330 +f 323/331 322/330 363/372 +f 363/372 364/373 323/331 +f 324/332 323/331 364/373 +f 364/373 365/374 324/332 +f 325/333 324/332 365/374 +f 365/374 366/375 325/333 +f 326/334 325/333 366/375 +f 327/335 326/334 367/376 +f 326/334 366/375 367/376 +f 367/376 368/377 327/335 +f 328/336 327/335 368/377 +f 368/377 369/378 328/336 +f 329/337 328/336 369/378 +f 369/378 370/379 329/337 +f 330/338 329/337 370/379 +f 371/380 331/339 370/379 +f 331/339 330/338 370/379 +f 372/381 332/340 371/380 +f 332/340 331/339 371/380 +f 373/382 333/341 372/381 +f 333/341 332/340 372/381 +f 333/341 373/382 334/342 +f 334/342 373/382 374/383 +f 375/384 335/343 374/383 +f 335/343 334/342 374/383 +f 375/384 376/385 335/343 +f 336/344 335/343 376/385 +f 376/385 377/386 336/344 +f 337/345 336/344 377/386 +f 377/386 378/387 337/345 +f 338/346 337/345 378/387 +f 378/387 379/388 338/346 +f 339/347 338/346 379/388 +f 379/388 380/389 339/347 +f 340/348 339/347 380/389 +f 380/389 381/390 340/348 +f 341/349 340/348 381/390 +f 381/390 382/391 341/349 +f 342/350 341/349 382/391 +f 382/391 383/392 342/350 +f 343/351 342/350 383/392 +f 383/392 384/393 343/351 +f 344/352 343/351 384/393 +f 384/393 385/394 344/352 +f 345/353 344/352 385/394 +f 385/394 386/395 345/353 +f 346/354 345/353 386/395 +f 347/355 346/354 387/396 +f 346/354 386/395 387/396 +f 387/396 388/397 347/355 +f 348/356 347/355 388/397 +f 388/397 389/398 348/356 +f 349/357 348/356 389/398 +f 389/398 390/399 349/357 +f 350/358 349/357 390/399 +f 391/400 351/359 390/399 +f 351/359 350/358 390/399 +f 392/401 352/360 391/400 +f 352/360 351/359 391/400 +f 393/402 353/361 392/401 +f 353/361 352/360 392/401 +f 353/361 393/402 354/362 +f 354/362 393/402 394/403 +f 395/404 355/363 394/403 +f 355/363 354/362 394/403 +f 395/404 396/405 355/363 +f 356/364 355/363 396/405 +f 396/405 397/406 356/364 +f 357/365 356/364 397/406 +f 397/406 398/407 357/365 +f 358/366 357/365 398/407 +f 398/407 399/408 358/366 +f 359/367 358/366 399/408 +f 399/408 400/409 359/367 +f 360/368 359/367 400/409 +f 400/409 361/410 360/368 +f 321/369 360/368 361/410 +f 401/411 402/412 361/370 +f 362/371 361/370 402/412 +f 402/412 403/413 362/371 +f 363/372 362/371 403/413 +f 403/413 404/414 363/372 +f 364/373 363/372 404/414 +f 404/414 405/415 364/373 +f 365/374 364/373 405/415 +f 405/415 406/416 365/374 +f 366/375 365/374 406/416 +f 367/376 366/375 407/417 +f 366/375 406/416 407/417 +f 407/417 408/418 367/376 +f 368/377 367/376 408/418 +f 408/418 409/419 368/377 +f 369/378 368/377 409/419 +f 409/419 410/420 369/378 +f 370/379 369/378 410/420 +f 410/420 411/421 370/379 +f 371/380 370/379 411/421 +f 412/422 372/381 411/421 +f 372/381 371/380 411/421 +f 413/423 373/382 412/422 +f 373/382 372/381 412/422 +f 373/382 413/423 374/383 +f 374/383 413/423 414/424 +f 414/424 415/425 374/383 +f 375/384 374/383 415/425 +f 415/425 416/426 375/384 +f 376/385 375/384 416/426 +f 416/426 417/427 376/385 +f 377/386 376/385 417/427 +f 417/427 418/428 377/386 +f 378/387 377/386 418/428 +f 418/428 419/429 378/387 +f 379/388 378/387 419/429 +f 419/429 420/430 379/388 +f 380/389 379/388 420/430 +f 420/430 421/431 380/389 +f 381/390 380/389 421/431 +f 421/431 422/432 381/390 +f 382/391 381/390 422/432 +f 422/432 423/433 382/391 +f 383/392 382/391 423/433 +f 423/433 424/434 383/392 +f 384/393 383/392 424/434 +f 424/434 425/435 384/393 +f 385/394 384/393 425/435 +f 425/435 426/436 385/394 +f 386/395 385/394 426/436 +f 387/396 386/395 427/437 +f 386/395 426/436 427/437 +f 427/437 428/438 387/396 +f 388/397 387/396 428/438 +f 428/438 429/439 388/397 +f 389/398 388/397 429/439 +f 429/439 430/440 389/398 +f 390/399 389/398 430/440 +f 430/440 431/441 390/399 +f 391/400 390/399 431/441 +f 432/442 392/401 431/441 +f 392/401 391/400 431/441 +f 433/443 393/402 432/442 +f 393/402 392/401 432/442 +f 393/402 433/443 394/403 +f 394/403 433/443 434/444 +f 434/444 435/445 394/403 +f 395/404 394/403 435/445 +f 435/445 436/446 395/404 +f 396/405 395/404 436/446 +f 436/446 437/447 396/405 +f 397/406 396/405 437/447 +f 437/447 438/448 397/406 +f 398/407 397/406 438/448 +f 438/448 439/449 398/407 +f 399/408 398/407 439/449 +f 439/449 440/450 399/408 +f 400/409 399/408 440/450 +f 440/450 401/451 400/409 +f 361/410 400/409 401/451 +f 402/412 401/411 442/453 +f 401/411 441/452 442/453 +f 403/413 402/412 443/454 +f 402/412 442/453 443/454 +f 404/414 403/413 444/455 +f 403/413 443/454 444/455 +f 405/415 404/414 445/456 +f 404/414 444/455 445/456 +f 406/416 405/415 446/457 +f 405/415 445/456 446/457 +f 406/416 446/457 407/417 +f 407/417 446/457 447/458 +f 407/417 447/458 408/418 +f 408/418 447/458 448/459 +f 408/418 448/459 409/419 +f 409/419 448/459 449/460 +f 410/420 409/419 450/461 +f 409/419 449/460 450/461 +f 411/421 410/420 451/462 +f 410/420 450/461 451/462 +f 412/422 411/421 452/463 +f 411/421 451/462 452/463 +f 413/423 412/422 453/464 +f 412/422 452/463 453/464 +f 414/424 413/423 454/465 +f 413/423 453/464 454/465 +f 415/425 414/424 455/466 +f 414/424 454/465 455/466 +f 416/426 415/425 456/467 +f 415/425 455/466 456/467 +f 417/427 416/426 457/468 +f 416/426 456/467 457/468 +f 418/428 417/427 458/469 +f 417/427 457/468 458/469 +f 419/429 418/428 459/470 +f 418/428 458/469 459/470 +f 420/430 419/429 460/471 +f 419/429 459/470 460/471 +f 421/431 420/430 461/472 +f 420/430 460/471 461/472 +f 422/432 421/431 462/473 +f 421/431 461/472 462/473 +f 423/433 422/432 463/474 +f 422/432 462/473 463/474 +f 424/434 423/433 464/475 +f 423/433 463/474 464/475 +f 425/435 424/434 465/476 +f 424/434 464/475 465/476 +f 426/436 425/435 466/477 +f 425/435 465/476 466/477 +f 426/436 466/477 427/437 +f 427/437 466/477 467/478 +f 427/437 467/478 428/438 +f 428/438 467/478 468/479 +f 428/438 468/479 429/439 +f 429/439 468/479 469/480 +f 430/440 429/439 470/481 +f 429/439 469/480 470/481 +f 431/441 430/440 471/482 +f 430/440 470/481 471/482 +f 432/442 431/441 472/483 +f 431/441 471/482 472/483 +f 433/443 432/442 473/484 +f 432/442 472/483 473/484 +f 434/444 433/443 474/485 +f 433/443 473/484 474/485 +f 435/445 434/444 475/486 +f 434/444 474/485 475/486 +f 436/446 435/445 476/487 +f 435/445 475/486 476/487 +f 437/447 436/446 477/488 +f 436/446 476/487 477/488 +f 438/448 437/447 478/489 +f 437/447 477/488 478/489 +f 439/449 438/448 479/490 +f 438/448 478/489 479/490 +f 440/450 439/449 480/491 +f 439/449 479/490 480/491 +f 401/451 440/450 441/492 +f 440/450 480/491 441/492 +f 442/453 441/452 482/494 +f 441/452 481/493 482/494 +f 443/454 442/453 483/495 +f 442/453 482/494 483/495 +f 444/455 443/454 484/496 +f 443/454 483/495 484/496 +f 445/456 444/455 485/497 +f 444/455 484/496 485/497 +f 445/456 485/497 446/457 +f 446/457 485/497 486/498 +f 446/457 486/498 447/458 +f 447/458 486/498 487/499 +f 447/458 487/499 448/459 +f 448/459 487/499 488/500 +f 448/459 488/500 449/460 +f 449/460 488/500 489/501 +f 449/460 489/501 450/461 +f 450/461 489/501 490/502 +f 451/462 450/461 491/503 +f 450/461 490/502 491/503 +f 452/463 451/462 492/504 +f 451/462 491/503 492/504 +f 453/464 452/463 493/505 +f 452/463 492/504 493/505 +f 454/465 453/464 494/506 +f 453/464 493/505 494/506 +f 455/466 454/465 495/507 +f 454/465 494/506 495/507 +f 456/467 455/466 496/508 +f 455/466 495/507 496/508 +f 457/468 456/467 497/509 +f 456/467 496/508 497/509 +f 458/469 457/468 498/510 +f 457/468 497/509 498/510 +f 459/470 458/469 499/511 +f 458/469 498/510 499/511 +f 460/471 459/470 500/512 +f 459/470 499/511 500/512 +f 461/472 460/471 501/513 +f 460/471 500/512 501/513 +f 462/473 461/472 502/514 +f 461/472 501/513 502/514 +f 463/474 462/473 503/515 +f 462/473 502/514 503/515 +f 464/475 463/474 504/516 +f 463/474 503/515 504/516 +f 465/476 464/475 505/517 +f 464/475 504/516 505/517 +f 465/476 505/517 466/477 +f 466/477 505/517 506/518 +f 466/477 506/518 467/478 +f 467/478 506/518 507/519 +f 467/478 507/519 468/479 +f 468/479 507/519 508/520 +f 468/479 508/520 469/480 +f 469/480 508/520 509/521 +f 469/480 509/521 470/481 +f 470/481 509/521 510/522 +f 471/482 470/481 511/523 +f 470/481 510/522 511/523 +f 472/483 471/482 512/524 +f 471/482 511/523 512/524 +f 473/484 472/483 513/525 +f 472/483 512/524 513/525 +f 474/485 473/484 514/526 +f 473/484 513/525 514/526 +f 475/486 474/485 515/527 +f 474/485 514/526 515/527 +f 476/487 475/486 516/528 +f 475/486 515/527 516/528 +f 477/488 476/487 517/529 +f 476/487 516/528 517/529 +f 478/489 477/488 518/530 +f 477/488 517/529 518/530 +f 479/490 478/489 519/531 +f 478/489 518/530 519/531 +f 480/491 479/490 520/532 +f 479/490 519/531 520/532 +f 441/492 480/491 481/533 +f 480/491 520/532 481/533 +f 482/494 481/493 522/535 +f 481/493 521/534 522/535 +f 483/495 482/494 523/536 +f 482/494 522/535 523/536 +f 484/496 483/495 524/537 +f 483/495 523/536 524/537 +f 485/497 484/496 525/538 +f 484/496 524/537 525/538 +f 485/497 525/538 486/498 +f 486/498 525/538 526/539 +f 527/540 487/499 526/539 +f 487/499 486/498 526/539 +f 487/499 527/540 488/500 +f 488/500 527/540 528/541 +f 488/500 528/541 489/501 +f 489/501 528/541 529/542 +f 489/501 529/542 490/502 +f 490/502 529/542 530/543 +f 491/503 490/502 531/544 +f 490/502 530/543 531/544 +f 492/504 491/503 532/545 +f 491/503 531/544 532/545 +f 493/505 492/504 533/546 +f 492/504 532/545 533/546 +f 533/546 534/547 493/505 +f 494/506 493/505 534/547 +f 495/507 494/506 535/548 +f 494/506 534/547 535/548 +f 496/508 495/507 536/549 +f 495/507 535/548 536/549 +f 497/509 496/508 537/550 +f 496/508 536/549 537/550 +f 498/510 497/509 538/551 +f 497/509 537/550 538/551 +f 499/511 498/510 539/552 +f 498/510 538/551 539/552 +f 500/512 499/511 540/553 +f 499/511 539/552 540/553 +f 501/513 500/512 541/554 +f 500/512 540/553 541/554 +f 502/514 501/513 542/555 +f 501/513 541/554 542/555 +f 503/515 502/514 543/556 +f 502/514 542/555 543/556 +f 504/516 503/515 544/557 +f 503/515 543/556 544/557 +f 505/517 504/516 545/558 +f 504/516 544/557 545/558 +f 505/517 545/558 506/518 +f 506/518 545/558 546/559 +f 547/560 507/519 546/559 +f 507/519 506/518 546/559 +f 507/519 547/560 508/520 +f 508/520 547/560 548/561 +f 508/520 548/561 509/521 +f 509/521 548/561 549/562 +f 509/521 549/562 510/522 +f 510/522 549/562 550/563 +f 511/523 510/522 551/564 +f 510/522 550/563 551/564 +f 512/524 511/523 552/565 +f 511/523 551/564 552/565 +f 513/525 512/524 553/566 +f 512/524 552/565 553/566 +f 553/566 554/567 513/525 +f 514/526 513/525 554/567 +f 515/527 514/526 555/568 +f 514/526 554/567 555/568 +f 516/528 515/527 556/569 +f 515/527 555/568 556/569 +f 517/529 516/528 557/570 +f 516/528 556/569 557/570 +f 518/530 517/529 558/571 +f 517/529 557/570 558/571 +f 519/531 518/530 559/572 +f 518/530 558/571 559/572 +f 520/532 519/531 560/573 +f 519/531 559/572 560/573 +f 481/533 520/532 521/574 +f 520/532 560/573 521/574 +f 522/535 521/534 562/576 +f 521/534 561/575 562/576 +f 523/536 522/535 563/577 +f 522/535 562/576 563/577 +f 524/537 523/536 564/578 +f 523/536 563/577 564/578 +f 525/538 524/537 565/579 +f 524/537 564/578 565/579 +f 525/538 565/579 526/539 +f 526/539 565/579 566/580 +f 526/539 566/580 527/540 +f 527/540 566/580 567/581 +f 527/540 567/581 528/541 +f 528/541 567/581 568/582 +f 528/541 568/582 529/542 +f 529/542 568/582 569/583 +f 529/542 569/583 530/543 +f 530/543 569/583 570/584 +f 531/544 530/543 571/585 +f 530/543 570/584 571/585 +f 532/545 531/544 572/586 +f 531/544 571/585 572/586 +f 533/546 532/545 573/587 +f 532/545 572/586 573/587 +f 534/547 533/546 574/588 +f 533/546 573/587 574/588 +f 535/548 534/547 575/589 +f 534/547 574/588 575/589 +f 536/549 535/548 576/590 +f 535/548 575/589 576/590 +f 537/550 536/549 577/591 +f 536/549 576/590 577/591 +f 538/551 537/550 578/592 +f 537/550 577/591 578/592 +f 539/552 538/551 579/593 +f 538/551 578/592 579/593 +f 540/553 539/552 580/594 +f 539/552 579/593 580/594 +f 541/554 540/553 581/595 +f 540/553 580/594 581/595 +f 542/555 541/554 582/596 +f 541/554 581/595 582/596 +f 543/556 542/555 583/597 +f 542/555 582/596 583/597 +f 544/557 543/556 584/598 +f 543/556 583/597 584/598 +f 545/558 544/557 585/599 +f 544/557 584/598 585/599 +f 545/558 585/599 546/559 +f 546/559 585/599 586/600 +f 546/559 586/600 547/560 +f 547/560 586/600 587/601 +f 547/560 587/601 548/561 +f 548/561 587/601 588/602 +f 548/561 588/602 549/562 +f 549/562 588/602 589/603 +f 549/562 589/603 550/563 +f 550/563 589/603 590/604 +f 551/564 550/563 591/605 +f 550/563 590/604 591/605 +f 552/565 551/564 592/606 +f 551/564 591/605 592/606 +f 553/566 552/565 593/607 +f 552/565 592/606 593/607 +f 554/567 553/566 594/608 +f 553/566 593/607 594/608 +f 555/568 554/567 595/609 +f 554/567 594/608 595/609 +f 556/569 555/568 596/610 +f 555/568 595/609 596/610 +f 557/570 556/569 597/611 +f 556/569 596/610 597/611 +f 558/571 557/570 598/612 +f 557/570 597/611 598/612 +f 559/572 558/571 599/613 +f 558/571 598/612 599/613 +f 560/573 559/572 600/614 +f 559/572 599/613 600/614 +f 521/574 560/573 561/615 +f 560/573 600/614 561/615 +f 562/576 561/575 602/617 +f 561/575 601/616 602/617 +f 563/577 562/576 603/618 +f 562/576 602/617 603/618 +f 564/578 563/577 604/619 +f 563/577 603/618 604/619 +f 564/578 604/619 565/579 +f 565/579 604/619 605/620 +f 606/621 566/580 605/620 +f 566/580 565/579 605/620 +f 566/580 606/621 567/581 +f 567/581 606/621 607/622 +f 567/581 607/622 568/582 +f 568/582 607/622 608/623 +f 569/583 568/582 609/624 +f 568/582 608/623 609/624 +f 569/583 609/624 570/584 +f 570/584 609/624 610/625 +f 571/585 570/584 611/626 +f 570/584 610/625 611/626 +f 571/585 611/626 572/586 +f 572/586 611/626 612/627 +f 573/587 572/586 613/628 +f 572/586 612/627 613/628 +f 574/588 573/587 614/629 +f 573/587 613/628 614/629 +f 614/629 615/630 574/588 +f 575/589 574/588 615/630 +f 576/590 575/589 616/631 +f 575/589 615/630 616/631 +f 577/591 576/590 617/632 +f 576/590 616/631 617/632 +f 578/592 577/591 618/633 +f 577/591 617/632 618/633 +f 579/593 578/592 619/634 +f 578/592 618/633 619/634 +f 580/594 579/593 620/635 +f 579/593 619/634 620/635 +f 581/595 580/594 621/636 +f 580/594 620/635 621/636 +f 582/596 581/595 622/637 +f 581/595 621/636 622/637 +f 583/597 582/596 623/638 +f 582/596 622/637 623/638 +f 584/598 583/597 624/639 +f 583/597 623/638 624/639 +f 584/598 624/639 585/599 +f 585/599 624/639 625/640 +f 626/641 586/600 625/640 +f 586/600 585/599 625/640 +f 586/600 626/641 587/601 +f 587/601 626/641 627/642 +f 587/601 627/642 588/602 +f 588/602 627/642 628/643 +f 589/603 588/602 629/644 +f 588/602 628/643 629/644 +f 589/603 629/644 590/604 +f 590/604 629/644 630/645 +f 591/605 590/604 631/646 +f 590/604 630/645 631/646 +f 591/605 631/646 592/606 +f 592/606 631/646 632/647 +f 593/607 592/606 633/648 +f 592/606 632/647 633/648 +f 594/608 593/607 634/649 +f 593/607 633/648 634/649 +f 634/649 635/650 594/608 +f 595/609 594/608 635/650 +f 596/610 595/609 636/651 +f 595/609 635/650 636/651 +f 597/611 596/610 637/652 +f 596/610 636/651 637/652 +f 598/612 597/611 638/653 +f 597/611 637/652 638/653 +f 599/613 598/612 639/654 +f 598/612 638/653 639/654 +f 600/614 599/613 640/655 +f 599/613 639/654 640/655 +f 561/615 600/614 601/656 +f 600/614 640/655 601/656 +f 602/617 601/616 642/658 +f 601/616 641/657 642/658 +f 603/618 602/617 643/659 +f 602/617 642/658 643/659 +f 604/619 603/618 644/660 +f 603/618 643/659 644/660 +f 604/619 644/660 605/620 +f 605/620 644/660 645/661 +f 605/620 645/661 606/621 +f 606/621 645/661 646/662 +f 606/621 646/662 607/622 +f 607/622 646/662 647/663 +f 607/622 647/663 608/623 +f 608/623 647/663 648/664 +f 608/623 648/664 609/624 +f 609/624 648/664 649/665 +f 609/624 649/665 610/625 +f 610/625 649/665 650/666 +f 611/626 610/625 651/667 +f 610/625 650/666 651/667 +f 612/627 611/626 652/668 +f 611/626 651/667 652/668 +f 613/628 612/627 653/669 +f 612/627 652/668 653/669 +f 614/629 613/628 654/670 +f 613/628 653/669 654/670 +f 615/630 614/629 655/671 +f 614/629 654/670 655/671 +f 616/631 615/630 656/672 +f 615/630 655/671 656/672 +f 616/631 656/672 617/632 +f 617/632 656/672 657/673 +f 618/633 617/632 658/674 +f 617/632 657/673 658/674 +f 619/634 618/633 659/675 +f 618/633 658/674 659/675 +f 620/635 619/634 660/676 +f 619/634 659/675 660/676 +f 621/636 620/635 661/677 +f 620/635 660/676 661/677 +f 622/637 621/636 662/678 +f 621/636 661/677 662/678 +f 623/638 622/637 663/679 +f 622/637 662/678 663/679 +f 624/639 623/638 664/680 +f 623/638 663/679 664/680 +f 624/639 664/680 625/640 +f 625/640 664/680 665/681 +f 625/640 665/681 626/641 +f 626/641 665/681 666/682 +f 626/641 666/682 627/642 +f 627/642 666/682 667/683 +f 627/642 667/683 628/643 +f 628/643 667/683 668/684 +f 628/643 668/684 629/644 +f 629/644 668/684 669/685 +f 629/644 669/685 630/645 +f 630/645 669/685 670/686 +f 631/646 630/645 671/687 +f 630/645 670/686 671/687 +f 632/647 631/646 672/688 +f 631/646 671/687 672/688 +f 633/648 632/647 673/689 +f 632/647 672/688 673/689 +f 634/649 633/648 674/690 +f 633/648 673/689 674/690 +f 635/650 634/649 675/691 +f 634/649 674/690 675/691 +f 636/651 635/650 676/692 +f 635/650 675/691 676/692 +f 636/651 676/692 637/652 +f 637/652 676/692 677/693 +f 638/653 637/652 678/694 +f 637/652 677/693 678/694 +f 639/654 638/653 679/695 +f 638/653 678/694 679/695 +f 640/655 639/654 680/696 +f 639/654 679/695 680/696 +f 601/656 640/655 641/697 +f 640/655 680/696 641/697 +f 642/658 641/657 682/699 +f 641/657 681/698 682/699 +f 643/659 642/658 683/700 +f 642/658 682/699 683/700 +f 644/660 643/659 684/701 +f 643/659 683/700 684/701 +f 685/702 645/661 684/701 +f 645/661 644/660 684/701 +f 645/661 685/702 646/662 +f 646/662 685/702 686/703 +f 646/662 686/703 647/663 +f 647/663 686/703 687/704 +f 647/663 687/704 648/664 +f 648/664 687/704 688/705 +f 648/664 688/705 649/665 +f 649/665 688/705 689/706 +f 649/665 689/706 650/666 +f 650/666 689/706 690/707 +f 651/667 650/666 691/708 +f 650/666 690/707 691/708 +f 652/668 651/667 692/709 +f 651/667 691/708 692/709 +f 653/669 652/668 693/710 +f 652/668 692/709 693/710 +f 654/670 653/669 694/711 +f 653/669 693/710 694/711 +f 655/671 654/670 695/712 +f 654/670 694/711 695/712 +f 695/712 696/713 655/671 +f 656/672 655/671 696/713 +f 656/672 696/713 657/673 +f 657/673 696/713 697/714 +f 657/673 697/714 658/674 +f 658/674 697/714 698/715 +f 659/675 658/674 699/716 +f 658/674 698/715 699/716 +f 660/676 659/675 700/717 +f 659/675 699/716 700/717 +f 661/677 660/676 701/718 +f 660/676 700/717 701/718 +f 662/678 661/677 702/719 +f 661/677 701/718 702/719 +f 663/679 662/678 703/720 +f 662/678 702/719 703/720 +f 664/680 663/679 704/721 +f 663/679 703/720 704/721 +f 705/722 665/681 704/721 +f 665/681 664/680 704/721 +f 665/681 705/722 666/682 +f 666/682 705/722 706/723 +f 666/682 706/723 667/683 +f 667/683 706/723 707/724 +f 667/683 707/724 668/684 +f 668/684 707/724 708/725 +f 668/684 708/725 669/685 +f 669/685 708/725 709/726 +f 669/685 709/726 670/686 +f 670/686 709/726 710/727 +f 671/687 670/686 711/728 +f 670/686 710/727 711/728 +f 672/688 671/687 712/729 +f 671/687 711/728 712/729 +f 673/689 672/688 713/730 +f 672/688 712/729 713/730 +f 674/690 673/689 714/731 +f 673/689 713/730 714/731 +f 675/691 674/690 715/732 +f 674/690 714/731 715/732 +f 715/732 716/733 675/691 +f 676/692 675/691 716/733 +f 676/692 716/733 677/693 +f 677/693 716/733 717/734 +f 677/693 717/734 678/694 +f 678/694 717/734 718/735 +f 679/695 678/694 719/736 +f 678/694 718/735 719/736 +f 680/696 679/695 720/737 +f 679/695 719/736 720/737 +f 641/697 680/696 681/738 +f 680/696 720/737 681/738 +f 682/699 681/698 722/740 +f 681/698 721/739 722/740 +f 683/700 682/699 723/741 +f 682/699 722/740 723/741 +f 724/742 684/701 723/741 +f 684/701 683/700 723/741 +f 684/701 724/742 685/702 +f 685/702 724/742 725/743 +f 685/702 725/743 686/703 +f 686/703 725/743 726/744 +f 686/703 726/744 687/704 +f 687/704 726/744 727/745 +f 687/704 727/745 688/705 +f 688/705 727/745 728/746 +f 688/705 728/746 689/706 +f 689/706 728/746 729/747 +f 689/706 729/747 690/707 +f 690/707 729/747 730/748 +f 691/708 690/707 731/749 +f 690/707 730/748 731/749 +f 692/709 691/708 732/750 +f 691/708 731/749 732/750 +f 693/710 692/709 733/751 +f 692/709 732/750 733/751 +f 694/711 693/710 734/752 +f 693/710 733/751 734/752 +f 695/712 694/711 735/753 +f 694/711 734/752 735/753 +f 696/713 695/712 736/754 +f 695/712 735/753 736/754 +f 736/754 737/755 696/713 +f 697/714 696/713 737/755 +f 697/714 737/755 698/715 +f 698/715 737/755 738/756 +f 699/716 698/715 739/757 +f 698/715 738/756 739/757 +f 700/717 699/716 740/758 +f 699/716 739/757 740/758 +f 701/718 700/717 741/759 +f 700/717 740/758 741/759 +f 702/719 701/718 742/760 +f 701/718 741/759 742/760 +f 703/720 702/719 743/761 +f 702/719 742/760 743/761 +f 744/762 704/721 743/761 +f 704/721 703/720 743/761 +f 704/721 744/762 705/722 +f 705/722 744/762 745/763 +f 705/722 745/763 706/723 +f 706/723 745/763 746/764 +f 706/723 746/764 707/724 +f 707/724 746/764 747/765 +f 707/724 747/765 708/725 +f 708/725 747/765 748/766 +f 708/725 748/766 709/726 +f 709/726 748/766 749/767 +f 709/726 749/767 710/727 +f 710/727 749/767 750/768 +f 711/728 710/727 751/769 +f 710/727 750/768 751/769 +f 712/729 711/728 752/770 +f 711/728 751/769 752/770 +f 713/730 712/729 753/771 +f 712/729 752/770 753/771 +f 714/731 713/730 754/772 +f 713/730 753/771 754/772 +f 715/732 714/731 755/773 +f 714/731 754/772 755/773 +f 716/733 715/732 756/774 +f 715/732 755/773 756/774 +f 756/774 757/775 716/733 +f 717/734 716/733 757/775 +f 717/734 757/775 718/735 +f 718/735 757/775 758/776 +f 719/736 718/735 759/777 +f 718/735 758/776 759/777 +f 720/737 719/736 760/778 +f 719/736 759/777 760/778 +f 681/738 720/737 721/779 +f 720/737 760/778 721/779 +f 722/740 721/739 762/781 +f 721/739 761/780 762/781 +f 763/782 723/741 762/781 +f 723/741 722/740 762/781 +f 723/741 763/782 724/742 +f 724/742 763/782 764/783 +f 724/742 764/783 725/743 +f 725/743 764/783 765/784 +f 725/743 765/784 726/744 +f 726/744 765/784 766/785 +f 726/744 766/785 727/745 +f 727/745 766/785 767/786 +f 727/745 767/786 728/746 +f 728/746 767/786 768/787 +f 728/746 768/787 729/747 +f 729/747 768/787 769/788 +f 729/747 769/788 730/748 +f 730/748 769/788 770/789 +f 731/749 730/748 771/790 +f 730/748 770/789 771/790 +f 732/750 731/749 772/791 +f 731/749 771/790 772/791 +f 733/751 732/750 773/792 +f 732/750 772/791 773/792 +f 734/752 733/751 774/793 +f 733/751 773/792 774/793 +f 735/753 734/752 775/794 +f 734/752 774/793 775/794 +f 736/754 735/753 776/795 +f 735/753 775/794 776/795 +f 737/755 736/754 777/796 +f 736/754 776/795 777/796 +f 777/796 778/797 737/755 +f 738/756 737/755 778/797 +f 738/756 778/797 739/757 +f 739/757 778/797 779/798 +f 740/758 739/757 780/799 +f 739/757 779/798 780/799 +f 741/759 740/758 781/800 +f 740/758 780/799 781/800 +f 742/760 741/759 782/801 +f 741/759 781/800 782/801 +f 783/802 743/761 782/801 +f 743/761 742/760 782/801 +f 743/761 783/802 744/762 +f 744/762 783/802 784/803 +f 744/762 784/803 745/763 +f 745/763 784/803 785/804 +f 745/763 785/804 746/764 +f 746/764 785/804 786/805 +f 746/764 786/805 747/765 +f 747/765 786/805 787/806 +f 747/765 787/806 748/766 +f 748/766 787/806 788/807 +f 748/766 788/807 749/767 +f 749/767 788/807 789/808 +f 749/767 789/808 750/768 +f 750/768 789/808 790/809 +f 751/769 750/768 791/810 +f 750/768 790/809 791/810 +f 752/770 751/769 792/811 +f 751/769 791/810 792/811 +f 753/771 752/770 793/812 +f 752/770 792/811 793/812 +f 754/772 753/771 794/813 +f 753/771 793/812 794/813 +f 755/773 754/772 795/814 +f 754/772 794/813 795/814 +f 756/774 755/773 796/815 +f 755/773 795/814 796/815 +f 757/775 756/774 797/816 +f 756/774 796/815 797/816 +f 797/816 798/817 757/775 +f 758/776 757/775 798/817 +f 758/776 798/817 759/777 +f 759/777 798/817 799/818 +f 760/778 759/777 800/819 +f 759/777 799/818 800/819 +f 721/779 760/778 761/820 +f 760/778 800/819 761/820 +f 761/780 1/821 762/781 +f 762/781 1/821 2/822 +f 762/781 2/822 763/782 +f 763/782 2/822 3/823 +f 763/782 3/823 764/783 +f 764/783 3/823 4/824 +f 764/783 4/824 765/784 +f 765/784 4/824 5/825 +f 765/784 5/825 766/785 +f 766/785 5/825 6/826 +f 766/785 6/826 767/786 +f 767/786 6/826 7/827 +f 767/786 7/827 768/787 +f 768/787 7/827 8/828 +f 768/787 8/828 769/788 +f 769/788 8/828 9/829 +f 770/789 769/788 10/830 +f 769/788 9/829 10/830 +f 771/790 770/789 11/831 +f 770/789 10/830 11/831 +f 772/791 771/790 12/832 +f 771/790 11/831 12/832 +f 773/792 772/791 13/833 +f 772/791 12/832 13/833 +f 774/793 773/792 14/834 +f 773/792 13/833 14/834 +f 775/794 774/793 15/835 +f 774/793 14/834 15/835 +f 776/795 775/794 16/836 +f 775/794 15/835 16/836 +f 777/796 776/795 17/837 +f 776/795 16/836 17/837 +f 778/797 777/796 18/838 +f 777/796 17/837 18/838 +f 779/798 778/797 19/839 +f 778/797 18/838 19/839 +f 780/799 779/798 20/840 +f 779/798 19/839 20/840 +f 781/800 780/799 21/841 +f 780/799 20/840 21/841 +f 781/800 21/841 782/801 +f 782/801 21/841 22/842 +f 782/801 22/842 783/802 +f 783/802 22/842 23/843 +f 783/802 23/843 784/803 +f 784/803 23/843 24/844 +f 784/803 24/844 785/804 +f 785/804 24/844 25/845 +f 785/804 25/845 786/805 +f 786/805 25/845 26/846 +f 786/805 26/846 787/806 +f 787/806 26/846 27/847 +f 787/806 27/847 788/807 +f 788/807 27/847 28/848 +f 788/807 28/848 789/808 +f 789/808 28/848 29/849 +f 790/809 789/808 30/850 +f 789/808 29/849 30/850 +f 791/810 790/809 31/851 +f 790/809 30/850 31/851 +f 792/811 791/810 32/852 +f 791/810 31/851 32/852 +f 793/812 792/811 33/853 +f 792/811 32/852 33/853 +f 794/813 793/812 34/854 +f 793/812 33/853 34/854 +f 795/814 794/813 35/855 +f 794/813 34/854 35/855 +f 796/815 795/814 36/856 +f 795/814 35/855 36/856 +f 797/816 796/815 37/857 +f 796/815 36/856 37/857 +f 798/817 797/816 38/858 +f 797/816 37/857 38/858 +f 799/818 798/817 39/859 +f 798/817 38/858 39/859 +f 800/819 799/818 40/860 +f 799/818 39/859 40/860 +f 761/820 800/819 1/861 +f 800/819 40/860 1/861 diff --git a/examples/CGAL/mesh_from_point_cloud_using_convex_hull.py b/examples/CGAL/mesh_from_point_cloud_using_convex_hull.py new file mode 100644 index 00000000..04a8dd6c --- /dev/null +++ b/examples/CGAL/mesh_from_point_cloud_using_convex_hull.py @@ -0,0 +1,113 @@ +from CGAL.CGAL_Polyhedron_3 import Polyhedron_3 +from CGAL.CGAL_Mesh_3 import Polyhedral_mesh_domain_3 +from CGAL.CGAL_Mesh_3 import Mesh_3_parameters +from CGAL.CGAL_Mesh_3 import Default_mesh_criteria +from CGAL.CGAL_Kernel import Point_3 +from CGAL.CGAL_Convex_hull_3 import convex_hull_3, is_strongly_convex_3 +from CGAL import CGAL_Mesh_3 +from pypcd4 import PointCloud + +import sys +import argparse +import os +import random +import time + + +from cgal_utils import CGAL_Mesh_from, CGAL_Mesh_3_IO_Util, ReadPolyData, tic, toc +from mesh_from_polyhedron import CGAL_Mesh_from_polyhedron + +class CGAL_Mesh_from_pointcloud(CGAL_Mesh_from): + def __init__(self, pointcloud ): + print(f"Transformaing input data into CGAL data structure...") + tic() + self.pointcloud = [] + for point in pointcloud: + self.pointcloud.append(Point_3(point[0],point[1],point[2])) + print(f"Done ! Took {toc()}") + + + def generate(self, criteria , refiner = CGAL_Mesh_from.Refiner_input(refiner_type=CGAL_Mesh_from.Refiner.NONE)): + print(f"Generating convex hull...") + tic() + + self.polyhedron = Polyhedron_3() + convex_hull_3(self.pointcloud, self.polyhedron) + + + + print(f"Done ! Took {toc()}") + print(f"Convex hull has {self.polyhedron.size_of_vertices()} vertices and is strongly convex: {is_strongly_convex_3(self.polyhedron)}") + + cmfp = CGAL_Mesh_from_polyhedron(polyhedron=self.polyhedron) + cmfp.generate(criteria, refiner) + self.IOUtil = cmfp.IOUtil + + def write_out(self, filename): + self.IOUtil.write_out(filename) + + +if __name__ == "__main__": + + parser = argparse.ArgumentParser(description="Creates a mesh from a point cloud using convex hull.") + + parser.add_argument("-i", "--input", default='data/point_cloud.pcd', help="The input file containing the surface. Format must be taken form ['.pcd']") + parser.add_argument( "-o", "--output", default='pointCloudMesh.vtk', help="The output file to save the computed volumetric mesh") + parser.add_argument( "-r", "--refiner", default='None', help="Use refiner to erfine the mesh. Values are amongst ['None', 'Lloyd', 'Odt', 'Perturb']") + parser.add_argument( "-c", "--criteria", default='"facet_angle=25 edge_size=0.4 facet_size=0.15 facet_distance=0.008 cell_radius_edge_ration=3"', help="Set of parameters in the form of \"facet_angle=25 edge_size=0.4 facet_size=0.15 facet_distance=0.008 cell_radius_edge_ration=3\" that can be customized. If one is not specified, its default value is used") + args = parser.parse_args() + + + tic(1) + + pc = PointCloud.from_path(args.input) + PC = pc.numpy(("x", "y", "z")) + + cmfp = CGAL_Mesh_from_pointcloud(PC.tolist()) + + + #Criterial + class criteriaContainer: + def __init__(self): + self.facet_angle=25 + self.edge_size=0.15 + self.facet_size=0.15 + self.facet_distance=0.008 + self.cell_radius_edge_ratio=3 + + selectedCriterias = criteriaContainer() + + for passedCriteria in args.criteria.split(' '): + if len(passedCriteria.split('=')) >1: + if passedCriteria.split('=')[0] in selectedCriterias.__dict__: + setattr(selectedCriterias, passedCriteria.split('=')[0], float(passedCriteria.split('=')[1]) ) + + criteria = Default_mesh_criteria() + criteria.facet_angle(selectedCriterias.facet_angle).edge_size(selectedCriterias.edge_size).facet_size(selectedCriterias.facet_size).facet_distance(selectedCriterias.facet_distance).cell_radius_edge_ratio(selectedCriterias.cell_radius_edge_ratio) + + #Refiner + match args.refiner: + case 'Lloyd': + refinerName = 'Lloyd' + refiner = CGAL_Mesh_from.Refiner_input(refiner_type=CGAL_Mesh_from.Refiner.LLOYD) + case 'Odt': + refinerName = 'Odt' + refiner = CGAL_Mesh_from.Refiner_input(refiner_type=CGAL_Mesh_from.Refiner.ODT) + case 'Perturb': + refinerName = 'Perturb' + refiner = CGAL_Mesh_from.Refiner_input(refiner_type=CGAL_Mesh_from.Refiner.PERTURB) + case _: + refinerName = 'None' + refiner = CGAL_Mesh_from.Refiner_input(refiner_type=CGAL_Mesh_from.Refiner.NONE) + + + print(f"Launching mesh generation with following parameter : ") + print(f" - Criteria : facet_angle = {selectedCriterias.facet_angle}, edge_size = {selectedCriterias.edge_size}, facet_size = {selectedCriterias.facet_size}, facet_distance = {selectedCriterias.facet_distance}, cell_radius_edge_ratio = {selectedCriterias.cell_radius_edge_ratio}") + print(f" - Refiner : {refinerName}") + cmfp.generate(criteria, refiner) + + cmfp.write_out(args.output) + print(f"The script took a total of {toc(1)}") + + + diff --git a/examples/CGAL/mesh_from_polyhedron.py b/examples/CGAL/mesh_from_polyhedron.py new file mode 100644 index 00000000..4bcb0fa9 --- /dev/null +++ b/examples/CGAL/mesh_from_polyhedron.py @@ -0,0 +1,134 @@ +from CGAL.CGAL_Polyhedron_3 import Polyhedron_3, Polyhedron_modifier +from CGAL.CGAL_Mesh_3 import Mesh_3_Complex_3_in_triangulation_3 +from CGAL.CGAL_Mesh_3 import Polyhedral_mesh_domain_3 +from CGAL.CGAL_Mesh_3 import Mesh_3_parameters +from CGAL.CGAL_Mesh_3 import Default_mesh_criteria +from CGAL.CGAL_Kernel import Point_3 +from CGAL import CGAL_Mesh_3 + +import sys +import argparse +import os + + +from cgal_utils import CGAL_Mesh_from, CGAL_Mesh_3_IO_Util, ReadPolyData, tic, toc + +class CGAL_Mesh_from_polyhedron(CGAL_Mesh_from): + def __init__(self, filename = None, polyhedron = None): + if(filename is None and polyhedron is None): + raise ValueError("Need either a filename to load or a CGAl polyhedron already build") + if(filename is not None): + print(f"Loading polyhedron from {filename}...") + tic() + + mesh = ReadPolyData(filename) + self.polyhedron = Polyhedron_3() + pm = Polyhedron_modifier() + + pm.begin_surface(3,1) + for i in range(mesh.GetNumberOfPoints()): + pt = mesh.GetPoint(i) + pm.add_vertex(Point_3(pt[0],pt[1],pt[2])) + + + for i in range(mesh.GetNumberOfCells()): + pm.begin_facet() + for j in range(mesh.GetCell(i).GetNumberOfPoints()): + pm.add_vertex_to_facet(int(mesh.GetCell(i).GetPointId(j))) + pm.end_facet() + + + self.polyhedron.delegate(pm) + print(f"Done ! Took {toc()}") + else: + self.polyhedron = polyhedron + + print(f"Polyhedron info from input (vertices, facets, edges) = {(self.polyhedron.size_of_vertices(), self.polyhedron.size_of_facets(), self.polyhedron.size_of_halfedges()/2)}") + + + def generate(self, criteria , refiner = CGAL_Mesh_from.Refiner_input(refiner_type=CGAL_Mesh_from.Refiner.NONE)): + print(f"Generating mesh...") + tic() + + # Create domain + domain = Polyhedral_mesh_domain_3(self.polyhedron) + params = Mesh_3_parameters() + params.no_exude() + params.no_perturb() + match refiner.refiner_type: + case CGAL_Mesh_from.Refiner.LLOYD: + params.set_lloyd(refiner.time_limit, refiner.max_iteration_number, refiner.convergence, refiner.free_bound) + case CGAL_Mesh_from.Refiner.ODT: + params.set_odt(refiner.time_limit, refiner.max_iteration_number, refiner.convergence, refiner.free_bound) + case CGAL_Mesh_from.Refiner.PERTURB: + params.set_perturb(refiner.time_limit, refiner.silver_bound) + + + # Mesh generation + c3t3 = CGAL_Mesh_3.make_mesh_3(domain, criteria, params) + print(f"Done ! Took {toc()}") + + self.IOUtil = CGAL_Mesh_3_IO_Util(c3t3) + self.IOUtil.extract([CGAL_Mesh_3_IO_Util.Elem.POINTS, CGAL_Mesh_3_IO_Util.Elem.TETRA]) + + def write_out(self, filename): + self.IOUtil.write_out(filename) + + +if __name__ == "__main__": + + parser = argparse.ArgumentParser(description="Creates a mesh from an input file containing a polyhedron representing the surface.") + + parser.add_argument("-i", "--input", default='data/torus.obj', help="The input file containing the surface. Format must be taken form ['.g', '.obj', '.stl', '.ply', '.vtk', '.vtp']") + parser.add_argument( "-o", "--output", default='torusVol.vtk', help="The output file to save the computed volumetric mesh") + parser.add_argument( "-r", "--refiner", default='None', help="Use refiner to erfine the mesh. Values are amongst ['None', 'Lloyd', 'Odt', 'Perturb']") + parser.add_argument( "-c", "--criteria", default='"facet_angle=25 edge_size=0.4 facet_size=0.15 facet_distance=0.008 cell_radius_edge_ration=3"', help="Set of parameters in the form of \"facet_angle=25 edge_size=0.4 facet_size=0.15 facet_distance=0.008 cell_radius_edge_ration=3\" that can be customized. If one is not specified, its default value is used") + args = parser.parse_args() + + tic(1) + cmfp = CGAL_Mesh_from_polyhedron(filename=args.input) + + #Criterial + class criteriaContainer: + def __init__(self): + self.facet_angle=25 + self.edge_size=0.15 + self.facet_size=0.15 + self.facet_distance=0.008 + self.cell_radius_edge_ratio=3 + + selectedCriterias = criteriaContainer() + + for passedCriteria in args.criteria.split(' '): + if len(passedCriteria.split('=')) >1: + if passedCriteria.split('=')[0] in selectedCriterias.__dict__: + setattr(selectedCriterias, passedCriteria.split('=')[0], float(passedCriteria.split('=')[1]) ) + + criteria = Default_mesh_criteria() + criteria.facet_angle(selectedCriterias.facet_angle).edge_size(selectedCriterias.edge_size).facet_size(selectedCriterias.facet_size).facet_distance(selectedCriterias.facet_distance).cell_radius_edge_ratio(selectedCriterias.cell_radius_edge_ratio) + + #Refiner + match args.refiner: + case 'Lloyd': + refinerName = 'Lloyd' + refiner = CGAL_Mesh_from.Refiner_input(refiner_type=CGAL_Mesh_from.Refiner.LLOYD) + case 'Odt': + refinerName = 'Odt' + refiner = CGAL_Mesh_from.Refiner_input(refiner_type=CGAL_Mesh_from.Refiner.ODT) + case 'Perturb': + refinerName = 'Perturb' + refiner = CGAL_Mesh_from.Refiner_input(refiner_type=CGAL_Mesh_from.Refiner.PERTURB) + case _: + refinerName = 'None' + refiner = CGAL_Mesh_from.Refiner_input(refiner_type=CGAL_Mesh_from.Refiner.NONE) + + print(f"Launching mesh generation with following parameter : ") + print(f" - Criteria : facet_angle = {selectedCriterias.facet_angle}, edge_size = {selectedCriterias.edge_size}, facet_size = {selectedCriterias.facet_size}, facet_distance = {selectedCriterias.facet_distance}, cell_radius_edge_ratio = {selectedCriterias.cell_radius_edge_ratio}") + print(f" - Refiner : {refinerName}") + cmfp.generate(criteria, refiner) + + cmfp.write_out(args.output) + print(f"The script took a total of {toc(1)}") + + + diff --git a/examples/CGAL/requirements.txt b/examples/CGAL/requirements.txt new file mode 100644 index 00000000..15643fac --- /dev/null +++ b/examples/CGAL/requirements.txt @@ -0,0 +1,4 @@ +numpy == 1.26 +cgal == 6.0 +vtk +pypcd4