diff --git a/Documentation/doc/biblio/geom.bib b/Documentation/doc/biblio/geom.bib index b30754c32f3..9c1dfe85a9c 100644 --- a/Documentation/doc/biblio/geom.bib +++ b/Documentation/doc/biblio/geom.bib @@ -151968,3 +151968,11 @@ pages = {179--189} year={2007}, organization={Wiley Online Library} } + +@article{levismooth, + title={Smooth Rotation Enhanced As-Rigid-As-Possible Mesh Animation}, + author={Levi, Zohar and Gotsman, Craig}, + journal={IEEE Transactions on Visualization \& Computer Graphics}, + publisher={IEEE}, + year={2015} +} diff --git a/Surface_mesh_deformation/doc/Surface_mesh_deformation/Surface_mesh_deformation.txt b/Surface_mesh_deformation/doc/Surface_mesh_deformation/Surface_mesh_deformation.txt index e0dc9d2e5d8..b20525ffbec 100644 --- a/Surface_mesh_deformation/doc/Surface_mesh_deformation/Surface_mesh_deformation.txt +++ b/Surface_mesh_deformation/doc/Surface_mesh_deformation/Surface_mesh_deformation.txt @@ -35,9 +35,10 @@ The ROI features the green vertices (the unconstrained vertices) and the red ver the coordinates of the unconstrained vertices being updated by the deformation algorithm. \cgalFigureEnd -In this package, two algorithms are implemented: -- The As-Rigid-As-Possible (ARAP) method described in \cgalCite{Sorkine2007AsRigidAs}; -- The Spokes and Rims method \cgalCite{Chao2010SimpleGeomModel}. +In this package, three algorithms are implemented: +- The As-Rigid-As-Possible (ARAP) method \cgalCite{Sorkine2007AsRigidAs}; +- The Spokes and Rims method \cgalCite{Chao2010SimpleGeomModel}; +- The Smoothed %Rotation Enhanced As-Rigid-As-Possible method \cgalCite{levismooth} Given an edge weighting scheme, both methods iteratively minimize an energy function and produce a different surface mesh at each step until convergence is reached. @@ -46,16 +47,21 @@ convergence while the ARAP method requires the edge weights to be posit the results obtained using the Spokes and Rims method are more dependent on the discretization of the deformed surface (See \cgalFigureRef{Arap_spokes_comparison}). +The Smoothed %Rotation Enhanced As-Rigid-As-Possible method adds a bending term to the ARAP energy that penalizes rotation difference between neighboring elements. In the current implementation a 1-ring type element is used while in general it is possible to use a triangle type element. + More details on these algorithms are provided in section \ref SMD_Overview. \cgalFigureBegin{Arap_spokes_comparison, arap_spokes_comparison.png} -Comparison between the As-Rigid-As-Possible and the Spokes and Rims deformation methods. +A comparison between the As-Rigid-As-Possible and the Spokes and Rims deformation methods. On the surface mesh of a square with spikes depicted on the left, the ROI consists of the green vertices. The control vertices are the red ones. We translate the control vertices along the normal to the plane and observe the result produced by the As-Rigid-As-Possible (center) and the Spokes and Rims (right) methods from the same view point. The latter method provides unconditional convergence does not produce a symmetric result. \cgalFigureEnd +\cgalFigureBegin{Arap_spokes_comparison, sr_arap_comparison.png} +A comparison on a 5261 vertices cactus model (left) between the As-Rigid-As-Possible (middle) and the Smoothed %Rotation Enhanced As-Rigid-As-Possible (right). +\cgalFigureEnd \section SMD_API User Interface Description @@ -132,10 +138,10 @@ which will also require a new preprocessing step). This behavior is illustrated in \ref SModelingVideo_1 "Video 1". \subsection Surface_mesh_deformation_arap_or_spokes_and_rims As-Rigid-As-Possible and Spokes-and-Rims Deformation Techniques -Two deformation techniques are provided by this package. This section summarizes from the user point of view what is +Three deformation techniques are provided by this package. This section summarizes from the user point of view what is explained in details in the section \ref SMD_Overview. -The As-Rigid-As-Possible deformation technique requires the use of a positive weighting scheme to guarantee +The As-Rigid-As-Possible deformation techniques require the use of a positive weighting scheme to guarantee the correct minimization of the energy. When using the default cotangent weighting scheme, this means that the input surface mesh must be clean. That is, that for all edges in the surface mesh the sum of the angles opposite to the edge in the incident triangles is less that \f$ \pi \f$. @@ -198,6 +204,11 @@ Another example is given in the manual page of the concept `::SurfaceMeshDeforma \cgalExample{Surface_mesh_deformation/custom_weight_for_edges_example.cpp} +\subsubsection SModelingExample_5 Using the Smoothed Rotation Enhanced As-Rigid-As-Possible +In this example, a survey \cgalCite{Botsch2008OnLinearVariational} model is loaded, alpha that determines the influence of the bending term is set, and the deformation method is set to `SRE_ARAP`. + +\cgalExample{Surface_mesh_deformation/deform_mesh_for_botsch08_format_sre_arap.cpp} + \section SMD_Demo How to Use the Demo A plugin for the polyhedron demo is available to test the algorithm. The following video tutorials explain how to use it. @@ -490,9 +501,28 @@ However, this method is more dependent on the discretization of the deformed sur The implementation in this package uses the cotangent weights by default (negative values included) as proposed in \cgalCite{Chao2010SimpleGeomModel}. +\subsection SMD_Overview_SRE_ARAP Smoothed Rotation Enhanced As-Rigid-As Possible (SR_ARAP) Deformation +Using 1-ring elements, SR-ARAP adds a bending element to Eq. \f$\eqref{eq:arap_energy}\f$: + +\f[ +\begin{equation} +\sum_{\mathbf{v}_i \in M} +\sum_{\mathbf{v}_j \in N(\mathbf{v}_i)} w_{ij} +\left\| (\mathbf{v}'_i - \mathbf{v}'_j) - \mathbf{R}_i(\mathbf{v}_i - \mathbf{v}_j) \right\|^2 + \alpha A \left\| \mathbf{R}_i - \mathbf{R}_j \right\|^2_F + \label{eq:sre_arap_energy} +\end{equation} +\f] + +where +- \f$\alpha=0.02\f$ is a weighting coefficient. +- \f$A\f$ is the surface area for scaling invariance. + +Only the local step is influenced by the added term, and the optimal rotation now takes into account the rotation of neighbors. + \section SMD_History Design and Implementation History An initial version of this package has been implemented during the 2011 Google Summer of Code by Yin Xu under the guidance of Olga Sorkine and Andreas Fabri. Ilker O. Yaz took over the finalization of the package with the help of Sébastien Loriot for the documentation and the API. +In 2016, Zohar Levi and Sébastien Loriot extended the package to support Smoothed Rotation Enhanced ARAP. The authors are grateful to Gaël Guennebaud for his great help on using the Eigen library and for providing the code to compute the closest rotation. */ diff --git a/Surface_mesh_deformation/doc/Surface_mesh_deformation/examples.txt b/Surface_mesh_deformation/doc/Surface_mesh_deformation/examples.txt index 6accd3137d7..5cfc86777d5 100644 --- a/Surface_mesh_deformation/doc/Surface_mesh_deformation/examples.txt +++ b/Surface_mesh_deformation/doc/Surface_mesh_deformation/examples.txt @@ -3,4 +3,5 @@ \example Surface_mesh_deformation/k_ring_roi_translate_rotate_example.cpp \example Surface_mesh_deformation/deform_polyhedron_with_custom_pmap_example.cpp \example Surface_mesh_deformation/custom_weight_for_edges_example.cpp +\example Surface_mesh_deformation/deform_mesh_for_botsch08_format_sre_arap.cpp */ \ No newline at end of file diff --git a/Surface_mesh_deformation/doc/Surface_mesh_deformation/fig/sr_arap_comparison.png b/Surface_mesh_deformation/doc/Surface_mesh_deformation/fig/sr_arap_comparison.png new file mode 100644 index 00000000000..ccdd0182248 Binary files /dev/null and b/Surface_mesh_deformation/doc/Surface_mesh_deformation/fig/sr_arap_comparison.png differ diff --git a/Surface_mesh_deformation/examples/Surface_mesh_deformation/CMakeLists.txt b/Surface_mesh_deformation/examples/Surface_mesh_deformation/CMakeLists.txt index c5aa688d3a0..b4becb351b4 100644 --- a/Surface_mesh_deformation/examples/Surface_mesh_deformation/CMakeLists.txt +++ b/Surface_mesh_deformation/examples/Surface_mesh_deformation/CMakeLists.txt @@ -27,6 +27,7 @@ if ( CGAL_FOUND ) create_single_source_cgal_program( "deform_polyhedron_with_custom_pmap_example.cpp" ) create_single_source_cgal_program( "k_ring_roi_translate_rotate_example.cpp" ) create_single_source_cgal_program( "k_ring_roi_translate_rotate_Surface_mesh.cpp" ) + create_single_source_cgal_program( "deform_mesh_for_botsch08_format_sre_arap.cpp" ) find_package( OpenMesh QUIET ) if ( OpenMesh_FOUND ) diff --git a/Surface_mesh_deformation/examples/Surface_mesh_deformation/data/cactus.def b/Surface_mesh_deformation/examples/Surface_mesh_deformation/data/cactus.def new file mode 100644 index 00000000000..7bcc51d17cc --- /dev/null +++ b/Surface_mesh_deformation/examples/Surface_mesh_deformation/data/cactus.def @@ -0,0 +1,5 @@ +# 4x4 handle transformation matrix +0.999641 0.021031 0.016579 -0.019322 +-0.022776 0.342021 0.939416 -0.134331 +0.014087 -0.939457 0.342378 0.821073 +0.000000 0.000000 0.000000 1.000000 diff --git a/Surface_mesh_deformation/examples/Surface_mesh_deformation/data/cactus.off b/Surface_mesh_deformation/examples/Surface_mesh_deformation/data/cactus.off new file mode 100644 index 00000000000..23a2b89d0c4 --- /dev/null +++ b/Surface_mesh_deformation/examples/Surface_mesh_deformation/data/cactus.off @@ -0,0 +1,1858 @@ +COFF +620 1236 0 +0.0687881 0.0462836 -0.0243483 192 192 192 255 +0.0693177 0.0983505 -0.0229785 192 192 192 255 +0.0742077 0.0970074 0.0227047 192 192 192 255 +-0.0137787 0.0896632 0.102572 192 192 192 255 +-0.0141075 0.0377467 0.10111 192 192 192 255 +0.0442229 0.0520837 0.0730379 192 192 192 255 +0.0731218 -0.00791628 -0.0241032 192 192 192 255 +0.0736746 0.0449508 0.0212312 192 192 192 255 +-0.0144328 -0.0141328 0.0996224 192 192 192 255 +0.0439647 0.000203561 0.0714978 192 192 192 255 +-0.0134459 0.141608 0.103987 192 192 192 255 +0.0446247 0.103982 0.074462 192 192 192 255 +0.0792188 -0.0130141 0.0189334 192 192 192 255 +0.0876295 -0.0534697 0.0406037 192 192 192 255 +0.115025 -0.0535801 0.0385144 192 192 192 255 +0.0425568 -0.0505954 0.0711122 192 192 192 255 +0.0396734 -0.105824 0.0738447 192 192 192 255 +0.0872369 -0.0745478 0.0375566 192 192 192 255 +-0.0147383 -0.0659697 0.0980082 192 192 192 255 +-0.0131311 0.193483 0.105531 192 192 192 255 +0.0446195 0.155727 0.0762611 192 192 192 255 +0.0696887 0.201989 -0.0198252 192 192 192 255 +0.070162 0.253959 -0.0184283 192 192 192 255 +0.0750453 0.252618 0.0271907 192 192 192 255 +0.12866 -0.0173473 0.0135135 192 192 192 255 +0.138964 -0.063338 0.0326563 192 192 192 255 +0.169944 -0.063032 0.0285597 192 192 192 255 +0.16296 -0.00112525 0.0103189 192 192 192 255 +-0.118043 0.0792531 0.0665376 192 192 192 255 +-0.125169 0.0420742 0.0437557 192 192 192 255 +-0.0935767 0.0507828 0.0670308 192 192 192 255 +-0.0150649 -0.117897 0.0965662 192 192 192 255 +-0.012812 0.245353 0.107063 192 192 192 255 +0.0448713 0.207606 0.077811 192 192 192 255 +-0.0820199 0.106338 -0.0673941 192 192 192 255 +-0.0261335 0.118321 -0.088811 192 192 192 255 +-0.026456 0.0664254 -0.0903025 192 192 192 255 +-0.144001 0.102869 0.0729693 192 192 192 255 +-0.138296 0.0830442 0.0651689 192 192 192 255 +-0.0153919 -0.169813 0.0951051 192 192 192 255 +0.0429334 -0.157762 0.0670662 192 192 192 255 +-0.0124867 0.297265 0.108518 192 192 192 255 +0.0454925 0.259641 0.0790309 192 192 192 255 +-0.0819163 0.0544185 -0.0688636 192 192 192 255 +-0.0267789 0.0145277 -0.0917938 192 192 192 255 +-0.0817353 0.157816 -0.0659925 192 192 192 255 +-0.0258108 0.17022 -0.0873196 192 192 192 255 +0.180838 -0.0310076 -0.0648372 192 192 192 255 +0.190214 -0.0510045 -0.0673738 192 192 192 255 +0.151983 -0.0508139 -0.065735 192 192 192 255 +0.0516338 -0.154179 -0.0620501 192 192 192 255 +0.0528623 -0.1256 -0.0625319 192 192 192 255 +0.0791092 -0.129155 -0.0367077 192 192 192 255 +0.0519553 -0.102281 -0.0605569 192 192 192 255 +0.0869425 -0.0909425 -0.0516508 192 192 192 255 +0.0704524 0.30585 -0.0169153 192 192 192 255 +0.0709044 0.357805 -0.0155057 192 192 192 255 +0.0757929 0.356462 0.030164 192 192 192 255 +0.270914 0.0258805 0.0235778 192 192 192 255 +0.234313 0.0481874 0.00807587 192 192 192 255 +0.221335 -0.00192611 0.0255526 192 192 192 255 +0.188021 0.0132503 0.000887512 192 192 192 255 +0.184127 -0.00843912 0.0201741 192 192 192 255 +0.130419 -0.104291 -0.0410464 192 192 192 255 +0.182649 -0.0826576 -0.046424 192 192 192 255 +0.185957 -0.0835659 -0.0155288 192 192 192 255 +0.081876 -0.129915 -0.010859 192 192 192 255 +0.136795 -0.105328 0.00933771 192 192 192 255 +-0.172137 0.155773 0.0522931 192 192 192 255 +-0.183493 0.0985624 0.0733187 192 192 192 255 +-0.0157164 -0.221731 0.0936269 192 192 192 255 +0.0424521 -0.207528 0.0657439 192 192 192 255 +-0.0121802 0.34911 0.110115 192 192 192 255 +0.0457416 0.311518 0.0805857 192 192 192 255 +-0.0953648 0.037092 -0.0482713 192 192 192 255 +-0.138674 0.0530188 -1.71757e-005 192 192 192 255 +-0.128834 0.105875 -0.0349372 192 192 192 255 +-0.0824243 0.00252114 -0.0705867 192 192 192 255 +-0.0271017 -0.03737 -0.0932854 192 192 192 255 +-0.0810271 0.21016 -0.0645491 192 192 192 255 +-0.0254881 0.222115 -0.0858281 192 192 192 255 +0.231297 -0.0566258 -0.0487631 192 192 192 255 +0.239625 -0.0555291 0.00022802 192 192 192 255 +0.0675869 0.44552 0.0336612 192 192 192 255 +0.0556812 0.47019 0.0225751 192 192 192 255 +0.0401628 0.465411 0.0697405 192 192 192 255 +-0.153958 0.105935 -0.0315913 192 192 192 255 +-0.0965975 -0.0068118 -0.0483425 192 192 192 255 +-0.118105 -0.0462405 -0.0131592 192 192 192 255 +-0.11305 -0.0476287 0.0340594 192 192 192 255 +-0.112438 0.00466956 0.0353789 192 192 192 255 +-0.102878 0.157644 -0.034557 192 192 192 255 +-0.128273 0.129084 -0.0303938 192 192 192 255 +-0.0160522 -0.273651 0.0922118 192 192 192 255 +0.0424322 -0.259253 0.0639645 192 192 192 255 +-0.0155023 0.404333 0.110141 192 192 192 255 +0.0461412 0.363323 0.0820465 192 192 192 255 +-0.0826718 -0.0493737 -0.0719832 192 192 192 255 +-0.0274245 -0.0892674 -0.0947767 192 192 192 255 +-0.0807927 0.262005 -0.0631028 192 192 192 255 +-0.0251652 0.274015 -0.0843367 192 192 192 255 +0.240013 0.0639383 -0.00266818 192 192 192 255 +0.284301 0.0497471 0.0212936 192 192 192 255 +0.0665535 -0.316931 -0.0347982 192 192 192 255 +0.0670269 -0.264967 -0.0334012 192 192 192 255 +0.0719154 -0.26631 0.0122672 192 192 192 255 +-0.265932 0.123498 0.0598938 192 192 192 255 +-0.229884 0.135825 0.0759414 192 192 192 255 +-0.243244 0.155196 0.0809558 192 192 192 255 +-0.205546 0.174771 0.0454903 192 192 192 255 +-0.156185 0.162507 0.0354266 192 192 192 255 +-0.0964122 -0.0584883 -0.0504546 192 192 192 255 +-0.118462 -0.0981441 -0.0146472 192 192 192 255 +-0.113405 -0.0995331 0.032588 192 192 192 255 +-0.098808 0.196454 -0.0381918 192 192 192 255 +-0.0163576 -0.325487 0.0905976 192 192 192 255 +0.0418257 -0.31127 0.0627257 192 192 192 255 +-0.0830202 -0.101275 -0.0735021 192 192 192 255 +-0.0277473 -0.141164 -0.0962684 192 192 192 255 +-0.0804474 0.313905 -0.0615833 192 192 192 255 +-0.0248425 0.32591 -0.0828452 192 192 192 255 +0.312089 0.0255569 -0.0570975 192 192 192 255 +0.289012 -0.00354817 -0.0548862 192 192 192 255 +0.25624 0.0247564 -0.0752818 192 192 192 255 +0.232696 0.0216512 -0.0697426 192 192 192 255 +0.25345 0.000697691 -0.0726988 192 192 192 255 +0.284443 0.0754296 -0.0757003 192 192 192 255 +0.29376 0.0524773 -0.0757543 192 192 192 255 +0.0542042 0.416662 -0.0444294 192 192 192 255 +0.0512628 0.439363 -0.0399537 192 192 192 255 +0.061866 0.446841 -0.0179252 192 192 192 255 +0.231334 0.0562887 -0.0470648 192 192 192 255 +0.263804 0.103099 -0.0233002 192 192 192 255 +0.314882 0.0247896 -0.0310003 192 192 192 255 +0.334068 0.0502359 -0.00648696 192 192 192 255 +0.31761 0.0240396 -0.00549577 192 192 192 255 +0.286403 0.0919012 0.0184422 192 192 192 255 +0.343076 0.067659 -0.0155966 192 192 192 255 +0.338364 0.0952823 0.00774245 192 192 192 255 +-0.253317 0.104694 0.0330968 192 192 192 255 +-0.239163 0.100382 0.0604342 192 192 192 255 +-0.0968729 -0.110431 -0.0517765 192 192 192 255 +-0.0948363 0.252744 -0.0410657 192 192 192 255 +-0.11628 0.265098 -0.00419969 192 192 192 255 +-0.111221 0.26371 0.0430743 192 192 192 255 +-0.110858 0.315616 0.0445406 192 192 192 255 +-0.0166823 -0.377404 0.0891451 192 192 192 255 +0.041574 -0.36315 0.0611755 192 192 192 255 +-0.0833376 -0.153171 -0.0749852 192 192 192 255 +-0.02807 -0.193061 -0.0977596 192 192 192 255 +-0.0802078 0.365758 -0.060134 192 192 192 255 +-0.0245281 0.377572 -0.0811281 192 192 192 255 +0.26102 0.103865 -0.0493285 192 192 192 255 +0.285058 0.113557 -0.0710697 192 192 192 255 +0.0038141 0.495842 -0.0375496 192 192 192 255 +0.0250397 0.464958 -0.0504999 192 192 192 255 +0.00528111 0.449084 -0.0640416 192 192 192 255 +0.266542 0.102346 0.00227345 192 192 192 255 +0.284628 0.143016 0.00619197 192 192 192 255 +0.0657988 -0.420786 -0.0377121 192 192 192 255 +0.0662665 -0.36882 -0.0363113 192 192 192 255 +0.0711483 -0.370162 0.00929558 192 192 192 255 +-0.305443 0.156728 0.041143 192 192 192 255 +-0.294654 0.14234 0.0188078 192 192 192 255 +-0.268007 0.124069 0.0405231 192 192 192 255 +-0.306083 0.176525 0.0657507 192 192 192 255 +-0.276514 0.146439 0.077842 192 192 192 255 +-0.272252 0.183327 0.0863042 192 192 192 255 +-0.0971654 -0.162351 -0.0533068 192 192 192 255 +-0.119151 -0.201972 -0.0176262 192 192 192 255 +-0.114093 -0.203361 0.0296311 192 192 192 255 +-0.113712 -0.151412 0.0310862 192 192 192 255 +-0.0944187 0.304634 -0.0396906 192 192 192 255 +-0.0170053 -0.429288 0.0876374 192 192 192 255 +0.0413601 -0.414974 0.0595957 192 192 192 255 +-0.0836803 -0.205077 -0.0764945 192 192 192 255 +-0.0283927 -0.244958 -0.0992514 192 192 192 255 +-0.083712 0.417187 -0.0496556 192 192 192 255 +-0.0210439 0.42484 -0.0768905 192 192 192 255 +0.275609 0.147713 -0.0433352 192 192 192 255 +0.291151 0.202885 0.00602406 192 192 192 255 +-0.0696717 0.498969 0.0183484 192 192 192 255 +-0.0663328 0.498051 0.0495412 192 192 192 255 +-0.0145088 0.515743 0.0468879 192 192 192 255 +-0.296419 0.148536 0.0638931 192 192 192 255 +-0.327391 0.248222 0.0885079 192 192 192 255 +-0.327601 0.199465 0.0707889 192 192 192 255 +-0.292372 0.198414 0.0849591 192 192 192 255 +-0.0977132 -0.214412 -0.0545258 192 192 192 255 +-0.1196 -0.253917 -0.0191054 192 192 192 255 +-0.114536 -0.255308 0.0282148 192 192 192 255 +-0.0945316 0.356351 -0.0376669 192 192 192 255 +-0.115594 0.368986 -0.00121887 192 192 192 255 +-0.110535 0.367595 0.0460359 192 192 192 255 +-0.105819 0.423305 0.0448332 192 192 192 255 +-0.0173254 -0.481192 0.0861274 192 192 192 255 +0.0407744 -0.467032 0.0583399 192 192 192 255 +-0.0840605 -0.256968 -0.078069 192 192 192 255 +-0.0287155 -0.296855 -0.100742 192 192 192 255 +-0.0762033 0.464234 -0.0416 192 192 192 255 +-0.0287869 0.470114 -0.060084 192 192 192 255 +0.286821 0.208037 -0.0512297 192 192 192 255 +0.291255 0.254321 0.00823114 192 192 192 255 +-0.095231 0.467517 0.0257632 192 192 192 255 +-0.0870799 0.466499 0.0594163 192 192 192 255 +-0.0980081 0.468278 -0.000181472 192 192 192 255 +0.354051 0.112305 -0.0590388 192 192 192 255 +0.363149 0.155441 -0.0587441 192 192 192 255 +0.366089 0.154633 -0.031273 192 192 192 255 +0.347208 0.181701 0.0196339 192 192 192 255 +0.337392 0.153452 0.0160167 192 192 192 255 +0.368673 0.153924 -0.00714221 192 192 192 255 +0.372989 0.182343 -0.00676861 192 192 192 255 +0.375801 0.205798 -0.0063799 192 192 192 255 +0.347536 0.205159 0.021999 192 192 192 255 +-0.327515 0.297325 0.0939329 192 192 192 255 +-0.276453 0.24872 0.0811722 192 192 192 255 +-0.0983831 -0.266397 -0.0555889 192 192 192 255 +-0.110632 0.424627 -0.000113851 192 192 192 255 +-0.0176655 -0.53315 0.0847587 192 192 192 255 +0.0407718 -0.518766 0.0565523 192 192 192 255 +-0.0843095 -0.308862 -0.0794667 192 192 192 255 +-0.0290381 -0.348754 -0.102235 192 192 192 255 +0.339549 0.112369 -0.0702856 192 192 192 255 +0.287143 0.260167 -0.0502651 192 192 192 255 +0.291592 0.306181 0.00976541 192 192 192 255 +0.369963 0.183173 -0.0350387 192 192 192 255 +0.367464 0.183858 -0.0583706 192 192 192 255 +0.347761 0.231234 0.0233444 192 192 192 255 +0.376968 0.237882 -0.00556146 192 192 192 255 +0.37765 0.257692 -0.00505207 192 192 192 255 +0.347982 0.257023 0.0246383 192 192 192 255 +0.325319 0.25721 0.023037 192 192 192 255 +0.348139 0.282561 0.025372 192 192 192 255 +0.0650324 -0.576368 -0.0423125 192 192 192 255 +0.0654063 -0.524451 -0.040853 192 192 192 255 +0.0702942 -0.525793 0.00481068 192 192 192 255 +-0.31389 0.271653 -0.0026996 192 192 192 255 +-0.274635 0.268744 0.00422148 192 192 192 255 +-0.27811 0.223326 -0.0103477 192 192 192 255 +-0.322725 0.337306 0.0980687 192 192 192 255 +-0.272804 0.310987 0.0689676 192 192 192 255 +-0.277004 0.317174 0.00993515 192 192 192 255 +-0.276923 0.368694 0.0118807 192 192 192 255 +-0.272756 0.362863 0.0703697 192 192 192 255 +-0.0982019 -0.31808 -0.0576976 192 192 192 255 +-0.120126 -0.357654 -0.0220996 192 192 192 255 +-0.115067 -0.359044 0.0251609 192 192 192 255 +-0.114708 -0.307137 0.0266287 192 192 192 255 +-0.017982 -0.585025 0.0832263 192 192 192 255 +0.0403793 -0.570677 0.0551179 192 192 192 255 +-0.0846549 -0.360763 -0.0809859 192 192 192 255 +-0.0293609 -0.40065 -0.103726 192 192 192 255 +0.336646 0.208151 -0.0797295 192 192 192 255 +0.354916 0.216684 -0.0736627 192 192 192 255 +0.34168 0.275459 -0.077389 192 192 192 255 +0.336748 0.233927 -0.0795398 192 192 192 255 +0.287476 0.312073 -0.0487786 192 192 192 255 +0.291915 0.358077 0.0112569 192 192 192 255 +0.371382 0.207012 -0.0476486 192 192 192 255 +0.372826 0.249018 -0.0471981 192 192 192 255 +0.377853 0.290339 -0.00411382 192 192 192 255 +0.377974 0.30959 -0.00356063 192 192 192 255 +0.348303 0.308921 0.0261297 192 192 192 255 +0.325641 0.309109 0.0245282 192 192 192 255 +0.348462 0.334458 0.0268635 192 192 192 255 +0.0639936 -0.629039 -0.0433695 192 192 192 255 +0.0699175 -0.577711 0.00332447 192 192 192 255 +-0.311788 0.313887 -0.00376917 192 192 192 255 +-0.352347 0.260807 0.0446065 192 192 192 255 +-0.346617 0.250992 0.0722789 192 192 192 255 +-0.351601 0.285923 0.0738392 192 192 192 255 +-0.356436 0.322132 0.0754221 192 192 192 255 +-0.277885 0.425944 0.0160984 192 192 192 255 +-0.273386 0.422433 0.0667834 192 192 192 255 +-0.0986362 -0.369988 -0.0590533 192 192 192 255 +-0.0221851 -0.633465 0.0808643 192 192 192 255 +0.040081 -0.622537 0.0535825 192 192 192 255 +-0.0849483 -0.412654 -0.0824427 192 192 192 255 +-0.0296836 -0.452547 -0.105218 192 192 192 255 +0.342002 0.327356 -0.0758975 192 192 192 255 +0.287786 0.363943 -0.0472639 192 192 192 255 +0.292391 0.410207 0.0124571 192 192 192 255 +0.378175 0.342237 -0.00262248 192 192 192 255 +0.378295 0.361485 -0.00206927 192 192 192 255 +0.348625 0.360817 0.0276209 192 192 192 255 +0.325962 0.361005 0.0260197 192 192 192 255 +0.348764 0.386571 0.0281515 192 192 192 255 +0.0593513 -0.674229 -0.0418701 192 192 192 255 +0.0688385 -0.630368 0.00189162 192 192 192 255 +0.0601524 -0.696552 0.000875256 192 192 192 255 +0.0639497 -0.675492 0.00108818 192 192 192 255 +0.03305 -0.662979 0.056085 192 192 192 255 +-0.357614 0.373521 0.0770592 192 192 192 255 +-0.341328 0.354321 0.0928586 192 192 192 255 +-0.322421 0.375802 0.0997874 192 192 192 255 +-0.0987488 -0.421804 -0.0607996 192 192 192 255 +-0.120685 -0.461404 -0.0250906 192 192 192 255 +-0.115631 -0.462793 0.0221265 192 192 192 255 +-0.115298 -0.410903 0.0236122 192 192 192 255 +-0.0207604 -0.682656 0.0742903 192 192 192 255 +-0.0852717 -0.464562 -0.0839252 192 192 192 255 +-0.0300063 -0.504443 -0.106708 192 192 192 255 +0.342322 0.379138 -0.0742975 192 192 192 255 +0.0187397 -0.645419 -0.0976642 192 192 192 255 +0.0466863 -0.647954 -0.0739124 192 192 192 255 +0.0450776 -0.67325 -0.072839 192 192 192 255 +0.020717 -0.618746 -0.0983649 192 192 192 255 +0.0486812 -0.621257 -0.0754133 192 192 192 255 +0.37819 0.393824 -0.00110694 192 192 192 255 +0.378114 0.413384 -0.000523671 192 192 192 255 +0.348905 0.412726 0.0287056 192 192 192 255 +0.293802 0.429134 0.00128234 192 192 192 255 +0.326596 0.412911 0.0271287 192 192 192 255 +0.0518893 -0.726616 -0.0247249 192 192 192 255 +0.0568714 -0.695652 -0.0297743 192 192 192 255 +-0.333786 0.314044 -0.00449559 192 192 192 255 +-0.361648 0.313412 0.0234859 192 192 192 255 +-0.362273 0.333887 0.024155 192 192 192 255 +-0.363295 0.365314 0.0251883 192 192 192 255 +-0.333624 0.365984 -0.00450206 192 192 192 255 +-0.333703 0.339637 -0.00447574 192 192 192 255 +-0.356943 0.415694 0.0782276 192 192 192 255 +-0.359046 0.41627 0.0585833 192 192 192 255 +-0.359674 0.374086 0.0578219 192 192 192 255 +-0.362977 0.384761 0.0257262 192 192 192 255 +-0.340954 0.406139 0.0942834 192 192 192 255 +-0.32221 0.414835 0.100607 192 192 192 255 +-0.0991636 -0.473813 -0.0621814 192 192 192 255 +-0.121188 -0.51339 -0.0265654 192 192 192 255 +-0.116124 -0.514779 0.020743 192 192 192 255 +-0.0270016 -0.728676 0.0639687 192 192 192 255 +-0.00032835 -0.728687 0.0586437 192 192 192 255 +-0.0856697 -0.516459 -0.0855132 192 192 192 255 +-0.0303292 -0.556344 -0.108199 192 192 192 255 +0.289021 0.422683 -0.0441313 192 192 192 255 +0.342626 0.427835 -0.069632 192 192 192 255 +0.374763 0.352815 -0.0348077 192 192 192 255 +0.374722 0.404548 -0.0328719 192 192 192 255 +-0.362468 0.41721 0.0266259 192 192 192 255 +-0.333257 0.417869 -0.00260354 192 192 192 255 +-0.333441 0.392137 -0.00355138 192 192 192 255 +-0.310946 0.417684 -0.0010262 192 192 192 255 +-0.323313 0.437119 0.00342402 192 192 192 255 +-0.294759 0.451543 0.0289953 192 192 192 255 +-0.323308 0.466219 0.0748984 192 192 192 255 +-0.0999928 -0.525923 -0.0630538 192 192 192 255 +-0.0859683 -0.568354 -0.0869768 192 192 192 255 +-0.030652 -0.608239 -0.109691 192 192 192 255 +-0.100147 -0.577747 -0.0647504 192 192 192 255 +-0.121798 -0.617172 -0.0295518 192 192 192 255 +-0.116736 -0.618562 0.0177372 192 192 192 255 +-0.11641 -0.566667 0.0192269 192 192 192 255 +-0.0861106 -0.620069 -0.0884852 192 192 192 255 +-0.02842 -0.664856 -0.106633 192 192 192 255 +-0.0982116 -0.627037 -0.0689489 192 192 192 255 +-0.083587 -0.724308 -0.0756849 192 192 192 255 +-0.108043 -0.725349 -0.0342048 192 192 192 255 +-0.111358 -0.705617 -0.0332698 192 192 192 255 +0.0742858 0.148772 0.0242185 192 192 192 255 +0.0530383 0.0807123 -0.05523 192 192 192 255 +0.0528566 0.0534079 -0.0559997 192 192 192 255 +0.0248918 0.0558973 -0.0789594 192 192 192 255 +0.0531489 0.105304 -0.05447 192 192 192 255 +0.0251891 0.10777 -0.0774495 192 192 192 255 +0.0694086 0.150111 -0.0213437 192 192 192 255 +0.0745634 0.200651 0.0257142 192 192 192 255 +-0.0666307 0.047163 0.0906178 192 192 192 255 +-0.066767 0.0990123 0.0922082 192 192 192 255 +0.0524411 0.0284981 -0.0563923 192 192 192 255 +0.05209 0.00149723 -0.0569411 192 192 192 255 +0.0245935 0.00403626 -0.0804783 192 192 192 255 +0.0532669 0.1325 -0.0536256 192 192 192 255 +0.0534287 0.157201 -0.0529258 192 192 192 255 +0.025453 0.159616 -0.0759108 192 192 192 255 +0.0862221 -0.111747 0.029174 192 192 192 255 +-0.0672662 -0.00499542 0.0893549 192 192 192 255 +-0.0683913 0.149192 0.0928333 192 192 192 255 +0.0906196 -0.0460774 -0.057403 192 192 192 255 +0.0515905 -0.0240032 -0.0572511 192 192 192 255 +0.0548651 -0.0503094 -0.0622716 192 192 192 255 +0.0239513 -0.0483569 -0.081585 192 192 192 255 +0.053649 0.184467 -0.052205 192 192 192 255 +0.0537942 0.209097 -0.0514872 192 192 192 255 +0.0258376 0.211568 -0.0744669 192 192 192 255 +0.124005 -0.0160689 -0.0299701 192 192 192 255 +0.190373 -0.0617101 0.0250562 192 192 192 255 +0.117087 -0.0754872 0.035161 192 192 192 255 +0.0846327 -0.130671 0.0148941 192 192 192 255 +0.0722215 -0.162688 0.0152813 192 192 192 255 +0.0753336 0.304509 0.0286857 192 192 192 255 +-0.0949182 0.0734246 0.0695199 192 192 192 255 +-0.107501 0.107616 0.0724633 192 192 192 255 +-0.0674624 -0.0567855 0.0877683 192 192 192 255 +-0.0658303 0.202726 0.095241 192 192 192 255 +0.12909 -0.0419913 -0.0601506 192 192 192 255 +0.0543386 -0.0723783 -0.0624235 192 192 192 255 +0.0244903 -0.0995332 -0.0826869 192 192 192 255 +0.0539529 0.236342 -0.0506909 192 192 192 255 +0.0541517 0.260997 -0.0500388 192 192 192 255 +0.0261856 0.263489 -0.0729955 192 192 192 255 +0.160189 -0.000364206 -0.0155643 192 192 192 255 +0.171602 0.00520441 -0.0454905 192 192 192 255 +0.242623 -0.0123451 0.0239248 192 192 192 255 +0.21886 -0.0259754 0.0277432 192 192 192 255 +0.188173 -0.0841749 0.00517801 192 192 192 255 +0.0673513 -0.161349 -0.0302165 192 192 192 255 +0.0721197 -0.214451 0.0137701 192 192 192 255 +-0.166792 0.0646174 0.0411962 192 192 192 255 +-0.0939525 0.0230049 0.0664843 192 192 192 255 +-0.0955369 -0.00116283 0.0675702 192 192 192 255 +-0.0935888 0.154558 0.0708301 192 192 192 255 +-0.115482 0.157909 0.0423464 192 192 192 255 +-0.137284 0.151948 0.0469589 192 192 192 255 +-0.0678277 -0.108719 0.0863061 192 192 192 255 +-0.0656201 0.254518 0.0967845 192 192 192 255 +0.149801 -0.0301049 -0.0622761 192 192 192 255 +0.0236538 -0.151639 -0.0849112 192 192 192 255 +0.0543027 0.28827 -0.0492318 192 192 192 255 +0.0544382 0.312892 -0.0485027 192 192 192 255 +0.0264706 0.315353 -0.0714737 192 192 192 255 +0.294769 -0.00445194 -0.00413386 192 192 192 255 +0.0672376 -0.213111 -0.0318383 192 192 192 255 +0.0748775 0.407875 0.031774 192 192 192 255 +0.0435507 0.413472 0.0859252 192 192 192 255 +-0.171643 0.06595 -0.00412926 192 192 192 255 +-0.197529 0.0783357 0.0512435 192 192 192 255 +-0.125439 0.0355048 -0.00120202 192 192 192 255 +-0.117476 0.00605202 -0.0116887 192 192 192 255 +-0.0956551 -0.0304756 0.0666483 192 192 192 255 +-0.0957462 -0.0530572 0.0659366 192 192 192 255 +-0.124823 0.154556 -0.00474233 192 192 192 255 +-0.0939011 0.177644 0.0720574 192 192 192 255 +-0.0941484 0.206429 0.0734152 192 192 192 255 +-0.11143 0.211864 0.0415114 192 192 192 255 +-0.0681404 -0.160608 0.0848078 192 192 192 255 +-0.0652593 0.306444 0.0982509 192 192 192 255 +0.232237 0.000850231 -0.0734152 192 192 192 255 +0.203029 -0.0284293 -0.0697271 192 192 192 255 +0.05141 -0.178792 -0.0626695 192 192 192 255 +0.0512122 -0.206079 -0.0634187 192 192 192 255 +0.0232431 -0.203621 -0.0863895 192 192 192 255 +0.0546603 0.340208 -0.0477822 192 192 192 255 +0.0548614 0.364792 -0.0471355 192 192 192 255 +0.0268772 0.367306 -0.0700501 192 192 192 255 +0.069924 0.40913 -0.0131977 192 192 192 255 +0.294353 0.0288621 0.0181675 192 192 192 255 +0.0714336 -0.31827 0.0107908 192 192 192 255 +-0.180318 0.106 -0.0281028 192 192 192 255 +-0.200342 0.0791085 0.0249653 192 192 192 255 +-0.203053 0.079853 -0.000358496 192 192 192 255 +-0.230882 0.0893036 0.0130591 192 192 192 255 +-0.220843 0.155097 0.0795761 192 192 192 255 +-0.164893 0.164373 -0.00281527 192 192 192 255 +-0.0959498 -0.0823394 0.0651214 192 192 192 255 +-0.096105 -0.104955 0.0644916 192 192 192 255 +-0.116483 0.213252 -0.00570266 192 192 192 255 +-0.0940592 0.228991 0.074125 192 192 192 255 +-0.0938928 0.258325 0.0749879 192 192 192 255 +-0.0684925 -0.212537 0.0833396 192 192 192 255 +-0.0650446 0.358249 0.0998254 192 192 192 255 +0.0511047 -0.230668 -0.064182 192 192 192 255 +0.0509869 -0.257974 -0.0650313 192 192 192 255 +0.0230267 -0.255421 -0.0879638 192 192 192 255 +0.0546343 0.391705 -0.0458732 192 192 192 255 +0.0256513 0.419585 -0.0672909 192 192 192 255 +0.064094 0.446229 0.0028893 192 192 192 255 +0.0486812 0.471091 -0.0209381 192 192 192 255 +0.0218191 0.444497 0.0907702 192 192 192 255 +-0.0120342 0.46716 0.0932777 192 192 192 255 +0.0303038 0.499921 0.039252 192 192 192 255 +-0.220271 0.109829 -0.0146313 192 192 192 255 +-0.15727 0.128515 -0.0266596 192 192 192 255 +-0.179746 0.127688 -0.023401 192 192 192 255 +-0.259221 0.114775 0.0066808 192 192 192 255 +-0.229882 0.202748 0.0583652 192 192 192 255 +-0.0962965 -0.134266 0.0636605 192 192 192 255 +-0.0965054 -0.156854 0.0630945 192 192 192 255 +-0.0937361 0.280887 0.075618 192 192 192 255 +-0.0935339 0.310223 0.0764347 192 192 192 255 +-0.0689163 -0.264516 0.081925 192 192 192 255 +-0.0623784 0.418063 0.099736 192 192 192 255 +0.0507793 -0.282568 -0.06567 192 192 192 255 +0.0505494 -0.309875 -0.0663804 192 192 192 255 +0.0225793 -0.307431 -0.0893579 192 192 192 255 +0.0294977 0.498521 0.000502607 192 192 192 255 +0.32907 0.0516091 -0.0531835 192 192 192 255 +0.0706725 -0.422125 0.00781865 192 192 192 255 +-0.219351 0.161734 -0.0160745 192 192 192 255 +-0.280681 0.125972 0.00930716 192 192 192 255 +-0.271928 0.207098 0.0886312 192 192 192 255 +-0.210071 0.176014 0.00322055 192 192 192 255 +-0.234915 0.204131 0.0113363 192 192 192 255 +-0.118766 -0.150024 -0.0161401 192 192 192 255 +-0.0966854 -0.186239 0.0622468 192 192 192 255 +-0.0967627 -0.208751 0.061522 192 192 192 255 +-0.115916 0.317006 -0.00271256 192 192 192 255 +-0.0934364 0.332759 0.0771369 192 192 192 255 +-0.0933098 0.362116 0.0780502 192 192 192 255 +-0.0691141 -0.316306 0.0803384 192 192 192 255 +0.0504136 -0.334515 -0.0671098 192 192 192 255 +0.050264 -0.361771 -0.0679181 192 192 192 255 +0.0222943 -0.359294 -0.0908792 192 192 192 255 +0.029557 0.484709 -0.0298191 192 192 192 255 +-0.0196332 0.519798 -0.00234917 192 192 192 255 +0.338468 0.0689248 -0.0586461 192 192 192 255 +0.358756 0.111013 -0.0150898 192 192 192 255 +0.336383 0.133641 0.0156602 192 192 192 255 +0.0704581 -0.473961 0.00631736 192 192 192 255 +-0.0577517 0.465521 0.0870982 192 192 192 255 +-0.277949 0.171123 -0.0106727 192 192 192 255 +-0.308432 0.15755 0.0132066 192 192 192 255 +-0.251612 0.230775 0.0615151 192 192 192 255 +-0.260781 0.263026 0.0541813 192 192 192 255 +-0.0970002 -0.238127 0.0607456 192 192 192 255 +-0.0971828 -0.26065 0.0601513 192 192 192 255 +-0.0926977 0.385132 0.0781282 192 192 192 255 +-0.0921073 0.414042 0.0784513 192 192 192 255 +-0.0694765 -0.368234 0.0788744 192 192 192 255 +0.306156 0.0741613 -0.0768862 192 192 192 255 +0.304792 0.11464 -0.0737201 192 192 192 255 +0.295283 0.163533 -0.062934 192 192 192 255 +0.0500719 -0.386434 -0.0685787 192 192 192 255 +0.0499214 -0.413669 -0.0693847 192 192 192 255 +0.0219634 -0.411201 -0.0923653 192 192 192 255 +-0.0235697 0.500313 -0.0387756 192 192 192 255 +-0.0718564 0.499568 -0.00206072 192 192 192 255 +0.325886 0.194764 0.0200566 192 192 192 255 +0.0655785 -0.47262 -0.0392671 192 192 192 255 +-0.308264 0.177127 0.0453836 192 192 192 255 +-0.311606 0.178043 0.0141489 192 192 192 255 +-0.334628 0.201443 0.0231656 192 192 192 255 +-0.25406 0.231447 0.0386413 192 192 192 255 +-0.257136 0.232292 0.00991332 192 192 192 255 +-0.0972997 -0.289998 0.0592281 192 192 192 255 +-0.0973906 -0.312544 0.058519 192 192 192 255 +-0.0848775 0.445632 0.0706348 192 192 192 255 +-0.0697513 -0.420089 0.0773488 192 192 192 255 +0.340558 0.16921 -0.076129 192 192 192 255 +0.0497816 -0.438294 -0.070109 192 192 192 255 +0.0495664 -0.465566 -0.0708362 192 192 192 255 +0.0215928 -0.46314 -0.093818 192 192 192 255 +-0.0524255 0.49071 -0.0264858 192 192 192 255 +-0.0738802 0.48698 -0.0205828 192 192 192 255 +0.32551 0.235237 0.0219975 192 192 192 255 +-0.326613 0.21202 0.0072921 192 192 192 255 +-0.119765 -0.305749 -0.0206122 192 192 192 255 +-0.0975944 -0.341861 0.0577014 192 192 192 255 +-0.097751 -0.364441 0.0570722 192 192 192 255 +-0.0700696 -0.471992 0.0758553 192 192 192 255 +0.0494681 -0.490183 -0.0716117 192 192 192 255 +0.0493586 -0.51746 -0.0724703 192 192 192 255 +0.0213962 -0.514922 -0.0954089 192 192 192 255 +0.325501 0.286754 0.0238859 192 192 192 255 +-0.333715 0.262037 -0.00231154 192 192 192 255 +-0.348473 0.243265 0.0290451 192 192 192 255 +-0.354849 0.261493 0.0212315 192 192 192 255 +-0.0979253 -0.393768 0.0562196 192 192 192 255 +-0.0980147 -0.416338 0.0555095 192 192 192 255 +-0.0705172 -0.523995 0.0744588 192 192 192 255 +0.0491885 -0.542029 -0.0731548 192 192 192 255 +0.0489997 -0.569358 -0.0739171 192 192 192 255 +0.0210373 -0.566853 -0.0968691 192 192 192 255 +0.325825 0.338652 0.0253773 192 192 192 255 +-0.333711 0.284495 -0.00292277 192 192 192 255 +-0.35436 0.286682 0.0480478 192 192 192 255 +-0.357123 0.287442 0.0222378 192 192 192 255 +-0.358656 0.322742 0.0546896 192 192 192 255 +-0.120352 -0.409514 -0.0236005 192 192 192 255 +-0.0981766 -0.445585 0.0546426 192 192 192 255 +-0.0983456 -0.468237 0.0540265 192 192 192 255 +-0.0708009 -0.575858 0.0729369 192 192 192 255 +0.0488481 -0.593946 -0.0746252 192 192 192 255 +0.37444 0.300919 -0.0362992 192 192 192 255 +0.372391 0.301482 -0.0554393 192 192 192 255 +0.326332 0.39076 0.0266476 192 192 192 255 +0.0332737 -0.72171 0.0402317 192 192 192 255 +0.0545964 -0.72736 0.000564219 192 192 192 255 +-0.311833 0.335467 -0.00292693 192 192 192 255 +-0.31096 0.365795 -0.0029005 192 192 192 255 +-0.290146 0.450278 0.0720938 192 192 192 255 +-0.0985923 -0.497587 0.0532626 192 192 192 255 +-0.0987819 -0.520134 0.0526759 192 192 192 255 +-0.0709454 -0.627454 0.0713186 192 192 192 255 +0.00774058 -0.681777 -0.0965228 192 192 192 255 +0.372713 0.35338 -0.053948 192 192 192 255 +0.343755 0.465257 0.00495204 192 192 192 255 +0.0546287 -0.695036 -0.0507266 192 192 192 255 +0.0441551 -0.725577 -0.0592642 192 192 192 255 +0.0177015 -0.694274 0.0577258 192 192 192 255 +-0.31095 0.388007 -0.00210669 192 192 192 255 +-0.330267 0.467998 0.0253131 192 192 192 255 +-0.0989432 -0.54952 0.0518066 192 192 192 255 +-0.0990686 -0.572032 0.0511397 192 192 192 255 +-0.0675179 -0.672609 0.0672759 192 192 192 255 +0.041462 -0.705473 -0.0695288 192 192 192 255 +0.0153233 -0.7246 -0.0869913 192 192 192 255 +0.338981 0.467047 -0.045795 192 192 192 255 +0.37263 0.405124 -0.0524174 192 192 192 255 +0.369779 0.437025 0.00106389 192 192 192 255 +-0.121472 -0.565276 -0.0280605 192 192 192 255 +-0.0992524 -0.601401 0.0502989 192 192 192 255 +-0.0993953 -0.62393 0.0496532 192 192 192 255 +-0.0475626 -0.707695 0.0643171 192 192 192 255 +-0.02422 -0.722598 -0.0980084 192 192 192 255 +0.367265 0.437715 -0.0224145 192 192 192 255 +0.364255 0.438542 -0.0505381 192 192 192 255 +-0.0979975 -0.651485 0.0469148 192 192 192 255 +-0.0964547 -0.67573 0.0441171 192 192 192 255 +-0.112642 -0.668433 0.0134785 192 192 192 255 +-0.0677859 -0.722004 0.0555947 192 192 192 255 +-0.084072 -0.668365 -0.0870377 192 192 192 255 +-0.117454 -0.66711 -0.0314849 192 192 192 255 +-0.0941682 -0.698621 0.0404469 192 192 192 255 +-0.0969035 -0.727167 0.0266083 192 192 192 255 +-0.106885 -0.706847 0.00852706 192 192 192 255 +-0.0520515 -0.724025 -0.0923986 192 192 192 255 +-0.0641338 -0.703142 -0.090491 192 192 192 255 +-0.104987 -0.72619 -0.00564888 192 192 192 255 +-0.0258578 -0.726367 -0.0166043 192 192 192 255 +3 0 1 2 +3 3 4 5 +3 6 0 7 +3 4 8 9 +3 10 3 11 +3 12 13 14 +3 15 16 17 +3 8 18 15 +3 19 10 20 +3 21 22 23 +3 24 25 26 +3 26 27 24 +3 28 29 30 +3 18 31 16 +3 32 19 33 +3 34 35 36 +3 37 38 28 +3 31 39 40 +3 41 32 42 +3 43 36 44 +3 45 46 35 +3 47 48 49 +3 50 51 52 +3 53 54 52 +3 55 56 57 +3 58 59 60 +3 61 62 60 +3 63 64 65 +3 66 63 67 +3 68 69 37 +3 39 70 71 +3 72 41 73 +3 74 75 76 +3 76 34 43 +3 77 44 78 +3 79 80 46 +3 49 48 64 +3 65 81 82 +3 83 84 85 +3 86 76 75 +3 77 87 74 +3 88 89 90 +3 91 45 34 +3 34 92 91 +3 70 93 94 +3 95 72 96 +3 97 78 98 +3 99 100 80 +3 101 59 102 +3 103 104 105 +3 92 76 86 +3 106 107 108 +3 109 68 110 +3 97 111 87 +3 112 113 89 +3 45 91 114 +3 93 115 116 +3 117 98 118 +3 119 120 100 +3 121 122 123 +3 124 123 125 +3 126 127 123 +3 128 129 130 +3 131 101 132 +3 122 121 133 +3 134 135 133 +3 136 102 134 +3 134 137 138 +3 139 140 106 +3 117 141 111 +3 79 114 142 +3 143 144 145 +3 115 146 147 +3 148 118 149 +3 150 151 120 +3 152 153 126 +3 154 155 156 +3 132 157 158 +3 159 160 161 +3 162 163 164 +3 165 166 167 +3 148 168 141 +3 169 170 171 +3 99 142 172 +3 146 173 174 +3 175 149 176 +3 177 178 151 +3 179 158 180 +3 181 182 183 +3 162 184 165 +3 185 186 187 +3 175 188 168 +3 189 190 170 +3 119 172 191 +3 192 193 194 +3 173 195 196 +3 197 176 198 +3 199 200 178 +3 201 180 202 +3 203 204 182 +3 205 203 181 +3 206 207 208 +3 209 210 211 +3 212 213 214 +3 215 185 216 +3 197 217 188 +3 218 194 203 +3 195 219 220 +3 221 198 222 +3 207 206 223 +3 224 202 225 +3 208 226 212 +3 207 227 226 +3 213 212 226 +3 228 214 213 +3 229 230 231 +3 232 231 233 +3 234 235 236 +3 237 238 239 +3 240 215 241 +3 242 243 244 +3 221 245 217 +3 246 247 248 +3 219 249 250 +3 251 222 252 +3 253 254 227 +3 224 255 256 +3 257 225 258 +3 259 260 229 +3 233 231 230 +3 261 262 263 +3 264 263 265 +3 266 234 267 +3 268 242 238 +3 269 270 271 +3 272 215 240 +3 243 273 274 +3 251 275 245 +3 249 276 277 +3 278 252 279 +3 256 255 260 +3 257 280 255 +3 281 258 282 +3 265 263 262 +3 283 284 285 +3 286 285 287 +3 288 266 289 +3 290 291 292 +3 293 294 295 +3 278 296 275 +3 297 298 299 +3 276 300 292 +3 301 279 302 +3 281 303 280 +3 304 305 306 +3 304 307 308 +3 287 285 284 +3 309 310 311 +3 312 282 313 +3 314 315 290 +3 291 290 315 +3 316 317 318 +3 319 320 321 +3 322 323 324 +3 325 324 323 +3 322 326 327 +3 301 328 296 +3 329 330 298 +3 300 331 332 +3 333 302 334 +3 335 336 303 +3 337 338 309 +3 320 319 325 +3 339 340 341 +3 342 343 344 +3 323 322 345 +3 333 346 328 +3 347 334 348 +3 348 307 304 +3 347 349 346 +3 350 351 352 +3 353 348 354 +3 353 355 349 +3 356 357 358 +3 2 5 7 +3 11 5 2 +3 2 7 0 +3 7 9 12 +3 5 9 7 +3 359 11 2 +3 20 11 359 +3 5 11 3 +3 1 0 360 +3 360 0 361 +3 362 360 361 +3 360 363 1 +3 363 360 364 +3 360 362 364 +3 7 12 6 +3 359 2 365 +3 365 2 1 +3 15 13 12 +3 9 15 12 +3 366 20 359 +3 33 20 366 +3 367 4 3 +3 368 367 3 +3 9 5 4 +3 11 20 10 +3 0 6 369 +3 369 6 370 +3 371 369 370 +3 369 361 0 +3 361 369 362 +3 369 371 362 +3 365 1 372 +3 372 1 363 +3 364 372 363 +3 372 373 365 +3 373 372 374 +3 372 364 374 +3 366 359 21 +3 21 359 365 +3 25 24 14 +3 14 24 12 +3 17 13 15 +3 375 17 16 +3 23 33 366 +3 42 33 23 +3 376 8 4 +3 367 376 4 +3 368 3 10 +3 377 368 10 +3 15 9 8 +3 20 33 19 +3 364 362 36 +3 35 364 36 +3 378 379 6 +3 378 380 379 +3 381 379 380 +3 379 370 6 +3 370 379 371 +3 379 381 371 +3 21 365 382 +3 382 365 373 +3 374 382 373 +3 382 383 21 +3 383 382 384 +3 382 374 384 +3 385 12 24 +3 6 12 385 +3 23 366 21 +3 386 62 26 +3 26 62 27 +3 67 25 387 +3 375 67 387 +3 14 387 25 +3 17 387 14 +3 17 14 13 +3 17 375 387 +3 375 40 388 +3 389 388 40 +3 16 40 375 +3 390 42 23 +3 73 42 390 +3 368 391 367 +3 391 30 367 +3 30 391 28 +3 391 368 392 +3 28 391 392 +3 393 18 8 +3 376 393 8 +3 377 10 19 +3 394 377 19 +3 16 15 18 +3 33 42 32 +3 36 43 34 +3 362 371 44 +3 36 362 44 +3 374 364 35 +3 46 374 35 +3 395 378 385 +3 378 6 385 +3 378 54 396 +3 54 53 396 +3 397 396 53 +3 380 378 396 +3 380 396 381 +3 396 397 381 +3 22 21 398 +3 398 21 383 +3 384 398 383 +3 398 399 22 +3 399 398 400 +3 398 384 400 +3 24 27 401 +3 402 385 401 +3 401 385 24 +3 390 23 55 +3 55 23 22 +3 82 403 404 +3 386 82 404 +3 60 404 403 +3 62 404 60 +3 62 386 404 +3 386 26 405 +3 26 67 405 +3 25 67 26 +3 61 27 62 +3 388 67 375 +3 66 388 389 +3 66 389 406 +3 66 406 52 +3 389 71 407 +3 40 71 389 +3 57 73 390 +3 96 73 57 +3 28 392 37 +3 29 28 38 +3 29 38 408 +3 69 38 37 +3 408 38 69 +3 367 409 376 +3 409 410 376 +3 410 409 90 +3 409 367 30 +3 29 409 30 +3 29 90 409 +3 377 392 368 +3 392 377 411 +3 411 412 392 +3 412 413 392 +3 414 31 18 +3 393 414 18 +3 394 19 32 +3 415 394 32 +3 40 16 31 +3 42 73 41 +3 44 77 43 +3 35 34 45 +3 371 381 78 +3 44 371 78 +3 384 374 46 +3 80 384 46 +3 402 47 416 +3 49 416 47 +3 395 416 49 +3 402 416 385 +3 395 385 416 +3 395 63 54 +3 378 395 54 +3 52 406 50 +3 52 51 53 +3 417 51 50 +3 53 51 397 +3 51 417 397 +3 55 22 418 +3 418 22 399 +3 400 418 399 +3 418 419 55 +3 419 418 420 +3 418 400 420 +3 401 27 61 +3 401 61 402 +3 57 390 55 +3 403 82 421 +3 405 82 386 +3 60 403 58 +3 60 59 61 +3 65 405 67 +3 65 67 63 +3 67 388 66 +3 52 63 66 +3 389 407 406 +3 406 407 422 +3 407 94 105 +3 71 94 407 +3 423 96 57 +3 424 96 423 +3 408 75 29 +3 75 408 425 +3 69 426 408 +3 140 426 69 +3 392 413 37 +3 37 413 68 +3 29 427 90 +3 427 428 90 +3 376 429 393 +3 429 430 393 +3 430 429 89 +3 429 376 410 +3 410 90 429 +3 429 90 89 +3 412 431 413 +3 394 432 377 +3 432 411 377 +3 411 432 412 +3 432 394 433 +3 433 434 432 +3 432 434 412 +3 435 39 31 +3 414 435 31 +3 415 32 41 +3 436 415 41 +3 71 40 39 +3 73 96 72 +3 76 43 74 +3 78 97 77 +3 46 45 79 +3 381 397 98 +3 78 381 98 +3 400 384 80 +3 100 400 80 +3 437 81 438 +3 81 48 438 +3 402 437 438 +3 47 402 438 +3 47 438 48 +3 64 63 49 +3 63 395 49 +3 63 52 54 +3 406 422 439 +3 439 422 440 +3 441 439 440 +3 439 50 406 +3 50 439 417 +3 439 441 417 +3 56 55 442 +3 442 55 419 +3 420 442 419 +3 442 443 56 +3 443 442 444 +3 442 420 444 +3 61 59 131 +3 402 61 131 +3 423 57 445 +3 445 57 56 +3 122 421 82 +3 81 122 82 +3 446 102 58 +3 421 446 58 +3 403 421 58 +3 59 58 102 +3 82 405 65 +3 64 81 65 +3 407 105 422 +3 422 105 104 +3 105 116 447 +3 94 116 105 +3 83 424 423 +3 85 424 83 +3 75 425 86 +3 448 86 425 +3 408 426 449 +3 408 449 425 +3 449 450 425 +3 426 140 449 +3 140 451 449 +3 451 450 449 +3 427 29 75 +3 140 69 68 +3 107 68 452 +3 107 140 68 +3 431 110 413 +3 110 431 453 +3 110 68 413 +3 74 87 428 +3 74 43 77 +3 428 427 74 +3 75 74 427 +3 90 428 88 +3 393 454 414 +3 454 455 414 +3 455 454 113 +3 454 393 430 +3 430 89 454 +3 454 89 113 +3 34 76 92 +3 91 92 431 +3 434 456 412 +3 412 456 431 +3 415 457 394 +3 457 433 394 +3 433 457 434 +3 457 415 458 +3 458 144 457 +3 457 144 434 +3 459 70 39 +3 435 459 39 +3 436 41 72 +3 460 436 72 +3 94 71 70 +3 96 424 95 +3 98 117 97 +3 80 79 99 +3 397 417 118 +3 98 397 118 +3 420 400 100 +3 120 420 100 +3 125 122 81 +3 81 437 125 +3 81 64 48 +3 131 124 402 +3 437 402 124 +3 422 104 461 +3 461 104 462 +3 463 461 462 +3 461 440 422 +3 440 461 441 +3 461 463 441 +3 445 56 464 +3 464 56 443 +3 444 464 443 +3 464 128 445 +3 128 464 465 +3 464 444 465 +3 131 59 101 +3 83 423 466 +3 466 423 445 +3 130 466 445 +3 466 84 83 +3 84 466 467 +3 466 130 467 +3 134 102 446 +3 135 134 446 +3 135 446 421 +3 102 136 101 +3 157 101 136 +3 105 447 103 +3 447 147 161 +3 116 147 447 +3 424 85 468 +3 469 468 85 +3 470 85 84 +3 425 450 448 +3 450 451 471 +3 450 471 448 +3 92 472 431 +3 86 472 92 +3 448 472 86 +3 472 453 431 +3 473 453 472 +3 473 472 448 +3 451 140 139 +3 139 474 451 +3 140 107 106 +3 108 107 452 +3 108 166 106 +3 68 109 452 +3 475 452 109 +3 110 453 109 +3 87 111 88 +3 87 77 97 +3 87 88 428 +3 89 88 112 +3 414 476 435 +3 476 477 435 +3 477 476 171 +3 476 414 455 +3 455 113 476 +3 476 113 171 +3 114 91 431 +3 114 79 45 +3 114 431 456 +3 144 143 434 +3 434 143 456 +3 436 478 415 +3 478 458 415 +3 458 478 144 +3 478 436 479 +3 479 145 478 +3 478 145 144 +3 480 93 70 +3 459 480 70 +3 460 72 95 +3 481 460 95 +3 116 94 93 +3 424 468 95 +3 468 469 95 +3 118 148 117 +3 100 99 119 +3 417 441 149 +3 118 417 149 +3 444 420 120 +3 151 444 120 +3 123 127 121 +3 122 125 123 +3 125 437 124 +3 123 131 126 +3 124 131 123 +3 104 103 482 +3 482 103 483 +3 484 482 483 +3 482 462 104 +3 462 482 463 +3 482 484 463 +3 130 445 128 +3 465 129 128 +3 129 467 130 +3 155 467 129 +3 465 155 129 +3 101 157 132 +3 132 152 131 +3 485 470 84 +3 485 84 467 +3 135 421 133 +3 133 421 122 +3 133 486 134 +3 133 121 486 +3 134 138 136 +3 136 158 157 +3 447 161 103 +3 103 161 160 +3 161 174 487 +3 147 174 161 +3 469 85 470 +3 183 469 470 +3 451 474 471 +3 453 473 471 +3 448 471 473 +3 488 453 471 +3 106 164 139 +3 139 164 474 +3 489 474 164 +3 166 184 106 +3 452 475 108 +3 475 166 108 +3 475 490 167 +3 475 167 166 +3 453 491 109 +3 492 475 109 +3 492 109 491 +3 111 141 112 +3 111 97 117 +3 111 112 88 +3 113 112 171 +3 171 112 493 +3 435 494 459 +3 494 495 459 +3 495 494 170 +3 494 435 477 +3 477 171 494 +3 494 171 170 +3 142 114 456 +3 142 99 79 +3 142 456 143 +3 145 496 143 +3 460 497 436 +3 497 479 436 +3 479 497 145 +3 497 460 498 +3 498 193 497 +3 497 193 145 +3 499 115 93 +3 480 499 93 +3 481 95 469 +3 147 116 115 +3 149 175 148 +3 120 119 150 +3 441 463 176 +3 149 441 176 +3 465 444 151 +3 178 465 151 +3 121 127 486 +3 126 131 152 +3 103 160 500 +3 500 160 501 +3 502 500 501 +3 500 483 103 +3 483 500 484 +3 500 502 484 +3 465 156 155 +3 156 200 154 +3 503 485 467 +3 503 467 155 +3 158 179 132 +3 132 179 152 +3 485 183 470 +3 485 504 183 +3 137 134 486 +3 137 486 505 +3 506 138 137 +3 136 138 507 +3 158 507 210 +3 158 136 507 +3 161 487 159 +3 487 196 508 +3 174 196 487 +3 509 469 183 +3 182 509 183 +3 471 474 488 +3 474 489 510 +3 474 510 488 +3 453 488 491 +3 488 492 491 +3 164 106 184 +3 164 184 162 +3 164 163 489 +3 162 511 163 +3 167 490 187 +3 167 187 165 +3 166 165 184 +3 186 165 187 +3 512 490 475 +3 512 513 216 +3 512 216 490 +3 141 168 493 +3 141 117 148 +3 141 493 112 +3 171 493 169 +3 459 514 480 +3 514 515 480 +3 515 514 190 +3 514 459 495 +3 495 170 514 +3 514 170 190 +3 172 142 143 +3 172 119 99 +3 172 143 496 +3 193 192 145 +3 145 192 496 +3 481 516 460 +3 516 498 460 +3 498 516 193 +3 516 481 517 +3 517 194 516 +3 516 194 193 +3 518 146 115 +3 499 518 115 +3 481 469 509 +3 174 147 146 +3 176 197 175 +3 151 150 177 +3 463 484 198 +3 176 463 198 +3 465 178 156 +3 178 200 156 +3 505 486 519 +3 505 519 223 +3 519 486 127 +3 520 223 519 +3 126 153 520 +3 126 520 519 +3 126 519 127 +3 152 179 153 +3 153 179 521 +3 160 159 522 +3 522 159 523 +3 524 522 523 +3 522 501 160 +3 501 522 502 +3 522 524 502 +3 503 154 485 +3 155 154 503 +3 154 504 485 +3 525 504 154 +3 200 525 154 +3 180 201 179 +3 183 504 181 +3 526 181 504 +3 206 506 137 +3 206 137 505 +3 211 210 507 +3 506 211 507 +3 506 507 138 +3 209 214 527 +3 210 209 527 +3 158 210 527 +3 180 158 527 +3 487 508 159 +3 159 508 528 +3 508 220 236 +3 196 220 508 +3 509 182 204 +3 489 163 510 +3 163 511 510 +3 488 510 492 +3 510 239 492 +3 165 529 162 +3 162 529 530 +3 162 530 511 +3 165 186 529 +3 186 531 529 +3 531 530 529 +3 490 216 187 +3 187 216 185 +3 512 475 532 +3 532 475 492 +3 533 532 492 +3 532 513 512 +3 513 532 238 +3 532 533 238 +3 513 241 216 +3 168 188 169 +3 168 148 175 +3 168 169 493 +3 170 169 189 +3 480 534 499 +3 534 535 499 +3 535 534 248 +3 534 480 515 +3 515 190 534 +3 534 190 248 +3 191 172 496 +3 191 150 119 +3 191 496 192 +3 194 218 192 +3 536 481 509 +3 536 517 481 +3 517 536 194 +3 204 536 509 +3 536 204 194 +3 537 173 146 +3 518 537 146 +3 196 174 173 +3 198 221 197 +3 178 177 199 +3 484 502 222 +3 198 484 222 +3 505 223 206 +3 538 223 520 +3 521 538 520 +3 153 521 520 +3 179 201 521 +3 159 528 539 +3 539 528 540 +3 541 539 540 +3 539 523 159 +3 523 539 524 +3 539 541 524 +3 504 525 542 +3 525 200 542 +3 542 200 199 +3 504 542 526 +3 543 526 542 +3 543 542 199 +3 202 224 201 +3 182 181 203 +3 181 526 205 +3 506 208 211 +3 208 506 206 +3 211 212 209 +3 214 209 212 +3 228 231 544 +3 214 228 544 +3 214 544 527 +3 180 527 544 +3 232 544 231 +3 202 544 232 +3 202 180 544 +3 508 236 528 +3 528 236 235 +3 236 250 267 +3 220 250 236 +3 511 530 510 +3 510 530 239 +3 530 531 545 +3 530 545 239 +3 533 492 239 +3 239 238 533 +3 186 185 270 +3 216 241 215 +3 241 513 242 +3 513 238 242 +3 188 217 189 +3 188 175 197 +3 188 189 169 +3 190 189 248 +3 248 189 546 +3 499 547 518 +3 547 548 518 +3 548 547 247 +3 547 499 535 +3 535 248 547 +3 547 248 247 +3 177 191 192 +3 191 177 150 +3 177 192 218 +3 203 194 204 +3 203 205 218 +3 549 195 173 +3 537 549 173 +3 220 196 195 +3 222 251 221 +3 502 524 252 +3 222 502 252 +3 223 538 207 +3 253 538 521 +3 201 253 521 +3 528 235 550 +3 550 235 551 +3 552 550 551 +3 550 540 528 +3 540 550 541 +3 550 552 541 +3 205 526 543 +3 205 543 199 +3 225 257 224 +3 212 211 208 +3 226 208 207 +3 226 259 213 +3 226 227 259 +3 213 229 228 +3 231 228 229 +3 233 263 553 +3 233 553 232 +3 202 232 553 +3 264 553 263 +3 225 553 264 +3 225 202 553 +3 236 267 234 +3 267 277 289 +3 250 277 267 +3 239 545 237 +3 545 554 237 +3 270 555 186 +3 555 531 186 +3 555 270 269 +3 269 556 555 +3 185 215 271 +3 185 271 270 +3 215 272 271 +3 241 244 240 +3 240 244 295 +3 244 241 242 +3 217 245 546 +3 217 197 221 +3 217 546 189 +3 248 546 246 +3 518 557 537 +3 557 558 537 +3 558 557 299 +3 557 518 548 +3 548 247 557 +3 557 247 299 +3 177 218 199 +3 218 205 199 +3 559 219 195 +3 549 559 195 +3 250 220 219 +3 252 278 251 +3 524 541 279 +3 252 524 279 +3 227 207 538 +3 227 538 253 +3 227 254 259 +3 256 201 224 +3 253 201 256 +3 235 234 560 +3 560 234 561 +3 562 560 561 +3 560 551 235 +3 551 560 552 +3 560 562 552 +3 258 281 257 +3 229 213 259 +3 229 260 230 +3 230 261 233 +3 263 233 261 +3 265 285 563 +3 265 563 264 +3 225 264 563 +3 286 563 285 +3 258 563 286 +3 258 225 563 +3 267 289 266 +3 289 292 291 +3 289 277 292 +3 531 555 545 +3 545 555 554 +3 555 556 554 +3 238 237 268 +3 564 316 268 +3 564 268 237 +3 564 237 554 +3 271 565 269 +3 269 565 566 +3 269 566 556 +3 565 271 567 +3 567 271 272 +3 567 317 565 +3 565 317 566 +3 240 295 294 +3 240 294 272 +3 294 293 272 +3 295 244 274 +3 295 274 327 +3 274 244 243 +3 245 275 246 +3 245 221 251 +3 245 246 546 +3 247 246 299 +3 299 246 568 +3 537 569 549 +3 569 570 549 +3 570 569 298 +3 569 537 558 +3 558 299 569 +3 569 299 298 +3 571 249 219 +3 559 571 219 +3 277 250 249 +3 279 301 278 +3 541 552 302 +3 279 541 302 +3 260 259 254 +3 260 254 256 +3 256 254 253 +3 255 224 257 +3 234 266 572 +3 572 266 308 +3 307 572 308 +3 572 561 234 +3 561 572 562 +3 572 307 562 +3 282 335 281 +3 261 230 573 +3 573 230 260 +3 574 573 260 +3 261 573 262 +3 262 283 265 +3 285 265 283 +3 287 311 575 +3 287 575 286 +3 258 286 575 +3 313 575 311 +3 282 575 313 +3 282 258 575 +3 289 291 288 +3 290 576 577 +3 292 576 290 +3 556 566 564 +3 564 566 316 +3 556 564 554 +3 566 317 316 +3 243 242 578 +3 242 268 578 +3 316 578 268 +3 579 243 578 +3 321 320 579 +3 321 579 578 +3 321 578 316 +3 567 318 317 +3 567 272 324 +3 324 272 293 +3 324 319 567 +3 567 319 318 +3 295 327 326 +3 295 326 293 +3 326 322 293 +3 274 580 327 +3 580 345 327 +3 275 296 568 +3 275 251 278 +3 275 568 246 +3 299 568 297 +3 549 581 559 +3 581 582 559 +3 582 581 330 +3 581 549 570 +3 570 298 581 +3 581 298 330 +3 583 276 249 +3 571 583 249 +3 292 277 276 +3 302 333 301 +3 552 562 334 +3 302 552 334 +3 574 260 255 +3 255 280 574 +3 280 257 281 +3 266 288 305 +3 305 288 306 +3 306 584 304 +3 305 308 266 +3 308 305 304 +3 335 282 312 +3 283 262 337 +3 337 262 573 +3 585 337 573 +3 585 573 574 +3 283 337 284 +3 284 309 287 +3 311 287 309 +3 311 586 313 +3 313 586 312 +3 290 577 314 +3 587 315 314 +3 587 314 588 +3 315 288 291 +3 315 587 288 +3 332 576 589 +3 589 576 292 +3 318 321 316 +3 321 318 319 +3 273 243 590 +3 243 579 590 +3 320 590 579 +3 342 273 590 +3 341 340 342 +3 341 342 590 +3 341 590 320 +3 324 325 319 +3 324 293 322 +3 323 339 325 +3 327 345 322 +3 274 344 580 +3 274 273 344 +3 344 345 580 +3 345 344 591 +3 296 328 297 +3 296 278 301 +3 296 297 568 +3 298 297 329 +3 559 592 571 +3 592 593 571 +3 593 592 352 +3 592 559 582 +3 582 330 592 +3 592 330 352 +3 300 276 594 +3 594 276 583 +3 332 589 300 +3 589 292 300 +3 334 347 333 +3 562 307 348 +3 334 562 348 +3 585 574 280 +3 280 303 585 +3 303 281 335 +3 587 588 595 +3 596 595 588 +3 595 306 587 +3 587 306 288 +3 584 306 595 +3 584 595 596 +3 312 586 597 +3 335 312 597 +3 309 284 337 +3 598 338 337 +3 598 337 585 +3 309 338 310 +3 599 311 310 +3 599 586 311 +3 325 341 320 +3 341 325 339 +3 344 273 342 +3 340 343 342 +3 343 591 344 +3 345 591 323 +3 323 591 339 +3 328 346 329 +3 328 301 333 +3 328 329 297 +3 330 329 352 +3 352 329 600 +3 571 601 583 +3 601 602 583 +3 602 601 351 +3 601 571 593 +3 593 352 601 +3 601 352 351 +3 331 300 603 +3 300 594 603 +3 348 353 347 +3 304 584 354 +3 304 354 348 +3 598 585 303 +3 303 336 598 +3 597 336 335 +3 584 596 604 +3 599 310 605 +3 605 310 338 +3 606 605 338 +3 606 338 598 +3 605 586 599 +3 586 605 597 +3 605 606 597 +3 339 591 343 +3 339 343 340 +3 346 349 600 +3 346 333 347 +3 346 600 329 +3 352 600 350 +3 594 583 607 +3 594 607 608 +3 608 607 609 +3 607 583 602 +3 602 351 607 +3 607 351 609 +3 603 610 331 +3 610 603 594 +3 354 611 353 +3 604 354 584 +3 606 598 336 +3 336 597 606 +3 349 355 350 +3 349 347 353 +3 349 350 600 +3 351 350 609 +3 609 350 612 +3 610 594 613 +3 610 613 614 +3 614 613 615 +3 608 613 594 +3 608 609 613 +3 613 609 615 +3 616 617 604 +3 604 617 354 +3 617 611 354 +3 612 355 611 +3 355 353 611 +3 355 612 350 +3 615 618 614 +3 618 615 358 +3 618 358 357 +3 609 612 615 +3 615 612 358 +3 617 616 356 +3 611 617 356 +3 358 611 356 +3 358 612 611 +3 314 619 588 +3 596 588 619 +3 604 596 619 +3 616 604 619 +3 356 616 619 +3 357 356 619 +3 618 357 619 +3 614 618 619 +3 610 614 619 +3 331 610 619 +3 332 331 619 +3 576 332 619 +3 619 314 577 +3 577 576 619 diff --git a/Surface_mesh_deformation/examples/Surface_mesh_deformation/data/cactus.sel b/Surface_mesh_deformation/examples/Surface_mesh_deformation/data/cactus.sel new file mode 100644 index 00000000000..ff5c1efac04 --- /dev/null +++ b/Surface_mesh_deformation/examples/Surface_mesh_deformation/data/cactus.sel @@ -0,0 +1,622 @@ +# per vertex status: 0=fixed, 1=deformable-region, 2=handle +# 620 vertices +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +2 +2 +1 +1 +1 +1 +1 +1 +1 +1 +2 +1 +1 +1 +1 +1 +1 +1 +1 +2 +2 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +2 +2 +2 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +2 +2 +1 +1 +1 +1 +1 +1 +1 +1 +1 +2 +2 +2 +1 +1 +1 +1 +1 +1 +1 +1 +1 +2 +2 +1 +1 +2 +2 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +2 +2 +1 +1 +1 +1 +1 +1 +1 +2 +2 +2 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +2 +2 +2 +2 +1 +1 +1 +1 +2 +2 +1 +1 +2 +2 +2 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +2 +1 +1 +1 +1 +2 +2 +1 +1 +2 +2 +2 +1 +1 +1 +1 +1 +1 +1 +2 +2 +2 +2 +1 +1 +1 +1 +2 +2 +1 +1 +2 +2 +2 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +2 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +0 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +0 +0 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +0 +0 +1 +1 +1 +1 +1 +1 +1 +1 +0 +0 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +0 +0 +0 +0 +0 +1 +1 +1 +1 +1 +1 +1 +0 +1 +1 +1 +0 +0 +0 +0 +0 +1 +1 +1 +1 +1 +0 +0 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +0 +0 +1 +0 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +2 +1 +1 +1 +1 +1 +1 +1 +1 +2 +2 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +2 +1 +1 +2 +2 +2 +1 +1 +2 +2 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +2 +1 +1 +1 +1 +1 +2 +2 +2 +2 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +2 +1 +2 +1 +1 +1 +2 +2 +2 +2 +2 +2 +2 +1 +1 +1 +1 +1 +1 +1 +2 +2 +1 +2 +1 +1 +1 +2 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +2 +2 +2 +1 +1 +1 +1 +2 +2 +1 +1 +1 +1 +2 +1 +1 +1 +1 +1 +1 +2 +2 +1 +1 +1 +1 +1 +1 +1 +2 +2 +1 +1 +1 +1 +1 +1 +1 +1 +1 +2 +1 +1 +1 +1 +1 +2 +2 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +0 +0 +1 +1 +1 +1 +1 +1 +1 +1 +0 +0 +1 +1 +1 +0 +0 +1 +1 +1 +1 +1 +0 +0 +1 +1 +0 +0 +0 +1 +1 +1 +0 +0 +0 +0 +1 +1 +1 +0 +0 +0 +0 +0 +1 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 diff --git a/Surface_mesh_deformation/examples/Surface_mesh_deformation/deform_mesh_for_botsch08_format_sre_arap.cmd b/Surface_mesh_deformation/examples/Surface_mesh_deformation/deform_mesh_for_botsch08_format_sre_arap.cmd new file mode 100644 index 00000000000..949693c38fd --- /dev/null +++ b/Surface_mesh_deformation/examples/Surface_mesh_deformation/deform_mesh_for_botsch08_format_sre_arap.cmd @@ -0,0 +1 @@ +data/cactus.off data/cactus.sel data/cactus.def diff --git a/Surface_mesh_deformation/examples/Surface_mesh_deformation/deform_mesh_for_botsch08_format_sre_arap.cpp b/Surface_mesh_deformation/examples/Surface_mesh_deformation/deform_mesh_for_botsch08_format_sre_arap.cpp new file mode 100644 index 00000000000..0d3343a1602 --- /dev/null +++ b/Surface_mesh_deformation/examples/Surface_mesh_deformation/deform_mesh_for_botsch08_format_sre_arap.cpp @@ -0,0 +1,101 @@ +#include +#include +#include +#include +// HalfedgeGraph adapters for Polyhedron_3 +#include +#include +#include +#include + +#include + + +typedef CGAL::Simple_cartesian Kernel; +typedef CGAL::Polyhedron_3 Polyhedron; + +typedef boost::graph_traits::vertex_descriptor vertex_descriptor; +typedef boost::graph_traits::vertex_iterator vertex_iterator; + +typedef CGAL::Surface_mesh_deformation Surface_mesh_deformation; + +int main(int argc,char** argv) +{ + if ( argc!=4){ + std::cerr <<"Usage " << argv[0] << " input.off input.sel input.def\n"; + return 1; + } + Polyhedron mesh; + std::ifstream input(argv[1]); + + if ( !input || !(input >> mesh) || mesh.empty() ) { + std::cerr<< argv[1] << " is not a valid off file" << std::endl; + return 1; + } + input.close(); + + // Init the indices of the halfedges and the vertices. + set_halfedgeds_items_id(mesh); + + // Create a deformation object + Surface_mesh_deformation deform_mesh(mesh); + + // Changing alpha value + deform_mesh.set_sre_arap_alpha(0.02); + + + // Definition of the region of interest (use the whole mesh) + vertex_iterator vb,ve; + boost::tie(vb, ve) = boost::vertices(mesh); + + //the selection is set by a file + input.open(argv[2]); + std::string line; + std::vector control_vertices; + while(getline(input, line)) + { + if (line[0]=='#') continue; + if (line[0]=='1') deform_mesh.insert_roi_vertex(*vb); + if (line[0]=='2') { + deform_mesh.insert_control_vertex(*vb); + control_vertices.push_back(*vb); + } + ++vb; + if (vb==ve) break; + } + input.close(); + + std::cout << "Using " << control_vertices.size() << " control vertices\n"; + // The definition of the ROI and the control vertices is done, call preprocess + bool is_matrix_factorization_OK = deform_mesh.preprocess(); + if(!is_matrix_factorization_OK){ + std::cerr << "Error in preprocessing, check documentation of preprocess()" << std::endl; + return 1; + } + + //define the transformation + input.open(argv[3]); + double m00, m01, m02, m03, m10, m11, m12, m13, m20, m21, m22, m23, hw, sink; + getline(input, line); // skip first comment line + input >> m00 >> m01 >> m02 >> m03; + input >> m10 >> m11 >> m12 >> m13; + input >> m20 >> m21 >> m22 >> m23; + input >> sink >> sink >> sink >> hw; + + std::cout << "Setting target positions\n"; + Kernel::Aff_transformation_3 aff(m00, m01, m02, m03, m10, m11, m12, m13, m20, m21, m22, m23); + BOOST_FOREACH(vertex_descriptor vd, control_vertices) + { + Surface_mesh_deformation::Point pos = vd->point().transform(aff); + deform_mesh.set_target_position(vd, pos); + } + + // Call the function deform() with one-time parameters: + std::cout << "Deforming the mesh\n"; + deform_mesh.deform(1000, 1e-4); + + // Save the deformed mesh into a file + std::ofstream output("deform_res.off"); + output << mesh; + output.close(); +}