mirror of
https://github.com/storytold/storyteller-ml.git
synced 2026-10-16 00:13:07 +00:00
Merge pull request #32 from storytold/jan-18-mithoo
slightly tweaked mocapnet alt container
This commit is contained in:
@@ -35,7 +35,7 @@ jobs:
|
||||
password: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: Build image
|
||||
run: cd animation/MocapNET/ && docker build . --file docker/Dockerfile --tag $IMAGE_NAME --label "runnumber=${GITHUB_RUN_ID}"
|
||||
run: cd animation/MocapNET-kasisnu/ && docker build . --file docker/Dockerfile --tag $IMAGE_NAME --label "runnumber=${GITHUB_RUN_ID}"
|
||||
|
||||
- name: Push image to GitHub Container Registry
|
||||
run: |
|
||||
|
||||
@@ -0,0 +1,378 @@
|
||||
project( MocapNETProject )
|
||||
cmake_minimum_required( VERSION 2.8.13 )
|
||||
|
||||
#Make fast, lean and platform independent binaries..
|
||||
#The -fuse-ld=gold flag solves issue https://github.com/FORTH-ModelBasedTracker/MocapNET/issues/34
|
||||
#However it causes https://github.com/FORTH-ModelBasedTracker/MocapNET/issues/38
|
||||
set(CMAKE_CXX_FLAGS "-s -O3 -fPIC -march=native -mtune=native") #-fuse-ld=gold
|
||||
set(CMAKE_C_FLAGS "-s -O3 -fPIC -march=native -mtune=native") #-fuse-ld=gold
|
||||
|
||||
OPTION(ENABLE_OPENGL OFF)
|
||||
OPTION(INTEL_OPTIMIZATIONS OFF)
|
||||
|
||||
|
||||
SET (CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
|
||||
|
||||
INCLUDE(FindSSE)
|
||||
FindSSE ()
|
||||
IF(SSE2_FOUND)
|
||||
SET(INTEL_OPTIMIZATIONS ON)
|
||||
MESSAGE("SSE2 detected and will be used..")
|
||||
ENDIF(SSE2_FOUND)
|
||||
|
||||
if (INTEL_OPTIMIZATIONS)
|
||||
add_definitions(-DINTEL_OPTIMIZATIONS)
|
||||
endif(INTEL_OPTIMIZATIONS)
|
||||
|
||||
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
|
||||
|
||||
|
||||
#JPEG/PNG libraries..
|
||||
set(JPG_Libs jpeg)
|
||||
set(PNG_Libs png)
|
||||
|
||||
|
||||
|
||||
|
||||
#------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
#First search for Tensorflow 2.x
|
||||
#------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
IF(EXISTS "${CMAKE_SOURCE_DIR}/dependencies/libtensorflow/lib/libtensorflow.so.2")
|
||||
MESSAGE("Using locally found libtensorflow v2 C-API")
|
||||
set(TENSORFLOW_ROOT "${CMAKE_SOURCE_DIR}/dependencies/libtensorflow/lib/" CACHE PATH "tensorflow root")
|
||||
set(TENSORFLOW_INCLUDE_ROOT "${CMAKE_SOURCE_DIR}/dependencies/libtensorflow/include/" CACHE PATH "tensorflow include")
|
||||
set(TENSORFLOW2_FOUND true CACHE BOOL "Tensorflow 2 available")
|
||||
set(TENSORFLOW_SOURCE_FILES
|
||||
${CMAKE_SOURCE_DIR}/src/NeuralNetworkAbstractionLayer/neuralNetworkAbstraction.cpp
|
||||
${CMAKE_SOURCE_DIR}/src/Tensorflow/tensorflow.cpp
|
||||
${CMAKE_SOURCE_DIR}/src/Tensorflow/tf_utils.cpp
|
||||
)
|
||||
ELSEIF(EXISTS "/usr/local/lib/libtensorflow.so.2")
|
||||
MESSAGE("Using system-wide found libtensorflow v2 C-API")
|
||||
set(TENSORFLOW_ROOT "/usr/local/lib/" CACHE PATH "tensorflow root")
|
||||
set(TENSORFLOW_INCLUDE_ROOT "/usr/local/include/" CACHE PATH "tensorflow include")
|
||||
set(TENSORFLOW2_FOUND true CACHE BOOL "Tensorflow 2 available")
|
||||
set(TENSORFLOW_SOURCE_FILES
|
||||
${CMAKE_SOURCE_DIR}/src/NeuralNetworkAbstractionLayer/neuralNetworkAbstraction.cpp
|
||||
${CMAKE_SOURCE_DIR}/src/Tensorflow/tensorflow.cpp
|
||||
${CMAKE_SOURCE_DIR}/src/Tensorflow/tf_utils.cpp
|
||||
)
|
||||
#------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
#If we can't find it then search for Tensorflow 1.x
|
||||
#------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
ELSEIF(EXISTS "${CMAKE_SOURCE_DIR}/dependencies/libtensorflow/lib/libtensorflow.so")
|
||||
MESSAGE("Using locally found libtensorflow v1 C-API")
|
||||
set(TENSORFLOW_ROOT "${CMAKE_SOURCE_DIR}/dependencies/libtensorflow/lib/" CACHE PATH "tensorflow root")
|
||||
set(TENSORFLOW_INCLUDE_ROOT "${CMAKE_SOURCE_DIR}/dependencies/libtensorflow/include/" CACHE PATH "tensorflow include")
|
||||
set(TENSORFLOW_SOURCE_FILES
|
||||
${CMAKE_SOURCE_DIR}/src/NeuralNetworkAbstractionLayer/neuralNetworkAbstraction.cpp
|
||||
${CMAKE_SOURCE_DIR}/src/Tensorflow/tensorflow.cpp
|
||||
${CMAKE_SOURCE_DIR}/src/Tensorflow/tf_utils.cpp
|
||||
)
|
||||
ELSEIF(EXISTS "/usr/local/lib/libtensorflow.so")
|
||||
MESSAGE("Using system-wide found libtensorflow v1 C-API")
|
||||
set(TENSORFLOW_ROOT "/usr/local/lib/" CACHE PATH "tensorflow root")
|
||||
set(TENSORFLOW_INCLUDE_ROOT "/usr/local/include/" CACHE PATH "tensorflow include")
|
||||
set(TENSORFLOW_SOURCE_FILES
|
||||
${CMAKE_SOURCE_DIR}/src/NeuralNetworkAbstractionLayer/neuralNetworkAbstraction.cpp
|
||||
${CMAKE_SOURCE_DIR}/src/Tensorflow/tensorflow.cpp
|
||||
${CMAKE_SOURCE_DIR}/src/Tensorflow/tf_utils.cpp
|
||||
)
|
||||
#------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
#If we can't find any Tensorflow just point to the /usr/lib and hope for the best..
|
||||
#------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
ELSE()
|
||||
MESSAGE("Did not find a tensorflow version, please consider running the initialize.sh script or reading the README file")
|
||||
#Set some default tensorflow paths to give some valid error afterwards..
|
||||
set(TENSORFLOW_ROOT "/usr/local/lib/" CACHE PATH "tensorflow root")
|
||||
set(TENSORFLOW_INCLUDE_ROOT "/usr/local/include/" CACHE PATH "tensorflow include")
|
||||
ENDIF()
|
||||
#------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
|
||||
include_directories(${TENSORFLOW_INCLUDE_ROOT})
|
||||
ADD_LIBRARY(TensorflowFramework SHARED IMPORTED)
|
||||
|
||||
IF (TENSORFLOW2_FOUND)
|
||||
SET_TARGET_PROPERTIES(TensorflowFramework PROPERTIES IMPORTED_LOCATION ${TENSORFLOW_ROOT}/libtensorflow_framework.so.2)
|
||||
ELSE(TENSORFLOW2_FOUND)
|
||||
SET_TARGET_PROPERTIES(TensorflowFramework PROPERTIES IMPORTED_LOCATION ${TENSORFLOW_ROOT}/libtensorflow_framework.so)
|
||||
ENDIF (TENSORFLOW2_FOUND)
|
||||
|
||||
ADD_LIBRARY(Tensorflow SHARED IMPORTED)
|
||||
|
||||
IF (TENSORFLOW2_FOUND)
|
||||
SET_TARGET_PROPERTIES(Tensorflow PROPERTIES IMPORTED_LOCATION ${TENSORFLOW_ROOT}/libtensorflow.so.2)
|
||||
ELSE(TENSORFLOW2_FOUND)
|
||||
SET_TARGET_PROPERTIES(Tensorflow PROPERTIES IMPORTED_LOCATION ${TENSORFLOW_ROOT}/libtensorflow.so)
|
||||
ENDIF (TENSORFLOW2_FOUND)
|
||||
|
||||
|
||||
|
||||
|
||||
#If our development environment has RGBDAcquisition then we can use BVH capabilities..
|
||||
#------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
#------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
#------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
#------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
set(BVH_SOURCE "")
|
||||
IF(EXISTS "${CMAKE_SOURCE_DIR}/dependencies/RGBDAcquisition/opengl_acquisition_shared_library/opengl_depth_and_color_renderer/src/Library/MotionCaptureLoader")
|
||||
add_definitions(-DUSE_BVH)
|
||||
set(BVH_SOURCE
|
||||
#--------------------------------------------------------------------------------
|
||||
${CMAKE_SOURCE_DIR}/dependencies/RGBDAcquisition/tools/PThreadWorkerPool/pthreadWorkerPool.h
|
||||
#--------------------------------------------------------------------------------
|
||||
${CMAKE_SOURCE_DIR}/dependencies/RGBDAcquisition/opengl_acquisition_shared_library/opengl_depth_and_color_renderer/src/Library/MotionCaptureLoader/bvh_loader.c
|
||||
${CMAKE_SOURCE_DIR}/dependencies/RGBDAcquisition/opengl_acquisition_shared_library/opengl_depth_and_color_renderer/src/Library/MotionCaptureLoader/calculate/bvh_to_tri_pose.c
|
||||
${CMAKE_SOURCE_DIR}/dependencies/RGBDAcquisition/opengl_acquisition_shared_library/opengl_depth_and_color_renderer/src/Library/MotionCaptureLoader/calculate/bvh_transform.c
|
||||
${CMAKE_SOURCE_DIR}/dependencies/RGBDAcquisition/opengl_acquisition_shared_library/opengl_depth_and_color_renderer/src/Library/MotionCaptureLoader/calculate/bvh_project.c
|
||||
${CMAKE_SOURCE_DIR}/dependencies/RGBDAcquisition/opengl_acquisition_shared_library/opengl_depth_and_color_renderer/src/Library/MotionCaptureLoader/import/fromBVH.c
|
||||
${CMAKE_SOURCE_DIR}/dependencies/RGBDAcquisition/opengl_acquisition_shared_library/opengl_depth_and_color_renderer/src/Library/MotionCaptureLoader/export/bvh_to_trajectoryParserTRI.c
|
||||
${CMAKE_SOURCE_DIR}/dependencies/RGBDAcquisition/opengl_acquisition_shared_library/opengl_depth_and_color_renderer/src/Library/MotionCaptureLoader/export/bvh_to_trajectoryParserPrimitives.c
|
||||
${CMAKE_SOURCE_DIR}/dependencies/RGBDAcquisition/opengl_acquisition_shared_library/opengl_depth_and_color_renderer/src/Library/MotionCaptureLoader/export/bvh_export.c
|
||||
${CMAKE_SOURCE_DIR}/dependencies/RGBDAcquisition/opengl_acquisition_shared_library/opengl_depth_and_color_renderer/src/Library/MotionCaptureLoader/export/bvh_to_c.c
|
||||
${CMAKE_SOURCE_DIR}/dependencies/RGBDAcquisition/opengl_acquisition_shared_library/opengl_depth_and_color_renderer/src/Library/MotionCaptureLoader/export/bvh_to_bvh.c
|
||||
${CMAKE_SOURCE_DIR}/dependencies/RGBDAcquisition/opengl_acquisition_shared_library/opengl_depth_and_color_renderer/src/Library/MotionCaptureLoader/export/bvh_to_svg.c
|
||||
${CMAKE_SOURCE_DIR}/dependencies/RGBDAcquisition/opengl_acquisition_shared_library/opengl_depth_and_color_renderer/src/Library/MotionCaptureLoader/export/bvh_to_csv.c
|
||||
${CMAKE_SOURCE_DIR}/dependencies/RGBDAcquisition/opengl_acquisition_shared_library/opengl_depth_and_color_renderer/src/Library/MotionCaptureLoader/export/bvh_to_json.c
|
||||
${CMAKE_SOURCE_DIR}/dependencies/RGBDAcquisition/opengl_acquisition_shared_library/opengl_depth_and_color_renderer/src/Library/MotionCaptureLoader/export/bvh_export.c
|
||||
${CMAKE_SOURCE_DIR}/dependencies/RGBDAcquisition/opengl_acquisition_shared_library/opengl_depth_and_color_renderer/src/Library/MotionCaptureLoader/edit/bvh_randomize.c
|
||||
${CMAKE_SOURCE_DIR}/dependencies/RGBDAcquisition/opengl_acquisition_shared_library/opengl_depth_and_color_renderer/src/Library/MotionCaptureLoader/edit/bvh_filter.c
|
||||
${CMAKE_SOURCE_DIR}/dependencies/RGBDAcquisition/opengl_acquisition_shared_library/opengl_depth_and_color_renderer/src/Library/MotionCaptureLoader/edit/bvh_rename.c
|
||||
${CMAKE_SOURCE_DIR}/dependencies/RGBDAcquisition/opengl_acquisition_shared_library/opengl_depth_and_color_renderer/src/Library/MotionCaptureLoader/edit/bvh_merge.c
|
||||
${CMAKE_SOURCE_DIR}/dependencies/RGBDAcquisition/opengl_acquisition_shared_library/opengl_depth_and_color_renderer/src/Library/MotionCaptureLoader/edit/bvh_cut_paste.c
|
||||
${CMAKE_SOURCE_DIR}/dependencies/RGBDAcquisition/opengl_acquisition_shared_library/opengl_depth_and_color_renderer/src/Library/MotionCaptureLoader/edit/bvh_interpolate.c
|
||||
${CMAKE_SOURCE_DIR}/dependencies/RGBDAcquisition/opengl_acquisition_shared_library/opengl_depth_and_color_renderer/src/Library/MotionCaptureLoader/edit/bvh_remapangles.c
|
||||
${CMAKE_SOURCE_DIR}/dependencies/RGBDAcquisition/opengl_acquisition_shared_library/opengl_depth_and_color_renderer/src/Library/MotionCaptureLoader/ik/bvh_inverseKinematics.c
|
||||
${CMAKE_SOURCE_DIR}/dependencies/RGBDAcquisition/opengl_acquisition_shared_library/opengl_depth_and_color_renderer/src/Library/MotionCaptureLoader/ik/hardcodedProblems_inverseKinematics.c
|
||||
#${CMAKE_SOURCE_DIR}/dependencies/RGBDAcquisition/opengl_acquisition_shared_library/opengl_depth_and_color_renderer/src/Library/MotionCaptureLoader/ik/levmar.c
|
||||
${CMAKE_SOURCE_DIR}/dependencies/RGBDAcquisition/opengl_acquisition_shared_library/opengl_depth_and_color_renderer/src/Library/MotionCaptureLoader/metrics/bvh_measure.c
|
||||
${CMAKE_SOURCE_DIR}/dependencies/RGBDAcquisition/opengl_acquisition_shared_library/opengl_depth_and_color_renderer/src/Library/MotionCaptureLoader/tests/test.c
|
||||
#--------------------------------------------------------------------------------
|
||||
${CMAKE_SOURCE_DIR}/dependencies/RGBDAcquisition/tools/Calibration/calibration.h
|
||||
${CMAKE_SOURCE_DIR}/dependencies/RGBDAcquisition/tools/Calibration/calibration.c
|
||||
${CMAKE_SOURCE_DIR}/dependencies/RGBDAcquisition/tools/Calibration/transform.c
|
||||
${CMAKE_SOURCE_DIR}/dependencies/RGBDAcquisition/tools/Calibration/transform.h
|
||||
${CMAKE_SOURCE_DIR}/dependencies/RGBDAcquisition/tools/Calibration/undistort.c
|
||||
${CMAKE_SOURCE_DIR}/dependencies/RGBDAcquisition/tools/Calibration/undistort.h
|
||||
#--------------------------------------------------------------------------------
|
||||
${CMAKE_SOURCE_DIR}/dependencies/RGBDAcquisition/tools/AmMatrix/matrixTools.h
|
||||
${CMAKE_SOURCE_DIR}/dependencies/RGBDAcquisition/tools/AmMatrix/matrix3x3Tools.c
|
||||
${CMAKE_SOURCE_DIR}/dependencies/RGBDAcquisition/tools/AmMatrix/matrix4x4Tools.c
|
||||
${CMAKE_SOURCE_DIR}/dependencies/RGBDAcquisition/tools/AmMatrix/matrixOpenGL.c
|
||||
${CMAKE_SOURCE_DIR}/dependencies/RGBDAcquisition/tools/AmMatrix/matrixCalculations.c
|
||||
${CMAKE_SOURCE_DIR}/dependencies/RGBDAcquisition/tools/AmMatrix/solveLinearSystemGJ.c
|
||||
${CMAKE_SOURCE_DIR}/dependencies/RGBDAcquisition/tools/AmMatrix/solveHomography.c
|
||||
${CMAKE_SOURCE_DIR}/dependencies/RGBDAcquisition/tools/AmMatrix/quaternions.c
|
||||
${CMAKE_SOURCE_DIR}/dependencies/RGBDAcquisition/tools/AmMatrix/simpleRenderer.c
|
||||
)
|
||||
MESSAGE("BVH Code found and will be used..")
|
||||
add_subdirectory(src/GroundTruthGenerator/) #Ground Truth generator can only be compiled with BVH code..
|
||||
add_subdirectory(src/MocapNET2/reshapeCSVFileToMakeClassification/) #Orientation classification needs this tool to be built before working..
|
||||
#MESSAGE("${BVH_SOURCE}")
|
||||
ENDIF()
|
||||
#------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
#------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
#------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
#------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
#------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
#------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
#------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
set(OPENGL_LIBS "")
|
||||
set(OPENGL_SOURCE "")
|
||||
if (ENABLE_OPENGL)
|
||||
IF(EXISTS "${CMAKE_SOURCE_DIR}/dependencies/RGBDAcquisition/opengl_acquisition_shared_library/opengl_depth_and_color_renderer/src/Library")
|
||||
|
||||
add_subdirectory(${CMAKE_SOURCE_DIR}/dependencies/RGBDAcquisition/tools/Codecs)
|
||||
add_subdirectory(${CMAKE_SOURCE_DIR}/dependencies/RGBDAcquisition/tools/Calibration)
|
||||
#add_subdirectory(${CMAKE_SOURCE_DIR}/dependencies/RGBDAcquisition/opengl_acquisition_shared_library) #OpenGLAcquisition
|
||||
add_definitions(-DUSE_OPENGL)
|
||||
#add_definitions(-DUSE_GLEW)
|
||||
set(OPENGL_LIBS rt m GL GLU GLEW X11 Codecs CalibrationLibrary)
|
||||
set(OPENGL_SOURCE
|
||||
${CMAKE_SOURCE_DIR}/dependencies/RGBDAcquisition/opengl_acquisition_shared_library/OpenGLAcquisition.c
|
||||
${CMAKE_SOURCE_DIR}/dependencies/RGBDAcquisition/opengl_acquisition_shared_library/OpenGLAcquisition.h
|
||||
${CMAKE_SOURCE_DIR}/dependencies/RGBDAcquisition/opengl_acquisition_shared_library/opengl_depth_and_color_renderer/src/Library/System/glx.h
|
||||
${CMAKE_SOURCE_DIR}/dependencies/RGBDAcquisition/opengl_acquisition_shared_library/opengl_depth_and_color_renderer/src/Library/System/glx.c
|
||||
${CMAKE_SOURCE_DIR}/dependencies/RGBDAcquisition/opengl_acquisition_shared_library/opengl_depth_and_color_renderer/src/Library/System/glx2.h
|
||||
${CMAKE_SOURCE_DIR}/dependencies/RGBDAcquisition/opengl_acquisition_shared_library/opengl_depth_and_color_renderer/src/Library/System/glx2.c
|
||||
${CMAKE_SOURCE_DIR}/dependencies/RGBDAcquisition/opengl_acquisition_shared_library/opengl_depth_and_color_renderer/src/Library/System/glx3.h
|
||||
${CMAKE_SOURCE_DIR}/dependencies/RGBDAcquisition/opengl_acquisition_shared_library/opengl_depth_and_color_renderer/src/Library/System/glx3.c
|
||||
${CMAKE_SOURCE_DIR}/dependencies/RGBDAcquisition/opengl_acquisition_shared_library/opengl_depth_and_color_renderer/src/Library/main.c
|
||||
${CMAKE_SOURCE_DIR}/dependencies/RGBDAcquisition/opengl_acquisition_shared_library/opengl_depth_and_color_renderer/src/Library/OGLRendererSandbox.h
|
||||
#3D Models and how to load them
|
||||
${CMAKE_SOURCE_DIR}/dependencies/RGBDAcquisition/opengl_acquisition_shared_library/opengl_depth_and_color_renderer/src/Library/ModelLoader/model_loader.c
|
||||
${CMAKE_SOURCE_DIR}/dependencies/RGBDAcquisition/opengl_acquisition_shared_library/opengl_depth_and_color_renderer/src/Library/ModelLoader/model_loader.h
|
||||
${CMAKE_SOURCE_DIR}/dependencies/RGBDAcquisition/opengl_acquisition_shared_library/opengl_depth_and_color_renderer/src/Library/ModelLoader/model_loader_obj.c
|
||||
${CMAKE_SOURCE_DIR}/dependencies/RGBDAcquisition/opengl_acquisition_shared_library/opengl_depth_and_color_renderer/src/Library/ModelLoader/model_loader_obj.h
|
||||
${CMAKE_SOURCE_DIR}/dependencies/RGBDAcquisition/opengl_acquisition_shared_library/opengl_depth_and_color_renderer/src/Library/ModelLoader/model_loader_tri.c
|
||||
${CMAKE_SOURCE_DIR}/dependencies/RGBDAcquisition/opengl_acquisition_shared_library/opengl_depth_and_color_renderer/src/Library/ModelLoader/model_loader_tri.h
|
||||
${CMAKE_SOURCE_DIR}/dependencies/RGBDAcquisition/opengl_acquisition_shared_library/opengl_depth_and_color_renderer/src/Library/ModelLoader/model_processor.c
|
||||
${CMAKE_SOURCE_DIR}/dependencies/RGBDAcquisition/opengl_acquisition_shared_library/opengl_depth_and_color_renderer/src/Library/ModelLoader/model_processor.h
|
||||
${CMAKE_SOURCE_DIR}/dependencies/RGBDAcquisition/opengl_acquisition_shared_library/opengl_depth_and_color_renderer/src/Library/ModelLoader/model_loader_hardcoded.c
|
||||
${CMAKE_SOURCE_DIR}/dependencies/RGBDAcquisition/opengl_acquisition_shared_library/opengl_depth_and_color_renderer/src/Library/ModelLoader/model_loader_hardcoded.h
|
||||
${CMAKE_SOURCE_DIR}/dependencies/RGBDAcquisition/opengl_acquisition_shared_library/opengl_depth_and_color_renderer/src/Library/ModelLoader/model_loader_transform_joints.c
|
||||
${CMAKE_SOURCE_DIR}/dependencies/RGBDAcquisition/opengl_acquisition_shared_library/opengl_depth_and_color_renderer/src/Library/ModelLoader/model_loader_transform_joints.h
|
||||
${CMAKE_SOURCE_DIR}/dependencies/RGBDAcquisition/opengl_acquisition_shared_library/opengl_depth_and_color_renderer/src/Library/ModelLoader/model_converter.c
|
||||
${CMAKE_SOURCE_DIR}/dependencies/RGBDAcquisition/opengl_acquisition_shared_library/opengl_depth_and_color_renderer/src/Library/ModelLoader/model_converter.h
|
||||
${CMAKE_SOURCE_DIR}/dependencies/RGBDAcquisition/opengl_acquisition_shared_library/opengl_depth_and_color_renderer/src/Library/ModelLoader/model_editor.c
|
||||
${CMAKE_SOURCE_DIR}/dependencies/RGBDAcquisition/opengl_acquisition_shared_library/opengl_depth_and_color_renderer/src/Library/ModelLoader/model_editor.h
|
||||
#Textures and how to load them
|
||||
${CMAKE_SOURCE_DIR}/dependencies/RGBDAcquisition/opengl_acquisition_shared_library/opengl_depth_and_color_renderer/src/Library/TextureLoader/texture_loader.c
|
||||
${CMAKE_SOURCE_DIR}/dependencies/RGBDAcquisition/opengl_acquisition_shared_library/opengl_depth_and_color_renderer/src/Library/TextureLoader/texture_loader.h
|
||||
${CMAKE_SOURCE_DIR}/dependencies/RGBDAcquisition/opengl_acquisition_shared_library/opengl_depth_and_color_renderer/src/Library/TextureLoader/image_proc.c
|
||||
${CMAKE_SOURCE_DIR}/dependencies/RGBDAcquisition/opengl_acquisition_shared_library/opengl_depth_and_color_renderer/src/Library/TextureLoader/image_proc.h
|
||||
#OpenGL Rendering stuff
|
||||
${CMAKE_SOURCE_DIR}/dependencies/RGBDAcquisition/opengl_acquisition_shared_library/opengl_depth_and_color_renderer/src/Library/Rendering/FixedPipeline/ogl_fixed_pipeline_renderer.c
|
||||
${CMAKE_SOURCE_DIR}/dependencies/RGBDAcquisition/opengl_acquisition_shared_library/opengl_depth_and_color_renderer/src/Library/Rendering/FixedPipeline/ogl_fixed_pipeline_renderer.h
|
||||
${CMAKE_SOURCE_DIR}/dependencies/RGBDAcquisition/opengl_acquisition_shared_library/opengl_depth_and_color_renderer/src/Library/Rendering/ShaderPipeline/render_buffer.c
|
||||
${CMAKE_SOURCE_DIR}/dependencies/RGBDAcquisition/opengl_acquisition_shared_library/opengl_depth_and_color_renderer/src/Library/Rendering/ShaderPipeline/render_buffer.h
|
||||
${CMAKE_SOURCE_DIR}/dependencies/RGBDAcquisition/opengl_acquisition_shared_library/opengl_depth_and_color_renderer/src/Library/Rendering/ShaderPipeline/uploadGeometry.h
|
||||
${CMAKE_SOURCE_DIR}/dependencies/RGBDAcquisition/opengl_acquisition_shared_library/opengl_depth_and_color_renderer/src/Library/Rendering/ShaderPipeline/uploadGeometry.c
|
||||
${CMAKE_SOURCE_DIR}/dependencies/RGBDAcquisition/opengl_acquisition_shared_library/opengl_depth_and_color_renderer/src/Library/Rendering/ShaderPipeline/ogl_shader_pipeline_renderer.c
|
||||
${CMAKE_SOURCE_DIR}/dependencies/RGBDAcquisition/opengl_acquisition_shared_library/opengl_depth_and_color_renderer/src/Library/Rendering/ShaderPipeline/ogl_shader_pipeline_renderer.h
|
||||
${CMAKE_SOURCE_DIR}/dependencies/RGBDAcquisition/opengl_acquisition_shared_library/opengl_depth_and_color_renderer/src/Library/Rendering/ShaderPipeline/shader_loader.c
|
||||
${CMAKE_SOURCE_DIR}/dependencies/RGBDAcquisition/opengl_acquisition_shared_library/opengl_depth_and_color_renderer/src/Library/Rendering/ShaderPipeline/shader_loader.h
|
||||
${CMAKE_SOURCE_DIR}/dependencies/RGBDAcquisition/opengl_acquisition_shared_library/opengl_depth_and_color_renderer/src/Library/Rendering/ogl_rendering.c
|
||||
${CMAKE_SOURCE_DIR}/dependencies/RGBDAcquisition/opengl_acquisition_shared_library/opengl_depth_and_color_renderer/src/Library/Rendering/ogl_rendering.h
|
||||
${CMAKE_SOURCE_DIR}/dependencies/RGBDAcquisition/opengl_acquisition_shared_library/opengl_depth_and_color_renderer/src/Library/Rendering/tiledRenderer.h
|
||||
${CMAKE_SOURCE_DIR}/dependencies/RGBDAcquisition/opengl_acquisition_shared_library/opengl_depth_and_color_renderer/src/Library/Rendering/tiledRenderer.c
|
||||
${CMAKE_SOURCE_DIR}/dependencies/RGBDAcquisition/opengl_acquisition_shared_library/opengl_depth_and_color_renderer/src/Library/Rendering/downloadFromRenderer.c
|
||||
${CMAKE_SOURCE_DIR}/dependencies/RGBDAcquisition/opengl_acquisition_shared_library/opengl_depth_and_color_renderer/src/Library/Rendering/downloadFromRenderer.h
|
||||
|
||||
|
||||
${CMAKE_SOURCE_DIR}/dependencies/RGBDAcquisition/opengl_acquisition_shared_library/opengl_depth_and_color_renderer/src/Library/Tools/tools.h
|
||||
${CMAKE_SOURCE_DIR}/dependencies/RGBDAcquisition/opengl_acquisition_shared_library/opengl_depth_and_color_renderer/src/Library/Tools/tools.c
|
||||
${CMAKE_SOURCE_DIR}/dependencies/RGBDAcquisition/opengl_acquisition_shared_library/opengl_depth_and_color_renderer/src/Library/Tools/save_to_file.h
|
||||
${CMAKE_SOURCE_DIR}/dependencies/RGBDAcquisition/opengl_acquisition_shared_library/opengl_depth_and_color_renderer/src/Library/Tools/save_to_file.c
|
||||
${CMAKE_SOURCE_DIR}/dependencies/RGBDAcquisition/opengl_acquisition_shared_library/opengl_depth_and_color_renderer/src/Library/Scene/scene.h
|
||||
${CMAKE_SOURCE_DIR}/dependencies/RGBDAcquisition/opengl_acquisition_shared_library/opengl_depth_and_color_renderer/src/Library/Scene/scene.c
|
||||
${CMAKE_SOURCE_DIR}/dependencies/RGBDAcquisition/opengl_acquisition_shared_library/opengl_depth_and_color_renderer/src/Library/Scene/control.h
|
||||
${CMAKE_SOURCE_DIR}/dependencies/RGBDAcquisition/opengl_acquisition_shared_library/opengl_depth_and_color_renderer/src/Library/Scene/control.c
|
||||
${CMAKE_SOURCE_DIR}/dependencies/RGBDAcquisition/opengl_acquisition_shared_library/opengl_depth_and_color_renderer/src/Library/Scene/photoShootingScene.h
|
||||
${CMAKE_SOURCE_DIR}/dependencies/RGBDAcquisition/opengl_acquisition_shared_library/opengl_depth_and_color_renderer/src/Library/Scene/photoShootingScene.c
|
||||
#AmMatrix dependencies
|
||||
${CMAKE_SOURCE_DIR}/dependencies/RGBDAcquisition//tools/AmMatrix/quaternions.c
|
||||
${CMAKE_SOURCE_DIR}/dependencies/RGBDAcquisition//tools/AmMatrix/quaternions.h
|
||||
${CMAKE_SOURCE_DIR}/dependencies/RGBDAcquisition//tools/AmMatrix/matrix3x3Tools.c
|
||||
${CMAKE_SOURCE_DIR}/dependencies/RGBDAcquisition//tools/AmMatrix/matrix3x3Tools.h
|
||||
${CMAKE_SOURCE_DIR}/dependencies/RGBDAcquisition//tools/AmMatrix/matrix4x4Tools.c
|
||||
${CMAKE_SOURCE_DIR}/dependencies/RGBDAcquisition//tools/AmMatrix/matrix4x4Tools.h
|
||||
#../tools/AmMatrix/matrixProject.c
|
||||
#../tools/AmMatrix/matrixProject.h
|
||||
${CMAKE_SOURCE_DIR}/dependencies/RGBDAcquisition//tools/AmMatrix/matrixCalculations.c
|
||||
${CMAKE_SOURCE_DIR}/dependencies/RGBDAcquisition//tools/AmMatrix/matrixCalculations.h
|
||||
${CMAKE_SOURCE_DIR}/dependencies/RGBDAcquisition//tools/AmMatrix/matrixOpenGL.c
|
||||
${CMAKE_SOURCE_DIR}/dependencies/RGBDAcquisition//tools/AmMatrix/matrixOpenGL.h
|
||||
${CMAKE_SOURCE_DIR}/dependencies/RGBDAcquisition//tools/AmMatrix/solveLinearSystemGJ.c
|
||||
${CMAKE_SOURCE_DIR}/dependencies/RGBDAcquisition//tools/AmMatrix/solveLinearSystemGJ.h
|
||||
#ImageOperations dependencies
|
||||
${CMAKE_SOURCE_DIR}/dependencies/RGBDAcquisition//tools/ImageOperations/depthClassifier.c
|
||||
${CMAKE_SOURCE_DIR}/dependencies/RGBDAcquisition//tools/ImageOperations/convolutionFilter.c
|
||||
${CMAKE_SOURCE_DIR}/dependencies/RGBDAcquisition//tools/ImageOperations/imageFilters.c
|
||||
${CMAKE_SOURCE_DIR}/dependencies/RGBDAcquisition//tools/ImageOperations/findSubImage.c
|
||||
${CMAKE_SOURCE_DIR}/dependencies/RGBDAcquisition//tools/ImageOperations/imageOps.c
|
||||
${CMAKE_SOURCE_DIR}/dependencies/RGBDAcquisition//tools/ImageOperations/patchComparison.c
|
||||
${CMAKE_SOURCE_DIR}/dependencies/RGBDAcquisition//tools/ImageOperations/patchComparison.h
|
||||
${CMAKE_SOURCE_DIR}/dependencies/RGBDAcquisition//tools/ImageOperations/resize.c
|
||||
#Rest of the stuff
|
||||
#${CMAKE_SOURCE_DIR}/RGBDAcquisition/opengl_acquisition_shared_library/opengl_depth_and_color_renderer/src/Library/TrajectoryParser/InputParser_C.c
|
||||
#${CMAKE_SOURCE_DIR}/RGBDAcquisition/opengl_acquisition_shared_library/opengl_depth_and_color_renderer/src/Library/TrajectoryParser/InputParser_C.h
|
||||
${CMAKE_SOURCE_DIR}/dependencies/RGBDAcquisition/opengl_acquisition_shared_library/opengl_depth_and_color_renderer/src/Library/TrajectoryParser/TrajectoryParser.c
|
||||
${CMAKE_SOURCE_DIR}/dependencies/RGBDAcquisition/opengl_acquisition_shared_library/opengl_depth_and_color_renderer/src/Library/TrajectoryParser/TrajectoryParser.h
|
||||
${CMAKE_SOURCE_DIR}/dependencies/RGBDAcquisition/opengl_acquisition_shared_library/opengl_depth_and_color_renderer/src/Library/TrajectoryParser/TrajectoryParserDataStructures.c
|
||||
${CMAKE_SOURCE_DIR}/dependencies/RGBDAcquisition/opengl_acquisition_shared_library/opengl_depth_and_color_renderer/src/Library/TrajectoryParser/TrajectoryParserDataStructures.h
|
||||
${CMAKE_SOURCE_DIR}/dependencies/RGBDAcquisition/opengl_acquisition_shared_library/opengl_depth_and_color_renderer/src/Library/TrajectoryParser/TrajectoryCalculator.c
|
||||
${CMAKE_SOURCE_DIR}/dependencies/RGBDAcquisition/opengl_acquisition_shared_library/opengl_depth_and_color_renderer/src/Library/TrajectoryParser/TrajectoryCalculator.h
|
||||
${CMAKE_SOURCE_DIR}/dependencies/RGBDAcquisition/opengl_acquisition_shared_library/opengl_depth_and_color_renderer/src/Library/TrajectoryParser/TrajectoryPrimitives.c
|
||||
${CMAKE_SOURCE_DIR}/dependencies/RGBDAcquisition/opengl_acquisition_shared_library/opengl_depth_and_color_renderer/src/Library/TrajectoryParser/TrajectoryPrimitives.h
|
||||
${CMAKE_SOURCE_DIR}/dependencies/RGBDAcquisition/opengl_acquisition_shared_library/opengl_depth_and_color_renderer/src/Library/TrajectoryParser/hashmap.c
|
||||
${CMAKE_SOURCE_DIR}/dependencies/RGBDAcquisition/opengl_acquisition_shared_library/opengl_depth_and_color_renderer/src/Library/TrajectoryParser/hashmap.h
|
||||
${CMAKE_SOURCE_DIR}/dependencies/RGBDAcquisition/opengl_acquisition_shared_library/opengl_depth_and_color_renderer/src/Library/Interfaces/webInterface.c
|
||||
${CMAKE_SOURCE_DIR}/dependencies/RGBDAcquisition/opengl_acquisition_shared_library/opengl_depth_and_color_renderer/src/Library/Interfaces/webInterface.h
|
||||
)
|
||||
MESSAGE("OpenGL code found and will be used..")
|
||||
ELSE()
|
||||
MESSAGE("OpenGL support enabled, but OpenGL code not found..")
|
||||
ENDIF()
|
||||
ELSE (ENABLE_OPENGL)
|
||||
MESSAGE("OpenGL support will not be compiled in")
|
||||
ENDIF(ENABLE_OPENGL)
|
||||
|
||||
#------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
#------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
#------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
#------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
|
||||
|
||||
#Autosearch for the opencv maybe installed by the user..!
|
||||
find_package(OpenCV PATHS dependencies/opencv-3.2.0/build NO_DEFAULT_PATH)
|
||||
find_package (OpenCV)
|
||||
if (OpenCV_FOUND)
|
||||
add_definitions(-DUSE_OPENCV)
|
||||
MESSAGE("OpenCV code found and will be used..")
|
||||
MESSAGE(${OpenCV_DIR})
|
||||
ENDIF(OpenCV_FOUND)
|
||||
|
||||
|
||||
|
||||
#If ammarserver is present then use it..
|
||||
set(NETWORK_CLIENT_LIBRARIES "")
|
||||
IF(EXISTS "${CMAKE_SOURCE_DIR}/dependencies/AmmarServer/src/AmmServerlib")
|
||||
add_definitions(-DUSE_NETWORKING)
|
||||
MESSAGE("AmmarServer support will be compiled in")
|
||||
#add_subdirectory (dependencies/AmmarServer/) #You can force add everything but this adds too much to the build time
|
||||
set(NETWORK_CLIENT_LIBRARIES "AmmClient")
|
||||
add_subdirectory (dependencies/AmmarServer/src/AmmClient)
|
||||
add_subdirectory (dependencies/AmmarServer/src/AmmServerlib)
|
||||
add_subdirectory (dependencies/AmmarServer/src/Hashmap)
|
||||
add_subdirectory (dependencies/AmmarServer/src/InputParser)
|
||||
ENDIF()
|
||||
|
||||
|
||||
#This needs Tensorflow C-API installed...
|
||||
#https://www.tensorflow.org/install/lang_c
|
||||
#wget https://storage.googleapis.com/tensorflow/libtensorflow/libtensorflow-gpu-linux-x86_64-1.13.1.tar.gz
|
||||
#pip3 show protobuf
|
||||
#add_subdirectory (MocapNETStandalone/)
|
||||
|
||||
|
||||
IF(EXISTS "${CMAKE_SOURCE_DIR}/dependencies/AmmarServer/src/AmmServerlib")
|
||||
#add_subdirectory (src/MocapNET1/MocapNETServerHTTP/)
|
||||
ENDIF()
|
||||
|
||||
if (OpenCV_FOUND)
|
||||
add_subdirectory (src/Webcam/)
|
||||
#Deactivated to keep build targets sane
|
||||
add_subdirectory(src/MocapNET2/BVHGUI2)
|
||||
add_subdirectory(src/MocapNET2/MocapNET2LiveWebcamDemo)
|
||||
ENDIF(OpenCV_FOUND)
|
||||
|
||||
#add_subdirectory(src/MocapNET2/BVHTemplate/)
|
||||
add_subdirectory(src/MocapNET2/MocapNETLib2/)
|
||||
add_subdirectory(src/MocapNET2/MocapNETFromCSV/)
|
||||
add_subdirectory(src/MocapNET2/Converters/Openpose)
|
||||
add_subdirectory(src/MocapNET2/Converters/H36M)
|
||||
add_subdirectory(src/MocapNET2/Converters/convertCSV3D)
|
||||
add_subdirectory(src/MocapNET2/testCSV/)
|
||||
add_subdirectory(src/MocapNET2/drawCSV/)
|
||||
add_subdirectory(src/MocapNET2/CSVClusterPlot)
|
||||
#------------------------------------------------------------------
|
||||
add_subdirectory(src/JointEstimator2D)
|
||||
|
||||
|
||||
# TODO FIX INSTALLATION DIRECTORIES
|
||||
|
||||
# install(TARGETS RGBDAcquisitionProject
|
||||
# LIBRARY DESTINATION lib
|
||||
# ARCHIVE DESTINATION lib
|
||||
# RUNTIME DESTINATION bin)
|
||||
|
||||
|
||||
@@ -0,0 +1,94 @@
|
||||
# MocapNET Project
|
||||
|
||||
|
||||

|
||||
|
||||
Finishing my PhD this will probably be the *final* version of MocapNET!
|
||||
MocapNET 4 will deal with upperbody / lowerbody / hands / eye tracking and / facial capture
|
||||
It has a written from scratch python interface, but maintain the same compatible BVH output format.
|
||||
It will also be compatible with Raspberry Pi 4 and use Tensorflow /Tf-Lite / ONNX backends
|
||||
|
||||
This branch is still under construction, and has been ported to Python to boost usability
|
||||
so if you want the older C/C++ version of MocapNET you ignore it for now..!
|
||||
|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
## Deploy it now on Google Colab with a single click!
|
||||
------------------------------------------------------------------
|
||||
|
||||
Click here for one click setup : [](https://colab.research.google.com/github/FORTH-ModelBasedTracker/MocapNET/blob/mnet4/mocapnet4.ipynb)
|
||||
|
||||
|
||||
|
||||
|
||||
## Relevant publications!
|
||||
------------------------------------------------------------------
|
||||
|
||||
|
||||
| Download Paper | Year | Conference | Title |
|
||||
| ------------- | ------------- | ------------- | ------------- |
|
||||
| [](http://users.ics.forth.gr/~argyros/mypapers/2023_10_AMFG_Qammaz.pdf) | 2023 | AMFG@ICCV | A Unified Approach for Occlusion Tolerant 3D Facial Pose Capture and Gaze Estimation using MocapNETs |
|
||||
| [](http://users.ics.forth.gr/~argyros/mypapers/2023_07_PETRA_Qammaz.pdf) | 2023 | PeTRA | Compacting MocapNET-based 3D Human Pose Estimation via Dimensionality Reduction |
|
||||
| [](http://users.ics.forth.gr/~argyros/mypapers/2021_11_BMVC_Qammaz.pdf) | 2021 | BMVC | Towards Holistic Real-time Human 3D Pose Estimation using MocapNETs |
|
||||
| [](http://users.ics.forth.gr/~argyros/mypapers/2021_01_ICPR_Qammaz.pdf) | 2021 | ICPR | Occlusion-tolerant and personalized 3D human pose estimation in RGB images |
|
||||
| [](http://users.ics.forth.gr/~argyros/mypapers/2019_09_BMVC_mocapnet.pdf) | 2019 | BMVC | MocapNET: Ensemble of SNN Encoders for 3D Human Pose Estimation in RGB Images |
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## AMFG@ICCV 2023 Poster
|
||||
------------------------------------------------------------------
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## Citation
|
||||
------------------------------------------------------------------
|
||||
|
||||
Please cite the following papers if this work helps your research :
|
||||
```
|
||||
@inproceedings{Qammaz2023b,
|
||||
author = {Qammaz, Ammar and Argyros, Antonis},
|
||||
title = {A Unified Approach for Occlusion Tolerant 3D Facial Pose Capture and Gaze Estimation using MocapNETs},
|
||||
booktitle = {International Conference on Computer Vision Workshops (AMFG 2023 - ICCVW 2023), (to appear)},
|
||||
publisher = {IEEE},
|
||||
year = {2023},
|
||||
month = {October},
|
||||
address = {Paris, France},
|
||||
projects = {VMWARE,I.C.HUMANS},
|
||||
pdflink = {http://users.ics.forth.gr/ argyros/mypapers/2023_10_AMFG_Qammaz.pdf}
|
||||
}
|
||||
|
||||
@inproceedings{Qammaz2021,
|
||||
author = {Qammaz, Ammar and Argyros, Antonis A},
|
||||
title = {Towards Holistic Real-time Human 3D Pose Estimation using MocapNETs},
|
||||
booktitle = {British Machine Vision Conference (BMVC 2021)},
|
||||
publisher = {BMVA},
|
||||
year = {2021},
|
||||
month = {November},
|
||||
projects = {I.C.HUMANS},
|
||||
videolink = {https://www.youtube.com/watch?v=aaLOSY_p6Zc}
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
## License
|
||||
------------------------------------------------------------------
|
||||
This library is provided under the [FORTH license](https://github.com/FORTH-ModelBasedTracker/MocapNET/blob/master/license.txt)
|
||||
|
||||
@@ -0,0 +1,36 @@
|
||||
@inproceedings{Qammaz2021,
|
||||
author = {Qammaz, Ammar and Argyros, Antonis A},
|
||||
title = {Towards Holistic Real-time Human 3D Pose Estimation using MocapNETs},
|
||||
booktitle = {British Machine Vision Conference (BMVC 2021)},
|
||||
publisher = {BMVA},
|
||||
year = {2021},
|
||||
month = {November},
|
||||
projects = {I.C.HUMANS},
|
||||
videolink = {https://www.youtube.com/watch?v=aaLOSY_p6Zc}
|
||||
}
|
||||
|
||||
@inproceedings{Qammaz2020,
|
||||
author = {Ammar Qammaz and Antonis A. Argyros},
|
||||
title = {Occlusion-tolerant and personalized 3D human pose estimation in RGB images},
|
||||
booktitle = {IEEE International Conference on Pattern Recognition (ICPR 2020), (to appear)},
|
||||
year = {2021},
|
||||
month = {January},
|
||||
url = {http://users.ics.forth.gr/argyros/res_mocapnet_II.html},
|
||||
projects = {Co4Robots},
|
||||
pdflink = {http://users.ics.forth.gr/argyros/mypapers/2021_01_ICPR_Qammaz.pdf},
|
||||
videolink = {https://youtu.be/Jgz1MRq-I-k}
|
||||
}
|
||||
|
||||
@inproceedings{Qammaz2019,
|
||||
author = {Qammaz, Ammar and Argyros, Antonis A},
|
||||
title = {MocapNET: Ensemble of SNN Encoders for 3D Human Pose Estimation in RGB Images},
|
||||
booktitle = {British Machine Vision Conference (BMVC 2019)},
|
||||
publisher = {BMVA},
|
||||
year = {2019},
|
||||
month = {September},
|
||||
address = {Cardiff, UK},
|
||||
url = {http://users.ics.forth.gr/argyros/res_mocapnet.html},
|
||||
projects = {CO4ROBOTS,MINGEI},
|
||||
pdflink = {http://users.ics.forth.gr/argyros/mypapers/2019_09_BMVC_mocapnet.pdf},
|
||||
videolink = {https://youtu.be/fH5e-KMBvM0}
|
||||
}
|
||||
@@ -0,0 +1,141 @@
|
||||
#https://github.com/hideo55/CMake-FindSSE/blob/master/FindSSE.cmake
|
||||
# Check if SSE instructions are available on the machine where
|
||||
# the project is compiled.
|
||||
|
||||
MACRO (FindSSE)
|
||||
|
||||
IF(CMAKE_SYSTEM_NAME MATCHES "Linux")
|
||||
EXEC_PROGRAM(cat ARGS "/proc/cpuinfo" OUTPUT_VARIABLE CPUINFO)
|
||||
|
||||
STRING(REGEX REPLACE "^.*(sse2).*$" "\\1" SSE_THERE ${CPUINFO})
|
||||
STRING(COMPARE EQUAL "sse2" "${SSE_THERE}" SSE2_TRUE)
|
||||
IF (SSE2_TRUE)
|
||||
set(SSE2_FOUND true CACHE BOOL "SSE2 available on host")
|
||||
ELSE (SSE2_TRUE)
|
||||
set(SSE2_FOUND false CACHE BOOL "SSE2 available on host")
|
||||
ENDIF (SSE2_TRUE)
|
||||
|
||||
# /proc/cpuinfo apparently omits sse3 :(
|
||||
STRING(REGEX REPLACE "^.*[^s](sse3).*$" "\\1" SSE_THERE ${CPUINFO})
|
||||
STRING(COMPARE EQUAL "sse3" "${SSE_THERE}" SSE3_TRUE)
|
||||
IF (NOT SSE3_TRUE)
|
||||
STRING(REGEX REPLACE "^.*(T2300).*$" "\\1" SSE_THERE ${CPUINFO})
|
||||
STRING(COMPARE EQUAL "T2300" "${SSE_THERE}" SSE3_TRUE)
|
||||
ENDIF (NOT SSE3_TRUE)
|
||||
|
||||
STRING(REGEX REPLACE "^.*(ssse3).*$" "\\1" SSE_THERE ${CPUINFO})
|
||||
STRING(COMPARE EQUAL "ssse3" "${SSE_THERE}" SSSE3_TRUE)
|
||||
IF (SSE3_TRUE OR SSSE3_TRUE)
|
||||
set(SSE3_FOUND true CACHE BOOL "SSE3 available on host")
|
||||
ELSE (SSE3_TRUE OR SSSE3_TRUE)
|
||||
set(SSE3_FOUND false CACHE BOOL "SSE3 available on host")
|
||||
ENDIF (SSE3_TRUE OR SSSE3_TRUE)
|
||||
IF (SSSE3_TRUE)
|
||||
set(SSSE3_FOUND true CACHE BOOL "SSSE3 available on host")
|
||||
ELSE (SSSE3_TRUE)
|
||||
set(SSSE3_FOUND false CACHE BOOL "SSSE3 available on host")
|
||||
ENDIF (SSSE3_TRUE)
|
||||
|
||||
STRING(REGEX REPLACE "^.*(sse4_1).*$" "\\1" SSE_THERE ${CPUINFO})
|
||||
STRING(COMPARE EQUAL "sse4_1" "${SSE_THERE}" SSE41_TRUE)
|
||||
IF (SSE41_TRUE)
|
||||
set(SSE4_1_FOUND true CACHE BOOL "SSE4.1 available on host")
|
||||
ELSE (SSE41_TRUE)
|
||||
set(SSE4_1_FOUND false CACHE BOOL "SSE4.1 available on host")
|
||||
ENDIF (SSE41_TRUE)
|
||||
|
||||
STRING(REGEX REPLACE "^.*(sse4_2).*$" "\\1" SSE_THERE ${CPUINFO})
|
||||
STRING(COMPARE EQUAL "sse4_2" "${SSE_THERE}" SSE42_TRUE)
|
||||
IF (SSE42_TRUE)
|
||||
set(SSE4_2_FOUND true CACHE BOOL "SSE4.2 available on host")
|
||||
ELSE (SSE42_TRUE)
|
||||
set(SSE4_2_FOUND false CACHE BOOL "SSE4.2 available on host")
|
||||
ENDIF (SSE42_TRUE)
|
||||
|
||||
ELSEIF(CMAKE_SYSTEM_NAME MATCHES "Darwin")
|
||||
EXEC_PROGRAM("/usr/sbin/sysctl -n machdep.cpu.features" OUTPUT_VARIABLE
|
||||
CPUINFO)
|
||||
|
||||
STRING(REGEX REPLACE "^.*[^S](SSE2).*$" "\\1" SSE_THERE ${CPUINFO})
|
||||
STRING(COMPARE EQUAL "SSE2" "${SSE_THERE}" SSE2_TRUE)
|
||||
IF (SSE2_TRUE)
|
||||
set(SSE2_FOUND true CACHE BOOL "SSE2 available on host")
|
||||
ELSE (SSE2_TRUE)
|
||||
set(SSE2_FOUND false CACHE BOOL "SSE2 available on host")
|
||||
ENDIF (SSE2_TRUE)
|
||||
|
||||
STRING(REGEX REPLACE "^.*[^S](SSE3).*$" "\\1" SSE_THERE ${CPUINFO})
|
||||
STRING(COMPARE EQUAL "SSE3" "${SSE_THERE}" SSE3_TRUE)
|
||||
IF (SSE3_TRUE)
|
||||
set(SSE3_FOUND true CACHE BOOL "SSE3 available on host")
|
||||
ELSE (SSE3_TRUE)
|
||||
set(SSE3_FOUND false CACHE BOOL "SSE3 available on host")
|
||||
ENDIF (SSE3_TRUE)
|
||||
|
||||
STRING(REGEX REPLACE "^.*(SSSE3).*$" "\\1" SSE_THERE ${CPUINFO})
|
||||
STRING(COMPARE EQUAL "SSSE3" "${SSE_THERE}" SSSE3_TRUE)
|
||||
IF (SSSE3_TRUE)
|
||||
set(SSSE3_FOUND true CACHE BOOL "SSSE3 available on host")
|
||||
ELSE (SSSE3_TRUE)
|
||||
set(SSSE3_FOUND false CACHE BOOL "SSSE3 available on host")
|
||||
ENDIF (SSSE3_TRUE)
|
||||
|
||||
STRING(REGEX REPLACE "^.*(SSE4.1).*$" "\\1" SSE_THERE ${CPUINFO})
|
||||
STRING(COMPARE EQUAL "SSE4.1" "${SSE_THERE}" SSE41_TRUE)
|
||||
IF (SSE41_TRUE)
|
||||
set(SSE4_1_FOUND true CACHE BOOL "SSE4.1 available on host")
|
||||
ELSE (SSE41_TRUE)
|
||||
set(SSE4_1_FOUND false CACHE BOOL "SSE4.1 available on host")
|
||||
ENDIF (SSE41_TRUE)
|
||||
|
||||
STRING(REGEX REPLACE "^.*(SSE4.2).*$" "\\1" SSE_THERE ${CPUINFO})
|
||||
STRING(COMPARE EQUAL "SSE4.2" "${SSE_THERE}" SSE42_TRUE)
|
||||
IF (SSE42_TRUE)
|
||||
set(SSE4_2_FOUND true CACHE BOOL "SSE4.2 available on host")
|
||||
ELSE (SSE42_TRUE)
|
||||
set(SSE4_2_FOUND false CACHE BOOL "SSE4.2 available on host")
|
||||
ENDIF (SSE42_TRUE)
|
||||
|
||||
ELSEIF(CMAKE_SYSTEM_NAME MATCHES "Windows")
|
||||
# TODO
|
||||
set(SSE2_FOUND true CACHE BOOL "SSE2 available on host")
|
||||
set(SSE3_FOUND false CACHE BOOL "SSE3 available on host")
|
||||
set(SSSE3_FOUND false CACHE BOOL "SSSE3 available on host")
|
||||
set(SSE4_1_FOUND false CACHE BOOL "SSE4.1 available on host")
|
||||
set(SSE4_2_FOUND false CACHE BOOL "SSE4.2 available on host")
|
||||
ELSE(CMAKE_SYSTEM_NAME MATCHES "Linux")
|
||||
set(SSE2_FOUND true CACHE BOOL "SSE2 available on host")
|
||||
set(SSE3_FOUND false CACHE BOOL "SSE3 available on host")
|
||||
set(SSSE3_FOUND false CACHE BOOL "SSSE3 available on host")
|
||||
set(SSE4_1_FOUND false CACHE BOOL "SSE4.1 available on host")
|
||||
set(SSE4_2_FOUND false CACHE BOOL "SSE4.2 available on host")
|
||||
ENDIF(CMAKE_SYSTEM_NAME MATCHES "Linux")
|
||||
|
||||
IF(CMAKE_COMPILER_IS_GNUCXX)
|
||||
EXECUTE_PROCESS(COMMAND ${CMAKE_CXX_COMPILER} -dumpversion OUTPUT_VARIABLE GCC_VERSION)
|
||||
IF(GCC_VERSION VERSION_LESS 4.2)
|
||||
set(SSE4_1_FOUND false CACHE BOOL "SSE4.1 available on host" FORCE)
|
||||
set(SSE4_2_FOUND false CACHE BOOL "SSE4.2 available on host" FORCE)
|
||||
ENDIF()
|
||||
ENDIF(CMAKE_COMPILER_IS_GNUCXX)
|
||||
|
||||
if(NOT SSE2_FOUND)
|
||||
MESSAGE(STATUS "Could not find support for SSE2 on this machine.")
|
||||
endif(NOT SSE2_FOUND)
|
||||
if(NOT SSE3_FOUND)
|
||||
MESSAGE(STATUS "Could not find support for SSE3 on this machine.")
|
||||
endif(NOT SSE3_FOUND)
|
||||
if(NOT SSSE3_FOUND)
|
||||
MESSAGE(STATUS "Could not find support for SSSE3 on this machine.")
|
||||
endif(NOT SSSE3_FOUND)
|
||||
if(NOT SSE4_1_FOUND)
|
||||
MESSAGE(STATUS "Could not find support for SSE4.1 on this machine.")
|
||||
endif(NOT SSE4_1_FOUND)
|
||||
if(NOT SSE4_2_FOUND)
|
||||
MESSAGE(STATUS "Could not find support for SSE4.2 on this machine.")
|
||||
endif(NOT SSE4_2_FOUND)
|
||||
|
||||
mark_as_advanced(SSE2_FOUND SSE3_FOUND SSSE3_FOUND SSE4_1_FOUND SSE4_2_FOUND)
|
||||
|
||||
ENDMACRO(FindSSE)
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,8 @@
|
||||
# MocapNET Project
|
||||
|
||||
## Dataset generation
|
||||
------------------------------------------------------------------
|
||||
|
||||
If you are interested in generating the data to train a MocapNET please use the scripts [createRandomizedDataset.sh](https://github.com/FORTH-ModelBasedTracker/MocapNET/blob/master/createRandomizedDataset.sh) and [createTestDataset.sh](https://github.com/FORTH-ModelBasedTracker/MocapNET/blob/master/createTestDataset.sh) after building the GroundTruthDumper tool. (It will be automatically generated after running the initialization script)
|
||||
|
||||
|
||||
@@ -0,0 +1,141 @@
|
||||
HIERARCHY
|
||||
ROOT root
|
||||
{
|
||||
OFFSET 0 0 0
|
||||
CHANNELS 6 Xposition Yposition Zposition Zrotation Yrotation Xrotation
|
||||
JOINT X_Axis
|
||||
{
|
||||
OFFSET 10.0 0.0 0.0
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
JOINT X_Axis_Ornament
|
||||
{
|
||||
OFFSET 1.0 0.0 0.0
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
JOINT X_Ornament_A
|
||||
{
|
||||
OFFSET 0.0 0.0 0.0
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
End Site
|
||||
{
|
||||
OFFSET 0.0 -5.0 -5.0
|
||||
}
|
||||
}
|
||||
JOINT X_Ornament_B
|
||||
{
|
||||
OFFSET 0.0 0.0 0.0
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
End Site
|
||||
{
|
||||
OFFSET 0.0 5.0 -5.0
|
||||
}
|
||||
}
|
||||
JOINT X_Ornament_C
|
||||
{
|
||||
OFFSET 0.0 0.0 0.0
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
End Site
|
||||
{
|
||||
OFFSET 0.0 5.0 5.0
|
||||
}
|
||||
}
|
||||
JOINT X_Ornament_D
|
||||
{
|
||||
OFFSET 0.0 0.0 0.0
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
End Site
|
||||
{
|
||||
OFFSET 0.0 -5.0 5.0
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
JOINT Y_Axis
|
||||
{
|
||||
OFFSET 0.0 10.0 0.0
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
JOINT Y_Axis_Ornament
|
||||
{
|
||||
OFFSET 0.0 1.0 0.0
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
JOINT Y_Ornament_A
|
||||
{
|
||||
OFFSET 0.0 0.0 0.0
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
End Site
|
||||
{
|
||||
OFFSET -5.0 0.0 -5.0
|
||||
}
|
||||
}
|
||||
JOINT Y_Ornament_B
|
||||
{
|
||||
OFFSET 0.0 0.0 0.0
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
End Site
|
||||
{
|
||||
OFFSET 5.0 0.0 -5.0
|
||||
}
|
||||
}
|
||||
JOINT Y_Ornament_C
|
||||
{
|
||||
OFFSET 0.0 0.0 0.0
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
End Site
|
||||
{
|
||||
OFFSET 0.0 0.0 5.0
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
JOINT Z_Axis
|
||||
{
|
||||
OFFSET 0.0 0.0 10.0
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
JOINT Z_Axis_Ornament
|
||||
{
|
||||
OFFSET 0.0 0.0 1.0
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
JOINT Z_Ornament_A0
|
||||
{
|
||||
OFFSET -2.5 -2.5 0.0
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
JOINT Z_Ornament_A1
|
||||
{
|
||||
OFFSET -2.5 -2.5 0.0
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
JOINT Z_Ornament_A2
|
||||
{
|
||||
OFFSET 5.0 0.0 0.0
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
End Site
|
||||
{
|
||||
OFFSET 5.0 0.0 0.0
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
JOINT Z_Ornament_B0
|
||||
{
|
||||
OFFSET 2.5 2.5 0.0
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
JOINT Z_Ornament_B1
|
||||
{
|
||||
OFFSET 2.5 2.5 0.0
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
JOINT Z_Ornament_B2
|
||||
{
|
||||
OFFSET -5.0 0.0 0.0
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
End Site
|
||||
{
|
||||
OFFSET -5.0 0.0 0.0
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
MOTION
|
||||
Frames: 1
|
||||
Frame Time: 0.040000
|
||||
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,276 @@
|
||||
HIERARCHY
|
||||
ROOT hip
|
||||
{
|
||||
OFFSET 0 0 0
|
||||
CHANNELS 6 Xposition Yposition Zposition Zrotation Yrotation Xrotation
|
||||
JOINT abdomen
|
||||
{
|
||||
OFFSET 0 20.6881 -0.73152
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
JOINT chest
|
||||
{
|
||||
OFFSET 0 11.7043 -0.48768
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
JOINT neck
|
||||
{
|
||||
OFFSET 0 22.1894 -2.19456
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
JOINT head
|
||||
{
|
||||
OFFSET -0.24384 7.07133 1.2192
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
JOINT leftEye
|
||||
{
|
||||
OFFSET 4.14528 8.04674 8.04672
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
End Site
|
||||
{
|
||||
OFFSET 1 0 0
|
||||
}
|
||||
}
|
||||
JOINT rightEye
|
||||
{
|
||||
OFFSET -3.6576 8.04674 8.04672
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
End Site
|
||||
{
|
||||
OFFSET 1 0 0
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
JOINT rCollar
|
||||
{
|
||||
OFFSET -2.68224 19.2634 -4.8768
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
JOINT rShldr
|
||||
{
|
||||
OFFSET -8.77824 -1.95073 1.46304
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
JOINT rForeArm
|
||||
{
|
||||
OFFSET -28.1742 -1.7115 0.48768
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
JOINT rHand
|
||||
{
|
||||
OFFSET -22.5879 0.773209 7.07136
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
JOINT rThumb1
|
||||
{
|
||||
OFFSET -1.2192 -0.487915 3.41376
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
JOINT rThumb2
|
||||
{
|
||||
OFFSET -3.37035 -0.52449 3.41376
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
End Site
|
||||
{
|
||||
OFFSET -1.78271 -1.18214 1.43049
|
||||
}
|
||||
}
|
||||
}
|
||||
JOINT rIndex1
|
||||
{
|
||||
OFFSET -7.75947 0.938293 5.60832
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
JOINT rIndex2
|
||||
{
|
||||
OFFSET -2.54057 -0.884171 1.56538
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
End Site
|
||||
{
|
||||
OFFSET -1.62519 -0.234802 1.16502
|
||||
}
|
||||
}
|
||||
}
|
||||
JOINT rMid1
|
||||
{
|
||||
OFFSET -8.24714 1.18213 3.41376
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
JOINT rMid2
|
||||
{
|
||||
OFFSET -3.10165 -0.590103 1.0647
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
End Site
|
||||
{
|
||||
OFFSET -2.48547 -0.328903 0.83742
|
||||
}
|
||||
}
|
||||
}
|
||||
JOINT rRing1
|
||||
{
|
||||
OFFSET -8.82822 0.546677 1.51678
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
JOINT rRing2
|
||||
{
|
||||
OFFSET -2.60934 -0.819778 -0.0198488
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
End Site
|
||||
{
|
||||
OFFSET -2.33842 -0.294052 0.168128
|
||||
}
|
||||
}
|
||||
}
|
||||
JOINT rPinky1
|
||||
{
|
||||
OFFSET -8.27202 -0.0477905 -0.4584
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
JOINT rPinky2
|
||||
{
|
||||
OFFSET -1.82734 -0.647385 -0.700984
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
End Site
|
||||
{
|
||||
OFFSET -1.69225 -0.51767 -0.607171
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
JOINT lCollar
|
||||
{
|
||||
OFFSET 2.68224 19.2634 -4.8768
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
JOINT lShldr
|
||||
{
|
||||
OFFSET 8.77824 -1.95073 1.46304
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
JOINT lForeArm
|
||||
{
|
||||
OFFSET 28.1742 -1.7115 0.48768
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
JOINT lHand
|
||||
{
|
||||
OFFSET 22.5879 0.773209 7.07136
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
JOINT lThumb1
|
||||
{
|
||||
OFFSET 1.2192 -0.487915 3.41376
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
JOINT lThumb2
|
||||
{
|
||||
OFFSET 3.37035 -0.52449 3.41376
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
End Site
|
||||
{
|
||||
OFFSET 1.78271 -1.18214 1.43049
|
||||
}
|
||||
}
|
||||
}
|
||||
JOINT lIndex1
|
||||
{
|
||||
OFFSET 7.75947 0.938293 5.60832
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
JOINT lIndex2
|
||||
{
|
||||
OFFSET 2.54057 -0.884171 1.56538
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
End Site
|
||||
{
|
||||
OFFSET 1.62519 -0.234802 1.16502
|
||||
}
|
||||
}
|
||||
}
|
||||
JOINT lMid1
|
||||
{
|
||||
OFFSET 8.24714 1.18213 3.41376
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
JOINT lMid2
|
||||
{
|
||||
OFFSET 3.10165 -0.590103 1.0647
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
End Site
|
||||
{
|
||||
OFFSET 2.48547 -0.328903 0.83742
|
||||
}
|
||||
}
|
||||
}
|
||||
JOINT lRing1
|
||||
{
|
||||
OFFSET 8.82822 0.546677 1.51678
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
JOINT lRing2
|
||||
{
|
||||
OFFSET 2.60934 -0.819778 -0.0198488
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
End Site
|
||||
{
|
||||
OFFSET 2.33842 -0.294052 0.168128
|
||||
}
|
||||
}
|
||||
}
|
||||
JOINT lPinky1
|
||||
{
|
||||
OFFSET 8.27202 -0.0477905 -0.4584
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
JOINT lPinky2
|
||||
{
|
||||
OFFSET 1.82734 -0.647385 -0.700984
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
End Site
|
||||
{
|
||||
OFFSET 1.69225 -0.51767 -0.607171
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
JOINT rButtock
|
||||
{
|
||||
OFFSET -8.77824 4.35084 1.2192
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
JOINT rThigh
|
||||
{
|
||||
OFFSET 0 -1.70687 -2.19456
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
JOINT rShin
|
||||
{
|
||||
OFFSET 0 -36.8199 0.73152
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
JOINT rFoot
|
||||
{
|
||||
OFFSET 0.73152 -45.1104 -5.12064
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
End Site
|
||||
{
|
||||
OFFSET -1.1221 -3.69964 12.103
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
JOINT lButtock
|
||||
{
|
||||
OFFSET 8.77824 4.35084 1.2192
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
JOINT lThigh
|
||||
{
|
||||
OFFSET 0 -1.70687 -2.19456
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
JOINT lShin
|
||||
{
|
||||
OFFSET 0 -36.8199 0.73152
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
JOINT lFoot
|
||||
{
|
||||
OFFSET -0.73152 -45.1104 -5.12064
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
End Site
|
||||
{
|
||||
OFFSET 1.1221 -3.69964 12.103
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
MOTION
|
||||
Frames: 1
|
||||
Frame Time: 0.04
|
||||
-36.9591 -6.6997 -109.9615 1.6043 -4.3309 5.0092 0.5097 6.5673 1.3846 -0.0103 -0.0119 0.0508 -8.6191 3.2278 -3.0830 12.7205 0.1189 -1.1459 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 52.8597 33.4915 1.4029 -17.6149 -9.0171 30.5911 -2.2427 12.5892 2.8079 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0239 0.0136 0.0138 0.0000 0.0000 0.0000 0.0304 0.0086 0.0160 0.0000 0.0000 0.0000 0.0156 0.0211 0.0357 0.0000 0.0000 0.0000 0.0280 -0.0226 -0.0298 0.0000 0.0000 0.0000 -65.5102 14.9901 -0.2439 19.8193 -15.0257 -36.4212 0.3359 -3.4324 1.3281 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 -0.0134 0.0062 -0.0052 0.0000 0.0000 0.0000 -0.0334 0.0306 -0.0050 0.0000 0.0000 0.0000 -0.0305 0.0041 -0.0329 0.0000 0.0000 0.0000 -0.0039 -0.0187 0.0140 0.0000 0.0000 0.0000 -2.8009 -15.7151 -7.3415 -1.0408 24.0401 0.0885 -3.2956 -8.0185 -8.6331 0.0000 0.0000 0.0000 0.6124 -9.9020 -2.4375 0.6809 24.1049 -0.8555 0.7591 -9.1731 2.8152
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,562 @@
|
||||
# This is a rendering configuration for ../dependencies/RGBDAcquisition/opengl_acquisition_shared_library/opengl_depth_and_color_renderer/
|
||||
#
|
||||
# If you want to make a new 3D model to replace the default one install makehuman, install the CMU plus Face rig ( http://www.makehuman.org/content/cmu_plus_face.html )
|
||||
# select it as the used rig and make the body pose at a t-pose, finally export it as Collada(dae) with Feet on ground , Y up, face Z , Bone orienation Local=Global and decimeters
|
||||
#
|
||||
# compile assimpTester in ../dependencies/RGBDAcquisition/opengl_acquisition_shared_library/opengl_depth_and_color_renderer/submodules/Assimp
|
||||
# ./assimpTester --convert makehumanexports/newmodel.dae makehuman.tri --paint 123 123 123
|
||||
#
|
||||
# copy the new makehuman.tri to your dataset/makehuman.tri
|
||||
#
|
||||
# You can verify that it is properly rendering without running the demo
|
||||
# cd ../dependencies/RGBDAcquisition/opengl_acquisition_shared_library/opengl_depth_and_color_renderer/
|
||||
# mkdir build
|
||||
# cd build && cmake .. && make
|
||||
# cd ..
|
||||
# ./Renderer --from path/to/this/human3D.conf
|
||||
#
|
||||
|
||||
|
||||
BACKGROUND(0,0,0)
|
||||
#INCLUDE(Scenes/renderLikeMBVRH.conf)
|
||||
#This is the way to render like the mbv renderer :)
|
||||
AUTOREFRESH(1500)
|
||||
NEAR_CLIP(0.1)
|
||||
FAR_CLIP(1000)
|
||||
#Bring our world to the MBV coordinate system
|
||||
SCALE_WORLD(-0.01,-0.01,0.01)
|
||||
MAP_ROTATIONS(-1,-1,1,zxy)
|
||||
OFFSET_ROTATIONS(0,0,0)
|
||||
#EMULATE_PROJECTION_MATRIX(535.423889 , 0.0 , 320.0 , 0.0 , 533.48468, 240.0 , 0 , 1)
|
||||
EMULATE_PROJECTION_MATRIX(582.18394 , 0.0 , 960.0 , 0.0 , 582.52915, 540.0 , 0 , 1)
|
||||
SILENT(1)
|
||||
RATE(120)
|
||||
INTERPOLATE_TIME(1)
|
||||
MOVE_VIEW(1)
|
||||
OBJECT_TYPE(floorType,grid)
|
||||
#OBJECT(floor,floorType,0,235,255,0 ,0, 50.0,50.0,50.0)
|
||||
|
||||
OBJECT_TYPE(humanMesh,dataset/makehuman.tri,http://ammar.gr/mocapnet/makehuman.tri)
|
||||
RIGID_OBJECT(human,humanMesh, 255,0,0,0,0 ,1.0,1.0,1.0)
|
||||
|
||||
LIGHT(0,0,-100)
|
||||
|
||||
|
||||
#Note of all the bones in file..
|
||||
Bone 0 : Scene
|
||||
Bone 1 : CMU+Face_compliant_skeleton
|
||||
Bone 2 : Hips
|
||||
Bone 3 : LHipJoint
|
||||
Bone 4 : LeftUpLeg
|
||||
Bone 5 : LeftLeg
|
||||
Bone 6 : LeftFoot
|
||||
Bone 7 : LeftToeBase
|
||||
Bone 8 : LowerBack
|
||||
Bone 9 : Spine
|
||||
Bone 10 : Spine1
|
||||
Bone 11 : LeftShoulder
|
||||
Bone 12 : LeftArm
|
||||
Bone 13 : LeftForeArm
|
||||
Bone 14 : LeftHand
|
||||
Bone 15 : metacarpal1_L
|
||||
Bone 16 : finger2-1_L
|
||||
Bone 17 : finger2-2_L
|
||||
Bone 18 : finger2-3_L
|
||||
Bone 19 : metacarpal2_L
|
||||
Bone 20 : finger3-1_L
|
||||
Bone 21 : finger3-2_L
|
||||
Bone 22 : finger3-3_L
|
||||
Bone 23 : metacarpal3_L
|
||||
Bone 24 : finger4-1_L
|
||||
Bone 25 : finger4-2_L
|
||||
Bone 26 : finger4-3_L
|
||||
Bone 27 : metacarpal4_L
|
||||
Bone 28 : finger5-1_L
|
||||
Bone 29 : finger5-2_L
|
||||
Bone 30 : finger5-3_L
|
||||
Bone 31 : LThumb
|
||||
Bone 32 : finger1-2_L
|
||||
Bone 33 : finger1-3_L
|
||||
Bone 34 : Neck
|
||||
Bone 35 : Neck1
|
||||
Bone 36 : Head
|
||||
Bone 37 : jaw
|
||||
Bone 38 : special04
|
||||
Bone 39 : oris02
|
||||
Bone 40 : oris01
|
||||
Bone 41 : oris06_L
|
||||
Bone 42 : oris07_L
|
||||
Bone 43 : oris06_R
|
||||
Bone 44 : oris07_R
|
||||
Bone 45 : tongue00
|
||||
Bone 46 : tongue01
|
||||
Bone 47 : tongue02
|
||||
Bone 48 : tongue03
|
||||
Bone 49 : tongue04
|
||||
Bone 50 : tongue07_L
|
||||
Bone 51 : tongue07_R
|
||||
Bone 52 : tongue06_L
|
||||
Bone 53 : tongue06_R
|
||||
Bone 54 : tongue05_L
|
||||
Bone 55 : tongue05_R
|
||||
Bone 56 : levator02_L
|
||||
Bone 57 : levator03_L
|
||||
Bone 58 : levator04_L
|
||||
Bone 59 : levator05_L
|
||||
Bone 60 : levator02_R
|
||||
Bone 61 : levator03_R
|
||||
Bone 62 : levator04_R
|
||||
Bone 63 : levator05_R
|
||||
Bone 64 : special01
|
||||
Bone 65 : oris04_L
|
||||
Bone 66 : oris03_L
|
||||
Bone 67 : oris04_R
|
||||
Bone 68 : oris03_R
|
||||
Bone 69 : oris06
|
||||
Bone 70 : oris05
|
||||
Bone 71 : special03
|
||||
Bone 72 : levator06_L
|
||||
Bone 73 : levator06_R
|
||||
Bone 74 : special06_L
|
||||
Bone 75 : special05_L
|
||||
Bone 76 : eye_L
|
||||
Bone 77 : orbicularis03_L
|
||||
Bone 78 : orbicularis04_L
|
||||
Bone 79 : special06_R
|
||||
Bone 80 : special05_R
|
||||
Bone 81 : eye_R
|
||||
Bone 82 : orbicularis03_R
|
||||
Bone 83 : orbicularis04_R
|
||||
Bone 84 : temporalis01_L
|
||||
Bone 85 : oculi02_L
|
||||
Bone 86 : oculi01_L
|
||||
Bone 87 : temporalis01_R
|
||||
Bone 88 : oculi02_R
|
||||
Bone 89 : oculi01_R
|
||||
Bone 90 : temporalis02_L
|
||||
Bone 91 : risorius02_L
|
||||
Bone 92 : risorius03_L
|
||||
Bone 93 : temporalis02_R
|
||||
Bone 94 : risorius02_R
|
||||
Bone 95 : risorius03_R
|
||||
Bone 96 : RightShoulder
|
||||
Bone 97 : RightArm
|
||||
Bone 98 : RightForeArm
|
||||
Bone 99 : RightHand
|
||||
Bone 100 : metacarpal1_R
|
||||
Bone 101 : finger2-1_R
|
||||
Bone 102 : finger2-2_R
|
||||
Bone 103 : finger2-3_R
|
||||
Bone 104 : metacarpal2_R
|
||||
Bone 105 : finger3-1_R
|
||||
Bone 106 : finger3-2_R
|
||||
Bone 107 : finger3-3_R
|
||||
Bone 108 : metacarpal3_R
|
||||
Bone 109 : finger4-1_R
|
||||
Bone 110 : finger4-2_R
|
||||
Bone 111 : finger4-3_R
|
||||
Bone 112 : metacarpal4_R
|
||||
Bone 113 : finger5-1_R
|
||||
Bone 114 : finger5-2_R
|
||||
Bone 115 : finger5-3_R
|
||||
Bone 116 : RThumb
|
||||
Bone 117 : finger1-2_R
|
||||
Bone 118 : finger1-3_R
|
||||
Bone 119 : RHipJoint
|
||||
Bone 120 : RightUpLeg
|
||||
Bone 121 : RightLeg
|
||||
Bone 122 : RightFoot
|
||||
Bone 123 : RightToeBase
|
||||
Bone 124 : newmodel-baseObject
|
||||
Bone 125 : newmodel-highpolyeyesObject
|
||||
|
||||
|
||||
#cat human3D.conf | grep Bone | cut -d':' -f2 | tr '\n' '~' | tr -d '[:blank:]' | sed -e 's/\~/,ZXY)\nPOSE_ROTATION_ORDER\(human,/g'
|
||||
OBJECT_ROTATION_ORDER(human,ZYX)
|
||||
POSE_ROTATION_ORDER(human,Hips,ZYX)
|
||||
POSE_ROTATION_ORDER(human,LHipJoint,ZXY)
|
||||
POSE_ROTATION_ORDER(human,LeftUpLeg,ZXY)
|
||||
POSE_ROTATION_ORDER(human,LeftLeg,ZXY)
|
||||
POSE_ROTATION_ORDER(human,LeftFoot,ZXY)
|
||||
POSE_ROTATION_ORDER(human,LeftToeBase,ZXY)
|
||||
POSE_ROTATION_ORDER(human,LowerBack,ZXY)
|
||||
POSE_ROTATION_ORDER(human,Spine,ZXY)
|
||||
POSE_ROTATION_ORDER(human,Spine1,ZXY)
|
||||
POSE_ROTATION_ORDER(human,LeftShoulder,ZXY)
|
||||
POSE_ROTATION_ORDER(human,LeftArm,ZXY)
|
||||
POSE_ROTATION_ORDER(human,LeftForeArm,ZXY)
|
||||
POSE_ROTATION_ORDER(human,LeftHand,ZXY)
|
||||
POSE_ROTATION_ORDER(human,metacarpal1_L,ZXY)
|
||||
POSE_ROTATION_ORDER(human,finger2-1_L,ZXY)
|
||||
POSE_ROTATION_ORDER(human,finger2-2_L,ZXY)
|
||||
POSE_ROTATION_ORDER(human,finger2-3_L,ZXY)
|
||||
POSE_ROTATION_ORDER(human,metacarpal2_L,ZXY)
|
||||
POSE_ROTATION_ORDER(human,finger3-1_L,ZXY)
|
||||
POSE_ROTATION_ORDER(human,finger3-2_L,ZXY)
|
||||
POSE_ROTATION_ORDER(human,finger3-3_L,ZXY)
|
||||
POSE_ROTATION_ORDER(human,metacarpal3_L,ZXY)
|
||||
POSE_ROTATION_ORDER(human,finger4-1_L,ZXY)
|
||||
POSE_ROTATION_ORDER(human,finger4-2_L,ZXY)
|
||||
POSE_ROTATION_ORDER(human,finger4-3_L,ZXY)
|
||||
POSE_ROTATION_ORDER(human,metacarpal4_L,ZXY)
|
||||
POSE_ROTATION_ORDER(human,finger5-1_L,ZXY)
|
||||
POSE_ROTATION_ORDER(human,finger5-2_L,ZXY)
|
||||
POSE_ROTATION_ORDER(human,finger5-3_L,ZXY)
|
||||
POSE_ROTATION_ORDER(human,LThumb,ZXY)
|
||||
POSE_ROTATION_ORDER(human,finger1-2_L,ZXY)
|
||||
POSE_ROTATION_ORDER(human,finger1-3_L,ZXY)
|
||||
POSE_ROTATION_ORDER(human,Neck,ZXY)
|
||||
POSE_ROTATION_ORDER(human,Neck1,ZXY)
|
||||
POSE_ROTATION_ORDER(human,Head,ZXY)
|
||||
POSE_ROTATION_ORDER(human,jaw,ZXY)
|
||||
POSE_ROTATION_ORDER(human,special04,ZXY)
|
||||
POSE_ROTATION_ORDER(human,oris02,ZXY)
|
||||
POSE_ROTATION_ORDER(human,oris01,ZXY)
|
||||
POSE_ROTATION_ORDER(human,oris06_L,ZXY)
|
||||
POSE_ROTATION_ORDER(human,oris07_L,ZXY)
|
||||
POSE_ROTATION_ORDER(human,oris06_R,ZXY)
|
||||
POSE_ROTATION_ORDER(human,oris07_R,ZXY)
|
||||
POSE_ROTATION_ORDER(human,tongue00,ZXY)
|
||||
POSE_ROTATION_ORDER(human,tongue01,ZXY)
|
||||
POSE_ROTATION_ORDER(human,tongue02,ZXY)
|
||||
POSE_ROTATION_ORDER(human,tongue03,ZXY)
|
||||
POSE_ROTATION_ORDER(human,tongue04,ZXY)
|
||||
POSE_ROTATION_ORDER(human,tongue07_L,ZXY)
|
||||
POSE_ROTATION_ORDER(human,tongue07_R,ZXY)
|
||||
POSE_ROTATION_ORDER(human,tongue06_L,ZXY)
|
||||
POSE_ROTATION_ORDER(human,tongue06_R,ZXY)
|
||||
POSE_ROTATION_ORDER(human,tongue05_L,ZXY)
|
||||
POSE_ROTATION_ORDER(human,tongue05_R,ZXY)
|
||||
POSE_ROTATION_ORDER(human,levator02_L,ZXY)
|
||||
POSE_ROTATION_ORDER(human,levator03_L,ZXY)
|
||||
POSE_ROTATION_ORDER(human,levator04_L,ZXY)
|
||||
POSE_ROTATION_ORDER(human,levator05_L,ZXY)
|
||||
POSE_ROTATION_ORDER(human,levator02_R,ZXY)
|
||||
POSE_ROTATION_ORDER(human,levator03_R,ZXY)
|
||||
POSE_ROTATION_ORDER(human,levator04_R,ZXY)
|
||||
POSE_ROTATION_ORDER(human,levator05_R,ZXY)
|
||||
POSE_ROTATION_ORDER(human,special01,ZXY)
|
||||
POSE_ROTATION_ORDER(human,oris04_L,ZXY)
|
||||
POSE_ROTATION_ORDER(human,oris03_L,ZXY)
|
||||
POSE_ROTATION_ORDER(human,oris04_R,ZXY)
|
||||
POSE_ROTATION_ORDER(human,oris03_R,ZXY)
|
||||
POSE_ROTATION_ORDER(human,oris06,ZXY)
|
||||
POSE_ROTATION_ORDER(human,oris05,ZXY)
|
||||
POSE_ROTATION_ORDER(human,special03,ZXY)
|
||||
POSE_ROTATION_ORDER(human,levator06_L,ZXY)
|
||||
POSE_ROTATION_ORDER(human,levator06_R,ZXY)
|
||||
POSE_ROTATION_ORDER(human,special06_L,ZXY)
|
||||
POSE_ROTATION_ORDER(human,special05_L,ZXY)
|
||||
POSE_ROTATION_ORDER(human,eye_L,ZXY)
|
||||
POSE_ROTATION_ORDER(human,orbicularis03_L,ZXY)
|
||||
POSE_ROTATION_ORDER(human,orbicularis04_L,ZXY)
|
||||
POSE_ROTATION_ORDER(human,special06_R,ZXY)
|
||||
POSE_ROTATION_ORDER(human,special05_R,ZXY)
|
||||
POSE_ROTATION_ORDER(human,eye_R,ZXY)
|
||||
POSE_ROTATION_ORDER(human,orbicularis03_R,ZXY)
|
||||
POSE_ROTATION_ORDER(human,orbicularis04_R,ZXY)
|
||||
POSE_ROTATION_ORDER(human,temporalis01_L,ZXY)
|
||||
POSE_ROTATION_ORDER(human,oculi02_L,ZXY)
|
||||
POSE_ROTATION_ORDER(human,oculi01_L,ZXY)
|
||||
POSE_ROTATION_ORDER(human,temporalis01_R,ZXY)
|
||||
POSE_ROTATION_ORDER(human,oculi02_R,ZXY)
|
||||
POSE_ROTATION_ORDER(human,oculi01_R,ZXY)
|
||||
POSE_ROTATION_ORDER(human,temporalis02_L,ZXY)
|
||||
POSE_ROTATION_ORDER(human,risorius02_L,ZXY)
|
||||
POSE_ROTATION_ORDER(human,risorius03_L,ZXY)
|
||||
POSE_ROTATION_ORDER(human,temporalis02_R,ZXY)
|
||||
POSE_ROTATION_ORDER(human,risorius02_R,ZXY)
|
||||
POSE_ROTATION_ORDER(human,risorius03_R,ZXY)
|
||||
POSE_ROTATION_ORDER(human,RightShoulder,ZXY)
|
||||
POSE_ROTATION_ORDER(human,RightArm,ZXY)
|
||||
POSE_ROTATION_ORDER(human,RightForeArm,ZXY)
|
||||
POSE_ROTATION_ORDER(human,RightHand,ZXY)
|
||||
POSE_ROTATION_ORDER(human,metacarpal1_R,ZXY)
|
||||
POSE_ROTATION_ORDER(human,finger2-1_R,ZXY)
|
||||
POSE_ROTATION_ORDER(human,finger2-2_R,ZXY)
|
||||
POSE_ROTATION_ORDER(human,finger2-3_R,ZXY)
|
||||
POSE_ROTATION_ORDER(human,metacarpal2_R,ZXY)
|
||||
POSE_ROTATION_ORDER(human,finger3-1_R,ZXY)
|
||||
POSE_ROTATION_ORDER(human,finger3-2_R,ZXY)
|
||||
POSE_ROTATION_ORDER(human,finger3-3_R,ZXY)
|
||||
POSE_ROTATION_ORDER(human,metacarpal3_R,ZXY)
|
||||
POSE_ROTATION_ORDER(human,finger4-1_R,ZXY)
|
||||
POSE_ROTATION_ORDER(human,finger4-2_R,ZXY)
|
||||
POSE_ROTATION_ORDER(human,finger4-3_R,ZXY)
|
||||
POSE_ROTATION_ORDER(human,metacarpal4_R,ZXY)
|
||||
POSE_ROTATION_ORDER(human,finger5-1_R,ZXY)
|
||||
POSE_ROTATION_ORDER(human,finger5-2_R,ZXY)
|
||||
POSE_ROTATION_ORDER(human,finger5-3_R,ZXY)
|
||||
POSE_ROTATION_ORDER(human,RThumb,ZXY)
|
||||
POSE_ROTATION_ORDER(human,finger1-2_R,ZXY)
|
||||
POSE_ROTATION_ORDER(human,finger1-3_R,ZXY)
|
||||
POSE_ROTATION_ORDER(human,RHipJoint,ZXY)
|
||||
POSE_ROTATION_ORDER(human,RightUpLeg,ZXY)
|
||||
POSE_ROTATION_ORDER(human,RightLeg,ZXY)
|
||||
POSE_ROTATION_ORDER(human,RightFoot,ZXY)
|
||||
POSE_ROTATION_ORDER(human,RightToeBase,ZXY)
|
||||
|
||||
#MOVE(floor,0,0.0,2784.976,3699.735,0.0,0.0,0.0,0.0)
|
||||
#Root joint euler angle order ZYX
|
||||
MOVE(human,0,0.0,900.0,2000,0.0,180.0,0.0)
|
||||
|
||||
|
||||
#cat human3D.conf | grep Bone | cut -d':' -f2 | tr '\n' '~' | tr -d '[:blank:]' | sed -e 's/\~/,0,0,0)\nPOSE(human,0,/g'
|
||||
POSE(human,0,Hips,0,0,0)
|
||||
POSE(human,0,LHipJoint,0,0,0)
|
||||
POSE(human,0,LeftUpLeg,0,0,0)
|
||||
POSE(human,0,LeftLeg,0,0,0)
|
||||
POSE(human,0,LeftFoot,0,0,0)
|
||||
POSE(human,0,LeftToeBase,0,0,0)
|
||||
POSE(human,0,LowerBack,0,0,0)
|
||||
POSE(human,0,Spine,0,0,0)
|
||||
POSE(human,0,Spine1,0,0,0)
|
||||
POSE(human,0,LeftShoulder,0,0,0)
|
||||
POSE(human,0,LeftArm,0,0,0)
|
||||
POSE(human,0,LeftForeArm,0,0,0)
|
||||
POSE(human,0,LeftHand,0,0,0)
|
||||
POSE(human,0,metacarpal1_L,0,0,0)
|
||||
POSE(human,0,finger2-1_L,0,0,0)
|
||||
POSE(human,0,finger2-2_L,0,0,0)
|
||||
POSE(human,0,finger2-3_L,0,0,0)
|
||||
POSE(human,0,metacarpal2_L,0,0,0)
|
||||
POSE(human,0,finger3-1_L,0,0,0)
|
||||
POSE(human,0,finger3-2_L,0,0,0)
|
||||
POSE(human,0,finger3-3_L,0,0,0)
|
||||
POSE(human,0,metacarpal3_L,0,0,0)
|
||||
POSE(human,0,finger4-1_L,0,0,0)
|
||||
POSE(human,0,finger4-2_L,0,0,0)
|
||||
POSE(human,0,finger4-3_L,0,0,0)
|
||||
POSE(human,0,metacarpal4_L,0,0,0)
|
||||
POSE(human,0,finger5-1_L,0,0,0)
|
||||
POSE(human,0,finger5-2_L,0,0,0)
|
||||
POSE(human,0,finger5-3_L,0,0,0)
|
||||
POSE(human,0,LThumb,0,0,0)
|
||||
POSE(human,0,finger1-2_L,0,0,0)
|
||||
POSE(human,0,finger1-3_L,0,0,0)
|
||||
POSE(human,0,Neck,0,0,0)
|
||||
POSE(human,0,Neck1,0,0,0)
|
||||
POSE(human,0,Head,0,0,0)
|
||||
POSE(human,0,jaw,0,0,0)
|
||||
POSE(human,0,special04,0,0,0)
|
||||
POSE(human,0,oris02,0,0,0)
|
||||
POSE(human,0,oris01,0,0,0)
|
||||
POSE(human,0,oris06_L,0,0,0)
|
||||
POSE(human,0,oris07_L,0,0,0)
|
||||
POSE(human,0,oris06_R,0,0,0)
|
||||
POSE(human,0,oris07_R,0,0,0)
|
||||
POSE(human,0,tongue00,0,0,0)
|
||||
POSE(human,0,tongue01,0,0,0)
|
||||
POSE(human,0,tongue02,0,0,0)
|
||||
POSE(human,0,tongue03,0,0,0)
|
||||
POSE(human,0,tongue04,0,0,0)
|
||||
POSE(human,0,tongue07_L,0,0,0)
|
||||
POSE(human,0,tongue07_R,0,0,0)
|
||||
POSE(human,0,tongue06_L,0,0,0)
|
||||
POSE(human,0,tongue06_R,0,0,0)
|
||||
POSE(human,0,tongue05_L,0,0,0)
|
||||
POSE(human,0,tongue05_R,0,0,0)
|
||||
POSE(human,0,levator02_L,0,0,0)
|
||||
POSE(human,0,levator03_L,0,0,0)
|
||||
POSE(human,0,levator04_L,0,0,0)
|
||||
POSE(human,0,levator05_L,0,0,0)
|
||||
POSE(human,0,levator02_R,0,0,0)
|
||||
POSE(human,0,levator03_R,0,0,0)
|
||||
POSE(human,0,levator04_R,0,0,0)
|
||||
POSE(human,0,levator05_R,0,0,0)
|
||||
POSE(human,0,special01,0,0,0)
|
||||
POSE(human,0,oris04_L,0,0,0)
|
||||
POSE(human,0,oris03_L,0,0,0)
|
||||
POSE(human,0,oris04_R,0,0,0)
|
||||
POSE(human,0,oris03_R,0,0,0)
|
||||
POSE(human,0,oris06,0,0,0)
|
||||
POSE(human,0,oris05,0,0,0)
|
||||
POSE(human,0,special03,0,0,0)
|
||||
POSE(human,0,levator06_L,0,0,0)
|
||||
POSE(human,0,levator06_R,0,0,0)
|
||||
POSE(human,0,special06_L,0,0,0)
|
||||
POSE(human,0,special05_L,0,0,0)
|
||||
POSE(human,0,eye_L,0,0,0)
|
||||
POSE(human,0,orbicularis03_L,0,0,0)
|
||||
POSE(human,0,orbicularis04_L,0,0,0)
|
||||
POSE(human,0,special06_R,0,0,0)
|
||||
POSE(human,0,special05_R,0,0,0)
|
||||
POSE(human,0,eye_R,0,0,0)
|
||||
POSE(human,0,orbicularis03_R,0,0,0)
|
||||
POSE(human,0,orbicularis04_R,0,0,0)
|
||||
POSE(human,0,temporalis01_L,0,0,0)
|
||||
POSE(human,0,oculi02_L,0,0,0)
|
||||
POSE(human,0,oculi01_L,0,0,0)
|
||||
POSE(human,0,temporalis01_R,0,0,0)
|
||||
POSE(human,0,oculi02_R,0,0,0)
|
||||
POSE(human,0,oculi01_R,0,0,0)
|
||||
POSE(human,0,temporalis02_L,0,0,0)
|
||||
POSE(human,0,risorius02_L,0,0,0)
|
||||
POSE(human,0,risorius03_L,0,0,0)
|
||||
POSE(human,0,temporalis02_R,0,0,0)
|
||||
POSE(human,0,risorius02_R,0,0,0)
|
||||
POSE(human,0,risorius03_R,0,0,0)
|
||||
POSE(human,0,RightShoulder,0,0,0)
|
||||
POSE(human,0,RightArm,0,0,0)
|
||||
POSE(human,0,RightForeArm,0,0,0)
|
||||
POSE(human,0,RightHand,0,0,0)
|
||||
POSE(human,0,metacarpal1_R,0,0,0)
|
||||
POSE(human,0,finger2-1_R,0,0,0)
|
||||
POSE(human,0,finger2-2_R,0,0,0)
|
||||
POSE(human,0,finger2-3_R,0,0,0)
|
||||
POSE(human,0,metacarpal2_R,0,0,0)
|
||||
POSE(human,0,finger3-1_R,0,0,0)
|
||||
POSE(human,0,finger3-2_R,0,0,0)
|
||||
POSE(human,0,finger3-3_R,0,0,0)
|
||||
POSE(human,0,metacarpal3_R,0,0,0)
|
||||
POSE(human,0,finger4-1_R,0,0,0)
|
||||
POSE(human,0,finger4-2_R,0,0,0)
|
||||
POSE(human,0,finger4-3_R,0,0,0)
|
||||
POSE(human,0,metacarpal4_R,0,0,0)
|
||||
POSE(human,0,finger5-1_R,0,0,0)
|
||||
POSE(human,0,finger5-2_R,0,0,0)
|
||||
POSE(human,0,finger5-3_R,0,0,0)
|
||||
POSE(human,0,RThumb,0,0,0)
|
||||
POSE(human,0,finger1-2_R,0,0,0)
|
||||
POSE(human,0,finger1-3_R,0,0,0)
|
||||
POSE(human,0,RHipJoint,0,0,0)
|
||||
POSE(human,0,RightUpLeg,0,0,0)
|
||||
POSE(human,0,RightLeg,0,0,0)
|
||||
POSE(human,0,RightFoot,0,0,0)
|
||||
POSE(human,0,RightToeBase,0,0,0)
|
||||
|
||||
|
||||
|
||||
#MOVE(floor,1,-19.231,2784.976,3699.735,0.0,0.0,0.0,0.0)
|
||||
|
||||
#Root joint euler angle order ZYX
|
||||
MOVE(human,1,0.0,900.0,2000,0.0,180.0,0.0)
|
||||
|
||||
|
||||
#cat human3D.conf | grep Bone | cut -d':' -f2 | tr '\n' '~' | tr -d '[:blank:]' | sed -e 's/\~/,0,0,0)\nPOSE(human,1,/g'
|
||||
POSE(human,1,Hips,0,0,0)
|
||||
POSE(human,1,LHipJoint,0,0,0)
|
||||
POSE(human,1,LeftUpLeg,0,0,0)
|
||||
POSE(human,1,LeftLeg,0,0,0)
|
||||
POSE(human,1,LeftFoot,0,0,0)
|
||||
POSE(human,1,LeftToeBase,0,0,0)
|
||||
POSE(human,1,LowerBack,0,0,0)
|
||||
POSE(human,1,Spine,0,0,0)
|
||||
POSE(human,1,Spine1,0,0,0)
|
||||
POSE(human,1,LeftShoulder,0,0,0)
|
||||
POSE(human,1,LeftArm,0,0,0)
|
||||
POSE(human,1,LeftForeArm,0,0,0)
|
||||
POSE(human,1,LeftHand,0,0,0)
|
||||
POSE(human,1,metacarpal1_L,0,0,0)
|
||||
POSE(human,1,finger2-1_L,0,0,0)
|
||||
POSE(human,1,finger2-2_L,0,0,0)
|
||||
POSE(human,1,finger2-3_L,0,0,0)
|
||||
POSE(human,1,metacarpal2_L,0,0,0)
|
||||
POSE(human,1,finger3-1_L,0,0,0)
|
||||
POSE(human,1,finger3-2_L,0,0,0)
|
||||
POSE(human,1,finger3-3_L,0,0,0)
|
||||
POSE(human,1,metacarpal3_L,0,0,0)
|
||||
POSE(human,1,finger4-1_L,0,0,0)
|
||||
POSE(human,1,finger4-2_L,0,0,0)
|
||||
POSE(human,1,finger4-3_L,0,0,0)
|
||||
POSE(human,1,metacarpal4_L,0,0,0)
|
||||
POSE(human,1,finger5-1_L,0,0,0)
|
||||
POSE(human,1,finger5-2_L,0,0,0)
|
||||
POSE(human,1,finger5-3_L,0,0,0)
|
||||
POSE(human,1,LThumb,0,0,0)
|
||||
POSE(human,1,finger1-2_L,0,0,0)
|
||||
POSE(human,1,finger1-3_L,0,0,0)
|
||||
POSE(human,1,Neck,0,0,0)
|
||||
POSE(human,1,Neck1,0,0,0)
|
||||
POSE(human,1,Head,0,0,0)
|
||||
POSE(human,1,jaw,0,0,0)
|
||||
POSE(human,1,special04,0,0,0)
|
||||
POSE(human,1,oris02,0,0,0)
|
||||
POSE(human,1,oris01,0,0,0)
|
||||
POSE(human,1,oris06_L,0,0,0)
|
||||
POSE(human,1,oris07_L,0,0,0)
|
||||
POSE(human,1,oris06_R,0,0,0)
|
||||
POSE(human,1,oris07_R,0,0,0)
|
||||
POSE(human,1,tongue00,0,0,0)
|
||||
POSE(human,1,tongue01,0,0,0)
|
||||
POSE(human,1,tongue02,0,0,0)
|
||||
POSE(human,1,tongue03,0,0,0)
|
||||
POSE(human,1,tongue04,0,0,0)
|
||||
POSE(human,1,tongue07_L,0,0,0)
|
||||
POSE(human,1,tongue07_R,0,0,0)
|
||||
POSE(human,1,tongue06_L,0,0,0)
|
||||
POSE(human,1,tongue06_R,0,0,0)
|
||||
POSE(human,1,tongue05_L,0,0,0)
|
||||
POSE(human,1,tongue05_R,0,0,0)
|
||||
POSE(human,1,levator02_L,0,0,0)
|
||||
POSE(human,1,levator03_L,0,0,0)
|
||||
POSE(human,1,levator04_L,0,0,0)
|
||||
POSE(human,1,levator05_L,0,0,0)
|
||||
POSE(human,1,levator02_R,0,0,0)
|
||||
POSE(human,1,levator03_R,0,0,0)
|
||||
POSE(human,1,levator04_R,0,0,0)
|
||||
POSE(human,1,levator05_R,0,0,0)
|
||||
POSE(human,1,special01,0,0,0)
|
||||
POSE(human,1,oris04_L,0,0,0)
|
||||
POSE(human,1,oris03_L,0,0,0)
|
||||
POSE(human,1,oris04_R,0,0,0)
|
||||
POSE(human,1,oris03_R,0,0,0)
|
||||
POSE(human,1,oris06,0,0,0)
|
||||
POSE(human,1,oris05,0,0,0)
|
||||
POSE(human,1,special03,0,0,0)
|
||||
POSE(human,1,levator06_L,0,0,0)
|
||||
POSE(human,1,levator06_R,0,0,0)
|
||||
POSE(human,1,special06_L,0,0,0)
|
||||
POSE(human,1,special05_L,0,0,0)
|
||||
POSE(human,1,eye_L,0,0,0)
|
||||
POSE(human,1,orbicularis03_L,0,0,0)
|
||||
POSE(human,1,orbicularis04_L,0,0,0)
|
||||
POSE(human,1,special06_R,0,0,0)
|
||||
POSE(human,1,special05_R,0,0,0)
|
||||
POSE(human,1,eye_R,0,0,0)
|
||||
POSE(human,1,orbicularis03_R,0,0,0)
|
||||
POSE(human,1,orbicularis04_R,0,0,0)
|
||||
POSE(human,1,temporalis01_L,0,0,0)
|
||||
POSE(human,1,oculi02_L,0,0,0)
|
||||
POSE(human,1,oculi01_L,0,0,0)
|
||||
POSE(human,1,temporalis01_R,0,0,0)
|
||||
POSE(human,1,oculi02_R,0,0,0)
|
||||
POSE(human,1,oculi01_R,0,0,0)
|
||||
POSE(human,1,temporalis02_L,0,0,0)
|
||||
POSE(human,1,risorius02_L,0,0,0)
|
||||
POSE(human,1,risorius03_L,0,0,0)
|
||||
POSE(human,1,temporalis02_R,0,0,0)
|
||||
POSE(human,1,risorius02_R,0,0,0)
|
||||
POSE(human,1,risorius03_R,0,0,0)
|
||||
POSE(human,1,RightShoulder,0,0,0)
|
||||
POSE(human,1,RightArm,0,0,0)
|
||||
POSE(human,1,RightForeArm,0,0,0)
|
||||
POSE(human,1,RightHand,0,0,0)
|
||||
POSE(human,1,metacarpal1_R,0,0,0)
|
||||
POSE(human,1,finger2-1_R,0,0,0)
|
||||
POSE(human,1,finger2-2_R,0,0,0)
|
||||
POSE(human,1,finger2-3_R,0,0,0)
|
||||
POSE(human,1,metacarpal2_R,0,0,0)
|
||||
POSE(human,1,finger3-1_R,0,0,0)
|
||||
POSE(human,1,finger3-2_R,0,0,0)
|
||||
POSE(human,1,finger3-3_R,0,0,0)
|
||||
POSE(human,1,metacarpal3_R,0,0,0)
|
||||
POSE(human,1,finger4-1_R,0,0,0)
|
||||
POSE(human,1,finger4-2_R,0,0,0)
|
||||
POSE(human,1,finger4-3_R,0,0,0)
|
||||
POSE(human,1,metacarpal4_R,0,0,0)
|
||||
POSE(human,1,finger5-1_R,0,0,0)
|
||||
POSE(human,1,finger5-2_R,0,0,0)
|
||||
POSE(human,1,finger5-3_R,0,0,0)
|
||||
POSE(human,1,RThumb,0,0,0)
|
||||
POSE(human,1,finger1-2_R,0,0,0)
|
||||
POSE(human,1,finger1-3_R,0,0,0)
|
||||
POSE(human,1,RHipJoint,0,0,0)
|
||||
POSE(human,1,RightUpLeg,0,0,0)
|
||||
POSE(human,1,RightLeg,0,0,0)
|
||||
POSE(human,1,RightFoot,0,0,0)
|
||||
POSE(human,1,RightToeBase,0,0,0)
|
||||
POSE(human,1,newmodel-baseObject,0,0,0)
|
||||
POSE(human,1,newmodel-highpolyeyesObject,0,0,0)
|
||||
|
||||
|
||||
@@ -0,0 +1,140 @@
|
||||
HIERARCHY
|
||||
ROOT lHand
|
||||
{
|
||||
OFFSET 0 0 0
|
||||
CHANNELS 6 Xposition Yposition Zposition Zrotation Yrotation Xrotation
|
||||
JOINT metacarpal1.l
|
||||
{
|
||||
OFFSET 4.0 -0.27 2.00
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
JOINT finger2-1.l
|
||||
{
|
||||
OFFSET 4.5 0.27 0.0
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
JOINT finger2-2.l
|
||||
{
|
||||
OFFSET 3.5 -0.32 0.0
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
JOINT finger2-3.l
|
||||
{
|
||||
OFFSET 2.1 -0.29 0.0
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
End Site
|
||||
{
|
||||
OFFSET 1.98 -0.68 0.0
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
JOINT metacarpal2.l
|
||||
{
|
||||
OFFSET 4.0 -0.27 0.0
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
JOINT finger3-1.l
|
||||
{
|
||||
OFFSET 4.50 0.62 0.0
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
JOINT finger3-2.l
|
||||
{
|
||||
OFFSET 3.97 -0.58 0.0
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
JOINT finger3-3.l
|
||||
{
|
||||
OFFSET 2.5 -0.42 0.0
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
End Site
|
||||
{
|
||||
OFFSET 1.964 -0.73 0.00
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
JOINT __metacarpal3.l
|
||||
{
|
||||
OFFSET 2.5 -0.27 -2.0
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
JOINT metacarpal3.l
|
||||
{
|
||||
OFFSET 1.5 -0.16 0.0
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
JOINT finger4-1.l
|
||||
{
|
||||
OFFSET 4.5 0.70 0.0
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
JOINT finger4-2.l
|
||||
{
|
||||
OFFSET 3.67 -0.48 0.0
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
JOINT finger4-3.l
|
||||
{
|
||||
OFFSET 2.27 -0.35 -0.0
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
End Site
|
||||
{
|
||||
OFFSET 1.904 -0.62 0.0
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
JOINT __metacarpal4.l
|
||||
{
|
||||
OFFSET 2.0 -0.27 -3.0
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
JOINT metacarpal4.l
|
||||
{
|
||||
OFFSET 2.0 -0.16 -1.0
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
JOINT finger5-1.l
|
||||
{
|
||||
OFFSET 4.0 0.17 0.0
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
JOINT finger5-2.l
|
||||
{
|
||||
OFFSET 3.2 -0.17 0.0
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
JOINT finger5-3.l
|
||||
{
|
||||
OFFSET 1.495 -0.10 0.0
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
End Site
|
||||
{
|
||||
OFFSET 1.9 -0.10 0.0
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
JOINT lthumbBase
|
||||
{
|
||||
OFFSET 2.0 -0.279 4.0
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
JOINT lthumb
|
||||
{
|
||||
OFFSET 2.0 -0.142 1.0
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
JOINT finger1-2.l
|
||||
{
|
||||
OFFSET 1.9598 -2.10 1.0
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
JOINT finger1-3.l
|
||||
{
|
||||
OFFSET 2.76 -0.46 0.0
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
End Site
|
||||
{
|
||||
OFFSET 2.595 -0.16 0.0
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
MOTION
|
||||
Frames: 1
|
||||
Frame Time: 0.040000
|
||||
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
|
||||
@@ -0,0 +1,140 @@
|
||||
HIERARCHY
|
||||
ROOT lHand
|
||||
{
|
||||
OFFSET 0 0 0
|
||||
CHANNELS 7 Xposition Yposition Zposition Wrotation Xrotation Yrotation Zrotation
|
||||
JOINT metacarpal1.l
|
||||
{
|
||||
OFFSET 4.0 -0.27 2.00
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
JOINT finger2-1.l
|
||||
{
|
||||
OFFSET 4.5 0.27 0.0
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
JOINT finger2-2.l
|
||||
{
|
||||
OFFSET 3.5 -0.32 0.0
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
JOINT finger2-3.l
|
||||
{
|
||||
OFFSET 2.1 -0.29 0.0
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
End Site
|
||||
{
|
||||
OFFSET 1.98 -0.68 0.0
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
JOINT metacarpal2.l
|
||||
{
|
||||
OFFSET 4.0 -0.27 0.0
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
JOINT finger3-1.l
|
||||
{
|
||||
OFFSET 4.50 0.62 0.0
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
JOINT finger3-2.l
|
||||
{
|
||||
OFFSET 3.97 -0.58 0.0
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
JOINT finger3-3.l
|
||||
{
|
||||
OFFSET 2.5 -0.42 0.0
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
End Site
|
||||
{
|
||||
OFFSET 1.964 -0.73 0.00
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
JOINT __metacarpal3.l
|
||||
{
|
||||
OFFSET 2.5 -0.27 -2.0
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
JOINT metacarpal3.l
|
||||
{
|
||||
OFFSET 1.5 -0.16 0.0
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
JOINT finger4-1.l
|
||||
{
|
||||
OFFSET 4.5 0.70 0.0
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
JOINT finger4-2.l
|
||||
{
|
||||
OFFSET 3.67 -0.48 0.0
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
JOINT finger4-3.l
|
||||
{
|
||||
OFFSET 2.27 -0.35 -0.0
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
End Site
|
||||
{
|
||||
OFFSET 1.904 -0.62 0.0
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
JOINT __metacarpal4.l
|
||||
{
|
||||
OFFSET 2.0 -0.27 -3.0
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
JOINT metacarpal4.l
|
||||
{
|
||||
OFFSET 2.0 -0.16 -1.0
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
JOINT finger5-1.l
|
||||
{
|
||||
OFFSET 4.0 0.17 0.0
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
JOINT finger5-2.l
|
||||
{
|
||||
OFFSET 3.2 -0.17 0.0
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
JOINT finger5-3.l
|
||||
{
|
||||
OFFSET 1.495 -0.10 0.0
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
End Site
|
||||
{
|
||||
OFFSET 1.9 -0.10 0.0
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
JOINT lthumbBase
|
||||
{
|
||||
OFFSET 0.0 -0.279 2.0
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
JOINT lthumb
|
||||
{
|
||||
OFFSET 2.0 -0.142 1.0
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
JOINT finger1-2.l
|
||||
{
|
||||
OFFSET 1.9598 -2.10 1.0
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
JOINT finger1-3.l
|
||||
{
|
||||
OFFSET 2.76 -0.46 0.0
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
End Site
|
||||
{
|
||||
OFFSET 2.595 -0.16 0.0
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
MOTION
|
||||
Frames: 1
|
||||
Frame Time: 0.040000
|
||||
0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
|
||||
@@ -0,0 +1,140 @@
|
||||
HIERARCHY
|
||||
ROOT rHand
|
||||
{
|
||||
OFFSET 0 0 0
|
||||
CHANNELS 6 Xposition Yposition Zposition Zrotation Yrotation Xrotation
|
||||
JOINT metacarpal1.r
|
||||
{
|
||||
OFFSET -4.0 -0.27 2.00
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
JOINT finger2-1.r
|
||||
{
|
||||
OFFSET -4.5 0.27 0.0
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
JOINT finger2-2.r
|
||||
{
|
||||
OFFSET -3.5 -0.32 0.0
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
JOINT finger2-3.r
|
||||
{
|
||||
OFFSET -2.1 -0.29 0.0
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
End Site
|
||||
{
|
||||
OFFSET -1.98 -0.68 0.0
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
JOINT metacarpal2.r
|
||||
{
|
||||
OFFSET -4.0 -0.27 0.0
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
JOINT finger3-1.r
|
||||
{
|
||||
OFFSET -4.50 0.62 0.0
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
JOINT finger3-2.r
|
||||
{
|
||||
OFFSET -3.97 -0.58 0.0
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
JOINT finger3-3.r
|
||||
{
|
||||
OFFSET -2.5 -0.42 0.0
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
End Site
|
||||
{
|
||||
OFFSET -1.964 -0.73 0.00
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
JOINT __metacarpal3.r
|
||||
{
|
||||
OFFSET -2.5 -0.27 -2.0
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
JOINT metacarpal3.r
|
||||
{
|
||||
OFFSET -1.5 -0.16 0.0
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
JOINT finger4-1.r
|
||||
{
|
||||
OFFSET -4.5 0.70 0.0
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
JOINT finger4-2.r
|
||||
{
|
||||
OFFSET -3.67 -0.48 0.0
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
JOINT finger4-3.r
|
||||
{
|
||||
OFFSET -2.27 -0.35 -0.0
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
End Site
|
||||
{
|
||||
OFFSET -1.904 -0.62 0.0
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
JOINT __metacarpal4.r
|
||||
{
|
||||
OFFSET -2.0 -0.27 -3.0
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
JOINT metacarpal4.r
|
||||
{
|
||||
OFFSET -2.0 -0.16 -1.0
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
JOINT finger5-1.r
|
||||
{
|
||||
OFFSET -4.0 0.17 0.0
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
JOINT finger5-2.r
|
||||
{
|
||||
OFFSET -3.2 -0.17 0.0
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
JOINT finger5-3.r
|
||||
{
|
||||
OFFSET -1.495 -0.10 0.0
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
End Site
|
||||
{
|
||||
OFFSET -1.9 -0.10 0.0
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
JOINT rthumbBase
|
||||
{
|
||||
OFFSET -2.0 -0.279 4.0
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
JOINT rthumb
|
||||
{
|
||||
OFFSET -2.0 -0.142 1.0
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
JOINT finger1-2.r
|
||||
{
|
||||
OFFSET -1.9598 -2.10 1.0
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
JOINT finger1-3.r
|
||||
{
|
||||
OFFSET -2.76 -0.46 0.0
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
End Site
|
||||
{
|
||||
OFFSET -2.595 -0.16 0.0
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
MOTION
|
||||
Frames: 1
|
||||
Frame Time: 0.040000
|
||||
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
|
||||
@@ -0,0 +1,140 @@
|
||||
HIERARCHY
|
||||
ROOT rHand
|
||||
{
|
||||
OFFSET 0 0 0
|
||||
CHANNELS 7 Xposition Yposition Zposition Wrotation Xrotation Yrotation Zrotation
|
||||
JOINT metacarpal1.r
|
||||
{
|
||||
OFFSET -4.0 -0.27 2.00
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
JOINT finger2-1.r
|
||||
{
|
||||
OFFSET -4.5 0.27 0.0
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
JOINT finger2-2.r
|
||||
{
|
||||
OFFSET -3.5 -0.32 0.0
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
JOINT finger2-3.r
|
||||
{
|
||||
OFFSET -2.1 -0.29 0.0
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
End Site
|
||||
{
|
||||
OFFSET -1.98 -0.68 0.0
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
JOINT metacarpal2.r
|
||||
{
|
||||
OFFSET -4.0 -0.27 0.0
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
JOINT finger3-1.r
|
||||
{
|
||||
OFFSET -4.50 0.62 0.0
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
JOINT finger3-2.r
|
||||
{
|
||||
OFFSET -3.97 -0.58 0.0
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
JOINT finger3-3.r
|
||||
{
|
||||
OFFSET -2.5 -0.42 0.0
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
End Site
|
||||
{
|
||||
OFFSET -1.964 -0.73 0.00
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
JOINT __metacarpal3.r
|
||||
{
|
||||
OFFSET -2.5 -0.27 -2.0
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
JOINT metacarpal3.r
|
||||
{
|
||||
OFFSET -1.5 -0.16 0.0
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
JOINT finger4-1.r
|
||||
{
|
||||
OFFSET -4.5 0.70 0.0
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
JOINT finger4-2.r
|
||||
{
|
||||
OFFSET -3.67 -0.48 0.0
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
JOINT finger4-3.r
|
||||
{
|
||||
OFFSET -2.27 -0.35 -0.0
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
End Site
|
||||
{
|
||||
OFFSET -1.904 -0.62 0.0
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
JOINT __metacarpal4.r
|
||||
{
|
||||
OFFSET -2.0 -0.27 -3.0
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
JOINT metacarpal4.r
|
||||
{
|
||||
OFFSET -2.0 -0.16 -1.0
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
JOINT finger5-1.r
|
||||
{
|
||||
OFFSET -4.0 0.17 0.0
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
JOINT finger5-2.r
|
||||
{
|
||||
OFFSET -3.2 -0.17 0.0
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
JOINT finger5-3.r
|
||||
{
|
||||
OFFSET -1.495 -0.10 0.0
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
End Site
|
||||
{
|
||||
OFFSET -1.9 -0.10 0.0
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
JOINT rthumbBase
|
||||
{
|
||||
OFFSET 0.0 -0.279 2.0
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
JOINT rthumb
|
||||
{
|
||||
OFFSET -2.0 -0.142 1.0
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
JOINT finger1-2.r
|
||||
{
|
||||
OFFSET -1.9598 -2.10 1.0
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
JOINT finger1-3.r
|
||||
{
|
||||
OFFSET -2.76 -0.46 0.0
|
||||
CHANNELS 3 Zrotation Xrotation Yrotation
|
||||
End Site
|
||||
{
|
||||
OFFSET -2.595 -0.16 0.0
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
MOTION
|
||||
Frames: 1
|
||||
Frame Time: 0.040000
|
||||
0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
|
||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1,454 @@
|
||||
2D_X_hip,2D_Y_hip,2D_vis_hip,2D_X_abdomen,2D_Y_abdomen,2D_vis_abdomen,2D_X_chest,2D_Y_chest,2D_vis_chest,2D_X_neck,2D_Y_neck,2D_vis_neck,2D_X_head,2D_Y_head,2D_vis_head,2D_X_lefteye,2D_Y_lefteye,2D_vis_lefteye,2D_X_es_lefteye,2D_Y_es_lefteye,2D_vis_es_lefteye,2D_X_righteye,2D_Y_righteye,2D_vis_righteye,2D_X_es_righteye,2D_Y_es_righteye,2D_vis_es_righteye,2D_X_rcollar,2D_Y_rcollar,2D_vis_rcollar,2D_X_rshoulder,2D_Y_rshoulder,2D_vis_rshoulder,2D_X_relbow,2D_Y_relbow,2D_vis_relbow,2D_X_rhand,2D_Y_rhand,2D_vis_rhand,2D_X_rthumb1,2D_Y_rthumb1,2D_vis_rthumb1,2D_X_rthumb2,2D_Y_rthumb2,2D_vis_rthumb2,2D_X_es_rthumb2,2D_Y_es_rthumb2,2D_vis_es_rthumb2,2D_X_rindex1,2D_Y_rindex1,2D_vis_rindex1,2D_X_rindex2,2D_Y_rindex2,2D_vis_rindex2,2D_X_es_rindex2,2D_Y_es_rindex2,2D_vis_es_rindex2,2D_X_rmid1,2D_Y_rmid1,2D_vis_rmid1,2D_X_rmid2,2D_Y_rmid2,2D_vis_rmid2,2D_X_es_rmid2,2D_Y_es_rmid2,2D_vis_es_rmid2,2D_X_rring1,2D_Y_rring1,2D_vis_rring1,2D_X_rring2,2D_Y_rring2,2D_vis_rring2,2D_X_es_rring2,2D_Y_es_rring2,2D_vis_es_rring2,2D_X_rpinky1,2D_Y_rpinky1,2D_vis_rpinky1,2D_X_rpinky2,2D_Y_rpinky2,2D_vis_rpinky2,2D_X_es_rpinky2,2D_Y_es_rpinky2,2D_vis_es_rpinky2,2D_X_lcollar,2D_Y_lcollar,2D_vis_lcollar,2D_X_lshoulder,2D_Y_lshoulder,2D_vis_lshoulder,2D_X_lelbow,2D_Y_lelbow,2D_vis_lelbow,2D_X_lhand,2D_Y_lhand,2D_vis_lhand,2D_X_lthumb1,2D_Y_lthumb1,2D_vis_lthumb1,2D_X_lthumb2,2D_Y_lthumb2,2D_vis_lthumb2,2D_X_es_lthumb2,2D_Y_es_lthumb2,2D_vis_es_lthumb2,2D_X_lindex1,2D_Y_lindex1,2D_vis_lindex1,2D_X_lindex2,2D_Y_lindex2,2D_vis_lindex2,2D_X_es_lindex2,2D_Y_es_lindex2,2D_vis_es_lindex2,2D_X_lmid1,2D_Y_lmid1,2D_vis_lmid1,2D_X_lmid2,2D_Y_lmid2,2D_vis_lmid2,2D_X_es_lmid2,2D_Y_es_lmid2,2D_vis_es_lmid2,2D_X_lring1,2D_Y_lring1,2D_vis_lring1,2D_X_lring2,2D_Y_lring2,2D_vis_lring2,2D_X_es_lring2,2D_Y_es_lring2,2D_vis_es_lring2,2D_X_lpinky1,2D_Y_lpinky1,2D_vis_lpinky1,2D_X_lpinky2,2D_Y_lpinky2,2D_vis_lpinky2,2D_X_es_lpinky2,2D_Y_es_lpinky2,2D_vis_es_lpinky2,2D_X_rbuttock,2D_Y_rbuttock,2D_vis_rbuttock,2D_X_rhip,2D_Y_rhip,2D_vis_rhip,2D_X_rknee,2D_Y_rknee,2D_vis_rknee,2D_X_rfoot,2D_Y_rfoot,2D_vis_rfoot,2D_X_es_rfoot,2D_Y_es_rfoot,2D_vis_es_rfoot,2D_X_lbuttock,2D_Y_lbuttock,2D_vis_lbuttock,2D_X_lhip,2D_Y_lhip,2D_vis_lhip,2D_X_lknee,2D_Y_lknee,2D_vis_lknee,2D_X_lfoot,2D_Y_lfoot,2D_vis_lfoot,2D_X_es_lfoot,2D_Y_es_lfoot,2D_vis_es_lfoot
|
||||
0.533708,0.429697,1.0,0.524493,0.291710,1.0,0.527565,0.337706,1.0,0.521422,0.245714,1.0,0.481595,0.182957,1.0,0.484651,0.166721,1.0,0.484651,0.166721,1.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.533719,0.243021,1.0,0.546016,0.240328,1.0,0.575135,0.332943,1.0,0.582786,0.297589,1.0,0.600422,0.291371,1.0,0.591005,0.290204,1.0,0.577432,0.287480,1.0,0.592323,0.283976,1.0,0.578745,0.325234,1.0,0.582250,0.321343,1.0,0.579844,0.318618,1.0,0.578307,0.325624,1.0,0.580063,0.318618,1.0,0.579401,0.317839,1.0,0.578089,0.325624,1.0,0.579401,0.314336,1.0,0.578526,0.302270,1.0,0.581594,0.306162,1.0,0.580938,0.307330,1.0,0.508418,0.247102,1.0,0.495415,0.248491,1.0,0.506156,0.360124,1.0,0.458677,0.360291,1.0,0.449553,0.359099,1.0,0.446515,0.354944,1.0,0.438569,0.357437,1.0,0.447683,0.355360,1.0,0.439270,0.358268,1.0,0.439504,0.361593,1.0,0.445580,0.365332,1.0,0.440439,0.362423,1.0,0.437167,0.366994,1.0,0.446281,0.365332,1.0,0.439504,0.367408,1.0,0.438803,0.368240,1.0,0.439504,0.358268,1.0,0.438335,0.355360,1.0,0.437868,0.359099,1.0,0.555135,0.425639,1.0,0.555135,0.425639,1.0,0.558292,0.600002,1.0,0.568917,0.749819,1.0,0.568917,0.749819,1.0,0.512280,0.433756,1.0,0.512280,0.433756,1.0,0.533656,0.605463,1.0,0.544490,0.768928,1.0,0.544490,0.768928,1.0
|
||||
0.533734,0.443309,1.0,0.524539,0.297082,1.0,0.527604,0.345825,1.0,0.521474,0.248340,1.0,0.483084,0.183039,1.0,0.484648,0.169425,1.0,0.484648,0.169425,1.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.534513,0.244311,1.0,0.547552,0.240282,1.0,0.579745,0.338364,1.0,0.595010,0.302975,1.0,0.589271,0.322957,1.0,0.593958,0.287964,1.0,0.594193,0.302961,1.0,0.605437,0.292130,1.0,0.594896,0.285881,1.0,0.593724,0.296712,1.0,0.606141,0.290047,1.0,0.600516,0.287964,1.0,0.599813,0.298795,1.0,0.604969,0.288381,1.0,0.600047,0.286297,1.0,0.601453,0.297962,1.0,0.603328,0.286714,1.0,0.592083,0.283798,1.0,0.603328,0.289214,1.0,0.508422,0.249761,1.0,0.495371,0.251182,1.0,0.496910,0.362991,1.0,0.447826,0.362875,1.0,0.436706,0.364068,1.0,0.430244,0.360375,1.0,0.421705,0.364888,1.0,0.433706,0.369812,1.0,0.421705,0.367760,1.0,0.425628,0.371043,1.0,0.432552,0.371453,1.0,0.421243,0.371863,1.0,0.419166,0.382531,1.0,0.433475,0.371043,1.0,0.421012,0.368991,1.0,0.419858,0.375145,1.0,0.420781,0.367350,1.0,0.421935,0.363657,1.0,0.421705,0.370222,1.0,0.555193,0.439194,1.0,0.555193,0.439194,1.0,0.561297,0.600114,1.0,0.568891,0.752716,1.0,0.568891,0.752716,1.0,0.512276,0.447425,1.0,0.512276,0.447425,1.0,0.533755,0.605479,1.0,0.544448,0.760812,1.0,0.544448,0.760812,1.0
|
||||
0.532209,0.446067,1.0,0.524123,0.299888,1.0,0.526818,0.348614,1.0,0.521427,0.251162,1.0,0.510750,0.181697,1.0,0.484742,0.180294,1.0,0.484742,0.180294,1.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.535247,0.249748,1.0,0.549068,0.248334,1.0,0.581182,0.341144,1.0,0.605714,0.305643,1.0,0.606167,0.291929,1.0,0.606844,0.286333,1.0,0.619208,0.285933,1.0,0.614714,0.301922,1.0,0.615609,0.303920,1.0,0.619885,0.283934,1.0,0.614714,0.299923,1.0,0.614484,0.302721,1.0,0.612687,0.304720,1.0,0.615161,0.295527,1.0,0.616510,0.301123,1.0,0.611115,0.307918,1.0,0.615833,0.295127,1.0,0.617859,0.301522,1.0,0.620333,0.282336,1.0,0.506889,0.253920,1.0,0.492351,0.256679,1.0,0.487777,0.371044,1.0,0.435553,0.371130,1.0,0.426600,0.366111,1.0,0.419266,0.362325,1.0,0.410039,0.369476,1.0,0.419503,0.382935,1.0,0.407909,0.373261,1.0,0.410748,0.372420,1.0,0.418556,0.389665,1.0,0.407673,0.380832,1.0,0.410512,0.375364,1.0,0.417373,0.393030,1.0,0.408383,0.382515,1.0,0.411931,0.379150,1.0,0.415954,0.393030,1.0,0.410985,0.386720,1.0,0.412641,0.382094,1.0,0.555146,0.441980,1.0,0.555146,0.441980,1.0,0.562880,0.602723,1.0,0.567448,0.755377,1.0,0.567448,0.755377,1.0,0.509272,0.450154,1.0,0.509272,0.450154,1.0,0.533792,0.610932,1.0,0.544484,0.766281,1.0,0.544484,0.766281,1.0
|
||||
0.529931,0.446020,1.0,0.522450,0.302022,1.0,0.524944,0.350022,1.0,0.519956,0.254023,1.0,0.513038,0.184497,1.0,0.484709,0.183139,1.0,0.484709,0.183139,1.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.535262,0.252590,1.0,0.550568,0.251156,1.0,0.573604,0.354717,1.0,0.613417,0.313708,1.0,0.614141,0.294047,1.0,0.615063,0.291595,1.0,0.615063,0.291595,1.0,0.614599,0.292005,1.0,0.611385,0.302626,1.0,0.611844,0.312023,1.0,0.624714,0.303852,1.0,0.626094,0.305078,1.0,0.627010,0.305078,1.0,0.627932,0.295681,1.0,0.629078,0.299767,1.0,0.630458,0.292413,1.0,0.624021,0.291595,1.0,0.625859,0.287510,1.0,0.629307,0.284651,1.0,0.503845,0.260746,1.0,0.487734,0.267469,1.0,0.483107,0.373767,1.0,0.424905,0.379210,1.0,0.418290,0.371716,1.0,0.410688,0.370026,1.0,0.401422,0.376783,1.0,0.410688,0.388186,1.0,0.400947,0.388609,1.0,0.402848,0.381430,1.0,0.412351,0.396211,1.0,0.400947,0.389454,1.0,0.404511,0.385653,1.0,0.412826,0.400012,1.0,0.403560,0.395789,1.0,0.406174,0.389454,1.0,0.412826,0.401701,1.0,0.406649,0.398744,1.0,0.408312,0.394099,1.0,0.550604,0.441940,1.0,0.550604,0.441940,1.0,0.565906,0.602700,1.0,0.567401,0.752653,1.0,0.567401,0.752653,1.0,0.509259,0.450100,1.0,0.509259,0.450100,1.0,0.533745,0.613643,1.0,0.544464,0.760820,1.0,0.544464,0.760820,1.0
|
||||
0.529931,0.446020,1.0,0.522450,0.302022,1.0,0.524944,0.350022,1.0,0.519956,0.254023,1.0,0.513038,0.184497,1.0,0.484709,0.183139,1.0,0.484709,0.183139,1.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.535262,0.252590,1.0,0.550568,0.251156,1.0,0.573604,0.354717,1.0,0.613417,0.313708,1.0,0.614141,0.294047,1.0,0.615063,0.291595,1.0,0.615063,0.291595,1.0,0.614599,0.292005,1.0,0.611385,0.302626,1.0,0.611844,0.312023,1.0,0.624714,0.303852,1.0,0.626094,0.305078,1.0,0.627010,0.305078,1.0,0.627932,0.295681,1.0,0.629078,0.299767,1.0,0.630458,0.292413,1.0,0.624021,0.291595,1.0,0.625859,0.287510,1.0,0.629307,0.284651,1.0,0.503845,0.260746,1.0,0.487734,0.267469,1.0,0.483107,0.373767,1.0,0.424905,0.379210,1.0,0.418290,0.371716,1.0,0.410688,0.370026,1.0,0.401422,0.376783,1.0,0.410688,0.388186,1.0,0.400947,0.388609,1.0,0.402848,0.381430,1.0,0.412351,0.396211,1.0,0.400947,0.389454,1.0,0.404511,0.385653,1.0,0.412826,0.400012,1.0,0.403560,0.395789,1.0,0.406174,0.389454,1.0,0.412826,0.401701,1.0,0.406649,0.398744,1.0,0.408312,0.394099,1.0,0.550604,0.441940,1.0,0.550604,0.441940,1.0,0.565906,0.602700,1.0,0.567401,0.752653,1.0,0.567401,0.752653,1.0,0.509259,0.450100,1.0,0.509259,0.450100,1.0,0.533745,0.613643,1.0,0.544464,0.760820,1.0,0.544464,0.760820,1.0
|
||||
0.527566,0.448753,1.0,0.519552,0.308734,1.0,0.522223,0.355407,1.0,0.516880,0.262061,1.0,0.513047,0.187125,1.0,0.489296,0.185671,1.0,0.489296,0.185671,1.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.531404,0.258006,1.0,0.545927,0.253952,1.0,0.567422,0.354636,1.0,0.616490,0.313738,1.0,0.612234,0.305377,1.0,0.617568,0.295500,1.0,0.624234,0.291550,1.0,0.619568,0.291944,1.0,0.628901,0.286019,1.0,0.634682,0.282068,1.0,0.624234,0.295895,1.0,0.631349,0.290759,1.0,0.636901,0.287599,1.0,0.626458,0.303007,1.0,0.633125,0.295500,1.0,0.637125,0.291944,1.0,0.629568,0.310513,1.0,0.635349,0.301821,1.0,0.637568,0.298661,1.0,0.501547,0.266085,1.0,0.486214,0.270109,1.0,0.474004,0.371125,1.0,0.423431,0.379351,1.0,0.418042,0.374864,1.0,0.409940,0.374106,1.0,0.402051,0.380549,1.0,0.409300,0.391162,1.0,0.399280,0.392679,1.0,0.400345,0.385098,1.0,0.409727,0.400259,1.0,0.399493,0.393436,1.0,0.403330,0.389646,1.0,0.411006,0.404807,1.0,0.402691,0.398743,1.0,0.404823,0.392679,1.0,0.412072,0.405187,1.0,0.405889,0.401018,1.0,0.406955,0.396848,1.0,0.545990,0.444645,1.0,0.545990,0.444645,1.0,0.565880,0.600062,1.0,0.565896,0.755356,1.0,0.565896,0.755356,1.0,0.509143,0.452861,1.0,0.509143,0.452861,1.0,0.533693,0.616317,1.0,0.544406,0.766242,1.0,0.544406,0.766242,1.0
|
||||
0.518392,0.447374,1.0,0.519548,0.304371,1.0,0.519163,0.352038,1.0,0.519934,0.256703,1.0,0.520665,0.183047,1.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.532954,0.255355,1.0,0.545974,0.254006,1.0,0.550573,0.343885,1.0,0.607250,0.311136,1.0,0.608948,0.301193,1.0,0.615505,0.288669,1.0,0.622792,0.286079,1.0,0.619391,0.284783,1.0,0.626922,0.280896,1.0,0.631536,0.277874,1.0,0.622307,0.292124,1.0,0.630568,0.288238,1.0,0.635182,0.286510,1.0,0.623521,0.301625,1.0,0.630807,0.298170,1.0,0.634937,0.296874,1.0,0.623521,0.311989,1.0,0.630323,0.308966,1.0,0.632266,0.308534,1.0,0.506873,0.259374,1.0,0.493813,0.262045,1.0,0.472464,0.365608,1.0,0.429460,0.379379,1.0,0.420503,0.376234,1.0,0.412537,0.378662,1.0,0.405254,0.385541,1.0,0.410944,0.395252,1.0,0.403660,0.397680,1.0,0.405481,0.390801,1.0,0.413447,0.401726,1.0,0.405254,0.398894,1.0,0.407985,0.394847,1.0,0.415268,0.405368,1.0,0.408213,0.404154,1.0,0.409578,0.397680,1.0,0.416634,0.405368,1.0,0.412082,0.404154,1.0,0.411171,0.400107,1.0,0.536781,0.444589,1.0,0.536781,0.444589,1.0,0.561297,0.597313,1.0,0.558307,0.766273,1.0,0.558307,0.766273,1.0,0.500003,0.450158,1.0,0.500003,0.450158,1.0,0.532188,0.613575,1.0,0.538307,0.752710,1.0,0.538307,0.752710,1.0
|
||||
0.513773,0.445977,1.0,0.517260,0.301894,1.0,0.516097,0.349921,1.0,0.518422,0.253866,1.0,0.522243,0.180343,1.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.529917,0.252513,1.0,0.541411,0.251160,1.0,0.533656,0.338481,1.0,0.591917,0.302935,1.0,0.591812,0.296115,1.0,0.599594,0.282278,1.0,0.607630,0.279154,1.0,0.603109,0.278260,1.0,0.611896,0.272011,1.0,0.616417,0.271119,1.0,0.606125,0.284956,1.0,0.614911,0.281385,1.0,0.620438,0.279600,1.0,0.607880,0.293883,1.0,0.615917,0.290758,1.0,0.620687,0.290758,1.0,0.608635,0.304150,1.0,0.615917,0.302364,1.0,0.617922,0.301471,1.0,0.506890,0.253923,1.0,0.495357,0.253981,1.0,0.473968,0.357509,1.0,0.435664,0.376464,1.0,0.427802,0.371795,1.0,0.417106,0.377864,1.0,0.411643,0.384743,1.0,0.422340,0.390811,1.0,0.411416,0.400117,1.0,0.410733,0.397690,1.0,0.425527,0.397690,1.0,0.414602,0.402949,1.0,0.410961,0.404163,1.0,0.424616,0.404163,1.0,0.417789,0.408209,1.0,0.411189,0.411446,1.0,0.425754,0.404163,1.0,0.419154,0.413064,1.0,0.415968,0.415896,1.0,0.530630,0.444591,1.0,0.530630,0.444591,1.0,0.556724,0.594482,1.0,0.556708,0.771679,1.0,0.556708,0.771679,1.0,0.496915,0.447363,1.0,0.496915,0.447363,1.0,0.527615,0.613608,1.0,0.533781,0.766218,1.0,0.533781,0.766218,1.0
|
||||
0.507651,0.444701,1.0,0.515667,0.299491,1.0,0.512995,0.347894,1.0,0.518340,0.251087,1.0,0.524558,0.174881,1.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.544500,0.161273,1.0,0.544500,0.161273,1.0,0.526058,0.247064,1.0,0.533776,0.243041,1.0,0.516845,0.335795,1.0,0.567453,0.297563,1.0,0.570708,0.290126,1.0,0.577880,0.276180,1.0,0.585052,0.272594,1.0,0.581245,0.271398,1.0,0.589760,0.264624,1.0,0.595589,0.264225,1.0,0.583708,0.278570,1.0,0.592448,0.273391,1.0,0.599172,0.273789,1.0,0.585052,0.287337,1.0,0.592896,0.284149,1.0,0.598052,0.284946,1.0,0.586172,0.298494,1.0,0.593120,0.296104,1.0,0.595589,0.295705,1.0,0.507631,0.251202,1.0,0.496922,0.251318,1.0,0.477009,0.357375,1.0,0.447943,0.360245,1.0,0.436967,0.372677,1.0,0.433968,0.375958,1.0,0.445043,0.361192,1.0,0.443658,0.359962,1.0,0.443428,0.365704,1.0,0.441120,0.369806,1.0,0.434660,0.366114,1.0,0.441582,0.380470,1.0,0.443197,0.384982,1.0,0.436045,0.363243,1.0,0.441351,0.384982,1.0,0.441582,0.385393,1.0,0.433968,0.362422,1.0,0.433737,0.366114,1.0,0.441351,0.387444,1.0,0.521458,0.441975,1.0,0.521458,0.441975,1.0,0.552089,0.597350,1.0,0.553656,0.768951,1.0,0.553656,0.768951,1.0,0.493844,0.447427,1.0,0.493844,0.447427,1.0,0.524500,0.605482,1.0,0.530615,0.771725,1.0,0.530615,0.771725,1.0
|
||||
0.503855,0.443272,1.0,0.515933,0.288981,1.0,0.511907,0.340412,1.0,0.519959,0.237551,1.0,0.524537,0.166732,1.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.547521,0.147656,1.0,0.547521,0.147656,1.0,0.524537,0.236179,1.0,0.529115,0.234806,1.0,0.498522,0.335768,1.0,0.545995,0.294882,1.0,0.549354,0.286439,1.0,0.554797,0.272977,1.0,0.560948,0.268769,1.0,0.556453,0.269611,1.0,0.564974,0.262459,1.0,0.570891,0.262039,1.0,0.558818,0.276343,1.0,0.568047,0.270453,1.0,0.575146,0.271294,1.0,0.560005,0.286019,1.0,0.567578,0.280970,1.0,0.573729,0.282232,1.0,0.560479,0.295694,1.0,0.568047,0.292749,1.0,0.571833,0.292749,1.0,0.515356,0.236189,1.0,0.510753,0.234828,1.0,0.486226,0.335642,1.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.512260,0.441914,1.0,0.512260,0.441914,1.0,0.546042,0.599946,1.0,0.545948,0.771711,1.0,0.545948,0.771711,1.0,0.495449,0.444631,1.0,0.495449,0.444631,1.0,0.526047,0.608169,1.0,0.518346,0.766256,1.0,0.518346,0.766256,1.0
|
||||
0.503855,0.443272,1.0,0.515933,0.288981,1.0,0.511907,0.340412,1.0,0.519959,0.237551,1.0,0.524537,0.166732,1.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.547521,0.147656,1.0,0.547521,0.147656,1.0,0.524537,0.236179,1.0,0.529115,0.234806,1.0,0.498522,0.335768,1.0,0.545995,0.294882,1.0,0.549354,0.286439,1.0,0.554797,0.272977,1.0,0.560948,0.268769,1.0,0.556453,0.269611,1.0,0.564974,0.262459,1.0,0.570891,0.262039,1.0,0.558818,0.276343,1.0,0.568047,0.270453,1.0,0.575146,0.271294,1.0,0.560005,0.286019,1.0,0.567578,0.280970,1.0,0.573729,0.282232,1.0,0.560479,0.295694,1.0,0.568047,0.292749,1.0,0.571833,0.292749,1.0,0.515356,0.236189,1.0,0.510753,0.234828,1.0,0.486226,0.335642,1.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.512260,0.441914,1.0,0.512260,0.441914,1.0,0.546042,0.599946,1.0,0.545948,0.771711,1.0,0.545948,0.771711,1.0,0.495449,0.444631,1.0,0.495449,0.444631,1.0,0.526047,0.608169,1.0,0.518346,0.766256,1.0,0.518346,0.766256,1.0
|
||||
0.507681,0.446038,1.0,0.516902,0.295756,1.0,0.513828,0.345850,1.0,0.519976,0.245662,1.0,0.520730,0.163969,1.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.545979,0.155819,1.0,0.545979,0.155819,1.0,0.519193,0.242982,1.0,0.518411,0.240302,1.0,0.484699,0.341212,1.0,0.523016,0.297619,1.0,0.526943,0.288831,1.0,0.533000,0.274623,1.0,0.539052,0.271179,1.0,0.534693,0.271179,1.0,0.543896,0.266873,1.0,0.549708,0.267304,1.0,0.536391,0.278929,1.0,0.546078,0.275484,1.0,0.553828,0.277637,1.0,0.536391,0.288401,1.0,0.548016,0.287540,1.0,0.551891,0.287970,1.0,0.535906,0.299165,1.0,0.543656,0.295720,1.0,0.547531,0.295720,1.0,0.523787,0.246995,1.0,0.527599,0.248329,1.0,0.522995,0.360273,1.0,0.542906,0.368380,1.0,0.553182,0.385055,1.0,0.547391,0.364879,1.0,0.550865,0.362819,1.0,0.552026,0.364879,1.0,0.555964,0.372702,1.0,0.556656,0.378467,1.0,0.554339,0.347173,1.0,0.554339,0.362408,1.0,0.549474,0.391231,1.0,0.555266,0.346761,1.0,0.554802,0.350056,1.0,0.549245,0.382172,1.0,0.555964,0.340173,1.0,0.555964,0.366114,1.0,0.556656,0.379290,1.0,0.506138,0.447365,1.0,0.506138,0.447365,1.0,0.544396,0.600133,1.0,0.542932,0.771591,1.0,0.542932,0.771591,1.0,0.509224,0.444712,1.0,0.509224,0.444712,1.0,0.530656,0.600008,1.0,0.507577,0.752695,1.0,0.507577,0.752695,1.0
|
||||
0.506898,0.450152,1.0,0.514382,0.298969,1.0,0.511887,0.349364,1.0,0.516877,0.248575,1.0,0.542911,0.174848,1.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.541365,0.158562,1.0,0.541365,0.158562,1.0,0.512249,0.248477,1.0,0.507622,0.248379,1.0,0.472400,0.357322,1.0,0.506156,0.316503,1.0,0.504331,0.320549,1.0,0.515221,0.289664,1.0,0.526109,0.281828,1.0,0.513925,0.286437,1.0,0.522224,0.280444,1.0,0.528703,0.283671,1.0,0.512110,0.293352,1.0,0.519889,0.290586,1.0,0.529740,0.296579,1.0,0.511073,0.301649,1.0,0.519889,0.301188,1.0,0.527151,0.304415,1.0,0.506146,0.317322,1.0,0.518333,0.311791,1.0,0.523776,0.310869,1.0,0.521470,0.249915,1.0,0.526062,0.251256,1.0,0.521484,0.381944,1.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.498461,0.450205,1.0,0.498461,0.450205,1.0,0.542865,0.600097,1.0,0.539854,0.771644,1.0,0.539854,0.771644,1.0,0.515335,0.450100,1.0,0.515335,0.450100,1.0,0.533740,0.599968,1.0,0.501529,0.752577,1.0,0.501529,0.752577,1.0
|
||||
0.507691,0.451539,1.0,0.508839,0.303338,1.0,0.508456,0.352738,1.0,0.509222,0.253937,1.0,0.542885,0.166732,1.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.535286,0.155809,1.0,0.535286,0.155809,1.0,0.502303,0.252544,1.0,0.495385,0.251150,1.0,0.464722,0.360206,1.0,0.493893,0.335631,1.0,0.490689,0.340044,1.0,0.494210,0.339597,1.0,0.499997,0.309631,1.0,0.495468,0.338702,1.0,0.500752,0.310078,1.0,0.502513,0.307393,1.0,0.502513,0.339150,1.0,0.507041,0.307842,1.0,0.509054,0.307393,1.0,0.505029,0.339150,1.0,0.514589,0.310525,1.0,0.514589,0.311419,1.0,0.516853,0.326179,1.0,0.516853,0.323048,1.0,0.517105,0.322154,1.0,0.516879,0.257992,1.0,0.524536,0.262046,1.0,0.510756,0.368381,1.0,0.532193,0.376531,1.0,0.548271,0.338789,1.0,0.549172,0.347195,1.0,0.542193,0.368412,1.0,0.547599,0.343193,1.0,0.540167,0.364408,1.0,0.541969,0.382022,1.0,0.546698,0.344394,1.0,0.540844,0.358004,1.0,0.543318,0.363207,1.0,0.541745,0.345994,1.0,0.539490,0.357203,1.0,0.542417,0.370814,1.0,0.547370,0.345194,1.0,0.550974,0.345594,1.0,0.544443,0.381621,1.0,0.495414,0.452894,1.0,0.495414,0.452894,1.0,0.541375,0.600096,1.0,0.539828,0.771729,1.0,0.539828,0.771729,1.0,0.519968,0.450185,1.0,0.519968,0.450185,1.0,0.536786,0.600106,1.0,0.498478,0.749888,1.0,0.498478,0.749888,1.0
|
||||
0.505352,0.454214,1.0,0.505924,0.310115,1.0,0.505733,0.358148,1.0,0.506114,0.262081,1.0,0.536828,0.164000,1.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.532240,0.153126,1.0,0.532240,0.153126,1.0,0.495410,0.258042,1.0,0.484706,0.254003,1.0,0.460204,0.365661,1.0,0.484730,0.365704,1.0,0.503211,0.361761,1.0,0.487878,0.349450,1.0,0.483673,0.352968,1.0,0.481200,0.373632,1.0,0.479469,0.371434,1.0,0.489856,0.350769,1.0,0.483673,0.373193,1.0,0.489609,0.366157,1.0,0.494308,0.347251,1.0,0.490103,0.380667,1.0,0.493566,0.372753,1.0,0.498265,0.357804,1.0,0.493319,0.381106,1.0,0.498265,0.375831,1.0,0.499502,0.371434,1.0,0.513802,0.264774,1.0,0.521490,0.267466,1.0,0.529109,0.360099,1.0,0.559807,0.319305,1.0,0.570323,0.317863,1.0,0.570901,0.312368,1.0,0.577469,0.311337,1.0,0.561630,0.315802,1.0,0.563370,0.318206,1.0,0.569938,0.317863,1.0,0.570323,0.327135,1.0,0.571479,0.335378,1.0,0.583651,0.333318,1.0,0.561245,0.315802,1.0,0.570516,0.337095,1.0,0.569547,0.344307,1.0,0.561047,0.314771,1.0,0.571094,0.345681,1.0,0.570130,0.348085,1.0,0.489287,0.458286,1.0,0.489287,0.458286,1.0,0.535297,0.600152,1.0,0.542880,0.774345,1.0,0.542880,0.774345,1.0,0.521417,0.450143,1.0,0.521417,0.450143,1.0,0.533807,0.602843,1.0,0.496969,0.752545,1.0,0.496969,0.752545,1.0
|
||||
0.503077,0.463680,1.0,0.499656,0.312463,1.0,0.500797,0.362869,1.0,0.498516,0.262057,1.0,0.533771,0.163968,1.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.530604,0.153090,1.0,0.530604,0.153090,1.0,0.487766,0.263404,1.0,0.477017,0.264751,1.0,0.458607,0.376520,1.0,0.478515,0.387437,1.0,0.479077,0.386768,1.0,0.489170,0.393176,1.0,0.496380,0.416246,1.0,0.491573,0.386768,1.0,0.498543,0.403430,1.0,0.491814,0.413683,1.0,0.490131,0.387621,1.0,0.494217,0.417101,1.0,0.492054,0.424364,1.0,0.483883,0.390185,1.0,0.490131,0.417529,1.0,0.484604,0.424792,1.0,0.478836,0.398730,1.0,0.484123,0.423082,1.0,0.480038,0.421373,1.0,0.510018,0.260729,1.0,0.521521,0.259400,1.0,0.546021,0.354639,1.0,0.582797,0.313933,1.0,0.581323,0.315483,1.0,0.589099,0.308183,1.0,0.598609,0.308183,1.0,0.606172,0.311257,1.0,0.601849,0.320094,1.0,0.607036,0.320478,1.0,0.605958,0.325088,1.0,0.603797,0.327777,1.0,0.608120,0.329314,1.0,0.610062,0.328545,1.0,0.602068,0.335461,1.0,0.602281,0.334693,1.0,0.599255,0.344682,1.0,0.599255,0.344682,1.0,0.595370,0.345066,1.0,0.484722,0.466374,1.0,0.484722,0.466374,1.0,0.532188,0.602706,1.0,0.542870,0.771645,1.0,0.542870,0.771645,1.0,0.521432,0.460986,1.0,0.521432,0.460986,1.0,0.533760,0.616317,1.0,0.496928,0.752655,1.0,0.496928,0.752655,1.0
|
||||
0.503077,0.463680,1.0,0.499656,0.312463,1.0,0.500797,0.362869,1.0,0.498516,0.262057,1.0,0.533771,0.163968,1.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.530604,0.153090,1.0,0.530604,0.153090,1.0,0.487766,0.263404,1.0,0.477017,0.264751,1.0,0.458607,0.376520,1.0,0.478515,0.387437,1.0,0.479077,0.386768,1.0,0.489170,0.393176,1.0,0.496380,0.416246,1.0,0.491573,0.386768,1.0,0.498543,0.403430,1.0,0.491814,0.413683,1.0,0.490131,0.387621,1.0,0.494217,0.417101,1.0,0.492054,0.424364,1.0,0.483883,0.390185,1.0,0.490131,0.417529,1.0,0.484604,0.424792,1.0,0.478836,0.398730,1.0,0.484123,0.423082,1.0,0.480038,0.421373,1.0,0.510018,0.260729,1.0,0.521521,0.259400,1.0,0.546021,0.354639,1.0,0.582797,0.313933,1.0,0.581323,0.315483,1.0,0.589099,0.308183,1.0,0.598609,0.308183,1.0,0.606172,0.311257,1.0,0.601849,0.320094,1.0,0.607036,0.320478,1.0,0.605958,0.325088,1.0,0.603797,0.327777,1.0,0.608120,0.329314,1.0,0.610062,0.328545,1.0,0.602068,0.335461,1.0,0.602281,0.334693,1.0,0.599255,0.344682,1.0,0.599255,0.344682,1.0,0.595370,0.345066,1.0,0.484722,0.466374,1.0,0.484722,0.466374,1.0,0.532188,0.602706,1.0,0.542870,0.771645,1.0,0.542870,0.771645,1.0,0.521432,0.460986,1.0,0.521432,0.460986,1.0,0.533760,0.616317,1.0,0.496928,0.752655,1.0,0.496928,0.752655,1.0
|
||||
0.501540,0.459661,1.0,0.498134,0.313540,1.0,0.499269,0.362247,1.0,0.496998,0.264833,1.0,0.526849,0.154426,1.0,0.532151,0.150380,1.0,0.532151,0.150380,1.0,0.521547,0.158472,1.0,0.521547,0.158472,1.0,0.484687,0.266166,1.0,0.472376,0.267498,1.0,0.457060,0.381894,1.0,0.472400,0.420111,1.0,0.478190,0.415899,1.0,0.486197,0.420644,1.0,0.487896,0.429703,1.0,0.480131,0.435311,1.0,0.482557,0.449978,1.0,0.486925,0.458606,1.0,0.476248,0.438762,1.0,0.478190,0.452566,1.0,0.481829,0.461625,1.0,0.474065,0.439194,1.0,0.474793,0.449115,1.0,0.478190,0.458606,1.0,0.472609,0.438762,1.0,0.474307,0.445664,1.0,0.476006,0.452566,1.0,0.510012,0.262098,1.0,0.523026,0.259363,1.0,0.558198,0.349246,1.0,0.598104,0.302955,1.0,0.619859,0.302139,1.0,0.615568,0.300131,1.0,0.616698,0.299729,1.0,0.619406,0.299327,1.0,0.600427,0.298925,1.0,0.607432,0.297720,1.0,0.615792,0.316599,1.0,0.616922,0.321018,1.0,0.610594,0.328248,1.0,0.624151,0.318608,1.0,0.611500,0.322625,1.0,0.610823,0.324232,1.0,0.602911,0.297720,1.0,0.612630,0.296516,1.0,0.607656,0.296114,1.0,0.483102,0.463719,1.0,0.483102,0.463719,1.0,0.523042,0.613636,1.0,0.536807,0.769004,1.0,0.536807,0.769004,1.0,0.519979,0.455604,1.0,0.519979,0.455604,1.0,0.530615,0.619044,1.0,0.495461,0.752734,1.0,0.495461,0.752734,1.0
|
||||
0.499196,0.459614,1.0,0.497533,0.311490,1.0,0.498087,0.360865,1.0,0.496979,0.262116,1.0,0.520658,0.157197,1.0,0.522984,0.155811,1.0,0.522984,0.155811,1.0,0.518331,0.158582,1.0,0.518331,0.158582,1.0,0.483905,0.262103,1.0,0.470832,0.262090,1.0,0.447948,0.371126,1.0,0.466267,0.425631,1.0,0.472792,0.428248,1.0,0.480477,0.437641,1.0,0.482398,0.448314,1.0,0.474713,0.451730,1.0,0.478075,0.468380,1.0,0.483598,0.473076,1.0,0.471111,0.456853,1.0,0.474713,0.471369,1.0,0.478796,0.476492,1.0,0.468709,0.459414,1.0,0.471351,0.471369,1.0,0.474713,0.475210,1.0,0.467989,0.460269,1.0,0.469910,0.467953,1.0,0.472311,0.471795,1.0,0.511536,0.260720,1.0,0.526094,0.259324,1.0,0.567427,0.338378,1.0,0.607281,0.292089,1.0,0.617984,0.291068,1.0,0.611307,0.283544,1.0,0.609078,0.281961,1.0,0.632016,0.287900,1.0,0.631125,0.285129,1.0,0.641151,0.303342,1.0,0.635359,0.296215,1.0,0.634693,0.295027,1.0,0.638698,0.303738,1.0,0.639812,0.303738,1.0,0.634021,0.306906,1.0,0.638255,0.304926,1.0,0.641151,0.306114,1.0,0.609302,0.279585,1.0,0.640927,0.306114,1.0,0.478516,0.463682,1.0,0.478516,0.463682,1.0,0.515332,0.616332,1.0,0.526068,0.774435,1.0,0.526068,0.774435,1.0,0.519875,0.455545,1.0,0.519875,0.455545,1.0,0.523031,0.619109,1.0,0.495450,0.752657,1.0,0.495450,0.752657,1.0
|
||||
0.496169,0.448777,1.0,0.496706,0.302675,1.0,0.496527,0.351376,1.0,0.496885,0.253975,1.0,0.513043,0.148969,1.0,0.518418,0.147584,1.0,0.518418,0.147584,1.0,0.507668,0.150354,1.0,0.507668,0.150354,1.0,0.480804,0.258003,1.0,0.464723,0.262031,1.0,0.446379,0.360330,1.0,0.460128,0.428378,1.0,0.467017,0.433737,1.0,0.474069,0.442856,1.0,0.477275,0.453494,1.0,0.468940,0.461472,1.0,0.473642,0.476669,1.0,0.478557,0.481609,1.0,0.465520,0.464892,1.0,0.470436,0.479330,1.0,0.474283,0.485408,1.0,0.463170,0.466031,1.0,0.467230,0.478190,1.0,0.471505,0.479709,1.0,0.462101,0.465271,1.0,0.465307,0.474390,1.0,0.468726,0.475910,1.0,0.512997,0.252615,1.0,0.529109,0.251256,1.0,0.570568,0.330174,1.0,0.611917,0.272905,1.0,0.623115,0.267870,1.0,0.634698,0.265098,1.0,0.642719,0.261929,1.0,0.640938,0.278170,1.0,0.643615,0.280944,1.0,0.647844,0.286489,1.0,0.641162,0.283716,1.0,0.640495,0.287678,1.0,0.644505,0.286885,1.0,0.642943,0.289262,1.0,0.639380,0.294808,1.0,0.639380,0.289262,1.0,0.637375,0.302334,1.0,0.639156,0.299562,1.0,0.638932,0.301938,1.0,0.475453,0.450111,1.0,0.475453,0.450111,1.0,0.504592,0.608177,1.0,0.507619,0.768938,1.0,0.507619,0.768938,1.0,0.516885,0.447443,1.0,0.516885,0.447443,1.0,0.519971,0.618981,1.0,0.492307,0.758138,1.0,0.492307,0.758138,1.0
|
||||
0.490110,0.447427,1.0,0.494029,0.300178,1.0,0.492723,0.349261,1.0,0.495336,0.251094,1.0,0.504616,0.140818,1.0,0.510732,0.139542,1.0,0.510732,0.139542,1.0,0.498500,0.142094,1.0,0.498500,0.142094,1.0,0.477710,0.252492,1.0,0.460083,0.253889,1.0,0.443292,0.357574,1.0,0.450952,0.425485,1.0,0.457932,0.430876,1.0,0.464834,0.440375,1.0,0.466838,0.451854,1.0,0.459936,0.458979,1.0,0.463498,0.475207,1.0,0.465502,0.483915,1.0,0.457264,0.462937,1.0,0.460158,0.477582,1.0,0.463276,0.484311,1.0,0.454592,0.463729,1.0,0.457709,0.474416,1.0,0.459936,0.480749,1.0,0.454147,0.462937,1.0,0.456596,0.471249,1.0,0.458377,0.476394,1.0,0.512223,0.249743,1.0,0.529109,0.248391,1.0,0.573589,0.313928,1.0,0.614938,0.251295,1.0,0.631901,0.251095,1.0,0.616182,0.249521,1.0,0.644964,0.243617,1.0,0.635224,0.248340,1.0,0.638323,0.247946,1.0,0.648948,0.263298,1.0,0.636995,0.251095,1.0,0.641646,0.251882,1.0,0.647401,0.262511,1.0,0.640094,0.258181,1.0,0.643635,0.260543,1.0,0.640312,0.260936,1.0,0.641422,0.260543,1.0,0.644745,0.260543,1.0,0.647844,0.263692,1.0,0.470938,0.447411,1.0,0.470938,0.447411,1.0,0.490829,0.600020,1.0,0.489242,0.760806,1.0,0.489242,0.760806,1.0,0.509282,0.447444,1.0,0.509282,0.447444,1.0,0.510756,0.613597,1.0,0.496916,0.752605,1.0,0.496916,0.752605,1.0
|
||||
0.489208,0.431072,1.0,0.488129,0.287988,1.0,0.488489,0.335683,1.0,0.487770,0.240294,1.0,0.498453,0.127233,1.0,0.506080,0.125882,1.0,0.506080,0.125882,1.0,0.490826,0.128583,1.0,0.490826,0.128583,1.0,0.470895,0.244360,1.0,0.454021,0.248426,1.0,0.438692,0.338304,1.0,0.444833,0.417430,1.0,0.449379,0.424247,1.0,0.455193,0.434239,1.0,0.456744,0.445264,1.0,0.449185,0.449744,1.0,0.450930,0.462836,1.0,0.452674,0.472138,1.0,0.446084,0.451810,1.0,0.447829,0.465247,1.0,0.450155,0.473861,1.0,0.444341,0.452155,1.0,0.445891,0.463181,1.0,0.448023,0.471794,1.0,0.444146,0.452500,1.0,0.445116,0.460769,1.0,0.446666,0.466626,1.0,0.505401,0.234861,1.0,0.523031,0.229429,1.0,0.573557,0.294931,1.0,0.611927,0.237582,1.0,0.629411,0.236194,1.0,0.613354,0.232523,1.0,0.613125,0.232523,1.0,0.633078,0.236194,1.0,0.633766,0.236194,1.0,0.614500,0.235785,1.0,0.636063,0.236601,1.0,0.643630,0.237008,1.0,0.649823,0.243942,1.0,0.638354,0.243942,1.0,0.643859,0.237008,1.0,0.650286,0.243126,1.0,0.641797,0.245165,1.0,0.645240,0.232115,1.0,0.650516,0.228444,1.0,0.469281,0.431086,1.0,0.469281,0.431086,1.0,0.478525,0.599938,1.0,0.470838,0.766257,1.0,0.470838,0.766257,1.0,0.509135,0.431058,1.0,0.509135,0.431058,1.0,0.509180,0.605488,1.0,0.495442,0.749941,1.0,0.495442,0.749941,1.0
|
||||
0.489208,0.431072,1.0,0.488129,0.287988,1.0,0.488489,0.335683,1.0,0.487770,0.240294,1.0,0.498453,0.127233,1.0,0.506080,0.125882,1.0,0.506080,0.125882,1.0,0.490826,0.128583,1.0,0.490826,0.128583,1.0,0.470895,0.244360,1.0,0.454021,0.248426,1.0,0.438692,0.338304,1.0,0.444833,0.417430,1.0,0.449379,0.424247,1.0,0.455193,0.434239,1.0,0.456744,0.445264,1.0,0.449185,0.449744,1.0,0.450930,0.462836,1.0,0.452674,0.472138,1.0,0.446084,0.451810,1.0,0.447829,0.465247,1.0,0.450155,0.473861,1.0,0.444341,0.452155,1.0,0.445891,0.463181,1.0,0.448023,0.471794,1.0,0.444146,0.452500,1.0,0.445116,0.460769,1.0,0.446666,0.466626,1.0,0.505401,0.234861,1.0,0.523031,0.229429,1.0,0.573557,0.294931,1.0,0.611927,0.237582,1.0,0.629411,0.236194,1.0,0.613354,0.232523,1.0,0.613125,0.232523,1.0,0.633078,0.236194,1.0,0.633766,0.236194,1.0,0.614500,0.235785,1.0,0.636063,0.236601,1.0,0.643630,0.237008,1.0,0.649823,0.243942,1.0,0.638354,0.243942,1.0,0.643859,0.237008,1.0,0.650286,0.243126,1.0,0.641797,0.245165,1.0,0.645240,0.232115,1.0,0.650516,0.228444,1.0,0.469281,0.431086,1.0,0.469281,0.431086,1.0,0.478525,0.599938,1.0,0.470838,0.766257,1.0,0.470838,0.766257,1.0,0.509135,0.431058,1.0,0.509135,0.431058,1.0,0.509180,0.605488,1.0,0.495442,0.749941,1.0,0.495442,0.749941,1.0
|
||||
0.483901,0.420145,1.0,0.484438,0.277068,1.0,0.484259,0.324760,1.0,0.484618,0.229375,1.0,0.490793,0.117745,1.0,0.496967,0.117733,1.0,0.496967,0.117733,1.0,0.484619,0.117757,1.0,0.484619,0.117757,1.0,0.466233,0.236187,1.0,0.447848,0.242998,1.0,0.435672,0.330206,1.0,0.435702,0.403755,1.0,0.441274,0.416488,1.0,0.445353,0.424069,1.0,0.445909,0.433629,1.0,0.439420,0.440552,1.0,0.441089,0.454726,1.0,0.442201,0.463956,1.0,0.437380,0.445167,1.0,0.439420,0.460330,1.0,0.441645,0.471537,1.0,0.436453,0.447804,1.0,0.438493,0.460659,1.0,0.440903,0.470878,1.0,0.436268,0.448792,1.0,0.438678,0.459341,1.0,0.441274,0.466263,1.0,0.502272,0.226633,1.0,0.519927,0.223891,1.0,0.570505,0.286553,1.0,0.608833,0.226592,1.0,0.620125,0.224897,1.0,0.611755,0.217660,1.0,0.611078,0.218062,1.0,0.635500,0.226907,1.0,0.610396,0.217258,1.0,0.649297,0.221681,1.0,0.634823,0.225299,1.0,0.642286,0.228113,1.0,0.649974,0.233742,1.0,0.636406,0.233742,1.0,0.643417,0.230123,1.0,0.649974,0.233340,1.0,0.637083,0.235350,1.0,0.644323,0.224494,1.0,0.649297,0.221681,1.0,0.460208,0.420186,1.0,0.460208,0.420186,1.0,0.469341,0.597395,1.0,0.449447,0.771718,1.0,0.449447,0.771718,1.0,0.507593,0.420105,1.0,0.507593,0.420105,1.0,0.507623,0.599989,1.0,0.495468,0.749844,1.0,0.495468,0.749844,1.0
|
||||
0.478509,0.418786,1.0,0.477397,0.274669,1.0,0.477768,0.322708,1.0,0.477026,0.226631,1.0,0.482357,0.114922,1.0,0.489254,0.114898,1.0,0.489254,0.114898,1.0,0.475460,0.114945,1.0,0.475460,0.114945,1.0,0.459395,0.230750,1.0,0.441764,0.234869,1.0,0.435571,0.319306,1.0,0.432490,0.390129,1.0,0.432000,0.404441,1.0,0.435690,0.416311,1.0,0.435866,0.428806,1.0,0.429013,0.429119,1.0,0.430595,0.442551,1.0,0.432879,0.454421,1.0,0.427783,0.433180,1.0,0.429365,0.447861,1.0,0.431825,0.457857,1.0,0.427607,0.434429,1.0,0.428661,0.446924,1.0,0.430946,0.455983,1.0,0.427959,0.436304,1.0,0.429189,0.445050,1.0,0.431649,0.450048,1.0,0.495402,0.218478,1.0,0.513779,0.210325,1.0,0.568927,0.272924,1.0,0.607286,0.213025,1.0,0.614901,0.215021,1.0,0.621146,0.219716,1.0,0.626906,0.222276,1.0,0.629063,0.216302,1.0,0.638906,0.220569,1.0,0.645865,0.221422,1.0,0.629063,0.214594,1.0,0.638667,0.218862,1.0,0.646349,0.218862,1.0,0.628583,0.212034,1.0,0.635547,0.215448,1.0,0.643708,0.218008,1.0,0.626667,0.210755,1.0,0.631943,0.210755,1.0,0.634823,0.210755,1.0,0.458524,0.417405,1.0,0.458524,0.417405,1.0,0.458578,0.602704,1.0,0.435595,0.774369,1.0,0.435595,0.774369,1.0,0.498494,0.420167,1.0,0.498494,0.420167,1.0,0.504557,0.597266,1.0,0.496928,0.741734,1.0,0.496928,0.741734,1.0
|
||||
0.473955,0.418811,1.0,0.472755,0.272662,1.0,0.473155,0.321378,1.0,0.472355,0.223946,1.0,0.476272,0.110837,1.0,0.483205,0.112155,1.0,0.483205,0.112155,1.0,0.469340,0.109519,1.0,0.469340,0.109519,1.0,0.453998,0.228007,1.0,0.435642,0.232068,1.0,0.434010,0.313976,1.0,0.423302,0.379243,1.0,0.424335,0.394166,1.0,0.427041,0.404088,1.0,0.427041,0.414612,1.0,0.420445,0.418821,1.0,0.422813,0.433554,1.0,0.423658,0.443777,1.0,0.419769,0.423031,1.0,0.420953,0.437763,1.0,0.421629,0.449189,1.0,0.420276,0.423331,1.0,0.420614,0.436260,1.0,0.421291,0.447986,1.0,0.421460,0.423331,1.0,0.421798,0.435057,1.0,0.423151,0.444378,1.0,0.490011,0.215800,1.0,0.507667,0.207654,1.0,0.559828,0.267515,1.0,0.605812,0.207515,1.0,0.613078,0.210034,1.0,0.629120,0.208794,1.0,0.629354,0.209207,1.0,0.625635,0.237726,1.0,0.634703,0.229046,1.0,0.642604,0.219540,1.0,0.624937,0.229459,1.0,0.635401,0.219127,1.0,0.643771,0.219127,1.0,0.624937,0.217473,1.0,0.635630,0.212927,1.0,0.643771,0.212514,1.0,0.623776,0.208381,1.0,0.628422,0.205901,1.0,0.631448,0.203007,1.0,0.450985,0.420169,1.0,0.450985,0.420169,1.0,0.447841,0.602839,1.0,0.424902,0.777114,1.0,0.424902,0.777114,1.0,0.496926,0.417452,1.0,0.496926,0.417452,1.0,0.498516,0.597391,1.0,0.496999,0.741697,1.0,0.496999,0.741697,1.0
|
||||
0.469378,0.417419,1.0,0.467060,0.272325,1.0,0.467833,0.320690,1.0,0.466287,0.223960,1.0,0.467819,0.113504,1.0,0.475447,0.114847,1.0,0.475447,0.114847,1.0,0.460192,0.112160,1.0,0.460192,0.112160,1.0,0.449415,0.228032,1.0,0.432542,0.232105,1.0,0.427980,0.316486,1.0,0.420233,0.373848,1.0,0.418552,0.388113,1.0,0.421001,0.397753,1.0,0.421001,0.408948,1.0,0.414354,0.410503,1.0,0.416978,0.424808,1.0,0.417852,0.434137,1.0,0.414354,0.414545,1.0,0.415403,0.428851,1.0,0.415578,0.440979,1.0,0.415403,0.416101,1.0,0.415403,0.428540,1.0,0.415578,0.440356,1.0,0.416103,0.417033,1.0,0.417328,0.426363,1.0,0.417677,0.434759,1.0,0.483161,0.215777,1.0,0.500035,0.207594,1.0,0.555208,0.267496,1.0,0.598125,0.207718,1.0,0.605885,0.216661,1.0,0.611813,0.223406,1.0,0.618927,0.226358,1.0,0.619167,0.220034,1.0,0.631974,0.217082,1.0,0.637901,0.218769,1.0,0.618927,0.217926,1.0,0.631734,0.216239,1.0,0.638141,0.216661,1.0,0.618927,0.214131,1.0,0.630313,0.210758,1.0,0.636479,0.209494,1.0,0.617505,0.210336,1.0,0.623432,0.206542,1.0,0.627464,0.203591,1.0,0.446396,0.417406,1.0,0.446396,0.417406,1.0,0.441755,0.610921,1.0,0.423355,0.782565,1.0,0.423355,0.782565,1.0,0.492359,0.417432,1.0,0.492359,0.417432,1.0,0.501508,0.597314,1.0,0.503089,0.730893,1.0,0.503089,0.730893,1.0
|
||||
0.462486,0.425534,1.0,0.460735,0.276320,1.0,0.461319,0.326058,1.0,0.460152,0.226582,1.0,0.454812,0.129898,1.0,0.470877,0.114889,1.0,0.470877,0.114889,1.0,0.457021,0.112197,1.0,0.457021,0.112197,1.0,0.441784,0.230715,1.0,0.423417,0.234848,1.0,0.423317,0.327498,1.0,0.414131,0.379373,1.0,0.415115,0.390374,1.0,0.417600,0.397852,1.0,0.417982,0.408728,1.0,0.412629,0.414166,1.0,0.415115,0.427761,1.0,0.416261,0.438298,1.0,0.413011,0.419264,1.0,0.414158,0.433200,1.0,0.414541,0.445095,1.0,0.413394,0.420964,1.0,0.414732,0.434219,1.0,0.415497,0.443396,1.0,0.414158,0.421644,1.0,0.415497,0.431500,1.0,0.416453,0.439657,1.0,0.477808,0.217132,1.0,0.495465,0.207681,1.0,0.544505,0.270243,1.0,0.591990,0.226739,1.0,0.596146,0.231278,1.0,0.600792,0.237577,1.0,0.607214,0.239151,1.0,0.609208,0.237182,1.0,0.612974,0.241119,1.0,0.614302,0.239544,1.0,0.611865,0.234427,1.0,0.622495,0.232459,1.0,0.630021,0.229309,1.0,0.613635,0.228916,1.0,0.622495,0.226160,1.0,0.626922,0.221043,1.0,0.613417,0.222618,1.0,0.618953,0.217500,1.0,0.620724,0.215925,1.0,0.440224,0.425527,1.0,0.440224,0.425527,1.0,0.437158,0.619040,1.0,0.423384,0.785351,1.0,0.423384,0.785351,1.0,0.484748,0.425542,1.0,0.484748,0.425542,1.0,0.506113,0.616293,1.0,0.507618,0.725339,1.0,0.507618,0.725339,1.0
|
||||
0.462486,0.425534,1.0,0.460735,0.276320,1.0,0.461319,0.326058,1.0,0.460152,0.226582,1.0,0.454812,0.129898,1.0,0.470877,0.114889,1.0,0.470877,0.114889,1.0,0.457021,0.112197,1.0,0.457021,0.112197,1.0,0.441784,0.230715,1.0,0.423417,0.234848,1.0,0.423317,0.327498,1.0,0.414131,0.379373,1.0,0.415115,0.390374,1.0,0.417600,0.397852,1.0,0.417982,0.408728,1.0,0.412629,0.414166,1.0,0.415115,0.427761,1.0,0.416261,0.438298,1.0,0.413011,0.419264,1.0,0.414158,0.433200,1.0,0.414541,0.445095,1.0,0.413394,0.420964,1.0,0.414732,0.434219,1.0,0.415497,0.443396,1.0,0.414158,0.421644,1.0,0.415497,0.431500,1.0,0.416453,0.439657,1.0,0.477808,0.217132,1.0,0.495465,0.207681,1.0,0.544505,0.270243,1.0,0.591990,0.226739,1.0,0.596146,0.231278,1.0,0.600792,0.237577,1.0,0.607214,0.239151,1.0,0.609208,0.237182,1.0,0.612974,0.241119,1.0,0.614302,0.239544,1.0,0.611865,0.234427,1.0,0.622495,0.232459,1.0,0.630021,0.229309,1.0,0.613635,0.228916,1.0,0.622495,0.226160,1.0,0.626922,0.221043,1.0,0.613417,0.222618,1.0,0.618953,0.217500,1.0,0.620724,0.215925,1.0,0.440224,0.425527,1.0,0.440224,0.425527,1.0,0.437158,0.619040,1.0,0.423384,0.785351,1.0,0.423384,0.785351,1.0,0.484748,0.425542,1.0,0.484748,0.425542,1.0,0.506113,0.616293,1.0,0.507618,0.725339,1.0,0.507618,0.725339,1.0
|
||||
0.460882,0.421565,1.0,0.457989,0.275446,1.0,0.458953,0.324152,1.0,0.457024,0.226740,1.0,0.450977,0.133978,1.0,0.464724,0.117601,1.0,0.464724,0.117601,1.0,0.447944,0.114918,1.0,0.447944,0.114918,1.0,0.438666,0.234892,1.0,0.420307,0.243044,1.0,0.420264,0.335717,1.0,0.412605,0.398365,1.0,0.412372,0.406460,1.0,0.411033,0.402040,1.0,0.412372,0.425838,1.0,0.418492,0.430597,1.0,0.412181,0.424819,1.0,0.412181,0.422779,1.0,0.413328,0.425498,1.0,0.411990,0.427198,1.0,0.412563,0.426178,1.0,0.417153,0.432297,1.0,0.414858,0.434337,1.0,0.412181,0.427198,1.0,0.417535,0.434337,1.0,0.414093,0.436717,1.0,0.412372,0.440456,1.0,0.474665,0.218539,1.0,0.492306,0.210339,1.0,0.532250,0.273068,1.0,0.572068,0.264737,1.0,0.579729,0.261988,1.0,0.596937,0.258165,1.0,0.593026,0.265117,1.0,0.574255,0.263379,1.0,0.578557,0.263031,1.0,0.596740,0.277630,1.0,0.578359,0.271026,1.0,0.581490,0.263726,1.0,0.587943,0.282149,1.0,0.584812,0.273806,1.0,0.583641,0.277282,1.0,0.590484,0.283192,1.0,0.590677,0.282496,1.0,0.583641,0.292577,1.0,0.590677,0.284234,1.0,0.437129,0.422940,1.0,0.437129,0.422940,1.0,0.438711,0.621763,1.0,0.426401,0.779857,1.0,0.426401,0.779857,1.0,0.484635,0.420190,1.0,0.484635,0.420190,1.0,0.506140,0.619207,1.0,0.509250,0.711850,1.0,0.509250,0.711850,1.0
|
||||
0.459400,0.426968,1.0,0.450803,0.280822,1.0,0.453669,0.329538,1.0,0.447938,0.232107,1.0,0.453222,0.120292,1.0,0.460143,0.120331,1.0,0.460143,0.120331,1.0,0.446300,0.120253,1.0,0.446300,0.120253,1.0,0.430269,0.241604,1.0,0.412601,0.251101,1.0,0.411115,0.357543,1.0,0.420262,0.428385,1.0,0.422182,0.436140,1.0,0.425697,0.443952,1.0,0.428993,0.454498,1.0,0.425917,0.444343,1.0,0.430531,0.457623,1.0,0.432289,0.470122,1.0,0.425697,0.446686,1.0,0.429652,0.459185,1.0,0.431190,0.474028,1.0,0.423500,0.448639,1.0,0.427455,0.459576,1.0,0.429432,0.472075,1.0,0.420864,0.450201,1.0,0.425697,0.459185,1.0,0.427675,0.468169,1.0,0.466323,0.225278,1.0,0.484708,0.218448,1.0,0.521474,0.286634,1.0,0.549042,0.294808,1.0,0.548000,0.296119,1.0,0.555797,0.292307,1.0,0.559693,0.291268,1.0,0.565932,0.292307,1.0,0.574313,0.285724,1.0,0.568854,0.295426,1.0,0.558917,0.289535,1.0,0.572365,0.285378,1.0,0.566516,0.301663,1.0,0.556771,0.298198,1.0,0.559693,0.298544,1.0,0.560865,0.298544,1.0,0.557161,0.301317,1.0,0.543516,0.298544,1.0,0.559500,0.298544,1.0,0.435666,0.431072,1.0,0.435666,0.431072,1.0,0.446252,0.632714,1.0,0.429480,0.779922,1.0,0.429480,0.779922,1.0,0.483134,0.422863,1.0,0.483134,0.422863,1.0,0.497019,0.624514,1.0,0.516874,0.700794,1.0,0.516874,0.700794,1.0
|
||||
0.459418,0.441921,1.0,0.449636,0.292722,1.0,0.452896,0.342455,1.0,0.446375,0.242989,1.0,0.441785,0.151689,1.0,0.458541,0.131316,1.0,0.458541,0.131316,1.0,0.438718,0.128512,1.0,0.438718,0.128512,1.0,0.428709,0.249797,1.0,0.411043,0.256605,1.0,0.409588,0.365647,1.0,0.423372,0.447300,1.0,0.429046,0.453039,1.0,0.435573,0.464243,1.0,0.439175,0.480648,1.0,0.436023,0.465043,1.0,0.439850,0.475846,1.0,0.443001,0.488651,1.0,0.433323,0.465043,1.0,0.437374,0.476646,1.0,0.439625,0.491452,1.0,0.428821,0.463843,1.0,0.431297,0.473445,1.0,0.437599,0.487450,1.0,0.424545,0.462242,1.0,0.424995,0.469043,1.0,0.424995,0.472645,1.0,0.463989,0.234801,1.0,0.481603,0.226614,1.0,0.518344,0.294928,1.0,0.518366,0.330201,1.0,0.529880,0.345655,1.0,0.524615,0.343228,1.0,0.513303,0.335253,1.0,0.516033,0.333172,1.0,0.520519,0.339760,1.0,0.514862,0.337333,1.0,0.531635,0.334213,1.0,0.522276,0.335253,1.0,0.516423,0.331785,1.0,0.531635,0.332132,1.0,0.523833,0.329012,1.0,0.523833,0.329358,1.0,0.524422,0.325198,1.0,0.522661,0.325544,1.0,0.521885,0.325198,1.0,0.435694,0.447346,1.0,0.435694,0.447346,1.0,0.447817,0.640981,1.0,0.429508,0.788006,1.0,0.429508,0.788006,1.0,0.483142,0.436495,1.0,0.483142,0.436495,1.0,0.495444,0.621719,1.0,0.519881,0.679050,1.0,0.519881,0.679050,1.0
|
||||
0.459419,0.447368,1.0,0.446173,0.298191,1.0,0.450588,0.347917,1.0,0.441757,0.248466,1.0,0.439480,0.159812,1.0,0.449463,0.139546,1.0,0.449463,0.139546,1.0,0.435621,0.139430,1.0,0.435621,0.139430,1.0,0.424873,0.258004,1.0,0.407990,0.267543,1.0,0.409537,0.379261,1.0,0.427951,0.447381,1.0,0.433104,0.453051,1.0,0.440253,0.469040,1.0,0.442559,0.481338,1.0,0.440484,0.470269,1.0,0.442559,0.484618,1.0,0.444173,0.496507,1.0,0.438408,0.467400,1.0,0.440484,0.482158,1.0,0.442329,0.494047,1.0,0.434949,0.463710,1.0,0.436564,0.474369,1.0,0.440714,0.486668,1.0,0.431721,0.459610,1.0,0.431490,0.464940,1.0,0.431259,0.468630,1.0,0.458608,0.238917,1.0,0.475459,0.229368,1.0,0.506161,0.313924,1.0,0.470896,0.346530,1.0,0.464035,0.355075,1.0,0.448667,0.356182,1.0,0.463412,0.347321,1.0,0.460505,0.328492,1.0,0.460090,0.342891,1.0,0.463620,0.347321,1.0,0.450536,0.353967,1.0,0.456974,0.349906,1.0,0.459674,0.352859,1.0,0.450952,0.354336,1.0,0.457182,0.349906,1.0,0.458636,0.348429,1.0,0.466528,0.351013,1.0,0.464035,0.347321,1.0,0.463620,0.348429,1.0,0.435682,0.450141,1.0,0.435682,0.450141,1.0,0.447875,0.643655,1.0,0.430995,0.790724,1.0,0.430995,0.790724,1.0,0.483156,0.444594,1.0,0.483156,0.444594,1.0,0.495308,0.613579,1.0,0.521510,0.665481,1.0,0.521510,0.665481,1.0
|
||||
0.460919,0.436503,1.0,0.443094,0.295558,1.0,0.449036,0.342540,1.0,0.437153,0.248577,1.0,0.435619,0.162582,1.0,0.447940,0.142185,1.0,0.447940,0.142185,1.0,0.434071,0.139547,1.0,0.434071,0.139547,1.0,0.419529,0.259366,1.0,0.401905,0.270156,1.0,0.409480,0.376460,1.0,0.426451,0.431090,1.0,0.432935,0.434181,1.0,0.432714,0.451083,1.0,0.436031,0.456586,1.0,0.439790,0.441256,1.0,0.444655,0.455014,1.0,0.446866,0.466020,1.0,0.439569,0.441256,1.0,0.443549,0.456586,1.0,0.444655,0.471917,1.0,0.436916,0.442435,1.0,0.440453,0.456586,1.0,0.443107,0.468772,1.0,0.434483,0.446759,1.0,0.438242,0.455800,1.0,0.441780,0.465234,1.0,0.454789,0.239038,1.0,0.472425,0.229500,1.0,0.496908,0.316612,1.0,0.466301,0.335678,1.0,0.462028,0.331609,1.0,0.455397,0.340183,1.0,0.449167,0.341255,1.0,0.455999,0.354830,1.0,0.457004,0.356617,1.0,0.462229,0.357331,1.0,0.463434,0.360189,1.0,0.463635,0.351972,1.0,0.470066,0.357331,1.0,0.465444,0.353758,1.0,0.463635,0.351257,1.0,0.463434,0.352330,1.0,0.466851,0.356617,1.0,0.468458,0.357688,1.0,0.471673,0.358045,1.0,0.438695,0.444652,1.0,0.438695,0.444652,1.0,0.447859,0.643630,1.0,0.432496,0.790735,1.0,0.432496,0.790735,1.0,0.483142,0.428354,1.0,0.483142,0.428354,1.0,0.495333,0.597195,1.0,0.526089,0.668240,1.0,0.526089,0.668240,1.0
|
||||
0.460919,0.436503,1.0,0.443094,0.295558,1.0,0.449036,0.342540,1.0,0.437153,0.248577,1.0,0.435619,0.162582,1.0,0.447940,0.142185,1.0,0.447940,0.142185,1.0,0.434071,0.139547,1.0,0.434071,0.139547,1.0,0.419529,0.259366,1.0,0.401905,0.270156,1.0,0.409480,0.376460,1.0,0.426451,0.431090,1.0,0.432935,0.434181,1.0,0.432714,0.451083,1.0,0.436031,0.456586,1.0,0.439790,0.441256,1.0,0.444655,0.455014,1.0,0.446866,0.466020,1.0,0.439569,0.441256,1.0,0.443549,0.456586,1.0,0.444655,0.471917,1.0,0.436916,0.442435,1.0,0.440453,0.456586,1.0,0.443107,0.468772,1.0,0.434483,0.446759,1.0,0.438242,0.455800,1.0,0.441780,0.465234,1.0,0.454789,0.239038,1.0,0.472425,0.229500,1.0,0.496908,0.316612,1.0,0.466301,0.335678,1.0,0.462028,0.331609,1.0,0.455397,0.340183,1.0,0.449167,0.341255,1.0,0.455999,0.354830,1.0,0.457004,0.356617,1.0,0.462229,0.357331,1.0,0.463434,0.360189,1.0,0.463635,0.351972,1.0,0.470066,0.357331,1.0,0.465444,0.353758,1.0,0.463635,0.351257,1.0,0.463434,0.352330,1.0,0.466851,0.356617,1.0,0.468458,0.357688,1.0,0.471673,0.358045,1.0,0.438695,0.444652,1.0,0.438695,0.444652,1.0,0.447859,0.643630,1.0,0.432496,0.790735,1.0,0.432496,0.790735,1.0,0.483142,0.428354,1.0,0.483142,0.428354,1.0,0.495333,0.597195,1.0,0.526089,0.668240,1.0,0.526089,0.668240,1.0
|
||||
0.460942,0.440587,1.0,0.441948,0.296405,1.0,0.448280,0.344466,1.0,0.435617,0.248344,1.0,0.431799,0.157131,1.0,0.446396,0.139552,1.0,0.446396,0.139552,1.0,0.432501,0.139342,1.0,0.432501,0.139342,1.0,0.417250,0.257902,1.0,0.398883,0.267459,1.0,0.409505,0.373821,1.0,0.423294,0.401110,1.0,0.431633,0.411701,1.0,0.437429,0.418834,1.0,0.440327,0.427156,1.0,0.436983,0.407342,1.0,0.438321,0.420816,1.0,0.438767,0.434290,1.0,0.433863,0.404568,1.0,0.437206,0.415268,1.0,0.437206,0.427553,1.0,0.430296,0.399019,1.0,0.433863,0.408531,1.0,0.437206,0.422797,1.0,0.426283,0.396642,1.0,0.427398,0.399019,1.0,0.422048,0.408134,1.0,0.453249,0.237506,1.0,0.470881,0.226669,1.0,0.492308,0.316492,1.0,0.457075,0.324799,1.0,0.447260,0.322888,1.0,0.437797,0.325393,1.0,0.431959,0.326467,1.0,0.439408,0.340068,1.0,0.438401,0.340783,1.0,0.439408,0.337562,1.0,0.443434,0.343647,1.0,0.443233,0.345436,1.0,0.446253,0.341857,1.0,0.448065,0.345436,1.0,0.448669,0.350090,1.0,0.451085,0.348657,1.0,0.452092,0.346510,1.0,0.454105,0.353669,1.0,0.457729,0.357964,1.0,0.438688,0.450095,1.0,0.438688,0.450095,1.0,0.446308,0.643556,1.0,0.432501,0.788101,1.0,0.432501,0.788101,1.0,0.483196,0.431079,1.0,0.483196,0.431079,1.0,0.498519,0.589161,1.0,0.532219,0.684510,1.0,0.532219,0.684510,1.0
|
||||
0.462439,0.429657,1.0,0.441161,0.281578,1.0,0.448254,0.330938,1.0,0.434068,0.232219,1.0,0.429527,0.150325,1.0,0.446335,0.133998,1.0,0.446335,0.133998,1.0,0.427980,0.123215,1.0,0.427980,0.123215,1.0,0.416455,0.243099,1.0,0.398842,0.253980,1.0,0.406516,0.357404,1.0,0.418725,0.368419,1.0,0.415866,0.359809,1.0,0.422539,0.357513,1.0,0.420602,0.365932,1.0,0.422969,0.379709,1.0,0.422323,0.384684,1.0,0.424692,0.388129,1.0,0.422539,0.383918,1.0,0.423184,0.396548,1.0,0.423400,0.400375,1.0,0.407685,0.385449,1.0,0.423400,0.398079,1.0,0.416942,0.399992,1.0,0.405318,0.397695,1.0,0.443635,0.330724,1.0,0.437607,0.333785,1.0,0.450917,0.222638,1.0,0.467766,0.213056,1.0,0.483214,0.302959,1.0,0.446352,0.311191,1.0,0.436515,0.309080,1.0,0.425846,0.309424,1.0,0.421967,0.309768,1.0,0.428949,0.322529,1.0,0.428561,0.323563,1.0,0.430502,0.325287,1.0,0.433411,0.326321,1.0,0.433023,0.330805,1.0,0.434963,0.326667,1.0,0.438067,0.329425,1.0,0.438260,0.336322,1.0,0.440006,0.332874,1.0,0.441946,0.329770,1.0,0.443692,0.331839,1.0,0.444468,0.338046,1.0,0.440236,0.439185,1.0,0.440236,0.439185,1.0,0.440230,0.632706,1.0,0.432543,0.790757,1.0,0.432543,0.790757,1.0,0.484643,0.420129,1.0,0.484643,0.420129,1.0,0.509209,0.583725,1.0,0.536813,0.706176,1.0,0.536813,0.706176,1.0
|
||||
0.463216,0.414730,1.0,0.440226,0.273651,1.0,0.447889,0.320677,1.0,0.432563,0.226624,1.0,0.428735,0.144905,1.0,0.446277,0.125791,1.0,0.446277,0.125791,1.0,0.426428,0.120337,1.0,0.426428,0.120337,1.0,0.414957,0.237551,1.0,0.397352,0.248479,1.0,0.408033,0.357577,1.0,0.412605,0.335673,1.0,0.407715,0.368662,1.0,0.402230,0.352006,1.0,0.402002,0.332507,1.0,0.408171,0.317069,1.0,0.422568,0.339006,1.0,0.420968,0.331694,1.0,0.422111,0.332101,1.0,0.424624,0.336163,1.0,0.428509,0.330069,1.0,0.423482,0.327226,1.0,0.430566,0.330882,1.0,0.432622,0.329663,1.0,0.434679,0.319507,1.0,0.433079,0.323164,1.0,0.434907,0.324382,1.0,0.448643,0.215708,1.0,0.464724,0.204793,1.0,0.478561,0.294754,1.0,0.435609,0.294796,1.0,0.426438,0.293100,1.0,0.416239,0.293443,1.0,0.408733,0.295837,1.0,0.416816,0.309865,1.0,0.405269,0.314655,1.0,0.402767,0.312944,1.0,0.421434,0.322866,1.0,0.416239,0.325603,1.0,0.421627,0.324919,1.0,0.424321,0.323550,1.0,0.418355,0.331761,1.0,0.417778,0.334156,1.0,0.428362,0.323207,1.0,0.431634,0.329024,1.0,0.417778,0.336551,1.0,0.441770,0.425704,1.0,0.441770,0.425704,1.0,0.435546,0.621920,1.0,0.435630,0.793463,1.0,0.435630,0.793463,1.0,0.484662,0.403756,1.0,0.484662,0.403756,1.0,0.521458,0.583664,1.0,0.544500,0.725402,1.0,0.544500,0.725402,1.0
|
||||
0.464698,0.416109,1.0,0.440568,0.271904,1.0,0.448611,0.319972,1.0,0.432525,0.223835,1.0,0.428732,0.140786,1.0,0.444821,0.123125,1.0,0.444821,0.123125,1.0,0.426427,0.117715,1.0,0.426427,0.117715,1.0,0.415681,0.234785,1.0,0.398837,0.245735,1.0,0.408033,0.352043,1.0,0.403435,0.316503,1.0,0.398589,0.303196,1.0,0.394816,0.294516,1.0,0.397479,0.279917,1.0,0.408354,0.298461,1.0,0.406579,0.280706,1.0,0.399254,0.277549,1.0,0.403028,0.299645,1.0,0.404803,0.281889,1.0,0.404581,0.306353,1.0,0.400808,0.297278,1.0,0.395925,0.290175,1.0,0.396147,0.290569,1.0,0.395925,0.296489,1.0,0.394593,0.279522,1.0,0.399920,0.280311,1.0,0.447087,0.210244,1.0,0.461649,0.196653,1.0,0.472352,0.291939,1.0,0.429454,0.289294,1.0,0.417904,0.280935,1.0,0.409282,0.277727,1.0,0.403267,0.278083,1.0,0.408681,0.283787,1.0,0.400059,0.287707,1.0,0.400059,0.289133,1.0,0.407879,0.294837,1.0,0.401463,0.301253,1.0,0.403468,0.301253,1.0,0.409683,0.306956,1.0,0.402064,0.307313,1.0,0.404069,0.308381,1.0,0.411689,0.318719,1.0,0.403468,0.315511,1.0,0.404470,0.314798,1.0,0.444760,0.428383,1.0,0.444760,0.428383,1.0,0.426415,0.621829,1.0,0.444807,0.796251,1.0,0.444807,0.796251,1.0,0.484636,0.403834,1.0,0.484636,0.403834,1.0,0.532172,0.589107,1.0,0.546073,0.749830,1.0,0.546073,0.749830,1.0
|
||||
0.465474,0.424221,1.0,0.441888,0.273930,1.0,0.449750,0.324027,1.0,0.434027,0.223833,1.0,0.428779,0.142186,1.0,0.444843,0.125802,1.0,0.444843,0.125802,1.0,0.426420,0.120337,1.0,0.426420,0.120337,1.0,0.417190,0.234775,1.0,0.400354,0.245718,1.0,0.406480,0.346535,1.0,0.403420,0.300287,1.0,0.419359,0.291721,1.0,0.418731,0.303997,1.0,0.417685,0.314785,1.0,0.413082,0.313297,1.0,0.415383,0.316645,1.0,0.415383,0.316273,1.0,0.411826,0.307718,1.0,0.410361,0.311809,1.0,0.410780,0.311065,1.0,0.408059,0.306973,1.0,0.406385,0.309949,1.0,0.405130,0.306601,1.0,0.402828,0.299533,1.0,0.401364,0.304369,1.0,0.401364,0.300277,1.0,0.447841,0.208870,1.0,0.461655,0.193907,1.0,0.469302,0.291932,1.0,0.421820,0.275789,1.0,0.413502,0.274093,1.0,0.404108,0.269736,1.0,0.394102,0.270825,1.0,0.403700,0.274819,1.0,0.402679,0.273004,1.0,0.401249,0.276271,1.0,0.404313,0.283894,1.0,0.408193,0.306404,1.0,0.405742,0.304225,1.0,0.403904,0.296964,1.0,0.411052,0.308944,1.0,0.405946,0.308944,1.0,0.415136,0.305678,1.0,0.415340,0.308582,1.0,0.415340,0.313665,1.0,0.446285,0.439195,1.0,0.446285,0.439195,1.0,0.424876,0.621854,1.0,0.444784,0.796262,1.0,0.444784,0.796262,1.0,0.484662,0.409246,1.0,0.484662,0.409246,1.0,0.538297,0.597166,1.0,0.547531,0.763568,1.0,0.547531,0.763568,1.0
|
||||
0.465474,0.424221,1.0,0.441888,0.273930,1.0,0.449750,0.324027,1.0,0.434027,0.223833,1.0,0.428779,0.142186,1.0,0.444843,0.125802,1.0,0.444843,0.125802,1.0,0.426420,0.120337,1.0,0.426420,0.120337,1.0,0.417190,0.234775,1.0,0.400354,0.245718,1.0,0.406480,0.346535,1.0,0.403420,0.300287,1.0,0.419359,0.291721,1.0,0.418731,0.303997,1.0,0.417685,0.314785,1.0,0.413082,0.313297,1.0,0.415383,0.316645,1.0,0.415383,0.316273,1.0,0.411826,0.307718,1.0,0.410361,0.311809,1.0,0.410780,0.311065,1.0,0.408059,0.306973,1.0,0.406385,0.309949,1.0,0.405130,0.306601,1.0,0.402828,0.299533,1.0,0.401364,0.304369,1.0,0.401364,0.300277,1.0,0.447841,0.208870,1.0,0.461655,0.193907,1.0,0.469302,0.291932,1.0,0.421820,0.275789,1.0,0.413502,0.274093,1.0,0.404108,0.269736,1.0,0.394102,0.270825,1.0,0.403700,0.274819,1.0,0.402679,0.273004,1.0,0.401249,0.276271,1.0,0.404313,0.283894,1.0,0.408193,0.306404,1.0,0.405742,0.304225,1.0,0.403904,0.296964,1.0,0.411052,0.308944,1.0,0.405946,0.308944,1.0,0.415136,0.305678,1.0,0.415340,0.308582,1.0,0.415340,0.313665,1.0,0.446285,0.439195,1.0,0.446285,0.439195,1.0,0.424876,0.621854,1.0,0.444784,0.796262,1.0,0.444784,0.796262,1.0,0.484662,0.409246,1.0,0.484662,0.409246,1.0,0.538297,0.597166,1.0,0.547531,0.763568,1.0,0.547531,0.763568,1.0
|
||||
0.466323,0.426929,1.0,0.442147,0.276618,1.0,0.450206,0.326722,1.0,0.434089,0.226515,1.0,0.429513,0.149006,1.0,0.446314,0.133966,1.0,0.446314,0.133966,1.0,0.429470,0.123084,1.0,0.429470,0.123084,1.0,0.418748,0.237504,1.0,0.403406,0.248494,1.0,0.408026,0.352034,1.0,0.401896,0.316505,1.0,0.411875,0.302113,1.0,0.397515,0.310876,1.0,0.398158,0.287633,1.0,0.402016,0.315068,1.0,0.402659,0.281537,1.0,0.395586,0.278869,1.0,0.406303,0.313924,1.0,0.406303,0.281918,1.0,0.398158,0.281537,1.0,0.409303,0.316592,1.0,0.410804,0.281918,1.0,0.415947,0.316592,1.0,0.420020,0.299064,1.0,0.419591,0.300207,1.0,0.414661,0.320020,1.0,0.447878,0.212956,1.0,0.461668,0.199397,1.0,0.466286,0.294724,1.0,0.421883,0.291982,1.0,0.419076,0.304065,1.0,0.415719,0.314594,1.0,0.413745,0.315647,1.0,0.395383,0.280899,1.0,0.392422,0.280899,1.0,0.395186,0.280899,1.0,0.395778,0.281250,1.0,0.398147,0.280899,1.0,0.412560,0.312489,1.0,0.398147,0.299502,1.0,0.398740,0.302661,1.0,0.408414,0.312138,1.0,0.397160,0.306170,1.0,0.398542,0.306170,1.0,0.405255,0.317403,1.0,0.446407,0.441882,1.0,0.446407,0.441882,1.0,0.427942,0.621966,1.0,0.444781,0.796176,1.0,0.444781,0.796176,1.0,0.486239,0.411976,1.0,0.486239,0.411976,1.0,0.533734,0.597369,1.0,0.547562,0.768908,1.0,0.547562,0.768908,1.0
|
||||
0.467829,0.417446,1.0,0.443657,0.274430,1.0,0.451714,0.322102,1.0,0.435599,0.226757,1.0,0.432571,0.147664,1.0,0.446384,0.136682,1.0,0.446384,0.136682,1.0,0.432490,0.125898,1.0,0.432490,0.125898,1.0,0.420273,0.238922,1.0,0.404947,0.251086,1.0,0.407997,0.346586,1.0,0.403451,0.316613,1.0,0.408859,0.305669,1.0,0.413597,0.328829,1.0,0.418926,0.349532,1.0,0.414978,0.335145,1.0,0.419321,0.349181,1.0,0.421295,0.356199,1.0,0.412018,0.342514,1.0,0.409057,0.349883,1.0,0.405504,0.347778,1.0,0.407478,0.346725,1.0,0.402346,0.355497,1.0,0.400964,0.346725,1.0,0.402543,0.347427,1.0,0.398990,0.353042,1.0,0.397806,0.346725,1.0,0.450940,0.215806,1.0,0.466281,0.204855,1.0,0.470840,0.308431,1.0,0.423426,0.305650,1.0,0.421715,0.321883,1.0,0.424287,0.339034,1.0,0.430076,0.348563,1.0,0.399847,0.285676,1.0,0.395131,0.308925,1.0,0.392129,0.306638,1.0,0.396846,0.306257,1.0,0.395345,0.309306,1.0,0.394916,0.307019,1.0,0.396846,0.305494,1.0,0.395131,0.307781,1.0,0.394702,0.306257,1.0,0.396631,0.304732,1.0,0.402205,0.284152,1.0,0.395559,0.287200,1.0,0.447890,0.428384,1.0,0.447890,0.428384,1.0,0.435627,0.624519,1.0,0.446259,0.796135,1.0,0.446259,0.796135,1.0,0.487767,0.406507,1.0,0.487767,0.406507,1.0,0.521536,0.613637,1.0,0.547500,0.768923,1.0,0.547500,0.768923,1.0
|
||||
0.471645,0.428273,1.0,0.445814,0.281172,1.0,0.454424,0.330206,1.0,0.437204,0.232139,1.0,0.438650,0.154426,1.0,0.447940,0.139526,1.0,0.447940,0.139526,1.0,0.434029,0.136708,1.0,0.434029,0.136708,1.0,0.423376,0.243019,1.0,0.409549,0.253900,1.0,0.409539,0.308406,1.0,0.409507,0.338457,1.0,0.404210,0.331179,1.0,0.400723,0.334778,1.0,0.408146,0.340577,1.0,0.408934,0.339177,1.0,0.407809,0.340977,1.0,0.405335,0.344176,1.0,0.406347,0.334978,1.0,0.404097,0.343176,1.0,0.404547,0.345576,1.0,0.406122,0.334978,1.0,0.403985,0.342976,1.0,0.404097,0.342376,1.0,0.414670,0.368969,1.0,0.414445,0.369769,1.0,0.408709,0.338577,1.0,0.454040,0.221234,1.0,0.470876,0.210329,1.0,0.477006,0.319297,1.0,0.447840,0.335603,1.0,0.440927,0.330940,1.0,0.448384,0.363080,1.0,0.447932,0.342189,1.0,0.442735,0.365088,1.0,0.443412,0.375131,1.0,0.456745,0.375533,1.0,0.442960,0.365892,1.0,0.445672,0.375131,1.0,0.457649,0.386381,1.0,0.443639,0.354241,1.0,0.446124,0.371114,1.0,0.457197,0.386381,1.0,0.446124,0.356652,1.0,0.448158,0.364686,1.0,0.456519,0.376337,1.0,0.449419,0.436477,1.0,0.449419,0.436477,1.0,0.446372,0.635424,1.0,0.446382,0.796196,1.0,0.446382,0.796196,1.0,0.493871,0.420069,1.0,0.493871,0.420069,1.0,0.509139,0.619045,1.0,0.545922,0.763539,1.0,0.545922,0.763539,1.0
|
||||
0.475462,0.444706,1.0,0.454725,0.297445,1.0,0.461637,0.346532,1.0,0.447812,0.248358,1.0,0.441729,0.161169,1.0,0.450949,0.144871,1.0,0.450949,0.144871,1.0,0.435588,0.142156,1.0,0.435588,0.142156,1.0,0.429493,0.257916,1.0,0.411173,0.267473,1.0,0.412652,0.363018,1.0,0.406451,0.379244,1.0,0.411308,0.382845,1.0,0.408349,0.402831,1.0,0.404405,0.418610,1.0,0.406377,0.405286,1.0,0.398093,0.420013,1.0,0.395924,0.430531,1.0,0.401644,0.401780,1.0,0.395332,0.417207,1.0,0.392965,0.428428,1.0,0.397305,0.397572,1.0,0.392768,0.411948,1.0,0.390993,0.423519,1.0,0.393360,0.394066,1.0,0.390598,0.407741,1.0,0.389809,0.416156,1.0,0.463951,0.237525,1.0,0.480089,0.226693,1.0,0.484641,0.349311,1.0,0.463205,0.379226,1.0,0.467035,0.362951,1.0,0.466020,0.355287,1.0,0.467795,0.357993,1.0,0.469570,0.361598,1.0,0.472106,0.369262,1.0,0.471599,0.368811,1.0,0.465006,0.361148,1.0,0.460949,0.375573,1.0,0.470078,0.365656,1.0,0.465006,0.360697,1.0,0.469824,0.389097,1.0,0.452074,0.386844,1.0,0.465260,0.360246,1.0,0.466781,0.358894,1.0,0.452327,0.387745,1.0,0.453985,0.447460,1.0,0.453985,0.447460,1.0,0.452458,0.643624,1.0,0.446383,0.798926,1.0,0.446383,0.798926,1.0,0.496939,0.441953,1.0,0.496939,0.441953,1.0,0.496877,0.627233,1.0,0.545937,0.768882,1.0,0.545937,0.768882,1.0
|
||||
0.477004,0.452840,1.0,0.456339,0.301598,1.0,0.463227,0.352012,1.0,0.449450,0.251183,1.0,0.447863,0.164013,1.0,0.458518,0.153112,1.0,0.458518,0.153112,1.0,0.438658,0.145009,1.0,0.438658,0.145009,1.0,0.434085,0.260676,1.0,0.418720,0.270169,1.0,0.417197,0.376446,1.0,0.398856,0.387477,1.0,0.389294,0.388778,1.0,0.382493,0.393847,1.0,0.376790,0.405547,1.0,0.382932,0.393068,1.0,0.375693,0.414128,1.0,0.374376,0.417247,1.0,0.384029,0.412178,1.0,0.380299,0.423488,1.0,0.382932,0.432847,1.0,0.386661,0.428947,1.0,0.385565,0.428557,1.0,0.383371,0.439478,1.0,0.385565,0.433628,1.0,0.386003,0.429728,1.0,0.387758,0.448057,1.0,0.467061,0.243044,1.0,0.484671,0.234905,1.0,0.493852,0.332933,1.0,0.496958,0.384669,1.0,0.503725,0.426897,1.0,0.513979,0.440021,1.0,0.519515,0.446948,1.0,0.516849,0.424345,1.0,0.520953,0.430907,1.0,0.523411,0.436011,1.0,0.510287,0.424710,1.0,0.516029,0.432001,1.0,0.517055,0.442574,1.0,0.504135,0.418147,1.0,0.508442,0.431637,1.0,0.512543,0.441116,1.0,0.499623,0.421429,1.0,0.507211,0.429814,1.0,0.506596,0.435282,1.0,0.455558,0.458267,1.0,0.455558,0.458267,1.0,0.447916,0.643644,1.0,0.446391,0.796303,1.0,0.446391,0.796303,1.0,0.498451,0.447414,1.0,0.498451,0.447414,1.0,0.495318,0.632737,1.0,0.544474,0.769003,1.0,0.544474,0.769003,1.0
|
||||
0.477004,0.452840,1.0,0.456339,0.301598,1.0,0.463227,0.352012,1.0,0.449450,0.251183,1.0,0.447863,0.164013,1.0,0.458518,0.153112,1.0,0.458518,0.153112,1.0,0.438658,0.145009,1.0,0.438658,0.145009,1.0,0.434085,0.260676,1.0,0.418720,0.270169,1.0,0.417197,0.376446,1.0,0.398856,0.387477,1.0,0.389294,0.388778,1.0,0.382493,0.393847,1.0,0.376790,0.405547,1.0,0.382932,0.393068,1.0,0.375693,0.414128,1.0,0.374376,0.417247,1.0,0.384029,0.412178,1.0,0.380299,0.423488,1.0,0.382932,0.432847,1.0,0.386661,0.428947,1.0,0.385565,0.428557,1.0,0.383371,0.439478,1.0,0.385565,0.433628,1.0,0.386003,0.429728,1.0,0.387758,0.448057,1.0,0.467061,0.243044,1.0,0.484671,0.234905,1.0,0.493852,0.332933,1.0,0.496958,0.384669,1.0,0.503725,0.426897,1.0,0.513979,0.440021,1.0,0.519515,0.446948,1.0,0.516849,0.424345,1.0,0.520953,0.430907,1.0,0.523411,0.436011,1.0,0.510287,0.424710,1.0,0.516029,0.432001,1.0,0.517055,0.442574,1.0,0.504135,0.418147,1.0,0.508442,0.431637,1.0,0.512543,0.441116,1.0,0.499623,0.421429,1.0,0.507211,0.429814,1.0,0.506596,0.435282,1.0,0.455558,0.458267,1.0,0.455558,0.458267,1.0,0.447916,0.643644,1.0,0.446391,0.796303,1.0,0.446391,0.796303,1.0,0.498451,0.447414,1.0,0.498451,0.447414,1.0,0.495318,0.632737,1.0,0.544474,0.769003,1.0,0.544474,0.769003,1.0
|
||||
0.477791,0.452864,1.0,0.463356,0.301633,1.0,0.468168,0.352043,1.0,0.458545,0.251222,1.0,0.453249,0.162654,1.0,0.460148,0.155780,1.0,0.460148,0.155780,1.0,0.446276,0.144970,1.0,0.446276,0.144970,1.0,0.440180,0.259389,1.0,0.421816,0.267556,1.0,0.420280,0.373811,1.0,0.394246,0.398315,1.0,0.380830,0.396264,1.0,0.372495,0.402112,1.0,0.371837,0.404062,1.0,0.374030,0.401332,1.0,0.365257,0.417319,1.0,0.367231,0.414590,1.0,0.374030,0.423169,1.0,0.372056,0.429797,1.0,0.372714,0.430187,1.0,0.375785,0.435645,1.0,0.374030,0.435256,1.0,0.371837,0.438765,1.0,0.375127,0.438375,1.0,0.364380,0.419269,1.0,0.371179,0.445004,1.0,0.476180,0.248443,1.0,0.493815,0.245663,1.0,0.498480,0.354773,1.0,0.521510,0.398288,1.0,0.524365,0.398598,1.0,0.536109,0.396591,1.0,0.539271,0.396190,1.0,0.511947,0.425894,1.0,0.545141,0.412246,1.0,0.544911,0.411043,1.0,0.542432,0.413049,1.0,0.544464,0.414254,1.0,0.544464,0.429507,1.0,0.540625,0.417465,1.0,0.544234,0.436331,1.0,0.543333,0.434726,1.0,0.516237,0.433120,1.0,0.544010,0.436331,1.0,0.535432,0.436733,1.0,0.457085,0.461005,1.0,0.457085,0.461005,1.0,0.435653,0.640875,1.0,0.444823,0.796282,1.0,0.444823,0.796282,1.0,0.498497,0.444724,1.0,0.498497,0.444724,1.0,0.496984,0.638054,1.0,0.544437,0.771575,1.0,0.544437,0.771575,1.0
|
||||
0.478558,0.448766,1.0,0.465874,0.300535,1.0,0.470102,0.349945,1.0,0.461646,0.251124,1.0,0.457878,0.161268,1.0,0.466266,0.147592,1.0,0.466266,0.147592,1.0,0.447936,0.142278,1.0,0.447936,0.142278,1.0,0.443297,0.255249,1.0,0.424947,0.259374,1.0,0.421783,0.371099,1.0,0.388072,0.398231,1.0,0.377179,0.392410,1.0,0.366560,0.397334,1.0,0.361251,0.405952,1.0,0.364714,0.421546,1.0,0.358943,0.433447,1.0,0.356865,0.438782,1.0,0.368407,0.428523,1.0,0.361020,0.438782,1.0,0.357789,0.447811,1.0,0.371870,0.432217,1.0,0.365406,0.441656,1.0,0.361251,0.452325,1.0,0.374870,0.434679,1.0,0.368638,0.446990,1.0,0.368176,0.449453,1.0,0.479293,0.247088,1.0,0.496941,0.243052,1.0,0.509169,0.357524,1.0,0.542885,0.384826,1.0,0.540307,0.406232,1.0,0.544396,0.419482,1.0,0.566516,0.402812,1.0,0.564594,0.406232,1.0,0.566276,0.406659,1.0,0.567479,0.409652,1.0,0.562427,0.411361,1.0,0.569161,0.416063,1.0,0.572047,0.416063,1.0,0.560984,0.405377,1.0,0.567479,0.428459,1.0,0.568682,0.427605,1.0,0.559063,0.391699,1.0,0.564833,0.433161,1.0,0.574208,0.434870,1.0,0.457099,0.455548,1.0,0.457099,0.455548,1.0,0.424897,0.635443,1.0,0.441763,0.796292,1.0,0.441763,0.796292,1.0,0.500017,0.441984,1.0,0.500017,0.441984,1.0,0.510710,0.635371,1.0,0.544484,0.771575,1.0,0.544484,0.771575,1.0
|
||||
0.482335,0.448740,1.0,0.473737,0.298420,1.0,0.476603,0.348526,1.0,0.470871,0.248313,1.0,0.465522,0.153060,1.0,0.470941,0.142180,1.0,0.470941,0.142180,1.0,0.457035,0.139488,1.0,0.457035,0.139488,1.0,0.452487,0.249708,1.0,0.434103,0.251104,1.0,0.423366,0.360186,1.0,0.385060,0.382113,1.0,0.371277,0.381631,1.0,0.362365,0.384068,1.0,0.357566,0.393818,1.0,0.359622,0.410068,1.0,0.354138,0.416568,1.0,0.350253,0.423880,1.0,0.362365,0.422255,1.0,0.354595,0.423473,1.0,0.350482,0.431598,1.0,0.367163,0.424286,1.0,0.360308,0.426723,1.0,0.357566,0.435255,1.0,0.367849,0.423473,1.0,0.362136,0.429161,1.0,0.360765,0.435255,1.0,0.489243,0.244289,1.0,0.507615,0.240265,1.0,0.516858,0.357362,1.0,0.556740,0.382113,1.0,0.561115,0.383774,1.0,0.575271,0.382906,1.0,0.582833,0.390281,1.0,0.580391,0.399390,1.0,0.586979,0.401559,1.0,0.586495,0.403294,1.0,0.578927,0.402860,1.0,0.588203,0.408933,1.0,0.588203,0.406331,1.0,0.576734,0.415874,1.0,0.584786,0.415006,1.0,0.589906,0.413705,1.0,0.576490,0.417609,1.0,0.581854,0.421946,1.0,0.589906,0.422381,1.0,0.458568,0.452819,1.0,0.458568,0.452819,1.0,0.423329,0.629987,1.0,0.440196,0.796177,1.0,0.440196,0.796177,1.0,0.506101,0.444660,1.0,0.506101,0.444660,1.0,0.529125,0.624589,1.0,0.546016,0.768919,1.0,0.546016,0.768919,1.0
|
||||
0.483121,0.443282,1.0,0.479665,0.289018,1.0,0.480817,0.340440,1.0,0.478512,0.237597,1.0,0.475445,0.147619,1.0,0.478510,0.139398,1.0,0.478510,0.139398,1.0,0.460222,0.136756,1.0,0.460222,0.136756,1.0,0.460883,0.241635,1.0,0.443254,0.245673,1.0,0.429495,0.357414,1.0,0.384953,0.373812,1.0,0.367422,0.370831,1.0,0.361521,0.367474,1.0,0.352315,0.379644,1.0,0.360105,0.370412,1.0,0.349719,0.398946,1.0,0.344998,0.413632,1.0,0.356800,0.398946,1.0,0.352315,0.398527,1.0,0.346651,0.413213,1.0,0.359632,0.409856,1.0,0.353968,0.399785,1.0,0.350427,0.405241,1.0,0.367422,0.401044,1.0,0.359160,0.401044,1.0,0.343582,0.416990,1.0,0.496160,0.234900,1.0,0.513808,0.232204,1.0,0.523042,0.357461,1.0,0.569047,0.379150,1.0,0.575104,0.372868,1.0,0.587615,0.372405,1.0,0.595958,0.380283,1.0,0.593094,0.388161,1.0,0.604563,0.397894,1.0,0.601953,0.396040,1.0,0.591526,0.399283,1.0,0.602995,0.409016,1.0,0.602214,0.410406,1.0,0.587615,0.406235,1.0,0.595177,0.416431,1.0,0.592047,0.415040,1.0,0.581099,0.409479,1.0,0.584229,0.416431,1.0,0.585792,0.419675,1.0,0.458647,0.447345,1.0,0.458647,0.447345,1.0,0.421882,0.627243,1.0,0.437208,0.796318,1.0,0.437208,0.796318,1.0,0.507595,0.439219,1.0,0.507595,0.439219,1.0,0.544500,0.621924,1.0,0.549031,0.771580,1.0,0.549031,0.771580,1.0
|
||||
0.484684,0.445994,1.0,0.484720,0.289691,1.0,0.484708,0.341792,1.0,0.484732,0.237590,1.0,0.480869,0.142213,1.0,0.484703,0.139417,1.0,0.484703,0.139417,1.0,0.470845,0.139335,1.0,0.470845,0.139335,1.0,0.466349,0.237594,1.0,0.447967,0.237597,1.0,0.434046,0.354670,1.0,0.384950,0.360244,1.0,0.377143,0.358132,1.0,0.362822,0.350231,1.0,0.355908,0.353304,1.0,0.356402,0.356377,1.0,0.349982,0.356377,1.0,0.345043,0.386227,1.0,0.355661,0.367790,1.0,0.349241,0.377886,1.0,0.345538,0.386227,1.0,0.357636,0.378765,1.0,0.352451,0.388422,1.0,0.345043,0.390617,1.0,0.360599,0.385349,1.0,0.356896,0.391933,1.0,0.352698,0.398957,1.0,0.503121,0.236241,1.0,0.521510,0.234893,1.0,0.532198,0.357583,1.0,0.581193,0.368394,1.0,0.585839,0.366042,1.0,0.597109,0.362853,1.0,0.606333,0.369685,1.0,0.603000,0.380616,1.0,0.612734,0.386081,1.0,0.616833,0.391092,1.0,0.601464,0.389725,1.0,0.610943,0.396101,1.0,0.616068,0.400656,1.0,0.599156,0.397468,1.0,0.608635,0.406121,1.0,0.610432,0.409309,1.0,0.596083,0.402933,1.0,0.600182,0.410220,1.0,0.598901,0.408398,1.0,0.460201,0.447407,1.0,0.460201,0.447407,1.0,0.421833,0.627233,1.0,0.437130,0.796287,1.0,0.437130,0.796287,1.0,0.509167,0.444581,1.0,0.509167,0.444581,1.0,0.556682,0.621813,1.0,0.553620,0.771643,1.0,0.553620,0.771643,1.0
|
||||
0.484684,0.445994,1.0,0.484720,0.289691,1.0,0.484708,0.341792,1.0,0.484732,0.237590,1.0,0.480869,0.142213,1.0,0.484703,0.139417,1.0,0.484703,0.139417,1.0,0.470845,0.139335,1.0,0.470845,0.139335,1.0,0.466349,0.237594,1.0,0.447967,0.237597,1.0,0.434046,0.354670,1.0,0.384950,0.360244,1.0,0.377143,0.358132,1.0,0.362822,0.350231,1.0,0.355908,0.353304,1.0,0.356402,0.356377,1.0,0.349982,0.356377,1.0,0.345043,0.386227,1.0,0.355661,0.367790,1.0,0.349241,0.377886,1.0,0.345538,0.386227,1.0,0.357636,0.378765,1.0,0.352451,0.388422,1.0,0.345043,0.390617,1.0,0.360599,0.385349,1.0,0.356896,0.391933,1.0,0.352698,0.398957,1.0,0.503121,0.236241,1.0,0.521510,0.234893,1.0,0.532198,0.357583,1.0,0.581193,0.368394,1.0,0.585839,0.366042,1.0,0.597109,0.362853,1.0,0.606333,0.369685,1.0,0.603000,0.380616,1.0,0.612734,0.386081,1.0,0.616833,0.391092,1.0,0.601464,0.389725,1.0,0.610943,0.396101,1.0,0.616068,0.400656,1.0,0.599156,0.397468,1.0,0.608635,0.406121,1.0,0.610432,0.409309,1.0,0.596083,0.402933,1.0,0.600182,0.410220,1.0,0.598901,0.408398,1.0,0.460201,0.447407,1.0,0.460201,0.447407,1.0,0.421833,0.627233,1.0,0.437130,0.796287,1.0,0.437130,0.796287,1.0,0.509167,0.444581,1.0,0.509167,0.444581,1.0,0.556682,0.621813,1.0,0.553620,0.771643,1.0,0.553620,0.771643,1.0
|
||||
0.486999,0.448768,1.0,0.493248,0.296432,1.0,0.491165,0.347210,1.0,0.495330,0.245653,1.0,0.489287,0.151688,1.0,0.493895,0.142087,1.0,0.493895,0.142087,1.0,0.476995,0.139448,1.0,0.476995,0.139448,1.0,0.476962,0.244305,1.0,0.458594,0.242956,1.0,0.435675,0.357382,1.0,0.384985,0.354693,1.0,0.378032,0.344448,1.0,0.367505,0.334645,1.0,0.360738,0.334645,1.0,0.360989,0.349795,1.0,0.355976,0.350686,1.0,0.355474,0.349795,1.0,0.360989,0.357369,1.0,0.353219,0.363162,1.0,0.347454,0.362717,1.0,0.361740,0.367619,1.0,0.352717,0.371183,1.0,0.345448,0.366282,1.0,0.363745,0.369846,1.0,0.364497,0.372074,1.0,0.343443,0.368509,1.0,0.513728,0.245676,1.0,0.532125,0.245699,1.0,0.539880,0.360225,1.0,0.585854,0.371121,1.0,0.592214,0.364138,1.0,0.603167,0.359482,1.0,0.611734,0.362868,1.0,0.609828,0.375986,1.0,0.618635,0.378102,1.0,0.625302,0.381488,1.0,0.609594,0.385719,1.0,0.619828,0.389951,1.0,0.625302,0.393759,1.0,0.607688,0.392913,1.0,0.616255,0.399684,1.0,0.619828,0.403069,1.0,0.605307,0.400107,1.0,0.608162,0.404339,1.0,0.610781,0.407301,1.0,0.464735,0.452837,1.0,0.464735,0.452837,1.0,0.421774,0.630016,1.0,0.435698,0.796182,1.0,0.435698,0.796182,1.0,0.509264,0.444699,1.0,0.509264,0.444699,1.0,0.561312,0.621959,1.0,0.550563,0.774514,1.0,0.550563,0.774514,1.0
|
||||
0.493881,0.462376,1.0,0.496227,0.301899,1.0,0.495445,0.355391,1.0,0.497008,0.248406,1.0,0.497718,0.158477,1.0,0.499991,0.145001,1.0,0.499991,0.145001,1.0,0.484635,0.144874,1.0,0.484635,0.144874,1.0,0.480105,0.248413,1.0,0.463202,0.248420,1.0,0.438661,0.360170,1.0,0.385025,0.346542,1.0,0.378713,0.336763,1.0,0.373019,0.322681,1.0,0.363117,0.316959,1.0,0.365592,0.346885,1.0,0.361136,0.350845,1.0,0.348759,0.364929,1.0,0.350492,0.340283,1.0,0.354205,0.353046,1.0,0.349254,0.365369,1.0,0.349997,0.342044,1.0,0.354453,0.353046,1.0,0.350492,0.364488,1.0,0.348511,0.346444,1.0,0.348511,0.349085,1.0,0.347769,0.362288,1.0,0.515377,0.248448,1.0,0.533745,0.248489,1.0,0.544484,0.368405,1.0,0.593453,0.379249,1.0,0.598589,0.369019,1.0,0.608359,0.362782,1.0,0.616630,0.362782,1.0,0.616630,0.377037,1.0,0.624901,0.377037,1.0,0.630911,0.377037,1.0,0.616380,0.385946,1.0,0.626151,0.387728,1.0,0.631661,0.389955,1.0,0.614625,0.394409,1.0,0.622896,0.397973,1.0,0.628156,0.401091,1.0,0.611870,0.401537,1.0,0.618635,0.405545,1.0,0.621891,0.408664,1.0,0.469349,0.463727,1.0,0.469349,0.463727,1.0,0.421809,0.635471,1.0,0.435672,0.796336,1.0,0.435672,0.796336,1.0,0.518414,0.461026,1.0,0.518414,0.461026,1.0,0.567406,0.638133,1.0,0.549036,0.779941,1.0,0.549036,0.779941,1.0
|
||||
0.496902,0.463738,1.0,0.504935,0.304380,1.0,0.502257,0.357500,1.0,0.507613,0.251261,1.0,0.503868,0.162665,1.0,0.509142,0.158513,1.0,0.509142,0.158513,1.0,0.493890,0.158432,1.0,0.493890,0.158432,1.0,0.489986,0.251206,1.0,0.472359,0.251152,1.0,0.438709,0.360191,1.0,0.385072,0.341123,1.0,0.382514,0.333006,1.0,0.377637,0.316581,1.0,0.370451,0.308369,1.0,0.368655,0.314300,1.0,0.361982,0.304262,1.0,0.356079,0.300156,1.0,0.366602,0.321600,1.0,0.358132,0.311562,1.0,0.353513,0.306087,1.0,0.365318,0.329356,1.0,0.358132,0.321600,1.0,0.352999,0.315212,1.0,0.364805,0.338937,1.0,0.359672,0.332550,1.0,0.355822,0.328900,1.0,0.524509,0.252578,1.0,0.541406,0.253894,1.0,0.547521,0.379148,1.0,0.595089,0.384706,1.0,0.601708,0.378699,1.0,0.611568,0.370858,1.0,0.618828,0.368092,1.0,0.620385,0.384234,1.0,0.628427,0.381467,1.0,0.634396,0.381467,1.0,0.620385,0.392536,1.0,0.630505,0.392075,1.0,0.636474,0.392075,1.0,0.618828,0.400377,1.0,0.628172,0.402221,1.0,0.633880,0.402683,1.0,0.616495,0.406834,1.0,0.623760,0.410524,1.0,0.628427,0.412830,1.0,0.472392,0.463787,1.0,0.472392,0.463787,1.0,0.423393,0.640886,1.0,0.435683,0.796344,1.0,0.435683,0.796344,1.0,0.521411,0.463689,1.0,0.521411,0.463689,1.0,0.559833,0.643560,1.0,0.547510,0.785344,1.0,0.547510,0.785344,1.0
|
||||
0.498514,0.466542,1.0,0.507724,0.307067,1.0,0.504654,0.360226,1.0,0.510794,0.253909,1.0,0.513795,0.164020,1.0,0.516854,0.161189,1.0,0.516854,0.161189,1.0,0.498508,0.161114,1.0,0.498508,0.161114,1.0,0.495415,0.252552,1.0,0.480037,0.251195,1.0,0.443263,0.354794,1.0,0.388096,0.338545,1.0,0.385059,0.334082,1.0,0.380508,0.317905,1.0,0.372925,0.312961,1.0,0.369892,0.312062,1.0,0.363067,0.302625,1.0,0.358516,0.297681,1.0,0.366858,0.317905,1.0,0.359022,0.308018,1.0,0.354472,0.302176,1.0,0.365847,0.325094,1.0,0.358516,0.316556,1.0,0.353461,0.309816,1.0,0.366100,0.334082,1.0,0.359274,0.325994,1.0,0.355483,0.321050,1.0,0.528407,0.255278,1.0,0.546021,0.256647,1.0,0.553656,0.379175,1.0,0.596552,0.400932,1.0,0.602062,0.395448,1.0,0.608422,0.390926,1.0,0.614016,0.387760,1.0,0.619104,0.404041,1.0,0.631312,0.399519,1.0,0.636146,0.402232,1.0,0.621396,0.413538,1.0,0.627245,0.412181,1.0,0.636146,0.408111,1.0,0.617578,0.422583,1.0,0.622411,0.421679,1.0,0.625974,0.420322,1.0,0.616052,0.426653,1.0,0.619615,0.432081,1.0,0.622667,0.432532,1.0,0.473991,0.466531,1.0,0.473991,0.466531,1.0,0.435598,0.649035,1.0,0.435692,0.799042,1.0,0.435692,0.799042,1.0,0.523036,0.466553,1.0,0.523036,0.466553,1.0,0.553677,0.659923,1.0,0.544516,0.796212,1.0,0.544516,0.796212,1.0
|
||||
0.504585,0.467844,1.0,0.516024,0.307416,1.0,0.512211,0.360892,1.0,0.519837,0.253940,1.0,0.520660,0.166683,1.0,0.521521,0.163857,1.0,0.521521,0.163857,1.0,0.507678,0.161279,1.0,0.507678,0.161279,1.0,0.501518,0.252523,1.0,0.483199,0.251107,1.0,0.446260,0.338481,1.0,0.395763,0.341077,1.0,0.387895,0.337924,1.0,0.382031,0.327499,1.0,0.375716,0.326696,1.0,0.372784,0.321083,1.0,0.363085,0.317474,1.0,0.356319,0.315069,1.0,0.369401,0.327098,1.0,0.359928,0.325494,1.0,0.354515,0.320281,1.0,0.367822,0.333513,1.0,0.359928,0.332310,1.0,0.357221,0.328702,1.0,0.367596,0.339929,1.0,0.362183,0.339528,1.0,0.360153,0.337122,1.0,0.535981,0.259365,1.0,0.552125,0.264790,1.0,0.558229,0.376538,1.0,0.596635,0.406540,1.0,0.595641,0.407792,1.0,0.597724,0.410674,1.0,0.605141,0.416441,1.0,0.616490,0.419324,1.0,0.615797,0.421383,1.0,0.625755,0.427561,1.0,0.617880,0.424678,1.0,0.623208,0.432504,1.0,0.625990,0.443212,1.0,0.617417,0.431269,1.0,0.621354,0.439918,1.0,0.624599,0.440330,1.0,0.630161,0.431680,1.0,0.614635,0.444036,1.0,0.614635,0.451038,1.0,0.480040,0.466467,1.0,0.480040,0.466467,1.0,0.450920,0.662643,1.0,0.435682,0.799027,1.0,0.435682,0.799027,1.0,0.529130,0.469221,1.0,0.529130,0.469221,1.0,0.542937,0.662663,1.0,0.544495,0.796152,1.0,0.544495,0.796152,1.0
|
||||
0.504585,0.467844,1.0,0.516024,0.307416,1.0,0.512211,0.360892,1.0,0.519837,0.253940,1.0,0.520660,0.166683,1.0,0.521521,0.163857,1.0,0.521521,0.163857,1.0,0.507678,0.161279,1.0,0.507678,0.161279,1.0,0.501518,0.252523,1.0,0.483199,0.251107,1.0,0.446260,0.338481,1.0,0.395763,0.341077,1.0,0.387895,0.337924,1.0,0.382031,0.327499,1.0,0.375716,0.326696,1.0,0.372784,0.321083,1.0,0.363085,0.317474,1.0,0.356319,0.315069,1.0,0.369401,0.327098,1.0,0.359928,0.325494,1.0,0.354515,0.320281,1.0,0.367822,0.333513,1.0,0.359928,0.332310,1.0,0.357221,0.328702,1.0,0.367596,0.339929,1.0,0.362183,0.339528,1.0,0.360153,0.337122,1.0,0.535981,0.259365,1.0,0.552125,0.264790,1.0,0.558229,0.376538,1.0,0.596635,0.406540,1.0,0.595641,0.407792,1.0,0.597724,0.410674,1.0,0.605141,0.416441,1.0,0.616490,0.419324,1.0,0.615797,0.421383,1.0,0.625755,0.427561,1.0,0.617880,0.424678,1.0,0.623208,0.432504,1.0,0.625990,0.443212,1.0,0.617417,0.431269,1.0,0.621354,0.439918,1.0,0.624599,0.440330,1.0,0.630161,0.431680,1.0,0.614635,0.444036,1.0,0.614635,0.451038,1.0,0.480040,0.466467,1.0,0.480040,0.466467,1.0,0.450920,0.662643,1.0,0.435682,0.799027,1.0,0.435682,0.799027,1.0,0.529130,0.469221,1.0,0.529130,0.469221,1.0,0.542937,0.662663,1.0,0.544495,0.796152,1.0,0.544495,0.796152,1.0
|
||||
0.506830,0.462410,1.0,0.518946,0.310100,1.0,0.514907,0.360870,1.0,0.522984,0.259330,1.0,0.526802,0.181621,1.0,0.532109,0.166732,1.0,0.532109,0.166732,1.0,0.512298,0.166754,1.0,0.512298,0.166754,1.0,0.505368,0.255256,1.0,0.487753,0.251182,1.0,0.444831,0.335507,1.0,0.397290,0.341068,1.0,0.393335,0.344988,1.0,0.391457,0.348326,1.0,0.384417,0.349160,1.0,0.375969,0.339981,1.0,0.366347,0.338313,1.0,0.359777,0.337479,1.0,0.372918,0.342068,1.0,0.364000,0.337479,1.0,0.358368,0.337895,1.0,0.372449,0.344571,1.0,0.364000,0.337895,1.0,0.360011,0.342068,1.0,0.371041,0.344988,1.0,0.365408,0.343737,1.0,0.361654,0.343737,1.0,0.540617,0.264758,1.0,0.558250,0.270187,1.0,0.561333,0.368404,1.0,0.595031,0.422944,1.0,0.595802,0.430116,1.0,0.596818,0.448159,1.0,0.590526,0.421094,1.0,0.594583,0.439859,1.0,0.602094,0.435168,1.0,0.601281,0.453933,1.0,0.601891,0.438055,1.0,0.601281,0.439138,1.0,0.601281,0.437333,1.0,0.600672,0.439498,1.0,0.601687,0.442385,1.0,0.597021,0.433724,1.0,0.601484,0.439138,1.0,0.600469,0.447438,1.0,0.602094,0.456459,1.0,0.483056,0.458334,1.0,0.483056,0.458334,1.0,0.469320,0.665311,1.0,0.438664,0.799009,1.0,0.438664,0.799009,1.0,0.530604,0.466486,1.0,0.530604,0.466486,1.0,0.533698,0.665321,1.0,0.544474,0.798943,1.0,0.544474,0.798943,1.0
|
||||
0.506923,0.471924,1.0,0.524692,0.316534,1.0,0.518769,0.368331,1.0,0.530615,0.264738,1.0,0.532995,0.184377,1.0,0.535224,0.180259,1.0,0.535224,0.180259,1.0,0.519943,0.180261,1.0,0.519943,0.180261,1.0,0.513023,0.258005,1.0,0.495432,0.251271,1.0,0.446273,0.322025,1.0,0.397257,0.343839,1.0,0.391059,0.358875,1.0,0.386650,0.365063,1.0,0.378761,0.369188,1.0,0.372496,0.358463,1.0,0.363679,0.356400,1.0,0.357879,0.355163,1.0,0.369712,0.353513,1.0,0.361359,0.348975,1.0,0.355094,0.346500,1.0,0.369016,0.351038,1.0,0.361359,0.344438,1.0,0.355790,0.339488,1.0,0.369016,0.348150,1.0,0.361823,0.341550,1.0,0.356950,0.338663,1.0,0.545219,0.267498,1.0,0.559823,0.270258,1.0,0.565901,0.360283,1.0,0.585859,0.425724,1.0,0.583656,0.447985,1.0,0.583094,0.460625,1.0,0.585151,0.474263,1.0,0.593568,0.464617,1.0,0.592260,0.485572,1.0,0.591698,0.488232,1.0,0.595068,0.466280,1.0,0.593198,0.485572,1.0,0.593385,0.486569,1.0,0.596188,0.461291,1.0,0.593568,0.484906,1.0,0.593385,0.485572,1.0,0.597313,0.461623,1.0,0.603115,0.468275,1.0,0.599182,0.490229,1.0,0.483169,0.469212,1.0,0.483169,0.469212,1.0,0.472342,0.665519,1.0,0.438708,0.812586,1.0,0.438708,0.812586,1.0,0.530677,0.474635,1.0,0.530677,0.474635,1.0,0.533677,0.665562,1.0,0.544396,0.801703,1.0,0.544396,0.801703,1.0
|
||||
0.507675,0.470575,1.0,0.527157,0.314223,1.0,0.520663,0.366341,1.0,0.533651,0.262106,1.0,0.531456,0.181672,1.0,0.539880,0.183006,1.0,0.539880,0.183006,1.0,0.523031,0.180339,1.0,0.523031,0.180339,1.0,0.516834,0.256710,1.0,0.500017,0.251314,1.0,0.447900,0.313919,1.0,0.394243,0.352012,1.0,0.387604,0.365838,1.0,0.380775,0.372537,1.0,0.371590,0.376306,1.0,0.368999,0.363326,1.0,0.360051,0.359977,1.0,0.354398,0.359140,1.0,0.366409,0.358302,1.0,0.358637,0.352441,1.0,0.352043,0.349510,1.0,0.366644,0.354534,1.0,0.359344,0.348254,1.0,0.353456,0.342811,1.0,0.367586,0.352441,1.0,0.362170,0.348672,1.0,0.356518,0.342811,1.0,0.549789,0.266169,1.0,0.565927,0.270231,1.0,0.565927,0.357532,1.0,0.578177,0.431005,1.0,0.571589,0.452368,1.0,0.568526,0.465179,1.0,0.567089,0.477028,1.0,0.578615,0.471904,1.0,0.575193,0.487917,1.0,0.572849,0.489519,1.0,0.585099,0.477989,1.0,0.580057,0.489519,1.0,0.578255,0.494002,1.0,0.588344,0.479269,1.0,0.584562,0.491760,1.0,0.585823,0.494322,1.0,0.590505,0.482472,1.0,0.591224,0.486316,1.0,0.590688,0.487596,1.0,0.484689,0.466520,1.0,0.484689,0.466520,1.0,0.469336,0.665353,1.0,0.437143,0.809833,1.0,0.437143,0.809833,1.0,0.530661,0.474629,1.0,0.530661,0.474629,1.0,0.544401,0.665312,1.0,0.544385,0.798964,1.0,0.544385,0.798964,1.0
|
||||
0.507616,0.473288,1.0,0.528353,0.314917,1.0,0.521441,0.367707,1.0,0.535266,0.262127,1.0,0.536755,0.181666,1.0,0.544401,0.182984,1.0,0.544401,0.182984,1.0,0.529109,0.180347,1.0,0.529109,0.180347,1.0,0.521435,0.256681,1.0,0.507604,0.251234,1.0,0.449433,0.313826,1.0,0.389609,0.354668,1.0,0.383711,0.365825,1.0,0.378226,0.373256,1.0,0.366210,0.377434,1.0,0.364643,0.363039,1.0,0.354978,0.360717,1.0,0.347925,0.358395,1.0,0.363859,0.358395,1.0,0.354717,0.351894,1.0,0.347664,0.347715,1.0,0.364643,0.355144,1.0,0.356806,0.347715,1.0,0.350015,0.342142,1.0,0.364643,0.351430,1.0,0.359157,0.347250,1.0,0.355239,0.343535,1.0,0.552096,0.266199,1.0,0.568927,0.270270,1.0,0.558339,0.352052,1.0,0.568932,0.425681,1.0,0.564760,0.453386,1.0,0.565458,0.429532,1.0,0.554828,0.447191,1.0,0.564932,0.426744,1.0,0.560750,0.467326,1.0,0.555000,0.450288,1.0,0.570339,0.466706,1.0,0.560750,0.480646,1.0,0.569464,0.476000,1.0,0.570339,0.468565,1.0,0.560750,0.480956,1.0,0.570161,0.478169,1.0,0.572255,0.471043,1.0,0.570510,0.478478,1.0,0.570510,0.478788,1.0,0.484628,0.466512,1.0,0.484628,0.466512,1.0,0.458559,0.665385,1.0,0.434067,0.815202,1.0,0.434067,0.815202,1.0,0.530604,0.480063,1.0,0.530604,0.480063,1.0,0.556667,0.659882,1.0,0.544401,0.798931,1.0,0.544401,0.798931,1.0
|
||||
0.506136,0.466462,1.0,0.531421,0.311139,1.0,0.522993,0.362913,1.0,0.539849,0.259365,1.0,0.539070,0.180287,1.0,0.545979,0.180356,1.0,0.545979,0.180356,1.0,0.532161,0.180219,1.0,0.532161,0.180219,1.0,0.524532,0.255238,1.0,0.509215,0.251111,1.0,0.449410,0.311150,1.0,0.386627,0.352023,1.0,0.378172,0.365995,1.0,0.371086,0.371325,1.0,0.362093,0.378593,1.0,0.359912,0.359213,1.0,0.351464,0.359213,1.0,0.345196,0.355821,1.0,0.359912,0.354368,1.0,0.350919,0.350492,1.0,0.343833,0.346131,1.0,0.359912,0.351461,1.0,0.352554,0.344678,1.0,0.345469,0.340318,1.0,0.360730,0.348554,1.0,0.354462,0.343708,1.0,0.351192,0.341286,1.0,0.554406,0.264785,1.0,0.568964,0.270206,1.0,0.558214,0.354725,1.0,0.556776,0.420194,1.0,0.557193,0.426540,1.0,0.557016,0.419229,1.0,0.543068,0.419229,1.0,0.558443,0.419865,1.0,0.558625,0.419865,1.0,0.543958,0.428766,1.0,0.549146,0.437031,1.0,0.547359,0.435123,1.0,0.550578,0.435759,1.0,0.547536,0.441163,1.0,0.547536,0.440845,1.0,0.549146,0.445295,1.0,0.545031,0.446885,1.0,0.545568,0.445295,1.0,0.544854,0.444342,1.0,0.484679,0.461000,1.0,0.484679,0.461000,1.0,0.446390,0.659881,1.0,0.429479,0.812606,1.0,0.429479,0.812606,1.0,0.527594,0.471924,1.0,0.527594,0.471924,1.0,0.565875,0.646425,1.0,0.542859,0.798947,1.0,0.542859,0.798947,1.0
|
||||
0.506136,0.466462,1.0,0.531421,0.311139,1.0,0.522993,0.362913,1.0,0.539849,0.259365,1.0,0.539070,0.180287,1.0,0.545979,0.180356,1.0,0.545979,0.180356,1.0,0.532161,0.180219,1.0,0.532161,0.180219,1.0,0.524532,0.255238,1.0,0.509215,0.251111,1.0,0.449410,0.311150,1.0,0.386627,0.352023,1.0,0.378172,0.365995,1.0,0.371086,0.371325,1.0,0.362093,0.378593,1.0,0.359912,0.359213,1.0,0.351464,0.359213,1.0,0.345196,0.355821,1.0,0.359912,0.354368,1.0,0.350919,0.350492,1.0,0.343833,0.346131,1.0,0.359912,0.351461,1.0,0.352554,0.344678,1.0,0.345469,0.340318,1.0,0.360730,0.348554,1.0,0.354462,0.343708,1.0,0.351192,0.341286,1.0,0.554406,0.264785,1.0,0.568964,0.270206,1.0,0.558214,0.354725,1.0,0.556776,0.420194,1.0,0.557193,0.426540,1.0,0.557016,0.419229,1.0,0.543068,0.419229,1.0,0.558443,0.419865,1.0,0.558625,0.419865,1.0,0.543958,0.428766,1.0,0.549146,0.437031,1.0,0.547359,0.435123,1.0,0.550578,0.435759,1.0,0.547536,0.441163,1.0,0.547536,0.440845,1.0,0.549146,0.445295,1.0,0.545031,0.446885,1.0,0.545568,0.445295,1.0,0.544854,0.444342,1.0,0.484679,0.461000,1.0,0.484679,0.461000,1.0,0.446390,0.659881,1.0,0.429479,0.812606,1.0,0.429479,0.812606,1.0,0.527594,0.471924,1.0,0.527594,0.471924,1.0,0.565875,0.646425,1.0,0.542859,0.798947,1.0,0.542859,0.798947,1.0
|
||||
0.504602,0.467828,1.0,0.533315,0.309460,1.0,0.523744,0.362249,1.0,0.542885,0.256670,1.0,0.539141,0.180334,1.0,0.546073,0.180306,1.0,0.546073,0.180306,1.0,0.532208,0.180363,1.0,0.532208,0.180363,1.0,0.527563,0.253890,1.0,0.512241,0.251109,1.0,0.449431,0.311118,1.0,0.386539,0.352055,1.0,0.378888,0.367506,1.0,0.370971,0.375756,1.0,0.361962,0.382066,1.0,0.358959,0.363623,1.0,0.351042,0.363138,1.0,0.345036,0.360711,1.0,0.357048,0.356344,1.0,0.348858,0.355372,1.0,0.342306,0.351975,1.0,0.356775,0.351975,1.0,0.349131,0.348093,1.0,0.342580,0.345666,1.0,0.357048,0.348093,1.0,0.351042,0.343725,1.0,0.345309,0.341298,1.0,0.555961,0.263388,1.0,0.569036,0.270106,1.0,0.558245,0.338364,1.0,0.550604,0.400981,1.0,0.547641,0.413810,1.0,0.545292,0.410415,1.0,0.548964,0.412765,1.0,0.549698,0.413810,1.0,0.546615,0.426869,1.0,0.546464,0.426085,1.0,0.546464,0.431569,1.0,0.547495,0.434965,1.0,0.546318,0.428957,1.0,0.545880,0.432875,1.0,0.549109,0.441233,1.0,0.545438,0.437577,1.0,0.544995,0.437316,1.0,0.548818,0.441756,1.0,0.546615,0.447501,1.0,0.484641,0.461004,1.0,0.484641,0.461004,1.0,0.437118,0.654504,1.0,0.423399,0.817996,1.0,0.423399,0.817996,1.0,0.524562,0.474653,1.0,0.524562,0.474653,1.0,0.569047,0.640941,1.0,0.535297,0.798996,1.0,0.535297,0.798996,1.0
|
||||
0.503836,0.471900,1.0,0.534240,0.312500,1.0,0.524105,0.365633,1.0,0.544375,0.259367,1.0,0.547534,0.184433,1.0,0.547578,0.182958,1.0,0.547578,0.182958,1.0,0.533677,0.183018,1.0,0.533677,0.183018,1.0,0.530601,0.255310,1.0,0.516827,0.251254,1.0,0.449422,0.311183,1.0,0.385070,0.357326,1.0,0.376562,0.371044,1.0,0.366945,0.378586,1.0,0.359026,0.383112,1.0,0.356481,0.367524,1.0,0.347430,0.366519,1.0,0.342339,0.365010,1.0,0.355632,0.359480,1.0,0.347147,0.356966,1.0,0.341208,0.354451,1.0,0.357046,0.354451,1.0,0.349410,0.350931,1.0,0.343753,0.348418,1.0,0.359874,0.352440,1.0,0.352238,0.346909,1.0,0.348561,0.345904,1.0,0.557424,0.263445,1.0,0.570474,0.267524,1.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.484666,0.463741,1.0,0.484666,0.463741,1.0,0.434071,0.646450,1.0,0.417201,0.812594,1.0,0.417201,0.812594,1.0,0.523005,0.480059,1.0,0.523005,0.480059,1.0,0.570521,0.640893,1.0,0.533802,0.804447,1.0,0.533802,0.804447,1.0
|
||||
0.503062,0.474581,1.0,0.534047,0.317224,1.0,0.523718,0.369676,1.0,0.544375,0.264771,1.0,0.548294,0.185770,1.0,0.549057,0.182968,1.0,0.549057,0.182968,1.0,0.533719,0.183105,1.0,0.533719,0.183105,1.0,0.529851,0.259348,1.0,0.515326,0.253924,1.0,0.450963,0.313866,1.0,0.386586,0.360147,1.0,0.379778,0.380956,1.0,0.369022,0.389006,1.0,0.361380,0.393535,1.0,0.359681,0.375923,1.0,0.350341,0.373407,1.0,0.345529,0.372401,1.0,0.357983,0.368879,1.0,0.349492,0.364853,1.0,0.343547,0.361834,1.0,0.359398,0.363846,1.0,0.351473,0.360828,1.0,0.345812,0.356802,1.0,0.361663,0.360828,1.0,0.355153,0.357306,1.0,0.352039,0.355293,1.0,0.557445,0.267458,1.0,0.570516,0.270144,1.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.483139,0.466389,1.0,0.483139,0.466389,1.0,0.434059,0.651752,1.0,0.409554,0.804458,1.0,0.409554,0.804458,1.0,0.522984,0.482774,1.0,0.522984,0.482774,1.0,0.569047,0.640920,1.0,0.533719,0.807152,1.0,0.533719,0.807152,1.0
|
||||
0.503069,0.470546,1.0,0.531795,0.312153,1.0,0.522220,0.364950,1.0,0.541370,0.259355,1.0,0.546708,0.183058,1.0,0.547536,0.172167,1.0,0.547536,0.172167,1.0,0.532245,0.177626,1.0,0.532245,0.177626,1.0,0.525318,0.255294,1.0,0.509266,0.251233,1.0,0.453995,0.316505,1.0,0.397332,0.373809,1.0,0.389794,0.394609,1.0,0.380228,0.407363,1.0,0.369068,0.412087,1.0,0.370131,0.394136,1.0,0.362956,0.390357,1.0,0.358173,0.384217,1.0,0.368536,0.386106,1.0,0.362691,0.387995,1.0,0.364816,0.396026,1.0,0.371725,0.388940,1.0,0.364551,0.387995,1.0,0.364816,0.389885,1.0,0.371991,0.380909,1.0,0.369068,0.385633,1.0,0.365082,0.390830,1.0,0.555195,0.263441,1.0,0.569021,0.267528,1.0,0.558219,0.341069,1.0,0.547536,0.409239,1.0,0.548719,0.421352,1.0,0.540604,0.430294,1.0,0.541094,0.429717,1.0,0.541578,0.430005,1.0,0.540927,0.446157,1.0,0.543526,0.453369,1.0,0.543203,0.444139,1.0,0.542552,0.447312,1.0,0.542068,0.455677,1.0,0.546448,0.432601,1.0,0.542068,0.450773,1.0,0.541255,0.460581,1.0,0.547906,0.434044,1.0,0.545635,0.452792,1.0,0.545958,0.449331,1.0,0.483102,0.463709,1.0,0.483102,0.463709,1.0,0.435698,0.646378,1.0,0.407963,0.807095,1.0,0.407963,0.807095,1.0,0.523036,0.477383,1.0,0.523036,0.477383,1.0,0.568896,0.640908,1.0,0.533661,0.801738,1.0,0.533661,0.801738,1.0
|
||||
0.503791,0.456909,1.0,0.526303,0.302720,1.0,0.518799,0.354116,1.0,0.533807,0.251324,1.0,0.541383,0.168066,1.0,0.545937,0.161130,1.0,0.545937,0.161130,1.0,0.530667,0.161188,1.0,0.530667,0.161188,1.0,0.519941,0.248551,1.0,0.506074,0.245778,1.0,0.458608,0.316475,1.0,0.411030,0.384719,1.0,0.403801,0.418313,1.0,0.401558,0.427173,1.0,0.388352,0.426287,1.0,0.390594,0.424072,1.0,0.378384,0.416541,1.0,0.378384,0.417427,1.0,0.386109,0.417427,1.0,0.382371,0.422300,1.0,0.375145,0.421857,1.0,0.390843,0.418313,1.0,0.383617,0.425401,1.0,0.382122,0.424515,1.0,0.392090,0.425844,1.0,0.389847,0.428944,1.0,0.382371,0.435590,1.0,0.551375,0.259397,1.0,0.568943,0.267469,1.0,0.556693,0.360178,1.0,0.556698,0.409294,1.0,0.552766,0.396505,1.0,0.545495,0.409431,1.0,0.541370,0.422706,1.0,0.550604,0.425152,1.0,0.545104,0.435982,1.0,0.543333,0.444716,1.0,0.554536,0.428645,1.0,0.550016,0.444716,1.0,0.548052,0.455196,1.0,0.558661,0.429344,1.0,0.556307,0.444367,1.0,0.555714,0.452402,1.0,0.562396,0.428995,1.0,0.563578,0.435632,1.0,0.564167,0.439476,1.0,0.483072,0.447371,1.0,0.483072,0.447371,1.0,0.444835,0.640779,1.0,0.409599,0.801650,1.0,0.409599,0.801650,1.0,0.524510,0.466446,1.0,0.524510,0.466446,1.0,0.558276,0.640760,1.0,0.532219,0.804445,1.0,0.532219,0.804445,1.0
|
||||
0.503791,0.456909,1.0,0.526303,0.302720,1.0,0.518799,0.354116,1.0,0.533807,0.251324,1.0,0.541383,0.168066,1.0,0.545937,0.161130,1.0,0.545937,0.161130,1.0,0.530667,0.161188,1.0,0.530667,0.161188,1.0,0.519941,0.248551,1.0,0.506074,0.245778,1.0,0.458608,0.316475,1.0,0.411030,0.384719,1.0,0.403801,0.418313,1.0,0.401558,0.427173,1.0,0.388352,0.426287,1.0,0.390594,0.424072,1.0,0.378384,0.416541,1.0,0.378384,0.417427,1.0,0.386109,0.417427,1.0,0.382371,0.422300,1.0,0.375145,0.421857,1.0,0.390843,0.418313,1.0,0.383617,0.425401,1.0,0.382122,0.424515,1.0,0.392090,0.425844,1.0,0.389847,0.428944,1.0,0.382371,0.435590,1.0,0.551375,0.259397,1.0,0.568943,0.267469,1.0,0.556693,0.360178,1.0,0.556698,0.409294,1.0,0.552766,0.396505,1.0,0.545495,0.409431,1.0,0.541370,0.422706,1.0,0.550604,0.425152,1.0,0.545104,0.435982,1.0,0.543333,0.444716,1.0,0.554536,0.428645,1.0,0.550016,0.444716,1.0,0.548052,0.455196,1.0,0.558661,0.429344,1.0,0.556307,0.444367,1.0,0.555714,0.452402,1.0,0.562396,0.428995,1.0,0.563578,0.435632,1.0,0.564167,0.439476,1.0,0.483072,0.447371,1.0,0.483072,0.447371,1.0,0.444835,0.640779,1.0,0.409599,0.801650,1.0,0.409599,0.801650,1.0,0.524510,0.466446,1.0,0.524510,0.466446,1.0,0.558276,0.640760,1.0,0.532219,0.804445,1.0,0.532219,0.804445,1.0
|
||||
0.505338,0.450103,1.0,0.525432,0.298851,1.0,0.518734,0.349268,1.0,0.532130,0.248433,1.0,0.536748,0.153104,1.0,0.539828,0.142185,1.0,0.539828,0.142185,1.0,0.521521,0.142330,1.0,0.521521,0.142330,1.0,0.513769,0.240301,1.0,0.495407,0.232169,1.0,0.461680,0.319319,1.0,0.430983,0.398394,1.0,0.428783,0.422530,1.0,0.428342,0.439760,1.0,0.428563,0.440544,1.0,0.425478,0.440935,1.0,0.430104,0.440544,1.0,0.403890,0.428012,1.0,0.408957,0.428012,1.0,0.405653,0.431144,1.0,0.403890,0.435844,1.0,0.407855,0.423704,1.0,0.404551,0.435844,1.0,0.404551,0.437411,1.0,0.411380,0.436628,1.0,0.410499,0.440152,1.0,0.405432,0.442502,1.0,0.549773,0.253903,1.0,0.567417,0.259373,1.0,0.555151,0.338508,1.0,0.558328,0.390140,1.0,0.556328,0.403263,1.0,0.551417,0.424944,1.0,0.553276,0.439700,1.0,0.557344,0.427956,1.0,0.555818,0.446927,1.0,0.554635,0.454154,1.0,0.561750,0.428256,1.0,0.561068,0.449336,1.0,0.561240,0.455358,1.0,0.566490,0.426450,1.0,0.567167,0.437592,1.0,0.568521,0.448131,1.0,0.570385,0.423439,1.0,0.572417,0.434280,1.0,0.573438,0.438796,1.0,0.481562,0.441899,1.0,0.481562,0.441899,1.0,0.447918,0.624557,1.0,0.414198,0.793557,1.0,0.414198,0.793557,1.0,0.529115,0.458307,1.0,0.529115,0.458307,1.0,0.547531,0.640809,1.0,0.530677,0.807145,1.0,0.530677,0.807145,1.0
|
||||
0.503074,0.437841,1.0,0.521440,0.285625,1.0,0.515318,0.336363,1.0,0.527562,0.234886,1.0,0.526850,0.140852,1.0,0.532229,0.128526,1.0,0.532229,0.128526,1.0,0.516825,0.133949,1.0,0.516825,0.133949,1.0,0.508413,0.232088,1.0,0.489264,0.229291,1.0,0.470870,0.330218,1.0,0.444844,0.403937,1.0,0.445669,0.421648,1.0,0.445888,0.439162,1.0,0.440415,0.454730,1.0,0.430345,0.441497,1.0,0.429907,0.452006,1.0,0.429907,0.459400,1.0,0.429907,0.432934,1.0,0.427936,0.451227,1.0,0.429688,0.457455,1.0,0.425309,0.441107,1.0,0.426404,0.454341,1.0,0.429907,0.456287,1.0,0.427060,0.438772,1.0,0.426404,0.454341,1.0,0.429907,0.454730,1.0,0.545964,0.241682,1.0,0.564365,0.248479,1.0,0.558286,0.338476,1.0,0.561302,0.382121,1.0,0.557063,0.394861,1.0,0.554255,0.411488,1.0,0.555568,0.425454,1.0,0.560990,0.421796,1.0,0.562484,0.435762,1.0,0.563047,0.444075,1.0,0.566229,0.421131,1.0,0.568099,0.435430,1.0,0.569594,0.445073,1.0,0.570344,0.417141,1.0,0.572401,0.429777,1.0,0.574083,0.439087,1.0,0.573708,0.413483,1.0,0.576703,0.424124,1.0,0.578760,0.429777,1.0,0.478528,0.428326,1.0,0.478528,0.428326,1.0,0.455519,0.610946,1.0,0.423425,0.777200,1.0,0.423425,0.777200,1.0,0.527620,0.447356,1.0,0.527620,0.447356,1.0,0.535292,0.627316,1.0,0.529089,0.804401,1.0,0.529089,0.804401,1.0
|
||||
0.500023,0.429681,1.0,0.516100,0.279385,1.0,0.510741,0.329483,1.0,0.521458,0.229286,1.0,0.520681,0.132606,1.0,0.524557,0.117721,1.0,0.524557,0.117721,1.0,0.509148,0.120270,1.0,0.509148,0.120270,1.0,0.503047,0.226620,1.0,0.484635,0.223955,1.0,0.472485,0.330222,1.0,0.457047,0.417359,1.0,0.455085,0.428610,1.0,0.454414,0.444920,1.0,0.451058,0.457253,1.0,0.442107,0.453673,1.0,0.441883,0.468790,1.0,0.446806,0.481918,1.0,0.439869,0.454469,1.0,0.438303,0.471972,1.0,0.442778,0.482713,1.0,0.438303,0.456059,1.0,0.436289,0.469983,1.0,0.436960,0.480326,1.0,0.437855,0.458446,1.0,0.435618,0.468790,1.0,0.436736,0.475552,1.0,0.539893,0.230718,1.0,0.558328,0.232150,1.0,0.559771,0.316561,1.0,0.558286,0.360260,1.0,0.555703,0.375610,1.0,0.552568,0.390791,1.0,0.554484,0.405351,1.0,0.561453,0.397606,1.0,0.563198,0.410618,1.0,0.564068,0.420222,1.0,0.567031,0.400394,1.0,0.568599,0.412786,1.0,0.569818,0.425179,1.0,0.571214,0.400704,1.0,0.572609,0.410618,1.0,0.574177,0.422391,1.0,0.575224,0.400084,1.0,0.577661,0.407830,1.0,0.578880,0.411547,1.0,0.477020,0.422869,1.0,0.477020,0.422869,1.0,0.458604,0.602695,1.0,0.434083,0.766212,1.0,0.434083,0.766212,1.0,0.523026,0.436493,1.0,0.523026,0.436493,1.0,0.530672,0.632709,1.0,0.524521,0.807107,1.0,0.524521,0.807107,1.0
|
||||
0.499216,0.433741,1.0,0.514685,0.278329,1.0,0.509529,0.330133,1.0,0.519842,0.226525,1.0,0.513814,0.120384,1.0,0.519958,0.112137,1.0,0.519958,0.112137,1.0,0.501566,0.114881,1.0,0.501566,0.114881,1.0,0.500722,0.222524,1.0,0.481603,0.218523,1.0,0.473997,0.332981,1.0,0.457105,0.414741,1.0,0.454384,0.429460,1.0,0.450817,0.442990,1.0,0.448201,0.453982,1.0,0.443206,0.452714,1.0,0.442969,0.468781,1.0,0.444395,0.478082,1.0,0.444633,0.454828,1.0,0.443682,0.470049,1.0,0.445347,0.481042,1.0,0.446298,0.453982,1.0,0.444633,0.467512,1.0,0.447011,0.478082,1.0,0.448677,0.453982,1.0,0.447249,0.464553,1.0,0.447249,0.473431,1.0,0.538272,0.227908,1.0,0.556703,0.229292,1.0,0.558255,0.322039,1.0,0.558286,0.341153,1.0,0.553703,0.339972,1.0,0.549870,0.351886,1.0,0.549104,0.365502,1.0,0.559255,0.360056,1.0,0.562125,0.373331,1.0,0.561932,0.381159,1.0,0.563656,0.359715,1.0,0.565380,0.373670,1.0,0.564234,0.382181,1.0,0.566531,0.358013,1.0,0.568635,0.371629,1.0,0.567104,0.381500,1.0,0.567484,0.358013,1.0,0.571318,0.370948,1.0,0.573042,0.379117,1.0,0.475469,0.425614,1.0,0.475469,0.425614,1.0,0.460210,0.597160,1.0,0.444827,0.755353,1.0,0.444827,0.755353,1.0,0.522964,0.441868,1.0,0.522964,0.441868,1.0,0.521495,0.629969,1.0,0.521422,0.796306,1.0,0.521422,0.796306,1.0
|
||||
0.496937,0.432405,1.0,0.509599,0.276002,1.0,0.505378,0.328136,1.0,0.513820,0.223868,1.0,0.507653,0.119073,1.0,0.512305,0.103994,1.0,0.512305,0.103994,1.0,0.495447,0.109438,1.0,0.495447,0.109438,1.0,0.494661,0.221191,1.0,0.475503,0.218514,1.0,0.477033,0.332924,1.0,0.457046,0.412022,1.0,0.454228,0.430568,1.0,0.451394,0.444421,1.0,0.446435,0.454498,1.0,0.443365,0.445261,1.0,0.439823,0.459956,1.0,0.440059,0.470871,1.0,0.443129,0.446941,1.0,0.440059,0.462055,1.0,0.441948,0.472131,1.0,0.444782,0.446941,1.0,0.441948,0.459536,1.0,0.445491,0.469612,1.0,0.447144,0.447360,1.0,0.445018,0.459956,1.0,0.447380,0.465413,1.0,0.532983,0.225200,1.0,0.552146,0.226531,1.0,0.556698,0.316657,1.0,0.556766,0.324806,1.0,0.548948,0.313554,1.0,0.544839,0.326832,1.0,0.544276,0.341438,1.0,0.546146,0.325172,1.0,0.545958,0.340110,1.0,0.548010,0.340774,1.0,0.551750,0.324508,1.0,0.552120,0.343430,1.0,0.554922,0.350069,1.0,0.557911,0.324177,1.0,0.559776,0.345754,1.0,0.558281,0.352060,1.0,0.563698,0.324508,1.0,0.567807,0.338782,1.0,0.567995,0.344757,1.0,0.472452,0.425615,1.0,0.472452,0.425615,1.0,0.466264,0.591864,1.0,0.449423,0.744469,1.0,0.449423,0.744469,1.0,0.521422,0.439195,1.0,0.521422,0.439195,1.0,0.519909,0.624631,1.0,0.519983,0.796294,1.0,0.519983,0.796294,1.0
|
||||
0.496937,0.432405,1.0,0.509599,0.276002,1.0,0.505378,0.328136,1.0,0.513820,0.223868,1.0,0.507653,0.119073,1.0,0.512305,0.103994,1.0,0.512305,0.103994,1.0,0.495447,0.109438,1.0,0.495447,0.109438,1.0,0.494661,0.221191,1.0,0.475503,0.218514,1.0,0.477033,0.332924,1.0,0.457046,0.412022,1.0,0.454228,0.430568,1.0,0.451394,0.444421,1.0,0.446435,0.454498,1.0,0.443365,0.445261,1.0,0.439823,0.459956,1.0,0.440059,0.470871,1.0,0.443129,0.446941,1.0,0.440059,0.462055,1.0,0.441948,0.472131,1.0,0.444782,0.446941,1.0,0.441948,0.459536,1.0,0.445491,0.469612,1.0,0.447144,0.447360,1.0,0.445018,0.459956,1.0,0.447380,0.465413,1.0,0.532983,0.225200,1.0,0.552146,0.226531,1.0,0.556698,0.316657,1.0,0.556766,0.324806,1.0,0.548948,0.313554,1.0,0.544839,0.326832,1.0,0.544276,0.341438,1.0,0.546146,0.325172,1.0,0.545958,0.340110,1.0,0.548010,0.340774,1.0,0.551750,0.324508,1.0,0.552120,0.343430,1.0,0.554922,0.350069,1.0,0.557911,0.324177,1.0,0.559776,0.345754,1.0,0.558281,0.352060,1.0,0.563698,0.324508,1.0,0.567807,0.338782,1.0,0.567995,0.344757,1.0,0.472452,0.425615,1.0,0.472452,0.425615,1.0,0.466264,0.591864,1.0,0.449423,0.744469,1.0,0.449423,0.744469,1.0,0.521422,0.439195,1.0,0.521422,0.439195,1.0,0.519909,0.624631,1.0,0.519983,0.796294,1.0,0.519983,0.796294,1.0
|
||||
0.496219,0.425656,1.0,0.505930,0.270259,1.0,0.502693,0.322058,1.0,0.509167,0.218460,1.0,0.502303,0.120364,1.0,0.509167,0.101405,1.0,0.509167,0.101405,1.0,0.492304,0.106790,1.0,0.492304,0.106790,1.0,0.490800,0.221156,1.0,0.472433,0.223852,1.0,0.475481,0.330159,1.0,0.452485,0.411960,1.0,0.452805,0.427631,1.0,0.451486,0.443250,1.0,0.449290,0.455746,1.0,0.441822,0.443641,1.0,0.438088,0.456137,1.0,0.437209,0.468242,1.0,0.441603,0.444031,1.0,0.440065,0.458870,1.0,0.442261,0.465899,1.0,0.442481,0.443641,1.0,0.442481,0.456918,1.0,0.445776,0.461994,1.0,0.445117,0.442860,1.0,0.445556,0.455746,1.0,0.447533,0.460822,1.0,0.527573,0.215750,1.0,0.545979,0.213040,1.0,0.552120,0.346535,1.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.472456,0.422931,1.0,0.472456,0.422931,1.0,0.467797,0.591852,1.0,0.458532,0.747213,1.0,0.458532,0.747213,1.0,0.519982,0.428382,1.0,0.519982,0.428382,1.0,0.519917,0.624606,1.0,0.521437,0.796279,1.0,0.521437,0.796279,1.0
|
||||
0.494666,0.424191,1.0,0.503287,0.267846,1.0,0.500414,0.319961,1.0,0.506161,0.215731,1.0,0.499189,0.120356,1.0,0.506108,0.104046,1.0,0.506108,0.104046,1.0,0.486179,0.109439,1.0,0.486179,0.109439,1.0,0.489263,0.219823,1.0,0.472365,0.223916,1.0,0.473956,0.330260,1.0,0.449445,0.406555,1.0,0.448820,0.425488,1.0,0.445528,0.442659,1.0,0.443552,0.454757,1.0,0.437185,0.446952,1.0,0.435868,0.462172,1.0,0.435429,0.470757,1.0,0.436527,0.447343,1.0,0.434990,0.462562,1.0,0.435649,0.471148,1.0,0.436746,0.445781,1.0,0.436307,0.459831,1.0,0.437405,0.467636,1.0,0.438722,0.445391,1.0,0.438064,0.457489,1.0,0.440040,0.461781,1.0,0.523755,0.212992,1.0,0.541349,0.210253,1.0,0.545953,0.341074,1.0,0.547505,0.291974,1.0,0.549917,0.249324,1.0,0.540177,0.257019,1.0,0.537203,0.272406,1.0,0.545047,0.254133,1.0,0.539906,0.261345,1.0,0.554510,0.273367,1.0,0.551266,0.266155,1.0,0.548562,0.273848,1.0,0.551266,0.282022,1.0,0.551536,0.288273,1.0,0.545859,0.282504,1.0,0.545589,0.282022,1.0,0.551536,0.289235,1.0,0.545047,0.287312,1.0,0.545047,0.292601,1.0,0.470933,0.422834,1.0,0.470933,0.422834,1.0,0.461738,0.597198,1.0,0.458619,0.749831,1.0,0.458619,0.749831,1.0,0.518398,0.425548,1.0,0.518398,0.425548,1.0,0.519968,0.629997,1.0,0.521542,0.796253,1.0,0.521542,0.796253,1.0
|
||||
0.492328,0.424220,1.0,0.499234,0.269927,1.0,0.496932,0.321358,1.0,0.501536,0.218496,1.0,0.492358,0.123148,1.0,0.498494,0.109422,1.0,0.498494,0.109422,1.0,0.483119,0.112164,1.0,0.483119,0.112164,1.0,0.486191,0.222599,1.0,0.470845,0.226701,1.0,0.472483,0.335638,1.0,0.447870,0.403886,1.0,0.445594,0.422010,1.0,0.441996,0.440000,1.0,0.439972,0.452793,1.0,0.434801,0.446796,1.0,0.433002,0.460788,1.0,0.431652,0.469583,1.0,0.435026,0.445197,1.0,0.433227,0.459589,1.0,0.433227,0.468384,1.0,0.436824,0.443997,1.0,0.434801,0.456391,1.0,0.436149,0.462787,1.0,0.439523,0.444397,1.0,0.437274,0.454792,1.0,0.437949,0.459989,1.0,0.518414,0.213069,1.0,0.535292,0.207641,1.0,0.542870,0.330185,1.0,0.544375,0.270224,1.0,0.538000,0.228277,1.0,0.536984,0.233252,1.0,0.532401,0.247271,1.0,0.552245,0.254056,1.0,0.538000,0.233252,1.0,0.548432,0.249532,1.0,0.546141,0.265814,1.0,0.544870,0.262648,1.0,0.540292,0.269432,1.0,0.545885,0.264457,1.0,0.543344,0.273050,1.0,0.541307,0.272145,1.0,0.546901,0.266719,1.0,0.533677,0.273955,1.0,0.533927,0.269884,1.0,0.470852,0.422862,1.0,0.470852,0.422862,1.0,0.458647,0.602806,1.0,0.458535,0.752660,1.0,0.458535,0.752660,1.0,0.513805,0.425579,1.0,0.513805,0.425579,1.0,0.519977,0.638215,1.0,0.523021,0.801701,1.0,0.523021,0.801701,1.0
|
||||
0.490047,0.431041,1.0,0.495254,0.275741,1.0,0.493519,0.327508,1.0,0.496990,0.223975,1.0,0.490076,0.132626,1.0,0.496903,0.117569,1.0,0.496903,0.117569,1.0,0.480087,0.117619,1.0,0.480087,0.117619,1.0,0.483897,0.226673,1.0,0.470804,0.229371,1.0,0.473967,0.338363,1.0,0.446351,0.403700,1.0,0.443093,0.420857,1.0,0.440165,0.435671,1.0,0.437687,0.448482,1.0,0.430931,0.442077,1.0,0.427779,0.457691,1.0,0.425752,0.468501,1.0,0.430706,0.443679,1.0,0.427554,0.459293,1.0,0.426653,0.468501,1.0,0.432057,0.445280,1.0,0.429355,0.457691,1.0,0.430481,0.464898,1.0,0.434309,0.443679,1.0,0.431157,0.458092,1.0,0.432733,0.461694,1.0,0.514560,0.217196,1.0,0.532130,0.210418,1.0,0.533776,0.319430,1.0,0.536771,0.264745,1.0,0.534604,0.213895,1.0,0.529880,0.218696,1.0,0.525828,0.233098,1.0,0.541354,0.230697,1.0,0.546531,0.243899,1.0,0.543833,0.247500,1.0,0.542484,0.245099,1.0,0.544057,0.246300,1.0,0.537307,0.248300,1.0,0.537083,0.249900,1.0,0.535057,0.247900,1.0,0.534156,0.247500,1.0,0.536182,0.247500,1.0,0.526953,0.248700,1.0,0.527630,0.249100,1.0,0.469351,0.428337,1.0,0.469351,0.428337,1.0,0.455561,0.616414,1.0,0.447887,0.769009,1.0,0.447887,0.769009,1.0,0.510743,0.433744,1.0,0.510743,0.433744,1.0,0.519869,0.643595,1.0,0.522990,0.801653,1.0,0.522990,0.801653,1.0
|
||||
0.486967,0.437841,1.0,0.493307,0.281488,1.0,0.491193,0.333606,1.0,0.495420,0.229370,1.0,0.487755,0.140866,1.0,0.493897,0.123069,1.0,0.493897,0.123069,1.0,0.473970,0.125799,1.0,0.473970,0.125799,1.0,0.481607,0.236162,1.0,0.467793,0.242955,1.0,0.473909,0.338385,1.0,0.446302,0.401113,1.0,0.441354,0.420052,1.0,0.439570,0.434145,1.0,0.436994,0.447887,1.0,0.429859,0.441193,1.0,0.426886,0.457401,1.0,0.425102,0.468676,1.0,0.429660,0.442602,1.0,0.426886,0.459515,1.0,0.425300,0.469028,1.0,0.430652,0.442955,1.0,0.429462,0.457048,1.0,0.427084,0.466209,1.0,0.433228,0.444011,1.0,0.430057,0.458106,1.0,0.430453,0.460924,1.0,0.509194,0.225304,1.0,0.522969,0.221237,1.0,0.532182,0.316541,1.0,0.532229,0.245738,1.0,0.528250,0.204636,1.0,0.521469,0.212795,1.0,0.518873,0.229469,1.0,0.529849,0.226630,1.0,0.528052,0.242594,1.0,0.525057,0.246142,1.0,0.534635,0.229113,1.0,0.533641,0.242594,1.0,0.529849,0.242594,1.0,0.538031,0.224502,1.0,0.538427,0.238692,1.0,0.533839,0.239401,1.0,0.541021,0.221309,1.0,0.542620,0.231596,1.0,0.539625,0.232306,1.0,0.464762,0.433779,1.0,0.464762,0.433779,1.0,0.449467,0.632681,1.0,0.444823,0.771656,1.0,0.444823,0.771656,1.0,0.509171,0.441904,1.0,0.509171,0.441904,1.0,0.516867,0.646427,1.0,0.521469,0.799012,1.0,0.521469,0.799012,1.0
|
||||
0.486967,0.437841,1.0,0.493307,0.281488,1.0,0.491193,0.333606,1.0,0.495420,0.229370,1.0,0.487755,0.140866,1.0,0.493897,0.123069,1.0,0.493897,0.123069,1.0,0.473970,0.125799,1.0,0.473970,0.125799,1.0,0.481607,0.236162,1.0,0.467793,0.242955,1.0,0.473909,0.338385,1.0,0.446302,0.401113,1.0,0.441354,0.420052,1.0,0.439570,0.434145,1.0,0.436994,0.447887,1.0,0.429859,0.441193,1.0,0.426886,0.457401,1.0,0.425102,0.468676,1.0,0.429660,0.442602,1.0,0.426886,0.459515,1.0,0.425300,0.469028,1.0,0.430652,0.442955,1.0,0.429462,0.457048,1.0,0.427084,0.466209,1.0,0.433228,0.444011,1.0,0.430057,0.458106,1.0,0.430453,0.460924,1.0,0.509194,0.225304,1.0,0.522969,0.221237,1.0,0.532182,0.316541,1.0,0.532229,0.245738,1.0,0.528250,0.204636,1.0,0.521469,0.212795,1.0,0.518873,0.229469,1.0,0.529849,0.226630,1.0,0.528052,0.242594,1.0,0.525057,0.246142,1.0,0.534635,0.229113,1.0,0.533641,0.242594,1.0,0.529849,0.242594,1.0,0.538031,0.224502,1.0,0.538427,0.238692,1.0,0.533839,0.239401,1.0,0.541021,0.221309,1.0,0.542620,0.231596,1.0,0.539625,0.232306,1.0,0.464762,0.433779,1.0,0.464762,0.433779,1.0,0.449467,0.632681,1.0,0.444823,0.771656,1.0,0.444823,0.771656,1.0,0.509171,0.441904,1.0,0.509171,0.441904,1.0,0.516867,0.646427,1.0,0.521469,0.799012,1.0,0.521469,0.799012,1.0
|
||||
0.483930,0.446014,1.0,0.489084,0.289679,1.0,0.487366,0.341790,1.0,0.490802,0.237567,1.0,0.484657,0.147681,1.0,0.490819,0.134044,1.0,0.490819,0.134044,1.0,0.472402,0.136701,1.0,0.472402,0.136701,1.0,0.475517,0.244361,1.0,0.460231,0.251156,1.0,0.470794,0.343857,1.0,0.446351,0.403765,1.0,0.446872,0.419370,1.0,0.446872,0.432903,1.0,0.443945,0.441230,1.0,0.434576,0.438107,1.0,0.432624,0.452681,1.0,0.431258,0.461702,1.0,0.434576,0.440883,1.0,0.431648,0.457192,1.0,0.430868,0.467254,1.0,0.435747,0.444006,1.0,0.432820,0.457885,1.0,0.431454,0.466213,1.0,0.438285,0.444700,1.0,0.434186,0.455804,1.0,0.432820,0.462743,1.0,0.505347,0.232087,1.0,0.519891,0.226607,1.0,0.532229,0.313920,1.0,0.532245,0.232142,1.0,0.526250,0.209488,1.0,0.514622,0.217155,1.0,0.511997,0.230821,1.0,0.517997,0.215488,1.0,0.519872,0.239821,1.0,0.517810,0.240155,1.0,0.522125,0.216488,1.0,0.524938,0.233155,1.0,0.525500,0.233155,1.0,0.527938,0.217488,1.0,0.530375,0.232488,1.0,0.530000,0.231155,1.0,0.533188,0.218488,1.0,0.534875,0.227821,1.0,0.534312,0.228488,1.0,0.460204,0.444627,1.0,0.460204,0.444627,1.0,0.447960,0.640891,1.0,0.441730,0.782619,1.0,0.441730,0.782619,1.0,0.507657,0.447402,1.0,0.507657,0.447402,1.0,0.509263,0.651796,1.0,0.521443,0.812536,1.0,0.521443,0.812536,1.0
|
||||
0.482373,0.450147,1.0,0.485225,0.296857,1.0,0.484275,0.347954,1.0,0.486176,0.245760,1.0,0.479334,0.153102,1.0,0.486242,0.136760,1.0,0.486242,0.136760,1.0,0.470878,0.139341,1.0,0.470878,0.139341,1.0,0.470873,0.253906,1.0,0.455570,0.262051,1.0,0.452495,0.346544,1.0,0.447937,0.398277,1.0,0.451500,0.401681,1.0,0.455518,0.407272,1.0,0.454470,0.416901,1.0,0.444161,0.416280,1.0,0.443637,0.426531,1.0,0.443987,0.433985,1.0,0.442764,0.422181,1.0,0.443637,0.434606,1.0,0.448879,0.438333,1.0,0.442939,0.425909,1.0,0.444511,0.437402,1.0,0.449054,0.437712,1.0,0.444336,0.426841,1.0,0.447306,0.436469,1.0,0.449403,0.436781,1.0,0.503048,0.236258,1.0,0.519921,0.226756,1.0,0.533745,0.316743,1.0,0.529151,0.234852,1.0,0.518009,0.215015,1.0,0.510117,0.227334,1.0,0.506459,0.236573,1.0,0.512811,0.217752,1.0,0.507230,0.228019,1.0,0.504920,0.239311,1.0,0.517431,0.218437,1.0,0.513004,0.240338,1.0,0.510694,0.247181,1.0,0.521667,0.222201,1.0,0.518394,0.242733,1.0,0.516661,0.246497,1.0,0.526286,0.226307,1.0,0.523974,0.240680,1.0,0.523016,0.242048,1.0,0.458644,0.447471,1.0,0.458644,0.447471,1.0,0.447890,0.643682,1.0,0.446283,0.785292,1.0,0.446283,0.785292,1.0,0.506103,0.452823,1.0,0.506103,0.452823,1.0,0.509150,0.657213,1.0,0.521453,0.812524,1.0,0.521453,0.812524,1.0
|
||||
0.480836,0.446027,1.0,0.483658,0.295774,1.0,0.482717,0.345858,1.0,0.484598,0.245690,1.0,0.477800,0.151683,1.0,0.484723,0.139295,1.0,0.484723,0.139295,1.0,0.470806,0.136767,1.0,0.470806,0.136767,1.0,0.465498,0.255236,1.0,0.446397,0.264781,1.0,0.443303,0.376538,1.0,0.449465,0.382135,1.0,0.450113,0.378235,1.0,0.456116,0.374541,1.0,0.454731,0.405737,1.0,0.457040,0.374952,1.0,0.453345,0.405327,1.0,0.461427,0.398759,1.0,0.456578,0.375772,1.0,0.456116,0.398759,1.0,0.460965,0.395065,1.0,0.461196,0.377415,1.0,0.459118,0.398348,1.0,0.461427,0.395886,1.0,0.464197,0.388907,1.0,0.466275,0.392192,1.0,0.465121,0.395475,1.0,0.503015,0.236151,1.0,0.521432,0.226612,1.0,0.535302,0.332941,1.0,0.519933,0.267469,1.0,0.510358,0.251068,1.0,0.504276,0.246262,1.0,0.501573,0.256673,1.0,0.506078,0.237454,1.0,0.503150,0.247464,1.0,0.501573,0.260277,1.0,0.511934,0.236653,1.0,0.509006,0.257074,1.0,0.506979,0.263881,1.0,0.516214,0.238254,1.0,0.514637,0.257874,1.0,0.513736,0.263080,1.0,0.521396,0.243860,1.0,0.521620,0.249866,1.0,0.520043,0.256673,1.0,0.457098,0.447348,1.0,0.457098,0.447348,1.0,0.447811,0.643634,1.0,0.446318,0.785334,1.0,0.446318,0.785334,1.0,0.504575,0.444706,1.0,0.504575,0.444706,1.0,0.507713,0.646369,1.0,0.521453,0.807112,1.0,0.521453,0.807112,1.0
|
||||
0.478517,0.445972,1.0,0.478531,0.295778,1.0,0.478526,0.345843,1.0,0.478536,0.245714,1.0,0.476992,0.147639,1.0,0.484718,0.139314,1.0,0.484718,0.139314,1.0,0.470813,0.136668,1.0,0.470813,0.136668,1.0,0.460891,0.249837,1.0,0.443246,0.253959,1.0,0.434104,0.381881,1.0,0.449472,0.357543,1.0,0.474234,0.351877,1.0,0.457204,0.348092,1.0,0.456938,0.346673,1.0,0.447092,0.378368,1.0,0.461461,0.370799,1.0,0.465985,0.369853,1.0,0.461461,0.364176,1.0,0.459599,0.369853,1.0,0.460397,0.347146,1.0,0.461728,0.356607,1.0,0.459333,0.369380,1.0,0.461728,0.347619,1.0,0.445496,0.382625,1.0,0.458268,0.369853,1.0,0.465719,0.370799,1.0,0.496924,0.237517,1.0,0.515312,0.229320,1.0,0.533781,0.332900,1.0,0.519934,0.275713,1.0,0.515140,0.261624,1.0,0.512001,0.258435,1.0,0.501686,0.274380,1.0,0.510656,0.254848,1.0,0.501911,0.263618,1.0,0.501463,0.280359,1.0,0.512225,0.270793,1.0,0.507292,0.276373,1.0,0.506171,0.283548,1.0,0.515140,0.274380,1.0,0.511104,0.279960,1.0,0.508637,0.284345,1.0,0.516485,0.277569,1.0,0.514019,0.280757,1.0,0.510880,0.283548,1.0,0.455514,0.447363,1.0,0.455514,0.447363,1.0,0.446321,0.640962,1.0,0.446260,0.788080,1.0,0.446260,0.788080,1.0,0.501520,0.444581,1.0,0.501520,0.444581,1.0,0.509179,0.643502,1.0,0.521474,0.801656,1.0,0.521474,0.801656,1.0
|
||||
0.477777,0.439237,1.0,0.473800,0.290005,1.0,0.475126,0.339749,1.0,0.472474,0.240261,1.0,0.476992,0.148914,1.0,0.486211,0.139412,1.0,0.486211,0.139412,1.0,0.472357,0.136626,1.0,0.472357,0.136626,1.0,0.454798,0.245672,1.0,0.437122,0.251082,1.0,0.426443,0.376590,1.0,0.457020,0.330230,1.0,0.459515,0.313068,1.0,0.465802,0.302823,1.0,0.470254,0.296769,1.0,0.462920,0.306082,1.0,0.461872,0.308877,1.0,0.464230,0.308877,1.0,0.462396,0.325641,1.0,0.462396,0.323312,1.0,0.467373,0.316793,1.0,0.471302,0.327503,1.0,0.463706,0.325641,1.0,0.470254,0.316793,1.0,0.472873,0.327969,1.0,0.472873,0.326572,1.0,0.473921,0.326106,1.0,0.490851,0.234774,1.0,0.509228,0.229286,1.0,0.532198,0.332984,1.0,0.521406,0.294712,1.0,0.508189,0.269817,1.0,0.502439,0.281265,1.0,0.501289,0.293939,1.0,0.508648,0.298845,1.0,0.507958,0.295983,1.0,0.509568,0.291894,1.0,0.513248,0.293121,1.0,0.511638,0.298028,1.0,0.514858,0.289442,1.0,0.517388,0.283718,1.0,0.517158,0.297619,1.0,0.516468,0.290259,1.0,0.520147,0.286989,1.0,0.519687,0.296801,1.0,0.518997,0.284535,1.0,0.453996,0.441982,1.0,0.453996,0.441982,1.0,0.446256,0.640914,1.0,0.444832,0.787997,1.0,0.444832,0.787997,1.0,0.501559,0.436491,1.0,0.501559,0.436491,1.0,0.515336,0.635371,1.0,0.521521,0.799041,1.0,0.521521,0.799041,1.0
|
||||
0.477777,0.439237,1.0,0.473800,0.290005,1.0,0.475126,0.339749,1.0,0.472474,0.240261,1.0,0.476992,0.148914,1.0,0.486211,0.139412,1.0,0.486211,0.139412,1.0,0.472357,0.136626,1.0,0.472357,0.136626,1.0,0.454798,0.245672,1.0,0.437122,0.251082,1.0,0.426443,0.376590,1.0,0.457020,0.330230,1.0,0.459515,0.313068,1.0,0.465802,0.302823,1.0,0.470254,0.296769,1.0,0.462920,0.306082,1.0,0.461872,0.308877,1.0,0.464230,0.308877,1.0,0.462396,0.325641,1.0,0.462396,0.323312,1.0,0.467373,0.316793,1.0,0.471302,0.327503,1.0,0.463706,0.325641,1.0,0.470254,0.316793,1.0,0.472873,0.327969,1.0,0.472873,0.326572,1.0,0.473921,0.326106,1.0,0.490851,0.234774,1.0,0.509228,0.229286,1.0,0.532198,0.332984,1.0,0.521406,0.294712,1.0,0.508189,0.269817,1.0,0.502439,0.281265,1.0,0.501289,0.293939,1.0,0.508648,0.298845,1.0,0.507958,0.295983,1.0,0.509568,0.291894,1.0,0.513248,0.293121,1.0,0.511638,0.298028,1.0,0.514858,0.289442,1.0,0.517388,0.283718,1.0,0.517158,0.297619,1.0,0.516468,0.290259,1.0,0.520147,0.286989,1.0,0.519687,0.296801,1.0,0.518997,0.284535,1.0,0.453996,0.441982,1.0,0.453996,0.441982,1.0,0.446256,0.640914,1.0,0.444832,0.787997,1.0,0.444832,0.787997,1.0,0.501559,0.436491,1.0,0.501559,0.436491,1.0,0.515336,0.635371,1.0,0.521521,0.799041,1.0,0.521521,0.799041,1.0
|
||||
0.476264,0.440532,1.0,0.473336,0.284266,1.0,0.474312,0.336355,1.0,0.472360,0.232178,1.0,0.477778,0.147599,1.0,0.490803,0.139550,1.0,0.490803,0.139550,1.0,0.473996,0.136711,1.0,0.473996,0.136711,1.0,0.454023,0.237608,1.0,0.435686,0.243039,1.0,0.424907,0.360253,1.0,0.458557,0.300305,1.0,0.460593,0.288800,1.0,0.466966,0.275729,1.0,0.470642,0.265271,1.0,0.473828,0.280086,1.0,0.480200,0.278779,1.0,0.476279,0.282264,1.0,0.476279,0.288800,1.0,0.481916,0.285750,1.0,0.478485,0.288800,1.0,0.477749,0.299693,1.0,0.481671,0.293156,1.0,0.480200,0.296207,1.0,0.477749,0.309714,1.0,0.481671,0.304485,1.0,0.480200,0.305793,1.0,0.489974,0.230739,1.0,0.507587,0.229301,1.0,0.530677,0.335689,1.0,0.521417,0.297544,1.0,0.506595,0.274498,1.0,0.502595,0.299598,1.0,0.504007,0.306709,1.0,0.510831,0.295415,1.0,0.508713,0.309219,1.0,0.508243,0.319678,1.0,0.516714,0.293742,1.0,0.514125,0.306291,1.0,0.512243,0.306709,1.0,0.520243,0.289558,1.0,0.519538,0.302107,1.0,0.516008,0.303363,1.0,0.523302,0.280773,1.0,0.521891,0.299598,1.0,0.520008,0.299598,1.0,0.452504,0.444605,1.0,0.452504,0.444605,1.0,0.446308,0.640896,1.0,0.444796,0.785288,1.0,0.444796,0.785288,1.0,0.500025,0.436460,1.0,0.500025,0.436460,1.0,0.521417,0.624619,1.0,0.521453,0.793575,1.0,0.521453,0.793575,1.0
|
||||
0.479293,0.439174,1.0,0.472936,0.281928,1.0,0.475055,0.334343,1.0,0.470817,0.229512,1.0,0.488464,0.140799,1.0,0.495339,0.142233,1.0,0.495339,0.142233,1.0,0.481588,0.139364,1.0,0.481588,0.139364,1.0,0.453202,0.230838,1.0,0.435588,0.232164,1.0,0.426393,0.349318,1.0,0.458607,0.278486,1.0,0.464111,0.263356,1.0,0.471190,0.247734,1.0,0.474852,0.236452,1.0,0.479001,0.253376,1.0,0.488765,0.254244,1.0,0.487301,0.254244,1.0,0.477536,0.263356,1.0,0.485592,0.266828,1.0,0.483639,0.265960,1.0,0.474608,0.271601,1.0,0.482662,0.276808,1.0,0.481198,0.275072,1.0,0.472899,0.280714,1.0,0.479245,0.284619,1.0,0.478513,0.284185,1.0,0.486171,0.229474,1.0,0.501526,0.229436,1.0,0.530656,0.335728,1.0,0.519940,0.302971,1.0,0.507621,0.277415,1.0,0.503961,0.290861,1.0,0.504937,0.306042,1.0,0.512989,0.296933,1.0,0.510305,0.310379,1.0,0.509329,0.314282,1.0,0.515672,0.296066,1.0,0.515917,0.308644,1.0,0.513965,0.309078,1.0,0.519332,0.293030,1.0,0.520308,0.306475,1.0,0.518601,0.305174,1.0,0.521286,0.289994,1.0,0.524214,0.299969,1.0,0.523724,0.303439,1.0,0.457040,0.441885,1.0,0.457040,0.441885,1.0,0.447863,0.638154,1.0,0.444793,0.785365,1.0,0.444793,0.785365,1.0,0.501546,0.436463,1.0,0.501546,0.436463,1.0,0.524521,0.624547,1.0,0.519928,0.785326,1.0,0.519928,0.785326,1.0
|
||||
0.480818,0.439212,1.0,0.471070,0.281813,1.0,0.474319,0.334279,1.0,0.467821,0.229346,1.0,0.489308,0.144918,1.0,0.495454,0.147651,1.0,0.495454,0.147651,1.0,0.483162,0.142185,1.0,0.483162,0.142185,1.0,0.451716,0.229356,1.0,0.435611,0.229366,1.0,0.431000,0.335644,1.0,0.461683,0.267450,1.0,0.470049,0.243381,1.0,0.477308,0.230086,1.0,0.479947,0.217964,1.0,0.483246,0.235952,1.0,0.492045,0.239081,1.0,0.494024,0.240254,1.0,0.481267,0.244945,1.0,0.489845,0.252767,1.0,0.489405,0.253940,1.0,0.477968,0.252767,1.0,0.485666,0.260587,1.0,0.486326,0.259414,1.0,0.475548,0.261760,1.0,0.481267,0.265280,1.0,0.483027,0.264889,1.0,0.482380,0.229390,1.0,0.496940,0.229433,1.0,0.521536,0.335721,1.0,0.519991,0.297608,1.0,0.510468,0.278285,1.0,0.505250,0.290933,1.0,0.505488,0.303582,1.0,0.506673,0.284188,1.0,0.505250,0.291356,1.0,0.505961,0.303161,1.0,0.514974,0.306956,1.0,0.514262,0.295150,1.0,0.515211,0.305691,1.0,0.518531,0.305691,1.0,0.518294,0.293464,1.0,0.519006,0.299788,1.0,0.522802,0.304847,1.0,0.522563,0.291356,1.0,0.522328,0.296836,1.0,0.458554,0.439230,1.0,0.458554,0.439230,1.0,0.449471,0.640853,1.0,0.444836,0.785355,1.0,0.444836,0.785355,1.0,0.503082,0.439194,1.0,0.503082,0.439194,1.0,0.530672,0.621756,1.0,0.515347,0.771716,1.0,0.515347,0.771716,1.0
|
||||
0.483124,0.443279,1.0,0.471633,0.282939,1.0,0.475463,0.336385,1.0,0.467802,0.229492,1.0,0.491599,0.153096,1.0,0.496997,0.158573,1.0,0.496997,0.158573,1.0,0.486201,0.147619,1.0,0.486201,0.147619,1.0,0.451738,0.229409,1.0,0.435674,0.229327,1.0,0.434084,0.324756,1.0,0.466288,0.248552,1.0,0.471889,0.234282,1.0,0.481068,0.220295,1.0,0.486531,0.206309,1.0,0.485876,0.223015,1.0,0.496584,0.229231,1.0,0.495054,0.231174,1.0,0.484564,0.231951,1.0,0.493524,0.246715,1.0,0.488279,0.249045,1.0,0.481068,0.238944,1.0,0.488279,0.252931,1.0,0.484127,0.253319,1.0,0.478445,0.246715,1.0,0.483690,0.256816,1.0,0.480412,0.258369,1.0,0.481615,0.232187,1.0,0.495428,0.234882,1.0,0.518344,0.341106,1.0,0.519893,0.311158,1.0,0.508432,0.279991,1.0,0.506319,0.291677,1.0,0.506319,0.305449,1.0,0.511953,0.312544,1.0,0.514301,0.299607,1.0,0.510310,0.315049,1.0,0.515944,0.311710,1.0,0.516883,0.300024,1.0,0.515944,0.308371,1.0,0.519466,0.309623,1.0,0.520639,0.296685,1.0,0.519700,0.305032,1.0,0.522984,0.308788,1.0,0.523224,0.296685,1.0,0.522750,0.301694,1.0,0.460091,0.444649,1.0,0.460091,0.444649,1.0,0.457102,0.640907,1.0,0.446276,0.788056,1.0,0.446276,0.788056,1.0,0.506157,0.441909,1.0,0.506157,0.441909,1.0,0.532120,0.621872,1.0,0.510770,0.755306,1.0,0.510770,0.755306,1.0
|
||||
0.484655,0.440551,1.0,0.472023,0.284188,1.0,0.476234,0.336309,1.0,0.467812,0.232067,1.0,0.494634,0.162509,1.0,0.498492,0.163921,1.0,0.498492,0.163921,1.0,0.490777,0.161096,1.0,0.490777,0.161096,1.0,0.452499,0.230735,1.0,0.437185,0.229404,1.0,0.435649,0.316696,1.0,0.470871,0.245755,1.0,0.476636,0.227358,1.0,0.489870,0.219259,1.0,0.495293,0.221573,1.0,0.489436,0.216173,1.0,0.495510,0.217717,1.0,0.497246,0.220802,1.0,0.488134,0.224273,1.0,0.495510,0.242015,1.0,0.492256,0.242015,1.0,0.483361,0.230830,1.0,0.490955,0.246257,1.0,0.488785,0.245486,1.0,0.479673,0.237386,1.0,0.486398,0.248956,1.0,0.485531,0.248571,1.0,0.481579,0.236163,1.0,0.495346,0.240259,1.0,0.513824,0.354659,1.0,0.519877,0.313904,1.0,0.510331,0.281243,1.0,0.507384,0.292594,1.0,0.506156,0.307440,1.0,0.508612,0.284299,1.0,0.506647,0.296088,1.0,0.507139,0.309187,1.0,0.510086,0.282989,1.0,0.516471,0.298707,1.0,0.516717,0.307877,1.0,0.517945,0.294778,1.0,0.518928,0.300891,1.0,0.518928,0.311370,1.0,0.521630,0.298271,1.0,0.523594,0.301764,1.0,0.523349,0.311370,1.0,0.461684,0.444604,1.0,0.461684,0.444604,1.0,0.460149,0.643591,1.0,0.446400,0.788044,1.0,0.446400,0.788044,1.0,0.507627,0.436498,1.0,0.507627,0.436498,1.0,0.532182,0.629976,1.0,0.512287,0.747150,1.0,0.512287,0.747150,1.0
|
||||
0.484655,0.440551,1.0,0.472023,0.284188,1.0,0.476234,0.336309,1.0,0.467812,0.232067,1.0,0.494634,0.162509,1.0,0.498492,0.163921,1.0,0.498492,0.163921,1.0,0.490777,0.161096,1.0,0.490777,0.161096,1.0,0.452499,0.230735,1.0,0.437185,0.229404,1.0,0.435649,0.316696,1.0,0.470871,0.245755,1.0,0.476636,0.227358,1.0,0.489870,0.219259,1.0,0.495293,0.221573,1.0,0.489436,0.216173,1.0,0.495510,0.217717,1.0,0.497246,0.220802,1.0,0.488134,0.224273,1.0,0.495510,0.242015,1.0,0.492256,0.242015,1.0,0.483361,0.230830,1.0,0.490955,0.246257,1.0,0.488785,0.245486,1.0,0.479673,0.237386,1.0,0.486398,0.248956,1.0,0.485531,0.248571,1.0,0.481579,0.236163,1.0,0.495346,0.240259,1.0,0.513824,0.354659,1.0,0.519877,0.313904,1.0,0.510331,0.281243,1.0,0.507384,0.292594,1.0,0.506156,0.307440,1.0,0.508612,0.284299,1.0,0.506647,0.296088,1.0,0.507139,0.309187,1.0,0.510086,0.282989,1.0,0.516471,0.298707,1.0,0.516717,0.307877,1.0,0.517945,0.294778,1.0,0.518928,0.300891,1.0,0.518928,0.311370,1.0,0.521630,0.298271,1.0,0.523594,0.301764,1.0,0.523349,0.311370,1.0,0.461684,0.444604,1.0,0.461684,0.444604,1.0,0.460149,0.643591,1.0,0.446400,0.788044,1.0,0.446400,0.788044,1.0,0.507627,0.436498,1.0,0.507627,0.436498,1.0,0.532182,0.629976,1.0,0.512287,0.747150,1.0,0.512287,0.747150,1.0
|
||||
0.488467,0.443330,1.0,0.474081,0.284994,1.0,0.478876,0.337772,1.0,0.469285,0.232215,1.0,0.498461,0.172159,1.0,0.503059,0.177584,1.0,0.503059,0.177584,1.0,0.493864,0.166733,1.0,0.493864,0.166733,1.0,0.453974,0.230819,1.0,0.438664,0.229424,1.0,0.438700,0.316503,1.0,0.472455,0.245737,1.0,0.480616,0.229570,1.0,0.492742,0.237134,1.0,0.494657,0.223897,1.0,0.492529,0.222385,1.0,0.495720,0.219737,1.0,0.498698,0.223897,1.0,0.489126,0.223897,1.0,0.491466,0.226923,1.0,0.494657,0.239025,1.0,0.484871,0.228057,1.0,0.491466,0.244320,1.0,0.490828,0.246211,1.0,0.481680,0.233731,1.0,0.487636,0.247724,1.0,0.485722,0.247724,1.0,0.482340,0.238978,1.0,0.495395,0.245742,1.0,0.513795,0.362945,1.0,0.519892,0.319336,1.0,0.506336,0.289769,1.0,0.506838,0.300928,1.0,0.506587,0.313873,1.0,0.510102,0.290215,1.0,0.509098,0.303160,1.0,0.507591,0.314766,1.0,0.515124,0.291107,1.0,0.517384,0.307178,1.0,0.516631,0.316106,1.0,0.519393,0.294679,1.0,0.521651,0.307624,1.0,0.520146,0.316998,1.0,0.522906,0.298696,1.0,0.524917,0.308070,1.0,0.524667,0.315213,1.0,0.467768,0.444728,1.0,0.467768,0.444728,1.0,0.467793,0.646377,1.0,0.447881,0.785302,1.0,0.447881,0.785302,1.0,0.509167,0.441932,1.0,0.509167,0.441932,1.0,0.530688,0.643515,1.0,0.518395,0.744468,1.0,0.518395,0.744468,1.0
|
||||
0.490785,0.448712,1.0,0.475841,0.294450,1.0,0.480822,0.345871,1.0,0.470859,0.243029,1.0,0.500775,0.183008,1.0,0.506128,0.185702,1.0,0.506128,0.185702,1.0,0.495422,0.180314,1.0,0.495422,0.180314,1.0,0.457074,0.240286,1.0,0.443290,0.237544,1.0,0.444778,0.319327,1.0,0.473941,0.248351,1.0,0.482153,0.248217,1.0,0.497268,0.228512,1.0,0.502306,0.214897,1.0,0.494245,0.220988,1.0,0.499887,0.200925,1.0,0.500694,0.185519,1.0,0.490013,0.224213,1.0,0.493035,0.231378,1.0,0.495656,0.243201,1.0,0.485781,0.228154,1.0,0.488401,0.233169,1.0,0.491423,0.247142,1.0,0.481549,0.234960,1.0,0.487192,0.248933,1.0,0.487192,0.250007,1.0,0.483149,0.245749,1.0,0.495440,0.248469,1.0,0.515309,0.379119,1.0,0.518418,0.324810,1.0,0.509111,0.292491,1.0,0.508832,0.303414,1.0,0.507715,0.312351,1.0,0.513580,0.298945,1.0,0.516093,0.311357,1.0,0.511624,0.321784,1.0,0.518886,0.299442,1.0,0.518886,0.312351,1.0,0.516093,0.323273,1.0,0.521401,0.298945,1.0,0.523073,0.311854,1.0,0.520839,0.321784,1.0,0.523354,0.299938,1.0,0.525589,0.310861,1.0,0.525031,0.319798,1.0,0.470842,0.450086,1.0,0.470842,0.450086,1.0,0.470912,0.646351,1.0,0.449435,0.785329,1.0,0.449435,0.785329,1.0,0.510728,0.447339,1.0,0.510728,0.447339,1.0,0.529099,0.646436,1.0,0.521396,0.752657,1.0,0.521396,0.752657,1.0
|
||||
0.493132,0.456958,1.0,0.477623,0.302569,1.0,0.482792,0.354032,1.0,0.472453,0.251106,1.0,0.502258,0.184495,1.0,0.507620,0.185848,1.0,0.507620,0.185848,1.0,0.496896,0.183142,1.0,0.496896,0.183142,1.0,0.459382,0.249803,1.0,0.446311,0.248500,1.0,0.446412,0.335506,1.0,0.473944,0.251235,1.0,0.472974,0.205154,1.0,0.471410,0.186086,1.0,0.472304,0.170992,1.0,0.491520,0.230576,1.0,0.496883,0.228590,1.0,0.501352,0.234151,1.0,0.487722,0.231768,1.0,0.492861,0.236932,1.0,0.495766,0.249644,1.0,0.484817,0.236932,1.0,0.488169,0.240905,1.0,0.491073,0.253616,1.0,0.481912,0.242494,1.0,0.484370,0.246863,1.0,0.487052,0.256396,1.0,0.486240,0.252531,1.0,0.500028,0.253956,1.0,0.519945,0.381938,1.0,0.521531,0.327480,1.0,0.516024,0.287587,1.0,0.512188,0.299278,1.0,0.509721,0.310482,1.0,0.516298,0.291483,1.0,0.513284,0.300739,1.0,0.514928,0.319738,1.0,0.520682,0.292458,1.0,0.520958,0.307072,1.0,0.518764,0.319250,1.0,0.523698,0.294407,1.0,0.524792,0.307559,1.0,0.523146,0.318763,1.0,0.526438,0.298791,1.0,0.527807,0.309020,1.0,0.527260,0.318276,1.0,0.470911,0.461024,1.0,0.470911,0.461024,1.0,0.472438,0.646306,1.0,0.450950,0.785354,1.0,0.450950,0.785354,1.0,0.515353,0.452893,1.0,0.515353,0.452893,1.0,0.527589,0.646430,1.0,0.519899,0.755322,1.0,0.519899,0.755322,1.0
|
||||
0.494626,0.456944,1.0,0.485996,0.306766,1.0,0.488873,0.356825,1.0,0.483120,0.256707,1.0,0.501563,0.181754,1.0,0.507704,0.183149,1.0,0.507704,0.183149,1.0,0.495422,0.180359,1.0,0.495422,0.180359,1.0,0.465493,0.253910,1.0,0.447866,0.251114,1.0,0.447937,0.341167,1.0,0.472501,0.270142,1.0,0.489209,0.234130,1.0,0.495517,0.250781,1.0,0.502017,0.250781,1.0,0.491311,0.240246,1.0,0.497620,0.241946,1.0,0.500869,0.242286,1.0,0.487297,0.242286,1.0,0.490547,0.246704,1.0,0.493988,0.258938,1.0,0.482901,0.247383,1.0,0.485385,0.250781,1.0,0.489782,0.263356,1.0,0.479459,0.255200,1.0,0.481180,0.256899,1.0,0.485194,0.265056,1.0,0.499971,0.263499,1.0,0.516822,0.270292,1.0,0.527604,0.379321,1.0,0.530667,0.316676,1.0,0.523229,0.280165,1.0,0.517746,0.291130,1.0,0.512949,0.302906,1.0,0.520487,0.284632,1.0,0.518203,0.291942,1.0,0.517974,0.309405,1.0,0.526656,0.284226,1.0,0.523229,0.297221,1.0,0.523000,0.304937,1.0,0.530766,0.287069,1.0,0.528484,0.298440,1.0,0.527339,0.304125,1.0,0.534422,0.292348,1.0,0.533052,0.304125,1.0,0.532365,0.307374,1.0,0.470891,0.458303,1.0,0.470891,0.458303,1.0,0.472447,0.643589,1.0,0.452456,0.782619,1.0,0.452456,0.782619,1.0,0.518360,0.455585,1.0,0.518360,0.455585,1.0,0.524531,0.646318,1.0,0.519906,0.755409,1.0,0.519906,0.755409,1.0
|
||||
0.494610,0.447403,1.0,0.488310,0.302265,1.0,0.490410,0.350644,1.0,0.486209,0.253885,1.0,0.493866,0.172116,1.0,0.507678,0.166749,1.0,0.507678,0.166749,1.0,0.493853,0.164065,1.0,0.493853,0.164065,1.0,0.470115,0.251216,1.0,0.454020,0.248547,1.0,0.447966,0.352062,1.0,0.472366,0.278400,1.0,0.477627,0.258291,1.0,0.489223,0.252182,1.0,0.495451,0.251419,1.0,0.487935,0.252182,1.0,0.495666,0.272035,1.0,0.501249,0.270890,1.0,0.484284,0.257527,1.0,0.493948,0.274326,1.0,0.492659,0.274326,1.0,0.480418,0.262491,1.0,0.489653,0.279289,1.0,0.488364,0.278907,1.0,0.478700,0.270508,1.0,0.484928,0.280434,1.0,0.484714,0.280434,1.0,0.503821,0.256650,1.0,0.521432,0.259416,1.0,0.532234,0.362887,1.0,0.533698,0.294806,1.0,0.526578,0.261144,1.0,0.522234,0.269251,1.0,0.518542,0.282377,1.0,0.523318,0.266548,1.0,0.521146,0.276200,1.0,0.517673,0.283921,1.0,0.528099,0.272726,1.0,0.525276,0.286238,1.0,0.523536,0.292029,1.0,0.533307,0.273498,1.0,0.530052,0.288555,1.0,0.529401,0.294731,1.0,0.538302,0.271954,1.0,0.535266,0.286624,1.0,0.534396,0.291643,1.0,0.470860,0.447395,1.0,0.470860,0.447395,1.0,0.470919,0.640777,1.0,0.452481,0.785362,1.0,0.452481,0.785362,1.0,0.518360,0.447410,1.0,0.518360,0.447410,1.0,0.522964,0.643619,1.0,0.519930,0.758060,1.0,0.519930,0.758060,1.0
|
||||
0.494610,0.447403,1.0,0.488310,0.302265,1.0,0.490410,0.350644,1.0,0.486209,0.253885,1.0,0.493866,0.172116,1.0,0.507678,0.166749,1.0,0.507678,0.166749,1.0,0.493853,0.164065,1.0,0.493853,0.164065,1.0,0.470115,0.251216,1.0,0.454020,0.248547,1.0,0.447966,0.352062,1.0,0.472366,0.278400,1.0,0.477627,0.258291,1.0,0.489223,0.252182,1.0,0.495451,0.251419,1.0,0.487935,0.252182,1.0,0.495666,0.272035,1.0,0.501249,0.270890,1.0,0.484284,0.257527,1.0,0.493948,0.274326,1.0,0.492659,0.274326,1.0,0.480418,0.262491,1.0,0.489653,0.279289,1.0,0.488364,0.278907,1.0,0.478700,0.270508,1.0,0.484928,0.280434,1.0,0.484714,0.280434,1.0,0.503821,0.256650,1.0,0.521432,0.259416,1.0,0.532234,0.362887,1.0,0.533698,0.294806,1.0,0.526578,0.261144,1.0,0.522234,0.269251,1.0,0.518542,0.282377,1.0,0.523318,0.266548,1.0,0.521146,0.276200,1.0,0.517673,0.283921,1.0,0.528099,0.272726,1.0,0.525276,0.286238,1.0,0.523536,0.292029,1.0,0.533307,0.273498,1.0,0.530052,0.288555,1.0,0.529401,0.294731,1.0,0.538302,0.271954,1.0,0.535266,0.286624,1.0,0.534396,0.291643,1.0,0.470860,0.447395,1.0,0.470860,0.447395,1.0,0.470919,0.640777,1.0,0.452481,0.785362,1.0,0.452481,0.785362,1.0,0.518360,0.447410,1.0,0.518360,0.447410,1.0,0.522964,0.643619,1.0,0.519930,0.758060,1.0,0.519930,0.758060,1.0
|
||||
0.493868,0.439177,1.0,0.494972,0.298134,1.0,0.494604,0.345148,1.0,0.495340,0.251119,1.0,0.496170,0.165352,1.0,0.506143,0.161344,1.0,0.506143,0.161344,1.0,0.490782,0.161298,1.0,0.490782,0.161298,1.0,0.477006,0.249763,1.0,0.458673,0.248407,1.0,0.449427,0.354761,1.0,0.472372,0.292013,1.0,0.476169,0.268543,1.0,0.489493,0.267358,1.0,0.494823,0.263410,1.0,0.487495,0.263410,1.0,0.493268,0.261436,1.0,0.496377,0.259857,1.0,0.483497,0.268543,1.0,0.492824,0.286307,1.0,0.493268,0.289071,1.0,0.479722,0.275648,1.0,0.488383,0.291440,1.0,0.488383,0.293414,1.0,0.477057,0.283544,1.0,0.484164,0.294598,1.0,0.484164,0.294993,1.0,0.512214,0.252543,1.0,0.529089,0.253966,1.0,0.535229,0.354709,1.0,0.536818,0.272943,1.0,0.528562,0.259344,1.0,0.523333,0.253395,1.0,0.520198,0.258971,1.0,0.524797,0.238898,1.0,0.524797,0.241871,1.0,0.524797,0.261945,1.0,0.530026,0.238526,1.0,0.528146,0.250050,1.0,0.526260,0.260831,1.0,0.535047,0.241129,1.0,0.532328,0.255626,1.0,0.530865,0.262317,1.0,0.540063,0.247076,1.0,0.536510,0.260831,1.0,0.535672,0.262317,1.0,0.470863,0.439173,1.0,0.470863,0.439173,1.0,0.469307,0.630027,1.0,0.452511,0.777194,1.0,0.452511,0.777194,1.0,0.516873,0.439181,1.0,0.516873,0.439181,1.0,0.519977,0.640890,1.0,0.519904,0.755365,1.0,0.519904,0.755365,1.0
|
||||
0.493851,0.432393,1.0,0.496208,0.294353,1.0,0.495422,0.340366,1.0,0.496994,0.248340,1.0,0.498451,0.162645,1.0,0.504620,0.161240,1.0,0.504620,0.161240,1.0,0.487741,0.161344,1.0,0.487741,0.161344,1.0,0.482381,0.248350,1.0,0.467768,0.248360,1.0,0.449410,0.357409,1.0,0.472391,0.302947,1.0,0.471049,0.266183,1.0,0.487491,0.281217,1.0,0.492424,0.277041,1.0,0.486317,0.279546,1.0,0.491484,0.299172,1.0,0.495243,0.302513,1.0,0.480680,0.282887,1.0,0.489370,0.300425,1.0,0.488666,0.305019,1.0,0.477391,0.287062,1.0,0.484907,0.303766,1.0,0.485612,0.307106,1.0,0.475042,0.295831,1.0,0.480680,0.305019,1.0,0.481149,0.306689,1.0,0.514557,0.248340,1.0,0.532120,0.248340,1.0,0.538349,0.338311,1.0,0.535229,0.253954,1.0,0.528969,0.244380,1.0,0.523734,0.230251,1.0,0.520440,0.241623,1.0,0.525479,0.220947,1.0,0.522573,0.232664,1.0,0.522573,0.238866,1.0,0.530323,0.220603,1.0,0.526641,0.235076,1.0,0.524703,0.241278,1.0,0.535172,0.223359,1.0,0.530521,0.240244,1.0,0.529745,0.243691,1.0,0.540208,0.227839,1.0,0.536724,0.239900,1.0,0.534010,0.244035,1.0,0.470841,0.431033,1.0,0.470841,0.431033,1.0,0.460208,0.621910,1.0,0.457021,0.777166,1.0,0.457021,0.777166,1.0,0.516860,0.433753,1.0,0.516860,0.433753,1.0,0.518401,0.640762,1.0,0.519907,0.755391,1.0,0.519907,0.755391,1.0
|
||||
0.493083,0.439241,1.0,0.501721,0.296114,1.0,0.498842,0.343823,1.0,0.504600,0.248405,1.0,0.496954,0.166746,1.0,0.500027,0.161329,1.0,0.500027,0.161329,1.0,0.484751,0.164051,1.0,0.484751,0.164051,1.0,0.487759,0.248473,1.0,0.470919,0.248542,1.0,0.450947,0.357453,1.0,0.472354,0.313887,1.0,0.478945,0.297409,1.0,0.489346,0.303713,1.0,0.493364,0.311277,1.0,0.485564,0.292367,1.0,0.489582,0.312118,1.0,0.489818,0.320102,1.0,0.480836,0.293628,1.0,0.486273,0.313798,1.0,0.487455,0.321363,1.0,0.476581,0.297830,1.0,0.482254,0.316320,1.0,0.483672,0.322623,1.0,0.472563,0.304133,1.0,0.477527,0.317160,1.0,0.478709,0.320102,1.0,0.519954,0.248358,1.0,0.535307,0.248311,1.0,0.535281,0.319402,1.0,0.533771,0.245773,1.0,0.531078,0.233788,1.0,0.526516,0.215469,1.0,0.517734,0.229583,1.0,0.524661,0.208561,1.0,0.518409,0.225079,1.0,0.517227,0.229884,1.0,0.528714,0.210063,1.0,0.522125,0.226581,1.0,0.522802,0.234389,1.0,0.534120,0.213066,1.0,0.526854,0.228082,1.0,0.528036,0.231986,1.0,0.539187,0.218772,1.0,0.532094,0.229283,1.0,0.531755,0.233788,1.0,0.470852,0.436501,1.0,0.470852,0.436501,1.0,0.457074,0.619088,1.0,0.458660,0.771689,1.0,0.458660,0.771689,1.0,0.515315,0.441981,1.0,0.515315,0.441981,1.0,0.516820,0.640787,1.0,0.519946,0.763548,1.0,0.519946,0.763548,1.0
|
||||
0.491597,0.439239,1.0,0.503679,0.296047,1.0,0.499652,0.343778,1.0,0.507707,0.248317,1.0,0.495410,0.172132,1.0,0.496980,0.163875,1.0,0.496980,0.163875,1.0,0.484605,0.166818,1.0,0.484605,0.166818,1.0,0.491605,0.248419,1.0,0.475504,0.248522,1.0,0.455559,0.357437,1.0,0.470864,0.319400,1.0,0.478514,0.301385,1.0,0.486077,0.311890,1.0,0.486549,0.305587,1.0,0.479932,0.304747,1.0,0.484659,0.324076,1.0,0.487022,0.325336,1.0,0.475914,0.306848,1.0,0.481350,0.324916,1.0,0.483950,0.327857,1.0,0.472605,0.310209,1.0,0.478041,0.327017,1.0,0.479932,0.328698,1.0,0.470478,0.314831,1.0,0.473078,0.325336,1.0,0.474732,0.326597,1.0,0.525322,0.246977,1.0,0.542937,0.245638,1.0,0.533714,0.313970,1.0,0.533656,0.229335,1.0,0.524323,0.187262,1.0,0.522578,0.197956,1.0,0.517922,0.210720,1.0,0.522969,0.193471,1.0,0.519086,0.194506,1.0,0.517534,0.196921,1.0,0.527234,0.194506,1.0,0.521802,0.203820,1.0,0.518892,0.215895,1.0,0.531505,0.200026,1.0,0.523745,0.214515,1.0,0.523161,0.221415,1.0,0.535578,0.208306,1.0,0.531120,0.215206,1.0,0.528401,0.220035,1.0,0.470905,0.436489,1.0,0.470905,0.436489,1.0,0.449384,0.610943,1.0,0.466247,0.752742,1.0,0.466247,0.752742,1.0,0.512289,0.441990,1.0,0.512289,0.441990,1.0,0.512257,0.640811,1.0,0.519972,0.758112,1.0,0.519972,0.758112,1.0
|
||||
0.491581,0.439218,1.0,0.504815,0.296098,1.0,0.500404,0.343805,1.0,0.509227,0.248392,1.0,0.493874,0.173527,1.0,0.496908,0.166706,1.0,0.496908,0.166706,1.0,0.483196,0.177575,1.0,0.483196,0.177575,1.0,0.495422,0.249736,1.0,0.481617,0.251081,1.0,0.458561,0.357480,1.0,0.470815,0.330183,1.0,0.476270,0.309045,1.0,0.480740,0.312392,1.0,0.483329,0.314065,1.0,0.477682,0.315738,1.0,0.483329,0.338744,1.0,0.484740,0.339999,1.0,0.473682,0.319921,1.0,0.477682,0.338744,1.0,0.479799,0.337907,1.0,0.469917,0.322431,1.0,0.473917,0.339162,1.0,0.476034,0.338744,1.0,0.467094,0.326195,1.0,0.469917,0.336234,1.0,0.472035,0.337071,1.0,0.526829,0.245696,1.0,0.544432,0.243000,1.0,0.532115,0.311143,1.0,0.530688,0.226663,1.0,0.528474,0.189139,1.0,0.516654,0.194306,1.0,0.512778,0.191895,1.0,0.518010,0.189483,1.0,0.513166,0.191895,1.0,0.511034,0.189828,1.0,0.523245,0.189483,1.0,0.517235,0.199474,1.0,0.514522,0.208776,1.0,0.528089,0.192584,1.0,0.523047,0.205331,1.0,0.520142,0.211531,1.0,0.531964,0.199130,1.0,0.527698,0.209809,1.0,0.524984,0.213598,1.0,0.470918,0.436468,1.0,0.470918,0.436468,1.0,0.446389,0.608231,1.0,0.470877,0.744476,1.0,0.470877,0.744476,1.0,0.512243,0.441969,1.0,0.512243,0.441969,1.0,0.509238,0.640861,1.0,0.521396,0.755418,1.0,0.521396,0.755418,1.0
|
||||
0.491581,0.439218,1.0,0.504815,0.296098,1.0,0.500404,0.343805,1.0,0.509227,0.248392,1.0,0.493874,0.173527,1.0,0.496908,0.166706,1.0,0.496908,0.166706,1.0,0.483196,0.177575,1.0,0.483196,0.177575,1.0,0.495422,0.249736,1.0,0.481617,0.251081,1.0,0.458561,0.357480,1.0,0.470815,0.330183,1.0,0.476270,0.309045,1.0,0.480740,0.312392,1.0,0.483329,0.314065,1.0,0.477682,0.315738,1.0,0.483329,0.338744,1.0,0.484740,0.339999,1.0,0.473682,0.319921,1.0,0.477682,0.338744,1.0,0.479799,0.337907,1.0,0.469917,0.322431,1.0,0.473917,0.339162,1.0,0.476034,0.338744,1.0,0.467094,0.326195,1.0,0.469917,0.336234,1.0,0.472035,0.337071,1.0,0.526829,0.245696,1.0,0.544432,0.243000,1.0,0.532115,0.311143,1.0,0.530688,0.226663,1.0,0.528474,0.189139,1.0,0.516654,0.194306,1.0,0.512778,0.191895,1.0,0.518010,0.189483,1.0,0.513166,0.191895,1.0,0.511034,0.189828,1.0,0.523245,0.189483,1.0,0.517235,0.199474,1.0,0.514522,0.208776,1.0,0.528089,0.192584,1.0,0.523047,0.205331,1.0,0.520142,0.211531,1.0,0.531964,0.199130,1.0,0.527698,0.209809,1.0,0.524984,0.213598,1.0,0.470918,0.436468,1.0,0.470918,0.436468,1.0,0.446389,0.608231,1.0,0.470877,0.744476,1.0,0.470877,0.744476,1.0,0.512243,0.441969,1.0,0.512243,0.441969,1.0,0.509238,0.640861,1.0,0.521396,0.755418,1.0,0.521396,0.755418,1.0
|
||||
0.490072,0.436513,1.0,0.507871,0.293414,1.0,0.501938,0.341114,1.0,0.513804,0.245714,1.0,0.490024,0.177510,1.0,0.496892,0.172109,1.0,0.496892,0.172109,1.0,0.483156,0.182910,1.0,0.483156,0.182910,1.0,0.499260,0.247083,1.0,0.484717,0.248453,1.0,0.460141,0.357471,1.0,0.469295,0.338330,1.0,0.473528,0.319948,1.0,0.480798,0.333305,1.0,0.480798,0.342353,1.0,0.473285,0.324256,1.0,0.479586,0.347092,1.0,0.480314,0.351401,1.0,0.469165,0.326842,1.0,0.473285,0.345799,1.0,0.475708,0.350969,1.0,0.465288,0.330289,1.0,0.468922,0.346661,1.0,0.471346,0.350969,1.0,0.462136,0.332874,1.0,0.463591,0.339768,1.0,0.465530,0.345369,1.0,0.529115,0.240309,1.0,0.544427,0.234905,1.0,0.530625,0.308460,1.0,0.524521,0.226586,1.0,0.521370,0.193508,1.0,0.514366,0.195192,1.0,0.506413,0.208994,1.0,0.513040,0.190142,1.0,0.504140,0.193845,1.0,0.506034,0.212024,1.0,0.518531,0.190479,1.0,0.509821,0.211014,1.0,0.510199,0.214717,1.0,0.522318,0.194519,1.0,0.518342,0.205964,1.0,0.514744,0.214044,1.0,0.526484,0.199568,1.0,0.523266,0.211014,1.0,0.520804,0.214381,1.0,0.470879,0.431094,1.0,0.470879,0.431094,1.0,0.446292,0.613596,1.0,0.473947,0.738969,1.0,0.473947,0.738969,1.0,0.509266,0.441932,1.0,0.509266,0.441932,1.0,0.509155,0.640999,1.0,0.521474,0.752742,1.0,0.521474,0.752742,1.0
|
||||
0.488538,0.441950,1.0,0.509754,0.296747,1.0,0.502682,0.345148,1.0,0.516825,0.248346,1.0,0.490036,0.183079,1.0,0.496892,0.180324,1.0,0.496892,0.180324,1.0,0.483180,0.185834,1.0,0.483180,0.185834,1.0,0.501520,0.249720,1.0,0.486215,0.251094,1.0,0.483160,0.324765,1.0,0.470860,0.338418,1.0,0.471831,0.329915,1.0,0.477929,0.342110,1.0,0.476404,0.352407,1.0,0.473812,0.334251,1.0,0.471221,0.358911,1.0,0.476099,0.353492,1.0,0.467258,0.335606,1.0,0.469240,0.357015,1.0,0.471374,0.357285,1.0,0.463600,0.338857,1.0,0.466343,0.358369,1.0,0.468478,0.357015,1.0,0.460094,0.342923,1.0,0.462990,0.356744,1.0,0.464971,0.356744,1.0,0.530621,0.244299,1.0,0.544417,0.240251,1.0,0.523063,0.311056,1.0,0.521536,0.229311,1.0,0.508470,0.225339,1.0,0.503969,0.226006,1.0,0.496281,0.218671,1.0,0.502281,0.198002,1.0,0.497781,0.213337,1.0,0.499281,0.222672,1.0,0.509782,0.199002,1.0,0.505094,0.218005,1.0,0.505282,0.231340,1.0,0.516721,0.200002,1.0,0.510345,0.219338,1.0,0.511470,0.216671,1.0,0.521786,0.203003,1.0,0.518784,0.214337,1.0,0.516721,0.218671,1.0,0.469351,0.439195,1.0,0.469351,0.439195,1.0,0.444818,0.616406,1.0,0.478531,0.733568,1.0,0.478531,0.733568,1.0,0.507726,0.444704,1.0,0.507726,0.444704,1.0,0.507608,0.641001,1.0,0.521531,0.752687,1.0,0.521531,0.752687,1.0
|
||||
0.487704,0.446104,1.0,0.510719,0.299921,1.0,0.503047,0.348649,1.0,0.518391,0.251194,1.0,0.489265,0.189868,1.0,0.495403,0.185791,1.0,0.495403,0.185791,1.0,0.483128,0.193944,1.0,0.483128,0.193944,1.0,0.503824,0.255256,1.0,0.489258,0.259318,1.0,0.489267,0.330229,1.0,0.472350,0.341095,1.0,0.469694,0.335836,1.0,0.474523,0.345981,1.0,0.472474,0.357688,1.0,0.469986,0.337397,1.0,0.468377,0.337397,1.0,0.465743,0.341559,1.0,0.464133,0.337657,1.0,0.461499,0.343381,1.0,0.465011,0.356647,1.0,0.461207,0.341559,1.0,0.458427,0.345201,1.0,0.462817,0.357948,1.0,0.457987,0.344160,1.0,0.456378,0.348323,1.0,0.458280,0.356127,1.0,0.530667,0.248452,1.0,0.542943,0.245711,1.0,0.521542,0.313707,1.0,0.519889,0.229424,1.0,0.502133,0.186830,1.0,0.500973,0.230143,1.0,0.495752,0.227393,1.0,0.498266,0.207111,1.0,0.494785,0.222236,1.0,0.496913,0.230143,1.0,0.504454,0.210206,1.0,0.500199,0.224986,1.0,0.502907,0.230143,1.0,0.509481,0.215018,1.0,0.506001,0.227049,1.0,0.506387,0.229456,1.0,0.516248,0.217081,1.0,0.514508,0.221549,1.0,0.511801,0.226361,1.0,0.467797,0.444723,1.0,0.467797,0.444723,1.0,0.447827,0.621871,1.0,0.481591,0.741702,1.0,0.481591,0.741702,1.0,0.507611,0.447485,1.0,0.507611,0.447485,1.0,0.504608,0.643679,1.0,0.521479,0.755371,1.0,0.521479,0.755371,1.0
|
||||
0.485429,0.448731,1.0,0.507842,0.300630,1.0,0.500371,0.349997,1.0,0.515313,0.251263,1.0,0.489207,0.193999,1.0,0.495351,0.188572,1.0,0.495351,0.188572,1.0,0.483063,0.199426,1.0,0.483063,0.199426,1.0,0.500769,0.255323,1.0,0.486225,0.259382,1.0,0.484679,0.335627,1.0,0.467815,0.343847,1.0,0.468546,0.333965,1.0,0.471853,0.341242,1.0,0.469491,0.352157,1.0,0.467287,0.333965,1.0,0.470279,0.341802,1.0,0.469019,0.350478,1.0,0.460203,0.335084,1.0,0.461462,0.347399,1.0,0.464139,0.353556,1.0,0.455637,0.340122,1.0,0.457841,0.351318,1.0,0.461147,0.357755,1.0,0.452646,0.345720,1.0,0.454692,0.353556,1.0,0.456582,0.357475,1.0,0.528334,0.249865,1.0,0.541354,0.248468,1.0,0.521510,0.316617,1.0,0.518380,0.234798,1.0,0.507569,0.208801,1.0,0.496099,0.215486,1.0,0.492903,0.230194,1.0,0.495911,0.213481,1.0,0.492527,0.227185,1.0,0.491587,0.226182,1.0,0.501928,0.215152,1.0,0.497792,0.234874,1.0,0.500424,0.240891,1.0,0.508133,0.217492,1.0,0.503432,0.235877,1.0,0.502680,0.245570,1.0,0.513586,0.222506,1.0,0.512082,0.229859,1.0,0.510014,0.233536,1.0,0.464720,0.447361,1.0,0.464720,0.447361,1.0,0.455542,0.635488,1.0,0.483062,0.749810,1.0,0.483062,0.749810,1.0,0.506139,0.450102,1.0,0.506139,0.450102,1.0,0.499984,0.643711,1.0,0.521417,0.755457,1.0,0.521417,0.755457,1.0
|
||||
0.483919,0.448833,1.0,0.501759,0.300660,1.0,0.495813,0.350051,1.0,0.507706,0.251269,1.0,0.489298,0.192539,1.0,0.492357,0.185658,1.0,0.492357,0.185658,1.0,0.480032,0.188481,1.0,0.480032,0.188481,1.0,0.493137,0.258034,1.0,0.478568,0.264799,1.0,0.460142,0.379324,1.0,0.458613,0.352007,1.0,0.462779,0.309782,1.0,0.466711,0.330320,1.0,0.467449,0.337312,1.0,0.461058,0.323766,1.0,0.461796,0.347362,1.0,0.464745,0.346488,1.0,0.455405,0.326824,1.0,0.459583,0.347362,1.0,0.461058,0.349110,1.0,0.451226,0.331194,1.0,0.456142,0.348673,1.0,0.457863,0.349984,1.0,0.449260,0.337749,1.0,0.452947,0.348673,1.0,0.453684,0.349110,1.0,0.520752,0.249851,1.0,0.533797,0.248434,1.0,0.523010,0.330160,1.0,0.518347,0.240249,1.0,0.507492,0.221987,1.0,0.499832,0.226771,1.0,0.512046,0.179294,1.0,0.499418,0.225668,1.0,0.496312,0.246646,1.0,0.497969,0.249591,1.0,0.502730,0.225668,1.0,0.497348,0.245542,1.0,0.497555,0.249958,1.0,0.506043,0.230452,1.0,0.501695,0.245174,1.0,0.502730,0.247014,1.0,0.509562,0.238549,1.0,0.506664,0.245910,1.0,0.506250,0.246278,1.0,0.461705,0.447490,1.0,0.461705,0.447490,1.0,0.460155,0.638119,1.0,0.484623,0.749985,1.0,0.484623,0.749985,1.0,0.506133,0.450177,1.0,0.506133,0.450177,1.0,0.496987,0.643772,1.0,0.521406,0.763529,1.0,0.521406,0.763529,1.0
|
||||
0.483919,0.448833,1.0,0.501759,0.300660,1.0,0.495813,0.350051,1.0,0.507706,0.251269,1.0,0.489298,0.192539,1.0,0.492357,0.185658,1.0,0.492357,0.185658,1.0,0.480032,0.188481,1.0,0.480032,0.188481,1.0,0.493137,0.258034,1.0,0.478568,0.264799,1.0,0.460142,0.379324,1.0,0.458613,0.352007,1.0,0.462779,0.309782,1.0,0.466711,0.330320,1.0,0.467449,0.337312,1.0,0.461058,0.323766,1.0,0.461796,0.347362,1.0,0.464745,0.346488,1.0,0.455405,0.326824,1.0,0.459583,0.347362,1.0,0.461058,0.349110,1.0,0.451226,0.331194,1.0,0.456142,0.348673,1.0,0.457863,0.349984,1.0,0.449260,0.337749,1.0,0.452947,0.348673,1.0,0.453684,0.349110,1.0,0.520752,0.249851,1.0,0.533797,0.248434,1.0,0.523010,0.330160,1.0,0.518347,0.240249,1.0,0.507492,0.221987,1.0,0.499832,0.226771,1.0,0.512046,0.179294,1.0,0.499418,0.225668,1.0,0.496312,0.246646,1.0,0.497969,0.249591,1.0,0.502730,0.225668,1.0,0.497348,0.245542,1.0,0.497555,0.249958,1.0,0.506043,0.230452,1.0,0.501695,0.245174,1.0,0.502730,0.247014,1.0,0.509562,0.238549,1.0,0.506664,0.245910,1.0,0.506250,0.246278,1.0,0.461705,0.447490,1.0,0.461705,0.447490,1.0,0.460155,0.638119,1.0,0.484623,0.749985,1.0,0.484623,0.749985,1.0,0.506133,0.450177,1.0,0.506133,0.450177,1.0,0.496987,0.643772,1.0,0.521406,0.763529,1.0,0.521406,0.763529,1.0
|
||||
0.484653,0.448781,1.0,0.496178,0.306736,1.0,0.492337,0.354084,1.0,0.500020,0.259388,1.0,0.488508,0.184435,1.0,0.489268,0.177541,1.0,0.489268,0.177541,1.0,0.472497,0.180303,1.0,0.472497,0.180303,1.0,0.485442,0.264819,1.0,0.470865,0.270249,1.0,0.452479,0.379214,1.0,0.453995,0.335704,1.0,0.461068,0.299644,1.0,0.465059,0.307991,1.0,0.465294,0.322597,1.0,0.459425,0.307156,1.0,0.463885,0.319258,1.0,0.463181,0.329692,1.0,0.453321,0.312164,1.0,0.458251,0.333031,1.0,0.459190,0.333448,1.0,0.449096,0.316755,1.0,0.454495,0.334282,1.0,0.455669,0.333866,1.0,0.446044,0.323015,1.0,0.450504,0.335118,1.0,0.451678,0.335118,1.0,0.516843,0.255250,1.0,0.533667,0.251113,1.0,0.530651,0.335789,1.0,0.516872,0.254010,1.0,0.512326,0.239202,1.0,0.495297,0.262516,1.0,0.492948,0.262516,1.0,0.494514,0.236767,1.0,0.489425,0.238158,1.0,0.486489,0.239898,1.0,0.499211,0.238855,1.0,0.492948,0.256601,1.0,0.495101,0.263560,1.0,0.503713,0.240942,1.0,0.497645,0.257644,1.0,0.499211,0.264256,1.0,0.508215,0.245118,1.0,0.502930,0.258689,1.0,0.503909,0.259732,1.0,0.461701,0.447462,1.0,0.461701,0.447462,1.0,0.461698,0.632696,1.0,0.484605,0.752570,1.0,0.484605,0.752570,1.0,0.507606,0.450099,1.0,0.507606,0.450099,1.0,0.496947,0.643515,1.0,0.521422,0.758073,1.0,0.521422,0.758073,1.0
|
||||
0.486226,0.444609,1.0,0.494207,0.299610,1.0,0.491546,0.347943,1.0,0.496867,0.251277,1.0,0.486210,0.169413,1.0,0.486262,0.161245,1.0,0.486262,0.161245,1.0,0.472455,0.163903,1.0,0.472455,0.163903,1.0,0.480034,0.256698,1.0,0.463200,0.262119,1.0,0.446370,0.373798,1.0,0.449395,0.319364,1.0,0.458267,0.316246,1.0,0.463277,0.303521,1.0,0.463754,0.309035,1.0,0.454927,0.295463,1.0,0.453733,0.292919,1.0,0.452779,0.294191,1.0,0.451109,0.298856,1.0,0.449439,0.301825,1.0,0.455404,0.318791,1.0,0.447530,0.304794,1.0,0.447292,0.305643,1.0,0.451348,0.317943,1.0,0.444190,0.310732,1.0,0.445145,0.312853,1.0,0.447769,0.319215,1.0,0.513759,0.249812,1.0,0.530651,0.248346,1.0,0.533786,0.341216,1.0,0.516876,0.267464,1.0,0.503999,0.249952,1.0,0.492865,0.251999,1.0,0.484609,0.256778,1.0,0.492289,0.253706,1.0,0.490561,0.271454,1.0,0.490369,0.277256,1.0,0.495360,0.257802,1.0,0.490945,0.272136,1.0,0.490753,0.279304,1.0,0.498816,0.260531,1.0,0.494976,0.273502,1.0,0.494016,0.278962,1.0,0.502656,0.263604,1.0,0.499392,0.271454,1.0,0.498240,0.275891,1.0,0.464728,0.444605,1.0,0.464728,0.444605,1.0,0.466256,0.630026,1.0,0.483166,0.749977,1.0,0.483166,0.749977,1.0,0.507724,0.444614,1.0,0.507724,0.444614,1.0,0.496868,0.635464,1.0,0.521427,0.752664,1.0,0.521427,0.752664,1.0
|
||||
0.488468,0.436495,1.0,0.491386,0.295395,1.0,0.490413,0.342428,1.0,0.492359,0.248361,1.0,0.483906,0.163921,1.0,0.487760,0.144918,1.0,0.487760,0.144918,1.0,0.472375,0.144893,1.0,0.472375,0.144893,1.0,0.475494,0.249812,1.0,0.458629,0.251263,1.0,0.440194,0.360217,1.0,0.447897,0.313969,1.0,0.453257,0.314569,1.0,0.457014,0.290360,1.0,0.462883,0.299543,1.0,0.447388,0.289526,1.0,0.446214,0.287021,1.0,0.449266,0.287021,1.0,0.443396,0.302465,1.0,0.446448,0.294117,1.0,0.452787,0.301630,1.0,0.440109,0.309978,1.0,0.445744,0.300378,1.0,0.451379,0.307056,1.0,0.441753,0.316656,1.0,0.445274,0.306638,1.0,0.449266,0.309978,1.0,0.508442,0.242955,1.0,0.524526,0.237549,1.0,0.542943,0.341115,1.0,0.509222,0.273046,1.0,0.497647,0.270506,1.0,0.488458,0.270906,1.0,0.479717,0.276085,1.0,0.485096,0.290829,1.0,0.484199,0.299594,1.0,0.482406,0.302782,1.0,0.488234,0.293219,1.0,0.486889,0.296806,1.0,0.486665,0.292422,1.0,0.491596,0.293219,1.0,0.490251,0.295610,1.0,0.490475,0.290031,1.0,0.494958,0.291625,1.0,0.492268,0.293219,1.0,0.493613,0.290430,1.0,0.467769,0.436514,1.0,0.467769,0.436514,1.0,0.469346,0.624622,1.0,0.483200,0.749977,1.0,0.483200,0.749977,1.0,0.509166,0.436477,1.0,0.509166,0.436477,1.0,0.496872,0.624492,1.0,0.519911,0.749803,1.0,0.519911,0.749803,1.0
|
||||
0.488457,0.431068,1.0,0.489088,0.290022,1.0,0.488877,0.337037,1.0,0.489298,0.243006,1.0,0.481597,0.157161,1.0,0.487746,0.139396,1.0,0.487746,0.139396,1.0,0.472395,0.139431,1.0,0.472395,0.139431,1.0,0.473178,0.245692,1.0,0.457058,0.248378,1.0,0.435579,0.357331,1.0,0.447942,0.316596,1.0,0.447257,0.284095,1.0,0.458216,0.288755,1.0,0.463933,0.297649,1.0,0.452736,0.288331,1.0,0.460598,0.293837,1.0,0.464172,0.300613,1.0,0.449163,0.293837,1.0,0.454881,0.297649,1.0,0.458692,0.305272,1.0,0.446781,0.298919,1.0,0.449163,0.302307,1.0,0.456072,0.310778,1.0,0.440348,0.303578,1.0,0.448448,0.308660,1.0,0.452260,0.312895,1.0,0.506144,0.237552,1.0,0.522990,0.232098,1.0,0.547547,0.338275,1.0,0.509181,0.294705,1.0,0.500073,0.288749,1.0,0.486096,0.291276,1.0,0.477094,0.300963,1.0,0.486333,0.291276,1.0,0.485385,0.292119,1.0,0.482306,0.295908,1.0,0.490360,0.296330,1.0,0.486570,0.303490,1.0,0.483728,0.312755,1.0,0.492967,0.301805,1.0,0.489887,0.306859,1.0,0.487992,0.311913,1.0,0.495809,0.306438,1.0,0.494388,0.310228,1.0,0.491071,0.311492,1.0,0.467768,0.431063,1.0,0.467768,0.431063,1.0,0.470924,0.619049,1.0,0.483183,0.747218,1.0,0.483183,0.747218,1.0,0.509146,0.431073,1.0,0.509146,0.431073,1.0,0.496907,0.616378,1.0,0.518362,0.733588,1.0,0.518362,0.733588,1.0
|
||||
0.489273,0.425609,1.0,0.487010,0.280547,1.0,0.487764,0.328901,1.0,0.486255,0.232194,1.0,0.481591,0.149019,1.0,0.489285,0.134030,1.0,0.489285,0.134030,1.0,0.472429,0.133943,1.0,0.472429,0.133943,1.0,0.470130,0.237598,1.0,0.454004,0.243003,1.0,0.434011,0.354654,1.0,0.454004,0.322031,1.0,0.461328,0.310406,1.0,0.471241,0.306107,1.0,0.470516,0.309117,1.0,0.463020,0.298370,1.0,0.464955,0.302239,1.0,0.469065,0.312985,1.0,0.457701,0.302239,1.0,0.463262,0.312125,1.0,0.465196,0.318573,1.0,0.453832,0.306537,1.0,0.458184,0.315994,1.0,0.461569,0.322871,1.0,0.449964,0.314274,1.0,0.453591,0.321152,1.0,0.457459,0.326310,1.0,0.503865,0.230780,1.0,0.521474,0.229366,1.0,0.553615,0.332872,1.0,0.507671,0.316554,1.0,0.500805,0.315071,1.0,0.488119,0.315939,1.0,0.480068,0.321144,1.0,0.482508,0.315939,1.0,0.475677,0.325915,1.0,0.477872,0.328517,1.0,0.485679,0.322011,1.0,0.479580,0.334155,1.0,0.483728,0.335890,1.0,0.489339,0.328083,1.0,0.483240,0.339794,1.0,0.487387,0.340661,1.0,0.492754,0.334589,1.0,0.487631,0.344564,1.0,0.489827,0.346299,1.0,0.469286,0.425615,1.0,0.469286,0.425615,1.0,0.472443,0.616302,1.0,0.483165,0.747161,1.0,0.483165,0.747161,1.0,0.509260,0.425603,1.0,0.509260,0.425603,1.0,0.496999,0.610873,1.0,0.516875,0.730967,1.0,0.516875,0.730967,1.0
|
||||
0.489273,0.425609,1.0,0.487010,0.280547,1.0,0.487764,0.328901,1.0,0.486255,0.232194,1.0,0.481591,0.149019,1.0,0.489285,0.134030,1.0,0.489285,0.134030,1.0,0.472429,0.133943,1.0,0.472429,0.133943,1.0,0.470130,0.237598,1.0,0.454004,0.243003,1.0,0.434011,0.354654,1.0,0.454004,0.322031,1.0,0.461328,0.310406,1.0,0.471241,0.306107,1.0,0.470516,0.309117,1.0,0.463020,0.298370,1.0,0.464955,0.302239,1.0,0.469065,0.312985,1.0,0.457701,0.302239,1.0,0.463262,0.312125,1.0,0.465196,0.318573,1.0,0.453832,0.306537,1.0,0.458184,0.315994,1.0,0.461569,0.322871,1.0,0.449964,0.314274,1.0,0.453591,0.321152,1.0,0.457459,0.326310,1.0,0.503865,0.230780,1.0,0.521474,0.229366,1.0,0.553615,0.332872,1.0,0.507671,0.316554,1.0,0.500805,0.315071,1.0,0.488119,0.315939,1.0,0.480068,0.321144,1.0,0.482508,0.315939,1.0,0.475677,0.325915,1.0,0.477872,0.328517,1.0,0.485679,0.322011,1.0,0.479580,0.334155,1.0,0.483728,0.335890,1.0,0.489339,0.328083,1.0,0.483240,0.339794,1.0,0.487387,0.340661,1.0,0.492754,0.334589,1.0,0.487631,0.344564,1.0,0.489827,0.346299,1.0,0.469286,0.425615,1.0,0.469286,0.425615,1.0,0.472443,0.616302,1.0,0.483165,0.747161,1.0,0.483165,0.747161,1.0,0.509260,0.425603,1.0,0.509260,0.425603,1.0,0.496999,0.610873,1.0,0.516875,0.730967,1.0,0.516875,0.730967,1.0
|
||||
0.489996,0.427010,1.0,0.487150,0.280862,1.0,0.488099,0.329578,1.0,0.486202,0.232146,1.0,0.480881,0.143623,1.0,0.492301,0.123180,1.0,0.492301,0.123180,1.0,0.472460,0.123119,1.0,0.472460,0.123119,1.0,0.467832,0.236235,1.0,0.449463,0.240324,1.0,0.431011,0.346537,1.0,0.458586,0.335769,1.0,0.462868,0.327322,1.0,0.473420,0.323244,1.0,0.478696,0.334662,1.0,0.471585,0.318351,1.0,0.479384,0.336701,1.0,0.479384,0.342003,1.0,0.465162,0.322836,1.0,0.475484,0.342410,1.0,0.474108,0.346081,1.0,0.460574,0.328953,1.0,0.471585,0.346896,1.0,0.470897,0.349344,1.0,0.458051,0.337925,1.0,0.468373,0.350158,1.0,0.468144,0.351790,1.0,0.503856,0.230742,1.0,0.521510,0.229337,1.0,0.553635,0.327474,1.0,0.509253,0.349263,1.0,0.501869,0.345206,1.0,0.499760,0.378114,1.0,0.497418,0.378531,1.0,0.480782,0.353120,1.0,0.477735,0.339791,1.0,0.488045,0.385611,1.0,0.481953,0.366033,1.0,0.483828,0.371449,1.0,0.485233,0.378946,1.0,0.489451,0.381446,1.0,0.488280,0.377697,1.0,0.486171,0.378531,1.0,0.491794,0.381030,1.0,0.480547,0.335626,1.0,0.488280,0.387278,1.0,0.469286,0.428327,1.0,0.469286,0.428327,1.0,0.472457,0.613601,1.0,0.483152,0.747138,1.0,0.483152,0.747138,1.0,0.510706,0.425694,1.0,0.510706,0.425694,1.0,0.501536,0.600160,1.0,0.515332,0.730863,1.0,0.515332,0.730863,1.0
|
||||
0.488519,0.428381,1.0,0.486767,0.279219,1.0,0.487351,0.328940,1.0,0.486183,0.229498,1.0,0.480865,0.142212,1.0,0.490828,0.120486,1.0,0.490828,0.120486,1.0,0.472473,0.120415,1.0,0.472473,0.120415,1.0,0.467824,0.232196,1.0,0.449466,0.234894,1.0,0.424943,0.343795,1.0,0.461668,0.360233,1.0,0.467251,0.357051,1.0,0.476692,0.354468,1.0,0.478386,0.357481,1.0,0.485647,0.371252,1.0,0.483953,0.375555,1.0,0.479112,0.385452,1.0,0.482501,0.379858,1.0,0.479838,0.384161,1.0,0.476933,0.385452,1.0,0.480080,0.385452,1.0,0.476449,0.384161,1.0,0.476449,0.384592,1.0,0.477418,0.390616,1.0,0.473060,0.384592,1.0,0.474513,0.387604,1.0,0.503839,0.228124,1.0,0.521495,0.226749,1.0,0.555151,0.322045,1.0,0.515356,0.371119,1.0,0.505010,0.362957,1.0,0.492472,0.360069,1.0,0.477844,0.381533,1.0,0.481327,0.385248,1.0,0.487364,0.381533,1.0,0.485506,0.391853,1.0,0.492008,0.387312,1.0,0.492008,0.392266,1.0,0.486203,0.403823,1.0,0.497116,0.394743,1.0,0.493865,0.401759,1.0,0.489686,0.409603,1.0,0.503153,0.401759,1.0,0.498741,0.410016,1.0,0.495723,0.412905,1.0,0.467797,0.428377,1.0,0.467797,0.428377,1.0,0.472419,0.608163,1.0,0.483119,0.744470,1.0,0.483119,0.744470,1.0,0.509240,0.428385,1.0,0.509240,0.428385,1.0,0.507630,0.602751,1.0,0.513825,0.738984,1.0,0.513825,0.738984,1.0
|
||||
0.487001,0.425593,1.0,0.486387,0.280479,1.0,0.486591,0.328850,1.0,0.486182,0.232108,1.0,0.480875,0.142313,1.0,0.492318,0.120491,1.0,0.492318,0.120491,1.0,0.472470,0.120438,1.0,0.472470,0.120438,1.0,0.467073,0.236175,1.0,0.447965,0.240243,1.0,0.423342,0.349339,1.0,0.466266,0.390133,1.0,0.477762,0.393677,1.0,0.490376,0.414376,1.0,0.496197,0.432488,1.0,0.489163,0.414807,1.0,0.494014,0.424726,1.0,0.496925,0.433351,1.0,0.483826,0.418257,1.0,0.486737,0.429901,1.0,0.484069,0.427744,1.0,0.478004,0.419982,1.0,0.482856,0.434213,1.0,0.481158,0.430331,1.0,0.472183,0.420414,1.0,0.477519,0.434644,1.0,0.477519,0.432056,1.0,0.503846,0.230718,1.0,0.521510,0.229328,1.0,0.555120,0.335508,1.0,0.521458,0.403681,1.0,0.510855,0.406512,1.0,0.497530,0.415004,1.0,0.493507,0.421261,1.0,0.496021,0.442269,1.0,0.488730,0.448079,1.0,0.490993,0.441374,1.0,0.500044,0.445844,1.0,0.491495,0.455230,1.0,0.491244,0.450760,1.0,0.503564,0.446738,1.0,0.498032,0.462381,1.0,0.497278,0.459253,1.0,0.506832,0.449867,1.0,0.505072,0.456124,1.0,0.503312,0.459253,1.0,0.464772,0.428303,1.0,0.464772,0.428303,1.0,0.472392,0.610863,1.0,0.483122,0.747148,1.0,0.483122,0.747148,1.0,0.509230,0.422882,1.0,0.509230,0.422882,1.0,0.509133,0.602830,1.0,0.516836,0.749861,1.0,0.516836,0.749861,1.0
|
||||
0.487002,0.435111,1.0,0.486422,0.286973,1.0,0.486615,0.336352,1.0,0.486229,0.237594,1.0,0.480864,0.145000,1.0,0.493811,0.125788,1.0,0.493811,0.125788,1.0,0.472484,0.123192,1.0,0.472484,0.123192,1.0,0.467808,0.241649,1.0,0.449386,0.245704,1.0,0.423325,0.357409,1.0,0.461689,0.422929,1.0,0.471105,0.424587,1.0,0.482834,0.440557,1.0,0.487076,0.456529,1.0,0.481087,0.444107,1.0,0.490320,0.469838,1.0,0.487825,0.470725,1.0,0.476346,0.449874,1.0,0.485080,0.476936,1.0,0.484581,0.478711,1.0,0.470856,0.452093,1.0,0.475098,0.467619,1.0,0.476096,0.473387,1.0,0.465615,0.452980,1.0,0.467362,0.463627,1.0,0.469358,0.466732,1.0,0.504609,0.234843,1.0,0.522990,0.232093,1.0,0.549083,0.338347,1.0,0.535276,0.436469,1.0,0.521385,0.495219,1.0,0.520191,0.494794,1.0,0.517798,0.493093,1.0,0.525214,0.437802,1.0,0.525932,0.439503,1.0,0.525932,0.440354,1.0,0.520191,0.450136,1.0,0.521625,0.452263,1.0,0.525453,0.449711,1.0,0.518755,0.448435,1.0,0.520669,0.451412,1.0,0.525453,0.442055,1.0,0.525932,0.441205,1.0,0.534068,0.436526,1.0,0.510621,0.494794,1.0,0.464750,0.433747,1.0,0.464750,0.433747,1.0,0.470942,0.613663,1.0,0.483102,0.747196,1.0,0.483102,0.747196,1.0,0.509253,0.436475,1.0,0.509253,0.436475,1.0,0.509205,0.613579,1.0,0.518337,0.758109,1.0,0.518337,0.758109,1.0
|
||||
0.490077,0.439208,1.0,0.487206,0.290023,1.0,0.488163,0.339751,1.0,0.486248,0.240294,1.0,0.482373,0.153049,1.0,0.493887,0.128538,1.0,0.493887,0.128538,1.0,0.473973,0.128527,1.0,0.473973,0.128527,1.0,0.467862,0.244319,1.0,0.449475,0.248344,1.0,0.423345,0.352008,1.0,0.455519,0.431003,1.0,0.464730,0.440402,1.0,0.472934,0.451654,1.0,0.472466,0.466656,1.0,0.470591,0.461238,1.0,0.472700,0.474991,1.0,0.473404,0.484992,1.0,0.466606,0.464989,1.0,0.469184,0.478741,1.0,0.470356,0.488326,1.0,0.461214,0.465822,1.0,0.461917,0.480407,1.0,0.463089,0.487493,1.0,0.455822,0.464989,1.0,0.455822,0.472490,1.0,0.456291,0.477074,1.0,0.503887,0.236199,1.0,0.521526,0.232104,1.0,0.545995,0.343813,1.0,0.552094,0.441972,1.0,0.548417,0.456334,1.0,0.551141,0.456774,1.0,0.553120,0.448418,1.0,0.550891,0.461612,1.0,0.551385,0.465569,1.0,0.557078,0.472167,1.0,0.549161,0.480962,1.0,0.550891,0.483601,1.0,0.550646,0.484041,1.0,0.545448,0.494595,1.0,0.549161,0.495915,1.0,0.547677,0.496794,1.0,0.544953,0.497234,1.0,0.548911,0.502951,1.0,0.546193,0.505150,1.0,0.469359,0.439215,1.0,0.469359,0.439215,1.0,0.470902,0.616371,1.0,0.483096,0.749867,1.0,0.483096,0.749867,1.0,0.510794,0.439201,1.0,0.510794,0.439201,1.0,0.509253,0.613635,1.0,0.518340,0.766268,1.0,0.518340,0.766268,1.0
|
||||
0.490077,0.439208,1.0,0.487206,0.290023,1.0,0.488163,0.339751,1.0,0.486248,0.240294,1.0,0.482373,0.153049,1.0,0.493887,0.128538,1.0,0.493887,0.128538,1.0,0.473973,0.128527,1.0,0.473973,0.128527,1.0,0.467862,0.244319,1.0,0.449475,0.248344,1.0,0.423345,0.352008,1.0,0.455519,0.431003,1.0,0.464730,0.440402,1.0,0.472934,0.451654,1.0,0.472466,0.466656,1.0,0.470591,0.461238,1.0,0.472700,0.474991,1.0,0.473404,0.484992,1.0,0.466606,0.464989,1.0,0.469184,0.478741,1.0,0.470356,0.488326,1.0,0.461214,0.465822,1.0,0.461917,0.480407,1.0,0.463089,0.487493,1.0,0.455822,0.464989,1.0,0.455822,0.472490,1.0,0.456291,0.477074,1.0,0.503887,0.236199,1.0,0.521526,0.232104,1.0,0.545995,0.343813,1.0,0.552094,0.441972,1.0,0.548417,0.456334,1.0,0.551141,0.456774,1.0,0.553120,0.448418,1.0,0.550891,0.461612,1.0,0.551385,0.465569,1.0,0.557078,0.472167,1.0,0.549161,0.480962,1.0,0.550891,0.483601,1.0,0.550646,0.484041,1.0,0.545448,0.494595,1.0,0.549161,0.495915,1.0,0.547677,0.496794,1.0,0.544953,0.497234,1.0,0.548911,0.502951,1.0,0.546193,0.505150,1.0,0.469359,0.439215,1.0,0.469359,0.439215,1.0,0.470902,0.616371,1.0,0.483096,0.749867,1.0,0.483096,0.749867,1.0,0.510794,0.439201,1.0,0.510794,0.439201,1.0,0.509253,0.613635,1.0,0.518340,0.766268,1.0,0.518340,0.766268,1.0
|
||||
0.490029,0.439218,1.0,0.489459,0.292056,1.0,0.489649,0.341110,1.0,0.489268,0.243002,1.0,0.486958,0.150360,1.0,0.495370,0.123127,1.0,0.495370,0.123127,1.0,0.475472,0.125786,1.0,0.475472,0.125786,1.0,0.470877,0.245668,1.0,0.452485,0.248334,1.0,0.423300,0.352032,1.0,0.446264,0.422884,1.0,0.451928,0.423720,1.0,0.460303,0.428399,1.0,0.467481,0.435631,1.0,0.459824,0.445840,1.0,0.464131,0.459452,1.0,0.467003,0.470937,1.0,0.456235,0.451795,1.0,0.460781,0.466683,1.0,0.464370,0.478593,1.0,0.452885,0.454347,1.0,0.458149,0.465832,1.0,0.462217,0.477744,1.0,0.450493,0.454347,1.0,0.455517,0.463281,1.0,0.458628,0.469661,1.0,0.506900,0.237611,1.0,0.524531,0.232220,1.0,0.546042,0.335756,1.0,0.562880,0.428355,1.0,0.562516,0.443526,1.0,0.564339,0.450814,1.0,0.565479,0.454053,1.0,0.560469,0.440691,1.0,0.565021,0.453648,1.0,0.566391,0.452839,1.0,0.565250,0.453648,1.0,0.566391,0.455268,1.0,0.567302,0.454458,1.0,0.570260,0.467010,1.0,0.568438,0.466606,1.0,0.568214,0.467416,1.0,0.576411,0.475514,1.0,0.568667,0.451624,1.0,0.568438,0.470250,1.0,0.469321,0.439206,1.0,0.469321,0.439206,1.0,0.470923,0.618957,1.0,0.483072,0.749818,1.0,0.483072,0.749818,1.0,0.510738,0.439230,1.0,0.510738,0.439230,1.0,0.510712,0.613626,1.0,0.518336,0.768968,1.0,0.518336,0.768968,1.0
|
||||
0.490773,0.429697,1.0,0.493082,0.283544,1.0,0.492312,0.332261,1.0,0.493852,0.234826,1.0,0.489281,0.143544,1.0,0.496917,0.120356,1.0,0.496917,0.120356,1.0,0.481608,0.120378,1.0,0.481608,0.120378,1.0,0.475467,0.237560,1.0,0.457082,0.240294,1.0,0.424947,0.338333,1.0,0.432577,0.382103,1.0,0.433924,0.390719,1.0,0.433690,0.419025,1.0,0.442587,0.419442,1.0,0.432753,0.411949,1.0,0.446099,0.424020,1.0,0.447270,0.428182,1.0,0.445865,0.423188,1.0,0.450314,0.414863,1.0,0.449611,0.437341,1.0,0.430178,0.412781,1.0,0.450548,0.411949,1.0,0.447270,0.434843,1.0,0.429943,0.411949,1.0,0.429241,0.420274,1.0,0.426197,0.426518,1.0,0.510733,0.232158,1.0,0.527615,0.229490,1.0,0.550599,0.313920,1.0,0.572047,0.384823,1.0,0.586089,0.396178,1.0,0.571380,0.388264,1.0,0.567703,0.403404,1.0,0.570026,0.421985,1.0,0.567510,0.415447,1.0,0.568865,0.408221,1.0,0.570604,0.421985,1.0,0.567510,0.421297,1.0,0.569250,0.424394,1.0,0.570802,0.422673,1.0,0.569641,0.428523,1.0,0.570604,0.425770,1.0,0.572542,0.426458,1.0,0.569641,0.429556,1.0,0.570411,0.431276,1.0,0.470780,0.428319,1.0,0.470780,0.428319,1.0,0.470866,0.619012,1.0,0.483047,0.749873,1.0,0.483047,0.749873,1.0,0.510767,0.431074,1.0,0.510767,0.431074,1.0,0.510719,0.613599,1.0,0.518345,0.768917,1.0,0.518345,0.768917,1.0
|
||||
0.491520,0.426992,1.0,0.494424,0.280807,1.0,0.493456,0.329535,1.0,0.495392,0.232079,1.0,0.490836,0.146240,1.0,0.498506,0.117755,1.0,0.498506,0.117755,1.0,0.483171,0.120294,1.0,0.483171,0.120294,1.0,0.476992,0.233470,1.0,0.458592,0.234861,1.0,0.435640,0.332953,1.0,0.420270,0.335700,1.0,0.396564,0.330371,1.0,0.395467,0.336218,1.0,0.393275,0.334658,1.0,0.398317,0.338556,1.0,0.400071,0.340894,1.0,0.398536,0.344012,1.0,0.403140,0.338166,1.0,0.402044,0.340505,1.0,0.400290,0.342843,1.0,0.399194,0.338945,1.0,0.406429,0.338945,1.0,0.402044,0.354145,1.0,0.417829,0.320628,1.0,0.416074,0.321797,1.0,0.397440,0.340894,1.0,0.513779,0.230694,1.0,0.532167,0.229310,1.0,0.556750,0.313937,1.0,0.582833,0.335741,1.0,0.602453,0.332105,1.0,0.586531,0.359358,1.0,0.587318,0.359358,1.0,0.586141,0.358310,1.0,0.594391,0.347828,1.0,0.598911,0.351671,1.0,0.588104,0.346780,1.0,0.594000,0.347129,1.0,0.594589,0.346780,1.0,0.587708,0.346431,1.0,0.591839,0.343635,1.0,0.592427,0.341888,1.0,0.579651,0.343984,1.0,0.584568,0.344334,1.0,0.595375,0.369491,1.0,0.470782,0.425684,1.0,0.470782,0.425684,1.0,0.467791,0.619061,1.0,0.480046,0.749838,1.0,0.480046,0.749838,1.0,0.512258,0.428300,1.0,0.512258,0.428300,1.0,0.510749,0.616343,1.0,0.518344,0.768917,1.0,0.518344,0.768917,1.0
|
||||
0.493114,0.425641,1.0,0.494876,0.278539,1.0,0.494289,0.327573,1.0,0.495464,0.229505,1.0,0.492350,0.142235,1.0,0.501540,0.117549,1.0,0.501540,0.117549,1.0,0.484669,0.117666,1.0,0.484669,0.117666,1.0,0.477058,0.230833,1.0,0.458652,0.232161,1.0,0.437186,0.322073,1.0,0.409553,0.286554,1.0,0.405473,0.286656,1.0,0.395194,0.255124,1.0,0.387938,0.247242,1.0,0.395395,0.258707,1.0,0.395798,0.259066,1.0,0.394388,0.260141,1.0,0.394992,0.277698,1.0,0.391767,0.271249,1.0,0.389953,0.276266,1.0,0.394992,0.278773,1.0,0.394388,0.274474,1.0,0.393984,0.276982,1.0,0.390558,0.290240,1.0,0.385318,0.247242,1.0,0.390155,0.291315,1.0,0.513852,0.229385,1.0,0.532240,0.229265,1.0,0.558271,0.311077,1.0,0.591990,0.286631,1.0,0.607193,0.263393,1.0,0.598464,0.264772,1.0,0.586052,0.288219,1.0,0.587604,0.285460,1.0,0.588182,0.289943,1.0,0.587797,0.291667,1.0,0.593229,0.291667,1.0,0.597688,0.293391,1.0,0.596328,0.296149,1.0,0.597688,0.293046,1.0,0.599047,0.293736,1.0,0.599240,0.294770,1.0,0.601760,0.293736,1.0,0.599630,0.295805,1.0,0.599630,0.296149,1.0,0.470873,0.425608,1.0,0.470873,0.425608,1.0,0.461707,0.616380,1.0,0.475471,0.741752,1.0,0.475471,0.741752,1.0,0.515354,0.425673,1.0,0.515354,0.425673,1.0,0.515305,0.618950,1.0,0.518404,0.768994,1.0,0.518404,0.768994,1.0
|
||||
0.493902,0.424254,1.0,0.496154,0.278122,1.0,0.495403,0.326832,1.0,0.496905,0.229411,1.0,0.494661,0.140756,1.0,0.504615,0.114844,1.0,0.504615,0.114844,1.0,0.484756,0.114966,1.0,0.484756,0.114966,1.0,0.478521,0.229460,1.0,0.460136,0.229508,1.0,0.437132,0.313762,1.0,0.408043,0.240292,1.0,0.405241,0.235456,1.0,0.392881,0.208722,1.0,0.408125,0.240949,1.0,0.409567,0.235456,1.0,0.408125,0.240949,1.0,0.390409,0.229231,1.0,0.403593,0.236921,1.0,0.398031,0.235090,1.0,0.391027,0.237654,1.0,0.404005,0.236189,1.0,0.400915,0.238019,1.0,0.394735,0.241316,1.0,0.408331,0.235456,1.0,0.407713,0.239851,1.0,0.405653,0.250837,1.0,0.514567,0.228080,1.0,0.532229,0.226748,1.0,0.564365,0.294681,1.0,0.593516,0.245745,1.0,0.614677,0.216246,1.0,0.611380,0.246204,1.0,0.609547,0.246530,1.0,0.612479,0.241319,1.0,0.608630,0.238389,1.0,0.610281,0.241645,1.0,0.607896,0.234481,1.0,0.607896,0.235458,1.0,0.608630,0.240343,1.0,0.606797,0.234156,1.0,0.607714,0.234806,1.0,0.609912,0.234156,1.0,0.590313,0.236435,1.0,0.600938,0.247181,1.0,0.601854,0.248808,1.0,0.470919,0.422946,1.0,0.470919,0.422946,1.0,0.460222,0.616383,1.0,0.472437,0.744486,1.0,0.472437,0.744486,1.0,0.516885,0.425561,1.0,0.516885,0.425561,1.0,0.516859,0.619031,1.0,0.519840,0.768993,1.0,0.519840,0.768993,1.0
|
||||
0.493902,0.424254,1.0,0.496154,0.278122,1.0,0.495403,0.326832,1.0,0.496905,0.229411,1.0,0.494661,0.140756,1.0,0.504615,0.114844,1.0,0.504615,0.114844,1.0,0.484756,0.114966,1.0,0.484756,0.114966,1.0,0.478521,0.229460,1.0,0.460136,0.229508,1.0,0.437132,0.313762,1.0,0.408043,0.240292,1.0,0.405241,0.235456,1.0,0.392881,0.208722,1.0,0.408125,0.240949,1.0,0.409567,0.235456,1.0,0.408125,0.240949,1.0,0.390409,0.229231,1.0,0.403593,0.236921,1.0,0.398031,0.235090,1.0,0.391027,0.237654,1.0,0.404005,0.236189,1.0,0.400915,0.238019,1.0,0.394735,0.241316,1.0,0.408331,0.235456,1.0,0.407713,0.239851,1.0,0.405653,0.250837,1.0,0.514567,0.228080,1.0,0.532229,0.226748,1.0,0.564365,0.294681,1.0,0.593516,0.245745,1.0,0.614677,0.216246,1.0,0.611380,0.246204,1.0,0.609547,0.246530,1.0,0.612479,0.241319,1.0,0.608630,0.238389,1.0,0.610281,0.241645,1.0,0.607896,0.234481,1.0,0.607896,0.235458,1.0,0.608630,0.240343,1.0,0.606797,0.234156,1.0,0.607714,0.234806,1.0,0.609912,0.234156,1.0,0.590313,0.236435,1.0,0.600938,0.247181,1.0,0.601854,0.248808,1.0,0.470919,0.422946,1.0,0.470919,0.422946,1.0,0.460222,0.616383,1.0,0.472437,0.744486,1.0,0.472437,0.744486,1.0,0.516885,0.425561,1.0,0.516885,0.425561,1.0,0.516859,0.619031,1.0,0.519840,0.768993,1.0,0.519840,0.768993,1.0
|
||||
0.494649,0.425631,1.0,0.496410,0.276491,1.0,0.495823,0.326204,1.0,0.496997,0.226778,1.0,0.498432,0.140718,1.0,0.506114,0.109514,1.0,0.506114,0.109514,1.0,0.486222,0.112233,1.0,0.486222,0.112233,1.0,0.478604,0.228056,1.0,0.460211,0.229335,1.0,0.435617,0.297606,1.0,0.411034,0.210320,1.0,0.378974,0.160827,1.0,0.409413,0.207380,1.0,0.411651,0.209767,1.0,0.409636,0.207380,1.0,0.411651,0.210165,1.0,0.411651,0.209767,1.0,0.394641,0.196239,1.0,0.394417,0.194249,1.0,0.399341,0.204992,1.0,0.409413,0.205390,1.0,0.394417,0.195443,1.0,0.401579,0.205788,1.0,0.411651,0.207380,1.0,0.411203,0.210562,1.0,0.403370,0.207777,1.0,0.515369,0.226715,1.0,0.533740,0.226653,1.0,0.570495,0.286596,1.0,0.593490,0.207694,1.0,0.592109,0.198680,1.0,0.616766,0.191797,1.0,0.606984,0.170789,1.0,0.615135,0.192522,1.0,0.610042,0.172962,1.0,0.608208,0.176584,1.0,0.610651,0.191073,1.0,0.606984,0.186726,1.0,0.609839,0.189262,1.0,0.613302,0.189624,1.0,0.606375,0.189624,1.0,0.604130,0.191435,1.0,0.592313,0.197593,1.0,0.592521,0.197956,1.0,0.602094,0.172600,1.0,0.470908,0.425596,1.0,0.470908,0.425596,1.0,0.463237,0.619004,1.0,0.470877,0.752584,1.0,0.470877,0.752584,1.0,0.518390,0.425665,1.0,0.518390,0.425665,1.0,0.516866,0.619098,1.0,0.518414,0.771614,1.0,0.518414,0.771614,1.0
|
||||
0.494659,0.425584,1.0,0.497497,0.276329,1.0,0.496551,0.326081,1.0,0.498444,0.226577,1.0,0.499217,0.138056,1.0,0.506159,0.106736,1.0,0.506159,0.106736,1.0,0.486252,0.109452,1.0,0.486252,0.109452,1.0,0.480057,0.226579,1.0,0.461670,0.226581,1.0,0.435566,0.292170,1.0,0.418772,0.191181,1.0,0.419749,0.172449,1.0,0.413955,0.159143,1.0,0.408884,0.140685,1.0,0.400433,0.141114,1.0,0.407194,0.141114,1.0,0.405987,0.161719,1.0,0.402123,0.159143,1.0,0.402606,0.169444,1.0,0.402848,0.172879,1.0,0.395604,0.161719,1.0,0.400916,0.170303,1.0,0.404055,0.171162,1.0,0.416128,0.190478,1.0,0.400192,0.173308,1.0,0.403090,0.183181,1.0,0.516120,0.226551,1.0,0.533797,0.226525,1.0,0.570542,0.273042,1.0,0.587375,0.185682,1.0,0.585516,0.176426,1.0,0.600760,0.149326,1.0,0.601182,0.144433,1.0,0.605208,0.143304,1.0,0.604151,0.140669,1.0,0.602245,0.150456,1.0,0.599703,0.166264,1.0,0.601182,0.165887,1.0,0.597375,0.169275,1.0,0.590385,0.176426,1.0,0.604151,0.165887,1.0,0.597583,0.170028,1.0,0.586786,0.176426,1.0,0.588693,0.178684,1.0,0.602453,0.182448,1.0,0.470913,0.425552,1.0,0.470913,0.425552,1.0,0.469313,0.619023,1.0,0.467807,0.766229,1.0,0.467807,0.766229,1.0,0.518404,0.425617,1.0,0.518404,0.425617,1.0,0.518343,0.619186,1.0,0.518420,0.771762,1.0,0.518420,0.771762,1.0
|
||||
0.494605,0.424257,1.0,0.496412,0.274009,1.0,0.495810,0.324092,1.0,0.497015,0.223927,1.0,0.498476,0.132610,1.0,0.506146,0.101330,1.0,0.506146,0.101330,1.0,0.486253,0.104018,1.0,0.486253,0.104018,1.0,0.479362,0.222590,1.0,0.461710,0.221254,1.0,0.435624,0.292036,1.0,0.429466,0.185870,1.0,0.427433,0.175633,1.0,0.430615,0.145616,1.0,0.428167,0.129955,1.0,0.413240,0.160842,1.0,0.401494,0.164322,1.0,0.402718,0.165193,1.0,0.409080,0.149096,1.0,0.395866,0.159102,1.0,0.390727,0.159102,1.0,0.405409,0.135610,1.0,0.396111,0.153881,1.0,0.392195,0.154752,1.0,0.402963,0.121254,1.0,0.395132,0.133000,1.0,0.394153,0.135175,1.0,0.515385,0.223891,1.0,0.533755,0.223855,1.0,0.568979,0.272902,1.0,0.581255,0.177631,1.0,0.578359,0.160932,1.0,0.580604,0.168104,1.0,0.579255,0.169299,1.0,0.580828,0.169299,1.0,0.596510,0.126273,1.0,0.587995,0.163323,1.0,0.596734,0.146193,1.0,0.598083,0.150973,1.0,0.600771,0.154558,1.0,0.602563,0.143005,1.0,0.598755,0.153363,1.0,0.600547,0.154558,1.0,0.578807,0.164119,1.0,0.579932,0.167706,1.0,0.604802,0.151371,1.0,0.470877,0.422920,1.0,0.470877,0.422920,1.0,0.470801,0.619135,1.0,0.461703,0.777219,1.0,0.461703,0.777219,1.0,0.518334,0.425593,1.0,0.518334,0.425593,1.0,0.518332,0.621717,1.0,0.518415,0.774385,1.0,0.518415,0.774385,1.0
|
||||
0.494601,0.422855,1.0,0.496384,0.271612,1.0,0.495790,0.322027,1.0,0.496979,0.221198,1.0,0.496185,0.131256,1.0,0.506147,0.101285,1.0,0.506147,0.101285,1.0,0.486227,0.101350,1.0,0.486227,0.101350,1.0,0.479353,0.219832,1.0,0.461727,0.218466,1.0,0.438656,0.294688,1.0,0.444839,0.188485,1.0,0.443696,0.176069,1.0,0.436352,0.141253,1.0,0.435618,0.138642,1.0,0.436107,0.138642,1.0,0.434149,0.139947,1.0,0.434149,0.139947,1.0,0.434394,0.139077,1.0,0.433904,0.141253,1.0,0.436107,0.156485,1.0,0.436352,0.151263,1.0,0.435863,0.153439,1.0,0.433170,0.159967,1.0,0.440024,0.149087,1.0,0.441983,0.154309,1.0,0.431946,0.163448,1.0,0.515351,0.219856,1.0,0.533724,0.218513,1.0,0.561307,0.272982,1.0,0.567401,0.174880,1.0,0.562849,0.167449,1.0,0.577333,0.128023,1.0,0.561719,0.173483,1.0,0.578917,0.127621,1.0,0.562849,0.173886,1.0,0.567828,0.163829,1.0,0.579823,0.142506,1.0,0.576203,0.153369,1.0,0.586609,0.150955,1.0,0.578917,0.137679,1.0,0.581859,0.152966,1.0,0.581177,0.152966,1.0,0.575974,0.126817,1.0,0.562849,0.175093,1.0,0.588422,0.156989,1.0,0.470859,0.422817,1.0,0.470859,0.422817,1.0,0.470796,0.621769,1.0,0.460211,0.788088,1.0,0.460211,0.788088,1.0,0.518344,0.422894,1.0,0.518344,0.422894,1.0,0.516879,0.621856,1.0,0.518424,0.774423,1.0,0.518424,0.774423,1.0
|
||||
0.493827,0.421477,1.0,0.496104,0.269204,1.0,0.495345,0.319962,1.0,0.496863,0.218446,1.0,0.494643,0.129937,1.0,0.506114,0.104028,1.0,0.506114,0.104028,1.0,0.486216,0.104066,1.0,0.486216,0.104066,1.0,0.479274,0.218474,1.0,0.461684,0.218501,1.0,0.447815,0.302959,1.0,0.464719,0.207476,1.0,0.465708,0.204529,1.0,0.485675,0.148630,1.0,0.477642,0.143733,1.0,0.484986,0.146998,1.0,0.483380,0.148222,1.0,0.478560,0.147406,1.0,0.484528,0.149038,1.0,0.477413,0.158831,1.0,0.477642,0.161279,1.0,0.480167,0.145366,1.0,0.476954,0.161279,1.0,0.476495,0.165358,1.0,0.479937,0.144957,1.0,0.479019,0.144550,1.0,0.462724,0.170663,1.0,0.513741,0.218441,1.0,0.530620,0.218435,1.0,0.553651,0.292032,1.0,0.542948,0.202148,1.0,0.550578,0.145522,1.0,0.538781,0.161251,1.0,0.538573,0.161626,1.0,0.537729,0.163873,1.0,0.538781,0.165370,1.0,0.516876,0.144773,1.0,0.547208,0.151889,1.0,0.547000,0.167244,1.0,0.545734,0.164621,1.0,0.547208,0.151889,1.0,0.546578,0.165370,1.0,0.545526,0.163498,1.0,0.540047,0.162375,1.0,0.539203,0.163498,1.0,0.539203,0.163873,1.0,0.470817,0.420162,1.0,0.470817,0.420162,1.0,0.470784,0.624519,1.0,0.460206,0.790773,1.0,0.460206,0.790773,1.0,0.516836,0.422792,1.0,0.516836,0.422792,1.0,0.516857,0.624509,1.0,0.518407,0.774419,1.0,0.518407,0.774419,1.0
|
||||
0.493827,0.421477,1.0,0.496104,0.269204,1.0,0.495345,0.319962,1.0,0.496863,0.218446,1.0,0.494643,0.129937,1.0,0.506114,0.104028,1.0,0.506114,0.104028,1.0,0.486216,0.104066,1.0,0.486216,0.104066,1.0,0.479274,0.218474,1.0,0.461684,0.218501,1.0,0.447815,0.302959,1.0,0.464719,0.207476,1.0,0.465708,0.204529,1.0,0.485675,0.148630,1.0,0.477642,0.143733,1.0,0.484986,0.146998,1.0,0.483380,0.148222,1.0,0.478560,0.147406,1.0,0.484528,0.149038,1.0,0.477413,0.158831,1.0,0.477642,0.161279,1.0,0.480167,0.145366,1.0,0.476954,0.161279,1.0,0.476495,0.165358,1.0,0.479937,0.144957,1.0,0.479019,0.144550,1.0,0.462724,0.170663,1.0,0.513741,0.218441,1.0,0.530620,0.218435,1.0,0.553651,0.292032,1.0,0.542948,0.202148,1.0,0.550578,0.145522,1.0,0.538781,0.161251,1.0,0.538573,0.161626,1.0,0.537729,0.163873,1.0,0.538781,0.165370,1.0,0.516876,0.144773,1.0,0.547208,0.151889,1.0,0.547000,0.167244,1.0,0.545734,0.164621,1.0,0.547208,0.151889,1.0,0.546578,0.165370,1.0,0.545526,0.163498,1.0,0.540047,0.162375,1.0,0.539203,0.163498,1.0,0.539203,0.163873,1.0,0.470817,0.420162,1.0,0.470817,0.420162,1.0,0.470784,0.624519,1.0,0.460206,0.790773,1.0,0.460206,0.790773,1.0,0.516836,0.422792,1.0,0.516836,0.422792,1.0,0.516857,0.624509,1.0,0.518407,0.774419,1.0,0.518407,0.774419,1.0
|
||||
0.493837,0.425626,1.0,0.495059,0.274298,1.0,0.494652,0.324741,1.0,0.495467,0.223856,1.0,0.493128,0.138041,1.0,0.504571,0.114944,1.0,0.504571,0.114944,1.0,0.484731,0.117528,1.0,0.484731,0.117528,1.0,0.477811,0.222499,1.0,0.460155,0.221142,1.0,0.454011,0.311048,1.0,0.486178,0.234795,1.0,0.502912,0.190207,1.0,0.507720,0.207301,1.0,0.507939,0.227115,1.0,0.509905,0.211186,1.0,0.508157,0.227115,1.0,0.503786,0.229057,1.0,0.506190,0.210021,1.0,0.506628,0.226338,1.0,0.501601,0.234885,1.0,0.501164,0.210409,1.0,0.499853,0.236051,1.0,0.500071,0.236439,1.0,0.497449,0.220510,1.0,0.496356,0.222065,1.0,0.495701,0.222065,1.0,0.513804,0.223860,1.0,0.532141,0.223864,1.0,0.545937,0.294940,1.0,0.512245,0.226761,1.0,0.509867,0.223128,1.0,0.487186,0.230156,1.0,0.490724,0.232745,1.0,0.487186,0.228676,1.0,0.488851,0.232006,1.0,0.492389,0.231635,1.0,0.493637,0.175040,1.0,0.492805,0.202413,1.0,0.491972,0.216839,1.0,0.494677,0.175780,1.0,0.493012,0.202782,1.0,0.491972,0.210920,1.0,0.501752,0.201673,1.0,0.486770,0.231635,1.0,0.498215,0.233855,1.0,0.470802,0.425605,1.0,0.470802,0.425605,1.0,0.470786,0.627311,1.0,0.460231,0.790769,1.0,0.460231,0.790769,1.0,0.516871,0.425647,1.0,0.516871,0.425647,1.0,0.516835,0.629959,1.0,0.518399,0.774521,1.0,0.518399,0.774521,1.0
|
||||
0.493079,0.428386,1.0,0.494817,0.277039,1.0,0.494238,0.327488,1.0,0.495396,0.226590,1.0,0.492326,0.140815,1.0,0.503035,0.117730,1.0,0.503035,0.117730,1.0,0.484656,0.120251,1.0,0.484656,0.120251,1.0,0.477026,0.226644,1.0,0.458656,0.226699,1.0,0.453981,0.319342,1.0,0.487740,0.251330,1.0,0.507615,0.244784,1.0,0.496593,0.249960,1.0,0.491602,0.259204,1.0,0.499504,0.234431,1.0,0.504496,0.240718,1.0,0.499296,0.236650,1.0,0.498257,0.224819,1.0,0.503872,0.228886,1.0,0.499712,0.225558,1.0,0.496593,0.218904,1.0,0.504080,0.218534,1.0,0.498465,0.216685,1.0,0.494721,0.217794,1.0,0.503248,0.210400,1.0,0.498257,0.209660,1.0,0.513763,0.226568,1.0,0.532130,0.226546,1.0,0.544411,0.305667,1.0,0.510729,0.245663,1.0,0.510110,0.230354,1.0,0.500392,0.198911,1.0,0.496894,0.207204,1.0,0.495533,0.211695,1.0,0.494756,0.215842,1.0,0.500003,0.216532,1.0,0.501947,0.216878,1.0,0.496894,0.222061,1.0,0.501753,0.223789,1.0,0.507972,0.227590,1.0,0.498448,0.234845,1.0,0.499420,0.232772,1.0,0.504668,0.240028,1.0,0.498060,0.236228,1.0,0.499420,0.240374,1.0,0.469332,0.428392,1.0,0.469332,0.428392,1.0,0.469305,0.630047,1.0,0.461669,0.790735,1.0,0.461669,0.790735,1.0,0.516825,0.428381,1.0,0.516825,0.428381,1.0,0.513788,0.632732,1.0,0.518391,0.774554,1.0,0.518391,0.774554,1.0
|
||||
0.492311,0.435130,1.0,0.493498,0.278812,1.0,0.493103,0.330918,1.0,0.493894,0.226706,1.0,0.490867,0.140883,1.0,0.499995,0.120294,1.0,0.499995,0.120294,1.0,0.483211,0.120321,1.0,0.483211,0.120321,1.0,0.476248,0.226740,1.0,0.458603,0.226774,1.0,0.447942,0.322098,1.0,0.481598,0.256601,1.0,0.505112,0.236794,1.0,0.506740,0.201719,1.0,0.508367,0.220160,1.0,0.508773,0.203165,1.0,0.504502,0.189424,1.0,0.500434,0.207143,1.0,0.499010,0.204611,1.0,0.497790,0.210035,1.0,0.495146,0.213290,1.0,0.498400,0.209674,1.0,0.494942,0.211120,1.0,0.490264,0.216906,1.0,0.484976,0.207866,1.0,0.483755,0.205696,1.0,0.486603,0.215821,1.0,0.512267,0.226658,1.0,0.530641,0.226610,1.0,0.546042,0.297616,1.0,0.518363,0.245619,1.0,0.507259,0.201615,1.0,0.505454,0.203949,1.0,0.500694,0.210077,1.0,0.506603,0.203949,1.0,0.507095,0.206575,1.0,0.501843,0.208034,1.0,0.509557,0.216205,1.0,0.509229,0.217372,1.0,0.507588,0.218831,1.0,0.509557,0.228460,1.0,0.508737,0.229336,1.0,0.503812,0.227294,1.0,0.510214,0.236631,1.0,0.511199,0.238965,1.0,0.511363,0.241299,1.0,0.469291,0.433788,1.0,0.469291,0.433788,1.0,0.469284,0.632719,1.0,0.461697,0.790808,1.0,0.461697,0.790808,1.0,0.515332,0.436472,1.0,0.515332,0.436472,1.0,0.512236,0.635383,1.0,0.518418,0.777237,1.0,0.518418,0.777237,1.0
|
||||
0.490040,0.432423,1.0,0.491742,0.278016,1.0,0.491175,0.329485,1.0,0.492310,0.226547,1.0,0.490830,0.139444,1.0,0.498456,0.117738,1.0,0.498456,0.117738,1.0,0.483163,0.117763,1.0,0.483163,0.117763,1.0,0.474696,0.226643,1.0,0.457082,0.226738,1.0,0.446274,0.322054,1.0,0.470887,0.240332,1.0,0.477947,0.223187,1.0,0.478797,0.236790,1.0,0.470508,0.252659,1.0,0.471358,0.251904,1.0,0.480497,0.167265,1.0,0.465407,0.251148,1.0,0.473696,0.173310,1.0,0.473908,0.177467,1.0,0.474546,0.178979,1.0,0.477734,0.192581,1.0,0.471570,0.180490,1.0,0.471358,0.182001,1.0,0.473483,0.196359,1.0,0.463919,0.186157,1.0,0.463919,0.184269,1.0,0.509184,0.225182,1.0,0.526057,0.223817,1.0,0.555161,0.294816,1.0,0.532109,0.232103,1.0,0.516704,0.175633,1.0,0.518517,0.190458,1.0,0.526313,0.185624,1.0,0.526313,0.191426,1.0,0.526495,0.193037,1.0,0.527219,0.191426,1.0,0.523776,0.191748,1.0,0.523953,0.194004,1.0,0.527401,0.192393,1.0,0.523594,0.193681,1.0,0.522687,0.192715,1.0,0.528307,0.192393,1.0,0.520692,0.204318,1.0,0.522141,0.199806,1.0,0.524500,0.184657,1.0,0.466285,0.433765,1.0,0.466285,0.433765,1.0,0.469305,0.635385,1.0,0.461720,0.793539,1.0,0.461720,0.793539,1.0,0.513795,0.431081,1.0,0.513795,0.431081,1.0,0.510766,0.632733,1.0,0.519836,0.779847,1.0,0.519836,0.779847,1.0
|
||||
0.487781,0.425682,1.0,0.492324,0.274378,1.0,0.490810,0.324813,1.0,0.493839,0.223944,1.0,0.490052,0.139384,1.0,0.497018,0.117513,1.0,0.497018,0.117513,1.0,0.483097,0.117549,1.0,0.483097,0.117549,1.0,0.476226,0.225251,1.0,0.458614,0.226559,1.0,0.440245,0.316581,1.0,0.455515,0.226549,1.0,0.454733,0.181123,1.0,0.454949,0.198755,1.0,0.455595,0.217536,1.0,0.451068,0.200288,1.0,0.442659,0.219453,1.0,0.443091,0.222903,1.0,0.449774,0.217536,1.0,0.449343,0.225586,1.0,0.447834,0.234785,1.0,0.449774,0.219069,1.0,0.449343,0.225203,1.0,0.445893,0.222519,1.0,0.452793,0.220603,1.0,0.456242,0.222903,1.0,0.452577,0.225969,1.0,0.509958,0.222560,1.0,0.526078,0.221176,1.0,0.556760,0.294687,1.0,0.546005,0.210394,1.0,0.541661,0.184690,1.0,0.543641,0.209000,1.0,0.550974,0.206181,1.0,0.550776,0.205477,1.0,0.552161,0.206181,1.0,0.552359,0.204772,1.0,0.552161,0.204772,1.0,0.554344,0.204420,1.0,0.550182,0.204068,1.0,0.547010,0.207239,1.0,0.545031,0.217104,1.0,0.551370,0.204068,1.0,0.552161,0.204772,1.0,0.546021,0.195260,1.0,0.551172,0.204068,1.0,0.464772,0.425700,1.0,0.464772,0.425700,1.0,0.469319,0.635422,1.0,0.464723,0.793380,1.0,0.464723,0.793380,1.0,0.510790,0.425664,1.0,0.510790,0.425664,1.0,0.512260,0.632723,1.0,0.518427,0.777219,1.0,0.518427,0.777219,1.0
|
||||
0.487781,0.425682,1.0,0.492324,0.274378,1.0,0.490810,0.324813,1.0,0.493839,0.223944,1.0,0.490052,0.139384,1.0,0.497018,0.117513,1.0,0.497018,0.117513,1.0,0.483097,0.117549,1.0,0.483097,0.117549,1.0,0.476226,0.225251,1.0,0.458614,0.226559,1.0,0.440245,0.316581,1.0,0.455515,0.226549,1.0,0.454733,0.181123,1.0,0.454949,0.198755,1.0,0.455595,0.217536,1.0,0.451068,0.200288,1.0,0.442659,0.219453,1.0,0.443091,0.222903,1.0,0.449774,0.217536,1.0,0.449343,0.225586,1.0,0.447834,0.234785,1.0,0.449774,0.219069,1.0,0.449343,0.225203,1.0,0.445893,0.222519,1.0,0.452793,0.220603,1.0,0.456242,0.222903,1.0,0.452577,0.225969,1.0,0.509958,0.222560,1.0,0.526078,0.221176,1.0,0.556760,0.294687,1.0,0.546005,0.210394,1.0,0.541661,0.184690,1.0,0.543641,0.209000,1.0,0.550974,0.206181,1.0,0.550776,0.205477,1.0,0.552161,0.206181,1.0,0.552359,0.204772,1.0,0.552161,0.204772,1.0,0.554344,0.204420,1.0,0.550182,0.204068,1.0,0.547010,0.207239,1.0,0.545031,0.217104,1.0,0.551370,0.204068,1.0,0.552161,0.204772,1.0,0.546021,0.195260,1.0,0.551172,0.204068,1.0,0.464772,0.425700,1.0,0.464772,0.425700,1.0,0.469319,0.635422,1.0,0.464723,0.793380,1.0,0.464723,0.793380,1.0,0.510790,0.425664,1.0,0.510790,0.425664,1.0,0.512260,0.632723,1.0,0.518427,0.777219,1.0,0.518427,0.777219,1.0
|
||||
0.487007,0.428337,1.0,0.491010,0.275035,1.0,0.489675,0.326136,1.0,0.492344,0.223934,1.0,0.489992,0.136701,1.0,0.496977,0.109483,1.0,0.496977,0.109483,1.0,0.481619,0.112211,1.0,0.481619,0.112211,1.0,0.473938,0.225222,1.0,0.455532,0.226509,1.0,0.435619,0.311035,1.0,0.437133,0.207482,1.0,0.438583,0.181331,1.0,0.437395,0.175843,1.0,0.448558,0.161487,1.0,0.431458,0.148397,1.0,0.425045,0.137842,1.0,0.426232,0.145019,1.0,0.430745,0.153886,1.0,0.429320,0.152197,1.0,0.426232,0.158109,1.0,0.430745,0.158954,1.0,0.429795,0.158531,1.0,0.428608,0.161065,1.0,0.431220,0.161487,1.0,0.429320,0.161909,1.0,0.425282,0.164443,1.0,0.510740,0.222559,1.0,0.529135,0.221183,1.0,0.558318,0.278489,1.0,0.558323,0.191228,1.0,0.570531,0.157452,1.0,0.561130,0.156030,1.0,0.559927,0.158163,1.0,0.556328,0.189464,1.0,0.555526,0.190175,1.0,0.555526,0.191597,1.0,0.556125,0.190886,1.0,0.555125,0.193020,1.0,0.556526,0.191954,1.0,0.556328,0.191242,1.0,0.555927,0.194799,1.0,0.561328,0.189107,1.0,0.555927,0.191597,1.0,0.554724,0.191242,1.0,0.562328,0.189107,1.0,0.463249,0.428344,1.0,0.463249,0.428344,1.0,0.469318,0.635417,1.0,0.466258,0.793425,1.0,0.466258,0.793425,1.0,0.510765,0.428331,1.0,0.510765,0.428331,1.0,0.513826,0.635445,1.0,0.519893,0.777177,1.0,0.519893,0.777177,1.0
|
||||
0.487007,0.428345,1.0,0.489856,0.275033,1.0,0.488906,0.326137,1.0,0.490805,0.223930,1.0,0.489980,0.131277,1.0,0.496930,0.106756,1.0,0.496930,0.106756,1.0,0.481558,0.106735,1.0,0.481558,0.106735,1.0,0.472418,0.223922,1.0,0.454031,0.223914,1.0,0.434096,0.297504,1.0,0.424895,0.196693,1.0,0.425840,0.182157,1.0,0.415771,0.156764,1.0,0.407809,0.121795,1.0,0.415537,0.152184,1.0,0.409917,0.136781,1.0,0.408980,0.124709,1.0,0.416005,0.155098,1.0,0.410620,0.148855,1.0,0.409917,0.132203,1.0,0.417644,0.157180,1.0,0.413664,0.153017,1.0,0.411556,0.134284,1.0,0.416473,0.156764,1.0,0.416005,0.153017,1.0,0.418581,0.138447,1.0,0.509194,0.222559,1.0,0.527583,0.221188,1.0,0.559771,0.275827,1.0,0.568979,0.183020,1.0,0.569641,0.165455,1.0,0.574609,0.147401,1.0,0.578068,0.134341,1.0,0.569208,0.175826,1.0,0.566828,0.181204,1.0,0.572234,0.166223,1.0,0.588219,0.148169,1.0,0.592328,0.135109,1.0,0.594271,0.132420,1.0,0.590167,0.147401,1.0,0.568125,0.181588,1.0,0.575474,0.174290,1.0,0.566396,0.175442,1.0,0.567260,0.182356,1.0,0.571151,0.183893,1.0,0.463248,0.428324,1.0,0.463248,0.428324,1.0,0.469332,0.635400,1.0,0.466242,0.793543,1.0,0.466242,0.793543,1.0,0.510767,0.428366,1.0,0.510767,0.428366,1.0,0.516824,0.638057,1.0,0.519901,0.777189,1.0,0.519901,0.777189,1.0
|
||||
0.486957,0.428343,1.0,0.489851,0.275039,1.0,0.488887,0.326140,1.0,0.490816,0.223938,1.0,0.489274,0.128576,1.0,0.496880,0.101363,1.0,0.496880,0.101363,1.0,0.478560,0.104060,1.0,0.478560,0.104060,1.0,0.472404,0.223927,1.0,0.453991,0.223917,1.0,0.434031,0.294806,1.0,0.420294,0.191252,1.0,0.418201,0.183099,1.0,0.414541,0.161849,1.0,0.406003,0.153609,1.0,0.406491,0.151442,1.0,0.399417,0.135830,1.0,0.396978,0.123686,1.0,0.407711,0.151875,1.0,0.400881,0.135830,1.0,0.400393,0.121084,1.0,0.410882,0.154477,1.0,0.404784,0.137564,1.0,0.402832,0.125855,1.0,0.416249,0.155778,1.0,0.412834,0.141901,1.0,0.410638,0.135395,1.0,0.509218,0.222570,1.0,0.527620,0.221202,1.0,0.558208,0.278436,1.0,0.572089,0.180365,1.0,0.575276,0.168612,1.0,0.572031,0.181390,1.0,0.570870,0.180978,1.0,0.584089,0.145941,1.0,0.571797,0.180154,1.0,0.604026,0.129453,1.0,0.587099,0.140169,1.0,0.596609,0.136460,1.0,0.604026,0.131102,1.0,0.592203,0.142231,1.0,0.596839,0.136048,1.0,0.605417,0.129041,1.0,0.591740,0.133575,1.0,0.597766,0.131926,1.0,0.605187,0.126568,1.0,0.463207,0.428325,1.0,0.463207,0.428325,1.0,0.469368,0.638171,1.0,0.467783,0.796168,1.0,0.467783,0.796168,1.0,0.510707,0.428360,1.0,0.510707,0.428360,1.0,0.516858,0.638103,1.0,0.519930,0.777255,1.0,0.519930,0.777255,1.0
|
||||
0.486946,0.428368,1.0,0.488701,0.275036,1.0,0.488116,0.326146,1.0,0.489286,0.223925,1.0,0.488493,0.132620,1.0,0.495425,0.101333,1.0,0.495425,0.101333,1.0,0.475488,0.104085,1.0,0.475488,0.104085,1.0,0.470882,0.223919,1.0,0.452477,0.223913,1.0,0.434112,0.297484,1.0,0.421742,0.194006,1.0,0.419842,0.190044,1.0,0.417659,0.196080,1.0,0.404077,0.161153,1.0,0.406502,0.160290,1.0,0.399226,0.140886,1.0,0.396315,0.127087,1.0,0.407230,0.158134,1.0,0.400923,0.140455,1.0,0.399226,0.123638,1.0,0.410626,0.158134,1.0,0.404804,0.140023,1.0,0.402621,0.127087,1.0,0.415234,0.156841,1.0,0.410868,0.141318,1.0,0.408685,0.135711,1.0,0.508445,0.222544,1.0,0.527604,0.221163,1.0,0.549083,0.291982,1.0,0.568953,0.191186,1.0,0.572573,0.173596,1.0,0.578448,0.158358,1.0,0.581630,0.146169,1.0,0.589224,0.152264,1.0,0.594120,0.144863,1.0,0.600734,0.138768,1.0,0.589224,0.157488,1.0,0.594609,0.147040,1.0,0.602448,0.139203,1.0,0.591182,0.153569,1.0,0.595344,0.146605,1.0,0.603672,0.138332,1.0,0.590448,0.153134,1.0,0.594365,0.143121,1.0,0.603672,0.135720,1.0,0.463185,0.428361,1.0,0.463185,0.428361,1.0,0.469367,0.640752,1.0,0.469277,0.796152,1.0,0.469277,0.796152,1.0,0.510707,0.428374,1.0,0.510707,0.428374,1.0,0.516864,0.638146,1.0,0.519943,0.777210,1.0,0.519943,0.777210,1.0
|
||||
0.485477,0.431070,1.0,0.488301,0.275757,1.0,0.487360,0.327528,1.0,0.489243,0.223985,1.0,0.488442,0.133985,1.0,0.495381,0.106700,1.0,0.495381,0.106700,1.0,0.475472,0.109428,1.0,0.475472,0.109428,1.0,0.471620,0.225250,1.0,0.453997,0.226514,1.0,0.435695,0.311179,1.0,0.427950,0.207699,1.0,0.426830,0.185466,1.0,0.423000,0.171423,1.0,0.418213,0.151850,1.0,0.414863,0.152701,1.0,0.412947,0.147169,1.0,0.409118,0.139936,1.0,0.416298,0.159935,1.0,0.412708,0.156106,1.0,0.407682,0.144191,1.0,0.418453,0.167169,1.0,0.414623,0.162062,1.0,0.412708,0.156106,1.0,0.422282,0.169296,1.0,0.416298,0.164616,1.0,0.410793,0.173977,1.0,0.506892,0.223918,1.0,0.524542,0.223851,1.0,0.544385,0.302955,1.0,0.556661,0.207715,1.0,0.556458,0.194207,1.0,0.551526,0.206156,1.0,0.553094,0.206554,1.0,0.554214,0.193411,1.0,0.552870,0.206554,1.0,0.556234,0.206953,1.0,0.564969,0.178675,1.0,0.572359,0.186641,1.0,0.572135,0.205757,1.0,0.565193,0.175489,1.0,0.566312,0.168320,1.0,0.571464,0.200580,1.0,0.565193,0.171108,1.0,0.568104,0.161948,1.0,0.570792,0.156372,1.0,0.461706,0.431084,1.0,0.461706,0.431084,1.0,0.469358,0.640867,1.0,0.469313,0.796175,1.0,0.469313,0.796175,1.0,0.509248,0.431056,1.0,0.509248,0.431056,1.0,0.516881,0.638144,1.0,0.519950,0.777231,1.0,0.519950,0.777231,1.0
|
||||
0.485477,0.431070,1.0,0.488301,0.275757,1.0,0.487360,0.327528,1.0,0.489243,0.223985,1.0,0.488442,0.133985,1.0,0.495381,0.106700,1.0,0.495381,0.106700,1.0,0.475472,0.109428,1.0,0.475472,0.109428,1.0,0.471620,0.225250,1.0,0.453997,0.226514,1.0,0.435695,0.311179,1.0,0.427950,0.207699,1.0,0.426830,0.185466,1.0,0.423000,0.171423,1.0,0.418213,0.151850,1.0,0.414863,0.152701,1.0,0.412947,0.147169,1.0,0.409118,0.139936,1.0,0.416298,0.159935,1.0,0.412708,0.156106,1.0,0.407682,0.144191,1.0,0.418453,0.167169,1.0,0.414623,0.162062,1.0,0.412708,0.156106,1.0,0.422282,0.169296,1.0,0.416298,0.164616,1.0,0.410793,0.173977,1.0,0.506892,0.223918,1.0,0.524542,0.223851,1.0,0.544385,0.302955,1.0,0.556661,0.207715,1.0,0.556458,0.194207,1.0,0.551526,0.206156,1.0,0.553094,0.206554,1.0,0.554214,0.193411,1.0,0.552870,0.206554,1.0,0.556234,0.206953,1.0,0.564969,0.178675,1.0,0.572359,0.186641,1.0,0.572135,0.205757,1.0,0.565193,0.175489,1.0,0.566312,0.168320,1.0,0.571464,0.200580,1.0,0.565193,0.171108,1.0,0.568104,0.161948,1.0,0.570792,0.156372,1.0,0.461706,0.431084,1.0,0.461706,0.431084,1.0,0.469358,0.640867,1.0,0.469313,0.796175,1.0,0.469313,0.796175,1.0,0.509248,0.431056,1.0,0.509248,0.431056,1.0,0.516881,0.638144,1.0,0.519950,0.777231,1.0,0.519950,0.777231,1.0
|
||||
0.485441,0.428355,1.0,0.486035,0.277066,1.0,0.485837,0.327496,1.0,0.486233,0.226637,1.0,0.486955,0.135331,1.0,0.495320,0.109486,1.0,0.495320,0.109486,1.0,0.473955,0.112244,1.0,0.473955,0.112244,1.0,0.470880,0.226666,1.0,0.455527,0.226695,1.0,0.441771,0.330195,1.0,0.447857,0.229286,1.0,0.441256,0.182748,1.0,0.449866,0.207155,1.0,0.465921,0.198055,1.0,0.442885,0.210465,1.0,0.442885,0.217497,1.0,0.441489,0.210878,1.0,0.441721,0.215015,1.0,0.442652,0.217910,1.0,0.437300,0.219152,1.0,0.441489,0.215015,1.0,0.440325,0.219565,1.0,0.439394,0.219565,1.0,0.439627,0.217497,1.0,0.447073,0.226184,1.0,0.442885,0.236112,1.0,0.503110,0.226603,1.0,0.519987,0.226569,1.0,0.532224,0.321999,1.0,0.532214,0.232167,1.0,0.525208,0.230717,1.0,0.525620,0.232548,1.0,0.527677,0.230351,1.0,0.537771,0.202889,1.0,0.534682,0.207649,1.0,0.535505,0.212043,1.0,0.543948,0.208381,1.0,0.540448,0.210944,1.0,0.533443,0.219000,1.0,0.545599,0.209113,1.0,0.541682,0.211677,1.0,0.542094,0.212775,1.0,0.546422,0.212775,1.0,0.526854,0.232181,1.0,0.547865,0.215338,1.0,0.461652,0.428377,1.0,0.461652,0.428377,1.0,0.469352,0.640982,1.0,0.469336,0.796213,1.0,0.469336,0.796213,1.0,0.509230,0.428332,1.0,0.509230,0.428332,1.0,0.516869,0.640781,1.0,0.519949,0.777251,1.0,0.519949,0.777251,1.0
|
||||
0.484679,0.435137,1.0,0.485847,0.280766,1.0,0.485458,0.332223,1.0,0.486236,0.229309,1.0,0.486166,0.136728,1.0,0.493862,0.114879,1.0,0.493862,0.114879,1.0,0.473926,0.117522,1.0,0.473926,0.117522,1.0,0.467818,0.229345,1.0,0.449401,0.229381,1.0,0.443268,0.338339,1.0,0.472419,0.272976,1.0,0.493789,0.240560,1.0,0.493563,0.242569,1.0,0.482717,0.245381,1.0,0.493789,0.242569,1.0,0.479328,0.261850,1.0,0.476842,0.266670,1.0,0.494693,0.262654,1.0,0.495596,0.263456,1.0,0.495822,0.266670,1.0,0.500793,0.262252,1.0,0.484524,0.275508,1.0,0.498534,0.265868,1.0,0.502375,0.261448,1.0,0.501697,0.262654,1.0,0.473904,0.290773,1.0,0.505389,0.228039,1.0,0.524542,0.226769,1.0,0.521526,0.330248,1.0,0.498443,0.272895,1.0,0.495958,0.231922,1.0,0.493820,0.258531,1.0,0.494889,0.261952,1.0,0.503656,0.276396,1.0,0.476928,0.261571,1.0,0.474577,0.272215,1.0,0.493606,0.261571,1.0,0.500876,0.276017,1.0,0.476928,0.270694,1.0,0.493606,0.264232,1.0,0.499166,0.276396,1.0,0.492323,0.280197,1.0,0.493606,0.264613,1.0,0.482487,0.246367,1.0,0.493820,0.283619,1.0,0.460174,0.436498,1.0,0.460174,0.436498,1.0,0.469334,0.643655,1.0,0.470790,0.798954,1.0,0.470790,0.798954,1.0,0.509184,0.433775,1.0,0.509184,0.433775,1.0,0.518398,0.643539,1.0,0.520002,0.779893,1.0,0.520002,0.779893,1.0
|
||||
0.484683,0.441931,1.0,0.484717,0.282620,1.0,0.484706,0.335724,1.0,0.484728,0.229516,1.0,0.483135,0.140754,1.0,0.493811,0.117731,1.0,0.493811,0.117731,1.0,0.472480,0.120319,1.0,0.472480,0.120319,1.0,0.466291,0.230802,1.0,0.447854,0.232089,1.0,0.438677,0.351958,1.0,0.470848,0.292132,1.0,0.492448,0.289254,1.0,0.487456,0.293248,1.0,0.482463,0.239993,1.0,0.486208,0.272833,1.0,0.478968,0.254194,1.0,0.480466,0.243543,1.0,0.489453,0.267952,1.0,0.480466,0.259963,1.0,0.478219,0.263514,1.0,0.491949,0.262626,1.0,0.480966,0.258631,1.0,0.479717,0.252862,1.0,0.492199,0.259076,1.0,0.487955,0.259076,1.0,0.479218,0.245318,1.0,0.503880,0.229447,1.0,0.523031,0.229378,1.0,0.522990,0.338497,1.0,0.495459,0.291931,1.0,0.497857,0.282169,1.0,0.498083,0.267758,1.0,0.495155,0.248944,1.0,0.499884,0.263355,1.0,0.497857,0.245742,1.0,0.492453,0.237735,1.0,0.498083,0.271761,1.0,0.484347,0.252546,1.0,0.479619,0.247743,1.0,0.494255,0.277766,1.0,0.481870,0.264556,1.0,0.477817,0.259352,1.0,0.488851,0.282169,1.0,0.481195,0.275364,1.0,0.478042,0.272962,1.0,0.460154,0.441915,1.0,0.460154,0.441915,1.0,0.469328,0.649069,1.0,0.470830,0.798983,1.0,0.470830,0.798983,1.0,0.509212,0.441948,1.0,0.509212,0.441948,1.0,0.519964,0.643636,1.0,0.521443,0.785309,1.0,0.521443,0.785309,1.0
|
||||
0.483175,0.440555,1.0,0.484244,0.282256,1.0,0.483888,0.335022,1.0,0.484600,0.229490,1.0,0.480836,0.142153,1.0,0.489281,0.120360,1.0,0.489281,0.120360,1.0,0.472368,0.120431,1.0,0.472368,0.120431,1.0,0.465490,0.230796,1.0,0.446380,0.232103,1.0,0.433998,0.349313,1.0,0.461698,0.275684,1.0,0.464933,0.243512,1.0,0.466410,0.242637,1.0,0.465672,0.275449,1.0,0.470594,0.257512,1.0,0.465672,0.273699,1.0,0.467641,0.252262,1.0,0.466410,0.256637,1.0,0.465918,0.256637,1.0,0.465426,0.273262,1.0,0.466164,0.257074,1.0,0.461242,0.270637,1.0,0.457059,0.282887,1.0,0.466410,0.259699,1.0,0.464687,0.274137,1.0,0.457797,0.283324,1.0,0.503024,0.229439,1.0,0.521448,0.229389,1.0,0.530604,0.341217,1.0,0.506093,0.281129,1.0,0.502902,0.219844,1.0,0.498471,0.276224,1.0,0.498238,0.281613,1.0,0.502668,0.259642,1.0,0.499170,0.281198,1.0,0.500803,0.292392,1.0,0.503368,0.249692,1.0,0.508032,0.242644,1.0,0.510364,0.255495,1.0,0.501969,0.230207,1.0,0.505467,0.244303,1.0,0.501502,0.289075,1.0,0.502902,0.229379,1.0,0.498704,0.279540,1.0,0.500803,0.291562,1.0,0.458667,0.441936,1.0,0.458667,0.441936,1.0,0.467831,0.649124,1.0,0.470853,0.799040,1.0,0.470853,0.799040,1.0,0.507684,0.439174,1.0,0.507684,0.439174,1.0,0.521536,0.640919,1.0,0.521401,0.793415,1.0,0.521401,0.793415,1.0
|
||||
0.483180,0.439225,1.0,0.483105,0.281821,1.0,0.483130,0.334289,1.0,0.483080,0.229353,1.0,0.480060,0.142080,1.0,0.487732,0.120388,1.0,0.487732,0.120388,1.0,0.470897,0.120395,1.0,0.470897,0.120395,1.0,0.464722,0.229330,1.0,0.446365,0.229307,1.0,0.423427,0.338545,1.0,0.444758,0.251302,1.0,0.454445,0.218661,1.0,0.444580,0.207968,1.0,0.448670,0.246893,1.0,0.450114,0.248176,1.0,0.447948,0.247748,1.0,0.446986,0.246893,1.0,0.453242,0.203690,1.0,0.443136,0.243898,1.0,0.444820,0.244326,1.0,0.447227,0.247748,1.0,0.443136,0.243898,1.0,0.443377,0.243470,1.0,0.447708,0.246465,1.0,0.445542,0.246465,1.0,0.446505,0.247320,1.0,0.499211,0.229387,1.0,0.515342,0.229421,1.0,0.532120,0.338386,1.0,0.523042,0.245686,1.0,0.519112,0.209706,1.0,0.522375,0.197688,1.0,0.524240,0.187742,1.0,0.525172,0.205562,1.0,0.535667,0.192715,1.0,0.536365,0.180281,1.0,0.525172,0.215923,1.0,0.530068,0.214680,1.0,0.532167,0.213437,1.0,0.522844,0.226284,1.0,0.527271,0.223383,1.0,0.529839,0.220068,1.0,0.520045,0.237474,1.0,0.519346,0.236231,1.0,0.522609,0.234573,1.0,0.458677,0.441983,1.0,0.458677,0.441983,1.0,0.469301,0.649073,1.0,0.470864,0.801658,1.0,0.470864,0.801658,1.0,0.507682,0.436468,1.0,0.507682,0.436468,1.0,0.521474,0.640832,1.0,0.523031,0.812610,1.0,0.523031,0.812610,1.0
|
||||
0.483180,0.439225,1.0,0.483105,0.281821,1.0,0.483130,0.334289,1.0,0.483080,0.229353,1.0,0.480060,0.142080,1.0,0.487732,0.120388,1.0,0.487732,0.120388,1.0,0.470897,0.120395,1.0,0.470897,0.120395,1.0,0.464722,0.229330,1.0,0.446365,0.229307,1.0,0.423427,0.338545,1.0,0.444758,0.251302,1.0,0.454445,0.218661,1.0,0.444580,0.207968,1.0,0.448670,0.246893,1.0,0.450114,0.248176,1.0,0.447948,0.247748,1.0,0.446986,0.246893,1.0,0.453242,0.203690,1.0,0.443136,0.243898,1.0,0.444820,0.244326,1.0,0.447227,0.247748,1.0,0.443136,0.243898,1.0,0.443377,0.243470,1.0,0.447708,0.246465,1.0,0.445542,0.246465,1.0,0.446505,0.247320,1.0,0.499211,0.229387,1.0,0.515342,0.229421,1.0,0.532120,0.338386,1.0,0.523042,0.245686,1.0,0.519112,0.209706,1.0,0.522375,0.197688,1.0,0.524240,0.187742,1.0,0.525172,0.205562,1.0,0.535667,0.192715,1.0,0.536365,0.180281,1.0,0.525172,0.215923,1.0,0.530068,0.214680,1.0,0.532167,0.213437,1.0,0.522844,0.226284,1.0,0.527271,0.223383,1.0,0.529839,0.220068,1.0,0.520045,0.237474,1.0,0.519346,0.236231,1.0,0.522609,0.234573,1.0,0.458677,0.441983,1.0,0.458677,0.441983,1.0,0.469301,0.649073,1.0,0.470864,0.801658,1.0,0.470864,0.801658,1.0,0.507682,0.436468,1.0,0.507682,0.436468,1.0,0.521474,0.640832,1.0,0.523031,0.812610,1.0,0.523031,0.812610,1.0
|
||||
0.483157,0.439247,1.0,0.483079,0.281881,1.0,0.483105,0.334337,1.0,0.483053,0.229426,1.0,0.479321,0.142113,1.0,0.486240,0.120468,1.0,0.486240,0.120468,1.0,0.470847,0.120518,1.0,0.470847,0.120518,1.0,0.464676,0.229449,1.0,0.446298,0.229472,1.0,0.415686,0.335517,1.0,0.427949,0.232068,1.0,0.431504,0.227226,1.0,0.421173,0.189184,1.0,0.440850,0.160325,1.0,0.427077,0.178253,1.0,0.430028,0.170819,1.0,0.443802,0.166009,1.0,0.426830,0.184812,1.0,0.438391,0.175192,1.0,0.444785,0.167321,1.0,0.424125,0.184812,1.0,0.438145,0.175629,1.0,0.438636,0.176941,1.0,0.421173,0.190058,1.0,0.429290,0.168195,1.0,0.419697,0.169070,1.0,0.500735,0.229389,1.0,0.518417,0.229353,1.0,0.539854,0.319306,1.0,0.536797,0.207698,1.0,0.545016,0.198651,1.0,0.555260,0.179977,1.0,0.549370,0.169045,1.0,0.551932,0.179066,1.0,0.544755,0.164946,1.0,0.546807,0.168134,1.0,0.541938,0.178610,1.0,0.543219,0.165402,1.0,0.545271,0.170412,1.0,0.537328,0.180432,1.0,0.540656,0.168134,1.0,0.541427,0.175422,1.0,0.532974,0.183165,1.0,0.535276,0.172233,1.0,0.537073,0.175422,1.0,0.458655,0.441978,1.0,0.458655,0.441978,1.0,0.469322,0.649139,1.0,0.470864,0.801637,1.0,0.470864,0.801637,1.0,0.507659,0.436517,1.0,0.507659,0.436517,1.0,0.519845,0.638119,1.0,0.532104,0.823458,1.0,0.532104,0.823458,1.0
|
||||
0.483152,0.435165,1.0,0.481994,0.280921,1.0,0.482380,0.332336,1.0,0.481608,0.229506,1.0,0.479316,0.142064,1.0,0.486198,0.128504,1.0,0.486198,0.128504,1.0,0.470847,0.128533,1.0,0.470847,0.128533,1.0,0.460923,0.229514,1.0,0.440237,0.229521,1.0,0.409550,0.322099,1.0,0.420288,0.223919,1.0,0.422226,0.220873,1.0,0.405256,0.170728,1.0,0.406861,0.167874,1.0,0.406861,0.189889,1.0,0.404568,0.162574,1.0,0.404109,0.156051,1.0,0.406632,0.189481,1.0,0.406173,0.166651,1.0,0.405944,0.167058,1.0,0.408925,0.189889,1.0,0.405027,0.167466,1.0,0.412823,0.176028,1.0,0.408008,0.189889,1.0,0.416264,0.173989,1.0,0.410072,0.179289,1.0,0.500770,0.229460,1.0,0.519931,0.229413,1.0,0.552141,0.316466,1.0,0.545948,0.207469,1.0,0.535870,0.197399,1.0,0.535115,0.188022,1.0,0.535115,0.173732,1.0,0.540896,0.170160,1.0,0.536875,0.166142,1.0,0.536625,0.167928,1.0,0.545417,0.174179,1.0,0.541396,0.162569,1.0,0.538635,0.169268,1.0,0.549937,0.176858,1.0,0.543656,0.162569,1.0,0.541146,0.169268,1.0,0.551193,0.175519,1.0,0.549432,0.164802,1.0,0.544661,0.168374,1.0,0.458655,0.439251,1.0,0.458655,0.439251,1.0,0.470781,0.643709,1.0,0.470868,0.801651,1.0,0.470868,0.801651,1.0,0.507649,0.431080,1.0,0.507649,0.431080,1.0,0.518356,0.630022,1.0,0.532130,0.815359,1.0,0.532130,0.815359,1.0
|
||||
0.483133,0.436510,1.0,0.482004,0.281273,1.0,0.482380,0.333019,1.0,0.481627,0.229528,1.0,0.480059,0.142197,1.0,0.486206,0.139399,1.0,0.486206,0.139399,1.0,0.470886,0.139430,1.0,0.470886,0.139430,1.0,0.460928,0.230797,1.0,0.440228,0.232067,1.0,0.400349,0.330179,1.0,0.412647,0.237513,1.0,0.417704,0.227804,1.0,0.407463,0.200717,1.0,0.417454,0.189171,1.0,0.407712,0.197608,1.0,0.404715,0.167413,1.0,0.402218,0.155868,1.0,0.409461,0.190948,1.0,0.406714,0.172742,1.0,0.419203,0.199384,1.0,0.407463,0.193168,1.0,0.412458,0.176738,1.0,0.418204,0.194056,1.0,0.405964,0.198053,1.0,0.419453,0.190504,1.0,0.419453,0.194944,1.0,0.500774,0.229460,1.0,0.519920,0.229392,1.0,0.556786,0.316670,1.0,0.544516,0.229298,1.0,0.534609,0.208474,1.0,0.530781,0.194860,1.0,0.531005,0.183249,1.0,0.537536,0.182448,1.0,0.534385,0.170036,1.0,0.533255,0.178844,1.0,0.540240,0.183649,1.0,0.536182,0.172038,1.0,0.534833,0.182849,1.0,0.543167,0.186853,1.0,0.539339,0.173239,1.0,0.537760,0.185651,1.0,0.547219,0.184050,1.0,0.542943,0.176042,1.0,0.539786,0.184851,1.0,0.458648,0.441925,1.0,0.458648,0.441925,1.0,0.470847,0.643707,1.0,0.470883,0.799019,1.0,0.470883,0.799019,1.0,0.507619,0.431094,1.0,0.507619,0.431094,1.0,0.519886,0.619176,1.0,0.532104,0.801681,1.0,0.532104,0.801681,1.0
|
||||
0.483167,0.437849,1.0,0.483092,0.283529,1.0,0.483117,0.334969,1.0,0.483067,0.232089,1.0,0.480095,0.144986,1.0,0.486238,0.144861,1.0,0.486238,0.144861,1.0,0.470867,0.144949,1.0,0.470867,0.144949,1.0,0.461632,0.233456,1.0,0.440196,0.234824,1.0,0.398816,0.335549,1.0,0.412627,0.275750,1.0,0.420016,0.265625,1.0,0.423362,0.261964,1.0,0.405603,0.272031,1.0,0.413581,0.277064,1.0,0.419501,0.279352,1.0,0.418729,0.274776,1.0,0.414354,0.274319,1.0,0.415898,0.290333,1.0,0.415898,0.292621,1.0,0.414611,0.273404,1.0,0.417957,0.254186,1.0,0.418215,0.287131,1.0,0.418729,0.227647,1.0,0.405345,0.272031,1.0,0.405088,0.271116,1.0,0.502237,0.230743,1.0,0.521406,0.229396,1.0,0.556786,0.324766,1.0,0.545964,0.272983,1.0,0.540505,0.261343,1.0,0.540271,0.257571,1.0,0.536026,0.240807,1.0,0.542630,0.226558,1.0,0.536260,0.239550,1.0,0.534141,0.239131,1.0,0.543573,0.228234,1.0,0.545458,0.234940,1.0,0.546161,0.246256,1.0,0.550406,0.237873,1.0,0.545458,0.239131,1.0,0.541922,0.250446,1.0,0.540740,0.257990,1.0,0.536500,0.240807,1.0,0.541922,0.257152,1.0,0.458669,0.441926,1.0,0.458669,0.441926,1.0,0.470901,0.643600,1.0,0.470900,0.798968,1.0,0.470900,0.798968,1.0,0.507666,0.433771,1.0,0.507666,0.433771,1.0,0.519912,0.619023,1.0,0.527589,0.785373,1.0,0.527589,0.785373,1.0
|
||||
0.483889,0.437853,1.0,0.483269,0.281549,1.0,0.483476,0.333650,1.0,0.483062,0.229447,1.0,0.479308,0.157112,1.0,0.486220,0.161116,1.0,0.486220,0.161116,1.0,0.470907,0.161155,1.0,0.470907,0.161155,1.0,0.463175,0.230786,1.0,0.443287,0.232124,1.0,0.397353,0.335677,1.0,0.420244,0.313747,1.0,0.426709,0.276031,1.0,0.418545,0.318606,1.0,0.422083,0.336021,1.0,0.417457,0.311348,1.0,0.418545,0.322476,1.0,0.421811,0.343279,1.0,0.422355,0.303607,1.0,0.424260,0.318121,1.0,0.418001,0.344246,1.0,0.422355,0.301189,1.0,0.424805,0.319089,1.0,0.433513,0.335054,1.0,0.437595,0.305059,1.0,0.437322,0.310381,1.0,0.421267,0.339892,1.0,0.501482,0.228102,1.0,0.519902,0.226756,1.0,0.544495,0.308372,1.0,0.542953,0.319398,1.0,0.537286,0.299940,1.0,0.533844,0.313527,1.0,0.535375,0.329831,1.0,0.544927,0.313187,1.0,0.543781,0.345455,1.0,0.543208,0.359381,1.0,0.541870,0.325415,1.0,0.544354,0.342058,1.0,0.544547,0.357003,1.0,0.539958,0.313866,1.0,0.543589,0.332207,1.0,0.541490,0.348172,1.0,0.539385,0.314206,1.0,0.544547,0.329831,1.0,0.543401,0.358701,1.0,0.460099,0.441940,1.0,0.460099,0.441940,1.0,0.470921,0.646334,1.0,0.470902,0.798989,1.0,0.470902,0.798989,1.0,0.507680,0.433767,1.0,0.507680,0.433767,1.0,0.518420,0.621733,1.0,0.522990,0.793473,1.0,0.522990,0.793473,1.0
|
||||
0.483889,0.437853,1.0,0.483269,0.281549,1.0,0.483476,0.333650,1.0,0.483062,0.229447,1.0,0.479308,0.157112,1.0,0.486220,0.161116,1.0,0.486220,0.161116,1.0,0.470907,0.161155,1.0,0.470907,0.161155,1.0,0.463175,0.230786,1.0,0.443287,0.232124,1.0,0.397353,0.335677,1.0,0.420244,0.313747,1.0,0.426709,0.276031,1.0,0.418545,0.318606,1.0,0.422083,0.336021,1.0,0.417457,0.311348,1.0,0.418545,0.322476,1.0,0.421811,0.343279,1.0,0.422355,0.303607,1.0,0.424260,0.318121,1.0,0.418001,0.344246,1.0,0.422355,0.301189,1.0,0.424805,0.319089,1.0,0.433513,0.335054,1.0,0.437595,0.305059,1.0,0.437322,0.310381,1.0,0.421267,0.339892,1.0,0.501482,0.228102,1.0,0.519902,0.226756,1.0,0.544495,0.308372,1.0,0.542953,0.319398,1.0,0.537286,0.299940,1.0,0.533844,0.313527,1.0,0.535375,0.329831,1.0,0.544927,0.313187,1.0,0.543781,0.345455,1.0,0.543208,0.359381,1.0,0.541870,0.325415,1.0,0.544354,0.342058,1.0,0.544547,0.357003,1.0,0.539958,0.313866,1.0,0.543589,0.332207,1.0,0.541490,0.348172,1.0,0.539385,0.314206,1.0,0.544547,0.329831,1.0,0.543401,0.358701,1.0,0.460099,0.441940,1.0,0.460099,0.441940,1.0,0.470921,0.646334,1.0,0.470902,0.798989,1.0,0.470902,0.798989,1.0,0.507680,0.433767,1.0,0.507680,0.433767,1.0,0.518420,0.621733,1.0,0.522990,0.793473,1.0,0.522990,0.793473,1.0
|
||||
0.483937,0.441948,1.0,0.483323,0.284635,1.0,0.483528,0.337072,1.0,0.483119,0.232197,1.0,0.480030,0.162648,1.0,0.486211,0.166819,1.0,0.486211,0.166819,1.0,0.472345,0.169452,1.0,0.472345,0.169452,1.0,0.463199,0.236258,1.0,0.443279,0.240319,1.0,0.398855,0.341224,1.0,0.421743,0.362965,1.0,0.421364,0.369199,1.0,0.425859,0.367789,1.0,0.440931,0.390352,1.0,0.431147,0.403983,1.0,0.434585,0.419026,1.0,0.436171,0.429368,1.0,0.438551,0.404924,1.0,0.438286,0.420906,1.0,0.444368,0.431718,1.0,0.434849,0.402573,1.0,0.436700,0.416206,1.0,0.443839,0.420906,1.0,0.431147,0.404454,1.0,0.435643,0.414325,1.0,0.436436,0.427957,1.0,0.501533,0.230805,1.0,0.519948,0.229413,1.0,0.549062,0.332915,1.0,0.547573,0.354771,1.0,0.545172,0.346277,1.0,0.544219,0.364531,1.0,0.539203,0.384059,1.0,0.548276,0.363257,1.0,0.546125,0.379814,1.0,0.543021,0.397219,1.0,0.556635,0.359437,1.0,0.555203,0.381512,1.0,0.559500,0.387031,1.0,0.559740,0.356890,1.0,0.558547,0.376842,1.0,0.559021,0.386606,1.0,0.561172,0.357314,1.0,0.559500,0.376418,1.0,0.558781,0.385332,1.0,0.460149,0.444697,1.0,0.460149,0.444697,1.0,0.470906,0.654554,1.0,0.470892,0.799033,1.0,0.470892,0.799033,1.0,0.507726,0.439198,1.0,0.507726,0.439198,1.0,0.516847,0.629955,1.0,0.521396,0.774546,1.0,0.521396,0.774546,1.0
|
||||
0.484625,0.446123,1.0,0.483523,0.297753,1.0,0.483891,0.347210,1.0,0.483156,0.248296,1.0,0.479343,0.165356,1.0,0.486186,0.180274,1.0,0.486186,0.180274,1.0,0.470927,0.180369,1.0,0.470927,0.180369,1.0,0.463231,0.248429,1.0,0.443306,0.248562,1.0,0.401932,0.357474,1.0,0.421828,0.411943,1.0,0.431106,0.423169,1.0,0.441140,0.431846,1.0,0.444123,0.439560,1.0,0.444394,0.441006,1.0,0.439513,0.466077,1.0,0.439784,0.477647,1.0,0.442767,0.446792,1.0,0.439784,0.466559,1.0,0.440055,0.478130,1.0,0.438970,0.449203,1.0,0.439242,0.464631,1.0,0.440055,0.478130,1.0,0.433818,0.450167,1.0,0.438157,0.463184,1.0,0.439784,0.472344,1.0,0.502294,0.242937,1.0,0.521432,0.237577,1.0,0.552109,0.338400,1.0,0.546021,0.403830,1.0,0.543068,0.420796,1.0,0.540469,0.440139,1.0,0.537156,0.449810,1.0,0.537865,0.443503,1.0,0.537630,0.447707,1.0,0.531479,0.457380,1.0,0.531479,0.446867,1.0,0.532188,0.451071,1.0,0.532188,0.456958,1.0,0.530062,0.448129,1.0,0.531953,0.449390,1.0,0.530062,0.446867,1.0,0.537865,0.440559,1.0,0.537391,0.450651,1.0,0.530771,0.461164,1.0,0.460106,0.447496,1.0,0.460106,0.447496,1.0,0.470826,0.665379,1.0,0.470880,0.804398,1.0,0.470880,0.804398,1.0,0.509144,0.444750,1.0,0.509144,0.444750,1.0,0.515334,0.643729,1.0,0.519911,0.779892,1.0,0.519911,0.779892,1.0
|
||||
0.484669,0.466439,1.0,0.484642,0.307113,1.0,0.484651,0.360222,1.0,0.484633,0.254004,1.0,0.480109,0.178915,1.0,0.486186,0.185807,1.0,0.486186,0.185807,1.0,0.470901,0.185930,1.0,0.470901,0.185930,1.0,0.465462,0.260734,1.0,0.446291,0.267464,1.0,0.406491,0.379238,1.0,0.421853,0.447415,1.0,0.430197,0.463605,1.0,0.440297,0.479133,1.0,0.441390,0.477193,1.0,0.443300,0.479618,1.0,0.444392,0.483016,1.0,0.441116,0.483501,1.0,0.440843,0.488354,1.0,0.441116,0.495148,1.0,0.438933,0.497575,1.0,0.433473,0.487383,1.0,0.439206,0.498060,1.0,0.438933,0.501456,1.0,0.430197,0.486413,1.0,0.438933,0.502428,1.0,0.440297,0.505824,1.0,0.503074,0.252557,1.0,0.521516,0.251110,1.0,0.550594,0.352039,1.0,0.546057,0.439201,1.0,0.544328,0.449244,1.0,0.541286,0.452572,1.0,0.533797,0.459229,1.0,0.534500,0.478781,1.0,0.531224,0.496253,1.0,0.530286,0.503325,1.0,0.533328,0.476284,1.0,0.531693,0.490429,1.0,0.529818,0.499581,1.0,0.533094,0.475037,1.0,0.532161,0.490013,1.0,0.530521,0.495837,1.0,0.535672,0.478781,1.0,0.532161,0.492093,1.0,0.528651,0.479196,1.0,0.460160,0.466450,1.0,0.460160,0.466450,1.0,0.470806,0.681703,1.0,0.470869,0.807179,1.0,0.470869,0.807179,1.0,0.509178,0.466429,1.0,0.509178,0.466429,1.0,0.515307,0.665477,1.0,0.519873,0.793391,1.0,0.519873,0.793391,1.0
|
||||
0.484724,0.485539,1.0,0.484694,0.328148,1.0,0.484704,0.380612,1.0,0.484684,0.275684,1.0,0.480093,0.195301,1.0,0.487734,0.191200,1.0,0.487734,0.191200,1.0,0.472373,0.196663,1.0,0.472373,0.196663,1.0,0.465499,0.282460,1.0,0.446314,0.289236,1.0,0.409472,0.395669,1.0,0.421806,0.480141,1.0,0.429229,0.499306,1.0,0.432581,0.518102,1.0,0.437739,0.530481,1.0,0.436965,0.523145,1.0,0.442639,0.535523,1.0,0.439028,0.531856,1.0,0.438770,0.529563,1.0,0.440833,0.531397,1.0,0.437223,0.525895,1.0,0.436965,0.525895,1.0,0.439286,0.528646,1.0,0.439028,0.524979,1.0,0.435160,0.524062,1.0,0.439028,0.534606,1.0,0.439544,0.535065,1.0,0.503868,0.272973,1.0,0.523052,0.270261,1.0,0.553630,0.373757,1.0,0.549031,0.466358,1.0,0.546307,0.474615,1.0,0.542693,0.481477,1.0,0.535693,0.489196,1.0,0.538109,0.509354,1.0,0.529661,0.506352,1.0,0.530630,0.502492,1.0,0.537385,0.515787,1.0,0.534245,0.518360,1.0,0.533281,0.508067,1.0,0.536901,0.521362,1.0,0.533042,0.521791,1.0,0.529661,0.517073,1.0,0.534729,0.512356,1.0,0.529422,0.508496,1.0,0.529422,0.508496,1.0,0.460220,0.485581,1.0,0.460220,0.485581,1.0,0.470843,0.687174,1.0,0.470874,0.812567,1.0,0.470874,0.812567,1.0,0.509228,0.485498,1.0,0.509228,0.485498,1.0,0.510758,0.687119,1.0,0.519938,0.796289,1.0,0.519938,0.796289,1.0
|
||||
0.486199,0.492441,1.0,0.485109,0.344178,1.0,0.485472,0.393599,1.0,0.484746,0.294757,1.0,0.480861,0.206203,1.0,0.487774,0.202034,1.0,0.487774,0.202034,1.0,0.472355,0.204737,1.0,0.472355,0.204737,1.0,0.465549,0.300210,1.0,0.446353,0.305662,1.0,0.409510,0.406519,1.0,0.415712,0.501945,1.0,0.421481,0.517554,1.0,0.425947,0.545789,1.0,0.430663,0.559465,1.0,0.428181,0.548877,1.0,0.430663,0.554612,1.0,0.433640,0.559465,1.0,0.425451,0.545789,1.0,0.432896,0.551082,1.0,0.433392,0.559023,1.0,0.424458,0.547994,1.0,0.432647,0.549318,1.0,0.434385,0.560788,1.0,0.423714,0.546670,1.0,0.427684,0.554170,1.0,0.434385,0.562112,1.0,0.505407,0.292030,1.0,0.526068,0.289303,1.0,0.556641,0.384730,1.0,0.556667,0.472009,1.0,0.550328,0.489531,1.0,0.547156,0.499603,1.0,0.544891,0.510883,1.0,0.551005,0.517732,1.0,0.546703,0.528207,1.0,0.541036,0.528207,1.0,0.550552,0.520553,1.0,0.548286,0.534250,1.0,0.545115,0.543516,1.0,0.549422,0.521358,1.0,0.546927,0.533847,1.0,0.544891,0.543919,1.0,0.547609,0.520553,1.0,0.544891,0.528207,1.0,0.541260,0.528610,1.0,0.461691,0.493789,1.0,0.461691,0.493789,1.0,0.470935,0.695444,1.0,0.470924,0.812596,1.0,0.470924,0.812596,1.0,0.510707,0.491093,1.0,0.510707,0.491093,1.0,0.510790,0.700838,1.0,0.519942,0.799023,1.0,0.519942,0.799023,1.0
|
||||
0.486199,0.492441,1.0,0.485109,0.344178,1.0,0.485472,0.393599,1.0,0.484746,0.294757,1.0,0.480861,0.206203,1.0,0.487774,0.202034,1.0,0.487774,0.202034,1.0,0.472355,0.204737,1.0,0.472355,0.204737,1.0,0.465549,0.300210,1.0,0.446353,0.305662,1.0,0.409510,0.406519,1.0,0.415712,0.501945,1.0,0.421481,0.517554,1.0,0.425947,0.545789,1.0,0.430663,0.559465,1.0,0.428181,0.548877,1.0,0.430663,0.554612,1.0,0.433640,0.559465,1.0,0.425451,0.545789,1.0,0.432896,0.551082,1.0,0.433392,0.559023,1.0,0.424458,0.547994,1.0,0.432647,0.549318,1.0,0.434385,0.560788,1.0,0.423714,0.546670,1.0,0.427684,0.554170,1.0,0.434385,0.562112,1.0,0.505407,0.292030,1.0,0.526068,0.289303,1.0,0.556641,0.384730,1.0,0.556667,0.472009,1.0,0.550328,0.489531,1.0,0.547156,0.499603,1.0,0.544891,0.510883,1.0,0.551005,0.517732,1.0,0.546703,0.528207,1.0,0.541036,0.528207,1.0,0.550552,0.520553,1.0,0.548286,0.534250,1.0,0.545115,0.543516,1.0,0.549422,0.521358,1.0,0.546927,0.533847,1.0,0.544891,0.543919,1.0,0.547609,0.520553,1.0,0.544891,0.528207,1.0,0.541260,0.528610,1.0,0.461691,0.493789,1.0,0.461691,0.493789,1.0,0.470935,0.695444,1.0,0.470924,0.812596,1.0,0.470924,0.812596,1.0,0.510707,0.491093,1.0,0.510707,0.491093,1.0,0.510790,0.700838,1.0,0.519942,0.799023,1.0,0.519942,0.799023,1.0
|
||||
0.485486,0.507333,1.0,0.486025,0.354091,1.0,0.485845,0.405172,1.0,0.486205,0.303010,1.0,0.480880,0.210244,1.0,0.487711,0.202028,1.0,0.487711,0.202028,1.0,0.470902,0.204766,1.0,0.470902,0.204766,1.0,0.466293,0.308401,1.0,0.446382,0.313792,1.0,0.403404,0.403944,1.0,0.408009,0.496516,1.0,0.408309,0.507990,1.0,0.414161,0.525765,1.0,0.415381,0.531834,1.0,0.418064,0.546140,1.0,0.417819,0.543539,1.0,0.410504,0.530967,1.0,0.414406,0.547007,1.0,0.408065,0.535735,1.0,0.409528,0.534869,1.0,0.410992,0.545706,1.0,0.406846,0.545706,1.0,0.406115,0.547874,1.0,0.408065,0.545706,1.0,0.404651,0.548742,1.0,0.403188,0.549175,1.0,0.507662,0.298906,1.0,0.529120,0.294803,1.0,0.558260,0.390143,1.0,0.556703,0.471875,1.0,0.555740,0.472176,1.0,0.555516,0.481730,1.0,0.552380,0.492875,1.0,0.557083,0.503225,1.0,0.554844,0.519147,1.0,0.552380,0.528303,1.0,0.555516,0.507604,1.0,0.553276,0.522332,1.0,0.549922,0.532283,1.0,0.553500,0.508400,1.0,0.551932,0.524720,1.0,0.549474,0.532283,1.0,0.550365,0.510390,1.0,0.548802,0.525517,1.0,0.544995,0.502827,1.0,0.461703,0.507360,1.0,0.461703,0.507360,1.0,0.472435,0.700796,1.0,0.472365,0.812568,1.0,0.472365,0.812568,1.0,0.509269,0.507306,1.0,0.509269,0.507306,1.0,0.510778,0.700888,1.0,0.519942,0.801671,1.0,0.519942,0.801671,1.0
|
||||
0.486971,0.505956,1.0,0.486408,0.349586,1.0,0.486596,0.401709,1.0,0.486220,0.297463,1.0,0.480066,0.203439,1.0,0.484693,0.185927,1.0,0.484693,0.185927,1.0,0.469369,0.191274,1.0,0.469369,0.191274,1.0,0.466295,0.302962,1.0,0.446369,0.308460,1.0,0.389663,0.387449,1.0,0.397228,0.450206,1.0,0.400782,0.463398,1.0,0.405274,0.476554,1.0,0.406860,0.487359,1.0,0.398403,0.484070,1.0,0.406331,0.495346,1.0,0.406596,0.494877,1.0,0.396024,0.487830,1.0,0.399460,0.499575,1.0,0.400782,0.504743,1.0,0.393382,0.492057,1.0,0.396289,0.502394,1.0,0.400517,0.503333,1.0,0.392324,0.496286,1.0,0.393646,0.505682,1.0,0.395760,0.506622,1.0,0.508415,0.294773,1.0,0.530609,0.292083,1.0,0.568901,0.371053,1.0,0.556687,0.409308,1.0,0.548786,0.407781,1.0,0.558682,0.407399,1.0,0.559115,0.422698,1.0,0.556964,0.424993,1.0,0.555240,0.422698,1.0,0.557391,0.432643,1.0,0.555240,0.433025,1.0,0.556318,0.442205,1.0,0.553521,0.447177,1.0,0.553734,0.433790,1.0,0.554380,0.448324,1.0,0.553948,0.447942,1.0,0.543406,0.453296,1.0,0.553302,0.452914,1.0,0.553734,0.451766,1.0,0.463192,0.507308,1.0,0.463192,0.507308,1.0,0.473935,0.692739,1.0,0.472397,0.812501,1.0,0.472397,0.812501,1.0,0.510749,0.504603,1.0,0.510749,0.504603,1.0,0.510774,0.692716,1.0,0.519973,0.801717,1.0,0.519973,0.801717,1.0
|
||||
0.486989,0.489650,1.0,0.485309,0.331262,1.0,0.485869,0.384058,1.0,0.484749,0.278466,1.0,0.477791,0.187136,1.0,0.481606,0.172125,1.0,0.481606,0.172125,1.0,0.463191,0.180248,1.0,0.463191,0.180248,1.0,0.465575,0.285219,1.0,0.446401,0.291971,1.0,0.380406,0.338329,1.0,0.388089,0.379328,1.0,0.399475,0.389618,1.0,0.402338,0.416922,1.0,0.405722,0.413682,1.0,0.403119,0.420161,1.0,0.405722,0.418310,1.0,0.405983,0.415533,1.0,0.395830,0.430806,1.0,0.390624,0.431268,1.0,0.391666,0.436358,1.0,0.391926,0.434970,1.0,0.390104,0.434970,1.0,0.389843,0.434970,1.0,0.387500,0.431731,1.0,0.385678,0.433119,1.0,0.389062,0.434507,1.0,0.505414,0.275673,1.0,0.526078,0.272880,1.0,0.581198,0.316680,1.0,0.552104,0.332992,1.0,0.550698,0.308056,1.0,0.526776,0.308844,1.0,0.525448,0.303331,1.0,0.534969,0.317900,1.0,0.527661,0.319869,1.0,0.533865,0.316325,1.0,0.530984,0.326956,1.0,0.527885,0.327744,1.0,0.531203,0.336800,1.0,0.527438,0.338769,1.0,0.525891,0.335618,1.0,0.530542,0.337587,1.0,0.527438,0.345069,1.0,0.524562,0.346250,1.0,0.525667,0.350581,1.0,0.463202,0.491004,1.0,0.463202,0.491004,1.0,0.473994,0.687200,1.0,0.472415,0.809821,1.0,0.472415,0.809821,1.0,0.510776,0.488296,1.0,0.510776,0.488296,1.0,0.513769,0.687284,1.0,0.519980,0.799052,1.0,0.519980,0.799052,1.0
|
||||
0.487729,0.469234,1.0,0.485448,0.307728,1.0,0.486208,0.361563,1.0,0.484687,0.253893,1.0,0.465564,0.150382,1.0,0.472463,0.144969,1.0,0.472463,0.144969,1.0,0.458666,0.155794,1.0,0.458666,0.155794,1.0,0.466315,0.255296,1.0,0.447943,0.256700,1.0,0.375824,0.270256,1.0,0.385087,0.292079,1.0,0.393199,0.292658,1.0,0.400915,0.312522,1.0,0.404905,0.328604,1.0,0.399052,0.330968,1.0,0.399318,0.339008,1.0,0.398786,0.338062,1.0,0.391603,0.328604,1.0,0.392933,0.339955,1.0,0.391869,0.335225,1.0,0.384952,0.325293,1.0,0.387080,0.339008,1.0,0.386814,0.334752,1.0,0.379099,0.323401,1.0,0.380695,0.336170,1.0,0.382026,0.334279,1.0,0.502307,0.252512,1.0,0.519928,0.251131,1.0,0.585839,0.248361,1.0,0.542911,0.248477,1.0,0.535276,0.240776,1.0,0.505041,0.239916,1.0,0.501897,0.242496,1.0,0.504799,0.235186,1.0,0.502623,0.236046,1.0,0.502139,0.243356,1.0,0.507944,0.245076,1.0,0.496334,0.253245,1.0,0.499236,0.253245,1.0,0.510363,0.254966,1.0,0.496092,0.258405,1.0,0.499962,0.260555,1.0,0.510363,0.270015,1.0,0.500688,0.274744,1.0,0.500930,0.273455,1.0,0.463193,0.469295,1.0,0.463193,0.469295,1.0,0.473954,0.668157,1.0,0.472391,0.799026,1.0,0.472391,0.799026,1.0,0.512266,0.469172,1.0,0.512266,0.469172,1.0,0.519833,0.670922,1.0,0.519987,0.793561,1.0,0.519987,0.793561,1.0
|
||||
0.489274,0.447371,1.0,0.488130,0.273697,1.0,0.488512,0.331588,1.0,0.487749,0.215806,1.0,0.461651,0.125792,1.0,0.467787,0.123045,1.0,0.467787,0.123045,1.0,0.455514,0.128538,1.0,0.455514,0.128538,1.0,0.470113,0.221264,1.0,0.452477,0.226722,1.0,0.411121,0.218493,1.0,0.392684,0.207572,1.0,0.379424,0.200440,1.0,0.393317,0.213467,1.0,0.392248,0.215638,1.0,0.393469,0.209396,1.0,0.381867,0.226494,1.0,0.382020,0.224594,1.0,0.392401,0.211568,1.0,0.384463,0.223780,1.0,0.382478,0.224594,1.0,0.386753,0.211295,1.0,0.381104,0.226222,1.0,0.381104,0.228122,1.0,0.380493,0.227037,1.0,0.380952,0.227037,1.0,0.380952,0.228122,1.0,0.505382,0.211688,1.0,0.523016,0.207570,1.0,0.582776,0.166715,1.0,0.533724,0.164119,1.0,0.527870,0.164515,1.0,0.516360,0.174954,1.0,0.510958,0.181218,1.0,0.512836,0.174954,1.0,0.504146,0.192075,1.0,0.498039,0.200427,1.0,0.512602,0.182053,1.0,0.503676,0.197921,1.0,0.497569,0.211284,1.0,0.514716,0.191240,1.0,0.507904,0.204603,1.0,0.503911,0.219218,1.0,0.520118,0.197921,1.0,0.516125,0.204603,1.0,0.514481,0.211702,1.0,0.464750,0.447408,1.0,0.464750,0.447408,1.0,0.472411,0.651769,1.0,0.470924,0.793502,1.0,0.470924,0.793502,1.0,0.513799,0.447333,1.0,0.513799,0.447333,1.0,0.519979,0.657273,1.0,0.521437,0.790754,1.0,0.521437,0.790754,1.0
|
||||
0.489274,0.447371,1.0,0.488130,0.273697,1.0,0.488512,0.331588,1.0,0.487749,0.215806,1.0,0.461651,0.125792,1.0,0.467787,0.123045,1.0,0.467787,0.123045,1.0,0.455514,0.128538,1.0,0.455514,0.128538,1.0,0.470113,0.221264,1.0,0.452477,0.226722,1.0,0.411121,0.218493,1.0,0.392684,0.207572,1.0,0.379424,0.200440,1.0,0.393317,0.213467,1.0,0.392248,0.215638,1.0,0.393469,0.209396,1.0,0.381867,0.226494,1.0,0.382020,0.224594,1.0,0.392401,0.211568,1.0,0.384463,0.223780,1.0,0.382478,0.224594,1.0,0.386753,0.211295,1.0,0.381104,0.226222,1.0,0.381104,0.228122,1.0,0.380493,0.227037,1.0,0.380952,0.227037,1.0,0.380952,0.228122,1.0,0.505382,0.211688,1.0,0.523016,0.207570,1.0,0.582776,0.166715,1.0,0.533724,0.164119,1.0,0.527870,0.164515,1.0,0.516360,0.174954,1.0,0.510958,0.181218,1.0,0.512836,0.174954,1.0,0.504146,0.192075,1.0,0.498039,0.200427,1.0,0.512602,0.182053,1.0,0.503676,0.197921,1.0,0.497569,0.211284,1.0,0.514716,0.191240,1.0,0.507904,0.204603,1.0,0.503911,0.219218,1.0,0.520118,0.197921,1.0,0.516125,0.204603,1.0,0.514481,0.211702,1.0,0.464750,0.447408,1.0,0.464750,0.447408,1.0,0.472411,0.651769,1.0,0.470924,0.793502,1.0,0.470924,0.793502,1.0,0.513799,0.447333,1.0,0.513799,0.447333,1.0,0.519979,0.657273,1.0,0.521437,0.790754,1.0,0.521437,0.790754,1.0
|
||||
0.490038,0.425650,1.0,0.488327,0.253956,1.0,0.488898,0.311187,1.0,0.487757,0.196724,1.0,0.454755,0.116190,1.0,0.460113,0.114851,1.0,0.460113,0.114851,1.0,0.449396,0.117530,1.0,0.449396,0.117530,1.0,0.469350,0.200747,1.0,0.450942,0.204769,1.0,0.406468,0.177595,1.0,0.386535,0.144914,1.0,0.384960,0.101006,1.0,0.374264,0.139650,1.0,0.374092,0.105913,1.0,0.374092,0.106526,1.0,0.375989,0.124929,1.0,0.375989,0.123088,1.0,0.380302,0.139650,1.0,0.373746,0.123088,1.0,0.376334,0.123702,1.0,0.379785,0.140877,1.0,0.366673,0.119101,1.0,0.367708,0.122781,1.0,0.377715,0.142410,1.0,0.366156,0.124929,1.0,0.365466,0.125542,1.0,0.507668,0.191305,1.0,0.527578,0.185885,1.0,0.570557,0.109499,1.0,0.532224,0.093044,1.0,0.514890,0.096333,1.0,0.511545,0.114565,1.0,0.516896,0.159747,1.0,0.511991,0.113772,1.0,0.512660,0.139534,1.0,0.504634,0.152614,1.0,0.510654,0.117339,1.0,0.509539,0.140327,1.0,0.509985,0.159747,1.0,0.511991,0.119718,1.0,0.511768,0.152614,1.0,0.510431,0.159747,1.0,0.514221,0.142308,1.0,0.515335,0.140723,1.0,0.516227,0.154199,1.0,0.464757,0.425681,1.0,0.464757,0.425681,1.0,0.470928,0.638165,1.0,0.469369,0.779894,1.0,0.469369,0.779894,1.0,0.515319,0.425619,1.0,0.515319,0.425619,1.0,0.519974,0.640867,1.0,0.521474,0.779871,1.0,0.521474,0.779871,1.0
|
||||
0.490044,0.416047,1.0,0.487198,0.241341,1.0,0.488146,0.299576,1.0,0.486249,0.183106,1.0,0.453193,0.105380,1.0,0.458529,0.101319,1.0,0.458529,0.101319,1.0,0.447857,0.109440,1.0,0.447857,0.109440,1.0,0.467846,0.184503,1.0,0.449444,0.185901,1.0,0.397313,0.123069,1.0,0.378911,0.052208,1.0,0.373069,0.037450,1.0,0.372607,0.032931,1.0,0.383004,0.016912,1.0,0.373763,0.045665,1.0,0.376997,0.043200,1.0,0.382773,0.036628,1.0,0.381618,0.047718,1.0,0.381618,0.042789,1.0,0.380232,0.032931,1.0,0.377691,0.055112,1.0,0.373069,0.069488,1.0,0.376535,0.070309,1.0,0.393170,0.022663,1.0,0.390629,0.023895,1.0,0.386932,0.020609,1.0,0.505387,0.178995,1.0,0.524526,0.174885,1.0,0.561339,0.068599,1.0,0.523016,0.033164,1.0,0.510881,0.037955,1.0,0.516032,0.024676,1.0,0.519381,0.015060,1.0,0.519381,0.026965,1.0,0.520154,0.026050,1.0,0.525818,0.029255,1.0,0.521958,0.026965,1.0,0.522214,0.029255,1.0,0.521698,0.024218,1.0,0.521443,0.041160,1.0,0.521698,0.023302,1.0,0.521698,0.024218,1.0,0.519896,0.026507,1.0,0.521443,0.023302,1.0,0.521443,0.023760,1.0,0.464739,0.414676,1.0,0.464739,0.414676,1.0,0.470919,0.621844,1.0,0.463244,0.771745,1.0,0.463244,0.771745,1.0,0.515350,0.417418,1.0,0.515350,0.417418,1.0,0.519991,0.629952,1.0,0.521406,0.758115,1.0,0.521406,0.758115,1.0
|
||||
0.490056,0.406553,1.0,0.487194,0.232822,1.0,0.488148,0.290733,1.0,0.486241,0.174912,1.0,0.452458,0.104053,1.0,0.457098,0.101338,1.0,0.457098,0.101338,1.0,0.447817,0.106769,1.0,0.447817,0.106769,1.0,0.467836,0.178947,1.0,0.449431,0.182981,1.0,0.398849,0.095848,1.0,0.385040,0.005877,1.0,0.384359,0.024418,1.0,0.384617,0.021662,1.0,0.384617,0.021662,1.0,0.389785,0.021662,1.0,0.386943,-0.038052,1.0,0.388235,-0.034378,1.0,0.381517,0.020284,1.0,0.387718,-0.034378,1.0,0.388493,-0.032081,1.0,0.381258,0.020744,1.0,0.388752,-0.032081,1.0,0.389527,-0.030244,1.0,0.394953,0.013394,1.0,0.397278,0.016610,1.0,0.389268,-0.032540,1.0,0.504644,0.169477,1.0,0.523047,0.164043,1.0,0.555146,0.035981,1.0,0.526057,0.007221,1.0,0.531214,0.037847,1.0,0.520509,0.015731,1.0,0.518773,0.016245,1.0,0.518773,0.015217,1.0,0.519352,0.009559,1.0,0.527453,0.031675,1.0,0.523401,0.020874,1.0,0.523979,0.024475,1.0,0.524271,0.026018,1.0,0.524557,0.020360,1.0,0.503729,0.039904,1.0,0.503729,0.042476,1.0,0.524849,0.019846,1.0,0.524271,0.021389,1.0,0.524271,0.023446,1.0,0.464771,0.406532,1.0,0.464771,0.406532,1.0,0.472371,0.616368,1.0,0.460204,0.752683,1.0,0.460204,0.752683,1.0,0.515341,0.406574,1.0,0.515341,0.406574,1.0,0.519905,0.621795,1.0,0.519961,0.752614,1.0,0.519961,0.752614,1.0
|
||||
0.491576,0.413322,1.0,0.487568,0.232479,1.0,0.488904,0.292760,1.0,0.486232,0.172198,1.0,0.451706,0.110875,1.0,0.457096,0.106784,1.0,0.457096,0.106784,1.0,0.446316,0.114967,1.0,0.446316,0.114967,1.0,0.467828,0.177618,1.0,0.449423,0.183038,1.0,0.408032,0.093018,1.0,0.398766,0.005879,1.0,0.395709,0.018923,1.0,0.397868,0.016790,1.0,0.398348,0.015937,1.0,0.399547,0.015511,1.0,0.397389,-0.001977,1.0,0.404586,-0.032261,1.0,0.398108,0.002715,1.0,0.404826,-0.031408,1.0,0.405066,-0.030555,1.0,0.400267,0.015084,1.0,0.406025,-0.029275,1.0,0.406025,-0.028849,1.0,0.407705,-0.010934,1.0,0.405785,-0.031408,1.0,0.406025,-0.030128,1.0,0.504613,0.168061,1.0,0.522995,0.163923,1.0,0.547531,0.033207,1.0,0.530641,0.007226,1.0,0.553219,0.025951,1.0,0.524495,0.019379,1.0,0.524214,0.020390,1.0,0.526771,-0.007414,1.0,0.527625,-0.006908,1.0,0.528760,-0.009941,1.0,0.527906,-0.010447,1.0,0.528479,-0.011458,1.0,0.528760,-0.010952,1.0,0.528193,-0.010447,1.0,0.528479,-0.011458,1.0,0.528479,-0.011458,1.0,0.528479,-0.009436,1.0,0.528760,-0.004381,1.0,0.529047,-0.010952,1.0,0.466294,0.414686,1.0,0.466294,0.414686,1.0,0.473966,0.613585,1.0,0.460159,0.755440,1.0,0.460159,0.755440,1.0,0.516858,0.411958,1.0,0.516858,0.411958,1.0,0.518358,0.621811,1.0,0.519943,0.758068,1.0,0.519943,0.758068,1.0
|
||||
0.492317,0.422835,1.0,0.490026,0.236871,1.0,0.490790,0.298859,1.0,0.489262,0.174883,1.0,0.451692,0.118945,1.0,0.457032,0.117566,1.0,0.457032,0.117566,1.0,0.446352,0.120325,1.0,0.446352,0.120325,1.0,0.469364,0.178978,1.0,0.449466,0.183073,1.0,0.411032,0.090426,1.0,0.411106,0.005883,1.0,0.407567,0.019370,1.0,0.408280,0.021904,1.0,0.408992,0.021904,1.0,0.411843,0.017681,1.0,0.411605,0.002056,1.0,0.418732,-0.032151,1.0,0.412318,0.006701,1.0,0.419207,-0.031729,1.0,0.420157,-0.030040,1.0,0.412080,0.007545,1.0,0.421107,-0.029195,1.0,0.421582,-0.027928,1.0,0.421820,0.012613,1.0,0.424908,0.021059,1.0,0.425145,0.022326,1.0,0.508418,0.169401,1.0,0.527573,0.163919,1.0,0.547510,0.035997,1.0,0.530677,0.007222,1.0,0.543750,0.026943,1.0,0.525396,0.021100,1.0,0.525125,0.021100,1.0,0.526495,0.017691,1.0,0.539917,0.010874,1.0,0.540188,0.009900,1.0,0.531151,0.008439,1.0,0.538818,0.009900,1.0,0.539094,0.008439,1.0,0.531422,0.007465,1.0,0.536625,0.007465,1.0,0.534437,0.007952,1.0,0.532245,0.006978,1.0,0.531151,0.004056,1.0,0.531422,0.007465,1.0,0.466282,0.422866,1.0,0.466282,0.422866,1.0,0.476998,0.621906,1.0,0.461680,0.793447,1.0,0.461680,0.793447,1.0,0.518353,0.422805,1.0,0.518353,0.422805,1.0,0.509246,0.624556,1.0,0.519950,0.793414,1.0,0.519950,0.793414,1.0
|
||||
0.492317,0.422835,1.0,0.490026,0.236871,1.0,0.490790,0.298859,1.0,0.489262,0.174883,1.0,0.451692,0.118945,1.0,0.457032,0.117566,1.0,0.457032,0.117566,1.0,0.446352,0.120325,1.0,0.446352,0.120325,1.0,0.469364,0.178978,1.0,0.449466,0.183073,1.0,0.411032,0.090426,1.0,0.411106,0.005883,1.0,0.407567,0.019370,1.0,0.408280,0.021904,1.0,0.408992,0.021904,1.0,0.411843,0.017681,1.0,0.411605,0.002056,1.0,0.418732,-0.032151,1.0,0.412318,0.006701,1.0,0.419207,-0.031729,1.0,0.420157,-0.030040,1.0,0.412080,0.007545,1.0,0.421107,-0.029195,1.0,0.421582,-0.027928,1.0,0.421820,0.012613,1.0,0.424908,0.021059,1.0,0.425145,0.022326,1.0,0.508418,0.169401,1.0,0.527573,0.163919,1.0,0.547510,0.035997,1.0,0.530677,0.007222,1.0,0.543750,0.026943,1.0,0.525396,0.021100,1.0,0.525125,0.021100,1.0,0.526495,0.017691,1.0,0.539917,0.010874,1.0,0.540188,0.009900,1.0,0.531151,0.008439,1.0,0.538818,0.009900,1.0,0.539094,0.008439,1.0,0.531422,0.007465,1.0,0.536625,0.007465,1.0,0.534437,0.007952,1.0,0.532245,0.006978,1.0,0.531151,0.004056,1.0,0.531422,0.007465,1.0,0.466282,0.422866,1.0,0.466282,0.422866,1.0,0.476998,0.621906,1.0,0.461680,0.793447,1.0,0.461680,0.793447,1.0,0.518353,0.422805,1.0,0.518353,0.422805,1.0,0.509246,0.624556,1.0,0.519950,0.793414,1.0,0.519950,0.793414,1.0
|
||||
0.490033,0.424275,1.0,0.487195,0.245369,1.0,0.488141,0.305004,1.0,0.486249,0.185733,1.0,0.451671,0.132585,1.0,0.457061,0.128517,1.0,0.457061,0.128517,1.0,0.446280,0.136653,1.0,0.446280,0.136653,1.0,0.467851,0.185812,1.0,0.449452,0.185890,1.0,0.412670,0.095709,1.0,0.426398,0.007186,1.0,0.422424,0.015977,1.0,0.423114,0.018020,1.0,0.427251,0.011482,1.0,0.427941,0.009438,1.0,0.426332,0.004943,1.0,0.435296,-0.030608,1.0,0.427941,0.007804,1.0,0.436216,-0.029791,1.0,0.436445,-0.028974,1.0,0.427251,0.008621,1.0,0.436905,-0.028565,1.0,0.437135,-0.027748,1.0,0.439434,-0.008542,1.0,0.440123,0.009438,1.0,0.440583,0.020063,1.0,0.504638,0.184370,1.0,0.523026,0.183007,1.0,0.547505,0.052321,1.0,0.521500,0.007219,1.0,0.519737,0.019622,1.0,0.518600,0.020632,1.0,0.514052,0.018611,1.0,0.514336,0.017601,1.0,0.512915,0.014063,1.0,0.512347,0.014063,1.0,0.528547,0.014569,1.0,0.516042,0.026191,1.0,0.520305,0.045392,1.0,0.528547,0.014569,1.0,0.520590,0.045897,1.0,0.519737,0.046403,1.0,0.517747,0.019116,1.0,0.518031,0.018611,1.0,0.520875,0.049940,1.0,0.464749,0.425629,1.0,0.464749,0.425629,1.0,0.480048,0.632672,1.0,0.469358,0.793479,1.0,0.469358,0.793479,1.0,0.515316,0.422921,1.0,0.515316,0.422921,1.0,0.509146,0.635430,1.0,0.519880,0.788086,1.0,0.519880,0.788086,1.0
|
||||
0.490033,0.436510,1.0,0.490592,0.254617,1.0,0.490406,0.315248,1.0,0.490779,0.193986,1.0,0.451717,0.140862,1.0,0.457089,0.139492,1.0,0.457089,0.139492,1.0,0.446346,0.142232,1.0,0.446346,0.142232,1.0,0.473155,0.198073,1.0,0.455532,0.202159,1.0,0.421758,0.112131,1.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.508426,0.189919,1.0,0.526073,0.185853,1.0,0.547583,0.071211,1.0,0.516863,0.007198,1.0,0.515702,0.020654,1.0,0.510964,0.019767,1.0,0.509717,0.019767,1.0,0.509966,0.019767,1.0,0.509966,-0.002399,1.0,0.498495,-0.037423,1.0,0.510216,-0.006389,1.0,0.510465,-0.004616,1.0,0.510465,-0.004616,1.0,0.509717,-0.005503,1.0,0.509717,-0.005059,1.0,0.509966,-0.005059,1.0,0.509218,-0.003286,1.0,0.501737,0.021984,1.0,0.509218,-0.003286,1.0,0.463240,0.436499,1.0,0.463240,0.436499,1.0,0.481583,0.635475,1.0,0.470916,0.796283,1.0,0.470916,0.796283,1.0,0.516826,0.436520,1.0,0.516826,0.436520,1.0,0.509143,0.640934,1.0,0.516848,0.796249,1.0,0.516848,0.796249,1.0
|
||||
0.491553,0.444687,1.0,0.490986,0.264789,1.0,0.491175,0.324755,1.0,0.490797,0.204823,1.0,0.450969,0.151703,1.0,0.457096,0.147599,1.0,0.457096,0.147599,1.0,0.444842,0.155806,1.0,0.444842,0.155806,1.0,0.473153,0.206159,1.0,0.455508,0.207494,1.0,0.421843,0.114906,1.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.508438,0.202132,1.0,0.526078,0.199441,1.0,0.550578,0.076702,1.0,0.509267,0.007202,1.0,0.507729,0.021533,1.0,0.501279,0.007677,1.0,0.501010,0.006244,1.0,0.500742,0.008633,1.0,0.503160,0.005766,1.0,0.503429,0.004811,1.0,0.501548,0.005289,1.0,0.503429,0.004811,1.0,0.503698,0.002900,1.0,0.501548,0.005289,1.0,0.505042,0.002900,1.0,0.504504,0.003855,1.0,0.507192,0.006722,1.0,0.505310,0.002422,1.0,0.504773,0.001944,1.0,0.466270,0.444747,1.0,0.466270,0.444747,1.0,0.481617,0.638144,1.0,0.470928,0.796349,1.0,0.470928,0.796349,1.0,0.516836,0.444626,1.0,0.516836,0.444626,1.0,0.507714,0.643557,1.0,0.518343,0.793547,1.0,0.518343,0.793547,1.0
|
||||
0.489285,0.446037,1.0,0.491553,0.267207,1.0,0.490797,0.326817,1.0,0.492309,0.207597,1.0,0.452407,0.155831,1.0,0.458528,0.153088,1.0,0.458528,0.153088,1.0,0.446286,0.158574,1.0,0.446286,0.158574,1.0,0.475426,0.208966,1.0,0.458543,0.210335,1.0,0.421883,0.120278,1.0,0.446294,0.024942,1.0,0.456510,0.017818,1.0,0.465397,0.019526,1.0,0.466357,0.013548,1.0,0.467318,0.007998,1.0,0.468279,0.004582,1.0,0.467798,0.005436,1.0,0.467318,0.007571,1.0,0.468039,0.006717,1.0,0.468039,0.004582,1.0,0.466837,0.008852,1.0,0.468279,0.007571,1.0,0.466357,0.006290,1.0,0.464917,0.015683,1.0,0.467558,0.017818,1.0,0.466597,0.005863,1.0,0.508433,0.206234,1.0,0.524557,0.204870,1.0,0.553646,0.079496,1.0,0.510736,0.007203,1.0,0.506371,0.019665,1.0,0.484822,0.007227,1.0,0.484543,0.004739,1.0,0.483143,0.001257,1.0,0.503573,0.007227,1.0,0.497136,0.001257,1.0,0.486781,0.003247,1.0,0.492379,0.003247,1.0,0.491259,0.003247,1.0,0.487061,0.003247,1.0,0.493218,0.003247,1.0,0.503573,0.004242,1.0,0.503853,0.004739,1.0,0.506092,0.002749,1.0,0.502453,0.004739,1.0,0.464756,0.447363,1.0,0.464756,0.447363,1.0,0.480067,0.640890,1.0,0.470916,0.799031,1.0,0.470916,0.799031,1.0,0.513814,0.444711,1.0,0.513814,0.444711,1.0,0.507677,0.643664,1.0,0.518346,0.793560,1.0,0.518346,0.793560,1.0
|
||||
0.487754,0.447402,1.0,0.490051,0.269555,1.0,0.489285,0.328838,1.0,0.490817,0.210273,1.0,0.452423,0.157113,1.0,0.458569,0.153111,1.0,0.458569,0.153111,1.0,0.446277,0.161116,1.0,0.446277,0.161116,1.0,0.474686,0.210345,1.0,0.458556,0.210417,1.0,0.423316,0.120462,1.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.507682,0.208931,1.0,0.524547,0.207590,1.0,0.555156,0.079479,1.0,0.518379,0.007200,1.0,0.511413,0.021133,1.0,0.505381,0.004794,1.0,0.505094,0.004283,1.0,0.504520,0.004794,1.0,0.508828,0.005304,1.0,0.507392,0.004283,1.0,0.503945,0.005815,1.0,0.503658,0.005815,1.0,0.503945,0.005304,1.0,0.502509,0.006326,1.0,0.501935,0.006836,1.0,0.491882,0.007347,1.0,0.502222,0.025218,1.0,0.497914,0.009900,1.0,0.493605,0.006836,1.0,0.463226,0.447445,1.0,0.463226,0.447445,1.0,0.477010,0.640947,1.0,0.470924,0.801666,1.0,0.470924,0.801666,1.0,0.512282,0.447359,1.0,0.512282,0.447359,1.0,0.507664,0.643663,1.0,0.518417,0.796223,1.0,0.518417,0.796223,1.0
|
||||
0.487754,0.447402,1.0,0.490051,0.269555,1.0,0.489285,0.328838,1.0,0.490817,0.210273,1.0,0.452423,0.157113,1.0,0.458569,0.153111,1.0,0.458569,0.153111,1.0,0.446277,0.161116,1.0,0.446277,0.161116,1.0,0.474686,0.210345,1.0,0.458556,0.210417,1.0,0.423316,0.120462,1.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.507682,0.208931,1.0,0.524547,0.207590,1.0,0.555156,0.079479,1.0,0.518379,0.007200,1.0,0.511413,0.021133,1.0,0.505381,0.004794,1.0,0.505094,0.004283,1.0,0.504520,0.004794,1.0,0.508828,0.005304,1.0,0.507392,0.004283,1.0,0.503945,0.005815,1.0,0.503658,0.005815,1.0,0.503945,0.005304,1.0,0.502509,0.006326,1.0,0.501935,0.006836,1.0,0.491882,0.007347,1.0,0.502222,0.025218,1.0,0.497914,0.009900,1.0,0.493605,0.006836,1.0,0.463226,0.447445,1.0,0.463226,0.447445,1.0,0.477010,0.640947,1.0,0.470924,0.801666,1.0,0.470924,0.801666,1.0,0.512282,0.447359,1.0,0.512282,0.447359,1.0,0.507664,0.643663,1.0,0.518417,0.796223,1.0,0.518417,0.796223,1.0
|
||||
0.488514,0.443244,1.0,0.491386,0.266452,1.0,0.490429,0.325383,1.0,0.492343,0.207521,1.0,0.452472,0.153073,1.0,0.458594,0.147680,1.0,0.458594,0.147680,1.0,0.446349,0.158467,1.0,0.446349,0.158467,1.0,0.475481,0.207574,1.0,0.458619,0.207627,1.0,0.421855,0.123111,1.0,0.434024,0.022200,1.0,0.434964,0.008671,1.0,0.439223,0.004464,1.0,0.448451,0.004043,1.0,0.436383,0.008250,1.0,0.442062,0.001099,1.0,0.432834,0.009933,1.0,0.435200,0.007829,1.0,0.438749,0.004043,1.0,0.434727,0.004043,1.0,0.435200,0.006988,1.0,0.438276,0.004043,1.0,0.432124,0.009512,1.0,0.438040,0.004043,1.0,0.438513,0.004043,1.0,0.431414,0.010353,1.0,0.509190,0.206199,1.0,0.526036,0.204877,1.0,0.558208,0.079598,1.0,0.530656,0.007191,1.0,0.525260,0.029270,1.0,0.531229,0.021692,1.0,0.515312,0.020682,1.0,0.516450,0.010072,1.0,0.517586,0.008557,1.0,0.517586,0.009567,1.0,0.516165,0.010578,1.0,0.518723,0.006536,1.0,0.518155,0.010072,1.0,0.516450,0.011083,1.0,0.519007,0.006536,1.0,0.518155,0.010072,1.0,0.517870,0.012599,1.0,0.517302,0.010578,1.0,0.517586,0.010578,1.0,0.464735,0.444575,1.0,0.464735,0.444575,1.0,0.475490,0.640858,1.0,0.470822,0.801730,1.0,0.470822,0.801730,1.0,0.512292,0.441914,1.0,0.512292,0.441914,1.0,0.507660,0.643705,1.0,0.519944,0.801680,1.0,0.519944,0.801680,1.0
|
||||
0.488524,0.435137,1.0,0.492492,0.260405,1.0,0.491170,0.318649,1.0,0.493815,0.202161,1.0,0.452489,0.140908,1.0,0.458572,0.139493,1.0,0.458572,0.139493,1.0,0.446407,0.142324,1.0,0.446407,0.142324,1.0,0.476198,0.203489,1.0,0.458582,0.204817,1.0,0.412656,0.133995,1.0,0.420291,0.027591,1.0,0.418137,0.029205,1.0,0.417399,0.011716,1.0,0.431418,0.005595,1.0,0.418137,0.007781,1.0,0.419858,0.013902,1.0,0.432156,0.004720,1.0,0.418875,0.009093,1.0,0.428466,0.008218,1.0,0.431418,0.004720,1.0,0.419612,0.010404,1.0,0.419612,0.012153,1.0,0.432402,0.036201,1.0,0.419612,0.012153,1.0,0.419121,0.012153,1.0,0.433139,0.038387,1.0,0.510707,0.200775,1.0,0.527599,0.199390,1.0,0.567448,0.079560,1.0,0.544484,0.007194,1.0,0.548682,0.019060,1.0,0.544661,0.014974,1.0,0.544089,0.014464,1.0,0.546672,0.017017,1.0,0.547245,0.006804,1.0,0.540927,-0.036603,1.0,0.545234,0.010378,1.0,0.540927,-0.036092,1.0,0.540354,-0.035071,1.0,0.545234,0.011400,1.0,0.540063,-0.034560,1.0,0.538052,-0.033028,1.0,0.536328,0.016506,1.0,0.530297,0.010889,1.0,0.528865,0.009868,1.0,0.463247,0.433812,1.0,0.463247,0.433812,1.0,0.472404,0.640888,1.0,0.466251,0.796295,1.0,0.466251,0.796295,1.0,0.513802,0.436461,1.0,0.513802,0.436461,1.0,0.509152,0.643646,1.0,0.521526,0.804418,1.0,0.521526,0.804418,1.0
|
||||
0.487766,0.425603,1.0,0.492358,0.253876,1.0,0.490828,0.311118,1.0,0.493889,0.196633,1.0,0.454030,0.125828,1.0,0.460123,0.123102,1.0,0.460123,0.123102,1.0,0.447937,0.128554,1.0,0.447937,0.128554,1.0,0.476261,0.200678,1.0,0.458633,0.204723,1.0,0.408035,0.158480,1.0,0.401922,0.046746,1.0,0.404539,0.030465,1.0,0.406855,0.021771,1.0,0.420754,0.021771,1.0,0.421011,0.017195,1.0,0.419210,0.018568,1.0,0.412775,0.024974,1.0,0.408914,0.022686,1.0,0.405310,0.031838,1.0,0.417151,0.007128,1.0,0.422814,0.007586,1.0,0.404796,0.035498,1.0,0.415349,0.008043,1.0,0.407113,0.026347,1.0,0.417151,0.004383,1.0,0.413032,0.026804,1.0,0.511512,0.191256,1.0,0.529135,0.185878,1.0,0.581297,0.095796,1.0,0.565906,0.005874,1.0,0.569630,0.020308,1.0,0.568297,0.020782,1.0,0.563760,0.013194,1.0,0.563760,0.013194,1.0,0.566427,0.004657,1.0,0.561094,-0.035657,1.0,0.565896,0.011771,1.0,0.561094,-0.034235,1.0,0.560026,-0.032812,1.0,0.566161,0.012245,1.0,0.559224,-0.032812,1.0,0.556021,-0.030915,1.0,0.567760,0.013668,1.0,0.549089,0.009874,1.0,0.548818,0.010348,1.0,0.463245,0.425618,1.0,0.463245,0.425618,1.0,0.467827,0.638195,1.0,0.455534,0.809830,1.0,0.455534,0.809830,1.0,0.512286,0.425589,1.0,0.512286,0.425589,1.0,0.518368,0.643608,1.0,0.532229,0.796303,1.0,0.532229,0.796303,1.0
|
||||
0.487718,0.427005,1.0,0.490033,0.254244,1.0,0.489261,0.311831,1.0,0.490805,0.196657,1.0,0.458605,0.117518,1.0,0.464750,0.117504,1.0,0.464750,0.117504,1.0,0.452460,0.117531,1.0,0.452460,0.117531,1.0,0.473169,0.199383,1.0,0.455534,0.202109,1.0,0.398878,0.193933,1.0,0.394196,0.087693,1.0,0.392162,0.089121,1.0,0.391429,0.073483,1.0,0.399247,0.043077,1.0,0.405845,0.064796,1.0,0.407310,0.056108,1.0,0.407066,0.043077,1.0,0.395338,0.065665,1.0,0.398515,0.058715,1.0,0.401447,0.047855,1.0,0.395338,0.068705,1.0,0.397782,0.064361,1.0,0.398270,0.064361,1.0,0.391429,0.076958,1.0,0.393139,0.067402,1.0,0.393384,0.067402,1.0,0.508431,0.192577,1.0,0.526057,0.188496,1.0,0.595031,0.125818,1.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.463191,0.428391,1.0,0.463191,0.428391,1.0,0.458611,0.640834,1.0,0.437183,0.798967,1.0,0.437183,0.798967,1.0,0.512246,0.425619,1.0,0.512246,0.425619,1.0,0.521479,0.643669,1.0,0.546000,0.793546,1.0,0.546000,0.793546,1.0
|
||||
0.489255,0.426977,1.0,0.489279,0.260435,1.0,0.489271,0.315949,1.0,0.489287,0.204920,1.0,0.465495,0.113511,1.0,0.472416,0.112168,1.0,0.472416,0.112168,1.0,0.458574,0.114854,1.0,0.458574,0.114854,1.0,0.473174,0.207668,1.0,0.457061,0.210415,1.0,0.403431,0.248431,1.0,0.386494,0.155788,1.0,0.386934,0.152217,1.0,0.396762,0.124819,1.0,0.383361,0.108936,1.0,0.386265,0.146260,1.0,0.384701,0.119656,1.0,0.384701,0.110127,1.0,0.386711,0.145863,1.0,0.384478,0.126407,1.0,0.385148,0.110921,1.0,0.386488,0.146260,1.0,0.383808,0.127201,1.0,0.385148,0.143878,1.0,0.385371,0.146657,1.0,0.383584,0.123231,1.0,0.385594,0.108936,1.0,0.506144,0.199434,1.0,0.523000,0.193948,1.0,0.602729,0.183007,1.0,0.595042,0.055111,1.0,0.598401,0.057993,1.0,0.597219,0.044362,1.0,0.595453,0.034400,1.0,0.595745,0.029682,1.0,0.590734,0.011332,1.0,0.583948,0.003992,1.0,0.593385,0.030730,1.0,0.587193,0.010283,1.0,0.579526,0.004516,1.0,0.591323,0.031779,1.0,0.584542,0.017623,1.0,0.579526,0.007138,1.0,0.588964,0.035449,1.0,0.585427,0.022342,1.0,0.583656,0.010808,1.0,0.464729,0.428362,1.0,0.464729,0.428362,1.0,0.447950,0.643523,1.0,0.423304,0.804365,1.0,0.423304,0.804365,1.0,0.513780,0.425593,1.0,0.513780,0.425593,1.0,0.532203,0.649056,1.0,0.559833,0.790806,1.0,0.559833,0.790806,1.0
|
||||
0.489255,0.426977,1.0,0.489279,0.260435,1.0,0.489271,0.315949,1.0,0.489287,0.204920,1.0,0.465495,0.113511,1.0,0.472416,0.112168,1.0,0.472416,0.112168,1.0,0.458574,0.114854,1.0,0.458574,0.114854,1.0,0.473174,0.207668,1.0,0.457061,0.210415,1.0,0.403431,0.248431,1.0,0.386494,0.155788,1.0,0.386934,0.152217,1.0,0.396762,0.124819,1.0,0.383361,0.108936,1.0,0.386265,0.146260,1.0,0.384701,0.119656,1.0,0.384701,0.110127,1.0,0.386711,0.145863,1.0,0.384478,0.126407,1.0,0.385148,0.110921,1.0,0.386488,0.146260,1.0,0.383808,0.127201,1.0,0.385148,0.143878,1.0,0.385371,0.146657,1.0,0.383584,0.123231,1.0,0.385594,0.108936,1.0,0.506144,0.199434,1.0,0.523000,0.193948,1.0,0.602729,0.183007,1.0,0.595042,0.055111,1.0,0.598401,0.057993,1.0,0.597219,0.044362,1.0,0.595453,0.034400,1.0,0.595745,0.029682,1.0,0.590734,0.011332,1.0,0.583948,0.003992,1.0,0.593385,0.030730,1.0,0.587193,0.010283,1.0,0.579526,0.004516,1.0,0.591323,0.031779,1.0,0.584542,0.017623,1.0,0.579526,0.007138,1.0,0.588964,0.035449,1.0,0.585427,0.022342,1.0,0.583656,0.010808,1.0,0.464729,0.428362,1.0,0.464729,0.428362,1.0,0.447950,0.643523,1.0,0.423304,0.804365,1.0,0.423304,0.804365,1.0,0.513780,0.425593,1.0,0.513780,0.425593,1.0,0.532203,0.649056,1.0,0.559833,0.790806,1.0,0.559833,0.790806,1.0
|
||||
0.490032,0.444660,1.0,0.487192,0.281127,1.0,0.488139,0.335638,1.0,0.486245,0.226616,1.0,0.477728,0.135358,1.0,0.481607,0.120331,1.0,0.481607,0.120331,1.0,0.461718,0.120372,1.0,0.461718,0.120372,1.0,0.469355,0.229362,1.0,0.452466,0.232109,1.0,0.417192,0.313771,1.0,0.385051,0.226648,1.0,0.356289,0.213186,1.0,0.357483,0.166470,1.0,0.359872,0.186006,1.0,0.371339,0.194075,1.0,0.361783,0.210638,1.0,0.361544,0.209788,1.0,0.361305,0.195774,1.0,0.361544,0.210638,1.0,0.361783,0.210638,1.0,0.361305,0.195774,1.0,0.361066,0.211062,1.0,0.361783,0.211487,1.0,0.359872,0.189404,1.0,0.360589,0.189404,1.0,0.367516,0.205542,1.0,0.504615,0.219803,1.0,0.522984,0.212990,1.0,0.596547,0.248546,1.0,0.607307,0.139311,1.0,0.609458,0.129615,1.0,0.611693,0.113705,1.0,0.608896,0.095806,1.0,0.607781,0.109727,1.0,0.607500,0.090336,1.0,0.603307,0.078404,1.0,0.601906,0.109727,1.0,0.601906,0.086856,1.0,0.600510,0.074923,1.0,0.597432,0.108732,1.0,0.599109,0.087353,1.0,0.596313,0.076912,1.0,0.594078,0.105252,1.0,0.592677,0.088845,1.0,0.592396,0.080890,1.0,0.464726,0.447346,1.0,0.464726,0.447346,1.0,0.446268,0.654494,1.0,0.409539,0.798968,1.0,0.409539,0.798968,1.0,0.515338,0.441974,1.0,0.515338,0.441974,1.0,0.541365,0.662620,1.0,0.579729,0.782649,1.0,0.579729,0.782649,1.0
|
||||
0.487011,0.462325,1.0,0.488690,0.301939,1.0,0.488131,0.355401,1.0,0.489250,0.248478,1.0,0.479303,0.157109,1.0,0.484757,0.139562,1.0,0.484757,0.139562,1.0,0.470828,0.139569,1.0,0.470828,0.139569,1.0,0.473143,0.251188,1.0,0.457036,0.253897,1.0,0.434086,0.360272,1.0,0.389663,0.294791,1.0,0.361126,0.279037,1.0,0.361126,0.260219,1.0,0.361361,0.260219,1.0,0.390763,0.258128,1.0,0.359244,0.286564,1.0,0.357597,0.287400,1.0,0.358773,0.285309,1.0,0.359008,0.287400,1.0,0.358303,0.287819,1.0,0.357127,0.285727,1.0,0.360890,0.298272,1.0,0.363243,0.289909,1.0,0.356892,0.286564,1.0,0.360890,0.300363,1.0,0.362537,0.301199,1.0,0.506122,0.243043,1.0,0.522995,0.237607,1.0,0.581281,0.316556,1.0,0.607307,0.215794,1.0,0.611599,0.209305,1.0,0.615630,0.184456,1.0,0.611865,0.161518,1.0,0.613208,0.187800,1.0,0.609448,0.168685,1.0,0.608911,0.157694,1.0,0.607833,0.188756,1.0,0.605682,0.174897,1.0,0.604073,0.161518,1.0,0.604880,0.193056,1.0,0.602187,0.180632,1.0,0.601651,0.168685,1.0,0.603531,0.196402,1.0,0.600844,0.184456,1.0,0.600042,0.179198,1.0,0.463232,0.466381,1.0,0.463232,0.466381,1.0,0.438705,0.670918,1.0,0.395718,0.809893,1.0,0.395718,0.809893,1.0,0.510790,0.458269,1.0,0.510790,0.458269,1.0,0.545917,0.681697,1.0,0.593531,0.793464,1.0,0.593531,0.793464,1.0
|
||||
0.487013,0.489705,1.0,0.486447,0.331221,1.0,0.486636,0.384049,1.0,0.486258,0.278393,1.0,0.481602,0.184389,1.0,0.490774,0.166782,1.0,0.490774,0.166782,1.0,0.472392,0.166768,1.0,0.472392,0.166768,1.0,0.470147,0.285152,1.0,0.454037,0.291912,1.0,0.447874,0.411940,1.0,0.400416,0.362923,1.0,0.390724,0.351611,1.0,0.391470,0.332156,1.0,0.391719,0.333041,1.0,0.392962,0.333041,1.0,0.391470,0.331272,1.0,0.397936,0.362665,1.0,0.394454,0.348516,1.0,0.381770,0.346747,1.0,0.380527,0.348074,1.0,0.381273,0.344537,1.0,0.381273,0.346747,1.0,0.380527,0.346747,1.0,0.403408,0.360012,1.0,0.380527,0.346306,1.0,0.378040,0.358685,1.0,0.503863,0.274370,1.0,0.521469,0.270347,1.0,0.565922,0.379303,1.0,0.599667,0.294659,1.0,0.607188,0.283020,1.0,0.612188,0.276108,1.0,0.610245,0.247470,1.0,0.609688,0.237594,1.0,0.609688,0.245989,1.0,0.608854,0.233151,1.0,0.603021,0.252407,1.0,0.604969,0.245494,1.0,0.606354,0.236113,1.0,0.601354,0.281540,1.0,0.604135,0.249445,1.0,0.603021,0.246482,1.0,0.600245,0.282527,1.0,0.603302,0.252901,1.0,0.603021,0.251914,1.0,0.463238,0.491091,1.0,0.463238,0.491091,1.0,0.435669,0.698161,1.0,0.385088,0.817989,1.0,0.385088,0.817989,1.0,0.510789,0.488319,1.0,0.510789,0.488319,1.0,0.545969,0.706318,1.0,0.605781,0.796325,1.0,0.605781,0.796325,1.0
|
||||
0.487739,0.514183,1.0,0.490052,0.363960,1.0,0.489281,0.414034,1.0,0.490822,0.313886,1.0,0.483894,0.215750,1.0,0.493832,0.204748,1.0,0.493832,0.204748,1.0,0.473930,0.204768,1.0,0.473930,0.204768,1.0,0.474679,0.315276,1.0,0.458535,0.316666,1.0,0.460219,0.441960,1.0,0.411024,0.420177,1.0,0.402807,0.421265,1.0,0.399186,0.388620,1.0,0.396082,0.386781,1.0,0.396600,0.388620,1.0,0.394014,0.389081,1.0,0.383928,0.393219,1.0,0.389876,0.396896,1.0,0.391945,0.401034,1.0,0.389876,0.409310,1.0,0.390652,0.396896,1.0,0.391945,0.405632,1.0,0.390652,0.413908,1.0,0.396082,0.382184,1.0,0.398410,0.419425,1.0,0.391945,0.418966,1.0,0.506924,0.312482,1.0,0.523026,0.311078,1.0,0.549068,0.422903,1.0,0.593448,0.354756,1.0,0.597354,0.347364,1.0,0.606099,0.336264,1.0,0.606099,0.316283,1.0,0.597854,0.318504,1.0,0.600354,0.311844,1.0,0.605349,0.299411,1.0,0.594859,0.323831,1.0,0.600854,0.312731,1.0,0.599604,0.313175,1.0,0.593109,0.330047,1.0,0.595859,0.322944,1.0,0.597354,0.317616,1.0,0.591859,0.334044,1.0,0.606349,0.330492,1.0,0.603349,0.322944,1.0,0.464730,0.515584,1.0,0.464730,0.515584,1.0,0.435625,0.722681,1.0,0.383516,0.826197,1.0,0.383516,0.826197,1.0,0.510749,0.512782,1.0,0.510749,0.512782,1.0,0.545995,0.725365,1.0,0.611927,0.815194,1.0,0.611927,0.815194,1.0
|
||||
0.488505,0.537372,1.0,0.491373,0.386005,1.0,0.490417,0.436460,1.0,0.492330,0.335549,1.0,0.485461,0.238928,1.0,0.495336,0.226499,1.0,0.495336,0.226499,1.0,0.475456,0.226507,1.0,0.475456,0.226507,1.0,0.475442,0.335665,1.0,0.458555,0.335781,1.0,0.460181,0.460963,1.0,0.411048,0.444517,1.0,0.402069,0.436333,1.0,0.393801,0.425309,1.0,0.385533,0.417960,1.0,0.397160,0.407394,1.0,0.387858,0.407854,1.0,0.382949,0.407854,1.0,0.396643,0.411069,1.0,0.387600,0.409232,1.0,0.381399,0.411069,1.0,0.396127,0.418419,1.0,0.387858,0.413826,1.0,0.381657,0.414744,1.0,0.394059,0.426228,1.0,0.388892,0.420716,1.0,0.383466,0.420256,1.0,0.509188,0.332893,1.0,0.526047,0.330237,1.0,0.544391,0.447306,1.0,0.585844,0.379327,1.0,0.591750,0.380076,1.0,0.602781,0.366702,1.0,0.602531,0.349315,1.0,0.588990,0.360015,1.0,0.592250,0.343519,1.0,0.598521,0.336386,1.0,0.587234,0.359569,1.0,0.592500,0.343073,1.0,0.599021,0.337278,1.0,0.588740,0.360015,1.0,0.594005,0.344857,1.0,0.600276,0.351098,1.0,0.604036,0.365810,1.0,0.602781,0.354219,1.0,0.599271,0.352881,1.0,0.464719,0.537416,1.0,0.464719,0.537416,1.0,0.437193,0.730956,1.0,0.385040,0.828936,1.0,0.385040,0.828936,1.0,0.512291,0.537328,1.0,0.512291,0.537328,1.0,0.547516,0.733583,1.0,0.613448,0.817934,1.0,0.613448,0.817934,1.0
|
||||
0.488505,0.537372,1.0,0.491373,0.386005,1.0,0.490417,0.436460,1.0,0.492330,0.335549,1.0,0.485461,0.238928,1.0,0.495336,0.226499,1.0,0.495336,0.226499,1.0,0.475456,0.226507,1.0,0.475456,0.226507,1.0,0.475442,0.335665,1.0,0.458555,0.335781,1.0,0.460181,0.460963,1.0,0.411048,0.444517,1.0,0.402069,0.436333,1.0,0.393801,0.425309,1.0,0.385533,0.417960,1.0,0.397160,0.407394,1.0,0.387858,0.407854,1.0,0.382949,0.407854,1.0,0.396643,0.411069,1.0,0.387600,0.409232,1.0,0.381399,0.411069,1.0,0.396127,0.418419,1.0,0.387858,0.413826,1.0,0.381657,0.414744,1.0,0.394059,0.426228,1.0,0.388892,0.420716,1.0,0.383466,0.420256,1.0,0.509188,0.332893,1.0,0.526047,0.330237,1.0,0.544391,0.447306,1.0,0.585844,0.379327,1.0,0.591750,0.380076,1.0,0.602781,0.366702,1.0,0.602531,0.349315,1.0,0.588990,0.360015,1.0,0.592250,0.343519,1.0,0.598521,0.336386,1.0,0.587234,0.359569,1.0,0.592500,0.343073,1.0,0.599021,0.337278,1.0,0.588740,0.360015,1.0,0.594005,0.344857,1.0,0.600276,0.351098,1.0,0.604036,0.365810,1.0,0.602781,0.354219,1.0,0.599271,0.352881,1.0,0.464719,0.537416,1.0,0.464719,0.537416,1.0,0.437193,0.730956,1.0,0.385040,0.828936,1.0,0.385040,0.828936,1.0,0.512291,0.537328,1.0,0.512291,0.537328,1.0,0.547516,0.733583,1.0,0.613448,0.817934,1.0,0.613448,0.817934,1.0
|
||||
0.490796,0.533225,1.0,0.490800,0.385004,1.0,0.490799,0.434411,1.0,0.490802,0.335596,1.0,0.486954,0.240267,1.0,0.495359,0.226562,1.0,0.495359,0.226562,1.0,0.475491,0.226579,1.0,0.475491,0.226579,1.0,0.473943,0.336967,1.0,0.457084,0.338338,1.0,0.457089,0.458306,1.0,0.404974,0.428358,1.0,0.400154,0.432999,1.0,0.394708,0.403513,1.0,0.385548,0.397792,1.0,0.395451,0.399112,1.0,0.384558,0.395591,1.0,0.376884,0.402193,1.0,0.391737,0.411875,1.0,0.384558,0.405273,1.0,0.378617,0.406154,1.0,0.390994,0.413635,1.0,0.385548,0.414075,1.0,0.384558,0.418476,1.0,0.396441,0.399112,1.0,0.388519,0.423318,1.0,0.388767,0.423757,1.0,0.507653,0.334228,1.0,0.524505,0.332859,1.0,0.544495,0.447305,1.0,0.582854,0.379309,1.0,0.585865,0.358190,1.0,0.599219,0.364783,1.0,0.594521,0.334451,1.0,0.584875,0.365223,1.0,0.586609,0.341045,1.0,0.592542,0.330494,1.0,0.587844,0.368740,1.0,0.586609,0.341924,1.0,0.590813,0.334011,1.0,0.590318,0.372257,1.0,0.600948,0.359508,1.0,0.592542,0.348079,1.0,0.591802,0.373576,1.0,0.601937,0.361267,1.0,0.598479,0.362586,1.0,0.466281,0.534590,1.0,0.466281,0.534590,1.0,0.438659,0.733502,1.0,0.385089,0.828890,1.0,0.385089,0.828890,1.0,0.515310,0.531860,1.0,0.515310,0.531860,1.0,0.550578,0.730965,1.0,0.613443,0.817940,1.0,0.613443,0.817940,1.0
|
||||
0.493058,0.522319,1.0,0.490225,0.368065,1.0,0.491169,0.419483,1.0,0.489280,0.316647,1.0,0.486961,0.225255,1.0,0.495348,0.207624,1.0,0.495348,0.207624,1.0,0.475486,0.207704,1.0,0.475486,0.207704,1.0,0.473161,0.320709,1.0,0.457043,0.324771,1.0,0.449392,0.439230,1.0,0.400394,0.403744,1.0,0.392787,0.389919,1.0,0.395404,0.406833,1.0,0.396593,0.406410,1.0,0.384938,0.361589,1.0,0.394928,0.368777,1.0,0.384463,0.366240,1.0,0.385176,0.379348,1.0,0.389457,0.379771,1.0,0.390884,0.393302,1.0,0.384701,0.376811,1.0,0.389219,0.379348,1.0,0.390171,0.392879,1.0,0.377327,0.366663,1.0,0.394928,0.366663,1.0,0.374473,0.376811,1.0,0.506164,0.315242,1.0,0.523047,0.313836,1.0,0.546010,0.425577,1.0,0.585839,0.357397,1.0,0.596286,0.345372,1.0,0.600214,0.315260,1.0,0.594813,0.313514,1.0,0.601438,0.340135,1.0,0.586464,0.315696,1.0,0.590391,0.305222,1.0,0.594073,0.353228,1.0,0.586219,0.318751,1.0,0.589901,0.327043,1.0,0.584995,0.357156,1.0,0.584010,0.339263,1.0,0.586219,0.337081,1.0,0.581312,0.356282,1.0,0.581312,0.354973,1.0,0.583276,0.350609,1.0,0.467777,0.523690,1.0,0.467777,0.523690,1.0,0.437152,0.717255,1.0,0.385054,0.826167,1.0,0.385054,0.826167,1.0,0.518340,0.520947,1.0,0.518340,0.520947,1.0,0.558193,0.708919,1.0,0.616479,0.812623,1.0,0.616479,0.812623,1.0
|
||||
0.493855,0.492361,1.0,0.490409,0.342104,1.0,0.491558,0.392190,1.0,0.489260,0.292019,1.0,0.486177,0.196697,1.0,0.495378,0.183023,1.0,0.495378,0.183023,1.0,0.476983,0.182985,1.0,0.476983,0.182985,1.0,0.472393,0.293404,1.0,0.455526,0.294790,1.0,0.447838,0.406607,1.0,0.398826,0.373806,1.0,0.391717,0.361742,1.0,0.392879,0.374552,1.0,0.395204,0.376619,1.0,0.397993,0.369594,1.0,0.384511,0.330747,1.0,0.381721,0.329507,1.0,0.385906,0.345211,1.0,0.387068,0.344384,1.0,0.388695,0.361328,1.0,0.387301,0.346864,1.0,0.386603,0.344798,1.0,0.388230,0.360915,1.0,0.387068,0.348931,1.0,0.394971,0.334880,1.0,0.378467,0.338186,1.0,0.506146,0.289336,1.0,0.523031,0.286654,1.0,0.547536,0.400951,1.0,0.587359,0.319388,1.0,0.596969,0.312216,1.0,0.601005,0.286639,1.0,0.596214,0.282152,1.0,0.601766,0.308177,1.0,0.586370,0.281703,1.0,0.590656,0.272280,1.0,0.594443,0.319395,1.0,0.586115,0.284844,1.0,0.593437,0.283498,1.0,0.585609,0.323882,1.0,0.585359,0.304587,1.0,0.586875,0.307729,1.0,0.583339,0.320293,1.0,0.581823,0.322536,1.0,0.583844,0.316254,1.0,0.469316,0.493761,1.0,0.469316,0.493761,1.0,0.438681,0.690022,1.0,0.386633,0.818100,1.0,0.386633,0.818100,1.0,0.518394,0.490961,1.0,0.518394,0.490961,1.0,0.562833,0.676305,1.0,0.616464,0.809872,1.0,0.616464,0.809872,1.0
|
||||
0.495327,0.469224,1.0,0.490797,0.315939,1.0,0.492307,0.367034,1.0,0.489287,0.264844,1.0,0.485461,0.166730,1.0,0.495409,0.155837,1.0,0.495409,0.155837,1.0,0.475514,0.155797,1.0,0.475514,0.155797,1.0,0.472415,0.267546,1.0,0.455543,0.270247,1.0,0.447838,0.381984,1.0,0.397329,0.341129,1.0,0.392508,0.342514,1.0,0.393669,0.348708,1.0,0.394598,0.347469,1.0,0.392508,0.318561,1.0,0.383913,0.304107,1.0,0.384377,0.302456,1.0,0.389953,0.321452,1.0,0.382983,0.310715,1.0,0.387397,0.330951,1.0,0.385074,0.325169,1.0,0.382751,0.316496,1.0,0.378105,0.318148,1.0,0.379267,0.331777,1.0,0.373692,0.327647,1.0,0.376247,0.320213,1.0,0.506172,0.259413,1.0,0.523057,0.253981,1.0,0.547557,0.371091,1.0,0.584349,0.292155,1.0,0.587208,0.271606,1.0,0.601391,0.272065,1.0,0.595203,0.252814,1.0,0.599589,0.275273,1.0,0.583344,0.253272,1.0,0.586437,0.245021,1.0,0.592625,0.287649,1.0,0.583344,0.260147,1.0,0.589531,0.250981,1.0,0.585146,0.283524,1.0,0.582828,0.264731,1.0,0.589271,0.260606,1.0,0.584891,0.278024,1.0,0.583344,0.277107,1.0,0.589271,0.267023,1.0,0.470785,0.471939,1.0,0.470785,0.471939,1.0,0.446364,0.670886,1.0,0.398847,0.815241,1.0,0.398847,0.815241,1.0,0.519869,0.466509,1.0,0.519869,0.466509,1.0,0.558323,0.649134,1.0,0.605781,0.796223,1.0,0.605781,0.796223,1.0
|
||||
0.495342,0.448754,1.0,0.493057,0.296486,1.0,0.493819,0.347242,1.0,0.492296,0.245731,1.0,0.487007,0.147696,1.0,0.495463,0.136614,1.0,0.495463,0.136614,1.0,0.477023,0.136637,1.0,0.477023,0.136637,1.0,0.474664,0.247130,1.0,0.457031,0.248530,1.0,0.447849,0.362894,1.0,0.398773,0.319280,1.0,0.396404,0.320568,1.0,0.394020,0.302344,1.0,0.394497,0.292596,1.0,0.394974,0.295140,1.0,0.393782,0.288782,1.0,0.385915,0.281578,1.0,0.391160,0.298954,1.0,0.382101,0.288782,1.0,0.382816,0.289631,1.0,0.390683,0.305734,1.0,0.385200,0.298530,1.0,0.385200,0.306158,1.0,0.389014,0.307854,1.0,0.383293,0.305310,1.0,0.385200,0.309125,1.0,0.509940,0.240303,1.0,0.527583,0.234875,1.0,0.549068,0.354739,1.0,0.582865,0.272860,1.0,0.595578,0.265684,1.0,0.599474,0.243994,1.0,0.594542,0.229687,1.0,0.581818,0.255993,1.0,0.580521,0.234764,1.0,0.583120,0.222765,1.0,0.580781,0.259223,1.0,0.581302,0.235225,1.0,0.586750,0.227380,1.0,0.581042,0.259223,1.0,0.582859,0.243070,1.0,0.588568,0.236148,1.0,0.581818,0.258300,1.0,0.586750,0.247224,1.0,0.588568,0.242148,1.0,0.470808,0.450179,1.0,0.470808,0.450179,1.0,0.458584,0.662767,1.0,0.421732,0.799019,1.0,0.421732,0.799019,1.0,0.519876,0.447329,1.0,0.519876,0.447329,1.0,0.556646,0.640924,1.0,0.591922,0.790682,1.0,0.591922,0.790682,1.0
|
||||
0.495342,0.448754,1.0,0.493057,0.296486,1.0,0.493819,0.347242,1.0,0.492296,0.245731,1.0,0.487007,0.147696,1.0,0.495463,0.136614,1.0,0.495463,0.136614,1.0,0.477023,0.136637,1.0,0.477023,0.136637,1.0,0.474664,0.247130,1.0,0.457031,0.248530,1.0,0.447849,0.362894,1.0,0.398773,0.319280,1.0,0.396404,0.320568,1.0,0.394020,0.302344,1.0,0.394497,0.292596,1.0,0.394974,0.295140,1.0,0.393782,0.288782,1.0,0.385915,0.281578,1.0,0.391160,0.298954,1.0,0.382101,0.288782,1.0,0.382816,0.289631,1.0,0.390683,0.305734,1.0,0.385200,0.298530,1.0,0.385200,0.306158,1.0,0.389014,0.307854,1.0,0.383293,0.305310,1.0,0.385200,0.309125,1.0,0.509940,0.240303,1.0,0.527583,0.234875,1.0,0.549068,0.354739,1.0,0.582865,0.272860,1.0,0.595578,0.265684,1.0,0.599474,0.243994,1.0,0.594542,0.229687,1.0,0.581818,0.255993,1.0,0.580521,0.234764,1.0,0.583120,0.222765,1.0,0.580781,0.259223,1.0,0.581302,0.235225,1.0,0.586750,0.227380,1.0,0.581042,0.259223,1.0,0.582859,0.243070,1.0,0.588568,0.236148,1.0,0.581818,0.258300,1.0,0.586750,0.247224,1.0,0.588568,0.242148,1.0,0.470808,0.450179,1.0,0.470808,0.450179,1.0,0.458584,0.662767,1.0,0.421732,0.799019,1.0,0.421732,0.799019,1.0,0.519876,0.447329,1.0,0.519876,0.447329,1.0,0.556646,0.640924,1.0,0.591922,0.790682,1.0,0.591922,0.790682,1.0
|
||||
0.495381,0.437819,1.0,0.494221,0.281492,1.0,0.494608,0.333601,1.0,0.493834,0.229382,1.0,0.488488,0.139441,1.0,0.496915,0.120371,1.0,0.496915,0.120371,1.0,0.480061,0.120313,1.0,0.480061,0.120313,1.0,0.476182,0.232120,1.0,0.458530,0.234858,1.0,0.449403,0.357375,1.0,0.400362,0.308461,1.0,0.396165,0.308642,1.0,0.395400,0.308188,1.0,0.394380,0.288693,1.0,0.397440,0.288240,1.0,0.396675,0.275092,1.0,0.389280,0.268744,1.0,0.397185,0.288240,1.0,0.392850,0.276452,1.0,0.387239,0.270558,1.0,0.396420,0.289146,1.0,0.391065,0.280079,1.0,0.386219,0.273278,1.0,0.395400,0.290053,1.0,0.384689,0.296854,1.0,0.386219,0.293680,1.0,0.511492,0.227990,1.0,0.529151,0.226598,1.0,0.549083,0.338539,1.0,0.582724,0.264742,1.0,0.579776,0.246849,1.0,0.578323,0.223158,1.0,0.580745,0.214113,1.0,0.584620,0.208082,1.0,0.586557,0.205498,1.0,0.585104,0.210668,1.0,0.588979,0.208514,1.0,0.589469,0.208082,1.0,0.588010,0.217559,1.0,0.590922,0.221005,1.0,0.595036,0.214975,1.0,0.591406,0.224451,1.0,0.596979,0.232205,1.0,0.597703,0.225312,1.0,0.595766,0.230481,1.0,0.470864,0.441877,1.0,0.470864,0.441877,1.0,0.470838,0.654524,1.0,0.446399,0.798971,1.0,0.446399,0.798971,1.0,0.519898,0.433762,1.0,0.519898,0.433762,1.0,0.544510,0.640751,1.0,0.568958,0.777201,1.0,0.568958,0.777201,1.0
|
||||
0.495426,0.436478,1.0,0.495364,0.279179,1.0,0.495385,0.331612,1.0,0.495344,0.226746,1.0,0.489270,0.138061,1.0,0.496967,0.117769,1.0,0.496967,0.117769,1.0,0.481595,0.117708,1.0,0.481595,0.117708,1.0,0.476985,0.229406,1.0,0.458625,0.232067,1.0,0.453992,0.354750,1.0,0.407969,0.305713,1.0,0.401408,0.307122,1.0,0.401661,0.305318,1.0,0.402169,0.287726,1.0,0.403184,0.284118,1.0,0.401408,0.270585,1.0,0.395572,0.265623,1.0,0.402169,0.285019,1.0,0.397856,0.271487,1.0,0.392020,0.266526,1.0,0.400393,0.287275,1.0,0.395572,0.276900,1.0,0.390752,0.273743,1.0,0.396841,0.290432,1.0,0.393796,0.284569,1.0,0.389990,0.280960,1.0,0.513013,0.225344,1.0,0.530682,0.223942,1.0,0.547583,0.338535,1.0,0.581198,0.262057,1.0,0.577380,0.242904,1.0,0.576646,0.221174,1.0,0.579578,0.210744,1.0,0.583250,0.205094,1.0,0.585693,0.202921,1.0,0.584224,0.209875,1.0,0.587646,0.209006,1.0,0.589359,0.206398,1.0,0.587401,0.216829,1.0,0.589604,0.217263,1.0,0.594734,0.213786,1.0,0.590583,0.223781,1.0,0.595714,0.233343,1.0,0.597182,0.223781,1.0,0.594734,0.228562,1.0,0.470946,0.439208,1.0,0.470946,0.439208,1.0,0.478560,0.651759,1.0,0.481549,0.809895,1.0,0.481549,0.809895,1.0,0.519906,0.433747,1.0,0.519906,0.433747,1.0,0.533755,0.640924,1.0,0.544474,0.777129,1.0,0.544474,0.777129,1.0
|
||||
0.496959,0.446053,1.0,0.495767,0.283647,1.0,0.496164,0.337782,1.0,0.495369,0.229511,1.0,0.490039,0.140788,1.0,0.497027,0.123180,1.0,0.497027,0.123180,1.0,0.481631,0.123111,1.0,0.481631,0.123111,1.0,0.477000,0.236249,1.0,0.458631,0.242986,1.0,0.458534,0.357475,1.0,0.411022,0.313807,1.0,0.409518,0.304437,1.0,0.407865,0.290157,1.0,0.408809,0.285537,1.0,0.407865,0.282177,1.0,0.404084,0.274618,1.0,0.398415,0.270837,1.0,0.405502,0.282177,1.0,0.395107,0.278397,1.0,0.392508,0.286797,1.0,0.403612,0.287637,1.0,0.395107,0.285118,1.0,0.394162,0.291418,1.0,0.401486,0.291837,1.0,0.395343,0.290997,1.0,0.394634,0.294778,1.0,0.513752,0.228079,1.0,0.532135,0.226647,1.0,0.546062,0.346561,1.0,0.578198,0.270113,1.0,0.574906,0.246681,1.0,0.574401,0.226469,1.0,0.577682,0.215688,1.0,0.581724,0.212094,1.0,0.584000,0.207603,1.0,0.581979,0.213443,1.0,0.585771,0.218383,1.0,0.587536,0.210747,1.0,0.585266,0.221528,1.0,0.588042,0.231858,1.0,0.593094,0.219731,1.0,0.588297,0.228715,1.0,0.593854,0.238147,1.0,0.594865,0.229164,1.0,0.592339,0.235003,1.0,0.472449,0.447404,1.0,0.472449,0.447404,1.0,0.486219,0.654501,1.0,0.519897,0.815298,1.0,0.519897,0.815298,1.0,0.521469,0.444703,1.0,0.521469,0.444703,1.0,0.522995,0.643727,1.0,0.509141,0.796254,1.0,0.509141,0.796254,1.0
|
||||
0.498488,0.459667,1.0,0.497292,0.301157,1.0,0.497691,0.353994,1.0,0.496894,0.248320,1.0,0.490768,0.155785,1.0,0.498477,0.142061,1.0,0.498477,0.142061,1.0,0.483102,0.139565,1.0,0.483102,0.139565,1.0,0.478510,0.249729,1.0,0.460127,0.251138,1.0,0.460158,0.368369,1.0,0.411127,0.322015,1.0,0.410912,0.319189,1.0,0.407042,0.299406,1.0,0.399542,0.291666,1.0,0.409944,0.286075,1.0,0.401236,0.283494,1.0,0.396640,0.280914,1.0,0.409219,0.289945,1.0,0.397365,0.290806,1.0,0.395430,0.297686,1.0,0.407042,0.295966,1.0,0.397607,0.297686,1.0,0.396156,0.304568,1.0,0.404139,0.301127,1.0,0.398574,0.304568,1.0,0.397849,0.308007,1.0,0.515278,0.244279,1.0,0.533661,0.240237,1.0,0.545979,0.360186,1.0,0.573620,0.275697,1.0,0.569151,0.255868,1.0,0.569906,0.237081,1.0,0.573932,0.227687,1.0,0.577708,0.222767,1.0,0.578464,0.217846,1.0,0.577708,0.224109,1.0,0.581734,0.228134,1.0,0.583240,0.220531,1.0,0.580724,0.231713,1.0,0.585255,0.242001,1.0,0.589531,0.229924,1.0,0.583995,0.238870,1.0,0.590536,0.249158,1.0,0.591292,0.239318,1.0,0.587771,0.243790,1.0,0.475456,0.461051,1.0,0.475456,0.461051,1.0,0.498485,0.646379,1.0,0.532120,0.837019,1.0,0.532120,0.837019,1.0,0.521521,0.458282,1.0,0.521521,0.458282,1.0,0.512263,0.654498,1.0,0.495366,0.785361,1.0,0.495366,0.785361,1.0
|
||||
0.500030,0.469236,1.0,0.497662,0.309803,1.0,0.498451,0.362947,1.0,0.496872,0.256658,1.0,0.490814,0.166799,1.0,0.498482,0.161271,1.0,0.498482,0.161271,1.0,0.483116,0.161266,1.0,0.483116,0.161266,1.0,0.478503,0.263423,1.0,0.460133,0.270187,1.0,0.458607,0.379313,1.0,0.412620,0.338398,1.0,0.410960,0.330102,1.0,0.407131,0.316086,1.0,0.401950,0.306476,1.0,0.409608,0.300069,1.0,0.399922,0.297666,1.0,0.395192,0.302471,1.0,0.409383,0.301670,1.0,0.398571,0.305675,1.0,0.396994,0.313283,1.0,0.408707,0.308078,1.0,0.399472,0.310481,1.0,0.398346,0.316887,1.0,0.406905,0.315285,1.0,0.400373,0.316487,1.0,0.399922,0.320492,1.0,0.514556,0.253918,1.0,0.532240,0.251178,1.0,0.545958,0.373773,1.0,0.570573,0.291918,1.0,0.567344,0.269492,1.0,0.567344,0.249315,1.0,0.569922,0.240603,1.0,0.573792,0.234642,1.0,0.575083,0.230973,1.0,0.573536,0.236934,1.0,0.579208,0.237393,1.0,0.579469,0.232807,1.0,0.577406,0.244730,1.0,0.582047,0.255276,1.0,0.585917,0.240603,1.0,0.581531,0.251608,1.0,0.587719,0.259403,1.0,0.588240,0.253442,1.0,0.585656,0.255276,1.0,0.477033,0.469269,1.0,0.477033,0.469269,1.0,0.499977,0.654491,1.0,0.532130,0.837153,1.0,0.532130,0.837153,1.0,0.523026,0.469203,1.0,0.523026,0.469203,1.0,0.512281,0.662644,1.0,0.492313,0.793526,1.0,0.492313,0.793526,1.0
|
||||
0.500030,0.469236,1.0,0.497662,0.309803,1.0,0.498451,0.362947,1.0,0.496872,0.256658,1.0,0.490814,0.166799,1.0,0.498482,0.161271,1.0,0.498482,0.161271,1.0,0.483116,0.161266,1.0,0.483116,0.161266,1.0,0.478503,0.263423,1.0,0.460133,0.270187,1.0,0.458607,0.379313,1.0,0.412620,0.338398,1.0,0.410960,0.330102,1.0,0.407131,0.316086,1.0,0.401950,0.306476,1.0,0.409608,0.300069,1.0,0.399922,0.297666,1.0,0.395192,0.302471,1.0,0.409383,0.301670,1.0,0.398571,0.305675,1.0,0.396994,0.313283,1.0,0.408707,0.308078,1.0,0.399472,0.310481,1.0,0.398346,0.316887,1.0,0.406905,0.315285,1.0,0.400373,0.316487,1.0,0.399922,0.320492,1.0,0.514556,0.253918,1.0,0.532240,0.251178,1.0,0.545958,0.373773,1.0,0.570573,0.291918,1.0,0.567344,0.269492,1.0,0.567344,0.249315,1.0,0.569922,0.240603,1.0,0.573792,0.234642,1.0,0.575083,0.230973,1.0,0.573536,0.236934,1.0,0.579208,0.237393,1.0,0.579469,0.232807,1.0,0.577406,0.244730,1.0,0.582047,0.255276,1.0,0.585917,0.240603,1.0,0.581531,0.251608,1.0,0.587719,0.259403,1.0,0.588240,0.253442,1.0,0.585656,0.255276,1.0,0.477033,0.469269,1.0,0.477033,0.469269,1.0,0.499977,0.654491,1.0,0.532130,0.837153,1.0,0.532130,0.837153,1.0,0.523026,0.469203,1.0,0.523026,0.469203,1.0,0.512281,0.662644,1.0,0.492313,0.793526,1.0,0.492313,0.793526,1.0
|
||||
0.500022,0.467829,1.0,0.497698,0.309486,1.0,0.498473,0.362267,1.0,0.496924,0.256705,1.0,0.490842,0.170800,1.0,0.500011,0.164082,1.0,0.500011,0.164082,1.0,0.483161,0.164100,1.0,0.483161,0.164100,1.0,0.478563,0.263448,1.0,0.460202,0.270191,1.0,0.458647,0.379292,1.0,0.412628,0.349321,1.0,0.410278,0.349441,1.0,0.408702,0.326219,1.0,0.401270,0.319813,1.0,0.410728,0.315009,1.0,0.398793,0.315409,1.0,0.394964,0.317011,1.0,0.409602,0.315409,1.0,0.397892,0.321415,1.0,0.396766,0.327820,1.0,0.408702,0.321415,1.0,0.398117,0.323817,1.0,0.396541,0.329021,1.0,0.407125,0.325018,1.0,0.400594,0.325419,1.0,0.392937,0.321815,1.0,0.515306,0.253939,1.0,0.533688,0.251174,1.0,0.545932,0.368363,1.0,0.570599,0.291976,1.0,0.567672,0.271142,1.0,0.567427,0.251902,1.0,0.570380,0.244031,1.0,0.574068,0.237035,1.0,0.575052,0.234849,1.0,0.574313,0.241408,1.0,0.579234,0.238347,1.0,0.579724,0.236598,1.0,0.577755,0.249279,1.0,0.583661,0.244031,1.0,0.585625,0.243594,1.0,0.581693,0.254088,1.0,0.587594,0.261959,1.0,0.587594,0.252340,1.0,0.585380,0.257586,1.0,0.477023,0.469183,1.0,0.477023,0.469183,1.0,0.498442,0.662610,1.0,0.527594,0.837000,1.0,0.527594,0.837000,1.0,0.523021,0.466474,1.0,0.523021,0.466474,1.0,0.521437,0.662753,1.0,0.500017,0.782636,1.0,0.500017,0.782636,1.0
|
||||
0.500024,0.455558,1.0,0.497722,0.300236,1.0,0.498489,0.352010,1.0,0.496954,0.248462,1.0,0.491555,0.159973,1.0,0.501527,0.161313,1.0,0.501527,0.161313,1.0,0.483194,0.161292,1.0,0.483194,0.161292,1.0,0.479303,0.251169,1.0,0.461652,0.253877,1.0,0.460121,0.363005,1.0,0.411056,0.352005,1.0,0.405001,0.353981,1.0,0.401171,0.331156,1.0,0.401847,0.330355,1.0,0.402973,0.329153,1.0,0.399820,0.314737,1.0,0.389683,0.323947,1.0,0.402523,0.327552,1.0,0.395765,0.319943,1.0,0.390359,0.321144,1.0,0.399369,0.325549,1.0,0.390584,0.323547,1.0,0.390359,0.331556,1.0,0.399820,0.327952,1.0,0.388332,0.321544,1.0,0.386980,0.327151,1.0,0.515329,0.245707,1.0,0.533703,0.242953,1.0,0.547516,0.360203,1.0,0.576656,0.289274,1.0,0.569469,0.265868,1.0,0.569964,0.246531,1.0,0.573667,0.235984,1.0,0.579604,0.232030,1.0,0.581828,0.228074,1.0,0.579354,0.235984,1.0,0.584052,0.234227,1.0,0.587266,0.233347,1.0,0.583307,0.243894,1.0,0.586276,0.253123,1.0,0.590724,0.239060,1.0,0.587016,0.249607,1.0,0.591469,0.257079,1.0,0.592703,0.247850,1.0,0.590724,0.254442,1.0,0.477023,0.458294,1.0,0.477023,0.458294,1.0,0.493831,0.659919,1.0,0.509183,0.815366,1.0,0.509183,0.815366,1.0,0.523026,0.452821,1.0,0.523026,0.452821,1.0,0.530672,0.660017,1.0,0.523021,0.774446,1.0,0.523021,0.774446,1.0
|
||||
0.499226,0.446101,1.0,0.497526,0.297752,1.0,0.498093,0.347201,1.0,0.496959,0.248302,1.0,0.493090,0.161229,1.0,0.504581,0.161212,1.0,0.504581,0.161212,1.0,0.484718,0.161197,1.0,0.484718,0.161197,1.0,0.478579,0.249741,1.0,0.460198,0.251180,1.0,0.455562,0.360078,1.0,0.404931,0.338435,1.0,0.401293,0.345316,1.0,0.396560,0.339306,1.0,0.389123,0.311262,1.0,0.398363,0.321679,1.0,0.394307,0.306454,1.0,0.383715,0.314067,1.0,0.397687,0.322480,1.0,0.392504,0.307256,1.0,0.383941,0.314868,1.0,0.397462,0.324082,1.0,0.392729,0.307256,1.0,0.383715,0.318473,1.0,0.394983,0.319675,1.0,0.394307,0.310060,1.0,0.382137,0.323281,1.0,0.515339,0.241592,1.0,0.533719,0.234881,1.0,0.556719,0.357407,1.0,0.584333,0.278403,1.0,0.581453,0.264178,1.0,0.576656,0.246171,1.0,0.577193,0.231956,1.0,0.585984,0.224375,1.0,0.585984,0.224375,1.0,0.583854,0.234325,1.0,0.590516,0.227692,1.0,0.590787,0.230534,1.0,0.587583,0.242381,1.0,0.594781,0.233378,1.0,0.594781,0.235273,1.0,0.590516,0.247119,1.0,0.597448,0.241433,1.0,0.597714,0.242855,1.0,0.595583,0.249962,1.0,0.475458,0.447464,1.0,0.475458,0.447464,1.0,0.486184,0.641004,1.0,0.483208,0.798931,1.0,0.483208,0.798931,1.0,0.522995,0.444738,1.0,0.522995,0.444738,1.0,0.535234,0.651783,1.0,0.550563,0.766266,1.0,0.550563,0.766266,1.0
|
||||
0.497721,0.447390,1.0,0.497193,0.298227,1.0,0.497369,0.347948,1.0,0.497017,0.248506,1.0,0.496170,0.164032,1.0,0.507585,0.164001,1.0,0.507585,0.164001,1.0,0.487732,0.164009,1.0,0.487732,0.164009,1.0,0.479333,0.249900,1.0,0.461649,0.251293,1.0,0.446393,0.354761,1.0,0.398860,0.324795,1.0,0.398404,0.324324,1.0,0.391782,0.312553,1.0,0.378760,0.307452,1.0,0.393107,0.307844,1.0,0.390458,0.290971,1.0,0.384057,0.294110,1.0,0.390017,0.312553,1.0,0.388913,0.297642,1.0,0.379643,0.309021,1.0,0.389354,0.316869,1.0,0.384719,0.317654,1.0,0.378760,0.309806,1.0,0.388692,0.323147,1.0,0.387147,0.322755,1.0,0.376994,0.325894,1.0,0.516131,0.247095,1.0,0.535245,0.245683,1.0,0.565911,0.357373,1.0,0.593500,0.275679,1.0,0.587729,0.263766,1.0,0.582089,0.246895,1.0,0.581318,0.234585,1.0,0.589781,0.225011,1.0,0.590807,0.223643,1.0,0.589266,0.231850,1.0,0.595167,0.225923,1.0,0.596193,0.226834,1.0,0.593885,0.238689,1.0,0.599526,0.230938,1.0,0.600297,0.230938,1.0,0.597474,0.243705,1.0,0.603630,0.238689,1.0,0.603885,0.239144,1.0,0.602089,0.246440,1.0,0.473932,0.447447,1.0,0.473932,0.447447,1.0,0.483190,0.643707,1.0,0.458552,0.801688,1.0,0.458552,0.801688,1.0,0.521510,0.447333,1.0,0.521510,0.447333,1.0,0.542937,0.646442,1.0,0.581198,0.771682,1.0,0.581198,0.771682,1.0
|
||||
0.497707,0.450169,1.0,0.497192,0.301031,1.0,0.497364,0.350744,1.0,0.497021,0.251319,1.0,0.496195,0.168065,1.0,0.507629,0.172121,1.0,0.507629,0.172121,1.0,0.489264,0.169429,1.0,0.489264,0.169429,1.0,0.479335,0.255357,1.0,0.461650,0.259396,1.0,0.437168,0.346556,1.0,0.392702,0.311142,1.0,0.384661,0.289448,1.0,0.385265,0.300527,1.0,0.377223,0.288733,1.0,0.389486,0.297669,1.0,0.391496,0.304101,1.0,0.376017,0.289091,1.0,0.388079,0.301956,1.0,0.386672,0.297669,1.0,0.383656,0.303744,1.0,0.383455,0.301242,1.0,0.375012,0.294809,1.0,0.373404,0.286231,1.0,0.380440,0.304101,1.0,0.374007,0.297311,1.0,0.374409,0.288733,1.0,0.516125,0.249893,1.0,0.535229,0.248468,1.0,0.570490,0.349341,1.0,0.599620,0.272878,1.0,0.594281,0.255923,1.0,0.586932,0.242853,1.0,0.585458,0.231525,1.0,0.594526,0.220633,1.0,0.595510,0.217583,1.0,0.595016,0.224990,1.0,0.600411,0.219762,1.0,0.601146,0.220633,1.0,0.600167,0.231961,1.0,0.604823,0.224555,1.0,0.605557,0.224555,1.0,0.602859,0.235881,1.0,0.608740,0.231090,1.0,0.608495,0.231525,1.0,0.606781,0.238496,1.0,0.473956,0.450186,1.0,0.473956,0.450186,1.0,0.480071,0.654520,1.0,0.435604,0.820848,1.0,0.435604,0.820848,1.0,0.521458,0.450152,1.0,0.521458,0.450152,1.0,0.545958,0.646360,1.0,0.598104,0.790831,1.0,0.598104,0.790831,1.0
|
||||
0.497707,0.450169,1.0,0.497192,0.301031,1.0,0.497364,0.350744,1.0,0.497021,0.251319,1.0,0.496195,0.168065,1.0,0.507629,0.172121,1.0,0.507629,0.172121,1.0,0.489264,0.169429,1.0,0.489264,0.169429,1.0,0.479335,0.255357,1.0,0.461650,0.259396,1.0,0.437168,0.346556,1.0,0.392702,0.311142,1.0,0.384661,0.289448,1.0,0.385265,0.300527,1.0,0.377223,0.288733,1.0,0.389486,0.297669,1.0,0.391496,0.304101,1.0,0.376017,0.289091,1.0,0.388079,0.301956,1.0,0.386672,0.297669,1.0,0.383656,0.303744,1.0,0.383455,0.301242,1.0,0.375012,0.294809,1.0,0.373404,0.286231,1.0,0.380440,0.304101,1.0,0.374007,0.297311,1.0,0.374409,0.288733,1.0,0.516125,0.249893,1.0,0.535229,0.248468,1.0,0.570490,0.349341,1.0,0.599620,0.272878,1.0,0.594281,0.255923,1.0,0.586932,0.242853,1.0,0.585458,0.231525,1.0,0.594526,0.220633,1.0,0.595510,0.217583,1.0,0.595016,0.224990,1.0,0.600411,0.219762,1.0,0.601146,0.220633,1.0,0.600167,0.231961,1.0,0.604823,0.224555,1.0,0.605557,0.224555,1.0,0.602859,0.235881,1.0,0.608740,0.231090,1.0,0.608495,0.231525,1.0,0.606781,0.238496,1.0,0.473956,0.450186,1.0,0.473956,0.450186,1.0,0.480071,0.654520,1.0,0.435604,0.820848,1.0,0.435604,0.820848,1.0,0.521458,0.450152,1.0,0.521458,0.450152,1.0,0.545958,0.646360,1.0,0.598104,0.790831,1.0,0.598104,0.790831,1.0
|
||||
0.499227,0.458283,1.0,0.497533,0.309117,1.0,0.498098,0.358839,1.0,0.496969,0.259394,1.0,0.496160,0.180317,1.0,0.507621,0.180255,1.0,0.507621,0.180255,1.0,0.489261,0.180231,1.0,0.489261,0.180231,1.0,0.478543,0.264765,1.0,0.460118,0.270136,1.0,0.434023,0.341121,1.0,0.386538,0.302953,1.0,0.379365,0.283560,1.0,0.378091,0.288469,1.0,0.367894,0.282049,1.0,0.383401,0.288092,1.0,0.366620,0.276385,1.0,0.369594,0.271854,1.0,0.370019,0.283182,1.0,0.366620,0.276762,1.0,0.370019,0.271854,1.0,0.369806,0.283182,1.0,0.367045,0.280161,1.0,0.370019,0.273742,1.0,0.364708,0.294889,1.0,0.360672,0.288469,1.0,0.369594,0.282049,1.0,0.516104,0.255311,1.0,0.535240,0.251227,1.0,0.576646,0.343867,1.0,0.604203,0.267459,1.0,0.596693,0.249625,1.0,0.589125,0.237470,1.0,0.586927,0.226184,1.0,0.595719,0.214898,1.0,0.596203,0.211860,1.0,0.596693,0.216634,1.0,0.600844,0.213162,1.0,0.602307,0.212728,1.0,0.602552,0.223580,1.0,0.605484,0.217937,1.0,0.606703,0.215767,1.0,0.604995,0.227920,1.0,0.610120,0.223145,1.0,0.610365,0.222712,1.0,0.608901,0.230091,1.0,0.475464,0.461009,1.0,0.475464,0.461009,1.0,0.475478,0.659958,1.0,0.435647,0.828955,1.0,0.435647,0.828955,1.0,0.522990,0.455557,1.0,0.522990,0.455557,1.0,0.555130,0.643587,1.0,0.598120,0.785291,1.0,0.598120,0.785291,1.0
|
||||
0.502301,0.455593,1.0,0.498242,0.304343,1.0,0.499595,0.354760,1.0,0.496889,0.253927,1.0,0.495394,0.166798,1.0,0.507663,0.174836,1.0,0.507663,0.174836,1.0,0.490795,0.169391,1.0,0.490795,0.169391,1.0,0.477737,0.259381,1.0,0.458586,0.264835,1.0,0.434041,0.338459,1.0,0.385023,0.316525,1.0,0.369466,0.280717,1.0,0.372968,0.280717,1.0,0.365139,0.286577,1.0,0.363079,0.298665,1.0,0.376265,0.303426,1.0,0.373586,0.308188,1.0,0.367818,0.326135,1.0,0.366581,0.316612,1.0,0.374822,0.314781,1.0,0.367611,0.331996,1.0,0.376059,0.325769,1.0,0.375029,0.322839,1.0,0.371114,0.342252,1.0,0.375647,0.340054,1.0,0.376471,0.337124,1.0,0.515314,0.251211,1.0,0.533740,0.248495,1.0,0.572057,0.338481,1.0,0.598130,0.264766,1.0,0.593224,0.248306,1.0,0.585542,0.235472,1.0,0.583208,0.223879,1.0,0.592760,0.211872,1.0,0.592990,0.206490,1.0,0.593922,0.213529,1.0,0.598349,0.209388,1.0,0.598812,0.208560,1.0,0.599047,0.219325,1.0,0.602073,0.213943,1.0,0.603938,0.211872,1.0,0.602307,0.223051,1.0,0.607198,0.219739,1.0,0.607661,0.218911,1.0,0.606500,0.225535,1.0,0.480055,0.461019,1.0,0.480055,0.461019,1.0,0.483118,0.654565,1.0,0.447852,0.818156,1.0,0.447852,0.818156,1.0,0.524547,0.450166,1.0,0.524547,0.450166,1.0,0.550615,0.640751,1.0,0.593427,0.785300,1.0,0.593427,0.785300,1.0
|
||||
0.503817,0.447383,1.0,0.497556,0.298188,1.0,0.499643,0.347920,1.0,0.495469,0.248456,1.0,0.495384,0.165333,1.0,0.507670,0.166667,1.0,0.507670,0.166667,1.0,0.490816,0.164104,1.0,0.490816,0.164104,1.0,0.477020,0.249878,1.0,0.458570,0.251300,1.0,0.435658,0.338547,1.0,0.386554,0.343822,1.0,0.361526,0.329165,1.0,0.371552,0.327739,1.0,0.370951,0.330234,1.0,0.370951,0.329521,1.0,0.369547,0.331660,1.0,0.371953,0.334869,1.0,0.365536,0.342711,1.0,0.361526,0.345919,1.0,0.375964,0.346276,1.0,0.363331,0.344494,1.0,0.361125,0.345919,1.0,0.369146,0.351980,1.0,0.361125,0.345919,1.0,0.358919,0.345206,1.0,0.361326,0.357683,1.0,0.514581,0.244387,1.0,0.533693,0.240317,1.0,0.567443,0.341219,1.0,0.582734,0.270188,1.0,0.590688,0.252346,1.0,0.592870,0.230382,1.0,0.583177,0.221769,1.0,0.588995,0.254500,1.0,0.577365,0.214448,1.0,0.581000,0.224784,1.0,0.587057,0.254500,1.0,0.578578,0.217463,1.0,0.578578,0.225645,1.0,0.587057,0.254500,1.0,0.578333,0.219185,1.0,0.579302,0.227799,1.0,0.577125,0.217463,1.0,0.581969,0.223923,1.0,0.581484,0.227368,1.0,0.481566,0.450130,1.0,0.481566,0.450130,1.0,0.495379,0.646295,1.0,0.470783,0.815327,1.0,0.470783,0.815327,1.0,0.526068,0.444637,1.0,0.526068,0.444637,1.0,0.545964,0.638203,1.0,0.572104,0.774562,1.0,0.572104,0.774562,1.0
|
||||
0.504625,0.451479,1.0,0.498833,0.299230,1.0,0.500764,0.349980,1.0,0.496903,0.248481,1.0,0.495390,0.165327,1.0,0.507632,0.166761,1.0,0.507632,0.166761,1.0,0.489287,0.166677,1.0,0.489287,0.166677,1.0,0.477776,0.251200,1.0,0.458649,0.253920,1.0,0.446345,0.354764,1.0,0.397335,0.392931,1.0,0.380943,0.394283,1.0,0.379417,0.388080,1.0,0.380071,0.388855,1.0,0.380071,0.391181,1.0,0.378544,0.392344,1.0,0.380507,0.394670,1.0,0.374837,0.413281,1.0,0.378544,0.414057,1.0,0.390322,0.410180,1.0,0.374619,0.413281,1.0,0.379635,0.415995,1.0,0.370257,0.417934,1.0,0.379417,0.432281,1.0,0.380507,0.434606,1.0,0.382252,0.434994,1.0,0.515287,0.244388,1.0,0.533672,0.240296,1.0,0.555156,0.357423,1.0,0.558219,0.272989,1.0,0.555922,0.232019,1.0,0.551599,0.223884,1.0,0.547281,0.230211,1.0,0.567359,0.237442,1.0,0.550328,0.235634,1.0,0.542193,0.241509,1.0,0.566599,0.251000,1.0,0.558719,0.265010,1.0,0.548042,0.260039,1.0,0.564057,0.264106,1.0,0.557958,0.268626,1.0,0.549057,0.263203,1.0,0.561516,0.269078,1.0,0.552620,0.276309,1.0,0.548552,0.274953,1.0,0.481631,0.455581,1.0,0.481631,0.455581,1.0,0.500024,0.654563,1.0,0.499986,0.809857,1.0,0.499986,0.809857,1.0,0.527620,0.447377,1.0,0.527620,0.447377,1.0,0.539865,0.643652,1.0,0.547552,0.774476,1.0,0.547552,0.774476,1.0
|
||||
0.506921,0.462359,1.0,0.499404,0.308059,1.0,0.501909,0.359493,1.0,0.496898,0.256626,1.0,0.494662,0.170811,1.0,0.507624,0.177594,1.0,0.507624,0.177594,1.0,0.487779,0.172176,1.0,0.487779,0.172176,1.0,0.477786,0.262078,1.0,0.458674,0.267530,1.0,0.455541,0.373856,1.0,0.421740,0.441929,1.0,0.410145,0.459706,1.0,0.405971,0.478063,1.0,0.397842,0.476892,1.0,0.399819,0.475329,1.0,0.397183,0.476501,1.0,0.397183,0.477281,1.0,0.399380,0.473767,1.0,0.397403,0.475329,1.0,0.397403,0.475719,1.0,0.400478,0.474548,1.0,0.397183,0.476110,1.0,0.397622,0.475719,1.0,0.403774,0.477672,1.0,0.395865,0.479625,1.0,0.397622,0.475719,1.0,0.515303,0.253924,1.0,0.533708,0.251221,1.0,0.535318,0.368387,1.0,0.523016,0.292044,1.0,0.521375,0.281469,1.0,0.529599,0.254381,1.0,0.522589,0.282758,1.0,0.530328,0.250942,1.0,0.519927,0.231594,1.0,0.517508,0.254381,1.0,0.532500,0.251802,1.0,0.515573,0.247072,1.0,0.515090,0.254811,1.0,0.531536,0.251802,1.0,0.512429,0.248362,1.0,0.514364,0.254811,1.0,0.530807,0.254811,1.0,0.525729,0.241053,1.0,0.518476,0.253521,1.0,0.483206,0.466408,1.0,0.483206,0.466408,1.0,0.509143,0.659961,1.0,0.536766,0.815277,1.0,0.536766,0.815277,1.0,0.530635,0.458310,1.0,0.530635,0.458310,1.0,0.532198,0.649043,1.0,0.521453,0.777144,1.0,0.521453,0.777144,1.0
|
||||
0.506921,0.462359,1.0,0.499404,0.308059,1.0,0.501909,0.359493,1.0,0.496898,0.256626,1.0,0.494662,0.170811,1.0,0.507624,0.177594,1.0,0.507624,0.177594,1.0,0.487779,0.172176,1.0,0.487779,0.172176,1.0,0.477786,0.262078,1.0,0.458674,0.267530,1.0,0.455541,0.373856,1.0,0.421740,0.441929,1.0,0.410145,0.459706,1.0,0.405971,0.478063,1.0,0.397842,0.476892,1.0,0.399819,0.475329,1.0,0.397183,0.476501,1.0,0.397183,0.477281,1.0,0.399380,0.473767,1.0,0.397403,0.475329,1.0,0.397403,0.475719,1.0,0.400478,0.474548,1.0,0.397183,0.476110,1.0,0.397622,0.475719,1.0,0.403774,0.477672,1.0,0.395865,0.479625,1.0,0.397622,0.475719,1.0,0.515303,0.253924,1.0,0.533708,0.251221,1.0,0.535318,0.368387,1.0,0.523016,0.292044,1.0,0.521375,0.281469,1.0,0.529599,0.254381,1.0,0.522589,0.282758,1.0,0.530328,0.250942,1.0,0.519927,0.231594,1.0,0.517508,0.254381,1.0,0.532500,0.251802,1.0,0.515573,0.247072,1.0,0.515090,0.254811,1.0,0.531536,0.251802,1.0,0.512429,0.248362,1.0,0.514364,0.254811,1.0,0.530807,0.254811,1.0,0.525729,0.241053,1.0,0.518476,0.253521,1.0,0.483206,0.466408,1.0,0.483206,0.466408,1.0,0.509143,0.659961,1.0,0.536766,0.815277,1.0,0.536766,0.815277,1.0,0.530635,0.458310,1.0,0.530635,0.458310,1.0,0.532198,0.649043,1.0,0.521453,0.777144,1.0,0.521453,0.777144,1.0
|
||||
0.507660,0.478719,1.0,0.499613,0.324450,1.0,0.502295,0.375873,1.0,0.496930,0.273027,1.0,0.493890,0.184516,1.0,0.506148,0.185736,1.0,0.506148,0.185736,1.0,0.486237,0.185669,1.0,0.486237,0.185669,1.0,0.479293,0.275744,1.0,0.461655,0.278461,1.0,0.463191,0.398304,1.0,0.444820,0.488239,1.0,0.439747,0.502087,1.0,0.435294,0.534629,1.0,0.443210,0.519677,1.0,0.433810,0.533309,1.0,0.427131,0.515719,1.0,0.427131,0.519237,1.0,0.431336,0.525833,1.0,0.427379,0.516599,1.0,0.429605,0.522756,1.0,0.434552,0.533749,1.0,0.426637,0.522316,1.0,0.429605,0.522316,1.0,0.433316,0.532869,1.0,0.426637,0.521876,1.0,0.424163,0.533309,1.0,0.514588,0.271629,1.0,0.532245,0.270231,1.0,0.524531,0.381889,1.0,0.495360,0.305666,1.0,0.475752,0.256989,1.0,0.475055,0.254513,1.0,0.486894,0.290417,1.0,0.490376,0.255751,1.0,0.490608,0.264005,1.0,0.492930,0.266894,1.0,0.491072,0.265243,1.0,0.488519,0.276798,1.0,0.485269,0.282988,1.0,0.486662,0.271433,1.0,0.485966,0.278861,1.0,0.483412,0.289592,1.0,0.483412,0.294956,1.0,0.486894,0.299083,1.0,0.486430,0.298670,1.0,0.484680,0.482792,1.0,0.484680,0.482792,1.0,0.519915,0.651793,1.0,0.558318,0.826231,1.0,0.558318,0.826231,1.0,0.530641,0.474645,1.0,0.530641,0.474645,1.0,0.521458,0.657277,1.0,0.507611,0.782619,1.0,0.507611,0.782619,1.0
|
||||
0.506112,0.491004,1.0,0.499282,0.341693,1.0,0.501559,0.391463,1.0,0.497005,0.291922,1.0,0.493902,0.203482,1.0,0.506097,0.202077,1.0,0.506097,0.202077,1.0,0.486251,0.202022,1.0,0.486251,0.202022,1.0,0.480878,0.291978,1.0,0.464751,0.292033,1.0,0.475477,0.400996,1.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.514609,0.289265,1.0,0.532214,0.286607,1.0,0.519951,0.384694,1.0,0.470854,0.316688,1.0,0.461755,0.296051,1.0,0.464039,0.272146,1.0,0.455920,0.274402,1.0,0.459725,0.272597,1.0,0.453637,0.266734,1.0,0.446533,0.266734,1.0,0.458204,0.271695,1.0,0.452876,0.268539,1.0,0.449578,0.268087,1.0,0.457949,0.276656,1.0,0.452876,0.270343,1.0,0.448056,0.270343,1.0,0.455920,0.284775,1.0,0.449070,0.280716,1.0,0.447802,0.279814,1.0,0.484616,0.493726,1.0,0.484616,0.493726,1.0,0.521458,0.662684,1.0,0.558339,0.839856,1.0,0.558339,0.839856,1.0,0.527609,0.488281,1.0,0.527609,0.488281,1.0,0.521437,0.662604,1.0,0.503078,0.793432,1.0,0.503078,0.793432,1.0
|
||||
0.504614,0.488277,1.0,0.498810,0.341071,1.0,0.500745,0.390140,1.0,0.496875,0.292003,1.0,0.491618,0.202119,1.0,0.504596,0.193987,1.0,0.504596,0.193987,1.0,0.484720,0.191239,1.0,0.484720,0.191239,1.0,0.478544,0.294747,1.0,0.460212,0.297492,1.0,0.470907,0.398274,1.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.514498,0.285213,1.0,0.532120,0.278423,1.0,0.519859,0.360339,1.0,0.460139,0.360177,1.0,0.451385,0.374837,1.0,0.431424,0.328100,1.0,0.437754,0.374405,1.0,0.446273,0.349305,1.0,0.441648,0.372241,1.0,0.443109,0.372673,1.0,0.439458,0.354498,1.0,0.441892,0.373539,1.0,0.439944,0.377434,1.0,0.437997,0.354931,1.0,0.439458,0.377867,1.0,0.437997,0.378732,1.0,0.444570,0.386955,1.0,0.429721,0.377001,1.0,0.437510,0.382627,1.0,0.483165,0.491038,1.0,0.483165,0.491038,1.0,0.519915,0.659978,1.0,0.555172,0.837135,1.0,0.555172,0.837135,1.0,0.526062,0.485516,1.0,0.526062,0.485516,1.0,0.519961,0.662562,1.0,0.507585,0.790758,1.0,0.507585,0.790758,1.0
|
||||
0.500003,0.474653,1.0,0.496496,0.323378,1.0,0.497665,0.373803,1.0,0.495327,0.272953,1.0,0.490036,0.187130,1.0,0.498511,0.180338,1.0,0.498511,0.180338,1.0,0.483134,0.180216,1.0,0.483134,0.180216,1.0,0.477721,0.279752,1.0,0.460115,0.286552,1.0,0.472438,0.384762,1.0,0.461654,0.466543,1.0,0.453943,0.500912,1.0,0.449790,0.506819,1.0,0.450413,0.509771,1.0,0.453943,0.511986,1.0,0.459549,0.512725,1.0,0.457265,0.521215,1.0,0.454151,0.510510,1.0,0.459134,0.511618,1.0,0.460380,0.521215,1.0,0.454981,0.510141,1.0,0.459342,0.514570,1.0,0.459965,0.520477,1.0,0.453943,0.493899,1.0,0.450413,0.509771,1.0,0.452282,0.515678,1.0,0.510695,0.268881,1.0,0.526062,0.264808,1.0,0.518339,0.346581,1.0,0.460143,0.403725,1.0,0.453946,0.442334,1.0,0.431454,0.434626,1.0,0.429286,0.434144,1.0,0.431183,0.432217,1.0,0.438228,0.408130,1.0,0.439041,0.408130,1.0,0.442293,0.424027,1.0,0.426305,0.449560,1.0,0.427389,0.431254,1.0,0.443919,0.424991,1.0,0.426576,0.450042,1.0,0.427118,0.431254,1.0,0.444190,0.442334,1.0,0.440667,0.454378,1.0,0.426847,0.431254,1.0,0.478563,0.480081,1.0,0.478563,0.480081,1.0,0.515310,0.662663,1.0,0.533771,0.837098,1.0,0.533771,0.837098,1.0,0.521443,0.469225,1.0,0.521443,0.469225,1.0,0.524552,0.662684,1.0,0.510738,0.779864,1.0,0.510738,0.779864,1.0
|
||||
0.494606,0.469225,1.0,0.490600,0.311846,1.0,0.491935,0.364306,1.0,0.489265,0.259386,1.0,0.485421,0.172227,1.0,0.495439,0.164001,1.0,0.495439,0.164001,1.0,0.480033,0.163919,1.0,0.480033,0.163919,1.0,0.473941,0.263481,1.0,0.458618,0.267577,1.0,0.460219,0.362997,1.0,0.446334,0.428390,1.0,0.451799,0.421253,1.0,0.450617,0.435961,1.0,0.445693,0.442965,1.0,0.438207,0.441565,1.0,0.444314,0.448569,1.0,0.450617,0.454172,1.0,0.439389,0.456623,1.0,0.438995,0.460826,1.0,0.453572,0.465028,1.0,0.452390,0.451370,1.0,0.436237,0.467480,1.0,0.445693,0.466779,1.0,0.433282,0.467480,1.0,0.437616,0.470281,1.0,0.448647,0.455222,1.0,0.505377,0.255328,1.0,0.521490,0.251269,1.0,0.519915,0.357365,1.0,0.483176,0.428316,1.0,0.483655,0.446227,1.0,0.473484,0.483963,1.0,0.461765,0.431290,1.0,0.473927,0.481605,1.0,0.472157,0.480819,1.0,0.461102,0.434042,1.0,0.477685,0.465095,1.0,0.465524,0.463130,1.0,0.456459,0.450157,1.0,0.479896,0.440331,1.0,0.472157,0.437972,1.0,0.465745,0.418711,1.0,0.478570,0.435614,1.0,0.468398,0.437186,1.0,0.461544,0.436006,1.0,0.472369,0.471947,1.0,0.472369,0.471947,1.0,0.507693,0.651828,1.0,0.503070,0.812596,1.0,0.503070,0.812596,1.0,0.516842,0.466503,1.0,0.516842,0.466503,1.0,0.532240,0.651766,1.0,0.532177,0.774491,1.0,0.532177,0.774491,1.0
|
||||
0.494606,0.469225,1.0,0.490600,0.311846,1.0,0.491935,0.364306,1.0,0.489265,0.259386,1.0,0.485421,0.172227,1.0,0.495439,0.164001,1.0,0.495439,0.164001,1.0,0.480033,0.163919,1.0,0.480033,0.163919,1.0,0.473941,0.263481,1.0,0.458618,0.267577,1.0,0.460219,0.362997,1.0,0.446334,0.428390,1.0,0.451799,0.421253,1.0,0.450617,0.435961,1.0,0.445693,0.442965,1.0,0.438207,0.441565,1.0,0.444314,0.448569,1.0,0.450617,0.454172,1.0,0.439389,0.456623,1.0,0.438995,0.460826,1.0,0.453572,0.465028,1.0,0.452390,0.451370,1.0,0.436237,0.467480,1.0,0.445693,0.466779,1.0,0.433282,0.467480,1.0,0.437616,0.470281,1.0,0.448647,0.455222,1.0,0.505377,0.255328,1.0,0.521490,0.251269,1.0,0.519915,0.357365,1.0,0.483176,0.428316,1.0,0.483655,0.446227,1.0,0.473484,0.483963,1.0,0.461765,0.431290,1.0,0.473927,0.481605,1.0,0.472157,0.480819,1.0,0.461102,0.434042,1.0,0.477685,0.465095,1.0,0.465524,0.463130,1.0,0.456459,0.450157,1.0,0.479896,0.440331,1.0,0.472157,0.437972,1.0,0.465745,0.418711,1.0,0.478570,0.435614,1.0,0.468398,0.437186,1.0,0.461544,0.436006,1.0,0.472369,0.471947,1.0,0.472369,0.471947,1.0,0.507693,0.651828,1.0,0.503070,0.812596,1.0,0.503070,0.812596,1.0,0.516842,0.466503,1.0,0.516842,0.466503,1.0,0.532240,0.651766,1.0,0.532177,0.774491,1.0,0.532177,0.774491,1.0
|
||||
0.488511,0.467764,1.0,0.486768,0.309444,1.0,0.487349,0.362217,1.0,0.486187,0.256670,1.0,0.483148,0.170804,1.0,0.493855,0.163857,1.0,0.493855,0.163857,1.0,0.473939,0.161313,1.0,0.473939,0.161313,1.0,0.470097,0.258033,1.0,0.454006,0.259396,1.0,0.449405,0.354736,1.0,0.418745,0.395597,1.0,0.403887,0.402061,1.0,0.406455,0.395392,1.0,0.410404,0.404869,1.0,0.414353,0.407678,1.0,0.415340,0.410486,1.0,0.413958,0.406624,1.0,0.410996,0.411188,1.0,0.410798,0.410837,1.0,0.405665,0.421368,1.0,0.410996,0.414347,1.0,0.409219,0.422069,1.0,0.408824,0.424878,1.0,0.415143,0.410486,1.0,0.415340,0.412943,1.0,0.415143,0.411890,1.0,0.503083,0.255296,1.0,0.519979,0.253921,1.0,0.532167,0.360121,1.0,0.530599,0.447507,1.0,0.534557,0.443343,1.0,0.522255,0.475152,1.0,0.529411,0.433004,1.0,0.520911,0.474356,1.0,0.521583,0.452090,1.0,0.521359,0.452090,1.0,0.528964,0.462825,1.0,0.527849,0.457657,1.0,0.527401,0.456066,1.0,0.528516,0.469585,1.0,0.526057,0.467994,1.0,0.526057,0.470381,1.0,0.526505,0.471573,1.0,0.520690,0.452090,1.0,0.523375,0.453681,1.0,0.466291,0.469131,1.0,0.466291,0.469131,1.0,0.497004,0.657194,1.0,0.470898,0.796328,1.0,0.470898,0.796328,1.0,0.510732,0.466397,1.0,0.510732,0.466397,1.0,0.542917,0.646370,1.0,0.556703,0.788024,1.0,0.556703,0.788024,1.0
|
||||
0.483127,0.463752,1.0,0.483155,0.314573,1.0,0.483145,0.364300,1.0,0.483164,0.264847,1.0,0.480058,0.176256,1.0,0.489278,0.164020,1.0,0.489278,0.164020,1.0,0.472387,0.163950,1.0,0.472387,0.163950,1.0,0.466312,0.264794,1.0,0.449459,0.264740,1.0,0.434104,0.335719,1.0,0.397278,0.354714,1.0,0.376965,0.347592,1.0,0.385596,0.349266,1.0,0.392030,0.358193,1.0,0.380731,0.350939,1.0,0.392971,0.358472,1.0,0.390146,0.359308,1.0,0.388264,0.363494,1.0,0.386537,0.362098,1.0,0.381986,0.367399,1.0,0.388420,0.363494,1.0,0.386380,0.369631,1.0,0.386851,0.371026,1.0,0.381986,0.348149,1.0,0.392501,0.359867,1.0,0.387636,0.372700,1.0,0.500019,0.264838,1.0,0.516874,0.264829,1.0,0.547505,0.352006,1.0,0.570568,0.425641,1.0,0.579026,0.433726,1.0,0.585391,0.431841,1.0,0.585391,0.431086,1.0,0.566510,0.432972,1.0,0.565661,0.436366,1.0,0.570542,0.436366,1.0,0.566938,0.449563,1.0,0.565875,0.451071,1.0,0.584328,0.458991,1.0,0.569057,0.453711,1.0,0.567573,0.454843,1.0,0.570542,0.457859,1.0,0.571177,0.472188,1.0,0.567573,0.469926,1.0,0.567359,0.470680,1.0,0.460105,0.466468,1.0,0.460105,0.466468,1.0,0.480045,0.665394,1.0,0.438724,0.807159,1.0,0.438724,0.807159,1.0,0.506148,0.461036,1.0,0.506148,0.461036,1.0,0.546062,0.640752,1.0,0.582719,0.777155,1.0,0.582719,0.777155,1.0
|
||||
0.481572,0.470518,1.0,0.480435,0.320418,1.0,0.480814,0.370451,1.0,0.480056,0.270384,1.0,0.477769,0.184467,1.0,0.486212,0.177560,1.0,0.486212,0.177560,1.0,0.470854,0.174881,1.0,0.470854,0.174881,1.0,0.463204,0.270343,1.0,0.446353,0.270301,1.0,0.415668,0.319366,1.0,0.371221,0.313867,1.0,0.355828,0.307531,1.0,0.355465,0.282349,1.0,0.355102,0.282026,1.0,0.356373,0.297523,1.0,0.356009,0.272341,1.0,0.355465,0.274278,1.0,0.356009,0.323351,1.0,0.356191,0.324320,1.0,0.355646,0.323674,1.0,0.355828,0.326580,1.0,0.355828,0.326580,1.0,0.360549,0.325934,1.0,0.356009,0.338848,1.0,0.355102,0.269757,1.0,0.355646,0.271694,1.0,0.495410,0.271651,1.0,0.510765,0.272919,1.0,0.562870,0.341161,1.0,0.607292,0.417452,1.0,0.612385,0.443075,1.0,0.627490,0.416220,1.0,0.637563,0.426067,1.0,0.641589,0.430543,1.0,0.642849,0.436808,1.0,0.642094,0.440837,1.0,0.631271,0.451131,1.0,0.641089,0.447998,1.0,0.639073,0.451131,1.0,0.627490,0.455159,1.0,0.637313,0.454712,1.0,0.636557,0.455159,1.0,0.625729,0.459187,1.0,0.636557,0.458740,1.0,0.634036,0.462320,1.0,0.458573,0.471904,1.0,0.458573,0.471904,1.0,0.455554,0.670831,1.0,0.427957,0.826228,1.0,0.427957,0.826228,1.0,0.504570,0.469132,1.0,0.504570,0.469132,1.0,0.549089,0.640880,1.0,0.605729,0.777206,1.0,0.605729,0.777206,1.0
|
||||
0.479299,0.471967,1.0,0.476433,0.322799,1.0,0.477388,0.372522,1.0,0.475478,0.273077,1.0,0.475475,0.184525,1.0,0.484651,0.180288,1.0,0.484651,0.180288,1.0,0.469310,0.177570,1.0,0.469310,0.177570,1.0,0.457843,0.273035,1.0,0.440209,0.272994,1.0,0.401873,0.308389,1.0,0.352819,0.273121,1.0,0.345690,0.276054,1.0,0.337063,0.276437,1.0,0.331240,0.274137,1.0,0.335769,0.256499,1.0,0.327357,0.263018,1.0,0.328652,0.268385,1.0,0.337063,0.256116,1.0,0.329083,0.264551,1.0,0.330377,0.270686,1.0,0.337926,0.256882,1.0,0.330161,0.266084,1.0,0.332318,0.272986,1.0,0.339651,0.259950,1.0,0.334044,0.268769,1.0,0.333828,0.272986,1.0,0.493864,0.274404,1.0,0.512251,0.275732,1.0,0.569042,0.338448,1.0,0.622641,0.403703,1.0,0.625500,0.422412,1.0,0.631063,0.435122,1.0,0.637417,0.444537,1.0,0.644828,0.421470,1.0,0.653302,0.427591,1.0,0.658599,0.431827,1.0,0.647214,0.412056,1.0,0.655953,0.419588,1.0,0.662042,0.424766,1.0,0.646948,0.404524,1.0,0.655422,0.408290,1.0,0.661245,0.410644,1.0,0.645625,0.397463,1.0,0.651979,0.395580,1.0,0.655688,0.394168,1.0,0.457048,0.474682,1.0,0.457048,0.474682,1.0,0.458518,0.662602,1.0,0.434089,0.823490,1.0,0.434089,0.823490,1.0,0.501549,0.469252,1.0,0.501549,0.469252,1.0,0.552135,0.640798,1.0,0.602698,0.779917,1.0,0.602698,0.779917,1.0
|
||||
0.480821,0.465107,1.0,0.475653,0.318913,1.0,0.477376,0.367644,1.0,0.473931,0.270181,1.0,0.473932,0.183099,1.0,0.483176,0.169464,1.0,0.483176,0.169464,1.0,0.466290,0.169393,1.0,0.466290,0.169393,1.0,0.455555,0.270171,1.0,0.437180,0.270160,1.0,0.388142,0.313825,1.0,0.340605,0.270325,1.0,0.334289,0.269918,1.0,0.325136,0.266819,1.0,0.318380,0.262556,1.0,0.329059,0.249384,1.0,0.322085,0.246285,1.0,0.316637,0.245897,1.0,0.331238,0.250934,1.0,0.324482,0.247834,1.0,0.320559,0.253258,1.0,0.334071,0.254421,1.0,0.328187,0.252096,1.0,0.325354,0.257132,1.0,0.335379,0.257907,1.0,0.330148,0.260232,1.0,0.327315,0.262944,1.0,0.492326,0.270235,1.0,0.510722,0.270289,1.0,0.564365,0.332977,1.0,0.621094,0.398318,1.0,0.624380,0.413512,1.0,0.632375,0.426247,1.0,0.638708,0.432615,1.0,0.644495,0.410573,1.0,0.653865,0.421349,1.0,0.659375,0.424778,1.0,0.645047,0.403716,1.0,0.653865,0.410573,1.0,0.659099,0.417920,1.0,0.643396,0.398328,1.0,0.651661,0.402736,1.0,0.656344,0.408124,1.0,0.640911,0.393919,1.0,0.647526,0.393919,1.0,0.651661,0.393919,1.0,0.458594,0.466548,1.0,0.458594,0.466548,1.0,0.461654,0.662681,1.0,0.447826,0.812598,1.0,0.447826,0.812598,1.0,0.503049,0.463666,1.0,0.503049,0.463666,1.0,0.545958,0.640853,1.0,0.576677,0.801691,1.0,0.576677,0.801691,1.0
|
||||
0.480821,0.465107,1.0,0.475653,0.318913,1.0,0.477376,0.367644,1.0,0.473931,0.270181,1.0,0.473932,0.183099,1.0,0.483176,0.169464,1.0,0.483176,0.169464,1.0,0.466290,0.169393,1.0,0.466290,0.169393,1.0,0.455555,0.270171,1.0,0.437180,0.270160,1.0,0.388142,0.313825,1.0,0.340605,0.270325,1.0,0.334289,0.269918,1.0,0.325136,0.266819,1.0,0.318380,0.262556,1.0,0.329059,0.249384,1.0,0.322085,0.246285,1.0,0.316637,0.245897,1.0,0.331238,0.250934,1.0,0.324482,0.247834,1.0,0.320559,0.253258,1.0,0.334071,0.254421,1.0,0.328187,0.252096,1.0,0.325354,0.257132,1.0,0.335379,0.257907,1.0,0.330148,0.260232,1.0,0.327315,0.262944,1.0,0.492326,0.270235,1.0,0.510722,0.270289,1.0,0.564365,0.332977,1.0,0.621094,0.398318,1.0,0.624380,0.413512,1.0,0.632375,0.426247,1.0,0.638708,0.432615,1.0,0.644495,0.410573,1.0,0.653865,0.421349,1.0,0.659375,0.424778,1.0,0.645047,0.403716,1.0,0.653865,0.410573,1.0,0.659099,0.417920,1.0,0.643396,0.398328,1.0,0.651661,0.402736,1.0,0.656344,0.408124,1.0,0.640911,0.393919,1.0,0.647526,0.393919,1.0,0.651661,0.393919,1.0,0.458594,0.466548,1.0,0.458594,0.466548,1.0,0.461654,0.662681,1.0,0.447826,0.812598,1.0,0.447826,0.812598,1.0,0.503049,0.463666,1.0,0.503049,0.463666,1.0,0.545958,0.640853,1.0,0.576677,0.801691,1.0,0.576677,0.801691,1.0
|
||||
0.483847,0.462333,1.0,0.475329,0.316184,1.0,0.478168,0.364900,1.0,0.472490,0.267468,1.0,0.473174,0.181667,1.0,0.483199,0.172142,1.0,0.483199,0.172142,1.0,0.467798,0.169428,1.0,0.467798,0.169428,1.0,0.454056,0.267510,1.0,0.435622,0.267552,1.0,0.384986,0.330201,1.0,0.346647,0.292006,1.0,0.351874,0.295494,1.0,0.350064,0.288252,1.0,0.353232,0.273768,1.0,0.341917,0.277389,1.0,0.335127,0.260894,1.0,0.327432,0.258480,1.0,0.339427,0.277389,1.0,0.331280,0.262503,1.0,0.324264,0.259686,1.0,0.336711,0.280607,1.0,0.329695,0.268538,1.0,0.323585,0.266123,1.0,0.334900,0.285838,1.0,0.327659,0.277389,1.0,0.323132,0.273768,1.0,0.491617,0.266150,1.0,0.510744,0.264832,1.0,0.556708,0.335698,1.0,0.607307,0.384790,1.0,0.610615,0.400154,1.0,0.617661,0.409344,1.0,0.624005,0.416863,1.0,0.627297,0.395559,1.0,0.636224,0.402243,1.0,0.640693,0.408926,1.0,0.628000,0.388875,1.0,0.636224,0.398483,1.0,0.638104,0.408091,1.0,0.626828,0.385951,1.0,0.634583,0.389711,1.0,0.634583,0.402243,1.0,0.624948,0.385533,1.0,0.631760,0.385116,1.0,0.633875,0.386369,1.0,0.460088,0.466384,1.0,0.460088,0.466384,1.0,0.470838,0.662731,1.0,0.470837,0.809856,1.0,0.470837,0.809856,1.0,0.507606,0.458281,1.0,0.507606,0.458281,1.0,0.524552,0.638088,1.0,0.536792,0.812509,1.0,0.536792,0.812509,1.0
|
||||
0.486975,0.467898,1.0,0.474920,0.319624,1.0,0.478938,0.369049,1.0,0.470902,0.270199,1.0,0.475485,0.187129,1.0,0.484715,0.183126,1.0,0.484715,0.183126,1.0,0.470805,0.183024,1.0,0.470805,0.183024,1.0,0.452516,0.271578,1.0,0.434129,0.272957,1.0,0.386591,0.360119,1.0,0.366619,0.319394,1.0,0.356020,0.289475,1.0,0.372555,0.318424,1.0,0.369548,0.318869,1.0,0.363786,0.311298,1.0,0.370551,0.317533,1.0,0.365791,0.317979,1.0,0.362784,0.311744,1.0,0.365290,0.313525,1.0,0.355269,0.304618,1.0,0.356271,0.303727,1.0,0.364287,0.310407,1.0,0.361782,0.314416,1.0,0.353766,0.306844,1.0,0.372555,0.317979,1.0,0.364789,0.323769,1.0,0.489257,0.267526,1.0,0.507611,0.264854,1.0,0.538339,0.338447,1.0,0.582818,0.376433,1.0,0.588646,0.385036,1.0,0.595484,0.391472,1.0,0.602120,0.395763,1.0,0.603526,0.377169,1.0,0.610771,0.384320,1.0,0.614187,0.387181,1.0,0.601516,0.372879,1.0,0.608156,0.380030,1.0,0.610167,0.387181,1.0,0.599708,0.371091,1.0,0.604937,0.378599,1.0,0.606344,0.384678,1.0,0.597094,0.370733,1.0,0.602323,0.377169,1.0,0.602927,0.381818,1.0,0.464738,0.469311,1.0,0.464738,0.469311,1.0,0.473917,0.665330,1.0,0.504567,0.815237,1.0,0.504567,0.815237,1.0,0.509212,0.466485,1.0,0.509212,0.466485,1.0,0.504589,0.651797,1.0,0.495443,0.820756,1.0,0.495443,0.820756,1.0
|
||||
0.489277,0.473306,1.0,0.475443,0.325181,1.0,0.480054,0.374556,1.0,0.470831,0.275806,1.0,0.476942,0.203449,1.0,0.484739,0.204751,1.0,0.484739,0.204751,1.0,0.470907,0.202098,1.0,0.470907,0.202098,1.0,0.453253,0.283869,1.0,0.435675,0.291931,1.0,0.409599,0.392845,1.0,0.417215,0.338366,1.0,0.427291,0.337906,1.0,0.422249,0.300832,1.0,0.435541,0.311832,1.0,0.412166,0.312240,1.0,0.420416,0.308573,1.0,0.433249,0.307351,1.0,0.413312,0.316314,1.0,0.419270,0.316721,1.0,0.433707,0.315092,1.0,0.411021,0.314684,1.0,0.430957,0.331387,1.0,0.433249,0.331794,1.0,0.411021,0.311018,1.0,0.438290,0.331794,1.0,0.436916,0.333831,1.0,0.484673,0.273044,1.0,0.498516,0.270282,1.0,0.519987,0.338298,1.0,0.558250,0.360245,1.0,0.563828,0.368071,1.0,0.570380,0.377394,1.0,0.577099,0.379432,1.0,0.580542,0.366323,1.0,0.581198,0.367488,1.0,0.581854,0.370110,1.0,0.576281,0.363993,1.0,0.580870,0.366031,1.0,0.580708,0.365741,1.0,0.574318,0.364867,1.0,0.580708,0.364575,1.0,0.582344,0.373023,1.0,0.569073,0.378850,1.0,0.581688,0.364867,1.0,0.581688,0.366906,1.0,0.469321,0.477419,1.0,0.469321,0.477419,1.0,0.481612,0.662684,1.0,0.522984,0.834394,1.0,0.522984,0.834394,1.0,0.509234,0.469193,1.0,0.509234,0.469193,1.0,0.486190,0.646408,1.0,0.469331,0.828914,1.0,0.469331,0.828914,1.0
|
||||
0.489234,0.476029,1.0,0.474271,0.340079,1.0,0.479259,0.385395,1.0,0.469284,0.294762,1.0,0.476998,0.217066,1.0,0.486221,0.223824,1.0,0.486221,0.223824,1.0,0.472420,0.221145,1.0,0.472420,0.221145,1.0,0.452476,0.301578,1.0,0.435667,0.308394,1.0,0.441770,0.403782,1.0,0.461646,0.341218,1.0,0.470384,0.325501,1.0,0.472168,0.321627,1.0,0.484054,0.320219,1.0,0.481677,0.335715,1.0,0.485242,0.330431,1.0,0.482667,0.322331,1.0,0.463253,0.343463,1.0,0.484648,0.324093,1.0,0.484648,0.324093,1.0,0.462857,0.343463,1.0,0.460480,0.344167,1.0,0.484846,0.325501,1.0,0.462263,0.344167,1.0,0.462263,0.344871,1.0,0.484054,0.331136,1.0,0.483087,0.290682,1.0,0.496891,0.286603,1.0,0.507712,0.338274,1.0,0.538328,0.346534,1.0,0.544010,0.359133,1.0,0.550953,0.364744,1.0,0.556885,0.366314,1.0,0.551589,0.347465,1.0,0.555375,0.349036,1.0,0.554740,0.349933,1.0,0.552089,0.347241,1.0,0.553479,0.348587,1.0,0.554740,0.349485,1.0,0.552724,0.346344,1.0,0.553229,0.347465,1.0,0.552974,0.347241,1.0,0.556380,0.348138,1.0,0.556510,0.348363,1.0,0.557391,0.364968,1.0,0.470788,0.482793,1.0,0.470788,0.482793,1.0,0.486187,0.662673,1.0,0.529130,0.839840,1.0,0.529130,0.839840,1.0,0.507680,0.469265,1.0,0.507680,0.469265,1.0,0.480032,0.665396,1.0,0.452502,0.839825,1.0,0.452502,0.839825,1.0
|
||||
0.487711,0.489690,1.0,0.473954,0.345534,1.0,0.478540,0.393586,1.0,0.469368,0.297481,1.0,0.480100,0.226569,1.0,0.487714,0.226559,1.0,0.487714,0.226559,1.0,0.472485,0.226579,1.0,0.472485,0.226579,1.0,0.452534,0.305635,1.0,0.435699,0.313789,1.0,0.447921,0.406616,1.0,0.480076,0.349275,1.0,0.487146,0.344342,1.0,0.494621,0.338047,1.0,0.500326,0.333850,1.0,0.493047,0.306570,1.0,0.504654,0.312866,1.0,0.502097,0.324407,1.0,0.490687,0.308319,1.0,0.503474,0.314615,1.0,0.500523,0.325106,1.0,0.489506,0.311118,1.0,0.499933,0.316363,1.0,0.498753,0.325457,1.0,0.489703,0.314615,1.0,0.496982,0.318811,1.0,0.497376,0.325106,1.0,0.483169,0.293382,1.0,0.496970,0.289283,1.0,0.507665,0.335666,1.0,0.529115,0.343804,1.0,0.534229,0.355683,1.0,0.539198,0.357706,1.0,0.541266,0.340605,1.0,0.540849,0.340972,1.0,0.540750,0.340788,1.0,0.534854,0.336927,1.0,0.538573,0.342076,1.0,0.537333,0.341340,1.0,0.532885,0.338766,1.0,0.537333,0.348144,1.0,0.533818,0.346673,1.0,0.533094,0.345754,1.0,0.532161,0.354396,1.0,0.533302,0.347408,1.0,0.531646,0.344282,1.0,0.469277,0.491092,1.0,0.469277,0.491092,1.0,0.483177,0.662761,1.0,0.529115,0.839892,1.0,0.529115,0.839892,1.0,0.506145,0.488289,1.0,0.506145,0.488289,1.0,0.480039,0.670847,1.0,0.455524,0.842569,1.0,0.455524,0.842569,1.0
|
||||
0.487711,0.489690,1.0,0.473954,0.345534,1.0,0.478540,0.393586,1.0,0.469368,0.297481,1.0,0.480100,0.226569,1.0,0.487714,0.226559,1.0,0.487714,0.226559,1.0,0.472485,0.226579,1.0,0.472485,0.226579,1.0,0.452534,0.305635,1.0,0.435699,0.313789,1.0,0.447921,0.406616,1.0,0.480076,0.349275,1.0,0.487146,0.344342,1.0,0.494621,0.338047,1.0,0.500326,0.333850,1.0,0.493047,0.306570,1.0,0.504654,0.312866,1.0,0.502097,0.324407,1.0,0.490687,0.308319,1.0,0.503474,0.314615,1.0,0.500523,0.325106,1.0,0.489506,0.311118,1.0,0.499933,0.316363,1.0,0.498753,0.325457,1.0,0.489703,0.314615,1.0,0.496982,0.318811,1.0,0.497376,0.325106,1.0,0.483169,0.293382,1.0,0.496970,0.289283,1.0,0.507665,0.335666,1.0,0.529115,0.343804,1.0,0.534229,0.355683,1.0,0.539198,0.357706,1.0,0.541266,0.340605,1.0,0.540849,0.340972,1.0,0.540750,0.340788,1.0,0.534854,0.336927,1.0,0.538573,0.342076,1.0,0.537333,0.341340,1.0,0.532885,0.338766,1.0,0.537333,0.348144,1.0,0.533818,0.346673,1.0,0.533094,0.345754,1.0,0.532161,0.354396,1.0,0.533302,0.347408,1.0,0.531646,0.344282,1.0,0.469277,0.491092,1.0,0.469277,0.491092,1.0,0.483177,0.662761,1.0,0.529115,0.839892,1.0,0.529115,0.839892,1.0,0.506145,0.488289,1.0,0.506145,0.488289,1.0,0.480039,0.670847,1.0,0.455524,0.842569,1.0,0.455524,0.842569,1.0
|
||||
0.478555,0.473293,1.0,0.472828,0.337320,1.0,0.474737,0.382644,1.0,0.470919,0.291995,1.0,0.477716,0.208950,1.0,0.489286,0.207737,1.0,0.489286,0.207737,1.0,0.473934,0.207721,1.0,0.473934,0.207721,1.0,0.454808,0.293431,1.0,0.438698,0.294866,1.0,0.432574,0.406568,1.0,0.450958,0.360297,1.0,0.478331,0.334323,1.0,0.466289,0.326089,1.0,0.455635,0.362731,1.0,0.470920,0.335558,1.0,0.461194,0.352850,1.0,0.465131,0.342969,1.0,0.470226,0.354909,1.0,0.461194,0.355732,1.0,0.461194,0.356556,1.0,0.469994,0.356556,1.0,0.461657,0.352850,1.0,0.468836,0.356556,1.0,0.467215,0.366025,1.0,0.467215,0.362731,1.0,0.467215,0.362731,1.0,0.486222,0.286588,1.0,0.501525,0.281181,1.0,0.519964,0.335760,1.0,0.539854,0.362872,1.0,0.542083,0.376490,1.0,0.546026,0.384898,1.0,0.546552,0.385366,1.0,0.546682,0.383964,1.0,0.546943,0.384431,1.0,0.547078,0.385366,1.0,0.547078,0.383731,1.0,0.546943,0.383497,1.0,0.546943,0.384197,1.0,0.547208,0.383964,1.0,0.547078,0.383964,1.0,0.547078,0.384665,1.0,0.547078,0.384431,1.0,0.547865,0.386767,1.0,0.547208,0.385599,1.0,0.460116,0.477379,1.0,0.460116,0.477379,1.0,0.481616,0.659878,1.0,0.521531,0.837096,1.0,0.521531,0.837096,1.0,0.496993,0.469207,1.0,0.496993,0.469207,1.0,0.483198,0.657186,1.0,0.461720,0.839778,1.0,0.461720,0.839778,1.0
|
||||
0.473920,0.466469,1.0,0.473925,0.323403,1.0,0.473923,0.371091,1.0,0.473926,0.275714,1.0,0.477786,0.202147,1.0,0.486252,0.202131,1.0,0.486252,0.202131,1.0,0.470942,0.204696,1.0,0.470942,0.204696,1.0,0.457841,0.278450,1.0,0.441755,0.281186,1.0,0.421731,0.362910,1.0,0.408019,0.379308,1.0,0.395953,0.380795,1.0,0.414164,0.398127,1.0,0.413060,0.399435,1.0,0.395401,0.379488,1.0,0.397057,0.380469,1.0,0.395769,0.383412,1.0,0.402759,0.386681,1.0,0.400000,0.389952,1.0,0.402207,0.394857,1.0,0.403679,0.387336,1.0,0.401104,0.396493,1.0,0.402759,0.402706,1.0,0.414347,0.382431,1.0,0.414531,0.382757,1.0,0.401471,0.406630,1.0,0.491533,0.274330,1.0,0.509140,0.272946,1.0,0.530688,0.327454,1.0,0.550599,0.368337,1.0,0.562120,0.379384,1.0,0.556344,0.375963,1.0,0.551943,0.384272,1.0,0.564453,0.382806,1.0,0.553594,0.383783,1.0,0.552495,0.384761,1.0,0.565557,0.391359,1.0,0.556896,0.393804,1.0,0.558818,0.397958,1.0,0.566104,0.400647,1.0,0.557583,0.400892,1.0,0.559646,0.402846,1.0,0.564318,0.410179,1.0,0.558958,0.407734,1.0,0.560604,0.408468,1.0,0.452488,0.466531,1.0,0.452488,0.466531,1.0,0.472482,0.665537,1.0,0.509173,0.818007,1.0,0.509173,0.818007,1.0,0.495352,0.466406,1.0,0.495352,0.466406,1.0,0.484697,0.662667,1.0,0.486251,0.839819,1.0,0.486251,0.839819,1.0
|
||||
0.470889,0.466464,1.0,0.474342,0.321308,1.0,0.473191,0.369693,1.0,0.475493,0.272922,1.0,0.477004,0.203437,1.0,0.483191,0.199436,1.0,0.483191,0.199436,1.0,0.467821,0.199448,1.0,0.467821,0.199448,1.0,0.459384,0.272973,1.0,0.443275,0.273023,1.0,0.398818,0.357514,1.0,0.365127,0.376576,1.0,0.355442,0.366738,1.0,0.364752,0.395599,1.0,0.363797,0.394750,1.0,0.364514,0.394750,1.0,0.354964,0.390081,1.0,0.355680,0.390506,1.0,0.359739,0.388384,1.0,0.355203,0.388808,1.0,0.354486,0.390081,1.0,0.357829,0.385837,1.0,0.354964,0.399844,1.0,0.355442,0.402390,1.0,0.352816,0.384989,1.0,0.351383,0.390081,1.0,0.353532,0.399419,1.0,0.493106,0.272919,1.0,0.510719,0.272916,1.0,0.545995,0.338278,1.0,0.579661,0.387487,1.0,0.591521,0.393425,1.0,0.591521,0.397413,1.0,0.581802,0.393757,1.0,0.582922,0.391099,1.0,0.580865,0.391431,1.0,0.582359,0.403726,1.0,0.593203,0.396748,1.0,0.579370,0.406384,1.0,0.584229,0.412033,1.0,0.593203,0.398409,1.0,0.581427,0.412033,1.0,0.584604,0.414692,1.0,0.593203,0.407714,1.0,0.582922,0.416021,1.0,0.587406,0.421006,1.0,0.447925,0.466481,1.0,0.447925,0.466481,1.0,0.461711,0.673578,1.0,0.484683,0.801656,1.0,0.484683,0.801656,1.0,0.493853,0.466447,1.0,0.493853,0.466447,1.0,0.498483,0.670840,1.0,0.515314,0.837026,1.0,0.515314,0.837026,1.0
|
||||
0.468581,0.466439,1.0,0.471482,0.321396,1.0,0.470515,0.369744,1.0,0.472449,0.273048,1.0,0.470875,0.200798,1.0,0.473996,0.202094,1.0,0.473996,0.202094,1.0,0.460129,0.202056,1.0,0.460129,0.202056,1.0,0.456327,0.273069,1.0,0.440205,0.273091,1.0,0.392720,0.332974,1.0,0.348297,0.338459,1.0,0.346666,0.340650,1.0,0.335774,0.363051,1.0,0.337696,0.344826,1.0,0.332784,0.361532,1.0,0.324455,0.352041,1.0,0.332570,0.365330,1.0,0.331289,0.359255,1.0,0.332357,0.363811,1.0,0.332357,0.363051,1.0,0.333638,0.355837,1.0,0.330007,0.362671,1.0,0.331289,0.362671,1.0,0.332997,0.359634,1.0,0.337482,0.364570,1.0,0.332784,0.366848,1.0,0.490071,0.273028,1.0,0.507692,0.273007,1.0,0.553677,0.338500,1.0,0.594990,0.401077,1.0,0.595792,0.416615,1.0,0.600880,0.426841,1.0,0.605526,0.435494,1.0,0.612828,0.413469,1.0,0.619245,0.421334,1.0,0.619464,0.422907,1.0,0.615927,0.402456,1.0,0.620349,0.407569,1.0,0.619245,0.413861,1.0,0.615703,0.395376,1.0,0.618802,0.399309,1.0,0.617917,0.401276,1.0,0.614156,0.394982,1.0,0.615042,0.396949,1.0,0.616589,0.397736,1.0,0.446372,0.466498,1.0,0.446372,0.466498,1.0,0.458599,0.668253,1.0,0.458553,0.815257,1.0,0.458553,0.815257,1.0,0.490790,0.466381,1.0,0.490790,0.466381,1.0,0.509188,0.662709,1.0,0.535250,0.820751,1.0,0.535250,0.820751,1.0
|
||||
0.467011,0.476029,1.0,0.471035,0.327871,1.0,0.469694,0.377257,1.0,0.472377,0.278485,1.0,0.464766,0.203406,1.0,0.469311,0.202139,1.0,0.469311,0.202139,1.0,0.452477,0.202101,1.0,0.452477,0.202101,1.0,0.455538,0.278446,1.0,0.438700,0.278407,1.0,0.388126,0.313731,1.0,0.345158,0.316604,1.0,0.340347,0.332081,1.0,0.334766,0.345193,1.0,0.328587,0.346965,1.0,0.330182,0.333144,1.0,0.325796,0.346256,1.0,0.325397,0.345902,1.0,0.325995,0.329246,1.0,0.321411,0.341649,1.0,0.323205,0.340941,1.0,0.323803,0.324285,1.0,0.319019,0.336688,1.0,0.320813,0.335979,1.0,0.322208,0.318969,1.0,0.317823,0.331018,1.0,0.319019,0.331727,1.0,0.489269,0.278482,1.0,0.506161,0.278480,1.0,0.555203,0.343898,1.0,0.602672,0.406567,1.0,0.600740,0.427247,1.0,0.606286,0.439244,1.0,0.610380,0.449097,1.0,0.617609,0.431960,1.0,0.624839,0.437530,1.0,0.627974,0.440100,1.0,0.620505,0.424677,1.0,0.629661,0.428961,1.0,0.633276,0.428961,1.0,0.620984,0.415680,1.0,0.630141,0.418679,1.0,0.633036,0.415680,1.0,0.619781,0.407539,1.0,0.627734,0.407968,1.0,0.630141,0.406254,1.0,0.446296,0.477406,1.0,0.446296,0.477406,1.0,0.458539,0.670844,1.0,0.449451,0.817950,1.0,0.449451,0.817950,1.0,0.487727,0.474652,1.0,0.487727,0.474652,1.0,0.516843,0.660005,1.0,0.546078,0.823475,1.0,0.546078,0.823475,1.0
|
||||
0.467011,0.476029,1.0,0.471035,0.327871,1.0,0.469694,0.377257,1.0,0.472377,0.278485,1.0,0.464766,0.203406,1.0,0.469311,0.202139,1.0,0.469311,0.202139,1.0,0.452477,0.202101,1.0,0.452477,0.202101,1.0,0.455538,0.278446,1.0,0.438700,0.278407,1.0,0.388126,0.313731,1.0,0.345158,0.316604,1.0,0.340347,0.332081,1.0,0.334766,0.345193,1.0,0.328587,0.346965,1.0,0.330182,0.333144,1.0,0.325796,0.346256,1.0,0.325397,0.345902,1.0,0.325995,0.329246,1.0,0.321411,0.341649,1.0,0.323205,0.340941,1.0,0.323803,0.324285,1.0,0.319019,0.336688,1.0,0.320813,0.335979,1.0,0.322208,0.318969,1.0,0.317823,0.331018,1.0,0.319019,0.331727,1.0,0.489269,0.278482,1.0,0.506161,0.278480,1.0,0.555203,0.343898,1.0,0.602672,0.406567,1.0,0.600740,0.427247,1.0,0.606286,0.439244,1.0,0.610380,0.449097,1.0,0.617609,0.431960,1.0,0.624839,0.437530,1.0,0.627974,0.440100,1.0,0.620505,0.424677,1.0,0.629661,0.428961,1.0,0.633276,0.428961,1.0,0.620984,0.415680,1.0,0.630141,0.418679,1.0,0.633036,0.415680,1.0,0.619781,0.407539,1.0,0.627734,0.407968,1.0,0.630141,0.406254,1.0,0.446296,0.477406,1.0,0.446296,0.477406,1.0,0.458539,0.670844,1.0,0.449451,0.817950,1.0,0.449451,0.817950,1.0,0.487727,0.474652,1.0,0.487727,0.474652,1.0,0.516843,0.660005,1.0,0.546078,0.823475,1.0,0.546078,0.823475,1.0
|
||||
0.467024,0.477402,1.0,0.471011,0.328229,1.0,0.469682,0.377953,1.0,0.472340,0.278505,1.0,0.463184,0.202107,1.0,0.461703,0.202053,1.0,0.461703,0.202053,1.0,0.447919,0.202074,1.0,0.447919,0.202074,1.0,0.454750,0.278487,1.0,0.437160,0.278469,1.0,0.386555,0.313771,1.0,0.342132,0.316516,1.0,0.340635,0.329121,1.0,0.334652,0.341884,1.0,0.328271,0.344012,1.0,0.331262,0.328412,1.0,0.326077,0.344012,1.0,0.326077,0.341530,1.0,0.326675,0.324867,1.0,0.321490,0.339048,1.0,0.323285,0.337276,1.0,0.324083,0.320967,1.0,0.319496,0.335148,1.0,0.321490,0.333021,1.0,0.321889,0.316358,1.0,0.318499,0.329831,1.0,0.318897,0.329831,1.0,0.489968,0.278482,1.0,0.507597,0.278459,1.0,0.556646,0.357346,1.0,0.595073,0.422850,1.0,0.593677,0.438858,1.0,0.599016,0.452231,1.0,0.602656,0.461290,1.0,0.611875,0.446623,1.0,0.617703,0.455251,1.0,0.620370,0.458270,1.0,0.614302,0.437565,1.0,0.620370,0.443172,1.0,0.624495,0.444035,1.0,0.614302,0.428937,1.0,0.620370,0.432819,1.0,0.624495,0.435839,1.0,0.612849,0.420741,1.0,0.618672,0.421604,1.0,0.622068,0.422035,1.0,0.446302,0.480126,1.0,0.446302,0.480126,1.0,0.460153,0.665364,1.0,0.458656,0.812611,1.0,0.458656,0.812611,1.0,0.487746,0.474678,1.0,0.487746,0.474678,1.0,0.515327,0.654540,1.0,0.544411,0.823446,1.0,0.544411,0.823446,1.0
|
||||
0.466272,0.465104,1.0,0.469750,0.320982,1.0,0.468591,0.369022,1.0,0.470909,0.272941,1.0,0.460866,0.189940,1.0,0.461653,0.188524,1.0,0.461653,0.188524,1.0,0.447868,0.188556,1.0,0.447868,0.188556,1.0,0.453299,0.274307,1.0,0.435689,0.275673,1.0,0.386592,0.322082,1.0,0.349791,0.335751,1.0,0.349069,0.335547,1.0,0.338258,0.330470,1.0,0.344785,0.329382,1.0,0.329486,0.341349,1.0,0.334178,0.335909,1.0,0.341725,0.335184,1.0,0.328874,0.345338,1.0,0.332139,0.347152,1.0,0.342949,0.345338,1.0,0.331730,0.348602,1.0,0.332546,0.352954,1.0,0.340094,0.355493,1.0,0.331730,0.350778,1.0,0.333566,0.355855,1.0,0.337646,0.359481,1.0,0.488513,0.271631,1.0,0.506117,0.270321,1.0,0.546031,0.354705,1.0,0.581292,0.425669,1.0,0.599526,0.449086,1.0,0.595885,0.463243,1.0,0.588604,0.467287,1.0,0.586786,0.466882,1.0,0.585651,0.431291,1.0,0.581328,0.440593,1.0,0.579505,0.457984,1.0,0.579734,0.447469,1.0,0.580646,0.448278,1.0,0.581099,0.462838,1.0,0.582917,0.453940,1.0,0.582917,0.456771,1.0,0.584740,0.464456,1.0,0.589745,0.461624,1.0,0.582917,0.463646,1.0,0.446288,0.466495,1.0,0.446288,0.466495,1.0,0.460186,0.662610,1.0,0.467790,0.804406,1.0,0.467790,0.804406,1.0,0.486257,0.463713,1.0,0.486257,0.463713,1.0,0.507666,0.646431,1.0,0.521458,0.828928,1.0,0.521458,0.828928,1.0
|
||||
0.467082,0.461019,1.0,0.468779,0.317917,1.0,0.468214,0.365618,1.0,0.469345,0.270217,1.0,0.460149,0.185842,1.0,0.463214,0.185830,1.0,0.463214,0.185830,1.0,0.447916,0.185832,1.0,0.447916,0.185832,1.0,0.451711,0.271602,1.0,0.434077,0.272987,1.0,0.398825,0.330206,1.0,0.381931,0.357394,1.0,0.387389,0.352980,1.0,0.374780,0.358894,1.0,0.371628,0.360140,1.0,0.367251,0.376640,1.0,0.372504,0.360451,1.0,0.372854,0.383177,1.0,0.367776,0.375083,1.0,0.372154,0.390337,1.0,0.371979,0.388158,1.0,0.367601,0.375083,1.0,0.372154,0.390649,1.0,0.372854,0.385045,1.0,0.366725,0.375706,1.0,0.377932,0.388469,1.0,0.370052,0.391894,1.0,0.486966,0.267514,1.0,0.504587,0.264812,1.0,0.536807,0.351994,1.0,0.565885,0.422904,1.0,0.566438,0.430614,1.0,0.578495,0.460081,1.0,0.577417,0.462376,1.0,0.568375,0.430614,1.0,0.569453,0.432144,1.0,0.563208,0.433675,1.0,0.561057,0.441711,1.0,0.559979,0.448217,1.0,0.564500,0.453192,1.0,0.562995,0.455106,1.0,0.579786,0.450513,1.0,0.564500,0.455870,1.0,0.563641,0.466585,1.0,0.576339,0.462759,1.0,0.572250,0.462376,1.0,0.446394,0.463722,1.0,0.446394,0.463722,1.0,0.460180,0.662552,1.0,0.478553,0.812508,1.0,0.478553,0.812508,1.0,0.487770,0.458316,1.0,0.487770,0.458316,1.0,0.493890,0.649111,1.0,0.495310,0.820794,1.0,0.495310,0.820794,1.0
|
||||
0.467786,0.467811,1.0,0.463220,0.321678,1.0,0.464742,0.370389,1.0,0.461697,0.272968,1.0,0.461682,0.196659,1.0,0.467789,0.188532,1.0,0.467789,0.188532,1.0,0.449452,0.188531,1.0,0.449452,0.188531,1.0,0.445589,0.277093,1.0,0.429481,0.281219,1.0,0.392685,0.379334,1.0,0.435599,0.371093,1.0,0.447084,0.373564,1.0,0.456088,0.377024,1.0,0.453411,0.379620,1.0,0.458765,0.379620,1.0,0.456331,0.383081,1.0,0.454141,0.378755,1.0,0.458765,0.373996,1.0,0.456088,0.380918,1.0,0.454628,0.379187,1.0,0.458521,0.374429,1.0,0.456331,0.379187,1.0,0.456088,0.380053,1.0,0.460224,0.373131,1.0,0.453168,0.380485,1.0,0.453411,0.380485,1.0,0.479298,0.270220,1.0,0.496898,0.267473,1.0,0.523010,0.338508,1.0,0.546052,0.406575,1.0,0.542542,0.406694,1.0,0.542177,0.412199,1.0,0.546188,0.422237,1.0,0.554927,0.419322,1.0,0.547464,0.422561,1.0,0.545094,0.430656,1.0,0.558391,0.427742,1.0,0.546370,0.433570,1.0,0.543635,0.440370,1.0,0.558937,0.437132,1.0,0.548005,0.441019,1.0,0.546917,0.448143,1.0,0.558755,0.444581,1.0,0.551286,0.448790,1.0,0.547646,0.453323,1.0,0.447844,0.469154,1.0,0.447844,0.469154,1.0,0.461668,0.659984,1.0,0.495439,0.815349,1.0,0.495439,0.815349,1.0,0.487729,0.466469,1.0,0.487729,0.466469,1.0,0.472472,0.646296,1.0,0.461651,0.834377,1.0,0.461651,0.834377,1.0
|
||||
0.468584,0.473329,1.0,0.462287,0.333315,1.0,0.464386,0.379986,1.0,0.460188,0.286644,1.0,0.463199,0.208989,1.0,0.470837,0.204794,1.0,0.470837,0.204794,1.0,0.455556,0.204747,1.0,0.455556,0.204747,1.0,0.446364,0.289370,1.0,0.432539,0.292097,1.0,0.409621,0.401019,1.0,0.446332,0.363030,1.0,0.451488,0.367132,1.0,0.469965,0.368411,1.0,0.468766,0.369264,1.0,0.471405,0.364998,1.0,0.469485,0.365425,1.0,0.469965,0.352199,1.0,0.461086,0.356039,1.0,0.468045,0.351773,1.0,0.468766,0.350493,1.0,0.460606,0.353053,1.0,0.466126,0.348786,1.0,0.466846,0.349640,1.0,0.457727,0.350493,1.0,0.461326,0.342814,1.0,0.464206,0.339401,1.0,0.476252,0.281163,1.0,0.492315,0.275681,1.0,0.515302,0.338485,1.0,0.533802,0.401039,1.0,0.535375,0.415344,1.0,0.535698,0.428307,1.0,0.545906,0.419665,1.0,0.536505,0.428307,1.0,0.537479,0.432053,1.0,0.537964,0.439543,1.0,0.541208,0.428307,1.0,0.541854,0.430324,1.0,0.544448,0.432341,1.0,0.543964,0.427155,1.0,0.545583,0.431764,1.0,0.546068,0.430900,1.0,0.543474,0.418513,1.0,0.544286,0.419953,1.0,0.545906,0.421969,1.0,0.449400,0.474699,1.0,0.449400,0.474699,1.0,0.469292,0.646418,1.0,0.504614,0.831619,1.0,0.504614,0.831619,1.0,0.487768,0.471958,1.0,0.487768,0.471958,1.0,0.460206,0.649122,1.0,0.446267,0.834306,1.0,0.446267,0.834306,1.0
|
||||
0.468584,0.473329,1.0,0.462287,0.333315,1.0,0.464386,0.379986,1.0,0.460188,0.286644,1.0,0.463199,0.208989,1.0,0.470837,0.204794,1.0,0.470837,0.204794,1.0,0.455556,0.204747,1.0,0.455556,0.204747,1.0,0.446364,0.289370,1.0,0.432539,0.292097,1.0,0.409621,0.401019,1.0,0.446332,0.363030,1.0,0.451488,0.367132,1.0,0.469965,0.368411,1.0,0.468766,0.369264,1.0,0.471405,0.364998,1.0,0.469485,0.365425,1.0,0.469965,0.352199,1.0,0.461086,0.356039,1.0,0.468045,0.351773,1.0,0.468766,0.350493,1.0,0.460606,0.353053,1.0,0.466126,0.348786,1.0,0.466846,0.349640,1.0,0.457727,0.350493,1.0,0.461326,0.342814,1.0,0.464206,0.339401,1.0,0.476252,0.281163,1.0,0.492315,0.275681,1.0,0.515302,0.338485,1.0,0.533802,0.401039,1.0,0.535375,0.415344,1.0,0.535698,0.428307,1.0,0.545906,0.419665,1.0,0.536505,0.428307,1.0,0.537479,0.432053,1.0,0.537964,0.439543,1.0,0.541208,0.428307,1.0,0.541854,0.430324,1.0,0.544448,0.432341,1.0,0.543964,0.427155,1.0,0.545583,0.431764,1.0,0.546068,0.430900,1.0,0.543474,0.418513,1.0,0.544286,0.419953,1.0,0.545906,0.421969,1.0,0.449400,0.474699,1.0,0.449400,0.474699,1.0,0.469292,0.646418,1.0,0.504614,0.831619,1.0,0.504614,0.831619,1.0,0.487768,0.471958,1.0,0.487768,0.471958,1.0,0.460206,0.649122,1.0,0.446267,0.834306,1.0,0.446267,0.834306,1.0
|
||||
0.467040,0.473287,1.0,0.461835,0.339436,1.0,0.463570,0.384053,1.0,0.460101,0.294819,1.0,0.464686,0.217092,1.0,0.472407,0.207512,1.0,0.472407,0.207512,1.0,0.458585,0.204957,1.0,0.458585,0.204957,1.0,0.445557,0.301615,1.0,0.431014,0.308410,1.0,0.423428,0.398364,1.0,0.452484,0.357426,1.0,0.457943,0.351925,1.0,0.466765,0.353927,1.0,0.468642,0.351257,1.0,0.481030,0.326899,1.0,0.479716,0.339912,1.0,0.471457,0.339912,1.0,0.478027,0.338578,1.0,0.479716,0.339912,1.0,0.471833,0.339912,1.0,0.479904,0.331570,1.0,0.479153,0.340914,1.0,0.470707,0.341915,1.0,0.479341,0.325564,1.0,0.477276,0.351925,1.0,0.470331,0.341915,1.0,0.474678,0.290695,1.0,0.489255,0.286570,1.0,0.503087,0.335513,1.0,0.521432,0.381944,1.0,0.521109,0.396108,1.0,0.519810,0.402816,1.0,0.520591,0.412992,1.0,0.520461,0.410448,1.0,0.520071,0.413917,1.0,0.521109,0.416924,1.0,0.524755,0.405360,1.0,0.526188,0.407210,1.0,0.527875,0.408829,1.0,0.527484,0.403741,1.0,0.529958,0.407442,1.0,0.531130,0.404666,1.0,0.530349,0.395415,1.0,0.533078,0.402354,1.0,0.534510,0.403509,1.0,0.449433,0.474665,1.0,0.449433,0.474665,1.0,0.470864,0.649071,1.0,0.506075,0.831682,1.0,0.506075,0.831682,1.0,0.484647,0.471908,1.0,0.484647,0.471908,1.0,0.458623,0.657262,1.0,0.434108,0.842645,1.0,0.434108,0.842645,1.0
|
||||
0.466295,0.473252,1.0,0.461678,0.337341,1.0,0.463217,0.382645,1.0,0.460140,0.292038,1.0,0.463985,0.207576,1.0,0.472480,0.202105,1.0,0.472480,0.202105,1.0,0.458595,0.202020,1.0,0.458595,0.202020,1.0,0.446325,0.293485,1.0,0.432511,0.294931,1.0,0.421793,0.384781,1.0,0.431021,0.362898,1.0,0.431603,0.370165,1.0,0.440890,0.363763,1.0,0.443733,0.364100,1.0,0.443543,0.359382,1.0,0.443354,0.359382,1.0,0.443543,0.359045,1.0,0.425538,0.363763,1.0,0.431792,0.359045,1.0,0.442595,0.349274,1.0,0.426107,0.363763,1.0,0.431792,0.356687,1.0,0.439563,0.346916,1.0,0.434256,0.367469,1.0,0.436152,0.367132,1.0,0.437478,0.342536,1.0,0.475476,0.286626,1.0,0.490812,0.281214,1.0,0.501533,0.341071,1.0,0.516885,0.379287,1.0,0.512877,0.386829,1.0,0.518192,0.395125,1.0,0.521823,0.400656,1.0,0.523635,0.388672,1.0,0.526620,0.390516,1.0,0.529729,0.391669,1.0,0.523375,0.382450,1.0,0.525193,0.387059,1.0,0.520525,0.402038,1.0,0.521693,0.378994,1.0,0.523120,0.383603,1.0,0.519099,0.400194,1.0,0.519488,0.375767,1.0,0.521432,0.381529,1.0,0.517673,0.396507,1.0,0.447893,0.474618,1.0,0.447893,0.474618,1.0,0.467831,0.646400,1.0,0.500026,0.820713,1.0,0.500026,0.820713,1.0,0.484697,0.471886,1.0,0.484697,0.471886,1.0,0.461718,0.654525,1.0,0.443302,0.834393,1.0,0.443302,0.834393,1.0
|
||||
0.465544,0.463735,1.0,0.461543,0.322742,1.0,0.462877,0.369740,1.0,0.460209,0.275744,1.0,0.464780,0.202061,1.0,0.473919,0.185661,1.0,0.473919,0.185661,1.0,0.458680,0.185669,1.0,0.458680,0.185669,1.0,0.446392,0.282517,1.0,0.432576,0.289289,1.0,0.409598,0.360184,1.0,0.386633,0.403759,1.0,0.373314,0.420240,1.0,0.375678,0.414837,1.0,0.375847,0.414537,1.0,0.375847,0.417238,1.0,0.376016,0.417238,1.0,0.374496,0.423542,1.0,0.383951,0.416338,1.0,0.374158,0.423842,1.0,0.374327,0.424743,1.0,0.373145,0.424142,1.0,0.373483,0.425043,1.0,0.389692,0.424142,1.0,0.372132,0.424142,1.0,0.386484,0.426544,1.0,0.388847,0.424142,1.0,0.477025,0.272945,1.0,0.493841,0.270146,1.0,0.504583,0.319269,1.0,0.519852,0.379244,1.0,0.513721,0.386425,1.0,0.517343,0.398500,1.0,0.522927,0.406819,1.0,0.525797,0.395548,1.0,0.529417,0.400109,1.0,0.532740,0.403867,1.0,0.525948,0.389913,1.0,0.528063,0.397963,1.0,0.527760,0.410306,1.0,0.525042,0.386425,1.0,0.527458,0.389913,1.0,0.525042,0.413794,1.0,0.523833,0.382936,1.0,0.525495,0.387230,1.0,0.523229,0.416210,1.0,0.446385,0.463741,1.0,0.446385,0.463741,1.0,0.460105,0.662744,1.0,0.492344,0.809799,1.0,0.492344,0.809799,1.0,0.484703,0.463729,1.0,0.484703,0.463729,1.0,0.470897,0.659908,1.0,0.458610,0.837054,1.0,0.458610,0.837054,1.0
|
||||
0.464754,0.465063,1.0,0.462435,0.319009,1.0,0.463208,0.367694,1.0,0.461661,0.270324,1.0,0.465517,0.192575,1.0,0.473943,0.180369,1.0,0.473943,0.180369,1.0,0.458656,0.182966,1.0,0.458656,0.182966,1.0,0.447867,0.273074,1.0,0.434072,0.275824,1.0,0.397311,0.357328,1.0,0.352853,0.425542,1.0,0.351347,0.440818,1.0,0.335548,0.456138,1.0,0.338181,0.459117,1.0,0.336745,0.468479,1.0,0.336027,0.469330,1.0,0.337703,0.469756,1.0,0.351347,0.470606,1.0,0.340575,0.472734,1.0,0.346559,0.471032,1.0,0.350390,0.470606,1.0,0.346559,0.471883,1.0,0.333394,0.468054,1.0,0.349671,0.470606,1.0,0.355177,0.459117,1.0,0.336984,0.469756,1.0,0.477751,0.263508,1.0,0.493840,0.256693,1.0,0.509158,0.305651,1.0,0.521547,0.373815,1.0,0.521531,0.382294,1.0,0.518901,0.392806,1.0,0.518736,0.403901,1.0,0.532042,0.399229,1.0,0.535490,0.412076,1.0,0.530234,0.419960,1.0,0.534505,0.398061,1.0,0.539432,0.413828,1.0,0.541240,0.423171,1.0,0.535161,0.397477,1.0,0.540745,0.412952,1.0,0.542552,0.422004,1.0,0.534667,0.397769,1.0,0.535323,0.410032,1.0,0.544521,0.418500,1.0,0.444820,0.466417,1.0,0.444820,0.466417,1.0,0.458539,0.662663,1.0,0.470872,0.804403,1.0,0.470872,0.804403,1.0,0.484688,0.463709,1.0,0.484688,0.463709,1.0,0.480036,0.657251,1.0,0.483183,0.815239,1.0,0.483183,0.815239,1.0
|
||||
0.463985,0.469222,1.0,0.462281,0.322026,1.0,0.462849,0.371091,1.0,0.461713,0.272961,1.0,0.466245,0.202053,1.0,0.473923,0.185725,1.0,0.473923,0.185725,1.0,0.458671,0.185731,1.0,0.458671,0.185731,1.0,0.447865,0.274378,1.0,0.434016,0.275794,1.0,0.385086,0.357587,1.0,0.331386,0.441849,1.0,0.330890,0.455123,1.0,0.326803,0.471731,1.0,0.321840,0.480036,1.0,0.315124,0.470175,1.0,0.312789,0.472770,1.0,0.312205,0.486784,1.0,0.312789,0.462908,1.0,0.309577,0.473808,1.0,0.310161,0.479518,1.0,0.312205,0.458237,1.0,0.309285,0.467061,1.0,0.310161,0.472251,1.0,0.313665,0.453566,1.0,0.310161,0.462390,1.0,0.310161,0.466022,1.0,0.478550,0.270241,1.0,0.495387,0.267520,1.0,0.519974,0.300281,1.0,0.530641,0.357490,1.0,0.527255,0.365314,1.0,0.526286,0.367280,1.0,0.524490,0.374404,1.0,0.535547,0.384968,1.0,0.535823,0.386442,1.0,0.527948,0.385950,1.0,0.536516,0.385705,1.0,0.535958,0.387179,1.0,0.528083,0.394548,1.0,0.537344,0.385705,1.0,0.536927,0.388161,1.0,0.536234,0.387424,1.0,0.537068,0.385213,1.0,0.537344,0.387916,1.0,0.536099,0.387179,1.0,0.443277,0.469280,1.0,0.443277,0.469280,1.0,0.457032,0.662668,1.0,0.447905,0.812563,1.0,0.447905,0.812563,1.0,0.484694,0.469164,1.0,0.484694,0.469164,1.0,0.496902,0.649076,1.0,0.500004,0.793576,1.0,0.500004,0.793576,1.0
|
||||
0.463985,0.469222,1.0,0.462281,0.322026,1.0,0.462849,0.371091,1.0,0.461713,0.272961,1.0,0.466245,0.202053,1.0,0.473923,0.185725,1.0,0.473923,0.185725,1.0,0.458671,0.185731,1.0,0.458671,0.185731,1.0,0.447865,0.274378,1.0,0.434016,0.275794,1.0,0.385086,0.357587,1.0,0.331386,0.441849,1.0,0.330890,0.455123,1.0,0.326803,0.471731,1.0,0.321840,0.480036,1.0,0.315124,0.470175,1.0,0.312789,0.472770,1.0,0.312205,0.486784,1.0,0.312789,0.462908,1.0,0.309577,0.473808,1.0,0.310161,0.479518,1.0,0.312205,0.458237,1.0,0.309285,0.467061,1.0,0.310161,0.472251,1.0,0.313665,0.453566,1.0,0.310161,0.462390,1.0,0.310161,0.466022,1.0,0.478550,0.270241,1.0,0.495387,0.267520,1.0,0.519974,0.300281,1.0,0.530641,0.357490,1.0,0.527255,0.365314,1.0,0.526286,0.367280,1.0,0.524490,0.374404,1.0,0.535547,0.384968,1.0,0.535823,0.386442,1.0,0.527948,0.385950,1.0,0.536516,0.385705,1.0,0.535958,0.387179,1.0,0.528083,0.394548,1.0,0.537344,0.385705,1.0,0.536927,0.388161,1.0,0.536234,0.387424,1.0,0.537068,0.385213,1.0,0.537344,0.387916,1.0,0.536099,0.387179,1.0,0.443277,0.469280,1.0,0.443277,0.469280,1.0,0.457032,0.662668,1.0,0.447905,0.812563,1.0,0.447905,0.812563,1.0,0.484694,0.469164,1.0,0.484694,0.469164,1.0,0.496902,0.649076,1.0,0.500004,0.793576,1.0,0.500004,0.793576,1.0
|
||||
0.463212,0.471967,1.0,0.462075,0.326852,1.0,0.462454,0.375224,1.0,0.461695,0.278481,1.0,0.464758,0.204868,1.0,0.472470,0.199382,1.0,0.472470,0.199382,1.0,0.458606,0.199367,1.0,0.458606,0.199367,1.0,0.447133,0.283866,1.0,0.432571,0.289251,1.0,0.383471,0.360144,1.0,0.334469,0.428291,1.0,0.331738,0.446271,1.0,0.328695,0.459345,1.0,0.321594,0.464755,1.0,0.319312,0.461148,1.0,0.315001,0.469714,1.0,0.315255,0.469714,1.0,0.317030,0.454386,1.0,0.312972,0.460697,1.0,0.314494,0.460697,1.0,0.315255,0.447623,1.0,0.311451,0.453033,1.0,0.313226,0.453935,1.0,0.315508,0.442213,1.0,0.312972,0.445820,1.0,0.313480,0.448074,1.0,0.478528,0.275739,1.0,0.495361,0.272997,1.0,0.532214,0.316547,1.0,0.523021,0.330231,1.0,0.532323,0.315121,1.0,0.521932,0.335900,1.0,0.518525,0.339075,1.0,0.520636,0.337631,1.0,0.519500,0.338209,1.0,0.517390,0.333303,1.0,0.522906,0.324645,1.0,0.519662,0.333592,1.0,0.520636,0.335034,1.0,0.522099,0.321759,1.0,0.527943,0.322336,1.0,0.523557,0.324933,1.0,0.532484,0.308772,1.0,0.528589,0.319739,1.0,0.527453,0.323202,1.0,0.441771,0.471965,1.0,0.441771,0.471965,1.0,0.452498,0.659872,1.0,0.447907,0.812565,1.0,0.447907,0.812565,1.0,0.484654,0.471969,1.0,0.484654,0.471969,1.0,0.513821,0.635459,1.0,0.506131,0.752692,1.0,0.506131,0.752692,1.0
|
||||
0.463228,0.470617,1.0,0.462062,0.334610,1.0,0.462451,0.379945,1.0,0.461673,0.289274,1.0,0.464711,0.206279,1.0,0.472408,0.204931,1.0,0.472408,0.204931,1.0,0.458549,0.204883,1.0,0.458549,0.204883,1.0,0.446347,0.290593,1.0,0.431021,0.291912,1.0,0.386582,0.357440,1.0,0.349711,0.411962,1.0,0.346228,0.416022,1.0,0.342839,0.411128,1.0,0.346440,0.426942,1.0,0.335426,0.422423,1.0,0.345169,0.428448,1.0,0.345381,0.433719,1.0,0.331614,0.428071,1.0,0.339874,0.436731,1.0,0.343474,0.441627,1.0,0.330554,0.435602,1.0,0.337332,0.441627,1.0,0.340933,0.443133,1.0,0.330554,0.438615,1.0,0.334791,0.448028,1.0,0.336697,0.446898,1.0,0.478544,0.286589,1.0,0.495414,0.283905,1.0,0.538318,0.351971,1.0,0.524510,0.311061,1.0,0.516789,0.303186,1.0,0.517422,0.302436,1.0,0.515945,0.267933,1.0,0.516578,0.274309,1.0,0.515945,0.271684,1.0,0.519953,0.256683,1.0,0.515945,0.274684,1.0,0.517422,0.286685,1.0,0.518898,0.289685,1.0,0.512781,0.275434,1.0,0.524594,0.337688,1.0,0.517422,0.287060,1.0,0.508773,0.278809,1.0,0.521854,0.339563,1.0,0.526703,0.343688,1.0,0.443274,0.471948,1.0,0.443274,0.471948,1.0,0.458666,0.659917,1.0,0.447917,0.812550,1.0,0.447917,0.812550,1.0,0.483181,0.469285,1.0,0.483181,0.469285,1.0,0.521516,0.621754,1.0,0.495403,0.708957,1.0,0.495403,0.708957,1.0
|
||||
0.461666,0.465075,1.0,0.460578,0.323122,1.0,0.460941,0.370440,1.0,0.460216,0.275804,1.0,0.464746,0.207590,1.0,0.472342,0.210276,1.0,0.472342,0.210276,1.0,0.458587,0.210325,1.0,0.458587,0.210325,1.0,0.445596,0.277137,1.0,0.430977,0.278471,1.0,0.397281,0.349271,1.0,0.365117,0.403809,1.0,0.355076,0.425889,1.0,0.362540,0.414321,1.0,0.362922,0.414662,1.0,0.362731,0.417724,1.0,0.363305,0.414662,1.0,0.364454,0.415002,1.0,0.361583,0.419084,1.0,0.363114,0.412960,1.0,0.364645,0.412280,1.0,0.363497,0.412280,1.0,0.365219,0.412280,1.0,0.365793,0.412280,1.0,0.362922,0.409898,1.0,0.365028,0.412620,1.0,0.365602,0.413981,1.0,0.477787,0.275732,1.0,0.495358,0.275659,1.0,0.530630,0.357521,1.0,0.516843,0.272868,1.0,0.509528,0.234340,1.0,0.514209,0.231314,1.0,0.520167,0.226018,1.0,0.513145,0.235096,1.0,0.514634,0.236988,1.0,0.505059,0.243797,1.0,0.516549,0.246445,1.0,0.514847,0.240771,1.0,0.505059,0.251363,1.0,0.514209,0.255145,1.0,0.511017,0.258172,1.0,0.506336,0.256281,1.0,0.513358,0.257416,1.0,0.510379,0.258172,1.0,0.506761,0.255524,1.0,0.441719,0.466425,1.0,0.441719,0.466425,1.0,0.467797,0.654532,1.0,0.454012,0.798975,1.0,0.454012,0.798975,1.0,0.481614,0.463726,1.0,0.481614,0.463726,1.0,0.519908,0.619169,1.0,0.481559,0.687122,1.0,0.481559,0.687122,1.0
|
||||
0.460923,0.459631,1.0,0.460397,0.319693,1.0,0.460573,0.366339,1.0,0.460222,0.273047,1.0,0.464731,0.206298,1.0,0.470939,0.221225,1.0,0.470939,0.221225,1.0,0.458577,0.223852,1.0,0.458577,0.223852,1.0,0.444853,0.273082,1.0,0.429485,0.273118,1.0,0.401884,0.354720,1.0,0.385030,0.403834,1.0,0.380647,0.410960,1.0,0.382612,0.417597,1.0,0.381630,0.417946,1.0,0.381433,0.415850,1.0,0.380254,0.417597,1.0,0.377307,0.416898,1.0,0.378879,0.415850,1.0,0.377896,0.417946,1.0,0.381237,0.418295,1.0,0.381630,0.415850,1.0,0.377307,0.417946,1.0,0.381237,0.418994,1.0,0.380844,0.415501,1.0,0.380451,0.416898,1.0,0.377896,0.417946,1.0,0.477796,0.272999,1.0,0.495371,0.272950,1.0,0.516840,0.354698,1.0,0.510784,0.251222,1.0,0.510933,0.245911,1.0,0.516181,0.225132,1.0,0.517373,0.214531,1.0,0.509979,0.232341,1.0,0.505924,0.216651,1.0,0.506640,0.219195,1.0,0.507594,0.228101,1.0,0.509264,0.219619,1.0,0.507117,0.221740,1.0,0.513557,0.232341,1.0,0.508071,0.229796,1.0,0.507355,0.224284,1.0,0.513796,0.234461,1.0,0.509741,0.233613,1.0,0.509741,0.232765,1.0,0.440233,0.461003,1.0,0.440233,0.461003,1.0,0.469277,0.646331,1.0,0.458667,0.793538,1.0,0.458667,0.793538,1.0,0.481614,0.458260,1.0,0.481614,0.458260,1.0,0.509159,0.624539,1.0,0.461674,0.687186,1.0,0.461674,0.687186,1.0
|
||||
0.463156,0.455573,1.0,0.460899,0.318704,1.0,0.461651,0.364327,1.0,0.460147,0.273081,1.0,0.464737,0.209038,1.0,0.470883,0.223964,1.0,0.470883,0.223964,1.0,0.458532,0.226512,1.0,0.458532,0.226512,1.0,0.444827,0.274384,1.0,0.429508,0.275688,1.0,0.411074,0.354697,1.0,0.398822,0.403934,1.0,0.395839,0.411710,1.0,0.399898,0.422066,1.0,0.397957,0.423948,1.0,0.394603,0.418928,1.0,0.394250,0.419869,1.0,0.393015,0.418928,1.0,0.394603,0.418928,1.0,0.394427,0.422380,1.0,0.394250,0.416418,1.0,0.398310,0.424576,1.0,0.399192,0.427400,1.0,0.397251,0.426144,1.0,0.398310,0.425204,1.0,0.397074,0.426458,1.0,0.397074,0.426772,1.0,0.475470,0.273022,1.0,0.490794,0.272963,1.0,0.506078,0.335747,1.0,0.518359,0.242946,1.0,0.516947,0.233306,1.0,0.517821,0.216985,1.0,0.519133,0.206105,1.0,0.518259,0.210769,1.0,0.510171,0.200665,1.0,0.507111,0.195225,1.0,0.514980,0.216208,1.0,0.507330,0.205717,1.0,0.507548,0.206494,1.0,0.512794,0.220483,1.0,0.505799,0.210769,1.0,0.507111,0.213100,1.0,0.509953,0.225146,1.0,0.505581,0.216208,1.0,0.506018,0.217374,1.0,0.443245,0.458263,1.0,0.443245,0.458263,1.0,0.461688,0.651812,1.0,0.470812,0.812589,1.0,0.470812,0.812589,1.0,0.483067,0.452883,1.0,0.483067,0.452883,1.0,0.496943,0.638110,1.0,0.452467,0.708960,1.0,0.452467,0.708960,1.0
|
||||
0.463156,0.455573,1.0,0.460899,0.318704,1.0,0.461651,0.364327,1.0,0.460147,0.273081,1.0,0.464737,0.209038,1.0,0.470883,0.223964,1.0,0.470883,0.223964,1.0,0.458532,0.226512,1.0,0.458532,0.226512,1.0,0.444827,0.274384,1.0,0.429508,0.275688,1.0,0.411074,0.354697,1.0,0.398822,0.403934,1.0,0.395839,0.411710,1.0,0.399898,0.422066,1.0,0.397957,0.423948,1.0,0.394603,0.418928,1.0,0.394250,0.419869,1.0,0.393015,0.418928,1.0,0.394603,0.418928,1.0,0.394427,0.422380,1.0,0.394250,0.416418,1.0,0.398310,0.424576,1.0,0.399192,0.427400,1.0,0.397251,0.426144,1.0,0.398310,0.425204,1.0,0.397074,0.426458,1.0,0.397074,0.426772,1.0,0.475470,0.273022,1.0,0.490794,0.272963,1.0,0.506078,0.335747,1.0,0.518359,0.242946,1.0,0.516947,0.233306,1.0,0.517821,0.216985,1.0,0.519133,0.206105,1.0,0.518259,0.210769,1.0,0.510171,0.200665,1.0,0.507111,0.195225,1.0,0.514980,0.216208,1.0,0.507330,0.205717,1.0,0.507548,0.206494,1.0,0.512794,0.220483,1.0,0.505799,0.210769,1.0,0.507111,0.213100,1.0,0.509953,0.225146,1.0,0.505581,0.216208,1.0,0.506018,0.217374,1.0,0.443245,0.458263,1.0,0.443245,0.458263,1.0,0.461688,0.651812,1.0,0.470812,0.812589,1.0,0.470812,0.812589,1.0,0.483067,0.452883,1.0,0.483067,0.452883,1.0,0.496943,0.638110,1.0,0.452467,0.708960,1.0,0.452467,0.708960,1.0
|
||||
0.461673,0.466412,1.0,0.460553,0.327454,1.0,0.460927,0.373774,1.0,0.460180,0.281135,1.0,0.464729,0.222539,1.0,0.470859,0.229376,1.0,0.470859,0.229376,1.0,0.458532,0.229406,1.0,0.458532,0.229406,1.0,0.444844,0.285186,1.0,0.429508,0.289236,1.0,0.417226,0.357463,1.0,0.411040,0.425597,1.0,0.412005,0.435421,1.0,0.411530,0.427545,1.0,0.409789,0.431202,1.0,0.407890,0.431483,1.0,0.405517,0.448925,1.0,0.405200,0.451456,1.0,0.408523,0.440204,1.0,0.405833,0.449207,1.0,0.404726,0.451175,1.0,0.409315,0.448362,1.0,0.409315,0.447237,1.0,0.414694,0.448362,1.0,0.408840,0.453144,1.0,0.408048,0.453144,1.0,0.405358,0.453426,1.0,0.477003,0.278415,1.0,0.493826,0.275695,1.0,0.498500,0.319367,1.0,0.518338,0.232210,1.0,0.518848,0.226826,1.0,0.521005,0.212263,1.0,0.513674,0.187736,1.0,0.520573,0.210347,1.0,0.520573,0.201532,1.0,0.513243,0.186203,1.0,0.517123,0.211496,1.0,0.515183,0.201916,1.0,0.510872,0.192718,1.0,0.513243,0.216862,1.0,0.510656,0.207664,1.0,0.509363,0.204215,1.0,0.509579,0.221844,1.0,0.507207,0.214180,1.0,0.505698,0.210731,1.0,0.441721,0.466447,1.0,0.441721,0.466447,1.0,0.460153,0.662633,1.0,0.472430,0.818135,1.0,0.472430,0.818135,1.0,0.481625,0.466377,1.0,0.481625,0.466377,1.0,0.484686,0.643535,1.0,0.447907,0.733537,1.0,0.447907,0.733537,1.0
|
||||
0.460154,0.477365,1.0,0.461317,0.340420,1.0,0.460929,0.386068,1.0,0.461705,0.294771,1.0,0.464745,0.234859,1.0,0.470895,0.242960,1.0,0.470895,0.242960,1.0,0.458535,0.242969,1.0,0.458535,0.242969,1.0,0.447865,0.296181,1.0,0.434025,0.297592,1.0,0.423295,0.379139,1.0,0.421871,0.441890,1.0,0.423647,0.464748,1.0,0.418809,0.447236,1.0,0.423302,0.454609,1.0,0.423820,0.470893,1.0,0.423302,0.472121,1.0,0.423129,0.472736,1.0,0.421055,0.470585,1.0,0.422265,0.471200,1.0,0.421228,0.465977,1.0,0.420709,0.470585,1.0,0.420709,0.470893,1.0,0.420018,0.470279,1.0,0.422092,0.471200,1.0,0.416735,0.470893,1.0,0.413624,0.473351,1.0,0.477796,0.292050,1.0,0.493886,0.289328,1.0,0.506121,0.308353,1.0,0.512249,0.248356,1.0,0.512733,0.239741,1.0,0.513852,0.200967,1.0,0.509238,0.201464,1.0,0.514970,0.203701,1.0,0.509098,0.207181,1.0,0.508259,0.201464,1.0,0.516368,0.215631,1.0,0.511474,0.212152,1.0,0.508539,0.207181,1.0,0.517906,0.217123,1.0,0.510496,0.216874,1.0,0.510496,0.217371,1.0,0.519304,0.219359,1.0,0.510216,0.215631,1.0,0.506302,0.223088,1.0,0.440216,0.477346,1.0,0.440216,0.477346,1.0,0.458621,0.662667,1.0,0.477015,0.834355,1.0,0.477015,0.834355,1.0,0.480091,0.477384,1.0,0.480091,0.477384,1.0,0.472380,0.659966,1.0,0.440235,0.766239,1.0,0.440235,0.766239,1.0
|
||||
0.457103,0.499184,1.0,0.462830,0.362308,1.0,0.460921,0.407934,1.0,0.464739,0.316683,1.0,0.464734,0.252545,1.0,0.470896,0.248584,1.0,0.470896,0.248584,1.0,0.458529,0.251187,1.0,0.458529,0.251187,1.0,0.449430,0.319340,1.0,0.434121,0.321997,1.0,0.423434,0.401009,1.0,0.426423,0.469155,1.0,0.424056,0.496114,1.0,0.424056,0.492536,1.0,0.424895,0.477631,1.0,0.424392,0.473755,1.0,0.424224,0.492536,1.0,0.424056,0.488065,1.0,0.424727,0.490449,1.0,0.424559,0.488661,1.0,0.424895,0.489257,1.0,0.423218,0.492238,1.0,0.423721,0.492238,1.0,0.423553,0.491940,1.0,0.423889,0.494325,1.0,0.423889,0.492834,1.0,0.422547,0.492238,1.0,0.480065,0.315315,1.0,0.495392,0.313947,1.0,0.507685,0.313766,1.0,0.509274,0.275757,1.0,0.513381,0.254205,1.0,0.514081,0.249544,1.0,0.505954,0.237737,1.0,0.505167,0.252806,1.0,0.503682,0.244262,1.0,0.507177,0.243485,1.0,0.504468,0.253428,1.0,0.504206,0.245039,1.0,0.505429,0.244572,1.0,0.502021,0.254049,1.0,0.503856,0.245194,1.0,0.505429,0.246903,1.0,0.501934,0.253893,1.0,0.505255,0.238669,1.0,0.504992,0.253893,1.0,0.438716,0.499195,1.0,0.438716,0.499195,1.0,0.458608,0.673629,1.0,0.472465,0.839910,1.0,0.472465,0.839910,1.0,0.475491,0.499172,1.0,0.475491,0.499172,1.0,0.463210,0.665491,1.0,0.435701,0.771753,1.0,0.435701,0.771753,1.0
|
||||
0.454796,0.511457,1.0,0.461130,0.367405,1.0,0.459018,0.415422,1.0,0.463241,0.319387,1.0,0.463931,0.255201,1.0,0.470800,0.248391,1.0,0.470800,0.248391,1.0,0.455545,0.251084,1.0,0.455545,0.251084,1.0,0.448660,0.327496,1.0,0.434079,0.335606,1.0,0.427955,0.436518,1.0,0.463211,0.469307,1.0,0.471495,0.489809,1.0,0.486993,0.461883,1.0,0.487203,0.461511,1.0,0.484270,0.461883,1.0,0.488669,0.460766,1.0,0.485946,0.498745,1.0,0.481129,0.472309,1.0,0.485318,0.500234,1.0,0.486575,0.495394,1.0,0.480501,0.493905,1.0,0.484690,0.499490,1.0,0.485527,0.497628,1.0,0.477149,0.493532,1.0,0.486575,0.458532,1.0,0.486575,0.501724,1.0,0.479322,0.316567,1.0,0.495403,0.313746,1.0,0.509214,0.319334,1.0,0.519884,0.294897,1.0,0.522979,0.285068,1.0,0.514327,0.279897,1.0,0.519789,0.277249,1.0,0.517873,0.287968,1.0,0.517731,0.287589,1.0,0.520427,0.287337,1.0,0.517873,0.287842,1.0,0.519789,0.285194,1.0,0.520072,0.286076,1.0,0.517660,0.287716,1.0,0.519789,0.285194,1.0,0.520781,0.292381,1.0,0.528156,0.296164,1.0,0.517448,0.287337,1.0,0.520854,0.293894,1.0,0.435647,0.510137,1.0,0.435647,0.510137,1.0,0.458639,0.668204,1.0,0.470864,0.828931,1.0,0.470864,0.828931,1.0,0.473944,0.512778,1.0,0.473944,0.512778,1.0,0.458562,0.665471,1.0,0.435680,0.771750,1.0,0.435680,0.771750,1.0
|
||||
0.455574,0.497824,1.0,0.461302,0.361805,1.0,0.459392,0.407145,1.0,0.463211,0.316466,1.0,0.455589,0.238911,1.0,0.461668,0.226765,1.0,0.461668,0.226765,1.0,0.447821,0.229518,1.0,0.447821,0.229518,1.0,0.447868,0.321973,1.0,0.432526,0.327480,1.0,0.424927,0.417469,1.0,0.424928,0.469267,1.0,0.428683,0.465330,1.0,0.421923,0.479350,1.0,0.422862,0.479350,1.0,0.425115,0.486694,1.0,0.424364,0.491033,1.0,0.422674,0.493704,1.0,0.424364,0.488696,1.0,0.422111,0.497042,1.0,0.423613,0.484357,1.0,0.425491,0.489364,1.0,0.422299,0.498044,1.0,0.423050,0.483689,1.0,0.419294,0.495373,1.0,0.424552,0.499379,1.0,0.417792,0.504053,1.0,0.480083,0.308357,1.0,0.496956,0.300249,1.0,0.519978,0.384794,1.0,0.519980,0.357425,1.0,0.513003,0.317381,1.0,0.522693,0.313590,1.0,0.528510,0.309110,1.0,0.516297,0.352183,1.0,0.524828,0.311868,1.0,0.529865,0.308077,1.0,0.518817,0.331164,1.0,0.519205,0.383541,1.0,0.525214,0.317036,1.0,0.516104,0.343914,1.0,0.518623,0.384230,1.0,0.526573,0.316347,1.0,0.522693,0.389054,1.0,0.513778,0.388020,1.0,0.530057,0.307388,1.0,0.437157,0.496434,1.0,0.437157,0.496434,1.0,0.458515,0.662565,1.0,0.469291,0.831652,1.0,0.469291,0.831652,1.0,0.473990,0.499213,1.0,0.473990,0.499213,1.0,0.458623,0.662621,1.0,0.435649,0.766231,1.0,0.435649,0.766231,1.0
|
||||
0.455574,0.497824,1.0,0.461302,0.361805,1.0,0.459392,0.407145,1.0,0.463211,0.316466,1.0,0.455589,0.238911,1.0,0.461668,0.226765,1.0,0.461668,0.226765,1.0,0.447821,0.229518,1.0,0.447821,0.229518,1.0,0.447868,0.321973,1.0,0.432526,0.327480,1.0,0.424927,0.417469,1.0,0.424928,0.469267,1.0,0.428683,0.465330,1.0,0.421923,0.479350,1.0,0.422862,0.479350,1.0,0.425115,0.486694,1.0,0.424364,0.491033,1.0,0.422674,0.493704,1.0,0.424364,0.488696,1.0,0.422111,0.497042,1.0,0.423613,0.484357,1.0,0.425491,0.489364,1.0,0.422299,0.498044,1.0,0.423050,0.483689,1.0,0.419294,0.495373,1.0,0.424552,0.499379,1.0,0.417792,0.504053,1.0,0.480083,0.308357,1.0,0.496956,0.300249,1.0,0.519978,0.384794,1.0,0.519980,0.357425,1.0,0.513003,0.317381,1.0,0.522693,0.313590,1.0,0.528510,0.309110,1.0,0.516297,0.352183,1.0,0.524828,0.311868,1.0,0.529865,0.308077,1.0,0.518817,0.331164,1.0,0.519205,0.383541,1.0,0.525214,0.317036,1.0,0.516104,0.343914,1.0,0.518623,0.384230,1.0,0.526573,0.316347,1.0,0.522693,0.389054,1.0,0.513778,0.388020,1.0,0.530057,0.307388,1.0,0.437157,0.496434,1.0,0.437157,0.496434,1.0,0.458515,0.662565,1.0,0.469291,0.831652,1.0,0.469291,0.831652,1.0,0.473990,0.499213,1.0,0.473990,0.499213,1.0,0.458623,0.662621,1.0,0.435649,0.766231,1.0,0.435649,0.766231,1.0
|
||||
0.458629,0.486891,1.0,0.458657,0.350984,1.0,0.458648,0.396287,1.0,0.458666,0.305682,1.0,0.451697,0.227982,1.0,0.457099,0.207561,1.0,0.457099,0.207561,1.0,0.438678,0.210268,1.0,0.438678,0.210268,1.0,0.441011,0.309801,1.0,0.423356,0.313919,1.0,0.421820,0.398386,1.0,0.423390,0.466365,1.0,0.417106,0.487558,1.0,0.427221,0.468337,1.0,0.423908,0.470506,1.0,0.422861,0.499649,1.0,0.424780,0.489419,1.0,0.421466,0.472987,1.0,0.422164,0.501509,1.0,0.422513,0.477637,1.0,0.423384,0.477018,1.0,0.423210,0.498409,1.0,0.420071,0.508950,1.0,0.423384,0.479497,1.0,0.424431,0.498099,1.0,0.426872,0.487558,1.0,0.417978,0.518251,1.0,0.476280,0.300243,1.0,0.493893,0.294804,1.0,0.523005,0.398285,1.0,0.506104,0.406563,1.0,0.514614,0.388920,1.0,0.511032,0.390619,1.0,0.510794,0.400381,1.0,0.513420,0.392741,1.0,0.511510,0.423301,1.0,0.511271,0.410143,1.0,0.522255,0.409294,1.0,0.513181,0.420754,1.0,0.514375,0.410568,1.0,0.524641,0.417783,1.0,0.515091,0.424574,1.0,0.516285,0.414812,1.0,0.524401,0.421603,1.0,0.514853,0.424574,1.0,0.516524,0.419906,1.0,0.437188,0.485600,1.0,0.437188,0.485600,1.0,0.452466,0.659914,1.0,0.460236,0.815278,1.0,0.460236,0.815278,1.0,0.480071,0.488182,1.0,0.480071,0.488182,1.0,0.472394,0.643557,1.0,0.446398,0.733637,1.0,0.446398,0.733637,1.0
|
||||
0.458653,0.484184,1.0,0.456334,0.342248,1.0,0.457107,0.389560,1.0,0.455560,0.294936,1.0,0.444815,0.217117,1.0,0.450955,0.196711,1.0,0.450955,0.196711,1.0,0.435564,0.202054,1.0,0.435564,0.202054,1.0,0.437925,0.303019,1.0,0.420290,0.311103,1.0,0.418767,0.395637,1.0,0.423299,0.447506,1.0,0.422526,0.460899,1.0,0.416592,0.447868,1.0,0.420955,0.443524,1.0,0.423747,0.487893,1.0,0.422526,0.486031,1.0,0.424445,0.460279,1.0,0.427761,0.475792,1.0,0.422526,0.486031,1.0,0.425318,0.459657,1.0,0.426714,0.477964,1.0,0.422351,0.485720,1.0,0.423573,0.484480,1.0,0.424271,0.486962,1.0,0.419908,0.487272,1.0,0.423922,0.484169,1.0,0.472412,0.293449,1.0,0.489265,0.291961,1.0,0.519905,0.379206,1.0,0.518374,0.463733,1.0,0.511501,0.470875,1.0,0.504922,0.482194,1.0,0.503436,0.495401,1.0,0.515534,0.498419,1.0,0.512350,0.514267,1.0,0.513199,0.515021,1.0,0.519142,0.501816,1.0,0.520628,0.508230,1.0,0.518081,0.514644,1.0,0.524448,0.499552,1.0,0.523177,0.507098,1.0,0.522115,0.510871,1.0,0.525297,0.493892,1.0,0.524448,0.505589,1.0,0.522328,0.510871,1.0,0.435690,0.485534,1.0,0.435690,0.485534,1.0,0.449416,0.665406,1.0,0.460196,0.834306,1.0,0.460196,0.834306,1.0,0.481617,0.482833,1.0,0.481617,0.482833,1.0,0.490802,0.630045,1.0,0.446337,0.703585,1.0,0.446337,0.703585,1.0
|
||||
0.459373,0.484141,1.0,0.451912,0.344156,1.0,0.454399,0.390818,1.0,0.449426,0.297494,1.0,0.443260,0.211678,1.0,0.449460,0.191292,1.0,0.449460,0.191292,1.0,0.434115,0.191304,1.0,0.434115,0.191304,1.0,0.431798,0.304275,1.0,0.414171,0.311055,1.0,0.411109,0.387453,1.0,0.420284,0.441894,1.0,0.429476,0.456488,1.0,0.429634,0.463232,1.0,0.427579,0.464356,1.0,0.427579,0.462950,1.0,0.422838,0.469131,1.0,0.424418,0.469413,1.0,0.426473,0.464918,1.0,0.424102,0.469975,1.0,0.424260,0.469694,1.0,0.426473,0.476157,1.0,0.426315,0.475594,1.0,0.425050,0.476719,1.0,0.426789,0.477281,1.0,0.427737,0.463794,1.0,0.422838,0.476999,1.0,0.467065,0.294750,1.0,0.484704,0.292005,1.0,0.510727,0.373809,1.0,0.518366,0.469319,1.0,0.511155,0.483534,1.0,0.509385,0.500443,1.0,0.510934,0.514206,1.0,0.519339,0.505948,1.0,0.520885,0.520497,1.0,0.521552,0.528361,1.0,0.523760,0.504375,1.0,0.525312,0.517351,1.0,0.525531,0.525609,1.0,0.526859,0.499263,1.0,0.527302,0.509881,1.0,0.526417,0.517351,1.0,0.527521,0.493758,1.0,0.528849,0.503981,1.0,0.527302,0.507914,1.0,0.437126,0.488224,1.0,0.437126,0.488224,1.0,0.454030,0.670915,1.0,0.464729,0.837175,1.0,0.464729,0.837175,1.0,0.481620,0.480058,1.0,0.481620,0.480058,1.0,0.498466,0.632698,1.0,0.446290,0.638135,1.0,0.446290,0.638135,1.0
|
||||
0.458617,0.484215,1.0,0.450572,0.346217,1.0,0.453254,0.392216,1.0,0.447891,0.300218,1.0,0.441805,0.215742,1.0,0.450931,0.196643,1.0,0.450931,0.196643,1.0,0.434118,0.193919,1.0,0.434118,0.193919,1.0,0.429530,0.305656,1.0,0.411169,0.311094,1.0,0.411131,0.414710,1.0,0.427947,0.422920,1.0,0.451029,0.429810,1.0,0.418743,0.413466,1.0,0.418529,0.416506,1.0,0.420453,0.411945,1.0,0.418957,0.416887,1.0,0.418743,0.416887,1.0,0.418957,0.416506,1.0,0.418957,0.417267,1.0,0.418957,0.417267,1.0,0.419170,0.416127,1.0,0.419170,0.416887,1.0,0.448463,0.421448,1.0,0.419812,0.412325,1.0,0.419384,0.415367,1.0,0.418957,0.416887,1.0,0.465524,0.297487,1.0,0.483158,0.294756,1.0,0.503056,0.368345,1.0,0.513775,0.425682,1.0,0.509898,0.440410,1.0,0.508551,0.449995,1.0,0.508551,0.457782,1.0,0.515121,0.449995,1.0,0.517649,0.457782,1.0,0.518323,0.463474,1.0,0.518660,0.445802,1.0,0.520682,0.454188,1.0,0.520682,0.460179,1.0,0.522031,0.443406,1.0,0.523375,0.449695,1.0,0.523547,0.456884,1.0,0.523375,0.440709,1.0,0.524724,0.445502,1.0,0.524557,0.449396,1.0,0.435680,0.491030,1.0,0.435680,0.491030,1.0,0.457094,0.676305,1.0,0.463242,0.839814,1.0,0.463242,0.839814,1.0,0.481555,0.477401,1.0,0.481555,0.477401,1.0,0.506139,0.638119,1.0,0.457060,0.594480,1.0,0.457060,0.594480,1.0
|
||||
0.458575,0.493766,1.0,0.450577,0.348663,1.0,0.453243,0.397031,1.0,0.447911,0.300295,1.0,0.443312,0.211672,1.0,0.454000,0.193927,1.0,0.454000,0.193927,1.0,0.435602,0.188584,1.0,0.435602,0.188584,1.0,0.430259,0.303002,1.0,0.412608,0.305708,1.0,0.409562,0.409290,1.0,0.409603,0.403859,1.0,0.411328,0.407775,1.0,0.414753,0.411580,1.0,0.412826,0.415385,1.0,0.416893,0.429464,1.0,0.408118,0.424517,1.0,0.410044,0.424517,1.0,0.407690,0.421093,1.0,0.407476,0.424517,1.0,0.416893,0.440879,1.0,0.405763,0.430606,1.0,0.404051,0.432888,1.0,0.416893,0.442020,1.0,0.407047,0.424897,1.0,0.407261,0.426039,1.0,0.408118,0.425658,1.0,0.465548,0.298941,1.0,0.483185,0.297586,1.0,0.509266,0.379346,1.0,0.498456,0.349309,1.0,0.486743,0.340086,1.0,0.483252,0.343190,1.0,0.477821,0.349051,1.0,0.486355,0.356981,1.0,0.487519,0.358706,1.0,0.486937,0.367326,1.0,0.491204,0.360430,1.0,0.491204,0.368705,1.0,0.501678,0.371464,1.0,0.497023,0.367670,1.0,0.511375,0.382497,1.0,0.511375,0.382153,1.0,0.511957,0.382153,1.0,0.512151,0.385601,1.0,0.513896,0.384566,1.0,0.435576,0.499214,1.0,0.435576,0.499214,1.0,0.458547,0.681766,1.0,0.460196,0.837040,1.0,0.460196,0.837040,1.0,0.481574,0.488318,1.0,0.481574,0.488318,1.0,0.507590,0.643602,1.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0
|
||||
0.458575,0.493766,1.0,0.450577,0.348663,1.0,0.453243,0.397031,1.0,0.447911,0.300295,1.0,0.443312,0.211672,1.0,0.454000,0.193927,1.0,0.454000,0.193927,1.0,0.435602,0.188584,1.0,0.435602,0.188584,1.0,0.430259,0.303002,1.0,0.412608,0.305708,1.0,0.409562,0.409290,1.0,0.409603,0.403859,1.0,0.411328,0.407775,1.0,0.414753,0.411580,1.0,0.412826,0.415385,1.0,0.416893,0.429464,1.0,0.408118,0.424517,1.0,0.410044,0.424517,1.0,0.407690,0.421093,1.0,0.407476,0.424517,1.0,0.416893,0.440879,1.0,0.405763,0.430606,1.0,0.404051,0.432888,1.0,0.416893,0.442020,1.0,0.407047,0.424897,1.0,0.407261,0.426039,1.0,0.408118,0.425658,1.0,0.465548,0.298941,1.0,0.483185,0.297586,1.0,0.509266,0.379346,1.0,0.498456,0.349309,1.0,0.486743,0.340086,1.0,0.483252,0.343190,1.0,0.477821,0.349051,1.0,0.486355,0.356981,1.0,0.487519,0.358706,1.0,0.486937,0.367326,1.0,0.491204,0.360430,1.0,0.491204,0.368705,1.0,0.501678,0.371464,1.0,0.497023,0.367670,1.0,0.511375,0.382497,1.0,0.511375,0.382153,1.0,0.511957,0.382153,1.0,0.512151,0.385601,1.0,0.513896,0.384566,1.0,0.435576,0.499214,1.0,0.435576,0.499214,1.0,0.458547,0.681766,1.0,0.460196,0.837040,1.0,0.460196,0.837040,1.0,0.481574,0.488318,1.0,0.481574,0.488318,1.0,0.507590,0.643602,1.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0
|
||||
0.457069,0.493717,1.0,0.450229,0.346594,1.0,0.452509,0.395635,1.0,0.447949,0.297554,1.0,0.445568,0.214437,1.0,0.455555,0.193953,1.0,0.455555,0.193953,1.0,0.435674,0.188617,1.0,0.435674,0.188617,1.0,0.431049,0.298914,1.0,0.414149,0.300274,1.0,0.407997,0.365622,1.0,0.406499,0.422742,1.0,0.405732,0.438675,1.0,0.414619,0.454717,1.0,0.406142,0.421418,1.0,0.413388,0.428952,1.0,0.412978,0.429681,1.0,0.406279,0.420931,1.0,0.409833,0.431140,1.0,0.410380,0.436001,1.0,0.415302,0.459092,1.0,0.406689,0.430897,1.0,0.407099,0.459092,1.0,0.415576,0.458363,1.0,0.405595,0.459821,1.0,0.411474,0.464682,1.0,0.412978,0.466384,1.0,0.465566,0.296179,1.0,0.483183,0.294804,1.0,0.515326,0.354794,1.0,0.532193,0.343877,1.0,0.529208,0.324773,1.0,0.523396,0.332068,1.0,0.523396,0.331459,1.0,0.528010,0.331764,1.0,0.528693,0.331459,1.0,0.528693,0.333587,1.0,0.529891,0.336322,1.0,0.529036,0.331156,1.0,0.528693,0.335715,1.0,0.530234,0.336019,1.0,0.529891,0.333587,1.0,0.528010,0.333283,1.0,0.534505,0.335106,1.0,0.530406,0.336019,1.0,0.525276,0.331156,1.0,0.434093,0.496479,1.0,0.434093,0.496479,1.0,0.458556,0.681780,1.0,0.460223,0.836990,1.0,0.460223,0.836990,1.0,0.480045,0.490955,1.0,0.480045,0.490955,1.0,0.507654,0.651794,1.0,0.506082,0.597336,1.0,0.506082,0.597336,1.0
|
||||
0.450960,0.485602,1.0,0.448671,0.342443,1.0,0.449434,0.390163,1.0,0.447907,0.294723,1.0,0.445606,0.210336,1.0,0.455572,0.188558,1.0,0.455572,0.188558,1.0,0.435703,0.185884,1.0,0.435703,0.185884,1.0,0.431795,0.294830,1.0,0.415683,0.294936,1.0,0.401902,0.368414,1.0,0.397302,0.425598,1.0,0.409050,0.446174,1.0,0.402018,0.432251,1.0,0.398661,0.441059,1.0,0.395145,0.445037,1.0,0.395145,0.452141,1.0,0.392588,0.452141,1.0,0.396104,0.454698,1.0,0.392747,0.455835,1.0,0.397063,0.455267,1.0,0.398502,0.457256,1.0,0.395944,0.458676,1.0,0.397383,0.457540,1.0,0.396743,0.459244,1.0,0.396903,0.460949,1.0,0.397383,0.464644,1.0,0.465502,0.293345,1.0,0.483096,0.291968,1.0,0.516877,0.341076,1.0,0.544495,0.365659,1.0,0.540000,0.361534,1.0,0.540479,0.360681,1.0,0.540797,0.360396,1.0,0.538880,0.361819,1.0,0.542078,0.359257,1.0,0.542719,0.358973,1.0,0.541760,0.357834,1.0,0.542240,0.359543,1.0,0.542562,0.359257,1.0,0.541922,0.357550,1.0,0.542401,0.359257,1.0,0.541922,0.361250,1.0,0.542240,0.356981,1.0,0.542562,0.360965,1.0,0.542562,0.366942,1.0,0.429499,0.491061,1.0,0.429499,0.491061,1.0,0.457017,0.684511,1.0,0.460201,0.837017,1.0,0.460201,0.837017,1.0,0.472421,0.480144,1.0,0.472421,0.480144,1.0,0.507707,0.662644,1.0,0.521432,0.572735,1.0,0.521432,0.572735,1.0
|
||||
0.450178,0.490949,1.0,0.448461,0.343739,1.0,0.449033,0.392809,1.0,0.447889,0.294669,1.0,0.446340,0.206176,1.0,0.457086,0.185781,1.0,0.457086,0.185781,1.0,0.437195,0.183130,1.0,0.437195,0.183130,1.0,0.430257,0.294771,1.0,0.412624,0.294872,1.0,0.395746,0.381918,1.0,0.381991,0.444760,1.0,0.380111,0.459756,1.0,0.386192,0.463810,1.0,0.386952,0.459756,1.0,0.387141,0.459756,1.0,0.385431,0.459756,1.0,0.382582,0.464147,1.0,0.385621,0.463134,1.0,0.384102,0.460769,1.0,0.381252,0.466512,1.0,0.383721,0.465161,1.0,0.381252,0.464147,1.0,0.381442,0.467863,1.0,0.378212,0.470903,1.0,0.376502,0.472254,1.0,0.378022,0.477996,1.0,0.465511,0.293331,1.0,0.483133,0.291992,1.0,0.521422,0.343858,1.0,0.549052,0.381954,1.0,0.566115,0.392327,1.0,0.568588,0.386048,1.0,0.559229,0.392013,1.0,0.557641,0.401431,1.0,0.557464,0.401431,1.0,0.558344,0.397979,1.0,0.561349,0.405199,1.0,0.560109,0.406141,1.0,0.557286,0.408025,1.0,0.562406,0.405199,1.0,0.561698,0.412734,1.0,0.562229,0.412734,1.0,0.567000,0.415559,1.0,0.567000,0.411792,1.0,0.553578,0.415873,1.0,0.427935,0.493698,1.0,0.427935,0.493698,1.0,0.452491,0.684424,1.0,0.460150,0.834302,1.0,0.460150,0.834302,1.0,0.472421,0.488199,1.0,0.472421,0.488199,1.0,0.507649,0.662762,1.0,0.535255,0.640972,1.0,0.535255,0.640972,1.0
|
||||
0.447912,0.488259,1.0,0.447849,0.343156,1.0,0.447870,0.391524,1.0,0.447828,0.294789,1.0,0.446335,0.204790,1.0,0.457095,0.185668,1.0,0.457095,0.185668,1.0,0.437210,0.183028,1.0,0.437210,0.183028,1.0,0.429449,0.296134,1.0,0.411069,0.297480,1.0,0.383506,0.395667,1.0,0.361987,0.469158,1.0,0.356470,0.500656,1.0,0.359641,0.483346,1.0,0.353527,0.504682,1.0,0.355791,0.503877,1.0,0.353527,0.507500,1.0,0.352847,0.505487,1.0,0.355112,0.504280,1.0,0.352168,0.505085,1.0,0.352395,0.507097,1.0,0.350583,0.505085,1.0,0.357377,0.526018,1.0,0.358056,0.526420,1.0,0.350583,0.506293,1.0,0.351715,0.507097,1.0,0.364396,0.511526,1.0,0.465481,0.293447,1.0,0.483134,0.292106,1.0,0.532234,0.373769,1.0,0.578172,0.439158,1.0,0.580500,0.444511,1.0,0.576802,0.437933,1.0,0.587161,0.442757,1.0,0.597276,0.438372,1.0,0.596781,0.444511,1.0,0.599990,0.444950,1.0,0.600479,0.448896,1.0,0.599250,0.449335,1.0,0.583708,0.463806,1.0,0.600729,0.459859,1.0,0.593573,0.472138,1.0,0.586422,0.473454,1.0,0.600479,0.469945,1.0,0.596286,0.474331,1.0,0.588891,0.477839,1.0,0.424895,0.490946,1.0,0.424895,0.490946,1.0,0.450923,0.684525,1.0,0.460094,0.837000,1.0,0.460094,0.837000,1.0,0.470929,0.485572,1.0,0.470929,0.485572,1.0,0.507733,0.665392,1.0,0.549042,0.749908,1.0,0.549042,0.749908,1.0
|
||||
0.447150,0.490979,1.0,0.447662,0.347898,1.0,0.447492,0.395592,1.0,0.447833,0.300205,1.0,0.446346,0.207569,1.0,0.457063,0.185883,1.0,0.457063,0.185883,1.0,0.437158,0.185764,1.0,0.437158,0.185764,1.0,0.428715,0.302954,1.0,0.409598,0.305704,1.0,0.371261,0.401150,1.0,0.334393,0.488152,1.0,0.313484,0.518194,1.0,0.313235,0.515086,1.0,0.334464,0.500434,1.0,0.314983,0.513310,1.0,0.320478,0.511534,1.0,0.325223,0.503986,1.0,0.315483,0.512422,1.0,0.318979,0.515086,1.0,0.324224,0.507094,1.0,0.311486,0.524410,1.0,0.315233,0.521746,1.0,0.323225,0.509314,1.0,0.313984,0.525742,1.0,0.312236,0.523966,1.0,0.324723,0.505762,1.0,0.466229,0.297555,1.0,0.484625,0.294906,1.0,0.533734,0.382118,1.0,0.579734,0.469172,1.0,0.576292,0.487676,1.0,0.579578,0.502281,1.0,0.585052,0.512019,1.0,0.592172,0.499847,1.0,0.602307,0.503256,1.0,0.606964,0.507637,1.0,0.595187,0.495466,1.0,0.603125,0.499360,1.0,0.609151,0.502281,1.0,0.597104,0.489137,1.0,0.604771,0.492057,1.0,0.608880,0.494006,1.0,0.597922,0.484756,1.0,0.603677,0.484756,1.0,0.606687,0.484269,1.0,0.423404,0.493704,1.0,0.423404,0.493704,1.0,0.449463,0.684600,1.0,0.458646,0.837029,1.0,0.458646,0.837029,1.0,0.470897,0.488254,1.0,0.470897,0.488254,1.0,0.506122,0.670835,1.0,0.541401,0.837034,1.0,0.541401,0.837034,1.0
|
||||
0.447150,0.490979,1.0,0.447662,0.347898,1.0,0.447492,0.395592,1.0,0.447833,0.300205,1.0,0.446346,0.207569,1.0,0.457063,0.185883,1.0,0.457063,0.185883,1.0,0.437158,0.185764,1.0,0.437158,0.185764,1.0,0.428715,0.302954,1.0,0.409598,0.305704,1.0,0.371261,0.401150,1.0,0.334393,0.488152,1.0,0.313484,0.518194,1.0,0.313235,0.515086,1.0,0.334464,0.500434,1.0,0.314983,0.513310,1.0,0.320478,0.511534,1.0,0.325223,0.503986,1.0,0.315483,0.512422,1.0,0.318979,0.515086,1.0,0.324224,0.507094,1.0,0.311486,0.524410,1.0,0.315233,0.521746,1.0,0.323225,0.509314,1.0,0.313984,0.525742,1.0,0.312236,0.523966,1.0,0.324723,0.505762,1.0,0.466229,0.297555,1.0,0.484625,0.294906,1.0,0.533734,0.382118,1.0,0.579734,0.469172,1.0,0.576292,0.487676,1.0,0.579578,0.502281,1.0,0.585052,0.512019,1.0,0.592172,0.499847,1.0,0.602307,0.503256,1.0,0.606964,0.507637,1.0,0.595187,0.495466,1.0,0.603125,0.499360,1.0,0.609151,0.502281,1.0,0.597104,0.489137,1.0,0.604771,0.492057,1.0,0.608880,0.494006,1.0,0.597922,0.484756,1.0,0.603677,0.484756,1.0,0.606687,0.484269,1.0,0.423404,0.493704,1.0,0.423404,0.493704,1.0,0.449463,0.684600,1.0,0.458646,0.837029,1.0,0.458646,0.837029,1.0,0.470897,0.488254,1.0,0.470897,0.488254,1.0,0.506122,0.670835,1.0,0.541401,0.837034,1.0,0.541401,0.837034,1.0
|
||||
0.450970,0.495073,1.0,0.448705,0.357048,1.0,0.449460,0.403057,1.0,0.447949,0.311040,1.0,0.447133,0.221163,1.0,0.457056,0.199388,1.0,0.457056,0.199388,1.0,0.437126,0.199355,1.0,0.437126,0.199355,1.0,0.429519,0.312380,1.0,0.411088,0.313720,1.0,0.362097,0.387476,1.0,0.312985,0.455545,1.0,0.306678,0.470336,1.0,0.310740,0.458153,1.0,0.290941,0.479361,1.0,0.291448,0.479813,1.0,0.287387,0.478007,1.0,0.287387,0.485679,1.0,0.289671,0.486581,1.0,0.282310,0.496058,1.0,0.289418,0.501022,1.0,0.281041,0.501022,1.0,0.281295,0.501924,1.0,0.288910,0.501473,1.0,0.279518,0.500570,1.0,0.280787,0.501473,1.0,0.284341,0.501022,1.0,0.467065,0.308351,1.0,0.486181,0.305663,1.0,0.521437,0.379175,1.0,0.550563,0.444735,1.0,0.566750,0.481964,1.0,0.550203,0.451486,1.0,0.560172,0.464953,1.0,0.570141,0.475584,1.0,0.552198,0.482672,1.0,0.570734,0.484444,1.0,0.556984,0.483381,1.0,0.554391,0.488343,1.0,0.553594,0.488697,1.0,0.558974,0.483027,1.0,0.553594,0.492950,1.0,0.553594,0.492595,1.0,0.570937,0.477356,1.0,0.553594,0.494013,1.0,0.563359,0.485507,1.0,0.429498,0.499141,1.0,0.429498,0.499141,1.0,0.450977,0.687241,1.0,0.458651,0.837182,1.0,0.458651,0.837182,1.0,0.472443,0.491006,1.0,0.472443,0.491006,1.0,0.495316,0.684609,1.0,0.509233,0.848030,1.0,0.509233,0.848030,1.0
|
||||
0.457857,0.503275,1.0,0.452702,0.359135,1.0,0.454421,0.407182,1.0,0.450984,0.311089,1.0,0.448647,0.225221,1.0,0.455543,0.204741,1.0,0.455543,0.204741,1.0,0.435705,0.204756,1.0,0.435705,0.204756,1.0,0.432586,0.312428,1.0,0.414188,0.313768,1.0,0.355896,0.362993,1.0,0.302236,0.379202,1.0,0.291394,0.363928,1.0,0.285712,0.382868,1.0,0.290210,0.389601,1.0,0.285239,0.386234,1.0,0.288079,0.394231,1.0,0.292814,0.390864,1.0,0.285712,0.386656,1.0,0.288553,0.400123,1.0,0.288790,0.397598,1.0,0.294708,0.395915,1.0,0.288553,0.401386,1.0,0.290447,0.399702,1.0,0.294708,0.395915,1.0,0.290447,0.399702,1.0,0.293287,0.402648,1.0,0.469370,0.309720,1.0,0.487756,0.308351,1.0,0.509226,0.387408,1.0,0.483155,0.357512,1.0,0.465494,0.342493,1.0,0.465132,0.341527,1.0,0.466037,0.357952,1.0,0.466581,0.344747,1.0,0.465856,0.343781,1.0,0.467668,0.348612,1.0,0.466581,0.344103,1.0,0.467124,0.345713,1.0,0.468393,0.349256,1.0,0.466762,0.343459,1.0,0.468030,0.344103,1.0,0.468030,0.347324,1.0,0.466581,0.341205,1.0,0.467668,0.343137,1.0,0.467849,0.344425,1.0,0.434124,0.504659,1.0,0.434124,0.504659,1.0,0.452473,0.684525,1.0,0.463233,0.839856,1.0,0.463233,0.839856,1.0,0.481589,0.501890,1.0,0.481589,0.501890,1.0,0.473915,0.673613,1.0,0.472362,0.845302,1.0,0.472362,0.845302,1.0
|
||||
0.458617,0.491012,1.0,0.455159,0.343838,1.0,0.456312,0.392896,1.0,0.454007,0.294780,1.0,0.449388,0.219814,1.0,0.455565,0.202083,1.0,0.455565,0.202083,1.0,0.437128,0.202094,1.0,0.437128,0.202094,1.0,0.437895,0.298868,1.0,0.421783,0.302956,1.0,0.361982,0.322006,1.0,0.325281,0.286603,1.0,0.313615,0.247581,1.0,0.315621,0.247581,1.0,0.307375,0.255902,1.0,0.316067,0.249958,1.0,0.322976,0.271354,1.0,0.320524,0.274920,1.0,0.320747,0.271750,1.0,0.320970,0.270166,1.0,0.318741,0.276505,1.0,0.319410,0.279279,1.0,0.314061,0.264619,1.0,0.310718,0.280467,1.0,0.310272,0.278090,1.0,0.312278,0.280467,1.0,0.311386,0.280071,1.0,0.469326,0.292020,1.0,0.484644,0.289260,1.0,0.495475,0.311107,1.0,0.461683,0.272984,1.0,0.451673,0.245323,1.0,0.451673,0.245033,1.0,0.441559,0.226472,1.0,0.440906,0.226762,1.0,0.441722,0.228212,1.0,0.441069,0.228793,1.0,0.441722,0.227922,1.0,0.441885,0.241263,1.0,0.441069,0.244163,1.0,0.441722,0.227922,1.0,0.442048,0.241843,1.0,0.441559,0.245033,1.0,0.441885,0.227922,1.0,0.442701,0.227922,1.0,0.443190,0.226762,1.0,0.435611,0.491034,1.0,0.435611,0.491034,1.0,0.446357,0.657222,1.0,0.460083,0.834307,1.0,0.460083,0.834307,1.0,0.481624,0.490990,1.0,0.481624,0.490990,1.0,0.458621,0.640953,1.0,0.438676,0.828924,1.0,0.438676,0.828924,1.0
|
||||
0.460142,0.474671,1.0,0.456701,0.323497,1.0,0.457848,0.373888,1.0,0.455554,0.273106,1.0,0.449398,0.206227,1.0,0.457058,0.183086,1.0,0.457058,0.183086,1.0,0.437148,0.183104,1.0,0.437148,0.183104,1.0,0.438696,0.277138,1.0,0.421839,0.281170,1.0,0.360546,0.270362,1.0,0.348182,0.196622,1.0,0.344554,0.189561,1.0,0.338001,0.164254,1.0,0.339357,0.146981,1.0,0.356077,0.163852,1.0,0.338453,0.157827,1.0,0.340035,0.142562,1.0,0.355626,0.167468,1.0,0.342746,0.163852,1.0,0.342972,0.159433,1.0,0.355173,0.176305,1.0,0.345457,0.168271,1.0,0.345909,0.166664,1.0,0.350880,0.190364,1.0,0.339357,0.177510,1.0,0.339357,0.179920,1.0,0.471638,0.272995,1.0,0.487721,0.272885,1.0,0.495464,0.275731,1.0,0.458577,0.229280,1.0,0.460407,0.198229,1.0,0.461697,0.184144,1.0,0.454880,0.178247,1.0,0.449905,0.182833,1.0,0.447326,0.181195,1.0,0.451563,0.178575,1.0,0.449905,0.181851,1.0,0.451379,0.183161,1.0,0.447326,0.181195,1.0,0.450089,0.181851,1.0,0.449905,0.190694,1.0,0.449905,0.190694,1.0,0.450089,0.181523,1.0,0.444193,0.195281,1.0,0.455064,0.179885,1.0,0.437207,0.474693,1.0,0.437207,0.474693,1.0,0.447872,0.640903,1.0,0.460102,0.831663,1.0,0.460102,0.831663,1.0,0.483077,0.474649,1.0,0.483077,0.474649,1.0,0.437209,0.616371,1.0,0.412657,0.817955,1.0,0.412657,0.817955,1.0
|
||||
0.465500,0.466488,1.0,0.460323,0.302934,1.0,0.462049,0.357452,1.0,0.458597,0.248416,1.0,0.441003,0.163931,1.0,0.446372,0.161156,1.0,0.446372,0.161156,1.0,0.435633,0.166706,1.0,0.435633,0.166706,1.0,0.441755,0.249788,1.0,0.424912,0.251161,1.0,0.368180,0.215785,1.0,0.362088,0.131245,1.0,0.377502,0.109229,1.0,0.368900,0.095506,1.0,0.368239,0.096290,1.0,0.350374,0.091585,1.0,0.364930,0.101387,1.0,0.376399,0.082959,1.0,0.349933,0.091977,1.0,0.359196,0.102956,1.0,0.358975,0.112366,1.0,0.349051,0.091585,1.0,0.358975,0.103740,1.0,0.359196,0.103740,1.0,0.348830,0.106092,1.0,0.350374,0.109229,1.0,0.350374,0.108444,1.0,0.473938,0.248375,1.0,0.489279,0.248334,1.0,0.458629,0.188560,1.0,0.397351,0.123147,1.0,0.390822,0.127976,1.0,0.382664,0.109330,1.0,0.371593,0.103115,1.0,0.367515,0.127457,1.0,0.360814,0.099489,1.0,0.377129,0.082915,1.0,0.368680,0.123832,1.0,0.376255,0.096381,1.0,0.381207,0.086540,1.0,0.384121,0.091720,1.0,0.381790,0.088612,1.0,0.384412,0.084986,1.0,0.387617,0.093273,1.0,0.387617,0.086540,1.0,0.387325,0.082915,1.0,0.447900,0.466522,1.0,0.447900,0.466522,1.0,0.449418,0.654484,1.0,0.460108,0.831624,1.0,0.460108,0.831624,1.0,0.483101,0.466453,1.0,0.483101,0.466453,1.0,0.421846,0.600057,1.0,0.403426,0.796332,1.0,0.403426,0.796332,1.0
|
||||
0.465500,0.466488,1.0,0.460323,0.302934,1.0,0.462049,0.357452,1.0,0.458597,0.248416,1.0,0.441003,0.163931,1.0,0.446372,0.161156,1.0,0.446372,0.161156,1.0,0.435633,0.166706,1.0,0.435633,0.166706,1.0,0.441755,0.249788,1.0,0.424912,0.251161,1.0,0.368180,0.215785,1.0,0.362088,0.131245,1.0,0.377502,0.109229,1.0,0.368900,0.095506,1.0,0.368239,0.096290,1.0,0.350374,0.091585,1.0,0.364930,0.101387,1.0,0.376399,0.082959,1.0,0.349933,0.091977,1.0,0.359196,0.102956,1.0,0.358975,0.112366,1.0,0.349051,0.091585,1.0,0.358975,0.103740,1.0,0.359196,0.103740,1.0,0.348830,0.106092,1.0,0.350374,0.109229,1.0,0.350374,0.108444,1.0,0.473938,0.248375,1.0,0.489279,0.248334,1.0,0.458629,0.188560,1.0,0.397351,0.123147,1.0,0.390822,0.127976,1.0,0.382664,0.109330,1.0,0.371593,0.103115,1.0,0.367515,0.127457,1.0,0.360814,0.099489,1.0,0.377129,0.082915,1.0,0.368680,0.123832,1.0,0.376255,0.096381,1.0,0.381207,0.086540,1.0,0.384121,0.091720,1.0,0.381790,0.088612,1.0,0.384412,0.084986,1.0,0.387617,0.093273,1.0,0.387617,0.086540,1.0,0.387325,0.082915,1.0,0.447900,0.466522,1.0,0.447900,0.466522,1.0,0.449418,0.654484,1.0,0.460108,0.831624,1.0,0.460108,0.831624,1.0,0.483101,0.466453,1.0,0.483101,0.466453,1.0,0.421846,0.600057,1.0,0.403426,0.796332,1.0,0.403426,0.796332,1.0
|
||||
0.470882,0.455592,1.0,0.462827,0.283905,1.0,0.465512,0.341134,1.0,0.460142,0.226676,1.0,0.440945,0.147675,1.0,0.446332,0.144948,1.0,0.446332,0.144948,1.0,0.435558,0.150403,1.0,0.435558,0.150403,1.0,0.447127,0.228021,1.0,0.434113,0.229366,1.0,0.388120,0.174882,1.0,0.385025,0.114940,1.0,0.384207,0.076055,1.0,0.372447,0.069567,1.0,0.366973,0.067765,1.0,0.366567,0.081101,1.0,0.364743,0.078578,1.0,0.360485,0.073171,1.0,0.373055,0.101286,1.0,0.372042,0.103809,1.0,0.357241,0.083985,1.0,0.373461,0.107414,1.0,0.371839,0.111379,1.0,0.370622,0.113181,1.0,0.372042,0.110297,1.0,0.409550,0.071369,1.0,0.371636,0.115704,1.0,0.472440,0.226603,1.0,0.484737,0.226530,1.0,0.447903,0.134024,1.0,0.400396,0.093056,1.0,0.385421,0.110719,1.0,0.399453,0.094088,1.0,0.398985,0.097830,1.0,0.399921,0.097830,1.0,0.400622,0.097830,1.0,0.405300,0.098661,1.0,0.374195,0.100324,1.0,0.368816,0.084525,1.0,0.355953,0.081615,1.0,0.373259,0.115708,1.0,0.367413,0.082862,1.0,0.356888,0.084109,1.0,0.373026,0.074546,1.0,0.370453,0.068310,1.0,0.364606,0.067062,1.0,0.460203,0.455598,1.0,0.460203,0.455598,1.0,0.450959,0.643601,1.0,0.463192,0.817994,1.0,0.463192,0.817994,1.0,0.481561,0.455586,1.0,0.481561,0.455586,1.0,0.411108,0.597252,1.0,0.400367,0.790724,1.0,0.400367,0.790724,1.0
|
||||
0.477767,0.447435,1.0,0.464542,0.265523,1.0,0.468951,0.326161,1.0,0.460134,0.204886,1.0,0.441700,0.140791,1.0,0.447842,0.139394,1.0,0.447842,0.139394,1.0,0.435558,0.142187,1.0,0.435558,0.142187,1.0,0.450173,0.204862,1.0,0.440211,0.204838,1.0,0.420288,0.128536,1.0,0.397318,0.063122,1.0,0.395927,0.067938,1.0,0.397341,0.064795,1.0,0.393098,0.055994,1.0,0.381782,0.052536,1.0,0.379307,0.053479,1.0,0.375241,0.052851,1.0,0.377539,0.064166,1.0,0.372235,0.064481,1.0,0.369229,0.063538,1.0,0.377539,0.077682,1.0,0.369583,0.072339,1.0,0.365340,0.072967,1.0,0.380545,0.088055,1.0,0.374887,0.095598,1.0,0.374887,0.095598,1.0,0.470115,0.206213,1.0,0.480096,0.207539,1.0,0.469363,0.169421,1.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.483106,0.447484,1.0,0.483106,0.447484,1.0,0.447930,0.624587,1.0,0.469301,0.801697,1.0,0.469301,0.801697,1.0,0.472429,0.447386,1.0,0.472429,0.447386,1.0,0.411122,0.597248,1.0,0.408002,0.777236,1.0,0.408002,0.777236,1.0
|
||||
0.474710,0.439204,1.0,0.463815,0.277690,1.0,0.467446,0.331528,1.0,0.460183,0.223852,1.0,0.436378,0.142094,1.0,0.440208,0.142122,1.0,0.440208,0.142122,1.0,0.432548,0.142065,1.0,0.432548,0.142065,1.0,0.454799,0.225285,1.0,0.449415,0.226718,1.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.465539,0.217103,1.0,0.470894,0.210354,1.0,0.458581,0.158516,1.0,0.434125,0.076872,1.0,0.418844,0.072175,1.0,0.410148,0.061995,1.0,0.437083,0.045783,1.0,0.433477,0.048045,1.0,0.430720,0.043898,1.0,0.435810,0.045029,1.0,0.430084,0.046914,1.0,0.430296,0.045029,1.0,0.433902,0.051061,1.0,0.422873,0.054078,1.0,0.427115,0.049553,1.0,0.433902,0.051061,1.0,0.422449,0.054455,1.0,0.436446,0.042013,1.0,0.437295,0.045406,1.0,0.489267,0.444628,1.0,0.489267,0.444628,1.0,0.450932,0.619139,1.0,0.460176,0.801743,1.0,0.460176,0.801743,1.0,0.460152,0.433781,1.0,0.460152,0.433781,1.0,0.421773,0.608241,1.0,0.411167,0.777183,1.0,0.411167,0.777183,1.0
|
||||
0.465546,0.443300,1.0,0.468361,0.264435,1.0,0.467423,0.324057,1.0,0.469300,0.204814,1.0,0.450167,0.131229,1.0,0.453998,0.131239,1.0,0.453998,0.131239,1.0,0.446337,0.131219,1.0,0.446337,0.131219,1.0,0.460889,0.207555,1.0,0.452478,0.210296,1.0,0.443256,0.144955,1.0,0.421882,0.076703,1.0,0.413038,0.040488,1.0,0.416083,0.039214,1.0,0.402650,0.065642,1.0,0.413933,0.042717,1.0,0.408919,0.055135,1.0,0.410710,0.057682,1.0,0.415008,0.054816,1.0,0.415366,0.063413,1.0,0.415366,0.069145,1.0,0.418053,0.053224,1.0,0.416620,0.065005,1.0,0.415187,0.070100,1.0,0.416262,0.077742,1.0,0.416441,0.075513,1.0,0.435964,0.063413,1.0,0.476213,0.198033,1.0,0.483126,0.191252,1.0,0.480043,0.117627,1.0,0.457030,0.068597,1.0,0.453549,0.065688,1.0,0.451264,0.050521,1.0,0.445627,0.048896,1.0,0.451264,0.048896,1.0,0.444560,0.048896,1.0,0.441361,0.048896,1.0,0.451111,0.057834,1.0,0.443798,0.059730,1.0,0.436029,0.054313,1.0,0.444560,0.062980,1.0,0.437400,0.066230,1.0,0.433591,0.062167,1.0,0.439228,0.072189,1.0,0.432982,0.070563,1.0,0.433744,0.071376,1.0,0.484721,0.444683,1.0,0.484721,0.444683,1.0,0.460174,0.632678,1.0,0.457022,0.796191,1.0,0.457022,0.796191,1.0,0.446370,0.441916,1.0,0.446370,0.441916,1.0,0.432543,0.621803,1.0,0.423397,0.774508,1.0,0.423397,0.774508,1.0
|
||||
0.459403,0.444707,1.0,0.467950,0.279089,1.0,0.465101,0.334295,1.0,0.470798,0.223883,1.0,0.438670,0.161115,1.0,0.437188,0.142224,1.0,0.437188,0.142224,1.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.483894,0.226604,1.0,0.496990,0.229325,1.0,0.509241,0.142203,1.0,0.472374,0.076705,1.0,0.479753,0.095881,1.0,0.472743,0.093993,1.0,0.463820,0.093237,1.0,0.467644,0.068688,1.0,0.454472,0.071331,1.0,0.448523,0.080773,1.0,0.467856,0.063400,1.0,0.452772,0.067554,1.0,0.442575,0.074353,1.0,0.466369,0.061512,1.0,0.453835,0.057357,1.0,0.444912,0.062267,1.0,0.465732,0.060379,1.0,0.455747,0.055091,1.0,0.449798,0.056224,1.0,0.454730,0.219821,1.0,0.438662,0.215758,1.0,0.411128,0.093144,1.0,0.427964,0.052291,1.0,0.411180,0.073197,1.0,0.420716,0.060120,1.0,0.432430,0.051886,1.0,0.439241,0.048012,1.0,0.452045,0.055761,1.0,0.451228,0.056245,1.0,0.438969,0.056730,1.0,0.449048,0.066416,1.0,0.439514,0.064479,1.0,0.437606,0.067385,1.0,0.446324,0.072712,1.0,0.440876,0.073681,1.0,0.437061,0.069322,1.0,0.444962,0.082399,1.0,0.441420,0.082399,1.0,0.483144,0.447465,1.0,0.483144,0.447465,1.0,0.466277,0.640795,1.0,0.447955,0.815299,1.0,0.447955,0.815299,1.0,0.435662,0.441950,1.0,0.435662,0.441950,1.0,0.444799,0.627313,1.0,0.438706,0.774338,1.0,0.438706,0.774338,1.0
|
||||
0.459403,0.444707,1.0,0.467950,0.279089,1.0,0.465101,0.334295,1.0,0.470798,0.223883,1.0,0.438670,0.161115,1.0,0.437188,0.142224,1.0,0.437188,0.142224,1.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.483894,0.226604,1.0,0.496990,0.229325,1.0,0.509241,0.142203,1.0,0.472374,0.076705,1.0,0.479753,0.095881,1.0,0.472743,0.093993,1.0,0.463820,0.093237,1.0,0.467644,0.068688,1.0,0.454472,0.071331,1.0,0.448523,0.080773,1.0,0.467856,0.063400,1.0,0.452772,0.067554,1.0,0.442575,0.074353,1.0,0.466369,0.061512,1.0,0.453835,0.057357,1.0,0.444912,0.062267,1.0,0.465732,0.060379,1.0,0.455747,0.055091,1.0,0.449798,0.056224,1.0,0.454730,0.219821,1.0,0.438662,0.215758,1.0,0.411128,0.093144,1.0,0.427964,0.052291,1.0,0.411180,0.073197,1.0,0.420716,0.060120,1.0,0.432430,0.051886,1.0,0.439241,0.048012,1.0,0.452045,0.055761,1.0,0.451228,0.056245,1.0,0.438969,0.056730,1.0,0.449048,0.066416,1.0,0.439514,0.064479,1.0,0.437606,0.067385,1.0,0.446324,0.072712,1.0,0.440876,0.073681,1.0,0.437061,0.069322,1.0,0.444962,0.082399,1.0,0.441420,0.082399,1.0,0.483144,0.447465,1.0,0.483144,0.447465,1.0,0.466277,0.640795,1.0,0.447955,0.815299,1.0,0.447955,0.815299,1.0,0.435662,0.441950,1.0,0.435662,0.441950,1.0,0.444799,0.627313,1.0,0.438706,0.774338,1.0,0.438706,0.774338,1.0
|
||||
0.453986,0.448756,1.0,0.458607,0.282199,1.0,0.457066,0.337718,1.0,0.460147,0.226680,1.0,0.467063,0.163962,1.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.477016,0.229447,1.0,0.493884,0.232214,1.0,0.529130,0.139499,1.0,0.486245,0.079450,1.0,0.497032,0.090422,1.0,0.487333,0.075644,1.0,0.482022,0.070307,1.0,0.482253,0.072360,1.0,0.469783,0.071539,1.0,0.467012,0.065791,1.0,0.478789,0.081391,1.0,0.472093,0.079749,1.0,0.468167,0.078517,1.0,0.477173,0.091654,1.0,0.472554,0.089601,1.0,0.467936,0.090422,1.0,0.474864,0.102328,1.0,0.472093,0.101506,1.0,0.470938,0.101917,1.0,0.444049,0.222580,1.0,0.427952,0.218480,1.0,0.404982,0.098588,1.0,0.444763,0.055096,1.0,0.478276,0.071409,1.0,0.450572,0.056541,1.0,0.448743,0.058399,1.0,0.450572,0.055611,1.0,0.458674,0.057470,1.0,0.454493,0.068621,1.0,0.451618,0.064904,1.0,0.456322,0.075126,1.0,0.450050,0.076055,1.0,0.449005,0.068621,1.0,0.454754,0.083025,1.0,0.448482,0.083025,1.0,0.448482,0.079772,1.0,0.453447,0.089065,1.0,0.450050,0.089994,1.0,0.473948,0.450148,1.0,0.473948,0.450148,1.0,0.472370,0.640850,1.0,0.446308,0.815350,1.0,0.446308,0.815350,1.0,0.434024,0.447365,1.0,0.434024,0.447365,1.0,0.455504,0.627330,1.0,0.446339,0.771766,1.0,0.446339,0.771766,1.0
|
||||
0.449398,0.451504,1.0,0.456263,0.286922,1.0,0.453975,0.341783,1.0,0.458551,0.232062,1.0,0.473962,0.170697,1.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.471605,0.232112,1.0,0.484659,0.232163,1.0,0.533802,0.155784,1.0,0.506110,0.093025,1.0,0.469195,0.079551,1.0,0.514692,0.094025,1.0,0.500324,0.079977,1.0,0.496972,0.074017,1.0,0.497690,0.079551,1.0,0.495056,0.088065,1.0,0.497211,0.087639,1.0,0.492422,0.091470,1.0,0.496493,0.103816,1.0,0.490267,0.100836,1.0,0.490985,0.100410,1.0,0.494578,0.105093,1.0,0.484041,0.108072,1.0,0.484520,0.110201,1.0,0.492662,0.115735,1.0,0.441745,0.232069,1.0,0.424939,0.232077,1.0,0.412628,0.183073,1.0,0.409621,0.117752,1.0,0.422755,0.099402,1.0,0.421252,0.097264,1.0,0.411935,0.107950,1.0,0.402919,0.117834,1.0,0.410282,0.108218,1.0,0.409681,0.110621,1.0,0.404873,0.109820,1.0,0.405624,0.109286,1.0,0.406075,0.108484,1.0,0.404873,0.109553,1.0,0.405474,0.109019,1.0,0.418848,0.114094,1.0,0.404873,0.108752,1.0,0.405173,0.108218,1.0,0.405323,0.108218,1.0,0.469330,0.452881,1.0,0.469330,0.452881,1.0,0.483066,0.640901,1.0,0.446364,0.804444,1.0,0.446364,0.804444,1.0,0.429467,0.450126,1.0,0.429467,0.450126,1.0,0.463189,0.635391,1.0,0.449384,0.774442,1.0,0.449384,0.774442,1.0
|
||||
0.449411,0.455571,1.0,0.452856,0.292062,1.0,0.451708,0.346565,1.0,0.454004,0.237559,1.0,0.465507,0.173477,1.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.463986,0.236208,1.0,0.473968,0.234856,1.0,0.507618,0.166755,1.0,0.512259,0.120365,1.0,0.521083,0.113369,1.0,0.514539,0.093085,1.0,0.504999,0.077456,1.0,0.514352,0.095745,1.0,0.502942,0.075129,1.0,0.509489,0.096744,1.0,0.514165,0.097076,1.0,0.504064,0.093750,1.0,0.503877,0.094083,1.0,0.513978,0.093750,1.0,0.497892,0.097076,1.0,0.496769,0.094083,1.0,0.513978,0.093750,1.0,0.506309,0.105056,1.0,0.506683,0.106719,1.0,0.442499,0.241644,1.0,0.430993,0.245729,1.0,0.424907,0.136724,1.0,0.464752,0.082260,1.0,0.471346,0.063884,1.0,0.479935,0.062277,1.0,0.488977,0.064688,1.0,0.488299,0.097640,1.0,0.491690,0.074734,1.0,0.492368,0.069510,1.0,0.488073,0.095631,1.0,0.491464,0.081968,1.0,0.491690,0.079155,1.0,0.477449,0.090808,1.0,0.481518,0.088397,1.0,0.485134,0.089603,1.0,0.474963,0.075940,1.0,0.478805,0.088397,1.0,0.479257,0.088397,1.0,0.460119,0.458263,1.0,0.460119,0.458263,1.0,0.486190,0.640885,1.0,0.447911,0.799039,1.0,0.447911,0.799039,1.0,0.438704,0.452880,1.0,0.438704,0.452880,1.0,0.475506,0.638177,1.0,0.453999,0.779851,1.0,0.453999,0.779851,1.0
|
||||
0.452487,0.467816,1.0,0.450211,0.299178,1.0,0.450970,0.355391,1.0,0.449452,0.242966,1.0,0.498417,0.187070,1.0,0.501520,0.188449,1.0,0.501520,0.188449,1.0,0.495315,0.185692,1.0,0.495315,0.185692,1.0,0.448690,0.236211,1.0,0.447928,0.229456,1.0,0.477019,0.177552,1.0,0.495373,0.084930,1.0,0.489496,0.087588,1.0,0.499178,0.065573,1.0,0.479815,0.064372,1.0,0.496926,0.065573,1.0,0.489496,0.065573,1.0,0.486344,0.069175,1.0,0.491748,0.075980,1.0,0.493549,0.077581,1.0,0.491072,0.083185,1.0,0.488821,0.079583,1.0,0.493999,0.084386,1.0,0.493098,0.087988,1.0,0.503681,0.093993,1.0,0.473735,0.075180,1.0,0.476212,0.078782,1.0,0.445607,0.247044,1.0,0.441761,0.251121,1.0,0.467783,0.357522,1.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.450974,0.469233,1.0,0.450974,0.469233,1.0,0.484673,0.643609,1.0,0.447858,0.799027,1.0,0.447858,0.799027,1.0,0.453999,0.466398,1.0,0.453999,0.466398,1.0,0.484632,0.643615,1.0,0.450953,0.774436,1.0,0.450953,0.774436,1.0
|
||||
0.459353,0.465063,1.0,0.463382,0.298539,1.0,0.462039,0.354047,1.0,0.464724,0.243031,1.0,0.499219,0.173512,1.0,0.503092,0.177560,1.0,0.503092,0.177560,1.0,0.495345,0.169464,1.0,0.495345,0.169464,1.0,0.456286,0.236243,1.0,0.447847,0.229455,1.0,0.452509,0.117580,1.0,0.472354,0.071245,1.0,0.473116,0.069535,1.0,0.483070,0.053485,1.0,0.490709,0.067889,1.0,0.483301,0.057600,1.0,0.492792,0.074062,1.0,0.495802,0.085585,1.0,0.481449,0.067477,1.0,0.493024,0.085996,1.0,0.492561,0.085585,1.0,0.480523,0.080235,1.0,0.493024,0.089289,1.0,0.492792,0.090112,1.0,0.480755,0.088466,1.0,0.493718,0.068712,1.0,0.494876,0.086408,1.0,0.473912,0.247132,1.0,0.483100,0.251234,1.0,0.493851,0.338335,1.0,0.507685,0.270177,1.0,0.490721,0.264042,1.0,0.492193,0.274837,1.0,0.492193,0.283342,1.0,0.492929,0.271893,1.0,0.494954,0.287922,1.0,0.495321,0.298390,1.0,0.496794,0.271893,1.0,0.497346,0.288249,1.0,0.496794,0.302316,1.0,0.498818,0.271893,1.0,0.499186,0.285959,1.0,0.497161,0.293810,1.0,0.501210,0.271565,1.0,0.499738,0.283015,1.0,0.498634,0.288576,1.0,0.446352,0.463751,1.0,0.446352,0.463751,1.0,0.481576,0.640972,1.0,0.446284,0.815180,1.0,0.446284,0.815180,1.0,0.472354,0.466376,1.0,0.472354,0.466376,1.0,0.493845,0.640927,1.0,0.458653,0.774356,1.0,0.458653,0.774356,1.0
|
||||
0.459353,0.465063,1.0,0.463382,0.298539,1.0,0.462039,0.354047,1.0,0.464724,0.243031,1.0,0.499219,0.173512,1.0,0.503092,0.177560,1.0,0.503092,0.177560,1.0,0.495345,0.169464,1.0,0.495345,0.169464,1.0,0.456286,0.236243,1.0,0.447847,0.229455,1.0,0.452509,0.117580,1.0,0.472354,0.071245,1.0,0.473116,0.069535,1.0,0.483070,0.053485,1.0,0.490709,0.067889,1.0,0.483301,0.057600,1.0,0.492792,0.074062,1.0,0.495802,0.085585,1.0,0.481449,0.067477,1.0,0.493024,0.085996,1.0,0.492561,0.085585,1.0,0.480523,0.080235,1.0,0.493024,0.089289,1.0,0.492792,0.090112,1.0,0.480755,0.088466,1.0,0.493718,0.068712,1.0,0.494876,0.086408,1.0,0.473912,0.247132,1.0,0.483100,0.251234,1.0,0.493851,0.338335,1.0,0.507685,0.270177,1.0,0.490721,0.264042,1.0,0.492193,0.274837,1.0,0.492193,0.283342,1.0,0.492929,0.271893,1.0,0.494954,0.287922,1.0,0.495321,0.298390,1.0,0.496794,0.271893,1.0,0.497346,0.288249,1.0,0.496794,0.302316,1.0,0.498818,0.271893,1.0,0.499186,0.285959,1.0,0.497161,0.293810,1.0,0.501210,0.271565,1.0,0.499738,0.283015,1.0,0.498634,0.288576,1.0,0.446352,0.463751,1.0,0.446352,0.463751,1.0,0.481576,0.640972,1.0,0.446284,0.815180,1.0,0.446284,0.815180,1.0,0.472354,0.466376,1.0,0.472354,0.466376,1.0,0.493845,0.640927,1.0,0.458653,0.774356,1.0,0.458653,0.774356,1.0
|
||||
0.463190,0.451504,1.0,0.464365,0.286950,1.0,0.463973,0.341801,1.0,0.464757,0.232098,1.0,0.489280,0.162635,1.0,0.495402,0.163944,1.0,0.495402,0.163944,1.0,0.483159,0.161327,1.0,0.483159,0.161327,1.0,0.454760,0.229344,1.0,0.444764,0.226589,1.0,0.421751,0.109506,1.0,0.454020,0.049504,1.0,0.467484,0.059733,1.0,0.476185,0.064737,1.0,0.482328,0.057458,1.0,0.487958,0.063827,1.0,0.480792,0.056093,1.0,0.482072,0.064282,1.0,0.475930,0.049268,1.0,0.476953,0.051998,1.0,0.481816,0.061097,1.0,0.466972,0.048813,1.0,0.472858,0.046538,1.0,0.478489,0.057913,1.0,0.466204,0.048358,1.0,0.470555,0.046083,1.0,0.471579,0.064282,1.0,0.476239,0.240226,1.0,0.487721,0.248354,1.0,0.509233,0.332920,1.0,0.500022,0.229384,1.0,0.484245,0.206754,1.0,0.488571,0.228544,1.0,0.490253,0.245635,1.0,0.490494,0.230254,1.0,0.493378,0.246917,1.0,0.494580,0.257598,1.0,0.494339,0.224699,1.0,0.494580,0.243071,1.0,0.487129,0.253326,1.0,0.497223,0.220854,1.0,0.495060,0.237517,1.0,0.487129,0.249053,1.0,0.499386,0.216581,1.0,0.496021,0.233244,1.0,0.488331,0.241362,1.0,0.446284,0.450176,1.0,0.446284,0.450176,1.0,0.469370,0.643530,1.0,0.440198,0.815193,1.0,0.440198,0.815193,1.0,0.480096,0.452832,1.0,0.480096,0.452832,1.0,0.495392,0.640887,1.0,0.470844,0.774494,1.0,0.470844,0.774494,1.0
|
||||
0.464753,0.444649,1.0,0.465904,0.268934,1.0,0.465520,0.327506,1.0,0.466287,0.210362,1.0,0.479274,0.146304,1.0,0.490816,0.145009,1.0,0.490816,0.145009,1.0,0.472491,0.147594,1.0,0.472491,0.147594,1.0,0.450933,0.211677,1.0,0.435579,0.212993,1.0,0.388131,0.133934,1.0,0.434022,0.054925,1.0,0.437188,0.056165,1.0,0.448385,0.067275,1.0,0.457759,0.069127,1.0,0.449948,0.049221,1.0,0.454374,0.065886,1.0,0.457759,0.070978,1.0,0.446042,0.050146,1.0,0.452031,0.059868,1.0,0.453854,0.070978,1.0,0.445260,0.052924,1.0,0.446042,0.056165,1.0,0.447865,0.067738,1.0,0.446562,0.053387,1.0,0.442396,0.057553,1.0,0.443177,0.060794,1.0,0.480876,0.210323,1.0,0.495465,0.210284,1.0,0.530615,0.155730,1.0,0.501535,0.082276,1.0,0.483906,0.079638,1.0,0.475050,0.080371,1.0,0.473196,0.089158,1.0,0.474844,0.078540,1.0,0.467842,0.075611,1.0,0.463723,0.074879,1.0,0.476492,0.070851,1.0,0.469695,0.067922,1.0,0.464753,0.065359,1.0,0.478757,0.064993,1.0,0.471549,0.061332,1.0,0.466812,0.058769,1.0,0.482464,0.058769,1.0,0.476697,0.053277,1.0,0.473196,0.049616,1.0,0.444839,0.444597,1.0,0.444839,0.444597,1.0,0.458551,0.643713,1.0,0.437121,0.815338,1.0,0.437121,0.815338,1.0,0.484667,0.444701,1.0,0.484667,0.444701,1.0,0.498527,0.640981,1.0,0.483204,0.771605,1.0,0.483204,0.771605,1.0
|
||||
0.465483,0.440565,1.0,0.468369,0.278128,1.0,0.467407,0.332274,1.0,0.469331,0.223982,1.0,0.471653,0.155727,1.0,0.483158,0.142095,1.0,0.483158,0.142095,1.0,0.467774,0.142236,1.0,0.467774,0.142236,1.0,0.452465,0.223931,1.0,0.435598,0.223879,1.0,0.372791,0.164059,1.0,0.411157,0.079574,1.0,0.414146,0.083293,1.0,0.438978,0.079576,1.0,0.416498,0.086546,1.0,0.431659,0.091658,1.0,0.437409,0.092587,1.0,0.447342,0.083293,1.0,0.431920,0.083293,1.0,0.439239,0.081435,1.0,0.446558,0.079576,1.0,0.431136,0.075394,1.0,0.437409,0.072141,1.0,0.443421,0.068888,1.0,0.429045,0.067029,1.0,0.431659,0.064241,1.0,0.436625,0.061453,1.0,0.483901,0.225252,1.0,0.498470,0.226522,1.0,0.547542,0.155811,1.0,0.509145,0.098557,1.0,0.506670,0.088315,1.0,0.499718,0.076780,1.0,0.493925,0.072249,1.0,0.493462,0.071837,1.0,0.485815,0.067305,1.0,0.480485,0.064421,1.0,0.488595,0.075545,1.0,0.480717,0.071425,1.0,0.473765,0.068129,1.0,0.486046,0.081312,1.0,0.477936,0.075956,1.0,0.470752,0.072249,1.0,0.482570,0.086668,1.0,0.474460,0.080488,1.0,0.469594,0.075132,1.0,0.444774,0.439176,1.0,0.444774,0.439176,1.0,0.446379,0.646344,1.0,0.429483,0.815404,1.0,0.429483,0.815404,1.0,0.486191,0.441954,1.0,0.486191,0.441954,1.0,0.507597,0.643643,1.0,0.507615,0.771781,1.0,0.507615,0.771781,1.0
|
||||
0.467026,0.450162,1.0,0.469918,0.284594,1.0,0.468954,0.339783,1.0,0.470882,0.229405,1.0,0.467064,0.161254,1.0,0.478535,0.144886,1.0,0.478535,0.144886,1.0,0.460163,0.144962,1.0,0.460163,0.144962,1.0,0.453255,0.230768,1.0,0.435628,0.232131,1.0,0.369709,0.204913,1.0,0.400416,0.117540,1.0,0.407570,0.097093,1.0,0.417004,0.082529,1.0,0.426189,0.072819,1.0,0.423210,0.090031,1.0,0.435127,0.088707,1.0,0.437360,0.079880,1.0,0.423706,0.104595,1.0,0.431403,0.095769,1.0,0.432892,0.078998,1.0,0.422714,0.116070,1.0,0.428423,0.105037,1.0,0.426934,0.101065,1.0,0.422961,0.122691,1.0,0.431899,0.126221,1.0,0.421720,0.118278,1.0,0.487740,0.228045,1.0,0.504598,0.226686,1.0,0.562844,0.166770,1.0,0.515320,0.117758,1.0,0.502106,0.125283,1.0,0.495193,0.121333,1.0,0.488775,0.085785,1.0,0.500378,0.088857,1.0,0.489516,0.084030,1.0,0.482850,0.081396,1.0,0.499390,0.091929,1.0,0.486553,0.089735,1.0,0.478901,0.085346,1.0,0.498649,0.096756,1.0,0.487047,0.098512,1.0,0.480382,0.094123,1.0,0.497168,0.101145,1.0,0.488528,0.109484,1.0,0.486059,0.108168,1.0,0.443244,0.447484,1.0,0.443244,0.447484,1.0,0.438679,0.659998,1.0,0.421798,0.812502,1.0,0.421798,0.812502,1.0,0.490808,0.452839,1.0,0.490808,0.452839,1.0,0.509281,0.659920,1.0,0.532234,0.782604,1.0,0.532234,0.782604,1.0
|
||||
0.468542,0.467833,1.0,0.470227,0.303339,1.0,0.469666,0.358170,1.0,0.470789,0.248507,1.0,0.465473,0.178965,1.0,0.472435,0.161314,1.0,0.472435,0.161314,1.0,0.458540,0.163896,1.0,0.458540,0.163896,1.0,0.453175,0.251219,1.0,0.435561,0.253931,1.0,0.372687,0.240294,1.0,0.397257,0.155844,1.0,0.400021,0.144912,1.0,0.402113,0.125496,1.0,0.406528,0.113105,1.0,0.408851,0.114344,1.0,0.409781,0.103190,1.0,0.411872,0.095755,1.0,0.413498,0.115582,1.0,0.416286,0.102777,1.0,0.419075,0.093276,1.0,0.416984,0.118887,1.0,0.421166,0.106081,1.0,0.424187,0.096581,1.0,0.420004,0.123844,1.0,0.424652,0.111452,1.0,0.426975,0.104017,1.0,0.486921,0.244419,1.0,0.503053,0.240332,1.0,0.569042,0.191289,1.0,0.519934,0.139520,1.0,0.517634,0.138762,1.0,0.504778,0.116373,1.0,0.493758,0.108909,1.0,0.502416,0.154156,1.0,0.501105,0.157887,1.0,0.492183,0.102380,1.0,0.500317,0.150424,1.0,0.501105,0.167682,1.0,0.488772,0.134565,1.0,0.499530,0.150424,1.0,0.506615,0.167216,1.0,0.489560,0.134565,1.0,0.499793,0.149957,1.0,0.501105,0.161152,1.0,0.491921,0.101913,1.0,0.444776,0.466508,1.0,0.444776,0.466508,1.0,0.434016,0.670852,1.0,0.411092,0.812557,1.0,0.411092,0.812557,1.0,0.492308,0.469157,1.0,0.492308,0.469157,1.0,0.519938,0.665329,1.0,0.556755,0.796190,1.0,0.556755,0.796190,1.0
|
||||
0.468542,0.467833,1.0,0.470227,0.303339,1.0,0.469666,0.358170,1.0,0.470789,0.248507,1.0,0.465473,0.178965,1.0,0.472435,0.161314,1.0,0.472435,0.161314,1.0,0.458540,0.163896,1.0,0.458540,0.163896,1.0,0.453175,0.251219,1.0,0.435561,0.253931,1.0,0.372687,0.240294,1.0,0.397257,0.155844,1.0,0.400021,0.144912,1.0,0.402113,0.125496,1.0,0.406528,0.113105,1.0,0.408851,0.114344,1.0,0.409781,0.103190,1.0,0.411872,0.095755,1.0,0.413498,0.115582,1.0,0.416286,0.102777,1.0,0.419075,0.093276,1.0,0.416984,0.118887,1.0,0.421166,0.106081,1.0,0.424187,0.096581,1.0,0.420004,0.123844,1.0,0.424652,0.111452,1.0,0.426975,0.104017,1.0,0.486921,0.244419,1.0,0.503053,0.240332,1.0,0.569042,0.191289,1.0,0.519934,0.139520,1.0,0.517634,0.138762,1.0,0.504778,0.116373,1.0,0.493758,0.108909,1.0,0.502416,0.154156,1.0,0.501105,0.157887,1.0,0.492183,0.102380,1.0,0.500317,0.150424,1.0,0.501105,0.167682,1.0,0.488772,0.134565,1.0,0.499530,0.150424,1.0,0.506615,0.167216,1.0,0.489560,0.134565,1.0,0.499793,0.149957,1.0,0.501105,0.161152,1.0,0.491921,0.101913,1.0,0.444776,0.466508,1.0,0.444776,0.466508,1.0,0.434016,0.670852,1.0,0.411092,0.812557,1.0,0.411092,0.812557,1.0,0.492308,0.469157,1.0,0.492308,0.469157,1.0,0.519938,0.665329,1.0,0.556755,0.796190,1.0,0.556755,0.796190,1.0
|
||||
0.470060,0.488288,1.0,0.470645,0.326771,1.0,0.470450,0.380610,1.0,0.470840,0.272931,1.0,0.462450,0.202051,1.0,0.469372,0.183156,1.0,0.469372,0.183156,1.0,0.450935,0.185744,1.0,0.450935,0.185744,1.0,0.453993,0.278381,1.0,0.437145,0.283831,1.0,0.374298,0.267459,1.0,0.398780,0.185742,1.0,0.402199,0.189015,1.0,0.404063,0.187772,1.0,0.406626,0.189430,1.0,0.417112,0.164574,1.0,0.422937,0.152561,1.0,0.426433,0.143861,1.0,0.413850,0.156289,1.0,0.419908,0.143861,1.0,0.424103,0.135991,1.0,0.410121,0.150904,1.0,0.414549,0.138891,1.0,0.417112,0.131019,1.0,0.404296,0.149661,1.0,0.407558,0.138062,1.0,0.408956,0.133091,1.0,0.486178,0.270181,1.0,0.501516,0.267430,1.0,0.568948,0.229319,1.0,0.519918,0.169431,1.0,0.512564,0.163050,1.0,0.498546,0.143669,1.0,0.502959,0.188431,1.0,0.498546,0.187508,1.0,0.482193,0.184278,1.0,0.480376,0.193046,1.0,0.496470,0.163512,1.0,0.486606,0.194431,1.0,0.491278,0.209659,1.0,0.495951,0.173203,1.0,0.488163,0.193046,1.0,0.492576,0.208275,1.0,0.499844,0.184740,1.0,0.483751,0.180586,1.0,0.496210,0.202737,1.0,0.446294,0.488281,1.0,0.446294,0.488281,1.0,0.424901,0.689984,1.0,0.400355,0.815355,1.0,0.400355,0.815355,1.0,0.493826,0.488294,1.0,0.493826,0.488294,1.0,0.526036,0.681821,1.0,0.581224,0.818066,1.0,0.581224,0.818066,1.0
|
||||
0.471620,0.512856,1.0,0.471046,0.351315,1.0,0.471237,0.405163,1.0,0.470855,0.297469,1.0,0.462417,0.230671,1.0,0.464750,0.218465,1.0,0.464750,0.218465,1.0,0.447920,0.221166,1.0,0.447920,0.221166,1.0,0.454002,0.302940,1.0,0.437150,0.308412,1.0,0.380398,0.291981,1.0,0.403432,0.213079,1.0,0.406814,0.218165,1.0,0.413774,0.221165,1.0,0.417149,0.219665,1.0,0.427064,0.164166,1.0,0.416939,0.215540,1.0,0.418204,0.220040,1.0,0.414407,0.179166,1.0,0.416939,0.160791,1.0,0.416306,0.217790,1.0,0.408079,0.190790,1.0,0.416939,0.182166,1.0,0.417360,0.160416,1.0,0.403228,0.201665,1.0,0.415040,0.218165,1.0,0.420946,0.221915,1.0,0.486182,0.294798,1.0,0.501508,0.292128,1.0,0.559849,0.270250,1.0,0.515315,0.207512,1.0,0.504324,0.196279,1.0,0.481626,0.174868,1.0,0.481394,0.178162,1.0,0.495059,0.182279,1.0,0.487416,0.182691,1.0,0.479542,0.174868,1.0,0.495291,0.202455,1.0,0.488806,0.184338,1.0,0.488806,0.216867,1.0,0.492743,0.201631,1.0,0.483016,0.213161,1.0,0.487416,0.217278,1.0,0.495291,0.214396,1.0,0.482553,0.213984,1.0,0.488806,0.217690,1.0,0.447893,0.512898,1.0,0.447893,0.512898,1.0,0.423313,0.711698,1.0,0.400347,0.820846,1.0,0.400347,0.820846,1.0,0.495346,0.512815,1.0,0.495346,0.512815,1.0,0.532260,0.711732,1.0,0.599646,0.826181,1.0,0.599646,0.826181,1.0
|
||||
0.473960,0.534670,1.0,0.472775,0.379277,1.0,0.473170,0.431074,1.0,0.472380,0.327479,1.0,0.460133,0.259343,1.0,0.463232,0.248319,1.0,0.463232,0.248319,1.0,0.447849,0.248452,1.0,0.447849,0.248452,1.0,0.457822,0.331569,1.0,0.443264,0.335658,1.0,0.384953,0.313744,1.0,0.414185,0.234838,1.0,0.416397,0.232509,1.0,0.433014,0.209965,1.0,0.433233,0.216573,1.0,0.422957,0.206467,1.0,0.426236,0.207244,1.0,0.426236,0.204523,1.0,0.417928,0.215795,1.0,0.426455,0.220071,1.0,0.427329,0.219682,1.0,0.417709,0.216184,1.0,0.426673,0.225902,1.0,0.430172,0.226290,1.0,0.413774,0.230566,1.0,0.412681,0.236007,1.0,0.434982,0.231344,1.0,0.488474,0.322105,1.0,0.504569,0.316731,1.0,0.555182,0.294939,1.0,0.507671,0.245756,1.0,0.494905,0.231518,1.0,0.485492,0.216378,1.0,0.474735,0.208409,1.0,0.489302,0.244267,1.0,0.476976,0.250642,1.0,0.469580,0.246657,1.0,0.489974,0.247056,1.0,0.488630,0.252235,1.0,0.468235,0.239884,1.0,0.491095,0.247454,1.0,0.488854,0.256219,1.0,0.468460,0.238689,1.0,0.490871,0.272953,1.0,0.471597,0.247056,1.0,0.471597,0.246657,1.0,0.452460,0.537394,1.0,0.452460,0.537394,1.0,0.423298,0.728191,1.0,0.400336,0.831617,1.0,0.400336,0.831617,1.0,0.495459,0.531946,1.0,0.495459,0.531946,1.0,0.533766,0.741674,1.0,0.614953,0.837186,1.0,0.614953,0.837186,1.0
|
||||
0.474688,0.552287,1.0,0.472987,0.391897,1.0,0.473554,0.445360,1.0,0.472420,0.338433,1.0,0.462429,0.274300,1.0,0.466250,0.259362,1.0,0.466250,0.259362,1.0,0.447909,0.264746,1.0,0.447909,0.264746,1.0,0.457841,0.341176,1.0,0.443261,0.343919,1.0,0.384993,0.316742,1.0,0.417216,0.251192,1.0,0.418569,0.247240,1.0,0.425640,0.231132,1.0,0.435585,0.230740,1.0,0.426082,0.226811,1.0,0.438016,0.224454,1.0,0.443319,0.222096,1.0,0.425198,0.231918,1.0,0.438016,0.239775,1.0,0.440005,0.235061,1.0,0.425861,0.243704,1.0,0.435585,0.243704,1.0,0.440668,0.256669,1.0,0.424977,0.254312,1.0,0.433375,0.259812,1.0,0.437132,0.262955,1.0,0.489258,0.337039,1.0,0.506096,0.335645,1.0,0.549057,0.311114,1.0,0.498448,0.256640,1.0,0.488499,0.254955,1.0,0.479335,0.263957,1.0,0.474754,0.260956,1.0,0.481506,0.240378,1.0,0.478612,0.229231,1.0,0.465348,0.226658,1.0,0.482953,0.238234,1.0,0.471377,0.228803,1.0,0.465590,0.226230,1.0,0.484399,0.239520,1.0,0.475236,0.229660,1.0,0.466072,0.226658,1.0,0.484882,0.237806,1.0,0.479094,0.232661,1.0,0.469689,0.229231,1.0,0.452504,0.553669,1.0,0.452504,0.553669,1.0,0.421848,0.730875,1.0,0.398921,0.831599,1.0,0.398921,0.831599,1.0,0.496871,0.550905,1.0,0.496871,0.550905,1.0,0.533781,0.752547,1.0,0.616500,0.839821,1.0,0.616500,0.839821,1.0
|
||||
0.475482,0.538700,1.0,0.473233,0.386308,1.0,0.473982,0.437105,1.0,0.472483,0.335510,1.0,0.464741,0.270262,1.0,0.469310,0.256626,1.0,0.469310,0.256626,1.0,0.450960,0.262055,1.0,0.450960,0.262055,1.0,0.459418,0.335644,1.0,0.446353,0.335777,1.0,0.385055,0.313869,1.0,0.418758,0.251184,1.0,0.431257,0.258226,1.0,0.434927,0.254556,1.0,0.428734,0.234983,1.0,0.432404,0.257410,1.0,0.439973,0.229275,1.0,0.445478,0.227644,1.0,0.432404,0.239061,1.0,0.437679,0.229275,1.0,0.445478,0.227644,1.0,0.429422,0.238654,1.0,0.435615,0.228867,1.0,0.441349,0.230498,1.0,0.423229,0.244362,1.0,0.427817,0.228459,1.0,0.434239,0.229682,1.0,0.489280,0.331481,1.0,0.506078,0.327451,1.0,0.549047,0.294919,1.0,0.496925,0.251315,1.0,0.486769,0.246109,1.0,0.479020,0.227325,1.0,0.467749,0.226072,1.0,0.480664,0.228577,1.0,0.473150,0.221898,1.0,0.462819,0.222733,1.0,0.480664,0.231917,1.0,0.471037,0.222733,1.0,0.464228,0.222316,1.0,0.478081,0.241518,1.0,0.472681,0.225655,1.0,0.464697,0.225238,1.0,0.482777,0.228994,1.0,0.478316,0.257797,1.0,0.476907,0.258215,1.0,0.454024,0.542745,1.0,0.454024,0.542745,1.0,0.421806,0.728074,1.0,0.398894,0.828899,1.0,0.398894,0.828899,1.0,0.496940,0.534654,1.0,0.496940,0.534654,1.0,0.533698,0.741775,1.0,0.613427,0.837197,1.0,0.613427,0.837197,1.0
|
||||
0.475482,0.538700,1.0,0.473233,0.386308,1.0,0.473982,0.437105,1.0,0.472483,0.335510,1.0,0.464741,0.270262,1.0,0.469310,0.256626,1.0,0.469310,0.256626,1.0,0.450960,0.262055,1.0,0.450960,0.262055,1.0,0.459418,0.335644,1.0,0.446353,0.335777,1.0,0.385055,0.313869,1.0,0.418758,0.251184,1.0,0.431257,0.258226,1.0,0.434927,0.254556,1.0,0.428734,0.234983,1.0,0.432404,0.257410,1.0,0.439973,0.229275,1.0,0.445478,0.227644,1.0,0.432404,0.239061,1.0,0.437679,0.229275,1.0,0.445478,0.227644,1.0,0.429422,0.238654,1.0,0.435615,0.228867,1.0,0.441349,0.230498,1.0,0.423229,0.244362,1.0,0.427817,0.228459,1.0,0.434239,0.229682,1.0,0.489280,0.331481,1.0,0.506078,0.327451,1.0,0.549047,0.294919,1.0,0.496925,0.251315,1.0,0.486769,0.246109,1.0,0.479020,0.227325,1.0,0.467749,0.226072,1.0,0.480664,0.228577,1.0,0.473150,0.221898,1.0,0.462819,0.222733,1.0,0.480664,0.231917,1.0,0.471037,0.222733,1.0,0.464228,0.222316,1.0,0.478081,0.241518,1.0,0.472681,0.225655,1.0,0.464697,0.225238,1.0,0.482777,0.228994,1.0,0.478316,0.257797,1.0,0.476907,0.258215,1.0,0.454024,0.542745,1.0,0.454024,0.542745,1.0,0.421806,0.728074,1.0,0.398894,0.828899,1.0,0.398894,0.828899,1.0,0.496940,0.534654,1.0,0.496940,0.534654,1.0,0.533698,0.741775,1.0,0.613427,0.837197,1.0,0.613427,0.837197,1.0
|
||||
0.474726,0.514133,1.0,0.473017,0.359792,1.0,0.473587,0.411239,1.0,0.472448,0.308344,1.0,0.463954,0.248372,1.0,0.470802,0.242960,1.0,0.470802,0.242960,1.0,0.450969,0.243017,1.0,0.450969,0.243017,1.0,0.458640,0.311058,1.0,0.444831,0.313771,1.0,0.385001,0.292042,1.0,0.418757,0.232220,1.0,0.420488,0.239561,1.0,0.435946,0.220843,1.0,0.439978,0.217258,1.0,0.431913,0.213674,1.0,0.439306,0.214072,1.0,0.444682,0.213276,1.0,0.428777,0.212878,1.0,0.437962,0.216462,1.0,0.441770,0.221241,1.0,0.425865,0.214470,1.0,0.433705,0.220046,1.0,0.436618,0.227613,1.0,0.423177,0.220444,1.0,0.429449,0.220843,1.0,0.432137,0.227215,1.0,0.488521,0.302978,1.0,0.504594,0.297611,1.0,0.556682,0.273055,1.0,0.496877,0.240310,1.0,0.488874,0.239481,1.0,0.478416,0.245376,1.0,0.480202,0.245376,1.0,0.479436,0.217715,1.0,0.472549,0.211366,1.0,0.466172,0.212273,1.0,0.480967,0.215901,1.0,0.472039,0.210006,1.0,0.465662,0.211819,1.0,0.480457,0.215447,1.0,0.474080,0.211819,1.0,0.466172,0.211819,1.0,0.481477,0.215901,1.0,0.474845,0.213180,1.0,0.469743,0.218621,1.0,0.453992,0.515538,1.0,0.453992,0.515538,1.0,0.421804,0.706226,1.0,0.398900,0.823457,1.0,0.398900,0.823457,1.0,0.495459,0.512728,1.0,0.495459,0.512728,1.0,0.533724,0.714528,1.0,0.608813,0.831653,1.0,0.608813,0.831653,1.0
|
||||
0.473213,0.482833,1.0,0.472643,0.325530,1.0,0.472833,0.377964,1.0,0.472454,0.273095,1.0,0.465479,0.223896,1.0,0.470824,0.218515,1.0,0.470824,0.218515,1.0,0.454009,0.218516,1.0,0.454009,0.218516,1.0,0.458608,0.277110,1.0,0.444761,0.281125,1.0,0.383489,0.267533,1.0,0.418755,0.221191,1.0,0.425863,0.221200,1.0,0.437868,0.198649,1.0,0.441946,0.196635,1.0,0.434697,0.190997,1.0,0.442172,0.191400,1.0,0.445796,0.194219,1.0,0.431299,0.192608,1.0,0.439681,0.197844,1.0,0.443758,0.203883,1.0,0.429260,0.196232,1.0,0.436509,0.203883,1.0,0.440133,0.210730,1.0,0.427448,0.201065,1.0,0.433338,0.207106,1.0,0.436509,0.213951,1.0,0.489276,0.272982,1.0,0.506097,0.272869,1.0,0.562833,0.248363,1.0,0.507636,0.226713,1.0,0.499098,0.216702,1.0,0.494029,0.206871,1.0,0.488499,0.198269,1.0,0.488039,0.201546,1.0,0.478131,0.194993,1.0,0.471680,0.192535,1.0,0.486886,0.204414,1.0,0.477210,0.197451,1.0,0.468916,0.197860,1.0,0.487117,0.204823,1.0,0.478822,0.199089,1.0,0.471450,0.201137,1.0,0.490573,0.206052,1.0,0.480205,0.199089,1.0,0.474676,0.202775,1.0,0.450983,0.488252,1.0,0.450983,0.488252,1.0,0.423316,0.687126,1.0,0.398920,0.817981,1.0,0.398920,0.817981,1.0,0.495442,0.477414,1.0,0.495442,0.477414,1.0,0.533740,0.684466,1.0,0.601182,0.818027,1.0,0.601182,0.818027,1.0
|
||||
0.473957,0.455590,1.0,0.472827,0.298223,1.0,0.473204,0.350678,1.0,0.472451,0.245767,1.0,0.465539,0.185859,1.0,0.470848,0.202101,1.0,0.470848,0.202101,1.0,0.457044,0.202136,1.0,0.457044,0.202136,1.0,0.456322,0.247041,1.0,0.440194,0.248315,1.0,0.381928,0.240272,1.0,0.421755,0.202094,1.0,0.430181,0.197117,1.0,0.440686,0.181871,1.0,0.445832,0.181490,1.0,0.438757,0.173105,1.0,0.445832,0.175392,1.0,0.449476,0.178822,1.0,0.435755,0.174630,1.0,0.443902,0.184539,1.0,0.447332,0.190637,1.0,0.432968,0.178822,1.0,0.440472,0.190637,1.0,0.443045,0.197498,1.0,0.430824,0.185302,1.0,0.437256,0.195973,1.0,0.439185,0.200928,1.0,0.490053,0.245764,1.0,0.507655,0.245761,1.0,0.568911,0.226528,1.0,0.507597,0.207477,1.0,0.496751,0.215172,1.0,0.486348,0.209759,1.0,0.484318,0.209308,1.0,0.491676,0.183599,1.0,0.482289,0.179991,1.0,0.476199,0.177735,1.0,0.492437,0.183148,1.0,0.482035,0.182696,1.0,0.473916,0.184952,1.0,0.493706,0.184501,1.0,0.482796,0.187658,1.0,0.474931,0.189011,1.0,0.495228,0.190365,1.0,0.484318,0.190816,1.0,0.478737,0.194875,1.0,0.450973,0.461052,1.0,0.450973,0.461052,1.0,0.432490,0.662791,1.0,0.408011,0.812598,1.0,0.408011,0.812598,1.0,0.496940,0.450129,1.0,0.496940,0.450129,1.0,0.533661,0.662598,1.0,0.591927,0.812526,1.0,0.591927,0.812526,1.0
|
||||
0.474739,0.441925,1.0,0.474155,0.280451,1.0,0.474350,0.334276,1.0,0.473961,0.226626,1.0,0.465482,0.165307,1.0,0.469348,0.183145,1.0,0.469348,0.183145,1.0,0.455566,0.183031,1.0,0.455566,0.183031,1.0,0.457850,0.226619,1.0,0.441740,0.226611,1.0,0.380433,0.223944,1.0,0.421784,0.185677,1.0,0.429356,0.190245,1.0,0.443529,0.171448,1.0,0.448704,0.169449,1.0,0.440830,0.161050,1.0,0.448929,0.162250,1.0,0.452528,0.165849,1.0,0.437905,0.161450,1.0,0.446904,0.171448,1.0,0.450728,0.178247,1.0,0.434531,0.166249,1.0,0.443304,0.177847,1.0,0.446679,0.186246,1.0,0.432056,0.175848,1.0,0.439930,0.183446,1.0,0.442405,0.189446,1.0,0.491576,0.226659,1.0,0.509191,0.226692,1.0,0.572078,0.207452,1.0,0.512275,0.202126,1.0,0.502059,0.204707,1.0,0.493028,0.202104,1.0,0.484973,0.169994,1.0,0.494736,0.170862,1.0,0.485461,0.166523,1.0,0.479604,0.164354,1.0,0.495469,0.170862,1.0,0.482533,0.172164,1.0,0.476187,0.173031,1.0,0.494981,0.171731,1.0,0.483509,0.177805,1.0,0.477652,0.180408,1.0,0.495713,0.175202,1.0,0.484485,0.182578,1.0,0.481801,0.184314,1.0,0.452495,0.447338,1.0,0.452495,0.447338,1.0,0.435664,0.649113,1.0,0.420253,0.801656,1.0,0.420253,0.801656,1.0,0.496983,0.436513,1.0,0.496983,0.436513,1.0,0.530630,0.654502,1.0,0.576667,0.798994,1.0,0.576667,0.798994,1.0
|
||||
0.473978,0.433787,1.0,0.476258,0.272293,1.0,0.475498,0.326124,1.0,0.477018,0.218462,1.0,0.467801,0.158464,1.0,0.472356,0.166655,1.0,0.472356,0.166655,1.0,0.457076,0.164081,1.0,0.457076,0.164081,1.0,0.461643,0.217133,1.0,0.446269,0.215805,1.0,0.378912,0.207665,1.0,0.423396,0.172140,1.0,0.431636,0.190356,1.0,0.439067,0.180669,1.0,0.451450,0.158215,1.0,0.443524,0.150289,1.0,0.452193,0.151610,1.0,0.456156,0.156013,1.0,0.440800,0.151169,1.0,0.450459,0.161296,1.0,0.454422,0.168781,1.0,0.437581,0.154692,1.0,0.446744,0.166580,1.0,0.449221,0.175826,1.0,0.435352,0.162177,1.0,0.442782,0.170543,1.0,0.445010,0.177588,1.0,0.493885,0.219815,1.0,0.510753,0.221169,1.0,0.572068,0.204737,1.0,0.512245,0.185910,1.0,0.501915,0.198186,1.0,0.491267,0.189381,1.0,0.486562,0.177936,1.0,0.498695,0.162088,1.0,0.488047,0.157245,1.0,0.482105,0.155044,1.0,0.499191,0.162529,1.0,0.488047,0.160768,1.0,0.479629,0.163408,1.0,0.500429,0.163849,1.0,0.488791,0.167811,1.0,0.481609,0.170452,1.0,0.501915,0.169572,1.0,0.497457,0.163408,1.0,0.485571,0.174855,1.0,0.450971,0.439204,1.0,0.450971,0.439204,1.0,0.446253,0.643750,1.0,0.435594,0.796158,1.0,0.435594,0.796158,1.0,0.496985,0.428369,1.0,0.496985,0.428369,1.0,0.521411,0.643692,1.0,0.558193,0.798938,1.0,0.558193,0.798938,1.0
|
||||
0.473978,0.433787,1.0,0.476258,0.272293,1.0,0.475498,0.326124,1.0,0.477018,0.218462,1.0,0.467801,0.158464,1.0,0.472356,0.166655,1.0,0.472356,0.166655,1.0,0.457076,0.164081,1.0,0.457076,0.164081,1.0,0.461643,0.217133,1.0,0.446269,0.215805,1.0,0.378912,0.207665,1.0,0.423396,0.172140,1.0,0.431636,0.190356,1.0,0.439067,0.180669,1.0,0.451450,0.158215,1.0,0.443524,0.150289,1.0,0.452193,0.151610,1.0,0.456156,0.156013,1.0,0.440800,0.151169,1.0,0.450459,0.161296,1.0,0.454422,0.168781,1.0,0.437581,0.154692,1.0,0.446744,0.166580,1.0,0.449221,0.175826,1.0,0.435352,0.162177,1.0,0.442782,0.170543,1.0,0.445010,0.177588,1.0,0.493885,0.219815,1.0,0.510753,0.221169,1.0,0.572068,0.204737,1.0,0.512245,0.185910,1.0,0.501915,0.198186,1.0,0.491267,0.189381,1.0,0.486562,0.177936,1.0,0.498695,0.162088,1.0,0.488047,0.157245,1.0,0.482105,0.155044,1.0,0.499191,0.162529,1.0,0.488047,0.160768,1.0,0.479629,0.163408,1.0,0.500429,0.163849,1.0,0.488791,0.167811,1.0,0.481609,0.170452,1.0,0.501915,0.169572,1.0,0.497457,0.163408,1.0,0.485571,0.174855,1.0,0.450971,0.439204,1.0,0.450971,0.439204,1.0,0.446253,0.643750,1.0,0.435594,0.796158,1.0,0.435594,0.796158,1.0,0.496985,0.428369,1.0,0.496985,0.428369,1.0,0.521411,0.643692,1.0,0.558193,0.798938,1.0,0.558193,0.798938,1.0
|
||||
0.473979,0.437821,1.0,0.478523,0.271241,1.0,0.477008,0.326768,1.0,0.480038,0.215715,1.0,0.471637,0.158472,1.0,0.477018,0.166685,1.0,0.477018,0.166685,1.0,0.460145,0.166693,1.0,0.460145,0.166693,1.0,0.462436,0.214361,1.0,0.444834,0.213006,1.0,0.378915,0.207671,1.0,0.423329,0.172170,1.0,0.435081,0.178530,1.0,0.442827,0.174656,1.0,0.455899,0.155721,1.0,0.446216,0.147974,1.0,0.454447,0.147544,1.0,0.458562,0.151847,1.0,0.443553,0.147544,1.0,0.453962,0.155291,1.0,0.458078,0.163037,1.0,0.441132,0.150556,1.0,0.450573,0.161316,1.0,0.453962,0.169062,1.0,0.439196,0.157012,1.0,0.446700,0.165189,1.0,0.449363,0.171644,1.0,0.496914,0.217093,1.0,0.513790,0.218471,1.0,0.575135,0.204825,1.0,0.519931,0.188450,1.0,0.503766,0.193996,1.0,0.493729,0.187913,1.0,0.490079,0.177774,1.0,0.502169,0.161957,1.0,0.490991,0.155468,1.0,0.485060,0.152223,1.0,0.501485,0.162363,1.0,0.490991,0.158712,1.0,0.482779,0.160335,1.0,0.501941,0.161957,1.0,0.492132,0.161957,1.0,0.483919,0.161957,1.0,0.503310,0.162769,1.0,0.495326,0.163580,1.0,0.488254,0.168852,1.0,0.450971,0.441894,1.0,0.450971,0.441894,1.0,0.449402,0.643633,1.0,0.458571,0.793435,1.0,0.458571,0.793435,1.0,0.496986,0.433749,1.0,0.496986,0.433749,1.0,0.515348,0.643511,1.0,0.533667,0.812631,1.0,0.533667,0.812631,1.0
|
||||
0.475488,0.435119,1.0,0.480058,0.274683,1.0,0.478535,0.328162,1.0,0.481581,0.221205,1.0,0.474678,0.161309,1.0,0.480078,0.166713,1.0,0.480078,0.166713,1.0,0.461659,0.166758,1.0,0.461659,0.166758,1.0,0.463982,0.221189,1.0,0.446383,0.221173,1.0,0.381931,0.218452,1.0,0.432519,0.166806,1.0,0.442318,0.175126,1.0,0.446122,0.175549,1.0,0.453731,0.151877,1.0,0.448024,0.150608,1.0,0.457060,0.150608,1.0,0.461340,0.154835,1.0,0.446122,0.150608,1.0,0.455871,0.157794,1.0,0.459914,0.164981,1.0,0.444457,0.153568,1.0,0.453493,0.162868,1.0,0.456822,0.171321,1.0,0.442793,0.159063,1.0,0.449927,0.166671,1.0,0.452304,0.172590,1.0,0.499205,0.221226,1.0,0.516828,0.221248,1.0,0.579714,0.207528,1.0,0.521505,0.196663,1.0,0.506356,0.195197,1.0,0.496336,0.189684,1.0,0.490373,0.174418,1.0,0.502777,0.164240,1.0,0.494667,0.159574,1.0,0.488465,0.155333,1.0,0.505640,0.159998,1.0,0.504685,0.143035,1.0,0.487272,0.162968,1.0,0.510888,0.160847,1.0,0.516374,0.146852,1.0,0.518283,0.147700,1.0,0.516374,0.165088,1.0,0.518521,0.147276,1.0,0.520668,0.154485,1.0,0.453983,0.439193,1.0,0.453983,0.439193,1.0,0.458640,0.649075,1.0,0.481580,0.790773,1.0,0.481580,0.790773,1.0,0.496992,0.431045,1.0,0.496992,0.431045,1.0,0.509172,0.654495,1.0,0.504561,0.820807,1.0,0.504561,0.820807,1.0
|
||||
0.478510,0.455583,1.0,0.480815,0.285987,1.0,0.480046,0.342519,1.0,0.481583,0.229456,1.0,0.475495,0.172154,1.0,0.481603,0.182931,1.0,0.481603,0.182931,1.0,0.463205,0.182963,1.0,0.463205,0.182963,1.0,0.463968,0.229475,1.0,0.446354,0.229494,1.0,0.380414,0.229310,1.0,0.432548,0.183145,1.0,0.442495,0.193283,1.0,0.448785,0.186832,1.0,0.460154,0.171351,1.0,0.451446,0.159740,1.0,0.459428,0.159310,1.0,0.463782,0.164900,1.0,0.448785,0.159310,1.0,0.458703,0.166191,1.0,0.463057,0.175652,1.0,0.446849,0.162750,1.0,0.456283,0.171351,1.0,0.459912,0.180381,1.0,0.444914,0.169201,1.0,0.452655,0.175652,1.0,0.455558,0.182102,1.0,0.498455,0.229494,1.0,0.515327,0.229533,1.0,0.579672,0.221221,1.0,0.522969,0.204919,1.0,0.506860,0.204590,1.0,0.498577,0.200803,1.0,0.497630,0.201223,1.0,0.506860,0.167984,1.0,0.496920,0.168405,1.0,0.491003,0.165460,1.0,0.508990,0.168826,1.0,0.497867,0.170930,1.0,0.490293,0.172613,1.0,0.512067,0.170508,1.0,0.499996,0.172192,1.0,0.492896,0.175137,1.0,0.509936,0.180606,1.0,0.508990,0.174295,1.0,0.500470,0.173454,1.0,0.457031,0.458296,1.0,0.457031,0.458296,1.0,0.469351,0.662670,1.0,0.497001,0.801695,1.0,0.497001,0.801695,1.0,0.499988,0.452870,1.0,0.499988,0.452870,1.0,0.503064,0.657237,1.0,0.470929,0.845264,1.0,0.470929,0.845264,1.0
|
||||
0.479321,0.467852,1.0,0.481018,0.303245,1.0,0.480452,0.358114,1.0,0.481584,0.248376,1.0,0.476974,0.187120,1.0,0.483087,0.196651,1.0,0.483087,0.196651,1.0,0.464734,0.199392,1.0,0.464734,0.199392,1.0,0.463947,0.248434,1.0,0.446309,0.248493,1.0,0.378886,0.229503,1.0,0.435580,0.188595,1.0,0.441017,0.200028,1.0,0.449531,0.194685,1.0,0.461552,0.183556,1.0,0.453037,0.171980,1.0,0.461301,0.170199,1.0,0.465809,0.175987,1.0,0.451284,0.170644,1.0,0.461051,0.176877,1.0,0.465308,0.186671,1.0,0.449281,0.173761,1.0,0.458546,0.181329,1.0,0.461552,0.191123,1.0,0.447528,0.179548,1.0,0.454790,0.185781,1.0,0.457294,0.191569,1.0,0.499207,0.248368,1.0,0.516829,0.248360,1.0,0.579661,0.226694,1.0,0.526073,0.207630,1.0,0.509801,0.215947,1.0,0.500409,0.213025,1.0,0.497592,0.214278,1.0,0.509331,0.180469,1.0,0.499940,0.183807,1.0,0.508861,0.155842,1.0,0.510505,0.178799,1.0,0.517783,0.163355,1.0,0.492427,0.185894,1.0,0.511914,0.180051,1.0,0.522479,0.166277,1.0,0.526469,0.172538,1.0,0.518488,0.183390,1.0,0.527646,0.173372,1.0,0.530932,0.175042,1.0,0.457092,0.469169,1.0,0.457092,0.469169,1.0,0.478525,0.668123,1.0,0.509151,0.818154,1.0,0.509151,0.818154,1.0,0.501549,0.466534,1.0,0.501549,0.466534,1.0,0.495342,0.665405,1.0,0.467778,0.858911,1.0,0.467778,0.858911,1.0
|
||||
0.481557,0.481453,1.0,0.481556,0.312844,1.0,0.481556,0.369047,1.0,0.481555,0.256641,1.0,0.477759,0.193962,1.0,0.484679,0.202062,1.0,0.484679,0.202062,1.0,0.469355,0.202119,1.0,0.469355,0.202119,1.0,0.463917,0.257983,1.0,0.446279,0.259326,1.0,0.377393,0.229511,1.0,0.435660,0.191185,1.0,0.441104,0.200732,1.0,0.449686,0.198882,1.0,0.454889,0.197495,1.0,0.453588,0.176226,1.0,0.462171,0.175764,1.0,0.467113,0.180387,1.0,0.452028,0.176226,1.0,0.461911,0.182237,1.0,0.466332,0.191022,1.0,0.449686,0.177613,1.0,0.459570,0.185936,1.0,0.462431,0.194721,1.0,0.447606,0.183162,1.0,0.454628,0.188710,1.0,0.457229,0.194721,1.0,0.497671,0.256639,1.0,0.513786,0.256638,1.0,0.581187,0.229364,1.0,0.530630,0.213012,1.0,0.516734,0.224296,1.0,0.508873,0.223846,1.0,0.502026,0.222043,1.0,0.511663,0.185074,1.0,0.501265,0.184624,1.0,0.494672,0.181468,1.0,0.512423,0.187329,1.0,0.502533,0.188231,1.0,0.494672,0.191386,1.0,0.512931,0.188231,1.0,0.503547,0.187329,1.0,0.495433,0.190033,1.0,0.511409,0.190935,1.0,0.497969,0.180116,1.0,0.493404,0.180566,1.0,0.458522,0.482794,1.0,0.458522,0.482794,1.0,0.473946,0.673574,1.0,0.507586,0.817938,1.0,0.507586,0.817938,1.0,0.504592,0.480112,1.0,0.504592,0.480112,1.0,0.496946,0.668161,1.0,0.475470,0.837174,1.0,0.475470,0.837174,1.0
|
||||
0.481557,0.481453,1.0,0.481556,0.312844,1.0,0.481556,0.369047,1.0,0.481555,0.256641,1.0,0.477759,0.193962,1.0,0.484679,0.202062,1.0,0.484679,0.202062,1.0,0.469355,0.202119,1.0,0.469355,0.202119,1.0,0.463917,0.257983,1.0,0.446279,0.259326,1.0,0.377393,0.229511,1.0,0.435660,0.191185,1.0,0.441104,0.200732,1.0,0.449686,0.198882,1.0,0.454889,0.197495,1.0,0.453588,0.176226,1.0,0.462171,0.175764,1.0,0.467113,0.180387,1.0,0.452028,0.176226,1.0,0.461911,0.182237,1.0,0.466332,0.191022,1.0,0.449686,0.177613,1.0,0.459570,0.185936,1.0,0.462431,0.194721,1.0,0.447606,0.183162,1.0,0.454628,0.188710,1.0,0.457229,0.194721,1.0,0.497671,0.256639,1.0,0.513786,0.256638,1.0,0.581187,0.229364,1.0,0.530630,0.213012,1.0,0.516734,0.224296,1.0,0.508873,0.223846,1.0,0.502026,0.222043,1.0,0.511663,0.185074,1.0,0.501265,0.184624,1.0,0.494672,0.181468,1.0,0.512423,0.187329,1.0,0.502533,0.188231,1.0,0.494672,0.191386,1.0,0.512931,0.188231,1.0,0.503547,0.187329,1.0,0.495433,0.190033,1.0,0.511409,0.190935,1.0,0.497969,0.180116,1.0,0.493404,0.180566,1.0,0.458522,0.482794,1.0,0.458522,0.482794,1.0,0.473946,0.673574,1.0,0.507586,0.817938,1.0,0.507586,0.817938,1.0,0.504592,0.480112,1.0,0.504592,0.480112,1.0,0.496946,0.668161,1.0,0.475470,0.837174,1.0,0.475470,0.837174,1.0
|
||||
0.481564,0.467842,1.0,0.479304,0.303249,1.0,0.480057,0.358114,1.0,0.478550,0.248385,1.0,0.480032,0.185765,1.0,0.489259,0.188604,1.0,0.489259,0.188604,1.0,0.472348,0.191278,1.0,0.472348,0.191278,1.0,0.462427,0.248418,1.0,0.446304,0.248450,1.0,0.377356,0.223967,1.0,0.434028,0.185844,1.0,0.438801,0.196190,1.0,0.447571,0.195731,1.0,0.451956,0.196190,1.0,0.451956,0.171429,1.0,0.459952,0.171429,1.0,0.464336,0.174638,1.0,0.450924,0.171429,1.0,0.459435,0.177848,1.0,0.464078,0.184726,1.0,0.448086,0.172804,1.0,0.457114,0.180141,1.0,0.461499,0.187019,1.0,0.445765,0.177390,1.0,0.451697,0.183351,1.0,0.454793,0.190229,1.0,0.494651,0.248385,1.0,0.510753,0.248384,1.0,0.581229,0.226707,1.0,0.529109,0.207460,1.0,0.516633,0.213704,1.0,0.507449,0.210439,1.0,0.501939,0.211838,1.0,0.508499,0.191780,1.0,0.501939,0.176853,1.0,0.496429,0.173587,1.0,0.511122,0.189447,1.0,0.502989,0.180584,1.0,0.496166,0.181518,1.0,0.513222,0.187581,1.0,0.505350,0.180584,1.0,0.498528,0.182450,1.0,0.516108,0.185249,1.0,0.508761,0.181051,1.0,0.504563,0.183383,1.0,0.457054,0.469207,1.0,0.457054,0.469207,1.0,0.461678,0.679011,1.0,0.495398,0.807093,1.0,0.495398,0.807093,1.0,0.506075,0.466477,1.0,0.506075,0.466477,1.0,0.509143,0.665312,1.0,0.493829,0.834372,1.0,0.493829,0.834372,1.0
|
||||
0.481563,0.452829,1.0,0.480416,0.297470,1.0,0.480799,0.349256,1.0,0.480034,0.245683,1.0,0.478579,0.182982,1.0,0.486262,0.196642,1.0,0.486262,0.196642,1.0,0.472420,0.196688,1.0,0.472420,0.196688,1.0,0.462415,0.245703,1.0,0.444796,0.245722,1.0,0.377378,0.204753,1.0,0.423341,0.182971,1.0,0.431190,0.188794,1.0,0.439815,0.198552,1.0,0.446350,0.205522,1.0,0.447918,0.188330,1.0,0.454975,0.184612,1.0,0.459941,0.173925,1.0,0.445565,0.180894,1.0,0.454452,0.177178,1.0,0.460202,0.172995,1.0,0.443735,0.173925,1.0,0.452361,0.170672,1.0,0.458372,0.170207,1.0,0.441383,0.166490,1.0,0.448440,0.166490,1.0,0.453929,0.167884,1.0,0.496912,0.241609,1.0,0.513790,0.237535,1.0,0.582797,0.213015,1.0,0.533677,0.202063,1.0,0.521859,0.205792,1.0,0.511273,0.206709,1.0,0.503271,0.204415,1.0,0.509208,0.186975,1.0,0.503787,0.177796,1.0,0.498366,0.173666,1.0,0.512048,0.184221,1.0,0.504561,0.175043,1.0,0.498108,0.171371,1.0,0.514630,0.180091,1.0,0.506885,0.173666,1.0,0.500431,0.172289,1.0,0.518760,0.175961,1.0,0.511532,0.173666,1.0,0.506627,0.173666,1.0,0.458522,0.455570,1.0,0.458522,0.455570,1.0,0.458560,0.668141,1.0,0.463223,0.790815,1.0,0.463223,0.790815,1.0,0.504603,0.450088,1.0,0.504603,0.450088,1.0,0.509186,0.659872,1.0,0.529094,0.812551,1.0,0.529094,0.812551,1.0
|
||||
0.479284,0.461006,1.0,0.477598,0.291428,1.0,0.478160,0.347954,1.0,0.477036,0.234902,1.0,0.478580,0.183070,1.0,0.486266,0.196642,1.0,0.486266,0.196642,1.0,0.472399,0.193990,1.0,0.472399,0.193990,1.0,0.459400,0.233549,1.0,0.441765,0.232196,1.0,0.381946,0.188544,1.0,0.418745,0.166711,1.0,0.422823,0.168784,1.0,0.437767,0.157819,1.0,0.437293,0.160350,1.0,0.420451,0.164567,1.0,0.421874,0.167519,1.0,0.453898,0.174267,1.0,0.433023,0.197039,1.0,0.441326,0.173844,1.0,0.452237,0.173423,1.0,0.433023,0.197039,1.0,0.441326,0.175953,1.0,0.444884,0.177640,1.0,0.432074,0.189869,1.0,0.450577,0.167941,1.0,0.433023,0.198304,1.0,0.495418,0.236223,1.0,0.513801,0.237544,1.0,0.582786,0.204801,1.0,0.535302,0.188539,1.0,0.525396,0.206920,1.0,0.512300,0.210646,1.0,0.504180,0.212508,1.0,0.510467,0.199005,1.0,0.503918,0.178050,1.0,0.498156,0.175721,1.0,0.514133,0.188294,1.0,0.505752,0.177584,1.0,0.498418,0.174324,1.0,0.518062,0.182706,1.0,0.509681,0.174790,1.0,0.501822,0.171996,1.0,0.523042,0.177119,1.0,0.518324,0.173393,1.0,0.510205,0.172462,1.0,0.457032,0.463723,1.0,0.457032,0.463723,1.0,0.460135,0.665564,1.0,0.435702,0.801685,1.0,0.435702,0.801685,1.0,0.501535,0.458289,1.0,0.501535,0.458289,1.0,0.509244,0.665316,1.0,0.555167,0.815356,1.0,0.555167,0.815356,1.0
|
||||
0.477015,0.463740,1.0,0.479324,0.300240,1.0,0.478554,0.354740,1.0,0.480093,0.245740,1.0,0.476240,0.181668,1.0,0.486181,0.199346,1.0,0.486181,0.199346,1.0,0.470860,0.199417,1.0,0.470860,0.199417,1.0,0.462465,0.245710,1.0,0.444838,0.245680,1.0,0.386556,0.180349,1.0,0.411070,0.161145,1.0,0.413852,0.157504,1.0,0.433062,0.167389,1.0,0.438622,0.143125,1.0,0.424468,0.151213,1.0,0.432556,0.166940,1.0,0.423204,0.149865,1.0,0.420930,0.163794,1.0,0.420171,0.167839,1.0,0.432304,0.167389,1.0,0.422193,0.191205,1.0,0.422699,0.179521,1.0,0.434073,0.167389,1.0,0.422699,0.197945,1.0,0.429270,0.201540,1.0,0.431545,0.199293,1.0,0.497713,0.244356,1.0,0.515333,0.242972,1.0,0.582771,0.191286,1.0,0.544417,0.188497,1.0,0.531760,0.206256,1.0,0.522062,0.212482,1.0,0.514247,0.217272,1.0,0.514786,0.200509,1.0,0.506973,0.188056,1.0,0.502662,0.178477,1.0,0.513978,0.188535,1.0,0.506973,0.182308,1.0,0.500238,0.178477,1.0,0.515594,0.181351,1.0,0.506973,0.178956,1.0,0.500507,0.177519,1.0,0.516133,0.175124,1.0,0.509129,0.173687,1.0,0.502662,0.175124,1.0,0.455536,0.463781,1.0,0.455536,0.463781,1.0,0.458648,0.673614,1.0,0.421742,0.815352,1.0,0.421742,0.815352,1.0,0.498495,0.463699,1.0,0.498495,0.463699,1.0,0.518348,0.668248,1.0,0.570573,0.831684,1.0,0.570573,0.831684,1.0
|
||||
0.481585,0.466456,1.0,0.481591,0.302928,1.0,0.481589,0.357437,1.0,0.481593,0.248419,1.0,0.476284,0.184442,1.0,0.486180,0.193971,1.0,0.486180,0.193971,1.0,0.470874,0.193990,1.0,0.470874,0.193990,1.0,0.463984,0.248421,1.0,0.446376,0.248423,1.0,0.400353,0.191276,1.0,0.398851,0.166741,1.0,0.403298,0.171825,1.0,0.404328,0.174387,1.0,0.405769,0.154251,1.0,0.410506,0.135945,1.0,0.402063,0.145464,1.0,0.407211,0.146929,1.0,0.413801,0.150590,1.0,0.406387,0.145831,1.0,0.410506,0.149126,1.0,0.412771,0.148027,1.0,0.407417,0.156448,1.0,0.412359,0.156814,1.0,0.384352,0.180611,1.0,0.402474,0.142902,1.0,0.409477,0.168895,1.0,0.497697,0.248403,1.0,0.513800,0.248388,1.0,0.582844,0.185838,1.0,0.553646,0.191206,1.0,0.541167,0.207127,1.0,0.531219,0.213192,1.0,0.522693,0.216224,1.0,0.526953,0.195504,1.0,0.520132,0.186406,1.0,0.515299,0.181353,1.0,0.527240,0.186912,1.0,0.519847,0.182363,1.0,0.513593,0.177309,1.0,0.527807,0.180342,1.0,0.520416,0.176298,1.0,0.515015,0.174277,1.0,0.529510,0.174277,1.0,0.522406,0.172256,1.0,0.517857,0.171244,1.0,0.457093,0.466525,1.0,0.457093,0.466525,1.0,0.455559,0.681693,1.0,0.423396,0.817945,1.0,0.423396,0.817945,1.0,0.506078,0.466386,1.0,0.506078,0.466386,1.0,0.521396,0.668134,1.0,0.567406,0.831680,1.0,0.567406,0.831680,1.0
|
||||
0.481585,0.466456,1.0,0.481591,0.302928,1.0,0.481589,0.357437,1.0,0.481593,0.248419,1.0,0.476284,0.184442,1.0,0.486180,0.193971,1.0,0.486180,0.193971,1.0,0.470874,0.193990,1.0,0.470874,0.193990,1.0,0.463984,0.248421,1.0,0.446376,0.248423,1.0,0.400353,0.191276,1.0,0.398851,0.166741,1.0,0.403298,0.171825,1.0,0.404328,0.174387,1.0,0.405769,0.154251,1.0,0.410506,0.135945,1.0,0.402063,0.145464,1.0,0.407211,0.146929,1.0,0.413801,0.150590,1.0,0.406387,0.145831,1.0,0.410506,0.149126,1.0,0.412771,0.148027,1.0,0.407417,0.156448,1.0,0.412359,0.156814,1.0,0.384352,0.180611,1.0,0.402474,0.142902,1.0,0.409477,0.168895,1.0,0.497697,0.248403,1.0,0.513800,0.248388,1.0,0.582844,0.185838,1.0,0.553646,0.191206,1.0,0.541167,0.207127,1.0,0.531219,0.213192,1.0,0.522693,0.216224,1.0,0.526953,0.195504,1.0,0.520132,0.186406,1.0,0.515299,0.181353,1.0,0.527240,0.186912,1.0,0.519847,0.182363,1.0,0.513593,0.177309,1.0,0.527807,0.180342,1.0,0.520416,0.176298,1.0,0.515015,0.174277,1.0,0.529510,0.174277,1.0,0.522406,0.172256,1.0,0.517857,0.171244,1.0,0.457093,0.466525,1.0,0.457093,0.466525,1.0,0.455559,0.681693,1.0,0.423396,0.817945,1.0,0.423396,0.817945,1.0,0.506078,0.466386,1.0,0.506078,0.466386,1.0,0.521396,0.668134,1.0,0.567406,0.831680,1.0,0.567406,0.831680,1.0
|
||||
0.482317,0.462381,1.0,0.481738,0.299865,1.0,0.481931,0.354037,1.0,0.481545,0.245693,1.0,0.477043,0.181612,1.0,0.486189,0.183156,1.0,0.486189,0.183156,1.0,0.470858,0.185669,1.0,0.470858,0.185669,1.0,0.463954,0.245731,1.0,0.446364,0.245769,1.0,0.388104,0.204719,1.0,0.395743,0.177615,1.0,0.404931,0.187880,1.0,0.408839,0.185019,1.0,0.399643,0.189106,1.0,0.410218,0.176844,1.0,0.408609,0.180931,1.0,0.399183,0.183384,1.0,0.409989,0.170306,1.0,0.405850,0.171531,1.0,0.399413,0.182567,1.0,0.406540,0.162949,1.0,0.404701,0.163766,1.0,0.398723,0.185019,1.0,0.404701,0.163766,1.0,0.397344,0.154366,1.0,0.397344,0.184610,1.0,0.496907,0.244340,1.0,0.512269,0.242987,1.0,0.590411,0.204876,1.0,0.561302,0.204898,1.0,0.557344,0.198564,1.0,0.553182,0.182181,1.0,0.540401,0.176897,1.0,0.537427,0.206492,1.0,0.533266,0.190108,1.0,0.532375,0.179540,1.0,0.539802,0.203320,1.0,0.532375,0.199093,1.0,0.540401,0.180596,1.0,0.543370,0.203320,1.0,0.534156,0.196450,1.0,0.536240,0.185353,1.0,0.543667,0.204906,1.0,0.538911,0.185881,1.0,0.533266,0.189581,1.0,0.458542,0.463777,1.0,0.458542,0.463777,1.0,0.458672,0.670916,1.0,0.437122,0.804419,1.0,0.437122,0.804419,1.0,0.506092,0.460986,1.0,0.506092,0.460986,1.0,0.518399,0.665384,1.0,0.553656,0.837028,1.0,0.553656,0.837028,1.0
|
||||
0.482367,0.454206,1.0,0.482914,0.291719,1.0,0.482731,0.345881,1.0,0.483096,0.237556,1.0,0.478540,0.169477,1.0,0.486218,0.177580,1.0,0.486218,0.177580,1.0,0.470912,0.180236,1.0,0.470912,0.180236,1.0,0.465460,0.240259,1.0,0.447823,0.242961,1.0,0.374335,0.229441,1.0,0.391191,0.207574,1.0,0.401903,0.194576,1.0,0.399464,0.187349,1.0,0.397567,0.192167,1.0,0.397838,0.194094,1.0,0.395669,0.192167,1.0,0.408949,0.218186,1.0,0.407866,0.190240,1.0,0.397567,0.217704,1.0,0.400819,0.220113,1.0,0.402445,0.190721,1.0,0.398651,0.220595,1.0,0.399735,0.220595,1.0,0.414641,0.216740,1.0,0.414370,0.215294,1.0,0.408679,0.219149,1.0,0.499226,0.234844,1.0,0.515355,0.232131,1.0,0.562865,0.226768,1.0,0.552141,0.183069,1.0,0.550521,0.172995,1.0,0.549297,0.170512,1.0,0.559599,0.191933,1.0,0.549474,0.168028,1.0,0.550870,0.182309,1.0,0.553490,0.186656,1.0,0.551745,0.172685,1.0,0.553312,0.171444,1.0,0.557333,0.186966,1.0,0.554885,0.171754,1.0,0.553490,0.170822,1.0,0.560125,0.189760,1.0,0.555583,0.171444,1.0,0.550521,0.182930,1.0,0.561349,0.195038,1.0,0.458587,0.455554,1.0,0.458587,0.455554,1.0,0.466266,0.668164,1.0,0.460128,0.798995,1.0,0.460128,0.798995,1.0,0.506147,0.452858,1.0,0.506147,0.452858,1.0,0.510741,0.665413,1.0,0.533724,0.837136,1.0,0.533724,0.837136,1.0
|
||||
0.483134,0.458318,1.0,0.481980,0.298916,1.0,0.482364,0.352050,1.0,0.481595,0.245782,1.0,0.479316,0.172173,1.0,0.487727,0.174853,1.0,0.487727,0.174853,1.0,0.472341,0.174878,1.0,0.472341,0.174878,1.0,0.463196,0.247093,1.0,0.444796,0.248404,1.0,0.375867,0.289365,1.0,0.398816,0.248444,1.0,0.411721,0.230199,1.0,0.417854,0.229251,1.0,0.424519,0.240627,1.0,0.417587,0.226407,1.0,0.421586,0.255321,1.0,0.420520,0.255794,1.0,0.409588,0.227830,1.0,0.418120,0.278546,1.0,0.415720,0.253425,1.0,0.407455,0.234465,1.0,0.418120,0.297032,1.0,0.412255,0.254373,1.0,0.402923,0.238731,1.0,0.400790,0.248685,1.0,0.401056,0.250581,1.0,0.499238,0.243047,1.0,0.516881,0.240311,1.0,0.559812,0.251311,1.0,0.559807,0.226664,1.0,0.565375,0.254738,1.0,0.569031,0.230977,1.0,0.565849,0.215136,1.0,0.567599,0.228431,1.0,0.561234,0.208065,1.0,0.561078,0.207781,1.0,0.558052,0.220228,1.0,0.558849,0.222491,1.0,0.558693,0.223622,1.0,0.550578,0.229562,1.0,0.552010,0.225602,1.0,0.553281,0.219662,1.0,0.549146,0.231825,1.0,0.549302,0.232674,1.0,0.550417,0.239745,1.0,0.458645,0.461037,1.0,0.458645,0.461037,1.0,0.470832,0.676307,1.0,0.484730,0.809857,1.0,0.484730,0.809857,1.0,0.507622,0.455599,1.0,0.507622,0.455599,1.0,0.509261,0.665440,1.0,0.507598,0.839747,1.0,0.507598,0.839747,1.0
|
||||
0.484633,0.466456,1.0,0.483527,0.305073,1.0,0.483896,0.358867,1.0,0.483158,0.251279,1.0,0.480075,0.178971,1.0,0.489263,0.177631,1.0,0.489263,0.177631,1.0,0.472394,0.177647,1.0,0.472394,0.177647,1.0,0.463997,0.252604,1.0,0.444836,0.253929,1.0,0.397235,0.354657,1.0,0.417209,0.283932,1.0,0.427058,0.281345,1.0,0.433302,0.258180,1.0,0.435745,0.250458,1.0,0.428959,0.245149,1.0,0.435745,0.243219,1.0,0.440904,0.247080,1.0,0.424886,0.247080,1.0,0.435203,0.254319,1.0,0.440632,0.262523,1.0,0.422443,0.251423,1.0,0.431673,0.258662,1.0,0.434117,0.266867,1.0,0.419729,0.258662,1.0,0.425158,0.259628,1.0,0.427873,0.265902,1.0,0.502300,0.251211,1.0,0.521443,0.251143,1.0,0.568974,0.346534,1.0,0.558234,0.289306,1.0,0.559687,0.276031,1.0,0.568099,0.264344,1.0,0.568625,0.250786,1.0,0.560214,0.241436,1.0,0.563630,0.236761,1.0,0.563896,0.248448,1.0,0.555740,0.243774,1.0,0.560214,0.238631,1.0,0.562844,0.242371,1.0,0.551271,0.251254,1.0,0.556531,0.241904,1.0,0.561792,0.243774,1.0,0.549432,0.252656,1.0,0.555740,0.238164,1.0,0.556531,0.241904,1.0,0.460124,0.469129,1.0,0.460124,0.469129,1.0,0.472474,0.679032,1.0,0.509179,0.826261,1.0,0.509179,0.826261,1.0,0.509143,0.463783,1.0,0.509143,0.463783,1.0,0.507581,0.668186,1.0,0.476983,0.861698,1.0,0.476983,0.861698,1.0
|
||||
0.484710,0.473296,1.0,0.483569,0.320925,1.0,0.483949,0.371715,1.0,0.483189,0.270134,1.0,0.480837,0.183053,1.0,0.490808,0.180354,1.0,0.490808,0.180354,1.0,0.472453,0.182906,1.0,0.472453,0.182906,1.0,0.465523,0.270227,1.0,0.447857,0.270319,1.0,0.423372,0.384781,1.0,0.423283,0.302998,1.0,0.430329,0.285444,1.0,0.435889,0.270619,1.0,0.431845,0.246809,1.0,0.422496,0.253099,1.0,0.426539,0.241419,1.0,0.432604,0.240520,1.0,0.420474,0.255794,1.0,0.429824,0.245911,1.0,0.436899,0.248157,1.0,0.419716,0.259837,1.0,0.428560,0.252650,1.0,0.434878,0.256693,1.0,0.419969,0.265229,1.0,0.425781,0.262532,1.0,0.429824,0.262982,1.0,0.501579,0.267491,1.0,0.519969,0.264848,1.0,0.544458,0.379277,1.0,0.556625,0.294905,1.0,0.556854,0.277842,1.0,0.571760,0.251343,1.0,0.569990,0.250894,1.0,0.574031,0.270656,1.0,0.568729,0.249995,1.0,0.565948,0.254486,1.0,0.569234,0.280087,1.0,0.562411,0.260774,1.0,0.561906,0.264368,1.0,0.563677,0.287273,1.0,0.555844,0.267960,1.0,0.557609,0.269308,1.0,0.557609,0.292663,1.0,0.552307,0.293112,1.0,0.555339,0.293561,1.0,0.460199,0.474650,1.0,0.460199,0.474650,1.0,0.475476,0.681710,1.0,0.509217,0.834334,1.0,0.509217,0.834334,1.0,0.509220,0.471943,1.0,0.509220,0.471943,1.0,0.500037,0.681812,1.0,0.477010,0.861689,1.0,0.477010,0.861689,1.0
|
||||
0.484710,0.473296,1.0,0.483569,0.320925,1.0,0.483949,0.371715,1.0,0.483189,0.270134,1.0,0.480837,0.183053,1.0,0.490808,0.180354,1.0,0.490808,0.180354,1.0,0.472453,0.182906,1.0,0.472453,0.182906,1.0,0.465523,0.270227,1.0,0.447857,0.270319,1.0,0.423372,0.384781,1.0,0.423283,0.302998,1.0,0.430329,0.285444,1.0,0.435889,0.270619,1.0,0.431845,0.246809,1.0,0.422496,0.253099,1.0,0.426539,0.241419,1.0,0.432604,0.240520,1.0,0.420474,0.255794,1.0,0.429824,0.245911,1.0,0.436899,0.248157,1.0,0.419716,0.259837,1.0,0.428560,0.252650,1.0,0.434878,0.256693,1.0,0.419969,0.265229,1.0,0.425781,0.262532,1.0,0.429824,0.262982,1.0,0.501579,0.267491,1.0,0.519969,0.264848,1.0,0.544458,0.379277,1.0,0.556625,0.294905,1.0,0.556854,0.277842,1.0,0.571760,0.251343,1.0,0.569990,0.250894,1.0,0.574031,0.270656,1.0,0.568729,0.249995,1.0,0.565948,0.254486,1.0,0.569234,0.280087,1.0,0.562411,0.260774,1.0,0.561906,0.264368,1.0,0.563677,0.287273,1.0,0.555844,0.267960,1.0,0.557609,0.269308,1.0,0.557609,0.292663,1.0,0.552307,0.293112,1.0,0.555339,0.293561,1.0,0.460199,0.474650,1.0,0.460199,0.474650,1.0,0.475476,0.681710,1.0,0.509217,0.834334,1.0,0.509217,0.834334,1.0,0.509220,0.471943,1.0,0.509220,0.471943,1.0,0.500037,0.681812,1.0,0.477010,0.861689,1.0,0.477010,0.861689,1.0
|
||||
0.485482,0.470550,1.0,0.484835,0.320233,1.0,0.485051,0.370339,1.0,0.484620,0.270127,1.0,0.482357,0.181626,1.0,0.492329,0.177577,1.0,0.492329,0.177577,1.0,0.472470,0.177537,1.0,0.472470,0.177537,1.0,0.465501,0.271513,1.0,0.446383,0.272900,1.0,0.434133,0.390194,1.0,0.420289,0.294810,1.0,0.422614,0.279526,1.0,0.418921,0.263332,1.0,0.413752,0.239262,1.0,0.404643,0.240575,1.0,0.406858,0.234010,1.0,0.411043,0.234010,1.0,0.403166,0.247578,1.0,0.408828,0.238825,1.0,0.414982,0.237949,1.0,0.404396,0.257644,1.0,0.410797,0.244076,1.0,0.418429,0.245389,1.0,0.406612,0.266396,1.0,0.414736,0.254580,1.0,0.420152,0.257206,1.0,0.503023,0.266113,1.0,0.521427,0.262099,1.0,0.532141,0.382026,1.0,0.556766,0.297545,1.0,0.559130,0.289712,1.0,0.556125,0.289267,1.0,0.557125,0.289267,1.0,0.584437,0.282139,1.0,0.589948,0.282139,1.0,0.593708,0.281248,1.0,0.582182,0.283476,1.0,0.586193,0.271003,1.0,0.587193,0.264320,1.0,0.578672,0.282139,1.0,0.580677,0.271448,1.0,0.578672,0.277239,1.0,0.574667,0.277684,1.0,0.578927,0.271003,1.0,0.577922,0.272784,1.0,0.461695,0.471940,1.0,0.461695,0.471940,1.0,0.472352,0.678994,1.0,0.506158,0.818079,1.0,0.506158,0.818079,1.0,0.509269,0.469161,1.0,0.509269,0.469161,1.0,0.510758,0.668146,1.0,0.493803,0.839768,1.0,0.493803,0.839768,1.0
|
||||
0.486984,0.465121,1.0,0.485200,0.310837,1.0,0.485794,0.362265,1.0,0.484605,0.259409,1.0,0.483122,0.170771,1.0,0.493875,0.166792,1.0,0.493875,0.166792,1.0,0.473974,0.166741,1.0,0.473974,0.166741,1.0,0.465492,0.263468,1.0,0.446380,0.267527,1.0,0.423400,0.379171,1.0,0.411063,0.281167,1.0,0.407973,0.261908,1.0,0.406256,0.245336,1.0,0.392763,0.229199,1.0,0.396197,0.247081,1.0,0.392272,0.223530,1.0,0.394480,0.227455,1.0,0.396688,0.245336,1.0,0.392518,0.223530,1.0,0.393499,0.229635,1.0,0.397179,0.246644,1.0,0.392272,0.226146,1.0,0.397179,0.240539,1.0,0.397915,0.250133,1.0,0.399877,0.239667,1.0,0.400613,0.240975,1.0,0.503016,0.256678,1.0,0.521427,0.253946,1.0,0.544458,0.368351,1.0,0.565906,0.278506,1.0,0.568724,0.270254,1.0,0.592292,0.269808,1.0,0.589786,0.258219,1.0,0.592292,0.268025,1.0,0.591792,0.255098,1.0,0.585526,0.256881,1.0,0.587781,0.272483,1.0,0.578505,0.253761,1.0,0.579255,0.256435,1.0,0.569979,0.277832,1.0,0.572484,0.257773,1.0,0.575745,0.262231,1.0,0.564464,0.272483,1.0,0.564464,0.272483,1.0,0.565714,0.273820,1.0,0.463232,0.466505,1.0,0.463232,0.466505,1.0,0.464739,0.673625,1.0,0.487720,0.804373,1.0,0.487720,0.804373,1.0,0.510736,0.463737,1.0,0.510736,0.463737,1.0,0.519957,0.662696,1.0,0.519907,0.826201,1.0,0.519907,0.826201,1.0
|
||||
0.491567,0.458317,1.0,0.486452,0.307049,1.0,0.488157,0.357472,1.0,0.484746,0.256627,1.0,0.484639,0.174813,1.0,0.495377,0.169435,1.0,0.495377,0.169435,1.0,0.477018,0.166762,1.0,0.477018,0.166762,1.0,0.466296,0.259351,1.0,0.447845,0.262076,1.0,0.404933,0.357536,1.0,0.400337,0.251237,1.0,0.405881,0.240367,1.0,0.407646,0.224676,1.0,0.408402,0.213469,1.0,0.402855,0.189710,1.0,0.406637,0.187917,1.0,0.408150,0.195538,1.0,0.399072,0.195090,1.0,0.404872,0.195538,1.0,0.407898,0.204952,1.0,0.395794,0.203158,1.0,0.402855,0.200918,1.0,0.405629,0.209883,1.0,0.393777,0.213918,1.0,0.399577,0.205848,1.0,0.402603,0.209883,1.0,0.503873,0.253952,1.0,0.523000,0.251277,1.0,0.561354,0.354634,1.0,0.570500,0.256631,1.0,0.566620,0.243368,1.0,0.569938,0.225197,1.0,0.572750,0.214750,1.0,0.572750,0.222926,1.0,0.580417,0.210207,1.0,0.587057,0.203847,1.0,0.580161,0.225652,1.0,0.584505,0.211116,1.0,0.581182,0.213841,1.0,0.587828,0.233374,1.0,0.590635,0.222018,1.0,0.587313,0.224289,1.0,0.589359,0.229286,1.0,0.591656,0.218383,1.0,0.588849,0.204302,1.0,0.467797,0.463734,1.0,0.467797,0.463734,1.0,0.470845,0.670930,1.0,0.469351,0.793570,1.0,0.469351,0.793570,1.0,0.515338,0.452899,1.0,0.515338,0.452899,1.0,0.521396,0.662717,1.0,0.544365,0.804372,1.0,0.544365,0.804372,1.0
|
||||
0.493837,0.471944,1.0,0.486975,0.316544,1.0,0.489262,0.368344,1.0,0.484688,0.264744,1.0,0.486194,0.182987,1.0,0.496862,0.180356,1.0,0.496862,0.180356,1.0,0.481554,0.180321,1.0,0.481554,0.180321,1.0,0.466317,0.267425,1.0,0.447947,0.270106,1.0,0.386541,0.335539,1.0,0.397258,0.242994,1.0,0.406048,0.227862,1.0,0.412877,0.217123,1.0,0.418917,0.204050,1.0,0.409725,0.190509,1.0,0.417604,0.184440,1.0,0.422594,0.194712,1.0,0.406310,0.189576,1.0,0.417079,0.186307,1.0,0.418917,0.202649,1.0,0.403684,0.192377,1.0,0.413927,0.190977,1.0,0.414715,0.203583,1.0,0.401321,0.199381,1.0,0.408675,0.194244,1.0,0.412089,0.204050,1.0,0.502323,0.259332,1.0,0.519959,0.253920,1.0,0.579651,0.332886,1.0,0.572089,0.242977,1.0,0.566594,0.218644,1.0,0.565229,0.201176,1.0,0.565771,0.186132,1.0,0.573417,0.189530,1.0,0.572870,0.176913,1.0,0.571776,0.169148,1.0,0.576693,0.194381,1.0,0.576146,0.179339,1.0,0.570687,0.187588,1.0,0.578875,0.201176,1.0,0.579422,0.183706,1.0,0.574234,0.190985,1.0,0.581604,0.206998,1.0,0.582698,0.195353,1.0,0.578328,0.194867,1.0,0.470817,0.474650,1.0,0.470817,0.474650,1.0,0.480085,0.676370,1.0,0.447861,0.799033,1.0,0.447861,0.799033,1.0,0.516857,0.469237,1.0,0.516857,0.469237,1.0,0.519871,0.668112,1.0,0.556792,0.801740,1.0,0.556792,0.801740,1.0
|
||||
0.493869,0.478774,1.0,0.486995,0.322462,1.0,0.489286,0.374566,1.0,0.484704,0.270357,1.0,0.486994,0.194019,1.0,0.496940,0.193952,1.0,0.496940,0.193952,1.0,0.481634,0.191271,1.0,0.481634,0.191271,1.0,0.467055,0.271696,1.0,0.449407,0.273035,1.0,0.374285,0.311040,1.0,0.397295,0.229430,1.0,0.408041,0.228476,1.0,0.421221,0.216251,1.0,0.424372,0.222363,1.0,0.420361,0.198423,1.0,0.429244,0.205044,1.0,0.431249,0.219307,1.0,0.417209,0.196894,1.0,0.426378,0.208101,1.0,0.425519,0.222363,1.0,0.413485,0.199442,1.0,0.422080,0.208610,1.0,0.421507,0.220835,1.0,0.410046,0.204535,1.0,0.415777,0.209629,1.0,0.417209,0.217269,1.0,0.502335,0.270271,1.0,0.519966,0.270184,1.0,0.588891,0.300282,1.0,0.575109,0.229352,1.0,0.567432,0.224921,1.0,0.558844,0.216128,1.0,0.555979,0.206870,1.0,0.563531,0.197613,1.0,0.561708,0.185116,1.0,0.558323,0.196224,1.0,0.568474,0.196687,1.0,0.563271,0.184190,1.0,0.561188,0.196687,1.0,0.571599,0.199927,1.0,0.568474,0.184190,1.0,0.565094,0.196224,1.0,0.576026,0.199927,1.0,0.573682,0.189281,1.0,0.569516,0.195761,1.0,0.470861,0.482862,1.0,0.470861,0.482862,1.0,0.489243,0.687232,1.0,0.435581,0.826250,1.0,0.435581,0.826250,1.0,0.516878,0.474686,1.0,0.516878,0.474686,1.0,0.518372,0.684534,1.0,0.567401,0.815307,1.0,0.567401,0.815307,1.0
|
||||
0.493869,0.478774,1.0,0.486995,0.322462,1.0,0.489286,0.374566,1.0,0.484704,0.270357,1.0,0.486994,0.194019,1.0,0.496940,0.193952,1.0,0.496940,0.193952,1.0,0.481634,0.191271,1.0,0.481634,0.191271,1.0,0.467055,0.271696,1.0,0.449407,0.273035,1.0,0.374285,0.311040,1.0,0.397295,0.229430,1.0,0.408041,0.228476,1.0,0.421221,0.216251,1.0,0.424372,0.222363,1.0,0.420361,0.198423,1.0,0.429244,0.205044,1.0,0.431249,0.219307,1.0,0.417209,0.196894,1.0,0.426378,0.208101,1.0,0.425519,0.222363,1.0,0.413485,0.199442,1.0,0.422080,0.208610,1.0,0.421507,0.220835,1.0,0.410046,0.204535,1.0,0.415777,0.209629,1.0,0.417209,0.217269,1.0,0.502335,0.270271,1.0,0.519966,0.270184,1.0,0.588891,0.300282,1.0,0.575109,0.229352,1.0,0.567432,0.224921,1.0,0.558844,0.216128,1.0,0.555979,0.206870,1.0,0.563531,0.197613,1.0,0.561708,0.185116,1.0,0.558323,0.196224,1.0,0.568474,0.196687,1.0,0.563271,0.184190,1.0,0.561188,0.196687,1.0,0.571599,0.199927,1.0,0.568474,0.184190,1.0,0.565094,0.196224,1.0,0.576026,0.199927,1.0,0.573682,0.189281,1.0,0.569516,0.195761,1.0,0.470861,0.482862,1.0,0.470861,0.482862,1.0,0.489243,0.687232,1.0,0.435581,0.826250,1.0,0.435581,0.826250,1.0,0.516878,0.474686,1.0,0.516878,0.474686,1.0,0.518372,0.684534,1.0,0.567401,0.815307,1.0,0.567401,0.815307,1.0
|
||||
0.494647,0.499213,1.0,0.487215,0.341766,1.0,0.489692,0.394248,1.0,0.484737,0.289283,1.0,0.489252,0.210348,1.0,0.496950,0.207667,1.0,0.496950,0.207667,1.0,0.483071,0.207676,1.0,0.483071,0.207676,1.0,0.467095,0.290626,1.0,0.449454,0.291968,1.0,0.374315,0.281156,1.0,0.398859,0.229271,1.0,0.407512,0.236239,1.0,0.423552,0.225915,1.0,0.422998,0.249021,1.0,0.427699,0.220015,1.0,0.430465,0.235747,1.0,0.428806,0.248530,1.0,0.423275,0.217556,1.0,0.425487,0.236239,1.0,0.421339,0.246071,1.0,0.418297,0.217065,1.0,0.420233,0.231814,1.0,0.416638,0.241156,1.0,0.412490,0.217556,1.0,0.414702,0.228864,1.0,0.413043,0.236731,1.0,0.503113,0.286563,1.0,0.521490,0.283843,1.0,0.593490,0.272981,1.0,0.572089,0.226684,1.0,0.571125,0.232142,1.0,0.565292,0.231199,1.0,0.559724,0.228843,1.0,0.557604,0.212820,1.0,0.553099,0.209522,1.0,0.553365,0.212820,1.0,0.561849,0.204339,1.0,0.557870,0.199626,1.0,0.560786,0.213292,1.0,0.566089,0.199626,1.0,0.563172,0.196799,1.0,0.565292,0.209522,1.0,0.570594,0.196328,1.0,0.569005,0.194443,1.0,0.568740,0.202925,1.0,0.470905,0.501944,1.0,0.470905,0.501944,1.0,0.484733,0.706409,1.0,0.430998,0.837082,1.0,0.430998,0.837082,1.0,0.518390,0.496483,1.0,0.518390,0.496483,1.0,0.521547,0.703619,1.0,0.568974,0.826218,1.0,0.568974,0.826218,1.0
|
||||
0.495366,0.511397,1.0,0.488499,0.348960,1.0,0.490788,0.403106,1.0,0.486210,0.294815,1.0,0.489248,0.222545,1.0,0.497007,0.218457,1.0,0.497007,0.218457,1.0,0.483071,0.215728,1.0,0.483071,0.215728,1.0,0.469336,0.297529,1.0,0.452462,0.300244,1.0,0.380443,0.270128,1.0,0.404985,0.226543,1.0,0.407384,0.244488,1.0,0.429097,0.229530,1.0,0.420412,0.245453,1.0,0.431540,0.225669,1.0,0.429369,0.238697,1.0,0.426926,0.247382,1.0,0.427197,0.217950,1.0,0.425841,0.232907,1.0,0.420684,0.243040,1.0,0.421769,0.214090,1.0,0.422583,0.223257,1.0,0.416341,0.236768,1.0,0.415527,0.213124,1.0,0.417698,0.217467,1.0,0.415798,0.227600,1.0,0.503852,0.293427,1.0,0.521495,0.292039,1.0,0.591932,0.248581,1.0,0.572068,0.213014,1.0,0.575359,0.211003,1.0,0.572625,0.199819,1.0,0.566880,0.195442,1.0,0.573448,0.202736,1.0,0.569344,0.195928,1.0,0.562776,0.192524,1.0,0.568797,0.208085,1.0,0.559224,0.197873,1.0,0.558401,0.199331,1.0,0.567427,0.214406,1.0,0.558130,0.209057,1.0,0.555667,0.207598,1.0,0.564969,0.222187,1.0,0.560318,0.220728,1.0,0.556760,0.218782,1.0,0.470859,0.512765,1.0,0.470859,0.512765,1.0,0.478517,0.709169,1.0,0.424917,0.842564,1.0,0.424917,0.842564,1.0,0.519873,0.510030,1.0,0.519873,0.510030,1.0,0.533672,0.706396,1.0,0.570479,0.837108,1.0,0.570479,0.837108,1.0
|
||||
0.495371,0.496458,1.0,0.487340,0.341035,1.0,0.490017,0.392843,1.0,0.484664,0.289228,1.0,0.488473,0.208989,1.0,0.497024,0.207556,1.0,0.497024,0.207556,1.0,0.483090,0.207520,1.0,0.483090,0.207520,1.0,0.467803,0.290605,1.0,0.450943,0.291981,1.0,0.380454,0.270106,1.0,0.408050,0.213007,1.0,0.414007,0.225897,1.0,0.426082,0.218431,1.0,0.425819,0.228231,1.0,0.435007,0.206764,1.0,0.435269,0.216564,1.0,0.433694,0.224964,1.0,0.430544,0.200231,1.0,0.430807,0.213297,1.0,0.427394,0.223097,1.0,0.425294,0.196031,1.0,0.426869,0.204897,1.0,0.423194,0.217964,1.0,0.419519,0.196031,1.0,0.422144,0.199297,1.0,0.421094,0.210964,1.0,0.502281,0.283842,1.0,0.519898,0.278456,1.0,0.591974,0.243031,1.0,0.570458,0.204825,1.0,0.566651,0.220991,1.0,0.557875,0.220991,1.0,0.558422,0.217577,1.0,0.551016,0.205385,1.0,0.551292,0.205385,1.0,0.557052,0.207335,1.0,0.552938,0.196119,1.0,0.551839,0.191730,1.0,0.559521,0.202458,1.0,0.556776,0.187340,1.0,0.556776,0.185389,1.0,0.563911,0.194168,1.0,0.563359,0.182951,1.0,0.563089,0.181488,1.0,0.569120,0.186852,1.0,0.470859,0.499175,1.0,0.470859,0.499175,1.0,0.472416,0.703556,1.0,0.424896,0.839734,1.0,0.424896,0.839734,1.0,0.519882,0.493741,1.0,0.519882,0.493741,1.0,0.538344,0.692662,1.0,0.570453,0.834404,1.0,0.570453,0.834404,1.0
|
||||
0.495375,0.473290,1.0,0.487400,0.318981,1.0,0.490058,0.370417,1.0,0.484741,0.267544,1.0,0.489228,0.194005,1.0,0.498461,0.188612,1.0,0.498461,0.188612,1.0,0.483115,0.188497,1.0,0.483115,0.188497,1.0,0.467852,0.268957,1.0,0.450963,0.270369,1.0,0.375879,0.270306,1.0,0.406503,0.204803,1.0,0.414957,0.201305,1.0,0.419639,0.200815,1.0,0.433687,0.196407,1.0,0.430657,0.175351,1.0,0.439747,0.184166,1.0,0.441399,0.193469,1.0,0.426801,0.173393,1.0,0.435615,0.184656,1.0,0.436166,0.197877,1.0,0.423495,0.176331,1.0,0.430657,0.185144,1.0,0.430932,0.198367,1.0,0.419364,0.179758,1.0,0.424046,0.186614,1.0,0.426250,0.195918,1.0,0.503128,0.262118,1.0,0.521516,0.256691,1.0,0.595073,0.234895,1.0,0.570458,0.185826,1.0,0.563427,0.193950,1.0,0.554672,0.191032,1.0,0.544005,0.184223,1.0,0.548109,0.169632,1.0,0.544005,0.177901,1.0,0.542635,0.183251,1.0,0.552484,0.166228,1.0,0.548380,0.174982,1.0,0.552214,0.183251,1.0,0.556589,0.163796,1.0,0.553031,0.169632,1.0,0.556313,0.181792,1.0,0.561240,0.164769,1.0,0.559052,0.165742,1.0,0.559052,0.179846,1.0,0.470886,0.474689,1.0,0.470886,0.474689,1.0,0.461728,0.684584,1.0,0.424904,0.837094,1.0,0.424904,0.837094,1.0,0.519864,0.471891,1.0,0.519864,0.471891,1.0,0.544521,0.681666,1.0,0.568896,0.823542,1.0,0.568896,0.823542,1.0
|
||||
0.496131,0.466441,1.0,0.488708,0.304987,1.0,0.491182,0.358805,1.0,0.486233,0.251169,1.0,0.489292,0.181709,1.0,0.498518,0.180368,1.0,0.498518,0.180368,1.0,0.483151,0.180256,1.0,0.483151,0.180256,1.0,0.467841,0.252590,1.0,0.449448,0.254011,1.0,0.378885,0.278432,1.0,0.400374,0.191233,1.0,0.414323,0.182618,1.0,0.420124,0.175585,1.0,0.430409,0.163865,1.0,0.423289,0.151675,1.0,0.430937,0.149331,1.0,0.435684,0.156832,1.0,0.420652,0.150269,1.0,0.429618,0.153081,1.0,0.432519,0.167146,1.0,0.417223,0.152613,1.0,0.425662,0.156832,1.0,0.428300,0.170897,1.0,0.414586,0.156832,1.0,0.421443,0.160583,1.0,0.424344,0.169959,1.0,0.504630,0.249807,1.0,0.523026,0.248444,1.0,0.595115,0.245623,1.0,0.570453,0.180298,1.0,0.559406,0.175670,1.0,0.549354,0.162973,1.0,0.543802,0.156390,1.0,0.552000,0.143222,1.0,0.546448,0.147925,1.0,0.543802,0.153098,1.0,0.554911,0.142752,1.0,0.550943,0.146514,1.0,0.550943,0.159681,1.0,0.559141,0.145104,1.0,0.554646,0.148866,1.0,0.554646,0.161092,1.0,0.562844,0.148866,1.0,0.559141,0.152157,1.0,0.556760,0.161092,1.0,0.472351,0.469151,1.0,0.472351,0.469151,1.0,0.452502,0.676319,1.0,0.435592,0.834341,1.0,0.435592,0.834341,1.0,0.519911,0.463731,1.0,0.519911,0.463731,1.0,0.545943,0.662784,1.0,0.559807,0.834337,1.0,0.559807,0.834337,1.0
|
||||
0.496131,0.466441,1.0,0.488708,0.304987,1.0,0.491182,0.358805,1.0,0.486233,0.251169,1.0,0.489292,0.181709,1.0,0.498518,0.180368,1.0,0.498518,0.180368,1.0,0.483151,0.180256,1.0,0.483151,0.180256,1.0,0.467841,0.252590,1.0,0.449448,0.254011,1.0,0.378885,0.278432,1.0,0.400374,0.191233,1.0,0.414323,0.182618,1.0,0.420124,0.175585,1.0,0.430409,0.163865,1.0,0.423289,0.151675,1.0,0.430937,0.149331,1.0,0.435684,0.156832,1.0,0.420652,0.150269,1.0,0.429618,0.153081,1.0,0.432519,0.167146,1.0,0.417223,0.152613,1.0,0.425662,0.156832,1.0,0.428300,0.170897,1.0,0.414586,0.156832,1.0,0.421443,0.160583,1.0,0.424344,0.169959,1.0,0.504630,0.249807,1.0,0.523026,0.248444,1.0,0.595115,0.245623,1.0,0.570453,0.180298,1.0,0.559406,0.175670,1.0,0.549354,0.162973,1.0,0.543802,0.156390,1.0,0.552000,0.143222,1.0,0.546448,0.147925,1.0,0.543802,0.153098,1.0,0.554911,0.142752,1.0,0.550943,0.146514,1.0,0.550943,0.159681,1.0,0.559141,0.145104,1.0,0.554646,0.148866,1.0,0.554646,0.161092,1.0,0.562844,0.148866,1.0,0.559141,0.152157,1.0,0.556760,0.161092,1.0,0.472351,0.469151,1.0,0.472351,0.469151,1.0,0.452502,0.676319,1.0,0.435592,0.834341,1.0,0.435592,0.834341,1.0,0.519911,0.463731,1.0,0.519911,0.463731,1.0,0.545943,0.662784,1.0,0.559807,0.834337,1.0,0.559807,0.834337,1.0
|
||||
0.496178,0.463732,1.0,0.489850,0.304252,1.0,0.491960,0.357412,1.0,0.487741,0.251093,1.0,0.490063,0.177567,1.0,0.499983,0.166819,1.0,0.499983,0.166819,1.0,0.483195,0.166694,1.0,0.483195,0.166694,1.0,0.468583,0.251214,1.0,0.449424,0.251335,1.0,0.384989,0.292123,1.0,0.397363,0.191278,1.0,0.402450,0.178964,1.0,0.402701,0.157552,1.0,0.416502,0.162013,1.0,0.406716,0.155768,1.0,0.415999,0.142386,1.0,0.420265,0.134803,1.0,0.406716,0.153538,1.0,0.414996,0.140601,1.0,0.419512,0.138371,1.0,0.407468,0.157998,1.0,0.413992,0.139263,1.0,0.416752,0.144170,1.0,0.403454,0.159336,1.0,0.406465,0.144616,1.0,0.413240,0.144170,1.0,0.506894,0.249786,1.0,0.526047,0.248479,1.0,0.596563,0.251188,1.0,0.570547,0.174888,1.0,0.562479,0.166729,1.0,0.554458,0.155689,1.0,0.546953,0.140049,1.0,0.555234,0.135909,1.0,0.549542,0.129469,1.0,0.546693,0.132230,1.0,0.559891,0.132690,1.0,0.552385,0.130390,1.0,0.551094,0.140969,1.0,0.562995,0.133149,1.0,0.555490,0.132230,1.0,0.554974,0.143730,1.0,0.565323,0.139589,1.0,0.559630,0.136369,1.0,0.557042,0.143730,1.0,0.472402,0.466447,1.0,0.472402,0.466447,1.0,0.447832,0.662649,1.0,0.444833,0.837101,1.0,0.444833,0.837101,1.0,0.519955,0.461017,1.0,0.519955,0.461017,1.0,0.539849,0.662743,1.0,0.559818,0.826254,1.0,0.559818,0.826254,1.0
|
||||
0.495388,0.465085,1.0,0.488527,0.304756,1.0,0.490814,0.358199,1.0,0.486240,0.251313,1.0,0.490072,0.176167,1.0,0.500020,0.166782,1.0,0.500020,0.166782,1.0,0.484623,0.164120,1.0,0.484623,0.164120,1.0,0.467818,0.253983,1.0,0.449397,0.256654,1.0,0.386609,0.313722,1.0,0.397229,0.204843,1.0,0.395819,0.189608,1.0,0.395560,0.171672,1.0,0.398406,0.155576,1.0,0.408236,0.170752,1.0,0.410564,0.159255,1.0,0.411858,0.147757,1.0,0.408236,0.174892,1.0,0.405649,0.151436,1.0,0.411858,0.145918,1.0,0.408236,0.176271,1.0,0.404873,0.150517,1.0,0.410305,0.146837,1.0,0.403838,0.177191,1.0,0.399440,0.157875,1.0,0.405390,0.149597,1.0,0.505386,0.251200,1.0,0.524531,0.251086,1.0,0.595089,0.270231,1.0,0.570552,0.174854,1.0,0.563766,0.166653,1.0,0.555391,0.137794,1.0,0.554078,0.131277,1.0,0.559318,0.130345,1.0,0.555391,0.126156,1.0,0.551724,0.125691,1.0,0.561411,0.130345,1.0,0.555391,0.131743,1.0,0.553557,0.140586,1.0,0.563766,0.133139,1.0,0.560365,0.130811,1.0,0.556698,0.144310,1.0,0.567693,0.136397,1.0,0.567693,0.134069,1.0,0.559839,0.141518,1.0,0.472357,0.466397,1.0,0.472357,0.466397,1.0,0.457063,0.668156,1.0,0.435620,0.842590,1.0,0.435620,0.842590,1.0,0.518419,0.463773,1.0,0.518419,0.463773,1.0,0.535307,0.665514,1.0,0.565932,0.834332,1.0,0.565932,0.834332,1.0
|
||||
0.495415,0.482812,1.0,0.489639,0.321363,1.0,0.491565,0.375179,1.0,0.487714,0.267547,1.0,0.490817,0.184310,1.0,0.503036,0.180236,1.0,0.503036,0.180236,1.0,0.484661,0.177573,1.0,0.484661,0.177573,1.0,0.469332,0.268925,1.0,0.450949,0.270303,1.0,0.397205,0.327489,1.0,0.395782,0.221198,1.0,0.393606,0.208225,1.0,0.391168,0.186122,1.0,0.396288,0.173988,1.0,0.405063,0.184822,1.0,0.406526,0.170521,1.0,0.407745,0.162720,1.0,0.407501,0.190456,1.0,0.409939,0.174421,1.0,0.408476,0.166188,1.0,0.409207,0.195223,1.0,0.410670,0.180922,1.0,0.409451,0.173121,1.0,0.409695,0.201291,1.0,0.410670,0.187856,1.0,0.409695,0.182656,1.0,0.505375,0.264803,1.0,0.523036,0.262058,1.0,0.595010,0.286552,1.0,0.572099,0.182931,1.0,0.563198,0.170243,1.0,0.558625,0.152560,1.0,0.557552,0.142524,1.0,0.561849,0.140613,1.0,0.562120,0.135356,1.0,0.555938,0.131055,1.0,0.567229,0.146825,1.0,0.564807,0.136311,1.0,0.560240,0.142046,1.0,0.573141,0.155428,1.0,0.573141,0.143002,1.0,0.563198,0.146347,1.0,0.573948,0.161162,1.0,0.570990,0.145869,1.0,0.565885,0.146347,1.0,0.470937,0.482791,1.0,0.470937,0.482791,1.0,0.457060,0.676301,1.0,0.434066,0.850704,1.0,0.434066,0.850704,1.0,0.519893,0.482832,1.0,0.519893,0.482832,1.0,0.542880,0.681709,1.0,0.569016,0.837034,1.0,0.569016,0.837034,1.0
|
||||
0.495365,0.485540,1.0,0.489635,0.326239,1.0,0.491545,0.379339,1.0,0.487725,0.273139,1.0,0.490847,0.187144,1.0,0.503079,0.185669,1.0,0.503079,0.185669,1.0,0.484707,0.183144,1.0,0.484707,0.183144,1.0,0.469341,0.278514,1.0,0.450958,0.283890,1.0,0.398846,0.335533,1.0,0.397280,0.229283,1.0,0.396519,0.219781,1.0,0.390670,0.202453,1.0,0.399443,0.184690,1.0,0.409191,0.192055,1.0,0.403099,0.185123,1.0,0.396763,0.185123,1.0,0.406023,0.192921,1.0,0.397981,0.185990,1.0,0.397981,0.178625,1.0,0.405292,0.201586,1.0,0.390183,0.191189,1.0,0.396519,0.185123,1.0,0.407242,0.201586,1.0,0.390183,0.189889,1.0,0.394570,0.185990,1.0,0.506120,0.271725,1.0,0.524516,0.270312,1.0,0.593453,0.294842,1.0,0.572109,0.183167,1.0,0.564792,0.174198,1.0,0.562089,0.157371,1.0,0.560198,0.143430,1.0,0.566958,0.148719,1.0,0.563713,0.147276,1.0,0.560198,0.141988,1.0,0.567500,0.153526,1.0,0.568578,0.149199,1.0,0.566146,0.149680,1.0,0.570474,0.159776,1.0,0.576693,0.155930,1.0,0.566958,0.153526,1.0,0.567229,0.158814,1.0,0.575068,0.156410,1.0,0.568036,0.154487,1.0,0.470841,0.485529,1.0,0.470841,0.485529,1.0,0.454031,0.673620,1.0,0.432551,0.847991,1.0,0.432551,0.847991,1.0,0.519889,0.485551,1.0,0.519889,0.485551,1.0,0.544495,0.676278,1.0,0.570474,0.834396,1.0,0.570474,0.834396,1.0
|
||||
0.495353,0.484161,1.0,0.489671,0.327803,1.0,0.491565,0.379922,1.0,0.487778,0.275683,1.0,0.492314,0.187101,1.0,0.506081,0.183100,1.0,0.506081,0.183100,1.0,0.486188,0.183023,1.0,0.486188,0.183023,1.0,0.470116,0.279792,1.0,0.452455,0.283900,1.0,0.398852,0.335549,1.0,0.397342,0.229298,1.0,0.395868,0.220662,1.0,0.391482,0.201600,1.0,0.391969,0.188604,1.0,0.409271,0.195102,1.0,0.405372,0.176040,1.0,0.394650,0.186870,1.0,0.405859,0.196401,1.0,0.402448,0.178639,1.0,0.391726,0.194669,1.0,0.406347,0.201167,1.0,0.391726,0.189469,1.0,0.391969,0.195102,1.0,0.407565,0.202033,1.0,0.391726,0.185570,1.0,0.393919,0.184705,1.0,0.506907,0.273010,1.0,0.526036,0.270337,1.0,0.593500,0.300237,1.0,0.573557,0.188611,1.0,0.575839,0.178508,1.0,0.576646,0.163231,1.0,0.569661,0.156548,1.0,0.576912,0.161800,1.0,0.565099,0.150819,1.0,0.560802,0.145569,1.0,0.562948,0.164664,1.0,0.564026,0.153206,1.0,0.562682,0.152252,1.0,0.560266,0.163231,1.0,0.562682,0.157503,1.0,0.564026,0.162755,1.0,0.561339,0.161322,1.0,0.564026,0.147478,1.0,0.559995,0.144614,1.0,0.470840,0.482844,1.0,0.470840,0.482844,1.0,0.453985,0.681742,1.0,0.434055,0.842545,1.0,0.434055,0.842545,1.0,0.519866,0.485477,1.0,0.519866,0.485477,1.0,0.549036,0.668198,1.0,0.570495,0.834407,1.0,0.570495,0.834407,1.0
|
||||
0.495353,0.484161,1.0,0.489671,0.327803,1.0,0.491565,0.379922,1.0,0.487778,0.275683,1.0,0.492314,0.187101,1.0,0.506081,0.183100,1.0,0.506081,0.183100,1.0,0.486188,0.183023,1.0,0.486188,0.183023,1.0,0.470116,0.279792,1.0,0.452455,0.283900,1.0,0.398852,0.335549,1.0,0.397342,0.229298,1.0,0.395868,0.220662,1.0,0.391482,0.201600,1.0,0.391969,0.188604,1.0,0.409271,0.195102,1.0,0.405372,0.176040,1.0,0.394650,0.186870,1.0,0.405859,0.196401,1.0,0.402448,0.178639,1.0,0.391726,0.194669,1.0,0.406347,0.201167,1.0,0.391726,0.189469,1.0,0.391969,0.195102,1.0,0.407565,0.202033,1.0,0.391726,0.185570,1.0,0.393919,0.184705,1.0,0.506907,0.273010,1.0,0.526036,0.270337,1.0,0.593500,0.300237,1.0,0.573557,0.188611,1.0,0.575839,0.178508,1.0,0.576646,0.163231,1.0,0.569661,0.156548,1.0,0.576912,0.161800,1.0,0.565099,0.150819,1.0,0.560802,0.145569,1.0,0.562948,0.164664,1.0,0.564026,0.153206,1.0,0.562682,0.152252,1.0,0.560266,0.163231,1.0,0.562682,0.157503,1.0,0.564026,0.162755,1.0,0.561339,0.161322,1.0,0.564026,0.147478,1.0,0.559995,0.144614,1.0,0.470840,0.482844,1.0,0.470840,0.482844,1.0,0.453985,0.681742,1.0,0.434055,0.842545,1.0,0.434055,0.842545,1.0,0.519866,0.485477,1.0,0.519866,0.485477,1.0,0.549036,0.668198,1.0,0.570495,0.834407,1.0,0.570495,0.834407,1.0
|
||||
0.494614,0.481478,1.0,0.492915,0.329189,1.0,0.493481,0.379952,1.0,0.492349,0.278426,1.0,0.494611,0.192570,1.0,0.507580,0.185840,1.0,0.507580,0.185840,1.0,0.487730,0.185749,1.0,0.487730,0.185749,1.0,0.473935,0.282493,1.0,0.455520,0.286560,1.0,0.397257,0.327534,1.0,0.398778,0.218504,1.0,0.396779,0.208753,1.0,0.394778,0.186969,1.0,0.396029,0.173189,1.0,0.406031,0.187414,1.0,0.409782,0.168298,1.0,0.405031,0.166076,1.0,0.407781,0.191860,1.0,0.408532,0.176745,1.0,0.405781,0.172300,1.0,0.408031,0.200306,1.0,0.408532,0.186969,1.0,0.404281,0.183413,1.0,0.408031,0.206085,1.0,0.407031,0.194971,1.0,0.406531,0.193638,1.0,0.510745,0.275737,1.0,0.529141,0.273048,1.0,0.595068,0.292115,1.0,0.572068,0.185697,1.0,0.573625,0.173814,1.0,0.572318,0.156156,1.0,0.572318,0.154297,1.0,0.559510,0.144539,1.0,0.575714,0.156156,1.0,0.555589,0.140821,1.0,0.559510,0.148721,1.0,0.561599,0.148256,1.0,0.563167,0.155692,1.0,0.558984,0.158015,1.0,0.561339,0.151974,1.0,0.562906,0.156621,1.0,0.561339,0.156156,1.0,0.573885,0.153832,1.0,0.567349,0.150115,1.0,0.470827,0.482830,1.0,0.470827,0.482830,1.0,0.461666,0.681740,1.0,0.434055,0.839777,1.0,0.434055,0.839777,1.0,0.518400,0.480126,1.0,0.518400,0.480126,1.0,0.547490,0.678994,1.0,0.572068,0.815231,1.0,0.572068,0.815231,1.0
|
||||
0.494600,0.491000,1.0,0.495146,0.341681,1.0,0.494964,0.391454,1.0,0.495329,0.291907,1.0,0.494620,0.206146,1.0,0.507617,0.204731,1.0,0.507617,0.204731,1.0,0.489246,0.202174,1.0,0.489246,0.202174,1.0,0.476981,0.291991,1.0,0.458633,0.292075,1.0,0.391145,0.313755,1.0,0.400394,0.202173,1.0,0.404222,0.193855,1.0,0.404222,0.175006,1.0,0.404222,0.155697,1.0,0.416118,0.172707,1.0,0.422841,0.154778,1.0,0.414566,0.145583,1.0,0.416377,0.171329,1.0,0.417411,0.149261,1.0,0.413532,0.145124,1.0,0.414566,0.171329,1.0,0.416635,0.148802,1.0,0.412756,0.147882,1.0,0.410946,0.170869,1.0,0.404740,0.152939,1.0,0.410946,0.148342,1.0,0.512972,0.289250,1.0,0.530615,0.286592,1.0,0.599641,0.275748,1.0,0.572057,0.182996,1.0,0.563974,0.175888,1.0,0.556349,0.165042,1.0,0.551266,0.151936,1.0,0.558380,0.141543,1.0,0.552792,0.134312,1.0,0.547703,0.136119,1.0,0.562193,0.140186,1.0,0.553552,0.135668,1.0,0.548724,0.141994,1.0,0.565500,0.141543,1.0,0.557620,0.141994,1.0,0.554568,0.152840,1.0,0.568802,0.143350,1.0,0.561943,0.146061,1.0,0.559651,0.152388,1.0,0.470852,0.491073,1.0,0.470852,0.491073,1.0,0.473933,0.687131,1.0,0.429462,0.848019,1.0,0.429462,0.848019,1.0,0.518348,0.490927,1.0,0.518348,0.490927,1.0,0.542896,0.692625,1.0,0.582714,0.818143,1.0,0.582714,0.818143,1.0
|
||||
0.494653,0.500544,1.0,0.494052,0.346233,1.0,0.494252,0.397670,1.0,0.493852,0.294795,1.0,0.493887,0.211727,1.0,0.507583,0.210288,1.0,0.507583,0.210288,1.0,0.489285,0.210267,1.0,0.489285,0.210267,1.0,0.475454,0.294859,1.0,0.457057,0.294922,1.0,0.386589,0.292079,1.0,0.408053,0.185757,1.0,0.408402,0.188428,1.0,0.413581,0.177837,1.0,0.423423,0.144685,1.0,0.419279,0.148830,1.0,0.421610,0.145146,1.0,0.421869,0.177837,1.0,0.418243,0.164945,1.0,0.420056,0.148830,1.0,0.420833,0.159419,1.0,0.418761,0.164484,1.0,0.419279,0.159881,1.0,0.417466,0.160801,1.0,0.424200,0.169549,1.0,0.418761,0.174614,1.0,0.420056,0.176917,1.0,0.511491,0.293483,1.0,0.529130,0.292171,1.0,0.596583,0.264761,1.0,0.570458,0.182956,1.0,0.559552,0.178975,1.0,0.552698,0.171755,1.0,0.541021,0.152350,1.0,0.550156,0.139263,1.0,0.543557,0.144227,1.0,0.542036,0.156863,1.0,0.554979,0.139263,1.0,0.546349,0.146483,1.0,0.545589,0.160924,1.0,0.558786,0.139714,1.0,0.550411,0.147837,1.0,0.550156,0.160924,1.0,0.562849,0.145130,1.0,0.555490,0.148288,1.0,0.554219,0.157314,1.0,0.470902,0.504591,1.0,0.470902,0.504591,1.0,0.481540,0.700819,1.0,0.426430,0.853395,1.0,0.426430,0.853395,1.0,0.518404,0.496498,1.0,0.518404,0.496498,1.0,0.539839,0.698070,1.0,0.585823,0.834289,1.0,0.585823,0.834289,1.0
|
||||
0.494595,0.499165,1.0,0.492875,0.343802,1.0,0.493448,0.395589,1.0,0.492302,0.292014,1.0,0.493083,0.210283,1.0,0.506161,0.207646,1.0,0.506161,0.207646,1.0,0.487743,0.207560,1.0,0.487743,0.207560,1.0,0.473166,0.291998,1.0,0.454029,0.291982,1.0,0.386582,0.272886,1.0,0.414140,0.188529,1.0,0.424236,0.195433,1.0,0.442276,0.173608,1.0,0.446285,0.183407,1.0,0.443529,0.169599,1.0,0.449542,0.186525,1.0,0.450043,0.198552,1.0,0.440772,0.169154,1.0,0.446535,0.188753,1.0,0.448039,0.201224,1.0,0.436514,0.172272,1.0,0.443028,0.187416,1.0,0.444280,0.200333,1.0,0.432505,0.175835,1.0,0.436012,0.187862,1.0,0.435761,0.193652,1.0,0.509190,0.291991,1.0,0.526078,0.291968,1.0,0.593531,0.245675,1.0,0.561328,0.188529,1.0,0.553620,0.190419,1.0,0.543271,0.190419,1.0,0.535318,0.189947,1.0,0.543010,0.175801,1.0,0.534786,0.186646,1.0,0.540620,0.205038,1.0,0.545927,0.171556,1.0,0.539823,0.185704,1.0,0.542745,0.202208,1.0,0.549109,0.169670,1.0,0.543802,0.179573,1.0,0.545396,0.197021,1.0,0.553620,0.167784,1.0,0.549906,0.179102,1.0,0.549109,0.188061,1.0,0.470798,0.501907,1.0,0.470798,0.501907,1.0,0.480053,0.698126,1.0,0.434006,0.845344,1.0,0.434006,0.845344,1.0,0.518391,0.496423,1.0,0.518391,0.496423,1.0,0.544516,0.684548,1.0,0.582833,0.831640,1.0,0.582833,0.831640,1.0
|
||||
0.493097,0.485496,1.0,0.486809,0.324052,1.0,0.488905,0.377867,1.0,0.484713,0.270237,1.0,0.491560,0.196651,1.0,0.506120,0.199382,1.0,0.506120,0.199382,1.0,0.486219,0.193956,1.0,0.486219,0.193956,1.0,0.467842,0.270219,1.0,0.450971,0.270201,1.0,0.385029,0.267579,1.0,0.421879,0.218482,1.0,0.425570,0.217767,1.0,0.448073,0.225509,1.0,0.450493,0.242286,1.0,0.451219,0.220778,1.0,0.453639,0.251750,1.0,0.450977,0.264224,1.0,0.448557,0.219918,1.0,0.450009,0.248308,1.0,0.449283,0.261644,1.0,0.444686,0.219487,1.0,0.447347,0.245297,1.0,0.444928,0.256912,1.0,0.438879,0.221207,1.0,0.442266,0.237984,1.0,0.441056,0.245727,1.0,0.502344,0.270217,1.0,0.519976,0.270196,1.0,0.593464,0.240246,1.0,0.558193,0.226686,1.0,0.557344,0.249255,1.0,0.532172,0.240405,1.0,0.534661,0.282198,1.0,0.530792,0.244830,1.0,0.527750,0.263022,1.0,0.526089,0.277281,1.0,0.534938,0.242863,1.0,0.532448,0.255155,1.0,0.534661,0.278265,1.0,0.538813,0.236962,1.0,0.536875,0.247288,1.0,0.536875,0.263514,1.0,0.544620,0.229587,1.0,0.542130,0.240405,1.0,0.542406,0.251221,1.0,0.469368,0.488212,1.0,0.469368,0.488212,1.0,0.483084,0.687137,1.0,0.443265,0.837097,1.0,0.443265,0.837097,1.0,0.516826,0.482781,1.0,0.516826,0.482781,1.0,0.544380,0.679069,1.0,0.576656,0.820772,1.0,0.576656,0.820772,1.0
|
||||
0.493097,0.485496,1.0,0.486809,0.324052,1.0,0.488905,0.377867,1.0,0.484713,0.270237,1.0,0.491560,0.196651,1.0,0.506120,0.199382,1.0,0.506120,0.199382,1.0,0.486219,0.193956,1.0,0.486219,0.193956,1.0,0.467842,0.270219,1.0,0.450971,0.270201,1.0,0.385029,0.267579,1.0,0.421879,0.218482,1.0,0.425570,0.217767,1.0,0.448073,0.225509,1.0,0.450493,0.242286,1.0,0.451219,0.220778,1.0,0.453639,0.251750,1.0,0.450977,0.264224,1.0,0.448557,0.219918,1.0,0.450009,0.248308,1.0,0.449283,0.261644,1.0,0.444686,0.219487,1.0,0.447347,0.245297,1.0,0.444928,0.256912,1.0,0.438879,0.221207,1.0,0.442266,0.237984,1.0,0.441056,0.245727,1.0,0.502344,0.270217,1.0,0.519976,0.270196,1.0,0.593464,0.240246,1.0,0.558193,0.226686,1.0,0.557344,0.249255,1.0,0.532172,0.240405,1.0,0.534661,0.282198,1.0,0.530792,0.244830,1.0,0.527750,0.263022,1.0,0.526089,0.277281,1.0,0.534938,0.242863,1.0,0.532448,0.255155,1.0,0.534661,0.278265,1.0,0.538813,0.236962,1.0,0.536875,0.247288,1.0,0.536875,0.263514,1.0,0.544620,0.229587,1.0,0.542130,0.240405,1.0,0.542406,0.251221,1.0,0.469368,0.488212,1.0,0.469368,0.488212,1.0,0.483084,0.687137,1.0,0.443265,0.837097,1.0,0.443265,0.837097,1.0,0.516826,0.482781,1.0,0.516826,0.482781,1.0,0.544380,0.679069,1.0,0.576656,0.820772,1.0,0.576656,0.820772,1.0
|
||||
0.489297,0.469214,1.0,0.485818,0.309826,1.0,0.486978,0.362956,1.0,0.484658,0.256697,1.0,0.490050,0.188439,1.0,0.503061,0.185917,1.0,0.503061,0.185917,1.0,0.484712,0.185837,1.0,0.484712,0.185837,1.0,0.467055,0.258010,1.0,0.449451,0.259323,1.0,0.391144,0.286597,1.0,0.437190,0.264765,1.0,0.447519,0.266996,1.0,0.458578,0.292948,1.0,0.455260,0.318506,1.0,0.460126,0.289016,1.0,0.460569,0.301599,1.0,0.458357,0.321259,1.0,0.457693,0.289803,1.0,0.458799,0.301599,1.0,0.457030,0.322045,1.0,0.453048,0.289409,1.0,0.455260,0.303958,1.0,0.455039,0.322045,1.0,0.447740,0.292948,1.0,0.450173,0.309463,1.0,0.451058,0.318506,1.0,0.502300,0.255319,1.0,0.519942,0.253942,1.0,0.591927,0.248555,1.0,0.544474,0.273144,1.0,0.531984,0.294414,1.0,0.524318,0.312269,1.0,0.509254,0.236149,1.0,0.520885,0.312739,1.0,0.511897,0.242257,1.0,0.515862,0.244607,1.0,0.508726,0.256824,1.0,0.512690,0.244137,1.0,0.515333,0.244607,1.0,0.508726,0.257764,1.0,0.510840,0.252595,1.0,0.509519,0.256354,1.0,0.526698,0.312269,1.0,0.520885,0.313209,1.0,0.506347,0.267631,1.0,0.467810,0.471964,1.0,0.467810,0.471964,1.0,0.484699,0.673606,1.0,0.466277,0.837101,1.0,0.466277,0.837101,1.0,0.510783,0.466465,1.0,0.510783,0.466465,1.0,0.533708,0.681658,1.0,0.556667,0.820827,1.0,0.556667,0.820827,1.0
|
||||
0.487740,0.467834,1.0,0.484296,0.309474,1.0,0.485444,0.362261,1.0,0.483148,0.256687,1.0,0.487766,0.184452,1.0,0.498513,0.183077,1.0,0.498513,0.183077,1.0,0.483129,0.183009,1.0,0.483129,0.183009,1.0,0.465497,0.259411,1.0,0.447845,0.262134,1.0,0.409578,0.332894,1.0,0.450949,0.332993,1.0,0.462779,0.331224,1.0,0.467032,0.350309,1.0,0.467843,0.351390,1.0,0.473514,0.353910,1.0,0.474932,0.354270,1.0,0.475134,0.352109,1.0,0.466627,0.356791,1.0,0.460348,0.360031,1.0,0.457512,0.362912,1.0,0.463386,0.358592,1.0,0.456094,0.359311,1.0,0.455892,0.361472,1.0,0.460551,0.371915,1.0,0.458120,0.371194,1.0,0.454069,0.363993,1.0,0.500776,0.253967,1.0,0.518404,0.251247,1.0,0.579687,0.294708,1.0,0.532115,0.319276,1.0,0.516656,0.329535,1.0,0.518834,0.324371,1.0,0.517382,0.308020,1.0,0.519803,0.313614,1.0,0.517382,0.315335,1.0,0.520771,0.365679,1.0,0.511573,0.352770,1.0,0.514236,0.356213,1.0,0.518108,0.308451,1.0,0.521740,0.322650,1.0,0.516656,0.357073,1.0,0.517624,0.341153,1.0,0.513752,0.358794,1.0,0.516172,0.358364,1.0,0.521255,0.368261,1.0,0.464772,0.471902,1.0,0.464772,0.471902,1.0,0.484751,0.673589,1.0,0.496872,0.828943,1.0,0.496872,0.828943,1.0,0.510709,0.463767,1.0,0.510709,0.463767,1.0,0.524510,0.668207,1.0,0.529135,0.809831,1.0,0.529135,0.809831,1.0
|
||||
0.486969,0.477381,1.0,0.484135,0.322068,1.0,0.485080,0.373839,1.0,0.483191,0.270297,1.0,0.483902,0.187143,1.0,0.496884,0.183098,1.0,0.496884,0.183098,1.0,0.480079,0.182994,1.0,0.480079,0.182994,1.0,0.464783,0.271600,1.0,0.446376,0.272903,1.0,0.424914,0.381927,1.0,0.461655,0.420168,1.0,0.469013,0.418804,1.0,0.479500,0.436177,1.0,0.484029,0.453127,1.0,0.483791,0.441262,1.0,0.488319,0.464568,1.0,0.489511,0.481941,1.0,0.480215,0.446770,1.0,0.482837,0.474737,1.0,0.483791,0.484906,1.0,0.474018,0.450584,1.0,0.478308,0.477703,1.0,0.479500,0.484483,1.0,0.467106,0.454821,1.0,0.470920,0.472194,1.0,0.472827,0.481094,1.0,0.501562,0.270254,1.0,0.519934,0.270211,1.0,0.564406,0.357576,1.0,0.509149,0.357446,1.0,0.512554,0.349191,1.0,0.498209,0.350056,1.0,0.478514,0.395874,1.0,0.474867,0.391119,1.0,0.477298,0.395009,1.0,0.480946,0.391983,1.0,0.501370,0.362591,1.0,0.480946,0.375991,1.0,0.500154,0.373397,1.0,0.495778,0.369506,1.0,0.481918,0.375126,1.0,0.503315,0.372532,1.0,0.482648,0.374261,1.0,0.482405,0.374694,1.0,0.505503,0.370804,1.0,0.463219,0.482835,1.0,0.463219,0.482835,1.0,0.486228,0.679090,1.0,0.530625,0.837028,1.0,0.530625,0.837028,1.0,0.510720,0.471928,1.0,0.510720,0.471928,1.0,0.519962,0.684366,1.0,0.496981,0.785305,1.0,0.496981,0.785305,1.0
|
||||
0.483927,0.484195,1.0,0.483299,0.340158,1.0,0.483509,0.388170,1.0,0.483090,0.292145,1.0,0.481590,0.196631,1.0,0.493896,0.188531,1.0,0.493896,0.188531,1.0,0.475464,0.188503,1.0,0.475464,0.188503,1.0,0.463197,0.293501,1.0,0.443304,0.294856,1.0,0.440236,0.422784,1.0,0.460234,0.499182,1.0,0.458643,0.507012,1.0,0.461813,0.504664,1.0,0.462078,0.504664,1.0,0.463663,0.504194,1.0,0.462870,0.509831,1.0,0.471061,0.514528,1.0,0.478459,0.536135,1.0,0.475289,0.533787,1.0,0.465777,0.547408,1.0,0.480308,0.534257,1.0,0.475553,0.538484,1.0,0.465777,0.548348,1.0,0.485065,0.528619,1.0,0.485593,0.528619,1.0,0.465777,0.556333,1.0,0.501523,0.292045,1.0,0.519955,0.291944,1.0,0.532125,0.420036,1.0,0.498481,0.362872,1.0,0.484429,0.357352,1.0,0.473439,0.361641,1.0,0.473975,0.360687,1.0,0.472903,0.360687,1.0,0.475583,0.360687,1.0,0.468882,0.363070,1.0,0.472098,0.361164,1.0,0.477996,0.359734,1.0,0.471830,0.365453,1.0,0.473707,0.362594,1.0,0.478532,0.360687,1.0,0.495152,0.356398,1.0,0.480141,0.361641,1.0,0.483893,0.364500,1.0,0.495956,0.356875,1.0,0.460177,0.488290,1.0,0.460177,0.488290,1.0,0.484752,0.681720,1.0,0.535271,0.839918,1.0,0.535271,0.839918,1.0,0.507678,0.480100,1.0,0.507678,0.480100,1.0,0.518385,0.684483,1.0,0.480092,0.798916,1.0,0.480092,0.798916,1.0
|
||||
0.480864,0.485587,1.0,0.479121,0.352723,1.0,0.479702,0.397011,1.0,0.478541,0.308434,1.0,0.480111,0.206277,1.0,0.493873,0.199400,1.0,0.493873,0.199400,1.0,0.473933,0.196719,1.0,0.473933,0.196719,1.0,0.460149,0.309789,1.0,0.441757,0.311144,1.0,0.438664,0.425681,1.0,0.454000,0.529207,1.0,0.460779,0.550717,1.0,0.464215,0.565117,1.0,0.453170,0.573844,1.0,0.453906,0.592608,1.0,0.454888,0.592171,1.0,0.455133,0.590863,1.0,0.456115,0.589554,1.0,0.456360,0.590863,1.0,0.457097,0.591735,1.0,0.456360,0.589118,1.0,0.461515,0.594790,1.0,0.461270,0.594790,1.0,0.452679,0.596099,1.0,0.452433,0.594790,1.0,0.451942,0.602644,1.0,0.498446,0.305680,1.0,0.518352,0.302925,1.0,0.506141,0.425537,1.0,0.490787,0.338331,1.0,0.486748,0.318232,1.0,0.483151,0.320973,1.0,0.501394,0.317775,1.0,0.499082,0.282145,1.0,0.505248,0.283972,1.0,0.507561,0.274836,1.0,0.503707,0.294479,1.0,0.509873,0.299960,1.0,0.512186,0.311380,1.0,0.505505,0.305898,1.0,0.511415,0.300417,1.0,0.511672,0.311837,1.0,0.507818,0.307726,1.0,0.513214,0.319603,1.0,0.511672,0.325084,1.0,0.460168,0.488332,1.0,0.460168,0.488332,1.0,0.484617,0.684474,1.0,0.533677,0.837198,1.0,0.533677,0.837198,1.0,0.501560,0.482843,1.0,0.501560,0.482843,1.0,0.512236,0.687209,1.0,0.472439,0.815170,1.0,0.472439,0.815170,1.0
|
||||
0.480864,0.485587,1.0,0.479121,0.352723,1.0,0.479702,0.397011,1.0,0.478541,0.308434,1.0,0.480111,0.206277,1.0,0.493873,0.199400,1.0,0.493873,0.199400,1.0,0.473933,0.196719,1.0,0.473933,0.196719,1.0,0.460149,0.309789,1.0,0.441757,0.311144,1.0,0.438664,0.425681,1.0,0.454000,0.529207,1.0,0.460779,0.550717,1.0,0.464215,0.565117,1.0,0.453170,0.573844,1.0,0.453906,0.592608,1.0,0.454888,0.592171,1.0,0.455133,0.590863,1.0,0.456115,0.589554,1.0,0.456360,0.590863,1.0,0.457097,0.591735,1.0,0.456360,0.589118,1.0,0.461515,0.594790,1.0,0.461270,0.594790,1.0,0.452679,0.596099,1.0,0.452433,0.594790,1.0,0.451942,0.602644,1.0,0.498446,0.305680,1.0,0.518352,0.302925,1.0,0.506141,0.425537,1.0,0.490787,0.338331,1.0,0.486748,0.318232,1.0,0.483151,0.320973,1.0,0.501394,0.317775,1.0,0.499082,0.282145,1.0,0.505248,0.283972,1.0,0.507561,0.274836,1.0,0.503707,0.294479,1.0,0.509873,0.299960,1.0,0.512186,0.311380,1.0,0.505505,0.305898,1.0,0.511415,0.300417,1.0,0.511672,0.311837,1.0,0.507818,0.307726,1.0,0.513214,0.319603,1.0,0.511672,0.325084,1.0,0.460168,0.488332,1.0,0.460168,0.488332,1.0,0.484617,0.684474,1.0,0.533677,0.837198,1.0,0.533677,0.837198,1.0,0.501560,0.482843,1.0,0.501560,0.482843,1.0,0.512236,0.687209,1.0,0.472439,0.815170,1.0,0.472439,0.815170,1.0
|
||||
0.477765,0.486942,1.0,0.474937,0.344928,1.0,0.475880,0.392266,1.0,0.473995,0.297590,1.0,0.479308,0.199361,1.0,0.493835,0.185845,1.0,0.493835,0.185845,1.0,0.473936,0.185844,1.0,0.473936,0.185844,1.0,0.454835,0.300296,1.0,0.435676,0.303002,1.0,0.432499,0.422869,1.0,0.438674,0.529124,1.0,0.441703,0.543057,1.0,0.445912,0.555823,1.0,0.435759,0.566829,1.0,0.437245,0.558905,1.0,0.435759,0.581796,1.0,0.447398,0.580035,1.0,0.434026,0.568150,1.0,0.435759,0.581796,1.0,0.445417,0.587519,1.0,0.433779,0.571231,1.0,0.435512,0.583997,1.0,0.441455,0.585319,1.0,0.434026,0.571671,1.0,0.433531,0.585319,1.0,0.440464,0.597204,1.0,0.494648,0.296234,1.0,0.515301,0.294878,1.0,0.504601,0.420055,1.0,0.504584,0.316575,1.0,0.497002,0.287536,1.0,0.497785,0.318656,1.0,0.501182,0.320514,1.0,0.499876,0.314011,1.0,0.501966,0.318192,1.0,0.510065,0.319120,1.0,0.510588,0.307044,1.0,0.511633,0.311689,1.0,0.516597,0.311689,1.0,0.517642,0.297755,1.0,0.514246,0.294039,1.0,0.519732,0.297755,1.0,0.517642,0.284284,1.0,0.526005,0.292645,1.0,0.522604,0.289394,1.0,0.457054,0.488337,1.0,0.457054,0.488337,1.0,0.483131,0.681672,1.0,0.532224,0.837177,1.0,0.532224,0.837177,1.0,0.498477,0.485547,1.0,0.498477,0.485547,1.0,0.507608,0.684431,1.0,0.473915,0.812496,1.0,0.473915,0.812496,1.0
|
||||
0.471633,0.469228,1.0,0.469930,0.322157,1.0,0.470497,0.371181,1.0,0.469362,0.273133,1.0,0.476231,0.176192,1.0,0.487748,0.164106,1.0,0.487748,0.164106,1.0,0.472399,0.163986,1.0,0.472399,0.163986,1.0,0.450936,0.278523,1.0,0.432509,0.283913,1.0,0.421754,0.384743,1.0,0.421817,0.490911,1.0,0.424516,0.498683,1.0,0.423542,0.499981,1.0,0.427193,0.512964,1.0,0.424272,0.503444,1.0,0.424759,0.516426,1.0,0.426463,0.516426,1.0,0.420378,0.537631,1.0,0.415509,0.526379,1.0,0.429871,0.535467,1.0,0.419160,0.540660,1.0,0.412831,0.531139,1.0,0.413074,0.532438,1.0,0.417456,0.541958,1.0,0.412831,0.534168,1.0,0.412588,0.544987,1.0,0.487751,0.271705,1.0,0.506139,0.270276,1.0,0.507701,0.384765,1.0,0.521396,0.291973,1.0,0.527807,0.269754,1.0,0.534187,0.261351,1.0,0.523552,0.230682,1.0,0.536552,0.242026,1.0,0.538443,0.240766,1.0,0.538443,0.245806,1.0,0.532297,0.239505,1.0,0.533005,0.245806,1.0,0.536078,0.253789,1.0,0.526151,0.241606,1.0,0.528750,0.241606,1.0,0.533948,0.256310,1.0,0.522609,0.244126,1.0,0.524500,0.236564,1.0,0.526859,0.252529,1.0,0.447852,0.471920,1.0,0.447852,0.471920,1.0,0.475515,0.662740,1.0,0.521474,0.820847,1.0,0.521474,0.820847,1.0,0.495413,0.466536,1.0,0.495413,0.466536,1.0,0.504565,0.665347,1.0,0.478564,0.796200,1.0,0.478564,0.796200,1.0
|
||||
0.464741,0.451520,1.0,0.462478,0.301270,1.0,0.463232,0.351353,1.0,0.461723,0.251187,1.0,0.471599,0.153104,1.0,0.484679,0.142202,1.0,0.484679,0.142202,1.0,0.470796,0.142122,1.0,0.470796,0.142122,1.0,0.442573,0.253894,1.0,0.423422,0.256600,1.0,0.411050,0.349261,1.0,0.408048,0.439251,1.0,0.409331,0.447268,1.0,0.410778,0.460496,1.0,0.412431,0.475929,1.0,0.399617,0.470050,1.0,0.402097,0.487687,1.0,0.403544,0.491362,1.0,0.399203,0.471152,1.0,0.403751,0.489892,1.0,0.406437,0.495036,1.0,0.399823,0.473356,1.0,0.402510,0.487319,1.0,0.406644,0.491362,1.0,0.399617,0.473724,1.0,0.400650,0.484380,1.0,0.407057,0.482910,1.0,0.483157,0.249815,1.0,0.504590,0.248444,1.0,0.518334,0.352016,1.0,0.535307,0.259364,1.0,0.546943,0.233556,1.0,0.540240,0.216476,1.0,0.543813,0.209327,1.0,0.549625,0.208135,1.0,0.550964,0.218462,1.0,0.549625,0.220051,1.0,0.552750,0.240705,1.0,0.550964,0.241499,1.0,0.538453,0.239910,1.0,0.554318,0.240705,1.0,0.543813,0.248648,1.0,0.538229,0.254209,1.0,0.534432,0.249840,1.0,0.536667,0.254606,1.0,0.540240,0.258975,1.0,0.443260,0.455607,1.0,0.443260,0.455607,1.0,0.467819,0.654481,1.0,0.501527,0.809882,1.0,0.501527,0.809882,1.0,0.486222,0.447432,1.0,0.486222,0.447432,1.0,0.498497,0.646387,1.0,0.484706,0.788029,1.0,0.484706,0.788029,1.0
|
||||
0.460121,0.441907,1.0,0.458982,0.282620,1.0,0.459361,0.335716,1.0,0.458602,0.229524,1.0,0.464765,0.138111,1.0,0.480044,0.128507,1.0,0.480044,0.128507,1.0,0.461647,0.123176,1.0,0.461647,0.123176,1.0,0.439424,0.233537,1.0,0.420247,0.237551,1.0,0.408044,0.308426,1.0,0.397230,0.382082,1.0,0.397153,0.400494,1.0,0.398898,0.408561,1.0,0.398200,0.420352,1.0,0.386681,0.417559,1.0,0.389997,0.430591,1.0,0.396280,0.431212,1.0,0.386157,0.422213,1.0,0.389473,0.434315,1.0,0.395233,0.433073,1.0,0.389647,0.424695,1.0,0.390520,0.433694,1.0,0.394709,0.432453,1.0,0.391742,0.425937,1.0,0.391917,0.432143,1.0,0.396455,0.432143,1.0,0.477770,0.228121,1.0,0.496938,0.226719,1.0,0.521448,0.327510,1.0,0.546021,0.248492,1.0,0.550505,0.239737,1.0,0.552771,0.243362,1.0,0.548464,0.243362,1.0,0.564099,0.199052,1.0,0.550276,0.243765,1.0,0.544839,0.239334,1.0,0.556167,0.204691,1.0,0.565911,0.213150,1.0,0.560698,0.215165,1.0,0.556167,0.206706,1.0,0.568177,0.215568,1.0,0.568630,0.233292,1.0,0.564099,0.200663,1.0,0.571125,0.230069,1.0,0.569766,0.233292,1.0,0.435639,0.444622,1.0,0.435639,0.444622,1.0,0.455534,0.640890,1.0,0.477032,0.796294,1.0,0.477032,0.796294,1.0,0.484603,0.439193,1.0,0.484603,0.439193,1.0,0.501560,0.627250,1.0,0.496986,0.777124,1.0,0.496986,0.777124,1.0
|
||||
0.454011,0.420115,1.0,0.449464,0.272969,1.0,0.450979,0.322018,1.0,0.447948,0.223920,1.0,0.457802,0.125865,1.0,0.470914,0.120265,1.0,0.470914,0.120265,1.0,0.457040,0.120247,1.0,0.457040,0.120247,1.0,0.428777,0.225298,1.0,0.409605,0.226675,1.0,0.398809,0.278512,1.0,0.385086,0.341224,1.0,0.384569,0.358628,1.0,0.388735,0.369325,1.0,0.388735,0.380844,1.0,0.376084,0.378376,1.0,0.382409,0.391542,1.0,0.386112,0.389347,1.0,0.373770,0.386605,1.0,0.381175,0.398124,1.0,0.384723,0.394284,1.0,0.373615,0.390719,1.0,0.379786,0.400044,1.0,0.383027,0.397027,1.0,0.375158,0.392639,1.0,0.378707,0.398124,1.0,0.381021,0.396479,1.0,0.467847,0.221187,1.0,0.487747,0.218454,1.0,0.526052,0.311144,1.0,0.558219,0.251103,1.0,0.558630,0.243104,1.0,0.577854,0.241838,1.0,0.573823,0.219475,1.0,0.578568,0.239306,1.0,0.581177,0.205974,1.0,0.574771,0.215678,1.0,0.586161,0.229602,1.0,0.580943,0.210193,1.0,0.583786,0.222851,1.0,0.580943,0.238884,1.0,0.575005,0.214834,1.0,0.571682,0.221163,1.0,0.578094,0.240572,1.0,0.572396,0.217366,1.0,0.568839,0.222429,1.0,0.432557,0.425545,1.0,0.432557,0.425545,1.0,0.443239,0.640839,1.0,0.460156,0.799054,1.0,0.460156,0.799054,1.0,0.475464,0.414684,1.0,0.475464,0.414684,1.0,0.500020,0.619128,1.0,0.506123,0.771614,1.0,0.506123,0.771614,1.0
|
||||
0.454011,0.420115,1.0,0.449464,0.272969,1.0,0.450979,0.322018,1.0,0.447948,0.223920,1.0,0.457802,0.125865,1.0,0.470914,0.120265,1.0,0.470914,0.120265,1.0,0.457040,0.120247,1.0,0.457040,0.120247,1.0,0.428777,0.225298,1.0,0.409605,0.226675,1.0,0.398809,0.278512,1.0,0.385086,0.341224,1.0,0.384569,0.358628,1.0,0.388735,0.369325,1.0,0.388735,0.380844,1.0,0.376084,0.378376,1.0,0.382409,0.391542,1.0,0.386112,0.389347,1.0,0.373770,0.386605,1.0,0.381175,0.398124,1.0,0.384723,0.394284,1.0,0.373615,0.390719,1.0,0.379786,0.400044,1.0,0.383027,0.397027,1.0,0.375158,0.392639,1.0,0.378707,0.398124,1.0,0.381021,0.396479,1.0,0.467847,0.221187,1.0,0.487747,0.218454,1.0,0.526052,0.311144,1.0,0.558219,0.251103,1.0,0.558630,0.243104,1.0,0.577854,0.241838,1.0,0.573823,0.219475,1.0,0.578568,0.239306,1.0,0.581177,0.205974,1.0,0.574771,0.215678,1.0,0.586161,0.229602,1.0,0.580943,0.210193,1.0,0.583786,0.222851,1.0,0.580943,0.238884,1.0,0.575005,0.214834,1.0,0.571682,0.221163,1.0,0.578094,0.240572,1.0,0.572396,0.217366,1.0,0.568839,0.222429,1.0,0.432557,0.425545,1.0,0.432557,0.425545,1.0,0.443239,0.640839,1.0,0.460156,0.799054,1.0,0.460156,0.799054,1.0,0.475464,0.414684,1.0,0.475464,0.414684,1.0,0.500020,0.619128,1.0,0.506123,0.771614,1.0,0.506123,0.771614,1.0
|
||||
0.447899,0.414698,1.0,0.445576,0.267513,1.0,0.446350,0.316575,1.0,0.444801,0.218452,1.0,0.450177,0.124465,1.0,0.461664,0.117691,1.0,0.461664,0.117691,1.0,0.446399,0.117604,1.0,0.446399,0.117604,1.0,0.425640,0.219818,1.0,0.406478,0.221183,1.0,0.394236,0.270356,1.0,0.374386,0.322087,1.0,0.374154,0.333032,1.0,0.377600,0.346049,1.0,0.378892,0.362385,1.0,0.366114,0.354218,1.0,0.372861,0.368766,1.0,0.375733,0.364427,1.0,0.364247,0.360088,1.0,0.369559,0.370553,1.0,0.374010,0.367745,1.0,0.364103,0.359322,1.0,0.369703,0.368766,1.0,0.374010,0.367234,1.0,0.367262,0.356515,1.0,0.373148,0.368256,1.0,0.374154,0.366724,1.0,0.463969,0.214431,1.0,0.483136,0.210410,1.0,0.526078,0.294945,1.0,0.568917,0.270314,1.0,0.567542,0.264693,1.0,0.588464,0.248396,1.0,0.589401,0.250486,1.0,0.590578,0.262604,1.0,0.590109,0.253411,1.0,0.593635,0.276810,1.0,0.586818,0.274721,1.0,0.578828,0.264275,1.0,0.579063,0.273468,1.0,0.570599,0.269289,1.0,0.571776,0.270124,1.0,0.572479,0.276810,1.0,0.564958,0.270124,1.0,0.565661,0.268871,1.0,0.566839,0.282660,1.0,0.424890,0.420159,1.0,0.424890,0.420159,1.0,0.431035,0.640828,1.0,0.435615,0.812544,1.0,0.435615,0.812544,1.0,0.470908,0.409236,1.0,0.470908,0.409236,1.0,0.498485,0.618987,1.0,0.512268,0.766273,1.0,0.512268,0.766273,1.0
|
||||
0.445578,0.431013,1.0,0.439240,0.273660,1.0,0.441353,0.326111,1.0,0.437127,0.221208,1.0,0.446381,0.120380,1.0,0.455555,0.120431,1.0,0.455555,0.120431,1.0,0.437206,0.120329,1.0,0.437206,0.120329,1.0,0.418759,0.221187,1.0,0.400391,0.221166,1.0,0.389658,0.270265,1.0,0.369721,0.313770,1.0,0.367387,0.332244,1.0,0.370732,0.340021,1.0,0.368803,0.348942,1.0,0.357223,0.337734,1.0,0.361855,0.351230,1.0,0.365329,0.350772,1.0,0.353620,0.341851,1.0,0.359024,0.356490,1.0,0.362884,0.356490,1.0,0.351948,0.346426,1.0,0.357352,0.358320,1.0,0.361083,0.358549,1.0,0.352463,0.350772,1.0,0.356580,0.358778,1.0,0.359410,0.359006,1.0,0.455544,0.219855,1.0,0.473961,0.218501,1.0,0.521531,0.294868,1.0,0.572031,0.313744,1.0,0.576703,0.317465,1.0,0.589870,0.307851,1.0,0.601625,0.315375,1.0,0.591750,0.301581,1.0,0.600687,0.309105,1.0,0.604682,0.322063,1.0,0.591984,0.301999,1.0,0.602099,0.319555,1.0,0.602802,0.335856,1.0,0.591984,0.307851,1.0,0.601859,0.322481,1.0,0.602802,0.335856,1.0,0.592458,0.305343,1.0,0.597161,0.327079,1.0,0.599042,0.336693,1.0,0.421832,0.436479,1.0,0.421832,0.436479,1.0,0.420284,0.646400,1.0,0.409605,0.815403,1.0,0.409605,0.815403,1.0,0.469324,0.425548,1.0,0.469324,0.425548,1.0,0.498454,0.619184,1.0,0.521406,0.771729,1.0,0.521406,0.771729,1.0
|
||||
0.437914,0.444687,1.0,0.433859,0.283177,1.0,0.435210,0.337013,1.0,0.432507,0.229340,1.0,0.432522,0.143624,1.0,0.446369,0.139338,1.0,0.446369,0.139338,1.0,0.432495,0.136720,1.0,0.432495,0.136720,1.0,0.414893,0.229348,1.0,0.397279,0.229356,1.0,0.385083,0.289251,1.0,0.360560,0.308435,1.0,0.357988,0.315701,1.0,0.361274,0.322711,1.0,0.359303,0.332292,1.0,0.357068,0.312663,1.0,0.359171,0.320842,1.0,0.359434,0.323179,1.0,0.350102,0.317337,1.0,0.350102,0.319440,1.0,0.354045,0.333460,1.0,0.344844,0.320608,1.0,0.349839,0.337900,1.0,0.350890,0.338368,1.0,0.342346,0.327151,1.0,0.345632,0.339769,1.0,0.347210,0.340237,1.0,0.448627,0.229301,1.0,0.464747,0.229263,1.0,0.518364,0.308445,1.0,0.570464,0.368322,1.0,0.573339,0.382626,1.0,0.582036,0.391264,1.0,0.589703,0.405356,1.0,0.593031,0.376262,1.0,0.604536,0.389900,1.0,0.605302,0.403992,1.0,0.594563,0.379899,1.0,0.600958,0.409447,1.0,0.599167,0.419448,1.0,0.592005,0.388991,1.0,0.596609,0.411266,1.0,0.595844,0.423084,1.0,0.594563,0.400810,1.0,0.591240,0.411720,1.0,0.590984,0.417630,1.0,0.415673,0.450131,1.0,0.415673,0.450131,1.0,0.407994,0.662731,1.0,0.385092,0.820739,1.0,0.385092,0.820739,1.0,0.460154,0.439242,1.0,0.460154,0.439242,1.0,0.497007,0.632748,1.0,0.530682,0.777161,1.0,0.530682,0.777161,1.0
|
||||
0.434059,0.467813,1.0,0.426051,0.305349,1.0,0.428720,0.359504,1.0,0.423382,0.251194,1.0,0.422617,0.165381,1.0,0.435697,0.161209,1.0,0.435697,0.161209,1.0,0.421810,0.158487,1.0,0.421810,0.158487,1.0,0.408033,0.252560,1.0,0.392685,0.253926,1.0,0.386597,0.332991,1.0,0.357430,0.308449,1.0,0.349452,0.301229,1.0,0.357521,0.298302,1.0,0.356533,0.306792,1.0,0.351922,0.290105,1.0,0.354886,0.305328,1.0,0.352745,0.312939,1.0,0.346487,0.289812,1.0,0.347640,0.305328,1.0,0.347146,0.312939,1.0,0.340559,0.293910,1.0,0.339407,0.304449,1.0,0.340889,0.310597,1.0,0.335619,0.297423,1.0,0.334631,0.305328,1.0,0.334467,0.310597,1.0,0.440222,0.249853,1.0,0.457063,0.248511,1.0,0.507672,0.327538,1.0,0.561312,0.414672,1.0,0.571016,0.427631,1.0,0.565979,0.408677,1.0,0.581677,0.424472,1.0,0.561240,0.436056,1.0,0.560354,0.433950,1.0,0.566870,0.433423,1.0,0.565979,0.452905,1.0,0.558578,0.452378,1.0,0.560948,0.449745,1.0,0.570422,0.466068,1.0,0.559760,0.463434,1.0,0.563609,0.458169,1.0,0.573089,0.473965,1.0,0.587302,0.465014,1.0,0.552354,0.471859,1.0,0.411068,0.471954,1.0,0.411068,0.471954,1.0,0.389618,0.679059,1.0,0.362130,0.834365,1.0,0.362130,0.834365,1.0,0.457049,0.463673,1.0,0.457049,0.463673,1.0,0.497004,0.640941,1.0,0.538344,0.788051,1.0,0.538344,0.788051,1.0
|
||||
0.430229,0.488319,1.0,0.423901,0.328871,1.0,0.426010,0.382021,1.0,0.421791,0.275722,1.0,0.417212,0.196643,1.0,0.432546,0.183105,1.0,0.432546,0.183105,1.0,0.414163,0.182914,1.0,0.414163,0.182914,1.0,0.404973,0.275751,1.0,0.388155,0.275781,1.0,0.371254,0.343905,1.0,0.351318,0.297494,1.0,0.346122,0.267975,1.0,0.351346,0.295835,1.0,0.346583,0.269614,1.0,0.341667,0.284910,1.0,0.351193,0.296382,1.0,0.354727,0.295835,1.0,0.348427,0.293924,1.0,0.347966,0.295835,1.0,0.349964,0.297474,1.0,0.347505,0.291739,1.0,0.345815,0.296108,1.0,0.355188,0.289827,1.0,0.341514,0.286003,1.0,0.340438,0.286549,1.0,0.356417,0.292012,1.0,0.435616,0.274391,1.0,0.449441,0.273059,1.0,0.504579,0.357568,1.0,0.552125,0.444522,1.0,0.546687,0.464319,1.0,0.549469,0.486069,1.0,0.550021,0.489530,1.0,0.567542,0.478655,1.0,0.578104,0.486563,1.0,0.580328,0.488046,1.0,0.570875,0.468769,1.0,0.582000,0.475689,1.0,0.580885,0.478655,1.0,0.571708,0.459377,1.0,0.581719,0.467285,1.0,0.582276,0.469263,1.0,0.572266,0.451468,1.0,0.580328,0.458388,1.0,0.580328,0.460859,1.0,0.407999,0.491101,1.0,0.407999,0.491101,1.0,0.385088,0.687170,1.0,0.362048,0.837015,1.0,0.362048,0.837015,1.0,0.452458,0.485537,1.0,0.452458,0.485537,1.0,0.499994,0.660021,1.0,0.545979,0.793564,1.0,0.545979,0.793564,1.0
|
||||
0.430229,0.488319,1.0,0.423901,0.328871,1.0,0.426010,0.382021,1.0,0.421791,0.275722,1.0,0.417212,0.196643,1.0,0.432546,0.183105,1.0,0.432546,0.183105,1.0,0.414163,0.182914,1.0,0.414163,0.182914,1.0,0.404973,0.275751,1.0,0.388155,0.275781,1.0,0.371254,0.343905,1.0,0.351318,0.297494,1.0,0.346122,0.267975,1.0,0.351346,0.295835,1.0,0.346583,0.269614,1.0,0.341667,0.284910,1.0,0.351193,0.296382,1.0,0.354727,0.295835,1.0,0.348427,0.293924,1.0,0.347966,0.295835,1.0,0.349964,0.297474,1.0,0.347505,0.291739,1.0,0.345815,0.296108,1.0,0.355188,0.289827,1.0,0.341514,0.286003,1.0,0.340438,0.286549,1.0,0.356417,0.292012,1.0,0.435616,0.274391,1.0,0.449441,0.273059,1.0,0.504579,0.357568,1.0,0.552125,0.444522,1.0,0.546687,0.464319,1.0,0.549469,0.486069,1.0,0.550021,0.489530,1.0,0.567542,0.478655,1.0,0.578104,0.486563,1.0,0.580328,0.488046,1.0,0.570875,0.468769,1.0,0.582000,0.475689,1.0,0.580885,0.478655,1.0,0.571708,0.459377,1.0,0.581719,0.467285,1.0,0.582276,0.469263,1.0,0.572266,0.451468,1.0,0.580328,0.458388,1.0,0.580328,0.460859,1.0,0.407999,0.491101,1.0,0.407999,0.491101,1.0,0.385088,0.687170,1.0,0.362048,0.837015,1.0,0.362048,0.837015,1.0,0.452458,0.485537,1.0,0.452458,0.485537,1.0,0.499994,0.660021,1.0,0.545979,0.793564,1.0,0.545979,0.793564,1.0
|
||||
0.433320,0.488315,1.0,0.423518,0.334987,1.0,0.426785,0.386096,1.0,0.420251,0.283878,1.0,0.416426,0.200788,1.0,0.431009,0.185864,1.0,0.431009,0.185864,1.0,0.412642,0.185666,1.0,0.412642,0.185666,1.0,0.403429,0.286620,1.0,0.386607,0.289362,1.0,0.365096,0.362897,1.0,0.354386,0.302946,1.0,0.346405,0.277385,1.0,0.344695,0.260054,1.0,0.354957,0.261270,1.0,0.351707,0.288940,1.0,0.361969,0.271000,1.0,0.358548,0.266744,1.0,0.351365,0.288940,1.0,0.361969,0.278906,1.0,0.361114,0.277081,1.0,0.353760,0.277081,1.0,0.362141,0.279210,1.0,0.358720,0.286507,1.0,0.349826,0.299278,1.0,0.357522,0.300190,1.0,0.357865,0.300494,1.0,0.434102,0.279806,1.0,0.447953,0.275734,1.0,0.497004,0.360139,1.0,0.542932,0.447326,1.0,0.544943,0.466360,1.0,0.550693,0.481941,1.0,0.558359,0.488269,1.0,0.557266,0.484375,1.0,0.561646,0.487296,1.0,0.563563,0.484862,1.0,0.558911,0.474637,1.0,0.564115,0.475611,1.0,0.563292,0.473663,1.0,0.558635,0.467333,1.0,0.563563,0.470742,1.0,0.563016,0.470256,1.0,0.558911,0.458083,1.0,0.562198,0.459544,1.0,0.563839,0.460518,1.0,0.409557,0.491088,1.0,0.409557,0.491088,1.0,0.386544,0.684481,1.0,0.362031,0.837006,1.0,0.362031,0.837006,1.0,0.457084,0.485542,1.0,0.457084,0.485542,1.0,0.501534,0.662671,1.0,0.545953,0.796161,1.0,0.545953,0.796161,1.0
|
||||
0.441719,0.477325,1.0,0.427920,0.322109,1.0,0.432519,0.373848,1.0,0.423320,0.270370,1.0,0.417225,0.185795,1.0,0.432572,0.177615,1.0,0.432572,0.177615,1.0,0.414171,0.169480,1.0,0.414171,0.169480,1.0,0.406461,0.274411,1.0,0.389603,0.278451,1.0,0.372811,0.376482,1.0,0.360417,0.308448,1.0,0.356327,0.299530,1.0,0.360133,0.295019,1.0,0.366900,0.281485,1.0,0.363517,0.276598,1.0,0.362459,0.257049,1.0,0.362248,0.265696,1.0,0.358653,0.275470,1.0,0.357384,0.255169,1.0,0.357807,0.266448,1.0,0.353789,0.272463,1.0,0.353155,0.258553,1.0,0.353789,0.266072,1.0,0.348714,0.271335,1.0,0.346811,0.261936,1.0,0.348291,0.264193,1.0,0.440188,0.266248,1.0,0.457056,0.262126,1.0,0.504618,0.338346,1.0,0.529141,0.428281,1.0,0.526661,0.447103,1.0,0.531125,0.465478,1.0,0.536057,0.478842,1.0,0.537703,0.463390,1.0,0.545219,0.472994,1.0,0.548276,0.478842,1.0,0.539818,0.458379,1.0,0.546396,0.467566,1.0,0.547802,0.472577,1.0,0.540521,0.452531,1.0,0.545687,0.458796,1.0,0.546630,0.465478,1.0,0.540755,0.446268,1.0,0.544047,0.452114,1.0,0.545927,0.455872,1.0,0.420247,0.485492,1.0,0.420247,0.485492,1.0,0.398894,0.668236,1.0,0.372722,0.823539,1.0,0.372722,0.823539,1.0,0.463191,0.469158,1.0,0.463191,0.469158,1.0,0.509141,0.657204,1.0,0.533724,0.793442,1.0,0.533724,0.793442,1.0
|
||||
0.450165,0.465120,1.0,0.434654,0.308749,1.0,0.439824,0.360873,1.0,0.429484,0.256626,1.0,0.421077,0.178953,1.0,0.435575,0.163934,1.0,0.435575,0.163934,1.0,0.420253,0.161302,1.0,0.420253,0.161302,1.0,0.413367,0.263455,1.0,0.397250,0.270284,1.0,0.381964,0.379145,1.0,0.362038,0.313731,1.0,0.362640,0.253042,1.0,0.370511,0.278973,1.0,0.356389,0.264979,1.0,0.371206,0.276092,1.0,0.365649,0.306963,1.0,0.362408,0.306140,1.0,0.365418,0.271153,1.0,0.365186,0.290498,1.0,0.360324,0.301200,1.0,0.365418,0.264567,1.0,0.358472,0.279796,1.0,0.354305,0.285559,1.0,0.354536,0.271565,1.0,0.349905,0.272388,1.0,0.350832,0.272799,1.0,0.445592,0.252539,1.0,0.461699,0.248453,1.0,0.509159,0.313715,1.0,0.515331,0.403869,1.0,0.509444,0.418750,1.0,0.506362,0.430489,1.0,0.503721,0.444576,1.0,0.511645,0.435184,1.0,0.512966,0.446141,1.0,0.511425,0.453576,1.0,0.516708,0.434794,1.0,0.517808,0.441837,1.0,0.517588,0.448489,1.0,0.520449,0.430489,1.0,0.521990,0.439097,1.0,0.522870,0.446924,1.0,0.523974,0.425793,1.0,0.526172,0.434794,1.0,0.527495,0.441055,1.0,0.427935,0.469247,1.0,0.427935,0.469247,1.0,0.411055,0.665512,1.0,0.397231,0.831696,1.0,0.397231,0.831696,1.0,0.472394,0.460993,1.0,0.472394,0.460993,1.0,0.513807,0.654486,1.0,0.516855,0.774326,1.0,0.516855,0.774326,1.0
|
||||
0.459350,0.459655,1.0,0.441564,0.305364,1.0,0.447492,0.356794,1.0,0.435635,0.253933,1.0,0.429463,0.176269,1.0,0.444764,0.161305,1.0,0.444764,0.161305,1.0,0.424899,0.161213,1.0,0.424899,0.161213,1.0,0.419518,0.262039,1.0,0.403401,0.270144,1.0,0.389618,0.384781,1.0,0.374294,0.297535,1.0,0.380847,0.296266,1.0,0.387137,0.273474,1.0,0.367543,0.270464,1.0,0.367543,0.272614,1.0,0.368027,0.271323,1.0,0.387621,0.267883,1.0,0.365124,0.291966,1.0,0.364398,0.284655,1.0,0.374316,0.294546,1.0,0.364398,0.291106,1.0,0.364640,0.291966,1.0,0.375284,0.294546,1.0,0.358835,0.288525,1.0,0.383992,0.255842,1.0,0.376252,0.313468,1.0,0.453260,0.251124,1.0,0.470886,0.248314,1.0,0.512291,0.294878,1.0,0.509131,0.392938,1.0,0.496828,0.404479,1.0,0.493000,0.429301,1.0,0.495027,0.443314,1.0,0.501783,0.430102,1.0,0.502008,0.450920,1.0,0.502683,0.458928,1.0,0.507187,0.428901,1.0,0.506512,0.446517,1.0,0.503809,0.444115,1.0,0.510791,0.425298,1.0,0.510115,0.436507,1.0,0.508539,0.435306,1.0,0.513944,0.419693,1.0,0.514619,0.427700,1.0,0.514394,0.431704,1.0,0.435639,0.466488,1.0,0.435639,0.466488,1.0,0.415667,0.662669,1.0,0.434139,0.812620,1.0,0.434139,0.812620,1.0,0.483060,0.452822,1.0,0.483060,0.452822,1.0,0.518380,0.662550,1.0,0.493899,0.747098,1.0,0.493899,0.747098,1.0
|
||||
0.464730,0.465131,1.0,0.450883,0.314860,1.0,0.455498,0.364950,1.0,0.446267,0.264769,1.0,0.439421,0.180260,1.0,0.452497,0.166706,1.0,0.452497,0.166706,1.0,0.435664,0.163956,1.0,0.435664,0.163956,1.0,0.428662,0.268857,1.0,0.411057,0.272944,1.0,0.400329,0.392888,1.0,0.397325,0.294884,1.0,0.394830,0.278137,1.0,0.392825,0.257197,1.0,0.405105,0.244722,1.0,0.392324,0.257197,1.0,0.391071,0.264771,1.0,0.392825,0.271008,1.0,0.391572,0.260761,1.0,0.390068,0.261653,1.0,0.392574,0.276356,1.0,0.391822,0.262098,1.0,0.390820,0.272345,1.0,0.391572,0.275464,1.0,0.395081,0.284820,1.0,0.405356,0.242940,1.0,0.405606,0.242940,1.0,0.463153,0.257944,1.0,0.480040,0.251119,1.0,0.519921,0.292081,1.0,0.506146,0.381975,1.0,0.494337,0.399867,1.0,0.495405,0.415437,1.0,0.498823,0.423032,1.0,0.502455,0.418476,1.0,0.502028,0.428350,1.0,0.502455,0.433667,1.0,0.505659,0.416197,1.0,0.503950,0.426831,1.0,0.503523,0.433286,1.0,0.507795,0.412779,1.0,0.507795,0.421134,1.0,0.504805,0.428730,1.0,0.509718,0.409741,1.0,0.509504,0.418856,1.0,0.509077,0.423793,1.0,0.443253,0.469251,1.0,0.443253,0.469251,1.0,0.431042,0.665527,1.0,0.467775,0.826191,1.0,0.467775,0.826191,1.0,0.486208,0.461010,1.0,0.486208,0.461010,1.0,0.519878,0.662562,1.0,0.473933,0.719881,1.0,0.473933,0.719881,1.0
|
||||
0.464730,0.465131,1.0,0.450883,0.314860,1.0,0.455498,0.364950,1.0,0.446267,0.264769,1.0,0.439421,0.180260,1.0,0.452497,0.166706,1.0,0.452497,0.166706,1.0,0.435664,0.163956,1.0,0.435664,0.163956,1.0,0.428662,0.268857,1.0,0.411057,0.272944,1.0,0.400329,0.392888,1.0,0.397325,0.294884,1.0,0.394830,0.278137,1.0,0.392825,0.257197,1.0,0.405105,0.244722,1.0,0.392324,0.257197,1.0,0.391071,0.264771,1.0,0.392825,0.271008,1.0,0.391572,0.260761,1.0,0.390068,0.261653,1.0,0.392574,0.276356,1.0,0.391822,0.262098,1.0,0.390820,0.272345,1.0,0.391572,0.275464,1.0,0.395081,0.284820,1.0,0.405356,0.242940,1.0,0.405606,0.242940,1.0,0.463153,0.257944,1.0,0.480040,0.251119,1.0,0.519921,0.292081,1.0,0.506146,0.381975,1.0,0.494337,0.399867,1.0,0.495405,0.415437,1.0,0.498823,0.423032,1.0,0.502455,0.418476,1.0,0.502028,0.428350,1.0,0.502455,0.433667,1.0,0.505659,0.416197,1.0,0.503950,0.426831,1.0,0.503523,0.433286,1.0,0.507795,0.412779,1.0,0.507795,0.421134,1.0,0.504805,0.428730,1.0,0.509718,0.409741,1.0,0.509504,0.418856,1.0,0.509077,0.423793,1.0,0.443253,0.469251,1.0,0.443253,0.469251,1.0,0.431042,0.665527,1.0,0.467775,0.826191,1.0,0.467775,0.826191,1.0,0.486208,0.461010,1.0,0.486208,0.461010,1.0,0.519878,0.662562,1.0,0.473933,0.719881,1.0,0.473933,0.719881,1.0
|
||||
0.466254,0.459650,1.0,0.457082,0.305397,1.0,0.460140,0.356815,1.0,0.454025,0.253980,1.0,0.452463,0.177614,1.0,0.467820,0.169494,1.0,0.467820,0.169494,1.0,0.447970,0.164065,1.0,0.447970,0.164065,1.0,0.437932,0.259387,1.0,0.421839,0.264794,1.0,0.411099,0.384749,1.0,0.418723,0.292001,1.0,0.418983,0.280108,1.0,0.413970,0.251145,1.0,0.421991,0.236886,1.0,0.411965,0.246690,1.0,0.411213,0.249808,1.0,0.427755,0.252928,1.0,0.415724,0.254710,1.0,0.411965,0.250255,1.0,0.419735,0.237778,1.0,0.416477,0.261840,1.0,0.420988,0.257830,1.0,0.422241,0.257830,1.0,0.416978,0.264068,1.0,0.425499,0.263176,1.0,0.427755,0.252482,1.0,0.470108,0.252533,1.0,0.486192,0.251087,1.0,0.527573,0.289292,1.0,0.509233,0.379184,1.0,0.500332,0.391700,1.0,0.497701,0.406900,1.0,0.496824,0.418983,1.0,0.502524,0.413137,1.0,0.506032,0.422101,1.0,0.506471,0.420931,1.0,0.507567,0.409629,1.0,0.507786,0.415865,1.0,0.507786,0.413526,1.0,0.510636,0.403782,1.0,0.508224,0.407290,1.0,0.507786,0.406121,1.0,0.512171,0.399106,1.0,0.510198,0.397936,1.0,0.510198,0.397936,1.0,0.446258,0.466463,1.0,0.446258,0.466463,1.0,0.447900,0.670918,1.0,0.470931,0.834329,1.0,0.470931,0.834329,1.0,0.486251,0.452837,1.0,0.486251,0.452837,1.0,0.521495,0.662606,1.0,0.472460,0.709137,1.0,0.472460,0.709137,1.0
|
||||
0.471699,0.463777,1.0,0.467619,0.304243,1.0,0.468979,0.357421,1.0,0.466259,0.251065,1.0,0.467795,0.173586,1.0,0.483128,0.164127,1.0,0.483128,0.164127,1.0,0.466301,0.161322,1.0,0.466301,0.161322,1.0,0.449412,0.251194,1.0,0.432565,0.251324,1.0,0.420291,0.379317,1.0,0.434027,0.291914,1.0,0.433201,0.302605,1.0,0.429449,0.242113,1.0,0.432665,0.245447,1.0,0.441239,0.234492,1.0,0.430521,0.245923,1.0,0.439631,0.240684,1.0,0.439363,0.256879,1.0,0.431057,0.247353,1.0,0.435612,0.270216,1.0,0.438023,0.254497,1.0,0.433468,0.252592,1.0,0.436683,0.269263,1.0,0.418197,0.294031,1.0,0.430253,0.244019,1.0,0.444185,0.261166,1.0,0.482375,0.248391,1.0,0.498491,0.245717,1.0,0.533682,0.278406,1.0,0.519947,0.365665,1.0,0.511883,0.383011,1.0,0.514584,0.404432,1.0,0.511052,0.414035,1.0,0.512714,0.407757,1.0,0.508974,0.415513,1.0,0.506066,0.413667,1.0,0.511260,0.407019,1.0,0.509390,0.413667,1.0,0.506481,0.411450,1.0,0.513337,0.407019,1.0,0.510429,0.412189,1.0,0.506481,0.409234,1.0,0.515000,0.406649,1.0,0.512922,0.414405,1.0,0.512091,0.418837,1.0,0.447949,0.466494,1.0,0.447949,0.466494,1.0,0.447899,0.668164,1.0,0.470864,0.831649,1.0,0.470864,0.831649,1.0,0.495448,0.461059,1.0,0.495448,0.461059,1.0,0.527620,0.660004,1.0,0.484644,0.728036,1.0,0.484644,0.728036,1.0
|
||||
0.476270,0.452892,1.0,0.481372,0.291393,1.0,0.479671,0.345226,1.0,0.483073,0.237560,1.0,0.484665,0.164018,1.0,0.497009,0.155756,1.0,0.497009,0.155756,1.0,0.483131,0.147630,1.0,0.483131,0.147630,1.0,0.465451,0.241615,1.0,0.447828,0.245669,1.0,0.423430,0.363022,1.0,0.446353,0.308415,1.0,0.448495,0.299115,1.0,0.449270,0.264233,1.0,0.459597,0.269741,1.0,0.461404,0.252300,1.0,0.465277,0.276166,1.0,0.463469,0.281215,1.0,0.459855,0.284887,1.0,0.455208,0.287641,1.0,0.464244,0.278461,1.0,0.459597,0.284428,1.0,0.462695,0.283969,1.0,0.463985,0.280756,1.0,0.460887,0.287181,1.0,0.466051,0.273412,1.0,0.461662,0.272035,1.0,0.499196,0.233521,1.0,0.515320,0.229481,1.0,0.538339,0.272884,1.0,0.527620,0.362873,1.0,0.519021,0.374572,1.0,0.514803,0.388070,1.0,0.512694,0.397069,1.0,0.517334,0.391444,1.0,0.513959,0.396693,1.0,0.512061,0.405693,1.0,0.520497,0.392944,1.0,0.519654,0.399319,1.0,0.515014,0.410192,1.0,0.522818,0.394069,1.0,0.522818,0.401193,1.0,0.519443,0.411317,1.0,0.524927,0.394819,1.0,0.524714,0.403443,1.0,0.521974,0.411692,1.0,0.455521,0.455604,1.0,0.455521,0.455604,1.0,0.435642,0.659916,1.0,0.460094,0.812497,1.0,0.460094,0.812497,1.0,0.497019,0.450180,1.0,0.497019,0.450180,1.0,0.533682,0.651784,1.0,0.506153,0.752644,1.0,0.506153,0.752644,1.0
|
||||
0.483917,0.454220,1.0,0.492518,0.291707,1.0,0.489651,0.345878,1.0,0.495385,0.237536,1.0,0.506161,0.142260,1.0,0.515300,0.142301,1.0,0.515300,0.142301,1.0,0.497022,0.142219,1.0,0.497022,0.142219,1.0,0.477777,0.241640,1.0,0.460169,0.245744,1.0,0.435572,0.357492,1.0,0.457046,0.335617,1.0,0.450018,0.318273,1.0,0.452990,0.350408,1.0,0.459428,0.344685,1.0,0.455466,0.346886,1.0,0.449523,0.349968,1.0,0.450514,0.349528,1.0,0.456952,0.330158,1.0,0.459428,0.329278,1.0,0.450018,0.348207,1.0,0.456209,0.330599,1.0,0.459428,0.330158,1.0,0.459180,0.333240,1.0,0.449771,0.347327,1.0,0.448780,0.349528,1.0,0.449276,0.349528,1.0,0.512245,0.233458,1.0,0.529104,0.229381,1.0,0.541391,0.294739,1.0,0.536828,0.357499,1.0,0.530099,0.361186,1.0,0.526760,0.361186,1.0,0.526615,0.376663,1.0,0.528792,0.374857,1.0,0.524437,0.385175,1.0,0.522990,0.389818,1.0,0.532562,0.379243,1.0,0.528214,0.393171,1.0,0.524875,0.401168,1.0,0.536047,0.382080,1.0,0.532422,0.398588,1.0,0.528068,0.407616,1.0,0.539385,0.382854,1.0,0.538516,0.383885,1.0,0.533870,0.403231,1.0,0.460147,0.450170,1.0,0.460147,0.450170,1.0,0.426455,0.646383,1.0,0.437134,0.796335,1.0,0.437134,0.796335,1.0,0.507686,0.458269,1.0,0.507686,0.458269,1.0,0.541391,0.654506,1.0,0.532250,0.782653,1.0,0.532250,0.782653,1.0
|
||||
0.494593,0.458294,1.0,0.503271,0.298865,1.0,0.500378,0.352008,1.0,0.506164,0.245722,1.0,0.520700,0.142309,1.0,0.530609,0.142336,1.0,0.530609,0.142336,1.0,0.510791,0.142281,1.0,0.510791,0.142281,1.0,0.489319,0.247114,1.0,0.472474,0.248506,1.0,0.447874,0.349266,1.0,0.450957,0.382069,1.0,0.453335,0.359045,1.0,0.460135,0.395311,1.0,0.461721,0.397326,1.0,0.449255,0.413846,1.0,0.445629,0.415861,1.0,0.452428,0.416667,1.0,0.450615,0.413041,1.0,0.450842,0.424323,1.0,0.451068,0.425531,1.0,0.449255,0.413444,1.0,0.450615,0.429158,1.0,0.451295,0.423920,1.0,0.447215,0.416667,1.0,0.442909,0.418279,1.0,0.445629,0.417473,1.0,0.520704,0.241624,1.0,0.535245,0.237526,1.0,0.546073,0.319393,1.0,0.550609,0.357450,1.0,0.546203,0.339466,1.0,0.538917,0.354582,1.0,0.537177,0.366306,1.0,0.552625,0.360444,1.0,0.546724,0.373711,1.0,0.544292,0.385435,1.0,0.555052,0.365690,1.0,0.550193,0.379573,1.0,0.546203,0.385744,1.0,0.556094,0.370934,1.0,0.552797,0.381732,1.0,0.548458,0.383893,1.0,0.556271,0.374019,1.0,0.554359,0.382967,1.0,0.551234,0.382967,1.0,0.470807,0.450194,1.0,0.470807,0.450194,1.0,0.426392,0.643545,1.0,0.406468,0.798923,1.0,0.406468,0.798923,1.0,0.518380,0.466395,1.0,0.518380,0.466395,1.0,0.545974,0.660019,1.0,0.558187,0.809823,1.0,0.558187,0.809823,1.0
|
||||
0.494593,0.458294,1.0,0.503271,0.298865,1.0,0.500378,0.352008,1.0,0.506164,0.245722,1.0,0.520700,0.142309,1.0,0.530609,0.142336,1.0,0.530609,0.142336,1.0,0.510791,0.142281,1.0,0.510791,0.142281,1.0,0.489319,0.247114,1.0,0.472474,0.248506,1.0,0.447874,0.349266,1.0,0.450957,0.382069,1.0,0.453335,0.359045,1.0,0.460135,0.395311,1.0,0.461721,0.397326,1.0,0.449255,0.413846,1.0,0.445629,0.415861,1.0,0.452428,0.416667,1.0,0.450615,0.413041,1.0,0.450842,0.424323,1.0,0.451068,0.425531,1.0,0.449255,0.413444,1.0,0.450615,0.429158,1.0,0.451295,0.423920,1.0,0.447215,0.416667,1.0,0.442909,0.418279,1.0,0.445629,0.417473,1.0,0.520704,0.241624,1.0,0.535245,0.237526,1.0,0.546073,0.319393,1.0,0.550609,0.357450,1.0,0.546203,0.339466,1.0,0.538917,0.354582,1.0,0.537177,0.366306,1.0,0.552625,0.360444,1.0,0.546724,0.373711,1.0,0.544292,0.385435,1.0,0.555052,0.365690,1.0,0.550193,0.379573,1.0,0.546203,0.385744,1.0,0.556094,0.370934,1.0,0.552797,0.381732,1.0,0.548458,0.383893,1.0,0.556271,0.374019,1.0,0.554359,0.382967,1.0,0.551234,0.382967,1.0,0.470807,0.450194,1.0,0.470807,0.450194,1.0,0.426392,0.643545,1.0,0.406468,0.798923,1.0,0.406468,0.798923,1.0,0.518380,0.466395,1.0,0.518380,0.466395,1.0,0.545974,0.660019,1.0,0.558187,0.809823,1.0,0.558187,0.809823,1.0
|
||||
0.503838,0.465145,1.0,0.512443,0.306697,1.0,0.509575,0.359513,1.0,0.515312,0.253881,1.0,0.526820,0.174876,1.0,0.539875,0.158476,1.0,0.539875,0.158476,1.0,0.523000,0.158579,1.0,0.523000,0.158579,1.0,0.500029,0.256619,1.0,0.484747,0.259356,1.0,0.458633,0.371124,1.0,0.443256,0.447555,1.0,0.445674,0.446582,1.0,0.444925,0.467894,1.0,0.443427,0.485653,1.0,0.438681,0.466562,1.0,0.427193,0.488761,1.0,0.430690,0.488317,1.0,0.432687,0.467006,1.0,0.426944,0.487429,1.0,0.431189,0.488761,1.0,0.427193,0.477661,1.0,0.426944,0.485653,1.0,0.430690,0.488317,1.0,0.426444,0.482545,1.0,0.425945,0.488317,1.0,0.427443,0.488317,1.0,0.529112,0.252495,1.0,0.542911,0.251109,1.0,0.536807,0.335725,1.0,0.558292,0.335615,1.0,0.557464,0.317740,1.0,0.556755,0.328694,1.0,0.555349,0.339333,1.0,0.570490,0.332136,1.0,0.560276,0.352165,1.0,0.557813,0.356233,1.0,0.573656,0.346531,1.0,0.567146,0.353417,1.0,0.562036,0.351226,1.0,0.575417,0.349035,1.0,0.568906,0.359362,1.0,0.567672,0.359675,1.0,0.576297,0.349661,1.0,0.569255,0.360614,1.0,0.568552,0.360927,1.0,0.481618,0.461031,1.0,0.481618,0.461031,1.0,0.429495,0.640940,1.0,0.374335,0.782598,1.0,0.374335,0.782598,1.0,0.526057,0.469259,1.0,0.526057,0.469259,1.0,0.552104,0.670856,1.0,0.579661,0.818066,1.0,0.579661,0.818066,1.0
|
||||
0.513805,0.484216,1.0,0.519533,0.327878,1.0,0.517624,0.379991,1.0,0.521443,0.275766,1.0,0.539883,0.168116,1.0,0.547521,0.166804,1.0,0.547521,0.166804,1.0,0.532245,0.169429,1.0,0.532245,0.169429,1.0,0.508422,0.277104,1.0,0.495402,0.278443,1.0,0.461648,0.387504,1.0,0.435655,0.488257,1.0,0.436838,0.500957,1.0,0.434269,0.515114,1.0,0.429903,0.524246,1.0,0.421683,0.508720,1.0,0.417830,0.526986,1.0,0.421426,0.528813,1.0,0.420142,0.508264,1.0,0.417316,0.526530,1.0,0.420656,0.526530,1.0,0.419115,0.508264,1.0,0.417573,0.526073,1.0,0.420399,0.525160,1.0,0.419628,0.508264,1.0,0.418087,0.520137,1.0,0.420142,0.519681,1.0,0.533732,0.274433,1.0,0.546021,0.273101,1.0,0.545995,0.357394,1.0,0.567427,0.316706,1.0,0.573453,0.304515,1.0,0.572755,0.298331,1.0,0.563193,0.306989,1.0,0.573802,0.297403,1.0,0.565802,0.315029,1.0,0.562323,0.321213,1.0,0.578495,0.303588,1.0,0.568234,0.317194,1.0,0.563016,0.320286,1.0,0.582672,0.307607,1.0,0.583370,0.307917,1.0,0.581974,0.322141,1.0,0.584760,0.313792,1.0,0.586323,0.313792,1.0,0.585802,0.314410,1.0,0.493824,0.480083,1.0,0.493824,0.480083,1.0,0.421864,0.640887,1.0,0.354391,0.749829,1.0,0.354391,0.749829,1.0,0.533786,0.488348,1.0,0.533786,0.488348,1.0,0.558292,0.681784,1.0,0.579745,0.823510,1.0,0.579745,0.823510,1.0
|
||||
0.516076,0.492311,1.0,0.522402,0.342077,1.0,0.520293,0.392155,1.0,0.524510,0.291999,1.0,0.540586,0.189858,1.0,0.555125,0.172175,1.0,0.555125,0.172175,1.0,0.535313,0.180249,1.0,0.535313,0.180249,1.0,0.511503,0.290667,1.0,0.498495,0.289335,1.0,0.467796,0.395565,1.0,0.437167,0.488149,1.0,0.437903,0.502053,1.0,0.434453,0.516949,1.0,0.430264,0.523521,1.0,0.424102,0.509939,1.0,0.421884,0.519578,1.0,0.423856,0.523083,1.0,0.422131,0.507310,1.0,0.420898,0.516511,1.0,0.424102,0.519578,1.0,0.422131,0.505558,1.0,0.422131,0.511692,1.0,0.425334,0.513882,1.0,0.423856,0.505996,1.0,0.424349,0.506434,1.0,0.424842,0.512568,1.0,0.536042,0.292065,1.0,0.547573,0.292131,1.0,0.553630,0.379342,1.0,0.567474,0.316705,1.0,0.568594,0.319889,1.0,0.571677,0.318600,1.0,0.561885,0.316344,1.0,0.575484,0.289265,1.0,0.575667,0.287331,1.0,0.571859,0.298613,1.0,0.580198,0.293456,1.0,0.578750,0.300225,1.0,0.579292,0.305060,1.0,0.581286,0.294422,1.0,0.580198,0.297969,1.0,0.584911,0.299581,1.0,0.585641,0.297324,1.0,0.574031,0.286363,1.0,0.585641,0.299581,1.0,0.495334,0.488182,1.0,0.495334,0.488182,1.0,0.418722,0.630029,1.0,0.351278,0.717231,1.0,0.351278,0.717231,1.0,0.536818,0.496439,1.0,0.536818,0.496439,1.0,0.558333,0.670849,1.0,0.579740,0.826192,1.0,0.579740,0.826192,1.0
|
||||
0.512246,0.474636,1.0,0.523749,0.323485,1.0,0.519915,0.373868,1.0,0.527583,0.273101,1.0,0.541414,0.180343,1.0,0.556646,0.163873,1.0,0.556646,0.163873,1.0,0.538333,0.164118,1.0,0.538333,0.164118,1.0,0.513807,0.273049,1.0,0.500030,0.272997,1.0,0.472360,0.379168,1.0,0.446410,0.452874,1.0,0.444849,0.488787,1.0,0.447746,0.492221,1.0,0.444124,0.461315,1.0,0.444849,0.460027,1.0,0.448712,0.472046,1.0,0.444366,0.464749,1.0,0.444849,0.466037,1.0,0.449195,0.471617,1.0,0.450644,0.472476,1.0,0.446298,0.475051,1.0,0.448230,0.474622,1.0,0.449195,0.478485,1.0,0.446056,0.485353,1.0,0.433500,0.490933,1.0,0.435191,0.495226,1.0,0.539862,0.274418,1.0,0.552141,0.275734,1.0,0.549062,0.373851,1.0,0.576630,0.313818,1.0,0.573563,0.308787,1.0,0.582078,0.284273,1.0,0.589177,0.269493,1.0,0.582281,0.280307,1.0,0.589380,0.269131,1.0,0.593437,0.263364,1.0,0.586339,0.282110,1.0,0.593234,0.274900,1.0,0.599115,0.272377,1.0,0.589786,0.286075,1.0,0.596073,0.281389,1.0,0.600125,0.276342,1.0,0.592422,0.291483,1.0,0.596677,0.288959,1.0,0.598099,0.288239,1.0,0.490809,0.466493,1.0,0.490809,0.466493,1.0,0.424943,0.627233,1.0,0.362099,0.684525,1.0,0.362099,0.684525,1.0,0.533682,0.482779,1.0,0.533682,0.482779,1.0,0.549089,0.662732,1.0,0.572089,0.820855,1.0,0.572089,0.820855,1.0
|
||||
0.506117,0.461016,1.0,0.522209,0.315837,1.0,0.516845,0.364230,1.0,0.527573,0.267444,1.0,0.542937,0.169480,1.0,0.556719,0.155837,1.0,0.556719,0.155837,1.0,0.541411,0.158569,1.0,0.541411,0.158569,1.0,0.512290,0.260712,1.0,0.497006,0.253979,1.0,0.470910,0.354668,1.0,0.450960,0.439198,1.0,0.455586,0.438218,1.0,0.449639,0.437811,1.0,0.452612,0.445131,1.0,0.443004,0.459367,1.0,0.443461,0.458959,1.0,0.459476,0.458553,1.0,0.443461,0.469533,1.0,0.452155,0.467906,1.0,0.459247,0.457740,1.0,0.444834,0.474414,1.0,0.452384,0.476855,1.0,0.459476,0.459773,1.0,0.450554,0.481328,1.0,0.452612,0.480921,1.0,0.457874,0.472787,1.0,0.542104,0.268906,1.0,0.556635,0.270367,1.0,0.550609,0.381956,1.0,0.582797,0.297505,1.0,0.582193,0.287931,1.0,0.585932,0.277120,1.0,0.590375,0.272962,1.0,0.590141,0.270883,1.0,0.594589,0.260905,1.0,0.600901,0.257162,1.0,0.593651,0.277536,1.0,0.599500,0.266309,1.0,0.604875,0.261320,1.0,0.596224,0.284189,1.0,0.601839,0.275042,1.0,0.606281,0.270883,1.0,0.598094,0.291257,1.0,0.602302,0.286268,1.0,0.605578,0.281694,1.0,0.483129,0.452820,1.0,0.483129,0.452820,1.0,0.440204,0.627232,1.0,0.385041,0.643705,1.0,0.385041,0.643705,1.0,0.529104,0.469211,1.0,0.529104,0.469211,1.0,0.541370,0.649079,1.0,0.556641,0.818073,1.0,0.556641,0.818073,1.0
|
||||
0.506117,0.461016,1.0,0.522209,0.315837,1.0,0.516845,0.364230,1.0,0.527573,0.267444,1.0,0.542937,0.169480,1.0,0.556719,0.155837,1.0,0.556719,0.155837,1.0,0.541411,0.158569,1.0,0.541411,0.158569,1.0,0.512290,0.260712,1.0,0.497006,0.253979,1.0,0.470910,0.354668,1.0,0.450960,0.439198,1.0,0.455586,0.438218,1.0,0.449639,0.437811,1.0,0.452612,0.445131,1.0,0.443004,0.459367,1.0,0.443461,0.458959,1.0,0.459476,0.458553,1.0,0.443461,0.469533,1.0,0.452155,0.467906,1.0,0.459247,0.457740,1.0,0.444834,0.474414,1.0,0.452384,0.476855,1.0,0.459476,0.459773,1.0,0.450554,0.481328,1.0,0.452612,0.480921,1.0,0.457874,0.472787,1.0,0.542104,0.268906,1.0,0.556635,0.270367,1.0,0.550609,0.381956,1.0,0.582797,0.297505,1.0,0.582193,0.287931,1.0,0.585932,0.277120,1.0,0.590375,0.272962,1.0,0.590141,0.270883,1.0,0.594589,0.260905,1.0,0.600901,0.257162,1.0,0.593651,0.277536,1.0,0.599500,0.266309,1.0,0.604875,0.261320,1.0,0.596224,0.284189,1.0,0.601839,0.275042,1.0,0.606281,0.270883,1.0,0.598094,0.291257,1.0,0.602302,0.286268,1.0,0.605578,0.281694,1.0,0.483129,0.452820,1.0,0.483129,0.452820,1.0,0.440204,0.627232,1.0,0.385041,0.643705,1.0,0.385041,0.643705,1.0,0.529104,0.469211,1.0,0.529104,0.469211,1.0,0.541370,0.649079,1.0,0.556641,0.818073,1.0,0.556641,0.818073,1.0
|
||||
0.500789,0.443301,1.0,0.516287,0.301306,1.0,0.511121,0.348637,1.0,0.521453,0.253974,1.0,0.542161,0.172134,1.0,0.556682,0.158522,1.0,0.556682,0.158522,1.0,0.541370,0.161094,1.0,0.541370,0.161094,1.0,0.507644,0.252600,1.0,0.493834,0.251227,1.0,0.460208,0.338379,1.0,0.458594,0.425543,1.0,0.462205,0.427555,1.0,0.462641,0.430656,1.0,0.460678,0.440349,1.0,0.462423,0.440349,1.0,0.460896,0.455469,1.0,0.459152,0.467876,1.0,0.458933,0.439961,1.0,0.457407,0.455469,1.0,0.456753,0.468651,1.0,0.456317,0.439961,1.0,0.455226,0.454306,1.0,0.453699,0.467100,1.0,0.452609,0.439574,1.0,0.452391,0.451593,1.0,0.451519,0.460509,1.0,0.536776,0.256674,1.0,0.552099,0.259374,1.0,0.559781,0.379136,1.0,0.587396,0.292190,1.0,0.587307,0.275879,1.0,0.593026,0.260844,1.0,0.597750,0.253327,1.0,0.597505,0.256865,1.0,0.602229,0.248020,1.0,0.606953,0.244041,1.0,0.599990,0.263940,1.0,0.605214,0.253327,1.0,0.608198,0.247579,1.0,0.601979,0.271456,1.0,0.607453,0.261729,1.0,0.609937,0.256865,1.0,0.603724,0.278974,1.0,0.608448,0.271899,1.0,0.610438,0.267919,1.0,0.480089,0.436480,1.0,0.480089,0.436480,1.0,0.458632,0.621788,1.0,0.412676,0.618958,1.0,0.412676,0.618958,1.0,0.521490,0.450122,1.0,0.521490,0.450122,1.0,0.532260,0.643710,1.0,0.521411,0.804445,1.0,0.521411,0.804445,1.0
|
||||
0.496900,0.446003,1.0,0.514137,0.306046,1.0,0.508391,0.352698,1.0,0.519882,0.259394,1.0,0.539821,0.180333,1.0,0.553667,0.164056,1.0,0.553667,0.164056,1.0,0.535297,0.163994,1.0,0.535297,0.163994,1.0,0.502308,0.256633,1.0,0.484734,0.253873,1.0,0.457085,0.338278,1.0,0.458533,0.422931,1.0,0.462236,0.423994,1.0,0.463848,0.423277,1.0,0.454778,0.440476,1.0,0.458608,0.442984,1.0,0.456995,0.468067,1.0,0.453166,0.474875,1.0,0.454173,0.440834,1.0,0.454980,0.460542,1.0,0.451957,0.461258,1.0,0.458003,0.446926,1.0,0.456189,0.462333,1.0,0.454375,0.469142,1.0,0.458003,0.446568,1.0,0.457398,0.464483,1.0,0.457197,0.471650,1.0,0.534472,0.263466,1.0,0.549062,0.267539,1.0,0.568901,0.373836,1.0,0.588917,0.289247,1.0,0.586281,0.271194,1.0,0.589745,0.255992,1.0,0.594370,0.246131,1.0,0.598297,0.253937,1.0,0.605229,0.247775,1.0,0.609391,0.242844,1.0,0.601073,0.260511,1.0,0.607313,0.252705,1.0,0.610313,0.246542,1.0,0.603615,0.267495,1.0,0.610313,0.260100,1.0,0.610313,0.254348,1.0,0.604307,0.274480,1.0,0.610313,0.267495,1.0,0.611240,0.262155,1.0,0.473925,0.441894,1.0,0.473925,0.441894,1.0,0.483049,0.610914,1.0,0.440196,0.583732,1.0,0.440196,0.583732,1.0,0.519876,0.450112,1.0,0.519876,0.450112,1.0,0.523026,0.649103,1.0,0.495383,0.790784,1.0,0.495383,0.790784,1.0
|
||||
0.494629,0.458325,1.0,0.512467,0.317258,1.0,0.506521,0.364281,1.0,0.518413,0.270236,1.0,0.536761,0.185861,1.0,0.546052,0.180288,1.0,0.546052,0.180288,1.0,0.532188,0.177649,1.0,0.532188,0.177649,1.0,0.501523,0.267497,1.0,0.484634,0.264757,1.0,0.452481,0.338285,1.0,0.452471,0.422774,1.0,0.453630,0.441013,1.0,0.452855,0.454444,1.0,0.453048,0.462709,1.0,0.453242,0.459265,1.0,0.454598,0.471319,1.0,0.454598,0.479240,1.0,0.452661,0.459954,1.0,0.452661,0.472696,1.0,0.452468,0.481994,1.0,0.450918,0.458920,1.0,0.450530,0.470974,1.0,0.450143,0.479584,1.0,0.449949,0.457544,1.0,0.449562,0.465808,1.0,0.448981,0.471319,1.0,0.533751,0.272948,1.0,0.549089,0.275660,1.0,0.567432,0.376552,1.0,0.584349,0.289265,1.0,0.584464,0.267850,1.0,0.588620,0.251514,1.0,0.592339,0.242178,1.0,0.599344,0.249957,1.0,0.606562,0.249180,1.0,0.610937,0.246456,1.0,0.601313,0.258515,1.0,0.608094,0.255014,1.0,0.605031,0.255793,1.0,0.602406,0.265517,1.0,0.608094,0.261627,1.0,0.607000,0.260460,1.0,0.602406,0.272907,1.0,0.607656,0.267461,1.0,0.607219,0.265128,1.0,0.473936,0.450114,1.0,0.473936,0.450114,1.0,0.506106,0.578244,1.0,0.457049,0.564604,1.0,0.457049,0.564604,1.0,0.515321,0.466536,1.0,0.515321,0.466536,1.0,0.509281,0.659920,1.0,0.484643,0.809803,1.0,0.484643,0.809803,1.0
|
||||
0.491559,0.461002,1.0,0.510510,0.319973,1.0,0.504193,0.366983,1.0,0.516827,0.272964,1.0,0.529159,0.187225,1.0,0.544401,0.177564,1.0,0.544401,0.177564,1.0,0.527599,0.177566,1.0,0.527599,0.177566,1.0,0.499215,0.270254,1.0,0.481604,0.267544,1.0,0.454007,0.338408,1.0,0.449436,0.425521,1.0,0.451539,0.438934,1.0,0.450937,0.457835,1.0,0.450135,0.454269,1.0,0.452542,0.460688,1.0,0.453344,0.473883,1.0,0.448530,0.486008,1.0,0.450135,0.458905,1.0,0.451138,0.475309,1.0,0.448730,0.484582,1.0,0.449332,0.459975,1.0,0.450335,0.473169,1.0,0.450135,0.486008,1.0,0.447527,0.458905,1.0,0.445922,0.469247,1.0,0.454748,0.483156,1.0,0.532942,0.277080,1.0,0.549057,0.281196,1.0,0.559812,0.379260,1.0,0.582854,0.289330,1.0,0.583661,0.266501,1.0,0.589099,0.249985,1.0,0.592271,0.241930,1.0,0.597938,0.249582,1.0,0.600203,0.244346,1.0,0.600427,0.242332,1.0,0.600656,0.257236,1.0,0.602922,0.249985,1.0,0.602240,0.246360,1.0,0.601786,0.264486,1.0,0.605641,0.255222,1.0,0.603828,0.254417,1.0,0.601562,0.273751,1.0,0.607224,0.267709,1.0,0.605641,0.264889,1.0,0.472354,0.452811,1.0,0.472354,0.452811,1.0,0.518405,0.542756,1.0,0.460173,0.578252,1.0,0.460173,0.578252,1.0,0.510765,0.469194,1.0,0.510765,0.469194,1.0,0.498500,0.662660,1.0,0.483127,0.812565,1.0,0.483127,0.812565,1.0
|
||||
0.490827,0.447375,1.0,0.506899,0.314426,1.0,0.501541,0.358742,1.0,0.512256,0.270109,1.0,0.526767,0.177625,1.0,0.536802,0.161365,1.0,0.536802,0.161365,1.0,0.521443,0.161338,1.0,0.521443,0.161338,1.0,0.494629,0.263408,1.0,0.477002,0.256707,1.0,0.457081,0.341086,1.0,0.452463,0.425702,1.0,0.454057,0.427982,1.0,0.456786,0.425211,1.0,0.457176,0.460903,1.0,0.454642,0.439419,1.0,0.456201,0.454665,1.0,0.457371,0.463675,1.0,0.450939,0.441151,1.0,0.453278,0.457784,1.0,0.454837,0.468526,1.0,0.448404,0.443576,1.0,0.452498,0.458131,1.0,0.454447,0.467833,1.0,0.446845,0.444269,1.0,0.453278,0.456051,1.0,0.456006,0.465754,1.0,0.529899,0.271526,1.0,0.547542,0.272943,1.0,0.558177,0.371131,1.0,0.582776,0.289379,1.0,0.583458,0.269203,1.0,0.589833,0.254465,1.0,0.595359,0.247284,1.0,0.600036,0.254843,1.0,0.600464,0.247662,1.0,0.600464,0.246528,1.0,0.601948,0.261267,1.0,0.603651,0.254465,1.0,0.603016,0.251819,1.0,0.602589,0.269581,1.0,0.607052,0.261267,1.0,0.604714,0.258244,1.0,0.601740,0.277517,1.0,0.607479,0.272605,1.0,0.605776,0.268447,1.0,0.472374,0.444564,1.0,0.472374,0.444564,1.0,0.522995,0.531873,1.0,0.470797,0.619069,1.0,0.470797,0.619069,1.0,0.509279,0.450186,1.0,0.509279,0.450186,1.0,0.495417,0.643581,1.0,0.483155,0.809868,1.0,0.483155,0.809868,1.0
|
||||
0.490827,0.447375,1.0,0.506899,0.314426,1.0,0.501541,0.358742,1.0,0.512256,0.270109,1.0,0.526767,0.177625,1.0,0.536802,0.161365,1.0,0.536802,0.161365,1.0,0.521443,0.161338,1.0,0.521443,0.161338,1.0,0.494629,0.263408,1.0,0.477002,0.256707,1.0,0.457081,0.341086,1.0,0.452463,0.425702,1.0,0.454057,0.427982,1.0,0.456786,0.425211,1.0,0.457176,0.460903,1.0,0.454642,0.439419,1.0,0.456201,0.454665,1.0,0.457371,0.463675,1.0,0.450939,0.441151,1.0,0.453278,0.457784,1.0,0.454837,0.468526,1.0,0.448404,0.443576,1.0,0.452498,0.458131,1.0,0.454447,0.467833,1.0,0.446845,0.444269,1.0,0.453278,0.456051,1.0,0.456006,0.465754,1.0,0.529899,0.271526,1.0,0.547542,0.272943,1.0,0.558177,0.371131,1.0,0.582776,0.289379,1.0,0.583458,0.269203,1.0,0.589833,0.254465,1.0,0.595359,0.247284,1.0,0.600036,0.254843,1.0,0.600464,0.247662,1.0,0.600464,0.246528,1.0,0.601948,0.261267,1.0,0.603651,0.254465,1.0,0.603016,0.251819,1.0,0.602589,0.269581,1.0,0.607052,0.261267,1.0,0.604714,0.258244,1.0,0.601740,0.277517,1.0,0.607479,0.272605,1.0,0.605776,0.268447,1.0,0.472374,0.444564,1.0,0.472374,0.444564,1.0,0.522995,0.531873,1.0,0.470797,0.619069,1.0,0.470797,0.619069,1.0,0.509279,0.450186,1.0,0.509279,0.450186,1.0,0.495417,0.643581,1.0,0.483155,0.809868,1.0,0.483155,0.809868,1.0
|
||||
0.490041,0.441978,1.0,0.504432,0.303010,1.0,0.499635,0.349332,1.0,0.509230,0.256687,1.0,0.523002,0.170796,1.0,0.533688,0.155845,1.0,0.533688,0.155845,1.0,0.518373,0.155804,1.0,0.518373,0.155804,1.0,0.491592,0.253937,1.0,0.473954,0.251187,1.0,0.458529,0.338369,1.0,0.449433,0.425497,1.0,0.448259,0.430049,1.0,0.447853,0.475561,1.0,0.449885,0.473032,1.0,0.455168,0.435106,1.0,0.449072,0.472671,1.0,0.447650,0.479534,1.0,0.455168,0.452805,1.0,0.455371,0.454972,1.0,0.449072,0.481340,1.0,0.455371,0.453888,1.0,0.456590,0.460751,1.0,0.454558,0.470143,1.0,0.448666,0.435467,1.0,0.458621,0.461835,1.0,0.458215,0.462196,1.0,0.527599,0.263404,1.0,0.545969,0.270121,1.0,0.553651,0.365643,1.0,0.582724,0.289363,1.0,0.583234,0.269073,1.0,0.589359,0.256304,1.0,0.594854,0.247666,1.0,0.600135,0.256680,1.0,0.603307,0.255553,1.0,0.603307,0.255929,1.0,0.601828,0.265318,1.0,0.605839,0.262689,1.0,0.604359,0.260811,1.0,0.602458,0.272454,1.0,0.608375,0.266820,1.0,0.613443,0.265694,1.0,0.601615,0.280717,1.0,0.606687,0.277336,1.0,0.605839,0.274707,1.0,0.470918,0.439200,1.0,0.470918,0.439200,1.0,0.522979,0.537394,1.0,0.478562,0.679019,1.0,0.478562,0.679019,1.0,0.509164,0.444756,1.0,0.509164,0.444756,1.0,0.496960,0.578242,1.0,0.483082,0.708957,1.0,0.483082,0.708957,1.0
|
||||
0.489270,0.443300,1.0,0.503085,0.305311,1.0,0.498480,0.351307,1.0,0.507690,0.259315,1.0,0.515343,0.168079,1.0,0.527609,0.150301,1.0,0.527609,0.150301,1.0,0.509227,0.147597,1.0,0.509227,0.147597,1.0,0.490054,0.255248,1.0,0.472418,0.251181,1.0,0.457058,0.338362,1.0,0.447858,0.425592,1.0,0.452352,0.435205,1.0,0.457031,0.474274,1.0,0.455404,0.473912,1.0,0.450520,0.437737,1.0,0.448892,0.476806,1.0,0.448282,0.483318,1.0,0.454183,0.441717,1.0,0.449909,0.476444,1.0,0.449706,0.485127,1.0,0.452148,0.440631,1.0,0.451130,0.477530,1.0,0.448078,0.483680,1.0,0.449096,0.440269,1.0,0.445840,0.481871,1.0,0.447061,0.484765,1.0,0.526035,0.264756,1.0,0.544380,0.270196,1.0,0.546078,0.365712,1.0,0.581198,0.292067,1.0,0.581495,0.272486,1.0,0.587031,0.257139,1.0,0.592120,0.249661,1.0,0.596328,0.256745,1.0,0.598542,0.255958,1.0,0.597875,0.255565,1.0,0.599203,0.266190,1.0,0.602745,0.263435,1.0,0.602526,0.262255,1.0,0.600531,0.274847,1.0,0.606729,0.269338,1.0,0.611599,0.269338,1.0,0.600531,0.282719,1.0,0.604516,0.279569,1.0,0.612927,0.271306,1.0,0.470841,0.441915,1.0,0.470841,0.441915,1.0,0.519949,0.575463,1.0,0.496921,0.733631,1.0,0.496921,0.733631,1.0,0.507698,0.444684,1.0,0.507698,0.444684,1.0,0.490795,0.613592,1.0,0.469371,0.782628,1.0,0.469371,0.782628,1.0
|
||||
0.490010,0.448732,1.0,0.502123,0.312841,1.0,0.498085,0.358138,1.0,0.506160,0.267544,1.0,0.511484,0.173528,1.0,0.521401,0.158456,1.0,0.521401,0.158456,1.0,0.506092,0.155773,1.0,0.506092,0.155773,1.0,0.488531,0.262114,1.0,0.470901,0.256683,1.0,0.449464,0.349239,1.0,0.446338,0.441853,1.0,0.442753,0.438001,1.0,0.454666,0.450103,1.0,0.454666,0.450481,1.0,0.454453,0.452372,1.0,0.456155,0.490947,1.0,0.454666,0.491325,1.0,0.455942,0.491325,1.0,0.437435,0.444431,1.0,0.434244,0.449346,1.0,0.455517,0.491325,1.0,0.436796,0.446321,1.0,0.435520,0.461827,1.0,0.455729,0.490947,1.0,0.436584,0.474685,1.0,0.437435,0.475063,1.0,0.522255,0.270207,1.0,0.538349,0.272870,1.0,0.544521,0.368394,1.0,0.579714,0.294828,1.0,0.583135,0.272126,1.0,0.588672,0.258742,1.0,0.592214,0.253231,1.0,0.597526,0.263072,1.0,0.601516,0.265040,1.0,0.598854,0.261104,1.0,0.599297,0.272126,1.0,0.606161,0.274094,1.0,0.611922,0.276456,1.0,0.599964,0.281180,1.0,0.606604,0.277636,1.0,0.611698,0.277243,1.0,0.599521,0.289445,1.0,0.602844,0.285903,1.0,0.601734,0.284329,1.0,0.470884,0.447361,1.0,0.470884,0.447361,1.0,0.507621,0.610924,1.0,0.509267,0.796239,1.0,0.509267,0.796239,1.0,0.509136,0.450104,1.0,0.509136,0.450104,1.0,0.489296,0.621764,1.0,0.458647,0.774466,1.0,0.458647,0.774466,1.0
|
||||
0.490868,0.467778,1.0,0.501142,0.323751,1.0,0.497717,0.371760,1.0,0.504567,0.275743,1.0,0.504655,0.185817,1.0,0.512287,0.169490,1.0,0.512287,0.169490,1.0,0.496927,0.169436,1.0,0.496927,0.169436,1.0,0.487708,0.274398,1.0,0.470850,0.273054,1.0,0.446419,0.362925,1.0,0.435654,0.450197,1.0,0.446108,0.475702,1.0,0.437869,0.465449,1.0,0.441989,0.474969,1.0,0.439105,0.458125,1.0,0.439105,0.499136,1.0,0.439311,0.500601,1.0,0.433544,0.459956,1.0,0.437045,0.497672,1.0,0.436427,0.498038,1.0,0.433132,0.459956,1.0,0.434368,0.459956,1.0,0.436221,0.498770,1.0,0.434985,0.459590,1.0,0.431278,0.460688,1.0,0.431690,0.499503,1.0,0.519906,0.277111,1.0,0.535245,0.278480,1.0,0.545984,0.376448,1.0,0.581182,0.294899,1.0,0.582667,0.276786,1.0,0.588323,0.262541,1.0,0.591620,0.257932,1.0,0.596573,0.266731,1.0,0.601286,0.267987,1.0,0.597750,0.262541,1.0,0.597281,0.274692,1.0,0.602464,0.274692,1.0,0.597281,0.265893,1.0,0.597516,0.283071,1.0,0.601286,0.276368,1.0,0.597281,0.270082,1.0,0.597281,0.291451,1.0,0.600109,0.289356,1.0,0.598693,0.282652,1.0,0.472455,0.466396,1.0,0.472455,0.466396,1.0,0.493884,0.643596,1.0,0.519870,0.823525,1.0,0.519870,0.823525,1.0,0.509281,0.469160,1.0,0.509281,0.469160,1.0,0.484702,0.638166,1.0,0.458621,0.779885,1.0,0.458621,0.779885,1.0
|
||||
0.490830,0.486862,1.0,0.498871,0.342742,1.0,0.496191,0.390782,1.0,0.501551,0.294702,1.0,0.502302,0.203572,1.0,0.507720,0.185866,1.0,0.507720,0.185866,1.0,0.493860,0.185780,1.0,0.493860,0.185780,1.0,0.486189,0.294716,1.0,0.470828,0.294730,1.0,0.443258,0.382144,1.0,0.429461,0.469303,1.0,0.431759,0.493267,1.0,0.427815,0.516887,1.0,0.424079,0.502494,1.0,0.430929,0.516887,1.0,0.435496,0.501018,1.0,0.425532,0.502124,1.0,0.430514,0.516887,1.0,0.425324,0.503231,1.0,0.426985,0.502862,1.0,0.431552,0.516887,1.0,0.427192,0.513934,1.0,0.427400,0.513934,1.0,0.426155,0.516518,1.0,0.423041,0.515042,1.0,0.421795,0.513565,1.0,0.517656,0.293441,1.0,0.533760,0.292181,1.0,0.549047,0.379309,1.0,0.581177,0.294897,1.0,0.582667,0.286567,1.0,0.598323,0.286567,1.0,0.587573,0.258317,1.0,0.598557,0.278258,1.0,0.598557,0.264964,1.0,0.594583,0.258317,1.0,0.597854,0.281166,1.0,0.599724,0.267456,1.0,0.592714,0.258317,1.0,0.596922,0.278258,1.0,0.599255,0.267872,1.0,0.593651,0.260809,1.0,0.596922,0.279089,1.0,0.597620,0.268703,1.0,0.594818,0.264548,1.0,0.472410,0.485481,1.0,0.472410,0.485481,1.0,0.493853,0.659972,1.0,0.521401,0.837014,1.0,0.521401,0.837014,1.0,0.509251,0.488243,1.0,0.509251,0.488243,1.0,0.483179,0.643643,1.0,0.458525,0.788042,1.0,0.458525,0.788042,1.0
|
||||
0.490830,0.486862,1.0,0.498871,0.342742,1.0,0.496191,0.390782,1.0,0.501551,0.294702,1.0,0.502302,0.203572,1.0,0.507720,0.185866,1.0,0.507720,0.185866,1.0,0.493860,0.185780,1.0,0.493860,0.185780,1.0,0.486189,0.294716,1.0,0.470828,0.294730,1.0,0.443258,0.382144,1.0,0.429461,0.469303,1.0,0.431759,0.493267,1.0,0.427815,0.516887,1.0,0.424079,0.502494,1.0,0.430929,0.516887,1.0,0.435496,0.501018,1.0,0.425532,0.502124,1.0,0.430514,0.516887,1.0,0.425324,0.503231,1.0,0.426985,0.502862,1.0,0.431552,0.516887,1.0,0.427192,0.513934,1.0,0.427400,0.513934,1.0,0.426155,0.516518,1.0,0.423041,0.515042,1.0,0.421795,0.513565,1.0,0.517656,0.293441,1.0,0.533760,0.292181,1.0,0.549047,0.379309,1.0,0.581177,0.294897,1.0,0.582667,0.286567,1.0,0.598323,0.286567,1.0,0.587573,0.258317,1.0,0.598557,0.278258,1.0,0.598557,0.264964,1.0,0.594583,0.258317,1.0,0.597854,0.281166,1.0,0.599724,0.267456,1.0,0.592714,0.258317,1.0,0.596922,0.278258,1.0,0.599255,0.267872,1.0,0.593651,0.260809,1.0,0.596922,0.279089,1.0,0.597620,0.268703,1.0,0.594818,0.264548,1.0,0.472410,0.485481,1.0,0.472410,0.485481,1.0,0.493853,0.659972,1.0,0.521401,0.837014,1.0,0.521401,0.837014,1.0,0.509251,0.488243,1.0,0.509251,0.488243,1.0,0.483179,0.643643,1.0,0.458525,0.788042,1.0,0.458525,0.788042,1.0
|
||||
0.489296,0.478745,1.0,0.499621,0.340684,1.0,0.496179,0.386704,1.0,0.503063,0.294664,1.0,0.501471,0.204784,1.0,0.504618,0.185905,1.0,0.504618,0.185905,1.0,0.487742,0.185897,1.0,0.487742,0.185897,1.0,0.486980,0.294693,1.0,0.470898,0.294722,1.0,0.443268,0.398238,1.0,0.423290,0.477344,1.0,0.421189,0.502187,1.0,0.419770,0.530769,1.0,0.421189,0.500085,1.0,0.423080,0.501346,1.0,0.414569,0.495881,1.0,0.416933,0.488736,1.0,0.413150,0.512275,1.0,0.412204,0.513116,1.0,0.415042,0.515637,1.0,0.413859,0.514796,1.0,0.415278,0.524884,1.0,0.414096,0.517739,1.0,0.420716,0.521943,1.0,0.417642,0.527827,1.0,0.408894,0.530349,1.0,0.518412,0.293369,1.0,0.533760,0.292075,1.0,0.550578,0.379145,1.0,0.579703,0.294680,1.0,0.580458,0.278920,1.0,0.583641,0.262364,1.0,0.585000,0.252671,1.0,0.598630,0.268825,1.0,0.597042,0.257921,1.0,0.591589,0.253075,1.0,0.596130,0.278920,1.0,0.597724,0.265191,1.0,0.590906,0.259537,1.0,0.592500,0.285786,1.0,0.597042,0.278113,1.0,0.592042,0.258729,1.0,0.586365,0.291036,1.0,0.590453,0.289017,1.0,0.590682,0.291036,1.0,0.470915,0.474682,1.0,0.470915,0.474682,1.0,0.495398,0.646321,1.0,0.518414,0.826241,1.0,0.518414,0.826241,1.0,0.507676,0.482807,1.0,0.507676,0.482807,1.0,0.484641,0.643627,1.0,0.458547,0.785377,1.0,0.458547,0.785377,1.0
|
||||
0.487693,0.467805,1.0,0.500365,0.327840,1.0,0.496141,0.374495,1.0,0.504589,0.281185,1.0,0.500715,0.189844,1.0,0.503073,0.180317,1.0,0.503073,0.180317,1.0,0.486210,0.180246,1.0,0.486210,0.180246,1.0,0.487743,0.282529,1.0,0.470897,0.283872,1.0,0.438698,0.384707,1.0,0.421767,0.480108,1.0,0.422640,0.494576,1.0,0.423119,0.514569,1.0,0.418094,0.526053,1.0,0.417137,0.523501,1.0,0.413069,0.538814,1.0,0.412830,0.540515,1.0,0.411873,0.519672,1.0,0.407806,0.530307,1.0,0.409480,0.524352,1.0,0.409002,0.513292,1.0,0.406609,0.519672,1.0,0.407566,0.519247,1.0,0.406609,0.506486,1.0,0.403499,0.514143,1.0,0.405173,0.514569,1.0,0.519190,0.279793,1.0,0.533792,0.278401,1.0,0.550615,0.365644,1.0,0.579734,0.289357,1.0,0.580885,0.273202,1.0,0.583422,0.256668,1.0,0.585328,0.245769,1.0,0.598432,0.264183,1.0,0.597161,0.250655,1.0,0.591667,0.247272,1.0,0.597375,0.270195,1.0,0.598010,0.257419,1.0,0.591458,0.252909,1.0,0.597375,0.270947,1.0,0.598432,0.258170,1.0,0.593995,0.255540,1.0,0.597375,0.271699,1.0,0.599068,0.274330,1.0,0.596740,0.265310,1.0,0.469295,0.466470,1.0,0.469295,0.466470,1.0,0.496941,0.638102,1.0,0.509124,0.815209,1.0,0.509124,0.815209,1.0,0.506091,0.469140,1.0,0.506091,0.469140,1.0,0.498462,0.640964,1.0,0.461688,0.774411,1.0,0.461688,0.774411,1.0
|
||||
0.484674,0.455580,1.0,0.497341,0.316571,1.0,0.493119,0.362908,1.0,0.501564,0.270235,1.0,0.500732,0.184328,1.0,0.503067,0.166779,1.0,0.503067,0.166779,1.0,0.486193,0.166664,1.0,0.486193,0.166664,1.0,0.486972,0.270236,1.0,0.472381,0.270237,1.0,0.435608,0.368419,1.0,0.415710,0.466575,1.0,0.419123,0.483821,1.0,0.421314,0.503294,1.0,0.414012,0.524065,1.0,0.415229,0.516276,1.0,0.407197,0.532719,1.0,0.406954,0.538344,1.0,0.409874,0.514112,1.0,0.401355,0.528392,1.0,0.397704,0.530988,1.0,0.406710,0.508487,1.0,0.398434,0.521469,1.0,0.395757,0.525363,1.0,0.403303,0.501131,1.0,0.400381,0.514112,1.0,0.395027,0.518007,1.0,0.516889,0.270217,1.0,0.532214,0.270199,1.0,0.547516,0.357479,1.0,0.581177,0.275676,1.0,0.580896,0.261075,1.0,0.585313,0.247029,1.0,0.587401,0.238766,1.0,0.598792,0.265619,1.0,0.599255,0.245789,1.0,0.593911,0.240419,1.0,0.596000,0.271816,1.0,0.600182,0.253639,1.0,0.593443,0.245376,1.0,0.591120,0.275534,1.0,0.597396,0.261075,1.0,0.594141,0.247442,1.0,0.584380,0.276360,1.0,0.586010,0.275947,1.0,0.597396,0.260248,1.0,0.464764,0.450143,1.0,0.464764,0.450143,1.0,0.503094,0.621849,1.0,0.484731,0.809887,1.0,0.484731,0.809887,1.0,0.504584,0.461018,1.0,0.504584,0.461018,1.0,0.521510,0.635461,1.0,0.483127,0.755381,1.0,0.483127,0.755381,1.0
|
||||
0.480861,0.450124,1.0,0.494092,0.315166,1.0,0.489682,0.360152,1.0,0.498502,0.270181,1.0,0.499963,0.184375,1.0,0.503041,0.169394,1.0,0.503041,0.169394,1.0,0.484751,0.166735,1.0,0.484751,0.166735,1.0,0.485438,0.270185,1.0,0.472373,0.270189,1.0,0.434023,0.363030,1.0,0.409546,0.463669,1.0,0.410267,0.479896,1.0,0.406748,0.504924,1.0,0.420072,0.504030,1.0,0.402223,0.507158,1.0,0.402223,0.512521,1.0,0.402223,0.506711,1.0,0.395184,0.500007,1.0,0.392921,0.500455,1.0,0.398452,0.502243,1.0,0.394178,0.498220,1.0,0.394681,0.500902,1.0,0.398201,0.500455,1.0,0.391665,0.490176,1.0,0.401469,0.501795,1.0,0.402223,0.501348,1.0,0.514556,0.270176,1.0,0.530609,0.270172,1.0,0.547552,0.352022,1.0,0.578193,0.270224,1.0,0.579740,0.251643,1.0,0.583344,0.235219,1.0,0.585151,0.228810,1.0,0.598219,0.257251,1.0,0.598219,0.237622,1.0,0.592135,0.231614,1.0,0.597990,0.258052,1.0,0.598443,0.240827,1.0,0.592135,0.234018,1.0,0.597318,0.260456,1.0,0.598443,0.244432,1.0,0.593036,0.238824,1.0,0.596641,0.260055,1.0,0.596188,0.249640,1.0,0.594615,0.244833,1.0,0.463242,0.447379,1.0,0.463242,0.447379,1.0,0.501541,0.621760,1.0,0.472348,0.796284,1.0,0.472348,0.796284,1.0,0.498481,0.452869,1.0,0.498481,0.452869,1.0,0.542911,0.602730,1.0,0.496963,0.714453,1.0,0.496963,0.714453,1.0
|
||||
0.482375,0.465165,1.0,0.493352,0.320985,1.0,0.489693,0.369045,1.0,0.497010,0.272925,1.0,0.496188,0.187106,1.0,0.499983,0.177645,1.0,0.499983,0.177645,1.0,0.484691,0.177537,1.0,0.484691,0.177537,1.0,0.483970,0.272950,1.0,0.470929,0.272975,1.0,0.427948,0.365631,1.0,0.398838,0.455553,1.0,0.403853,0.474653,1.0,0.403853,0.473331,1.0,0.410297,0.490073,1.0,0.391462,0.500206,1.0,0.402862,0.472449,1.0,0.403853,0.472009,1.0,0.388736,0.497563,1.0,0.371388,0.484786,1.0,0.386010,0.485667,1.0,0.383036,0.487430,1.0,0.372132,0.485667,1.0,0.370645,0.484345,1.0,0.382293,0.490073,1.0,0.374114,0.472009,1.0,0.372627,0.501087,1.0,0.510781,0.271644,1.0,0.524552,0.270364,1.0,0.549047,0.346615,1.0,0.573573,0.264820,1.0,0.577203,0.249163,1.0,0.579328,0.231028,1.0,0.580818,0.221582,1.0,0.596333,0.251430,1.0,0.599094,0.234429,1.0,0.604620,0.232917,1.0,0.595057,0.251807,1.0,0.595484,0.234429,1.0,0.588042,0.226494,1.0,0.593568,0.252185,1.0,0.595057,0.235562,1.0,0.589531,0.230272,1.0,0.589958,0.251052,1.0,0.592932,0.239718,1.0,0.592719,0.234050,1.0,0.466269,0.463764,1.0,0.466269,0.463764,1.0,0.492338,0.640822,1.0,0.460212,0.818107,1.0,0.460212,0.818107,1.0,0.498481,0.466567,1.0,0.498481,0.466567,1.0,0.556724,0.572802,1.0,0.499986,0.676269,1.0,0.499986,0.676269,1.0
|
||||
0.482375,0.465165,1.0,0.493352,0.320985,1.0,0.489693,0.369045,1.0,0.497010,0.272925,1.0,0.496188,0.187106,1.0,0.499983,0.177645,1.0,0.499983,0.177645,1.0,0.484691,0.177537,1.0,0.484691,0.177537,1.0,0.483970,0.272950,1.0,0.470929,0.272975,1.0,0.427948,0.365631,1.0,0.398838,0.455553,1.0,0.403853,0.474653,1.0,0.403853,0.473331,1.0,0.410297,0.490073,1.0,0.391462,0.500206,1.0,0.402862,0.472449,1.0,0.403853,0.472009,1.0,0.388736,0.497563,1.0,0.371388,0.484786,1.0,0.386010,0.485667,1.0,0.383036,0.487430,1.0,0.372132,0.485667,1.0,0.370645,0.484345,1.0,0.382293,0.490073,1.0,0.374114,0.472009,1.0,0.372627,0.501087,1.0,0.510781,0.271644,1.0,0.524552,0.270364,1.0,0.549047,0.346615,1.0,0.573573,0.264820,1.0,0.577203,0.249163,1.0,0.579328,0.231028,1.0,0.580818,0.221582,1.0,0.596333,0.251430,1.0,0.599094,0.234429,1.0,0.604620,0.232917,1.0,0.595057,0.251807,1.0,0.595484,0.234429,1.0,0.588042,0.226494,1.0,0.593568,0.252185,1.0,0.595057,0.235562,1.0,0.589531,0.230272,1.0,0.589958,0.251052,1.0,0.592932,0.239718,1.0,0.592719,0.234050,1.0,0.466269,0.463764,1.0,0.466269,0.463764,1.0,0.492338,0.640822,1.0,0.460212,0.818107,1.0,0.460212,0.818107,1.0,0.498481,0.466567,1.0,0.498481,0.466567,1.0,0.556724,0.572802,1.0,0.499986,0.676269,1.0,0.499986,0.676269,1.0
|
||||
0.482376,0.466487,1.0,0.494423,0.321437,1.0,0.490407,0.369787,1.0,0.498439,0.273087,1.0,0.493866,0.188534,1.0,0.496978,0.180354,1.0,0.496978,0.180354,1.0,0.483187,0.180374,1.0,0.483187,0.180374,1.0,0.485407,0.273042,1.0,0.472375,0.272997,1.0,0.424890,0.362996,1.0,0.395714,0.447515,1.0,0.393470,0.472237,1.0,0.388123,0.488081,1.0,0.382012,0.498493,1.0,0.383030,0.491702,1.0,0.373100,0.505282,1.0,0.369790,0.511167,1.0,0.378956,0.485818,1.0,0.370808,0.498944,1.0,0.359095,0.498944,1.0,0.376919,0.478575,1.0,0.370044,0.487176,1.0,0.359605,0.486270,1.0,0.374882,0.470427,1.0,0.366734,0.473595,1.0,0.360623,0.473595,1.0,0.512251,0.274382,1.0,0.526062,0.275678,1.0,0.550594,0.343850,1.0,0.575141,0.256592,1.0,0.577198,0.244498,1.0,0.578094,0.228194,1.0,0.578990,0.217457,1.0,0.584354,0.228990,1.0,0.593078,0.222627,1.0,0.586370,0.219048,1.0,0.589724,0.230581,1.0,0.593526,0.225808,1.0,0.586146,0.221434,1.0,0.589052,0.231773,1.0,0.594646,0.228990,1.0,0.588380,0.225410,1.0,0.592411,0.237341,1.0,0.593750,0.231376,1.0,0.591516,0.227001,1.0,0.464755,0.466404,1.0,0.464755,0.466404,1.0,0.483121,0.643742,1.0,0.460091,0.818156,1.0,0.460091,0.818156,1.0,0.499998,0.466569,1.0,0.499998,0.466569,1.0,0.565901,0.553745,1.0,0.495433,0.640922,1.0,0.495433,0.640922,1.0
|
||||
0.483123,0.461018,1.0,0.494611,0.315938,1.0,0.490782,0.364298,1.0,0.498440,0.267578,1.0,0.492390,0.181753,1.0,0.496936,0.172206,1.0,0.496936,0.172206,1.0,0.483132,0.172118,1.0,0.483132,0.172118,1.0,0.485403,0.268926,1.0,0.472367,0.270274,1.0,0.426420,0.360188,1.0,0.395717,0.441945,1.0,0.393857,0.462687,1.0,0.388342,0.487643,1.0,0.381825,0.494327,1.0,0.382327,0.480513,1.0,0.374054,0.497001,1.0,0.373302,0.498783,1.0,0.377814,0.473828,1.0,0.372049,0.485415,1.0,0.360267,0.485415,1.0,0.376310,0.467144,1.0,0.370044,0.474274,1.0,0.360518,0.472491,1.0,0.374305,0.459122,1.0,0.369542,0.471155,1.0,0.362273,0.460013,1.0,0.513020,0.266165,1.0,0.527599,0.264752,1.0,0.552109,0.341172,1.0,0.576625,0.256619,1.0,0.577078,0.242676,1.0,0.578385,0.227555,1.0,0.580349,0.216698,1.0,0.587328,0.227167,1.0,0.598234,0.225616,1.0,0.588203,0.217473,1.0,0.591693,0.231044,1.0,0.596271,0.226779,1.0,0.587984,0.218249,1.0,0.594526,0.241512,1.0,0.596052,0.227555,1.0,0.589729,0.224065,1.0,0.594089,0.244226,1.0,0.594307,0.230656,1.0,0.591906,0.226779,1.0,0.464739,0.458292,1.0,0.464739,0.458292,1.0,0.486240,0.640798,1.0,0.463203,0.815270,1.0,0.463203,0.815270,1.0,0.501508,0.463744,1.0,0.501508,0.463744,1.0,0.561312,0.559132,1.0,0.481620,0.621785,1.0,0.481620,0.621785,1.0
|
||||
0.480869,0.454245,1.0,0.494057,0.312191,1.0,0.489661,0.359542,1.0,0.498453,0.264840,1.0,0.492375,0.181655,1.0,0.496908,0.166774,1.0,0.496908,0.166774,1.0,0.483121,0.166724,1.0,0.483121,0.166724,1.0,0.484672,0.264845,1.0,0.470892,0.264851,1.0,0.429501,0.354666,1.0,0.398836,0.428317,1.0,0.399978,0.455604,1.0,0.397103,0.470937,1.0,0.376498,0.471363,1.0,0.388238,0.473493,1.0,0.380332,0.487123,1.0,0.366675,0.484994,1.0,0.384405,0.467530,1.0,0.372904,0.483716,1.0,0.365717,0.482012,1.0,0.382009,0.460715,1.0,0.372425,0.471363,1.0,0.364039,0.470511,1.0,0.380811,0.452195,1.0,0.372425,0.459011,1.0,0.365238,0.458159,1.0,0.514528,0.264788,1.0,0.530604,0.264735,1.0,0.550604,0.341117,1.0,0.579656,0.259320,1.0,0.579042,0.242580,1.0,0.581484,0.226413,1.0,0.584146,0.218921,1.0,0.592130,0.225230,1.0,0.597453,0.224442,1.0,0.592130,0.221287,1.0,0.596120,0.239426,1.0,0.599229,0.230751,1.0,0.592130,0.225624,1.0,0.597229,0.246129,1.0,0.599229,0.234694,1.0,0.594125,0.230751,1.0,0.595016,0.252044,1.0,0.599448,0.247312,1.0,0.597453,0.242974,1.0,0.461715,0.447512,1.0,0.461715,0.447512,1.0,0.495346,0.638120,1.0,0.472416,0.796356,1.0,0.472416,0.796356,1.0,0.500023,0.460978,1.0,0.500023,0.460978,1.0,0.550615,0.583653,1.0,0.470882,0.640841,1.0,0.470882,0.640841,1.0
|
||||
0.481627,0.451513,1.0,0.493151,0.313451,1.0,0.489310,0.359472,1.0,0.496993,0.267431,1.0,0.492385,0.180313,1.0,0.496895,0.166719,1.0,0.496895,0.166719,1.0,0.483116,0.166677,1.0,0.483116,0.166677,1.0,0.483152,0.267440,1.0,0.469312,0.267450,1.0,0.432506,0.349344,1.0,0.403424,0.425698,1.0,0.405076,0.448203,1.0,0.406806,0.467815,1.0,0.411781,0.470506,1.0,0.396207,0.471276,1.0,0.389718,0.482812,1.0,0.388420,0.485119,1.0,0.391881,0.465507,1.0,0.384094,0.475506,1.0,0.377389,0.473582,1.0,0.389502,0.460508,1.0,0.379335,0.470891,1.0,0.377172,0.471660,1.0,0.387555,0.455125,1.0,0.378470,0.458585,1.0,0.376523,0.459355,1.0,0.513819,0.266115,1.0,0.530646,0.264800,1.0,0.547552,0.343894,1.0,0.581203,0.270152,1.0,0.580771,0.252009,1.0,0.584693,0.233818,1.0,0.588172,0.226850,1.0,0.595141,0.241559,1.0,0.601891,0.236140,1.0,0.596448,0.231495,1.0,0.597755,0.250074,1.0,0.603417,0.241946,1.0,0.596448,0.235753,1.0,0.599714,0.257042,1.0,0.603417,0.247365,1.0,0.598188,0.241559,1.0,0.597318,0.262460,1.0,0.602760,0.258977,1.0,0.600365,0.253557,1.0,0.461725,0.447457,1.0,0.461725,0.447457,1.0,0.490793,0.638160,1.0,0.489296,0.809896,1.0,0.489296,0.809896,1.0,0.501530,0.455569,1.0,0.501530,0.455569,1.0,0.533677,0.618942,1.0,0.463227,0.673567,1.0,0.463227,0.673567,1.0
|
||||
0.486170,0.458290,1.0,0.495401,0.317276,1.0,0.492324,0.364281,1.0,0.498479,0.270271,1.0,0.494629,0.184406,1.0,0.496961,0.172181,1.0,0.496961,0.172181,1.0,0.483140,0.172137,1.0,0.483140,0.172137,1.0,0.483151,0.270268,1.0,0.467824,0.270264,1.0,0.434087,0.357405,1.0,0.409573,0.428367,1.0,0.409342,0.458769,1.0,0.405849,0.471576,1.0,0.400610,0.478949,1.0,0.401920,0.471964,1.0,0.394717,0.483218,1.0,0.393626,0.486711,1.0,0.398209,0.467307,1.0,0.388605,0.471964,1.0,0.383584,0.479725,1.0,0.395372,0.459545,1.0,0.386422,0.470023,1.0,0.382929,0.471576,1.0,0.393626,0.453725,1.0,0.387295,0.458381,1.0,0.383366,0.459545,1.0,0.515341,0.270291,1.0,0.532203,0.270311,1.0,0.545948,0.357364,1.0,0.579734,0.275806,1.0,0.582292,0.260040,1.0,0.588563,0.243938,1.0,0.592510,0.240222,1.0,0.596224,0.247241,1.0,0.606677,0.257563,1.0,0.612016,0.260453,1.0,0.597385,0.257976,1.0,0.605281,0.261279,1.0,0.600870,0.254673,1.0,0.597156,0.267058,1.0,0.603656,0.266233,1.0,0.601104,0.260866,1.0,0.597385,0.279857,1.0,0.602031,0.274078,1.0,0.600635,0.270774,1.0,0.466245,0.452859,1.0,0.466245,0.452859,1.0,0.486258,0.640889,1.0,0.507622,0.815302,1.0,0.507622,0.815302,1.0,0.506094,0.463721,1.0,0.506094,0.463721,1.0,0.515350,0.640894,1.0,0.458628,0.728132,1.0,0.458628,0.728132,1.0
|
||||
0.486170,0.458290,1.0,0.495401,0.317276,1.0,0.492324,0.364281,1.0,0.498479,0.270271,1.0,0.494629,0.184406,1.0,0.496961,0.172181,1.0,0.496961,0.172181,1.0,0.483140,0.172137,1.0,0.483140,0.172137,1.0,0.483151,0.270268,1.0,0.467824,0.270264,1.0,0.434087,0.357405,1.0,0.409573,0.428367,1.0,0.409342,0.458769,1.0,0.405849,0.471576,1.0,0.400610,0.478949,1.0,0.401920,0.471964,1.0,0.394717,0.483218,1.0,0.393626,0.486711,1.0,0.398209,0.467307,1.0,0.388605,0.471964,1.0,0.383584,0.479725,1.0,0.395372,0.459545,1.0,0.386422,0.470023,1.0,0.382929,0.471576,1.0,0.393626,0.453725,1.0,0.387295,0.458381,1.0,0.383366,0.459545,1.0,0.515341,0.270291,1.0,0.532203,0.270311,1.0,0.545948,0.357364,1.0,0.579734,0.275806,1.0,0.582292,0.260040,1.0,0.588563,0.243938,1.0,0.592510,0.240222,1.0,0.596224,0.247241,1.0,0.606677,0.257563,1.0,0.612016,0.260453,1.0,0.597385,0.257976,1.0,0.605281,0.261279,1.0,0.600870,0.254673,1.0,0.597156,0.267058,1.0,0.603656,0.266233,1.0,0.601104,0.260866,1.0,0.597385,0.279857,1.0,0.602031,0.274078,1.0,0.600635,0.270774,1.0,0.466245,0.452859,1.0,0.466245,0.452859,1.0,0.486258,0.640889,1.0,0.507622,0.815302,1.0,0.507622,0.815302,1.0,0.506094,0.463721,1.0,0.506094,0.463721,1.0,0.515350,0.640894,1.0,0.458628,0.728132,1.0,0.458628,0.728132,1.0
|
||||
0.486221,0.473329,1.0,0.495424,0.335343,1.0,0.492356,0.381338,1.0,0.498492,0.289348,1.0,0.496930,0.203461,1.0,0.499990,0.188530,1.0,0.499990,0.188530,1.0,0.484657,0.188504,1.0,0.484657,0.188504,1.0,0.483162,0.287984,1.0,0.467833,0.286619,1.0,0.437171,0.365682,1.0,0.412655,0.439182,1.0,0.413681,0.451107,1.0,0.416257,0.457801,1.0,0.416653,0.457096,1.0,0.415068,0.458858,1.0,0.414473,0.461677,1.0,0.414869,0.453574,1.0,0.406943,0.474006,1.0,0.410312,0.467666,1.0,0.409717,0.470131,1.0,0.403772,0.470484,1.0,0.403970,0.468370,1.0,0.409123,0.468370,1.0,0.401196,0.457096,1.0,0.405556,0.481405,1.0,0.405556,0.479292,1.0,0.516090,0.290635,1.0,0.533688,0.291922,1.0,0.544500,0.368372,1.0,0.575115,0.289316,1.0,0.577510,0.267922,1.0,0.583896,0.255012,1.0,0.589833,0.249535,1.0,0.595557,0.258533,1.0,0.602161,0.261663,1.0,0.608323,0.267531,1.0,0.596880,0.270660,1.0,0.602380,0.270660,1.0,0.598859,0.267531,1.0,0.597760,0.277703,1.0,0.602380,0.276920,1.0,0.598641,0.274964,1.0,0.597760,0.287092,1.0,0.601057,0.285527,1.0,0.598417,0.280832,1.0,0.466293,0.469255,1.0,0.466293,0.469255,1.0,0.487721,0.649087,1.0,0.510798,0.817982,1.0,0.510798,0.817982,1.0,0.506148,0.477403,1.0,0.506148,0.477403,1.0,0.498522,0.659886,1.0,0.450979,0.758127,1.0,0.450979,0.758127,1.0
|
||||
0.488456,0.495075,1.0,0.497120,0.357115,1.0,0.494232,0.403102,1.0,0.500008,0.311129,1.0,0.500721,0.225237,1.0,0.504571,0.210288,1.0,0.504571,0.210288,1.0,0.486180,0.210344,1.0,0.486180,0.210344,1.0,0.485406,0.309775,1.0,0.470804,0.308420,1.0,0.444795,0.381961,1.0,0.421789,0.433781,1.0,0.418319,0.441957,1.0,0.417423,0.443869,1.0,0.416347,0.452156,1.0,0.413659,0.466178,1.0,0.412583,0.444507,1.0,0.411328,0.445144,1.0,0.410253,0.464903,1.0,0.413300,0.449606,1.0,0.411328,0.445144,1.0,0.409894,0.466815,1.0,0.407922,0.469045,1.0,0.411149,0.467133,1.0,0.411149,0.469364,1.0,0.410073,0.473188,1.0,0.409536,0.474463,1.0,0.516866,0.311159,1.0,0.533724,0.311190,1.0,0.545990,0.379322,1.0,0.570609,0.291996,1.0,0.574026,0.266763,1.0,0.578281,0.252430,1.0,0.583656,0.245661,1.0,0.590599,0.252430,1.0,0.602917,0.256809,1.0,0.595974,0.251633,1.0,0.592391,0.261587,1.0,0.602245,0.260393,1.0,0.596422,0.257606,1.0,0.593286,0.269948,1.0,0.601125,0.267559,1.0,0.597318,0.263976,1.0,0.592839,0.277910,1.0,0.599557,0.277115,1.0,0.597094,0.273133,1.0,0.469326,0.490989,1.0,0.469326,0.490989,1.0,0.490809,0.662713,1.0,0.518389,0.839925,1.0,0.518389,0.839925,1.0,0.507586,0.499160,1.0,0.507586,0.499160,1.0,0.486230,0.662666,1.0,0.444807,0.774376,1.0,0.444807,0.774376,1.0
|
||||
0.489222,0.499219,1.0,0.501884,0.360264,1.0,0.497663,0.406582,1.0,0.506104,0.313945,1.0,0.502274,0.228062,1.0,0.507587,0.218516,1.0,0.507587,0.218516,1.0,0.489270,0.221239,1.0,0.489270,0.221239,1.0,0.488497,0.315211,1.0,0.470890,0.316476,1.0,0.446347,0.384834,1.0,0.424886,0.439212,1.0,0.422322,0.451207,1.0,0.415461,0.446744,1.0,0.415629,0.444068,1.0,0.414290,0.446150,1.0,0.414792,0.447340,1.0,0.415796,0.444959,1.0,0.414792,0.444959,1.0,0.414959,0.455968,1.0,0.414624,0.456265,1.0,0.414624,0.457455,1.0,0.414290,0.456859,1.0,0.414457,0.462809,1.0,0.413118,0.450909,1.0,0.411278,0.469355,1.0,0.411110,0.469355,1.0,0.522224,0.313896,1.0,0.538344,0.313847,1.0,0.555156,0.373791,1.0,0.576651,0.281169,1.0,0.575703,0.261630,1.0,0.580068,0.245703,1.0,0.586729,0.237943,1.0,0.590172,0.241619,1.0,0.594078,0.242027,1.0,0.600969,0.238351,1.0,0.592474,0.251419,1.0,0.599135,0.243252,1.0,0.600510,0.239576,1.0,0.594078,0.268981,1.0,0.599823,0.252237,1.0,0.599365,0.244885,1.0,0.593849,0.270206,1.0,0.601432,0.267347,1.0,0.601661,0.255095,1.0,0.470824,0.493799,1.0,0.470824,0.493799,1.0,0.496928,0.665496,1.0,0.518408,0.842581,1.0,0.518408,0.842581,1.0,0.507620,0.504640,1.0,0.507620,0.504640,1.0,0.486257,0.662657,1.0,0.443267,0.774491,1.0,0.443267,0.774491,1.0
|
||||
0.490808,0.493678,1.0,0.503396,0.354729,1.0,0.499200,0.401045,1.0,0.507592,0.308413,1.0,0.502284,0.218473,1.0,0.507703,0.204844,1.0,0.507703,0.204844,1.0,0.492362,0.207471,1.0,0.492362,0.207471,1.0,0.489244,0.309731,1.0,0.470896,0.311049,1.0,0.447906,0.382024,1.0,0.435566,0.425554,1.0,0.438422,0.439018,1.0,0.434029,0.438417,1.0,0.433521,0.437515,1.0,0.432845,0.436013,1.0,0.428451,0.438116,1.0,0.427268,0.439318,1.0,0.431831,0.439018,1.0,0.429634,0.441421,1.0,0.427268,0.444125,1.0,0.432169,0.440820,1.0,0.430479,0.442923,1.0,0.426761,0.447431,1.0,0.436564,0.438417,1.0,0.432845,0.440820,1.0,0.426761,0.452839,1.0,0.525252,0.304345,1.0,0.542911,0.300277,1.0,0.564396,0.357460,1.0,0.582766,0.275661,1.0,0.580750,0.265900,1.0,0.578932,0.266977,1.0,0.607604,0.236820,1.0,0.592661,0.238616,1.0,0.602557,0.222819,1.0,0.607406,0.215281,1.0,0.596094,0.242923,1.0,0.607203,0.230718,1.0,0.603161,0.235025,1.0,0.599328,0.249744,1.0,0.607807,0.231794,1.0,0.603568,0.237897,1.0,0.602557,0.255848,1.0,0.608818,0.243642,1.0,0.605182,0.237897,1.0,0.472379,0.490924,1.0,0.472379,0.490924,1.0,0.503094,0.649102,1.0,0.521391,0.831658,1.0,0.521391,0.831658,1.0,0.509237,0.496431,1.0,0.509237,0.496431,1.0,0.484682,0.651833,1.0,0.444805,0.774360,1.0,0.444805,0.774360,1.0
|
||||
0.500758,0.471931,1.0,0.507036,0.328833,1.0,0.504943,0.376533,1.0,0.509129,0.281134,1.0,0.503069,0.198036,1.0,0.509189,0.183177,1.0,0.509189,0.183177,1.0,0.495329,0.185696,1.0,0.495329,0.185696,1.0,0.490749,0.285185,1.0,0.472370,0.289236,1.0,0.457078,0.362969,1.0,0.447866,0.406581,1.0,0.445799,0.419819,1.0,0.447745,0.422125,1.0,0.446772,0.420683,1.0,0.447745,0.421837,1.0,0.446609,0.422702,1.0,0.446447,0.422990,1.0,0.445799,0.420107,1.0,0.444826,0.421837,1.0,0.445799,0.423279,1.0,0.445799,0.420683,1.0,0.444177,0.422125,1.0,0.445474,0.423567,1.0,0.444339,0.422413,1.0,0.445636,0.424144,1.0,0.444502,0.422702,1.0,0.527538,0.277096,1.0,0.545948,0.273057,1.0,0.570479,0.322043,1.0,0.593542,0.272941,1.0,0.600271,0.258562,1.0,0.618750,0.244744,1.0,0.618161,0.243961,1.0,0.588682,0.270034,1.0,0.589562,0.271338,1.0,0.592792,0.268209,1.0,0.606724,0.253608,1.0,0.604672,0.263777,1.0,0.597042,0.274467,1.0,0.606135,0.266124,1.0,0.605109,0.265863,1.0,0.597187,0.274728,1.0,0.606281,0.266645,1.0,0.605255,0.266384,1.0,0.619339,0.264038,1.0,0.481584,0.469208,1.0,0.481584,0.469208,1.0,0.507665,0.640778,1.0,0.521411,0.815396,1.0,0.521411,0.815396,1.0,0.519932,0.474654,1.0,0.519932,0.474654,1.0,0.484742,0.635452,1.0,0.449391,0.755360,1.0,0.449391,0.755360,1.0
|
||||
0.500758,0.471931,1.0,0.507036,0.328833,1.0,0.504943,0.376533,1.0,0.509129,0.281134,1.0,0.503069,0.198036,1.0,0.509189,0.183177,1.0,0.509189,0.183177,1.0,0.495329,0.185696,1.0,0.495329,0.185696,1.0,0.490749,0.285185,1.0,0.472370,0.289236,1.0,0.457078,0.362969,1.0,0.447866,0.406581,1.0,0.445799,0.419819,1.0,0.447745,0.422125,1.0,0.446772,0.420683,1.0,0.447745,0.421837,1.0,0.446609,0.422702,1.0,0.446447,0.422990,1.0,0.445799,0.420107,1.0,0.444826,0.421837,1.0,0.445799,0.423279,1.0,0.445799,0.420683,1.0,0.444177,0.422125,1.0,0.445474,0.423567,1.0,0.444339,0.422413,1.0,0.445636,0.424144,1.0,0.444502,0.422702,1.0,0.527538,0.277096,1.0,0.545948,0.273057,1.0,0.570479,0.322043,1.0,0.593542,0.272941,1.0,0.600271,0.258562,1.0,0.618750,0.244744,1.0,0.618161,0.243961,1.0,0.588682,0.270034,1.0,0.589562,0.271338,1.0,0.592792,0.268209,1.0,0.606724,0.253608,1.0,0.604672,0.263777,1.0,0.597042,0.274467,1.0,0.606135,0.266124,1.0,0.605109,0.265863,1.0,0.597187,0.274728,1.0,0.606281,0.266645,1.0,0.605255,0.266384,1.0,0.619339,0.264038,1.0,0.481584,0.469208,1.0,0.481584,0.469208,1.0,0.507665,0.640778,1.0,0.521411,0.815396,1.0,0.521411,0.815396,1.0,0.519932,0.474654,1.0,0.519932,0.474654,1.0,0.484742,0.635452,1.0,0.449391,0.755360,1.0,0.449391,0.755360,1.0
|
||||
0.507653,0.448769,1.0,0.509983,0.302683,1.0,0.509206,0.351378,1.0,0.510760,0.253987,1.0,0.503073,0.181689,1.0,0.509269,0.166709,1.0,0.509269,0.166709,1.0,0.493881,0.169406,1.0,0.493881,0.169406,1.0,0.492362,0.262094,1.0,0.473965,0.270202,1.0,0.469316,0.357440,1.0,0.469303,0.417398,1.0,0.462608,0.419504,1.0,0.472734,0.415004,1.0,0.471469,0.417575,1.0,0.471469,0.433006,1.0,0.469841,0.440720,1.0,0.468033,0.405681,1.0,0.471107,0.429791,1.0,0.471107,0.428826,1.0,0.467671,0.423040,1.0,0.472554,0.430433,1.0,0.471288,0.432362,1.0,0.469841,0.423040,1.0,0.470022,0.437506,1.0,0.470745,0.438149,1.0,0.471107,0.438470,1.0,0.529169,0.251173,1.0,0.547578,0.248359,1.0,0.576651,0.289327,1.0,0.605823,0.278410,1.0,0.604427,0.285453,1.0,0.611641,0.291502,1.0,0.615859,0.295856,1.0,0.619125,0.268517,1.0,0.620490,0.267549,1.0,0.633281,0.303841,1.0,0.622391,0.276018,1.0,0.629198,0.289566,1.0,0.632464,0.300695,1.0,0.628109,0.277953,1.0,0.630557,0.291985,1.0,0.632193,0.295131,1.0,0.630964,0.277953,1.0,0.631375,0.300454,1.0,0.633552,0.303841,1.0,0.484696,0.447393,1.0,0.484696,0.447393,1.0,0.509239,0.624635,1.0,0.521552,0.818044,1.0,0.521552,0.818044,1.0,0.530609,0.450145,1.0,0.530609,0.450145,1.0,0.496963,0.619193,1.0,0.460131,0.733630,1.0,0.460131,0.733630,1.0
|
||||
0.513020,0.439225,1.0,0.515887,0.290050,1.0,0.514931,0.339775,1.0,0.516842,0.240325,1.0,0.503122,0.165468,1.0,0.510786,0.161195,1.0,0.510786,0.161195,1.0,0.495394,0.161246,1.0,0.495394,0.161246,1.0,0.499224,0.248460,1.0,0.481606,0.256595,1.0,0.483059,0.362886,1.0,0.487735,0.403895,1.0,0.487961,0.394027,1.0,0.488181,0.389736,1.0,0.475456,0.408848,1.0,0.479186,0.419769,1.0,0.477431,0.421719,1.0,0.476114,0.419379,1.0,0.479186,0.418989,1.0,0.478528,0.421330,1.0,0.476114,0.418989,1.0,0.479186,0.418599,1.0,0.478966,0.419379,1.0,0.476114,0.418599,1.0,0.472823,0.424840,1.0,0.473920,0.412358,1.0,0.473920,0.412358,1.0,0.533702,0.232135,1.0,0.550563,0.223944,1.0,0.581177,0.254002,1.0,0.613417,0.297462,1.0,0.613005,0.310925,1.0,0.618615,0.322945,1.0,0.623396,0.333206,1.0,0.627521,0.303008,1.0,0.634776,0.303302,1.0,0.637250,0.305647,1.0,0.632964,0.304768,1.0,0.638240,0.321772,1.0,0.638406,0.338484,1.0,0.636755,0.309752,1.0,0.639724,0.322359,1.0,0.638568,0.335845,1.0,0.641375,0.310631,1.0,0.644344,0.312977,1.0,0.646484,0.317375,1.0,0.492327,0.439208,1.0,0.492327,0.439208,1.0,0.515319,0.627223,1.0,0.523016,0.815282,1.0,0.523016,0.815282,1.0,0.533714,0.439242,1.0,0.533714,0.439242,1.0,0.519897,0.602781,1.0,0.470888,0.700860,1.0,0.470888,0.700860,1.0
|
||||
0.518392,0.435139,1.0,0.519548,0.280764,1.0,0.519162,0.332222,1.0,0.519933,0.229306,1.0,0.505405,0.162619,1.0,0.515327,0.158516,1.0,0.515327,0.158516,1.0,0.496957,0.158554,1.0,0.496957,0.158554,1.0,0.502279,0.240212,1.0,0.484624,0.251119,1.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.537550,0.218401,1.0,0.555167,0.207497,1.0,0.581297,0.248462,1.0,0.618057,0.313978,1.0,0.617458,0.332957,1.0,0.622552,0.349177,1.0,0.627854,0.362379,1.0,0.636130,0.331826,1.0,0.644620,0.342388,1.0,0.651406,0.349177,1.0,0.638677,0.328431,1.0,0.647375,0.337106,1.0,0.643557,0.363888,1.0,0.638891,0.327677,1.0,0.647375,0.334844,1.0,0.643135,0.362756,1.0,0.639099,0.328431,1.0,0.646104,0.335975,1.0,0.643344,0.353326,1.0,0.496934,0.433746,1.0,0.496934,0.433746,1.0,0.519926,0.624547,1.0,0.530609,0.815383,1.0,0.530609,0.815383,1.0,0.539849,0.436531,1.0,0.539849,0.436531,1.0,0.532130,0.632711,1.0,0.477033,0.659980,1.0,0.477033,0.659980,1.0
|
||||
0.522976,0.439213,1.0,0.521842,0.279804,1.0,0.522220,0.332941,1.0,0.521464,0.226669,1.0,0.509959,0.161346,1.0,0.519862,0.158412,1.0,0.519862,0.158412,1.0,0.499979,0.158475,1.0,0.499979,0.158475,1.0,0.503099,0.238898,1.0,0.484734,0.251127,1.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.539096,0.215716,1.0,0.556729,0.204763,1.0,0.584297,0.251193,1.0,0.621073,0.335572,1.0,0.620484,0.351234,1.0,0.625380,0.371684,1.0,0.630766,0.386043,1.0,0.639823,0.357761,1.0,0.647161,0.371684,1.0,0.651812,0.382997,1.0,0.642510,0.352540,1.0,0.650344,0.368204,1.0,0.652057,0.379081,1.0,0.643490,0.348623,1.0,0.650099,0.361242,1.0,0.652792,0.370814,1.0,0.643490,0.347319,1.0,0.649854,0.354715,1.0,0.651568,0.363853,1.0,0.499993,0.441920,1.0,0.499993,0.441920,1.0,0.519995,0.643601,1.0,0.532193,0.812623,1.0,0.532193,0.812623,1.0,0.545958,0.436505,1.0,0.545958,0.436505,1.0,0.544458,0.643680,1.0,0.495342,0.608142,1.0,0.495342,0.608142,1.0
|
||||
0.531401,0.435164,1.0,0.525092,0.278729,1.0,0.527195,0.330874,1.0,0.522990,0.226584,1.0,0.513028,0.159888,1.0,0.521505,0.153025,1.0,0.521505,0.153025,1.0,0.506081,0.150329,1.0,0.506081,0.150329,1.0,0.506136,0.238854,1.0,0.489282,0.251123,1.0,0.495352,0.335674,1.0,0.495337,0.390213,1.0,0.501137,0.389137,1.0,0.509580,0.401644,1.0,0.491463,0.408211,1.0,0.492519,0.409149,1.0,0.491815,0.410712,1.0,0.490056,0.409149,1.0,0.490408,0.423220,1.0,0.489704,0.421656,1.0,0.485659,0.420406,1.0,0.490408,0.424158,1.0,0.488649,0.422281,1.0,0.487770,0.422594,1.0,0.490232,0.424158,1.0,0.487418,0.423532,1.0,0.487418,0.424783,1.0,0.540620,0.212993,1.0,0.558250,0.199402,1.0,0.588906,0.272953,1.0,0.621120,0.360079,1.0,0.621469,0.377781,1.0,0.626490,0.396905,1.0,0.632943,0.411354,1.0,0.640594,0.383731,1.0,0.648240,0.402430,1.0,0.650156,0.413904,1.0,0.644656,0.380331,1.0,0.652307,0.399455,1.0,0.652068,0.410504,1.0,0.646568,0.376931,1.0,0.653500,0.395205,1.0,0.652068,0.404555,1.0,0.648240,0.378631,1.0,0.651828,0.386706,1.0,0.652068,0.397330,1.0,0.507677,0.439237,1.0,0.507677,0.439237,1.0,0.521505,0.629977,1.0,0.532250,0.815280,1.0,0.532250,0.815280,1.0,0.555125,0.431092,1.0,0.555125,0.431092,1.0,0.556635,0.643735,1.0,0.519953,0.602733,1.0,0.519953,0.602733,1.0
|
||||
0.531401,0.435164,1.0,0.525092,0.278729,1.0,0.527195,0.330874,1.0,0.522990,0.226584,1.0,0.513028,0.159888,1.0,0.521505,0.153025,1.0,0.521505,0.153025,1.0,0.506081,0.150329,1.0,0.506081,0.150329,1.0,0.506136,0.238854,1.0,0.489282,0.251123,1.0,0.495352,0.335674,1.0,0.495337,0.390213,1.0,0.501137,0.389137,1.0,0.509580,0.401644,1.0,0.491463,0.408211,1.0,0.492519,0.409149,1.0,0.491815,0.410712,1.0,0.490056,0.409149,1.0,0.490408,0.423220,1.0,0.489704,0.421656,1.0,0.485659,0.420406,1.0,0.490408,0.424158,1.0,0.488649,0.422281,1.0,0.487770,0.422594,1.0,0.490232,0.424158,1.0,0.487418,0.423532,1.0,0.487418,0.424783,1.0,0.540620,0.212993,1.0,0.558250,0.199402,1.0,0.588906,0.272953,1.0,0.621120,0.360079,1.0,0.621469,0.377781,1.0,0.626490,0.396905,1.0,0.632943,0.411354,1.0,0.640594,0.383731,1.0,0.648240,0.402430,1.0,0.650156,0.413904,1.0,0.644656,0.380331,1.0,0.652307,0.399455,1.0,0.652068,0.410504,1.0,0.646568,0.376931,1.0,0.653500,0.395205,1.0,0.652068,0.404555,1.0,0.648240,0.378631,1.0,0.651828,0.386706,1.0,0.652068,0.397330,1.0,0.507677,0.439237,1.0,0.507677,0.439237,1.0,0.521505,0.629977,1.0,0.532250,0.815280,1.0,0.532250,0.815280,1.0,0.555125,0.431092,1.0,0.555125,0.431092,1.0,0.556635,0.643735,1.0,0.519953,0.602733,1.0,0.519953,0.602733,1.0
|
||||
0.532980,0.431078,1.0,0.527796,0.277661,1.0,0.529524,0.328800,1.0,0.526068,0.226521,1.0,0.515381,0.157080,1.0,0.523047,0.147654,1.0,0.523047,0.147654,1.0,0.507665,0.147681,1.0,0.507665,0.147681,1.0,0.509981,0.238805,1.0,0.493895,0.251089,1.0,0.507659,0.343874,1.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.542190,0.212944,1.0,0.558312,0.199366,1.0,0.585875,0.292119,1.0,0.619521,0.390154,1.0,0.617198,0.411739,1.0,0.621411,0.430931,1.0,0.629047,0.441698,1.0,0.643266,0.413611,1.0,0.646427,0.445912,1.0,0.643005,0.454338,1.0,0.645901,0.420633,1.0,0.646161,0.446380,1.0,0.640635,0.452933,1.0,0.646427,0.423442,1.0,0.645375,0.444975,1.0,0.640370,0.449656,1.0,0.644583,0.425782,1.0,0.644318,0.442635,1.0,0.640635,0.444507,1.0,0.509190,0.436478,1.0,0.509190,0.436478,1.0,0.526047,0.635459,1.0,0.533776,0.817948,1.0,0.533776,0.817948,1.0,0.556771,0.425679,1.0,0.556771,0.425679,1.0,0.559792,0.646326,1.0,0.529115,0.594558,1.0,0.529115,0.594558,1.0
|
||||
0.540596,0.437888,1.0,0.534258,0.277373,1.0,0.536371,0.330878,1.0,0.532146,0.223868,1.0,0.519147,0.144992,1.0,0.529094,0.144929,1.0,0.529094,0.144929,1.0,0.509221,0.144940,1.0,0.509221,0.144940,1.0,0.514543,0.236209,1.0,0.496940,0.248551,1.0,0.510762,0.332952,1.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.547495,0.208917,1.0,0.562844,0.193967,1.0,0.582714,0.311191,1.0,0.608807,0.422880,1.0,0.611599,0.433610,1.0,0.601339,0.431638,1.0,0.590245,0.435089,1.0,0.600781,0.437554,1.0,0.587474,0.460723,1.0,0.587198,0.461216,1.0,0.605219,0.451356,1.0,0.590526,0.467625,1.0,0.587474,0.472555,1.0,0.609932,0.464667,1.0,0.597458,0.466639,1.0,0.598010,0.471569,1.0,0.635167,0.449878,1.0,0.598844,0.470090,1.0,0.598844,0.484386,1.0,0.516822,0.441986,1.0,0.516822,0.441986,1.0,0.533661,0.640852,1.0,0.542901,0.812523,1.0,0.542901,0.812523,1.0,0.564370,0.433791,1.0,0.564370,0.433791,1.0,0.568932,0.654496,1.0,0.549062,0.600101,1.0,0.549062,0.600101,1.0
|
||||
0.543706,0.433755,1.0,0.536239,0.272333,1.0,0.538728,0.326140,1.0,0.533750,0.218526,1.0,0.522990,0.144931,1.0,0.532151,0.142154,1.0,0.532151,0.142154,1.0,0.513776,0.142237,1.0,0.513776,0.142237,1.0,0.519940,0.232128,1.0,0.506130,0.245730,1.0,0.519907,0.354691,1.0,0.509198,0.420100,1.0,0.504512,0.437179,1.0,0.503129,0.439228,1.0,0.502668,0.422430,1.0,0.502207,0.421610,1.0,0.502207,0.422020,1.0,0.502207,0.422430,1.0,0.502207,0.423659,1.0,0.501977,0.425707,1.0,0.502437,0.426527,1.0,0.501977,0.423249,1.0,0.501977,0.425298,1.0,0.502898,0.439228,1.0,0.501746,0.422430,1.0,0.501746,0.422840,1.0,0.502898,0.438818,1.0,0.549076,0.202213,1.0,0.564401,0.185901,1.0,0.575094,0.313941,1.0,0.591927,0.436494,1.0,0.583307,0.456881,1.0,0.585047,0.470251,1.0,0.586203,0.483106,1.0,0.596901,0.503160,1.0,0.595745,0.501618,1.0,0.594302,0.503160,1.0,0.606740,0.471279,1.0,0.603557,0.483106,1.0,0.607896,0.485677,1.0,0.609052,0.482592,1.0,0.607896,0.495447,1.0,0.600661,0.493390,1.0,0.610208,0.487734,1.0,0.607896,0.501618,1.0,0.606448,0.507274,1.0,0.519984,0.436488,1.0,0.519984,0.436488,1.0,0.535318,0.632756,1.0,0.545964,0.809817,1.0,0.545964,0.809817,1.0,0.567427,0.431021,1.0,0.567427,0.431021,1.0,0.570474,0.651800,1.0,0.559776,0.608226,1.0,0.559776,0.608226,1.0
|
||||
0.547523,0.431090,1.0,0.540623,0.267588,1.0,0.542923,0.322088,1.0,0.538323,0.213087,1.0,0.527577,0.139500,1.0,0.535250,0.139369,1.0,0.535250,0.139369,1.0,0.519844,0.139389,1.0,0.519844,0.139389,1.0,0.524512,0.226684,1.0,0.510702,0.240281,1.0,0.521437,0.346530,1.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.552872,0.199480,1.0,0.567422,0.185873,1.0,0.568922,0.316693,1.0,0.559849,0.447303,1.0,0.558661,0.480212,1.0,0.561380,0.512397,1.0,0.567411,0.516152,1.0,0.567714,0.510788,1.0,0.567714,0.515080,1.0,0.572240,0.520980,1.0,0.570432,0.507033,1.0,0.574354,0.514006,1.0,0.577068,0.513470,1.0,0.572542,0.505960,1.0,0.577068,0.509715,1.0,0.577370,0.512397,1.0,0.577370,0.507033,1.0,0.579484,0.507569,1.0,0.580089,0.507569,1.0,0.524516,0.433799,1.0,0.524516,0.433799,1.0,0.544385,0.640814,1.0,0.549094,0.801701,1.0,0.549094,0.801701,1.0,0.570531,0.428381,1.0,0.570531,0.428381,1.0,0.570490,0.651845,1.0,0.561302,0.605490,1.0,0.561302,0.605490,1.0
|
||||
0.555974,0.443263,1.0,0.547376,0.264526,1.0,0.550242,0.324105,1.0,0.544510,0.204947,1.0,0.531466,0.139421,1.0,0.539828,0.136713,1.0,0.539828,0.136713,1.0,0.521448,0.136750,1.0,0.521448,0.136750,1.0,0.533000,0.217153,1.0,0.521490,0.229358,1.0,0.530625,0.341140,1.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.555974,0.194007,1.0,0.567437,0.183067,1.0,0.558333,0.319309,1.0,0.533667,0.433731,1.0,0.529203,0.456894,1.0,0.533167,0.493132,1.0,0.541380,0.496656,1.0,0.533453,0.492629,1.0,0.530052,0.498166,1.0,0.540531,0.499172,1.0,0.532604,0.493132,1.0,0.536000,0.494643,1.0,0.542792,0.510245,1.0,0.531750,0.493636,1.0,0.535713,0.491119,1.0,0.544776,0.505716,1.0,0.531469,0.499172,1.0,0.530620,0.499172,1.0,0.542792,0.500179,1.0,0.532250,0.444604,1.0,0.532250,0.444604,1.0,0.545990,0.646302,1.0,0.556641,0.807116,1.0,0.556641,0.807116,1.0,0.579698,0.441923,1.0,0.579698,0.441923,1.0,0.570536,0.657187,1.0,0.562865,0.610862,1.0,0.562865,0.610862,1.0
|
||||
0.555974,0.443263,1.0,0.547376,0.264526,1.0,0.550242,0.324105,1.0,0.544510,0.204947,1.0,0.531466,0.139421,1.0,0.539828,0.136713,1.0,0.539828,0.136713,1.0,0.521448,0.136750,1.0,0.521448,0.136750,1.0,0.533000,0.217153,1.0,0.521490,0.229358,1.0,0.530625,0.341140,1.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.555974,0.194007,1.0,0.567437,0.183067,1.0,0.558333,0.319309,1.0,0.533667,0.433731,1.0,0.529203,0.456894,1.0,0.533167,0.493132,1.0,0.541380,0.496656,1.0,0.533453,0.492629,1.0,0.530052,0.498166,1.0,0.540531,0.499172,1.0,0.532604,0.493132,1.0,0.536000,0.494643,1.0,0.542792,0.510245,1.0,0.531750,0.493636,1.0,0.535713,0.491119,1.0,0.544776,0.505716,1.0,0.531469,0.499172,1.0,0.530620,0.499172,1.0,0.542792,0.500179,1.0,0.532250,0.444604,1.0,0.532250,0.444604,1.0,0.545990,0.646302,1.0,0.556641,0.807116,1.0,0.556641,0.807116,1.0,0.579698,0.441923,1.0,0.579698,0.441923,1.0,0.570536,0.657187,1.0,0.562865,0.610862,1.0,0.562865,0.610862,1.0
|
||||
0.562859,0.436515,1.0,0.554809,0.262727,1.0,0.557492,0.320657,1.0,0.552125,0.204798,1.0,0.536823,0.136681,1.0,0.545943,0.133950,1.0,0.545943,0.133950,1.0,0.526042,0.133935,1.0,0.526042,0.133935,1.0,0.542935,0.215734,1.0,0.533745,0.226669,1.0,0.533755,0.335743,1.0,0.518352,0.403835,1.0,0.508317,0.411100,1.0,0.508767,0.408299,1.0,0.507867,0.409099,1.0,0.508542,0.405898,1.0,0.508317,0.408699,1.0,0.508092,0.409099,1.0,0.508542,0.409900,1.0,0.507416,0.414301,1.0,0.507191,0.410300,1.0,0.506066,0.405898,1.0,0.501339,0.423104,1.0,0.501565,0.423104,1.0,0.513944,0.416302,1.0,0.506966,0.410300,1.0,0.508767,0.414701,1.0,0.560549,0.192551,1.0,0.568974,0.180305,1.0,0.553677,0.313733,1.0,0.515306,0.403742,1.0,0.519221,0.430946,1.0,0.501519,0.419956,1.0,0.509106,0.415960,1.0,0.510230,0.435942,1.0,0.509668,0.409966,1.0,0.499833,0.458421,1.0,0.511072,0.438939,1.0,0.506577,0.459420,1.0,0.510230,0.479402,1.0,0.511354,0.437940,1.0,0.508544,0.471908,1.0,0.502081,0.458920,1.0,0.509668,0.406469,1.0,0.510510,0.406469,1.0,0.502081,0.458421,1.0,0.541380,0.439231,1.0,0.541380,0.439231,1.0,0.549052,0.649098,1.0,0.558187,0.812504,1.0,0.558187,0.812504,1.0,0.584339,0.433798,1.0,0.584339,0.433798,1.0,0.572047,0.659910,1.0,0.567469,0.618979,1.0,0.567469,0.618979,1.0
|
||||
0.568966,0.432420,1.0,0.559800,0.259679,1.0,0.562855,0.317259,1.0,0.556745,0.202098,1.0,0.543659,0.129925,1.0,0.549036,0.125807,1.0,0.549036,0.125807,1.0,0.532182,0.128556,1.0,0.532182,0.128556,1.0,0.549078,0.212981,1.0,0.541411,0.223863,1.0,0.535318,0.319319,1.0,0.530646,0.349304,1.0,0.532677,0.341577,1.0,0.525339,0.355322,1.0,0.523359,0.356731,1.0,0.524943,0.353912,1.0,0.518204,0.354969,1.0,0.517609,0.357789,1.0,0.517609,0.348979,1.0,0.517015,0.350035,1.0,0.517015,0.348979,1.0,0.517411,0.349331,1.0,0.516420,0.348979,1.0,0.516618,0.348626,1.0,0.517609,0.347216,1.0,0.515825,0.346511,1.0,0.518402,0.346864,1.0,0.563622,0.189832,1.0,0.570500,0.177567,1.0,0.538349,0.311162,1.0,0.493845,0.382018,1.0,0.497451,0.384077,1.0,0.469864,0.414462,1.0,0.493253,0.387808,1.0,0.484557,0.399536,1.0,0.491154,0.388874,1.0,0.494752,0.416061,1.0,0.488155,0.413395,1.0,0.492953,0.424057,1.0,0.500749,0.424590,1.0,0.485456,0.414994,1.0,0.489954,0.428321,1.0,0.493253,0.437383,1.0,0.490554,0.394206,1.0,0.493253,0.386743,1.0,0.491154,0.453376,1.0,0.545995,0.436494,1.0,0.545995,0.436494,1.0,0.556656,0.659873,1.0,0.559755,0.812594,1.0,0.559755,0.812594,1.0,0.591937,0.428345,1.0,0.591937,0.428345,1.0,0.581198,0.659995,1.0,0.570589,0.621860,1.0,0.570589,0.621860,1.0
|
||||
0.573565,0.437821,1.0,0.565548,0.248862,1.0,0.568220,0.311848,1.0,0.562875,0.185876,1.0,0.547505,0.124456,1.0,0.556651,0.120520,1.0,0.556651,0.120520,1.0,0.535266,0.123138,1.0,0.535266,0.123138,1.0,0.559031,0.192662,1.0,0.555187,0.199448,1.0,0.530656,0.303001,1.0,0.484653,0.346567,1.0,0.467617,0.358882,1.0,0.445590,0.367951,1.0,0.446285,0.375370,1.0,0.447445,0.374134,1.0,0.446981,0.369188,1.0,0.445822,0.378256,1.0,0.459038,0.373721,1.0,0.451850,0.373721,1.0,0.449532,0.379905,1.0,0.456023,0.385263,1.0,0.460429,0.387324,1.0,0.459270,0.386500,1.0,0.457183,0.388561,1.0,0.460429,0.389385,1.0,0.461820,0.397629,1.0,0.567451,0.180393,1.0,0.572026,0.174909,1.0,0.530615,0.294788,1.0,0.472396,0.354668,1.0,0.466247,0.362558,1.0,0.448539,0.368751,1.0,0.469150,0.359978,1.0,0.449120,0.369268,1.0,0.445927,0.368235,1.0,0.455796,0.364622,1.0,0.448249,0.378041,1.0,0.450571,0.384750,1.0,0.456958,0.388362,1.0,0.447378,0.379589,1.0,0.449991,0.393523,1.0,0.453765,0.393007,1.0,0.445056,0.373912,1.0,0.443604,0.380621,1.0,0.449991,0.403844,1.0,0.552109,0.441889,1.0,0.552109,0.441889,1.0,0.558292,0.657189,1.0,0.565875,0.815375,1.0,0.565875,0.815375,1.0,0.595021,0.433753,1.0,0.595021,0.433753,1.0,0.582854,0.662573,1.0,0.593500,0.654537,1.0,0.593500,0.654537,1.0
|
||||
0.578216,0.433767,1.0,0.570144,0.245752,1.0,0.572835,0.308423,1.0,0.567453,0.183080,1.0,0.555193,0.120425,1.0,0.559792,0.120328,1.0,0.559792,0.120328,1.0,0.542922,0.120357,1.0,0.542922,0.120357,1.0,0.562070,0.188505,1.0,0.556687,0.193930,1.0,0.529141,0.289278,1.0,0.475466,0.313782,1.0,0.440587,0.333514,1.0,0.437877,0.330302,1.0,0.439684,0.329900,1.0,0.439006,0.335924,1.0,0.440135,0.327491,1.0,0.436973,0.340743,1.0,0.441943,0.337931,1.0,0.439910,0.322672,1.0,0.438554,0.345159,1.0,0.441943,0.333113,1.0,0.438780,0.322672,1.0,0.437877,0.345159,1.0,0.439006,0.329097,1.0,0.436747,0.324680,1.0,0.436973,0.345963,1.0,0.573557,0.174906,1.0,0.579661,0.166733,1.0,0.519969,0.289340,1.0,0.460155,0.313888,1.0,0.455808,0.324368,1.0,0.464173,0.314850,1.0,0.440416,0.327937,1.0,0.447442,0.324963,1.0,0.438743,0.329127,1.0,0.444766,0.320204,1.0,0.442089,0.335075,1.0,0.439077,0.329721,1.0,0.441754,0.328531,1.0,0.442089,0.333885,1.0,0.441085,0.338644,1.0,0.441754,0.323178,1.0,0.441419,0.333291,1.0,0.460827,0.312470,1.0,0.438743,0.329721,1.0,0.556766,0.439206,1.0,0.556766,0.439206,1.0,0.561339,0.646384,1.0,0.568937,0.815277,1.0,0.568937,0.815277,1.0,0.599667,0.428328,1.0,0.599667,0.428328,1.0,0.593479,0.662730,1.0,0.607266,0.684380,1.0,0.607266,0.684380,1.0
|
||||
0.582810,0.441937,1.0,0.573624,0.245747,1.0,0.576686,0.311144,1.0,0.570562,0.180351,1.0,0.559776,0.118997,1.0,0.568906,0.117580,1.0,0.568906,0.117580,1.0,0.547531,0.117645,1.0,0.547531,0.117645,1.0,0.565167,0.184418,1.0,0.559771,0.188484,1.0,0.536797,0.273042,1.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.576680,0.172201,1.0,0.582797,0.164051,1.0,0.519939,0.272954,1.0,0.458651,0.273023,1.0,0.452593,0.283349,1.0,0.458067,0.276480,1.0,0.442611,0.284494,1.0,0.444865,0.284494,1.0,0.440035,0.285067,1.0,0.442611,0.287929,1.0,0.442290,0.289645,1.0,0.448407,0.285067,1.0,0.449695,0.306819,1.0,0.448085,0.280487,1.0,0.449373,0.306246,1.0,0.447763,0.310825,1.0,0.455169,0.279342,1.0,0.435206,0.298805,1.0,0.435206,0.298805,1.0,0.559833,0.444688,1.0,0.559833,0.444688,1.0,0.568964,0.649083,1.0,0.570453,0.817970,1.0,0.570453,0.817970,1.0,0.605786,0.439185,1.0,0.605786,0.439185,1.0,0.604214,0.673635,1.0,0.625703,0.708982,1.0,0.625703,0.708982,1.0
|
||||
0.582810,0.441937,1.0,0.573624,0.245747,1.0,0.576686,0.311144,1.0,0.570562,0.180351,1.0,0.559776,0.118997,1.0,0.568906,0.117580,1.0,0.568906,0.117580,1.0,0.547531,0.117645,1.0,0.547531,0.117645,1.0,0.565167,0.184418,1.0,0.559771,0.188484,1.0,0.536797,0.273042,1.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.576680,0.172201,1.0,0.582797,0.164051,1.0,0.519939,0.272954,1.0,0.458651,0.273023,1.0,0.452593,0.283349,1.0,0.458067,0.276480,1.0,0.442611,0.284494,1.0,0.444865,0.284494,1.0,0.440035,0.285067,1.0,0.442611,0.287929,1.0,0.442290,0.289645,1.0,0.448407,0.285067,1.0,0.449695,0.306819,1.0,0.448085,0.280487,1.0,0.449373,0.306246,1.0,0.447763,0.310825,1.0,0.455169,0.279342,1.0,0.435206,0.298805,1.0,0.435206,0.298805,1.0,0.559833,0.444688,1.0,0.559833,0.444688,1.0,0.568964,0.649083,1.0,0.570453,0.817970,1.0,0.570453,0.817970,1.0,0.605786,0.439185,1.0,0.605786,0.439185,1.0,0.604214,0.673635,1.0,0.625703,0.708982,1.0,0.625703,0.708982,1.0
|
||||
0.588891,0.444620,1.0,0.580867,0.248417,1.0,0.583542,0.313818,1.0,0.578193,0.183017,1.0,0.568951,0.117674,1.0,0.573599,0.114810,1.0,0.573599,0.114810,1.0,0.555203,0.114890,1.0,0.555203,0.114890,1.0,0.572049,0.187115,1.0,0.565906,0.191214,1.0,0.535250,0.278431,1.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.584320,0.173541,1.0,0.590448,0.164066,1.0,0.519919,0.270192,1.0,0.460126,0.248319,1.0,0.459037,0.247729,1.0,0.462427,0.245319,1.0,0.441749,0.262794,1.0,0.445817,0.257371,1.0,0.442089,0.248331,1.0,0.439377,0.257974,1.0,0.446495,0.256166,1.0,0.447512,0.253153,1.0,0.450224,0.282079,1.0,0.447851,0.254960,1.0,0.441749,0.245921,1.0,0.450224,0.281476,1.0,0.461071,0.252550,1.0,0.439716,0.244716,1.0,0.439038,0.262794,1.0,0.568906,0.447341,1.0,0.568906,0.447341,1.0,0.570490,0.651825,1.0,0.572062,0.815384,1.0,0.572062,0.815384,1.0,0.608875,0.441899,1.0,0.608875,0.441899,1.0,0.613427,0.687319,1.0,0.648714,0.768944,1.0,0.648714,0.768944,1.0
|
||||
0.594990,0.444710,1.0,0.587009,0.248472,1.0,0.589669,0.313885,1.0,0.584349,0.183059,1.0,0.575904,0.118941,1.0,0.582781,0.112223,1.0,0.582781,0.112223,1.0,0.561323,0.114891,1.0,0.561323,0.114891,1.0,0.578211,0.188494,1.0,0.572073,0.193928,1.0,0.576656,0.322039,1.0,0.561328,0.338411,1.0,0.553885,0.369244,1.0,0.566865,0.352761,1.0,0.560245,0.347110,1.0,0.554943,0.369715,1.0,0.555208,0.364064,1.0,0.555740,0.364064,1.0,0.560245,0.370185,1.0,0.560505,0.368773,1.0,0.558125,0.367360,1.0,0.559448,0.369244,1.0,0.560771,0.371598,1.0,0.561302,0.370185,1.0,0.554151,0.368773,1.0,0.553089,0.368773,1.0,0.558125,0.385726,1.0,0.590453,0.174900,1.0,0.596557,0.166741,1.0,0.521500,0.267546,1.0,0.461718,0.226544,1.0,0.469942,0.228963,1.0,0.471668,0.240619,1.0,0.463041,0.229576,1.0,0.449237,0.237552,1.0,0.443716,0.239392,1.0,0.451307,0.245527,1.0,0.447857,0.231417,1.0,0.449582,0.247368,1.0,0.451307,0.251048,1.0,0.443026,0.229576,1.0,0.444060,0.225281,1.0,0.451653,0.246754,1.0,0.441645,0.230190,1.0,0.440955,0.243073,1.0,0.451998,0.244300,1.0,0.572021,0.447452,1.0,0.572021,0.447452,1.0,0.578198,0.662632,1.0,0.578203,0.818011,1.0,0.578203,0.818011,1.0,0.617958,0.441969,1.0,0.617958,0.441969,1.0,0.628740,0.703619,1.0,0.668630,0.831641,1.0,0.668630,0.831641,1.0
|
||||
0.602685,0.452868,1.0,0.598124,0.252522,1.0,0.599645,0.319304,1.0,0.596604,0.185740,1.0,0.585122,0.119052,1.0,0.593464,0.114894,1.0,0.593464,0.114894,1.0,0.572021,0.117491,1.0,0.572021,0.117491,1.0,0.591221,0.189852,1.0,0.585839,0.193964,1.0,0.532156,0.272960,1.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.601961,0.180311,1.0,0.607318,0.174882,1.0,0.527594,0.270156,1.0,0.470801,0.212987,1.0,0.457345,0.215422,1.0,0.450297,0.224193,1.0,0.450649,0.218555,1.0,0.444659,0.211037,1.0,0.450297,0.214795,1.0,0.451002,0.221060,1.0,0.449944,0.201640,1.0,0.450649,0.202893,1.0,0.446068,0.207278,1.0,0.461926,0.201013,1.0,0.449944,0.203519,1.0,0.452764,0.236095,1.0,0.447830,0.211663,1.0,0.453821,0.226072,1.0,0.453468,0.226698,1.0,0.581193,0.455609,1.0,0.581193,0.455609,1.0,0.581281,0.670867,1.0,0.582714,0.820847,1.0,0.582714,0.820847,1.0,0.624177,0.450126,1.0,0.624177,0.450126,1.0,0.642536,0.714493,1.0,0.679313,0.883476,1.0,0.679313,0.883476,1.0
|
||||
0.607362,0.469189,1.0,0.608481,0.262776,1.0,0.608108,0.331580,1.0,0.608854,0.193971,1.0,0.595867,0.120448,1.0,0.604198,0.117670,1.0,0.604198,0.117670,1.0,0.582750,0.117756,1.0,0.582750,0.117756,1.0,0.601971,0.198068,1.0,0.595089,0.202164,1.0,0.545984,0.283900,1.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.614969,0.189833,1.0,0.621083,0.185695,1.0,0.536802,0.270381,1.0,0.473989,0.213031,1.0,0.472084,0.203578,1.0,0.463916,0.188424,1.0,0.455037,0.187161,1.0,0.458233,0.178321,1.0,0.448999,0.175165,1.0,0.453971,0.186530,1.0,0.458233,0.184636,1.0,0.449354,0.189056,1.0,0.453261,0.192844,1.0,0.457168,0.196632,1.0,0.449709,0.195369,1.0,0.452551,0.201052,1.0,0.456457,0.210523,1.0,0.449709,0.206734,1.0,0.451485,0.208629,1.0,0.582854,0.471897,1.0,0.582854,0.471897,1.0,0.582802,0.684505,1.0,0.584339,0.826239,1.0,0.584339,0.826239,1.0,0.631870,0.466481,1.0,0.631870,0.466481,1.0,0.656406,0.730954,1.0,0.682401,0.946074,1.0,0.682401,0.946074,1.0
|
||||
0.618773,0.488264,1.0,0.626232,0.277760,1.0,0.623746,0.347928,1.0,0.628719,0.207593,1.0,0.608862,0.132657,1.0,0.616479,0.123081,1.0,0.616479,0.123081,1.0,0.594969,0.123148,1.0,0.594969,0.123148,1.0,0.618799,0.213044,1.0,0.608880,0.218495,1.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.635664,0.204811,1.0,0.642609,0.202030,1.0,0.550589,0.275777,1.0,0.483127,0.226514,1.0,0.479008,0.214206,1.0,0.471232,0.199724,1.0,0.460493,0.199724,1.0,0.463085,0.187875,1.0,0.454569,0.195116,1.0,0.456791,0.203016,1.0,0.460864,0.195774,1.0,0.453458,0.201041,1.0,0.454198,0.207624,1.0,0.460864,0.206966,1.0,0.453087,0.207624,1.0,0.453828,0.216181,1.0,0.461234,0.218815,1.0,0.452717,0.218156,1.0,0.453458,0.222106,1.0,0.593500,0.488306,1.0,0.593500,0.488306,1.0,0.582818,0.703553,1.0,0.582839,0.828981,1.0,0.582839,0.828981,1.0,0.644047,0.488222,1.0,0.644047,0.488222,1.0,0.668682,0.749832,1.0,0.677828,0.954269,1.0,0.677828,0.954269,1.0
|
||||
0.618773,0.488264,1.0,0.626232,0.277760,1.0,0.623746,0.347928,1.0,0.628719,0.207593,1.0,0.608862,0.132657,1.0,0.616479,0.123081,1.0,0.616479,0.123081,1.0,0.594969,0.123148,1.0,0.594969,0.123148,1.0,0.618799,0.213044,1.0,0.608880,0.218495,1.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.635664,0.204811,1.0,0.642609,0.202030,1.0,0.550589,0.275777,1.0,0.483127,0.226514,1.0,0.479008,0.214206,1.0,0.471232,0.199724,1.0,0.460493,0.199724,1.0,0.463085,0.187875,1.0,0.454569,0.195116,1.0,0.456791,0.203016,1.0,0.460864,0.195774,1.0,0.453458,0.201041,1.0,0.454198,0.207624,1.0,0.460864,0.206966,1.0,0.453087,0.207624,1.0,0.453828,0.216181,1.0,0.461234,0.218815,1.0,0.452717,0.218156,1.0,0.453458,0.222106,1.0,0.593500,0.488306,1.0,0.593500,0.488306,1.0,0.582818,0.703553,1.0,0.582839,0.828981,1.0,0.582839,0.828981,1.0,0.644047,0.488222,1.0,0.644047,0.488222,1.0,0.668682,0.749832,1.0,0.677828,0.954269,1.0,0.677828,0.954269,1.0
|
||||
0.634128,0.491049,1.0,0.636989,0.290665,1.0,0.636035,0.357460,1.0,0.637943,0.223870,1.0,0.620349,0.140806,1.0,0.628760,0.125879,1.0,0.628760,0.125879,1.0,0.605828,0.133933,1.0,0.605828,0.133933,1.0,0.624174,0.233417,1.0,0.610406,0.242963,1.0,0.570552,0.281120,1.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.650992,0.214338,1.0,0.664042,0.204806,1.0,0.570510,0.278491,1.0,0.493823,0.245724,1.0,0.481653,0.244252,1.0,0.464014,0.256261,1.0,0.454631,0.243584,1.0,0.452755,0.243584,1.0,0.451629,0.234244,1.0,0.449752,0.237580,1.0,0.464014,0.224235,1.0,0.452004,0.232909,1.0,0.452379,0.252258,1.0,0.464764,0.224903,1.0,0.450878,0.255594,1.0,0.451629,0.254259,1.0,0.467016,0.220899,1.0,0.467016,0.219565,1.0,0.453505,0.252925,1.0,0.605786,0.491056,1.0,0.605786,0.491056,1.0,0.581318,0.728155,1.0,0.581161,0.820840,1.0,0.581161,0.820840,1.0,0.662469,0.491042,1.0,0.662469,0.491042,1.0,0.680859,0.763544,1.0,0.679318,0.956991,1.0,0.679318,0.956991,1.0
|
||||
0.642578,0.510101,1.0,0.646020,0.299604,1.0,0.644872,0.369770,1.0,0.647167,0.229438,1.0,0.631841,0.142206,1.0,0.641005,0.131305,1.0,0.641005,0.131305,1.0,0.618052,0.136746,1.0,0.618052,0.136746,1.0,0.631844,0.240349,1.0,0.616521,0.251259,1.0,0.581250,0.294754,1.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.000000,0.000000,0.0,0.664008,0.217192,1.0,0.680849,0.204945,1.0,0.599625,0.286624,1.0,0.507635,0.273008,1.0,0.496092,0.275204,1.0,0.479160,0.267177,1.0,0.472387,0.300622,1.0,0.470882,0.291257,1.0,0.472387,0.302629,1.0,0.472764,0.301960,1.0,0.475397,0.291257,1.0,0.476150,0.298616,1.0,0.473140,0.301291,1.0,0.476150,0.291926,1.0,0.479536,0.301960,1.0,0.474269,0.301960,1.0,0.477279,0.274535,1.0,0.470506,0.304635,1.0,0.473893,0.307980,1.0,0.611932,0.510080,1.0,0.611932,0.510080,1.0,0.582781,0.768924,1.0,0.581193,0.815417,1.0,0.581193,0.815417,1.0,0.673224,0.510123,1.0,0.673224,0.510123,1.0,0.693167,0.779882,1.0,0.679328,0.962481,1.0,0.679328,0.962481,1.0
|
||||
0.649487,0.514215,1.0,0.652298,0.314966,1.0,0.651361,0.381382,1.0,0.653234,0.248549,1.0,0.641060,0.143478,1.0,0.651755,0.125872,1.0,0.651755,0.125872,1.0,0.628797,0.136670,1.0,0.628797,0.136670,1.0,0.631820,0.262111,1.0,0.610406,0.275672,1.0,0.613411,0.384701,1.0,0.605828,0.455598,1.0,0.613010,0.466180,1.0,0.604000,0.454968,1.0,0.601750,0.456169,1.0,0.600172,0.466581,1.0,0.604453,0.441753,1.0,0.598818,0.456969,1.0,0.600620,0.454968,1.0,0.598818,0.458171,1.0,0.598818,0.457370,1.0,0.599719,0.454968,1.0,0.598594,0.457770,1.0,0.599047,0.467381,1.0,0.598818,0.454968,1.0,0.598594,0.454968,1.0,0.598146,0.467381,1.0,0.673198,0.232138,1.0,0.693161,0.215726,1.0,0.637948,0.292055,1.0,0.545995,0.313835,1.0,0.540604,0.316989,1.0,0.534177,0.321022,1.0,0.532286,0.317661,1.0,0.525859,0.321022,1.0,0.529641,0.319006,1.0,0.531531,0.319678,1.0,0.531151,0.342534,1.0,0.531906,0.331106,1.0,0.533042,0.333795,1.0,0.532286,0.344551,1.0,0.532661,0.332451,1.0,0.533042,0.336484,1.0,0.533422,0.345223,1.0,0.547031,0.331779,1.0,0.533042,0.334468,1.0,0.618094,0.515558,1.0,0.618094,0.515558,1.0,0.595089,0.766250,1.0,0.582802,0.818136,1.0,0.582802,0.818136,1.0,0.680880,0.512872,1.0,0.680880,0.512872,1.0,0.703818,0.793392,1.0,0.679396,0.957037,1.0,0.679396,0.957037,1.0
|
||||
0.654862,0.512803,1.0,0.654868,0.314550,1.0,0.654866,0.380634,1.0,0.654870,0.248466,1.0,0.647151,0.138087,1.0,0.657901,0.120378,1.0,0.657901,0.120378,1.0,0.634917,0.123200,1.0,0.634917,0.123200,1.0,0.631878,0.260793,1.0,0.608885,0.273120,1.0,0.595089,0.425590,1.0,0.591948,0.545551,1.0,0.589641,0.587971,1.0,0.589318,0.553413,1.0,0.592188,0.595336,1.0,0.594417,0.564744,1.0,0.591552,0.597035,1.0,0.585495,0.554546,1.0,0.593464,0.568709,1.0,0.584859,0.570409,1.0,0.580396,0.582306,1.0,0.593781,0.568709,1.0,0.589000,0.568709,1.0,0.587406,0.569843,1.0,0.586135,0.546615,1.0,0.584542,0.555113,1.0,0.585177,0.557379,1.0,0.679393,0.233489,1.0,0.703917,0.218513,1.0,0.670172,0.294784,1.0,0.610380,0.357518,1.0,0.570271,0.401362,1.0,0.582724,0.407902,1.0,0.600271,0.415952,1.0,0.599141,0.408908,1.0,0.600552,0.411927,1.0,0.599422,0.419977,1.0,0.598573,0.393816,1.0,0.611589,0.402871,1.0,0.612156,0.403878,1.0,0.600271,0.391803,1.0,0.611307,0.402871,1.0,0.611026,0.404381,1.0,0.586401,0.430542,1.0,0.588385,0.432051,1.0,0.610740,0.404883,1.0,0.621156,0.512829,1.0,0.621156,0.512829,1.0,0.619625,0.804389,1.0,0.593578,0.807128,1.0,0.593578,0.807128,1.0,0.688568,0.512777,1.0,0.688568,0.512777,1.0,0.705370,0.790769,1.0,0.680880,0.959750,1.0,0.680880,0.959750,1.0
|
||||
|
Can't render this file because it is too large.
|
Binary file not shown.
|
After Width: | Height: | Size: 289 KiB |
@@ -0,0 +1,991 @@
|
||||
#include "InputParser_C.h"
|
||||
#include <math.h>
|
||||
/* InputParser..
|
||||
A small generic library for parsing a string and tokenizing it!
|
||||
GITHUB Repo : http://github.com/AmmarkoV/InputParser
|
||||
my URLs: http://ammar.gr
|
||||
Written by Ammar Qammaz a.k.a. AmmarkoV 2006-2010
|
||||
|
||||
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 WARN_ABOUT_INCORRECTLY_ALLOCATED_STACK_STRINGS 1
|
||||
int warningsAboutIncorrectlyAllocatedStackIssued = 0;
|
||||
|
||||
|
||||
char _ipc_ver[]=" 0.362\0"; //17/7/2023
|
||||
|
||||
|
||||
/*
|
||||
|
||||
|
||||
TODO
|
||||
|
||||
|
||||
void stringToFloatArray(char * str , char delimiter , float * floatArr , int elements)
|
||||
{
|
||||
unsigned int strLength = strlen(str);
|
||||
char * strPtr=str;
|
||||
char * strStart=str;
|
||||
char * strEnd=str+strLength;
|
||||
|
||||
int curElement = 0;
|
||||
|
||||
while ( (curElement<elements) && (strPtr<strEnd) )
|
||||
{
|
||||
while ( (strPtr<strEnd) && (*strPtr!=delimiter) )
|
||||
{
|
||||
++strPtr; //Seeking next delimiter
|
||||
}
|
||||
|
||||
if (*strPtr==delimiter)
|
||||
{
|
||||
*strPtr=0; //Null terminate
|
||||
floatArr[curElement]=atof(strStart);
|
||||
++curElement;
|
||||
*strPtr=delimiter;
|
||||
strStart=strPtr+1;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
*/
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
char * InputParserC_Version()
|
||||
{
|
||||
return (char *) _ipc_ver;
|
||||
}
|
||||
|
||||
|
||||
|
||||
int InputParser_ClearNonCharacters(char * inpt , unsigned int length)
|
||||
{
|
||||
unsigned int skip_chars=0;
|
||||
unsigned int i=0;
|
||||
while (i<length)
|
||||
{
|
||||
if (inpt[i]<' ') /*The characters before space should be filtered*/
|
||||
{
|
||||
++skip_chars;
|
||||
}
|
||||
|
||||
if (skip_chars>0)
|
||||
{
|
||||
if (i+skip_chars>=length)
|
||||
{
|
||||
inpt[i]=0;
|
||||
}
|
||||
else
|
||||
{
|
||||
inpt[i]=inpt[i+skip_chars];
|
||||
}
|
||||
}
|
||||
++i;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
|
||||
int InputParser_TrimCharactersStart(char * inpt , unsigned int length,char what2trim)
|
||||
{
|
||||
if ( ( inpt==0 ) || (length==0) )
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
unsigned int skip_chars=0;
|
||||
unsigned int i=0;
|
||||
|
||||
|
||||
while ((skip_chars<length)&&(inpt[skip_chars]==what2trim))
|
||||
{
|
||||
++skip_chars;
|
||||
}
|
||||
|
||||
while (i<length)
|
||||
{
|
||||
if (skip_chars>0)
|
||||
{
|
||||
if (i+skip_chars>=length)
|
||||
{
|
||||
inpt[i]=0;
|
||||
}
|
||||
else
|
||||
{
|
||||
inpt[i]=inpt[i+skip_chars];
|
||||
}
|
||||
}
|
||||
++i;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
int InputParser_TrimCharactersEnd(char * inpt , unsigned int length,char what2trim)
|
||||
{
|
||||
if ( strlen(inpt)!=length )
|
||||
{
|
||||
length=strlen(inpt);
|
||||
}
|
||||
if ( length==0 )
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
if ( (length==1) && (inpt[0]==what2trim) )
|
||||
{
|
||||
inpt[0]=0;
|
||||
return 1;
|
||||
}
|
||||
else if ( length==1 )
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
unsigned int i;
|
||||
i=length-1;
|
||||
while ((inpt[i]==what2trim)&&(i>0))
|
||||
{
|
||||
--i;
|
||||
}
|
||||
if ( i==length-1 )
|
||||
{
|
||||
/*No chars found*/ return 1;
|
||||
}
|
||||
|
||||
if ((i==0) && (inpt[0]==what2trim) )
|
||||
{
|
||||
inpt[0]=0;
|
||||
}
|
||||
else
|
||||
{
|
||||
inpt[i+1]=0;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
int InputParser_TrimCharacters(char * inpt , unsigned int length,char what2trim)
|
||||
{
|
||||
int i=0;
|
||||
i=InputParser_TrimCharactersStart(inpt,length,what2trim);
|
||||
if (i==0)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
return InputParser_TrimCharactersEnd(inpt,length,what2trim);
|
||||
}
|
||||
|
||||
static inline signed int Str2Int_internal(char * inpt,unsigned int start_from,unsigned int length)
|
||||
{
|
||||
if ( inpt == 0 )
|
||||
{
|
||||
fprintf(stderr,"Null string to Str2IntInternal!\n");
|
||||
return 0;
|
||||
}
|
||||
int intresult;
|
||||
int multiplier;
|
||||
int curnum;
|
||||
unsigned char trailing_sign_seek;
|
||||
unsigned char positive_number;
|
||||
signed int i;
|
||||
|
||||
intresult=0,multiplier=1,curnum=0;
|
||||
trailing_sign_seek=1 , positive_number=1;
|
||||
/*fprintf(stderr,"Converting to int string (%p) begining from %u and ending at %u ",inpt,start_from,start_from+length);*/
|
||||
for (i=(signed int) start_from+length-1; i>=(signed int) start_from; i--)
|
||||
{
|
||||
if ( i < 0 )
|
||||
{
|
||||
/*fprintf("Gone negative! %u \n",i);*/ break;
|
||||
}
|
||||
|
||||
curnum=(char) (inpt[i])-'0';
|
||||
if ((curnum>=0)&(curnum<=9))
|
||||
{
|
||||
intresult=intresult+(multiplier*curnum);
|
||||
multiplier=multiplier*10;
|
||||
}
|
||||
|
||||
if (trailing_sign_seek)
|
||||
{
|
||||
/*fprintf(stderr,"Run to %c while searching for sign \n",inpt[i]);*/
|
||||
if (inpt[i]=='+')
|
||||
{
|
||||
trailing_sign_seek=0;
|
||||
}
|
||||
else if (inpt[i]=='-')
|
||||
{
|
||||
trailing_sign_seek=0;
|
||||
positive_number=0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!positive_number)
|
||||
{
|
||||
intresult = intresult * (-1);
|
||||
}
|
||||
return intresult;
|
||||
}
|
||||
|
||||
|
||||
|
||||
static inline unsigned char CheckIPCOk(struct InputParserC * ipc)
|
||||
{
|
||||
if ( ipc->guardbyte1.checksum != ipc->guardbyte2.checksum )
|
||||
{
|
||||
fprintf(stderr,"Input Parser - Wrong GuardChecksums #1\n");
|
||||
return 0;
|
||||
}
|
||||
if ( ipc->guardbyte3.checksum != ipc->guardbyte4.checksum )
|
||||
{
|
||||
fprintf(stderr,"Input Parser - Wrong GuardChecksums #2\n");
|
||||
return 0;
|
||||
}
|
||||
if ( ipc->guardbyte1.checksum != ipc->guardbyte4.checksum )
|
||||
{
|
||||
fprintf(stderr,"Input Parser - Wrong GuardChecksums #3\n");
|
||||
return 0;
|
||||
}
|
||||
if ( (ipc->tokenlist==0) || (ipc->tokens_max<ipc->tokens_count) )
|
||||
{
|
||||
fprintf(stderr,"Input Parser - Tokenlist error\n");
|
||||
return 0;
|
||||
}
|
||||
if ( (ipc->delimeters==0) || (ipc->max_delimeter_count<ipc->cur_delimeter_count) )
|
||||
{
|
||||
fprintf(stderr,"Input Parser - Delimeter error\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
void InputParser_DefaultDelimeters(struct InputParserC * ipc)
|
||||
{
|
||||
if ( CheckIPCOk(ipc) == 0 )
|
||||
{
|
||||
return;
|
||||
}
|
||||
if ( ipc->delimeters == 0 )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
int i;
|
||||
/*fprintf(stderr,"Default Delimters ( %u ) ",ipc->max_delimeter_count);*/
|
||||
for ( i=0; i<ipc->max_delimeter_count; i++)
|
||||
{
|
||||
switch (i)
|
||||
{
|
||||
case 0 :
|
||||
ipc->delimeters[0]='\n';
|
||||
break;
|
||||
case 1 :
|
||||
ipc->delimeters[1]=',';
|
||||
break;
|
||||
case 2 :
|
||||
ipc->delimeters[2]='=';
|
||||
break;
|
||||
case 3 :
|
||||
ipc->delimeters[3]='(';
|
||||
break;
|
||||
case 4 :
|
||||
ipc->delimeters[4]=')';
|
||||
break;
|
||||
default :
|
||||
ipc->delimeters[i]='\n';
|
||||
break;
|
||||
};
|
||||
|
||||
/*fprintf(stderr," %u - %c ",i,ipc->delimeters[i]);*/
|
||||
|
||||
}
|
||||
ipc->cur_delimeter_count = ipc->max_delimeter_count;
|
||||
/*fprintf(stderr,"\n");*/
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
/*
|
||||
InitInputParser..
|
||||
|
||||
Allocates an ipc structure and with memory to it according to options for future use!
|
||||
for example InitInputParser( 256 , 5 ) will allocate an InputParser Instance capeable of tokenizing up to 256 different words
|
||||
from 5 delimeters
|
||||
*/
|
||||
struct InputParserC * InputParser_Create(unsigned int max_string_count,unsigned int max_delimiter_count)
|
||||
{
|
||||
struct InputParserC * ipc=0;
|
||||
|
||||
ipc = ( struct InputParserC * ) malloc ( sizeof ( struct InputParserC ) );
|
||||
if ( ipc == 0 )
|
||||
{
|
||||
fprintf(stderr,"InputParserC unable to commit memory for a new instance\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
ipc->tokenlist = (struct tokens *) malloc( sizeof(struct tokens) * (max_string_count+1) );
|
||||
if ( ipc->tokenlist == 0 )
|
||||
{
|
||||
fprintf(stderr,"InputParserC unable to commit memory for a new Token List\n");
|
||||
free(ipc);
|
||||
return 0;
|
||||
}
|
||||
ipc->tokens_count=0;
|
||||
ipc->tokens_max = max_string_count;
|
||||
|
||||
|
||||
ipc->delimeters = (char *) malloc( sizeof(char) * (max_delimiter_count+1) );
|
||||
if ( ipc->delimeters == 0 )
|
||||
{
|
||||
fprintf(stderr,"InputParserC unable to commit memory for a new Delimeter List\n");
|
||||
free(ipc->tokenlist);
|
||||
free(ipc);
|
||||
return 0;
|
||||
}
|
||||
ipc->max_delimeter_count=max_delimiter_count;
|
||||
ipc->cur_delimeter_count=max_delimiter_count;
|
||||
|
||||
|
||||
ipc->container_start=0;
|
||||
ipc->container_end=0;
|
||||
|
||||
ipc->guardbyte1.checksum=66666;
|
||||
ipc->guardbyte2.checksum=66666;
|
||||
ipc->guardbyte3.checksum=66666;
|
||||
ipc->guardbyte4.checksum=66666;
|
||||
|
||||
ipc->local_allocation = 0; /* No allocation by default! :)*/
|
||||
ipc->str_length=0;
|
||||
ipc->str=0;
|
||||
|
||||
InputParser_DefaultDelimeters(ipc);
|
||||
|
||||
return ipc;
|
||||
}
|
||||
|
||||
/*
|
||||
InputParser_Destroy..
|
||||
|
||||
Safely destroys a non null ipc structure and deallocates all commited memory
|
||||
*/
|
||||
void InputParser_Destroy(struct InputParserC * ipc)
|
||||
{
|
||||
if ( ipc == 0 )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
/*fprintf(stderr,"InputParserC freeing delimeters\n");*/
|
||||
if ( ipc->delimeters != 0 )
|
||||
{
|
||||
free(ipc->delimeters);
|
||||
ipc->delimeters=0;
|
||||
}
|
||||
ipc->cur_delimeter_count=0;
|
||||
ipc->max_delimeter_count=0;
|
||||
|
||||
/*
|
||||
if ( ipc->container_start != 0 )
|
||||
{
|
||||
free(ipc->container_start);
|
||||
ipc->container_start=0;
|
||||
}
|
||||
if ( ipc->container_end != 0 )
|
||||
{
|
||||
free(ipc->container_end);
|
||||
ipc->container_end=0;
|
||||
}
|
||||
*/
|
||||
ipc->cur_container_count = 0;
|
||||
ipc->max_container_count = 0;
|
||||
|
||||
/*fprintf(stderr,"InputParserC freeing tokenlist\n");*/
|
||||
if ( ipc->tokenlist != 0 )
|
||||
{
|
||||
free(ipc->tokenlist);
|
||||
ipc->tokenlist=0;
|
||||
}
|
||||
ipc->tokens_max=0;
|
||||
ipc->tokens_count=0;
|
||||
|
||||
/*fprintf(stderr,"InputParserC freeing local allocation\n");*/
|
||||
if ( ipc->local_allocation == 1 )
|
||||
{
|
||||
if ( ipc->str!=0 ) free(ipc->str);
|
||||
}
|
||||
/*ipc->local_allocation=0;*/
|
||||
ipc->str_length=0;
|
||||
|
||||
|
||||
|
||||
/* RESULT */
|
||||
ipc->guardbyte1.checksum = 0;
|
||||
ipc->guardbyte2.checksum = 0;
|
||||
ipc->guardbyte3.checksum = 0;
|
||||
ipc->guardbyte4.checksum = 0;
|
||||
|
||||
/*fprintf(stderr,"InputParserC freeing ipc\n");*/
|
||||
free(ipc);
|
||||
|
||||
|
||||
}
|
||||
|
||||
/* ........................................................
|
||||
Delimeters ........................................................
|
||||
........................................................*/
|
||||
|
||||
/*
|
||||
CheckDelimeterNumOk..
|
||||
Checks if delimeter with number num has allocated space in memory
|
||||
*/
|
||||
static inline unsigned char CheckDelimeterNumOk(struct InputParserC * ipc,int num)
|
||||
{
|
||||
if ( ipc->max_delimeter_count <= num ) return 0;
|
||||
return 1;
|
||||
}
|
||||
|
||||
/*
|
||||
SetDelimeter..
|
||||
Sets Delimeter number num with value tmp
|
||||
*/
|
||||
void InputParser_SetDelimeter(struct InputParserC * ipc,int num,char tmp)
|
||||
{
|
||||
if (CheckDelimeterNumOk(ipc,num)==0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
ipc->delimeters[num]=tmp;
|
||||
}
|
||||
|
||||
/*
|
||||
GetDelimeter..
|
||||
Returns value of Delimeter with number num
|
||||
*/
|
||||
char InputParser_GetDelimeter(struct InputParserC * ipc,int num)
|
||||
{
|
||||
if (CheckDelimeterNumOk(ipc,num)==0)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
return ipc->delimeters[num];
|
||||
}
|
||||
/* .......................................................................
|
||||
.......................................................................
|
||||
.......................................................................*/
|
||||
|
||||
|
||||
|
||||
|
||||
/*
|
||||
Selfchecks IPC instance and returns 1 if everything is ok , 0 if error..
|
||||
*/
|
||||
unsigned char InputParser_SelfCheck(struct InputParserC * ipc)
|
||||
{
|
||||
if (CheckIPCOk(ipc)==0)
|
||||
{
|
||||
fprintf(stderr,"\n\n!!!!\nThis instance of InputParser is broken\n!!!!\n\n");
|
||||
return 0;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
/*
|
||||
CheckWordNumOk..
|
||||
Checks if word with number num has allocated space in memory
|
||||
*/
|
||||
unsigned char CheckWordNumOk(struct InputParserC * ipc,unsigned int num)
|
||||
{
|
||||
if ( CheckIPCOk(ipc)==0)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
if ( (ipc->tokenlist==0) || ( ipc->tokens_count <= num ) )
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
unsigned int InputParser_GetNumberOfArguments(struct InputParserC * ipc)
|
||||
{
|
||||
if ( CheckIPCOk(ipc)==0)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
return ipc->tokens_count;
|
||||
}
|
||||
|
||||
/*
|
||||
InputParser_GetWord..
|
||||
Copies token with number (num) to c string (wheretostore) , variable storagesize contains the total size of wheretostore..!
|
||||
*/
|
||||
unsigned int InputParser_IsEmptyWord(struct InputParserC * ipc,unsigned int num)
|
||||
{
|
||||
if ( CheckWordNumOk(ipc,num) == 0 )
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
if ( ipc->tokenlist[num].length == 0 )
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
unsigned int i=0;
|
||||
for ( i = ipc->tokenlist[num].token_start; i<ipc->tokenlist[num].token_start+ipc->tokenlist[num].length; i++ )
|
||||
{
|
||||
switch (ipc->str[i])
|
||||
{
|
||||
case 10 :
|
||||
break;
|
||||
case 13 :
|
||||
break;
|
||||
case ' ' :
|
||||
break;
|
||||
default :
|
||||
return 0;
|
||||
};
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
InputParser_GetWord..
|
||||
Copies token with number (num) to c string (wheretostore) , variable storagesize contains the total size of wheretostore..!
|
||||
*/
|
||||
unsigned int InputParser_GetWord(struct InputParserC * ipc,unsigned int num,char * wheretostore,unsigned int storagesize)
|
||||
{
|
||||
if ( CheckWordNumOk(ipc,num) == 0 )
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
if ( storagesize < ipc->tokenlist[num].length+1 ) /* +1 gia to \0 */ return 0;
|
||||
|
||||
|
||||
unsigned int i=0;
|
||||
for ( i = ipc->tokenlist[num].token_start; i<ipc->tokenlist[num].token_start+ipc->tokenlist[num].length; i++ )
|
||||
wheretostore[i-ipc->tokenlist[num].token_start] = ipc->str[i];
|
||||
|
||||
wheretostore[ipc->tokenlist[num].length] = 0;
|
||||
|
||||
return ipc->tokenlist[num].length;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
InputParser_WordCompareNoCase..
|
||||
Compares word (word) with token with number (num) , null terminating character is not required , NO CASE SENSITIVITY..!
|
||||
*/
|
||||
unsigned char InputParser_WordCompareNoCase(struct InputParserC * ipc,unsigned int num,const char * word,unsigned int wordsize)
|
||||
{
|
||||
/*fprintf(stderr,"InputParser_WordCompareNoCase( %u , %s , %u )",num,word,wordsize);*/
|
||||
if ( wordsize != InputParser_GetWordLength(ipc,num) )
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
/*if ( ipc->str_length <= ipc->tokenlist[num].token_start+wordsize ) { fprintf(stderr,"Erroneous input on InputParser_WordCompareNoCase leads out of array \n"); return 0; }*/
|
||||
|
||||
unsigned int i=0;
|
||||
for ( i=0; i<wordsize; i++ )
|
||||
{
|
||||
if (toupper(ipc->str[ipc->tokenlist[num].token_start+i])!=toupper(word[i]))
|
||||
{
|
||||
/*fprintf(stderr," returning fail ");*/ return 0;
|
||||
}
|
||||
}
|
||||
|
||||
/*fprintf(stderr," returning success ");*/
|
||||
return 1;
|
||||
}
|
||||
|
||||
/*
|
||||
InputParser_WordCompareNoCase..
|
||||
Compares word (word) with token with number (num) , null terminating character is required , NO CASE SENSITIVITY..!
|
||||
*/
|
||||
unsigned char InputParser_WordCompareNoCaseAuto(struct InputParserC * ipc,unsigned int num,const char * word)
|
||||
{
|
||||
if (word==0)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
unsigned int wordsize=strlen(word);
|
||||
return InputParser_WordCompareNoCase(ipc,num,word,wordsize);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
InputParser_WordCompare..
|
||||
Compares word (word) with token with number (num) , null terminating character is not required..!
|
||||
*/
|
||||
unsigned char InputParser_WordCompare(struct InputParserC * ipc,unsigned int num,const char * word,unsigned int wordsize)
|
||||
{
|
||||
if ( wordsize != InputParser_GetWordLength(ipc,num) )
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
/*if ( ipc->str_length <= ipc->tokenlist[num].token_start+wordsize ) { fprintf(stderr,"Erroneous input on InputParser_WordCompareNoCase leads out of array \n"); return 0; }*/
|
||||
|
||||
unsigned int i=0;
|
||||
for ( i=0; i<wordsize; i++ )
|
||||
{
|
||||
if (ipc->str[ipc->tokenlist[num].token_start+i]!=word[i])
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
/*
|
||||
InputParser_WordCompareNoCase..
|
||||
Compares word (word) with token with number (num) , null terminating character is required , NO CASE SENSITIVITY..!
|
||||
*/
|
||||
unsigned char InputParser_WordCompareAuto(struct InputParserC * ipc,unsigned int num,const char * word)
|
||||
{
|
||||
if (word==0)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
unsigned int wordsize=strlen(word);
|
||||
return InputParser_WordCompare(ipc,num,word,wordsize);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
InputParser_GetUpcaseWord..
|
||||
Same with InputParser_GetWord , the result is converted to upcase..!
|
||||
*/
|
||||
unsigned int InputParser_GetUpcaseWord(struct InputParserC * ipc,unsigned int num,char * wheretostore,unsigned int storagesize)
|
||||
{
|
||||
if ( CheckWordNumOk(ipc,num) == 0 )
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
if ( storagesize < ipc->tokenlist[num].length+1 ) /* +1 gia to \0 */ return 0;
|
||||
|
||||
unsigned int i=0;
|
||||
for ( i = ipc->tokenlist[num].token_start; i<ipc->tokenlist[num].token_start+ipc->tokenlist[num].length; i++ )
|
||||
wheretostore[i-ipc->tokenlist[num].token_start] = toupper(ipc->str[i]);
|
||||
|
||||
wheretostore[ipc->tokenlist[num].length] = 0;
|
||||
|
||||
return ipc->tokenlist[num].length;
|
||||
}
|
||||
|
||||
/*
|
||||
InputParser_GetUpcaseWord..
|
||||
Same with InputParser_GetWord , the result is converted to lowercase..!
|
||||
*/
|
||||
unsigned int InputParser_GetLowercaseWord(struct InputParserC * ipc,unsigned int num,char * wheretostore,unsigned int storagesize)
|
||||
{
|
||||
if ( CheckWordNumOk(ipc,num) == 0 )
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
if ( storagesize < ipc->tokenlist[num].length+1 ) /* +1 gia to \0 */ return 0;
|
||||
|
||||
unsigned int i=0;
|
||||
for ( i = ipc->tokenlist[num].token_start; i<ipc->tokenlist[num].token_start+ipc->tokenlist[num].length; i++ )
|
||||
wheretostore[i-ipc->tokenlist[num].token_start] = tolower(ipc->str[i]);
|
||||
|
||||
wheretostore[ipc->tokenlist[num].length] = 0;
|
||||
|
||||
return ipc->tokenlist[num].length;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
InputParser_GetChar..
|
||||
Returns character (pos) from token (num)..!
|
||||
*/
|
||||
char InputParser_GetWordChar(struct InputParserC * ipc,unsigned int num,unsigned int pos)
|
||||
{
|
||||
if ( CheckWordNumOk(ipc,num) == 0 )
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
if ( pos>=ipc->tokenlist[num].token_start+ipc->tokenlist[num].length )
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
return ipc->str[ipc->tokenlist[num].token_start + pos ];
|
||||
}
|
||||
|
||||
/*
|
||||
InputParser_GetWordInt..
|
||||
Same with InputParser_GetWord , if the result can be converted to a number , it returns this number
|
||||
else 0 is returned
|
||||
*/
|
||||
signed int InputParser_GetWordInt(struct InputParserC * ipc,unsigned int num)
|
||||
{
|
||||
if ( CheckWordNumOk(ipc,num) == 0 )
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
return Str2Int_internal(ipc->str,ipc->tokenlist[num].token_start,ipc->tokenlist[num].length);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
InputParser_GetWordFloat..
|
||||
Same with InputParser_GetWord , if the result can be converted to a float number , it returns this number
|
||||
else 0.0 is returned
|
||||
*/
|
||||
float InputParser_GetWordFloat(struct InputParserC * ipc,unsigned int num)
|
||||
{
|
||||
if ( CheckWordNumOk(ipc,num) == 0 )
|
||||
{
|
||||
return 0.0;
|
||||
}
|
||||
if (ipc->tokenlist[num].length == 0 )
|
||||
{
|
||||
return 0.0;
|
||||
}
|
||||
|
||||
char remember = 0;
|
||||
char * string_segment = 0;
|
||||
char * last_char_of_string_segment = 0;
|
||||
unsigned char isLocallyAllocated = ipc->local_allocation;
|
||||
|
||||
unsigned int tokenStart = ipc->tokenlist[num].token_start;
|
||||
unsigned int tokenLength = ipc->tokenlist[num].length;
|
||||
unsigned int stringLength = ipc->str_length;
|
||||
|
||||
float return_value=0.0;
|
||||
//Our string is a "string_segment" , and its last character ( which will be temporary become null ) is last_char_of_string_segment
|
||||
|
||||
|
||||
if (!isLocallyAllocated)
|
||||
{
|
||||
string_segment = (char*) malloc( (tokenLength+1) * sizeof(char) );
|
||||
//memset(string_segment,0,(tokenLength+1) * sizeof(char));
|
||||
if (string_segment==0)
|
||||
{
|
||||
fprintf(stderr,"InputParser_GetWordFloat could not allocate memory to return float value , returning NaN \n");
|
||||
return NAN;
|
||||
}
|
||||
|
||||
strncpy(string_segment,ipc->str+tokenStart,tokenLength);
|
||||
last_char_of_string_segment = string_segment + ipc->tokenlist[num].length;
|
||||
}
|
||||
else
|
||||
{
|
||||
string_segment = ipc->str+tokenStart;
|
||||
last_char_of_string_segment = string_segment + ipc->tokenlist[num].length;
|
||||
}
|
||||
|
||||
if (tokenStart + tokenLength < stringLength)
|
||||
{
|
||||
remember = *last_char_of_string_segment;
|
||||
*last_char_of_string_segment = (char) 0; //Temporarily convert the string segment to a null terminated string
|
||||
}
|
||||
//else we are on the last part of the string so no reason to do the whole 0 remember thing..
|
||||
|
||||
|
||||
#if USE_SCANF
|
||||
//fprintf(stderr,"Using sscanf to parse %s \n",string_segment);
|
||||
#warning "scanf without field width limits can crash with huge input data on libc versions older than 2.13-25. Add a field width specifier to fix this problem"
|
||||
/*
|
||||
Sample program that can crash:
|
||||
#include <stdio.h>
|
||||
int main()
|
||||
{ int a; scanf("%i", &a); return 0; }
|
||||
|
||||
To make it crash:
|
||||
perl -e 'print "5"x2100000' | ./a.out|
|
||||
*/
|
||||
sscanf(string_segment,"%f",&return_value);
|
||||
#else
|
||||
//fprintf(stderr,"Using atof to parse `%s` \n",string_segment);
|
||||
return_value=atof(string_segment);
|
||||
//fprintf(stderr,"Returns `%0.6f` \n",return_value);
|
||||
#endif // USE_SCANF
|
||||
|
||||
|
||||
if ( tokenStart + tokenLength < stringLength)
|
||||
{
|
||||
*last_char_of_string_segment = remember; //Restore string..
|
||||
}
|
||||
|
||||
if (!isLocallyAllocated)
|
||||
{
|
||||
free(string_segment);
|
||||
}
|
||||
|
||||
return return_value;
|
||||
}
|
||||
|
||||
/*
|
||||
InputParser_GetChar..
|
||||
Returns total length of token (num)..!
|
||||
*/
|
||||
unsigned int InputParser_GetWordLength(struct InputParserC * ipc,unsigned int num)
|
||||
{
|
||||
if ( CheckWordNumOk(ipc,num) == 0 )
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
return ipc->tokenlist[num].length;
|
||||
}
|
||||
|
||||
/*
|
||||
InputParser_SeperateWords..
|
||||
Seperates words in c string (inpt) to tokens using delimiters set-up at structure ipc and keeps result at structure ipc
|
||||
if the c string will be erased before getting back the tokens you can set the keepcopy byte to 1 , this will allocate memory to
|
||||
keep a copy of the string..!
|
||||
the number returned is the total of tokens extracted!
|
||||
*/
|
||||
int InputParser_SeperateWords(struct InputParserC * ipc,char * inpt,char keepcopy)
|
||||
{
|
||||
|
||||
if (keepcopy==0)
|
||||
{
|
||||
#if WARN_ABOUT_INCORRECTLY_ALLOCATED_STACK_STRINGS
|
||||
if (warningsAboutIncorrectlyAllocatedStackIssued==0)
|
||||
{
|
||||
fprintf(stderr,"Please note that feeding input parser with strings allocated on the stack it is generally a good idea to enable keepcopy\n");
|
||||
fprintf(stderr,"For example passing here a string allocated as char* hello = \"hello!\"; might lead to a segFault ( i.e. when calling InputParser_GetWordFloat ) \n");
|
||||
fprintf(stderr,"The correct way for allocating a string with in place processing is char hello[] = \"hello!\"; \n");
|
||||
fprintf(stderr,"Valgrind classifies these errors as \"Bad permissions for mapped region at address\" \n");
|
||||
++warningsAboutIncorrectlyAllocatedStackIssued ;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
if (CheckIPCOk(ipc)==0)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
if ( inpt == 0 ) return 0; /* NULL INPUT -> NULL OUTPUT*/
|
||||
|
||||
unsigned int STRING_END = strlen(inpt) ;
|
||||
int WORDS_SEPERATED = 0 , NEXT_SHOULD_NOT_BE_A_DELIMITER=1 , FOUND_DELIMETER ; /* Ignores starting ,,,,,string,etc*/
|
||||
|
||||
if ( STRING_END == 0 )
|
||||
{
|
||||
return 0; /* NULL INPUT -> NULL OUTPUT pt 2*/
|
||||
}
|
||||
|
||||
/* >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
||||
COPY STRING ( OR POINTER ) TO IPC STRUCTURE*/
|
||||
if ( keepcopy == 1 ) /* IF WE HAVE ALREADY ALLOCATED A STRING TO ipc->str , we should free it to prevent memory leaks!*/
|
||||
{
|
||||
if (ipc->local_allocation == 1)
|
||||
{
|
||||
if (ipc->str!=0)
|
||||
{
|
||||
/* ipc->str contains a previous value!*/
|
||||
free(ipc->str);
|
||||
ipc->local_allocation = 0;
|
||||
}
|
||||
}
|
||||
ipc->str = (char * ) malloc( sizeof(char) * (STRING_END+1) );
|
||||
memset(ipc->str,0,sizeof(char) * (STRING_END+1));
|
||||
ipc->local_allocation = 1;
|
||||
strncpy( ipc->str , inpt , STRING_END ) ;
|
||||
}
|
||||
else
|
||||
{
|
||||
ipc->str = inpt;
|
||||
}
|
||||
|
||||
ipc->str_length = STRING_END;
|
||||
/* COPY STRING ( OR POINTER ) TO IPC STRUCTURE
|
||||
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/
|
||||
|
||||
|
||||
unsigned int i,z;
|
||||
ipc->tokens_count = 0 , ipc->tokenlist[0].token_start=0;
|
||||
for (i=0; i<STRING_END; i++)
|
||||
{
|
||||
FOUND_DELIMETER = 0;
|
||||
for (z=0; z<ipc->cur_delimeter_count; z++)
|
||||
{
|
||||
|
||||
if ( inpt[i] == ipc->delimeters[z] )
|
||||
{
|
||||
FOUND_DELIMETER = 1;
|
||||
if (NEXT_SHOULD_NOT_BE_A_DELIMITER==0)
|
||||
{
|
||||
ipc->tokenlist[ipc->tokens_count].length = i - ipc->tokenlist[ipc->tokens_count].token_start;
|
||||
ipc->tokens_count+=1;
|
||||
ipc->tokenlist[ipc->tokens_count].token_start = i+1;
|
||||
WORDS_SEPERATED+=1;
|
||||
break;
|
||||
}
|
||||
else
|
||||
{
|
||||
ipc->tokenlist[ipc->tokens_count].token_start=i+1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (FOUND_DELIMETER == 0 ) NEXT_SHOULD_NOT_BE_A_DELIMITER=0;
|
||||
else if (FOUND_DELIMETER == 1 ) NEXT_SHOULD_NOT_BE_A_DELIMITER=1;
|
||||
|
||||
}
|
||||
|
||||
if (NEXT_SHOULD_NOT_BE_A_DELIMITER==0)
|
||||
{
|
||||
ipc->tokenlist[ipc->tokens_count].length = i - ipc->tokenlist[ipc->tokens_count].token_start;
|
||||
ipc->tokens_count+=1;
|
||||
ipc->tokenlist[ipc->tokens_count].token_start = i+1;
|
||||
WORDS_SEPERATED+=1;
|
||||
|
||||
}
|
||||
else
|
||||
ipc->tokenlist[ipc->tokens_count].length = i - ipc->tokenlist[ipc->tokens_count].token_start;
|
||||
|
||||
return WORDS_SEPERATED;
|
||||
}
|
||||
|
||||
/*
|
||||
Same with InputParser_SeperateWords it does the (char *) type cast
|
||||
*/
|
||||
int InputParser_SeperateWordsCC(struct InputParserC * ipc,const char * inpt,char keepcopy)
|
||||
{
|
||||
return InputParser_SeperateWords(ipc,(char * )inpt,keepcopy);
|
||||
}
|
||||
|
||||
/*
|
||||
Same with InputParser_SeperateWords it does the (char *) type cast
|
||||
*/
|
||||
int InputParser_SeperateWordsUC(struct InputParserC * ipc,unsigned char * inpt,char keepcopy)
|
||||
{
|
||||
return InputParser_SeperateWords(ipc,(char * )inpt,keepcopy);
|
||||
}
|
||||
@@ -0,0 +1,392 @@
|
||||
/** @file InputParser_C.h
|
||||
* @brief A very handy string tokenizer for C this basically a swiss army knife kind code segment that can be used wherever we get strings
|
||||
* and we want to seperate them. This code is used in many of my projects including and not limited to
|
||||
* https://github.com/AmmarkoV/RoboVision
|
||||
* https://github.com/AmmarkoV/FlashySlideshows
|
||||
* https://github.com/AmmarkoV/RGBDAcquisition
|
||||
* https://github.com/AmmarkoV/AmmarServer
|
||||
* Basic usage is the following
|
||||
*
|
||||
* struct InputParserC * ipc=0;
|
||||
* ipc = InputParser_Create(512,5); //We want to separte lines of Max 512 different strings seperated using 5 delimiters
|
||||
* InputParser_SetDelimeter(ipc,0,' '); //We want to seperate spaces
|
||||
*
|
||||
* char word[512];
|
||||
* int numberOfWords = InputParser_SeperateWords(ipc,"zero,one,2,three(four)",1);
|
||||
* for (int i=0; i<numberOfWords; i++)
|
||||
* {
|
||||
* InputParser_GetWord(ipc,i,word,512);
|
||||
* }
|
||||
* InputParser_Destroy(ipc);
|
||||
*
|
||||
* @author Ammar Qammaz (AmmarkoV)
|
||||
*/
|
||||
|
||||
#ifndef _INPUTPARSER_C_H_
|
||||
#define _INPUTPARSER_C_H_
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <ctype.h>
|
||||
|
||||
/** @brief Controls the use of scanf for getting back floats ,
|
||||
scanf without field width limits can crash with huge input data on libc versions older than 2.13-25.
|
||||
so this is better turned of and atof is used to do the float conversion*/
|
||||
#define USE_SCANF 0
|
||||
|
||||
/**
|
||||
* @brief A struct that contains the token list
|
||||
*/
|
||||
struct tokens
|
||||
{
|
||||
/* START MEANS THE FIRST CHARACTER TO READ..!
|
||||
LENGTH MEANS total characters to be read
|
||||
i.e. a _ S _ A _ M _ P _ L _ E
|
||||
0 1 2 3 4 5 6
|
||||
this token starts from 0 and has 7 characters length*/
|
||||
unsigned int token_start;
|
||||
unsigned int length;
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief Guard Byte to make sure that there is no overflow
|
||||
*/
|
||||
struct guard_byte
|
||||
{
|
||||
unsigned int checksum;
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief The structure that holds all of the Input Parsing Context
|
||||
*/
|
||||
struct InputParserC
|
||||
{
|
||||
/* >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> */
|
||||
struct guard_byte guardbyte1;
|
||||
/* >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> */
|
||||
|
||||
unsigned int str_length;
|
||||
unsigned char local_allocation;
|
||||
char * str; /* String to process */
|
||||
|
||||
/* >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> */
|
||||
struct guard_byte guardbyte2;
|
||||
/* >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> */
|
||||
unsigned short cur_container_count;
|
||||
unsigned short max_container_count;
|
||||
char *container_start;
|
||||
char *container_end;
|
||||
|
||||
unsigned short cur_delimeter_count;
|
||||
unsigned short max_delimeter_count;
|
||||
char *delimeters;
|
||||
|
||||
/* >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> */
|
||||
struct guard_byte guardbyte3;
|
||||
/* >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> */
|
||||
|
||||
/* RESULT */
|
||||
unsigned int tokens_max;
|
||||
unsigned int tokens_count;
|
||||
struct tokens* tokenlist;
|
||||
|
||||
/* >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> */
|
||||
struct guard_byte guardbyte4;
|
||||
/* >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> */
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @brief Get Back a String containing the version of the InputParser
|
||||
* @retval Pointer to a C String that contains the version of InputParser
|
||||
*/
|
||||
char * InputParserC_Version();
|
||||
|
||||
/**
|
||||
* @brief Clear any non-character characters from string
|
||||
* @ingroup InputParser
|
||||
* @param String Input/Output
|
||||
* @param Length of String
|
||||
* @retval 1 if success , 0 if not
|
||||
*/
|
||||
int InputParser_ClearNonCharacters(char * inpt , unsigned int length);
|
||||
|
||||
/**
|
||||
* @brief Trim Starting Characters preceeding string
|
||||
* @ingroup InputParser
|
||||
* @param String Input/Output
|
||||
* @param Length of String
|
||||
* @param Character to Trim
|
||||
* @retval 1 if success , 0 if not
|
||||
*/
|
||||
int InputParser_TrimCharactersStart(char * inpt , unsigned int length,char what2trim);
|
||||
|
||||
|
||||
/**
|
||||
* @brief Trim Starting Characters after string
|
||||
* @ingroup InputParser
|
||||
* @param String Input/Output
|
||||
* @param Length of String
|
||||
* @param Character to Trim
|
||||
* @retval 1 if success , 0 if not
|
||||
*/
|
||||
int InputParser_TrimCharactersEnd(char * inpt , unsigned int length,char what2trim);
|
||||
|
||||
|
||||
/**
|
||||
* @brief This call will remove all characters specified from the string
|
||||
* @ingroup InputParser
|
||||
* @param String Input/Output
|
||||
* @param Length of String
|
||||
* @param Character to Trim
|
||||
* @retval 1 if success , 0 if not
|
||||
*/
|
||||
int InputParser_TrimCharacters(char * inpt , unsigned int length,char what2trim);
|
||||
|
||||
|
||||
/**
|
||||
* @brief This call will setup the default delimiters that are typically used , these are '\n' ',' '=' '(' and ')'
|
||||
* these can be also read by InputParser_GetDelimeter or changed at any time using InputParser_SetDelimeter
|
||||
* @ingroup InputParser
|
||||
* @param InputParser Context ( needs to be created using InputParser_Create )
|
||||
*/
|
||||
void InputParser_DefaultDelimeters(struct InputParserC * ipc);
|
||||
|
||||
|
||||
/**
|
||||
* @brief This call will change the value of a delimiter so that it will also act as a tokenization split character
|
||||
* @ingroup InputParser
|
||||
* @param InputParser Context ( needs to be created using InputParser_Create )
|
||||
* @param Number of delimiter we want to set ( has to be less than the max_delimiter_count value we gave in InputParser_Create )
|
||||
* @param New Value for the delimiter we want to set
|
||||
*/
|
||||
void InputParser_SetDelimeter(struct InputParserC * ipc,int num,char tmp);
|
||||
|
||||
/**
|
||||
* @brief Get Back the characters that are used as delimiters
|
||||
* @ingroup InputParser
|
||||
* @param InputParser Context ( needs to be created using InputParser_Create )
|
||||
* @param Number of delimiter we want to set ( has to be less than the max_delimiter_count value we gave in InputParser_Create )
|
||||
* @retval Character used as delimiter , or Null if incorrect delimter number requested
|
||||
*/
|
||||
char InputParser_GetDelimeter(struct InputParserC * ipc,int num);
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @brief Create an InputParser Structure and Context that can be used to tokenize strings
|
||||
* @ingroup InputParser
|
||||
* @param The maximum number of strings/tokens to be returned as output from a SeperateWords command
|
||||
* @param The maximum number of delimters used typically 5 for the defaults '\n' ',' '=' '(' and ')'
|
||||
* @retval InputParser Context , or Null if there is an error
|
||||
*/
|
||||
struct InputParserC * InputParser_Create(unsigned int max_string_count,unsigned int max_delimiter_count);
|
||||
|
||||
|
||||
/**
|
||||
* @brief Destroy an InputParser Structure and Context and safely free all of the memory it might have allocated
|
||||
* @ingroup InputParser
|
||||
* @param InputParser Context ( needs to be created using InputParser_Create )
|
||||
*/
|
||||
void InputParser_Destroy(struct InputParserC * ipc);
|
||||
|
||||
|
||||
/**
|
||||
* @brief Perform an internal integrity check
|
||||
* @ingroup InputParser
|
||||
* @param InputParser Context to be checked ( needs to be created using InputParser_Create )
|
||||
* @retval 1=Success,0=Error
|
||||
*/
|
||||
unsigned char InputParser_SelfCheck(struct InputParserC * ipc);
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @brief Retrieve the number of arguments seperated from the last InputParser_SeperateWords call
|
||||
* @ingroup InputParser
|
||||
* @param InputParser Context to be used ( needs to be created using InputParser_Create )
|
||||
* @retval Number of arguments tokenized , 0=No arguments/Error
|
||||
*/
|
||||
unsigned int InputParser_GetNumberOfArguments(struct InputParserC * ipc);
|
||||
|
||||
|
||||
/**
|
||||
* @brief Check if a word ( InputParser_GetWord ) is empty after issuing a InputParser_SeperateWords call
|
||||
* @ingroup InputParser
|
||||
* @param InputParser Context to be used ( needs to be created using InputParser_Create )
|
||||
* @param Word that we want to check
|
||||
* @retval 1=Success,0=Error
|
||||
*/
|
||||
unsigned int InputParser_IsEmptyWord(struct InputParserC * ipc,unsigned int num);
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @brief Checks if word with number num has allocated space in memory ( see InputParser_GetWord )
|
||||
* @ingroup InputParser
|
||||
* @param InputParser Context to be used ( needs to be created using InputParser_Create )
|
||||
* @param Word that we want to check
|
||||
* @retval 1=Success,0=Error
|
||||
*/
|
||||
unsigned char CheckWordNumOk(struct InputParserC * ipc,unsigned int num);
|
||||
|
||||
|
||||
/**
|
||||
* @brief Get a specific character of a Word ( instead of the whole string that would be returned with InputParser_GetWord )
|
||||
* @ingroup InputParser
|
||||
* @param InputParser Context to be used ( needs to be created using InputParser_Create )
|
||||
* @param Word that we want to check
|
||||
* @param Character of word we want to get back
|
||||
* @retval Character we requested or null if there is an error
|
||||
*/
|
||||
char InputParser_GetWordChar(struct InputParserC * ipc,unsigned int num,unsigned int pos);
|
||||
|
||||
/**
|
||||
* @brief Compare two words without case sensitivity and return wether they match or not..!
|
||||
* @ingroup InputParser
|
||||
* @param InputParser Context to be used ( needs to be created using InputParser_Create )
|
||||
* @param Word that we want to check
|
||||
* @param String that we want to compare against
|
||||
* @param Length of String that we want to compare against
|
||||
* @retval 1=Match,0=Strings are different
|
||||
*/
|
||||
unsigned char InputParser_WordCompareNoCase(struct InputParserC * ipc,unsigned int num,const char * word,unsigned int wordsize);
|
||||
|
||||
/**
|
||||
* @brief Same as InputParser_WordCompareNoCase but supposes word is null terminated and auto-counts its length
|
||||
* @ingroup InputParser
|
||||
* @param InputParser Context to be used ( needs to be created using InputParser_Create )
|
||||
* @param Word that we want to check
|
||||
* @param String that we want to compare against ( that should be null terminated )
|
||||
* @retval 1=Match,0=Strings are different
|
||||
*/
|
||||
unsigned char InputParser_WordCompareNoCaseAuto(struct InputParserC * ipc,unsigned int num,const char * word);
|
||||
|
||||
/**
|
||||
* @brief Compare two words with case sensitivity and return wether they match or not..!
|
||||
* @ingroup InputParser
|
||||
* @param InputParser Context to be used ( needs to be created using InputParser_Create )
|
||||
* @param Word that we want to check
|
||||
* @param String that we want to compare against ( that should be null terminated )
|
||||
* @retval 1=Match,0=Strings are different
|
||||
*/
|
||||
unsigned char InputParser_WordCompare(struct InputParserC * ipc,unsigned int num,const char * word,unsigned int wordsize);
|
||||
|
||||
/**
|
||||
* @brief Same as InputParser_WordCompare but supposes word is null terminated and auto-counts its length
|
||||
* @ingroup InputParser
|
||||
* @param InputParser Context to be used ( needs to be created using InputParser_Create )
|
||||
* @param Word that we want to check
|
||||
* @param String that we want to compare against ( that should be null terminated )
|
||||
* @retval 1=Match,0=Strings are different
|
||||
*/
|
||||
unsigned char InputParser_WordCompareAuto(struct InputParserC * ipc,unsigned int num,const char * word);
|
||||
|
||||
/**
|
||||
* @brief Get back a string ( token ) after performing InputParser_SeperateWords
|
||||
* @ingroup InputParser
|
||||
* @param InputParser Context to be used ( needs to be created using InputParser_Create )
|
||||
* @param Word that we want to get
|
||||
* @param Pointer to a C String that will accomodate the output
|
||||
* @param Size of Pointer provided , should be big enough for the whole string plus its null terminator
|
||||
* @retval 1=Sucess,0=Failure
|
||||
*/
|
||||
unsigned int InputParser_GetWord(struct InputParserC * ipc,unsigned int num,char * wheretostore,unsigned int storagesize);
|
||||
|
||||
/**
|
||||
* @brief Get back an uppercase string ( token ) after performing InputParser_SeperateWords
|
||||
* @ingroup InputParser
|
||||
* @param InputParser Context to be used ( needs to be created using InputParser_Create )
|
||||
* @param Word that we want to get
|
||||
* @param Pointer to a C String that will accomodate the output
|
||||
* @param Size of Pointer provided , should be big enough for the whole string plus its null terminator
|
||||
* @retval 1=Sucess,0=Failure
|
||||
*/
|
||||
unsigned int InputParser_GetUpcaseWord(struct InputParserC * ipc,unsigned int num,char * wheretostore,unsigned int storagesize);
|
||||
|
||||
/**
|
||||
* @brief Get back a lowercase string ( token ) after performing InputParser_SeperateWords
|
||||
* @ingroup InputParser
|
||||
* @param InputParser Context to be used ( needs to be created using InputParser_Create )
|
||||
* @param Word that we want to get
|
||||
* @param Pointer to a C String that will accomodate the output
|
||||
* @param Size of Pointer provided , should be big enough for the whole string plus its null terminator
|
||||
* @retval 1=Sucess,0=Failure
|
||||
*/
|
||||
unsigned int InputParser_GetLowercaseWord(struct InputParserC * ipc,unsigned int num,char * wheretostore,unsigned int storagesize);
|
||||
|
||||
|
||||
/**
|
||||
* @brief Get back a signed integer ( token ) after performing InputParser_SeperateWords
|
||||
* @ingroup InputParser
|
||||
* @param InputParser Context to be used ( needs to be created using InputParser_Create )
|
||||
* @param Word that we want to get
|
||||
* @retval The value in the form of a number of token with number num , if the token is not a number returns null
|
||||
*/
|
||||
signed int InputParser_GetWordInt(struct InputParserC * ipc,unsigned int num);
|
||||
|
||||
|
||||
/**
|
||||
* @brief Get back a float ( token ) after performing InputParser_SeperateWords
|
||||
* @ingroup InputParser
|
||||
* @param InputParser Context to be used ( needs to be created using InputParser_Create )
|
||||
* @param Word that we want to get
|
||||
* @retval The value in the form of a floating precision number of token , if the token is not a number returns NaN
|
||||
*/
|
||||
float InputParser_GetWordFloat(struct InputParserC * ipc,unsigned int num);
|
||||
|
||||
|
||||
/**
|
||||
* @brief Get back The Length of a token so that we can allocate a proper buffer and then call InputParser_GetWord
|
||||
* @ingroup InputParser
|
||||
* @param InputParser Context to be used ( needs to be created using InputParser_Create )
|
||||
* @param Word that we want to get
|
||||
* @retval The length of the token string size , 0=Failure to access token num
|
||||
*/
|
||||
unsigned int InputParser_GetWordLength(struct InputParserC * ipc,unsigned int num);
|
||||
|
||||
|
||||
/**
|
||||
* @brief Split input string in tokens, this is the main functionality of this library..!
|
||||
* @ingroup InputParser
|
||||
* @param InputParser Context to be used ( needs to be created using InputParser_Create )
|
||||
* @param Word that we want to split to tokens
|
||||
* @param 1=Keep a copy of the input string, this is safer in case the input string changes from another thread etc. , 0=Zero copy splitting that has more chances of going wrong
|
||||
* @retval The number of tokens split,0=Failure
|
||||
*/
|
||||
int InputParser_SeperateWords(struct InputParserC * ipc,char * inpt,char keepcopy);
|
||||
|
||||
/**
|
||||
* @brief Same as InputParser_SeperateWords but accepts const char strings as input
|
||||
* @ingroup InputParser
|
||||
* @param InputParser Context to be used ( needs to be created using InputParser_Create )
|
||||
* @param Word that we want to split to tokens
|
||||
* @param 1=Keep a copy of the input string, this is safer in case the input string changes from another thread etc. , 0=Zero copy splitting that has more chances of going wrong
|
||||
* @retval The number of tokens split,0=Failure
|
||||
*/
|
||||
int InputParser_SeperateWordsCC(struct InputParserC * ipc,const char * inpt,char keepcopy);
|
||||
|
||||
/**
|
||||
* @brief Same as InputParser_SeperateWords but accepts unsigned char strings as input
|
||||
* @ingroup InputParser
|
||||
* @param InputParser Context to be used ( needs to be created using InputParser_Create )
|
||||
* @param Word that we want to split to tokens
|
||||
* @param 1=Keep a copy of the input string, this is safer in case the input string changes from another thread etc. , 0=Zero copy splitting that has more chances of going wrong
|
||||
* @retval The number of tokens split,0=Failure
|
||||
*/
|
||||
int InputParser_SeperateWordsUC(struct InputParserC * ipc,unsigned char * inpt,char keepcopy);
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
This code actually has it's own repository ( https://github.com/AmmarkoV/InputParser ) and also included in the AmmarServer dependency ( https://github.com/AmmarkoV/AmmarServer/tree/master/src/InputParser )
|
||||
However to simplify build process it is also included as standalone here.
|
||||
@@ -0,0 +1,3 @@
|
||||
This is the dependencies subdirectory
|
||||
|
||||
At minimum here there should be a libtensorflow , RGBDAcquisition and maybe an opencv-3.2.0
|
||||
@@ -0,0 +1,54 @@
|
||||
FROM nvidia/cuda:11.6.1-devel-ubuntu20.04
|
||||
|
||||
|
||||
ENV DEBIAN_FRONTEND=noninteractive
|
||||
|
||||
RUN mkdir /python_install
|
||||
RUN mkdir /model_code
|
||||
|
||||
WORKDIR /python_install
|
||||
RUN \
|
||||
echo "**** packages installation ****" \
|
||||
&& apt-key adv --fetch-keys http://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/3bf863cc.pub \
|
||||
&& apt-get update && apt-get install -y \
|
||||
vim \
|
||||
build-essential \
|
||||
cmake \
|
||||
libopencv-dev \
|
||||
libjpeg-dev \
|
||||
libpng-dev \
|
||||
libglew-dev \
|
||||
libpthread-stubs0-dev \
|
||||
git \
|
||||
virtualenv \
|
||||
time \
|
||||
sudo \
|
||||
wget \
|
||||
nano \
|
||||
curl \
|
||||
software-properties-common \
|
||||
rsync \
|
||||
apt-utils \
|
||||
ffmpeg \
|
||||
unzip
|
||||
|
||||
RUN curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | bash \
|
||||
&& apt-get install git-lfs \
|
||||
&& git lfs install
|
||||
|
||||
RUN add-apt-repository ppa:deadsnakes/ppa
|
||||
|
||||
RUN apt-get update
|
||||
RUN apt-get install -y python3.10 python3.10-venv python3.10-dev python3.10-full python3.10-distutils
|
||||
|
||||
# COPY requirements.txt .
|
||||
# Install Python dependencies
|
||||
RUN python3.10 -m venv python \
|
||||
&& python/bin/pip install --upgrade pip wheel setuptools \
|
||||
&& . python/bin/activate
|
||||
|
||||
WORKDIR /model_code
|
||||
COPY . /model_code/MocapNET
|
||||
RUN cd /model_code/MocapNET && ./initialize.sh
|
||||
# RUN cd /home/${user_name}/workspace && git clone https://github.com/FORTH-ModelBasedTracker/MocapNET && cd MocapNET && ./initialize.sh --collab
|
||||
|
||||
+44
@@ -0,0 +1,44 @@
|
||||
#!/usr/bin/env bash
|
||||
# This script builds and runs a docker image for local use.
|
||||
|
||||
#Although I dislike the use of docker for a myriad of reasons, due needing it to deploy on a particular machine
|
||||
#I am adding a docker container builder for the repository to automate the process
|
||||
|
||||
|
||||
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||
cd "$DIR"
|
||||
cd ..
|
||||
REPOSITORY=`pwd`
|
||||
|
||||
cd "$DIR"
|
||||
|
||||
NAME="mocapnet"
|
||||
dockerfile_pth="$DIR"
|
||||
mount_pth="$REPOSITORY"
|
||||
|
||||
# update tensorflow image
|
||||
docker pull tensorflow/tensorflow:latest-gpu
|
||||
|
||||
# build and run tensorflow
|
||||
docker build \
|
||||
-t $NAME \
|
||||
$dockerfile_pth \
|
||||
--build-arg user_id=$UID
|
||||
|
||||
docker run -d \
|
||||
--gpus all \
|
||||
--shm-size 8G \
|
||||
-it \
|
||||
--name $NAME-container \
|
||||
-v $mount_pth:/home/user/workspace \
|
||||
$NAME
|
||||
|
||||
|
||||
docker ps -a
|
||||
|
||||
OUR_DOCKER_ID=`docker ps -a | grep mocapnet | cut -f1 -d' '`
|
||||
echo "Our docker ID is : $OUR_DOCKER_ID"
|
||||
echo "Attaching it using : docker attach $OUD_DOCKER_ID"
|
||||
docker attach $OUR_DOCKER_ID
|
||||
|
||||
exit 0
|
||||
Executable
+119
@@ -0,0 +1,119 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -ex
|
||||
DIR=`pwd`
|
||||
cd "$DIR"
|
||||
|
||||
ORIG_DIR=`pwd`
|
||||
|
||||
#Simple dependency checker that will apt-get stuff if something is missing
|
||||
# sudo apt-get install build-essential cmake libopencv-dev libjpeg-dev libpng-dev libglew-dev libpthread-stubs0-dev
|
||||
SYSTEM_DEPENDENCIES="wget git build-essential cmake libopencv-dev libjpeg-dev libpng-dev libglew-dev libpthread-stubs0-dev"
|
||||
#------------------------------------------------------------------------------
|
||||
for REQUIRED_PKG in $SYSTEM_DEPENDENCIES
|
||||
do
|
||||
PKG_OK=$(dpkg-query -W --showformat='${Status}\n' $REQUIRED_PKG|grep "install ok installed")
|
||||
echo "Checking for $REQUIRED_PKG: $PKG_OK"
|
||||
if [ "" = "$PKG_OK" ]; then
|
||||
|
||||
echo "No $REQUIRED_PKG. Setting up $REQUIRED_PKG."
|
||||
|
||||
#If this is uncommented then only packages that are missing will get prompted..
|
||||
#sudo apt-get --yes install $REQUIRED_PKG
|
||||
|
||||
#if this is uncommented then if one package is missing then all missing packages are immediately installed..
|
||||
sudo apt-get install $SYSTEM_DEPENDENCIES
|
||||
break
|
||||
fi
|
||||
done
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
cd "$DIR"
|
||||
if [ -f dependencies/RGBDAcquisition/README.md ]; then
|
||||
echo "RGBDAcquisition appears to already exist .."
|
||||
#cd "$DIR/dependencies/RGBAcquisition"
|
||||
#echo "We can make sure that it is up to date to avoid issues like https://github.com/FORTH-ModelBasedTracker/MocapNET/issues/48.."
|
||||
#echo "However someone might not want to update the code.. what to do.."
|
||||
#git pull
|
||||
#cd "$DIR"
|
||||
else
|
||||
cd "$DIR/dependencies"
|
||||
git clone https://github.com/AmmarkoV/RGBDAcquisition
|
||||
cd RGBDAcquisition
|
||||
# This package has no releases so we just picked a "good" checkout
|
||||
git checkout b752895
|
||||
mkdir build
|
||||
cd build
|
||||
cmake ..
|
||||
#We dont need to make it
|
||||
#make
|
||||
cd ../opengl_acquisition_shared_library/opengl_depth_and_color_renderer
|
||||
mkdir build
|
||||
cd build
|
||||
cmake ..
|
||||
#We dont need to make it
|
||||
#make
|
||||
cd "$DIR"
|
||||
#Also retrieve Renderer
|
||||
#ln -s dependencies/RGBDAcquisition/opengl_acquisition_shared_library/opengl_depth_and_color_renderer/Renderer
|
||||
fi
|
||||
|
||||
if [ -f /usr/local/lib/libtensorflow.so ]; then
|
||||
echo "Found a system wide tensorflow installation, not altering anything"
|
||||
elif [ -f dependencies/libtensorflow/lib/libtensorflow.so ]; then
|
||||
echo "Found a local tensorflow installation, not altering anything"
|
||||
else
|
||||
echo "Tensorflow not found, downloading Tensorflow 2.3.1 with GPU support.."
|
||||
if [ ! -f dependencies/libtensorflow-gpu-linux-x86_64-2.3.1.tar.gz ]; then
|
||||
cd "$DIR/dependencies"
|
||||
wget https://storage.googleapis.com/tensorflow/libtensorflow/libtensorflow-gpu-linux-x86_64-2.3.1.tar.gz
|
||||
# mkdir libtensorflow
|
||||
# tar -C libtensorflow -xzf
|
||||
#echo "Please give me sudo permissions to install Tensorflow $TENSORFLOW_VERSION C Bindings.."
|
||||
tar -C /usr/local -xzf libtensorflow-gpu-linux-x86_64-2.3.1.tar.gz
|
||||
else
|
||||
echo "Tensorflow 2.3.1 GPU tarball already downloaded."
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
cd "$DIR"
|
||||
cd src/python/mnet4
|
||||
rm -rf BVH/
|
||||
ln -s ../../../dependencies/RGBDAcquisition/opengl_acquisition_shared_library/opengl_depth_and_color_renderer/src/Applications/BVHTester/ BVH
|
||||
cd BVH
|
||||
./makeLibrary.sh
|
||||
|
||||
cd ..
|
||||
#Install rest of python stuff..
|
||||
./setup.sh
|
||||
|
||||
|
||||
|
||||
|
||||
#Now that we have everything lets build..
|
||||
echo "Now to try and build MocapNET.."
|
||||
cd "$DIR"
|
||||
|
||||
#if there is an already existing build directory and you called initialize.sh
|
||||
#it will get initialized as well.. (https://github.com/FORTH-ModelBasedTracker/MocapNET/issues/19)
|
||||
if [ -d "build" ]; then
|
||||
echo "Build directory already exists, but since the initialize.sh script was called "
|
||||
echo "this means the user wants to also initialize the build directory, so doing this"
|
||||
echo "to prevent problems like https://github.com/FORTH-ModelBasedTracker/MocapNET/issues/19"
|
||||
rm -rf build/
|
||||
fi
|
||||
|
||||
mkdir build
|
||||
cd build
|
||||
cmake ..
|
||||
make
|
||||
cd "$DIR"
|
||||
|
||||
|
||||
|
||||
exit 0
|
||||
@@ -0,0 +1,52 @@
|
||||
FORTH & END-USER LICENSE AGREEMENT
|
||||
for the
|
||||
FORTH-ICS MOCAPNET LIBRARY
|
||||
|
||||
PLEASE READ THE FOLLOWING CAREFULLY BEFORE USING:
|
||||
By using this hereby licensed to You product you expressly acknowledge and agree, on your own behalf as an individual, and on behalf of your employer or another entity which has not yet done so (collectively "You" or "Your"), that You are entering into a legal binding license agreement with FORTH ("FORTH"), have full authority to bind such employer or other entity with this License Agreement, and have understood and agree to comply with the terms & conditions of this License Agreement below (hereafter "Terms", "License Agreement"). You hereby waive any applicable rights to requirements for an original (non-electronic) signature or delivery or retention of non-electronic records, to the extent permitted under applicable law, customs & codes of practice.
|
||||
|
||||
1. Scope of this License Agreement
|
||||
Subject to these Terms, FORTH hereby grants to You a limited, worldwide (subject to applicable export restrictions), non-exclusive, personal, non-transferable, revocable, license to use the FORTH proprietary MOCAPNET LIBRARY that was developed at and by FORTH (under the supervision of Prof. A. Argyros, at FORTH-ICS, Computational Vision and Robotics Lab) and is solely owned by FORTH and known as FORTH-ICS MOCAPNET LIBRARY" (referred to hereafter as "LIBRARY") only for "personal" research and/or academic, non-profit, non-commercial use, pursuant to this License Agreement with FORTH.
|
||||
|
||||
2. Restrictions
|
||||
a. You agree to use this Licensed LIBRARY only as permitted herein;
|
||||
b. You are not allowed utilizing this Licensed LIBRARY with content/products/services that is not appropriate for viewing by a general audience or that directs users to such content/actions, which include, without limitation to, that which: (a) promote offensive, criminal, illegal content or activities; (b) violate any law, statute, order, or regulation, or; (c) violate intellectual property rights; (d) result in legal liability for FORTH; and/or (e) is considered by FORTH as unfair competition and/or prejudice to FORTH" s legitimate rights and interests ;
|
||||
c. You shall not and shall not permit third parties to: (a) integrate the Licensed LIBRARY with any products and/or services, (b) distribute the Licensed LIBRARY in any manner, (c) use or make available the Licensed LIBRARY to any person other than You, notwithstanding any applicable open source license terms or otherwise, (d) modify the Licensed LIBRARY,; or (e) change, obscure or delete any proprietary notices or legends which appear in the Licensed LIBRARY, for purposes other than as explicitly permitted herein;
|
||||
d. You agree that You will not, directly or indirectly, and You shall not permit third parties to (a) decompile, disassemble or reverse engineer the LIBRARY, in whole or in part, or use, copy, reproduce, write or develop any derivative software or any other software program based upon all or any part of the LIBRARY or any confidential information of FORTH, without FORTH's express prior written consent and/or for purposes other than "personal use" as herein permitted; (b) not compete directly or indirectly with FORTH in exploitation or otherwise of the LIBRARY and/or of any accompanying Hardware; and (c) not provide software maintenance, training or consulting or other expertise services in respect of the LIBRARY. In the event applicable law grants You the right to reverse engineer, You shall provide FORTH with prior written notice including information sufficient regarding Your intended method of reverse engineering, its purpose and the legal authority for such activity and shall afford FORTH a reasonable period before initiating such activity in order to evaluate and/or legally challenge the activity. You shall refrain from such activity until such time as any legal challenge is resolved in Your favor. Reverse engineering includes, without limitation, sniffing, decompiling, or otherwise deriving source code.
|
||||
|
||||
3. Intellectual Property Ownership
|
||||
FORTH and/or its rightholders shall respect and retain at all times all rights, title and interests, including all intellectual property rights, in and to the FORTH Logos, copyright notices and Terms and conditions of permitted use, and/or (if any) other applicable open source copyright notices and license terms, as well as with respect to any and all improvements, modifications, enhancements, and derivative works (if any) thereof and/or feedback associated therewith while using this Licensed LIBRARY, that You shall refer to always and provide to FORTH. All rights not specifically granted in these Terms shall be retained by FORTH.
|
||||
|
||||
4. Warranties
|
||||
You represent and warrant that: (a) You have the full right, power and authority to enter into these Terms and carry out Your obligations hereunder; (b) the consent to and performance of these Terms will not result in the breach or violation of any law or regulation applicable to it or any contract or commitment by which You are bound; and (c) You do not infringe any rights of a third party.
|
||||
|
||||
5. User Support
|
||||
FORTH shall not be required to provide support of any kind with respect to the Licensed LIBRARY.
|
||||
|
||||
6. Disclaimer of Warranties
|
||||
THE LICENSED LIBRARY, IS DEEMED ACCEPTED BY YOU. TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, FORTH, ITS LICENSORS AND SUPPLIERS (if any) PROVIDE THE LICENSED SOFTWARE AND ANY (IF ANY) SUPPORT SERVICES "AS IS" AND WITHOUT LIABILITY; TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, FORTH EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES AND CONDITIONS, INCLUDING WITHOUT LIMITATION IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE OR NON-INFRINGEMENT AS WELL AS ANY WARRANTIES THAT THE OPERATION OF THE SOFTWARE OR DRIVERS WILL BE UNINTERRUPTED OR ERROR FREE.
|
||||
|
||||
7. Indemnity
|
||||
You agree to indemnify and hold FORTH, concerned personnel/developers and its licensors harmless against any cost, loss, liability or expense (including attorneys' fees) arising out of any third party claims against FORTH, its personnel/developers and/or its licensors (i) relating to Your utilization of the Licensed LIBRARY and/or (ii) arising from Your actions or omissions.
|
||||
|
||||
8. Term
|
||||
These Terms shall become effective upon Your acceptance, use of the hereby Licensed software and shall remain in effect until these terms, use of the Licensed software are terminated by FORTH. Upon termination (a) the rights and license(s) granted to You pursuant to these Terms shall automatically terminate; (b) You shall certify to FORTH that the Licensed product subject to these Terms has been removed from any equipment, network, premises, product, services or any other location or space, (c) You shall cease to use all FORTH proprietary content, product, services.
|
||||
|
||||
9. Survival
|
||||
The provisions of Sections 2-12 shall survive the expiration or termination of these Terms for any reason whatsoever.
|
||||
|
||||
10. Exclusion of Incidental, Consequential and certain other Damages
|
||||
To the maximum extent permitted by applicable laws, in no event shall FORTH, its personnel, directors, licensors or its suppliers be liable for any special, incidental, indirect, or consequential damages whatsoever (including, but not limited to, damages for loss of profits or confidential or other information, for business interruption, for personal injury, for loss of privacy, for failure to meet any duty including of good faith or of reasonable care, for negligence, and for any other pecuniary or other loss whatsoever) arising out of or in any way related to the use of or inability to use the Licensed product, or otherwise under or in connection with any provision of these Terms, even in the event of the fault, tort (including negligence), strict liability, breach of contract or breach of warranty of FORTH, its personnel, directors, affiliates, licensors or any supplier, and even if they or any one of them has been advised of the possibility of such damages.
|
||||
|
||||
11. Limitation of Liability and Remedies
|
||||
Notwithstanding anything to the contrary contained herein or any damages that You might incur for any reason whatsoever, the entire and maximum liability of FORTH, its personnel, directors, affiliates, licensors and any suppliers, in aggregate for all claims made in contract, tort or otherwise in connection with the subject matter hereof, and Your exclusive remedy for all of the foregoing shall be limited to the fees actually paid by You, if any. The foregoing limitations, exclusions and disclaimers shall apply to the maximum extent permitted by applicable laws, even if any remedy fails its essential purpose.
|
||||
|
||||
12. Miscellaneous
|
||||
a. Governing Law; Attorneys Fees. These Terms shall be construed and controlled by the Greek Law, and You consent to the non-exclusive jurisdiction and venue of the Greek courts of Athens, provided that FORTH may seek immediate injunctive or other relief with respect to a violation of intellectual property rights or confidentiality obligations in any appropriate jurisdiction, and You waive all defenses of lack of personal jurisdiction and forum non conveniens. EACH OF THE PARTIES HERETO HEREBY IRREVOCABLY WAIVES ALL RIGHT TO TRIAL BY JURY.
|
||||
b. Assignment. You may not assign these Terms or any portion thereof to any third party unless FORTH expressly consents in writing.
|
||||
c. No Partnership. Nothing in these Terms shall be construed to create a partnership or agency between the parties, and neither shall have authority to bind or represent itself as the agent or partner of the other.
|
||||
d. Severability. If any provision of these Terms shall be held to be invalid, illegal or unenforceable, such holding shall in no way affect or impair the remaining provisions, and the parties shall use their reasonable efforts to substitute valid and enforceable provisions which have the closest meaning and purpose as those so held.
|
||||
e. Entire Agreement; Variation; Waiver; Counterparts. These Terms set forth the entire understanding of the parties, which supersedes and merges all prior proposals, understandings and all other agreements oral and written between the parties relating to the subject matter herein and may not be modified except in a writing executed by both parties or in new terms posted here or notified to You. Failure of a party to enforce any of the provisions of these Terms will not be construed to be a waiver of the provision, and no waiver of any rights hereunder shall be deemed to be a waiver of the same or other right on any other occasion.
|
||||
|
||||
" Copyright FORTH 2019. All rights reserved.
|
||||
|
||||
@@ -0,0 +1,316 @@
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"#<----- Click this play button to setup MocapNET v4!\n",
|
||||
"\n",
|
||||
"#This is the Total Capture version that handles body, hands, gaze, face!\n",
|
||||
"#It also has been rewritten from scratch in Python for your convenience.\n",
|
||||
"#If you deploy this on your PC, run : jupyter notebook mocapnet4.ipynb\n",
|
||||
"# and remove --collab from the setup.sh invocation 2 lines below..!\n",
|
||||
"import os\n",
|
||||
"if (os.path.isfile(\"MocapNET.py\")):\n",
|
||||
" !git pull\n",
|
||||
" exit\n",
|
||||
"!git clone -b mnet4 https://github.com/FORTH-ModelBasedTracker/MocapNET.git\n",
|
||||
"!MocapNET/src/python/mnet4/setup.sh --collab\n",
|
||||
"os.chdir(\"MocapNET/src/python/mnet4\")\n",
|
||||
"print(\"MocapNET setup is finished, you can run the next cell now..\")\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"#<----- Click to get a video from the internet and then track it ( e.g. shuffle.webm )\n",
|
||||
"\n",
|
||||
"#You can also upload your own by clicking the Files icon and using the menu on the left\n",
|
||||
"#You need to put files in the /content/MocapNET/src/python/mnet4/ directory\n",
|
||||
"\n",
|
||||
"#Make sure we are at the correct directory\n",
|
||||
"import os\n",
|
||||
"if (not os.path.isfile(\"mediapipeHolisticWebcamMocapNET.py\")):\n",
|
||||
" os.chdir(\"MocapNET/src/python/mnet4\")\n",
|
||||
"\n",
|
||||
"!wget http://ammar.gr/mocapnet/shuffle.webm -O shuffle.webm\n",
|
||||
"\n",
|
||||
"#Analyze the file shuffle.web through MediaPipe 2D + MocapNET 3D Pose Estimation!\n",
|
||||
"!(python3 -m mediapipeHolisticWebcamMocapNET --from shuffle.webm --ik 0.001 99 99 --smooth 60 10 --all --save --plot --headless 2> /dev/null)\n",
|
||||
"print(\"MocapNET video input processing finished, you can run the next cells now to see the results..\")\n",
|
||||
"\n",
|
||||
"#Outputs are :\n",
|
||||
"#livelastRun3DHiRes.mp4 | A video showing the regressed output overlayed on RGB\n",
|
||||
"#livelastPlot3DHiRes.mp4| A video plot of the retrieved BVH degrees of freedom\n",
|
||||
"#out.bvh | the extracted BVH file \n",
|
||||
"#2d_out.csv | Input 2D joints used by MocapNET as a CSV file\n",
|
||||
"#3d_out.csv | Output 3D joints produced by MocapNET as a CSV file\n",
|
||||
"#bvh_out.csv | Output BVH angles produced by MocapNET as a CSV file\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"#<----- Click to run a sign-language dataset without mediapipe from a dumped Openpose/JSON/CSV source\n",
|
||||
"\n",
|
||||
"#Make sure we are at the correct directory\n",
|
||||
"import os\n",
|
||||
"if (not os.path.isfile(\"csvNET.py\")):\n",
|
||||
" os.chdir(\"MocapNET/src/python/mnet4\")\n",
|
||||
"\n",
|
||||
"#Download a single sign (con0014) from SIGNUM\n",
|
||||
"!wget http://ammar.gr/datasets/signumtest.zip -O signumtest.zip\n",
|
||||
"!unzip -o signumtest.zip\n",
|
||||
"\n",
|
||||
"#Analyze the file con0014/2dJoints_v1.4.csv through MediaPipe 2D + MocapNET 3D Pose Estimation!\n",
|
||||
"!(python3 -m csvNET --from con0014/2dJoints_v1.4.csv --ik 0.001 99 99 --upperbody --reye --mouth --hands --save --plot --headless 2> /dev/null)\n",
|
||||
"print(\"MocapNET video input processing finished, you can run the next cells now to see the results..\")"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"#<----- Click to see the generated BVH angle plot of the last MocapNET run!\n",
|
||||
"from IPython.display import Video\n",
|
||||
"import os\n",
|
||||
"if (not os.path.isfile(\"livelastPlot3DHiRes.mp4\")):\n",
|
||||
" print(\"Please execute the previous cells and wait for them to complete before seeing this visualization!\")\n",
|
||||
" exit\n",
|
||||
"\n",
|
||||
"Video(\"livelastPlot3DHiRes.mp4\",embed=True)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"#<----- Click to see the generated visualization of the last MocapNET run!\n",
|
||||
"from IPython.display import Video\n",
|
||||
"import os\n",
|
||||
"if (not os.path.isfile(\"livelastRun3DHiRes.mp4\")):\n",
|
||||
" print(\"Please execute the previous cells and wait for them to complete before seeing this visualization!\")\n",
|
||||
" exit\n",
|
||||
"\n",
|
||||
"Video(\"livelastRun3DHiRes.mp4\",embed=True)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"#<----- Click to download the generated BVH/3D files of the last MocapNET run!\n",
|
||||
"import os \n",
|
||||
"from google.colab import files\n",
|
||||
"if (not os.path.isfile(\"out.bvh\")) or (not os.path.isfile(\"2d_out.csv\")) or (not os.path.isfile(\"bvh_out.csv\")) or (not os.path.isfile(\"3d_out.csv\")):\n",
|
||||
" print(\"Please execute the previous cells and wait for them to complete before downloading output!\")\n",
|
||||
"else:\n",
|
||||
" print(\"Download Output Files!\")\n",
|
||||
" files.download(\"out.bvh\")\n",
|
||||
" files.download(\"2d_out.csv\")\n",
|
||||
" files.download(\"3d_out.csv\")\n",
|
||||
" files.download(\"bvh_out.csv\")\n",
|
||||
"#To render the 3D face get Blender from https://www.blender.org/\n",
|
||||
"#Download http://ammar.gr/mocapnet/mnet4/face.blend and open it using Blender\n",
|
||||
"#Download http://ammar.gr/mocapnet/mnet4/headerWithHeadAndOneMotion.bvh and open it using Blender at a 0.01 scale\n",
|
||||
"#Run The Loaded Python Script\n",
|
||||
"#Click on the armature and on the menu right click the orange rectangle\n",
|
||||
"#Select headerWithHeadAndOneMotion as Source BVH\n",
|
||||
"#Select newgirl as Target Obj\n",
|
||||
"#Select a directory as a target for generated dataset\n",
|
||||
"#Select the path to the regressed bvh_out.csv to load pre-generated dataset\n",
|
||||
"#Click Just Render CSV Dataset\n",
|
||||
"\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"#<----- Click to attempt MocapNET live demo by streaming your camera to Google Colab\n",
|
||||
"#EXPERIMENTAL, performance is impacted because of low image throughput!\n",
|
||||
"\n",
|
||||
"import cv2\n",
|
||||
"import os\n",
|
||||
"from colabStream import init_camera,take_frame,show_frame\n",
|
||||
"\n",
|
||||
" \n",
|
||||
"from mediapipeHolisticWebcamMocapNET import MediaPipeHolistic\n",
|
||||
"from MocapNET import easyMocapNETConstructor\n",
|
||||
"from folderStream import resize_with_padding\n",
|
||||
"\n",
|
||||
"# Create instances of MediaPipeHolistic and MocapNET\n",
|
||||
"mp_holistic = MediaPipeHolistic(doMediapipeVisualization=False)\n",
|
||||
"mnet = easyMocapNETConstructor(\n",
|
||||
" engine = \"onnx\",\n",
|
||||
" doProfiling = False,\n",
|
||||
" multiThreaded = False,\n",
|
||||
" doHCDPostProcessing = True,\n",
|
||||
" hcdLearningRate = 0.001,\n",
|
||||
" hcdEpochs = 99,\n",
|
||||
" hcdIterations = 99,\n",
|
||||
" bvhScale = 1.0,\n",
|
||||
" doBody = True,\n",
|
||||
" doFace = False,\n",
|
||||
" doREye = True,\n",
|
||||
" doMouth = True,\n",
|
||||
" doHands = True,\n",
|
||||
" addNoise = 0.0\n",
|
||||
")\n",
|
||||
"\n",
|
||||
"\n",
|
||||
"# init JavaScript code\n",
|
||||
"init_camera()\n",
|
||||
"\n",
|
||||
"while True:\n",
|
||||
" try:\n",
|
||||
" image = take_frame()\n",
|
||||
" \n",
|
||||
" image = resize_with_padding(image,1280,720)\n",
|
||||
"\n",
|
||||
" # Perform image processing with MediaPipeHolistic\n",
|
||||
" mocapNETInput, annotated_image = mp_holistic.convertImageToMocapNETInput(image)\n",
|
||||
"\n",
|
||||
" # Perform 3D joint prediction with MocapNET\n",
|
||||
" mocapNET3DOutput = mnet.predict3DJoints(mocapNETInput)\n",
|
||||
"\n",
|
||||
" # Visualize the results on the image\n",
|
||||
" #image_with_results = Image.fromarray(cv2.cvtColor(annotated_image, cv2.COLOR_BGR2RGB))\n",
|
||||
" \n",
|
||||
" from MocapNETVisualization import visualizeMocapNETEnsemble\n",
|
||||
" image,plotImage = visualizeMocapNETEnsemble(mnet,annotated_image,plotBVHChannels=False)\n",
|
||||
" \n",
|
||||
" show_frame(annotated_image) # it replace previous image\n",
|
||||
" \n",
|
||||
" except Exception as err:\n",
|
||||
" print('Exception:', err)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"#D/L and compile a different version of MocapNET and evaluate it against CMUBVH test dataset\n",
|
||||
"#Running this will take a while, but it is usefult to compare different trained MocapNET Models!\n",
|
||||
"import os\n",
|
||||
"\n",
|
||||
"#Download Test Set!\n",
|
||||
"if (not os.path.isfile(\"dataset/generated/bvh_body_all_test.csv\")):\n",
|
||||
" print(\"Downloading test set!\")\n",
|
||||
" os.system(\"wget http://ammar.gr/datasets/testBody.zip && unzip testBody.zip\")\n",
|
||||
"\n",
|
||||
"#Download a different MocapNET build\n",
|
||||
"!python3 -m getModelFromDatabase --get 319 #<- change number to try a different version\n",
|
||||
"\n",
|
||||
"#Do Evaluation\n",
|
||||
"!python3 -m evaluateMocapNET --config dataset/body_configuration.json --all body --skip 5 --engine onnx > lastEvaluationLog.txt\n",
|
||||
"!tail -n 30 lastEvaluationLog.txt "
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 2,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"text/html": [
|
||||
"<iframe width=\"560\" height=\"315\" src=\"https://youtube.com/embed/ooLRUS5j4AI\"\n",
|
||||
"</iframe>\n"
|
||||
],
|
||||
"text/plain": [
|
||||
"<IPython.core.display.HTML object>"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
"output_type": "display_data"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"%%HTML\n",
|
||||
"<!-- Activate this block to see a youtube video about rendering MocapNET results with Blender -->\n",
|
||||
"<iframe width=\"560\" height=\"315\" src=\"https://youtube.com/embed/ooLRUS5j4AI\"></iframe>"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"\"\"\"\n",
|
||||
"\n",
|
||||
"This library is provided under the FORTH license\n",
|
||||
"https://github.com/FORTH-ModelBasedTracker/MocapNET/blob/master/license.txt\n",
|
||||
"\n",
|
||||
"If you use this version of MocapNET for your research please consider citing : \n",
|
||||
"\n",
|
||||
"@inproceedings{Qammaz2023b,\n",
|
||||
" author = {Qammaz, Ammar and Argyros, Antonis},\n",
|
||||
" title = {A Unified Approach for Occlusion Tolerant 3D Facial Pose Capture and Gaze Estimation using MocapNETs},\n",
|
||||
" booktitle = {International Conference on Computer Vision Workshops (AMFG 2023 - ICCVW 2023), (to appear)},\n",
|
||||
" publisher = {IEEE},\n",
|
||||
" year = {2023},\n",
|
||||
" month = {October},\n",
|
||||
" address = {Paris, France},\n",
|
||||
" projects = {VMWARE,I.C.HUMANS},\n",
|
||||
" pdflink = {http://users.ics.forth.gr/ argyros/mypapers/2023_10_AMFG_Qammaz.pdf}\n",
|
||||
"}\n",
|
||||
"\n",
|
||||
"@inproceedings{Qammaz2021,\n",
|
||||
" author = {Qammaz, Ammar and Argyros, Antonis A},\n",
|
||||
" title = {Towards Holistic Real-time Human 3D Pose Estimation using MocapNETs},\n",
|
||||
" booktitle = {British Machine Vision Conference (BMVC 2021)},\n",
|
||||
" publisher = {BMVA},\n",
|
||||
" year = {2021},\n",
|
||||
" month = {November},\n",
|
||||
" projects = {I.C.HUMANS},\n",
|
||||
" videolink = {https://www.youtube.com/watch?v=aaLOSY_p6Zc}\n",
|
||||
"}\n",
|
||||
"\"\"\" "
|
||||
]
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"colab": {
|
||||
"provenance": []
|
||||
},
|
||||
"kernelspec": {
|
||||
"display_name": "Python 3 (ipykernel)",
|
||||
"language": "python",
|
||||
"name": "python3"
|
||||
},
|
||||
"language_info": {
|
||||
"codemirror_mode": {
|
||||
"name": "ipython",
|
||||
"version": 3
|
||||
},
|
||||
"file_extension": ".py",
|
||||
"mimetype": "text/x-python",
|
||||
"name": "python",
|
||||
"nbconvert_exporter": "python",
|
||||
"pygments_lexer": "ipython3",
|
||||
"version": "3.10.12"
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 1
|
||||
}
|
||||
Executable
+37
@@ -0,0 +1,37 @@
|
||||
#!/bin/bash
|
||||
|
||||
#Reminder , to get a single file out of the repo use "git checkout -- path/to/file.c"
|
||||
|
||||
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||
cd "$DIR"
|
||||
|
||||
#All OpenGL/BVH code relies on RGBDAcquisition code so we need to sync this as well
|
||||
|
||||
|
||||
if [ -f dependencies/RGBDAcquisition/README.md ]; then
|
||||
echo "RGBDAcquisition appears to exist, reverting it .."
|
||||
cd dependencies/RGBDAcquisition
|
||||
git reset --hard HEAD
|
||||
git pull origin master
|
||||
cd "$DIR"
|
||||
else
|
||||
echo "Could not find RGBDAcquisition, please rerun the initialize.sh script .."
|
||||
fi
|
||||
|
||||
|
||||
|
||||
if [ -f dependencies/AmmarServer/README.md ]; then
|
||||
echo "AmmarServer appears to exist, reverting it .."
|
||||
cd dependencies/AmmarServer
|
||||
git reset --hard HEAD
|
||||
git pull origin master
|
||||
cd "$DIR"
|
||||
fi
|
||||
|
||||
|
||||
#Now sync rest of code
|
||||
cd "$DIR"
|
||||
git reset --hard HEAD
|
||||
git pull origin master
|
||||
|
||||
exit 0
|
||||
@@ -0,0 +1,410 @@
|
||||
#!/bin/bash
|
||||
|
||||
|
||||
# Ansi color code variables
|
||||
red="\e[0;91m"
|
||||
blue="\e[0;94m"
|
||||
expand_bg="\e[K"
|
||||
blue_bg="\e[0;104m${expand_bg}"
|
||||
red_bg="\e[0;101m${expand_bg}"
|
||||
green_bg="\e[0;102m${expand_bg}"
|
||||
green="\e[0;92m"
|
||||
white="\e[0;97m"
|
||||
bold="\e[1m"
|
||||
uline="\e[4m"
|
||||
reset="\e[0m"
|
||||
|
||||
|
||||
function checkForError
|
||||
{
|
||||
RESULT=$?
|
||||
if [ $RESULT -eq 0 ]; then
|
||||
echo "Successfully ran the hand pose estimation"
|
||||
else
|
||||
echo -e "${red_bg}TERMINATING SCRIPT${reset}"
|
||||
echo -e "${red}Failed running $1${reset}"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
#We move to the correct directory..
|
||||
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||
cd "$DIR"
|
||||
cd ..
|
||||
|
||||
|
||||
if [ $# -eq 0 ]
|
||||
then
|
||||
echo "No arguments supplied, please run with --quaternions or --euler"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
|
||||
#Setting this to qbvh will activate
|
||||
#quaternion code..!
|
||||
BVH_TYPE="bvh"
|
||||
|
||||
if [ "$1" == "--quaternions" ]; then
|
||||
BVH_TYPE="qbvh"
|
||||
elif [ "$1" == "--euler" ]; then
|
||||
BVH_TYPE="bvh"
|
||||
else
|
||||
echo "You gave arguments but where not what we expected.."
|
||||
exit 0
|
||||
fi
|
||||
|
||||
|
||||
#FULL SIZE EXPERIMENT
|
||||
echo "Doing full size experiment"
|
||||
FULL_RANDOM_POSES="1999999"
|
||||
ZERO_POSES="199999"
|
||||
BASE_POSES="599999"
|
||||
FINGER_POSES="399999"
|
||||
|
||||
#SMALL SIZE (1/2) EXPERIMENT
|
||||
#echo "Doing small (1/2) size experiment"
|
||||
#FULL_RANDOM_POSES="1000000"
|
||||
#ZERO_POSES="100000"
|
||||
#BASE_POSES="300000"
|
||||
#FINGER_POSES="200000"
|
||||
|
||||
|
||||
#SMALL SIZE (1/10) EXPERIMENT
|
||||
#echo "Doing small (1/10) size experiment"
|
||||
#FULL_RANDOM_POSES="199999"
|
||||
#ZERO_POSES="19999"
|
||||
#BASE_POSES="59999"
|
||||
#FINGER_POSES="39999"
|
||||
|
||||
|
||||
|
||||
#BASE_POSES="99999"
|
||||
#FINGER_POSES="19999"
|
||||
|
||||
USE_OCCLUSIONS="" # Set to "--occlusions" for occlusions #deactivated @ 2021-03-05
|
||||
|
||||
USE_END_JOINTS="1" # We need end joints since they are our fingertips..
|
||||
|
||||
#Where is our output located
|
||||
outputDir="dataset/"
|
||||
|
||||
# Use --printparams in view commands to view the commands that are given to the utility at stderr
|
||||
VIEW_COMMANDS=" --printparams "
|
||||
|
||||
HIDEBODY=" $DONT_USE_END_JOINTS 8 abdomen chest eye.r eye.l toe1-2.r toe5-3.r toe1-2.l toe5-3.l"
|
||||
|
||||
SELECT_RHAND="--selectJoints $USE_END_JOINTS 17 rHand finger5-1.r finger5-2.r finger5-3.r finger4-1.r finger4-2.r finger4-3.r finger3-1.r finger3-2.r finger3-3.r finger2-1.r finger2-2.r finger2-3.r rthumbBase rthumb finger1-2.r finger1-3.r --hide2DLocationOfJoints 0 1 rthumbBase"
|
||||
#Note on --hide2DLocationOfJoints: We want to contain these joints in the BVH file and solve them, but they do not correspond to the BODY25 format so we hide them as 2D points..
|
||||
|
||||
SELECT_LHAND="--selectJoints $USE_END_JOINTS 17 lHand finger5-1.l finger5-2.l finger5-3.l finger4-1.l finger4-2.l finger4-3.l finger3-1.l finger3-2.l finger3-3.l finger2-1.l finger2-2.l finger2-3.l lthumbBase lthumb finger1-2.l finger1-3.l --hide2DLocationOfJoints 0 1 lthumbBase"
|
||||
#Note on --hide2DLocationOfJoints: We want to contain these joints in the BVH file and solve them, but they do not correspond to the BODY25 format so we hide them as 2D points..
|
||||
|
||||
# LEFT RIGHT
|
||||
MID_THUMBBASE_Y="63" #Thumb Left/Right -56->48 -48->56
|
||||
MID_FINGER5_1_Y="54" #Pinky Left/Right -10->22 -22->10
|
||||
MID_FINGER4_1_Y="39" #Ring Left/Right -12->12 -12->12
|
||||
MID_FINGER3_1_Y="24" #Mid Left/Right -12->12 -12->12
|
||||
MID_FINGER2_1_Y="24" #Pointer Left/Right -12->12 -12->12
|
||||
|
||||
NATURAL_LHAND="--set 12 -5.0 --set 39 5.0 --set 54 10.5 --set 63 -18"
|
||||
|
||||
NATURAL_RHAND="--set 12 5.0 --set 39 -5.0 --set 54 -10.5 --set 63 18"
|
||||
|
||||
#----------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
#----------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
#----------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
#----------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
|
||||
function generateRightHandDataset
|
||||
{
|
||||
OUTBASE="$1"
|
||||
|
||||
#Make sure file is wiped before
|
||||
#adding new poses..
|
||||
#-------------------------
|
||||
rm $outputDir/2d_$OUTBASE
|
||||
rm $outputDir/bvh_$OUTBASE
|
||||
#-------------------------
|
||||
|
||||
MIN_HAND_DEPTH="$2"
|
||||
MAX_HAND_DEPTH="$3" #1500
|
||||
MIN_RHAND_RZ="$4"
|
||||
MAX_RHAND_RZ="$7"
|
||||
|
||||
MIN_RHAND_RY="$5"
|
||||
MAX_RHAND_RY="$8"
|
||||
|
||||
MIN_RHAND_RX="$6"
|
||||
MAX_RHAND_RX="$9"
|
||||
|
||||
FROM="--haltonerror $VIEW_COMMANDS --from dataset/rhand.$BVH_TYPE"
|
||||
|
||||
RANDOM_POSITION_ROTATION="--randomize2D $MIN_HAND_DEPTH $MAX_HAND_DEPTH $MIN_RHAND_RZ $MIN_RHAND_RY $MIN_RHAND_RX $MAX_RHAND_RZ $MAX_RHAND_RY $MAX_RHAND_RX $USE_OCCLUSIONS"
|
||||
|
||||
OUT="--csv $outputDir $OUTBASE 2d+bvh "
|
||||
|
||||
#RHAND
|
||||
#./BVHGUI2 --from dataset/rhand.qbvh --set 2 -25 --set 3 0.5 --set 4 -0.5 --set 5 0.5 --set 6 -0.5 --set 12 5.0 --set 39 -5.0 --set 54 -10.5 --set 63 18
|
||||
|
||||
echo "TEST?"
|
||||
#New automatic pose generation based on IK Problem..
|
||||
./GroundTruthDumper $FROM $NATURAL_RHAND --repeat $FULL_RANDOM_POSES $SELECT_RHAND --randomizeBasedOnIKConstrains rhand $RANDOM_POSITION_ROTATION $OUT
|
||||
checkForError "rhand full random"
|
||||
|
||||
#Default BVH poses with everything at zero but hand is naturally open
|
||||
./GroundTruthDumper $FROM $NATURAL_RHAND --repeat $BASE_POSES $SELECT_RHAND $RANDOM_POSITION_ROTATION $OUT
|
||||
checkForError "rhand naturally open"
|
||||
|
||||
#Default BVH poses with everything at zero but hand is not naturally open, it is has fingers touching
|
||||
./GroundTruthDumper $FROM --repeat $ZERO_POSES $SELECT_RHAND $RANDOM_POSITION_ROTATION $OUT
|
||||
checkForError "rhand to zero"
|
||||
|
||||
#Default BVH poses with hand naturally open but thumb in the middle
|
||||
./GroundTruthDumper $FROM $NATURAL_RHAND --set 63 -6.5 --set 64 28.7 --set 65 -8.5 --set 66 -37 --set 67 13 --set 68 -7.6 --set 69 22 --set 70 5 --set 71 -43 --set 72 0 --repeat $ZERO_POSES $SELECT_RHAND $RANDOM_POSITION_ROTATION $OUT
|
||||
checkForError "rhand naturally open thumb in the middle"
|
||||
|
||||
#Right hand Thumb Movement on default pose
|
||||
./GroundTruthDumper $FROM $NATURAL_RHAND --repeat $FINGER_POSES $SELECT_RHAND $RANDOM_POSITION_ROTATION --randomizeMID $MID_THUMBBASE_Y -48.0 56.0 $OUT
|
||||
checkForError "Right hand Thumb Movement on default pose"
|
||||
|
||||
#All hand open naturally, only finger 5 (pinky) moving
|
||||
RANDOMIZE_RIGHT_HAND="--/randomizeJointAngles 3 0 65 1 finger5-1.r finger5-2.r finger5-3.r"
|
||||
./GroundTruthDumper $FROM $NATURAL_RHAND --repeat $FINGER_POSES $SELECT_RHAND $RANDOM_POSITION_ROTATION $RANDOMIZE_RIGHT_HAND $OUT
|
||||
checkForError "All hand open naturally, only finger 5 (pinky) moving"
|
||||
|
||||
#All hand open naturally, only finger 4 (ring) moving
|
||||
RANDOMIZE_RIGHT_HAND="--randomizeJointAngles 3 0 65 1 finger4-1.r finger4-2.r finger4-3.r"
|
||||
./GroundTruthDumper $FROM $NATURAL_RHAND --repeat $FINGER_POSES $SELECT_RHAND $RANDOM_POSITION_ROTATION $RANDOMIZE_RIGHT_HAND $OUT
|
||||
checkForError "All hand open naturally, only finger 4 (ring) moving"
|
||||
|
||||
#All hand open naturally, only finger 3 (middle) moving
|
||||
RANDOMIZE_RIGHT_HAND="--randomizeJointAngles 3 0 65 1 finger3-1.r finger3-2.r finger3-3.r"
|
||||
./GroundTruthDumper $FROM $NATURAL_RHAND --repeat $FINGER_POSES $SELECT_RHAND $RANDOM_POSITION_ROTATION $RANDOMIZE_RIGHT_HAND $OUT
|
||||
checkForError "All hand open naturally, only finger 3 (middle) moving"
|
||||
|
||||
#All hand open naturally, only finger 2 (pointer) moving
|
||||
RANDOMIZE_RIGHT_HAND="--randomizeJointAngles 3 0 65 1 finger2-1.r finger2-2.r finger2-3.r"
|
||||
./GroundTruthDumper $FROM $NATURAL_RHAND --repeat $FINGER_POSES $SELECT_RHAND $RANDOM_POSITION_ROTATION $RANDOMIZE_RIGHT_HAND $OUT
|
||||
checkForError "All hand open naturally, only finger 2 (pointer) moving"
|
||||
|
||||
#All hand open naturally, only finger 1 (thumb) moving
|
||||
RANDOMIZE_RIGHT_HAND="--randomizeJointAngles 2 -75 75 2 rthumb finger1-2.r --randomizeJointAngles 1 0 45 3 rthumb"
|
||||
./GroundTruthDumper $FROM $NATURAL_RHAND --repeat $FINGER_POSES $SELECT_RHAND $RANDOM_POSITION_ROTATION $RANDOMIZE_RIGHT_HAND $OUT
|
||||
checkForError "All hand open naturally, only finger 1 (thumb) moving"
|
||||
|
||||
#All fingers closed only thumb moving!
|
||||
RANDOMIZE_RIGHT_HAND="--randomizeJointAngles 15 65 65 1 finger5-1.r finger5-2.r finger5-3.r finger4-1.r finger4-2.r finger4-3.r finger3-1.r finger3-2.r finger3-3.r finger2-1.r finger2-2.r finger2-3.r rthumb finger1-2.r finger1-3.r --randomizeJointAngles 5 90 90 1 finger5-1.r finger4-1.r finger3-1.r finger2-1.r rthumb --randomizeJointAngles 2 -75 75 2 rthumb finger1-2.r --randomizeJointAngles 1 0 45 3 rthumb"
|
||||
./GroundTruthDumper $FROM $NATURAL_RHAND --repeat $FINGER_POSES $SELECT_RHAND $RANDOM_POSITION_ROTATION $RANDOMIZE_RIGHT_HAND $OUT
|
||||
checkForError "RHand - All fingers closed only thumb moving!"
|
||||
|
||||
#All fingers closed except Finger 5 ( pinky )
|
||||
RANDOMIZE_RIGHT_HAND="--randomizeJointAngles 15 65 65 1 finger5-1.r finger5-2.r finger5-3.r finger4-1.r finger4-2.r finger4-3.r finger3-1.r finger3-2.r finger3-3.r finger2-1.r finger2-2.r finger2-3.r rthumb finger1-2.r finger1-3.r --randomizeJointAngles 5 90 90 1 finger5-1.r finger4-1.r finger3-1.r finger2-1.r rthumb --randomizeJointAngles 2 75 75 2 rthumb finger1-2.r --randomizeJointAngles 1 45 45 3 rthumb --randomizeJointAngles 3 0 65 1 finger5-1.r finger5-2.r finger5-3.r"
|
||||
./GroundTruthDumper $FROM $NATURAL_RHAND --repeat $FINGER_POSES $SELECT_RHAND $RANDOM_POSITION_ROTATION $RANDOMIZE_RIGHT_HAND $OUT
|
||||
checkForError "RHand - All fingers closed except Finger 5 ( pinky )"
|
||||
|
||||
#All fingers closed except Finger 4 ( ring )
|
||||
RANDOMIZE_RIGHT_HAND="--randomizeJointAngles 15 65 65 1 finger5-1.r finger5-2.r finger5-3.r finger4-1.r finger4-2.r finger4-3.r finger3-1.r finger3-2.r finger3-3.r finger2-1.r finger2-2.r finger2-3.r rthumb finger1-2.r finger1-3.r --randomizeJointAngles 5 90 90 1 finger5-1.r finger4-1.r finger3-1.r finger2-1.r rthumb --randomizeJointAngles 2 75 75 2 rthumb finger1-2.r --randomizeJointAngles 1 45 45 3 rthumb --randomizeJointAngles 3 0 65 1 finger4-1.r finger4-2.r finger4-3.r"
|
||||
./GroundTruthDumper $FROM $NATURAL_RHAND --repeat $FINGER_POSES $SELECT_RHAND $RANDOM_POSITION_ROTATION $RANDOMIZE_RIGHT_HAND $OUT
|
||||
checkForError "RHand - All fingers closed except Finger 4 ( ring )"
|
||||
|
||||
#All fingers closed except Finger 3 ( middle )
|
||||
RANDOMIZE_RIGHT_HAND="--randomizeJointAngles 15 65 65 1 finger5-1.r finger5-2.r finger5-3.r finger4-1.r finger4-2.r finger4-3.r finger3-1.r finger3-2.r finger3-3.r finger2-1.r finger2-2.r finger2-3.r rthumb finger1-2.r finger1-3.r --randomizeJointAngles 5 90 90 1 finger5-1.r finger4-1.r finger3-1.r finger2-1.r rthumb --randomizeJointAngles 2 75 75 2 rthumb finger1-2.r --randomizeJointAngles 1 45 45 3 rthumb --randomizeJointAngles 3 0 65 1 finger3-1.r finger3-2.r finger3-3.r"
|
||||
./GroundTruthDumper $FROM $NATURAL_RHAND --repeat $FINGER_POSES $SELECT_RHAND $RANDOM_POSITION_ROTATION $RANDOMIZE_RIGHT_HAND $OUT
|
||||
checkForError "RHand - All fingers closed except Finger 3 ( middle )"
|
||||
|
||||
#All fingers closed except Finger 2 ( pointer )
|
||||
RANDOMIZE_RIGHT_HAND="--randomizeJointAngles 15 65 65 1 finger5-1.r finger5-2.r finger5-3.r finger4-1.r finger4-2.r finger4-3.r finger3-1.r finger3-2.r finger3-3.r finger2-1.r finger2-2.r finger2-3.r rthumb finger1-2.r finger1-3.r --randomizeJointAngles 5 90 90 1 finger5-1.r finger4-1.r finger3-1.r finger2-1.r rthumb --randomizeJointAngles 2 75 75 2 rthumb finger1-2.r --randomizeJointAngles 1 45 45 3 rthumb --randomizeJointAngles 3 0 65 1 finger2-1.r finger2-2.r finger2-3.r"
|
||||
./GroundTruthDumper $FROM $NATURAL_RHAND --repeat $FINGER_POSES $SELECT_RHAND $RANDOM_POSITION_ROTATION $RANDOMIZE_RIGHT_HAND $OUT
|
||||
checkForError "RHand - All fingers closed except Finger 2 ( pointer )"
|
||||
|
||||
#Done
|
||||
}
|
||||
|
||||
#----------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
#----------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
#----------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
#----------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
function generateLeftHandDataset
|
||||
{
|
||||
OUTBASE="$1"
|
||||
|
||||
|
||||
#Make sure file is wiped before
|
||||
#adding new poses..
|
||||
#-------------------------
|
||||
rm $outputDir/2d_$OUTBASE
|
||||
rm $outputDir/bvh_$OUTBASE
|
||||
#-------------------------
|
||||
|
||||
MIN_HAND_DEPTH="$2"
|
||||
MAX_HAND_DEPTH="$3" #1500
|
||||
MIN_LHAND_RZ="$4"
|
||||
MAX_LHAND_RZ="$7"
|
||||
|
||||
MIN_LHAND_RY="$5"
|
||||
MAX_LHAND_RY="$8"
|
||||
|
||||
MIN_LHAND_RX="$6"
|
||||
MAX_LHAND_RX="$9"
|
||||
|
||||
FROM="--haltonerror $VIEW_COMMANDS --from dataset/lhand.$BVH_TYPE"
|
||||
|
||||
RANDOM_POSITION_ROTATION="--randomize2D $MIN_HAND_DEPTH $MAX_HAND_DEPTH $MIN_LHAND_RZ $MIN_LHAND_RY $MIN_LHAND_RX $MAX_LHAND_RZ $MAX_LHAND_RY $MAX_LHAND_RX $USE_OCCLUSIONS"
|
||||
|
||||
OUT="--csv $outputDir $OUTBASE 2d+bvh "
|
||||
|
||||
# ./BVHGUI2 --from dataset/lhand.qbvh --set 2 -25 --set 3 0.5 --set 4 -0.5 --set 5 -0.5 --set 6 0.5 --set 12 -5.0 --set 39 5.0 --set 54 10.5 --set 63 -18
|
||||
|
||||
#New automatic pose generation based on IK Problem..
|
||||
./GroundTruthDumper $FROM --repeat $FULL_RANDOM_POSES $SELECT_LHAND --randomizeBasedOnIKConstrains lhand $RANDOM_POSITION_ROTATION $OUT
|
||||
checkForError "lhand full random"
|
||||
|
||||
#Default BVH poses with everything at zero but hand is naturally open
|
||||
./GroundTruthDumper $FROM $NATURAL_LHAND --repeat $BASE_POSES $SELECT_LHAND $RANDOM_POSITION_ROTATION $OUT
|
||||
checkForError "lhand naturally open"
|
||||
|
||||
#Default BVH poses with everything at zero but hand is not naturally open, it is has fingers touching
|
||||
./GroundTruthDumper $FROM --repeat $ZERO_POSES $SELECT_LHAND $RANDOM_POSITION_ROTATION $OUT
|
||||
checkForError "lhand to zero"
|
||||
|
||||
#Default BVH poses with hand naturally open but thumb in the middle
|
||||
./GroundTruthDumper $FROM $NATURAL_LHAND --set 63 6.5 --set 64 -28.7 --set 65 8.5 --set 66 37 --set 67 -13 --set 68 7.6 --set 69 -22 --set 70 -5 --set 71 43 --set 72 0 --repeat $ZERO_POSES $SELECT_LHAND $RANDOM_POSITION_ROTATION $OUT
|
||||
checkForError "lhand naturally open thumb in the middle"
|
||||
|
||||
#Left hand Thumb Movement on default pose
|
||||
./GroundTruthDumper $FROM $NATURAL_LHAND --repeat $FINGER_POSES $SELECT_LHAND $RANDOM_POSITION_ROTATION --randomizeMID $MID_THUMBBASE_Y -56.0 48.0 $OUT
|
||||
checkForError "LHand - Left hand Thumb Movement on default pose"
|
||||
|
||||
#All hand open naturally, only finger 5 (pinky) moving
|
||||
RANDOMIZE_LEFT_HAND="--randomizeJointAngles 3 0 65 1 finger5-1.l finger5-2.l finger5-3.l"
|
||||
./GroundTruthDumper $FROM $NATURAL_LHAND --repeat $FINGER_POSES $SELECT_LHAND $RANDOM_POSITION_ROTATION $RANDOMIZE_LEFT_HAND $OUT
|
||||
checkForError "LHand - All hand open naturally, only finger 5 (pinky) moving"
|
||||
|
||||
#All hand open naturally, only finger 4 (ring) moving
|
||||
RANDOMIZE_LEFT_HAND="--randomizeJointAngles 3 0 65 1 finger4-1.l finger4-2.l finger4-3.l"
|
||||
./GroundTruthDumper $FROM $NATURAL_LHAND --repeat $FINGER_POSES $SELECT_LHAND $RANDOM_POSITION_ROTATION $RANDOMIZE_LEFT_HAND $OUT
|
||||
checkForError "LHand - All hand open naturally, only finger 4 (ring) moving"
|
||||
|
||||
#All hand open naturally, only finger 3 (middle) moving
|
||||
RANDOMIZE_LEFT_HAND="--randomizeJointAngles 3 0 65 1 finger3-1.l finger3-2.l finger3-3.l"
|
||||
./GroundTruthDumper $FROM $NATURAL_LHAND --repeat $FINGER_POSES $SELECT_LHAND $RANDOM_POSITION_ROTATION $RANDOMIZE_LEFT_HAND $OUT
|
||||
checkForError "LHand - All hand open naturally, only finger 3 (middle) moving"
|
||||
|
||||
#All hand open naturally, only finger 2 (pointer) moving
|
||||
RANDOMIZE_LEFT_HAND="--randomizeJointAngles 3 0 65 1 finger2-1.l finger2-2.l finger2-3.l"
|
||||
./GroundTruthDumper $FROM $NATURAL_LHAND --repeat $FINGER_POSES $SELECT_LHAND $RANDOM_POSITION_ROTATION $RANDOMIZE_LEFT_HAND $OUT
|
||||
checkForError "LHand - All hand open naturally, only finger 2 (pointer) moving"
|
||||
|
||||
#All hand open naturally, only finger 1 (thumb) moving
|
||||
RANDOMIZE_LEFT_HAND="--randomizeJointAngles 2 -75 75 2 lthumb finger1-2.l --randomizeJointAngles 1 0 45 3 lthumb"
|
||||
./GroundTruthDumper $FROM $NATURAL_LHAND --repeat $FINGER_POSES $SELECT_LHAND $RANDOM_POSITION_ROTATION $RANDOMIZE_LEFT_HAND $OUT
|
||||
checkForError "LHand - All hand open naturally, only finger 1 (thumb) moving"
|
||||
|
||||
#All fingers closed only thumb Open!
|
||||
RANDOMIZE_LEFT_HAND="--randomizeJointAngles 15 65 65 1 finger5-1.l finger5-2.l finger5-3.l finger4-1.l finger4-2.l finger4-3.l finger3-1.l finger3-2.l finger3-3.l finger2-1.l finger2-2.l finger2-3.l lthumb finger1-2.l finger1-3.l --randomizeJointAngles 5 90 90 1 finger5-1.l finger4-1.l finger3-1.l finger2-1.l lthumb --randomizeJointAngles 2 -75 75 2 lthumb finger1-2.l --randomizeJointAngles 1 0 45 3 lthumb"
|
||||
./GroundTruthDumper $FROM $NATURAL_LHAND --repeat $FINGER_POSES $SELECT_LHAND $RANDOM_POSITION_ROTATION $RANDOMIZE_LEFT_HAND $OUT
|
||||
checkForError "LHand - All fingers closed only thumb Open!"
|
||||
|
||||
#All fingers closed except Finger 5 ( pinky )
|
||||
RANDOMIZE_LEFT_HAND="--randomizeJointAngles 15 65 65 1 finger5-1.l finger5-2.l finger5-3.l finger4-1.l finger4-2.l finger4-3.l finger3-1.l finger3-2.l finger3-3.l finger2-1.l finger2-2.l finger2-3.l lthumb finger1-2.l finger1-3.l --randomizeJointAngles 5 90 90 1 finger5-1.l finger4-1.l finger3-1.l finger2-1.l lthumb --randomizeJointAngles 2 75 75 2 lthumb finger1-2.l --randomizeJointAngles 1 45 45 3 lthumb --randomizeJointAngles 3 0 65 1 finger5-1.l finger5-2.l finger5-3.l"
|
||||
./GroundTruthDumper $FROM $NATURAL_LHAND --repeat $FINGER_POSES $SELECT_LHAND $RANDOM_POSITION_ROTATION $RANDOMIZE_LEFT_HAND $OUT
|
||||
checkForError "LHand - All fingers closed except Finger 5 ( pinky )"
|
||||
|
||||
#All fingers closed except Finger 4 ( ring )
|
||||
RANDOMIZE_LEFT_HAND="--randomizeJointAngles 15 65 65 1 finger5-1.l finger5-2.l finger5-3.l finger4-1.l finger4-2.l finger4-3.l finger3-1.l finger3-2.l finger3-3.l finger2-1.l finger2-2.l finger2-3.l lthumb finger1-2.l finger1-3.l --randomizeJointAngles 5 90 90 1 finger5-1.l finger4-1.l finger3-1.l finger2-1.l lthumb --randomizeJointAngles 2 75 75 2 lthumb finger1-2.l --randomizeJointAngles 1 45 45 3 lthumb --randomizeJointAngles 3 0 65 1 finger4-1.l finger4-2.l finger4-3.l"
|
||||
./GroundTruthDumper $FROM $NATURAL_LHAND --repeat $FINGER_POSES $SELECT_LHAND $RANDOM_POSITION_ROTATION $RANDOMIZE_LEFT_HAND $OUT
|
||||
checkForError "LHand - All fingers closed except Finger 4 ( ring )"
|
||||
|
||||
#All fingers closed except Finger 3 ( middle )
|
||||
RANDOMIZE_LEFT_HAND="--randomizeJointAngles 15 65 65 1 finger5-1.l finger5-2.l finger5-3.l finger4-1.l finger4-2.l finger4-3.l finger3-1.l finger3-2.l finger3-3.l finger2-1.l finger2-2.l finger2-3.l lthumb finger1-2.l finger1-3.l --randomizeJointAngles 5 90 90 1 finger5-1.l finger4-1.l finger3-1.l finger2-1.l lthumb --randomizeJointAngles 2 75 75 2 lthumb finger1-2.l --randomizeJointAngles 1 45 45 3 lthumb --randomizeJointAngles 3 0 65 1 finger3-1.l finger3-2.l finger3-3.l"
|
||||
./GroundTruthDumper $FROM $NATURAL_LHAND --repeat $FINGER_POSES $SELECT_LHAND $RANDOM_POSITION_ROTATION $RANDOMIZE_LEFT_HAND $OUT
|
||||
checkForError "LHand - All fingers closed except Finger 3 ( middle )"
|
||||
|
||||
#All fingers closed except Finger 2 ( pointer )
|
||||
RANDOMIZE_LEFT_HAND="--randomizeJointAngles 15 65 65 1 finger5-1.l finger5-2.l finger5-3.l finger4-1.l finger4-2.l finger4-3.l finger3-1.l finger3-2.l finger3-3.l finger2-1.l finger2-2.l finger2-3.l lthumb finger1-2.l finger1-3.l --randomizeJointAngles 5 90 90 1 finger5-1.l finger4-1.l finger3-1.l finger2-1.l lthumb --randomizeJointAngles 2 75 75 2 lthumb finger1-2.l --randomizeJointAngles 1 45 45 3 lthumb --randomizeJointAngles 3 0 65 1 finger2-1.l finger2-2.l finger2-3.l"
|
||||
./GroundTruthDumper $FROM $NATURAL_LHAND --repeat $FINGER_POSES $SELECT_LHAND $RANDOM_POSITION_ROTATION $RANDOMIZE_LEFT_HAND $OUT
|
||||
checkForError "LHand - All fingers closed except Finger 2 ( pointer )"
|
||||
|
||||
#Done
|
||||
|
||||
#Let's count it and store the numbers so we don't have to spam disk reads on every training..
|
||||
wc -l $outputDir/2d_$1 > $outputDir/count_$1
|
||||
#wc -l $outputDir/3d_$1 > $outputDir/count_$1
|
||||
wc -l $outputDir/bvh_$1 > $outputDir/count_$1
|
||||
}
|
||||
|
||||
|
||||
#----------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
#----------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
#----------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
#----------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
|
||||
# ./BVHGUI2 --from dataset/lhand.$BVH_TYPE --set 3 -90 --set 4 0 --set 5 -135
|
||||
|
||||
|
||||
|
||||
MIN_HAND_DEPTH="200"
|
||||
MAX_HAND_DEPTH="2000" #1500
|
||||
|
||||
|
||||
MIN_HAND_RZ="-90"
|
||||
MAX_HAND_RZ="-90"
|
||||
|
||||
MIN_HAND_RY="-50"
|
||||
MAX_HAND_RY="50"
|
||||
|
||||
#If we have a quaternion we can handle all orientations!
|
||||
if [ "$1" == "--quaternions" ]; then
|
||||
MIN_HAND_RZ="-179.9"
|
||||
MAX_HAND_RZ="179.9"
|
||||
|
||||
MIN_HAND_RY="-179.9"
|
||||
MAX_HAND_RY="179.9"
|
||||
fi
|
||||
|
||||
|
||||
MIN_HAND_RX="-179.9"
|
||||
MAX_HAND_RX="179.9"
|
||||
|
||||
|
||||
generateLeftHandDataset lhand_all.csv $MIN_HAND_DEPTH $MAX_HAND_DEPTH $MIN_HAND_RZ $MIN_HAND_RY $MIN_HAND_RX $MAX_HAND_RZ $MAX_HAND_RY $MAX_HAND_RX
|
||||
#./ReshapeCSV --from dataset/bvh_lhand_all.csv --faces 20 > dataset/category_lhand_all.csv
|
||||
|
||||
generateRightHandDataset rhand_all.csv $MIN_HAND_DEPTH $MAX_HAND_DEPTH $MIN_HAND_RZ $MIN_HAND_RY $MIN_HAND_RX $MAX_HAND_RZ $MAX_HAND_RY $MAX_HAND_RX
|
||||
#./ReshapeCSV --from dataset/bvh_rhand_all.csv --faces 20 > dataset/category_rhand_all.csv
|
||||
|
||||
echo "Done Generating Hands.."
|
||||
|
||||
exit 0
|
||||
|
||||
MIN_HAND_RX="-135"
|
||||
MAX_HAND_RX="-45"
|
||||
generateRightHandDataset rhand_front.csv $MIN_HAND_DEPTH $MAX_HAND_DEPTH $MIN_HAND_RZ $MIN_HAND_RY $MIN_HAND_RX $MAX_HAND_RZ $MAX_HAND_RY $MAX_HAND_RX
|
||||
generateLeftHandDataset lhand_front.csv $MIN_HAND_DEPTH $MAX_HAND_DEPTH $MIN_HAND_RZ $MIN_HAND_RY $MIN_HAND_RX $MAX_HAND_RZ $MAX_HAND_RY $MAX_HAND_RX
|
||||
|
||||
MIN_HAND_RX="45"
|
||||
MAX_HAND_RX="135"
|
||||
generateRightHandDataset rhand_back.csv $MIN_HAND_DEPTH $MAX_HAND_DEPTH $MIN_HAND_RZ $MIN_HAND_RY $MIN_HAND_RX $MAX_HAND_RZ $MAX_HAND_RY $MAX_HAND_RX
|
||||
generateLeftHandDataset lhand_back.csv $MIN_HAND_DEPTH $MAX_HAND_DEPTH $MIN_HAND_RZ $MIN_HAND_RY $MIN_HAND_RX $MAX_HAND_RZ $MAX_HAND_RY $MAX_HAND_RX
|
||||
|
||||
MIN_HAND_RX="-45"
|
||||
MAX_HAND_RX="45"
|
||||
generateRightHandDataset rhand_left.csv $MIN_HAND_DEPTH $MAX_HAND_DEPTH $MIN_HAND_RZ $MIN_HAND_RY $MIN_HAND_RX $MAX_HAND_RZ $MAX_HAND_RY $MAX_HAND_RX
|
||||
generateLeftHandDataset lhand_left.csv $MIN_HAND_DEPTH $MAX_HAND_DEPTH $MIN_HAND_RZ $MIN_HAND_RY $MIN_HAND_RX $MAX_HAND_RZ $MAX_HAND_RY $MAX_HAND_RX
|
||||
|
||||
MIN_HAND_RX="135"
|
||||
MAX_HAND_RX="225"
|
||||
generateRightHandDataset rhand_right.csv $MIN_HAND_DEPTH $MAX_HAND_DEPTH $MIN_HAND_RZ $MIN_HAND_RY $MIN_HAND_RX $MAX_HAND_RZ $MAX_HAND_RY $MAX_HAND_RX
|
||||
generateLeftHandDataset lhand_right.csv $MIN_HAND_DEPTH $MAX_HAND_DEPTH $MIN_HAND_RZ $MIN_HAND_RY $MIN_HAND_RX $MAX_HAND_RZ $MAX_HAND_RY $MAX_HAND_RX
|
||||
#--svg tmp/ --bvh randomRHand.$BVH_TYPE
|
||||
#----------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
#----------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
#----------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
#----------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
|
||||
exit 0
|
||||
@@ -0,0 +1,320 @@
|
||||
#!/bin/bash
|
||||
|
||||
#Colors for easier output
|
||||
red=$(printf "\033[31m")
|
||||
green=$(printf "\033[32m")
|
||||
yellow=$(printf "\033[33m")
|
||||
blue=$(printf "\033[34m")
|
||||
magenta=$(printf "\033[35m")
|
||||
cyan=$(printf "\033[36m")
|
||||
white=$(printf "\033[37m")
|
||||
normal=$(printf "\033[m")
|
||||
|
||||
#We can use R to gather statistics about the generated ground truth..
|
||||
if ! [ -x "$(command -v R)" ]; then
|
||||
echo 'Warning: R is not installed.' >&2
|
||||
sudo apt-get install r-base
|
||||
fi
|
||||
|
||||
function getStatistics
|
||||
{
|
||||
#use R to generate statistics
|
||||
#sudo apt-get install r-base
|
||||
R -q -e "x <- read.csv('$1', header = T); summary(x); sd(x[ , 1])" > $2
|
||||
cat $1 | wc -l >> $2
|
||||
}
|
||||
|
||||
|
||||
#We move to the correct directory..
|
||||
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||
cd "$DIR"
|
||||
cd ..
|
||||
|
||||
|
||||
|
||||
#Where is our datasets located, compared to the current directory..
|
||||
datasetDir="dataset/MotionCapture"
|
||||
#MocapNET1 -> datasetSubDir="01 02 03 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19"
|
||||
datasetSubDir="h36 01 02 03 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 45 46 47 49 54 55 56 60 61 62 63 64 69 70 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 93 94 102 103 104 105 106 107 108 111 113 114 115 117 118 120 121 122 123 124 125 126 127 128 131 132 133 134 135 136 137 138 139 140 141 142 143 144"
|
||||
#datasetSubDir="h36"
|
||||
|
||||
#Where is our output located
|
||||
outputDir="dataset/"
|
||||
|
||||
|
||||
# Use --printparams in view commands to view the commands that are given to the utility at stderr
|
||||
VIEW_COMMANDS=" "
|
||||
|
||||
RAND_UPPER_BODY="--perturbJointAngles 2 30.0 rshoulder lshoulder --perturbJointAngles 2 16.0 relbow lelbow --perturbJointAngles 2 10.0 abdomen chest"
|
||||
RAND_LOWER_BODY="--perturbJointAngles 2 30.0 rhip lhip --perturbJointAngles 4 10.0 lknee rknee lfoot rfoot --perturbJointAngles 2 10.0 abdomen chest"
|
||||
|
||||
|
||||
RANDOMIZE_LEFT_HAND="--randomizeJointAngles 15 -65 0 1 finger5-1.l finger5-2.l finger5-3.l finger4-1.l finger4-2.l finger4-3.l finger3-1.l finger3-2.l finger3-3.l finger2-1.l finger2-2.l finger2-3.l lthumb finger1-2.l finger1-3.l --randomizeJointAngles 5 -90 0 1 finger5-1.l finger4-1.l finger3-1.l finger2-1.l lthumb --randomizeJointAngles 2 -75 75 2 lthumb finger1-2.l --randomizeJointAngles 1 -45 0 3 lthumb"
|
||||
RANDOMIZE_RIGHT_HAND="--randomizeJointAngles 15 0 65 1 finger5-1.r finger5-2.r finger5-3.r finger4-1.r finger4-2.r finger4-3.r finger3-1.r finger3-2.r finger3-3.r finger2-1.r finger2-2.r finger2-3.r rthumb finger1-2.r finger1-3.r --randomizeJointAngles 5 0 90 1 finger5-1.r finger4-1.r finger3-1.r finger2-1.r rthumb --randomizeJointAngles 2 -75 75 2 rthumb finger1-2.r --randomizeJointAngles 1 0 45 3 rthumb"
|
||||
|
||||
FILTER_OUT_POSES_WITH_HANDS_IN_SIDE="--filterout 0 0 -130.0 0 90 0 1920 1080 570.7 570.3 6 rhand lhip 0 120 rhand rhip 0 120 rhand lhand 0 150 lhand rhip 0 120 lhand lhip 0 120 lhand rhand 0 150"
|
||||
#FILTER_OUT_POSES_WITH_HANDS_IN_SIDE=" "
|
||||
|
||||
DONT_USE_END_JOINTS="0"
|
||||
USE_END_JOINTS="1"
|
||||
|
||||
HIDEBODY="--hide2DLocationOfJoints $DONT_USE_END_JOINTS 8 abdomen chest eye.r eye.l toe1-2.r toe5-3.r toe1-2.l toe5-3.l" #We want to contain these joints in the BVH file and solve them, but they do not correspond to the BODY25 format so we hide them as 2D points..
|
||||
SELECTBODY="--selectJoints $USE_END_JOINTS 23 hip eye.r eye.l abdomen chest neck head rshoulder relbow rhand lshoulder lelbow lhand rhip rknee rfoot lhip lknee lfoot toe1-2.r toe5-3.r toe1-2.l toe5-3.l $HIDEBODY"
|
||||
|
||||
|
||||
HIDEUPPERBODY="--hide2DLocationOfJoints $DONT_USE_END_JOINTS 4 abdomen chest eye.r eye.l" #We want to contain these joints in the BVH file and solve them, but they do not correspond to the BODY25 format so we hide them as 2D points..
|
||||
SELECTUPPERBODY="--selectJoints $USE_END_JOINTS 13 hip eye.r eye.l abdomen chest neck head rshoulder relbow rhand lshoulder lelbow lhand $HIDEUPPERBODY"
|
||||
|
||||
HIDELOWERBODY="--hide2DLocationOfJoints $DONT_USE_END_JOINTS 6 abdomen chest toe1-2.r toe5-3.r toe1-2.l toe5-3.l"
|
||||
SELECTLOWERBODY="--selectJoints $USE_END_JOINTS 14 hip abdomen chest neck rhip rknee rfoot lhip lknee lfoot toe1-2.r toe5-3.r toe1-2.l toe5-3.l $HIDELOWERBODY"
|
||||
|
||||
|
||||
|
||||
SELECT_RHAND="--selectJoints $USE_END_JOINTS 16 rhand finger5-1.r finger5-2.r finger5-3.r finger4-1.r finger4-2.r finger4-3.r finger3-1.r finger3-2.r finger3-3.r finger2-1.r finger2-2.r finger2-3.r rthumb finger1-2.r finger1-3.r"
|
||||
|
||||
SELECT_LHAND="--selectJoints $USE_END_JOINTS 16 lhand finger5-1.l finger5-2.l finger5-3.l finger4-1.l finger4-2.l finger4-3.l finger3-1.l finger3-2.l finger3-3.l finger2-1.l finger2-2.l finger2-3.l lthumb finger1-2.l finger1-3.l"
|
||||
|
||||
#FAR
|
||||
MIN_DEPTH="900" #1000 original
|
||||
MAX_DEPTH="4500" #3000 is too small
|
||||
|
||||
|
||||
ITERATIONS="1" #Smallest size..
|
||||
#ITERATIONS="2" #float32 targeting 16GB RAM
|
||||
#ITERATIONS="8" #float16 targeting 16GB RAM
|
||||
|
||||
|
||||
|
||||
#Get number of bytes in RAM
|
||||
RAM=`free | grep Mem | tr -s ' '| cut -f2 -d ' '`
|
||||
|
||||
if [ "$RAM" -gt "11286464" ]; then
|
||||
echo "More than 12GB";
|
||||
ITERATIONS="0"
|
||||
fi
|
||||
if [ "$RAM" -gt "15297500" ]; then
|
||||
echo "More than 16GB";
|
||||
ITERATIONS="1"
|
||||
fi
|
||||
if [ "$RAM" -gt "31861780" ]; then
|
||||
echo "More than 32GB";
|
||||
ITERATIONS="2"
|
||||
fi
|
||||
|
||||
#Uncomment next line to override settings and make the
|
||||
#minimum training set for development
|
||||
#ITERATIONS="0"
|
||||
|
||||
|
||||
totaldatasetsToGo=`echo "$datasetSubDir" | awk '{print NF}'`
|
||||
|
||||
|
||||
function generateDataset
|
||||
{
|
||||
datasetsProcessed=0
|
||||
rm $outputDir/$1
|
||||
rm $outputDir/count_$1
|
||||
rm $outputDir/2d_$1
|
||||
#rm $outputDir/3d_$1
|
||||
rm $outputDir/bvh_$1
|
||||
for d in $datasetSubDir
|
||||
do
|
||||
if [ -d $datasetDir/$d ]
|
||||
then
|
||||
echo "Generating $1 - $green Found $d directory $normal"
|
||||
datasetFile=`ls $datasetDir/$d | grep bvh`
|
||||
((datasetsProcessed++))
|
||||
#-------------------------------------------------------
|
||||
|
||||
for f in $datasetFile
|
||||
do
|
||||
echo "$green Generating $1 - $datasetsProcessed/$totaldatasetsToGo - $datasetDir/$d/$f file $normal"
|
||||
#||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||
BVHFILE="$datasetDir/$d/$f" # --svg $outputDir
|
||||
./GroundTruthDumper $VIEW_COMMANDS --haltonerror --from $BVHFILE --filtergimballocks 4 $3 --repeat $ITERATIONS $2 --occlusions --csv $outputDir $1 2d+bvh # --bvh $outputDir/$f-random.bvh
|
||||
#||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||
done
|
||||
|
||||
#-------------------------------------------------------
|
||||
else
|
||||
echo "$red Could not find $d directory $normal"
|
||||
fi
|
||||
done
|
||||
|
||||
#Let's count it and store the numbers so we don't have to spam disk reads on every training..
|
||||
wc -l $outputDir/2d_$1 > $outputDir/count_$1
|
||||
#wc -l $outputDir/3d_$1 >> $outputDir/count_$1
|
||||
wc -l $outputDir/bvh_$1 >> $outputDir/count_$1
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
#------------------------------------------------------------------------------------------------------------
|
||||
# MocapNET 1
|
||||
# \ /
|
||||
# \ BACK /
|
||||
# \ /
|
||||
# BACK \ / BACK
|
||||
# \/
|
||||
#-----------/\-------------
|
||||
# / \
|
||||
# FRONT / \ FRONT
|
||||
# / FRONT \
|
||||
# / \
|
||||
|
||||
#Old way to do that ( works if you don't go very far in depth )
|
||||
#------------------------------------------------------------------------------------------------------------
|
||||
#MINIMUM_POSITION="-1400 -300 $MIN_DEPTH"
|
||||
#MINIMUM_ROTATION="-25 -178 -35"
|
||||
#MAXIMUM_POSITION="1400 300 $MAX_DEPTH"
|
||||
#MAXIMUM_ROTATION="25 178 35"
|
||||
#generateDataset dataBack.csv "--flipRandomizationOrientation --randomizeranges $MINIMUM_POSITION -35 -179.999999 -35 $MAXIMUM_POSITION 35 -90 35 $MINIMUM_POSITION -35 90 -35 $MAXIMUM_POSITION 35 180 35"
|
||||
#generateDataset dataAll.csv "--randomize $MINIMUM_POSITION -35 -179.999999 -35 $MAXIMUM_POSITION 35 180 35"
|
||||
#generateDataset dataFront.csv "--randomize $MINIMUM_POSITION -35 -90 -35 $MAXIMUM_POSITION 35 90 35"
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#------------------------------------------------------------------------------------------------------------
|
||||
#New extra extra fine detail rotated by 45 degrees
|
||||
# \ /
|
||||
# \ BACK /
|
||||
# \ /
|
||||
# \ /
|
||||
# \/
|
||||
# LEFT /\ RIGHT
|
||||
# / \
|
||||
# / \
|
||||
# / FRONT \
|
||||
# / \
|
||||
#------------------------------------------------------------------------------------------------------------
|
||||
|
||||
|
||||
MIN_LIM="-45"
|
||||
MAX_LIM="45"
|
||||
|
||||
|
||||
#I have added 20 degrees on every limit more than the default
|
||||
#to have some overlap and redundancy when switching between datasets
|
||||
#---------------------------
|
||||
FRONT_MIN_ORIENTATION="-55" #-45 default , -55 with 10 deg safety
|
||||
FRONT_MAX_ORIENTATION="55" # 45 default , 55 with 10 deg safety
|
||||
#---------------------------
|
||||
BACK_MIN_ORIENTATION="125" # 135 default , 125 with 10 deg safety
|
||||
BACK_MAX_ORIENTATION="235" # 225 default , 235 with 10 deg safety
|
||||
#---------------------------
|
||||
LEFT_MIN_ORIENTATION="-145" #-135 default
|
||||
LEFT_MAX_ORIENTATION="-35" #-45 default
|
||||
#---------------------------
|
||||
RIGHT_MIN_ORIENTATION="35" # 45 default
|
||||
RIGHT_MAX_ORIENTATION="145" # 135 default
|
||||
|
||||
# $FILTER_OUT_POSES_WITH_HANDS_IN_SIDE
|
||||
#rm $outputDir/2d_filteredPosesRHand.csv
|
||||
#rm $outputDir/bvh_filteredPosesRHand.csv
|
||||
#./GroundTruthDumper --haltonerror --filtergimballocks --from filteredPosesRHand.bvh $SELECTUPPERBODY $RAND_UPPER_BODY --csvOrientation front --randomize2D $MIN_DEPTH $MAX_DEPTH -10 -45 -0 10 45 10 $SELECTUPPERBODY --occlusions --csv $outputDir #filteredPosesRHand.csv 2d+bvh
|
||||
#exit 0
|
||||
|
||||
FILTER_OUT="$FILTER_OUT_POSES_WITH_HANDS_IN_SIDE"
|
||||
|
||||
#UPPER BODY
|
||||
generateDataset upperbody_all.csv "$FILTER_OUT --randomize2D $MIN_DEPTH $MAX_DEPTH $MIN_LIM -179.999999 $MIN_LIM $MAX_LIM 180 $MAX_LIM" "$SELECTUPPERBODY"
|
||||
./ReshapeCSV dataset/bvh_upperbody_all.csv > dataset/category_upperbody_all.csv
|
||||
echo "Category size = "#cat dataset/category_upperbody_all.csv | wc -c
|
||||
#-----------------------------------------------
|
||||
generateDataset upperbody_front.csv "$FILTER_OUT --csvOrientation front --randomize2D $MIN_DEPTH $MAX_DEPTH $MIN_LIM $FRONT_MIN_ORIENTATION $MIN_LIM $MAX_LIM $FRONT_MAX_ORIENTATION $MAX_LIM" "$SELECTUPPERBODY $RAND_UPPER_BODY"
|
||||
generateDataset upperbody_back.csv "$FILTER_OUT --csvOrientation back --randomize2D $MIN_DEPTH $MAX_DEPTH $MIN_LIM $BACK_MIN_ORIENTATION $MIN_LIM $MAX_LIM $BACK_MAX_ORIENTATION $MAX_LIM" "$SELECTUPPERBODY $RAND_UPPER_BODY"
|
||||
generateDataset upperbody_left.csv "$FILTER_OUT --csvOrientation left --randomize2D $MIN_DEPTH $MAX_DEPTH $MIN_LIM $LEFT_MIN_ORIENTATION $MIN_LIM $MAX_LIM $LEFT_MAX_ORIENTATION $MAX_LIM" "$SELECTUPPERBODY $RAND_UPPER_BODY"
|
||||
generateDataset upperbody_right.csv "$FILTER_OUT --csvOrientation right --randomize2D $MIN_DEPTH $MAX_DEPTH $MIN_LIM $RIGHT_MIN_ORIENTATION $MIN_LIM $MAX_LIM $RIGHT_MAX_ORIENTATION $MAX_LIM" "$SELECTUPPERBODY $RAND_UPPER_BODY"
|
||||
|
||||
|
||||
#LOWER BODY
|
||||
generateDataset lowerbody_all.csv "--randomize2D $MIN_DEPTH $MAX_DEPTH $MIN_LIM -179.999999 $MIN_LIM $MAX_LIM 180 $MAX_LIM" "$SELECTLOWERBODY"
|
||||
./ReshapeCSV dataset/bvh_lowerbody_all.csv > dataset/category_lowerbody_all.csv
|
||||
echo "Category size = "
|
||||
cat dataset/category_lowerbody_all.csv | wc -c
|
||||
#-----------------------------------------------
|
||||
generateDataset lowerbody_front.csv "--csvOrientation front --randomize2D $MIN_DEPTH $MAX_DEPTH $MIN_LIM $FRONT_MIN_ORIENTATION $MIN_LIM $MAX_LIM $FRONT_MAX_ORIENTATION $MAX_LIM" "$SELECTLOWERBODY $RAND_LOWER_BODY"
|
||||
generateDataset lowerbody_back.csv "--csvOrientation back --randomize2D $MIN_DEPTH $MAX_DEPTH $MIN_LIM $BACK_MIN_ORIENTATION $MIN_LIM $MAX_LIM $BACK_MAX_ORIENTATION $MAX_LIM" "$SELECTLOWERBODY $RAND_LOWER_BODY"
|
||||
generateDataset lowerbody_left.csv "--csvOrientation left --randomize2D $MIN_DEPTH $MAX_DEPTH $MIN_LIM $LEFT_MIN_ORIENTATION $MIN_LIM $MAX_LIM $LEFT_MAX_ORIENTATION $MAX_LIM" "$SELECTLOWERBODY $RAND_LOWER_BODY"
|
||||
generateDataset lowerbody_right.csv "--csvOrientation right --randomize2D $MIN_DEPTH $MAX_DEPTH $MIN_LIM $RIGHT_MIN_ORIENTATION $MIN_LIM $MAX_LIM $RIGHT_MAX_ORIENTATION $MAX_LIM" "$SELECTLOWERBODY $RAND_LOWER_BODY"
|
||||
|
||||
|
||||
exit 0 # <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <>
|
||||
|
||||
#This is a better hand dataset generator that ignores poses
|
||||
./createRandomHandDataset.sh
|
||||
|
||||
exit 0 # <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <>
|
||||
|
||||
#This hand is just based on CMU poses
|
||||
#LEFT HAND
|
||||
generateDataset lhand_front.csv "--csvOrientation front --randomize2D $MIN_DEPTH $MAX_DEPTH $MIN_LIM $FRONT_MIN_ORIENTATION $MIN_LIM $MAX_LIM $FRONT_MAX_ORIENTATION $MAX_LIM" "$SELECT_LHAND $RANDOMIZE_LEFT_HAND"
|
||||
generateDataset lhand_back.csv "--csvOrientation back --randomize2D $MIN_DEPTH $MAX_DEPTH $MIN_LIM $BACK_MIN_ORIENTATION $MIN_LIM $MAX_LIM $BACK_MAX_ORIENTATION $MAX_LIM" "$SELECT_LHAND $RANDOMIZE_LEFT_HAND"
|
||||
generateDataset lhand_left.csv "--csvOrientation left --randomize2D $MIN_DEPTH $MAX_DEPTH $MIN_LIM $LEFT_MIN_ORIENTATION $MIN_LIM $MAX_LIM $LEFT_MAX_ORIENTATION $MAX_LIM" "$SELECT_LHAND $RANDOMIZE_LEFT_HAND"
|
||||
generateDataset lhand_right.csv "--csvOrientation right --randomize2D $MIN_DEPTH $MAX_DEPTH $MIN_LIM $RIGHT_MIN_ORIENTATION $MIN_LIM $MAX_LIM $RIGHT_MAX_ORIENTATION $MAX_LIM" "$SELECT_LHAND $RANDOMIZE_LEFT_HAND"
|
||||
|
||||
#RIGHT HAND
|
||||
generateDataset rhand_front.csv "--csvOrientation front --randomize2D $MIN_DEPTH $MAX_DEPTH $MIN_LIM $FRONT_MIN_ORIENTATION $MIN_LIM $MAX_LIM $FRONT_MAX_ORIENTATION $MAX_LIM" "$SELECT_RHAND $RANDOMIZE_RIGHT_HAND"
|
||||
generateDataset rhand_back.csv "--csvOrientation back --randomize2D $MIN_DEPTH $MAX_DEPTH $MIN_LIM $BACK_MIN_ORIENTATION $MIN_LIM $MAX_LIM $BACK_MAX_ORIENTATION $MAX_LIM" "$SELECT_RHAND $RANDOMIZE_RIGHT_HAND"
|
||||
generateDataset rhand_left.csv "--csvOrientation left --randomize2D $MIN_DEPTH $MAX_DEPTH $MIN_LIM $LEFT_MIN_ORIENTATION $MIN_LIM $MAX_LIM $LEFT_MAX_ORIENTATION $MAX_LIM" "$SELECT_RHAND $RANDOMIZE_RIGHT_HAND"
|
||||
generateDataset rhand_right.csv "--csvOrientation right --randomize2D $MIN_DEPTH $MAX_DEPTH $MIN_LIM $RIGHT_MIN_ORIENTATION $MIN_LIM $MAX_LIM $RIGHT_MAX_ORIENTATION $MAX_LIM" "$SELECT_RHAND $RANDOMIZE_RIGHT_HAND"
|
||||
|
||||
|
||||
exit 0 # <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <>
|
||||
|
||||
|
||||
#WHOLE BODY AT ONCE
|
||||
generateDataset body_all.csv "$FILTER_OUT --randomize2D $MIN_DEPTH $MAX_DEPTH $MIN_LIM -179.999999 $MIN_LIM $MAX_LIM 180 $MAX_LIM" "$SELECTBODY"
|
||||
./ReshapeCSV dataset/bvh_body_all.csv > dataset/category_body_all.csv
|
||||
echo "Category size = "
|
||||
cat dataset/category_body_all.csv | wc -c
|
||||
#-----------------------------------------------
|
||||
generateDataset body_front.csv "$FILTER_OUT --csvOrientation front --randomize2D $MIN_DEPTH $MAX_DEPTH $MIN_LIM $FRONT_MIN_ORIENTATION $MIN_LIM $MAX_LIM $FRONT_MAX_ORIENTATION $MAX_LIM" "$SELECTBODY"
|
||||
generateDataset body_back.csv "$FILTER_OUT --csvOrientation back --randomize2D $MIN_DEPTH $MAX_DEPTH $MIN_LIM $BACK_MIN_ORIENTATION $MIN_LIM $MAX_LIM $BACK_MAX_ORIENTATION $MAX_LIM" "$SELECTBODY"
|
||||
generateDataset body_left.csv "$FILTER_OUT --csvOrientation left --randomize2D $MIN_DEPTH $MAX_DEPTH $MIN_LIM $LEFT_MIN_ORIENTATION $MIN_LIM $MAX_LIM $LEFT_MAX_ORIENTATION $MAX_LIM" "$SELECTBODY"
|
||||
generateDataset body_right.csv "$FILTER_OUT --csvOrientation right --randomize2D $MIN_DEPTH $MAX_DEPTH $MIN_LIM $RIGHT_MIN_ORIENTATION $MIN_LIM $MAX_LIM $RIGHT_MAX_ORIENTATION $MAX_LIM" "$SELECTBODY"
|
||||
|
||||
exit 0 # <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <>
|
||||
|
||||
|
||||
echo "Getting statistics for front view.."
|
||||
cat dataset/bvh_body_front.csv | cut -d',' -f 5 > frontOrientations
|
||||
getStatistics frontOrientations dataset/bvh_body_front_statistics.txt
|
||||
cat dataset/bvh_body_front_statistics.txt
|
||||
rm frontOrientations
|
||||
|
||||
echo "Getting statistics for back view.."
|
||||
cat dataset/bvh_body_back.csv | cut -d',' -f 5 > backOrientations
|
||||
getStatistics backOrientations dataset/bvh_body_back_statistics.txt
|
||||
cat dataset/bvh_body_back_statistics.txt
|
||||
rm backOrientations
|
||||
|
||||
echo "Getting statistics for left view.."
|
||||
cat dataset/bvh_body_left.csv | cut -d',' -f 5 > leftOrientations
|
||||
getStatistics leftOrientations dataset/bvh_body_left_statistics.txt
|
||||
cat dataset/bvh_body_left_statistics.txt
|
||||
rm leftOrientations
|
||||
|
||||
echo "Getting statistics for right view.."
|
||||
cat dataset/bvh_body_right.csv | cut -d',' -f 5 > rightOrientations
|
||||
getStatistics rightOrientations dataset/bvh_body_right_statistics.txt
|
||||
cat dataset/bvh_body_right_statistics.txt
|
||||
rm rightOrientations
|
||||
|
||||
echo "Getting statistics for all view.."
|
||||
cat dataset/bvh_body_all.csv | cut -d',' -f 5 > allOrientations
|
||||
getStatistics allOrientations dataset/bvh_body_all_statistics.txt
|
||||
cat dataset/bvh_body_all_statistics.txt
|
||||
rm allOrientations
|
||||
|
||||
|
||||
|
||||
|
||||
echo "Done.."
|
||||
exit 0
|
||||
+67
@@ -0,0 +1,67 @@
|
||||
#!/bin/bash
|
||||
|
||||
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||
cd "$DIR"
|
||||
cd ..
|
||||
|
||||
red=$(printf "\033[31m")
|
||||
green=$(printf "\033[32m")
|
||||
yellow=$(printf "\033[33m")
|
||||
blue=$(printf "\033[34m")
|
||||
magenta=$(printf "\033[35m")
|
||||
cyan=$(printf "\033[36m")
|
||||
white=$(printf "\033[37m")
|
||||
normal=$(printf "\033[m")
|
||||
|
||||
SELECTBODY="--selectJoints 21 hip abdomen chest neck head rcollar rshoulder relbow rhand lcollar lshoulder lelbow lhand rhip rknee rfoot lhip lknee lfoot toe3-2.r toe3-2.l"
|
||||
SELECTRHAND="--selectJoints 11 rhand rthumb1 rthumb2 rindex1 rindex2 rmid1 rmid2 rring1 rring2 rpinky1 rpinky2"
|
||||
SELECTLHAND="--selectJoints 11 lhand lthumb1 lthumb2 lindex1 lindex2 lmid1 lmid2 lring1 lring2 lpinky1 lpinky2"
|
||||
|
||||
datasetDir="dataset/MotionCapture"
|
||||
datasetSubDir="01 02 03 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19"
|
||||
outputDir="dataset/"
|
||||
|
||||
rm $outputDir/2d_body_test.csv
|
||||
rm $outputDir/3d_body_test.csv
|
||||
rm $outputDir/bvh_body_test.csv
|
||||
|
||||
#create a small test file with one example
|
||||
#rm $outputDir/testSMALL.csv
|
||||
# ./GroundTruthDumper --from MotionCapture/01/01_01.bvh --offsetPositionRotation 0 750 2500 0 0 0 --maxFrames 1 --csv $outputDir testSMALL.csv
|
||||
|
||||
#PRODUCESVG="--svg $outputDir/svg"
|
||||
PRODUCESVG=" "
|
||||
|
||||
|
||||
datasetsProcessed=0
|
||||
totaldatasetsToGo=`echo "$datasetSubDir" | awk '{print NF}'`
|
||||
|
||||
rm $outputDir/test.csv
|
||||
for d in $datasetSubDir
|
||||
do
|
||||
if [ -d $datasetDir/$d ]
|
||||
then
|
||||
echo "$green Found $d directory $normal"
|
||||
datasetFile=`ls $datasetDir/$d | grep bvh`
|
||||
((datasetsProcessed++))
|
||||
#-------------------------------------------------------
|
||||
|
||||
for f in $datasetFile
|
||||
do
|
||||
echo "$green Generating Test - $datasetsProcessed/$totaldatasetsToGo - $datasetDir/$d/$f file $normal"
|
||||
#||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||
BVHFILE="$datasetDir/$d/$f" # --svg $outputDir
|
||||
#./GroundTruthDumper --from $BVHFILE --csv $outputDir test.csv# --bvh $outputDir/$f-random.bvh
|
||||
./GroundTruthDumper --from $BVHFILE $SELECTBODY --offsetPositionRotation 0 750 2000 0 0 0 --occlusions --csv $outputDir body_test.csv 2d+bvh $PRODUCESVG #--to ~/Documents/Programming/RGBDAcquisition/opengl_acquisition_shared_library/opengl_depth_and_color_renderer/Scenes/testBVH.conf --bvh $outputDir/$f-random.bvh --svg $outputDir/svg
|
||||
#exit 0
|
||||
#./GroundTruthDumper --from $BVHFILE --setPositionRotation 0 400 0 0 0 0 --csv $outputDir test.csv# --bvh $outputDir/$f-random.bvh
|
||||
#||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||
done
|
||||
|
||||
#-------------------------------------------------------
|
||||
else
|
||||
echo "$red Could not find $d directory $normal"
|
||||
fi
|
||||
done
|
||||
|
||||
exit 0
|
||||
Executable
+37
@@ -0,0 +1,37 @@
|
||||
#!/bin/bash
|
||||
|
||||
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||
cd "$DIR"
|
||||
cd ..
|
||||
|
||||
|
||||
#Valgrind can also be downloaded..
|
||||
#https://www.valgrind.org/downloads/current.html
|
||||
|
||||
#Simple dependency checker that will apt-get stuff if something is missing
|
||||
SYSTEM_DEPENDENCIES="valgrind"
|
||||
|
||||
for REQUIRED_PKG in $SYSTEM_DEPENDENCIES
|
||||
do
|
||||
PKG_OK=$(dpkg-query -W --showformat='${Status}\n' $REQUIRED_PKG|grep "install ok installed")
|
||||
echo "Checking for $REQUIRED_PKG: $PKG_OK"
|
||||
if [ "" = "$PKG_OK" ]; then
|
||||
|
||||
echo "No $REQUIRED_PKG. Setting up $REQUIRED_PKG."
|
||||
|
||||
#If this is uncommented then only packages that are missing will get prompted..
|
||||
#sudo apt-get --yes install $REQUIRED_PKG
|
||||
|
||||
#if this is uncommented then if one package is missing then all missing packages are immediately installed..
|
||||
sudo apt-get install $SYSTEM_DEPENDENCIES
|
||||
break
|
||||
fi
|
||||
done
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
|
||||
|
||||
|
||||
valgrind --tool=memcheck --leak-check=yes --show-reachable=yes --track-origins=yes --num-callers=20 --track-fds=yes ./MocapNETLiveWebcamDemo --from shuffle $@ 2>error.txt
|
||||
|
||||
exit 0
|
||||
@@ -0,0 +1,93 @@
|
||||
#!/bin/bash
|
||||
|
||||
|
||||
DATASET=""
|
||||
if (( $#<1 ))
|
||||
then
|
||||
echo "Please provide arguments first argument is dataset "
|
||||
exit 1
|
||||
else
|
||||
DATASET=$1-data
|
||||
fi
|
||||
# $1 holds the video file we want to process ( it should be something like path/to/videofile.mp4 )
|
||||
#DATASET now holds the output directory we will create ( it should be something like path/to/videofile.mp4-data/ )
|
||||
|
||||
|
||||
#Remember the directory where user started
|
||||
STARTDIR=`pwd`
|
||||
|
||||
#Remember the directory where the script is ( and where MocapNET is :) )
|
||||
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||
|
||||
#Please give the path to openpose here..
|
||||
OPENPOSE_DIR="/home/ammar/Documents/3dParty/openpose/"
|
||||
OPENPOSE_BINARY_DIR="/home/ammar/Documents/3dParty/openpose/build/examples/openpose/"
|
||||
|
||||
#Dataset dumping using ffmpeg
|
||||
#-----------------------------------------------------------------------------
|
||||
#-----------------------------------------------------------------------------
|
||||
#-----------------------------------------------------------------------------
|
||||
#Create the new dataset directory
|
||||
mkdir $DATASET
|
||||
|
||||
#Dump the video files using our naming scheme
|
||||
ffmpeg -i $1 -r 30 -q:v 1 $DATASET/colorFrame_0_%05d.jpg
|
||||
|
||||
#Make sure we start at frame 0
|
||||
cp $DATASET/colorFrame_0_00001.jpg $DATASET/colorFrame_0_00000.jpg
|
||||
|
||||
#We now want to grab an absolute path to our dataset
|
||||
cd $DATASET
|
||||
FULL_PATH_TO_DATASET=`pwd`
|
||||
#-----------------------------------------------------------------------------
|
||||
#-----------------------------------------------------------------------------
|
||||
#-----------------------------------------------------------------------------
|
||||
|
||||
|
||||
|
||||
#2D pose estimation using OpenPose
|
||||
#-----------------------------------------------------------------------------
|
||||
#-----------------------------------------------------------------------------
|
||||
#-----------------------------------------------------------------------------
|
||||
cd $OPENPOSE_DIR
|
||||
LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64 $OPENPOSE_BINARY_DIR/openpose.bin -number_people_max 1 --hand --face --write_json $FULL_PATH_TO_DATASET -image_dir $FULL_PATH_TO_DATASET $@
|
||||
#-----------------------------------------------------------------------------
|
||||
#-----------------------------------------------------------------------------
|
||||
#-----------------------------------------------------------------------------
|
||||
|
||||
|
||||
|
||||
#2D pose conversion to CSV using our tool
|
||||
#-----------------------------------------------------------------------------
|
||||
#-----------------------------------------------------------------------------
|
||||
#-----------------------------------------------------------------------------
|
||||
cd "$DIR"
|
||||
cd ..
|
||||
|
||||
./convertOpenPoseJSONToCSV --from $DATASET
|
||||
#-----------------------------------------------------------------------------
|
||||
#-----------------------------------------------------------------------------
|
||||
#-----------------------------------------------------------------------------
|
||||
|
||||
|
||||
|
||||
#3D pose estimation using MocapNET2
|
||||
#-----------------------------------------------------------------------------
|
||||
#-----------------------------------------------------------------------------
|
||||
#-----------------------------------------------------------------------------
|
||||
cd "$DIR"
|
||||
cd ..
|
||||
|
||||
./MocapNET2CSV --from $FULL_PATH_TO_DATASET/2dJoints_v1.4.csv --mt --show 3 --save
|
||||
cp out.bvh $FULL_PATH_TO_DATASET/predicted.bvh
|
||||
#-----------------------------------------------------------------------------
|
||||
#-----------------------------------------------------------------------------
|
||||
#-----------------------------------------------------------------------------
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
cd $STARTDIR
|
||||
exit 0
|
||||
|
||||
+37
@@ -0,0 +1,37 @@
|
||||
#!/bin/bash
|
||||
|
||||
#This is a script to dump a video file to JPG files
|
||||
#it uses ffmpeg so make sure you have sudo apt-get install ffmpeg
|
||||
#If you do ./dump_video.sh yourvideo.mp4
|
||||
#There should be an output folder yourvideo.mp4-data that has all the frames of the video
|
||||
#you can then point OpenPose to this directory to convert them to JSON 2D detections
|
||||
|
||||
STARTDIR=`pwd`
|
||||
#Switch to this directory
|
||||
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||
cd "$DIR"
|
||||
|
||||
DATASET=""
|
||||
|
||||
if (( $#<1 ))
|
||||
then
|
||||
echo "Please provide arguments first argument is dataset "
|
||||
exit 1
|
||||
else
|
||||
DATASET=$1-data
|
||||
fi
|
||||
|
||||
THEDATETAG=`date +"%y-%m-%d_%H-%M-%S"`
|
||||
|
||||
mkdir $DATASET
|
||||
|
||||
ffmpeg -i $1 -r 30 -q:v 1 $DATASET/colorFrame_0_%05d.jpg
|
||||
|
||||
cp $DATASET/colorFrame_0_00001.jpg $DATASET/colorFrame_0_00000.jpg
|
||||
|
||||
cd $DATASET
|
||||
cd ..
|
||||
|
||||
cd $STARTDIR
|
||||
exit 0
|
||||
|
||||
+48
@@ -0,0 +1,48 @@
|
||||
#!/bin/bash
|
||||
|
||||
|
||||
#Simple dependency checker that will apt-get stuff if something is missing
|
||||
# sudo apt-get install gnuplot
|
||||
SYSTEM_DEPENDENCIES="gnuplot"
|
||||
|
||||
for REQUIRED_PKG in $SYSTEM_DEPENDENCIES
|
||||
do
|
||||
PKG_OK=$(dpkg-query -W --showformat='${Status}\n' $REQUIRED_PKG|grep "install ok installed")
|
||||
echo "Checking for $REQUIRED_PKG: $PKG_OK"
|
||||
if [ "" = "$PKG_OK" ]; then
|
||||
|
||||
echo "No $REQUIRED_PKG. Setting up $REQUIRED_PKG."
|
||||
|
||||
#If this is uncommented then only packages that are missing will get prompted..
|
||||
#sudo apt-get --yes install $REQUIRED_PKG
|
||||
|
||||
#if this is uncommented then if one package is missing then all missing packages are immediately installed..
|
||||
sudo apt-get install $SYSTEM_DEPENDENCIES
|
||||
break
|
||||
fi
|
||||
done
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
|
||||
|
||||
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||
cd "$DIR"
|
||||
|
||||
cd ..
|
||||
|
||||
|
||||
./GroundTruthDumper --from dataset/CMU_Sample_05_01.bvh --selectJoints 0 23 hip eye.r eye.l abdomen chest neck head rshoulder relbow rhand lshoulder lelbow lhand rhip rknee rfoot lhip lknee lfoot toe1-2.r toe5-3.r toe1-2.l toe5-3.l --tuneIterations 130 100 130 0.01 5 30 20 > tuneIterations.dat
|
||||
|
||||
|
||||
#set view 45,45; set view map; set yrange [9:90]; set zrange [30:90];
|
||||
# set dgrid3d 25,25 qnorm 4;
|
||||
#splot \"tuneIterations.dat\" using 1:3:2 with points pointsize 3 pointtype 7;
|
||||
#HCD tuning iteration hyperparameter
|
||||
GNUPLOT_CMD="set terminal png size 1000,800 font \"Helvetica,34\"; set output \"tuneIterations.png\"; set isosample 160; set pm3d at b; set palette defined (65 \"black\", 70 \"red\", 80 \"yellow\", 90 \"yellow\", 100 \"white\"); set view 30,45; set hidden3d; set xrange [1:25]; set yrange [9:90]; set zrange [30:90]; set style fill solid; set xlabel \"HCD Iterations\" rotate parallel; set ylabel \"Frames per second\" rotate parallel; set zlabel \"Mean average error in mm\" rotate parallel; set ztics 30; set title \"Mean average error in mm\"; set ytics 30; set multiplot; splot \"tuneIterations.dat\" using 1:3:2 with lines palette lw 2 title \" \"; splot \"tuneIterations.dat\" using 1:3:2 with points palette pointsize 1 pointtype 7 title \" \"; "
|
||||
|
||||
gnuplot -e "$GNUPLOT_CMD"
|
||||
|
||||
echo "Result of experiment is now ready @ tuneIterations.png"
|
||||
timeout 10 gpicview tuneIterations.png
|
||||
|
||||
exit 0
|
||||
+54
@@ -0,0 +1,54 @@
|
||||
#/bin/bash
|
||||
|
||||
|
||||
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||
cd "$DIR/../dependencies"
|
||||
|
||||
DEPENDENCIES_PATH=`pwd`
|
||||
|
||||
sudo apt-get install build-essential cmake git libgtk2.0-dev pkg-config ffmpeg libavcodec-dev libavformat-dev libavcodec-dev libavformat-dev libswscale-dev libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff5-dev libdc1394-22-dev libeigen3-dev libtheora-dev libvorbis-dev libxvidcore-dev libx264-dev sphinx-common libtbb-dev yasm libfaac-dev libopencore-amrnb-dev libopencore-amrwb-dev libopenexr-dev libgstreamer-plugins-base1.0-dev libavutil-dev libavfilter-dev libavresample-dev libpython3-all-dev python3-numpy python3-dev
|
||||
|
||||
#cd "$1"
|
||||
echo "Will Install @ `pwd`"
|
||||
|
||||
|
||||
#Want a different version?
|
||||
#Check https://opencv.org/releases/ for versions and
|
||||
#change the OPENCV_VERSION in the next line..
|
||||
OPENCV_VERSION="3.2.0"
|
||||
echo "Downloading"
|
||||
|
||||
wget http://ammar.gr/programs/opencv-$OPENCV_VERSION.zip
|
||||
wget http://ammar.gr/programs/opencv_contrib-$OPENCV_VERSION.tar.gz
|
||||
|
||||
#wget https://codeload.github.com/opencv/opencv/zip/$OPENCV_VERSION -O opencv-$OPENCV_VERSION.zip
|
||||
#wget https://codeload.github.com/opencv/opencv_contrib/zip/$OPENCV_VERSION -O opencv_contrib-$OPENCV_VERSION.tar.gz
|
||||
|
||||
echo "Extracting"
|
||||
|
||||
#tar xvzf opencv_contrib-$OPENCV_VERSION.tar.gz
|
||||
unzip opencv_contrib-$OPENCV_VERSION.zip
|
||||
unzip opencv-$OPENCV_VERSION.zip
|
||||
|
||||
echo "Building"
|
||||
|
||||
cd opencv-$OPENCV_VERSION
|
||||
mkdir build
|
||||
cd build
|
||||
cmake -DOPENCV_ENABLE_NONFREE=ON -DOPENCV_EXTRA_MODULES_PATH=$DEPENDENCIES_PATH/opencv_contrib-$OPENCV_VERSION/modules ..
|
||||
make -j5
|
||||
|
||||
echo "Do you want to install OpenCV to your system ? "
|
||||
echo
|
||||
echo -n " (Y/N)?"
|
||||
read answer
|
||||
if test "$answer" != "N" -a "$answer" != "n";
|
||||
then
|
||||
sudo make install
|
||||
fi
|
||||
|
||||
cd "$DIR"
|
||||
|
||||
echo "Done"
|
||||
|
||||
exit 0
|
||||
@@ -0,0 +1,32 @@
|
||||
#!/bin/bash
|
||||
|
||||
#This script should be run after you have dumped a video to a directory using the dump_video.sh utility
|
||||
#You should give a full path to this utility i.e. ./processDatasetWithOpenpose.sh "~/myDatasets/yourvideo.mp4-data/"
|
||||
#and also dont forget to change the PATH_TO_OPENPOSE to the directory that has your openpose.bin!
|
||||
PATH_TO_OPENPOSE="PLEASE/CHANGE/THIS/"
|
||||
|
||||
|
||||
STARTDIR=`pwd`
|
||||
#Switch to this directory
|
||||
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||
|
||||
|
||||
DATASET=""
|
||||
|
||||
if (( $#<1 ))
|
||||
then
|
||||
echo "Please provide arguments first argument is dataset "
|
||||
exit 1
|
||||
else
|
||||
DATASET=$1
|
||||
|
||||
$PATH_TO_OPENPOSE/openpose.bin -number_people_max 1 --hand --face --write_json $DATASET -image_dir $DATASET $@
|
||||
|
||||
|
||||
cd "$DIR"
|
||||
echo "Went back to $DIR"
|
||||
echo "Hopefully the path you have given is an absolute path.."
|
||||
./convertBody25JSONToCSV -i $DATASET
|
||||
|
||||
exit 0
|
||||
|
||||
+47
@@ -0,0 +1,47 @@
|
||||
#!/bin/bash
|
||||
|
||||
FROMDATASET="$1"
|
||||
X=0
|
||||
|
||||
# sudo apt-get install imagemagick
|
||||
|
||||
if (( $# != 1 )); then
|
||||
echo "Please run giving the path to download and build"
|
||||
echo "$0 \"DatasetNameSource\" "
|
||||
exit 0
|
||||
fi
|
||||
|
||||
|
||||
TOTAL_FRAMES=100000
|
||||
|
||||
cd $FROMDATASET
|
||||
|
||||
echo "Spliting Dataset $FROMDATASET "
|
||||
echo "Please wait .. "
|
||||
for (( i=$X; i<=$TOTAL_FRAMES; i++ ))
|
||||
do
|
||||
XNUM=`printf %05u $i`
|
||||
|
||||
if [ -f "colorFrame_0_$XNUM.jpg" ]
|
||||
then
|
||||
width=$(identify -format "%w" "colorFrame_0_$XNUM.jpg")> /dev/null
|
||||
height=$(identify -format "%h" "colorFrame_0_$XNUM.jpg")> /dev/null
|
||||
halfWidth=$((width / 2))
|
||||
echo "$width x $height -> 2x $halfWidth x $height"
|
||||
|
||||
|
||||
#First crop second half ( before source file gets rewritten )
|
||||
convert colorFrame_0_$XNUM.jpg -crop "$halfWidth"x$height+$halfWidth+0 colorFrame_1_$XNUM.jpg
|
||||
convert colorFrame_0_$XNUM.jpg -crop "$halfWidth"x$height+0+0 colorFrame_0_$XNUM.jpg
|
||||
else
|
||||
break
|
||||
fi
|
||||
|
||||
echo -n "."
|
||||
done
|
||||
|
||||
echo "Passed TOTAL_FRAMES (!) this is a bug! :S"
|
||||
|
||||
cd ..
|
||||
|
||||
exit 0
|
||||
+135
@@ -0,0 +1,135 @@
|
||||
#!/bin/bash
|
||||
|
||||
#Script last updated 25-03-2022
|
||||
|
||||
#Script that seems to be able to build bazel/tf2 on Ubuntu 20.04
|
||||
#I really deeply dislike the bazel build system which is bloated and obfuscated for no reason, just Google "NIH syndrome"
|
||||
#However Tensorflow2 is a great NN framework
|
||||
# See this video "How To Make Package Managers Cry" -> https://www.youtube.com/watch?v=NSemlYagjIU#t=19m0s
|
||||
|
||||
echo "Check CUDA"
|
||||
ls /usr/local/cuda/extras/CUPTI/lib64
|
||||
ls /usr/local/cuda
|
||||
ls /usr/local/cuda/lib64/ | grep libcudnn.so
|
||||
nvcc -V
|
||||
|
||||
|
||||
VERSION="2.8"
|
||||
|
||||
#Get number of bytes in RAM
|
||||
RAM=`free | grep Mem | tr -s ' '| cut -f2 -d ' '`
|
||||
|
||||
|
||||
BazelPleaseSlowDown="--local_resources 2048,.5,1.0"
|
||||
|
||||
if [ "$RAM" -gt "11286464" ]; then
|
||||
echo "More than 12GB";
|
||||
BazelPleaseSlowDown=" "
|
||||
fi
|
||||
if [ "$RAM" -gt "15297500" ]; then
|
||||
echo "More than 16GB";
|
||||
BazelPleaseSlowDown=" "
|
||||
fi
|
||||
if [ "$RAM" -gt "31861780" ]; then
|
||||
echo "More than 32GB";
|
||||
BazelPleaseSlowDown=" "
|
||||
fi
|
||||
|
||||
|
||||
#Tensorflow is a great Neural network library that unfortunately is coupled to the terrible Bazel build system
|
||||
#This is a download and build script for Ubuntu 20.04, that should work building release 2.8
|
||||
|
||||
sudo apt-get install python3-dev python3-pip python3-venv python3-tk
|
||||
|
||||
pip3 install -U --user pip numpy wheel packaging
|
||||
pip3 install -U --user keras_preprocessing --no-deps
|
||||
|
||||
cd ~/Documents
|
||||
mkdir 3dParty
|
||||
cd 3dParty
|
||||
|
||||
#wget https://github.com/bazelbuild/bazel/releases/download/4.2.1/bazel-4.2.1-installer-linux-x86_64.sh
|
||||
#chmod +x bazel-4.2.1-installer-linux-x86_64.sh
|
||||
#./bazel-4.2.1-installer-linux-x86_64.sh --user
|
||||
|
||||
#r2.8
|
||||
mkdir -p "$HOME/.bazel/bin" && cd "$HOME/.bazel/bin" && curl -fLO https://releases.bazel.build/4.2.1/release/bazel-4.2.1-linux-x86_64 && chmod +x bazel-4.2.1-linux-x86_64
|
||||
|
||||
#Create shared directory
|
||||
if [ -f ~/.bashrc ]
|
||||
then
|
||||
if cat ~/.bashrc | grep -q "BAZEL_CANCER"
|
||||
then
|
||||
echo "Bazel includes seem to be set-up.."
|
||||
else
|
||||
USER=`whoami`
|
||||
echo "#BAZEL_CANCER" >> ~/.bashrc
|
||||
echo "source $HOME/.bazel/bin/bazel-complete.bash" >> ~/.bashrc
|
||||
echo "export PATH=\"\$PATH:\$HOME/bin\"" >> ~/.bashrc
|
||||
source ~/.bashrc
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ ! -d tensorflow ]
|
||||
then
|
||||
git clone https://github.com/tensorflow/tensorflow.git
|
||||
fi
|
||||
|
||||
cd tensorflow
|
||||
git pull
|
||||
git checkout r$VERSION
|
||||
|
||||
|
||||
#Make sure to check your target CPU and when asked used the correct -march= / -mtune=
|
||||
# for example for an old intel i7 -march=nehalem is used..
|
||||
#https://gcc.gnu.org/onlinedocs/gcc/x86-Options.html
|
||||
|
||||
|
||||
echo "Answers to configure questions :"
|
||||
echo "/usr/bin/python3"
|
||||
echo "/usr/lib/python3/dist-packages"
|
||||
echo "cuda Y"
|
||||
echo "tensorrt Y"
|
||||
echo "CUDA 11.2"
|
||||
echo "CuDNN 8"
|
||||
echo "TensorRT 8"
|
||||
echo "/usr/local/cuda/,/usr/local/cuda/include/,/usr/local/cuda/bin/,/usr/local/cuda/lib64/,/usr/local/cuda/lib64/,/usr/local/tensorrt-8.2.3/,/usr/local/tensorrt-8.2.3/include/,/usr/local/tensorrt-8.2.3/lib/,"
|
||||
echo "Compute capability 6.1 ( for GTX 1050 + cards )"
|
||||
|
||||
#Attempt to inform the configure script on how to find the CUDA stuff..
|
||||
export CUDNN_INSTALL_PATH=/usr/local/cuda/,/usr/local/cuda/include/,/usr/local/cuda/bin/,/usr/local/cuda/lib64/,/usr/local/cuda/lib64/,/usr/local/tensorrt-8.2.3/,/usr/local/tensorrt-8.2.3/include/,/usr/local/tensorrt-8.2.3/lib/
|
||||
|
||||
|
||||
./configure
|
||||
|
||||
bazel clean --expunge
|
||||
|
||||
|
||||
|
||||
#You should use CUDA 11.2 and cudnn-11.2-linux-x64-v8.1.1.33 and TensorRT 8.2.3
|
||||
|
||||
bazel build --config=opt --config=cuda --config=mkl --config=monolithic $BazelPleaseSlowDown //tensorflow/tools/pip_package:build_pip_package
|
||||
./bazel-bin/tensorflow/tools/pip_package/build_pip_package ~/Documents/3dParty/
|
||||
#To install
|
||||
#pip3 --user install ~/Documents/3dParty/tensorflow-2.4.0-cp36-cp36m-linux_x86_64.whl
|
||||
|
||||
|
||||
|
||||
bazel build --config opt --config=cuda --config=monolithic //tensorflow/tools/lib_package:libtensorflow
|
||||
cp bazel-bin/tensorflow/tools/lib_package/libtensorflow.tar.gz ~/Documents/3dParty/libtensorflow-r$VERSION.tar.gz
|
||||
|
||||
|
||||
#Build tensorflow lite
|
||||
#https://www.tensorflow.org/lite/guide/build_cmake
|
||||
mkdir tflite_buld
|
||||
cd tflite_buld/
|
||||
cmake ../tensorflow/lite
|
||||
cmake --build . -j
|
||||
|
||||
|
||||
echo "Please visit ~/Documents/3dParty/ to collect your tensorflow python3 wheel, and C Library.."
|
||||
echo "Will now use : python -c 'import tensorflow as tf;' to test your tensorflow"
|
||||
|
||||
python -c 'import tensorflow as tf;'
|
||||
|
||||
exit 0
|
||||
+93
@@ -0,0 +1,93 @@
|
||||
#!/bin/bash
|
||||
|
||||
#Script source repository https://github.com/AmmarkoV/MyScripts/blob/master/Tensorflow/tensorflowBuild.sh
|
||||
#Script last updated 23-06-2020
|
||||
|
||||
#Script that seems to be able to build bazel/tf2 on Ubuntu 20.04
|
||||
#I really deeply dislike the bazel build system which is bloated and obfuscated for no reason, just Google "NIH syndrome"
|
||||
#However Tensorflow2 is a great NN framework
|
||||
# See this video "How To Make Package Managers Cry" -> https://www.youtube.com/watch?v=NSemlYagjIU#t=19m0s
|
||||
|
||||
|
||||
#Get number of bytes in RAM
|
||||
RAM=`free | grep Mem | tr -s ' '| cut -f2 -d ' '`
|
||||
|
||||
|
||||
BazelPleaseSlowDown="--local_resources 2048,.5,1.0"
|
||||
|
||||
if [ "$RAM" -gt "11286464" ]; then
|
||||
echo "More than 12GB";
|
||||
BazelPleaseSlowDown=" "
|
||||
fi
|
||||
if [ "$RAM" -gt "15297500" ]; then
|
||||
echo "More than 16GB";
|
||||
BazelPleaseSlowDown=" "
|
||||
fi
|
||||
if [ "$RAM" -gt "31861780" ]; then
|
||||
echo "More than 32GB";
|
||||
BazelPleaseSlowDown=" "
|
||||
fi
|
||||
|
||||
|
||||
#Tensorflow is a great Neural network library that unfortunately is coupled to the terrible Bazel build system
|
||||
#This is a download and build script for Ubuntu 18.04, that should work building release 1.15
|
||||
|
||||
sudo apt-get install python3-dev python3-pip python3-venv python3-tk
|
||||
|
||||
pip install -U --user pip six numpy wheel setuptools mock 'future>=0.17.1'
|
||||
pip install -U --user keras_applications --no-deps
|
||||
pip install -U --user keras_preprocessing --no-deps
|
||||
|
||||
|
||||
cd ~/Documents
|
||||
mkdir 3dParty
|
||||
cd 3dParty
|
||||
|
||||
wget http://ammar.gr/mocapnet/bazel-0.24.1-installer-linux-x86_64-for-tensorflow-r1.15.sh
|
||||
chmod +x bazel-0.24.1-installer-linux-x86_64-for-tensorflow-r1.15.sh
|
||||
./bazel-0.24.1-installer-linux-x86_64-for-tensorflow-r1.15.sh --user
|
||||
|
||||
#Create shared directory
|
||||
if [ -f ~/.bashrc ]
|
||||
then
|
||||
if cat ~/.bashrc | grep -q "BAZEL_CANCER"
|
||||
then
|
||||
echo "Bazel includes seem to be set-up.."
|
||||
else
|
||||
USER=`whoami`
|
||||
echo "#BAZEL_CANCER" >> ~/.bashrc
|
||||
echo "source ~/.bazel/bin/bazel-complete.bash" >> ~/.bashrc
|
||||
echo "export PATH=\"\$PATH:\$HOME/bin\"" >> ~/.bashrc
|
||||
source ~/.bashrc
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ ! -d tensorflow ]
|
||||
then
|
||||
git clone https://github.com/tensorflow/tensorflow.git
|
||||
fi
|
||||
|
||||
cd tensorflow
|
||||
git pull
|
||||
git checkout r1.15
|
||||
|
||||
|
||||
./configure
|
||||
|
||||
bazel clean --expunge
|
||||
|
||||
#Flags for bazel if you have gcc<5.0
|
||||
#--cxxopt="-D_GLIBCXX_USE_CXX11_ABI=0"
|
||||
#--noincompatible_do_not_split_linking_cmdline
|
||||
|
||||
bazel build --config=opt --config=cuda --config=mkl --config=monolithic $BazelPleaseSlowDown //tensorflow/tools/pip_package:build_pip_package
|
||||
./bazel-bin/tensorflow/tools/pip_package/build_pip_package ~/Documents/3dParty/
|
||||
|
||||
|
||||
bazel build --config opt --config=cuda --config=monolithic //tensorflow/tools/lib_package:libtensorflow
|
||||
cp bazel-bin/tensorflow/tools/lib_package/libtensorflow.tar.gz ~/Documents/3dParty/libtensorflow-r1.15.tar.gz
|
||||
|
||||
echo "Please visit ~/Documents/3dParty/ to collect your tensorflow python3 wheel, and C Library.."
|
||||
|
||||
|
||||
exit 0
|
||||
@@ -0,0 +1,21 @@
|
||||
project( GroundTruthDumper )
|
||||
cmake_minimum_required( VERSION 2.8.13 )
|
||||
set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../cmake/modules ${CMAKE_MODULE_PATH})
|
||||
|
||||
|
||||
add_executable(
|
||||
GroundTruthDumper
|
||||
${CMAKE_SOURCE_DIR}/dependencies/RGBDAcquisition/opengl_acquisition_shared_library/opengl_depth_and_color_renderer/src/Applications/BVHTester/main.c
|
||||
${CMAKE_SOURCE_DIR}/dependencies/RGBDAcquisition/opengl_acquisition_shared_library/opengl_depth_and_color_renderer/src/Library/TrajectoryParser/InputParser_C.c
|
||||
${BVH_SOURCE}
|
||||
)
|
||||
|
||||
target_link_libraries(GroundTruthDumper rt m pthread )
|
||||
#add_dependencies(GroundTruthDumper OGLRendererSandbox)
|
||||
|
||||
|
||||
set_target_properties(GroundTruthDumper PROPERTIES
|
||||
ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}"
|
||||
LIBRARY_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}"
|
||||
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}"
|
||||
)
|
||||
@@ -0,0 +1,6 @@
|
||||
To simplify package maintenance the GroundTruthGenerator uses the code from the BVHTester of RGBDAcquisition
|
||||
If you want to browse the code, i.e. to find about different command line options this is the [main.c](https://github.com/AmmarkoV/RGBDAcquisition/blob/master/opengl_acquisition_shared_library/opengl_depth_and_color_renderer/src/Applications/BVHTester/main.c)
|
||||
|
||||
All the implementation files to parse BVH files are part of the MotionCaptureLoader module of the RGDAcquisition OGL Renderer Sandbox. You can [find the bvh code here](https://github.com/AmmarkoV/RGBDAcquisition/tree/master/opengl_acquisition_shared_library/opengl_depth_and_color_renderer/src/Library/MotionCaptureLoader)
|
||||
|
||||
Sorry for having different stuff in different places but it really minimizes the effort needed to relase the code and it also reduces the number of possible bugs from keeping the same code in sync in different machines etc.
|
||||
@@ -0,0 +1,19 @@
|
||||
project( helloWorld )
|
||||
cmake_minimum_required(VERSION 3.5)
|
||||
|
||||
|
||||
|
||||
#-----------------------------------------------
|
||||
# This is the converter utilities..
|
||||
#-----------------------------------------------
|
||||
project( helloWorld )
|
||||
add_executable(helloWorld main.cpp)
|
||||
target_link_libraries(helloWorld rt dl m )
|
||||
set_target_properties(helloWorld PROPERTIES DEBUG_POSTFIX "D")
|
||||
set_target_properties(helloWorld PROPERTIES
|
||||
ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}"
|
||||
LIBRARY_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}"
|
||||
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}"
|
||||
)
|
||||
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
|
||||
#include <iostream>
|
||||
|
||||
int main() {
|
||||
std::cout << "\n\n\n\n\n\nHello World!\n";
|
||||
std::cout << "Congrats, If you can read this you can compile C++ code using CMake..!\n\n\n\n\n";
|
||||
return 0;
|
||||
}
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
#!/bin/bash
|
||||
|
||||
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||
cd "$DIR"
|
||||
|
||||
mkdir build
|
||||
cd build
|
||||
cmake ..
|
||||
make
|
||||
|
||||
cd "$DIR"
|
||||
./helloWorld
|
||||
|
||||
exit 0
|
||||
@@ -0,0 +1,45 @@
|
||||
project( JointEstimator2D )
|
||||
cmake_minimum_required(VERSION 3.5)
|
||||
|
||||
|
||||
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
|
||||
#set(CMAKE_CXX_STANDARD 11)
|
||||
|
||||
include_directories(${TENSORFLOW_INCLUDE_ROOT})
|
||||
|
||||
add_library(
|
||||
JointEstimator2D SHARED
|
||||
jointEstimator2D.cpp
|
||||
cameraControl.cpp
|
||||
visualization.cpp
|
||||
${CMAKE_SOURCE_DIR}/src/Tensorflow/tensorflow.cpp
|
||||
${CMAKE_SOURCE_DIR}/src/Tensorflow/tf_utils.cpp
|
||||
)
|
||||
|
||||
target_link_libraries(JointEstimator2D rt dl m Tensorflow TensorflowFramework )
|
||||
set_target_properties(JointEstimator2D PROPERTIES DEBUG_POSTFIX "D")
|
||||
|
||||
|
||||
set_target_properties(JointEstimator2D PROPERTIES
|
||||
ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}"
|
||||
LIBRARY_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}"
|
||||
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}"
|
||||
)
|
||||
|
||||
|
||||
|
||||
|
||||
find_package(OpenCV REQUIRED)
|
||||
INCLUDE_DIRECTORIES(${OpenCV_INCLUDE_DIRS})
|
||||
|
||||
add_executable(WebcamAnd2DJoints webcamAnd2DJoints.cpp)
|
||||
target_link_libraries(WebcamAnd2DJoints rt dl m ${OpenCV_LIBRARIES} JointEstimator2D Tensorflow TensorflowFramework)
|
||||
set_target_properties(WebcamAnd2DJoints PROPERTIES DEBUG_POSTFIX "D")
|
||||
|
||||
|
||||
set_target_properties(WebcamAnd2DJoints PROPERTIES
|
||||
ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}"
|
||||
LIBRARY_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}"
|
||||
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}"
|
||||
)
|
||||
|
||||
@@ -0,0 +1,433 @@
|
||||
#include "cameraControl.hpp"
|
||||
|
||||
#include "../MocapNET2/MocapNETLib2/IO/commonSkeleton.hpp"
|
||||
|
||||
#include <cstdlib>
|
||||
|
||||
|
||||
const unsigned int noiseThreshold = 30; //pixels
|
||||
|
||||
|
||||
/**
|
||||
* @brief In order to have the best possible quality we can crop the input frame to only perform detection around the area of the previous skeleton
|
||||
* This code performs this crop and tries to get the best detection window
|
||||
* @ingroup demo
|
||||
* @bug This code is oriented to a single 2D skeleton detected, Multiple skeletons will confuse it and there is no logic to handle them
|
||||
* @retval 1=Success/0=Failure
|
||||
*/
|
||||
int getMaximumCropWindow(
|
||||
unsigned int * x,
|
||||
unsigned int * y,
|
||||
unsigned int * width,
|
||||
unsigned int * height,
|
||||
struct boundingBox * bboxExternal,
|
||||
unsigned int inputWidth2DJointDetector,
|
||||
unsigned int inputHeight2DJointDetector,
|
||||
unsigned int fullFrameWidth,
|
||||
unsigned int fullFrameHeight
|
||||
)
|
||||
{
|
||||
//Make a local copy in case of failure
|
||||
struct boundingBox bboxLocal = *bboxExternal;
|
||||
struct boundingBox * bbox = &bboxLocal;
|
||||
|
||||
|
||||
float paddingPercent=0.2; // 0.1 = 10% etc
|
||||
|
||||
if ( (bbox!=0) && (bbox->populated) )
|
||||
{
|
||||
unsigned int previousX = *x;
|
||||
unsigned int previousY = *y;
|
||||
unsigned int previousWidth = *width;
|
||||
unsigned int previousHeight = *height;
|
||||
|
||||
//std::cerr<<"Previous Bounding Box was "<<*x<<","<<*y<<" to "<<*x+*width<<","<<*y+*height<<" \n";
|
||||
|
||||
// Bring bounding box to normal coordinates
|
||||
//------------------------------------------------
|
||||
bbox->minimumX+= (float) *x;
|
||||
bbox->maximumX+= (float) *x;
|
||||
bbox->minimumY+= (float) *y;
|
||||
bbox->maximumY+= (float) *y;
|
||||
|
||||
//Calculate the dimensions of the bounding box body and its center
|
||||
//----------------------------------------------------------------------------------------------------------
|
||||
float bodyWidth = bbox->maximumX - bbox->minimumX;
|
||||
float bodyHeight = bbox->maximumY - bbox->minimumY;
|
||||
float bodyCenterX = bbox->minimumX + (float) bodyWidth/2;
|
||||
float bodyCenterY = bbox->minimumY + (float) bodyHeight/2;
|
||||
|
||||
|
||||
//If the body is smaller than our input size lets get some more detail in so we avoid scaling up
|
||||
//----------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
if (inputWidth2DJointDetector >bodyWidth )
|
||||
{
|
||||
bodyWidth = inputWidth2DJointDetector;
|
||||
}
|
||||
if (inputHeight2DJointDetector> bodyHeight )
|
||||
{
|
||||
bodyHeight = inputHeight2DJointDetector;
|
||||
}
|
||||
|
||||
|
||||
//Given that we have our new size and center we can now calculate the new offset from center
|
||||
//--------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
float bodyOffsetX = (float) bodyWidth/2;
|
||||
float bodyOffsetY = (float) bodyHeight/2;
|
||||
|
||||
//And using the new offset derive the new bounding box
|
||||
//--------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
float pixelsPaddedX = paddingPercent * bodyWidth;
|
||||
float pixelsPaddedY = paddingPercent * bodyHeight;
|
||||
|
||||
//We now have a preliminary bounding box BUT the final bounding box we want is a rectangle so we need to keep the biggest dimension
|
||||
//-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
if ( bodyOffsetX+pixelsPaddedX> bodyOffsetY+pixelsPaddedY)
|
||||
{
|
||||
bodyOffsetX = bodyOffsetX + pixelsPaddedX;
|
||||
bodyOffsetY = bodyOffsetX + pixelsPaddedX;
|
||||
}
|
||||
else
|
||||
{
|
||||
bodyOffsetX = bodyOffsetY + pixelsPaddedY;
|
||||
bodyOffsetY = bodyOffsetY + pixelsPaddedY;
|
||||
}
|
||||
|
||||
//We now have a rectangle bounding box
|
||||
//----------------------------------------------------------------
|
||||
bbox->minimumX = bodyCenterX - bodyOffsetX;
|
||||
bbox->maximumX = bodyCenterX + bodyOffsetX;
|
||||
bbox->minimumY = bodyCenterY - bodyOffsetY;
|
||||
bbox->maximumY = bodyCenterY + bodyOffsetY;
|
||||
|
||||
//We do a last bounds check
|
||||
//--------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
signed int limitLX=0,limitLY=0,limitRX=0,limitRY=0;
|
||||
if (bbox->minimumX < 0 )
|
||||
{
|
||||
limitLX=-1*bbox->minimumX;
|
||||
bbox->minimumX = 0;
|
||||
}
|
||||
if (bbox->minimumY < 0 )
|
||||
{
|
||||
limitLY=-1*bbox->minimumY;
|
||||
bbox->minimumY = 0;
|
||||
}
|
||||
if (bbox->maximumX > fullFrameWidth )
|
||||
{
|
||||
limitRX=bbox->maximumX-fullFrameWidth;
|
||||
bbox->maximumX = fullFrameWidth;
|
||||
}
|
||||
if (bbox->maximumY > fullFrameHeight )
|
||||
{
|
||||
limitRY=bbox->maximumY-fullFrameHeight;
|
||||
bbox->maximumY = fullFrameHeight;
|
||||
}
|
||||
|
||||
|
||||
//We now have a preliminary bounding box the rectangle might be in a corner and fall out of bounds
|
||||
//--------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
//We are maybe constrained left/up add what we lost right/down..!
|
||||
if (limitLX>0)
|
||||
{
|
||||
bbox->maximumX += limitLX;
|
||||
}
|
||||
if (limitLY>0)
|
||||
{
|
||||
bbox->maximumY += limitLY;
|
||||
}
|
||||
|
||||
//We are maybe constrained right/down we subtract what we lost left/up ..!
|
||||
if (limitRX>0)
|
||||
{
|
||||
bbox->minimumX -= limitRX;
|
||||
}
|
||||
if (limitRY>0)
|
||||
{
|
||||
bbox->minimumY -= limitRY;
|
||||
}
|
||||
|
||||
if ( (limitLX!=0) || (limitLY!=0) || (limitRX!=0) || (limitRY!=0) )
|
||||
{
|
||||
//We have failed to initially resolve the bounding box..!
|
||||
//std::cerr<<"Initial resolve the bounding box X1:"<<limitLX<<",Y1:"<<limitLY<<",X2:"<<limitRX<<",Y2:"<<limitRY<<"..\n";
|
||||
//return 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
//We one last time check for bound limits
|
||||
limitLX=0,limitLY=0,limitRX=0,limitRY=0;
|
||||
if (bbox->minimumX < 0 )
|
||||
{
|
||||
limitLX=1;
|
||||
bbox->minimumX = 0;
|
||||
}
|
||||
if (bbox->minimumY < 0 )
|
||||
{
|
||||
limitLY=1;
|
||||
bbox->minimumY = 0;
|
||||
}
|
||||
if (bbox->maximumX > fullFrameWidth )
|
||||
{
|
||||
limitRX=1;
|
||||
bbox->maximumX = fullFrameWidth;
|
||||
}
|
||||
if (bbox->maximumY > fullFrameHeight )
|
||||
{
|
||||
limitRY=1;
|
||||
bbox->maximumY = fullFrameHeight;
|
||||
}
|
||||
|
||||
if ( (limitLX!=0) || (limitLY!=0) || (limitRX!=0) || (limitRY!=0) )
|
||||
{
|
||||
//We have failed to resolve the bounding box..!
|
||||
//std::cerr<<"We have failed to resolve the bounding box X1:"<<limitLX<<",Y1:"<<limitLY<<",X2:"<<limitRX<<",Y2:"<<limitRY<<"..\n";
|
||||
//std::cerr<<"bounding box was X1:"<<bbox->minimumX<<",Y1:"<<bbox->minimumY<<",X2:"<<bbox->maximumX<<",Y2:"<<bbox->maximumY<<"..\n";
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
//And our output is ready for use..!
|
||||
//--------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
if (
|
||||
( abs(previousX - (unsigned int) bbox->minimumX ) > noiseThreshold ) ||
|
||||
( abs(previousY - (unsigned int) bbox->minimumY ) > noiseThreshold ) ||
|
||||
( abs(previousWidth - (unsigned int) ( bbox->maximumX - bbox->minimumX ) ) > 2*noiseThreshold ) ||
|
||||
( abs(previousHeight - (unsigned int) ( bbox->maximumY - bbox->minimumY ) ) > 2*noiseThreshold )
|
||||
)
|
||||
{
|
||||
*x=(unsigned int) bbox->minimumX ;
|
||||
*y=(unsigned int) bbox->minimumY ;
|
||||
*width = (unsigned int) bbox->maximumX - bbox->minimumX;
|
||||
*height= (unsigned int) bbox->maximumY - bbox->minimumY;
|
||||
|
||||
if (*width == *height +1 )
|
||||
{
|
||||
*width = *height;
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
//std::cerr<<"New MAX Bounding Box is "<<*x<<","<<*y<<" to "<<*x+*width<<","<<*y+*height<<" Image("<<fullFrameWidth<<","<<fullFrameHeight<<")\n";
|
||||
|
||||
if ( (*width!=0) && (*height!=0) )
|
||||
{
|
||||
//Success..!
|
||||
*bboxExternal=bboxLocal;
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
fprintf(stderr,"Bounding box is too similar with previous so keeping previous..\n");
|
||||
//std::cerr<<"New MAX Bounding Box would have been "<< bbox->minimumX<<","<< bbox->minimumY<<" to "<< bbox->maximumX<<","<< bbox->maximumY<<" Image("<<fullFrameWidth<<","<<fullFrameHeight<<")\n";
|
||||
}
|
||||
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief In order to have the best possible quality we can crop the input frame to only perform detection around the area of the previous skeleton
|
||||
* This code performs this crop and tries to get the best detection window
|
||||
* @ingroup demo
|
||||
* @bug This code is oriented to a single 2D skeleton detected, Multiple skeletons will confuse it and there is no logic to handle them
|
||||
* @retval 1=Success/0=Failure
|
||||
*/
|
||||
int getBestCropWindow(
|
||||
int maximumCrop,
|
||||
unsigned int * x,
|
||||
unsigned int * y,
|
||||
unsigned int * width,
|
||||
unsigned int * height,
|
||||
struct boundingBox * bbox,
|
||||
unsigned int inputWidth2DJointDetector,
|
||||
unsigned int inputHeight2DJointDetector,
|
||||
unsigned int fullFrameWidth,
|
||||
unsigned int fullFrameHeight
|
||||
)
|
||||
{
|
||||
//fprintf(stderr,"getBestCropWindow(%u,%u,%u,%u)\n",*x,*y,*width,*height);
|
||||
//fprintf(stderr,"input image size is %u,%u\n",fullFrameWidth,fullFrameHeight);
|
||||
if (bbox==0) { return 0; }
|
||||
|
||||
if (maximumCrop)
|
||||
{
|
||||
if ( getMaximumCropWindow(
|
||||
x,
|
||||
y,
|
||||
width,
|
||||
height,
|
||||
bbox,
|
||||
inputWidth2DJointDetector,
|
||||
inputHeight2DJointDetector,
|
||||
fullFrameWidth,
|
||||
fullFrameHeight
|
||||
)
|
||||
)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
//If we fail to get Maximum Crop Window we will settle with normal crop window
|
||||
}
|
||||
|
||||
//fprintf(stderr,"Previous crop started at %u,%u\n", *x,*y);
|
||||
if ( (bbox!=0) && (bbox->populated) )
|
||||
{
|
||||
//fprintf(stderr,"This means that the bounding box (%0.2f,%0.2f) -> (%0.2f,%0.2f)\n",bbox->minimumX,bbox->minimumY,bbox->maximumX,bbox->maximumY);
|
||||
bbox->minimumX+=(float) *x;
|
||||
bbox->maximumX+=(float) *x;
|
||||
bbox->minimumY+=(float) *y;
|
||||
bbox->maximumY+=(float) *y;
|
||||
//fprintf(stderr,"is actually (%0.2f,%0.2f) -> (%0.2f,%0.2f)\n",bbox->minimumX,bbox->minimumY,bbox->maximumX,bbox->maximumY);
|
||||
}
|
||||
|
||||
|
||||
unsigned int dimension = fullFrameHeight;
|
||||
float bodyWidth = bbox->maximumX - bbox->minimumX;
|
||||
float bodyHeight = bbox->maximumY - bbox->minimumY;
|
||||
//fprintf(stderr,"Body starts at %0.2f and ends at %0.2f for a total of %0.2f pixels\n", bbox->minimumX , bbox->maximumX , bbox->maximumX-bbox->minimumX);
|
||||
if (fullFrameWidth>=fullFrameHeight)
|
||||
{
|
||||
//fprintf(stderr,"Since the whole frame has %u pixels\n",fullFrameWidth);
|
||||
//fprintf(stderr,"And we will use the dimension of the Y axis aka %u pixels to crop a rectangle\n",fullFrameHeight);
|
||||
|
||||
if ( (bbox!=0) && (bbox->populated) )
|
||||
{
|
||||
dimension = fullFrameHeight;
|
||||
//TODO:
|
||||
//if (bodyHeight<dimension) { dimension = bodyHeight; }
|
||||
//if (dimension<inputHeight2DJointDetector) { dimension = inputHeight2DJointDetector; }
|
||||
|
||||
*width=dimension;
|
||||
*height=dimension;
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------
|
||||
//-------------------------------------------------------------------------------------------------------
|
||||
// Center on X axis..
|
||||
//-------------------------------------------------------------------------------------------------------
|
||||
//-------------------------------------------------------------------------------------------------------
|
||||
float bodyCenterX = bbox->minimumX + (float) bodyWidth/2;
|
||||
//fprintf(stderr,"The center X of the body lies at %0.2f\n",bodyCenterX);
|
||||
|
||||
//fprintf(stderr,"We can afford %u pixels left and right of the body center \n",(unsigned int) *width/2);
|
||||
float cropStartX = bodyCenterX - *width/2;
|
||||
|
||||
if (cropStartX<0)
|
||||
{
|
||||
cropStartX=0; //Overflow..
|
||||
}
|
||||
if (cropStartX>fullFrameWidth-fullFrameHeight)
|
||||
{
|
||||
cropStartX=fullFrameWidth-fullFrameHeight;
|
||||
}
|
||||
|
||||
//Neural Networks cause flicker, if we don't have exactly the same
|
||||
//bounding box it's ok just keep the previous, it will help with flicker a lot..
|
||||
if ( abs(*x - (unsigned int) cropStartX) > noiseThreshold )
|
||||
{
|
||||
*x = (unsigned int) cropStartX;
|
||||
}
|
||||
//fprintf(stderr,"This means starting at %u and ending at %u\n",(unsigned int) *x, *x+*width);
|
||||
|
||||
/*
|
||||
//-------------------------------------------------------------------------------------------------------
|
||||
//-------------------------------------------------------------------------------------------------------
|
||||
// Center on Y axis..
|
||||
//-------------------------------------------------------------------------------------------------------
|
||||
//-------------------------------------------------------------------------------------------------------
|
||||
float bodyCenterY = bbox->minimumY+ (float) bodyHeight/2;
|
||||
//fprintf(stderr,"The center X of the body lies at %0.2f\n",bodyCenterX);
|
||||
|
||||
//fprintf(stderr,"We can afford %u pixels up and down of the body center \n",(unsigned int) *height/2);
|
||||
float cropStartY = bodyCenterY - *height/2;
|
||||
|
||||
if (cropStartY<0) { cropStartY=0; } //Overflow..
|
||||
if (cropStartY>fullFrameHeight) { cropStartY=fullFrameHeight; }
|
||||
|
||||
//Neural Networks cause flicker, if we don't have exactly the same
|
||||
//bounding box it's ok just keep the previous, it will help with flicker a lot..
|
||||
if ( abs(*y - (unsigned int) cropStartY) > 4 )
|
||||
{
|
||||
*y = (unsigned int) cropStartY;
|
||||
}
|
||||
*/
|
||||
|
||||
|
||||
//std::cerr<<"Normal Bounding Box derived "<<*x<<","<<*y<<" to "<<*x+*width<<","<<*y+*height<<" \n";
|
||||
}
|
||||
else
|
||||
{
|
||||
//No skeleton? just crop in the center..
|
||||
*x=(fullFrameWidth-fullFrameHeight)/2;
|
||||
*y=0;
|
||||
*width=fullFrameHeight;
|
||||
*height=fullFrameHeight;
|
||||
}
|
||||
}
|
||||
else if (fullFrameWidth<fullFrameHeight)
|
||||
{
|
||||
if ( (bbox!=0) && (bbox->populated) )
|
||||
{
|
||||
dimension = fullFrameWidth;
|
||||
//TODO:
|
||||
//if (bodyHeight<dimension) { dimension = bodyHeight; }
|
||||
//if (dimension<inputHeight2DJointDetector) { dimension = inputHeight2DJointDetector; }
|
||||
|
||||
*width=dimension;
|
||||
*height=dimension;
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------
|
||||
//-------------------------------------------------------------------------------------------------------
|
||||
// Center on X axis..
|
||||
//-------------------------------------------------------------------------------------------------------
|
||||
//-------------------------------------------------------------------------------------------------------
|
||||
float bodyCenterY = bbox->minimumY + (float) bodyHeight/2;
|
||||
//fprintf(stderr,"The center X of the body lies at %0.2f\n",bodyCenterX);
|
||||
|
||||
//fprintf(stderr,"We can afford %u pixels left and right of the body center \n",(unsigned int) *width/2);
|
||||
float cropStartY = bodyCenterY - *width/2;
|
||||
|
||||
if (cropStartY<0)
|
||||
{
|
||||
cropStartY=0; //Overflow..
|
||||
}
|
||||
if (cropStartY>fullFrameHeight-fullFrameWidth)
|
||||
{
|
||||
cropStartY=fullFrameHeight-fullFrameWidth;
|
||||
}
|
||||
|
||||
//Neural Networks cause flicker, if we don't have exactly the same
|
||||
//bounding box it's ok just keep the previous, it will help with flicker a lot..
|
||||
if ( abs(*y - (unsigned int) cropStartY) > noiseThreshold )
|
||||
{
|
||||
*y = (unsigned int) cropStartY;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
//No skeleton? just crop in the center..
|
||||
*x=0;
|
||||
*y=(fullFrameHeight-fullFrameWidth)/2;
|
||||
*width=fullFrameWidth;
|
||||
*height=fullFrameWidth;
|
||||
}
|
||||
}
|
||||
|
||||
if (
|
||||
( *x + *width > fullFrameWidth ) ||
|
||||
( *y + *height > fullFrameHeight )
|
||||
)
|
||||
{
|
||||
//We failed..!
|
||||
*x=0;
|
||||
*y=0;
|
||||
*width=fullFrameWidth;
|
||||
*height=fullFrameWidth;
|
||||
return 0;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
#pragma once
|
||||
|
||||
|
||||
#include "opencv2/opencv.hpp"
|
||||
using namespace cv;
|
||||
|
||||
|
||||
int getBestCropWindow(
|
||||
int maximumCrop,
|
||||
unsigned int * x,
|
||||
unsigned int * y,
|
||||
unsigned int * width,
|
||||
unsigned int * height,
|
||||
struct boundingBox * bbox,
|
||||
unsigned int inputWidth2DJointDetector,
|
||||
unsigned int inputHeight2DJointDetector,
|
||||
unsigned int fullFrameWidth,
|
||||
unsigned int fullFrameHeight
|
||||
);
|
||||
@@ -0,0 +1,725 @@
|
||||
#include "jointEstimator2D.hpp"
|
||||
#include <vector>
|
||||
#include <algorithm> // std::sort
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <time.h>
|
||||
|
||||
unsigned long tickBaseJointEstimator = 0;
|
||||
|
||||
unsigned long GetTickCountMicrosecondsJointEstimator()
|
||||
{
|
||||
struct timespec ts;
|
||||
if ( clock_gettime(CLOCK_MONOTONIC,&ts) != 0)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (tickBaseJointEstimator==0)
|
||||
{
|
||||
tickBaseJointEstimator = ts.tv_sec*1000000 + ts.tv_nsec/1000;
|
||||
return 0;
|
||||
}
|
||||
|
||||
return ( ts.tv_sec*1000000 + ts.tv_nsec/1000 ) - tickBaseJointEstimator;
|
||||
}
|
||||
|
||||
|
||||
int dumpHeatmapToCSVFile(const char * filename,struct JointEstimator2D * jnet,std::vector<float> heatmap)
|
||||
{
|
||||
unsigned int width = jnet->heatmapWidth2DJointDetector;
|
||||
unsigned int height = jnet->heatmapHeight2DJointDetector;
|
||||
|
||||
FILE * fp = fopen(filename,"w");
|
||||
if (fp!=0)
|
||||
{
|
||||
//---------------------------
|
||||
// Header
|
||||
//---------------------------
|
||||
for (int x=0; x<width; x++)
|
||||
{
|
||||
if (x!=0)
|
||||
{
|
||||
fprintf(fp,",");
|
||||
}
|
||||
fprintf(fp,"x=%u",x);
|
||||
}
|
||||
fprintf(fp,"\n");
|
||||
//---------------------------
|
||||
|
||||
//---------------------------
|
||||
// Body
|
||||
//---------------------------
|
||||
unsigned int i=0;
|
||||
for (int y=0; y<height; y++)
|
||||
{
|
||||
for (int x=0; x<width; x++)
|
||||
{
|
||||
if (x!=0)
|
||||
{
|
||||
fprintf(fp,",");
|
||||
}
|
||||
if (heatmap[i]>0.01)
|
||||
{
|
||||
fprintf(fp,"%f",heatmap[i]);
|
||||
}
|
||||
else if (-0.01>heatmap[i])
|
||||
{
|
||||
fprintf(fp,"%f",heatmap[i]);
|
||||
}
|
||||
else
|
||||
{
|
||||
fprintf(fp,"0");
|
||||
}
|
||||
++i;
|
||||
}
|
||||
fprintf(fp,"\n");
|
||||
}
|
||||
//---------------------------
|
||||
fclose(fp);
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
int loadJointEstimator2D(struct JointEstimator2D * jnet,int joint2DEstimatorSelected,int usePAFs,unsigned int forceCPU)
|
||||
{
|
||||
memset(jnet,0,sizeof(struct JointEstimator2D));
|
||||
|
||||
const char networkPathOpenPoseMiniStatic[]="dataset/combinedModel/openpose_model.pb";
|
||||
const char networkPathVnectStatic[]="dataset/combinedModel/vnect_sm_pafs_8.1k.pb";
|
||||
const char networkPathFORTHStatic[]="dataset/combinedModel/mobnet2_tiny_vnect_sm_1.9k.pb";
|
||||
jnet->networkPath = (char*) networkPathFORTHStatic;
|
||||
jnet->joint2DSensitivityPercent=30;
|
||||
|
||||
char networkInputLayer[]="input_1";
|
||||
char networkOutputLayer[]="k2tfout_0";
|
||||
jnet->numberOfOutputTensors = 3;
|
||||
jnet->heatmapWidth2DJointDetector= 46;
|
||||
jnet->heatmapHeight2DJointDetector= 46;
|
||||
|
||||
jnet->inputWidth2DJointDetector = 368;
|
||||
jnet->inputHeight2DJointDetector = 368;
|
||||
jnet->numberOfHeatmaps = 19;
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
switch (joint2DEstimatorSelected)
|
||||
{
|
||||
case JOINT_2D_ESTIMATOR_FORTH :
|
||||
jnet->networkPath=(char*) networkPathFORTHStatic;
|
||||
networkOutputLayer[8]='0';
|
||||
jnet->joint2DSensitivityPercent=30;
|
||||
jnet->numberOfOutputTensors = 3;
|
||||
break;
|
||||
case JOINT_2D_ESTIMATOR_VNECT :
|
||||
jnet->networkPath = (char*) networkPathVnectStatic;
|
||||
networkOutputLayer[8]='1';
|
||||
jnet->joint2DSensitivityPercent=20;
|
||||
jnet->numberOfOutputTensors = 4;
|
||||
break;
|
||||
case JOINT_2D_ESTIMATOR_OPENPOSE :
|
||||
jnet->networkPath=(char*) networkPathOpenPoseMiniStatic;
|
||||
networkOutputLayer[8]='1';
|
||||
jnet->joint2DSensitivityPercent=40;
|
||||
jnet->numberOfOutputTensors = 4;
|
||||
break;
|
||||
default :
|
||||
fprintf(stderr,"No 2D Joint Estimator Selected..\n");
|
||||
break;
|
||||
};
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
if (
|
||||
loadTensorflowInstance(
|
||||
&jnet->network,
|
||||
jnet->networkPath,
|
||||
networkInputLayer,
|
||||
networkOutputLayer,
|
||||
forceCPU
|
||||
)
|
||||
)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
//-----------------------------------------------------------------------------
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
int unloadJointEstimator2D(struct JointEstimator2D * jnet)
|
||||
{
|
||||
return unloadTensorflow(&jnet->network);
|
||||
}
|
||||
|
||||
|
||||
int sortBlobsBasedOnMaximumActivation(struct HeatmapBlob blobA,struct HeatmapBlob blobB)
|
||||
{
|
||||
return blobA.peakValue > blobB.peakValue;
|
||||
}
|
||||
|
||||
|
||||
|
||||
int updateSubpixelPeak(struct JointEstimator2D * jnet,struct HeatmapBlob * blob,std::vector<float> heatmap,unsigned int width,unsigned int height)
|
||||
{
|
||||
//Uncomment to disable subpixel code..
|
||||
//blob->subpixelPeakX = (float) blob->peakX;
|
||||
//blob->subpixelPeakY = (float) blob->peakY;
|
||||
//return 0;
|
||||
|
||||
#define DEBUG_SUBPIXEL_GRADIENT 0
|
||||
|
||||
#if DEBUG_SUBPIXEL_GRADIENT
|
||||
std::vector<float> gradientX(width*height);
|
||||
std::vector<float> gradientY(width*height);
|
||||
#endif
|
||||
|
||||
|
||||
if (blob->peakValue==0.0)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
float vX=(float) blob->peakX;
|
||||
float vY=(float) blob->peakY;
|
||||
float normalizedValue=0.0;
|
||||
unsigned int location=0;
|
||||
|
||||
for (signed int y=0; y<blob->height; y++)
|
||||
{
|
||||
for (signed int x=0; x<blob->width; x++)
|
||||
{
|
||||
//fprintf(stderr,"Blob element (x=%u,y=%u) ",x,y);
|
||||
location = (width * (y+blob->y)) + (x+blob->x);
|
||||
//fprintf(stderr,"Location %u",location);
|
||||
|
||||
if (location<heatmap.size())
|
||||
{
|
||||
normalizedValue=(float) heatmap[location] / blob->peakValue;
|
||||
normalizedValue= normalizedValue / ( blob->width * blob->height);
|
||||
//fprintf(stderr,"NormalValue %0.2f",normalizedValue);
|
||||
|
||||
signed int peakInRelationToBlobX = (signed int) ((signed int) blob->peakX - (signed int) blob->x);
|
||||
signed int peakInRelationToBlobY = (signed int) ((signed int) blob->peakY - (signed int) blob->y);
|
||||
|
||||
signed int relativePositionToPeakX = (signed int) ( (signed int) x - (signed int) peakInRelationToBlobX);
|
||||
signed int relativePositionToPeakY = (signed int) ( (signed int) y - (signed int) peakInRelationToBlobY);
|
||||
//fprintf(stderr,"Ppeak %d,%d",posX,posY);
|
||||
|
||||
|
||||
|
||||
float nX=(float) relativePositionToPeakX*normalizedValue;
|
||||
float nY=(float) relativePositionToPeakY*normalizedValue;
|
||||
//fprintf(stderr,"Add %f,%f\n",nX,nY);
|
||||
|
||||
#if DEBUG_SUBPIXEL_GRADIENT
|
||||
gradientX[location]=nX;
|
||||
gradientY[location]=nY;
|
||||
#endif
|
||||
|
||||
|
||||
if ( (nX!=nX) || (nY!=nY) )
|
||||
{
|
||||
//Handle NaN
|
||||
}
|
||||
else
|
||||
{
|
||||
//fprintf(stderr,"%f,%f ",nX,nY);
|
||||
vX=vX+nX;
|
||||
vY=vY+nY;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
fprintf(stderr,"updateSubpixelPeak overflow..\n");
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#if DEBUG_SUBPIXEL_GRADIENT
|
||||
char filename[512];
|
||||
snprintf(filename,512,"GradientX.csv");
|
||||
dumpHeatmapToCSVFile(filename,jnet,gradientX);
|
||||
snprintf(filename,512,"GradientY.csv");
|
||||
dumpHeatmapToCSVFile(filename,jnet,gradientY);
|
||||
snprintf(filename,512,"Values.csv");
|
||||
dumpHeatmapToCSVFile(filename,jnet,heatmap);
|
||||
#endif
|
||||
|
||||
blob->subpixelPeakX = vX;
|
||||
blob->subpixelPeakY = vY;
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
int isNeighborWithBlob(char * blobLabels,int x,int y,int width,int height)
|
||||
{
|
||||
for (int iY=-1; iY<1; iY++)
|
||||
{
|
||||
for (int iX=-1; iX<=1; iX++)
|
||||
{
|
||||
if ( (iX==0) && (iY==0) )
|
||||
{
|
||||
|
||||
}
|
||||
else if (
|
||||
(iX+x>=0) &&
|
||||
(iY+y>=0) &&
|
||||
(iX+x<width) &&
|
||||
(iY+y<height)
|
||||
)
|
||||
{
|
||||
int location = width * (y+iY) + (x+iX);
|
||||
if (blobLabels[location]!=0)
|
||||
{
|
||||
return blobLabels[location];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
std::vector<struct HeatmapBlob> getBlobsFromHeatmap(struct JointEstimator2D * jnet,unsigned int heatmapID,std::vector<float> heatmap)
|
||||
{
|
||||
unsigned int width = jnet->heatmapWidth2DJointDetector;
|
||||
unsigned int height = jnet->heatmapHeight2DJointDetector;
|
||||
|
||||
struct HeatmapBlob emptyBlob;
|
||||
emptyBlob.x=width+1;
|
||||
emptyBlob.y=height+1;
|
||||
emptyBlob.width=0;
|
||||
emptyBlob.height=0;
|
||||
emptyBlob.width=0;
|
||||
|
||||
emptyBlob.peakX=0;
|
||||
emptyBlob.peakY=0;
|
||||
emptyBlob.peakValue=0.0;
|
||||
|
||||
emptyBlob.subpixelPeakX=0.0;
|
||||
emptyBlob.subpixelPeakY=0.0;
|
||||
|
||||
std::vector<struct HeatmapBlob> blobsEncountered;
|
||||
char blobLabels[width*height]= {0};
|
||||
unsigned int currentBlobLabel=1;
|
||||
int onHorizontalBlob=0;
|
||||
int labelID=0;
|
||||
|
||||
unsigned int i=0;
|
||||
float threshold = 0.1; //(float) jnet->joint2DSensitivityPercent/100;
|
||||
for (int y=0; y<height; y++)
|
||||
{
|
||||
for (int x=0; x<width; x++)
|
||||
{
|
||||
if ( heatmap[i] > threshold )
|
||||
{
|
||||
|
||||
if (!onHorizontalBlob)
|
||||
{
|
||||
//We were not on a horizontal blob so we need to search..!
|
||||
labelID=isNeighborWithBlob(blobLabels,x,y,width,height);
|
||||
if (!labelID)
|
||||
{
|
||||
//Our search did not give us a result
|
||||
//This is a new blob disconnected from previous blobs..!
|
||||
blobLabels[i]=currentBlobLabel;
|
||||
onHorizontalBlob=currentBlobLabel;
|
||||
labelID=currentBlobLabel-1;
|
||||
++currentBlobLabel;
|
||||
blobsEncountered.push_back(emptyBlob);
|
||||
onHorizontalBlob=1;
|
||||
}
|
||||
else
|
||||
{
|
||||
//Already Existing Blob found we will add this pixel to it
|
||||
onHorizontalBlob=labelID;
|
||||
blobLabels[i]=onHorizontalBlob;
|
||||
labelID=labelID-1;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
//If we are already on a horizontal blob dont do expensive search
|
||||
blobLabels[i]=onHorizontalBlob;
|
||||
labelID=onHorizontalBlob-1;
|
||||
}
|
||||
|
||||
|
||||
if (labelID<blobsEncountered.size())
|
||||
{
|
||||
//fprintf(stderr,"Hit at %u,%u\n",x,y);
|
||||
//fprintf(stderr,"%f ",heatmap[i]);
|
||||
//Update Blob Start at X Axis
|
||||
if (x<blobsEncountered[labelID].x)
|
||||
{
|
||||
blobsEncountered[labelID].x=x;
|
||||
}
|
||||
|
||||
//Update Blob Start at Y Axis
|
||||
if (y<blobsEncountered[labelID].y)
|
||||
{
|
||||
blobsEncountered[labelID].y=y;
|
||||
}
|
||||
|
||||
//Update Blob Width
|
||||
int thisLineWidth=1+x-blobsEncountered[labelID].x;
|
||||
if (thisLineWidth>blobsEncountered[labelID].width)
|
||||
{
|
||||
blobsEncountered[labelID].width=thisLineWidth;
|
||||
}
|
||||
|
||||
//Update Blob Height
|
||||
int thisLineHeight=1+y-blobsEncountered[labelID].y;
|
||||
if (thisLineHeight>blobsEncountered[labelID].height)
|
||||
{
|
||||
blobsEncountered[labelID].height=thisLineHeight;
|
||||
}
|
||||
|
||||
//Update Peak to use as center later..
|
||||
if (blobsEncountered[labelID].peakValue<heatmap[i])
|
||||
{
|
||||
blobsEncountered[labelID].peakValue=heatmap[i];
|
||||
blobsEncountered[labelID].peakX=x;
|
||||
blobsEncountered[labelID].peakY=y;
|
||||
}
|
||||
}
|
||||
}//Above activation threshold..
|
||||
else
|
||||
{
|
||||
//We just left a blob..
|
||||
onHorizontalBlob=0;
|
||||
}
|
||||
++i;
|
||||
} //End of X loop
|
||||
//We just left a line so the blob has ended..
|
||||
onHorizontalBlob=0;
|
||||
} //End of Y loop
|
||||
|
||||
for (int blobID=0; blobID<blobsEncountered.size(); blobID++)
|
||||
{
|
||||
updateSubpixelPeak(jnet,&blobsEncountered[blobID],heatmap,width,height);
|
||||
}
|
||||
|
||||
//Make sure the best value is first..
|
||||
std::sort(blobsEncountered.begin(), blobsEncountered.end(),sortBlobsBasedOnMaximumActivation);
|
||||
|
||||
|
||||
/*
|
||||
fprintf(stderr,"Heatmap %u %s--------\n",heatmapID,UT_COCOBodyNames[heatmapID]);
|
||||
for (int blobID=0; blobID<blobsEncountered.size(); blobID++)
|
||||
{
|
||||
fprintf(stderr,"Blob %u/%lu - ",blobID,blobsEncountered.size());
|
||||
fprintf(stderr,"x=%u,y=%u(%ux%u) "
|
||||
,blobsEncountered[blobID].x,blobsEncountered[blobID].y
|
||||
,blobsEncountered[blobID].width,blobsEncountered[blobID].height
|
||||
);
|
||||
|
||||
fprintf(stderr,"pX=%u,pY=%u>",blobsEncountered[blobID].peakX,blobsEncountered[blobID].peakY);
|
||||
fprintf(stderr,"%0.2f",blobsEncountered[blobID].peakValue);
|
||||
|
||||
fprintf(stderr," subpixel(%0.2f,%0.2f)",blobsEncountered[blobID].subpixelPeakX,blobsEncountered[blobID].subpixelPeakY);
|
||||
fprintf(stderr,"\n");
|
||||
}
|
||||
*/
|
||||
|
||||
return blobsEncountered;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
int estimate2DSkeletonsFromHeatmaps(struct JointEstimator2D * jnet,struct Skeletons2DDetected * result,std::vector<std::vector<float> > heatmaps)
|
||||
{
|
||||
//char filename[512];
|
||||
//fprintf(stderr,"New Frame:\n");
|
||||
|
||||
unsigned long startTime = GetTickCountMicrosecondsJointEstimator();
|
||||
int blobsProceesed=0;
|
||||
for (int heatmapID=0; heatmapID<heatmaps.size(); heatmapID++)
|
||||
{
|
||||
unsigned int body25ID = heatmapCorrespondenceToBODY25[heatmapID];
|
||||
|
||||
if (heatmapID!=UT_COCO_Bkg)
|
||||
{
|
||||
result->skeletons[0].body.joint2D[body25ID].x = 0;
|
||||
result->skeletons[0].body.joint2D[body25ID].y = 0;
|
||||
result->skeletons[0].body.active[body25ID]=0.0;
|
||||
//--------------------------------------------------------
|
||||
std::vector<struct HeatmapBlob> blobs = getBlobsFromHeatmap(jnet,heatmapID,heatmaps[heatmapID]);
|
||||
if (blobs.size()>0)
|
||||
{
|
||||
result->skeletons[0].body.isPopulated=1;
|
||||
float x=(float) blobs[0].subpixelPeakX/ jnet->heatmapWidth2DJointDetector;
|
||||
float y=(float) blobs[0].subpixelPeakY/ jnet->heatmapHeight2DJointDetector;
|
||||
|
||||
result->skeletons[0].body.joint2D[body25ID].x = x;
|
||||
result->skeletons[0].body.joint2D[body25ID].y = y;
|
||||
if ( (x!=0) && (y!=0) ) {
|
||||
result->skeletons[0].body.active[body25ID]=1.0;
|
||||
}
|
||||
|
||||
if (blobsProceesed==0)
|
||||
{
|
||||
//Update Bbox Min
|
||||
result->skeletons[0].body.bbox2D[0].x = x;
|
||||
result->skeletons[0].body.bbox2D[0].y = y;
|
||||
//Update Bbox Max
|
||||
result->skeletons[0].body.bbox2D[1].x = x;
|
||||
result->skeletons[0].body.bbox2D[1].y = y;
|
||||
}
|
||||
else
|
||||
{
|
||||
// if Min X > current X
|
||||
if (result->skeletons[0].body.bbox2D[0].x > x )
|
||||
{
|
||||
result->skeletons[0].body.bbox2D[0].x =x;
|
||||
}
|
||||
// if Min Y > current Y
|
||||
if (result->skeletons[0].body.bbox2D[0].y > y )
|
||||
{
|
||||
result->skeletons[0].body.bbox2D[0].y =y;
|
||||
}
|
||||
// if Max X < current X
|
||||
if (result->skeletons[0].body.bbox2D[1].x < x )
|
||||
{
|
||||
result->skeletons[0].body.bbox2D[1].x =x;
|
||||
}
|
||||
// if Max Y < current Y
|
||||
if (result->skeletons[0].body.bbox2D[1].y < y )
|
||||
{
|
||||
result->skeletons[0].body.bbox2D[1].y =y;
|
||||
}
|
||||
}
|
||||
|
||||
++blobsProceesed;
|
||||
}
|
||||
//--------------------------------------------------------
|
||||
//snprintf(filename,512,"heatmap_%u.csv",heatmapID);
|
||||
//dumpHeatmapToCSVFile(filename,jnet,heatmaps[0]);
|
||||
//--------------------------------------------------------
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
The following joints are not covered by the current networks
|
||||
BODY25_MidHip,
|
||||
BODY25_LBigToe,
|
||||
BODY25_LSmallToe,
|
||||
BODY25_LHeel,
|
||||
BODY25_RBigToe,
|
||||
BODY25_RSmallToe,
|
||||
BODY25_RHeel,
|
||||
*/
|
||||
|
||||
//Mid hip can be approximated by LHip and RHip
|
||||
//--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
if (
|
||||
(result->skeletons[0].body.joint2D[BODY25_RHip].x!=0) && (result->skeletons[0].body.joint2D[BODY25_LHip].x!=0) &&
|
||||
(result->skeletons[0].body.joint2D[BODY25_RHip].y!=0) && (result->skeletons[0].body.joint2D[BODY25_LHip].y!=0)
|
||||
)
|
||||
{
|
||||
result->skeletons[0].body.joint2D[BODY25_MidHip].x = (float) (result->skeletons[0].body.joint2D[BODY25_RHip].x+result->skeletons[0].body.joint2D[BODY25_LHip].x)/2;
|
||||
result->skeletons[0].body.joint2D[BODY25_MidHip].y = (float) (result->skeletons[0].body.joint2D[BODY25_RHip].y+result->skeletons[0].body.joint2D[BODY25_LHip].y)/2;
|
||||
result->skeletons[0].body.jointAccuracy[BODY25_MidHip] = (result->skeletons[0].body.jointAccuracy[BODY25_RHip]+result->skeletons[0].body.jointAccuracy[BODY25_LHip])/2;
|
||||
result->skeletons[0].body.active[BODY25_MidHip] = 1.0;
|
||||
//fprintf(stderr,"Mid hip populated and resides @ (%0.2f,%0.2f)\n",result->skeletons[0].body.joint2D[BODY25_MidHip].x,result->skeletons[0].body.joint2D[BODY25_MidHip].y);
|
||||
} else
|
||||
{
|
||||
result->skeletons[0].body.joint2D[BODY25_MidHip].x = 0;
|
||||
result->skeletons[0].body.joint2D[BODY25_MidHip].y = 0;
|
||||
result->skeletons[0].body.jointAccuracy[BODY25_MidHip] = 0;
|
||||
result->skeletons[0].body.active[BODY25_MidHip] = 0.0;
|
||||
//fprintf(stderr,"Cannot populate Mid hip, this will degrade output!\n");
|
||||
}
|
||||
//--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
result->numberOfSkeletonsDetected=1;
|
||||
|
||||
unsigned long endTime = GetTickCountMicrosecondsJointEstimator();
|
||||
|
||||
// fprintf(stderr,"Resolving joint subpixel peaks took %lu microseconds\n",endTime-startTime);
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
int convertNormalized2DJointsToOriginalImageCoordinates(
|
||||
struct JointEstimator2D * jnet,
|
||||
float * x,
|
||||
float * y,
|
||||
int correctOffset
|
||||
)
|
||||
{
|
||||
//It is very common for points to be empty, they cannot be normalized so its best if we have
|
||||
//a quick path for them..
|
||||
if ( (*x==0.0) && (*y==0.0) ) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (*x>1.0) {
|
||||
*x=1.0;
|
||||
}
|
||||
if (*y>1.0) {
|
||||
*y=1.0;
|
||||
}
|
||||
|
||||
float normalizedX = *x;
|
||||
float normalizedY = *y;
|
||||
|
||||
//fprintf(stderr,"Initial point is %0.2f,%0.2f\n",normalizedX,normalizedY);
|
||||
|
||||
float frameOfReferenceOfTensorflowX = normalizedX * jnet->inputWidth2DJointDetector;
|
||||
float frameOfReferenceOfTensorflowY = normalizedY * jnet->inputHeight2DJointDetector;
|
||||
|
||||
//fprintf(stderr,"Tensorflow point is %0.2f,%0.2f\n",frameOfReferenceOfTensorflowX,frameOfReferenceOfTensorflowY);
|
||||
|
||||
float scaleFromTensorflowToBoundingBoxX = (float) jnet->crop.croppedDimensionWidth / jnet->inputWidth2DJointDetector;
|
||||
float scaleFromTensorflowToBoundingBoxY = (float) jnet->crop.croppedDimensionHeight / jnet->inputHeight2DJointDetector;
|
||||
|
||||
*x = /*jnet->crop.offsetX +*/ (frameOfReferenceOfTensorflowX * scaleFromTensorflowToBoundingBoxX);
|
||||
*y = /*jnet->crop.offsetY +*/ (frameOfReferenceOfTensorflowY * scaleFromTensorflowToBoundingBoxY);
|
||||
|
||||
if (correctOffset)
|
||||
{
|
||||
*x += jnet->crop.offsetX;
|
||||
*y += jnet->crop.offsetY;
|
||||
}
|
||||
//fprintf(stderr,"Final point is %0.2f,%0.2f\n",*x,*y);
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
std::vector<std::vector<float> > getHeatmaps(struct JointEstimator2D * jnet,unsigned char * rgbData,unsigned int width,unsigned int height)
|
||||
{
|
||||
// pass the frame to the Estimator
|
||||
|
||||
unsigned long startTime = GetTickCountMicrosecondsJointEstimator();
|
||||
std::vector<std::vector<float> > joint2DOutput = predictTensorflowOnArrayOfHeatmaps(
|
||||
&jnet->network,
|
||||
(unsigned int) width,
|
||||
(unsigned int) height,
|
||||
(float*) rgbData,
|
||||
jnet->heatmapWidth2DJointDetector,
|
||||
jnet->heatmapHeight2DJointDetector,
|
||||
jnet->numberOfOutputTensors
|
||||
);
|
||||
unsigned long endTime = GetTickCountMicrosecondsJointEstimator();
|
||||
|
||||
//fprintf(stderr,"Running 2D joint estimator took %lu microseconds\n",endTime-startTime);
|
||||
return joint2DOutput;
|
||||
}
|
||||
|
||||
|
||||
|
||||
int estimate2DSkeletonsFromImage(struct JointEstimator2D * jnet,struct Skeletons2DDetected * result,unsigned char * rgbData,unsigned int width,unsigned int height)
|
||||
{
|
||||
/*
|
||||
unsigned long startTime = GetTickCountMicroseconds();
|
||||
std::vector<cv::Point_<float> > pointsOf2DSkeleton = predictAndReturnSingleSkeletonOf2DCOCOJoints(
|
||||
&jnet->network,
|
||||
bgr,
|
||||
minThreshold,
|
||||
visualize,
|
||||
saveVisualization,
|
||||
frameNumber,
|
||||
inputWidth2DJointDetector,
|
||||
inputHeight2DJointDetector,
|
||||
heatmapWidth2DJointDetector,
|
||||
heatmapHeight2DJointDetector,
|
||||
numberOfHeatmaps,
|
||||
numberOfOutputTensors
|
||||
);
|
||||
unsigned long endTime = GetTickCountMicroseconds();
|
||||
*fps = convertStartEndTimeFromMicrosecondsToFPS(startTime,endTime);
|
||||
*/
|
||||
|
||||
|
||||
|
||||
// pass the frame to the Estimator
|
||||
std::vector<std::vector<float> > joint2DOutput = predictTensorflowOnArrayOfHeatmaps(
|
||||
&jnet->network,
|
||||
(unsigned int) width,
|
||||
(unsigned int) height,
|
||||
(float*) rgbData,
|
||||
jnet->heatmapWidth2DJointDetector,
|
||||
jnet->heatmapHeight2DJointDetector,
|
||||
jnet->numberOfOutputTensors
|
||||
);
|
||||
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
int restore2DJointsToInputFrameCoordinates(struct JointEstimator2D * jnet,struct Skeletons2DDetected * input)
|
||||
{
|
||||
for (unsigned int skID=0; skID<input->numberOfSkeletonsDetected; skID++)
|
||||
{
|
||||
for (int i=0; i<BODY25_PARTS; i++)
|
||||
{
|
||||
//fprintf(stderr,"normalized(%0.2f,%0.2f) ",input->skeletons[skID].body.joint2D[i].x,input->skeletons[skID].body.joint2D[i].y);
|
||||
convertNormalized2DJointsToOriginalImageCoordinates(jnet,&input->skeletons[skID].body.joint2D[i].x,&input->skeletons[skID].body.joint2D[i].y,1);
|
||||
//fprintf(stderr,"regular(%0.2f,%0.2f) ",input->skeletons[skID].body.joint2D[i].x,input->skeletons[skID].body.joint2D[i].y);
|
||||
}
|
||||
|
||||
/* //Currently dont have hand and head networks..!
|
||||
for (int i=0; i<COCO_HAND_PARTS; i++)
|
||||
{
|
||||
convertNormalized2DJointsToOriginalImageCoordinates(jnet,&input->skeletons[skID].leftHand.joint2D[i].x,&input->skeletons[skID].leftHand.joint2D[i].y,1);
|
||||
}
|
||||
|
||||
|
||||
for (int i=0; i<COCO_HAND_PARTS; i++)
|
||||
{
|
||||
convertNormalized2DJointsToOriginalImageCoordinates(jnet,&input->skeletons[skID].rightHand.joint2D[i].x,&input->skeletons[skID].rightHand.joint2D[i].y,1);
|
||||
}
|
||||
|
||||
for (int i=0; i<OP_HEAD_PARTS; i++)
|
||||
{
|
||||
convertNormalized2DJointsToOriginalImageCoordinates(jnet,&input->skeletons[skID].head.joint2D[i].x,&input->skeletons[skID].head.joint2D[i].y,1);
|
||||
}
|
||||
*/
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
|
||||
float percentOf2DPointsMissing(struct Skeletons2DDetected * input)
|
||||
{
|
||||
if (input->numberOfSkeletonsDetected==0) {
|
||||
return 100.0;
|
||||
}
|
||||
|
||||
unsigned int jointsThatExist=0;
|
||||
unsigned int jointsThatShouldExist=0;
|
||||
if (input->skeletons[0].body.isPopulated)
|
||||
{
|
||||
jointsThatShouldExist=BODY25_PARTS-2;
|
||||
for (int jID=0; jID<BODY25_PARTS; jID++)
|
||||
{
|
||||
if ( input->skeletons[0].body.active[jID] )
|
||||
{
|
||||
++jointsThatExist;
|
||||
}
|
||||
}
|
||||
|
||||
//fprintf(stderr,"%u/%u joints observed\n",jointsThatExist,jointsThatShouldExist);
|
||||
float percentOf2DPointsThatExist = (float) 100 * jointsThatExist / jointsThatShouldExist;
|
||||
return (float) 100.0 - percentOf2DPointsThatExist;
|
||||
}
|
||||
|
||||
//fprintf(stderr,"Body is not populated\n");
|
||||
return 100.0;
|
||||
}
|
||||
@@ -0,0 +1,296 @@
|
||||
#pragma once
|
||||
/** @file mocapnet.hpp
|
||||
* @brief The MocapNET C library
|
||||
* As seen in https://www.youtube.com/watch?v=fH5e-KMBvM0 , the MocapNET network requires two types of input.
|
||||
* The first is an uncompressed list of (x,y,v) joints and the second an NSDM array. To add to those the output consists of BVH
|
||||
* frames that must be accompanied by a header. This library internally handles all of these details.
|
||||
* @author Ammar Qammaz (AmmarkoV)
|
||||
*/
|
||||
#include "../Tensorflow/tensorflow.hpp"
|
||||
#include "../MocapNET2/MocapNETLib2/IO/commonSkeleton.hpp"
|
||||
|
||||
#include <iostream>
|
||||
#include <vector>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @brief 2D Skeletons Retreieved
|
||||
*/
|
||||
struct Skeletons2DDetected
|
||||
{
|
||||
unsigned int numberOfSkeletonsDetected;
|
||||
struct skeletonStructure skeletons[16];
|
||||
};
|
||||
|
||||
|
||||
|
||||
struct InputImageCrop
|
||||
{
|
||||
unsigned int offsetX;
|
||||
unsigned int offsetY;
|
||||
unsigned int croppedDimensionWidth;
|
||||
unsigned int croppedDimensionHeight;
|
||||
|
||||
//cropBBox,
|
||||
unsigned int frameWidth;
|
||||
unsigned int frameHeight;
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief MocapNET consists of separate classes/ensembles that are invoked for particular orientations.
|
||||
* This structure holds the required tensorflow instances to make MocapNET work.
|
||||
*/
|
||||
struct JointEstimator2D
|
||||
{
|
||||
struct TensorflowInstance network;
|
||||
char * networkPath;
|
||||
float joint2DSensitivityPercent;
|
||||
unsigned int numberOfOutputTensors;
|
||||
unsigned int heatmapWidth2DJointDetector;
|
||||
unsigned int heatmapHeight2DJointDetector;
|
||||
unsigned int inputWidth2DJointDetector;
|
||||
unsigned int inputHeight2DJointDetector;
|
||||
unsigned int numberOfHeatmaps;
|
||||
|
||||
struct InputImageCrop crop;
|
||||
int doCrop;
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @brief Each Blob is a rectangular area..
|
||||
* with one peak..
|
||||
*/
|
||||
struct HeatmapBlob
|
||||
{
|
||||
unsigned int x;
|
||||
unsigned int y;
|
||||
unsigned int width;
|
||||
unsigned int height;
|
||||
|
||||
unsigned int peakX;
|
||||
unsigned int peakY;
|
||||
float peakValue;
|
||||
|
||||
float subpixelPeakX;
|
||||
float subpixelPeakY;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @brief This is a list of included Joint 2D Estimators included.
|
||||
*/
|
||||
enum JOINT_2D_ESTIMATOR_SELECTED
|
||||
{
|
||||
JOINT_2D_ESTIMATOR_NONE=0,
|
||||
JOINT_2D_ESTIMATOR_FORTH,
|
||||
JOINT_2D_ESTIMATOR_VNECT,
|
||||
JOINT_2D_ESTIMATOR_OPENPOSE,
|
||||
//-----------------------------
|
||||
JOINT_2D_ESTIMATOR_NUMBER
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @brief This is an array of names for the input Joints expected from the utilities.
|
||||
*/
|
||||
static const char * UT_COCOBodyNames[] =
|
||||
{
|
||||
"Nose", //0
|
||||
"Neck", //1
|
||||
"RShoulder", //2
|
||||
"RElbow", //3
|
||||
"RWrist", //4
|
||||
"LShoulder", //5
|
||||
"LElbow", //6
|
||||
"LWrist", //7
|
||||
"RHip", //8
|
||||
"RKnee", //9
|
||||
"RAnkle", //10
|
||||
"LHip", //11
|
||||
"LKnee", //12
|
||||
"LAnkle", //13
|
||||
"REye", //14
|
||||
"LEye", //15
|
||||
"REar", //16
|
||||
"LEar", //17
|
||||
"Bkg", //18
|
||||
//=================
|
||||
"End of Joint Names"
|
||||
};
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @brief This is a list of included Joint 2D Estimators included.
|
||||
*/
|
||||
enum JOINT_2D_ESTIMATOR_PART_LABEL
|
||||
{
|
||||
JOINT_2D_ESTIMATOR_PART_OF_NOTHING=0,
|
||||
JOINT_2D_ESTIMATOR_PART_OF_TORSO,
|
||||
JOINT_2D_ESTIMATOR_PART_OF_HEAD,
|
||||
JOINT_2D_ESTIMATOR_PART_OF_LEFT,
|
||||
JOINT_2D_ESTIMATOR_PART_OF_RIGHT,
|
||||
//-----------------------------
|
||||
JOINT_2D_ESTIMATOR_NUMBER_OF_PARTS
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @brief We want to distinguish limbs with labels ( to color them )
|
||||
*/
|
||||
static const int UT_COCOSkeletonJointsPartLabel[] =
|
||||
{
|
||||
// Part of Joint
|
||||
JOINT_2D_ESTIMATOR_PART_OF_TORSO, //UT_COCO_Nose,
|
||||
JOINT_2D_ESTIMATOR_PART_OF_TORSO, //UT_COCO_Neck,
|
||||
JOINT_2D_ESTIMATOR_PART_OF_RIGHT, //UT_COCO_RShoulder,
|
||||
JOINT_2D_ESTIMATOR_PART_OF_RIGHT, //UT_COCO_RElbow,
|
||||
JOINT_2D_ESTIMATOR_PART_OF_RIGHT, //UT_COCO_RWrist,
|
||||
JOINT_2D_ESTIMATOR_PART_OF_LEFT, //UT_COCO_LShoulder,
|
||||
JOINT_2D_ESTIMATOR_PART_OF_LEFT, //UT_COCO_LElbow,
|
||||
JOINT_2D_ESTIMATOR_PART_OF_LEFT, //UT_COCO_LWrist,
|
||||
JOINT_2D_ESTIMATOR_PART_OF_RIGHT, //UT_COCO_RHip,
|
||||
JOINT_2D_ESTIMATOR_PART_OF_RIGHT, //UT_COCO_RKnee,
|
||||
JOINT_2D_ESTIMATOR_PART_OF_RIGHT, //UT_COCO_RAnkle,
|
||||
JOINT_2D_ESTIMATOR_PART_OF_LEFT, //UT_COCO_LHip,
|
||||
JOINT_2D_ESTIMATOR_PART_OF_LEFT, //UT_COCO_LKnee,
|
||||
JOINT_2D_ESTIMATOR_PART_OF_LEFT, //UT_COCO_LAnkle,
|
||||
JOINT_2D_ESTIMATOR_PART_OF_HEAD, //UT_COCO_REye,
|
||||
JOINT_2D_ESTIMATOR_PART_OF_HEAD, //UT_COCO_LEye,
|
||||
JOINT_2D_ESTIMATOR_PART_OF_HEAD, //UT_COCO_REar,
|
||||
JOINT_2D_ESTIMATOR_PART_OF_HEAD, //UT_COCO_LEar,
|
||||
JOINT_2D_ESTIMATOR_PART_OF_NOTHING //UT_COCO_Bkg
|
||||
};
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @brief This is a programmer friendly enumerator of joint names expected from the utilities ( hence the prefix UT_ ) .
|
||||
* Please notice that these are not necessarily the same when converting to different data formats ( COCO / BODY25 / MocapNET etc )
|
||||
*/
|
||||
enum UT_COCOSkeletonJoints
|
||||
{
|
||||
UT_COCO_Nose=0,
|
||||
UT_COCO_Neck,
|
||||
UT_COCO_RShoulder,
|
||||
UT_COCO_RElbow,
|
||||
UT_COCO_RWrist,
|
||||
UT_COCO_LShoulder,
|
||||
UT_COCO_LElbow,
|
||||
UT_COCO_LWrist,
|
||||
UT_COCO_RHip,
|
||||
UT_COCO_RKnee,
|
||||
UT_COCO_RAnkle,
|
||||
UT_COCO_LHip,
|
||||
UT_COCO_LKnee,
|
||||
UT_COCO_LAnkle,
|
||||
UT_COCO_REye,
|
||||
UT_COCO_LEye,
|
||||
UT_COCO_REar,
|
||||
UT_COCO_LEar,
|
||||
UT_COCO_Bkg,
|
||||
//---------------------
|
||||
UT_COCO_PARTS
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @brief This is the parent relation map of COCO skeleton joints , we can easily find a joints parent using this enumerator
|
||||
*/
|
||||
static const int UT_COCOSkeletonJointsParentRelationMap[] =
|
||||
{
|
||||
// Parent Joint
|
||||
UT_COCO_Nose, //UT_COCO_Nose,
|
||||
UT_COCO_Nose, //UT_COCO_Neck,
|
||||
UT_COCO_Neck, //UT_COCO_RShoulder,
|
||||
UT_COCO_RShoulder, //UT_COCO_RElbow,
|
||||
UT_COCO_RElbow, //UT_COCO_RWrist,
|
||||
UT_COCO_Neck, //UT_COCO_LShoulder,
|
||||
UT_COCO_LShoulder, //UT_COCO_LElbow,
|
||||
UT_COCO_LElbow, //UT_COCO_LWrist,
|
||||
UT_COCO_Neck, //UT_COCO_RHip,
|
||||
UT_COCO_RHip, //UT_COCO_RKnee,
|
||||
UT_COCO_RKnee, //UT_COCO_RAnkle,
|
||||
UT_COCO_Neck, //UT_COCO_LHip,
|
||||
UT_COCO_LHip, //UT_COCO_LKnee,
|
||||
UT_COCO_LKnee, //UT_COCO_LAnkle,
|
||||
UT_COCO_Nose, //UT_COCO_REye,
|
||||
UT_COCO_Nose, //UT_COCO_LEye,
|
||||
UT_COCO_REye, //UT_COCO_REar,
|
||||
UT_COCO_LEye, //UT_COCO_LEar,
|
||||
UT_COCO_Bkg //UT_COCO_Bkg
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @brief An array of indexes to the parents of BODY25 skeleton joints
|
||||
*/
|
||||
static const int heatmapCorrespondenceToBODY25[] =
|
||||
{
|
||||
BODY25_Nose, // UT_COCO_Nose=0,
|
||||
BODY25_Neck, // UT_COCO_Neck,
|
||||
BODY25_RShoulder, //UT_COCO_RShoulder,
|
||||
BODY25_RElbow,// UT_COCO_RElbow,
|
||||
BODY25_RWrist,// UT_COCO_RWrist,
|
||||
BODY25_LShoulder,//UT_COCO_LShoulder,
|
||||
BODY25_LElbow,//UT_COCO_LElbow,
|
||||
BODY25_LWrist,//UT_COCO_LWrist,
|
||||
BODY25_RHip,//UT_COCO_RHip,
|
||||
BODY25_RKnee,//UT_COCO_RKnee,
|
||||
BODY25_RAnkle,//UT_COCO_RAnkle,
|
||||
BODY25_LHip,//UT_COCO_LHip,
|
||||
BODY25_LKnee,//UT_COCO_LKnee,
|
||||
BODY25_LAnkle,//UT_COCO_LAnkle,
|
||||
BODY25_REye,//UT_COCO_REye,
|
||||
BODY25_LEye,//UT_COCO_LEye,
|
||||
BODY25_REar,//UT_COCO_REar,
|
||||
BODY25_LEar,//UT_COCO_LEar,
|
||||
BODY25_Bkg,//UT_COCO_Bkg,
|
||||
};
|
||||
|
||||
|
||||
unsigned long GetTickCountMicrosecondsJointEstimator();
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @brief Load a 2D Joint Estimator from a .pb file on disk
|
||||
* @ingroup jointestimator
|
||||
* @param Pointer to a struct JointEstimator2D that will hold the tensorflow instances on load.
|
||||
* @param Quality setting, can currently be 1.0 ( highest quality ), 1.5 or 2.0 ( highest performance )
|
||||
* @param Flag that controls the use of PAFs
|
||||
* @param Force the usage of CPU for MocapNET ( should be 1 as MocapNET is designed for CPU while GPU handles 2D )
|
||||
* @retval 1 = Success loading the files , 0 = Failure
|
||||
*/
|
||||
int loadJointEstimator2D(struct JointEstimator2D * jnet,int joint2DEstimatorSelected,int usePAFs,unsigned int forceCPU);
|
||||
|
||||
|
||||
int unloadJointEstimator2D(struct JointEstimator2D * jnet);
|
||||
|
||||
int convertNormalized2DJointsToOriginalImageCoordinates(
|
||||
struct JointEstimator2D * jnet,
|
||||
float * x,
|
||||
float * y,
|
||||
int correctOffset
|
||||
);
|
||||
|
||||
int estimate2DSkeletonsFromImage(struct JointEstimator2D * jnet,struct Skeletons2DDetected * result,unsigned char * rgbData,unsigned int width,unsigned int height);
|
||||
|
||||
|
||||
|
||||
|
||||
int restore2DJointsToInputFrameCoordinates(struct JointEstimator2D * jnet,struct Skeletons2DDetected * input);
|
||||
|
||||
|
||||
float percentOf2DPointsMissing(struct Skeletons2DDetected * input);
|
||||
|
||||
int estimate2DSkeletonsFromHeatmaps(struct JointEstimator2D * jnet,struct Skeletons2DDetected * result,std::vector<std::vector<float> > heatmaps);
|
||||
|
||||
|
||||
std::vector<std::vector<float> > getHeatmaps(struct JointEstimator2D * jnet,unsigned char * rgbData,unsigned int width,unsigned int height);
|
||||
@@ -0,0 +1,217 @@
|
||||
#include "visualization.hpp"
|
||||
|
||||
#include "cameraControl.hpp"
|
||||
|
||||
int visualizeHeatmaps(struct JointEstimator2D * jointEstimator,std::vector<std::vector<float> > heatmapNNOutput,unsigned int frameNumber)
|
||||
{
|
||||
unsigned int cols = jointEstimator->heatmapWidth2DJointDetector;
|
||||
unsigned int rows = jointEstimator->heatmapHeight2DJointDetector;
|
||||
unsigned int hm = jointEstimator->numberOfHeatmaps;
|
||||
std::vector<cv::Mat> heatmaps;
|
||||
for(int i=0; i<hm; ++i)
|
||||
{
|
||||
cv::Mat h(rows,cols, CV_32FC1);
|
||||
for(int r=0; r<rows; ++r)
|
||||
{
|
||||
for(int c=0; c<cols; ++c)
|
||||
{
|
||||
int pos = r*cols+c;
|
||||
h.at<float>(r,c) = heatmapNNOutput[i][pos];
|
||||
}
|
||||
}
|
||||
heatmaps.push_back(h);
|
||||
}
|
||||
|
||||
#define DISPLAY_ALL_HEATMAPS 1
|
||||
//This code segment will display every returned heatmap in it's own window..
|
||||
#if DISPLAY_ALL_HEATMAPS
|
||||
int visualize=1;
|
||||
if (visualize)
|
||||
{
|
||||
unsigned int x=0;
|
||||
unsigned int y=0;
|
||||
char windowLabel[128];
|
||||
snprintf(windowLabel,128,"T");
|
||||
|
||||
for(int i=0; i<18; ++i)
|
||||
{
|
||||
snprintf(windowLabel,128,"Heatmap %u",i);
|
||||
if (frameNumber==0)
|
||||
{
|
||||
cv::namedWindow(windowLabel,1);
|
||||
cv::moveWindow(windowLabel, x,y);
|
||||
++frameNumber;
|
||||
}
|
||||
cv::imshow(windowLabel,heatmaps[i]);
|
||||
y=y+rows+30;
|
||||
if (y>700)
|
||||
{
|
||||
x=x+cols;
|
||||
y=0;
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
|
||||
//Basic Skeleton Visualization with big fonts to be legible on cluttered skeletons
|
||||
void dj_drawExtractedSkeletons(
|
||||
cv::Mat img,
|
||||
struct Skeletons2DDetected * sk,
|
||||
float factorX,
|
||||
float factorY
|
||||
)
|
||||
{
|
||||
cv::Scalar red = cv::Scalar(0,0,255);
|
||||
cv::Scalar green = cv::Scalar(0,255,0);
|
||||
cv::Scalar blue = cv::Scalar(255,0,0);
|
||||
cv::Scalar color=blue;
|
||||
|
||||
//Just the lines ( background layer)
|
||||
for (int skID=0; skID<sk->numberOfSkeletonsDetected; skID++)
|
||||
{
|
||||
for (int i=0; i<UT_COCO_PARTS; i++)
|
||||
{
|
||||
unsigned int jointID = heatmapCorrespondenceToBODY25[i%18];
|
||||
struct point2D * jointPoint = & sk->skeletons[skID].body.joint2D[jointID];
|
||||
|
||||
unsigned int parentID = heatmapCorrespondenceToBODY25[UT_COCOSkeletonJointsParentRelationMap[i%18]];
|
||||
if (parentID!=jointID)
|
||||
{
|
||||
struct point2D * parentPoint = & sk->skeletons[skID].body.joint2D[parentID];
|
||||
|
||||
if (
|
||||
(jointPoint->x > 0) &&
|
||||
(jointPoint->y > 0) &&
|
||||
(parentPoint->x > 0) &&
|
||||
(parentPoint->y > 0)
|
||||
)
|
||||
{
|
||||
cv::Point_<float> jointPointCV;
|
||||
jointPointCV.x = jointPoint->x * factorX;
|
||||
jointPointCV.y = jointPoint->y * factorY;
|
||||
cv::Point_<float> parentPointCV;
|
||||
parentPointCV.x = parentPoint->x * factorX;
|
||||
parentPointCV.y = parentPoint->y * factorY;
|
||||
|
||||
switch (UT_COCOSkeletonJointsPartLabel[i%18])
|
||||
{
|
||||
case JOINT_2D_ESTIMATOR_PART_OF_TORSO:
|
||||
case JOINT_2D_ESTIMATOR_PART_OF_HEAD:
|
||||
color=blue;
|
||||
break;
|
||||
case JOINT_2D_ESTIMATOR_PART_OF_LEFT:
|
||||
color=red;
|
||||
break;
|
||||
case JOINT_2D_ESTIMATOR_PART_OF_RIGHT:
|
||||
color=green;
|
||||
break;
|
||||
};
|
||||
|
||||
cv::line(img,jointPointCV,parentPointCV,color,2.0);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//Just the points and text ( foreground )
|
||||
char textInfo[512];
|
||||
for (int skID=0; skID<sk->numberOfSkeletonsDetected; skID++)
|
||||
{
|
||||
for (int i=0; i<UT_COCO_PARTS; i++)
|
||||
{
|
||||
unsigned int jointID = heatmapCorrespondenceToBODY25[i%18];
|
||||
struct point2D * jointPoint = & sk->skeletons[skID].body.joint2D[jointID];
|
||||
|
||||
cv::Point_<float> jointPointCV;
|
||||
jointPointCV.x = jointPoint->x * factorX;
|
||||
jointPointCV.y = jointPoint->y * factorY;
|
||||
|
||||
if ( (jointPointCV.x>0) && (jointPointCV.y>0) )
|
||||
{
|
||||
cv::circle(img,jointPointCV,3,cv::Scalar(255,0,0),3,8,0);
|
||||
snprintf(textInfo,512,"%s(%u)",UT_COCOBodyNames[i],i);
|
||||
cv::putText(img, textInfo , jointPointCV, cv::FONT_HERSHEY_DUPLEX, 0.3, cv::Scalar::all(255), 1,8);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
int cropAndResizeCVMatToMatchSkeleton(
|
||||
struct JointEstimator2D * jest,
|
||||
cv::Mat & frame,
|
||||
struct Skeletons2DDetected * sk
|
||||
)
|
||||
{
|
||||
int tryForMaximumCrop=0;
|
||||
int result=0;
|
||||
|
||||
jest->crop.frameWidth=frame.size().width;
|
||||
jest->crop.frameHeight=frame.size().height;
|
||||
|
||||
if (sk->numberOfSkeletonsDetected>0)
|
||||
{
|
||||
//------------------------------------------------------------------------------------
|
||||
sk->skeletons[0].bbox2D.minimumX = sk->skeletons[0].body.bbox2D[0].x;
|
||||
sk->skeletons[0].bbox2D.minimumY = sk->skeletons[0].body.bbox2D[0].y;
|
||||
convertNormalized2DJointsToOriginalImageCoordinates(
|
||||
jest,
|
||||
&sk->skeletons[0].bbox2D.minimumX,
|
||||
&sk->skeletons[0].bbox2D.minimumY,
|
||||
0
|
||||
);
|
||||
//------------------------------------------------------------------------------------
|
||||
sk->skeletons[0].bbox2D.maximumX = sk->skeletons[0].body.bbox2D[1].x;
|
||||
sk->skeletons[0].bbox2D.maximumY = sk->skeletons[0].body.bbox2D[1].y;
|
||||
convertNormalized2DJointsToOriginalImageCoordinates(
|
||||
jest,
|
||||
&sk->skeletons[0].bbox2D.maximumX,
|
||||
&sk->skeletons[0].bbox2D.maximumY,
|
||||
0
|
||||
);
|
||||
//------------------------------------------------------------------------------------
|
||||
|
||||
sk->skeletons[0].bbox2D.populated=1;
|
||||
}
|
||||
|
||||
if (
|
||||
getBestCropWindow(
|
||||
tryForMaximumCrop,
|
||||
&jest->crop.offsetX,
|
||||
&jest->crop.offsetY,
|
||||
&jest->crop.croppedDimensionWidth,
|
||||
&jest->crop.croppedDimensionHeight,
|
||||
&sk->skeletons[0].bbox2D,
|
||||
jest->inputWidth2DJointDetector,
|
||||
jest->inputHeight2DJointDetector,
|
||||
frame.size().width,
|
||||
frame.size().height
|
||||
)
|
||||
)
|
||||
{
|
||||
if (jest->crop.croppedDimensionWidth!=jest->crop.croppedDimensionHeight)
|
||||
{
|
||||
fprintf(stderr,"Bounding box produced was not a rectangle (%ux%u)..!\n",jest->crop.croppedDimensionWidth,jest->crop.croppedDimensionHeight);
|
||||
}
|
||||
cv::Rect rectangleROI(
|
||||
jest->crop.offsetX,
|
||||
jest->crop.offsetY,
|
||||
jest->crop.croppedDimensionWidth,
|
||||
jest->crop.croppedDimensionHeight
|
||||
);
|
||||
frame = frame(rectangleROI);
|
||||
sk->skeletons[0].bbox2D.populated=0;
|
||||
result=1;
|
||||
}
|
||||
|
||||
cv::resize(frame,frame,cv::Size(jest->inputWidth2DJointDetector,jest->inputHeight2DJointDetector));
|
||||
return result;
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
#pragma once
|
||||
|
||||
#include "opencv2/opencv.hpp"
|
||||
/** @file webcam.cpp
|
||||
* @brief This is a simple test file to make sure your camera or video files can be opened using OpenCV
|
||||
* @author Ammar Qammaz (AmmarkoV)
|
||||
*/
|
||||
#include <stdio.h>
|
||||
#include <vector>
|
||||
#include "jointEstimator2D.hpp"
|
||||
|
||||
#include "../MocapNET2/MocapNETLib2/IO/commonSkeleton.hpp"
|
||||
|
||||
using namespace cv;
|
||||
|
||||
int visualizeHeatmaps(struct JointEstimator2D * jointEstimator,std::vector<std::vector<float> > heatmapNNOutput,unsigned int frameNumber);
|
||||
|
||||
void dj_drawExtractedSkeletons(
|
||||
cv::Mat img,
|
||||
struct Skeletons2DDetected * sk,
|
||||
float factorX,
|
||||
float factorY
|
||||
);
|
||||
|
||||
|
||||
|
||||
int cropAndResizeCVMatToMatchSkeleton(
|
||||
struct JointEstimator2D * jest,
|
||||
cv::Mat & frame,
|
||||
struct Skeletons2DDetected * sk
|
||||
);
|
||||
@@ -0,0 +1,157 @@
|
||||
#include "opencv2/opencv.hpp"
|
||||
/** @file webcam.cpp
|
||||
* @brief This is a simple test file to make sure your camera or video files can be opened using OpenCV
|
||||
* @author Ammar Qammaz (AmmarkoV)
|
||||
*/
|
||||
#include <stdio.h>
|
||||
#include "cameraControl.hpp"
|
||||
#include "jointEstimator2D.hpp"
|
||||
#include "visualization.hpp"
|
||||
|
||||
#include "../MocapNET2/MocapNETLib2/IO/commonSkeleton.hpp"
|
||||
|
||||
using namespace cv;
|
||||
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
unsigned int width = 640;
|
||||
unsigned int height = 480;
|
||||
const char * webcam = 0;
|
||||
int heatmapDebugVisualizations=0;
|
||||
|
||||
//------------------------------------------------------
|
||||
// Parse arguments
|
||||
//------------------------------------------------------
|
||||
for (int i=0; i<argc; i++)
|
||||
{
|
||||
if (strcmp(argv[i],"--from")==0)
|
||||
{
|
||||
if (argc>i+1)
|
||||
{
|
||||
webcam = argv[i+1];
|
||||
}
|
||||
} else
|
||||
if (strcmp(argv[i],"--debug")==0)
|
||||
{
|
||||
heatmapDebugVisualizations = 1;
|
||||
} else
|
||||
if (strcmp(argv[i],"--size")==0)
|
||||
{
|
||||
if (argc>i+2)
|
||||
{
|
||||
width = atoi(argv[i+1]);
|
||||
height = atoi(argv[i+2]);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
//------------------------------------------------------
|
||||
|
||||
|
||||
VideoCapture cap(webcam); // open the default camera
|
||||
|
||||
std::cerr<<"Trying to open webcam ("<<webcam<<" @ "<<width<<","<<height<<") \n";
|
||||
if (!cap.isOpened()) // check if succeeded to connect to the camera
|
||||
{
|
||||
std::cerr<<"Openning camera failed\n";
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (strstr(webcam,"/dev/video")!=0)
|
||||
{
|
||||
cap.set(cv::CAP_PROP_FRAME_WIDTH,width);
|
||||
cap.set(cv::CAP_PROP_FRAME_HEIGHT,height);
|
||||
}
|
||||
|
||||
struct JointEstimator2D jointEstimator;
|
||||
if (loadJointEstimator2D(&jointEstimator,JOINT_2D_ESTIMATOR_FORTH,1,0))
|
||||
{
|
||||
cv::Mat viewMat = Mat(Size(jointEstimator.inputWidth2DJointDetector,jointEstimator.inputHeight2DJointDetector),CV_8UC3, Scalar(0,0,0));
|
||||
|
||||
struct Skeletons2DDetected result= {0};
|
||||
//cv::namedWindow("Video Input Feed",1);
|
||||
//cv::moveWindow("Video Input Feed",0,368);
|
||||
cv::namedWindow("Skeletons",1);
|
||||
cv::moveWindow("Skeletons",0,0);
|
||||
|
||||
unsigned int frameNumber=0;
|
||||
unsigned long elapsedTime=0;
|
||||
unsigned int brokenFrames = 0;
|
||||
|
||||
for(;;)
|
||||
{
|
||||
Mat frame;
|
||||
cap >> frame;
|
||||
if ( (frame.size().width>0) && (frame.size().height>0) )
|
||||
{
|
||||
if (
|
||||
!cropAndResizeCVMatToMatchSkeleton(
|
||||
&jointEstimator,
|
||||
frame,
|
||||
&result
|
||||
)
|
||||
)
|
||||
{
|
||||
fprintf(stderr,"Failed to crop input video\n");
|
||||
}
|
||||
//imshow("Video Input Feed", frame);
|
||||
|
||||
frame.copyTo(viewMat);
|
||||
// viewMat.setTo(Scalar(0,0,0));
|
||||
|
||||
|
||||
//This needs to be done to get tensorflow output..
|
||||
frame.convertTo(frame,CV_32FC3);
|
||||
|
||||
//Keep time
|
||||
unsigned long startTime = GetTickCountMicrosecondsJointEstimator();
|
||||
|
||||
std::vector<std::vector<float> > heatmaps = getHeatmaps(
|
||||
&jointEstimator,
|
||||
frame.data,
|
||||
jointEstimator.inputWidth2DJointDetector,
|
||||
jointEstimator.inputHeight2DJointDetector
|
||||
);
|
||||
if (heatmaps.size()>0)
|
||||
{
|
||||
if (heatmapDebugVisualizations)
|
||||
{ visualizeHeatmaps(&jointEstimator,heatmaps,frameNumber); }
|
||||
|
||||
estimate2DSkeletonsFromHeatmaps(&jointEstimator,&result,heatmaps);
|
||||
|
||||
//Keep time
|
||||
unsigned long endTime = GetTickCountMicrosecondsJointEstimator();
|
||||
elapsedTime += endTime - startTime;
|
||||
|
||||
dj_drawExtractedSkeletons(
|
||||
viewMat,
|
||||
&result,
|
||||
jointEstimator.inputWidth2DJointDetector,
|
||||
jointEstimator.inputHeight2DJointDetector
|
||||
);
|
||||
|
||||
imshow("Skeletons", viewMat);
|
||||
|
||||
}
|
||||
|
||||
++frameNumber;
|
||||
}
|
||||
else
|
||||
{
|
||||
std::cerr<<"Broken frame.. \n";
|
||||
++brokenFrames;
|
||||
}
|
||||
waitKey(1);
|
||||
if (brokenFrames>10) { break; }
|
||||
}
|
||||
|
||||
if (frameNumber>0)
|
||||
{
|
||||
fprintf(stderr,"Elapsed time is %lu microsconds for %u frames\n",elapsedTime,frameNumber);
|
||||
fprintf(stderr,"Framerate : %0.2f fps\n",(float) elapsedTime/(1000* frameNumber));
|
||||
}
|
||||
}
|
||||
// the camera will be deinitialized automatically in VideoCapture destructor
|
||||
return 0;
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
project( BVHGUI2 )
|
||||
cmake_minimum_required( VERSION 2.8.13 )
|
||||
#cmake_minimum_required(VERSION 3.5)
|
||||
find_package(OpenCV REQUIRED)
|
||||
INCLUDE_DIRECTORIES(${OpenCV_INCLUDE_DIRS})
|
||||
|
||||
#set_property(GLOBAL PROPERTY USE_FOLDERS ON)
|
||||
set(CMAKE_CXX_STANDARD 11)
|
||||
include_directories(${TENSORFLOW_INCLUDE_ROOT})
|
||||
|
||||
|
||||
add_executable(BVHGUI2 bvhGUI2.cpp
|
||||
${BVH_SOURCE} )
|
||||
|
||||
target_link_libraries(BVHGUI2 rt dl m ${OpenCV_LIBRARIES} ${OPENGL_LIBS} Tensorflow TensorflowFramework MocapNETLib2 )
|
||||
set_target_properties(BVHGUI2 PROPERTIES DEBUG_POSTFIX "D")
|
||||
|
||||
|
||||
set_target_properties(BVHGUI2 PROPERTIES
|
||||
ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}"
|
||||
LIBRARY_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}"
|
||||
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}"
|
||||
)
|
||||
|
||||
@@ -0,0 +1,554 @@
|
||||
#include "opencv2/opencv.hpp"
|
||||
/** @file bvhgui.cpp
|
||||
* @brief This is a simple test file to play with the BVH armature
|
||||
* #Hands up
|
||||
* // ./BVHGUI --set 241 290.0 --set 242 80 --set 284 117 --set 283 113
|
||||
* #Close up hands / face
|
||||
* // ./BVHGUI --set 1 -70 --set 2 -60 --set 241 290.0 --set 242 80 --set 282 187 --set 283 252 --set 284 112
|
||||
* @author Ammar Qammaz (AmmarkoV)
|
||||
*/
|
||||
#include <stdio.h>
|
||||
#include "../MocapNETLib2/mocapnet2.hpp"
|
||||
#include "../MocapNETLib2/IO/bvh.hpp"
|
||||
#include "../MocapNETLib2/visualization/visualization.hpp"
|
||||
#include "../MocapNETLib2/visualization/opengl.hpp"
|
||||
#include <vector>
|
||||
|
||||
#include "../../../dependencies/RGBDAcquisition/opengl_acquisition_shared_library/opengl_depth_and_color_renderer/src/Library/MotionCaptureLoader/bvh_loader.h"
|
||||
#include "../../../dependencies/RGBDAcquisition/opengl_acquisition_shared_library/opengl_depth_and_color_renderer/src/Library/MotionCaptureLoader/edit/bvh_rename.h"
|
||||
|
||||
|
||||
#define NORMAL "\033[0m"
|
||||
#define BLACK "\033[30m" /* Black */
|
||||
#define RED "\033[31m" /* Red */
|
||||
#define GREEN "\033[32m" /* Green */
|
||||
#define YELLOW "\033[33m" /* Yellow */
|
||||
|
||||
|
||||
using namespace cv;
|
||||
|
||||
int visualizeOpenGLEnabled=0;
|
||||
|
||||
struct applicationState
|
||||
{
|
||||
std::vector<float>bvhConfiguration;
|
||||
std::vector<std::vector<float> > bvh2DPoints;
|
||||
unsigned int numberOfBVHMotionValuesPerFrame;
|
||||
int previousDistance;
|
||||
int distance;
|
||||
int positiveRotation;
|
||||
int negativeRotation;
|
||||
int previousPositiveRotation;
|
||||
int previousNegativeRotation;
|
||||
int rotation;
|
||||
int selectedMotionChannel,previousSelection;
|
||||
int visualizationType,previousVisualizationType;
|
||||
int play;
|
||||
int stop;
|
||||
int save;
|
||||
int copyClipboard;
|
||||
int frameID;
|
||||
int numberOfFrames;
|
||||
int redraw;
|
||||
};
|
||||
|
||||
|
||||
int controls(cv::Mat & controlMat,struct applicationState * state)
|
||||
{
|
||||
cv::imshow("3D Control",controlMat);
|
||||
cv::createTrackbar("Stop Demo", "3D Control", &state->stop, 1);
|
||||
|
||||
cv::createTrackbar("Play", "3D Control", &state->play,1);
|
||||
cv::createTrackbar("Frame", "3D Control", &state->frameID,state->numberOfFrames);
|
||||
cv::createTrackbar("Clipboard Pose", "3D Control", &state->copyClipboard, 1);
|
||||
|
||||
if (visualizeOpenGLEnabled)
|
||||
{
|
||||
cv::createTrackbar("Visualization Type", "3D Control", &state->visualizationType, 1);
|
||||
}
|
||||
|
||||
cv::createTrackbar("Save", "3D Control", &state->save, 1);
|
||||
|
||||
cv::createTrackbar("Distance ", "3D Control", &state->distance, 1360);
|
||||
|
||||
cv::createTrackbar("Selected Motion Channel", "3D Control", &state->selectedMotionChannel, state->numberOfBVHMotionValuesPerFrame-1);
|
||||
cv::createTrackbar("Positive Value ", "3D Control", &state->positiveRotation, 360);
|
||||
cv::createTrackbar("Negative Value ", "3D Control", &state->negativeRotation, 360);
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
|
||||
static void onMouse( int event, int x, int y, int, void* stateUncast)
|
||||
{
|
||||
struct applicationState * state = (struct applicationState *) stateUncast;
|
||||
if( event != EVENT_LBUTTONDOWN )
|
||||
return;
|
||||
|
||||
if (visualizeOpenGLEnabled)
|
||||
{
|
||||
clickOpenGLView(x,y,event);
|
||||
}
|
||||
else
|
||||
{
|
||||
fprintf(stderr,"Unhandled click @ %u,%u \n",x,y);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
unsigned int visWidth=1920;
|
||||
unsigned int visHeight=1080;
|
||||
|
||||
struct applicationState state;
|
||||
state.numberOfBVHMotionValuesPerFrame=MOCAPNET_OUTPUT_NUMBER;
|
||||
state.rotation=0;
|
||||
state.previousDistance=0;
|
||||
state.distance=150;
|
||||
state.numberOfFrames=1;
|
||||
state.previousSelection=0;
|
||||
state.selectedMotionChannel=0;
|
||||
state.visualizationType=0;
|
||||
state.stop=0;
|
||||
state.save=0;
|
||||
state.copyClipboard=0;
|
||||
state.previousVisualizationType=2;// <- force redraw on first loop
|
||||
state.redraw=1;
|
||||
|
||||
int useBVH=0;
|
||||
int forcePosition=1; //By default we want the output to be centered..
|
||||
int forceRotation=0;
|
||||
float forcedRotation=0;
|
||||
|
||||
const char * bvhFilename=0;
|
||||
|
||||
struct BVH_MotionCapture bvhMotion= {0};
|
||||
|
||||
|
||||
for (int i=0; i<argc; i++)
|
||||
{
|
||||
if (strcmp(argv[i],"--distance")==0)
|
||||
{
|
||||
if(argc>i+1)
|
||||
{
|
||||
state.distance=atoi(argv[i+1]);
|
||||
}
|
||||
}
|
||||
else if (strcmp(argv[i],"--size")==0)
|
||||
{
|
||||
if(argc>i+2)
|
||||
{
|
||||
visWidth=atoi(argv[i+1]);
|
||||
visHeight=atoi(argv[i+2]);
|
||||
}
|
||||
}
|
||||
else if (strcmp(argv[i],"--unconstrained")==0)
|
||||
{
|
||||
forcePosition=0;
|
||||
forceRotation=0;
|
||||
}
|
||||
else if (strcmp(argv[i],"--rotation")==0)
|
||||
{
|
||||
if(argc>i+1)
|
||||
{
|
||||
forceRotation=1;
|
||||
forcedRotation=atof(argv[i+1]);
|
||||
state.selectedMotionChannel=4;
|
||||
state.rotation=atoi(argv[i+1]);
|
||||
}
|
||||
}
|
||||
else if (strcmp(argv[i],"--from")==0)
|
||||
{
|
||||
if(argc>i+1)
|
||||
{
|
||||
if ( bvh_loadBVH(argv[i+1], &bvhMotion, 1.0) )
|
||||
{
|
||||
bvhFilename=argv[i+1];
|
||||
bvh_renameJointsForCompatibility(&bvhMotion);
|
||||
state.frameID=0;
|
||||
state.numberOfFrames=bvhMotion.numberOfFrames;
|
||||
state.play=1;
|
||||
state.numberOfBVHMotionValuesPerFrame=bvhMotion.numberOfValuesPerFrame;
|
||||
useBVH=1;
|
||||
}
|
||||
else
|
||||
{
|
||||
fprintf(stderr,"File `%s` does not exist\n",argv[i+1]);
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
|
||||
if (strcmp(argv[i],"--opengl")==0)
|
||||
{
|
||||
visualizeOpenGLEnabled=1;
|
||||
state.visualizationType=1;
|
||||
state.previousVisualizationType=state.visualizationType;
|
||||
state.redraw=3; //Draw 3 consequtive frames to take care of OGL initialization
|
||||
state.previousSelection=6;
|
||||
state.selectedMotionChannel=6;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if ( !initializeBVHConverter(bvhFilename,visWidth,visHeight,1) )
|
||||
{
|
||||
fprintf(stderr,"Failed to initialize BVH code from %s ..\n",bvhFilename);
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (getBVHNumberOfValuesPerFrame() != state.numberOfBVHMotionValuesPerFrame)
|
||||
{
|
||||
fprintf(stderr,"Inconsistency, internal BVH state reports different number of frames compared to external BVH state..\n");
|
||||
fprintf(stderr,"Internal(%u) External(%u) ..\n",getBVHNumberOfValuesPerFrame(),state.numberOfBVHMotionValuesPerFrame);
|
||||
fprintf(stderr,"Cannot continue ..\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
state.bvhConfiguration.clear();
|
||||
for (int i=0; i<state.numberOfBVHMotionValuesPerFrame; i++)
|
||||
{
|
||||
state.bvhConfiguration.push_back(0.0);
|
||||
}
|
||||
state.bvhConfiguration[2]=(float) -1 * state.distance;
|
||||
|
||||
fprintf(stderr,"Our bvh configuration will be held in vectors of %lu elements\n",state.bvhConfiguration.size());
|
||||
|
||||
fprintf(stderr,"Initializing OpenCV Visualization code ... ");
|
||||
cv::Mat viewMat = Mat(Size(visWidth,visHeight),CV_8UC3, Scalar(0,0,0));
|
||||
cv::imshow("BVH", viewMat);
|
||||
cv::moveWindow("BVH",300,0);
|
||||
setMouseCallback("BVH", onMouse, (void*) &state );
|
||||
|
||||
|
||||
cv::Mat controlMat = Mat(Size(300,1),CV_8UC3, Scalar(0,0,0));
|
||||
controls(controlMat,&state);
|
||||
cv::moveWindow("3D Control",0,0); //y=inputHeight2DJointDetector
|
||||
|
||||
fprintf(stderr,"ok!\n");
|
||||
|
||||
|
||||
for (int i=0; i<argc; i++)
|
||||
{
|
||||
if (strcmp(argv[i],"--changeJointDimensions")==0)
|
||||
{
|
||||
if(argc>i+7)
|
||||
{
|
||||
changeJointDimensions(
|
||||
atof(argv[i+1]),
|
||||
atof(argv[i+2]),
|
||||
atof(argv[i+3]),
|
||||
atof(argv[i+4]),
|
||||
atof(argv[i+5]),
|
||||
atof(argv[i+6]),
|
||||
atof(argv[i+7]),
|
||||
atof(argv[i+8]),
|
||||
atof(argv[i+9])
|
||||
);
|
||||
}
|
||||
else
|
||||
{
|
||||
fprintf(stderr,"Incorrect number of parameters given..\n");
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
else if (strcmp(argv[i],"--set")==0)
|
||||
{
|
||||
// To focus only on head..
|
||||
//./BVHGUI2 --set 1 -65 --set 2 -25
|
||||
// In OpenGL mode
|
||||
//./BVHGUI2 --set 1 -14.8 --set 2 2 --opengl
|
||||
// To focus on RHand
|
||||
// ./BVHGUI2 --from dataset/rhand.bvh --set 2 -45 --set 3 -90 --set 5 -90
|
||||
if(argc>i+2)
|
||||
{
|
||||
unsigned int bvhMotionID = atoi(argv[i+1]);
|
||||
float bvhMotionValue = atof(argv[i+2]);
|
||||
|
||||
unsigned int maximumValidMotionID = getBVHNumberOfValuesPerFrame();
|
||||
if (useBVH)
|
||||
{
|
||||
maximumValidMotionID = bvhMotion.jointHierarchySize;
|
||||
}
|
||||
|
||||
if (bvhMotionID<maximumValidMotionID)
|
||||
{
|
||||
char name[512]= {0};
|
||||
|
||||
|
||||
if (useBVH)
|
||||
{
|
||||
bvh_getMotionChannelName(&bvhMotion,bvhMotionID,name,512);
|
||||
bvhMotion.motionValues[bvhMotionID]=bvhMotionValue;
|
||||
}
|
||||
else
|
||||
{
|
||||
getBVHMotionValueName(bvhMotionID,name,512);
|
||||
}
|
||||
|
||||
fprintf(stderr,YELLOW "joint[%s]=%0.2f\n" NORMAL,name,bvhMotionValue);
|
||||
state.bvhConfiguration[bvhMotionID]=bvhMotionValue;
|
||||
if (bvhMotionID==2)
|
||||
{
|
||||
state.distance=-1*bvhMotionValue;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
fprintf(stderr,RED "Set command jID out of bounds ( requested %u , limit is %u )\n" NORMAL,bvhMotionID,maximumValidMotionID);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
fprintf(stderr,RED "Not enough arguments for set command\n" NORMAL);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
while(!state.stop)
|
||||
{
|
||||
if (useBVH)
|
||||
{
|
||||
unsigned int mIDStart=state.frameID * bvhMotion.numberOfValuesPerFrame;
|
||||
|
||||
if (state.bvhConfiguration.size() != state.numberOfBVHMotionValuesPerFrame)
|
||||
{
|
||||
fprintf(stderr,"Inconsistency in number of vector allocated and motion values loaded..\n");
|
||||
}
|
||||
else if (bvhMotion.numberOfFrames * bvhMotion.numberOfValuesPerFrame != bvhMotion.motionValuesSize)
|
||||
{
|
||||
fprintf(stderr,"Inconsistency in number of frames and motion values..\n");
|
||||
}
|
||||
else if (mIDStart<bvhMotion.motionValuesSize)
|
||||
{
|
||||
for (unsigned int i=0; i<state.numberOfBVHMotionValuesPerFrame; i++)
|
||||
{
|
||||
state.bvhConfiguration[i]=bvhMotion.motionValues[(mIDStart+i)%bvhMotion.motionValuesSize];
|
||||
}
|
||||
//----------------------------------------------------------------------------------------
|
||||
if (forcePosition)
|
||||
{
|
||||
state.bvhConfiguration[0]=0;
|
||||
state.bvhConfiguration[1]=0;
|
||||
state.bvhConfiguration[2]=(float) -1 * state.distance;
|
||||
}
|
||||
//----------------------------------------------------------------------------------------
|
||||
if (forceRotation)
|
||||
{
|
||||
state.bvhConfiguration[3]=0;
|
||||
state.bvhConfiguration[4]=forcedRotation;
|
||||
state.bvhConfiguration[5]=0;
|
||||
}
|
||||
//----------------------------------------------------------------------------------------
|
||||
if (!state.redraw)
|
||||
{
|
||||
state.redraw=1;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
fprintf(stderr,"Frame %u exceeds allocated number of motion values\n",state.frameID);
|
||||
}
|
||||
}
|
||||
|
||||
if (state.copyClipboard)
|
||||
{
|
||||
char valueStr[10];
|
||||
char motionVectorStringUnsafe[10000]={0};
|
||||
snprintf(motionVectorStringUnsafe,10000,"echo \"%0.2f",state.bvhConfiguration[0]);
|
||||
|
||||
for (unsigned int i=1; i<state.numberOfBVHMotionValuesPerFrame; i++)
|
||||
{
|
||||
snprintf(valueStr,10,",%0.2f",state.bvhConfiguration[i]);
|
||||
strcat(motionVectorStringUnsafe,valueStr);
|
||||
}
|
||||
strcat(motionVectorStringUnsafe,"\" | xclip -selection clipboard");
|
||||
int i=system(motionVectorStringUnsafe);
|
||||
if (i!=0)
|
||||
{
|
||||
fprintf(stderr,"Failed copying to clipboard.. :( \n");
|
||||
}
|
||||
state.copyClipboard=0;
|
||||
}
|
||||
|
||||
if (state.save)
|
||||
{
|
||||
std::vector<std::vector<float> > bvhFrames;
|
||||
bvhFrames.push_back(state.bvhConfiguration);
|
||||
state.save=0;
|
||||
controls(controlMat,&state);
|
||||
writeBVHFile(
|
||||
"out.bvh",
|
||||
bvhHeader,
|
||||
0,// int prependTPose,
|
||||
bvhFrames
|
||||
);
|
||||
fprintf(stderr,GREEN "Saved..\n" NORMAL);
|
||||
}
|
||||
|
||||
|
||||
if (state.previousDistance!=state.distance)
|
||||
{
|
||||
if (!state.redraw)
|
||||
{
|
||||
state.redraw=1;
|
||||
}
|
||||
state.previousDistance=state.distance;
|
||||
state.bvhConfiguration[2]=(float) -1 * state.distance;
|
||||
}
|
||||
|
||||
//if (!state.play)
|
||||
//{
|
||||
|
||||
if (state.visualizationType!=state.previousVisualizationType)
|
||||
{
|
||||
if (!state.redraw)
|
||||
{
|
||||
state.redraw=1;
|
||||
}
|
||||
state.previousVisualizationType=state.visualizationType;
|
||||
}
|
||||
|
||||
if (state.selectedMotionChannel!=state.previousSelection)
|
||||
{
|
||||
if (!state.redraw)
|
||||
{
|
||||
state.redraw=1;
|
||||
}
|
||||
state.previousSelection=state.selectedMotionChannel;
|
||||
state.rotation=state.bvhConfiguration[state.selectedMotionChannel];
|
||||
if (state.rotation<0)
|
||||
{
|
||||
state.negativeRotation=-1*state.rotation;
|
||||
}
|
||||
else
|
||||
{
|
||||
state.positiveRotation=state.rotation;
|
||||
}
|
||||
controls(controlMat,&state);
|
||||
}
|
||||
|
||||
|
||||
if (state.previousPositiveRotation!=state.positiveRotation)
|
||||
{
|
||||
state.previousPositiveRotation=state.positiveRotation;
|
||||
state.rotation=state.positiveRotation;
|
||||
}
|
||||
else if (state.previousNegativeRotation!=state.negativeRotation)
|
||||
{
|
||||
state.previousNegativeRotation=state.negativeRotation;
|
||||
state.rotation=-1* state.negativeRotation;
|
||||
}
|
||||
|
||||
if ( state.bvhConfiguration[state.selectedMotionChannel]!=state.rotation )
|
||||
{
|
||||
if (!state.redraw)
|
||||
{
|
||||
state.redraw=1;
|
||||
}
|
||||
state.bvhConfiguration[state.selectedMotionChannel]=state.rotation;
|
||||
if (state.rotation<0)
|
||||
{
|
||||
state.negativeRotation=-1*state.rotation;
|
||||
}
|
||||
else
|
||||
{
|
||||
state.positiveRotation=state.rotation;
|
||||
}
|
||||
}
|
||||
// }
|
||||
|
||||
if (state.redraw)
|
||||
{
|
||||
//fprintf(stderr,"redraw..\n");
|
||||
memset(viewMat.data,0,visWidth*visHeight*3*sizeof(char));
|
||||
|
||||
|
||||
//cv::Mat * openGLMatForVisualization = 0;
|
||||
if ( (visualizeOpenGLEnabled) && (state.visualizationType) )
|
||||
{
|
||||
//fprintf(stderr,"updateOpenGLView\n");
|
||||
updateOpenGLView(state.bvhConfiguration);
|
||||
|
||||
//fprintf(stderr,"visualizeOpenGL\n");
|
||||
unsigned int openGLFrameWidth=visWidth,openGLFrameHeight=visHeight;
|
||||
char * openGLFrame = visualizeOpenGL(&openGLFrameWidth,&openGLFrameHeight);
|
||||
//=====================================================================
|
||||
if (openGLFrame!=0)
|
||||
{
|
||||
fprintf(stderr,"Got Back an OpenGL frame..!\n");
|
||||
cv::Mat openGLMat(openGLFrameHeight, openGLFrameWidth, CV_8UC3);
|
||||
unsigned char * initialPointer = openGLMat.data;
|
||||
openGLMat.data=(unsigned char * ) openGLFrame;
|
||||
cv::cvtColor(openGLMat,viewMat,COLOR_RGB2BGR);
|
||||
openGLMat.data=initialPointer;
|
||||
}//=====================================================================
|
||||
else
|
||||
{
|
||||
fprintf(stderr,"Failed getting an OpenGL frame..!\n");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (state.bvhConfiguration.size()>0)
|
||||
{
|
||||
//fprintf(stderr,"Converting %lu bvh vector\n",state.bvhConfiguration.size());
|
||||
state.bvh2DPoints = convertBVHFrameTo2DPoints(state.bvhConfiguration);//visWidth,visHeight);
|
||||
|
||||
drawSkeleton(viewMat,state.bvh2DPoints,0,0,1);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
char message[1024];
|
||||
snprintf(message,1024,"Frame : %u / %u",state.frameID,state.numberOfFrames);
|
||||
cv::putText(viewMat,message, cv::Point(10,30), cv::FONT_HERSHEY_DUPLEX, 0.5, cv::Scalar::all(255), 0.2, 8 );
|
||||
|
||||
|
||||
if (useBVH)
|
||||
{
|
||||
char motionChannelName[512];
|
||||
getBVHMotionValueName(state.selectedMotionChannel,motionChannelName,512);
|
||||
snprintf(message,1024,"Selected motion channel #%u : %s ( value %0.2f )",state.selectedMotionChannel,motionChannelName,state.bvhConfiguration[state.selectedMotionChannel]);
|
||||
}
|
||||
else
|
||||
{
|
||||
snprintf(message,1024,"Selected motion channel #%u : %s ( value %0.2f )",state.selectedMotionChannel,MocapNETOutputArrayNames[state.previousSelection],state.bvhConfiguration[state.selectedMotionChannel]);
|
||||
}
|
||||
cv::putText(viewMat,message, cv::Point(10,50), cv::FONT_HERSHEY_DUPLEX, 0.5, cv::Scalar::all(255), 0.2, 8 );
|
||||
|
||||
if (visualizeOpenGLEnabled)
|
||||
{
|
||||
snprintf(message,1024,"OpenGL Model motion channel name : %s",OpenCOLLADANames[state.previousSelection/3]);
|
||||
cv::putText(viewMat,message, cv::Point(10,70), cv::FONT_HERSHEY_DUPLEX, 0.5, cv::Scalar::all(255), 0.2, 8 );
|
||||
}
|
||||
|
||||
if (state.redraw>=1)
|
||||
{
|
||||
--state.redraw;
|
||||
}
|
||||
//state.redraw=0;
|
||||
}
|
||||
|
||||
|
||||
imshow("BVH", viewMat);
|
||||
|
||||
waitKey(15);
|
||||
|
||||
if (useBVH)
|
||||
{
|
||||
if (state.play)
|
||||
{
|
||||
++state.frameID;
|
||||
state.frameID = state.frameID % state.numberOfFrames;
|
||||
}
|
||||
}
|
||||
}
|
||||
// the camera will be deinitialized automatically in VideoCapture destructor
|
||||
return 0;
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
project( BVHTemplate )
|
||||
cmake_minimum_required( VERSION 2.8.7 )
|
||||
set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../cmake/modules ${CMAKE_MODULE_PATH})
|
||||
|
||||
|
||||
add_executable(BVHTemplate main.c ${BVH_SOURCE} )
|
||||
|
||||
target_link_libraries(BVHTemplate rt m pthread )
|
||||
#add_dependencies(BVHTemplate OGLRendererSandbox)
|
||||
|
||||
|
||||
set_target_properties(BVHTemplate PROPERTIES
|
||||
ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}"
|
||||
LIBRARY_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}"
|
||||
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}"
|
||||
)
|
||||
@@ -0,0 +1,29 @@
|
||||
project( CSVClusterPlot )
|
||||
cmake_minimum_required( VERSION 2.8.13 )
|
||||
#cmake_minimum_required(VERSION 3.5)
|
||||
find_package(OpenCV REQUIRED)
|
||||
INCLUDE_DIRECTORIES(${OpenCV_INCLUDE_DIRS})
|
||||
|
||||
#set_property(GLOBAL PROPERTY USE_FOLDERS ON)
|
||||
set(CMAKE_CXX_STANDARD 11)
|
||||
include_directories(${TENSORFLOW_INCLUDE_ROOT})
|
||||
|
||||
|
||||
add_executable(
|
||||
CSVClusterPlot
|
||||
csvClusterPlot.cpp
|
||||
perform2DClustering.cpp
|
||||
perform3DClustering.cpp
|
||||
${BVH_SOURCE}
|
||||
)
|
||||
|
||||
target_link_libraries(CSVClusterPlot rt dl m ${OpenCV_LIBRARIES} ${OPENGL_LIBS} Tensorflow TensorflowFramework MocapNETLib2 )
|
||||
#set_target_properties(CSVClusterPlot PROPERTIES DEBUG_POSTFIX "D")
|
||||
|
||||
|
||||
set_target_properties(CSVClusterPlot PROPERTIES
|
||||
ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}"
|
||||
LIBRARY_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}"
|
||||
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}"
|
||||
)
|
||||
|
||||
@@ -0,0 +1,759 @@
|
||||
#include "opencv2/opencv.hpp"
|
||||
/** @file csvClusterPlot.cpp
|
||||
* @brief
|
||||
* @author Ammar Qammaz (AmmarkoV)
|
||||
*/
|
||||
#include <stdio.h>
|
||||
|
||||
#include <sys/stat.h> //mkdir
|
||||
#include "../MocapNETLib2/mocapnet2.hpp"
|
||||
#include "../MocapNETLib2/IO/bvh.hpp"
|
||||
#include "../MocapNETLib2/visualization/visualization.hpp"
|
||||
#include "../MocapNETLib2/visualization/opengl.hpp"
|
||||
#include "../MocapNETLib2/IO/csvRead.hpp"
|
||||
#include <vector>
|
||||
|
||||
#include "../../../dependencies/RGBDAcquisition/opengl_acquisition_shared_library/opengl_depth_and_color_renderer/src/Library/MotionCaptureLoader/bvh_loader.h"
|
||||
#include "../../../dependencies/RGBDAcquisition/opengl_acquisition_shared_library/opengl_depth_and_color_renderer/src/Library/MotionCaptureLoader/edit/bvh_filter.h"
|
||||
#include "../../../dependencies/RGBDAcquisition/opengl_acquisition_shared_library/opengl_depth_and_color_renderer/src/Library/MotionCaptureLoader/edit/bvh_rename.h"
|
||||
#include "../../../dependencies/RGBDAcquisition/opengl_acquisition_shared_library/opengl_depth_and_color_renderer/src/Library/MotionCaptureLoader/edit/bvh_randomize.h"
|
||||
|
||||
#include "perform2DClustering.hpp"
|
||||
#include "perform3DClustering.hpp"
|
||||
|
||||
|
||||
//#include <stdint.h>
|
||||
|
||||
using namespace cv;
|
||||
|
||||
int visualizeOpenGLEnabled=0;
|
||||
|
||||
|
||||
#define BOOST_CONTRAST 2.0
|
||||
|
||||
|
||||
|
||||
char MocapNET1List[]="src/MocapNET2/CSVClusterPlot/listOfFilesToClusterMocapNET1";
|
||||
char defaultList[]="src/MocapNET2/CSVClusterPlot/listOfFilesToCluster";
|
||||
|
||||
|
||||
const char * perturbList1[] =
|
||||
{
|
||||
" ",
|
||||
"rshoulder",
|
||||
"lshoulder",
|
||||
"rhip",
|
||||
"lhip"
|
||||
};
|
||||
|
||||
const char * perturbList2[] =
|
||||
{
|
||||
" ",
|
||||
"rhand",
|
||||
"relbow",
|
||||
"lelbow",
|
||||
"lhand",
|
||||
"lknee",
|
||||
"rknee",
|
||||
"lfoot",
|
||||
"rfoot"
|
||||
};
|
||||
|
||||
|
||||
const char * perturbList3[] =
|
||||
{
|
||||
" ",
|
||||
"abdomen",
|
||||
"chest"
|
||||
};
|
||||
|
||||
/*
|
||||
#define rotationSetting 0"
|
||||
#define handToCloseHipMin "45"
|
||||
#define handToCloseHipMax "90"
|
||||
#define handToFarHipMin "100"
|
||||
#define handToFarHipMax "160"
|
||||
#define handToHandMin "150"
|
||||
#define handToHandMax "250"
|
||||
*/
|
||||
|
||||
|
||||
#define rotationSetting "90"
|
||||
#define handToCloseHipMin "0"
|
||||
#define handToCloseHipMax "120"
|
||||
#define handToFarHipMin "0"
|
||||
#define handToFarHipMax "120"
|
||||
#define handToHandMin "0"
|
||||
#define handToHandMax "150"
|
||||
|
||||
|
||||
const char * removeNeutralPosesRules[] =
|
||||
{
|
||||
"0", // 0 | Move Armature to 0 X Position
|
||||
"0", // 1 | Move Armature to 0 Y Position
|
||||
"-130.0", // 2 | Move Armature to -130.0 Z Position
|
||||
"0", // 3 | Rotate Armature to 0deg X Rotation
|
||||
rotationSetting, // 4 | Rotate Armature to 0deg Y Rotation
|
||||
"0", // 5 | Rotate Armature to 0deg Z Rotation
|
||||
//--------------------------------------------------------------------------
|
||||
"1920", // 6 | Virtual 2D Rendering Width
|
||||
"1080",// 7 | Virtual 2D Rendering Height
|
||||
"570.7", // 8 | Virtual 2D Rendering Focal Length X
|
||||
"570.3", // 9 | Virtual 2D Rendering Focal Length Y
|
||||
//--------------------------------------------------------------------------
|
||||
"6", // 10 | Number of joint rules
|
||||
//--------------------------------------------------------------------------
|
||||
"rhand", // 11 | Joint A
|
||||
"lhip", // 12 | Joint B
|
||||
handToFarHipMin, // 13 | Minimum Acceptable 2D Distance
|
||||
handToFarHipMax, // 14 | Maximum Acceptable 2D Distance
|
||||
"rhand", // 15 | Joint A
|
||||
"rhip", // 16| Joint B
|
||||
handToCloseHipMin, // 17 | Minimum Acceptable 2D Distance
|
||||
handToCloseHipMax, // 18 | Maximum Acceptable 2D Distance
|
||||
"rhand", // 19 | Joint A
|
||||
"lhand", // 20 | Joint B
|
||||
handToHandMin, // 21 | Minimum Acceptable 2D Distance
|
||||
handToHandMax, // 22 | Maximum Acceptable 2D Distance
|
||||
//--------------------------------------------------------------------------
|
||||
"lhand", // 23 | Joint A
|
||||
"rhip", // 24| Joint B
|
||||
handToFarHipMin, // 25 | Minimum Acceptable 2D Distance
|
||||
handToFarHipMax, // 26 | Maximum Acceptable 2D Distance
|
||||
"lhand", // 27 | Joint A
|
||||
"lhip", // 28| Joint B
|
||||
handToCloseHipMin, // 29 | Minimum Acceptable 2D Distance
|
||||
handToCloseHipMax, // 30 | Maximum Acceptable 2D Distance
|
||||
"lhand", // 31 | Joint A
|
||||
"rhand", // 32 | Joint B
|
||||
handToHandMin, // 33 | Minimum Acceptable 2D Distance
|
||||
handToHandMax // 34 | Maximum Acceptable 2D Distance
|
||||
};
|
||||
|
||||
|
||||
void convertHeatmapValueToRGB(float heatmap,unsigned char * R,unsigned char * G,unsigned char * B)
|
||||
{
|
||||
float r = fminf(1.0f, (fmaxf(0.5f, heatmap) - 0.5f) * 6.0f);
|
||||
float g = fminf(1.0f, heatmap * 3.0f) - fminf(1.0f, fmaxf(0.0f, heatmap - 0.666f) * 3.0f);
|
||||
float b = fmaxf(0.0f, 1.0f - fmaxf(0.0f, heatmap - 0.333f) * 6.0f);
|
||||
|
||||
if (heatmap==0.0)
|
||||
{
|
||||
r=0.0;
|
||||
g=0.0;
|
||||
b=0.0;
|
||||
}
|
||||
else if (heatmap<0.1)
|
||||
{
|
||||
r=0.0;
|
||||
g=0.0;
|
||||
b=0.3+10*heatmap;
|
||||
if (b>=1.0)
|
||||
{
|
||||
b=1.0;
|
||||
}
|
||||
}
|
||||
else if (heatmap>=1.0) //Cap
|
||||
{
|
||||
if (heatmap>=2.0)
|
||||
{
|
||||
r=1.0;
|
||||
g=0.0;
|
||||
b=1.0; //Final Limit
|
||||
}
|
||||
else
|
||||
{
|
||||
r=1.0 ;
|
||||
g=0.0;
|
||||
b=heatmap-1.0;
|
||||
}
|
||||
}
|
||||
|
||||
r=r*255.0;
|
||||
g=g*255.0;
|
||||
b=b*255.0;
|
||||
|
||||
*R = (unsigned char) r;
|
||||
*G = (unsigned char) g;
|
||||
*B = (unsigned char) b;
|
||||
}
|
||||
|
||||
|
||||
|
||||
int draw2DClustering(cv::Mat &viewMat,struct BVH_MotionCapture * bvhMotion,std::vector<std::vector<float> > aPose,struct applicationState * state,const char * line, char * videoPath,unsigned int width,unsigned int height)
|
||||
{
|
||||
char buffer[1024]= {0};
|
||||
memset(viewMat.data,0,width*height*3*sizeof(char));
|
||||
/*
|
||||
if ( state->maxAccumulatedSample > state->accumulatedSamples )
|
||||
{
|
||||
state->maxAccumulatedSample=state->accumulatedSamples;
|
||||
}*/
|
||||
|
||||
unsigned char R,G,B;
|
||||
//------------------------------------------------------------------------------
|
||||
for (int y=0; y<height; y++)
|
||||
{
|
||||
for (int x=0; x<width; x++)
|
||||
{
|
||||
float heatmap = (float) state->accumulatedImage[y*width+x] / state->maxAccumulatedSample;
|
||||
heatmap*=BOOST_CONTRAST;
|
||||
|
||||
convertHeatmapValueToRGB(heatmap,&R,&G,&B);
|
||||
|
||||
unsigned int pos=(y*width*3) + x*3;
|
||||
viewMat.data[pos++]=B;
|
||||
viewMat.data[pos++]=G;
|
||||
viewMat.data[pos]=R;
|
||||
}
|
||||
|
||||
|
||||
//add a sidebar with the colors legend..
|
||||
for (int x=width-5; x<width; x++)
|
||||
{
|
||||
float heatmapScaleValue = 1.0 - ((float) y / height);
|
||||
heatmapScaleValue*=BOOST_CONTRAST; //;
|
||||
|
||||
convertHeatmapValueToRGB(heatmapScaleValue,&R,&G,&B);
|
||||
|
||||
unsigned int pos=(y*width*3) + x*3;
|
||||
viewMat.data[pos++]=B;
|
||||
viewMat.data[pos++]=G;
|
||||
viewMat.data[pos]=R;
|
||||
}
|
||||
|
||||
|
||||
if (y%50==0)
|
||||
{
|
||||
float heatmapScaleValue = 1.0 - ((float) y / height);
|
||||
heatmapScaleValue*=state->maxAccumulatedSample;
|
||||
snprintf(buffer,1024,"%0.0f",heatmapScaleValue);
|
||||
cv::putText(viewMat,buffer, cv::Point(width-50,y), cv::FONT_HERSHEY_DUPLEX, 0.3, cv::Scalar::all(255), 0.2, 8 );
|
||||
}
|
||||
}
|
||||
|
||||
drawSkeleton(viewMat,aPose,0,0,1);
|
||||
|
||||
snprintf(buffer,1024,"%lu accumulated samples, max heatmap value = %lu",state->accumulatedSamples,state->maxAccumulatedSample);
|
||||
cv::putText(viewMat,buffer, cv::Point(10,30), cv::FONT_HERSHEY_DUPLEX, 0.5, cv::Scalar::all(255), 0.2, 8 );
|
||||
|
||||
snprintf(buffer,1024,"%s added with %u samples",line,bvhMotion->numberOfFrames);
|
||||
cv::putText(viewMat,buffer, cv::Point(10,50), cv::FONT_HERSHEY_DUPLEX, 0.5, cv::Scalar::all(255), 0.2, 8 );
|
||||
|
||||
if (videoPath!=0)
|
||||
{
|
||||
snprintf(buffer,1024,"Label : %s ",videoPath);
|
||||
cv::putText(viewMat,buffer, cv::Point(10,70), cv::FONT_HERSHEY_DUPLEX, 0.5, cv::Scalar::all(255), 0.2, 8 );
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
int draw3DClustering(cv::Mat &viewMat,struct clusteringOf3DPoses * state,unsigned int width,unsigned int height,unsigned int depth)
|
||||
{
|
||||
memset(viewMat.data,0,width*height*3*sizeof(char));
|
||||
|
||||
unsigned char R,G,B;
|
||||
//------------------------------------------------------------------------------
|
||||
for (int y=0; y<height; y++)
|
||||
{
|
||||
for (int x=0; x<width; x++)
|
||||
{
|
||||
unsigned int hits=0;
|
||||
for (int z=0; z<depth; z++)
|
||||
{
|
||||
unsigned long memoryLocation = (unsigned long) (z*width*height) + (y*width)+ x;
|
||||
|
||||
hits+=state->space[memoryLocation].element;
|
||||
}
|
||||
float heatmap = (float) hits / (depth*255);
|
||||
heatmap*=10;
|
||||
|
||||
convertHeatmapValueToRGB(heatmap,&R,&G,&B);
|
||||
|
||||
unsigned int pos=(y*width*3) + x*3;
|
||||
viewMat.data[pos++]=B;
|
||||
viewMat.data[pos++]=G;
|
||||
viewMat.data[pos]=R;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
struct clusteringOf3DPoses * state3D = (struct clusteringOf3DPoses *) malloc(sizeof(struct clusteringOf3DPoses) );
|
||||
if (state3D==0)
|
||||
{
|
||||
fprintf(stderr,"Could not allocate enough memory to start csvClusterPlot..\n");
|
||||
return 1;
|
||||
}
|
||||
memset(state3D,0,sizeof(struct clusteringOf3DPoses));
|
||||
|
||||
|
||||
struct applicationState * state = (struct applicationState *) malloc(sizeof(struct applicationState) );
|
||||
if (state==0)
|
||||
{
|
||||
fprintf(stderr,"Could not allocate enough memory to start csvClusterPlot..\n");
|
||||
free(state3D);
|
||||
return 1;
|
||||
}
|
||||
state->rotation=0;
|
||||
state->previousSelection=0;
|
||||
state->selectedJoint=0;
|
||||
state->visualizationType=0;
|
||||
state->stop=0;
|
||||
state->save=0;
|
||||
state->previousVisualizationType=2;// <- force redraw on first loop
|
||||
state->redraw=1;
|
||||
state->maxAccumulatedSample= 0;
|
||||
int randomize=0;
|
||||
int filterPoses=0;
|
||||
int go3DMode=0;
|
||||
|
||||
unsigned int visualizationFrameNumber=0;
|
||||
int saveVideo=0;
|
||||
char * videoPath=0;
|
||||
char videoFrameFinalFilename[512]= {0};
|
||||
|
||||
float skeletonDistance=-160;
|
||||
unsigned int WIDTH = 1000;
|
||||
unsigned int HEIGHT = 1000;
|
||||
unsigned int DEPTH = 1000;
|
||||
char * selectedSource = defaultList;
|
||||
|
||||
for (int i=0; i<argc; i++)
|
||||
{
|
||||
if (strcmp(argv[i],"--mocapnet1")==0)
|
||||
{
|
||||
selectedSource=MocapNET1List;
|
||||
}
|
||||
else if (strcmp(argv[i],"--saveVideo")==0)
|
||||
{
|
||||
if(argc>i+1)
|
||||
{
|
||||
videoPath=argv[i+1];
|
||||
saveVideo=1;
|
||||
mkdir(videoPath,0777);
|
||||
}
|
||||
}
|
||||
else if (strcmp(argv[i],"--from")==0)
|
||||
{
|
||||
if(argc>i+1)
|
||||
{
|
||||
selectedSource=argv[i+1];
|
||||
}
|
||||
}
|
||||
else if (strcmp(argv[i],"--rotation")==0)
|
||||
{
|
||||
if(argc>i+1)
|
||||
{
|
||||
state->rotation=atoi(argv[i+1]);
|
||||
}
|
||||
}
|
||||
else if (strcmp(argv[i],"--randomize")==0)
|
||||
{
|
||||
randomize=1;
|
||||
}
|
||||
else if (strcmp(argv[i],"--filter")==0)
|
||||
{
|
||||
filterPoses=1;
|
||||
}
|
||||
else if (strcmp(argv[i],"--size")==0)
|
||||
{
|
||||
//To produce higher resolution heatmap..
|
||||
// ./CSVClusterPlot --rotation 90 --onlyrhand --size 1920 1080 --distance -130 --filter
|
||||
if(argc>i+2)
|
||||
{
|
||||
WIDTH=atoi(argv[i+1]);
|
||||
HEIGHT=atoi(argv[i+2]);
|
||||
}
|
||||
}
|
||||
else if (strcmp(argv[i],"--depth")==0)
|
||||
{
|
||||
if(argc>i+1)
|
||||
{
|
||||
DEPTH=atoi(argv[i+1]);
|
||||
}
|
||||
}
|
||||
else if (strcmp(argv[i],"--distance")==0)
|
||||
{
|
||||
if(argc>i+1)
|
||||
{
|
||||
skeletonDistance=atof(argv[i+1]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
state->accumulatedImage = (unsigned long * ) malloc( (WIDTH) * (HEIGHT) * sizeof (unsigned long) );
|
||||
if (state->accumulatedImage==0)
|
||||
{
|
||||
fprintf(stderr,"Could not allocate enough memory to start csvClusterPlot..\n");
|
||||
free(state);
|
||||
free(state3D);
|
||||
return 1;
|
||||
}
|
||||
for (int y=0; y<HEIGHT; y++)
|
||||
{
|
||||
for (int x=0; x<WIDTH; x++)
|
||||
{
|
||||
state->accumulatedImage[y*WIDTH+x]=0;
|
||||
}
|
||||
}
|
||||
state->accumulatedSamples=0;;
|
||||
|
||||
|
||||
cv::Mat viewMat = Mat(Size(WIDTH,HEIGHT),CV_8UC3, Scalar(0,0,0));
|
||||
namedWindow("BVH",1);
|
||||
//controls(controlMat,&state);
|
||||
//cv::moveWindow("3D Control",0,0); //y=inputHeight2DJointDetector
|
||||
cv::moveWindow("BVH",0,0);
|
||||
|
||||
|
||||
initializeBVHConverter(0,WIDTH,HEIGHT,1);
|
||||
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------------------------------------------
|
||||
//------------------------------------------------------------------------------------------------------------------
|
||||
std::vector<char> activeJoints;
|
||||
activeJoints.clear();
|
||||
for (int i=0; i<MOCAPNET_OUTPUT_NUMBER; i++)
|
||||
{
|
||||
activeJoints.push_back(1);
|
||||
}
|
||||
activeJoints[ getBVHJointIDFromJointName("hip")]=0;
|
||||
activeJoints[ getBVHJointIDFromJointName("lThigh")]=0;
|
||||
activeJoints[ getBVHJointIDFromJointName("rThigh")]=0;
|
||||
activeJoints[ getBVHJointIDFromJointName("lButtock")]=0;
|
||||
activeJoints[ getBVHJointIDFromJointName("rButtock")]=0;
|
||||
activeJoints[ getBVHJointIDFromJointName("abdomen")]=0;
|
||||
//------------------------------------------------------------------------------------------------------------------
|
||||
for (int i=0; i<argc; i++)
|
||||
{
|
||||
if (strcmp(argv[i],"--3d")==0)
|
||||
{
|
||||
//Sample use
|
||||
// ./CSVClusterPlot --3d rHand --size 500 500 --depth 500 --distance -250
|
||||
// ./CSVClusterPlot --3d rHand --size 256 256 --depth 256 --distance -500
|
||||
go3DMode=1;
|
||||
for (int z=0; z<MOCAPNET_OUTPUT_NUMBER; z++)
|
||||
{
|
||||
activeJoints[z]=0;
|
||||
}
|
||||
//activeJoints[ getBVHJointIDFromJointName("rForeArm")]=1;
|
||||
if(argc>i+1)
|
||||
{
|
||||
activeJoints[ getBVHJointIDFromJointName(argv[i+1])]=1;
|
||||
}
|
||||
else
|
||||
{
|
||||
fprintf(stderr,"We need a limb to focus on e.g. rHand <- capitalization is imporant..\n");
|
||||
}
|
||||
}
|
||||
else if (strcmp(argv[i],"--onlylimbs")==0)
|
||||
{
|
||||
for (int z=0; z<MOCAPNET_OUTPUT_NUMBER; z++)
|
||||
{
|
||||
activeJoints[z]=0;
|
||||
}
|
||||
activeJoints[ getBVHJointIDFromJointName("rShin")]=1;
|
||||
activeJoints[ getBVHJointIDFromJointName("rFoot")]=1;
|
||||
activeJoints[ getBVHJointIDFromJointName("lShin")]=1;
|
||||
activeJoints[ getBVHJointIDFromJointName("lFoot")]=1;
|
||||
activeJoints[ getBVHJointIDFromJointName("neck")]=1;
|
||||
activeJoints[ getBVHJointIDFromJointName("head")]=1;
|
||||
activeJoints[ getBVHJointIDFromJointName("lForeArm")]=1;
|
||||
activeJoints[ getBVHJointIDFromJointName("lHand")]=1;
|
||||
activeJoints[ getBVHJointIDFromJointName("rForeArm")]=1;
|
||||
activeJoints[ getBVHJointIDFromJointName("rHand")]=1;
|
||||
}
|
||||
else if (strcmp(argv[i],"--onlyrhand")==0)
|
||||
{
|
||||
for (int z=0; z<MOCAPNET_OUTPUT_NUMBER; z++)
|
||||
{
|
||||
activeJoints[z]=0;
|
||||
}
|
||||
activeJoints[ getBVHJointIDFromJointName("rForeArm")]=1;
|
||||
activeJoints[ getBVHJointIDFromJointName("rHand")]=1;
|
||||
}
|
||||
else if (strcmp(argv[i],"--onlylhand")==0)
|
||||
{
|
||||
for (int z=0; z<MOCAPNET_OUTPUT_NUMBER; z++)
|
||||
{
|
||||
activeJoints[z]=0;
|
||||
}
|
||||
activeJoints[ getBVHJointIDFromJointName("lForeArm")]=1;
|
||||
activeJoints[ getBVHJointIDFromJointName("lHand")]=1;
|
||||
}
|
||||
else if (strcmp(argv[i],"--onlyrleg")==0)
|
||||
{
|
||||
for (int z=0; z<MOCAPNET_OUTPUT_NUMBER; z++)
|
||||
{
|
||||
activeJoints[z]=0;
|
||||
}
|
||||
activeJoints[ getBVHJointIDFromJointName("rShin")]=1;
|
||||
activeJoints[ getBVHJointIDFromJointName("rFoot")]=1;
|
||||
}
|
||||
else if (strcmp(argv[i],"--onlylleg")==0)
|
||||
{
|
||||
for (int z=0; z<MOCAPNET_OUTPUT_NUMBER; z++)
|
||||
{
|
||||
activeJoints[z]=0;
|
||||
}
|
||||
activeJoints[ getBVHJointIDFromJointName("lShin")]=1;
|
||||
activeJoints[ getBVHJointIDFromJointName("lFoot")]=1;
|
||||
}
|
||||
}
|
||||
//------------------------------------------------------------------------------------------------------------------
|
||||
//------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
state->redraw=1;
|
||||
|
||||
srand(time(NULL));
|
||||
|
||||
//find dataset/MotionCapture/ -type f -name "*.bvh" > src/MocapNET2/CSVClusterPlot/listOfFilesToCluster
|
||||
struct BVH_MotionCapture bvhMotion= {0};
|
||||
|
||||
char buffer[1024]= {0};
|
||||
|
||||
FILE * fp =0;
|
||||
|
||||
fp=fopen(selectedSource,"r");
|
||||
|
||||
if (fp==0)
|
||||
{
|
||||
fprintf(stderr,"Cannot open list of files to cluster\n");
|
||||
free(state->accumulatedImage);
|
||||
free(state);
|
||||
free(state3D);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
char * line = NULL;
|
||||
size_t len = 0;
|
||||
ssize_t read;
|
||||
unsigned int numberOfLinesProcessed=0;
|
||||
unsigned long numberOfPosesLoaded=0;
|
||||
|
||||
while ((read = getline(&line, &len, fp)) != -1)
|
||||
{
|
||||
if (line!=0)
|
||||
{
|
||||
++numberOfLinesProcessed;
|
||||
//-----------------------------------------------------------------
|
||||
int lineLength=strlen(line);
|
||||
if (lineLength>0)
|
||||
{
|
||||
if (line[lineLength-1]==10)
|
||||
{
|
||||
line[lineLength-1]=0;
|
||||
}
|
||||
if (line[lineLength-1]==13)
|
||||
{
|
||||
line[lineLength-1]=0;
|
||||
}
|
||||
}
|
||||
if (lineLength>1)
|
||||
{
|
||||
if (line[lineLength-2]==10)
|
||||
{
|
||||
line[lineLength-2]=0;
|
||||
}
|
||||
if (line[lineLength-2]==13)
|
||||
{
|
||||
line[lineLength-2]=0;
|
||||
}
|
||||
}
|
||||
//-----------------------------------------------------------------
|
||||
fprintf(stderr,"Loading `%s`\n",line);
|
||||
|
||||
if ( bvh_loadBVH(line, &bvhMotion, 1.0) )
|
||||
{
|
||||
numberOfPosesLoaded+=bvhMotion.numberOfFrames;
|
||||
|
||||
bvh_renameJointsForCompatibility(&bvhMotion);
|
||||
|
||||
if (filterPoses)
|
||||
{
|
||||
filterOutPosesThatAreCloseToRules(&bvhMotion,35,removeNeutralPosesRules);
|
||||
}
|
||||
|
||||
if (randomize)
|
||||
{
|
||||
//--perturbJointAngles 4 38.0 rshoulder lshoulder rhip lhip --perturbJointAngles 8 10.0 rhand relbow lelbow lhand lknee rknee lfoot rfoot
|
||||
|
||||
bvh_PerturbJointAngles(
|
||||
&bvhMotion,
|
||||
4,
|
||||
38.0,
|
||||
perturbList1,
|
||||
0
|
||||
);
|
||||
|
||||
bvh_PerturbJointAngles(
|
||||
&bvhMotion,
|
||||
8,
|
||||
10.0,
|
||||
perturbList2,
|
||||
0
|
||||
);
|
||||
|
||||
bvh_PerturbJointAngles(
|
||||
&bvhMotion,
|
||||
2,
|
||||
10.0,
|
||||
perturbList3,
|
||||
0
|
||||
);
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
if (go3DMode)
|
||||
{
|
||||
//3D Voxel Clustering Mode
|
||||
std::vector<std::vector<float> > aPose = collect3DPoses(state3D,activeJoints,&bvhMotion,skeletonDistance,WIDTH,HEIGHT,DEPTH);
|
||||
|
||||
//memset(viewMat.data,0,WIDTH*HEIGHT*3*sizeof(char));
|
||||
|
||||
if (numberOfLinesProcessed%5==0)
|
||||
{ draw3DClustering(viewMat,state3D,WIDTH,HEIGHT,DEPTH); }
|
||||
drawSkeleton(viewMat,aPose,0,0,1);
|
||||
}
|
||||
else
|
||||
{
|
||||
//2D Projection Mode
|
||||
std::vector<std::vector<float> > aPose = collectPoses(state,activeJoints,&bvhMotion,skeletonDistance,WIDTH,HEIGHT);
|
||||
if ( aPose.size()>0 )
|
||||
{
|
||||
state->redraw=1;
|
||||
}
|
||||
|
||||
if (state->redraw)
|
||||
{
|
||||
draw2DClustering(viewMat,&bvhMotion,aPose,state,line,videoPath,WIDTH,HEIGHT);
|
||||
|
||||
state->redraw=1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
fprintf(stderr,"Done with %s\n",line);
|
||||
|
||||
bvh_free(&bvhMotion);
|
||||
|
||||
fprintf(stderr,"deallocation complete..\n");
|
||||
|
||||
|
||||
imshow("BVH", viewMat);
|
||||
|
||||
if (saveVideo)
|
||||
{
|
||||
snprintf(videoFrameFinalFilename,512,"%s/colorFrame_0_%05u.png",videoPath,visualizationFrameNumber);
|
||||
imwrite(videoFrameFinalFilename,viewMat);
|
||||
}
|
||||
|
||||
++visualizationFrameNumber;
|
||||
|
||||
waitKey(1);
|
||||
}
|
||||
else
|
||||
{
|
||||
fprintf(stderr,"Failed to load %s \n",line);
|
||||
}
|
||||
}//Line not empty
|
||||
} //New line read
|
||||
|
||||
if (line!=0)
|
||||
{
|
||||
free(line);
|
||||
line=0;
|
||||
len=0;
|
||||
}
|
||||
fclose(fp);
|
||||
// the camera will be deinitialized automatically in VideoCapture destructor
|
||||
|
||||
|
||||
|
||||
if (go3DMode)
|
||||
{
|
||||
fprintf(stderr,"3D clustering accumulated %lu samples \n",state3D->accumulatedSamples);
|
||||
if (state3D->fp!=0)
|
||||
{
|
||||
fclose(state3D->fp);
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------
|
||||
int i=system("cat dataset/header.bvh > filteredPoses.bvh");
|
||||
if (i!=0) { fprintf(stderr,"Could not use header for filterPoses.bvh\n"); }
|
||||
//------------------------------------------------------------------------
|
||||
i=system("echo \"MOTION\" >> filteredPoses.bvh");
|
||||
if (i!=0) { fprintf(stderr,"Could not add MOTION to filterPoses.bvh\n"); }
|
||||
//------------------------------------------------------------------------
|
||||
i=system("echo \"Frames: `cat filteredPoses.bvhm | wc -l`\" >> filteredPoses.bvh");
|
||||
if (i!=0) { fprintf(stderr,"Could not add number of poses\n"); }
|
||||
//------------------------------------------------------------------------
|
||||
i=system("echo \"Frame Time: 0.04\" >> filteredPoses.bvh");
|
||||
if (i!=0) { fprintf(stderr,"Could not add frame time\n"); }
|
||||
//------------------------------------------------------------------------
|
||||
i=system("cat filteredPoses.bvhm >> filteredPoses.bvh");
|
||||
if (i!=0) { fprintf(stderr,"Could not add motion frames\n"); }
|
||||
//------------------------------------------------------------------------
|
||||
i=system("rm filteredPoses.bvhm");
|
||||
if (i!=0) { fprintf(stderr,"Could not remove intermediate motion frames\n"); }
|
||||
//------------------------------------------------------------------------
|
||||
}
|
||||
|
||||
|
||||
free(state);
|
||||
free(state3D);
|
||||
|
||||
fprintf(stderr,"Done overlaying %lu poses..!\n",numberOfPosesLoaded);
|
||||
imshow("BVH", viewMat);
|
||||
imwrite("csvCluster.png",viewMat);
|
||||
|
||||
if (saveVideo)
|
||||
{
|
||||
//Low-Res video encoding
|
||||
//snprintf(videoFrameFinalFilename,512,"ffmpeg -framerate 30 -i %s/colorFrame_0_%%05d.png -y -r 30 -threads 8 -crf 9 -pix_fmt yuv420p %s/video.mp4",videoPath,videoPath);
|
||||
|
||||
//High-Res video encoding
|
||||
snprintf(videoFrameFinalFilename,512,"ffmpeg -framerate 30 -i %s/colorFrame_0_%%05d.png -s 1200x720 -y -r 30 -pix_fmt yuv420p -threads 8 %s/video.mp4",videoPath,videoPath);
|
||||
int i=system(videoFrameFinalFilename);
|
||||
|
||||
|
||||
if (i==0)
|
||||
{
|
||||
fprintf(stderr,"Successfully wrote video file %s/video.mp4.. \n",videoPath);
|
||||
}
|
||||
else
|
||||
{
|
||||
fprintf(stderr,"Failed to write a video file %s/video.mp4.. \n",videoPath);
|
||||
}
|
||||
|
||||
fprintf(stderr,"Since we wanted to output video this is probably a scripted run, will not wait for a keystroke..\n");
|
||||
waitKey(1);
|
||||
}
|
||||
else
|
||||
{
|
||||
waitKey(0);
|
||||
}
|
||||
|
||||
|
||||
free(state->accumulatedImage);
|
||||
free(state);
|
||||
free(state3D);
|
||||
|
||||
return 0;
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
+282
@@ -0,0 +1,282 @@
|
||||
dataset/MotionCapture/01/01_02.bvh
|
||||
dataset/MotionCapture/01/01_03.bvh
|
||||
dataset/MotionCapture/01/01_05.bvh
|
||||
dataset/MotionCapture/01/01_06.bvh
|
||||
dataset/MotionCapture/01/01_07.bvh
|
||||
dataset/MotionCapture/01/01_08.bvh
|
||||
dataset/MotionCapture/01/01_09.bvh
|
||||
dataset/MotionCapture/01/01_10.bvh
|
||||
dataset/MotionCapture/01/01_11.bvh
|
||||
dataset/MotionCapture/01/01_12.bvh
|
||||
dataset/MotionCapture/01/01_13.bvh
|
||||
dataset/MotionCapture/01/01_14.bvh
|
||||
dataset/MotionCapture/02/02_01.bvh
|
||||
dataset/MotionCapture/02/02_02.bvh
|
||||
dataset/MotionCapture/02/02_03.bvh
|
||||
dataset/MotionCapture/02/02_04.bvh
|
||||
dataset/MotionCapture/02/02_05.bvh
|
||||
dataset/MotionCapture/02/02_06.bvh
|
||||
dataset/MotionCapture/02/02_07.bvh
|
||||
dataset/MotionCapture/02/02_08.bvh
|
||||
dataset/MotionCapture/02/02_09.bvh
|
||||
dataset/MotionCapture/02/02_10.bvh
|
||||
dataset/MotionCapture/03/03_01.bvh
|
||||
dataset/MotionCapture/03/03_02.bvh
|
||||
dataset/MotionCapture/03/03_03.bvh
|
||||
dataset/MotionCapture/03/03_04.bvh
|
||||
dataset/MotionCapture/05/05_01.bvh
|
||||
dataset/MotionCapture/05/05_02.bvh
|
||||
dataset/MotionCapture/05/05_03.bvh
|
||||
dataset/MotionCapture/05/05_04.bvh
|
||||
dataset/MotionCapture/05/05_05.bvh
|
||||
dataset/MotionCapture/05/05_06.bvh
|
||||
dataset/MotionCapture/05/05_07.bvh
|
||||
dataset/MotionCapture/05/05_08.bvh
|
||||
dataset/MotionCapture/05/05_09.bvh
|
||||
dataset/MotionCapture/05/05_10.bvh
|
||||
dataset/MotionCapture/05/05_11.bvh
|
||||
dataset/MotionCapture/05/05_12.bvh
|
||||
dataset/MotionCapture/05/05_13.bvh
|
||||
dataset/MotionCapture/05/05_14.bvh
|
||||
dataset/MotionCapture/05/05_15.bvh
|
||||
dataset/MotionCapture/05/05_16.bvh
|
||||
dataset/MotionCapture/05/05_17.bvh
|
||||
dataset/MotionCapture/05/05_18.bvh
|
||||
dataset/MotionCapture/05/05_19.bvh
|
||||
dataset/MotionCapture/05/05_20.bvh
|
||||
dataset/MotionCapture/06/06_01.bvh
|
||||
dataset/MotionCapture/06/06_02.bvh
|
||||
dataset/MotionCapture/06/06_03.bvh
|
||||
dataset/MotionCapture/06/06_04.bvh
|
||||
dataset/MotionCapture/06/06_05.bvh
|
||||
dataset/MotionCapture/06/06_06.bvh
|
||||
dataset/MotionCapture/06/06_07.bvh
|
||||
dataset/MotionCapture/06/06_08.bvh
|
||||
dataset/MotionCapture/06/06_09.bvh
|
||||
dataset/MotionCapture/06/06_10.bvh
|
||||
dataset/MotionCapture/06/06_11.bvh
|
||||
dataset/MotionCapture/06/06_12.bvh
|
||||
dataset/MotionCapture/06/06_13.bvh
|
||||
dataset/MotionCapture/06/06_14.bvh
|
||||
dataset/MotionCapture/06/06_15.bvh
|
||||
dataset/MotionCapture/07/07_01.bvh
|
||||
dataset/MotionCapture/07/07_02.bvh
|
||||
dataset/MotionCapture/07/07_03.bvh
|
||||
dataset/MotionCapture/07/07_04.bvh
|
||||
dataset/MotionCapture/07/07_05.bvh
|
||||
dataset/MotionCapture/07/07_06.bvh
|
||||
dataset/MotionCapture/07/07_07.bvh
|
||||
dataset/MotionCapture/07/07_08.bvh
|
||||
dataset/MotionCapture/07/07_09.bvh
|
||||
dataset/MotionCapture/07/07_10.bvh
|
||||
dataset/MotionCapture/07/07_11.bvh
|
||||
dataset/MotionCapture/07/07_12.bvh
|
||||
dataset/MotionCapture/08/08_01.bvh
|
||||
dataset/MotionCapture/08/08_02.bvh
|
||||
dataset/MotionCapture/08/08_03.bvh
|
||||
dataset/MotionCapture/08/08_04.bvh
|
||||
dataset/MotionCapture/08/08_05.bvh
|
||||
dataset/MotionCapture/08/08_06.bvh
|
||||
dataset/MotionCapture/08/08_07.bvh
|
||||
dataset/MotionCapture/08/08_08.bvh
|
||||
dataset/MotionCapture/08/08_09.bvh
|
||||
dataset/MotionCapture/08/08_10.bvh
|
||||
dataset/MotionCapture/08/08_11.bvh
|
||||
dataset/MotionCapture/09/09_01.bvh
|
||||
dataset/MotionCapture/09/09_02.bvh
|
||||
dataset/MotionCapture/09/09_03.bvh
|
||||
dataset/MotionCapture/09/09_04.bvh
|
||||
dataset/MotionCapture/09/09_05.bvh
|
||||
dataset/MotionCapture/09/09_06.bvh
|
||||
dataset/MotionCapture/09/09_07.bvh
|
||||
dataset/MotionCapture/09/09_08.bvh
|
||||
dataset/MotionCapture/09/09_09.bvh
|
||||
dataset/MotionCapture/09/09_10.bvh
|
||||
dataset/MotionCapture/09/09_11.bvh
|
||||
dataset/MotionCapture/09/09_12.bvh
|
||||
dataset/MotionCapture/10/10_01.bvh
|
||||
dataset/MotionCapture/10/10_02.bvh
|
||||
dataset/MotionCapture/10/10_03.bvh
|
||||
dataset/MotionCapture/10/10_04.bvh
|
||||
dataset/MotionCapture/10/10_05.bvh
|
||||
dataset/MotionCapture/10/10_06.bvh
|
||||
dataset/MotionCapture/13/13_01.bvh
|
||||
dataset/MotionCapture/13/13_02.bvh
|
||||
dataset/MotionCapture/13/13_03.bvh
|
||||
dataset/MotionCapture/13/13_04.bvh
|
||||
dataset/MotionCapture/13/13_05.bvh
|
||||
dataset/MotionCapture/13/13_06.bvh
|
||||
dataset/MotionCapture/13/13_07.bvh
|
||||
dataset/MotionCapture/13/13_08.bvh
|
||||
dataset/MotionCapture/13/13_09.bvh
|
||||
dataset/MotionCapture/13/13_10.bvh
|
||||
dataset/MotionCapture/13/13_11.bvh
|
||||
dataset/MotionCapture/13/13_12.bvh
|
||||
dataset/MotionCapture/13/13_13.bvh
|
||||
dataset/MotionCapture/13/13_14.bvh
|
||||
dataset/MotionCapture/13/13_15.bvh
|
||||
dataset/MotionCapture/13/13_16.bvh
|
||||
dataset/MotionCapture/13/13_19.bvh
|
||||
dataset/MotionCapture/13/13_20.bvh
|
||||
dataset/MotionCapture/13/13_21.bvh
|
||||
dataset/MotionCapture/13/13_22.bvh
|
||||
dataset/MotionCapture/13/13_24.bvh
|
||||
dataset/MotionCapture/13/13_25.bvh
|
||||
dataset/MotionCapture/13/13_26.bvh
|
||||
dataset/MotionCapture/13/13_27.bvh
|
||||
dataset/MotionCapture/13/13_28.bvh
|
||||
dataset/MotionCapture/13/13_29.bvh
|
||||
dataset/MotionCapture/13/13_30.bvh
|
||||
dataset/MotionCapture/13/13_31.bvh
|
||||
dataset/MotionCapture/13/13_32.bvh
|
||||
dataset/MotionCapture/13/13_33.bvh
|
||||
dataset/MotionCapture/13/13_34.bvh
|
||||
dataset/MotionCapture/13/13_35.bvh
|
||||
dataset/MotionCapture/13/13_36.bvh
|
||||
dataset/MotionCapture/13/13_37.bvh
|
||||
dataset/MotionCapture/13/13_38.bvh
|
||||
dataset/MotionCapture/13/13_39.bvh
|
||||
dataset/MotionCapture/13/13_40.bvh
|
||||
dataset/MotionCapture/13/13_41.bvh
|
||||
dataset/MotionCapture/13/13_42.bvh
|
||||
dataset/MotionCapture/14/14_01.bvh
|
||||
dataset/MotionCapture/14/14_04.bvh
|
||||
dataset/MotionCapture/14/14_05.bvh
|
||||
dataset/MotionCapture/14/14_06.bvh
|
||||
dataset/MotionCapture/14/14_07.bvh
|
||||
dataset/MotionCapture/14/14_08.bvh
|
||||
dataset/MotionCapture/14/14_09.bvh
|
||||
dataset/MotionCapture/14/14_10.bvh
|
||||
dataset/MotionCapture/14/14_11.bvh
|
||||
dataset/MotionCapture/14/14_12.bvh
|
||||
dataset/MotionCapture/14/14_13.bvh
|
||||
dataset/MotionCapture/14/14_14.bvh
|
||||
dataset/MotionCapture/14/14_15.bvh
|
||||
dataset/MotionCapture/14/14_16.bvh
|
||||
dataset/MotionCapture/14/14_17.bvh
|
||||
dataset/MotionCapture/14/14_18.bvh
|
||||
dataset/MotionCapture/14/14_19.bvh
|
||||
dataset/MotionCapture/14/14_20.bvh
|
||||
dataset/MotionCapture/14/14_21.bvh
|
||||
dataset/MotionCapture/14/14_22.bvh
|
||||
dataset/MotionCapture/14/14_24.bvh
|
||||
dataset/MotionCapture/14/14_25.bvh
|
||||
dataset/MotionCapture/14/14_26.bvh
|
||||
dataset/MotionCapture/14/14_27.bvh
|
||||
dataset/MotionCapture/14/14_28.bvh
|
||||
dataset/MotionCapture/14/14_29.bvh
|
||||
dataset/MotionCapture/14/14_30.bvh
|
||||
dataset/MotionCapture/14/14_31.bvh
|
||||
dataset/MotionCapture/14/14_32.bvh
|
||||
dataset/MotionCapture/14/14_33.bvh
|
||||
dataset/MotionCapture/14/14_34.bvh
|
||||
dataset/MotionCapture/14/14_35.bvh
|
||||
dataset/MotionCapture/14/14_36.bvh
|
||||
dataset/MotionCapture/14/14_37.bvh
|
||||
dataset/MotionCapture/15/15_01.bvh
|
||||
dataset/MotionCapture/15/15_02.bvh
|
||||
dataset/MotionCapture/15/15_03.bvh
|
||||
dataset/MotionCapture/15/15_04.bvh
|
||||
dataset/MotionCapture/15/15_05.bvh
|
||||
dataset/MotionCapture/15/15_06.bvh
|
||||
dataset/MotionCapture/15/15_07.bvh
|
||||
dataset/MotionCapture/15/15_08.bvh
|
||||
dataset/MotionCapture/15/15_09.bvh
|
||||
dataset/MotionCapture/15/15_10.bvh
|
||||
dataset/MotionCapture/15/15_11.bvh
|
||||
dataset/MotionCapture/15/15_12.bvh
|
||||
dataset/MotionCapture/15/15_13.bvh
|
||||
dataset/MotionCapture/15/15_14.bvh
|
||||
dataset/MotionCapture/16/16_01.bvh
|
||||
dataset/MotionCapture/16/16_02.bvh
|
||||
dataset/MotionCapture/16/16_03.bvh
|
||||
dataset/MotionCapture/16/16_04.bvh
|
||||
dataset/MotionCapture/16/16_05.bvh
|
||||
dataset/MotionCapture/16/16_06.bvh
|
||||
dataset/MotionCapture/16/16_07.bvh
|
||||
dataset/MotionCapture/16/16_08.bvh
|
||||
dataset/MotionCapture/16/16_09.bvh
|
||||
dataset/MotionCapture/16/16_10.bvh
|
||||
dataset/MotionCapture/16/16_11.bvh
|
||||
dataset/MotionCapture/16/16_12.bvh
|
||||
dataset/MotionCapture/16/16_13.bvh
|
||||
dataset/MotionCapture/16/16_14.bvh
|
||||
dataset/MotionCapture/16/16_15.bvh
|
||||
dataset/MotionCapture/16/16_16.bvh
|
||||
dataset/MotionCapture/16/16_17.bvh
|
||||
dataset/MotionCapture/16/16_18.bvh
|
||||
dataset/MotionCapture/16/16_19.bvh
|
||||
dataset/MotionCapture/16/16_20.bvh
|
||||
dataset/MotionCapture/16/16_21.bvh
|
||||
dataset/MotionCapture/16/16_22.bvh
|
||||
dataset/MotionCapture/16/16_23.bvh
|
||||
dataset/MotionCapture/16/16_24.bvh
|
||||
dataset/MotionCapture/16/16_25.bvh
|
||||
dataset/MotionCapture/16/16_26.bvh
|
||||
dataset/MotionCapture/16/16_27.bvh
|
||||
dataset/MotionCapture/16/16_28.bvh
|
||||
dataset/MotionCapture/16/16_29.bvh
|
||||
dataset/MotionCapture/16/16_30.bvh
|
||||
dataset/MotionCapture/16/16_31.bvh
|
||||
dataset/MotionCapture/16/16_32.bvh
|
||||
dataset/MotionCapture/16/16_33.bvh
|
||||
dataset/MotionCapture/16/16_34.bvh
|
||||
dataset/MotionCapture/16/16_35.bvh
|
||||
dataset/MotionCapture/16/16_36.bvh
|
||||
dataset/MotionCapture/16/16_37.bvh
|
||||
dataset/MotionCapture/16/16_38.bvh
|
||||
dataset/MotionCapture/16/16_39.bvh
|
||||
dataset/MotionCapture/16/16_40.bvh
|
||||
dataset/MotionCapture/16/16_41.bvh
|
||||
dataset/MotionCapture/16/16_42.bvh
|
||||
dataset/MotionCapture/16/16_43.bvh
|
||||
dataset/MotionCapture/16/16_44.bvh
|
||||
dataset/MotionCapture/16/16_47.bvh
|
||||
dataset/MotionCapture/16/16_48.bvh
|
||||
dataset/MotionCapture/16/16_49.bvh
|
||||
dataset/MotionCapture/16/16_50.bvh
|
||||
dataset/MotionCapture/16/16_51.bvh
|
||||
dataset/MotionCapture/16/16_52.bvh
|
||||
dataset/MotionCapture/16/16_53.bvh
|
||||
dataset/MotionCapture/16/16_55.bvh
|
||||
dataset/MotionCapture/16/16_56.bvh
|
||||
dataset/MotionCapture/16/16_58.bvh
|
||||
dataset/MotionCapture/17/17_01.bvh
|
||||
dataset/MotionCapture/17/17_02.bvh
|
||||
dataset/MotionCapture/17/17_03.bvh
|
||||
dataset/MotionCapture/17/17_04.bvh
|
||||
dataset/MotionCapture/17/17_05.bvh
|
||||
dataset/MotionCapture/17/17_06.bvh
|
||||
dataset/MotionCapture/17/17_07.bvh
|
||||
dataset/MotionCapture/17/17_08.bvh
|
||||
dataset/MotionCapture/17/17_09.bvh
|
||||
dataset/MotionCapture/18/18_01.bvh
|
||||
dataset/MotionCapture/18/18_02.bvh
|
||||
dataset/MotionCapture/18/18_03.bvh
|
||||
dataset/MotionCapture/18/18_04.bvh
|
||||
dataset/MotionCapture/18/18_05.bvh
|
||||
dataset/MotionCapture/18/18_06.bvh
|
||||
dataset/MotionCapture/18/18_07.bvh
|
||||
dataset/MotionCapture/18/18_08.bvh
|
||||
dataset/MotionCapture/18/18_09.bvh
|
||||
dataset/MotionCapture/18/18_10.bvh
|
||||
dataset/MotionCapture/18/18_11.bvh
|
||||
dataset/MotionCapture/18/18_12.bvh
|
||||
dataset/MotionCapture/18/18_13.bvh
|
||||
dataset/MotionCapture/18/18_14.bvh
|
||||
dataset/MotionCapture/18/18_15.bvh
|
||||
dataset/MotionCapture/19/19_01.bvh
|
||||
dataset/MotionCapture/19/19_02.bvh
|
||||
dataset/MotionCapture/19/19_03.bvh
|
||||
dataset/MotionCapture/19/19_04.bvh
|
||||
dataset/MotionCapture/19/19_05.bvh
|
||||
dataset/MotionCapture/19/19_06.bvh
|
||||
dataset/MotionCapture/19/19_07.bvh
|
||||
dataset/MotionCapture/19/19_08.bvh
|
||||
dataset/MotionCapture/19/19_09.bvh
|
||||
dataset/MotionCapture/19/19_10.bvh
|
||||
dataset/MotionCapture/19/19_11.bvh
|
||||
dataset/MotionCapture/19/19_12.bvh
|
||||
dataset/MotionCapture/19/19_13.bvh
|
||||
dataset/MotionCapture/19/19_14.bvh
|
||||
dataset/MotionCapture/19/19_15.bvh
|
||||
@@ -0,0 +1,125 @@
|
||||
#include "perform2DClustering.hpp"
|
||||
|
||||
|
||||
#include "../MocapNETLib2/IO/bvh.hpp"
|
||||
|
||||
#include "../../../dependencies/RGBDAcquisition/opengl_acquisition_shared_library/opengl_depth_and_color_renderer/src/Library/MotionCaptureLoader/bvh_loader.h"
|
||||
#include "../../../dependencies/RGBDAcquisition/opengl_acquisition_shared_library/opengl_depth_and_color_renderer/src/Library/MotionCaptureLoader/edit/bvh_filter.h"
|
||||
#include "../../../dependencies/RGBDAcquisition/opengl_acquisition_shared_library/opengl_depth_and_color_renderer/src/Library/MotionCaptureLoader/edit/bvh_rename.h"
|
||||
#include "../../../dependencies/RGBDAcquisition/opengl_acquisition_shared_library/opengl_depth_and_color_renderer/src/Library/MotionCaptureLoader/edit/bvh_randomize.h"
|
||||
|
||||
|
||||
|
||||
std::vector<std::vector<float> > collectPoses(
|
||||
struct applicationState * state,
|
||||
std::vector<char> &activeJoints,
|
||||
struct BVH_MotionCapture * bvhMotion,
|
||||
float distance,
|
||||
unsigned int width,
|
||||
unsigned int height
|
||||
)
|
||||
{
|
||||
|
||||
std::vector<std::vector<float> > bvh2DPoints;
|
||||
|
||||
if (bvhMotion==0)
|
||||
{
|
||||
return bvh2DPoints;
|
||||
}
|
||||
|
||||
|
||||
std::vector<float> bvhConfiguration;
|
||||
|
||||
bvhConfiguration.clear();
|
||||
for (int i=0; i<bvhMotion->numberOfValuesPerFrame; i++)
|
||||
{
|
||||
bvhConfiguration.push_back(0.0);
|
||||
}
|
||||
bvhConfiguration[2]=(float) -150.0;
|
||||
|
||||
|
||||
|
||||
if ( bvhConfiguration.size() < bvhMotion->numberOfValuesPerFrame)
|
||||
{
|
||||
return bvh2DPoints;
|
||||
}
|
||||
|
||||
unsigned int mID=0;
|
||||
|
||||
fprintf(stderr,"Collecting %u poses\n",bvhMotion->numberOfFrames);
|
||||
|
||||
// state->maxAccumulatedSample= 0;
|
||||
|
||||
for (int frameID=0; frameID<bvhMotion->numberOfFrames; frameID++)
|
||||
{
|
||||
//fprintf(stderr,".%u",frameID);
|
||||
|
||||
for (int i=0; i<bvhMotion->numberOfValuesPerFrame; i++)
|
||||
{
|
||||
//fprintf(stderr,"%u ",i);
|
||||
int motionValueID = mID % (bvhMotion->numberOfValuesPerFrame * bvhMotion->numberOfFrames);
|
||||
bvhConfiguration[i]=bvhMotion->motionValues[motionValueID];
|
||||
++mID;
|
||||
}
|
||||
//fprintf(stderr,"!");
|
||||
|
||||
|
||||
if (bvhConfiguration.size()>5)
|
||||
{
|
||||
bvhConfiguration[0]=0;
|
||||
bvhConfiguration[1]=0;
|
||||
bvhConfiguration[2]=distance;
|
||||
bvhConfiguration[3]=0;
|
||||
bvhConfiguration[4]=state->rotation;
|
||||
bvhConfiguration[5]=0;
|
||||
|
||||
bvh2DPoints = convertBVHFrameTo2DPoints(bvhConfiguration); //,width, height
|
||||
|
||||
|
||||
|
||||
if (bvh2DPoints.size()>0)
|
||||
{
|
||||
++state->accumulatedSamples;
|
||||
for (int i=0; i<bvh2DPoints.size(); i++)
|
||||
{
|
||||
//We want to exclude Hip joint because it is stuck in the same place for every frame..!
|
||||
if (
|
||||
( activeJoints[i] ) &&
|
||||
( (bvh2DPoints[i][0]>0) && (bvh2DPoints[i][1]>0) && (bvh2DPoints[i][0]<width) && (bvh2DPoints[i][1]<height) )
|
||||
)
|
||||
{
|
||||
unsigned int x=(unsigned int) bvh2DPoints[i][0];
|
||||
unsigned int y=(unsigned int) bvh2DPoints[i][1];
|
||||
|
||||
if ( (x<width) && (y<height) )
|
||||
{
|
||||
unsigned long newValue = state->accumulatedImage[y*width+x] + 1;
|
||||
|
||||
if (newValue<=state->accumulatedSamples)
|
||||
{
|
||||
state->accumulatedImage[y*width+x] = newValue;
|
||||
|
||||
if (state->maxAccumulatedSample<newValue)
|
||||
{
|
||||
state->maxAccumulatedSample=newValue;
|
||||
//fprintf(stderr,"Pixel %u,%u has largest value %lu\n",x,y,newValue);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
fprintf(stderr,"%0.2f,%0.2f wrongly casted to %u,%u",bvh2DPoints[i][0],bvh2DPoints[i][1],x,y);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
fprintf(stderr,"Could not project BVH 2D points\n");
|
||||
}
|
||||
}
|
||||
} //For every frame loop..
|
||||
|
||||
return bvh2DPoints;
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
#pragma once
|
||||
|
||||
#include <stdio.h>
|
||||
#include <vector>
|
||||
|
||||
struct applicationState
|
||||
{
|
||||
int rotation;
|
||||
int selectedJoint,previousSelection;
|
||||
int visualizationType,previousVisualizationType;
|
||||
int stop;
|
||||
int save;
|
||||
int redraw;
|
||||
//-----------------
|
||||
unsigned long * accumulatedImage;
|
||||
unsigned long accumulatedSamples;
|
||||
unsigned long maxAccumulatedSample;
|
||||
};
|
||||
|
||||
|
||||
std::vector<std::vector<float> > collectPoses(
|
||||
struct applicationState * state,
|
||||
std::vector<char> &activeJoints,
|
||||
struct BVH_MotionCapture * bvhMotion,
|
||||
float distance,
|
||||
unsigned int width,
|
||||
unsigned int height
|
||||
);
|
||||
@@ -0,0 +1,223 @@
|
||||
#include "perform3DClustering.hpp"
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
|
||||
#include "../MocapNETLib2/IO/bvh.hpp"
|
||||
|
||||
#include "../../../dependencies/RGBDAcquisition/opengl_acquisition_shared_library/opengl_depth_and_color_renderer/src/Library/MotionCaptureLoader/bvh_loader.h"
|
||||
#include "../../../dependencies/RGBDAcquisition/opengl_acquisition_shared_library/opengl_depth_and_color_renderer/src/Library/MotionCaptureLoader/edit/bvh_filter.h"
|
||||
#include "../../../dependencies/RGBDAcquisition/opengl_acquisition_shared_library/opengl_depth_and_color_renderer/src/Library/MotionCaptureLoader/edit/bvh_rename.h"
|
||||
#include "../../../dependencies/RGBDAcquisition/opengl_acquisition_shared_library/opengl_depth_and_color_renderer/src/Library/MotionCaptureLoader/edit/bvh_randomize.h"
|
||||
|
||||
|
||||
|
||||
#define NORMAL "\033[0m"
|
||||
#define BLACK "\033[30m" /* Black */
|
||||
#define RED "\033[31m" /* Red */
|
||||
#define GREEN "\033[32m" /* Green */
|
||||
#define YELLOW "\033[33m" /* Yellow */
|
||||
|
||||
int appendBVHVectorToFile(FILE * fp, std::vector<float> vec)
|
||||
{
|
||||
if ( (fp!=0) && (vec.size()>0) )
|
||||
{
|
||||
for (unsigned int i=0; i<vec.size(); i++)
|
||||
{
|
||||
if (i!=0) { fprintf(fp," "); }
|
||||
fprintf(fp,"%0.2f",vec[i]);
|
||||
}
|
||||
fprintf(fp,"\n");
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
std::vector<std::vector<float> > collect3DPoses(
|
||||
struct clusteringOf3DPoses * state,
|
||||
std::vector<char> &activeJoints,
|
||||
struct BVH_MotionCapture * bvhMotion,
|
||||
float distance,
|
||||
unsigned int width,
|
||||
unsigned int height,
|
||||
unsigned int depth
|
||||
)
|
||||
{
|
||||
std::vector<std::vector<float> > bvh2DPointsFront;
|
||||
std::vector<std::vector<float> > bvh2DPointsSide;
|
||||
|
||||
if (bvhMotion==0)
|
||||
{
|
||||
//Return an empty vector of vectors..
|
||||
return bvh2DPointsFront;
|
||||
}
|
||||
|
||||
if (state->fp==0)
|
||||
{
|
||||
state->fp = fopen("filteredPoses.bvhm","w");
|
||||
}
|
||||
|
||||
if (state->space==0)
|
||||
{
|
||||
state->allocatedSpaceMemorySize = width * height * depth * sizeof(struct voxelElement);
|
||||
fprintf(stderr,"Will now try to allocate a huge chunk of memory (%lu bytes)\n",state->allocatedSpaceMemorySize);
|
||||
state->space = (struct voxelElement * ) malloc(state->allocatedSpaceMemorySize);
|
||||
if (state->space!=0)
|
||||
{
|
||||
fprintf(stderr,"Will now try to cleanup the huge chunk of memory (%lu bytes)\n",state->allocatedSpaceMemorySize);
|
||||
memset(state->space,0,state->allocatedSpaceMemorySize);
|
||||
fprintf(stderr,"Survived..\n");
|
||||
} else
|
||||
{
|
||||
state->allocatedSpaceMemorySize=0;
|
||||
fprintf(stderr,"Error allocating a huge chunk of memory..!\n");
|
||||
return bvh2DPointsFront;
|
||||
}
|
||||
}
|
||||
|
||||
std::vector<float> bvhConfiguration;
|
||||
|
||||
bvhConfiguration.clear();
|
||||
for (int i=0; i<bvhMotion->numberOfValuesPerFrame; i++)
|
||||
{
|
||||
bvhConfiguration.push_back(0.0);
|
||||
}
|
||||
bvhConfiguration[2]=(float) -150.0;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
if (bvhMotion==0)
|
||||
{
|
||||
return bvh2DPointsFront;
|
||||
}
|
||||
|
||||
if ( bvhConfiguration.size() < bvhMotion->numberOfValuesPerFrame)
|
||||
{
|
||||
return bvh2DPointsFront;
|
||||
}
|
||||
|
||||
unsigned int mID=0;
|
||||
|
||||
fprintf(stderr,"Collecting %u poses\n",bvhMotion->numberOfFrames);
|
||||
|
||||
// state->maxAccumulatedSample= 0;
|
||||
unsigned int negativesAtThisCall=0;
|
||||
unsigned int hitsAtThisCall=0;
|
||||
|
||||
for (int frameID=0; frameID<bvhMotion->numberOfFrames; frameID++)
|
||||
{
|
||||
//fprintf(stderr,".%u",frameID);
|
||||
|
||||
for (int i=0; i<bvhMotion->numberOfValuesPerFrame; i++)
|
||||
{
|
||||
//fprintf(stderr,"%u ",i);
|
||||
int motionValueID = mID % (bvhMotion->numberOfValuesPerFrame * bvhMotion->numberOfFrames);
|
||||
bvhConfiguration[i]=bvhMotion->motionValues[motionValueID];
|
||||
++mID;
|
||||
}
|
||||
//fprintf(stderr,"!");
|
||||
|
||||
|
||||
|
||||
if (bvhConfiguration.size()>5)
|
||||
{
|
||||
bvhConfiguration[0]=0;
|
||||
bvhConfiguration[1]=0;
|
||||
bvhConfiguration[2]=distance;
|
||||
bvhConfiguration[3]=0;
|
||||
bvhConfiguration[4]=0;
|
||||
bvhConfiguration[5]=0;
|
||||
|
||||
|
||||
bvhConfiguration[4]=0;
|
||||
bvh2DPointsFront = convertBVHFrameTo2DPoints(bvhConfiguration); //,width,height
|
||||
bvhConfiguration[4]=90;
|
||||
bvh2DPointsSide = convertBVHFrameTo2DPoints(bvhConfiguration); //,width,height
|
||||
bvhConfiguration[4]=0; // So the configuration we save is ok
|
||||
|
||||
if ( (bvh2DPointsFront.size()>0) && (bvh2DPointsSide.size()>0) && (bvh2DPointsFront.size()==bvh2DPointsSide.size()) )
|
||||
{
|
||||
for (int i=0; i<bvh2DPointsFront.size(); i++)
|
||||
{
|
||||
//We want to exclude Hip joint because it is stuck in the same place for every frame..!
|
||||
if (
|
||||
(activeJoints[i]) &&
|
||||
( (bvh2DPointsFront[i][0]>0) && (bvh2DPointsFront[i][1]>0) && (bvh2DPointsFront[i][0]<width) && (bvh2DPointsFront[i][1]<height) ) &&
|
||||
( (bvh2DPointsSide[i][0]>0) && (bvh2DPointsSide[i][1]>0) && (bvh2DPointsSide[i][0]<depth) && (bvh2DPointsSide[i][1]<height) )
|
||||
)
|
||||
{
|
||||
unsigned int x=(unsigned int) bvh2DPointsFront[i][0];
|
||||
unsigned int y=(unsigned int) bvh2DPointsFront[i][1];
|
||||
unsigned int z=(unsigned int) bvh2DPointsSide[i][0];
|
||||
|
||||
//fprintf(stderr,"x=%u,y=%u,z=%u\n",x,y,z);
|
||||
|
||||
if ( (x<width) && (y<height) && (z<depth) )
|
||||
{
|
||||
unsigned long memoryLocation = (unsigned long) (z*width*height) + (y*width)+ x;
|
||||
|
||||
if (state->allocatedSpaceMemorySize>memoryLocation)
|
||||
{
|
||||
if (state->space[memoryLocation].element==0)
|
||||
{
|
||||
++state->accumulatedSamples;
|
||||
appendBVHVectorToFile(state->fp, bvhConfiguration);
|
||||
++hitsAtThisCall;
|
||||
state->space[memoryLocation].element=1;
|
||||
} else
|
||||
{
|
||||
++negativesAtThisCall;
|
||||
if (state->space[memoryLocation].element<254)
|
||||
{
|
||||
state->space[memoryLocation].element+=1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
if (newValue<=state->accumulatedSamples)
|
||||
{
|
||||
state->space[memoryLocation].element = newValue;
|
||||
|
||||
if (state->maxAccumulatedSample<newValue)
|
||||
{
|
||||
state->maxAccumulatedSample=newValue;
|
||||
//fprintf(stderr,"Pixel %u,%u has largest value %lu\n",x,y,newValue);
|
||||
}
|
||||
} */
|
||||
} else
|
||||
{
|
||||
fprintf(stderr,"Bad memory location for %u,%u,%u \n",x,y,z);
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
fprintf(stderr,"%0.2f,%0.2f wrongly casted to %u,%u",bvh2DPointsFront[i][0],bvh2DPointsFront[i][1],x,y);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
fprintf(stderr,"Could not project BVH 2D points\n");
|
||||
}
|
||||
}
|
||||
} //For every frame loop..
|
||||
|
||||
if (hitsAtThisCall>0)
|
||||
{
|
||||
fprintf(stderr,GREEN "Added %u more poses (%0.2f%% of the dataset is novel)..\n" NORMAL,hitsAtThisCall,(float) (100*hitsAtThisCall)/bvhMotion->numberOfFrames);
|
||||
} else
|
||||
{
|
||||
fprintf(stderr,YELLOW "No new poses observed ( %u/%u negatives )..\n" NORMAL,negativesAtThisCall,bvhMotion->numberOfFrames);
|
||||
}
|
||||
|
||||
return bvh2DPointsFront;
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
#pragma once
|
||||
|
||||
#include <stdio.h>
|
||||
#include <vector>
|
||||
|
||||
|
||||
struct voxelElement
|
||||
{
|
||||
char element;
|
||||
};
|
||||
|
||||
|
||||
struct clusteringOf3DPoses
|
||||
{
|
||||
FILE *fp;
|
||||
struct voxelElement * space;
|
||||
unsigned long allocatedSpaceMemorySize;
|
||||
unsigned int width,height,depth;
|
||||
unsigned long accumulatedSamples;
|
||||
unsigned long maxAccumulatedSample;
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
std::vector<std::vector<float> > collect3DPoses(
|
||||
struct clusteringOf3DPoses * state,
|
||||
std::vector<char> &activeJoints,
|
||||
struct BVH_MotionCapture * bvhMotion,
|
||||
float distance,
|
||||
unsigned int width,
|
||||
unsigned int height,
|
||||
unsigned int depth
|
||||
);
|
||||
@@ -0,0 +1,36 @@
|
||||
project( convertH36GroundTruthToMocapNETInput )
|
||||
cmake_minimum_required(VERSION 3.5)
|
||||
|
||||
|
||||
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
|
||||
|
||||
include_directories(${TENSORFLOW_INCLUDE_ROOT})
|
||||
|
||||
#-----------------------------------------------
|
||||
# This is the converter utilities..
|
||||
#-----------------------------------------------
|
||||
add_executable(
|
||||
convertH36GroundTruthToMocapNETInput
|
||||
convertH36GroundTruthToMocapNETInput.cpp
|
||||
../../MocapNETLib2/tools.cpp
|
||||
../../MocapNETLib2/IO/jsonRead.cpp
|
||||
../../MocapNETLib2/IO/jsonMocapNETHelpers.cpp
|
||||
../../../../dependencies/InputParser/InputParser_C.cpp
|
||||
${BVH_SOURCE}
|
||||
${OPENGL_SOURCE}
|
||||
../../MocapNETLib2/IO/bvh.cpp
|
||||
../../MocapNETLib2/IO/conversions.cpp
|
||||
../../MocapNETLib2/IO/csvRead.cpp
|
||||
../../MocapNETLib2/IO/csvWrite.cpp
|
||||
)
|
||||
|
||||
#-----------------------------------------------
|
||||
|
||||
target_link_libraries(convertH36GroundTruthToMocapNETInput rt dl m pthread MocapNETLib2)
|
||||
set_target_properties(convertH36GroundTruthToMocapNETInput PROPERTIES DEBUG_POSTFIX "D")
|
||||
set_target_properties(convertH36GroundTruthToMocapNETInput PROPERTIES
|
||||
ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}"
|
||||
LIBRARY_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}"
|
||||
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}"
|
||||
)
|
||||
|
||||
+241
@@ -0,0 +1,241 @@
|
||||
/*
|
||||
* Export utility from OpenPose BODY 25 JSON format to a more regular CSV file
|
||||
* Sample call : ./convertBody25JSONToCSV --from frames/GOPR3223.MP4-data/ --label colorFrame_0_ -o .
|
||||
* */
|
||||
|
||||
#include <iostream>
|
||||
#include <vector>
|
||||
#include <math.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "../../../MocapNET2/MocapNETLib2/tools.hpp"
|
||||
#include "../../../MocapNET2/MocapNETLib2/mocapnet2.hpp"
|
||||
#include "../../../MocapNET2/MocapNETLib2/IO/commonSkeleton.hpp"
|
||||
#include "../../../MocapNET2/MocapNETLib2/IO/jsonRead.hpp"
|
||||
#include "../../../MocapNET2/MocapNETLib2/IO/csvRead.hpp"
|
||||
#include "../../../MocapNET2/MocapNETLib2/IO/csvWrite.hpp"
|
||||
|
||||
|
||||
#if USE_BVH
|
||||
#include "../../../../dependencies/RGBDAcquisition/tools/AmMatrix/matrix4x4Tools.h"
|
||||
#include "../../../../dependencies/RGBDAcquisition/opengl_acquisition_shared_library/opengl_depth_and_color_renderer/src/Library/MotionCaptureLoader/bvh_loader.h"
|
||||
#include "../../../../dependencies/RGBDAcquisition/opengl_acquisition_shared_library/opengl_depth_and_color_renderer/src/Library/MotionCaptureLoader/calculate/bvh_project.h"
|
||||
#include "../../../../dependencies/RGBDAcquisition/opengl_acquisition_shared_library/opengl_depth_and_color_renderer/src/Library/MotionCaptureLoader/calculate/bvh_transform.h"
|
||||
#include "../../../../dependencies/RGBDAcquisition/opengl_acquisition_shared_library/opengl_depth_and_color_renderer/src/Library/MotionCaptureLoader/ik/bvh_inverseKinematics.h"
|
||||
#else
|
||||
#warning "BVH code not included.."
|
||||
#endif // USE_BVH
|
||||
|
||||
|
||||
#define NORMAL "\033[0m"
|
||||
#define BLACK "\033[30m" /* Black */
|
||||
#define RED "\033[31m" /* Red */
|
||||
#define GREEN "\033[32m" /* Green */
|
||||
#define YELLOW "\033[33m" /* Yellow */
|
||||
|
||||
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
#if USE_BVH
|
||||
|
||||
float fX = 582.18394; //570.0
|
||||
float fY = 582.52915; //570.0
|
||||
unsigned int width = 1920;
|
||||
unsigned int height = 1080;
|
||||
|
||||
struct simpleRenderer renderer= {0};
|
||||
|
||||
simpleRendererDefaults(
|
||||
&renderer,
|
||||
width,//1920
|
||||
height,//1080
|
||||
fX, //570.0
|
||||
fY //570.0
|
||||
);
|
||||
|
||||
simpleRendererInitialize(&renderer);
|
||||
|
||||
const char * path=0;
|
||||
const char * label=0;
|
||||
char outputPathFull[2048]= {"./h36ToMnet.csv"};
|
||||
const char * outputPath=outputPathFull;
|
||||
|
||||
float offsetX=0.0,offsetY=0.0,offsetZ=0.0;
|
||||
|
||||
int flipX=0;
|
||||
int flipY=1;
|
||||
|
||||
for (int i=0; i<argc; i++)
|
||||
{
|
||||
if (strcmp(argv[i],"--from")==0)
|
||||
{
|
||||
path = argv[i+1];
|
||||
}
|
||||
else if (strcmp(argv[i],"--to")==0)
|
||||
{
|
||||
outputPath = argv[i+1];
|
||||
}
|
||||
else if (strcmp(argv[i],"--offset")==0)
|
||||
{
|
||||
offsetX=atof(argv[i+1]);
|
||||
offsetY=atof(argv[i+2]);
|
||||
offsetZ=atof(argv[i+3]);
|
||||
}
|
||||
else if (strcmp(argv[i],"--flipX")==0)
|
||||
{
|
||||
offsetX=atof(argv[i+1]);
|
||||
offsetY=atof(argv[i+2]);
|
||||
offsetZ=atof(argv[i+3]);
|
||||
}
|
||||
}
|
||||
|
||||
std::vector<std::vector<float> > result;
|
||||
std::vector<float> points2DOfASpecificFrame;
|
||||
|
||||
struct CSVFileContext csv= {0};
|
||||
struct CSVFloatFileLine csvLine= {0};
|
||||
if ( openCSVFile(&csv,path) )
|
||||
{
|
||||
parseCSVHeader(&csv);
|
||||
while (parseNextCSVFloatLine(&csv,&csvLine))
|
||||
{
|
||||
points2DOfASpecificFrame.clear();
|
||||
|
||||
float pos3D[4]= {0};
|
||||
//pos3D[3]=1.0;
|
||||
|
||||
float position2DX=0,position2DY=0,position2DW=0;
|
||||
|
||||
float center[4]= {0};
|
||||
float rotation[3]= {0};
|
||||
|
||||
float hipX = csvLine.field[9 * 3 + 0];
|
||||
float hipY = csvLine.field[9 * 3 + 1];
|
||||
float hipZ = csvLine.field[9 * 3 + 2];
|
||||
|
||||
|
||||
for (unsigned int pointID=0; pointID<csv.numberOfHeaderFields/3; pointID++)
|
||||
{
|
||||
//--------------------------------------
|
||||
pos3D[0]=(float) (csvLine.field[pointID * 3 + 0]) + offsetX;
|
||||
pos3D[1]=(float) (csvLine.field[pointID * 3 + 1]) + offsetY;
|
||||
pos3D[2]=(float) -1 * (csvLine.field[pointID * 3 + 2]) + offsetZ;
|
||||
//fprintf(stderr,"Projecting %0.2f,%0.2f,%0.2f : ",pos3D[0],pos3D[1],pos3D[2]);
|
||||
//--------------------------------------
|
||||
if (
|
||||
simpleRendererRender(
|
||||
&renderer,
|
||||
pos3D,
|
||||
center,
|
||||
rotation,
|
||||
ROTATION_ORDER_RPY,
|
||||
&position2DX,
|
||||
&position2DY,
|
||||
&position2DW
|
||||
)
|
||||
)
|
||||
{
|
||||
if (flipX)
|
||||
{
|
||||
position2DX = width - position2DX;
|
||||
}
|
||||
|
||||
if (flipY)
|
||||
{
|
||||
position2DY = height - position2DY;
|
||||
}
|
||||
|
||||
|
||||
if (position2DW>0.0)
|
||||
{
|
||||
//fprintf(stderr,"output is %0.2f,%0.2f \n",position2DX,position2DY);
|
||||
points2DOfASpecificFrame.push_back((float) position2DX);
|
||||
points2DOfASpecificFrame.push_back((float) position2DY);
|
||||
}
|
||||
else
|
||||
{
|
||||
//fprintf(stderr,"behind camera(%0.2f).. %0.2f,%0.2f \n",position2DW,position2DX,position2DY);
|
||||
points2DOfASpecificFrame.push_back(0.0);
|
||||
points2DOfASpecificFrame.push_back(0.0);
|
||||
}
|
||||
} else
|
||||
{
|
||||
points2DOfASpecificFrame.push_back(0.0);
|
||||
points2DOfASpecificFrame.push_back(0.0);
|
||||
}
|
||||
}
|
||||
|
||||
result.push_back(points2DOfASpecificFrame);
|
||||
}
|
||||
|
||||
|
||||
if (result.size()>0)
|
||||
{
|
||||
FILE * fp = fopen(outputPath,"w");
|
||||
if (fp!=0)
|
||||
{
|
||||
|
||||
fprintf(fp,"frameNumber,skeletonID,totalSkeletons");
|
||||
|
||||
for (unsigned int pointID=0; pointID<csv.numberOfHeaderFields/3; pointID++)
|
||||
{
|
||||
char * pointLabel = csv.field[pointID*3].str + 4;
|
||||
|
||||
//Translate H36M labels to MNET labels..
|
||||
if ( strcmp(pointLabel,"nose")==0 ) { fprintf(fp,",2DX_head,2DY_head,visible_head"); } else
|
||||
if ( strcmp(pointLabel,"rwrist")==0 ) { fprintf(fp,",2DX_rhand,2DY_rhand,visible_rhand"); } else
|
||||
if ( strcmp(pointLabel,"lwrist")==0 ) { fprintf(fp,",2DX_lhand,2DY_lhand,visible_lhand"); } else
|
||||
if ( strcmp(pointLabel,"midhip")==0 ) { fprintf(fp,",2DX_hip,2DY_hip,visible_hip"); } else
|
||||
//rankle/lankle instead..
|
||||
if ( strcmp(pointLabel,"rheel")==0 ) { fprintf(fp,",2DX_rfoot,2DY_rfoot,visible_rfoot"); } else
|
||||
if ( strcmp(pointLabel,"lheel")==0 ) { fprintf(fp,",2DX_lfoot,2DY_lfoot,visible_lfoot"); } else
|
||||
if ( strcmp(pointLabel,"reye")==0 ) { fprintf(fp,",2DX_endsite_eye.r,2DY_endsite_eye.r,visible_endsite_eye.r"); } else
|
||||
if ( strcmp(pointLabel,"leye")==0 ) { fprintf(fp,",2DX_endsite_eye.l,2DY_endsite_eye.l,visible_endsite_eye.l"); } else
|
||||
if ( strcmp(pointLabel,"rbigtoe")==0 ) { fprintf(fp,",2DX_endsite_toe1-2.r,2DY_endsite_toe1-2.r,visible_endsite_toe1-2.r"); } else
|
||||
if ( strcmp(pointLabel,"lbigtoe")==0 ) { fprintf(fp,",2DX_endsite_toe1-2.l,2DY_endsite_toe1-2.l,visible_endsite_toe1-2.l"); } else
|
||||
if ( strcmp(pointLabel,"rsmalltoe")==0 ) { fprintf(fp,",2DX_endsite_toe5-3.r,2DY_endsite_toe5-3.r,visible_endsite_toe5-3.r"); } else
|
||||
if ( strcmp(pointLabel,"lsmalltoe")==0 ) { fprintf(fp,",2DX_endsite_toe5-3.l,2DY_endsite_toe5-3.l,visible_endsite_toe5-3.l"); } else
|
||||
{ fprintf(fp,",2DX_%s,2DY_%s,visible_%s",pointLabel,pointLabel,pointLabel); }
|
||||
|
||||
|
||||
}
|
||||
fprintf(fp,"\n");
|
||||
|
||||
for (unsigned int frameID=0; frameID<result.size(); frameID++)
|
||||
{
|
||||
|
||||
fprintf(fp,"%u,0,0",frameID);
|
||||
for (unsigned int pointID=0; pointID<result[frameID].size(); pointID++)
|
||||
{
|
||||
float normalizedPoint = result[frameID][pointID];
|
||||
|
||||
unsigned int element = pointID%2;
|
||||
|
||||
if (element==0) { normalizedPoint/= width; fprintf(fp,",%f",normalizedPoint); } else
|
||||
{ normalizedPoint/= height; fprintf(fp,",%f,1",normalizedPoint); }
|
||||
|
||||
}
|
||||
fprintf(fp,"\n");
|
||||
}
|
||||
|
||||
|
||||
fclose(fp);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
closeCSVFile(&csv);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#else
|
||||
fprintf(stderr,"This utility is only available if you compile the BVH code in..\n");
|
||||
#endif
|
||||
return 0;
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
project( convertOpenPoseJSONToCSV )
|
||||
cmake_minimum_required(VERSION 3.5)
|
||||
|
||||
|
||||
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
|
||||
|
||||
include_directories(${TENSORFLOW_INCLUDE_ROOT})
|
||||
|
||||
|
||||
#-----------------------------------------------
|
||||
# This is the converter utilities..
|
||||
#-----------------------------------------------
|
||||
add_executable(
|
||||
convertOpenPoseJSONToCSV
|
||||
convertOpenPoseJSONToCSV.cpp
|
||||
../../MocapNETLib2/tools.cpp
|
||||
../../MocapNETLib2/IO/jsonRead.cpp
|
||||
../../MocapNETLib2/IO/jsonMocapNETHelpers.cpp
|
||||
../../../../dependencies/InputParser/InputParser_C.cpp
|
||||
${BVH_SOURCE}
|
||||
${OPENGL_SOURCE}
|
||||
../../MocapNETLib2/IO/bvh.cpp
|
||||
../../MocapNETLib2/IO/csvWrite.cpp
|
||||
)
|
||||
|
||||
|
||||
#-----------------------------------------------
|
||||
|
||||
target_link_libraries(convertOpenPoseJSONToCSV rt dl m pthread MocapNETLib2)
|
||||
set_target_properties(convertOpenPoseJSONToCSV PROPERTIES DEBUG_POSTFIX "D")
|
||||
set_target_properties(convertOpenPoseJSONToCSV PROPERTIES
|
||||
ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}"
|
||||
LIBRARY_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}"
|
||||
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}"
|
||||
)
|
||||
|
||||
|
||||
+284
@@ -0,0 +1,284 @@
|
||||
/*
|
||||
* Export utility from OpenPose BODY25 + Hands + Face JSON format to a trivially parseable CSV file
|
||||
* Check https://github.com/CMU-Perceptual-Computing-Lab/openpose/blob/master/doc/output.md on more information on OpenPose JSON files..
|
||||
*
|
||||
* Sample call : ./convertOpenPoseJSONToCSV --from frames/GOPR3223.MP4-data/ --label colorFrame_0_ -o .
|
||||
*
|
||||
* This utility converts OpenPose json output to a CSV file that can be easily parsed and used as MocapNET input
|
||||
*
|
||||
* My workflow when working with OpenPose is first dumping any video file that I want to process (let's call it video.mp4) to images using ffmpeg.
|
||||
* This ensures a well defined framerate and a well defined 1:1 correspondence of color/json/and my output frames regardless of video container.
|
||||
*
|
||||
* I typically use this script -> https://github.com/AmmarkoV/RGBDAcquisition/blob/master/grabber/frames/dump_video.sh to dump the video to files
|
||||
* but it is equivalent to running :
|
||||
* mkdir videoFiles && ffmpeg -i video.mp4 -r 30 -q:v 1 videoFiles/colorFrame_0_%05d.jpg && cp videoFiles/colorFrame_0_00001.jpg videoFiles/colorFrame_0_00000.jpg
|
||||
*
|
||||
* Having a well defined serialized version of the dataset ( with serial numbers that start from 0 instead of 1 ) we can be sure on what frame each openpose output will correspond
|
||||
*
|
||||
* Running :
|
||||
* openpose.bin -number_people_max 1 --hand --face --write_json videoFiles/ -image_dir videoFiles/
|
||||
*
|
||||
* The directory will be populated with colorFrame_0_xxxxx_keypoints.json files
|
||||
* each of the colorFrame_0_xxxxx_keypoints.json will correspond to a colorFrame_0_xxxxx.jpg
|
||||
*
|
||||
* This can then be converted to a CSV file using :
|
||||
* ./convertOpenPoseJSONToCSV --from videoFiles/
|
||||
*
|
||||
*
|
||||
* If you want to use a custom json labeling scheme and not rely on images as OpenPose input you will need to :
|
||||
*
|
||||
* 1) provide the proper image resolution ( since the JSON files alone do not have this information )
|
||||
* The image resolution is *CRUCIAL* for the software to correctly normalize input 2D points and respect the training aspect ratio
|
||||
* if you don't supply the correct size a Full-HD(1920x1080p) input will be assumed. If this does not correspond to the original video resolution output will be adversly affected
|
||||
* You can do this with the --size WIDTH HEIGHT parameter
|
||||
*
|
||||
* 2) Depending on your datasets and filenames supply the proper number of characters for a valid serial frame number length
|
||||
* i.e. frame_xxxxx_keypoints.json needs --seriallength 5
|
||||
* frame_xxxxxxx_keypoints.json needs --seriallength 7
|
||||
* etc
|
||||
*
|
||||
* 3) Depending on your datasets and filenames supply the correct label for the dataset
|
||||
* i.e. datasetNameA_xxxxx_keypoints.json needs --label datasetNameA
|
||||
* AMoreComplexLabel_IsTHIS_0_xxxxxxx_keypoints.json needs --label AMoreComplexLabel_IsTHIS_0
|
||||
* etc
|
||||
*
|
||||
* 4) Depending on the starting frame and ending frame of your dataset supply the --startAt X , --maxFrames X
|
||||
* i.e dataset_00001_keypoints.json - dataset_00101_keypoints.json should need --startAt 1 --maxFrames 102
|
||||
* i.e dataset_00000_keypoints.json - dataset_0099_keypoints.json should need --startAt 0 --maxFrames 100
|
||||
*
|
||||
* */
|
||||
|
||||
|
||||
#include <iostream>
|
||||
#include <vector>
|
||||
#include <math.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "../../../MocapNET2/MocapNETLib2/tools.hpp"
|
||||
#include "../../../MocapNET2/MocapNETLib2/mocapnet2.hpp"
|
||||
#include "../../../MocapNET2/MocapNETLib2/IO/commonSkeleton.hpp"
|
||||
#include "../../../MocapNET2/MocapNETLib2/IO/jsonRead.hpp"
|
||||
#include "../../../MocapNET2/MocapNETLib2/IO/csvRead.hpp"
|
||||
#include "../../../MocapNET2/MocapNETLib2/IO/csvWrite.hpp"
|
||||
|
||||
#define NORMAL "\033[0m"
|
||||
#define BLACK "\033[30m" /* Black */
|
||||
#define RED "\033[31m" /* Red */
|
||||
#define GREEN "\033[32m" /* Green */
|
||||
#define YELLOW "\033[33m" /* Yellow */
|
||||
|
||||
|
||||
int findFirstJSONFileInDirectory(const char * path,const char * formatString, const char * label, unsigned int * frameIDOutput)
|
||||
{
|
||||
char filePathOfJSONFile[1025]={0};
|
||||
const int maximumFilesToSearchFor=1000;
|
||||
unsigned int frameID=0;
|
||||
int found=0;
|
||||
while (!found)
|
||||
{
|
||||
snprintf(filePathOfJSONFile,1024,formatString,path,label,frameID);
|
||||
|
||||
if( fileExists(filePathOfJSONFile) )
|
||||
{
|
||||
*frameIDOutput=frameID;
|
||||
return 1;
|
||||
}
|
||||
|
||||
++frameID;
|
||||
if (frameID==maximumFilesToSearchFor)
|
||||
{
|
||||
fprintf(stderr,"Stopping search after %u checks ..\n",maximumFilesToSearchFor);
|
||||
break;
|
||||
//return 0;
|
||||
}
|
||||
}
|
||||
fprintf(stderr,"findFirstJSONFileInDirectory: failed to find any JSON files.. :(\n");
|
||||
fprintf(stderr,"Path : %s \n",path);
|
||||
fprintf(stderr,"Format : %s \n",formatString);
|
||||
fprintf(stderr,"Label : %s \n",label);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
unsigned int respectTrainingAspectRatio = 1;
|
||||
unsigned int width=1920 , height=1080 , frameLimit=100000 , processed = 0 , serialLength = 5 ,forcedSize=0;
|
||||
const char * path=0;
|
||||
const char * label=0;
|
||||
char outputPathFull[2048]={0};
|
||||
const char * outputPath=0;
|
||||
float version=1.4;
|
||||
int noLabel=0;
|
||||
float acceptableThreshold = 0.5;
|
||||
|
||||
for (int i=0; i<argc; i++)
|
||||
{
|
||||
if (strcmp(argv[i],"--maxFrames")==0)
|
||||
{
|
||||
frameLimit=atoi(argv[i+1]);
|
||||
}
|
||||
else if (strcmp(argv[i],"--from")==0)
|
||||
{
|
||||
path = argv[i+1];
|
||||
}
|
||||
else if (strcmp(argv[i],"--threshold")==0)
|
||||
{
|
||||
acceptableThreshold = atof(argv[i+1]);
|
||||
}
|
||||
else if (strcmp(argv[i],"-i")==0)
|
||||
{
|
||||
path = argv[i+1];
|
||||
}
|
||||
else if (strcmp(argv[i],"--label")==0)
|
||||
{
|
||||
label = argv[i+1];
|
||||
}
|
||||
else if (strcmp(argv[i],"--out")==0)
|
||||
{
|
||||
outputPath = argv[i+1];
|
||||
}
|
||||
else if (strcmp(argv[i],"--ignoreTrainingAspectRatio")==0)
|
||||
{
|
||||
fprintf(stderr,RED "Training aspect ratio is going to be ignored during training..!\n" NORMAL);
|
||||
fprintf(stderr,RED "this is not a good idea unless you really know what you are doing\n" NORMAL);
|
||||
respectTrainingAspectRatio = 0;
|
||||
}
|
||||
else if (strcmp(argv[i],"-o")==0)
|
||||
{
|
||||
outputPath = argv[i+1];
|
||||
}
|
||||
else if (strcmp(argv[i],"--to")==0)
|
||||
{
|
||||
outputPath = argv[i+1];
|
||||
}
|
||||
else if (strcmp(argv[i],"-v")==0)
|
||||
{
|
||||
version = atof(argv[i+1]);
|
||||
}
|
||||
else if (strcmp(argv[i],"--seriallength")==0)
|
||||
{
|
||||
serialLength = atoi(argv[i+1]);
|
||||
}
|
||||
else if (strcmp(argv[i],"--size")==0)
|
||||
{
|
||||
width = atoi(argv[i+1]);
|
||||
height = atoi(argv[i+2]);
|
||||
forcedSize=1;
|
||||
}
|
||||
else if (strcmp(argv[i],"--nolabel")==0)
|
||||
{
|
||||
//New datasets dont have a label in the filename..!
|
||||
noLabel =1 ;
|
||||
}
|
||||
}
|
||||
|
||||
if (path==0)
|
||||
{
|
||||
path="./";
|
||||
}
|
||||
|
||||
if (label==0)
|
||||
{
|
||||
label="colorFrame_0_";
|
||||
}
|
||||
if (noLabel)
|
||||
{
|
||||
label="";
|
||||
}
|
||||
|
||||
if (outputPath==0)
|
||||
{
|
||||
snprintf(outputPathFull,2048,"%s/2dJoints_v%0.1f.csv",path,version);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (strstr(outputPath,".csv")!=0)
|
||||
{
|
||||
fprintf(stderr,"Output path is actually a csv file so treating it as one..\n");
|
||||
snprintf(outputPathFull,2048,"%s",outputPath);
|
||||
} else
|
||||
{
|
||||
snprintf(outputPathFull,2048,"%s/2dJoints_v%0.1f.csv",outputPath,version);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
char formatString[256]= {0};
|
||||
char filePathOfJSONFile[2048]= {0};
|
||||
|
||||
snprintf(formatString,256,"%%s/%%s%%0%uu.jpg",serialLength);
|
||||
snprintf(filePathOfJSONFile,2048,formatString,path,label,1/*Frame ID*/);
|
||||
snprintf(formatString,256,"%%s/%%s%%0%uu_keypoints.json",serialLength);
|
||||
|
||||
if (!forcedSize)
|
||||
{
|
||||
if ( getImageWidthHeight(filePathOfJSONFile,&width,&height) )
|
||||
{
|
||||
fprintf(stderr,"Image dimensions changed from default to %ux%u",width,height);
|
||||
}
|
||||
else
|
||||
{
|
||||
fprintf(stderr,"Assuming default image dimensions %ux%u , you can change this using --size x y\n",width,height);
|
||||
}
|
||||
} else
|
||||
{
|
||||
fprintf(stderr,"Forcing size due to --size %u %u commandline parameter\n",width,height);
|
||||
}
|
||||
|
||||
|
||||
float totalTime=0.0;
|
||||
unsigned int totalSamples=0;
|
||||
|
||||
struct skeletonStructure skeleton;
|
||||
memset(&skeleton,0,sizeof(struct skeletonStructure));
|
||||
|
||||
unsigned int frameID=1;
|
||||
|
||||
fprintf(stderr,"Threshold is set to %0.2f\n",acceptableThreshold);
|
||||
fprintf(stderr,"Processing : \n");
|
||||
|
||||
if ( findFirstJSONFileInDirectory(path, formatString,label,&frameID) )
|
||||
{
|
||||
frameLimit+=frameID;
|
||||
fprintf(stderr,"First frame is %u, last will be %u \n",frameID,frameLimit);
|
||||
} else
|
||||
{
|
||||
fprintf(stderr,RED "Failed to find a JSON file..!\n " NORMAL);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
while (frameID<frameLimit)
|
||||
{
|
||||
snprintf(filePathOfJSONFile,1024,formatString,path,label,frameID);
|
||||
fprintf(stderr,"%s (%ux%u)\n",filePathOfJSONFile,width,height);
|
||||
|
||||
if (parseJsonCOCOSkeleton(filePathOfJSONFile,&skeleton,acceptableThreshold,processed))
|
||||
{
|
||||
if (processed==0)
|
||||
{
|
||||
writeOpenPoseCSVHeaderFromSkeleton(outputPathFull,&skeleton,width,height);
|
||||
}
|
||||
|
||||
if (skeleton.leftHand.isPopulated) { fprintf(stderr,GREEN "Left Hand " NORMAL); }
|
||||
if (skeleton.rightHand.isPopulated) { fprintf(stderr,GREEN "Right Hand " NORMAL); }
|
||||
if (skeleton.body.isPopulated) { fprintf(stderr,GREEN "Body " NORMAL); }
|
||||
if (skeleton.head.isPopulated) { fprintf(stderr,GREEN "Head " NORMAL); }
|
||||
|
||||
writeOpenPoseCSVBodyFromSkeleton(outputPathFull,&skeleton,respectTrainingAspectRatio,width,height);
|
||||
++processed;
|
||||
}
|
||||
else
|
||||
{
|
||||
fprintf(stderr,"Done processing %u frames..\n",frameID);
|
||||
fprintf(stderr,"Output has been stored at %s \n",outputPathFull);
|
||||
break;
|
||||
}
|
||||
|
||||
++frameID;
|
||||
}
|
||||
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
project( convertCSV3DToMocapNETInput )
|
||||
cmake_minimum_required(VERSION 3.5)
|
||||
|
||||
|
||||
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
|
||||
|
||||
include_directories(${TENSORFLOW_INCLUDE_ROOT})
|
||||
|
||||
#-----------------------------------------------
|
||||
# This is the converter utilities..
|
||||
#-----------------------------------------------
|
||||
add_executable(
|
||||
convertCSV3DToMocapNETInput
|
||||
convertCSV3DToMocapNETInput.cpp
|
||||
../../MocapNETLib2/tools.cpp
|
||||
../../MocapNETLib2/IO/jsonRead.cpp
|
||||
../../MocapNETLib2/IO/jsonMocapNETHelpers.cpp
|
||||
../../../../dependencies/InputParser/InputParser_C.cpp
|
||||
${BVH_SOURCE}
|
||||
${OPENGL_SOURCE}
|
||||
../../MocapNETLib2/IO/bvh.cpp
|
||||
../../MocapNETLib2/IO/conversions.cpp
|
||||
../../MocapNETLib2/IO/csvRead.cpp
|
||||
../../MocapNETLib2/IO/csvWrite.cpp
|
||||
)
|
||||
|
||||
#-----------------------------------------------
|
||||
|
||||
target_link_libraries(convertCSV3DToMocapNETInput rt dl m pthread MocapNETLib2)
|
||||
set_target_properties(convertCSV3DToMocapNETInput PROPERTIES DEBUG_POSTFIX "D")
|
||||
set_target_properties(convertCSV3DToMocapNETInput PROPERTIES
|
||||
ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}"
|
||||
LIBRARY_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}"
|
||||
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}"
|
||||
)
|
||||
|
||||
+322
@@ -0,0 +1,322 @@
|
||||
/*
|
||||
* Export utility from OpenPose BODY 25 JSON format to a more regular CSV file
|
||||
* Sample call : ./convertBody25JSONToCSV --from frames/GOPR3223.MP4-data/ --label colorFrame_0_ -o .
|
||||
* */
|
||||
|
||||
#include <iostream>
|
||||
#include <vector>
|
||||
#include <math.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "../../../MocapNET2/MocapNETLib2/tools.hpp"
|
||||
#include "../../../MocapNET2/MocapNETLib2/mocapnet2.hpp"
|
||||
#include "../../../MocapNET2/MocapNETLib2/IO/commonSkeleton.hpp"
|
||||
#include "../../../MocapNET2/MocapNETLib2/IO/jsonRead.hpp"
|
||||
#include "../../../MocapNET2/MocapNETLib2/IO/csvRead.hpp"
|
||||
#include "../../../MocapNET2/MocapNETLib2/IO/csvWrite.hpp"
|
||||
|
||||
|
||||
#if USE_BVH
|
||||
#include "../../../../dependencies/RGBDAcquisition/tools/AmMatrix/matrix4x4Tools.h"
|
||||
#include "../../../../dependencies/RGBDAcquisition/opengl_acquisition_shared_library/opengl_depth_and_color_renderer/src/Library/MotionCaptureLoader/bvh_loader.h"
|
||||
#include "../../../../dependencies/RGBDAcquisition/opengl_acquisition_shared_library/opengl_depth_and_color_renderer/src/Library/MotionCaptureLoader/calculate/bvh_project.h"
|
||||
#include "../../../../dependencies/RGBDAcquisition/opengl_acquisition_shared_library/opengl_depth_and_color_renderer/src/Library/MotionCaptureLoader/calculate/bvh_transform.h"
|
||||
#include "../../../../dependencies/RGBDAcquisition/opengl_acquisition_shared_library/opengl_depth_and_color_renderer/src/Library/MotionCaptureLoader/ik/bvh_inverseKinematics.h"
|
||||
#else
|
||||
#warning "BVH code not included.."
|
||||
#endif // USE_BVH
|
||||
|
||||
|
||||
#define NORMAL "\033[0m"
|
||||
#define BLACK "\033[30m" /* Black */
|
||||
#define RED "\033[31m" /* Red */
|
||||
#define GREEN "\033[32m" /* Green */
|
||||
#define YELLOW "\033[33m" /* Yellow */
|
||||
|
||||
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
#if USE_BVH
|
||||
|
||||
float fX = 582.18394; //570.0
|
||||
float fY = 582.52915; //570.0
|
||||
unsigned int width = 1920;
|
||||
unsigned int height = 1080;
|
||||
|
||||
struct simpleRenderer renderer= {0};
|
||||
|
||||
simpleRendererDefaults(
|
||||
&renderer,
|
||||
width,//1920
|
||||
height,//1080
|
||||
fX, //570.0
|
||||
fY //570.0
|
||||
);
|
||||
|
||||
simpleRendererInitialize(&renderer);
|
||||
|
||||
const char * path=0;
|
||||
const char * label=0;
|
||||
char outputPathFull[2048]= {"./handToMnet.csv"};
|
||||
const char * outputPath=outputPathFull;
|
||||
|
||||
float scale2DX=1.0,scale2DY=1.0;
|
||||
float offset2DX=0,offset2DY=0;
|
||||
|
||||
float scale3DX=1.0,scale3DY=1.0,scale3DZ=-1.0;
|
||||
float offset3DX=0.0,offset3DY=0.0,offset3DZ=0.0;
|
||||
|
||||
int flipX=0;
|
||||
int flipY=1;
|
||||
|
||||
unsigned int thereIsALineLimit=0;
|
||||
unsigned int maxLinesToProcess=0;
|
||||
|
||||
// ./convertCSV3DToMocapNETInput --from /home/ammar/Documents/Datasets/STB/test.csv --to /home/ammar/Documents/Datasets/STB/test2D.csv --meters --flipY --offset3D 0 0 -100
|
||||
|
||||
|
||||
int i=0;
|
||||
while (i<argc)
|
||||
{
|
||||
if (strcmp(argv[i],"--from")==0)
|
||||
{
|
||||
path = argv[i+1];
|
||||
i+=1;
|
||||
}
|
||||
else if (strcmp(argv[i],"--to")==0)
|
||||
{
|
||||
outputPath = argv[i+1];
|
||||
i+=1;
|
||||
}
|
||||
else if (strcmp(argv[i],"--maxFrames")==0)
|
||||
{
|
||||
thereIsALineLimit=1;
|
||||
maxLinesToProcess=atoi(argv[i+1]);
|
||||
i+=1;
|
||||
}
|
||||
else if (strcmp(argv[i],"--meters")==0)
|
||||
{
|
||||
scale3DX = 1000.0;
|
||||
scale3DY = 1000.0;
|
||||
scale3DZ = 1000.0;
|
||||
}
|
||||
else if (strcmp(argv[i],"--scale3D")==0)
|
||||
{
|
||||
scale3DX=atof(argv[i+1]);
|
||||
scale3DY=atof(argv[i+2]);
|
||||
scale3DZ=atof(argv[i+3]);
|
||||
i+=3;
|
||||
}
|
||||
else if (strcmp(argv[i],"--offset3D")==0)
|
||||
{
|
||||
offset3DX=atof(argv[i+1]);
|
||||
offset3DY=atof(argv[i+2]);
|
||||
offset3DZ=atof(argv[i+3]);
|
||||
i+=3;
|
||||
}
|
||||
else if (strcmp(argv[i],"--scale2D")==0)
|
||||
{
|
||||
scale2DX=atof(argv[i+1]);
|
||||
scale2DY=atof(argv[i+2]);
|
||||
i+=2;
|
||||
}
|
||||
else if (strcmp(argv[i],"--offset2D")==0)
|
||||
{
|
||||
offset2DX=atof(argv[i+1]);
|
||||
offset2DY=atof(argv[i+2]);
|
||||
i+=2;
|
||||
}
|
||||
else if (strcmp(argv[i],"--flipX")==0)
|
||||
{
|
||||
if (flipX)
|
||||
{
|
||||
flipX=0;
|
||||
}
|
||||
else
|
||||
{
|
||||
flipX=1;
|
||||
}
|
||||
}
|
||||
else if (strcmp(argv[i],"--flipY")==0)
|
||||
{
|
||||
if (flipY)
|
||||
{
|
||||
flipY=0;
|
||||
}
|
||||
else
|
||||
{
|
||||
flipY=1;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
fprintf(stderr,RED "Unknown parameter : %s \n" NORMAL,argv[i]);
|
||||
}
|
||||
++i;
|
||||
}
|
||||
|
||||
fprintf(stderr,"\n\n\n\nConversion from 3D CSV ground truth file configuration\n");
|
||||
fprintf(stderr,"_____________________________________________________________\n");
|
||||
fprintf(stderr,"3D input will have following modifiers : \n");
|
||||
fprintf(stderr," Scale | %0.2f | %0.2f | %0.2f \n",scale3DX,scale3DY,scale3DZ);
|
||||
fprintf(stderr," Offset | %0.2f | %0.2f | %0.2f \n",offset3DX,offset3DY,offset3DZ);
|
||||
|
||||
fprintf(stderr,"\nVirtual Camera : \n");
|
||||
fprintf(stderr," Width=%0.2f Height=%0.2f\n",renderer.width,renderer.height);
|
||||
fprintf(stderr," fX=%0.2f fY=%0.2f cX=%0.2f cY=%0.2f \n",renderer.fx,renderer.fy,renderer.cx,renderer.cy);
|
||||
|
||||
fprintf(stderr,"\n2D output will have following modifiers : \n");
|
||||
fprintf(stderr," Scale | %0.2f | %0.2f \n",scale2DX,scale2DY);
|
||||
fprintf(stderr," Offset | %0.2f | %0.2f \n",offset2DX,offset2DY);
|
||||
|
||||
fprintf(stderr,"\nFile I/O : \n");
|
||||
fprintf(stderr," 3D CSV ground truth file: `%s`\n",path);
|
||||
fprintf(stderr," 2D CSV output file: `%s`\n",outputPath);
|
||||
fprintf(stderr,"_____________________________________________________________\n");
|
||||
|
||||
|
||||
std::vector<std::vector<float> > result;
|
||||
std::vector<float> points2DOfASpecificFrame;
|
||||
|
||||
struct CSVFileContext csv= {0};
|
||||
struct CSVFloatFileLine csvLine= {0};
|
||||
unsigned int linesProcessed=0;
|
||||
|
||||
|
||||
if ( openCSVFile(&csv,path) )
|
||||
{
|
||||
parseCSVHeader(&csv);
|
||||
|
||||
fprintf(stderr,"%u columns of %u points to be outputted : ",csv.numberOfHeaderFields,(unsigned int) csv.numberOfHeaderFields/3);
|
||||
for (unsigned int pointID=0; pointID<csv.numberOfHeaderFields; pointID++)
|
||||
{
|
||||
if (pointID!=0)
|
||||
{
|
||||
fprintf(stderr,",");
|
||||
}
|
||||
|
||||
fprintf(stderr,"%s",csv.field[pointID].str);
|
||||
}
|
||||
fprintf(stderr,"\n_____________________________________________________________\n");
|
||||
|
||||
while ( (parseNextCSVFloatLine(&csv,&csvLine)) && ( (!thereIsALineLimit) || (linesProcessed+1<maxLinesToProcess) ) )
|
||||
{
|
||||
points2DOfASpecificFrame.clear();
|
||||
|
||||
float pos3D[4]= {0};
|
||||
float position2DX=0.0,position2DY=0.0,position2DW=0.0;
|
||||
float position2DOutputX=0.0,position2DOutputY=0.0;
|
||||
|
||||
float center[4]= {0};
|
||||
float rotation[3]= {0};
|
||||
|
||||
|
||||
for (unsigned int pointID=0; pointID<csv.numberOfHeaderFields/3; pointID++)
|
||||
{
|
||||
//--------------------------------------
|
||||
pos3D[0]=(float) (scale3DX*csvLine.field[pointID * 3 + 0]) + offset3DX;
|
||||
pos3D[1]=(float) (scale3DY*csvLine.field[pointID * 3 + 1]) + offset3DY;
|
||||
pos3D[2]=(float) (scale3DZ*csvLine.field[pointID * 3 + 2]) + offset3DZ;
|
||||
pos3D[3]=1.0;
|
||||
//fprintf(stderr,"Projecting %0.2f,%0.2f,%0.2f : ",pos3D[0],pos3D[1],pos3D[2]);
|
||||
//--------------------------------------
|
||||
if (
|
||||
simpleRendererRender(
|
||||
&renderer,
|
||||
pos3D,
|
||||
center,
|
||||
rotation,
|
||||
ROTATION_ORDER_RPY,
|
||||
&position2DX,
|
||||
&position2DY,
|
||||
&position2DW)
|
||||
)
|
||||
{
|
||||
if (flipX) { position2DX = width - position2DX; }
|
||||
if (flipY) { position2DY = height - position2DY; }
|
||||
|
||||
position2DOutputX=0.0;
|
||||
position2DOutputY=0.0;
|
||||
|
||||
if (position2DW>0.0)
|
||||
{
|
||||
//fprintf(stderr,"output is %0.2f,%0.2f \n",position2DX,position2DY);
|
||||
position2DOutputX = (scale2DX*position2DX) + offset2DX;
|
||||
position2DOutputY = (scale2DY*position2DY) + offset2DY;
|
||||
}
|
||||
else
|
||||
{
|
||||
//fprintf(stderr,"behind camera(%0.2f).. %0.2f,%0.2f \n",position2DW,position2DX,position2DY);
|
||||
}
|
||||
|
||||
//We normalize our 2D output..!
|
||||
position2DOutputX=(float) position2DOutputX/renderer.width;
|
||||
position2DOutputY=(float) position2DOutputY/renderer.height;
|
||||
|
||||
fprintf(stderr,"3D %0.2f,%0.2f,%0.2f => 2D %0.2f,%0.2f \n",pos3D[0],pos3D[1],pos3D[2],position2DOutputX,position2DOutputY);
|
||||
points2DOfASpecificFrame.push_back(position2DOutputX);
|
||||
points2DOfASpecificFrame.push_back(position2DOutputY);
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
points2DOfASpecificFrame.push_back(0.0);
|
||||
points2DOfASpecificFrame.push_back(0.0);
|
||||
}
|
||||
} //For every point in this CSV line
|
||||
|
||||
result.push_back(points2DOfASpecificFrame);
|
||||
++linesProcessed;
|
||||
}//While we there are more lines to process
|
||||
|
||||
|
||||
if (result.size()>0)
|
||||
{
|
||||
FILE * fp = fopen(outputPath,"w");
|
||||
if (fp!=0)
|
||||
{
|
||||
|
||||
fprintf(fp,"frameNumber,skeletonID,totalSkeletons");
|
||||
|
||||
for (unsigned int pointID=0; pointID<csv.numberOfHeaderFields/3; pointID++)
|
||||
{
|
||||
char * pointLabel = csv.field[pointID*3].str + 4; //This is the fastest way to get rid of the `3D*_` part of the stream
|
||||
|
||||
//Translate H36M labels to MNET labels..
|
||||
if ( strcmp(pointLabel,"nose")==0 ) { fprintf(fp,",2DX_head,2DY_head,visible_head"); } else
|
||||
if ( strcmp(pointLabel,"rwrist")==0 ) { fprintf(fp,",2DX_rhand,2DY_rhand,visible_rhand"); } else
|
||||
if ( strcmp(pointLabel,"lwrist")==0 ) { fprintf(fp,",2DX_lhand,2DY_lhand,visible_lhand"); } else
|
||||
if ( strcmp(pointLabel,"midhip")==0 ) { fprintf(fp,",2DX_hip,2DY_hip,visible_hip"); } else
|
||||
if ( strcmp(pointLabel,"rheel")==0 ) { fprintf(fp,",2DX_rfoot,2DY_rfoot,visible_rfoot"); } else //rankle/lankle instead..
|
||||
if ( strcmp(pointLabel,"lheel")==0 ) { fprintf(fp,",2DX_lfoot,2DY_lfoot,visible_lfoot"); } else
|
||||
if ( strcmp(pointLabel,"reye")==0 ) { fprintf(fp,",2DX_endsite_eye.r,2DY_endsite_eye.r,visible_endsite_eye.r"); } else
|
||||
if ( strcmp(pointLabel,"leye")==0 ) { fprintf(fp,",2DX_endsite_eye.l,2DY_endsite_eye.l,visible_endsite_eye.l"); } else
|
||||
if ( strcmp(pointLabel,"rbigtoe")==0 ) { fprintf(fp,",2DX_endsite_toe1-2.r,2DY_endsite_toe1-2.r,visible_endsite_toe1-2.r"); } else
|
||||
if ( strcmp(pointLabel,"lbigtoe")==0 ) { fprintf(fp,",2DX_endsite_toe1-2.l,2DY_endsite_toe1-2.l,visible_endsite_toe1-2.l"); } else
|
||||
if ( strcmp(pointLabel,"rsmalltoe")==0 ) { fprintf(fp,",2DX_endsite_toe5-3.r,2DY_endsite_toe5-3.r,visible_endsite_toe5-3.r"); } else
|
||||
if ( strcmp(pointLabel,"lsmalltoe")==0 ) { fprintf(fp,",2DX_endsite_toe5-3.l,2DY_endsite_toe5-3.l,visible_endsite_toe5-3.l"); } else
|
||||
{ fprintf(fp,",2DX_%s,2DY_%s,visible_%s",pointLabel,pointLabel,pointLabel); }
|
||||
}
|
||||
fprintf(fp,"\n");
|
||||
|
||||
for (unsigned int frameID=0; frameID<result.size(); frameID++)
|
||||
{
|
||||
fprintf(fp,"%u,0,0",frameID);
|
||||
for (unsigned int pointID=0; pointID<result[frameID].size(); pointID++)
|
||||
{
|
||||
if ( pointID%2==0) { fprintf(fp,",%f",result[frameID][pointID]); } else
|
||||
{ fprintf(fp,",%f,1",result[frameID][pointID]); }
|
||||
}
|
||||
fprintf(fp,"\n");
|
||||
}
|
||||
fclose(fp);
|
||||
}
|
||||
}
|
||||
closeCSVFile(&csv);
|
||||
} //CSV file can be successfully opened
|
||||
#else
|
||||
fprintf(stderr,"This utility is only available if you compile the BVH code in..\n");
|
||||
#endif
|
||||
return 0;
|
||||
}
|
||||
@@ -0,0 +1,276 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
import numpy as np
|
||||
import gc
|
||||
import os
|
||||
import sys
|
||||
import csv
|
||||
import time
|
||||
import array
|
||||
|
||||
import matplotlib
|
||||
import matplotlib.pyplot as plt
|
||||
import matplotlib.animation as animation
|
||||
from mpl_toolkits.mplot3d import axes3d, Axes3D
|
||||
|
||||
width=1920.0
|
||||
height=1080.0
|
||||
|
||||
|
||||
class bcolors:
|
||||
HEADER = '\033[95m'
|
||||
OKBLUE = '\033[94m'
|
||||
OKGREEN = '\033[92m'
|
||||
WARNING = '\033[93m'
|
||||
FAIL = '\033[91m'
|
||||
ENDC = '\033[0m'
|
||||
BOLD = '\033[1m'
|
||||
UNDERLINE = '\033[4m'
|
||||
|
||||
def pointListReturnXYListForScatterPlot(A):
|
||||
numberOfPoints=A.shape[0]
|
||||
xs=list()
|
||||
ys=list()
|
||||
frameNumber=A[0]
|
||||
skeletonID=A[1]
|
||||
totalSkeletons=A[2]
|
||||
for i in range(3,int(numberOfPoints/3)):
|
||||
x=width*float(A[i*3+0])
|
||||
y=height*float(A[i*3+1])
|
||||
visibility=int(A[i*3+2])
|
||||
if (visibility==1):
|
||||
xs.append(x)
|
||||
ys.append(y)
|
||||
print('Point(',x,',',y,')')
|
||||
return xs,ys
|
||||
|
||||
def checkIfFileExists(filename):
|
||||
return os.path.isfile(filename)
|
||||
|
||||
def convert_bytes(num):
|
||||
"""
|
||||
this function will convert bytes to MB.... GB... etc
|
||||
"""
|
||||
step_unit = 1000.0 #1024 bad the size
|
||||
|
||||
for x in ['bytes', 'KB', 'MB', 'GB', 'TB']:
|
||||
if num < step_unit:
|
||||
return "%3.1f %s" % (num, x)
|
||||
num /= step_unit
|
||||
|
||||
def getNumberOfLines(filename):
|
||||
print("Counting number of lines in file ",filename)
|
||||
with open(filename) as f:
|
||||
return sum(1 for line in f)
|
||||
|
||||
#---------------------------------------------------------------------------------------------------------------------------------------------
|
||||
#---------------------------------------------------------------------------------------------------------------------------------------------
|
||||
#---------------------------------------------------------------------------------------------------------------------------------------------
|
||||
def readCSVFile(filename,memPercentage,csvDelimiter,useHalfFloats,groupOutput):
|
||||
print("CSV file :",filename,"..\n")
|
||||
|
||||
if (not checkIfFileExists(filename)):
|
||||
print( bcolors.WARNING + "Input file "+filename+" does not exist, cannot read ground truth.." + bcolors.ENDC)
|
||||
print("Current Directory was "+os.getcwd())
|
||||
sys.exit(0)
|
||||
start = time.time()
|
||||
|
||||
dtypeSelected=np.dtype(np.float32)
|
||||
dtypeSelectedByteSize=int(dtypeSelected.itemsize)
|
||||
if (useHalfFloats):
|
||||
dtypeSelected=np.dtype(np.float16)
|
||||
dtypeSelectedByteSize=int(dtypeSelected.itemsize)
|
||||
|
||||
progress=0.0
|
||||
sampleNumber=0
|
||||
receivedHeader=0
|
||||
inputNumberOfColumns=0
|
||||
|
||||
inputLabels=list()
|
||||
|
||||
#-------------------------------------------------------------------------------------------------
|
||||
numberOfSamplesInput=getNumberOfLines(filename)-2
|
||||
print(" Input file has ",numberOfSamplesInput," training samples\n")
|
||||
#-------------------------------------------------------------------------------------------------
|
||||
|
||||
|
||||
numberOfSamples = numberOfSamplesInput
|
||||
numberOfSamplesLimit=int(numberOfSamples*memPercentage)
|
||||
#-------------------------------------------------------------------------------------------------
|
||||
if (memPercentage==0.0):
|
||||
print("readGroundTruthFile was asked to occupy 0 memory so this probably means we just want one record")
|
||||
numberOfSamplesLimit=2
|
||||
if (memPercentage>1.0):
|
||||
print("Memory Limit will be interpreted as a raw value..")
|
||||
numberOfSamplesLimit=int(memPercentage)
|
||||
#-------------------------------------------------------------------------------------------------
|
||||
|
||||
|
||||
thisInput = array.array('f')
|
||||
#---------------------------------
|
||||
|
||||
fi = open(filename, "r")
|
||||
readerIn = csv.reader( fi , delimiter=csvDelimiter, skipinitialspace=True)
|
||||
for rowIn in readerIn:
|
||||
#------------------------------------------------------
|
||||
if (not receivedHeader): #use header to get labels
|
||||
#------------------------------------------------------
|
||||
inputNumberOfColumns=len(rowIn)
|
||||
|
||||
#Make sure CSV files that end with delimiter are correctly handled..
|
||||
if (inputNumberOfColumns>0):
|
||||
if (rowIn[inputNumberOfColumns-1]==''):
|
||||
inputNumberOfColumns=inputNumberOfColumns-1
|
||||
#-----------------------------------------------------
|
||||
inputLabels = list(rowIn[i] for i in range(0,inputNumberOfColumns) )
|
||||
print("Number of Input elements : ",len(inputLabels))
|
||||
#------------------------------------------------------
|
||||
|
||||
if (memPercentage==0):
|
||||
print("Will only return labels\n")
|
||||
return {'labels':inputLabels};
|
||||
|
||||
|
||||
#i=0
|
||||
#print("class Input(Enum):")
|
||||
#for label in inputLabels:
|
||||
# print(" ",label," = ",i," #",int(i/3))
|
||||
# print(" ",label,"=",int(i/3))
|
||||
# i=i+1
|
||||
|
||||
#---------------------------------
|
||||
# Allocate Lists
|
||||
#---------------------------------
|
||||
for i in range(inputNumberOfColumns):
|
||||
thisInput.append(0.0)
|
||||
#---------------------------------
|
||||
|
||||
|
||||
#---------------------------------
|
||||
# Allocate Numpy Arrays
|
||||
#---------------------------------
|
||||
inputSize=0
|
||||
startCompressed=0
|
||||
|
||||
inputSize=inputSize+inputNumberOfColumns
|
||||
startCompressed=inputNumberOfColumns
|
||||
|
||||
npInputBytesize=0+numberOfSamplesLimit * inputSize * dtypeSelectedByteSize
|
||||
print(" Input file on disk has a shape of [",numberOfSamples,",",inputSize,"]")
|
||||
print(" Input we will read has a shape of [",numberOfSamplesLimit,",",inputSize,"]")
|
||||
print(" Input will occupy ",convert_bytes(npInputBytesize)," of RAM\n")
|
||||
npInput = np.full([numberOfSamplesLimit,inputSize],fill_value=0,dtype=dtypeSelected,order='C')
|
||||
#----------------------------------------------------------------------------------------------------------
|
||||
receivedHeader=1
|
||||
#sys.exit(0)
|
||||
else:
|
||||
#-------------------------------------------
|
||||
# First convert our string INPUT to floats
|
||||
#-------------------------------------------
|
||||
for i in range(inputNumberOfColumns):
|
||||
thisInput[i]=float(rowIn[i])
|
||||
#-------------------------------------------
|
||||
for num in range(0,inputNumberOfColumns):
|
||||
npInput[sampleNumber,num]=float(thisInput[num]);
|
||||
#-------------------------------------------
|
||||
sampleNumber=sampleNumber+1
|
||||
|
||||
if (numberOfSamples>0):
|
||||
progress=sampleNumber/numberOfSamplesLimit
|
||||
|
||||
if (sampleNumber%1000==0) :
|
||||
progressString = "%0.2f"%float(100*progress)
|
||||
print("\rReading from disk (",sampleNumber,") - ",progressString," % \r", end="", flush=True)
|
||||
|
||||
if (numberOfSamplesLimit<=sampleNumber):
|
||||
print("\rStopping reading file to obey memory limit given by parameter --mem ",memPercentage,"\n")
|
||||
break
|
||||
#-------------------------------------------
|
||||
fi.close()
|
||||
del readerIn
|
||||
gc.collect()
|
||||
|
||||
|
||||
print("\n read, Samples: ",sampleNumber,", was expecting ",numberOfSamples," samples\n")
|
||||
print(npInput.shape)
|
||||
|
||||
totalNumberOfBytes=npInput.nbytes;
|
||||
totalNumberOfGigaBytes=totalNumberOfBytes/1073741824;
|
||||
print("Size Occupied by data = ",totalNumberOfGigaBytes," GB \n")
|
||||
|
||||
end = time.time()
|
||||
print("Time elapsed : ",(end-start)/60," mins")
|
||||
#---------------------------------------------------------------------
|
||||
|
||||
if (groupOutput==0):
|
||||
#New better dictionary
|
||||
output = dict()
|
||||
for i in range(0,len(inputLabels)):
|
||||
lowerCaseName = inputLabels[i].lower()
|
||||
#print("Joint ",lowerCaseName)
|
||||
output[lowerCaseName]=list()
|
||||
for frameID in range(0,len(npInput)):
|
||||
output[lowerCaseName].append(npInput[frameID][i])
|
||||
return output
|
||||
else:
|
||||
#This is the old dictionary way (better for tensorflow training)
|
||||
return {'label':inputLabels, 'body':npInput };
|
||||
|
||||
|
||||
|
||||
#---------------------------------------------------------------------------------------------------------------------------------------------
|
||||
#---------------------------------------------------------------------------------------------------------------------------------------------
|
||||
#---------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
|
||||
|
||||
drawPlot=1
|
||||
|
||||
ground=readCSVFile("test2D.csv",1.0,',',0,1)
|
||||
|
||||
|
||||
if (drawPlot):
|
||||
print("Using matplotlib:",matplotlib.__version__)
|
||||
# === Plot and animate ===
|
||||
fig = plt.figure()
|
||||
fig.set_size_inches(19.2, 10.8, forward=True)
|
||||
|
||||
ax = fig.add_subplot(1, 2, 1)
|
||||
ax2 = fig.add_subplot(1, 2, 2)
|
||||
#ax3 = fig.add_subplot(2, 2, 3)
|
||||
#ax4 = fig.add_subplot(2, 2, 4)
|
||||
fig.subplots_adjust(left=0.05, bottom=0.05, right=0.95, top=0.95)
|
||||
|
||||
ax.set_xlabel('X Axis')
|
||||
ax.set_ylabel('Y Axis')
|
||||
#ax.set_zlabel('Z Axis')
|
||||
#ax.view_init(90, 90)
|
||||
|
||||
|
||||
print("Ground truth file has %u elements ",len(ground['body']))
|
||||
|
||||
|
||||
for i in range(0,len(ground['body'])):
|
||||
if (drawPlot):
|
||||
plt.cla()
|
||||
ax.cla()
|
||||
ax2.cla()
|
||||
|
||||
xs, ys = pointListReturnXYListForScatterPlot(ground['body'][i])
|
||||
|
||||
ax.scatter(xs, ys)
|
||||
img = plt.imread("images/im%u.png" % i)
|
||||
ax2.imshow(img)
|
||||
|
||||
#-------------------------
|
||||
ax.set_xlim(auto=False,left=0,right=width)
|
||||
ax.set_ylim(auto=False,bottom=height,top=0)
|
||||
#ax.set_zlim(auto=False,bottom=2000,top=6000)
|
||||
ax.set_xlabel('X Axis')
|
||||
ax.set_ylabel('Y Axis')
|
||||
#ax.set_zlabel('Z Axis')
|
||||
#-------------------------
|
||||
plt.show(block=False)
|
||||
#plt.savefig('p%05u.png'%i)
|
||||
#fig.canvas.draw()
|
||||
plt.pause(0.102)
|
||||
@@ -0,0 +1,316 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
import numpy as np
|
||||
import gc
|
||||
import os
|
||||
import sys
|
||||
import csv
|
||||
import time
|
||||
import array
|
||||
|
||||
import matplotlib
|
||||
import matplotlib.pyplot as plt
|
||||
import matplotlib.animation as animation
|
||||
from mpl_toolkits.mplot3d import axes3d, Axes3D
|
||||
|
||||
class bcolors:
|
||||
HEADER = '\033[95m'
|
||||
OKBLUE = '\033[94m'
|
||||
OKGREEN = '\033[92m'
|
||||
WARNING = '\033[93m'
|
||||
FAIL = '\033[91m'
|
||||
ENDC = '\033[0m'
|
||||
BOLD = '\033[1m'
|
||||
UNDERLINE = '\033[4m'
|
||||
|
||||
def pointListReturnXYZListForScatterPlot(A):
|
||||
numberOfPoints=A.shape[0]
|
||||
xs=list()
|
||||
ys=list()
|
||||
zs=list()
|
||||
for i in range(0,int(numberOfPoints/3)):
|
||||
xs.append(float(-1000*10*A[i*3+0]))
|
||||
ys.append(float(1000*10*A[i*3+1]))
|
||||
zs.append(float(1000*10*A[i*3+2]))
|
||||
return xs,ys,zs
|
||||
|
||||
def checkIfFileExists(filename):
|
||||
return os.path.isfile(filename)
|
||||
|
||||
def convert_bytes(num):
|
||||
"""
|
||||
this function will convert bytes to MB.... GB... etc
|
||||
"""
|
||||
step_unit = 1000.0 #1024 bad the size
|
||||
|
||||
for x in ['bytes', 'KB', 'MB', 'GB', 'TB']:
|
||||
if num < step_unit:
|
||||
return "%3.1f %s" % (num, x)
|
||||
num /= step_unit
|
||||
|
||||
def getNumberOfLines(filename):
|
||||
print("Counting number of lines in file ",filename)
|
||||
with open(filename) as f:
|
||||
return sum(1 for line in f)
|
||||
|
||||
#---------------------------------------------------------------------------------------------------------------------------------------------
|
||||
#---------------------------------------------------------------------------------------------------------------------------------------------
|
||||
#---------------------------------------------------------------------------------------------------------------------------------------------
|
||||
def readCSVFile(filename,memPercentage,csvDelimiter,useHalfFloats,groupOutput):
|
||||
print("CSV file :",filename,"..\n")
|
||||
|
||||
if (not checkIfFileExists(filename)):
|
||||
print( bcolors.WARNING + "Input file "+filename+" does not exist, cannot read ground truth.." + bcolors.ENDC)
|
||||
print("Current Directory was "+os.getcwd())
|
||||
sys.exit(0)
|
||||
start = time.time()
|
||||
|
||||
dtypeSelected=np.dtype(np.float32)
|
||||
dtypeSelectedByteSize=int(dtypeSelected.itemsize)
|
||||
if (useHalfFloats):
|
||||
dtypeSelected=np.dtype(np.float16)
|
||||
dtypeSelectedByteSize=int(dtypeSelected.itemsize)
|
||||
|
||||
progress=0.0
|
||||
sampleNumber=0
|
||||
receivedHeader=0
|
||||
inputNumberOfColumns=0
|
||||
|
||||
inputLabels=list()
|
||||
|
||||
#-------------------------------------------------------------------------------------------------
|
||||
numberOfSamplesInput=getNumberOfLines(filename)-2
|
||||
print(" Input file has ",numberOfSamplesInput," training samples\n")
|
||||
#-------------------------------------------------------------------------------------------------
|
||||
|
||||
|
||||
numberOfSamples = numberOfSamplesInput
|
||||
numberOfSamplesLimit=int(numberOfSamples*memPercentage)
|
||||
#-------------------------------------------------------------------------------------------------
|
||||
if (memPercentage==0.0):
|
||||
print("readGroundTruthFile was asked to occupy 0 memory so this probably means we just want one record")
|
||||
numberOfSamplesLimit=2
|
||||
if (memPercentage>1.0):
|
||||
print("Memory Limit will be interpreted as a raw value..")
|
||||
numberOfSamplesLimit=int(memPercentage)
|
||||
#-------------------------------------------------------------------------------------------------
|
||||
|
||||
|
||||
thisInput = array.array('f')
|
||||
#---------------------------------
|
||||
|
||||
fi = open(filename, "r")
|
||||
readerIn = csv.reader( fi , delimiter=csvDelimiter, skipinitialspace=True)
|
||||
for rowIn in readerIn:
|
||||
#------------------------------------------------------
|
||||
if (not receivedHeader): #use header to get labels
|
||||
#------------------------------------------------------
|
||||
inputNumberOfColumns=len(rowIn)
|
||||
|
||||
#Make sure CSV files that end with delimiter are correctly handled..
|
||||
if (inputNumberOfColumns>0):
|
||||
if (rowIn[inputNumberOfColumns-1]==''):
|
||||
inputNumberOfColumns=inputNumberOfColumns-1
|
||||
#-----------------------------------------------------
|
||||
inputLabels = list(rowIn[i] for i in range(0,inputNumberOfColumns) )
|
||||
print("Number of Input elements : ",len(inputLabels))
|
||||
#------------------------------------------------------
|
||||
|
||||
if (memPercentage==0):
|
||||
print("Will only return labels\n")
|
||||
return {'labels':inputLabels};
|
||||
|
||||
|
||||
#i=0
|
||||
#print("class Input(Enum):")
|
||||
#for label in inputLabels:
|
||||
# print(" ",label," = ",i," #",int(i/3))
|
||||
# print(" ",label,"=",int(i/3))
|
||||
# i=i+1
|
||||
|
||||
#---------------------------------
|
||||
# Allocate Lists
|
||||
#---------------------------------
|
||||
for i in range(inputNumberOfColumns):
|
||||
thisInput.append(0.0)
|
||||
#---------------------------------
|
||||
|
||||
|
||||
#---------------------------------
|
||||
# Allocate Numpy Arrays
|
||||
#---------------------------------
|
||||
inputSize=0
|
||||
startCompressed=0
|
||||
|
||||
inputSize=inputSize+inputNumberOfColumns
|
||||
startCompressed=inputNumberOfColumns
|
||||
|
||||
npInputBytesize=0+numberOfSamplesLimit * inputSize * dtypeSelectedByteSize
|
||||
print(" Input file on disk has a shape of [",numberOfSamples,",",inputSize,"]")
|
||||
print(" Input we will read has a shape of [",numberOfSamplesLimit,",",inputSize,"]")
|
||||
print(" Input will occupy ",convert_bytes(npInputBytesize)," of RAM\n")
|
||||
npInput = np.full([numberOfSamplesLimit,inputSize],fill_value=0,dtype=dtypeSelected,order='C')
|
||||
#----------------------------------------------------------------------------------------------------------
|
||||
receivedHeader=1
|
||||
#sys.exit(0)
|
||||
else:
|
||||
#-------------------------------------------
|
||||
# First convert our string INPUT to floats
|
||||
#-------------------------------------------
|
||||
for i in range(inputNumberOfColumns):
|
||||
thisInput[i]=float(rowIn[i])
|
||||
#-------------------------------------------
|
||||
for num in range(0,inputNumberOfColumns):
|
||||
npInput[sampleNumber,num]=float(thisInput[num]);
|
||||
#-------------------------------------------
|
||||
sampleNumber=sampleNumber+1
|
||||
|
||||
if (numberOfSamples>0):
|
||||
progress=sampleNumber/numberOfSamplesLimit
|
||||
|
||||
if (sampleNumber%1000==0) :
|
||||
progressString = "%0.2f"%float(100*progress)
|
||||
print("\rReading from disk (",sampleNumber,") - ",progressString," % \r", end="", flush=True)
|
||||
|
||||
if (numberOfSamplesLimit<=sampleNumber):
|
||||
print("\rStopping reading file to obey memory limit given by parameter --mem ",memPercentage,"\n")
|
||||
break
|
||||
#-------------------------------------------
|
||||
fi.close()
|
||||
del readerIn
|
||||
gc.collect()
|
||||
|
||||
|
||||
print("\n read, Samples: ",sampleNumber,", was expecting ",numberOfSamples," samples\n")
|
||||
print(npInput.shape)
|
||||
|
||||
totalNumberOfBytes=npInput.nbytes;
|
||||
totalNumberOfGigaBytes=totalNumberOfBytes/1073741824;
|
||||
print("Size Occupied by data = ",totalNumberOfGigaBytes," GB \n")
|
||||
|
||||
end = time.time()
|
||||
print("Time elapsed : ",(end-start)/60," mins")
|
||||
#---------------------------------------------------------------------
|
||||
|
||||
if (groupOutput==0):
|
||||
#New better dictionary
|
||||
output = dict()
|
||||
for i in range(0,len(inputLabels)):
|
||||
lowerCaseName = inputLabels[i].lower()
|
||||
#print("Joint ",lowerCaseName)
|
||||
output[lowerCaseName]=list()
|
||||
for frameID in range(0,len(npInput)):
|
||||
output[lowerCaseName].append(npInput[frameID][i])
|
||||
return output
|
||||
else:
|
||||
#This is the old dictionary way (better for tensorflow training)
|
||||
return {'label':inputLabels, 'body':npInput };
|
||||
|
||||
|
||||
|
||||
#---------------------------------------------------------------------------------------------------------------------------------------------
|
||||
#---------------------------------------------------------------------------------------------------------------------------------------------
|
||||
#---------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
|
||||
|
||||
drawPlot=1
|
||||
|
||||
ground=readCSVFile("ground3D.csv",1.0,',',0,1)
|
||||
|
||||
|
||||
if (drawPlot):
|
||||
print("Using matplotlib:",matplotlib.__version__)
|
||||
# === Plot and animate ===
|
||||
fig = plt.figure()
|
||||
fig.set_size_inches(19.2, 10.8, forward=True)
|
||||
|
||||
ax = fig.add_subplot(1, 2, 1, projection='3d')
|
||||
ax2 = fig.add_subplot(1, 2, 2)
|
||||
#ax3 = fig.add_subplot(2, 2, 3)
|
||||
#ax4 = fig.add_subplot(2, 2, 4)
|
||||
fig.subplots_adjust(left=0.05, bottom=0.05, right=0.95, top=0.95)
|
||||
|
||||
ax.set_xlabel('X Axis')
|
||||
ax.set_ylabel('Y Axis')
|
||||
ax.set_zlabel('Z Axis')
|
||||
ax.view_init(90, 90)
|
||||
|
||||
|
||||
print("Ground truth file has %u elements ",len(ground['body']))
|
||||
|
||||
|
||||
for i in range(0,len(ground['body'])):
|
||||
if (drawPlot):
|
||||
plt.cla()
|
||||
ax.cla()
|
||||
ax2.cla()
|
||||
#ax3.cla()
|
||||
#ax4.cla()
|
||||
|
||||
|
||||
categories = np.array([0,
|
||||
1,
|
||||
2,
|
||||
3,
|
||||
4,
|
||||
5,
|
||||
6,
|
||||
7,
|
||||
8,
|
||||
9,
|
||||
10,
|
||||
11,
|
||||
12,
|
||||
13,
|
||||
14,
|
||||
15,
|
||||
16,
|
||||
17,
|
||||
18,
|
||||
19,
|
||||
20
|
||||
])
|
||||
|
||||
color0=(0.0, 1.0, 1.0, 1.0) #Palm
|
||||
color1=(0.6, 0.0, 0.0, 1.0) #Thumb
|
||||
color2=(0.8, 0.0, 0.0, 1.0) #Finger 1.2
|
||||
color3=(1.0, 0.0, 0.0, 1.0) #Finger 1.3
|
||||
color4=(0.0, 1.0, 1.0, 1.0) #BaseOfFourFingers
|
||||
color5=(0.0, 1.0, 0.0, 1.0) #Finger 2.3
|
||||
color6=(0.0, 0.8, 0.0, 1.0) #Finger 2.2
|
||||
color7=(0.0, 0.6, 0.0, 1.0) #Finger 2.1
|
||||
color8=(0.0, 0.4, 0.0, 1.0) #Metacarpal 1
|
||||
color9=(0.0, 0.0, 1.0, 1.0) #Finger 3.3
|
||||
color10=(0.0, 0.0, 0.8, 1.0) #Finger 3.2
|
||||
color11=(0.0, 0.0, 0.6, 1.0) #Finger 3.1
|
||||
color12=(0.0, 0.0, 0.4, 1.0) #Metacarpal 2
|
||||
color13=(0.0, 1.0, 1.0, 1.0) #Finger 4.3
|
||||
color14=(0.0, 0.8, 0.8, 1.0) #Finger 4.2
|
||||
color15=(0.0, 0.6, 0.6, 1.0) #Finger 4.1
|
||||
color16=(0.0, 0.4, 0.4, 1.0) #Metacarpal 3
|
||||
color17=(1.0, 1.0, 0.0, 1.0) #Finger 5.3
|
||||
color18=(0.8, 0.8, 0.0, 1.0) #Finger 5.2
|
||||
color19=(0.6, 0.6, 0.0, 1.0) #Finger 5.1
|
||||
color20=(0.4, 0.4, 0.0, 1.0) #Metacarpal 4
|
||||
|
||||
colormap = np.array([color0,color1,color2,color3,color4,color5,color6,color7,color8,color9,color10,color11,color12,color13,color14,color15,color16,color17,color18,color19,color20])
|
||||
|
||||
xs, ys, zs = pointListReturnXYZListForScatterPlot(ground['body'][i])
|
||||
|
||||
ax.scatter(xs, ys, zs, c=colormap[categories])
|
||||
img = plt.imread("images/im%u.png" % i)
|
||||
ax2.imshow(img)
|
||||
|
||||
#-------------------------
|
||||
ax.set_xlim(auto=False,left=-600,right=300)
|
||||
ax.set_ylim(auto=False,bottom=-1600,top=200)
|
||||
ax.set_zlim(auto=False,bottom=2000,top=6000)
|
||||
ax.set_xlabel('X Axis')
|
||||
ax.set_ylabel('Y Axis')
|
||||
ax.set_zlabel('Z Axis')
|
||||
#-------------------------
|
||||
plt.show(block=False)
|
||||
#plt.savefig('p%05u.png'%i)
|
||||
#fig.canvas.draw()
|
||||
plt.pause(0.001)
|
||||
@@ -0,0 +1,18 @@
|
||||
project( HandOnlyTest )
|
||||
cmake_minimum_required( VERSION 2.8.7 )
|
||||
#cmake_minimum_required(VERSION 3.5)
|
||||
|
||||
find_package(OpenCV REQUIRED)
|
||||
INCLUDE_DIRECTORIES(${OpenCV_INCLUDE_DIRS})
|
||||
|
||||
add_executable(HandOnlyTest handTest.cpp)
|
||||
target_link_libraries(HandOnlyTest rt dl m ${OpenCV_LIBRARIES} Tensorflow TensorflowFramework MocapNETLib2 )
|
||||
set_target_properties(HandOnlyTest PROPERTIES DEBUG_POSTFIX "D")
|
||||
|
||||
|
||||
set_target_properties(HandOnlyTest PROPERTIES
|
||||
ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}"
|
||||
LIBRARY_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}"
|
||||
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}"
|
||||
)
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,23 @@
|
||||
project( MocapNET2LiveWebcamDemo )
|
||||
cmake_minimum_required( VERSION 2.8.13 )
|
||||
#cmake_minimum_required(VERSION 3.5)
|
||||
find_package(OpenCV REQUIRED)
|
||||
INCLUDE_DIRECTORIES(${OpenCV_INCLUDE_DIRS})
|
||||
|
||||
#set_property(GLOBAL PROPERTY USE_FOLDERS ON)
|
||||
set(CMAKE_CXX_STANDARD 11)
|
||||
include_directories(${TENSORFLOW_INCLUDE_ROOT})
|
||||
|
||||
|
||||
add_executable(MocapNET2LiveWebcamDemo livedemo.cpp )
|
||||
|
||||
target_link_libraries(MocapNET2LiveWebcamDemo rt dl m ${OpenCV_LIBRARIES} ${OPENGL_LIBS} JointEstimator2D Tensorflow TensorflowFramework MocapNETLib2 ${NETWORK_CLIENT_LIBRARIES} ${PNG_Libs} ${JPG_Libs} )
|
||||
set_target_properties(MocapNET2LiveWebcamDemo PROPERTIES DEBUG_POSTFIX "D")
|
||||
|
||||
|
||||
set_target_properties(MocapNET2LiveWebcamDemo PROPERTIES
|
||||
ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}"
|
||||
LIBRARY_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}"
|
||||
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}"
|
||||
)
|
||||
|
||||
@@ -0,0 +1,516 @@
|
||||
#include "opencv2/opencv.hpp"
|
||||
/** @file livedemo.cpp
|
||||
* @brief This is the main "demo" offered in this repository, it will take a stream from a webcam or video file using OpenCV and run
|
||||
* 2D pose estimation + MocapNET giving you a nice 3D visualization as well as an output .bvh file
|
||||
* @author Ammar Qammaz (AmmarkoV)
|
||||
*/
|
||||
#include <stdio.h>
|
||||
#include <unistd.h>
|
||||
//-----------------------------------------------------------------
|
||||
#include "../../JointEstimator2D/cameraControl.hpp"
|
||||
#include "../../JointEstimator2D/jointEstimator2D.hpp"
|
||||
#include "../../JointEstimator2D/visualization.hpp"
|
||||
//-----------------------------------------------------------------
|
||||
#include "../../MocapNET2/MocapNETLib2/mocapnet2.hpp"
|
||||
#include "../../MocapNET2/MocapNETLib2/applicationLogic/parseCommandlineOptions.hpp"
|
||||
#include "../../MocapNET2/MocapNETLib2/IO/commonSkeleton.hpp"
|
||||
#include "../../MocapNET2/MocapNETLib2/IO/conversions.hpp"
|
||||
#include "../../MocapNET2/MocapNETLib2/IO/bvh.hpp"
|
||||
#include "../../MocapNET2/MocapNETLib2/IO/csvRead.hpp"
|
||||
#include "../../MocapNET2/MocapNETLib2/IO/csvWrite.hpp"
|
||||
#include "../../MocapNET2/MocapNETLib2/IO/skeletonAbstraction.hpp"
|
||||
//-----------------------------------------------------------------
|
||||
#include "../../MocapNET2/MocapNETLib2/visualization/visualization.hpp"
|
||||
#include "../../MocapNET2/MocapNETLib2/visualization/map.hpp"
|
||||
//-----------------------------------------------------------------
|
||||
#include "../../MocapNET2/MocapNETLib2/tools.hpp"
|
||||
using namespace cv;
|
||||
|
||||
|
||||
#define NORMAL "\033[0m"
|
||||
#define BLACK "\033[30m" /* Black */
|
||||
#define RED "\033[31m" /* Red */
|
||||
#define GREEN "\033[32m" /* Green */
|
||||
#define YELLOW "\033[33m" /* Yellow */
|
||||
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
struct MocapNET2Options options= {0};
|
||||
struct MocapNET2 mnet= {0};
|
||||
mnet.options = & options;
|
||||
|
||||
struct JointEstimator2D jointEstimator;
|
||||
|
||||
std::vector<float> inputValues;
|
||||
std::vector<std::vector<float> > exactMocapNET2DOutput;
|
||||
std::vector<std::vector<float> > output3DPositions;
|
||||
std::vector<float> points3DFlatOutput;
|
||||
|
||||
struct skeletonSerialized resultAsSkeletonSerialized= {0};
|
||||
|
||||
float frameRateSummary = 0.0;
|
||||
unsigned int frameSamples=0;
|
||||
|
||||
defaultMocapNET2Options(&options);
|
||||
|
||||
/*
|
||||
* Force effortless IK configuration on Webcam Demo
|
||||
*/
|
||||
//Be unconstrained by default
|
||||
options.constrainPositionRotation=0;
|
||||
//Use IK ========
|
||||
options.useInverseKinematics=1;
|
||||
options.learningRate=0.01;
|
||||
options.iterations=5;
|
||||
options.epochs=30.0;
|
||||
options.spring=1.0;
|
||||
//==============
|
||||
|
||||
//640x480 should be a high framerate compatible resolution
|
||||
//for most webcams, you can change this using --size X Y commandline parameter
|
||||
options.width = 640;
|
||||
options.height = 480;
|
||||
|
||||
|
||||
loadOptionsFromCommandlineOptions(&options,argc,argv);
|
||||
|
||||
std::cerr<<"Trying to open source ("<<options.webcamSource<<") \n";
|
||||
VideoCapture cap(options.webcamSource); // open the default camera
|
||||
|
||||
int itIsTheFirstFrame=1;
|
||||
Mat singleImageFrame;
|
||||
Mat frame;
|
||||
Mat frameCentered;
|
||||
|
||||
if (
|
||||
(strstr(options.webcamSource,".jpg")!=0) ||
|
||||
(strstr(options.webcamSource,".png")!=0)
|
||||
)
|
||||
{
|
||||
std::cerr<<"Source seems to be a single image ("<<options.webcamSource<<") \n";
|
||||
options.frameLimit = 20; //let it warmup for a few frames..
|
||||
options.inputIsSingleImage = 1;
|
||||
options.doOutputFiltering = 0; //There is no motion to filter so skip this
|
||||
singleImageFrame=imread(options.webcamSource);
|
||||
singleImageFrame.copyTo(frame);
|
||||
} else
|
||||
if (strstr(options.webcamSource,"/dev/video")!=0)
|
||||
{
|
||||
std::cerr<<"Source seems to be a webcam ("<<options.webcamSource<<" @ "<<options.width<<","<<options.height<<") \n";
|
||||
options.inputIsSingleImage = 0;
|
||||
cap.set(cv::CAP_PROP_FRAME_WIDTH,options.width);
|
||||
cap.set(cv::CAP_PROP_FRAME_HEIGHT,options.height);
|
||||
}
|
||||
|
||||
//This needs to be grabbed to initialize window sizes either on video source, or on webcam source
|
||||
//--------------------------------------------------------------------
|
||||
if (!options.inputIsSingleImage)
|
||||
{ cap >> frame; }
|
||||
//--------------------------------------------------------------------
|
||||
|
||||
//We will accept the input resolution and force it
|
||||
//on visualization..
|
||||
options.width = frame.size().width;
|
||||
options.height = frame.size().height;
|
||||
options.visWidth = frame.size().width;
|
||||
options.visHeight = frame.size().height;
|
||||
//-----------------------------------------------------
|
||||
|
||||
|
||||
//We might want to load a special bvh file based on our options..!
|
||||
loadOptionsAfterBVHLoadFromCommandlineOptions(&options,argc,argv);
|
||||
|
||||
//If the initialization didnt happen inside the previous call lets do it now
|
||||
if (!options.hasInit)
|
||||
{
|
||||
if (initializeBVHConverter(0,options.visWidth,options.visHeight,0))
|
||||
{
|
||||
fprintf(stderr,"BVH code initalization successfull..\n");
|
||||
options.hasInit=1;
|
||||
}
|
||||
}
|
||||
//--------------------------------------------------------------------------
|
||||
|
||||
//Switch to realtime priority before opening tensorflow stuff..
|
||||
requestRealtimePriority();
|
||||
|
||||
if (loadJointEstimator2D(
|
||||
&jointEstimator,
|
||||
options.
|
||||
jointEstimatorUsed,
|
||||
1,
|
||||
options.useCPUOnlyFor2DEstimator
|
||||
))
|
||||
{
|
||||
if ( loadMocapNET2(&mnet,"Live Demo") )
|
||||
{
|
||||
//------------------------------
|
||||
mnet.learningRate=options.learningRate;
|
||||
mnet.iterations=options.iterations;
|
||||
mnet.epochs=options.epochs;
|
||||
mnet.spring=options.spring;
|
||||
//------------------------------
|
||||
|
||||
cv::Mat viewMat = Mat(Size(jointEstimator.inputWidth2DJointDetector,jointEstimator.inputHeight2DJointDetector),CV_8UC3, Scalar(0,0,0));
|
||||
|
||||
struct Skeletons2DDetected skeleton2DEstimations= {0};
|
||||
|
||||
if (options.visualize)
|
||||
{
|
||||
//cv::namedWindow("Video Input Feed",1);
|
||||
//cv::moveWindow("Video Input Feed",0,368);
|
||||
cv::namedWindow("3D Points Output",1);
|
||||
cv::moveWindow("3D Points Output",0,0);
|
||||
cv::namedWindow("Skeletons",1);
|
||||
cv::moveWindow("Skeletons",1920-jointEstimator.inputWidth2DJointDetector-50,100);
|
||||
}
|
||||
|
||||
unsigned int frameID=0;
|
||||
unsigned int skippedFramesInARow=0;
|
||||
|
||||
|
||||
std::vector<float> result;
|
||||
std::vector<float> previousResult;
|
||||
|
||||
float totalTime=0.0;
|
||||
unsigned int totalSamples=0;
|
||||
|
||||
std::vector<std::vector<float> > bvhFrames;
|
||||
struct skeletonSerialized skeleton= {0};
|
||||
|
||||
while ( (options.frameLimit==0) || (frameID<options.frameLimit) )
|
||||
{
|
||||
options.loopStartTime = GetTickCountMicrosecondsMN();
|
||||
|
||||
if (options.inputIsSingleImage) { singleImageFrame.copyTo(frame); } else
|
||||
if (itIsTheFirstFrame) { itIsTheFirstFrame=0; } else
|
||||
{ cap >> frame; }
|
||||
|
||||
//If we are running in a low-end computer and need to keep in sync with a live video feed we can frame-skip
|
||||
if (options.frameSkip)
|
||||
{
|
||||
for (int i=0; i<options.frameSkip; i++)
|
||||
{
|
||||
cap >> frame;
|
||||
}
|
||||
}
|
||||
|
||||
frame.copyTo(frameCentered);
|
||||
if ( (frameCentered.size().width>0) && (frameCentered.size().height>0) )
|
||||
{
|
||||
if (
|
||||
!cropAndResizeCVMatToMatchSkeleton(
|
||||
&jointEstimator,
|
||||
frameCentered,
|
||||
&skeleton2DEstimations
|
||||
)
|
||||
)
|
||||
{
|
||||
fprintf(stderr,"Failed to crop input video\n");
|
||||
}
|
||||
//imshow("Video Input Feed", frameCentered);
|
||||
|
||||
frameCentered.copyTo(viewMat);
|
||||
// viewMat.setTo(Scalar(0,0,0));
|
||||
|
||||
//Tensorflow works with Floating point input so we need to convert our buffer..
|
||||
frameCentered.convertTo(frameCentered,CV_32FC3);
|
||||
|
||||
//At this point we are ready to execute the neural network
|
||||
long startTime2D = GetTickCountMicrosecondsMN();
|
||||
|
||||
//We count the framerate of our acquisition
|
||||
options.fpsAcquisition = convertStartEndTimeFromMicrosecondsToFPS(options.loopStartTime,startTime2D);
|
||||
|
||||
|
||||
std::vector<std::vector<float> > heatmaps = getHeatmaps(
|
||||
&jointEstimator,
|
||||
frameCentered.data,
|
||||
jointEstimator.inputWidth2DJointDetector,
|
||||
jointEstimator.inputHeight2DJointDetector
|
||||
);
|
||||
if (heatmaps.size()>0)
|
||||
{
|
||||
//This will spam with small heatmap windows
|
||||
//visualizeHeatmaps(&jointEstimator,heatmaps,frameID);
|
||||
|
||||
estimate2DSkeletonsFromHeatmaps(&jointEstimator,&skeleton2DEstimations,heatmaps);
|
||||
|
||||
long endTime2D = GetTickCountMicrosecondsMN();
|
||||
|
||||
options.fps2DEstimator = convertStartEndTimeFromMicrosecondsToFPS(startTime2D,endTime2D);
|
||||
|
||||
if (options.visualize)
|
||||
{
|
||||
dj_drawExtractedSkeletons(
|
||||
viewMat,
|
||||
&skeleton2DEstimations,
|
||||
jointEstimator.inputWidth2DJointDetector,
|
||||
jointEstimator.inputHeight2DJointDetector
|
||||
);
|
||||
}
|
||||
|
||||
float percentageOf2DPointsMissing = percentOf2DPointsMissing(&skeleton2DEstimations);
|
||||
if ( percentageOf2DPointsMissing < 50.0 ) //only work when less than 50% of information missing..
|
||||
{
|
||||
skippedFramesInARow=0;
|
||||
//We want to go from the original normalized values of skeleton2DEstimations to the original
|
||||
//Resolution we grabbed our initial frame @ before cropping..
|
||||
restore2DJointsToInputFrameCoordinates(&jointEstimator,&skeleton2DEstimations);
|
||||
|
||||
//Now that our points have their initial size let's perform a conversion to the internal
|
||||
//serialized skeleton data structure that will prepare them for use in MocapNET
|
||||
convertSkeletons2DDetectedToSkeletonsSerialized(
|
||||
&skeleton,
|
||||
&skeleton2DEstimations,
|
||||
frameID,
|
||||
jointEstimator.crop.frameWidth,
|
||||
jointEstimator.crop.frameHeight
|
||||
);
|
||||
|
||||
takeCareOfScalingInputAndAddingNoiseAccordingToOptions(&options,&skeleton);
|
||||
|
||||
unsigned int feetAreMissing=areFeetMissing(&skeleton);
|
||||
|
||||
|
||||
long startTime = GetTickCountMicrosecondsMN();
|
||||
//--------------------------------------------------------
|
||||
previousResult = result;
|
||||
result = runMocapNET2(
|
||||
&mnet,
|
||||
&skeleton,
|
||||
( (options.doLowerBody) && (!feetAreMissing) ),
|
||||
options.doHands,
|
||||
options.doFace,
|
||||
options.doGestureDetection,
|
||||
options.useInverseKinematics,
|
||||
options.doOutputFiltering
|
||||
);
|
||||
bvhFrames.push_back(result);
|
||||
//--------------------------------------------------------
|
||||
long endTime = GetTickCountMicrosecondsMN();
|
||||
options.fpsMocapNET = convertStartEndTimeFromMicrosecondsToFPS(startTime,endTime);
|
||||
frameRateSummary += options.fpsMocapNET;
|
||||
++frameSamples;
|
||||
//--------------------------------------------------------
|
||||
|
||||
|
||||
options.numberOfMissingJoints = upperbodyCountMissingNSDMElements(mnet.upperBody.NSDM,0 /*Dont spam */);
|
||||
//Don't spam with missing joints..
|
||||
//fprintf(stderr,"Number of missing joints for UpperBody %u\n",options.numberOfMissingJoints);
|
||||
|
||||
//Convert BVH frame to 2D points to show on screen
|
||||
exactMocapNET2DOutput = convertBVHFrameTo2DPoints(result);//,MocapNETTrainingWidth,MocapNETTrainingHeight);
|
||||
|
||||
if (options.saveCSV3DFile)
|
||||
{
|
||||
//Convert BVH frame to 3D points to output on a file
|
||||
points3DFlatOutput=convertBVHFrameToFlat3DPoints(result);//,MocapNETTrainingWidth,MocapNETTrainingHeight);
|
||||
output3DPositions.push_back(points3DFlatOutput); //3d Input
|
||||
}
|
||||
|
||||
resultAsSkeletonSerialized.skeletonHeaderElements = skeleton.skeletonHeaderElements;
|
||||
resultAsSkeletonSerialized.skeletonBodyElements = skeleton.skeletonBodyElements;
|
||||
if (
|
||||
convertMocapNET2OutputToSkeletonSerialized(
|
||||
&mnet,
|
||||
&resultAsSkeletonSerialized,
|
||||
exactMocapNET2DOutput,
|
||||
frameID,
|
||||
MocapNETTrainingWidth,
|
||||
MocapNETTrainingHeight
|
||||
)
|
||||
)
|
||||
{
|
||||
//TODO : Compare resultAsSkeletonSerialized and skeleton
|
||||
doReprojectionCheck(&skeleton,&resultAsSkeletonSerialized);
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
if (skippedFramesInARow%30==0)
|
||||
{ fprintf(stderr,"."); }
|
||||
++skippedFramesInARow;
|
||||
}
|
||||
|
||||
if (options.visualize)
|
||||
{
|
||||
visualizationCommander(
|
||||
&mnet,
|
||||
&options,
|
||||
&skeleton,
|
||||
&frame,
|
||||
result,
|
||||
exactMocapNET2DOutput,
|
||||
frameID,
|
||||
1// We will do the waitKey call ourselves
|
||||
);
|
||||
|
||||
if ( (viewMat.size().width >0) && (viewMat.size().height>0) )
|
||||
{ imshow("Skeletons", viewMat); } else
|
||||
{ std::cerr<<"Invalid skeleton visualization frame.. \n"; }
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
std::cerr<<"Broken frame.. \n";
|
||||
++options.brokenFrames;
|
||||
if (options.brokenFrames>10)
|
||||
{
|
||||
std::cerr<<"Too many broken frames.. \n";
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
options.loopEndTime = GetTickCountMicrosecondsMN();
|
||||
|
||||
options.totalLoopFPS = convertStartEndTimeFromMicrosecondsToFPS(options.loopStartTime,options.loopEndTime);
|
||||
|
||||
|
||||
//------------------------------------------------------
|
||||
// These final calls add delays to frame processing so
|
||||
// they are not counted in loop time
|
||||
//------------------------------------------------------
|
||||
|
||||
|
||||
//Frames should increment even when visualization is off..
|
||||
++frameID;
|
||||
|
||||
|
||||
if (options.visualize)
|
||||
{
|
||||
char key = 0;
|
||||
if (options.delay!=0)
|
||||
{
|
||||
key = waitKey(options.delay);
|
||||
} else
|
||||
{
|
||||
key = waitKey(1);
|
||||
}
|
||||
|
||||
if (key==27)
|
||||
{
|
||||
fprintf(stderr,GREEN "Received Escape key from UI, terminating the application.." NORMAL);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (options.delay!=0)
|
||||
{
|
||||
nsleep(options.delay*1000);
|
||||
}
|
||||
//------------------------------------------------------
|
||||
} // End of grabber loop
|
||||
|
||||
|
||||
if (options.bvhCenter)
|
||||
{
|
||||
for (unsigned int i=0; i<bvhFrames.size(); i++)
|
||||
{
|
||||
bvhFrames[i][0]=0;
|
||||
bvhFrames[i][1]=0;
|
||||
bvhFrames[i][2]=0;
|
||||
}
|
||||
}
|
||||
|
||||
if (options.dontBend)
|
||||
{
|
||||
for (unsigned int i=0; i<bvhFrames.size(); i++)
|
||||
{
|
||||
if (bvhFrames[i][3]>10) { bvhFrames[i][3]=10; } else
|
||||
if (bvhFrames[i][3]<-10) { bvhFrames[i][3]=-10; }
|
||||
}
|
||||
}
|
||||
|
||||
//fix https://github.com/FORTH-ModelBasedTracker/MocapNET/issues/35
|
||||
fixBVHHip(bvhFrames);
|
||||
|
||||
if ( writeBVHFile(options.outputPath,0,options.prependTPose,bvhFrames) )
|
||||
{
|
||||
fprintf(stderr,GREEN "Successfully wrote %lu frames to bvh file.. \n" NORMAL,bvhFrames.size());
|
||||
}
|
||||
else
|
||||
{
|
||||
fprintf(stderr,RED "Failed to write %lu frames to bvh file.. \n" NORMAL,bvhFrames.size());
|
||||
}
|
||||
|
||||
if (options.saveCSV3DFile)
|
||||
{
|
||||
fprintf(stderr,"Will now write 3D output to out3DP.csv.. \n");
|
||||
//----------------------------------------------------------------------------------------------------------------------------------
|
||||
if ( writeCSVHeaderFromLabelsAndVectorOfVectors("out3DP.csv",MocapNET3DPositionalOutputArrayNames,MOCAPNET_3DPOINT_NUMBER,output3DPositions) )
|
||||
{
|
||||
fprintf(stderr,GREEN "Successfully wrote %lu frames to csv file.. \n" NORMAL,output3DPositions.size());
|
||||
}
|
||||
else
|
||||
{
|
||||
fprintf(stderr,RED "Failed to write %lu frames to bvh file.. \n" NORMAL,output3DPositions.size());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if ( (options.save3DVisualization) || (options.save2DVisualization) )
|
||||
{
|
||||
int highResEncoding=1;
|
||||
char formatString[256];
|
||||
|
||||
if (highResEncoding)
|
||||
{
|
||||
snprintf(formatString,256,"ffmpeg -framerate %f -i vis%%05d.jpg -s 1200x720 -y -r %f -pix_fmt yuv420p -threads 8 livelastRun3DHiRes.mp4 && rm ./*.jpg",options.inputFramerate,options.inputFramerate);
|
||||
} else
|
||||
{
|
||||
snprintf(formatString,256,"ffmpeg -framerate %f -i vis%%05d.jpg -y -r %f -threads 8 -crf 9 -pix_fmt yuv420p lastRun3D.webm && rm ./*.jpg",options.inputFramerate,options.inputFramerate);
|
||||
}
|
||||
int i=system(formatString);
|
||||
|
||||
|
||||
if (i==0)
|
||||
{
|
||||
fprintf(stderr,"Successfully wrote video file.. \n");
|
||||
}
|
||||
else
|
||||
{
|
||||
fprintf(stderr,"Failed to write a video file.. \n");
|
||||
}
|
||||
}
|
||||
|
||||
unloadMocapNET2(&mnet);
|
||||
|
||||
|
||||
|
||||
} //3D pose estimator ok
|
||||
} //2D joint estimator ok
|
||||
|
||||
//Offer a summary of system and the achieved framerate..!
|
||||
if (frameSamples!=0)
|
||||
{
|
||||
fprintf(stderr,"\n\nMocapNET v%s execution summary :\n",MocapNETVersion);
|
||||
fprintf(stderr,"__________________________________________\n");
|
||||
//neuralNetworkPrintVersion();
|
||||
printBVHCodeVersion();
|
||||
fprintf(stderr,"CPU : %s \n",options.CPUName);
|
||||
fprintf(stderr,"GPU : %s \n",options.GPUName);
|
||||
fprintf(stderr,"Average framerate for %u samples was %0.2f fps \n",frameSamples,((float) frameRateSummary/frameSamples) );
|
||||
|
||||
//Offer some info on options of the run executed..
|
||||
//-------------------------------------------------
|
||||
if (options.doMultiThreadedIK)
|
||||
{ fprintf(stderr,"Multi-threading was on\n"); }
|
||||
//-------------------------------------------------
|
||||
if (codeOptimizationsForIKEnabled())
|
||||
{ fprintf(stderr,"Code optimizations where on\n"); }
|
||||
//-------------------------------------------------
|
||||
if (options.jointEstimatorUsed==JOINT_2D_ESTIMATOR_FORTH)
|
||||
{ fprintf(stderr,"You can achieve better accuracy by using the homebrewed OpenPose 2D joint estimator using --openpose\n"); }
|
||||
//-------------------------------------------------
|
||||
if (options.jointEstimatorUsed==JOINT_2D_ESTIMATOR_OPENPOSE)
|
||||
{ fprintf(stderr,"You can achieve faster framerates with the bundled FORTH 2D joint estimator using --forth\n"); }
|
||||
//-------------------------------------------------
|
||||
}
|
||||
|
||||
// the camera will be deinitialized automatically in VideoCapture destructor
|
||||
return 0;
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
project( MocapNET2CSV )
|
||||
cmake_minimum_required( VERSION 2.8.13 )
|
||||
#cmake_minimum_required(VERSION 3.5)
|
||||
|
||||
find_package(OpenCV REQUIRED)
|
||||
INCLUDE_DIRECTORIES(${OpenCV_INCLUDE_DIRS})
|
||||
|
||||
add_executable(MocapNET2CSV mocapnet2CSV.cpp )
|
||||
target_link_libraries(MocapNET2CSV rt dl m ${OpenCV_LIBRARIES} Tensorflow TensorflowFramework MocapNETLib2 )
|
||||
set_target_properties(MocapNET2CSV PROPERTIES DEBUG_POSTFIX "D")
|
||||
|
||||
|
||||
set_target_properties(MocapNET2CSV PROPERTIES
|
||||
ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}"
|
||||
LIBRARY_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}"
|
||||
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}"
|
||||
)
|
||||
|
||||
@@ -0,0 +1,400 @@
|
||||
/*
|
||||
* Utility to extract BVH files straight from OpenPose JSON output
|
||||
* Sample usage ./MocapNETCSV --from test.csv --visualize
|
||||
*/
|
||||
|
||||
#include "../MocapNETLib2/mocapnet2.hpp"
|
||||
#include <iostream>
|
||||
#include <vector>
|
||||
#include <math.h>
|
||||
#include <string.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#include "../MocapNETLib2/applicationLogic/parseCommandlineOptions.hpp"
|
||||
|
||||
#include "../MocapNETLib2/tools.hpp"
|
||||
#include "../MocapNETLib2/visualization/map.hpp"
|
||||
#include "../MocapNETLib2/visualization/visualization.hpp"
|
||||
#include "../MocapNETLib2/visualization/camera_ready.hpp"
|
||||
//------------------------------------------
|
||||
#include "../MocapNETLib2/IO/bvh.hpp"
|
||||
#include "../MocapNETLib2/IO/csvRead.hpp"
|
||||
#include "../MocapNETLib2/IO/csvWrite.hpp"
|
||||
#include "../MocapNETLib2/IO/jsonRead.hpp"
|
||||
#include "../MocapNETLib2/IO/jsonMocapNETHelpers.hpp"
|
||||
#include "../MocapNETLib2/IO/conversions.hpp"
|
||||
#include "../MocapNETLib2/IO/skeletonAbstraction.hpp"
|
||||
//---------------------------------------------------
|
||||
|
||||
#define NORMAL "\033[0m"
|
||||
#define BLACK "\033[30m" /* Black */
|
||||
#define RED "\033[31m" /* Red */
|
||||
#define GREEN "\033[32m" /* Green */
|
||||
#define YELLOW "\033[33m" /* Yellow */
|
||||
|
||||
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
struct MocapNET2Options options= {0};
|
||||
struct MocapNET2 mnet= {0};
|
||||
mnet.options = & options;
|
||||
|
||||
struct skeletonSerialized resultAsSkeletonSerialized= {0};
|
||||
|
||||
defaultMocapNET2Options(&options);
|
||||
options.GPUName[0]=0; //The CSV demo does not use the GPU so don't display it..
|
||||
|
||||
|
||||
/*
|
||||
* Force effortless IK configuration on CSV demo
|
||||
*/
|
||||
//Be unconstrained by default
|
||||
options.constrainPositionRotation=0;
|
||||
//Use IK ========
|
||||
options.useInverseKinematics=1;
|
||||
options.learningRate=0.01;
|
||||
options.iterations=5;//5;
|
||||
options.epochs=30.0;
|
||||
options.spring=0.0; //Deprecated ?
|
||||
//==============
|
||||
|
||||
//640x480 should be a high framerate compatible resolution
|
||||
//for most webcams, you can change this using --size X Y commandline parameter
|
||||
options.width = 1920;
|
||||
options.height = 1080;
|
||||
|
||||
loadOptionsFromCommandlineOptions(&options,argc,argv);
|
||||
|
||||
if (options.path==0)
|
||||
{
|
||||
fprintf(stderr,RED "No CSV dataset given\n " NORMAL);
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
if (options.label==0)
|
||||
{
|
||||
options. label="colorFrame_0_";
|
||||
}
|
||||
|
||||
|
||||
struct CSVFileContext csv= {0};
|
||||
if (!options.isCSVFile)
|
||||
{
|
||||
fprintf(stderr,RED "The path %s doesn't look like a CSV file.. \n" NORMAL,options.path);
|
||||
return 0;
|
||||
}
|
||||
else if (options.isCSVFile)
|
||||
{
|
||||
if (!openCSVFile(&csv,options.path))
|
||||
{
|
||||
fprintf(stderr,RED "Unable to open CSV file %s \n" NORMAL,options.path);
|
||||
return 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
fprintf(stderr,GREEN "CSV file %s is now open\n" NORMAL,options.path);
|
||||
options.frameLimit=getBodyLinesOfCSVFIle(&csv,options.path);
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------------
|
||||
int havePath=0;
|
||||
int positionOfSlash=0;
|
||||
for (int i=strlen(options.path); i>=0; i--)
|
||||
{
|
||||
if (options.path[i]=='/')
|
||||
{
|
||||
positionOfSlash=i;
|
||||
havePath=1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (havePath)
|
||||
{
|
||||
options.datasetPath=(char*) malloc(sizeof(char) * (positionOfSlash+2) );
|
||||
if (options.datasetPath!=0)
|
||||
{
|
||||
for (int i=0; i<=positionOfSlash; i++)
|
||||
{
|
||||
options.datasetPath[i]=options.path[i];
|
||||
}
|
||||
options.datasetPath[positionOfSlash+1]=0; //Null termination
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
loadCalibration(&options,options.datasetPath,"color.calib");
|
||||
|
||||
|
||||
if(options.visualize)
|
||||
{
|
||||
spawnVisualizationWindow("3D Points Output",options.visWidth,options.visHeight);
|
||||
}
|
||||
|
||||
|
||||
|
||||
if ( loadMocapNET2(&mnet,"CSV Demo") )
|
||||
{
|
||||
//------------------------------
|
||||
mnet.learningRate=options.learningRate;
|
||||
mnet.iterations=options.iterations;
|
||||
mnet.epochs=options.epochs;
|
||||
mnet.spring=options.spring;
|
||||
//------------------------------
|
||||
|
||||
|
||||
char filePathOfImageFile[1024]= {0};
|
||||
if (options.datasetPath)
|
||||
{
|
||||
char formatString[1024]= {0};
|
||||
snprintf(formatString,1024,"%%s/%%s%%0%uu.jpg",options.serialLength);
|
||||
snprintf(filePathOfImageFile,1024,formatString,options.datasetPath,options.label,1/*Frame ID*/);
|
||||
// snprintf(filePathOfImageFile,1024,"%s/colorFrame_0_00001.jpg",datasetPath);
|
||||
|
||||
if ( getImageWidthHeight(filePathOfImageFile,&options.width,&options.height) )
|
||||
{
|
||||
fprintf(stderr,"Image dimensions changed from default to %ux%u\n",options.width,options.height);
|
||||
//Force visualization size to the same as image dimensions autodetected..
|
||||
options.visWidth = options.width;
|
||||
options.visHeight = options.height;
|
||||
}
|
||||
else
|
||||
{
|
||||
fprintf(stderr,"Assuming default image dimensions %ux%u , you can change this using --size x y\n",options.width,options.height);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//We might want to load a special bvh file based on our options..!
|
||||
loadOptionsAfterBVHLoadFromCommandlineOptions(&options,argc,argv);
|
||||
|
||||
//If the initialization didnt happen inside the previous call lets do it now
|
||||
if (!options.hasInit)
|
||||
{
|
||||
if (initializeBVHConverter(0,options.visWidth,options.visHeight,0))
|
||||
{
|
||||
fprintf(stderr,"BVH code initalization successfull..\n");
|
||||
options.hasInit=1;
|
||||
}
|
||||
}
|
||||
//--------------------------------------------------------------------------
|
||||
|
||||
std::vector<float> result;
|
||||
std::vector<float> previousResult;
|
||||
std::vector<std::vector<float> > output3DPositions;
|
||||
std::vector<float> points3DFlatOutput;
|
||||
|
||||
float totalTime=0.0;
|
||||
unsigned int totalSamples=0;
|
||||
|
||||
std::vector<std::vector<float> > bvhFrames;
|
||||
struct skeletonSerialized skeleton= {0};
|
||||
|
||||
char formatString[1024]= {0};
|
||||
snprintf(formatString,1024,"%%s/%%s%%0%uu_keypoints.json",options.serialLength);
|
||||
|
||||
unsigned int frameID=0;
|
||||
while ( (options.frameLimit==0) || (frameID<options.frameLimit) )
|
||||
{
|
||||
if ( parseNextCSVCOCOSkeleton(&csv,&skeleton) )
|
||||
{
|
||||
takeCareOfScalingInputAndAddingNoiseAccordingToOptions(&options,&skeleton);
|
||||
|
||||
unsigned int feetAreMissing=areFeetMissing(&skeleton);
|
||||
|
||||
long startTime = GetTickCountMicrosecondsMN();
|
||||
//--------------------------------------------------------
|
||||
previousResult = result;
|
||||
result = runMocapNET2(
|
||||
&mnet,
|
||||
&skeleton,
|
||||
( (options.doLowerBody) && (!feetAreMissing) ),
|
||||
options.doHands,
|
||||
options.doFace,
|
||||
options.doGestureDetection,
|
||||
options.useInverseKinematics,
|
||||
options.doOutputFiltering);
|
||||
bvhFrames.push_back(result);
|
||||
//--------------------------------------------------------
|
||||
long endTime = GetTickCountMicrosecondsMN();
|
||||
|
||||
//Convert BVH frame to 2D points to show on screen
|
||||
std::vector<std::vector<float> > exactMocapNET2DOutput = convertBVHFrameTo2DPoints(result);//,MocapNETTrainingWidth,MocapNETTrainingHeight);
|
||||
|
||||
|
||||
if (options.saveCSV3DFile)
|
||||
{
|
||||
//Convert BVH frame to 3D points to output on a file
|
||||
points3DFlatOutput=convertBVHFrameToFlat3DPoints(result);//,MocapNETTrainingWidth,MocapNETTrainingHeight);
|
||||
output3DPositions.push_back(points3DFlatOutput); //3d Input
|
||||
}
|
||||
|
||||
resultAsSkeletonSerialized.skeletonHeaderElements = skeleton.skeletonHeaderElements;
|
||||
resultAsSkeletonSerialized.skeletonBodyElements = skeleton.skeletonBodyElements;
|
||||
//exactMocapNET2DOutput = convertBVHFrameTo2DPoints(result,MocapNETTrainingWidth,MocapNETTrainingHeight);
|
||||
if (
|
||||
convertMocapNET2OutputToSkeletonSerialized(
|
||||
&mnet,
|
||||
&resultAsSkeletonSerialized,
|
||||
exactMocapNET2DOutput,
|
||||
frameID,
|
||||
MocapNETTrainingWidth,
|
||||
MocapNETTrainingHeight
|
||||
)
|
||||
)
|
||||
{
|
||||
//TODO : Compare resultAsSkeletonSerialized and skeleton
|
||||
doReprojectionCheck(&skeleton,&resultAsSkeletonSerialized);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
float sampleTime = (float) (endTime-startTime)/1000;
|
||||
if (sampleTime==0.0)
|
||||
{
|
||||
sampleTime=1.0; //Take care of division by null..
|
||||
}
|
||||
|
||||
options.totalLoopFPS = (float) 1000/sampleTime;
|
||||
fprintf(stderr,"Sample %u - %0.4fms - %0.4f fps\n",frameID,sampleTime,options.totalLoopFPS);
|
||||
|
||||
|
||||
if (options.visualize)
|
||||
{
|
||||
visualizationCommander(
|
||||
&mnet,
|
||||
&options,
|
||||
&skeleton,
|
||||
0,
|
||||
result,
|
||||
exactMocapNET2DOutput,
|
||||
frameID,
|
||||
0 //Visualization code must handle messages..
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
|
||||
totalTime+=sampleTime;
|
||||
++totalSamples;
|
||||
|
||||
if (options.delay!=0)
|
||||
{
|
||||
fprintf(stderr,"Sleeping for %u milliseconds\n",options.delay);
|
||||
nsleep(options.delay*1000);
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
fprintf(stderr,"Done.. \n");
|
||||
break;
|
||||
}
|
||||
|
||||
++frameID;
|
||||
}
|
||||
|
||||
fprintf(stderr,"Finished with %u/%u frames\n",frameID,options.frameLimit);
|
||||
|
||||
if (totalSamples>0)
|
||||
{
|
||||
char * bvhHeaderToWrite=0;
|
||||
|
||||
if (options.bvhCenter)
|
||||
{
|
||||
for (unsigned int i=0; i<bvhFrames.size(); i++)
|
||||
{
|
||||
bvhFrames[i][0]=0;
|
||||
bvhFrames[i][1]=0;
|
||||
bvhFrames[i][2]=0;
|
||||
}
|
||||
}
|
||||
|
||||
if (options.dontBend)
|
||||
{
|
||||
for (unsigned int i=0; i<bvhFrames.size(); i++)
|
||||
{
|
||||
if (bvhFrames[i][3]>10) { bvhFrames[i][3]=10; } else
|
||||
if (bvhFrames[i][3]<-10) { bvhFrames[i][3]=-10; }
|
||||
}
|
||||
}
|
||||
|
||||
//fix https://github.com/FORTH-ModelBasedTracker/MocapNET/issues/35
|
||||
fixBVHHip(bvhFrames);
|
||||
|
||||
if ( writeBVHFile(options.outputPath,bvhHeaderToWrite,options.prependTPose,bvhFrames) )
|
||||
{
|
||||
fprintf(stderr,"Successfully wrote %lu frames to bvh file %s.. \n",bvhFrames.size(),options.outputPath);
|
||||
}
|
||||
else
|
||||
{
|
||||
fprintf(stderr,"Failed to write %lu frames to bvh file %s .. \n",bvhFrames.size(),options.outputPath);
|
||||
}
|
||||
|
||||
if (options.saveCSV3DFile)
|
||||
{
|
||||
fprintf(stderr,"Will now write 3D output to out3DP.csv.. \n");
|
||||
//----------------------------------------------------------------------------------------------------------------------------------
|
||||
if ( writeCSVHeaderFromLabelsAndVectorOfVectors("out3DP.csv",MocapNET3DPositionalOutputArrayNames,MOCAPNET_3DPOINT_NUMBER,output3DPositions) )
|
||||
{
|
||||
fprintf(stderr,GREEN "Successfully wrote %lu frames to csv file.. \n" NORMAL,output3DPositions.size());
|
||||
}
|
||||
else
|
||||
{
|
||||
fprintf(stderr,RED "Failed to write %lu frames to bvh file.. \n" NORMAL,output3DPositions.size());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
float averageTime=(float) totalTime/totalSamples;
|
||||
fprintf(stderr,"\n\nMocapNET v%s execution summary :\n",MocapNETVersion);
|
||||
fprintf(stderr,"__________________________________________\n");
|
||||
//neuralNetworkPrintVersion();
|
||||
printBVHCodeVersion();
|
||||
fprintf(stderr,"CPU : %s \n",options.CPUName);
|
||||
fprintf(stderr,"GPU : %s \n",options.GPUName);
|
||||
fprintf(stderr,"Total %0.2f ms for %u samples - Average %0.2f ms - %0.2f fps\n",totalTime,totalSamples,averageTime,(float) 1000/averageTime);
|
||||
//-----------------------------------------------
|
||||
if (options.doMultiThreadedIK)
|
||||
{ fprintf(stderr,"Multi-threading was on\n"); }
|
||||
if (codeOptimizationsForIKEnabled())
|
||||
{ fprintf(stderr,"Code optimizations where on\n"); }
|
||||
}
|
||||
|
||||
if (options.isCSVFile)
|
||||
{
|
||||
closeCSVFile(&csv);
|
||||
}
|
||||
|
||||
|
||||
|
||||
if (options.saveVisualization)
|
||||
{
|
||||
int i;
|
||||
//Low-Res video encoding
|
||||
//int i=system("ffmpeg -framerate 25 -i vis%05d.jpg -y -r 30 -threads 8 -crf 9 -pix_fmt yuv420p lastRun3D.webm");
|
||||
//High-Res video encoding
|
||||
snprintf(formatString,1024,"ffmpeg -framerate %f -i vis%%05d.jpg -s 1200x720 -y -r %f -pix_fmt yuv420p -threads 8 %s_lastRun3DHiRes.mp4 && rm ./vis*.jpg",options.inputFramerate,options.inputFramerate,options.path); //
|
||||
i=system(formatString);
|
||||
if (i==0)
|
||||
{
|
||||
fprintf(stderr,"Successfully wrote video file to %s_lastRun3DHiRes.mp4 .. \n",options.path);
|
||||
}
|
||||
else
|
||||
{
|
||||
fprintf(stderr,"Failed to write a video file.. \n");
|
||||
}
|
||||
}
|
||||
|
||||
unloadMocapNET2(&mnet);
|
||||
}
|
||||
else
|
||||
{
|
||||
fprintf(stderr,RED "MocapNET2 failed to load properly and will now exit..\n");
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,72 @@
|
||||
project( MocapNETLib2 )
|
||||
cmake_minimum_required(VERSION 3.5)
|
||||
|
||||
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
|
||||
|
||||
#Unfortunately needed for tf_utils.cpp
|
||||
set(CMAKE_CXX_STANDARD 11)
|
||||
|
||||
include_directories(${TENSORFLOW_INCLUDE_ROOT})
|
||||
|
||||
|
||||
#add_executable(MocapNETLib mocapnet.cpp ${CMAKE_SOURCE_DIR}/src/Tensorflow/tf_utils.cpp)
|
||||
|
||||
add_library(MocapNETLib2 SHARED
|
||||
${BVH_SOURCE}
|
||||
${OPENGL_SOURCE}
|
||||
../MocapNETLib2/config.h
|
||||
../MocapNETLib2/core/core.cpp
|
||||
../MocapNETLib2/core/core.hpp
|
||||
../MocapNETLib2/core/singleThreaded.cpp
|
||||
../MocapNETLib2/core/singleThreaded.hpp
|
||||
../MocapNETLib2/core/multiThreaded.cpp
|
||||
../MocapNETLib2/core/multiThreaded.hpp
|
||||
../MocapNETLib2/mocapnet2.cpp
|
||||
../MocapNETLib2/tools.cpp
|
||||
../MocapNETLib2/remoteExecution.cpp
|
||||
../MocapNETLib2/applicationLogic/parseCommandlineOptions.cpp
|
||||
../MocapNETLib2/applicationLogic/poseRecognition.cpp
|
||||
../MocapNETLib2/applicationLogic/gestureRecognition.cpp
|
||||
../MocapNETLib2/applicationLogic/artifactRecognition.cpp
|
||||
../MocapNETLib2/qualityControl/qualityControl.cpp
|
||||
../MocapNETLib2/postProcessing/outputFiltering.hpp
|
||||
../MocapNETLib2/NSDM/generated_body.hpp
|
||||
../MocapNETLib2/NSDM/generated_upperbody.hpp
|
||||
../MocapNETLib2/NSDM/generated_lowerbody.hpp
|
||||
../MocapNETLib2/IO/bvh.cpp
|
||||
../MocapNETLib2/IO/commonSkeleton.hpp
|
||||
../MocapNETLib2/IO/skeletonAbstraction.cpp
|
||||
../MocapNETLib2/IO/skeletonSerializedToBVHTransform.hpp
|
||||
../MocapNETLib2/IO/csvRead.cpp
|
||||
../MocapNETLib2/IO/csvWrite.cpp
|
||||
../MocapNETLib2/IO/jsonRead.cpp
|
||||
../MocapNETLib2/IO/jsonMocapNETHelpers.cpp
|
||||
../MocapNETLib2/IO/conversions.cpp
|
||||
../MocapNETLib2/visualization/rgb.cpp
|
||||
../MocapNETLib2/visualization/allInOne.cpp
|
||||
../MocapNETLib2/visualization/widgets.cpp
|
||||
../MocapNETLib2/visualization/visualization.cpp
|
||||
../MocapNETLib2/visualization/drawSkeleton.cpp
|
||||
../MocapNETLib2/visualization/opengl.cpp
|
||||
../MocapNETLib2/visualization/camera_ready.cpp
|
||||
../MocapNETLib2/visualization/map.cpp
|
||||
../MocapNETLib2/visualization/template.cpp
|
||||
../MocapNETLib2/solutionParts/body.cpp
|
||||
../MocapNETLib2/solutionParts/upperBody.cpp
|
||||
../MocapNETLib2/solutionParts/lowerBody.cpp
|
||||
${CMAKE_SOURCE_DIR}/dependencies/InputParser/InputParser_C.cpp
|
||||
#Tensorflow stuff..
|
||||
${TENSORFLOW_SOURCE_FILES}
|
||||
)
|
||||
|
||||
|
||||
target_link_libraries(MocapNETLib2 rt dl m pthread ${OpenCV_LIBRARIES} ${OPENGL_LIBS} Tensorflow TensorflowFramework ${NETWORK_CLIENT_LIBRARIES} ${PNG_Libs} ${JPG_Libs} )
|
||||
set_target_properties(MocapNETLib2 PROPERTIES DEBUG_POSTFIX "D")
|
||||
|
||||
|
||||
set_target_properties(MocapNETLib2 PROPERTIES
|
||||
ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}"
|
||||
LIBRARY_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}"
|
||||
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}"
|
||||
)
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,164 @@
|
||||
abdomen
|
||||
chest
|
||||
neck
|
||||
neck1
|
||||
head
|
||||
__jaw
|
||||
jaw
|
||||
special04
|
||||
oris02
|
||||
oris01
|
||||
oris06.l
|
||||
oris07.l
|
||||
oris06.r
|
||||
oris07.r
|
||||
tongue00
|
||||
tongue01
|
||||
tongue02
|
||||
tongue03
|
||||
__tongue04
|
||||
tongue04
|
||||
tongue07.l
|
||||
tongue07.r
|
||||
tongue06.l
|
||||
tongue06.r
|
||||
tongue05.l
|
||||
tongue05.r
|
||||
__levator02.l
|
||||
levator02.l
|
||||
levator03.l
|
||||
levator04.l
|
||||
levator05.l
|
||||
__levator02.r
|
||||
levator02.r
|
||||
levator03.r
|
||||
levator04.r
|
||||
levator05.r
|
||||
__special01
|
||||
special01
|
||||
oris04.l
|
||||
oris03.l
|
||||
oris04.r
|
||||
oris03.r
|
||||
oris06
|
||||
oris05
|
||||
__special03
|
||||
special03
|
||||
__levator06.l
|
||||
levator06.l
|
||||
__levator06.r
|
||||
levator06.r
|
||||
special06.l
|
||||
special05.l
|
||||
eye.l
|
||||
orbicularis03.l
|
||||
orbicularis04.l
|
||||
special06.r
|
||||
special05.r
|
||||
eye.r
|
||||
orbicularis03.r
|
||||
orbicularis04.r
|
||||
__temporalis01.l
|
||||
temporalis01.l
|
||||
oculi02.l
|
||||
oculi01.l
|
||||
__temporalis01.r
|
||||
temporalis01.r
|
||||
oculi02.r
|
||||
oculi01.r
|
||||
__temporalis02.l
|
||||
temporalis02.l
|
||||
risorius02.l
|
||||
risorius03.l
|
||||
__temporalis02.r
|
||||
temporalis02.r
|
||||
risorius02.r
|
||||
risorius03.r
|
||||
rCollar
|
||||
rShldr
|
||||
rForeArm
|
||||
rHand
|
||||
metacarpal1.r
|
||||
finger2-1.r
|
||||
finger2-2.r
|
||||
finger2-3.r
|
||||
metacarpal2.r
|
||||
finger3-1.r
|
||||
finger3-2.r
|
||||
finger3-3.r
|
||||
__metacarpal3.r
|
||||
metacarpal3.r
|
||||
finger4-1.r
|
||||
finger4-2.r
|
||||
finger4-3.r
|
||||
__metacarpal4.r
|
||||
metacarpal4.r
|
||||
finger5-1.r
|
||||
finger5-2.r
|
||||
finger5-3.r
|
||||
__rthumb
|
||||
rthumb
|
||||
finger1-2.r
|
||||
finger1-3.r
|
||||
lCollar
|
||||
lShldr
|
||||
lForeArm
|
||||
lHand
|
||||
metacarpal1.l
|
||||
finger2-1.l
|
||||
finger2-2.l
|
||||
finger2-3.l
|
||||
metacarpal2.l
|
||||
finger3-1.l
|
||||
finger3-2.l
|
||||
finger3-3.l
|
||||
__metacarpal3.l
|
||||
metacarpal3.l
|
||||
finger4-1.l
|
||||
finger4-2.l
|
||||
finger4-3.l
|
||||
__metacarpal4.l
|
||||
metacarpal4.l
|
||||
finger5-1.l
|
||||
finger5-2.l
|
||||
finger5-3.l
|
||||
__lthumb
|
||||
lthumb
|
||||
finger1-2.l
|
||||
finger1-3.l
|
||||
rButtock
|
||||
rThigh
|
||||
rShin
|
||||
rFoot
|
||||
toe1-1.R
|
||||
toe1-2.R
|
||||
toe2-1.R
|
||||
toe2-2.R
|
||||
toe2-3.R
|
||||
toe3-1.R
|
||||
toe3-2.R
|
||||
toe3-3.R
|
||||
toe4-1.R
|
||||
toe4-2.R
|
||||
toe4-3.R
|
||||
toe5-1.R
|
||||
toe5-2.R
|
||||
toe5-3.R
|
||||
lButtock
|
||||
lThigh
|
||||
lShin
|
||||
lFoot
|
||||
toe1-1.L
|
||||
toe1-2.L
|
||||
toe2-1.L
|
||||
toe2-2.L
|
||||
toe2-3.L
|
||||
toe3-1.L
|
||||
toe3-2.L
|
||||
toe3-3.L
|
||||
toe4-1.L
|
||||
toe4-2.L
|
||||
toe4-3.L
|
||||
toe5-1.L
|
||||
toe5-2.L
|
||||
toe5-3.L
|
||||
@@ -0,0 +1,714 @@
|
||||
#pragma once
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
/**
|
||||
* @brief A C struct to hold a 2D coordinate
|
||||
*/
|
||||
struct point2D
|
||||
{
|
||||
float x,y;
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief A C struct to hold a 3D coordinate
|
||||
*/
|
||||
struct point3D
|
||||
{
|
||||
float x,y,z;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @brief A structure to hold a bounding box
|
||||
*/
|
||||
struct boundingBox
|
||||
{
|
||||
char populated;
|
||||
float minimumX;
|
||||
float maximumX;
|
||||
float minimumY;
|
||||
float maximumY;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @brief This is an array of names for all the old COCO body parts.
|
||||
*/
|
||||
static const char * COCOOldBodyNames[] =
|
||||
{
|
||||
"Nose", //0
|
||||
"Neck", //1
|
||||
"RShoulder", //2
|
||||
"RElbow", //3
|
||||
"RWrist", //4
|
||||
"LShoulder", //5
|
||||
"LElbow", //6
|
||||
"LWrist", //7
|
||||
"RHip", //8
|
||||
"RKnee", //9
|
||||
"RAnkle", //10
|
||||
"LHip", //11
|
||||
"LKnee", //12
|
||||
"LAnkle", //13
|
||||
"REye", //14
|
||||
"LEye", //15
|
||||
"REar", //16
|
||||
"LEar", //17
|
||||
"Bkg", //18
|
||||
//=================
|
||||
"End of Joint Names"
|
||||
};
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @brief An enumerator of coco skeleton joints
|
||||
*/
|
||||
//https://github.com/CMU-Perceptual-Computing-Lab/openpose/blob/master/doc/media/keypoints_pose_18.png
|
||||
enum COCOOldSkeletonJoints
|
||||
{
|
||||
COCO_Nose=0,
|
||||
COCO_Neck,
|
||||
COCO_RShoulder,
|
||||
COCO_RElbow,
|
||||
COCO_RWrist,
|
||||
COCO_LShoulder,
|
||||
COCO_LElbow,
|
||||
COCO_LWrist,
|
||||
COCO_RHip,
|
||||
COCO_RKnee,
|
||||
COCO_RAnkle,
|
||||
COCO_LHip,
|
||||
COCO_LKnee,
|
||||
COCO_LAnkle,
|
||||
COCO_REye,
|
||||
COCO_LEye,
|
||||
COCO_REar,
|
||||
COCO_LEar,
|
||||
COCO_Bkg,
|
||||
//---------------------
|
||||
COCO_PARTS
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @brief An array of indexes to the parents of coco skeleton joints
|
||||
*/
|
||||
static const int COCOSkeletonJointsParentRelationMap[] =
|
||||
{
|
||||
// Parent Joint
|
||||
COCO_Nose, //COCO_Nose,
|
||||
COCO_Nose, //COCO_Neck,
|
||||
COCO_Neck, //COCO_RShoulder,
|
||||
COCO_RShoulder, //COCO_RElbow,
|
||||
COCO_RElbow, //COCO_RWrist,
|
||||
COCO_Neck, //COCO_LShoulder,
|
||||
COCO_LShoulder, //COCO_LElbow,
|
||||
COCO_LElbow, //COCO_LWrist,
|
||||
COCO_Neck, //COCO_RHip,
|
||||
COCO_RHip, //COCO_RKnee,
|
||||
COCO_RKnee, //COCO_RAnkle,
|
||||
COCO_Neck, //COCO_LHip,
|
||||
COCO_LHip, //COCO_LKnee,
|
||||
COCO_LKnee, //COCO_LAnkle,
|
||||
COCO_Nose, //COCO_REye,
|
||||
COCO_Nose, //COCO_LEye,
|
||||
COCO_REye, //COCO_REar,
|
||||
COCO_LEye, //COCO_LEar,
|
||||
COCO_Bkg //COCO_Bkg
|
||||
};
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @brief This is an array of names for all the new BODY25 body parts.
|
||||
* This is a "friendly" array, meaning it is meant to be easy to understand and does not need to exactly correspond to the BVH file..
|
||||
*/
|
||||
static const char * Body25BodyFriendlyNames[] =
|
||||
{
|
||||
"Nose", //0
|
||||
"Neck", //1
|
||||
"RShoulder", //2
|
||||
"RElbow", //3
|
||||
"RWrist", //4
|
||||
"LShoulder", //5
|
||||
"LElbow", //6
|
||||
"LWrist", //7
|
||||
"MidHip", //8
|
||||
"RHip", //9
|
||||
"RKnee", //10
|
||||
"RAnkle", //11
|
||||
"LHip", //12
|
||||
"LKnee", //13
|
||||
"LAnkle", //14
|
||||
"REye", //15
|
||||
"LEye", //16
|
||||
"REar", //17
|
||||
"LEar", //18
|
||||
"LBigToe", //19
|
||||
"LSmallToe", //20
|
||||
"LHeel", //21
|
||||
"RBigToe", //22
|
||||
"RSmallToe", //23
|
||||
"RHeel", //24
|
||||
"Bkg", //25
|
||||
//=================
|
||||
"End of Joint Names"
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief This is an array of names for all the new BODY25 body parts.
|
||||
* This tries to mirror body_configuration.json and everything used is lowercase exactly for this reason..
|
||||
* it also has to be the same with the bvh file headerWithHeadAndOneMotion.bvh
|
||||
*/
|
||||
static const char * Body25BodyNames[] =
|
||||
{
|
||||
"head", //0
|
||||
"neck", //1
|
||||
"rshoulder", //2
|
||||
"relbow", //3
|
||||
"rhand", //4
|
||||
"lshoulder", //5
|
||||
"lelbow", //6
|
||||
"lhand", //7
|
||||
"hip", //8
|
||||
"rhip", //9
|
||||
"rknee", //10
|
||||
"rfoot", //11
|
||||
"lhip", //12
|
||||
"lknee", //13
|
||||
"lfoot", //14
|
||||
"endsite_eye.r", //15
|
||||
"endsite_eye.l", //16
|
||||
"rear", //17 ========= No correspondance
|
||||
"lear", //18 ========= No correspondance
|
||||
"endsite_toe1-2.l",//19
|
||||
"endsite_toe5-3.l",//20
|
||||
"lheel", //21 ========= No correspondance
|
||||
"endsite_toe1-2.r",//22
|
||||
"endsite_toe5-3.r",//23
|
||||
"rheel", //24 ========= No correspondance
|
||||
"bkg", //25 ========= No correspondance
|
||||
//==================
|
||||
"End of Joint Names"
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief An enumerator of BODY 25 skeleton joints
|
||||
*/
|
||||
enum Body25SkeletonJoints
|
||||
{
|
||||
BODY25_Nose=0,
|
||||
BODY25_Neck,
|
||||
BODY25_RShoulder,
|
||||
BODY25_RElbow,
|
||||
BODY25_RWrist,
|
||||
BODY25_LShoulder,
|
||||
BODY25_LElbow,
|
||||
BODY25_LWrist,
|
||||
BODY25_MidHip,
|
||||
BODY25_RHip,
|
||||
BODY25_RKnee,
|
||||
BODY25_RAnkle,
|
||||
BODY25_LHip,
|
||||
BODY25_LKnee,
|
||||
BODY25_LAnkle,
|
||||
BODY25_REye,
|
||||
BODY25_LEye,
|
||||
BODY25_REar,
|
||||
BODY25_LEar,
|
||||
BODY25_LBigToe,
|
||||
BODY25_LSmallToe,
|
||||
BODY25_LHeel,
|
||||
BODY25_RBigToe,
|
||||
BODY25_RSmallToe,
|
||||
BODY25_RHeel,
|
||||
BODY25_Bkg,
|
||||
//---------------------
|
||||
BODY25_PARTS
|
||||
};
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @brief An array of indexes to the parents of BODY25 skeleton joints
|
||||
*/
|
||||
static const int Body25SkeletonJointsParentRelationMap[] =
|
||||
{
|
||||
// Parent Joint
|
||||
BODY25_Nose, //BODY25_Nose,
|
||||
BODY25_Nose, //BODY25_Neck,
|
||||
BODY25_Neck, //BODY25_RShoulder,
|
||||
BODY25_RShoulder, //BODY25_RElbow,
|
||||
BODY25_RElbow, //BODY25_RWrist,
|
||||
BODY25_Neck, //BODY25_LShoulder,
|
||||
BODY25_LShoulder, //BODY25_LElbow,
|
||||
BODY25_LElbow, //BODY25_LWrist,
|
||||
BODY25_Neck, //BODY25_MidHip
|
||||
BODY25_MidHip, //BODY25_RHip,
|
||||
BODY25_RHip, //BODY25_RKnee,
|
||||
BODY25_RKnee, //BODY25_RAnkle,
|
||||
BODY25_MidHip, //BODY25_LHip,
|
||||
BODY25_LHip, //BODY25_LKnee,
|
||||
BODY25_LKnee, //BODY25_LAnkle,
|
||||
BODY25_Nose, //BODY25_REye,
|
||||
BODY25_Nose, //BODY25_LEye,
|
||||
BODY25_REye, //BODY25_REar,
|
||||
BODY25_LEye, //BODY25_LEar,
|
||||
BODY25_LHeel, //BODY25_LBigToe,
|
||||
BODY25_LBigToe, //BODY25_LSmallToe,
|
||||
BODY25_LAnkle, //BODY25_LHeel,
|
||||
BODY25_RHeel, //BODY25_RBigToe,
|
||||
BODY25_RBigToe, //BODY25_RSmallToe,
|
||||
BODY25_RAnkle, // BODY25_RHeel,
|
||||
BODY25_Bkg //BODY25_Bkg
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @brief An enumerator of COCO Hand joints
|
||||
*/
|
||||
//https://github.com/CMU-Perceptual-Computing-Lab/openpose/blob/master/doc/media/keypoints_hand.png
|
||||
enum COCOHandJoints
|
||||
{
|
||||
COCO_Hand_Wrist=0,//0
|
||||
COCO_Hand_Thumb_1,//1
|
||||
COCO_Hand_Thumb_2, //2
|
||||
COCO_Hand_Thumb_3, //3
|
||||
COCO_Hand_Thumb_4,//4
|
||||
COCO_Hand_Index_1,//5
|
||||
COCO_Hand_Index_2,//6
|
||||
COCO_Hand_Index_3,//7
|
||||
COCO_Hand_Index_4,//8
|
||||
COCO_Hand_Middle_1,//9
|
||||
COCO_Hand_Middle_2,//10
|
||||
COCO_Hand_Middle_3,//11
|
||||
COCO_Hand_Middle_4,//12
|
||||
COCO_Hand_Ring_1,//13
|
||||
COCO_Hand_Ring_2,//14
|
||||
COCO_Hand_Ring_3,//15
|
||||
COCO_Hand_Ring_4,//16
|
||||
COCO_Hand_Pinky_1,//17
|
||||
COCO_Hand_Pinky_2,//18
|
||||
COCO_Hand_Pinky_3,//19
|
||||
COCO_Hand_Pinky_4,//20
|
||||
//---------------------
|
||||
COCO_HAND_PARTS
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @brief This is an array of names for the left hand.
|
||||
* This is a "friendly" array, meaning it is meant to be easy to understand and does not need to exactly correspond to the BVH file..
|
||||
*/
|
||||
static const char * COCOLeftHandFriendlyNames[] =
|
||||
{
|
||||
"Left_Hand_Wrist",//0
|
||||
"Left_Hand_Thumb_1",//1
|
||||
"Left_Hand_Thumb_2", //2
|
||||
"Left_Hand_Thumb_3", //3
|
||||
"Left_Hand_Thumb_4",//4
|
||||
"Left_Hand_Index_1",//5
|
||||
"Left_Hand_Index_2",//6
|
||||
"Left_Hand_Index_3",//7
|
||||
"Left_Hand_Index_4",//8
|
||||
"Left_Hand_Middle_1",//9
|
||||
"Left_Hand_Middle_2",//10
|
||||
"Left_Hand_Middle_3",//11
|
||||
"Left_Hand_Middle_4",//12
|
||||
"Left_Hand_Ring_1",//13
|
||||
"Left_Hand_Ring_2",//14
|
||||
"Left_Hand_Ring_3",//15
|
||||
"Left_Hand_Ring_4",//16
|
||||
"Left_Hand_Pinky_1",//17
|
||||
"Left_Hand_Pinky_2",//18
|
||||
"Left_Hand_Pinky_3",//19
|
||||
"Left_Hand_Pinky_4",//20
|
||||
//--------------------
|
||||
"End of Left Hand Names"
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief This is an array of names for the left hand.
|
||||
* This tries to mirror lhand_configuration.json and everything used is lowercase exactly for this reason..
|
||||
* it also has to be the same with the bvh file headerWithHeadAndOneMotion.bvh
|
||||
*/
|
||||
static const char * COCOLeftHandNames[] =
|
||||
{
|
||||
"lhand",//0
|
||||
"lthumb",//1
|
||||
"finger1-2.l", //2
|
||||
"finger1-3.l", //3
|
||||
"endsite_finger1-3.l",//4
|
||||
"finger2-1.l",//5
|
||||
"finger2-2.l",//6
|
||||
"finger2-3.l",//7
|
||||
"endsite_finger2-3.l",//8
|
||||
"finger3-1.l",//9
|
||||
"finger3-2.l",//10
|
||||
"finger3-3.l",//11
|
||||
"endsite_finger3-3.l",//12
|
||||
"finger4-1.l",//13
|
||||
"finger4-2.l",//14
|
||||
"finger4-3.l",//15
|
||||
"endsite_finger4-3.l",//16
|
||||
"finger5-1.l",//17
|
||||
"finger5-2.l",//18
|
||||
"finger5-3.l",//19
|
||||
"endsite_finger5-3.l",//20
|
||||
//--------------------
|
||||
"End of Left Hand Names"
|
||||
};
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @brief This is an array of names for the right hand.
|
||||
* This is a "friendly" array, meaning it is meant to be easy to understand and does not need to exactly correspond to the BVH file..
|
||||
*/
|
||||
|
||||
static const char * COCORightHandFriendlyNames[] =
|
||||
{
|
||||
"Right_Hand_Wrist",//0
|
||||
"Right_Hand_Thumb_1",//1
|
||||
"Right_Hand_Thumb_2", //2
|
||||
"Right_Hand_Thumb_3", //3
|
||||
"Right_Hand_Thumb_4",//4
|
||||
"Right_Hand_Index_1",//5
|
||||
"Right_Hand_Index_2",//6
|
||||
"Right_Hand_Index_3",//7
|
||||
"Right_Hand_Index_4",//8
|
||||
"Right_Hand_Middle_1",//9
|
||||
"Right_Hand_Middle_2",//10
|
||||
"Right_Hand_Middle_3",//11
|
||||
"Right_Hand_Middle_4",//12
|
||||
"Right_Hand_Ring_1",//13
|
||||
"Right_Hand_Ring_2",//14
|
||||
"Right_Hand_Ring_3",//15
|
||||
"Right_Hand_Ring_4",//16
|
||||
"Right_Hand_Pinky_1",//17
|
||||
"Right_Hand_Pinky_2",//18
|
||||
"Right_Hand_Pinky_3",//19
|
||||
"Right_Hand_Pinky_4",//20
|
||||
//--------------------
|
||||
"End of Right Hand Names"
|
||||
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @brief This is an array of names for the right hand.
|
||||
* This tries to mirror rhand_configuration.json and everything used is lowercase exactly for this reason..
|
||||
* it also has to be the same with the bvh file headerWithHeadAndOneMotion.bvh
|
||||
*/
|
||||
static const char * COCORightHandNames[] =
|
||||
{
|
||||
"rhand",//0
|
||||
"rthumb",//1
|
||||
"finger1-2.r", //2
|
||||
"finger1-3.r", //3
|
||||
"endsite_finger1-3.r",//4
|
||||
"finger2-1.r",//5
|
||||
"finger2-2.r",//6
|
||||
"finger2-3.r",//7
|
||||
"endsite_finger2-3.r",//8
|
||||
"finger3-1.r",//9
|
||||
"finger3-2.r",//10
|
||||
"finger3-3.r",//11
|
||||
"endsite_finger3-3.r",//12
|
||||
"finger4-1.r",//13
|
||||
"finger4-2.r",//14
|
||||
"finger4-3.r",//15
|
||||
"endsite_finger4-3.r",//16
|
||||
"finger5-1.r",//17
|
||||
"finger5-2.r",//18
|
||||
"finger5-3.r",//19
|
||||
"endsite_finger5-3.r",//20
|
||||
//--------------------
|
||||
"End of Right Hand Names"
|
||||
};
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @brief An enumerator of COCO Hand joints
|
||||
*/
|
||||
//https://raw.githubusercontent.com/CMU-Perceptual-Computing-Lab/openpose/master/doc/media/keypoints_face.png
|
||||
enum OP_HeadJoints
|
||||
{
|
||||
OP_Head_RChin_0=0, //0
|
||||
OP_Head_RChin_1, //1
|
||||
OP_Head_RChin_2, //2
|
||||
OP_Head_RChin_3, //3
|
||||
OP_Head_RChin_4, //4
|
||||
OP_Head_RChin_5, //5
|
||||
OP_Head_RChin_6, //6
|
||||
OP_Head_RChin_7, //7
|
||||
OP_Head_Chin, //8
|
||||
OP_Head_LChin_7 , //9
|
||||
OP_Head_LChin_6, //10
|
||||
OP_Head_LChin_5, //11
|
||||
OP_Head_LChin_4, //12
|
||||
OP_Head_LChin_3, //13
|
||||
OP_Head_LChin_2, //14
|
||||
OP_Head_LChin_1, //15
|
||||
OP_Head_LChin_0, //16
|
||||
OP_Head_REyebrow_0, //17
|
||||
OP_Head_REyebrow_1, //18
|
||||
OP_Head_REyebrow_2, //19
|
||||
OP_Head_REyebrow_3, //20
|
||||
OP_Head_REyebrow_4, //21
|
||||
OP_Head_LEyebrow_4, //22
|
||||
OP_Head_LEyebrow_3, //23
|
||||
OP_Head_LEyebrow_2, //24
|
||||
OP_Head_LEyebrow_1, //25
|
||||
OP_Head_LEyebrow_0, //26
|
||||
OP_Head_NoseBone_0,//27
|
||||
OP_Head_NoseBone_1,//28
|
||||
OP_Head_NoseBone_2,//29
|
||||
OP_Head_NoseBone_3,//30
|
||||
OP_Head_Nostrills_0,//31
|
||||
OP_Head_Nostrills_1,//32
|
||||
OP_Head_Nostrills_2,//33
|
||||
OP_Head_Nostrills_3,//34
|
||||
OP_Head_Nostrills_4,//35
|
||||
OP_Head_REye_0,//36
|
||||
OP_Head_REye_1,//37
|
||||
OP_Head_REye_2,//38
|
||||
OP_Head_REye_3,//39
|
||||
OP_Head_REye_4,//40
|
||||
OP_Head_REye_5,//41
|
||||
OP_Head_LEye_0,//42
|
||||
OP_Head_LEye_1,//43
|
||||
OP_Head_LEye_2,//44
|
||||
OP_Head_LEye_3,//45
|
||||
OP_Head_LEye_4,//46
|
||||
OP_Head_LEye_5,//47
|
||||
OP_Head_OutMouth_0,//48
|
||||
OP_Head_OutMouth_1,//49
|
||||
OP_Head_OutMouth_2,//50
|
||||
OP_Head_OutMouth_3,//51
|
||||
OP_Head_OutMouth_4,//52
|
||||
OP_Head_OutMouth_5,//53
|
||||
OP_Head_OutMouth_6,//54
|
||||
OP_Head_OutMouth_7,//55
|
||||
OP_Head_OutMouth_8,//56
|
||||
OP_Head_OutMouth_9,//57
|
||||
OP_Head_OutMouth_10,//58
|
||||
OP_Head_OutMouth_11,//59
|
||||
OP_Head_InMouth_0,//60
|
||||
OP_Head_InMouth_1,//61
|
||||
OP_Head_InMouth_2,//62
|
||||
OP_Head_InMouth_3,//63
|
||||
OP_Head_InMouth_4,//64
|
||||
OP_Head_InMouth_5,//65
|
||||
OP_Head_InMouth_6,//66
|
||||
OP_Head_InMouth_7,//67
|
||||
OP_Head_REye,//68
|
||||
OP_Head_LEye,//69
|
||||
//---------------------
|
||||
OP_HEAD_PARTS
|
||||
};
|
||||
|
||||
|
||||
static const char * HeadNames[] =
|
||||
{
|
||||
"Head_RChin_0", //0
|
||||
"Head_RChin_1", //1
|
||||
"Head_RChin_2", //2
|
||||
"Head_RChin_3", //3
|
||||
"Head_RChin_4", //4
|
||||
"Head_RChin_5", //5
|
||||
"Head_RChin_6", //6
|
||||
"Head_RChin_7", //7
|
||||
"Head_Chin", //8
|
||||
"Head_LChin_7", //9
|
||||
"Head_LChin_6", //10
|
||||
"Head_LChin_5", //11
|
||||
"Head_LChin_4", //12
|
||||
"Head_LChin_3", //13
|
||||
"Head_LChin_2", //14
|
||||
"Head_LChin_1", //15
|
||||
"Head_LChin_0", //16
|
||||
"Head_REyebrow_0",//17
|
||||
"Head_REyebrow_1",//18
|
||||
"Head_REyebrow_2",//19
|
||||
"Head_REyebrow_3",//20
|
||||
"Head_REyebrow_4",//21
|
||||
"Head_LEyebrow_4",//22
|
||||
"Head_LEyebrow_3",//23
|
||||
"Head_LEyebrow_2",//24
|
||||
"Head_LEyebrow_1",//25
|
||||
"Head_LEyebrow_0",//26
|
||||
"Head_NoseBone_0",//27
|
||||
"Head_NoseBone_1",//28
|
||||
"Head_NoseBone_2",//29
|
||||
"Head_NoseBone_3",//30
|
||||
"Head_Nostrills_0",//31
|
||||
"Head_Nostrills_1",//32
|
||||
"Head_Nostrills_2",//33
|
||||
"Head_Nostrills_3",//34
|
||||
"Head_Nostrills_4",//35
|
||||
"Head_REye_0",//36
|
||||
"Head_REye_1",//37
|
||||
"Head_REye_2",//38
|
||||
"Head_REye_3",//39
|
||||
"Head_REye_4",//40
|
||||
"Head_REye_5",//41
|
||||
"Head_LEye_0",//42
|
||||
"Head_LEye_1",//43
|
||||
"Head_LEye_2",//44
|
||||
"Head_LEye_3",//45
|
||||
"Head_LEye_4",//46
|
||||
"Head_LEye_5",//47
|
||||
"Head_OutMouth_0",//48
|
||||
"Head_OutMouth_1",//49
|
||||
"Head_OutMouth_2",//50
|
||||
"Head_OutMouth_3",//51
|
||||
"Head_OutMouth_4",//52
|
||||
"Head_OutMouth_5",//53
|
||||
"Head_OutMouth_6",//54
|
||||
"Head_OutMouth_7",//55
|
||||
"Head_OutMouth_8",//56
|
||||
"Head_OutMouth_9",//57
|
||||
"Head_OutMouth_10",//58
|
||||
"Head_OutMouth_11",//59
|
||||
"Head_InMouth_0",//60
|
||||
"Head_InMouth_1",//61
|
||||
"Head_InMouth_2",//62
|
||||
"Head_InMouth_3",//63
|
||||
"Head_InMouth_4",//64
|
||||
"Head_InMouth_5",//65
|
||||
"Head_InMouth_6",//66
|
||||
"Head_InMouth_7",//67
|
||||
"Head_REye",//68
|
||||
"Head_LEye"//69
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @brief A C struct to hold a hand. It contains its 2D points, its 3D points and some flags that signal
|
||||
*/
|
||||
struct handCOCO
|
||||
{
|
||||
int isPopulated;
|
||||
int isLeft;
|
||||
int isRight;
|
||||
|
||||
struct point2D joint2D[COCO_HAND_PARTS];
|
||||
float jointAccuracy[COCO_HAND_PARTS];
|
||||
unsigned int active[COCO_HAND_PARTS];
|
||||
struct point3D joint[COCO_HAND_PARTS];
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief A C struct to hold a hand. It contains its 2D points, its 3D points and some flags that signal
|
||||
*/
|
||||
struct headOP
|
||||
{
|
||||
int isPopulated;
|
||||
struct point2D joint2D[OP_HEAD_PARTS];
|
||||
float jointAccuracy[OP_HEAD_PARTS];
|
||||
unsigned int active[OP_HEAD_PARTS];
|
||||
struct point3D joint[OP_HEAD_PARTS];
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @brief A C struct to hold a body. It contains its 2D points, its 3D points and some flags that signal
|
||||
*/
|
||||
struct body25OP
|
||||
{
|
||||
int isPopulated;
|
||||
struct point2D joint2D[BODY25_PARTS];
|
||||
struct point2D bbox2D[2];
|
||||
|
||||
float jointAccuracy[BODY25_PARTS];
|
||||
unsigned int active[BODY25_PARTS];
|
||||
struct point3D joint[BODY25_PARTS];
|
||||
struct point3D bbox[8];
|
||||
};
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @brief A C struct to hold a skeleton. It contains its 2D points, its 3D points and some flags that signal
|
||||
*/
|
||||
struct skeletonStructure
|
||||
{
|
||||
unsigned int observationNumber , observationTotal;
|
||||
unsigned int userID;
|
||||
unsigned int totalUsersPresent;
|
||||
//------------------------
|
||||
struct body25OP body;
|
||||
struct handCOCO leftHand;
|
||||
struct handCOCO rightHand;
|
||||
struct headOP head;
|
||||
//------------------------
|
||||
struct boundingBox bbox2D;
|
||||
};
|
||||
|
||||
|
||||
struct headerField
|
||||
{
|
||||
unsigned int strLength;
|
||||
char * str;
|
||||
};
|
||||
|
||||
|
||||
struct bodyField
|
||||
{
|
||||
float value;
|
||||
};
|
||||
|
||||
|
||||
struct skeletonSerialized
|
||||
{
|
||||
unsigned int skeletonHeaderElements;
|
||||
struct headerField skeletonHeader[512];
|
||||
|
||||
unsigned int skeletonBodyElements;
|
||||
struct bodyField skeletonBody[512];
|
||||
|
||||
float width;
|
||||
float height;
|
||||
};
|
||||
|
||||
|
||||
static void printSkeletonSerialized(const char * msg, struct skeletonSerialized * sk )
|
||||
{
|
||||
if (msg!=0)
|
||||
{
|
||||
fprintf(stderr,"printSkeletonSerialized (%s)\n",msg);
|
||||
}
|
||||
|
||||
if (sk==0)
|
||||
{
|
||||
fprintf(stderr,"struct skeletonSerialized that was given as input is not allocated\n");
|
||||
return;
|
||||
}
|
||||
|
||||
if (sk->skeletonHeaderElements != sk->skeletonBodyElements)
|
||||
{
|
||||
fprintf(stderr,"struct skeletonSerialized is corrupted since it has a different number of head and body records..\n");
|
||||
return;
|
||||
}
|
||||
|
||||
fprintf(stderr,"Serialization has %u elements\n",sk->skeletonHeaderElements);
|
||||
for (unsigned int skID = 0; skID<sk->skeletonHeaderElements; skID++)
|
||||
{
|
||||
if (sk->skeletonHeader[skID].str==0)
|
||||
{
|
||||
fprintf(stderr," Serial #%u has an empty label => % 0.2f \n" ,skID , sk->skeletonBody[skID].value);
|
||||
} else
|
||||
{
|
||||
fprintf(stderr," %s => % 0.2f \n" ,sk->skeletonHeader[skID].str , sk->skeletonBody[skID].value);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,827 @@
|
||||
#include "conversions.hpp"
|
||||
|
||||
#include <string.h>
|
||||
#include <vector>
|
||||
#include "../tools.hpp"
|
||||
#include "bvh.hpp"
|
||||
|
||||
#include "csvRead.hpp"
|
||||
#include "../../../../dependencies/RGBDAcquisition/tools/AmMatrix/matrix4x4Tools.h"
|
||||
|
||||
#define NORMAL "\033[0m"
|
||||
#define BLACK "\033[30m" /* Black */
|
||||
#define RED "\033[31m" /* Red */
|
||||
#define GREEN "\033[32m" /* Green */
|
||||
#define YELLOW "\033[33m" /* Yellow */
|
||||
|
||||
|
||||
int appendVectorToFile(const char * filename, std::vector<float> vec)
|
||||
{
|
||||
FILE * fp = fopen(filename,"a");
|
||||
if (fp!=0)
|
||||
{
|
||||
for (unsigned int i=0; i<vec.size(); i++)
|
||||
{
|
||||
if (i!=0) { fprintf(fp,","); }
|
||||
fprintf(fp,"%f",vec[i]);
|
||||
}
|
||||
fprintf(fp,"\n");
|
||||
fclose(fp);
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
int initializeAssociationsForSubsetOfSkeleton(unsigned int * targetIndexIsInitializedFlag,unsigned int * targetIndexes,unsigned int targetLength,const char * * targetLabels,struct skeletonSerialized * input)
|
||||
{
|
||||
//int i=0,z=0;
|
||||
|
||||
for (unsigned int i=0; i<targetLength; i++)
|
||||
{
|
||||
targetIndexes[i]=666;
|
||||
}
|
||||
|
||||
|
||||
char targetLabelLowercase[513]={0};
|
||||
for (unsigned int i=0; i<targetLength; i++)
|
||||
{
|
||||
convertStringToLowercase(targetLabelLowercase,512,targetLabels[i]);
|
||||
|
||||
for (unsigned int z=0; z<input->skeletonHeaderElements; z++)
|
||||
{
|
||||
if (input->skeletonHeader[z].str!=0)
|
||||
{
|
||||
if (strcmp(input->skeletonHeader[z].str,targetLabelLowercase)==0)
|
||||
{
|
||||
if (targetIndexes[i]==666)
|
||||
{
|
||||
targetIndexes[i]=z;
|
||||
fprintf(stderr,GREEN "%s==%s\n" NORMAL,input->skeletonHeader[z].str,targetLabelLowercase);
|
||||
} else
|
||||
{
|
||||
fprintf(stderr,YELLOW "%s==%s multiple times, only keeping first association..\n" NORMAL,input->skeletonHeader[z].str,targetLabelLowercase);
|
||||
}
|
||||
} //We have a matching string..
|
||||
} //There is a string to compare
|
||||
}
|
||||
}
|
||||
|
||||
unsigned int unassociatedJoints=0;
|
||||
for (unsigned int i=0; i<targetLength; i++)
|
||||
{
|
||||
if ( targetIndexes[i]==666 ) {
|
||||
++unassociatedJoints;
|
||||
fprintf(stderr,RED "Joint %s(%u) is not associated\n" NORMAL,targetLabels[i],i);
|
||||
} else
|
||||
{ fprintf(stderr,GREEN "Joint %s(%u) associated\n" NORMAL,targetLabels[i],i); }
|
||||
}
|
||||
|
||||
*targetIndexIsInitializedFlag=(unassociatedJoints==0);
|
||||
|
||||
return (unassociatedJoints==0);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
std::vector<float> deriveMocapNET2InputUsingAssociations(struct MocapNET2 * mnet,struct skeletonSerialized * input,unsigned int * targetIndexIsInitializedFlag,unsigned int * targetIndexes,unsigned int targetLength,const char * * targetLabels,int verbose)
|
||||
{
|
||||
std::vector<float> result;
|
||||
|
||||
if (mnet->indexesPopulated)
|
||||
{
|
||||
|
||||
if (! *targetIndexIsInitializedFlag)
|
||||
{
|
||||
fprintf(stderr,RED "deriveMocapNET2InputUsingAssociations called without initialization\n" NORMAL);
|
||||
|
||||
initializeAssociationsForSubsetOfSkeleton(
|
||||
targetIndexIsInitializedFlag,
|
||||
targetIndexes,
|
||||
targetLength,
|
||||
targetLabels,
|
||||
input
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
for (int i=0; i<targetLength; i++)
|
||||
{
|
||||
if (verbose) { fprintf(stderr,"%s = %0.2f -> %s \n" , input->skeletonHeader[targetIndexes[i]].str , input->skeletonBody[targetIndexes[i]].value ,targetLabels[i]); }
|
||||
result.push_back(input->skeletonBody[targetIndexes[i]].value);
|
||||
}
|
||||
} else
|
||||
{
|
||||
fprintf(stderr,RED "initializeAssociationsForSubsetOfSkeleton has to be run at initialization before deriveMocapNET2InputUsingAssociations\n");
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
int convertSkeletons2DDetectedToSkeletonsSerialized(
|
||||
struct skeletonSerialized * output,
|
||||
struct Skeletons2DDetected * input,
|
||||
unsigned int frameNumber,
|
||||
unsigned int width,
|
||||
unsigned int height
|
||||
)
|
||||
{
|
||||
int check;
|
||||
if (output->skeletonHeaderElements==0)
|
||||
{
|
||||
//Brand new header that needs to be populated..!
|
||||
int elementsPopulated=3;
|
||||
output->skeletonHeader[0].strLength = 12;
|
||||
output->skeletonHeader[0].str=(char *) malloc(sizeof(char) * output->skeletonHeader[0].strLength);
|
||||
snprintf(output->skeletonHeader[0].str,output->skeletonHeader[0].strLength,"frameNumber");
|
||||
|
||||
output->skeletonHeader[1].strLength = 11;
|
||||
output->skeletonHeader[1].str=(char *) malloc(sizeof(char) * output->skeletonHeader[1].strLength);
|
||||
snprintf(output->skeletonHeader[1].str,output->skeletonHeader[1].strLength,"skeletonID");
|
||||
|
||||
output->skeletonHeader[2].strLength = 15;
|
||||
output->skeletonHeader[2].str=(char *) malloc(sizeof(char) * output->skeletonHeader[2].strLength);
|
||||
snprintf(output->skeletonHeader[2].str,output->skeletonHeader[2].strLength,"totalSkeletons");
|
||||
|
||||
char lowercaseName[512]={0};
|
||||
|
||||
for (int i=0; i<BODY25_PARTS; i++)
|
||||
{
|
||||
convertStringToLowercase(lowercaseName,512,Body25BodyNames[i]);
|
||||
//--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
output->skeletonHeader[elementsPopulated].strLength= strlen(lowercaseName)+5;
|
||||
output->skeletonHeader[elementsPopulated].str = ( char* ) malloc( sizeof(char) * output->skeletonHeader[elementsPopulated].strLength);
|
||||
if (output->skeletonHeader[elementsPopulated].str!=0)
|
||||
{
|
||||
check = snprintf(
|
||||
output->skeletonHeader[elementsPopulated].str ,
|
||||
output->skeletonHeader[elementsPopulated].strLength,
|
||||
"2dx_%s",
|
||||
lowercaseName
|
||||
);
|
||||
if (check<0) { return 0; }
|
||||
} else { return 0; }
|
||||
++elementsPopulated;
|
||||
//--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
output->skeletonHeader[elementsPopulated].strLength= strlen(lowercaseName)+5;
|
||||
output->skeletonHeader[elementsPopulated].str = ( char* ) malloc( sizeof(char) * output->skeletonHeader[elementsPopulated].strLength);
|
||||
if (output->skeletonHeader[elementsPopulated].str!=0)
|
||||
{
|
||||
check = snprintf(
|
||||
output->skeletonHeader[elementsPopulated].str ,
|
||||
output->skeletonHeader[elementsPopulated].strLength,
|
||||
"2dy_%s",
|
||||
lowercaseName
|
||||
);
|
||||
if (check<0) { return 0; }
|
||||
} else { return 0; }
|
||||
++elementsPopulated;
|
||||
//--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
output->skeletonHeader[elementsPopulated].strLength= strlen(lowercaseName)+9;
|
||||
output->skeletonHeader[elementsPopulated].str = ( char* ) malloc( sizeof(char) * output->skeletonHeader[elementsPopulated].strLength);
|
||||
if (output->skeletonHeader[elementsPopulated].str!=0)
|
||||
{
|
||||
check = snprintf(
|
||||
output->skeletonHeader[elementsPopulated].str ,
|
||||
output->skeletonHeader[elementsPopulated].strLength,
|
||||
"visible_%s",
|
||||
lowercaseName
|
||||
);
|
||||
if (check<0) { return 0; }
|
||||
} else { return 0; }
|
||||
++elementsPopulated;
|
||||
//--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
}
|
||||
|
||||
for (int i=0; i<COCO_HAND_PARTS; i++)
|
||||
{
|
||||
convertStringToLowercase(lowercaseName,512,COCOLeftHandNames[i]);
|
||||
//--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
output->skeletonHeader[elementsPopulated].strLength= strlen(lowercaseName)+5;
|
||||
output->skeletonHeader[elementsPopulated].str = ( char* ) malloc( sizeof(char) * output->skeletonHeader[elementsPopulated].strLength);
|
||||
if (output->skeletonHeader[elementsPopulated].str!=0)
|
||||
{
|
||||
check = snprintf(
|
||||
output->skeletonHeader[elementsPopulated].str ,
|
||||
output->skeletonHeader[elementsPopulated].strLength,
|
||||
"2dx_%s",
|
||||
lowercaseName
|
||||
);
|
||||
if (check<0) { return 0; }
|
||||
} else { return 0; }
|
||||
++elementsPopulated;
|
||||
//--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
output->skeletonHeader[elementsPopulated].strLength= strlen(lowercaseName)+5;
|
||||
output->skeletonHeader[elementsPopulated].str = ( char* ) malloc( sizeof(char) * output->skeletonHeader[elementsPopulated].strLength);
|
||||
if (output->skeletonHeader[elementsPopulated].str!=0)
|
||||
{
|
||||
check = snprintf(
|
||||
output->skeletonHeader[elementsPopulated].str ,
|
||||
output->skeletonHeader[elementsPopulated].strLength,
|
||||
"2dy_%s",
|
||||
lowercaseName
|
||||
);
|
||||
if (check<0) { return 0; }
|
||||
} else { return 0; }
|
||||
++elementsPopulated;
|
||||
//--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
output->skeletonHeader[elementsPopulated].strLength= strlen(lowercaseName)+9;
|
||||
output->skeletonHeader[elementsPopulated].str = ( char* ) malloc( sizeof(char) * output->skeletonHeader[elementsPopulated].strLength);
|
||||
if (output->skeletonHeader[elementsPopulated].str!=0)
|
||||
{
|
||||
check = snprintf(
|
||||
output->skeletonHeader[elementsPopulated].str ,
|
||||
output->skeletonHeader[elementsPopulated].strLength,
|
||||
"visible_%s",
|
||||
lowercaseName
|
||||
);
|
||||
if (check<0) { return 0; }
|
||||
} else { return 0; }
|
||||
++elementsPopulated;
|
||||
//--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
}
|
||||
|
||||
for (int i=0; i<COCO_HAND_PARTS; i++)
|
||||
{
|
||||
convertStringToLowercase(lowercaseName,512,COCORightHandNames[i]);
|
||||
//--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
output->skeletonHeader[elementsPopulated].strLength= strlen(lowercaseName)+5;
|
||||
output->skeletonHeader[elementsPopulated].str = ( char* ) malloc( sizeof(char) * output->skeletonHeader[elementsPopulated].strLength);
|
||||
if (output->skeletonHeader[elementsPopulated].str!=0)
|
||||
{
|
||||
check = snprintf(
|
||||
output->skeletonHeader[elementsPopulated].str ,
|
||||
output->skeletonHeader[elementsPopulated].strLength,
|
||||
"2dx_%s",
|
||||
lowercaseName
|
||||
);
|
||||
if (check<0) { return 0; }
|
||||
} else { return 0; }
|
||||
++elementsPopulated;
|
||||
//--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
output->skeletonHeader[elementsPopulated].strLength= strlen(lowercaseName)+5;
|
||||
output->skeletonHeader[elementsPopulated].str = ( char* ) malloc( sizeof(char) * output->skeletonHeader[elementsPopulated].strLength);
|
||||
if (output->skeletonHeader[elementsPopulated].str!=0)
|
||||
{
|
||||
check = snprintf(
|
||||
output->skeletonHeader[elementsPopulated].str ,
|
||||
output->skeletonHeader[elementsPopulated].strLength,
|
||||
"2dy_%s",
|
||||
lowercaseName
|
||||
);
|
||||
if (check<0) { return 0; }
|
||||
} else { return 0; }
|
||||
++elementsPopulated;
|
||||
//--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
output->skeletonHeader[elementsPopulated].strLength= strlen(lowercaseName)+9;
|
||||
output->skeletonHeader[elementsPopulated].str = ( char* ) malloc( sizeof(char) * output->skeletonHeader[elementsPopulated].strLength);
|
||||
if (output->skeletonHeader[elementsPopulated].str!=0)
|
||||
{
|
||||
check = snprintf(
|
||||
output->skeletonHeader[elementsPopulated].str ,
|
||||
output->skeletonHeader[elementsPopulated].strLength,
|
||||
"visible_%s",
|
||||
lowercaseName
|
||||
);
|
||||
if (check<0) { return 0; }
|
||||
} else { return 0; }
|
||||
++elementsPopulated;
|
||||
//--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
}
|
||||
|
||||
for (int i=0; i<OP_HEAD_PARTS; i++)
|
||||
{
|
||||
convertStringToLowercase(lowercaseName,512,HeadNames[i]);
|
||||
//--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
output->skeletonHeader[elementsPopulated].strLength= strlen(lowercaseName)+5;
|
||||
output->skeletonHeader[elementsPopulated].str = ( char* ) malloc( sizeof(char) * output->skeletonHeader[elementsPopulated].strLength);
|
||||
if (output->skeletonHeader[elementsPopulated].str!=0)
|
||||
{
|
||||
check = snprintf(
|
||||
output->skeletonHeader[elementsPopulated].str ,
|
||||
output->skeletonHeader[elementsPopulated].strLength,
|
||||
"2dx_%s",
|
||||
lowercaseName
|
||||
);
|
||||
if (check<0) { return 0; }
|
||||
} else { return 0; }
|
||||
++elementsPopulated;
|
||||
//--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
output->skeletonHeader[elementsPopulated].strLength= strlen(lowercaseName)+5;
|
||||
output->skeletonHeader[elementsPopulated].str = ( char* ) malloc( sizeof(char) * output->skeletonHeader[elementsPopulated].strLength);
|
||||
if (output->skeletonHeader[elementsPopulated].str!=0)
|
||||
{
|
||||
check = snprintf(
|
||||
output->skeletonHeader[elementsPopulated].str ,
|
||||
output->skeletonHeader[elementsPopulated].strLength,
|
||||
"2dy_%s",
|
||||
lowercaseName
|
||||
);
|
||||
if (check<0) { return 0; }
|
||||
} else { return 0; }
|
||||
++elementsPopulated;
|
||||
//--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
output->skeletonHeader[elementsPopulated].strLength= strlen(lowercaseName)+9;
|
||||
output->skeletonHeader[elementsPopulated].str = ( char* ) malloc( sizeof(char) * output->skeletonHeader[elementsPopulated].strLength);
|
||||
if (output->skeletonHeader[elementsPopulated].str!=0)
|
||||
{
|
||||
check = snprintf(
|
||||
output->skeletonHeader[elementsPopulated].str ,
|
||||
output->skeletonHeader[elementsPopulated].strLength,
|
||||
"visible_%s",
|
||||
lowercaseName
|
||||
);
|
||||
if (check<0) { return 0; }
|
||||
} else { return 0; }
|
||||
++elementsPopulated;
|
||||
//--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
}
|
||||
output->skeletonHeaderElements = elementsPopulated;
|
||||
}
|
||||
// Reduce spam
|
||||
// else
|
||||
//{
|
||||
// fprintf(stderr,"SkeletonSerialized appears to be already populated, skipping re allocating everything..\n");
|
||||
//}
|
||||
|
||||
|
||||
//=================================================================================
|
||||
//=================================================================================
|
||||
//=================================================================================
|
||||
//=================================================================================
|
||||
//=================================================================================
|
||||
// Now to convert the values..
|
||||
//=================================================================================
|
||||
//=================================================================================
|
||||
//=================================================================================
|
||||
//=================================================================================
|
||||
//=================================================================================
|
||||
|
||||
output->skeletonBodyElements = output->skeletonHeaderElements;
|
||||
|
||||
//Points will be normalized using normalize2DPointWhileAlsoMatchingTrainingAspectRatio
|
||||
output->width = 1.0;
|
||||
output->height = 1.0;
|
||||
|
||||
for (unsigned int skID=0; skID<input->numberOfSkeletonsDetected; skID++)
|
||||
{
|
||||
int bodyElementsPopulated=3;
|
||||
output->skeletonBody[0].value = frameNumber;
|
||||
output->skeletonBody[1].value = skID;
|
||||
output->skeletonBody[2].value = input->numberOfSkeletonsDetected;
|
||||
|
||||
for (int i=0; i<BODY25_PARTS; i++)
|
||||
{
|
||||
//Normalize targets --------------------------------------------------------------
|
||||
normalize2DPointWhileAlsoMatchingTrainingAspectRatio(
|
||||
&input->skeletons[skID].body.joint2D[i].x,
|
||||
&input->skeletons[skID].body.joint2D[i].y,
|
||||
width,
|
||||
height,
|
||||
1,//Respect training aspect ratio
|
||||
MocapNETTrainingWidth,
|
||||
MocapNETTrainingHeight
|
||||
);
|
||||
//--------------------------------------------------------------------------------
|
||||
output->skeletonBody[bodyElementsPopulated].value = (float) input->skeletons[skID].body.joint2D[i].x;
|
||||
++bodyElementsPopulated;
|
||||
|
||||
output->skeletonBody[bodyElementsPopulated].value = (float) input->skeletons[skID].body.joint2D[i].y;
|
||||
++bodyElementsPopulated;
|
||||
|
||||
output->skeletonBody[bodyElementsPopulated].value = ( (input->skeletons[skID].body.joint2D[i].x!=0) && (input->skeletons[skID].body.joint2D[i].y!=0) ) ;
|
||||
/*
|
||||
if (!output->skeletonBody[bodyElementsPopulated].value)
|
||||
{
|
||||
fprintf(stderr,"%s not populated.. \n" ,Body25BodyNames[i]);
|
||||
}*/
|
||||
++bodyElementsPopulated;
|
||||
//--------------------------------------------------------------------------------
|
||||
}
|
||||
|
||||
|
||||
for (int i=0; i<COCO_HAND_PARTS; i++)
|
||||
{
|
||||
//Normalize targets --------------------------------------------------------------
|
||||
normalize2DPointWhileAlsoMatchingTrainingAspectRatio(
|
||||
&input->skeletons[skID].leftHand.joint2D[i].x,
|
||||
&input->skeletons[skID].leftHand.joint2D[i].y,
|
||||
width,
|
||||
height,
|
||||
1,//Respect training aspect ratio
|
||||
MocapNETTrainingWidth,
|
||||
MocapNETTrainingHeight
|
||||
);
|
||||
//--------------------------------------------------------------------------------
|
||||
output->skeletonBody[bodyElementsPopulated].value = (float) input->skeletons[skID].leftHand.joint2D[i].x;
|
||||
++bodyElementsPopulated;
|
||||
|
||||
output->skeletonBody[bodyElementsPopulated].value = (float) input->skeletons[skID].leftHand.joint2D[i].y;
|
||||
++bodyElementsPopulated;
|
||||
|
||||
output->skeletonBody[bodyElementsPopulated].value =( (input->skeletons[skID].leftHand.joint2D[i].x!=0) && (input->skeletons[skID].leftHand.joint2D[i].y!=0) ) ;
|
||||
++bodyElementsPopulated;
|
||||
//--------------------------------------------------------------------------------
|
||||
}
|
||||
|
||||
|
||||
for (int i=0; i<COCO_HAND_PARTS; i++)
|
||||
{
|
||||
//Normalize targets --------------------------------------------------------------
|
||||
normalize2DPointWhileAlsoMatchingTrainingAspectRatio(
|
||||
&input->skeletons[skID].rightHand.joint2D[i].x,
|
||||
&input->skeletons[skID].rightHand.joint2D[i].y,
|
||||
width,
|
||||
height,
|
||||
1,//Respect training aspect ratio
|
||||
MocapNETTrainingWidth,
|
||||
MocapNETTrainingHeight
|
||||
);
|
||||
//--------------------------------------------------------------------------------
|
||||
output->skeletonBody[bodyElementsPopulated].value = input->skeletons[skID].rightHand.joint2D[i].x;
|
||||
++bodyElementsPopulated;
|
||||
|
||||
output->skeletonBody[bodyElementsPopulated].value = input->skeletons[skID].rightHand.joint2D[i].y;
|
||||
++bodyElementsPopulated;
|
||||
|
||||
output->skeletonBody[bodyElementsPopulated].value = ( (input->skeletons[skID].rightHand.joint2D[i].x!=0) && (input->skeletons[skID].rightHand.joint2D[i].y!=0) );
|
||||
++bodyElementsPopulated;
|
||||
//--------------------------------------------------------------------------------
|
||||
}
|
||||
|
||||
for (int i=0; i<OP_HEAD_PARTS; i++)
|
||||
{
|
||||
//Normalize targets --------------------------------------------------------------
|
||||
normalize2DPointWhileAlsoMatchingTrainingAspectRatio(
|
||||
&input->skeletons[skID].head.joint2D[i].x,
|
||||
&input->skeletons[skID].head.joint2D[i].y,
|
||||
width,
|
||||
height,
|
||||
1,//Respect training aspect ratio
|
||||
MocapNETTrainingWidth,
|
||||
MocapNETTrainingHeight
|
||||
);
|
||||
//--------------------------------------------------------------------------------
|
||||
output->skeletonBody[bodyElementsPopulated].value = (float) input->skeletons[skID].head.joint2D[i].x;
|
||||
++bodyElementsPopulated;
|
||||
|
||||
output->skeletonBody[bodyElementsPopulated].value = (float) input->skeletons[skID].head.joint2D[i].y;
|
||||
++bodyElementsPopulated;
|
||||
|
||||
output->skeletonBody[bodyElementsPopulated].value = ( (input->skeletons[skID].head.joint2D[i].x!=0) && (input->skeletons[skID].head.joint2D[i].y!=0) );
|
||||
++bodyElementsPopulated;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
int convertMocapNET2OutputToSkeletonSerialized(
|
||||
struct MocapNET2 * mnet,
|
||||
struct skeletonSerialized * output,
|
||||
std::vector<std::vector<float> > mocapNET2DPointsResult,
|
||||
unsigned int frameNumber,
|
||||
unsigned int width,
|
||||
unsigned int height
|
||||
)
|
||||
{
|
||||
if (mocapNET2DPointsResult.size()==0)
|
||||
{
|
||||
fprintf(stderr,"convertMocapNET2OutputToSkeletonSerialized cannot work without 3D point results\n");
|
||||
return 0;
|
||||
}
|
||||
struct Skeletons2DDetected input={0};
|
||||
|
||||
input.numberOfSkeletonsDetected=1;
|
||||
input.skeletons[0].body.joint2D[BODY25_Nose].x = mocapNET2DPointsResult[MOCAPNET_JOINT_ORIS05][0];
|
||||
input.skeletons[0].body.joint2D[BODY25_Nose].y = mocapNET2DPointsResult[MOCAPNET_JOINT_ORIS05][1];
|
||||
|
||||
input.skeletons[0].body.joint2D[BODY25_Neck].x = mocapNET2DPointsResult[MOCAPNET_JOINT_NECK][0];
|
||||
input.skeletons[0].body.joint2D[BODY25_Neck].y = mocapNET2DPointsResult[MOCAPNET_JOINT_NECK][1];
|
||||
|
||||
input.skeletons[0].body.joint2D[BODY25_RShoulder].x = mocapNET2DPointsResult[MOCAPNET_JOINT_RSHOULDER][0];
|
||||
input.skeletons[0].body.joint2D[BODY25_RShoulder].y = mocapNET2DPointsResult[MOCAPNET_JOINT_RSHOULDER][1];
|
||||
|
||||
input.skeletons[0].body.joint2D[BODY25_RElbow].x = mocapNET2DPointsResult[MOCAPNET_JOINT_RELBOW][0];
|
||||
input.skeletons[0].body.joint2D[BODY25_RElbow].y = mocapNET2DPointsResult[MOCAPNET_JOINT_RELBOW][1];
|
||||
|
||||
input.skeletons[0].body.joint2D[BODY25_RWrist].x = mocapNET2DPointsResult[MOCAPNET_JOINT_RHAND][0];
|
||||
input.skeletons[0].body.joint2D[BODY25_RWrist].y = mocapNET2DPointsResult[MOCAPNET_JOINT_RHAND][1];
|
||||
|
||||
input.skeletons[0].body.joint2D[BODY25_LShoulder].x = mocapNET2DPointsResult[MOCAPNET_JOINT_LSHOULDER][0];
|
||||
input.skeletons[0].body.joint2D[BODY25_LShoulder].y = mocapNET2DPointsResult[MOCAPNET_JOINT_LSHOULDER][1];
|
||||
|
||||
input.skeletons[0].body.joint2D[BODY25_LElbow].x = mocapNET2DPointsResult[MOCAPNET_JOINT_LELBOW][0];
|
||||
input.skeletons[0].body.joint2D[BODY25_LElbow].y = mocapNET2DPointsResult[MOCAPNET_JOINT_LELBOW][1];
|
||||
|
||||
input.skeletons[0].body.joint2D[BODY25_LWrist].x = mocapNET2DPointsResult[MOCAPNET_JOINT_LHAND][0];
|
||||
input.skeletons[0].body.joint2D[BODY25_LWrist].y = mocapNET2DPointsResult[MOCAPNET_JOINT_LHAND][1];
|
||||
|
||||
input.skeletons[0].body.joint2D[BODY25_MidHip].x = mocapNET2DPointsResult[MOCAPNET_JOINT_HIP][0];
|
||||
input.skeletons[0].body.joint2D[BODY25_MidHip].y = mocapNET2DPointsResult[MOCAPNET_JOINT_HIP][1];
|
||||
|
||||
input.skeletons[0].body.joint2D[BODY25_RHip].x = mocapNET2DPointsResult[MOCAPNET_JOINT_RHIP][0];
|
||||
input.skeletons[0].body.joint2D[BODY25_RHip].y = mocapNET2DPointsResult[MOCAPNET_JOINT_RHIP][1];
|
||||
|
||||
input.skeletons[0].body.joint2D[BODY25_RKnee].x = mocapNET2DPointsResult[MOCAPNET_JOINT_RKNEE][0];
|
||||
input.skeletons[0].body.joint2D[BODY25_RKnee].y = mocapNET2DPointsResult[MOCAPNET_JOINT_RKNEE][1];
|
||||
|
||||
input.skeletons[0].body.joint2D[BODY25_RAnkle].x = mocapNET2DPointsResult[MOCAPNET_JOINT_RFOOT][0];
|
||||
input.skeletons[0].body.joint2D[BODY25_RAnkle].y = mocapNET2DPointsResult[MOCAPNET_JOINT_RFOOT][1];
|
||||
|
||||
input.skeletons[0].body.joint2D[BODY25_LHip].x = mocapNET2DPointsResult[MOCAPNET_JOINT_LHIP][0];
|
||||
input.skeletons[0].body.joint2D[BODY25_LHip].y = mocapNET2DPointsResult[MOCAPNET_JOINT_LHIP][1];
|
||||
|
||||
input.skeletons[0].body.joint2D[BODY25_LKnee].x = mocapNET2DPointsResult[MOCAPNET_JOINT_LKNEE][0];
|
||||
input.skeletons[0].body.joint2D[BODY25_LKnee].y = mocapNET2DPointsResult[MOCAPNET_JOINT_LKNEE][1];
|
||||
|
||||
input.skeletons[0].body.joint2D[BODY25_LAnkle].x = mocapNET2DPointsResult[MOCAPNET_JOINT_LFOOT][0];
|
||||
input.skeletons[0].body.joint2D[BODY25_LAnkle].y = mocapNET2DPointsResult[MOCAPNET_JOINT_LFOOT][1];
|
||||
|
||||
input.skeletons[0].body.joint2D[BODY25_REye].x = mocapNET2DPointsResult[MOCAPNET_JOINT_EYE_R][0];
|
||||
input.skeletons[0].body.joint2D[BODY25_REye].y = mocapNET2DPointsResult[MOCAPNET_JOINT_EYE_R][1];
|
||||
|
||||
input.skeletons[0].body.joint2D[BODY25_LEye].x = mocapNET2DPointsResult[MOCAPNET_JOINT_EYE_L][0];
|
||||
input.skeletons[0].body.joint2D[BODY25_LEye].y = mocapNET2DPointsResult[MOCAPNET_JOINT_EYE_L][1];
|
||||
|
||||
input.skeletons[0].body.joint2D[BODY25_REar].x = mocapNET2DPointsResult[MOCAPNET_JOINT_TEMPORALIS02_R][0];
|
||||
input.skeletons[0].body.joint2D[BODY25_REar].y = mocapNET2DPointsResult[MOCAPNET_JOINT_TEMPORALIS02_R][1];
|
||||
input.skeletons[0].body.joint2D[BODY25_LEar].x = mocapNET2DPointsResult[MOCAPNET_JOINT_TEMPORALIS02_L][0];
|
||||
input.skeletons[0].body.joint2D[BODY25_LEar].y = mocapNET2DPointsResult[MOCAPNET_JOINT_TEMPORALIS02_L][1];
|
||||
|
||||
input.skeletons[0].body.joint2D[BODY25_LBigToe].x = mocapNET2DPointsResult[MOCAPNET_JOINT_ENDSITE_TOE1_2_L][0];
|
||||
input.skeletons[0].body.joint2D[BODY25_LBigToe].y = mocapNET2DPointsResult[MOCAPNET_JOINT_ENDSITE_TOE1_2_L][1];
|
||||
input.skeletons[0].body.joint2D[BODY25_LSmallToe].x = mocapNET2DPointsResult[MOCAPNET_JOINT_ENDSITE_TOE5_3_L][0];
|
||||
input.skeletons[0].body.joint2D[BODY25_LSmallToe].y = mocapNET2DPointsResult[MOCAPNET_JOINT_ENDSITE_TOE5_3_L][1];
|
||||
input.skeletons[0].body.joint2D[BODY25_LHeel].x = mocapNET2DPointsResult[MOCAPNET_JOINT_LFOOT][0];
|
||||
input.skeletons[0].body.joint2D[BODY25_LHeel].y = mocapNET2DPointsResult[MOCAPNET_JOINT_LFOOT][1];
|
||||
|
||||
|
||||
input.skeletons[0].body.joint2D[BODY25_RBigToe].x = mocapNET2DPointsResult[MOCAPNET_JOINT_ENDSITE_TOE1_2_R][0];
|
||||
input.skeletons[0].body.joint2D[BODY25_RBigToe].y = mocapNET2DPointsResult[MOCAPNET_JOINT_ENDSITE_TOE1_2_R][1];
|
||||
input.skeletons[0].body.joint2D[BODY25_RSmallToe].x = mocapNET2DPointsResult[MOCAPNET_JOINT_ENDSITE_TOE5_3_R][0];
|
||||
input.skeletons[0].body.joint2D[BODY25_RSmallToe].y = mocapNET2DPointsResult[MOCAPNET_JOINT_ENDSITE_TOE5_3_R][1];
|
||||
input.skeletons[0].body.joint2D[BODY25_RHeel].x = mocapNET2DPointsResult[MOCAPNET_JOINT_RFOOT][0];
|
||||
input.skeletons[0].body.joint2D[BODY25_RHeel].y = mocapNET2DPointsResult[MOCAPNET_JOINT_RFOOT][1];
|
||||
//Dont forget to update convertBodySkeletonSerializedToBVHTransform
|
||||
|
||||
|
||||
//Populate right hand
|
||||
input.skeletons[0].rightHand.joint2D[COCO_Hand_Wrist].x = mocapNET2DPointsResult[MOCAPNET_JOINT_RHAND][0]; //MOCAPNET_OUTPUT_JOINT_RHAND
|
||||
input.skeletons[0].rightHand.joint2D[COCO_Hand_Wrist].y = mocapNET2DPointsResult[MOCAPNET_JOINT_RHAND][1]; //MOCAPNET_OUTPUT_JOINT_RHAND
|
||||
//---------------------------------------------------------------------------------
|
||||
input.skeletons[0].rightHand.joint2D[COCO_Hand_Thumb_1].x = mocapNET2DPointsResult[MOCAPNET_JOINT_RTHUMB][0]; //MOCAPNET_OUTPUT_JOINT_RTHUMB
|
||||
input.skeletons[0].rightHand.joint2D[COCO_Hand_Thumb_1].y = mocapNET2DPointsResult[MOCAPNET_JOINT_RTHUMB][1]; //MOCAPNET_OUTPUT_JOINT_RTHUMB
|
||||
input.skeletons[0].rightHand.joint2D[COCO_Hand_Thumb_2].x = mocapNET2DPointsResult[MOCAPNET_JOINT_FINGER1_2_R][0]; //MOCAPNET_OUTPUT_JOINT_RTHUMB
|
||||
input.skeletons[0].rightHand.joint2D[COCO_Hand_Thumb_2].y = mocapNET2DPointsResult[MOCAPNET_JOINT_FINGER1_2_R][1]; //MOCAPNET_OUTPUT_JOINT_RTHUMB
|
||||
input.skeletons[0].rightHand.joint2D[COCO_Hand_Thumb_3].x = mocapNET2DPointsResult[MOCAPNET_JOINT_FINGER1_3_R][0]; //MOCAPNET_OUTPUT_JOINT_FINGER1_2_R
|
||||
input.skeletons[0].rightHand.joint2D[COCO_Hand_Thumb_3].y = mocapNET2DPointsResult[MOCAPNET_JOINT_FINGER1_3_R][1]; //MOCAPNET_OUTPUT_JOINT_FINGER1_2_R
|
||||
input.skeletons[0].rightHand.joint2D[COCO_Hand_Thumb_4].x = mocapNET2DPointsResult[MOCAPNET_JOINT_ENDSITE_FINGER1_3_R][0]; //MOCAPNET_OUTPUT_JOINT_FINGER1_3_R
|
||||
input.skeletons[0].rightHand.joint2D[COCO_Hand_Thumb_4].y = mocapNET2DPointsResult[MOCAPNET_JOINT_ENDSITE_FINGER1_3_R][1]; //MOCAPNET_OUTPUT_JOINT_FINGER1_3_R
|
||||
//---------------------------------------------------------------------------------
|
||||
input.skeletons[0].rightHand.joint2D[COCO_Hand_Index_1].x = mocapNET2DPointsResult[MOCAPNET_JOINT_FINGER2_1_R][0]; //MOCAPNET_OUTPUT_JOINT_METACARPAL1_R
|
||||
input.skeletons[0].rightHand.joint2D[COCO_Hand_Index_1].y = mocapNET2DPointsResult[MOCAPNET_JOINT_FINGER2_1_R][1]; //MOCAPNET_OUTPUT_JOINT_METACARPAL1_R
|
||||
input.skeletons[0].rightHand.joint2D[COCO_Hand_Index_2].x = mocapNET2DPointsResult[MOCAPNET_JOINT_FINGER2_2_R][0]; //MOCAPNET_OUTPUT_JOINT_FINGER2_1_R
|
||||
input.skeletons[0].rightHand.joint2D[COCO_Hand_Index_2].y = mocapNET2DPointsResult[MOCAPNET_JOINT_FINGER2_2_R][1]; //MOCAPNET_OUTPUT_JOINT_FINGER2_1_R
|
||||
input.skeletons[0].rightHand.joint2D[COCO_Hand_Index_3].x = mocapNET2DPointsResult[MOCAPNET_JOINT_FINGER2_3_R][0]; //MOCAPNET_OUTPUT_JOINT_FINGER2_2_R
|
||||
input.skeletons[0].rightHand.joint2D[COCO_Hand_Index_3].y = mocapNET2DPointsResult[MOCAPNET_JOINT_FINGER2_3_R][1]; //MOCAPNET_OUTPUT_JOINT_FINGER2_2_R
|
||||
input.skeletons[0].rightHand.joint2D[COCO_Hand_Index_4].x = mocapNET2DPointsResult[MOCAPNET_JOINT_ENDSITE_FINGER2_3_R][0]; //MOCAPNET_OUTPUT_JOINT_FINGER2_3_R
|
||||
input.skeletons[0].rightHand.joint2D[COCO_Hand_Index_4].y = mocapNET2DPointsResult[MOCAPNET_JOINT_ENDSITE_FINGER2_3_R][1]; //MOCAPNET_OUTPUT_JOINT_FINGER2_3_R
|
||||
//---------------------------------------------------------------------------------
|
||||
input.skeletons[0].rightHand.joint2D[COCO_Hand_Middle_1].x = mocapNET2DPointsResult[MOCAPNET_JOINT_FINGER3_1_R][0];//MOCAPNET_OUTPUT_JOINT_METACARPAL2_R
|
||||
input.skeletons[0].rightHand.joint2D[COCO_Hand_Middle_1].y = mocapNET2DPointsResult[MOCAPNET_JOINT_FINGER3_1_R][1];
|
||||
input.skeletons[0].rightHand.joint2D[COCO_Hand_Middle_2].x = mocapNET2DPointsResult[MOCAPNET_JOINT_FINGER3_2_R][0]; //MOCAPNET_OUTPUT_JOINT_FINGER3_1_R
|
||||
input.skeletons[0].rightHand.joint2D[COCO_Hand_Middle_2].y = mocapNET2DPointsResult[MOCAPNET_JOINT_FINGER3_2_R][1];
|
||||
input.skeletons[0].rightHand.joint2D[COCO_Hand_Middle_3].x = mocapNET2DPointsResult[MOCAPNET_JOINT_FINGER3_3_R][0]; //MOCAPNET_OUTPUT_JOINT_FINGER3_2_R
|
||||
input.skeletons[0].rightHand.joint2D[COCO_Hand_Middle_3].y = mocapNET2DPointsResult[MOCAPNET_JOINT_FINGER3_3_R][1];
|
||||
input.skeletons[0].rightHand.joint2D[COCO_Hand_Middle_4].x = mocapNET2DPointsResult[MOCAPNET_JOINT_ENDSITE_FINGER3_3_R][0]; //MOCAPNET_OUTPUT_JOINT_FINGER3_3_R
|
||||
input.skeletons[0].rightHand.joint2D[COCO_Hand_Middle_4].y = mocapNET2DPointsResult[MOCAPNET_JOINT_ENDSITE_FINGER3_3_R][1]; //MOCAPNET_OUTPUT_JOINT_FINGER3_3_R
|
||||
//---------------------------------------------------------------------------------
|
||||
input.skeletons[0].rightHand.joint2D[COCO_Hand_Ring_1].x = mocapNET2DPointsResult[MOCAPNET_JOINT_FINGER4_1_R][0]; //MOCAPNET_OUTPUT_JOINT_METACARPAL3_R
|
||||
input.skeletons[0].rightHand.joint2D[COCO_Hand_Ring_1].y = mocapNET2DPointsResult[MOCAPNET_JOINT_FINGER4_1_R][1];
|
||||
input.skeletons[0].rightHand.joint2D[COCO_Hand_Ring_2].x = mocapNET2DPointsResult[MOCAPNET_JOINT_FINGER4_2_R][0]; //MOCAPNET_OUTPUT_JOINT_FINGER4_1_R
|
||||
input.skeletons[0].rightHand.joint2D[COCO_Hand_Ring_2].y = mocapNET2DPointsResult[MOCAPNET_JOINT_FINGER4_2_R][1];
|
||||
input.skeletons[0].rightHand.joint2D[COCO_Hand_Ring_3].x = mocapNET2DPointsResult[MOCAPNET_JOINT_FINGER4_3_R][0]; //MOCAPNET_OUTPUT_JOINT_FINGER4_2_R
|
||||
input.skeletons[0].rightHand.joint2D[COCO_Hand_Ring_3].y = mocapNET2DPointsResult[MOCAPNET_JOINT_FINGER4_3_R][1];
|
||||
input.skeletons[0].rightHand.joint2D[COCO_Hand_Ring_4].x = mocapNET2DPointsResult[MOCAPNET_JOINT_ENDSITE_FINGER4_3_R][0]; //MOCAPNET_OUTPUT_JOINT_FINGER4_3_R
|
||||
input.skeletons[0].rightHand.joint2D[COCO_Hand_Ring_4].y = mocapNET2DPointsResult[MOCAPNET_JOINT_ENDSITE_FINGER4_3_R][1]; //MOCAPNET_OUTPUT_JOINT_FINGER4_3_R
|
||||
//---------------------------------------------------------------------------------
|
||||
input.skeletons[0].rightHand.joint2D[COCO_Hand_Pinky_1].x = mocapNET2DPointsResult[MOCAPNET_JOINT_FINGER5_1_R][0]; //MOCAPNET_OUTPUT_JOINT_METACARPAL4_R
|
||||
input.skeletons[0].rightHand.joint2D[COCO_Hand_Pinky_1].y = mocapNET2DPointsResult[MOCAPNET_JOINT_FINGER5_1_R][1];
|
||||
input.skeletons[0].rightHand.joint2D[COCO_Hand_Pinky_2].x = mocapNET2DPointsResult[MOCAPNET_JOINT_FINGER5_2_R][0]; //MOCAPNET_OUTPUT_JOINT_FINGER5_1_R
|
||||
input.skeletons[0].rightHand.joint2D[COCO_Hand_Pinky_2].y = mocapNET2DPointsResult[MOCAPNET_JOINT_FINGER5_2_R][1];
|
||||
input.skeletons[0].rightHand.joint2D[COCO_Hand_Pinky_3].x = mocapNET2DPointsResult[MOCAPNET_JOINT_FINGER5_3_R][0]; //MOCAPNET_OUTPUT_JOINT_FINGER5_2_R
|
||||
input.skeletons[0].rightHand.joint2D[COCO_Hand_Pinky_3].y = mocapNET2DPointsResult[MOCAPNET_JOINT_FINGER5_3_R][1];
|
||||
input.skeletons[0].rightHand.joint2D[COCO_Hand_Pinky_4].x = mocapNET2DPointsResult[MOCAPNET_JOINT_ENDSITE_FINGER5_3_R][0]; //MOCAPNET_OUTPUT_JOINT_FINGER5_3_R
|
||||
input.skeletons[0].rightHand.joint2D[COCO_Hand_Pinky_4].y = mocapNET2DPointsResult[MOCAPNET_JOINT_ENDSITE_FINGER5_3_R][1]; //MOCAPNET_OUTPUT_JOINT_FINGER5_3_R
|
||||
//---------------------------------------------------------------------------------
|
||||
//Dont forget convertRHandSkeletonSerializedToBVHTransform needs to also be updated
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
//Populate left hand
|
||||
input.skeletons[0].leftHand.joint2D[COCO_Hand_Wrist].x = mocapNET2DPointsResult[MOCAPNET_JOINT_LHAND][0];
|
||||
input.skeletons[0].leftHand.joint2D[COCO_Hand_Wrist].y = mocapNET2DPointsResult[MOCAPNET_JOINT_LHAND][1];
|
||||
//---------------------------------------------------------------------------------
|
||||
input.skeletons[0].leftHand.joint2D[COCO_Hand_Thumb_1].x = mocapNET2DPointsResult[MOCAPNET_JOINT_LTHUMB][0];
|
||||
input.skeletons[0].leftHand.joint2D[COCO_Hand_Thumb_1].y = mocapNET2DPointsResult[MOCAPNET_JOINT_LTHUMB][1];
|
||||
input.skeletons[0].leftHand.joint2D[COCO_Hand_Thumb_2].x = mocapNET2DPointsResult[MOCAPNET_JOINT_FINGER1_2_L][0];
|
||||
input.skeletons[0].leftHand.joint2D[COCO_Hand_Thumb_2].y = mocapNET2DPointsResult[MOCAPNET_JOINT_FINGER1_2_L][1];
|
||||
input.skeletons[0].leftHand.joint2D[COCO_Hand_Thumb_3].x = mocapNET2DPointsResult[MOCAPNET_JOINT_FINGER1_3_L][0];
|
||||
input.skeletons[0].leftHand.joint2D[COCO_Hand_Thumb_3].y = mocapNET2DPointsResult[MOCAPNET_JOINT_FINGER1_3_L][1];
|
||||
input.skeletons[0].leftHand.joint2D[COCO_Hand_Thumb_4].x = mocapNET2DPointsResult[MOCAPNET_JOINT_ENDSITE_FINGER1_3_L][0];
|
||||
input.skeletons[0].leftHand.joint2D[COCO_Hand_Thumb_4].y = mocapNET2DPointsResult[MOCAPNET_JOINT_ENDSITE_FINGER1_3_L][1];
|
||||
//---------------------------------------------------------------------------------
|
||||
input.skeletons[0].leftHand.joint2D[COCO_Hand_Index_1].x = mocapNET2DPointsResult[MOCAPNET_JOINT_FINGER2_1_L][0];
|
||||
input.skeletons[0].leftHand.joint2D[COCO_Hand_Index_1].y = mocapNET2DPointsResult[MOCAPNET_JOINT_FINGER2_1_L][1];
|
||||
input.skeletons[0].leftHand.joint2D[COCO_Hand_Index_2].x = mocapNET2DPointsResult[MOCAPNET_JOINT_FINGER2_2_L][0];
|
||||
input.skeletons[0].leftHand.joint2D[COCO_Hand_Index_2].y = mocapNET2DPointsResult[MOCAPNET_JOINT_FINGER2_2_L][1];
|
||||
input.skeletons[0].leftHand.joint2D[COCO_Hand_Index_3].x = mocapNET2DPointsResult[MOCAPNET_JOINT_FINGER2_3_L][0];
|
||||
input.skeletons[0].leftHand.joint2D[COCO_Hand_Index_3].y = mocapNET2DPointsResult[MOCAPNET_JOINT_FINGER2_3_L][1];
|
||||
input.skeletons[0].leftHand.joint2D[COCO_Hand_Index_4].x = mocapNET2DPointsResult[MOCAPNET_JOINT_ENDSITE_FINGER2_3_L][0];
|
||||
input.skeletons[0].leftHand.joint2D[COCO_Hand_Index_4].y = mocapNET2DPointsResult[MOCAPNET_JOINT_ENDSITE_FINGER2_3_L][1]; //Maybe the end site is prefereable?
|
||||
//---------------------------------------------------------------------------------
|
||||
input.skeletons[0].leftHand.joint2D[COCO_Hand_Middle_1].x = mocapNET2DPointsResult[MOCAPNET_JOINT_FINGER3_1_L][0];
|
||||
input.skeletons[0].leftHand.joint2D[COCO_Hand_Middle_1].y = mocapNET2DPointsResult[MOCAPNET_JOINT_FINGER3_1_L][1];
|
||||
input.skeletons[0].leftHand.joint2D[COCO_Hand_Middle_2].x = mocapNET2DPointsResult[MOCAPNET_JOINT_FINGER3_2_L][0];
|
||||
input.skeletons[0].leftHand.joint2D[COCO_Hand_Middle_2].y = mocapNET2DPointsResult[MOCAPNET_JOINT_FINGER3_2_L][1];
|
||||
input.skeletons[0].leftHand.joint2D[COCO_Hand_Middle_3].x = mocapNET2DPointsResult[MOCAPNET_JOINT_FINGER3_3_L][0];
|
||||
input.skeletons[0].leftHand.joint2D[COCO_Hand_Middle_3].y = mocapNET2DPointsResult[MOCAPNET_JOINT_FINGER3_3_L][1];
|
||||
input.skeletons[0].leftHand.joint2D[COCO_Hand_Middle_4].x = mocapNET2DPointsResult[MOCAPNET_JOINT_ENDSITE_FINGER3_3_L][0];
|
||||
input.skeletons[0].leftHand.joint2D[COCO_Hand_Middle_4].y = mocapNET2DPointsResult[MOCAPNET_JOINT_ENDSITE_FINGER3_3_L][1]; //Maybe the end site is prefereable?
|
||||
//---------------------------------------------------------------------------------
|
||||
input.skeletons[0].leftHand.joint2D[COCO_Hand_Ring_1].x = mocapNET2DPointsResult[MOCAPNET_JOINT_FINGER4_1_L][0];
|
||||
input.skeletons[0].leftHand.joint2D[COCO_Hand_Ring_1].y = mocapNET2DPointsResult[MOCAPNET_JOINT_FINGER4_1_L][1];
|
||||
input.skeletons[0].leftHand.joint2D[COCO_Hand_Ring_2].x = mocapNET2DPointsResult[MOCAPNET_JOINT_FINGER4_2_L][0];
|
||||
input.skeletons[0].leftHand.joint2D[COCO_Hand_Ring_2].y = mocapNET2DPointsResult[MOCAPNET_JOINT_FINGER4_2_L][1];
|
||||
input.skeletons[0].leftHand.joint2D[COCO_Hand_Ring_3].x = mocapNET2DPointsResult[MOCAPNET_JOINT_FINGER4_3_L][0];
|
||||
input.skeletons[0].leftHand.joint2D[COCO_Hand_Ring_3].y = mocapNET2DPointsResult[MOCAPNET_JOINT_FINGER4_3_L][1];
|
||||
input.skeletons[0].leftHand.joint2D[COCO_Hand_Ring_4].x = mocapNET2DPointsResult[MOCAPNET_JOINT_ENDSITE_FINGER4_3_L][0];
|
||||
input.skeletons[0].leftHand.joint2D[COCO_Hand_Ring_4].y = mocapNET2DPointsResult[MOCAPNET_JOINT_ENDSITE_FINGER4_3_L][1]; //Maybe the end site is prefereable?
|
||||
//---------------------------------------------------------------------------------
|
||||
input.skeletons[0].leftHand.joint2D[COCO_Hand_Pinky_1].x = mocapNET2DPointsResult[MOCAPNET_JOINT_FINGER5_1_L][0];
|
||||
input.skeletons[0].leftHand.joint2D[COCO_Hand_Pinky_1].y = mocapNET2DPointsResult[MOCAPNET_JOINT_FINGER5_1_L][1];
|
||||
input.skeletons[0].leftHand.joint2D[COCO_Hand_Pinky_2].x = mocapNET2DPointsResult[MOCAPNET_JOINT_FINGER5_2_L][0];
|
||||
input.skeletons[0].leftHand.joint2D[COCO_Hand_Pinky_2].y = mocapNET2DPointsResult[MOCAPNET_JOINT_FINGER5_2_L][1];
|
||||
input.skeletons[0].leftHand.joint2D[COCO_Hand_Pinky_3].x = mocapNET2DPointsResult[MOCAPNET_JOINT_FINGER5_3_L][0];
|
||||
input.skeletons[0].leftHand.joint2D[COCO_Hand_Pinky_3].y = mocapNET2DPointsResult[MOCAPNET_JOINT_FINGER5_3_L][1];
|
||||
input.skeletons[0].leftHand.joint2D[COCO_Hand_Pinky_4].x = mocapNET2DPointsResult[MOCAPNET_JOINT_ENDSITE_FINGER5_3_L][0];
|
||||
input.skeletons[0].leftHand.joint2D[COCO_Hand_Pinky_4].y = mocapNET2DPointsResult[MOCAPNET_JOINT_ENDSITE_FINGER5_3_L][1]; //Maybe the end site is prefereable?
|
||||
//---------------------------------------------------------------------------------
|
||||
//Dont forget convertLHandSkeletonSerializedToBVHTransform needs to also be updated
|
||||
|
||||
|
||||
|
||||
|
||||
//Populate face
|
||||
input.skeletons[0].head.joint2D[OP_Head_REye_2].x = mocapNET2DPointsResult[MOCAPNET_JOINT_ORBICULARIS03_R][0];
|
||||
input.skeletons[0].head.joint2D[OP_Head_REye_2].y = mocapNET2DPointsResult[MOCAPNET_JOINT_ORBICULARIS03_R][1];
|
||||
input.skeletons[0].head.joint2D[OP_Head_REye].x = mocapNET2DPointsResult[MOCAPNET_JOINT_EYE_R][0];
|
||||
input.skeletons[0].head.joint2D[OP_Head_REye].y = mocapNET2DPointsResult[MOCAPNET_JOINT_EYE_R][1];
|
||||
input.skeletons[0].head.joint2D[OP_Head_REye_5].x = mocapNET2DPointsResult[MOCAPNET_JOINT_ORBICULARIS04_R][0];
|
||||
input.skeletons[0].head.joint2D[OP_Head_REye_5].y = mocapNET2DPointsResult[MOCAPNET_JOINT_ORBICULARIS04_R][1];
|
||||
//---------------------------------------------------------------------------------
|
||||
input.skeletons[0].head.joint2D[OP_Head_LEye_2].x = mocapNET2DPointsResult[MOCAPNET_JOINT_ORBICULARIS03_L][0];
|
||||
input.skeletons[0].head.joint2D[OP_Head_LEye_2].y = mocapNET2DPointsResult[MOCAPNET_JOINT_ORBICULARIS03_L][1];
|
||||
input.skeletons[0].head.joint2D[OP_Head_LEye].x = mocapNET2DPointsResult[MOCAPNET_JOINT_EYE_L][0];
|
||||
input.skeletons[0].head.joint2D[OP_Head_LEye].y = mocapNET2DPointsResult[MOCAPNET_JOINT_EYE_L][1];
|
||||
input.skeletons[0].head.joint2D[OP_Head_LEye_5].x = mocapNET2DPointsResult[MOCAPNET_JOINT_ORBICULARIS04_L][0];
|
||||
input.skeletons[0].head.joint2D[OP_Head_LEye_5].y = mocapNET2DPointsResult[MOCAPNET_JOINT_ORBICULARIS04_L][1];
|
||||
//---------------------------------------------------------------------------------
|
||||
input.skeletons[0].head.joint2D[OP_Head_Chin].x = mocapNET2DPointsResult[MOCAPNET_JOINT_SPECIAL04][0];
|
||||
input.skeletons[0].head.joint2D[OP_Head_Chin].y = mocapNET2DPointsResult[MOCAPNET_JOINT_SPECIAL04][1];
|
||||
//---------------------------------------------------------------------------------
|
||||
input.skeletons[0].head.joint2D[OP_Head_InMouth_1].x = mocapNET2DPointsResult[MOCAPNET_JOINT_ORIS03_R][0];
|
||||
input.skeletons[0].head.joint2D[OP_Head_InMouth_1].y = mocapNET2DPointsResult[MOCAPNET_JOINT_ORIS03_R][1];
|
||||
input.skeletons[0].head.joint2D[OP_Head_InMouth_2].x = mocapNET2DPointsResult[MOCAPNET_JOINT_ORIS05][0];
|
||||
input.skeletons[0].head.joint2D[OP_Head_InMouth_2].y = mocapNET2DPointsResult[MOCAPNET_JOINT_ORIS05][1];
|
||||
input.skeletons[0].head.joint2D[OP_Head_InMouth_3].x = mocapNET2DPointsResult[MOCAPNET_JOINT_ORIS03_L][0];
|
||||
input.skeletons[0].head.joint2D[OP_Head_InMouth_3].y = mocapNET2DPointsResult[MOCAPNET_JOINT_ORIS03_L][1];
|
||||
//---------------------------------------------------------------------------------
|
||||
input.skeletons[0].head.joint2D[OP_Head_InMouth_7].x = mocapNET2DPointsResult[MOCAPNET_JOINT_ORIS07_R][0];
|
||||
input.skeletons[0].head.joint2D[OP_Head_InMouth_7].y = mocapNET2DPointsResult[MOCAPNET_JOINT_ORIS07_R][1];
|
||||
input.skeletons[0].head.joint2D[OP_Head_InMouth_6].x = mocapNET2DPointsResult[MOCAPNET_JOINT_ORIS01][0];
|
||||
input.skeletons[0].head.joint2D[OP_Head_InMouth_6].y = mocapNET2DPointsResult[MOCAPNET_JOINT_ORIS01][1];
|
||||
input.skeletons[0].head.joint2D[OP_Head_InMouth_5].x = mocapNET2DPointsResult[MOCAPNET_JOINT_ORIS07_L][0];
|
||||
input.skeletons[0].head.joint2D[OP_Head_InMouth_5].y = mocapNET2DPointsResult[MOCAPNET_JOINT_ORIS07_L][1];
|
||||
//---------------------------------------------------------------------------------
|
||||
// Dont forget to update convertFaceSkeletonSerializedToBVHTransform
|
||||
|
||||
/*
|
||||
for (int jID=0; jID<getBVHNumberOfJoints(); jID++)
|
||||
{
|
||||
const char * jointName = getBVHJointName(jID);
|
||||
fprintf(stderr,"%u = %s \n",jID,jointName);
|
||||
|
||||
}*/
|
||||
|
||||
return convertSkeletons2DDetectedToSkeletonsSerialized(
|
||||
output,
|
||||
&input,
|
||||
frameNumber,
|
||||
width,
|
||||
height
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
int affineSkeletonRotation(struct skeletonSerialized * input,float degrees)
|
||||
{
|
||||
if (degrees==0.0) { return 1; }
|
||||
//---------------------------------------------------------------------------
|
||||
float rad = degrees_to_radF(degrees);
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
unsigned int hipJoint = 1 + BODY25_MidHip; //+1 because the first three parameters are for skeleton ids etc.
|
||||
float hipX = input->skeletonBody[hipJoint*3+0].value;
|
||||
float hipY = input->skeletonBody[hipJoint*3+1].value;
|
||||
char hipVisibility = (input->skeletonBody[hipJoint*3+2].value > 0.0);
|
||||
|
||||
if (hipVisibility)
|
||||
{
|
||||
if (input!=0)
|
||||
{
|
||||
for (unsigned int jID = 0; jID< input->skeletonBodyElements/3; jID++)
|
||||
{
|
||||
float x=input->skeletonBody[jID*3+0].value;
|
||||
float y=input->skeletonBody[jID*3+1].value;
|
||||
char visibility=(char) (input->skeletonBody[jID*3+2].value > 0.0);
|
||||
|
||||
if (visibility)
|
||||
{
|
||||
//Subtract HIP from every joint and perform a 2D rotation using the rad variable
|
||||
float unrotatedX = x-hipX;
|
||||
//Subtract HIP from every joint and perform a 2D rotation using the rad variable
|
||||
float unrotatedY = y-hipY;
|
||||
|
||||
input->skeletonBody[jID*3+0].value = hipX + (unrotatedX * cosf(rad)) - (unrotatedY * sinf(rad));
|
||||
input->skeletonBody[jID*3+1].value = hipY + (unrotatedX * sinf(rad)) + (unrotatedY * cosf(rad));
|
||||
}
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
float rotationRequiredToMakeSkeletonCloserToTrainingDataset(struct skeletonSerialized * input)
|
||||
{
|
||||
//--------------------------------------------------------------------
|
||||
unsigned int hipJoint = 1 + BODY25_MidHip; //+1 because the first three parameters are for skeleton ids etc.
|
||||
float hipX = input->skeletonBody[hipJoint*3+0].value;
|
||||
float hipY = input->skeletonBody[hipJoint*3+1].value;
|
||||
char hipVisibility = (input->skeletonBody[hipJoint*3+2].value > 0.0);
|
||||
//--------------------------------------------------------------------
|
||||
unsigned int neckJoint = 1 + BODY25_Neck; //+1 because the first three parameters are for skeleton ids etc.
|
||||
float neckX = input->skeletonBody[neckJoint*3+0].value;
|
||||
float neckY = input->skeletonBody[neckJoint*3+1].value;
|
||||
char neckVisibility = (input->skeletonBody[neckJoint*3+2].value > 0.0);
|
||||
//--------------------------------------------------------------------
|
||||
|
||||
if ( (hipVisibility) && (neckVisibility) )
|
||||
{
|
||||
float alignmentAngle=getAngleToAlignToZero_tools(hipX,hipY,neckX,neckY);
|
||||
return alignmentAngle;
|
||||
}
|
||||
return 0.0;
|
||||
}
|
||||
|
||||
|
||||
int makeSkeletonUpright(struct skeletonSerialized * input)
|
||||
{
|
||||
float angleCorrectionNeededInDegrees = 180 + goFromRadToDegrees * rotationRequiredToMakeSkeletonCloserToTrainingDataset(input);
|
||||
|
||||
if (angleCorrectionNeededInDegrees!=180.0)
|
||||
{
|
||||
return affineSkeletonRotation(input,angleCorrectionNeededInDegrees);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -0,0 +1,62 @@
|
||||
#pragma once
|
||||
/** @file conversions.hpp
|
||||
* @brief Unfortunately due to the complexity of the problem and the different libraries used there cannot be a single skeleton representation.
|
||||
* This module handles conversions between std::vector<float> which is used by Tensorflow/NeuralNetwork layer , skeletonSerialized which is used by MocapNET and Skeletons2DDetected which is used by the 2D estimator
|
||||
* @author Ammar Qammaz (AmmarkoV)
|
||||
*/
|
||||
|
||||
|
||||
#include <vector>
|
||||
#include "../mocapnet2.hpp"
|
||||
#include "../../../JointEstimator2D/jointEstimator2D.hpp"
|
||||
|
||||
|
||||
int appendVectorToFile(const char * filename, std::vector<float> vec);
|
||||
|
||||
int initializeAssociationsForSubsetOfSkeleton(
|
||||
unsigned int * targetIndexIsInitializedFlag,
|
||||
unsigned int * targetIndexes,
|
||||
unsigned int targetLength,
|
||||
const char * * targetLabels,
|
||||
struct skeletonSerialized * input
|
||||
);
|
||||
|
||||
|
||||
|
||||
std::vector<float> deriveMocapNET2InputUsingAssociations(
|
||||
struct MocapNET2 * mnet,
|
||||
struct skeletonSerialized * input,
|
||||
unsigned int * targetIndexIsInitializedFlag,
|
||||
unsigned int * targetIndexes,
|
||||
unsigned int targetLength,
|
||||
const char * * targetLabels,
|
||||
int verbose
|
||||
);
|
||||
|
||||
|
||||
|
||||
int convertSkeletons2DDetectedToSkeletonsSerialized(
|
||||
struct skeletonSerialized * output,
|
||||
struct Skeletons2DDetected * input,
|
||||
unsigned int frameNumber,
|
||||
unsigned int width,
|
||||
unsigned int height
|
||||
);
|
||||
|
||||
|
||||
int convertMocapNET2OutputToSkeletonSerialized(
|
||||
struct MocapNET2 * mnet ,
|
||||
struct skeletonSerialized * output ,
|
||||
std::vector<std::vector<float> > mocapNET2DPointsResult,
|
||||
unsigned int frameNumber,
|
||||
unsigned int width,
|
||||
unsigned int height
|
||||
);
|
||||
|
||||
|
||||
|
||||
int affineSkeletonRotation(struct skeletonSerialized * input,float degrees);
|
||||
|
||||
float rotationRequiredToMakeSkeletonCloserToTrainingDataset(struct skeletonSerialized * input);
|
||||
|
||||
int makeSkeletonUpright(struct skeletonSerialized * input);
|
||||
@@ -0,0 +1,653 @@
|
||||
|
||||
#include <iostream>
|
||||
#include <stdio.h>
|
||||
#include <vector>
|
||||
#include <math.h>
|
||||
#include <string.h>
|
||||
|
||||
|
||||
#include "csvRead.hpp"
|
||||
#include "../../MocapNETLib2/mocapnet2.hpp"
|
||||
#include "../../MocapNETLib2/IO/jsonMocapNETHelpers.hpp"
|
||||
|
||||
#include "../../../../dependencies/InputParser/InputParser_C.h"
|
||||
|
||||
#define NORMAL "\033[0m"
|
||||
#define BLACK "\033[30m" /* Black */
|
||||
#define RED "\033[31m" /* Red */
|
||||
#define GREEN "\033[32m" /* Green */
|
||||
#define YELLOW "\033[33m" /* Yellow */
|
||||
|
||||
|
||||
|
||||
unsigned int getBodyLinesOfCSVFIle(struct CSVFileContext * csv,const char * filename)
|
||||
{
|
||||
FILE * fp = fopen(filename,"r");
|
||||
{
|
||||
// Extract characters from file and store in character c
|
||||
unsigned int count=0;
|
||||
char c;
|
||||
for (c = getc(fp); c != EOF; c = getc(fp))
|
||||
if (c == '\n') // Increment count if this character is newline
|
||||
{
|
||||
count = count + 1;
|
||||
}
|
||||
|
||||
fclose(fp);
|
||||
|
||||
//The first line of a CSV is its header so we don't count this ..
|
||||
if (count>0)
|
||||
{
|
||||
--count;
|
||||
}
|
||||
return count;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
int openCSVFile(struct CSVFileContext * csv,const char * filename)
|
||||
{
|
||||
csv->fp = fopen(filename,"r");
|
||||
if (csv->fp!=0)
|
||||
{
|
||||
csv->lineNumber=0;
|
||||
csv->numberOfHeaderFields=0;
|
||||
fprintf(stderr,GREEN "Successfully opened CSV file %s\n" NORMAL,filename);
|
||||
return 1;
|
||||
}
|
||||
fprintf(stderr,RED "Failed to open CSV file %s\n" NORMAL,filename);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int closeCSVFile(struct CSVFileContext * csv)
|
||||
{
|
||||
if (csv==0)
|
||||
{
|
||||
fprintf(stderr,RED "Dont need to close empty CSV struct..\n" NORMAL);
|
||||
return 1;
|
||||
}
|
||||
if (csv->fp==0)
|
||||
{
|
||||
fprintf(stderr,RED "Dont need to close CSV header that has already been closed..\n" NORMAL);
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (csv->fp!=0)
|
||||
{
|
||||
//TODO FREE STUFF HERE..
|
||||
int i=0;
|
||||
for (i=0; i<csv->numberOfHeaderFields; i++)
|
||||
{
|
||||
if (csv->field[i].str!=0)
|
||||
{
|
||||
free(csv->field[i].str);
|
||||
csv->field[i].str=0;
|
||||
}
|
||||
}
|
||||
|
||||
fclose(csv->fp);
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
int parseCSVHeader(struct CSVFileContext * csv)
|
||||
{
|
||||
if (csv==0)
|
||||
{
|
||||
fprintf(stderr,RED "Cannot parse empty CSV header..\n" NORMAL);
|
||||
return 0;
|
||||
}
|
||||
if (csv->fp==0)
|
||||
{
|
||||
fprintf(stderr,RED "Cannot parse CSV header that hasn't been opened using openCSVFile..\n" NORMAL);
|
||||
return 0;
|
||||
}
|
||||
|
||||
fprintf(stderr,"Parsing CSV header..\n");
|
||||
char whereToStoreItems[513]= {0};
|
||||
char * line = NULL;
|
||||
size_t len = 0;
|
||||
ssize_t read;
|
||||
|
||||
if (csv->lineNumber==0)
|
||||
{
|
||||
read = getline(&line, &len, csv->fp);
|
||||
if (line!=0)
|
||||
{
|
||||
struct InputParserC * ipc = InputParser_Create(8096,4);
|
||||
InputParser_SetDelimeter(ipc,0,',');
|
||||
InputParser_SetDelimeter(ipc,1,0);
|
||||
InputParser_SetDelimeter(ipc,2,10);
|
||||
InputParser_SetDelimeter(ipc,3,13);
|
||||
|
||||
int numberOfArguments = InputParser_SeperateWords(ipc,line,1);
|
||||
|
||||
if (numberOfArguments<MAX_CSV_HEADER_FIELDS)
|
||||
{
|
||||
int i=0;
|
||||
for (i=0; i<numberOfArguments; i++)
|
||||
{
|
||||
//InputParser_GetWord InputParser_GetLowercaseWord
|
||||
InputParser_GetLowercaseWord(ipc,i,whereToStoreItems,512);
|
||||
//fprintf(stderr,"CSV Header element %u => %s\n",i,whereToStoreItems);
|
||||
csv->field[i].strLength = strlen(whereToStoreItems);
|
||||
csv->field[i].str = (char*) malloc(sizeof(char) * (csv->field[i].strLength+2));
|
||||
memcpy(csv->field[i].str,whereToStoreItems,csv->field[i].strLength);
|
||||
csv->field[i].str[csv->field[i].strLength]=0;
|
||||
++csv->numberOfHeaderFields;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
fprintf(stderr,"Too many CSV header arguments (encountered %u, max %u)..\n",numberOfArguments,MAX_CSV_HEADER_FIELDS);
|
||||
InputParser_Destroy(ipc);
|
||||
if (line!=0)
|
||||
{
|
||||
free(line);
|
||||
line=0;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
InputParser_Destroy(ipc);
|
||||
csv->lineNumber = csv->lineNumber +1;
|
||||
if (line!=0)
|
||||
{
|
||||
free(line);
|
||||
line=0;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
if (line!=0)
|
||||
{
|
||||
free(line);
|
||||
line=0;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
int parseNextCSVFloatLine(struct CSVFileContext * csv,struct CSVFloatFileLine * csvLine)
|
||||
{
|
||||
if (csv==0)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
if (csvLine==0)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
char * line = NULL;
|
||||
size_t len = 0;
|
||||
ssize_t read;
|
||||
|
||||
if (csv->lineNumber==0)
|
||||
{
|
||||
if (!parseCSVHeader(csv))
|
||||
{
|
||||
fprintf(stderr,RED "Could not read CSV header on first loop\n" NORMAL);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
if ((read = getline(&line, &len, csv->fp)) != -1)
|
||||
{
|
||||
struct InputParserC * ipc = InputParser_Create(8096,4);
|
||||
InputParser_SetDelimeter(ipc,0,',');
|
||||
InputParser_SetDelimeter(ipc,1,0);
|
||||
InputParser_SetDelimeter(ipc,2,10);
|
||||
InputParser_SetDelimeter(ipc,3,13);
|
||||
|
||||
csvLine->lineNumber=csv->lineNumber;
|
||||
csvLine->numberOfFields = InputParser_SeperateWords(ipc,line,1);
|
||||
|
||||
//fprintf(stderr,"Line %u (%s) has %u arguments \n",csvLine->lineNumber,line,csvLine->numberOfFields );
|
||||
|
||||
if ( csvLine->numberOfFields != csv->numberOfHeaderFields )
|
||||
{
|
||||
fprintf(stderr,RED "Number of header fields %u does not correspond with number of body elements %u \n" NORMAL,csv->numberOfHeaderFields,csvLine->numberOfFields);
|
||||
}
|
||||
|
||||
for (int i=0; i<csvLine->numberOfFields; i++)
|
||||
{
|
||||
csvLine->field[i] = InputParser_GetWordFloat(ipc,i);
|
||||
//fprintf(stderr,"%s(%u)=%0.2f ",csv->field[i].str,i,csvLine->field[i]);
|
||||
}
|
||||
|
||||
|
||||
InputParser_Destroy(ipc);
|
||||
|
||||
csv->lineNumber = csv->lineNumber+1;
|
||||
if (line!=0)
|
||||
{
|
||||
free(line);
|
||||
line=0;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
if (line!=0)
|
||||
{
|
||||
free(line);
|
||||
line=0;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
int parseNextCSVCOCOSkeleton(struct CSVFileContext * csv, struct skeletonSerialized * skel)
|
||||
{
|
||||
if (csv==0)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
if (skel==0)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
char * line = NULL;
|
||||
size_t len = 0;
|
||||
ssize_t read;
|
||||
|
||||
if (csv->lineNumber==0)
|
||||
{
|
||||
if (!parseCSVHeader(csv))
|
||||
{
|
||||
fprintf(stderr,RED "Could not read CSV header on first loop\n" NORMAL);
|
||||
return 0;
|
||||
}
|
||||
/*
|
||||
else
|
||||
{
|
||||
fprintf(stderr,"Header of skeleton parsed successfully..\n");
|
||||
for (unsigned int i=0; i<csv->numberOfHeaderFields; i++)
|
||||
{
|
||||
fprintf(stderr,"CSV file header element %u => %s \n",i,csv->field[i].str);
|
||||
}
|
||||
}*/
|
||||
}
|
||||
|
||||
if ((read = getline(&line, &len, csv->fp)) != -1)
|
||||
{
|
||||
//CSV files are always stored normalized..
|
||||
skel->width = 1.0;
|
||||
skel->height = 1.0;
|
||||
|
||||
|
||||
struct InputParserC * ipc = InputParser_Create(8096,4);
|
||||
InputParser_SetDelimeter(ipc,0,',');
|
||||
InputParser_SetDelimeter(ipc,1,0);
|
||||
InputParser_SetDelimeter(ipc,2,10);
|
||||
InputParser_SetDelimeter(ipc,3,13);
|
||||
|
||||
skel->skeletonBodyElements = InputParser_SeperateWords(ipc,line,1);
|
||||
|
||||
//fprintf(stderr,"Line %u (%s) has %u arguments \n",csv->lineNumber,line,skel->skeletonBodyElements);
|
||||
|
||||
int typeOfData=0,jointID=0;
|
||||
float value=0.0;
|
||||
|
||||
if ( skel->skeletonBodyElements != csv->numberOfHeaderFields )
|
||||
{
|
||||
fprintf(stderr,"Number of header fields %u does not correspond with number of body elements %u \n",csv->numberOfHeaderFields,skel->skeletonBodyElements);
|
||||
}
|
||||
|
||||
//Copy references to header ..
|
||||
skel->skeletonHeaderElements=csv->numberOfHeaderFields;
|
||||
for (int i=0; i<csv->numberOfHeaderFields; i++)
|
||||
{
|
||||
skel->skeletonHeader[i].strLength = csv->field[i].strLength;
|
||||
skel->skeletonHeader[i].str = csv->field[i].str;
|
||||
}
|
||||
|
||||
for (int i=0; i<skel->skeletonBodyElements; i++)
|
||||
{
|
||||
//fprintf(stderr,"CSV Header element %u => %s\n",i,whereToStoreItems);
|
||||
skel->skeletonBody[i].value = InputParser_GetWordFloat(ipc,i);
|
||||
//fprintf(stderr,"%s(%u)=%0.2f ",csv->field[i].str,i,skel->skeletonBody[i].value);
|
||||
}
|
||||
|
||||
|
||||
InputParser_Destroy(ipc);
|
||||
csv->lineNumber = csv->lineNumber+1;
|
||||
if (line!=0)
|
||||
{
|
||||
free(line);
|
||||
line=0;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
if (line!=0)
|
||||
{
|
||||
free(line);
|
||||
line=0;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
int uniformlyScaleSerializedSkeleton(struct skeletonSerialized * skel,float factor)
|
||||
{
|
||||
if (skel==0)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
for (int i=0; i<skel->skeletonBodyElements; i++)
|
||||
{
|
||||
skel->skeletonBody[i].value *= factor;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
|
||||
int scaleSerializedSkeletonX(struct skeletonSerialized * skel,float factorX)
|
||||
{
|
||||
if (skel==0)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
if (skel->skeletonHeaderElements!=skel->skeletonBodyElements)
|
||||
{
|
||||
fprintf(stderr,"scaleSerializedSkeletonX: Inconsistent headers length\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
int scaledJoints=0;
|
||||
for (int i=0; i<skel->skeletonHeaderElements; i++)
|
||||
{
|
||||
if
|
||||
(
|
||||
( skel->skeletonHeader[i].strLength >4 ) &&
|
||||
( skel->skeletonHeader[i].str!=0 )
|
||||
)
|
||||
{
|
||||
if (
|
||||
(skel->skeletonHeader[i].str[0]=='2') &&
|
||||
( (skel->skeletonHeader[i].str[1]=='D') || (skel->skeletonHeader[i].str[1]=='d') ) &&
|
||||
( (skel->skeletonHeader[i].str[2]=='X') || (skel->skeletonHeader[i].str[2]=='x') ) &&
|
||||
(skel->skeletonHeader[i].str[3]=='_')
|
||||
)
|
||||
{
|
||||
skel->skeletonBody[i].value *= factorX;
|
||||
++scaledJoints;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return scaledJoints;
|
||||
}
|
||||
|
||||
|
||||
int scaleSerializedSkeletonY(struct skeletonSerialized * skel,float factorY)
|
||||
{
|
||||
if (skel==0)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
if (skel->skeletonHeaderElements!=skel->skeletonBodyElements)
|
||||
{
|
||||
fprintf(stderr,"scaleSerializedSkeletonY: Inconsistent headers length\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
int scaledJoints=0;
|
||||
for (int i=0; i<skel->skeletonHeaderElements; i++)
|
||||
{
|
||||
if
|
||||
(
|
||||
( skel->skeletonHeader[i].strLength >4 ) &&
|
||||
( skel->skeletonHeader[i].str!=0 )
|
||||
)
|
||||
{
|
||||
if (
|
||||
(skel->skeletonHeader[i].str[0]=='2') &&
|
||||
( (skel->skeletonHeader[i].str[1]=='D') || (skel->skeletonHeader[i].str[1]=='d') ) &&
|
||||
( (skel->skeletonHeader[i].str[2]=='Y') || (skel->skeletonHeader[i].str[2]=='y') ) &&
|
||||
(skel->skeletonHeader[i].str[3]=='_')
|
||||
)
|
||||
{
|
||||
skel->skeletonBody[i].value *= factorY;
|
||||
++scaledJoints;
|
||||
}
|
||||
///else { fprintf(stderr,"`%s` does not match\n",skel->skeletonHeader[i].str); }
|
||||
}
|
||||
}
|
||||
|
||||
return scaledJoints;
|
||||
}
|
||||
|
||||
|
||||
|
||||
int scaleSerializedSkeletonFromCenter(struct skeletonSerialized * skel,float factorX,float factorY)
|
||||
{
|
||||
if (skel==0)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
// Assuming we have a 2D point cloud with points 0..1,0..1
|
||||
// This is how we model the framebuffer
|
||||
// 0,0 __________________________________________________________________________________ 1,0
|
||||
// | /\ |
|
||||
// | | 0.5 |
|
||||
// | | |
|
||||
// | 0.5 | 0.5 |
|
||||
// | <----------------------------- * -----------------------------> |
|
||||
// | | |
|
||||
// | | |
|
||||
// | | 0.5 |
|
||||
// | \/ |
|
||||
// 0,1------------------------------------------------------------------------------------ 1,1
|
||||
// The * is the center of the image..
|
||||
// We want to scale X,Y points based on factorX and factorY
|
||||
//However the magnitued of the scaling will be linear to the distance from the
|
||||
//Center of the image , Points 0.5 units away from the center will be scaled fully with the factor
|
||||
//Points close to the center will be not scaled at all..
|
||||
if (skel->skeletonHeaderElements!=skel->skeletonBodyElements)
|
||||
{
|
||||
fprintf(stderr,"scaleSerializedSkeletonY: Inconsistent headers length\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
float value,magnitude,maximumFactor,thisFactorY,relativeY,thisFactorX,relativeX;
|
||||
|
||||
int scaledJoints=0;
|
||||
for (int i=0; i<skel->skeletonHeaderElements; i++)
|
||||
{
|
||||
if
|
||||
(
|
||||
( skel->skeletonHeader[i].strLength >4 ) &&
|
||||
( skel->skeletonHeader[i].str!=0 )
|
||||
)
|
||||
{
|
||||
if (
|
||||
(skel->skeletonHeader[i].str[0]=='2') &&
|
||||
( (skel->skeletonHeader[i].str[1]=='D') || (skel->skeletonHeader[i].str[1]=='d') ) &&
|
||||
( (skel->skeletonHeader[i].str[2]=='X') || (skel->skeletonHeader[i].str[2]=='x') ) &&
|
||||
(skel->skeletonHeader[i].str[3]=='_')
|
||||
)
|
||||
{
|
||||
if (factorX!=1.0)
|
||||
{
|
||||
value = skel->skeletonBody[i].value;
|
||||
maximumFactor = factorX-1.0;
|
||||
magnitude = (float) fabs(value-0.5)/0.5;
|
||||
thisFactorX = (magnitude * maximumFactor) + 1.0;
|
||||
relativeX = value - 0.5;
|
||||
relativeX *= thisFactorX;
|
||||
skel->skeletonBody[i].value = relativeX + 0.5 ;
|
||||
++scaledJoints;
|
||||
}
|
||||
}
|
||||
else if (
|
||||
(skel->skeletonHeader[i].str[0]=='2') &&
|
||||
( (skel->skeletonHeader[i].str[1]=='D') || (skel->skeletonHeader[i].str[1]=='d') ) &&
|
||||
( (skel->skeletonHeader[i].str[2]=='Y') || (skel->skeletonHeader[i].str[2]=='y') ) &&
|
||||
(skel->skeletonHeader[i].str[3]=='_')
|
||||
)
|
||||
{
|
||||
if (factorY!=1.0)
|
||||
{
|
||||
value = skel->skeletonBody[i].value;
|
||||
maximumFactor = factorY-1.0;
|
||||
magnitude = (float) fabs(value-0.5)/0.5;
|
||||
thisFactorY = ( magnitude * maximumFactor ) + 1.0;
|
||||
relativeY = value - 0.5;
|
||||
relativeY *= thisFactorY;
|
||||
skel->skeletonBody[i].value = relativeY + 0.5 ;
|
||||
++scaledJoints;
|
||||
}
|
||||
}
|
||||
} //Valid header
|
||||
} // For each joint
|
||||
|
||||
return scaledJoints;
|
||||
}
|
||||
|
||||
|
||||
|
||||
#ifdef __GNUC__
|
||||
# if __GNUC_PREREQ(5,5)
|
||||
// If gcc_version >= RANDOM support
|
||||
#include <random> //For generating random samples based on a normal distribution
|
||||
//This function makes the life of the 3D pose estimator more difficult by adding a configurable level of gaussian noise on the 2D pixels estimated
|
||||
int perturbSerializedSkeletonUsingGaussianNoise(struct skeletonSerialized * skel,float gaussianNoiseInNormalizedPixelsX,float gaussianNoiseInNormalizedPixelsY)
|
||||
{
|
||||
if (skel->skeletonHeaderElements!=skel->skeletonBodyElements)
|
||||
{
|
||||
fprintf(stderr,"perturbSerializedSkeletonUsingGaussianNoise: Inconsistent headers length\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
std::default_random_engine generator;
|
||||
std::normal_distribution<float> distributionX(0.0,gaussianNoiseInNormalizedPixelsX);
|
||||
std::normal_distribution<float> distributionY(0.0,gaussianNoiseInNormalizedPixelsY);
|
||||
|
||||
|
||||
float value,magnitude,maximumFactor,thisFactorY,relativeY,thisFactorX,relativeX;
|
||||
|
||||
int perturbedCoordinates=0;
|
||||
for (int i=0; i<skel->skeletonHeaderElements; i++)
|
||||
{
|
||||
if
|
||||
(
|
||||
( skel->skeletonHeader[i].strLength >4 ) &&
|
||||
( skel->skeletonHeader[i].str!=0 )
|
||||
)
|
||||
{
|
||||
if (
|
||||
(skel->skeletonHeader[i].str[0]=='2') &&
|
||||
( (skel->skeletonHeader[i].str[1]=='D') || (skel->skeletonHeader[i].str[1]=='d') ) &&
|
||||
( (skel->skeletonHeader[i].str[2]=='X') || (skel->skeletonHeader[i].str[2]=='x') ) &&
|
||||
(skel->skeletonHeader[i].str[3]=='_')
|
||||
)
|
||||
{
|
||||
if (gaussianNoiseInNormalizedPixelsX>0.0)
|
||||
{
|
||||
float perturbation = distributionX(generator);
|
||||
skel->skeletonBody[i].value += perturbation;
|
||||
|
||||
++perturbedCoordinates;
|
||||
}
|
||||
}
|
||||
else if (
|
||||
(skel->skeletonHeader[i].str[0]=='2') &&
|
||||
( (skel->skeletonHeader[i].str[1]=='D') || (skel->skeletonHeader[i].str[1]=='d') ) &&
|
||||
( (skel->skeletonHeader[i].str[2]=='Y') || (skel->skeletonHeader[i].str[2]=='y') ) &&
|
||||
(skel->skeletonHeader[i].str[3]=='_')
|
||||
)
|
||||
{
|
||||
if (gaussianNoiseInNormalizedPixelsY>0.0)
|
||||
{
|
||||
float perturbation = distributionY(generator);
|
||||
skel->skeletonBody[i].value += perturbation;
|
||||
|
||||
++perturbedCoordinates;
|
||||
}
|
||||
}
|
||||
} //Valid header
|
||||
} // For each joint
|
||||
|
||||
return perturbedCoordinates;
|
||||
}
|
||||
# else
|
||||
#warning "Your compiler is too old and is missing normal random distributions"
|
||||
int perturbSerializedSkeletonUsingGaussianNoise(struct skeletonSerialized * skel,float gaussianNoiseInNormalizedPixelsX,float gaussianNoiseInNormalizedPixelsY)
|
||||
{
|
||||
fprintf(stderr,RED "\n\n\n\nYour compiler is too old and is missing normal random distributions\n\n\n\n" NORMAL );
|
||||
return 0;
|
||||
}
|
||||
// Else
|
||||
# endif
|
||||
#else
|
||||
int perturbSerializedSkeletonUsingGaussianNoise(struct skeletonSerialized * skel,float gaussianNoiseInNormalizedPixelsX,float gaussianNoiseInNormalizedPixelsY)
|
||||
{
|
||||
fprintf(stderr,RED "\n\n\n\nYour compiler is not GCC old and is missing(?) normal random distributions\n\n\n\n" NORMAL );
|
||||
return 0;
|
||||
}
|
||||
// If not gcc
|
||||
#endif
|
||||
|
||||
|
||||
/*
|
||||
float rand_FloatRange(float a, float b)
|
||||
{
|
||||
return ((b - a) * ((float)rand() / RAND_MAX)) + a;
|
||||
}*/
|
||||
|
||||
|
||||
|
||||
std::vector<std::vector<float> > get2DPointsFromSkeleton(struct skeletonSerialized * skel)
|
||||
{
|
||||
fprintf(stderr,"get2DPointsFromSkeleton: ");
|
||||
std::vector<std::vector<float> > finalVector;
|
||||
if (skel==0)
|
||||
{
|
||||
fprintf(stderr,"get2DPointsFromSkeleton: No input\n");
|
||||
return finalVector;
|
||||
}
|
||||
if (skel->skeletonBodyElements!=skel->skeletonHeaderElements)
|
||||
{
|
||||
fprintf(stderr,"get2DPointsFromSkeleton: Mismatch of elements of body/header\n");
|
||||
return finalVector;
|
||||
}
|
||||
|
||||
std::vector<float> points2D;
|
||||
for (int i=0; i<skel->skeletonBodyElements; i++)
|
||||
{
|
||||
if ( strstr(skel->skeletonHeader[i].str,"2DX_")!=0)
|
||||
{
|
||||
points2D.push_back(skel->skeletonBody[i].value);
|
||||
}
|
||||
else if ( strstr(skel->skeletonHeader[i].str,"2DY_")!=0)
|
||||
{
|
||||
points2D.push_back(skel->skeletonBody[i].value);
|
||||
}
|
||||
else if ( strstr(skel->skeletonHeader[i].str,"visible_")!=0)
|
||||
{
|
||||
finalVector.push_back(points2D);
|
||||
points2D.clear();
|
||||
}
|
||||
}
|
||||
|
||||
fprintf(stderr,"survived..\n");
|
||||
return finalVector;
|
||||
}
|
||||
@@ -0,0 +1,91 @@
|
||||
#pragma once
|
||||
/** @file csvRead.hpp
|
||||
* @brief To simplify dataset parsing the very simple CSV ( comma seperated value ) format is used by MocapNET2
|
||||
* This module facilitates opening,parsing and performing some trivial processing of CSV input files..
|
||||
* @author Ammar Qammaz (AmmarkoV)
|
||||
*/
|
||||
|
||||
#include <vector>
|
||||
|
||||
|
||||
#include "commonSkeleton.hpp"
|
||||
#define MAX_CSV_HEADER_FIELDS 1024
|
||||
|
||||
|
||||
/**
|
||||
* @brief Each CSV file needs a context to be parsed, this contains the file discriptor the current line number, the number of fields in the header as well as header fields
|
||||
*/
|
||||
struct CSVFileContext
|
||||
{
|
||||
FILE * fp;
|
||||
unsigned int lineNumber;
|
||||
unsigned int numberOfHeaderFields;
|
||||
struct headerField field[MAX_CSV_HEADER_FIELDS];
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief We may choose to parse a CSV file that only consists of floats, for this specific type there is an optimized CSV context
|
||||
*/
|
||||
struct CSVFloatFileLine
|
||||
{
|
||||
unsigned int lineNumber;
|
||||
unsigned int numberOfFields;
|
||||
float field[MAX_CSV_HEADER_FIELDS];
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @brief Write a skeleton to a CSV. This is the first call that prepares the header
|
||||
* @param CSV context
|
||||
* @param filename of CSV file
|
||||
* @retval 0=Failure/No lines, Otherwise the number of body lines is returned
|
||||
*/
|
||||
unsigned int getBodyLinesOfCSVFIle(struct CSVFileContext * csv,const char * filename);
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @brief This is the initial call to open a CSV file, you need to have a preallocated CSVFileContext strcture as well as a filename. Also don't forget to call closeCSVFile after you are done parsing it
|
||||
* @param CSV context
|
||||
* @param filename of CSV file
|
||||
* @retval 0=Failure/1=Success
|
||||
*/
|
||||
int openCSVFile(struct CSVFileContext * csv,const char * filename);
|
||||
|
||||
/**
|
||||
* @brief This call should be executed once after opening a CSV file to parse it's header
|
||||
* @param CSV context
|
||||
* @retval 0=Failure/1=Success
|
||||
*/
|
||||
int parseCSVHeader(struct CSVFileContext * csv);
|
||||
|
||||
|
||||
/**
|
||||
* @brief This is the final call to close a CSV file and release its file descriptor after you are done parsing it
|
||||
* @param CSV context
|
||||
* @retval 0=Failure/1=Success
|
||||
*/
|
||||
int closeCSVFile(struct CSVFileContext * csv);
|
||||
|
||||
|
||||
int parseNextCSVFloatLine(struct CSVFileContext * csv,struct CSVFloatFileLine * csvLine);
|
||||
|
||||
|
||||
int parseNextCSVCOCOSkeleton(struct CSVFileContext * csv, struct skeletonSerialized * skel);
|
||||
|
||||
|
||||
|
||||
int uniformlyScaleSerializedSkeleton(struct skeletonSerialized * skel,float factor);
|
||||
|
||||
|
||||
int scaleSerializedSkeletonX(struct skeletonSerialized * skel,float factorX);
|
||||
int scaleSerializedSkeletonY(struct skeletonSerialized * skel,float factorY);
|
||||
|
||||
int scaleSerializedSkeletonFromCenter(struct skeletonSerialized * skel,float factorX,float factorY);
|
||||
|
||||
|
||||
int perturbSerializedSkeletonUsingGaussianNoise(struct skeletonSerialized * skel,float gaussianNoiseInNormalizedPixelsX,float gaussianNoiseInNormalizedPixelsY);
|
||||
|
||||
|
||||
|
||||
std::vector<std::vector<float> > get2DPointsFromSkeleton(struct skeletonSerialized * skel);
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user