summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorvrouvrea <vrouvrea@636b058d-ea47-450e-bf9e-a15bfbe3eedb>2017-01-24 09:34:04 +0000
committervrouvrea <vrouvrea@636b058d-ea47-450e-bf9e-a15bfbe3eedb>2017-01-24 09:34:04 +0000
commitbe37aaeadc31ed10ede53393237d939d4aa47c82 (patch)
tree6b990088ce68cc19b3db1b8789eab831e62dc747
parent30a66f9431d059eed620e0535583e914fa5a3c74 (diff)
parentcd9d7681e06f29a25cf5775a384ac2e07e34abe9 (diff)
Merge last trunk modifications
git-svn-id: svn+ssh://scm.gforge.inria.fr/svnroot/gudhi/branches/ST_cythonize@1989 636b058d-ea47-450e-bf9e-a15bfbe3eedb Former-commit-id: 0743b9beb802b839357ecce17e11af5d4ef2a163
-rw-r--r--CMakeLists.txt9
-rw-r--r--biblio/how_to_cite_gudhi.bib18
-rw-r--r--data/distance_matrix/full_square_distance_matrix.csv7
-rw-r--r--data/distance_matrix/lower_triangular_distance_matrix.csv5
-rw-r--r--data/points/Kl.txt10000
-rw-r--r--data/points/generator/hypergenerator.cpp16
-rw-r--r--src/Bottleneck/concept/Persistence_diagram.h7
-rw-r--r--src/Bottleneck/example/CMakeLists.txt5
-rw-r--r--src/Bottleneck/include/gudhi/Graph_matching.h197
-rw-r--r--src/Bottleneck/include/gudhi/Layered_neighbors_finder.h74
-rw-r--r--src/Bottleneck/include/gudhi/Neighbors_finder.h96
-rw-r--r--src/Bottleneck/include/gudhi/Persistence_diagrams_graph.h147
-rw-r--r--src/Bottleneck/include/gudhi/Planar_neighbors_finder.h119
-rw-r--r--src/Bottleneck/test/CMakeLists.txt21
-rw-r--r--src/Bottleneck/test/bottleneck_unit_test.cpp26
-rw-r--r--src/Bottleneck_distance/benchmark/CMakeLists.txt13
-rw-r--r--src/Bottleneck_distance/benchmark/bottleneck_chrono.cpp62
-rw-r--r--src/Bottleneck_distance/concept/Persistence_diagram.h49
-rw-r--r--src/Bottleneck_distance/doc/Intro_bottleneck_distance.h51
-rw-r--r--src/Bottleneck_distance/doc/perturb_pd.pngbin0 -> 20864 bytes
-rw-r--r--src/Bottleneck_distance/example/CMakeLists.txt15
-rw-r--r--src/Bottleneck_distance/example/bottleneck_basic_example.cpp (renamed from src/Bottleneck/example/random_diagrams.cpp)40
-rw-r--r--src/Bottleneck_distance/example/bottleneck_read_file_example.cpp72
-rw-r--r--src/Bottleneck_distance/include/gudhi/Bottleneck.h104
-rw-r--r--src/Bottleneck_distance/include/gudhi/Graph_matching.h182
-rw-r--r--src/Bottleneck_distance/include/gudhi/Internal_point.h91
-rw-r--r--src/Bottleneck_distance/include/gudhi/Neighbors_finder.h172
-rw-r--r--src/Bottleneck_distance/include/gudhi/Persistence_graph.h180
-rw-r--r--src/Bottleneck_distance/test/CMakeLists.txt28
-rw-r--r--src/Bottleneck_distance/test/README (renamed from src/Bottleneck/test/README)0
-rw-r--r--src/Bottleneck_distance/test/bottleneck_unit_test.cpp167
-rw-r--r--src/CMakeLists.txt2
-rw-r--r--src/Doxyfile3
-rw-r--r--src/GudhUI/CMakeLists.txt67
-rw-r--r--src/GudhUI/gui/MainWindow.h3
-rw-r--r--src/GudhUI/gui/Menu_edge_contraction.h5
-rw-r--r--src/GudhUI/gui/Menu_k_nearest_neighbors.h2
-rw-r--r--src/GudhUI/gui/Menu_persistence.h2
-rw-r--r--src/GudhUI/gui/Menu_uniform_neighbors.h2
-rw-r--r--src/GudhUI/utils/Persistence_compute.h17
-rw-r--r--src/GudhUI/view/Viewer.h3
-rw-r--r--src/GudhUI/view/Viewer_instructor.h3
-rw-r--r--src/Persistent_cohomology/benchmark/CMakeLists.txt14
-rw-r--r--src/Persistent_cohomology/benchmark/performance_rips_persistence.cpp (renamed from src/Persistent_cohomology/example/performance_rips_persistence.cpp)36
-rw-r--r--src/Persistent_cohomology/doc/Intro_persistent_cohomology.h20
-rw-r--r--src/Persistent_cohomology/example/CMakeLists.txt20
-rw-r--r--src/Persistent_cohomology/example/README50
-rw-r--r--src/Persistent_cohomology/example/alpha_complex_3d_persistence.cpp5
-rw-r--r--src/Persistent_cohomology/example/alpha_complex_persistence.cpp7
-rw-r--r--src/Persistent_cohomology/example/periodic_alpha_complex_3d_persistence.cpp19
-rw-r--r--src/Persistent_cohomology/example/persistence_from_simple_simplex_tree.cpp19
-rw-r--r--src/Persistent_cohomology/example/rips_distance_matrix_persistence.cpp144
-rw-r--r--src/Persistent_cohomology/example/rips_multifield_persistence.cpp58
-rw-r--r--src/Persistent_cohomology/example/rips_persistence.cpp60
-rw-r--r--src/Persistent_cohomology/example/rips_persistence_step_by_step.cpp210
-rw-r--r--src/Persistent_cohomology/example/rips_persistence_via_boundary_matrix.cpp52
-rw-r--r--src/Persistent_cohomology/include/gudhi/Persistent_cohomology.h3
-rw-r--r--src/Persistent_cohomology/test/persistent_cohomology_unit_test_multi_field.cpp4
-rw-r--r--src/Rips_complex/concept/Simplicial_complex_for_rips.h55
-rw-r--r--src/Rips_complex/doc/Intro_rips_complex.h152
-rw-r--r--src/Rips_complex/doc/rips_complex_representation.ipe326
-rw-r--r--src/Rips_complex/doc/rips_complex_representation.pngbin0 -> 15677 bytes
-rw-r--r--src/Rips_complex/doc/rips_one_skeleton.ipe326
-rw-r--r--src/Rips_complex/doc/rips_one_skeleton.pngbin0 -> 47651 bytes
-rw-r--r--src/Rips_complex/example/CMakeLists.txt47
-rw-r--r--src/Rips_complex/example/example_one_skeleton_rips_from_distance_matrix.cpp58
-rw-r--r--src/Rips_complex/example/example_one_skeleton_rips_from_points.cpp52
-rw-r--r--src/Rips_complex/example/example_rips_complex_from_csv_distance_matrix_file.cpp72
-rw-r--r--src/Rips_complex/example/example_rips_complex_from_off_file.cpp71
-rw-r--r--src/Rips_complex/example/full_skeleton_rips_for_doc.txt26
-rw-r--r--src/Rips_complex/example/one_skeleton_rips_for_doc.txt20
-rw-r--r--src/Rips_complex/include/gudhi/Rips_complex.h186
-rw-r--r--src/Rips_complex/test/CMakeLists.txt25
-rw-r--r--src/Rips_complex/test/README12
-rw-r--r--src/Rips_complex/test/test_rips_complex.cpp353
-rw-r--r--src/Simplex_tree/example/simple_simplex_tree.cpp15
-rw-r--r--src/Simplex_tree/example/simplex_tree_from_cliques_of_graph.cpp11
-rw-r--r--src/Simplex_tree/include/gudhi/Simplex_tree.h2
-rw-r--r--src/Simplex_tree/test/simplex_tree_unit_test.cpp69
-rw-r--r--src/Tangential_complex/benchmark/CMakeLists.txt9
-rw-r--r--src/Witness_complex/example/witness_complex_from_file.cpp9
-rw-r--r--src/Witness_complex/example/witness_complex_sphere.cpp8
-rw-r--r--src/Witness_complex/include/gudhi/Construct_closest_landmark_table.h8
-rw-r--r--src/Witness_complex/include/gudhi/Witness_complex.h1
-rw-r--r--src/Witness_complex/test/simple_witness_complex.cpp2
-rw-r--r--src/Witness_complex/test/witness_complex_points.cpp4
-rw-r--r--src/cmake/modules/FindQGLViewer.cmake2
-rw-r--r--src/cmake/modules/GUDHI_user_version_target.txt2
-rw-r--r--src/common/doc/main_page.h90
-rw-r--r--src/common/example/example_CGAL_3D_points_off_reader.cpp2
-rw-r--r--src/common/example/example_CGAL_points_off_reader.cpp2
-rw-r--r--src/common/include/gudhi/distance_functions.h34
-rw-r--r--src/common/include/gudhi/graph_simplicial_complex.h59
-rw-r--r--src/common/include/gudhi/reader_utils.h166
-rw-r--r--src/common/include/gudhi_patches/Bottleneck_distance_CGAL_patches.txt3
-rw-r--r--src/common/include/gudhi_patches/CGAL/Kd_tree.h582
-rw-r--r--src/common/include/gudhi_patches/CGAL/Kd_tree_node.h586
-rw-r--r--src/common/include/gudhi_patches/CGAL/Orthogonal_incremental_neighbor_search.h620
-rw-r--r--src/common/include/gudhi_patches/Tangential_complex_CGAL_patches.txt82
-rw-r--r--src/common/test/CMakeLists.txt9
-rw-r--r--src/common/test/test_distance_matrix_reader.cpp85
-rw-r--r--src/common/test/test_points_off_reader.cpp2
102 files changed, 5903 insertions, 11145 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index dc202553..0cfa5af7 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -122,10 +122,11 @@ else()
include_directories(src/common/include/)
include_directories(src/Alpha_complex/include/)
include_directories(src/Bitmap_cubical_complex/include/)
- include_directories(src/Bottleneck/include/)
+ include_directories(src/Bottleneck_distance/include/)
include_directories(src/Contraction/include/)
include_directories(src/Hasse_complex/include/)
include_directories(src/Persistent_cohomology/include/)
+ include_directories(src/Rips_complex/include/)
include_directories(src/Simplex_tree/include/)
include_directories(src/Skeleton_blocker/include/)
include_directories(src/Spatial_searching/include/)
@@ -139,6 +140,7 @@ else()
add_subdirectory(src/Simplex_tree/example)
add_subdirectory(src/Persistent_cohomology/test)
add_subdirectory(src/Persistent_cohomology/example)
+ add_subdirectory(src/Persistent_cohomology/benchmark)
add_subdirectory(src/Skeleton_blocker/test)
add_subdirectory(src/Skeleton_blocker/example)
add_subdirectory(src/Contraction/example)
@@ -155,6 +157,11 @@ else()
add_subdirectory(src/Tangential_complex/example)
add_subdirectory(src/Tangential_complex/test)
add_subdirectory(src/Tangential_complex/benchmark)
+ add_subdirectory(src/Bottleneck_distance/example)
+ add_subdirectory(src/Bottleneck_distance/test)
+ add_subdirectory(src/Bottleneck_distance/benchmark)
+ add_subdirectory(src/Rips_complex/example)
+ add_subdirectory(src/Rips_complex/test)
# data points generator
add_subdirectory(data/points/generator)
diff --git a/biblio/how_to_cite_gudhi.bib b/biblio/how_to_cite_gudhi.bib
index 03c05728..fde1d9b1 100644
--- a/biblio/how_to_cite_gudhi.bib
+++ b/biblio/how_to_cite_gudhi.bib
@@ -94,4 +94,22 @@
, booktitle = "{GUDHI} User and Reference Manual"
, url = "http://gudhi.gforge.inria.fr/doc/latest/group__tangential__complex.html"
, year = 2016
+}
+
+@incollection{gudhi:RipsComplex
+, author = "Cl\'ement Maria, Pawel Dlotko, Vincent Rouvreau"
+, title = "Rips complex"
+, publisher = "{GUDHI Editorial Board}"
+, booktitle = "{GUDHI} User and Reference Manual"
+, url = "http://gudhi.gforge.inria.fr/doc/latest/group__rips__complex.html"
+, year = 2016
+}
+
+@incollection{gudhi:BottleneckDistance
+, author = "Fran{{\c{c}}ois Godi"
+, title = "Bottleneck distance"
+, publisher = "{GUDHI Editorial Board}"
+, booktitle = "{GUDHI} User and Reference Manual"
+, url = "http://gudhi.gforge.inria.fr/doc/latest/group__bottleneck__distance.html"
+, year = 2016
} \ No newline at end of file
diff --git a/data/distance_matrix/full_square_distance_matrix.csv b/data/distance_matrix/full_square_distance_matrix.csv
new file mode 100644
index 00000000..51512b03
--- /dev/null
+++ b/data/distance_matrix/full_square_distance_matrix.csv
@@ -0,0 +1,7 @@
+0;6.0827625303;5.8309518948;9.4339811321;13.0384048104;18.0277563773;17.88854382;
+6.0827625303;0;6.7082039325;6.3245553203;15.6524758425;19.6468827044;17.1172427686;
+5.8309518948;6.7082039325;0;5;8.94427191;13.152946438;12.0830459736;
+9.4339811321;6.3245553203;5;0;12.0415945788;14.7648230602;11;
+13.0384048104;15.6524758425;8.94427191;12.0415945788;0;5.3851648071;9.4868329805;
+18.0277563773;19.6468827044;13.152946438;14.7648230602;5.3851648071;0;7.2801098893;
+17.88854382;17.1172427686;12.0830459736;11;9.4868329805;7.2801098893;0; \ No newline at end of file
diff --git a/data/distance_matrix/lower_triangular_distance_matrix.csv b/data/distance_matrix/lower_triangular_distance_matrix.csv
new file mode 100644
index 00000000..d8a4c0a3
--- /dev/null
+++ b/data/distance_matrix/lower_triangular_distance_matrix.csv
@@ -0,0 +1,5 @@
+
+1,
+2,3,
+4,5,6,
+7,8,9,10, \ No newline at end of file
diff --git a/data/points/Kl.txt b/data/points/Kl.txt
deleted file mode 100644
index c5b9539a..00000000
--- a/data/points/Kl.txt
+++ /dev/null
@@ -1,10000 +0,0 @@
-0.5 0 0 0 1
-0.562791 0 0.125333 0 0.998027
-0.625333 0 0.24869 0 0.992115
-0.687381 0 0.368124 0 0.982287
-0.74869 0 0.481754 0 0.968583
-0.809017 0 0.587785 0 0.951057
-0.868124 0 0.684547 0 0.929777
-0.925779 0 0.770513 0 0.904827
-0.981754 0 0.844328 0 0.876307
-1.03583 0 0.904827 0 0.844328
-1.08779 0 0.951056 0 0.809017
-1.13742 0 0.982287 0 0.770513
-1.18455 0 0.998027 0 0.728969
-1.22897 0 0.998027 0 0.684547
-1.27051 0 0.982287 0 0.637424
-1.30902 0 0.951057 0 0.587785
-1.34433 0 0.904827 0 0.535827
-1.37631 0 0.844328 0 0.481754
-1.40483 0 0.770514 0 0.42578
-1.42978 0 0.684547 0 0.368125
-1.45106 0 0.587786 0 0.309017
-1.46858 0 0.481754 0 0.24869
-1.48229 0 0.368125 0 0.187382
-1.49211 0 0.24869 0 0.125334
-1.49803 0 0.125334 0 0.0627908
-1.5 0 6.5359e-07 0 3.26795e-07
-1.49803 0 -0.125333 0 -0.0627902
-1.49211 0 -0.248689 0 -0.125333
-1.48229 0 -0.368124 0 -0.187381
-1.46858 0 -0.481753 0 -0.24869
-1.45106 0 -0.587785 0 -0.309017
-1.42978 0 -0.684547 0 -0.368124
-1.40483 0 -0.770513 0 -0.425779
-1.37631 0 -0.844327 0 -0.481753
-1.34433 0 -0.904827 0 -0.535826
-1.30902 0 -0.951056 0 -0.587785
-1.27051 0 -0.982287 0 -0.637424
-1.22897 0 -0.998027 0 -0.684547
-1.18455 0 -0.998027 0 -0.728968
-1.13742 0 -0.982287 0 -0.770513
-1.08779 0 -0.951057 0 -0.809017
-1.03583 0 -0.904828 0 -0.844328
-0.981754 0 -0.844329 0 -0.876306
-0.92578 0 -0.770514 0 -0.904827
-0.868125 0 -0.684548 0 -0.929776
-0.809018 0 -0.587786 0 -0.951056
-0.74869 0 -0.481755 0 -0.968583
-0.687382 0 -0.368126 0 -0.982287
-0.625334 0 -0.248691 0 -0.992115
-0.562791 0 -0.125335 0 -0.998027
-0.500001 0 -1.30718e-06 0 -1
-0.43721 0 0.125332 0 -0.998027
-0.374667 0 0.248689 0 -0.992115
-0.312619 0 0.368123 0 -0.982287
-0.251311 0 0.481752 0 -0.968583
-0.190984 0 0.587784 0 -0.951057
-0.131876 0 0.684546 0 -0.929777
-0.0742214 0 0.770512 0 -0.904827
-0.018247 0 0.844327 0 -0.876307
--0.0358261 -0 0.904826 0 -0.844328
--0.0877846 0 0.951056 0 -0.809017
--0.137423 -0 0.982287 0 -0.770514
--0.184547 0 0.998027 0 -0.728969
--0.228968 0 0.998027 0 -0.684548
--0.270513 -0 0.982288 0 -0.637425
--0.309016 -0 0.951057 0 -0.587786
--0.344327 0 0.904828 0 -0.535828
--0.376306 0 0.844329 0 -0.481754
--0.404827 -0 0.770514 0 -0.42578
--0.429776 0 0.684548 0 -0.368125
--0.451056 -0 0.587787 0 -0.309018
--0.468583 0 0.481755 0 -0.248691
--0.482287 -0 0.368126 0 -0.187382
--0.492115 -0 0.248692 0 -0.125334
--0.498027 -0 0.125335 0 -0.0627915
--0.5 0 1.96077e-06 0 -9.80385e-07
--0.498027 -0 -0.125331 0 0.0627895
--0.492115 -0 -0.248688 0 0.125332
--0.482287 -0 -0.368123 0 0.18738
--0.468583 0 -0.481752 0 0.248689
--0.451057 0 -0.587784 0 0.309016
--0.429777 -0 -0.684546 0 0.368124
--0.404828 0 -0.770512 0 0.425778
--0.376307 0 -0.844327 0 0.481753
--0.344329 -0 -0.904826 0 0.535826
--0.309018 0 -0.951056 0 0.587784
--0.270514 -0 -0.982287 0 0.637423
--0.228969 0 -0.998027 0 0.684546
--0.184548 0 -0.998027 0 0.728968
--0.137425 0 -0.982288 0 0.770513
--0.0877862 -0 -0.951057 0 0.809016
--0.0358278 0 -0.904828 0 0.844327
-0.0182453 0 -0.844329 0 0.876306
-0.0742196 0 -0.770515 0 0.904827
-0.131874 0 -0.684549 0 0.929776
-0.190982 0 -0.587787 0 0.951056
-0.251309 0 -0.481756 0 0.968583
-0.312617 0 -0.368127 0 0.982287
-0.374665 0 -0.248692 0 0.992115
-0.437208 0 -0.125336 0 0.998027
-0.499013 0.0313953 0 0.0627905 1
-0.55772 0.0350888 0.127244 0.0627905 0.998027
-0.616241 0.0387706 0.252504 0.0627905 0.992115
-0.674392 0.0424292 0.373829 0.0627905 0.982287
-0.731988 0.0460527 0.489327 0.0627905 0.968583
-0.788842 0.0496297 0.597202 0.0627905 0.951057
-0.84477 0.0531484 0.695772 0.0627905 0.929777
-0.899588 0.0565973 0.783507 0.0627905 0.904827
-0.95311 0.0599646 0.859043 0.0627905 0.876307
-1.00515 0.0632389 0.921211 0.0627905 0.844328
-1.05553 0.0664086 0.96905 0.0627905 0.809017
-1.10407 0.0694623 1.00182 0.0627905 0.770513
-1.15059 0.0723887 1.01904 0.0627905 0.728969
-1.1949 0.0751766 1.02043 0.0627905 0.684547
-1.23683 0.0778149 1.00601 0.0627905 0.637424
-1.27622 0.080293 0.975999 0.0627905 0.587785
-1.31289 0.0826003 0.930902 0.0627905 0.535827
-1.34669 0.0847266 0.871437 0.0627905 0.481754
-1.37745 0.0866621 0.798555 0.0627905 0.42578
-1.40504 0.0883974 0.713415 0.0627905 0.368125
-1.4293 0.0899238 0.617369 0.0627905 0.309017
-1.45011 0.0912329 0.51194 0.0627905 0.24869
-1.46734 0.0923171 0.398798 0.0627905 0.187382
-1.48089 0.0931694 0.279731 0.0627905 0.125334
-1.49065 0.0937837 0.156621 0.0627905 0.0627908
-1.49655 0.0941548 0.0314114 0.0627905 3.26795e-07
-1.49851 0.0942781 -0.0939219 0.0627905 -0.0627902
-1.49648 0.0941504 -0.217403 0.0627905 -0.125333
-1.49042 0.0937692 -0.337088 0.0627905 -0.187381
-1.48031 0.0931332 -0.451091 0.0627905 -0.24869
-1.46615 0.0922424 -0.557621 0.0627905 -0.309017
-1.44796 0.0910977 -0.655004 0.0627905 -0.368124
-1.42576 0.0897015 -0.741711 0.0627905 -0.425779
-1.39963 0.0880571 -0.816385 0.0627905 -0.481753
-1.36962 0.0861695 -0.877859 0.0627905 -0.535826
-1.33585 0.0840446 -0.925175 0.0627905 -0.587785
-1.29842 0.0816897 -0.9576 0.0627905 -0.637424
-1.25747 0.0791134 -0.974637 0.0627905 -0.684547
-1.21316 0.0763255 -0.976032 0.0627905 -0.728968
-1.16566 0.0733371 -0.961781 0.0627905 -0.770513
-1.11516 0.0701602 -0.932125 0.0627905 -0.809017
-1.06188 0.0668081 -0.88755 0.0627905 -0.844328
-1.00605 0.0632952 -0.82878 0.0627905 -0.876306
-0.947898 0.0596367 -0.75676 0.0627905 -0.904827
-0.88769 0.0558487 -0.672647 0.0627905 -0.929776
-0.825695 0.0519483 -0.57779 0.0627905 -0.951056
-0.762193 0.0479531 -0.473705 0.0627905 -0.968583
-0.697474 0.0438813 -0.362058 0.0627905 -0.982287
-0.631834 0.0397516 -0.244632 0.0627905 -0.992115
-0.565579 0.0355832 -0.1233 0.0627905 -0.998027
-0.499014 0.0313953 -1.286e-06 0.0627905 -1
-0.432449 0.0272074 0.123298 0.0627905 -0.998027
-0.366194 0.023039 0.244629 0.0627905 -0.992115
-0.300555 0.0189093 0.362056 0.0627905 -0.982287
-0.235835 0.0148375 0.473703 0.0627905 -0.968583
-0.172333 0.0108423 0.577788 0.0627905 -0.951057
-0.110338 0.00694185 0.672645 0.0627905 -0.929777
-0.05013 0.00315391 0.756758 0.0627905 -0.904827
--0.00802039 -0.0005046 0.828778 0.0627905 -0.876307
--0.0638568 -0.00401753 0.887549 0.0627905 -0.844328
--0.117136 -0.00736959 0.932124 0.0627905 -0.809017
--0.167632 -0.0105465 0.96178 0.0627905 -0.770514
--0.215132 -0.013535 0.976032 0.0627905 -0.728969
--0.259444 -0.0163228 0.974637 0.0627905 -0.684548
--0.300393 -0.0188991 0.9576 0.0627905 -0.637425
--0.337823 -0.021254 0.925176 0.0627905 -0.587786
--0.371597 -0.0233789 0.87786 0.0627905 -0.535828
--0.401601 -0.0252666 0.816387 0.0627905 -0.481754
--0.427737 -0.0269109 0.741713 0.0627905 -0.42578
--0.44993 -0.0283072 0.655006 0.0627905 -0.368125
--0.468124 -0.0294519 0.557623 0.0627905 -0.309018
--0.482284 -0.0303427 0.451094 0.0627905 -0.248691
--0.492392 -0.0309787 0.33709 0.0627905 -0.187382
--0.498451 -0.0313599 0.217406 0.0627905 -0.125334
--0.500482 -0.0314876 0.0939245 0.0627905 -0.0627915
--0.498521 -0.0313643 -0.0314088 0.0627905 -9.80385e-07
--0.492624 -0.0309932 -0.156618 0.0627905 0.0627895
--0.482859 -0.0303789 -0.279728 0.0627905 0.125332
--0.469312 -0.0295266 -0.398795 0.0627905 0.18738
--0.452079 -0.0284424 -0.511938 0.0627905 0.248689
--0.431272 -0.0271333 -0.617367 0.0627905 0.309016
--0.407011 -0.025607 -0.713413 0.0627905 0.368124
--0.379428 -0.0238716 -0.798553 0.0627905 0.425778
--0.348664 -0.0219361 -0.871436 0.0627905 0.481753
--0.314868 -0.0198098 -0.930901 0.0627905 0.535826
--0.278195 -0.0175025 -0.975998 0.0627905 0.587784
--0.238807 -0.0150245 -1.006 0.0627905 0.637423
--0.196872 -0.0123861 -1.02043 0.0627905 0.684546
--0.15256 -0.00959824 -1.01904 0.0627905 0.728968
--0.106046 -0.00667187 -1.00182 0.0627905 0.770513
--0.057509 -0.00361816 -0.969051 0.0627905 0.809016
--0.00712798 -0.000448454 -0.921212 0.0627905 0.844327
-0.0449152 0.00282582 -0.859045 0.0627905 0.876306
-0.0984375 0.00619316 -0.783509 0.0627905 0.904827
-0.153255 0.00964199 -0.695774 0.0627905 0.929776
-0.209184 0.0131607 -0.597204 0.0627905 0.951056
-0.266038 0.0167377 -0.48933 0.0627905 0.968583
-0.323633 0.0203613 -0.373831 0.0627905 0.982287
-0.381784 0.0240198 -0.252507 0.0627905 0.992115
-0.440306 0.0277017 -0.127246 0.0627905 0.998027
-0.496057 0.0626666 0 0.125333 1
-0.550422 0.0695345 0.129029 0.125333 0.998027
-0.604665 0.0763869 0.256069 0.125333 0.992115
-0.658662 0.0832083 0.379164 0.125333 0.982287
-0.712288 0.0899829 0.496418 0.125333 0.968583
-0.765416 0.0966945 0.606029 0.125333 0.951057
-0.817914 0.103327 0.706311 0.125333 0.929777
-0.869646 0.109862 0.795728 0.125333 0.904827
-0.920471 0.116283 0.872911 0.125333 0.876307
-0.970243 0.12257 0.936686 0.125333 0.844328
-1.01881 0.128706 0.986087 0.125333 0.809017
-1.06602 0.134669 1.02037 0.125333 0.770513
-1.11169 0.14044 1.03904 0.125333 0.728969
-1.15568 0.145996 1.04183 0.125333 0.684547
-1.19779 0.151317 1.02873 0.125333 0.637424
-1.23786 0.156379 0.999979 0.125333 0.587785
-1.27571 0.161159 0.956058 0.125333 0.535827
-1.31114 0.165636 0.897686 0.125333 0.481754
-1.34398 0.169784 0.825808 0.125333 0.42578
-1.37404 0.173581 0.741578 0.125333 0.368125
-1.40114 0.177005 0.646343 0.125333 0.309017
-1.4251 0.180031 0.541621 0.125333 0.24869
-1.44574 0.18264 0.429077 0.125333 0.187382
-1.46291 0.184809 0.310495 0.125333 0.125334
-1.47645 0.186519 0.187753 0.125333 0.0627908
-1.48621 0.187752 0.0627912 0.125333 3.26795e-07
-1.49207 0.188492 -0.0624186 0.125333 -0.0627902
-1.4939 0.188723 -0.185903 0.125333 -0.125333
-1.49161 0.188434 -0.305719 0.125333 -0.187381
-1.48512 0.187614 -0.419985 0.125333 -0.24869
-1.47437 0.186256 -0.526907 0.125333 -0.309017
-1.45933 0.184356 -0.624815 0.125333 -0.368124
-1.43998 0.181911 -0.712178 0.125333 -0.425779
-1.41634 0.178925 -0.787638 0.125333 -0.481753
-1.38844 0.175401 -0.850025 0.125333 -0.535826
-1.35636 0.171348 -0.898381 0.125333 -0.587785
-1.32018 0.166777 -0.931968 0.125333 -0.637424
-1.28002 0.161705 -0.950285 0.125333 -0.684547
-1.23604 0.156148 -0.953074 0.125333 -0.728968
-1.1884 0.15013 -0.940325 0.125333 -0.770513
-1.1373 0.143675 -0.912273 0.125333 -0.809017
-1.08298 0.136812 -0.869397 0.125333 -0.844328
-1.02567 0.129572 -0.812413 0.125333 -0.876306
-0.965646 0.121989 -0.742259 0.125333 -0.904827
-0.903203 0.114101 -0.660082 0.125333 -0.929776
-0.83865 0.105946 -0.567223 0.125333 -0.951056
-0.772311 0.0975656 -0.465189 0.125333 -0.968583
-0.704527 0.0890025 -0.355633 0.125333 -0.982287
-0.63565 0.0803012 -0.240331 0.125333 -0.992115
-0.566038 0.0715072 -0.121144 0.125333 -0.998027
-0.496058 0.0626667 -1.26356e-06 0.125333 -1
-0.426078 0.0538261 0.121142 0.125333 -0.998027
-0.356466 0.0450322 0.240328 0.125333 -0.992115
-0.287589 0.0363309 0.355631 0.125333 -0.982287
-0.219805 0.0277678 0.465186 0.125333 -0.968583
-0.153466 0.0193873 0.567221 0.125333 -0.951057
-0.0889129 0.0112323 0.660081 0.125333 -0.929777
-0.0264703 0.00334398 0.742257 0.125333 -0.904827
--0.0335514 -0.00423853 0.812412 0.125333 -0.876307
--0.0908612 -0.0114784 0.869396 0.125333 -0.844328
--0.145188 -0.0183415 0.912272 0.125333 -0.809017
--0.196284 -0.0247964 0.940324 0.125333 -0.770514
--0.243924 -0.0308147 0.953074 0.125333 -0.728969
--0.287908 -0.0363712 0.950285 0.125333 -0.684548
--0.328063 -0.041444 0.931968 0.125333 -0.637425
--0.364242 -0.0460145 0.898382 0.125333 -0.587786
--0.396326 -0.0500676 0.850027 0.125333 -0.535828
--0.424221 -0.0535916 0.787639 0.125333 -0.481754
--0.447863 -0.0565782 0.712179 0.125333 -0.42578
--0.467211 -0.0590225 0.624817 0.125333 -0.368125
--0.482254 -0.0609228 0.52691 0.125333 -0.309018
--0.493003 -0.0622807 0.419987 0.125333 -0.248691
--0.499494 -0.0631007 0.305722 0.125333 -0.187382
--0.501784 -0.0633901 0.185906 0.125333 -0.125334
--0.499954 -0.0631588 0.0624212 0.125333 -0.0627915
--0.4941 -0.0624193 -0.0627885 0.125333 -9.80385e-07
--0.484338 -0.0611861 -0.187751 0.125333 0.0627895
--0.4708 -0.0594759 -0.310493 0.125333 0.125332
--0.453629 -0.0573067 -0.429075 0.125333 0.18738
--0.432981 -0.0546983 -0.541619 0.125333 0.248689
--0.409022 -0.0516715 -0.646341 0.125333 0.309016
--0.381924 -0.0482482 -0.741576 0.125333 0.368124
--0.351865 -0.0444508 -0.825806 0.125333 0.425778
--0.319027 -0.0403024 -0.897684 0.125333 0.481753
--0.283594 -0.0358262 -0.956056 0.125333 0.535826
--0.245751 -0.0310455 -0.999978 0.125333 0.587784
--0.20568 -0.0259835 -1.02873 0.125333 0.637423
--0.163564 -0.020663 -1.04183 0.125333 0.684546
--0.11958 -0.0151065 -1.03904 0.125333 0.728968
--0.0739014 -0.00933591 -1.02037 0.125333 0.770513
--0.0266968 -0.00337259 -0.986088 0.125333 0.809016
-0.0218703 0.00276286 -0.936687 0.125333 0.844327
-0.0716424 0.00905053 -0.872913 0.125333 0.876306
-0.122467 0.0154712 -0.795729 0.125333 0.904827
-0.174199 0.0220065 -0.706313 0.125333 0.929776
-0.226697 0.0286385 -0.606031 0.125333 0.951056
-0.279825 0.0353501 -0.496421 0.125333 0.968583
-0.333452 0.0421248 -0.379166 0.125333 0.982287
-0.387449 0.0489462 -0.256071 0.125333 0.992115
-0.441691 0.0557986 -0.129031 0.125333 0.998027
-0.491144 0.0936906 0 0.187381 1
-0.540962 0.103194 0.130686 0.187381 0.998027
-0.590721 0.112686 0.259381 0.187381 0.992115
-0.640359 0.122155 0.384125 0.187381 0.982287
-0.68981 0.131588 0.503019 0.187381 0.968583
-0.739004 0.140973 0.614258 0.187381 0.951057
-0.787862 0.150293 0.716153 0.187381 0.929777
-0.836298 0.159532 0.807163 0.187381 0.904827
-0.884213 0.168673 0.885918 0.187381 0.876307
-0.9315 0.177693 0.951237 0.187381 0.844328
-0.978038 0.186571 1.00215 0.187381 0.809017
-1.02369 0.19528 1.03791 0.187381 0.770513
-1.06832 0.203793 1.05802 0.187381 0.728969
-1.11176 0.21208 1.0622 0.187381 0.684547
-1.15385 0.220108 1.05044 0.187381 0.637424
-1.19439 0.227841 1.02297 0.187381 0.587785
-1.23319 0.235244 0.98027 0.187381 0.535827
-1.27006 0.242276 0.923049 0.187381 0.481754
-1.30477 0.248898 0.852246 0.187381 0.42578
-1.33712 0.255069 0.769009 0.187381 0.368125
-1.36687 0.260745 0.674679 0.187381 0.309017
-1.39381 0.265884 0.570768 0.187381 0.24869
-1.41772 0.270444 0.458933 0.187381 0.187382
-1.43837 0.274384 0.340953 0.187381 0.125334
-1.45556 0.277662 0.2187 0.187381 0.0627908
-1.46907 0.28024 0.0941089 0.187381 3.26795e-07
-1.47873 0.282082 -0.0308537 0.187381 -0.0627902
-1.48435 0.283155 -0.154219 0.187381 -0.125333
-1.48578 0.283428 -0.274049 0.187381 -0.187381
-1.48288 0.282875 -0.388463 0.187381 -0.24869
-1.47554 0.281475 -0.495674 0.187381 -0.309017
-1.46368 0.279212 -0.594009 0.187381 -0.368124
-1.44723 0.276073 -0.681941 0.187381 -0.425779
-1.42616 0.272054 -0.758113 0.187381 -0.481753
-1.40048 0.267156 -0.821353 0.187381 -0.535826
-1.37022 0.261384 -0.8707 0.187381 -0.587785
-1.33545 0.254751 -0.905416 0.187381 -0.637424
-1.29628 0.247279 -0.924995 0.187381 -0.684547
-1.25284 0.238992 -0.929176 0.187381 -0.728968
-1.2053 0.229924 -0.917941 0.187381 -0.770513
-1.15387 0.220113 -0.891521 0.187381 -0.809017
-1.09879 0.209605 -0.850386 0.187381 -0.844328
-1.04032 0.198451 -0.795244 0.187381 -0.876306
-0.978753 0.186707 -0.727025 0.187381 -0.904827
-0.914424 0.174436 -0.646866 0.187381 -0.929776
-0.847676 0.161703 -0.556096 0.187381 -0.951056
-0.778879 0.148579 -0.456213 0.187381 -0.968583
-0.70842 0.135138 -0.348858 0.187381 -0.982287
-0.6367 0.121457 -0.235792 0.187381 -0.992115
-0.564135 0.107614 -0.118869 0.187381 -0.998027
-0.491144 0.0936908 -1.23987e-06 0.187381 -1
-0.418154 0.0797671 0.118867 0.187381 -0.998027
-0.345588 0.0659245 0.23579 0.187381 -0.992115
-0.273869 0.0522433 0.348855 0.187381 -0.982287
-0.20341 0.0388025 0.456211 0.187381 -0.968583
-0.134612 0.0256787 0.556094 0.187381 -0.951057
-0.0678647 0.0129459 0.646864 0.187381 -0.929777
-0.00353565 0.000674461 0.727023 0.187381 -0.904827
--0.0580268 -0.0110692 0.795243 0.187381 -0.876307
--0.116499 -0.0222234 0.850385 0.187381 -0.844328
--0.171584 -0.0327314 0.89152 0.187381 -0.809017
--0.223014 -0.0425423 0.917941 0.187381 -0.770514
--0.270552 -0.0516106 0.929176 0.187381 -0.728969
--0.313994 -0.0598975 0.924996 0.187381 -0.684548
--0.353166 -0.06737 0.905417 0.187381 -0.637425
--0.387933 -0.0740022 0.870701 0.187381 -0.587786
--0.418191 -0.0797742 0.821354 0.187381 -0.535828
--0.443872 -0.084673 0.758114 0.187381 -0.481754
--0.464939 -0.0886918 0.681943 0.187381 -0.42578
--0.481391 -0.0918302 0.594011 0.187381 -0.368125
--0.493257 -0.0940937 0.495676 0.187381 -0.309018
--0.500595 -0.0954935 0.388466 0.187381 -0.248691
--0.503492 -0.0960463 0.274051 0.187381 -0.187382
--0.502062 -0.0957735 0.154222 0.187381 -0.125334
--0.496441 -0.0947011 0.0308563 0.187381 -0.0627915
--0.486784 -0.0928591 -0.0941063 0.187381 -9.80385e-07
--0.473269 -0.0902808 -0.218698 0.187381 0.0627895
--0.456084 -0.0870027 -0.34095 0.187381 0.125332
--0.435433 -0.0830632 -0.45893 0.187381 0.18738
--0.411527 -0.078503 -0.570766 0.187381 0.248689
--0.384586 -0.0733637 -0.674677 0.187381 0.309016
--0.354831 -0.0676876 -0.769007 0.187381 0.368124
--0.322485 -0.0615173 -0.852244 0.187381 0.425778
--0.287771 -0.0548952 -0.923047 0.187381 0.481753
--0.250905 -0.0478627 -0.980269 0.187381 0.535826
--0.2121 -0.0404603 -1.02297 0.187381 0.587784
--0.171559 -0.0327267 -1.05044 0.187381 0.637423
--0.129477 -0.024699 -1.0622 0.187381 0.684546
--0.0860359 -0.0164122 -1.05802 0.187381 0.728968
--0.0414079 -0.00789897 -1.03792 0.187381 0.770513
-0.00424818 0.000810384 -1.00215 0.187381 0.809016
-0.0507863 0.009688 -0.951238 0.187381 0.844327
-0.0980732 0.0187085 -0.885919 0.187381 0.876306
-0.145989 0.0278488 -0.807165 0.187381 0.904827
-0.194424 0.0370883 -0.716155 0.187381 0.929776
-0.243282 0.0464085 -0.61426 0.187381 0.951056
-0.292476 0.0557927 -0.503022 0.187381 0.968583
-0.341927 0.0652261 -0.384127 0.187381 0.982287
-0.391565 0.074695 -0.259384 0.187381 0.992115
-0.441324 0.084187 -0.130689 0.187381 0.998027
-0.484292 0.124345 0 0.24869 1
-0.529415 0.135931 0.132215 0.24869 0.998027
-0.57454 0.147517 0.262437 0.24869 0.992115
-0.619666 0.159103 0.388707 0.24869 0.982287
-0.664786 0.170688 0.509124 0.24869 0.968583
-0.709885 0.182268 0.62188 0.24869 0.951057
-0.754938 0.193835 0.725287 0.24869 0.929777
-0.799905 0.205381 0.817802 0.24869 0.904827
-0.844733 0.21689 0.89805 0.24869 0.876307
-0.88935 0.228346 0.964849 0.24869 0.844328
-0.933667 0.239725 1.01723 0.24869 0.809017
-0.977576 0.250999 1.05443 0.24869 0.770513
-1.02095 0.262135 1.07595 0.24869 0.728969
-1.06363 0.273095 1.08152 0.24869 0.684547
-1.10547 0.283836 1.07111 0.24869 0.637424
-1.14626 0.294309 1.04495 0.24869 0.587785
-1.1858 0.304462 1.00351 0.24869 0.535827
-1.22388 0.314238 0.947501 0.24869 0.481754
-1.26024 0.323576 0.877843 0.24869 0.42578
-1.29466 0.332411 0.795681 0.24869 0.368125
-1.32685 0.340677 0.70235 0.24869 0.309017
-1.35656 0.348306 0.599351 0.24869 0.24869
-1.38353 0.355229 0.488336 0.24869 0.187382
-1.40747 0.361377 0.371074 0.24869 0.125334
-1.42813 0.36668 0.249431 0.24869 0.0627908
-1.44524 0.371074 0.125334 0.24869 3.26795e-07
-1.45856 0.374493 0.000741619 0.24869 -0.0627902
-1.46785 0.37688 -0.122383 0.24869 -0.125333
-1.4729 0.378178 -0.242108 0.24869 -0.187381
-1.47353 0.378338 -0.356559 0.24869 -0.24869
-1.46956 0.377319 -0.463951 0.24869 -0.309017
-1.46086 0.375084 -0.562617 0.24869 -0.368124
-1.44732 0.371608 -0.651032 0.24869 -0.425779
-1.42887 0.366872 -0.727839 0.24869 -0.481753
-1.40549 0.360868 -0.791869 0.24869 -0.535826
-1.37717 0.353596 -0.84216 0.24869 -0.587785
-1.34396 0.34507 -0.877971 0.24869 -0.637424
-1.30595 0.33531 -0.898793 0.24869 -0.684547
-1.26326 0.32435 -0.904361 0.24869 -0.728968
-1.21607 0.312233 -0.894651 0.24869 -0.770513
-1.16458 0.299012 -0.869888 0.24869 -0.809017
-1.10903 0.284752 -0.830536 0.24869 -0.844328
-1.04973 0.269525 -0.777291 0.24869 -0.876306
-0.98698 0.253413 -0.711074 0.24869 -0.904827
-0.921141 0.236509 -0.633012 0.24869 -0.929776
-0.852595 0.218909 -0.544421 0.24869 -0.951056
-0.781753 0.20072 -0.446787 0.24869 -0.968583
-0.709044 0.182052 -0.341738 0.24869 -0.982287
-0.634921 0.16302 -0.231022 0.24869 -0.992115
-0.559846 0.143744 -0.116476 0.24869 -0.998027
-0.484292 0.124345 -1.21496e-06 0.24869 -1
-0.408739 0.104946 0.116474 0.24869 -0.998027
-0.333664 0.0856704 0.231019 0.24869 -0.992115
-0.25954 0.0666386 0.341735 0.24869 -0.982287
-0.186832 0.0479703 0.446785 0.24869 -0.968583
-0.115989 0.029781 0.544419 0.24869 -0.951057
-0.0474437 0.0121815 0.63301 0.24869 -0.929777
--0.0183953 -0.00472312 0.711072 0.24869 -0.904827
--0.0811445 -0.0208344 0.77729 0.24869 -0.876307
--0.14045 -0.0360615 0.830535 0.24869 -0.844328
--0.195992 -0.0503221 0.869888 0.24869 -0.809017
--0.247483 -0.0635428 0.894651 0.24869 -0.770514
--0.294676 -0.07566 0.90436 0.24869 -0.728969
--0.337363 -0.0866201 0.898793 0.24869 -0.684548
--0.375375 -0.0963798 0.877971 0.24869 -0.637425
--0.408583 -0.104906 0.842161 0.24869 -0.587786
--0.436903 -0.112178 0.791871 0.24869 -0.535828
--0.460289 -0.118182 0.727841 0.24869 -0.481754
--0.478735 -0.122918 0.651034 0.24869 -0.42578
--0.492274 -0.126394 0.562619 0.24869 -0.368125
--0.500976 -0.128629 0.463953 0.24869 -0.309018
--0.504947 -0.129648 0.356561 0.24869 -0.248691
--0.504322 -0.129488 0.24211 0.24869 -0.187382
--0.499267 -0.12819 0.122386 0.24869 -0.125334
--0.489973 -0.125804 -0.000739035 0.24869 -0.0627915
--0.476654 -0.122384 -0.125331 0.24869 -9.80385e-07
--0.459543 -0.117991 -0.249429 0.24869 0.0627895
--0.438887 -0.112687 -0.371072 0.24869 0.125332
--0.414945 -0.10654 -0.488333 0.24869 0.18738
--0.387982 -0.0996168 -0.599349 0.24869 0.248689
--0.358268 -0.0919876 -0.702348 0.24869 0.309016
--0.326073 -0.0837212 -0.79568 0.24869 0.368124
--0.291662 -0.074886 -0.877841 0.24869 0.425778
--0.255294 -0.0655484 -0.947499 0.24869 0.481753
--0.21722 -0.0557727 -1.00351 0.24869 0.535826
--0.177676 -0.0456195 -1.04495 0.24869 0.587784
--0.136885 -0.0351461 -1.07111 0.24869 0.637423
--0.0950523 -0.0244053 -1.08152 0.24869 0.684546
--0.0523656 -0.0134452 -1.07595 0.24869 0.728968
--0.00899362 -0.00230917 -1.05443 0.24869 0.770513
-0.0349152 0.0089647 -1.01723 0.24869 0.809016
-0.0792324 0.0203434 -0.96485 0.24869 0.844327
-0.123849 0.0317991 -0.898051 0.24869 0.876306
-0.168677 0.0433089 -0.817803 0.24869 0.904827
-0.213644 0.0548545 -0.725289 0.24869 0.929776
-0.258697 0.066422 -0.621883 0.24869 0.951056
-0.303796 0.0780015 -0.509126 0.24869 0.968583
-0.348916 0.0895864 -0.388709 0.24869 0.982287
-0.394042 0.101173 -0.26244 0.24869 0.992115
-0.439167 0.112759 -0.132217 0.24869 0.998027
-0.475528 0.154508 0 0.309017 1
-0.515864 0.167614 0.133613 0.309017 0.998027
-0.55626 0.18074 0.265234 0.309017 0.992115
-0.596776 0.193904 0.392905 0.309017 0.982287
-0.63746 0.207123 0.514726 0.309017 0.968583
-0.678353 0.22041 0.628889 0.309017 0.951057
-0.71948 0.233773 0.733706 0.309017 0.929777
-0.760847 0.247214 0.827633 0.309017 0.904827
-0.802445 0.26073 0.909296 0.309017 0.876307
-0.844237 0.274309 0.977509 0.309017 0.844328
-0.886166 0.287933 1.0313 0.309017 0.809017
-0.928148 0.301574 1.06991 0.309017 0.770513
-0.970071 0.315195 1.09283 0.309017 0.728969
-1.0118 0.328753 1.09978 0.309017 0.684547
-1.05317 0.342194 1.09073 0.309017 0.637424
-1.09398 0.355456 1.06591 0.309017 0.587785
-1.13403 0.368468 1.02577 0.309017 0.535827
-1.17307 0.381153 0.971018 0.309017 0.481754
-1.21084 0.393426 0.902573 0.309017 0.42578
-1.24707 0.405196 0.821569 0.309017 0.368125
-1.28145 0.416369 0.729327 0.309017 0.309017
-1.31369 0.426844 0.627343 0.309017 0.24869
-1.34347 0.436519 0.517256 0.309017 0.187382
-1.37047 0.445292 0.40083 0.309017 0.125334
-1.39438 0.45306 0.279917 0.309017 0.0627908
-1.41488 0.459721 0.156435 0.309017 3.26795e-07
-1.43167 0.465177 0.0323362 0.309017 -0.0627902
-1.44447 0.469336 -0.0904265 0.309017 -0.125333
-1.45301 0.47211 -0.209928 0.309017 -0.187381
-1.45704 0.47342 -0.324302 0.309017 -0.24869
-1.45635 0.473197 -0.43177 0.309017 -0.309017
-1.45076 0.471379 -0.53067 0.309017 -0.368124
-1.44011 0.46792 -0.61948 0.309017 -0.425779
-1.4243 0.462784 -0.696848 0.309017 -0.481753
-1.40326 0.455948 -0.761605 0.309017 -0.535826
-1.37697 0.447405 -0.812789 0.309017 -0.587785
-1.34545 0.437163 -0.849659 0.309017 -0.637424
-1.30877 0.425244 -0.871703 0.309017 -0.684547
-1.26704 0.411686 -0.878653 0.309017 -0.728968
-1.22043 0.396543 -0.870479 0.309017 -0.770513
-1.16916 0.379883 -0.847398 0.309017 -0.809017
-1.11347 0.36179 -0.809866 0.309017 -0.844328
-1.05368 0.342361 -0.75857 0.309017 -0.876306
-0.990119 0.321709 -0.694421 0.309017 -0.904827
-0.923171 0.299956 -0.618533 0.309017 -0.929776
-0.853253 0.277239 -0.532209 0.309017 -0.951056
-0.78081 0.2537 -0.43692 0.309017 -0.968583
-0.706314 0.229495 -0.33428 0.309017 -0.982287
-0.63026 0.204784 -0.226023 0.309017 -0.992115
-0.553158 0.179732 -0.113969 0.309017 -0.998027
-0.475529 0.154509 -1.18884e-06 0.309017 -1
-0.3979 0.129286 0.113966 0.309017 -0.998027
-0.320798 0.104234 0.22602 0.309017 -0.992115
-0.244744 0.0795222 0.334278 0.309017 -0.982287
-0.170249 0.0553171 0.436918 0.309017 -0.968583
-0.0978052 0.0317788 0.532207 0.309017 -0.951057
-0.0278867 0.00906092 0.618531 0.309017 -0.929777
--0.0390611 -0.0126917 0.69442 0.309017 -0.904827
--0.102622 -0.0333441 0.758569 0.309017 -0.876307
--0.162417 -0.0527724 0.809865 0.309017 -0.844328
--0.218102 -0.0708656 0.847397 0.309017 -0.809017
--0.269376 -0.0875257 0.870478 0.309017 -0.770514
--0.315983 -0.102669 0.878653 0.309017 -0.728969
--0.35771 -0.116227 0.871704 0.309017 -0.684548
--0.394394 -0.128146 0.849659 0.309017 -0.637425
--0.425916 -0.138388 0.81279 0.309017 -0.587786
--0.452207 -0.146931 0.761606 0.309017 -0.535828
--0.473245 -0.153767 0.696849 0.309017 -0.481754
--0.489054 -0.158903 0.619482 0.309017 -0.42578
--0.4997 -0.162362 0.530671 0.309017 -0.368125
--0.505294 -0.16418 0.431772 0.309017 -0.309018
--0.505982 -0.164404 0.324304 0.309017 -0.248691
--0.50195 -0.163093 0.209931 0.309017 -0.187382
--0.493412 -0.160319 0.090429 0.309017 -0.125334
--0.480613 -0.15616 -0.0323337 0.309017 -0.0627915
--0.463819 -0.150704 -0.156432 0.309017 -9.80385e-07
--0.443319 -0.144043 -0.279914 0.309017 0.0627895
--0.419413 -0.136276 -0.400827 0.309017 0.125332
--0.392412 -0.127502 -0.517254 0.309017 0.18738
--0.362634 -0.117827 -0.62734 0.309017 0.248689
--0.330395 -0.107352 -0.729325 0.309017 0.309016
--0.29601 -0.0961794 -0.821567 0.309017 0.368124
--0.259784 -0.0844089 -0.902572 0.309017 0.425778
--0.222011 -0.0721359 -0.971016 0.309017 0.481753
--0.182971 -0.059451 -1.02577 0.309017 0.535826
--0.142924 -0.0464389 -1.0659 0.309017 0.587784
--0.102109 -0.0331773 -1.09073 0.309017 0.637423
--0.0607429 -0.0197366 -1.09978 0.309017 0.684546
--0.0190157 -0.00617856 -1.09283 0.309017 0.728968
-0.0229076 0.00744313 -1.06991 0.309017 0.770513
-0.0648892 0.0210838 -1.0313 0.309017 0.809016
-0.106818 0.0347074 -0.97751 0.309017 0.844327
-0.148611 0.0482866 -0.909297 0.309017 0.876306
-0.190208 0.0618024 -0.827635 0.309017 0.904827
-0.231576 0.0752436 -0.733709 0.309017 0.929776
-0.272703 0.0886064 -0.628892 0.309017 0.951056
-0.313596 0.101893 -0.514729 0.309017 0.968583
-0.35428 0.115113 -0.392908 0.309017 0.982287
-0.394796 0.128277 -0.265237 0.309017 0.992115
-0.435192 0.141402 -0.133616 0.309017 0.998027
-0.464888 0.184062 0 0.368124 1
-0.500399 0.198122 0.134879 0.368124 0.998027
-0.536029 0.212229 0.26777 0.368124 0.992115
-0.571889 0.226427 0.396716 0.368124 0.982287
-0.608086 0.240758 0.51982 0.368124 0.968583
-0.64471 0.255259 0.635278 0.368124 0.951057
-0.681836 0.269958 0.741401 0.368124 0.929777
-0.719515 0.284876 0.836648 0.368124 0.904827
-0.757776 0.300025 0.919644 0.368124 0.876307
-0.796621 0.315405 0.989204 0.368124 0.844328
-0.836021 0.331004 1.04435 0.368124 0.809017
-0.875916 0.346799 1.08433 0.368124 0.770513
-0.916211 0.362754 1.10862 0.368124 0.728969
-0.956782 0.378817 1.11694 0.368124 0.684547
-0.997467 0.394925 1.10927 0.368124 0.637424
-1.03807 0.411002 1.08581 0.368124 0.587785
-1.07838 0.42696 1.04701 0.368124 0.535827
-1.11812 0.442697 0.993576 0.368124 0.481754
-1.15703 0.458102 0.926413 0.368124 0.42578
-1.1948 0.473053 0.846645 0.368124 0.368125
-1.23109 0.487423 0.755585 0.368124 0.309017
-1.26557 0.501075 0.654715 0.368124 0.24869
-1.29788 0.513868 0.545667 0.368124 0.187382
-1.32767 0.52566 0.430189 0.368124 0.125334
-1.35456 0.536307 0.310125 0.368124 0.0627908
-1.3782 0.545666 0.187382 0.368124 3.26795e-07
-1.39823 0.553598 0.063899 0.368124 -0.0627902
-1.41432 0.559969 -0.0583805 0.368124 -0.125333
-1.42615 0.564654 -0.177541 0.368124 -0.187381
-1.43344 0.567537 -0.291725 0.368124 -0.24869
-1.4359 0.568513 -0.399163 0.368124 -0.309017
-1.43332 0.567493 -0.498199 0.368124 -0.368124
-1.42551 0.564401 -0.587317 0.368124 -0.425779
-1.41233 0.55918 -0.665169 0.368124 -0.481753
-1.39366 0.551789 -0.730588 0.368124 -0.535826
-1.36947 0.54221 -0.782616 0.368124 -0.587785
-1.33974 0.530441 -0.820508 0.368124 -0.637424
-1.30454 0.516504 -0.843754 0.368124 -0.684547
-1.26397 0.500441 -0.852078 0.368124 -0.728968
-1.21819 0.482315 -0.845447 0.368124 -0.770513
-1.16741 0.462211 -0.824071 0.368124 -0.809017
-1.1119 0.440234 -0.788397 0.368124 -0.844328
-1.05198 0.416508 -0.739101 0.368124 -0.876306
-0.987997 0.391176 -0.677083 0.368124 -0.904827
-0.920364 0.364398 -0.603443 0.368124 -0.929776
-0.849522 0.336349 -0.519471 0.368124 -0.951056
-0.775952 0.307221 -0.426622 0.368124 -0.968583
-0.700161 0.277213 -0.326493 0.368124 -0.982287
-0.622684 0.246538 -0.220801 0.368124 -0.992115
-0.544072 0.215413 -0.111349 0.368124 -0.998027
-0.464889 0.184063 -1.16156e-06 0.368124 -1
-0.385706 0.152712 0.111346 0.368124 -0.998027
-0.307094 0.121587 0.220799 0.368124 -0.992115
-0.229617 0.0909116 0.326491 0.368124 -0.982287
-0.153826 0.0609041 0.42662 0.368124 -0.968583
-0.080256 0.0317756 0.519469 0.368124 -0.951057
-0.00941445 0.00372744 0.603441 0.368124 -0.929777
--0.0582193 -0.0230507 0.677081 0.368124 -0.904827
--0.122201 -0.0483829 0.7391 0.368124 -0.876307
--0.182127 -0.0721092 0.788396 0.368124 -0.844328
--0.237635 -0.0940865 0.82407 0.368124 -0.809017
--0.288412 -0.11419 0.845447 0.368124 -0.770514
--0.334192 -0.132316 0.852078 0.368124 -0.728969
--0.374763 -0.148379 0.843754 0.368124 -0.684548
--0.409964 -0.162316 0.820509 0.368124 -0.637425
--0.439688 -0.174085 0.782617 0.368124 -0.587786
--0.463884 -0.183665 0.73059 0.368124 -0.535828
--0.48255 -0.191055 0.66517 0.368124 -0.481754
--0.495738 -0.196276 0.587319 0.368124 -0.42578
--0.503547 -0.199368 0.498201 0.368124 -0.368125
--0.506124 -0.200389 0.399165 0.368124 -0.309018
--0.503659 -0.199413 0.291728 0.368124 -0.248691
--0.496378 -0.19653 0.177544 0.368124 -0.187382
--0.484545 -0.191845 0.058383 0.368124 -0.125334
--0.468453 -0.185474 -0.0638964 0.368124 -0.0627915
--0.44842 -0.177542 -0.187379 0.368124 -9.80385e-07
--0.424782 -0.168183 -0.310123 0.368124 0.0627895
--0.397891 -0.157536 -0.430187 0.368124 0.125332
--0.368107 -0.145744 -0.545664 0.368124 0.18738
--0.335794 -0.13295 -0.654713 0.368124 0.248689
--0.301314 -0.119299 -0.755583 0.368124 0.309016
--0.265021 -0.104929 -0.846643 0.368124 0.368124
--0.227257 -0.0899774 -0.926412 0.368124 0.425778
--0.188349 -0.0745726 -0.993575 0.368124 0.481753
--0.148602 -0.0588357 -1.04701 0.368124 0.535826
--0.108298 -0.0428783 -1.0858 0.368124 0.587784
--0.0676913 -0.0268009 -1.10927 0.368124 0.637423
--0.0270062 -0.0106925 -1.11694 0.368124 0.684546
-0.0135643 0.0053705 -1.10862 0.368124 0.728968
-0.0538601 0.0213247 -1.08433 0.368124 0.770513
-0.0937544 0.03712 -1.04435 0.368124 0.809016
-0.133154 0.0527195 -0.989205 0.368124 0.844327
-0.171999 0.0680993 -0.919646 0.368124 0.876306
-0.210261 0.0832482 -0.83665 0.368124 0.904827
-0.24794 0.0981665 -0.741404 0.368124 0.929776
-0.285065 0.112865 -0.63528 0.368124 0.951056
-0.32169 0.127366 -0.519823 0.368124 0.968583
-0.357886 0.141697 -0.396718 0.368124 0.982287
-0.393747 0.155895 -0.267773 0.368124 0.992115
-0.429376 0.170002 -0.134882 0.368124 0.998027
-0.452414 0.21289 0 0.425779 1
-0.483121 0.22734 0.136012 0.425779 0.998027
-0.514 0.24187 0.270041 0.425779 0.992115
-0.545217 0.25656 0.400135 0.425779 0.982287
-0.576926 0.271481 0.524401 0.425779 0.968583
-0.609268 0.2867 0.641039 0.425779 0.951057
-0.642364 0.302273 0.748365 0.425779 0.929777
-0.676307 0.318246 0.844838 0.425779 0.904827
-0.711164 0.334648 0.929085 0.425779 0.876307
-0.746971 0.351498 0.999923 0.425779 0.844328
-0.783728 0.368794 1.05637 0.425779 0.809017
-0.821396 0.38652 1.09768 0.425779 0.770513
-0.859901 0.404638 1.12332 0.425779 0.728969
-0.899127 0.423097 1.13301 0.425779 0.684547
-0.938919 0.441821 1.12671 0.425779 0.637424
-0.979083 0.460721 1.10463 0.425779 0.587785
-1.01939 0.479688 1.06722 0.425779 0.535827
-1.05957 0.498595 1.01515 0.425779 0.481754
-1.09932 0.517302 0.949339 0.425779 0.42578
-1.13832 0.535654 0.870886 0.425779 0.368125
-1.17621 0.553483 0.781096 0.425779 0.309017
-1.21262 0.570614 0.681442 0.425779 0.24869
-1.24715 0.586863 0.573539 0.425779 0.187382
-1.2794 0.60204 0.459124 0.425779 0.125334
-1.30897 0.615954 0.340028 0.425779 0.0627908
-1.33545 0.628415 0.218144 0.425779 3.26795e-07
-1.35845 0.639236 0.0953986 0.425779 -0.0627902
-1.37757 0.648237 -0.0262769 0.425779 -0.125333
-1.39247 0.655246 -0.144979 0.425779 -0.187381
-1.4028 0.660106 -0.258861 0.425779 -0.24869
-1.40825 0.662671 -0.366162 0.425779 -0.309017
-1.40856 0.662816 -0.465236 0.425779 -0.368124
-1.40349 0.660434 -0.554574 0.425779 -0.425779
-1.39288 0.655439 -0.632833 0.425779 -0.481753
-1.37658 0.64777 -0.698851 0.425779 -0.535826
-1.35453 0.637391 -0.75167 0.425779 -0.587785
-1.32669 0.624293 -0.790548 0.425779 -0.637424
-1.29311 0.608492 -0.814971 0.425779 -0.684547
-1.25389 0.590034 -0.824662 0.425779 -0.728968
-1.20917 0.568991 -0.819581 0.425779 -0.770513
-1.15917 0.545464 -0.799931 0.425779 -0.809017
-1.10416 0.51958 -0.766149 0.425779 -0.844328
-1.04447 0.491492 -0.718903 0.425779 -0.876306
-0.980478 0.461378 -0.659077 0.425779 -0.904827
-0.912599 0.429436 -0.587758 0.425779 -0.929776
-0.841305 0.395888 -0.50622 0.425779 -0.951056
-0.767106 0.360973 -0.415902 0.425779 -0.968583
-0.69054 0.324943 -0.318384 0.425779 -0.982287
-0.612175 0.288068 -0.215361 0.425779 -0.992115
-0.532599 0.250622 -0.108619 0.425779 -0.998027
-0.452414 0.21289 -1.13312e-06 0.425779 -1
-0.37223 0.175158 0.108616 0.425779 -0.998027
-0.292654 0.137712 0.215359 0.425779 -0.992115
-0.214289 0.100837 0.318382 0.425779 -0.982287
-0.137723 0.0648074 0.4159 0.425779 -0.968583
-0.0635231 0.0298917 0.506219 0.425779 -0.951057
--0.00777004 -0.0036563 0.587756 0.425779 -0.929777
--0.0756494 -0.0355979 0.659075 0.425779 -0.904827
--0.139647 -0.0657127 0.718902 0.425779 -0.876307
--0.199337 -0.0938006 0.766148 0.425779 -0.844328
--0.254343 -0.119685 0.79993 0.425779 -0.809017
--0.30434 -0.143211 0.819581 0.425779 -0.770514
--0.349058 -0.164254 0.824662 0.425779 -0.728969
--0.388284 -0.182712 0.814972 0.425779 -0.684548
--0.421863 -0.198513 0.790549 0.425779 -0.637425
--0.449699 -0.211612 0.751671 0.425779 -0.587786
--0.471755 -0.221991 0.698852 0.425779 -0.535828
--0.488052 -0.22966 0.632834 0.425779 -0.481754
--0.498666 -0.234655 0.554576 0.425779 -0.42578
--0.50373 -0.237037 0.465238 0.425779 -0.368125
--0.503422 -0.236892 0.366164 0.425779 -0.309018
--0.49797 -0.234327 0.258863 0.425779 -0.248691
--0.487643 -0.229467 0.144981 0.425779 -0.187382
--0.472747 -0.222458 0.0262794 0.425779 -0.125334
--0.453619 -0.213457 -0.095396 0.425779 -0.0627915
--0.430623 -0.202636 -0.218141 0.425779 -9.80385e-07
--0.404142 -0.190175 -0.340026 0.425779 0.0627895
--0.374573 -0.176261 -0.459122 0.425779 0.125332
--0.342321 -0.161084 -0.573536 0.425779 0.18738
--0.307791 -0.144836 -0.68144 0.425779 0.248689
--0.271386 -0.127705 -0.781094 0.425779 0.309016
--0.233496 -0.109875 -0.870884 0.425779 0.368124
--0.194497 -0.0915231 -0.949337 0.425779 0.425778
--0.154742 -0.0728162 -1.01515 0.425779 0.481753
--0.114563 -0.0539091 -1.06722 0.425779 0.535826
--0.0742569 -0.0349426 -1.10463 0.425779 0.587784
--0.0340924 -0.0160426 -1.12671 0.425779 0.637423
-0.00569972 0.00268209 -1.13301 0.425779 0.684546
-0.0449255 0.0211403 -1.12332 0.425779 0.728968
-0.0834303 0.0392593 -1.09768 0.425779 0.770513
-0.121099 0.0569847 -1.05637 0.425779 0.809016
-0.157855 0.0742809 -0.999924 0.425779 0.844327
-0.193662 0.0911304 -0.929087 0.425779 0.876306
-0.22852 0.107533 -0.844839 0.425779 0.904827
-0.262463 0.123506 -0.748367 0.425779 0.929776
-0.295558 0.139079 -0.641042 0.425779 0.951056
-0.3279 0.154298 -0.524404 0.425779 0.968583
-0.35961 0.169219 -0.400137 0.425779 0.982287
-0.390826 0.183909 -0.270044 0.425779 0.992115
-0.421705 0.198439 -0.136015 0.425779 0.998027
-0.438153 0.240877 0 0.481754 1
-0.464135 0.25516 0.137011 0.481754 0.998027
-0.490337 0.269565 0.272046 0.481754 0.992115
-0.516973 0.284208 0.403159 0.481754 0.982287
-0.544247 0.299202 0.528465 0.481754 0.968583
-0.572344 0.314649 0.646168 0.481754 0.951057
-0.601426 0.330637 0.75459 0.481754 0.929777
-0.631628 0.34724 0.852193 0.481754 0.904827
-0.663051 0.364515 0.937609 0.481754 0.876307
-0.695763 0.382499 1.00965 0.481754 0.844328
-0.729789 0.401205 1.06735 0.481754 0.809017
-0.765115 0.420625 1.10995 0.481754 0.770513
-0.801682 0.440728 1.13691 0.481754 0.728969
-0.839386 0.461456 1.14796 0.481754 0.684547
-0.878078 0.482727 1.14305 0.481754 0.637424
-0.917565 0.504436 1.12237 0.481754 0.587785
-0.957611 0.526451 1.08638 0.481754 0.535827
-0.997938 0.548621 1.03573 0.481754 0.481754
-1.03823 0.570773 0.971328 0.481754 0.42578
-1.07814 0.592714 0.894267 0.481754 0.368125
-1.11729 0.614236 0.805837 0.481754 0.309017
-1.15528 0.635118 0.707496 0.481754 0.24869
-1.19167 0.655126 0.600845 0.481754 0.187382
-1.22604 0.674021 0.487606 0.481754 0.125334
-1.25794 0.691559 0.369595 0.481754 0.0627908
-1.28693 0.707495 0.24869 0.481754 3.26795e-07
-1.31257 0.72159 0.126804 0.481754 -0.0627902
-1.33443 0.733611 0.00585268 0.481754 -0.125333
-1.35212 0.743334 -0.112274 0.481754 -0.187381
-1.36525 0.750553 -0.225741 0.481754 -0.24869
-1.37348 0.755078 -0.3328 0.481754 -0.309017
-1.37651 0.756741 -0.431814 0.481754 -0.368124
-1.37407 0.755399 -0.521284 0.481754 -0.425779
-1.36594 0.750934 -0.599873 0.481754 -0.481753
-1.35199 0.743261 -0.666424 0.481754 -0.535826
-1.33209 0.732323 -0.719983 0.481754 -0.587785
-1.30622 0.718098 -0.759808 0.481754 -0.637424
-1.27438 0.700598 -0.785385 0.481754 -0.684547
-1.23668 0.67987 -0.796432 0.481754 -0.728968
-1.19325 0.655996 -0.792906 0.481754 -0.770513
-1.14431 0.629092 -0.775001 0.481754 -0.809017
-1.09014 0.599309 -0.743146 0.481754 -0.844328
-1.03106 0.566829 -0.697995 0.481754 -0.876306
-0.967462 0.531867 -0.64042 0.481754 -0.904827
-0.899792 0.494665 -0.571493 0.481754 -0.929776
-0.828535 0.455491 -0.49247 0.481754 -0.951056
-0.754224 0.414638 -0.404773 0.481754 -0.968583
-0.677424 0.372417 -0.30996 0.481754 -0.982287
-0.598731 0.329155 -0.209709 0.481754 -0.992115
-0.518763 0.285192 -0.105781 0.481754 -0.998027
-0.438154 0.240877 -1.10357e-06 0.481754 -1
-0.357545 0.196562 0.105779 0.481754 -0.998027
-0.277578 0.1526 0.209707 0.481754 -0.992115
-0.198885 0.109338 0.309958 0.481754 -0.982287
-0.122084 0.0671164 0.404771 0.481754 -0.968583
-0.0477728 0.0262633 0.492469 0.481754 -0.951057
--0.0234835 -0.0129101 0.571491 0.481754 -0.929777
--0.0911539 -0.0501123 0.640418 0.481754 -0.904827
--0.15475 -0.0850745 0.697994 0.481754 -0.876307
--0.213831 -0.117554 0.743145 0.481754 -0.844328
--0.268006 -0.147338 0.775001 0.481754 -0.809017
--0.316945 -0.174242 0.792906 0.481754 -0.770514
--0.360372 -0.198116 0.796432 0.481754 -0.728969
--0.398076 -0.218844 0.785385 0.481754 -0.684548
--0.429908 -0.236344 0.759809 0.481754 -0.637425
--0.455783 -0.250569 0.719984 0.481754 -0.587786
--0.475679 -0.261507 0.666425 0.481754 -0.535828
--0.489638 -0.269181 0.599874 0.481754 -0.481754
--0.497759 -0.273645 0.521286 0.481754 -0.42578
--0.500201 -0.274988 0.431816 0.481754 -0.368125
--0.497176 -0.273325 0.332802 0.481754 -0.309018
--0.488945 -0.2688 0.225743 0.481754 -0.248691
--0.475814 -0.261581 0.112276 0.481754 -0.187382
--0.458127 -0.251857 -0.00585018 0.481754 -0.125334
--0.436262 -0.239837 -0.126802 0.481754 -0.0627915
--0.410623 -0.225742 -0.248688 0.481754 -9.80385e-07
--0.381635 -0.209805 -0.369593 0.481754 0.0627895
--0.349734 -0.192268 -0.487604 0.481754 0.125332
--0.315364 -0.173373 -0.600842 0.481754 0.18738
--0.278969 -0.153365 -0.707494 0.481754 0.248689
--0.240986 -0.132483 -0.805835 0.481754 0.309016
--0.201837 -0.110961 -0.894265 0.481754 0.368124
--0.161926 -0.0890195 -0.971326 0.481754 0.425778
--0.121632 -0.0668678 -1.03573 0.481754 0.481753
--0.0813049 -0.0446977 -1.08638 0.481754 0.535826
--0.0412591 -0.0226824 -1.12237 0.481754 0.587784
--0.00177198 -0.000974157 -1.14305 0.481754 0.637423
-0.0369202 0.020297 -1.14796 0.481754 0.684546
-0.0746241 0.0410249 -1.13691 0.481754 0.728968
-0.111191 0.0611278 -1.10995 0.481754 0.770513
-0.146517 0.0805484 -1.06735 0.481754 0.809016
-0.180544 0.0992546 -1.00966 0.481754 0.844327
-0.213255 0.117238 -0.937611 0.481754 0.876306
-0.244678 0.134513 -0.852195 0.481754 0.904827
-0.27488 0.151116 -0.754592 0.481754 0.929776
-0.303962 0.167104 -0.646171 0.481754 0.951056
-0.332059 0.182551 -0.528468 0.481754 0.968583
-0.359333 0.197545 -0.403162 0.481754 0.982287
-0.38597 0.212189 -0.272049 0.481754 0.992115
-0.412171 0.226593 -0.137014 0.481754 0.998027
-0.422164 0.267913 0 0.535827 1
-0.443551 0.281486 0.137875 0.535827 0.998027
-0.465203 0.295227 0.273782 0.535827 0.992115
-0.487378 0.309299 0.405785 0.535827 0.982287
-0.510321 0.323859 0.532007 0.535827 0.968583
-0.534257 0.33905 0.650659 0.535827 0.951057
-0.559389 0.354999 0.76007 0.535827 0.929777
-0.585885 0.371814 0.858707 0.535827 0.904827
-0.613881 0.389581 0.945208 0.535827 0.876307
-0.643473 0.40836 1.01839 0.535827 0.844328
-0.674711 0.428185 1.07728 0.535827 0.809017
-0.707602 0.449057 1.12112 0.535827 0.770513
-0.742102 0.470952 1.14938 0.535827 0.728969
-0.778119 0.493809 1.16177 0.535827 0.684547
-0.815511 0.517539 1.15825 0.535827 0.637424
-0.854086 0.54202 1.139 0.535827 0.587785
-0.893606 0.5671 1.10446 0.535827 0.535827
-0.933786 0.592598 1.05528 0.535827 0.481754
-0.974298 0.618308 0.992358 0.535827 0.42578
-1.01478 0.643997 0.916766 0.535827 0.368125
-1.05482 0.669412 0.829783 0.535827 0.309017
-1.09401 0.694281 0.732851 0.535827 0.24869
-1.13189 0.718319 0.627558 0.535827 0.187382
-1.16799 0.74123 0.515607 0.535827 0.125334
-1.20184 0.762713 0.398798 0.535827 0.0627908
-1.23297 0.782464 0.278992 0.535827 3.26795e-07
-1.26089 0.800185 0.158084 0.535827 -0.0627902
-1.28515 0.815584 0.0379765 0.535827 -0.125333
-1.30532 0.828381 -0.0794577 0.535827 -0.187381
-1.32098 0.838316 -0.192398 0.535827 -0.24869
-1.33174 0.845149 -0.29911 0.535827 -0.309017
-1.33728 0.848664 -0.397966 0.535827 -0.368124
-1.3373 0.848678 -0.48748 0.535827 -0.425779
-1.33157 0.845037 -0.566321 0.535827 -0.481753
-1.31989 0.837627 -0.633339 0.535827 -0.535826
-1.30215 0.826368 -0.687585 0.535827 -0.587785
-1.27829 0.811225 -0.728318 0.535827 -0.637424
-1.24831 0.792201 -0.755023 0.535827 -0.684547
-1.21229 0.769344 -0.767416 0.535827 -0.728968
-1.17038 0.742744 -0.765449 0.535827 -0.770513
-1.12277 0.712533 -0.749307 0.535827 -0.809017
-1.06976 0.678887 -0.719409 0.535827 -0.844328
-1.01166 0.64202 -0.676398 0.535827 -0.876306
-0.94889 0.602184 -0.621131 0.535827 -0.904827
-0.881893 0.559666 -0.554663 0.535827 -0.929776
-0.811175 0.514787 -0.478234 0.535827 -0.951056
-0.737285 0.467895 -0.393244 0.535827 -0.968583
-0.660809 0.419362 -0.301231 0.535827 -0.982287
-0.582367 0.369581 -0.203849 0.535827 -0.992115
-0.502599 0.318959 -0.10284 0.535827 -0.998027
-0.422165 0.267914 -1.07293e-06 0.535827 -1
-0.341731 0.216869 0.102838 0.535827 -0.998027
-0.261963 0.166247 0.203847 0.535827 -0.992115
-0.18352 0.116465 0.301229 0.535827 -0.982287
-0.107044 0.0679325 0.393242 0.535827 -0.968583
-0.0331543 0.0210404 0.478233 0.535827 -0.951057
--0.0375635 -0.0238385 0.554662 0.535827 -0.929777
--0.10456 -0.066356 0.62113 0.535827 -0.904827
--0.167332 -0.106192 0.676397 0.535827 -0.876307
--0.225426 -0.14306 0.719408 0.535827 -0.844328
--0.278444 -0.176706 0.749306 0.535827 -0.809017
--0.326048 -0.206916 0.765449 0.535827 -0.770514
--0.367963 -0.233517 0.767416 0.535827 -0.728969
--0.403981 -0.256374 0.755023 0.535827 -0.684548
--0.433958 -0.275398 0.728318 0.535827 -0.637425
--0.45782 -0.290541 0.687586 0.535827 -0.587786
--0.47556 -0.3018 0.633341 0.535827 -0.535828
--0.487238 -0.30921 0.566322 0.535827 -0.481754
--0.492974 -0.312851 0.487482 0.535827 -0.42578
--0.492953 -0.312838 0.397968 0.535827 -0.368125
--0.487414 -0.309322 0.299112 0.535827 -0.309018
--0.476648 -0.30249 0.192401 0.535827 -0.248691
--0.460993 -0.292555 0.0794601 0.535827 -0.187382
--0.440827 -0.279757 -0.037974 0.535827 -0.125334
--0.416563 -0.264359 -0.158082 0.535827 -0.0627915
--0.388639 -0.246638 -0.278989 0.535827 -9.80385e-07
--0.357516 -0.226886 -0.398795 0.535827 0.0627895
--0.323665 -0.205404 -0.515605 0.535827 0.125332
--0.287563 -0.182493 -0.627555 0.535827 0.18738
--0.249685 -0.158455 -0.732849 0.535827 0.248689
--0.210497 -0.133586 -0.829781 0.535827 0.309016
--0.17045 -0.108171 -0.916764 0.535827 0.368124
--0.129971 -0.0824821 -0.992356 0.535827 0.425778
--0.0894588 -0.0567723 -1.05528 0.535827 0.481753
--0.0492792 -0.0312735 -1.10446 0.535827 0.535826
--0.00975915 -0.00619335 -1.139 0.535827 0.587784
-0.0288165 0.0182875 -1.15825 0.535827 0.637423
-0.0662086 0.0420173 -1.16177 0.535827 0.684546
-0.102226 0.0648744 -1.14938 0.535827 0.728968
-0.136726 0.0867688 -1.12112 0.535827 0.770513
-0.169616 0.107642 -1.07728 0.535827 0.809016
-0.200855 0.127466 -1.01839 0.535827 0.844327
-0.230446 0.146245 -0.945209 0.535827 0.876306
-0.258442 0.164013 -0.858709 0.535827 0.904827
-0.284939 0.180828 -0.760072 0.535827 0.929776
-0.31007 0.196777 -0.650662 0.535827 0.951056
-0.334007 0.211967 -0.53201 0.535827 0.968583
-0.35695 0.226527 -0.405788 0.535827 0.982287
-0.379124 0.2406 -0.273785 0.535827 0.992115
-0.400776 0.25434 -0.137878 0.535827 0.998027
-0.404509 0.293893 0 0.587785 1
-0.421488 0.306229 0.138602 0.587785 0.998027
-0.43877 0.318785 0.275248 0.587785 0.992115
-0.456653 0.331777 0.408011 0.587785 0.982287
-0.475417 0.345411 0.535024 0.587785 0.968583
-0.495326 0.359876 0.654508 0.587785 0.951057
-0.516615 0.375342 0.7648 0.587785 0.929777
-0.539484 0.391958 0.864375 0.587785 0.904827
-0.564098 0.409841 0.951874 0.587785 0.876307
-0.590578 0.42908 1.02612 0.587785 0.844328
-0.618999 0.449729 1.08614 0.587785 0.809017
-0.649384 0.471805 1.13119 0.587785 0.770513
-0.681707 0.495289 1.16072 0.587785 0.728969
-0.715886 0.520121 1.17444 0.587785 0.684547
-0.751786 0.546204 1.17231 0.587785 0.637424
-0.789219 0.573401 1.15451 0.587785 0.587785
-0.827945 0.601537 1.12145 0.587785 0.535827
-0.867675 0.630403 1.0738 0.587785 0.481754
-0.908073 0.659753 1.01241 0.587785 0.42578
-0.948761 0.689315 0.93836 0.587785 0.368125
-0.989325 0.718786 0.85291 0.587785 0.309017
-1.02932 0.747843 0.757484 0.587785 0.24869
-1.06827 0.776143 0.653651 0.587785 0.187382
-1.10569 0.80333 0.543099 0.587785 0.125334
-1.14108 0.829041 0.427607 0.587785 0.0627908
-1.17393 0.852909 0.309018 0.587785 3.26795e-07
-1.20374 0.874571 0.189209 0.587785 -0.0627902
-1.23003 0.893672 0.0700628 0.587785 -0.125333
-1.25233 0.909872 -0.0465632 0.587785 -0.187381
-1.2702 0.92285 -0.158866 0.587785 -0.24869
-1.28322 0.932312 -0.265124 0.587785 -0.309017
-1.29103 0.937991 -0.363726 0.587785 -0.368124
-1.29333 0.939659 -0.453194 0.587785 -0.425779
-1.28984 0.937123 -0.532209 0.587785 -0.481753
-1.28036 0.930235 -0.59963 0.587785 -0.535826
-1.26475 0.918893 -0.654508 0.587785 -0.587785
-1.24293 0.903041 -0.696109 0.587785 -0.637424
-1.2149 0.882676 -0.723916 0.587785 -0.684547
-1.18072 0.857843 -0.737643 0.587785 -0.728968
-1.14053 0.828642 -0.737236 0.587785 -0.770513
-1.09453 0.79522 -0.722873 0.587785 -0.809017
-1.04299 0.757778 -0.694962 0.587785 -0.844328
-0.986262 0.716561 -0.654134 0.587785 -0.876306
-0.924741 0.671863 -0.601229 0.587785 -0.904827
-0.858889 0.624019 -0.537287 0.587785 -0.929776
-0.78922 0.573401 -0.463526 0.587785 -0.951056
-0.716295 0.520419 -0.381326 0.587785 -0.968583
-0.640716 0.465507 -0.292204 0.587785 -0.982287
-0.563116 0.409127 -0.197789 0.587785 -0.992115
-0.484155 0.351759 -0.0997967 0.587785 -0.998027
-0.404509 0.293893 -1.04123e-06 0.587785 -1
-0.324864 0.236027 0.0997946 0.587785 -0.998027
-0.245903 0.178659 0.197787 0.587785 -0.992115
-0.168303 0.122279 0.292202 0.587785 -0.982287
-0.0927238 0.0673677 0.381325 0.587785 -0.968583
-0.0197989 0.0143847 0.463525 0.587785 -0.951057
--0.0498702 -0.0362328 0.537285 0.587785 -0.929777
--0.115723 -0.0840773 0.601228 0.587785 -0.904827
--0.177244 -0.128775 0.654133 0.587785 -0.876307
--0.233974 -0.169992 0.694962 0.587785 -0.844328
--0.285509 -0.207435 0.722873 0.587785 -0.809017
--0.33151 -0.240856 0.737236 0.587785 -0.770514
--0.371703 -0.270058 0.737643 0.587785 -0.728969
--0.405881 -0.29489 0.723916 0.587785 -0.684548
--0.433912 -0.315255 0.69611 0.587785 -0.637425
--0.45573 -0.331107 0.654509 0.587785 -0.587786
--0.471342 -0.34245 0.599631 0.587785 -0.535828
--0.480822 -0.349338 0.532211 0.587785 -0.481754
--0.484313 -0.351874 0.453196 0.587785 -0.42578
--0.482018 -0.350206 0.363728 0.587785 -0.368125
--0.474201 -0.344527 0.265126 0.587785 -0.309018
--0.461178 -0.335066 0.158868 0.587785 -0.248691
--0.443315 -0.322087 0.0465656 0.587785 -0.187382
--0.421018 -0.305888 -0.0700603 0.587785 -0.125334
--0.394728 -0.286787 -0.189206 0.587785 -0.0627915
--0.364913 -0.265125 -0.309015 0.587785 -9.80385e-07
--0.332061 -0.241257 -0.427604 0.587785 0.0627895
--0.296673 -0.215546 -0.543097 0.587785 0.125332
--0.259253 -0.188359 -0.653649 0.587785 0.18738
--0.220302 -0.160059 -0.757482 0.587785 0.248689
--0.180309 -0.131002 -0.852908 0.587785 0.309016
--0.139745 -0.101531 -0.938358 0.587785 0.368124
--0.0990568 -0.0719689 -1.01241 0.587785 0.425778
--0.0586589 -0.0426182 -1.0738 0.587785 0.481753
--0.018929 -0.0137527 -1.12145 0.587785 0.535826
-0.0197973 0.0143836 -1.15451 0.587785 0.587784
-0.0572306 0.0415805 -1.17231 0.587785 0.637423
-0.0931308 0.0676635 -1.17444 0.587785 0.684546
-0.12731 0.0924959 -1.16072 0.587785 0.728968
-0.159632 0.11598 -1.13119 0.587785 0.770513
-0.190018 0.138056 -1.08615 0.587785 0.809016
-0.218438 0.158705 -1.02612 0.587785 0.844327
-0.244919 0.177944 -0.951875 0.587785 0.876306
-0.269533 0.195827 -0.864376 0.587785 0.904827
-0.292402 0.212443 -0.764802 0.587785 0.929776
-0.31369 0.227909 -0.654511 0.587785 0.951056
-0.333599 0.242374 -0.535027 0.587785 0.968583
-0.352364 0.256007 -0.408014 0.587785 0.982287
-0.370247 0.269 -0.275251 0.587785 0.992115
-0.387529 0.281556 -0.138605 0.587785 0.998027
-0.385257 0.318712 0 0.637424 1
-0.398065 0.329308 0.139193 0.637424 0.998027
-0.41121 0.340182 0.276443 0.637424 0.992115
-0.42502 0.351607 0.409834 0.637424 0.982287
-0.439808 0.363841 0.537513 0.637424 0.968583
-0.455869 0.377127 0.657711 0.637424 0.951057
-0.473464 0.391684 0.768775 0.637424 0.929777
-0.492825 0.4077 0.869189 0.637424 0.904827
-0.514138 0.425332 0.9576 0.637424 0.876307
-0.537549 0.444699 1.03284 0.637424 0.844328
-0.56315 0.465878 1.09394 0.637424 0.809017
-0.590985 0.488905 1.14013 0.637424 0.770513
-0.62104 0.513769 1.17091 0.637424 0.728969
-0.653244 0.54041 1.18595 0.637424 0.684547
-0.68747 0.568724 1.18522 0.637424 0.637424
-0.723535 0.59856 1.16888 0.637424 0.587785
-0.7612 0.629719 1.13734 0.637424 0.535827
-0.800174 0.661961 1.09125 0.637424 0.481754
-0.840115 0.695004 1.03146 0.637424 0.42578
-0.88064 0.728529 0.959028 0.637424 0.368125
-0.921322 0.762184 0.875195 0.637424 0.309017
-0.961703 0.79559 0.781369 0.637424 0.24869
-1.0013 0.828343 0.6791 0.637424 0.187382
-1.03959 0.860026 0.570055 0.637424 0.125334
-1.07607 0.890206 0.455994 0.637424 0.0627908
-1.11022 0.918452 0.338738 0.637424 3.26795e-07
-1.1415 0.94433 0.220146 0.637424 -0.0627902
-1.16941 0.96742 0.10208 0.637424 -0.125333
-1.19346 0.987314 -0.0136228 0.637424 -0.187381
-1.21318 1.00363 -0.125176 0.637424 -0.24869
-1.22815 1.01601 -0.230876 0.637424 -0.309017
-1.23798 1.02414 -0.329126 0.637424 -0.368124
-1.24233 1.02774 -0.418461 0.637424 -0.425779
-1.24092 1.02657 -0.497573 0.637424 -0.481753
-1.23352 1.02046 -0.565328 0.637424 -0.535826
-1.21999 1.00926 -0.620786 0.637424 -0.587785
-1.20023 0.992915 -0.663213 0.637424 -0.637424
-1.17422 0.971397 -0.692095 0.637424 -0.684547
-1.14201 0.944756 -0.707142 0.637424 -0.728968
-1.10374 0.913096 -0.708296 0.637424 -0.770513
-1.05961 0.876582 -0.695726 0.637424 -0.809017
-1.00987 0.835439 -0.66983 0.637424 -0.844328
-0.954881 0.789946 -0.631224 0.637424 -0.876306
-0.895036 0.740438 -0.580734 0.637424 -0.904827
-0.830801 0.687299 -0.51938 0.637424 -0.929776
-0.762696 0.630957 -0.448361 0.637424 -0.951056
-0.691287 0.571882 -0.369033 0.637424 -0.968583
-0.617183 0.510578 -0.282889 0.637424 -0.982287
-0.541028 0.447577 -0.191533 0.637424 -0.992115
-0.46349 0.383432 -0.0966551 0.637424 -0.998027
-0.385257 0.318713 -1.0085e-06 0.637424 -1
-0.307025 0.253993 0.0966531 0.637424 -0.998027
-0.229487 0.189848 0.191531 0.637424 -0.992115
-0.153332 0.126847 0.282887 0.637424 -0.982287
-0.0792283 0.0655433 0.369031 0.637424 -0.968583
-0.00781899 0.00646843 0.448359 0.637424 -0.951057
--0.0602868 -0.0498735 0.519379 0.637424 -0.929777
--0.124522 -0.103013 0.580733 0.637424 -0.904827
--0.184367 -0.152521 0.631223 0.637424 -0.876307
--0.239358 -0.198014 0.669829 0.637424 -0.844328
--0.289092 -0.239158 0.695725 0.637424 -0.809017
--0.333229 -0.275671 0.708296 0.637424 -0.770514
--0.3715 -0.307331 0.707142 0.637424 -0.728969
--0.403704 -0.333973 0.692095 0.637424 -0.684548
--0.429714 -0.35549 0.663214 0.637424 -0.637425
--0.449477 -0.371839 0.620787 0.637424 -0.587786
--0.46301 -0.383035 0.565329 0.637424 -0.535828
--0.470403 -0.389151 0.497575 0.637424 -0.481754
--0.471813 -0.390318 0.418463 0.637424 -0.42578
--0.467463 -0.386719 0.329128 0.637424 -0.368125
--0.457636 -0.378589 0.230879 0.637424 -0.309018
--0.442667 -0.366206 0.125179 0.637424 -0.248691
--0.422945 -0.34989 0.0136252 0.637424 -0.187382
--0.398897 -0.329996 -0.102077 0.637424 -0.125334
--0.370987 -0.306907 -0.220144 0.637424 -0.0627915
--0.339705 -0.281028 -0.338736 0.637424 -9.80385e-07
--0.305562 -0.252783 -0.455991 0.637424 0.0627895
--0.26908 -0.222602 -0.570053 0.637424 0.125332
--0.230783 -0.19092 -0.679097 0.637424 0.18738
--0.191191 -0.158167 -0.781367 0.637424 0.248689
--0.15081 -0.124761 -0.875193 0.637424 0.309016
--0.110128 -0.0911055 -0.959026 0.637424 0.368124
--0.069603 -0.0575806 -1.03146 0.637424 0.425778
--0.0296611 -0.0245377 -1.09125 0.637424 0.481753
-0.00931271 0.00770414 -1.13734 0.637424 0.535826
-0.0469778 0.0388634 -1.16888 0.637424 0.587784
-0.0830428 0.068699 -1.18522 0.637424 0.637423
-0.117269 0.0970134 -1.18595 0.637424 0.684546
-0.149473 0.123655 -1.17091 0.637424 0.728968
-0.179527 0.148518 -1.14014 0.637424 0.770513
-0.207362 0.171545 -1.09394 0.637424 0.809016
-0.232964 0.192725 -1.03284 0.637424 0.844327
-0.256375 0.212092 -0.957602 0.637424 0.876306
-0.277688 0.229724 -0.869191 0.637424 0.904827
-0.297048 0.24574 -0.768777 0.637424 0.929776
-0.314644 0.260296 -0.657714 0.637424 0.951056
-0.330705 0.273582 -0.537516 0.637424 0.968583
-0.345493 0.285817 -0.409837 0.637424 0.982287
-0.359303 0.297241 -0.276445 0.637424 0.992115
-0.372448 0.308116 -0.139196 0.637424 0.998027
-0.364484 0.342273 0 0.684547 1
-0.373409 0.350654 0.139647 0.684547 0.998027
-0.382696 0.359376 0.277364 0.684547 0.992115
-0.392701 0.36877 0.411253 0.684547 0.982287
-0.403762 0.379157 0.539472 0.684547 0.968583
-0.416196 0.390834 0.660266 0.684547 0.951057
-0.430292 0.404071 0.771991 0.684547 0.929777
-0.4463 0.419103 0.873145 0.684547 0.904827
-0.46443 0.436129 0.962381 0.684547 0.876307
-0.484844 0.455299 1.03854 0.684547 0.844328
-0.507655 0.47672 1.10065 0.684547 0.809017
-0.532918 0.500443 1.14796 0.684547 0.770513
-0.560634 0.52647 1.17994 0.684547 0.728969
-0.590741 0.554743 1.19629 0.684547 0.684547
-0.623123 0.585151 1.19695 0.684547 0.637424
-0.657601 0.617528 1.18209 0.684547 0.587785
-0.69394 0.651653 1.1521 0.684547 0.535827
-0.731849 0.687252 1.10763 0.684547 0.481754
-0.770988 0.724006 1.04949 0.684547 0.42578
-0.810967 0.761549 0.97875 0.684547 0.368125
-0.851356 0.799477 0.896616 0.684547 0.309017
-0.891689 0.837352 0.804483 0.684547 0.24869
-0.93147 0.874708 0.703878 0.684547 0.187382
-0.970181 0.911061 0.596448 0.684547 0.125334
-1.00729 0.945909 0.483931 0.684547 0.0627908
-1.04226 0.978749 0.368125 0.684547 3.26795e-07
-1.07456 1.00908 0.250867 0.684547 -0.0627902
-1.10365 1.0364 0.133996 0.684547 -0.125333
-1.12904 1.06024 0.0193311 0.684547 -0.187381
-1.15025 1.08015 -0.0913634 0.684547 -0.24869
-1.16682 1.09572 -0.196401 0.684547 -0.309017
-1.17837 1.10656 -0.294202 0.684547 -0.368124
-1.18452 1.11234 -0.383316 0.684547 -0.425779
-1.185 1.11279 -0.462446 0.684547 -0.481753
-1.17956 1.10768 -0.530469 0.684547 -0.535826
-1.16804 1.09686 -0.586451 0.684547 -0.587785
-1.15032 1.08022 -0.629663 0.684547 -0.637424
-1.12639 1.05775 -0.65959 0.684547 -0.684547
-1.09628 1.02947 -0.675943 0.684547 -0.728968
-1.06011 0.995514 -0.678656 0.684547 -0.770513
-1.01809 0.95605 -0.667892 0.684547 -0.809017
-0.970468 0.91133 -0.644036 0.684547 -0.844328
-0.917583 0.861668 -0.607691 0.684547 -0.876306
-0.859837 0.80744 -0.559666 0.684547 -0.904827
-0.797691 0.749081 -0.500961 0.684547 -0.929776
-0.731663 0.687077 -0.432753 0.684547 -0.951056
-0.662321 0.62196 -0.356375 0.684547 -0.968583
-0.590275 0.554305 -0.273295 0.684547 -0.982287
-0.516169 0.484715 -0.185089 0.684547 -0.992115
-0.440677 0.413823 -0.0934181 0.684547 -0.998027
-0.364485 0.342274 -9.74782e-07 0.684547 -1
-0.288294 0.270726 0.0934162 0.684547 -0.998027
-0.212801 0.199833 0.185087 0.684547 -0.992115
-0.138696 0.130244 0.273293 0.684547 -0.982287
-0.0666494 0.062588 0.356374 0.684547 -0.968583
--0.00269268 -0.00252859 0.432751 0.684547 -0.951057
--0.0687207 -0.064533 0.500959 0.684547 -0.929777
--0.130867 -0.122892 0.559665 0.684547 -0.904827
--0.188613 -0.17712 0.60769 0.684547 -0.876307
--0.241498 -0.226782 0.644036 0.684547 -0.844328
--0.28912 -0.271502 0.667892 0.684547 -0.809017
--0.331145 -0.310966 0.678656 0.684547 -0.770514
--0.367308 -0.344925 0.675943 0.684547 -0.728969
--0.397416 -0.373198 0.659591 0.684547 -0.684548
--0.42135 -0.395674 0.629663 0.684547 -0.637425
--0.439067 -0.412311 0.586452 0.684547 -0.587786
--0.450594 -0.423136 0.53047 0.684547 -0.535828
--0.456033 -0.428244 0.462447 0.684547 -0.481754
--0.455556 -0.427795 0.383317 0.684547 -0.42578
--0.449397 -0.422012 0.294204 0.684547 -0.368125
--0.437854 -0.411172 0.196403 0.684547 -0.309018
--0.421279 -0.395608 0.0913657 0.684547 -0.248691
--0.400075 -0.375696 -0.0193287 0.684547 -0.187382
--0.374686 -0.351853 -0.133994 0.684547 -0.125334
--0.34559 -0.324531 -0.250864 0.684547 -0.0627915
--0.313294 -0.294203 -0.368123 0.684547 -9.80385e-07
--0.278323 -0.261363 -0.483928 0.684547 0.0627895
--0.241214 -0.226515 -0.596446 0.684547 0.125332
--0.202502 -0.190162 -0.703876 0.684547 0.18738
--0.162721 -0.152806 -0.804481 0.684547 0.248689
--0.122389 -0.114931 -0.896615 0.684547 0.309016
--0.0819993 -0.0770024 -0.978748 0.684547 0.368124
--0.04202 -0.0394594 -1.04949 0.684547 0.425778
--0.00288125 -0.00270568 -1.10763 0.684547 0.481753
-0.0350283 0.0328937 -1.1521 0.684547 0.535826
-0.071367 0.0670181 -1.18209 0.684547 0.587784
-0.105845 0.0993949 -1.19695 0.684547 0.637423
-0.138227 0.129803 -1.19629 0.684547 0.684546
-0.168335 0.158077 -1.17994 0.684547 0.728968
-0.19605 0.184103 -1.14796 0.684547 0.770513
-0.221313 0.207827 -1.10065 0.684547 0.809016
-0.244124 0.229247 -1.03854 0.684547 0.844327
-0.264538 0.248418 -0.962383 0.684547 0.876306
-0.282668 0.265443 -0.873147 0.684547 0.904827
-0.298676 0.280476 -0.771994 0.684547 0.929776
-0.312772 0.293712 -0.660268 0.684547 0.951056
-0.325207 0.305389 -0.539475 0.684547 0.968583
-0.336268 0.315776 -0.411256 0.684547 0.982287
-0.346272 0.325171 -0.277367 0.684547 0.992115
-0.355559 0.333892 -0.139649 0.684547 0.998027
-0.342274 0.364484 0 0.728969 1
-0.347648 0.370207 0.139962 0.728969 0.998027
-0.353403 0.376336 0.278012 0.728969 0.992115
-0.359915 0.38327 0.412266 0.728969 0.982287
-0.367539 0.39139 0.540898 0.728969 0.968583
-0.376613 0.401052 0.662168 0.728969 0.951057
-0.387441 0.412583 0.774446 0.728969 0.929777
-0.400291 0.426267 0.876239 0.728969 0.904827
-0.415389 0.442344 0.966213 0.728969 0.876307
-0.432913 0.461005 1.04321 0.728969 0.844328
-0.452987 0.482382 1.10627 0.728969 0.809017
-0.475682 0.50655 1.15465 0.728969 0.770513
-0.501008 0.533519 1.18781 0.728969 0.728969
-0.528915 0.563238 1.20545 0.728969 0.684547
-0.559295 0.595588 1.20751 0.728969 0.637424
-0.591975 0.630389 1.19414 0.728969 0.587785
-0.626727 0.667397 1.16573 0.728969 0.535827
-0.663266 0.706306 1.12291 0.728969 0.481754
-0.701251 0.746756 1.06649 0.728969 0.42578
-0.740297 0.788336 0.997505 0.728969 0.368125
-0.779972 0.830586 0.917153 0.728969 0.309017
-0.81981 0.873008 0.826803 0.728969 0.24869
-0.859311 0.915073 0.727962 0.728969 0.187382
-0.897955 0.956225 0.622253 0.728969 0.125334
-0.935206 0.995893 0.51139 0.728969 0.0627908
-0.97052 1.0335 0.397148 0.728969 3.26795e-07
-1.00335 1.06846 0.28134 0.728969 -0.0627902
-1.03318 1.10022 0.165781 0.728969 -0.125333
-1.05947 1.12822 0.0522659 0.728969 -0.187381
-1.08176 1.15195 -0.0574603 0.728969 -0.24869
-1.09957 1.17092 -0.161732 0.728969 -0.309017
-1.11251 1.1847 -0.258987 0.728969 -0.368124
-1.1202 1.1929 -0.347791 0.728969 -0.425779
-1.12235 1.19519 -0.426862 0.728969 -0.481753
-1.11871 1.19131 -0.495086 0.728969 -0.535826
-1.1091 1.18107 -0.551537 0.728969 -0.587785
-1.0934 1.16435 -0.595491 0.728969 -0.637424
-1.07158 1.14111 -0.626435 0.728969 -0.684547
-1.04367 1.11139 -0.644077 0.728969 -0.728968
-1.00978 1.07531 -0.648347 0.728969 -0.770513
-0.970108 1.03306 -0.639399 0.728969 -0.809017
-0.924897 0.984915 -0.617607 0.728969 -0.844328
-0.874479 0.931225 -0.583559 0.728969 -0.876306
-0.819245 0.872407 -0.538045 0.728969 -0.904827
-0.759652 0.808947 -0.482047 0.728969 -0.929776
-0.696212 0.74139 -0.416718 0.728969 -0.951056
-0.629485 0.670334 -0.343366 0.728969 -0.968583
-0.560077 0.596421 -0.263431 0.728969 -0.982287
-0.488625 0.520333 -0.178461 0.728969 -0.992115
-0.415796 0.442778 -0.090089 0.728969 -0.998027
-0.342274 0.364485 -9.40098e-07 0.728969 -1
-0.268753 0.286192 0.0900871 0.728969 -0.998027
-0.195924 0.208638 0.17846 0.728969 -0.992115
-0.124472 0.132549 0.263429 0.728969 -0.982287
-0.0550632 0.0586363 0.343364 0.728969 -0.968583
--0.0116635 -0.0124204 0.416716 0.728969 -0.951057
--0.075104 -0.0799776 0.482046 0.728969 -0.929777
--0.134697 -0.143437 0.538044 0.728969 -0.904827
--0.18993 -0.202255 0.583558 0.728969 -0.876307
--0.240349 -0.255946 0.617606 0.728969 -0.844328
--0.28556 -0.304091 0.639399 0.728969 -0.809017
--0.325236 -0.346341 0.648347 0.728969 -0.770514
--0.35912 -0.382424 0.644077 0.728969 -0.728969
--0.387028 -0.412143 0.626436 0.728969 -0.684548
--0.408849 -0.43538 0.595492 0.728969 -0.637425
--0.424549 -0.452098 0.551538 0.728969 -0.587786
--0.434164 -0.462338 0.495087 0.728969 -0.535828
--0.437807 -0.466217 0.426864 0.728969 -0.481754
--0.435657 -0.463928 0.347793 0.728969 -0.42578
--0.427961 -0.455732 0.258989 0.728969 -0.368125
--0.415024 -0.441955 0.161734 0.728969 -0.309018
--0.397208 -0.422984 0.0574626 0.728969 -0.248691
--0.374926 -0.399255 -0.0522635 0.728969 -0.187382
--0.34863 -0.371253 -0.165778 0.728969 -0.125334
--0.318807 -0.339495 -0.281337 0.728969 -0.0627915
--0.285973 -0.304531 -0.397146 0.728969 -9.80385e-07
--0.25066 -0.266925 -0.511388 0.728969 0.0627895
--0.213409 -0.227257 -0.622251 0.728969 0.125332
--0.174765 -0.186105 -0.72796 0.728969 0.18738
--0.135263 -0.144041 -0.826801 0.728969 0.248689
--0.0954258 -0.101618 -0.917151 0.728969 0.309016
--0.0557504 -0.0593681 -0.997504 0.728969 0.368124
--0.0167047 -0.0177887 -1.06649 0.728969 0.425778
-0.0212809 0.0226618 -1.12291 0.728969 0.481753
-0.0578191 0.0615711 -1.16573 0.728969 0.535826
-0.0925713 0.0985784 -1.19414 0.728969 0.587784
-0.125252 0.13338 -1.20751 0.728969 0.637423
-0.155631 0.16573 -1.20545 0.728969 0.684546
-0.183539 0.195449 -1.18781 0.728969 0.728968
-0.208865 0.222418 -1.15465 0.728969 0.770513
-0.23156 0.246586 -1.10628 0.728969 0.809016
-0.251634 0.267963 -1.04321 0.728969 0.844327
-0.269158 0.286624 -0.966215 0.728969 0.876306
-0.284256 0.302701 -0.876241 0.728969 0.904827
-0.297106 0.316385 -0.774448 0.728969 0.929776
-0.307934 0.327916 -0.66217 0.728969 0.951056
-0.317008 0.337579 -0.540901 0.728969 0.968583
-0.324633 0.345698 -0.412269 0.728969 0.982287
-0.331144 0.352632 -0.278015 0.728969 0.992115
-0.336899 0.358761 -0.139965 0.728969 0.998027
-0.318712 0.385257 0 0.770513 1
-0.320911 0.387915 0.14014 0.770513 0.998027
-0.323504 0.391049 0.278386 0.770513 0.992115
-0.326876 0.395125 0.412872 0.770513 0.982287
-0.331397 0.40059 0.541791 0.770513 0.968583
-0.337414 0.407864 0.663417 0.770513 0.951057
-0.345244 0.417328 0.776136 0.770513 0.929777
-0.355165 0.429321 0.878469 0.770513 0.904827
-0.367415 0.444129 0.969091 0.770513 0.876307
-0.382183 0.46198 1.04686 0.770513 0.844328
-0.399604 0.483038 1.11081 0.770513 0.809017
-0.419757 0.507399 1.1602 0.770513 0.770513
-0.442664 0.535089 1.19451 0.770513 0.728969
-0.468285 0.566059 1.21342 0.770513 0.684547
-0.496517 0.600186 1.21687 0.770513 0.637424
-0.527201 0.637276 1.205 0.770513 0.587785
-0.560114 0.677061 1.17821 0.770513 0.535827
-0.594977 0.719204 1.13708 0.770513 0.481754
-0.63146 0.763304 1.08244 0.770513 0.42578
-0.669181 0.808901 1.01528 0.770513 0.368125
-0.707716 0.855481 0.936784 0.770513 0.309017
-0.746602 0.902486 0.848307 0.770513 0.24869
-0.785345 0.949318 0.751327 0.770513 0.187382
-0.823428 0.995353 0.647444 0.770513 0.125334
-0.860317 1.03994 0.538344 0.770513 0.0627908
-0.895471 1.08244 0.42578 0.770513 3.26795e-07
-0.928348 1.12218 0.311535 0.770513 -0.0627902
-0.958418 1.15853 0.197401 0.770513 -0.125333
-0.985164 1.19086 0.0851491 0.770513 -0.187381
-1.0081 1.21858 -0.0235006 0.770513 -0.24869
-1.02677 1.24115 -0.126903 0.770513 -0.309017
-1.04076 1.25806 -0.223517 0.770513 -0.368124
-1.0497 1.26887 -0.311924 0.770513 -0.425779
-1.05328 1.2732 -0.390857 0.770513 -0.481753
-1.05126 1.27075 -0.459214 0.770513 -0.535826
-1.04344 1.2613 -0.516079 0.770513 -0.587785
-1.02971 1.2447 -0.560731 0.770513 -0.637424
-1.01002 1.2209 -0.592662 0.770513 -0.684547
-0.984397 1.18993 -0.611576 0.770513 -0.728968
-0.952947 1.15191 -0.617398 0.770513 -0.770513
-0.915841 1.10706 -0.610275 0.770513 -0.809017
-0.873327 1.05567 -0.590568 0.770513 -0.844328
-0.82572 0.998124 -0.55885 0.770513 -0.876306
-0.773403 0.934884 -0.515894 0.770513 -0.904827
-0.716819 0.866485 -0.462658 0.770513 -0.929776
-0.656467 0.793532 -0.400272 0.770513 -0.951056
-0.592896 0.716687 -0.330017 0.770513 -0.968583
-0.526696 0.636666 -0.253307 0.770513 -0.982287
-0.458495 0.554225 -0.171658 0.770513 -0.992115
-0.388943 0.470152 -0.0866709 0.770513 -0.998027
-0.318713 0.385257 -9.04487e-07 0.770513 -1
-0.248482 0.300363 0.0866691 0.770513 -0.998027
-0.178931 0.21629 0.171656 0.770513 -0.992115
-0.110729 0.133849 0.253305 0.770513 -0.982287
-0.0445299 0.0538274 0.330016 0.770513 -0.968583
--0.0190415 -0.0230172 0.40027 0.770513 -0.951057
--0.0793937 -0.0959704 0.462656 0.770513 -0.929777
--0.135978 -0.164369 0.515893 0.770513 -0.904827
--0.188295 -0.22761 0.55885 0.770513 -0.876307
--0.235902 -0.285156 0.590568 0.770513 -0.844328
--0.278416 -0.336547 0.610275 0.770513 -0.809017
--0.315522 -0.3814 0.617398 0.770513 -0.770514
--0.346972 -0.419417 0.611576 0.770513 -0.728969
--0.372593 -0.450387 0.592662 0.770513 -0.684548
--0.392283 -0.474188 0.560732 0.770513 -0.637425
--0.406014 -0.490786 0.51608 0.770513 -0.587786
--0.413833 -0.500238 0.459216 0.770513 -0.535828
--0.415858 -0.502685 0.390859 0.770513 -0.481754
--0.412274 -0.498353 0.311926 0.770513 -0.42578
--0.403332 -0.487545 0.223519 0.770513 -0.368125
--0.389344 -0.470636 0.126905 0.770513 -0.309018
--0.370676 -0.44807 0.0235028 0.770513 -0.248691
--0.347741 -0.420346 -0.0851468 0.770513 -0.187382
--0.320994 -0.388015 -0.197399 0.770513 -0.125334
--0.290925 -0.351667 -0.311532 0.770513 -0.0627915
--0.258047 -0.311925 -0.425777 0.770513 -9.80385e-07
--0.222893 -0.269432 -0.538342 0.770513 0.0627895
--0.186004 -0.224841 -0.647441 0.770513 0.125332
--0.147921 -0.178806 -0.751325 0.770513 0.18738
--0.109178 -0.131974 -0.848305 0.770513 0.248689
--0.0702926 -0.0849691 -0.936783 0.770513 0.309016
--0.0317578 -0.0383885 -1.01528 0.770513 0.368124
-0.00596342 0.00720853 -1.08244 0.770513 0.425778
-0.0424463 0.0513087 -1.13708 0.770513 0.481753
-0.0773099 0.0934516 -1.17821 0.770513 0.535826
-0.110223 0.133236 -1.205 0.770513 0.587784
-0.140906 0.170326 -1.21687 0.770513 0.637423
-0.169139 0.204454 -1.21342 0.770513 0.684546
-0.19476 0.235424 -1.19451 0.770513 0.728968
-0.217667 0.263114 -1.1602 0.770513 0.770513
-0.23782 0.287475 -1.11081 0.770513 0.809016
-0.255241 0.308533 -1.04686 0.770513 0.844327
-0.270008 0.326384 -0.969093 0.770513 0.876306
-0.282259 0.341192 -0.878471 0.770513 0.904827
-0.29218 0.353185 -0.776139 0.770513 0.929776
-0.30001 0.362649 -0.663419 0.770513 0.951056
-0.306027 0.369923 -0.541793 0.770513 0.968583
-0.310548 0.375388 -0.412875 0.770513 0.982287
-0.31392 0.379464 -0.278388 0.770513 0.992115
-0.316513 0.382598 -0.140143 0.770513 0.998027
-0.293893 0.404508 0 0.809017 1
-0.293332 0.403737 0.140179 0.809017 0.998027
-0.29317 0.403513 0.278484 0.809017 0.992115
-0.293795 0.404373 0.413071 0.809017 0.982287
-0.295581 0.406833 0.542148 0.809017 0.968583
-0.298881 0.411375 0.664011 0.809017 0.951057
-0.304016 0.418443 0.777061 0.809017 0.929777
-0.311271 0.428428 0.879832 0.809017 0.904827
-0.320889 0.441666 0.971013 0.809017 0.876307
-0.333064 0.458423 1.04947 0.809017 0.844328
-0.34794 0.478897 1.11425 0.809017 0.809017
-0.365602 0.503208 1.16461 0.809017 0.770513
-0.386082 0.531396 1.20003 0.809017 0.728969
-0.409346 0.563416 1.22019 0.809017 0.684547
-0.435304 0.599144 1.22503 0.809017 0.637424
-0.463803 0.63837 1.21468 0.809017 0.587785
-0.494632 0.680803 1.18952 0.809017 0.535827
-0.527524 0.726075 1.15014 0.809017 0.481754
-0.562159 0.773745 1.09732 0.809017 0.42578
-0.598165 0.823303 1.03205 0.809017 0.368125
-0.635131 0.874182 0.955491 0.809017 0.309017
-0.672604 0.92576 0.868974 0.809017 0.24869
-0.710103 0.977373 0.773951 0.809017 0.187382
-0.747121 1.02832 0.671995 0.809017 0.125334
-0.783135 1.07789 0.564768 0.809017 0.0627908
-0.817613 1.12535 0.453991 0.809017 3.26795e-07
-0.850025 1.16996 0.341422 0.809017 -0.0627902
-0.879846 1.211 0.228827 0.809017 -0.125333
-0.90657 1.24779 0.117948 0.809017 -0.187381
-0.929715 1.27964 0.0104824 0.809017 -0.24869
-0.94883 1.30595 -0.0919494 0.809017 -0.309017
-0.963506 1.32615 -0.187826 0.809017 -0.368124
-0.97338 1.33974 -0.275749 0.809017 -0.425779
-0.978141 1.34629 -0.354466 0.809017 -0.481753
-0.977537 1.34546 -0.42289 0.809017 -0.535826
-0.97138 1.33699 -0.480111 0.809017 -0.587785
-0.959549 1.32071 -0.525418 0.809017 -0.637424
-0.941991 1.29654 -0.558303 0.809017 -0.684547
-0.918727 1.26452 -0.57847 0.809017 -0.728968
-0.889847 1.22477 -0.58584 0.809017 -0.770513
-0.855517 1.17752 -0.580549 0.809017 -0.809017
-0.815969 1.12308 -0.562947 0.809017 -0.844328
-0.771505 1.06189 -0.53359 0.809017 -0.876306
-0.722493 0.994426 -0.493233 0.809017 -0.904827
-0.669358 0.921292 -0.442811 0.809017 -0.929776
-0.612582 0.843146 -0.38343 0.809017 -0.951056
-0.552693 0.760716 -0.316344 0.809017 -0.968583
-0.490262 0.674788 -0.242933 0.809017 -0.982287
-0.425896 0.586195 -0.164685 0.809017 -0.992115
-0.360223 0.495804 -0.0831673 0.809017 -0.998027
-0.293893 0.404509 -8.67982e-07 0.809017 -1
-0.227564 0.313214 0.0831656 0.809017 -0.998027
-0.161891 0.222824 0.164683 0.809017 -0.992115
-0.0975243 0.134231 0.242931 0.809017 -0.982287
-0.0350939 0.0483026 0.316342 0.809017 -0.968583
--0.0247951 -0.0341275 0.383429 0.809017 -0.951057
--0.0815718 -0.112274 0.44281 0.809017 -0.929777
--0.134707 -0.185408 0.493232 0.809017 -0.904827
--0.183719 -0.252868 0.53359 0.809017 -0.876307
--0.228182 -0.314066 0.562946 0.809017 -0.844328
--0.267731 -0.368499 0.580549 0.809017 -0.809017
--0.302061 -0.415752 0.58584 0.809017 -0.770514
--0.330941 -0.455501 0.578471 0.809017 -0.728969
--0.354205 -0.487522 0.558304 0.809017 -0.684548
--0.371763 -0.511688 0.525419 0.809017 -0.637425
--0.383595 -0.527972 0.480112 0.809017 -0.587786
--0.389751 -0.536447 0.422891 0.809017 -0.535828
--0.390355 -0.537278 0.354468 0.809017 -0.481754
--0.385595 -0.530725 0.275751 0.809017 -0.42578
--0.375721 -0.517136 0.187828 0.809017 -0.368125
--0.361045 -0.496936 0.0919514 0.809017 -0.309018
--0.34193 -0.470626 -0.0104802 0.809017 -0.248691
--0.318785 -0.43877 -0.117946 0.809017 -0.187382
--0.292061 -0.401988 -0.228825 0.809017 -0.125334
--0.26224 -0.360942 -0.34142 0.809017 -0.0627915
--0.229828 -0.316332 -0.453989 0.809017 -9.80385e-07
--0.19535 -0.268876 -0.564766 0.809017 0.0627895
--0.159336 -0.219307 -0.671993 0.809017 0.125332
--0.122318 -0.168357 -0.773949 0.809017 0.18738
--0.0848195 -0.116744 -0.868972 0.809017 0.248689
--0.047346 -0.0651661 -0.95549 0.809017 0.309016
--0.0103804 -0.0142874 -1.03204 0.809017 0.368124
-0.0256261 0.0352713 -1.09731 0.809017 0.425778
-0.0602602 0.082941 -1.15014 0.809017 0.481753
-0.0931523 0.128213 -1.18952 0.809017 0.535826
-0.123982 0.170646 -1.21468 0.809017 0.587784
-0.152481 0.209872 -1.22503 0.809017 0.637423
-0.178439 0.2456 -1.22019 0.809017 0.684546
-0.201703 0.277621 -1.20003 0.809017 0.728968
-0.222183 0.305808 -1.16461 0.809017 0.770513
-0.239846 0.330119 -1.11425 0.809017 0.809016
-0.254721 0.350593 -1.04947 0.809017 0.844327
-0.266896 0.367351 -0.971015 0.809017 0.876306
-0.276514 0.380588 -0.879834 0.809017 0.904827
-0.283769 0.390574 -0.777063 0.809017 0.929776
-0.288904 0.397642 -0.664014 0.809017 0.951056
-0.292204 0.402184 -0.542151 0.809017 0.968583
-0.293991 0.404644 -0.413073 0.809017 0.982287
-0.294616 0.405504 -0.278487 0.809017 0.992115
-0.294453 0.40528 -0.140182 0.809017 0.998027
-0.267913 0.422164 0 0.844328 1
-0.265044 0.417642 0.14008 0.844328 0.998027
-0.262568 0.41374 0.278308 0.844328 0.992115
-0.260872 0.411068 0.412862 0.844328 0.982287
-0.260327 0.41021 0.541971 0.844328 0.968583
-0.261283 0.411716 0.66395 0.844328 0.951057
-0.264059 0.416091 0.777218 0.844328 0.929777
-0.26894 0.423781 0.880326 0.844328 0.904827
-0.276168 0.435172 0.971977 0.844328 0.876307
-0.285941 0.450571 1.05104 0.844328 0.844328
-0.298405 0.470211 1.11658 0.844328 0.809017
-0.313651 0.494234 1.16787 0.844328 0.770513
-0.331715 0.522698 1.20436 0.844328 0.728969
-0.352573 0.555565 1.22576 0.844328 0.684547
-0.376143 0.592706 1.23198 0.844328 0.637424
-0.402284 0.633898 1.22316 0.844328 0.587785
-0.430798 0.678828 1.19966 0.844328 0.535827
-0.46143 0.727097 1.16205 0.844328 0.481754
-0.493876 0.778224 1.11111 0.844328 0.42578
-0.527782 0.831651 1.0478 0.844328 0.368125
-0.562752 0.886755 0.973255 0.844328 0.309017
-0.598352 0.942852 0.888783 0.844328 0.24869
-0.634119 0.999211 0.795811 0.844328 0.187382
-0.669564 1.05506 0.695884 0.844328 0.125334
-0.704182 1.10961 0.590634 0.844328 0.0627908
-0.737462 1.16205 0.481754 0.844328 3.26795e-07
-0.768889 1.21157 0.370973 0.844328 -0.0627902
-0.797956 1.25738 0.260027 0.844328 -0.125333
-0.824172 1.29869 0.150631 0.844328 -0.187381
-0.847069 1.33477 0.044455 0.844328 -0.24869
-0.86621 1.36493 -0.0569047 0.844328 -0.309017
-0.881195 1.38854 -0.151949 0.844328 -0.368124
-0.891672 1.40505 -0.239302 0.844328 -0.425779
-0.897334 1.41397 -0.317726 0.844328 -0.481753
-0.897936 1.41492 -0.386148 0.844328 -0.535826
-0.893289 1.4076 -0.44367 0.844328 -0.587785
-0.883271 1.39181 -0.489587 0.844328 -0.637424
-0.867827 1.36748 -0.523394 0.844328 -0.684547
-0.846969 1.33461 -0.544794 0.844328 -0.728968
-0.82078 1.29334 -0.553704 0.844328 -0.770513
-0.78941 1.24391 -0.55025 0.844328 -0.809017
-0.75308 1.18666 -0.53477 0.844328 -0.844328
-0.712073 1.12205 -0.507804 0.844328 -0.876306
-0.666736 1.05061 -0.470086 0.844328 -0.904827
-0.617473 0.972981 -0.422528 0.844328 -0.929776
-0.564741 0.88989 -0.366211 0.844328 -0.951056
-0.509044 0.802125 -0.302357 0.844328 -0.968583
-0.450925 0.710544 -0.232319 0.844328 -0.982287
-0.39096 0.616054 -0.15755 0.844328 -0.992115
-0.32975 0.519603 -0.0795816 0.844328 -0.998027
-0.267914 0.422165 -8.30621e-07 0.844328 -1
-0.206078 0.324727 0.07958 0.844328 -0.998027
-0.144868 0.228276 0.157548 0.844328 -0.992115
-0.0849031 0.133786 0.232318 0.844328 -0.982287
-0.0267839 0.0422046 0.302356 0.844328 -0.968583
--0.0289133 -0.0455601 0.366209 0.844328 -0.951057
--0.081645 -0.128652 0.422527 0.844328 -0.929777
--0.130908 -0.206277 0.470085 0.844328 -0.904827
--0.176245 -0.277717 0.507803 0.844328 -0.876307
--0.217252 -0.342334 0.534769 0.844328 -0.844328
--0.253582 -0.399582 0.550249 0.844328 -0.809017
--0.284952 -0.449012 0.553704 0.844328 -0.770514
--0.311142 -0.490281 0.544795 0.844328 -0.728969
--0.332 -0.523148 0.523395 0.844328 -0.684548
--0.347444 -0.547484 0.489588 0.844328 -0.637425
--0.357462 -0.563269 0.443671 0.844328 -0.587786
--0.362109 -0.570592 0.386149 0.844328 -0.535828
--0.361507 -0.569644 0.317727 0.844328 -0.481754
--0.355845 -0.560721 0.239303 0.844328 -0.42578
--0.345369 -0.544214 0.151951 0.844328 -0.368125
--0.330383 -0.5206 0.0569067 0.844328 -0.309018
--0.311242 -0.490439 -0.0444529 0.844328 -0.248691
--0.288345 -0.454359 -0.150629 0.844328 -0.187382
--0.262129 -0.413049 -0.260025 0.844328 -0.125334
--0.233062 -0.367247 -0.370971 0.844328 -0.0627915
--0.201636 -0.317727 -0.481752 0.844328 -9.80385e-07
--0.168356 -0.265287 -0.590632 0.844328 0.0627895
--0.133737 -0.210736 -0.695882 0.844328 0.125332
--0.0982925 -0.154884 -0.795809 0.844328 0.18738
--0.0625259 -0.098525 -0.888781 0.844328 0.248689
--0.0269257 -0.042428 -0.973254 0.844328 0.309016
-0.00804413 0.0126755 -1.0478 0.844328 0.368124
-0.0419501 0.0661028 -1.11111 0.844328 0.425778
-0.0743961 0.117229 -1.16205 0.844328 0.481753
-0.105029 0.165499 -1.19966 0.844328 0.535826
-0.133543 0.210429 -1.22316 0.844328 0.587784
-0.159684 0.251621 -1.23198 0.844328 0.637423
-0.183254 0.288762 -1.22576 0.844328 0.684546
-0.204112 0.321629 -1.20436 0.844328 0.728968
-0.222176 0.350093 -1.16787 0.844328 0.770513
-0.237422 0.374117 -1.11659 0.844328 0.809016
-0.249885 0.393756 -1.05104 0.844328 0.844327
-0.259658 0.409156 -0.971978 0.844328 0.876306
-0.266887 0.420546 -0.880329 0.844328 0.904827
-0.271768 0.428237 -0.777221 0.844328 0.929776
-0.274544 0.432612 -0.663953 0.844328 0.951056
-0.2755 0.434118 -0.541974 0.844328 0.968583
-0.274955 0.43326 -0.412864 0.844328 0.982287
-0.273259 0.430588 -0.278311 0.844328 0.992115
-0.270783 0.426686 -0.140083 0.844328 0.998027
-0.240877 0.438153 0 0.876307 1
-0.236178 0.429606 0.139843 0.876307 0.998027
-0.231861 0.421754 0.277858 0.876307 0.992115
-0.228301 0.415279 0.412245 0.876307 0.982287
-0.225858 0.410835 0.541259 0.876307 0.968583
-0.224872 0.40904 0.663234 0.876307 0.951057
-0.225652 0.41046 0.776609 0.876307 0.929777
-0.228478 0.4156 0.879952 0.876307 0.904827
-0.233587 0.424893 0.971981 0.876307 0.876307
-0.241173 0.438692 1.05158 0.876307 0.844328
-0.251381 0.457261 1.11782 0.876307 0.809017
-0.264306 0.480771 1.16997 0.876307 0.770513
-0.279986 0.509293 1.20751 0.876307 0.728969
-0.298407 0.542799 1.23012 0.876307 0.684547
-0.319494 0.581156 1.23772 0.876307 0.637424
-0.343118 0.62413 1.23044 0.876307 0.587785
-0.369098 0.671386 1.20862 0.876307 0.535827
-0.397195 0.722494 1.17283 0.876307 0.481754
-0.427123 0.776933 1.12381 0.876307 0.42578
-0.45855 0.834099 1.06251 0.876307 0.368125
-0.491103 0.893313 0.990059 0.876307 0.309017
-0.524373 0.953831 0.907715 0.876307 0.24869
-0.557922 1.01486 0.816886 0.876307 0.187382
-0.591286 1.07554 0.719086 0.876307 0.125334
-0.623989 1.13503 0.615917 0.876307 0.0627908
-0.655543 1.19243 0.509042 0.876307 3.26795e-07
-0.68546 1.24685 0.400158 0.876307 -0.0627902
-0.71326 1.29741 0.29097 0.876307 -0.125333
-0.738474 1.34328 0.183165 0.876307 -0.187381
-0.760657 1.38363 0.0783838 0.876307 -0.24869
-0.779392 1.41771 -0.0218038 0.876307 -0.309017
-0.794297 1.44482 -0.115923 0.876307 -0.368124
-0.805033 1.46435 -0.202618 0.876307 -0.425779
-0.811308 1.47576 -0.280672 0.876307 -0.481753
-0.812884 1.47863 -0.349024 0.876307 -0.535826
-0.809579 1.47262 -0.406791 0.876307 -0.587785
-0.801271 1.45751 -0.453273 0.876307 -0.637424
-0.787904 1.43319 -0.487968 0.876307 -0.684547
-0.769484 1.39969 -0.510581 0.876307 -0.728968
-0.746084 1.35712 -0.521021 0.876307 -0.770513
-0.717842 1.30575 -0.519407 0.876307 -0.809017
-0.684959 1.24594 -0.506065 0.876307 -0.844328
-0.647701 1.17816 -0.481516 0.876307 -0.876306
-0.606388 1.10302 -0.446474 0.876307 -0.904827
-0.561399 1.02118 -0.401828 0.876307 -0.929776
-0.51316 0.933435 -0.34863 0.876307 -0.951056
-0.462142 0.840633 -0.288073 0.876307 -0.968583
-0.408854 0.743703 -0.221476 0.876307 -0.982287
-0.353836 0.643625 -0.150259 0.876307 -0.992115
-0.29765 0.541424 -0.0759174 0.876307 -0.998027
-0.240878 0.438154 -7.9244e-07 0.876307 -1
-0.184105 0.334885 0.0759158 0.876307 -0.998027
-0.127919 0.232684 0.150257 0.876307 -0.992115
-0.0729008 0.132606 0.221475 0.876307 -0.982287
-0.0196126 0.0356752 0.288072 0.876307 -0.968583
--0.0314054 -0.0571262 0.348628 0.876307 -0.951057
--0.0796445 -0.144873 0.401827 0.876307 -0.929777
--0.124634 -0.226708 0.446473 0.876307 -0.904827
--0.165946 -0.301855 0.481516 0.876307 -0.876307
--0.203205 -0.369628 0.506065 0.876307 -0.844328
--0.236087 -0.429441 0.519407 0.876307 -0.809017
--0.26433 -0.480813 0.521021 0.876307 -0.770514
--0.28773 -0.523378 0.510581 0.876307 -0.728969
--0.30615 -0.556884 0.487969 0.876307 -0.684548
--0.319517 -0.5812 0.453273 0.876307 -0.637425
--0.327825 -0.596311 0.406792 0.876307 -0.587786
--0.33113 -0.602323 0.349026 0.876307 -0.535828
--0.329554 -0.599457 0.280673 0.876307 -0.481754
--0.323279 -0.588042 0.20262 0.876307 -0.42578
--0.312543 -0.568513 0.115925 0.876307 -0.368125
--0.297638 -0.541401 0.0218059 0.876307 -0.309018
--0.278903 -0.507323 -0.0783817 0.876307 -0.248691
--0.256721 -0.466973 -0.183163 0.876307 -0.187382
--0.231506 -0.421108 -0.290968 0.876307 -0.125334
--0.203707 -0.370541 -0.400156 0.876307 -0.0627915
--0.173789 -0.316122 -0.50904 0.876307 -9.80385e-07
--0.142235 -0.258725 -0.615915 0.876307 0.0627895
--0.109533 -0.199239 -0.719084 0.876307 0.125332
--0.0761684 -0.13855 -0.816884 0.876307 0.18738
--0.0426202 -0.0775259 -0.907713 0.876307 0.248689
--0.00935013 -0.0170078 -0.990057 0.876307 0.309016
-0.0232031 0.0422063 -1.06251 0.876307 0.368124
-0.0546305 0.0993725 -1.12381 0.876307 0.425778
-0.0845588 0.153812 -1.17282 0.876307 0.481753
-0.112656 0.20492 -1.20862 0.876307 0.535826
-0.138635 0.252176 -1.23044 0.876307 0.587784
-0.16226 0.29515 -1.23772 0.876307 0.637423
-0.183347 0.333507 -1.23012 0.876307 0.684546
-0.201767 0.367013 -1.20751 0.876307 0.728968
-0.217448 0.395536 -1.16997 0.876307 0.770513
-0.230372 0.419046 -1.11782 0.876307 0.809016
-0.240581 0.437615 -1.05158 0.876307 0.844327
-0.248167 0.451413 -0.971983 0.876307 0.876306
-0.253276 0.460707 -0.879954 0.876307 0.904827
-0.256102 0.465847 -0.776611 0.876307 0.929776
-0.256882 0.467267 -0.663236 0.876307 0.951056
-0.255895 0.465472 -0.541262 0.876307 0.968583
-0.253453 0.461028 -0.412248 0.876307 0.982287
-0.249892 0.454552 -0.27786 0.876307 0.992115
-0.245576 0.4467 -0.139845 0.876307 0.998027
-0.21289 0.452413 0 0.904827 1
-0.206869 0.439618 0.139467 0.904827 0.998027
-0.20121 0.427592 0.277133 0.904827 0.992115
-0.196267 0.417089 0.411222 0.904827 0.982287
-0.192384 0.408836 0.540013 0.904827 0.968583
-0.189881 0.403517 0.661863 0.904827 0.951057
-0.189054 0.401761 0.775233 0.904827 0.929777
-0.190168 0.404128 0.87871 0.904827 0.904827
-0.193451 0.411103 0.971026 0.904827 0.876307
-0.199087 0.423082 1.05108 0.904827 0.844328
-0.207219 0.440363 1.11795 0.904827 0.809017
-0.217939 0.463144 1.17092 0.904827 0.770513
-0.231289 0.491514 1.20946 0.904827 0.728969
-0.247258 0.52545 1.23326 0.904827 0.684547
-0.265784 0.56482 1.24223 0.904827 0.637424
-0.286751 0.609377 1.2365 0.904827 0.587785
-0.309993 0.658767 1.21638 0.904827 0.535827
-0.335291 0.71253 1.18244 0.904827 0.481754
-0.362385 0.770106 1.1354 0.904827 0.42578
-0.390967 0.830846 1.07618 0.904827 0.368125
-0.420692 0.894016 1.00589 0.904827 0.309017
-0.451184 0.958814 0.925751 0.904827 0.24869
-0.482034 1.02437 0.837154 0.904827 0.187382
-0.512815 1.08979 0.741578 0.904827 0.125334
-0.543084 1.15411 0.640592 0.904827 0.0627908
-0.572387 1.21638 0.535827 0.904827 3.26795e-07
-0.600272 1.27564 0.428948 0.904827 -0.0627902
-0.62629 1.33093 0.321626 0.904827 -0.125333
-0.650005 1.38133 0.215518 0.904827 -0.187381
-0.671002 1.42595 0.112235 0.904827 -0.24869
-0.688892 1.46397 0.0133185 0.904827 -0.309017
-0.703317 1.49462 -0.0797826 0.904827 -0.368124
-0.713961 1.51724 -0.165735 0.904827 -0.425779
-0.720548 1.53124 -0.243341 0.904827 -0.481753
-0.722854 1.53614 -0.311557 0.904827 -0.535826
-0.720707 1.53158 -0.36951 0.904827 -0.587785
-0.71399 1.51731 -0.416511 0.904827 -0.637424
-0.702646 1.4932 -0.452061 0.904827 -0.684547
-0.686677 1.45926 -0.475863 0.904827 -0.728968
-0.666145 1.41563 -0.487824 0.904827 -0.770513
-0.641175 1.36257 -0.488053 0.904827 -0.809017
-0.611949 1.30046 -0.476861 0.904827 -0.844328
-0.578708 1.22982 -0.454753 0.904827 -0.876306
-0.541745 1.15127 -0.422422 0.904827 -0.904827
-0.501405 1.06554 -0.380732 0.904827 -0.929776
-0.458081 0.97347 -0.330704 0.904827 -0.951056
-0.412203 0.875975 -0.273504 0.904827 -0.968583
-0.364239 0.774046 -0.210415 0.904827 -0.982287
-0.314684 0.668738 -0.14282 0.904827 -0.992115
-0.264057 0.56115 -0.0721783 0.904827 -0.998027
-0.21289 0.452415 -7.53477e-07 0.904827 -1
-0.161723 0.343679 0.0721768 0.904827 -0.998027
-0.111096 0.236091 0.142818 0.904827 -0.992115
-0.0615417 0.130783 0.210413 0.904827 -0.982287
-0.0135777 0.028854 0.273503 0.904827 -0.968583
--0.0323003 -0.0686416 0.330703 0.904827 -0.951057
--0.075625 -0.160711 0.380731 0.904827 -0.929777
--0.115964 -0.246437 0.422422 0.904827 -0.904827
--0.152927 -0.324987 0.454753 0.904827 -0.876307
--0.186169 -0.395629 0.47686 0.904827 -0.844328
--0.215395 -0.457738 0.488053 0.904827 -0.809017
--0.240365 -0.510802 0.487824 0.904827 -0.770514
--0.260897 -0.554434 0.475864 0.904827 -0.728969
--0.276866 -0.588371 0.452061 0.904827 -0.684548
--0.288211 -0.612479 0.416512 0.904827 -0.637425
--0.294928 -0.626753 0.369511 0.904827 -0.587786
--0.297075 -0.631316 0.311558 0.904827 -0.535828
--0.294769 -0.626415 0.243342 0.904827 -0.481754
--0.288181 -0.612416 0.165737 0.904827 -0.42578
--0.277538 -0.589798 0.0797845 0.904827 -0.368125
--0.263113 -0.559143 -0.0133165 0.904827 -0.309018
--0.245223 -0.521125 -0.112233 0.904827 -0.248691
--0.224226 -0.476504 -0.215516 0.904827 -0.187382
--0.200511 -0.426106 -0.321624 0.904827 -0.125334
--0.174493 -0.370816 -0.428945 0.904827 -0.0627915
--0.146608 -0.311558 -0.535825 0.904827 -9.80385e-07
--0.117305 -0.249285 -0.64059 0.904827 0.0627895
--0.0870364 -0.184962 -0.741576 0.904827 0.125332
--0.0562552 -0.119548 -0.837152 0.904827 0.18738
--0.0254048 -0.0539879 -0.925749 0.904827 0.248689
-0.00508645 0.0108093 -1.00588 0.904827 0.309016
-0.0348122 0.0739797 -1.07618 0.904827 0.368124
-0.0633942 0.134719 -1.1354 0.904827 0.425778
-0.0904876 0.192296 -1.18244 0.904827 0.481753
-0.115786 0.246058 -1.21638 0.904827 0.535826
-0.139028 0.295448 -1.2365 0.904827 0.587784
-0.159995 0.340006 -1.24223 0.904827 0.637423
-0.178521 0.379376 -1.23326 0.904827 0.684546
-0.19449 0.413313 -1.20946 0.904827 0.728968
-0.20784 0.441682 -1.17092 0.904827 0.770513
-0.21856 0.464464 -1.11796 0.904827 0.809016
-0.226692 0.481745 -1.05108 0.904827 0.844327
-0.232329 0.493723 -0.971028 0.904827 0.876306
-0.235611 0.500699 -0.878712 0.904827 0.904827
-0.236725 0.503066 -0.775235 0.904827 0.929776
-0.235899 0.50131 -0.661865 0.904827 0.951056
-0.233396 0.495991 -0.540015 0.904827 0.968583
-0.229512 0.487738 -0.411224 0.904827 0.982287
-0.22457 0.477235 -0.277136 0.904827 0.992115
-0.218911 0.465209 -0.13947 0.904827 0.998027
-0.184062 0.464888 0 0.929776 1
-0.177247 0.447673 0.138954 0.929776 0.998027
-0.170764 0.431301 0.276134 0.929776 0.992115
-0.164943 0.416598 0.409793 0.929776 0.982287
-0.160098 0.404361 0.538233 0.929776 0.968583
-0.156526 0.395339 0.659839 0.929776 0.951057
-0.154501 0.390224 0.773092 0.929776 0.929777
-0.154267 0.389633 0.8766 0.929776 0.904827
-0.156036 0.394101 0.969113 0.929776 0.876307
-0.159981 0.404066 1.04954 0.929776 0.844328
-0.166235 0.419862 1.11698 0.929776 0.809017
-0.174886 0.441712 1.17072 0.929776 0.770513
-0.185977 0.469724 1.21022 0.929776 0.728969
-0.199502 0.503885 1.23519 0.929776 0.684547
-0.215408 0.544058 1.24552 0.929776 0.637424
-0.233593 0.589989 1.24134 0.929776 0.587785
-0.25391 0.641303 1.22295 0.929776 0.535827
-0.276165 0.697512 1.19088 0.929776 0.481754
-0.300122 0.758021 1.14586 0.929776 0.42578
-0.325506 0.822134 1.08879 0.929776 0.368125
-0.352007 0.889067 1.02072 0.929776 0.309017
-0.379283 0.957958 0.942874 0.929776 0.24869
-0.406967 1.02788 0.856596 0.929776 0.187382
-0.434672 1.09786 0.763338 0.929776 0.125334
-0.461997 1.16687 0.664635 0.929776 0.0627908
-0.488531 1.23389 0.562084 0.929776 3.26795e-07
-0.513864 1.29787 0.457314 0.929776 -0.0627902
-0.537588 1.35779 0.351965 0.929776 -0.125333
-0.559309 1.41265 0.247659 0.929776 -0.187381
-0.578649 1.4615 0.145976 0.929776 -0.24869
-0.595252 1.50343 0.0484277 0.929776 -0.309017
-0.608795 1.53764 -0.0435633 0.929776 -0.368124
-0.618986 1.56338 -0.128688 0.929776 -0.425779
-0.625576 1.58002 -0.205769 0.929776 -0.481753
-0.628358 1.58705 -0.273782 0.929776 -0.535826
-0.627172 1.58406 -0.331865 0.929776 -0.587785
-0.621911 1.57077 -0.379338 0.929776 -0.637424
-0.612519 1.54705 -0.415707 0.929776 -0.684547
-0.598994 1.51289 -0.440676 0.929776 -0.728968
-0.58139 1.46842 -0.454145 0.929776 -0.770513
-0.559814 1.41393 -0.456216 0.929776 -0.809017
-0.534429 1.34981 -0.447186 0.929776 -0.844328
-0.505447 1.27661 -0.427542 0.929776 -0.876306
-0.473131 1.19499 -0.397953 0.929776 -0.904827
-0.437789 1.10573 -0.359259 0.929776 -0.929776
-0.399771 1.00971 -0.312453 0.929776 -0.951056
-0.359464 0.907902 -0.258665 0.929776 -0.968583
-0.317286 0.801372 -0.199145 0.929776 -0.982287
-0.273681 0.691239 -0.13524 0.929776 -0.992115
-0.229114 0.578676 -0.0683679 0.929776 -0.998027
-0.184063 0.464889 -7.13771e-07 0.929776 -1
-0.139012 0.351103 0.0683665 0.929776 -0.998027
-0.0944447 0.23854 0.135238 0.929776 -0.992115
-0.0508399 0.128407 0.199144 0.929776 -0.982287
-0.0086616 0.0218767 0.258664 0.929776 -0.968583
--0.0316459 -0.0799282 0.312452 0.929776 -0.951057
--0.0696639 -0.175951 0.359259 0.929776 -0.929777
--0.105006 -0.265214 0.397953 0.929776 -0.904827
--0.137322 -0.346835 0.427541 0.929776 -0.876307
--0.166304 -0.420035 0.447185 0.929776 -0.844328
--0.191689 -0.484151 0.456216 0.929776 -0.809017
--0.213265 -0.538645 0.454146 0.929776 -0.770514
--0.230869 -0.583109 0.440676 0.929776 -0.728969
--0.244394 -0.617269 0.415708 0.929776 -0.684548
--0.253787 -0.640991 0.379339 0.929776 -0.637425
--0.259048 -0.654279 0.331866 0.929776 -0.587786
--0.260233 -0.657273 0.273783 0.929776 -0.535828
--0.257451 -0.650248 0.205771 0.929776 -0.481754
--0.250862 -0.633603 0.12869 0.929776 -0.42578
--0.24067 -0.607863 0.0435651 0.929776 -0.368125
--0.227128 -0.573658 -0.0484258 0.929776 -0.309018
--0.210524 -0.531723 -0.145974 0.929776 -0.248691
--0.191185 -0.482878 -0.247657 0.929776 -0.187382
--0.169464 -0.428017 -0.351963 0.929776 -0.125334
--0.14574 -0.368096 -0.457312 0.929776 -0.0627915
--0.120407 -0.304113 -0.562082 0.929776 -9.80385e-07
--0.0938726 -0.237095 -0.664633 0.929776 0.0627895
--0.066548 -0.168081 -0.763336 0.929776 0.125332
--0.0388428 -0.0981057 -0.856594 0.929776 0.18738
--0.0111586 -0.0281833 -0.942872 0.929776 0.248689
-0.0161175 0.040708 -1.02072 0.929776 0.309016
-0.0426182 0.107641 -1.08879 0.929776 0.368124
-0.0680024 0.171754 -1.14586 0.929776 0.425778
-0.0919595 0.232263 -1.19088 0.929776 0.481753
-0.114214 0.288472 -1.22295 0.929776 0.535826
-0.134531 0.339787 -1.24134 0.929776 0.587784
-0.152716 0.385718 -1.24552 0.929776 0.637423
-0.168622 0.425891 -1.23519 0.929776 0.684546
-0.182147 0.460051 -1.21022 0.929776 0.728968
-0.193238 0.488064 -1.17072 0.929776 0.770513
-0.201889 0.509914 -1.11699 0.929776 0.809016
-0.208144 0.52571 -1.04955 0.929776 0.844327
-0.212089 0.535675 -0.969115 0.929776 0.876306
-0.213858 0.540143 -0.876602 0.929776 0.904827
-0.213624 0.539553 -0.773094 0.929776 0.929776
-0.211599 0.534438 -0.659841 0.929776 0.951056
-0.208027 0.525416 -0.538236 0.929776 0.968583
-0.203182 0.513178 -0.409795 0.929776 0.982287
-0.197361 0.498476 -0.276137 0.929776 0.992115
-0.190878 0.482103 -0.138957 0.929776 0.998027
-0.154509 0.475528 0 0.951056 1
-0.147441 0.453777 0.138304 0.951056 0.998027
-0.140671 0.43294 0.274863 0.951056 0.992115
-0.134489 0.413916 0.407959 0.951056 0.982287
-0.129177 0.397567 0.535923 0.951056 0.968583
-0.125 0.384711 0.657164 0.951056 0.951057
-0.122202 0.376098 0.770188 0.951056 0.929777
-0.121001 0.372402 0.873625 0.951056 0.904827
-0.121587 0.374206 0.966243 0.951056 0.876307
-0.124116 0.381991 1.04697 0.951056 0.844328
-0.128709 0.396126 1.11491 0.951056 0.809017
-0.135446 0.41686 1.16936 0.951056 0.770513
-0.144368 0.444319 1.20979 0.951056 0.728969
-0.155474 0.478498 1.2359 0.951056 0.684547
-0.168719 0.519262 1.24758 0.951056 0.637424
-0.184017 0.566346 1.24495 0.951056 0.587785
-0.201242 0.619358 1.2283 0.951056 0.535827
-0.220225 0.677783 1.19816 0.951056 0.481754
-0.240763 0.740991 1.1552 0.951056 0.42578
-0.262615 0.808244 1.10032 0.951056 0.368125
-0.28551 0.878709 1.03455 0.951056 0.309017
-0.309151 0.951468 0.959066 0.951056 0.24869
-0.333216 1.02553 0.875193 0.951056 0.187382
-0.357366 1.09986 0.784345 0.951056 0.125334
-0.38125 1.17337 0.688023 0.951056 0.0627908
-0.404509 1.24495 0.587786 0.951056 3.26795e-07
-0.42678 1.31349 0.485229 0.951056 -0.0627902
-0.447708 1.3779 0.381957 0.951056 -0.125333
-0.466945 1.43711 0.279555 0.951056 -0.187381
-0.484158 1.49008 0.179572 0.951056 -0.24869
-0.499036 1.53587 0.0834892 0.951056 -0.309017
-0.511291 1.57359 -0.00730092 0.951056 -0.368124
-0.520668 1.60245 -0.0915139 0.951056 -0.425779
-0.526946 1.62177 -0.167995 0.951056 -0.481753
-0.52994 1.63099 -0.235737 0.951056 -0.535826
-0.529509 1.62966 -0.293892 0.951056 -0.587785
-0.525556 1.61749 -0.341791 0.951056 -0.637424
-0.518028 1.59433 -0.378943 0.951056 -0.684547
-0.506923 1.56015 -0.405054 0.951056 -0.728968
-0.492283 1.51509 -0.420019 0.951056 -0.770513
-0.474201 1.45944 -0.42393 0.951056 -0.809017
-0.452815 1.39362 -0.41707 0.951056 -0.844328
-0.428308 1.31819 -0.399908 0.951056 -0.876306
-0.400907 1.23386 -0.373092 0.951056 -0.904827
-0.370878 1.14145 -0.337433 0.951056 -0.929776
-0.338526 1.04188 -0.293893 0.951056 -0.951056
-0.304185 0.936185 -0.243571 0.951056 -0.968583
-0.268219 0.825492 -0.18768 0.951056 -0.982287
-0.231013 0.710985 -0.127526 0.951056 -0.992115
-0.192972 0.593905 -0.06449 0.951056 -0.998027
-0.154509 0.475529 -6.7336e-07 0.951056 -1
-0.116046 0.357154 0.0644887 0.951056 -0.998027
-0.0780047 0.240074 0.127525 0.951056 -0.992115
-0.0407991 0.125567 0.187678 0.951056 -0.982287
-0.0048328 0.0148738 0.24357 0.951056 -0.968583
--0.0295081 -0.0908166 0.293892 0.951056 -0.951057
--0.0618605 -0.190387 0.337432 0.951056 -0.929777
--0.0918887 -0.282804 0.373091 0.951056 -0.904827
--0.11929 -0.367136 0.399908 0.951056 -0.876307
--0.143797 -0.442561 0.417069 0.951056 -0.844328
--0.165183 -0.508382 0.423929 0.951056 -0.809017
--0.183266 -0.564034 0.420019 0.951056 -0.770514
--0.197905 -0.60909 0.405054 0.951056 -0.728969
--0.209011 -0.643269 0.378944 0.951056 -0.684548
--0.216538 -0.666436 0.341791 0.951056 -0.637425
--0.220492 -0.678603 0.293894 0.951056 -0.587786
--0.220923 -0.679929 0.235738 0.951056 -0.535828
--0.217928 -0.670714 0.167997 0.951056 -0.481754
--0.211651 -0.651395 0.0915156 0.951056 -0.42578
--0.202274 -0.622535 0.00730275 0.951056 -0.368125
--0.190019 -0.584817 -0.0834872 0.951056 -0.309018
--0.175141 -0.539029 -0.17957 0.951056 -0.248691
--0.157928 -0.486053 -0.279553 0.951056 -0.187382
--0.138692 -0.426848 -0.381954 0.951056 -0.125334
--0.117764 -0.362439 -0.485227 0.951056 -0.0627915
--0.095492 -0.293894 -0.587784 0.951056 -9.80385e-07
--0.0722337 -0.222312 -0.68802 0.951056 0.0627895
--0.0483497 -0.148805 -0.784343 0.951056 0.125332
--0.0241992 -0.0744775 -0.875191 0.951056 0.18738
--0.000134092 -0.000412692 -0.959064 0.951056 0.248689
-0.0235067 0.0723461 -1.03454 0.951056 0.309016
-0.0464021 0.142811 -1.10032 0.951056 0.368124
-0.068254 0.210064 -1.1552 0.951056 0.425778
-0.0887915 0.273272 -1.19816 0.951056 0.481753
-0.107775 0.331697 -1.2283 0.951056 0.535826
-0.125 0.384709 -1.24495 0.951056 0.587784
-0.140298 0.431794 -1.24758 0.951056 0.637423
-0.153543 0.472558 -1.2359 0.951056 0.684546
-0.164649 0.506737 -1.20979 0.951056 0.728968
-0.173571 0.534196 -1.16936 0.951056 0.770513
-0.180308 0.55493 -1.11491 0.951056 0.809016
-0.184901 0.569065 -1.04697 0.951056 0.844327
-0.18743 0.57685 -0.966245 0.951056 0.876306
-0.188016 0.578655 -0.873627 0.951056 0.904827
-0.186816 0.574959 -0.770191 0.951056 0.929776
-0.184017 0.566346 -0.657166 0.951056 0.951056
-0.17984 0.55349 -0.535926 0.951056 0.968583
-0.174528 0.537141 -0.407962 0.951056 0.982287
-0.168346 0.518116 -0.274866 0.951056 0.992115
-0.161576 0.49728 -0.138307 0.951056 0.998027
-0.124345 0.484292 0 0.968583 1
-0.11758 0.457943 0.137517 0.968583 0.998027
-0.111067 0.432578 0.273321 0.968583 0.992115
-0.105055 0.409163 0.405723 0.968583 0.982287
-0.0997828 0.388628 0.533084 0.968583 0.968583
-0.0954756 0.371852 0.65384 0.968583 0.951057
-0.0923416 0.359646 0.766524 0.968583 0.929777
-0.0905677 0.352737 0.869788 0.968583 0.904827
-0.0903157 0.351756 0.96242 0.968583 0.876307
-0.0917198 0.357225 1.04337 0.968583 0.844328
-0.0948833 0.369546 1.11174 0.968583 0.809017
-0.0998772 0.388996 1.16684 0.968583 0.770513
-0.106738 0.415717 1.20816 0.968583 0.728969
-0.115467 0.449714 1.23539 0.968583 0.684547
-0.12603 0.490853 1.24841 0.968583 0.637424
-0.138356 0.538861 1.24733 0.968583 0.587785
-0.152341 0.59333 1.23245 0.968583 0.535827
-0.167847 0.65372 1.20424 0.968583 0.481754
-0.184702 0.719367 1.1634 0.968583 0.42578
-0.202708 0.789496 1.11077 0.968583 0.368125
-0.221639 0.863225 1.04735 0.968583 0.309017
-0.241244 0.939584 0.974312 0.968583 0.24869
-0.261257 1.01753 0.892927 0.968583 0.187382
-0.281393 1.09595 0.804578 0.968583 0.125334
-0.301357 1.17371 0.710731 0.968583 0.0627908
-0.320849 1.24962 0.612907 0.968583 3.26795e-07
-0.339565 1.32252 0.512665 0.968583 -0.0627902
-0.357206 1.39122 0.411571 0.968583 -0.125333
-0.373479 1.4546 0.311176 0.968583 -0.187381
-0.388106 1.51157 0.212992 0.968583 -0.24869
-0.400824 1.5611 0.118468 0.968583 -0.309017
-0.411391 1.60226 0.0289686 0.968583 -0.368124
-0.419592 1.6342 -0.0542497 0.968583 -0.425779
-0.425238 1.65619 -0.130055 0.968583 -0.481753
-0.428176 1.66763 -0.197459 0.968583 -0.535826
-0.428284 1.66805 -0.25563 0.968583 -0.587785
-0.425478 1.65713 -0.303906 0.968583 -0.637424
-0.419713 1.63467 -0.341806 0.968583 -0.684547
-0.410984 1.60068 -0.369032 0.968583 -0.728968
-0.399325 1.55527 -0.385478 0.968583 -0.770513
-0.384811 1.49874 -0.391224 0.968583 -0.809017
-0.367555 1.43153 -0.386542 0.968583 -0.844328
-0.347707 1.35423 -0.37188 0.968583 -0.876306
-0.325457 1.26757 -0.347862 0.968583 -0.904827
-0.301025 1.17241 -0.315273 0.968583 -0.929776
-0.274661 1.06973 -0.275043 0.968583 -0.951056
-0.246645 0.960616 -0.228237 0.968583 -0.968583
-0.217277 0.846239 -0.176029 0.968583 -0.982287
-0.18688 0.727849 -0.119687 0.968583 -0.992115
-0.155788 0.606753 -0.0605486 0.968583 -0.998027
-0.124345 0.484293 -6.32285e-07 0.968583 -1
-0.0929031 0.361833 0.0605473 0.968583 -0.998027
-0.0618107 0.240736 0.119685 0.968583 -0.992115
-0.0314133 0.122347 0.176028 0.968583 -0.982287
-0.00204611 0.00796906 0.228236 0.968583 -0.968583
--0.0259702 -0.101147 0.275042 0.968583 -0.951057
--0.0523339 -0.203827 0.315272 0.968583 -0.929777
--0.0767665 -0.298986 0.347862 0.968583 -0.904827
--0.0990169 -0.385645 0.37188 0.968583 -0.876307
--0.118864 -0.462944 0.386542 0.968583 -0.844328
--0.136121 -0.530154 0.391224 0.968583 -0.809017
--0.150635 -0.586684 0.385478 0.968583 -0.770514
--0.162294 -0.632093 0.369033 0.968583 -0.728969
--0.171023 -0.66609 0.341806 0.968583 -0.684548
--0.176788 -0.688542 0.303907 0.968583 -0.637425
--0.179594 -0.69947 0.255631 0.968583 -0.587786
--0.179486 -0.699051 0.19746 0.968583 -0.535828
--0.176548 -0.68761 0.130057 0.968583 -0.481754
--0.170902 -0.665617 0.0542513 0.968583 -0.42578
--0.162701 -0.633678 -0.0289668 0.968583 -0.368125
--0.152134 -0.592522 -0.118466 0.968583 -0.309018
--0.139416 -0.54299 -0.21299 0.968583 -0.248691
--0.124789 -0.486022 -0.311174 0.968583 -0.187382
--0.108516 -0.422641 -0.411569 0.968583 -0.125334
--0.090875 -0.353934 -0.512663 0.968583 -0.0627915
--0.072159 -0.28104 -0.612905 0.968583 -9.80385e-07
--0.0526675 -0.205126 -0.710729 0.968583 0.0627895
--0.0327033 -0.127371 -0.804576 0.968583 0.125332
--0.0125674 -0.0489469 -0.892925 0.968583 0.18738
-0.00744527 0.0289974 -0.97431 0.968583 0.248689
-0.0270511 0.105357 -1.04735 0.968583 0.309016
-0.0459815 0.179086 -1.11076 0.968583 0.368124
-0.0639875 0.249215 -1.1634 0.968583 0.425778
-0.080843 0.314862 -1.20424 0.968583 0.481753
-0.0963485 0.375252 -1.23245 0.968583 0.535826
-0.110334 0.429721 -1.24733 0.968583 0.587784
-0.12266 0.477729 -1.24841 0.968583 0.637423
-0.133223 0.518869 -1.23539 0.968583 0.684546
-0.141952 0.552866 -1.20816 0.968583 0.728968
-0.148813 0.579587 -1.16684 0.968583 0.770513
-0.153807 0.599037 -1.11174 0.968583 0.809016
-0.15697 0.611358 -1.04337 0.968583 0.844327
-0.158374 0.616827 -0.962422 0.968583 0.876306
-0.158123 0.615846 -0.86979 0.968583 0.904827
-0.156349 0.608937 -0.766527 0.968583 0.929776
-0.153215 0.596731 -0.653842 0.968583 0.951056
-0.148907 0.579956 -0.533086 0.968583 0.968583
-0.143635 0.559421 -0.405725 0.968583 0.982287
-0.137623 0.536006 -0.273324 0.968583 0.992115
-0.13111 0.510641 -0.13752 0.968583 0.998027
-0.0936908 0.491144 0 0.982287 1
-0.0877865 0.460192 0.136595 0.982287 0.998027
-0.0820825 0.430291 0.271509 0.982287 0.992115
-0.0767756 0.402471 0.403086 0.982287 0.982287
-0.0720553 0.377726 0.529718 0.982287 0.968583
-0.0681007 0.356996 0.649871 0.982287 0.951057
-0.0650773 0.341147 0.762104 0.982287 0.929777
-0.0631336 0.330957 0.865092 0.982287 0.904827
-0.0623986 0.327104 0.957647 0.982287 0.876307
-0.0629796 0.33015 1.03873 0.982287 0.844328
-0.0649596 0.34053 1.10747 0.982287 0.809017
-0.0683962 0.358545 1.16317 0.982287 0.770513
-0.0733199 0.384356 1.20534 0.982287 0.728969
-0.0797335 0.417977 1.23365 0.982287 0.684547
-0.0876116 0.459275 1.24801 0.982287 0.637424
-0.096901 0.507972 1.24849 0.982287 0.587785
-0.107521 0.563644 1.23538 0.982287 0.535827
-0.119364 0.625728 1.20914 0.982287 0.481754
-0.132298 0.693532 1.17045 0.982287 0.42578
-0.146169 0.766241 1.12011 0.982287 0.368125
-0.160798 0.842933 1.05912 0.982287 0.309017
-0.175993 0.922588 0.988596 0.982287 0.24869
-0.191544 1.00411 0.909779 0.982287 0.187382
-0.207228 1.08633 0.824017 0.982287 0.125334
-0.222816 1.16804 0.732737 0.982287 0.0627908
-0.238071 1.24801 0.637424 0.982287 3.26795e-07
-0.252756 1.32499 0.539596 0.982287 -0.0627902
-0.266636 1.39775 0.440779 0.982287 -0.125333
-0.279483 1.4651 0.342489 0.982287 -0.187381
-0.291076 1.52587 0.246201 0.982287 -0.24869
-0.30121 1.579 0.15333 0.982287 -0.309017
-0.309695 1.62348 0.0652096 0.982287 -0.368124
-0.316361 1.65842 -0.0169318 0.982287 -0.425779
-0.32106 1.68305 -0.0919866 0.982287 -0.481753
-0.323669 1.69673 -0.158986 0.982287 -0.535826
-0.324092 1.69895 -0.217115 0.982287 -0.587785
-0.322263 1.68936 -0.265722 0.982287 -0.637424
-0.318145 1.66777 -0.304331 0.982287 -0.684547
-0.311732 1.63415 -0.332646 0.982287 -0.728968
-0.303048 1.58863 -0.350556 0.982287 -0.770513
-0.292151 1.53151 -0.358133 0.982287 -0.809017
-0.279128 1.46324 -0.355633 0.982287 -0.844328
-0.264094 1.38443 -0.343485 0.982287 -0.876306
-0.247196 1.29585 -0.322289 0.982287 -0.904827
-0.228604 1.19838 -0.292802 0.982287 -0.929776
-0.208513 1.09306 -0.255922 0.982287 -0.951056
-0.187138 0.981011 -0.212677 0.982287 -0.968583
-0.164714 0.863462 -0.164204 0.982287 -0.982287
-0.141491 0.741718 -0.111729 0.982287 -0.992115
-0.117727 0.617144 -0.0565473 0.982287 -0.998027
-0.093691 0.491145 -5.90586e-07 0.982287 -1
-0.0696554 0.365146 0.0565462 0.982287 -0.998027
-0.0458915 0.240572 0.111728 0.982287 -0.992115
-0.0226676 0.118827 0.164203 0.982287 -0.982287
-0.000243811 0.0012781 0.212676 0.982287 -0.968583
--0.0211308 -0.110771 0.255921 0.982287 -0.951057
--0.0412221 -0.216094 0.292801 0.982287 -0.929777
--0.0598143 -0.313557 0.322289 0.982287 -0.904827
--0.0767124 -0.40214 0.343484 0.982287 -0.876307
--0.0917456 -0.480947 0.355632 0.982287 -0.844328
--0.104769 -0.549218 0.358133 0.982287 -0.809017
--0.115666 -0.606343 0.350556 0.982287 -0.770514
--0.12435 -0.651864 0.332647 0.982287 -0.728969
--0.130763 -0.685485 0.304331 0.982287 -0.684548
--0.134882 -0.707074 0.265722 0.982287 -0.637425
--0.136711 -0.716661 0.217116 0.982287 -0.587786
--0.136287 -0.714441 0.158987 0.982287 -0.535828
--0.133678 -0.700765 0.0919881 0.982287 -0.481754
--0.128979 -0.676133 0.0169335 0.982287 -0.42578
--0.122314 -0.64119 -0.0652078 0.982287 -0.368125
--0.113829 -0.596711 -0.153328 0.982287 -0.309018
--0.103695 -0.543586 -0.246199 0.982287 -0.248691
--0.0921014 -0.482812 -0.342487 0.982287 -0.187382
--0.0792548 -0.415468 -0.440777 0.982287 -0.125334
--0.0653745 -0.342705 -0.539594 0.982287 -0.0627915
--0.0506895 -0.265723 -0.637422 0.982287 -9.80385e-07
--0.0354346 -0.185754 -0.732736 0.982287 0.0627895
--0.0198471 -0.104042 -0.824015 0.982287 0.125332
--0.00416276 -0.0218219 -0.909777 0.982287 0.18738
-0.0113879 0.0596972 -0.988594 0.982287 0.248689
-0.0265829 0.139352 -1.05912 0.982287 0.309016
-0.0412127 0.216044 -1.12011 0.982287 0.368124
-0.0550829 0.288754 -1.17045 0.982287 0.425778
-0.0680172 0.356558 -1.20914 0.982287 0.481753
-0.0798604 0.418642 -1.23538 0.982287 0.535826
-0.0904804 0.474314 -1.24849 0.982287 0.587784
-0.0997698 0.523011 -1.24801 0.982287 0.637423
-0.107648 0.56431 -1.23366 0.982287 0.684546
-0.114062 0.597931 -1.20534 0.982287 0.728968
-0.118985 0.623742 -1.16318 0.982287 0.770513
-0.122422 0.641757 -1.10747 0.982287 0.809016
-0.124402 0.652137 -1.03873 0.982287 0.844327
-0.124983 0.655183 -0.957649 0.982287 0.876306
-0.124248 0.65133 -0.865095 0.982287 0.904827
-0.122304 0.641141 -0.762106 0.982287 0.929776
-0.119281 0.625292 -0.649873 0.982287 0.951056
-0.115326 0.604561 -0.529721 0.982287 0.968583
-0.110606 0.579817 -0.403089 0.982287 0.982287
-0.105299 0.551997 -0.271512 0.982287 0.992115
-0.0995952 0.522096 -0.136598 0.982287 0.998027
-0.0626668 0.496057 0 0.992115 1
-0.0581818 0.460555 0.135538 0.992115 0.998027
-0.0538373 0.426165 0.269429 0.992115 0.992115
-0.0497714 0.39398 0.400052 0.992115 0.982287
-0.0461172 0.365054 0.52583 0.992115 0.968583
-0.0430004 0.340382 0.645261 0.992115 0.951057
-0.0405373 0.320885 0.756931 0.992115 0.929777
-0.0388324 0.307389 0.859543 0.992115 0.904827
-0.0379767 0.300616 0.951929 0.992115 0.876307
-0.0380459 0.301163 1.03307 0.992115 0.844328
-0.039099 0.3095 1.10211 0.992115 0.809017
-0.0411772 0.32595 1.15836 0.992115 0.770513
-0.0443028 0.350692 1.20133 0.992115 0.728969
-0.0484791 0.383751 1.23071 0.992115 0.684547
-0.0536894 0.424994 1.24637 0.992115 0.637424
-0.0598979 0.474139 1.24841 0.992115 0.587785
-0.0670493 0.530748 1.23708 0.992115 0.535827
-0.0750702 0.59424 1.21285 0.992115 0.481754
-0.0838696 0.663895 1.17634 0.992115 0.42578
-0.0933404 0.738864 1.12836 0.992115 0.368125
-0.103361 0.818186 1.06985 0.992115 0.309017
-0.113797 0.900796 1.0019 0.992115 0.24869
-0.124504 0.985546 0.925733 0.992115 0.187382
-0.135327 1.07122 0.842643 0.992115 0.125334
-0.146107 1.15655 0.754021 0.992115 0.0627908
-0.156681 1.24025 0.661312 0.992115 3.26795e-07
-0.166883 1.32102 0.565993 0.992115 -0.0627902
-0.176552 1.39755 0.469553 0.992115 -0.125333
-0.185527 1.4686 0.373464 0.992115 -0.187381
-0.193657 1.53295 0.279167 0.992115 -0.24869
-0.200798 1.58947 0.188041 0.992115 -0.309017
-0.206817 1.63712 0.101386 0.992115 -0.368124
-0.211597 1.67496 0.0204027 0.992115 -0.425779
-0.215034 1.70216 -0.0538274 0.992115 -0.481753
-0.217042 1.71806 -0.120356 0.992115 -0.535826
-0.217554 1.72211 -0.178385 0.992115 -0.587785
-0.216522 1.71395 -0.227275 0.992115 -0.637424
-0.213921 1.69336 -0.266555 0.992115 -0.684547
-0.209745 1.6603 -0.295932 0.992115 -0.728968
-0.20401 1.6149 -0.315289 0.992115 -0.770513
-0.196755 1.55747 -0.324689 0.992115 -0.809017
-0.188038 1.48847 -0.324372 0.992115 -0.844328
-0.17794 1.40854 -0.314751 0.992115 -0.876306
-0.16656 1.31845 -0.296398 0.992115 -0.904827
-0.154014 1.21914 -0.270042 0.992115 -0.929776
-0.140437 1.11167 -0.236548 0.992115 -0.951056
-0.125977 0.99721 -0.196908 0.992115 -0.968583
-0.110795 0.877032 -0.152217 0.992115 -0.982287
-0.0950626 0.752496 -0.103661 0.992115 -0.992115
-0.0789583 0.625018 -0.0524903 0.992115 -0.998027
-0.0626669 0.496059 -5.48303e-07 0.992115 -1
-0.0463756 0.367099 0.0524892 0.992115 -0.998027
-0.0302713 0.239621 0.10366 0.992115 -0.992115
-0.0145386 0.115085 0.152216 0.992115 -0.982287
--0.000643349 -0.00509262 0.196907 0.992115 -0.968583
--0.0151033 -0.119555 0.236547 0.992115 -0.951057
--0.0286803 -0.227028 0.270041 0.992115 -0.929777
--0.041226 -0.326336 0.296397 0.992115 -0.904827
--0.0526065 -0.416422 0.31475 0.992115 -0.876307
--0.0627046 -0.496356 0.324372 0.992115 -0.844328
--0.0714211 -0.565355 0.324689 0.992115 -0.809017
--0.0786764 -0.622786 0.315289 0.992115 -0.770514
--0.0844112 -0.668182 0.295932 0.992115 -0.728969
--0.0885875 -0.70124 0.266556 0.992115 -0.684548
--0.0911887 -0.721831 0.227276 0.992115 -0.637425
--0.0922201 -0.729995 0.178386 0.992115 -0.587786
--0.0917081 -0.725943 0.120358 0.992115 -0.535828
--0.0897002 -0.710048 0.0538289 0.992115 -0.481754
--0.0862634 -0.682844 -0.0204011 0.992115 -0.42578
--0.0814838 -0.645009 -0.101384 0.992115 -0.368125
--0.0754643 -0.59736 -0.188039 0.992115 -0.309018
--0.0683237 -0.540837 -0.279165 0.992115 -0.248691
--0.060194 -0.476484 -0.373462 0.992115 -0.187382
--0.0512187 -0.405437 -0.469551 0.992115 -0.125334
--0.0415501 -0.328902 -0.565991 0.992115 -0.0627915
--0.0313475 -0.24814 -0.66131 0.992115 -9.80385e-07
--0.0207738 -0.164441 -0.754019 0.992115 0.0627895
--0.00999361 -0.0791074 -0.842641 0.992115 0.125332
-0.00082959 0.00656686 -0.925731 0.992115 0.18738
-0.0115361 0.0913171 -1.0019 0.992115 0.248689
-0.0219722 0.173927 -1.06985 0.992115 0.309016
-0.0319929 0.253249 -1.12836 0.992115 0.368124
-0.0414638 0.328219 -1.17634 0.992115 0.425778
-0.0502632 0.397873 -1.21285 0.992115 0.481753
-0.0582841 0.461365 -1.23708 0.992115 0.535826
-0.0654355 0.517974 -1.24841 0.992115 0.587784
-0.071644 0.567119 -1.24637 0.992115 0.637423
-0.0768543 0.608363 -1.23071 0.992115 0.684546
-0.0810306 0.641422 -1.20133 0.992115 0.728968
-0.0841563 0.666164 -1.15836 0.992115 0.770513
-0.0862345 0.682615 -1.10211 0.992115 0.809016
-0.0872877 0.690951 -1.03307 0.992115 0.844327
-0.0873569 0.691499 -0.951931 0.992115 0.876306
-0.0865012 0.684726 -0.859545 0.992115 0.904827
-0.0847963 0.67123 -0.756934 0.992115 0.929776
-0.0823332 0.651733 -0.645263 0.992115 0.951056
-0.0792164 0.627061 -0.525833 0.992115 0.968583
-0.0755622 0.598135 -0.400054 0.992115 0.982287
-0.0714963 0.56595 -0.269432 0.992115 0.992115
-0.0671519 0.53156 -0.135541 0.992115 0.998027
-0.0313954 0.499013 0 0.998027 1
-0.0288823 0.459068 0.134347 0.998027 0.998027
-0.0264427 0.420293 0.267084 0.998027 0.992115
-0.0241491 0.383838 0.396623 0.998027 0.982287
-0.0220712 0.350811 0.521423 0.998027 0.968583
-0.020275 0.32226 0.640014 0.998027 0.951057
-0.0188213 0.299155 0.751012 0.998027 0.929777
-0.0177652 0.282369 0.853146 0.998027 0.904827
-0.0171545 0.272662 0.945272 0.998027 0.876307
-0.0170291 0.270669 1.02639 0.998027 0.844328
-0.0174203 0.276887 1.09566 0.998027 0.809017
-0.01835 0.291664 1.1524 0.998027 0.770513
-0.0198304 0.315194 1.19613 0.998027 0.728969
-0.0218637 0.347512 1.22654 0.998027 0.684547
-0.0244418 0.38849 1.24351 0.998027 0.637424
-0.0275467 0.437839 1.2471 0.998027 0.587785
-0.03115 0.495113 1.23757 0.998027 0.535827
-0.0352142 0.559711 1.21536 0.998027 0.481754
-0.0396925 0.63089 1.18108 0.998027 0.42578
-0.0445296 0.707774 1.13549 0.998027 0.368125
-0.0496627 0.789363 1.07952 0.998027 0.309017
-0.0550226 0.874554 1.01422 0.998027 0.24869
-0.060534 0.962155 0.940773 0.998027 0.187382
-0.0661175 1.0509 0.860437 0.998027 0.125334
-0.0716904 1.13948 0.774561 0.998027 0.0627908
-0.0771679 1.22654 0.684547 0.998027 3.26795e-07
-0.0824649 1.31073 0.591833 0.998027 -0.0627902
-0.0874965 1.39071 0.497863 0.998027 -0.125333
-0.0921804 1.46516 0.404071 0.998027 -0.187381
-0.0964373 1.53282 0.311858 0.998027 -0.24869
-0.100193 1.59251 0.222566 0.998027 -0.309017
-0.103378 1.64313 0.137463 0.998027 -0.368124
-0.105931 1.68371 0.0577171 0.998027 -0.425779
-0.107798 1.71339 -0.0156151 0.998027 -0.481753
-0.108935 1.73146 -0.0816081 0.998027 -0.535826
-0.109306 1.73736 -0.13948 0.998027 -0.587785
-0.108886 1.73068 -0.188604 0.998027 -0.637424
-0.107661 1.71121 -0.228517 0.998027 -0.684547
-0.105627 1.67889 -0.258925 0.998027 -0.728968
-0.102794 1.63385 -0.27971 0.998027 -0.770513
-0.0991794 1.5764 -0.290924 0.998027 -0.809017
-0.094814 1.50702 -0.292792 0.998027 -0.844328
-0.0897385 1.42635 -0.285706 0.998027 -0.876306
-0.0840037 1.33519 -0.270214 0.998027 -0.904827
-0.0776696 1.23452 -0.247015 0.998027 -0.929776
-0.0708049 1.12541 -0.216941 0.998027 -0.951056
-0.063486 1.00908 -0.180944 0.998027 -0.968583
-0.0557956 0.886841 -0.14008 0.998027 -0.982287
-0.0478218 0.760102 -0.0954911 0.998027 -0.992115
-0.0396568 0.630324 -0.0483814 0.998027 -0.998027
-0.0313955 0.499015 -5.0548e-07 0.998027 -1
-0.0231342 0.367706 0.0483804 0.998027 -0.998027
-0.0149692 0.237927 0.0954902 0.998027 -0.992115
-0.00699538 0.111188 0.14008 0.998027 -0.982287
--0.000695021 -0.011047 0.180943 0.998027 -0.968583
--0.00801393 -0.127377 0.21694 0.998027 -0.951057
--0.0148786 -0.236487 0.247015 0.998027 -0.929777
--0.0212127 -0.337165 0.270214 0.998027 -0.904827
--0.0269476 -0.428318 0.285705 0.998027 -0.876307
--0.0320231 -0.50899 0.292792 0.998027 -0.844328
--0.0363885 -0.578376 0.290924 0.998027 -0.809017
--0.040003 -0.635826 0.27971 0.998027 -0.770514
--0.0428365 -0.680863 0.258926 0.998027 -0.728969
--0.0448698 -0.713181 0.228517 0.998027 -0.684548
--0.0460949 -0.732653 0.188605 0.998027 -0.637425
--0.0465149 -0.739329 0.139481 0.998027 -0.587786
--0.0461441 -0.733435 0.0816093 0.998027 -0.535828
--0.0450074 -0.715368 0.0156165 0.998027 -0.481754
--0.04314 -0.685688 -0.0577155 0.998027 -0.42578
--0.0405869 -0.645108 -0.137461 0.998027 -0.368125
--0.0374019 -0.594482 -0.222565 0.998027 -0.309018
--0.0336465 -0.534793 -0.311856 0.998027 -0.248691
--0.0293896 -0.467133 -0.404069 0.998027 -0.187382
--0.0247058 -0.392685 -0.497861 0.998027 -0.125334
--0.0196741 -0.31271 -0.591831 0.998027 -0.0627915
--0.0143772 -0.228518 -0.684546 0.998027 -9.80385e-07
--0.00889967 -0.141456 -0.774559 0.998027 0.0627895
--0.00332679 -0.0528776 -0.860435 0.998027 0.125332
-0.00225673 0.0358695 -0.940772 0.998027 0.18738
-0.00776815 0.123471 -1.01422 0.998027 0.248689
-0.013128 0.208662 -1.07952 0.998027 0.309016
-0.0182612 0.290251 -1.13549 0.998027 0.368124
-0.0230983 0.367135 -1.18108 0.998027 0.425778
-0.0275765 0.438314 -1.21536 0.998027 0.481753
-0.0316407 0.502913 -1.23757 0.998027 0.535826
-0.0352441 0.560186 -1.2471 0.998027 0.587784
-0.0383489 0.609536 -1.24351 0.998027 0.637423
-0.0409271 0.650514 -1.22654 0.998027 0.684546
-0.0429604 0.682832 -1.19614 0.998027 0.728968
-0.0444408 0.706363 -1.1524 0.998027 0.770513
-0.0453705 0.72114 -1.09566 0.998027 0.809016
-0.0457617 0.727357 -1.02639 0.998027 0.844327
-0.0456363 0.725365 -0.945273 0.998027 0.876306
-0.0450256 0.715658 -0.853148 0.998027 0.904827
-0.0439695 0.698872 -0.751014 0.998027 0.929776
-0.0425159 0.675767 -0.640016 0.998027 0.951056
-0.0407196 0.647217 -0.521426 0.998027 0.968583
-0.0386417 0.61419 -0.396625 0.998027 0.982287
-0.0363481 0.577734 -0.267086 0.998027 0.992115
-0.0339086 0.538959 -0.13435 0.998027 0.998027
-1.63397e-07 0.5 0 1 1
-1.48945e-07 0.455776 0.133024 1 0.998027
-1.34892e-07 0.412774 0.264474 1 0.992115
-1.21632e-07 0.372195 0.392802 1 0.982287
-1.09541e-07 0.335199 0.516502 1 0.968583
-9.898e-08 0.302881 0.634135 1 0.951057
-9.02789e-08 0.276256 0.744351 1 0.929777
-8.37368e-08 0.256236 0.845906 1 0.904827
-7.96142e-08 0.243621 0.937681 1 0.876307
-7.81293e-08 0.239078 1.0187 1 0.844328
-7.94532e-08 0.243129 1.08813 1 0.809017
-8.37069e-08 0.256145 1.14531 1 0.770513
-9.0959e-08 0.278337 1.18976 1 0.728969
-1.01224e-07 0.309747 1.22117 1 0.684547
-1.14461e-07 0.350253 1.23942 1 0.637424
-1.30575e-07 0.399563 1.24456 1 0.587785
-1.49417e-07 0.457221 1.23684 1 0.535827
-1.70787e-07 0.522612 1.21667 1 0.481754
-1.94435e-07 0.594974 1.18464 1 0.42578
-2.20065e-07 0.673403 1.1415 1 0.368125
-2.47342e-07 0.756871 1.08813 1 0.309017
-2.75893e-07 0.84424 1.02554 1 0.24869
-3.05317e-07 0.934278 0.954886 1 0.187382
-3.35187e-07 1.02568 0.877382 1 0.125334
-3.65058e-07 1.11709 0.794336 1 0.0627908
-3.94476e-07 1.20711 0.707107 1 3.26795e-07
-4.22982e-07 1.29434 0.617088 1 -0.0627902
-4.50121e-07 1.37738 0.525681 1 -0.125333
-4.75449e-07 1.45488 0.434279 1 -0.187381
-4.9854e-07 1.52554 0.344241 1 -0.24869
-5.18991e-07 1.58813 0.256872 1 -0.309017
-5.36433e-07 1.6415 0.173404 1 -0.368124
-5.50533e-07 1.68464 0.0949745 1 -0.425779
-5.61e-07 1.71667 0.0226127 1 -0.481753
-5.6759e-07 1.73684 -0.0427791 1 -0.535826
-5.70113e-07 1.74456 -0.100437 1 -0.587785
-5.68433e-07 1.73942 -0.149747 1 -0.637424
-5.6247e-07 1.72117 -0.190253 1 -0.684547
-5.52205e-07 1.68976 -0.221664 1 -0.728968
-5.37679e-07 1.64531 -0.243855 1 -0.770513
-5.18991e-07 1.58813 -0.256872 1 -0.809017
-4.96302e-07 1.5187 -0.260923 1 -0.844328
-4.69827e-07 1.43768 -0.256379 1 -0.876306
-4.39836e-07 1.34591 -0.243764 1 -0.904827
-4.06648e-07 1.24435 -0.223745 1 -0.929776
-3.7063e-07 1.13414 -0.197119 1 -0.951056
-3.32188e-07 1.0165 -0.164801 1 -0.968583
-2.91764e-07 0.892803 -0.127805 1 -0.982287
-2.49827e-07 0.764476 -0.0872268 1 -0.992115
-2.06869e-07 0.633025 -0.0442248 1 -0.998027
-1.63398e-07 0.500001 -4.62158e-07 1 -1
-1.19926e-07 0.366978 0.0442239 1 -0.998027
-7.69691e-08 0.235527 0.0872259 1 -0.992115
-3.50322e-08 0.107199 0.127804 1 -0.982287
--5.39218e-09 -0.0165002 0.164801 1 -0.968583
--4.38342e-08 -0.134134 0.197119 1 -0.951057
--7.98523e-08 -0.24435 0.223744 1 -0.929777
--1.1304e-07 -0.345905 0.243764 1 -0.904827
--1.43032e-07 -0.43768 0.256379 1 -0.876307
--1.69507e-07 -0.518695 0.260923 1 -0.844328
--1.92196e-07 -0.588125 0.256872 1 -0.809017
--2.10883e-07 -0.645308 0.243856 1 -0.770514
--2.2541e-07 -0.689759 0.221664 1 -0.728969
--2.35675e-07 -0.72117 0.190253 1 -0.684548
--2.41638e-07 -0.739417 0.149748 1 -0.637425
--2.43318e-07 -0.74456 0.100438 1 -0.587786
--2.40795e-07 -0.73684 0.0427804 1 -0.535828
--2.34205e-07 -0.716673 -0.0226112 1 -0.481754
--2.23739e-07 -0.684645 -0.0949729 1 -0.42578
--2.09639e-07 -0.6415 -0.173402 1 -0.368125
--1.92197e-07 -0.588126 -0.25687 1 -0.309018
--1.71745e-07 -0.525544 -0.344239 1 -0.248691
--1.48655e-07 -0.454887 -0.434277 1 -0.187382
--1.23327e-07 -0.377383 -0.525679 1 -0.125334
--9.61878e-08 -0.294337 -0.617086 1 -0.0627915
--6.76819e-08 -0.207108 -0.707105 1 -9.80385e-07
--3.82641e-08 -0.117089 -0.794334 1 0.0627895
--8.39286e-09 -0.0256823 -0.87738 1 0.125332
-2.14769e-08 0.0657198 -0.954884 1 0.18738
-5.09009e-08 0.155758 -1.02554 1 0.248689
-7.94526e-08 0.243127 -1.08812 1 0.309016
-1.0673e-07 0.326595 -1.1415 1 0.368124
-1.3236e-07 0.405024 -1.18464 1 0.425778
-1.56007e-07 0.477386 -1.21667 1 0.481753
-1.77377e-07 0.542778 -1.23684 1 0.535826
-1.96219e-07 0.600436 -1.24456 1 0.587784
-2.12334e-07 0.649746 -1.23942 1 0.637423
-2.25571e-07 0.690252 -1.22117 1 0.684546
-2.35836e-07 0.721663 -1.18976 1 0.728968
-2.43088e-07 0.743855 -1.14531 1 0.770513
-2.47342e-07 0.756871 -1.08813 1 0.809016
-2.48666e-07 0.760922 -1.0187 1 0.844327
-2.47181e-07 0.756379 -0.937683 1 0.876306
-2.43058e-07 0.743764 -0.845908 1 0.904827
-2.36516e-07 0.723745 -0.744353 1 0.929776
-2.27815e-07 0.697119 -0.634137 1 0.951056
-2.17254e-07 0.664802 -0.516504 1 0.968583
-2.05164e-07 0.627805 -0.392805 1 0.982287
-1.91903e-07 0.587227 -0.264477 1 0.992115
-1.7785e-07 0.544225 -0.133026 1 0.998027
--0.0313951 0.499013 0 0.998027 1
--0.0283572 0.450728 0.131569 0.998027 0.998027
--0.0253992 0.403711 0.261604 0.998027 0.992115
--0.0225995 0.35921 0.388594 0.998027 0.982287
--0.0200336 0.318427 0.51107 0.998027 0.968583
--0.0177734 0.282501 0.62763 0.998027 0.951057
--0.015885 0.252486 0.736956 0.998027 0.929777
--0.0144283 0.229333 0.837832 0.998027 0.904827
--0.0134556 0.213872 0.929165 0.998027 0.876307
--0.0130106 0.206799 1.01 0.998027 0.844328
--0.013128 0.208664 1.07952 0.998027 0.809017
--0.0138321 0.219856 1.13708 0.998027 0.770513
--0.0151371 0.240599 1.18221 0.998027 0.728969
--0.0170465 0.270948 1.21459 0.998027 0.684547
--0.0195526 0.310782 1.2341 0.998027 0.637424
--0.0226371 0.359809 1.24079 0.998027 0.587785
--0.0262709 0.417566 1.23489 0.998027 0.535827
--0.0304146 0.483429 1.21678 0.998027 0.481754
--0.0350191 0.556616 1.18704 0.998027 0.42578
--0.0400264 0.636204 1.14638 0.998027 0.368125
--0.04537 0.72114 1.09566 0.998027 0.309017
--0.0509767 0.810255 1.03585 0.998027 0.24869
--0.0567667 0.902286 0.968055 0.998027 0.187382
--0.0626559 0.995893 0.893461 0.998027 0.125334
--0.0685563 1.08968 0.813327 0.998027 0.0627908
--0.0743779 1.18221 0.728969 0.998027 3.26795e-07
--0.0800298 1.27204 0.641734 0.998027 -0.0627902
--0.085422 1.35775 0.552981 0.998027 -0.125333
--0.0904664 1.43793 0.464058 0.998027 -0.187381
--0.0950784 1.51124 0.376284 0.998027 -0.24869
--0.0991783 1.5764 0.290924 0.998027 -0.309017
--0.102693 1.63226 0.209173 0.998027 -0.368124
--0.105555 1.67776 0.132138 0.998027 -0.425779
--0.107708 1.71198 0.0608181 0.998027 -0.481753
--0.109103 1.73414 -0.00390795 0.998027 -0.535826
--0.109701 1.74365 -0.0612948 0.998027 -0.587785
--0.109475 1.74007 -0.110742 0.998027 -0.637424
--0.10841 1.72314 -0.151801 0.998027 -0.684547
--0.106501 1.69279 -0.184183 0.998027 -0.728968
--0.103755 1.64914 -0.20776 0.998027 -0.770513
--0.100192 1.59251 -0.222566 0.998027 -0.809017
--0.0958423 1.52338 -0.228796 0.998027 -0.844328
--0.0907489 1.44242 -0.226799 0.998027 -0.876306
--0.0849643 1.35048 -0.217073 0.998027 -0.904827
--0.0785513 1.24854 -0.200254 0.998027 -0.929776
--0.0715817 1.13777 -0.177103 0.998027 -0.951056
--0.0641354 1.01941 -0.148496 0.998027 -0.968583
--0.0562992 0.894855 -0.115404 0.998027 -0.982287
--0.0481654 0.765571 -0.0788764 0.998027 -0.992115
--0.0398309 0.633097 -0.0400246 0.998027 -0.998027
--0.0313952 0.499015 -4.1838e-07 0.998027 -1
--0.0229595 0.364933 0.0400238 0.998027 -0.998027
--0.014625 0.232458 0.0788756 0.998027 -0.992115
--0.00649118 0.103175 0.115403 0.998027 -0.982287
-0.00134508 -0.0213796 0.148496 0.998027 -0.968583
-0.0087914 -0.139736 0.177103 0.998027 -0.951057
-0.015761 -0.250515 0.200253 0.998027 -0.929777
-0.022174 -0.352448 0.217073 0.998027 -0.904827
-0.0279586 -0.444392 0.226799 0.998027 -0.876307
-0.033052 -0.52535 0.228796 0.998027 -0.844328
-0.0374014 -0.594481 0.222566 0.998027 -0.809017
-0.0409645 -0.651115 0.20776 0.998027 -0.770514
-0.0437104 -0.694761 0.184184 0.998027 -0.728969
-0.0456198 -0.72511 0.151802 0.998027 -0.684548
-0.0466851 -0.742042 0.110743 0.998027 -0.637425
-0.0469106 -0.745626 0.0612959 0.998027 -0.587786
-0.0463123 -0.736118 0.00390922 0.998027 -0.535828
-0.0449177 -0.713951 -0.0608167 0.998027 -0.481754
-0.042765 -0.679733 -0.132137 0.998027 -0.42578
-0.0399025 -0.634236 -0.209172 0.998027 -0.368125
-0.0363882 -0.578377 -0.290922 0.998027 -0.309018
-0.0322883 -0.513211 -0.376282 0.998027 -0.248691
-0.0276763 -0.439905 -0.464057 0.998027 -0.187382
-0.022632 -0.359726 -0.552979 0.998027 -0.125334
-0.0172398 -0.27402 -0.641732 0.998027 -0.0627915
-0.0115878 -0.184184 -0.728967 0.998027 -9.80385e-07
-0.00576627 -0.0916527 -0.813325 0.998027 0.0627895
--0.000134134 0.002132 -0.893459 0.998027 0.125332
--0.00602332 0.0957384 -0.968054 0.998027 0.18738
--0.0118134 0.18777 -1.03585 0.998027 0.248689
--0.01742 0.276885 -1.09566 0.998027 0.309016
--0.0227637 0.361821 -1.14638 0.998027 0.368124
--0.0277709 0.441409 -1.18704 0.998027 0.425778
--0.0323755 0.514597 -1.21678 0.998027 0.481753
--0.0365192 0.580459 -1.23489 0.998027 0.535826
--0.040153 0.638217 -1.24079 0.998027 0.587784
--0.0432375 0.687244 -1.2341 0.998027 0.637423
--0.0457436 0.727078 -1.21459 0.998027 0.684546
--0.047653 0.757427 -1.18221 0.998027 0.728968
--0.0489581 0.778171 -1.13708 0.998027 0.770513
--0.0496622 0.789363 -1.07952 0.998027 0.809016
--0.0497795 0.791227 -1.01 0.998027 0.844327
--0.0493346 0.784155 -0.929167 0.998027 0.876306
--0.0483619 0.768694 -0.837834 0.998027 0.904827
--0.0469052 0.745541 -0.736958 0.998027 0.929776
--0.0450168 0.715526 -0.627633 0.998027 0.951056
--0.0427566 0.6796 -0.511073 0.998027 0.968583
--0.0401908 0.638818 -0.388596 0.998027 0.982287
--0.037391 0.594316 -0.261607 0.998027 0.992115
--0.034433 0.5473 -0.131572 0.998027 0.998027
--0.0626664 0.496057 0 0.992115 1
--0.0560878 0.443982 0.129984 0.992115 0.998027
--0.0496744 0.393214 0.258475 0.992115 0.992115
--0.0435887 0.345041 0.384002 0.992115 0.982287
--0.0379875 0.300703 0.505134 0.992115 0.968583
--0.0330193 0.261375 0.620506 0.992115 0.951057
--0.0288214 0.228146 0.728833 0.992115 0.929777
--0.0255181 0.201997 0.828931 0.992115 0.904827
--0.0232179 0.183789 0.919733 0.992115 0.876307
--0.022012 0.174243 1.0003 0.992115 0.844328
--0.0219723 0.173929 1.06985 0.992115 0.809017
--0.0231504 0.183255 1.12774 0.992115 0.770513
--0.0255765 0.202459 1.17349 0.992115 0.728969
--0.0292583 0.231604 1.20681 0.992115 0.684547
--0.0341814 0.270575 1.22757 0.992115 0.637424
--0.0403089 0.319079 1.2358 0.992115 0.587785
--0.0475818 0.37665 1.23171 0.992115 0.535827
--0.0559201 0.442654 1.21569 0.992115 0.481754
--0.0652235 0.516299 1.18827 0.992115 0.42578
--0.0753734 0.596644 1.15013 0.992115 0.368125
--0.0862341 0.682615 1.10211 0.992115 0.309017
--0.0976552 0.773023 1.04513 0.992115 0.24869
--0.109474 0.866576 0.98027 0.992115 0.187382
--0.121517 0.961907 0.908658 0.992115 0.125334
--0.133604 1.05759 0.831516 0.992115 0.0627908
--0.145551 1.15215 0.750111 0.992115 3.26795e-07
--0.15717 1.24413 0.665747 0.992115 -0.0627902
--0.168277 1.33205 0.579735 0.992115 -0.125333
--0.178691 1.41449 0.49338 0.992115 -0.187381
--0.188238 1.49006 0.407956 0.992115 -0.24869
--0.196754 1.55747 0.324689 0.992115 -0.309017
--0.204087 1.61552 0.244737 0.992115 -0.368124
--0.210101 1.66312 0.169172 0.992115 -0.425779
--0.214677 1.69935 0.0989635 0.992115 -0.481753
--0.217714 1.72339 0.0349671 0.992115 -0.535826
--0.219133 1.73462 -0.0220922 0.992115 -0.587785
--0.218878 1.7326 -0.0716276 0.992115 -0.637424
--0.216914 1.71706 -0.113199 0.992115 -0.684547
--0.213233 1.68791 -0.146521 0.992115 -0.728968
--0.207847 1.64528 -0.171459 0.992115 -0.770513
--0.200797 1.58947 -0.188041 0.992115 -0.809017
--0.192144 1.52098 -0.196443 0.992115 -0.844328
--0.181975 1.44048 -0.196996 0.992115 -0.876306
--0.170396 1.34882 -0.190168 0.992115 -0.904827
--0.157535 1.24702 -0.176565 0.992115 -0.929776
--0.143539 1.13623 -0.156913 0.992115 -0.951056
--0.12857 1.01774 -0.132045 0.992115 -0.968583
--0.112806 0.892956 -0.102889 0.992115 -0.982287
--0.096435 0.763364 -0.0704481 0.992115 -0.992115
--0.079654 0.630528 -0.0357849 0.992115 -0.998027
--0.0626666 0.496059 -3.74189e-07 0.992115 -1
--0.0456793 0.36159 0.0357841 0.992115 -0.998027
--0.0288983 0.228754 0.0704474 0.992115 -0.992115
--0.012527 0.0991615 0.102888 0.992115 -0.982287
-0.00323721 -0.0256253 0.132044 0.992115 -0.968583
-0.0182058 -0.144114 0.156912 0.992115 -0.951057
-0.0322018 -0.254904 0.176565 0.992115 -0.929777
-0.0450625 -0.356707 0.190168 0.992115 -0.904827
-0.0566414 -0.448364 0.196995 0.992115 -0.876307
-0.066811 -0.528865 0.196443 0.992115 -0.844328
-0.0754638 -0.597359 0.188041 0.992115 -0.809017
-0.0825141 -0.653169 0.17146 0.992115 -0.770514
-0.0878997 -0.695799 0.146521 0.992115 -0.728969
-0.0915815 -0.724944 0.1132 0.992115 -0.684548
-0.0935452 -0.740489 0.0716285 0.992115 -0.637425
-0.0938005 -0.742509 0.0220933 0.992115 -0.587786
-0.092381 -0.731273 -0.0349658 0.992115 -0.535828
-0.0893438 -0.707231 -0.0989621 0.992115 -0.481754
-0.0847681 -0.671011 -0.16917 0.992115 -0.42578
-0.0787541 -0.623405 -0.244735 0.992115 -0.368125
-0.071421 -0.565357 -0.324687 0.992115 -0.309018
-0.0629053 -0.497948 -0.407954 0.992115 -0.248691
-0.0533584 -0.422377 -0.493378 0.992115 -0.187382
-0.0429445 -0.339942 -0.579733 0.992115 -0.125334
-0.0318373 -0.252019 -0.665745 0.992115 -0.0627915
-0.0202179 -0.160041 -0.75011 0.992115 -9.80385e-07
-0.00827131 -0.0654744 -0.831514 0.992115 0.0627895
--0.0038159 0.030206 -0.908657 0.992115 0.125332
--0.0158589 0.125537 -0.980268 0.992115 0.18738
--0.0276775 0.21909 -1.04513 0.992115 0.248689
--0.0390985 0.309498 -1.10211 0.992115 0.309016
--0.0499593 0.395469 -1.15013 0.992115 0.368124
--0.0601092 0.475814 -1.18827 0.992115 0.425778
--0.0694126 0.549459 -1.21569 0.992115 0.481753
--0.0777509 0.615464 -1.23171 0.992115 0.535826
--0.0850239 0.673035 -1.2358 0.992115 0.587784
--0.0911513 0.721539 -1.22757 0.992115 0.637423
--0.0960745 0.76051 -1.20681 0.992115 0.684546
--0.0997563 0.789655 -1.17349 0.992115 0.728968
--0.102182 0.808859 -1.12774 0.992115 0.770513
--0.103361 0.818186 -1.06985 0.992115 0.809016
--0.103321 0.817872 -1.0003 0.992115 0.844327
--0.102115 0.808326 -0.919735 0.992115 0.876306
--0.0998148 0.790118 -0.828933 0.992115 0.904827
--0.0965115 0.76397 -0.728836 0.992115 0.929776
--0.0923137 0.73074 -0.620509 0.992115 0.951056
--0.0873455 0.691413 -0.505137 0.992115 0.968583
--0.0817443 0.647075 -0.384004 0.992115 0.982287
--0.0756587 0.598902 -0.258478 0.992115 0.992115
--0.0692453 0.548134 -0.129987 0.992115 0.998027
--0.0936905 0.491144 0 0.982287 1
--0.0830947 0.435599 0.128271 0.982287 0.998027
--0.0727547 0.381394 0.255092 0.982287 0.992115
--0.0629219 0.329849 0.379031 0.982287 0.982287
--0.0538389 0.282234 0.4987 0.982287 0.968583
--0.0457357 0.239755 0.61277 0.982287 0.951057
--0.0388251 0.203529 0.719992 0.982287 0.929777
--0.0332997 0.174564 0.819212 0.982287 0.904827
--0.0293281 0.153743 0.909392 0.982287 0.876307
--0.0270518 0.141811 0.98962 0.982287 0.844328
--0.0265832 0.139354 1.05912 0.982287 0.809017
--0.028003 0.146797 1.11728 0.982287 0.770513
--0.031359 0.16439 1.16362 0.982287 0.728969
--0.0366647 0.192204 1.19785 0.982287 0.684547
--0.0438993 0.230129 1.21982 0.982287 0.637424
--0.0530073 0.277875 1.22958 0.982287 0.587785
--0.0638995 0.334973 1.22732 0.982287 0.535827
--0.0764539 0.400786 1.2134 0.982287 0.481754
--0.0905177 0.474511 1.18832 0.982287 0.42578
--0.105909 0.555198 1.15275 0.982287 0.368125
--0.122422 0.641758 1.10747 0.982287 0.309017
--0.139824 0.732983 1.05339 0.982287 0.24869
--0.157866 0.827566 0.991517 0.982287 0.187382
--0.176284 0.924115 0.922959 0.982287 0.125334
--0.1948 1.02118 0.848884 0.982287 0.0627908
--0.213132 1.11728 0.770514 0.982287 3.26795e-07
--0.230991 1.2109 0.689103 0.982287 -0.0627902
--0.248095 1.30056 0.605917 0.982287 -0.125333
--0.264166 1.38481 0.522214 0.982287 -0.187381
--0.278934 1.46223 0.439225 0.982287 -0.24869
--0.29215 1.53151 0.358134 0.982287 -0.309017
--0.303579 1.59142 0.280059 0.982287 -0.368124
--0.31301 1.64086 0.206038 0.982287 -0.425779
--0.320261 1.67887 0.137011 0.982287 -0.481753
--0.325176 1.70464 0.0738076 0.982287 -0.535826
--0.327633 1.71752 0.0171322 0.982287 -0.587785
--0.327544 1.71705 -0.0324427 0.982287 -0.637424
--0.324854 1.70295 -0.0744861 0.982287 -0.684547
--0.319548 1.67513 -0.108714 0.982287 -0.728968
--0.311647 1.63372 -0.13499 0.982287 -0.770513
--0.301209 1.579 -0.15333 0.982287 -0.809017
--0.288329 1.51148 -0.163897 0.982287 -0.844328
--0.273135 1.43183 -0.166997 0.982287 -0.876306
--0.255793 1.34091 -0.163075 0.982287 -0.904827
--0.236494 1.23975 -0.152702 0.982287 -0.929776
--0.215464 1.1295 -0.136567 0.982287 -0.951056
--0.19295 1.01148 -0.115463 0.982287 -0.968583
--0.169221 0.887091 -0.090272 0.982287 -0.982287
--0.144566 0.757845 -0.0619503 0.982287 -0.992115
--0.119286 0.625321 -0.0315098 0.982287 -0.998027
--0.0936907 0.491145 -3.29628e-07 0.982287 -1
--0.0680954 0.356969 0.0315092 0.982287 -0.998027
--0.0428151 0.224445 0.0619497 0.982287 -0.992115
--0.0181601 0.0951986 0.0902714 0.982287 -0.982287
-0.00556841 -0.0291907 0.115462 0.982287 -0.968583
-0.0280827 -0.147215 0.136567 0.982287 -0.951057
-0.0491131 -0.25746 0.152702 0.982287 -0.929777
-0.0684112 -0.358625 0.163075 0.982287 -0.904827
-0.0857542 -0.44954 0.166997 0.982287 -0.876307
-0.100948 -0.529187 0.163897 0.982287 -0.844328
-0.113828 -0.596709 0.15333 0.982287 -0.809017
-0.124266 -0.651427 0.13499 0.982287 -0.770514
-0.132167 -0.692846 0.108714 0.982287 -0.728969
-0.137473 -0.72066 0.0744869 0.982287 -0.684548
-0.140163 -0.73476 0.0324436 0.982287 -0.637425
-0.140253 -0.735231 -0.0171311 0.982287 -0.587786
-0.137796 -0.722351 -0.0738063 0.982287 -0.535828
-0.13288 -0.696584 -0.13701 0.982287 -0.481754
-0.12563 -0.658574 -0.206036 0.982287 -0.42578
-0.116198 -0.609131 -0.280057 0.982287 -0.368125
-0.104769 -0.54922 -0.358132 0.982287 -0.309018
-0.0915538 -0.479943 -0.439223 0.982287 -0.248691
-0.0767849 -0.402521 -0.522212 0.982287 -0.187382
-0.0607148 -0.318279 -0.605915 0.982287 -0.125334
-0.0436108 -0.228616 -0.689101 0.982287 -0.0627915
-0.0257509 -0.134991 -0.770512 0.982287 -9.80385e-07
-0.00741972 -0.0388956 -0.848882 0.982287 0.0627895
--0.0110966 0.0581705 -0.922957 0.982287 0.125332
--0.0295143 0.15472 -0.991516 0.982287 0.18738
--0.0475569 0.249302 -1.05339 0.982287 0.248689
--0.0649591 0.340528 -1.10747 0.982287 0.309016
--0.0814712 0.427088 -1.15275 0.982287 0.368124
--0.096863 0.507774 -1.18832 0.982287 0.425778
--0.110927 0.5815 -1.2134 0.982287 0.481753
--0.123481 0.647313 -1.22732 0.982287 0.535826
--0.134373 0.704412 -1.22958 0.982287 0.587784
--0.143481 0.752158 -1.21982 0.982287 0.637423
--0.150716 0.790083 -1.19785 0.982287 0.684546
--0.156022 0.817897 -1.16362 0.982287 0.728968
--0.159378 0.83549 -1.11728 0.982287 0.770513
--0.160798 0.842933 -1.05912 0.982287 0.809016
--0.160329 0.840477 -0.989622 0.982287 0.844327
--0.158053 0.828544 -0.909394 0.982287 0.876306
--0.154081 0.807724 -0.819214 0.982287 0.904827
--0.148556 0.778759 -0.719994 0.982287 0.929776
--0.141645 0.742533 -0.612772 0.982287 0.951056
--0.133542 0.700054 -0.498703 0.982287 0.968583
--0.124459 0.65244 -0.379034 0.982287 0.982287
--0.114626 0.600894 -0.255094 0.982287 0.992115
--0.104286 0.54669 -0.128274 0.982287 0.998027
--0.124345 0.484292 0 0.968583 1
--0.109287 0.425646 0.126432 0.968583 0.998027
--0.0945801 0.368366 0.251456 0.968583 0.992115
--0.0805684 0.313794 0.373686 0.968583 0.982287
--0.0675848 0.263226 0.491774 0.968583 0.968583
--0.0559445 0.21789 0.604429 0.968583 0.951057
--0.0459399 0.178924 0.710439 0.968583 0.929777
--0.0378352 0.147359 0.808685 0.968583 0.904827
--0.0318622 0.124095 0.898155 0.968583 0.876307
--0.028216 0.109894 0.977961 0.968583 0.844328
--0.0270514 0.105358 1.04735 0.968583 0.809017
--0.0284806 0.110925 1.10571 0.968583 0.770513
--0.0325704 0.126854 1.1526 0.968583 0.728969
--0.0393413 0.153224 1.1877 0.968583 0.684547
--0.0487665 0.189933 1.21088 0.968583 0.637424
--0.0607723 0.236693 1.22216 0.968583 0.587785
--0.0752388 0.293036 1.22172 0.968583 0.535827
--0.0920013 0.358322 1.20991 0.968583 0.481754
--0.110853 0.431746 1.18721 0.968583 0.42578
--0.131549 0.51235 1.15423 0.968583 0.368125
--0.153806 0.599037 1.11174 0.968583 0.309017
--0.177313 0.690591 1.0606 0.968583 0.24869
--0.201731 0.785691 1.00179 0.968583 0.187382
--0.226698 0.882932 0.936348 0.968583 0.125334
--0.251839 0.98085 0.865414 0.968583 0.0627908
--0.276768 1.07794 0.790155 0.968583 3.26795e-07
--0.301096 1.17269 0.711778 0.968583 -0.0627902
--0.324435 1.26359 0.631501 0.968583 -0.125333
--0.346406 1.34916 0.550533 0.968583 -0.187381
--0.366646 1.42799 0.470061 0.968583 -0.24869
--0.38481 1.49874 0.391225 0.968583 -0.309017
--0.40058 1.56016 0.315104 0.968583 -0.368124
--0.41367 1.61114 0.242701 0.968583 -0.425779
--0.423828 1.6507 0.174924 0.968583 -0.481753
--0.430842 1.67802 0.112575 0.968583 -0.535826
--0.434544 1.69244 0.0563397 0.968583 -0.587785
--0.434812 1.69348 0.00677422 0.968583 -0.637424
--0.431572 1.68087 -0.0356993 0.968583 -0.684547
--0.424801 1.6545 -0.0707993 0.968583 -0.728968
--0.414526 1.61447 -0.0983871 0.968583 -0.770513
--0.400823 1.5611 -0.118468 0.968583 -0.809017
--0.383819 1.49488 -0.131189 0.968583 -0.844328
--0.363689 1.41648 -0.136835 0.968583 -0.876306
--0.340652 1.32675 -0.135822 0.968583 -0.904827
--0.314972 1.22674 -0.128689 0.968583 -0.929776
--0.286948 1.11759 -0.116087 0.968583 -0.951056
--0.256917 1.00063 -0.098767 0.968583 -0.968583
--0.225244 0.877269 -0.0775662 0.968583 -0.982287
--0.192317 0.749027 -0.0533914 0.968583 -0.992115
--0.158544 0.61749 -0.0272037 0.968583 -0.998027
--0.124345 0.484293 -2.84743e-07 0.968583 -1
--0.090146 0.351096 0.0272031 0.968583 -0.998027
--0.056373 0.219559 0.0533909 0.968583 -0.992115
--0.0234461 0.0913167 0.0775657 0.968583 -0.982287
-0.00822726 -0.0320431 0.0987665 0.968583 -0.968583
-0.0382581 -0.149006 0.116086 0.968583 -0.951057
-0.0662815 -0.25815 0.128688 0.968583 -0.929777
-0.0919621 -0.358169 0.135821 0.968583 -0.904827
-0.114999 -0.447891 0.136835 0.968583 -0.876307
-0.135129 -0.526294 0.131189 0.968583 -0.844328
-0.152133 -0.59252 0.118468 0.968583 -0.809017
-0.165836 -0.64589 0.0983875 0.968583 -0.770514
-0.176112 -0.685911 0.0707999 0.968583 -0.728969
-0.182883 -0.712282 0.0357001 0.968583 -0.684548
-0.186122 -0.724899 -0.00677327 0.968583 -0.637425
-0.185854 -0.723856 -0.0563386 0.968583 -0.587786
-0.182152 -0.709437 -0.112574 0.968583 -0.535828
-0.175138 -0.68212 -0.174922 0.968583 -0.481754
-0.164981 -0.642559 -0.242699 0.968583 -0.42578
-0.151891 -0.591578 -0.315103 0.968583 -0.368125
-0.136121 -0.530156 -0.391223 0.968583 -0.309018
-0.117957 -0.459411 -0.470059 0.968583 -0.248691
-0.097717 -0.380583 -0.550532 0.968583 -0.187382
-0.0757456 -0.29501 -0.631499 0.968583 -0.125334
-0.0524068 -0.204111 -0.711777 0.968583 -0.0627915
-0.0280792 -0.109362 -0.790154 0.968583 -9.80385e-07
-0.00315008 -0.0122688 -0.865412 0.968583 0.0627895
--0.021991 0.0856496 -0.936347 0.968583 0.125332
--0.0469583 0.182891 -1.00178 0.968583 0.18738
--0.0713756 0.27799 -1.0606 0.968583 0.248689
--0.0948826 0.369544 -1.11174 0.968583 0.309016
--0.11714 0.456232 -1.15423 0.968583 0.368124
--0.137836 0.536836 -1.18721 0.968583 0.425778
--0.156688 0.61026 -1.20991 0.968583 0.481753
--0.17345 0.675546 -1.22172 0.968583 0.535826
--0.187917 0.731889 -1.22216 0.968583 0.587784
--0.199923 0.778649 -1.21088 0.968583 0.637423
--0.209348 0.815358 -1.1877 0.968583 0.684546
--0.216119 0.841729 -1.1526 0.968583 0.728968
--0.220209 0.857658 -1.10572 0.968583 0.770513
--0.221638 0.863225 -1.04735 0.968583 0.809016
--0.220474 0.858689 -0.977963 0.968583 0.844327
--0.216827 0.844488 -0.898156 0.968583 0.876306
--0.210854 0.821225 -0.808687 0.968583 0.904827
--0.20275 0.78966 -0.710441 0.968583 0.929776
--0.192745 0.750694 -0.604431 0.968583 0.951056
--0.181105 0.705358 -0.491776 0.968583 0.968583
--0.168121 0.654791 -0.373689 0.968583 0.982287
--0.15411 0.600219 -0.251459 0.968583 0.992115
--0.139403 0.542939 -0.126434 0.968583 0.998027
--0.154508 0.475528 0 0.951057 1
--0.13458 0.414195 0.124468 0.951057 0.998027
--0.115101 0.354245 0.247573 0.951057 0.992115
--0.0965124 0.297035 0.367973 0.951057 0.982287
--0.079241 0.243879 0.484362 0.951057 0.968583
--0.0636907 0.19602 0.595491 0.951057 0.951057
--0.0502363 0.154611 0.700186 0.951057 0.929777
--0.0392169 0.120697 0.797359 0.951057 0.904827
--0.0309302 0.0951934 0.88603 0.951057 0.876307
--0.025627 0.0788719 0.965337 0.951057 0.844328
--0.0235071 0.0723477 1.03455 0.951057 0.809017
--0.0247156 0.076067 1.09306 0.951057 0.770513
--0.02934 0.0902993 1.14044 0.951057 0.728969
--0.0374085 0.115132 1.17637 0.951057 0.684547
--0.0488893 0.150466 1.20073 0.951057 0.637424
--0.0636906 0.19602 1.21353 0.951057 0.587785
--0.0816617 0.251329 1.21492 0.951057 0.535827
--0.102595 0.315755 1.20523 0.951057 0.481754
--0.126229 0.388493 1.18492 0.951057 0.42578
--0.152252 0.468584 1.15457 0.951057 0.368125
--0.180308 0.554931 1.11491 0.951057 0.309017
--0.209999 0.646311 1.06677 0.951057 0.24869
--0.240895 0.741401 1.01107 0.951057 0.187382
--0.272539 0.83879 0.948814 0.951057 0.125334
--0.304452 0.937008 0.88109 0.951057 0.0627908
--0.336144 1.03455 0.809017 0.951057 3.26795e-07
--0.367118 1.12988 0.733752 0.951057 -0.0627902
--0.396884 1.22148 0.656462 0.951057 -0.125333
--0.424957 1.30789 0.578309 0.951057 -0.187381
--0.450875 1.38765 0.500433 0.951057 -0.24869
--0.4742 1.45944 0.42393 0.951057 -0.309017
--0.494525 1.52199 0.349839 0.951057 -0.368124
--0.511485 1.57419 0.279124 0.951057 -0.425779
--0.524758 1.61504 0.212664 0.951057 -0.481753
--0.534075 1.64371 0.151232 0.951057 -0.535826
--0.539218 1.65955 0.0954916 0.951057 -0.587785
--0.540032 1.66205 0.0459845 0.951057 -0.637424
--0.536421 1.65094 0.00312268 0.951057 -0.684547
--0.528353 1.6261 -0.0328151 0.951057 -0.728968
--0.515859 1.58765 -0.0616871 0.951057 -0.770513
--0.499035 1.53587 -0.0834888 0.951057 -0.809017
--0.47804 1.47126 -0.0983511 0.951057 -0.844328
--0.453094 1.39448 -0.106537 0.951057 -0.876306
--0.424473 1.3064 -0.108434 0.951057 -0.904827
--0.39251 1.20802 -0.104548 0.951057 -0.929776
--0.357583 1.10053 -0.0954917 0.951057 -0.951056
--0.320118 0.985223 -0.0819736 0.951057 -0.968583
--0.280575 0.863522 -0.0647838 0.951057 -0.982287
--0.239446 0.73694 -0.0447798 0.951057 -0.992115
--0.197247 0.607065 -0.0228707 0.951057 -0.998027
--0.154509 0.47553 -2.39576e-07 0.951057 -1
--0.111771 0.343995 0.0228702 0.951057 -0.998027
--0.0695714 0.214119 0.0447794 0.951057 -0.992115
--0.0284427 0.0875376 0.0647834 0.951057 -0.982287
-0.0111004 -0.0341636 0.0819733 0.951057 -0.968583
-0.0485658 -0.14947 0.0954915 0.951057 -0.951057
-0.0834923 -0.256963 0.104548 0.951057 -0.929777
-0.115456 -0.355337 0.108434 0.951057 -0.904827
-0.144077 -0.443423 0.106537 0.951057 -0.876307
-0.169023 -0.5202 0.0983514 0.951057 -0.844328
-0.190018 -0.584816 0.0834892 0.951057 -0.809017
-0.206842 -0.636594 0.0616877 0.951057 -0.770514
-0.219336 -0.675047 0.0328158 0.951057 -0.728969
-0.227405 -0.69988 -0.00312186 0.951057 -0.684548
-0.231016 -0.710994 -0.0459835 0.951057 -0.637425
-0.230202 -0.708489 -0.0954905 0.951057 -0.587786
-0.225058 -0.692659 -0.151231 0.951057 -0.535828
-0.215742 -0.663986 -0.212662 0.951057 -0.481754
-0.202469 -0.623135 -0.279123 0.951057 -0.42578
-0.185509 -0.570938 -0.349837 0.951057 -0.368125
-0.165184 -0.508384 -0.423928 0.951057 -0.309018
-0.141859 -0.436599 -0.500431 0.951057 -0.248691
-0.115941 -0.356831 -0.578308 0.951057 -0.187382
-0.0878677 -0.270429 -0.65646 0.951057 -0.125334
-0.0581025 -0.178821 -0.73375 0.951057 -0.0627915
-0.0271276 -0.0834904 -0.809016 0.951057 -9.80385e-07
--0.00456403 0.0140466 -0.881088 0.951057 0.0627895
--0.036477 0.112265 -0.948813 0.951057 0.125332
--0.0681206 0.209654 -1.01106 0.951057 0.18738
--0.099017 0.304743 -1.06677 0.951057 0.248689
--0.128708 0.396124 -1.11491 0.951057 0.309016
--0.156764 0.482471 -1.15457 0.951057 0.368124
--0.182787 0.562562 -1.18492 0.951057 0.425778
--0.206421 0.6353 -1.20523 0.951057 0.481753
--0.227355 0.699726 -1.21492 0.951057 0.535826
--0.245326 0.755036 -1.21353 0.951057 0.587784
--0.260127 0.80059 -1.20073 0.951057 0.637423
--0.271608 0.835924 -1.17637 0.951057 0.684546
--0.279677 0.860757 -1.14044 0.951057 0.728968
--0.284301 0.874989 -1.09306 0.951057 0.770513
--0.285509 0.878709 -1.03455 0.951057 0.809016
--0.28339 0.872185 -0.965338 0.951057 0.844327
--0.278087 0.855864 -0.886032 0.951057 0.876306
--0.2698 0.83036 -0.797361 0.951057 0.904827
--0.258781 0.796446 -0.700188 0.951057 0.929776
--0.245326 0.755038 -0.595494 0.951057 0.951056
--0.229776 0.707179 -0.484364 0.951057 0.968583
--0.212505 0.654023 -0.367975 0.951057 0.982287
--0.193916 0.596813 -0.247575 0.951057 0.992115
--0.174437 0.536863 -0.12447 0.951057 0.998027
--0.184062 0.464888 0 0.929777 1
--0.158894 0.401322 0.122381 0.929777 0.998027
--0.134277 0.339146 0.243445 0.929777 0.992115
--0.110752 0.279728 0.361896 0.929777 0.982287
--0.0888414 0.224388 0.476472 0.929777 0.968583
--0.0690409 0.174377 0.585966 0.929777 0.951057
--0.0518103 0.130858 0.689241 0.929777 0.929777
--0.037566 0.094881 0.785246 0.929777 0.904827
--0.0266738 0.0673704 0.873032 0.929777 0.876307
--0.0194424 0.0491059 0.95176 0.929777 0.844328
--0.016118 0.0407095 1.02072 0.929777 0.809017
--0.0168803 0.0426348 1.07933 0.929777 0.770513
--0.0218387 0.0551583 1.12715 0.929777 0.728969
--0.0310302 0.0783735 1.16389 0.929777 0.684547
--0.0444186 0.112189 1.1894 0.929777 0.637424
--0.0618945 0.156328 1.2037 0.929777 0.587785
--0.0832763 0.210332 1.20692 0.929777 0.535827
--0.108313 0.273568 1.19936 0.929777 0.481754
--0.136689 0.345237 1.18146 0.929777 0.42578
--0.168025 0.424384 1.15377 0.929777 0.368125
--0.201889 0.509915 1.11698 0.929777 0.309017
--0.237799 0.600613 1.07188 0.929777 0.24869
--0.275231 0.695155 1.01935 0.929777 0.187382
--0.313629 0.792136 0.960343 0.929777 0.125334
--0.35241 0.890087 0.895896 0.929777 0.0627908
--0.390978 0.9875 0.827081 0.929777 3.26795e-07
--0.42873 1.08285 0.755001 0.929777 -0.0627902
--0.465065 1.17462 0.680775 0.929777 -0.125333
--0.499396 1.26133 0.605514 0.929777 -0.187381
--0.531157 1.34155 0.530311 0.929777 -0.24869
--0.559813 1.41393 0.456216 0.929777 -0.309017
--0.584871 1.47722 0.384228 0.929777 -0.368124
--0.605883 1.53029 0.315272 0.929777 -0.425779
--0.622455 1.57214 0.250194 0.929777 -0.481753
--0.634259 1.60196 0.189739 0.929777 -0.535826
--0.641028 1.61905 0.134549 0.929777 -0.587785
--0.642569 1.62295 0.0851493 0.929777 -0.637424
--0.638765 1.61334 0.0419416 0.929777 -0.684547
--0.629574 1.59012 0.0052014 0.929777 -0.728968
--0.615031 1.55339 -0.0249264 0.929777 -0.770513
--0.595251 1.50344 -0.0484274 0.929777 -0.809017
--0.570425 1.44073 -0.0654164 0.929777 -0.844328
--0.540816 1.36595 -0.0761337 0.929777 -0.876306
--0.50676 1.27993 -0.0809391 0.929777 -0.904827
--0.468656 1.18369 -0.0803041 0.929777 -0.929776
--0.426965 1.07839 -0.0748026 0.929777 -0.951056
--0.382199 0.965326 -0.0650994 0.929777 -0.968583
--0.334917 0.845905 -0.0519375 0.929777 -0.982287
--0.285714 0.721633 -0.036124 0.929777 -0.992115
--0.235215 0.594086 -0.0185151 0.929777 -0.998027
--0.184063 0.46489 -1.94173e-07 0.929777 -1
--0.13291 0.335693 0.0185147 0.929777 -0.998027
--0.0824109 0.208146 0.0361236 0.929777 -0.992115
--0.0332081 0.0838741 0.0519372 0.929777 -0.982287
-0.0140742 -0.0355473 0.0650991 0.929777 -0.968583
-0.0588401 -0.148613 0.0748024 0.929777 -0.951057
-0.100531 -0.253914 0.080304 0.929777 -0.929777
-0.138635 -0.350153 0.0809391 0.929777 -0.904827
-0.172691 -0.436169 0.0761339 0.929777 -0.876307
-0.2023 -0.510953 0.0654167 0.929777 -0.844328
-0.227127 -0.573657 0.0484278 0.929777 -0.809017
-0.246907 -0.623616 0.0249269 0.929777 -0.770514
-0.261449 -0.660347 -0.0052007 0.929777 -0.728969
-0.270641 -0.683562 -0.0419408 0.929777 -0.684548
-0.274445 -0.69317 -0.0851483 0.929777 -0.637425
-0.272904 -0.689276 -0.134548 0.929777 -0.587786
-0.266135 -0.67218 -0.189738 0.929777 -0.535828
-0.254332 -0.642369 -0.250192 0.929777 -0.481754
-0.237759 -0.600511 -0.315271 0.929777 -0.42578
-0.216747 -0.547442 -0.384226 0.929777 -0.368125
-0.19169 -0.484153 -0.456215 0.929777 -0.309018
-0.163033 -0.411775 -0.530309 0.929777 -0.248691
-0.131272 -0.331556 -0.605513 0.929777 -0.187382
-0.0969416 -0.244847 -0.680773 0.929777 -0.125334
-0.0606067 -0.153075 -0.755 0.929777 -0.0627915
-0.0228551 -0.0577253 -0.827079 0.929777 -9.80385e-07
--0.0157132 0.0396871 -0.895895 0.929777 0.0627895
--0.0544947 0.137638 -0.960342 0.929777 0.125332
--0.0928923 0.234619 -1.01935 0.929777 0.18738
--0.130324 0.329162 -1.07188 0.929777 0.248689
--0.166234 0.41986 -1.11698 0.929777 0.309016
--0.200098 0.505391 -1.15377 0.929777 0.368124
--0.231435 0.584538 -1.18146 0.929777 0.425778
--0.25981 0.656207 -1.19936 0.929777 0.481753
--0.284847 0.719443 -1.20692 0.929777 0.535826
--0.306229 0.773448 -1.2037 0.929777 0.587784
--0.323705 0.817587 -1.1894 0.929777 0.637423
--0.337094 0.851403 -1.16389 0.929777 0.684546
--0.346285 0.874618 -1.12715 0.929777 0.728968
--0.351244 0.887142 -1.07933 0.929777 0.770513
--0.352006 0.889067 -1.02072 0.929777 0.809016
--0.348682 0.880671 -0.951762 0.929777 0.844327
--0.341451 0.862407 -0.873033 0.929777 0.876306
--0.330558 0.834896 -0.785248 0.929777 0.904827
--0.316314 0.79892 -0.689243 0.929777 0.929776
--0.299084 0.7554 -0.585968 0.929777 0.951056
--0.279283 0.70539 -0.476475 0.929777 0.968583
--0.257373 0.65005 -0.361899 0.929777 0.982287
--0.233847 0.590631 -0.243448 0.929777 0.992115
--0.20923 0.528456 -0.122383 0.929777 0.998027
--0.212889 0.452414 0 0.904827 1
--0.182158 0.387105 0.120173 0.904827 0.998027
--0.15208 0.323187 0.239077 0.904827 0.992115
--0.1233 0.262025 0.355462 0.904827 0.982287
--0.0964375 0.20494 0.468112 0.904827 0.968583
--0.0720828 0.153184 0.575863 0.904827 0.951057
--0.0507822 0.107918 0.677616 0.904827 0.929777
--0.0330312 0.070195 0.772359 0.904827 0.904827
--0.0192653 0.0409408 0.859172 0.904827 0.876307
--0.00985245 0.0209376 0.937244 0.904827 0.844328
--0.00508709 0.0108106 1.00589 0.904827 0.809017
--0.0051845 0.0110176 1.06453 0.904827 0.770513
--0.010277 0.0218398 1.11275 0.904827 0.728969
--0.0204115 0.0433767 1.15026 0.904827 0.684547
--0.0355479 0.0755433 1.1769 0.904827 0.637424
--0.0555597 0.11807 1.19268 0.904827 0.587785
--0.080235 0.170508 1.19772 0.904827 0.535827
--0.10928 0.232232 1.1923 0.904827 0.481754
--0.142323 0.302452 1.17683 0.904827 0.42578
--0.178919 0.380224 1.15184 0.904827 0.368125
--0.21856 0.464464 1.11795 0.904827 0.309017
--0.260677 0.553966 1.07594 0.904827 0.24869
--0.304652 0.64742 1.02662 0.904827 0.187382
--0.349831 0.743429 0.970925 0.904827 0.125334
--0.395526 0.840536 0.909819 0.904827 0.0627908
--0.441033 0.937244 0.844328 0.904827 3.26795e-07
--0.48564 1.03204 0.775505 0.904827 -0.0627902
--0.528637 1.12341 0.704416 0.904827 -0.125333
--0.569332 1.20989 0.632122 0.904827 -0.187381
--0.607054 1.29006 0.559666 0.904827 -0.24869
--0.641174 1.36257 0.488053 0.904827 -0.309017
--0.671105 1.42617 0.418238 0.904827 -0.368124
--0.696317 1.47975 0.351109 0.904827 -0.425779
--0.716347 1.52232 0.287477 0.904827 -0.481753
--0.7308 1.55303 0.228059 0.904827 -0.535826
--0.739364 1.57123 0.173474 0.904827 -0.587785
--0.741807 1.57642 0.12423 0.904827 -0.637424
--0.737987 1.5683 0.0807192 0.904827 -0.684547
--0.727852 1.54677 0.0432128 0.904827 -0.728968
--0.711443 1.5119 0.011859 0.904827 -0.770513
--0.688891 1.46397 -0.0133181 0.904827 -0.809017
--0.660418 1.40346 -0.0324171 0.904827 -0.844328
--0.626332 1.33103 -0.0456556 0.904827 -0.876306
--0.587026 1.24749 -0.0533644 0.904827 -0.904827
--0.542968 1.15387 -0.055981 0.904827 -0.929776
--0.494697 1.05129 -0.0540396 0.904827 -0.951056
--0.442816 0.941033 -0.0481609 0.904827 -0.968583
--0.38798 0.824499 -0.0390399 0.904827 -0.982287
--0.330887 0.703172 -0.0274325 0.904827 -0.992115
--0.272272 0.578609 -0.0141413 0.904827 -0.998027
--0.21289 0.452415 -1.48578e-07 0.904827 -1
--0.153508 0.326221 0.014141 0.904827 -0.998027
--0.0948928 0.201658 0.0274323 0.904827 -0.992115
--0.0378005 0.0803303 0.0390397 0.904827 -0.982287
-0.017036 -0.0362034 0.0481607 0.904827 -0.968583
-0.0689173 -0.146457 0.0540395 0.904827 -0.951057
-0.117188 -0.249037 0.055981 0.904827 -0.929777
-0.161246 -0.342666 0.0533645 0.904827 -0.904827
-0.200553 -0.426196 0.0456558 0.904827 -0.876307
-0.234638 -0.498632 0.0324175 0.904827 -0.844328
-0.263112 -0.559142 0.0133186 0.904827 -0.809017
-0.285664 -0.607067 -0.0118584 0.904827 -0.770514
-0.302073 -0.641939 -0.0432121 0.904827 -0.728969
-0.312208 -0.663476 -0.0807183 0.904827 -0.684548
-0.316028 -0.671594 -0.124229 0.904827 -0.637425
-0.313585 -0.666402 -0.173473 0.904827 -0.587786
-0.305021 -0.648204 -0.228058 0.904827 -0.535828
-0.290568 -0.617489 -0.287476 0.904827 -0.481754
-0.270539 -0.574925 -0.351108 0.904827 -0.42578
-0.245326 -0.521346 -0.418236 0.904827 -0.368125
-0.215396 -0.45774 -0.488051 0.904827 -0.309018
-0.181276 -0.385232 -0.559664 0.904827 -0.248691
-0.143554 -0.305067 -0.63212 0.904827 -0.187382
-0.102859 -0.218587 -0.704414 0.904827 -0.125334
-0.0598618 -0.127213 -0.775504 0.904827 -0.0627915
-0.0152551 -0.0324187 -0.844327 0.904827 -9.80385e-07
--0.030252 0.0642889 -0.909818 0.904827 0.0627895
--0.0759471 0.161396 -0.970924 0.904827 0.125332
--0.121126 0.257405 -1.02662 0.904827 0.18738
--0.165101 0.350859 -1.07594 0.904827 0.248689
--0.207218 0.440361 -1.11795 0.904827 0.309016
--0.246859 0.524602 -1.15183 0.904827 0.368124
--0.283455 0.602374 -1.17683 0.904827 0.425778
--0.316498 0.672594 -1.1923 0.904827 0.481753
--0.345543 0.734318 -1.19772 0.904827 0.535826
--0.370219 0.786756 -1.19268 0.904827 0.587784
--0.390231 0.829283 -1.1769 0.904827 0.637423
--0.405367 0.86145 -1.15026 0.904827 0.684546
--0.415502 0.882987 -1.11275 0.904827 0.728968
--0.420594 0.893809 -1.06453 0.904827 0.770513
--0.420692 0.894017 -1.00589 0.904827 0.809016
--0.415927 0.88389 -0.937246 0.904827 0.844327
--0.406514 0.863887 -0.859173 0.904827 0.876306
--0.392748 0.834633 -0.772361 0.904827 0.904827
--0.374997 0.79691 -0.677619 0.904827 0.929776
--0.353697 0.751644 -0.575865 0.904827 0.951056
--0.329342 0.699888 -0.468115 0.904827 0.968583
--0.30248 0.642803 -0.355465 0.904827 0.982287
--0.273699 0.581641 -0.239079 0.904827 0.992115
--0.243622 0.517723 -0.120175 0.904827 0.998027
--0.240877 0.438153 0 0.876307 1
--0.204304 0.371627 0.117846 0.876307 0.998027
--0.168489 0.306481 0.234473 0.876307 0.992115
--0.13418 0.244073 0.348678 0.876307 0.982287
--0.102097 0.185714 0.45929 0.876307 0.968583
--0.0729236 0.132648 0.565191 0.876307 0.951057
--0.0472949 0.0860291 0.665323 0.876307 0.929777
--0.0257865 0.0469055 0.758709 0.876307 0.904827
--0.00890486 0.0161979 0.844463 0.876307 0.876307
-0.00292155 -0.00531428 0.921803 0.876307 0.844328
-0.00934941 -0.0170065 0.990059 0.876307 0.809017
-0.0101267 -0.0184204 1.04868 0.876307 0.770513
-0.0050972 -0.00927179 1.09726 0.876307 0.728969
--0.00579638 0.0105436 1.13549 0.876307 0.684547
--0.0225111 0.0409475 1.16324 0.876307 0.637424
--0.0449037 0.0816796 1.18048 0.876307 0.587785
--0.0727328 0.132301 1.18734 0.876307 0.535827
--0.105662 0.192199 1.18407 0.876307 0.481754
--0.143264 0.260597 1.17105 0.876307 0.42578
--0.18503 0.336569 1.14876 0.876307 0.368125
--0.230372 0.419046 1.11782 0.876307 0.309017
--0.278638 0.506841 1.07893 0.876307 0.24869
--0.329117 0.598662 1.03289 0.876307 0.187382
--0.381052 0.693132 0.980548 0.876307 0.125334
--0.433654 0.788814 0.922844 0.876307 0.0627908
--0.486109 0.88423 0.860742 0.876307 3.26795e-07
--0.537596 0.977885 0.795244 0.876307 -0.0627902
--0.587298 1.06829 0.727362 0.876307 -0.125333
--0.634414 1.154 0.658106 0.876307 -0.187381
--0.678171 1.23359 0.588468 0.876307 -0.24869
--0.71784 1.30575 0.519407 0.876307 -0.309017
--0.752746 1.36924 0.451835 0.876307 -0.368124
--0.782275 1.42295 0.3866 0.876307 -0.425779
--0.805889 1.46591 0.324476 0.876307 -0.481753
--0.823134 1.49728 0.266154 0.876307 -0.535826
--0.833644 1.51639 0.212228 0.876307 -0.587785
--0.837152 1.52278 0.163188 0.876307 -0.637424
--0.83349 1.51612 0.119417 0.876307 -0.684547
--0.822597 1.4963 0.0811815 0.876307 -0.728968
--0.804514 1.46341 0.0486327 0.876307 -0.770513
--0.779391 1.41771 0.0218043 0.876307 -0.809017
--0.747479 1.35966 0.000614128 0.876307 -0.844328
--0.709132 1.28991 -0.0151323 0.876307 -0.876306
--0.664797 1.20926 -0.0257371 0.876307 -0.904827
--0.615011 1.1187 -0.0316027 0.876307 -0.929776
--0.560392 1.01935 -0.0332233 0.876307 -0.951056
--0.501631 0.912464 -0.0311749 0.876307 -0.968583
--0.439478 0.799408 -0.0261038 0.876307 -0.982287
--0.374736 0.681643 -0.018714 0.876307 -0.992115
--0.308247 0.5607 -0.00975349 0.876307 -0.998027
--0.240877 0.438155 -1.02837e-07 0.876307 -1
--0.173508 0.31561 0.0097533 0.876307 -0.998027
--0.107019 0.194666 0.0187138 0.876307 -0.992115
--0.0422769 0.0769015 0.0261037 0.876307 -0.982287
-0.019876 -0.0361544 0.0311748 0.876307 -0.968583
-0.0786378 -0.143042 0.0332233 0.876307 -0.951057
-0.133257 -0.242393 0.0316028 0.876307 -0.929777
-0.183043 -0.332954 0.0257373 0.876307 -0.904827
-0.227378 -0.413599 0.0151326 0.876307 -0.876307
-0.265725 -0.483353 -0.000613745 0.876307 -0.844328
-0.297637 -0.5414 -0.0218038 0.876307 -0.809017
-0.322761 -0.5871 -0.0486321 0.876307 -0.770514
-0.340843 -0.619992 -0.0811808 0.876307 -0.728969
-0.351737 -0.639808 -0.119416 0.876307 -0.684548
-0.355399 -0.646468 -0.163187 0.876307 -0.637425
-0.351891 -0.640088 -0.212227 0.876307 -0.587786
-0.341381 -0.620969 -0.266153 0.876307 -0.535828
-0.324136 -0.589602 -0.324475 0.876307 -0.481754
-0.300522 -0.546648 -0.386598 0.876307 -0.42578
-0.270993 -0.492935 -0.451834 0.876307 -0.368125
-0.236088 -0.429443 -0.519406 0.876307 -0.309018
-0.196419 -0.357284 -0.588466 0.876307 -0.248691
-0.152661 -0.27769 -0.658104 0.876307 -0.187382
-0.105546 -0.191987 -0.72736 0.876307 -0.125334
-0.055844 -0.10158 -0.795243 0.876307 -0.0627915
-0.00435663 -0.0079247 -0.860741 0.876307 -9.80385e-07
--0.0480986 0.0874911 -0.922842 0.876307 0.0627895
--0.1007 0.183173 -0.980547 0.876307 0.125332
--0.152636 0.277643 -1.03289 0.876307 0.18738
--0.203114 0.369464 -1.07893 0.876307 0.248689
--0.25138 0.457259 -1.11782 0.876307 0.309016
--0.296722 0.539737 -1.14876 0.876307 0.368124
--0.338488 0.615708 -1.17105 0.876307 0.425778
--0.376091 0.684107 -1.18407 0.876307 0.481753
--0.40902 0.744005 -1.18734 0.876307 0.535826
--0.436849 0.794626 -1.18048 0.876307 0.587784
--0.459242 0.835359 -1.16324 0.876307 0.637423
--0.475957 0.865763 -1.13549 0.876307 0.684546
--0.48685 0.885578 -1.09726 0.876307 0.728968
--0.49188 0.894727 -1.04868 0.876307 0.770513
--0.491103 0.893314 -0.99006 0.876307 0.809016
--0.484675 0.881622 -0.921805 0.876307 0.844327
--0.472849 0.86011 -0.844465 0.876307 0.876306
--0.455967 0.829402 -0.758711 0.876307 0.904827
--0.434459 0.790279 -0.665325 0.876307 0.929776
--0.40883 0.74366 -0.565193 0.876307 0.951056
--0.379657 0.690594 -0.459293 0.876307 0.968583
--0.347574 0.632235 -0.34868 0.876307 0.982287
--0.313265 0.569827 -0.234475 0.876307 0.992115
--0.27745 0.504681 -0.117849 0.876307 0.998027
--0.267913 0.422164 0 0.844328 1
--0.225272 0.354972 0.115403 0.844328 0.998027
--0.183494 0.289141 0.229638 0.844328 0.992115
--0.143431 0.226011 0.341549 0.844328 0.982287
--0.105903 0.166876 0.450015 0.844328 0.968583
--0.0716883 0.112963 0.553961 0.844328 0.951057
--0.0415117 0.0654121 0.652373 0.844328 0.929777
--0.0160293 0.0252581 0.744311 0.844328 0.904827
-0.00418125 -0.0065886 0.828922 0.844328 0.876307
-0.0186303 -0.0293566 0.905452 0.844328 0.844328
-0.0269249 -0.0424268 0.973255 0.844328 0.809017
-0.0287757 -0.0453432 1.0318 0.844328 0.770513
-0.0240019 -0.037821 1.08068 0.844328 0.728969
-0.0125351 -0.0197522 1.1196 0.844328 0.684547
--0.00557948 0.00879186 1.14843 0.844328 0.637424
--0.030183 0.0475609 1.16712 0.844328 0.587785
--0.061005 0.0961286 1.17579 0.844328 0.535827
--0.0976671 0.153899 1.17467 0.844328 0.481754
--0.139689 0.220114 1.1641 0.844328 0.42578
--0.186494 0.293868 1.14455 0.844328 0.368125
--0.237422 0.374117 1.11659 0.844328 0.309017
--0.291733 0.459698 1.08086 0.844328 0.24869
--0.348625 0.549345 1.03813 0.844328 0.187382
--0.407242 0.641711 0.989204 0.844328 0.125334
--0.46669 0.735386 0.934957 0.844328 0.0627908
--0.526049 0.828922 0.876307 0.844328 3.26795e-07
--0.58439 0.920852 0.814198 0.844328 -0.0627902
--0.640786 1.00972 0.74959 0.844328 -0.125333
--0.694329 1.09409 0.68344 0.844328 -0.187381
--0.744146 1.17259 0.616689 0.844328 -0.24869
--0.789409 1.24391 0.55025 0.844328 -0.309017
--0.82935 1.30685 0.484986 0.844328 -0.368124
--0.863275 1.36031 0.421709 0.844328 -0.425779
--0.890572 1.40332 0.361155 0.844328 -0.481753
--0.910725 1.43507 0.303987 0.844328 -0.535826
--0.923317 1.45492 0.250772 0.844328 -0.587785
--0.928042 1.46236 0.201985 0.844328 -0.637424
--0.924708 1.45711 0.157997 0.844328 -0.684547
--0.913242 1.43904 0.11907 0.844328 -0.728968
--0.893687 1.40823 0.0853584 0.844328 -0.770513
--0.866209 1.36493 0.0569051 0.844328 -0.809017
--0.83109 1.30959 0.0336448 0.844328 -0.844328
--0.788724 1.24283 0.0154058 0.844328 -0.876306
--0.739616 1.16545 0.00191556 0.844328 -0.904827
--0.684368 1.07839 -0.00719319 0.844328 -0.929776
--0.623676 0.982757 -0.0123742 0.844328 -0.951056
--0.558316 0.879767 -0.0141581 0.844328 -0.968583
--0.489136 0.770756 -0.013142 0.844328 -0.982287
--0.417039 0.657149 -0.00997702 0.844328 -0.992115
--0.342972 0.540439 -0.00535608 0.844328 -0.998027
--0.267914 0.422165 -5.69938e-08 0.844328 -1
--0.192855 0.303892 0.00535597 0.844328 -0.998027
--0.118789 0.187182 0.00997694 0.844328 -0.992115
--0.0466918 0.0735746 0.0131419 0.844328 -0.982287
-0.0224885 -0.0354363 0.0141581 0.844328 -0.968583
-0.0878481 -0.138427 0.0123742 0.844328 -0.951057
-0.14854 -0.234062 0.00719333 0.844328 -0.929777
-0.203788 -0.32112 -0.00191532 0.844328 -0.904827
-0.252897 -0.398502 -0.0154055 0.844328 -0.876307
-0.295263 -0.46526 -0.0336444 0.844328 -0.844328
-0.330382 -0.520599 -0.0569046 0.844328 -0.809017
-0.35786 -0.563898 -0.0853578 0.844328 -0.770514
-0.377415 -0.594711 -0.119069 0.844328 -0.728969
-0.388882 -0.61278 -0.157996 0.844328 -0.684548
-0.392216 -0.618033 -0.201985 0.844328 -0.637425
-0.387491 -0.610588 -0.250771 0.844328 -0.587786
-0.374899 -0.590746 -0.303985 0.844328 -0.535828
-0.354746 -0.558992 -0.361154 0.844328 -0.481754
-0.327449 -0.515978 -0.421707 0.844328 -0.42578
-0.293524 -0.462521 -0.484985 0.844328 -0.368125
-0.253583 -0.399584 -0.550248 0.844328 -0.309018
-0.208321 -0.328261 -0.616688 0.844328 -0.248691
-0.158504 -0.249762 -0.683438 0.844328 -0.187382
-0.10496 -0.165391 -0.749588 0.844328 -0.125334
-0.0485647 -0.0765259 -0.814197 0.844328 -0.0627915
--0.00977584 0.0154043 -0.876306 0.844328 -9.80385e-07
--0.0691352 0.10894 -0.934956 0.844328 0.0627895
--0.128583 0.202615 -0.989203 0.844328 0.125332
--0.1872 0.294981 -1.03813 0.844328 0.18738
--0.244092 0.384628 -1.08086 0.844328 0.248689
--0.298403 0.470209 -1.11658 0.844328 0.309016
--0.349331 0.550458 -1.14455 0.844328 0.368124
--0.396137 0.624212 -1.1641 0.844328 0.425778
--0.438159 0.690428 -1.17467 0.844328 0.481753
--0.474821 0.748198 -1.17579 0.844328 0.535826
--0.505643 0.796766 -1.16712 0.844328 0.587784
--0.530246 0.835536 -1.14843 0.844328 0.637423
--0.548361 0.86408 -1.1196 0.844328 0.684546
--0.559828 0.882149 -1.08068 0.844328 0.728968
--0.564602 0.889671 -1.0318 0.844328 0.770513
--0.562751 0.886755 -0.973256 0.844328 0.809016
--0.554457 0.873685 -0.905454 0.844328 0.844327
--0.540008 0.850917 -0.828924 0.844328 0.876306
--0.519798 0.819071 -0.744313 0.844328 0.904827
--0.494315 0.778917 -0.652375 0.844328 0.929776
--0.464139 0.731366 -0.553963 0.844328 0.951056
--0.429925 0.677453 -0.450017 0.844328 0.968583
--0.392396 0.618318 -0.341551 0.844328 0.982287
--0.352333 0.555188 -0.22964 0.844328 0.992115
--0.310556 0.489358 -0.115406 0.844328 0.998027
--0.293892 0.404509 0 0.809017 1
--0.245008 0.337226 0.112847 0.809017 0.998027
--0.197094 0.271276 0.224576 0.809017 0.992115
--0.151101 0.207973 0.334083 0.809017 0.982287
--0.107951 0.148582 0.440296 0.809017 0.968583
--0.0685184 0.0943075 0.542185 0.809017 0.951057
--0.033615 0.0462672 0.638779 0.809017 0.929777
--0.00397793 0.00547515 0.729178 0.809017 0.904827
-0.0197436 -0.0271748 0.812563 0.809017 0.876307
-0.0369989 -0.0509246 0.888208 0.809017 0.844328
-0.0473451 -0.065165 0.955491 0.809017 0.809017
-0.0504553 -0.0694458 1.0139 0.809017 0.770513
-0.0461236 -0.0634838 1.06303 0.809017 0.728969
-0.0342698 -0.0471684 1.10261 0.809017 0.684547
-0.0149406 -0.020564 1.13248 0.809017 0.637424
--0.0116902 0.0160902 1.15261 0.809017 0.587785
--0.0453242 0.0623834 1.16308 0.809017 0.535827
--0.0855422 0.117739 1.16411 0.809017 0.481754
--0.131811 0.181423 1.15601 0.809017 0.42578
--0.183491 0.252554 1.13921 0.809017 0.368125
--0.239846 0.330119 1.11425 0.809017 0.309017
--0.300053 0.412988 1.08173 0.809017 0.24869
--0.36322 0.49993 1.04235 0.809017 0.187382
--0.428393 0.589633 0.996884 0.809017 0.125334
--0.494575 0.680725 0.946149 0.809017 0.0627908
--0.560741 0.771794 0.891007 0.809017 3.26795e-07
--0.625854 0.861415 0.832348 0.809017 -0.0627902
--0.688881 0.948164 0.771078 0.809017 -0.125333
--0.748809 1.03065 0.708099 0.809017 -0.187381
--0.804662 1.10752 0.644303 0.809017 -0.24869
--0.855515 1.17752 0.580549 0.809017 -0.309017
--0.900513 1.23945 0.517659 0.809017 -0.368124
--0.938878 1.29226 0.456401 0.809017 -0.425779
--0.969925 1.33499 0.397478 0.809017 -0.481753
--0.993076 1.36685 0.341519 0.809017 -0.535826
--1.00787 1.38721 0.289069 0.809017 -0.587785
--1.01395 1.39558 0.240583 0.809017 -0.637424
--1.0111 1.39167 0.196421 0.809017 -0.684547
--0.99925 1.37535 0.156841 0.809017 -0.728968
--0.978432 1.3467 0.122 0.809017 -0.770513
--0.94883 1.30595 0.0919498 0.809017 -0.809017
--0.910754 1.25355 0.0666422 0.809017 -0.844328
--0.86464 1.19008 0.0459287 0.809017 -0.876306
--0.811045 1.11631 0.0295664 0.809017 -0.904827
--0.750638 1.03317 0.0172234 0.809017 -0.929776
--0.684189 0.941706 0.00848715 0.809017 -0.951056
--0.61256 0.843117 0.00287264 0.809017 -0.968583
--0.53669 0.738691 -0.000167151 0.809017 -0.982287
--0.457582 0.629808 -0.00123018 0.809017 -0.992115
--0.376288 0.517917 -0.000953374 0.809017 -0.998027
--0.293893 0.40451 -1.10947e-08 0.809017 -1
--0.211498 0.291103 0.000953359 0.809017 -0.998027
--0.130204 0.179211 0.00123018 0.809017 -0.992115
--0.0510966 0.0703285 0.000167192 0.809017 -0.982287
-0.0247734 -0.0340977 -0.00287255 0.809017 -0.968583
-0.0964026 -0.132687 -0.008487 0.809017 -0.951057
-0.162852 -0.224146 -0.0172232 0.809017 -0.929777
-0.223259 -0.30729 -0.0295661 0.809017 -0.904827
-0.276854 -0.381057 -0.0459284 0.809017 -0.876307
-0.322968 -0.444528 -0.0666418 0.809017 -0.844328
-0.361044 -0.496935 -0.0919493 0.809017 -0.809017
-0.390647 -0.53768 -0.121999 0.809017 -0.770514
-0.411465 -0.566333 -0.156841 0.809017 -0.728969
-0.423319 -0.582649 -0.19642 0.809017 -0.684548
-0.426162 -0.586562 -0.240582 0.809017 -0.637425
-0.42008 -0.578192 -0.289068 0.809017 -0.587786
-0.405292 -0.557837 -0.341518 0.809017 -0.535828
-0.382141 -0.525972 -0.397477 0.809017 -0.481754
-0.351093 -0.483239 -0.4564 0.809017 -0.42578
-0.312729 -0.430435 -0.517658 0.809017 -0.368125
-0.267732 -0.368501 -0.580547 0.809017 -0.309018
-0.216878 -0.298507 -0.644301 0.809017 -0.248691
-0.161025 -0.221632 -0.708098 0.809017 -0.187382
-0.101097 -0.139148 -0.771077 0.809017 -0.125334
-0.0380704 -0.0523994 -0.832347 0.809017 -0.0627915
--0.0270425 0.0372209 -0.891006 0.809017 -9.80385e-07
--0.0932086 0.128291 -0.946148 0.809017 0.0627895
--0.159391 0.219383 -0.996883 0.809017 0.125332
--0.224563 0.309085 -1.04235 0.809017 0.18738
--0.28773 0.396027 -1.08172 0.809017 0.248689
--0.347938 0.478896 -1.11425 0.809017 0.309016
--0.404293 0.556462 -1.13921 0.809017 0.368124
--0.455973 0.627593 -1.15601 0.809017 0.425778
--0.502242 0.691277 -1.16411 0.809017 0.481753
--0.54246 0.746633 -1.16308 0.809017 0.535826
--0.576094 0.792926 -1.15261 0.809017 0.587784
--0.602725 0.829581 -1.13248 0.809017 0.637423
--0.622054 0.856185 -1.10261 0.809017 0.684546
--0.633908 0.872501 -1.06303 0.809017 0.728968
--0.63824 0.878463 -1.0139 0.809017 0.770513
--0.63513 0.874183 -0.955492 0.809017 0.809016
--0.624784 0.859942 -0.88821 0.809017 0.844327
--0.607529 0.836193 -0.812564 0.809017 0.876306
--0.583808 0.803543 -0.72918 0.809017 0.904827
--0.554171 0.762751 -0.638781 0.809017 0.929776
--0.519267 0.714711 -0.542187 0.809017 0.951056
--0.479835 0.660436 -0.440298 0.809017 0.968583
--0.436685 0.601046 -0.334085 0.809017 0.982287
--0.390692 0.537742 -0.224578 0.809017 0.992115
--0.342777 0.471793 -0.112849 0.809017 0.998027
--0.318712 0.385257 0 0.770514 1
--0.263466 0.318476 0.110179 0.770514 0.998027
--0.209294 0.252993 0.219292 0.770514 0.992115
--0.157249 0.190081 0.326287 0.770514 0.982287
--0.108351 0.130975 0.430142 0.770514 0.968583
--0.0635698 0.0768427 0.529874 0.770514 0.951057
--0.0238035 0.0287735 0.624555 0.770514 0.929777
-0.0101306 -0.0122458 0.713325 0.770514 0.904827
-0.0375122 -0.0453445 0.795401 0.770514 0.876307
-0.05773 -0.0697837 0.870087 0.770514 0.844328
-0.0702917 -0.0849681 0.936784 0.770514 0.809017
-0.0748322 -0.0904567 0.994996 0.770514 0.770513
-0.0711208 -0.0859703 1.04434 0.770514 0.728969
-0.0590647 -0.0713971 1.08453 0.770514 0.684547
-0.0387116 -0.0467943 1.11542 0.770514 0.637424
-0.0102491 -0.012389 1.13696 0.770514 0.587785
--0.0259976 0.0314257 1.14923 0.770514 0.535827
--0.06957 0.0840958 1.1524 0.770514 0.481754
--0.119884 0.144915 1.14678 0.770514 0.42578
--0.176237 0.213034 1.13275 0.770514 0.368125
--0.23782 0.287476 1.11081 0.770514 0.309017
--0.303732 0.367149 1.08152 0.770514 0.24869
--0.372987 0.450865 1.04554 0.770514 0.187382
--0.444539 0.537356 1.00358 0.770514 0.125334
--0.517291 0.625298 0.956406 0.770514 0.0627908
--0.590113 0.713325 0.904827 0.770514 3.26795e-07
--0.661865 0.800058 0.849677 0.770514 -0.0627902
--0.731407 0.88412 0.791805 0.770514 -0.125333
--0.797625 0.964164 0.73206 0.770514 -0.187381
--0.859442 1.03889 0.67128 0.770514 -0.24869
--0.91584 1.10706 0.610275 0.770514 -0.309017
--0.965873 1.16754 0.549821 0.770514 -0.368124
--1.00868 1.21929 0.490644 0.770514 -0.425779
--1.04352 1.2614 0.433409 0.770514 -0.481753
--1.06973 1.29308 0.378714 0.770514 -0.535826
--1.08681 1.31373 0.32708 0.770514 -0.587785
--1.09437 1.32287 0.278944 0.770514 -0.637424
--1.09218 1.32021 0.234651 0.770514 -0.684547
--1.08012 1.30564 0.194458 0.770514 -0.728968
--1.05825 1.27921 0.158521 0.770514 -0.770513
--1.02677 1.24115 0.126904 0.770514 -0.809017
--0.986003 1.19187 0.0995739 0.770514 -0.844328
--0.936434 1.13196 0.0764064 0.770514 -0.876306
--0.878669 1.06213 0.057188 0.770514 -0.904827
--0.81344 0.983281 0.041623 0.770514 -0.929776
--0.74159 0.896429 0.0293401 0.770514 -0.951056
--0.664063 0.802715 0.0199006 0.770514 -0.968583
--0.581887 0.703381 0.0128078 0.770514 -0.982287
--0.496162 0.599758 0.00751788 0.770514 -0.992115
--0.408041 0.493237 0.00345027 0.770514 -0.998027
--0.318713 0.385258 3.48154e-08 0.770514 -1
--0.229384 0.277278 -0.00345019 0.770514 -0.998027
--0.141263 0.170758 -0.00751778 0.770514 -0.992115
--0.0555383 0.0671343 -0.0128077 0.770514 -0.982287
-0.0266375 -0.0321993 -0.0199004 0.770514 -0.968583
-0.104165 -0.125914 -0.0293399 0.770514 -0.951057
-0.176015 -0.212766 -0.0416227 0.770514 -0.929777
-0.241245 -0.291615 -0.0571876 0.770514 -0.904827
-0.299009 -0.361441 -0.0764059 0.770514 -0.876307
-0.348578 -0.421359 -0.0995734 0.770514 -0.844328
-0.389343 -0.470636 -0.126903 0.770514 -0.809017
-0.420828 -0.508694 -0.15852 0.770514 -0.770514
-0.442695 -0.535127 -0.194457 0.770514 -0.728969
-0.454752 -0.549701 -0.234651 0.770514 -0.684548
-0.456949 -0.552357 -0.278943 0.770514 -0.637425
-0.449387 -0.543216 -0.327079 0.770514 -0.587786
-0.432307 -0.52257 -0.378713 0.770514 -0.535828
-0.406093 -0.490882 -0.433408 0.770514 -0.481754
-0.37126 -0.448777 -0.490642 0.770514 -0.42578
-0.32845 -0.397028 -0.54982 0.770514 -0.368125
-0.278417 -0.336549 -0.610274 0.770514 -0.309018
-0.22202 -0.268376 -0.671278 0.770514 -0.248691
-0.160203 -0.193652 -0.732059 0.770514 -0.187382
-0.093985 -0.113608 -0.791804 0.770514 -0.125334
-0.0244426 -0.0295461 -0.849676 0.770514 -0.0627915
--0.0473088 0.0571865 -0.904826 0.770514 -9.80385e-07
--0.120131 0.145214 -0.956405 0.770514 0.0627895
--0.192883 0.233155 -1.00358 0.770514 0.125332
--0.264435 0.319647 -1.04554 0.770514 0.18738
--0.333691 0.403363 -1.08152 0.770514 0.248689
--0.399602 0.483036 -1.11081 0.770514 0.309016
--0.461186 0.557478 -1.13275 0.770514 0.368124
--0.517539 0.625598 -1.14678 0.770514 0.425778
--0.567853 0.686417 -1.1524 0.770514 0.481753
--0.611425 0.739087 -1.14923 0.770514 0.535826
--0.647672 0.782902 -1.13696 0.770514 0.587784
--0.676135 0.817307 -1.11542 0.770514 0.637423
--0.696488 0.84191 -1.08453 0.770514 0.684546
--0.708544 0.856484 -1.04434 0.770514 0.728968
--0.712256 0.86097 -0.994997 0.770514 0.770513
--0.707715 0.855482 -0.936785 0.770514 0.809016
--0.695154 0.840298 -0.870089 0.770514 0.844327
--0.674936 0.815859 -0.795403 0.770514 0.876306
--0.647555 0.78276 -0.713327 0.770514 0.904827
--0.613621 0.741741 -0.624557 0.770514 0.929776
--0.573855 0.693672 -0.529876 0.770514 0.951056
--0.529073 0.63954 -0.430144 0.770514 0.968583
--0.480176 0.580434 -0.32629 0.770514 0.982287
--0.428131 0.517522 -0.219294 0.770514 0.992115
--0.373958 0.452039 -0.110181 0.770514 0.998027
--0.342273 0.364484 0 0.728969 1
--0.280604 0.298813 0.107402 0.728969 0.998027
--0.220109 0.234392 0.213792 0.728969 0.992115
--0.161943 0.172452 0.31817 0.728969 0.982287
--0.107224 0.114182 0.419564 0.728969 0.968583
--0.0570111 0.0607107 0.517039 0.728969 0.951057
--0.0122902 0.0130878 0.609714 0.728969 0.929777
-0.0260432 -0.0277333 0.696769 0.728969 0.904827
-0.0571995 -0.0609113 0.777455 0.728969 0.876307
-0.0805071 -0.0857315 0.851108 0.728969 0.844328
-0.0954249 -0.101617 0.917153 0.728969 0.809017
-0.10155 -0.10814 0.975112 0.728969 0.770513
-0.0986274 -0.105028 1.02461 0.728969 0.728969
-0.0865507 -0.0921673 1.06538 0.728969 0.684547
-0.0653679 -0.0696098 1.09726 0.728969 0.637424
-0.0352795 -0.0375689 1.12019 0.728969 0.587785
--0.0033638 0.00358209 1.13424 0.728969 0.535827
--0.050066 0.053315 1.13956 0.728969 0.481754
--0.104194 0.110955 1.13642 0.728969 0.42578
--0.164984 0.175691 1.12517 0.728969 0.368125
--0.23156 0.246586 1.10627 0.728969 0.309017
--0.302939 0.322597 1.08025 0.728969 0.24869
--0.378051 0.402584 1.0477 0.728969 0.187382
--0.455757 0.485333 1.00928 0.728969 0.125334
--0.534863 0.569572 0.96572 0.728969 0.0627908
--0.614139 0.653993 0.917755 0.728969 3.26795e-07
--0.692343 0.737271 0.866168 0.728969 -0.0627902
--0.768234 0.818087 0.811751 0.728969 -0.125333
--0.840597 0.895145 0.755299 0.728969 -0.187381
--0.908258 0.967197 0.697594 0.728969 -0.24869
--0.970107 1.03306 0.639399 0.728969 -0.309017
--1.02511 1.09163 0.58144 0.728969 -0.368124
--1.07234 1.14192 0.524402 0.728969 -0.425779
--1.11096 1.18305 0.468912 0.728969 -0.481753
--1.14027 1.21427 0.415536 0.728969 -0.535826
--1.15972 1.23497 0.364769 0.728969 -0.587785
--1.16887 1.24472 0.317029 0.728969 -0.637424
--1.16746 1.24322 0.27265 0.728969 -0.684547
--1.15539 1.23036 0.231882 0.728969 -0.728968
--1.13269 1.20619 0.194886 0.728969 -0.770513
--1.09957 1.17092 0.161733 0.728969 -0.809017
--1.0564 1.12495 0.132407 0.728969 -0.844328
--1.00369 1.06882 0.106809 0.728969 -0.876306
--0.942101 1.00324 0.0847532 0.728969 -0.904827
--0.872419 0.929032 0.0659815 0.728969 -0.929776
--0.795559 0.847185 0.0501641 0.728969 -0.951056
--0.712544 0.758783 0.0369088 0.728969 -0.968583
--0.62449 0.665015 0.0257702 0.728969 -0.982287
--0.532587 0.567148 0.0162585 0.728969 -0.992115
--0.438085 0.466514 0.00785051 0.728969 -0.998027
--0.342274 0.364486 8.06911e-08 0.728969 -1
--0.246464 0.262457 -0.00785034 0.728969 -0.998027
--0.151962 0.161823 -0.0162583 0.728969 -0.992115
--0.0600589 0.0639563 -0.02577 0.728969 -0.982287
-0.0279959 -0.0298126 -0.0369086 0.728969 -0.968583
-0.111011 -0.118215 -0.0501638 0.728969 -0.951057
-0.18787 -0.200062 -0.0659812 0.728969 -0.929777
-0.257553 -0.274266 -0.0847528 0.728969 -0.904827
-0.319144 -0.339854 -0.106808 0.728969 -0.876307
-0.371853 -0.395984 -0.132407 0.728969 -0.844328
-0.415023 -0.441955 -0.161732 0.728969 -0.809017
-0.448138 -0.477219 -0.194885 0.728969 -0.770514
-0.470838 -0.501392 -0.231881 0.728969 -0.728969
-0.482915 -0.514253 -0.272649 0.728969 -0.684548
-0.484321 -0.51575 -0.317028 0.728969 -0.637425
-0.475169 -0.506004 -0.364768 0.728969 -0.587786
-0.455725 -0.485299 -0.415535 0.728969 -0.535828
-0.426411 -0.454082 -0.46891 0.728969 -0.481754
-0.387791 -0.412956 -0.5244 0.728969 -0.42578
-0.340566 -0.362667 -0.581439 0.728969 -0.368125
-0.285562 -0.304092 -0.639398 0.728969 -0.309018
-0.223713 -0.23823 -0.697593 0.728969 -0.248691
-0.156051 -0.166178 -0.755298 0.728969 -0.187382
-0.0836889 -0.0891197 -0.81175 0.728969 -0.125334
-0.00779789 -0.00830391 -0.866167 0.728969 -0.0627915
--0.0704057 0.0749745 -0.917754 0.728969 -9.80385e-07
--0.149682 0.159396 -0.965719 0.728969 0.0627895
--0.228788 0.243635 -1.00928 0.728969 0.125332
--0.306494 0.326383 -1.0477 0.728969 0.18738
--0.381607 0.40637 -1.08025 0.728969 0.248689
--0.452986 0.482381 -1.10627 0.728969 0.309016
--0.519561 0.553277 -1.12517 0.728969 0.368124
--0.580352 0.618013 -1.13642 0.728969 0.425778
--0.63448 0.675653 -1.13956 0.728969 0.481753
--0.681182 0.725386 -1.13424 0.728969 0.535826
--0.719826 0.766537 -1.12019 0.728969 0.587784
--0.749914 0.798578 -1.09726 0.728969 0.637423
--0.771097 0.821136 -1.06538 0.728969 0.684546
--0.783174 0.833996 -1.02461 0.728969 0.728968
--0.786097 0.837109 -0.975113 0.728969 0.770513
--0.779972 0.830586 -0.917154 0.728969 0.809016
--0.765054 0.814701 -0.851109 0.728969 0.844327
--0.741747 0.789881 -0.777456 0.728969 0.876306
--0.710591 0.756703 -0.69677 0.728969 0.904827
--0.672257 0.715882 -0.609716 0.728969 0.929776
--0.627537 0.668259 -0.517041 0.728969 0.951056
--0.577324 0.614788 -0.419566 0.728969 0.968583
--0.522605 0.556518 -0.318172 0.728969 0.982287
--0.464439 0.494578 -0.213794 0.728969 0.992115
--0.403944 0.430157 -0.107404 0.728969 0.998027
--0.364484 0.342274 0 0.684547 1
--0.296386 0.278325 0.104519 0.684547 0.998027
--0.229561 0.215572 0.208081 0.684547 0.992115
--0.165262 0.155191 0.309738 0.684547 0.982287
--0.104699 0.0983187 0.408571 0.684547 0.968583
--0.0490217 0.0460345 0.503695 0.684547 0.951057
-0.000699729 -0.00065709 0.594272 0.684547 0.929777
-0.0434939 -0.0408436 0.679524 0.684547 0.904827
-0.0785031 -0.0737194 0.758741 0.684547 0.876307
-0.104997 -0.0985992 0.831288 0.684547 0.844328
-0.122388 -0.11493 0.896616 0.684547 0.809017
-0.130235 -0.122298 0.954266 0.684547 0.770513
-0.128257 -0.120441 1.00387 0.684547 0.728969
-0.116336 -0.109247 1.04518 0.684547 0.684547
-0.0945199 -0.0887602 1.07801 0.684547 0.637424
-0.0630199 -0.0591797 1.10231 0.684547 0.587785
-0.0222109 -0.0208575 1.11813 0.684547 0.535827
--0.0273755 0.0257073 1.12559 0.684547 0.481754
--0.0850589 0.0798757 1.12493 0.684547 0.42578
--0.15002 0.140878 1.11648 0.684547 0.368125
--0.221313 0.207827 1.10065 0.684547 0.309017
--0.297883 0.279731 1.07791 0.684547 0.24869
--0.378575 0.355506 1.04882 0.684547 0.187382
--0.462163 0.434 1.01399 0.684547 0.125334
--0.547357 0.514003 0.97408 0.684547 0.0627908
--0.632835 0.594272 0.929777 0.684547 3.26795e-07
--0.717254 0.673547 0.881804 0.684547 -0.0627902
--0.799275 0.75057 0.830896 0.684547 -0.125333
--0.877588 0.824111 0.777792 0.684547 -0.187381
--0.950926 0.89298 0.723221 0.684547 -0.24869
--1.01809 0.95605 0.667892 0.684547 -0.309017
--1.07796 1.01227 0.612486 0.684547 -0.368124
--1.12953 1.0607 0.557642 0.684547 -0.425779
--1.17191 1.1005 0.503952 0.684547 -0.481753
--1.20433 1.13094 0.451947 0.684547 -0.535826
--1.22619 1.15147 0.402098 0.684547 -0.587785
--1.23702 1.16164 0.354801 0.684547 -0.637424
--1.23654 1.16119 0.31038 0.684547 -0.684547
--1.22462 1.15 0.269078 0.684547 -0.728968
--1.20131 1.12811 0.231058 0.684547 -0.770513
--1.16682 1.09572 0.196402 0.684547 -0.809017
--1.12155 1.0532 0.16511 0.684547 -0.844328
--1.06603 1.00107 0.137105 0.684547 -0.876306
--1.00098 0.939983 0.112235 0.684547 -0.904827
--0.927242 0.870739 0.090275 0.684547 -0.929776
--0.845798 0.794258 0.0709386 0.684547 -0.951056
--0.757743 0.711569 0.0538807 0.684547 -0.968583
--0.664276 0.623797 0.0387071 0.684547 -0.982287
--0.566675 0.532144 0.0249831 0.684547 -0.992115
--0.466283 0.437869 0.012243 0.684547 -0.998027
--0.364485 0.342275 1.26487e-07 0.684547 -1
--0.262687 0.24668 -0.0122427 0.684547 -0.998027
--0.162295 0.152406 -0.0249828 0.684547 -0.992115
--0.0646946 0.0607524 -0.0387068 0.684547 -0.982287
-0.0287729 -0.0270196 -0.0538803 0.684547 -0.968583
-0.116828 -0.109709 -0.0709382 0.684547 -0.951057
-0.198272 -0.18619 -0.0902745 0.684547 -0.929777
-0.27201 -0.255435 -0.112234 0.684547 -0.904827
-0.337061 -0.316521 -0.137105 0.684547 -0.876307
-0.392576 -0.368654 -0.165109 0.684547 -0.844328
-0.437853 -0.411172 -0.196401 0.684547 -0.809017
-0.472341 -0.443558 -0.231057 0.684547 -0.770514
-0.495655 -0.465451 -0.269077 0.684547 -0.728969
-0.507576 -0.476646 -0.310379 0.684547 -0.684548
-0.508056 -0.477097 -0.3548 0.684547 -0.637425
-0.497222 -0.466923 -0.402097 0.684547 -0.587786
-0.475364 -0.446397 -0.451946 0.684547 -0.535828
-0.442941 -0.41595 -0.50395 0.684547 -0.481754
-0.400565 -0.376156 -0.557641 0.684547 -0.42578
-0.348994 -0.327728 -0.612485 0.684547 -0.368125
-0.289122 -0.271504 -0.667891 0.684547 -0.309018
-0.221959 -0.208434 -0.723219 0.684547 -0.248691
-0.148622 -0.139565 -0.777791 0.684547 -0.187382
-0.0703088 -0.0660244 -0.830895 0.684547 -0.125334
--0.011713 0.0109993 -0.881803 0.684547 -0.0627915
--0.0961315 0.0902736 -0.929776 0.684547 -9.80385e-07
--0.181609 0.170542 -0.974079 0.684547 0.0627895
--0.266804 0.250546 -1.01399 0.684547 0.125332
--0.350391 0.32904 -1.04882 0.684547 0.18738
--0.431084 0.404815 -1.07791 0.684547 0.248689
--0.507653 0.476719 -1.10065 0.684547 0.309016
--0.578947 0.543668 -1.11648 0.684547 0.368124
--0.643908 0.604671 -1.12493 0.684547 0.425778
--0.701592 0.658839 -1.12559 0.684547 0.481753
--0.751178 0.705404 -1.11813 0.684547 0.535826
--0.791987 0.743726 -1.10231 0.684547 0.587784
--0.823488 0.773307 -1.07801 0.684547 0.637423
--0.845304 0.793794 -1.04518 0.684547 0.684546
--0.857225 0.804989 -1.00387 0.684547 0.728968
--0.859203 0.806846 -0.954267 0.684547 0.770513
--0.851356 0.799477 -0.896617 0.684547 0.809016
--0.833966 0.783147 -0.83129 0.684547 0.844327
--0.807472 0.758267 -0.758743 0.684547 0.876306
--0.772463 0.725392 -0.679526 0.684547 0.904827
--0.729669 0.685205 -0.594274 0.684547 0.929776
--0.679948 0.638514 -0.503697 0.684547 0.951056
--0.624271 0.58623 -0.408573 0.684547 0.968583
--0.563708 0.529358 -0.309741 0.684547 0.982287
--0.499409 0.468976 -0.208083 0.684547 0.992115
--0.432584 0.406224 -0.104522 0.684547 0.998027
--0.385256 0.318712 0 0.637424 1
--0.310783 0.257103 0.101534 0.637424 0.998027
--0.237678 0.196625 0.202164 0.637424 0.992115
--0.167288 0.138392 0.301001 0.637424 0.982287
--0.100913 0.0834823 0.397176 0.637424 0.968583
--0.0397894 0.0329167 0.489853 0.637424 0.951057
-0.0149319 -0.0123528 0.578243 0.637424 0.929777
-0.062206 -0.0514613 0.66161 0.637424 0.904827
-0.101109 -0.083645 0.739279 0.637424 0.876307
-0.130856 -0.108253 0.810648 0.637424 0.844328
-0.150809 -0.12476 0.875195 0.637424 0.809017
-0.160494 -0.132772 0.932478 0.637424 0.770513
-0.159605 -0.132037 0.982147 0.637424 0.728969
-0.148011 -0.122446 1.02394 0.637424 0.684547
-0.125758 -0.104036 1.0577 0.637424 0.637424
-0.0930671 -0.0769919 1.08335 0.637424 0.587785
-0.0503364 -0.0416419 1.10091 0.637424 0.535827
--0.00186959 0.00154666 1.11051 0.637424 0.481754
--0.0628262 0.0519744 1.11234 0.637424 0.42578
--0.13166 0.108919 1.10669 0.637424 0.368125
--0.207363 0.171546 1.09394 0.637424 0.309017
--0.288806 0.238921 1.07451 0.637424 0.24869
--0.374759 0.310028 1.04891 0.637424 0.187382
--0.46391 0.38378 1.0177 0.637424 0.125334
--0.554881 0.459038 0.981479 0.637424 0.0627908
--0.646258 0.534632 0.940881 0.637424 3.26795e-07
--0.736605 0.609373 0.896569 0.637424 -0.0627902
--0.82449 0.682079 0.849221 0.637424 -0.125333
--0.908511 0.751586 0.799518 0.637424 -0.187381
--0.987311 0.816775 0.748133 0.637424 -0.24869
--1.05961 0.876582 0.695726 0.637424 -0.309017
--1.1242 0.93002 0.642927 0.637424 -0.368124
--1.18001 0.97619 0.590332 0.637424 -0.425779
--1.22608 1.0143 0.538494 0.637424 -0.481753
--1.26159 1.04368 0.487913 0.637424 -0.535826
--1.28589 1.06378 0.43903 0.637424 -0.587785
--1.29848 1.0742 0.392223 0.637424 -0.637424
--1.29905 1.07467 0.347803 0.637424 -0.684547
--1.28746 1.06508 0.306008 0.637424 -0.728968
--1.26375 1.04546 0.267002 0.637424 -0.770513
--1.22815 1.01601 0.230877 0.637424 -0.809017
--1.18107 0.97707 0.19765 0.637424 -0.844328
--1.1231 0.92911 0.167267 0.637424 -0.876306
--1.05498 0.872755 0.139606 0.637424 -0.904827
--0.977608 0.808749 0.114479 0.637424 -0.929776
--0.892033 0.737954 0.091643 0.637424 -0.951056
--0.799418 0.661337 0.0707993 0.637424 -0.968583
--0.70104 0.579951 0.0516058 0.637424 -0.982287
--0.59826 0.494924 0.033683 0.637424 -0.992115
--0.492508 0.407438 0.0166234 0.637424 -0.998027
--0.385258 0.318713 1.72158e-07 0.637424 -1
--0.278007 0.229988 -0.0166231 0.637424 -0.998027
--0.172255 0.142502 -0.0336827 0.637424 -0.992115
--0.0694748 0.0574746 -0.0516054 0.637424 -0.982287
-0.0289035 -0.0239111 -0.0707989 0.637424 -0.968583
-0.121518 -0.100528 -0.0916426 0.637424 -0.951057
-0.207094 -0.171323 -0.114479 0.637424 -0.929777
-0.284464 -0.235329 -0.139605 0.637424 -0.904827
-0.352586 -0.291685 -0.167266 0.637424 -0.876307
-0.410559 -0.339644 -0.197649 0.637424 -0.844328
-0.457635 -0.378589 -0.230876 0.637424 -0.809017
-0.493232 -0.408037 -0.267001 0.637424 -0.770514
-0.516942 -0.427652 -0.306007 0.637424 -0.728969
-0.528536 -0.437243 -0.347802 0.637424 -0.684548
-0.527969 -0.436774 -0.392222 0.637424 -0.637425
-0.515378 -0.426358 -0.439029 0.637424 -0.587786
-0.491079 -0.406257 -0.487912 0.637424 -0.535828
-0.455567 -0.376878 -0.538493 0.637424 -0.481754
-0.409498 -0.338766 -0.590331 0.637424 -0.42578
-0.353688 -0.292596 -0.642926 0.637424 -0.368125
-0.289094 -0.239159 -0.695725 0.637424 -0.309018
-0.216799 -0.179352 -0.748132 0.637424 -0.248691
-0.138 -0.114163 -0.799517 0.637424 -0.187382
-0.0539793 -0.0446556 -0.84922 0.637424 -0.125334
--0.0339063 0.0280498 -0.896568 0.637424 -0.0627915
--0.124253 0.102791 -0.94088 0.637424 -9.80385e-07
--0.21563 0.178384 -0.981479 0.637424 0.0627895
--0.306601 0.253643 -1.0177 0.637424 0.125332
--0.395752 0.327395 -1.04891 0.637424 0.18738
--0.481705 0.398502 -1.07451 0.637424 0.248689
--0.563149 0.465878 -1.09394 0.637424 0.309016
--0.638851 0.528504 -1.10669 0.637424 0.368124
--0.707685 0.585449 -1.11234 0.637424 0.425778
--0.768642 0.635877 -1.11051 0.637424 0.481753
--0.820848 0.679065 -1.10091 0.637424 0.535826
--0.863579 0.714416 -1.08335 0.637424 0.587784
--0.89627 0.74146 -1.0577 0.637424 0.637423
--0.918524 0.75987 -1.02394 0.637424 0.684546
--0.930118 0.769462 -0.982148 0.637424 0.728968
--0.931007 0.770197 -0.932479 0.637424 0.770513
--0.921322 0.762185 -0.875196 0.637424 0.809016
--0.901369 0.745678 -0.81065 0.637424 0.844327
--0.871623 0.72107 -0.73928 0.637424 0.876306
--0.83272 0.688886 -0.661611 0.637424 0.904827
--0.785446 0.649778 -0.578245 0.637424 0.929776
--0.730725 0.604509 -0.489855 0.637424 0.951056
--0.669602 0.553943 -0.397178 0.637424 0.968583
--0.603227 0.499033 -0.301003 0.637424 0.982287
--0.532836 0.440801 -0.202166 0.637424 0.992115
--0.459731 0.380323 -0.101536 0.637424 0.998027
--0.404508 0.293893 0 0.587786 1
--0.323772 0.235234 0.0984474 0.587786 0.998027
--0.244495 0.177636 0.196048 0.587786 0.992115
--0.168111 0.12214 0.291967 0.587786 0.982287
--0.0960097 0.0697552 0.385388 0.587786 0.968583
--0.0295087 0.0214393 0.475528 0.587786 0.951057
-0.030165 -0.0219162 0.561644 0.587786 0.929777
-0.0818954 -0.0595006 0.643042 0.587786 0.904827
-0.124696 -0.0905973 0.719087 0.587786 0.876307
-0.157727 -0.114596 0.789209 0.587786 0.844328
-0.180308 -0.131001 0.85291 0.587786 0.809017
-0.191928 -0.139444 0.90977 0.587786 0.770513
-0.192257 -0.139683 0.95945 0.587786 0.728969
-0.181152 -0.131615 1.0017 0.587786 0.684547
-0.158655 -0.11527 1.03635 0.587786 0.637424
-0.125 -0.0908178 1.06331 0.587786 0.587785
-0.0806023 -0.058561 1.08261 0.587786 0.535827
-0.0260583 -0.0189325 1.09433 0.587786 0.481754
--0.0378662 0.0275115 1.09864 0.587786 0.42578
--0.110248 0.0800997 1.09581 0.587786 0.368125
--0.190018 0.138056 1.08614 0.587786 0.309017
--0.275983 0.200513 1.07005 0.587786 0.24869
--0.366837 0.266523 1.04797 0.587786 0.187382
--0.46119 0.335074 1.02041 0.587786 0.125334
--0.557581 0.405107 0.98791 0.587786 0.0627908
--0.654508 0.475528 0.951057 0.587786 3.26795e-07
--0.750449 0.545233 0.91045 0.587786 -0.0627902
--0.843884 0.613118 0.866708 0.587786 -0.125333
--0.933322 0.678099 0.820454 0.587786 -0.187381
--1.01732 0.739131 0.772307 0.587786 -0.24869
--1.09453 0.795221 0.722873 0.587786 -0.309017
--1.16366 0.845447 0.672733 0.587786 -0.368124
--1.22356 0.888972 0.62244 0.587786 -0.425779
--1.27323 0.925055 0.572506 0.587786 -0.481753
--1.31178 0.953067 0.523397 0.587786 -0.535826
--1.33852 0.972496 0.475528 0.587786 -0.587785
--1.35293 0.982961 0.429258 0.587786 -0.637424
--1.35465 0.984214 0.384883 0.587786 -0.684547
--1.34355 0.976146 0.342636 0.587786 -0.728968
--1.31966 0.958788 0.302683 0.587786 -0.770513
--1.28322 0.932313 0.265124 0.587786 -0.809017
--1.23466 0.897033 0.229995 0.587786 -0.844328
--1.17459 0.853391 0.197263 0.587786 -0.876306
--1.1038 0.80196 0.166839 0.587786 -0.904827
--1.02324 0.743432 0.138571 0.587786 -0.929776
--0.934018 0.678604 0.112257 0.587786 -0.951056
--0.837353 0.608373 0.0876482 0.587786 -0.968583
--0.734597 0.533717 0.0644536 0.587786 -0.982287
--0.62719 0.455681 0.0423497 0.587786 -0.992115
--0.516641 0.375362 0.0209874 0.587786 -0.998027
--0.40451 0.293894 2.1766e-07 0.587786 -1
--0.292378 0.212425 -0.020987 0.587786 -0.998027
--0.181829 0.132107 -0.0423493 0.587786 -0.992115
--0.0744216 0.0540705 -0.0644531 0.587786 -0.982287
-0.0283342 -0.020586 -0.0876477 0.587786 -0.968583
-0.124999 -0.0908171 -0.112257 0.587786 -0.951057
-0.214226 -0.155645 -0.13857 0.587786 -0.929777
-0.294784 -0.214174 -0.166838 0.587786 -0.904827
-0.365573 -0.265604 -0.197263 0.587786 -0.876307
-0.42564 -0.309246 -0.229994 0.587786 -0.844328
-0.4742 -0.344527 -0.265124 0.587786 -0.809017
-0.510639 -0.371002 -0.302682 0.587786 -0.770514
-0.534531 -0.38836 -0.342635 0.587786 -0.728969
-0.545636 -0.396428 -0.384882 0.587786 -0.684548
-0.543912 -0.395176 -0.429257 0.587786 -0.637425
-0.529509 -0.384711 -0.475527 0.587786 -0.587786
-0.502767 -0.365282 -0.523396 0.587786 -0.535828
-0.464212 -0.33727 -0.572505 0.587786 -0.481754
-0.414548 -0.301187 -0.622439 0.587786 -0.42578
-0.354641 -0.257662 -0.672732 0.587786 -0.368125
-0.285511 -0.207436 -0.722872 0.587786 -0.309018
-0.20831 -0.151346 -0.772306 0.587786 -0.248691
-0.124307 -0.0903148 -0.820453 0.587786 -0.187382
-0.0348689 -0.0253338 -0.866707 0.587786 -0.125334
--0.0585661 0.0425508 -0.910449 0.587786 -0.0627915
--0.154507 0.112256 -0.951056 0.587786 -9.80385e-07
--0.251434 0.182678 -0.987909 0.587786 0.0627895
--0.347825 0.25271 -1.02041 0.587786 0.125332
--0.442178 0.321261 -1.04797 0.587786 0.18738
--0.533032 0.387271 -1.07005 0.587786 0.248689
--0.618997 0.449728 -1.08614 0.587786 0.309016
--0.698767 0.507685 -1.09581 0.587786 0.368124
--0.771149 0.560273 -1.09864 0.587786 0.425778
--0.835074 0.606717 -1.09433 0.587786 0.481753
--0.889618 0.646346 -1.08261 0.587786 0.535826
--0.934016 0.678603 -1.06331 0.587786 0.587784
--0.967671 0.703055 -1.03635 0.587786 0.637423
--0.990168 0.7194 -1.0017 0.587786 0.684546
--1.00127 0.727469 -0.959451 0.587786 0.728968
--1.00094 0.727229 -0.909771 0.587786 0.770513
--0.989325 0.718787 -0.852911 0.587786 0.809016
--0.966745 0.702382 -0.78921 0.587786 0.844327
--0.933714 0.678384 -0.719088 0.587786 0.876306
--0.890913 0.647287 -0.643044 0.587786 0.904827
--0.839183 0.609703 -0.561646 0.587786 0.929776
--0.779509 0.566347 -0.47553 0.587786 0.951056
--0.713008 0.518031 -0.38539 0.587786 0.968583
--0.640907 0.465647 -0.291969 0.587786 0.982287
--0.564524 0.410151 -0.19605 0.587786 0.992115
--0.485246 0.352552 -0.0984495 0.587786 0.998027
--0.422164 0.267914 0 0.535827 1
--0.335334 0.21281 0.0952642 0.535827 0.998027
--0.250049 0.158686 0.189739 0.535827 0.992115
--0.167827 0.106506 0.282645 0.535827 0.982287
--0.0901382 0.0572035 0.37322 0.535827 0.968583
--0.0183783 0.0116632 0.460734 0.535827 0.951057
-0.0461531 -0.0292897 0.54449 0.535827 0.929777
-0.102273 -0.0649048 0.62384 0.535827 0.904827
-0.148937 -0.0945186 0.698185 0.535827 0.876307
-0.185253 -0.117565 0.76699 0.535827 0.844328
-0.210496 -0.133585 0.829783 0.535827 0.809017
-0.224125 -0.142234 0.886164 0.535827 0.770513
-0.225787 -0.143289 0.935807 0.535827 0.728969
-0.215323 -0.136648 0.978465 0.535827 0.684547
-0.192775 -0.122339 1.01397 0.535827 0.637424
-0.158383 -0.100513 1.04223 0.535827 0.587785
-0.112582 -0.071447 1.06324 0.535827 0.535827
-0.0559966 -0.0355366 1.07707 0.535827 0.481754
--0.0105707 0.00670838 1.08387 0.535827 0.42578
--0.0861493 0.0546721 1.08384 0.535827 0.368125
--0.169617 0.107642 1.07728 0.535827 0.309017
--0.259716 0.164821 1.06453 0.535827 0.24869
--0.355075 0.225338 1.04599 0.535827 0.187382
--0.454228 0.288262 1.0221 0.535827 0.125334
--0.555638 0.352619 0.993366 0.535827 0.0627908
--0.657723 0.417404 0.960294 0.535827 3.26795e-07
--0.758879 0.4816 0.923432 0.535827 -0.0627902
--0.857504 0.544189 0.883339 0.535827 -0.125333
--0.952027 0.604176 0.840581 0.535827 -0.187381
--1.04093 0.660595 0.795719 0.535827 -0.24869
--1.12277 0.712534 0.749307 0.535827 -0.309017
--1.19621 0.759141 0.701876 0.535827 -0.368124
--1.26004 0.799646 0.653933 0.535827 -0.425779
--1.31317 0.833364 0.605952 0.535827 -0.481753
--1.35469 0.859713 0.558364 0.535827 -0.535826
--1.38385 0.878222 0.511558 0.535827 -0.587785
--1.40011 0.888536 0.46587 0.535827 -0.637424
--1.40308 0.890424 0.421583 0.535827 -0.684547
--1.39262 0.883784 0.378926 0.535827 -0.728968
--1.36876 0.86864 0.338065 0.535827 -0.770513
--1.33174 0.84515 0.29911 0.535827 -0.809017
--1.28202 0.813595 0.262112 0.535827 -0.844328
--1.22023 0.774382 0.227065 0.535827 -0.876306
--1.1472 0.728033 0.193907 0.535827 -0.904827
--1.06391 0.67518 0.162525 0.535827 -0.929776
--0.971535 0.616555 0.13276 0.535827 -0.951056
--0.871353 0.552978 0.10441 0.535827 -0.968583
--0.764781 0.485345 0.0772378 0.535827 -0.982287
--0.653327 0.414614 0.0509746 0.535827 -0.992115
--0.538576 0.341791 0.0253307 0.535827 -0.998027
--0.422165 0.267914 2.62946e-07 0.535827 -1
--0.305754 0.194037 -0.0253302 0.535827 -0.998027
--0.191003 0.121214 -0.0509741 0.535827 -0.992115
--0.0795492 0.0504835 -0.0772372 0.535827 -0.982287
-0.0270235 -0.0171496 -0.10441 0.535827 -0.968583
-0.127205 -0.0807268 -0.13276 0.535827 -0.951057
-0.219583 -0.139352 -0.162525 0.535827 -0.929777
-0.302866 -0.192205 -0.193906 0.535827 -0.904827
-0.3759 -0.238554 -0.227064 0.535827 -0.876307
-0.437691 -0.277767 -0.262112 0.535827 -0.844328
-0.487413 -0.309322 -0.299109 0.535827 -0.809017
-0.524428 -0.332813 -0.338064 0.535827 -0.770514
-0.54829 -0.347956 -0.378925 0.535827 -0.728969
-0.558755 -0.354597 -0.421583 0.535827 -0.684548
-0.555779 -0.352709 -0.465869 0.535827 -0.637425
-0.539528 -0.342395 -0.511557 0.535827 -0.587786
-0.510363 -0.323886 -0.558363 0.535827 -0.535828
-0.468843 -0.297537 -0.605951 0.535827 -0.481754
-0.415712 -0.263819 -0.653932 0.535827 -0.42578
-0.351888 -0.223315 -0.701875 0.535827 -0.368125
-0.278446 -0.176707 -0.749306 0.535827 -0.309018
-0.196604 -0.124769 -0.795718 0.535827 -0.248691
-0.107702 -0.0683496 -0.84058 0.535827 -0.187382
-0.0131787 -0.00836345 -0.883338 0.535827 -0.125334
--0.0854465 0.0542261 -0.923431 0.535827 -0.0627915
--0.186602 0.118421 -0.960293 0.535827 -9.80385e-07
--0.288687 0.183207 -0.993365 0.535827 0.0627895
--0.390098 0.247564 -1.0221 0.535827 0.125332
--0.489251 0.310488 -1.04599 0.535827 0.18738
--0.58461 0.371005 -1.06453 0.535827 0.248689
--0.674709 0.428184 -1.07728 0.535827 0.309016
--0.758177 0.481154 -1.08384 0.535827 0.368124
--0.833755 0.529118 -1.08387 0.535827 0.425778
--0.900323 0.571363 -1.07707 0.535827 0.481753
--0.956909 0.607274 -1.06324 0.535827 0.535826
--1.00271 0.63634 -1.04223 0.535827 0.587784
--1.0371 0.658166 -1.01397 0.535827 0.637423
--1.05965 0.672475 -0.978465 0.535827 0.684546
--1.07011 0.679116 -0.935808 0.535827 0.728968
--1.06845 0.678062 -0.886165 0.535827 0.770513
--1.05482 0.669413 -0.829784 0.535827 0.809016
--1.02958 0.653393 -0.766991 0.535827 0.844327
--0.993266 0.630346 -0.698187 0.535827 0.876306
--0.946602 0.600733 -0.623841 0.535827 0.904827
--0.890482 0.565118 -0.544492 0.535827 0.929776
--0.825951 0.524165 -0.460736 0.535827 0.951056
--0.754191 0.478625 -0.373222 0.535827 0.968583
--0.676502 0.429322 -0.282647 0.535827 0.982287
--0.59428 0.377142 -0.189741 0.535827 0.992115
--0.508995 0.323019 -0.0952662 0.535827 0.998027
--0.438153 0.240877 0 0.481754 1
--0.345457 0.189917 0.091987 0.481754 0.998027
--0.254385 0.13985 0.183242 0.481754 0.992115
--0.166534 0.0915529 0.273043 0.481754 0.982287
--0.0834492 0.0458766 0.360684 0.481754 0.968583
--0.00659921 0.00362795 0.445485 0.481754 0.951057
-0.0626486 -0.0344414 0.526799 0.481754 0.929777
-0.12305 -0.0676474 0.604022 0.481754 0.904827
-0.173504 -0.0953846 0.676594 0.481754 0.876307
-0.21307 -0.117136 0.744014 0.481754 0.844328
-0.240985 -0.132483 0.805837 0.481754 0.809017
-0.256675 -0.141109 0.861683 0.481754 0.770513
-0.259765 -0.142807 0.91124 0.481754 0.728969
-0.250084 -0.137485 0.954266 0.481754 0.684547
-0.227671 -0.125164 0.990591 0.481754 0.637424
-0.192772 -0.105978 1.02012 0.481754 0.587785
-0.145839 -0.0801756 1.04282 0.481754 0.535827
-0.0875195 -0.0481143 1.05875 0.481754 0.481754
-0.018652 -0.0102541 1.06802 0.481754 0.42578
--0.0597511 0.0328485 1.07081 0.481754 0.368125
--0.146518 0.0805489 1.06735 0.481754 0.309017
--0.240334 0.132125 1.05796 0.481754 0.24869
--0.339766 0.186788 1.04298 0.481754 0.187382
--0.443281 0.243696 1.02279 0.481754 0.125334
--0.549272 0.301965 0.997841 0.481754 0.0627908
--0.656081 0.360684 0.968583 0.481754 3.26795e-07
--0.762031 0.418931 0.935503 0.481754 -0.0627902
--0.865445 0.475783 0.899099 0.481754 -0.125333
--0.964676 0.530336 0.859878 0.481754 -0.187381
--1.05814 0.581716 0.818346 0.481754 -0.24869
--1.14431 0.629092 0.775001 0.481754 -0.309017
--1.2218 0.671694 0.730326 0.481754 -0.368124
--1.28933 0.708818 0.684781 0.481754 -0.425779
--1.34577 0.739844 0.6388 0.481754 -0.481753
--1.39015 0.764243 0.592781 0.481754 -0.535826
--1.42169 0.781584 0.547082 0.481754 -0.587785
--1.43981 0.791544 0.502021 0.481754 -0.637424
--1.44412 0.793911 0.457868 0.481754 -0.684547
--1.43444 0.788589 0.414842 0.481754 -0.728968
--1.41081 0.775599 0.373113 0.481754 -0.770513
--1.37348 0.755079 0.332801 0.481754 -0.809017
--1.32292 0.727283 0.293972 0.481754 -0.844328
--1.25979 0.692575 0.256643 0.481754 -0.876306
--1.18494 0.651425 0.220784 0.481754 -0.904827
--1.09941 0.604404 0.186319 0.481754 -0.929776
--1.0044 0.552172 0.153133 0.481754 -0.951056
--0.901252 0.495468 0.12107 0.481754 -0.968583
--0.791445 0.435101 0.0899457 0.481754 -0.982287
--0.67655 0.371937 0.0595492 0.481754 -0.992115
--0.558218 0.306883 0.029649 0.481754 -0.998027
--0.438154 0.240878 3.07973e-07 0.481754 -1
--0.318091 0.174872 -0.0296484 0.481754 -0.998027
--0.199759 0.109819 -0.0595486 0.481754 -0.992115
--0.0848635 0.0466542 -0.0899451 0.481754 -0.982287
-0.024943 -0.0137126 -0.121069 0.481754 -0.968583
-0.128087 -0.0704166 -0.153132 0.481754 -0.951057
-0.223098 -0.122649 -0.186319 0.481754 -0.929777
-0.308628 -0.16967 -0.220783 0.481754 -0.904827
-0.383479 -0.21082 -0.256642 0.481754 -0.876307
-0.446613 -0.245528 -0.293971 0.481754 -0.844328
-0.497175 -0.273325 -0.3328 0.481754 -0.809017
-0.534501 -0.293845 -0.373112 0.481754 -0.770514
-0.55813 -0.306835 -0.414841 0.481754 -0.728969
-0.567811 -0.312157 -0.457867 0.481754 -0.684548
-0.563505 -0.30979 -0.50202 0.481754 -0.637425
-0.545389 -0.29983 -0.547081 0.481754 -0.587786
-0.513846 -0.282489 -0.59278 0.481754 -0.535828
-0.469465 -0.258091 -0.638799 0.481754 -0.481754
-0.413028 -0.227065 -0.68478 0.481754 -0.42578
-0.3455 -0.18994 -0.730325 0.481754 -0.368125
-0.268008 -0.147339 -0.775 0.481754 -0.309018
-0.181831 -0.0999626 -0.818345 0.481754 -0.248691
-0.088372 -0.048583 -0.859877 0.481754 -0.187382
--0.0108594 0.00597002 -0.899098 0.481754 -0.125334
--0.114273 0.0628222 -0.935502 0.481754 -0.0627915
--0.220223 0.121069 -0.968583 0.481754 -9.80385e-07
--0.327033 0.179788 -0.997841 0.481754 0.0627895
--0.433023 0.238057 -1.02279 0.481754 0.125332
--0.536538 0.294965 -1.04298 0.481754 0.18738
--0.63597 0.349628 -1.05796 0.481754 0.248689
--0.729787 0.401204 -1.06735 0.481754 0.309016
--0.816554 0.448905 -1.07081 0.481754 0.368124
--0.894957 0.492007 -1.06802 0.481754 0.425778
--0.963825 0.529868 -1.05875 0.481754 0.481753
--1.02214 0.561929 -1.04282 0.481754 0.535826
--1.06908 0.587731 -1.02012 0.481754 0.587784
--1.10398 0.606917 -0.990592 0.481754 0.637423
--1.12639 0.619239 -0.954267 0.481754 0.684546
--1.13607 0.624561 -0.911241 0.481754 0.728968
--1.13298 0.622863 -0.861684 0.481754 0.770513
--1.11729 0.614237 -0.805838 0.481754 0.809016
--1.08938 0.598891 -0.744016 0.481754 0.844327
--1.04981 0.577139 -0.676596 0.481754 0.876306
--0.999358 0.549402 -0.604023 0.481754 0.904827
--0.938956 0.516196 -0.526801 0.481754 0.929776
--0.869709 0.478127 -0.445487 0.481754 0.951056
--0.792859 0.435878 -0.360686 0.481754 0.968583
--0.709774 0.390202 -0.273045 0.481754 0.982287
--0.621923 0.341906 -0.183244 0.481754 0.992115
--0.530851 0.291838 -0.0919889 0.481754 0.998027
--0.452413 0.21289 0 0.42578 1
--0.354133 0.166643 0.0886189 0.42578 0.998027
--0.25755 0.121194 0.176565 0.42578 0.992115
--0.164332 0.0773289 0.263172 0.42578 0.982287
--0.0760948 0.0358075 0.347792 0.42578 0.968583
-0.00562739 -0.00264805 0.429796 0.42578 0.951057
-0.0794048 -0.0373651 0.508588 0.42578 0.929777
-0.143936 -0.0677312 0.583607 0.42578 0.904827
-0.198069 -0.0932041 0.654336 0.42578 0.876307
-0.240818 -0.113321 0.720304 0.42578 0.844328
-0.271385 -0.127704 0.781096 0.42578 0.809017
-0.289165 -0.136071 0.836352 0.42578 0.770513
-0.293762 -0.138234 0.885774 0.42578 0.728969
-0.284994 -0.134108 0.929126 0.42578 0.684547
-0.262896 -0.12371 0.966236 0.42578 0.637424
-0.227718 -0.107156 0.997 0.42578 0.587785
-0.179926 -0.0846669 1.02138 0.42578 0.535827
-0.120191 -0.0565578 1.03939 0.42578 0.481754
-0.0493808 -0.0232369 1.05112 0.42578 0.42578
--0.0314548 0.0148015 1.05671 0.42578 0.368125
--0.121099 0.0569851 1.05637 0.42578 0.309017
--0.218188 0.102672 1.05035 0.42578 0.24869
--0.321232 0.15116 1.03893 0.42578 0.187382
--0.428637 0.201701 1.02247 0.42578 0.125334
--0.538732 0.253508 1.00133 0.42578 0.0627908
--0.649795 0.305771 0.975917 0.42578 3.26795e-07
--0.760079 0.357667 0.94665 0.42578 -0.0627902
--0.867841 0.408375 0.913971 0.42578 -0.125333
--0.971366 0.457091 0.878327 0.42578 -0.187381
--1.069 0.503034 0.840165 0.42578 -0.24869
--1.15917 0.545465 0.799931 0.42578 -0.309017
--1.24041 0.583695 0.758055 0.42578 -0.368124
--1.3114 0.617099 0.714954 0.42578 -0.425779
--1.37095 0.645122 0.671018 0.42578 -0.481753
--1.41806 0.667291 0.626612 0.42578 -0.535826
--1.45192 0.683221 0.582067 0.42578 -0.587785
--1.47189 0.692621 0.537677 0.42578 -0.637424
--1.47759 0.695303 0.4937 0.42578 -0.684547
--1.46882 0.691177 0.450348 0.42578 -0.728968
--1.44562 0.68026 0.407793 0.42578 -0.770513
--1.40825 0.662673 0.366163 0.42578 -0.809017
--1.35717 0.638637 0.325541 0.42578 -0.844328
--1.29308 0.608476 0.285967 0.42578 -0.876306
--1.21685 0.572605 0.247443 0.42578 -0.904827
--1.12955 0.531529 0.20993 0.42578 -0.929776
--1.03244 0.485832 0.173354 0.42578 -0.951056
--0.926907 0.43617 0.13761 0.42578 -0.968583
--0.814467 0.38326 0.102565 0.42578 -0.982287
--0.696755 0.327869 0.0680651 0.42578 -0.992115
--0.575482 0.270802 0.033938 0.42578 -0.998027
--0.452415 0.212891 3.52696e-07 0.42578 -1
--0.329347 0.154979 -0.0339373 0.42578 -0.998027
--0.208074 0.0979124 -0.0680643 0.42578 -0.992115
--0.0903619 0.0425211 -0.102564 0.42578 -0.982287
-0.0220779 -0.0103891 -0.137609 0.42578 -0.968583
-0.127615 -0.0600512 -0.173353 0.42578 -0.951057
-0.224726 -0.105748 -0.209929 0.42578 -0.929777
-0.312017 -0.146824 -0.247442 0.42578 -0.904827
-0.388247 -0.182695 -0.285966 0.42578 -0.876307
-0.452343 -0.212857 -0.32554 0.42578 -0.844328
-0.503421 -0.236892 -0.366162 0.42578 -0.809017
-0.540797 -0.25448 -0.407793 0.42578 -0.770514
-0.563997 -0.265397 -0.450347 0.42578 -0.728969
-0.572765 -0.269523 -0.493699 0.42578 -0.684548
-0.567067 -0.266842 -0.537677 0.42578 -0.637425
-0.547089 -0.257441 -0.582066 0.42578 -0.587786
-0.513237 -0.241511 -0.626611 0.42578 -0.535828
-0.466126 -0.219343 -0.671017 0.42578 -0.481754
-0.406575 -0.19132 -0.714953 0.42578 -0.42578
-0.335588 -0.157916 -0.758054 0.42578 -0.368125
-0.254345 -0.119686 -0.79993 0.42578 -0.309018
-0.164175 -0.0772548 -0.840164 0.42578 -0.248691
-0.0665411 -0.0313119 -0.878326 0.42578 -0.187382
--0.0369841 0.0174034 -0.913971 0.42578 -0.125334
--0.144745 0.0681121 -0.94665 0.42578 -0.0627915
--0.25503 0.120008 -0.975916 0.42578 -9.80385e-07
--0.366093 0.17227 -1.00133 0.42578 0.0627895
--0.476188 0.224077 -1.02247 0.42578 0.125332
--0.583593 0.274618 -1.03893 0.42578 0.18738
--0.686636 0.323107 -1.05035 0.42578 0.248689
--0.783726 0.368794 -1.05637 0.42578 0.309016
--0.87337 0.410977 -1.05671 0.42578 0.368124
--0.954206 0.449016 -1.05112 0.42578 0.425778
--1.02502 0.482337 -1.03939 0.42578 0.481753
--1.08475 0.510446 -1.02138 0.42578 0.535826
--1.13254 0.532936 -0.997 0.42578 0.587784
--1.16772 0.549489 -0.966237 0.42578 0.637423
--1.18982 0.559888 -0.929126 0.42578 0.684546
--1.19859 0.564014 -0.885775 0.42578 0.728968
--1.19399 0.561851 -0.836353 0.42578 0.770513
--1.17621 0.553484 -0.781097 0.42578 0.809016
--1.14565 0.539101 -0.720306 0.42578 0.844327
--1.1029 0.518984 -0.654337 0.42578 0.876306
--1.04876 0.493512 -0.583609 0.42578 0.904827
--0.984233 0.463146 -0.50859 0.42578 0.929776
--0.910456 0.428429 -0.429798 0.42578 0.951056
--0.828734 0.389973 -0.347794 0.42578 0.968583
--0.740497 0.348452 -0.263174 0.42578 0.982287
--0.647279 0.304587 -0.176567 0.42578 0.992115
--0.550695 0.259138 -0.0886208 0.42578 0.998027
--0.464888 0.184063 0 0.368125 1
--0.36136 0.143073 0.0851634 0.368125 0.998027
--0.259594 0.102781 0.169713 0.368125 0.992115
--0.161323 0.0638726 0.253042 0.368125 0.982287
--0.0682265 0.0270128 0.334557 0.368125 0.968583
-0.0181025 -0.0071673 0.413683 0.368125 0.951057
-0.0961779 -0.0380796 0.489875 0.368125 0.929777
-0.164647 -0.0651883 0.562617 0.368125 0.904827
-0.22231 -0.0880189 0.631432 0.368125 0.876307
-0.268144 -0.106166 0.695884 0.368125 0.844328
-0.301313 -0.119298 0.755584 0.368125 0.809017
-0.321188 -0.127168 0.810196 0.368125 0.770513
-0.327353 -0.129609 0.859434 0.368125 0.728969
-0.319614 -0.126544 0.903068 0.368125 0.684547
-0.298001 -0.117987 0.940928 0.368125 0.637424
-0.26277 -0.104038 0.972897 0.368125 0.587785
-0.214396 -0.0848855 0.99892 0.368125 0.535827
-0.15357 -0.0608029 1.019 0.368125 0.481754
-0.0811859 -0.0321438 1.03318 0.368125 0.42578
--0.00167432 0.000662909 1.04158 0.368125 0.368125
--0.093755 0.0371203 1.04435 0.368125 0.309017
--0.193648 0.0766708 1.0417 0.368125 0.24869
--0.299814 0.118705 1.03387 0.368125 0.187382
--0.410606 0.162571 1.02114 0.368125 0.125334
--0.524299 0.207585 1.00383 0.368125 0.0627908
--0.639111 0.253042 0.982287 0.368125 3.26795e-07
--0.753234 0.298227 0.956864 0.368125 -0.0627902
--0.864867 0.342426 0.927942 0.368125 -0.125333
--0.972235 0.384936 0.895909 0.368125 -0.187381
--1.07363 0.425079 0.861155 0.368125 -0.24869
--1.16741 0.462212 0.824071 0.368125 -0.309017
--1.25208 0.495734 0.785036 0.368125 -0.368124
--1.32624 0.525098 0.74442 0.368125 -0.425779
--1.38869 0.549823 0.702574 0.368125 -0.481753
--1.43837 0.569494 0.659825 0.368125 -0.535826
--1.47444 0.583775 0.616477 0.368125 -0.587785
--1.49626 0.592412 0.572803 0.368125 -0.637424
--1.5034 0.595238 0.529045 0.368125 -0.684547
--1.49566 0.592174 0.48541 0.368125 -0.728968
--1.47307 0.583232 0.442071 0.368125 -0.770513
--1.4359 0.568514 0.399164 0.368125 -0.809017
--1.38463 0.548214 0.356788 0.368125 -0.844328
--1.31995 0.522607 0.315009 0.368125 -0.876306
--1.24278 0.492054 0.273858 0.368125 -0.904827
--1.15423 0.456991 0.233333 0.368125 -0.929776
--1.05556 0.417925 0.193404 0.368125 -0.951056
--0.948206 0.375422 0.154013 0.368125 -0.968583
--0.833746 0.330104 0.115083 0.368125 -0.982287
--0.713856 0.282636 0.0765137 0.368125 -0.992115
--0.590297 0.233715 0.0381936 0.368125 -0.998027
--0.464889 0.184063 3.97071e-07 0.368125 -1
--0.339482 0.134411 -0.0381928 0.368125 -0.998027
--0.215923 0.0854902 -0.0765129 0.368125 -0.992115
--0.0960325 0.038022 -0.115082 0.368125 -0.982287
-0.0184273 -0.00729588 -0.154013 0.368125 -0.968583
-0.125777 -0.0497988 -0.193403 0.368125 -0.951057
-0.224448 -0.0888656 -0.233332 0.368125 -0.929777
-0.313007 -0.123928 -0.273857 0.368125 -0.904827
-0.390174 -0.154481 -0.315008 0.368125 -0.876307
-0.45485 -0.180088 -0.356787 0.368125 -0.844328
-0.506124 -0.200389 -0.399163 0.368125 -0.809017
-0.543296 -0.215106 -0.44207 0.368125 -0.770514
-0.565881 -0.224048 -0.485409 0.368125 -0.728969
-0.57362 -0.227113 -0.529044 0.368125 -0.684548
-0.566483 -0.224287 -0.572802 0.368125 -0.637425
-0.544668 -0.21565 -0.616476 0.368125 -0.587786
-0.508599 -0.201369 -0.659824 0.368125 -0.535828
-0.458916 -0.181698 -0.702573 0.368125 -0.481754
-0.39647 -0.156974 -0.744419 0.368125 -0.42578
-0.322303 -0.127609 -0.785035 0.368125 -0.368125
-0.237638 -0.0940876 -0.82407 0.368125 -0.309018
-0.143852 -0.0569551 -0.861155 0.368125 -0.248691
-0.0424613 -0.0168116 -0.895908 0.368125 -0.187382
--0.064907 0.0256985 -0.927941 0.368125 -0.125334
--0.176539 0.069897 -0.956863 0.368125 -0.0627915
--0.290663 0.115082 -0.982287 0.368125 -9.80385e-07
--0.405475 0.160539 -1.00383 0.368125 0.0627895
--0.519167 0.205553 -1.02114 0.368125 0.125332
--0.62996 0.249419 -1.03387 0.368125 0.18738
--0.736126 0.291453 -1.0417 0.368125 0.248689
--0.836019 0.331004 -1.04435 0.368125 0.309016
--0.9281 0.367461 -1.04158 0.368125 0.368124
--1.01096 0.400268 -1.03318 0.368125 0.425778
--1.08335 0.428927 -1.019 0.368125 0.481753
--1.14417 0.45301 -0.998921 0.368125 0.535826
--1.19254 0.472163 -0.972898 0.368125 0.587784
--1.22778 0.486112 -0.940928 0.368125 0.637423
--1.24939 0.494669 -0.903069 0.368125 0.684546
--1.25713 0.497734 -0.859435 0.368125 0.728968
--1.25096 0.495293 -0.810197 0.368125 0.770513
--1.23109 0.487424 -0.755585 0.368125 0.809016
--1.19792 0.474291 -0.695885 0.368125 0.844327
--1.15209 0.456144 -0.631433 0.368125 0.876306
--1.09442 0.433314 -0.562619 0.368125 0.904827
--1.02596 0.406205 -0.489877 0.368125 0.929776
--0.94788 0.375293 -0.413685 0.368125 0.951056
--0.861552 0.341113 -0.334558 0.368125 0.968583
--0.768455 0.304253 -0.253044 0.368125 0.982287
--0.670185 0.265345 -0.169715 0.368125 0.992115
--0.568418 0.225053 -0.0851652 0.368125 0.998027
--0.475528 0.154509 0 0.309018 1
--0.367139 0.119291 0.0816239 0.309018 0.998027
--0.260569 0.0846641 0.162694 0.309018 0.992115
--0.15761 0.0512106 0.242662 0.309018 0.982287
--0.0599939 0.0194932 0.320991 0.309018 0.968583
-0.0306312 -0.00995269 0.397162 0.309018 0.951057
-0.11273 -0.0366283 0.470679 0.309018 0.929777
-0.184904 -0.0600792 0.541072 0.309018 0.904827
-0.245914 -0.0799026 0.607905 0.309018 0.876307
-0.294699 -0.0957537 0.670776 0.309018 0.844328
-0.330394 -0.107352 0.729327 0.309018 0.809017
-0.352346 -0.114484 0.78324 0.309018 0.770513
-0.36012 -0.11701 0.832245 0.309018 0.728969
-0.353511 -0.114863 0.87612 0.309018 0.684547
-0.332545 -0.108051 0.914691 0.309018 0.637424
-0.29748 -0.0966573 0.947835 0.309018 0.587785
-0.248801 -0.0808406 0.975479 0.309018 0.535827
-0.187214 -0.0608296 0.9976 0.309018 0.481754
-0.113633 -0.0369217 1.01422 0.309018 0.42578
-0.0291691 -0.00947762 1.02542 0.309018 0.368125
--0.0648899 0.021084 1.0313 0.309018 0.309017
--0.167098 0.0542935 1.03202 0.309018 0.24869
--0.275874 0.089637 1.02778 0.309018 0.187382
--0.389527 0.126565 1.0188 0.309018 0.125334
--0.506281 0.164501 1.00535 0.309018 0.0627908
--0.624306 0.20285 0.987688 0.309018 3.26795e-07
--0.741744 0.241008 0.966133 0.309018 -0.0627902
--0.856739 0.278372 0.940996 0.309018 -0.125333
--0.967467 0.31435 0.912606 0.309018 -0.187381
--1.07217 0.348368 0.881295 0.309018 -0.24869
--1.16916 0.379883 0.847398 0.309018 -0.309017
--1.25689 0.408388 0.811243 0.309018 -0.368124
--1.33393 0.43342 0.773152 0.309018 -0.425779
--1.39902 0.45457 0.733436 0.309018 -0.481753
--1.45109 0.471489 0.692387 0.309018 -0.535826
--1.48926 0.483892 0.650279 0.309018 -0.587785
--1.51287 0.491563 0.607363 0.309018 -0.637424
--1.52148 0.494359 0.563868 0.309018 -0.684547
--1.51487 0.492211 0.519993 0.309018 -0.728968
--1.49307 0.485129 0.475913 0.309018 -0.770513
--1.45635 0.473198 0.431771 0.309018 -0.809017
--1.40519 0.456576 0.387684 0.309018 -0.844328
--1.34032 0.435497 0.343741 0.309018 -0.876306
--1.26266 0.410262 0.300003 0.309018 -0.904827
--1.17333 0.381237 0.256506 0.309018 -0.929776
--1.07364 0.348847 0.213263 0.309018 -0.951056
--0.965063 0.313569 0.170265 0.309018 -0.968583
--0.849204 0.275924 0.127487 0.309018 -0.982287
--0.727782 0.236471 0.0848869 0.309018 -0.992115
--0.602603 0.195798 0.0424114 0.309018 -0.998027
--0.475529 0.154509 4.41055e-07 0.309018 -1
--0.348456 0.113221 -0.0424105 0.309018 -0.998027
--0.223276 0.0725471 -0.084886 0.309018 -0.992115
--0.101854 0.0330946 -0.127486 0.309018 -0.982287
-0.0140042 -0.00455025 -0.170265 0.309018 -0.968583
-0.12258 -0.0398288 -0.213262 0.309018 -0.951057
-0.222267 -0.0722191 -0.256505 0.309018 -0.929777
-0.311597 -0.101244 -0.300002 0.309018 -0.904827
-0.389263 -0.126479 -0.34374 0.309018 -0.876307
-0.454137 -0.147558 -0.387683 0.309018 -0.844328
-0.505293 -0.16418 -0.43177 0.309018 -0.809017
-0.542015 -0.176112 -0.475912 0.309018 -0.770514
-0.563811 -0.183194 -0.519993 0.309018 -0.728969
-0.57042 -0.185341 -0.563867 0.309018 -0.684548
-0.561816 -0.182546 -0.607362 0.309018 -0.637425
-0.538209 -0.174875 -0.650278 0.309018 -0.587786
-0.500037 -0.162472 -0.692386 0.309018 -0.535828
-0.447965 -0.145553 -0.733435 0.309018 -0.481754
-0.382871 -0.124403 -0.773151 0.309018 -0.42578
-0.305831 -0.0993707 -0.811242 0.309018 -0.368125
-0.218104 -0.0708665 -0.847397 0.309018 -0.309018
-0.121111 -0.0393516 -0.881295 0.309018 -0.248691
-0.0164132 -0.00533299 -0.912606 0.309018 -0.187382
--0.0943152 0.0306449 -0.940996 0.309018 -0.125334
--0.20931 0.0680092 -0.966132 0.309018 -0.0627915
--0.326748 0.106167 -0.987688 0.309018 -9.80385e-07
--0.444773 0.144516 -1.00535 0.309018 0.0627895
--0.561527 0.182452 -1.0188 0.309018 0.125332
--0.67518 0.21938 -1.02778 0.309018 0.18738
--0.783956 0.254723 -1.03202 0.309018 0.248689
--0.886164 0.287933 -1.0313 0.309018 0.309016
--0.980224 0.318495 -1.02542 0.309018 0.368124
--1.06469 0.345939 -1.01422 0.309018 0.425778
--1.13827 0.369847 -0.9976 0.309018 0.481753
--1.19986 0.389858 -0.97548 0.309018 0.535826
--1.24854 0.405675 -0.947835 0.309018 0.587784
--1.2836 0.417068 -0.914691 0.309018 0.637423
--1.30457 0.42388 -0.876121 0.309018 0.684546
--1.31118 0.426028 -0.832246 0.309018 0.728968
--1.3034 0.423502 -0.783241 0.309018 0.770513
--1.28145 0.41637 -0.729328 0.309018 0.809016
--1.24576 0.404772 -0.670777 0.309018 0.844327
--1.19697 0.388921 -0.607906 0.309018 0.876306
--1.13596 0.369097 -0.541074 0.309018 0.904827
--1.06379 0.345646 -0.470681 0.309018 0.929776
--0.981689 0.318971 -0.397164 0.309018 0.951056
--0.891064 0.289525 -0.320993 0.309018 0.968583
--0.793449 0.257808 -0.242663 0.309018 0.982287
--0.69049 0.224354 -0.162696 0.309018 0.992115
--0.58392 0.189727 -0.0816256 0.309018 0.998027
--0.484292 0.124345 0 0.24869 1
--0.371476 0.095379 0.0780038 0.24869 0.998027
--0.260529 0.0668927 0.155514 0.24869 0.992115
--0.153291 0.0393586 0.232042 0.24869 0.982287
--0.0515425 0.0132339 0.307109 0.24869 0.968583
-0.0430245 -0.0110469 0.380249 0.24869 0.951057
-0.128832 -0.0330785 0.451018 0.24869 0.929777
-0.204442 -0.0524918 0.518993 0.24869 0.904827
-0.268579 -0.0689594 0.583777 0.24869 0.876307
-0.320151 -0.0822009 0.645007 0.24869 0.844328
-0.358267 -0.0919876 0.70235 0.24869 0.809017
-0.382252 -0.0981459 0.755511 0.24869 0.770513
-0.391656 -0.100561 0.804235 0.24869 0.728969
-0.386264 -0.099176 0.848307 0.24869 0.684547
-0.366096 -0.0939977 0.887551 0.24869 0.637424
-0.331411 -0.085092 0.921837 0.24869 0.587785
-0.2827 -0.0725852 0.951075 0.24869 0.535827
-0.220682 -0.0566616 0.975219 0.24869 0.481754
-0.146288 -0.0375604 0.994263 0.24869 0.42578
-0.0606502 -0.0155724 1.00824 0.24869 0.368125
--0.0349159 0.00896491 1.01723 0.24869 0.309017
--0.138934 0.0356723 1.02133 0.24869 0.24869
--0.249789 0.0641351 1.02068 0.24869 0.187382
--0.365752 0.0939094 1.01546 0.24869 0.125334
--0.485009 0.124529 1.00587 0.24869 0.0627908
--0.605687 0.155514 0.992115 0.24869 3.26795e-07
--0.725886 0.186376 0.974449 0.24869 -0.0627902
--0.843707 0.216628 0.953122 0.24869 -0.125333
--0.957284 0.245789 0.928403 0.24869 -0.187381
--1.06481 0.273398 0.900566 0.24869 -0.24869
--1.16457 0.299013 0.869888 0.24869 -0.309017
--1.25497 0.322223 0.836648 0.24869 -0.368124
--1.33455 0.342656 0.801121 0.24869 -0.425779
--1.40202 0.35998 0.763574 0.24869 -0.481753
--1.45628 0.37391 0.724265 0.24869 -0.535826
--1.49642 0.384215 0.683439 0.24869 -0.587785
--1.52175 0.390721 0.641324 0.24869 -0.637424
--1.53183 0.393309 0.598135 0.24869 -0.684547
--1.52644 0.391925 0.554063 0.24869 -0.728968
--1.5056 0.386573 0.509285 0.24869 -0.770513
--1.46956 0.37732 0.463951 0.24869 -0.809017
--1.41883 0.364294 0.418197 0.24869 -0.844328
--1.35413 0.347682 0.372133 0.24869 -0.876306
--1.2764 0.327725 0.325851 0.24869 -0.904827
--1.18679 0.304718 0.279425 0.24869 -0.929776
--1.08664 0.279001 0.232912 0.24869 -0.951056
--0.977422 0.25096 0.186349 0.24869 -0.968583
--0.860788 0.221013 0.139766 0.24869 -0.982287
--0.738485 0.189611 0.0931762 0.24869 -0.992115
--0.612354 0.157226 0.0465874 0.24869 -0.998027
--0.484293 0.124346 4.84603e-07 0.24869 -1
--0.356232 0.091465 -0.0465864 0.24869 -0.998027
--0.230101 0.0590799 -0.0931753 0.24869 -0.992115
--0.107798 0.0276779 -0.139765 0.24869 -0.982287
-0.00883614 -0.00226874 -0.186348 0.24869 -0.968583
-0.11805 -0.0303102 -0.232911 0.24869 -0.951057
-0.218209 -0.0560266 -0.279425 0.24869 -0.929777
-0.307817 -0.0790341 -0.32585 0.24869 -0.904827
-0.385544 -0.098991 -0.372132 0.24869 -0.876307
-0.450244 -0.115603 -0.418196 0.24869 -0.844328
-0.500976 -0.128629 -0.463951 0.24869 -0.809017
-0.537013 -0.137882 -0.509284 0.24869 -0.770514
-0.557859 -0.143234 -0.554062 0.24869 -0.728969
-0.563252 -0.144619 -0.598134 0.24869 -0.684548
-0.55317 -0.14203 -0.641323 0.24869 -0.637425
-0.527834 -0.135525 -0.683438 0.24869 -0.587786
-0.487697 -0.125219 -0.724264 0.24869 -0.535828
-0.433442 -0.111289 -0.763574 0.24869 -0.481754
-0.365973 -0.0939661 -0.801121 0.24869 -0.42578
-0.286393 -0.0735335 -0.836648 0.24869 -0.368125
-0.195994 -0.0503228 -0.869887 0.24869 -0.309018
-0.0962311 -0.024708 -0.900565 0.24869 -0.248691
--0.0112966 0.00290047 -0.928403 0.24869 -0.187382
--0.124874 0.0320622 -0.953122 0.24869 -0.125334
--0.242695 0.0623136 -0.974448 0.24869 -0.0627915
--0.362894 0.0931755 -0.992114 0.24869 -9.80385e-07
--0.483572 0.12416 -1.00587 0.24869 0.0627895
--0.602828 0.15478 -1.01546 0.24869 0.125332
--0.718792 0.184555 -1.02068 0.24869 0.18738
--0.829647 0.213018 -1.02133 0.24869 0.248689
--0.933665 0.239725 -1.01723 0.24869 0.309016
--1.02923 0.264262 -1.00824 0.24869 0.368124
--1.11487 0.28625 -0.994264 0.24869 0.425778
--1.18926 0.305352 -0.97522 0.24869 0.481753
--1.25128 0.321275 -0.951076 0.24869 0.535826
--1.29999 0.333782 -0.921837 0.24869 0.587784
--1.33468 0.342688 -0.887552 0.24869 0.637423
--1.35485 0.347866 -0.848307 0.24869 0.684546
--1.36024 0.349251 -0.804236 0.24869 0.728968
--1.35084 0.346836 -0.755512 0.24869 0.770513
--1.32685 0.340678 -0.702351 0.24869 0.809016
--1.28873 0.330892 -0.645008 0.24869 0.844327
--1.23716 0.31765 -0.583779 0.24869 0.876306
--1.17303 0.301183 -0.518994 0.24869 0.904827
--1.09742 0.281769 -0.45102 0.24869 0.929776
--1.01161 0.259738 -0.380251 0.24869 0.951056
--0.917043 0.235457 -0.30711 0.24869 0.968583
--0.815294 0.209332 -0.232044 0.24869 0.982287
--0.708056 0.181798 -0.155516 0.24869 0.992115
--0.59711 0.153312 -0.0780055 0.24869 0.998027
--0.491144 0.093691 0 0.187382 1
--0.374381 0.0714173 0.0743068 0.187382 0.998027
--0.259529 0.049508 0.148181 0.187382 0.992115
--0.148466 0.0283216 0.221193 0.187382 0.982287
--0.0430127 0.00820514 0.292923 0.187382 0.968583
-0.0551018 -0.0105113 0.362961 0.187382 0.951057
-0.144264 -0.0275199 0.430912 0.187382 0.929777
-0.223003 -0.0425402 0.496401 0.187382 0.904827
-0.290014 -0.0553233 0.559074 0.187382 0.876307
-0.344179 -0.0656559 0.618601 0.187382 0.844328
-0.384585 -0.0733638 0.674679 0.187382 0.809017
-0.410538 -0.0783145 0.727037 0.187382 0.770513
-0.421574 -0.0804198 0.775432 0.187382 0.728969
-0.417467 -0.0796364 0.819656 0.187382 0.684547
-0.398235 -0.0759676 0.859535 0.187382 0.637424
-0.364134 -0.0694625 0.894929 0.187382 0.587785
-0.315661 -0.0602157 0.925733 0.187382 0.535827
-0.253541 -0.0483657 0.951876 0.187382 0.481754
-0.178719 -0.0340926 0.973323 0.187382 0.42578
-0.0923443 -0.0176157 0.990072 0.187382 0.368125
--0.00424895 0.000810532 1.00215 0.187382 0.309017
--0.10956 0.0208998 1.00962 0.187382 0.24869
--0.221948 0.042339 1.01257 0.187382 0.187382
--0.339655 0.0647929 1.01112 0.187382 0.125334
--0.460835 0.0879093 1.00539 0.187382 0.0627908
--0.583585 0.111325 0.995562 0.187382 3.26795e-07
--0.705969 0.134671 0.981803 0.187382 -0.0627902
--0.826056 0.157579 0.964308 0.187382 -0.125333
--0.941946 0.179686 0.943284 0.187382 -0.187381
--1.0518 0.200642 0.918948 0.187382 -0.24869
--1.15387 0.220114 0.89152 0.187382 -0.309017
--1.24653 0.237789 0.861228 0.187382 -0.368124
--1.32829 0.253386 0.8283 0.187382 -0.425779
--1.39784 0.266654 0.792959 0.187382 -0.481753
--1.45405 0.277376 0.755429 0.187382 -0.535826
--1.49599 0.285377 0.715924 0.187382 -0.587785
--1.52298 0.290524 0.674652 0.187382 -0.637424
--1.53453 0.292728 0.631811 0.187382 -0.684547
--1.53042 0.291945 0.587586 0.187382 -0.728968
--1.51067 0.288177 0.542154 0.187382 -0.770513
--1.47554 0.281476 0.495674 0.187382 -0.809017
--1.42553 0.271936 0.448297 0.187382 -0.844328
--1.36137 0.259696 0.400158 0.187382 -0.876306
--1.28401 0.244939 0.351378 0.187382 -0.904827
--1.19461 0.227885 0.302069 0.187382 -0.929776
--1.09452 0.208792 0.25233 0.187382 -0.951056
--0.985254 0.187948 0.202249 0.187382 -0.968583
--0.868466 0.165669 0.151907 0.187382 -0.982287
--0.745932 0.142295 0.101374 0.187382 -0.992115
--0.619516 0.118179 0.0507174 0.187382 -0.998027
--0.491145 0.0936912 5.27672e-07 0.187382 -1
--0.362774 0.069203 -0.0507164 0.187382 -0.998027
--0.236358 0.0450879 -0.101373 0.187382 -0.992115
--0.113824 0.0217131 -0.151905 0.187382 -0.982287
-0.00296473 -0.000565554 -0.202248 0.187382 -0.968583
-0.112233 -0.0214096 -0.252329 0.187382 -0.951057
-0.212323 -0.0405029 -0.302068 0.187382 -0.929777
-0.301721 -0.0575566 -0.351377 0.187382 -0.904827
-0.379081 -0.0723139 -0.400157 0.187382 -0.876307
-0.443244 -0.0845536 -0.448296 0.187382 -0.844328
-0.493256 -0.094094 -0.495673 0.187382 -0.809017
-0.528387 -0.100795 -0.542153 0.187382 -0.770514
-0.548135 -0.104563 -0.587586 0.187382 -0.728969
-0.552242 -0.105346 -0.63181 0.187382 -0.684548
-0.54069 -0.103143 -0.674651 0.187382 -0.637425
-0.513708 -0.0979954 -0.715923 0.187382 -0.587786
-0.471764 -0.089994 -0.755428 0.187382 -0.535828
-0.415556 -0.0792719 -0.792959 0.187382 -0.481754
-0.346007 -0.0660047 -0.828299 0.187382 -0.42578
-0.264245 -0.0504077 -0.861228 0.187382 -0.368125
-0.171587 -0.032732 -0.89152 0.187382 -0.309018
-0.0695157 -0.0132609 -0.918947 0.187382 -0.248691
--0.0403384 0.00769499 -0.943284 0.187382 -0.187382
--0.156228 0.0298022 -0.964307 0.187382 -0.125334
--0.276316 0.0527102 -0.981802 0.187382 -0.0627915
--0.3987 0.0760563 -0.995562 0.187382 -9.80385e-07
--0.521449 0.0994721 -1.00539 0.187382 0.0627895
--0.64263 0.122589 -1.01112 0.187382 0.125332
--0.760337 0.145042 -1.01257 0.187382 0.18738
--0.872725 0.166482 -1.00962 0.187382 0.248689
--0.978036 0.186571 -1.00215 0.187382 0.309016
--1.07463 0.204997 -0.990072 0.187382 0.368124
--1.161 0.221474 -0.973324 0.187382 0.425778
--1.23583 0.235747 -0.951877 0.187382 0.481753
--1.29795 0.247597 -0.925733 0.187382 0.535826
--1.34642 0.256844 -0.89493 0.187382 0.587784
--1.38052 0.263349 -0.859536 0.187382 0.637423
--1.39975 0.267018 -0.819657 0.187382 0.684546
--1.40386 0.267802 -0.775433 0.187382 0.728968
--1.39283 0.265697 -0.727038 0.187382 0.770513
--1.36687 0.260746 -0.67468 0.187382 0.809016
--1.32647 0.253038 -0.618602 0.187382 0.844327
--1.2723 0.242705 -0.559075 0.187382 0.876306
--1.20529 0.229922 -0.496403 0.187382 0.904827
--1.12655 0.214902 -0.430914 0.187382 0.929776
--1.03739 0.197894 -0.362963 0.187382 0.951056
--0.939277 0.179177 -0.292925 0.187382 0.968583
--0.833823 0.159061 -0.221195 0.187382 0.982287
--0.722761 0.137874 -0.148182 0.187382 0.992115
--0.607908 0.115965 -0.0743083 0.187382 0.998027
--0.496057 0.0626669 0 0.125334 1
--0.375869 0.0474836 0.0705364 0.125334 0.998027
--0.257623 0.0325455 0.140701 0.125334 0.992115
--0.143229 0.0180942 0.210126 0.125334 0.982287
--0.034538 0.00436318 0.278449 0.125334 0.968583
-0.0666918 -0.00842517 0.345315 0.125334 0.951057
-0.158819 -0.0200636 0.410381 0.125334 0.929777
-0.240347 -0.0303631 0.47332 0.125334 0.904827
-0.309949 -0.0391558 0.533819 0.125334 0.876307
-0.366484 -0.0462979 0.591584 0.125334 0.844328
-0.409021 -0.0516717 0.646343 0.125334 0.809017
-0.436852 -0.0551876 0.697845 0.125334 0.770513
-0.449501 -0.0567855 0.745863 0.125334 0.728969
-0.446734 -0.0564359 0.790197 0.125334 0.684547
-0.428562 -0.0541402 0.830671 0.125334 0.637424
-0.39524 -0.0499306 0.867138 0.125334 0.587785
-0.347266 -0.0438701 0.899477 0.125334 0.535827
-0.28537 -0.0360508 0.927593 0.125334 0.481754
-0.210505 -0.0265931 0.951423 0.125334 0.42578
-0.123831 -0.0156436 0.970925 0.125334 0.368125
-0.026696 -0.00337251 0.986087 0.125334 0.309017
--0.0793837 0.0100285 0.996922 0.125334 0.24869
--0.192748 0.0243499 1.00346 0.125334 0.187382
--0.311619 0.0393669 1.00577 0.125334 0.125334
--0.43413 0.0548436 1.00393 0.125334 0.0627908
--0.558352 0.0705367 0.998027 0.125334 3.26795e-07
--0.682329 0.0861986 0.988188 0.125334 -0.0627902
--0.804103 0.101582 0.974542 0.125334 -0.125333
--0.92175 0.116445 0.957234 0.125334 -0.187381
--1.03341 0.13055 0.936422 0.125334 -0.24869
--1.1373 0.143676 0.912272 0.125334 -0.309017
--1.23179 0.155612 0.884959 0.125334 -0.368124
--1.31535 0.166169 0.854661 0.125334 -0.425779
--1.38666 0.175177 0.821562 0.125334 -0.481753
--1.44458 0.182493 0.785847 0.125334 -0.535826
--1.48815 0.187998 0.747703 0.125334 -0.587785
--1.51668 0.191602 0.707314 0.125334 -0.637424
--1.52967 0.193243 0.664864 0.125334 -0.684547
--1.5269 0.192894 0.62053 0.125334 -0.728968
--1.50838 0.190554 0.574488 0.125334 -0.770513
--1.47437 0.186257 0.526908 0.125334 -0.809017
--1.42536 0.180066 0.477955 0.125334 -0.844328
--1.36209 0.172072 0.427787 0.125334 -0.876306
--1.28551 0.162399 0.376558 0.125334 -0.904827
--1.1968 0.151192 0.324415 0.125334 -0.929776
--1.09731 0.138623 0.2715 0.125334 -0.951056
--0.988562 0.124885 0.21795 0.125334 -0.968583
--0.872233 0.110189 0.163897 0.125334 -0.982287
--0.750108 0.0947612 0.109471 0.125334 -0.992115
--0.62407 0.0788387 0.0547974 0.125334 -0.998027
--0.496059 0.0626671 5.70221e-07 0.125334 -1
--0.368048 0.0464954 -0.0547963 0.125334 -0.998027
--0.242009 0.030573 -0.10947 0.125334 -0.992115
--0.119885 0.015145 -0.163896 0.125334 -0.982287
--0.00355455 0.000449046 -0.217949 0.125334 -0.968583
-0.105192 -0.0132888 -0.271499 0.125334 -0.951057
-0.204683 -0.0258576 -0.324414 0.125334 -0.929777
-0.293395 -0.0370646 -0.376557 0.125334 -0.904827
-0.36997 -0.0467383 -0.427786 0.125334 -0.876307
-0.433242 -0.0547315 -0.477954 0.125334 -0.844328
-0.482254 -0.0609231 -0.526907 0.125334 -0.809017
-0.51627 -0.0652203 -0.574487 0.125334 -0.770514
-0.53479 -0.06756 -0.620529 0.125334 -0.728969
-0.537557 -0.0679096 -0.664863 0.125334 -0.684548
-0.524561 -0.0662678 -0.707314 0.125334 -0.637425
-0.496037 -0.0626643 -0.747702 0.125334 -0.587786
-0.452462 -0.0571595 -0.785846 0.125334 -0.535828
-0.394551 -0.0498436 -0.821561 0.125334 -0.481754
-0.32324 -0.0408349 -0.85466 0.125334 -0.42578
-0.239674 -0.030278 -0.884958 0.125334 -0.368125
-0.14519 -0.0183419 -0.912272 0.125334 -0.309018
-0.0412946 -0.00521674 -0.936422 0.125334 -0.248691
--0.0703623 0.00888886 -0.957234 0.125334 -0.187382
--0.188009 0.0237512 -0.974541 0.125334 -0.125334
--0.309783 0.0391349 -0.988187 0.125334 -0.0627915
--0.43376 0.0547969 -0.998027 0.125334 -9.80385e-07
--0.557982 0.0704899 -1.00393 0.125334 0.0627895
--0.680493 0.0859667 -1.00577 0.125334 0.125332
--0.799364 0.100984 -1.00346 0.125334 0.18738
--0.912729 0.115305 -0.996922 0.125334 0.248689
--1.01881 0.128706 -0.986088 0.125334 0.309016
--1.11594 0.140977 -0.970925 0.125334 0.368124
--1.20262 0.151927 -0.951423 0.125334 0.425778
--1.27748 0.161384 -0.927594 0.125334 0.481753
--1.33938 0.169204 -0.899477 0.125334 0.535826
--1.38735 0.175264 -0.867139 0.125334 0.587784
--1.42068 0.179474 -0.830672 0.125334 0.637423
--1.43885 0.18177 -0.790198 0.125334 0.684546
--1.44162 0.182119 -0.745864 0.125334 0.728968
--1.42897 0.180521 -0.697846 0.125334 0.770513
--1.40114 0.177006 -0.646344 0.125334 0.809016
--1.3586 0.171632 -0.591585 0.125334 0.844327
--1.30206 0.16449 -0.53382 0.125334 0.876306
--1.23246 0.155697 -0.473321 0.125334 0.904827
--1.15094 0.145398 -0.410383 0.125334 0.929776
--1.05881 0.133759 -0.345316 0.125334 0.951056
--0.957579 0.120971 -0.27845 0.125334 0.968583
--0.848888 0.10724 -0.210128 0.125334 0.982287
--0.734494 0.0927886 -0.140703 0.125334 0.992115
--0.616248 0.0778506 -0.0705378 0.125334 0.998027
--0.499013 0.0313956 0 0.0627912 1
--0.375958 0.0236535 0.0666964 0.0627912 0.998027
--0.254866 0.016035 0.133083 0.0627912 0.992115
--0.137671 0.0086616 0.198852 0.0627912 0.982287
--0.0262439 0.00165114 0.2637 0.0627912 0.968583
-0.077635 -0.00488443 0.327327 0.0627912 0.951057
-0.172305 -0.0108406 0.389445 0.0627912 0.929777
-0.256252 -0.0161222 0.449772 0.0627912 0.904827
-0.32813 -0.0206444 0.508037 0.0627912 0.876307
-0.386785 -0.0243347 0.563984 0.0627912 0.844328
-0.431271 -0.0271336 0.617369 0.0627912 0.809017
-0.460869 -0.0289957 0.667964 0.0627912 0.770513
-0.475093 -0.0298906 0.715558 0.0627912 0.728969
-0.4737 -0.029803 0.759958 0.0627912 0.684547
-0.456697 -0.0287332 0.800988 0.0627912 0.637424
-0.424336 -0.0266972 0.838491 0.0627912 0.587785
-0.377114 -0.0237262 0.872333 0.0627912 0.535827
-0.315761 -0.0198662 0.902395 0.0627912 0.481754
-0.241235 -0.0151774 0.928583 0.0627912 0.42578
-0.154699 -0.00973291 0.95082 0.0627912 0.368125
-0.0575082 -0.00361815 0.96905 0.0627912 0.309017
--0.0488113 0.00307098 0.983238 0.0627912 0.24869
--0.16259 0.0102294 0.993366 0.0627912 0.187382
--0.282038 0.0177445 0.999437 0.0627912 0.125334
--0.405276 0.0254981 1.00147 0.0627912 0.0627908
--0.530362 0.0333679 0.999507 0.0627912 3.26795e-07
--0.655324 0.0412299 0.993597 0.0627912 -0.0627902
--0.778191 0.0489601 0.983814 0.0627912 -0.125333
--0.897023 0.0564365 0.970239 0.0627912 -0.187381
--1.00994 0.0635409 0.952973 0.0627912 -0.24869
--1.11516 0.0701608 0.932124 0.0627912 -0.309017
--1.21102 0.0761917 0.907815 0.0627912 -0.368124
--1.29599 0.0815377 0.880178 0.0627912 -0.425779
--1.36873 0.0861141 0.849353 0.0627912 -0.481753
--1.42808 0.089848 0.81549 0.0627912 -0.535826
--1.47309 0.0926797 0.778744 0.0627912 -0.587785
--1.50303 0.0945638 0.739279 0.0627912 -0.637424
--1.51743 0.0954697 0.69726 0.0627912 -0.684547
--1.51604 0.0953821 0.652861 0.0627912 -0.728968
--1.49886 0.0943013 0.606255 0.0627912 -0.770513
--1.46615 0.0922434 0.557622 0.0627912 -0.809017
--1.41841 0.0892395 0.507141 0.0627912 -0.844328
--1.35636 0.085336 0.454995 0.0627912 -0.876306
--1.28098 0.080593 0.401367 0.0627912 -0.904827
--1.19341 0.075084 0.346441 0.0627912 -0.929776
--1.09504 0.0688946 0.290402 0.0627912 -0.951056
--0.987376 0.0621211 0.233435 0.0627912 -0.968583
--0.872106 0.0548688 0.175726 0.0627912 -0.982287
--0.75102 0.0472507 0.11746 0.0627912 -0.992115
--0.626007 0.0393854 0.0588233 0.0627912 -0.998027
--0.499015 0.0313957 6.12207e-07 0.0627912 -1
--0.372022 0.0234059 -0.0588221 0.0627912 -0.998027
--0.247009 0.0155406 -0.117459 0.0627912 -0.992115
--0.125924 0.00792252 -0.175725 0.0627912 -0.982287
--0.0106526 0.000670213 -0.233434 0.0627912 -0.968583
-0.0970088 -0.00610334 -0.290401 0.0627912 -0.951057
-0.195385 -0.0122927 -0.34644 0.0627912 -0.929777
-0.282947 -0.0178017 -0.401366 0.0627912 -0.904827
-0.358334 -0.0225447 -0.454994 0.0627912 -0.876307
-0.42038 -0.0264483 -0.50714 0.0627912 -0.844328
-0.468124 -0.0294522 -0.557621 0.0627912 -0.809017
-0.500834 -0.0315101 -0.606254 0.0627912 -0.770514
-0.518012 -0.0325909 -0.65286 0.0627912 -0.728969
-0.519405 -0.0326785 -0.697259 0.0627912 -0.684548
-0.505007 -0.0317727 -0.739278 0.0627912 -0.637425
-0.475061 -0.0298886 -0.778744 0.0627912 -0.587786
-0.430052 -0.0270569 -0.815489 0.0627912 -0.535828
-0.370705 -0.023323 -0.849353 0.0627912 -0.481754
-0.297967 -0.0187467 -0.880177 0.0627912 -0.42578
-0.212995 -0.0134006 -0.907815 0.0627912 -0.368125
-0.117139 -0.00736982 -0.932124 0.0627912 -0.309018
-0.0119182 -0.00074984 -0.952973 0.0627912 -0.248691
--0.101001 0.00635451 -0.970239 0.0627912 -0.187382
--0.219833 0.0138309 -0.983813 0.0627912 -0.125334
--0.3427 0.0215611 -0.993597 0.0627912 -0.0627915
--0.467662 0.0294231 -0.999506 0.0627912 -9.80385e-07
--0.592748 0.0372929 -1.00147 0.0627912 0.0627895
--0.715986 0.0450465 -0.999437 0.0627912 0.125332
--0.835434 0.0525616 -0.993366 0.0627912 0.18738
--0.949213 0.05972 -0.983238 0.0627912 0.248689
--1.05553 0.0664092 -0.96905 0.0627912 0.309016
--1.15272 0.0725239 -0.95082 0.0627912 0.368124
--1.23926 0.0779684 -0.928584 0.0627912 0.425778
--1.31379 0.0826573 -0.902396 0.0627912 0.481753
--1.37514 0.0865173 -0.872333 0.0627912 0.535826
--1.42236 0.0894884 -0.838492 0.0627912 0.587784
--1.45472 0.0915244 -0.800988 0.0627912 0.637423
--1.47173 0.0925941 -0.759959 0.0627912 0.684546
--1.47312 0.0926818 -0.715559 0.0627912 0.728968
--1.4589 0.0917869 -0.667965 0.0627912 0.770513
--1.4293 0.0899248 -0.61737 0.0627912 0.809016
--1.38481 0.0871259 -0.563985 0.0627912 0.844327
--1.32616 0.0834356 -0.508038 0.0627912 0.876306
--1.25428 0.0789134 -0.449773 0.0627912 0.904827
--1.17033 0.0736319 -0.389446 0.0627912 0.929776
--1.07566 0.0676757 -0.327329 0.0627912 0.951056
--0.971785 0.0611402 -0.263701 0.0627912 0.968583
--0.860358 0.0541297 -0.198853 0.0627912 0.982287
--0.743163 0.0467564 -0.133084 0.0627912 0.992115
--0.622072 0.0391378 -0.0666978 0.0627912 0.998027
--0.5 3.26795e-07 0 6.5359e-07 1
--0.374667 2.44878e-07 0.0627905 6.5359e-07 0.998027
--0.25131 1.64254e-07 0.125333 6.5359e-07 0.992115
--0.131876 8.61925e-08 0.187381 6.5359e-07 0.982287
--0.0182465 1.19257e-08 0.24869 6.5359e-07 0.968583
-0.087785 -5.73754e-08 0.309017 6.5359e-07 0.951057
-0.184547 -1.20618e-07 0.368125 6.5359e-07 0.929777
-0.270513 -1.76805e-07 0.425779 6.5359e-07 0.904827
-0.344328 -2.25049e-07 0.481754 6.5359e-07 0.876307
-0.404827 -2.64591e-07 0.535827 6.5359e-07 0.844328
-0.451056 -2.94806e-07 0.587785 6.5359e-07 0.809017
-0.482287 -3.15218e-07 0.637424 6.5359e-07 0.770513
-0.498026 -3.25505e-07 0.684547 6.5359e-07 0.728969
-0.498027 -3.25505e-07 0.728969 6.5359e-07 0.684547
-0.482287 -3.15218e-07 0.770513 6.5359e-07 0.637424
-0.451056 -2.94806e-07 0.809017 6.5359e-07 0.587785
-0.404827 -2.64591e-07 0.844328 6.5359e-07 0.535827
-0.344328 -2.25049e-07 0.876307 6.5359e-07 0.481754
-0.270513 -1.76805e-07 0.904827 6.5359e-07 0.42578
-0.184547 -1.20618e-07 0.929777 6.5359e-07 0.368125
-0.0877854 -5.73756e-08 0.951057 6.5359e-07 0.309017
--0.0182462 1.19255e-08 0.968583 6.5359e-07 0.24869
--0.131875 8.61923e-08 0.982287 6.5359e-07 0.187382
--0.25131 1.64254e-07 0.992115 6.5359e-07 0.125334
--0.374666 2.44878e-07 0.998027 6.5359e-07 0.0627908
--0.5 3.26795e-07 1 6.5359e-07 3.26795e-07
--0.625333 4.08711e-07 0.998027 6.5359e-07 -0.0627902
--0.74869 4.89336e-07 0.992115 6.5359e-07 -0.125333
--0.868124 5.67397e-07 0.982287 6.5359e-07 -0.187381
--0.981753 6.41664e-07 0.968583 6.5359e-07 -0.24869
--1.08778 7.10965e-07 0.951056 6.5359e-07 -0.309017
--1.18455 7.74208e-07 0.929776 6.5359e-07 -0.368124
--1.27051 8.30394e-07 0.904827 6.5359e-07 -0.425779
--1.34433 8.78639e-07 0.876307 6.5359e-07 -0.481753
--1.40483 9.18181e-07 0.844328 6.5359e-07 -0.535826
--1.45106 9.48396e-07 0.809017 6.5359e-07 -0.587785
--1.48229 9.68808e-07 0.770513 6.5359e-07 -0.637424
--1.49803 9.79095e-07 0.728969 6.5359e-07 -0.684547
--1.49803 9.79095e-07 0.684547 6.5359e-07 -0.728968
--1.48229 9.68808e-07 0.637424 6.5359e-07 -0.770513
--1.45106 9.48396e-07 0.587785 6.5359e-07 -0.809017
--1.40483 9.18181e-07 0.535827 6.5359e-07 -0.844328
--1.34433 8.7864e-07 0.481754 6.5359e-07 -0.876306
--1.27051 8.30395e-07 0.42578 6.5359e-07 -0.904827
--1.18455 7.74209e-07 0.368125 6.5359e-07 -0.929776
--1.08779 7.10966e-07 0.309017 6.5359e-07 -0.951056
--0.981755 6.41665e-07 0.24869 6.5359e-07 -0.968583
--0.868126 5.67398e-07 0.187382 6.5359e-07 -0.982287
--0.748691 4.89337e-07 0.125334 6.5359e-07 -0.992115
--0.625335 4.08712e-07 0.0627911 6.5359e-07 -0.998027
--0.500001 3.26796e-07 6.53589e-07 6.5359e-07 -1
--0.374668 2.44879e-07 -0.0627898 6.5359e-07 -0.998027
--0.251311 1.64255e-07 -0.125332 6.5359e-07 -0.992115
--0.131877 8.61932e-08 -0.187381 6.5359e-07 -0.982287
--0.0182475 1.19264e-08 -0.248689 6.5359e-07 -0.968583
-0.0877842 -5.73749e-08 -0.309016 6.5359e-07 -0.951057
-0.184546 -1.20617e-07 -0.368124 6.5359e-07 -0.929777
-0.270512 -1.76804e-07 -0.425778 6.5359e-07 -0.904827
-0.344327 -2.25049e-07 -0.481753 6.5359e-07 -0.876307
-0.404827 -2.64591e-07 -0.535826 6.5359e-07 -0.844328
-0.451056 -2.94806e-07 -0.587784 6.5359e-07 -0.809017
-0.482287 -3.15218e-07 -0.637423 6.5359e-07 -0.770514
-0.498027 -3.25505e-07 -0.684546 6.5359e-07 -0.728969
-0.498027 -3.25505e-07 -0.728968 6.5359e-07 -0.684548
-0.482288 -3.15218e-07 -0.770512 6.5359e-07 -0.637425
-0.451057 -2.94806e-07 -0.809016 6.5359e-07 -0.587786
-0.404828 -2.64591e-07 -0.844327 6.5359e-07 -0.535828
-0.344329 -2.2505e-07 -0.876306 6.5359e-07 -0.481754
-0.270515 -1.76806e-07 -0.904826 6.5359e-07 -0.42578
-0.184549 -1.20619e-07 -0.929776 6.5359e-07 -0.368125
-0.087787 -5.73767e-08 -0.951056 6.5359e-07 -0.309018
--0.0182444 1.19243e-08 -0.968583 6.5359e-07 -0.248691
--0.131873 8.61911e-08 -0.982287 6.5359e-07 -0.187382
--0.251308 1.64252e-07 -0.992115 6.5359e-07 -0.125334
--0.374665 2.44877e-07 -0.998027 6.5359e-07 -0.0627915
--0.499998 3.26793e-07 -1 6.5359e-07 -9.80385e-07
--0.625331 4.0871e-07 -0.998027 6.5359e-07 0.0627895
--0.748688 4.89335e-07 -0.992115 6.5359e-07 0.125332
--0.868122 5.67396e-07 -0.982288 6.5359e-07 0.18738
--0.981752 6.41663e-07 -0.968584 6.5359e-07 0.248689
--1.08778 7.10964e-07 -0.951057 6.5359e-07 0.309016
--1.18455 7.74207e-07 -0.929777 6.5359e-07 0.368124
--1.27051 8.30393e-07 -0.904828 6.5359e-07 0.425778
--1.34433 8.78638e-07 -0.876307 6.5359e-07 0.481753
--1.40483 9.1818e-07 -0.844329 6.5359e-07 0.535826
--1.45106 9.48395e-07 -0.809018 6.5359e-07 0.587784
--1.48229 9.68807e-07 -0.770514 6.5359e-07 0.637423
--1.49803 9.79095e-07 -0.72897 6.5359e-07 0.684546
--1.49803 9.79095e-07 -0.684548 6.5359e-07 0.728968
--1.48229 9.68808e-07 -0.637425 6.5359e-07 0.770513
--1.45106 9.48396e-07 -0.587787 6.5359e-07 0.809016
--1.40483 9.18181e-07 -0.535828 6.5359e-07 0.844327
--1.34433 8.7864e-07 -0.481755 6.5359e-07 0.876306
--1.27051 8.30395e-07 -0.425781 6.5359e-07 0.904827
--1.18455 7.74209e-07 -0.368126 6.5359e-07 0.929776
--1.08779 7.10967e-07 -0.309018 6.5359e-07 0.951056
--0.981756 6.41666e-07 -0.248691 6.5359e-07 0.968583
--0.868127 5.67399e-07 -0.187383 6.5359e-07 0.982287
--0.748692 4.89338e-07 -0.125335 6.5359e-07 0.992115
--0.625336 4.08713e-07 -0.0627919 6.5359e-07 0.998027
--0.499013 -0.0313949 0 -0.0627899 1
--0.372021 -0.0234053 0.0588228 -0.0627899 0.998027
--0.247008 -0.0155402 0.11746 -0.0627899 0.992115
--0.125922 -0.00792229 0.175726 -0.0627899 0.982287
--0.0106516 -0.000670136 0.233435 -0.0627899 0.968583
-0.0970097 0.00610327 0.290402 -0.0627899 0.951057
-0.195386 0.0122925 0.346441 -0.0627899 0.929777
-0.282947 0.0178014 0.401367 -0.0627899 0.904827
-0.358335 0.0225443 0.454995 -0.0627899 0.876307
-0.42038 0.0264478 0.507141 -0.0627899 0.844328
-0.468124 0.0294516 0.557622 -0.0627899 0.809017
-0.500834 0.0315095 0.606255 -0.0627899 0.770513
-0.518012 0.0325902 0.652861 -0.0627899 0.728969
-0.519405 0.0326778 0.69726 -0.0627899 0.684547
-0.505006 0.031772 0.739279 -0.0627899 0.637424
-0.47506 0.0298879 0.778745 -0.0627899 0.587785
-0.430051 0.0270562 0.81549 -0.0627899 0.535827
-0.370704 0.0233225 0.849353 -0.0627899 0.481754
-0.297965 0.0187462 0.880178 -0.0627899 0.42578
-0.212993 0.0134003 0.907816 -0.0627899 0.368125
-0.117137 0.00736957 0.932125 -0.0627899 0.309017
-0.0119165 0.000749714 0.952973 -0.0627899 0.24869
--0.101003 -0.00635449 0.97024 -0.0627899 0.187382
--0.219835 -0.0138307 0.983814 -0.0627899 0.125334
--0.342702 -0.0215608 0.993597 -0.0627899 0.0627908
--0.467664 -0.0294226 0.999507 -0.0627899 3.26795e-07
--0.59275 -0.0372923 1.00147 -0.0627899 -0.0627902
--0.715988 -0.0450457 0.999437 -0.0627899 -0.125333
--0.835436 -0.0525606 0.993366 -0.0627899 -0.187381
--0.949215 -0.0597189 0.983237 -0.0627899 -0.24869
--1.05553 -0.0664079 0.96905 -0.0627899 -0.309017
--1.15272 -0.0725225 0.95082 -0.0627899 -0.368124
--1.23926 -0.0779669 0.928583 -0.0627899 -0.425779
--1.31379 -0.0826557 0.902395 -0.0627899 -0.481753
--1.37514 -0.0865156 0.872333 -0.0627899 -0.535826
--1.42236 -0.0894866 0.838491 -0.0627899 -0.587785
--1.45472 -0.0915225 0.800987 -0.0627899 -0.637424
--1.47173 -0.0925922 0.759958 -0.0627899 -0.684547
--1.47312 -0.0926799 0.715558 -0.0627899 -0.728968
--1.4589 -0.091785 0.667964 -0.0627899 -0.770513
--1.4293 -0.0899229 0.617369 -0.0627899 -0.809017
--1.38481 -0.0871241 0.563984 -0.0627899 -0.844328
--1.32616 -0.0834339 0.508037 -0.0627899 -0.876306
--1.25428 -0.0789118 0.449772 -0.0627899 -0.904827
--1.17033 -0.0736303 0.389445 -0.0627899 -0.929776
--1.07566 -0.0676743 0.327328 -0.0627899 -0.951056
--0.971784 -0.0611388 0.2637 -0.0627899 -0.968583
--0.860357 -0.0541285 0.198852 -0.0627899 -0.982287
--0.743162 -0.0467553 0.133084 -0.0627899 -0.992115
--0.62207 -0.0391369 0.066697 -0.0627899 -0.998027
--0.499015 -0.031395 6.94326e-07 -0.0627899 -1
--0.375959 -0.0236531 -0.0666956 -0.0627899 -0.998027
--0.254867 -0.0160347 -0.133082 -0.0627899 -0.992115
--0.137672 -0.00866149 -0.198851 -0.0627899 -0.982287
--0.0262448 -0.00165117 -0.263699 -0.0627899 -0.968583
-0.0776342 0.00488428 -0.327326 -0.0627899 -0.951057
-0.172305 0.0108404 -0.389444 -0.0627899 -0.929777
-0.256252 0.0161218 -0.449771 -0.0627899 -0.904827
-0.32813 0.0206439 -0.508036 -0.0627899 -0.876307
-0.386785 0.0243342 -0.563983 -0.0627899 -0.844328
-0.431272 0.027133 -0.617368 -0.0627899 -0.809017
-0.460869 0.0289951 -0.667963 -0.0627899 -0.770514
-0.475093 0.02989 -0.715557 -0.0627899 -0.728969
-0.473701 0.0298024 -0.759957 -0.0627899 -0.684548
-0.456698 0.0287327 -0.800987 -0.0627899 -0.637425
-0.424337 0.0266968 -0.83849 -0.0627899 -0.587786
-0.377115 0.0237258 -0.872332 -0.0627899 -0.535828
-0.315763 0.0198659 -0.902395 -0.0627899 -0.481754
-0.241236 0.0151771 -0.928582 -0.0627899 -0.42578
-0.1547 0.0097328 -0.950819 -0.0627899 -0.368125
-0.0575099 0.00361818 -0.96905 -0.0627899 -0.309018
--0.0488095 -0.0030708 -0.983237 -0.0627899 -0.248691
--0.162588 -0.0102291 -0.993365 -0.0627899 -0.187382
--0.282036 -0.017744 -0.999437 -0.0627899 -0.125334
--0.405274 -0.0254974 -1.00147 -0.0627899 -0.0627915
--0.53036 -0.0333671 -0.999507 -0.0627899 -9.80385e-07
--0.655322 -0.0412289 -0.993598 -0.0627899 0.0627895
--0.778189 -0.048959 -0.983814 -0.0627899 0.125332
--0.897022 -0.0564352 -0.97024 -0.0627899 0.18738
--1.00994 -0.0635394 -0.952973 -0.0627899 0.248689
--1.11516 -0.0701593 -0.932125 -0.0627899 0.309016
--1.21102 -0.07619 -0.907816 -0.0627899 0.368124
--1.29599 -0.0815359 -0.880179 -0.0627899 0.425778
--1.36873 -0.0861122 -0.849354 -0.0627899 0.481753
--1.42808 -0.089846 -0.815491 -0.0627899 0.535826
--1.47309 -0.0926777 -0.778745 -0.0627899 0.587784
--1.50303 -0.0945618 -0.73928 -0.0627899 0.637423
--1.51743 -0.0954677 -0.697261 -0.0627899 0.684546
--1.51604 -0.0953801 -0.652862 -0.0627899 0.728968
--1.49886 -0.0942994 -0.606256 -0.0627899 0.770513
--1.46615 -0.0922415 -0.557623 -0.0627899 0.809016
--1.41841 -0.0892377 -0.507142 -0.0627899 0.844327
--1.35636 -0.0853342 -0.454996 -0.0627899 0.876306
--1.28098 -0.0805913 -0.401368 -0.0627899 0.904827
--1.19341 -0.0750825 -0.346442 -0.0627899 0.929776
--1.09504 -0.0688933 -0.290403 -0.0627899 0.951056
--0.987377 -0.0621199 -0.233436 -0.0627899 0.968583
--0.872107 -0.0548677 -0.175727 -0.0627899 0.982287
--0.751022 -0.0472498 -0.117461 -0.0627899 0.992115
--0.626009 -0.0393847 -0.058824 -0.0627899 0.998027
--0.496057 -0.0626663 0 -0.125333 1
--0.368046 -0.0464948 0.0547969 -0.125333 0.998027
--0.242008 -0.0305725 0.109471 -0.125333 0.992115
--0.119883 -0.0151447 0.163897 -0.125333 0.982287
--0.00355352 -0.000448911 0.21795 -0.125333 0.968583
-0.105192 0.0132888 0.2715 -0.125333 0.951057
-0.204684 0.0258575 0.324415 -0.125333 0.929777
-0.293396 0.0370643 0.376558 -0.125333 0.904827
-0.369971 0.0467379 0.427787 -0.125333 0.876307
-0.433243 0.054731 0.477955 -0.125333 0.844328
-0.482254 0.0609225 0.526908 -0.125333 0.809017
-0.51627 0.0652197 0.574488 -0.125333 0.770513
-0.53479 0.0675593 0.62053 -0.125333 0.728969
-0.537557 0.0679089 0.664864 -0.125333 0.684547
-0.524561 0.066267 0.707315 -0.125333 0.637424
-0.496036 0.0626636 0.747703 -0.125333 0.587785
-0.452461 0.0571588 0.785847 -0.125333 0.535827
-0.39455 0.0498429 0.821562 -0.125333 0.481754
-0.323238 0.0408343 0.854661 -0.125333 0.42578
-0.239673 0.0302775 0.884959 -0.125333 0.368125
-0.145189 0.0183415 0.912273 -0.125333 0.309017
-0.0412928 0.00521647 0.936422 -0.125333 0.24869
--0.0703641 -0.008889 0.957234 -0.125333 0.187382
--0.188011 -0.0237512 0.974542 -0.125333 0.125334
--0.309785 -0.0391347 0.988188 -0.125333 0.0627908
--0.433762 -0.0547965 0.998027 -0.125333 3.26795e-07
--0.557984 -0.0704894 1.00393 -0.125333 -0.0627902
--0.680495 -0.085966 1.00577 -0.125333 -0.125333
--0.799366 -0.100983 1.00346 -0.125333 -0.187381
--0.912731 -0.115304 0.996921 -0.125333 -0.24869
--1.01881 -0.128705 0.986087 -0.125333 -0.309017
--1.11595 -0.140976 0.970925 -0.125333 -0.368124
--1.20262 -0.151925 0.951422 -0.125333 -0.425779
--1.27748 -0.161383 0.927593 -0.125333 -0.481753
--1.33938 -0.169202 0.899476 -0.125333 -0.535826
--1.38735 -0.175263 0.867138 -0.125333 -0.587785
--1.42068 -0.179472 0.830671 -0.125333 -0.637424
--1.43885 -0.181768 0.790197 -0.125333 -0.684547
--1.44162 -0.182118 0.745863 -0.125333 -0.728968
--1.42897 -0.18052 0.697845 -0.125333 -0.770513
--1.40114 -0.177004 0.646343 -0.125333 -0.809017
--1.3586 -0.17163 0.591584 -0.125333 -0.844328
--1.30206 -0.164488 0.533819 -0.125333 -0.876306
--1.23246 -0.155695 0.47332 -0.125333 -0.904827
--1.15094 -0.145396 0.410382 -0.125333 -0.929776
--1.05881 -0.133758 0.345315 -0.125333 -0.951056
--0.957578 -0.12097 0.278449 -0.125333 -0.968583
--0.848887 -0.107239 0.210127 -0.125333 -0.982287
--0.734493 -0.0927875 0.140702 -0.125333 -0.992115
--0.616247 -0.0778496 0.070537 -0.125333 -0.998027
--0.496059 -0.0626664 7.34378e-07 -0.125333 -1
--0.375871 -0.0474832 -0.0705356 -0.125333 -0.998027
--0.257624 -0.0325453 -0.1407 -0.125333 -0.992115
--0.14323 -0.0180941 -0.210125 -0.125333 -0.982287
--0.0345389 -0.00436326 -0.278448 -0.125333 -0.968583
-0.066691 0.00842499 -0.345314 -0.125333 -0.951057
-0.158818 0.0200633 -0.41038 -0.125333 -0.929777
-0.240347 0.0303627 -0.473319 -0.125333 -0.904827
-0.309948 0.0391554 -0.533818 -0.125333 -0.876307
-0.366484 0.0462974 -0.591583 -0.125333 -0.844328
-0.409021 0.0516711 -0.646342 -0.125333 -0.809017
-0.436853 0.055187 -0.697844 -0.125333 -0.770514
-0.449502 0.056785 -0.745862 -0.125333 -0.728969
-0.446735 0.0564354 -0.790196 -0.125333 -0.684548
-0.428562 0.0541397 -0.83067 -0.125333 -0.637425
-0.395241 0.0499302 -0.867137 -0.125333 -0.587786
-0.347267 0.0438698 -0.899476 -0.125333 -0.535828
-0.285371 0.0360506 -0.927593 -0.125333 -0.481754
-0.210507 0.026593 -0.951422 -0.125333 -0.42578
-0.123833 0.0156436 -0.970924 -0.125333 -0.368125
-0.0266977 0.00337269 -0.986087 -0.125333 -0.309018
--0.0793819 -0.0100282 -0.996921 -0.125333 -0.248691
--0.192746 -0.0243494 -1.00346 -0.125333 -0.187382
--0.311617 -0.0393662 -1.00577 -0.125333 -0.125334
--0.434128 -0.0548428 -1.00393 -0.125333 -0.0627915
--0.558351 -0.0705357 -0.998027 -0.125333 -9.80385e-07
--0.682327 -0.0861975 -0.988188 -0.125333 0.0627895
--0.804101 -0.101581 -0.974542 -0.125333 0.125332
--0.921748 -0.116443 -0.957235 -0.125333 0.18738
--1.03341 -0.130549 -0.936423 -0.125333 0.248689
--1.1373 -0.143674 -0.912273 -0.125333 0.309016
--1.23179 -0.15561 -0.884959 -0.125333 0.368124
--1.31535 -0.166167 -0.854661 -0.125333 0.425778
--1.38666 -0.175175 -0.821563 -0.125333 0.481753
--1.44457 -0.182491 -0.785848 -0.125333 0.535826
--1.48815 -0.187996 -0.747704 -0.125333 0.587784
--1.51667 -0.1916 -0.707316 -0.125333 0.637423
--1.52967 -0.193241 -0.664865 -0.125333 0.684546
--1.5269 -0.192892 -0.620531 -0.125333 0.728968
--1.50838 -0.190552 -0.574489 -0.125333 0.770513
--1.47437 -0.186255 -0.526909 -0.125333 0.809016
--1.42536 -0.180064 -0.477956 -0.125333 0.844327
--1.36209 -0.172071 -0.427789 -0.125333 0.876306
--1.28551 -0.162397 -0.376559 -0.125333 0.904827
--1.1968 -0.15119 -0.324416 -0.125333 0.929776
--1.09731 -0.138622 -0.271501 -0.125333 0.951056
--0.988564 -0.124884 -0.217951 -0.125333 0.968583
--0.872234 -0.110188 -0.163898 -0.125333 0.982287
--0.75011 -0.0947604 -0.109472 -0.125333 0.992115
--0.624071 -0.0788381 -0.054798 -0.125333 0.998027
--0.491144 -0.0936903 0 -0.187381 1
--0.362772 -0.0692023 0.050717 -0.187381 0.998027
--0.236357 -0.0450873 0.101373 -0.187381 0.992115
--0.113823 -0.0217128 0.151906 -0.187381 0.982287
-0.00296578 0.00056575 0.202249 -0.187381 0.968583
-0.112234 0.0214096 0.25233 -0.187381 0.951057
-0.212324 0.0405028 0.302069 -0.187381 0.929777
-0.301722 0.0575564 0.351378 -0.187381 0.904827
-0.379082 0.0723135 0.400158 -0.187381 0.876307
-0.443244 0.0845531 0.448297 -0.187381 0.844328
-0.493257 0.0940934 0.495675 -0.187381 0.809017
-0.528387 0.100795 0.542154 -0.187381 0.770513
-0.548135 0.104562 0.587587 -0.187381 0.728969
-0.552241 0.105345 0.631811 -0.187381 0.684547
-0.54069 0.103142 0.674653 -0.187381 0.637424
-0.513708 0.0979946 0.715924 -0.187381 0.587785
-0.471763 0.0899932 0.755429 -0.187381 0.535827
-0.415555 0.0792711 0.79296 -0.187381 0.481754
-0.346006 0.066004 0.8283 -0.187381 0.42578
-0.264244 0.050407 0.861229 -0.187381 0.368125
-0.171585 0.0327315 0.89152 -0.187381 0.309017
-0.069514 0.0132605 0.918948 -0.187381 0.24869
--0.0403402 -0.00769527 0.943284 -0.187381 0.187382
--0.15623 -0.0298024 0.964308 -0.187381 0.125334
--0.276318 -0.0527102 0.981803 -0.187381 0.0627908
--0.398702 -0.0760562 0.995562 -0.187381 3.26795e-07
--0.521451 -0.0994718 1.00539 -0.187381 -0.0627902
--0.642632 -0.122588 1.01112 -0.187381 -0.125333
--0.760339 -0.145042 1.01257 -0.187381 -0.187381
--0.872727 -0.166481 1.00962 -0.187381 -0.24869
--0.978038 -0.18657 1.00215 -0.187381 -0.309017
--1.07463 -0.204996 0.990072 -0.187381 -0.368124
--1.16101 -0.221473 0.973323 -0.187381 -0.425779
--1.23583 -0.235746 0.951876 -0.187381 -0.481753
--1.29795 -0.247596 0.925732 -0.187381 -0.535826
--1.34642 -0.256843 0.894929 -0.187381 -0.587785
--1.38052 -0.263348 0.859535 -0.187381 -0.637424
--1.39976 -0.267017 0.819656 -0.187381 -0.684547
--1.40386 -0.2678 0.775432 -0.187381 -0.728968
--1.39283 -0.265695 0.727037 -0.187381 -0.770513
--1.36687 -0.260744 0.674679 -0.187381 -0.809017
--1.32647 -0.253036 0.618601 -0.187381 -0.844328
--1.2723 -0.242704 0.559074 -0.187381 -0.876306
--1.20529 -0.229921 0.496402 -0.187381 -0.904827
--1.12655 -0.214901 0.430913 -0.187381 -0.929776
--1.03739 -0.197892 0.362961 -0.187381 -0.951056
--0.939276 -0.179176 0.292924 -0.187381 -0.968583
--0.833822 -0.15906 0.221194 -0.187381 -0.982287
--0.72276 -0.137873 0.148181 -0.187381 -0.992115
--0.607907 -0.115964 0.0743075 -0.187381 -0.998027
--0.491145 -0.0936905 7.73705e-07 -0.187381 -1
--0.374382 -0.071417 -0.0743059 -0.187381 -0.998027
--0.25953 -0.0495078 -0.14818 -0.187381 -0.992115
--0.148467 -0.0283215 -0.221192 -0.187381 -0.982287
--0.0430136 -0.00820525 -0.292922 -0.187381 -0.968583
-0.055101 0.010511 -0.36296 -0.187381 -0.951057
-0.144263 0.0275196 -0.430911 -0.187381 -0.929777
-0.223002 0.0425398 -0.4964 -0.187381 -0.904827
-0.290014 0.0553229 -0.559073 -0.187381 -0.876307
-0.344179 0.0656554 -0.6186 -0.187381 -0.844328
-0.384585 0.0733633 -0.674678 -0.187381 -0.809017
-0.410538 0.078314 -0.727036 -0.187381 -0.770514
-0.421574 0.0804193 -0.775431 -0.187381 -0.728969
-0.417468 0.079636 -0.819655 -0.187381 -0.684548
-0.398236 0.0759673 -0.859534 -0.187381 -0.637425
-0.364135 0.0694623 -0.894928 -0.187381 -0.587786
-0.315662 0.0602156 -0.925732 -0.187381 -0.535828
-0.253542 0.0483656 -0.951875 -0.187381 -0.481754
-0.178721 0.0340927 -0.973323 -0.187381 -0.42578
-0.0923459 0.0176158 -0.990071 -0.187381 -0.368125
--0.00424725 -0.000810203 -1.00215 -0.187381 -0.309018
--0.109559 -0.0208993 -1.00962 -0.187381 -0.248691
--0.221946 -0.0423384 -1.01257 -0.187381 -0.187382
--0.339653 -0.0647921 -1.01112 -0.187381 -0.125334
--0.460834 -0.0879084 -1.00539 -0.187381 -0.0627915
--0.583583 -0.111324 -0.995562 -0.187381 -9.80385e-07
--0.705967 -0.13467 -0.981803 -0.187381 0.0627895
--0.826055 -0.157578 -0.964308 -0.187381 0.125332
--0.941945 -0.179685 -0.943285 -0.187381 0.18738
--1.0518 -0.200641 -0.918948 -0.187381 0.248689
--1.15387 -0.220112 -0.891521 -0.187381 0.309016
--1.24653 -0.237787 -0.861229 -0.187381 0.368124
--1.32829 -0.253384 -0.828301 -0.187381 0.425778
--1.39784 -0.266651 -0.79296 -0.187381 0.481753
--1.45405 -0.277374 -0.75543 -0.187381 0.535826
--1.49599 -0.285375 -0.715925 -0.187381 0.587784
--1.52298 -0.290522 -0.674653 -0.187381 0.637423
--1.53453 -0.292726 -0.631812 -0.187381 0.684546
--1.53042 -0.291943 -0.587588 -0.187381 0.728968
--1.51067 -0.288175 -0.542155 -0.187381 0.770513
--1.47554 -0.281474 -0.495676 -0.187381 0.809016
--1.42553 -0.271934 -0.448298 -0.187381 0.844327
--1.36137 -0.259694 -0.400159 -0.187381 0.876306
--1.28401 -0.244937 -0.351379 -0.187381 0.904827
--1.19461 -0.227884 -0.30207 -0.187381 0.929776
--1.09452 -0.208791 -0.252331 -0.187381 0.951056
--0.985256 -0.187947 -0.20225 -0.187381 0.968583
--0.868467 -0.165668 -0.151907 -0.187381 0.982287
--0.745933 -0.142294 -0.101374 -0.187381 0.992115
--0.619518 -0.118179 -0.050718 -0.187381 0.998027
--0.484292 -0.124345 0 -0.248689 1
--0.356231 -0.0914642 0.046587 -0.248689 0.998027
--0.230099 -0.0590793 0.0931759 -0.248689 0.992115
--0.107797 -0.0276774 0.139766 -0.248689 0.982287
-0.00883721 0.002269 0.186349 -0.248689 0.968583
-0.118051 0.0303103 0.232911 -0.248689 0.951057
-0.218209 0.0560265 0.279425 -0.248689 0.929777
-0.307817 0.0790338 0.325851 -0.248689 0.904827
-0.385544 0.0989906 0.372133 -0.248689 0.876307
-0.450245 0.115603 0.418197 -0.248689 0.844328
-0.500976 0.128629 0.463952 -0.248689 0.809017
-0.537013 0.137881 0.509285 -0.248689 0.770513
-0.557859 0.143233 0.554064 -0.248689 0.728969
-0.563251 0.144618 0.598135 -0.248689 0.684547
-0.55317 0.142029 0.641325 -0.248689 0.637424
-0.527833 0.135524 0.683439 -0.248689 0.587785
-0.487696 0.125219 0.724265 -0.248689 0.535827
-0.433441 0.111289 0.763575 -0.248689 0.481754
-0.365972 0.0939653 0.801121 -0.248689 0.42578
-0.286392 0.0735327 0.836649 -0.248689 0.368125
-0.195992 0.0503221 0.869888 -0.248689 0.309017
-0.0962294 0.0247074 0.900566 -0.248689 0.24869
--0.0112983 -0.00290091 0.928403 -0.248689 0.187382
--0.124876 -0.0320625 0.953122 -0.248689 0.125334
--0.242697 -0.0623138 0.974449 -0.248689 0.0627908
--0.362896 -0.0931755 0.992115 -0.248689 3.26795e-07
--0.483574 -0.12416 1.00587 -0.248689 -0.0627902
--0.60283 -0.15478 1.01546 -0.248689 -0.125333
--0.718794 -0.184554 1.02068 -0.248689 -0.187381
--0.829649 -0.213017 1.02133 -0.248689 -0.24869
--0.933667 -0.239724 1.01723 -0.248689 -0.309017
--1.02923 -0.264261 1.00824 -0.248689 -0.368124
--1.11487 -0.286249 0.994263 -0.248689 -0.425779
--1.18927 -0.30535 0.975219 -0.248689 -0.481753
--1.25128 -0.321274 0.951075 -0.248689 -0.535826
--1.29999 -0.333781 0.921837 -0.248689 -0.587785
--1.33468 -0.342686 0.887551 -0.248689 -0.637424
--1.35485 -0.347865 0.848306 -0.248689 -0.684547
--1.36024 -0.349249 0.804235 -0.248689 -0.728968
--1.35084 -0.346835 0.755511 -0.248689 -0.770513
--1.32685 -0.340677 0.70235 -0.248689 -0.809017
--1.28873 -0.33089 0.645007 -0.248689 -0.844328
--1.23716 -0.317649 0.583778 -0.248689 -0.876306
--1.17303 -0.301181 0.518993 -0.248689 -0.904827
--1.09742 -0.281768 0.451019 -0.248689 -0.929776
--1.01161 -0.259736 0.38025 -0.248689 -0.951056
--0.917042 -0.235456 0.307109 -0.248689 -0.968583
--0.815293 -0.209331 0.232043 -0.248689 -0.982287
--0.708055 -0.181797 0.155515 -0.248689 -0.992115
--0.597109 -0.153311 0.0780046 -0.248689 -0.998027
--0.484293 -0.124345 8.12269e-07 -0.248689 -1
--0.371477 -0.0953788 -0.0780029 -0.248689 -0.998027
--0.26053 -0.0668926 -0.155513 -0.248689 -0.992115
--0.153292 -0.0393587 -0.232041 -0.248689 -0.982287
--0.0515434 -0.0132341 -0.307108 -0.248689 -0.968583
-0.0430238 0.0110466 -0.380248 -0.248689 -0.951057
-0.128831 0.0330782 -0.451017 -0.248689 -0.929777
-0.204441 0.0524915 -0.518992 -0.248689 -0.904827
-0.268578 0.068959 -0.583776 -0.248689 -0.876307
-0.320151 0.0822005 -0.645006 -0.248689 -0.844328
-0.358267 0.0919871 -0.702348 -0.248689 -0.809017
-0.382253 0.0981455 -0.75551 -0.248689 -0.770514
-0.391657 0.10056 -0.804234 -0.248689 -0.728969
-0.386265 0.0991756 -0.848306 -0.248689 -0.684548
-0.366097 0.0939974 -0.88755 -0.248689 -0.637425
-0.331412 0.0850918 -0.921836 -0.248689 -0.587786
-0.282701 0.0725852 -0.951074 -0.248689 -0.535828
-0.220683 0.0566616 -0.975219 -0.248689 -0.481754
-0.146289 0.0375606 -0.994263 -0.248689 -0.42578
-0.0606518 0.0155727 -1.00824 -0.248689 -0.368125
--0.0349143 -0.00896443 -1.01723 -0.248689 -0.309018
--0.138932 -0.0356717 -1.02133 -0.248689 -0.248691
--0.249787 -0.0641343 -1.02068 -0.248689 -0.187382
--0.36575 -0.0939085 -1.01546 -0.248689 -0.125334
--0.485007 -0.124528 -1.00587 -0.248689 -0.0627915
--0.605685 -0.155513 -0.992115 -0.248689 -9.80385e-07
--0.725884 -0.186375 -0.974449 -0.248689 0.0627895
--0.843705 -0.216626 -0.953123 -0.248689 0.125332
--0.957283 -0.245788 -0.928404 -0.248689 0.18738
--1.06481 -0.273396 -0.900567 -0.248689 0.248689
--1.16457 -0.299011 -0.869889 -0.248689 0.309016
--1.25497 -0.322221 -0.836649 -0.248689 0.368124
--1.33455 -0.342654 -0.801122 -0.248689 0.425778
--1.40202 -0.359977 -0.763575 -0.248689 0.481753
--1.45628 -0.373908 -0.724266 -0.248689 0.535826
--1.49642 -0.384213 -0.68344 -0.248689 0.587784
--1.52175 -0.390719 -0.641325 -0.248689 0.637423
--1.53183 -0.393307 -0.598136 -0.248689 0.684546
--1.52644 -0.391923 -0.554065 -0.248689 0.728968
--1.5056 -0.386571 -0.509286 -0.248689 0.770513
--1.46956 -0.377318 -0.463953 -0.248689 0.809016
--1.41883 -0.364292 -0.418198 -0.248689 0.844327
--1.35413 -0.34768 -0.372134 -0.248689 0.876306
--1.2764 -0.327723 -0.325852 -0.248689 0.904827
--1.18679 -0.304716 -0.279426 -0.248689 0.929776
--1.08664 -0.279 -0.232912 -0.248689 0.951056
--0.977423 -0.250959 -0.18635 -0.248689 0.968583
--0.860789 -0.221012 -0.139767 -0.248689 0.982287
--0.738487 -0.189611 -0.0931769 -0.248689 0.992115
--0.612355 -0.157226 -0.046588 -0.248689 0.998027
--0.475528 -0.154508 0 -0.309016 1
--0.348455 -0.11322 0.0424111 -0.309016 0.998027
--0.223275 -0.0725464 0.0848866 -0.309016 0.992115
--0.101853 -0.0330941 0.127487 -0.309016 0.982287
-0.0140053 0.00455057 0.170265 -0.309016 0.968583
-0.122581 0.0398289 0.213263 -0.309016 0.951057
-0.222268 0.0722191 0.256506 -0.309016 0.929777
-0.311598 0.101244 0.300003 -0.309016 0.904827
-0.389263 0.126479 0.343741 -0.309016 0.876307
-0.454138 0.147558 0.387684 -0.309016 0.844328
-0.505294 0.164179 0.431771 -0.309016 0.809017
-0.542015 0.176111 0.475913 -0.309016 0.770513
-0.563811 0.183193 0.519994 -0.309016 0.728969
-0.57042 0.18534 0.563868 -0.309016 0.684547
-0.561816 0.182545 0.607364 -0.309016 0.637424
-0.538208 0.174874 0.650279 -0.309016 0.587785
-0.500036 0.162471 0.692387 -0.309016 0.535827
-0.447964 0.145552 0.733436 -0.309016 0.481754
-0.38287 0.124402 0.773152 -0.309016 0.42578
-0.30583 0.0993699 0.811243 -0.309016 0.368125
-0.218103 0.0708657 0.847398 -0.309016 0.309017
-0.12111 0.0393509 0.881295 -0.309016 0.24869
-0.0164115 0.00533242 0.912606 -0.309016 0.187382
--0.094317 -0.0306454 0.940996 -0.309016 0.125334
--0.209312 -0.0680095 0.966133 -0.309016 0.0627908
--0.32675 -0.106167 0.987688 -0.309016 3.26795e-07
--0.444775 -0.144516 1.00535 -0.309016 -0.0627902
--0.561529 -0.182452 1.0188 -0.309016 -0.125333
--0.675182 -0.219379 1.02778 -0.309016 -0.187381
--0.783958 -0.254723 1.03202 -0.309016 -0.24869
--0.886166 -0.287932 1.0313 -0.309016 -0.309017
--0.980226 -0.318494 1.02542 -0.309016 -0.368124
--1.06469 -0.345938 1.01422 -0.309016 -0.425779
--1.13827 -0.369846 0.9976 -0.309016 -0.481753
--1.19986 -0.389857 0.975479 -0.309016 -0.535826
--1.24854 -0.405673 0.947835 -0.309016 -0.587785
--1.2836 -0.417067 0.91469 -0.309016 -0.637424
--1.30457 -0.423879 0.87612 -0.309016 -0.684547
--1.31118 -0.426026 0.832245 -0.309016 -0.728968
--1.3034 -0.4235 0.78324 -0.309016 -0.770513
--1.28145 -0.416368 0.729327 -0.309016 -0.809017
--1.24576 -0.40477 0.670776 -0.309016 -0.844328
--1.19697 -0.388919 0.607905 -0.309016 -0.876306
--1.13596 -0.369096 0.541072 -0.309016 -0.904827
--1.06379 -0.345645 0.47068 -0.309016 -0.929776
--0.981689 -0.318969 0.397163 -0.309016 -0.951056
--0.891064 -0.289524 0.320992 -0.309016 -0.968583
--0.793448 -0.257806 0.242662 -0.309016 -0.982287
--0.690489 -0.224353 0.162695 -0.309016 -0.992115
--0.583919 -0.189726 0.0816247 -0.309016 -0.998027
--0.475529 -0.154509 8.50031e-07 -0.309016 -1
--0.36714 -0.119291 -0.081623 -0.309016 -0.998027
--0.26057 -0.0846641 -0.162693 -0.309016 -0.992115
--0.157611 -0.0512107 -0.242661 -0.309016 -0.982287
--0.0599947 -0.0194934 -0.32099 -0.309016 -0.968583
-0.0306305 0.00995244 -0.397161 -0.309016 -0.951057
-0.11273 0.036628 -0.470678 -0.309016 -0.929777
-0.184904 0.0600789 -0.541071 -0.309016 -0.904827
-0.245914 0.0799022 -0.607903 -0.309016 -0.876307
-0.294699 0.0957534 -0.670775 -0.309016 -0.844328
-0.330395 0.107351 -0.729326 -0.309016 -0.809017
-0.352346 0.114484 -0.783239 -0.309016 -0.770514
-0.36012 0.11701 -0.832244 -0.309016 -0.728969
-0.353512 0.114863 -0.876119 -0.309016 -0.684548
-0.332546 0.108051 -0.91469 -0.309016 -0.637425
-0.297481 0.0966573 -0.947834 -0.309016 -0.587786
-0.248802 0.0808406 -0.975478 -0.309016 -0.535828
-0.187215 0.0608297 -0.997599 -0.309016 -0.481754
-0.113634 0.036922 -1.01422 -0.309016 -0.42578
-0.0291706 0.00947809 -1.02542 -0.309016 -0.368125
--0.0648882 -0.0210834 -1.0313 -0.309016 -0.309018
--0.167096 -0.0542927 -1.03202 -0.309016 -0.248691
--0.275872 -0.0896361 -1.02778 -0.309016 -0.187382
--0.389525 -0.126564 -1.0188 -0.309016 -0.125334
--0.506279 -0.1645 -1.00535 -0.309016 -0.0627915
--0.624304 -0.202848 -0.987689 -0.309016 -9.80385e-07
--0.741742 -0.241006 -0.966133 -0.309016 0.0627895
--0.856737 -0.27837 -0.940997 -0.309016 0.125332
--0.967466 -0.314348 -0.912607 -0.309016 0.18738
--1.07216 -0.348367 -0.881296 -0.309016 0.248689
--1.16916 -0.379881 -0.847398 -0.309016 0.309016
--1.25688 -0.408386 -0.811244 -0.309016 0.368124
--1.33393 -0.433417 -0.773153 -0.309016 0.425778
--1.39902 -0.454568 -0.733437 -0.309016 0.481753
--1.45109 -0.471487 -0.692388 -0.309016 0.535826
--1.48926 -0.48389 -0.65028 -0.309016 0.587784
--1.51287 -0.491561 -0.607365 -0.309016 0.637423
--1.52148 -0.494357 -0.563869 -0.309016 0.684546
--1.51487 -0.492209 -0.519995 -0.309016 0.728968
--1.49307 -0.485128 -0.475914 -0.309016 0.770513
--1.45635 -0.473196 -0.431772 -0.309016 0.809016
--1.4052 -0.456575 -0.387685 -0.309016 0.844327
--1.34032 -0.435496 -0.343742 -0.309016 0.876306
--1.26266 -0.410261 -0.300004 -0.309016 0.904827
--1.17333 -0.381236 -0.256507 -0.309016 0.929776
--1.07364 -0.348846 -0.213264 -0.309016 0.951056
--0.965064 -0.313568 -0.170266 -0.309016 0.968583
--0.849206 -0.275923 -0.127488 -0.309016 0.982287
--0.727784 -0.236471 -0.0848875 -0.309016 0.992115
--0.602604 -0.195798 -0.0424119 -0.309016 0.998027
--0.464888 -0.184062 0 -0.368124 1
--0.339481 -0.13441 0.0381933 -0.368124 0.998027
--0.215922 -0.0854894 0.0765135 -0.368124 0.992115
--0.0960313 -0.0380214 0.115083 -0.368124 0.982287
-0.0184283 0.00729628 0.154013 -0.368124 0.968583
-0.125778 0.049799 0.193404 -0.368124 0.951057
-0.224449 0.0888656 0.233333 -0.368124 0.929777
-0.313008 0.123928 0.273858 -0.368124 0.904827
-0.390175 0.154481 0.315009 -0.368124 0.876307
-0.45485 0.180088 0.356788 -0.368124 0.844328
-0.506124 0.200388 0.399164 -0.368124 0.809017
-0.543296 0.215106 0.442071 -0.368124 0.770513
-0.565881 0.224048 0.485411 -0.368124 0.728969
-0.57362 0.227112 0.529045 -0.368124 0.684547
-0.566483 0.224286 0.572803 -0.368124 0.637424
-0.544668 0.215649 0.616477 -0.368124 0.587785
-0.508598 0.201368 0.659825 -0.368124 0.535827
-0.458916 0.181697 0.702574 -0.368124 0.481754
-0.396469 0.156973 0.74442 -0.368124 0.42578
-0.322302 0.127608 0.785036 -0.368124 0.368125
-0.237636 0.0940867 0.824071 -0.368124 0.309017
-0.14385 0.0569543 0.861155 -0.368124 0.24869
-0.0424597 0.0168109 0.895909 -0.368124 0.187382
--0.0649087 -0.0256991 0.927942 -0.368124 0.125334
--0.176541 -0.0698975 0.956864 -0.368124 0.0627908
--0.290665 -0.115082 0.982287 -0.368124 3.26795e-07
--0.405477 -0.160539 1.00383 -0.368124 -0.0627902
--0.51917 -0.205553 1.02114 -0.368124 -0.125333
--0.629962 -0.249419 1.03387 -0.368124 -0.187381
--0.736128 -0.291453 1.0417 -0.368124 -0.24869
--0.836021 -0.331004 1.04435 -0.368124 -0.309017
--0.928102 -0.367461 1.04158 -0.368124 -0.368124
--1.01096 -0.400268 1.03318 -0.368124 -0.425779
--1.08335 -0.428927 1.019 -0.368124 -0.481753
--1.14417 -0.453009 0.99892 -0.368124 -0.535826
--1.19255 -0.472162 0.972897 -0.368124 -0.587785
--1.22778 -0.486111 0.940928 -0.368124 -0.637424
--1.24939 -0.494668 0.903068 -0.368124 -0.684547
--1.25713 -0.497732 0.859434 -0.368124 -0.728968
--1.25097 -0.495291 0.810196 -0.368124 -0.770513
--1.23109 -0.487422 0.755584 -0.368124 -0.809017
--1.19792 -0.47429 0.695884 -0.368124 -0.844328
--1.15209 -0.456143 0.631432 -0.368124 -0.876306
--1.09442 -0.433312 0.562618 -0.368124 -0.904827
--1.02596 -0.406204 0.489876 -0.368124 -0.929776
--0.94788 -0.375292 0.413684 -0.368124 -0.951056
--0.861551 -0.341112 0.334557 -0.368124 -0.968583
--0.768454 -0.304252 0.253043 -0.368124 -0.982287
--0.670184 -0.265344 0.169714 -0.368124 -0.992115
--0.568418 -0.225052 0.0851643 -0.368124 -0.998027
--0.464889 -0.184062 8.86954e-07 -0.368124 -1
--0.361361 -0.143073 -0.0851625 -0.368124 -0.998027
--0.259595 -0.102781 -0.169712 -0.368124 -0.992115
--0.161324 -0.0638727 -0.253041 -0.368124 -0.982287
--0.0682273 -0.027013 -0.334555 -0.368124 -0.968583
-0.0181019 0.00716704 -0.413682 -0.368124 -0.951057
-0.0961775 0.0380793 -0.489874 -0.368124 -0.929777
-0.164646 0.065188 -0.562616 -0.368124 -0.904827
-0.22231 0.0880186 -0.631431 -0.368124 -0.876307
-0.268144 0.106165 -0.695882 -0.368124 -0.844328
-0.301313 0.119298 -0.755583 -0.368124 -0.809017
-0.321189 0.127167 -0.810195 -0.368124 -0.770514
-0.327354 0.129608 -0.859433 -0.368124 -0.728969
-0.319615 0.126544 -0.903067 -0.368124 -0.684548
-0.298002 0.117987 -0.940927 -0.368124 -0.637425
-0.262771 0.104038 -0.972897 -0.368124 -0.587786
-0.214397 0.0848857 -0.99892 -0.368124 -0.535828
-0.153572 0.0608032 -1.019 -0.368124 -0.481754
-0.0811874 0.0321443 -1.03318 -0.368124 -0.42578
--0.00167277 -0.000662295 -1.04158 -0.368124 -0.368125
--0.0937535 -0.0371195 -1.04435 -0.368124 -0.309018
--0.193646 -0.0766698 -1.0417 -0.368124 -0.248691
--0.299812 -0.118704 -1.03387 -0.368124 -0.187382
--0.410605 -0.16257 -1.02114 -0.368124 -0.125334
--0.524297 -0.207584 -1.00383 -0.368124 -0.0627915
--0.639109 -0.253041 -0.982288 -0.368124 -9.80385e-07
--0.753233 -0.298225 -0.956864 -0.368124 0.0627895
--0.864866 -0.342424 -0.927942 -0.368124 0.125332
--0.972234 -0.384934 -0.895909 -0.368124 0.18738
--1.07363 -0.425077 -0.861156 -0.368124 0.248689
--1.16741 -0.46221 -0.824072 -0.368124 0.309016
--1.25208 -0.495731 -0.785037 -0.368124 0.368124
--1.32624 -0.525096 -0.744421 -0.368124 0.425778
--1.38869 -0.549821 -0.702575 -0.368124 0.481753
--1.43837 -0.569491 -0.659826 -0.368124 0.535826
--1.47444 -0.583773 -0.616478 -0.368124 0.587784
--1.49626 -0.59241 -0.572804 -0.368124 0.637423
--1.5034 -0.595236 -0.529046 -0.368124 0.684546
--1.49566 -0.592172 -0.485412 -0.368124 0.728968
--1.47307 -0.58323 -0.442072 -0.368124 0.770513
--1.4359 -0.568513 -0.399165 -0.368124 0.809016
--1.38463 -0.548212 -0.356789 -0.368124 0.844327
--1.31995 -0.522605 -0.31501 -0.368124 0.876306
--1.24279 -0.492053 -0.273859 -0.368124 0.904827
--1.15423 -0.45699 -0.233334 -0.368124 0.929776
--1.05556 -0.417924 -0.193404 -0.368124 0.951056
--0.948207 -0.375421 -0.154014 -0.368124 0.968583
--0.833748 -0.330103 -0.115084 -0.368124 0.982287
--0.713857 -0.282635 -0.0765143 -0.368124 0.992115
--0.590298 -0.233715 -0.0381941 -0.368124 0.998027
--0.452414 -0.212889 0 -0.425779 1
--0.329346 -0.154978 0.0339378 -0.425779 0.998027
--0.208073 -0.0979116 0.0680649 -0.425779 0.992115
--0.0903608 -0.0425205 0.102565 -0.425779 0.982287
-0.022079 0.0103896 0.137609 -0.425779 0.968583
-0.127616 0.0600515 0.173354 -0.425779 0.951057
-0.224727 0.105748 0.20993 -0.425779 0.929777
-0.312018 0.146824 0.247443 -0.425779 0.904827
-0.388248 0.182695 0.285967 -0.425779 0.876307
-0.452344 0.212856 0.325541 -0.425779 0.844328
-0.503422 0.236892 0.366163 -0.425779 0.809017
-0.540797 0.254479 0.407794 -0.425779 0.770513
-0.563997 0.265396 0.450349 -0.425779 0.728969
-0.572765 0.269522 0.4937 -0.425779 0.684547
-0.567067 0.266841 0.537678 -0.425779 0.637424
-0.547089 0.25744 0.582067 -0.425779 0.587785
-0.513236 0.24151 0.626612 -0.425779 0.535827
-0.466126 0.219342 0.671018 -0.425779 0.481754
-0.406574 0.191319 0.714954 -0.425779 0.42578
-0.335587 0.157915 0.758055 -0.425779 0.368125
-0.254343 0.119685 0.799931 -0.425779 0.309017
-0.164173 0.0772539 0.840165 -0.425779 0.24869
-0.0665396 0.0313111 0.878327 -0.425779 0.187382
--0.0369858 -0.0174041 0.913971 -0.425779 0.125334
--0.144747 -0.0681127 0.94665 -0.425779 0.0627908
--0.255031 -0.120008 0.975917 -0.425779 3.26795e-07
--0.366095 -0.172271 1.00133 -0.425779 -0.0627902
--0.47619 -0.224078 1.02247 -0.425779 -0.125333
--0.583595 -0.274618 1.03893 -0.425779 -0.187381
--0.686639 -0.323107 1.05035 -0.425779 -0.24869
--0.783728 -0.368794 1.05637 -0.425779 -0.309017
--0.873372 -0.410977 1.05671 -0.425779 -0.368124
--0.954208 -0.449015 1.05112 -0.425779 -0.425779
--1.02502 -0.482336 1.03939 -0.425779 -0.481753
--1.08475 -0.510445 1.02138 -0.425779 -0.535826
--1.13255 -0.532935 0.997 -0.425779 -0.587785
--1.16772 -0.549488 0.966236 -0.425779 -0.637424
--1.18982 -0.559887 0.929125 -0.425779 -0.684547
--1.19859 -0.564013 0.885774 -0.425779 -0.728968
--1.19399 -0.561849 0.836352 -0.425779 -0.770513
--1.17621 -0.553483 0.781096 -0.425779 -0.809017
--1.14565 -0.539099 0.720305 -0.425779 -0.844328
--1.1029 -0.518983 0.654336 -0.425779 -0.876306
--1.04876 -0.49351 0.583608 -0.425779 -0.904827
--0.984233 -0.463144 0.508589 -0.425779 -0.929776
--0.910456 -0.428427 0.429797 -0.425779 -0.951056
--0.828734 -0.389972 0.347793 -0.425779 -0.968583
--0.740496 -0.34845 0.263173 -0.425779 -0.982287
--0.647278 -0.304585 0.176566 -0.425779 -0.992115
--0.550695 -0.259137 0.0886198 -0.425779 -0.998027
--0.452415 -0.21289 9.23001e-07 -0.425779 -1
--0.354135 -0.166643 -0.0886179 -0.425779 -0.998027
--0.257551 -0.121194 -0.176564 -0.425779 -0.992115
--0.164333 -0.0773291 -0.263171 -0.425779 -0.982287
--0.0760955 -0.0358078 -0.347791 -0.425779 -0.968583
-0.00562684 0.00264778 -0.429795 -0.425779 -0.951057
-0.0794044 0.0373648 -0.508587 -0.425779 -0.929777
-0.143936 0.0677309 -0.583606 -0.425779 -0.904827
-0.198069 0.0932038 -0.654335 -0.425779 -0.876307
-0.240819 0.11332 -0.720303 -0.425779 -0.844328
-0.271385 0.127704 -0.781095 -0.425779 -0.809017
-0.289166 0.136071 -0.836351 -0.425779 -0.770514
-0.293763 0.138234 -0.885773 -0.425779 -0.728969
-0.284995 0.134108 -0.929125 -0.425779 -0.684548
-0.262897 0.12371 -0.966235 -0.425779 -0.637425
-0.227719 0.107156 -0.996999 -0.425779 -0.587786
-0.179927 0.0846672 -1.02138 -0.425779 -0.535828
-0.120193 0.0565582 -1.03939 -0.425779 -0.481754
-0.0493823 0.0232375 -1.05112 -0.425779 -0.42578
--0.0314533 -0.0148008 -1.05671 -0.425779 -0.368125
--0.121098 -0.0569842 -1.05637 -0.425779 -0.309018
--0.218187 -0.102671 -1.05035 -0.425779 -0.248691
--0.32123 -0.151159 -1.03893 -0.425779 -0.187382
--0.428635 -0.2017 -1.02247 -0.425779 -0.125334
--0.53873 -0.253507 -1.00133 -0.425779 -0.0627915
--0.649794 -0.305769 -0.975917 -0.425779 -9.80385e-07
--0.760078 -0.357665 -0.946651 -0.425779 0.0627895
--0.867839 -0.408373 -0.913972 -0.425779 0.125332
--0.971365 -0.457089 -0.878328 -0.425779 0.18738
--1.069 -0.503032 -0.840166 -0.425779 0.248689
--1.15917 -0.545462 -0.799932 -0.425779 0.309016
--1.24041 -0.583693 -0.758056 -0.425779 0.368124
--1.3114 -0.617097 -0.714955 -0.425779 0.425778
--1.37095 -0.64512 -0.671019 -0.425779 0.481753
--1.41806 -0.667288 -0.626613 -0.425779 0.535826
--1.45192 -0.683218 -0.582068 -0.425779 0.587784
--1.47189 -0.692619 -0.537679 -0.425779 0.637423
--1.47759 -0.695301 -0.493701 -0.425779 0.684546
--1.46882 -0.691175 -0.450349 -0.425779 0.728968
--1.44563 -0.680258 -0.407795 -0.425779 0.770513
--1.40825 -0.662671 -0.366164 -0.425779 0.809016
--1.35717 -0.638636 -0.325542 -0.425779 0.844327
--1.29308 -0.608474 -0.285968 -0.425779 0.876306
--1.21685 -0.572604 -0.247444 -0.425779 0.904827
--1.12956 -0.531528 -0.209931 -0.425779 0.929776
--1.03245 -0.485831 -0.173354 -0.425779 0.951056
--0.926909 -0.436169 -0.13761 -0.425779 0.968583
--0.814469 -0.383259 -0.102566 -0.425779 0.982287
--0.696757 -0.327868 -0.0680656 -0.425779 0.992115
--0.575484 -0.270802 -0.0339385 -0.425779 0.998027
--0.438154 -0.240877 0 -0.481753 1
--0.31809 -0.174871 0.0296488 -0.481753 0.998027
--0.199758 -0.109818 0.0595491 -0.481753 0.992115
--0.0848625 -0.0466535 0.0899457 -0.481753 0.982287
-0.0249441 0.0137131 0.12107 -0.481753 0.968583
-0.128088 0.0704169 0.153133 -0.481753 0.951057
-0.223099 0.122649 0.18632 -0.481753 0.929777
-0.308629 0.16967 0.220784 -0.481753 0.904827
-0.38348 0.210819 0.256643 -0.481753 0.876307
-0.446614 0.245528 0.293972 -0.481753 0.844328
-0.497176 0.273324 0.332801 -0.481753 0.809017
-0.534501 0.293844 0.373114 -0.481753 0.770513
-0.55813 0.306834 0.414842 -0.481753 0.728969
-0.567811 0.312156 0.457868 -0.481753 0.684547
-0.563505 0.309789 0.502022 -0.481753 0.637424
-0.545389 0.299829 0.547082 -0.481753 0.587785
-0.513845 0.282488 0.592781 -0.481753 0.535827
-0.469464 0.25809 0.6388 -0.481753 0.481754
-0.413028 0.227063 0.684782 -0.481753 0.42578
-0.345499 0.189939 0.730326 -0.481753 0.368125
-0.268007 0.147338 0.775001 -0.481753 0.309017
-0.18183 0.0999616 0.818346 -0.481753 0.24869
-0.0883706 0.0485821 0.859878 -0.481753 0.187382
--0.010861 -0.00597087 0.899099 -0.481753 0.125334
--0.114275 -0.062823 0.935503 -0.481753 0.0627908
--0.220225 -0.121069 0.968583 -0.481753 3.26795e-07
--0.327034 -0.179788 0.997841 -0.481753 -0.0627902
--0.433025 -0.238057 1.02279 -0.481753 -0.125333
--0.53654 -0.294965 1.04298 -0.481753 -0.187381
--0.635972 -0.349628 1.05796 -0.481753 -0.24869
--0.729789 -0.401204 1.06735 -0.481753 -0.309017
--0.816556 -0.448904 1.07081 -0.481753 -0.368124
--0.894959 -0.492007 1.06802 -0.481753 -0.425779
--0.963827 -0.529867 1.05875 -0.481753 -0.481753
--1.02215 -0.561928 1.04282 -0.481753 -0.535826
--1.06908 -0.58773 1.02012 -0.481753 -0.587785
--1.10398 -0.606916 0.990591 -0.481753 -0.637424
--1.12639 -0.619238 0.954266 -0.481753 -0.684547
--1.13607 -0.62456 0.91124 -0.481753 -0.728968
--1.13298 -0.622862 0.861683 -0.481753 -0.770513
--1.11729 -0.614236 0.805837 -0.481753 -0.809017
--1.08938 -0.598889 0.744014 -0.481753 -0.844328
--1.04981 -0.577138 0.676595 -0.481753 -0.876306
--0.999358 -0.549401 0.604022 -0.481753 -0.904827
--0.938957 -0.516195 0.5268 -0.481753 -0.929776
--0.869709 -0.478126 0.445485 -0.481753 -0.951056
--0.792859 -0.435877 0.360685 -0.481753 -0.968583
--0.709774 -0.390201 0.273044 -0.481753 -0.982287
--0.621923 -0.341904 0.183243 -0.481753 -0.992115
--0.530851 -0.291837 0.0919878 -0.481753 -0.998027
--0.438154 -0.240877 9.58138e-07 -0.481753 -1
--0.345458 -0.189917 -0.0919859 -0.481753 -0.998027
--0.254386 -0.13985 -0.183241 -0.481753 -0.992115
--0.166535 -0.0915531 -0.273042 -0.481753 -0.982287
--0.0834499 -0.0458769 -0.360683 -0.481753 -0.968583
--0.00659972 -0.00362822 -0.445484 -0.481753 -0.951057
-0.0626483 0.0344411 -0.526798 -0.481753 -0.929777
-0.12305 0.0676471 -0.60402 -0.481753 -0.904827
-0.173504 0.0953843 -0.676593 -0.481753 -0.876307
-0.21307 0.117136 -0.744013 -0.481753 -0.844328
-0.240985 0.132483 -0.805836 -0.481753 -0.809017
-0.256676 0.141108 -0.861682 -0.481753 -0.770514
-0.259766 0.142807 -0.911239 -0.481753 -0.728969
-0.250085 0.137485 -0.954265 -0.481753 -0.684548
-0.227672 0.125164 -0.99059 -0.481753 -0.637425
-0.192774 0.105978 -1.02012 -0.481753 -0.587786
-0.14584 0.0801761 -1.04282 -0.481753 -0.535828
-0.0875208 0.0481149 -1.05875 -0.481753 -0.481754
-0.0186534 0.0102548 -1.06802 -0.481753 -0.42578
--0.0597496 -0.0328476 -1.07081 -0.481753 -0.368125
--0.146516 -0.0805478 -1.06735 -0.481753 -0.309018
--0.240333 -0.132124 -1.05796 -0.481753 -0.248691
--0.339765 -0.186787 -1.04298 -0.481753 -0.187382
--0.44328 -0.243695 -1.02279 -0.481753 -0.125334
--0.54927 -0.301963 -0.997841 -0.481753 -0.0627915
--0.65608 -0.360683 -0.968584 -0.481753 -9.80385e-07
--0.76203 -0.418929 -0.935503 -0.481753 0.0627895
--0.865444 -0.475781 -0.8991 -0.481753 0.125332
--0.964676 -0.530334 -0.859879 -0.481753 0.18738
--1.05813 -0.581714 -0.818347 -0.481753 0.248689
--1.14431 -0.62909 -0.775002 -0.481753 0.309016
--1.2218 -0.671691 -0.730327 -0.481753 0.368124
--1.28933 -0.708816 -0.684783 -0.481753 0.425778
--1.34577 -0.739842 -0.638801 -0.481753 0.481753
--1.39015 -0.764241 -0.592782 -0.481753 0.535826
--1.4217 -0.781582 -0.547083 -0.481753 0.587784
--1.43981 -0.791542 -0.502022 -0.481753 0.637423
--1.44412 -0.793909 -0.457869 -0.481753 0.684546
--1.43444 -0.788587 -0.414843 -0.481753 0.728968
--1.41081 -0.775597 -0.373114 -0.481753 0.770513
--1.37348 -0.755078 -0.332802 -0.481753 0.809016
--1.32292 -0.727281 -0.293973 -0.481753 0.844327
--1.25979 -0.692573 -0.256644 -0.481753 0.876306
--1.18494 -0.651424 -0.220785 -0.481753 0.904827
--1.09941 -0.604403 -0.18632 -0.481753 0.929776
--1.0044 -0.552171 -0.153133 -0.481753 0.951056
--0.901253 -0.495467 -0.12107 -0.481753 0.968583
--0.791447 -0.435101 -0.0899463 -0.481753 0.982287
--0.676552 -0.371937 -0.0595497 -0.481753 0.992115
--0.55822 -0.306883 -0.0296494 -0.481753 0.998027
--0.422164 -0.267913 0 -0.535826 1
--0.305753 -0.194036 0.0253305 -0.535826 0.998027
--0.191002 -0.121213 0.0509745 -0.535826 0.992115
--0.0795481 -0.0504827 0.0772378 -0.535826 0.982287
-0.0270245 0.0171503 0.104411 -0.535826 0.968583
-0.127206 0.0807272 0.13276 -0.535826 0.951057
-0.219584 0.139352 0.162525 -0.535826 0.929777
-0.302867 0.192205 0.193907 -0.535826 0.904827
-0.375901 0.238554 0.227065 -0.535826 0.876307
-0.437692 0.277767 0.262113 -0.535826 0.844328
-0.487414 0.309322 0.29911 -0.535826 0.809017
-0.524429 0.332812 0.338065 -0.535826 0.770513
-0.548291 0.347955 0.378926 -0.535826 0.728969
-0.558755 0.354596 0.421584 -0.535826 0.684547
-0.55578 0.352708 0.46587 -0.535826 0.637424
-0.539527 0.342394 0.511558 -0.535826 0.587785
-0.510362 0.323885 0.558364 -0.535826 0.535827
-0.468842 0.297536 0.605952 -0.535826 0.481754
-0.415712 0.263818 0.653934 -0.535826 0.42578
-0.351887 0.223314 0.701876 -0.535826 0.368125
-0.278445 0.176706 0.749307 -0.535826 0.309017
-0.196603 0.124768 0.795719 -0.535826 0.24869
-0.1077 0.0683485 0.840581 -0.535826 0.187382
-0.0131772 0.00836249 0.883339 -0.535826 0.125334
--0.0854481 -0.0542269 0.923432 -0.535826 0.0627908
--0.186604 -0.118422 0.960294 -0.535826 3.26795e-07
--0.288689 -0.183207 0.993366 -0.535826 -0.0627902
--0.3901 -0.247564 1.0221 -0.535826 -0.125333
--0.489253 -0.310489 1.04599 -0.535826 -0.187381
--0.584612 -0.371005 1.06453 -0.535826 -0.24869
--0.674711 -0.428184 1.07728 -0.535826 -0.309017
--0.758179 -0.481154 1.08384 -0.535826 -0.368124
--0.833757 -0.529118 1.08387 -0.535826 -0.425779
--0.900325 -0.571363 1.07707 -0.535826 -0.481753
--0.956911 -0.607273 1.06324 -0.535826 -0.535826
--1.00271 -0.636339 1.04223 -0.535826 -0.587785
--1.0371 -0.658165 1.01397 -0.535826 -0.637424
--1.05965 -0.672474 0.978465 -0.535826 -0.684547
--1.07012 -0.679115 0.935807 -0.535826 -0.728968
--1.06845 -0.678061 0.886164 -0.535826 -0.770513
--1.05483 -0.669411 0.829783 -0.535826 -0.809017
--1.02958 -0.653391 0.76699 -0.535826 -0.844328
--0.993267 -0.630345 0.698185 -0.535826 -0.876306
--0.946603 -0.600731 0.62384 -0.535826 -0.904827
--0.890482 -0.565116 0.544491 -0.535826 -0.929776
--0.825951 -0.524164 0.460735 -0.535826 -0.951056
--0.754191 -0.478623 0.373221 -0.535826 -0.968583
--0.676502 -0.429321 0.282645 -0.535826 -0.982287
--0.59428 -0.377141 0.18974 -0.535826 -0.992115
--0.508995 -0.323017 0.0952651 -0.535826 -0.998027
--0.422165 -0.267914 9.92329e-07 -0.535826 -1
--0.335335 -0.21281 -0.0952631 -0.535826 -0.998027
--0.25005 -0.158686 -0.189738 -0.535826 -0.992115
--0.167828 -0.106507 -0.282643 -0.535826 -0.982287
--0.0901389 -0.0572038 -0.373219 -0.535826 -0.968583
--0.0183787 -0.0116635 -0.460733 -0.535826 -0.951057
-0.0461528 0.0292894 -0.544489 -0.535826 -0.929777
-0.102273 0.0649046 -0.623838 -0.535826 -0.904827
-0.148937 0.0945184 -0.698184 -0.535826 -0.876307
-0.185253 0.117565 -0.766989 -0.535826 -0.844328
-0.210497 0.133585 -0.829782 -0.535826 -0.809017
-0.224126 0.142234 -0.886163 -0.535826 -0.770514
-0.225787 0.143289 -0.935806 -0.535826 -0.728969
-0.215324 0.136648 -0.978464 -0.535826 -0.684548
-0.192776 0.122339 -1.01397 -0.535826 -0.637425
-0.158384 0.100514 -1.04223 -0.535826 -0.587786
-0.112584 0.0714476 -1.06324 -0.535826 -0.535828
-0.0559979 0.0355373 -1.07707 -0.535826 -0.481754
--0.0105694 -0.00670752 -1.08387 -0.535826 -0.42578
--0.0861479 -0.0546711 -1.08384 -0.535826 -0.368125
--0.169615 -0.107641 -1.07728 -0.535826 -0.309018
--0.259715 -0.16482 -1.06453 -0.535826 -0.248691
--0.355073 -0.225336 -1.04599 -0.535826 -0.187382
--0.454226 -0.28826 -1.0221 -0.535826 -0.125334
--0.555637 -0.352617 -0.993366 -0.535826 -0.0627915
--0.657722 -0.417403 -0.960294 -0.535826 -9.80385e-07
--0.758878 -0.481598 -0.923433 -0.535826 0.0627895
--0.857504 -0.544187 -0.88334 -0.535826 0.125332
--0.952027 -0.604173 -0.840582 -0.535826 0.18738
--1.04093 -0.660593 -0.79572 -0.535826 0.248689
--1.12277 -0.712531 -0.749308 -0.535826 0.309016
--1.19621 -0.759139 -0.701877 -0.535826 0.368124
--1.26004 -0.799644 -0.653935 -0.535826 0.425778
--1.31317 -0.833361 -0.605953 -0.535826 0.481753
--1.35469 -0.859711 -0.558365 -0.535826 0.535826
--1.38386 -0.87822 -0.511559 -0.535826 0.587784
--1.40011 -0.888534 -0.465871 -0.535826 0.637423
--1.40308 -0.890422 -0.421585 -0.535826 0.684546
--1.39262 -0.883782 -0.378927 -0.535826 0.728968
--1.36876 -0.868639 -0.338066 -0.535826 0.770513
--1.33174 -0.845149 -0.299111 -0.535826 0.809016
--1.28202 -0.813594 -0.262113 -0.535826 0.844327
--1.22023 -0.774381 -0.227066 -0.535826 0.876306
--1.1472 -0.728032 -0.193908 -0.535826 0.904827
--1.06391 -0.675179 -0.162526 -0.535826 0.929776
--0.971536 -0.616555 -0.132761 -0.535826 0.951056
--0.871355 -0.552978 -0.104411 -0.535826 0.968583
--0.764782 -0.485345 -0.0772383 -0.535826 0.982287
--0.653329 -0.414614 -0.0509751 -0.535826 0.992115
--0.538578 -0.341791 -0.0253311 -0.535826 0.998027
--0.404509 -0.293892 0 -0.587785 1
--0.292377 -0.212424 0.0209873 -0.587785 0.998027
--0.181828 -0.132106 0.0423497 -0.587785 0.992115
--0.0744206 -0.0540696 0.0644536 -0.587785 0.982287
-0.0283352 0.0205867 0.0876483 -0.587785 0.968583
-0.125 0.0908176 0.112257 -0.587785 0.951057
-0.214227 0.155645 0.138571 -0.587785 0.929777
-0.294785 0.214174 0.166839 -0.587785 0.904827
-0.365573 0.265604 0.197264 -0.587785 0.876307
-0.425641 0.309246 0.229995 -0.587785 0.844328
-0.474201 0.344526 0.265125 -0.587785 0.809017
-0.51064 0.371001 0.302683 -0.587785 0.770513
-0.534531 0.388359 0.342636 -0.587785 0.728969
-0.545636 0.396427 0.384883 -0.587785 0.684547
-0.543912 0.395175 0.429259 -0.587785 0.637424
-0.529509 0.38471 0.475529 -0.587785 0.587785
-0.502767 0.365281 0.523397 -0.587785 0.535827
-0.464212 0.337269 0.572506 -0.587785 0.481754
-0.414547 0.301186 0.62244 -0.587785 0.42578
-0.354641 0.257661 0.672733 -0.587785 0.368125
-0.28551 0.207435 0.722873 -0.587785 0.309017
-0.208309 0.151345 0.772307 -0.587785 0.24869
-0.124306 0.0903136 0.820454 -0.587785 0.187382
-0.0348676 0.0253327 0.866708 -0.587785 0.125334
--0.0585677 -0.0425518 0.91045 -0.587785 0.0627908
--0.154508 -0.112257 0.951056 -0.587785 3.26795e-07
--0.251436 -0.182678 0.98791 -0.587785 -0.0627902
--0.347827 -0.252711 1.02041 -0.587785 -0.125333
--0.442179 -0.321262 1.04797 -0.587785 -0.187381
--0.533034 -0.387271 1.07005 -0.587785 -0.24869
--0.618999 -0.449728 1.08614 -0.587785 -0.309017
--0.698769 -0.507685 1.09581 -0.587785 -0.368124
--0.771151 -0.560273 1.09864 -0.587785 -0.425779
--0.835076 -0.606717 1.09433 -0.587785 -0.481753
--0.88962 -0.646346 1.08261 -0.587785 -0.535826
--0.934018 -0.678602 1.06331 -0.587785 -0.587785
--0.967673 -0.703055 1.03635 -0.587785 -0.637424
--0.99017 -0.719399 1.0017 -0.587785 -0.684547
--1.00128 -0.727468 0.95945 -0.587785 -0.728968
--1.00095 -0.727228 0.90977 -0.587785 -0.770513
--0.989326 -0.718786 0.85291 -0.587785 -0.809017
--0.966746 -0.702381 0.789209 -0.587785 -0.844328
--0.933715 -0.678382 0.719087 -0.587785 -0.876306
--0.890914 -0.647286 0.643042 -0.587785 -0.904827
--0.839183 -0.609701 0.561645 -0.587785 -0.929776
--0.77951 -0.566346 0.475529 -0.587785 -0.951056
--0.713009 -0.51803 0.385389 -0.587785 -0.968583
--0.640907 -0.465645 0.291968 -0.587785 -0.982287
--0.564524 -0.41015 0.196049 -0.587785 -0.992115
--0.485246 -0.352551 0.0984484 -0.587785 -0.998027
--0.40451 -0.293893 1.02554e-06 -0.587785 -1
--0.323773 -0.235235 -0.0984464 -0.587785 -0.998027
--0.244496 -0.177636 -0.196047 -0.587785 -0.992115
--0.168112 -0.12214 -0.291966 -0.587785 -0.982287
--0.0960103 -0.0697555 -0.385387 -0.587785 -0.968583
--0.0295091 -0.0214396 -0.475527 -0.587785 -0.951057
-0.0301647 0.0219159 -0.561643 -0.587785 -0.929777
-0.0818953 0.0595004 -0.643041 -0.587785 -0.904827
-0.124696 0.0905971 -0.719086 -0.587785 -0.876307
-0.157728 0.114596 -0.789207 -0.587785 -0.844328
-0.180308 0.131001 -0.852909 -0.587785 -0.809017
-0.191928 0.139444 -0.909769 -0.587785 -0.770514
-0.192258 0.139683 -0.959449 -0.587785 -0.728969
-0.181153 0.131615 -1.0017 -0.587785 -0.684548
-0.158656 0.11527 -1.03634 -0.587785 -0.637425
-0.125001 0.0908183 -1.06331 -0.587785 -0.587786
-0.0806034 0.0585617 -1.08261 -0.587785 -0.535828
-0.0260596 0.0189333 -1.09433 -0.587785 -0.481754
--0.037865 -0.0275105 -1.09864 -0.587785 -0.42578
--0.110246 -0.0800986 -1.09581 -0.587785 -0.368125
--0.190017 -0.138055 -1.08614 -0.587785 -0.309018
--0.275981 -0.200512 -1.07005 -0.587785 -0.248691
--0.366836 -0.266522 -1.04797 -0.587785 -0.187382
--0.461188 -0.335072 -1.02041 -0.587785 -0.125334
--0.55758 -0.405105 -0.987911 -0.587785 -0.0627915
--0.654507 -0.475526 -0.951057 -0.587785 -9.80385e-07
--0.750448 -0.545231 -0.910451 -0.587785 0.0627895
--0.843883 -0.613116 -0.866709 -0.587785 0.125332
--0.933322 -0.678097 -0.820455 -0.587785 0.18738
--1.01732 -0.739128 -0.772308 -0.587785 0.248689
--1.09453 -0.795218 -0.722874 -0.587785 0.309016
--1.16366 -0.845445 -0.672735 -0.587785 0.368124
--1.22356 -0.88897 -0.622441 -0.587785 0.425778
--1.27323 -0.925053 -0.572507 -0.587785 0.481753
--1.31178 -0.953065 -0.523398 -0.587785 0.535826
--1.33853 -0.972494 -0.47553 -0.587785 0.587784
--1.35293 -0.982959 -0.429259 -0.587785 0.637423
--1.35465 -0.984212 -0.384884 -0.587785 0.684546
--1.34355 -0.976144 -0.342637 -0.587785 0.728968
--1.31966 -0.958786 -0.302684 -0.587785 0.770513
--1.28322 -0.932312 -0.265125 -0.587785 0.809016
--1.23466 -0.897031 -0.229996 -0.587785 0.844327
--1.17459 -0.85339 -0.197264 -0.587785 0.876306
--1.1038 -0.801959 -0.166839 -0.587785 0.904827
--1.02325 -0.743431 -0.138571 -0.587785 0.929776
--0.934019 -0.678604 -0.112258 -0.587785 0.951056
--0.837355 -0.608373 -0.0876488 -0.587785 0.968583
--0.734599 -0.533717 -0.0644541 -0.587785 0.982287
--0.627192 -0.455681 -0.0423501 -0.587785 0.992115
--0.516643 -0.375362 -0.0209877 -0.587785 0.998027
--0.385257 -0.318712 0 -0.637423 1
--0.278007 -0.229987 0.0166233 -0.637423 0.998027
--0.172254 -0.142501 0.033683 -0.637423 0.992115
--0.0694739 -0.0574737 0.0516059 -0.637423 0.982287
-0.0289045 0.0239119 0.0707995 -0.637423 0.968583
-0.121519 0.100529 0.0916432 -0.637423 0.951057
-0.207095 0.171323 0.11448 -0.637423 0.929777
-0.284465 0.235329 0.139606 -0.637423 0.904827
-0.352587 0.291685 0.167267 -0.637423 0.876307
-0.41056 0.339644 0.19765 -0.637423 0.844328
-0.457636 0.378589 0.230877 -0.637423 0.809017
-0.493233 0.408037 0.267002 -0.637423 0.770513
-0.516942 0.427651 0.306008 -0.637423 0.728969
-0.528536 0.437243 0.347803 -0.637423 0.684547
-0.527969 0.436773 0.392223 -0.637423 0.637424
-0.515378 0.426357 0.43903 -0.637423 0.587785
-0.491079 0.406256 0.487913 -0.637423 0.535827
-0.455566 0.376877 0.538494 -0.637423 0.481754
-0.409497 0.338765 0.590333 -0.637423 0.42578
-0.353687 0.292595 0.642927 -0.637423 0.368125
-0.289093 0.239158 0.695726 -0.637423 0.309017
-0.216798 0.179351 0.748133 -0.637423 0.24869
-0.137999 0.114162 0.799517 -0.637423 0.187382
-0.053978 0.0446544 0.849221 -0.637423 0.125334
--0.0339077 -0.0280509 0.896569 -0.637423 0.0627908
--0.124254 -0.102792 0.940881 -0.637423 3.26795e-07
--0.215631 -0.178385 0.981479 -0.637423 -0.0627902
--0.306603 -0.253644 1.0177 -0.637423 -0.125333
--0.395754 -0.327395 1.04891 -0.637423 -0.187381
--0.481707 -0.398502 1.07451 -0.637423 -0.24869
--0.563151 -0.465878 1.09394 -0.637423 -0.309017
--0.638853 -0.528505 1.10669 -0.637423 -0.368124
--0.707687 -0.585449 1.11234 -0.637423 -0.425779
--0.768644 -0.635877 1.11051 -0.637423 -0.481753
--0.82085 -0.679065 1.10091 -0.637423 -0.535826
--0.863581 -0.714415 1.08335 -0.637423 -0.587785
--0.896272 -0.741459 1.0577 -0.637423 -0.637424
--0.918526 -0.759869 1.02394 -0.637423 -0.684547
--0.93012 -0.769461 0.982147 -0.637423 -0.728968
--0.931009 -0.770196 0.932478 -0.637423 -0.770513
--0.921323 -0.762184 0.875195 -0.637423 -0.809017
--0.90137 -0.745677 0.810649 -0.637423 -0.844328
--0.871624 -0.721069 0.739279 -0.637423 -0.876306
--0.832721 -0.688885 0.66161 -0.637423 -0.904827
--0.785447 -0.649777 0.578244 -0.637423 -0.929776
--0.730725 -0.604507 0.489854 -0.637423 -0.951056
--0.669602 -0.553942 0.397177 -0.637423 -0.968583
--0.603227 -0.499032 0.301002 -0.637423 -0.982287
--0.532836 -0.4408 0.202165 -0.637423 -0.992115
--0.459731 -0.380322 0.101535 -0.637423 -0.998027
--0.385258 -0.318712 1.05774e-06 -0.637423 -1
--0.310784 -0.257103 -0.101532 -0.637423 -0.998027
--0.237679 -0.196625 -0.202163 -0.637423 -0.992115
--0.167288 -0.138393 -0.301 -0.637423 -0.982287
--0.100913 -0.0834825 -0.397175 -0.637423 -0.968583
--0.0397898 -0.0329169 -0.489852 -0.637423 -0.951057
-0.0149317 0.0123526 -0.578242 -0.637423 -0.929777
-0.062206 0.0514612 -0.661608 -0.637423 -0.904827
-0.101109 0.0836449 -0.739278 -0.637423 -0.876307
-0.130856 0.108253 -0.810647 -0.637423 -0.844328
-0.150809 0.12476 -0.875194 -0.637423 -0.809017
-0.160495 0.132773 -0.932477 -0.637423 -0.770514
-0.159606 0.132038 -0.982146 -0.637423 -0.728969
-0.148012 0.122446 -1.02394 -0.637423 -0.684548
-0.125759 0.104036 -1.0577 -0.637423 -0.637425
-0.0930682 0.0769926 -1.08335 -0.637423 -0.587786
-0.0503375 0.0416427 -1.10091 -0.637423 -0.535828
--0.00186844 -0.0015457 -1.11051 -0.637423 -0.481754
--0.062825 -0.0519733 -1.11234 -0.637423 -0.42578
--0.131659 -0.108918 -1.10669 -0.637423 -0.368125
--0.207362 -0.171544 -1.09394 -0.637423 -0.309018
--0.288805 -0.23892 -1.07451 -0.637423 -0.248691
--0.374758 -0.310026 -1.04891 -0.637423 -0.187382
--0.463909 -0.383778 -1.0177 -0.637423 -0.125334
--0.554881 -0.459036 -0.98148 -0.637423 -0.0627915
--0.646257 -0.53463 -0.940882 -0.637423 -9.80385e-07
--0.736604 -0.609371 -0.89657 -0.637423 0.0627895
--0.82449 -0.682076 -0.849222 -0.637423 0.125332
--0.908511 -0.751584 -0.799519 -0.637423 0.18738
--0.987311 -0.816773 -0.748134 -0.637423 0.248689
--1.05961 -0.87658 -0.695727 -0.637423 0.309016
--1.1242 -0.930017 -0.642928 -0.637423 0.368124
--1.18001 -0.976188 -0.590334 -0.637423 0.425778
--1.22608 -1.0143 -0.538496 -0.637423 0.481753
--1.26159 -1.04368 -0.487914 -0.637423 0.535826
--1.28589 -1.06378 -0.439031 -0.637423 0.587784
--1.29848 -1.0742 -0.392224 -0.637423 0.637423
--1.29905 -1.07467 -0.347804 -0.637423 0.684546
--1.28746 -1.06507 -0.306009 -0.637423 0.728968
--1.26375 -1.04546 -0.267003 -0.637423 0.770513
--1.22815 -1.01601 -0.230878 -0.637423 0.809016
--1.18107 -0.977068 -0.197651 -0.637423 0.844327
--1.1231 -0.929109 -0.167268 -0.637423 0.876306
--1.05498 -0.872754 -0.139606 -0.637423 0.904827
--0.97761 -0.808748 -0.11448 -0.637423 0.929776
--0.892034 -0.737954 -0.0916437 -0.637423 0.951056
--0.79942 -0.661337 -0.0707999 -0.637423 0.968583
--0.701042 -0.579951 -0.0516063 -0.637423 0.982287
--0.598262 -0.494924 -0.0336834 -0.637423 0.992115
--0.492509 -0.407438 -0.0166237 -0.637423 0.998027
--0.364485 -0.342273 0 -0.684547 1
--0.262687 -0.246679 0.012243 -0.684547 0.998027
--0.162295 -0.152405 0.0249831 -0.684547 0.992115
--0.0646937 -0.0607514 0.0387072 -0.684547 0.982287
-0.0287738 0.0270204 0.0538809 -0.684547 0.968583
-0.116829 0.109709 0.0709388 -0.684547 0.951057
-0.198273 0.186191 0.0902752 -0.684547 0.929777
-0.272011 0.255435 0.112235 -0.684547 0.904827
-0.337062 0.316522 0.137106 -0.684547 0.876307
-0.392577 0.368654 0.16511 -0.684547 0.844328
-0.437854 0.411171 0.196402 -0.684547 0.809017
-0.472342 0.443558 0.231058 -0.684547 0.770513
-0.495655 0.465451 0.269078 -0.684547 0.728969
-0.507576 0.476645 0.31038 -0.684547 0.684547
-0.508057 0.477096 0.354801 -0.684547 0.637424
-0.497222 0.466922 0.402098 -0.684547 0.587785
-0.475364 0.446396 0.451947 -0.684547 0.535827
-0.442941 0.415948 0.503952 -0.684547 0.481754
-0.400564 0.376154 0.557642 -0.684547 0.42578
-0.348994 0.327726 0.612486 -0.684547 0.368125
-0.289121 0.271502 0.667892 -0.684547 0.309017
-0.221958 0.208433 0.723221 -0.684547 0.24869
-0.148621 0.139564 0.777792 -0.684547 0.187382
-0.0703076 0.0660231 0.830896 -0.684547 0.125334
--0.0117144 -0.0110005 0.881803 -0.684547 0.0627908
--0.096133 -0.0902747 0.929776 -0.684547 3.26795e-07
--0.181611 -0.170543 0.97408 -0.684547 -0.0627902
--0.266806 -0.250547 1.01399 -0.684547 -0.125333
--0.350393 -0.32904 1.04882 -0.684547 -0.187381
--0.431086 -0.404816 1.07791 -0.684547 -0.24869
--0.507655 -0.476719 1.10065 -0.684547 -0.309017
--0.578949 -0.543668 1.11648 -0.684547 -0.368124
--0.64391 -0.604671 1.12493 -0.684547 -0.425779
--0.701594 -0.658839 1.12559 -0.684547 -0.481753
--0.75118 -0.705404 1.11813 -0.684547 -0.535826
--0.791989 -0.743726 1.10231 -0.684547 -0.587785
--0.823489 -0.773307 1.07801 -0.684547 -0.637424
--0.845306 -0.793794 1.04518 -0.684547 -0.684547
--0.857227 -0.804988 1.00387 -0.684547 -0.728968
--0.859204 -0.806845 0.954266 -0.684547 -0.770513
--0.851358 -0.799477 0.896616 -0.684547 -0.809017
--0.833967 -0.783146 0.831289 -0.684547 -0.844328
--0.807473 -0.758266 0.758741 -0.684547 -0.876306
--0.772464 -0.725391 0.679525 -0.684547 -0.904827
--0.72967 -0.685204 0.594273 -0.684547 -0.929776
--0.679948 -0.638513 0.503696 -0.684547 -0.951056
--0.624271 -0.586229 0.408572 -0.684547 -0.968583
--0.563708 -0.529356 0.309739 -0.684547 -0.982287
--0.499409 -0.468975 0.208082 -0.684547 -0.992115
--0.432584 -0.406222 0.10452 -0.684547 -0.998027
--0.364485 -0.342274 1.0889e-06 -0.684547 -1
--0.296387 -0.278326 -0.104518 -0.684547 -0.998027
--0.229562 -0.215573 -0.20808 -0.684547 -0.992115
--0.165262 -0.155191 -0.309737 -0.684547 -0.982287
--0.104699 -0.0983189 -0.40857 -0.684547 -0.968583
--0.0490221 -0.0460347 -0.503694 -0.684547 -0.951057
-0.00069953 0.000656901 -0.594271 -0.684547 -0.929777
-0.0434939 0.0408434 -0.679523 -0.684547 -0.904827
-0.0785032 0.0737193 -0.75874 -0.684547 -0.876307
-0.104998 0.0985993 -0.831287 -0.684547 -0.844328
-0.122388 0.11493 -0.896615 -0.684547 -0.809017
-0.130235 0.122299 -0.954265 -0.684547 -0.770514
-0.128258 0.120442 -1.00387 -0.684547 -0.728969
-0.116337 0.109248 -1.04518 -0.684547 -0.684548
-0.0945208 0.0887608 -1.07801 -0.684547 -0.637425
-0.0630209 0.0591805 -1.10231 -0.684547 -0.587786
-0.022212 0.0208584 -1.11812 -0.684547 -0.535828
--0.0273744 -0.0257063 -1.12559 -0.684547 -0.481754
--0.0850578 -0.0798745 -1.12493 -0.684547 -0.42578
--0.150019 -0.140877 -1.11648 -0.684547 -0.368125
--0.221312 -0.207826 -1.10065 -0.684547 -0.309018
--0.297882 -0.279729 -1.07791 -0.684547 -0.248691
--0.378574 -0.355504 -1.04882 -0.684547 -0.187382
--0.462162 -0.433998 -1.01399 -0.684547 -0.125334
--0.547357 -0.514001 -0.974081 -0.684547 -0.0627915
--0.632834 -0.59427 -0.929777 -0.684547 -9.80385e-07
--0.717253 -0.673544 -0.881805 -0.684547 0.0627895
--0.799275 -0.750568 -0.830897 -0.684547 0.125332
--0.877588 -0.824109 -0.777793 -0.684547 0.18738
--0.950926 -0.892978 -0.723222 -0.684547 0.248689
--1.01809 -0.956048 -0.667893 -0.684547 0.309016
--1.07796 -1.01227 -0.612487 -0.684547 0.368124
--1.12953 -1.0607 -0.557643 -0.684547 0.425778
--1.17191 -1.10049 -0.503953 -0.684547 0.481753
--1.20433 -1.13094 -0.451949 -0.684547 0.535826
--1.22619 -1.15147 -0.402099 -0.684547 0.587784
--1.23703 -1.16164 -0.354802 -0.684547 0.637423
--1.23655 -1.16119 -0.310381 -0.684547 0.684546
--1.22463 -1.15 -0.269079 -0.684547 0.728968
--1.20131 -1.12811 -0.231059 -0.684547 0.770513
--1.16682 -1.09572 -0.196403 -0.684547 0.809016
--1.12155 -1.0532 -0.165111 -0.684547 0.844327
--1.06603 -1.00107 -0.137106 -0.684547 0.876306
--1.00098 -0.939983 -0.112236 -0.684547 0.904827
--0.927244 -0.870739 -0.0902757 -0.684547 0.929776
--0.8458 -0.794257 -0.0709392 -0.684547 0.951056
--0.757745 -0.711569 -0.0538812 -0.684547 0.968583
--0.664277 -0.623797 -0.0387075 -0.684547 0.982287
--0.566677 -0.532144 -0.0249834 -0.684547 0.992115
--0.466285 -0.43787 -0.0122432 -0.684547 0.998027
--0.342274 -0.364484 0 -0.728968 1
--0.246463 -0.262456 0.00785052 -0.728968 0.998027
--0.151961 -0.161822 0.0162586 -0.728968 0.992115
--0.0600581 -0.0639553 0.0257703 -0.728968 0.982287
-0.0279968 0.0298135 0.0369091 -0.728968 0.968583
-0.111012 0.118215 0.0501644 -0.728968 0.951057
-0.187871 0.200062 0.0659819 -0.728968 0.929777
-0.257554 0.274266 0.0847535 -0.728968 0.904827
-0.319145 0.339854 0.106809 -0.728968 0.876307
-0.371854 0.395984 0.132408 -0.728968 0.844328
-0.415023 0.441954 0.161733 -0.728968 0.809017
-0.448139 0.477219 0.194886 -0.728968 0.770513
-0.470839 0.501391 0.231882 -0.728968 0.728969
-0.482915 0.514252 0.272651 -0.728968 0.684547
-0.484322 0.515749 0.317029 -0.728968 0.637424
-0.475169 0.506003 0.364769 -0.728968 0.587785
-0.455725 0.485298 0.415536 -0.728968 0.535827
-0.426411 0.454081 0.468912 -0.728968 0.481754
-0.387791 0.412955 0.524402 -0.728968 0.42578
-0.340566 0.362665 0.58144 -0.728968 0.368125
-0.285561 0.304091 0.639399 -0.728968 0.309017
-0.223712 0.238229 0.697594 -0.728968 0.24869
-0.156051 0.166177 0.755299 -0.728968 0.187382
-0.0836878 0.0891183 0.811751 -0.728968 0.125334
-0.00779671 0.00830263 0.866168 -0.728968 0.0627908
--0.070407 -0.0749757 0.917755 -0.728968 3.26795e-07
--0.149684 -0.159397 0.965719 -0.728968 -0.0627902
--0.228789 -0.243636 1.00928 -0.728968 -0.125333
--0.306496 -0.326384 1.0477 -0.728968 -0.187381
--0.381608 -0.406371 1.08025 -0.728968 -0.24869
--0.452987 -0.482382 1.10627 -0.728968 -0.309017
--0.519563 -0.553278 1.12517 -0.728968 -0.368124
--0.580354 -0.618013 1.13642 -0.728968 -0.425779
--0.634482 -0.675653 1.13956 -0.728968 -0.481753
--0.681184 -0.725386 1.13424 -0.728968 -0.535826
--0.719827 -0.766537 1.12019 -0.728968 -0.587785
--0.749916 -0.798578 1.09726 -0.728968 -0.637424
--0.771099 -0.821136 1.06538 -0.728968 -0.684547
--0.783176 -0.833996 1.02461 -0.728968 -0.728968
--0.786099 -0.837109 0.975112 -0.728968 -0.770513
--0.779973 -0.830586 0.917153 -0.728968 -0.809017
--0.765056 -0.8147 0.851108 -0.728968 -0.844328
--0.741748 -0.78988 0.777455 -0.728968 -0.876306
--0.710592 -0.756702 0.696769 -0.728968 -0.904827
--0.672258 -0.715881 0.609715 -0.728968 -0.929776
--0.627537 -0.668258 0.51704 -0.728968 -0.951056
--0.577324 -0.614787 0.419565 -0.728968 -0.968583
--0.522605 -0.556517 0.318171 -0.728968 -0.982287
--0.464439 -0.494577 0.213793 -0.728968 -0.992115
--0.403944 -0.430156 0.107403 -0.728968 -0.998027
--0.342274 -0.364485 1.11898e-06 -0.728968 -1
--0.280605 -0.298813 -0.107401 -0.728968 -0.998027
--0.22011 -0.234393 -0.213791 -0.728968 -0.992115
--0.161944 -0.172453 -0.318169 -0.728968 -0.982287
--0.107225 -0.114182 -0.419562 -0.728968 -0.968583
--0.0570115 -0.0607109 -0.517038 -0.728968 -0.951057
--0.0122904 -0.0130879 -0.609713 -0.728968 -0.929777
-0.0260432 0.0277332 -0.696767 -0.728968 -0.904827
-0.0571996 0.0609113 -0.777454 -0.728968 -0.876307
-0.0805074 0.0857316 -0.851107 -0.728968 -0.844328
-0.0954253 0.101617 -0.917152 -0.728968 -0.809017
-0.101551 0.108141 -0.975111 -0.728968 -0.770514
-0.0986281 0.105028 -1.02461 -0.728968 -0.728969
-0.0865515 0.0921678 -1.06538 -0.728968 -0.684548
-0.0653688 0.0696106 -1.09725 -0.728968 -0.637425
-0.0352804 0.0375697 -1.12019 -0.728968 -0.587786
--0.00336285 -0.00358107 -1.13424 -0.728968 -0.535828
--0.0500651 -0.0533138 -1.13956 -0.728968 -0.481754
--0.104193 -0.110954 -1.13642 -0.728968 -0.42578
--0.164983 -0.175689 -1.12517 -0.728968 -0.368125
--0.231559 -0.246585 -1.10627 -0.728968 -0.309018
--0.302938 -0.322595 -1.08025 -0.728968 -0.248691
--0.378051 -0.402582 -1.0477 -0.728968 -0.187382
--0.455757 -0.485331 -1.00929 -0.728968 -0.125334
--0.534862 -0.56957 -0.96572 -0.728968 -0.0627915
--0.614139 -0.653991 -0.917756 -0.728968 -9.80385e-07
--0.692343 -0.737269 -0.866169 -0.728968 0.0627895
--0.768234 -0.818085 -0.811752 -0.728968 0.125332
--0.840597 -0.895143 -0.7553 -0.728968 0.18738
--0.908258 -0.967195 -0.697596 -0.728968 0.248689
--0.970107 -1.03306 -0.6394 -0.728968 0.309016
--1.02511 -1.09163 -0.581442 -0.728968 0.368124
--1.07234 -1.14192 -0.524403 -0.728968 0.425778
--1.11096 -1.18305 -0.468913 -0.728968 0.481753
--1.14027 -1.21427 -0.415537 -0.728968 0.535826
--1.15972 -1.23497 -0.36477 -0.728968 0.587784
--1.16887 -1.24472 -0.31703 -0.728968 0.637423
--1.16746 -1.24322 -0.272651 -0.728968 0.684546
--1.15539 -1.23036 -0.231883 -0.728968 0.728968
--1.13269 -1.20619 -0.194887 -0.728968 0.770513
--1.09957 -1.17092 -0.161734 -0.728968 0.809016
--1.0564 -1.12495 -0.132408 -0.728968 0.844327
--1.00369 -1.06882 -0.106809 -0.728968 0.876306
--0.942103 -1.00324 -0.084754 -0.728968 0.904827
--0.872421 -0.929032 -0.0659822 -0.728968 0.929776
--0.795561 -0.847185 -0.0501647 -0.728968 0.951056
--0.712546 -0.758783 -0.0369093 -0.728968 0.968583
--0.624491 -0.665015 -0.0257706 -0.728968 0.982287
--0.532588 -0.567148 -0.0162588 -0.728968 0.992115
--0.438087 -0.466514 -0.00785068 -0.728968 0.998027
--0.318712 -0.385256 0 -0.770513 1
--0.229384 -0.277277 0.00345032 -0.770513 0.998027
--0.141262 -0.170757 0.00751801 -0.770513 0.992115
--0.0555375 -0.0671332 0.012808 -0.770513 0.982287
-0.0266384 0.0322002 0.0199008 -0.770513 0.968583
-0.104166 0.125915 0.0293404 -0.770513 0.951057
-0.176016 0.212767 0.0416234 -0.770513 0.929777
-0.241246 0.291615 0.0571884 -0.770513 0.904827
-0.29901 0.361441 0.0764068 -0.770513 0.876307
-0.348579 0.421359 0.0995743 -0.770513 0.844328
-0.389344 0.470636 0.126904 -0.770513 0.809017
-0.420829 0.508694 0.158521 -0.770513 0.770513
-0.442696 0.535127 0.194458 -0.770513 0.728969
-0.454752 0.5497 0.234652 -0.770513 0.684547
-0.45695 0.552356 0.278944 -0.770513 0.637424
-0.449387 0.543215 0.327081 -0.770513 0.587785
-0.432307 0.522569 0.378714 -0.770513 0.535827
-0.406093 0.490881 0.433409 -0.770513 0.481754
-0.37126 0.448776 0.490644 -0.770513 0.42578
-0.32845 0.397027 0.549821 -0.770513 0.368125
-0.278417 0.336548 0.610275 -0.770513 0.309017
-0.222019 0.268375 0.67128 -0.770513 0.24869
-0.160202 0.19365 0.73206 -0.770513 0.187382
-0.0939841 0.113607 0.791805 -0.770513 0.125334
-0.0244415 0.0295447 0.849677 -0.770513 0.0627908
--0.04731 -0.0571878 0.904827 -0.770513 3.26795e-07
--0.120133 -0.145215 0.956406 -0.770513 -0.0627902
--0.192884 -0.233157 1.00358 -0.770513 -0.125333
--0.264436 -0.319648 1.04554 -0.770513 -0.187381
--0.333692 -0.403364 1.08152 -0.770513 -0.24869
--0.399604 -0.483037 1.11081 -0.770513 -0.309017
--0.461188 -0.557479 1.13275 -0.770513 -0.368124
--0.517541 -0.625598 1.14678 -0.770513 -0.425779
--0.567855 -0.686417 1.1524 -0.770513 -0.481753
--0.611427 -0.739087 1.14923 -0.770513 -0.535826
--0.647674 -0.782902 1.13696 -0.770513 -0.587785
--0.676136 -0.817307 1.11542 -0.770513 -0.637424
--0.69649 -0.84191 1.08453 -0.770513 -0.684547
--0.708546 -0.856483 1.04434 -0.770513 -0.728968
--0.712257 -0.86097 0.994996 -0.770513 -0.770513
--0.707717 -0.855481 0.936784 -0.770513 -0.809017
--0.695155 -0.840297 0.870088 -0.770513 -0.844328
--0.674938 -0.815858 0.795402 -0.770513 -0.876306
--0.647556 -0.782759 0.713326 -0.770513 -0.904827
--0.613622 -0.74174 0.624556 -0.770513 -0.929776
--0.573855 -0.693671 0.529874 -0.770513 -0.951056
--0.529074 -0.639539 0.430143 -0.770513 -0.968583
--0.480176 -0.580433 0.326288 -0.770513 -0.982287
--0.428131 -0.517521 0.219293 -0.770513 -0.992115
--0.373958 -0.452037 0.11018 -0.770513 -0.998027
--0.318713 -0.385257 1.14796e-06 -0.770513 -1
--0.263467 -0.318477 -0.110178 -0.770513 -0.998027
--0.209294 -0.252993 -0.219291 -0.770513 -0.992115
--0.157249 -0.190081 -0.326286 -0.770513 -0.982287
--0.108352 -0.130975 -0.430141 -0.770513 -0.968583
--0.0635701 -0.0768429 -0.529872 -0.770513 -0.951057
--0.0238037 -0.0287736 -0.624554 -0.770513 -0.929777
-0.0101306 0.0122457 -0.713324 -0.770513 -0.904827
-0.0375124 0.0453446 -0.7954 -0.770513 -0.876307
-0.0577303 0.0697839 -0.870086 -0.770513 -0.844328
-0.0702921 0.0849684 -0.936783 -0.770513 -0.809017
-0.0748327 0.0904571 -0.994995 -0.770513 -0.770514
-0.0711214 0.0859709 -1.04434 -0.770513 -0.728969
-0.0590654 0.0713977 -1.08453 -0.770513 -0.684548
-0.0387124 0.0467951 -1.11542 -0.770513 -0.637425
-0.0102499 0.01239 -1.13696 -0.770513 -0.587786
--0.0259967 -0.0314246 -1.14923 -0.770513 -0.535828
--0.0695691 -0.0840945 -1.1524 -0.770513 -0.481754
--0.119883 -0.144913 -1.14678 -0.770513 -0.42578
--0.176236 -0.213032 -1.13275 -0.770513 -0.368125
--0.237819 -0.287474 -1.11081 -0.770513 -0.309018
--0.303731 -0.367147 -1.08152 -0.770513 -0.248691
--0.372987 -0.450863 -1.04554 -0.770513 -0.187382
--0.444539 -0.537354 -1.00358 -0.770513 -0.125334
--0.517291 -0.625296 -0.956407 -0.770513 -0.0627915
--0.590113 -0.713323 -0.904828 -0.770513 -9.80385e-07
--0.661865 -0.800056 -0.849678 -0.770513 0.0627895
--0.731407 -0.884118 -0.791806 -0.770513 0.125332
--0.797625 -0.964162 -0.732062 -0.770513 0.18738
--0.859443 -1.03889 -0.671281 -0.770513 0.248689
--0.915841 -1.10706 -0.610276 -0.770513 0.309016
--0.965874 -1.16754 -0.549822 -0.770513 0.368124
--1.00868 -1.21929 -0.490645 -0.770513 0.425778
--1.04352 -1.26139 -0.43341 -0.770513 0.481753
--1.06973 -1.29308 -0.378716 -0.770513 0.535826
--1.08681 -1.31373 -0.327082 -0.770513 0.587784
--1.09437 -1.32287 -0.278945 -0.770513 0.637423
--1.09218 -1.32021 -0.234653 -0.770513 0.684546
--1.08012 -1.30564 -0.194459 -0.770513 0.728968
--1.05825 -1.27921 -0.158522 -0.770513 0.770513
--1.02677 -1.24115 -0.126905 -0.770513 0.809016
--0.986005 -1.19187 -0.0995749 -0.770513 0.844327
--0.936436 -1.13195 -0.0764072 -0.770513 0.876306
--0.878671 -1.06213 -0.0571887 -0.770513 0.904827
--0.813442 -0.983281 -0.0416237 -0.770513 0.929776
--0.741592 -0.896429 -0.0293406 -0.770513 0.951056
--0.664065 -0.802715 -0.019901 -0.770513 0.968583
--0.581889 -0.703382 -0.0128082 -0.770513 0.982287
--0.496164 -0.599758 -0.00751811 -0.770513 0.992115
--0.408043 -0.493238 -0.0034504 -0.770513 0.998027
--0.293893 -0.404508 0 -0.809016 1
--0.211498 -0.291101 -0.000953275 -0.809016 0.998027
--0.130204 -0.17921 -0.00123 -0.809016 0.992115
--0.0510959 -0.0703273 -0.000166902 -0.809016 0.982287
-0.0247742 0.0340988 0.00287295 -0.809016 0.968583
-0.0964034 0.132688 0.00848751 -0.809016 0.951057
-0.162852 0.224147 0.0172238 -0.809016 0.929777
-0.22326 0.30729 0.0295668 -0.809016 0.904827
-0.276855 0.381057 0.0459292 -0.809016 0.876307
-0.322969 0.444528 0.0666427 -0.809016 0.844328
-0.361045 0.496935 0.0919503 -0.809016 0.809017
-0.390648 0.537679 0.122 -0.809016 0.770513
-0.411465 0.566333 0.156842 -0.809016 0.728969
-0.423319 0.582648 0.196422 -0.809016 0.684547
-0.426162 0.586561 0.240584 -0.809016 0.637424
-0.420081 0.578191 0.289069 -0.809016 0.587785
-0.405292 0.557836 0.341519 -0.809016 0.535827
-0.382141 0.525971 0.397478 -0.809016 0.481754
-0.351093 0.483238 0.456401 -0.809016 0.42578
-0.312729 0.430434 0.517659 -0.809016 0.368125
-0.267731 0.3685 0.580549 -0.809016 0.309017
-0.216877 0.298506 0.644302 -0.809016 0.24869
-0.161024 0.221631 0.708099 -0.809016 0.187382
-0.101096 0.139147 0.771078 -0.809016 0.125334
-0.0380695 0.052398 0.832348 -0.809016 0.0627908
--0.0270436 -0.0372223 0.891006 -0.809016 3.26795e-07
--0.0932098 -0.128292 0.946148 -0.809016 -0.0627902
--0.159392 -0.219384 0.996883 -0.809016 -0.125333
--0.224565 -0.309086 1.04235 -0.809016 -0.187381
--0.287732 -0.396028 1.08173 -0.809016 -0.24869
--0.34794 -0.478897 1.11425 -0.809016 -0.309017
--0.404295 -0.556463 1.13921 -0.809016 -0.368124
--0.455975 -0.627594 1.15601 -0.809016 -0.425779
--0.502244 -0.691278 1.16411 -0.809016 -0.481753
--0.542462 -0.746633 1.16308 -0.809016 -0.535826
--0.576096 -0.792926 1.15261 -0.809016 -0.587785
--0.602727 -0.829581 1.13248 -0.809016 -0.637424
--0.622056 -0.856185 1.10261 -0.809016 -0.684547
--0.63391 -0.872501 1.06303 -0.809016 -0.728968
--0.638242 -0.878463 1.0139 -0.809016 -0.770513
--0.635132 -0.874182 0.955491 -0.809016 -0.809017
--0.624785 -0.859942 0.888208 -0.809016 -0.844328
--0.60753 -0.836192 0.812563 -0.809016 -0.876306
--0.583809 -0.803542 0.729178 -0.809016 -0.904827
--0.554171 -0.76275 0.63878 -0.809016 -0.929776
--0.519268 -0.71471 0.542186 -0.809016 -0.951056
--0.479835 -0.660436 0.440297 -0.809016 -0.968583
--0.436686 -0.601045 0.334084 -0.809016 -0.982287
--0.390693 -0.537741 0.224577 -0.809016 -0.992115
--0.342778 -0.471792 0.112848 -0.809016 -0.998027
--0.293893 -0.404509 1.1758e-06 -0.809016 -1
--0.245009 -0.337226 -0.112846 -0.809016 -0.998027
--0.197094 -0.271277 -0.224574 -0.809016 -0.992115
--0.151101 -0.207973 -0.334082 -0.809016 -0.982287
--0.107951 -0.148582 -0.440295 -0.809016 -0.968583
--0.0685187 -0.0943077 -0.542184 -0.809016 -0.951057
--0.0336152 -0.0462672 -0.638778 -0.809016 -0.929777
--0.00397793 -0.00547515 -0.729177 -0.809016 -0.904827
-0.0197437 0.0271749 -0.812561 -0.809016 -0.876307
-0.0369991 0.0509249 -0.888207 -0.809016 -0.844328
-0.0473455 0.0651654 -0.95549 -0.809016 -0.809017
-0.0504558 0.0694463 -1.0139 -0.809016 -0.770514
-0.0461242 0.0634844 -1.06303 -0.809016 -0.728969
-0.0342705 0.0471691 -1.10261 -0.809016 -0.684548
-0.0149413 0.0205649 -1.13248 -0.809016 -0.637425
--0.0116895 -0.0160891 -1.15261 -0.809016 -0.587786
--0.0453234 -0.0623822 -1.16308 -0.809016 -0.535828
--0.0855415 -0.117738 -1.16411 -0.809016 -0.481754
--0.13181 -0.181421 -1.15601 -0.809016 -0.42578
--0.18349 -0.252552 -1.13922 -0.809016 -0.368125
--0.239845 -0.330118 -1.11425 -0.809016 -0.309018
--0.300053 -0.412987 -1.08173 -0.809016 -0.248691
--0.36322 -0.499928 -1.04235 -0.809016 -0.187382
--0.428393 -0.589631 -0.996884 -0.809016 -0.125334
--0.494575 -0.680722 -0.946149 -0.809016 -0.0627915
--0.560741 -0.771792 -0.891008 -0.809016 -9.80385e-07
--0.625854 -0.861413 -0.832349 -0.809016 0.0627895
--0.688881 -0.948162 -0.771079 -0.809016 0.125332
--0.748809 -1.03065 -0.708101 -0.809016 0.18738
--0.804662 -1.10752 -0.644304 -0.809016 0.248689
--0.855516 -1.17752 -0.58055 -0.809016 0.309016
--0.900514 -1.23945 -0.517661 -0.809016 0.368124
--0.938879 -1.29225 -0.456403 -0.809016 0.425778
--0.969927 -1.33499 -0.39748 -0.809016 0.481753
--0.993078 -1.36685 -0.34152 -0.809016 0.535826
--1.00787 -1.38721 -0.28907 -0.809016 0.587784
--1.01395 -1.39558 -0.240585 -0.809016 0.637423
--1.01111 -1.39166 -0.196422 -0.809016 0.684546
--0.999252 -1.37535 -0.156842 -0.809016 0.728968
--0.978434 -1.3467 -0.122001 -0.809016 0.770513
--0.948832 -1.30595 -0.0919509 -0.809016 0.809016
--0.910756 -1.25355 -0.0666432 -0.809016 0.844327
--0.864642 -1.19008 -0.0459296 -0.809016 0.876306
--0.811047 -1.11631 -0.0295671 -0.809016 0.904827
--0.75064 -1.03317 -0.017224 -0.809016 0.929776
--0.684191 -0.941706 -0.00848766 -0.809016 0.951056
--0.612562 -0.843117 -0.00287304 -0.809016 0.968583
--0.536692 -0.738691 0.000166861 -0.809016 0.982287
--0.457584 -0.629809 0.00122999 -0.809016 0.992115
--0.37629 -0.517918 0.00095329 -0.809016 0.998027
--0.267914 -0.422164 0 -0.844327 1
--0.192855 -0.30389 -0.00535593 -0.844327 0.998027
--0.118789 -0.18718 -0.0099768 -0.844327 0.992115
--0.0466912 -0.0735734 -0.0131417 -0.844327 0.982287
-0.0224893 0.0354374 -0.0141578 -0.844327 0.968583
-0.087849 0.138428 -0.0123738 -0.844327 0.951057
-0.148541 0.234063 -0.00719275 -0.844327 0.929777
-0.203789 0.32112 0.00191602 -0.844327 0.904827
-0.252898 0.398503 0.0154063 -0.844327 0.876307
-0.295264 0.46526 0.0336453 -0.844327 0.844328
-0.330383 0.520599 0.0569056 -0.844327 0.809017
-0.357861 0.563898 0.0853588 -0.844327 0.770513
-0.377416 0.594711 0.119071 -0.844327 0.728969
-0.388883 0.61278 0.157997 -0.844327 0.684547
-0.392216 0.618033 0.201986 -0.844327 0.637424
-0.387491 0.610587 0.250772 -0.844327 0.587785
-0.374899 0.590746 0.303987 -0.844327 0.535827
-0.354747 0.558991 0.361156 -0.844327 0.481754
-0.327449 0.515977 0.421709 -0.844327 0.42578
-0.293524 0.46252 0.484986 -0.844327 0.368125
-0.253583 0.399582 0.55025 -0.844327 0.309017
-0.20832 0.32826 0.616689 -0.844327 0.24869
-0.158503 0.249761 0.68344 -0.844327 0.187382
-0.10496 0.16539 0.749589 -0.844327 0.125334
-0.048564 0.0765244 0.814198 -0.844327 0.0627908
--0.00977678 -0.0154057 0.876307 -0.844327 3.26795e-07
--0.0691363 -0.108941 0.934957 -0.844327 -0.0627902
--0.128584 -0.202616 0.989204 -0.844327 -0.125333
--0.187202 -0.294982 1.03813 -0.844327 -0.187381
--0.244094 -0.384629 1.08086 -0.844327 -0.24869
--0.298405 -0.47021 1.11658 -0.844327 -0.309017
--0.349333 -0.550459 1.14455 -0.844327 -0.368124
--0.396138 -0.624213 1.1641 -0.844327 -0.425779
--0.43816 -0.690429 1.17467 -0.844327 -0.481753
--0.474822 -0.748199 1.17579 -0.844327 -0.535826
--0.505645 -0.796767 1.16712 -0.844327 -0.587785
--0.530248 -0.835536 1.14843 -0.844327 -0.637424
--0.548363 -0.86408 1.1196 -0.844327 -0.684547
--0.55983 -0.882149 1.08068 -0.844327 -0.728968
--0.564604 -0.889671 1.0318 -0.844327 -0.770513
--0.562753 -0.886755 0.973255 -0.844327 -0.809017
--0.554458 -0.873685 0.905453 -0.844327 -0.844328
--0.540009 -0.850917 0.828923 -0.844327 -0.876306
--0.519799 -0.81907 0.744311 -0.844327 -0.904827
--0.494316 -0.778916 0.652374 -0.844327 -0.929776
--0.46414 -0.731366 0.553962 -0.844327 -0.951056
--0.429925 -0.677453 0.450016 -0.844327 -0.968583
--0.392397 -0.618317 0.34155 -0.844327 -0.982287
--0.352333 -0.555187 0.229639 -0.844327 -0.992115
--0.310556 -0.489357 0.115405 -0.844327 -0.998027
--0.267914 -0.422164 1.20248e-06 -0.844327 -1
--0.225273 -0.354972 -0.115402 -0.844327 -0.998027
--0.183495 -0.289142 -0.229636 -0.844327 -0.992115
--0.143432 -0.226012 -0.341548 -0.844327 -0.982287
--0.105903 -0.166876 -0.450014 -0.844327 -0.968583
--0.0716886 -0.112963 -0.55396 -0.844327 -0.951057
--0.0415119 -0.0654121 -0.652372 -0.844327 -0.929777
--0.0160293 -0.0252581 -0.74431 -0.844327 -0.904827
-0.00418136 0.00658876 -0.828921 -0.844327 -0.876307
-0.0186305 0.0293569 -0.905451 -0.844327 -0.844328
-0.0269252 0.0424273 -0.973254 -0.844327 -0.809017
-0.0287761 0.0453438 -1.0318 -0.844327 -0.770514
-0.0240024 0.0378217 -1.08068 -0.844327 -0.728969
-0.0125357 0.0197531 -1.1196 -0.844327 -0.684548
--0.00557886 -0.00879087 -1.14843 -0.844327 -0.637425
--0.0301824 -0.0475597 -1.16712 -0.844327 -0.587786
--0.0610043 -0.0961273 -1.17579 -0.844327 -0.535828
--0.0976665 -0.153897 -1.17467 -0.844327 -0.481754
--0.139688 -0.220113 -1.1641 -0.844327 -0.42578
--0.186494 -0.293867 -1.14455 -0.844327 -0.368125
--0.237421 -0.374116 -1.11659 -0.844327 -0.309018
--0.291733 -0.459696 -1.08086 -0.844327 -0.248691
--0.348625 -0.549343 -1.03813 -0.844327 -0.187382
--0.407242 -0.641709 -0.989205 -0.844327 -0.125334
--0.46669 -0.735384 -0.934958 -0.844327 -0.0627915
--0.52605 -0.82892 -0.876308 -0.844327 -9.80385e-07
--0.58439 -0.92085 -0.814199 -0.844327 0.0627895
--0.640786 -1.00972 -0.749591 -0.844327 0.125332
--0.69433 -1.09409 -0.683441 -0.844327 0.18738
--0.744147 -1.17259 -0.616691 -0.844327 0.248689
--0.78941 -1.24391 -0.550251 -0.844327 0.309016
--0.829351 -1.30685 -0.484988 -0.844327 0.368124
--0.863276 -1.3603 -0.42171 -0.844327 0.425778
--0.890574 -1.40332 -0.361157 -0.844327 0.481753
--0.910726 -1.43507 -0.303988 -0.844327 0.535826
--0.923319 -1.45491 -0.250773 -0.844327 0.587784
--0.928044 -1.46236 -0.201987 -0.844327 0.637423
--0.92471 -1.45711 -0.157998 -0.844327 0.684546
--0.913244 -1.43904 -0.119071 -0.844327 0.728968
--0.893689 -1.40823 -0.0853595 -0.844327 0.770513
--0.866211 -1.36493 -0.0569061 -0.844327 0.809016
--0.831092 -1.30959 -0.0336457 -0.844327 0.844327
--0.788727 -1.24283 -0.0154066 -0.844327 0.876306
--0.739618 -1.16545 -0.00191625 -0.844327 0.904827
--0.68437 -1.07839 0.00719261 -0.844327 0.929776
--0.623678 -0.982757 0.0123737 -0.844327 0.951056
--0.558318 -0.879767 0.0141578 -0.844327 0.968583
--0.489138 -0.770756 0.0131417 -0.844327 0.982287
--0.417041 -0.657149 0.00997688 -0.844327 0.992115
--0.342974 -0.540439 0.00535604 -0.844327 0.998027
--0.240877 -0.438153 0 -0.876306 1
--0.173507 -0.315608 -0.0097533 -0.876306 0.998027
--0.107018 -0.194665 -0.0187137 -0.876306 0.992115
--0.0422763 -0.0769002 -0.0261035 -0.876306 0.982287
-0.0198767 0.0361555 -0.0311745 -0.876306 0.968583
-0.0786386 0.143043 -0.0332228 -0.876306 0.951057
-0.133258 0.242394 -0.0316022 -0.876306 0.929777
-0.183044 0.332955 -0.0257366 -0.876306 0.904827
-0.227379 0.4136 -0.0151318 -0.876306 0.876307
-0.265726 0.483354 0.000614624 -0.876306 0.844328
-0.297638 0.541401 0.0218048 -0.876306 0.809017
-0.322762 0.5871 0.0486332 -0.876306 0.770513
-0.340844 0.619992 0.081182 -0.876306 0.728969
-0.351738 0.639808 0.119417 -0.876306 0.684547
-0.355399 0.646468 0.163189 -0.876306 0.637424
-0.351891 0.640087 0.212228 -0.876306 0.587785
-0.341381 0.620969 0.266154 -0.876306 0.535827
-0.324136 0.589601 0.324476 -0.876306 0.481754
-0.300522 0.546647 0.3866 -0.876306 0.42578
-0.270993 0.492934 0.451835 -0.876306 0.368125
-0.236088 0.429442 0.519407 -0.876306 0.309017
-0.196418 0.357283 0.588468 -0.876306 0.24869
-0.152661 0.277689 0.658105 -0.876306 0.187382
-0.105545 0.191986 0.727361 -0.876306 0.125334
-0.0558434 0.101579 0.795244 -0.876306 0.0627908
-0.00435583 0.00792321 0.860742 -0.876306 3.26795e-07
--0.0480995 -0.0874926 0.922843 -0.876306 -0.0627902
--0.100701 -0.183174 0.980548 -0.876306 -0.125333
--0.152637 -0.277645 1.03289 -0.876306 -0.187381
--0.203116 -0.369465 1.07893 -0.876306 -0.24869
--0.251381 -0.45726 1.11782 -0.876306 -0.309017
--0.296724 -0.539738 1.14876 -0.876306 -0.368124
--0.33849 -0.615709 1.17105 -0.876306 -0.425779
--0.376092 -0.684108 1.18407 -0.876306 -0.481753
--0.409021 -0.744006 1.18734 -0.876306 -0.535826
--0.436851 -0.794627 1.18048 -0.876306 -0.587785
--0.459243 -0.835359 1.16324 -0.876306 -0.637424
--0.475958 -0.865763 1.13549 -0.876306 -0.684547
--0.486852 -0.885579 1.09726 -0.876306 -0.728968
--0.491881 -0.894727 1.04868 -0.876306 -0.770513
--0.491104 -0.893313 0.990059 -0.876306 -0.809017
--0.484676 -0.881621 0.921803 -0.876306 -0.844328
--0.47285 -0.860109 0.844464 -0.876306 -0.876306
--0.455968 -0.829402 0.75871 -0.876306 -0.904827
--0.43446 -0.790278 0.665324 -0.876306 -0.929776
--0.408831 -0.74366 0.565192 -0.876306 -0.951056
--0.379658 -0.690593 0.459291 -0.876306 -0.968583
--0.347574 -0.632234 0.348679 -0.876306 -0.982287
--0.313265 -0.569826 0.234474 -0.876306 -0.992115
--0.277451 -0.50468 0.117847 -0.876306 -0.998027
--0.240878 -0.438154 1.22798e-06 -0.876306 -1
--0.204304 -0.371628 -0.117845 -0.876306 -0.998027
--0.16849 -0.306482 -0.234472 -0.876306 -0.992115
--0.134181 -0.244073 -0.348676 -0.876306 -0.982287
--0.102097 -0.185714 -0.459289 -0.876306 -0.968583
--0.0729238 -0.132648 -0.56519 -0.876306 -0.951057
--0.047295 -0.0860291 -0.665322 -0.876306 -0.929777
--0.0257865 -0.0469054 -0.758708 -0.876306 -0.904827
--0.00890477 -0.0161977 -0.844462 -0.876306 -0.876307
-0.00292175 0.00531463 -0.921802 -0.876306 -0.844328
-0.00934971 0.017007 -0.990058 -0.876306 -0.809017
-0.0101271 0.018421 -1.04868 -0.876306 -0.770514
-0.00509764 0.00927256 -1.09725 -0.876306 -0.728969
--0.00579589 -0.0105427 -1.13549 -0.876306 -0.684548
--0.0225105 -0.0409464 -1.16324 -0.876306 -0.637425
--0.0449032 -0.0816784 -1.18048 -0.876306 -0.587786
--0.0727323 -0.132299 -1.18734 -0.876306 -0.535828
--0.105661 -0.192197 -1.18407 -0.876306 -0.481754
--0.143264 -0.260596 -1.17105 -0.876306 -0.42578
--0.18503 -0.336567 -1.14876 -0.876306 -0.368125
--0.230372 -0.419044 -1.11782 -0.876306 -0.309018
--0.278638 -0.506839 -1.07893 -0.876306 -0.248691
--0.329117 -0.59866 -1.03289 -0.876306 -0.187382
--0.381052 -0.69313 -0.980549 -0.876306 -0.125334
--0.433654 -0.788812 -0.922844 -0.876306 -0.0627915
--0.486109 -0.884227 -0.860743 -0.876306 -9.80385e-07
--0.537597 -0.977883 -0.795245 -0.876306 0.0627895
--0.587299 -1.06829 -0.727363 -0.876306 0.125332
--0.634414 -1.15399 -0.658107 -0.876306 0.18738
--0.678172 -1.23359 -0.588469 -0.876306 0.248689
--0.717842 -1.30575 -0.519409 -0.876306 0.309016
--0.752747 -1.36924 -0.451836 -0.876306 0.368124
--0.782276 -1.42295 -0.386601 -0.876306 0.425778
--0.80589 -1.46591 -0.324478 -0.876306 0.481753
--0.823135 -1.49727 -0.266156 -0.876306 0.535826
--0.833646 -1.51639 -0.212229 -0.876306 0.587784
--0.837154 -1.52277 -0.16319 -0.876306 0.637423
--0.833493 -1.51611 -0.119418 -0.876306 0.684546
--0.822599 -1.4963 -0.0811827 -0.876306 0.728968
--0.804516 -1.46341 -0.0486338 -0.876306 0.770513
--0.779393 -1.41771 -0.0218053 -0.876306 0.809016
--0.747482 -1.35966 -0.000615007 -0.876306 0.844327
--0.709134 -1.28991 0.0151316 -0.876306 0.876306
--0.664799 -1.20926 0.0257365 -0.876306 0.904827
--0.615013 -1.1187 0.0316021 -0.876306 0.929776
--0.560394 -1.01935 0.0332228 -0.876306 0.951056
--0.501632 -0.912464 0.0311746 -0.876306 0.968583
--0.439479 -0.799408 0.0261036 -0.876306 0.982287
--0.374738 -0.681644 0.0187139 -0.876306 0.992115
--0.308248 -0.560701 0.0097535 -0.876306 0.998027
--0.21289 -0.452413 0 -0.904827 1
--0.153508 -0.32622 -0.0141411 -0.904827 0.998027
--0.0948925 -0.201656 -0.0274322 -0.904827 0.992115
--0.0378 -0.080329 -0.0390395 -0.904827 0.982287
-0.0170366 0.0362046 -0.0481605 -0.904827 0.968583
-0.068918 0.146458 -0.0540391 -0.904827 0.951057
-0.117189 0.249038 -0.0559805 -0.904827 0.929777
-0.161247 0.342667 -0.0533639 -0.904827 0.904827
-0.200554 0.426197 -0.045655 -0.904827 0.876307
-0.234639 0.498633 -0.0324166 -0.904827 0.844328
-0.263113 0.559142 -0.0133176 -0.904827 0.809017
-0.285665 0.607067 0.0118595 -0.904827 0.770513
-0.302074 0.641939 0.0432132 -0.904827 0.728969
-0.312209 0.663476 0.0807195 -0.904827 0.684547
-0.316029 0.671593 0.12423 -0.904827 0.637424
-0.313586 0.666402 0.173474 -0.904827 0.587785
-0.305022 0.648204 0.228059 -0.904827 0.535827
-0.290569 0.617488 0.287477 -0.904827 0.481754
-0.270539 0.574924 0.351109 -0.904827 0.42578
-0.245327 0.521344 0.418238 -0.904827 0.368125
-0.215396 0.457738 0.488053 -0.904827 0.309017
-0.181276 0.385231 0.559665 -0.904827 0.24869
-0.143553 0.305066 0.632122 -0.904827 0.187382
-0.102859 0.218586 0.704415 -0.904827 0.125334
-0.0598613 0.127211 0.775505 -0.904827 0.0627908
-0.0152544 0.0324172 0.844328 -0.904827 3.26795e-07
--0.0302528 -0.0642904 0.909819 -0.904827 -0.0627902
--0.0759481 -0.161398 0.970925 -0.904827 -0.125333
--0.121127 -0.257407 1.02662 -0.904827 -0.187381
--0.165103 -0.35086 1.07594 -0.904827 -0.24869
--0.207219 -0.440363 1.11795 -0.904827 -0.309017
--0.24686 -0.524603 1.15183 -0.904827 -0.368124
--0.283457 -0.602375 1.17683 -0.904827 -0.425779
--0.3165 -0.672595 1.1923 -0.904827 -0.481753
--0.345545 -0.734319 1.19772 -0.904827 -0.535826
--0.37022 -0.786757 1.19268 -0.904827 -0.587785
--0.390232 -0.829284 1.1769 -0.904827 -0.637424
--0.405369 -0.86145 1.15026 -0.904827 -0.684547
--0.415503 -0.882987 1.11275 -0.904827 -0.728968
--0.420596 -0.89381 1.06453 -0.904827 -0.770513
--0.420693 -0.894017 1.00589 -0.904827 -0.809017
--0.415928 -0.88389 0.937245 -0.904827 -0.844328
--0.406515 -0.863887 0.859172 -0.904827 -0.876306
--0.392749 -0.834633 0.77236 -0.904827 -0.904827
--0.374998 -0.79691 0.677617 -0.904827 -0.929776
--0.353698 -0.751644 0.575864 -0.904827 -0.951056
--0.329343 -0.699887 0.468113 -0.904827 -0.968583
--0.30248 -0.642802 0.355463 -0.904827 -0.982287
--0.2737 -0.58164 0.239078 -0.904827 -0.992115
--0.243622 -0.517722 0.120174 -0.904827 -0.998027
--0.21289 -0.452414 1.25227e-06 -0.904827 -1
--0.182159 -0.387106 -0.120171 -0.904827 -0.998027
--0.152081 -0.323188 -0.239076 -0.904827 -0.992115
--0.1233 -0.262026 -0.355461 -0.904827 -0.982287
--0.096438 -0.204941 -0.468111 -0.904827 -0.968583
--0.0720831 -0.153184 -0.575861 -0.904827 -0.951057
--0.0507824 -0.107918 -0.677615 -0.904827 -0.929777
--0.0330313 -0.0701948 -0.772358 -0.904827 -0.904827
--0.0192652 -0.0409405 -0.85917 -0.904827 -0.876307
--0.00985229 -0.0209371 -0.937243 -0.904827 -0.844328
--0.00508685 -0.0108101 -1.00588 -0.904827 -0.809017
--0.00518419 -0.0110169 -1.06453 -0.904827 -0.770514
--0.0102767 -0.021839 -1.11275 -0.904827 -0.728969
--0.0204111 -0.0433757 -1.15026 -0.904827 -0.684548
--0.0355475 -0.0755422 -1.1769 -0.904827 -0.637425
--0.0555593 -0.118069 -1.19268 -0.904827 -0.587786
--0.0802346 -0.170507 -1.19772 -0.904827 -0.535828
--0.10928 -0.23223 -1.1923 -0.904827 -0.481754
--0.142323 -0.30245 -1.17683 -0.904827 -0.42578
--0.178919 -0.380222 -1.15184 -0.904827 -0.368125
--0.21856 -0.464462 -1.11796 -0.904827 -0.309018
--0.260677 -0.553965 -1.07594 -0.904827 -0.248691
--0.304652 -0.647418 -1.02662 -0.904827 -0.187382
--0.349831 -0.743427 -0.970926 -0.904827 -0.125334
--0.395526 -0.840534 -0.90982 -0.904827 -0.0627915
--0.441034 -0.937242 -0.844329 -0.904827 -9.80385e-07
--0.48564 -1.03204 -0.775506 -0.904827 0.0627895
--0.528638 -1.12341 -0.704417 -0.904827 0.125332
--0.569333 -1.20989 -0.632123 -0.904827 0.18738
--0.607056 -1.29006 -0.559667 -0.904827 0.248689
--0.641175 -1.36256 -0.488054 -0.904827 0.309016
--0.671106 -1.42617 -0.418239 -0.904827 0.368124
--0.696319 -1.47975 -0.351111 -0.904827 0.425778
--0.716348 -1.52231 -0.287478 -0.904827 0.481753
--0.730802 -1.55303 -0.228061 -0.904827 0.535826
--0.739366 -1.57123 -0.173476 -0.904827 0.587784
--0.741809 -1.57642 -0.124231 -0.904827 0.637423
--0.737989 -1.5683 -0.0807204 -0.904827 0.684546
--0.727854 -1.54677 -0.0432139 -0.904827 0.728968
--0.711445 -1.5119 -0.0118601 -0.904827 0.770513
--0.688893 -1.46397 0.0133172 -0.904827 0.809016
--0.66042 -1.40346 0.0324163 -0.904827 0.844327
--0.626334 -1.33103 0.0456548 -0.904827 0.876306
--0.587028 -1.2475 0.0533638 -0.904827 0.904827
--0.54297 -1.15387 0.0559805 -0.904827 0.929776
--0.494699 -1.05129 0.0540392 -0.904827 0.951056
--0.442818 -0.941034 0.0481606 -0.904827 0.968583
--0.387981 -0.8245 0.0390398 -0.904827 0.982287
--0.330889 -0.703173 0.0274325 -0.904827 0.992115
--0.272274 -0.57861 0.0141413 -0.904827 0.998027
--0.184063 -0.464888 0 -0.929776 1
--0.13291 -0.335692 -0.0185148 -0.929776 0.998027
--0.0824107 -0.208145 -0.0361236 -0.929776 0.992115
--0.0332077 -0.0838728 -0.0519371 -0.929776 0.982287
-0.0140747 0.0355486 -0.0650989 -0.929776 0.968583
-0.0588408 0.148614 -0.0748021 -0.929776 0.951057
-0.100532 0.253915 -0.0803035 -0.929776 0.929777
-0.138636 0.350154 -0.0809385 -0.929776 0.904827
-0.172692 0.43617 -0.0761332 -0.929776 0.876307
-0.202301 0.510953 -0.0654159 -0.929776 0.844328
-0.227128 0.573658 -0.0484268 -0.929776 0.809017
-0.246908 0.623616 -0.0249259 -0.929776 0.770513
-0.26145 0.660347 0.00520184 -0.929776 0.728969
-0.270642 0.683562 0.041942 -0.929776 0.684547
-0.274446 0.69317 0.0851496 -0.929776 0.637424
-0.272904 0.689276 0.13455 -0.929776 0.587785
-0.266135 0.672179 0.189739 -0.929776 0.535827
-0.254332 0.642368 0.250194 -0.929776 0.481754
-0.237759 0.60051 0.315272 -0.929776 0.42578
-0.216748 0.547441 0.384228 -0.929776 0.368125
-0.19169 0.484152 0.456216 -0.929776 0.309017
-0.163033 0.411773 0.530311 -0.929776 0.24869
-0.131272 0.331555 0.605514 -0.929776 0.187382
-0.0969414 0.244845 0.680774 -0.929776 0.125334
-0.0606064 0.153074 0.755001 -0.929776 0.0627908
-0.0228545 0.0577238 0.82708 -0.929776 3.26795e-07
--0.0157139 -0.0396887 0.895896 -0.929776 -0.0627902
--0.0544955 -0.13764 0.960343 -0.929776 -0.125333
--0.0928932 -0.234621 1.01935 -0.929776 -0.187381
--0.130325 -0.329164 1.07188 -0.929776 -0.24869
--0.166235 -0.419861 1.11698 -0.929776 -0.309017
--0.2001 -0.505393 1.15377 -0.929776 -0.368124
--0.231436 -0.584539 1.18146 -0.929776 -0.425779
--0.259812 -0.656208 1.19936 -0.929776 -0.481753
--0.284849 -0.719444 1.20692 -0.929776 -0.535826
--0.306231 -0.773449 1.2037 -0.929776 -0.587785
--0.323707 -0.817588 1.1894 -0.929776 -0.637424
--0.337095 -0.851403 1.16389 -0.929776 -0.684547
--0.346287 -0.874618 1.12715 -0.929776 -0.728968
--0.351245 -0.887142 1.07933 -0.929776 -0.770513
--0.352008 -0.889067 1.02072 -0.929776 -0.809017
--0.348683 -0.880671 0.951761 -0.929776 -0.844328
--0.341452 -0.862407 0.873032 -0.929776 -0.876306
--0.33056 -0.834896 0.785247 -0.929776 -0.904827
--0.316315 -0.798919 0.689242 -0.929776 -0.929776
--0.299085 -0.7554 0.585967 -0.929776 -0.951056
--0.279284 -0.705389 0.476473 -0.929776 -0.968583
--0.257373 -0.650049 0.361897 -0.929776 -0.982287
--0.233848 -0.590631 0.243446 -0.929776 -0.992115
--0.209231 -0.528455 0.122382 -0.929776 -0.998027
--0.184063 -0.464889 1.27532e-06 -0.929776 -1
--0.158895 -0.401323 -0.122379 -0.929776 -0.998027
--0.134278 -0.339147 -0.243444 -0.929776 -0.992115
--0.110753 -0.279729 -0.361895 -0.929776 -0.982287
--0.0888418 -0.224388 -0.476471 -0.929776 -0.968583
--0.0690411 -0.174378 -0.585965 -0.929776 -0.951057
--0.0518104 -0.130858 -0.68924 -0.929776 -0.929777
--0.0375661 -0.0948808 -0.785245 -0.929776 -0.904827
--0.0266738 -0.0673701 -0.873031 -0.929776 -0.876307
--0.0194422 -0.0491054 -0.951759 -0.929776 -0.844328
--0.0161178 -0.0407089 -1.02072 -0.929776 -0.809017
--0.0168801 -0.0426341 -1.07933 -0.929776 -0.770514
--0.0218384 -0.0551574 -1.12715 -0.929776 -0.728969
--0.0310299 -0.0783724 -1.16389 -0.929776 -0.684548
--0.0444183 -0.112188 -1.1894 -0.929776 -0.637425
--0.0618942 -0.156326 -1.2037 -0.929776 -0.587786
--0.083276 -0.210331 -1.20692 -0.929776 -0.535828
--0.108313 -0.273567 -1.19936 -0.929776 -0.481754
--0.136689 -0.345235 -1.18146 -0.929776 -0.42578
--0.168025 -0.424382 -1.15377 -0.929776 -0.368125
--0.201889 -0.509913 -1.11699 -0.929776 -0.309018
--0.237799 -0.600611 -1.07188 -0.929776 -0.248691
--0.275231 -0.695153 -1.01935 -0.929776 -0.187382
--0.313629 -0.792134 -0.960344 -0.929776 -0.125334
--0.352411 -0.890085 -0.895897 -0.929776 -0.0627915
--0.390979 -0.987498 -0.827082 -0.929776 -9.80385e-07
--0.428731 -1.08285 -0.755002 -0.929776 0.0627895
--0.465066 -1.17462 -0.680776 -0.929776 0.125332
--0.499397 -1.26133 -0.605516 -0.929776 0.18738
--0.531158 -1.34155 -0.530312 -0.929776 0.248689
--0.559815 -1.41393 -0.456218 -0.929776 0.309016
--0.584873 -1.47722 -0.384229 -0.929776 0.368124
--0.605884 -1.53028 -0.315274 -0.929776 0.425778
--0.622457 -1.57214 -0.250195 -0.929776 0.481753
--0.634261 -1.60196 -0.189741 -0.929776 0.535826
--0.64103 -1.61905 -0.134551 -0.929776 0.587784
--0.642571 -1.62295 -0.0851506 -0.929776 0.637423
--0.638767 -1.61334 -0.0419428 -0.929776 0.684546
--0.629576 -1.59012 -0.00520254 -0.929776 0.728968
--0.615033 -1.55339 0.0249253 -0.929776 0.770513
--0.595254 -1.50343 0.0484264 -0.929776 0.809016
--0.570427 -1.44073 0.0654156 -0.929776 0.844327
--0.540818 -1.36595 0.076133 -0.929776 0.876306
--0.506762 -1.27993 0.0809385 -0.929776 0.904827
--0.468658 -1.18369 0.0803036 -0.929776 0.929776
--0.426967 -1.07839 0.0748022 -0.929776 0.951056
--0.382201 -0.965327 0.0650991 -0.929776 0.968583
--0.334919 -0.845906 0.0519374 -0.929776 0.982287
--0.285716 -0.721634 0.036124 -0.929776 0.992115
--0.235216 -0.594087 0.0185152 -0.929776 0.998027
--0.154509 -0.475528 0 -0.951056 1
--0.111771 -0.343993 -0.0228704 -0.951056 0.998027
--0.0695713 -0.214118 -0.0447794 -0.951056 0.992115
--0.0284423 -0.0875362 -0.0647833 -0.951056 0.982287
-0.0111009 0.0341649 -0.0819731 -0.951056 0.968583
-0.0485664 0.149472 -0.0954912 -0.951056 0.951057
-0.083493 0.256964 -0.104547 -0.951056 0.929777
-0.115457 0.355338 -0.108433 -0.951056 0.904827
-0.144077 0.443424 -0.106536 -0.951056 0.876307
-0.169024 0.520201 -0.0983506 -0.951056 0.844328
-0.190019 0.584816 -0.0834883 -0.951056 0.809017
-0.206843 0.636595 -0.0616866 -0.951056 0.770513
-0.219337 0.675048 -0.0328147 -0.951056 0.728969
-0.227405 0.69988 0.00312307 -0.951056 0.684547
-0.231017 0.710994 0.0459848 -0.951056 0.637424
-0.230203 0.708489 0.0954919 -0.951056 0.587785
-0.225059 0.692658 0.151232 -0.951056 0.535827
-0.215743 0.663985 0.212664 -0.951056 0.481754
-0.202469 0.623134 0.279124 -0.951056 0.42578
-0.185509 0.570937 0.349839 -0.951056 0.368125
-0.165184 0.508383 0.42393 -0.951056 0.309017
-0.14186 0.436598 0.500433 -0.951056 0.24869
-0.115941 0.35683 0.578309 -0.951056 0.187382
-0.0878676 0.270428 0.656461 -0.951056 0.125334
-0.0581022 0.17882 0.733751 -0.951056 0.0627908
-0.0271273 0.0834889 0.809017 -0.951056 3.26795e-07
--0.00456455 -0.0140482 0.881089 -0.951056 -0.0627902
--0.0364776 -0.112266 0.948814 -0.951056 -0.125333
--0.0681214 -0.209656 1.01107 -0.951056 -0.187381
--0.0990179 -0.304745 1.06677 -0.951056 -0.24869
--0.128709 -0.396126 1.11491 -0.951056 -0.309017
--0.156765 -0.482472 1.15457 -0.951056 -0.368124
--0.182788 -0.562563 1.18492 -0.951056 -0.425779
--0.206423 -0.635301 1.20523 -0.951056 -0.481753
--0.227356 -0.699727 1.21492 -0.951056 -0.535826
--0.245327 -0.755037 1.21353 -0.951056 -0.587785
--0.260128 -0.800591 1.20073 -0.951056 -0.637424
--0.271609 -0.835925 1.17637 -0.951056 -0.684547
--0.279678 -0.860757 1.14044 -0.951056 -0.728968
--0.284302 -0.87499 1.09306 -0.951056 -0.770513
--0.285511 -0.878709 1.03455 -0.951056 -0.809017
--0.283391 -0.872185 0.965337 -0.951056 -0.844328
--0.278088 -0.855864 0.886031 -0.951056 -0.876306
--0.269801 -0.83036 0.79736 -0.951056 -0.904827
--0.258782 -0.796446 0.700186 -0.951056 -0.929776
--0.245327 -0.755037 0.595492 -0.951056 -0.951056
--0.229777 -0.707178 0.484363 -0.951056 -0.968583
--0.212505 -0.654022 0.367974 -0.951056 -0.982287
--0.193917 -0.596813 0.247574 -0.951056 -0.992115
--0.174438 -0.536862 0.124469 -0.951056 -0.998027
--0.154509 -0.475529 1.29711e-06 -0.951056 -1
--0.134581 -0.414196 -0.124466 -0.951056 -0.998027
--0.115102 -0.354245 -0.247572 -0.951056 -0.992115
--0.0965129 -0.297035 -0.367971 -0.951056 -0.982287
--0.0792414 -0.243879 -0.484361 -0.951056 -0.968583
--0.0636909 -0.19602 -0.59549 -0.951056 -0.951057
--0.0502364 -0.154611 -0.700184 -0.951056 -0.929777
--0.039217 -0.120697 -0.797358 -0.951056 -0.904827
--0.0309302 -0.095193 -0.886029 -0.951056 -0.876307
--0.025627 -0.0788714 -0.965336 -0.951056 -0.844328
--0.023507 -0.072347 -1.03454 -0.951056 -0.809017
--0.0247155 -0.0760662 -1.09306 -0.951056 -0.770514
--0.0293398 -0.0902983 -1.14043 -0.951056 -0.728969
--0.0374083 -0.115131 -1.17637 -0.951056 -0.684548
--0.0488891 -0.150465 -1.20073 -0.951056 -0.637425
--0.0636905 -0.196018 -1.21353 -0.951056 -0.587786
--0.0816616 -0.251328 -1.21492 -0.951056 -0.535828
--0.102595 -0.315753 -1.20523 -0.951056 -0.481754
--0.126229 -0.388491 -1.18492 -0.951056 -0.42578
--0.152252 -0.468582 -1.15457 -0.951056 -0.368125
--0.180308 -0.554929 -1.11491 -0.951056 -0.309018
--0.209999 -0.646309 -1.06677 -0.951056 -0.248691
--0.240896 -0.741399 -1.01107 -0.951056 -0.187382
--0.27254 -0.838788 -0.948815 -0.951056 -0.125334
--0.304453 -0.937006 -0.881091 -0.951056 -0.0627915
--0.336144 -1.03454 -0.809018 -0.951056 -9.80385e-07
--0.367119 -1.12987 -0.733753 -0.951056 0.0627895
--0.396885 -1.22148 -0.656463 -0.951056 0.125332
--0.424959 -1.30788 -0.578311 -0.951056 0.18738
--0.450877 -1.38765 -0.500434 -0.951056 0.248689
--0.474201 -1.45944 -0.423931 -0.951056 0.309016
--0.494527 -1.52199 -0.34984 -0.951056 0.368124
--0.511487 -1.57419 -0.279126 -0.951056 0.425778
--0.52476 -1.61504 -0.212665 -0.951056 0.481753
--0.534077 -1.64371 -0.151233 -0.951056 0.535826
--0.53922 -1.65954 -0.095493 -0.951056 0.587784
--0.540035 -1.66205 -0.0459857 -0.951056 0.637423
--0.536423 -1.65094 -0.00312389 -0.951056 0.684546
--0.528355 -1.6261 0.032814 -0.951056 0.728968
--0.515861 -1.58765 0.0616861 -0.951056 0.770513
--0.499037 -1.53587 0.0834879 -0.951056 0.809016
--0.478042 -1.47126 0.0983503 -0.951056 0.844327
--0.453096 -1.39448 0.106536 -0.951056 0.876306
--0.424475 -1.3064 0.108433 -0.951056 0.904827
--0.392512 -1.20802 0.104547 -0.951056 0.929776
--0.357585 -1.10053 0.0954914 -0.951056 0.951056
--0.32012 -0.985224 0.0819734 -0.951056 0.968583
--0.280576 -0.863523 0.0647837 -0.951056 0.982287
--0.239447 -0.736941 0.0447798 -0.951056 0.992115
--0.197248 -0.607066 0.0228708 -0.951056 0.998027
--0.124345 -0.484291 0 -0.968583 1
--0.0901461 -0.351094 -0.0272033 -0.968583 0.998027
--0.0563729 -0.219557 -0.053391 -0.968583 0.992115
--0.0234459 -0.0913153 -0.0775656 -0.968583 0.982287
-0.00822764 0.0320444 -0.0987664 -0.968583 0.968583
-0.0382586 0.149007 -0.116086 -0.968583 0.951057
-0.0662822 0.258151 -0.128688 -0.968583 0.929777
-0.0919629 0.35817 -0.135821 -0.968583 0.904827
-0.115 0.447892 -0.136834 -0.968583 0.876307
-0.13513 0.526295 -0.131188 -0.968583 0.844328
-0.152134 0.592521 -0.118467 -0.968583 0.809017
-0.165837 0.645891 -0.0983865 -0.968583 0.770513
-0.176113 0.685911 -0.0707988 -0.968583 0.728969
-0.182884 0.712282 -0.0356989 -0.968583 0.684547
-0.186123 0.724899 0.00677456 -0.968583 0.637424
-0.185855 0.723855 0.05634 -0.968583 0.587785
-0.182153 0.709437 0.112575 -0.968583 0.535827
-0.175139 0.682119 0.174924 -0.968583 0.481754
-0.164981 0.642558 0.242701 -0.968583 0.42578
-0.151892 0.591577 0.315104 -0.968583 0.368125
-0.136121 0.530155 0.391225 -0.968583 0.309017
-0.117957 0.45941 0.470061 -0.968583 0.24869
-0.0977172 0.380582 0.550533 -0.968583 0.187382
-0.0757457 0.295009 0.631501 -0.968583 0.125334
-0.0524067 0.20411 0.711778 -0.968583 0.0627908
-0.028079 0.10936 0.790155 -0.968583 3.26795e-07
-0.00314969 0.0122672 0.865413 -0.968583 -0.0627902
--0.0219916 -0.0856511 0.936348 -0.968583 -0.125333
--0.0469589 -0.182892 1.00179 -0.968583 -0.187381
--0.0713764 -0.277992 1.0606 -0.968583 -0.24869
--0.0948835 -0.369546 1.11174 -0.968583 -0.309017
--0.117141 -0.456233 1.15423 -0.968583 -0.368124
--0.137837 -0.536837 1.18721 -0.968583 -0.425779
--0.156689 -0.610261 1.20991 -0.968583 -0.481753
--0.173452 -0.675547 1.22172 -0.968583 -0.535826
--0.187918 -0.73189 1.22216 -0.968583 -0.587785
--0.199924 -0.77865 1.21088 -0.968583 -0.637424
--0.209349 -0.815359 1.1877 -0.968583 -0.684547
--0.21612 -0.84173 1.1526 -0.968583 -0.728968
--0.22021 -0.857659 1.10571 -0.968583 -0.770513
--0.221639 -0.863225 1.04735 -0.968583 -0.809017
--0.220475 -0.85869 0.977962 -0.968583 -0.844328
--0.216829 -0.844488 0.898155 -0.968583 -0.876306
--0.210856 -0.821225 0.808685 -0.968583 -0.904827
--0.202751 -0.789659 0.71044 -0.968583 -0.929776
--0.192746 -0.750694 0.60443 -0.968583 -0.951056
--0.181106 -0.705358 0.491775 -0.968583 -0.968583
--0.168122 -0.65479 0.373688 -0.968583 -0.982287
--0.15411 -0.600218 0.251458 -0.968583 -0.992115
--0.139403 -0.542938 0.126433 -0.968583 -0.998027
--0.124346 -0.484292 1.31762e-06 -0.968583 -1
--0.109288 -0.425646 -0.126431 -0.968583 -0.998027
--0.0945807 -0.368366 -0.251455 -0.968583 -0.992115
--0.0805689 -0.313794 -0.373685 -0.968583 -0.982287
--0.0675852 -0.263226 -0.491772 -0.968583 -0.968583
--0.0559448 -0.21789 -0.604428 -0.968583 -0.951057
--0.0459401 -0.178924 -0.710438 -0.968583 -0.929777
--0.0378354 -0.147358 -0.808683 -0.968583 -0.904827
--0.0318623 -0.124095 -0.898153 -0.968583 -0.876307
--0.028216 -0.109894 -0.97796 -0.968583 -0.844328
--0.0270514 -0.105358 -1.04735 -0.968583 -0.809017
--0.0284805 -0.110924 -1.10571 -0.968583 -0.770514
--0.0325703 -0.126853 -1.1526 -0.968583 -0.728969
--0.0393412 -0.153223 -1.1877 -0.968583 -0.684548
--0.0487664 -0.189932 -1.21088 -0.968583 -0.637425
--0.0607723 -0.236692 -1.22216 -0.968583 -0.587786
--0.0752388 -0.293035 -1.22172 -0.968583 -0.535828
--0.0920014 -0.358321 -1.20991 -0.968583 -0.481754
--0.110853 -0.431744 -1.18721 -0.968583 -0.42578
--0.131549 -0.512348 -1.15423 -0.968583 -0.368125
--0.153807 -0.599036 -1.11174 -0.968583 -0.309018
--0.177314 -0.690589 -1.0606 -0.968583 -0.248691
--0.201731 -0.785689 -1.00179 -0.968583 -0.187382
--0.226699 -0.88293 -0.936349 -0.968583 -0.125334
--0.25184 -0.980848 -0.865415 -0.968583 -0.0627915
--0.276769 -1.07794 -0.790156 -0.968583 -9.80385e-07
--0.301097 -1.17269 -0.71178 -0.968583 0.0627895
--0.324436 -1.26359 -0.631502 -0.968583 0.125332
--0.346408 -1.34916 -0.550535 -0.968583 0.18738
--0.366647 -1.42799 -0.470062 -0.968583 0.248689
--0.384812 -1.49874 -0.391226 -0.968583 0.309016
--0.400582 -1.56016 -0.315106 -0.968583 0.368124
--0.413672 -1.61114 -0.242702 -0.968583 0.425778
--0.42383 -1.6507 -0.174925 -0.968583 0.481753
--0.430844 -1.67802 -0.112577 -0.968583 0.535826
--0.434546 -1.69244 -0.0563411 -0.968583 0.587784
--0.434814 -1.69348 -0.00677552 -0.968583 0.637423
--0.431575 -1.68087 0.0356981 -0.968583 0.684546
--0.424804 -1.65449 0.0707982 -0.968583 0.728968
--0.414528 -1.61447 0.098386 -0.968583 0.770513
--0.400825 -1.5611 0.118467 -0.968583 0.809016
--0.383821 -1.49488 0.131188 -0.968583 0.844327
--0.363691 -1.41648 0.136834 -0.968583 0.876306
--0.340654 -1.32676 0.135821 -0.968583 0.904827
--0.314974 -1.22674 0.128688 -0.968583 0.929776
--0.28695 -1.11759 0.116086 -0.968583 0.951056
--0.256919 -1.00063 0.0987668 -0.968583 0.968583
--0.225246 -0.87727 0.0775661 -0.968583 0.982287
--0.192319 -0.749028 0.0533915 -0.968583 0.992115
--0.158545 -0.617491 0.0272039 -0.968583 0.998027
--0.0936911 -0.491144 0 -0.982287 1
--0.0680956 -0.356968 -0.0315094 -0.982287 0.998027
--0.0428151 -0.224444 -0.0619498 -0.982287 0.992115
--0.0181599 -0.0951972 -0.0902714 -0.982287 0.982287
-0.00556871 0.029192 -0.115462 -0.982287 0.968583
-0.0280832 0.147216 -0.136566 -0.982287 0.951057
-0.0491136 0.257461 -0.152702 -0.982287 0.929777
-0.0684119 0.358626 -0.163075 -0.982287 0.904827
-0.0857549 0.449541 -0.166997 -0.982287 0.876307
-0.100948 0.529188 -0.163896 -0.982287 0.844328
-0.113829 0.59671 -0.153329 -0.982287 0.809017
-0.124267 0.651428 -0.134989 -0.982287 0.770513
-0.132168 0.692846 -0.108713 -0.982287 0.728969
-0.137474 0.72066 -0.0744857 -0.982287 0.684547
-0.140164 0.73476 -0.0324423 -0.982287 0.637424
-0.140253 0.735231 0.0171325 -0.982287 0.587785
-0.137796 0.72235 0.0738078 -0.982287 0.535827
-0.132881 0.696584 0.137011 -0.982287 0.481754
-0.12563 0.658574 0.206038 -0.982287 0.42578
-0.116198 0.60913 0.280059 -0.982287 0.368125
-0.10477 0.549219 0.358133 -0.982287 0.309017
-0.0915542 0.479941 0.439225 -0.982287 0.24869
-0.0767852 0.40252 0.522214 -0.982287 0.187382
-0.060715 0.318277 0.605917 -0.982287 0.125334
-0.0436108 0.228615 0.689102 -0.982287 0.0627908
-0.0257508 0.13499 0.770513 -0.982287 3.26795e-07
-0.00741947 0.038894 0.848883 -0.982287 -0.0627902
--0.011097 -0.058172 0.922958 -0.982287 -0.125333
--0.0295148 -0.154721 0.991517 -0.982287 -0.187381
--0.0475575 -0.249304 1.05339 -0.982287 -0.24869
--0.0649598 -0.340529 1.10747 -0.982287 -0.309017
--0.0814721 -0.427089 1.15275 -0.982287 -0.368124
--0.0968639 -0.507776 1.18832 -0.982287 -0.425779
--0.110928 -0.581501 1.2134 -0.982287 -0.481753
--0.123482 -0.647314 1.22732 -0.982287 -0.535826
--0.134375 -0.704413 1.22958 -0.982287 -0.587785
--0.143483 -0.752159 1.21982 -0.982287 -0.637424
--0.150717 -0.790084 1.19785 -0.982287 -0.684547
--0.156023 -0.817898 1.16362 -0.982287 -0.728968
--0.159379 -0.835491 1.11728 -0.982287 -0.770513
--0.160799 -0.842934 1.05912 -0.982287 -0.809017
--0.16033 -0.840477 0.989621 -0.982287 -0.844328
--0.158054 -0.828544 0.909393 -0.982287 -0.876306
--0.154082 -0.807724 0.819213 -0.982287 -0.904827
--0.148557 -0.778759 0.719992 -0.982287 -0.929776
--0.141646 -0.742533 0.612771 -0.982287 -0.951056
--0.133543 -0.700054 0.498701 -0.982287 -0.968583
--0.12446 -0.652439 0.379032 -0.982287 -0.982287
--0.114627 -0.600894 0.255093 -0.982287 -0.992115
--0.104287 -0.546689 0.128273 -0.982287 -0.998027
--0.0936912 -0.491144 1.33683e-06 -0.982287 -1
--0.0830954 -0.435599 -0.12827 -0.982287 -0.998027
--0.0727553 -0.381395 -0.25509 -0.982287 -0.992115
--0.0629224 -0.329849 -0.37903 -0.982287 -0.982287
--0.0538393 -0.282234 -0.498699 -0.982287 -0.968583
--0.045736 -0.239755 -0.612769 -0.982287 -0.951057
--0.0388254 -0.203529 -0.71999 -0.982287 -0.929777
--0.0332999 -0.174563 -0.819211 -0.982287 -0.904827
--0.0293282 -0.153743 -0.909391 -0.982287 -0.876307
--0.0270519 -0.14181 -0.989619 -0.982287 -0.844328
--0.0265832 -0.139353 -1.05912 -0.982287 -0.809017
--0.028003 -0.146796 -1.11728 -0.982287 -0.770514
--0.031359 -0.164389 -1.16362 -0.982287 -0.728969
--0.0366648 -0.192202 -1.19785 -0.982287 -0.684548
--0.0438994 -0.230127 -1.21982 -0.982287 -0.637425
--0.0530074 -0.277873 -1.22958 -0.982287 -0.587786
--0.0638996 -0.334972 -1.22732 -0.982287 -0.535828
--0.0764541 -0.400784 -1.2134 -0.982287 -0.481754
--0.090518 -0.47451 -1.18833 -0.982287 -0.42578
--0.10591 -0.555196 -1.15275 -0.982287 -0.368125
--0.122422 -0.641756 -1.10747 -0.982287 -0.309018
--0.139824 -0.732981 -1.05339 -0.982287 -0.248691
--0.157867 -0.827564 -0.991518 -0.982287 -0.187382
--0.176285 -0.924113 -0.92296 -0.982287 -0.125334
--0.194801 -1.02118 -0.848885 -0.982287 -0.0627915
--0.213133 -1.11728 -0.770515 -0.982287 -9.80385e-07
--0.230993 -1.2109 -0.689104 -0.982287 0.0627895
--0.248097 -1.30056 -0.605918 -0.982287 0.125332
--0.264167 -1.38481 -0.522216 -0.982287 0.18738
--0.278936 -1.46223 -0.439227 -0.982287 0.248689
--0.292152 -1.5315 -0.358135 -0.982287 0.309016
--0.30358 -1.59142 -0.28006 -0.982287 0.368124
--0.313012 -1.64086 -0.206039 -0.982287 0.425778
--0.320263 -1.67887 -0.137013 -0.982287 0.481753
--0.325179 -1.70464 -0.073809 -0.982287 0.535826
--0.327636 -1.71752 -0.0171336 -0.982287 0.587784
--0.327546 -1.71705 0.0324414 -0.982287 0.637423
--0.324856 -1.70295 0.0744849 -0.982287 0.684546
--0.31955 -1.67513 0.108712 -0.982287 0.728968
--0.31165 -1.63372 0.134989 -0.982287 0.770513
--0.301212 -1.579 0.153329 -0.982287 0.809016
--0.288331 -1.51148 0.163896 -0.982287 0.844327
--0.273138 -1.43183 0.166997 -0.982287 0.876306
--0.255794 -1.34091 0.163075 -0.982287 0.904827
--0.236496 -1.23975 0.152702 -0.982287 0.929776
--0.215466 -1.12951 0.136567 -0.982287 0.951056
--0.192951 -1.01148 0.115463 -0.982287 0.968583
--0.169223 -0.887092 0.090272 -0.982287 0.982287
--0.144568 -0.757846 0.0619505 -0.982287 0.992115
--0.119287 -0.625322 0.0315101 -0.982287 0.998027
--0.0626671 -0.496057 0 -0.992115 1
--0.0456796 -0.361588 -0.0357844 -0.992115 0.998027
--0.0288984 -0.228752 -0.0704476 -0.992115 0.992115
--0.0125269 -0.0991601 -0.102888 -0.992115 0.982287
-0.00323742 0.0256266 -0.132044 -0.992115 0.968583
-0.0182061 0.144115 -0.156912 -0.992115 0.951057
-0.0322023 0.254905 -0.176564 -0.992115 0.929777
-0.0450631 0.356708 -0.190167 -0.992115 0.904827
-0.0566422 0.448365 -0.196995 -0.992115 0.876307
-0.0668118 0.528866 -0.196443 -0.992115 0.844328
-0.0754646 0.597359 -0.18804 -0.992115 0.809017
-0.0825151 0.653169 -0.171459 -0.992115 0.770513
-0.0879006 0.6958 -0.14652 -0.992115 0.728969
-0.0915825 0.724945 -0.113199 -0.992115 0.684547
-0.0935462 0.740489 -0.0716272 -0.992115 0.637424
-0.0938014 0.742509 -0.0220919 -0.992115 0.587785
-0.0923819 0.731273 0.0349672 -0.992115 0.535827
-0.0893447 0.707231 0.0989636 -0.992115 0.481754
-0.084769 0.67101 0.169172 -0.992115 0.42578
-0.0787548 0.623404 0.244737 -0.992115 0.368125
-0.0714216 0.565356 0.324689 -0.992115 0.309017
-0.0629058 0.497947 0.407956 -0.992115 0.24869
-0.0533589 0.422376 0.493379 -0.992115 0.187382
-0.0429448 0.339941 0.579735 -0.992115 0.125334
-0.0318375 0.252018 0.665746 -0.992115 0.0627908
-0.0202179 0.16004 0.750111 -0.992115 3.26795e-07
-0.0082712 0.0654728 0.831515 -0.992115 -0.0627902
--0.00381614 -0.0302076 0.908658 -0.992115 -0.125333
--0.0158593 -0.125538 0.980269 -0.992115 -0.187381
--0.0276779 -0.219092 1.04513 -0.992115 -0.24869
--0.0390992 -0.309499 1.10211 -0.992115 -0.309017
--0.04996 -0.395471 1.15013 -0.992115 -0.368124
--0.06011 -0.475816 1.18827 -0.992115 -0.425779
--0.0694136 -0.549461 1.21569 -0.992115 -0.481753
--0.0777519 -0.615465 1.23171 -0.992115 -0.535826
--0.0850249 -0.673036 1.2358 -0.992115 -0.587785
--0.0911524 -0.72154 1.22757 -0.992115 -0.637424
--0.0960756 -0.760511 1.20681 -0.992115 -0.684547
--0.0997575 -0.789656 1.17349 -0.992115 -0.728968
--0.102184 -0.80886 1.12774 -0.992115 -0.770513
--0.103362 -0.818186 1.06985 -0.992115 -0.809017
--0.103322 -0.817872 1.0003 -0.992115 -0.844328
--0.102116 -0.808326 0.919733 -0.992115 -0.876306
--0.0998159 -0.790118 0.828932 -0.992115 -0.904827
--0.0965126 -0.76397 0.728834 -0.992115 -0.929776
--0.0923147 -0.73074 0.620507 -0.992115 -0.951056
--0.0873464 -0.691412 0.505135 -0.992115 -0.968583
--0.0817451 -0.647074 0.384003 -0.992115 -0.982287
--0.0756594 -0.598901 0.258477 -0.992115 -0.992115
--0.0692459 -0.548134 0.129986 -0.992115 -0.998027
--0.0626672 -0.496058 1.35472e-06 -0.992115 -1
--0.0560884 -0.443982 -0.129983 -0.992115 -0.998027
--0.0496749 -0.393214 -0.258474 -0.992115 -0.992115
--0.0435892 -0.345041 -0.384 -0.992115 -0.982287
--0.0379879 -0.300703 -0.505133 -0.992115 -0.968583
--0.0330196 -0.261375 -0.620505 -0.992115 -0.951057
--0.0288217 -0.228145 -0.728832 -0.992115 -0.929777
--0.0255183 -0.201997 -0.82893 -0.992115 -0.904827
--0.0232181 -0.183789 -0.919732 -0.992115 -0.876307
--0.0220121 -0.174243 -1.0003 -0.992115 -0.844328
--0.0219724 -0.173928 -1.06985 -0.992115 -0.809017
--0.0231506 -0.183254 -1.12774 -0.992115 -0.770514
--0.0255766 -0.202458 -1.17349 -0.992115 -0.728969
--0.0292585 -0.231603 -1.20681 -0.992115 -0.684548
--0.0341816 -0.270573 -1.22757 -0.992115 -0.637425
--0.0403091 -0.319077 -1.2358 -0.992115 -0.587786
--0.0475821 -0.376648 -1.23171 -0.992115 -0.535828
--0.0559204 -0.442652 -1.21569 -0.992115 -0.481754
--0.065224 -0.516297 -1.18827 -0.992115 -0.42578
--0.075374 -0.596642 -1.15014 -0.992115 -0.368125
--0.0862348 -0.682613 -1.10211 -0.992115 -0.309018
--0.097656 -0.773021 -1.04514 -0.992115 -0.248691
--0.109475 -0.866574 -0.980271 -0.992115 -0.187382
--0.121518 -0.961905 -0.908659 -0.992115 -0.125334
--0.133605 -1.05759 -0.831517 -0.992115 -0.0627915
--0.145552 -1.15215 -0.750113 -0.992115 -9.80385e-07
--0.157171 -1.24413 -0.665748 -0.992115 0.0627895
--0.168279 -1.33205 -0.579736 -0.992115 0.125332
--0.178693 -1.41449 -0.493381 -0.992115 0.18738
--0.18824 -1.49006 -0.407957 -0.992115 0.248689
--0.196756 -1.55747 -0.324691 -0.992115 0.309016
--0.204089 -1.61552 -0.244738 -0.992115 0.368124
--0.210103 -1.66312 -0.169173 -0.992115 0.425778
--0.214679 -1.69934 -0.098965 -0.992115 0.481753
--0.217716 -1.72339 -0.0349685 -0.992115 0.535826
--0.219136 -1.73462 0.0220908 -0.992115 0.587784
--0.21888 -1.7326 0.0716263 -0.992115 0.637423
--0.216917 -1.71706 0.113198 -0.992115 0.684546
--0.213235 -1.68792 0.146519 -0.992115 0.728968
--0.207849 -1.64528 0.171458 -0.992115 0.770513
--0.200799 -1.58948 0.18804 -0.992115 0.809016
--0.192146 -1.52098 0.196443 -0.992115 0.844327
--0.181977 -1.44048 0.196995 -0.992115 0.876306
--0.170398 -1.34882 0.190168 -0.992115 0.904827
--0.157537 -1.24702 0.176565 -0.992115 0.929776
--0.143541 -1.13623 0.156912 -0.992115 0.951056
--0.128572 -1.01774 0.132045 -0.992115 0.968583
--0.112808 -0.892957 0.102889 -0.992115 0.982287
--0.0964361 -0.763365 0.0704483 -0.992115 0.992115
--0.079655 -0.630529 0.0357852 -0.992115 0.998027
--0.0313957 -0.499013 0 -0.998027 1
--0.0229599 -0.364931 -0.0400241 -0.998027 0.998027
--0.0146252 -0.232457 -0.0788758 -0.998027 0.992115
--0.00649122 -0.103173 -0.115403 -0.998027 0.982287
-0.0013452 0.021381 -0.148496 -0.998027 0.968583
-0.00879167 0.139737 -0.177103 -0.998027 0.951057
-0.0157614 0.250517 -0.200253 -0.998027 0.929777
-0.0221746 0.352449 -0.217072 -0.998027 0.904827
-0.0279593 0.444393 -0.226798 -0.998027 0.876307
-0.0330528 0.52535 -0.228795 -0.998027 0.844328
-0.0374022 0.594482 -0.222565 -0.998027 0.809017
-0.0409654 0.651116 -0.207759 -0.998027 0.770513
-0.0437113 0.694761 -0.184182 -0.998027 0.728969
-0.0456207 0.72511 -0.151801 -0.998027 0.684547
-0.046686 0.742042 -0.110741 -0.998027 0.637424
-0.0469116 0.745626 -0.0612945 -0.998027 0.587785
-0.0463133 0.736117 -0.00390778 -0.998027 0.535827
-0.0449186 0.71395 0.0608182 -0.998027 0.481754
-0.0427658 0.679733 0.132138 -0.998027 0.42578
-0.0399033 0.634235 0.209173 -0.998027 0.368125
-0.0363889 0.578377 0.290924 -0.998027 0.309017
-0.0322889 0.51321 0.376284 -0.998027 0.24869
-0.0276768 0.439903 0.464058 -0.998027 0.187382
-0.0226323 0.359725 0.552981 -0.998027 0.125334
-0.0172401 0.274019 0.641734 -0.998027 0.0627908
-0.011588 0.184183 0.728969 -0.998027 3.26795e-07
-0.00576629 0.0916512 0.813327 -0.998027 -0.0627902
--0.000134234 -0.00213356 0.89346 -0.998027 -0.125333
--0.00602354 -0.09574 0.968055 -0.998027 -0.187381
--0.0118137 -0.187771 1.03585 -0.998027 -0.24869
--0.0174205 -0.276887 1.09566 -0.998027 -0.309017
--0.0227643 -0.361822 1.14638 -0.998027 -0.368124
--0.0277716 -0.441411 1.18704 -0.998027 -0.425779
--0.0323763 -0.514598 1.21678 -0.998027 -0.481753
--0.0365201 -0.580461 1.23489 -0.998027 -0.535826
--0.0401539 -0.638218 1.24079 -0.998027 -0.587785
--0.0432385 -0.687245 1.2341 -0.998027 -0.637424
--0.0457447 -0.72708 1.21459 -0.998027 -0.684547
--0.0476541 -0.757428 1.18221 -0.998027 -0.728968
--0.0489592 -0.778172 1.13708 -0.998027 -0.770513
--0.0496633 -0.789363 1.07952 -0.998027 -0.809017
--0.0497806 -0.791228 1.01 -0.998027 -0.844328
--0.0493356 -0.784156 0.929166 -0.998027 -0.876306
--0.0483629 -0.768695 0.837833 -0.998027 -0.904827
--0.0469062 -0.745541 0.736957 -0.998027 -0.929776
--0.0450178 -0.715526 0.627631 -0.998027 -0.951056
--0.0427575 -0.6796 0.511071 -0.998027 -0.968583
--0.0401916 -0.638817 0.388595 -0.998027 -0.982287
--0.0373918 -0.594316 0.261605 -0.998027 -0.992115
--0.0344337 -0.547299 0.13157 -0.998027 -0.998027
--0.0313958 -0.499014 1.37127e-06 -0.998027 -1
--0.0283579 -0.450728 -0.131567 -0.998027 -0.998027
--0.0253998 -0.403712 -0.261602 -0.998027 -0.992115
--0.0225999 -0.35921 -0.388592 -0.998027 -0.982287
--0.0200341 -0.318427 -0.511069 -0.998027 -0.968583
--0.0177737 -0.282501 -0.627629 -0.998027 -0.951057
--0.0158853 -0.252486 -0.736955 -0.998027 -0.929777
--0.0144286 -0.229332 -0.837831 -0.998027 -0.904827
--0.0134559 -0.213871 -0.929164 -0.998027 -0.876307
--0.0130109 -0.206799 -1.01 -0.998027 -0.844328
--0.0131282 -0.208663 -1.07952 -0.998027 -0.809017
--0.0138323 -0.219855 -1.13708 -0.998027 -0.770514
--0.0151374 -0.240598 -1.18221 -0.998027 -0.728969
--0.0170468 -0.270946 -1.21459 -0.998027 -0.684548
--0.0195529 -0.31078 -1.2341 -0.998027 -0.637425
--0.0226375 -0.359807 -1.24079 -0.998027 -0.587786
--0.0262713 -0.417565 -1.23489 -0.998027 -0.535828
--0.0304151 -0.483427 -1.21678 -0.998027 -0.481754
--0.0350198 -0.556615 -1.18704 -0.998027 -0.42578
--0.0400271 -0.636203 -1.14638 -0.998027 -0.368125
--0.0453709 -0.721138 -1.09566 -0.998027 -0.309018
--0.0509776 -0.810254 -1.03585 -0.998027 -0.248691
--0.0567678 -0.902285 -0.968056 -0.998027 -0.187382
--0.0626571 -0.995891 -0.893462 -0.998027 -0.125334
--0.0685577 -1.08968 -0.813328 -0.998027 -0.0627915
--0.0743794 -1.18221 -0.72897 -0.998027 -9.80385e-07
--0.0800314 -1.27204 -0.641735 -0.998027 0.0627895
--0.0854237 -1.35775 -0.552982 -0.998027 0.125332
--0.0904682 -1.43793 -0.46406 -0.998027 0.18738
--0.0950803 -1.51123 -0.376286 -0.998027 0.248689
--0.0991803 -1.5764 -0.290926 -0.998027 0.309016
--0.102695 -1.63226 -0.209175 -0.998027 0.368124
--0.105557 -1.67776 -0.13214 -0.998027 0.425778
--0.10771 -1.71198 -0.0608196 -0.998027 0.481753
--0.109105 -1.73414 0.0039065 -0.998027 0.535826
--0.109703 -1.74365 0.0612934 -0.998027 0.587784
--0.109478 -1.74007 0.110741 -0.998027 0.637423
--0.108412 -1.72314 0.1518 -0.998027 0.684546
--0.106503 -1.69279 0.184182 -0.998027 0.728968
--0.103757 -1.64914 0.207759 -0.998027 0.770513
--0.100194 -1.59251 0.222565 -0.998027 0.809016
--0.0958443 -1.52338 0.228795 -0.998027 0.844327
--0.0907509 -1.44242 0.226799 -0.998027 0.876306
--0.0849662 -1.35048 0.217073 -0.998027 0.904827
--0.078553 -1.24855 0.200254 -0.998027 0.929776
--0.0715833 -1.13777 0.177103 -0.998027 0.951056
--0.0641368 -1.01941 0.148496 -0.998027 0.968583
--0.0563004 -0.894856 0.115404 -0.998027 0.982287
--0.0481665 -0.765573 0.0788766 -0.998027 0.992115
--0.0398318 -0.633098 0.0400249 -0.998027 0.998027
--4.90192e-07 -0.5 0 -1 1
--3.59778e-07 -0.366976 -0.0442243 -1 0.998027
--2.30906e-07 -0.235526 -0.0872262 -1 0.992115
--1.05095e-07 -0.107198 -0.127805 -1 0.982287
-1.61779e-08 0.0165016 -0.164801 -1 0.968583
-1.31504e-07 0.134135 -0.197119 -1 0.951057
-2.39558e-07 0.244351 -0.223744 -1 0.929777
-3.39121e-07 0.345907 -0.243763 -1 0.904827
-4.29096e-07 0.437681 -0.256378 -1 0.876307
-5.08522e-07 0.518696 -0.260922 -1 0.844328
-5.76589e-07 0.588125 -0.256871 -1 0.809017
-6.32651e-07 0.645309 -0.243855 -1 0.770513
-6.7623e-07 0.689759 -0.221663 -1 0.728969
-7.07024e-07 0.72117 -0.190252 -1 0.684547
-7.24913e-07 0.739417 -0.149746 -1 0.637424
-7.29955e-07 0.74456 -0.100437 -1 0.587785
-7.22386e-07 0.736839 -0.0427789 -1 0.535827
-7.02615e-07 0.716672 0.0226127 -1 0.481754
-6.71215e-07 0.684645 0.0949745 -1 0.42578
-6.28916e-07 0.641499 0.173404 -1 0.368125
-5.76589e-07 0.588126 0.256872 -1 0.309017
-5.15234e-07 0.525543 0.344241 -1 0.24869
-4.45963e-07 0.454885 0.434279 -1 0.187382
-3.69979e-07 0.377381 0.525681 -1 0.125334
-2.88562e-07 0.294336 0.617087 -1 0.0627908
-2.03044e-07 0.207107 0.707107 -1 3.26795e-07
-1.14791e-07 0.117088 0.794335 -1 -0.0627902
-2.51771e-08 0.0256808 0.877381 -1 -0.125333
--6.44322e-08 -0.0657213 0.954885 -1 -0.187381
--1.52704e-07 -0.15576 1.02554 -1 -0.24869
--2.38359e-07 -0.243128 1.08813 -1 -0.309017
--3.2019e-07 -0.326597 1.1415 -1 -0.368124
--3.97081e-07 -0.405026 1.18464 -1 -0.425779
--4.68024e-07 -0.477388 1.21667 -1 -0.481753
--5.32133e-07 -0.54278 1.23684 -1 -0.535826
--5.8866e-07 -0.600437 1.24456 -1 -0.587785
--6.37002e-07 -0.649747 1.23942 -1 -0.637424
--6.76714e-07 -0.690253 1.22117 -1 -0.684547
--7.07508e-07 -0.721664 1.18976 -1 -0.728968
--7.29265e-07 -0.743856 1.14531 -1 -0.770513
--7.42026e-07 -0.756872 1.08813 -1 -0.809017
--7.45997e-07 -0.760923 1.0187 -1 -0.844328
--7.41543e-07 -0.756379 0.937682 -1 -0.876306
--7.29175e-07 -0.743764 0.845907 -1 -0.904827
--7.09549e-07 -0.723745 0.744352 -1 -0.929776
--6.83445e-07 -0.69712 0.634136 -1 -0.951056
--6.51761e-07 -0.664802 0.516503 -1 -0.968583
--6.15491e-07 -0.627805 0.392803 -1 -0.982287
--5.75708e-07 -0.587227 0.264476 -1 -0.992115
--5.3355e-07 -0.544225 0.133025 -1 -0.998027
--4.90193e-07 -0.5 1.38647e-06 -1 -1
--4.46836e-07 -0.455776 -0.133022 -1 -0.998027
--4.04677e-07 -0.412774 -0.264473 -1 -0.992115
--3.64895e-07 -0.372195 -0.392801 -1 -0.982287
--3.28624e-07 -0.335199 -0.5165 -1 -0.968583
--2.9694e-07 -0.302881 -0.634134 -1 -0.951057
--2.70837e-07 -0.276255 -0.74435 -1 -0.929777
--2.5121e-07 -0.256236 -0.845905 -1 -0.904827
--2.38842e-07 -0.243621 -0.93768 -1 -0.876307
--2.34387e-07 -0.239077 -1.0187 -1 -0.844328
--2.38359e-07 -0.243128 -1.08812 -1 -0.809017
--2.5112e-07 -0.256144 -1.14531 -1 -0.770514
--2.72876e-07 -0.278336 -1.18976 -1 -0.728969
--3.0367e-07 -0.309746 -1.22117 -1 -0.684548
--3.43382e-07 -0.350252 -1.23942 -1 -0.637425
--3.91724e-07 -0.399562 -1.24456 -1 -0.587786
--4.48251e-07 -0.457219 -1.23684 -1 -0.535828
--5.1236e-07 -0.522611 -1.21667 -1 -0.481754
--5.83302e-07 -0.594973 -1.18465 -1 -0.42578
--6.60193e-07 -0.673402 -1.1415 -1 -0.368125
--7.42024e-07 -0.75687 -1.08813 -1 -0.309018
--8.27679e-07 -0.844239 -1.02554 -1 -0.248691
--9.15951e-07 -0.934277 -0.954887 -1 -0.187382
--1.00556e-06 -1.02568 -0.877383 -1 -0.125334
--1.09517e-06 -1.11709 -0.794337 -1 -0.0627915
--1.18343e-06 -1.20711 -0.707109 -1 -9.80385e-07
--1.26895e-06 -1.29433 -0.617089 -1 0.0627895
--1.35036e-06 -1.37738 -0.525683 -1 0.125332
--1.42635e-06 -1.45488 -0.434281 -1 0.18738
--1.49562e-06 -1.52554 -0.344242 -1 0.248689
--1.55697e-06 -1.58812 -0.256874 -1 0.309016
--1.6093e-06 -1.6415 -0.173405 -1 0.368124
--1.6516e-06 -1.68464 -0.0949761 -1 0.425778
--1.683e-06 -1.71667 -0.0226142 -1 0.481753
--1.70277e-06 -1.73684 0.0427777 -1 0.535826
--1.71034e-06 -1.74456 0.100436 -1 0.587784
--1.7053e-06 -1.73942 0.149745 -1 0.637423
--1.68741e-06 -1.72117 0.190252 -1 0.684546
--1.65662e-06 -1.68976 0.221662 -1 0.728968
--1.61304e-06 -1.64531 0.243854 -1 0.770513
--1.55698e-06 -1.58813 0.256871 -1 0.809016
--1.48891e-06 -1.5187 0.260922 -1 0.844327
--1.40948e-06 -1.43768 0.256378 -1 0.876306
--1.31951e-06 -1.34591 0.243764 -1 0.904827
--1.21995e-06 -1.24435 0.223745 -1 0.929776
--1.11189e-06 -1.13414 0.197119 -1 0.951056
--9.96565e-07 -1.0165 0.164801 -1 0.968583
--8.75292e-07 -0.892805 0.127805 -1 0.982287
--7.49482e-07 -0.764477 0.0872271 -1 0.992115
--6.20609e-07 -0.633026 0.0442252 -1 0.998027
-0.0313948 -0.499013 0 -0.998027 1
-0.0231336 -0.367704 -0.0483809 -0.998027 0.998027
-0.0149688 -0.237926 -0.0954905 -0.998027 0.992115
-0.00699515 -0.111186 -0.14008 -0.998027 0.982287
--0.000695093 0.0110484 -0.180943 -0.998027 0.968583
--0.00801385 0.127379 -0.21694 -0.998027 0.951057
--0.0148784 0.236488 -0.247014 -0.998027 0.929777
--0.0212123 0.337166 -0.270214 -0.998027 0.904827
--0.0269471 0.428319 -0.285705 -0.998027 0.876307
--0.0320225 0.508991 -0.292791 -0.998027 0.844328
--0.0363878 0.578376 -0.290923 -0.998027 0.809017
--0.0400022 0.635827 -0.279709 -0.998027 0.770513
--0.0428356 0.680864 -0.258925 -0.998027 0.728969
--0.0448689 0.713182 -0.228516 -0.998027 0.684547
--0.0460939 0.732653 -0.188603 -0.998027 0.637424
--0.0465139 0.739329 -0.13948 -0.998027 0.587785
--0.0461431 0.733435 -0.0816079 -0.998027 0.535827
--0.0450064 0.715368 -0.015615 -0.998027 0.481754
--0.0431391 0.685688 0.0577171 -0.998027 0.42578
--0.0405861 0.645107 0.137463 -0.998027 0.368125
--0.037401 0.594482 0.222566 -0.998027 0.309017
--0.0336458 0.534793 0.311858 -0.998027 0.24869
--0.029389 0.467132 0.404071 -0.998027 0.187382
--0.0247052 0.392684 0.497862 -0.998027 0.125334
--0.0196736 0.312709 0.591832 -0.998027 0.0627908
--0.0143768 0.228517 0.684547 -0.998027 3.26795e-07
--0.0088994 0.141454 0.77456 -0.998027 -0.0627902
--0.00332663 0.0528761 0.860436 -0.998027 -0.125333
-0.00225678 -0.035871 0.940773 -0.998027 -0.187381
-0.00776809 -0.123472 1.01422 -0.998027 -0.24869
-0.0131278 -0.208664 1.07952 -0.998027 -0.309017
-0.0182609 -0.290253 1.13549 -0.998027 -0.368124
-0.0230979 -0.367136 1.18108 -0.998027 -0.425779
-0.027576 -0.438316 1.21536 -0.998027 -0.481753
-0.0316402 -0.502914 1.23757 -0.998027 -0.535826
-0.0352435 -0.560188 1.2471 -0.998027 -0.587785
-0.0383482 -0.609537 1.24351 -0.998027 -0.637424
-0.0409263 -0.650515 1.22654 -0.998027 -0.684547
-0.0429595 -0.682833 1.19614 -0.998027 -0.728968
-0.0444399 -0.706364 1.1524 -0.998027 -0.770513
-0.0453696 -0.721141 1.09566 -0.998027 -0.809017
-0.0457608 -0.727358 1.02639 -0.998027 -0.844328
-0.0456354 -0.725365 0.945272 -0.998027 -0.876306
-0.0450247 -0.715658 0.853147 -0.998027 -0.904827
-0.0439686 -0.698872 0.751013 -0.998027 -0.929776
-0.042515 -0.675767 0.640015 -0.998027 -0.951056
-0.0407188 -0.647217 0.521424 -0.998027 -0.968583
-0.0386409 -0.61419 0.396624 -0.998027 -0.982287
-0.0363474 -0.577734 0.267085 -0.998027 -0.992115
-0.0339079 -0.538959 0.134348 -0.998027 -0.998027
-0.0313948 -0.499014 1.40031e-06 -0.998027 -1
-0.0288817 -0.459069 -0.134346 -0.998027 -0.998027
-0.0264422 -0.420293 -0.267082 -0.998027 -0.992115
-0.0241486 -0.383838 -0.396621 -0.998027 -0.982287
-0.0220708 -0.350811 -0.521422 -0.998027 -0.968583
-0.0202745 -0.32226 -0.640012 -0.998027 -0.951057
-0.0188209 -0.299155 -0.751011 -0.998027 -0.929777
-0.0177648 -0.282369 -0.853145 -0.998027 -0.904827
-0.0171541 -0.272662 -0.94527 -0.998027 -0.876307
-0.0170287 -0.270669 -1.02639 -0.998027 -0.844328
-0.0174199 -0.276886 -1.09566 -0.998027 -0.809017
-0.0183496 -0.291663 -1.1524 -0.998027 -0.770514
-0.0198299 -0.315193 -1.19613 -0.998027 -0.728969
-0.0218632 -0.347511 -1.22654 -0.998027 -0.684548
-0.0244413 -0.388489 -1.24351 -0.998027 -0.637425
-0.027546 -0.437838 -1.2471 -0.998027 -0.587786
-0.0311493 -0.495111 -1.23757 -0.998027 -0.535828
-0.0352134 -0.55971 -1.21536 -0.998027 -0.481754
-0.0396915 -0.630889 -1.18108 -0.998027 -0.42578
-0.0445285 -0.707772 -1.13549 -0.998027 -0.368125
-0.0496616 -0.789361 -1.07952 -0.998027 -0.309018
-0.0550213 -0.874553 -1.01423 -0.998027 -0.248691
-0.0605326 -0.962154 -0.940775 -0.998027 -0.187382
-0.066116 -1.0509 -0.860438 -0.998027 -0.125334
-0.0716888 -1.13948 -0.774562 -0.998027 -0.0627915
-0.0771663 -1.22654 -0.684549 -0.998027 -9.80385e-07
-0.0824631 -1.31073 -0.591834 -0.998027 0.0627895
-0.0874946 -1.39071 -0.497864 -0.998027 0.125332
-0.0921784 -1.46516 -0.404073 -0.998027 0.18738
-0.0964352 -1.53282 -0.311859 -0.998027 0.248689
-0.10019 -1.59251 -0.222568 -0.998027 0.309016
-0.103376 -1.64313 -0.137464 -0.998027 0.368124
-0.105929 -1.68371 -0.0577187 -0.998027 0.425778
-0.107796 -1.71339 0.0156136 -0.998027 0.481753
-0.108933 -1.73146 0.0816066 -0.998027 0.535826
-0.109303 -1.73736 0.139479 -0.998027 0.587784
-0.108883 -1.73068 0.188603 -0.998027 0.637423
-0.107658 -1.71121 0.228516 -0.998027 0.684546
-0.105625 -1.67889 0.258924 -0.998027 0.728968
-0.102792 -1.63385 0.279709 -0.998027 0.770513
-0.0991774 -1.5764 0.290923 -0.998027 0.809016
-0.0948121 -1.50702 0.292791 -0.998027 0.844327
-0.0897367 -1.42635 0.285705 -0.998027 0.876306
-0.084002 -1.33519 0.270214 -0.998027 0.904827
-0.077668 -1.23452 0.247015 -0.998027 0.929776
-0.0708035 -1.12541 0.216941 -0.998027 0.951056
-0.0634848 -1.00908 0.180944 -0.998027 0.968583
-0.0557945 -0.886843 0.140081 -0.998027 0.982287
-0.0478209 -0.760104 0.0954914 -0.998027 0.992115
-0.0396561 -0.630325 0.0483818 -0.998027 0.998027
-0.0626661 -0.496057 0 -0.992115 1
-0.0463749 -0.367098 -0.0524897 -0.992115 0.998027
-0.0302708 -0.23962 -0.103661 -0.992115 0.992115
-0.0145383 -0.115083 -0.152217 -0.992115 0.982287
--0.000643513 0.00509397 -0.196907 -0.992115 0.968583
--0.0151033 0.119556 -0.236547 -0.992115 0.951057
--0.0286802 0.227029 -0.270041 -0.992115 0.929777
--0.0412257 0.326338 -0.296397 -0.992115 0.904827
--0.0526061 0.416423 -0.31475 -0.992115 0.876307
--0.062704 0.496358 -0.324372 -0.992115 0.844328
--0.0714205 0.565356 -0.324688 -0.992115 0.809017
--0.0786757 0.622787 -0.315288 -0.992115 0.770513
--0.0844104 0.668183 -0.295931 -0.992115 0.728969
--0.0885866 0.701241 -0.266555 -0.992115 0.684547
--0.0911878 0.721832 -0.227275 -0.992115 0.637424
--0.0922192 0.729996 -0.178385 -0.992115 0.587785
--0.0917072 0.725943 -0.120356 -0.992115 0.535827
--0.0896992 0.710048 -0.0538274 -0.992115 0.481754
--0.0862625 0.682843 0.0204027 -0.992115 0.42578
--0.0814829 0.645008 0.101386 -0.992115 0.368125
--0.0754635 0.59736 0.188041 -0.992115 0.309017
--0.0683229 0.540836 0.279167 -0.992115 0.24869
--0.0601933 0.476483 0.373464 -0.992115 0.187382
--0.051218 0.405436 0.469552 -0.992115 0.125334
--0.0415496 0.328901 0.565993 -0.992115 0.0627908
--0.031347 0.248139 0.661312 -0.992115 3.26795e-07
--0.0207734 0.16444 0.754021 -0.992115 -0.0627902
--0.00999333 0.079106 0.842642 -0.992115 -0.125333
-0.000829769 -0.00656835 0.925732 -0.992115 -0.187381
-0.0115361 -0.0913187 1.0019 -0.992115 -0.24869
-0.0219722 -0.173929 1.06985 -0.992115 -0.309017
-0.0319928 -0.253251 1.12836 -0.992115 -0.368124
-0.0414635 -0.32822 1.17634 -0.992115 -0.425779
-0.0502628 -0.397875 1.21285 -0.992115 -0.481753
-0.0582837 -0.461366 1.23708 -0.992115 -0.535826
-0.065435 -0.517976 1.24841 -0.992115 -0.587785
-0.0716434 -0.567121 1.24637 -0.992115 -0.637424
-0.0768537 -0.608365 1.23071 -0.992115 -0.684547
-0.0810299 -0.641423 1.20133 -0.992115 -0.728968
-0.0841556 -0.666165 1.15836 -0.992115 -0.770513
-0.0862337 -0.682616 1.10211 -0.992115 -0.809017
-0.0872869 -0.690952 1.03307 -0.992115 -0.844328
-0.087356 -0.6915 0.95193 -0.992115 -0.876306
-0.0865003 -0.684726 0.859544 -0.992115 -0.904827
-0.0847954 -0.671231 0.756932 -0.992115 -0.929776
-0.0823324 -0.651733 0.645262 -0.992115 -0.951056
-0.0792156 -0.627061 0.525831 -0.992115 -0.968583
-0.0755614 -0.598135 0.400053 -0.992115 -0.982287
-0.0714955 -0.56595 0.269431 -0.992115 -0.992115
-0.0671511 -0.53156 0.135539 -0.992115 -0.998027
-0.0626662 -0.496058 1.41276e-06 -0.992115 -1
-0.0581812 -0.460555 -0.135537 -0.992115 -0.998027
-0.0538368 -0.426165 -0.269428 -0.992115 -0.992115
-0.0497709 -0.393981 -0.40005 -0.992115 -0.982287
-0.0461167 -0.365054 -0.525829 -0.992115 -0.968583
-0.0429999 -0.340382 -0.645259 -0.992115 -0.951057
-0.0405368 -0.320885 -0.75693 -0.992115 -0.929777
-0.0388319 -0.307389 -0.859542 -0.992115 -0.904827
-0.0379762 -0.300615 -0.951928 -0.992115 -0.876307
-0.0380454 -0.301163 -1.03307 -0.992115 -0.844328
-0.0390985 -0.309499 -1.10211 -0.992115 -0.809017
-0.0411766 -0.325949 -1.15836 -0.992115 -0.770514
-0.0443022 -0.350691 -1.20133 -0.992115 -0.728969
-0.0484784 -0.383749 -1.23071 -0.992115 -0.684548
-0.0536887 -0.424993 -1.24637 -0.992115 -0.637425
-0.0598971 -0.474138 -1.24841 -0.992115 -0.587786
-0.0670484 -0.530747 -1.23709 -0.992115 -0.535828
-0.0750692 -0.594239 -1.21285 -0.992115 -0.481754
-0.0838685 -0.663893 -1.17634 -0.992115 -0.42578
-0.0933393 -0.738862 -1.12836 -0.992115 -0.368125
-0.10336 -0.818184 -1.06985 -0.992115 -0.309018
-0.113796 -0.900794 -1.00191 -0.992115 -0.248691
-0.124502 -0.985545 -0.925734 -0.992115 -0.187382
-0.135325 -1.07122 -0.842644 -0.992115 -0.125334
-0.146105 -1.15655 -0.754022 -0.992115 -0.0627915
-0.156679 -1.24025 -0.661314 -0.992115 -9.80385e-07
-0.166882 -1.32101 -0.565995 -0.992115 0.0627895
-0.17655 -1.39755 -0.469554 -0.992115 0.125332
-0.185525 -1.4686 -0.373466 -0.992115 0.18738
-0.193655 -1.53295 -0.279169 -0.992115 0.248689
-0.200796 -1.58947 -0.188043 -0.992115 0.309016
-0.206815 -1.63712 -0.101388 -0.992115 0.368124
-0.211595 -1.67496 -0.0204043 -0.992115 0.425778
-0.215031 -1.70216 0.0538259 -0.992115 0.481753
-0.217039 -1.71806 0.120355 -0.992115 0.535826
-0.217551 -1.72211 0.178384 -0.992115 0.587784
-0.21652 -1.71395 0.227274 -0.992115 0.637423
-0.213919 -1.69336 0.266554 -0.992115 0.684546
-0.209743 -1.6603 0.295931 -0.992115 0.728968
-0.204008 -1.6149 0.315288 -0.992115 0.770513
-0.196753 -1.55747 0.324688 -0.992115 0.809016
-0.188036 -1.48847 0.324372 -0.992115 0.844327
-0.177939 -1.40854 0.31475 -0.992115 0.876306
-0.166558 -1.31845 0.296398 -0.992115 0.904827
-0.154013 -1.21915 0.270041 -0.992115 0.929776
-0.140436 -1.11167 0.236548 -0.992115 0.951056
-0.125976 -0.997211 0.196908 -0.992115 0.968583
-0.110794 -0.877034 0.152218 -0.992115 0.982287
-0.0950618 -0.752497 0.103662 -0.992115 0.992115
-0.0789577 -0.625019 0.0524907 -0.992115 0.998027
-0.0936902 -0.491144 0 -0.982287 1
-0.0696546 -0.365144 -0.0565467 -0.982287 0.998027
-0.045891 -0.24057 -0.111728 -0.982287 0.992115
-0.0226672 -0.118826 -0.164203 -0.982287 0.982287
-0.000243555 -0.00127677 -0.212676 -0.982287 0.968583
--0.0211309 0.110773 -0.255921 -0.982287 0.951057
--0.0412221 0.216095 -0.292801 -0.982287 0.929777
--0.0598141 0.313558 -0.322288 -0.982287 0.904827
--0.0767121 0.402141 -0.343484 -0.982287 0.876307
--0.0917452 0.480948 -0.355632 -0.982287 0.844328
--0.104769 0.549219 -0.358133 -0.982287 0.809017
--0.115666 0.606344 -0.350555 -0.982287 0.770513
--0.124349 0.651864 -0.332646 -0.982287 0.728969
--0.130763 0.685486 -0.30433 -0.982287 0.684547
--0.134881 0.707074 -0.265721 -0.982287 0.637424
--0.13671 0.716662 -0.217114 -0.982287 0.587785
--0.136286 0.714442 -0.158986 -0.982287 0.535827
--0.133677 0.700765 -0.0919866 -0.982287 0.481754
--0.128979 0.676133 -0.0169319 -0.982287 0.42578
--0.122313 0.64119 0.0652095 -0.982287 0.368125
--0.113828 0.59671 0.15333 -0.982287 0.309017
--0.103694 0.543586 0.246201 -0.982287 0.24869
--0.0921006 0.482811 0.342489 -0.982287 0.187382
--0.0792541 0.415467 0.440779 -0.982287 0.125334
--0.0653739 0.342704 0.539595 -0.982287 0.0627908
--0.0506889 0.265722 0.637424 -0.982287 3.26795e-07
--0.0354341 0.185753 0.732737 -0.982287 -0.0627902
--0.0198467 0.104041 0.824016 -0.982287 -0.125333
--0.00416245 0.0218205 0.909778 -0.982287 -0.187381
-0.0113881 -0.0596987 0.988596 -0.982287 -0.24869
-0.026583 -0.139354 1.05912 -0.982287 -0.309017
-0.0412128 -0.216046 1.12011 -0.982287 -0.368124
-0.0550828 -0.288756 1.17045 -0.982287 -0.425779
-0.068017 -0.35656 1.20914 -0.982287 -0.481753
-0.0798601 -0.418644 1.23538 -0.982287 -0.535826
-0.09048 -0.474315 1.24849 -0.982287 -0.587785
-0.0997694 -0.523012 1.24801 -0.982287 -0.637424
-0.107647 -0.564311 1.23366 -0.982287 -0.684547
-0.114061 -0.597932 1.20534 -0.982287 -0.728968
-0.118985 -0.623743 1.16318 -0.982287 -0.770513
-0.122421 -0.641758 1.10747 -0.982287 -0.809017
-0.124401 -0.652138 1.03873 -0.982287 -0.844328
-0.124982 -0.655184 0.957648 -0.982287 -0.876306
-0.124247 -0.651331 0.865093 -0.982287 -0.904827
-0.122304 -0.641141 0.762105 -0.982287 -0.929776
-0.11928 -0.625292 0.649872 -0.982287 -0.951056
-0.115326 -0.604562 0.52972 -0.982287 -0.968583
-0.110605 -0.579817 0.403087 -0.982287 -0.982287
-0.105298 -0.551997 0.271511 -0.982287 -0.992115
-0.0995945 -0.522095 0.136596 -0.982287 -0.998027
-0.0936902 -0.491144 1.42381e-06 -0.982287 -1
-0.0877859 -0.460193 -0.136594 -0.982287 -0.998027
-0.082082 -0.430291 -0.271508 -0.982287 -0.992115
-0.076775 -0.402471 -0.403085 -0.982287 -0.982287
-0.0720548 -0.377726 -0.529717 -0.982287 -0.968583
-0.0681002 -0.356996 -0.64987 -0.982287 -0.951057
-0.0650768 -0.341146 -0.762103 -0.982287 -0.929777
-0.063133 -0.330957 -0.865091 -0.982287 -0.904827
-0.0623981 -0.327104 -0.957646 -0.982287 -0.876307
-0.062979 -0.330149 -1.03873 -0.982287 -0.844328
-0.064959 -0.340529 -1.10747 -0.982287 -0.809017
-0.0683956 -0.358544 -1.16317 -0.982287 -0.770514
-0.0733192 -0.384355 -1.20534 -0.982287 -0.728969
-0.0797327 -0.417976 -1.23365 -0.982287 -0.684548
-0.0876108 -0.459274 -1.24801 -0.982287 -0.637425
-0.0969001 -0.507971 -1.24849 -0.982287 -0.587786
-0.10752 -0.563642 -1.23538 -0.982287 -0.535828
-0.119363 -0.625726 -1.20915 -0.982287 -0.481754
-0.132297 -0.69353 -1.17045 -0.982287 -0.42578
-0.146167 -0.76624 -1.12012 -0.982287 -0.368125
-0.160797 -0.842932 -1.05912 -0.982287 -0.309018
-0.175992 -0.922587 -0.988597 -0.982287 -0.248691
-0.191542 -1.00411 -0.90978 -0.982287 -0.187382
-0.207227 -1.08633 -0.824018 -0.982287 -0.125334
-0.222814 -1.16804 -0.732739 -0.982287 -0.0627915
-0.238069 -1.24801 -0.637426 -0.982287 -9.80385e-07
-0.252754 -1.32499 -0.539597 -0.982287 0.0627895
-0.266634 -1.39775 -0.440781 -0.982287 0.125332
-0.279481 -1.4651 -0.342491 -0.982287 0.18738
-0.291074 -1.52587 -0.246203 -0.982287 0.248689
-0.301208 -1.579 -0.153332 -0.982287 0.309016
-0.309693 -1.62348 -0.0652113 -0.982287 0.368124
-0.316359 -1.65842 0.0169302 -0.982287 0.425778
-0.321058 -1.68305 0.0919851 -0.982287 0.481753
-0.323667 -1.69673 0.158985 -0.982287 0.535826
-0.32409 -1.69895 0.217113 -0.982287 0.587784
-0.322261 -1.68936 0.26572 -0.982287 0.637423
-0.318143 -1.66777 0.30433 -0.982287 0.684546
-0.31173 -1.63415 0.332645 -0.982287 0.728968
-0.303046 -1.58863 0.350555 -0.982287 0.770513
-0.292149 -1.53151 0.358133 -0.982287 0.809016
-0.279126 -1.46324 0.355632 -0.982287 0.844327
-0.264093 -1.38443 0.343484 -0.982287 0.876306
-0.247195 -1.29585 0.322289 -0.982287 0.904827
-0.228603 -1.19838 0.292801 -0.982287 0.929776
-0.208512 -1.09306 0.255922 -0.982287 0.951056
-0.187137 -0.981013 0.212677 -0.982287 0.968583
-0.164714 -0.863464 0.164204 -0.982287 0.982287
-0.14149 -0.74172 0.111729 -0.982287 0.992115
-0.117726 -0.617146 0.0565478 -0.982287 0.998027
-0.124344 -0.484292 0 -0.968583 1
-0.0929022 -0.361832 -0.0605479 -0.968583 0.998027
-0.06181 -0.240735 -0.119686 -0.968583 0.992115
-0.0314128 -0.122345 -0.176028 -0.968583 0.982287
-0.00204576 -0.00796775 -0.228236 -0.968583 0.968583
--0.0259704 0.101148 -0.275042 -0.968583 0.951057
--0.0523339 0.203828 -0.315272 -0.968583 0.929777
--0.0767665 0.298987 -0.347861 -0.968583 0.904827
--0.0990166 0.385646 -0.371879 -0.968583 0.876307
--0.118864 0.462945 -0.386541 -0.968583 0.844328
--0.13612 0.530155 -0.391224 -0.968583 0.809017
--0.150634 0.586685 -0.385477 -0.968583 0.770513
--0.162293 0.632094 -0.369032 -0.968583 0.728969
--0.171022 0.666091 -0.341805 -0.968583 0.684547
--0.176787 0.688543 -0.303906 -0.968583 0.637424
--0.179593 0.69947 -0.255629 -0.968583 0.587785
--0.179485 0.699051 -0.197459 -0.968583 0.535827
--0.176547 0.68761 -0.130055 -0.968583 0.481754
--0.170901 0.665617 -0.0542497 -0.968583 0.42578
--0.1627 0.633678 0.0289685 -0.968583 0.368125
--0.152133 0.592521 0.118468 -0.968583 0.309017
--0.139415 0.542989 0.212991 -0.968583 0.24869
--0.124788 0.486021 0.311175 -0.968583 0.187382
--0.108515 0.42264 0.411571 -0.968583 0.125334
--0.0908743 0.353934 0.512665 -0.968583 0.0627908
--0.0721583 0.281039 0.612907 -0.968583 3.26795e-07
--0.0526669 0.205125 0.71073 -0.968583 -0.0627902
--0.0327028 0.127369 0.804577 -0.968583 -0.125333
--0.012567 0.0489455 0.892926 -0.968583 -0.187381
-0.0074456 -0.0289988 0.974311 -0.968583 -0.24869
-0.0270513 -0.105358 1.04735 -0.968583 -0.309017
-0.0459817 -0.179087 1.11076 -0.968583 -0.368124
-0.0639875 -0.249216 1.1634 -0.968583 -0.425779
-0.0808429 -0.314864 1.20424 -0.968583 -0.481753
-0.0963483 -0.375254 1.23245 -0.968583 -0.535826
-0.110333 -0.429722 1.24733 -0.968583 -0.587785
-0.12266 -0.477731 1.24841 -0.968583 -0.637424
-0.133223 -0.51887 1.23539 -0.968583 -0.684547
-0.141952 -0.552867 1.20816 -0.968583 -0.728968
-0.148812 -0.579588 1.16684 -0.968583 -0.770513
-0.153806 -0.599038 1.11174 -0.968583 -0.809017
-0.15697 -0.611359 1.04337 -0.968583 -0.844328
-0.158374 -0.616828 0.962421 -0.968583 -0.876306
-0.158122 -0.615846 0.869789 -0.968583 -0.904827
-0.156348 -0.608938 0.766525 -0.968583 -0.929776
-0.153214 -0.596732 0.653841 -0.968583 -0.951056
-0.148907 -0.579956 0.533085 -0.968583 -0.968583
-0.143634 -0.559421 0.405724 -0.968583 -0.982287
-0.137622 -0.536006 0.273322 -0.968583 -0.992115
-0.13111 -0.510641 0.137519 -0.968583 -0.998027
-0.124345 -0.484292 1.43346e-06 -0.968583 -1
-0.117579 -0.457943 -0.137516 -0.968583 -0.998027
-0.111067 -0.432578 -0.27332 -0.968583 -0.992115
-0.105055 -0.409163 -0.405721 -0.968583 -0.982287
-0.0997823 -0.388628 -0.533082 -0.968583 -0.968583
-0.095475 -0.371852 -0.653839 -0.968583 -0.951057
-0.092341 -0.359646 -0.766523 -0.968583 -0.929777
-0.0905671 -0.352737 -0.869787 -0.968583 -0.904827
-0.0903151 -0.351756 -0.962419 -0.968583 -0.876307
-0.0917191 -0.357224 -1.04336 -0.968583 -0.844328
-0.0948826 -0.369545 -1.11174 -0.968583 -0.809017
-0.0998765 -0.388995 -1.16684 -0.968583 -0.770514
-0.106737 -0.415716 -1.20816 -0.968583 -0.728969
-0.115466 -0.449713 -1.23539 -0.968583 -0.684548
-0.126029 -0.490852 -1.24841 -0.968583 -0.637425
-0.138355 -0.53886 -1.24733 -0.968583 -0.587786
-0.15234 -0.593329 -1.23245 -0.968583 -0.535828
-0.167846 -0.653718 -1.20425 -0.968583 -0.481754
-0.184701 -0.719366 -1.1634 -0.968583 -0.42578
-0.202707 -0.789494 -1.11077 -0.968583 -0.368125
-0.221637 -0.863224 -1.04735 -0.968583 -0.309018
-0.241243 -0.939583 -0.974313 -0.968583 -0.248691
-0.261255 -1.01753 -0.892928 -0.968583 -0.187382
-0.281391 -1.09595 -0.804579 -0.968583 -0.125334
-0.301355 -1.17371 -0.710732 -0.968583 -0.0627915
-0.320847 -1.24962 -0.612909 -0.968583 -9.80385e-07
-0.339563 -1.32252 -0.512667 -0.968583 0.0627895
-0.357204 -1.39122 -0.411573 -0.968583 0.125332
-0.373477 -1.4546 -0.311177 -0.968583 0.18738
-0.388104 -1.51157 -0.212994 -0.968583 0.248689
-0.400822 -1.5611 -0.11847 -0.968583 0.309016
-0.411389 -1.60226 -0.0289703 -0.968583 0.368124
-0.419589 -1.6342 0.054248 -0.968583 0.425778
-0.425236 -1.65619 0.130054 -0.968583 0.481753
-0.428174 -1.66763 0.197457 -0.968583 0.535826
-0.428282 -1.66805 0.255628 -0.968583 0.587784
-0.425476 -1.65713 0.303905 -0.968583 0.637423
-0.419711 -1.63467 0.341805 -0.968583 0.684546
-0.410982 -1.60068 0.369031 -0.968583 0.728968
-0.399324 -1.55527 0.385477 -0.968583 0.770513
-0.384809 -1.49874 0.391224 -0.968583 0.809016
-0.367553 -1.43153 0.386541 -0.968583 0.844327
-0.347706 -1.35423 0.37188 -0.968583 0.876306
-0.325456 -1.26757 0.347862 -0.968583 0.904827
-0.301023 -1.17241 0.315273 -0.968583 0.929776
-0.27466 -1.06973 0.275043 -0.968583 0.951056
-0.246644 -0.960618 0.228237 -0.968583 0.968583
-0.217277 -0.846241 0.176029 -0.968583 0.982287
-0.18688 -0.727851 0.119687 -0.968583 0.992115
-0.155787 -0.606754 0.0605491 -0.968583 0.998027
-0.154508 -0.475528 0 -0.951057 1
-0.116046 -0.357153 -0.0644893 -0.951057 0.998027
-0.078004 -0.240072 -0.127525 -0.951057 0.992115
-0.0407985 -0.125565 -0.187679 -0.951057 0.982287
-0.00483237 -0.0148725 -0.24357 -0.951057 0.968583
--0.0295084 0.0908179 -0.293892 -0.951057 0.951057
--0.0618606 0.190388 -0.337432 -0.951057 0.929777
--0.0918887 0.282805 -0.373091 -0.951057 0.904827
--0.11929 0.367137 -0.399907 -0.951057 0.876307
--0.143797 0.442562 -0.417069 -0.951057 0.844328
--0.165183 0.508383 -0.423929 -0.951057 0.809017
--0.183265 0.564035 -0.420018 -0.951057 0.770513
--0.197905 0.609091 -0.405053 -0.951057 0.728969
--0.20901 0.64327 -0.378943 -0.951057 0.684547
--0.216538 0.666436 -0.34179 -0.951057 0.637424
--0.220491 0.678603 -0.293892 -0.951057 0.587785
--0.220922 0.679929 -0.235737 -0.951057 0.535827
--0.217928 0.670714 -0.167995 -0.951057 0.481754
--0.21165 0.651395 -0.091514 -0.951057 0.42578
--0.202273 0.622535 -0.00730108 -0.951057 0.368125
--0.190018 0.584817 0.0834889 -0.951057 0.309017
--0.17514 0.539029 0.179572 -0.951057 0.24869
--0.157927 0.486052 0.279555 -0.951057 0.187382
--0.138691 0.426848 0.381956 -0.951057 0.125334
--0.117763 0.362438 0.485229 -0.951057 0.0627908
--0.0954912 0.293893 0.587785 -0.951057 3.26795e-07
--0.072233 0.222311 0.688022 -0.951057 -0.0627902
--0.0483491 0.148804 0.784345 -0.951057 -0.125333
--0.0241987 0.0744762 0.875193 -0.951057 -0.187381
--0.000133649 0.00041133 0.959066 -0.951057 -0.24869
-0.0235071 -0.0723475 1.03455 -0.951057 -0.309017
-0.0464024 -0.142812 1.10032 -0.951057 -0.368124
-0.0682542 -0.210066 1.1552 -0.951057 -0.425779
-0.0887916 -0.273274 1.19816 -0.951057 -0.481753
-0.107775 -0.331699 1.2283 -0.951057 -0.535826
-0.125 -0.384711 1.24495 -0.951057 -0.587785
-0.140298 -0.431795 1.24758 -0.951057 -0.637424
-0.153543 -0.472559 1.2359 -0.951057 -0.684547
-0.164649 -0.506738 1.20979 -0.951057 -0.728968
-0.17357 -0.534197 1.16936 -0.951057 -0.770513
-0.180307 -0.554931 1.11491 -0.951057 -0.809017
-0.1849 -0.569066 1.04697 -0.951057 -0.844328
-0.18743 -0.576851 0.966244 -0.951057 -0.876306
-0.188016 -0.578655 0.873626 -0.951057 -0.904827
-0.186815 -0.57496 0.770189 -0.951057 -0.929776
-0.184017 -0.566347 0.657165 -0.951057 -0.951056
-0.179839 -0.55349 0.535924 -0.951057 -0.968583
-0.174527 -0.537142 0.40796 -0.951057 -0.982287
-0.168346 -0.518117 0.274865 -0.951057 -0.992115
-0.161575 -0.49728 0.138305 -0.951057 -0.998027
-0.154508 -0.475529 1.4417e-06 -0.951057 -1
-0.147441 -0.453778 -0.138303 -0.951057 -0.998027
-0.14067 -0.432941 -0.274862 -0.951057 -0.992115
-0.134489 -0.413916 -0.407958 -0.951057 -0.982287
-0.129177 -0.397567 -0.535922 -0.951057 -0.968583
-0.125 -0.38471 -0.657162 -0.951057 -0.951057
-0.122201 -0.376097 -0.770187 -0.951057 -0.929777
-0.121 -0.372401 -0.873624 -0.951057 -0.904827
-0.121586 -0.374206 -0.966242 -0.951057 -0.876307
-0.124116 -0.38199 -1.04697 -0.951057 -0.844328
-0.128708 -0.396125 -1.11491 -0.951057 -0.809017
-0.135445 -0.41686 -1.16935 -0.951057 -0.770514
-0.144367 -0.444318 -1.20979 -0.951057 -0.728969
-0.155473 -0.478497 -1.2359 -0.951057 -0.684548
-0.168718 -0.519261 -1.24758 -0.951057 -0.637425
-0.184016 -0.566345 -1.24495 -0.951057 -0.587786
-0.201241 -0.619357 -1.2283 -0.951057 -0.535828
-0.220224 -0.677782 -1.19816 -0.951057 -0.481754
-0.240761 -0.74099 -1.1552 -0.951057 -0.42578
-0.262613 -0.808243 -1.10032 -0.951057 -0.368125
-0.285508 -0.878708 -1.03455 -0.951057 -0.309018
-0.309149 -0.951467 -0.959067 -0.951057 -0.248691
-0.333214 -1.02553 -0.875195 -0.951057 -0.187382
-0.357365 -1.09986 -0.784347 -0.951057 -0.125334
-0.381248 -1.17337 -0.688024 -0.951057 -0.0627915
-0.404507 -1.24495 -0.587787 -0.951057 -9.80385e-07
-0.426778 -1.31349 -0.485231 -0.951057 0.0627895
-0.447706 -1.3779 -0.381958 -0.951057 0.125332
-0.466943 -1.43711 -0.279557 -0.951057 0.18738
-0.484156 -1.49008 -0.179574 -0.951057 0.248689
-0.499034 -1.53587 -0.0834909 -0.951057 0.309016
-0.511289 -1.57359 0.00729925 -0.951057 0.368124
-0.520666 -1.60245 0.0915123 -0.951057 0.425778
-0.526943 -1.62177 0.167994 -0.951057 0.481753
-0.529938 -1.63099 0.235735 -0.951057 0.535826
-0.529507 -1.62966 0.293891 -0.951057 0.587784
-0.525554 -1.61749 0.341789 -0.951057 0.637423
-0.518026 -1.59433 0.378942 -0.951057 0.684546
-0.506921 -1.56015 0.405053 -0.951057 0.728968
-0.492282 -1.51509 0.420018 -0.951057 0.770513
-0.474199 -1.45944 0.423929 -0.951057 0.809016
-0.452813 -1.39362 0.417069 -0.951057 0.844327
-0.428306 -1.3182 0.399908 -0.951057 0.876306
-0.400905 -1.23386 0.373092 -0.951057 0.904827
-0.370877 -1.14145 0.337432 -0.951057 0.929776
-0.338525 -1.04188 0.293893 -0.951057 0.951056
-0.304184 -0.936187 0.243571 -0.951057 0.968583
-0.268218 -0.825494 0.18768 -0.951057 0.982287
-0.231013 -0.710987 0.127526 -0.951057 0.992115
-0.192971 -0.593907 0.0644906 -0.951057 0.998027
-0.184062 -0.464888 0 -0.929777 1
-0.139011 -0.351102 -0.0683671 -0.929777 0.998027
-0.0944439 -0.238539 -0.135239 -0.929777 0.992115
-0.0508393 -0.128406 -0.199145 -0.929777 0.982287
-0.00866108 -0.0218755 -0.258664 -0.929777 0.968583
--0.0316462 0.0799295 -0.312452 -0.929777 0.951057
--0.0696642 0.175952 -0.359259 -0.929777 0.929777
--0.105006 0.265216 -0.397953 -0.929777 0.904827
--0.137322 0.346836 -0.427541 -0.929777 0.876307
--0.166304 0.420036 -0.447185 -0.929777 0.844328
--0.191689 0.484152 -0.456216 -0.929777 0.809017
--0.213264 0.538646 -0.454145 -0.929777 0.770513
--0.230869 0.58311 -0.440675 -0.929777 0.728969
--0.244394 0.61727 -0.415707 -0.929777 0.684547
--0.253786 0.640992 -0.379338 -0.929777 0.637424
--0.259047 0.65428 -0.331865 -0.929777 0.587785
--0.260232 0.657274 -0.273782 -0.929777 0.535827
--0.257451 0.650248 -0.205769 -0.929777 0.481754
--0.250861 0.633604 -0.128688 -0.929777 0.42578
--0.240669 0.607863 -0.0435634 -0.929777 0.368125
--0.227127 0.573658 0.0484275 -0.929777 0.309017
--0.210523 0.531723 0.145976 -0.929777 0.24869
--0.191184 0.482877 0.247659 -0.929777 0.187382
--0.169463 0.428017 0.351965 -0.929777 0.125334
--0.145739 0.368095 0.457314 -0.929777 0.0627908
--0.120406 0.304112 0.562083 -0.929777 3.26795e-07
--0.0938718 0.237094 0.664635 -0.929777 -0.0627902
--0.0665473 0.16808 0.763338 -0.929777 -0.125333
--0.0388422 0.0981045 0.856596 -0.929777 -0.187381
--0.011158 0.028182 0.942873 -0.929777 -0.24869
-0.0161179 -0.0407094 1.02072 -0.929777 -0.309017
-0.0426186 -0.107643 1.08879 -0.929777 -0.368124
-0.0680027 -0.171756 1.14586 -0.929777 -0.425779
-0.0919597 -0.232264 1.19088 -0.929777 -0.481753
-0.114214 -0.288474 1.22295 -0.929777 -0.535826
-0.134531 -0.339788 1.24134 -0.929777 -0.587785
-0.152716 -0.385719 1.24552 -0.929777 -0.637424
-0.168622 -0.425892 1.23519 -0.929777 -0.684547
-0.182147 -0.460053 1.21022 -0.929777 -0.728968
-0.193238 -0.488065 1.17072 -0.929777 -0.770513
-0.201889 -0.509915 1.11699 -0.929777 -0.809017
-0.208143 -0.525711 1.04954 -0.929777 -0.844328
-0.212089 -0.535676 0.969114 -0.929777 -0.876306
-0.213857 -0.540144 0.876601 -0.929777 -0.904827
-0.213624 -0.539554 0.773093 -0.929777 -0.929776
-0.211598 -0.534438 0.65984 -0.929777 -0.951056
-0.208026 -0.525416 0.538235 -0.929777 -0.968583
-0.203181 -0.513179 0.409794 -0.929777 -0.982287
-0.19736 -0.498476 0.276136 -0.929777 -0.992115
-0.190878 -0.482103 0.138956 -0.929777 -0.998027
-0.184062 -0.464889 1.44851e-06 -0.929777 -1
-0.177246 -0.447674 -0.138953 -0.929777 -0.998027
-0.170764 -0.431301 -0.276133 -0.929777 -0.992115
-0.164942 -0.416598 -0.409791 -0.929777 -0.982287
-0.160097 -0.404361 -0.538232 -0.929777 -0.968583
-0.156525 -0.395339 -0.659838 -0.929777 -0.951057
-0.1545 -0.390223 -0.773091 -0.929777 -0.929777
-0.154266 -0.389633 -0.876599 -0.929777 -0.904827
-0.156035 -0.394101 -0.969112 -0.929777 -0.876307
-0.15998 -0.404065 -1.04954 -0.929777 -0.844328
-0.166234 -0.419861 -1.11698 -0.929777 -0.809017
-0.174885 -0.441712 -1.17072 -0.929777 -0.770514
-0.185976 -0.469724 -1.21022 -0.929777 -0.728969
-0.199501 -0.503884 -1.23519 -0.929777 -0.684548
-0.215407 -0.544057 -1.24552 -0.929777 -0.637425
-0.233592 -0.589988 -1.24134 -0.929777 -0.587786
-0.253909 -0.641302 -1.22295 -0.929777 -0.535828
-0.276163 -0.697511 -1.19089 -0.929777 -0.481754
-0.30012 -0.75802 -1.14587 -0.929777 -0.42578
-0.325504 -0.822133 -1.08879 -0.929777 -0.368125
-0.352005 -0.889066 -1.02072 -0.929777 -0.309018
-0.379281 -0.957957 -0.942875 -0.929777 -0.248691
-0.406965 -1.02788 -0.856598 -0.929777 -0.187382
-0.43467 -1.09786 -0.76334 -0.929777 -0.125334
-0.461995 -1.16687 -0.664637 -0.929777 -0.0627915
-0.488529 -1.23389 -0.562085 -0.929777 -9.80385e-07
-0.513862 -1.29787 -0.457316 -0.929777 0.0627895
-0.537586 -1.35779 -0.351967 -0.929777 0.125332
-0.559307 -1.41265 -0.247661 -0.929777 0.18738
-0.578647 -1.4615 -0.145978 -0.929777 0.248689
-0.59525 -1.50343 -0.0484295 -0.929777 0.309016
-0.608792 -1.53764 0.0435616 -0.929777 0.368124
-0.618984 -1.56338 0.128686 -0.929777 0.425778
-0.625574 -1.58002 0.205768 -0.929777 0.481753
-0.628356 -1.58705 0.27378 -0.929777 0.535826
-0.627171 -1.58406 0.331864 -0.929777 0.587784
-0.62191 -1.57077 0.379337 -0.929777 0.637423
-0.612517 -1.54705 0.415706 -0.929777 0.684546
-0.598993 -1.51289 0.440675 -0.929777 0.728968
-0.581388 -1.46842 0.454145 -0.929777 0.770513
-0.559813 -1.41393 0.456216 -0.929777 0.809016
-0.534428 -1.34981 0.447185 -0.929777 0.844327
-0.505446 -1.27661 0.427542 -0.929777 0.876306
-0.47313 -1.19499 0.397953 -0.929777 0.904827
-0.437789 -1.10573 0.359259 -0.929777 0.929776
-0.399771 -1.00971 0.312453 -0.929777 0.951056
-0.359463 -0.907904 0.258666 -0.929777 0.968583
-0.317285 -0.801373 0.199146 -0.929777 0.982287
-0.273681 -0.69124 0.13524 -0.929777 0.992115
-0.229114 -0.578677 0.0683685 -0.929777 0.998027
-0.212889 -0.452414 0 -0.904828 1
-0.161722 -0.343678 -0.0721774 -0.904828 0.998027
-0.111095 -0.23609 -0.142819 -0.904828 0.992115
-0.061541 -0.130782 -0.210414 -0.904828 0.982287
-0.013577 -0.0288528 -0.273503 -0.904828 0.968583
--0.0323008 0.0686428 -0.330704 -0.904828 0.951057
--0.0756253 0.160712 -0.380731 -0.904828 0.929777
--0.115965 0.246438 -0.422421 -0.904828 0.904827
--0.152928 0.324988 -0.454753 -0.904828 0.876307
--0.186169 0.395631 -0.47686 -0.904828 0.844328
--0.215395 0.457739 -0.488052 -0.904828 0.809017
--0.240365 0.510803 -0.487823 -0.904828 0.770513
--0.260896 0.554435 -0.475863 -0.904828 0.728969
--0.276866 0.588371 -0.45206 -0.904828 0.684547
--0.28821 0.612479 -0.41651 -0.904828 0.637424
--0.294927 0.626754 -0.36951 -0.904828 0.587785
--0.297074 0.631317 -0.311557 -0.904828 0.535827
--0.294768 0.626416 -0.243341 -0.904828 0.481754
--0.288181 0.612417 -0.165735 -0.904828 0.42578
--0.277537 0.589798 -0.0797828 -0.904828 0.368125
--0.263112 0.559143 0.0133183 -0.904828 0.309017
--0.245222 0.521125 0.112235 -0.904828 0.24869
--0.224225 0.476504 0.215518 -0.904828 0.187382
--0.20051 0.426106 0.321626 -0.904828 0.125334
--0.174492 0.370815 0.428947 -0.904828 0.0627908
--0.146607 0.311557 0.535827 -0.904828 3.26795e-07
--0.117304 0.249284 0.640592 -0.904828 -0.0627902
--0.0870357 0.184961 0.741577 -0.904828 -0.125333
--0.0562545 0.119547 0.837153 -0.904828 -0.187381
--0.0254042 0.0539867 0.925751 -0.904828 -0.24869
-0.00508703 -0.0108105 1.00588 -0.904828 -0.309017
-0.0348127 -0.073981 1.07618 -0.904828 -0.368124
-0.0633946 -0.134721 1.1354 -0.904828 -0.425779
-0.0904879 -0.192297 1.18244 -0.904828 -0.481753
-0.115787 -0.24606 1.21638 -0.904828 -0.535826
-0.139028 -0.29545 1.2365 -0.904828 -0.587785
-0.159995 -0.340007 1.24223 -0.904828 -0.637424
-0.178521 -0.379377 1.23326 -0.904828 -0.684547
-0.19449 -0.413314 1.20946 -0.904828 -0.728968
-0.20784 -0.441684 1.17092 -0.904828 -0.770513
-0.21856 -0.464465 1.11796 -0.904828 -0.809017
-0.226692 -0.481746 1.05108 -0.904828 -0.844328
-0.232328 -0.493724 0.971027 -0.904828 -0.876306
-0.235611 -0.5007 0.878711 -0.904828 -0.904827
-0.236725 -0.503067 0.775234 -0.904828 -0.929776
-0.235898 -0.50131 0.661864 -0.904828 -0.951056
-0.233395 -0.495991 0.540014 -0.904828 -0.968583
-0.229512 -0.487738 0.411223 -0.904828 -0.982287
-0.224569 -0.477236 0.277134 -0.904828 -0.992115
-0.21891 -0.465209 0.139469 -0.904828 -0.998027
-0.212889 -0.452414 1.4539e-06 -0.904828 -1
-0.206868 -0.439619 -0.139466 -0.904828 -0.998027
-0.201209 -0.427592 -0.277131 -0.904828 -0.992115
-0.196267 -0.417089 -0.41122 -0.904828 -0.982287
-0.192383 -0.408836 -0.540011 -0.904828 -0.968583
-0.18988 -0.403517 -0.661862 -0.904828 -0.951057
-0.189054 -0.40176 -0.775232 -0.904828 -0.929777
-0.190168 -0.404128 -0.878709 -0.904828 -0.904827
-0.19345 -0.411103 -0.971025 -0.904828 -0.876307
-0.199086 -0.423081 -1.05108 -0.904828 -0.844328
-0.207218 -0.440362 -1.11795 -0.904828 -0.809017
-0.217938 -0.463143 -1.17092 -0.904828 -0.770514
-0.231288 -0.491513 -1.20946 -0.904828 -0.728969
-0.247257 -0.52545 -1.23326 -0.904828 -0.684548
-0.265783 -0.564819 -1.24223 -0.904828 -0.637425
-0.28675 -0.609377 -1.2365 -0.904828 -0.587786
-0.309991 -0.658767 -1.21638 -0.904828 -0.535828
-0.33529 -0.712529 -1.18244 -0.904828 -0.481754
-0.362383 -0.770106 -1.1354 -0.904828 -0.42578
-0.390965 -0.830845 -1.07618 -0.904828 -0.368125
-0.420691 -0.894016 -1.00589 -0.904828 -0.309018
-0.451182 -0.958813 -0.925752 -0.904828 -0.248691
-0.482032 -1.02437 -0.837155 -0.904828 -0.187382
-0.512813 -1.08979 -0.741579 -0.904828 -0.125334
-0.543082 -1.15411 -0.640594 -0.904828 -0.0627915
-0.572385 -1.21638 -0.535829 -0.904828 -9.80385e-07
-0.60027 -1.27564 -0.428949 -0.904828 0.0627895
-0.626287 -1.33093 -0.321628 -0.904828 0.125332
-0.650003 -1.38133 -0.21552 -0.904828 0.18738
-0.671 -1.42595 -0.112237 -0.904828 0.248689
-0.68889 -1.46397 -0.0133203 -0.904828 0.309016
-0.703315 -1.49463 0.079781 -0.904828 0.368124
-0.713959 -1.51724 0.165733 -0.904828 0.425778
-0.720546 -1.53124 0.243339 -0.904828 0.481753
-0.722853 -1.53614 0.311555 -0.904828 0.535826
-0.720705 -1.53158 0.369509 -0.904828 0.587784
-0.713989 -1.51731 0.41651 -0.904828 0.637423
-0.702644 -1.4932 0.45206 -0.904828 0.684546
-0.686675 -1.45926 0.475862 -0.904828 0.728968
-0.666144 -1.41563 0.487823 -0.904828 0.770513
-0.641174 -1.36257 0.488052 -0.904828 0.809016
-0.611948 -1.30046 0.47686 -0.904828 0.844327
-0.578707 -1.22982 0.454753 -0.904828 0.876306
-0.541744 -1.15127 0.422422 -0.904828 0.904827
-0.501404 -1.06554 0.380732 -0.904828 0.929776
-0.45808 -0.973472 0.330705 -0.904828 0.951056
-0.412202 -0.875977 0.273504 -0.904828 0.968583
-0.364238 -0.774048 0.210415 -0.904828 0.982287
-0.314684 -0.668739 0.14282 -0.904828 0.992115
-0.264057 -0.561152 0.0721789 -0.904828 0.998027
-0.240876 -0.438154 0 -0.876307 1
-0.184104 -0.334884 -0.0759165 -0.876307 0.998027
-0.127918 -0.232683 -0.150258 -0.876307 0.992115
-0.0728999 -0.132605 -0.221475 -0.876307 0.982287
-0.0196119 -0.035674 -0.288072 -0.876307 0.968583
--0.031406 0.0571274 -0.348629 -0.876307 0.951057
--0.0796449 0.144874 -0.401827 -0.876307 0.929777
--0.124634 0.226709 -0.446473 -0.876307 0.904827
--0.165946 0.301856 -0.481515 -0.876307 0.876307
--0.203205 0.369629 -0.506064 -0.876307 0.844328
--0.236087 0.429442 -0.519407 -0.876307 0.809017
--0.264329 0.480815 -0.52102 -0.876307 0.770513
--0.287729 0.523379 -0.51058 -0.876307 0.728969
--0.30615 0.556885 -0.487968 -0.876307 0.684547
--0.319517 0.5812 -0.453272 -0.876307 0.637424
--0.327824 0.596312 -0.406791 -0.876307 0.587785
--0.331129 0.602324 -0.349024 -0.876307 0.535827
--0.329554 0.599457 -0.280672 -0.876307 0.481754
--0.323278 0.588042 -0.202618 -0.876307 0.42578
--0.312542 0.568514 -0.115923 -0.876307 0.368125
--0.297637 0.541401 -0.0218041 -0.876307 0.309017
--0.278903 0.507323 0.0783834 -0.876307 0.24869
--0.25672 0.466972 0.183165 -0.876307 0.187382
--0.231505 0.421108 0.29097 -0.876307 0.125334
--0.203706 0.370541 0.400157 -0.876307 0.0627908
--0.173788 0.316121 0.509041 -0.876307 3.26795e-07
--0.142234 0.258724 0.615916 -0.876307 -0.0627902
--0.109532 0.199238 0.719085 -0.876307 -0.125333
--0.0761676 0.138549 0.816885 -0.876307 -0.187381
--0.0426195 0.0775248 0.907714 -0.876307 -0.24869
--0.00934946 0.0170066 0.990058 -0.876307 -0.309017
-0.0232038 -0.0422076 1.06251 -0.876307 -0.368124
-0.0546311 -0.0993738 1.12381 -0.876307 -0.425779
-0.0845592 -0.153813 1.17282 -0.876307 -0.481753
-0.112656 -0.204921 1.20862 -0.876307 -0.535826
-0.138635 -0.252177 1.23044 -0.876307 -0.587785
-0.16226 -0.295151 1.23772 -0.876307 -0.637424
-0.183347 -0.333508 1.23012 -0.876307 -0.684547
-0.201767 -0.367014 1.20751 -0.876307 -0.728968
-0.217448 -0.395537 1.16997 -0.876307 -0.770513
-0.230372 -0.419047 1.11782 -0.876307 -0.809017
-0.240581 -0.437616 1.05158 -0.876307 -0.844328
-0.248167 -0.451414 0.971982 -0.876307 -0.876306
-0.253275 -0.460707 0.879953 -0.876307 -0.904827
-0.256101 -0.465847 0.77661 -0.876307 -0.929776
-0.256882 -0.467268 0.663235 -0.876307 -0.951056
-0.255895 -0.465473 0.54126 -0.876307 -0.968583
-0.253452 -0.461029 0.412246 -0.876307 -0.982287
-0.249892 -0.454553 0.277859 -0.876307 -0.992115
-0.245575 -0.446701 0.139844 -0.876307 -0.998027
-0.240876 -0.438154 1.45785e-06 -0.876307 -1
-0.236178 -0.429607 -0.139841 -0.876307 -0.998027
-0.231861 -0.421754 -0.277856 -0.876307 -0.992115
-0.228301 -0.415279 -0.412244 -0.876307 -0.982287
-0.225858 -0.410835 -0.541258 -0.876307 -0.968583
-0.224871 -0.40904 -0.663233 -0.876307 -0.951057
-0.225652 -0.41046 -0.776608 -0.876307 -0.929777
-0.228477 -0.4156 -0.879951 -0.876307 -0.904827
-0.233586 -0.424893 -0.97198 -0.876307 -0.876307
-0.241172 -0.438691 -1.05158 -0.876307 -0.844328
-0.25138 -0.45726 -1.11782 -0.876307 -0.809017
-0.264305 -0.48077 -1.16997 -0.876307 -0.770514
-0.279985 -0.509293 -1.20751 -0.876307 -0.728969
-0.298405 -0.542799 -1.23012 -0.876307 -0.684548
-0.319492 -0.581155 -1.23772 -0.876307 -0.637425
-0.343117 -0.624129 -1.23044 -0.876307 -0.587786
-0.369096 -0.671385 -1.20862 -0.876307 -0.535828
-0.397193 -0.722493 -1.17283 -0.876307 -0.481754
-0.427121 -0.776932 -1.12381 -0.876307 -0.42578
-0.458548 -0.834098 -1.06251 -0.876307 -0.368125
-0.491101 -0.893313 -0.99006 -0.876307 -0.309018
-0.524372 -0.953831 -0.907716 -0.876307 -0.248691
-0.55792 -1.01485 -0.816887 -0.876307 -0.187382
-0.591284 -1.07554 -0.719087 -0.876307 -0.125334
-0.623987 -1.13503 -0.615919 -0.876307 -0.0627915
-0.655541 -1.19243 -0.509044 -0.876307 -9.80385e-07
-0.685458 -1.24685 -0.40016 -0.876307 0.0627895
-0.713258 -1.29741 -0.290972 -0.876307 0.125332
-0.738472 -1.34328 -0.183167 -0.876307 0.18738
-0.760655 -1.38363 -0.0783856 -0.876307 0.248689
-0.77939 -1.41771 0.0218021 -0.876307 0.309016
-0.794295 -1.44482 0.115922 -0.876307 0.368124
-0.805031 -1.46435 0.202617 -0.876307 0.425778
-0.811306 -1.47576 0.28067 -0.876307 0.481753
-0.812882 -1.47863 0.349023 -0.876307 0.535826
-0.809577 -1.47262 0.40679 -0.876307 0.587784
-0.80127 -1.45751 0.453271 -0.876307 0.637423
-0.787903 -1.43319 0.487967 -0.876307 0.684546
-0.769483 -1.39969 0.51058 -0.876307 0.728968
-0.746083 -1.35712 0.52102 -0.876307 0.770513
-0.717841 -1.30575 0.519407 -0.876307 0.809016
-0.684958 -1.24594 0.506065 -0.876307 0.844327
-0.6477 -1.17816 0.481516 -0.876307 0.876306
-0.606388 -1.10302 0.446474 -0.876307 0.904827
-0.561399 -1.02118 0.401828 -0.876307 0.929776
-0.51316 -0.933436 0.34863 -0.876307 0.951056
-0.462142 -0.840635 0.288073 -0.876307 0.968583
-0.408854 -0.743704 0.221477 -0.876307 0.982287
-0.353836 -0.643626 0.150259 -0.876307 0.992115
-0.29765 -0.541425 0.0759181 -0.876307 0.998027
-0.267913 -0.422164 0 -0.844329 1
-0.206077 -0.324726 -0.0795807 -0.844329 0.998027
-0.144867 -0.228275 -0.157549 -0.844329 0.992115
-0.0849022 -0.133785 -0.232318 -0.844329 0.982287
-0.0267831 -0.0422035 -0.302356 -0.844329 0.968583
--0.0289139 0.0455612 -0.36621 -0.844329 0.951057
--0.0816455 0.128653 -0.422527 -0.844329 0.929777
--0.130908 0.206279 -0.470085 -0.844329 0.904827
--0.176245 0.277718 -0.507803 -0.844329 0.876307
--0.217252 0.342335 -0.534769 -0.844329 0.844328
--0.253582 0.399583 -0.550249 -0.844329 0.809017
--0.284952 0.449014 -0.553703 -0.844329 0.770513
--0.311141 0.490282 -0.544794 -0.844329 0.728969
--0.331999 0.523149 -0.523394 -0.844329 0.684547
--0.347444 0.547485 -0.489587 -0.844329 0.637424
--0.357461 0.56327 -0.44367 -0.844329 0.587785
--0.362108 0.570592 -0.386147 -0.844329 0.535827
--0.361507 0.569645 -0.317726 -0.844329 0.481754
--0.355844 0.560722 -0.239302 -0.844329 0.42578
--0.345368 0.544214 -0.15195 -0.844329 0.368125
--0.330382 0.5206 -0.056905 -0.844329 0.309017
--0.311241 0.490439 0.0444547 -0.844329 0.24869
--0.288344 0.454359 0.150631 -0.844329 0.187382
--0.262128 0.413049 0.260026 -0.844329 0.125334
--0.233061 0.367247 0.370973 -0.844329 0.0627908
--0.201635 0.317727 0.481754 -0.844329 3.26795e-07
--0.168355 0.265286 0.590633 -0.844329 -0.0627902
--0.133736 0.210735 0.695883 -0.844329 -0.125333
--0.0982916 0.154883 0.79581 -0.844329 -0.187381
--0.0625251 0.098524 0.888782 -0.844329 -0.24869
--0.0269249 0.042427 0.973255 -0.844329 -0.309017
-0.00804483 -0.0126767 1.0478 -0.844329 -0.368124
-0.0419508 -0.066104 1.11111 -0.844329 -0.425779
-0.0743967 -0.117231 1.16205 -0.844329 -0.481753
-0.105029 -0.1655 1.19966 -0.844329 -0.535826
-0.133543 -0.210431 1.22316 -0.844329 -0.587785
-0.159684 -0.251622 1.23198 -0.844329 -0.637424
-0.183254 -0.288763 1.22576 -0.844329 -0.684547
-0.204112 -0.32163 1.20436 -0.844329 -0.728968
-0.222176 -0.350094 1.16787 -0.844329 -0.770513
-0.237422 -0.374118 1.11659 -0.844329 -0.809017
-0.249885 -0.393757 1.05104 -0.844329 -0.844328
-0.259658 -0.409157 0.971978 -0.844329 -0.876306
-0.266887 -0.420547 0.880328 -0.844329 -0.904827
-0.271767 -0.428238 0.77722 -0.844329 -0.929776
-0.274543 -0.432612 0.663951 -0.844329 -0.951056
-0.275499 -0.434119 0.541972 -0.844329 -0.968583
-0.274955 -0.433261 0.412863 -0.844329 -0.982287
-0.273259 -0.430588 0.27831 -0.844329 -0.992115
-0.270783 -0.426687 0.140081 -0.844329 -0.998027
-0.267913 -0.422164 1.46036e-06 -0.844329 -1
-0.265043 -0.417642 -0.140078 -0.844329 -0.998027
-0.262567 -0.41374 -0.278307 -0.844329 -0.992115
-0.260871 -0.411068 -0.41286 -0.844329 -0.982287
-0.260327 -0.41021 -0.54197 -0.844329 -0.968583
-0.261282 -0.411716 -0.663949 -0.844329 -0.951057
-0.264058 -0.416091 -0.777217 -0.844329 -0.929777
-0.268939 -0.423781 -0.880325 -0.844329 -0.904827
-0.276167 -0.435171 -0.971976 -0.844329 -0.876307
-0.28594 -0.450571 -1.05104 -0.844329 -0.844328
-0.298404 -0.47021 -1.11658 -0.844329 -0.809017
-0.31365 -0.494234 -1.16787 -0.844329 -0.770514
-0.331713 -0.522698 -1.20436 -0.844329 -0.728969
-0.352571 -0.555565 -1.22576 -0.844329 -0.684548
-0.376141 -0.592705 -1.23198 -0.844329 -0.637425
-0.402282 -0.633897 -1.22316 -0.844329 -0.587786
-0.430796 -0.678827 -1.19966 -0.844329 -0.535828
-0.461429 -0.727097 -1.16205 -0.844329 -0.481754
-0.493874 -0.778223 -1.11111 -0.844329 -0.42578
-0.52778 -0.831651 -1.0478 -0.844329 -0.368125
-0.56275 -0.886754 -0.973257 -0.844329 -0.309018
-0.59835 -0.942851 -0.888784 -0.844329 -0.248691
-0.634117 -0.999211 -0.795812 -0.844329 -0.187382
-0.669562 -1.05506 -0.695885 -0.844329 -0.125334
-0.70418 -1.10961 -0.590635 -0.844329 -0.0627915
-0.73746 -1.16205 -0.481756 -0.844329 -9.80385e-07
-0.768887 -1.21157 -0.370975 -0.844329 0.0627895
-0.797954 -1.25738 -0.260029 -0.844329 0.125332
-0.82417 -1.29869 -0.150633 -0.844329 0.18738
-0.847067 -1.33477 -0.0444568 -0.844329 0.248689
-0.866208 -1.36493 0.0569029 -0.844329 0.309016
-0.881194 -1.38854 0.151948 -0.844329 0.368124
-0.89167 -1.40505 0.2393 -0.844329 0.425778
-0.897332 -1.41397 0.317724 -0.844329 0.481753
-0.897934 -1.41492 0.386146 -0.844329 0.535826
-0.893287 -1.4076 0.443669 -0.844329 0.587784
-0.88327 -1.39181 0.489586 -0.844329 0.637423
-0.867826 -1.36748 0.523393 -0.844329 0.684546
-0.846968 -1.33461 0.544794 -0.844329 0.728968
-0.820778 -1.29334 0.553703 -0.844329 0.770513
-0.789409 -1.24391 0.550249 -0.844329 0.809016
-0.753079 -1.18666 0.534769 -0.844329 0.844327
-0.712072 -1.12205 0.507804 -0.844329 0.876306
-0.666735 -1.05061 0.470086 -0.844329 0.904827
-0.617472 -0.972983 0.422529 -0.844329 0.929776
-0.564741 -0.889891 0.366211 -0.844329 0.951056
-0.509044 -0.802127 0.302358 -0.844329 0.968583
-0.450925 -0.710546 0.23232 -0.844329 0.982287
-0.39096 -0.616056 0.15755 -0.844329 0.992115
-0.32975 -0.519605 0.0795824 -0.844329 0.998027
-0.293892 -0.404509 0 -0.809018 1
-0.227563 -0.313214 -0.0831663 -0.809018 0.998027
-0.16189 -0.222823 -0.164684 -0.809018 0.992115
-0.0975234 -0.13423 -0.242932 -0.809018 0.982287
-0.0350931 -0.0483016 -0.316343 -0.809018 0.968583
--0.0247958 0.0341286 -0.383429 -0.809018 0.951057
--0.0815724 0.112275 -0.44281 -0.809018 0.929777
--0.134707 0.185409 -0.493232 -0.809018 0.904827
--0.183719 0.252869 -0.53359 -0.809018 0.876307
--0.228183 0.314067 -0.562946 -0.809018 0.844328
--0.267731 0.368501 -0.580548 -0.809018 0.809017
--0.302061 0.415753 -0.585839 -0.809018 0.770513
--0.330941 0.455502 -0.57847 -0.809018 0.728969
--0.354205 0.487523 -0.558303 -0.809018 0.684547
--0.371763 0.511689 -0.525418 -0.809018 0.637424
--0.383594 0.527973 -0.480111 -0.809018 0.587785
--0.389751 0.536447 -0.42289 -0.809018 0.535827
--0.390355 0.537278 -0.354466 -0.809018 0.481754
--0.385594 0.530726 -0.275749 -0.809018 0.42578
--0.375721 0.517136 -0.187826 -0.809018 0.368125
--0.361045 0.496936 -0.0919497 -0.809018 0.309017
--0.341929 0.470626 0.010482 -0.809018 0.24869
--0.318785 0.43877 0.117948 -0.809018 0.187382
--0.29206 0.401988 0.228826 -0.809018 0.125334
--0.262239 0.360942 0.341422 -0.809018 0.0627908
--0.229828 0.316331 0.45399 -0.809018 3.26795e-07
--0.195349 0.268876 0.564767 -0.809018 -0.0627902
--0.159335 0.219307 0.671995 -0.809018 -0.125333
--0.122317 0.168356 0.77395 -0.809018 -0.187381
--0.0848186 0.116743 0.868973 -0.809018 -0.24869
--0.0473452 0.0651652 0.955491 -0.809018 -0.309017
--0.0103796 0.0142863 1.03205 -0.809018 -0.368124
-0.0256269 -0.0352724 1.09732 -0.809018 -0.425779
-0.0602609 -0.0829422 1.15014 -0.809018 -0.481753
-0.0931529 -0.128214 1.18952 -0.809018 -0.535826
-0.123982 -0.170647 1.21468 -0.809018 -0.587785
-0.152481 -0.209873 1.22503 -0.809018 -0.637424
-0.178439 -0.245601 1.22019 -0.809018 -0.684547
-0.201704 -0.277622 1.20003 -0.809018 -0.728968
-0.222183 -0.305809 1.16461 -0.809018 -0.770513
-0.239846 -0.33012 1.11425 -0.809018 -0.809017
-0.254721 -0.350594 1.04947 -0.809018 -0.844328
-0.266896 -0.367352 0.971014 -0.809018 -0.876306
-0.276514 -0.380589 0.879833 -0.809018 -0.904827
-0.283769 -0.390575 0.777062 -0.809018 -0.929776
-0.288904 -0.397643 0.664012 -0.809018 -0.951056
-0.292204 -0.402185 0.54215 -0.809018 -0.968583
-0.293991 -0.404644 0.413072 -0.809018 -0.982287
-0.294615 -0.405504 0.278486 -0.809018 -0.992115
-0.294453 -0.40528 0.14018 -0.809018 -0.998027
-0.293892 -0.404509 1.46143e-06 -0.809018 -1
-0.293332 -0.403738 -0.140178 -0.809018 -0.998027
-0.293169 -0.403514 -0.278483 -0.809018 -0.992115
-0.293794 -0.404373 -0.413069 -0.809018 -0.982287
-0.295581 -0.406833 -0.542147 -0.809018 -0.968583
-0.298881 -0.411375 -0.66401 -0.809018 -0.951057
-0.304016 -0.418442 -0.77706 -0.809018 -0.929777
-0.31127 -0.428428 -0.879831 -0.809018 -0.904827
-0.320888 -0.441665 -0.971012 -0.809018 -0.876307
-0.333063 -0.458423 -1.04947 -0.809018 -0.844328
-0.347938 -0.478897 -1.11425 -0.809018 -0.809017
-0.365601 -0.503208 -1.16461 -0.809018 -0.770514
-0.38608 -0.531395 -1.20003 -0.809018 -0.728969
-0.409345 -0.563416 -1.22019 -0.809018 -0.684548
-0.435302 -0.599144 -1.22503 -0.809018 -0.637425
-0.463801 -0.638369 -1.21468 -0.809018 -0.587786
-0.494631 -0.680802 -1.18952 -0.809018 -0.535828
-0.527523 -0.726074 -1.15014 -0.809018 -0.481754
-0.562157 -0.773744 -1.09732 -0.809018 -0.42578
-0.598163 -0.823303 -1.03205 -0.809018 -0.368125
-0.635129 -0.874182 -0.955493 -0.809018 -0.309018
-0.672602 -0.92576 -0.868975 -0.809018 -0.248691
-0.710101 -0.977373 -0.773952 -0.809018 -0.187382
-0.747119 -1.02832 -0.671997 -0.809018 -0.125334
-0.783133 -1.07789 -0.56477 -0.809018 -0.0627915
-0.817611 -1.12535 -0.453993 -0.809018 -9.80385e-07
-0.850023 -1.16996 -0.341424 -0.809018 0.0627895
-0.879844 -1.211 -0.228829 -0.809018 0.125332
-0.906568 -1.24779 -0.11795 -0.809018 0.18738
-0.929713 -1.27964 -0.0104842 -0.809018 0.248689
-0.948829 -1.30595 0.0919476 -0.809018 0.309016
-0.963505 -1.32615 0.187824 -0.809018 0.368124
-0.973378 -1.33974 0.275747 -0.809018 0.425778
-0.978139 -1.3463 0.354465 -0.809018 0.481753
-0.977535 -1.34547 0.422888 -0.809018 0.535826
-0.971379 -1.33699 0.48011 -0.809018 0.587784
-0.959547 -1.32071 0.525417 -0.809018 0.637423
-0.94199 -1.29654 0.558302 -0.809018 0.684546
-0.918726 -1.26452 0.57847 -0.809018 0.728968
-0.889846 -1.22477 0.585839 -0.809018 0.770513
-0.855516 -1.17752 0.580548 -0.809018 0.809016
-0.815968 -1.12309 0.562946 -0.809018 0.844327
-0.771505 -1.06189 0.53359 -0.809018 0.876306
-0.722493 -0.994428 0.493233 -0.809018 0.904827
-0.669358 -0.921294 0.442812 -0.809018 0.929776
-0.612581 -0.843148 0.383431 -0.809018 0.951056
-0.552693 -0.760718 0.316344 -0.809018 0.968583
-0.490262 -0.67479 0.242933 -0.809018 0.982287
-0.425896 -0.586196 0.164686 -0.809018 0.992115
-0.360223 -0.495806 0.0831681 -0.809018 0.998027
-0.318712 -0.385257 0 -0.770514 1
-0.248481 -0.300363 -0.0866699 -0.770514 0.998027
-0.17893 -0.216289 -0.171657 -0.770514 0.992115
-0.110728 -0.133848 -0.253306 -0.770514 0.982287
-0.044529 -0.0538264 -0.330016 -0.770514 0.968583
--0.0190423 0.0230182 -0.400271 -0.770514 0.951057
--0.0793944 0.0959715 -0.462657 -0.770514 0.929777
--0.135979 0.16437 -0.515893 -0.770514 0.904827
--0.188296 0.227611 -0.55885 -0.770514 0.876307
--0.235902 0.285158 -0.590568 -0.770514 0.844328
--0.278416 0.336548 -0.610274 -0.770514 0.809017
--0.315522 0.381402 -0.617398 -0.770514 0.770513
--0.346972 0.419419 -0.611575 -0.770514 0.728969
--0.372593 0.450388 -0.592661 -0.770514 0.684547
--0.392282 0.474189 -0.560731 -0.770514 0.637424
--0.406014 0.490787 -0.516079 -0.770514 0.587785
--0.413833 0.500239 -0.459214 -0.770514 0.535827
--0.415857 0.502686 -0.390857 -0.770514 0.481754
--0.412273 0.498354 -0.311924 -0.770514 0.42578
--0.403331 0.487545 -0.223517 -0.770514 0.368125
--0.389344 0.470637 -0.126904 -0.770514 0.309017
--0.370675 0.44807 -0.023501 -0.770514 0.24869
--0.34774 0.420346 0.0851486 -0.770514 0.187382
--0.320993 0.388015 0.197401 -0.770514 0.125334
--0.290924 0.351667 0.311534 -0.770514 0.0627908
--0.258046 0.311925 0.425779 -0.770514 3.26795e-07
--0.222892 0.269431 0.538344 -0.770514 -0.0627902
--0.186003 0.22484 0.647443 -0.770514 -0.125333
--0.147921 0.178806 0.751326 -0.770514 -0.187381
--0.109177 0.131973 0.848306 -0.770514 -0.24869
--0.0702917 0.0849682 0.936784 -0.770514 -0.309017
--0.0317569 0.0383876 1.01528 -0.770514 -0.368124
-0.00596425 -0.00720955 1.08244 -0.770514 -0.425779
-0.042447 -0.0513098 1.13708 -0.770514 -0.481753
-0.0773106 -0.0934527 1.17821 -0.770514 -0.535826
-0.110223 -0.133237 1.205 -0.770514 -0.587785
-0.140907 -0.170327 1.21687 -0.770514 -0.637424
-0.16914 -0.204455 1.21342 -0.770514 -0.684547
-0.19476 -0.235425 1.19451 -0.770514 -0.728968
-0.217667 -0.263115 1.1602 -0.770514 -0.770513
-0.23782 -0.287476 1.11081 -0.770514 -0.809017
-0.255241 -0.308534 1.04686 -0.770514 -0.844328
-0.270009 -0.326385 0.969092 -0.770514 -0.876306
-0.282259 -0.341193 0.87847 -0.770514 -0.904827
-0.29218 -0.353186 0.776138 -0.770514 -0.929776
-0.30001 -0.36265 0.663418 -0.770514 -0.951056
-0.306027 -0.369923 0.541792 -0.770514 -0.968583
-0.310548 -0.375388 0.412873 -0.770514 -0.982287
-0.31392 -0.379464 0.278387 -0.770514 -0.992115
-0.316512 -0.382599 0.140141 -0.770514 -0.998027
-0.318712 -0.385257 1.46106e-06 -0.770514 -1
-0.320911 -0.387915 -0.140138 -0.770514 -0.998027
-0.323504 -0.391049 -0.278384 -0.770514 -0.992115
-0.326875 -0.395125 -0.412871 -0.770514 -0.982287
-0.331396 -0.40059 -0.541789 -0.770514 -0.968583
-0.337413 -0.407864 -0.663416 -0.770514 -0.951057
-0.345243 -0.417328 -0.776135 -0.770514 -0.929777
-0.355164 -0.429321 -0.878468 -0.770514 -0.904827
-0.367414 -0.444129 -0.969091 -0.770514 -0.876307
-0.382182 -0.461979 -1.04686 -0.770514 -0.844328
-0.399602 -0.483037 -1.11081 -0.770514 -0.809017
-0.419756 -0.507399 -1.1602 -0.770514 -0.770514
-0.442663 -0.535088 -1.19451 -0.770514 -0.728969
-0.468283 -0.566058 -1.21342 -0.770514 -0.684548
-0.496516 -0.600186 -1.21687 -0.770514 -0.637425
-0.527199 -0.637276 -1.205 -0.770514 -0.587786
-0.560112 -0.67706 -1.17821 -0.770514 -0.535828
-0.594975 -0.719203 -1.13708 -0.770514 -0.481754
-0.631458 -0.763303 -1.08244 -0.770514 -0.42578
-0.669179 -0.808901 -1.01528 -0.770514 -0.368125
-0.707714 -0.855481 -0.936786 -0.770514 -0.309018
-0.7466 -0.902486 -0.848308 -0.770514 -0.248691
-0.785343 -0.949319 -0.751329 -0.770514 -0.187382
-0.823426 -0.995353 -0.647445 -0.770514 -0.125334
-0.860315 -1.03994 -0.538346 -0.770514 -0.0627915
-0.895469 -1.08244 -0.425782 -0.770514 -9.80385e-07
-0.928346 -1.12218 -0.311537 -0.770514 0.0627895
-0.958416 -1.15853 -0.197403 -0.770514 0.125332
-0.985162 -1.19086 -0.0851509 -0.770514 0.18738
-1.0081 -1.21858 0.0234987 -0.770514 0.248689
-1.02677 -1.24115 0.126902 -0.770514 0.309016
-1.04075 -1.25806 0.223515 -0.770514 0.368124
-1.0497 -1.26887 0.311923 -0.770514 0.425778
-1.05328 -1.2732 0.390856 -0.770514 0.481753
-1.05126 -1.27075 0.459213 -0.770514 0.535826
-1.04344 -1.2613 0.516077 -0.770514 0.587784
-1.02971 -1.2447 0.56073 -0.770514 0.637423
-1.01002 -1.2209 0.592661 -0.770514 0.684546
-0.984396 -1.18993 0.611575 -0.770514 0.728968
-0.952946 -1.15192 0.617398 -0.770514 0.770513
-0.91584 -1.10706 0.610275 -0.770514 0.809016
-0.873326 -1.05567 0.590568 -0.770514 0.844327
-0.82572 -0.998126 0.55885 -0.770514 0.876306
-0.773403 -0.934886 0.515894 -0.770514 0.904827
-0.716819 -0.866487 0.462658 -0.770514 0.929776
-0.656467 -0.793534 0.400272 -0.770514 0.951056
-0.592895 -0.716689 0.330018 -0.770514 0.968583
-0.526696 -0.636668 0.253307 -0.770514 0.982287
-0.458495 -0.554226 0.171659 -0.770514 0.992115
-0.388944 -0.470153 0.0866717 -0.770514 0.998027
-0.342273 -0.364485 0 -0.728969 1
-0.268751 -0.286192 -0.090088 -0.728969 0.998027
-0.195923 -0.208637 -0.17846 -0.728969 0.992115
-0.124471 -0.132548 -0.26343 -0.728969 0.982287
-0.0550623 -0.0586355 -0.343365 -0.728969 0.968583
--0.0116644 0.0124213 -0.416717 -0.728969 0.951057
--0.0751047 0.0799786 -0.482046 -0.728969 0.929777
--0.134697 0.143438 -0.538044 -0.728969 0.904827
--0.189931 0.202256 -0.583558 -0.728969 0.876307
--0.24035 0.255947 -0.617606 -0.728969 0.844328
--0.285561 0.304092 -0.639398 -0.728969 0.809017
--0.325236 0.346342 -0.648347 -0.728969 0.770513
--0.35912 0.382425 -0.644077 -0.728969 0.728969
--0.387028 0.412144 -0.626435 -0.728969 0.684547
--0.408849 0.435381 -0.59549 -0.728969 0.637424
--0.424548 0.452099 -0.551537 -0.728969 0.587785
--0.434164 0.462339 -0.495086 -0.728969 0.535827
--0.437807 0.466218 -0.426862 -0.728969 0.481754
--0.435657 0.463929 -0.347792 -0.728969 0.42578
--0.42796 0.455732 -0.258987 -0.728969 0.368125
--0.415023 0.441955 -0.161732 -0.728969 0.309017
--0.397207 0.422984 -0.0574608 -0.728969 0.24869
--0.374925 0.399256 0.0522654 -0.728969 0.187382
--0.348629 0.371253 0.16578 -0.728969 0.125334
--0.318807 0.339495 0.281339 -0.728969 0.0627908
--0.285972 0.30453 0.397148 -0.728969 3.26795e-07
--0.250659 0.266925 0.511389 -0.728969 -0.0627902
--0.213408 0.227257 0.622252 -0.728969 -0.125333
--0.174764 0.186105 0.727961 -0.728969 -0.187381
--0.135262 0.14404 0.826802 -0.728969 -0.24869
--0.0954249 0.101617 0.917153 -0.728969 -0.309017
--0.0557495 0.0593673 0.997505 -0.728969 -0.368124
--0.0167038 0.0177878 1.06649 -0.728969 -0.425779
-0.0212817 -0.0226628 1.12291 -0.728969 -0.481753
-0.0578199 -0.0615721 1.16573 -0.728969 -0.535826
-0.0925721 -0.0985795 1.19414 -0.728969 -0.587785
-0.125252 -0.133381 1.20751 -0.728969 -0.637424
-0.155632 -0.165731 1.20545 -0.728969 -0.684547
-0.183539 -0.19545 1.18781 -0.728969 -0.728968
-0.208865 -0.222419 1.15465 -0.728969 -0.770513
-0.23156 -0.246587 1.10627 -0.728969 -0.809017
-0.251634 -0.267964 1.04321 -0.728969 -0.844328
-0.269158 -0.286625 0.966214 -0.728969 -0.876306
-0.284256 -0.302702 0.87624 -0.728969 -0.904827
-0.297106 -0.316386 0.774447 -0.728969 -0.929776
-0.307934 -0.327917 0.662169 -0.728969 -0.951056
-0.317007 -0.337579 0.5409 -0.728969 -0.968583
-0.324632 -0.345699 0.412267 -0.728969 -0.982287
-0.331143 -0.352633 0.278013 -0.728969 -0.992115
-0.336899 -0.358762 0.139964 -0.728969 -0.998027
-0.342273 -0.364485 1.45924e-06 -0.728969 -1
-0.347647 -0.370207 -0.139961 -0.728969 -0.998027
-0.353403 -0.376336 -0.278011 -0.728969 -0.992115
-0.359914 -0.38327 -0.412265 -0.728969 -0.982287
-0.367539 -0.39139 -0.540897 -0.728969 -0.968583
-0.376612 -0.401052 -0.662167 -0.728969 -0.951057
-0.38744 -0.412583 -0.774445 -0.728969 -0.929777
-0.40029 -0.426267 -0.876238 -0.728969 -0.904827
-0.415388 -0.442344 -0.966212 -0.728969 -0.876307
-0.432911 -0.461005 -1.04321 -0.728969 -0.844328
-0.452986 -0.482382 -1.10627 -0.728969 -0.809017
-0.475681 -0.506549 -1.15465 -0.728969 -0.770514
-0.501006 -0.533519 -1.18781 -0.728969 -0.728969
-0.528914 -0.563237 -1.20545 -0.728969 -0.684548
-0.559293 -0.595588 -1.20751 -0.728969 -0.637425
-0.591973 -0.630389 -1.19414 -0.728969 -0.587786
-0.626726 -0.667397 -1.16573 -0.728969 -0.535828
-0.663264 -0.706306 -1.12291 -0.728969 -0.481754
-0.701249 -0.746756 -1.06649 -0.728969 -0.42578
-0.740295 -0.788336 -0.997506 -0.728969 -0.368125
-0.77997 -0.830586 -0.917154 -0.728969 -0.309018
-0.819808 -0.873009 -0.826804 -0.728969 -0.248691
-0.859309 -0.915073 -0.727963 -0.728969 -0.187382
-0.897954 -0.956226 -0.622255 -0.728969 -0.125334
-0.935204 -0.995894 -0.511392 -0.728969 -0.0627915
-0.970518 -1.0335 -0.39715 -0.728969 -9.80385e-07
-1.00335 -1.06846 -0.281341 -0.728969 0.0627895
-1.03317 -1.10022 -0.165782 -0.728969 0.125332
-1.05947 -1.12822 -0.0522677 -0.728969 0.18738
-1.08175 -1.15195 0.0574585 -0.728969 0.248689
-1.09957 -1.17092 0.16173 -0.728969 0.309016
-1.11251 -1.1847 0.258985 -0.728969 0.368124
-1.1202 -1.1929 0.34779 -0.728969 0.425778
-1.12235 -1.19519 0.426861 -0.728969 0.481753
-1.11871 -1.19131 0.495084 -0.728969 0.535826
-1.10909 -1.18107 0.551536 -0.728969 0.587784
-1.0934 -1.16435 0.59549 -0.728969 0.637423
-1.07157 -1.14111 0.626434 -0.728969 0.684546
-1.04367 -1.1114 0.644076 -0.728969 0.728968
-1.00978 -1.07531 0.648347 -0.728969 0.770513
-0.970108 -1.03306 0.639399 -0.728969 0.809016
-0.924897 -0.984917 0.617607 -0.728969 0.844327
-0.874478 -0.931227 0.583559 -0.728969 0.876306
-0.819245 -0.872409 0.538045 -0.728969 0.904827
-0.759652 -0.808949 0.482047 -0.728969 0.929776
-0.696212 -0.741392 0.416718 -0.728969 0.951056
-0.629485 -0.670335 0.343366 -0.728969 0.968583
-0.560077 -0.596422 0.263431 -0.728969 0.982287
-0.488625 -0.520334 0.178462 -0.728969 0.992115
-0.415796 -0.442779 0.0900898 -0.728969 0.998027
-0.364484 -0.342274 0 -0.684548 1
-0.288293 -0.270725 -0.0934171 -0.684548 0.998027
-0.2128 -0.199833 -0.185088 -0.684548 0.992115
-0.138694 -0.130243 -0.273294 -0.684548 0.982287
-0.0666484 -0.0625872 -0.356374 -0.684548 0.968583
--0.00269359 0.00252945 -0.432752 -0.684548 0.951057
--0.0687215 0.0645339 -0.50096 -0.684548 0.929777
--0.130868 0.122893 -0.559665 -0.684548 0.904827
--0.188614 0.177121 -0.60769 -0.684548 0.876307
--0.241499 0.226783 -0.644035 -0.684548 0.844328
--0.289121 0.271503 -0.667891 -0.684548 0.809017
--0.331145 0.310967 -0.678656 -0.684548 0.770513
--0.367308 0.344926 -0.675943 -0.684548 0.728969
--0.397416 0.373199 -0.65959 -0.684548 0.684547
--0.42135 0.395675 -0.629662 -0.684548 0.637424
--0.439066 0.412312 -0.58645 -0.684548 0.587785
--0.450594 0.423137 -0.530469 -0.684548 0.535827
--0.456033 0.428245 -0.462446 -0.684548 0.481754
--0.455555 0.427796 -0.383316 -0.684548 0.42578
--0.449396 0.422012 -0.294202 -0.684548 0.368125
--0.437853 0.411173 -0.196401 -0.684548 0.309017
--0.421279 0.395608 -0.0913638 -0.684548 0.24869
--0.400075 0.375696 0.0193306 -0.684548 0.187382
--0.374685 0.351853 0.133996 -0.684548 0.125334
--0.345589 0.324531 0.250866 -0.684548 0.0627908
--0.313293 0.294203 0.368124 -0.684548 3.26795e-07
--0.278322 0.261363 0.48393 -0.684548 -0.0627902
--0.241213 0.226514 0.596448 -0.684548 -0.125333
--0.202501 0.190162 0.703877 -0.684548 -0.187381
--0.16272 0.152805 0.804482 -0.684548 -0.24869
--0.122388 0.11493 0.896616 -0.684548 -0.309017
--0.0819983 0.0770017 0.978749 -0.684548 -0.368124
--0.042019 0.0394586 1.04949 -0.684548 -0.425779
--0.00288032 0.00270481 1.10763 -0.684548 -0.481753
-0.0350292 -0.0328947 1.1521 -0.684548 -0.535826
-0.0713678 -0.067019 1.18209 -0.684548 -0.587785
-0.105846 -0.0993959 1.19695 -0.684548 -0.637424
-0.138227 -0.129804 1.19629 -0.684548 -0.684547
-0.168335 -0.158078 1.17994 -0.684548 -0.728968
-0.19605 -0.184104 1.14796 -0.684548 -0.770513
-0.221314 -0.207828 1.10065 -0.684548 -0.809017
-0.244124 -0.229248 1.03854 -0.684548 -0.844328
-0.264539 -0.248419 0.962382 -0.684548 -0.876306
-0.282669 -0.265444 0.873146 -0.684548 -0.904827
-0.298677 -0.280477 0.771993 -0.684548 -0.929776
-0.312772 -0.293713 0.660267 -0.684548 -0.951056
-0.325207 -0.30539 0.539473 -0.684548 -0.968583
-0.336268 -0.315777 0.411255 -0.684548 -0.982287
-0.346272 -0.325172 0.277366 -0.684548 -0.992115
-0.355559 -0.333893 0.139648 -0.684548 -0.998027
-0.364484 -0.342274 1.45599e-06 -0.684548 -1
-0.373408 -0.350655 -0.139645 -0.684548 -0.998027
-0.382696 -0.359376 -0.277363 -0.684548 -0.992115
-0.3927 -0.368771 -0.411252 -0.684548 -0.982287
-0.403761 -0.379158 -0.539471 -0.684548 -0.968583
-0.416195 -0.390834 -0.660264 -0.684548 -0.951057
-0.430291 -0.404071 -0.77199 -0.684548 -0.929777
-0.446299 -0.419103 -0.873144 -0.684548 -0.904827
-0.464429 -0.436129 -0.962381 -0.684548 -0.876307
-0.484843 -0.455299 -1.03854 -0.684548 -0.844328
-0.507654 -0.47672 -1.10065 -0.684548 -0.809017
-0.532917 -0.500443 -1.14796 -0.684548 -0.770514
-0.560632 -0.52647 -1.17994 -0.684548 -0.728969
-0.59074 -0.554743 -1.19629 -0.684548 -0.684548
-0.623122 -0.585151 -1.19695 -0.684548 -0.637425
-0.657599 -0.617528 -1.18209 -0.684548 -0.587786
-0.693938 -0.651653 -1.15211 -0.684548 -0.535828
-0.731847 -0.687252 -1.10763 -0.684548 -0.481754
-0.770986 -0.724006 -1.0495 -0.684548 -0.42578
-0.810965 -0.761549 -0.978751 -0.684548 -0.368125
-0.851355 -0.799477 -0.896618 -0.684548 -0.309018
-0.891687 -0.837352 -0.804484 -0.684548 -0.248691
-0.931468 -0.874709 -0.70388 -0.684548 -0.187382
-0.97018 -0.911061 -0.59645 -0.684548 -0.125334
-1.00729 -0.94591 -0.483932 -0.684548 -0.0627915
-1.04226 -0.97875 -0.368127 -0.684548 -9.80385e-07
-1.07456 -1.00908 -0.250869 -0.684548 0.0627895
-1.10365 -1.0364 -0.133998 -0.684548 0.125332
-1.12904 -1.06024 -0.0193329 -0.684548 0.18738
-1.15025 -1.08016 0.0913616 -0.684548 0.248689
-1.16682 -1.09572 0.196399 -0.684548 0.309016
-1.17836 -1.10656 0.2942 -0.684548 0.368124
-1.18452 -1.11234 0.383314 -0.684548 0.425778
-1.185 -1.11279 0.462444 -0.684548 0.481753
-1.17956 -1.10768 0.530467 -0.684548 0.535826
-1.16803 -1.09686 0.586449 -0.684548 0.587784
-1.15032 -1.08022 0.629661 -0.684548 0.637423
-1.12638 -1.05775 0.65959 -0.684548 0.684546
-1.09628 -1.02947 0.675942 -0.684548 0.728968
-1.06011 -0.995516 0.678656 -0.684548 0.770513
-1.01809 -0.956052 0.667892 -0.684548 0.809016
-0.970468 -0.911332 0.644036 -0.684548 0.844327
-0.917583 -0.86167 0.607691 -0.684548 0.876306
-0.859837 -0.807442 0.559666 -0.684548 0.904827
-0.797691 -0.749083 0.500961 -0.684548 0.929776
-0.731663 -0.687079 0.432753 -0.684548 0.951056
-0.662321 -0.621962 0.356376 -0.684548 0.968583
-0.590275 -0.554306 0.273295 -0.684548 0.982287
-0.51617 -0.484717 0.185089 -0.684548 0.992115
-0.440677 -0.413824 0.093419 -0.684548 0.998027
-0.385256 -0.318712 0 -0.637425 1
-0.307023 -0.253992 -0.096654 -0.637425 0.998027
-0.229486 -0.189848 -0.191532 -0.637425 0.992115
-0.153331 -0.126847 -0.282888 -0.637425 0.982287
-0.0792272 -0.0655426 -0.369032 -0.637425 0.968583
-0.00781803 -0.00646765 -0.44836 -0.637425 0.951057
--0.0602876 0.0498744 -0.519379 -0.637425 0.929777
--0.124522 0.103014 -0.580733 -0.637425 0.904827
--0.184367 0.152522 -0.631223 -0.637425 0.876307
--0.239359 0.198015 -0.669829 -0.637425 0.844328
--0.289092 0.239159 -0.695725 -0.637425 0.809017
--0.33323 0.275672 -0.708295 -0.637425 0.770513
--0.3715 0.307332 -0.707142 -0.637425 0.728969
--0.403704 0.333974 -0.692094 -0.637425 0.684547
--0.429714 0.355491 -0.663213 -0.637425 0.637424
--0.449477 0.37184 -0.620786 -0.637425 0.587785
--0.46301 0.383036 -0.565328 -0.637425 0.535827
--0.470403 0.389152 -0.497573 -0.637425 0.481754
--0.471813 0.390319 -0.418462 -0.637425 0.42578
--0.467463 0.38672 -0.329126 -0.637425 0.368125
--0.457635 0.37859 -0.230877 -0.637425 0.309017
--0.442667 0.366207 -0.125177 -0.637425 0.24869
--0.422944 0.349891 -0.0136233 -0.637425 0.187382
--0.398896 0.329996 0.102079 -0.637425 0.125334
--0.370986 0.306907 0.220146 -0.637425 0.0627908
--0.339704 0.281028 0.338738 -0.637425 3.26795e-07
--0.305561 0.252783 0.455993 -0.637425 -0.0627902
--0.269079 0.222602 0.570054 -0.637425 -0.125333
--0.230782 0.19092 0.679099 -0.637425 -0.187381
--0.191189 0.158166 0.781368 -0.637425 -0.24869
--0.150809 0.12476 0.875195 -0.637425 -0.309017
--0.110127 0.0911049 0.959028 -0.637425 -0.368124
--0.069602 0.0575799 1.03146 -0.637425 -0.425779
--0.0296601 0.024537 1.09125 -0.637425 -0.481753
-0.00931367 -0.00770496 1.13734 -0.637425 -0.535826
-0.0469787 -0.0388642 1.16888 -0.637425 -0.587785
-0.0830437 -0.0686999 1.18522 -0.637425 -0.637424
-0.11727 -0.0970143 1.18595 -0.637425 -0.684547
-0.149474 -0.123656 1.17091 -0.637425 -0.728968
-0.179528 -0.148519 1.14014 -0.637425 -0.770513
-0.207363 -0.171546 1.09394 -0.637425 -0.809017
-0.232965 -0.192726 1.03284 -0.637425 -0.844328
-0.256375 -0.212093 0.957601 -0.637425 -0.876306
-0.277689 -0.229725 0.86919 -0.637425 -0.904827
-0.297049 -0.245741 0.768776 -0.637425 -0.929776
-0.314644 -0.260297 0.657713 -0.637425 -0.951056
-0.330705 -0.273583 0.537515 -0.637425 -0.968583
-0.345493 -0.285818 0.409836 -0.637425 -0.982287
-0.359303 -0.297242 0.276444 -0.637425 -0.992115
-0.372448 -0.308116 0.139195 -0.637425 -0.998027
-0.385256 -0.318712 1.4513e-06 -0.637425 -1
-0.398064 -0.329308 -0.139192 -0.637425 -0.998027
-0.411209 -0.340183 -0.276441 -0.637425 -0.992115
-0.425019 -0.351607 -0.409833 -0.637425 -0.982287
-0.439808 -0.363841 -0.537512 -0.637425 -0.968583
-0.455868 -0.377128 -0.65771 -0.637425 -0.951057
-0.473463 -0.391684 -0.768774 -0.637425 -0.929777
-0.492823 -0.4077 -0.869188 -0.637425 -0.904827
-0.514137 -0.425332 -0.957599 -0.637425 -0.876307
-0.537547 -0.444699 -1.03284 -0.637425 -0.844328
-0.563149 -0.465878 -1.09394 -0.637425 -0.809017
-0.590984 -0.488905 -1.14013 -0.637425 -0.770514
-0.621038 -0.513769 -1.17091 -0.637425 -0.728969
-0.653242 -0.54041 -1.18595 -0.637425 -0.684548
-0.687468 -0.568724 -1.18522 -0.637425 -0.637425
-0.723533 -0.59856 -1.16888 -0.637425 -0.587786
-0.761198 -0.629719 -1.13734 -0.637425 -0.535828
-0.800172 -0.661961 -1.09125 -0.637425 -0.481754
-0.840114 -0.695004 -1.03146 -0.637425 -0.42578
-0.880638 -0.728529 -0.959029 -0.637425 -0.368125
-0.921321 -0.762184 -0.875196 -0.637425 -0.309018
-0.961701 -0.79559 -0.781371 -0.637425 -0.248691
-1.00129 -0.828344 -0.679101 -0.637425 -0.187382
-1.03959 -0.860026 -0.570057 -0.637425 -0.125334
-1.07607 -0.890207 -0.455995 -0.637425 -0.0627915
-1.11022 -0.918453 -0.33874 -0.637425 -9.80385e-07
-1.1415 -0.944331 -0.220148 -0.637425 0.0627895
-1.16941 -0.967421 -0.102082 -0.637425 0.125332
-1.19346 -0.987315 0.0136209 -0.637425 0.18738
-1.21318 -1.00363 0.125175 -0.637425 0.248689
-1.22815 -1.01601 0.230875 -0.637425 0.309016
-1.23798 -1.02414 0.329124 -0.637425 0.368124
-1.24233 -1.02774 0.41846 -0.637425 0.425778
-1.24092 -1.02658 0.497572 -0.637425 0.481753
-1.23352 -1.02046 0.565327 -0.637425 0.535826
-1.21999 -1.00927 0.620785 -0.637425 0.587784
-1.20023 -0.992917 0.663212 -0.637425 0.637423
-1.17422 -0.971399 0.692094 -0.637425 0.684546
-1.14201 -0.944758 0.707141 -0.637425 0.728968
-1.10374 -0.913098 0.708295 -0.637425 0.770513
-1.05961 -0.876584 0.695725 -0.637425 0.809016
-1.00987 -0.835441 0.66983 -0.637425 0.844327
-0.954881 -0.789948 0.631224 -0.637425 0.876306
-0.895036 -0.74044 0.580734 -0.637425 0.904827
-0.830802 -0.6873 0.51938 -0.637425 0.929776
-0.762696 -0.630958 0.448361 -0.637425 0.951056
-0.691287 -0.571884 0.369033 -0.637425 0.968583
-0.617183 -0.510579 0.28289 -0.637425 0.982287
-0.541028 -0.447578 0.191534 -0.637425 0.992115
-0.463491 -0.383434 0.096656 -0.637425 0.998027
-0.404508 -0.293893 0 -0.587786 1
-0.324863 -0.236027 -0.0997956 -0.587786 0.998027
-0.245902 -0.178659 -0.197788 -0.587786 0.992115
-0.168302 -0.122279 -0.292203 -0.587786 0.982287
-0.0927227 -0.0673671 -0.381325 -0.587786 0.968583
-0.0197979 -0.014384 -0.463525 -0.587786 0.951057
--0.0498711 0.0362336 -0.537286 -0.587786 0.929777
--0.115723 0.0840782 -0.601228 -0.587786 0.904827
--0.177245 0.128776 -0.654133 -0.587786 0.876307
--0.233975 0.169993 -0.694962 -0.587786 0.844328
--0.28551 0.207436 -0.722872 -0.587786 0.809017
--0.331511 0.240857 -0.737235 -0.587786 0.770513
--0.371703 0.270059 -0.737643 -0.587786 0.728969
--0.405882 0.294891 -0.723916 -0.587786 0.684547
--0.433912 0.315256 -0.696108 -0.587786 0.637424
--0.45573 0.331108 -0.654508 -0.587786 0.587785
--0.471342 0.342451 -0.59963 -0.587786 0.535827
--0.480822 0.349338 -0.53221 -0.587786 0.481754
--0.484312 0.351874 -0.453194 -0.587786 0.42578
--0.482018 0.350207 -0.363726 -0.587786 0.368125
--0.4742 0.344528 -0.265124 -0.587786 0.309017
--0.461178 0.335066 -0.158866 -0.587786 0.24869
--0.443315 0.322088 -0.0465637 -0.587786 0.187382
--0.421017 0.305888 0.0700622 -0.587786 0.125334
--0.394727 0.286787 0.189208 -0.587786 0.0627908
--0.364912 0.265125 0.309017 -0.587786 3.26795e-07
--0.332061 0.241257 0.427606 -0.587786 -0.0627902
--0.296672 0.215546 0.543098 -0.587786 -0.125333
--0.259252 0.188358 0.653651 -0.587786 -0.187381
--0.220301 0.160058 0.757483 -0.587786 -0.24869
--0.180308 0.131001 0.852909 -0.587786 -0.309017
--0.139744 0.10153 0.93836 -0.587786 -0.368124
--0.0990557 0.0719684 1.01241 -0.587786 -0.425779
--0.0586579 0.0426176 1.0738 -0.587786 -0.481753
--0.018928 0.013752 1.12145 -0.587786 -0.535826
-0.0197983 -0.0143843 1.15451 -0.587786 -0.587785
-0.0572316 -0.0415813 1.17231 -0.587786 -0.637424
-0.0931317 -0.0676643 1.17444 -0.587786 -0.684547
-0.127311 -0.0924967 1.16072 -0.587786 -0.728968
-0.159633 -0.115981 1.13119 -0.587786 -0.770513
-0.190018 -0.138057 1.08614 -0.587786 -0.809017
-0.218439 -0.158706 1.02612 -0.587786 -0.844328
-0.244919 -0.177945 0.951874 -0.587786 -0.876306
-0.269533 -0.195828 0.864376 -0.587786 -0.904827
-0.292402 -0.212443 0.764801 -0.587786 -0.929776
-0.313691 -0.22791 0.65451 -0.587786 -0.951056
-0.3336 -0.242375 0.535026 -0.587786 -0.968583
-0.352364 -0.256008 0.408013 -0.587786 -0.982287
-0.370247 -0.269001 0.27525 -0.587786 -0.992115
-0.387529 -0.281557 0.138604 -0.587786 -0.998027
-0.404508 -0.293893 1.44517e-06 -0.587786 -1
-0.421487 -0.306229 -0.138601 -0.587786 -0.998027
-0.438769 -0.318785 -0.275247 -0.587786 -0.992115
-0.456652 -0.331778 -0.40801 -0.587786 -0.982287
-0.475416 -0.345411 -0.535023 -0.587786 -0.968583
-0.495325 -0.359876 -0.654507 -0.587786 -0.951057
-0.516613 -0.375343 -0.764799 -0.587786 -0.929777
-0.539483 -0.391958 -0.864374 -0.587786 -0.904827
-0.564097 -0.409841 -0.951873 -0.587786 -0.876307
-0.590577 -0.42908 -1.02612 -0.587786 -0.844328
-0.618997 -0.449729 -1.08614 -0.587786 -0.809017
-0.649383 -0.471805 -1.13119 -0.587786 -0.770514
-0.681705 -0.495289 -1.16072 -0.587786 -0.728969
-0.715884 -0.520121 -1.17444 -0.587786 -0.684548
-0.751784 -0.546204 -1.17231 -0.587786 -0.637425
-0.789217 -0.573401 -1.15451 -0.587786 -0.587786
-0.827943 -0.601538 -1.12145 -0.587786 -0.535828
-0.867673 -0.630403 -1.0738 -0.587786 -0.481754
-0.908071 -0.659754 -1.01241 -0.587786 -0.42578
-0.948759 -0.689316 -0.938361 -0.587786 -0.368125
-0.989323 -0.718787 -0.852911 -0.587786 -0.309018
-1.02932 -0.747844 -0.757486 -0.587786 -0.248691
-1.06827 -0.776144 -0.653653 -0.587786 -0.187382
-1.10569 -0.803331 -0.543101 -0.587786 -0.125334
-1.14108 -0.829042 -0.427609 -0.587786 -0.0627915
-1.17393 -0.852911 -0.309019 -0.587786 -9.80385e-07
-1.20374 -0.874573 -0.189211 -0.587786 0.0627895
-1.23003 -0.893674 -0.0700647 -0.587786 0.125332
-1.25233 -0.909874 0.0465613 -0.587786 0.18738
-1.27019 -0.922852 0.158864 -0.587786 0.248689
-1.28322 -0.932314 0.265122 -0.587786 0.309016
-1.29103 -0.937993 0.363724 -0.587786 0.368124
-1.29333 -0.939661 0.453193 -0.587786 0.425778
-1.28984 -0.937125 0.532208 -0.587786 0.481753
-1.28036 -0.930237 0.599628 -0.587786 0.535826
-1.26475 -0.918895 0.654507 -0.587786 0.587784
-1.24293 -0.903043 0.696108 -0.587786 0.637423
-1.2149 -0.882678 0.723915 -0.587786 0.684546
-1.18072 -0.857845 0.737642 -0.587786 0.728968
-1.14053 -0.828644 0.737235 -0.587786 0.770513
-1.09453 -0.795223 0.722873 -0.587786 0.809016
-1.04299 -0.75778 0.694962 -0.587786 0.844327
-0.986262 -0.716563 0.654134 -0.587786 0.876306
-0.924741 -0.671865 0.601229 -0.587786 0.904827
-0.858889 -0.624021 0.537287 -0.587786 0.929776
-0.78922 -0.573403 0.463527 -0.587786 0.951056
-0.716295 -0.52042 0.381327 -0.587786 0.968583
-0.640716 -0.465508 0.292205 -0.587786 0.982287
-0.563116 -0.409129 0.19779 -0.587786 0.992115
-0.484155 -0.35176 0.0997976 -0.587786 0.998027
-0.422164 -0.267914 0 -0.535828 1
-0.341729 -0.216869 -0.102839 -0.535828 0.998027
-0.261962 -0.166246 -0.203848 -0.535828 0.992115
-0.183519 -0.116465 -0.30123 -0.535828 0.982287
-0.107043 -0.067932 -0.393242 -0.535828 0.968583
-0.0331533 -0.0210397 -0.478233 -0.535828 0.951057
--0.0375645 0.0238392 -0.554662 -0.535828 0.929777
--0.104561 0.0663568 -0.62113 -0.535828 0.904827
--0.167333 0.106193 -0.676397 -0.535828 0.876307
--0.225427 0.143061 -0.719408 -0.535828 0.844328
--0.278445 0.176707 -0.749306 -0.535828 0.809017
--0.326049 0.206917 -0.765448 -0.535828 0.770513
--0.367964 0.233518 -0.767416 -0.535828 0.728969
--0.403981 0.256375 -0.755022 -0.535828 0.684547
--0.433958 0.275399 -0.728317 -0.535828 0.637424
--0.45782 0.290542 -0.687585 -0.535828 0.587785
--0.47556 0.301801 -0.633339 -0.535828 0.535827
--0.487238 0.309211 -0.566321 -0.535828 0.481754
--0.492974 0.312852 -0.48748 -0.535828 0.42578
--0.492953 0.312838 -0.397967 -0.535828 0.368125
--0.487414 0.309323 -0.29911 -0.535828 0.309017
--0.476648 0.302491 -0.192399 -0.535828 0.24869
--0.460992 0.292555 -0.0794582 -0.535828 0.187382
--0.440827 0.279758 0.0379759 -0.535828 0.125334
--0.416562 0.264359 0.158084 -0.535828 0.0627908
--0.388639 0.246638 0.278991 -0.535828 3.26795e-07
--0.357515 0.226887 0.398797 -0.535828 -0.0627902
--0.323664 0.205404 0.515606 -0.535828 -0.125333
--0.287562 0.182493 0.627557 -0.535828 -0.187381
--0.249684 0.158455 0.732851 -0.535828 -0.24869
--0.210496 0.133585 0.829783 -0.535828 -0.309017
--0.170449 0.108171 0.916766 -0.535828 -0.368124
--0.12997 0.0824816 0.992358 -0.535828 -0.425779
--0.0894577 0.0567718 1.05528 -0.535828 -0.481753
--0.0492781 0.0312729 1.10446 -0.535828 -0.535826
--0.00975811 0.0061927 1.139 -0.535828 -0.587785
-0.0288175 -0.0182882 1.15825 -0.535828 -0.637424
-0.0662096 -0.042018 1.16177 -0.535828 -0.684547
-0.102227 -0.0648752 1.14938 -0.535828 -0.728968
-0.136727 -0.0867696 1.12112 -0.535828 -0.770513
-0.169617 -0.107643 1.07728 -0.535828 -0.809017
-0.200855 -0.127467 1.01839 -0.535828 -0.844328
-0.230447 -0.146246 0.945209 -0.535828 -0.876306
-0.258443 -0.164013 0.858709 -0.535828 -0.904827
-0.284939 -0.180829 0.760071 -0.535828 -0.929776
-0.310071 -0.196777 0.650661 -0.535828 -0.951056
-0.334007 -0.211968 0.532009 -0.535828 -0.968583
-0.35695 -0.226528 0.405787 -0.535828 -0.982287
-0.379124 -0.2406 0.273784 -0.535828 -0.992115
-0.400776 -0.254341 0.137876 -0.535828 -0.998027
-0.422163 -0.267914 1.43762e-06 -0.535828 -1
-0.443551 -0.281486 -0.137873 -0.535828 -0.998027
-0.465202 -0.295227 -0.273781 -0.535828 -0.992115
-0.487377 -0.3093 -0.405784 -0.535828 -0.982287
-0.51032 -0.32386 -0.532006 -0.535828 -0.968583
-0.534256 -0.33905 -0.650658 -0.535828 -0.951057
-0.559387 -0.354999 -0.760069 -0.535828 -0.929777
-0.585884 -0.371814 -0.858707 -0.535828 -0.904827
-0.61388 -0.389581 -0.945207 -0.535828 -0.876307
-0.643471 -0.40836 -1.01839 -0.535828 -0.844328
-0.67471 -0.428185 -1.07728 -0.535828 -0.809017
-0.7076 -0.449058 -1.12112 -0.535828 -0.770514
-0.7421 -0.470952 -1.14938 -0.535828 -0.728969
-0.778117 -0.493809 -1.16177 -0.535828 -0.684548
-0.815509 -0.517539 -1.15825 -0.535828 -0.637425
-0.854085 -0.54202 -1.139 -0.535828 -0.587786
-0.893605 -0.5671 -1.10446 -0.535828 -0.535828
-0.933784 -0.592599 -1.05529 -0.535828 -0.481754
-0.974296 -0.618309 -0.992359 -0.535828 -0.42578
-1.01478 -0.643998 -0.916767 -0.535828 -0.368125
-1.05482 -0.669413 -0.829785 -0.535828 -0.309018
-1.09401 -0.694282 -0.732853 -0.535828 -0.248691
-1.13189 -0.71832 -0.627559 -0.535828 -0.187382
-1.16799 -0.741231 -0.515609 -0.535828 -0.125334
-1.20184 -0.762714 -0.3988 -0.535828 -0.0627915
-1.23297 -0.782466 -0.278994 -0.535828 -9.80385e-07
-1.26089 -0.800187 -0.158086 -0.535828 0.0627895
-1.28515 -0.815585 -0.0379784 -0.535828 0.125332
-1.30532 -0.828383 0.0794558 -0.535828 0.18738
-1.32097 -0.838318 0.192396 -0.535828 0.248689
-1.33174 -0.845151 0.299108 -0.535828 0.309016
-1.33728 -0.848666 0.397965 -0.535828 0.368124
-1.3373 -0.84868 0.487478 -0.535828 0.425778
-1.33157 -0.845039 0.566319 -0.535828 0.481753
-1.31989 -0.837629 0.633338 -0.535828 0.535826
-1.30215 -0.82637 0.687584 -0.535828 0.587784
-1.27829 -0.811227 0.728317 -0.535828 0.637423
-1.24831 -0.792203 0.755022 -0.535828 0.684546
-1.21229 -0.769346 0.767416 -0.535828 0.728968
-1.17038 -0.742746 0.765448 -0.535828 0.770513
-1.12277 -0.712535 0.749307 -0.535828 0.809016
-1.06976 -0.678889 0.719409 -0.535828 0.844327
-1.01166 -0.642022 0.676398 -0.535828 0.876306
-0.94889 -0.602185 0.621131 -0.535828 0.904827
-0.881893 -0.559668 0.554664 -0.535828 0.929776
-0.811176 -0.514789 0.478235 -0.535828 0.951056
-0.737285 -0.467897 0.393244 -0.535828 0.968583
-0.66081 -0.419364 0.301232 -0.535828 0.982287
-0.582367 -0.369582 0.20385 -0.535828 0.992115
-0.5026 -0.31896 0.102841 -0.535828 0.998027
-0.438153 -0.240877 0 -0.481755 1
-0.357544 -0.196562 -0.10578 -0.481755 0.998027
-0.277577 -0.152599 -0.209708 -0.481755 0.992115
-0.198883 -0.109337 -0.309959 -0.481755 0.982287
-0.122083 -0.067116 -0.404772 -0.481755 0.968583
-0.0477717 -0.0262628 -0.492469 -0.481755 0.951057
--0.0234845 0.0129108 -0.571492 -0.481755 0.929777
--0.0911549 0.050113 -0.640419 -0.481755 0.904827
--0.154751 0.0850753 -0.697994 -0.481755 0.876307
--0.213831 0.117555 -0.743145 -0.481755 0.844328
--0.268007 0.147339 -0.775001 -0.481755 0.809017
--0.316945 0.174243 -0.792905 -0.481755 0.770513
--0.360372 0.198117 -0.796431 -0.481755 0.728969
--0.398076 0.218845 -0.785384 -0.481755 0.684547
--0.429908 0.236345 -0.759808 -0.481755 0.637424
--0.455783 0.25057 -0.719983 -0.481755 0.587785
--0.47568 0.261508 -0.666424 -0.481755 0.535827
--0.489638 0.269181 -0.599873 -0.481755 0.481754
--0.497759 0.273646 -0.521284 -0.481755 0.42578
--0.500201 0.274989 -0.431815 -0.481755 0.368125
--0.497176 0.273325 -0.332801 -0.481755 0.309017
--0.488944 0.2688 -0.225742 -0.481755 0.24869
--0.475813 0.261581 -0.112274 -0.481755 0.187382
--0.458126 0.251858 0.0058521 -0.481755 0.125334
--0.436261 0.239837 0.126803 -0.481755 0.0627908
--0.410622 0.225742 0.24869 -0.481755 3.26795e-07
--0.381634 0.209806 0.369595 -0.481755 -0.0627902
--0.349733 0.192268 0.487606 -0.481755 -0.125333
--0.315363 0.173373 0.600844 -0.481755 -0.187381
--0.278968 0.153365 0.707495 -0.481755 -0.24869
--0.240985 0.132483 0.805837 -0.481755 -0.309017
--0.201836 0.11096 0.894267 -0.481755 -0.368124
--0.161925 0.0890192 0.971327 -0.481755 -0.425779
--0.121631 0.0668674 1.03573 -0.481755 -0.481753
--0.0813038 0.0446973 1.08638 -0.481755 -0.535826
--0.041258 0.0226819 1.12237 -0.481755 -0.587785
--0.00177092 0.000973575 1.14305 -0.481755 -0.637424
-0.0369212 -0.0202977 1.14796 -0.481755 -0.684547
-0.0746251 -0.0410256 1.13691 -0.481755 -0.728968
-0.111192 -0.0611285 1.10995 -0.481755 -0.770513
-0.146518 -0.0805492 1.06735 -0.481755 -0.809017
-0.180544 -0.0992554 1.00966 -0.481755 -0.844328
-0.213256 -0.117239 0.93761 -0.481755 -0.876306
-0.244679 -0.134514 0.852194 -0.481755 -0.904827
-0.27488 -0.151117 0.754591 -0.481755 -0.929776
-0.303962 -0.167105 0.646169 -0.481755 -0.951056
-0.332059 -0.182552 0.528466 -0.481755 -0.968583
-0.359333 -0.197546 0.40316 -0.481755 -0.982287
-0.38597 -0.212189 0.272047 -0.481755 -0.992115
-0.412171 -0.226594 0.137012 -0.481755 -0.998027
-0.438153 -0.240877 1.42865e-06 -0.481755 -1
-0.464134 -0.255161 -0.13701 -0.481755 -0.998027
-0.490336 -0.269565 -0.272045 -0.481755 -0.992115
-0.516972 -0.284209 -0.403158 -0.481755 -0.982287
-0.544246 -0.299203 -0.528464 -0.481755 -0.968583
-0.572343 -0.314649 -0.646167 -0.481755 -0.951057
-0.601425 -0.330637 -0.754589 -0.481755 -0.929777
-0.631626 -0.347241 -0.852192 -0.481755 -0.904827
-0.66305 -0.364516 -0.937608 -0.481755 -0.876307
-0.695761 -0.382499 -1.00965 -0.481755 -0.844328
-0.729787 -0.401205 -1.06735 -0.481755 -0.809017
-0.765113 -0.420626 -1.10995 -0.481755 -0.770514
-0.80168 -0.440729 -1.13691 -0.481755 -0.728969
-0.839384 -0.461457 -1.14796 -0.481755 -0.684548
-0.878076 -0.482728 -1.14305 -0.481755 -0.637425
-0.917563 -0.504436 -1.12237 -0.481755 -0.587786
-0.957609 -0.526452 -1.08638 -0.481755 -0.535828
-0.997936 -0.548622 -1.03573 -0.481755 -0.481754
-1.03823 -0.570773 -0.971329 -0.481755 -0.42578
-1.07814 -0.592715 -0.894268 -0.481755 -0.368125
-1.11729 -0.614237 -0.805839 -0.481755 -0.309018
-1.15527 -0.635119 -0.707497 -0.481755 -0.248691
-1.19167 -0.655127 -0.600846 -0.481755 -0.187382
-1.22604 -0.674022 -0.487608 -0.481755 -0.125334
-1.25794 -0.69156 -0.369597 -0.481755 -0.0627915
-1.28693 -0.707497 -0.248692 -0.481755 -9.80385e-07
-1.31257 -0.721592 -0.126806 -0.481755 0.0627895
-1.33443 -0.733612 -0.00585459 -0.481755 0.125332
-1.35212 -0.743336 0.112272 -0.481755 0.18738
-1.36525 -0.750555 0.225739 -0.481755 0.248689
-1.37348 -0.75508 0.332798 -0.481755 0.309016
-1.37651 -0.756743 0.431813 -0.481755 0.368124
-1.37407 -0.755401 0.521283 -0.481755 0.425778
-1.36594 -0.750936 0.599871 -0.481755 0.481753
-1.35199 -0.743263 0.666423 -0.481755 0.535826
-1.33209 -0.732325 0.719982 -0.481755 0.587784
-1.30621 -0.7181 0.759807 -0.481755 0.637423
-1.27438 -0.7006 0.785384 -0.481755 0.684546
-1.23668 -0.679872 0.796431 -0.481755 0.728968
-1.19325 -0.655998 0.792906 -0.481755 0.770513
-1.14431 -0.629094 0.775001 -0.481755 0.809016
-1.09014 -0.599311 0.743146 -0.481755 0.844327
-1.03106 -0.566831 0.697995 -0.481755 0.876306
-0.967462 -0.531868 0.64042 -0.481755 0.904827
-0.899792 -0.494666 0.571493 -0.481755 0.929776
-0.828536 -0.455493 0.492471 -0.481755 0.951056
-0.754224 -0.41464 0.404773 -0.481755 0.968583
-0.677424 -0.372418 0.309961 -0.481755 0.982287
-0.598731 -0.329156 0.20971 -0.481755 0.992115
-0.518763 -0.285193 0.105782 -0.481755 0.998027
-0.452413 -0.21289 0 -0.42578 1
-0.372228 -0.175158 -0.108617 -0.42578 0.998027
-0.292653 -0.137712 -0.21536 -0.42578 0.992115
-0.214288 -0.100836 -0.318383 -0.42578 0.982287
-0.137722 -0.0648071 -0.415901 -0.42578 0.968583
-0.063522 -0.0298913 -0.506219 -0.42578 0.951057
--0.00777111 0.00365682 -0.587757 -0.42578 0.929777
--0.0756505 0.0355985 -0.659075 -0.42578 0.904827
--0.139648 0.0657133 -0.718902 -0.42578 0.876307
--0.199337 0.0938014 -0.766148 -0.42578 0.844328
--0.254343 0.119685 -0.79993 -0.42578 0.809017
--0.304341 0.143212 -0.81958 -0.42578 0.770513
--0.349059 0.164255 -0.824661 -0.42578 0.728969
--0.388284 0.182713 -0.814971 -0.42578 0.684547
--0.421863 0.198514 -0.790548 -0.42578 0.637424
--0.449699 0.211613 -0.75167 -0.42578 0.587785
--0.471755 0.221992 -0.698851 -0.42578 0.535827
--0.488052 0.22966 -0.632833 -0.42578 0.481754
--0.498667 0.234655 -0.554575 -0.42578 0.42578
--0.50373 0.237038 -0.465236 -0.42578 0.368125
--0.503422 0.236893 -0.366163 -0.42578 0.309017
--0.49797 0.234327 -0.258861 -0.42578 0.24869
--0.487642 0.229468 -0.144979 -0.42578 0.187382
--0.472746 0.222458 -0.0262775 -0.42578 0.125334
--0.453618 0.213457 0.095398 -0.42578 0.0627908
--0.430622 0.202636 0.218143 -0.42578 3.26795e-07
--0.404141 0.190175 0.340028 -0.42578 -0.0627902
--0.374572 0.176261 0.459124 -0.42578 -0.125333
--0.34232 0.161084 0.573538 -0.42578 -0.187381
--0.30779 0.144836 0.681441 -0.42578 -0.24869
--0.271385 0.127704 0.781096 -0.42578 -0.309017
--0.233495 0.109875 0.870885 -0.42578 -0.368124
--0.194495 0.0915229 0.949339 -0.42578 -0.425779
--0.154741 0.072816 1.01515 -0.42578 -0.481753
--0.114561 0.0539087 1.06722 -0.42578 -0.535826
--0.0742558 0.0349422 1.10463 -0.42578 -0.587785
--0.0340912 0.0160422 1.12671 -0.42578 -0.637424
-0.0057008 -0.0026826 1.13301 -0.42578 -0.684547
-0.0449266 -0.0211409 1.12332 -0.42578 -0.728968
-0.0834312 -0.0392599 1.09768 -0.42578 -0.770513
-0.1211 -0.0569853 1.05637 -0.42578 -0.809017
-0.157856 -0.0742816 0.999924 -0.42578 -0.844328
-0.193663 -0.0911311 0.929086 -0.42578 -0.876306
-0.228521 -0.107534 0.844839 -0.42578 -0.904827
-0.262464 -0.123506 0.748366 -0.42578 -0.929776
-0.295558 -0.13908 0.641041 -0.42578 -0.951056
-0.327901 -0.154299 0.524403 -0.42578 -0.968583
-0.35961 -0.16922 0.400136 -0.42578 -0.982287
-0.390826 -0.183909 0.270043 -0.42578 -0.992115
-0.421705 -0.19844 0.136014 -0.42578 -0.998027
-0.452413 -0.21289 1.41827e-06 -0.42578 -1
-0.483121 -0.22734 -0.136011 -0.42578 -0.998027
-0.514 -0.241871 -0.27004 -0.42578 -0.992115
-0.545216 -0.25656 -0.400134 -0.42578 -0.982287
-0.576925 -0.271481 -0.5244 -0.42578 -0.968583
-0.609267 -0.2867 -0.641038 -0.42578 -0.951057
-0.642362 -0.302274 -0.748364 -0.42578 -0.929777
-0.676305 -0.318246 -0.844837 -0.42578 -0.904827
-0.711163 -0.334649 -0.929084 -0.42578 -0.876307
-0.74697 -0.351498 -0.999922 -0.42578 -0.844328
-0.783726 -0.368795 -1.05637 -0.42578 -0.809017
-0.821394 -0.38652 -1.09768 -0.42578 -0.770514
-0.859899 -0.404639 -1.12332 -0.42578 -0.728969
-0.899125 -0.423097 -1.13301 -0.42578 -0.684548
-0.938917 -0.441822 -1.12671 -0.42578 -0.637425
-0.979082 -0.460722 -1.10463 -0.42578 -0.587786
-1.01939 -0.479689 -1.06722 -0.42578 -0.535828
-1.05957 -0.498596 -1.01516 -0.42578 -0.481754
-1.09932 -0.517303 -0.94934 -0.42578 -0.42578
-1.13832 -0.535655 -0.870887 -0.42578 -0.368125
-1.17621 -0.553485 -0.781098 -0.42578 -0.309018
-1.21262 -0.570616 -0.681443 -0.42578 -0.248691
-1.24715 -0.586864 -0.57354 -0.42578 -0.187382
-1.2794 -0.602041 -0.459126 -0.42578 -0.125334
-1.30897 -0.615955 -0.34003 -0.42578 -0.0627915
-1.33545 -0.628416 -0.218146 -0.42578 -9.80385e-07
-1.35844 -0.639237 -0.0954005 -0.42578 0.0627895
-1.37757 -0.648238 0.026275 -0.42578 0.125332
-1.39247 -0.655248 0.144977 -0.42578 0.18738
-1.4028 -0.660108 0.258859 -0.42578 0.248689
-1.40825 -0.662673 0.366161 -0.42578 0.309016
-1.40856 -0.662818 0.465234 -0.42578 0.368124
-1.40349 -0.660436 0.554573 -0.42578 0.425778
-1.39288 -0.655441 0.632832 -0.42578 0.481753
-1.37658 -0.647772 0.69885 -0.42578 0.535826
-1.35453 -0.637394 0.751669 -0.42578 0.587784
-1.32669 -0.624295 0.790547 -0.42578 0.637423
-1.29311 -0.608494 0.814971 -0.42578 0.684546
-1.25389 -0.590036 0.824661 -0.42578 0.728968
-1.20917 -0.568993 0.819581 -0.42578 0.770513
-1.15917 -0.545466 0.799931 -0.42578 0.809016
-1.10417 -0.519582 0.766149 -0.42578 0.844327
-1.04448 -0.491494 0.718903 -0.42578 0.876306
-0.980478 -0.46138 0.659077 -0.42578 0.904827
-0.912599 -0.429438 0.587758 -0.42578 0.929776
-0.841306 -0.39589 0.506221 -0.42578 0.951056
-0.767106 -0.360974 0.415903 -0.42578 0.968583
-0.69054 -0.324945 0.318385 -0.42578 0.982287
-0.612176 -0.288069 0.215362 -0.42578 0.992115
-0.5326 -0.250623 0.10862 -0.42578 0.998027
-0.464888 -0.184063 0 -0.368126 1
-0.385705 -0.152712 -0.111347 -0.368126 0.998027
-0.307093 -0.121587 -0.2208 -0.368126 0.992115
-0.229616 -0.0909116 -0.326492 -0.368126 0.982287
-0.153825 -0.0609039 -0.42662 -0.368126 0.968583
-0.0802549 -0.0317753 -0.51947 -0.368126 0.951057
-0.00941336 -0.00372703 -0.603442 -0.368126 0.929777
--0.0582204 0.0230512 -0.677082 -0.368126 0.904827
--0.122202 0.0483835 -0.7391 -0.368126 0.876307
--0.182128 0.0721099 -0.788396 -0.368126 0.844328
--0.237636 0.0940872 -0.82407 -0.368126 0.809017
--0.288413 0.114191 -0.845446 -0.368126 0.770513
--0.334193 0.132317 -0.852077 -0.368126 0.728969
--0.374763 0.14838 -0.843753 -0.368126 0.684547
--0.409964 0.162317 -0.820508 -0.368126 0.637424
--0.439689 0.174086 -0.782616 -0.368126 0.587785
--0.463884 0.183665 -0.730588 -0.368126 0.535827
--0.482551 0.191056 -0.665169 -0.368126 0.481754
--0.495738 0.196277 -0.587317 -0.368126 0.42578
--0.503547 0.199369 -0.498199 -0.368126 0.368125
--0.506124 0.20039 -0.399164 -0.368126 0.309017
--0.503658 0.199413 -0.291726 -0.368126 0.24869
--0.496378 0.196531 -0.177542 -0.368126 0.187382
--0.484545 0.191846 -0.0583811 -0.368126 0.125334
--0.468453 0.185474 0.0638983 -0.368126 0.0627908
--0.448419 0.177542 0.187381 -0.368126 3.26795e-07
--0.424781 0.168183 0.310125 -0.368126 -0.0627902
--0.39789 0.157536 0.430189 -0.368126 -0.125333
--0.368106 0.145744 0.545666 -0.368126 -0.187381
--0.335793 0.13295 0.654715 -0.368126 -0.24869
--0.301313 0.119299 0.755584 -0.368126 -0.309017
--0.26502 0.104929 0.846645 -0.368126 -0.368124
--0.227256 0.0899773 0.926413 -0.368126 -0.425779
--0.188348 0.0745724 0.993576 -0.368126 -0.481753
--0.148601 0.0588355 1.04701 -0.368126 -0.535826
--0.108297 0.042878 1.08581 -0.368126 -0.587785
--0.0676902 0.0268005 1.10927 -0.368126 -0.637424
--0.027005 0.0106921 1.11694 -0.368126 -0.684547
-0.0135654 -0.00537095 1.10862 -0.368126 -0.728968
-0.0538611 -0.0213252 1.08433 -0.368126 -0.770513
-0.0937554 -0.0371205 1.04435 -0.368126 -0.809017
-0.133155 -0.0527201 0.989205 -0.368126 -0.844328
-0.172 -0.0680999 0.919645 -0.368126 -0.876306
-0.210262 -0.0832488 0.836649 -0.368126 -0.904827
-0.247941 -0.0981671 0.741403 -0.368126 -0.929776
-0.285066 -0.112866 0.635279 -0.368126 -0.951056
-0.32169 -0.127367 0.519822 -0.368126 -0.968583
-0.357887 -0.141698 0.396717 -0.368126 -0.982287
-0.393747 -0.155896 0.267771 -0.368126 -0.992115
-0.429377 -0.170003 0.13488 -0.368126 -0.998027
-0.464888 -0.184063 1.4065e-06 -0.368126 -1
-0.500399 -0.198123 -0.134878 -0.368126 -0.998027
-0.536028 -0.212229 -0.267769 -0.368126 -0.992115
-0.571888 -0.226427 -0.396714 -0.368126 -0.982287
-0.608085 -0.240759 -0.519819 -0.368126 -0.968583
-0.644709 -0.255259 -0.635277 -0.368126 -0.951057
-0.681834 -0.269958 -0.741401 -0.368126 -0.929777
-0.719513 -0.284877 -0.836648 -0.368126 -0.904827
-0.757775 -0.300025 -0.919643 -0.368126 -0.876307
-0.79662 -0.315405 -0.989203 -0.368126 -0.844328
-0.83602 -0.331005 -1.04435 -0.368126 -0.809017
-0.875914 -0.3468 -1.08433 -0.368126 -0.770514
-0.91621 -0.362754 -1.10862 -0.368126 -0.728969
-0.95678 -0.378817 -1.11694 -0.368126 -0.684548
-0.997465 -0.394926 -1.10927 -0.368126 -0.637425
-1.03807 -0.411003 -1.08581 -0.368126 -0.587786
-1.07838 -0.426961 -1.04701 -0.368126 -0.535828
-1.11812 -0.442698 -0.993577 -0.368126 -0.481754
-1.15703 -0.458103 -0.926415 -0.368126 -0.42578
-1.19479 -0.473054 -0.846646 -0.368126 -0.368125
-1.23109 -0.487424 -0.755586 -0.368126 -0.309018
-1.26557 -0.501076 -0.654717 -0.368126 -0.248691
-1.29788 -0.51387 -0.545669 -0.368126 -0.187382
-1.32767 -0.525662 -0.430191 -0.368126 -0.125334
-1.35456 -0.536309 -0.310127 -0.368126 -0.0627915
-1.37819 -0.545668 -0.187384 -0.368126 -9.80385e-07
-1.39823 -0.5536 -0.0639009 -0.368126 0.0627895
-1.41432 -0.559971 0.0583786 -0.368126 0.125332
-1.42615 -0.564656 0.177539 -0.368126 0.18738
-1.43343 -0.567539 0.291724 -0.368126 0.248689
-1.4359 -0.568515 0.399161 -0.368126 0.309016
-1.43332 -0.567495 0.498197 -0.368126 0.368124
-1.42551 -0.564403 0.587316 -0.368126 0.425778
-1.41233 -0.559182 0.665167 -0.368126 0.481753
-1.39366 -0.551791 0.730587 -0.368126 0.535826
-1.36947 -0.542212 0.782615 -0.368126 0.587784
-1.33974 -0.530443 0.820507 -0.368126 0.637423
-1.30454 -0.516506 0.843753 -0.368126 0.684546
-1.26397 -0.500443 0.852077 -0.368126 0.728968
-1.21819 -0.482317 0.845447 -0.368126 0.770513
-1.16741 -0.462213 0.824071 -0.368126 0.809016
-1.11191 -0.440236 0.788397 -0.368126 0.844327
-1.05198 -0.41651 0.739102 -0.368126 0.876306
-0.987998 -0.391177 0.677083 -0.368126 0.904827
-0.920364 -0.364399 0.603443 -0.368126 0.929776
-0.849523 -0.336351 0.519471 -0.368126 0.951056
-0.775952 -0.307222 0.426622 -0.368126 0.968583
-0.700162 -0.277215 0.326494 -0.368126 0.982287
-0.622685 -0.246539 0.220802 -0.368126 0.992115
-0.544073 -0.215414 0.11135 -0.368126 0.998027
-0.475528 -0.154509 0 -0.309018 1
-0.397899 -0.129286 -0.113967 -0.309018 0.998027
-0.320797 -0.104234 -0.226022 -0.309018 0.992115
-0.244743 -0.0795222 -0.334279 -0.309018 0.982287
-0.170247 -0.055317 -0.436919 -0.309018 0.968583
-0.0978041 -0.0317786 -0.532207 -0.309018 0.951057
-0.0278856 -0.0090606 -0.618531 -0.309018 0.929777
--0.0390622 0.0126921 -0.69442 -0.309018 0.904827
--0.102624 0.0333446 -0.758569 -0.309018 0.876307
--0.162418 0.052773 -0.809865 -0.309018 0.844328
--0.218103 0.0708662 -0.847397 -0.309018 0.809017
--0.269377 0.0875264 -0.870478 -0.309018 0.770513
--0.315984 0.10267 -0.878652 -0.309018 0.728969
--0.357711 0.116228 -0.871703 -0.309018 0.684547
--0.394394 0.128147 -0.849658 -0.309018 0.637424
--0.425916 0.138389 -0.812789 -0.309018 0.587785
--0.452208 0.146932 -0.761605 -0.309018 0.535827
--0.473246 0.153768 -0.696848 -0.309018 0.481754
--0.489054 0.158904 -0.61948 -0.309018 0.42578
--0.499701 0.162363 -0.53067 -0.309018 0.368125
--0.505294 0.164181 -0.43177 -0.309018 0.309017
--0.505982 0.164404 -0.324303 -0.309018 0.24869
--0.50195 0.163094 -0.209929 -0.309018 0.187382
--0.493412 0.16032 -0.0904271 -0.309018 0.125334
--0.480612 0.156161 0.0323356 -0.309018 0.0627908
--0.463819 0.150705 0.156434 -0.309018 3.26795e-07
--0.443319 0.144044 0.279916 -0.309018 -0.0627902
--0.419412 0.136276 0.400829 -0.309018 -0.125333
--0.392412 0.127503 0.517256 -0.309018 -0.187381
--0.362633 0.117827 0.627342 -0.309018 -0.24869
--0.330394 0.107352 0.729327 -0.309018 -0.309017
--0.296009 0.0961795 0.821568 -0.309018 -0.368124
--0.259783 0.0844089 0.902573 -0.309018 -0.425779
--0.22201 0.0721358 0.971017 -0.309018 -0.481753
--0.18297 0.0594509 1.02577 -0.309018 -0.535826
--0.142923 0.0464387 1.06591 -0.309018 -0.587785
--0.102108 0.0331771 1.09073 -0.309018 -0.637424
--0.0607418 0.0197363 1.09978 -0.309018 -0.684547
--0.0190145 0.00617823 1.09283 -0.309018 -0.728968
-0.0229087 -0.00744352 1.06991 -0.309018 -0.770513
-0.0648902 -0.0210842 1.0313 -0.309018 -0.809017
-0.106819 -0.0347078 0.97751 -0.309018 -0.844328
-0.148612 -0.0482871 0.909297 -0.309018 -0.876306
-0.190209 -0.0618029 0.827634 -0.309018 -0.904827
-0.231577 -0.0752442 0.733708 -0.309018 -0.929776
-0.272703 -0.0886071 0.628891 -0.309018 -0.951056
-0.313596 -0.101894 0.514727 -0.309018 -0.968583
-0.354281 -0.115113 0.392907 -0.309018 -0.982287
-0.394796 -0.128278 0.265236 -0.309018 -0.992115
-0.435192 -0.141403 0.133614 -0.309018 -0.998027
-0.475528 -0.154509 1.39333e-06 -0.309018 -1
-0.515863 -0.167615 -0.133611 -0.309018 -0.998027
-0.556259 -0.18074 -0.265233 -0.309018 -0.992115
-0.596775 -0.193905 -0.392904 -0.309018 -0.982287
-0.637459 -0.207124 -0.514725 -0.309018 -0.968583
-0.678352 -0.220411 -0.628888 -0.309018 -0.951057
-0.719478 -0.233774 -0.733706 -0.309018 -0.929777
-0.760846 -0.247215 -0.827633 -0.309018 -0.904827
-0.802444 -0.260731 -0.909295 -0.309018 -0.876307
-0.844236 -0.27431 -0.977508 -0.309018 -0.844328
-0.886165 -0.287934 -1.0313 -0.309018 -0.809017
-0.928147 -0.301574 -1.06991 -0.309018 -0.770514
-0.97007 -0.315196 -1.09283 -0.309018 -0.728969
-1.0118 -0.328754 -1.09978 -0.309018 -0.684548
-1.05316 -0.342195 -1.09073 -0.309018 -0.637425
-1.09398 -0.355457 -1.06591 -0.309018 -0.587786
-1.13403 -0.368469 -1.02577 -0.309018 -0.535828
-1.17307 -0.381154 -0.971019 -0.309018 -0.481754
-1.21084 -0.393427 -0.902575 -0.309018 -0.42578
-1.24706 -0.405197 -0.82157 -0.309018 -0.368125
-1.28145 -0.41637 -0.729329 -0.309018 -0.309018
-1.31369 -0.426845 -0.627344 -0.309018 -0.248691
-1.34347 -0.436521 -0.517258 -0.309018 -0.187382
-1.37047 -0.445294 -0.400831 -0.309018 -0.125334
-1.39437 -0.453062 -0.279918 -0.309018 -0.0627915
-1.41487 -0.459723 -0.156437 -0.309018 -9.80385e-07
-1.43167 -0.465179 -0.0323382 -0.309018 0.0627895
-1.44447 -0.469338 0.0904246 -0.309018 0.125332
-1.45301 -0.472112 0.209926 -0.309018 0.18738
-1.45704 -0.473422 0.3243 -0.309018 0.248689
-1.45635 -0.473199 0.431768 -0.309018 0.309016
-1.45076 -0.471381 0.530668 -0.309018 0.368124
-1.44011 -0.467922 0.619479 -0.309018 0.425778
-1.4243 -0.462786 0.696846 -0.309018 0.481753
-1.40326 -0.45595 0.761604 -0.309018 0.535826
-1.37697 -0.447408 0.812788 -0.309018 0.587784
-1.34545 -0.437165 0.849658 -0.309018 0.637423
-1.30877 -0.425246 0.871703 -0.309018 0.684546
-1.26704 -0.411688 0.878652 -0.309018 0.728968
-1.22043 -0.396545 0.870478 -0.309018 0.770513
-1.16916 -0.379885 0.847398 -0.309018 0.809016
-1.11348 -0.361792 0.809866 -0.309018 0.844327
-1.05368 -0.342363 0.758571 -0.309018 0.876306
-0.99012 -0.321711 0.694421 -0.309018 0.904827
-0.923172 -0.299958 0.618533 -0.309018 0.929776
-0.853253 -0.27724 0.532209 -0.309018 0.951056
-0.78081 -0.253702 0.436921 -0.309018 0.968583
-0.706315 -0.229497 0.334281 -0.309018 0.982287
-0.630261 -0.204785 0.226024 -0.309018 0.992115
-0.553159 -0.179733 0.11397 -0.309018 0.998027
-0.484291 -0.124346 0 -0.248691 1
-0.408738 -0.104947 -0.116475 -0.248691 0.998027
-0.333663 -0.0856706 -0.23102 -0.248691 0.992115
-0.259539 -0.0666387 -0.341736 -0.248691 0.982287
-0.186831 -0.0479703 -0.446786 -0.248691 0.968583
-0.115988 -0.0297809 -0.54442 -0.248691 0.951057
-0.0474426 -0.0121812 -0.633011 -0.248691 0.929777
--0.0183964 0.00472343 -0.711073 -0.248691 0.904827
--0.0811456 0.0208348 -0.77729 -0.248691 0.876307
--0.140451 0.0360619 -0.830535 -0.248691 0.844328
--0.195993 0.0503226 -0.869888 -0.248691 0.809017
--0.247484 0.0635434 -0.894651 -0.248691 0.770513
--0.294677 0.0756607 -0.90436 -0.248691 0.728969
--0.337364 0.0866208 -0.898792 -0.248691 0.684547
--0.375375 0.0963805 -0.87797 -0.248691 0.637424
--0.408584 0.104907 -0.84216 -0.248691 0.587785
--0.436904 0.112178 -0.791869 -0.248691 0.535827
--0.460289 0.118183 -0.727839 -0.248691 0.481754
--0.478735 0.122919 -0.651032 -0.248691 0.42578
--0.492274 0.126395 -0.562617 -0.248691 0.368125
--0.500977 0.12863 -0.463951 -0.248691 0.309017
--0.504947 0.129649 -0.356559 -0.248691 0.24869
--0.504322 0.129488 -0.242108 -0.248691 0.187382
--0.499266 0.128191 -0.122384 -0.248691 0.125334
--0.489973 0.125804 0.000740985 -0.248691 0.0627908
--0.476654 0.122385 0.125333 -0.248691 3.26795e-07
--0.459543 0.117991 0.249431 -0.248691 -0.0627902
--0.438887 0.112688 0.371074 -0.248691 -0.125333
--0.414944 0.10654 0.488335 -0.248691 -0.187381
--0.387981 0.0996171 0.59935 -0.248691 -0.24869
--0.358267 0.0919878 0.702349 -0.248691 -0.309017
--0.326072 0.0837214 0.795681 -0.248691 -0.368124
--0.291661 0.0748861 0.877842 -0.248691 -0.425779
--0.255293 0.0655485 0.947501 -0.248691 -0.481753
--0.217219 0.0557727 1.00351 -0.248691 -0.535826
--0.177675 0.0456195 1.04495 -0.248691 -0.587785
--0.136884 0.035146 1.07111 -0.248691 -0.637424
--0.0950511 0.0244051 1.08152 -0.248691 -0.684547
--0.0523645 0.013445 1.07595 -0.248691 -0.728968
--0.0089925 0.00230889 1.05443 -0.248691 -0.770513
-0.0349163 -0.00896503 1.01723 -0.248691 -0.809017
-0.0792334 -0.0203438 0.96485 -0.248691 -0.844328
-0.12385 -0.0317995 0.898051 -0.248691 -0.876306
-0.168678 -0.0433093 0.817803 -0.248691 -0.904827
-0.213645 -0.054855 0.725289 -0.248691 -0.929776
-0.258698 -0.0664226 0.621882 -0.248691 -0.951056
-0.303797 -0.0780021 0.509125 -0.248691 -0.968583
-0.348917 -0.0895871 0.388708 -0.248691 -0.982287
-0.394043 -0.101173 0.262439 -0.248691 -0.992115
-0.439168 -0.11276 0.132216 -0.248691 -0.998027
-0.484291 -0.124345 1.37879e-06 -0.248691 -1
-0.529414 -0.135931 -0.132213 -0.248691 -0.998027
-0.574539 -0.147517 -0.262436 -0.248691 -0.992115
-0.619665 -0.159104 -0.388706 -0.248691 -0.982287
-0.664785 -0.170689 -0.509123 -0.248691 -0.968583
-0.709884 -0.182268 -0.621879 -0.248691 -0.951057
-0.754937 -0.193836 -0.725287 -0.248691 -0.929777
-0.799904 -0.205382 -0.817801 -0.248691 -0.904827
-0.844732 -0.216891 -0.898049 -0.248691 -0.876307
-0.889348 -0.228347 -0.964849 -0.248691 -0.844328
-0.933666 -0.239726 -1.01723 -0.248691 -0.809017
-0.977574 -0.251 -1.05443 -0.248691 -0.770514
-1.02095 -0.262136 -1.07595 -0.248691 -0.728969
-1.06363 -0.273096 -1.08152 -0.248691 -0.684548
-1.10547 -0.283837 -1.07111 -0.248691 -0.637425
-1.14626 -0.29431 -1.04495 -0.248691 -0.587786
-1.1858 -0.304464 -1.00352 -0.248691 -0.535828
-1.22388 -0.314239 -0.947502 -0.248691 -0.481754
-1.26024 -0.323577 -0.877844 -0.248691 -0.42578
-1.29465 -0.332412 -0.795683 -0.248691 -0.368125
-1.32685 -0.340679 -0.702351 -0.248691 -0.309018
-1.35656 -0.348308 -0.599353 -0.248691 -0.248691
-1.38353 -0.355231 -0.488337 -0.248691 -0.187382
-1.40747 -0.361378 -0.371076 -0.248691 -0.125334
-1.42813 -0.366682 -0.249433 -0.248691 -0.0627915
-1.44524 -0.371076 -0.125336 -0.248691 -9.80385e-07
-1.45856 -0.374495 -0.000743568 -0.248691 0.0627895
-1.46785 -0.376882 0.122381 -0.248691 0.125332
-1.4729 -0.37818 0.242106 -0.248691 0.18738
-1.47353 -0.37834 0.356557 -0.248691 0.248689
-1.46956 -0.377321 0.463949 -0.248691 0.309016
-1.46086 -0.375086 0.562615 -0.248691 0.368124
-1.44732 -0.37161 0.651031 -0.248691 0.425778
-1.42887 -0.366874 0.727838 -0.248691 0.481753
-1.40549 -0.36087 0.791868 -0.248691 0.535826
-1.37717 -0.353598 0.842159 -0.248691 0.587784
-1.34396 -0.345072 0.87797 -0.248691 0.637423
-1.30595 -0.335312 0.898792 -0.248691 0.684546
-1.26326 -0.324352 0.90436 -0.248691 0.728968
-1.21607 -0.312235 0.894651 -0.248691 0.770513
-1.16458 -0.299014 0.869888 -0.248691 0.809016
-1.10904 -0.284753 0.830536 -0.248691 0.844327
-1.04973 -0.269526 0.777291 -0.248691 0.876306
-0.986981 -0.253415 0.711074 -0.248691 0.904827
-0.921142 -0.23651 0.633012 -0.248691 0.929776
-0.852596 -0.218911 0.544422 -0.248691 0.951056
-0.781753 -0.200721 0.446788 -0.248691 0.968583
-0.709045 -0.182053 0.341739 -0.248691 0.982287
-0.634921 -0.163021 0.231023 -0.248691 0.992115
-0.559846 -0.143745 0.116478 -0.248691 0.998027
-0.491144 -0.0936913 0 -0.187383 1
-0.418153 -0.0797675 -0.118868 -0.187383 0.998027
-0.345587 -0.0659248 -0.235791 -0.187383 0.992115
-0.273868 -0.0522435 -0.348856 -0.187383 0.982287
-0.203409 -0.0388025 -0.456212 -0.187383 0.968583
-0.134611 -0.0256787 -0.556095 -0.187383 0.951057
-0.0678636 -0.0129458 -0.646865 -0.187383 0.929777
-0.00353453 -0.000674252 -0.727024 -0.187383 0.904827
--0.0580279 0.0110695 -0.795243 -0.187383 0.876307
--0.1165 0.0222238 -0.850385 -0.187383 0.844328
--0.171585 0.0327319 -0.89152 -0.187383 0.809017
--0.223015 0.0425428 -0.91794 -0.187383 0.770513
--0.270553 0.0516112 -0.929175 -0.187383 0.728969
--0.313994 0.0598981 -0.924995 -0.187383 0.684547
--0.353167 0.0673707 -0.905416 -0.187383 0.637424
--0.387934 0.0740029 -0.8707 -0.187383 0.587785
--0.418192 0.0797749 -0.821353 -0.187383 0.535827
--0.443872 0.0846737 -0.758113 -0.187383 0.481754
--0.464939 0.0886926 -0.681942 -0.187383 0.42578
--0.481391 0.0918309 -0.594009 -0.187383 0.368125
--0.493257 0.0940944 -0.495674 -0.187383 0.309017
--0.500595 0.0954942 -0.388464 -0.187383 0.24869
--0.503492 0.096047 -0.274049 -0.187383 0.187382
--0.502062 0.0957741 -0.15422 -0.187383 0.125334
--0.49644 0.0947017 -0.0308544 -0.187383 0.0627908
--0.486784 0.0928597 0.0941083 -0.187383 3.26795e-07
--0.473268 0.0902814 0.2187 -0.187383 -0.0627902
--0.456083 0.0870032 0.340952 -0.187383 -0.125333
--0.435432 0.0830637 0.458932 -0.187383 -0.187381
--0.411527 0.0785034 0.570767 -0.187383 -0.24869
--0.384585 0.073364 0.674679 -0.187383 -0.309017
--0.35483 0.0676879 0.769009 -0.187383 -0.368124
--0.322484 0.0615176 0.852245 -0.187383 -0.425779
--0.28777 0.0548954 0.923049 -0.187383 -0.481753
--0.250904 0.0478629 0.98027 -0.187383 -0.535826
--0.212099 0.0404604 1.02297 -0.187383 -0.587785
--0.171558 0.0327267 1.05044 -0.187383 -0.637424
--0.129476 0.024699 1.0622 -0.187383 -0.684547
--0.0860347 0.0164121 1.05802 -0.187383 -0.728968
--0.0414067 0.00789881 1.03792 -0.187383 -0.770513
-0.0042493 -0.000810604 1.00215 -0.187383 -0.809017
-0.0507873 -0.00968827 0.951238 -0.187383 -0.844328
-0.0980743 -0.0187088 0.885919 -0.187383 -0.876306
-0.14599 -0.0278492 0.807164 -0.187383 -0.904827
-0.194425 -0.0370888 0.716154 -0.187383 -0.929776
-0.243283 -0.046409 0.614259 -0.187383 -0.951056
-0.292477 -0.0557933 0.503021 -0.187383 -0.968583
-0.341928 -0.0652267 0.384126 -0.187383 -0.982287
-0.391566 -0.0746956 0.259382 -0.187383 -0.992115
-0.441324 -0.0841877 0.130687 -0.187383 -0.998027
-0.491143 -0.0936912 1.36289e-06 -0.187383 -1
-0.540962 -0.103195 -0.130685 -0.187383 -0.998027
-0.59072 -0.112687 -0.25938 -0.187383 -0.992115
-0.640358 -0.122156 -0.384124 -0.187383 -0.982287
-0.689809 -0.131589 -0.503018 -0.187383 -0.968583
-0.739003 -0.140973 -0.614257 -0.187383 -0.951057
-0.787861 -0.150294 -0.716152 -0.187383 -0.929777
-0.836296 -0.159533 -0.807162 -0.187383 -0.904827
-0.884212 -0.168674 -0.885917 -0.187383 -0.876307
-0.931499 -0.177694 -0.951237 -0.187383 -0.844328
-0.978037 -0.186572 -1.00215 -0.187383 -0.809017
-1.02369 -0.195281 -1.03791 -0.187383 -0.770514
-1.06832 -0.203794 -1.05802 -0.187383 -0.728969
-1.11176 -0.212081 -1.0622 -0.187383 -0.684548
-1.15384 -0.220109 -1.05044 -0.187383 -0.637425
-1.19439 -0.227843 -1.02297 -0.187383 -0.587786
-1.23319 -0.235245 -0.980271 -0.187383 -0.535828
-1.27006 -0.242278 -0.92305 -0.187383 -0.481754
-1.30477 -0.2489 -0.852247 -0.187383 -0.42578
-1.33712 -0.25507 -0.769011 -0.187383 -0.368125
-1.36687 -0.260746 -0.674681 -0.187383 -0.309018
-1.39381 -0.265886 -0.57077 -0.187383 -0.248691
-1.41772 -0.270446 -0.458935 -0.187383 -0.187382
-1.43837 -0.274386 -0.340955 -0.187383 -0.125334
-1.45556 -0.277664 -0.218702 -0.187383 -0.0627915
-1.46907 -0.280242 -0.0941109 -0.187383 -9.80385e-07
-1.47873 -0.282084 0.0308518 -0.187383 0.0627895
-1.48435 -0.283157 0.154217 -0.187383 0.125332
-1.48578 -0.28343 0.274047 -0.187383 0.18738
-1.48288 -0.282877 0.388461 -0.187383 0.248689
-1.47554 -0.281477 0.495672 -0.187383 0.309016
-1.46368 -0.279214 0.594007 -0.187383 0.368124
-1.44723 -0.276075 0.68194 -0.187383 0.425778
-1.42616 -0.272056 0.758111 -0.187383 0.481753
-1.40048 -0.267158 0.821352 -0.187383 0.535826
-1.37022 -0.261386 0.870699 -0.187383 0.587784
-1.33545 -0.254753 0.905415 -0.187383 0.637423
-1.29628 -0.247281 0.924995 -0.187383 0.684546
-1.25284 -0.238994 0.929175 -0.187383 0.728968
-1.2053 -0.229926 0.917941 -0.187383 0.770513
-1.15387 -0.220115 0.89152 -0.187383 0.809016
-1.09879 -0.209607 0.850386 -0.187383 0.844327
-1.04032 -0.198452 0.795245 -0.187383 0.876306
-0.978754 -0.186709 0.727025 -0.187383 0.904827
-0.914425 -0.174437 0.646867 -0.187383 0.929776
-0.847677 -0.161704 0.556097 -0.187383 0.951056
-0.77888 -0.14858 0.456214 -0.187383 0.968583
-0.70842 -0.135139 0.348859 -0.187383 0.982287
-0.636701 -0.121458 0.235794 -0.187383 0.992115
-0.564136 -0.107615 0.11887 -0.187383 0.998027
-0.496057 -0.0626673 0 -0.125335 1
-0.426077 -0.0538266 -0.121143 -0.125335 0.998027
-0.356465 -0.0450325 -0.240329 -0.125335 0.992115
-0.287588 -0.0363312 -0.355632 -0.125335 0.982287
-0.219804 -0.027768 -0.465187 -0.125335 0.968583
-0.153465 -0.0193874 -0.567222 -0.125335 0.951057
-0.0889118 -0.0112323 -0.660081 -0.125335 0.929777
-0.0264692 -0.00334387 -0.742257 -0.125335 0.904827
--0.0335526 0.00423872 -0.812412 -0.125335 0.876307
--0.0908623 0.0114787 -0.869396 -0.125335 0.844328
--0.145189 0.0183419 -0.912272 -0.125335 0.809017
--0.196285 0.0247968 -0.940324 -0.125335 0.770513
--0.243925 0.0308152 -0.953074 -0.125335 0.728969
--0.287909 0.0363717 -0.950285 -0.125335 0.684547
--0.328064 0.0414446 -0.931968 -0.125335 0.637424
--0.364243 0.0460151 -0.898381 -0.125335 0.587785
--0.396327 0.0500682 -0.850025 -0.125335 0.535827
--0.424222 0.0535922 -0.787638 -0.125335 0.481754
--0.447863 0.0565789 -0.712178 -0.125335 0.42578
--0.467212 0.0590232 -0.624815 -0.125335 0.368125
--0.482254 0.0609235 -0.526908 -0.125335 0.309017
--0.493003 0.0622814 -0.419985 -0.125335 0.24869
--0.499494 0.0631014 -0.30572 -0.125335 0.187382
--0.501784 0.0633907 -0.185904 -0.125335 0.125334
--0.499953 0.0631595 -0.0624193 -0.125335 0.0627908
--0.4941 0.0624199 0.0627905 -0.125335 3.26795e-07
--0.484338 0.0611867 0.187752 -0.125335 -0.0627902
--0.4708 0.0594764 0.310494 -0.125335 -0.125333
--0.453629 0.0573072 0.429076 -0.125335 -0.187381
--0.432981 0.0546987 0.541621 -0.125335 -0.24869
--0.409021 0.0516719 0.646343 -0.125335 -0.309017
--0.381923 0.0482486 0.741577 -0.125335 -0.368124
--0.351864 0.0444512 0.825807 -0.125335 -0.425779
--0.319026 0.0403027 0.897686 -0.125335 -0.481753
--0.283593 0.0358265 0.956058 -0.125335 -0.535826
--0.24575 0.0310457 0.999979 -0.125335 -0.587785
--0.205679 0.0259836 1.02873 -0.125335 -0.637424
--0.163563 0.0206631 1.04183 -0.125335 -0.684547
--0.119579 0.0151065 1.03904 -0.125335 -0.728968
--0.0739002 0.00933586 1.02037 -0.125335 -0.770513
--0.0266956 0.00337248 0.986088 -0.125335 -0.809017
-0.0218714 -0.00276303 0.936687 -0.125335 -0.844328
-0.0716434 -0.00905076 0.872912 -0.125335 -0.876306
-0.122468 -0.0154715 0.795729 -0.125335 -0.904827
-0.1742 -0.0220068 0.706312 -0.125335 -0.929776
-0.226698 -0.0286389 0.60603 -0.125335 -0.951056
-0.279826 -0.0353506 0.49642 -0.125335 -0.968583
-0.333453 -0.0421253 0.379165 -0.125335 -0.982287
-0.38745 -0.0489468 0.25607 -0.125335 -0.992115
-0.441692 -0.0557993 0.12903 -0.125335 -0.998027
-0.496057 -0.0626672 1.34564e-06 -0.125335 -1
-0.550421 -0.0695351 -0.129027 -0.125335 -0.998027
-0.604664 -0.0763876 -0.256068 -0.125335 -0.992115
-0.658661 -0.0832091 -0.379163 -0.125335 -0.982287
-0.712287 -0.0899837 -0.496417 -0.125335 -0.968583
-0.765415 -0.0966954 -0.606028 -0.125335 -0.951057
-0.817913 -0.103328 -0.70631 -0.125335 -0.929777
-0.869645 -0.109863 -0.795727 -0.125335 -0.904827
-0.92047 -0.116284 -0.872911 -0.125335 -0.876307
-0.970242 -0.122571 -0.936686 -0.125335 -0.844328
-1.01881 -0.128707 -0.986087 -0.125335 -0.809017
-1.06601 -0.13467 -1.02037 -0.125335 -0.770514
-1.11169 -0.140441 -1.03904 -0.125335 -0.728969
-1.15568 -0.145997 -1.04183 -0.125335 -0.684548
-1.19779 -0.151318 -1.02873 -0.125335 -0.637425
-1.23786 -0.15638 -0.999979 -0.125335 -0.587786
-1.27571 -0.161161 -0.956059 -0.125335 -0.535828
-1.31114 -0.165637 -0.897687 -0.125335 -0.481754
-1.34398 -0.169786 -0.825809 -0.125335 -0.42578
-1.37404 -0.173583 -0.741579 -0.125335 -0.368125
-1.40114 -0.177006 -0.646345 -0.125335 -0.309018
-1.42509 -0.180033 -0.541623 -0.125335 -0.248691
-1.44574 -0.182642 -0.429079 -0.125335 -0.187382
-1.46291 -0.184811 -0.310497 -0.125335 -0.125334
-1.47645 -0.186521 -0.187755 -0.125335 -0.0627915
-1.48621 -0.187754 -0.0627931 -0.125335 -9.80385e-07
-1.49207 -0.188494 0.0624167 -0.125335 0.0627895
-1.4939 -0.188725 0.185901 -0.125335 0.125332
-1.49161 -0.188436 0.305717 -0.125335 0.18738
-1.48512 -0.187616 0.419983 -0.125335 0.248689
-1.47437 -0.186258 0.526906 -0.125335 0.309016
-1.45933 -0.184358 0.624813 -0.125335 0.368124
-1.43998 -0.181913 0.712176 -0.125335 0.425778
-1.41634 -0.178927 0.787636 -0.125335 0.481753
-1.38844 -0.175403 0.850024 -0.125335 0.535826
-1.35636 -0.17135 0.89838 -0.125335 0.587784
-1.32018 -0.166779 0.931967 -0.125335 0.637423
-1.28002 -0.161706 0.950284 -0.125335 0.684546
-1.23604 -0.15615 0.953074 -0.125335 0.728968
-1.1884 -0.150131 0.940325 -0.125335 0.770513
-1.1373 -0.143676 0.912273 -0.125335 0.809016
-1.08298 -0.136813 0.869397 -0.125335 0.844327
-1.02567 -0.129573 0.812413 -0.125335 0.876306
-0.965647 -0.121991 0.742259 -0.125335 0.904827
-0.903204 -0.114102 0.660083 -0.125335 0.929776
-0.838651 -0.105947 0.567224 -0.125335 0.951056
-0.772312 -0.0975667 0.46519 -0.125335 0.968583
-0.704528 -0.0890035 0.355635 -0.125335 0.982287
-0.635651 -0.0803022 0.240332 -0.125335 0.992115
-0.566039 -0.0715081 0.121146 -0.125335 0.998027
-0.499013 -0.0313959 0 -0.0627918 1
-0.432449 -0.0272079 -0.123299 -0.0627918 0.998027
-0.366193 -0.0230394 -0.24463 -0.0627918 0.992115
-0.300554 -0.0189096 -0.362057 -0.0627918 0.982287
-0.235834 -0.0148377 -0.473704 -0.0627918 0.968583
-0.172332 -0.0108424 -0.577788 -0.0627918 0.951057
-0.110336 -0.00694192 -0.672646 -0.0627918 0.929777
-0.0501289 -0.00315391 -0.756759 -0.0627918 0.904827
--0.00802152 0.000504682 -0.828779 -0.0627918 0.876307
--0.0638579 0.00401768 -0.887549 -0.0627918 0.844328
--0.117138 0.00736982 -0.932124 -0.0627918 0.809017
--0.167633 0.0105468 -0.96178 -0.0627918 0.770513
--0.215133 0.0135353 -0.976032 -0.0627918 0.728969
--0.259445 0.0163232 -0.974636 -0.0627918 0.684547
--0.300394 0.0188996 -0.9576 -0.0627918 0.637424
--0.337824 0.0212545 -0.925175 -0.0627918 0.587785
--0.371598 0.0233795 -0.877859 -0.0627918 0.535827
--0.401602 0.0252672 -0.816386 -0.0627918 0.481754
--0.427738 0.0269115 -0.741711 -0.0627918 0.42578
--0.449931 0.0283078 -0.655004 -0.0627918 0.368125
--0.468125 0.0294525 -0.557622 -0.0627918 0.309017
--0.482284 0.0303434 -0.451092 -0.0627918 0.24869
--0.492392 0.0309793 -0.337088 -0.0627918 0.187382
--0.498451 0.0313605 -0.217404 -0.0627918 0.125334
--0.500482 0.0314883 -0.0939226 -0.0627918 0.0627908
--0.498521 0.0313649 0.0314108 -0.0627918 3.26795e-07
--0.492623 0.0309939 0.15662 -0.0627918 -0.0627902
--0.482859 0.0303795 0.27973 -0.0627918 -0.125333
--0.469311 0.0295272 0.398797 -0.0627918 -0.187381
--0.452079 0.028443 0.51194 -0.0627918 -0.24869
--0.431271 0.0271339 0.617369 -0.0627918 -0.309017
--0.40701 0.0256075 0.713414 -0.0627918 -0.368124
--0.379428 0.0238721 0.798554 -0.0627918 -0.425779
--0.348664 0.0219365 0.871437 -0.0627918 -0.481753
--0.314867 0.0198102 0.930902 -0.0627918 -0.535826
--0.278194 0.0175028 0.975999 -0.0627918 -0.587785
--0.238806 0.0150247 1.00601 -0.0627918 -0.637424
--0.196871 0.0123863 1.02043 -0.0627918 -0.684547
--0.152559 0.00959837 1.01904 -0.0627918 -0.728968
--0.106045 0.00667193 1.00183 -0.0627918 -0.770513
--0.0575079 0.00361816 0.969051 -0.0627918 -0.809017
--0.00712684 0.000448392 0.921212 -0.0627918 -0.844328
-0.0449163 -0.00282595 0.859044 -0.0627918 -0.876306
-0.0984386 -0.00619336 0.783508 -0.0627918 -0.904827
-0.153256 -0.00964226 0.695773 -0.0627918 -0.929776
-0.209185 -0.013161 0.597203 -0.0627918 -0.951056
-0.266039 -0.0167381 0.489329 -0.0627918 -0.968583
-0.323634 -0.0203617 0.37383 -0.0627918 -0.982287
-0.381785 -0.0240204 0.252505 -0.0627918 -0.992115
-0.440306 -0.0277023 0.127245 -0.0627918 -0.998027
-0.499013 -0.0313959 1.32706e-06 -0.0627918 -1
-0.557719 -0.0350894 -0.127242 -0.0627918 -0.998027
-0.616241 -0.0387714 -0.252503 -0.0627918 -0.992115
-0.674391 -0.04243 -0.373827 -0.0627918 -0.982287
-0.731987 -0.0460536 -0.489326 -0.0627918 -0.968583
-0.788841 -0.0496307 -0.597201 -0.0627918 -0.951057
-0.844769 -0.0531495 -0.695772 -0.0627918 -0.929777
-0.899587 -0.0565984 -0.783506 -0.0627918 -0.904827
-0.953109 -0.0599658 -0.859043 -0.0627918 -0.876307
-1.00515 -0.0632401 -0.921211 -0.0627918 -0.844328
-1.05553 -0.0664099 -0.96905 -0.0627918 -0.809017
-1.10407 -0.0694637 -1.00182 -0.0627918 -0.770514
-1.15058 -0.0723901 -1.01904 -0.0627918 -0.728969
-1.1949 -0.0751781 -1.02043 -0.0627918 -0.684548
-1.23683 -0.0778165 -1.00601 -0.0627918 -0.637425
-1.27622 -0.0802946 -0.976 -0.0627918 -0.587786
-1.31289 -0.0826019 -0.930903 -0.0627918 -0.535828
-1.34669 -0.0847283 -0.871438 -0.0627918 -0.481754
-1.37745 -0.0866638 -0.798556 -0.0627918 -0.42578
-1.40504 -0.0883992 -0.713416 -0.0627918 -0.368125
-1.4293 -0.0899256 -0.617371 -0.0627918 -0.309018
-1.45011 -0.0912348 -0.511942 -0.0627918 -0.248691
-1.46734 -0.092319 -0.3988 -0.0627918 -0.187382
-1.48089 -0.0931713 -0.279733 -0.0627918 -0.125334
-1.49065 -0.0937857 -0.156623 -0.0627918 -0.0627915
-1.49655 -0.0941567 -0.0314134 -0.0627918 -9.80385e-07
-1.49851 -0.0942801 0.09392 -0.0627918 0.0627895
-1.49648 -0.0941524 0.217401 -0.0627918 0.125332
-1.49042 -0.0937712 0.337086 -0.0627918 0.18738
-1.48031 -0.0931352 0.45109 -0.0627918 0.248689
-1.46615 -0.0922444 0.557619 -0.0627918 0.309016
-1.44796 -0.0910997 0.655002 -0.0627918 0.368124
-1.42576 -0.0897034 0.74171 -0.0627918 0.425778
-1.39963 -0.088059 0.816384 -0.0627918 0.481753
-1.36963 -0.0861713 0.877858 -0.0627918 0.535826
-1.33585 -0.0840464 0.925174 -0.0627918 0.587784
-1.29842 -0.0816914 0.957599 -0.0627918 0.637423
-1.25747 -0.0791151 0.974636 -0.0627918 0.684546
-1.21316 -0.0763272 0.976032 -0.0627918 0.728968
-1.16566 -0.0733387 0.961781 -0.0627918 0.770513
-1.11517 -0.0701617 0.932125 -0.0627918 0.809016
-1.06189 -0.0668096 0.88755 -0.0627918 0.844327
-1.00605 -0.0632966 0.82878 -0.0627918 0.876306
-0.947899 -0.059638 0.75676 -0.0627918 0.904827
-0.887691 -0.05585 0.672648 -0.0627918 0.929776
-0.825696 -0.0519495 0.577791 -0.0627918 0.951056
-0.762194 -0.0479542 0.473706 -0.0627918 0.968583
-0.697474 -0.0438823 0.362059 -0.0627918 0.982287
-0.631835 -0.0397525 0.244633 -0.0627918 0.992115
-0.56558 -0.035584 0.123302 -0.0627918 0.998027
diff --git a/data/points/generator/hypergenerator.cpp b/data/points/generator/hypergenerator.cpp
index 60890b44..5831de18 100644
--- a/data/points/generator/hypergenerator.cpp
+++ b/data/points/generator/hypergenerator.cpp
@@ -29,7 +29,7 @@
#include <iterator>
#include <vector>
#include <fstream> // for std::ofstream
-
+#include <cstdlib>
typedef CGAL::Epick_d< CGAL::Dynamic_dimension_tag > K;
typedef K::Point_d Point;
@@ -47,24 +47,22 @@ int main(int argc, char **argv) {
usage(argv[0]);
}
- int points_number = 0;
- int returnedScanValue = sscanf(argv[4], "%d", &points_number);
- if ((returnedScanValue == EOF) || (points_number <= 0)) {
+ int points_number = atoi(argv[4]);
+ if (points_number <= 0) {
std::cerr << "Error: " << argv[4] << " is not correct" << std::endl;
usage(argv[0]);
}
- int dimension = 0;
- returnedScanValue = sscanf(argv[5], "%d", &dimension);
- if ((returnedScanValue == EOF) || (dimension <= 0)) {
+ int dimension = atoi(argv[5]);
+ if (dimension <= 0) {
std::cerr << "Error: " << argv[5] << " is not correct" << std::endl;
usage(argv[0]);
}
double radius = 1.0;
if (argc == 7) {
- returnedScanValue = sscanf(argv[6], "%lf", &radius);
- if ((returnedScanValue == EOF) || (radius <= 0.0)) {
+ radius = atof(argv[6]);
+ if (radius <= 0.0) {
std::cerr << "Error: " << argv[6] << " is not correct" << std::endl;
usage(argv[0]);
}
diff --git a/src/Bottleneck/concept/Persistence_diagram.h b/src/Bottleneck/concept/Persistence_diagram.h
deleted file mode 100644
index eaaf8bc5..00000000
--- a/src/Bottleneck/concept/Persistence_diagram.h
+++ /dev/null
@@ -1,7 +0,0 @@
-typedef typename std::pair<double,double> Diagram_point;
-
-struct Persistence_Diagram
-{
- const_iterator<Diagram_point> cbegin() const;
- const_iterator<Diagram_point> cend() const;
-};
diff --git a/src/Bottleneck/example/CMakeLists.txt b/src/Bottleneck/example/CMakeLists.txt
deleted file mode 100644
index 77797202..00000000
--- a/src/Bottleneck/example/CMakeLists.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-cmake_minimum_required(VERSION 2.6)
-project(Bottleneck_examples)
-
-add_executable ( RandomDiagrams random_diagrams.cpp )
-add_test(RandomDiagrams ${CMAKE_CURRENT_BINARY_DIR}/RandomDiagrams)
diff --git a/src/Bottleneck/include/gudhi/Graph_matching.h b/src/Bottleneck/include/gudhi/Graph_matching.h
deleted file mode 100644
index ea47e1d5..00000000
--- a/src/Bottleneck/include/gudhi/Graph_matching.h
+++ /dev/null
@@ -1,197 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Francois Godi
- *
- * Copyright (C) 2015 INRIA Saclay (France)
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef SRC_BOTTLENECK_INCLUDE_GUDHI_GRAPH_MATCHING_H_
-#define SRC_BOTTLENECK_INCLUDE_GUDHI_GRAPH_MATCHING_H_
-
-#include <deque>
-#include <list>
-#include <vector>
-
-#include "gudhi/Layered_neighbors_finder.h"
-
-namespace Gudhi {
-
-namespace bottleneck {
-
-template<typename Persistence_diagram1, typename Persistence_diagram2>
-double bottleneck_distance(Persistence_diagram1& diag1, Persistence_diagram2& diag2, double e = 0.);
-
-class Graph_matching {
- public:
- Graph_matching(const Persistence_diagrams_graph& g);
- Graph_matching& operator=(const Graph_matching& m);
- bool perfect() const;
- bool multi_augment();
- void set_r(double r);
-
- private:
- const Persistence_diagrams_graph& g;
- double r;
- std::vector<int> v_to_u;
- std::list<int> unmatched_in_u;
-
- Layered_neighbors_finder* layering() const;
- bool augment(Layered_neighbors_finder* layered_nf, int u_start_index, int max_depth);
- void update(std::deque<int>& path);
-};
-
-Graph_matching::Graph_matching(const Persistence_diagrams_graph& g)
- : g(g), r(0), v_to_u(g.size()), unmatched_in_u() {
- for (int u_point_index = 0; u_point_index < g.size(); ++u_point_index)
- unmatched_in_u.emplace_back(u_point_index);
-}
-
-Graph_matching& Graph_matching::operator=(const Graph_matching& m) {
- r = m.r;
- v_to_u = m.v_to_u;
- unmatched_in_u = m.unmatched_in_u;
- return *this;
-}
-
-inline bool Graph_matching::perfect() const {
- return unmatched_in_u.empty();
-}
-
-inline bool Graph_matching::multi_augment() {
- if (perfect())
- return false;
- Layered_neighbors_finder* layered_nf = layering();
- double rn = sqrt(g.size());
- int nblmax = layered_nf->vlayers_number()*2 + 1;
- // verification of a necessary criterion
- if ((unmatched_in_u.size() > rn && nblmax > rn) || nblmax == 0)
- return false;
- bool successful = false;
- std::list<int>* tries = new std::list<int>(unmatched_in_u);
- for (auto it = tries->cbegin(); it != tries->cend(); it++)
- successful = successful || augment(layered_nf, *it, nblmax);
- delete tries;
- delete layered_nf;
- return successful;
-}
-
-inline void Graph_matching::set_r(double r) {
- this->r = r;
-}
-
-Layered_neighbors_finder* Graph_matching::layering() const {
- bool end = false;
- int layer = 0;
- std::list<int> u_vertices(unmatched_in_u);
- std::list<int> v_vertices;
- Neighbors_finder nf(g, r);
- Layered_neighbors_finder* layered_nf = new Layered_neighbors_finder(g, r);
- for (int v_point_index = 0; v_point_index < g.size(); ++v_point_index)
- nf.add(v_point_index);
- while (!u_vertices.empty()) {
- for (auto it = u_vertices.cbegin(); it != u_vertices.cend(); ++it) {
- std::list<int>* u_succ = nf.pull_all_near(*it);
- for (auto it = u_succ->cbegin(); it != u_succ->cend(); ++it) {
- layered_nf->add(*it, layer);
- v_vertices.emplace_back(*it);
- }
- delete u_succ;
- }
- u_vertices.clear();
- for (auto it = v_vertices.cbegin(); it != v_vertices.cend(); it++) {
- if (v_to_u.at(*it) == null_point_index())
- end = true;
- else
- u_vertices.emplace_back(v_to_u.at(*it));
- }
- if (end)
- return layered_nf;
- v_vertices.clear();
- layer++;
- }
- return layered_nf;
-}
-
-bool Graph_matching::augment(Layered_neighbors_finder *layered_nf, int u_start_index, int max_depth) {
- std::deque<int> path;
- path.emplace_back(u_start_index);
- // start is a point from U
- do {
- if (static_cast<int>(path.size()) > max_depth) {
- path.pop_back();
- path.pop_back();
- }
- if (path.empty())
- return false;
- int w = path.back();
- path.emplace_back(layered_nf->pull_near(w, path.size() / 2));
- while (path.back() == null_point_index()) {
- path.pop_back();
- path.pop_back();
- if (path.empty())
- return false;
- path.pop_back();
- path.emplace_back(layered_nf->pull_near(path.back(), path.size() / 2));
- }
- path.emplace_back(v_to_u.at(path.back()));
- } while (path.back() != null_point_index());
- path.pop_back();
- update(path);
- return true;
-}
-
-void Graph_matching::update(std::deque<int>& path) {
- unmatched_in_u.remove(path.front());
- for (auto it = path.cbegin(); it != path.cend(); ++it) {
- int tmp = *it;
- ++it;
- v_to_u[*it] = tmp;
- }
-}
-
-template<typename Persistence_diagram1, typename Persistence_diagram2>
-double bottleneck_distance(Persistence_diagram1& diag1, Persistence_diagram2& diag2, double e) {
- Persistence_diagrams_graph g(diag1, diag2, e);
- std::vector<double>* sd = g.sorted_distances();
- int idmin = 0;
- int idmax = sd->size() - 1;
- double alpha = pow(sd->size(), 0.25);
- Graph_matching m(g);
- Graph_matching biggest_unperfect = m;
- while (idmin != idmax) {
- int pas = static_cast<int>((idmax - idmin) / alpha);
- m.set_r(sd->at(idmin + pas));
- while (m.multi_augment()) {}
- if (m.perfect()) {
- idmax = idmin + pas;
- m = biggest_unperfect;
- } else {
- biggest_unperfect = m;
- idmin = idmin + pas + 1;
- }
- }
- double b = sd->at(idmin);
- delete sd;
- return b;
-}
-
-} // namespace bottleneck
-
-} // namespace Gudhi
-
-#endif // SRC_BOTTLENECK_INCLUDE_GUDHI_GRAPH_MATCHING_H_
diff --git a/src/Bottleneck/include/gudhi/Layered_neighbors_finder.h b/src/Bottleneck/include/gudhi/Layered_neighbors_finder.h
deleted file mode 100644
index de36e00b..00000000
--- a/src/Bottleneck/include/gudhi/Layered_neighbors_finder.h
+++ /dev/null
@@ -1,74 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Francois Godi
- *
- * Copyright (C) 2015 INRIA Saclay (France)
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef SRC_BOTTLENECK_INCLUDE_GUDHI_LAYERED_NEIGHBORS_FINDER_H_
-#define SRC_BOTTLENECK_INCLUDE_GUDHI_LAYERED_NEIGHBORS_FINDER_H_
-
-#include <vector>
-
-#include "Neighbors_finder.h"
-
-// Layered_neighbors_finder is a data structure used to find if a query point from U has neighbors in V in a given
-// vlayer of the vlayered persistence diagrams graph. V's points have to be added manually using their index.
-// A neighbor returned is automatically removed.
-
-namespace Gudhi {
-
-namespace bottleneck {
-
-class Layered_neighbors_finder {
- public:
- Layered_neighbors_finder(const Persistence_diagrams_graph& g, double r);
- void add(int v_point_index, int vlayer);
- int pull_near(int u_point_index, int vlayer);
- int vlayers_number() const;
-
- private:
- const Persistence_diagrams_graph& g;
- const double r;
- std::vector<Neighbors_finder> neighbors_finder;
-};
-
-Layered_neighbors_finder::Layered_neighbors_finder(const Persistence_diagrams_graph& g, double r) :
- g(g), r(r), neighbors_finder() { }
-
-inline void Layered_neighbors_finder::add(int v_point_index, int vlayer) {
- for (int l = neighbors_finder.size(); l <= vlayer; l++)
- neighbors_finder.emplace_back(Neighbors_finder(g, r));
- neighbors_finder.at(vlayer).add(v_point_index);
-}
-
-inline int Layered_neighbors_finder::pull_near(int u_point_index, int vlayer) {
- if (static_cast<int> (neighbors_finder.size()) <= vlayer)
- return null_point_index();
- return neighbors_finder.at(vlayer).pull_near(u_point_index);
-}
-
-inline int Layered_neighbors_finder::vlayers_number() const {
- return neighbors_finder.size();
-}
-
-} // namespace bottleneck
-
-} // namespace Gudhi
-
-#endif // SRC_BOTTLENECK_INCLUDE_GUDHI_LAYERED_NEIGHBORS_FINDER_H_
diff --git a/src/Bottleneck/include/gudhi/Neighbors_finder.h b/src/Bottleneck/include/gudhi/Neighbors_finder.h
deleted file mode 100644
index 98256571..00000000
--- a/src/Bottleneck/include/gudhi/Neighbors_finder.h
+++ /dev/null
@@ -1,96 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Francois Godi
- *
- * Copyright (C) 2015 INRIA Saclay (France)
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef SRC_BOTTLENECK_INCLUDE_GUDHI_NEIGHBORS_FINDER_H_
-#define SRC_BOTTLENECK_INCLUDE_GUDHI_NEIGHBORS_FINDER_H_
-
-#include <unordered_set>
-#include <list>
-
-#include "gudhi/Planar_neighbors_finder.h"
-
-namespace Gudhi {
-
-namespace bottleneck {
-
-// Neighbors_finder is a data structure used to find if a query point from U has neighbors in V
-// in the persistence diagrams graph.
-// V's points have to be added manually using their index. A neighbor returned is automatically removed.
-
-class Neighbors_finder {
- public:
- Neighbors_finder(const Persistence_diagrams_graph& g, double r);
- void add(int v_point_index);
- int pull_near(int u_point_index);
- std::list<int>* pull_all_near(int u_point_index);
-
- private:
- const Persistence_diagrams_graph& g;
- const double r;
- Planar_neighbors_finder planar_neighbors_f;
- std::unordered_set<int> projections_f;
-};
-
-Neighbors_finder::Neighbors_finder(const Persistence_diagrams_graph& g, double r) :
- g(g), r(r), planar_neighbors_f(g, r), projections_f() { }
-
-inline void Neighbors_finder::add(int v_point_index) {
- if (g.on_the_v_diagonal(v_point_index))
- projections_f.emplace(v_point_index);
- else
- planar_neighbors_f.add(v_point_index);
-}
-
-inline int Neighbors_finder::pull_near(int u_point_index) {
- int v_challenger = g.corresponding_point_in_v(u_point_index);
- if (planar_neighbors_f.contains(v_challenger) && g.distance(u_point_index, v_challenger) < r) {
- planar_neighbors_f.remove(v_challenger);
- return v_challenger;
- }
- if (g.on_the_u_diagonal(u_point_index)) {
- auto it = projections_f.cbegin();
- if (it != projections_f.cend()) {
- int tmp = *it;
- projections_f.erase(it);
- return tmp;
- }
- } else {
- return planar_neighbors_f.pull_near(u_point_index);
- }
- return null_point_index();
-}
-
-inline std::list<int>* Neighbors_finder::pull_all_near(int u_point_index) {
- std::list<int>* all_pull = planar_neighbors_f.pull_all_near(u_point_index);
- int last_pull = pull_near(u_point_index);
- while (last_pull != null_point_index()) {
- all_pull->emplace_back(last_pull);
- last_pull = pull_near(u_point_index);
- }
- return all_pull;
-}
-
-} // namespace bottleneck
-
-} // namespace Gudhi
-
-#endif // SRC_BOTTLENECK_INCLUDE_GUDHI_NEIGHBORS_FINDER_H_
diff --git a/src/Bottleneck/include/gudhi/Persistence_diagrams_graph.h b/src/Bottleneck/include/gudhi/Persistence_diagrams_graph.h
deleted file mode 100644
index 73ad940b..00000000
--- a/src/Bottleneck/include/gudhi/Persistence_diagrams_graph.h
+++ /dev/null
@@ -1,147 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Francois Godi
- *
- * Copyright (C) 2015 INRIA Saclay (France)
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef SRC_BOTTLENECK_INCLUDE_GUDHI_PERSISTENCE_DIAGRAMS_GRAPH_H_
-#define SRC_BOTTLENECK_INCLUDE_GUDHI_PERSISTENCE_DIAGRAMS_GRAPH_H_
-
-#include <vector>
-#include <set>
-#include <cmath>
-#include <utility> // for pair<>
-#include <algorithm> // for max
-
-namespace Gudhi {
-
-namespace bottleneck {
-
-// Diagram_point is the type of the persistence diagram's points
-typedef std::pair<double, double> Diagram_point;
-
-// Return the used index for encoding none of the points
-int null_point_index();
-
-// Persistence_diagrams_graph is the interface beetwen any external representation of the two persistence diagrams and
-// the bottleneck distance computation. An interface is necessary to ensure basic functions complexity.
-
-class Persistence_diagrams_graph {
- public:
- // Persistence_diagram1 and 2 are the types of any externals representations of persistence diagrams.
- // They have to have an iterator over points, which have to have fields first (for birth) and second (for death).
- template<typename Persistence_diagram1, typename Persistence_diagram2>
- Persistence_diagrams_graph(Persistence_diagram1& diag1, Persistence_diagram2& diag2, double e = 0.);
- Persistence_diagrams_graph();
- bool on_the_u_diagonal(int u_point_index) const;
- bool on_the_v_diagonal(int v_point_index) const;
- int corresponding_point_in_u(int v_point_index) const;
- int corresponding_point_in_v(int u_point_index) const;
- double distance(int u_point_index, int v_point_index) const;
- int size() const;
- std::vector<double>* sorted_distances();
-
- private:
- std::vector<Diagram_point> u;
- std::vector<Diagram_point> v;
- Diagram_point get_u_point(int u_point_index) const;
- Diagram_point get_v_point(int v_point_index) const;
-};
-
-inline int null_point_index() {
- return -1;
-}
-
-template<typename Persistence_diagram1, typename Persistence_diagram2>
-Persistence_diagrams_graph::Persistence_diagrams_graph(Persistence_diagram1& diag1, Persistence_diagram2& diag2, double e)
- : u(), v() {
- for (auto it = diag1.cbegin(); it != diag1.cend(); ++it)
- if (it->second - it->first > e)
- u.emplace_back(*it);
- for (auto it = diag2.cbegin(); it != diag2.cend(); ++it)
- if (it->second - it->first > e)
- v.emplace_back(*it);
- if (u.size() < v.size())
- swap(u, v);
-}
-
-Persistence_diagrams_graph::Persistence_diagrams_graph()
- : u(), v() { }
-
-inline bool Persistence_diagrams_graph::on_the_u_diagonal(int u_point_index) const {
- return u_point_index >= static_cast<int> (u.size());
-}
-
-inline bool Persistence_diagrams_graph::on_the_v_diagonal(int v_point_index) const {
- return v_point_index >= static_cast<int> (v.size());
-}
-
-inline int Persistence_diagrams_graph::corresponding_point_in_u(int v_point_index) const {
- return on_the_v_diagonal(v_point_index) ?
- v_point_index - static_cast<int> (v.size()) : v_point_index + static_cast<int> (u.size());
-}
-
-inline int Persistence_diagrams_graph::corresponding_point_in_v(int u_point_index) const {
- return on_the_u_diagonal(u_point_index) ?
- u_point_index - static_cast<int> (u.size()) : u_point_index + static_cast<int> (v.size());
-}
-
-inline double Persistence_diagrams_graph::distance(int u_point_index, int v_point_index) const {
- // could be optimized for the case where one point is the projection of the other
- if (on_the_u_diagonal(u_point_index) && on_the_v_diagonal(v_point_index))
- return 0;
- Diagram_point p_u = get_u_point(u_point_index);
- Diagram_point p_v = get_v_point(v_point_index);
- return (std::max)(std::fabs(p_u.first - p_v.first), std::fabs(p_u.second - p_v.second));
-}
-
-inline int Persistence_diagrams_graph::size() const {
- return static_cast<int> (u.size() + v.size());
-}
-
-inline std::vector<double>* Persistence_diagrams_graph::sorted_distances() {
- // could be optimized
- std::set<double> sorted_distances;
- for (int u_point_index = 0; u_point_index < size(); ++u_point_index)
- for (int v_point_index = 0; v_point_index < size(); ++v_point_index)
- sorted_distances.emplace(distance(u_point_index, v_point_index));
- return new std::vector<double>(sorted_distances.cbegin(), sorted_distances.cend());
-}
-
-inline Diagram_point Persistence_diagrams_graph::get_u_point(int u_point_index) const {
- if (!on_the_u_diagonal(u_point_index))
- return u.at(u_point_index);
- Diagram_point projector = v.at(corresponding_point_in_v(u_point_index));
- double x = (projector.first + projector.second) / 2;
- return Diagram_point(x, x);
-}
-
-inline Diagram_point Persistence_diagrams_graph::get_v_point(int v_point_index) const {
- if (!on_the_v_diagonal(v_point_index))
- return v.at(v_point_index);
- Diagram_point projector = u.at(corresponding_point_in_u(v_point_index));
- double x = (projector.first + projector.second) / 2;
- return Diagram_point(x, x);
-}
-
-} // namespace bottleneck
-
-} // namespace Gudhi
-
-#endif // SRC_BOTTLENECK_INCLUDE_GUDHI_PERSISTENCE_DIAGRAMS_GRAPH_H_
diff --git a/src/Bottleneck/include/gudhi/Planar_neighbors_finder.h b/src/Bottleneck/include/gudhi/Planar_neighbors_finder.h
deleted file mode 100644
index 4af672e4..00000000
--- a/src/Bottleneck/include/gudhi/Planar_neighbors_finder.h
+++ /dev/null
@@ -1,119 +0,0 @@
-/* This file is part of the Gudhi Library. The Gudhi library
- * (Geometric Understanding in Higher Dimensions) is a generic C++
- * library for computational topology.
- *
- * Author(s): Francois Godi
- *
- * Copyright (C) 2015 INRIA Saclay (France)
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef SRC_BOTTLENECK_INCLUDE_GUDHI_PLANAR_NEIGHBORS_FINDER_H_
-#define SRC_BOTTLENECK_INCLUDE_GUDHI_PLANAR_NEIGHBORS_FINDER_H_
-
-#include <list>
-#include <iostream>
-#include <set>
-
-#include "Persistence_diagrams_graph.h"
-
-namespace Gudhi {
-
-namespace bottleneck {
-
-// Planar_neighbors_finder is a data structure used to find if a query point from U has planar neighbors in V with the
-// planar distance.
-// V's points have to be added manually using their index. A neighbor returned is automatically removed but we can also
-// remove points manually using their index.
-
-class Abstract_planar_neighbors_finder {
- public:
- Abstract_planar_neighbors_finder(const Persistence_diagrams_graph& g, double r);
- virtual ~Abstract_planar_neighbors_finder() = 0;
- virtual void add(int v_point_index) = 0;
- virtual void remove(int v_point_index) = 0;
- virtual bool contains(int v_point_index) const = 0;
- virtual int pull_near(int u_point_index) = 0;
- virtual std::list<int>* pull_all_near(int u_point_index);
-
- protected:
- const Persistence_diagrams_graph& g;
- const double r;
-};
-
-
-// Naive_pnf is a nave implementation of Abstract_planar_neighbors_finder
-
-class Naive_pnf : public Abstract_planar_neighbors_finder {
- public:
- Naive_pnf(const Persistence_diagrams_graph& g, double r);
- void add(int v_point_index);
- void remove(int v_point_index);
- bool contains(int v_point_index) const;
- int pull_near(int u_point_index);
-
- private:
- std::set<int> candidates;
-};
-
-
-// Planar_neighbors_finder is the used Abstract_planar_neighbors_finder's implementation
-typedef Naive_pnf Planar_neighbors_finder;
-
-Abstract_planar_neighbors_finder::Abstract_planar_neighbors_finder(const Persistence_diagrams_graph& g, double r) :
- g(g), r(r) { }
-
-inline Abstract_planar_neighbors_finder::~Abstract_planar_neighbors_finder() { }
-
-inline std::list<int>* Abstract_planar_neighbors_finder::pull_all_near(int u_point_index) {
- std::list<int>* all_pull = new std::list<int>();
- int last_pull = pull_near(u_point_index);
- while (last_pull != null_point_index()) {
- all_pull->emplace_back(last_pull);
- last_pull = pull_near(u_point_index);
- }
- return all_pull;
-}
-
-Naive_pnf::Naive_pnf(const Persistence_diagrams_graph& g, double r) :
- Abstract_planar_neighbors_finder(g, r), candidates() { }
-
-inline void Naive_pnf::add(int v_point_index) {
- candidates.emplace(v_point_index);
-}
-
-inline void Naive_pnf::remove(int v_point_index) {
- candidates.erase(v_point_index);
-}
-
-inline bool Naive_pnf::contains(int v_point_index) const {
- return (candidates.count(v_point_index) > 0);
-}
-
-inline int Naive_pnf::pull_near(int u_point_index) {
- for (auto it = candidates.begin(); it != candidates.end(); ++it)
- if (g.distance(u_point_index, *it) <= r) {
- int tmp = *it;
- candidates.erase(it);
- return tmp;
- }
- return null_point_index();
-}
-
-} // namespace bottleneck
-
-} // namespace Gudhi
-
-#endif // SRC_BOTTLENECK_INCLUDE_GUDHI_PLANAR_NEIGHBORS_FINDER_H_
diff --git a/src/Bottleneck/test/CMakeLists.txt b/src/Bottleneck/test/CMakeLists.txt
deleted file mode 100644
index 9d88ab25..00000000
--- a/src/Bottleneck/test/CMakeLists.txt
+++ /dev/null
@@ -1,21 +0,0 @@
-cmake_minimum_required(VERSION 2.6)
-project(Bottleneck_tests)
-
-if (GCOVR_PATH)
- # for gcovr to make coverage reports - Corbera Jenkins plugin
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fprofile-arcs -ftest-coverage")
-endif()
-if (GPROF_PATH)
- # for gprof to make coverage reports - Jenkins
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pg")
-endif()
-
-add_executable ( BottleneckUT bottleneck_unit_test.cpp )
-target_link_libraries(BottleneckUT ${Boost_SYSTEM_LIBRARY} ${Boost_UNIT_TEST_FRAMEWORK_LIBRARY})
-
-# Unitary tests
-add_test(NAME BottleneckUT
- COMMAND ${CMAKE_CURRENT_BINARY_DIR}/BottleneckUT
- # XML format for Jenkins xUnit plugin
- --log_format=XML --log_sink=${CMAKE_SOURCE_DIR}/BottleneckUT.xml --log_level=test_suite --report_level=no)
-
diff --git a/src/Bottleneck/test/bottleneck_unit_test.cpp b/src/Bottleneck/test/bottleneck_unit_test.cpp
deleted file mode 100644
index c60f5d8a..00000000
--- a/src/Bottleneck/test/bottleneck_unit_test.cpp
+++ /dev/null
@@ -1,26 +0,0 @@
-#define BOOST_TEST_DYN_LINK
-#define BOOST_TEST_MODULE "bottleneck"
-#include <boost/test/unit_test.hpp>
-
-#include "gudhi/Graph_matching.h"
-#include <iostream>
-
-using namespace Gudhi::bottleneck;
-
-BOOST_AUTO_TEST_CASE(random_diagrams) {
- int n = 100;
- // Random construction
- std::vector< std::pair<double, double> > v1, v2;
- for (int i = 0; i < n; i++) {
- int a = rand() % n;
- v1.emplace_back(a, a + rand() % (n - a));
- int b = rand() % n;
- v2.emplace_back(b, b + rand() % (n - b));
- }
- // v1 and v2 are persistence diagrams containing each 100 randoms points.
- double b = bottleneck_distance(v1, v2, 0);
- //
- std::cout << b << std::endl;
- const double EXPECTED_DISTANCE = 98.5;
- BOOST_CHECK(b == EXPECTED_DISTANCE);
-}
diff --git a/src/Bottleneck_distance/benchmark/CMakeLists.txt b/src/Bottleneck_distance/benchmark/CMakeLists.txt
new file mode 100644
index 00000000..f70dd8ff
--- /dev/null
+++ b/src/Bottleneck_distance/benchmark/CMakeLists.txt
@@ -0,0 +1,13 @@
+cmake_minimum_required(VERSION 2.6)
+project(Bottleneck_distance_benchmark)
+
+
+# requires CGAL 4.8
+# cmake -DCGAL_DIR=~/workspace/CGAL-4.8 ../../..
+if(CGAL_FOUND)
+ if (NOT CGAL_VERSION VERSION_LESS 4.8.0)
+ if (EIGEN3_FOUND)
+ add_executable ( bottleneck_chrono bottleneck_chrono.cpp )
+ endif()
+ endif ()
+endif()
diff --git a/src/Bottleneck_distance/benchmark/bottleneck_chrono.cpp b/src/Bottleneck_distance/benchmark/bottleneck_chrono.cpp
new file mode 100644
index 00000000..456c570b
--- /dev/null
+++ b/src/Bottleneck_distance/benchmark/bottleneck_chrono.cpp
@@ -0,0 +1,62 @@
+/* This file is part of the Gudhi Library. The Gudhi library
+ * (Geometric Understanding in Higher Dimensions) is a generic C++
+ * library for computational topology.
+ *
+ * Author: Francois Godi
+ *
+ * Copyright (C) 2015 INRIA
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <gudhi/Bottleneck.h>
+#include <chrono>
+#include <fstream>
+#include <random>
+
+using namespace Gudhi::persistence_diagram;
+
+
+double upper_bound = 400.; // any real > 0
+
+int main() {
+ std::ofstream result_file;
+ result_file.open("results.csv", std::ios::out);
+
+ for (int n = 1000; n <= 10000; n += 1000) {
+ std::uniform_real_distribution<double> unif1(0., upper_bound);
+ std::uniform_real_distribution<double> unif2(upper_bound / 1000., upper_bound / 100.);
+ std::default_random_engine re;
+ std::vector< std::pair<double, double> > v1, v2;
+ for (int i = 0; i < n; i++) {
+ double a = unif1(re);
+ double b = unif1(re);
+ double x = unif2(re);
+ double y = unif2(re);
+ v1.emplace_back(std::min(a, b), std::max(a, b));
+ v2.emplace_back(std::min(a, b) + std::min(x, y), std::max(a, b) + std::max(x, y));
+ if (i % 5 == 0)
+ v1.emplace_back(std::min(a, b), std::min(a, b) + x);
+ if (i % 3 == 0)
+ v2.emplace_back(std::max(a, b), std::max(a, b) + y);
+ }
+ std::chrono::steady_clock::time_point start = std::chrono::steady_clock::now();
+ double b = bottleneck_distance(v1, v2);
+ std::chrono::steady_clock::time_point end = std::chrono::steady_clock::now();
+ typedef std::chrono::duration<int, std::milli> millisecs_t;
+ millisecs_t duration(std::chrono::duration_cast<millisecs_t>(end - start));
+ result_file << n << ";" << duration.count() << ";" << b << std::endl;
+ }
+ result_file.close();
+}
diff --git a/src/Bottleneck_distance/concept/Persistence_diagram.h b/src/Bottleneck_distance/concept/Persistence_diagram.h
new file mode 100644
index 00000000..2706716b
--- /dev/null
+++ b/src/Bottleneck_distance/concept/Persistence_diagram.h
@@ -0,0 +1,49 @@
+/* This file is part of the Gudhi Library. The Gudhi library
+ * (Geometric Understanding in Higher Dimensions) is a generic C++
+ * library for computational topology.
+ *
+ * Author: François Godi
+ *
+ * Copyright (C) 2015 INRIA
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef CONCEPT_BOTTLENECK_DISTANCE_PERSISTENCE_DIAGRAM_H_
+#define CONCEPT_BOTTLENECK_DISTANCE_PERSISTENCE_DIAGRAM_H_
+
+namespace Gudhi {
+
+namespace bottleneck_distance {
+
+/** \brief Concept of Diagram_point. std::get<0>(point) must return the birth of the corresponding component and std::get<1>(point) its death.
+ * A valid implementation of this concept is std::pair<double,double>.
+ * Death should be larger than birth, death can be std::numeric_limits<double>::infinity() for components which stay alive.
+ *
+ * \ingroup bottleneck_distance
+ */
+typename Diagram_point;
+
+/** \brief Concept of persistence diagram. It's a range of Diagram_point.
+ * std::begin(diagram) and std::end(diagram) must return corresponding iterators.
+ *
+ * \ingroup bottleneck_distance
+ */
+typename Persistence_Diagram;
+
+} // namespace bottleneck_distance
+
+} // namespace Gudhi
+
+#endif // CONCEPT_BOTTLENECK_DISTANCE_PERSISTENCE_DIAGRAM_H_
diff --git a/src/Bottleneck_distance/doc/Intro_bottleneck_distance.h b/src/Bottleneck_distance/doc/Intro_bottleneck_distance.h
new file mode 100644
index 00000000..21187f9c
--- /dev/null
+++ b/src/Bottleneck_distance/doc/Intro_bottleneck_distance.h
@@ -0,0 +1,51 @@
+/* This file is part of the Gudhi Library. The Gudhi library
+ * (Geometric Understanding in Higher Dimensions) is a generic C++
+ * library for computational topology.
+ *
+ * Author: François Godi
+ *
+ * Copyright (C) 2015 INRIA
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef DOC_BOTTLENECK_DISTANCE_INTRO_BOTTLENECK_DISTANCE_H_
+#define DOC_BOTTLENECK_DISTANCE_INTRO_BOTTLENECK_DISTANCE_H_
+
+// needs namespace for Doxygen to link on classes
+namespace Gudhi {
+// needs namespace for Doxygen to link on classes
+namespace bottleneck_distance {
+
+/** \defgroup bottleneck_distance Bottleneck distance
+ *
+ * \author Fran&ccedil;ois Godi
+ * @{
+ *
+ * \section bottleneckdefinition Definition
+ *
+ * The bottleneck distance measures the similarity between two persistence diagrams. It's the shortest distance b for which there exists a perfect matching between
+ * the points of the two diagrams (completed with all the points on the diagonal in order to ignore cardinality mismatchs) such that
+ * any couple of matched points are at distance at most b.
+ *
+ * \image html perturb_pd.png On this picture, the red edges represent the matching. The bottleneck distance is the length of the longest edge.
+ *
+ */
+/** @} */ // end defgroup bottleneck_distance
+
+} // namespace bottleneck_distance
+
+} // namespace Gudhi
+
+#endif // DOC_BOTTLENECK_DISTANCE_INTRO_BOTTLENECK_DISTANCE_H_
diff --git a/src/Bottleneck_distance/doc/perturb_pd.png b/src/Bottleneck_distance/doc/perturb_pd.png
new file mode 100644
index 00000000..be638de0
--- /dev/null
+++ b/src/Bottleneck_distance/doc/perturb_pd.png
Binary files differ
diff --git a/src/Bottleneck_distance/example/CMakeLists.txt b/src/Bottleneck_distance/example/CMakeLists.txt
new file mode 100644
index 00000000..c66623e9
--- /dev/null
+++ b/src/Bottleneck_distance/example/CMakeLists.txt
@@ -0,0 +1,15 @@
+cmake_minimum_required(VERSION 2.6)
+project(Bottleneck_distance_examples)
+
+# requires CGAL 4.8
+# cmake -DCGAL_DIR=~/workspace/CGAL-4.8 ../../..
+if(CGAL_FOUND)
+ if (NOT CGAL_VERSION VERSION_LESS 4.8.0)
+ if (EIGEN3_FOUND)
+ add_executable (bottleneck_read_file_example bottleneck_read_file_example.cpp)
+ add_executable (bottleneck_basic_example bottleneck_basic_example.cpp)
+
+ add_test(bottleneck_basic_example ${CMAKE_CURRENT_BINARY_DIR}/bottleneck_basic_example)
+ endif()
+ endif ()
+endif()
diff --git a/src/Bottleneck/example/random_diagrams.cpp b/src/Bottleneck_distance/example/bottleneck_basic_example.cpp
index 71f152a6..d0ca4e20 100644
--- a/src/Bottleneck/example/random_diagrams.cpp
+++ b/src/Bottleneck_distance/example/bottleneck_basic_example.cpp
@@ -2,9 +2,9 @@
* (Geometric Understanding in Higher Dimensions) is a generic C++
* library for computational topology.
*
- * Author(s): Francois Godi
+ * Authors: Francois Godi, small modifications by Pawel Dlotko
*
- * Copyright (C) 2015 INRIA Saclay (France)
+ * Copyright (C) 2015 INRIA
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -20,21 +20,31 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#include "gudhi/Graph_matching.h"
-#include <iostream>
+#include <gudhi/Bottleneck.h>
-using namespace Gudhi::bottleneck;
+#include <iostream>
+#include <vector>
+#include <utility> // for pair
+#include <limits> // for numeric_limits
int main() {
- int n = 100;
std::vector< std::pair<double, double> > v1, v2;
- for (int i = 0; i < n; i++) {
- int a = rand() % n;
- v1.emplace_back(a, a + rand() % (n - a));
- int b = rand() % n;
- v2.emplace_back(b, b + rand() % (n - b));
- }
- // v1 and v2 are persistence diagrams containing each 100 randoms points.
- double b = bottleneck_distance(v1, v2, 0);
- std::cout << b << std::endl;
+
+ v1.emplace_back(2.7, 3.7);
+ v1.emplace_back(9.6, 14.);
+ v1.emplace_back(34.2, 34.974);
+ v1.emplace_back(3., std::numeric_limits<double>::infinity());
+
+ v2.emplace_back(2.8, 4.45);
+ v2.emplace_back(9.5, 14.1);
+ v2.emplace_back(3.2, std::numeric_limits<double>::infinity());
+
+
+ double b = Gudhi::persistence_diagram::bottleneck_distance(v1, v2);
+
+ std::cout << "Bottleneck distance = " << b << std::endl;
+
+ b = Gudhi::persistence_diagram::bottleneck_distance(v1, v2, 0.1);
+
+ std::cout << "Approx bottleneck distance = " << b << std::endl;
}
diff --git a/src/Bottleneck_distance/example/bottleneck_read_file_example.cpp b/src/Bottleneck_distance/example/bottleneck_read_file_example.cpp
new file mode 100644
index 00000000..bde05825
--- /dev/null
+++ b/src/Bottleneck_distance/example/bottleneck_read_file_example.cpp
@@ -0,0 +1,72 @@
+/* This file is part of the Gudhi Library. The Gudhi library
+ * (Geometric Understanding in Higher Dimensions) is a generic C++
+ * library for computational topology.
+ *
+ * Authors: Francois Godi, small modifications by Pawel Dlotko
+ *
+ * Copyright (C) 2015 INRIA
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#define CGAL_HAS_THREADS
+
+#include <gudhi/Bottleneck.h>
+#include <iostream>
+#include <vector>
+#include <utility> // for pair
+#include <fstream>
+#include <sstream>
+#include <string>
+
+std::vector< std::pair<double, double> > read_diagram_from_file(const char* filename) {
+ std::ifstream in;
+ in.open(filename);
+ std::vector< std::pair<double, double> > result;
+ if (!in.is_open()) {
+ std::cerr << "File : " << filename << " do not exist. The program will now terminate \n";
+ throw "File do not exist \n";
+ }
+
+ std::string line;
+ while (!in.eof()) {
+ getline(in, line);
+ if (line.length() != 0) {
+ std::stringstream lineSS;
+ lineSS << line;
+ double beginn, endd;
+ lineSS >> beginn;
+ lineSS >> endd;
+ result.push_back(std::make_pair(beginn, endd));
+ }
+ }
+ in.close();
+ return result;
+} // read_diagram_from_file
+
+int main(int argc, char** argv) {
+ if (argc < 3) {
+ std::cout << "To run this program please provide as an input two files with persistence diagrams. Each file " <<
+ "should contain a birth-death pair per line. Third, optional parameter is an error bound on a bottleneck" <<
+ " distance (set by default to zero). The program will now terminate \n";
+ }
+ std::vector< std::pair< double, double > > diag1 = read_diagram_from_file(argv[1]);
+ std::vector< std::pair< double, double > > diag2 = read_diagram_from_file(argv[2]);
+ double tolerance = 0.;
+ if (argc == 4) {
+ tolerance = atof(argv[3]);
+ }
+ double b = Gudhi::persistence_diagram::bottleneck_distance(diag1, diag2, tolerance);
+ std::cout << "The distance between the diagrams is : " << b << ". The tolerance is : " << tolerance << std::endl;
+}
diff --git a/src/Bottleneck_distance/include/gudhi/Bottleneck.h b/src/Bottleneck_distance/include/gudhi/Bottleneck.h
new file mode 100644
index 00000000..b5641e29
--- /dev/null
+++ b/src/Bottleneck_distance/include/gudhi/Bottleneck.h
@@ -0,0 +1,104 @@
+/* This file is part of the Gudhi Library. The Gudhi library
+ * (Geometric Understanding in Higher Dimensions) is a generic C++
+ * library for computational topology.
+ *
+ * Author: Francois Godi
+ *
+ * Copyright (C) 2015 INRIA
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef BOTTLENECK_H_
+#define BOTTLENECK_H_
+
+#include <gudhi/Graph_matching.h>
+
+#include <vector>
+#include <algorithm> // for max
+#include <limits> // for numeric_limits
+
+#include <cmath>
+
+namespace Gudhi {
+
+namespace persistence_diagram {
+
+double bottleneck_distance_approx(Persistence_graph& g, double e) {
+ double b_lower_bound = 0.;
+ double b_upper_bound = g.diameter_bound();
+ const double alpha = std::pow(g.size(), 1. / 5.);
+ Graph_matching m(g);
+ Graph_matching biggest_unperfect(g);
+ while (b_upper_bound - b_lower_bound > 2 * e) {
+ double step = b_lower_bound + (b_upper_bound - b_lower_bound) / alpha;
+ if (step <= b_lower_bound || step >= b_upper_bound) // Avoid precision problem
+ break;
+ m.set_r(step);
+ while (m.multi_augment()) {}; // compute a maximum matching (in the graph corresponding to the current r)
+ if (m.perfect()) {
+ m = biggest_unperfect;
+ b_upper_bound = step;
+ } else {
+ biggest_unperfect = m;
+ b_lower_bound = step;
+ }
+ }
+ return (b_lower_bound + b_upper_bound) / 2.;
+}
+
+double bottleneck_distance_exact(Persistence_graph& g) {
+ std::vector<double> sd = g.sorted_distances();
+ long lower_bound_i = 0;
+ long upper_bound_i = sd.size() - 1;
+ const double alpha = std::pow(g.size(), 1. / 5.);
+ Graph_matching m(g);
+ Graph_matching biggest_unperfect(g);
+ while (lower_bound_i != upper_bound_i) {
+ long step = lower_bound_i + static_cast<long> ((upper_bound_i - lower_bound_i - 1) / alpha);
+ m.set_r(sd.at(step));
+ while (m.multi_augment()) {}; // compute a maximum matching (in the graph corresponding to the current r)
+ if (m.perfect()) {
+ m = biggest_unperfect;
+ upper_bound_i = step;
+ } else {
+ biggest_unperfect = m;
+ lower_bound_i = step + 1;
+ }
+ }
+ return sd.at(lower_bound_i);
+}
+
+/** \brief Function to use in order to compute the Bottleneck distance between two persistence diagrams (see concepts).
+ * If the last parameter e is not 0, you get an additive e-approximation, which is a lot faster to compute whatever is
+ * e.
+ * Thus, by default, e is a very small positive double, actually the smallest double possible such that the
+ * floating-point inaccuracies don't lead to a failure of the algorithm.
+ *
+ * \ingroup bottleneck_distance
+ */
+template<typename Persistence_diagram1, typename Persistence_diagram2>
+double bottleneck_distance(const Persistence_diagram1 &diag1, const Persistence_diagram2 &diag2,
+ double e = std::numeric_limits<double>::min()) {
+ Persistence_graph g(diag1, diag2, e);
+ if (g.bottleneck_alive() == std::numeric_limits<double>::infinity())
+ return std::numeric_limits<double>::infinity();
+ return std::max(g.bottleneck_alive(), e == 0. ? bottleneck_distance_exact(g) : bottleneck_distance_approx(g, e));
+}
+
+} // namespace persistence_diagram
+
+} // namespace Gudhi
+
+#endif // BOTTLENECK_H_
diff --git a/src/Bottleneck_distance/include/gudhi/Graph_matching.h b/src/Bottleneck_distance/include/gudhi/Graph_matching.h
new file mode 100644
index 00000000..e1708c5b
--- /dev/null
+++ b/src/Bottleneck_distance/include/gudhi/Graph_matching.h
@@ -0,0 +1,182 @@
+/* This file is part of the Gudhi Library. The Gudhi library
+ * (Geometric Understanding in Higher Dimensions) is a generic C++
+ * library for computational topology.
+ *
+ * Author: Francois Godi
+ *
+ * Copyright (C) 2015 INRIA
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef GRAPH_MATCHING_H_
+#define GRAPH_MATCHING_H_
+
+#include <gudhi/Neighbors_finder.h>
+
+#include <vector>
+#include <list>
+
+namespace Gudhi {
+
+namespace persistence_diagram {
+
+/** \internal \brief Structure representing a graph matching. The graph is a Persistence_diagrams_graph.
+ *
+ * \ingroup bottleneck_distance
+ */
+class Graph_matching {
+ public:
+ /** \internal \brief Constructor constructing an empty matching. */
+ explicit Graph_matching(Persistence_graph &g);
+ /** \internal \brief Copy operator. */
+ Graph_matching& operator=(const Graph_matching& m);
+ /** \internal \brief Is the matching perfect ? */
+ bool perfect() const;
+ /** \internal \brief Augments the matching with a maximal set of edge-disjoint shortest augmenting paths. */
+ bool multi_augment();
+ /** \internal \brief Sets the maximum length of the edges allowed to be added in the matching, 0 initially. */
+ void set_r(double r);
+
+ private:
+ Persistence_graph& g;
+ double r;
+ /** \internal \brief Given a point from V, provides its matched point in U, null_point_index() if there isn't. */
+ std::vector<int> v_to_u;
+ /** \internal \brief All the unmatched points in U. */
+ std::list<int> unmatched_in_u;
+
+ /** \internal \brief Provides a Layered_neighbors_finder dividing the graph in layers. Basically a BFS. */
+ Layered_neighbors_finder layering() const;
+ /** \internal \brief Augments the matching with a simple path no longer than max_depth. Basically a DFS. */
+ bool augment(Layered_neighbors_finder & layered_nf, int u_start_index, int max_depth);
+ /** \internal \brief Update the matching with the simple augmenting path given as parameter. */
+ void update(std::vector<int> & path);
+};
+
+inline Graph_matching::Graph_matching(Persistence_graph& g)
+ : g(g), r(0.), v_to_u(g.size(), null_point_index()), unmatched_in_u() {
+ for (int u_point_index = 0; u_point_index < g.size(); ++u_point_index)
+ unmatched_in_u.emplace_back(u_point_index);
+}
+
+inline Graph_matching& Graph_matching::operator=(const Graph_matching& m) {
+ g = m.g;
+ r = m.r;
+ v_to_u = m.v_to_u;
+ unmatched_in_u = m.unmatched_in_u;
+ return *this;
+}
+
+inline bool Graph_matching::perfect() const {
+ return unmatched_in_u.empty();
+}
+
+inline bool Graph_matching::multi_augment() {
+ if (perfect())
+ return false;
+ Layered_neighbors_finder layered_nf(layering());
+ int max_depth = layered_nf.vlayers_number()*2 - 1;
+ double rn = sqrt(g.size());
+ // verification of a necessary criterion in order to shortcut if possible
+ if (max_depth < 0 || (unmatched_in_u.size() > rn && max_depth >= rn))
+ return false;
+ bool successful = false;
+ std::list<int> tries(unmatched_in_u);
+ for (auto it = tries.cbegin(); it != tries.cend(); it++)
+ // 'augment' has side-effects which have to be always executed, don't change order
+ successful = augment(layered_nf, *it, max_depth) || successful;
+ return successful;
+}
+
+inline void Graph_matching::set_r(double r) {
+ this->r = r;
+}
+
+inline bool Graph_matching::augment(Layered_neighbors_finder & layered_nf, int u_start_index, int max_depth) {
+ // V vertices have at most one successor, thus when we backtrack from U we can directly pop_back 2 vertices.
+ std::vector<int> path;
+ path.emplace_back(u_start_index);
+ do {
+ if (static_cast<int> (path.size()) > max_depth) {
+ path.pop_back();
+ path.pop_back();
+ }
+ if (path.empty())
+ return false;
+ path.emplace_back(layered_nf.pull_near(path.back(), static_cast<int> (path.size()) / 2));
+ while (path.back() == null_point_index()) {
+ path.pop_back();
+ path.pop_back();
+ if (path.empty())
+ return false;
+ path.pop_back();
+ path.emplace_back(layered_nf.pull_near(path.back(), path.size() / 2));
+ }
+ path.emplace_back(v_to_u.at(path.back()));
+ } while (path.back() != null_point_index());
+ // if v_to_u.at(path.back()) has no successor, path.back() is an exposed vertex
+ path.pop_back();
+ update(path);
+ return true;
+}
+
+inline Layered_neighbors_finder Graph_matching::layering() const {
+ std::list<int> u_vertices(unmatched_in_u);
+ std::list<int> v_vertices;
+ Neighbors_finder nf(g, r);
+ for (int v_point_index = 0; v_point_index < g.size(); ++v_point_index)
+ nf.add(v_point_index);
+ Layered_neighbors_finder layered_nf(g, r);
+ for (int layer = 0; !u_vertices.empty(); layer++) {
+ // one layer is one step in the BFS
+ for (auto it1 = u_vertices.cbegin(); it1 != u_vertices.cend(); ++it1) {
+ std::vector<int> u_succ(nf.pull_all_near(*it1));
+ for (auto it2 = u_succ.begin(); it2 != u_succ.end(); ++it2) {
+ layered_nf.add(*it2, layer);
+ v_vertices.emplace_back(*it2);
+ }
+ }
+ // When the above for finishes, we have progress of one half-step (from U to V) in the BFS
+ u_vertices.clear();
+ bool end = false;
+ for (auto it = v_vertices.cbegin(); it != v_vertices.cend(); it++)
+ if (v_to_u.at(*it) == null_point_index())
+ // we stop when a nearest exposed V vertex (from U exposed vertices) has been found
+ end = true;
+ else
+ u_vertices.emplace_back(v_to_u.at(*it));
+ // When the above for finishes, we have progress of one half-step (from V to U) in the BFS
+ if (end)
+ return layered_nf;
+ v_vertices.clear();
+ }
+ return layered_nf;
+}
+
+inline void Graph_matching::update(std::vector<int>& path) {
+ unmatched_in_u.remove(path.front());
+ for (auto it = path.cbegin(); it != path.cend(); ++it) {
+ // Be careful, the iterator is incremented twice each time
+ int tmp = *it;
+ v_to_u[*(++it)] = tmp;
+ }
+}
+
+
+} // namespace persistence_diagram
+
+} // namespace Gudhi
+
+#endif // GRAPH_MATCHING_H_
diff --git a/src/Bottleneck_distance/include/gudhi/Internal_point.h b/src/Bottleneck_distance/include/gudhi/Internal_point.h
new file mode 100644
index 00000000..0b2d26fe
--- /dev/null
+++ b/src/Bottleneck_distance/include/gudhi/Internal_point.h
@@ -0,0 +1,91 @@
+/* This file is part of the Gudhi Library. The Gudhi library
+ * (Geometric Understanding in Higher Dimensions) is a generic C++
+ * library for computational topology.
+ *
+ * Author: Francois Godi
+ *
+ * Copyright (C) 2015 INRIA
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef INTERNAL_POINT_H_
+#define INTERNAL_POINT_H_
+
+namespace Gudhi {
+
+namespace persistence_diagram {
+
+/** \internal \brief Returns the used index for encoding none of the points */
+int null_point_index();
+
+/** \internal \typedef \brief Internal_point is the internal points representation, indexes used outside. */
+struct Internal_point {
+ double vec[2];
+ int point_index;
+
+ Internal_point() { }
+
+ Internal_point(double x, double y, int p_i) {
+ vec[0] = x;
+ vec[1] = y;
+ point_index = p_i;
+ }
+
+ double x() const {
+ return vec[ 0 ];
+ }
+
+ double y() const {
+ return vec[ 1 ];
+ }
+
+ double& x() {
+ return vec[ 0 ];
+ }
+
+ double& y() {
+ return vec[ 1 ];
+ }
+
+ bool operator==(const Internal_point& p) const {
+ return point_index == p.point_index;
+ }
+
+ bool operator!=(const Internal_point& p) const {
+ return !(*this == p);
+ }
+};
+
+inline int null_point_index() {
+ return -1;
+}
+
+struct Construct_coord_iterator {
+ typedef const double* result_type;
+
+ const double* operator()(const Internal_point& p) const {
+ return p.vec;
+ }
+
+ const double* operator()(const Internal_point& p, int) const {
+ return p.vec + 2;
+ }
+};
+
+} // namespace persistence_diagram
+
+} // namespace Gudhi
+
+#endif // INTERNAL_POINT_H_
diff --git a/src/Bottleneck_distance/include/gudhi/Neighbors_finder.h b/src/Bottleneck_distance/include/gudhi/Neighbors_finder.h
new file mode 100644
index 00000000..cd5486f8
--- /dev/null
+++ b/src/Bottleneck_distance/include/gudhi/Neighbors_finder.h
@@ -0,0 +1,172 @@
+/* This file is part of the Gudhi Library. The Gudhi library
+ * (Geometric Understanding in Higher Dimensions) is a generic C++
+ * library for computational topology.
+ *
+ * Author: Francois Godi
+ *
+ * Copyright (C) 2015 INRIA
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef NEIGHBORS_FINDER_H_
+#define NEIGHBORS_FINDER_H_
+
+// Inclusion order is important for CGAL patch
+#include <CGAL/Kd_tree.h>
+#include <CGAL/Kd_tree_node.h>
+#include <CGAL/Orthogonal_k_neighbor_search.h>
+#include <CGAL/Weighted_Minkowski_distance.h>
+#include <CGAL/Search_traits.h>
+
+#include <gudhi/Persistence_graph.h>
+#include <gudhi/Internal_point.h>
+
+#include <unordered_set>
+#include <vector>
+
+namespace Gudhi {
+
+namespace persistence_diagram {
+
+/** \internal \brief data structure used to find any point (including projections) in V near to a query point from U
+ * (which can be a projection).
+ *
+ * V points have to be added manually using their index and before the first pull. A neighbor pulled is automatically
+ * removed.
+ *
+ * \ingroup bottleneck_distance
+ */
+class Neighbors_finder {
+ typedef CGAL::Dimension_tag<2> D;
+ typedef CGAL::Search_traits<double, Internal_point, const double*, Construct_coord_iterator, D> Traits;
+ typedef CGAL::Weighted_Minkowski_distance<Traits> Distance;
+ typedef CGAL::Orthogonal_k_neighbor_search<Traits, Distance> K_neighbor_search;
+ typedef K_neighbor_search::Tree Kd_tree;
+
+ public:
+ /** \internal \brief Constructor taking the near distance definition as parameter. */
+ Neighbors_finder(const Persistence_graph& g, double r);
+ /** \internal \brief A point added will be possibly pulled. */
+ void add(int v_point_index);
+ /** \internal \brief Returns and remove a V point near to the U point given as parameter, null_point_index() if
+ * there isn't such a point. */
+ int pull_near(int u_point_index);
+ /** \internal \brief Returns and remove all the V points near to the U point given as parameter. */
+ std::vector<int> pull_all_near(int u_point_index);
+
+ private:
+ const Persistence_graph& g;
+ const double r;
+ Kd_tree kd_t;
+ std::unordered_set<int> projections_f;
+};
+
+/** \internal \brief data structure used to find any point (including projections) in V near to a query point from U
+ * (which can be a projection) in a layered graph layer given as parmeter.
+ *
+ * V points have to be added manually using their index and before the first pull. A neighbor pulled is automatically
+ * removed.
+ *
+ * \ingroup bottleneck_distance
+ */
+class Layered_neighbors_finder {
+ public:
+ /** \internal \brief Constructor taking the near distance definition as parameter. */
+ Layered_neighbors_finder(const Persistence_graph& g, double r);
+ /** \internal \brief A point added will be possibly pulled. */
+ void add(int v_point_index, int vlayer);
+ /** \internal \brief Returns and remove a V point near to the U point given as parameter, null_point_index() if
+ * there isn't such a point. */
+ int pull_near(int u_point_index, int vlayer);
+ /** \internal \brief Returns the number of layers. */
+ int vlayers_number() const;
+
+ private:
+ const Persistence_graph& g;
+ const double r;
+ std::vector<std::unique_ptr<Neighbors_finder>> neighbors_finder;
+};
+
+inline Neighbors_finder::Neighbors_finder(const Persistence_graph& g, double r) :
+ g(g), r(r), kd_t(), projections_f() { }
+
+inline void Neighbors_finder::add(int v_point_index) {
+ if (g.on_the_v_diagonal(v_point_index))
+ projections_f.emplace(v_point_index);
+ else
+ kd_t.insert(g.get_v_point(v_point_index));
+}
+
+inline int Neighbors_finder::pull_near(int u_point_index) {
+ int tmp;
+ int c = g.corresponding_point_in_v(u_point_index);
+ if (g.on_the_u_diagonal(u_point_index) && !projections_f.empty()) {
+ // Any pair of projection is at distance 0
+ tmp = *projections_f.cbegin();
+ projections_f.erase(tmp);
+ } else if (projections_f.count(c) && (g.distance(u_point_index, c) <= r)) {
+ // Is the query point near to its projection ?
+ tmp = c;
+ projections_f.erase(tmp);
+ } else {
+ // Is the query point near to a V point in the plane ?
+ Internal_point u_point = g.get_u_point(u_point_index);
+ std::array<double, 2> w = {
+ {1., 1.}
+ };
+ K_neighbor_search search(kd_t, u_point, 1, 0., true, Distance(0, 2, w.begin(), w.end()));
+ auto it = search.begin();
+ if (it == search.end() || g.distance(u_point_index, it->first.point_index) > r)
+ return null_point_index();
+ tmp = it->first.point_index;
+ kd_t.remove(g.get_v_point(tmp));
+ }
+ return tmp;
+}
+
+inline std::vector<int> Neighbors_finder::pull_all_near(int u_point_index) {
+ std::vector<int> all_pull;
+ int last_pull = pull_near(u_point_index);
+ while (last_pull != null_point_index()) {
+ all_pull.emplace_back(last_pull);
+ last_pull = pull_near(u_point_index);
+ }
+ return all_pull;
+}
+
+inline Layered_neighbors_finder::Layered_neighbors_finder(const Persistence_graph& g, double r) :
+ g(g), r(r), neighbors_finder() { }
+
+inline void Layered_neighbors_finder::add(int v_point_index, int vlayer) {
+ for (int l = neighbors_finder.size(); l <= vlayer; l++)
+ neighbors_finder.emplace_back(std::unique_ptr<Neighbors_finder>(new Neighbors_finder(g, r)));
+ neighbors_finder.at(vlayer)->add(v_point_index);
+}
+
+inline int Layered_neighbors_finder::pull_near(int u_point_index, int vlayer) {
+ if (static_cast<int> (neighbors_finder.size()) <= vlayer)
+ return null_point_index();
+ return neighbors_finder.at(vlayer)->pull_near(u_point_index);
+}
+
+inline int Layered_neighbors_finder::vlayers_number() const {
+ return static_cast<int> (neighbors_finder.size());
+}
+
+} // namespace persistence_diagram
+
+} // namespace Gudhi
+
+#endif // NEIGHBORS_FINDER_H_
diff --git a/src/Bottleneck_distance/include/gudhi/Persistence_graph.h b/src/Bottleneck_distance/include/gudhi/Persistence_graph.h
new file mode 100644
index 00000000..39efc082
--- /dev/null
+++ b/src/Bottleneck_distance/include/gudhi/Persistence_graph.h
@@ -0,0 +1,180 @@
+/* This file is part of the Gudhi Library. The Gudhi library
+ * (Geometric Understanding in Higher Dimensions) is a generic C++
+ * library for computational topology.
+ *
+ * Author: Francois Godi
+ *
+ * Copyright (C) 2015 INRIA
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef PERSISTENCE_GRAPH_H_
+#define PERSISTENCE_GRAPH_H_
+
+#include <gudhi/Internal_point.h>
+
+#include <vector>
+#include <algorithm>
+#include <limits> // for numeric_limits
+
+namespace Gudhi {
+
+namespace persistence_diagram {
+
+/** \internal \brief Structure representing an euclidean bipartite graph containing
+ * the points from the two persistence diagrams (including the projections).
+ *
+ * \ingroup bottleneck_distance
+ */
+class Persistence_graph {
+ public:
+ /** \internal \brief Constructor taking 2 Persistence_Diagrams (concept) as parameters. */
+ template<typename Persistence_diagram1, typename Persistence_diagram2>
+ Persistence_graph(const Persistence_diagram1& diag1, const Persistence_diagram2& diag2, double e);
+ /** \internal \brief Is the given point from U the projection of a point in V ? */
+ bool on_the_u_diagonal(int u_point_index) const;
+ /** \internal \brief Is the given point from V the projection of a point in U ? */
+ bool on_the_v_diagonal(int v_point_index) const;
+ /** \internal \brief Given a point from V, returns the corresponding (projection or projector) point in U. */
+ int corresponding_point_in_u(int v_point_index) const;
+ /** \internal \brief Given a point from U, returns the corresponding (projection or projector) point in V. */
+ int corresponding_point_in_v(int u_point_index) const;
+ /** \internal \brief Given a point from U and a point from V, returns the distance between those points. */
+ double distance(int u_point_index, int v_point_index) const;
+ /** \internal \brief Returns size = |U| = |V|. */
+ int size() const;
+ /** \internal \brief Is there as many infinite points (alive components) in both diagrams ? */
+ double bottleneck_alive() const;
+ /** \internal \brief Returns the O(n^2) sorted distances between the points. */
+ std::vector<double> sorted_distances() const;
+ /** \internal \brief Returns an upper bound for the diameter of the convex hull of all non infinite points */
+ double diameter_bound() const;
+ /** \internal \brief Returns the corresponding internal point */
+ Internal_point get_u_point(int u_point_index) const;
+ /** \internal \brief Returns the corresponding internal point */
+ Internal_point get_v_point(int v_point_index) const;
+
+ private:
+ std::vector<Internal_point> u;
+ std::vector<Internal_point> v;
+ double b_alive;
+};
+
+template<typename Persistence_diagram1, typename Persistence_diagram2>
+Persistence_graph::Persistence_graph(const Persistence_diagram1 &diag1,
+ const Persistence_diagram2 &diag2, double e)
+ : u(), v(), b_alive(0.) {
+ std::vector<double> u_alive;
+ std::vector<double> v_alive;
+ for (auto it = std::begin(diag1); it != std::end(diag1); ++it) {
+ if (std::get<1>(*it) == std::numeric_limits<double>::infinity())
+ u_alive.push_back(std::get<0>(*it));
+ else if (std::get<1>(*it) - std::get<0>(*it) > e)
+ u.push_back(Internal_point(std::get<0>(*it), std::get<1>(*it), u.size()));
+ }
+ for (auto it = std::begin(diag2); it != std::end(diag2); ++it) {
+ if (std::get<1>(*it) == std::numeric_limits<double>::infinity())
+ v_alive.push_back(std::get<0>(*it));
+ else if (std::get<1>(*it) - std::get<0>(*it) > e)
+ v.push_back(Internal_point(std::get<0>(*it), std::get<1>(*it), v.size()));
+ }
+ if (u.size() < v.size())
+ swap(u, v);
+ std::sort(u_alive.begin(), u_alive.end());
+ std::sort(v_alive.begin(), v_alive.end());
+ if (u_alive.size() != v_alive.size()) {
+ b_alive = std::numeric_limits<double>::infinity();
+ } else {
+ for (auto it_u = u_alive.cbegin(), it_v = v_alive.cbegin(); it_u != u_alive.cend(); ++it_u, ++it_v)
+ b_alive = std::max(b_alive, std::fabs(*it_u - *it_v));
+ }
+}
+
+inline bool Persistence_graph::on_the_u_diagonal(int u_point_index) const {
+ return u_point_index >= static_cast<int> (u.size());
+}
+
+inline bool Persistence_graph::on_the_v_diagonal(int v_point_index) const {
+ return v_point_index >= static_cast<int> (v.size());
+}
+
+inline int Persistence_graph::corresponding_point_in_u(int v_point_index) const {
+ return on_the_v_diagonal(v_point_index) ?
+ v_point_index - static_cast<int> (v.size()) : v_point_index + static_cast<int> (u.size());
+}
+
+inline int Persistence_graph::corresponding_point_in_v(int u_point_index) const {
+ return on_the_u_diagonal(u_point_index) ?
+ u_point_index - static_cast<int> (u.size()) : u_point_index + static_cast<int> (v.size());
+}
+
+inline double Persistence_graph::distance(int u_point_index, int v_point_index) const {
+ if (on_the_u_diagonal(u_point_index) && on_the_v_diagonal(v_point_index))
+ return 0.;
+ Internal_point p_u = get_u_point(u_point_index);
+ Internal_point p_v = get_v_point(v_point_index);
+ return std::max(std::fabs(p_u.x() - p_v.x()), std::fabs(p_u.y() - p_v.y()));
+}
+
+inline int Persistence_graph::size() const {
+ return static_cast<int> (u.size() + v.size());
+}
+
+inline double Persistence_graph::bottleneck_alive() const {
+ return b_alive;
+}
+
+inline std::vector<double> Persistence_graph::sorted_distances() const {
+ std::vector<double> distances;
+ distances.push_back(0.); // for empty diagrams
+ for (int u_point_index = 0; u_point_index < size(); ++u_point_index) {
+ distances.push_back(distance(u_point_index, corresponding_point_in_v(u_point_index)));
+ for (int v_point_index = 0; v_point_index < size(); ++v_point_index)
+ distances.push_back(distance(u_point_index, v_point_index));
+ }
+ std::sort(distances.begin(), distances.end());
+ return distances;
+}
+
+inline Internal_point Persistence_graph::get_u_point(int u_point_index) const {
+ if (!on_the_u_diagonal(u_point_index))
+ return u.at(u_point_index);
+ Internal_point projector = v.at(corresponding_point_in_v(u_point_index));
+ double m = (projector.x() + projector.y()) / 2.;
+ return Internal_point(m, m, u_point_index);
+}
+
+inline Internal_point Persistence_graph::get_v_point(int v_point_index) const {
+ if (!on_the_v_diagonal(v_point_index))
+ return v.at(v_point_index);
+ Internal_point projector = u.at(corresponding_point_in_u(v_point_index));
+ double m = (projector.x() + projector.y()) / 2.;
+ return Internal_point(m, m, v_point_index);
+}
+
+inline double Persistence_graph::diameter_bound() const {
+ double max = 0.;
+ for (auto it = u.cbegin(); it != u.cend(); it++)
+ max = std::max(max, it->y());
+ for (auto it = v.cbegin(); it != v.cend(); it++)
+ max = std::max(max, it->y());
+ return max;
+}
+
+} // namespace persistence_diagram
+
+} // namespace Gudhi
+
+#endif // PERSISTENCE_GRAPH_H_
diff --git a/src/Bottleneck_distance/test/CMakeLists.txt b/src/Bottleneck_distance/test/CMakeLists.txt
new file mode 100644
index 00000000..a6979d3c
--- /dev/null
+++ b/src/Bottleneck_distance/test/CMakeLists.txt
@@ -0,0 +1,28 @@
+cmake_minimum_required(VERSION 2.6)
+project(Bottleneck_distance_tests)
+
+
+if (GCOVR_PATH)
+ # for gcovr to make coverage reports - Corbera Jenkins plugin
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fprofile-arcs -ftest-coverage")
+endif()
+if (GPROF_PATH)
+ # for gprof to make coverage reports - Jenkins
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pg")
+endif()
+
+# requires CGAL 4.8
+# cmake -DCGAL_DIR=~/workspace/CGAL-4.8 ../../..
+if(CGAL_FOUND)
+ if (NOT CGAL_VERSION VERSION_LESS 4.8.0)
+ if (EIGEN3_FOUND)
+ add_executable ( bottleneckUT bottleneck_unit_test.cpp )
+ target_link_libraries(bottleneckUT ${Boost_SYSTEM_LIBRARY} ${Boost_UNIT_TEST_FRAMEWORK_LIBRARY})
+
+ # Unitary tests
+ add_test(NAME bottleneckUT COMMAND ${CMAKE_CURRENT_BINARY_DIR}/bottleneckUT
+ # XML format for Jenkins xUnit plugin
+ --log_format=XML --log_sink=${CMAKE_SOURCE_DIR}/bottleneckUT.xml --log_level=test_suite --report_level=no)
+ endif()
+ endif ()
+endif()
diff --git a/src/Bottleneck/test/README b/src/Bottleneck_distance/test/README
index 0e7b8673..0e7b8673 100644
--- a/src/Bottleneck/test/README
+++ b/src/Bottleneck_distance/test/README
diff --git a/src/Bottleneck_distance/test/bottleneck_unit_test.cpp b/src/Bottleneck_distance/test/bottleneck_unit_test.cpp
new file mode 100644
index 00000000..e39613b3
--- /dev/null
+++ b/src/Bottleneck_distance/test/bottleneck_unit_test.cpp
@@ -0,0 +1,167 @@
+/* This file is part of the Gudhi Library. The Gudhi library
+ * (Geometric Understanding in Higher Dimensions) is a generic C++
+ * library for computational topology.
+ *
+ * Author: Francois Godi
+ *
+ * Copyright (C) 2015 INRIA
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+
+#define BOOST_TEST_DYN_LINK
+#define BOOST_TEST_MODULE "bottleneck distance"
+#include <boost/test/unit_test.hpp>
+
+#include <random>
+#include <gudhi/Bottleneck.h>
+
+using namespace Gudhi::persistence_diagram;
+
+int n1 = 81; // a natural number >0
+int n2 = 180; // a natural number >0
+double upper_bound = 406.43; // any real >0
+
+
+std::uniform_real_distribution<double> unif(0., upper_bound);
+std::default_random_engine re;
+std::vector< std::pair<double, double> > v1, v2;
+
+BOOST_AUTO_TEST_CASE(persistence_graph) {
+ // Random construction
+ for (int i = 0; i < n1; i++) {
+ double a = unif(re);
+ double b = unif(re);
+ v1.emplace_back(std::min(a, b), std::max(a, b));
+ }
+ for (int i = 0; i < n2; i++) {
+ double a = unif(re);
+ double b = unif(re);
+ v2.emplace_back(std::min(a, b), std::max(a, b));
+ }
+ Persistence_graph g(v1, v2, 0.);
+ std::vector<double> d(g.sorted_distances());
+ //
+ BOOST_CHECK(!g.on_the_u_diagonal(n1 - 1));
+ BOOST_CHECK(!g.on_the_u_diagonal(n1));
+ BOOST_CHECK(!g.on_the_u_diagonal(n2 - 1));
+ BOOST_CHECK(g.on_the_u_diagonal(n2));
+ BOOST_CHECK(!g.on_the_v_diagonal(n1 - 1));
+ BOOST_CHECK(g.on_the_v_diagonal(n1));
+ BOOST_CHECK(g.on_the_v_diagonal(n2 - 1));
+ BOOST_CHECK(g.on_the_v_diagonal(n2));
+ //
+ BOOST_CHECK(g.corresponding_point_in_u(0) == n2);
+ BOOST_CHECK(g.corresponding_point_in_u(n1) == 0);
+ BOOST_CHECK(g.corresponding_point_in_v(0) == n1);
+ BOOST_CHECK(g.corresponding_point_in_v(n2) == 0);
+ //
+ BOOST_CHECK(g.size() == (n1 + n2));
+ //
+ BOOST_CHECK((int) d.size() == (n1 + n2)*(n1 + n2) + n1 + n2 + 1);
+ BOOST_CHECK(std::count(d.begin(), d.end(), g.distance(0, 0)) > 0);
+ BOOST_CHECK(std::count(d.begin(), d.end(), g.distance(0, n1 - 1)) > 0);
+ BOOST_CHECK(std::count(d.begin(), d.end(), g.distance(0, n1)) > 0);
+ BOOST_CHECK(std::count(d.begin(), d.end(), g.distance(0, n2 - 1)) > 0);
+ BOOST_CHECK(std::count(d.begin(), d.end(), g.distance(0, n2)) > 0);
+ BOOST_CHECK(std::count(d.begin(), d.end(), g.distance(0, (n1 + n2) - 1)) > 0);
+ BOOST_CHECK(std::count(d.begin(), d.end(), g.distance(n1, 0)) > 0);
+ BOOST_CHECK(std::count(d.begin(), d.end(), g.distance(n1, n1 - 1)) > 0);
+ BOOST_CHECK(std::count(d.begin(), d.end(), g.distance(n1, n1)) > 0);
+ BOOST_CHECK(std::count(d.begin(), d.end(), g.distance(n1, n2 - 1)) > 0);
+ BOOST_CHECK(std::count(d.begin(), d.end(), g.distance(n1, n2)) > 0);
+ BOOST_CHECK(std::count(d.begin(), d.end(), g.distance(n1, (n1 + n2) - 1)) > 0);
+ BOOST_CHECK(std::count(d.begin(), d.end(), g.distance((n1 + n2) - 1, 0)) > 0);
+ BOOST_CHECK(std::count(d.begin(), d.end(), g.distance((n1 + n2) - 1, n1 - 1)) > 0);
+ BOOST_CHECK(std::count(d.begin(), d.end(), g.distance((n1 + n2) - 1, n1)) > 0);
+ BOOST_CHECK(std::count(d.begin(), d.end(), g.distance((n1 + n2) - 1, n2 - 1)) > 0);
+ BOOST_CHECK(std::count(d.begin(), d.end(), g.distance((n1 + n2) - 1, n2)) > 0);
+ BOOST_CHECK(std::count(d.begin(), d.end(), g.distance((n1 + n2) - 1, (n1 + n2) - 1)) > 0);
+}
+
+BOOST_AUTO_TEST_CASE(neighbors_finder) {
+ Persistence_graph g(v1, v2, 0.);
+ Neighbors_finder nf(g, 1.);
+ for (int v_point_index = 1; v_point_index < ((n2 + n1)*9 / 10); v_point_index += 2)
+ nf.add(v_point_index);
+ //
+ int v_point_index_1 = nf.pull_near(n2 / 2);
+ BOOST_CHECK((v_point_index_1 == -1) || (g.distance(n2 / 2, v_point_index_1) <= 1.));
+ std::vector<int> l = nf.pull_all_near(n2 / 2);
+ bool v = true;
+ for (auto it = l.cbegin(); it != l.cend(); ++it)
+ v = v && (g.distance(n2 / 2, *it) > 1.);
+ BOOST_CHECK(v);
+ int v_point_index_2 = nf.pull_near(n2 / 2);
+ BOOST_CHECK(v_point_index_2 == -1);
+}
+
+BOOST_AUTO_TEST_CASE(layered_neighbors_finder) {
+ Persistence_graph g(v1, v2, 0.);
+ Layered_neighbors_finder lnf(g, 1.);
+ for (int v_point_index = 1; v_point_index < ((n2 + n1)*9 / 10); v_point_index += 2)
+ lnf.add(v_point_index, v_point_index % 7);
+ //
+ int v_point_index_1 = lnf.pull_near(n2 / 2, 6);
+ BOOST_CHECK((v_point_index_1 == -1) || (g.distance(n2 / 2, v_point_index_1) <= 1.));
+ int v_point_index_2 = lnf.pull_near(n2 / 2, 6);
+ BOOST_CHECK(v_point_index_2 == -1);
+ v_point_index_1 = lnf.pull_near(n2 / 2, 0);
+ BOOST_CHECK((v_point_index_1 == -1) || (g.distance(n2 / 2, v_point_index_1) <= 1.));
+ v_point_index_2 = lnf.pull_near(n2 / 2, 0);
+ BOOST_CHECK(v_point_index_2 == -1);
+}
+
+BOOST_AUTO_TEST_CASE(graph_matching) {
+ Persistence_graph g(v1, v2, 0.);
+ Graph_matching m1(g);
+ m1.set_r(0.);
+ int e = 0;
+ while (m1.multi_augment())
+ ++e;
+ BOOST_CHECK(e > 0);
+ BOOST_CHECK(e <= 2 * sqrt(2 * (n1 + n2)));
+ Graph_matching m2 = m1;
+ BOOST_CHECK(!m2.multi_augment());
+ m2.set_r(upper_bound);
+ e = 0;
+ while (m2.multi_augment())
+ ++e;
+ BOOST_CHECK(e <= 2 * sqrt(2 * (n1 + n2)));
+ BOOST_CHECK(m2.perfect());
+ BOOST_CHECK(!m1.perfect());
+}
+
+BOOST_AUTO_TEST_CASE(global) {
+ std::uniform_real_distribution<double> unif1(0., upper_bound);
+ std::uniform_real_distribution<double> unif2(upper_bound / 10000., upper_bound / 100.);
+ std::default_random_engine re;
+ std::vector< std::pair<double, double> > v1, v2;
+ for (int i = 0; i < n1; i++) {
+ double a = unif1(re);
+ double b = unif1(re);
+ double x = unif2(re);
+ double y = unif2(re);
+ v1.emplace_back(std::min(a, b), std::max(a, b));
+ v2.emplace_back(std::min(a, b) + std::min(x, y), std::max(a, b) + std::max(x, y));
+ if (i % 5 == 0)
+ v1.emplace_back(std::min(a, b), std::min(a, b) + x);
+ if (i % 3 == 0)
+ v2.emplace_back(std::max(a, b), std::max(a, b) + y);
+ }
+ BOOST_CHECK(bottleneck_distance(v1, v2, 0.) <= upper_bound / 100.);
+ BOOST_CHECK(bottleneck_distance(v1, v2, upper_bound / 10000.) <= upper_bound / 100. + upper_bound / 10000.);
+ BOOST_CHECK(std::abs(bottleneck_distance(v1, v2, 0.) - bottleneck_distance(v1, v2, upper_bound / 10000.)) <= upper_bound / 10000.);
+}
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 56198d81..441b9fb5 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -112,9 +112,11 @@ else()
add_subdirectory(example/Bitmap_cubical_complex)
add_subdirectory(example/Witness_complex)
add_subdirectory(example/Alpha_complex)
+ add_subdirectory(example/Rips_complex)
add_subdirectory(example/Spatial_searching)
add_subdirectory(example/Subsampling)
add_subdirectory(example/Tangential_complex)
+ add_subdirectory(example/Bottleneck_distance)
# data points generator
add_subdirectory(data/points/generator)
diff --git a/src/Doxyfile b/src/Doxyfile
index ea55627a..93399848 100644
--- a/src/Doxyfile
+++ b/src/Doxyfile
@@ -785,7 +785,8 @@ EXCLUDE = data/ \
GudhUI/ \
cmake/ \
debian/ \
- src/cython/
+ src/cython/ \
+ include/gudhi_patches/
# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or
# directories that are symbolic links (a Unix file system feature) are excluded
diff --git a/src/GudhUI/CMakeLists.txt b/src/GudhUI/CMakeLists.txt
index a43294ea..d3a52b60 100644
--- a/src/GudhUI/CMakeLists.txt
+++ b/src/GudhUI/CMakeLists.txt
@@ -1,46 +1,40 @@
cmake_minimum_required(VERSION 2.8)
project(GudhUI)
-find_package(Qt4)
+find_package(CGAL COMPONENTS Qt5)
+find_package(Qt5 COMPONENTS Widgets Xml OpenGL)
find_package(QGLViewer)
find_package(OpenGL)
-if ( CGAL_FOUND AND QT4_FOUND AND OPENGL_FOUND AND QGLVIEWER_FOUND )
- set( QT_USE_QTXML TRUE )
- set( QT_USE_QTMAIN TRUE )
- set( QT_USE_QTSCRIPT TRUE )
- set( QT_USE_QTOPENGL TRUE )
- SET(Boost_USE_STATIC_LIBS ON)
- SET(Boost_USE_MULTITHREAD OFF)
- include(${QT_USE_FILE})
+if (NOT CGAL_FOUND)
+ message(ERROR " GudhUI requires CGAL and will not be compiled.")
+endif()
+
+if (NOT Qt5_FOUND)
+ message(ERROR " GudhUI requires Qt5 and will not be compiled.")
+endif()
+
+if (NOT OPENGL_FOUND)
+ message(ERROR " GudhUI requires OpenGL and will not be compiled.")
+endif()
+
+if (NOT QGLVIEWER_FOUND)
+ message(ERROR " GudhUI requires QGLViewer and will not be compiled.")
+endif()
+
+
+if ( CGAL_FOUND AND Qt5_FOUND AND OPENGL_FOUND AND QGLVIEWER_FOUND )
+
+ set(CMAKE_AUTOMOC ON)
+ set(CMAKE_AUTOUIC ON)
+ set(CMAKE_INCLUDE_CURRENT_DIR ON)
+
+ SET(Boost_USE_STATIC_LIBS ON)
+ SET(Boost_USE_MULTITHREAD OFF)
include_directories (${QGLVIEWER_INCLUDE_DIR})
- include_directories(.)
- # qt : ui file, created wih Qt Designer ###############
- set(CMAKE_CURRENT_BINARY_DIR "${CMAKE_CURRENT_SOURCE_DIR}/gui")
- qt4_wrap_ui( uis
- gui/main_window.ui
- gui/MenuEdgeContraction.ui
- gui/KNearestNeighborsMenu.ui
- gui/UniformNeighborsMenu.ui
- gui/PersistenceMenu.ui
- )
-
- set(CMAKE_CURRENT_BINARY_DIR "${CMAKE_CURRENT_SOURCE_DIR}/gui")
- qt4_automoc(
- gui/MainWindow.cpp
- gui/Menu_k_nearest_neighbors.cpp
- gui/Menu_uniform_neighbors.cpp
- gui/Menu_edge_contraction.cpp
- gui/Menu_persistence.cpp
- )
-
- set(CMAKE_CURRENT_BINARY_DIR "${CMAKE_CURRENT_SOURCE_DIR}/view")
- qt4_automoc(view/Viewer_instructor.cpp
- view/Viewer.cpp
- )
#####################################################################
add_executable ( GudhUI
@@ -52,10 +46,9 @@ if ( CGAL_FOUND AND QT4_FOUND AND OPENGL_FOUND AND QGLVIEWER_FOUND )
gui/Menu_persistence.cpp
view/Viewer_instructor.cpp
view/Viewer.cpp
- ${uis}
)
-
- target_link_libraries( GudhUI ${QT_LIBRARIES} ${QGLVIEWER_LIBRARIES} )
+ target_link_libraries( GudhUI Qt5::Widgets Qt5::Xml Qt5::OpenGL )
+ target_link_libraries( GudhUI ${QGLVIEWER_LIBRARIES} )
target_link_libraries( GudhUI ${OPENGL_gl_LIBRARY} ${OPENGL_glu_LIBRARY} )
if (TBB_FOUND)
target_link_libraries( GudhUI ${TBB_LIBRARIES})
@@ -64,5 +57,5 @@ endif()
###############################################################################
else()
- message(STATUS "NOTICE: GudhUI requires CGAL, the QGLViewer, OpenGL and Qt4, and will not be compiled.")
+ message(STATUS "NOTICE: GudhUI requires CGAL, the QGLViewer, OpenGL and Qt5, and will not be compiled.")
endif()
diff --git a/src/GudhUI/gui/MainWindow.h b/src/GudhUI/gui/MainWindow.h
index 3fe0d720..15664dcb 100644
--- a/src/GudhUI/gui/MainWindow.h
+++ b/src/GudhUI/gui/MainWindow.h
@@ -23,9 +23,6 @@
#ifndef GUI_MAINWINDOW_H_
#define GUI_MAINWINDOW_H_
-// Workaround for moc-qt4 not parsing boost headers
-#include <CGAL/config.h>
-
// Workaround https://svn.boost.org/trac/boost/ticket/12534
#include <boost/container/flat_map.hpp>
diff --git a/src/GudhUI/gui/Menu_edge_contraction.h b/src/GudhUI/gui/Menu_edge_contraction.h
index 08f0bf67..2d5640e8 100644
--- a/src/GudhUI/gui/Menu_edge_contraction.h
+++ b/src/GudhUI/gui/Menu_edge_contraction.h
@@ -23,11 +23,8 @@
#ifndef GUI_MENU_EDGE_CONTRACTION_H_
#define GUI_MENU_EDGE_CONTRACTION_H_
-// Workaround for moc-qt4 not parsing boost headers
-#include <CGAL/config.h>
-
#include "gui/MainWindow.h"
-#include "gui/ui_MenuEdgeContraction.h"
+#include "ui_MenuEdgeContraction.h"
#include "model/Model.h"
diff --git a/src/GudhUI/gui/Menu_k_nearest_neighbors.h b/src/GudhUI/gui/Menu_k_nearest_neighbors.h
index 8088b768..77303b67 100644
--- a/src/GudhUI/gui/Menu_k_nearest_neighbors.h
+++ b/src/GudhUI/gui/Menu_k_nearest_neighbors.h
@@ -24,7 +24,7 @@
#define GUI_MENU_K_NEAREST_NEIGHBORS_H_
#include <QMainWindow>
-#include "gui/ui_KNearestNeighborsMenu.h"
+#include "ui_KNearestNeighborsMenu.h"
class QWidget;
diff --git a/src/GudhUI/gui/Menu_persistence.h b/src/GudhUI/gui/Menu_persistence.h
index 8c4df158..1a2a2408 100644
--- a/src/GudhUI/gui/Menu_persistence.h
+++ b/src/GudhUI/gui/Menu_persistence.h
@@ -25,7 +25,7 @@
#define GUI_MENU_PERSISTENCE_H_
#include <QMainWindow>
-#include "gui/ui_PersistenceMenu.h"
+#include "ui_PersistenceMenu.h"
class QWidget;
diff --git a/src/GudhUI/gui/Menu_uniform_neighbors.h b/src/GudhUI/gui/Menu_uniform_neighbors.h
index 0b6f65fe..61316966 100644
--- a/src/GudhUI/gui/Menu_uniform_neighbors.h
+++ b/src/GudhUI/gui/Menu_uniform_neighbors.h
@@ -25,7 +25,7 @@
#define GUI_MENU_UNIFORM_NEIGHBORS_H_
#include <QMainWindow>
-#include "gui/ui_UniformNeighborsMenu.h"
+#include "ui_UniformNeighborsMenu.h"
class Menu_uniform_neighbors : public QDialog, public Ui::UniformMenu {
Q_OBJECT
diff --git a/src/GudhUI/utils/Persistence_compute.h b/src/GudhUI/utils/Persistence_compute.h
index 97165490..2dc03c8e 100644
--- a/src/GudhUI/utils/Persistence_compute.h
+++ b/src/GudhUI/utils/Persistence_compute.h
@@ -29,6 +29,7 @@
#include <gudhi/Simplex_tree.h>
#include <gudhi/distance_functions.h>
#include <gudhi/Persistent_cohomology.h>
+#include <gudhi/Rips_complex.h>
#include <vector>
@@ -69,21 +70,23 @@ template<typename SkBlComplex> class Persistence_compute {
points.emplace_back(std::move(pt_to_add));
}
+ using Simplex_tree = Gudhi::Simplex_tree<>;
+ using Filtration_value = Simplex_tree::Filtration_value;
+ using Rips_complex = Gudhi::rips_complex::Rips_complex<Filtration_value>;
+ using Field_Zp = Gudhi::persistent_cohomology::Field_Zp;
+ using Persistent_cohomology = Gudhi::persistent_cohomology::Persistent_cohomology<Simplex_tree, Field_Zp>;
- Graph_t prox_graph = compute_proximity_graph(points, params.threshold, euclidean_distance<Point_t>);
- Gudhi::Simplex_tree<> st;
- st.insert_graph(prox_graph);
- st.expansion(params.max_dim);
+ Rips_complex rips_complex(points, params.threshold, Euclidean_distance());
- Gudhi::persistent_cohomology::Persistent_cohomology< Gudhi::Simplex_tree<>,
- Gudhi::persistent_cohomology::Field_Zp > pcoh(st);
+ Simplex_tree st;
+ rips_complex.create_complex(st, params.max_dim);
+ Persistent_cohomology pcoh(st);
// initializes the coefficient field for homology
pcoh.init_coefficients(params.p);
// put params.min_pers
pcoh.compute_persistent_cohomology(params.min_pers);
stream << "persistence: \n";
stream << "p dimension birth death: \n";
-
pcoh.output_diagram(stream);
}
};
diff --git a/src/GudhUI/view/Viewer.h b/src/GudhUI/view/Viewer.h
index 319c8e04..797ddc53 100644
--- a/src/GudhUI/view/Viewer.h
+++ b/src/GudhUI/view/Viewer.h
@@ -24,9 +24,6 @@
#ifndef VIEW_VIEWER_H_
#define VIEW_VIEWER_H_
-// Workaround for moc-qt4 not parsing boost headers
-#include <CGAL/config.h>
-
#include <QGLViewer/qglviewer.h>
#include <vector>
diff --git a/src/GudhUI/view/Viewer_instructor.h b/src/GudhUI/view/Viewer_instructor.h
index 1da28009..05c5c1fc 100644
--- a/src/GudhUI/view/Viewer_instructor.h
+++ b/src/GudhUI/view/Viewer_instructor.h
@@ -26,9 +26,6 @@
// todo do a viewer instructor that have directely a pointer to a QGLviewer and buffer ot not triangles
-// Workaround for moc-qt4 not parsing boost headers
-#include <CGAL/config.h>
-
#include <QFileDialog>
#include <QKeyEvent>
#include <QGLViewer/camera.h>
diff --git a/src/Persistent_cohomology/benchmark/CMakeLists.txt b/src/Persistent_cohomology/benchmark/CMakeLists.txt
new file mode 100644
index 00000000..ea792c89
--- /dev/null
+++ b/src/Persistent_cohomology/benchmark/CMakeLists.txt
@@ -0,0 +1,14 @@
+cmake_minimum_required(VERSION 2.6)
+project(Persistent_cohomology_benchmark)
+
+
+if(GMP_FOUND)
+ if(GMPXX_FOUND)
+ add_executable ( performance_rips_persistence EXCLUDE_FROM_ALL performance_rips_persistence.cpp )
+ target_link_libraries(performance_rips_persistence ${Boost_SYSTEM_LIBRARY} ${Boost_PROGRAM_OPTIONS_LIBRARY} ${GMPXX_LIBRARIES} ${GMP_LIBRARIES})
+ if (TBB_FOUND)
+ target_link_libraries(performance_rips_persistence ${TBB_LIBRARIES})
+ endif(TBB_FOUND)
+ file(COPY "${CMAKE_SOURCE_DIR}/data/points/Kl.off" DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/)
+ endif(GMPXX_FOUND)
+endif(GMP_FOUND)
diff --git a/src/Persistent_cohomology/example/performance_rips_persistence.cpp b/src/Persistent_cohomology/benchmark/performance_rips_persistence.cpp
index b4d282ac..ba752999 100644
--- a/src/Persistent_cohomology/example/performance_rips_persistence.cpp
+++ b/src/Persistent_cohomology/benchmark/performance_rips_persistence.cpp
@@ -20,20 +20,26 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#include <gudhi/reader_utils.h>
-#include <gudhi/graph_simplicial_complex.h>
+#include <gudhi/Rips_complex.h>
#include <gudhi/distance_functions.h>
#include <gudhi/Simplex_tree.h>
#include <gudhi/Persistent_cohomology.h>
#include <gudhi/Persistent_cohomology/Multi_field.h>
#include <gudhi/Hasse_complex.h>
+#include <gudhi/Points_off_io.h>
#include <chrono>
#include <string>
#include <vector>
-using namespace Gudhi;
-using namespace Gudhi::persistent_cohomology;
+// Types definition
+using Simplex_tree = Gudhi::Simplex_tree<Gudhi::Simplex_tree_options_fast_persistence>;
+using Filtration_value = Simplex_tree::Filtration_value;
+using Rips_complex = Gudhi::rips_complex::Rips_complex<Filtration_value>;
+using Field_Zp = Gudhi::persistent_cohomology::Field_Zp;
+using Multi_field = Gudhi::persistent_cohomology::Multi_field;
+using Point = std::vector<double>;
+using Points_off_reader = Gudhi::Points_off_reader<Point>;
/* Compute the persistent homology of the complex cpx with coefficients in Z/pZ. */
template< typename FilteredComplex>
@@ -66,33 +72,29 @@ int main(int argc, char * argv[]) {
int elapsed_sec;
{
- std::string filepoints = "../../../data/points/Kl.txt";
+ std::string off_file_points = "Kl.off";
Filtration_value threshold = 0.27;
int dim_max = 3;
int p = 2;
int q = 1223;
- // Extract the points from the file filepoints
- typedef std::vector<double> Point_t;
- std::vector< Point_t > points;
- read_points(filepoints, points);
+ // Extract the points from the file off_file_points
+ Points_off_reader off_reader(off_file_points);
// Compute the proximity graph of the points
start = std::chrono::system_clock::now();
- Graph_t prox_graph = compute_proximity_graph(points, threshold
- , euclidean_distance<Point_t>);
+ Rips_complex rips_complex_from_file(off_reader.get_point_cloud(), threshold, Euclidean_distance());
end = std::chrono::system_clock::now();
elapsed_sec = std::chrono::duration_cast<std::chrono::milliseconds>(end - start).count();
std::cout << "Compute Rips graph in " << elapsed_sec << " ms.\n";
// Construct the Rips complex in a Simplex Tree
- Simplex_tree<Simplex_tree_options_fast_persistence> st;
+ Simplex_tree st;
start = std::chrono::system_clock::now();
// insert the proximity graph in the simplex tree
- st.insert_graph(prox_graph);
// expand the graph until dimension dim_max
- st.expansion(dim_max);
+ rips_complex_from_file.create_complex(st, dim_max);
end = std::chrono::system_clock::now();
elapsed_sec = std::chrono::duration_cast<std::chrono::milliseconds>(end - start).count();
@@ -120,7 +122,7 @@ int main(int argc, char * argv[]) {
// Convert the simplex tree into a hasse diagram
start = std::chrono::system_clock::now();
- Hasse_complex<> hcpx(st);
+ Gudhi::Hasse_complex<> hcpx(st);
end = std::chrono::system_clock::now();
elapsed_sec = std::chrono::duration_cast<std::chrono::milliseconds>(end - start).count();
std::cout << "Convert the simplex tree into a Hasse diagram in " << elapsed_sec << " ms.\n";
@@ -152,7 +154,7 @@ timing_persistence(FilteredComplex & cpx
int elapsed_sec;
{
start = std::chrono::system_clock::now();
- Persistent_cohomology< FilteredComplex, Field_Zp > pcoh(cpx);
+ Gudhi::persistent_cohomology::Persistent_cohomology< FilteredComplex, Field_Zp > pcoh(cpx);
end = std::chrono::system_clock::now();
elapsed_sec = std::chrono::duration_cast<std::chrono::milliseconds>(end - start).count();
std::cout << " Initialize pcoh in " << elapsed_sec << " ms.\n";
@@ -186,7 +188,7 @@ timing_persistence(FilteredComplex & cpx
int elapsed_sec;
{
start = std::chrono::system_clock::now();
- Persistent_cohomology< FilteredComplex, Multi_field > pcoh(cpx);
+ Gudhi::persistent_cohomology::Persistent_cohomology< FilteredComplex, Multi_field > pcoh(cpx);
end = std::chrono::system_clock::now();
elapsed_sec = std::chrono::duration_cast<std::chrono::milliseconds>(end - start).count();
std::cout << " Initialize pcoh in " << elapsed_sec << " ms.\n";
diff --git a/src/Persistent_cohomology/doc/Intro_persistent_cohomology.h b/src/Persistent_cohomology/doc/Intro_persistent_cohomology.h
index 433cfd3e..40dd3f93 100644
--- a/src/Persistent_cohomology/doc/Intro_persistent_cohomology.h
+++ b/src/Persistent_cohomology/doc/Intro_persistent_cohomology.h
@@ -144,17 +144,23 @@ namespace persistent_cohomology {
We provide several example files: run these examples with -h for details on their use, and read the README file.
\li <a href="_persistent_cohomology_2rips_persistence_8cpp-example.html">
-Persistent_cohomology/rips_persistence.cpp</a> computes the Rips complex of a point cloud and its persistence diagram.
+Persistent_cohomology/rips_persistence.cpp</a> computes the Rips complex of a point cloud and outputs its persistence
+diagram.
+\code $> ./rips_persistence ../../data/points/tore3D_1307.off -r 0.25 -m 0.5 -d 3 -p 3 \endcode
+\code The complex contains 177838 simplices
+ and has dimension 3
+3 0 0 inf
+3 1 0.0983494 inf
+3 1 0.104347 inf
+3 2 0.138335 inf \endcode
\li <a href="_persistent_cohomology_2rips_multifield_persistence_8cpp-example.html">
-Persistent_cohomology/rips_multifield_persistence.cpp</a> computes the Rips complex of a point cloud and its
+Persistent_cohomology/rips_multifield_persistence.cpp</a> computes the Rips complex of a point cloud and outputs its
persistence diagram with a family of field coefficients.
-\li <a href="_persistent_cohomology_2performance_rips_persistence_8cpp-example.html">
-Persistent_cohomology/performance_rips_persistence.cpp</a> provides timings for the construction of the Rips complex
-on a set of points sampling a Klein bottle in \f$\mathbb{R}^5\f$ with a simplex tree, its conversion to a
-Hasse diagram and the computation of persistent homology and multi-field persistent homology for the
-different representations.
+\li <a href="_persistent_cohomology_2rips_distance_matrix_persistence_8cpp-example.html">
+Persistent_cohomology/rips_distance_matrix_persistence.cpp</a> computes the Rips complex of a distance matrix and
+outputs its persistence diagram.
\li <a href="_persistent_cohomology_2alpha_complex_3d_persistence_8cpp-example.html">
Persistent_cohomology/alpha_complex_3d_persistence.cpp</a> computes the persistent homology with
diff --git a/src/Persistent_cohomology/example/CMakeLists.txt b/src/Persistent_cohomology/example/CMakeLists.txt
index 758bd6b1..38d7e9a9 100644
--- a/src/Persistent_cohomology/example/CMakeLists.txt
+++ b/src/Persistent_cohomology/example/CMakeLists.txt
@@ -11,9 +11,15 @@ target_link_libraries(plain_homology ${Boost_SYSTEM_LIBRARY})
add_executable(persistence_from_simple_simplex_tree persistence_from_simple_simplex_tree.cpp)
target_link_libraries(persistence_from_simple_simplex_tree ${Boost_SYSTEM_LIBRARY})
+add_executable(rips_distance_matrix_persistence rips_distance_matrix_persistence.cpp)
+target_link_libraries(rips_distance_matrix_persistence ${Boost_SYSTEM_LIBRARY} ${Boost_PROGRAM_OPTIONS_LIBRARY})
+
add_executable(rips_persistence rips_persistence.cpp)
target_link_libraries(rips_persistence ${Boost_SYSTEM_LIBRARY} ${Boost_PROGRAM_OPTIONS_LIBRARY})
+add_executable(rips_persistence_step_by_step rips_persistence_step_by_step.cpp)
+target_link_libraries(rips_persistence_step_by_step ${Boost_SYSTEM_LIBRARY} ${Boost_PROGRAM_OPTIONS_LIBRARY})
+
add_executable(rips_persistence_via_boundary_matrix rips_persistence_via_boundary_matrix.cpp)
target_link_libraries(rips_persistence_via_boundary_matrix ${Boost_SYSTEM_LIBRARY} ${Boost_PROGRAM_OPTIONS_LIBRARY})
@@ -23,15 +29,19 @@ target_link_libraries(persistence_from_file ${Boost_SYSTEM_LIBRARY} ${Boost_PROG
if (TBB_FOUND)
target_link_libraries(plain_homology ${TBB_LIBRARIES})
target_link_libraries(persistence_from_simple_simplex_tree ${TBB_LIBRARIES})
+ target_link_libraries(rips_distance_matrix_persistence ${TBB_LIBRARIES})
target_link_libraries(rips_persistence ${TBB_LIBRARIES})
+ target_link_libraries(rips_persistence_step_by_step ${TBB_LIBRARIES})
target_link_libraries(rips_persistence_via_boundary_matrix ${TBB_LIBRARIES})
target_link_libraries(persistence_from_file ${TBB_LIBRARIES})
endif()
add_test(plain_homology ${CMAKE_CURRENT_BINARY_DIR}/plain_homology)
add_test(persistence_from_simple_simplex_tree ${CMAKE_CURRENT_BINARY_DIR}/persistence_from_simple_simplex_tree 1 0)
-add_test(rips_persistence_3 ${CMAKE_CURRENT_BINARY_DIR}/rips_persistence ${CMAKE_SOURCE_DIR}/data/points/Kl.txt -r 0.16 -d 3 -p 3 -m 100)
-add_test(rips_persistence_via_boundary_matrix_3 ${CMAKE_CURRENT_BINARY_DIR}/rips_persistence_via_boundary_matrix ${CMAKE_SOURCE_DIR}/data/points/Kl.txt -r 0.16 -d 3 -p 3 -m 100)
+add_test(rips_distance_matrix ${CMAKE_CURRENT_BINARY_DIR}/rips_distance_matrix_persistence ${CMAKE_SOURCE_DIR}/data/distance_matrix/full_square_distance_matrix.csv -r 1.0 -d 3 -p 3 -m 0)
+add_test(rips_persistence_3 ${CMAKE_CURRENT_BINARY_DIR}/rips_persistence ${CMAKE_SOURCE_DIR}/data/points/tore3D_1307.off -r 0.25 -m 0.5 -d 3 -p 3)
+add_test(rips_persistence_step_by_step_3 ${CMAKE_CURRENT_BINARY_DIR}/rips_persistence_step_by_step ${CMAKE_SOURCE_DIR}/data/points/tore3D_1307.off -r 0.25 -m 0.5 -d 3 -p 3)
+add_test(rips_persistence_via_boundary_matrix_3 ${CMAKE_CURRENT_BINARY_DIR}/rips_persistence_via_boundary_matrix ${CMAKE_SOURCE_DIR}/data/points/Kl.off -r 0.16 -d 3 -p 3 -m 100)
add_test(persistence_from_file_3_2_0 ${CMAKE_CURRENT_BINARY_DIR}/persistence_from_file ${CMAKE_SOURCE_DIR}/data/filtered_simplicial_complex/bunny_5000_complex.fsc -p 2 -m 0)
add_test(persistence_from_file_3_3_100 ${CMAKE_CURRENT_BINARY_DIR}/persistence_from_file ${CMAKE_SOURCE_DIR}/data/filtered_simplicial_complex/bunny_5000_complex.fsc -p 3 -m 100)
@@ -39,14 +49,10 @@ if(GMP_FOUND)
if(GMPXX_FOUND)
add_executable(rips_multifield_persistence rips_multifield_persistence.cpp )
target_link_libraries(rips_multifield_persistence ${Boost_SYSTEM_LIBRARY} ${Boost_PROGRAM_OPTIONS_LIBRARY} ${GMPXX_LIBRARIES} ${GMP_LIBRARIES})
- add_executable ( performance_rips_persistence performance_rips_persistence.cpp )
- target_link_libraries(performance_rips_persistence ${Boost_SYSTEM_LIBRARY} ${Boost_PROGRAM_OPTIONS_LIBRARY} ${GMPXX_LIBRARIES} ${GMP_LIBRARIES})
if (TBB_FOUND)
target_link_libraries(rips_multifield_persistence ${TBB_LIBRARIES})
- target_link_libraries(performance_rips_persistence ${TBB_LIBRARIES})
endif(TBB_FOUND)
-
- add_test(rips_multifield_persistence_2_71 ${CMAKE_CURRENT_BINARY_DIR}/rips_multifield_persistence ${CMAKE_SOURCE_DIR}/data/points/Kl.txt -r 0.2 -d 3 -p 2 -q 71 -m 100)
+ add_test(rips_multifield_persistence_2_71 ${CMAKE_CURRENT_BINARY_DIR}/rips_multifield_persistence ${CMAKE_SOURCE_DIR}/data/points/tore3D_1307.off -r 0.25 -m 0.5 -d 3 -p 2 -q 71)
endif(GMPXX_FOUND)
endif(GMP_FOUND)
diff --git a/src/Persistent_cohomology/example/README b/src/Persistent_cohomology/example/README
index 7803e5ab..2ac79398 100644
--- a/src/Persistent_cohomology/example/README
+++ b/src/Persistent_cohomology/example/README
@@ -10,13 +10,13 @@ Example of use of RIPS:
Computation of the persistent homology with Z/2Z coefficients of the Rips complex on points
sampling a Klein bottle:
-./rips_persistence ../../data/points/Kl.txt -r 0.25 -d 3 -p 2 -m 100
+./rips_persistence ../../data/points/tore3D_1307.off -r 0.25 -m 0.5 -d 3 -p 2
output:
-210 0 0 inf
-210 1 0.0702103 inf
-2 1 0.0702103 inf
-2 2 0.159992 inf
+2 0 0 inf
+2 1 0.0983494 inf
+2 1 0.104347 inf
+2 2 0.138335 inf
Every line is of this format: p1*...*pr dim b d
@@ -29,31 +29,45 @@ where
with Z/3Z coefficients:
-./rips_persistence ../../data/points/Kl.txt -r 0.25 -d 3 -p 3 -m 100
+./rips_persistence ../../data/points/tore3D_1307.off -r 0.25 -m 0.5 -d 3 -p 3
output:
-3 0 0 inf
-3 1 0.0702103 inf
+3 0 0 inf
+3 1 0.0983494 inf
+3 1 0.104347 inf
+3 2 0.138335 inf
and the computation with Z/2Z and Z/3Z coefficients simultaneously:
-./rips_multifield_persistence ../../data/points/Kl.txt -r 0.25 -d 3 -p 2 -q 3 -m 100
+./rips_multifield_persistence ../../data/points/tore3D_1307.off -r 0.25 -m 0.12 -d 3 -p 2 -q 3
output:
-6 0 0 inf
-6 1 0.0702103 inf
-2 1 0.0702103 inf
-2 2 0.159992 inf
+6 0 0 inf
+6 1 0.0983494 inf
+6 1 0.104347 inf
+6 2 0.138335 inf
+6 0 0 0.122545
+6 0 0 0.121171
+6 0 0 0.120964
+6 0 0 0.12057
+6 0 0 0.12047
+6 0 0 0.120414
and finally the computation with all Z/pZ for 2 <= p <= 71 (20 first prime numbers):
- ./rips_multifield_persistence ../../data/points/Kl.txt -r 0.25 -d 3 -p 2 -q 71 -m 100
+ ./rips_multifield_persistence ../../data/points/Kl.off -r 0.25 -m 0.5 -d 3 -p 2 -q 71
output:
-557940830126698960967415390 0 0 inf
-557940830126698960967415390 1 0.0702103 inf
-2 1 0.0702103 inf
-2 2 0.159992 inf
+557940830126698960967415390 0 0 inf
+557940830126698960967415390 1 0.0983494 inf
+557940830126698960967415390 1 0.104347 inf
+557940830126698960967415390 2 0.138335 inf
+557940830126698960967415390 0 0 0.122545
+557940830126698960967415390 0 0 0.121171
+557940830126698960967415390 0 0 0.120964
+557940830126698960967415390 0 0 0.12057
+557940830126698960967415390 0 0 0.12047
+557940830126698960967415390 0 0 0.120414
***********************************************************************************************************************
Example of use of ALPHA:
diff --git a/src/Persistent_cohomology/example/alpha_complex_3d_persistence.cpp b/src/Persistent_cohomology/example/alpha_complex_3d_persistence.cpp
index 48fbb91a..978dc942 100644
--- a/src/Persistent_cohomology/example/alpha_complex_3d_persistence.cpp
+++ b/src/Persistent_cohomology/example/alpha_complex_3d_persistence.cpp
@@ -4,7 +4,7 @@
*
* Author(s): Vincent Rouvreau
*
- * Copyright (C) 2014 INRIA Saclay (France)
+ * Copyright (C) 2014 INRIA
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -64,6 +64,7 @@ typedef std::list<Alpha_shape_3::Vertex_handle> Vertex_list;
// gudhi type definition
typedef Gudhi::Simplex_tree<Gudhi::Simplex_tree_options_fast_persistence> ST;
+typedef ST::Filtration_value Filtration_value;
typedef ST::Vertex_handle Simplex_tree_vertex;
typedef std::map<Alpha_shape_3::Vertex_handle, Simplex_tree_vertex > Alpha_shape_simplex_tree_map;
typedef std::pair<Alpha_shape_3::Vertex_handle, Simplex_tree_vertex> Alpha_shape_simplex_tree_pair;
@@ -132,7 +133,7 @@ int main(int argc, char * const argv[]) {
int coeff_field_characteristic = atoi(argv[2]);
Filtration_value min_persistence = 0.0;
- int returnedScanValue = sscanf(argv[3], "%lf", &min_persistence);
+ int returnedScanValue = sscanf(argv[3], "%f", &min_persistence);
if ((returnedScanValue == EOF) || (min_persistence < -1.0)) {
std::cerr << "Error: " << argv[3] << " is not correct\n";
usage(argv[0]);
diff --git a/src/Persistent_cohomology/example/alpha_complex_persistence.cpp b/src/Persistent_cohomology/example/alpha_complex_persistence.cpp
index 2412569a..9e84e91f 100644
--- a/src/Persistent_cohomology/example/alpha_complex_persistence.cpp
+++ b/src/Persistent_cohomology/example/alpha_complex_persistence.cpp
@@ -11,6 +11,9 @@
#include <string>
#include <limits> // for numeric_limits
+using Simplex_tree = Gudhi::Simplex_tree<>;
+using Filtration_value = Simplex_tree::Filtration_value;
+
void program_options(int argc, char * argv[]
, std::string & off_file_points
, std::string & output_file_diag
@@ -34,7 +37,7 @@ int main(int argc, char **argv) {
using Kernel = CGAL::Epick_d< CGAL::Dynamic_dimension_tag >;
Gudhi::alpha_complex::Alpha_complex<Kernel> alpha_complex_from_file(off_file_points);
- Gudhi::Simplex_tree<> simplex;
+ Simplex_tree simplex;
if (alpha_complex_from_file.create_complex(simplex, alpha_square_max_value)) {
// ----------------------------------------------------------------------------
// Display information about the alpha complex
@@ -48,7 +51,7 @@ int main(int argc, char **argv) {
std::cout << "Simplex_tree dim: " << simplex.dimension() << std::endl;
// Compute the persistence diagram of the complex
- Gudhi::persistent_cohomology::Persistent_cohomology< Gudhi::Simplex_tree<>,
+ Gudhi::persistent_cohomology::Persistent_cohomology< Simplex_tree,
Gudhi::persistent_cohomology::Field_Zp > pcoh(simplex);
// initializes the coefficient field for homology
pcoh.init_coefficients(coeff_field_characteristic);
diff --git a/src/Persistent_cohomology/example/periodic_alpha_complex_3d_persistence.cpp b/src/Persistent_cohomology/example/periodic_alpha_complex_3d_persistence.cpp
index a199fea1..dbc42706 100644
--- a/src/Persistent_cohomology/example/periodic_alpha_complex_3d_persistence.cpp
+++ b/src/Persistent_cohomology/example/periodic_alpha_complex_3d_persistence.cpp
@@ -4,7 +4,7 @@
*
* Author(s): Vincent Rouvreau
*
- * Copyright (C) 2014 INRIA Saclay (France)
+ * Copyright (C) 2014 INRIA
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -39,6 +39,7 @@
#include <utility>
#include <list>
#include <vector>
+#include <cstdlib>
// Traits
using K = CGAL::Exact_predicates_inexact_constructions_kernel;
@@ -70,6 +71,7 @@ using Vertex_list = std::list<Alpha_shape_3::Vertex_handle>;
// gudhi type definition
using ST = Gudhi::Simplex_tree<Gudhi::Simplex_tree_options_fast_persistence>;
+using Filtration_value = ST::Filtration_value;
using Simplex_tree_vertex = ST::Vertex_handle;
using Alpha_shape_simplex_tree_map = std::map<Alpha_shape_3::Vertex_handle, Simplex_tree_vertex >;
using Alpha_shape_simplex_tree_pair = std::pair<Alpha_shape_3::Vertex_handle, Simplex_tree_vertex>;
@@ -136,19 +138,8 @@ int main(int argc, char * const argv[]) {
usage(argv[0]);
}
- int coeff_field_characteristic = 0;
- int returnedScanValue = sscanf(argv[3], "%d", &coeff_field_characteristic);
- if ((returnedScanValue == EOF) || (coeff_field_characteristic <= 0)) {
- std::cerr << "Error: " << argv[3] << " is not correct\n";
- usage(argv[0]);
- }
-
- Filtration_value min_persistence = 0.0;
- returnedScanValue = sscanf(argv[4], "%lf", &min_persistence);
- if ((returnedScanValue == EOF) || (min_persistence < -1.0)) {
- std::cerr << "Error: " << argv[4] << " is not correct\n";
- usage(argv[0]);
- }
+ int coeff_field_characteristic = atoi(argv[3]);
+ Filtration_value min_persistence = strtof(argv[4], nullptr);
// Read points from file
std::string offInputFile(argv[1]);
diff --git a/src/Persistent_cohomology/example/persistence_from_simple_simplex_tree.cpp b/src/Persistent_cohomology/example/persistence_from_simple_simplex_tree.cpp
index ba772f04..7ca9410a 100644
--- a/src/Persistent_cohomology/example/persistence_from_simple_simplex_tree.cpp
+++ b/src/Persistent_cohomology/example/persistence_from_simple_simplex_tree.cpp
@@ -4,7 +4,7 @@
*
* Author(s): Vincent Rouvreau
*
- * Copyright (C) 2014 INRIA Sophia Antipolis-Méditerranée (France)
+ * Copyright (C) 2014 INRIA
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -29,13 +29,12 @@
#include <utility>
#include <vector>
-using namespace Gudhi;
-using namespace Gudhi::persistent_cohomology;
-
-typedef std::vector< Vertex_handle > typeVectorVertex;
-typedef std::pair<typeVectorVertex, Filtration_value> typeSimplex;
-typedef std::pair< Simplex_tree<>::Simplex_handle, bool > typePairSimplexBool;
-typedef Simplex_tree<> typeST;
+// Types definition
+using Simplex_tree = Gudhi::Simplex_tree<>;
+using Filtration_value = Simplex_tree::Filtration_value;
+using Field_Zp = Gudhi::persistent_cohomology::Field_Zp;
+using Persistent_cohomology = Gudhi::persistent_cohomology::Persistent_cohomology<Simplex_tree, Field_Zp >;
+using typeVectorVertex = std::vector< Simplex_tree::Vertex_handle >;
void usage(char * const progName) {
std::cerr << "Usage: " << progName << " coeff_field_characteristic[integer > 0] min_persistence[float >= -1.0]\n";
@@ -66,7 +65,7 @@ int main(int argc, char * const argv[]) {
// TEST OF INSERTION
std::cout << "********************************************************************" << std::endl;
std::cout << "TEST OF INSERTION" << std::endl;
- typeST st;
+ Simplex_tree st;
// ++ FIRST
std::cout << " - INSERT (0,1,2)" << std::endl;
@@ -166,7 +165,7 @@ int main(int argc, char * const argv[]) {
std::cout << "**************************************************************" << std::endl;
// Compute the persistence diagram of the complex
- persistent_cohomology::Persistent_cohomology< Simplex_tree<>, Field_Zp > pcoh(st);
+ Persistent_cohomology pcoh(st);
// initializes the coefficient field for homology
pcoh.init_coefficients(coeff_field_characteristic);
diff --git a/src/Persistent_cohomology/example/rips_distance_matrix_persistence.cpp b/src/Persistent_cohomology/example/rips_distance_matrix_persistence.cpp
new file mode 100644
index 00000000..8517e7f6
--- /dev/null
+++ b/src/Persistent_cohomology/example/rips_distance_matrix_persistence.cpp
@@ -0,0 +1,144 @@
+/* This file is part of the Gudhi Library. The Gudhi library
+ * (Geometric Understanding in Higher Dimensions) is a generic C++
+ * library for computational topology.
+ *
+ * Author(s): Pawel Dlotko, Vincent Rouvreau
+ *
+ * Copyright (C) 2016 INRIA
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <gudhi/Rips_complex.h>
+#include <gudhi/Simplex_tree.h>
+#include <gudhi/Persistent_cohomology.h>
+#include <gudhi/reader_utils.h>
+
+#include <boost/program_options.hpp>
+
+#include <string>
+#include <vector>
+#include <limits> // infinity
+
+// Types definition
+using Simplex_tree = Gudhi::Simplex_tree<Gudhi::Simplex_tree_options_fast_persistence>;
+using Filtration_value = Simplex_tree::Filtration_value;
+using Rips_complex = Gudhi::rips_complex::Rips_complex<Filtration_value>;
+using Field_Zp = Gudhi::persistent_cohomology::Field_Zp;
+using Persistent_cohomology = Gudhi::persistent_cohomology::Persistent_cohomology<Simplex_tree, Field_Zp >;
+using Distance_matrix = std::vector<std::vector<Filtration_value>>;
+
+void program_options(int argc, char * argv[]
+ , std::string & csv_matrix_file
+ , std::string & filediag
+ , Filtration_value & threshold
+ , int & dim_max
+ , int & p
+ , Filtration_value & min_persistence);
+
+int main(int argc, char * argv[]) {
+ std::string csv_matrix_file;
+ std::string filediag;
+ Filtration_value threshold;
+ int dim_max;
+ int p;
+ Filtration_value min_persistence;
+
+ program_options(argc, argv, csv_matrix_file, filediag, threshold, dim_max, p, min_persistence);
+
+ Distance_matrix distances = read_lower_triangular_matrix_from_csv_file<Filtration_value>(csv_matrix_file);
+ Rips_complex rips_complex_from_file(distances, threshold);
+
+ // Construct the Rips complex in a Simplex Tree
+ Simplex_tree simplex_tree;
+
+ rips_complex_from_file.create_complex(simplex_tree, dim_max);
+ std::cout << "The complex contains " << simplex_tree.num_simplices() << " simplices \n";
+ std::cout << " and has dimension " << simplex_tree.dimension() << " \n";
+
+ // Sort the simplices in the order of the filtration
+ simplex_tree.initialize_filtration();
+
+ // Compute the persistence diagram of the complex
+ Persistent_cohomology pcoh(simplex_tree);
+ // initializes the coefficient field for homology
+ pcoh.init_coefficients(p);
+
+ pcoh.compute_persistent_cohomology(min_persistence);
+
+ // Output the diagram in filediag
+ if (filediag.empty()) {
+ pcoh.output_diagram();
+ } else {
+ std::ofstream out(filediag);
+ pcoh.output_diagram(out);
+ out.close();
+ }
+ return 0;
+}
+
+void program_options(int argc, char * argv[]
+ , std::string & csv_matrix_file
+ , std::string & filediag
+ , Filtration_value & threshold
+ , int & dim_max
+ , int & p
+ , Filtration_value & min_persistence) {
+ namespace po = boost::program_options;
+ po::options_description hidden("Hidden options");
+ hidden.add_options()
+ ("input-file", po::value<std::string>(&csv_matrix_file),
+ "Name of file containing a distance matrix. Can be square or lower triangular matrix. Separator is ';'.");
+
+ po::options_description visible("Allowed options", 100);
+ visible.add_options()
+ ("help,h", "produce help message")
+ ("output-file,o", po::value<std::string>(&filediag)->default_value(std::string()),
+ "Name of file in which the persistence diagram is written. Default print in std::cout")
+ ("max-edge-length,r",
+ po::value<Filtration_value>(&threshold)->default_value(std::numeric_limits<Filtration_value>::infinity()),
+ "Maximal length of an edge for the Rips complex construction.")
+ ("cpx-dimension,d", po::value<int>(&dim_max)->default_value(1),
+ "Maximal dimension of the Rips complex we want to compute.")
+ ("field-charac,p", po::value<int>(&p)->default_value(11),
+ "Characteristic p of the coefficient field Z/pZ for computing homology.")
+ ("min-persistence,m", po::value<Filtration_value>(&min_persistence),
+ "Minimal lifetime of homology feature to be recorded. Default is 0. Enter a negative value to see zero length intervals");
+
+ po::positional_options_description pos;
+ pos.add("input-file", 1);
+
+ po::options_description all;
+ all.add(visible).add(hidden);
+
+ po::variables_map vm;
+ po::store(po::command_line_parser(argc, argv).
+ options(all).positional(pos).run(), vm);
+ po::notify(vm);
+
+ if (vm.count("help") || !vm.count("input-file")) {
+ std::cout << std::endl;
+ std::cout << "Compute the persistent homology with coefficient field Z/pZ \n";
+ std::cout << "of a Rips complex defined on a set of distance matrix.\n \n";
+ std::cout << "The output diagram contains one bar per line, written with the convention: \n";
+ std::cout << " p dim b d \n";
+ std::cout << "where dim is the dimension of the homological feature,\n";
+ std::cout << "b and d are respectively the birth and death of the feature and \n";
+ std::cout << "p is the characteristic of the field Z/pZ used for homology coefficients." << std::endl << std::endl;
+
+ std::cout << "Usage: " << argv[0] << " [options] input-file" << std::endl << std::endl;
+ std::cout << visible << std::endl;
+ std::abort();
+ }
+}
diff --git a/src/Persistent_cohomology/example/rips_multifield_persistence.cpp b/src/Persistent_cohomology/example/rips_multifield_persistence.cpp
index c5cd775d..7674b5a5 100644
--- a/src/Persistent_cohomology/example/rips_multifield_persistence.cpp
+++ b/src/Persistent_cohomology/example/rips_multifield_persistence.cpp
@@ -4,7 +4,7 @@
*
* Author(s): Clément Maria
*
- * Copyright (C) 2014 INRIA Sophia Antipolis-Méditerranée (France)
+ * Copyright (C) 2014 INRIA
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -20,26 +20,29 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#include <gudhi/reader_utils.h>
-#include <gudhi/graph_simplicial_complex.h>
+#include <gudhi/Rips_complex.h>
#include <gudhi/distance_functions.h>
#include <gudhi/Simplex_tree.h>
#include <gudhi/Persistent_cohomology.h>
#include <gudhi/Persistent_cohomology/Multi_field.h>
+#include <gudhi/Points_off_io.h>
#include <boost/program_options.hpp>
#include <string>
#include <vector>
-using namespace Gudhi;
-using namespace Gudhi::persistent_cohomology;
-
-typedef int Vertex_handle;
-typedef double Filtration_value;
+// Types definition
+using Simplex_tree = Gudhi::Simplex_tree<Gudhi::Simplex_tree_options_fast_persistence>;
+using Filtration_value = Simplex_tree::Filtration_value;
+using Rips_complex = Gudhi::rips_complex::Rips_complex<Filtration_value>;
+using Multi_field = Gudhi::persistent_cohomology::Multi_field;
+using Persistent_cohomology = Gudhi::persistent_cohomology::Persistent_cohomology<Simplex_tree, Multi_field >;
+using Point = std::vector<double>;
+using Points_off_reader = Gudhi::Points_off_reader<Point>;
void program_options(int argc, char * argv[]
- , std::string & filepoints
+ , std::string & off_file_points
, std::string & filediag
, Filtration_value & threshold
, int & dim_max
@@ -48,7 +51,7 @@ void program_options(int argc, char * argv[]
, Filtration_value & min_persistence);
int main(int argc, char * argv[]) {
- std::string filepoints;
+ std::string off_file_points;
std::string filediag;
Filtration_value threshold;
int dim_max;
@@ -56,33 +59,26 @@ int main(int argc, char * argv[]) {
int max_p;
Filtration_value min_persistence;
- program_options(argc, argv, filepoints, filediag, threshold, dim_max, min_p, max_p, min_persistence);
-
- // Extract the points from the file filepoints
- typedef std::vector<double> Point_t;
- std::vector< Point_t > points;
- read_points(filepoints, points);
+ program_options(argc, argv, off_file_points, filediag, threshold, dim_max, min_p, max_p, min_persistence);
- // Compute the proximity graph of the points
- Graph_t prox_graph = compute_proximity_graph(points, threshold
- , euclidean_distance<Point_t>);
+ Points_off_reader off_reader(off_file_points);
+ Rips_complex rips_complex_from_file(off_reader.get_point_cloud(), threshold, Euclidean_distance());
// Construct the Rips complex in a Simplex Tree
- typedef Simplex_tree<Simplex_tree_options_fast_persistence> ST;
- ST st;
- // insert the proximity graph in the simplex tree
- st.insert_graph(prox_graph);
- // expand the graph until dimension dim_max
- st.expansion(dim_max);
+ Simplex_tree simplex_tree;
+
+ rips_complex_from_file.create_complex(simplex_tree, dim_max);
+ std::cout << "The complex contains " << simplex_tree.num_simplices() << " simplices \n";
+ std::cout << " and has dimension " << simplex_tree.dimension() << " \n";
// Sort the simplices in the order of the filtration
- st.initialize_filtration();
+ simplex_tree.initialize_filtration();
// Compute the persistence diagram of the complex
- Persistent_cohomology<ST, Multi_field > pcoh(st);
+ Persistent_cohomology pcoh(simplex_tree);
// initializes the coefficient field for homology
pcoh.init_coefficients(min_p, max_p);
- // compute persistent homology, disgarding persistent features of life shorter than min_persistence
+
pcoh.compute_persistent_cohomology(min_persistence);
// Output the diagram in filediag
@@ -98,7 +94,7 @@ int main(int argc, char * argv[]) {
}
void program_options(int argc, char * argv[]
- , std::string & filepoints
+ , std::string & off_file_points
, std::string & filediag
, Filtration_value & threshold
, int & dim_max
@@ -108,8 +104,8 @@ void program_options(int argc, char * argv[]
namespace po = boost::program_options;
po::options_description hidden("Hidden options");
hidden.add_options()
- ("input-file", po::value<std::string>(&filepoints),
- "Name of file containing a point set. Format is one point per line: X1 ... Xd \n");
+ ("input-file", po::value<std::string>(&off_file_points),
+ "Name of an OFF file containing a point set.\n");
po::options_description visible("Allowed options");
visible.add_options()
diff --git a/src/Persistent_cohomology/example/rips_persistence.cpp b/src/Persistent_cohomology/example/rips_persistence.cpp
index cab49395..c6378de7 100644
--- a/src/Persistent_cohomology/example/rips_persistence.cpp
+++ b/src/Persistent_cohomology/example/rips_persistence.cpp
@@ -4,7 +4,7 @@
*
* Author(s): Clément Maria
*
- * Copyright (C) 2014 INRIA Sophia Antipolis-Méditerranée (France)
+ * Copyright (C) 2014 INRIA
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -20,11 +20,11 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#include <gudhi/reader_utils.h>
-#include <gudhi/graph_simplicial_complex.h>
+#include <gudhi/Rips_complex.h>
#include <gudhi/distance_functions.h>
#include <gudhi/Simplex_tree.h>
#include <gudhi/Persistent_cohomology.h>
+#include <gudhi/Points_off_io.h>
#include <boost/program_options.hpp>
@@ -32,14 +32,17 @@
#include <vector>
#include <limits> // infinity
-using namespace Gudhi;
-using namespace Gudhi::persistent_cohomology;
-
-typedef int Vertex_handle;
-typedef double Filtration_value;
+// Types definition
+using Simplex_tree = Gudhi::Simplex_tree<Gudhi::Simplex_tree_options_fast_persistence>;
+using Filtration_value = Simplex_tree::Filtration_value;
+using Rips_complex = Gudhi::rips_complex::Rips_complex<Filtration_value>;
+using Field_Zp = Gudhi::persistent_cohomology::Field_Zp;
+using Persistent_cohomology = Gudhi::persistent_cohomology::Persistent_cohomology<Simplex_tree, Field_Zp >;
+using Point = std::vector<double>;
+using Points_off_reader = Gudhi::Points_off_reader<Point>;
void program_options(int argc, char * argv[]
- , std::string & filepoints
+ , std::string & off_file_points
, std::string & filediag
, Filtration_value & threshold
, int & dim_max
@@ -47,40 +50,30 @@ void program_options(int argc, char * argv[]
, Filtration_value & min_persistence);
int main(int argc, char * argv[]) {
- std::string filepoints;
+ std::string off_file_points;
std::string filediag;
Filtration_value threshold;
int dim_max;
int p;
Filtration_value min_persistence;
- program_options(argc, argv, filepoints, filediag, threshold, dim_max, p, min_persistence);
-
- // Extract the points from the file filepoints
- typedef std::vector<double> Point_t;
- std::vector< Point_t > points;
- read_points(filepoints, points);
+ program_options(argc, argv, off_file_points, filediag, threshold, dim_max, p, min_persistence);
- // Compute the proximity graph of the points
- Graph_t prox_graph = compute_proximity_graph(points, threshold
- , euclidean_distance<Point_t>);
+ Points_off_reader off_reader(off_file_points);
+ Rips_complex rips_complex_from_file(off_reader.get_point_cloud(), threshold, Euclidean_distance());
// Construct the Rips complex in a Simplex Tree
- typedef Simplex_tree<Simplex_tree_options_fast_persistence> ST;
- ST st;
- // insert the proximity graph in the simplex tree
- st.insert_graph(prox_graph);
- // expand the graph until dimension dim_max
- st.expansion(dim_max);
+ Simplex_tree simplex_tree;
- std::cout << "The complex contains " << st.num_simplices() << " simplices \n";
- std::cout << " and has dimension " << st.dimension() << " \n";
+ rips_complex_from_file.create_complex(simplex_tree, dim_max);
+ std::cout << "The complex contains " << simplex_tree.num_simplices() << " simplices \n";
+ std::cout << " and has dimension " << simplex_tree.dimension() << " \n";
// Sort the simplices in the order of the filtration
- st.initialize_filtration();
+ simplex_tree.initialize_filtration();
// Compute the persistence diagram of the complex
- persistent_cohomology::Persistent_cohomology<ST, Field_Zp > pcoh(st);
+ Persistent_cohomology pcoh(simplex_tree);
// initializes the coefficient field for homology
pcoh.init_coefficients(p);
@@ -99,7 +92,7 @@ int main(int argc, char * argv[]) {
}
void program_options(int argc, char * argv[]
- , std::string & filepoints
+ , std::string & off_file_points
, std::string & filediag
, Filtration_value & threshold
, int & dim_max
@@ -108,15 +101,16 @@ void program_options(int argc, char * argv[]
namespace po = boost::program_options;
po::options_description hidden("Hidden options");
hidden.add_options()
- ("input-file", po::value<std::string>(&filepoints),
- "Name of file containing a point set. Format is one point per line: X1 ... Xd ");
+ ("input-file", po::value<std::string>(&off_file_points),
+ "Name of an OFF file containing a point set.\n");
po::options_description visible("Allowed options", 100);
visible.add_options()
("help,h", "produce help message")
("output-file,o", po::value<std::string>(&filediag)->default_value(std::string()),
"Name of file in which the persistence diagram is written. Default print in std::cout")
- ("max-edge-length,r", po::value<Filtration_value>(&threshold)->default_value(std::numeric_limits<Filtration_value>::infinity()),
+ ("max-edge-length,r",
+ po::value<Filtration_value>(&threshold)->default_value(std::numeric_limits<Filtration_value>::infinity()),
"Maximal length of an edge for the Rips complex construction.")
("cpx-dimension,d", po::value<int>(&dim_max)->default_value(1),
"Maximal dimension of the Rips complex we want to compute.")
diff --git a/src/Persistent_cohomology/example/rips_persistence_step_by_step.cpp b/src/Persistent_cohomology/example/rips_persistence_step_by_step.cpp
new file mode 100644
index 00000000..c8f0921a
--- /dev/null
+++ b/src/Persistent_cohomology/example/rips_persistence_step_by_step.cpp
@@ -0,0 +1,210 @@
+/* This file is part of the Gudhi Library. The Gudhi library
+ * (Geometric Understanding in Higher Dimensions) is a generic C++
+ * library for computational topology.
+ *
+ * Author(s): Clément Maria
+ *
+ * Copyright (C) 2014 INRIA Sophia Antipolis-Méditerranée (France)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <gudhi/graph_simplicial_complex.h>
+#include <gudhi/distance_functions.h>
+#include <gudhi/Simplex_tree.h>
+#include <gudhi/Persistent_cohomology.h>
+#include <gudhi/Points_off_io.h>
+
+#include <boost/program_options.hpp>
+
+#include <string>
+#include <vector>
+#include <limits> // infinity
+#include <utility> // for pair
+#include <map>
+
+// Types definition
+using Simplex_tree = Gudhi::Simplex_tree<Gudhi::Simplex_tree_options_fast_persistence>;
+using Vertex_handle = Simplex_tree::Vertex_handle;
+using Filtration_value = Simplex_tree::Filtration_value;
+using Graph_t = boost::adjacency_list < boost::vecS, boost::vecS, boost::undirectedS
+, boost::property < vertex_filtration_t, Filtration_value >
+, boost::property < edge_filtration_t, Filtration_value >
+>;
+using Edge_t = std::pair< Vertex_handle, Vertex_handle >;
+
+template< typename InputPointRange, typename Distance >
+Graph_t compute_proximity_graph(InputPointRange &points, Filtration_value threshold, Distance distance);
+
+using Field_Zp = Gudhi::persistent_cohomology::Field_Zp;
+using Persistent_cohomology = Gudhi::persistent_cohomology::Persistent_cohomology<Simplex_tree, Field_Zp >;
+using Point = std::vector<double>;
+using Points_off_reader = Gudhi::Points_off_reader<Point>;
+
+void program_options(int argc, char * argv[]
+ , std::string & off_file_points
+ , std::string & filediag
+ , Filtration_value & threshold
+ , int & dim_max
+ , int & p
+ , Filtration_value & min_persistence);
+
+int main(int argc, char * argv[]) {
+ std::string off_file_points;
+ std::string filediag;
+ Filtration_value threshold;
+ int dim_max;
+ int p;
+ Filtration_value min_persistence;
+
+ program_options(argc, argv, off_file_points, filediag, threshold, dim_max, p, min_persistence);
+
+ // Extract the points from the file filepoints
+ Points_off_reader off_reader(off_file_points);
+
+ // Compute the proximity graph of the points
+ Graph_t prox_graph = compute_proximity_graph(off_reader.get_point_cloud(), threshold
+ , Euclidean_distance());
+
+ // Construct the Rips complex in a Simplex Tree
+ Simplex_tree st;
+ // insert the proximity graph in the simplex tree
+ st.insert_graph(prox_graph);
+ // expand the graph until dimension dim_max
+ st.expansion(dim_max);
+
+ std::cout << "The complex contains " << st.num_simplices() << " simplices \n";
+ std::cout << " and has dimension " << st.dimension() << " \n";
+
+ // Sort the simplices in the order of the filtration
+ st.initialize_filtration();
+
+ // Compute the persistence diagram of the complex
+ Persistent_cohomology pcoh(st);
+ // initializes the coefficient field for homology
+ pcoh.init_coefficients(p);
+
+ pcoh.compute_persistent_cohomology(min_persistence);
+
+ // Output the diagram in filediag
+ if (filediag.empty()) {
+ pcoh.output_diagram();
+ } else {
+ std::ofstream out(filediag);
+ pcoh.output_diagram(out);
+ out.close();
+ }
+
+ return 0;
+}
+
+void program_options(int argc, char * argv[]
+ , std::string & off_file_points
+ , std::string & filediag
+ , Filtration_value & threshold
+ , int & dim_max
+ , int & p
+ , Filtration_value & min_persistence) {
+ namespace po = boost::program_options;
+ po::options_description hidden("Hidden options");
+ hidden.add_options()
+ ("input-file", po::value<std::string>(&off_file_points),
+ "Name of an OFF file containing a point set.\n");
+
+ po::options_description visible("Allowed options", 100);
+ visible.add_options()
+ ("help,h", "produce help message")
+ ("output-file,o", po::value<std::string>(&filediag)->default_value(std::string()),
+ "Name of file in which the persistence diagram is written. Default print in std::cout")
+ ("max-edge-length,r",
+ po::value<Filtration_value>(&threshold)->default_value(std::numeric_limits<Filtration_value>::infinity()),
+ "Maximal length of an edge for the Rips complex construction.")
+ ("cpx-dimension,d", po::value<int>(&dim_max)->default_value(1),
+ "Maximal dimension of the Rips complex we want to compute.")
+ ("field-charac,p", po::value<int>(&p)->default_value(11),
+ "Characteristic p of the coefficient field Z/pZ for computing homology.")
+ ("min-persistence,m", po::value<Filtration_value>(&min_persistence),
+ "Minimal lifetime of homology feature to be recorded. Default is 0. Enter a negative value to see zero length intervals");
+
+ po::positional_options_description pos;
+ pos.add("input-file", 1);
+
+ po::options_description all;
+ all.add(visible).add(hidden);
+
+ po::variables_map vm;
+ po::store(po::command_line_parser(argc, argv).
+ options(all).positional(pos).run(), vm);
+ po::notify(vm);
+
+ if (vm.count("help") || !vm.count("input-file")) {
+ std::cout << std::endl;
+ std::cout << "Compute the persistent homology with coefficient field Z/pZ \n";
+ std::cout << "of a Rips complex defined on a set of input points.\n \n";
+ std::cout << "The output diagram contains one bar per line, written with the convention: \n";
+ std::cout << " p dim b d \n";
+ std::cout << "where dim is the dimension of the homological feature,\n";
+ std::cout << "b and d are respectively the birth and death of the feature and \n";
+ std::cout << "p is the characteristic of the field Z/pZ used for homology coefficients." << std::endl << std::endl;
+
+ std::cout << "Usage: " << argv[0] << " [options] input-file" << std::endl << std::endl;
+ std::cout << visible << std::endl;
+ std::abort();
+ }
+}
+
+/** Output the proximity graph of the points.
+ *
+ * If points contains n elements, the proximity graph is the graph
+ * with n vertices, and an edge [u,v] iff the distance function between
+ * points u and v is smaller than threshold.
+ *
+ * The type PointCloud furnishes .begin() and .end() methods, that return
+ * iterators with value_type Point.
+ */
+template< typename InputPointRange, typename Distance >
+Graph_t compute_proximity_graph(InputPointRange &points, Filtration_value threshold, Distance distance) {
+ std::vector< Edge_t > edges;
+ std::vector< Filtration_value > edges_fil;
+
+ Vertex_handle idx_u, idx_v;
+ Filtration_value fil;
+ idx_u = 0;
+ for (auto it_u = points.begin(); it_u != points.end(); ++it_u) {
+ idx_v = idx_u + 1;
+ for (auto it_v = it_u + 1; it_v != points.end(); ++it_v, ++idx_v) {
+ fil = distance(*it_u, *it_v);
+ if (fil <= threshold) {
+ edges.emplace_back(idx_u, idx_v);
+ edges_fil.push_back(fil);
+ }
+ }
+ ++idx_u;
+ }
+
+ Graph_t skel_graph(edges.begin()
+ , edges.end()
+ , edges_fil.begin()
+ , idx_u); // number of points labeled from 0 to idx_u-1
+
+ auto vertex_prop = boost::get(vertex_filtration_t(), skel_graph);
+
+ boost::graph_traits<Graph_t>::vertex_iterator vi, vi_end;
+ for (std::tie(vi, vi_end) = boost::vertices(skel_graph);
+ vi != vi_end; ++vi) {
+ boost::put(vertex_prop, *vi, 0.);
+ }
+
+ return skel_graph;
+}
diff --git a/src/Persistent_cohomology/example/rips_persistence_via_boundary_matrix.cpp b/src/Persistent_cohomology/example/rips_persistence_via_boundary_matrix.cpp
index 4c6656f5..63da9847 100644
--- a/src/Persistent_cohomology/example/rips_persistence_via_boundary_matrix.cpp
+++ b/src/Persistent_cohomology/example/rips_persistence_via_boundary_matrix.cpp
@@ -4,8 +4,7 @@
*
* Author(s): Clément Maria, Marc Glisse
*
- * Copyright (C) 2014 INRIA Sophia Antipolis-Méditerranée (France),
- * 2015 INRIA Saclay ÃŽle de France)
+ * Copyright (C) 2014 INRIA
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -21,12 +20,12 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#include <gudhi/reader_utils.h>
-#include <gudhi/graph_simplicial_complex.h>
-#include <gudhi/distance_functions.h>
#include <gudhi/Simplex_tree.h>
#include <gudhi/Persistent_cohomology.h>
+#include <gudhi/Rips_complex.h>
#include <gudhi/Hasse_complex.h>
+#include <gudhi/Points_off_io.h>
+#include <gudhi/distance_functions.h>
#include <boost/program_options.hpp>
@@ -44,14 +43,16 @@
// //
////////////////////////////////////////////////////////////////
-using namespace Gudhi;
-using namespace Gudhi::persistent_cohomology;
-
-typedef int Vertex_handle;
-typedef double Filtration_value;
+// Types definition
+using Simplex_tree = Gudhi::Simplex_tree<>;
+using Filtration_value = Simplex_tree::Filtration_value;
+using Rips_complex = Gudhi::rips_complex::Rips_complex<Filtration_value>;
+using Field_Zp = Gudhi::persistent_cohomology::Field_Zp;
+using Point = std::vector<double>;
+using Points_off_reader = Gudhi::Points_off_reader<Point>;
void program_options(int argc, char * argv[]
- , std::string & filepoints
+ , std::string & off_file_points
, std::string & filediag
, Filtration_value & threshold
, int & dim_max
@@ -59,30 +60,21 @@ void program_options(int argc, char * argv[]
, Filtration_value & min_persistence);
int main(int argc, char * argv[]) {
- std::string filepoints;
+ std::string off_file_points;
std::string filediag;
Filtration_value threshold;
int dim_max;
int p;
Filtration_value min_persistence;
- program_options(argc, argv, filepoints, filediag, threshold, dim_max, p, min_persistence);
-
- // Extract the points from the file filepoints
- typedef std::vector<double> Point_t;
- std::vector< Point_t > points;
- read_points(filepoints, points);
+ program_options(argc, argv, off_file_points, filediag, threshold, dim_max, p, min_persistence);
- // Compute the proximity graph of the points
- Graph_t prox_graph = compute_proximity_graph(points, threshold
- , euclidean_distance<Point_t>);
+ Points_off_reader off_reader(off_file_points);
+ Rips_complex rips_complex_from_file(off_reader.get_point_cloud(), threshold, Euclidean_distance());
// Construct the Rips complex in a Simplex Tree
- Simplex_tree<>& st = *new Simplex_tree<>;
- // insert the proximity graph in the simplex tree
- st.insert_graph(prox_graph);
- // expand the graph until dimension dim_max
- st.expansion(dim_max);
+ Simplex_tree& st = *new Simplex_tree;
+ rips_complex_from_file.create_complex(st, dim_max);
std::cout << "The complex contains " << st.num_simplices() << " simplices \n";
std::cout << " and has dimension " << st.dimension() << " \n";
@@ -99,7 +91,7 @@ int main(int argc, char * argv[]) {
st.assign_key(sh, count++);
// Convert to a more convenient representation.
- Hasse_complex<> hcpx(st);
+ Gudhi::Hasse_complex<> hcpx(st);
#ifdef GUDHI_USE_TBB
ts.terminate();
@@ -109,7 +101,7 @@ int main(int argc, char * argv[]) {
delete &st;
// Compute the persistence diagram of the complex
- persistent_cohomology::Persistent_cohomology< Hasse_complex<>, Field_Zp > pcoh(hcpx);
+ Gudhi::persistent_cohomology::Persistent_cohomology< Gudhi::Hasse_complex<>, Field_Zp > pcoh(hcpx);
// initializes the coefficient field for homology
pcoh.init_coefficients(p);
@@ -126,7 +118,7 @@ int main(int argc, char * argv[]) {
}
void program_options(int argc, char * argv[]
- , std::string & filepoints
+ , std::string & off_file_points
, std::string & filediag
, Filtration_value & threshold
, int & dim_max
@@ -135,7 +127,7 @@ void program_options(int argc, char * argv[]
namespace po = boost::program_options;
po::options_description hidden("Hidden options");
hidden.add_options()
- ("input-file", po::value<std::string>(&filepoints),
+ ("input-file", po::value<std::string>(&off_file_points),
"Name of file containing a point set. Format is one point per line: X1 ... Xd ");
po::options_description visible("Allowed options", 100);
diff --git a/src/Persistent_cohomology/include/gudhi/Persistent_cohomology.h b/src/Persistent_cohomology/include/gudhi/Persistent_cohomology.h
index 8e7901cc..672fda48 100644
--- a/src/Persistent_cohomology/include/gudhi/Persistent_cohomology.h
+++ b/src/Persistent_cohomology/include/gudhi/Persistent_cohomology.h
@@ -300,8 +300,7 @@ class Persistent_cohomology {
// with multiplicity. We used to sum the coefficients directly in
// annotations_in_boundary by using a map, we now do it later.
typedef std::pair<Column *, int> annotation_t;
- // Danger: not thread-safe!
- static std::vector<annotation_t> annotations_in_boundary;
+ thread_local std::vector<annotation_t> annotations_in_boundary;
annotations_in_boundary.clear();
int sign = 1 - 2 * (dim_sigma % 2); // \in {-1,1} provides the sign in the
// alternate sum in the boundary.
diff --git a/src/Persistent_cohomology/test/persistent_cohomology_unit_test_multi_field.cpp b/src/Persistent_cohomology/test/persistent_cohomology_unit_test_multi_field.cpp
index 703682e1..1a6e3296 100644
--- a/src/Persistent_cohomology/test/persistent_cohomology_unit_test_multi_field.cpp
+++ b/src/Persistent_cohomology/test/persistent_cohomology_unit_test_multi_field.cpp
@@ -21,7 +21,7 @@ using namespace boost::unit_test;
typedef Simplex_tree<> typeST;
-std::string test_rips_persistence(int min_coefficient, int max_coefficient, int min_persistence) {
+std::string test_rips_persistence(int min_coefficient, int max_coefficient, double min_persistence) {
// file name is given as parameter from CMakeLists.txt
const std::string inputFile(framework::master_test_suite().argv[1]);
@@ -74,7 +74,7 @@ void test_rips_persistence_in_dimension(int min_dimension, int max_dimension) {
std::cout << "********************************************************************" << std::endl;
std::cout << "TEST OF RIPS_PERSISTENT_COHOMOLOGY_MULTI_FIELD MIN_DIM=" << min_dimension << " MAX_DIM=" << max_dimension << " MIN_PERS=0" << std::endl;
- std::string str_rips_persistence = test_rips_persistence(min_dimension, max_dimension, static_cast<Filtration_value> (0.0));
+ std::string str_rips_persistence = test_rips_persistence(min_dimension, max_dimension, 0.0);
std::cout << "str_rips_persistence=" << str_rips_persistence << std::endl;
BOOST_CHECK(str_rips_persistence.find(value0) != std::string::npos); // Check found
diff --git a/src/Rips_complex/concept/Simplicial_complex_for_rips.h b/src/Rips_complex/concept/Simplicial_complex_for_rips.h
new file mode 100644
index 00000000..dc871177
--- /dev/null
+++ b/src/Rips_complex/concept/Simplicial_complex_for_rips.h
@@ -0,0 +1,55 @@
+/* This file is part of the Gudhi Library. The Gudhi library
+ * (Geometric Understanding in Higher Dimensions) is a generic C++
+ * library for computational topology.
+ *
+ * Author(s): Vincent Rouvreau
+ *
+ * Copyright (C) 2016 INRIA
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef CONCEPT_RIPS_COMPLEX_SIMPLICIAL_COMPLEX_FOR_RIPS_H_
+#define CONCEPT_RIPS_COMPLEX_SIMPLICIAL_COMPLEX_FOR_RIPS_H_
+
+namespace Gudhi {
+
+namespace rips_complex {
+
+/** \brief The concept SimplicialComplexForRips describes the requirements for a type to implement a simplicial
+ * complex, that can be created from a `Rips_complex`. The only available model for the moment is the `Simplex_tree`.
+ */
+struct SimplicialComplexForRips {
+ /** \brief Handle to specify the simplex filtration value. */
+ typedef unspecified Filtration_value;
+
+ /** \brief Inserts a given range `Gudhi::rips_complex::Rips_complex::OneSkeletonGraph` in the simplicial
+ * complex. */
+ template<class OneSkeletonGraph>
+ void insert_graph(const OneSkeletonGraph& skel_graph);
+
+ /** \brief Expands the simplicial complex containing only its one skeleton until a given maximal dimension as
+ * explained in \ref ripsdefinition. */
+ void expansion(int max_dim);
+
+ /** \brief Returns the number of vertices in the simplicial complex. */
+ std::size_t num_vertices();
+
+};
+
+} // namespace rips_complex
+
+} // namespace Gudhi
+
+#endif // CONCEPT_RIPS_COMPLEX_SIMPLICIAL_COMPLEX_FOR_RIPS_H_
diff --git a/src/Rips_complex/doc/Intro_rips_complex.h b/src/Rips_complex/doc/Intro_rips_complex.h
new file mode 100644
index 00000000..64fd34bc
--- /dev/null
+++ b/src/Rips_complex/doc/Intro_rips_complex.h
@@ -0,0 +1,152 @@
+/* This file is part of the Gudhi Library. The Gudhi library
+ * (Geometric Understanding in Higher Dimensions) is a generic C++
+ * library for computational topology.
+ *
+ * Author(s): Clément Maria, Pawel Dlotko, Vincent Rouvreau
+ *
+ * Copyright (C) 2016 INRIA
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef DOC_RIPS_COMPLEX_INTRO_RIPS_COMPLEX_H_
+#define DOC_RIPS_COMPLEX_INTRO_RIPS_COMPLEX_H_
+
+namespace Gudhi {
+
+namespace rips_complex {
+
+/** \defgroup rips_complex Rips complex
+ *
+ * \author Clément Maria, Pawel Dlotko, Vincent Rouvreau
+ *
+ * @{
+ *
+ * \section ripsdefinition Rips complex definition
+ *
+ * Rips_complex
+ * <a target="_blank" href="https://en.wikipedia.org/wiki/Vietoris%E2%80%93Rips_complex">(Wikipedia)</a> is a
+ * one skeleton graph that allows to construct a
+ * <a target="_blank" href="https://en.wikipedia.org/wiki/Simplicial_complex">simplicial complex</a>
+ * from it.
+ * The input can be a point cloud with a given distance function, or a distance matrix.
+ *
+ * The filtration value of each edge is computed from a user-given distance function, or directly from the distance
+ * matrix.
+ *
+ * All edges that have a filtration value strictly greater than a given threshold value are not inserted into
+ * the complex.
+ *
+ * When creating a simplicial complex from this one skeleton graph, rips inserts the one skeleton graph into the data
+ * structure, and then expands the simplicial when required.
+ *
+ * \image html "rips_complex_representation.png" "Rips-complex one skeleton graph representation"
+ *
+ * On this example, as edges (4,5), (4,6) and (5,6) are in the complex, simplex (4,5,6) is added with the filtration
+ * value set with \f$max(filtration(4,5), filtration(4,6), filtration(5,6))\f$.
+ * And so on for simplex (0,1,2,3).
+ *
+ * \section ripspointsdistance Point cloud and distance function
+ *
+ * \subsection ripspointscloudexample Example from a point cloud and a distance function
+ *
+ * This example builds the one skeleton graph from the given points, threshold value, and distance function.
+ * Then it creates a `Simplex_tree` with it.
+ *
+ * Then, it is asked to display information about the simplicial complex.
+ *
+ * \include Rips_complex/example_one_skeleton_rips_from_points.cpp
+ *
+ * When launching (rips maximal distance between 2 points is 12.0, is expanded until dimension 1 - one skeleton graph
+ * in other words):
+ *
+ * \code $> ./oneskeletonripspoints
+ * \endcode
+ *
+ * the program output is:
+ *
+ * \include Rips_complex/one_skeleton_rips_for_doc.txt
+ *
+ * \subsection ripsoffexample Example from OFF file
+ *
+ * This example builds the Rips_complex from the given points in an OFF file, threshold value, and distance
+ * function.
+ * Then it creates a `Simplex_tree` with it.
+ *
+ *
+ * Then, it is asked to display information about the rips complex.
+ *
+ * \include Rips_complex/example_rips_complex_from_off_file.cpp
+ *
+ * When launching:
+ *
+ * \code $> ./ripsoffreader ../../data/points/alphacomplexdoc.off 12.0 3
+ * \endcode
+ *
+ * the program output is:
+ *
+ * \include Rips_complex/full_skeleton_rips_for_doc.txt
+ *
+ *
+ *
+ * \section ripsdistancematrix Distance matrix
+ *
+ * \subsection ripsdistancematrixexample Example from a distance matrix
+ *
+ * This example builds the one skeleton graph from the given distance matrix and threshold value.
+ * Then it creates a `Simplex_tree` with it.
+ *
+ * Then, it is asked to display information about the simplicial complex.
+ *
+ * \include Rips_complex/example_one_skeleton_rips_from_distance_matrix.cpp
+ *
+ * When launching (rips maximal distance between 2 points is 1.0, is expanded until dimension 1 - one skeleton graph
+ * with other words):
+ *
+ * \code $> ./oneskeletonripsdistance
+ * \endcode
+ *
+ * the program output is:
+ *
+ * \include Rips_complex/one_skeleton_rips_for_doc.txt
+ *
+ * \subsection ripscsvdistanceexample Example from a distance matrix read in a csv file
+ *
+ * This example builds the one skeleton graph from the given distance matrix read in a csv file and threshold value.
+ * Then it creates a `Simplex_tree` with it.
+ *
+ *
+ * Then, it is asked to display information about the rips complex.
+ *
+ * \include Rips_complex/example_rips_complex_from_csv_distance_matrix_file.cpp
+ *
+ * When launching:
+ *
+ * \code $> ./ripscsvdistancereader ../../data/distance_matrix/full_square_distance_matrix.csv 1.0 3
+ * \endcode
+ *
+ * the program output is:
+ *
+ * \include Rips_complex/full_skeleton_rips_for_doc.txt
+ *
+ * \copyright GNU General Public License v3.
+ * \verbatim Contact: gudhi-users@lists.gforge.inria.fr \endverbatim
+ */
+/** @} */ // end defgroup rips_complex
+
+} // namespace rips_complex
+
+} // namespace Gudhi
+
+#endif // DOC_RIPS_COMPLEX_INTRO_RIPS_COMPLEX_H_
diff --git a/src/Rips_complex/doc/rips_complex_representation.ipe b/src/Rips_complex/doc/rips_complex_representation.ipe
new file mode 100644
index 00000000..7f6028f4
--- /dev/null
+++ b/src/Rips_complex/doc/rips_complex_representation.ipe
@@ -0,0 +1,326 @@
+<?xml version="1.0"?>
+<!DOCTYPE ipe SYSTEM "ipe.dtd">
+<ipe version="70107" creator="Ipe 7.1.10">
+<info created="D:20150603143945" modified="D:20160928121844"/>
+<ipestyle name="basic">
+<symbol name="arrow/arc(spx)">
+<path stroke="sym-stroke" fill="sym-stroke" pen="sym-pen">
+0 0 m
+-1 0.333 l
+-1 -0.333 l
+h
+</path>
+</symbol>
+<symbol name="arrow/farc(spx)">
+<path stroke="sym-stroke" fill="white" pen="sym-pen">
+0 0 m
+-1 0.333 l
+-1 -0.333 l
+h
+</path>
+</symbol>
+<symbol name="mark/circle(sx)" transformations="translations">
+<path fill="sym-stroke">
+0.6 0 0 0.6 0 0 e
+0.4 0 0 0.4 0 0 e
+</path>
+</symbol>
+<symbol name="mark/disk(sx)" transformations="translations">
+<path fill="sym-stroke">
+0.6 0 0 0.6 0 0 e
+</path>
+</symbol>
+<symbol name="mark/fdisk(sfx)" transformations="translations">
+<group>
+<path fill="sym-fill">
+0.5 0 0 0.5 0 0 e
+</path>
+<path fill="sym-stroke" fillrule="eofill">
+0.6 0 0 0.6 0 0 e
+0.4 0 0 0.4 0 0 e
+</path>
+</group>
+</symbol>
+<symbol name="mark/box(sx)" transformations="translations">
+<path fill="sym-stroke" fillrule="eofill">
+-0.6 -0.6 m
+0.6 -0.6 l
+0.6 0.6 l
+-0.6 0.6 l
+h
+-0.4 -0.4 m
+0.4 -0.4 l
+0.4 0.4 l
+-0.4 0.4 l
+h
+</path>
+</symbol>
+<symbol name="mark/square(sx)" transformations="translations">
+<path fill="sym-stroke">
+-0.6 -0.6 m
+0.6 -0.6 l
+0.6 0.6 l
+-0.6 0.6 l
+h
+</path>
+</symbol>
+<symbol name="mark/fsquare(sfx)" transformations="translations">
+<group>
+<path fill="sym-fill">
+-0.5 -0.5 m
+0.5 -0.5 l
+0.5 0.5 l
+-0.5 0.5 l
+h
+</path>
+<path fill="sym-stroke" fillrule="eofill">
+-0.6 -0.6 m
+0.6 -0.6 l
+0.6 0.6 l
+-0.6 0.6 l
+h
+-0.4 -0.4 m
+0.4 -0.4 l
+0.4 0.4 l
+-0.4 0.4 l
+h
+</path>
+</group>
+</symbol>
+<symbol name="mark/cross(sx)" transformations="translations">
+<group>
+<path fill="sym-stroke">
+-0.43 -0.57 m
+0.57 0.43 l
+0.43 0.57 l
+-0.57 -0.43 l
+h
+</path>
+<path fill="sym-stroke">
+-0.43 0.57 m
+0.57 -0.43 l
+0.43 -0.57 l
+-0.57 0.43 l
+h
+</path>
+</group>
+</symbol>
+<symbol name="arrow/fnormal(spx)">
+<path stroke="sym-stroke" fill="white" pen="sym-pen">
+0 0 m
+-1 0.333 l
+-1 -0.333 l
+h
+</path>
+</symbol>
+<symbol name="arrow/pointed(spx)">
+<path stroke="sym-stroke" fill="sym-stroke" pen="sym-pen">
+0 0 m
+-1 0.333 l
+-0.8 0 l
+-1 -0.333 l
+h
+</path>
+</symbol>
+<symbol name="arrow/fpointed(spx)">
+<path stroke="sym-stroke" fill="white" pen="sym-pen">
+0 0 m
+-1 0.333 l
+-0.8 0 l
+-1 -0.333 l
+h
+</path>
+</symbol>
+<symbol name="arrow/linear(spx)">
+<path stroke="sym-stroke" pen="sym-pen">
+-1 0.333 m
+0 0 l
+-1 -0.333 l
+</path>
+</symbol>
+<symbol name="arrow/fdouble(spx)">
+<path stroke="sym-stroke" fill="white" pen="sym-pen">
+0 0 m
+-1 0.333 l
+-1 -0.333 l
+h
+-1 0 m
+-2 0.333 l
+-2 -0.333 l
+h
+</path>
+</symbol>
+<symbol name="arrow/double(spx)">
+<path stroke="sym-stroke" fill="sym-stroke" pen="sym-pen">
+0 0 m
+-1 0.333 l
+-1 -0.333 l
+h
+-1 0 m
+-2 0.333 l
+-2 -0.333 l
+h
+</path>
+</symbol>
+<pen name="heavier" value="0.8"/>
+<pen name="fat" value="1.2"/>
+<pen name="ultrafat" value="2"/>
+<symbolsize name="large" value="5"/>
+<symbolsize name="small" value="2"/>
+<symbolsize name="tiny" value="1.1"/>
+<arrowsize name="large" value="10"/>
+<arrowsize name="small" value="5"/>
+<arrowsize name="tiny" value="3"/>
+<color name="red" value="1 0 0"/>
+<color name="green" value="0 1 0"/>
+<color name="blue" value="0 0 1"/>
+<color name="yellow" value="1 1 0"/>
+<color name="orange" value="1 0.647 0"/>
+<color name="gold" value="1 0.843 0"/>
+<color name="purple" value="0.627 0.125 0.941"/>
+<color name="gray" value="0.745"/>
+<color name="brown" value="0.647 0.165 0.165"/>
+<color name="navy" value="0 0 0.502"/>
+<color name="pink" value="1 0.753 0.796"/>
+<color name="seagreen" value="0.18 0.545 0.341"/>
+<color name="turquoise" value="0.251 0.878 0.816"/>
+<color name="violet" value="0.933 0.51 0.933"/>
+<color name="darkblue" value="0 0 0.545"/>
+<color name="darkcyan" value="0 0.545 0.545"/>
+<color name="darkgray" value="0.663"/>
+<color name="darkgreen" value="0 0.392 0"/>
+<color name="darkmagenta" value="0.545 0 0.545"/>
+<color name="darkorange" value="1 0.549 0"/>
+<color name="darkred" value="0.545 0 0"/>
+<color name="lightblue" value="0.678 0.847 0.902"/>
+<color name="lightcyan" value="0.878 1 1"/>
+<color name="lightgray" value="0.827"/>
+<color name="lightgreen" value="0.565 0.933 0.565"/>
+<color name="lightyellow" value="1 1 0.878"/>
+<dashstyle name="dashed" value="[4] 0"/>
+<dashstyle name="dotted" value="[1 3] 0"/>
+<dashstyle name="dash dotted" value="[4 2 1 2] 0"/>
+<dashstyle name="dash dot dotted" value="[4 2 1 2 1 2] 0"/>
+<textsize name="large" value="\large"/>
+<textsize name="small" value="\small"/>
+<textsize name="tiny" value="\tiny"/>
+<textsize name="Large" value="\Large"/>
+<textsize name="LARGE" value="\LARGE"/>
+<textsize name="huge" value="\huge"/>
+<textsize name="Huge" value="\Huge"/>
+<textsize name="footnote" value="\footnotesize"/>
+<textstyle name="center" begin="\begin{center}" end="\end{center}"/>
+<textstyle name="itemize" begin="\begin{itemize}" end="\end{itemize}"/>
+<textstyle name="item" begin="\begin{itemize}\item{}" end="\end{itemize}"/>
+<gridsize name="4 pts" value="4"/>
+<gridsize name="8 pts (~3 mm)" value="8"/>
+<gridsize name="16 pts (~6 mm)" value="16"/>
+<gridsize name="32 pts (~12 mm)" value="32"/>
+<gridsize name="10 pts (~3.5 mm)" value="10"/>
+<gridsize name="20 pts (~7 mm)" value="20"/>
+<gridsize name="14 pts (~5 mm)" value="14"/>
+<gridsize name="28 pts (~10 mm)" value="28"/>
+<gridsize name="56 pts (~20 mm)" value="56"/>
+<anglesize name="90 deg" value="90"/>
+<anglesize name="60 deg" value="60"/>
+<anglesize name="45 deg" value="45"/>
+<anglesize name="30 deg" value="30"/>
+<anglesize name="22.5 deg" value="22.5"/>
+<tiling name="falling" angle="-60" step="4" width="1"/>
+<tiling name="rising" angle="30" step="4" width="1"/>
+</ipestyle>
+<page>
+<layer name="alpha"/>
+<view layers="alpha" active="alpha"/>
+<path layer="alpha" matrix="1 0 0 1 0 -8" fill="darkblue">
+109.771 601.912 m
+159.595 601.797 l
+140.058 541.915 l
+h
+</path>
+<path matrix="1 0 0 1 0 -8" fill="darkblue">
+79.8776 552.169 m
+109.756 601.699 l
+139.812 542.209 l
+h
+</path>
+<path matrix="1 0 0 1 0 -8" fill="lightblue">
+69.8453 682.419 m
+159.925 712.208 l
+90.12 732.039 l
+h
+</path>
+<text matrix="1 0 0 1 -230.178 14.1775" transformations="translations" pos="380 530" stroke="seagreen" type="label" width="68.836" height="8.307" depth="2.32" valign="baseline" size="large">Rips complex</text>
+<text matrix="1 0 0 1 -212.333 10.6762" transformations="translations" pos="282.952 524.893" stroke="black" type="label" width="4.981" height="6.42" depth="0" valign="baseline">0</text>
+<text matrix="1 0 0 1 -210.178 14.1775" transformations="translations" pos="352.708 510.349" stroke="black" type="label" width="4.981" height="6.42" depth="0" valign="baseline">1</text>
+<text matrix="1 0 0 1 -210.178 14.1775" transformations="translations" pos="310.693 578.759" stroke="black" type="label" width="4.981" height="6.42" depth="0" valign="baseline">2</text>
+<text matrix="1 0 0 1 -210.178 14.1775" transformations="translations" pos="375.332 578.49" stroke="black" type="label" width="4.981" height="6.42" depth="0" valign="baseline">3</text>
+<text matrix="1 0 0 1 -210.178 14.1775" transformations="translations" pos="272.179 660.635" stroke="black" type="label" width="4.981" height="6.42" depth="0" valign="baseline">4</text>
+<text matrix="1 0 0 1 -209.478 4.0238" transformations="translations" pos="296.419 724.197" stroke="black" type="label" width="4.981" height="6.42" depth="0" valign="baseline">5</text>
+<text matrix="1 0 0 1 -210.178 14.1775" transformations="translations" pos="375.332 689.453" stroke="black" type="label" width="4.981" height="6.42" depth="0" valign="baseline">6</text>
+<path matrix="1 0 0 1 29.8225 14.1775" stroke="black" pen="heavier">
+60 710 m
+40 660 l
+</path>
+<path matrix="1 0 0 1 29.8225 14.1775" stroke="black" pen="heavier">
+40 660 m
+130 690 l
+</path>
+<path matrix="1 0 0 1 29.8225 14.1775" stroke="black" pen="heavier">
+130 690 m
+60 710 l
+</path>
+<path matrix="1 0 0 1 29.8225 14.1775" stroke="black" pen="heavier">
+40 660 m
+80 580 l
+</path>
+<path matrix="1 0 0 1 29.8225 14.1775" stroke="black" pen="heavier">
+80 580 m
+130 580 l
+130 580 l
+</path>
+<path matrix="1 0 0 1 29.8225 14.1775" stroke="black" pen="heavier">
+130 580 m
+110 520 l
+</path>
+<path matrix="1 0 0 1 29.8225 14.1775" stroke="black" pen="heavier">
+110 520 m
+50 530 l
+50 530 l
+50 530 l
+</path>
+<path matrix="1 0 0 1 29.8225 14.1775" stroke="black" pen="heavier">
+50 530 m
+80 580 l
+</path>
+<path matrix="1 0 0 1 29.8225 14.1775" stroke="black" pen="heavier">
+130 580 m
+130 690 l
+</path>
+<use matrix="1 0 0 1 -209.478 4.0238" name="mark/fdisk(sfx)" pos="300 720" size="normal" stroke="black" fill="white"/>
+<use matrix="1 0 0 1 -210.178 14.1775" name="mark/fdisk(sfx)" pos="280 660" size="normal" stroke="black" fill="white"/>
+<use matrix="1 0 0 1 -210.178 14.1775" name="mark/fdisk(sfx)" pos="370 690" size="normal" stroke="black" fill="white"/>
+<use matrix="1 0 0 1 -210.178 14.1775" name="mark/fdisk(sfx)" pos="370 580" size="normal" stroke="black" fill="white"/>
+<use matrix="1 0 0 1 -210.178 14.1775" name="mark/fdisk(sfx)" pos="290 530" size="normal" stroke="black" fill="white"/>
+<path matrix="1 0 0 1 -40 -16" stroke="black" pen="heavier">
+150.038 609.9 m
+179.929 549.727 l
+</path>
+<use matrix="1 0 0 1 -210.178 14.1775" name="mark/fdisk(sfx)" pos="320 580" size="normal" stroke="black" fill="white"/>
+<use matrix="1 0 0 1 -210.178 14.1775" name="mark/fdisk(sfx)" pos="350 520" size="normal" stroke="black" fill="white"/>
+<path stroke="black" pen="heavier">
+158.7 593.269 m
+81.4925 544.805 l
+</path>
+<path matrix="1 0 0 1 -17.9662 -17.9662" stroke="gray">
+256.324 639.958 m
+370.055 639.958 l
+</path>
+<path matrix="1 0 0 1 -17.9662 -17.9662" stroke="gray">
+56.8567 0 0 56.8567 313.217 639.756 e
+</path>
+<use matrix="1 0 0 1 52.1387 -98.0941" name="mark/fdisk(sfx)" pos="300 720" size="normal" stroke="gray" fill="white"/>
+<use matrix="1 0 0 1 -61.4926 -98.0942" name="mark/fdisk(sfx)" pos="300 720" size="normal" stroke="gray" fill="white"/>
+<text matrix="1 0 0 1 -26.6167 -33.2708" transformations="translations" pos="295.735 657.944" stroke="gray" type="label" width="63.374" height="6.926" depth="1.93" valign="baseline">Rips threshold</text>
+</page>
+</ipe>
diff --git a/src/Rips_complex/doc/rips_complex_representation.png b/src/Rips_complex/doc/rips_complex_representation.png
new file mode 100644
index 00000000..e901d92e
--- /dev/null
+++ b/src/Rips_complex/doc/rips_complex_representation.png
Binary files differ
diff --git a/src/Rips_complex/doc/rips_one_skeleton.ipe b/src/Rips_complex/doc/rips_one_skeleton.ipe
new file mode 100644
index 00000000..3a35970c
--- /dev/null
+++ b/src/Rips_complex/doc/rips_one_skeleton.ipe
@@ -0,0 +1,326 @@
+<?xml version="1.0"?>
+<!DOCTYPE ipe SYSTEM "ipe.dtd">
+<ipe version="70107" creator="Ipe 7.1.10">
+<info created="D:20150603143945" modified="D:20160928130224"/>
+<ipestyle name="basic">
+<symbol name="arrow/arc(spx)">
+<path stroke="sym-stroke" fill="sym-stroke" pen="sym-pen">
+0 0 m
+-1 0.333 l
+-1 -0.333 l
+h
+</path>
+</symbol>
+<symbol name="arrow/farc(spx)">
+<path stroke="sym-stroke" fill="white" pen="sym-pen">
+0 0 m
+-1 0.333 l
+-1 -0.333 l
+h
+</path>
+</symbol>
+<symbol name="mark/circle(sx)" transformations="translations">
+<path fill="sym-stroke">
+0.6 0 0 0.6 0 0 e
+0.4 0 0 0.4 0 0 e
+</path>
+</symbol>
+<symbol name="mark/disk(sx)" transformations="translations">
+<path fill="sym-stroke">
+0.6 0 0 0.6 0 0 e
+</path>
+</symbol>
+<symbol name="mark/fdisk(sfx)" transformations="translations">
+<group>
+<path fill="sym-fill">
+0.5 0 0 0.5 0 0 e
+</path>
+<path fill="sym-stroke" fillrule="eofill">
+0.6 0 0 0.6 0 0 e
+0.4 0 0 0.4 0 0 e
+</path>
+</group>
+</symbol>
+<symbol name="mark/box(sx)" transformations="translations">
+<path fill="sym-stroke" fillrule="eofill">
+-0.6 -0.6 m
+0.6 -0.6 l
+0.6 0.6 l
+-0.6 0.6 l
+h
+-0.4 -0.4 m
+0.4 -0.4 l
+0.4 0.4 l
+-0.4 0.4 l
+h
+</path>
+</symbol>
+<symbol name="mark/square(sx)" transformations="translations">
+<path fill="sym-stroke">
+-0.6 -0.6 m
+0.6 -0.6 l
+0.6 0.6 l
+-0.6 0.6 l
+h
+</path>
+</symbol>
+<symbol name="mark/fsquare(sfx)" transformations="translations">
+<group>
+<path fill="sym-fill">
+-0.5 -0.5 m
+0.5 -0.5 l
+0.5 0.5 l
+-0.5 0.5 l
+h
+</path>
+<path fill="sym-stroke" fillrule="eofill">
+-0.6 -0.6 m
+0.6 -0.6 l
+0.6 0.6 l
+-0.6 0.6 l
+h
+-0.4 -0.4 m
+0.4 -0.4 l
+0.4 0.4 l
+-0.4 0.4 l
+h
+</path>
+</group>
+</symbol>
+<symbol name="mark/cross(sx)" transformations="translations">
+<group>
+<path fill="sym-stroke">
+-0.43 -0.57 m
+0.57 0.43 l
+0.43 0.57 l
+-0.57 -0.43 l
+h
+</path>
+<path fill="sym-stroke">
+-0.43 0.57 m
+0.57 -0.43 l
+0.43 -0.57 l
+-0.57 0.43 l
+h
+</path>
+</group>
+</symbol>
+<symbol name="arrow/fnormal(spx)">
+<path stroke="sym-stroke" fill="white" pen="sym-pen">
+0 0 m
+-1 0.333 l
+-1 -0.333 l
+h
+</path>
+</symbol>
+<symbol name="arrow/pointed(spx)">
+<path stroke="sym-stroke" fill="sym-stroke" pen="sym-pen">
+0 0 m
+-1 0.333 l
+-0.8 0 l
+-1 -0.333 l
+h
+</path>
+</symbol>
+<symbol name="arrow/fpointed(spx)">
+<path stroke="sym-stroke" fill="white" pen="sym-pen">
+0 0 m
+-1 0.333 l
+-0.8 0 l
+-1 -0.333 l
+h
+</path>
+</symbol>
+<symbol name="arrow/linear(spx)">
+<path stroke="sym-stroke" pen="sym-pen">
+-1 0.333 m
+0 0 l
+-1 -0.333 l
+</path>
+</symbol>
+<symbol name="arrow/fdouble(spx)">
+<path stroke="sym-stroke" fill="white" pen="sym-pen">
+0 0 m
+-1 0.333 l
+-1 -0.333 l
+h
+-1 0 m
+-2 0.333 l
+-2 -0.333 l
+h
+</path>
+</symbol>
+<symbol name="arrow/double(spx)">
+<path stroke="sym-stroke" fill="sym-stroke" pen="sym-pen">
+0 0 m
+-1 0.333 l
+-1 -0.333 l
+h
+-1 0 m
+-2 0.333 l
+-2 -0.333 l
+h
+</path>
+</symbol>
+<pen name="heavier" value="0.8"/>
+<pen name="fat" value="1.2"/>
+<pen name="ultrafat" value="2"/>
+<symbolsize name="large" value="5"/>
+<symbolsize name="small" value="2"/>
+<symbolsize name="tiny" value="1.1"/>
+<arrowsize name="large" value="10"/>
+<arrowsize name="small" value="5"/>
+<arrowsize name="tiny" value="3"/>
+<color name="red" value="1 0 0"/>
+<color name="green" value="0 1 0"/>
+<color name="blue" value="0 0 1"/>
+<color name="yellow" value="1 1 0"/>
+<color name="orange" value="1 0.647 0"/>
+<color name="gold" value="1 0.843 0"/>
+<color name="purple" value="0.627 0.125 0.941"/>
+<color name="gray" value="0.745"/>
+<color name="brown" value="0.647 0.165 0.165"/>
+<color name="navy" value="0 0 0.502"/>
+<color name="pink" value="1 0.753 0.796"/>
+<color name="seagreen" value="0.18 0.545 0.341"/>
+<color name="turquoise" value="0.251 0.878 0.816"/>
+<color name="violet" value="0.933 0.51 0.933"/>
+<color name="darkblue" value="0 0 0.545"/>
+<color name="darkcyan" value="0 0.545 0.545"/>
+<color name="darkgray" value="0.663"/>
+<color name="darkgreen" value="0 0.392 0"/>
+<color name="darkmagenta" value="0.545 0 0.545"/>
+<color name="darkorange" value="1 0.549 0"/>
+<color name="darkred" value="0.545 0 0"/>
+<color name="lightblue" value="0.678 0.847 0.902"/>
+<color name="lightcyan" value="0.878 1 1"/>
+<color name="lightgray" value="0.827"/>
+<color name="lightgreen" value="0.565 0.933 0.565"/>
+<color name="lightyellow" value="1 1 0.878"/>
+<dashstyle name="dashed" value="[4] 0"/>
+<dashstyle name="dotted" value="[1 3] 0"/>
+<dashstyle name="dash dotted" value="[4 2 1 2] 0"/>
+<dashstyle name="dash dot dotted" value="[4 2 1 2 1 2] 0"/>
+<textsize name="large" value="\large"/>
+<textsize name="small" value="\small"/>
+<textsize name="tiny" value="\tiny"/>
+<textsize name="Large" value="\Large"/>
+<textsize name="LARGE" value="\LARGE"/>
+<textsize name="huge" value="\huge"/>
+<textsize name="Huge" value="\Huge"/>
+<textsize name="footnote" value="\footnotesize"/>
+<textstyle name="center" begin="\begin{center}" end="\end{center}"/>
+<textstyle name="itemize" begin="\begin{itemize}" end="\end{itemize}"/>
+<textstyle name="item" begin="\begin{itemize}\item{}" end="\end{itemize}"/>
+<gridsize name="4 pts" value="4"/>
+<gridsize name="8 pts (~3 mm)" value="8"/>
+<gridsize name="16 pts (~6 mm)" value="16"/>
+<gridsize name="32 pts (~12 mm)" value="32"/>
+<gridsize name="10 pts (~3.5 mm)" value="10"/>
+<gridsize name="20 pts (~7 mm)" value="20"/>
+<gridsize name="14 pts (~5 mm)" value="14"/>
+<gridsize name="28 pts (~10 mm)" value="28"/>
+<gridsize name="56 pts (~20 mm)" value="56"/>
+<anglesize name="90 deg" value="90"/>
+<anglesize name="60 deg" value="60"/>
+<anglesize name="45 deg" value="45"/>
+<anglesize name="30 deg" value="30"/>
+<anglesize name="22.5 deg" value="22.5"/>
+<tiling name="falling" angle="-60" step="4" width="1"/>
+<tiling name="rising" angle="30" step="4" width="1"/>
+</ipestyle>
+<page>
+<layer name="alpha"/>
+<view layers="alpha" active="alpha"/>
+<path layer="alpha" matrix="1 0 0 1 0 -8" stroke="0">
+109.771 601.912 m
+159.595 601.797 l
+140.058 541.915 l
+h
+</path>
+<path matrix="1 0 0 1 0 -8" stroke="0">
+79.8776 552.169 m
+109.756 601.699 l
+139.812 542.209 l
+h
+</path>
+<path matrix="1 0 0 1 0.665417 -8.66542" stroke="0">
+69.8453 682.419 m
+159.925 712.208 l
+90.12 732.039 l
+h
+</path>
+<text matrix="1 0 0 1 -230.178 14.1775" transformations="translations" pos="380 530" stroke="seagreen" type="label" width="98.916" height="8.307" depth="2.32" valign="baseline" size="large">One skeleton graph</text>
+<text matrix="1 0 0 1 -212.333 10.6762" transformations="translations" pos="282.952 524.893" stroke="black" type="label" width="4.981" height="6.42" depth="0" valign="baseline">0</text>
+<text matrix="1 0 0 1 -210.178 14.1775" transformations="translations" pos="352.708 510.349" stroke="black" type="label" width="4.981" height="6.42" depth="0" valign="baseline">1</text>
+<text matrix="1 0 0 1 -210.178 14.1775" transformations="translations" pos="310.693 578.759" stroke="black" type="label" width="4.981" height="6.42" depth="0" valign="baseline">2</text>
+<text matrix="1 0 0 1 -210.178 14.1775" transformations="translations" pos="375.332 578.49" stroke="black" type="label" width="4.981" height="6.42" depth="0" valign="baseline">3</text>
+<text matrix="1 0 0 1 -210.178 14.1775" transformations="translations" pos="272.179 660.635" stroke="black" type="label" width="4.981" height="6.42" depth="0" valign="baseline">4</text>
+<text matrix="1 0 0 1 -209.478 4.0238" transformations="translations" pos="296.419 724.197" stroke="black" type="label" width="4.981" height="6.42" depth="0" valign="baseline">5</text>
+<text matrix="1 0 0 1 -210.178 14.1775" transformations="translations" pos="375.332 689.453" stroke="black" type="label" width="4.981" height="6.42" depth="0" valign="baseline">6</text>
+<path matrix="1 0 0 1 30.6497 14.0396" stroke="black" pen="heavier">
+60 710 m
+40 660 l
+</path>
+<path matrix="1 0 0 1 30.3739 13.9018" stroke="black" pen="heavier">
+40 660 m
+130 690 l
+</path>
+<path matrix="1 0 0 1 29.8225 14.1775" stroke="black" pen="heavier">
+130 690 m
+60 710 l
+</path>
+<path matrix="1 0 0 1 29.8225 14.1775" stroke="black" pen="heavier">
+40 660 m
+80 580 l
+</path>
+<path matrix="1 0 0 1 29.8225 14.1775" stroke="black" pen="heavier">
+80 580 m
+130 580 l
+130 580 l
+</path>
+<path matrix="1 0 0 1 29.8225 14.1775" stroke="black" pen="heavier">
+130 580 m
+110 520 l
+</path>
+<path matrix="1 0 0 1 29.8225 14.1775" stroke="black" pen="heavier">
+110 520 m
+50 530 l
+50 530 l
+50 530 l
+</path>
+<path matrix="1 0 0 1 29.8225 14.1775" stroke="black" pen="heavier">
+50 530 m
+80 580 l
+</path>
+<path matrix="1 0 0 1 29.8225 14.1775" stroke="black" pen="heavier">
+130 580 m
+130 690 l
+</path>
+<use matrix="1 0 0 1 -209.478 4.0238" name="mark/fdisk(sfx)" pos="300 720" size="normal" stroke="black" fill="white"/>
+<use matrix="1 0 0 1 -210.178 14.1775" name="mark/fdisk(sfx)" pos="280 660" size="normal" stroke="black" fill="white"/>
+<use matrix="1 0 0 1 -210.178 14.1775" name="mark/fdisk(sfx)" pos="370 690" size="normal" stroke="black" fill="white"/>
+<use matrix="1 0 0 1 -210.178 14.1775" name="mark/fdisk(sfx)" pos="370 580" size="normal" stroke="black" fill="white"/>
+<use matrix="1 0 0 1 -210.178 14.1775" name="mark/fdisk(sfx)" pos="290 530" size="normal" stroke="black" fill="white"/>
+<path matrix="1 0 0 1 -40 -16" stroke="black" pen="heavier">
+150.038 609.9 m
+179.929 549.727 l
+</path>
+<use matrix="1 0 0 1 -210.178 14.1775" name="mark/fdisk(sfx)" pos="320 580" size="normal" stroke="black" fill="white"/>
+<use matrix="1 0 0 1 -210.178 14.1775" name="mark/fdisk(sfx)" pos="350 520" size="normal" stroke="black" fill="white"/>
+<path stroke="black" pen="heavier">
+158.7 593.269 m
+81.4925 544.805 l
+</path>
+<path matrix="1 0 0 1 -17.9662 -17.9662" stroke="gray">
+256.324 639.958 m
+370.055 639.958 l
+</path>
+<path matrix="1 0 0 1 -17.9662 -17.9662" stroke="gray">
+56.8567 0 0 56.8567 313.217 639.756 e
+</path>
+<use matrix="1 0 0 1 52.1387 -98.0941" name="mark/fdisk(sfx)" pos="300 720" size="normal" stroke="gray" fill="white"/>
+<use matrix="1 0 0 1 -61.4926 -98.0942" name="mark/fdisk(sfx)" pos="300 720" size="normal" stroke="gray" fill="white"/>
+<text matrix="1 0 0 1 -26.6167 -33.2708" transformations="translations" pos="295.735 657.944" stroke="gray" type="label" width="63.374" height="6.926" depth="1.93" valign="baseline">Rips threshold</text>
+</page>
+</ipe>
diff --git a/src/Rips_complex/doc/rips_one_skeleton.png b/src/Rips_complex/doc/rips_one_skeleton.png
new file mode 100644
index 00000000..1028770e
--- /dev/null
+++ b/src/Rips_complex/doc/rips_one_skeleton.png
Binary files differ
diff --git a/src/Rips_complex/example/CMakeLists.txt b/src/Rips_complex/example/CMakeLists.txt
new file mode 100644
index 00000000..070ac710
--- /dev/null
+++ b/src/Rips_complex/example/CMakeLists.txt
@@ -0,0 +1,47 @@
+cmake_minimum_required(VERSION 2.6)
+project(Rips_complex_examples)
+
+# Point cloud
+add_executable ( ripsoffreader example_rips_complex_from_off_file.cpp )
+target_link_libraries(ripsoffreader ${Boost_SYSTEM_LIBRARY})
+
+add_executable ( oneskeletonripspoints example_one_skeleton_rips_from_points.cpp )
+target_link_libraries(oneskeletonripspoints ${Boost_SYSTEM_LIBRARY})
+
+# Distance matrix
+add_executable ( oneskeletonripsdistance example_one_skeleton_rips_from_distance_matrix.cpp )
+target_link_libraries(oneskeletonripsdistance ${Boost_SYSTEM_LIBRARY})
+
+add_executable ( ripscsvdistancereader example_rips_complex_from_csv_distance_matrix_file.cpp )
+target_link_libraries(ripscsvdistancereader ${Boost_SYSTEM_LIBRARY})
+
+if (TBB_FOUND)
+ target_link_libraries(ripsoffreader ${TBB_LIBRARIES})
+ target_link_libraries(oneskeletonripspoints ${TBB_LIBRARIES})
+ target_link_libraries(oneskeletonripsdistance ${TBB_LIBRARIES})
+ target_link_libraries(ripscsvdistancereader ${TBB_LIBRARIES})
+endif()
+
+add_test(oneskeletonripspoints ${CMAKE_CURRENT_BINARY_DIR}/oneskeletonripspoints)
+add_test(oneskeletonripsdistance ${CMAKE_CURRENT_BINARY_DIR}/oneskeletonripsdistance)
+
+# Do not forget to copy test files in current binary dir
+file(COPY "${CMAKE_SOURCE_DIR}/data/points/alphacomplexdoc.off" DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/)
+add_test(ripsoffreader_doc_12_1 ${CMAKE_CURRENT_BINARY_DIR}/ripsoffreader alphacomplexdoc.off 12.0 1 ${CMAKE_CURRENT_BINARY_DIR}/ripsoffreader_result_12_1.txt)
+add_test(ripsoffreader_doc_12_3 ${CMAKE_CURRENT_BINARY_DIR}/ripsoffreader alphacomplexdoc.off 12.0 3 ${CMAKE_CURRENT_BINARY_DIR}/ripsoffreader_result_12_3.txt)
+
+file(COPY "${CMAKE_SOURCE_DIR}/data/distance_matrix/full_square_distance_matrix.csv" DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/)
+add_test(ripscsvdistancereader_doc_12_1 ${CMAKE_CURRENT_BINARY_DIR}/ripscsvdistancereader full_square_distance_matrix.csv 12.0 1 ${CMAKE_CURRENT_BINARY_DIR}/ripscsvreader_result_12_1.txt)
+add_test(ripscsvdistancereader_doc_12_3 ${CMAKE_CURRENT_BINARY_DIR}/ripscsvdistancereader full_square_distance_matrix.csv 12.0 3 ${CMAKE_CURRENT_BINARY_DIR}/ripscsvreader_result_12_3.txt)
+
+
+if (DIFF_PATH)
+ # Do not forget to copy test results files in current binary dir
+ file(COPY "one_skeleton_rips_for_doc.txt" DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/)
+ file(COPY "full_skeleton_rips_for_doc.txt" DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/)
+
+ add_test(ripsoffreader_doc_12_1_diff_files ${DIFF_PATH} ${CMAKE_CURRENT_BINARY_DIR}/ripsoffreader_result_12_1.txt ${CMAKE_CURRENT_BINARY_DIR}/one_skeleton_rips_for_doc.txt)
+ add_test(ripsoffreader_doc_12_3_diff_files ${DIFF_PATH} ${CMAKE_CURRENT_BINARY_DIR}/ripsoffreader_result_12_3.txt ${CMAKE_CURRENT_BINARY_DIR}/full_skeleton_rips_for_doc.txt)
+ add_test(ripscsvreader_doc_12_1_diff_files ${DIFF_PATH} ${CMAKE_CURRENT_BINARY_DIR}/ripscsvreader_result_12_1.txt ${CMAKE_CURRENT_BINARY_DIR}/one_skeleton_rips_for_doc.txt)
+ add_test(ripscsvreader_doc_12_3_diff_files ${DIFF_PATH} ${CMAKE_CURRENT_BINARY_DIR}/ripscsvreader_result_12_3.txt ${CMAKE_CURRENT_BINARY_DIR}/full_skeleton_rips_for_doc.txt)
+endif()
diff --git a/src/Rips_complex/example/example_one_skeleton_rips_from_distance_matrix.cpp b/src/Rips_complex/example/example_one_skeleton_rips_from_distance_matrix.cpp
new file mode 100644
index 00000000..90bd8e38
--- /dev/null
+++ b/src/Rips_complex/example/example_one_skeleton_rips_from_distance_matrix.cpp
@@ -0,0 +1,58 @@
+#include <gudhi/Rips_complex.h>
+#include <gudhi/Simplex_tree.h>
+#include <gudhi/distance_functions.h>
+
+#include <iostream>
+#include <string>
+#include <vector>
+#include <limits> // for std::numeric_limits
+
+int main() {
+ // Type definitions
+ using Simplex_tree = Gudhi::Simplex_tree<>;
+ using Filtration_value = Simplex_tree::Filtration_value;
+ using Rips_complex = Gudhi::rips_complex::Rips_complex<Filtration_value>;
+ using Distance_matrix = std::vector<std::vector<Filtration_value>>;
+
+ // User defined distance matrix is:
+ // | 0 0.94 0.77 0.99 0.11 |
+ // | 0.94 0 0.26 0.99 0.39 |
+ // | 0.77 0.26 0 0.28 0.97 |
+ // | 0.99 0.99 0.28 0 0.30 |
+ // | 0.11 0.39 0.97 0.30 0 |
+
+ Distance_matrix distances;
+ distances.push_back({});
+ distances.push_back({0.94});
+ distances.push_back({0.77, 0.26});
+ distances.push_back({0.99, 0.99, 0.28});
+ distances.push_back({0.11, 0.39, 0.97, 0.30});
+
+ // ----------------------------------------------------------------------------
+ // Init of a rips complex from points
+ // ----------------------------------------------------------------------------
+ double threshold = 1.0;
+ Rips_complex rips_complex_from_points(distances, threshold);
+
+ Simplex_tree stree;
+ rips_complex_from_points.create_complex(stree, 1);
+ // ----------------------------------------------------------------------------
+ // Display information about the one skeleton rips complex
+ // ----------------------------------------------------------------------------
+ std::cout << "Rips complex is of dimension " << stree.dimension() <<
+ " - " << stree.num_simplices() << " simplices - " <<
+ stree.num_vertices() << " vertices." << std::endl;
+
+ std::cout << "Iterator on rips complex simplices in the filtration order, with [filtration value]:" <<
+ std::endl;
+ for (auto f_simplex : stree.filtration_simplex_range()) {
+ std::cout << " ( ";
+ for (auto vertex : stree.simplex_vertex_range(f_simplex)) {
+ std::cout << vertex << " ";
+ }
+ std::cout << ") -> " << "[" << stree.filtration(f_simplex) << "] ";
+ std::cout << std::endl;
+ }
+
+ return 0;
+}
diff --git a/src/Rips_complex/example/example_one_skeleton_rips_from_points.cpp b/src/Rips_complex/example/example_one_skeleton_rips_from_points.cpp
new file mode 100644
index 00000000..5d1216a0
--- /dev/null
+++ b/src/Rips_complex/example/example_one_skeleton_rips_from_points.cpp
@@ -0,0 +1,52 @@
+#include <gudhi/Rips_complex.h>
+#include <gudhi/Simplex_tree.h>
+#include <gudhi/distance_functions.h>
+
+#include <iostream>
+#include <string>
+#include <vector>
+#include <limits> // for std::numeric_limits
+
+int main() {
+ // Type definitions
+ using Point = std::vector<double>;
+ using Simplex_tree = Gudhi::Simplex_tree<Gudhi::Simplex_tree_options_fast_persistence>;
+ using Filtration_value = Simplex_tree::Filtration_value;
+ using Rips_complex = Gudhi::rips_complex::Rips_complex<Filtration_value>;
+
+ std::vector<Point> points;
+ points.push_back({1.0, 1.0});
+ points.push_back({7.0, 0.0});
+ points.push_back({4.0, 6.0});
+ points.push_back({9.0, 6.0});
+ points.push_back({0.0, 14.0});
+ points.push_back({2.0, 19.0});
+ points.push_back({9.0, 17.0});
+
+ // ----------------------------------------------------------------------------
+ // Init of a rips complex from points
+ // ----------------------------------------------------------------------------
+ double threshold = 12.0;
+ Rips_complex rips_complex_from_points(points, threshold, Euclidean_distance());
+
+ Simplex_tree stree;
+ rips_complex_from_points.create_complex(stree, 1);
+ // ----------------------------------------------------------------------------
+ // Display information about the one skeleton rips complex
+ // ----------------------------------------------------------------------------
+ std::cout << "Rips complex is of dimension " << stree.dimension() <<
+ " - " << stree.num_simplices() << " simplices - " <<
+ stree.num_vertices() << " vertices." << std::endl;
+
+ std::cout << "Iterator on rips complex simplices in the filtration order, with [filtration value]:" <<
+ std::endl;
+ for (auto f_simplex : stree.filtration_simplex_range()) {
+ std::cout << " ( ";
+ for (auto vertex : stree.simplex_vertex_range(f_simplex)) {
+ std::cout << vertex << " ";
+ }
+ std::cout << ") -> " << "[" << stree.filtration(f_simplex) << "] ";
+ std::cout << std::endl;
+ }
+ return 0;
+}
diff --git a/src/Rips_complex/example/example_rips_complex_from_csv_distance_matrix_file.cpp b/src/Rips_complex/example/example_rips_complex_from_csv_distance_matrix_file.cpp
new file mode 100644
index 00000000..cc6c3a33
--- /dev/null
+++ b/src/Rips_complex/example/example_rips_complex_from_csv_distance_matrix_file.cpp
@@ -0,0 +1,72 @@
+#include <gudhi/Rips_complex.h>
+// to construct Rips_complex from a OFF file of points
+#include <gudhi/reader_utils.h>
+#include <gudhi/Simplex_tree.h>
+#include <gudhi/distance_functions.h>
+
+#include <iostream>
+#include <string>
+#include <vector>
+
+void usage(int nbArgs, char * const progName) {
+ std::cerr << "Error: Number of arguments (" << nbArgs << ") is not correct\n";
+ std::cerr << "Usage: " << progName << " filename.csv threshold dim_max [ouput_file.txt]\n";
+ std::cerr << " i.e.: " << progName << " ../../data/distance_matrix/full_square_distance_matrix.csv 1.0 3\n";
+ exit(-1); // ----- >>
+}
+
+int main(int argc, char **argv) {
+ if ((argc != 4) && (argc != 5)) usage(argc, (argv[0] - 1));
+
+ std::string csv_file_name(argv[1]);
+ double threshold = atof(argv[2]);
+ int dim_max = atoi(argv[3]);
+
+ // Type definitions
+ using Simplex_tree = Gudhi::Simplex_tree<>;
+ using Filtration_value = Simplex_tree::Filtration_value;
+ using Rips_complex = Gudhi::rips_complex::Rips_complex<Filtration_value>;
+ using Distance_matrix = std::vector<std::vector<Filtration_value>>;
+
+ // ----------------------------------------------------------------------------
+ // Init of a rips complex from a distance matrix in a csv file
+ // Default separator is ';'
+ // ----------------------------------------------------------------------------
+ Distance_matrix distances = read_lower_triangular_matrix_from_csv_file<Filtration_value>(csv_file_name);
+ Rips_complex rips_complex_from_file(distances, threshold);
+
+ std::streambuf* streambufffer;
+ std::ofstream ouput_file_stream;
+
+ if (argc == 5) {
+ ouput_file_stream.open(std::string(argv[4]));
+ streambufffer = ouput_file_stream.rdbuf();
+ } else {
+ streambufffer = std::cout.rdbuf();
+ }
+
+ Simplex_tree stree;
+ rips_complex_from_file.create_complex(stree, dim_max);
+ std::ostream output_stream(streambufffer);
+
+ // ----------------------------------------------------------------------------
+ // Display information about the rips complex
+ // ----------------------------------------------------------------------------
+ output_stream << "Rips complex is of dimension " << stree.dimension() <<
+ " - " << stree.num_simplices() << " simplices - " <<
+ stree.num_vertices() << " vertices." << std::endl;
+
+ output_stream << "Iterator on rips complex simplices in the filtration order, with [filtration value]:" <<
+ std::endl;
+ for (auto f_simplex : stree.filtration_simplex_range()) {
+ output_stream << " ( ";
+ for (auto vertex : stree.simplex_vertex_range(f_simplex)) {
+ output_stream << vertex << " ";
+ }
+ output_stream << ") -> " << "[" << stree.filtration(f_simplex) << "] ";
+ output_stream << std::endl;
+ }
+
+ ouput_file_stream.close();
+ return 0;
+}
diff --git a/src/Rips_complex/example/example_rips_complex_from_off_file.cpp b/src/Rips_complex/example/example_rips_complex_from_off_file.cpp
new file mode 100644
index 00000000..b6c961d0
--- /dev/null
+++ b/src/Rips_complex/example/example_rips_complex_from_off_file.cpp
@@ -0,0 +1,71 @@
+#include <gudhi/Rips_complex.h>
+// to construct Rips_complex from a OFF file of points
+#include <gudhi/Points_off_io.h>
+#include <gudhi/Simplex_tree.h>
+#include <gudhi/distance_functions.h>
+
+#include <iostream>
+#include <string>
+#include <vector>
+
+void usage(int nbArgs, char * const progName) {
+ std::cerr << "Error: Number of arguments (" << nbArgs << ") is not correct\n";
+ std::cerr << "Usage: " << progName << " filename.off threshold dim_max [ouput_file.txt]\n";
+ std::cerr << " i.e.: " << progName << " ../../data/points/alphacomplexdoc.off 60.0\n";
+ exit(-1); // ----- >>
+}
+
+int main(int argc, char **argv) {
+ if ((argc != 4) && (argc != 5)) usage(argc, (argv[0] - 1));
+
+ std::string off_file_name(argv[1]);
+ double threshold = atof(argv[2]);
+ int dim_max = atoi(argv[3]);
+
+ // Type definitions
+ using Point = std::vector<float>;
+ using Simplex_tree = Gudhi::Simplex_tree<>;
+ using Filtration_value = Simplex_tree::Filtration_value;
+ using Rips_complex = Gudhi::rips_complex::Rips_complex<Filtration_value>;
+
+ // ----------------------------------------------------------------------------
+ // Init of a rips complex from an OFF file
+ // ----------------------------------------------------------------------------
+ Gudhi::Points_off_reader<Point> off_reader(off_file_name);
+ Rips_complex rips_complex_from_file(off_reader.get_point_cloud(), threshold, Euclidean_distance());
+
+ std::streambuf* streambufffer;
+ std::ofstream ouput_file_stream;
+
+ if (argc == 5) {
+ ouput_file_stream.open(std::string(argv[4]));
+ streambufffer = ouput_file_stream.rdbuf();
+ } else {
+ streambufffer = std::cout.rdbuf();
+ }
+
+ Simplex_tree stree;
+ rips_complex_from_file.create_complex(stree, dim_max);
+ std::ostream output_stream(streambufffer);
+
+ // ----------------------------------------------------------------------------
+ // Display information about the rips complex
+ // ----------------------------------------------------------------------------
+ output_stream << "Rips complex is of dimension " << stree.dimension() <<
+ " - " << stree.num_simplices() << " simplices - " <<
+ stree.num_vertices() << " vertices." << std::endl;
+
+ output_stream << "Iterator on rips complex simplices in the filtration order, with [filtration value]:" <<
+ std::endl;
+ for (auto f_simplex : stree.filtration_simplex_range()) {
+ output_stream << " ( ";
+ for (auto vertex : stree.simplex_vertex_range(f_simplex)) {
+ output_stream << vertex << " ";
+ }
+ output_stream << ") -> " << "[" << stree.filtration(f_simplex) << "] ";
+ output_stream << std::endl;
+ }
+
+ ouput_file_stream.close();
+ return 0;
+}
diff --git a/src/Rips_complex/example/full_skeleton_rips_for_doc.txt b/src/Rips_complex/example/full_skeleton_rips_for_doc.txt
new file mode 100644
index 00000000..319931e0
--- /dev/null
+++ b/src/Rips_complex/example/full_skeleton_rips_for_doc.txt
@@ -0,0 +1,26 @@
+Rips complex is of dimension 3 - 24 simplices - 7 vertices.
+Iterator on rips complex simplices in the filtration order, with [filtration value]:
+ ( 0 ) -> [0]
+ ( 1 ) -> [0]
+ ( 2 ) -> [0]
+ ( 3 ) -> [0]
+ ( 4 ) -> [0]
+ ( 5 ) -> [0]
+ ( 6 ) -> [0]
+ ( 3 2 ) -> [5]
+ ( 5 4 ) -> [5.38516]
+ ( 2 0 ) -> [5.83095]
+ ( 1 0 ) -> [6.08276]
+ ( 3 1 ) -> [6.32456]
+ ( 2 1 ) -> [6.7082]
+ ( 2 1 0 ) -> [6.7082]
+ ( 3 2 1 ) -> [6.7082]
+ ( 6 5 ) -> [7.28011]
+ ( 4 2 ) -> [8.94427]
+ ( 3 0 ) -> [9.43398]
+ ( 3 1 0 ) -> [9.43398]
+ ( 3 2 0 ) -> [9.43398]
+ ( 3 2 1 0 ) -> [9.43398]
+ ( 6 4 ) -> [9.48683]
+ ( 6 5 4 ) -> [9.48683]
+ ( 6 3 ) -> [11]
diff --git a/src/Rips_complex/example/one_skeleton_rips_for_doc.txt b/src/Rips_complex/example/one_skeleton_rips_for_doc.txt
new file mode 100644
index 00000000..b0e25cc5
--- /dev/null
+++ b/src/Rips_complex/example/one_skeleton_rips_for_doc.txt
@@ -0,0 +1,20 @@
+Rips complex is of dimension 1 - 18 simplices - 7 vertices.
+Iterator on rips complex simplices in the filtration order, with [filtration value]:
+ ( 0 ) -> [0]
+ ( 1 ) -> [0]
+ ( 2 ) -> [0]
+ ( 3 ) -> [0]
+ ( 4 ) -> [0]
+ ( 5 ) -> [0]
+ ( 6 ) -> [0]
+ ( 3 2 ) -> [5]
+ ( 5 4 ) -> [5.38516]
+ ( 2 0 ) -> [5.83095]
+ ( 1 0 ) -> [6.08276]
+ ( 3 1 ) -> [6.32456]
+ ( 2 1 ) -> [6.7082]
+ ( 6 5 ) -> [7.28011]
+ ( 4 2 ) -> [8.94427]
+ ( 3 0 ) -> [9.43398]
+ ( 6 4 ) -> [9.48683]
+ ( 6 3 ) -> [11]
diff --git a/src/Rips_complex/include/gudhi/Rips_complex.h b/src/Rips_complex/include/gudhi/Rips_complex.h
new file mode 100644
index 00000000..f0f39db8
--- /dev/null
+++ b/src/Rips_complex/include/gudhi/Rips_complex.h
@@ -0,0 +1,186 @@
+/* This file is part of the Gudhi Library. The Gudhi library
+ * (Geometric Understanding in Higher Dimensions) is a generic C++
+ * library for computational topology.
+ *
+ * Author(s): Clément Maria, Pawel Dlotko, Vincent Rouvreau
+ *
+ * Copyright (C) 2016 INRIA
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef RIPS_COMPLEX_H_
+#define RIPS_COMPLEX_H_
+
+#include <gudhi/Debug_utils.h>
+#include <gudhi/graph_simplicial_complex.h>
+
+#include <boost/graph/adjacency_list.hpp>
+
+#include <iostream>
+#include <vector>
+#include <map>
+#include <string>
+#include <limits> // for numeric_limits
+#include <utility> // for pair<>
+
+
+namespace Gudhi {
+
+namespace rips_complex {
+
+/**
+ * \class Rips_complex
+ * \brief Rips complex data structure.
+ *
+ * \ingroup rips_complex
+ *
+ * \details
+ * The data structure is a one skeleton graph, or Rips graph, containing edges when the edge length is less or equal
+ * to a given threshold. Edge length is computed from a user given point cloud with a given distance function, or a
+ * distance matrix.
+ *
+ * \tparam Filtration_value must meet `SimplicialComplexForRips` concept.
+ */
+template<typename Filtration_value>
+class Rips_complex {
+ public:
+ /**
+ * \brief Type of the one skeleton graph stored inside the Rips complex structure.
+ */
+ typedef typename boost::adjacency_list < boost::vecS, boost::vecS, boost::undirectedS
+ , boost::property < vertex_filtration_t, Filtration_value >
+ , boost::property < edge_filtration_t, Filtration_value >> OneSkeletonGraph;
+
+ private:
+ typedef int Vertex_handle;
+
+ public:
+ /** \brief Rips_complex constructor from a list of points.
+ *
+ * @param[in] points Range of points.
+ * @param[in] threshold rips value.
+ * @param[in] distance distance function that returns a `Filtration_value` from 2 given points.
+ *
+ * \tparam InputPointRange must be a range for which `std::begin` and `std::end` return input iterators on a
+ * point.
+ *
+ * \tparam Distance furnishes `operator()(const Point& p1, const Point& p2)`, where
+ * `Point` is a point from the `InputPointRange`, and that returns a `Filtration_value`.
+ */
+ template<typename InputPointRange, typename Distance >
+ Rips_complex(const InputPointRange& points, Filtration_value threshold, Distance distance) {
+ compute_proximity_graph<InputPointRange, Distance >(points, threshold, distance);
+ }
+
+ /** \brief Rips_complex constructor from a distance matrix.
+ *
+ * @param[in] distance_matrix Range of distances.
+ * @param[in] threshold rips value.
+ *
+ * \tparam InputDistanceRange must have a `size()` method and on which `distance_matrix[i][j]` returns
+ * the distance between points \f$i\f$ and \f$j\f$ as long as \f$ 0 \leqslant i \leqslant j \leqslant
+ * distance\_matrix.size().\f$
+ */
+ template<typename InputDistanceRange>
+ Rips_complex(const InputDistanceRange& distance_matrix, Filtration_value threshold) {
+ compute_proximity_graph(boost::irange((size_t)0, distance_matrix.size()), threshold,
+ [&](size_t i, size_t j){return distance_matrix[j][i];});
+ }
+
+ /** \brief Initializes the simplicial complex from the Rips graph and expands it until a given maximal
+ * dimension.
+ *
+ * \tparam SimplicialComplexForRips must meet `SimplicialComplexForRips` concept.
+ *
+ * @param[in] complex SimplicialComplexForRips to be created.
+ * @param[in] dim_max graph expansion for rips until this given maximal dimension.
+ * @exception std::invalid_argument In debug mode, if `complex.num_vertices()` does not return 0.
+ *
+ */
+ template <typename SimplicialComplexForRips>
+ void create_complex(SimplicialComplexForRips& complex, int dim_max) {
+ GUDHI_CHECK(complex.num_vertices() == 0,
+ std::invalid_argument("Rips_complex::create_complex - simplicial complex is not empty"));
+
+ // insert the proximity graph in the simplicial complex
+ complex.insert_graph(rips_skeleton_graph_);
+ // expand the graph until dimension dim_max
+ complex.expansion(dim_max);
+ }
+
+ private:
+ /** \brief Computes the proximity graph of the points.
+ *
+ * If points contains n elements, the proximity graph is the graph with n vertices, and an edge [u,v] iff the
+ * distance function between points u and v is smaller than threshold.
+ *
+ * \tparam InputPointRange furnishes `.begin()` and `.end()`
+ * methods.
+ *
+ * \tparam Distance furnishes `operator()(const Point& p1, const Point& p2)`, where
+ * `Point` is a point from the `InputPointRange`, and that returns a `Filtration_value`.
+ */
+ template< typename InputPointRange, typename Distance >
+ void compute_proximity_graph(const InputPointRange& points, Filtration_value threshold,
+ Distance distance) {
+ std::vector< std::pair< Vertex_handle, Vertex_handle > > edges;
+ std::vector< Filtration_value > edges_fil;
+
+ // Compute the proximity graph of the points.
+ // If points contains n elements, the proximity graph is the graph with n vertices, and an edge [u,v] iff the
+ // distance function between points u and v is smaller than threshold.
+ // --------------------------------------------------------------------------------------------
+ // Creates the vector of edges and its filtration values (returned by distance function)
+ Vertex_handle idx_u = 0;
+ for (auto it_u = std::begin(points); it_u != std::end(points); ++it_u) {
+ Vertex_handle idx_v = idx_u + 1;
+ for (auto it_v = it_u + 1; it_v != std::end(points); ++it_v, ++idx_v) {
+ Filtration_value fil = distance(*it_u, *it_v);
+ if (fil <= threshold) {
+ edges.emplace_back(idx_u, idx_v);
+ edges_fil.push_back(fil);
+ }
+ }
+ ++idx_u;
+ }
+
+ // --------------------------------------------------------------------------------------------
+ // Creates the proximity graph from edges and sets the property with the filtration value.
+ // Number of points is labeled from 0 to idx_u-1
+ // --------------------------------------------------------------------------------------------
+ // Do not use : rips_skeleton_graph_ = OneSkeletonGraph(...) -> deep copy of the graph (boost graph is not
+ // move-enabled)
+ rips_skeleton_graph_.~OneSkeletonGraph();
+ new(&rips_skeleton_graph_)OneSkeletonGraph(edges.begin(), edges.end(), edges_fil.begin(), idx_u);
+
+ auto vertex_prop = boost::get(vertex_filtration_t(), rips_skeleton_graph_);
+
+ using vertex_iterator = typename boost::graph_traits<OneSkeletonGraph>::vertex_iterator;
+ vertex_iterator vi, vi_end;
+ for (std::tie(vi, vi_end) = boost::vertices(rips_skeleton_graph_);
+ vi != vi_end; ++vi) {
+ boost::put(vertex_prop, *vi, 0.);
+ }
+ }
+
+ private:
+ OneSkeletonGraph rips_skeleton_graph_;
+};
+
+} // namespace rips_complex
+
+} // namespace Gudhi
+
+#endif // RIPS_COMPLEX_H_
diff --git a/src/Rips_complex/test/CMakeLists.txt b/src/Rips_complex/test/CMakeLists.txt
new file mode 100644
index 00000000..87bad2ed
--- /dev/null
+++ b/src/Rips_complex/test/CMakeLists.txt
@@ -0,0 +1,25 @@
+cmake_minimum_required(VERSION 2.6)
+project(Rips_complex_tests)
+
+if (GCOVR_PATH)
+ # for gcovr to make coverage reports - Corbera Jenkins plugin
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fprofile-arcs -ftest-coverage")
+endif()
+if (GPROF_PATH)
+ # for gprof to make coverage reports - Jenkins
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pg")
+endif()
+
+add_executable ( rips_complex_UT test_rips_complex.cpp )
+target_link_libraries(rips_complex_UT ${Boost_SYSTEM_LIBRARY} ${Boost_UNIT_TEST_FRAMEWORK_LIBRARY})
+if (TBB_FOUND)
+ target_link_libraries(rips_complex_UT ${TBB_LIBRARIES})
+endif()
+
+# Do not forget to copy test files in current binary dir
+file(COPY "${CMAKE_SOURCE_DIR}/data/points/alphacomplexdoc.off" DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/)
+file(COPY "${CMAKE_SOURCE_DIR}/data/distance_matrix/full_square_distance_matrix.csv" DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/)
+
+add_test(rips_complex_UT ${CMAKE_CURRENT_BINARY_DIR}/rips_complex_UT
+ # XML format for Jenkins xUnit plugin
+ --log_format=XML --log_sink=${CMAKE_SOURCE_DIR}/rips_complex_UT.xml --log_level=test_suite --report_level=no)
diff --git a/src/Rips_complex/test/README b/src/Rips_complex/test/README
new file mode 100644
index 00000000..28236b52
--- /dev/null
+++ b/src/Rips_complex/test/README
@@ -0,0 +1,12 @@
+To compile:
+***********
+
+cmake .
+make
+
+To launch with details:
+***********************
+
+./rips_complex_UT --report_level=detailed --log_level=all
+
+ ==> echo $? returns 0 in case of success (non-zero otherwise)
diff --git a/src/Rips_complex/test/test_rips_complex.cpp b/src/Rips_complex/test/test_rips_complex.cpp
new file mode 100644
index 00000000..1bdd0512
--- /dev/null
+++ b/src/Rips_complex/test/test_rips_complex.cpp
@@ -0,0 +1,353 @@
+/* This file is part of the Gudhi Library. The Gudhi library
+ * (Geometric Understanding in Higher Dimensions) is a generic C++
+ * library for computational topology.
+ *
+ * Author(s): Vincent Rouvreau
+ *
+ * Copyright (C) 2016 INRIA Saclay (France)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#define BOOST_TEST_DYN_LINK
+#define BOOST_TEST_MODULE "rips_complex"
+#include <boost/test/unit_test.hpp>
+
+#include <cmath> // float comparison
+#include <limits>
+#include <string>
+#include <vector>
+#include <algorithm> // std::max
+
+#include <gudhi/Rips_complex.h>
+// to construct Rips_complex from a OFF file of points
+#include <gudhi/Points_off_io.h>
+#include <gudhi/Simplex_tree.h>
+#include <gudhi/distance_functions.h>
+#include <gudhi/reader_utils.h>
+
+// Type definitions
+using Point = std::vector<double>;
+using Simplex_tree = Gudhi::Simplex_tree<>;
+using Filtration_value = Simplex_tree::Filtration_value;
+using Rips_complex = Gudhi::rips_complex::Rips_complex<Simplex_tree::Filtration_value>;
+using Distance_matrix = std::vector<std::vector<Filtration_value>>;
+
+bool are_almost_the_same(float a, float b) {
+ return std::fabs(a - b) < std::numeric_limits<float>::epsilon();
+}
+
+BOOST_AUTO_TEST_CASE(RIPS_DOC_OFF_file) {
+ // ----------------------------------------------------------------------------
+ //
+ // Init of a rips complex from a OFF file
+ //
+ // ----------------------------------------------------------------------------
+ std::string off_file_name("alphacomplexdoc.off");
+ double rips_threshold = 12.0;
+ std::cout << "========== OFF FILE NAME = " << off_file_name << " - rips threshold=" <<
+ rips_threshold << "==========" << std::endl;
+
+ Gudhi::Points_off_reader<Point> off_reader(off_file_name);
+ Rips_complex rips_complex_from_file(off_reader.get_point_cloud(), rips_threshold, Euclidean_distance());
+
+ const int DIMENSION_1 = 1;
+ Simplex_tree st;
+ rips_complex_from_file.create_complex(st, DIMENSION_1);
+ std::cout << "st.dimension()=" << st.dimension() << std::endl;
+ BOOST_CHECK(st.dimension() == DIMENSION_1);
+
+ const int NUMBER_OF_VERTICES = 7;
+ std::cout << "st.num_vertices()=" << st.num_vertices() << std::endl;
+ BOOST_CHECK(st.num_vertices() == NUMBER_OF_VERTICES);
+
+ std::cout << "st.num_simplices()=" << st.num_simplices() << std::endl;
+ BOOST_CHECK(st.num_simplices() == 18);
+
+ // Check filtration values of vertices is 0.0
+ for (auto f_simplex : st.skeleton_simplex_range(0)) {
+ BOOST_CHECK(st.filtration(f_simplex) == 0.0);
+ }
+
+ // Check filtration values of edges
+ for (auto f_simplex : st.skeleton_simplex_range(DIMENSION_1)) {
+ if (DIMENSION_1 == st.dimension(f_simplex)) {
+ std::vector<Point> vp;
+ std::cout << "vertex = (";
+ for (auto vertex : st.simplex_vertex_range(f_simplex)) {
+ std::cout << vertex << ",";
+ vp.push_back(off_reader.get_point_cloud().at(vertex));
+ }
+ std::cout << ") - distance =" << Euclidean_distance()(vp.at(0), vp.at(1)) <<
+ " - filtration =" << st.filtration(f_simplex) << std::endl;
+ BOOST_CHECK(vp.size() == 2);
+ BOOST_CHECK(are_almost_the_same(st.filtration(f_simplex), Euclidean_distance()(vp.at(0), vp.at(1))));
+ }
+ }
+
+ const int DIMENSION_2 = 2;
+ Simplex_tree st2;
+ rips_complex_from_file.create_complex(st2, DIMENSION_2);
+ std::cout << "st2.dimension()=" << st2.dimension() << std::endl;
+ BOOST_CHECK(st2.dimension() == DIMENSION_2);
+
+ std::cout << "st2.num_vertices()=" << st2.num_vertices() << std::endl;
+ BOOST_CHECK(st2.num_vertices() == NUMBER_OF_VERTICES);
+
+ std::cout << "st2.num_simplices()=" << st2.num_simplices() << std::endl;
+ BOOST_CHECK(st2.num_simplices() == 23);
+
+ Simplex_tree::Filtration_value f01 = st2.filtration(st2.find({0, 1}));
+ Simplex_tree::Filtration_value f02 = st2.filtration(st2.find({0, 2}));
+ Simplex_tree::Filtration_value f12 = st2.filtration(st2.find({1, 2}));
+ Simplex_tree::Filtration_value f012 = st2.filtration(st2.find({0, 1, 2}));
+ std::cout << "f012= " << f012 << " | f01= " << f01 << " - f02= " << f02 << " - f12= " << f12 << std::endl;
+ BOOST_CHECK(are_almost_the_same(f012, std::max(f01, std::max(f02,f12))));
+
+ Simplex_tree::Filtration_value f45 = st2.filtration(st2.find({4, 5}));
+ Simplex_tree::Filtration_value f56 = st2.filtration(st2.find({5, 6}));
+ Simplex_tree::Filtration_value f46 = st2.filtration(st2.find({4, 6}));
+ Simplex_tree::Filtration_value f456 = st2.filtration(st2.find({4, 5, 6}));
+ std::cout << "f456= " << f456 << " | f45= " << f45 << " - f56= " << f56 << " - f46= " << f46 << std::endl;
+ BOOST_CHECK(are_almost_the_same(f456, std::max(f45, std::max(f56,f46))));
+
+ const int DIMENSION_3 = 3;
+ Simplex_tree st3;
+ rips_complex_from_file.create_complex(st3, DIMENSION_3);
+ std::cout << "st3.dimension()=" << st3.dimension() << std::endl;
+ BOOST_CHECK(st3.dimension() == DIMENSION_3);
+
+ std::cout << "st3.num_vertices()=" << st3.num_vertices() << std::endl;
+ BOOST_CHECK(st3.num_vertices() == NUMBER_OF_VERTICES);
+
+ std::cout << "st3.num_simplices()=" << st3.num_simplices() << std::endl;
+ BOOST_CHECK(st3.num_simplices() == 24);
+
+ Simplex_tree::Filtration_value f123 = st3.filtration(st3.find({1, 2, 3}));
+ Simplex_tree::Filtration_value f013 = st3.filtration(st3.find({0, 1, 3}));
+ Simplex_tree::Filtration_value f023 = st3.filtration(st3.find({0, 2, 3}));
+ Simplex_tree::Filtration_value f0123 = st3.filtration(st3.find({0, 1, 2, 3}));
+ std::cout << "f0123= " << f0123 << " | f012= " << f012 << " - f123= " << f123 << " - f013= " << f013 <<
+ " - f023= " << f023 << std::endl;
+ BOOST_CHECK(are_almost_the_same(f0123, std::max(f012, std::max(f123, std::max(f013, f023)))));
+
+}
+
+using Vector_of_points = std::vector<Point>;
+
+bool is_point_in_list(Vector_of_points points_list, Point point) {
+ for (auto& point_in_list : points_list) {
+ if (point_in_list == point) {
+ return true; // point found
+ }
+ }
+ return false; // point not found
+}
+
+class Custom_square_euclidean_distance {
+ public:
+ template< typename Point >
+ auto operator()(const Point& p1, const Point& p2) -> typename Point::value_type {
+ auto it1 = p1.begin();
+ auto it2 = p2.begin();
+ typename Point::value_type dist = 0.;
+ for (; it1 != p1.end(); ++it1, ++it2) {
+ typename Point::value_type tmp = (*it1) - (*it2);
+ dist += tmp*tmp;
+ }
+ return dist;
+ }
+};
+
+BOOST_AUTO_TEST_CASE(Rips_complex_from_points) {
+ // ----------------------------------------------------------------------------
+ // Init of a list of points
+ // ----------------------------------------------------------------------------
+ Vector_of_points points;
+ std::vector<double> coords = { 0.0, 0.0, 0.0, 1.0 };
+ points.push_back(Point(coords.begin(), coords.end()));
+ coords = { 0.0, 0.0, 1.0, 0.0 };
+ points.push_back(Point(coords.begin(), coords.end()));
+ coords = { 0.0, 1.0, 0.0, 0.0 };
+ points.push_back(Point(coords.begin(), coords.end()));
+ coords = { 1.0, 0.0, 0.0, 0.0 };
+ points.push_back(Point(coords.begin(), coords.end()));
+
+ // ----------------------------------------------------------------------------
+ // Init of a rips complex from the list of points
+ // ----------------------------------------------------------------------------
+ Rips_complex rips_complex_from_points(points, 2.0, Custom_square_euclidean_distance());
+
+ std::cout << "========== Rips_complex_from_points ==========" << std::endl;
+ Simplex_tree st;
+ const int DIMENSION = 3;
+ rips_complex_from_points.create_complex(st, DIMENSION);
+
+ // Another way to check num_simplices
+ std::cout << "Iterator on rips complex simplices in the filtration order, with [filtration value]:" << std::endl;
+ int num_simplices = 0;
+ for (auto f_simplex : st.filtration_simplex_range()) {
+ num_simplices++;
+ std::cout << " ( ";
+ for (auto vertex : st.simplex_vertex_range(f_simplex)) {
+ std::cout << vertex << " ";
+ }
+ std::cout << ") -> " << "[" << st.filtration(f_simplex) << "] ";
+ std::cout << std::endl;
+ }
+ BOOST_CHECK(num_simplices == 15);
+ std::cout << "st.num_simplices()=" << st.num_simplices() << std::endl;
+ BOOST_CHECK(st.num_simplices() == 15);
+
+ std::cout << "st.dimension()=" << st.dimension() << std::endl;
+ BOOST_CHECK(st.dimension() == DIMENSION);
+ std::cout << "st.num_vertices()=" << st.num_vertices() << std::endl;
+ BOOST_CHECK(st.num_vertices() == 4);
+
+ for (auto f_simplex : st.filtration_simplex_range()) {
+ std::cout << "dimension(" << st.dimension(f_simplex) << ") - f = " << st.filtration(f_simplex) << std::endl;
+ switch (st.dimension(f_simplex)) {
+ case 0:
+ BOOST_CHECK(are_almost_the_same(st.filtration(f_simplex), 0.0));
+ break;
+ case 1:
+ case 2:
+ case 3:
+ BOOST_CHECK(are_almost_the_same(st.filtration(f_simplex), 2.0));
+ break;
+ default:
+ BOOST_CHECK(false); // Shall not happen
+ break;
+ }
+ }
+}
+
+BOOST_AUTO_TEST_CASE(Rips_doc_csv_file) {
+ // ----------------------------------------------------------------------------
+ //
+ // Init of a rips complex from a OFF file
+ //
+ // ----------------------------------------------------------------------------
+ std::string csv_file_name("full_square_distance_matrix.csv");
+ double rips_threshold = 12.0;
+ std::cout << "========== CSV FILE NAME = " << csv_file_name << " - rips threshold=" <<
+ rips_threshold << "==========" << std::endl;
+
+ Distance_matrix distances = read_lower_triangular_matrix_from_csv_file<Filtration_value>(csv_file_name);
+ Rips_complex rips_complex_from_file(distances, rips_threshold);
+
+ const int DIMENSION_1 = 1;
+ Simplex_tree st;
+ rips_complex_from_file.create_complex(st, DIMENSION_1);
+ std::cout << "st.dimension()=" << st.dimension() << std::endl;
+ BOOST_CHECK(st.dimension() == DIMENSION_1);
+
+ const int NUMBER_OF_VERTICES = 7;
+ std::cout << "st.num_vertices()=" << st.num_vertices() << std::endl;
+ BOOST_CHECK(st.num_vertices() == NUMBER_OF_VERTICES);
+
+ std::cout << "st.num_simplices()=" << st.num_simplices() << std::endl;
+ BOOST_CHECK(st.num_simplices() == 18);
+
+ // Check filtration values of vertices is 0.0
+ for (auto f_simplex : st.skeleton_simplex_range(0)) {
+ BOOST_CHECK(st.filtration(f_simplex) == 0.0);
+ }
+
+ // Check filtration values of edges
+ for (auto f_simplex : st.skeleton_simplex_range(DIMENSION_1)) {
+ if (DIMENSION_1 == st.dimension(f_simplex)) {
+ std::vector<Simplex_tree::Vertex_handle> vvh;
+ std::cout << "vertex = (";
+ for (auto vertex : st.simplex_vertex_range(f_simplex)) {
+ std::cout << vertex << ",";
+ vvh.push_back(vertex);
+ }
+ std::cout << ") - filtration =" << st.filtration(f_simplex) << std::endl;
+ BOOST_CHECK(vvh.size() == 2);
+ BOOST_CHECK(are_almost_the_same(st.filtration(f_simplex), distances[vvh.at(0)][vvh.at(1)]));
+ }
+ }
+
+ const int DIMENSION_2 = 2;
+ Simplex_tree st2;
+ rips_complex_from_file.create_complex(st2, DIMENSION_2);
+ std::cout << "st2.dimension()=" << st2.dimension() << std::endl;
+ BOOST_CHECK(st2.dimension() == DIMENSION_2);
+
+ std::cout << "st2.num_vertices()=" << st2.num_vertices() << std::endl;
+ BOOST_CHECK(st2.num_vertices() == NUMBER_OF_VERTICES);
+
+ std::cout << "st2.num_simplices()=" << st2.num_simplices() << std::endl;
+ BOOST_CHECK(st2.num_simplices() == 23);
+
+ Simplex_tree::Filtration_value f01 = st2.filtration(st2.find({0, 1}));
+ Simplex_tree::Filtration_value f02 = st2.filtration(st2.find({0, 2}));
+ Simplex_tree::Filtration_value f12 = st2.filtration(st2.find({1, 2}));
+ Simplex_tree::Filtration_value f012 = st2.filtration(st2.find({0, 1, 2}));
+ std::cout << "f012= " << f012 << " | f01= " << f01 << " - f02= " << f02 << " - f12= " << f12 << std::endl;
+ BOOST_CHECK(are_almost_the_same(f012, std::max(f01, std::max(f02,f12))));
+
+ Simplex_tree::Filtration_value f45 = st2.filtration(st2.find({4, 5}));
+ Simplex_tree::Filtration_value f56 = st2.filtration(st2.find({5, 6}));
+ Simplex_tree::Filtration_value f46 = st2.filtration(st2.find({4, 6}));
+ Simplex_tree::Filtration_value f456 = st2.filtration(st2.find({4, 5, 6}));
+ std::cout << "f456= " << f456 << " | f45= " << f45 << " - f56= " << f56 << " - f46= " << f46 << std::endl;
+ BOOST_CHECK(are_almost_the_same(f456, std::max(f45, std::max(f56,f46))));
+
+ const int DIMENSION_3 = 3;
+ Simplex_tree st3;
+ rips_complex_from_file.create_complex(st3, DIMENSION_3);
+ std::cout << "st3.dimension()=" << st3.dimension() << std::endl;
+ BOOST_CHECK(st3.dimension() == DIMENSION_3);
+
+ std::cout << "st3.num_vertices()=" << st3.num_vertices() << std::endl;
+ BOOST_CHECK(st3.num_vertices() == NUMBER_OF_VERTICES);
+
+ std::cout << "st3.num_simplices()=" << st3.num_simplices() << std::endl;
+ BOOST_CHECK(st3.num_simplices() == 24);
+
+ Simplex_tree::Filtration_value f123 = st3.filtration(st3.find({1, 2, 3}));
+ Simplex_tree::Filtration_value f013 = st3.filtration(st3.find({0, 1, 3}));
+ Simplex_tree::Filtration_value f023 = st3.filtration(st3.find({0, 2, 3}));
+ Simplex_tree::Filtration_value f0123 = st3.filtration(st3.find({0, 1, 2, 3}));
+ std::cout << "f0123= " << f0123 << " | f012= " << f012 << " - f123= " << f123 << " - f013= " << f013 <<
+ " - f023= " << f023 << std::endl;
+ BOOST_CHECK(are_almost_the_same(f0123, std::max(f012, std::max(f123, std::max(f013, f023)))));
+
+}
+
+#ifdef GUDHI_DEBUG
+BOOST_AUTO_TEST_CASE(Rips_create_complex_throw) {
+ // ----------------------------------------------------------------------------
+ //
+ // Init of a rips complex from a OFF file
+ //
+ // ----------------------------------------------------------------------------
+ std::string off_file_name("alphacomplexdoc.off");
+ double rips_threshold = 12.0;
+ std::cout << "========== OFF FILE NAME = " << off_file_name << " - rips threshold=" <<
+ rips_threshold << "==========" << std::endl;
+
+ Gudhi::Points_off_reader<Point> off_reader(off_file_name);
+ Rips_complex rips_complex_from_file(off_reader.get_point_cloud(), rips_threshold, Euclidean_distance());
+
+ Simplex_tree stree;
+ std::vector<int> simplex = {0, 1, 2};
+ stree.insert_simplex_and_subfaces(simplex);
+ std::cout << "Check exception throw in debug mode" << std::endl;
+ // throw excpt because stree is not empty
+ BOOST_CHECK_THROW (rips_complex_from_file.create_complex(stree, 1), std::invalid_argument);
+}
+#endif
diff --git a/src/Simplex_tree/example/simple_simplex_tree.cpp b/src/Simplex_tree/example/simple_simplex_tree.cpp
index 5146b906..60f9a35e 100644
--- a/src/Simplex_tree/example/simple_simplex_tree.cpp
+++ b/src/Simplex_tree/example/simple_simplex_tree.cpp
@@ -4,7 +4,7 @@
*
* Author(s): Vincent Rouvreau
*
- * Copyright (C) 2014 INRIA Sophia Antipolis-Méditerranée (France)
+ * Copyright (C) 2014
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -27,10 +27,11 @@
#include <utility> // for pair
#include <vector>
-using namespace Gudhi;
-
-typedef std::vector< Vertex_handle > typeVectorVertex;
-typedef std::pair< Simplex_tree<>::Simplex_handle, bool > typePairSimplexBool;
+using Simplex_tree = Gudhi::Simplex_tree<>;
+using Vertex_handle = Simplex_tree::Vertex_handle;
+using Filtration_value = Simplex_tree::Filtration_value;
+using typeVectorVertex = std::vector< Vertex_handle >;
+using typePairSimplexBool = std::pair< Simplex_tree::Simplex_handle, bool >;
int main(int argc, char * const argv[]) {
const Filtration_value FIRST_FILTRATION_VALUE = 0.1;
@@ -42,7 +43,7 @@ int main(int argc, char * const argv[]) {
std::cout << "********************************************************************" << std::endl;
std::cout << "EXAMPLE OF SIMPLE INSERTION" << std::endl;
// Construct the Simplex Tree
- Simplex_tree<> simplexTree;
+ Simplex_tree simplexTree;
/* Simplex to be inserted: */
/* 1 */
@@ -212,7 +213,7 @@ int main(int argc, char * const argv[]) {
// ------------------------------------------------------------------------------------------------------------------
// Find in the simplex_tree
// ------------------------------------------------------------------------------------------------------------------
- Simplex_tree<>::Simplex_handle simplexFound = simplexTree.find(secondSimplexVector);
+ Simplex_tree::Simplex_handle simplexFound = simplexTree.find(secondSimplexVector);
std::cout << "**************IS THE SIMPLEX {1} IN THE SIMPLEX TREE ?\n";
if (simplexFound != simplexTree.null_simplex())
std::cout << "***+ YES IT IS!\n";
diff --git a/src/Simplex_tree/example/simplex_tree_from_cliques_of_graph.cpp b/src/Simplex_tree/example/simplex_tree_from_cliques_of_graph.cpp
index 58085014..d1b8b2de 100644
--- a/src/Simplex_tree/example/simplex_tree_from_cliques_of_graph.cpp
+++ b/src/Simplex_tree/example/simplex_tree_from_cliques_of_graph.cpp
@@ -4,7 +4,7 @@
*
* Author(s): Clément Maria
*
- * Copyright (C) 2014 INRIA Sophia Antipolis-Méditerranée (France)
+ * Copyright (C) 2014 INRIA
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -26,9 +26,16 @@
#include <iostream>
#include <ctime>
#include <string>
+#include <utility> // for std::pair
using namespace Gudhi;
+typedef int Vertex_handle;
+typedef double Filtration_value;
+typedef boost::adjacency_list < boost::vecS, boost::vecS, boost::undirectedS,
+ boost::property < vertex_filtration_t, Filtration_value >,
+ boost::property < edge_filtration_t, Filtration_value > > Graph_t;
+
int main(int argc, char * const argv[]) {
if (argc != 3) {
std::cerr << "Usage: " << argv[0]
@@ -43,7 +50,7 @@ int main(int argc, char * const argv[]) {
Simplex_tree<> st;
start = clock();
- auto g = read_graph(filegraph);
+ auto g = read_graph<Graph_t, Filtration_value, Vertex_handle>(filegraph);
// insert the graph in the simplex tree as 1-skeleton
st.insert_graph(g);
end = clock();
diff --git a/src/Simplex_tree/include/gudhi/Simplex_tree.h b/src/Simplex_tree/include/gudhi/Simplex_tree.h
index 63e3f0e5..317bce23 100644
--- a/src/Simplex_tree/include/gudhi/Simplex_tree.h
+++ b/src/Simplex_tree/include/gudhi/Simplex_tree.h
@@ -1029,7 +1029,7 @@ class Simplex_tree {
Dictionary_it next = siblings->members().begin();
++next;
- static std::vector<std::pair<Vertex_handle, Node> > inter; // static, not thread-safe.
+ thread_local std::vector<std::pair<Vertex_handle, Node> > inter;
for (Dictionary_it s_h = siblings->members().begin();
s_h != siblings->members().end(); ++s_h, ++next) {
Simplex_handle root_sh = find_vertex(s_h->first);
diff --git a/src/Simplex_tree/test/simplex_tree_unit_test.cpp b/src/Simplex_tree/test/simplex_tree_unit_test.cpp
index 28bf202b..b06d7ec9 100644
--- a/src/Simplex_tree/test/simplex_tree_unit_test.cpp
+++ b/src/Simplex_tree/test/simplex_tree_unit_test.cpp
@@ -1,4 +1,5 @@
#include <iostream>
+#include <fstream>
#include <string>
#include <algorithm>
#include <utility> // std::pair, std::make_pair
@@ -19,19 +20,19 @@ using namespace Gudhi;
typedef boost::mpl::list<Simplex_tree<>, Simplex_tree<Simplex_tree_options_fast_persistence>> list_of_tested_variants;
-const Vertex_handle DEFAULT_VERTEX_HANDLE = (const Vertex_handle) - 1;
-const Filtration_value DEFAULT_FILTRATION_VALUE = (const Filtration_value) 0.0;
template<class typeST>
void test_empty_simplex_tree(typeST& tst) {
- BOOST_CHECK(tst.null_vertex() == DEFAULT_VERTEX_HANDLE);
- BOOST_CHECK(tst.filtration() == DEFAULT_FILTRATION_VALUE);
+ typedef typename typeST::Vertex_handle Vertex_handle;
+ const Vertex_handle DEFAULT_VERTEX_VALUE = Vertex_handle(- 1);
+ BOOST_CHECK(tst.null_vertex() == DEFAULT_VERTEX_VALUE);
+ BOOST_CHECK(tst.filtration() == 0.0);
BOOST_CHECK(tst.num_vertices() == (size_t) 0);
BOOST_CHECK(tst.num_simplices() == (size_t) 0);
typename typeST::Siblings* STRoot = tst.root();
BOOST_CHECK(STRoot != nullptr);
BOOST_CHECK(STRoot->oncles() == nullptr);
- BOOST_CHECK(STRoot->parent() == DEFAULT_VERTEX_HANDLE);
+ BOOST_CHECK(STRoot->parent() == DEFAULT_VERTEX_VALUE);
BOOST_CHECK(tst.dimension() == -1);
}
@@ -59,7 +60,7 @@ void test_iterators_on_empty_simplex_tree(typeST& tst) {
BOOST_AUTO_TEST_CASE_TEMPLATE(simplex_tree_when_empty, typeST, list_of_tested_variants) {
typedef std::pair<typename typeST::Simplex_handle, bool> typePairSimplexBool;
- typedef std::vector<Vertex_handle> typeVectorVertex;
+ typedef std::vector<typename typeST::Vertex_handle> typeVectorVertex;
std::cout << "********************************************************************" << std::endl;
std::cout << "TEST OF DEFAULT CONSTRUCTOR" << std::endl;
@@ -72,8 +73,7 @@ BOOST_AUTO_TEST_CASE_TEMPLATE(simplex_tree_when_empty, typeST, list_of_tested_va
std::cout << "TEST OF EMPTY INSERTION" << std::endl;
typeVectorVertex simplexVectorEmpty;
BOOST_CHECK(simplexVectorEmpty.empty() == true);
- typePairSimplexBool returnEmptyValue = st.insert_simplex(simplexVectorEmpty,
- DEFAULT_FILTRATION_VALUE);
+ typePairSimplexBool returnEmptyValue = st.insert_simplex(simplexVectorEmpty, 0.0);
BOOST_CHECK(returnEmptyValue.first == typename typeST::Simplex_handle(nullptr));
BOOST_CHECK(returnEmptyValue.second == true);
@@ -141,12 +141,13 @@ void test_simplex_tree_contains(typeST& simplexTree, typeSimplex& simplex, int p
template<class typeST, class typePairSimplexBool>
void test_simplex_tree_insert_returns_true(const typePairSimplexBool& returnValue) {
BOOST_CHECK(returnValue.second == true);
- typename typeST::Simplex_handle shReturned = returnValue.first; // Simplex_handle = boost::container::flat_map< Vertex_handle, Node >::iterator
+ // Simplex_handle = boost::container::flat_map< typeST::Vertex_handle, Node >::iterator
+ typename typeST::Simplex_handle shReturned = returnValue.first;
BOOST_CHECK(shReturned != typename typeST::Simplex_handle(nullptr));
}
// Global variables
-Filtration_value max_fil = DEFAULT_FILTRATION_VALUE;
+double max_fil = 0.0;
int dim_max = -1;
template<class typeST, class Filtration_value>
@@ -179,8 +180,9 @@ void set_and_test_simplex_tree_dim_fil(typeST& simplexTree, int vectorSize, cons
}
BOOST_AUTO_TEST_CASE_TEMPLATE(simplex_tree_insertion, typeST, list_of_tested_variants) {
+ typedef typename typeST::Filtration_value Filtration_value;
typedef std::pair<typename typeST::Simplex_handle, bool> typePairSimplexBool;
- typedef std::vector<Vertex_handle> typeVectorVertex;
+ typedef std::vector<typename typeST::Vertex_handle> typeVectorVertex;
typedef std::pair<typeVectorVertex, Filtration_value> typeSimplex;
const Filtration_value FIRST_FILTRATION_VALUE = 0.1;
const Filtration_value SECOND_FILTRATION_VALUE = 0.2;
@@ -188,7 +190,7 @@ BOOST_AUTO_TEST_CASE_TEMPLATE(simplex_tree_insertion, typeST, list_of_tested_var
const Filtration_value FOURTH_FILTRATION_VALUE = 0.4;
// reset since we run the test several times
dim_max = -1;
- max_fil = DEFAULT_FILTRATION_VALUE;
+ max_fil = 0.0;
// TEST OF INSERTION
std::cout << "********************************************************************" << std::endl;
@@ -303,7 +305,8 @@ BOOST_AUTO_TEST_CASE_TEMPLATE(simplex_tree_insertion, typeST, list_of_tested_var
returnValue = st.insert_simplex(tenthSimplex.first, tenthSimplex.second);
BOOST_CHECK(returnValue.second == false);
- typename typeST::Simplex_handle shReturned = returnValue.first; // Simplex_handle = boost::container::flat_map< Vertex_handle, Node >::iterator
+ // Simplex_handle = boost::container::flat_map< typeST::Vertex_handle, Node >::iterator
+ typename typeST::Simplex_handle shReturned = returnValue.first;
BOOST_CHECK(shReturned == typename typeST::Simplex_handle(nullptr));
BOOST_CHECK(st.num_vertices() == (size_t) 4); // Not incremented !!
BOOST_CHECK(st.dimension() == dim_max);
@@ -317,7 +320,8 @@ BOOST_AUTO_TEST_CASE_TEMPLATE(simplex_tree_insertion, typeST, list_of_tested_var
returnValue = st.insert_simplex(eleventhSimplex.first, eleventhSimplex.second);
BOOST_CHECK(returnValue.second == false);
- shReturned = returnValue.first; // Simplex_handle = boost::container::flat_map< Vertex_handle, Node >::iterator
+ // Simplex_handle = boost::container::flat_map< typeST::Vertex_handle, Node >::iterator
+ shReturned = returnValue.first;
BOOST_CHECK(shReturned == typename typeST::Simplex_handle(nullptr));
BOOST_CHECK(st.num_vertices() == (size_t) 4); // Not incremented !!
BOOST_CHECK(st.dimension() == dim_max);
@@ -375,8 +379,8 @@ BOOST_AUTO_TEST_CASE_TEMPLATE(simplex_tree_insertion, typeST, list_of_tested_var
BOOST_AUTO_TEST_CASE_TEMPLATE(NSimplexAndSubfaces_tree_insertion, typeST, list_of_tested_variants) {
typedef std::pair<typename typeST::Simplex_handle, bool> typePairSimplexBool;
- typedef std::vector<Vertex_handle> typeVectorVertex;
- typedef std::pair<typeVectorVertex, Filtration_value> typeSimplex;
+ typedef std::vector<typename typeST::Vertex_handle> typeVectorVertex;
+ typedef std::pair<typeVectorVertex, typename typeST::Filtration_value> typeSimplex;
std::cout << "********************************************************************" << std::endl;
std::cout << "TEST OF RECURSIVE INSERTION" << std::endl;
typeST st;
@@ -394,7 +398,7 @@ BOOST_AUTO_TEST_CASE_TEMPLATE(NSimplexAndSubfaces_tree_insertion, typeST, list_o
// Check it is well inserted
BOOST_CHECK(true == returnValue.second);
position = 0;
- std::sort(SimplexVector1.begin(), SimplexVector1.end(), std::greater<Vertex_handle>());
+ std::sort(SimplexVector1.begin(), SimplexVector1.end(), std::greater<typename typeST::Vertex_handle>());
for (auto vertex : st.simplex_vertex_range(returnValue.first)) {
// Check returned Simplex_handle
std::cout << "vertex = " << vertex << " | vector[" << position << "] = " << SimplexVector1[position] << std::endl;
@@ -413,7 +417,7 @@ BOOST_AUTO_TEST_CASE_TEMPLATE(NSimplexAndSubfaces_tree_insertion, typeST, list_o
// Check it is well inserted
BOOST_CHECK(true == returnValue.second);
position = 0;
- std::sort(SimplexVector2.begin(), SimplexVector2.end(), std::greater<Vertex_handle>());
+ std::sort(SimplexVector2.begin(), SimplexVector2.end(), std::greater<typename typeST::Vertex_handle>());
for (auto vertex : st.simplex_vertex_range(returnValue.first)) {
// Check returned Simplex_handle
std::cout << "vertex = " << vertex << " | vector[" << position << "] = " << SimplexVector2[position] << std::endl;
@@ -432,7 +436,7 @@ BOOST_AUTO_TEST_CASE_TEMPLATE(NSimplexAndSubfaces_tree_insertion, typeST, list_o
// Check it is well inserted
BOOST_CHECK(true == returnValue.second);
position = 0;
- std::sort(SimplexVector3.begin(), SimplexVector3.end(), std::greater<Vertex_handle>());
+ std::sort(SimplexVector3.begin(), SimplexVector3.end(), std::greater<typename typeST::Vertex_handle>());
for (auto vertex : st.simplex_vertex_range(returnValue.first)) {
// Check returned Simplex_handle
std::cout << "vertex = " << vertex << " | vector[" << position << "] = " << SimplexVector3[position] << std::endl;
@@ -462,7 +466,7 @@ BOOST_AUTO_TEST_CASE_TEMPLATE(NSimplexAndSubfaces_tree_insertion, typeST, list_o
// Check it is well inserted
BOOST_CHECK(true == returnValue.second);
position = 0;
- std::sort(SimplexVector5.begin(), SimplexVector5.end(), std::greater<Vertex_handle>());
+ std::sort(SimplexVector5.begin(), SimplexVector5.end(), std::greater<typename typeST::Vertex_handle>());
for (auto vertex : st.simplex_vertex_range(returnValue.first)) {
// Check returned Simplex_handle
std::cout << "vertex = " << vertex << " | vector[" << position << "] = " << SimplexVector5[position] << std::endl;
@@ -481,7 +485,7 @@ BOOST_AUTO_TEST_CASE_TEMPLATE(NSimplexAndSubfaces_tree_insertion, typeST, list_o
// Check it is well inserted
BOOST_CHECK(true == returnValue.second);
position = 0;
- std::sort(SimplexVector6.begin(), SimplexVector6.end(), std::greater<Vertex_handle>());
+ std::sort(SimplexVector6.begin(), SimplexVector6.end(), std::greater<typename typeST::Vertex_handle>());
for (auto vertex : st.simplex_vertex_range(returnValue.first)) {
// Check returned Simplex_handle
std::cout << "vertex = " << vertex << " | vector[" << position << "] = " << SimplexVector6[position] << std::endl;
@@ -504,12 +508,12 @@ BOOST_AUTO_TEST_CASE_TEMPLATE(NSimplexAndSubfaces_tree_insertion, typeST, list_o
/* A facet [3,4,5] */
/* A cell [0,1,6,7] */
- typeSimplex simplexPair1 = std::make_pair(SimplexVector1, DEFAULT_FILTRATION_VALUE);
- typeSimplex simplexPair2 = std::make_pair(SimplexVector2, DEFAULT_FILTRATION_VALUE);
- typeSimplex simplexPair3 = std::make_pair(SimplexVector3, DEFAULT_FILTRATION_VALUE);
- typeSimplex simplexPair4 = std::make_pair(SimplexVector4, DEFAULT_FILTRATION_VALUE);
- typeSimplex simplexPair5 = std::make_pair(SimplexVector5, DEFAULT_FILTRATION_VALUE);
- typeSimplex simplexPair6 = std::make_pair(SimplexVector6, DEFAULT_FILTRATION_VALUE);
+ typeSimplex simplexPair1 = std::make_pair(SimplexVector1, 0.0);
+ typeSimplex simplexPair2 = std::make_pair(SimplexVector2, 0.0);
+ typeSimplex simplexPair3 = std::make_pair(SimplexVector3, 0.0);
+ typeSimplex simplexPair4 = std::make_pair(SimplexVector4, 0.0);
+ typeSimplex simplexPair5 = std::make_pair(SimplexVector5, 0.0);
+ typeSimplex simplexPair6 = std::make_pair(SimplexVector6, 0.0);
test_simplex_tree_contains(st, simplexPair1, 6); // (2,1,0) is in position 6
test_simplex_tree_contains(st, simplexPair2, 7); // (3) is in position 7
test_simplex_tree_contains(st, simplexPair3, 8); // (3,0) is in position 8
@@ -600,7 +604,7 @@ void test_cofaces(typeST& st, const std::vector<Vertex_handle>& expected, int di
}
BOOST_AUTO_TEST_CASE_TEMPLATE(coface_on_simplex_tree, typeST, list_of_tested_variants) {
- typedef std::vector<Vertex_handle> typeVectorVertex;
+ typedef std::vector<typename typeST::Vertex_handle> typeVectorVertex;
std::cout << "********************************************************************" << std::endl;
std::cout << "TEST COFACE ALGORITHM" << std::endl;
typeST st;
@@ -629,7 +633,7 @@ BOOST_AUTO_TEST_CASE_TEMPLATE(coface_on_simplex_tree, typeST, list_of_tested_var
// FIXME
st.set_dimension(3);
- std::vector<Vertex_handle> simplex_result;
+ std::vector<typename typeST::Vertex_handle> simplex_result;
std::vector<typename typeST::Simplex_handle> result;
std::cout << "First test - Star of (3):" << std::endl;
@@ -649,7 +653,7 @@ BOOST_AUTO_TEST_CASE_TEMPLATE(coface_on_simplex_tree, typeST, list_of_tested_var
result.push_back(st.find(simplex_result));
simplex_result.clear();
- std::vector<Vertex_handle> vertex = {3};
+ std::vector<typename typeST::Vertex_handle> vertex = {3};
test_cofaces(st, vertex, 0, result);
vertex.clear();
result.clear();
@@ -699,7 +703,7 @@ BOOST_AUTO_TEST_CASE_TEMPLATE(coface_on_simplex_tree, typeST, list_of_tested_var
}
BOOST_AUTO_TEST_CASE_TEMPLATE(copy_move_on_simplex_tree, typeST, list_of_tested_variants) {
- typedef std::vector<Vertex_handle> typeVectorVertex;
+ typedef std::vector<typename typeST::Vertex_handle> typeVectorVertex;
std::cout << "********************************************************************" << std::endl;
std::cout << "TEST COPY MOVE CONSTRUCTORS" << std::endl;
typeST st;
@@ -771,12 +775,11 @@ void test_simplex_is_vertex(typeST& st, typename typeST::Simplex_handle sh, type
BOOST_AUTO_TEST_CASE(non_contiguous) {
typedef Simplex_tree<> typeST;
- typedef typeST::Vertex_handle Vertex_handle;
typedef typeST::Simplex_handle Simplex_handle;
std::cout << "********************************************************************" << std::endl;
std::cout << "TEST NON-CONTIGUOUS VERTICES" << std::endl;
typeST st;
- Vertex_handle e[] = {3,-7};
+ typeST::Vertex_handle e[] = {3,-7};
std::cout << "Insert" << std::endl;
st.insert_simplex_and_subfaces(e);
BOOST_CHECK(st.num_vertices() == 2);
diff --git a/src/Tangential_complex/benchmark/CMakeLists.txt b/src/Tangential_complex/benchmark/CMakeLists.txt
index 56dd8128..788c2b4d 100644
--- a/src/Tangential_complex/benchmark/CMakeLists.txt
+++ b/src/Tangential_complex/benchmark/CMakeLists.txt
@@ -1,15 +1,6 @@
cmake_minimum_required(VERSION 2.6)
project(Tangential_complex_benchmark)
-if (GCOVR_PATH)
- # for gcovr to make coverage reports - Corbera Jenkins plugin
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fprofile-arcs -ftest-coverage")
-endif()
-if (GPROF_PATH)
- # for gprof to make coverage reports - Jenkins
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pg")
-endif()
-
# need CGAL 4.8
if(CGAL_FOUND)
if (NOT CGAL_VERSION VERSION_LESS 4.8.0)
diff --git a/src/Witness_complex/example/witness_complex_from_file.cpp b/src/Witness_complex/example/witness_complex_from_file.cpp
index bb641b3c..5dd18d0a 100644
--- a/src/Witness_complex/example/witness_complex_from_file.cpp
+++ b/src/Witness_complex/example/witness_complex_from_file.cpp
@@ -4,7 +4,7 @@
*
* Author(s): Siargey Kachanovich
*
- * Copyright (C) 2015 INRIA Sophia Antipolis-Méditerranée (France)
+ * Copyright (C) 2015 INRIA
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -36,7 +36,8 @@
#include <string>
#include <vector>
-typedef std::vector< Vertex_handle > typeVectorVertex;
+typedef Gudhi::Simplex_tree<> Simplex_tree;
+typedef std::vector< Simplex_tree::Vertex_handle > typeVectorVertex;
typedef std::vector< std::vector <double> > Point_Vector;
int main(int argc, char * const argv[]) {
@@ -51,7 +52,7 @@ int main(int argc, char * const argv[]) {
clock_t start, end;
// Construct the Simplex Tree
- Gudhi::Simplex_tree<> simplex_tree;
+ Simplex_tree simplex_tree;
// Read the OFF file (input file name given as parameter) and triangulate points
Gudhi::Points_off_reader<std::vector <double>> off_reader(off_file_name);
@@ -69,7 +70,7 @@ int main(int argc, char * const argv[]) {
std::vector<std::vector< int > > knn;
Point_Vector landmarks;
Gudhi::subsampling::pick_n_random_points(point_vector, 100, std::back_inserter(landmarks));
- Gudhi::witness_complex::construct_closest_landmark_table(point_vector, landmarks, knn);
+ Gudhi::witness_complex::construct_closest_landmark_table<Simplex_tree::Filtration_value>(point_vector, landmarks, knn);
end = clock();
std::cout << "Landmark choice for " << nbL << " landmarks took "
<< static_cast<double>(end - start) / CLOCKS_PER_SEC << " s. \n";
diff --git a/src/Witness_complex/example/witness_complex_sphere.cpp b/src/Witness_complex/example/witness_complex_sphere.cpp
index e6f88274..60e02225 100644
--- a/src/Witness_complex/example/witness_complex_sphere.cpp
+++ b/src/Witness_complex/example/witness_complex_sphere.cpp
@@ -4,7 +4,7 @@
*
* Author(s): Siargey Kachanovich
*
- * Copyright (C) 2015 INRIA Sophia Antipolis-Méditerranée (France)
+ * Copyright (C) 2015 INRIA
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -40,6 +40,8 @@
#include "generators.h"
+typedef Gudhi::Simplex_tree<> Simplex_tree;
+
/** Write a gnuplot readable file.
* Data range is a random access range of pairs (arg, value)
*/
@@ -62,7 +64,7 @@ int main(int argc, char * const argv[]) {
clock_t start, end;
// Construct the Simplex Tree
- Gudhi::Simplex_tree<> simplex_tree;
+ Simplex_tree simplex_tree;
std::vector< std::pair<int, double> > l_time;
@@ -77,7 +79,7 @@ int main(int argc, char * const argv[]) {
start = clock();
std::vector<std::vector< int > > knn;
Gudhi::subsampling::pick_n_random_points(point_vector, 100, std::back_inserter(landmarks));
- Gudhi::witness_complex::construct_closest_landmark_table(point_vector, landmarks, knn);
+ Gudhi::witness_complex::construct_closest_landmark_table<Simplex_tree::Filtration_value>(point_vector, landmarks, knn);
// Compute witness complex
Gudhi::witness_complex::witness_complex(knn, number_of_landmarks, point_vector[0].size(), simplex_tree);
diff --git a/src/Witness_complex/include/gudhi/Construct_closest_landmark_table.h b/src/Witness_complex/include/gudhi/Construct_closest_landmark_table.h
index ef711c34..a8cdd096 100644
--- a/src/Witness_complex/include/gudhi/Construct_closest_landmark_table.h
+++ b/src/Witness_complex/include/gudhi/Construct_closest_landmark_table.h
@@ -4,7 +4,7 @@
*
* Author(s): Siargey Kachanovich
*
- * Copyright (C) 2015 INRIA Sophia Antipolis-Méditerranée (France)
+ * Copyright (C) 2015 INRIA
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -51,7 +51,8 @@ namespace witness_complex {
* Closest_landmark_range needs to have push_back operation.
*/
- template <typename WitnessContainer,
+ template <typename FiltrationValue,
+ typename WitnessContainer,
typename LandmarkContainer,
typename KNearestNeighbours>
void construct_closest_landmark_table(WitnessContainer const &points,
@@ -72,7 +73,8 @@ namespace witness_complex {
int landmarks_i = 0;
for (landmarks_it = landmarks.begin(), landmarks_i = 0; landmarks_it != landmarks.end();
++landmarks_it, landmarks_i++) {
- dist_i dist = std::make_pair(euclidean_distance(points[points_i], *landmarks_it), landmarks_i);
+ dist_i dist = std::make_pair(Euclidean_distance()(points[points_i], *landmarks_it),
+ landmarks_i);
l_heap.push(dist);
}
for (int i = 0; i < dim + 1; i++) {
diff --git a/src/Witness_complex/include/gudhi/Witness_complex.h b/src/Witness_complex/include/gudhi/Witness_complex.h
index 489cdf11..1eb126f1 100644
--- a/src/Witness_complex/include/gudhi/Witness_complex.h
+++ b/src/Witness_complex/include/gudhi/Witness_complex.h
@@ -72,7 +72,6 @@ class Witness_complex {
typedef std::vector< Point_t > Point_Vector;
typedef std::vector< Vertex_handle > typeVectorVertex;
- typedef std::pair< typeVectorVertex, Filtration_value> typeSimplex;
typedef std::pair< Simplex_handle, bool > typePairSimplexBool;
typedef int Witness_id;
diff --git a/src/Witness_complex/test/simple_witness_complex.cpp b/src/Witness_complex/test/simple_witness_complex.cpp
index 03df78ee..6be39f58 100644
--- a/src/Witness_complex/test/simple_witness_complex.cpp
+++ b/src/Witness_complex/test/simple_witness_complex.cpp
@@ -33,7 +33,7 @@
#include <vector>
typedef Gudhi::Simplex_tree<> Simplex_tree;
-typedef std::vector< Vertex_handle > typeVectorVertex;
+typedef std::vector< Simplex_tree::Vertex_handle > typeVectorVertex;
typedef Gudhi::witness_complex::Witness_complex<Simplex_tree> WitnessComplex;
BOOST_AUTO_TEST_CASE(simple_witness_complex) {
diff --git a/src/Witness_complex/test/witness_complex_points.cpp b/src/Witness_complex/test/witness_complex_points.cpp
index d40bbf14..92f53417 100644
--- a/src/Witness_complex/test/witness_complex_points.cpp
+++ b/src/Witness_complex/test/witness_complex_points.cpp
@@ -34,8 +34,8 @@
#include <vector>
typedef std::vector<double> Point;
-typedef std::vector< Vertex_handle > typeVectorVertex;
typedef Gudhi::Simplex_tree<> Simplex_tree;
+typedef std::vector< Simplex_tree::Vertex_handle > typeVectorVertex;
typedef Gudhi::witness_complex::Witness_complex<Simplex_tree> WitnessComplex;
BOOST_AUTO_TEST_CASE(witness_complex_points) {
@@ -51,7 +51,7 @@ BOOST_AUTO_TEST_CASE(witness_complex_points) {
// First test: random choice
Simplex_tree complex1;
Gudhi::subsampling::pick_n_random_points(points, 100, std::back_inserter(landmarks));
- Gudhi::witness_complex::construct_closest_landmark_table(points, landmarks, knn);
+ Gudhi::witness_complex::construct_closest_landmark_table<Simplex_tree::Filtration_value>(points, landmarks, knn);
assert(!knn.empty());
WitnessComplex witnessComplex1(knn, 100, 3, complex1);
BOOST_CHECK(witnessComplex1.is_witness_complex(knn, b_print_output));
diff --git a/src/cmake/modules/FindQGLViewer.cmake b/src/cmake/modules/FindQGLViewer.cmake
index 1f3dbc1f..56c1b3cf 100644
--- a/src/cmake/modules/FindQGLViewer.cmake
+++ b/src/cmake/modules/FindQGLViewer.cmake
@@ -15,7 +15,7 @@ find_path(QGLVIEWER_INCLUDE_DIR
)
find_library(QGLVIEWER_LIBRARY_RELEASE
- NAMES qglviewer-qt4 QGLViewer-qt4 qglviewer QGLViewer QGLViewer2
+ NAMES qglviewer-qt5 QGLViewer-qt5 qglviewer QGLViewer QGLViewer2
PATHS /usr/lib
/usr/local/lib
ENV QGLVIEWERROOT
diff --git a/src/cmake/modules/GUDHI_user_version_target.txt b/src/cmake/modules/GUDHI_user_version_target.txt
index a48f0ee3..742cbe8c 100644
--- a/src/cmake/modules/GUDHI_user_version_target.txt
+++ b/src/cmake/modules/GUDHI_user_version_target.txt
@@ -50,7 +50,7 @@ if (NOT CMAKE_VERSION VERSION_LESS 2.8.11)
add_custom_command(TARGET user_version PRE_BUILD COMMAND ${CMAKE_COMMAND} -E
copy_directory ${CMAKE_SOURCE_DIR}/src/GudhUI ${GUDHI_USER_VERSION_DIR}/GudhUI)
- set(GUDHI_MODULES "common;Alpha_complex;Bitmap_cubical_complex;Contraction;Hasse_complex;Persistent_cohomology;Simplex_tree;Skeleton_blocker;Spatial_searching;Subsampling;Tangential_complex;Witness_complex")
+ set(GUDHI_MODULES "common;Alpha_complex;Bitmap_cubical_complex;Bottleneck_distance;Contraction;Hasse_complex;Persistent_cohomology;Rips_complex;Simplex_tree;Skeleton_blocker;Spatial_searching;Subsampling;Tangential_complex;Witness_complex")
foreach(GUDHI_MODULE ${GUDHI_MODULES})
# doc files
diff --git a/src/common/doc/main_page.h b/src/common/doc/main_page.h
index 1a2cb6ba..ca5a919c 100644
--- a/src/common/doc/main_page.h
+++ b/src/common/doc/main_page.h
@@ -28,6 +28,7 @@
<b>Author:</b> Vincent Rouvreau<br>
<b>Introduced in:</b> GUDHI 1.3.0<br>
<b>Copyright:</b> GPL v3<br>
+ <b>Requires:</b> \ref cgal &ge; 4.7.0 and \ref eigen3
</td>
<td width="75%">
Alpha_complex is a simplicial complex constructed from the finite cells of a Delaunay Triangulation.<br>
@@ -55,6 +56,24 @@
<b>User manual:</b> \ref cubical_complex - <b>Reference manual:</b> Gudhi::cubical_complex::Bitmap_cubical_complex
</td>
</tr>
+ \subsection RipsComplexDataStructure Rips complex
+ \image html "rips_complex_representation.png" "Rips complex representation"
+<table border="0">
+ <tr>
+ <td width="25%">
+ <b>Author:</b> Cl&eacute;ment Maria, Pawel Dlotko, Vincent Rouvreau<br>
+ <b>Introduced in:</b> GUDHI 1.4.0<br>
+ <b>Copyright:</b> GPL v3<br>
+ </td>
+ <td width="75%">
+ Rips_complex is a simplicial complex constructed from a one skeleton graph.<br>
+ The filtration value of each edge is computed from a user-given distance function and is inserted until a
+ user-given threshold value.<br>
+ This complex can be built from a point cloud and a distance function, or from a distance matrix.<br>
+ <b>User manual:</b> \ref rips_complex - <b>Reference manual:</b> Gudhi::rips_complex::Rips_complex
+ </td>
+ </tr>
+</table>
</table>
\subsection SimplexTreeDataStructure Simplex tree
\image html "Simplex_tree_representation.png" "Simplex tree representation"
@@ -130,6 +149,26 @@
</table>
\section Toolbox Toolbox
+ \subsection BottleneckDistanceToolbox Bottleneck distance
+ \image html "perturb_pd.png" "Bottleneck distance is the length of the longest edge"
+<table border="0">
+ <tr>
+ <td width="25%">
+ <b>Author:</b> Fran&ccedil;ois Godi<br>
+ <b>Introduced in:</b> GUDHI 1.4.0<br>
+ <b>Copyright:</b> GPL v3<br>
+ <b>Requires:</b> \ref cgal &ge; 4.8.0 and \ref eigen3
+ </td>
+ <td width="75%">
+ Bottleneck distance measures the similarity between two persistence diagrams.
+ It's the shortest distance b for which there exists a perfect matching between
+ the points of the two diagrams (+ all the diagonal points) such that
+ any couple of matched points are at distance at most b.
+ <br>
+ <b>User manual:</b> \ref bottleneck_distance
+ </td>
+ </tr>
+</table>
\subsection ContractionToolbox Contraction
\image html "sphere_contraction_representation.png" "Sphere contraction example"
<table border="0">
@@ -196,24 +235,22 @@ make \endverbatim
* \verbatim make test \endverbatim
*
* \section optionallibrary Optional third-party library
- * \subsection gmp GMP:
+ * \subsection gmp GMP
* The multi-field persistent homology algorithm requires GMP which is a free library for arbitrary-precision
* arithmetic, operating on signed integers, rational numbers, and floating point numbers.
*
* The following example requires the <a target="_blank" href="http://gmplib.org/">GNU Multiple Precision Arithmetic
* Library</a> (GMP) and will not be built if GMP is not installed:
- * \li <a href="_persistent_cohomology_2performance_rips_persistence_8cpp-example.html">
- * Persistent_cohomology/performance_rips_persistence.cpp</a>
* \li <a href="_persistent_cohomology_2rips_multifield_persistence_8cpp-example.html">
* Persistent_cohomology/rips_multifield_persistence.cpp</a>
*
* Having GMP version 4.2 or higher installed is recommended.
*
- * \subsection cgal CGAL:
- * The \ref alpha_complex data structure and few examples requires CGAL, which is a C++ library which provides easy
- * access to efficient and reliable geometric algorithms.
+ * \subsection cgal CGAL
+ * The \ref alpha_complex data structure, \ref bottleneck_distance, and few examples requires CGAL, which is a C++
+ * library which provides easy access to efficient and reliable geometric algorithms.
*
- * Having CGAL version 4.4 or higher installed is recommended. The procedure to install this library according to
+ * Having CGAL version 4.4.0 or higher installed is recommended. The procedure to install this library according to
* your operating system is detailed here http://doc.cgal.org/latest/Manual/installation.html
*
* The following examples require the <a target="_blank" href="http://www.cgal.org/">Computational Geometry Algorithms
@@ -223,11 +260,11 @@ make \endverbatim
* \li <a href="_simplex_tree_2example_alpha_shapes_3_simplex_tree_from_off_file_8cpp-example.html">
* Simplex_tree/example_alpha_shapes_3_simplex_tree_from_off_file.cpp</a>
*
- * The following example requires CGAL version &ge; 4.6:
+ * The following example requires CGAL version &ge; 4.6.0:
* \li <a href="_witness_complex_2witness_complex_sphere_8cpp-example.html">
* Witness_complex/witness_complex_sphere.cpp</a>
*
- * The following example requires CGAL version &ge; 4.7:
+ * The following example requires CGAL version &ge; 4.7.0:
* \li <a href="_alpha_complex_2_alpha_complex_from_off_8cpp-example.html">
* Alpha_complex/Alpha_complex_from_off.cpp</a>
* \li <a href="_alpha_complex_2_alpha_complex_from_points_8cpp-example.html">
@@ -239,7 +276,13 @@ make \endverbatim
* \li <a href="_persistent_cohomology_2custom_persistence_sort_8cpp-example.html">
* Persistent_cohomology/custom_persistence_sort.cpp</a>
*
- * \subsection eigen3 Eigen3:
+ * The following example requires CGAL version &ge; 4.8.0:
+ * \li <a href="_bottleneck_distance_2_bottleneck_basic_example_8cpp-example.html">
+ * Bottleneck_distance/bottleneck_basic_example.cpp</a>
+ * \li <a href="_bottleneck_distance_2_bottleneck_read_file_example_8cpp-example.html">
+ * Bottleneck_distance/bottleneck_read_file_example.cpp</a>
+ *
+ * \subsection eigen3 Eigen3
* The \ref alpha_complex data structure and few examples requires
* <a target="_blank" href="http://eigen.tuxfamily.org/">Eigen3</a> is a C++ template library for linear algebra:
* matrices, vectors, numerical solvers, and related algorithms.
@@ -247,9 +290,13 @@ make \endverbatim
* The following example requires the <a target="_blank" href="http://eigen.tuxfamily.org/">Eigen3</a> and will not be
* built if Eigen3 is not installed:
* \li <a href="_alpha_complex_2_alpha_complex_from_off_8cpp-example.html">
- * Alpha_complex/Alpha_complex_from_off.cpp</a> (requires also Eigen3)
+ * Alpha_complex/Alpha_complex_from_off.cpp</a>
* \li <a href="_alpha_complex_2_alpha_complex_from_points_8cpp-example.html">
- * Alpha_complex/Alpha_complex_from_points.cpp</a> (requires also Eigen3)
+ * Alpha_complex/Alpha_complex_from_points.cpp</a>
+ * \li <a href="_bottleneck_distance_2_bottleneck_basic_example_8cpp-example.html">
+ * Bottleneck_distance/bottleneck_basic_example.cpp</a>
+ * \li <a href="_bottleneck_distance_2_bottleneck_read_file_example_8cpp-example.html">
+ * Bottleneck_distance/bottleneck_read_file_example.cpp</a>
* \li <a href="_persistent_cohomology_2alpha_complex_persistence_8cpp-example.html">
* Persistent_cohomology/alpha_complex_persistence.cpp</a>
* \li <a href="_persistent_cohomology_2periodic_alpha_complex_3d_persistence_8cpp-example.html">
@@ -257,7 +304,7 @@ make \endverbatim
* \li <a href="_persistent_cohomology_2custom_persistence_sort_8cpp-example.html">
* Persistent_cohomology/custom_persistence_sort.cpp</a>
*
- * \subsection tbb Threading Building Blocks:
+ * \subsection tbb Threading Building Blocks
* <a target="_blank" href="https://www.threadingbuildingblocks.org/">Intel&reg; TBB</a> lets you easily write parallel
* C++ programs that take full advantage of multicore performance, that are portable and composable, and that have
* future-proof scalability.
@@ -291,22 +338,28 @@ make \endverbatim
* Persistent_cohomology/alpha_complex_persistence.cpp</a>
* \li <a href="_persistent_cohomology_2rips_persistence_via_boundary_matrix_8cpp-example.html">
* Persistent_cohomology/rips_persistence_via_boundary_matrix.cpp</a>
- * \li <a href="_persistent_cohomology_2performance_rips_persistence_8cpp-example.html">
- * Persistent_cohomology/performance_rips_persistence.cpp</a>
* \li <a href="_persistent_cohomology_2persistence_from_file_8cpp-example.html">
* Persistent_cohomology/persistence_from_file.cpp</a>
* \li <a href="_persistent_cohomology_2persistence_from_simple_simplex_tree_8cpp-example.html">
* Persistent_cohomology/persistence_from_simple_simplex_tree.cpp</a>
* \li <a href="_persistent_cohomology_2plain_homology_8cpp-example.html">
* Persistent_cohomology/plain_homology.cpp</a>
+ * \li <a href="_persistent_cohomology_2rips_distance_matrix_persistence_8cpp-example.html">
+ * Persistent_cohomology/rips_distance_matrix_persistence.cpp</a>
* \li <a href="_persistent_cohomology_2rips_multifield_persistence_8cpp-example.html">
* Persistent_cohomology/rips_multifield_persistence.cpp</a>
* \li <a href="_persistent_cohomology_2rips_persistence_8cpp-example.html">
* Persistent_cohomology/rips_persistence.cpp</a>
+ * \li <a href="_persistent_cohomology_2rips_persistence_step_by_step_8cpp-example.html">
+ * Persistent_cohomology/rips_persistence_step_by_step.cpp</a>
* \li <a href="_persistent_cohomology_2periodic_alpha_complex_3d_persistence_8cpp-example.html">
* Persistent_cohomology/periodic_alpha_complex_3d_persistence.cpp</a>
* \li <a href="_persistent_cohomology_2custom_persistence_sort_8cpp-example.html">
* Persistent_cohomology/custom_persistence_sort.cpp</a>
+ * \li <a href="_rips_complex_2example_one_skeleton_rips_from_points_8cpp-example.html">
+ * Rips_complex/example_one_skeleton_rips_from_points.cpp</a>
+ * \li <a href="_rips_complex_2example_rips_complex_from_off_file_8cpp-example.html">
+ * Rips_complex/example_rips_complex_from_off_file.cpp</a>
*
* \section Contributions Bug reports and contributions
* Please help us improving the quality of the GUDHI library. You may report bugs or suggestions to:
@@ -331,6 +384,8 @@ make \endverbatim
/*! @file Examples
* @example Alpha_complex/Alpha_complex_from_off.cpp
* @example Alpha_complex/Alpha_complex_from_points.cpp
+ * @example Bottleneck_distance/bottleneck_basic_example.cpp
+ * @example Bottleneck_distance/bottleneck_read_file_example.cpp
* @example Bitmap_cubical_complex/Bitmap_cubical_complex.cpp
* @example Bitmap_cubical_complex/Bitmap_cubical_complex_periodic_boundary_conditions.cpp
* @example Bitmap_cubical_complex/Random_bitmap_cubical_complex.cpp
@@ -341,14 +396,17 @@ make \endverbatim
* @example Persistent_cohomology/alpha_complex_3d_persistence.cpp
* @example Persistent_cohomology/alpha_complex_persistence.cpp
* @example Persistent_cohomology/rips_persistence_via_boundary_matrix.cpp
- * @example Persistent_cohomology/performance_rips_persistence.cpp
* @example Persistent_cohomology/periodic_alpha_complex_3d_persistence.cpp
* @example Persistent_cohomology/persistence_from_file.cpp
* @example Persistent_cohomology/persistence_from_simple_simplex_tree.cpp
* @example Persistent_cohomology/plain_homology.cpp
* @example Persistent_cohomology/rips_multifield_persistence.cpp
+ * @example Persistent_cohomology/rips_distance_matrix_persistence.cpp
* @example Persistent_cohomology/rips_persistence.cpp
* @example Persistent_cohomology/custom_persistence_sort.cpp
+ * @example Persistent_cohomology/rips_persistence_step_by_step.cpp
+ * @example Rips_complex/example_one_skeleton_rips_from_points.cpp
+ * @example Rips_complex/example_rips_complex_from_off_file.cpp
* @example Simplex_tree/mini_simplex_tree.cpp
* @example Simplex_tree/simple_simplex_tree.cpp
* @example Simplex_tree/example_alpha_shapes_3_simplex_tree_from_off_file.cpp
diff --git a/src/common/example/example_CGAL_3D_points_off_reader.cpp b/src/common/example/example_CGAL_3D_points_off_reader.cpp
index d48bb17d..665b7a29 100644
--- a/src/common/example/example_CGAL_3D_points_off_reader.cpp
+++ b/src/common/example/example_CGAL_3D_points_off_reader.cpp
@@ -32,7 +32,7 @@ int main(int argc, char **argv) {
// Retrieve the triangulation
std::vector<Point_3> point_cloud = off_reader.get_point_cloud();
- int n {0};
+ int n {};
for (auto point : point_cloud) {
++n;
std::cout << "Point[" << n << "] = (" << point[0] << ", " << point[1] << ", " << point[2] << ")\n";
diff --git a/src/common/example/example_CGAL_points_off_reader.cpp b/src/common/example/example_CGAL_points_off_reader.cpp
index 4522174a..8c6a6b54 100644
--- a/src/common/example/example_CGAL_points_off_reader.cpp
+++ b/src/common/example/example_CGAL_points_off_reader.cpp
@@ -34,7 +34,7 @@ int main(int argc, char **argv) {
// Retrieve the triangulation
std::vector<Point_d> point_cloud = off_reader.get_point_cloud();
- int n {0};
+ int n {};
for (auto point : point_cloud) {
std::cout << "Point[" << n << "] = ";
for (std::size_t i {0}; i < point.size(); i++)
diff --git a/src/common/include/gudhi/distance_functions.h b/src/common/include/gudhi/distance_functions.h
index cd518581..5891ef0e 100644
--- a/src/common/include/gudhi/distance_functions.h
+++ b/src/common/include/gudhi/distance_functions.h
@@ -4,7 +4,7 @@
*
* Author(s): Clément Maria
*
- * Copyright (C) 2014 INRIA Sophia Antipolis-Méditerranée (France)
+ * Copyright (C) 2014 INRIA
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -25,19 +25,25 @@
#include <cmath> // for std::sqrt
-/* Compute the Euclidean distance between two Points given
- * by a range of coordinates. The points are assumed to have
- * the same dimension. */
-template< typename Point >
-double euclidean_distance(Point &p1, Point &p2) {
- double dist = 0.;
- auto it1 = p1.begin();
- auto it2 = p2.begin();
- for (; it1 != p1.end(); ++it1, ++it2) {
- double tmp = *it1 - *it2;
- dist += tmp*tmp;
+/** @file
+ * @brief Global distance functions
+ */
+
+/** @brief Compute the Euclidean distance between two Points given by a range of coordinates. The points are assumed to
+ * have the same dimension. */
+class Euclidean_distance {
+ public:
+ template< typename Point >
+ auto operator()(const Point& p1, const Point& p2) -> typename std::decay<decltype(*std::begin(p1))>::type {
+ auto it1 = p1.begin();
+ auto it2 = p2.begin();
+ typename Point::value_type dist = 0.;
+ for (; it1 != p1.end(); ++it1, ++it2) {
+ typename Point::value_type tmp = (*it1) - (*it2);
+ dist += tmp*tmp;
+ }
+ return std::sqrt(dist);
}
- return std::sqrt(dist);
-}
+};
#endif // DISTANCE_FUNCTIONS_H_
diff --git a/src/common/include/gudhi/graph_simplicial_complex.h b/src/common/include/gudhi/graph_simplicial_complex.h
index 042ef516..5fe7c826 100644
--- a/src/common/include/gudhi/graph_simplicial_complex.h
+++ b/src/common/include/gudhi/graph_simplicial_complex.h
@@ -4,7 +4,7 @@
*
* Author(s): Clément Maria
*
- * Copyright (C) 2014 INRIA Sophia Antipolis-Méditerranée (France)
+ * Copyright (C) 2014 INRIA
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -39,61 +39,4 @@ struct vertex_filtration_t {
typedef boost::vertex_property_tag kind;
};
-typedef int Vertex_handle;
-typedef double Filtration_value;
-typedef boost::adjacency_list < boost::vecS, boost::vecS, boost::undirectedS
-, boost::property < vertex_filtration_t, Filtration_value >
-, boost::property < edge_filtration_t, Filtration_value >
-> Graph_t;
-typedef std::pair< Vertex_handle, Vertex_handle > Edge_t;
-
-/** \brief Output the proximity graph of the points.
- *
- * If points contains n elements, the proximity graph is the graph
- * with n vertices, and an edge [u,v] iff the distance function between
- * points u and v is smaller than threshold.
- *
- * The type PointCloud furnishes .begin() and .end() methods, that return
- * iterators with value_type Point.
- */
-template< typename PointCloud
-, typename Point >
-Graph_t compute_proximity_graph(PointCloud &points
- , Filtration_value threshold
- , Filtration_value distance(Point p1, Point p2)) {
- std::vector< Edge_t > edges;
- std::vector< Filtration_value > edges_fil;
- std::map< Vertex_handle, Filtration_value > vertices;
-
- Vertex_handle idx_u, idx_v;
- Filtration_value fil;
- idx_u = 0;
- for (auto it_u = points.begin(); it_u != points.end(); ++it_u) {
- idx_v = idx_u + 1;
- for (auto it_v = it_u + 1; it_v != points.end(); ++it_v, ++idx_v) {
- fil = distance(*it_u, *it_v);
- if (fil <= threshold) {
- edges.emplace_back(idx_u, idx_v);
- edges_fil.push_back(fil);
- }
- }
- ++idx_u;
- }
-
- Graph_t skel_graph(edges.begin()
- , edges.end()
- , edges_fil.begin()
- , idx_u); // number of points labeled from 0 to idx_u-1
-
- auto vertex_prop = boost::get(vertex_filtration_t(), skel_graph);
-
- boost::graph_traits<Graph_t>::vertex_iterator vi, vi_end;
- for (std::tie(vi, vi_end) = boost::vertices(skel_graph);
- vi != vi_end; ++vi) {
- boost::put(vertex_prop, *vi, 0.);
- }
-
- return skel_graph;
-}
-
#endif // GRAPH_SIMPLICIAL_COMPLEX_H_
diff --git a/src/common/include/gudhi/reader_utils.h b/src/common/include/gudhi/reader_utils.h
index 899f9df6..97a87edd 100644
--- a/src/common/include/gudhi/reader_utils.h
+++ b/src/common/include/gudhi/reader_utils.h
@@ -2,9 +2,9 @@
* (Geometric Understanding in Higher Dimensions) is a generic C++
* library for computational topology.
*
- * Author(s): Clément Maria
+ * Author(s): Clement Maria, Pawel Dlotko
*
- * Copyright (C) 2014 INRIA Sophia Antipolis-Méditerranée (France)
+ * Copyright (C) 2014 INRIA
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -30,18 +30,25 @@
#include <iostream>
#include <fstream>
#include <map>
-#include <limits> // for numeric_limits<>
+#include <limits> // for numeric_limits
#include <string>
#include <vector>
+#include <utility> // for pair
+
+// Keep this file tag for Doxygen to parse the code, otherwise, functions are not documented.
+// It is required for global functions and variables.
+
+/** @file
+ * @brief This file includes common file reader for GUDHI
+ */
/**
- * \brief Read a set of points to turn it
- * into a vector< vector<double> > by filling points
+ * @brief Read a set of points to turn it into a vector< vector<double> > by filling points.
*
- * File format: 1 point per line
- * X11 X12 ... X1d
- * X21 X22 ... X2d
- * etc
+ * File format: 1 point per line<br>
+ * X11 X12 ... X1d<br>
+ * X21 X22 ... X2d<br>
+ * etc<br>
*/
inline void read_points(std::string file_name, std::vector< std::vector< double > > & points) {
std::ifstream in_file(file_name.c_str(), std::ios::in);
@@ -66,23 +73,29 @@ inline void read_points(std::string file_name, std::vector< std::vector< double
}
/**
- * \brief Read a graph from a file.
+ * @brief Read a graph from a file.
+ *
+ * \tparam Graph_t Type for the return graph. Must be constructible from iterators on pairs of Vertex_handle
+ * \tparam Filtration_value Type for the value of the read filtration
+ * \tparam Vertex_handle Type for the value of the read vertices
*
- * File format: 1 simplex per line
- * Dim1 X11 X12 ... X1d Fil1
- * Dim2 X21 X22 ... X2d Fil2
- * etc
+ * File format: 1 simplex per line<br>
+ * Dim1 X11 X12 ... X1d Fil1<br>
+ * Dim2 X21 X22 ... X2d Fil2<br>
+ * etc<br>
*
* The vertices must be labeled from 0 to n-1.
* Every simplex must appear exactly once.
* Simplices of dimension more than 1 are ignored.
*/
-inline Graph_t read_graph(std::string file_name) {
+template< typename Graph_t, typename Filtration_value, typename Vertex_handle >
+Graph_t read_graph(std::string file_name) {
std::ifstream in_(file_name.c_str(), std::ios::in);
if (!in_.is_open()) {
std::cerr << "Unable to open file " << file_name << std::endl;
}
+ typedef std::pair< Vertex_handle, Vertex_handle > Edge_t;
std::vector< Edge_t > edges;
std::vector< Filtration_value > edges_fil;
std::map< Vertex_handle, Filtration_value > vertices;
@@ -130,7 +143,7 @@ inline Graph_t read_graph(std::string file_name) {
Graph_t skel_graph(edges.begin(), edges.end(), edges_fil.begin(), vertices.size());
auto vertex_prop = boost::get(vertex_filtration_t(), skel_graph);
- boost::graph_traits<Graph_t>::vertex_iterator vi, vi_end;
+ typename boost::graph_traits<Graph_t>::vertex_iterator vi, vi_end;
auto v_it = vertices.begin();
for (std::tie(vi, vi_end) = boost::vertices(skel_graph); vi != vi_end; ++vi, ++v_it) {
boost::put(vertex_prop, *vi, v_it->second);
@@ -140,12 +153,12 @@ inline Graph_t read_graph(std::string file_name) {
}
/**
- * \brief Read a face from a file.
+ * @brief Read a face from a file.
*
- * File format: 1 simplex per line
- * Dim1 X11 X12 ... X1d Fil1
- * Dim2 X21 X22 ... X2d Fil2
- * etc
+ * File format: 1 simplex per line<br>
+ * Dim1 X11 X12 ... X1d Fil1<br>
+ * Dim2 X21 X22 ... X2d Fil2<br>
+ * etc<br>
*
* The vertices must be labeled from 0 to n-1.
* Every simplex must appear exactly once.
@@ -166,18 +179,16 @@ bool read_simplex(std::istream & in_, std::vector< Vertex_handle > & simplex, Fi
}
/**
- * \brief Read a hasse simplex from a file.
- *
- * File format: 1 simplex per line
- * Dim1 k11 k12 ... k1Dim1 Fil1
- * Dim2 k21 k22 ... k2Dim2 Fil2
- * etc
- *
- * The key of a simplex is its position in the filtration order
- * and also the number of its row in the file.
- * Dimi ki1 ki2 ... kiDimi Fili means that the ith simplex in the
- * filtration has dimension Dimi, filtration value fil1 and simplices with
- * key ki1 ... kiDimi in its boundary.*/
+ * @brief Read a hasse simplex from a file.
+ *
+ * File format: 1 simplex per line<br>
+ * Dim1 k11 k12 ... k1Dim1 Fil1<br>
+ * Dim2 k21 k22 ... k2Dim2 Fil2<br>
+ * etc<br>
+ *
+ * The key of a simplex is its position in the filtration order and also the number of its row in the file.
+ * Dimi ki1 ki2 ... kiDimi Fili means that the ith simplex in the filtration has dimension Dimi, filtration value
+ * fil1 and simplices with key ki1 ... kiDimi in its boundary.*/
template< typename Simplex_key, typename Filtration_value >
bool read_hasse_simplex(std::istream & in_, std::vector< Simplex_key > & boundary, Filtration_value & fil) {
int dim;
@@ -195,4 +206,93 @@ bool read_hasse_simplex(std::istream & in_, std::vector< Simplex_key > & boundar
return true;
}
+/**
+ * @brief Read a lower triangular distance matrix from a csv file. We assume that the .csv store the whole
+ * (square) matrix.
+ *
+ * @author Pawel Dlotko
+ *
+ * Square matrix file format:<br>
+ * 0;D12;...;D1j<br>
+ * D21;0;...;D2j<br>
+ * ...<br>
+ * Dj1;Dj2;...;0<br>
+ *
+ * lower matrix file format:<br>
+ * 0<br>
+ * D21;<br>
+ * D31;D32;<br>
+ * ...<br>
+ * Dj1;Dj2;...;Dj(j-1);<br>
+ *
+ **/
+template< typename Filtration_value >
+std::vector< std::vector< Filtration_value > > read_lower_triangular_matrix_from_csv_file(const std::string& filename,
+ const char separator = ';') {
+#ifdef DEBUG_TRACES
+ std::cout << "Using procedure read_lower_triangular_matrix_from_csv_file \n";
+#endif // DEBUG_TRACES
+ std::vector< std::vector< Filtration_value > > result;
+ std::ifstream in;
+ in.open(filename.c_str());
+ if (!in.is_open()) {
+ return result;
+ }
+
+ std::string line;
+
+ // the first line is emtpy, so we ignore it:
+ std::getline(in, line);
+ std::vector< Filtration_value > values_in_this_line;
+ result.push_back(values_in_this_line);
+
+ int number_of_line = 0;
+
+ // first, read the file line by line to a string:
+ while (std::getline(in, line)) {
+ // if line is empty, break
+ if (line.size() == 0)
+ break;
+
+ // if the last element of a string is comma:
+ if (line[ line.size() - 1 ] == separator) {
+ // then shrink the string by one
+ line.pop_back();
+ }
+
+ // replace all commas with spaces
+ std::replace(line.begin(), line.end(), separator, ' ');
+
+ // put the new line to a stream
+ std::istringstream iss(line);
+ // and now read the doubles.
+
+ int number_of_entry = 0;
+ std::vector< Filtration_value > values_in_this_line;
+ while (iss.good()) {
+ double entry;
+ iss >> entry;
+ if (number_of_entry <= number_of_line) {
+ values_in_this_line.push_back(entry);
+ }
+ ++number_of_entry;
+ }
+ if (!values_in_this_line.empty())result.push_back(values_in_this_line);
+ ++number_of_line;
+ }
+ in.close();
+
+#ifdef DEBUG_TRACES
+ std::cerr << "Here is the matrix we read : \n";
+ for (size_t i = 0; i != result.size(); ++i) {
+ for (size_t j = 0; j != result[i].size(); ++j) {
+ std::cerr << result[i][j] << " ";
+ }
+ std::cerr << std::endl;
+ }
+#endif // DEBUG_TRACES
+
+ return result;
+} // read_lower_triangular_matrix_from_csv_file
+
#endif // READER_UTILS_H_
diff --git a/src/common/include/gudhi_patches/Bottleneck_distance_CGAL_patches.txt b/src/common/include/gudhi_patches/Bottleneck_distance_CGAL_patches.txt
new file mode 100644
index 00000000..a588d113
--- /dev/null
+++ b/src/common/include/gudhi_patches/Bottleneck_distance_CGAL_patches.txt
@@ -0,0 +1,3 @@
+CGAL/Kd_tree.h
+CGAL/Kd_tree_node.h
+CGAL/Orthogonal_incremental_neighbor_search.h
diff --git a/src/common/include/gudhi_patches/CGAL/Kd_tree.h b/src/common/include/gudhi_patches/CGAL/Kd_tree.h
new file mode 100644
index 00000000..f085b0da
--- /dev/null
+++ b/src/common/include/gudhi_patches/CGAL/Kd_tree.h
@@ -0,0 +1,582 @@
+// Copyright (c) 2002,2011,2014 Utrecht University (The Netherlands), Max-Planck-Institute Saarbruecken (Germany).
+// All rights reserved.
+//
+// This file is part of CGAL (www.cgal.org).
+// You can redistribute it and/or modify it under the terms of the GNU
+// General Public License as published by the Free Software Foundation,
+// either version 3 of the License, or (at your option) any later version.
+//
+// Licensees holding a valid commercial license may use this file in
+// accordance with the commercial license agreement provided with the software.
+//
+// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
+// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+//
+// $URL$
+// $Id$
+//
+// Author(s) : Hans Tangelder (<hanst@cs.uu.nl>),
+// : Waqar Khan <wkhan@mpi-inf.mpg.de>
+
+#ifndef CGAL_KD_TREE_H
+#define CGAL_KD_TREE_H
+
+#include "Kd_tree_node.h"
+
+#include <CGAL/basic.h>
+#include <CGAL/assertions.h>
+#include <vector>
+
+#include <CGAL/algorithm.h>
+#include <CGAL/internal/Get_dimension_tag.h>
+#include <CGAL/Search_traits.h>
+
+
+#include <deque>
+#include <boost/container/deque.hpp>
+#include <boost/optional.hpp>
+
+#ifdef CGAL_HAS_THREADS
+#include <CGAL/mutex.h>
+#endif
+
+namespace CGAL {
+
+//template <class SearchTraits, class Splitter_=Median_of_rectangle<SearchTraits>, class UseExtendedNode = Tag_true >
+template <class SearchTraits, class Splitter_=Sliding_midpoint<SearchTraits>, class UseExtendedNode = Tag_true >
+class Kd_tree {
+
+public:
+ typedef SearchTraits Traits;
+ typedef Splitter_ Splitter;
+ typedef typename SearchTraits::Point_d Point_d;
+ typedef typename Splitter::Container Point_container;
+
+ typedef typename SearchTraits::FT FT;
+ typedef Kd_tree_node<SearchTraits, Splitter, UseExtendedNode > Node;
+ typedef Kd_tree_leaf_node<SearchTraits, Splitter, UseExtendedNode > Leaf_node;
+ typedef Kd_tree_internal_node<SearchTraits, Splitter, UseExtendedNode > Internal_node;
+ typedef Kd_tree<SearchTraits, Splitter> Tree;
+ typedef Kd_tree<SearchTraits, Splitter,UseExtendedNode> Self;
+
+ typedef Node* Node_handle;
+ typedef const Node* Node_const_handle;
+ typedef Leaf_node* Leaf_node_handle;
+ typedef const Leaf_node* Leaf_node_const_handle;
+ typedef Internal_node* Internal_node_handle;
+ typedef const Internal_node* Internal_node_const_handle;
+ typedef typename std::vector<const Point_d*>::const_iterator Point_d_iterator;
+ typedef typename std::vector<const Point_d*>::const_iterator Point_d_const_iterator;
+ typedef typename Splitter::Separator Separator;
+ typedef typename std::vector<Point_d>::const_iterator iterator;
+ typedef typename std::vector<Point_d>::const_iterator const_iterator;
+
+ typedef typename std::vector<Point_d>::size_type size_type;
+
+ typedef typename internal::Get_dimension_tag<SearchTraits>::Dimension D;
+
+private:
+ SearchTraits traits_;
+ Splitter split;
+
+
+ // wokaround for https://svn.boost.org/trac/boost/ticket/9332
+#if (_MSC_VER == 1800) && (BOOST_VERSION == 105500)
+ std::deque<Internal_node> internal_nodes;
+ std::deque<Leaf_node> leaf_nodes;
+#else
+ boost::container::deque<Internal_node> internal_nodes;
+ boost::container::deque<Leaf_node> leaf_nodes;
+#endif
+
+ Node_handle tree_root;
+
+ Kd_tree_rectangle<FT,D>* bbox;
+ std::vector<Point_d> pts;
+
+ // Instead of storing the points in arrays in the Kd_tree_node
+ // we put all the data in a vector in the Kd_tree.
+ // and we only store an iterator range in the Kd_tree_node.
+ //
+ std::vector<const Point_d*> data;
+
+
+ #ifdef CGAL_HAS_THREADS
+ mutable CGAL_MUTEX building_mutex;//mutex used to protect const calls inducing build()
+ #endif
+ bool built_;
+ bool removed_;
+
+ // protected copy constructor
+ Kd_tree(const Tree& tree)
+ : traits_(tree.traits_),built_(tree.built_)
+ {};
+
+
+ // Instead of the recursive construction of the tree in the class Kd_tree_node
+ // we do this in the tree class. The advantage is that we then can optimize
+ // the allocation of the nodes.
+
+ // The leaf node
+ Node_handle
+ create_leaf_node(Point_container& c)
+ {
+ Leaf_node node(true , static_cast<unsigned int>(c.size()));
+ std::ptrdiff_t tmp = c.begin() - data.begin();
+ node.data = pts.begin() + tmp;
+
+ leaf_nodes.push_back(node);
+ Leaf_node_handle nh = &leaf_nodes.back();
+
+
+ return nh;
+ }
+
+
+ // The internal node
+
+ Node_handle
+ create_internal_node(Point_container& c, const Tag_true&)
+ {
+ return create_internal_node_use_extension(c);
+ }
+
+ Node_handle
+ create_internal_node(Point_container& c, const Tag_false&)
+ {
+ return create_internal_node(c);
+ }
+
+
+
+ // TODO: Similiar to the leaf_init function above, a part of the code should be
+ // moved to a the class Kd_tree_node.
+ // It is not proper yet, but the goal was to see if there is
+ // a potential performance gain through the Compact_container
+ Node_handle
+ create_internal_node_use_extension(Point_container& c)
+ {
+ Internal_node node(false);
+ internal_nodes.push_back(node);
+ Internal_node_handle nh = &internal_nodes.back();
+
+ Separator sep;
+ Point_container c_low(c.dimension(),traits_);
+ split(sep, c, c_low);
+ nh->set_separator(sep);
+
+ int cd = nh->cutting_dimension();
+ if(!c_low.empty()){
+ nh->lower_low_val = c_low.tight_bounding_box().min_coord(cd);
+ nh->lower_high_val = c_low.tight_bounding_box().max_coord(cd);
+ }
+ else{
+ nh->lower_low_val = nh->cutting_value();
+ nh->lower_high_val = nh->cutting_value();
+ }
+ if(!c.empty()){
+ nh->upper_low_val = c.tight_bounding_box().min_coord(cd);
+ nh->upper_high_val = c.tight_bounding_box().max_coord(cd);
+ }
+ else{
+ nh->upper_low_val = nh->cutting_value();
+ nh->upper_high_val = nh->cutting_value();
+ }
+
+ CGAL_assertion(nh->cutting_value() >= nh->lower_low_val);
+ CGAL_assertion(nh->cutting_value() <= nh->upper_high_val);
+
+ if (c_low.size() > split.bucket_size()){
+ nh->lower_ch = create_internal_node_use_extension(c_low);
+ }else{
+ nh->lower_ch = create_leaf_node(c_low);
+ }
+ if (c.size() > split.bucket_size()){
+ nh->upper_ch = create_internal_node_use_extension(c);
+ }else{
+ nh->upper_ch = create_leaf_node(c);
+ }
+
+
+
+
+ return nh;
+ }
+
+
+ // Note also that I duplicated the code to get rid if the if's for
+ // the boolean use_extension which was constant over the construction
+ Node_handle
+ create_internal_node(Point_container& c)
+ {
+ Internal_node node(false);
+ internal_nodes.push_back(node);
+ Internal_node_handle nh = &internal_nodes.back();
+ Separator sep;
+
+ Point_container c_low(c.dimension(),traits_);
+ split(sep, c, c_low);
+ nh->set_separator(sep);
+
+ if (c_low.size() > split.bucket_size()){
+ nh->lower_ch = create_internal_node(c_low);
+ }else{
+ nh->lower_ch = create_leaf_node(c_low);
+ }
+ if (c.size() > split.bucket_size()){
+ nh->upper_ch = create_internal_node(c);
+ }else{
+ nh->upper_ch = create_leaf_node(c);
+ }
+
+
+
+ return nh;
+ }
+
+
+
+public:
+
+ Kd_tree(Splitter s = Splitter(),const SearchTraits traits=SearchTraits())
+ : traits_(traits),split(s), built_(false), removed_(false)
+ {}
+
+ template <class InputIterator>
+ Kd_tree(InputIterator first, InputIterator beyond,
+ Splitter s = Splitter(),const SearchTraits traits=SearchTraits())
+ : traits_(traits),split(s), built_(false), removed_(false)
+ {
+ pts.insert(pts.end(), first, beyond);
+ }
+
+ bool empty() const {
+ return pts.empty();
+ }
+
+ void
+ build()
+ {
+ // This function is not ready to be called when a tree already exists, one
+ // must call invalidate_built() first.
+ CGAL_assertion(!is_built());
+ CGAL_assertion(!removed_);
+ const Point_d& p = *pts.begin();
+ typename SearchTraits::Construct_cartesian_const_iterator_d ccci=traits_.construct_cartesian_const_iterator_d_object();
+ int dim = static_cast<int>(std::distance(ccci(p), ccci(p,0)));
+
+ data.reserve(pts.size());
+ for(unsigned int i = 0; i < pts.size(); i++){
+ data.push_back(&pts[i]);
+ }
+ Point_container c(dim, data.begin(), data.end(),traits_);
+ bbox = new Kd_tree_rectangle<FT,D>(c.bounding_box());
+ if (c.size() <= split.bucket_size()){
+ tree_root = create_leaf_node(c);
+ }else {
+ tree_root = create_internal_node(c, UseExtendedNode());
+ }
+
+ //Reorder vector for spatial locality
+ std::vector<Point_d> ptstmp;
+ ptstmp.resize(pts.size());
+ for (std::size_t i = 0; i < pts.size(); ++i){
+ ptstmp[i] = *data[i];
+ }
+ for(std::size_t i = 0; i < leaf_nodes.size(); ++i){
+ std::ptrdiff_t tmp = leaf_nodes[i].begin() - pts.begin();
+ leaf_nodes[i].data = ptstmp.begin() + tmp;
+ }
+ pts.swap(ptstmp);
+
+ data.clear();
+
+ built_ = true;
+ }
+
+private:
+ //any call to this function is for the moment not threadsafe
+ void const_build() const {
+ #ifdef CGAL_HAS_THREADS
+ //this ensure that build() will be called once
+ CGAL_SCOPED_LOCK(building_mutex);
+ if(!is_built())
+ #endif
+ const_cast<Self*>(this)->build(); //THIS IS NOT THREADSAFE
+ }
+public:
+
+ bool is_built() const
+ {
+ return built_;
+ }
+
+ void invalidate_built()
+ {
+ if(removed_){
+ // Walk the tree to collect the remaining points.
+ // Writing directly to pts would likely work, but better be safe.
+ std::vector<Point_d> ptstmp;
+ //ptstmp.resize(root()->num_items());
+ root()->tree_items(std::back_inserter(ptstmp));
+ pts.swap(ptstmp);
+ removed_=false;
+ CGAL_assertion(is_built()); // the rest of the cleanup must happen
+ }
+ if(is_built()){
+ internal_nodes.clear();
+ leaf_nodes.clear();
+ data.clear();
+ delete bbox;
+ built_ = false;
+ }
+ }
+
+ void clear()
+ {
+ invalidate_built();
+ pts.clear();
+ removed_ = false;
+ }
+
+ void
+ insert(const Point_d& p)
+ {
+ invalidate_built();
+ pts.push_back(p);
+ }
+
+ template <class InputIterator>
+ void
+ insert(InputIterator first, InputIterator beyond)
+ {
+ invalidate_built();
+ pts.insert(pts.end(),first, beyond);
+ }
+
+private:
+ struct Equal_by_coordinates {
+ SearchTraits const* traits;
+ Point_d const* pp;
+ bool operator()(Point_d const&q) const {
+ typename SearchTraits::Construct_cartesian_const_iterator_d ccci=traits->construct_cartesian_const_iterator_d_object();
+ return std::equal(ccci(*pp), ccci(*pp,0), ccci(q));
+ }
+ };
+ Equal_by_coordinates equal_by_coordinates(Point_d const&p){
+ Equal_by_coordinates ret = { &traits(), &p };
+ return ret;
+ }
+
+public:
+ void
+ remove(const Point_d& p)
+ {
+ remove(p, equal_by_coordinates(p));
+ }
+
+ template<class Equal>
+ void
+ remove(const Point_d& p, Equal const& equal_to_p)
+ {
+#if 0
+ // This code could have quadratic runtime.
+ if (!is_built()) {
+ std::vector<Point_d>::iterator pi = std::find(pts.begin(), pts.end(), p);
+ // Precondition: the point must be there.
+ CGAL_assertion (pi != pts.end());
+ pts.erase(pi);
+ return;
+ }
+#endif
+ bool success = remove_(p, 0, false, 0, false, root(), equal_to_p);
+ CGAL_assertion(success);
+
+ // Do not set the flag is the tree has been cleared.
+ if(is_built())
+ removed_ |= success;
+ }
+private:
+ template<class Equal>
+ bool remove_(const Point_d& p,
+ Internal_node_handle grandparent, bool parent_islower,
+ Internal_node_handle parent, bool islower,
+ Node_handle node, Equal const& equal_to_p) {
+ // Recurse to locate the point
+ if (!node->is_leaf()) {
+ Internal_node_handle newparent = static_cast<Internal_node_handle>(node);
+ // FIXME: This should be if(x<y) remove low; else remove up;
+ if (traits().construct_cartesian_const_iterator_d_object()(p)[newparent->cutting_dimension()] <= newparent->cutting_value()) {
+ if (remove_(p, parent, islower, newparent, true, newparent->lower(), equal_to_p))
+ return true;
+ }
+ //if (traits().construct_cartesian_const_iterator_d_object()(p)[newparent->cutting_dimension()] >= newparent->cutting_value())
+ return remove_(p, parent, islower, newparent, false, newparent->upper(), equal_to_p);
+
+ CGAL_assertion(false); // Point was not found
+ }
+
+ // Actual removal
+ Leaf_node_handle lnode = static_cast<Leaf_node_handle>(node);
+ if (lnode->size() > 1) {
+ iterator pi = std::find_if(lnode->begin(), lnode->end(), equal_to_p);
+ // FIXME: we should ensure this never happens
+ if (pi == lnode->end()) return false;
+ iterator lasti = lnode->end() - 1;
+ if (pi != lasti) {
+ // Hack to get a non-const iterator
+ std::iter_swap(pts.begin()+(pi-pts.begin()), pts.begin()+(lasti-pts.begin()));
+ }
+ lnode->drop_last_point();
+ } else if (!equal_to_p(*lnode->begin())) {
+ // FIXME: we should ensure this never happens
+ return false;
+ } else if (grandparent) {
+ Node_handle brother = islower ? parent->upper() : parent->lower();
+ if (parent_islower)
+ grandparent->set_lower(brother);
+ else
+ grandparent->set_upper(brother);
+ } else if (parent) {
+ tree_root = islower ? parent->upper() : parent->lower();
+ } else {
+ clear();
+ }
+ return true;
+ }
+
+public:
+ //For efficiency; reserve the size of the points vectors in advance (if the number of points is already known).
+ void reserve(size_t size)
+ {
+ pts.reserve(size);
+ }
+
+ //Get the capacity of the underlying points vector.
+ size_t capacity()
+ {
+ return pts.capacity();
+ }
+
+
+ template <class OutputIterator, class FuzzyQueryItem>
+ OutputIterator
+ search(OutputIterator it, const FuzzyQueryItem& q) const
+ {
+ if(! pts.empty()){
+
+ if(! is_built()){
+ const_build();
+ }
+ Kd_tree_rectangle<FT,D> b(*bbox);
+ return tree_root->search(it,q,b);
+ }
+ return it;
+ }
+
+
+ template <class FuzzyQueryItem>
+ boost::optional<Point_d>
+ search_any_point(const FuzzyQueryItem& q) const
+ {
+ if(! pts.empty()){
+
+ if(! is_built()){
+ const_build();
+ }
+ Kd_tree_rectangle<FT,D> b(*bbox);
+ return tree_root->search_any_point(q,b);
+ }
+ return boost::none;
+ }
+
+
+ ~Kd_tree() {
+ if(is_built()){
+ delete bbox;
+ }
+ }
+
+
+ const SearchTraits&
+ traits() const
+ {
+ return traits_;
+ }
+
+ Node_const_handle
+ root() const
+ {
+ if(! is_built()){
+ const_build();
+ }
+ return tree_root;
+ }
+
+ Node_handle
+ root()
+ {
+ if(! is_built()){
+ build();
+ }
+ return tree_root;
+ }
+
+ void
+ print() const
+ {
+ if(! is_built()){
+ const_build();
+ }
+ root()->print();
+ }
+
+ const Kd_tree_rectangle<FT,D>&
+ bounding_box() const
+ {
+ if(! is_built()){
+ const_build();
+ }
+ return *bbox;
+ }
+
+ const_iterator
+ begin() const
+ {
+ return pts.begin();
+ }
+
+ const_iterator
+ end() const
+ {
+ return pts.end();
+ }
+
+ size_type
+ size() const
+ {
+ return pts.size();
+ }
+
+ // Print statistics of the tree.
+ std::ostream&
+ statistics(std::ostream& s) const
+ {
+ if(! is_built()){
+ const_build();
+ }
+ s << "Tree statistics:" << std::endl;
+ s << "Number of items stored: "
+ << root()->num_items() << std::endl;
+ s << "Number of nodes: "
+ << root()->num_nodes() << std::endl;
+ s << " Tree depth: " << root()->depth() << std::endl;
+ return s;
+ }
+
+
+};
+
+} // namespace CGAL
+
+#endif // CGAL_KD_TREE_H
diff --git a/src/common/include/gudhi_patches/CGAL/Kd_tree_node.h b/src/common/include/gudhi_patches/CGAL/Kd_tree_node.h
new file mode 100644
index 00000000..909ee260
--- /dev/null
+++ b/src/common/include/gudhi_patches/CGAL/Kd_tree_node.h
@@ -0,0 +1,586 @@
+// Copyright (c) 2002,2011 Utrecht University (The Netherlands).
+// All rights reserved.
+//
+// This file is part of CGAL (www.cgal.org).
+// You can redistribute it and/or modify it under the terms of the GNU
+// General Public License as published by the Free Software Foundation,
+// either version 3 of the License, or (at your option) any later version.
+//
+// Licensees holding a valid commercial license may use this file in
+// accordance with the commercial license agreement provided with the software.
+//
+// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
+// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+//
+// $URL$
+// $Id$
+//
+//
+// Authors : Hans Tangelder (<hanst@cs.uu.nl>)
+
+#ifndef CGAL_KD_TREE_NODE_H
+#define CGAL_KD_TREE_NODE_H
+
+#include "CGAL/Splitters.h"
+
+#include <CGAL/Compact_container.h>
+#include <boost/cstdint.hpp>
+
+namespace CGAL {
+
+ template <class SearchTraits, class Splitter, class UseExtendedNode>
+ class Kd_tree;
+
+ template < class TreeTraits, class Splitter, class UseExtendedNode >
+ class Kd_tree_node {
+
+ friend class Kd_tree<TreeTraits,Splitter,UseExtendedNode>;
+
+ typedef typename Kd_tree<TreeTraits,Splitter,UseExtendedNode>::Node_handle Node_handle;
+ typedef typename Kd_tree<TreeTraits,Splitter,UseExtendedNode>::Node_const_handle Node_const_handle;
+ typedef typename Kd_tree<TreeTraits,Splitter,UseExtendedNode>::Internal_node_handle Internal_node_handle;
+ typedef typename Kd_tree<TreeTraits,Splitter,UseExtendedNode>::Internal_node_const_handle Internal_node_const_handle;
+ typedef typename Kd_tree<TreeTraits,Splitter,UseExtendedNode>::Leaf_node_handle Leaf_node_handle;
+ typedef typename Kd_tree<TreeTraits,Splitter,UseExtendedNode>::Leaf_node_const_handle Leaf_node_const_handle;
+ typedef typename TreeTraits::Point_d Point_d;
+
+ typedef typename TreeTraits::FT FT;
+ typedef typename Kd_tree<TreeTraits,Splitter,UseExtendedNode>::Separator Separator;
+ typedef typename Kd_tree<TreeTraits,Splitter,UseExtendedNode>::Point_d_iterator Point_d_iterator;
+ typedef typename Kd_tree<TreeTraits,Splitter,UseExtendedNode>::iterator iterator;
+ typedef typename Kd_tree<TreeTraits,Splitter,UseExtendedNode>::D D;
+
+ bool leaf;
+
+ public :
+ Kd_tree_node(bool leaf_)
+ :leaf(leaf_){}
+
+ bool is_leaf() const{
+ return leaf;
+ }
+
+ std::size_t
+ num_items() const
+ {
+ if (is_leaf()){
+ Leaf_node_const_handle node =
+ static_cast<Leaf_node_const_handle>(this);
+ return node->size();
+ }
+ else {
+ Internal_node_const_handle node =
+ static_cast<Internal_node_const_handle>(this);
+ return node->lower()->num_items() + node->upper()->num_items();
+ }
+ }
+
+ std::size_t
+ num_nodes() const
+ {
+ if (is_leaf()) return 1;
+ else {
+ Internal_node_const_handle node =
+ static_cast<Internal_node_const_handle>(this);
+ return node->lower()->num_nodes() + node->upper()->num_nodes();
+ }
+ }
+
+ int
+ depth(const int current_max_depth) const
+ {
+ if (is_leaf()){
+ return current_max_depth;
+ }
+ else {
+ Internal_node_const_handle node =
+ static_cast<Internal_node_const_handle>(this);
+ return
+ (std::max)( node->lower()->depth(current_max_depth + 1),
+ node->upper()->depth(current_max_depth + 1));
+ }
+ }
+
+ int
+ depth() const
+ {
+ return depth(1);
+ }
+
+ template <class OutputIterator>
+ OutputIterator
+ tree_items(OutputIterator it) const {
+ if (is_leaf()) {
+ Leaf_node_const_handle node =
+ static_cast<Leaf_node_const_handle>(this);
+ if (node->size()>0)
+ for (iterator i=node->begin(); i != node->end(); i++)
+ {*it=*i; ++it;}
+ }
+ else {
+ Internal_node_const_handle node =
+ static_cast<Internal_node_const_handle>(this);
+ it=node->lower()->tree_items(it);
+ it=node->upper()->tree_items(it);
+ }
+ return it;
+ }
+
+
+ boost::optional<Point_d>
+ any_tree_item() const {
+ boost::optional<Point_d> result = boost::none;
+ if (is_leaf()) {
+ Leaf_node_const_handle node =
+ static_cast<Leaf_node_const_handle>(this);
+ if (node->size()>0){
+ return boost::make_optional(*(node->begin()));
+ }
+ }
+ else {
+ Internal_node_const_handle node =
+ static_cast<Internal_node_const_handle>(this);
+ result = node->lower()->any_tree_item();
+ if(! result){
+ result = node->upper()->any_tree_item();
+ }
+ }
+ return result;
+ }
+
+
+ void
+ indent(int d) const
+ {
+ for(int i = 0; i < d; i++){
+ std::cout << " ";
+ }
+ }
+
+
+ void
+ print(int d = 0) const
+ {
+ if (is_leaf()) {
+ Leaf_node_const_handle node =
+ static_cast<Leaf_node_const_handle>(this);
+ indent(d);
+ std::cout << "leaf" << std::endl;
+ if (node->size()>0)
+ for (iterator i=node->begin(); i != node->end(); i++)
+ {indent(d);std::cout << *i << std::endl;}
+ }
+ else {
+ Internal_node_const_handle node =
+ static_cast<Internal_node_const_handle>(this);
+ indent(d);
+ std::cout << "lower tree" << std::endl;
+ node->lower()->print(d+1);
+ indent(d);
+ std::cout << "separator: dim = " << node->cutting_dimension() << " val = " << node->cutting_value() << std::endl;
+ indent(d);
+ std::cout << "upper tree" << std::endl;
+ node->upper()->print(d+1);
+ }
+ }
+
+
+ template <class OutputIterator, class FuzzyQueryItem>
+ OutputIterator
+ search(OutputIterator it, const FuzzyQueryItem& q,
+ Kd_tree_rectangle<FT,D>& b) const
+ {
+ if (is_leaf()) {
+ Leaf_node_const_handle node =
+ static_cast<Leaf_node_const_handle>(this);
+ if (node->size()>0)
+ for (iterator i=node->begin(); i != node->end(); i++)
+ if (q.contains(*i))
+ {*it++=*i;}
+ }
+ else {
+ Internal_node_const_handle node =
+ static_cast<Internal_node_const_handle>(this);
+ // after splitting b denotes the lower part of b
+ Kd_tree_rectangle<FT,D> b_upper(b);
+ b.split(b_upper, node->cutting_dimension(),
+ node->cutting_value());
+
+ if (q.outer_range_contains(b))
+ it=node->lower()->tree_items(it);
+ else
+ if (q.inner_range_intersects(b))
+ it=node->lower()->search(it,q,b);
+ if (q.outer_range_contains(b_upper))
+ it=node->upper()->tree_items(it);
+ else
+ if (q.inner_range_intersects(b_upper))
+ it=node->upper()->search(it,q,b_upper);
+ };
+ return it;
+ }
+
+
+ template <class FuzzyQueryItem>
+ boost::optional<Point_d>
+ search_any_point(const FuzzyQueryItem& q,
+ Kd_tree_rectangle<FT,D>& b) const
+ {
+ boost::optional<Point_d> result = boost::none;
+ if (is_leaf()) {
+ Leaf_node_const_handle node =
+ static_cast<Leaf_node_const_handle>(this);
+ if (node->size()>0)
+ for (iterator i=node->begin(); i != node->end(); i++)
+ if (q.contains(*i))
+ { result = *i; break; }
+ }
+ else {
+ Internal_node_const_handle node =
+ static_cast<Internal_node_const_handle>(this);
+ // after splitting b denotes the lower part of b
+ Kd_tree_rectangle<FT,D> b_upper(b);
+ b.split(b_upper, node->cutting_dimension(),
+ node->cutting_value());
+
+ if (q.outer_range_contains(b)){
+ result = node->lower()->any_tree_item();
+ }else{
+ if (q.inner_range_intersects(b)){
+ result = node->lower()->search_any_point(q,b);
+ }
+ }
+ if(result){
+ return result;
+ }
+ if (q.outer_range_contains(b_upper)){
+ result = node->upper()->any_tree_item();
+ }else{
+ if (q.inner_range_intersects(b_upper))
+ result = node->upper()->search_any_point(q,b_upper);
+ }
+ }
+ return result;
+ }
+
+ };
+
+
+ template < class TreeTraits, class Splitter, class UseExtendedNode >
+ class Kd_tree_leaf_node : public Kd_tree_node< TreeTraits, Splitter, UseExtendedNode >{
+
+ friend class Kd_tree<TreeTraits,Splitter,UseExtendedNode>;
+
+ typedef typename Kd_tree<TreeTraits,Splitter,UseExtendedNode>::iterator iterator;
+ typedef Kd_tree_node< TreeTraits, Splitter, UseExtendedNode> Base;
+ typedef typename TreeTraits::Point_d Point_d;
+
+ private:
+
+ // private variables for leaf nodes
+ boost::int32_t n; // denotes number of items in a leaf node
+ iterator data; // iterator to data in leaf node
+
+
+ public:
+
+ // default constructor
+ Kd_tree_leaf_node()
+ {}
+
+ Kd_tree_leaf_node(bool leaf_ )
+ : Base(leaf_)
+ {}
+
+ Kd_tree_leaf_node(bool leaf_,unsigned int n_ )
+ : Base(leaf_), n(n_)
+ {}
+
+ // members for all nodes
+
+ // members for leaf nodes only
+ inline
+ unsigned int
+ size() const
+ {
+ return n;
+ }
+
+ inline
+ iterator
+ begin() const
+ {
+ return data;
+ }
+
+ inline
+ iterator
+ end() const
+ {
+ return data + n;
+ }
+
+ inline
+ void
+ drop_last_point()
+ {
+ --n;
+ }
+
+ }; //leaf node
+
+
+
+ template < class TreeTraits, class Splitter, class UseExtendedNode>
+ class Kd_tree_internal_node : public Kd_tree_node< TreeTraits, Splitter, UseExtendedNode >{
+
+ friend class Kd_tree<TreeTraits,Splitter,UseExtendedNode>;
+
+ typedef Kd_tree_node< TreeTraits, Splitter, UseExtendedNode> Base;
+ typedef typename Kd_tree<TreeTraits,Splitter,UseExtendedNode>::Node_handle Node_handle;
+ typedef typename Kd_tree<TreeTraits,Splitter,UseExtendedNode>::Node_const_handle Node_const_handle;
+
+ typedef typename TreeTraits::FT FT;
+ typedef typename Kd_tree<TreeTraits,Splitter,UseExtendedNode>::Separator Separator;
+
+ private:
+
+ // private variables for internal nodes
+ boost::int32_t cut_dim;
+ FT cut_val;
+ Node_handle lower_ch, upper_ch;
+
+
+ // private variables for extended internal nodes
+ FT upper_low_val;
+ FT upper_high_val;
+ FT lower_low_val;
+ FT lower_high_val;
+
+
+ public:
+
+ // default constructor
+ Kd_tree_internal_node()
+ {}
+
+ Kd_tree_internal_node(bool leaf_)
+ : Base(leaf_)
+ {}
+
+
+ // members for internal node and extended internal node
+
+ inline
+ Node_const_handle
+ lower() const
+ {
+ return lower_ch;
+ }
+
+ inline
+ Node_const_handle
+ upper() const
+ {
+ return upper_ch;
+ }
+
+ inline
+ Node_handle
+ lower()
+ {
+ return lower_ch;
+ }
+
+ inline
+ Node_handle
+ upper()
+ {
+ return upper_ch;
+ }
+
+ inline
+ void
+ set_lower(Node_handle nh)
+ {
+ lower_ch = nh;
+ }
+
+ inline
+ void
+ set_upper(Node_handle nh)
+ {
+ upper_ch = nh;
+ }
+
+ // inline Separator& separator() {return sep; }
+ // use instead
+ inline
+ void set_separator(Separator& sep){
+ cut_dim = sep.cutting_dimension();
+ cut_val = sep.cutting_value();
+ }
+
+ inline
+ FT
+ cutting_value() const
+ {
+ return cut_val;
+ }
+
+ inline
+ int
+ cutting_dimension() const
+ {
+ return cut_dim;
+ }
+
+ // members for extended internal node only
+ inline
+ FT
+ upper_low_value() const
+ {
+ return upper_low_val;
+ }
+
+ inline
+ FT
+ upper_high_value() const
+ {
+ return upper_high_val;
+ }
+
+ inline
+ FT
+ lower_low_value() const
+ {
+ return lower_low_val;
+ }
+
+ inline
+ FT
+ lower_high_value() const
+ {
+ return lower_high_val;
+ }
+
+ /*Separator&
+ separator()
+ {
+ return Separator(cutting_dimension,cutting_value);
+ }*/
+
+
+ };//internal node
+
+ template < class TreeTraits, class Splitter>
+ class Kd_tree_internal_node<TreeTraits,Splitter,Tag_false> : public Kd_tree_node< TreeTraits, Splitter, Tag_false >{
+
+ friend class Kd_tree<TreeTraits,Splitter,Tag_false>;
+
+ typedef Kd_tree_node< TreeTraits, Splitter, Tag_false> Base;
+ typedef typename Kd_tree<TreeTraits,Splitter,Tag_false>::Node_handle Node_handle;
+ typedef typename Kd_tree<TreeTraits,Splitter,Tag_false>::Node_const_handle Node_const_handle;
+
+ typedef typename TreeTraits::FT FT;
+ typedef typename Kd_tree<TreeTraits,Splitter,Tag_false>::Separator Separator;
+
+ private:
+
+ // private variables for internal nodes
+ boost::uint8_t cut_dim;
+ FT cut_val;
+
+ Node_handle lower_ch, upper_ch;
+
+ public:
+
+ // default constructor
+ Kd_tree_internal_node()
+ {}
+
+ Kd_tree_internal_node(bool leaf_)
+ : Base(leaf_)
+ {}
+
+
+ // members for internal node and extended internal node
+
+ inline
+ Node_const_handle
+ lower() const
+ {
+ return lower_ch;
+ }
+
+ inline
+ Node_const_handle
+ upper() const
+ {
+ return upper_ch;
+ }
+
+ inline
+ Node_handle
+ lower()
+ {
+ return lower_ch;
+ }
+
+ inline
+ Node_handle
+ upper()
+ {
+ return upper_ch;
+ }
+
+ inline
+ void
+ set_lower(Node_handle nh)
+ {
+ lower_ch = nh;
+ }
+
+ inline
+ void
+ set_upper(Node_handle nh)
+ {
+ upper_ch = nh;
+ }
+
+ // inline Separator& separator() {return sep; }
+ // use instead
+
+ inline
+ void set_separator(Separator& sep){
+ cut_dim = sep.cutting_dimension();
+ cut_val = sep.cutting_value();
+ }
+
+ inline
+ FT
+ cutting_value() const
+ {
+ return cut_val;
+ }
+
+ inline
+ int
+ cutting_dimension() const
+ {
+ return cut_dim;
+ }
+
+ /* Separator&
+ separator()
+ {
+ return Separator(cutting_dimension,cutting_value);
+ }*/
+
+
+ };//internal node
+
+
+
+} // namespace CGAL
+#endif // CGAL_KDTREE_NODE_H
diff --git a/src/common/include/gudhi_patches/CGAL/Orthogonal_incremental_neighbor_search.h b/src/common/include/gudhi_patches/CGAL/Orthogonal_incremental_neighbor_search.h
new file mode 100644
index 00000000..e29ce14f
--- /dev/null
+++ b/src/common/include/gudhi_patches/CGAL/Orthogonal_incremental_neighbor_search.h
@@ -0,0 +1,620 @@
+// Copyright (c) 2002,2011 Utrecht University (The Netherlands).
+// All rights reserved.
+//
+// This file is part of CGAL (www.cgal.org).
+// You can redistribute it and/or modify it under the terms of the GNU
+// General Public License as published by the Free Software Foundation,
+// either version 3 of the License, or (at your option) any later version.
+//
+// Licensees holding a valid commercial license may use this file in
+// accordance with the commercial license agreement provided with the software.
+//
+// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
+// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+//
+// $URL$
+// $Id$
+//
+//
+// Author(s) : Hans Tangelder (<hanst@cs.uu.nl>)
+
+#ifndef CGAL_ORTHOGONAL_INCREMENTAL_NEIGHBOR_SEARCH
+#define CGAL_ORTHOGONAL_INCREMENTAL_NEIGHBOR_SEARCH
+
+#include <CGAL/Kd_tree.h>
+#include <cstring>
+#include <list>
+#include <queue>
+#include <memory>
+#include <CGAL/Euclidean_distance.h>
+#include <CGAL/tuple.h>
+
+namespace CGAL {
+
+ template <class SearchTraits,
+ class Distance_= typename internal::Spatial_searching_default_distance<SearchTraits>::type,
+ class Splitter_ = Sliding_midpoint<SearchTraits>,
+ class Tree_= Kd_tree<SearchTraits, Splitter_, Tag_true> >
+ class Orthogonal_incremental_neighbor_search {
+
+ public:
+ typedef Splitter_ Splitter;
+ typedef Tree_ Tree;
+ typedef Distance_ Distance;
+ typedef typename SearchTraits::Point_d Point_d;
+ typedef typename Distance::Query_item Query_item;
+ typedef typename SearchTraits::FT FT;
+ typedef typename Tree::Point_d_iterator Point_d_iterator;
+ typedef typename Tree::Node_const_handle Node_const_handle;
+
+ typedef std::pair<Point_d,FT> Point_with_transformed_distance;
+ typedef CGAL::cpp11::tuple<Node_const_handle,FT,std::vector<FT> > Node_with_distance;
+ typedef std::vector<Node_with_distance*> Node_with_distance_vector;
+ typedef std::vector<Point_with_transformed_distance*> Point_with_transformed_distance_vector;
+
+ template<class T>
+ struct Object_wrapper
+ {
+ T object;
+ Object_wrapper(const T& t):object(t){}
+ const T& operator* () const { return object; }
+ const T* operator-> () const { return &object; }
+ };
+
+ class Iterator_implementation {
+ SearchTraits traits;
+ public:
+
+ int number_of_neighbours_computed;
+ int number_of_internal_nodes_visited;
+ int number_of_leaf_nodes_visited;
+ int number_of_items_visited;
+
+ private:
+
+ typedef std::vector<FT> Distance_vector;
+
+ Distance_vector dists;
+
+ Distance Orthogonal_distance_instance;
+
+ FT multiplication_factor;
+
+ Query_item query_point;
+
+ FT distance_to_root;
+
+ bool search_nearest_neighbour;
+
+ FT rd;
+
+
+ class Priority_higher {
+ public:
+
+ bool search_nearest;
+
+ Priority_higher(bool search_the_nearest_neighbour)
+ : search_nearest(search_the_nearest_neighbour)
+ {}
+
+ //highest priority is smallest distance
+ bool
+ operator() (Node_with_distance* n1, Node_with_distance* n2) const
+ {
+ return (search_nearest) ? (CGAL::cpp11::get<1>(*n1) > CGAL::cpp11::get<1>(*n2)) : (CGAL::cpp11::get<1>(*n2) > CGAL::cpp11::get<1>(*n1));
+ }
+ };
+
+ class Distance_smaller {
+
+ public:
+
+ bool search_nearest;
+
+ Distance_smaller(bool search_the_nearest_neighbour)
+ : search_nearest(search_the_nearest_neighbour)
+ {}
+
+ //highest priority is smallest distance
+ bool operator() (Point_with_transformed_distance* p1, Point_with_transformed_distance* p2) const
+ {
+ return (search_nearest) ? (p1->second > p2->second) : (p2->second > p1->second);
+ }
+ };
+
+
+ std::priority_queue<Node_with_distance*, Node_with_distance_vector,
+ Priority_higher> PriorityQueue;
+
+ public:
+ std::priority_queue<Point_with_transformed_distance*, Point_with_transformed_distance_vector,
+ Distance_smaller> Item_PriorityQueue;
+
+
+ public:
+
+ int reference_count;
+
+
+
+ // constructor
+ Iterator_implementation(const Tree& tree,const Query_item& q, const Distance& tr,
+ FT Eps=FT(0.0), bool search_nearest=true)
+ : traits(tree.traits()),number_of_neighbours_computed(0), number_of_internal_nodes_visited(0),
+ number_of_leaf_nodes_visited(0), number_of_items_visited(0),
+ Orthogonal_distance_instance(tr), multiplication_factor(Orthogonal_distance_instance.transformed_distance(FT(1.0)+Eps)),
+ query_point(q), search_nearest_neighbour(search_nearest),
+ PriorityQueue(Priority_higher(search_nearest)), Item_PriorityQueue(Distance_smaller(search_nearest)),
+ reference_count(1)
+
+
+ {
+ if (tree.empty()) return;
+
+ typename SearchTraits::Construct_cartesian_const_iterator_d ccci=traits.construct_cartesian_const_iterator_d_object();
+ int dim = static_cast<int>(std::distance(ccci(q), ccci(q,0)));
+
+ dists.resize(dim);
+ for(int i=0 ; i<dim ; ++i){
+ dists[i] = 0;
+ }
+
+ if (search_nearest){
+ distance_to_root=
+ Orthogonal_distance_instance.min_distance_to_rectangle(q, tree.bounding_box(),dists);
+ Node_with_distance *The_Root = new Node_with_distance(tree.root(),
+ distance_to_root, dists);
+ PriorityQueue.push(The_Root);
+
+ // rd is the distance of the top of the priority queue to q
+ rd=CGAL::cpp11::get<1>(*The_Root);
+ Compute_the_next_nearest_neighbour();
+ }
+ else{
+ distance_to_root=
+ Orthogonal_distance_instance.max_distance_to_rectangle(q,
+ tree.bounding_box(), dists);
+ Node_with_distance *The_Root = new Node_with_distance(tree.root(),
+ distance_to_root, dists);
+ PriorityQueue.push(The_Root);
+
+ // rd is the distance of the top of the priority queue to q
+ rd=CGAL::cpp11::get<1>(*The_Root);
+ Compute_the_next_furthest_neighbour();
+ }
+
+
+ }
+
+ // * operator
+ const Point_with_transformed_distance&
+ operator* () const
+ {
+ return *(Item_PriorityQueue.top());
+ }
+
+ // prefix operator
+ Iterator_implementation&
+ operator++()
+ {
+ Delete_the_current_item_top();
+ if(search_nearest_neighbour)
+ Compute_the_next_nearest_neighbour();
+ else
+ Compute_the_next_furthest_neighbour();
+ return *this;
+ }
+
+ // postfix operator
+ Object_wrapper<Point_with_transformed_distance>
+ operator++(int)
+ {
+ Object_wrapper<Point_with_transformed_distance> result( *(Item_PriorityQueue.top()) );
+ ++*this;
+ return result;
+ }
+
+ // Print statistics of the general priority search process.
+ std::ostream&
+ statistics (std::ostream& s) const {
+ s << "Orthogonal priority search statistics:"
+ << std::endl;
+ s << "Number of internal nodes visited:"
+ << number_of_internal_nodes_visited << std::endl;
+ s << "Number of leaf nodes visited:"
+ << number_of_leaf_nodes_visited << std::endl;
+ s << "Number of items visited:"
+ << number_of_items_visited << std::endl;
+ s << "Number of neighbours computed:"
+ << number_of_neighbours_computed << std::endl;
+ return s;
+ }
+
+
+ //destructor
+ ~Iterator_implementation()
+ {
+ while (!PriorityQueue.empty()) {
+ Node_with_distance* The_top=PriorityQueue.top();
+ PriorityQueue.pop();
+ delete The_top;
+ }
+ while (!Item_PriorityQueue.empty()) {
+ Point_with_transformed_distance* The_top=Item_PriorityQueue.top();
+ Item_PriorityQueue.pop();
+ delete The_top;
+ }
+ }
+
+ private:
+
+ void
+ Delete_the_current_item_top()
+ {
+ Point_with_transformed_distance* The_item_top=Item_PriorityQueue.top();
+ Item_PriorityQueue.pop();
+ delete The_item_top;
+ }
+
+ void
+ Compute_the_next_nearest_neighbour()
+ {
+ // compute the next item
+ bool next_neighbour_found=false;
+ if (!(Item_PriorityQueue.empty())) {
+ next_neighbour_found=
+ (multiplication_factor*rd > Item_PriorityQueue.top()->second);
+ }
+ typename SearchTraits::Construct_cartesian_const_iterator_d construct_it=traits.construct_cartesian_const_iterator_d_object();
+ typename SearchTraits::Cartesian_const_iterator_d query_point_it = construct_it(query_point);
+ // otherwise browse the tree further
+ while ((!next_neighbour_found) && (!PriorityQueue.empty())) {
+ Node_with_distance* The_node_top=PriorityQueue.top();
+ Node_const_handle N= CGAL::cpp11::get<0>(*The_node_top);
+ dists = CGAL::cpp11::get<2>(*The_node_top);
+ PriorityQueue.pop();
+ delete The_node_top;
+ FT copy_rd=rd;
+ while (!(N->is_leaf())) { // compute new distance
+ typename Tree::Internal_node_const_handle node =
+ static_cast<typename Tree::Internal_node_const_handle>(N);
+ number_of_internal_nodes_visited++;
+ int new_cut_dim=node->cutting_dimension();
+ FT new_rd,dst = dists[new_cut_dim];
+ FT val = *(query_point_it + new_cut_dim);
+ FT diff1 = val - node->upper_low_value();
+ FT diff2 = val - node->lower_high_value();
+ if (diff1 + diff2 < FT(0.0)) {
+ new_rd=
+ Orthogonal_distance_instance.new_distance(copy_rd,dst,diff1,new_cut_dim);
+
+ CGAL_assertion(new_rd >= copy_rd);
+ dists[new_cut_dim] = diff1;
+ Node_with_distance *Upper_Child =
+ new Node_with_distance(node->upper(), new_rd, dists);
+ PriorityQueue.push(Upper_Child);
+ dists[new_cut_dim] = dst;
+ N=node->lower();
+
+ }
+ else { // compute new distance
+ new_rd=Orthogonal_distance_instance.new_distance(copy_rd,dst,diff2,new_cut_dim);
+ CGAL_assertion(new_rd >= copy_rd);
+ dists[new_cut_dim] = diff2;
+ Node_with_distance *Lower_Child =
+ new Node_with_distance(node->lower(), new_rd, dists);
+ PriorityQueue.push(Lower_Child);
+ dists[new_cut_dim] = dst;
+ N=node->upper();
+ }
+ }
+ // n is a leaf
+ typename Tree::Leaf_node_const_handle node =
+ static_cast<typename Tree::Leaf_node_const_handle>(N);
+ number_of_leaf_nodes_visited++;
+ if (node->size() > 0) {
+ for (typename Tree::iterator it=node->begin(); it != node->end(); it++) {
+ number_of_items_visited++;
+ FT distance_to_query_point=
+ Orthogonal_distance_instance.transformed_distance(query_point,*it);
+ Point_with_transformed_distance *NN_Candidate=
+ new Point_with_transformed_distance(*it,distance_to_query_point);
+ Item_PriorityQueue.push(NN_Candidate);
+ }
+ // old top of PriorityQueue has been processed,
+ // hence update rd
+
+ if (!(PriorityQueue.empty())) {
+ rd = CGAL::cpp11::get<1>(*PriorityQueue.top());
+ next_neighbour_found =
+ (multiplication_factor*rd >
+ Item_PriorityQueue.top()->second);
+ }
+ else // priority queue empty => last neighbour found
+ {
+ next_neighbour_found=true;
+ }
+
+ number_of_neighbours_computed++;
+ }
+ } // next_neighbour_found or priority queue is empty
+ // in the latter case also the item priority quee is empty
+ }
+
+
+ void
+ Compute_the_next_furthest_neighbour()
+ {
+ // compute the next item
+ bool next_neighbour_found=false;
+ if (!(Item_PriorityQueue.empty())) {
+ next_neighbour_found=
+ (rd < multiplication_factor*Item_PriorityQueue.top()->second);
+ }
+ typename SearchTraits::Construct_cartesian_const_iterator_d construct_it=traits.construct_cartesian_const_iterator_d_object();
+ typename SearchTraits::Cartesian_const_iterator_d query_point_it = construct_it(query_point);
+ // otherwise browse the tree further
+ while ((!next_neighbour_found) && (!PriorityQueue.empty())) {
+ Node_with_distance* The_node_top=PriorityQueue.top();
+ Node_const_handle N= CGAL::cpp11::get<0>(*The_node_top);
+ dists = CGAL::cpp11::get<2>(*The_node_top);
+ PriorityQueue.pop();
+ delete The_node_top;
+ FT copy_rd=rd;
+ while (!(N->is_leaf())) { // compute new distance
+ typename Tree::Internal_node_const_handle node =
+ static_cast<typename Tree::Internal_node_const_handle>(N);
+ number_of_internal_nodes_visited++;
+ int new_cut_dim=node->cutting_dimension();
+ FT new_rd,dst = dists[new_cut_dim];
+ FT val = *(query_point_it + new_cut_dim);
+ FT diff1 = val - node->upper_low_value();
+ FT diff2 = val - node->lower_high_value();
+ if (diff1 + diff2 < FT(0.0)) {
+ diff1 = val - node->upper_high_value();
+ new_rd=
+ Orthogonal_distance_instance.new_distance(copy_rd,dst,diff1,new_cut_dim);
+ Node_with_distance *Lower_Child =
+ new Node_with_distance(node->lower(), copy_rd, dists);
+ PriorityQueue.push(Lower_Child);
+ N=node->upper();
+ dists[new_cut_dim] = diff1;
+ copy_rd=new_rd;
+
+ }
+ else { // compute new distance
+ diff2 = val - node->lower_low_value();
+ new_rd=Orthogonal_distance_instance.new_distance(copy_rd,dst,diff2,new_cut_dim);
+ Node_with_distance *Upper_Child =
+ new Node_with_distance(node->upper(), copy_rd, dists);
+ PriorityQueue.push(Upper_Child);
+ N=node->lower();
+ dists[new_cut_dim] = diff2;
+ copy_rd=new_rd;
+ }
+ }
+ // n is a leaf
+ typename Tree::Leaf_node_const_handle node =
+ static_cast<typename Tree::Leaf_node_const_handle>(N);
+ number_of_leaf_nodes_visited++;
+ if (node->size() > 0) {
+ for (typename Tree::iterator it=node->begin(); it != node->end(); it++) {
+ number_of_items_visited++;
+ FT distance_to_query_point=
+ Orthogonal_distance_instance.transformed_distance(query_point,*it);
+ Point_with_transformed_distance *NN_Candidate=
+ new Point_with_transformed_distance(*it,distance_to_query_point);
+ Item_PriorityQueue.push(NN_Candidate);
+ }
+ // old top of PriorityQueue has been processed,
+ // hence update rd
+
+ if (!(PriorityQueue.empty())) {
+ rd = CGAL::cpp11::get<1>(*PriorityQueue.top());
+ next_neighbour_found =
+ (multiplication_factor*rd <
+ Item_PriorityQueue.top()->second);
+ }
+ else // priority queue empty => last neighbour found
+ {
+ next_neighbour_found=true;
+ }
+
+ number_of_neighbours_computed++;
+ }
+ } // next_neighbour_found or priority queue is empty
+ // in the latter case also the item priority quee is empty
+ }
+ }; // class Iterator_implementaion
+
+
+
+
+
+
+
+
+
+ public:
+ class iterator;
+ typedef iterator const_iterator;
+
+ // constructor
+ Orthogonal_incremental_neighbor_search(const Tree& tree,
+ const Query_item& q, FT Eps = FT(0.0),
+ bool search_nearest=true, const Distance& tr=Distance())
+ : m_tree(tree),m_query(q),m_dist(tr),m_Eps(Eps),m_search_nearest(search_nearest)
+ {}
+
+ iterator
+ begin() const
+ {
+ return iterator(m_tree,m_query,m_dist,m_Eps,m_search_nearest);
+ }
+
+ iterator
+ end() const
+ {
+ return iterator();
+ }
+
+ std::ostream&
+ statistics(std::ostream& s)
+ {
+ begin()->statistics(s);
+ return s;
+ }
+
+
+
+
+ class iterator {
+
+ public:
+
+ typedef std::input_iterator_tag iterator_category;
+ typedef Point_with_transformed_distance value_type;
+ typedef Point_with_transformed_distance* pointer;
+ typedef const Point_with_transformed_distance& reference;
+ typedef std::size_t size_type;
+ typedef std::ptrdiff_t difference_type;
+ typedef int distance_type;
+
+ //class Iterator_implementation;
+ Iterator_implementation *Ptr_implementation;
+
+
+ public:
+
+ // default constructor
+ iterator()
+ : Ptr_implementation(0)
+ {}
+
+ int
+ the_number_of_items_visited()
+ {
+ return Ptr_implementation->number_of_items_visited;
+ }
+
+ // constructor
+ iterator(const Tree& tree,const Query_item& q, const Distance& tr=Distance(), FT eps=FT(0.0),
+ bool search_nearest=true)
+ : Ptr_implementation(new Iterator_implementation(tree, q, tr, eps, search_nearest))
+ {}
+
+ // copy constructor
+ iterator(const iterator& Iter)
+ {
+ Ptr_implementation = Iter.Ptr_implementation;
+ if (Ptr_implementation != 0) Ptr_implementation->reference_count++;
+ }
+
+ iterator& operator=(const iterator& Iter)
+ {
+ if (Ptr_implementation != Iter.Ptr_implementation){
+ if (Ptr_implementation != 0 && --(Ptr_implementation->reference_count)==0) {
+ delete Ptr_implementation;
+ }
+ Ptr_implementation = Iter.Ptr_implementation;
+ if (Ptr_implementation != 0) Ptr_implementation->reference_count++;
+ }
+ return *this;
+ }
+
+
+ const Point_with_transformed_distance&
+ operator* () const
+ {
+ return *(*Ptr_implementation);
+ }
+
+ // -> operator
+ const Point_with_transformed_distance*
+ operator-> () const
+ {
+ return &*(*Ptr_implementation);
+ }
+
+ // prefix operator
+ iterator&
+ operator++()
+ {
+ ++(*Ptr_implementation);
+ return *this;
+ }
+
+ // postfix operator
+ Object_wrapper<Point_with_transformed_distance>
+ operator++(int)
+ {
+ return (*Ptr_implementation)++;
+ }
+
+
+ bool
+ operator==(const iterator& It) const
+ {
+ if (
+ ((Ptr_implementation == 0) ||
+ Ptr_implementation->Item_PriorityQueue.empty()) &&
+ ((It.Ptr_implementation == 0) ||
+ It.Ptr_implementation->Item_PriorityQueue.empty())
+ )
+ return true;
+ // else
+ return (Ptr_implementation == It.Ptr_implementation);
+ }
+
+ bool
+ operator!=(const iterator& It) const
+ {
+ return !(*this == It);
+ }
+
+ std::ostream&
+ statistics (std::ostream& s)
+ {
+ Ptr_implementation->statistics(s);
+ return s;
+ }
+
+ ~iterator()
+ {
+ if (Ptr_implementation != 0) {
+ Ptr_implementation->reference_count--;
+ if (Ptr_implementation->reference_count==0) {
+ delete Ptr_implementation;
+ Ptr_implementation = 0;
+ }
+ }
+ }
+
+
+ }; // class iterator
+
+ //data members
+ const Tree& m_tree;
+ Query_item m_query;
+ Distance m_dist;
+ FT m_Eps;
+ bool m_search_nearest;
+ }; // class
+
+ template <class Traits, class Query_item, class Distance>
+ void swap (typename Orthogonal_incremental_neighbor_search<Traits,
+ Query_item, Distance>::iterator& x,
+ typename Orthogonal_incremental_neighbor_search<Traits,
+ Query_item, Distance>::iterator& y)
+ {
+ typename Orthogonal_incremental_neighbor_search<Traits,
+ Query_item, Distance>::iterator::Iterator_implementation
+ *tmp = x.Ptr_implementation;
+ x.Ptr_implementation = y.Ptr_implementation;
+ y.Ptr_implementation = tmp;
+ }
+
+} // namespace CGAL
+
+#endif // CGAL_ORTHOGONAL_INCREMENTAL_NEIGHBOR_SEARCH_H
diff --git a/src/common/include/gudhi_patches/Tangential_complex_CGAL_patches.txt b/src/common/include/gudhi_patches/Tangential_complex_CGAL_patches.txt
new file mode 100644
index 00000000..5b9581a0
--- /dev/null
+++ b/src/common/include/gudhi_patches/Tangential_complex_CGAL_patches.txt
@@ -0,0 +1,82 @@
+CGAL/Regular_triangulation_traits_adapter.h
+CGAL/Triangulation_ds_vertex.h
+CGAL/Triangulation_data_structure.h
+CGAL/transforming_pair_iterator.h
+CGAL/NewKernel_d/static_int.h
+CGAL/NewKernel_d/Cartesian_LA_functors.h
+CGAL/NewKernel_d/Cartesian_change_FT.h
+CGAL/NewKernel_d/Wrapper/Vector_d.h
+CGAL/NewKernel_d/Wrapper/Hyperplane_d.h
+CGAL/NewKernel_d/Wrapper/Ref_count_obj.h
+CGAL/NewKernel_d/Wrapper/Cartesian_wrap.h
+CGAL/NewKernel_d/Wrapper/Point_d.h
+CGAL/NewKernel_d/Wrapper/Segment_d.h
+CGAL/NewKernel_d/Wrapper/Weighted_point_d.h
+CGAL/NewKernel_d/Wrapper/Sphere_d.h
+CGAL/NewKernel_d/Cartesian_per_dimension.h
+CGAL/NewKernel_d/Kernel_object_converter.h
+CGAL/NewKernel_d/KernelD_converter.h
+CGAL/NewKernel_d/Vector/sse2.h
+CGAL/NewKernel_d/Vector/avx4.h
+CGAL/NewKernel_d/Vector/determinant_of_vectors_small_dim_internal.h
+CGAL/NewKernel_d/Vector/determinant_of_iterator_to_points_from_points.h
+CGAL/NewKernel_d/Vector/determinant_of_points_from_vectors.h
+CGAL/NewKernel_d/Vector/array.h
+CGAL/NewKernel_d/Vector/determinant_of_iterator_to_points_from_iterator_to_vectors.h
+CGAL/NewKernel_d/Vector/determinant_of_iterator_to_vectors_from_vectors.h
+CGAL/NewKernel_d/Vector/determinant_of_vectors_small_dim.h
+CGAL/NewKernel_d/Vector/vector.h
+CGAL/NewKernel_d/Vector/v2int.h
+CGAL/NewKernel_d/Vector/mix.h
+CGAL/NewKernel_d/Cartesian_static_filters.h
+CGAL/NewKernel_d/Cartesian_LA_base.h
+CGAL/NewKernel_d/Lazy_cartesian.h
+CGAL/NewKernel_d/Coaffine.h
+CGAL/NewKernel_d/store_kernel.h
+CGAL/NewKernel_d/Dimension_base.h
+CGAL/NewKernel_d/Kernel_3_interface.h
+CGAL/NewKernel_d/Cartesian_complete.h
+CGAL/NewKernel_d/Cartesian_base.h
+CGAL/NewKernel_d/Cartesian_filter_K.h
+CGAL/NewKernel_d/functor_tags.h
+CGAL/NewKernel_d/Filtered_predicate2.h
+CGAL/NewKernel_d/functor_properties.h
+CGAL/NewKernel_d/Define_kernel_types.h
+CGAL/NewKernel_d/LA_eigen/LA.h
+CGAL/NewKernel_d/LA_eigen/constructors.h
+CGAL/NewKernel_d/Types/Aff_transformation.h
+CGAL/NewKernel_d/Types/Sphere.h
+CGAL/NewKernel_d/Types/Hyperplane.h
+CGAL/NewKernel_d/Types/Line.h
+CGAL/NewKernel_d/Types/Ray.h
+CGAL/NewKernel_d/Types/Iso_box.h
+CGAL/NewKernel_d/Types/Weighted_point.h
+CGAL/NewKernel_d/Types/Segment.h
+CGAL/NewKernel_d/Kernel_d_interface.h
+CGAL/NewKernel_d/utils.h
+CGAL/NewKernel_d/Kernel_2_interface.h
+CGAL/NewKernel_d/Cartesian_filter_NT.h
+CGAL/NewKernel_d/function_objects_cartesian.h
+CGAL/Convex_hull.h
+CGAL/Triangulation_ds_full_cell.h
+CGAL/Regular_triangulation.h
+CGAL/Epick_d.h
+CGAL/transforming_iterator.h
+CGAL/iterator_from_indices.h
+CGAL/Delaunay_triangulation.h
+CGAL/IO/Triangulation_off_ostream.h
+CGAL/typeset.h
+CGAL/Triangulation_full_cell.h
+CGAL/Triangulation.h
+CGAL/internal/Static_or_dynamic_array.h
+CGAL/internal/Combination_enumerator.h
+CGAL/internal/Triangulation/utilities.h
+CGAL/internal/Triangulation/Triangulation_ds_iterators.h
+CGAL/internal/Triangulation/Dummy_TDS.h
+CGAL/argument_swaps.h
+CGAL/Epeck_d.h
+CGAL/determinant_of_vectors.h
+CGAL/TDS_full_cell_default_storage_policy.h
+CGAL/TDS_full_cell_mirror_storage_policy.h
+CGAL/Triangulation_face.h
+CGAL/Triangulation_vertex.h
diff --git a/src/common/test/CMakeLists.txt b/src/common/test/CMakeLists.txt
index 7ccdb752..baa24539 100644
--- a/src/common/test/CMakeLists.txt
+++ b/src/common/test/CMakeLists.txt
@@ -13,12 +13,21 @@ endif()
add_executable ( poffreader_UT test_points_off_reader.cpp )
target_link_libraries(poffreader_UT ${Boost_SYSTEM_LIBRARY} ${Boost_UNIT_TEST_FRAMEWORK_LIBRARY})
+add_executable ( distancematrixreader_UT test_distance_matrix_reader.cpp )
+target_link_libraries(distancematrixreader_UT ${Boost_SYSTEM_LIBRARY} ${Boost_UNIT_TEST_FRAMEWORK_LIBRARY})
+
# Do not forget to copy test files in current binary dir
file(COPY "${CMAKE_SOURCE_DIR}/data/points/alphacomplexdoc.off" DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/)
+file(COPY "${CMAKE_SOURCE_DIR}/data/distance_matrix/lower_triangular_distance_matrix.csv" DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/)
+file(COPY "${CMAKE_SOURCE_DIR}/data/distance_matrix/full_square_distance_matrix.csv" DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/)
# Unitary tests
add_test(poffreader_UT ${CMAKE_CURRENT_BINARY_DIR}/poffreader_UT
# XML format for Jenkins xUnit plugin
--log_format=XML --log_sink=${CMAKE_SOURCE_DIR}/poffreader_UT.xml --log_level=test_suite --report_level=no)
+add_test(distancematrixreader_UT ${CMAKE_CURRENT_BINARY_DIR}/distancematrixreader_UT
+ # XML format for Jenkins xUnit plugin
+ --log_format=XML --log_sink=${CMAKE_SOURCE_DIR}/distancematrixreader_UT.xml --log_level=test_suite --report_level=no)
+
diff --git a/src/common/test/test_distance_matrix_reader.cpp b/src/common/test/test_distance_matrix_reader.cpp
new file mode 100644
index 00000000..95a73bd9
--- /dev/null
+++ b/src/common/test/test_distance_matrix_reader.cpp
@@ -0,0 +1,85 @@
+/* This file is part of the Gudhi Library. The Gudhi library
+ * (Geometric Understanding in Higher Dimensions) is a generic C++
+ * library for computational topology.
+ *
+ * Author(s): Vincent Rouvreau
+ *
+ * Copyright (C) 2016 INRIA
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <gudhi/reader_utils.h>
+
+#include <iostream>
+#include <string>
+#include <vector>
+
+#define BOOST_TEST_DYN_LINK
+#define BOOST_TEST_MODULE "distance_matrix_reader"
+#include <boost/test/unit_test.hpp>
+
+using Distance_matrix = std::vector<std::vector<double>>;
+
+BOOST_AUTO_TEST_CASE( lower_triangular_distance_matrix )
+{
+ Distance_matrix from_lower_triangular;
+ // Read lower_triangular_distance_matrix.csv file where the separator is a ','
+ from_lower_triangular = read_lower_triangular_matrix_from_csv_file<double>("lower_triangular_distance_matrix.csv",
+ ',');
+ for (auto& i : from_lower_triangular) {
+ for (auto j : i) {
+ std::cout << j << " ";
+ }
+ std::cout << std::endl;
+ }
+ std::cout << "from_lower_triangular size = " << from_lower_triangular.size() << std::endl;
+ BOOST_CHECK(from_lower_triangular.size() == 5);
+
+ for (std::size_t i = 0; i < from_lower_triangular.size(); i++) {
+ std::cout << "from_lower_triangular[" << i << "] size = " << from_lower_triangular[i].size() << std::endl;
+ BOOST_CHECK(from_lower_triangular[i].size() == i);
+ }
+ std::vector<double> expected = {1};
+ BOOST_CHECK(from_lower_triangular[1] == expected);
+
+ expected = {2,3};
+ BOOST_CHECK(from_lower_triangular[2] == expected);
+
+ expected = {4,5,6};
+ BOOST_CHECK(from_lower_triangular[3] == expected);
+
+ expected = {7,8,9,10};
+ BOOST_CHECK(from_lower_triangular[4] == expected);
+
+}
+
+BOOST_AUTO_TEST_CASE( full_square_distance_matrix )
+{
+ Distance_matrix from_full_square;
+ // Read full_square_distance_matrix.csv file where the separator is the default one ';'
+ from_full_square = read_lower_triangular_matrix_from_csv_file<double>("full_square_distance_matrix.csv");
+ for (auto& i : from_full_square) {
+ for (auto j : i) {
+ std::cout << j << " ";
+ }
+ std::cout << std::endl;
+ }
+ std::cout << "from_full_square size = " << from_full_square.size() << std::endl;
+ BOOST_CHECK(from_full_square.size() == 7);
+ for (std::size_t i = 0; i < from_full_square.size(); i++) {
+ std::cout << "from_full_square[" << i << "] size = " << from_full_square[i].size() << std::endl;
+ BOOST_CHECK(from_full_square[i].size() == i);
+ }
+}
diff --git a/src/common/test/test_points_off_reader.cpp b/src/common/test/test_points_off_reader.cpp
index b4f71182..0a78d190 100644
--- a/src/common/test/test_points_off_reader.cpp
+++ b/src/common/test/test_points_off_reader.cpp
@@ -4,7 +4,7 @@
*
* Author(s): Vincent Rouvreau
*
- * Copyright (C) 2015 INRIA Saclay (France)
+ * Copyright (C) 2015
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by