diff --git a/CMakeLists.txt b/CMakeLists.txt index ca2d702f8c62ff1595a34db6b71c7663379aff39..26566342a638606d268a975002dcc6af97205367 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -445,12 +445,13 @@ if(ENABLE_OCC) list(LENGTH OCC_LIBS_REQUIRED NUM_OCC_LIBS_REQUIRED) set(OCC_LIBS) foreach(OCC ${OCC_LIBS_REQUIRED}) + set(OCC_LIB OCC_LIB-NOTFOUND CACHE INTERNAL "") + # unset(OCC_LIB CACHE) # cleaner, but only available in cmake >= 2.6.4 find_library(OCC_LIB ${OCC} PATHS ENV CASROOT PATH_SUFFIXES lib ${OCC_SYS_NAME}/lib) if(OCC_LIB) list(APPEND OCC_LIBS ${OCC_LIB}) endif(OCC_LIB) - unset(OCC_LIB CACHE) endforeach(OCC) list(LENGTH OCC_LIBS NUM_OCC_LIBS) if(NUM_OCC_LIBS EQUAL NUM_OCC_LIBS_REQUIRED) @@ -576,6 +577,7 @@ include_directories(Common Fltk Geo Graphics Mesh Numeric Parser Plugin # target) add_library(lib STATIC EXCLUDE_FROM_ALL ${GMSH_SRC}) set_target_properties(lib PROPERTIES OUTPUT_NAME Gmsh) + if(HAVE_FLTK) add_executable(gmsh WIN32 Fltk/Main.cpp ${GMSH_SRC}) target_link_libraries(gmsh ${FLTK_LIBRARIES} ${EXTERNAL_LIBRARIES} @@ -634,7 +636,7 @@ macro(unix2dos VARNAME) if(CYGWIN) string(REGEX REPLACE "\n" "\r\n" F1 "${F0}") file(WRITE ${CMAKE_BINARY_DIR}/unix2dos/${N} "${F1}") - else(CYGWIN) # if not in cygwin, assume cmake does it for us + else(CYGWIN) # if not in cygwin, cmake adds '\r's automatically file(WRITE ${CMAKE_BINARY_DIR}/unix2dos/${N} "${F0}") endif(CYGWIN) list(APPEND UNIX2DOS_FILES ${CMAKE_BINARY_DIR}/unix2dos/${N}) @@ -727,12 +729,13 @@ set(CPACK_STRIP_FILES TRUE) set(CPACK_SOURCE_PACKAGE_FILE_NAME gmsh-${GMSH_VERSION}-source) set(CPACK_SOURCE_GENERATOR TGZ) -set(CPACK_SOURCE_IGNORE_FILES "/CVS/" "/.svn" "~$" "DS_Store$" "GmshConfig.h$" - "GmshVersion.h$" "/benchmarks/" "/tmp/" "/bin/" "/lib/" "/nightly/" - "GPATH" "GRTAGS" "GSYMS" "GTAGS" "/HTML/" "/TetgenNew/") #"/Tetgen.*/.*(cxx|h)") +set(CPACK_SOURCE_IGNORE_FILES "${CMAKE_BINARY_DIR}" "/CVS/" "/.svn" "~$" + "DS_Store$" "GmshConfig.h$" "GmshVersion.h$" "/benchmarks/" "/tmp/" + "/bin/" "/lib/" "/nightly/" "GPATH" "GRTAGS" "GSYMS" "GTAGS" "/HTML/" + "/TetgenNew/") #"/Tetgen.*/.*(cxx|h)") # make sure we remove previous installs before doing the next one -# (make package; make package_source can lead to huge file lists +# ("make package; make package_source" would lead to huge file lists # getting generated due to the Applications symlink in the bundle) set(CPACK_INSTALL_COMMANDS "${CMAKE_COMMAND} -E remove_directory ${CMAKE_BINARY_DIR}/_CPack_Packages") @@ -740,9 +743,12 @@ set(CPACK_INSTALL_COMMANDS if(APPLE) set(CPACK_GENERATOR Bundle) set(CPACK_BUNDLE_NAME Gmsh) - set(CPACK_BUNDLE_PLIST ${CMAKE_SOURCE_DIR}/utils/misc/Info.plist) + file(READ ${CMAKE_SOURCE_DIR}/utils/misc/gmsh_app.plist F0) + string(REPLACE GMSH_VERSION "${GMSH_VERSION}" F1 "${F0}") + file(WRITE ${CMAKE_BINARY_DIR}/Info.plist "${F1}") + set(CPACK_BUNDLE_PLIST ${CMAKE_BINARY_DIR}/Info.plist) set(CPACK_BUNDLE_ICON ${CMAKE_SOURCE_DIR}/Fltk/MacIcons.icns) - set(CPACK_BUNDLE_STARTUP_COMMAND ${CMAKE_SOURCE_DIR}/utils/misc/gmsh_bundle.sh) + set(CPACK_BUNDLE_STARTUP_COMMAND ${CMAKE_SOURCE_DIR}/utils/misc/gmsh_app.sh) install(FILES ${CMAKE_SOURCE_DIR}/Fltk/MacIconsGeo.icns DESTINATION . RENAME GmshGeo.icns) install(FILES ${CMAKE_SOURCE_DIR}/Fltk/MacIconsMsh.icns DESTINATION . diff --git a/benchmarks/2d/slot.geo b/benchmarks/2d/slot.geo new file mode 100644 index 0000000000000000000000000000000000000000..c090a2fd5d34cef3243e8783854e5ab94a954362 --- /dev/null +++ b/benchmarks/2d/slot.geo @@ -0,0 +1,1267 @@ +Point(1) = {0, 0, 0, 9.999999999999999e-05}; +Point(2) = {0.00125, 0.045983013167908, 0, 0.0002}; +Point(3) = {-0.00125, 0.045983013167908, 0, 0.0002}; +Point(4) = {0.00125, 0.046983013167908, 0, 0.0002}; +Point(5) = {-0.00125, 0.046983013167908, 0, 0.0002}; +Point(6) = {0, 0.04894510328018296, 0, 9.999999999999999e-05}; +Point(7) = {0.00231758174131267, 0.04874234115102342, 0, 9.999999999999999e-05}; +Point(8) = {-0.00231758174131267, 0.04874234115102342, 0, 9.999999999999999e-05}; +Point(9) = {0, 0.05873866875312504, 0, 9.999999999999999e-05}; +Point(10) = {0.003167899139931751, 0.05846151349118749, 0, 9.999999999999999e-05}; +Point(11) = {-0.003167899139931751, 0.05846151349118749, 0, 9.999999999999999e-05}; +Point(12) = {0, 0.06191866875312504, 0, 9.999999999999999e-05}; +Point(13) = {0, 0.04576510328018295, 0, 9.999999999999999e-05}; +Point(14) = {0.002521657916981249, 0.0510749425126628, 0, 9.999999999999999e-05}; +Point(15) = {-0.002521657916981249, 0.0510749425126628, 0, 9.999999999999999e-05}; +Point(16) = {0, 0.05081234115102343, 0, 5e-05}; +Point(21) = {0.0006497407651091882, 0.05216457763868269, 0, 5e-05}; +Point(22) = {0.0003497407651091883, 0.05216457763868269, 0, 5e-05}; +Point(23) = {0.0003497407651091883, 0.0524645776386827, 0, 5e-05}; +Point(28) = {4.974076510918829e-05, 0.05216457763868269, 0, 5e-05}; +Point(33) = {0.0003497407651091883, 0.05186457763868269, 0, 5e-05}; +Point(34) = {-2.966847148301008e-05, 0.05219577891971159, 0, 5e-05}; +Point(35) = {-0.0003296684714830101, 0.05219577891971159, 0, 5e-05}; +Point(36) = {-0.0003296684714830101, 0.05249577891971159, 0, 5e-05}; +Point(41) = {-0.0006296684714830101, 0.05219577891971159, 0, 5e-05}; +Point(46) = {-0.0003296684714830101, 0.05189577891971159, 0, 5e-05}; +Point(47) = {0.0006296126735726663, 0.05297353457077709, 0, 5e-05}; +Point(48) = {0.0003296126735726663, 0.05297353457077709, 0, 5e-05}; +Point(49) = {0.0003296126735726663, 0.05327353457077709, 0, 5e-05}; +Point(54) = {2.961267357266633e-05, 0.05297353457077709, 0, 5e-05}; +Point(59) = {0.0003296126735726663, 0.05267353457077709, 0, 5e-05}; +Point(60) = {-2.099463986337402e-05, 0.05296941888068215, 0, 5e-05}; +Point(61) = {-0.000320994639863374, 0.05296941888068215, 0, 5e-05}; +Point(62) = {-0.000320994639863374, 0.05326941888068215, 0, 5e-05}; +Point(67) = {-0.000620994639863374, 0.05296941888068215, 0, 5e-05}; +Point(72) = {-0.000320994639863374, 0.05266941888068215, 0, 5e-05}; +Point(73) = {0.0006630718993601956, 0.05368504433453456, 0, 5e-05}; +Point(74) = {0.0003630718993601957, 0.05368504433453456, 0, 5e-05}; +Point(75) = {0.0003630718993601957, 0.05398504433453456, 0, 5e-05}; +Point(80) = {6.307189936019568e-05, 0.05368504433453456, 0, 5e-05}; +Point(85) = {0.0003630718993601957, 0.05338504433453456, 0, 5e-05}; +Point(86) = {-5.667421730138554e-05, 0.05367774138150769, 0, 5e-05}; +Point(87) = {-0.0003566742173013855, 0.05367774138150769, 0, 5e-05}; +Point(88) = {-0.0003566742173013855, 0.0539777413815077, 0, 5e-05}; +Point(93) = {-0.0006566742173013855, 0.05367774138150769, 0, 5e-05}; +Point(98) = {-0.0003566742173013855, 0.05337774138150769, 0, 5e-05}; +Point(99) = {0.0006240889992962307, 0.05445304261571076, 0, 5e-05}; +Point(100) = {0.0003240889992962307, 0.05445304261571076, 0, 5e-05}; +Point(101) = {0.0003240889992962307, 0.05475304261571076, 0, 5e-05}; +Point(106) = {2.408899929623074e-05, 0.05445304261571076, 0, 5e-05}; +Point(111) = {0.0003240889992962307, 0.05415304261571076, 0, 5e-05}; +Point(112) = {-7.436360003222414e-05, 0.05443456082801219, 0, 5e-05}; +Point(113) = {-0.0003743636000322241, 0.05443456082801219, 0, 5e-05}; +Point(114) = {-0.0003743636000322241, 0.0547345608280122, 0, 5e-05}; +Point(119) = {-0.0006743636000322241, 0.05443456082801219, 0, 5e-05}; +Point(124) = {-0.0003743636000322241, 0.05413456082801219, 0, 5e-05}; +Point(125) = {0.0006356389201697375, 0.05522744276699862, 0, 5e-05}; +Point(126) = {0.0003356389201697376, 0.05522744276699862, 0, 5e-05}; +Point(127) = {0.0003356389201697376, 0.05552744276699862, 0, 5e-05}; +Point(132) = {3.563892016973761e-05, 0.05522744276699862, 0, 5e-05}; +Point(137) = {0.0003356389201697376, 0.05492744276699862, 0, 5e-05}; +Point(138) = {-6.903775604920819e-05, 0.05519523604982682, 0, 5e-05}; +Point(139) = {-0.0003690377560492082, 0.05519523604982682, 0, 5e-05}; +Point(140) = {-0.0003690377560492082, 0.05549523604982682, 0, 5e-05}; +Point(145) = {-0.0006690377560492082, 0.05519523604982682, 0, 5e-05}; +Point(150) = {-0.0003690377560492082, 0.05489523604982682, 0, 5e-05}; +Point(151) = {0.0006504013508612529, 0.0559176585573706, 0, 5e-05}; +Point(152) = {0.0003504013508612529, 0.0559176585573706, 0, 5e-05}; +Point(153) = {0.0003504013508612529, 0.0562176585573706, 0, 5e-05}; +Point(158) = {5.040135086125291e-05, 0.0559176585573706, 0, 5e-05}; +Point(163) = {0.0003504013508612529, 0.05561765855737059, 0, 5e-05}; +Point(164) = {-5.446878149906116e-05, 0.0559442919694247, 0, 5e-05}; +Point(165) = {-0.0003544687814990611, 0.0559442919694247, 0, 5e-05}; +Point(166) = {-0.0003544687814990611, 0.0562442919694247, 0, 5e-05}; +Point(171) = {-0.0006544687814990611, 0.0559442919694247, 0, 5e-05}; +Point(176) = {-0.0003544687814990611, 0.0556442919694247, 0, 5e-05}; +Point(177) = {0.0006766738961534219, 0.05669599446422838, 0, 5e-05}; +Point(178) = {0.000376673896153422, 0.05669599446422838, 0, 5e-05}; +Point(179) = {0.000376673896153422, 0.05699599446422838, 0, 5e-05}; +Point(184) = {7.667389615342201e-05, 0.05669599446422838, 0, 5e-05}; +Point(189) = {0.000376673896153422, 0.05639599446422838, 0, 5e-05}; +Point(190) = {-4.77380284802001e-05, 0.05666458448442749, 0, 5e-05}; +Point(191) = {-0.0003477380284802001, 0.05666458448442749, 0, 5e-05}; +Point(192) = {-0.0003477380284802001, 0.0569645844844275, 0, 5e-05}; +Point(197) = {-0.0006477380284802001, 0.05666458448442749, 0, 5e-05}; +Point(202) = {-0.0003477380284802001, 0.05636458448442749, 0, 5e-05}; +Point(203) = {0.0006617136177061887, 0.05747424463591641, 0, 5e-05}; +Point(204) = {0.0003617136177061887, 0.05747424463591641, 0, 5e-05}; +Point(205) = {0.0003617136177061887, 0.05777424463591641, 0, 5e-05}; +Point(210) = {6.171361770618874e-05, 0.05747424463591641, 0, 5e-05}; +Point(215) = {0.0003617136177061887, 0.05717424463591641, 0, 5e-05}; +Point(216) = {-2.824647713894793e-05, 0.05742145524389549, 0, 5e-05}; +Point(217) = {-0.0003282464771389479, 0.05742145524389549, 0, 5e-05}; +Point(218) = {-0.0003282464771389479, 0.05772145524389549, 0, 5e-05}; +Point(223) = {-0.0006282464771389479, 0.05742145524389549, 0, 5e-05}; +Point(228) = {-0.0003282464771389479, 0.05712145524389549, 0, 5e-05}; +Point(229) = {0.0006431971206443603, 0.05816578698822938, 0, 5e-05}; +Point(230) = {0.0003431971206443603, 0.05816578698822938, 0, 5e-05}; +Point(231) = {0.0003431971206443603, 0.05846578698822938, 0, 5e-05}; +Point(236) = {4.319712064436036e-05, 0.05816578698822938, 0, 5e-05}; +Point(241) = {0.0003431971206443603, 0.05786578698822938, 0, 5e-05}; +Point(242) = {-3.009873631007443e-05, 0.0582351051053, 0, 5e-05}; +Point(243) = {-0.0003300987363100744, 0.0582351051053, 0, 5e-05}; +Point(244) = {-0.0003300987363100744, 0.0585351051053, 0, 5e-05}; +Point(249) = {-0.0006300987363100744, 0.0582351051053, 0, 5e-05}; +Point(254) = {-0.0003300987363100744, 0.0579351051053, 0, 5e-05}; +Point(255) = {0.0006737736211135162, 0.05891484121960718, 0, 5e-05}; +Point(256) = {0.0003737736211135162, 0.05891484121960718, 0, 5e-05}; +Point(257) = {0.0003737736211135162, 0.05921484121960718, 0, 5e-05}; +Point(262) = {7.377362111351621e-05, 0.05891484121960718, 0, 5e-05}; +Point(267) = {0.0003737736211135162, 0.05861484121960718, 0, 5e-05}; +Point(268) = {-3.367214978436107e-05, 0.05898305543321931, 0, 5e-05}; +Point(269) = {-0.000333672149784361, 0.05898305543321931, 0, 5e-05}; +Point(270) = {-0.000333672149784361, 0.05928305543321931, 0, 5e-05}; +Point(275) = {-0.000633672149784361, 0.05898305543321931, 0, 5e-05}; +Point(280) = {-0.000333672149784361, 0.05868305543321931, 0, 5e-05}; +Point(281) = {0.0006547026929519849, 0.05973347920603884, 0, 5e-05}; +Point(282) = {0.000354702692951985, 0.05973347920603884, 0, 5e-05}; +Point(283) = {0.000354702692951985, 0.06003347920603885, 0, 5e-05}; +Point(288) = {5.470269295198502e-05, 0.05973347920603884, 0, 5e-05}; +Point(293) = {0.000354702692951985, 0.05943347920603884, 0, 5e-05}; +Point(294) = {-5.25825153262506e-05, 0.05966619751139039, 0, 5e-05}; +Point(295) = {-0.0003525825153262506, 0.05966619751139039, 0, 5e-05}; +Point(296) = {-0.0003525825153262506, 0.05996619751139039, 0, 5e-05}; +Point(301) = {-0.0006525825153262505, 0.05966619751139039, 0, 5e-05}; +Point(306) = {-0.0003525825153262506, 0.05936619751139039, 0, 5e-05}; +Point(307) = {0.0006298289500880422, 0.06044223381318161, 0, 5e-05}; +Point(308) = {0.0003298289500880423, 0.06044223381318161, 0, 5e-05}; +Point(309) = {0.0003298289500880423, 0.06074223381318161, 0, 5e-05}; +Point(314) = {2.982895008804228e-05, 0.06044223381318161, 0, 5e-05}; +Point(319) = {0.0003298289500880423, 0.06014223381318161, 0, 5e-05}; +Point(320) = {-6.352831410466614e-05, 0.06042374759742837, 0, 5e-05}; +Point(321) = {-0.0003635283141046661, 0.06042374759742837, 0, 5e-05}; +Point(322) = {-0.0003635283141046661, 0.06072374759742837, 0, 5e-05}; +Point(327) = {-0.0006635283141046661, 0.06042374759742837, 0, 5e-05}; +Point(332) = {-0.0003635283141046661, 0.06012374759742837, 0, 5e-05}; +Point(333) = {0.0006252657823201807, 0.06117578297012194, 0, 5e-05}; +Point(334) = {0.0003252657823201808, 0.06117578297012194, 0, 5e-05}; +Point(335) = {0.0003252657823201808, 0.06147578297012195, 0, 5e-05}; +Point(340) = {2.526578232018081e-05, 0.06117578297012194, 0, 5e-05}; +Point(345) = {0.0003252657823201808, 0.06087578297012194, 0, 5e-05}; +Point(346) = {-3.207287103558092e-05, 0.06123420801978427, 0, 5e-05}; +Point(347) = {-0.0003320728710355809, 0.06123420801978427, 0, 5e-05}; +Point(348) = {-0.0003320728710355809, 0.06153420801978426, 0, 5e-05}; +Point(353) = {-0.0006320728710355809, 0.06123420801978427, 0, 5e-05}; +Point(358) = {-0.0003320728710355809, 0.06093420801978426, 0, 5e-05}; +Point(359) = {0.001343841221512454, 0.05201040987590951, 0, 5e-05}; +Point(360) = {0.001043841221512454, 0.05201040987590951, 0, 5e-05}; +Point(361) = {0.001043841221512454, 0.05231040987590951, 0, 5e-05}; +Point(366) = {0.0007438412215124541, 0.05201040987590951, 0, 5e-05}; +Point(371) = {0.001043841221512454, 0.0517104098759095, 0, 5e-05}; +Point(372) = {-0.0006631946565702998, 0.05199364926166675, 0, 5e-05}; +Point(373) = {-0.0009631946565702998, 0.05199364926166675, 0, 5e-05}; +Point(374) = {-0.0009631946565702998, 0.05229364926166675, 0, 5e-05}; +Point(379) = {-0.0012631946565703, 0.05199364926166675, 0, 5e-05}; +Point(384) = {-0.0009631946565702998, 0.05169364926166675, 0, 5e-05}; +Point(385) = {0.001270164931692493, 0.05276203299835092, 0, 5e-05}; +Point(386) = {0.0009701649316924926, 0.05276203299835092, 0, 5e-05}; +Point(387) = {0.0009701649316924926, 0.05306203299835092, 0, 5e-05}; +Point(392) = {0.0006701649316924927, 0.05276203299835092, 0, 5e-05}; +Point(397) = {0.0009701649316924926, 0.05246203299835091, 0, 5e-05}; +Point(398) = {-0.0007509048529311107, 0.05270944315925818, 0, 5e-05}; +Point(399) = {-0.001050904852931111, 0.05270944315925818, 0, 5e-05}; +Point(400) = {-0.001050904852931111, 0.05300944315925819, 0, 5e-05}; +Point(405) = {-0.00135090485293111, 0.05270944315925818, 0, 5e-05}; +Point(410) = {-0.001050904852931111, 0.05240944315925818, 0, 5e-05}; +Point(411) = {0.001347023842497507, 0.05349185418577391, 0, 5e-05}; +Point(412) = {0.001047023842497507, 0.05349185418577391, 0, 5e-05}; +Point(413) = {0.001047023842497507, 0.05379185418577391, 0, 5e-05}; +Point(418) = {0.000747023842497507, 0.05349185418577391, 0, 5e-05}; +Point(423) = {0.001047023842497507, 0.05319185418577391, 0, 5e-05}; +Point(424) = {-0.0006384200821262411, 0.05350222883585849, 0, 5e-05}; +Point(425) = {-0.0009384200821262412, 0.05350222883585849, 0, 5e-05}; +Point(426) = {-0.0009384200821262412, 0.05380222883585849, 0, 5e-05}; +Point(431) = {-0.001238420082126241, 0.05350222883585849, 0, 5e-05}; +Point(436) = {-0.0009384200821262412, 0.05320222883585849, 0, 5e-05}; +Point(437) = {0.00134521043680036, 0.0542431607158045, 0, 5e-05}; +Point(438) = {0.00104521043680036, 0.0542431607158045, 0, 5e-05}; +Point(439) = {0.00104521043680036, 0.05454316071580449, 0, 5e-05}; +Point(444) = {0.0007452104368003598, 0.0542431607158045, 0, 5e-05}; +Point(449) = {0.00104521043680036, 0.05394316071580449, 0, 5e-05}; +Point(450) = {-0.0007325804406474719, 0.05424794487731108, 0, 5e-05}; +Point(451) = {-0.001032580440647472, 0.05424794487731108, 0, 5e-05}; +Point(452) = {-0.001032580440647472, 0.05454794487731108, 0, 5e-05}; +Point(457) = {-0.001332580440647472, 0.05424794487731108, 0, 5e-05}; +Point(462) = {-0.001032580440647472, 0.05394794487731108, 0, 5e-05}; +Point(463) = {0.001344424346548935, 0.0549857739309984, 0, 5e-05}; +Point(464) = {0.001044424346548936, 0.0549857739309984, 0, 5e-05}; +Point(465) = {0.001044424346548936, 0.0552857739309984, 0, 5e-05}; +Point(470) = {0.0007444243465489356, 0.0549857739309984, 0, 5e-05}; +Point(475) = {0.001044424346548936, 0.0546857739309984, 0, 5e-05}; +Point(476) = {-0.0006930728629490233, 0.05497053339117137, 0, 5e-05}; +Point(477) = {-0.0009930728629490232, 0.05497053339117137, 0, 5e-05}; +Point(478) = {-0.0009930728629490232, 0.05527053339117137, 0, 5e-05}; +Point(483) = {-0.001293072862949023, 0.05497053339117137, 0, 5e-05}; +Point(488) = {-0.0009930728629490232, 0.05467053339117137, 0, 5e-05}; +Point(489) = {0.001256668266309038, 0.05573799856102372, 0, 5e-05}; +Point(490) = {0.0009566682663090379, 0.05573799856102372, 0, 5e-05}; +Point(491) = {0.0009566682663090379, 0.05603799856102372, 0, 5e-05}; +Point(496) = {0.000656668266309038, 0.05573799856102372, 0, 5e-05}; +Point(501) = {0.0009566682663090379, 0.05543799856102372, 0, 5e-05}; +Point(502) = {-0.0007560437998355104, 0.0556908685481636, 0, 5e-05}; +Point(503) = {-0.00105604379983551, 0.0556908685481636, 0, 5e-05}; +Point(504) = {-0.00105604379983551, 0.0559908685481636, 0, 5e-05}; +Point(509) = {-0.00135604379983551, 0.0556908685481636, 0, 5e-05}; +Point(514) = {-0.00105604379983551, 0.0553908685481636, 0, 5e-05}; +Point(515) = {0.001293441975869211, 0.05644783392217047, 0, 5e-05}; +Point(516) = {0.0009934419758692112, 0.05644783392217047, 0, 5e-05}; +Point(517) = {0.0009934419758692112, 0.05674783392217048, 0, 5e-05}; +Point(522) = {0.0006934419758692113, 0.05644783392217047, 0, 5e-05}; +Point(527) = {0.0009934419758692112, 0.05614783392217047, 0, 5e-05}; +Point(528) = {-0.0006807074695095454, 0.05647980368035509, 0, 5e-05}; +Point(529) = {-0.0009807074695095453, 0.05647980368035509, 0, 5e-05}; +Point(530) = {-0.0009807074695095453, 0.05677980368035509, 0, 5e-05}; +Point(535) = {-0.001280707469509545, 0.05647980368035509, 0, 5e-05}; +Point(540) = {-0.0009807074695095453, 0.05617980368035509, 0, 5e-05}; +Point(541) = {0.001305868763564326, 0.05723347191704271, 0, 5e-05}; +Point(542) = {0.001005868763564326, 0.05723347191704271, 0, 5e-05}; +Point(543) = {0.001005868763564326, 0.05753347191704272, 0, 5e-05}; +Point(548) = {0.0007058687635643263, 0.05723347191704271, 0, 5e-05}; +Point(553) = {0.001005868763564326, 0.05693347191704271, 0, 5e-05}; +Point(554) = {-0.0007091551778240386, 0.0572551997064092, 0, 5e-05}; +Point(555) = {-0.001009155177824039, 0.0572551997064092, 0, 5e-05}; +Point(556) = {-0.001009155177824039, 0.0575551997064092, 0, 5e-05}; +Point(561) = {-0.001309155177824038, 0.0572551997064092, 0, 5e-05}; +Point(566) = {-0.001009155177824039, 0.0569551997064092, 0, 5e-05}; +Point(567) = {0.001315484590007916, 0.05796671881542992, 0, 5e-05}; +Point(568) = {0.001015484590007916, 0.05796671881542992, 0, 5e-05}; +Point(569) = {0.001015484590007916, 0.05826671881542992, 0, 5e-05}; +Point(574) = {0.0007154845900079164, 0.05796671881542992, 0, 5e-05}; +Point(579) = {0.001015484590007916, 0.05766671881542992, 0, 5e-05}; +Point(580) = {-0.0006781490879136367, 0.05795560400383015, 0, 5e-05}; +Point(581) = {-0.0009781490879136366, 0.05795560400383015, 0, 5e-05}; +Point(582) = {-0.0009781490879136366, 0.05825560400383015, 0, 5e-05}; +Point(587) = {-0.001278149087913637, 0.05795560400383015, 0, 5e-05}; +Point(592) = {-0.0009781490879136366, 0.05765560400383014, 0, 5e-05}; +Point(593) = {0.001307527396078234, 0.0587563698303254, 0, 5e-05}; +Point(594) = {0.001007527396078234, 0.0587563698303254, 0, 5e-05}; +Point(595) = {0.001007527396078234, 0.0590563698303254, 0, 5e-05}; +Point(600) = {0.0007075273960782343, 0.0587563698303254, 0, 5e-05}; +Point(605) = {0.001007527396078234, 0.0584563698303254, 0, 5e-05}; +Point(606) = {-0.0007415208452865578, 0.05876130785800948, 0, 5e-05}; +Point(607) = {-0.001041520845286558, 0.05876130785800948, 0, 5e-05}; +Point(608) = {-0.001041520845286558, 0.05906130785800948, 0, 5e-05}; +Point(613) = {-0.001341520845286558, 0.05876130785800948, 0, 5e-05}; +Point(618) = {-0.001041520845286558, 0.05846130785800948, 0, 5e-05}; +Point(619) = {0.001291010903480235, 0.05948593789621671, 0, 5e-05}; +Point(620) = {0.0009910109034802349, 0.05948593789621671, 0, 5e-05}; +Point(621) = {0.0009910109034802349, 0.05978593789621671, 0, 5e-05}; +Point(626) = {0.000691010903480235, 0.05948593789621671, 0, 5e-05}; +Point(631) = {0.0009910109034802349, 0.05918593789621671, 0, 5e-05}; +Point(632) = {-0.0006622943415980759, 0.05948640317531273, 0, 5e-05}; +Point(633) = {-0.0009622943415980759, 0.05948640317531273, 0, 5e-05}; +Point(634) = {-0.0009622943415980759, 0.05978640317531273, 0, 5e-05}; +Point(639) = {-0.001262294341598076, 0.05948640317531273, 0, 5e-05}; +Point(644) = {-0.0009622943415980759, 0.05918640317531273, 0, 5e-05}; +Point(645) = {0.001294207568567576, 0.06021490672305127, 0, 5e-05}; +Point(646) = {0.0009942075685675756, 0.06021490672305127, 0, 5e-05}; +Point(647) = {0.0009942075685675756, 0.06051490672305127, 0, 5e-05}; +Point(652) = {0.0006942075685675757, 0.06021490672305127, 0, 5e-05}; +Point(657) = {0.0009942075685675756, 0.05991490672305127, 0, 5e-05}; +Point(658) = {-0.0006688105152134367, 0.06020973439616743, 0, 5e-05}; +Point(659) = {-0.0009688105152134367, 0.06020973439616743, 0, 5e-05}; +Point(660) = {-0.0009688105152134367, 0.06050973439616743, 0, 5e-05}; +Point(665) = {-0.001268810515213437, 0.06020973439616743, 0, 5e-05}; +Point(670) = {-0.0009688105152134367, 0.05990973439616742, 0, 5e-05}; +Point(671) = {0.00125873381630575, 0.0610103103077357, 0, 5e-05}; +Point(672) = {0.0009587338163057499, 0.0610103103077357, 0, 5e-05}; +Point(673) = {0.0009587338163057499, 0.0613103103077357, 0, 5e-05}; +Point(678) = {0.0006587338163057499, 0.0610103103077357, 0, 5e-05}; +Point(683) = {0.0009587338163057499, 0.0607103103077357, 0, 5e-05}; +Point(684) = {-0.0007456869812440998, 0.06097396225701408, 0, 5e-05}; +Point(685) = {-0.0010456869812441, 0.06097396225701408, 0, 5e-05}; +Point(686) = {-0.0010456869812441, 0.06127396225701409, 0, 5e-05}; +Point(691) = {-0.0013456869812441, 0.06097396225701408, 0, 5e-05}; +Point(696) = {-0.0010456869812441, 0.06067396225701409, 0, 5e-05}; +Point(697) = {0.001954478124127829, 0.0523707087412028, 0, 5e-05}; +Point(698) = {0.00165447812412783, 0.0523707087412028, 0, 5e-05}; +Point(699) = {0.00165447812412783, 0.0526707087412028, 0, 5e-05}; +Point(704) = {0.00135447812412783, 0.0523707087412028, 0, 5e-05}; +Point(709) = {0.00165447812412783, 0.0520707087412028, 0, 5e-05}; +Point(710) = {-0.001398061547308141, 0.05233178932099359, 0, 5e-05}; +Point(711) = {-0.001698061547308141, 0.05233178932099359, 0, 5e-05}; +Point(712) = {-0.001698061547308141, 0.05263178932099359, 0, 5e-05}; +Point(717) = {-0.001998061547308141, 0.05233178932099359, 0, 5e-05}; +Point(722) = {-0.001698061547308141, 0.05203178932099359, 0, 5e-05}; +Point(723) = {0.00189319245244234, 0.05309225706702574, 0, 5e-05}; +Point(724) = {0.00159319245244234, 0.05309225706702574, 0, 5e-05}; +Point(725) = {0.00159319245244234, 0.05339225706702574, 0, 5e-05}; +Point(730) = {0.00129319245244234, 0.05309225706702574, 0, 5e-05}; +Point(735) = {0.00159319245244234, 0.05279225706702574, 0, 5e-05}; +Point(736) = {-0.001428570602234602, 0.0531341585497568, 0, 5e-05}; +Point(737) = {-0.001728570602234602, 0.0531341585497568, 0, 5e-05}; +Point(738) = {-0.001728570602234602, 0.05343415854975681, 0, 5e-05}; +Point(743) = {-0.002028570602234602, 0.0531341585497568, 0, 5e-05}; +Point(748) = {-0.001728570602234602, 0.0528341585497568, 0, 5e-05}; +Point(749) = {0.002000299228375801, 0.05382708336438986, 0, 5e-05}; +Point(750) = {0.0017002992283758, 0.05382708336438986, 0, 5e-05}; +Point(751) = {0.0017002992283758, 0.05412708336438986, 0, 5e-05}; +Point(756) = {0.001400299228375801, 0.05382708336438986, 0, 5e-05}; +Point(761) = {0.0017002992283758, 0.05352708336438985, 0, 5e-05}; +Point(762) = {-0.001369962119140528, 0.05385383548221402, 0, 5e-05}; +Point(763) = {-0.001669962119140528, 0.05385383548221402, 0, 5e-05}; +Point(764) = {-0.001669962119140528, 0.05415383548221402, 0, 5e-05}; +Point(769) = {-0.001969962119140528, 0.05385383548221402, 0, 5e-05}; +Point(774) = {-0.001669962119140528, 0.05355383548221402, 0, 5e-05}; +Point(775) = {0.001964788368702185, 0.05459749230837005, 0, 5e-05}; +Point(776) = {0.001664788368702185, 0.05459749230837005, 0, 5e-05}; +Point(777) = {0.001664788368702185, 0.05489749230837005, 0, 5e-05}; +Point(782) = {0.001364788368702185, 0.05459749230837005, 0, 5e-05}; +Point(787) = {0.001664788368702185, 0.05429749230837005, 0, 5e-05}; +Point(788) = {-0.001281453659322673, 0.05458646708276096, 0, 5e-05}; +Point(789) = {-0.001581453659322673, 0.05458646708276096, 0, 5e-05}; +Point(790) = {-0.001581453659322673, 0.05488646708276097, 0, 5e-05}; +Point(795) = {-0.001881453659322673, 0.05458646708276096, 0, 5e-05}; +Point(800) = {-0.001581453659322673, 0.05428646708276096, 0, 5e-05}; +Point(801) = {0.001939133310701178, 0.05538725904881499, 0, 5e-05}; +Point(802) = {0.001639133310701178, 0.05538725904881499, 0, 5e-05}; +Point(803) = {0.001639133310701178, 0.05568725904881499, 0, 5e-05}; +Point(808) = {0.001339133310701178, 0.05538725904881499, 0, 5e-05}; +Point(813) = {0.001639133310701178, 0.05508725904881499, 0, 5e-05}; +Point(814) = {-0.001364509638738008, 0.05534556959673229, 0, 5e-05}; +Point(815) = {-0.001664509638738008, 0.05534556959673229, 0, 5e-05}; +Point(816) = {-0.001664509638738008, 0.05564556959673229, 0, 5e-05}; +Point(821) = {-0.001964509638738008, 0.05534556959673229, 0, 5e-05}; +Point(826) = {-0.001664509638738008, 0.05504556959673228, 0, 5e-05}; +Point(827) = {0.001905418869065665, 0.05606283381212075, 0, 5e-05}; +Point(828) = {0.001605418869065665, 0.05606283381212075, 0, 5e-05}; +Point(829) = {0.001605418869065665, 0.05636283381212075, 0, 5e-05}; +Point(834) = {0.001305418869065665, 0.05606283381212075, 0, 5e-05}; +Point(839) = {0.001605418869065665, 0.05576283381212074, 0, 5e-05}; +Point(840) = {-0.001328622150231326, 0.05610347820848061, 0, 5e-05}; +Point(841) = {-0.001628622150231326, 0.05610347820848061, 0, 5e-05}; +Point(842) = {-0.001628622150231326, 0.05640347820848061, 0, 5e-05}; +Point(847) = {-0.001928622150231326, 0.05610347820848061, 0, 5e-05}; +Point(852) = {-0.001628622150231326, 0.05580347820848061, 0, 5e-05}; +Point(853) = {0.001953509238901203, 0.05683568623957394, 0, 5e-05}; +Point(854) = {0.001653509238901203, 0.05683568623957394, 0, 5e-05}; +Point(855) = {0.001653509238901203, 0.05713568623957394, 0, 5e-05}; +Point(860) = {0.001353509238901203, 0.05683568623957394, 0, 5e-05}; +Point(865) = {0.001653509238901203, 0.05653568623957394, 0, 5e-05}; +Point(866) = {-0.001342417844452974, 0.05686357520149161, 0, 5e-05}; +Point(867) = {-0.001642417844452973, 0.05686357520149161, 0, 5e-05}; +Point(868) = {-0.001642417844452973, 0.05716357520149161, 0, 5e-05}; +Point(873) = {-0.001942417844452973, 0.05686357520149161, 0, 5e-05}; +Point(878) = {-0.001642417844452973, 0.05656357520149161, 0, 5e-05}; +Point(879) = {0.00189389692508506, 0.0575756202779401, 0, 5e-05}; +Point(880) = {0.00159389692508506, 0.0575756202779401, 0, 5e-05}; +Point(881) = {0.00159389692508506, 0.0578756202779401, 0, 5e-05}; +Point(886) = {0.00129389692508506, 0.0575756202779401, 0, 5e-05}; +Point(891) = {0.00159389692508506, 0.0572756202779401, 0, 5e-05}; +Point(892) = {-0.001393736612590722, 0.05759463190613436, 0, 5e-05}; +Point(893) = {-0.001693736612590722, 0.05759463190613436, 0, 5e-05}; +Point(894) = {-0.001693736612590722, 0.05789463190613436, 0, 5e-05}; +Point(899) = {-0.001993736612590722, 0.05759463190613436, 0, 5e-05}; +Point(904) = {-0.001693736612590722, 0.05729463190613435, 0, 5e-05}; +Point(905) = {0.001881980758488984, 0.0583526986195057, 0, 5e-05}; +Point(906) = {0.001581980758488984, 0.0583526986195057, 0, 5e-05}; +Point(907) = {0.001581980758488984, 0.0586526986195057, 0, 5e-05}; +Point(912) = {0.001281980758488984, 0.0583526986195057, 0, 5e-05}; +Point(917) = {0.001581980758488984, 0.0580526986195057, 0, 5e-05}; +Point(918) = {-0.001407384675765007, 0.05837088097705452, 0, 5e-05}; +Point(919) = {-0.001707384675765007, 0.05837088097705452, 0, 5e-05}; +Point(920) = {-0.001707384675765007, 0.05867088097705452, 0, 5e-05}; +Point(925) = {-0.002007384675765007, 0.05837088097705452, 0, 5e-05}; +Point(930) = {-0.001707384675765007, 0.05807088097705452, 0, 5e-05}; +Point(931) = {0.001925504651046011, 0.05909689120531774, 0, 5e-05}; +Point(932) = {0.001625504651046011, 0.05909689120531774, 0, 5e-05}; +Point(933) = {0.001625504651046011, 0.05939689120531774, 0, 5e-05}; +Point(938) = {0.001325504651046011, 0.05909689120531774, 0, 5e-05}; +Point(943) = {0.001625504651046011, 0.05879689120531774, 0, 5e-05}; +Point(944) = {-0.001334880058857906, 0.05912709082803226, 0, 5e-05}; +Point(945) = {-0.001634880058857906, 0.05912709082803226, 0, 5e-05}; +Point(946) = {-0.001634880058857906, 0.05942709082803226, 0, 5e-05}; +Point(951) = {-0.001934880058857905, 0.05912709082803226, 0, 5e-05}; +Point(956) = {-0.001634880058857906, 0.05882709082803225, 0, 5e-05}; +Point(957) = {0.002031021569881016, 0.05987308073028971, 0, 5e-05}; +Point(958) = {0.001731021569881016, 0.05987308073028971, 0, 5e-05}; +Point(959) = {0.001731021569881016, 0.06017308073028971, 0, 5e-05}; +Point(964) = {0.001431021569881016, 0.05987308073028971, 0, 5e-05}; +Point(969) = {0.001731021569881016, 0.0595730807302897, 0, 5e-05}; +Point(970) = {-0.001316510948147746, 0.0598647392840114, 0, 5e-05}; +Point(971) = {-0.001616510948147746, 0.0598647392840114, 0, 5e-05}; +Point(972) = {-0.001616510948147746, 0.0601647392840114, 0, 5e-05}; +Point(977) = {-0.001916510948147746, 0.0598647392840114, 0, 5e-05}; +Point(982) = {-0.001616510948147746, 0.0595647392840114, 0, 5e-05}; +Point(983) = {0.001869260709207976, 0.06062525350870947, 0, 5e-05}; +Point(984) = {0.001569260709207976, 0.06062525350870947, 0, 5e-05}; +Point(985) = {0.001569260709207976, 0.06092525350870948, 0, 5e-05}; +Point(990) = {0.001269260709207976, 0.06062525350870947, 0, 5e-05}; +Point(995) = {0.001569260709207976, 0.06032525350870947, 0, 5e-05}; +Point(996) = {-0.001299439510527621, 0.06061488425007455, 0, 5e-05}; +Point(997) = {-0.001599439510527621, 0.06061488425007455, 0, 5e-05}; +Point(998) = {-0.001599439510527621, 0.06091488425007455, 0, 5e-05}; +Point(1003) = {-0.001899439510527621, 0.06061488425007455, 0, 5e-05}; +Point(1008) = {-0.001599439510527621, 0.06031488425007455, 0, 5e-05}; +Point(1009) = {0.002608970407421687, 0.05267504038111447, 0, 5e-05}; +Point(1010) = {0.002308970407421687, 0.05267504038111447, 0, 5e-05}; +Point(1011) = {0.002308970407421687, 0.05297504038111447, 0, 5e-05}; +Point(1016) = {0.002008970407421687, 0.05267504038111447, 0, 5e-05}; +Point(1021) = {0.002308970407421687, 0.05237504038111446, 0, 5e-05}; +Point(1022) = {-0.001990072448381722, 0.0526444161358999, 0, 5e-05}; +Point(1023) = {-0.002290072448381722, 0.0526444161358999, 0, 5e-05}; +Point(1024) = {-0.002290072448381722, 0.0529444161358999, 0, 5e-05}; +Point(1029) = {-0.002590072448381722, 0.0526444161358999, 0, 5e-05}; +Point(1034) = {-0.002290072448381722, 0.0523444161358999, 0, 5e-05}; +Point(1035) = {0.002664666620469497, 0.05337699434815904, 0, 5e-05}; +Point(1036) = {0.002364666620469497, 0.05337699434815904, 0, 5e-05}; +Point(1037) = {0.002364666620469497, 0.05367699434815904, 0, 5e-05}; +Point(1042) = {0.002064666620469497, 0.05337699434815904, 0, 5e-05}; +Point(1047) = {0.002364666620469497, 0.05307699434815904, 0, 5e-05}; +Point(1048) = {-0.002039109626488811, 0.05339687002522631, 0, 5e-05}; +Point(1049) = {-0.002339109626488811, 0.05339687002522631, 0, 5e-05}; +Point(1050) = {-0.002339109626488811, 0.05369687002522631, 0, 5e-05}; +Point(1055) = {-0.002639109626488811, 0.05339687002522631, 0, 5e-05}; +Point(1060) = {-0.002339109626488811, 0.0530968700252263, 0, 5e-05}; +Point(1061) = {0.002640723928849084, 0.05415048870307321, 0, 5e-05}; +Point(1062) = {0.002340723928849084, 0.05415048870307321, 0, 5e-05}; +Point(1063) = {0.002340723928849084, 0.05445048870307322, 0, 5e-05}; +Point(1068) = {0.002040723928849084, 0.05415048870307321, 0, 5e-05}; +Point(1073) = {0.002340723928849084, 0.05385048870307321, 0, 5e-05}; +Point(1074) = {-0.002021903362491589, 0.05415134533731468, 0, 5e-05}; +Point(1075) = {-0.002321903362491589, 0.05415134533731468, 0, 5e-05}; +Point(1076) = {-0.002321903362491589, 0.05445134533731467, 0, 5e-05}; +Point(1081) = {-0.002621903362491588, 0.05415134533731468, 0, 5e-05}; +Point(1086) = {-0.002321903362491589, 0.05385134533731467, 0, 5e-05}; +Point(1087) = {0.002613748790500103, 0.0548970042557828, 0, 5e-05}; +Point(1088) = {0.002313748790500103, 0.0548970042557828, 0, 5e-05}; +Point(1089) = {0.002313748790500103, 0.0551970042557828, 0, 5e-05}; +Point(1094) = {0.002013748790500103, 0.0548970042557828, 0, 5e-05}; +Point(1099) = {0.002313748790500103, 0.0545970042557828, 0, 5e-05}; +Point(1100) = {-0.002059965410467687, 0.05493535794177713, 0, 5e-05}; +Point(1101) = {-0.002359965410467687, 0.05493535794177713, 0, 5e-05}; +Point(1102) = {-0.002359965410467687, 0.05523535794177713, 0, 5e-05}; +Point(1107) = {-0.002659965410467687, 0.05493535794177713, 0, 5e-05}; +Point(1112) = {-0.002359965410467687, 0.05463535794177713, 0, 5e-05}; +Point(1113) = {0.002613247032006386, 0.05563667456706503, 0, 5e-05}; +Point(1114) = {0.002313247032006386, 0.05563667456706503, 0, 5e-05}; +Point(1115) = {0.002313247032006386, 0.05593667456706504, 0, 5e-05}; +Point(1120) = {0.002013247032006386, 0.05563667456706503, 0, 5e-05}; +Point(1125) = {0.002313247032006386, 0.05533667456706504, 0, 5e-05}; +Point(1126) = {-0.002104514916161781, 0.05566771487947585, 0, 5e-05}; +Point(1127) = {-0.002404514916161781, 0.05566771487947585, 0, 5e-05}; +Point(1128) = {-0.002404514916161781, 0.05596771487947585, 0, 5e-05}; +Point(1133) = {-0.00270451491616178, 0.05566771487947585, 0, 5e-05}; +Point(1138) = {-0.002404514916161781, 0.05536771487947585, 0, 5e-05}; +Point(1139) = {0.002687013119669637, 0.05636999811589623, 0, 5e-05}; +Point(1140) = {0.002387013119669637, 0.05636999811589623, 0, 5e-05}; +Point(1141) = {0.002387013119669637, 0.05666999811589623, 0, 5e-05}; +Point(1146) = {0.002087013119669637, 0.05636999811589623, 0, 5e-05}; +Point(1151) = {0.002387013119669637, 0.05606999811589623, 0, 5e-05}; +Point(1152) = {-0.002084947575093222, 0.05639637071095842, 0, 5e-05}; +Point(1153) = {-0.002384947575093222, 0.05639637071095842, 0, 5e-05}; +Point(1154) = {-0.002384947575093222, 0.05669637071095842, 0, 5e-05}; +Point(1159) = {-0.002684947575093222, 0.05639637071095842, 0, 5e-05}; +Point(1164) = {-0.002384947575093222, 0.05609637071095842, 0, 5e-05}; +Point(1165) = {0.002666404247671088, 0.05717833821601761, 0, 5e-05}; +Point(1166) = {0.002366404247671088, 0.05717833821601761, 0, 5e-05}; +Point(1167) = {0.002366404247671088, 0.05747833821601761, 0, 5e-05}; +Point(1172) = {0.002066404247671088, 0.05717833821601761, 0, 5e-05}; +Point(1177) = {0.002366404247671088, 0.05687833821601761, 0, 5e-05}; +Point(1178) = {-0.00199554834304403, 0.05717984163258821, 0, 5e-05}; +Point(1179) = {-0.00229554834304403, 0.05717984163258821, 0, 5e-05}; +Point(1180) = {-0.00229554834304403, 0.05747984163258821, 0, 5e-05}; +Point(1185) = {-0.002595548343044029, 0.05717984163258821, 0, 5e-05}; +Point(1190) = {-0.00229554834304403, 0.05687984163258821, 0, 5e-05}; +Point(1191) = {0.002572899709873786, 0.05792497360374915, 0, 5e-05}; +Point(1192) = {0.002272899709873786, 0.05792497360374915, 0, 5e-05}; +Point(1193) = {0.002272899709873786, 0.05822497360374915, 0, 5e-05}; +Point(1198) = {0.001972899709873786, 0.05792497360374915, 0, 5e-05}; +Point(1203) = {0.002272899709873786, 0.05762497360374915, 0, 5e-05}; +Point(1204) = {-0.001998625476157118, 0.05789152170498831, 0, 5e-05}; +Point(1205) = {-0.002298625476157118, 0.05789152170498831, 0, 5e-05}; +Point(1206) = {-0.002298625476157118, 0.05819152170498831, 0, 5e-05}; +Point(1211) = {-0.002598625476157118, 0.05789152170498831, 0, 5e-05}; +Point(1216) = {-0.002298625476157118, 0.05759152170498831, 0, 5e-05}; +Point(1217) = {0.002515225561242655, 0.05868453109018388, 0, 5e-05}; +Point(1218) = {0.002215225561242656, 0.05868453109018388, 0, 5e-05}; +Point(1219) = {0.002215225561242656, 0.05898453109018388, 0, 5e-05}; +Point(1224) = {0.001915225561242656, 0.05868453109018388, 0, 5e-05}; +Point(1229) = {0.002215225561242656, 0.05838453109018388, 0, 5e-05}; +Point(1230) = {-0.001943183903204363, 0.05867698526218764, 0, 5e-05}; +Point(1231) = {-0.002243183903204363, 0.05867698526218764, 0, 5e-05}; +Point(1232) = {-0.002243183903204363, 0.05897698526218764, 0, 5e-05}; +Point(1237) = {-0.002543183903204363, 0.05867698526218764, 0, 5e-05}; +Point(1242) = {-0.002243183903204363, 0.05837698526218764, 0, 5e-05}; +Point(1243) = {0.002550444278230631, 0.05938483622047017, 0, 5e-05}; +Point(1244) = {0.002250444278230632, 0.05938483622047017, 0, 5e-05}; +Point(1245) = {0.002250444278230632, 0.05968483622047017, 0, 5e-05}; +Point(1250) = {0.001950444278230632, 0.05938483622047017, 0, 5e-05}; +Point(1255) = {0.002250444278230632, 0.05908483622047016, 0, 5e-05}; +Point(1256) = {-0.002113823012262035, 0.05940558086602881, 0, 5e-05}; +Point(1257) = {-0.002413823012262035, 0.05940558086602881, 0, 5e-05}; +Point(1258) = {-0.002413823012262035, 0.05970558086602881, 0, 5e-05}; +Point(1263) = {-0.002713823012262034, 0.05940558086602881, 0, 5e-05}; +Point(1268) = {-0.002413823012262035, 0.05910558086602881, 0, 5e-05}; +Point(1269) = {0.0026506483054979, 0.060150175683274, 0, 5e-05}; +Point(1270) = {0.0023506483054979, 0.060150175683274, 0, 5e-05}; +Point(1271) = {0.0023506483054979, 0.060450175683274, 0, 5e-05}; +Point(1276) = {0.0020506483054979, 0.060150175683274, 0, 5e-05}; +Point(1281) = {0.0023506483054979, 0.059850175683274, 0, 5e-05}; +Point(1282) = {-0.001986947313226735, 0.06015562033906513, 0, 5e-05}; +Point(1283) = {-0.002286947313226735, 0.06015562033906513, 0, 5e-05}; +Point(1284) = {-0.002286947313226735, 0.06045562033906513, 0, 5e-05}; +Point(1289) = {-0.002586947313226735, 0.06015562033906513, 0, 5e-05}; +Point(1294) = {-0.002286947313226735, 0.05985562033906513, 0, 5e-05}; +Point(1295) = {0.001796852017268673, 0.05158093966674707, 0, 5e-05}; +Point(1296) = {0.001496852017268673, 0.05158093966674707, 0, 5e-05}; +Point(1297) = {0.001496852017268673, 0.05188093966674708, 0, 5e-05}; +Point(1302) = {0.001196852017268673, 0.05158093966674707, 0, 5e-05}; +Point(1307) = {0.001496852017268673, 0.05128093966674707, 0, 5e-05}; +Point(1308) = {-0.001234120788063183, 0.05159740818643727, 0, 5e-05}; +Point(1309) = {-0.001534120788063183, 0.05159740818643727, 0, 5e-05}; +Point(1310) = {-0.001534120788063183, 0.05189740818643727, 0, 5e-05}; +Point(1315) = {-0.001834120788063182, 0.05159740818643727, 0, 5e-05}; +Point(1320) = {-0.001534120788063183, 0.05129740818643727, 0, 5e-05}; +Point(1321) = {0.0006996894964198882, 0.0514725585704113, 0, 5e-05}; +Point(1322) = {0.0003996894964198883, 0.0514725585704113, 0, 5e-05}; +Point(1323) = {0.0003996894964198883, 0.0517725585704113, 0, 5e-05}; +Point(1328) = {9.96894964198883e-05, 0.0514725585704113, 0, 5e-05}; +Point(1333) = {0.0003996894964198883, 0.0511725585704113, 0, 5e-05}; +Point(1334) = {-0.0001018925337573829, 0.05147306826503763, 0, 5e-05}; +Point(1335) = {-0.0004018925337573828, 0.05147306826503763, 0, 5e-05}; +Point(1336) = {-0.0004018925337573828, 0.05177306826503763, 0, 5e-05}; +Point(1341) = {-0.0007018925337573829, 0.05147306826503763, 0, 5e-05}; +Point(1346) = {-0.0004018925337573828, 0.05117306826503763, 0, 5e-05}; +Line(1) = {7, 14}; +Line(2) = {14, 10}; +Line(3) = {8, 15}; +Line(4) = {15, 11}; +Line(5) = {14, 15}; +Line(6) = {2, 4}; +Line(7) = {3, 5}; +Circle(8) = {2, 1, 3}; +Circle(9) = {7, 6, 4}; +Circle(10) = {5, 6, 8}; +Circle(11) = {11, 9, 12}; +Circle(12) = {12, 9, 10}; +Circle(20) = {21, 22, 23}; +Circle(21) = {23, 22, 28}; +Circle(22) = {28, 22, 33}; +Circle(23) = {33, 22, 21}; +Circle(26) = {34, 35, 36}; +Circle(27) = {36, 35, 41}; +Circle(28) = {41, 35, 46}; +Circle(29) = {46, 35, 34}; +Circle(32) = {47, 48, 49}; +Circle(33) = {49, 48, 54}; +Circle(34) = {54, 48, 59}; +Circle(35) = {59, 48, 47}; +Circle(38) = {60, 61, 62}; +Circle(39) = {62, 61, 67}; +Circle(40) = {67, 61, 72}; +Circle(41) = {72, 61, 60}; +Circle(44) = {73, 74, 75}; +Circle(45) = {75, 74, 80}; +Circle(46) = {80, 74, 85}; +Circle(47) = {85, 74, 73}; +Circle(50) = {86, 87, 88}; +Circle(51) = {88, 87, 93}; +Circle(52) = {93, 87, 98}; +Circle(53) = {98, 87, 86}; +Circle(56) = {99, 100, 101}; +Circle(57) = {101, 100, 106}; +Circle(58) = {106, 100, 111}; +Circle(59) = {111, 100, 99}; +Circle(62) = {112, 113, 114}; +Circle(63) = {114, 113, 119}; +Circle(64) = {119, 113, 124}; +Circle(65) = {124, 113, 112}; +Circle(68) = {125, 126, 127}; +Circle(69) = {127, 126, 132}; +Circle(70) = {132, 126, 137}; +Circle(71) = {137, 126, 125}; +Circle(74) = {138, 139, 140}; +Circle(75) = {140, 139, 145}; +Circle(76) = {145, 139, 150}; +Circle(77) = {150, 139, 138}; +Circle(80) = {151, 152, 153}; +Circle(81) = {153, 152, 158}; +Circle(82) = {158, 152, 163}; +Circle(83) = {163, 152, 151}; +Circle(86) = {164, 165, 166}; +Circle(87) = {166, 165, 171}; +Circle(88) = {171, 165, 176}; +Circle(89) = {176, 165, 164}; +Circle(92) = {177, 178, 179}; +Circle(93) = {179, 178, 184}; +Circle(94) = {184, 178, 189}; +Circle(95) = {189, 178, 177}; +Circle(98) = {190, 191, 192}; +Circle(99) = {192, 191, 197}; +Circle(100) = {197, 191, 202}; +Circle(101) = {202, 191, 190}; +Circle(104) = {203, 204, 205}; +Circle(105) = {205, 204, 210}; +Circle(106) = {210, 204, 215}; +Circle(107) = {215, 204, 203}; +Circle(110) = {216, 217, 218}; +Circle(111) = {218, 217, 223}; +Circle(112) = {223, 217, 228}; +Circle(113) = {228, 217, 216}; +Circle(116) = {229, 230, 231}; +Circle(117) = {231, 230, 236}; +Circle(118) = {236, 230, 241}; +Circle(119) = {241, 230, 229}; +Circle(122) = {242, 243, 244}; +Circle(123) = {244, 243, 249}; +Circle(124) = {249, 243, 254}; +Circle(125) = {254, 243, 242}; +Circle(128) = {255, 256, 257}; +Circle(129) = {257, 256, 262}; +Circle(130) = {262, 256, 267}; +Circle(131) = {267, 256, 255}; +Circle(134) = {268, 269, 270}; +Circle(135) = {270, 269, 275}; +Circle(136) = {275, 269, 280}; +Circle(137) = {280, 269, 268}; +Circle(140) = {281, 282, 283}; +Circle(141) = {283, 282, 288}; +Circle(142) = {288, 282, 293}; +Circle(143) = {293, 282, 281}; +Circle(146) = {294, 295, 296}; +Circle(147) = {296, 295, 301}; +Circle(148) = {301, 295, 306}; +Circle(149) = {306, 295, 294}; +Circle(152) = {307, 308, 309}; +Circle(153) = {309, 308, 314}; +Circle(154) = {314, 308, 319}; +Circle(155) = {319, 308, 307}; +Circle(158) = {320, 321, 322}; +Circle(159) = {322, 321, 327}; +Circle(160) = {327, 321, 332}; +Circle(161) = {332, 321, 320}; +Circle(164) = {333, 334, 335}; +Circle(165) = {335, 334, 340}; +Circle(166) = {340, 334, 345}; +Circle(167) = {345, 334, 333}; +Circle(170) = {346, 347, 348}; +Circle(171) = {348, 347, 353}; +Circle(172) = {353, 347, 358}; +Circle(173) = {358, 347, 346}; +Circle(176) = {359, 360, 361}; +Circle(177) = {361, 360, 366}; +Circle(178) = {366, 360, 371}; +Circle(179) = {371, 360, 359}; +Circle(182) = {372, 373, 374}; +Circle(183) = {374, 373, 379}; +Circle(184) = {379, 373, 384}; +Circle(185) = {384, 373, 372}; +Circle(188) = {385, 386, 387}; +Circle(189) = {387, 386, 392}; +Circle(190) = {392, 386, 397}; +Circle(191) = {397, 386, 385}; +Circle(194) = {398, 399, 400}; +Circle(195) = {400, 399, 405}; +Circle(196) = {405, 399, 410}; +Circle(197) = {410, 399, 398}; +Circle(200) = {411, 412, 413}; +Circle(201) = {413, 412, 418}; +Circle(202) = {418, 412, 423}; +Circle(203) = {423, 412, 411}; +Circle(206) = {424, 425, 426}; +Circle(207) = {426, 425, 431}; +Circle(208) = {431, 425, 436}; +Circle(209) = {436, 425, 424}; +Circle(212) = {437, 438, 439}; +Circle(213) = {439, 438, 444}; +Circle(214) = {444, 438, 449}; +Circle(215) = {449, 438, 437}; +Circle(218) = {450, 451, 452}; +Circle(219) = {452, 451, 457}; +Circle(220) = {457, 451, 462}; +Circle(221) = {462, 451, 450}; +Circle(224) = {463, 464, 465}; +Circle(225) = {465, 464, 470}; +Circle(226) = {470, 464, 475}; +Circle(227) = {475, 464, 463}; +Circle(230) = {476, 477, 478}; +Circle(231) = {478, 477, 483}; +Circle(232) = {483, 477, 488}; +Circle(233) = {488, 477, 476}; +Circle(236) = {489, 490, 491}; +Circle(237) = {491, 490, 496}; +Circle(238) = {496, 490, 501}; +Circle(239) = {501, 490, 489}; +Circle(242) = {502, 503, 504}; +Circle(243) = {504, 503, 509}; +Circle(244) = {509, 503, 514}; +Circle(245) = {514, 503, 502}; +Circle(248) = {515, 516, 517}; +Circle(249) = {517, 516, 522}; +Circle(250) = {522, 516, 527}; +Circle(251) = {527, 516, 515}; +Circle(254) = {528, 529, 530}; +Circle(255) = {530, 529, 535}; +Circle(256) = {535, 529, 540}; +Circle(257) = {540, 529, 528}; +Circle(260) = {541, 542, 543}; +Circle(261) = {543, 542, 548}; +Circle(262) = {548, 542, 553}; +Circle(263) = {553, 542, 541}; +Circle(266) = {554, 555, 556}; +Circle(267) = {556, 555, 561}; +Circle(268) = {561, 555, 566}; +Circle(269) = {566, 555, 554}; +Circle(272) = {567, 568, 569}; +Circle(273) = {569, 568, 574}; +Circle(274) = {574, 568, 579}; +Circle(275) = {579, 568, 567}; +Circle(278) = {580, 581, 582}; +Circle(279) = {582, 581, 587}; +Circle(280) = {587, 581, 592}; +Circle(281) = {592, 581, 580}; +Circle(284) = {593, 594, 595}; +Circle(285) = {595, 594, 600}; +Circle(286) = {600, 594, 605}; +Circle(287) = {605, 594, 593}; +Circle(290) = {606, 607, 608}; +Circle(291) = {608, 607, 613}; +Circle(292) = {613, 607, 618}; +Circle(293) = {618, 607, 606}; +Circle(296) = {619, 620, 621}; +Circle(297) = {621, 620, 626}; +Circle(298) = {626, 620, 631}; +Circle(299) = {631, 620, 619}; +Circle(302) = {632, 633, 634}; +Circle(303) = {634, 633, 639}; +Circle(304) = {639, 633, 644}; +Circle(305) = {644, 633, 632}; +Circle(308) = {645, 646, 647}; +Circle(309) = {647, 646, 652}; +Circle(310) = {652, 646, 657}; +Circle(311) = {657, 646, 645}; +Circle(314) = {658, 659, 660}; +Circle(315) = {660, 659, 665}; +Circle(316) = {665, 659, 670}; +Circle(317) = {670, 659, 658}; +Circle(320) = {671, 672, 673}; +Circle(321) = {673, 672, 678}; +Circle(322) = {678, 672, 683}; +Circle(323) = {683, 672, 671}; +Circle(326) = {684, 685, 686}; +Circle(327) = {686, 685, 691}; +Circle(328) = {691, 685, 696}; +Circle(329) = {696, 685, 684}; +Circle(332) = {697, 698, 699}; +Circle(333) = {699, 698, 704}; +Circle(334) = {704, 698, 709}; +Circle(335) = {709, 698, 697}; +Circle(338) = {710, 711, 712}; +Circle(339) = {712, 711, 717}; +Circle(340) = {717, 711, 722}; +Circle(341) = {722, 711, 710}; +Circle(344) = {723, 724, 725}; +Circle(345) = {725, 724, 730}; +Circle(346) = {730, 724, 735}; +Circle(347) = {735, 724, 723}; +Circle(350) = {736, 737, 738}; +Circle(351) = {738, 737, 743}; +Circle(352) = {743, 737, 748}; +Circle(353) = {748, 737, 736}; +Circle(356) = {749, 750, 751}; +Circle(357) = {751, 750, 756}; +Circle(358) = {756, 750, 761}; +Circle(359) = {761, 750, 749}; +Circle(362) = {762, 763, 764}; +Circle(363) = {764, 763, 769}; +Circle(364) = {769, 763, 774}; +Circle(365) = {774, 763, 762}; +Circle(368) = {775, 776, 777}; +Circle(369) = {777, 776, 782}; +Circle(370) = {782, 776, 787}; +Circle(371) = {787, 776, 775}; +Circle(374) = {788, 789, 790}; +Circle(375) = {790, 789, 795}; +Circle(376) = {795, 789, 800}; +Circle(377) = {800, 789, 788}; +Circle(380) = {801, 802, 803}; +Circle(381) = {803, 802, 808}; +Circle(382) = {808, 802, 813}; +Circle(383) = {813, 802, 801}; +Circle(386) = {814, 815, 816}; +Circle(387) = {816, 815, 821}; +Circle(388) = {821, 815, 826}; +Circle(389) = {826, 815, 814}; +Circle(392) = {827, 828, 829}; +Circle(393) = {829, 828, 834}; +Circle(394) = {834, 828, 839}; +Circle(395) = {839, 828, 827}; +Circle(398) = {840, 841, 842}; +Circle(399) = {842, 841, 847}; +Circle(400) = {847, 841, 852}; +Circle(401) = {852, 841, 840}; +Circle(404) = {853, 854, 855}; +Circle(405) = {855, 854, 860}; +Circle(406) = {860, 854, 865}; +Circle(407) = {865, 854, 853}; +Circle(410) = {866, 867, 868}; +Circle(411) = {868, 867, 873}; +Circle(412) = {873, 867, 878}; +Circle(413) = {878, 867, 866}; +Circle(416) = {879, 880, 881}; +Circle(417) = {881, 880, 886}; +Circle(418) = {886, 880, 891}; +Circle(419) = {891, 880, 879}; +Circle(422) = {892, 893, 894}; +Circle(423) = {894, 893, 899}; +Circle(424) = {899, 893, 904}; +Circle(425) = {904, 893, 892}; +Circle(428) = {905, 906, 907}; +Circle(429) = {907, 906, 912}; +Circle(430) = {912, 906, 917}; +Circle(431) = {917, 906, 905}; +Circle(434) = {918, 919, 920}; +Circle(435) = {920, 919, 925}; +Circle(436) = {925, 919, 930}; +Circle(437) = {930, 919, 918}; +Circle(440) = {931, 932, 933}; +Circle(441) = {933, 932, 938}; +Circle(442) = {938, 932, 943}; +Circle(443) = {943, 932, 931}; +Circle(446) = {944, 945, 946}; +Circle(447) = {946, 945, 951}; +Circle(448) = {951, 945, 956}; +Circle(449) = {956, 945, 944}; +Circle(452) = {957, 958, 959}; +Circle(453) = {959, 958, 964}; +Circle(454) = {964, 958, 969}; +Circle(455) = {969, 958, 957}; +Circle(458) = {970, 971, 972}; +Circle(459) = {972, 971, 977}; +Circle(460) = {977, 971, 982}; +Circle(461) = {982, 971, 970}; +Circle(464) = {983, 984, 985}; +Circle(465) = {985, 984, 990}; +Circle(466) = {990, 984, 995}; +Circle(467) = {995, 984, 983}; +Circle(470) = {996, 997, 998}; +Circle(471) = {998, 997, 1003}; +Circle(472) = {1003, 997, 1008}; +Circle(473) = {1008, 997, 996}; +Circle(476) = {1009, 1010, 1011}; +Circle(477) = {1011, 1010, 1016}; +Circle(478) = {1016, 1010, 1021}; +Circle(479) = {1021, 1010, 1009}; +Circle(482) = {1022, 1023, 1024}; +Circle(483) = {1024, 1023, 1029}; +Circle(484) = {1029, 1023, 1034}; +Circle(485) = {1034, 1023, 1022}; +Circle(488) = {1035, 1036, 1037}; +Circle(489) = {1037, 1036, 1042}; +Circle(490) = {1042, 1036, 1047}; +Circle(491) = {1047, 1036, 1035}; +Circle(494) = {1048, 1049, 1050}; +Circle(495) = {1050, 1049, 1055}; +Circle(496) = {1055, 1049, 1060}; +Circle(497) = {1060, 1049, 1048}; +Circle(500) = {1061, 1062, 1063}; +Circle(501) = {1063, 1062, 1068}; +Circle(502) = {1068, 1062, 1073}; +Circle(503) = {1073, 1062, 1061}; +Circle(506) = {1074, 1075, 1076}; +Circle(507) = {1076, 1075, 1081}; +Circle(508) = {1081, 1075, 1086}; +Circle(509) = {1086, 1075, 1074}; +Circle(512) = {1087, 1088, 1089}; +Circle(513) = {1089, 1088, 1094}; +Circle(514) = {1094, 1088, 1099}; +Circle(515) = {1099, 1088, 1087}; +Circle(518) = {1100, 1101, 1102}; +Circle(519) = {1102, 1101, 1107}; +Circle(520) = {1107, 1101, 1112}; +Circle(521) = {1112, 1101, 1100}; +Circle(524) = {1113, 1114, 1115}; +Circle(525) = {1115, 1114, 1120}; +Circle(526) = {1120, 1114, 1125}; +Circle(527) = {1125, 1114, 1113}; +Circle(530) = {1126, 1127, 1128}; +Circle(531) = {1128, 1127, 1133}; +Circle(532) = {1133, 1127, 1138}; +Circle(533) = {1138, 1127, 1126}; +Circle(536) = {1139, 1140, 1141}; +Circle(537) = {1141, 1140, 1146}; +Circle(538) = {1146, 1140, 1151}; +Circle(539) = {1151, 1140, 1139}; +Circle(542) = {1152, 1153, 1154}; +Circle(543) = {1154, 1153, 1159}; +Circle(544) = {1159, 1153, 1164}; +Circle(545) = {1164, 1153, 1152}; +Circle(548) = {1165, 1166, 1167}; +Circle(549) = {1167, 1166, 1172}; +Circle(550) = {1172, 1166, 1177}; +Circle(551) = {1177, 1166, 1165}; +Circle(554) = {1178, 1179, 1180}; +Circle(555) = {1180, 1179, 1185}; +Circle(556) = {1185, 1179, 1190}; +Circle(557) = {1190, 1179, 1178}; +Circle(560) = {1191, 1192, 1193}; +Circle(561) = {1193, 1192, 1198}; +Circle(562) = {1198, 1192, 1203}; +Circle(563) = {1203, 1192, 1191}; +Circle(566) = {1204, 1205, 1206}; +Circle(567) = {1206, 1205, 1211}; +Circle(568) = {1211, 1205, 1216}; +Circle(569) = {1216, 1205, 1204}; +Circle(572) = {1217, 1218, 1219}; +Circle(573) = {1219, 1218, 1224}; +Circle(574) = {1224, 1218, 1229}; +Circle(575) = {1229, 1218, 1217}; +Circle(578) = {1230, 1231, 1232}; +Circle(579) = {1232, 1231, 1237}; +Circle(580) = {1237, 1231, 1242}; +Circle(581) = {1242, 1231, 1230}; +Circle(584) = {1243, 1244, 1245}; +Circle(585) = {1245, 1244, 1250}; +Circle(586) = {1250, 1244, 1255}; +Circle(587) = {1255, 1244, 1243}; +Circle(590) = {1256, 1257, 1258}; +Circle(591) = {1258, 1257, 1263}; +Circle(592) = {1263, 1257, 1268}; +Circle(593) = {1268, 1257, 1256}; +Circle(596) = {1269, 1270, 1271}; +Circle(597) = {1271, 1270, 1276}; +Circle(598) = {1276, 1270, 1281}; +Circle(599) = {1281, 1270, 1269}; +Circle(602) = {1282, 1283, 1284}; +Circle(603) = {1284, 1283, 1289}; +Circle(604) = {1289, 1283, 1294}; +Circle(605) = {1294, 1283, 1282}; +Circle(608) = {1295, 1296, 1297}; +Circle(609) = {1297, 1296, 1302}; +Circle(610) = {1302, 1296, 1307}; +Circle(611) = {1307, 1296, 1295}; +Circle(614) = {1308, 1309, 1310}; +Circle(615) = {1310, 1309, 1315}; +Circle(616) = {1315, 1309, 1320}; +Circle(617) = {1320, 1309, 1308}; +Circle(620) = {1321, 1322, 1323}; +Circle(621) = {1323, 1322, 1328}; +Circle(622) = {1328, 1322, 1333}; +Circle(623) = {1333, 1322, 1321}; +Circle(626) = {1334, 1335, 1336}; +Circle(627) = {1336, 1335, 1341}; +Circle(628) = {1341, 1335, 1346}; +Circle(629) = {1346, 1335, 1334}; +Line Loop(19) = {20, 21, 22, 23}; +Plane Surface(19) = {19}; +Line Loop(25) = {26, 27, 28, 29}; +Plane Surface(25) = {25}; +Line Loop(31) = {32, 33, 34, 35}; +Plane Surface(31) = {31}; +Line Loop(37) = {38, 39, 40, 41}; +Plane Surface(37) = {37}; +Line Loop(43) = {44, 45, 46, 47}; +Plane Surface(43) = {43}; +Line Loop(49) = {50, 51, 52, 53}; +Plane Surface(49) = {49}; +Line Loop(55) = {56, 57, 58, 59}; +Plane Surface(55) = {55}; +Line Loop(61) = {62, 63, 64, 65}; +Plane Surface(61) = {61}; +Line Loop(67) = {68, 69, 70, 71}; +Plane Surface(67) = {67}; +Line Loop(73) = {74, 75, 76, 77}; +Plane Surface(73) = {73}; +Line Loop(79) = {80, 81, 82, 83}; +Plane Surface(79) = {79}; +Line Loop(85) = {86, 87, 88, 89}; +Plane Surface(85) = {85}; +Line Loop(91) = {92, 93, 94, 95}; +Plane Surface(91) = {91}; +Line Loop(97) = {98, 99, 100, 101}; +Plane Surface(97) = {97}; +Line Loop(103) = {104, 105, 106, 107}; +Plane Surface(103) = {103}; +Line Loop(109) = {110, 111, 112, 113}; +Plane Surface(109) = {109}; +Line Loop(115) = {116, 117, 118, 119}; +Plane Surface(115) = {115}; +Line Loop(121) = {122, 123, 124, 125}; +Plane Surface(121) = {121}; +Line Loop(127) = {128, 129, 130, 131}; +Plane Surface(127) = {127}; +Line Loop(133) = {134, 135, 136, 137}; +Plane Surface(133) = {133}; +Line Loop(139) = {140, 141, 142, 143}; +Plane Surface(139) = {139}; +Line Loop(145) = {146, 147, 148, 149}; +Plane Surface(145) = {145}; +Line Loop(151) = {152, 153, 154, 155}; +Plane Surface(151) = {151}; +Line Loop(157) = {158, 159, 160, 161}; +Plane Surface(157) = {157}; +Line Loop(163) = {164, 165, 166, 167}; +Plane Surface(163) = {163}; +Line Loop(169) = {170, 171, 172, 173}; +Plane Surface(169) = {169}; +Line Loop(175) = {176, 177, 178, 179}; +Plane Surface(175) = {175}; +Line Loop(181) = {182, 183, 184, 185}; +Plane Surface(181) = {181}; +Line Loop(187) = {188, 189, 190, 191}; +Plane Surface(187) = {187}; +Line Loop(193) = {194, 195, 196, 197}; +Plane Surface(193) = {193}; +Line Loop(199) = {200, 201, 202, 203}; +Plane Surface(199) = {199}; +Line Loop(205) = {206, 207, 208, 209}; +Plane Surface(205) = {205}; +Line Loop(211) = {212, 213, 214, 215}; +Plane Surface(211) = {211}; +Line Loop(217) = {218, 219, 220, 221}; +Plane Surface(217) = {217}; +Line Loop(223) = {224, 225, 226, 227}; +Plane Surface(223) = {223}; +Line Loop(229) = {230, 231, 232, 233}; +Plane Surface(229) = {229}; +Line Loop(235) = {236, 237, 238, 239}; +Plane Surface(235) = {235}; +Line Loop(241) = {242, 243, 244, 245}; +Plane Surface(241) = {241}; +Line Loop(247) = {248, 249, 250, 251}; +Plane Surface(247) = {247}; +Line Loop(253) = {254, 255, 256, 257}; +Plane Surface(253) = {253}; +Line Loop(259) = {260, 261, 262, 263}; +Plane Surface(259) = {259}; +Line Loop(265) = {266, 267, 268, 269}; +Plane Surface(265) = {265}; +Line Loop(271) = {272, 273, 274, 275}; +Plane Surface(271) = {271}; +Line Loop(277) = {278, 279, 280, 281}; +Plane Surface(277) = {277}; +Line Loop(283) = {284, 285, 286, 287}; +Plane Surface(283) = {283}; +Line Loop(289) = {290, 291, 292, 293}; +Plane Surface(289) = {289}; +Line Loop(295) = {296, 297, 298, 299}; +Plane Surface(295) = {295}; +Line Loop(301) = {302, 303, 304, 305}; +Plane Surface(301) = {301}; +Line Loop(307) = {308, 309, 310, 311}; +Plane Surface(307) = {307}; +Line Loop(313) = {314, 315, 316, 317}; +Plane Surface(313) = {313}; +Line Loop(319) = {320, 321, 322, 323}; +Plane Surface(319) = {319}; +Line Loop(325) = {326, 327, 328, 329}; +Plane Surface(325) = {325}; +Line Loop(331) = {332, 333, 334, 335}; +Plane Surface(331) = {331}; +Line Loop(337) = {338, 339, 340, 341}; +Plane Surface(337) = {337}; +Line Loop(343) = {344, 345, 346, 347}; +Plane Surface(343) = {343}; +Line Loop(349) = {350, 351, 352, 353}; +Plane Surface(349) = {349}; +Line Loop(355) = {356, 357, 358, 359}; +Plane Surface(355) = {355}; +Line Loop(361) = {362, 363, 364, 365}; +Plane Surface(361) = {361}; +Line Loop(367) = {368, 369, 370, 371}; +Plane Surface(367) = {367}; +Line Loop(373) = {374, 375, 376, 377}; +Plane Surface(373) = {373}; +Line Loop(379) = {380, 381, 382, 383}; +Plane Surface(379) = {379}; +Line Loop(385) = {386, 387, 388, 389}; +Plane Surface(385) = {385}; +Line Loop(391) = {392, 393, 394, 395}; +Plane Surface(391) = {391}; +Line Loop(397) = {398, 399, 400, 401}; +Plane Surface(397) = {397}; +Line Loop(403) = {404, 405, 406, 407}; +Plane Surface(403) = {403}; +Line Loop(409) = {410, 411, 412, 413}; +Plane Surface(409) = {409}; +Line Loop(415) = {416, 417, 418, 419}; +Plane Surface(415) = {415}; +Line Loop(421) = {422, 423, 424, 425}; +Plane Surface(421) = {421}; +Line Loop(427) = {428, 429, 430, 431}; +Plane Surface(427) = {427}; +Line Loop(433) = {434, 435, 436, 437}; +Plane Surface(433) = {433}; +Line Loop(439) = {440, 441, 442, 443}; +Plane Surface(439) = {439}; +Line Loop(445) = {446, 447, 448, 449}; +Plane Surface(445) = {445}; +Line Loop(451) = {452, 453, 454, 455}; +Plane Surface(451) = {451}; +Line Loop(457) = {458, 459, 460, 461}; +Plane Surface(457) = {457}; +Line Loop(463) = {464, 465, 466, 467}; +Plane Surface(463) = {463}; +Line Loop(469) = {470, 471, 472, 473}; +Plane Surface(469) = {469}; +Line Loop(475) = {476, 477, 478, 479}; +Plane Surface(475) = {475}; +Line Loop(481) = {482, 483, 484, 485}; +Plane Surface(481) = {481}; +Line Loop(487) = {488, 489, 490, 491}; +Plane Surface(487) = {487}; +Line Loop(493) = {494, 495, 496, 497}; +Plane Surface(493) = {493}; +Line Loop(499) = {500, 501, 502, 503}; +Plane Surface(499) = {499}; +Line Loop(505) = {506, 507, 508, 509}; +Plane Surface(505) = {505}; +Line Loop(511) = {512, 513, 514, 515}; +Plane Surface(511) = {511}; +Line Loop(517) = {518, 519, 520, 521}; +Plane Surface(517) = {517}; +Line Loop(523) = {524, 525, 526, 527}; +Plane Surface(523) = {523}; +Line Loop(529) = {530, 531, 532, 533}; +Plane Surface(529) = {529}; +Line Loop(535) = {536, 537, 538, 539}; +Plane Surface(535) = {535}; +Line Loop(541) = {542, 543, 544, 545}; +Plane Surface(541) = {541}; +Line Loop(547) = {548, 549, 550, 551}; +Plane Surface(547) = {547}; +Line Loop(553) = {554, 555, 556, 557}; +Plane Surface(553) = {553}; +Line Loop(559) = {560, 561, 562, 563}; +Plane Surface(559) = {559}; +Line Loop(565) = {566, 567, 568, 569}; +Plane Surface(565) = {565}; +Line Loop(571) = {572, 573, 574, 575}; +Plane Surface(571) = {571}; +Line Loop(577) = {578, 579, 580, 581}; +Plane Surface(577) = {577}; +Line Loop(583) = {584, 585, 586, 587}; +Plane Surface(583) = {583}; +Line Loop(589) = {590, 591, 592, 593}; +Plane Surface(589) = {589}; +Line Loop(595) = {596, 597, 598, 599}; +Plane Surface(595) = {595}; +Line Loop(601) = {602, 603, 604, 605}; +Plane Surface(601) = {601}; +Line Loop(607) = {608, 609, 610, 611}; +Plane Surface(607) = {607}; +Line Loop(613) = {614, 615, 616, 617}; +Plane Surface(613) = {613}; +Line Loop(619) = {620, 621, 622, 623}; +Plane Surface(619) = {619}; +Line Loop(625) = {626, 627, 628, 629}; +Plane Surface(625) = {625}; +Line Loop(632) = {5, 4, 11, 12, -2, -23, -22, -21, -20, -29, -28, -27, -26, -35, -34, -33, -32, -41, -40, -39, -38, -47, -46, -45, -44, -53, -52, -51, -50, -59, -58, -57, -56, -65, -64, -63, -62, -71, -70, -69, -68, -77, -76, -75, -74, -83, -82, -81, -80, -89, -88, -87, -86, -95, -94, -93, -92, -101, -100, -99, -98, -107, -106, -105, -104, -113, -112, -111, -110, -119, -118, -117, -116, -125, -124, -123, -122, -131, -130, -129, -128, -137, -136, -135, -134, -143, -142, -141, -140, -149, -148, -147, -146, -155, -154, -153, -152, -161, -160, -159, -158, -167, -166, -165, -164, -173, -172, -171, -170, -179, -178, -177, -176, -185, -184, -183, -182, -191, -190, -189, -188, -197, -196, -195, -194, -203, -202, -201, -200, -209, -208, -207, -206, -215, -214, -213, -212, -221, -220, -219, -218, -227, -226, -225, -224, -233, -232, -231, -230, -239, -238, -237, -236, -245, -244, -243, -242, -251, -250, -249, -248, -257, -256, -255, -254, -263, -262, -261, -260, -269, -268, -267, -266, -275, -274, -273, -272, -281, -280, -279, -278, -287, -286, -285, -284, -293, -292, -291, -290, -299, -298, -297, -296, -305, -304, -303, -302, -311, -310, -309, -308, -317, -316, -315, -314, -323, -322, -321, -320, -329, -328, -327, -326, -335, -334, -333, -332, -341, -340, -339, -338, -347, -346, -345, -344, -353, -352, -351, -350, -359, -358, -357, -356, -365, -364, -363, -362, -371, -370, -369, -368, -377, -376, -375, -374, -383, -382, -381, -380, -389, -388, -387, -386, -395, -394, -393, -392, -401, -400, -399, -398, -407, -406, -405, -404, -413, -412, -411, -410, -419, -418, -417, -416, -425, -424, -423, -422, -431, -430, -429, -428, -437, -436, -435, -434, -443, -442, -441, -440, -449, -448, -447, -446, -455, -454, -453, -452, -461, -460, -459, -458, -467, -466, -465, -464, -473, -472, -471, -470, -479, -478, -477, -476, -485, -484, -483, -482, -491, -490, -489, -488, -497, -496, -495, -494, -503, -502, -501, -500, -509, -508, -507, -506, -515, -514, -513, -512, -521, -520, -519, -518, -527, -526, -525, -524, -533, -532, -531, -530, -539, -538, -537, -536, -545, -544, -543, -542, -551, -550, -549, -548, -557, -556, -555, -554, -563, -562, -561, -560, -569, -568, -567, -566, -575, -574, -573, -572, -581, -580, -579, -578, -587, -586, -585, -584, -593, -592, -591, -590, -599, -598, -597, -596, -605, -604, -603, -602, -611, -610, -609, -608, -617, -616, -615, -614, -623, -622, -621, -620, -629, -628, -627, -626}; +Plane Surface(632) = {632}; +Line Loop(634) = {8, 7, 10, 3, -5, -1, 9, -6}; +Plane Surface(634) = {634}; +OUTSLOT = 2000; +Physical Line(OUTSLOT) = {8}; +BNDSLOT = 2001; +Physical Line(BNDSLOT) = {1, 2, 3, 4, 6, 7, 9, 10, 11, 12}; +AIRSLOT = 1000; +Physical Surface(AIRSLOT) = {632}; +AIR = 1001; +Physical Surface(AIR) = {634}; +ALLCOND = 3000; +Physical Surface(ALLCOND) = {19, 25, 31, 37, 43, 49, 55, 61, 67, 73, 79, 85, 91, 97, 103, 109, 115, 121, 127, 133, 139, 145, 151, 157, 163, 169, 175, 181, 187, 193, 199, 205, 211, 217, 223, 229, 235, 241, 247, 253, 259, 265, 271, 277, 283, 289, 295, 301, 307, 313, 319, 325, 331, 337, 343, 349, 355, 361, 367, 373, 379, 385, 391, 397, 403, 409, 415, 421, 427, 433, 439, 445, 451, 457, 463, 469, 475, 481, 487, 493, 499, 505, 511, 517, 523, 529, 535, 541, 547, 553, 559, 565, 571, 577, 583, 589, 595, 601, 607, 613, 619, 625}; +iCOND = 4000; +Physical Surface(iCOND) = {19}; +Physical Surface(4001) = {25}; +Physical Surface(4002) = {31}; +Physical Surface(4003) = {37}; +Physical Surface(4004) = {43}; +Physical Surface(4005) = {49}; +Physical Surface(4006) = {55}; +Physical Surface(4007) = {61}; +Physical Surface(4008) = {67}; +Physical Surface(4009) = {73}; +Physical Surface(4010) = {79}; +Physical Surface(4011) = {85}; +Physical Surface(4012) = {91}; +Physical Surface(4013) = {97}; +Physical Surface(4014) = {103}; +Physical Surface(4015) = {109}; +Physical Surface(4016) = {115}; +Physical Surface(4017) = {121}; +Physical Surface(4018) = {127}; +Physical Surface(4019) = {133}; +Physical Surface(4020) = {139}; +Physical Surface(4021) = {145}; +Physical Surface(4022) = {151}; +Physical Surface(4023) = {157}; +Physical Surface(4024) = {163}; +Physical Surface(4025) = {169}; +Physical Surface(4026) = {175}; +Physical Surface(4027) = {181}; +Physical Surface(4028) = {187}; +Physical Surface(4029) = {193}; +Physical Surface(4030) = {199}; +Physical Surface(4031) = {205}; +Physical Surface(4032) = {211}; +Physical Surface(4033) = {217}; +Physical Surface(4034) = {223}; +Physical Surface(4035) = {229}; +Physical Surface(4036) = {235}; +Physical Surface(4037) = {241}; +Physical Surface(4038) = {247}; +Physical Surface(4039) = {253}; +Physical Surface(4040) = {259}; +Physical Surface(4041) = {265}; +Physical Surface(4042) = {271}; +Physical Surface(4043) = {277}; +Physical Surface(4044) = {283}; +Physical Surface(4045) = {289}; +Physical Surface(4046) = {295}; +Physical Surface(4047) = {301}; +Physical Surface(4048) = {307}; +Physical Surface(4049) = {313}; +Physical Surface(4050) = {319}; +Physical Surface(4051) = {325}; +Physical Surface(4052) = {331}; +Physical Surface(4053) = {337}; +Physical Surface(4054) = {343}; +Physical Surface(4055) = {349}; +Physical Surface(4056) = {355}; +Physical Surface(4057) = {361}; +Physical Surface(4058) = {367}; +Physical Surface(4059) = {373}; +Physical Surface(4060) = {379}; +Physical Surface(4061) = {385}; +Physical Surface(4062) = {391}; +Physical Surface(4063) = {397}; +Physical Surface(4064) = {403}; +Physical Surface(4065) = {409}; +Physical Surface(4066) = {415}; +Physical Surface(4067) = {421}; +Physical Surface(4068) = {427}; +Physical Surface(4069) = {433}; +Physical Surface(4070) = {439}; +Physical Surface(4071) = {445}; +Physical Surface(4072) = {451}; +Physical Surface(4073) = {457}; +Physical Surface(4074) = {463}; +Physical Surface(4075) = {469}; +Physical Surface(4076) = {475}; +Physical Surface(4077) = {481}; +Physical Surface(4078) = {487}; +Physical Surface(4079) = {493}; +Physical Surface(4080) = {499}; +Physical Surface(4081) = {505}; +Physical Surface(4082) = {511}; +Physical Surface(4083) = {517}; +Physical Surface(4084) = {523}; +Physical Surface(4085) = {529}; +Physical Surface(4086) = {535}; +Physical Surface(4087) = {541}; +Physical Surface(4088) = {547}; +Physical Surface(4089) = {553}; +Physical Surface(4090) = {559}; +Physical Surface(4091) = {565}; +Physical Surface(4092) = {571}; +Physical Surface(4093) = {577}; +Physical Surface(4094) = {583}; +Physical Surface(4095) = {589}; +Physical Surface(4096) = {595}; +Physical Surface(4097) = {601}; +Physical Surface(4098) = {607}; +Physical Surface(4099) = {613}; +Physical Surface(4100) = {619}; +Physical Surface(4101) = {625}; diff --git a/benchmarks/misc/colormaps/README b/benchmarks/misc/colormaps/README.txt similarity index 100% rename from benchmarks/misc/colormaps/README rename to benchmarks/misc/colormaps/README.txt diff --git a/contrib/ANN/README b/contrib/ANN/README.txt similarity index 100% rename from contrib/ANN/README rename to contrib/ANN/README.txt diff --git a/contrib/Chaco/README b/contrib/Chaco/README.txt similarity index 100% rename from contrib/Chaco/README rename to contrib/Chaco/README.txt diff --git a/contrib/MathEval/README b/contrib/MathEval/README.txt similarity index 100% rename from contrib/MathEval/README rename to contrib/MathEval/README.txt diff --git a/contrib/Metis/README b/contrib/Metis/README.txt similarity index 95% rename from contrib/Metis/README rename to contrib/Metis/README.txt index c257a6742ec0081949f01e78256a4c903b4aa8a5..5dde63ca7e05eb82d8a0973855df62b4d0096e12 100644 --- a/contrib/Metis/README +++ b/contrib/Metis/README.txt @@ -14,7 +14,7 @@ library compile on all the architectures supported by Gmsh) * Started 8/27/94 * George * - * $Id: README,v 1.4 2006-02-24 22:07:08 geuzaine Exp $ + * $Id: README.txt,v 1.1 2009-08-15 09:31:23 geuzaine Exp $ */ diff --git a/contrib/Netgen/README b/contrib/Netgen/README.txt similarity index 100% rename from contrib/Netgen/README rename to contrib/Netgen/README.txt diff --git a/contrib/Tetgen/README b/contrib/Tetgen/README.txt similarity index 100% rename from contrib/Tetgen/README rename to contrib/Tetgen/README.txt diff --git a/contrib/TetgenNew/README b/contrib/TetgenNew/README.txt similarity index 100% rename from contrib/TetgenNew/README rename to contrib/TetgenNew/README.txt diff --git a/utils/converters/xyz2pos.sh b/utils/converters/ascii/xyz2pos.sh old mode 100644 new mode 100755 similarity index 100% rename from utils/converters/xyz2pos.sh rename to utils/converters/ascii/xyz2pos.sh diff --git a/utils/converters/brl-cad/BRLFile.cpp b/utils/converters/brl-cad/BRLFile.cpp new file mode 100644 index 0000000000000000000000000000000000000000..63456272c826806bab3d2a3239f233597da063a1 --- /dev/null +++ b/utils/converters/brl-cad/BRLFile.cpp @@ -0,0 +1,478 @@ +/* + (C) 2009 Mark van Doesburg, Technolution B.V. + + Distributed under GPL version 2 +*/ + +#include <iterator> + +/* OpenCASCADE ************************************************************/ +#include <config.h> +#include <TopoDS.hxx> +#include <TopoDS_Shape.hxx> +#include <TopoDS_Vertex.hxx> +#include <TopoDS_Edge.hxx> +#include <TopoDS_Shell.hxx> +#include <TopoDS_Solid.hxx> +#include <TopoDS_Compound.hxx> + +#include <BRepTools.hxx> +#include <BRepBuilderAPI_MakeEdge.hxx> +#include <BRepBuilderAPI_MakeFace.hxx> +#include <BRepBuilderAPI_MakeVertex.hxx> +#include <BRepBuilderAPI_MakeWire.hxx> +#include <BRepBuilderAPI_MakeSolid.hxx> +#include <BRepBuilderAPI_NurbsConvert.hxx> +#include <BRepOffsetAPI_ThruSections.hxx> +#include <BRep_Builder.hxx> +#include <GC_MakeEllipse.hxx> +#include <TopOpeBRep_DSFiller.hxx> +#include <BRepPrimAPI_MakeSphere.hxx> +#include <BRepPrimAPI_MakeBox.hxx> + +/* Boolean operations */ +#include <BRepAlgoAPI_Common.hxx> +#include <BRepAlgoAPI_Fuse.hxx> +#include <BRepAlgoAPI_Cut.hxx> +#include <BRepAlgoAPI_Section.hxx> + +// NEW +#include <BRepFill_Filling.hxx> +#include <GeomFill_BSplineCurves.hxx> +#include <TopTools.hxx> +#include <ShapeFix_Solid.hxx> + +#include "BRLFile.h" + +#include "printing.h" + +#define scale 1 + +//////////////////////////////////////////////////////////////////////////////// +// Construct TopoDS from BRL-CAD data +//////////////////////////////////////////////////////////////////////////////// +BRLTopo::BRLTopo(struct rt_arb_internal *arb) +{ + TopoDS_Vertex v[8]; + for(int i=0;i<8;i++) + v[i]=BRepBuilderAPI_MakeVertex( + gp_Pnt( + scale*arb->pt[i][0], + scale*arb->pt[i][1], + scale*arb->pt[i][2] + ) + ); + + int arbn; + if(!BRepTools::Compare(v[6],v[7])) + arbn=8; + else if(!BRepTools::Compare(v[4],v[5])) + arbn=7; + else if(!BRepTools::Compare(v[5],v[6])) + arbn=6; + else if(!BRepTools::Compare(v[0],v[3])) + arbn=5; + else + arbn=4; + + switch(arbn) { + case 8: { + TopoDS_Edge e[12]; + for(int i=0;i<4;i++) { + e[i]=BRepBuilderAPI_MakeEdge(v[i],v[(i+1)%4]); + e[i+4]=BRepBuilderAPI_MakeEdge(v[i+4],v[(i+1)%4+4]); + e[i+8]=BRepBuilderAPI_MakeEdge(v[i],v[(i+4)%8]); + } + + TopoDS_Wire w[6]; + w[0]=BRepBuilderAPI_MakeWire(e[0],e[1],e[2],e[3]); + w[1]=BRepBuilderAPI_MakeWire(e[4],e[5],e[6],e[7]); + w[2]=BRepBuilderAPI_MakeWire(e[0],e[9],e[4],e[8]); + w[3]=BRepBuilderAPI_MakeWire(e[1],e[10],e[5],e[9]); + w[4]=BRepBuilderAPI_MakeWire(e[2],e[11],e[6],e[10]); + w[5]=BRepBuilderAPI_MakeWire(e[3],e[8],e[7],e[11]); + + BRep_Builder BB; + TopoDS_Shell shell; + BB.MakeShell(shell); + for(int i=0;i<6;i++) { + TopoDS_Face f=BRepBuilderAPI_MakeFace(w[i]); + BB.Add(shell,i? f.Reversed():f); + } + TopoDS_Solid solid; + BB.MakeSolid(solid); + BB.Add(solid,shell); + ShapeFix_Solid sf(solid); + sf.Perform(); + shape=sf.Solid(); + } break; + case 6: { + TopoDS_Edge e[9]; + e[0]=BRepBuilderAPI_MakeEdge(v[0],v[1]); + e[1]=BRepBuilderAPI_MakeEdge(v[1],v[2]); + e[2]=BRepBuilderAPI_MakeEdge(v[2],v[3]); + e[3]=BRepBuilderAPI_MakeEdge(v[3],v[0]); + e[4]=BRepBuilderAPI_MakeEdge(v[0],v[4]); + e[5]=BRepBuilderAPI_MakeEdge(v[1],v[4]); + e[6]=BRepBuilderAPI_MakeEdge(v[2],v[6]); + e[7]=BRepBuilderAPI_MakeEdge(v[3],v[6]); + e[8]=BRepBuilderAPI_MakeEdge(v[4],v[6]); + + TopoDS_Wire w[5]; + w[0]=BRepBuilderAPI_MakeWire(e[0],e[1],e[2],e[3]); + w[1]=BRepBuilderAPI_MakeWire(e[0],e[4],e[5]); + w[2]=BRepBuilderAPI_MakeWire(e[2],e[6],e[7]); + w[3]=BRepBuilderAPI_MakeWire(e[3],e[4],e[8],e[7]); + w[4]=BRepBuilderAPI_MakeWire(e[1],e[5],e[8],e[6]); + + BRep_Builder BB; +#if 0 + TopoDS_Compound result; + BB.MakeCompound(result); + for(int i=0;i<5;i++) { + BB.Add(result,BRepBuilderAPI_MakeFace(w[i])); + } + shape=result; +#else + TopoDS_Shell shell; + BB.MakeShell(shell); + for(int i=0;i<5;i++) { + TopoDS_Face f=BRepBuilderAPI_MakeFace(w[i]); + BB.Add(shell,f); //i? f:f.Reversed()); + } + TopoDS_Solid solid; + BB.MakeSolid(solid); + BB.Add(solid,shell); + ShapeFix_Solid sf(solid); + sf.Perform(); + shape=sf.Solid(); +#endif + } break; + default: + cerr << "Unhandled arb8 type n=" << arbn << '\n'; + } +} + +BRLTopo::BRLTopo(struct rt_tgc_internal *tgc) +{ + /* We use the same names as BRL-CAD, but use 4 vertices on the edges. + These additional vertices have their letter repeated and the + direction vector inverted. + */ + gp_Pnt v(scale*tgc->v[0], scale*tgc->v[1], scale*tgc->v[2]); + gp_Pnt a( + scale*(v.Coord(1)+tgc->a[0]), + scale*(v.Coord(2)+tgc->a[1]), + scale*(v.Coord(3)+tgc->a[2])); + gp_Pnt b( + scale*(v.Coord(1)+tgc->b[0]), + scale*(v.Coord(2)+tgc->b[1]), + scale*(v.Coord(3)+tgc->b[2])); + gp_Pnt aa( + scale*(v.Coord(1)-tgc->a[0]), + scale*(v.Coord(2)-tgc->a[1]), + scale*(v.Coord(3)-tgc->a[2])); + gp_Pnt bb( + scale*(v.Coord(1)-tgc->b[0]), + scale*(v.Coord(2)-tgc->b[1]), + scale*(v.Coord(3)-tgc->b[2])); + Handle(Geom_Ellipse) top; + if(v.SquareDistance(a)<v.SquareDistance(b)) + top=GC_MakeEllipse(b, aa, v); + else + top=GC_MakeEllipse(a, b, v); + TopoDS_Edge e_t[4]; + e_t[0]=BRepBuilderAPI_MakeEdge(top,a,b); + e_t[1]=BRepBuilderAPI_MakeEdge(top,b,aa); + e_t[2]=BRepBuilderAPI_MakeEdge(top,aa,bb); + e_t[3]=BRepBuilderAPI_MakeEdge(top,bb,a); + + gp_Pnt h( + scale*(v.Coord(1)+tgc->h[0]), + scale*(v.Coord(2)+tgc->h[1]), + scale*(v.Coord(3)+tgc->h[2])); + gp_Pnt c( + scale*(h.Coord(1)+tgc->c[0]), + scale*(h.Coord(2)+tgc->c[1]), + scale*(h.Coord(3)+tgc->c[2])); + gp_Pnt d( + scale*(h.Coord(1)+tgc->d[0]), + scale*(h.Coord(2)+tgc->d[1]), + scale*(h.Coord(3)+tgc->d[2])); + gp_Pnt cc( + scale*(h.Coord(1)-tgc->c[0]), + scale*(h.Coord(2)-tgc->c[1]), + scale*(h.Coord(3)-tgc->c[2])); + gp_Pnt dd( + scale*(h.Coord(1)-tgc->d[0]), + scale*(h.Coord(2)-tgc->d[1]), + scale*(h.Coord(3)-tgc->d[2])); + Handle(Geom_Ellipse) bottom; + if(h.SquareDistance(c)<h.SquareDistance(d)) + bottom=GC_MakeEllipse(d, cc, h); + else + bottom=GC_MakeEllipse(c, d, h); + TopoDS_Edge e_b[4]; + e_b[0]=BRepBuilderAPI_MakeEdge(bottom,c,d); + e_b[1]=BRepBuilderAPI_MakeEdge(bottom,d,cc); + e_b[2]=BRepBuilderAPI_MakeEdge(bottom,cc,dd); + e_b[3]=BRepBuilderAPI_MakeEdge(bottom,dd,c); + +#if 1 + BRepOffsetAPI_ThruSections BB(Standard_True); + BB.AddWire(BRepBuilderAPI_MakeWire(e_t[0],e_t[1],e_t[2],e_t[3])); + BB.AddWire(BRepBuilderAPI_MakeWire(e_b[0],e_b[1],e_b[2],e_b[3])); + BB.CheckCompatibility(Standard_False); + shape=BB.Shape(); +#else + BRep_Builder BB; + TopoDS_Compound result; + BB.MakeCompound(result); + for(int i=0;i<4;i++) { + BB.Add(result,e_t[i]); + BB.Add(result,e_b[i]); + } + shape=result; +#endif +} + +BRLTopo::BRLTopo(struct rt_ell_internal *ell) +{ +#if 0 + gp_Pnt v(ell->v[0], ell->v[1], ell->v[2]); + gp_Pnt a(v.Coord(1)+ell->a[0], v.Coord(2)+ell->a[1], v.Coord(3)+ell->a[2]); + gp_Pnt b(v.Coord(1)+ell->b[0], v.Coord(2)+ell->b[1], v.Coord(3)+ell->b[2]); + gp_Pnt c(v.Coord(1)+ell->c[0], v.Coord(2)+ell->c[1], v.Coord(3)+ell->c[2]); + gp_Pnt aa(v.Coord(1)-ell->a[0], v.Coord(2)-ell->a[1], v.Coord(3)-ell->a[2]); + gp_Pnt bb(v.Coord(1)-ell->b[0], v.Coord(2)-ell->b[1], v.Coord(3)-ell->b[2]); + gp_Pnt cc(v.Coord(1)-ell->c[0], v.Coord(2)-ell->c[1], v.Coord(3)-ell->c[2]); + + Handle(Geom_Ellipse) sect1=GC_MakeEllipse(a, b, v); + Handle(Geom_Ellipse) sect2=GC_MakeEllipse(a, c, v); + Handle(Geom_Ellipse) sect3=GC_MakeEllipse(b, c, v); + + TopoDS_Edge e_ab[4]; + e_ab[0]=BRepBuilderAPI_MakeEdge(sect1,a,b); + e_ab[1]=BRepBuilderAPI_MakeEdge(sect1,b,aa); + e_ab[2]=BRepBuilderAPI_MakeEdge(sect1,aa,bb); + e_ab[3]=BRepBuilderAPI_MakeEdge(sect1,bb,a); + + TopoDS_Edge e_ac[4]; + e_ac[0]=BRepBuilderAPI_MakeEdge(sect2,c,aa); + e_ac[1]=BRepBuilderAPI_MakeEdge(sect2,a,c); + e_ac[2]=BRepBuilderAPI_MakeEdge(sect2,aa,cc); + e_ac[3]=BRepBuilderAPI_MakeEdge(sect2,cc,a); + + TopoDS_Edge e_bc[4]; + e_bc[0]=BRepBuilderAPI_MakeEdge(sect3,b,c); + e_bc[1]=BRepBuilderAPI_MakeEdge(sect3,c,bb); + e_bc[2]=BRepBuilderAPI_MakeEdge(sect3,bb,cc); + e_bc[3]=BRepBuilderAPI_MakeEdge(sect3,cc,b); + + // FIXME, BRepFill_Filling? + TopoDS_Solid sph=BRepPrimAPI_MakeSphere(v,ell->a[0]); + TopoDS_Face init; + for(TopExp_Explorer p(sph,TopAbs_FACE); p.More(); p.Next()) + init=TopoDS::Face(p.Current()); + BRepFill_Filling face1; + //face1.LoadInitSurface(init); + face1.Add(e_ab[0],GeomAbs_C0); + face1.Add(e_ab[1],GeomAbs_C0); + face1.Add(e_ac[0],GeomAbs_C0); + face1.Add(e_ac[1],GeomAbs_C0); + face1.Add(e_bc[0],GeomAbs_C0,false); + face1.Build(); + + BRepFill_Filling face2; + //face2.LoadInitSurface(init); + face2.Add(e_ab[2],GeomAbs_C0); + face2.Add(e_ab[3],GeomAbs_C0); + face2.Add(e_ac[2],GeomAbs_C0); + face2.Add(e_ac[3],GeomAbs_C0); + face2.Add(e_bc[2],GeomAbs_C0,false); + face2.Build(); + + BRepFill_Filling face3; + //face3.LoadInitSurface(init); + face3.Add(e_ab[2],GeomAbs_C0); + face3.Add(e_ab[3],GeomAbs_C0); + face3.Add(e_ac[0],GeomAbs_C0); + face3.Add(e_ac[1],GeomAbs_C0); + face3.Add(e_bc[1],GeomAbs_C0,false); + face3.Build(); + + BRepFill_Filling face4; + //face4.LoadInitSurface(init); + face4.Add(e_ab[0],GeomAbs_C0); + face4.Add(e_ab[1],GeomAbs_C0); + face4.Add(e_ac[2],GeomAbs_C0); + face4.Add(e_ac[3],GeomAbs_C0); + face4.Add(e_bc[3],GeomAbs_C0,false); + face4.Build(); + + BRep_Builder BB; + TopoDS_Shell result; + BB.MakeShell(result); + BB.Add(result,face1.Face()); + BB.Add(result,face2.Face().Reversed()); + BB.Add(result,face3.Face()); + BB.Add(result,face4.Face().Reversed()); + + shape=BRepBuilderAPI_MakeSolid(result); +#else + /* FIXME, we only support spheres at the moment. */ + gp_Pnt v(scale*ell->v[0], scale*ell->v[1], scale*ell->v[2]); + TopoDS_Solid sph=BRepPrimAPI_MakeSphere(v,scale*ell->a[0]); + shape=sph; +#endif +} + +//////////////////////////////////////////////////////////////////////////////// +// Read the BRL-CAD file +//////////////////////////////////////////////////////////////////////////////// +BRLFile::BRLFile(char *filename, int v) +{ + verbose=v; + + dbip = db_open(filename, "r"); + if(dbip==DBI_NULL) + return; + + /* build a wdbp structure for convenient read/write */ + wdbp = wdb_dbopen(dbip, RT_WDB_TYPE_DB_DISK); + if (db_dirbuild(dbip) < 0) { /* create directory database contents */ + bu_log("Error building directory for %s\n", filename); + exit(-1); + } +} + +int BRLFile::AddModel(char const *name) +{ + if(dbip==DBI_NULL) + return 1; + struct directory *dp=db_lookup(dbip, name, 1); + if(dp == NULL) + return 1; + + rt_init_resource( &rt_uniresource, 0, NULL ); + db_functree(dbip, dp, CsgCombine, CsgLeaf, &rt_uniresource, this); + + while(construction.size()>0) { + Add(construction.front()); + construction.pop_front(); + } + return 0; +} + +TopoDS_Shape BRLFile::PerformBoolean(union tree *tp) +{ + TopoDS_Shape left, right, result; + if(tp->tr_op==OP_UNION || tp->tr_op==OP_INTERSECT || tp->tr_op==OP_SUBTRACT + ) { + left=PerformBoolean(tp->tr_b.tb_left); + right=PerformBoolean(tp->tr_b.tb_right); + } + + if(verbose&BRL) { + switch(tp->tr_op) { + case OP_UNION: + case OP_INTERSECT: + case OP_SUBTRACT: + cout<< " Bool " << *tp; + break; + case OP_DB_LEAF: + if(verbose&BRL) + cout << " Leaf " << tp->tr_l.tl_name; + break; + } + cout << " remaining " << construction.size() << '\n'; + } + + switch(tp->tr_op) { + case OP_UNION: return BRepAlgoAPI_Fuse(left,right); + case OP_INTERSECT:return BRepAlgoAPI_Common(left,right); + case OP_SUBTRACT: return BRepAlgoAPI_Cut(left,right); + case OP_DB_LEAF: + result=construction.back(); + construction.pop_back(); + return result; + default: + std::cerr << "Invalid boolean operation in " << __FUNCTION__ << '\n'; + return result; + } +} + +void BRLFile::CsgCombine(struct db_i *dbip, struct directory *dp, genptr_t ptr) +{ + BRLFile *that=(BRLFile*)ptr; + + struct rt_db_internal ip; + if(rt_db_get_internal(&ip, dp, dbip, NULL, &rt_uniresource)!=ID_COMBINATION + ) { + std::cerr << "Combination is not a combination in " + << __FUNCTION__ << '\n'; + exit(1); + } + + struct rt_comb_internal *comb = (struct rt_comb_internal *)ip.idb_ptr; + + if(that->verbose&BRL) { + std::cout << "Combine " << dp->d_namep << '\n'; + + std::cout << *comb; + std::cout << " --------------------\n"; + std::cout << " " << comb->tree << '\n'; + } + + that->construction.push_back(that->PerformBoolean(comb->tree)); +} + +void BRLFile::CsgLeaf(struct db_i *dbip, struct directory *dp, genptr_t ptr) +{ + BRLFile *that=(BRLFile*)ptr; + + if(that->verbose&BRL) + std::cout << "Leaf " << dp->d_namep << '\n'; + + struct rt_db_internal ip; + switch(rt_db_get_internal(&ip, dp, dbip, (fastf_t *)NULL, &rt_uniresource)){ + case ID_ARB8: { + struct rt_arb_internal *arb=(struct rt_arb_internal *)ip.idb_ptr; + if(that->verbose&BRL) { + std::cout << " ARB8\n"; + for(int i=0;i<8;i++) { + std::cout << " pt[" << i << "]=" << arb->pt[i] << '\n'; + } + } + that->construction.push_front(BRLTopo(arb)); + } break; + case ID_TGC: { + struct rt_tgc_internal *tgc=(struct rt_tgc_internal *)ip.idb_ptr; + if(that->verbose&BRL) { + std::cout + << " TGC\n" + << " v=" << tgc->v << '\n' + << " h=" << tgc->h << '\n' + << " a=" << tgc->a << '\n' + << " b=" << tgc->b << '\n' + << " c=" << tgc->c << '\n' + << " d=" << tgc->d << '\n'; + } + that->construction.push_front(BRLTopo(tgc)); + } break; + case ID_ELL: { + struct rt_ell_internal *ell=(struct rt_ell_internal *)ip.idb_ptr; + if(that->verbose&BRL) { + std::cout << " v=" << ell->v << '\n'; + std::cout << " a=" << ell->a << '\n'; + std::cout << " b=" << ell->b << '\n'; + std::cout << " c=" << ell->c << '\n'; + } + that->construction.push_front(BRLTopo(ell)); + } break; + default: + std::cout << " Unhandled type " << + rt_db_get_internal(&ip, dp, dbip, (fastf_t *)NULL, &rt_uniresource) + << '\n'; + } +} diff --git a/utils/converters/brl-cad/BRLFile.h b/utils/converters/brl-cad/BRLFile.h new file mode 100644 index 0000000000000000000000000000000000000000..e0106875ee5b65efd12637feb9a1e3a1aeae5543 --- /dev/null +++ b/utils/converters/brl-cad/BRLFile.h @@ -0,0 +1,40 @@ +/* + (C) 2009 Mark van Doesburg, Technolution B.V. + + Distributed under GPL version 2 +*/ + +#include "OCC_Connect.h" + +/* BRL-CAD ************************************************************/ +#include "common.h" +#include "vmath.h" /* vector math macros */ +#include "raytrace.h" /* librt interface definitions */ +#include "rtgeom.h" +#include "wdb.h" + +class BRLTopo { + TopoDS_Shape shape; +public: + BRLTopo(TopoDS_Shape const &s) { shape=s; } + BRLTopo(struct rt_arb_internal *arb); + BRLTopo(struct rt_tgc_internal *tgc); + BRLTopo(struct rt_ell_internal *ell); + operator TopoDS_Shape&() { return shape; } +}; + +class BRLFile:public OCC_Connect { + struct rt_wdb *wdbp; + struct db_i *dbip; + struct rt_db_internal ip; + std::deque<BRLTopo> construction; +public: + enum Verbose { Cutting=1, BRL=2 }; + BRLFile(char *filename,int v=0); + int AddModel(char const *); +private: + static void CsgCombine(struct db_i *, struct directory *, genptr_t); + static void CsgLeaf(struct db_i *, struct directory *, genptr_t); + TopoDS_Shape PerformBoolean(union tree*); +}; + diff --git a/utils/converters/brl-cad/README.txt b/utils/converters/brl-cad/README.txt new file mode 100644 index 0000000000000000000000000000000000000000..2e4bca4de7fad5b61c458d796e94c69888ebd76d --- /dev/null +++ b/utils/converters/brl-cad/README.txt @@ -0,0 +1,22 @@ +This is a tool to convert a BRL CAD model to an OpenCASCADE brep +file. To compile this program you need BRL CAD and it's sources to be +installed. Set the paths BRL_SRC and BRL_LIB in the Makefile and type +make. On 32 bit systems the -D_OCC64 option must be removed. + +To use the program type: + + g-brep test.g complex.r tst_corner1.s tst_com.s tst_acom.s + +The first parameter is the BRL database, the subsequent parameters are +the models to be included in the brep file. Note that these models will +become single solids. All these solids will be connected to each other. + +It is possible to skip the connecting algorithm when the "-c" option +is used. This is used to test the connecting algorithm in gmsh. + +The result of the g-brep program is test.brep which can be read by gmsh, +if gmsh is compiled with OCC support. + +This program has been tested with brlcad-7.14.6 and OpenCASCADE-6.3.0. + +Mark van Doesburg. diff --git a/utils/converters/brl-cad/g-brep.cpp b/utils/converters/brl-cad/g-brep.cpp new file mode 100644 index 0000000000000000000000000000000000000000..81c32f9af8bccaba7b2981afc73a6abdd73b1137 --- /dev/null +++ b/utils/converters/brl-cad/g-brep.cpp @@ -0,0 +1,52 @@ +/* + (C) 2009 Mark van Doesburg, Technolution B.V. + + Distributed under GPL version 2 + + Use this program to translate a BRL-CAD file to a brep file which + can be read using OpenCASCADE. + + format: g-brep {filename} {model} [model] ... + + */ + +#include "BRLFile.h" +#include <string> + +main(int argc, char **argv) +{ + if(argc<3) { + cerr << "Filename and object name(s) required\n"; + return 1; + } + BRLFile solid(argv[1],BRLFile::Cutting|BRLFile::BRL); + int connect=1; + for(int i=2; i<argc; i++) { + if(argv[i][0]=='-') { + switch(argv[i][1]) { + case 'c': connect=0; break; + default: + cerr << "Unknown option :" << argv[i] << "\n"; + return 1; + } + } else if(solid.AddModel(argv[i])) { + cerr << "Cannot find model " << argv[i] << '\n'; + return 1; + } + } + if(connect) + solid.Connect(); + else + solid.Collect(); + + std::string newname=argv[1]; + int start=newname.find(".g"); + if(start==std::string::npos) { + newname+=".brep"; + std::cerr << "Cannot find the .g extension, writing to: " + << newname << std::endl; + } else + newname.replace(start,newname.length(),".brep"); + solid.SaveBRep(newname.c_str()); + //solid.Dump(cout); +} diff --git a/utils/converters/brl-cad/printing.h b/utils/converters/brl-cad/printing.h new file mode 100644 index 0000000000000000000000000000000000000000..86f1b416c14db286acf86093ca0bfc7de516a5f9 --- /dev/null +++ b/utils/converters/brl-cad/printing.h @@ -0,0 +1,89 @@ +/* + (C) 2009 Mark van Doesburg, Technolution B.V. + + Distributed under GPL version 2 +*/ + +#include "tprintf.h" + +class Indent { + char *buffer; +public: + Indent(int i) { buffer=new char[i+1]; memset(buffer,' ',i); buffer[i]=0; } + ~Indent() { delete buffer; } + operator const char*() { return buffer; } +}; + +std::ostream &operator <<(std::ostream &o,rt_comb_internal const &c) +{ + o << " unsigned long magic " << c.magic << '\n'; + o << " union tree * tree " << c.tree << '\n'; + o << " char region_flag " << (int)c.region_flag << '\n'; + o << " char is_fastgen " << (int)c.is_fastgen << '\n'; + + /* Begin GIFT compatability */ + o << " long region_id " << c.region_id << '\n'; + o << " long aircode " << c.aircode << '\n'; + o << " long GIFTmater " << c.GIFTmater << '\n'; + o << " long los " << c.los << '\n'; + /* End GIFT compatability */ + + o << " char rgb_valid " << (int)c.rgb_valid << '\n'; + o << " unsigned char rgb[3] " << (int)c.rgb[0] << ',' + << (int)c.rgb[1] << ',' << (int)c.rgb[2] << '\n'; + o << " float temperature " << c.temperature << '\n'; + //cout << " struct bu_vls shader " << c.shader << '\n'; + //cout << " struct bu_vls material " << c.material << '\n'; + o << " char inherit " << (int)c.inherit << '\n'; + return o; +} + +std::ostream &operator <<(std::ostream &o,point_t const &p) +{ + for(int i=0;i<ELEMENTS_PER_POINT;i++) { + o<< (i? ',':'(') << p[i]; + } + o<<')'; +} + +template <typename T> +std::ostream & operator<<(std::ostream &out, std::set<T> const &a) +{ + std::copy(a.begin(),a.end(),std::ostream_iterator<T>(out," ")); + return out; +} + +std::ostream &operator <<(std::ostream &o,union tree &p) +{ + if(p.tr_a.magic!=RT_TREE_MAGIC) + return o << "INVALID"; + switch(p.tr_op) { + case OP_SOLID: return o << "OP_SOLID"; + case OP_UNION: return o << "OP_UNION"; + case OP_INTERSECT: return o << "OP_INTERSECT"; + case OP_SUBTRACT: return o << "OP_SUBTRACT"; + case OP_XOR: return o << "OP_XOR"; + case OP_REGION: return o << "OP_REGION"; + case OP_NOP: return o << "OP_NOP"; + case OP_NOT: return o << "OP_NOT"; + case OP_GUARD: return o << "OP_GUARD"; + case OP_XNOP: return o << "OP_XNOP"; + case OP_NMG_TESS: return o << "OP_NMG_TESS"; + case OP_DB_LEAF: return o << "OP_DB_LEAF"; + case OP_FREE: return o << "OP_FREE"; + default: return o << "UNKNOWN"; + } +} + +std::ostream &operator <<(std::ostream &o,union tree *p) +{ + switch(p->tr_op) { + case OP_DB_LEAF: + case OP_SOLID: return o << p->tr_l.tl_name; + case OP_UNION: return o << p->tr_b.tb_left << " u " << p->tr_b.tb_right; + case OP_INTERSECT:return o << p->tr_b.tb_left << " + " << p->tr_b.tb_right; + case OP_SUBTRACT: return o << p->tr_b.tb_left << " - " << p->tr_b.tb_right; + default: return o << *p; + } +} + diff --git a/utils/converters/brl-cad/test.brep b/utils/converters/brl-cad/test.brep new file mode 100644 index 0000000000000000000000000000000000000000..79652b682d55bec6f75411ea4765ec0dd10da762 --- /dev/null +++ b/utils/converters/brl-cad/test.brep @@ -0,0 +1,971 @@ +DBRep_DrawableShape + +CASCADE Topology V1, (c) Matra-Datavision +Locations 0 +Curve2ds 72 +8 0 0.002 +1 0 0 -1 0 +8 0 0.002 +1 0 0 0 1 +8 0 0.002 +1 -0.002 0 0 1 +8 0 0.002 +1 0 0 0 -1 +8 0 0.002 +1 -0.002 0.002 1 0 +8 0 0.002 +1 0 0 -0 -1 +8 0 0.002 +1 0 0.002 -0 -1 +8 0 0.002 +1 0 0 0 1 +8 0 0.002 +1 0 0.002 1 0 +8 0 0.002 +1 0 0 -1 -0 +8 0 0.002 +1 0.002 0 0 1 +8 0 0.002 +1 0 0 -1 0 +8 0 0.002 +1 0 0 1 0 +8 0 0.002 +1 0 0.002 1 0 +8 0 1 +7 0 0 4 101 34 -0.0009999999999999998 -0.0013750000000000004 -0.00099676023342794014 -0.0013749999995582044 -0.00099352046693931351 -0.0013749306032847487 -0.00099028189969533665 -0.0013747918094883529 -0.00098380956055890982 -0.0013743755849250881 -0.00098057578844435323 -0.0013740981537991288 -0.0009773456115629727 -0.0013737514812906105 -0.00097089483573322886 -0.0013729199616406293 -0.00096767423665511604 -0.0013724351144616537 -0.00096445962068302167 -0.0013718813340720508 -0.00095804472893040932 -0.0013706363676520093 -0.00095484445302226851 -0.0013699451815657202 -0.00095165253483315258 -0.001369185523149672 -0.00094528776951682142 -0.00136752987426685 -0.00094211492226283801 -0.0013666338837424387 -0.0009389527888220661 -0.0013656700336036436 -0.00093265228173814081 -0.0013636073773495739 -0.00092951390796795785 -0.0013625085711806348 -0.00092638858035331304 -0.001361342668702662 -0.00092016632094885044 -0.0013588775834472279 -0.00091706938903134377 -0.0013575784006194845 -0.00091398780666997138 -0.0013562130337660195 -0.00090785761069755132 -0.0013533509914209624 -0.00090480899695856713 -0.0013518543158788504 -0.00090177800210452467 -0.0013502925155985032 -0.00089575348076683054 -0.0013470398697176997 -0.00089275995415601919 -0.0013453490240621349 -0.00088978627663261964 -0.0013435942576327225 -0.00088388080626626282 -0.0013399582294166274 -0.00088094901329823264 -0.0013380769675665769 -0.00087803925552920104 -0.0013361331309135343 -0.00087226594787695173 -0.0013321217931851869 -0.0008694023978720011 -0.0013300542920359495 -0.00086656302022535415 -0.0013279257010592443 -0.00086093469334584595 -0.0013235479602792149 -0.00085814574399553027 -0.0013212988103905973 -0.00085538305046402481 -0.0013189901913342335 -0.00084991220032792946 -0.0013142557677218386 -0.00084720404361065204 -0.0013118299630696488 -0.0008445241678526462 -0.0013093464419675718 -0.00083922294067425218 -0.0013042658477956351 -0.00083660158914596202 -0.0013016687746200926 -0.00083401048091059633 -0.0012990158658520825 -0.00082889064626365976 -0.0012936003819824155 -0.00082636191974863778 -0.001290837806767248 -0.00082386533170929492 -0.00128802140075816 -0.0008189382564760166 -0.0012822830514848723 -0.00081650776918257414 -0.001279361108100919 -0.00081411124420272126 -0.0012763874581964989 -0.00080938786740466682 -0.00127033898446413 -0.00080706101549045341 -0.0012672641605113288 -0.00080476987434607633 -0.0012641398690637134 -0.00080026068290587108 -0.0012577947001270978 -0.00079804263251734731 -0.0012545738225086798 -0.00079586196210033368 -0.0012513058262046623 -0.00079157696758297349 -0.0012446780497973404 -0.00078947264339348849 -0.0012413182695599873 -0.00078740728542045784 -0.0012379138240251315 -0.00078335600180311432 -0.0012310181551030482 -0.00078137007607391776 -0.0012275269315766243 -0.0007794246163251216 -0.0012239935952883985 -0.00077561603884435852 -0.0012168453434155471 -0.00077375292103283577 -0.0012132304276858718 -0.0007719316791458458 -0.001209576045229075 -0.00076837426427122128 -0.0012021910806717005 -0.00076663809121061311 -0.0011984604984196594 -0.00076494511105358414 -0.0011946931831175447 -0.00076164675763669312 -0.0011870879017135136 -0.00076004138431154844 -0.0011832499354535583 -0.00075848042496090204 -0.0011793780514083026 -0.000755448456608955 -0.0011715693382781899 -0.00075397744755067401 -0.0011676325090291674 -0.00075255197489801037 -0.0011636646526054465 -0.00074979312362114122 -0.001155669844771959 -0.00074845974494801466 -0.0011516428931929795 -0.00074717292396104694 -0.0011475878739786735 -0.000744693315142591 -0.00113942472196102 -0.00074350052726892591 -0.0011353165889850159 -0.00074235521493110719 -0.001131183410263172 -0.00074016035367016684 -0.0011228700387130954 -0.0007391108047092212 -0.0011186898457105723 -0.00073810954366263512 -0.0011144876844769627 -0.00073620430253829288 -0.0011060425519232042 -0.00073530032242395433 -0.001101799580428711 -0.00073444533533986093 -0.0010975377669893882 -0.00073283394364643867 -0.0010889796247574648 -0.00073207753899878173 -0.001084683295791341 -0.00073137072370001979 -0.001080371292974644 -0.00073005675820280737 -0.0010717191433489226 -0.00072944960796288085 -0.0010673789963670458 -0.00072889253332211572 -0.0010630263783844563 -0.0007278789105829986 -0.0010542994320796772 -0.00072742236244237183 -0.0010499251035840556 -0.00072701626507997612 -0.001045541534574273 -0.00072630523540236438 -0.0010367591675837433 -0.00072600030305315936 -0.0010323603694271735 -0.00072574608485828033 -0.0010279555817175167 -0.00072527141839537498 -0.001017667576317692 -0.0007250904728664468 -0.0010117809688340248 -0.00072500000043197786 -0.0010058904844084818 -0.00072500000000000006 -0.001 + 0 5 0.02999999206140359 3 0.059999980056328228 3 0.089999973022479002 3 0.11999997309541297 3 0.14999997879185498 3 0.17999998733081851 3 0.2099999960215877 3 0.24000000295689533 3 0.27000000721961759 3 0.30000000877947447 3 0.33000000822360626 3 0.36000000643270597 3 0.39000000428337406 3 0.42000000242850055 3 0.4500000011814641 3 0.48000000050760411 3 0.51000000010814461 3 0.53999999956816913 3 0.56999999853158778 3 0.59999999686252214 3 0.62999999475425938 3 0.65999999275396404 3 0.68999999168324322 3 0.71999999245145807 3 0.74999999577966336 3 0.78000000187799257 3 0.81000001014726342 3 0.84000001900592047 3 0.87000002597538184 3 0.90000002818946989 3 0.93000002352574029 3 0.96000001258730916 3 1 5 +8 0 1 +7 0 0 4 101 34 6.2831853071795862 0.74999999999999989 6.2714043378266195 0.74999999999999989 6.2596233655247113 0.74999999999999989 6.2478423914671399 0.75000000000000011 6.2242804448812477 0.75000000000000011 6.2124994718791715 0.75000000000000011 6.2007184993254185 0.75000000000000011 6.1771565538661815 0.75000000000000011 6.1653755808108492 0.75000000000000033 6.1535946087676301 0.74999999999999989 6.1300326639776497 0.74999999999999989 6.1182516910777043 0.74999999999999989 6.1064707191079144 0.74999999999999989 6.0829087746121591 0.74999999999999989 6.0711278019303094 0.74999999999999989 6.0593468298210951 0.74999999999999989 6.0357848853833813 0.74999999999999989 6.0240039128969194 0.74999999999999989 6.012222940581748 0.74999999999999989 5.9886609960716832 0.74999999999999989 5.9768800237173156 0.74999999999999989 5.9650990512155175 0.74999999999999989 5.941537106579208 0.74999999999999989 5.9297561342842009 0.74999999999999989 5.9179751616561784 0.74999999999999989 5.8944132168910111 0.74999999999999989 5.8826322445927755 0.74999999999999989 5.8708512719088599 0.74999999999999989 5.8472893270425326 0.74999999999999989 5.835508354698792 0.74999999999999989 5.8237273820196558 0.74999999999999989 5.8001654370934803 0.74999999999999989 5.7883844646851319 0.74999999999999989 5.7766034920516214 0.74999999999999989 5.753041547107979 0.74999999999999989 5.7412605746367245 0.74999999999999989 5.7294796020669709 0.74999999999999989 5.7059176571407004 0.74999999999999989 5.6941366846233654 0.74999999999999989 5.6823557121150898 0.74999999999999989 5.6587937672285049 0.74999999999999989 5.6470127946897106 0.74999999999999989 5.6352318222258884 0.74999999999999989 5.6116698773869551 0.74999999999999989 5.5998889048516833 0.74999999999999989 5.5881079324077811 0.74999999999999989 5.5645459876109866 0.74999999999999989 5.5527650150981804 0.74999999999999989 5.5409840426495549 0.74999999999999989 5.5174220978788533 0.74999999999999989 5.5056411253970028 0.74999999999999989 5.4938601529252153 0.74999999999999989 5.470298208158443 0.74999999999999989 5.4585172357036962 0.74999999999999989 5.446736263200858 0.74999999999999989 5.4231743184149481 0.74999999999999989 5.4113933459720176 0.74999999999999989 5.3996123734425776 0.74999999999999989 5.3760504286188997 0.74999999999999989 5.3642694561645978 0.74999999999999989 5.3524884836243816 0.74999999999999989 5.3289265387535032 0.74999999999999989 5.3171455662624627 0.74999999999999989 5.3053645937350753 0.74999999999999989 5.2818026488202516 0.74999999999999989 5.270021676272111 0.74999999999999989 5.2582407037830849 0.74999999999999989 5.2346787588419108 0.74999999999999989 5.2228977862287342 0.74999999999999989 5.2111168137983404 0.74999999999999989 5.1875548688618629 0.74999999999999989 5.175773896194527 0.74999999999999989 5.1639929238302464 0.74999999999999989 5.1404309789391096 0.74999999999999989 5.1286500062508997 0.74999999999999989 5.1168690339410441 0.74999999999999989 5.0933070891381051 0.74999999999999989 5.0815261164838113 0.74999999999999989 5.0697451441938091 0.74999999999999989 5.0461831995129502 0.74999999999999989 5.0344022269613538 0.74999999999999989 5.0226212546346574 0.74999999999999989 4.9990593100854879 0.74999999999999989 4.9872783377031524 0.74999999999999989 4.9754973652687378 0.74999999999999989 4.9519354208170565 0.74999999999999989 4.9401544486412536 0.74999999999999967 4.9283734760298454 0.74999999999999978 4.9048115315738077 0.74999999999999978 4.8930305595725407 0.74999999999999978 4.8812495867436301 0.74999999999999967 4.8576876420858168 0.74999999999999967 4.8459066701027655 0.74999999999999967 4.8341256970846782 0.74999999999999967 4.8105637519002373 0.74999999999999967 4.7987827795828366 0.74999999999999967 4.7870018065278162 0.74999999999999967 4.7595128685772705 0.74999999999999967 4.7438049026515365 0.74999999999999967 4.7280969388073366 0.74999999999999989 4.7123889803846897 0.75000000000000011 + 0 5 0.02999999206140359 3 0.059999980056328228 3 0.089999973022479002 3 0.11999997309541297 3 0.14999997879185498 3 0.17999998733081851 3 0.2099999960215877 3 0.24000000295689533 3 0.27000000721961759 3 0.30000000877947447 3 0.33000000822360626 3 0.36000000643270597 3 0.39000000428337406 3 0.42000000242850055 3 0.4500000011814641 3 0.48000000050760411 3 0.51000000010814461 3 0.53999999956816913 3 0.56999999853158778 3 0.59999999686252214 3 0.62999999475425938 3 0.65999999275396404 3 0.68999999168324322 3 0.71999999245145807 3 0.74999999577966336 3 0.78000000187799257 3 0.81000001014726342 3 0.84000001900592047 3 0.87000002597538184 3 0.90000002818946989 3 0.93000002352574029 3 0.96000001258730916 3 1 5 +8 0 1 +7 0 0 4 101 34 -0.00072499999999999984 -0.001 -0.00072500000032398341 -0.00099558213649264559 -0.00072505089092451795 -0.00099116427309906387 -0.00072515267304187458 -0.00098674804503909525 -0.00072545790438826891 -0.00097792212803487718 -0.00072566135388063915 -0.00097351243878775434 -0.00072591558038688573 -0.00096910765213132635 -0.00072652536146353868 -0.00096031113963622103 -0.00072688091606145429 -0.00095591941362061297 -0.00072728702168049612 -0.00095153584638593832 -0.00072819999705519341 -0.00094278826672328534 -0.00072870686685180559 -0.00093842425412127512 -0.00072926394969024069 -0.00093407163840884453 -0.00073047809220431017 -0.0009253924129774833 -0.00073113515192221184 -0.00092106580308568865 -0.00073184197535732843 -0.00091675380293918093 -0.00073335458994364599 -0.00090816220237019234 -0.00073416038113420122 -0.00090388260177448772 -0.00073501537628471475 -0.00089962079139088182 -0.00073682310547203297 -0.00089113589220297885 -0.0007377758395457119 -0.00088691280322455849 -0.00073877710857158578 -0.00088271064545905273 -0.00074087593962462788 -0.00087435128731484281 -0.0007419735016888434 -0.00087019408676168293 -0.00074311882189443128 -0.00086606091196071548 -0.00074550409554035386 -0.00085784565559113258 -0.00074674404902110123 -0.00085376357384911721 -0.00074803087773600368 -0.00084970855904448151 -0.00075069729842780659 -0.0008416556449085406 -0.00075207689045117749 -0.00083765774540668029 -0.00075350237066340836 -0.00083368989390345634 -0.00075644401833086276 -0.00082581720165038927 -0.00075796018584030442 -0.00082191236073454537 -0.00075952115255655407 -0.00081804048212548365 -0.00076273149579524253 -0.00081036549092615418 -0.00076438087238022909 -0.00080656237817572168 -0.00076607385968822874 -0.00080279506881457971 -0.0007695457703373183 -0.00079533481862899529 -0.00077132469374892462 -0.00079164187765088821 -0.00077314594255711399 -0.00078798750161724533 -0.00077687171161653463 -0.00078075855546488936 -0.00077877623194526552 -0.00077718398519903962 -0.00078072169837513968 -0.00077365065578717637 -0.00078469305321289551 -0.00076666906308680866 -0.0007867189417040182 -0.00076322079965723399 -0.00078878430611068297 -0.00075981636142176574 -0.00079299242891109388 -0.00075309762246729558 -0.00079513518739265953 -0.00074978332161260131 -0.00079731586398923437 -0.0007465153330037112 -0.00080175141139297141 -0.00074007436464272841 -0.00080400628229169318 -0.00073690138475970834 -0.00080629742935327665 -0.00073377710138101406 -0.00081095055324012901 -0.0007276282039625514 -0.00081331253016030125 -0.00072460358979638338 -0.00081570906078324808 -0.00072162994831863705 -0.0008205694301486173 -0.00071578677397678245 -0.00082303326898934277 -0.00071291724099112135 -0.00082552986238157043 -0.00071010084375517019 -0.0008305866862577645 -0.00070457636609515685 -0.00083314691684380964 -0.00070186828555534242 -0.00083573803012184115 -0.0006992153858978936 -0.00084098008149526568 -0.00069402187115139816 -0.00084363101969702728 -0.00069148125595386767 -0.00084631090016534555 -0.00068899774428979007 -0.00085172654084075361 -0.00068414672400621095 -0.0008544623011589159 -0.00068177921528720048 -0.00085722499904713459 -0.00067947060598216012 -0.0008628022054100906 -0.00067497285132276329 -0.0008656167140007236 -0.00067278370587938504 -0.00086845609563391169 -0.00067065512494668455 -0.0008741824852626605 -0.00066652062264857526 -0.00087706949337861136 -0.00066451470120546419 -0.00087997925475600581 -0.00066257087486092364 -0.00088584211383389649 -0.00065880880493792034 -0.00088879521165848279 -0.00065699056129274653 -0.00089176889241563881 -0.00065523580540142816 -0.00089775520389525211 -0.00065185452064898779 -0.00090076783474432208 -0.0006502279917303533 -0.0009037988324736738 -0.0006486662021787825 -0.00090989530494373083 -0.00064567320955022714 -0.00091296077981224591 -0.00064424200642166588 -0.00091604236471689476 -0.00064287665044904761 -0.00092223546192298357 -0.00064027859437039935 -0.00092534697435227894 -0.00063904589421448347 -0.00092847230420778218 -0.00063788000273617409 -0.00093474827517786021 -0.00063568265042696147 -0.00093789891641968238 -0.00063465118954379415 -0.00094106105181859519 -0.00063368735050002708 -0.00094740596154412374 -0.00063189557936746475 -0.00095058873599749997 -0.00063106764722211067 -0.00095378065585139901 -0.00063030799998470364 -0.00096018041647490289 -0.00062892578715863516 -0.00096338825737169419 -0.00062830322151232571 -0.00096660287464553287 -0.00062774945238178615 -0.00097304327710525578 -0.00062677986645777017 -0.00097626906242007257 -0.00062636404961794573 -0.00097949924007382171 -0.00062601738844311023 -0.00098704377736702617 -0.0006253701159936938 -0.00099136062285504895 -0.00062512337209060973 -0.0009956803114337799 -0.00062500000058906104 -0.001 -0.00062500000000000001 + 0 5 0.029999992061432858 3 0.059999980056386043 3 0.089999973022564572 3 0.11999997309552696 3 0.14999997879199758 3 0.17999998733098987 3 0.20999999602178093 3 0.24000000295710489 3 0.27000000721984585 3 0.30000000877971755 3 0.3300000082238575 3 0.3600000064329536 3 0.39000000428361203 3 0.42000000242872731 3 0.45000000118168426 3 0.48000000050782077 3 0.510000000108352 3 0.53999999956836386 3 0.56999999853177064 3 0.59999999686268879 3 0.62999999475441015 3 0.65999999275410304 3 0.68999999168337922 3 0.71999999245158708 3 0.74999999577977361 3 0.78000000187807772 3 0.81000001014732825 3 0.84000001900597043 3 0.87000002597542336 3 0.90000002818950509 3 0.93000002352576439 3 0.96000001258732104 3 1 5 +8 0 1 +7 0 0 4 101 34 4.7123889803846897 0.75000000000000011 4.7006080110317221 0.75 4.6888270387298139 0.74999999999999989 4.6770460646722425 0.74999999999999989 4.6534841180863502 0.74999999999999989 4.641703145084275 0.74999999999999967 4.629922172530522 0.74999999999999978 4.6063602270712849 0.74999999999999978 4.5945792540159545 0.74999999999999978 4.5827982819727335 0.74999999999999978 4.5592363371827531 0.74999999999999978 4.5474553642828059 0.75 4.5356743923130187 0.74999999999999989 4.5121124478172625 0.74999999999999989 4.5003314751354111 0.75 4.4885505030261985 0.75000000000000011 4.4649885585884856 0.75000000000000011 4.4532075861020211 0.75 4.4414266137868514 0.75000000000000022 4.4178646692767884 0.75000000000000022 4.4060836969224173 0.75000000000000022 4.3943027244206228 0.75000000000000022 4.3707407797843105 0.75000000000000022 4.3589598074893061 0.75000000000000022 4.3471788348612819 0.75000000000000022 4.3236168900961145 0.75000000000000022 4.3118359177978789 0.75000000000000022 4.3000549451139642 0.75000000000000022 4.2764930002476378 0.75000000000000022 4.2647120279038919 0.75000000000000022 4.2529310552247601 0.75000000000000022 4.2293691102985855 0.75000000000000022 4.21758813789023 0.75000000000000011 4.2058071652567275 0.75000000000000011 4.1822452203130842 0.75000000000000011 4.1704642478418235 0.75000000000000011 4.158683275272077 0.75000000000000011 4.1351213303458056 0.75000000000000011 4.1233403578284662 0.75000000000000011 4.111559385320195 0.75000000000000011 4.0879974404336075 0.75000000000000011 4.0762164678948167 0.75000000000000011 4.0644354954309909 0.75000000000000011 4.0408735505920577 0.75000000000000011 4.0290925780567903 0.75000000000000011 4.0173116056128828 0.75000000000000011 3.9937496608160892 0.75000000000000011 3.9819686883032848 0.75000000000000011 3.9701877158546592 0.75000000000000022 3.9466257710839585 0.75000000000000022 3.9348447986021013 0.75000000000000022 3.923063826130321 0.75000000000000022 3.8995018813635447 0.75000000000000022 3.887720908908801 0.75000000000000022 3.8759399364059601 0.75000000000000022 3.8523779916200516 0.75000000000000022 3.840597019177121 0.75000000000000011 3.828816046647681 0.75000000000000033 3.8052541018240054 0.75000000000000033 3.7934731293696986 0.75000000000000033 3.7816921568294863 0.75000000000000033 3.7581302119586066 0.75000000000000033 3.7463492394675666 0.75000000000000033 3.7345682669401778 0.75000000000000033 3.7110063220253537 0.75000000000000033 3.699225349477218 0.75000000000000044 3.6874443769881866 0.75000000000000022 3.6638824320470116 0.75000000000000022 3.6521014594338403 0.75000000000000022 3.6403204870034425 0.75000000000000022 3.6167585420669672 0.75000000000000022 3.6049775693996273 0.75000000000000022 3.5931965970353517 0.75000000000000022 3.5696346521442153 0.75000000000000022 3.5578536794559983 0.75000000000000011 3.5460727071461493 0.75000000000000011 3.5225107623432086 0.75000000000000011 3.5107297896889134 0.75000000000000011 3.4989488173989138 0.75000000000000011 3.475386872718051 0.75000000000000011 3.4636059001664612 0.75000000000000011 3.451824927839759 0.75000000000000011 3.4282629832905922 0.75000000000000011 3.4164820109082532 0.75000000000000011 3.4047010384738421 0.75000000000000011 3.3811390940221577 0.75000000000000011 3.3693581218463589 0.75000000000000011 3.3575771492349471 0.75000000000000011 3.3340152047789111 0.75000000000000011 3.3222342327776446 0.75000000000000033 3.3104532599487331 0.75000000000000022 3.2868913152909229 0.75000000000000022 3.2751103433078654 0.75000000000000033 3.2633293702897843 0.75000000000000033 3.2397674251053385 0.75000000000000033 3.2279864527879432 0.75000000000000033 3.2162054797329187 0.75000000000000033 3.188716541782374 0.75000000000000033 3.1730085758566391 0.75000000000000044 3.1573006120124409 0.75000000000000022 3.1415926535897931 0.75000000000000011 + 0 5 0.029999992061432858 3 0.059999980056386043 3 0.089999973022564572 3 0.11999997309552696 3 0.14999997879199758 3 0.17999998733098987 3 0.20999999602178093 3 0.24000000295710489 3 0.27000000721984585 3 0.30000000877971755 3 0.3300000082238575 3 0.3600000064329536 3 0.39000000428361203 3 0.42000000242872731 3 0.45000000118168426 3 0.48000000050782077 3 0.510000000108352 3 0.53999999956836386 3 0.56999999853177064 3 0.59999999686268879 3 0.62999999475441015 3 0.65999999275410304 3 0.68999999168337922 3 0.71999999245158708 3 0.74999999577977361 3 0.78000000187807772 3 0.81000001014732825 3 0.84000001900597043 3 0.87000002597542336 3 0.90000002818950509 3 0.93000002352576439 3 0.96000001258732104 3 1 5 +8 0 1 +7 0 0 4 101 34 -0.001 -0.00062500000000000001 -0.0010032397665720603 -0.0006250000004417957 -0.0010064795330606861 -0.00062506939671525203 -0.0010097181003046634 -0.00062520819051164751 -0.0010161904394410889 -0.00062562441507491235 -0.0010194242115556483 -0.00062590184620087185 -0.001022654388437026 -0.00062624851870938982 -0.0010291051642667705 -0.00062708003835937104 -0.0010323257633448844 -0.0006275648855383468 -0.0010355403793169782 -0.00062811866592794939 -0.0010419552710695917 -0.00062936363234799143 -0.0010451555469777297 -0.00063005481843427978 -0.0010483474651668482 -0.00063081447685032859 -0.0010547122304831794 -0.00063247012573315045 -0.0010578850777371604 -0.00063336611625756088 -0.0010610472111779344 -0.00063432996639635713 -0.0010673477182618588 -0.00063639262265042639 -0.0010704860920320426 -0.00063749142881936566 -0.0010736114196466865 -0.00063865733129733824 -0.0010798336790511494 -0.00064112241655277246 -0.0010829306109686565 -0.00064242159938051582 -0.0010860121933300283 -0.00064378696623398055 -0.0010921423893024476 -0.00064664900857903755 -0.0010951910030414344 -0.00064814568412115104 -0.0010982219978954743 -0.00064970748440149636 -0.0011042465192331696 -0.00065296013028230053 -0.0011072400458439812 -0.00065465097593786579 -0.00111021372336738 -0.00065640574236727745 -0.001116119193733737 -0.0006600417705833726 -0.0011190509867017679 -0.00066192303243342403 -0.0011219607444707986 -0.00066386686908646581 -0.0011277340521230477 -0.00066787820681481268 -0.0011305976021280001 -0.00066994570796405221 -0.0011334369797746451 -0.00067207429894075533 -0.0011390653066541542 -0.00067645203972078549 -0.0011418542560044697 -0.00067870118960940216 -0.0011446169495359754 -0.00068100980866576727 -0.0011500877996720709 -0.00068574423227816216 -0.0011527959563893474 -0.00068817003693035005 -0.0011554758321473541 -0.00069065355803242902 -0.0011607770593257479 -0.00069573415220436569 -0.0011633984108540374 -0.00069833122537990675 -0.0011659895190894041 -0.0007009841341479178 -0.0011711093537363402 -0.00070639961801758451 -0.001173638080251362 -0.00070916219323275266 -0.0011761346682907052 -0.00071197859924184033 -0.0011810617435239839 -0.0007177169485151285 -0.001183492230817425 -0.00072063889189908053 -0.0011858887557972793 -0.0007236125418035018 -0.0011906121325953331 -0.00072966101553587038 -0.0011929389845095465 -0.0007327358394886717 -0.0011952301256539235 -0.00073586013093628673 -0.001199739317094129 -0.00074220529987290278 -0.0012019573674826526 -0.00074542617749132002 -0.0012041380378996663 -0.00074869417379533787 -0.0012084230324170264 -0.00075532195020265971 -0.0012105273566065113 -0.00075868173044001249 -0.0012125927145795424 -0.00076208617597486872 -0.0012166439981968855 -0.0007689818448969513 -0.0012186299239260823 -0.00077247306842337653 -0.0012205753836748785 -0.00077600640471160145 -0.001224383961155642 -0.00078315465658445357 -0.0012262470789671635 -0.00078676957231412739 -0.0012280683208541544 -0.00079042395477092579 -0.0012316257357287788 -0.00079780891932829969 -0.0012333619087893869 -0.00080153950158034061 -0.001235054888946416 -0.00080530681688245555 -0.0012383532423633071 -0.00081291209828648675 -0.0012399586156884512 -0.00081675006454644142 -0.0012415195750390979 -0.0008206219485916976 -0.0012445515433910448 -0.00082843066172180963 -0.0012460225524493266 -0.00083236749097083428 -0.0012474480251019892 -0.00083633534739455324 -0.0012502068763788586 -0.00084433015522804094 -0.0012515402550519858 -0.00084835710680702188 -0.0012528270760389529 -0.00085241212602132595 -0.0012553066848574092 -0.00086057527803898065 -0.0012564994727310745 -0.0008646834110149843 -0.0012576447850688927 -0.00086881658973682828 -0.0012598396463298332 -0.0008771299612869058 -0.0012608891952907784 -0.000881310154289427 -0.0012618904563373651 -0.00088551231552303823 -0.0012637956974617072 -0.00089395744807679531 -0.0012646996775760456 -0.00089820041957129051 -0.0012655546646601389 -0.00090246223301061171 -0.0012671660563535613 -0.00091102037524253639 -0.0012679224610012182 -0.00091531670420865862 -0.0012686292762999801 -0.00091962870702535658 -0.0012699432417971922 -0.00092828085665107795 -0.0012705503920371188 -0.0009326210036329543 -0.0012711074666778843 -0.00093697362161554399 -0.0012721210894170011 -0.00094570056792032237 -0.0012725776375576273 -0.00095007489641594589 -0.001272983734920024 -0.00095445846542572686 -0.0012736947645976356 -0.00096324083241625775 -0.0012739996969468399 -0.00096763963057282601 -0.0012742539151417197 -0.00097204441828248377 -0.0012747285816046251 -0.00098233242368230803 -0.0012749095271335535 -0.00098821903116597587 -0.0012749999995680219 -0.0009941095155915178 -0.0012749999999999999 -0.001 + 0 5 0.029999992061415345 3 0.059999980056347636 3 0.089999973022492463 3 0.11999997309543126 3 0.14999997879189231 3 0.17999998733087841 3 0.20999999602166664 3 0.2400000029569801 3 0.27000000721969997 3 0.30000000877954497 3 0.33000000822365405 3 0.36000000643272301 3 0.39000000428337128 3 0.4200000024284869 3 0.45000000118144273 3 0.48000000050758557 3 0.51000000010813284 3 0.53999999956816191 3 0.56999999853158445 3 0.59999999686252092 3 0.62999999475426582 3 0.65999999275398147 3 0.68999999168327564 3 0.7199999924514987 3 0.74999999577970056 3 0.78000000187802088 3 0.81000001014728717 3 0.84000001900593857 3 0.87000002597539483 3 0.90000002818947855 3 0.93000002352574329 3 0.96000001258730894 3 1 5 +8 0 1 +7 0 0 4 101 34 3.1415926535897931 0.75 3.1298116842368247 0.75000000000000011 3.11803071193492 0.75000000000000056 3.1062497378773459 0.75000000000000033 3.0826877912914576 0.75000000000000033 3.070906818289374 0.75000000000000033 3.059125845735629 0.75000000000000033 3.0355639002763901 0.75000000000000033 3.0237829272210561 0.75000000000000033 3.0120019551778379 0.75000000000000033 2.9884400103878535 0.75000000000000033 2.9766590374879174 0.75000000000000033 2.9648780655181186 0.75000000000000022 2.9413161210223642 0.75000000000000022 2.9295351483405194 0.75000000000000022 2.9177541762313002 0.75000000000000022 2.89419223179359 0.75000000000000022 2.8824112593071254 0.74999999999999978 2.8706302869919567 0.75 2.8470683424818906 0.75 2.8352873701275234 0.75 2.8235063976257253 0.75 2.7999444529894184 0.75 2.7881634806944011 0.75 2.7763825080663898 0.75 2.7528205633012179 0.75 2.7410395910029801 0.75 2.7292586183190695 0.75 2.7056966734527412 0.75 2.6939157011089954 0.75 2.6821347284298644 0.75 2.6585727835036908 0.75 2.6467918110953317 0.75000000000000044 2.6350108384618327 0.75000000000000022 2.6114488935181859 0.75000000000000022 2.5996679210469336 0.75000000000000022 2.5878869484771778 0.75000000000000022 2.5643250035509055 0.75000000000000022 2.5525440310335767 0.75000000000000022 2.5407630585252954 0.75000000000000022 2.5172011136387109 0.75000000000000022 2.5054201410999211 0.75000000000000022 2.4936391686360944 0.75000000000000022 2.4700772237971633 0.75000000000000022 2.4582962512618907 0.75000000000000022 2.4465152788179871 0.75000000000000022 2.4229533340211908 0.75000000000000022 2.4111723615083918 0.75000000000000022 2.3993913890597609 0.75000000000000022 2.3758294442890602 0.75000000000000022 2.3640484718072079 0.74999999999999989 2.3522674993354227 0.75 2.3287055545686499 0.75 2.3169245821139035 0.75 2.3051436096110649 0.75 2.281581664825155 0.75 2.2698006923822258 0.75 2.258019719852784 0.75 2.2344577750291084 0.75 2.2226768025748029 0.75 2.2108958300345893 0.75 2.1873338851637083 0.75 2.1755529126726723 0.75 2.1637719401452808 0.75 2.1402099952304594 0.75 2.1284290226823197 0.75 2.1166480501932918 0.75 2.0930861052521159 0.75 2.0813051326389429 0.75 2.0695241602085468 0.75 2.0459622152720716 0.75 2.0341812426047299 0.74999999999999978 2.022400270240456 0.75000000000000022 1.9988383253493185 0.75000000000000022 1.9870573526611022 0.75000000000000022 1.975276380351253 0.75000000000000022 1.9517144355483118 0.75000000000000022 1.9399334628940179 0.75000000000000022 1.9281524906040162 0.75000000000000022 1.9045905459231551 0.75000000000000022 1.8928095733715637 0.75000000000000044 1.8810286010448636 0.75000000000000033 1.8574666564956979 0.75000000000000033 1.8456856841133551 0.75000000000000033 1.8339047116789471 0.75000000000000033 1.8103427672272625 0.75000000000000033 1.7985617950514616 0.75000000000000044 1.7867808224400519 0.75000000000000022 1.7632188779840146 0.75000000000000022 1.7514379059827503 0.75000000000000022 1.7396569331538365 0.75000000000000022 1.7160949884960257 0.75000000000000022 1.7043140165129711 0.75000000000000011 1.6925330434948873 0.75 1.6689710983104427 0.75 1.6571901259930466 0.75 1.6454091529380228 0.75 1.6179202149874783 0.75 1.6022122490617432 0.75000000000000011 1.5865042852175446 0.74999999999999989 1.5707963267948966 0.75 + 0 5 0.029999992061415345 3 0.059999980056347636 3 0.089999973022492463 3 0.11999997309543126 3 0.14999997879189231 3 0.17999998733087841 3 0.20999999602166664 3 0.2400000029569801 3 0.27000000721969997 3 0.30000000877954497 3 0.33000000822365405 3 0.36000000643272301 3 0.39000000428337128 3 0.4200000024284869 3 0.45000000118144273 3 0.48000000050758557 3 0.51000000010813284 3 0.53999999956816191 3 0.56999999853158445 3 0.59999999686252092 3 0.62999999475426582 3 0.65999999275398147 3 0.68999999168327564 3 0.7199999924514987 3 0.74999999577970056 3 0.78000000187802088 3 0.81000001014728717 3 0.84000001900593857 3 0.87000002597539483 3 0.90000002818947855 3 0.93000002352574329 3 0.96000001258730894 3 1 5 +8 0 1 +7 0 0 4 101 34 -0.0012749999999999999 -0.0010000000000000002 -0.0012749999996760164 -0.0010044178635073534 -0.001274949109075482 -0.0010088357269009381 -0.001274847326958125 -0.0010132519549609037 -0.0012745420956117308 -0.0010220778719651224 -0.0012743386461193608 -0.0010264875612122457 -0.001274084419613114 -0.0010308923478686736 -0.0012734746385364613 -0.0010396888603637789 -0.0012731190839385454 -0.0010440805863793875 -0.0012727129783195038 -0.0010484641536140614 -0.0012718000029448065 -0.0010572117332767153 -0.0012712931331481945 -0.001061575745878724 -0.0012707360503097591 -0.0010659283615911562 -0.0012695219077956895 -0.0010746075870225167 -0.0012688648480777885 -0.0010789341969143116 -0.0012681580246426715 -0.0010832461970608192 -0.0012666454100563537 -0.0010918377976298081 -0.0012658396188657993 -0.0010961173982255113 -0.0012649846237152852 -0.001100379208609119 -0.0012631768945279664 -0.0011088641077970232 -0.0012622241604542889 -0.0011130871967754384 -0.0012612228914284139 -0.0011172893545409489 -0.0012591240603753724 -0.0011256487126851569 -0.0012580264983111566 -0.0011298059132383181 -0.001256881178105569 -0.0011339390880392845 -0.0012544959044596463 -0.0011421543444088676 -0.0012532559509788985 -0.0011462364261508832 -0.0012519691222639964 -0.0011502914409555185 -0.0012493027015721937 -0.0011583443550914594 -0.0012479231095488224 -0.0011623422545933198 -0.001246497629336592 -0.0011663101060965437 -0.0012435559816691372 -0.0011741827983496116 -0.0012420398141596959 -0.0011780876392654528 -0.0012404788474434456 -0.0011819595178745176 -0.0012372685042047573 -0.0011896345090738462 -0.001235619127619771 -0.0011934376218242779 -0.0012339261403117711 -0.0011972049311854205 -0.001230454229662681 -0.0012046651813710058 -0.0012286753062510758 -0.0012083581223491112 -0.0012268540574428852 -0.001212012498382756 -0.0012231282883834647 -0.0012192414445351119 -0.001221223768054734 -0.0012228160148009617 -0.0012192783016248593 -0.0012263493442128256 -0.0012153069467871033 -0.0012333309369131932 -0.0012132810582959799 -0.001236779200342769 -0.0012112156938893154 -0.0012401836385782371 -0.0012070075710889044 -0.0012469023775327076 -0.0012048648126073379 -0.0012502166783874024 -0.0012026841360107635 -0.0012534846669962922 -0.0011982485886070258 -0.001259925635357276 -0.0011959937177083045 -0.0012630986152402954 -0.0011937025706467202 -0.0012662228986189909 -0.0011890494467598678 -0.0012723717960374532 -0.0011866874698396948 -0.001275396410203622 -0.0011842909392167484 -0.001278370051681368 -0.0011794305698513785 -0.0012842132260232231 -0.0011769667310106533 -0.0012870827590088841 -0.0011744701376184246 -0.0012898991562448358 -0.0011694133137422306 -0.0012954236339048492 -0.0011668530831561849 -0.0012981317144446637 -0.0011642619698781537 -0.0013007846141021124 -0.0011590199185047281 -0.0013059781288486084 -0.0011563689803029667 -0.0013085187440461386 -0.0011536890998346478 -0.0013110022557102166 -0.0011482734591592397 -0.0013158532759937954 -0.0011455376988410764 -0.0013182207847128064 -0.0011427750009528582 -0.0013205293940178465 -0.0011371977945899016 -0.0013250271486772431 -0.0011343832859992678 -0.0013272162941206219 -0.0011315439043660801 -0.001329344875053322 -0.0011258175147373305 -0.0013334793773514312 -0.0011229305066213786 -0.0013354852987945427 -0.001120020745243985 -0.0013374291251390827 -0.0011141578861660936 -0.0013411911950620861 -0.0011112047883415066 -0.00134300943870726 -0.0011082311075843508 -0.0013447641945985779 -0.0011022447961047367 -0.0013481454793510183 -0.0010992321652556663 -0.0013497720082696527 -0.0010962011675263144 -0.0013513337978212235 -0.0010901046950562575 -0.0013543267904497784 -0.0010870392201877402 -0.0013557579935783402 -0.0010839576352830928 -0.0013571233495509576 -0.0010777645380770022 -0.0013597214056296062 -0.0010746530256477084 -0.0013609541057855213 -0.0010715276957922032 -0.0013621199972638312 -0.0010652517248221254 -0.0013643173495730431 -0.001062101083580303 -0.0013653488104562103 -0.0010589389481813897 -0.0013663126494999776 -0.00105259403845586 -0.0013681044206325394 -0.0010494112640024853 -0.0013689323527778931 -0.0010462193441485846 -0.0013696920000153003 -0.00103981958352508 -0.0013710742128413686 -0.00103661174262829 -0.0013716967784876773 -0.0010333971253544496 -0.001372250547618217 -0.0010269567228947279 -0.0013732201335422325 -0.0010237309375799087 -0.0013736359503820571 -0.0010205007599261612 -0.0013739826115568921 -0.0010129562226329591 -0.0013746298840063077 -0.0010086393771449446 -0.0013748766279093911 -0.0010043196885662139 -0.0013749999994109392 -0.0009999999999999998 -0.0013749999999999999 + 0 5 0.029999992061392766 3 0.059999980056299876 3 0.089999973022433788 3 0.11999997309535598 3 0.14999997879179094 3 0.17999998733075107 3 0.20999999602152697 3 0.24000000295684326 3 0.27000000721957262 3 0.30000000877943245 3 0.33000000822356701 3 0.36000000643266961 3 0.39000000428334575 3 0.42000000242848534 3 0.45000000118146721 3 0.48000000050762487 3 0.51000000010817792 3 0.53999999956821054 3 0.56999999853164007 3 0.59999999686258221 3 0.62999999475432755 3 0.65999999275404242 3 0.68999999168333592 3 0.71999999245155566 3 0.74999999577974974 3 0.78000000187805707 3 0.81000001014730072 3 0.84000001900593679 3 0.87000002597539061 3 0.90000002818948488 3 0.93000002352576361 3 0.96000001258733736 3 1 5 +8 0 1 +7 0 0 4 101 34 1.5707963267948968 0.75 1.5590153574419332 0.75 1.5472343851400165 0.75000000000000022 1.5354534110824529 0.75000000000000011 1.5118914644965584 0.75000000000000011 1.5001104914944823 0.75000000000000011 1.4883295189407291 0.75000000000000011 1.4647675734814922 0.75000000000000011 1.45298660042616 0.75000000000000011 1.4412056283829411 0.75000000000000011 1.4176436835929591 0.75000000000000011 1.4058627106930153 0.75000000000000011 1.3940817387232245 0.75000000000000011 1.3705197942274698 0.75000000000000011 1.3587388215456186 0.75000000000000022 1.3469578494364056 0.75 1.3233959049986916 0.75 1.311614932512233 0.75 1.2998339601970568 0.75 1.2762720156869904 0.75 1.2644910433326326 0.75 1.2527100708308252 0.75 1.229148126194519 0.75 1.2173671538995108 0.75 1.2055861812714903 0.75 1.1820242365063216 0.75 1.1702432642080856 0.75 1.1584622915241711 0.75 1.1349003466578453 0.75 1.1231193743141001 0.75 1.1113384016349674 0.75 1.0877764567087902 0.75 1.0759954843004427 0.75 1.0642145116669319 0.75 1.0406525667232909 0.75 1.0288715942520323 0.75000000000000022 1.0170906216822833 0.75000000000000011 0.99352867675600909 0.75000000000000011 0.98174770423867652 0.75000000000000011 0.96996673173039771 0.75000000000000011 0.94640478684381102 0.75000000000000011 0.9346238143050194 0.75000000000000011 0.92284284184119192 0.75000000000000011 0.89928089700225911 0.75000000000000011 0.88749992446698689 0.75000000000000011 0.87571895202308248 0.75000000000000011 0.85215700722628729 0.75000000000000011 0.84037603471347888 0.74999999999999989 0.82859506226485447 0.75 0.80503311749415096 0.75 0.79325214501229413 0.75 0.78147117254051202 0.75 0.75790922777373659 0.75 0.74612825531898797 0.75 0.73434728281614969 0.75 0.71078533803023736 0.75 0.69900436558730883 0.75 0.68722339305786473 0.75 0.66366144823418893 0.75 0.65188047577988029 0.75 0.64009950323966813 0.75 0.61653755836878577 0.75 0.60475658587774628 0.75 0.59297561335035587 0.75 0.56941366843553165 0.75 0.55763269588739173 0.75 0.54585172339836219 0.75 0.52228977845718572 0.75 0.51050880584401181 0.75 0.49872783341361521 0.75 0.47516588847713842 0.75 0.46338491580979418 0.74999999999999989 0.45160394344552118 0.75000000000000011 0.42804199855438252 0.75000000000000011 0.41626102586616381 0.75000000000000011 0.40448005355631539 0.75000000000000011 0.3809181087533719 0.75000000000000011 0.369137136099075 0.75000000000000011 0.35735616380907553 0.75000000000000011 0.33379421912821378 0.75000000000000011 0.32201324657661573 0.75000000000000011 0.31023227424991967 0.75000000000000022 0.28667032970074646 0.75000000000000022 0.27488935731841407 0.75000000000000022 0.26310838488399457 0.75000000000000022 0.23954644043231108 0.75000000000000022 0.22776546825651292 0.75000000000000022 0.21598449564509759 0.75000000000000022 0.19242255118905832 0.75000000000000022 0.18064157918779716 0.75 0.16886060635887942 0.75000000000000011 0.14529866170106787 0.75000000000000011 0.13351768971801364 0.75000000000000011 0.12173671669992737 0.75000000000000011 0.098174771515485759 0.75000000000000011 0.086393799198079796 0.74999999999999989 0.074612826143063013 0.75 0.047123888192528197 0.75 0.031415922266820995 0.75 0.015707958422625182 0.75 0 0.75 + 0 5 0.029999992061392766 3 0.059999980056299876 3 0.089999973022433788 3 0.11999997309535598 3 0.14999997879179094 3 0.17999998733075107 3 0.20999999602152697 3 0.24000000295684326 3 0.27000000721957262 3 0.30000000877943245 3 0.33000000822356701 3 0.36000000643266961 3 0.39000000428334575 3 0.42000000242848534 3 0.45000000118146721 3 0.48000000050762487 3 0.51000000010817792 3 0.53999999956821054 3 0.56999999853164007 3 0.59999999686258221 3 0.62999999475432755 3 0.65999999275404242 3 0.68999999168333592 3 0.71999999245155566 3 0.74999999577974974 3 0.78000000187805707 3 0.81000001014730072 3 0.84000001900593679 3 0.87000002597539061 3 0.90000002818948488 3 0.93000002352576361 3 0.96000001258733736 3 1 5 +8 0 0.002 +1 0 -0.002 -1 -0 +8 0 0.002 +1 0 0 -1 0 +8 0 0.002 +1 -0.002 0 0 -1 +8 0 0.002 +1 -0.002 0 0 1 +8 0 0.002 +1 0 -0.002 -1 0 +8 0 0.002 +1 0 0 1 0 +8 0 0.002 +1 -0.002 0 -0 -1 +8 0 0.002 +1 -0.002 0.002 1 0 +8 0 1 +7 0 0 4 101 34 0.0012250000000000002 0.0009999999999999998 0.0012249999997349225 0.00099617118496029286 0.0012249583619708486 0.00099234237001918869 0.0012248750856930115 0.00098851497236721606 0.0012246253509550526 0.0009808658442968935 0.0012244588922794768 0.00097704411361605433 0.0012242508887743662 0.00097322663184714947 0.0012237519769843774 0.000965602987684725 0.001223461068676992 0.00096179682513786472 0.0012231288004432303 0.00095799773353448005 0.0012223818205912053 0.00095041649782684728 0.0012219671089394319 0.00094663435357177181 0.001221511313889803 0.00094286208662099872 0.0012205179245601099 0.00093534009124715241 0.0012199803302454632 0.00093159036267426371 0.0012194020201621858 0.00092785329588062336 0.0012181644264097442 0.00092040724205416625 0.0012175051427083809 0.00091669825487122381 0.0012168056012215971 0.0009130046858720971 0.0012153265500683371 0.00090565110657591502 0.00121454704037169 0.00090199109612795064 0.0012137278202596121 0.00089834922606451249 0.0012120105948525773 0.00089110444900619657 0.0012111125895273103 0.00088750154186012606 0.0012101755093591015 0.00088391945703261926 0.0012082239218306199 0.00087679956817898167 0.001207209414437281 0.00087326176400256798 0.0012061565545796334 0.00086974741783855079 0.0012039749376499766 0.00086276822558740138 0.0012028461805399465 0.0008593033793524576 0.0012016798785481203 0.00085586457471632782 0.0011992730759111123 0.00084904157476367093 0.0011980325752215691 0.00084565737930327269 0.0011967554206355469 0.00084230175117541966 0.0011941287761675287 0.00083565009213599963 0.0011927792862343584 0.00083235406108562689 0.0011913941148005401 0.00082908905963930205 0.0011885534606331032 0.00082262350947846221 0.0011870979778417889 0.00081942296063076969 0.0011856078651805429 0.00081625583473494533 0.0011825595086773803 0.00080999074806957006 0.0011810012647720551 0.00080689278717249963 0.0011794095195112484 0.00080383056834888483 0.0011761602291894479 0.00079777985467523237 0.0011745026840603479 0.0007947913597029342 0.0011728128404548946 0.00079184084656552768 0.0011693698308909224 0.00078601793947165441 0.0011676166648605484 0.00078314554539758328 0.0011658324749178981 0.00078031328860321428 0.0011622033906784756 0.00077473111602369376 0.0011603584963067951 0.00077198120012507833 0.0011584839214382255 0.00076927348786354102 0.0011546768200762559 0.00076394444343420777 0.0011527442935052045 0.00076132311115686047 0.0011507834957227945 0.00075874595520948151 0.0011468068298784008 0.00075368187077987363 0.0011447909617359887 0.00075119494219230015 0.0011427482944150753 0.00074875406458780941 0.0011386108930618256 0.00074396618394913119 0.0011365161589459694 0.00074161918081462467 0.001134396157173035 0.00073932000111150294 0.0011301072060493236 0.00073481895499787335 0.001127938256611518 0.0007326170884933463 0.0011257456271374395 0.00073046471171781284 0.0011213146484030146 0.00072626049413871102 0.0011190762990517897 0.00072420865324890099 0.0011168159098705209 0.0007222078585178666 0.0011122527410281011 0.0007183098044797223 0.001109949961272129 0.00071641254509546219 0.0011076268308449742 0.00071456777495378738 0.001102941602966907 0.00071098453962875976 0.0011005795054174915 0.00070924607437806324 0.0010981987915632608 0.00070756142487946191 0.0010934019068631676 0.00070430096427952552 0.0010909857359157782 0.00070272515312037474 0.0010885527243871961 0.00070120436468123235 0.0010836548331766024 0.00069827391789578413 0.0010811899533910002 0.00069686425949963462 0.0010787100461578936 0.00069551070855493953 0.0010737220232278468 0.00069291678161019195 0.0010712139074263334 0.0006916764055654391 0.0010686926106861668 0.00069049309705583649 0.0010636255311539116 0.0006882414484543414 0.0010610797482572152 0.00068717310831921494 0.0010585226601936215 0.00068616266903801318 0.0010533877748544664 0.000684258297036696 0.0010508099774747932 0.00068336436427128458 0.0010482227757847738 0.00068252903710001964 0.0010430314860093409 0.0006809761687851327 0.0010404273978202143 0.00068025862759249251 0.0010378158270306608 0.00067960026665340675 0.0010325796592477931 0.00067840234887081422 0.0010299550621504189 0.00067786279197734644 0.0010273249207445501 0.00067738285873087864 0.0010220555005502313 0.00067654255093006527 0.0010194162216562899 0.00067618217633555109 0.0010167733490304952 0.0006758817366506936 0.0010106005457906041 0.00067532076719453357 0.0010070685813004072 0.00067510692247852811 0.0010035342906450854 0.0006750000005105194 0.001 0.00067499999999999993 + 0 5 0.029999992061416802 3 0.059999980056355942 3 0.089999973022522897 3 0.11999997309547714 3 0.14999997879193844 3 0.17999998733092509 3 0.20999999602171501 3 0.24000000295704005 3 0.27000000721978767 3 0.30000000877967054 3 0.33000000822382847 3 0.36000000643294716 3 0.39000000428363546 3 0.42000000242878177 3 0.45000000118177136 3 0.48000000050793401 3 0.51000000010848989 3 0.53999999956852673 3 0.56999999853195071 3 0.59999999686288119 3 0.62999999475460744 3 0.65999999275429733 3 0.68999999168356918 3 0.71999999245177315 3 0.7499999957799498 3 0.78000000187824414 3 0.81000001014748446 3 0.84000001900611299 3 0.87000002597554871 3 0.90000002818961111 3 0.9300000235258512 3 0.96000001258739043 3 1 5 +8 0 1 +7 0 0 4 101 34 1.5707963267948968 0.25 1.5590153574419301 0.24999999999999994 1.5472343851400225 0.24999999999999983 1.5354534110824505 0.24999999999999983 1.5118914644965573 0.24999999999999983 1.5001104914944836 0.24999999999999986 1.488329518940728 0.24999999999999983 1.4647675734814918 0.24999999999999983 1.4529866004261613 0.24999999999999983 1.4412056283829404 0.24999999999999983 1.41764368359296 0.24999999999999983 1.4058627106930128 0.24999999999999994 1.3940817387232265 0.24999999999999989 1.3705197942274701 0.24999999999999989 1.3587388215456186 0.25 1.3469578494364052 0.24999999999999994 1.3233959049986914 0.24999999999999994 1.3116149325122337 0.24999999999999986 1.2998339601970568 0.25 1.2762720156869958 0.25 1.2644910433326237 0.25 1.2527100708308307 0.25 1.2291481261945165 0.25 1.2173671538995154 0.25 1.2055861812714865 0.25 1.182024236506322 0.25 1.1702432642080842 0.25 1.1584622915241714 0.25 1.1349003466578431 0.25 1.1231193743141048 0.25 1.1113384016349634 0.24999999999999994 1.0877764567087933 0.24999999999999994 1.0759954843004371 0.24999999999999994 1.0642145116669359 0.24999999999999994 1.0406525667232887 0.24999999999999994 1.0288715942520368 0.24999999999999994 1.0170906216822819 0.24999999999999994 0.9935286767560112 0.24999999999999994 0.98174770423867352 0.24999999999999994 0.96996673173039949 0.24999999999999994 0.94640478684381146 0.24999999999999994 0.93462381430501873 0.24999999999999994 0.92284284184119192 0.24999999999999994 0.899280897002258 0.24999999999999994 0.88749992446698878 0.24999999999999994 0.87571895202308059 0.24999999999999994 0.85215700722629018 0.24999999999999994 0.84037603471347389 0.24999999999999994 0.8285950622648578 0.24999999999999994 0.80503311749414841 0.24999999999999994 0.79325214501229924 0.25000000000000006 0.78147117254051013 0.25 0.75790922777373793 0.25 0.74612825531898463 0.24999999999999992 0.73434728281615158 0.25000000000000006 0.71078533803023891 0.25000000000000006 0.69900436558730694 0.25000000000000006 0.68722339305786606 0.25000000000000006 0.66366144823418982 0.25000000000000006 0.65188047577988073 0.25000000000000006 0.64009950323966924 0.25000000000000006 0.61653755836878743 0.25000000000000006 0.60475658587774528 0.25000000000000006 0.5929756133503572 0.25000000000000006 0.56941366843553232 0.25000000000000006 0.55763269588739162 0.24999999999999992 0.54585172339836308 0.25 0.52228977845718338 0.25 0.51050880584401637 0.25 0.49872783341361243 0.25 0.47516588847713842 0.25 0.46338491580979413 0.24999999999999989 0.4516039434455224 0.24999999999999994 0.42804199855438263 0.24999999999999994 0.41626102586616359 0.24999999999999986 0.40448005355631517 0.24999999999999989 0.38091810875337073 0.24999999999999989 0.36913713609907783 0.24999999999999989 0.35735616380907392 0.24999999999999983 0.33379421912821222 0.24999999999999983 0.32201324657661878 0.24999999999999983 0.3102322742499185 0.24999999999999983 0.28667032970074874 0.24999999999999983 0.27488935731840985 0.24999999999999983 0.26310838488399735 0.24999999999999983 0.23954644043231135 0.24999999999999983 0.22776546825651148 0.24999999999999983 0.21598449564509881 0.24999999999999983 0.19242255118906151 0.24999999999999983 0.18064157918779342 0.24999999999999978 0.16886060635888175 0.24999999999999986 0.14529866170106875 0.24999999999999989 0.13351768971801295 0.24999999999999983 0.12173671669992872 0.24999999999999992 0.098174771515482678 0.24999999999999994 0.086393799198084306 0.24999999999999986 0.074612826143061459 0.25 0.047123888192532319 0.25 0.031415922266812307 0.24999999999999994 0.015707958422631292 0.25000000000000006 0 0.25 + 0 5 0.029999992061416802 3 0.059999980056355942 3 0.089999973022522897 3 0.11999997309547714 3 0.14999997879193844 3 0.17999998733092509 3 0.20999999602171501 3 0.24000000295704005 3 0.27000000721978767 3 0.30000000877967054 3 0.33000000822382847 3 0.36000000643294716 3 0.39000000428363546 3 0.42000000242878177 3 0.45000000118177136 3 0.48000000050793401 3 0.51000000010848989 3 0.53999999956852673 3 0.56999999853195071 3 0.59999999686288119 3 0.62999999475460744 3 0.65999999275429733 3 0.68999999168356918 3 0.71999999245177315 3 0.7499999957799498 3 0.78000000187824414 3 0.81000001014748446 3 0.84000001900611299 3 0.87000002597554871 3 0.90000002818961111 3 0.9300000235258512 3 0.96000001258739043 3 1 5 +8 0 1 +7 0 0 4 101 34 0.001 0.0013249999999999998 0.0010026507181044126 0.0013249999996171103 0.0010053014361405617 0.0013249398561801149 0.0010079511729765428 0.0013248195682232387 0.0010132467231790737 0.001324458840268409 0.0010158925367273473 0.0013242183999592446 0.0010185354087212041 0.0013239179504518615 0.0010238133162182672 0.0013231973000885446 0.0010264483518276322 0.0013227770992000993 0.0010290784921684365 0.0013222971561957769 0.0010343270399660288 0.0013212181852984073 0.0010369454475272347 0.0013206191573569572 0.0010395570169546933 0.0013199607867297152 0.0010447645522135101 0.0013185258910312697 0.0010473605181485865 0.0013177493659101134 0.0010499477182364916 0.0013169140291231574 0.0010551026785778847 0.0013151263937029639 0.0010576704389353071 0.0013141740950232165 0.0010602275251654712 0.0013131636462089735 0.0010653184646782128 0.0013110272389875975 0.0010678523180652649 0.0013099012805368856 0.0010703736127245685 0.001308717962597217 0.001075389227611094 0.0013062375258981673 0.0010778835479429913 0.0013049404070950028 0.0010803634528235705 0.0013035868468520362 0.0010852926066453209 0.0013007678870886727 0.0010877418556905294 0.0012993024875205166 0.0010901748645733113 0.0012977816899483595 0.0010950066130548759 0.0012946304654944103 0.0010974053527559918 0.0012930000385576994 0.0010997860636579265 0.0012913153801250628 0.0011045096790097666 0.0012878388874271618 0.0011068525835592725 0.0012860470530978224 0.00110917571072471 0.0012842022742513451 0.0011137807054443075 0.0012804082322419861 0.0011160625730945669 0.0012784589690051835 0.0011183229587112522 0.0012764581658230023 0.0011227991088226036 0.0012723549986922598 0.0011250148734094664 0.0012702526346603622 0.001127207499029653 0.0012681002497052286 0.0011315448667210668 0.0012636970680895497 0.0011336896088805755 0.0012614462713374142 0.0011358096065276946 0.0012591470837384708 0.0011399985621479145 0.0012544536643847603 0.0011420675202056603 0.0012520594325316139 0.0011441101831469404 0.0012496185473237387 0.0011481414265196227 0.0012446453112868892 0.0011501300070324394 0.0012421129603541294 0.0011520908001977732 0.0012395357971036324 0.0011559553812143632 0.0012342937865355791 0.0011578591691441746 0.0012316289391098181 0.0011597337391713921 0.0012289212198552182 0.0011634230776224692 0.0012234220734434844 0.0011652378461221705 0.0012206306461741885 0.0011670220310088177 0.0012177983827107075 0.0011705279356139309 0.0012120543098243614 0.0011722496554053274 0.0012091425002853228 0.0011739394937468983 0.0012061919808217803 0.0011772541803429059 0.0012002157344226428 0.0011788790286667951 0.0011971900073664062 0.0011804707684612639 0.0011941277825832793 0.0011835868773091614 0.0011879326309601405 0.0011851112464276797 0.0011847997039944227 0.0011866013534261263 0.0011816325725318645 0.0011895119655962734 0.0011752322699154734 0.0011909324708276805 0.0011719990986303714 0.0011923176364107041 0.0011687340920352052 0.0011950162892063424 0.0011621428481517113 0.0011963297764723694 0.0011588166107264178 0.0011976069250319895 0.0011554609778871949 0.0012000876264108547 0.0011486934265077652 0.0012012911792767219 0.0011452815078252768 0.0012024574750834458 0.0011418426989247207 0.0012047147170372481 0.0011349138654690313 0.0012058056632243516 0.0011314238407672474 0.0012068585167591434 0.0011279094907815175 0.0012088872876106077 0.0011208347590328834 0.0012098632049617878 0.001117274377120347 0.0012108002786927307 0.0011136922888947485 0.0012125960742698637 0.0011064873668846817 0.0012134547961470006 0.0011028645329491634 0.0012142740097305712 0.0010992226598800332 0.0012158328433777602 0.0010919035450001103 0.0012165724634713101 0.001088226303038215 0.0012172719983582956 0.001084532731390803 0.0012185904097438229 0.0010771156747898017 0.0012192092862737237 0.0010733921896858289 0.0012197875896999837 0.001069655120578024 0.0012208626523795211 0.0010621565909023989 0.0012213594116667339 0.0010583951301847729 0.0012218152000091779 0.0010546228612665282 0.001222644527704819 0.0010470595078023875 0.0012230180670926047 0.0010432684231061803 0.0012233503285709287 0.00103946932996437 0.0012239320801253383 0.0010318579452392432 0.0012241815702292332 0.001028045653503551 0.0012243895669341342 0.0010242281708218472 0.001224777930403784 0.0010153118994753331 0.0012249259767456344 0.0010102101729894874 0.0012249999996465637 0.001005105086487351 0.0012250000000000002 0.0009999999999999998 + 0 5 0.029999992061418561 3 0.05999998005635996 3 0.089999973022529822 3 0.11999997309548298 3 0.14999997879194735 3 0.17999998733093792 3 0.20999999602172967 3 0.2400000029570476 3 0.27000000721977918 3 0.30000000877964833 3 0.33000000822378767 3 0.36000000643288455 3 0.39000000428354664 3 0.42000000242867624 3 0.4500000011816494 3 0.48000000050779446 3 0.5100000001083389 3 0.53999999956836309 3 0.56999999853177863 3 0.59999999686270467 3 0.62999999475443147 3 0.65999999275412813 3 0.6899999916834012 3 0.7199999924516064 3 0.74999999577979171 3 0.78000000187809837 3 0.8100000101473539 3 0.84000001900599597 3 0.87000002597544213 3 0.90000002818951486 3 0.93000002352576894 3 0.9600000125873227 3 1 5 +8 0 1 +7 0 0 4 101 34 3.1415926535897931 0.25 3.1298116842368264 0.24999999999999992 3.1180307119349191 0.24999999999999975 3.1062497378773468 0.24999999999999981 3.0826877912914545 0.24999999999999975 3.0709068182893784 0.24999999999999969 3.0591258457356254 0.24999999999999972 3.0355639002763892 0.24999999999999972 3.023782927221057 0.24999999999999975 3.012001955177837 0.24999999999999975 2.9884400103878566 0.24999999999999981 2.9766590374879103 0.24999999999999981 2.9648780655181222 0.24999999999999986 2.9413161210223659 0.24999999999999992 2.9295351483405172 0.24999999999999986 2.917754176231302 0.24999999999999992 2.8941922317935886 0.24999999999999994 2.8824112593071294 0.24999999999999989 2.8706302869919549 0.25 2.8470683424818919 0.25 2.8352873701275216 0.25 2.8235063976257262 0.25 2.7999444529894166 0.25 2.7881634806944051 0.25 2.776382508066388 0.25 2.752820563301217 0.25 2.7410395910029832 0.25 2.7292586183190672 0.25 2.7056966734527412 0.25 2.6939157011089971 0.24999999999999992 2.6821347284298636 0.24999999999999994 2.658572783503689 0.24999999999999994 2.6467918110953343 0.24999999999999994 2.6350108384618309 0.24999999999999994 2.6114488935181881 0.24999999999999994 2.5996679210469269 0.24999999999999983 2.5878869484771805 0.24999999999999989 2.5643250035509073 0.24999999999999989 2.5525440310335727 0.24999999999999989 2.5407630585252967 0.24999999999999989 2.5172011136387096 0.24999999999999989 2.5054201410999246 0.24999999999999989 2.4936391686360926 0.24999999999999989 2.4700772237971638 0.24999999999999989 2.4582962512618893 0.24999999999999989 2.4465152788179894 0.24999999999999989 2.4229533340211939 0.24999999999999989 2.4111723615083887 0.24999999999999989 2.3993913890597627 0.24999999999999994 2.3758294442890602 0.24999999999999994 2.3640484718072101 0.24999999999999994 2.3522674993354231 0.24999999999999994 2.3287055545686508 0.24999999999999994 2.3169245821139008 0.25000000000000006 2.3051436096110662 0.25 2.281581664825155 0.25 2.2698006923822271 0.25000000000000011 2.2580197198527832 0.25000000000000006 2.2344577750291106 0.25000000000000006 2.2226768025748003 0.25000000000000006 2.2108958300345916 0.25000000000000006 2.1873338851637096 0.25000000000000006 2.1755529126726727 0.25000000000000006 2.1637719401452813 0.25000000000000006 2.1402099952304585 0.25000000000000006 2.1284290226823197 0.25000000000000011 2.1166480501932923 0.25 2.0930861052521155 0.25 2.0813051326389447 0.25 2.0695241602085455 0.25 2.0459622152720716 0.24999999999999997 2.0341812426047299 0.24999999999999992 2.0224002702404564 0.24999999999999994 1.9988383253493183 0.24999999999999992 1.9870573526611028 0.24999999999999989 1.9752763803512532 0.24999999999999989 1.9517144355483116 0.24999999999999986 1.9399334628940181 0.24999999999999989 1.9281524906040157 0.24999999999999983 1.9045905459231554 0.24999999999999983 1.8928095733715635 0.24999999999999983 1.8810286010448634 0.24999999999999983 1.857466656495697 0.24999999999999983 1.8456856841133553 0.24999999999999983 1.8339047116789469 0.24999999999999983 1.8103427672272627 0.24999999999999983 1.7985617950514601 0.24999999999999983 1.7867808224400517 0.24999999999999981 1.7632188779840146 0.24999999999999983 1.7514379059827494 0.24999999999999989 1.7396569331538363 0.24999999999999986 1.7160949884960257 0.24999999999999992 1.7043140165129702 0.24999999999999994 1.6925330434948878 0.24999999999999997 1.6689710983104424 0.25 1.6571901259930466 0.25 1.6454091529380224 0.25000000000000006 1.6179202149874781 0.25000000000000006 1.6022122490617421 0.24999999999999997 1.5865042852175444 0.25000000000000006 1.5707963267948966 0.25 + 0 5 0.029999992061418561 3 0.05999998005635996 3 0.089999973022529822 3 0.11999997309548298 3 0.14999997879194735 3 0.17999998733093792 3 0.20999999602172967 3 0.2400000029570476 3 0.27000000721977918 3 0.30000000877964833 3 0.33000000822378767 3 0.36000000643288455 3 0.39000000428354664 3 0.42000000242867624 3 0.4500000011816494 3 0.48000000050779446 3 0.5100000001083389 3 0.53999999956836309 3 0.56999999853177863 3 0.59999999686270467 3 0.62999999475443147 3 0.65999999275412813 3 0.6899999916834012 3 0.7199999924516064 3 0.74999999577979171 3 0.78000000187809837 3 0.8100000101473539 3 0.84000001900599597 3 0.87000002597544213 3 0.90000002818951486 3 0.93000002352576894 3 0.9600000125873227 3 1 5 +8 0 1 +7 0 0 4 101 34 0.00077499999999999997 0.001 0.00077500000026507721 0.0010038288150397072 0.00077504163802915096 0.0010076576299808114 0.00077512491430698838 0.001011485027632784 0.00077537464904494724 0.0010191341557031068 0.00077554110772052275 0.0010229558863839461 0.0007757491112256339 0.0010267733681528508 0.0007762480230156225 0.0010343970123152754 0.00077653893132300798 0.0010382031748621358 0.0007768711995567696 0.0010420022664655202 0.00077761817940879456 0.0010495835021731529 0.00077803289106056822 0.0010533656464282283 0.00077848868611019701 0.0010571379133790016 0.00077948207543989019 0.0010646599087528478 0.00078001966975453673 0.0010684096373257364 0.00078059797983781414 0.0010721467041193767 0.00078183557359025584 0.0010795927579458334 0.00078249485729161921 0.0010833017451287775 0.00078319439877840306 0.0010869953141279024 0.00078467344993166349 0.0010943488934240853 0.0007854529596283095 0.001098008903872049 0.00078627217974038845 0.001101650773935488 0.00078798940514742267 0.0011088955509938026 0.00078888741047269007 0.0011124984581398756 0.0007898244906408982 0.0011160805429673796 0.00079177607816938048 0.0011232004318210186 0.000792790585562719 0.0011267382359974314 0.00079384344542036674 0.0011302525821614495 0.00079602506235002359 0.0011372317744125979 0.00079715381946005406 0.0011406966206475436 0.00079832012145187963 0.0011441354252836712 0.00080072692408888774 0.0011509584252363291 0.00080196742477843075 0.0011543426206967271 0.00080324457936445338 0.0011576982488245809 0.00080587122383247122 0.001164349907864 0.00080722071376564163 0.0011676459389143735 0.00080860588519945996 0.0011709109403606982 0.0008114465393668968 0.0011773764905215376 0.00081290202215821103 0.0011805770393692298 0.00081439213481945697 0.0011837441652650543 0.00081744049132261921 0.0011900092519304293 0.00081899873522794453 0.001193107212827499 0.00082059048048875062 0.0011961694316511141 0.00082383977081055052 0.0012022201453247654 0.00082549731593965195 0.0012052086402970649 0.00082718715954510386 0.0012081591534344694 0.0008306301691090762 0.0012139820605283429 0.00083238333513944985 0.0012168544546024142 0.00083416752508210022 0.0012196867113967826 0.0008377966093215223 0.0012252688839763026 0.00083964150369320284 0.0012280187998749189 0.00084151607856177216 0.0012307265121364549 0.00084532317992374174 0.0012360555565657885 0.00084725570649479224 0.0012386768888431347 0.00084921650427720286 0.0012412540447905144 0.00085319317012159598 0.001246318129220122 0.00085520903826400753 0.0012488050578076946 0.0008572517055849215 0.0012512459354121861 0.00086138910693817051 0.0012560338160508638 0.00086348384105402673 0.0012583808191853705 0.0008656038428269604 0.0012606799988884919 0.00086989279395067196 0.0012651810450021218 0.0008720617433884769 0.001267382911506648 0.00087425437286255537 0.001269535288282182 0.00087868535159698041 0.0012737395058612839 0.0008809237009482037 0.0012757913467510932 0.00088318409012947362 0.0012777921414821279 0.00088774725897189247 0.0012816901955202719 0.00089005003872786443 0.001283587454904533 0.00089237316915501878 0.0012854322250462067 0.00089705839703308518 0.0012890154603712343 0.00089942049458250175 0.0012907539256219319 0.00090180120843673113 0.0012924385751205323 0.00090659809313682355 0.0012956990357204687 0.00090901426408421455 0.0012972748468796204 0.00091144727561279476 0.0012987956353187619 0.00091634516682338751 0.0013017260821042106 0.00091881004660899145 0.0013031357405003613 0.0009212899538420965 0.0013044892914450552 0.00092627797677214297 0.0013070832183898031 0.00092878609257365666 0.0013083235944345564 0.00093130738931382242 0.0013095069029441587 0.00093637446884607689 0.0013117585515456539 0.0009389202517427744 0.0013128268916807811 0.00094147733980636677 0.0013138373309619824 0.00094661222514552093 0.0013157417029632996 0.00094919002252519648 0.0013166356357287125 0.00095177722421521324 0.0013174709628999764 0.00095696851399064702 0.001319023831214864 0.00095957260217977242 0.0013197413724075045 0.00096218417296932662 0.0013203997333465899 0.00096742034075219326 0.0013215976511291828 0.00097004493784956806 0.0013221372080226513 0.00097267507925543587 0.0013226171412691187 0.00097794449944975425 0.0013234574490699322 0.00098058377834369672 0.0013238178236644471 0.00098322665096948992 0.0013241182633493048 0.00098939945420938513 0.0013246792328054657 0.00099293141869958527 0.0013248930775214714 0.00099646570935491095 0.0013249999994894806 0.001 0.001325 + 0 5 0.029999992061453328 3 0.059999980056428183 3 0.089999973022630908 3 0.11999997309561726 3 0.14999997879211419 3 0.17999998733113254 3 0.20999999602195013 3 0.24000000295730131 3 0.27000000722006656 3 0.30000000877996447 3 0.33000000822413011 3 0.36000000643325736 3 0.39000000428395332 3 0.42000000242910734 3 0.45000000118209887 3 0.48000000050825553 3 0.51000000010880409 3 0.53999999956883349 3 0.56999999853225713 3 0.59999999686319017 3 0.62999999475491886 3 0.65999999275462273 3 0.6899999916839118 3 0.71999999245212487 3 0.74999999578029763 3 0.78000000187857121 3 0.81000001014778389 3 0.84000001900637578 3 0.87000002597576176 3 0.90000002818977121 3 0.9300000235259569 3 0.96000001258743484 3 1 5 +8 0 1 +7 0 0 4 101 34 4.7123889803846897 0.25 4.7006080110317221 0.25000000000000011 4.6888270387298148 0.25000000000000006 4.6770460646722425 0.25000000000000011 4.6534841180863502 0.25000000000000017 4.641703145084275 0.25000000000000028 4.629922172530522 0.25000000000000022 4.6063602270712849 0.25000000000000022 4.5945792540159527 0.25000000000000022 4.5827982819727335 0.25000000000000017 4.559236337182754 0.25000000000000017 4.5474553642828059 0.25000000000000011 4.5356743923130187 0.25000000000000006 4.5121124478172616 0.25000000000000006 4.5003314751354111 0.25 4.4885505030261985 0.25 4.4649885585884856 0.24999999999999997 4.4532075861020228 0.24999999999999994 4.4414266137868514 0.24999999999999994 4.4178646692767876 0.24999999999999994 4.4060836969224182 0.25 4.394302724420621 0.24999999999999989 4.3707407797843114 0.24999999999999989 4.3589598074893035 0.24999999999999989 4.3471788348612828 0.24999999999999989 4.3236168900961136 0.24999999999999989 4.3118359177978807 0.24999999999999989 4.3000549451139634 0.24999999999999989 4.2764930002476378 0.24999999999999989 4.2647120279038937 0.24999999999999994 4.2529310552247592 0.24999999999999994 4.2293691102985864 0.24999999999999994 4.2175881378902309 0.24999999999999994 4.2058071652567275 0.24999999999999994 4.1822452203130824 0.24999999999999994 4.1704642478418279 0.24999999999999986 4.1586832752720753 0.25 4.1351213303458048 0.25 4.1233403578284671 0.25 4.111559385320195 0.25 4.0879974404336075 0.25 4.076216467894815 0.25 4.0644354954309909 0.25 4.0408735505920603 0.25 4.029092578056785 0.25000000000000006 4.0173116056128855 0.24999999999999994 3.9937496608160932 0.24999999999999994 3.9819686883032777 0.24999999999999994 3.9701877158546632 0.24999999999999994 3.9466257710839563 0.24999999999999994 3.934844798602104 0.24999999999999986 3.9230638261303192 0.24999999999999989 3.899501881363546 0.24999999999999989 3.8877209089087987 0.24999999999999994 3.875939936405961 0.24999999999999983 3.8523779916200507 0.24999999999999983 3.8405970191771224 0.24999999999999983 3.8288160466476802 0.24999999999999983 3.8052541018240076 0.24999999999999983 3.7934731293696951 0.24999999999999983 3.7816921568294886 0.24999999999999983 3.7581302119586057 0.24999999999999983 3.7463492394675684 0.24999999999999983 3.7345682669401778 0.24999999999999983 3.7110063220253524 0.24999999999999983 3.6992253494772189 0.24999999999999983 3.6874443769881866 0.24999999999999983 3.6638824320470103 0.24999999999999983 3.6521014594338421 0.24999999999999983 3.640320487003442 0.24999999999999989 3.6167585420669708 0.24999999999999989 3.6049775693996207 0.24999999999999983 3.5931965970353557 0.24999999999999992 3.5696346521442193 0.24999999999999994 3.5578536794559925 0.24999999999999986 3.5460727071461533 0.25 3.5225107623432113 0.25 3.5107297896889098 0.25 3.4989488173989152 0.25 3.4753868727180532 0.25 3.4636059001664572 0.25 3.4518249278397612 0.25 3.4282629832905944 0.25 3.4164820109082514 0.25 3.4047010384738439 0.25 3.3811390940221622 0.25 3.3693581218463518 0.25 3.3575771492349515 0.24999999999999997 3.3340152047789107 0.24999999999999992 3.3222342327776468 0.24999999999999989 3.3104532599487322 0.24999999999999992 3.2868913152909234 0.24999999999999986 3.2751103433078663 0.24999999999999981 3.2633293702897843 0.24999999999999981 3.2397674251053408 0.24999999999999975 3.2279864527879392 0.24999999999999981 3.2162054797329214 0.24999999999999978 3.188716541782374 0.24999999999999978 3.17300857585664 0.24999999999999967 3.1573006120124401 0.24999999999999989 3.1415926535897931 0.25 + 0 5 0.029999992061453328 3 0.059999980056428183 3 0.089999973022630908 3 0.11999997309561726 3 0.14999997879211419 3 0.17999998733113254 3 0.20999999602195013 3 0.24000000295730131 3 0.27000000722006656 3 0.30000000877996447 3 0.33000000822413011 3 0.36000000643325736 3 0.39000000428395332 3 0.42000000242910734 3 0.45000000118209887 3 0.48000000050825553 3 0.51000000010880409 3 0.53999999956883349 3 0.56999999853225713 3 0.59999999686319017 3 0.62999999475491886 3 0.65999999275462273 3 0.6899999916839118 3 0.71999999245212487 3 0.74999999578029763 3 0.78000000187857121 3 0.81000001014778389 3 0.84000001900637578 3 0.87000002597576176 3 0.90000002818977121 3 0.9300000235259569 3 0.96000001258743484 3 1 5 +8 0 1 +7 0 0 4 101 34 0.0009999999999999998 0.00067499999999999993 0.00099734928189558741 0.0006750000003828895 0.0009946985638594379 0.00067506014381988483 0.00099204882702345746 0.00067518043177676088 0.00098675327682092549 0.00067554115973159057 0.00098410746327265409 0.00067578160004075534 0.00098146459127879527 0.00067608204954813789 0.00097618668378173163 0.00067680269991145486 0.00097355164817236985 0.00067722290079990028 0.00097092150783156209 0.00067770284380422308 0.00096567296003397061 0.00067878181470159248 0.00096305455247276607 0.00067938084264304241 0.00096044298304530623 0.00068003921327028447 0.0009552354477864902 0.00068147410896873004 0.00095263948185141296 0.00068225063408988641 0.00095005228176350852 0.00068308597087684251 0.00094489732142211526 0.00068487360629703624 0.00094232956106469275 0.00068582590497678311 0.00093977247483452886 0.00068683635379102655 0.00093468153532178682 0.00068897276101240266 0.00093214768193473538 0.00069009871946311364 0.00092962638727543125 0.00069128203740278322 0.00092461077238890584 0.00069376247410183267 0.00092211645205700896 0.00069505959290499673 0.00091963654717642943 0.00069641315314796393 0.00091470739335467962 0.00069923211291132692 0.00091225814430946997 0.00070069751247948356 0.0009098251354266887 0.00070221831005164051 0.00090499338694512404 0.0007053695345055896 0.00090259464724400866 0.00070699996144230038 0.00090021393634207351 0.00070868461987493719 0.0008954903209902334 0.00071216111257283777 0.00089314741644072745 0.00071395294690217756 0.00089082428927529027 0.00071579772574865486 0.00088621929455569238 0.00071959176775801407 0.00088393742690543343 0.00072154103099481557 0.00088167704128874768 0.00072354183417699773 0.00087720089117739725 0.00072764500130773969 0.00087498512659053276 0.00072974736533963831 0.0008727925009703474 0.0007318997502947708 0.00086845513327893364 0.00073630293191044984 0.00086631039111942365 0.00073855372866258641 0.00086419039347230598 0.00074085291626152852 0.0008600014378520852 0.00074554633561523995 0.00085793247979434049 0.00074794056746838521 0.00085588981685305924 0.00075038145267626154 0.00085185857348037727 0.00075535468871311049 0.00084986999296756045 0.00075788703964587106 0.00084790919980222684 0.00076046420289636754 0.00084404461878563684 0.00076570621346442062 0.00084214083085582491 0.00076837106089018255 0.00084026626082860816 0.00077107878014478148 0.00083657692237753092 0.00077657792655651552 0.00083476215387782928 0.00077936935382581112 0.00083297796899118226 0.00078220161728929265 0.00082947206438606954 0.00078794569017563796 0.00082775034459467206 0.00079085749971467812 0.00082606050625310204 0.00079380801917821925 0.0008227458196570942 0.0007997842655773573 0.00082112097133320479 0.00080280999263359395 0.00081952923153873615 0.0008058722174167206 0.0008164131226908386 0.00081206736903985941 0.00081488875357232037 0.00081520029600557755 0.00081339864657387377 0.00081836742746813551 0.00081048803440372645 0.0008247677300845267 0.00080906752917231969 0.0008280009013696282 0.00080768236358929604 0.00083126590796479491 0.00080498371079365798 0.00083785715184828851 0.00080367022352763079 0.000841183389273583 0.00080239307496801063 0.00084453902211280448 0.00079991237358914514 0.00085130657349223485 0.00079870882072327826 0.00085471849217472336 0.00079754252491655417 0.00085815730107527909 0.00079528528296275193 0.0008650861345309692 0.0007941943367756483 0.00086857615923275093 0.00079314148324085654 0.0008720905092184832 0.00079111271238939244 0.00087916524096711671 0.00079013679503821222 0.00088272562287965205 0.00078919972130726921 0.00088630771110525175 0.00078740392573013621 0.00089351263311531837 0.00078654520385299941 0.00089713546705083634 0.00078572599026942855 0.00090077734011996644 0.00078416715662223959 0.00090809645499988971 0.00078342753652868992 0.00091177369696178456 0.00078272800164170436 0.00091546726860919662 0.000781409590256177 0.00092288432521019678 0.00078079071372627595 0.00092660781031417283 0.00078021241030001626 0.0009303448794219742 0.00077913734762047847 0.00093784340909760112 0.00077864058833326626 0.000941604869815226 0.00077818479999082187 0.00094537713873347183 0.00077735547229518069 0.00095294049219761241 0.00077698193290739494 0.00095673157689381966 0.00077664967142907122 0.00096053067003562976 0.00077606791987466176 0.00096814205476075449 0.00077581842977076678 0.00097195434649645243 0.00077561043306586565 0.0009757718291781509 0.00077522206959621572 0.00098468810052466677 0.0007750740232543655 0.00098978982701051306 0.00077500000035343655 0.00099489491351264863 0.00077500000000000019 0.001 + 0 5 0.029999992061393161 3 0.059999980056316668 3 0.089999973022487398 3 0.11999997309546409 3 0.14999997879195015 3 0.17999998733095773 3 0.20999999602176875 3 0.24000000295710966 3 0.27000000721986334 3 0.30000000877975042 3 0.33000000822391062 3 0.36000000643303121 3 0.39000000428371534 3 0.42000000242885477 3 0.45000000118183398 3 0.4800000005079898 3 0.5100000001085383 3 0.53999999956856215 3 0.56999999853197181 3 0.59999999686288419 3 0.629999994754596 3 0.65999999275427801 3 0.68999999168353832 3 0.71999999245172552 3 0.74999999577989518 3 0.78000000187819474 3 0.81000001014744971 3 0.84000001900609522 3 0.87000002597553483 3 0.90000002818959757 3 0.93000002352584432 3 0.96000001258737511 3 1 5 +8 0 1 +7 0 0 4 101 34 6.2831853071795862 0.25 6.2714043378266204 0.24999999999999997 6.2596233655247087 0.24999999999999992 6.2478423914671408 0.24999999999999994 6.2242804448812432 0.24999999999999994 6.2124994718791768 0.24999999999999994 6.200718499325415 0.24999999999999994 6.1771565538661761 0.24999999999999994 6.1653755808108599 0.24999999999999994 6.1535946087676248 0.24999999999999994 6.130032663977647 0.24999999999999994 6.1182516910777078 0.25 6.1064707191079126 0.25 6.0829087746121591 0.25 6.0711278019303085 0.25 6.0593468298210951 0.25000000000000006 6.0357848853833822 0.25000000000000006 6.0240039128969194 0.25000000000000006 6.012222940581748 0.25000000000000006 5.9886609960716841 0.25000000000000006 5.9768800237173139 0.25000000000000006 5.9650990512155184 0.25000000000000006 5.9415371065792097 0.25000000000000006 5.9297561342841991 0.25000000000000006 5.9179751616561802 0.25000000000000006 5.8944132168910119 0.25000000000000006 5.8826322445927737 0.24999999999999994 5.8708512719088608 0.25 5.8472893270425335 0.25 5.8355083546987911 0.25 5.8237273820196549 0.25 5.8001654370934812 0.25 5.7883844646851292 0.25 5.776603492051624 0.25 5.7530415471079799 0.25 5.7412605746367236 0.25 5.7294796020669718 0.25 5.7059176571407022 0.25 5.6941366846233628 0.25 5.6823557121150916 0.25 5.658793767228504 0.25 5.6470127946897133 0.25 5.6352318222258884 0.25 5.6116698773869551 0.25 5.5998889048516851 0.25 5.5881079324077803 0.25 5.5645459876109875 0.25 5.5527650150981787 0.25000000000000006 5.5409840426495567 0.25000000000000006 5.5174220978788551 0.25000000000000006 5.5056411253969992 0.25000000000000006 5.4938601529252171 0.25000000000000006 5.4702982081584439 0.25000000000000006 5.4585172357036944 0.25000000000000006 5.4467362632008589 0.25000000000000006 5.4231743184149499 0.25000000000000006 5.4113933459720158 0.25000000000000006 5.3996123734425785 0.25000000000000006 5.3760504286189041 0.25000000000000006 5.3642694561645925 0.25000000000000006 5.3524884836243842 0.25000000000000006 5.3289265387535023 0.25000000000000006 5.3171455662624636 0.25000000000000006 5.3053645937350753 0.25000000000000006 5.2818026488202516 0.25000000000000006 5.2700216762721119 0.25000000000000011 5.2582407037830841 0.25 5.2346787588419099 0.25 5.2228977862287342 0.25 5.2111168137983404 0.25 5.1875548688618656 0.25 5.1757738961945217 0.25 5.1639929238302491 0.25 5.1404309789391096 0.25 5.1286500062508997 0.25000000000000006 5.1168690339410432 0.24999999999999994 5.0933070891381034 0.24999999999999994 5.0815261164838139 0.24999999999999994 5.0697451441938073 0.24999999999999994 5.0461831995129476 0.24999999999999994 5.0344022269613582 0.24999999999999992 5.0226212546346556 0.24999999999999997 4.9990593100854888 0.25 4.9872783377031498 0.25000000000000006 4.9754973652687395 0.25000000000000006 4.9519354208170592 0.25000000000000006 4.9401544486412483 0.25000000000000011 4.928373476029849 0.25000000000000017 4.9048115315738059 0.25000000000000017 4.8930305595725452 0.25000000000000017 4.8812495867436283 0.25000000000000022 4.8576876420858186 0.25000000000000022 4.8459066701027629 0.25000000000000028 4.83412569708468 0.25000000000000028 4.8105637519002418 0.25000000000000028 4.7987827795828295 0.25000000000000028 4.7870018065278206 0.25000000000000028 4.7595128685772714 0.25000000000000017 4.7438049026515339 0.25000000000000006 4.7280969388073384 0.25 4.7123889803846897 0.24999999999999983 + 0 5 0.029999992061393161 3 0.059999980056316668 3 0.089999973022487398 3 0.11999997309546409 3 0.14999997879195015 3 0.17999998733095773 3 0.20999999602176875 3 0.24000000295710966 3 0.27000000721986334 3 0.30000000877975042 3 0.33000000822391062 3 0.36000000643303121 3 0.39000000428371534 3 0.42000000242885477 3 0.45000000118183398 3 0.4800000005079898 3 0.5100000001085383 3 0.53999999956856215 3 0.56999999853197181 3 0.59999999686288419 3 0.629999994754596 3 0.65999999275427801 3 0.68999999168353832 3 0.71999999245172552 3 0.74999999577989518 3 0.78000000187819474 3 0.81000001014744971 3 0.84000001900609522 3 0.87000002597553483 3 0.90000002818959757 3 0.93000002352584432 3 0.96000001258737511 3 1 5 +8 0 0.002 +1 0.002 0 0 1 +8 0 0.002 +1 0 0.002 -0 -1 +8 0.25 0.75 +1 6.2831853071795862 0 0 1 +8 0.25 0.75 +1 0 0 0 1 +8 0.24999999999999981 0.75000000000000011 +1 4.7123889803846897 0 0 1 +8 0.24999999999999981 0.75000000000000011 +1 4.7123889803846897 0 0 1 +8 0.25 0.75 +1 3.1415926535897931 0 0 1 +8 0.25 0.75 +1 3.1415926535897931 0 0 1 +8 0.25 0.75 +1 1.5707963267948966 0 0 1 +8 0.25 0.75 +1 1.5707963267948966 0 0 1 +8 0 0.00019999999999999996 +1 0 0 -1 0 +8 0 0.00019999999999999996 +1 0 0 0 1 +8 0 0.00040000000000000002 +1 -0.00019999999999999996 0 0 1 +8 0 0.00040000000000000002 +1 0 0 0 -1 +8 0 0.00019999999999999996 +1 -0.00019999999999999996 0.00040000000000000002 1 0 +8 0 0.00019999999999999996 +1 0 0 -0 -1 +8 0 0.00040000000000000002 +1 0 0.00040000000000000002 -0 -1 +8 0 0.00040000000000000002 +1 0 0 0 1 +8 0 0.00019999999999999996 +1 0 0 -1 0 +8 0 0.00019999999999999996 +1 0.0021000000000000003 0 0 1 +8 0 0.00040000000000000002 +1 -0.00019999999999999996 0 0 1 +8 0 0.00040000000000000002 +1 -0.0021000000000000003 0 0 -1 +8 0 0.00019999999999999996 +1 -0.00019999999999999996 0.00040000000000000002 1 0 +8 0 0.00019999999999999996 +1 -0.0021000000000000003 0 -0 -1 +8 0 0.00040000000000000002 +1 0 0.00040000000000000002 -0 -1 +8 0 0.00040000000000000002 +1 0.0021000000000000003 0 0 1 +8 0 0.0021000000000000003 +1 0 0.00019999999999999996 1 0 +8 0 0.0021000000000000003 +1 0 0 -1 -0 +8 0 0.0021000000000000003 +1 0 0 1 0 +8 0 0.0021000000000000003 +1 0 0.00040000000000000002 1 0 +8 0 0.0021000000000000003 +1 0 -0.00040000000000000002 -1 -0 +8 0 0.0021000000000000003 +1 0 0 -1 0 +8 0 0.0021000000000000003 +1 0 -0.00019999999999999996 -1 0 +8 0 0.0021000000000000003 +1 0 0 1 0 +Curves 36 +1 -0.001 -0.001 -0.001 1 0 0 +1 0.001 -0.001 -0.001 0 1 0 +1 0.001 0.001 -0.001 -1 0 0 +1 -0.001 0.001 -0.001 0 -1 0 +1 0.001 -0.001 -0.001 0 0 1 +1 -0.001 -0.001 0.001 1 0 0 +1 -0.001 -0.001 -0.001 0 0 1 +7 0 0 4 101 34 0.001 0.00037500000000000022 -1.1102230246251566e-19 0.001 0.00037499999955820454 -3.2397665720599324e-06 0.001 0.00037493060328474859 -6.4795330606866045e-06 0.001 0.00037479180948835289 -9.7181003046633577e-06 0.001 0.00037437558492508805 -1.619043944109011e-05 0.001 0.00037409815379912882 -1.9424211555646776e-05 0.001 0.00037375148129061041 -2.2654388437027386e-05 0.001 0.00037291996164062936 -2.9105164266771121e-05 0.001 0.00037243511446165354 -3.232576334488402e-05 0.001 0.00037188133407205085 -3.5540379316978403e-05 0.001 0.00037063636765200924 -4.1955271069590738e-05 0.001 0.00036994518156572019 -4.5155546977731497e-05 0.001 0.00036918552314967192 -4.8347465166847407e-05 0.001 0.00036752987426685001 -5.4712230483178638e-05 0.001 0.00036663388374243876 -5.7885077737162009e-05 0.001 0.00036567003360364359 -6.1047211177933877e-05 0.001 0.00036360737734957385 -6.7347718261859255e-05 0.001 0.00036250857118063485 -7.0486092032042146e-05 0.001 0.00036134266870266199 -7.3611419646686945e-05 0.001 0.00035887758344722799 -7.9833679051149572e-05 0.001 0.00035757840061948442 -8.293061096865629e-05 0.001 0.00035621303376601941 -8.6012193330028638e-05 0.001 0.00035335099142096225 -9.2142389302448676e-05 0.001 0.00035185431587885028 -9.5191003041432913e-05 0.001 0.00035029251559850328 -9.8221997895475366e-05 0.001 0.00034703986971769976 -0.00010424651923316953 0.001 0.00034534902406213488 -0.00010724004584398084 0.001 0.00034359425763272246 -0.00011021372336738034 0.001 0.00033995822941662747 -0.00011611919373373725 0.001 0.00033807696756657692 -0.00011905098670176739 0.001 0.00033613313091353426 -0.00012196074447079896 0.001 0.00033212179318518697 -0.00012773405212304834 0.001 0.00033005429203594949 -0.00013059760212799887 0.001 0.00032792570105924426 -0.00013343697977464587 0.001 0.00032354796027921485 -0.00013906530665415407 0.001 0.00032129881039059737 -0.00014185425600446978 0.001 0.00031899019133423346 -0.00014461694953597526 0.001 0.00031425576772183873 -0.00015008779967207053 0.001 0.00031182996306964884 -0.00015279595638934796 0.001 0.00030934644196757176 -0.00015547583214735384 0.001 0.00030426584779563503 -0.00016077705932574781 0.001 0.00030166877462009257 -0.00016339841085403795 0.001 0.00029901586585208249 -0.00016598951908940374 0.001 0.00029360038198241557 -0.00017110935373634029 0.001 0.0002908378067672479 -0.0001736380802513623 0.001 0.00028802140075816007 -0.00017613466829070513 0.001 0.00028228305148487223 -0.00018106174352398342 0.001 0.00027936110810091884 -0.00018349223081742583 0.001 0.00027638745819649893 -0.0001858887557972787 0.001 0.00027033898446412997 -0.00019061213259533317 0.001 0.00026726416051132886 -0.00019293898450954661 0.001 0.00026413986906371334 -0.00019523012565392372 0.001 0.00025779470012709773 -0.00019973931709412897 0.001 0.00025457382250867978 -0.00020195736748265271 0.001 0.00025130582620466236 -0.00020413803789966635 0.001 0.00024467804979734042 -0.00020842303241702654 0.001 0.00024131826955998736 -0.00021052735660651156 0.001 0.00023791382402513152 -0.00021259271457954221 0.001 0.00023101815510304812 -0.00021664399819688575 0.001 0.00022752693157662419 -0.00021862992392608229 0.001 0.00022399359528839846 -0.00022057538367487839 0.001 0.00021684534341554707 -0.00022438396115564152 0.001 0.00021323042768587187 -0.00022624707896716425 0.001 0.00020957604522907491 -0.0002280683208541542 0.001 0.00020219108067170044 -0.00023162573572877877 0.001 0.00019846049841965941 -0.00023336190878938689 0.001 0.00019469318311754469 -0.00023505488894641591 0.001 0.00018708790171351365 -0.0002383532423633069 0.001 0.00018324993545355817 -0.00023995861568845155 0.001 0.00017937805140830256 -0.00024151957503909793 0.001 0.00017156933827818977 -0.00024455154339104502 0.001 0.00016763250902916726 -0.00024602255244932602 0.001 0.00016366465260544638 -0.0002474480251019896 0.001 0.00015566984477195889 -0.00025020687637885875 0.001 0.00015164289319297941 -0.00025154025505198541 0.001 0.00014758787397867358 -0.00025282707603895303 0.001 0.00013942472196102007 -0.00025530668485740902 0.001 0.00013531658898501586 -0.00025649947273107411 0.001 0.00013118341026317193 -0.00025764478506889289 0.001 0.00012287003871309544 -0.00025983964632983312 0.001 0.00011868984571057228 -0.00026088919529077882 0.001 0.00011448768447696267 -0.00026189045633736484 0.001 0.00010604255192320423 -0.00026379569746170719 0.001 0.00010179958042871107 -0.00026469967757604575 0.001 9.7537766989388205e-05 -0.00026555466466013909 0.001 8.89796247574648e-05 -0.00026716605635356141 0.001 8.4683295791341048e-05 -0.00026792246100121829 0.001 8.0371292974644077e-05 -0.00026862927629998023 0.001 7.1719143348922599e-05 -0.00026994324179719265 0.001 6.7378996367045921e-05 -0.00027055039203711917 0.001 6.3026378384456244e-05 -0.0002711074666778843 0.001 5.429943207967725e-05 -0.00027212108941700142 0.001 4.9925103584055552e-05 -0.00027257763755762819 0.001 4.5541534574272906e-05 -0.00027298373492002395 0.001 3.6759167583743315e-05 -0.00027369476459763564 0.001 3.2360369427173465e-05 -0.00027399969694684066 0.001 2.7955581717516777e-05 -0.00027425391514171969 0.001 1.7667576317691892e-05 -0.00027472858160462499 0.001 1.1780968834024908e-05 -0.00027490952713355322 0.001 5.890484408481722e-06 -0.0002749999995680221 0.001 0 -0.00027499999999999991 + 0 5 0.02999999206140359 3 0.059999980056328228 3 0.089999973022479002 3 0.11999997309541297 3 0.14999997879185498 3 0.17999998733081851 3 0.2099999960215877 3 0.24000000295689533 3 0.27000000721961759 3 0.30000000877947447 3 0.33000000822360626 3 0.36000000643270597 3 0.39000000428337406 3 0.42000000242850055 3 0.4500000011814641 3 0.48000000050760411 3 0.51000000010814461 3 0.53999999956816913 3 0.56999999853158778 3 0.59999999686252214 3 0.62999999475425938 3 0.65999999275396404 3 0.68999999168324322 3 0.71999999245145807 3 0.74999999577966336 3 0.78000000187799257 3 0.81000001014726342 3 0.84000001900592047 3 0.87000002597538184 3 0.90000002818946989 3 0.93000002352574029 3 0.96000001258730916 3 1 5 +7 0 0 4 101 34 0.001 0 -0.00027500000000000012 0.001 -4.4178635073544023e-06 -0.00027499999967601661 0.001 -8.8357269009362591e-06 -0.00027494910907548207 0.001 -1.3251954960904699e-05 -0.00027484732695812544 0.001 -2.2077871965122898e-05 -0.00027454209561173117 0.001 -2.6487561212245715e-05 -0.00027433864611936087 0.001 -3.0892347868673674e-05 -0.00027408441961311423 0.001 -3.9688860363778942e-05 -0.00027347463853646139 0.001 -4.4080586379387054e-05 -0.00027311908393854567 0.001 -4.8464153614061645e-05 -0.0002727129783195039 0.001 -5.7211733276714697e-05 -0.00027180000294480656 0.001 -6.1575745878724946e-05 -0.00027129313314819449 0.001 -6.5928361591155452e-05 -0.00027073605030975933 0.001 -7.4607587022516682e-05 -0.00026952190779568985 0.001 -7.8934196914311368e-05 -0.00026886484807778823 0.001 -8.3246197060819033e-05 -0.00026815802464267159 0.001 -9.1837797629807711e-05 -0.00026664541005635403 0.001 -9.6117398225512355e-05 -0.00026583961886579875 0.001 -0.0001003792086091182 -0.00026498462371528532 0.001 -0.00010886410779702117 -0.000263176894527967 0.001 -0.00011308719677544155 -0.00026222416045428812 0.001 -0.00011728935454094724 -0.00026122289142841429 0.001 -0.00012564871268515721 -0.00025912406037537219 0.001 -0.00012980591323831714 -0.00025802649831115667 0.001 -0.00013393908803928457 -0.0002568811781055688 0.001 -0.00014215434440886744 -0.00025449590445964621 0.001 -0.00014623642615088284 -0.00025325595097889874 0.001 -0.00015029144095551851 -0.0002519691222639964 0.001 -0.0001583443550914594 -0.00024930270157219348 0.001 -0.00016234225459331976 -0.00024792310954882259 0.001 -0.00016631010609654374 -0.00024649762933659172 0.001 -0.0001741827983496107 -0.00024355598166913729 0.001 -0.00017808763926545468 -0.00024203981415969557 0.001 -0.00018195951787451637 -0.00024047884744344595 0.001 -0.00018963450907384582 -0.00023726850420475754 0.001 -0.00019343762182427837 -0.00023561912761977088 0.001 -0.00019720493118542025 -0.00023392614031177129 0.001 -0.00020466518137100476 -0.00023045422966268169 0.001 -0.00020835812234911179 -0.00022867530625107535 0.001 -0.00021201249838275472 -0.000226854057442886 0.001 -0.00021924144453511064 -0.00022312828838346545 0.001 -0.00022281601480096037 -0.00022122376805473455 0.001 -0.00022634934421282359 -0.00021927830162486028 0.001 -0.00023333093691319142 -0.00021530694678710449 0.001 -0.00023677920034276601 -0.00021328105829598176 0.001 -0.00024018363857823433 -0.00021121569388931705 0.001 -0.00024690237753270439 -0.00020700757108890611 0.001 -0.00025021667838739871 -0.00020486481260734046 0.001 -0.00025348466699628882 -0.00020268413601076562 0.001 -0.00025992563535727167 -0.00019824858860702867 0.001 -0.00026309861524029168 -0.00019599371770830687 0.001 -0.00026622289861898596 -0.00019370257064672337 0.001 -0.00027237179603744867 -0.00018904944675987101 0.001 -0.00027539641020361659 -0.00018668746983969875 0.001 -0.00027837005168136297 -0.00018429093921675188 0.001 -0.00028421322602321751 -0.00017943056985138272 0.001 -0.00028708275900887872 -0.00017696673101065731 0.001 -0.00028989915624482988 -0.00017447013761842957 0.001 -0.00029542363390484317 -0.00016941331374223557 0.001 -0.0002981317144446576 -0.00016685308315619041 0.001 -0.00030078461410210647 -0.0001642619698781589 0.001 -0.00030597812884860186 -0.00015901991850473428 0.001 -0.00030851874404613235 -0.00015636898030297274 0.001 -0.0003110022557102099 -0.0001536890998346545 0.001 -0.00031585327599378913 -0.00014827345915924639 0.001 -0.00031822078471279959 -0.00014553769884108415 0.001 -0.00032052939401783985 -0.00014277500095286543 0.001 -0.00032502714867723673 -0.00013719779458990945 0.001 -0.00032721629412061493 -0.00013438328599927642 0.001 -0.00032934487505331548 -0.00013154390436608831 0.001 -0.00033347937735142476 -0.00012581751473733949 0.001 -0.00033548529879453583 -0.0001229305066213886 0.001 -0.00033742912513907644 -0.00012002074524399419 0.001 -0.00034119119506207963 -0.00011415788616610356 0.001 -0.00034300943870725354 -0.00011120478834151726 0.001 -0.00034476419459857191 -0.00010823110758436117 0.001 -0.00034814547935101229 -0.00010224479610474791 0.001 -0.00034977200826964672 -9.9232165255677904e-05 0.001 -0.00035133379782121757 -9.6201167526326235e-05 0.001 -0.00035432679044977288 -9.0104695056269176e-05 0.001 -0.00035575799357833414 -8.7039220187754116e-05 0.001 -0.00035712334955095235 -8.3957635283105292e-05 0.001 -0.00035972140562960068 -7.7764538077016438e-05 0.001 -0.00036095410578551655 -7.4653025647721026e-05 0.001 -0.00036211999726382593 -7.152769579221785e-05 0.001 -0.0003643173495730385 -6.5251724822139811e-05 0.001 -0.00036534881045620582 -6.2101083580317628e-05 0.001 -0.00036631264949997289 -5.8938948181404883e-05 0.001 -0.00036810442063253522 -5.2594038455876292e-05 0.001 -0.0003689323527778894 -4.9411264002500069e-05 0.001 -0.00036969200001529633 -4.621934414860096e-05 0.001 -0.00037107421284136491 -3.9819583525097179e-05 0.001 -0.00037169677848767436 -3.66117426283058e-05 0.001 -0.00037225054761821387 -3.3397125354467148e-05 0.001 -0.00037322013354222985 -2.6956722894744269e-05 0.001 -0.00037363595038205434 -2.3730937579927502e-05 0.001 -0.00037398261155688984 -2.0500759926178279e-05 0.001 -0.00037462988400630627 -1.2956222632973913e-05 0.001 -0.00037487662790939023 -8.6393771449511112e-06 0.001 -0.00037499999941093898 -4.3196885662201148e-06 0.001 -0.00037500000000000001 0 + 0 5 0.029999992061432858 3 0.059999980056386043 3 0.089999973022564572 3 0.11999997309552696 3 0.14999997879199758 3 0.17999998733098987 3 0.20999999602178093 3 0.24000000295710489 3 0.27000000721984585 3 0.30000000877971755 3 0.3300000082238575 3 0.3600000064329536 3 0.39000000428361203 3 0.42000000242872731 3 0.45000000118168426 3 0.48000000050782077 3 0.510000000108352 3 0.53999999956836386 3 0.56999999853177064 3 0.59999999686268879 3 0.62999999475441015 3 0.65999999275410304 3 0.68999999168337922 3 0.71999999245158708 3 0.74999999577977361 3 0.78000000187807772 3 0.81000001014732825 3 0.84000001900597043 3 0.87000002597542336 3 0.90000002818950509 3 0.93000002352576439 3 0.96000001258732104 3 1 5 +7 0 0 4 101 34 0.001 -0.00037500000000000001 0 0.001 -0.00037499999955820432 3.2397665720602653e-06 0.001 -0.00037493060328474805 6.4795330606861598e-06 0.001 -0.00037479180948835257 9.7181003046633577e-06 0.001 -0.00037437558492508773 1.6190439441088999e-05 0.001 -0.00037409815379912817 1.9424211555648219e-05 0.001 -0.0003737514812906102 2.2654388437026051e-05 0.001 -0.00037291996164062904 2.9105164266770569e-05 0.001 -0.00037243511446165322 3.2325763344884352e-05 0.001 -0.00037188133407205058 3.5540379316978179e-05 0.001 -0.00037063636765200859 4.1955271069591626e-05 0.001 -0.00036994518156572019 4.5155546977729613e-05 0.001 -0.00036918552314967149 4.8347465166848294e-05 0.001 -0.00036752987426684957 5.4712230483179302e-05 0.001 -0.00036663388374243909 5.7885077737160451e-05 0.001 -0.00036567003360364294 6.1047211177934325e-05 0.001 -0.00036360737734957363 6.7347718261858699e-05 0.001 -0.00036250857118063441 7.0486092032042701e-05 0.001 -0.00036134266870266172 7.3611419646686389e-05 0.001 -0.00035887758344722756 7.9833679051149355e-05 0.001 -0.0003575784006194842 8.2930610968656507e-05 0.001 -0.00035621303376601941 8.6012193330028408e-05 0.001 -0.00035335099142096252 9.2142389302447565e-05 0.001 -0.00035185431587884898 9.5191003041434458e-05 0.001 -0.0003502925155985036 9.8221997895474363e-05 0.001 -0.00034703986971769949 0.00010424651923316963 0.001 -0.00034534902406213418 0.00010724004584398106 0.001 -0.00034359425763272257 0.00011021372336737989 0.001 -0.00033995822941662747 0.00011611919373373692 0.001 -0.00033807696756657605 0.00011905098670176795 0.001 -0.00033613313091353426 0.00012196074447079864 0.001 -0.00033212179318518729 0.00012773405212304767 0.001 -0.00033005429203594781 0.00013059760212800019 0.001 -0.00032792570105924469 0.00013343697977464508 0.001 -0.00032354796027921453 0.00013906530665415407 0.001 -0.00032129881039059781 0.00014185425600446956 0.001 -0.00031899019133423281 0.00014461694953597548 0.001 -0.00031425576772183786 0.00015008779967207086 0.001 -0.00031182996306964992 0.00015279595638934728 0.001 -0.000309346441967571 0.00015547583214735395 0.001 -0.00030426584779563438 0.00016077705932574781 0.001 -0.00030166877462009322 0.00016339841085403741 0.001 -0.00029901586585208217 0.00016598951908940407 0.001 -0.00029360038198241557 0.00017110935373634018 0.001 -0.00029083780676724736 0.00017363808025136197 0.001 -0.00028802140075815963 0.00017613466829070524 0.001 -0.00028228305148487152 0.00018106174352398386 0.001 -0.00027936110810091954 0.00018349223081742493 0.001 -0.00027638745819649822 0.00018588875579727927 0.001 -0.00027033898446412964 0.00019061213259533317 0.001 -0.00026726416051132832 0.00019293898450954661 0.001 -0.00026413986906371323 0.0001952301256539235 0.001 -0.00025779470012709729 0.00019973931709412886 0.001 -0.00025457382250868 0.00020195736748265271 0.001 -0.00025130582620466215 0.00020413803789966624 0.001 -0.00024467804979734031 0.00020842303241702643 0.001 -0.00024131826955998747 0.00021052735660651134 0.001 -0.00023791382402513128 0.00021259271457954232 0.001 -0.00023101815510304869 0.00021664399819688551 0.001 -0.00022752693157662352 0.00021862992392608229 0.001 -0.00022399359528839857 0.0002205753836748785 0.001 -0.00021684534341554639 0.00022438396115564196 0.001 -0.00021323042768587263 0.00022624707896716357 0.001 -0.00020957604522907426 0.00022806832085415431 0.001 -0.00020219108067170033 0.00023162573572877877 0.001 -0.00019846049841965941 0.00023336190878938702 0.001 -0.00019469318311754447 0.00023505488894641591 0.001 -0.0001870879017135133 0.00023835324236330701 0.001 -0.0001832499354535586 0.00023995861568845123 0.001 -0.00017937805140830242 0.00024151957503909793 0.001 -0.00017156933827819042 0.0002445515433910448 0.001 -0.00016763250902916571 0.00024602255244932645 0.001 -0.00016366465260544684 0.00024744802510198927 0.001 -0.00015566984477195911 0.00025020687637885853 0.001 -0.00015164289319297819 0.00025154025505198585 0.001 -0.00014758787397867401 0.00025282707603895281 0.001 -0.0001394247219610194 0.00025530668485740902 0.001 -0.00013531658898501575 0.00025649947273107432 0.001 -0.00013118341026317171 0.00025764478506889278 0.001 -0.00012287003871309422 0.00025983964632983312 0.001 -0.00011868984571057307 0.00026088919529077838 0.001 -0.00011448768447696178 0.00026189045633736517 0.001 -0.00010604255192320466 0.00026379569746170709 0.001 -0.00010179958042870951 0.00026469967757604553 0.001 -9.7537766989388327e-05 0.00026555466466013876 0.001 -8.8979624757463689e-05 0.00026716605635356119 0.001 -8.4683295791341374e-05 0.00026792246100121808 0.001 -8.03712929746434e-05 0.00026862927629998001 0.001 -7.1719143348922043e-05 0.00026994324179719232 0.001 -6.7378996367045704e-05 0.00027055039203711885 0.001 -6.3026378384456013e-05 0.0002711074666778843 0.001 -5.429943207967769e-05 0.00027212108941700121 0.001 -4.9925103584054109e-05 0.00027257763755762744 0.001 -4.5541534574273123e-05 0.00027298373492002395 0.001 -3.6759167583742312e-05 0.00027369476459763553 0.001 -3.2360369427174021e-05 0.0002739996969468399 0.001 -2.7955581717516221e-05 0.00027425391514171958 0.001 -1.7667576317692003e-05 0.00027472858160462499 0.001 -1.1780968834024241e-05 0.00027490952713355333 0.001 -5.8904844084821667e-06 0.00027499999956802189 0.001 0 0.00027499999999999991 + 0 5 0.029999992061415345 3 0.059999980056347636 3 0.089999973022492463 3 0.11999997309543126 3 0.14999997879189231 3 0.17999998733087841 3 0.20999999602166664 3 0.2400000029569801 3 0.27000000721969997 3 0.30000000877954497 3 0.33000000822365405 3 0.36000000643272301 3 0.39000000428337128 3 0.4200000024284869 3 0.45000000118144273 3 0.48000000050758557 3 0.51000000010813284 3 0.53999999956816191 3 0.56999999853158445 3 0.59999999686252092 3 0.62999999475426582 3 0.65999999275398147 3 0.68999999168327564 3 0.7199999924514987 3 0.74999999577970056 3 0.78000000187802088 3 0.81000001014728717 3 0.84000001900593857 3 0.87000002597539483 3 0.90000002818947855 3 0.93000002352574329 3 0.96000001258730894 3 1 5 +7 0 0 4 101 34 0.001 2.2204460492503131e-19 0.00027499999999999991 0.001 4.4178635073532927e-06 0.00027499999967601639 0.001 8.8357269009380345e-06 0.00027494910907548185 0.001 1.325195496090359e-05 0.00027484732695812506 0.001 2.2077871965122454e-05 0.00027454209561173084 0.001 2.6487561212245715e-05 0.00027433864611936065 0.001 3.0892347868673566e-05 0.00027408441961311402 0.001 3.9688860363778834e-05 0.00027347463853646129 0.001 4.4080586379387386e-05 0.00027311908393854535 0.001 4.8464153614061313e-05 0.00027271297831950368 0.001 5.7211733276715252e-05 0.00027180000294480645 0.001 6.1575745878723835e-05 0.00027129313314819449 0.001 6.5928361591156116e-05 0.00027073605030975912 0.001 7.4607587022516682e-05 0.00026952190779568964 0.001 7.8934196914311585e-05 0.00026886484807778845 0.001 8.3246197060819155e-05 0.00026815802464267159 0.001 9.1837797629808145e-05 0.00026664541005635381 0.001 9.6117398225511243e-05 0.00026583961886579924 0.001 0.00010037920860911887 0.0002649846237152851 0.001 0.00010886410779702316 0.00026317689452796646 0.001 0.00011308719677543833 0.00026222416045428899 0.001 0.00011728935454094902 0.00026122289142841381 0.001 0.00012564871268515686 0.00025912406037537241 0.001 0.00012980591323831804 0.00025802649831115667 0.001 0.00013393908803928435 0.0002568811781055689 0.001 0.00014215434440886755 0.00025449590445964621 0.001 0.00014623642615088306 0.00025325595097889852 0.001 0.00015029144095551851 0.0002519691222639964 0.001 0.0001583443550914594 0.00024930270157219359 0.001 0.00016234225459331976 0.00024792310954882237 0.001 0.00016631010609654374 0.00024649762933659194 0.001 0.00017418279834961159 0.00024355598166913707 0.001 0.00017808763926545291 0.00024203981415969601 0.001 0.00018195951787451748 0.0002404788474434456 0.001 0.00018963450907384628 0.00023726850420475732 0.001 0.00019343762182427794 0.00023561912761977099 0.001 0.0001972049311854205 0.00023392614031177118 0.001 0.00020466518137100587 0.00023045422966268104 0.001 0.00020835812234911111 0.00022867530625107581 0.001 0.00021201249838275605 0.00022685405744288524 0.001 0.00021924144453511186 0.00022312828838346466 0.001 0.0002228160148009617 0.00022122376805473398 0.001 0.00022634934421282549 0.00021927830162485917 0.001 0.00023333093691319329 0.00021530694678710338 0.001 0.00023677920034276891 0.00021328105829597987 0.001 0.00024018363857823699 0.0002112156938893155 0.001 0.00024690237753270748 0.00020700757108890432 0.001 0.00025021667838740245 0.00020486481260733781 0.001 0.00025348466699629224 0.0002026841360107634 0.001 0.00025992563535727589 0.00019824858860702577 0.001 0.00026309861524029542 0.00019599371770830443 0.001 0.00026622289861899073 0.00019370257064672014 0.001 0.00027237179603745322 0.00018904944675986779 0.001 0.00027539641020362196 0.00018668746983969476 0.001 0.00027837005168136785 0.00018429093921674844 0.001 0.0002842132260232231 0.00017943056985137852 0.001 0.00028708275900888404 0.0001769667310106533 0.001 0.00028989915624483585 0.00017447013761842455 0.001 0.00029542363390484903 0.00016941331374223045 0.001 0.00029813171444466357 0.00016685308315618475 0.001 0.00030078461410211244 0.00016426196987815356 0.001 0.00030597812884860831 0.00015901991850472808 0.001 0.00030851874404613853 0.00015636898030296664 0.001 0.00031100225571021657 0.00015368909983464786 0.001 0.00031585327599379531 0.00014827345915923961 0.001 0.00031822078471280648 0.00014553769884107637 0.001 0.00032052939401784641 0.00014277500095285811 0.001 0.00032502714867724313 0.00013719779458990167 0.001 0.00032721629412062181 0.00013438328599926774 0.001 0.00032934487505332187 0.00013154390436607999 0.001 0.0003334793773514311 0.0001258175147373306 0.001 0.00033548529879454271 0.0001229305066213786 0.001 0.00033742912513908262 0.00012002074524398499 0.001 0.00034119119506208608 0.00011415788616609347 0.001 0.00034300943870726 0.0001112047883415066 0.001 0.00034476419459857798 0.00010823110758435073 0.001 0.00034814547935101836 0.00010224479610473658 0.001 0.00034977200826965274 9.9232165255666249e-05 0.001 0.00035133379782122343 9.6201167526314363e-05 0.001 0.00035432679044977846 9.0104695056257399e-05 0.001 0.00035575799357834016 8.7039220187740129e-05 0.001 0.00035712334955095761 8.3957635283092864e-05 0.001 0.00035972140562960631 7.7764538077002235e-05 0.001 0.00036095410578552121 7.465302564770849e-05 0.001 0.00036211999726383113 7.1527695792203308e-05 0.001 0.00036431734957304316 6.5251724822125377e-05 0.001 0.00036534881045621038 6.2101083580303086e-05 0.001 0.00036631264949997755 5.8938948181389562e-05 0.001 0.00036810442063253944 5.2594038455860083e-05 0.001 0.00036893235277789293 4.9411264002485304e-05 0.001 0.00036969200001530034 4.6219344148584528e-05 0.001 0.00037107421284136844 3.9819583525080082e-05 0.001 0.00037169677848767724 3.6611742628289923e-05 0.001 0.00037225054761821696 3.3397125354449611e-05 0.001 0.00037322013354223251 2.6956722894727837e-05 0.001 0.000373635950382057 2.373093757990863e-05 0.001 0.00037398261155689207 2.0500759926161071e-05 0.001 0.00037462988400630758 1.2956222632959148e-05 0.001 0.00037487662790939116 8.6393771449446704e-06 0.001 0.0003749999994109392 4.3196885662137866e-06 0.001 0.00037500000000000001 -1.1102230246251566e-19 + 0 5 0.029999992061392766 3 0.059999980056299876 3 0.089999973022433788 3 0.11999997309535598 3 0.14999997879179094 3 0.17999998733075107 3 0.20999999602152697 3 0.24000000295684326 3 0.27000000721957262 3 0.30000000877943245 3 0.33000000822356701 3 0.36000000643266961 3 0.39000000428334575 3 0.42000000242848534 3 0.45000000118146721 3 0.48000000050762487 3 0.51000000010817792 3 0.53999999956821054 3 0.56999999853164007 3 0.59999999686258221 3 0.62999999475432755 3 0.65999999275404242 3 0.68999999168333592 3 0.71999999245155566 3 0.74999999577974974 3 0.78000000187805707 3 0.81000001014730072 3 0.84000001900593679 3 0.87000002597539061 3 0.90000002818948488 3 0.93000002352576361 3 0.96000001258733736 3 1 5 +1 0.001 0.001 -0.001 0 0 1 +1 0.001 -0.001 0.001 0 1 0 +1 -0.001 0.001 -0.001 0 0 1 +1 0.001 0.001 0.001 -1 0 0 +7 0 0 4 101 34 -0.001 1.1102230246251566e-19 0.0002250000000000001 -0.001 3.8288150397072231e-06 0.00022499999973492259 -0.001 7.6576299808113204e-06 0.00022495836197084862 -0.001 1.1485027632783918e-05 0.00022487508569301153 -0.001 1.9134155703106614e-05 0.00022462535095505264 -0.001 2.2955886383945747e-05 0.00022445889227947681 -0.001 2.6773368152850584e-05 0.00022425088877436617 -0.001 3.4397012315275037e-05 0.00022375197698437744 -0.001 3.8203174862135317e-05 0.00022346106867699201 -0.001 4.2002266465519966e-05 0.00022312880044323037 -0.001 4.9583502173152775e-05 0.00022238182059120516 -0.001 5.3365646428228168e-05 0.00022196710893943196 -0.001 5.7137913379001317e-05 0.00022151131388980307 -0.001 6.4659908752847663e-05 0.00022051792456010988 -0.001 6.840963732573635e-05 0.00021998033024546326 -0.001 7.2146704119376625e-05 0.0002194020201621858 -0.001 7.9592757945833761e-05 0.0002181644264097442 -0.001 8.3301745128776193e-05 0.00021750514270838095 -0.001 8.699531412790296e-05 0.00021680560122159709 -0.001 9.4348893424085037e-05 0.00021532655006833702 -0.001 9.8008903872049419e-05 0.00021454704037169003 -0.001 0.00010165077393548749 0.00021372782025961201 -0.001 0.00010889555099380343 0.00021201059485257724 -0.001 0.00011249845813987392 0.00021111258952731028 -0.001 0.0001160805429673808 0.00021017550935910158 -0.001 0.00012320043182101835 0.0002082239218306199 -0.001 0.00012673823599743206 0.00020720941443728091 -0.001 0.0001302525821614492 0.00020615655457963334 -0.001 0.00013723177441259861 0.00020397493764997643 -0.001 0.00014069662064754242 0.00020284618053994643 -0.001 0.00014413542528367217 0.0002016798785481202 -0.001 0.00015095842523632909 0.00019927307591111233 -0.001 0.00015434262069672733 0.00019803257522156903 -0.001 0.00015769824882458039 0.00019675542063554686 -0.001 0.00016434990786400039 0.00019412877616752878 -0.001 0.00016764593891437307 0.00019277928623435847 -0.001 0.00017091094036069798 0.00019139411480054004 -0.001 0.00017737649052153781 0.00018855346063310319 -0.001 0.0001805770393692303 0.00018709797784178896 -0.001 0.00018374416526505466 0.00018560786518054284 -0.001 0.00019000925193042996 0.00018255950867738035 -0.001 0.00019310721282750042 0.00018100126477205514 -0.001 0.00019616943165111521 0.00017940951951124839 -0.001 0.00020222014532476763 0.00017616022918944796 -0.001 0.00020520864029706587 0.00017450268406034785 -0.001 0.00020815915343447235 0.00017281284045489453 -0.001 0.00021398206052834556 0.00016936983089092239 -0.001 0.00021685445460241671 0.00016761666486054839 -0.001 0.00021968671139678574 0.00016583247491789809 -0.001 0.00022526888397630628 0.00016220339067847544 -0.001 0.00022801879987492169 0.00016035849630679523 -0.001 0.000230726512136459 0.00015848392143822542 -0.001 0.00023605555656579225 0.00015467682007625584 -0.001 0.00023867688884313953 0.00015274429350520458 -0.001 0.00024125404479051848 0.00015078349572279447 -0.001 0.00024631812922012644 0.00014680682987840089 -0.001 0.00024880505780769993 0.00014479096173598859 -0.001 0.00025124593541219067 0.0001427482944150753 -0.001 0.00025603381605086883 0.0001386108930618255 -0.001 0.00025838081918537535 0.00013651615894596936 -0.001 0.00026067999888849703 0.00013439615717303498 -0.001 0.00026518104500212672 0.00013010720604932357 -0.001 0.00026738291150665372 0.00012793825661151792 -0.001 0.00026953528828218718 0.00012574562713743952 -0.001 0.00027373950586128906 0.00012131464840301453 -0.001 0.00027579134675109908 0.00011907629905178974 -0.001 0.00027779214148213337 0.00011681590987052082 -0.001 0.00028169019552027772 0.00011225274102810113 -0.001 0.00028358745490453783 0.00010994996127212909 -0.001 0.00028543222504621269 0.00010762683084497415 -0.001 0.00028901546037124026 0.00010294160296690702 -0.001 0.00029075392562193683 0.00010057950541749139 -0.001 0.00029243857512053806 9.8198791563260723e-05 -0.001 0.0002956990357204745 9.3401906863167523e-05 -0.001 0.00029727484687962522 9.0985735915778183e-05 -0.001 0.00029879563531876762 8.8552724387195968e-05 -0.001 0.00030172608210421594 8.3654833176602495e-05 -0.001 0.0003031357405003654 8.1189953391000327e-05 -0.001 0.00030448929144506043 7.8710046157893571e-05 -0.001 0.00030708321838980802 7.3722023227846821e-05 -0.001 0.00030832359443456092 7.1213907426333385e-05 -0.001 0.00030950690294416348 6.8692610686166728e-05 -0.001 0.00031175855154565857 6.3625531153911559e-05 -0.001 0.00031282689168078503 6.1079748257215184e-05 -0.001 0.00031383733096198684 5.8522660193621512e-05 -0.001 0.00031574170296330407 5.338777485446644e-05 -0.001 0.00031663563572871545 5.0809977474793212e-05 -0.001 0.00031747096289998033 4.8222775784773742e-05 -0.001 0.00031902383121486732 4.3031486009340813e-05 -0.001 0.00031974137240750757 4.0427397820214316e-05 -0.001 0.00032039973334659322 3.7815827030660775e-05 -0.001 0.0003215976511291858 3.2579659247793157e-05 -0.001 0.00032213720802265358 2.9955062150418767e-05 -0.001 0.00032261714126912132 2.7324920744550063e-05 -0.001 0.00032345744906993481 2.2055500550231199e-05 -0.001 0.00032381782366444888 1.9416221656289869e-05 -0.001 0.00032411826334930637 1.6773349030495099e-05 -0.001 0.00032467923280546639 1.0600545790603988e-05 -0.001 0.00032489307752147192 7.0685813004072178e-06 -0.001 0.00032499999948948068 3.5342906450854805e-06 -0.001 0.00032500000000000009 0 + 0 5 0.029999992061416802 3 0.059999980056355942 3 0.089999973022522897 3 0.11999997309547714 3 0.14999997879193844 3 0.17999998733092509 3 0.20999999602171501 3 0.24000000295704005 3 0.27000000721978767 3 0.30000000877967054 3 0.33000000822382847 3 0.36000000643294716 3 0.39000000428363546 3 0.42000000242878177 3 0.45000000118177136 3 0.48000000050793401 3 0.51000000010848989 3 0.53999999956852673 3 0.56999999853195071 3 0.59999999686288119 3 0.62999999475460744 3 0.65999999275429733 3 0.68999999168356918 3 0.71999999245177315 3 0.7499999957799498 3 0.78000000187824414 3 0.81000001014748446 3 0.84000001900611299 3 0.87000002597554871 3 0.90000002818961111 3 0.9300000235258512 3 0.96000001258739043 3 1 5 +7 0 0 4 101 34 -0.001 -0.00032499999999999971 0 -0.001 -0.00032499999961711025 2.6507181044126417e-06 -0.001 -0.00032493985618011492 5.3014361405616658e-06 -0.001 -0.00032481956822323865 7.9511729765426868e-06 -0.001 -0.00032445884026840901 1.3246723179073605e-05 -0.001 -0.00032421839995924452 1.5892536727347252e-05 -0.001 -0.00032391795045186143 1.8535408721204184e-05 -0.001 -0.00032319730008854462 2.3813316218267212e-05 -0.001 -0.00032277709920009936 2.6448351827632168e-05 -0.001 -0.00032229715619577683 2.9078492168436609e-05 -0.001 -0.00032121818529840727 3.4327039966028708e-05 -0.001 -0.00032061915735695723 3.694544752723461e-05 -0.001 -0.00031996078672971517 3.9557016954693272e-05 -0.001 -0.0003185258910312696 4.4764552213510054e-05 -0.001 -0.00031774936591011339 4.7360518148586551e-05 -0.001 -0.00031691402912315734 4.9947718236491577e-05 -0.001 -0.00031512639370296383 5.5102678577884755e-05 -0.001 -0.00031417409502321636 5.7670438935307102e-05 -0.001 -0.00031316364620897352 6.022752516547114e-05 -0.001 -0.00031102723898759741 6.5318464678212792e-05 -0.001 -0.00030990128053688573 6.7852318065264814e-05 -0.001 -0.00030871796259721696 7.0373612724568442e-05 -0.001 -0.00030623752589816736 7.5389227611093906e-05 -0.001 -0.0003049404070950028 7.7883547942991354e-05 -0.001 -0.0003035868468520362 8.0363452823570378e-05 -0.001 -0.00030076788708867277 8.5292606645320793e-05 -0.001 -0.00029930248752051657 8.7741855690529391e-05 -0.001 -0.0002977816899483594 9.0174864573311361e-05 -0.001 -0.00029463046549441031 9.5006613054875898e-05 -0.001 -0.00029300003855769943 9.7405352755991714e-05 -0.001 -0.00029131538012506277 9.978606365792642e-05 -0.001 -0.00028783888742716182 0.0001045096790097666 -0.001 -0.0002860470530978223 0.00010685258355927241 -0.001 -0.00028420227425134505 0.00010917571072471 -0.001 -0.00028040823224198606 0.00011378070544430764 -0.001 -0.00027845896900518353 0.00011606257309456703 -0.001 -0.00027645816582300229 0.0001183229587112522 -0.001 -0.00027235499869225979 0.00012279910882260348 -0.001 -0.0002702526346603622 0.0001250148734094665 -0.001 -0.00026810024970522851 0.000127207499029653 -0.001 -0.00026369706808954964 0.00013154486672106681 -0.001 -0.00026144627133741416 0.00013368960888057548 -0.001 -0.00025914708373847085 0.00013580960652769458 -0.001 -0.00025445366438476034 0.00013999856214791452 -0.001 -0.00025205943253161389 0.00014206752020566027 -0.001 -0.00024961854732373869 0.00014411018314694024 -0.001 -0.00024464531128688916 0.00014814142651962259 -0.001 -0.00024211296035412945 0.00015013000703243941 -0.001 -0.00023953579710363226 0.00015209080019777321 -0.001 -0.00023429378653557899 0.00015595538121436327 -0.001 -0.00023162893910981809 0.00015785916914417465 -0.001 -0.00022892121985521819 0.00015973373917139199 -0.001 -0.00022342207344348442 0.00016342307762246921 -0.001 -0.00022063064617418849 0.00016523784612217064 -0.001 -0.0002177983827107075 0.00016702203100881773 -0.001 -0.00021205430982436146 0.00017052793561393088 -0.001 -0.00020914250028532266 0.00017224965540532745 -0.001 -0.00020619198082178026 0.00017393949374689834 -0.001 -0.00020021573442264274 0.00017725418034290598 -0.001 -0.00019719000736640612 0.00017887902866679518 -0.001 -0.00019412778258327923 0.00018047076846126387 -0.001 -0.00018793263096014058 0.00018358687730916134 -0.001 -0.00018479970399442268 0.00018511124642767962 -0.001 -0.00018163257253186459 0.00018660135342612617 -0.001 -0.00017523226991547337 0.00018951196559627339 -0.001 -0.00017199909863037144 0.00019093247082768049 -0.001 -0.00016873409203520517 0.00019231763641070398 -0.001 -0.00016214284815171132 0.00019501628920634228 -0.001 -0.00015881661072641773 0.00019632977647236928 -0.001 -0.00015546097788719494 0.00019760692503198939 -0.001 -0.00014869342650776507 0.00020008762641085466 -0.001 -0.00014528150782527671 0.00020129117927672181 -0.001 -0.00014184269892472079 0.0002024574750834458 -0.001 -0.00013491386546903117 0.00020471471703724809 -0.001 -0.00013142384076724744 0.00020580566322435167 -0.001 -0.00012790949078151747 0.00020685851675914346 -0.001 -0.00012083475903288333 0.00020888728761060761 -0.001 -0.00011727437712034705 0.0002098632049617879 -0.001 -0.00011369228889474848 0.00021080027869273079 -0.001 -0.00010648736688468175 0.0002125960742698636 -0.001 -0.00010286453294916331 0.00021345479614700059 -0.001 -9.9222659880033204e-05 0.00021427400973057109 -0.001 -9.1903545000110218e-05 0.0002158328433777601 -0.001 -8.8226303038215105e-05 0.00021657246347131021 -0.001 -8.4532731390802858e-05 0.00021727199835829558 -0.001 -7.7115674789801641e-05 0.00021859040974382294 -0.001 -7.3392189685828952e-05 0.00021920928627372361 -0.001 -6.9655120578024029e-05 0.00021978758969998368 -0.001 -6.215659090239889e-05 0.0002208626523795212 -0.001 -5.8395130184772941e-05 0.0002213594116667339 -0.001 -5.462286126652827e-05 0.00022181520000917777 -0.001 -4.7059507802387438e-05 0.00022264452770481903 -0.001 -4.3268423106180178e-05 0.00022301806709260476 -0.001 -3.9469329964370027e-05 0.00022335032857092864 -0.001 -3.1857945239243123e-05 0.00022393208012533818 -0.001 -2.8045653503550929e-05 0.00022418157022923314 -0.001 -2.422817082184725e-05 0.00022438956693413426 -0.001 -1.5311899475332957e-05 0.00022477793040378402 -0.001 -1.0210172989487454e-05 0.00022492597674563441 -0.001 -5.1050864873509743e-06 0.00022499999964656369 -0.001 2.2204460492503131e-19 0.0002250000000000001 + 0 5 0.029999992061418561 3 0.05999998005635996 3 0.089999973022529822 3 0.11999997309548298 3 0.14999997879194735 3 0.17999998733093792 3 0.20999999602172967 3 0.2400000029570476 3 0.27000000721977918 3 0.30000000877964833 3 0.33000000822378767 3 0.36000000643288455 3 0.39000000428354664 3 0.42000000242867624 3 0.4500000011816494 3 0.48000000050779446 3 0.5100000001083389 3 0.53999999956836309 3 0.56999999853177863 3 0.59999999686270467 3 0.62999999475443147 3 0.65999999275412813 3 0.6899999916834012 3 0.7199999924516064 3 0.74999999577979171 3 0.78000000187809837 3 0.8100000101473539 3 0.84000001900599597 3 0.87000002597544213 3 0.90000002818951486 3 0.93000002352576894 3 0.9600000125873227 3 1 5 +7 0 0 4 101 34 -0.001 0 -0.0002250000000000001 -0.001 -3.8288150397072231e-06 -0.00022499999973492281 -0.001 -7.6576299808113204e-06 -0.00022495836197084906 -0.001 -1.1485027632784029e-05 -0.00022487508569301164 -0.001 -1.9134155703106838e-05 -0.00022462535095505278 -0.001 -2.2955886383946079e-05 -0.00022445889227947725 -0.001 -2.6773368152850808e-05 -0.00022425088877436617 -0.001 -3.4397012315275254e-05 -0.00022375197698437755 -0.001 -3.8203174862135649e-05 -0.00022346106867699201 -0.001 -4.200226646552019e-05 -0.00022312880044323048 -0.001 -4.9583502173152775e-05 -0.00022238182059120548 -0.001 -5.3365646428228384e-05 -0.00022196710893943183 -0.001 -5.7137913379001541e-05 -0.00022151131388980307 -0.001 -6.465990875284788e-05 -0.00022051792456010988 -0.001 -6.840963732573635e-05 -0.00021998033024546326 -0.001 -7.2146704119376625e-05 -0.00021940202016218591 -0.001 -7.9592757945833313e-05 -0.0002181644264097442 -0.001 -8.3301745128777413e-05 -0.00021750514270838084 -0.001 -8.6995314127902296e-05 -0.00021680560122159698 -0.001 -9.4348893424085254e-05 -0.00021532655006833656 -0.001 -9.8008903872048864e-05 -0.00021454704037169049 -0.001 -0.00010165077393548794 -0.00021372782025961157 -0.001 -0.00010889555099380255 -0.00021201059485257735 -0.001 -0.00011249845813987558 -0.00021111258952730995 -0.001 -0.00011608054296737946 -0.0002101755093591018 -0.001 -0.00012320043182101849 -0.00020822392183061954 -0.001 -0.00012673823599743139 -0.00020720941443728102 -0.001 -0.00013025258216144953 -0.00020615655457963334 -0.001 -0.00013723177441259793 -0.00020397493764997643 -0.001 -0.00014069662064754353 -0.00020284618053994596 -0.001 -0.0001441354252836713 -0.00020167987854812042 -0.001 -0.0001509584252363292 -0.00019927307591111233 -0.001 -0.00015434262069672711 -0.00019803257522156925 -0.001 -0.00015769824882458085 -0.00019675542063554664 -0.001 -0.00016434990786400006 -0.00019412877616752878 -0.001 -0.0001676459389143734 -0.00019277928623435836 -0.001 -0.00017091094036069808 -0.00019139411480054004 -0.001 -0.00017737649052153759 -0.00018855346063310319 -0.001 -0.00018057703936922987 -0.00018709797784178896 -0.001 -0.00018374416526505423 -0.00018560786518054308 -0.001 -0.00019000925193042928 -0.00018255950867738081 -0.001 -0.00019310721282749888 -0.00018100126477205546 -0.001 -0.00019616943165111399 -0.0001794095195112494 -0.001 -0.0002022201453247654 -0.0001761602291894495 -0.001 -0.00020520864029706476 -0.00017450268406034807 -0.001 -0.00020815915343446934 -0.00017281284045489621 -0.001 -0.0002139820605283429 -0.00016936983089092382 -0.001 -0.00021685445460241403 -0.00016761666486055015 -0.001 -0.00021968671139678265 -0.00016583247491789977 -0.001 -0.00022526888397630262 -0.00016220339067847767 -0.001 -0.00022801879987491879 -0.00016035849630679721 -0.001 -0.0002307265121364548 -0.00015848392143822786 -0.001 -0.00023605555656578848 -0.00015467682007625828 -0.001 -0.00023867688884313476 -0.00015274429350520781 -0.001 -0.0002412540447905145 -0.00015078349572279716 -0.001 -0.000246318129220122 -0.00014680682987840398 -0.001 -0.00024880505780769456 -0.00014479096173599249 -0.001 -0.00025124593541218612 -0.00014274829441507852 -0.001 -0.00025603381605086373 -0.00013861089306182951 -0.001 -0.00025838081918537047 -0.00013651615894597324 -0.001 -0.00026067999888849182 -0.00013439615717303964 -0.001 -0.00026518104500212168 -0.00013010720604932801 -0.001 -0.00026738291150664797 -0.00012793825661152315 -0.001 -0.00026953528828218198 -0.00012574562713744465 -0.001 -0.00027373950586128391 -0.00012131464840301964 -0.001 -0.00027579134675109307 -0.00011907629905179629 -0.001 -0.00027779214148212784 -0.00011681590987052637 -0.001 -0.00028169019552027198 -0.00011225274102810756 -0.001 -0.00028358745490453295 -0.00010994996127213564 -0.001 -0.00028543222504620667 -0.00010762683084498126 -0.001 -0.0002890154603712343 -0.00010294160296691479 -0.001 -0.00029075392562193179 -0.00010057950541749827 -0.001 -0.00029243857512053231 -9.8198791563268935e-05 -0.001 -0.00029569903572046875 -9.3401906863176508e-05 -0.001 -0.00029727484687962045 -9.0985735915785515e-05 -0.001 -0.00029879563531876198 -8.8552724387205292e-05 -0.001 -0.00030172608210421047 -8.3654833176612483e-05 -0.001 -0.00030313574050036117 -8.118995339100854e-05 -0.001 -0.00030448929144505523 -7.871004615790356e-05 -0.001 -0.00030708321838980314 -7.3722023227857039e-05 -0.001 -0.00030832359443455637 -7.1213907426343373e-05 -0.001 -0.0003095069029441586 -6.8692610686177597e-05 -0.001 -0.0003117585515456538 -6.3625531153923106e-05 -0.001 -0.00031282689168078107 -6.1079748257225619e-05 -0.001 -0.0003138373309619824 -5.8522660193633282e-05 -0.001 -0.00031574170296329963 -5.3387774854479098e-05 -0.001 -0.00031663563572871257 -5.0809977474803539e-05 -0.001 -0.00031747096289997637 -4.8222775784786732e-05 -0.001 -0.0003190238312148639 -4.3031486009353024e-05 -0.001 -0.00031974137240750442 -4.0427397820227638e-05 -0.001 -0.00032039973334659002 -3.7815827030673433e-05 -0.001 -0.00032159765112918271 -3.2579659247806818e-05 -0.001 -0.00032213720802265125 -2.9955062150431977e-05 -0.001 -0.00032261714126911856 -2.7324920744564164e-05 -0.001 -0.00032345744906993226 -2.2055500550245856e-05 -0.001 -0.00032381782366444715 -1.9416221656303303e-05 -0.001 -0.00032411826334930474 -1.6773349030510088e-05 -0.001 -0.00032467923280546574 -1.0600545790614869e-05 -0.001 -0.00032489307752147137 -7.0685813004146556e-06 -0.001 -0.00032499999948948057 -3.5342906450890334e-06 -0.001 -0.00032499999999999999 0 + 0 5 0.029999992061453328 3 0.059999980056428183 3 0.089999973022630908 3 0.11999997309561726 3 0.14999997879211419 3 0.17999998733113254 3 0.20999999602195013 3 0.24000000295730131 3 0.27000000722006656 3 0.30000000877996447 3 0.33000000822413011 3 0.36000000643325736 3 0.39000000428395332 3 0.42000000242910734 3 0.45000000118209887 3 0.48000000050825553 3 0.51000000010880409 3 0.53999999956883349 3 0.56999999853225713 3 0.59999999686319017 3 0.62999999475491886 3 0.65999999275462273 3 0.6899999916839118 3 0.71999999245212487 3 0.74999999578029763 3 0.78000000187857121 3 0.81000001014778389 3 0.84000001900637578 3 0.87000002597576176 3 0.90000002818977121 3 0.9300000235259569 3 0.96000001258743484 3 1 5 +7 0 0 4 101 34 -0.001 0.00032500000000000009 -2.2204460492503131e-19 -0.001 0.00032499999961711046 -2.6507181044125308e-06 -0.001 0.00032493985618011525 -5.3014361405622215e-06 -0.001 0.00032481956822323909 -7.9511729765424649e-06 -0.001 0.00032445884026840945 -1.3246723179074494e-05 -0.001 0.00032421839995924474 -1.5892536727345917e-05 -0.001 0.00032391795045186213 -1.8535408721204848e-05 -0.001 0.00032319730008854522 -2.3813316218268432e-05 -0.001 0.0003227770992000998 -2.6448351827630169e-05 -0.001 0.00032229715619577694 -2.9078492168437944e-05 -0.001 0.00032121818529840749 -3.4327039966029372e-05 -0.001 0.00032061915735695756 -3.6945447527233946e-05 -0.001 0.00031996078672971549 -3.9557016954693828e-05 -0.001 0.00031852589103126993 -4.4764552213509837e-05 -0.001 0.00031774936591011361 -4.7360518148587107e-05 -0.001 0.00031691402912315745 -4.9947718236491469e-05 -0.001 0.00031512639370296383 -5.5102678577884755e-05 -0.001 0.00031417409502321691 -5.7670438935307326e-05 -0.001 0.00031316364620897341 -6.022752516547114e-05 -0.001 0.00031102723898759731 -6.5318464678213226e-05 -0.001 0.00030990128053688638 -6.7852318065264597e-05 -0.001 0.00030871796259721685 -7.0373612724568767e-05 -0.001 0.00030623752589816736 -7.5389227611094122e-05 -0.001 0.00030494040709500323 -7.7883547942991015e-05 -0.001 0.00030358684685203609 -8.0363452823570608e-05 -0.001 0.0003007678870886731 -8.5292606645320345e-05 -0.001 0.00029930248752051646 -8.7741855690530056e-05 -0.001 0.00029778168994835951 -9.0174864573311361e-05 -0.001 0.00029463046549441042 -9.5006613054876007e-05 -0.001 0.00029300003855769964 -9.7405352755991389e-05 -0.001 0.00029131538012506288 -9.9786063657926528e-05 -0.001 0.00028783888742716225 -0.0001045096790097666 -0.001 0.00028604705309782241 -0.00010685258355927252 -0.001 0.00028420227425134516 -0.00010917571072470978 -0.001 0.00028040823224198595 -0.00011378070544430764 -0.001 0.0002784589690051844 -0.00011606257309456658 -0.001 0.00027645816582300229 -0.00011832295871125231 -0.001 0.00027235499869226033 -0.0001227991088226028 -0.001 0.00027025263466036177 -0.00012501487340946726 -0.001 0.00026810024970522916 -0.00012720749902965267 -0.001 0.00026369706808955019 -0.00013154486672106635 -0.001 0.00026144627133741361 -0.00013368960888057634 -0.001 0.0002591470837384715 -0.00013580960652769404 -0.001 0.00025445366438476001 -0.00013999856214791484 -0.001 0.00025205943253161481 -0.00014206752020565951 -0.001 0.00024961854732373848 -0.00014411018314694081 -0.001 0.00024464531128688948 -0.0001481414265196227 -0.001 0.00024211296035412899 -0.00015013000703243963 -0.001 0.00023953579710363248 -0.00015209080019777321 -0.001 0.00023429378653557943 -0.00015595538121436316 -0.001 0.00023162893910981742 -0.00015785916914417509 -0.001 0.00022892121985521852 -0.00015973373917139188 -0.001 0.00022342207344348453 -0.0001634230776224691 -0.001 0.00022063064617418892 -0.00016523784612217074 -0.001 0.00021779838271070739 -0.00016702203100881773 -0.001 0.00021205430982436203 -0.00017052793561393042 -0.001 0.0002091425002853219 -0.00017224965540532799 -0.001 0.0002061919808217808 -0.00017393949374689798 -0.001 0.00020021573442264274 -0.00017725418034290585 -0.001 0.00019719000736640602 -0.00017887902866679529 -0.001 0.00019412778258327945 -0.00018047076846126387 -0.001 0.00018793263096014058 -0.00018358687730916145 -0.001 0.00018479970399442247 -0.00018511124642767962 -0.001 0.00018163257253186449 -0.00018660135342612628 -0.001 0.00017523226991547337 -0.0001895119655962736 -0.001 0.00017199909863037176 -0.00019093247082768028 -0.001 0.00016873409203520506 -0.00019231763641070398 -0.001 0.00016214284815171154 -0.00019501628920634207 -0.001 0.00015881661072641708 -0.00019632977647236928 -0.001 0.00015546097788719549 -0.00019760692503198939 -0.001 0.00014869342650776518 -0.00020008762641085488 -0.001 0.0001452815078252766 -0.00020129117927672181 -0.001 0.0001418426989247209 -0.0002024574750834458 -0.001 0.00013491386546903085 -0.00020471471703724809 -0.001 0.00013142384076724912 -0.00020580566322435167 -0.001 0.00012790949078151682 -0.00020685851675914346 -0.001 0.00012083475903288333 -0.00020888728761060761 -0.001 0.00011727437712034795 -0.0002098632049617878 -0.001 0.00011369228889474825 -0.00021080027869273079 -0.001 0.00010648736688468164 -0.00021259607426986381 -0.001 0.00010286453294916365 -0.00021345479614700059 -0.001 9.9222659880033543e-05 -0.00021427400973057144 -0.001 9.190354500011034e-05 -0.00021583284337776043 -0.001 8.8226303038215444e-05 -0.0002165724634713101 -0.001 8.4532731390803413e-05 -0.00021727199835829569 -0.001 7.7115674789803186e-05 -0.00021859040974382305 -0.001 7.3392189685827177e-05 -0.00021920928627372404 -0.001 6.9655120578025805e-05 -0.00021978758969998379 -0.001 6.215659090239889e-05 -0.00022086265237952153 -0.001 5.8395130184774045e-05 -0.00022135941166673379 -0.001 5.4622861266528155e-05 -0.00022181520000917821 -0.001 4.7059507802387655e-05 -0.00022264452770481935 -0.001 4.3268423106180401e-05 -0.00022301806709260508 -0.001 3.9469329964370251e-05 -0.00022335032857092885 -0.001 3.1857945239245569e-05 -0.00022393208012533829 -0.001 2.8045653503547595e-05 -0.00022418157022923324 -0.001 2.4228170821849137e-05 -0.00022438956693413437 -0.001 1.5311899475333181e-05 -0.00022477793040378424 -0.001 1.021017298948701e-05 -0.00022492597674563452 -0.001 5.1050864873514181e-06 -0.00022499999964656348 -0.001 0 -0.00022499999999999986 + 0 5 0.029999992061393161 3 0.059999980056316668 3 0.089999973022487398 3 0.11999997309546409 3 0.14999997879195015 3 0.17999998733095773 3 0.20999999602176875 3 0.24000000295710966 3 0.27000000721986334 3 0.30000000877975042 3 0.33000000822391062 3 0.36000000643303121 3 0.39000000428371534 3 0.42000000242885477 3 0.45000000118183398 3 0.4800000005079898 3 0.5100000001085383 3 0.53999999956856215 3 0.56999999853197181 3 0.59999999686288419 3 0.629999994754596 3 0.65999999275427801 3 0.68999999168353832 3 0.71999999245172552 3 0.74999999577989518 3 0.78000000187819474 3 0.81000001014744971 3 0.84000001900609522 3 0.87000002597553483 3 0.90000002818959757 3 0.93000002352584432 3 0.96000001258737511 3 1 5 +1 -0.001 0.001 0.001 0 -1 0 +7 0 0 1 2 2 -0.002 0.00030000000000000003 -5.5511151231257828e-20 0.002 0.00040000000000000002 -1.1102230246251566e-19 + 0 2 1 2 +7 0 0 1 2 2 -0.0019999999999999987 -9.4368957093135556e-20 -0.00019999999999999985 0.0019999999999999987 -1.4432899320126445e-19 -0.00029999999999999981 + 0 2 1 2 +7 0 0 1 2 2 -0.002 -0.00029999999999999997 5.5511151231257828e-20 0.002 -0.00039999999999999996 0 + 0 2 1 2 +7 0 0 1 2 2 -0.002 2.7755575615628914e-20 0.00019999999999999998 0.002 5.5511151231257828e-20 0.00029999999999999997 + 0 2 1 2 +1 -0.0011999999999999999 -0.00020000000000000001 -0.0011000000000000001 1 0 0 +1 -0.001 -0.00020000000000000001 -0.0011000000000000001 0 1 0 +1 -0.001 0.00020000000000000001 -0.0011000000000000001 -1 0 0 +1 -0.0011999999999999999 0.00020000000000000001 -0.0011000000000000001 0 -1 0 +1 -0.0011999999999999999 -0.00020000000000000001 0.001 1 0 0 +1 -0.001 -0.00020000000000000001 0.001 0 1 0 +1 -0.001 0.00020000000000000001 0.001 -1 0 0 +1 -0.0011999999999999999 0.00020000000000000001 0.001 0 -1 0 +1 -0.001 -0.00020000000000000001 -0.0011000000000000001 0 0 1 +1 -0.0011999999999999999 -0.00020000000000000001 -0.0011000000000000001 0 0 1 +1 -0.001 0.00020000000000000001 -0.0011000000000000001 0 0 1 +1 -0.0011999999999999999 0.00020000000000000001 -0.0011000000000000001 0 0 1 +Polygon3D 0 +PolygonOnTriangulations 0 +Surfaces 16 +1 -0.001 -0.001 -0.001 0 0 -1 -1 0 -0 0 1 0 +1 -0.001 -0.001 -0.001 0 1 0 0 -0 1 1 0 -0 +1 0.001 -0.001 -0.001 -1 0 0 0 0 -1 -0 -1 -0 +1 0.001 0.001 -0.001 0 -1 0 0 -0 -1 1 0 0 +1 -0.001 0.001 -0.001 1 0 0 -0 0 1 0 -1 0 +1 -0.001 -0.001 0.001 0 0 -1 -1 0 -0 0 1 0 +9 0 0 0 0 7 1 8 2 2 2 -0.0019999999999999987 -9.4368957093135556e-20 -0.00019999999999999985 0.0019999999999999987 -1.4432899320126445e-19 -0.00029999999999999981 +-0.0020000000000000178 6.7319842576924678e-05 -0.00020000000000000207 0.0020000000000000178 8.9759790102566793e-05 -0.00030000000000000252 +-0.0019999999999999575 0.00013463935949503366 -0.00018825022268966724 0.0019999999999999575 0.0001795191459933763 -0.00028237533403450261 +-0.0020000000000000582 0.00019642408224688801 -0.00016475254444044804 0.0020000000000000582 0.00026189877632918675 -0.00024712881666066839 +-0.0019999999999999528 0.00024712881666066064 -0.00013094938816458467 0.0019999999999999528 0.00032950508888087939 -0.00019642408224688151 +-0.002000000000000023 0.00028237533403450792 -8.975957299669361e-05 0.002000000000000023 0.0003765004453793438 -0.00013463935949503718 +-0.0019999999999999948 0.00030000000000000041 -4.4879895051281729e-05 0.0019999999999999948 0.00040000000000000094 -6.731984257692381e-05 +-0.002 0.00030000000000000003 -5.5511151231257828e-20 0.002 0.00040000000000000002 -1.1102230246251566e-19 + +4.7123889803846897 8 +6.2831853071795862 8 + +0 2 +1 2 + +9 0 0 0 0 7 1 8 2 2 2 -0.002 -0.00029999999999999992 5.5511151231257828e-20 0.002 -0.00040000000000000002 5.5511151231257828e-20 +-0.0019999999999999879 -0.00029999999999999846 -4.4879895051281838e-05 0.0019999999999999879 -0.00039999999999999845 -6.7319842576923119e-05 +-0.0020000000000000425 -0.00028237533403451426 -8.9759572996692309e-05 0.0020000000000000425 -0.00037650044537935074 -0.0001346393594950377 +-0.0019999999999999254 -0.00024712881666065083 -0.00013094938816458738 0.0019999999999999254 -0.00032950508888087039 -0.0001964240822468821 +-0.0020000000000000733 -0.00019642408224689658 -0.00016475254444044449 0.0020000000000000733 -0.00026189877632919255 -0.00024712881666066585 +-0.0019999999999999558 -0.00013463935949502946 -0.00018825022268966957 0.0019999999999999558 -0.00017951914599337456 -0.00028237533403450499 +-0.0020000000000000148 -6.731984257692583e-05 -0.00020000000000000107 0.0020000000000000148 -8.9759790102567132e-05 -0.00030000000000000122 +-0.002 -7.1476770036893263e-20 -0.00020000000000000001 0.002 -9.5302360049193518e-20 -0.00030000000000000008 + +3.1415926535897931 8 +4.7123889803846897 8 + +0 2 +1 2 + +9 0 0 0 0 7 1 8 2 2 2 -0.002 0 0.00020000000000000004 0.002 5.5511151231257828e-20 0.00029999999999999992 +-0.0020000000000000074 -6.7319842576925355e-05 0.00020000000000000058 0.0020000000000000074 -8.9759790102565993e-05 0.00030000000000000079 +-0.0019999999999999649 -0.00013463935949502948 0.00018825022268967006 0.0019999999999999649 -0.00017951914599337649 0.00028237533403450521 +-0.0020000000000000664 -0.00019642408224689636 0.00016475254444044474 0.0020000000000000664 -0.00026189877632918805 0.0002471288166606665 +-0.0019999999999999328 -0.00024712881666065208 0.00013094938816458727 0.0019999999999999328 -0.00032950508888087749 0.00019642408224688137 +-0.0020000000000000395 -0.00028237533403451307 8.9759572996692404e-05 0.0020000000000000395 -0.0003765004453793451 0.00013463935949503829 +-0.0019999999999999879 -0.00029999999999999867 4.4879895051281885e-05 0.0019999999999999879 -0.0004000000000000004 6.7319842576922902e-05 +-0.002 -0.00029999999999999997 5.5511151231257828e-20 0.002 -0.00039999999999999996 0 + +1.5707963267948966 8 +3.1415926535897931 8 + +0 2 +1 2 + +9 0 0 0 0 7 1 8 2 2 2 -0.002 0.00029999999999999997 -2.7755575615628914e-20 0.002 0.00040000000000000013 0 +-0.0020000000000000044 0.00029999999999999965 4.4879895051283125e-05 0.0020000000000000044 0.00040000000000000029 6.7319842576924583e-05 +-0.0019999999999999758 0.00028237533403450873 8.9759572996687837e-05 0.0019999999999999758 0.00037650044537934163 0.0001346393594950319 +-0.0020000000000000456 0.00024712881666066091 0.00013094938816459508 0.0020000000000000456 0.00032950508888088693 0.00019642408224689289 +-0.0019999999999999562 0.00019642408224688712 0.00016475254444043734 0.0019999999999999562 0.00026189877632917758 0.00024712881666065522 +-0.0020000000000000248 0.00013463935949503463 0.0001882502226896735 0.0020000000000000248 0.00017951914599338272 0.00028237533403451112 +-0.0019999999999999931 6.7319842576924068e-05 0.0001999999999999999 0.0019999999999999931 8.9759790102564367e-05 0.00029999999999999949 +-0.002 2.7755575615628914e-20 0.00019999999999999998 0.002 5.5511151231257828e-20 0.00029999999999999997 + +0 8 +1.5707963267948966 8 + +0 2 +1 2 + +1 -0.0011999999999999999 -0.00020000000000000001 -0.0011000000000000001 0 0 -1 -1 0 -0 0 1 0 +1 -0.0011999999999999999 -0.00020000000000000001 -0.0011000000000000001 0 1 0 0 -0 1 1 0 -0 +1 -0.001 -0.00020000000000000001 -0.0011000000000000001 -1 0 0 0 0 -1 -0 -1 -0 +1 -0.001 0.00020000000000000001 -0.0011000000000000001 0 -1 0 0 -0 -1 1 0 0 +1 -0.0011999999999999999 0.00020000000000000001 -0.0011000000000000001 1 0 0 -0 0 1 0 -1 0 +1 -0.0011999999999999999 -0.00020000000000000001 0.001 0 0 -1 -1 0 -0 0 1 0 +Triangulations 0 + +TShapes 101 +Ve +1e-07 +-0.001 -0.001 -0.001 +0 0 + +0101101 +* +Ve +1e-07 +0.001 -0.001 -0.001 +0 0 + +0101101 +* +Ed + 1e-10 1 1 0 +1 1 0 0 0.002 +2 1 1 0 0 0.002 +2 2 2 0 0 0.002 +0 + +0101000 ++101 0 -100 0 * +Ve +1e-07 +0.001 0.001 -0.001 +0 0 + +0101101 +* +Ed + 1e-10 1 1 0 +1 2 0 0 0.002 +2 3 1 0 0 0.002 +2 4 3 0 0 0.002 +0 + +0101000 ++100 0 -98 0 * +Ve +1e-07 +-0.001 0.001 -0.001 +0 0 + +0101101 +* +Ed + 1e-10 1 1 0 +1 3 0 0 0.002 +2 5 1 0 0 0.002 +2 6 4 0 0 0.002 +0 + +0101000 ++98 0 -96 0 * +Ed + 1e-10 1 1 0 +1 4 0 0 0.002 +2 7 1 0 0 0.002 +2 8 5 0 0 0.002 +0 + +0101000 ++96 0 -101 0 * +Wi + +0101100 ++99 0 +97 0 +95 0 +94 0 * +Fa +0 1e-10 1 0 + +0111000 +-93 0 * +Ve +1e-07 +0.001 -0.001 0.001 +0 0 + +0101101 +* +Ed + 1e-10 1 1 0 +1 5 0 0 0.002 +2 9 2 0 0 0.002 +2 10 3 0 0 0.002 +0 + +0101000 ++100 0 -91 0 * +Ve +1e-07 +-0.001 -0.001 0.001 +0 0 + +0101101 +* +Ed + 1e-10 1 1 0 +1 6 0 0 0.002 +2 11 2 0 0 0.002 +2 12 6 0 0 0.002 +0 + +0101000 ++89 0 -91 0 * +Ed + 1e-10 1 1 0 +1 7 0 0 0.002 +2 13 2 0 0 0.002 +2 14 5 0 0 0.002 +0 + +0101000 ++101 0 -89 0 * +Wi + +0101100 ++99 0 +90 0 -88 0 -87 0 * +Fa +0 1e-10 2 0 + +0111000 +-86 0 * +Ve +1e-07 +0.001 0.000375 -9.71445146547012e-20 +0 0 + +0101101 +* +Ve +1e-07 +0.001 -1.31838984174232e-19 -0.000275 +0 0 + +0101101 +* +Ed + 5e-09 1 1 0 +1 8 0 0 1 +2 15 3 0 0 1 +2 16 7 0 0 1 +0 + +0101000 ++84 0 -83 0 * +Ve +1e-07 +0.001 -0.000375 1.38777878078145e-20 +0 0 + +0101101 +* +Ed + 5e-09 1 1 0 +1 9 0 0 1 +2 17 3 0 0 1 +2 18 8 0 0 1 +0 + +0101000 ++83 0 -81 0 * +Ve +1e-07 +0.001 4.85722573273506e-20 0.000275 +0 0 + +0101101 +* +Ed + 5e-09 1 1 0 +1 10 0 0 1 +2 19 3 0 0 1 +2 20 9 0 0 1 +0 + +0101000 ++81 0 -79 0 * +Ed + 5e-09 1 1 0 +1 11 0 0 1 +2 21 3 0 0 1 +2 22 10 0 0 1 +0 + +0101000 ++79 0 -84 0 * +Wi + +0101000 +-82 0 -80 0 -78 0 -77 0 * +Ve +1e-07 +0.001 0.001 0.001 +0 0 + +0101101 +* +Ed + 1e-10 1 1 0 +1 12 0 0 0.002 +2 23 3 0 0 0.002 +2 24 4 0 0 0.002 +0 + +0101000 ++98 0 -75 0 * +Ed + 1e-10 1 1 0 +1 13 0 0 0.002 +2 25 3 0 0 0.002 +2 26 6 0 0 0.002 +0 + +0101000 ++91 0 -75 0 * +Wi + +0101000 +-97 0 +90 0 -74 0 +73 0 * +Fa +0 1e-10 3 0 + +0101000 ++76 0 +72 0 * +Ve +1e-07 +-0.001 0.001 0.001 +0 0 + +0101101 +* +Ed + 1e-10 1 1 0 +1 14 0 0 0.002 +2 27 4 0 0 0.002 +2 28 5 0 0 0.002 +0 + +0101000 ++96 0 -70 0 * +Ed + 1e-10 1 1 0 +1 15 0 0 0.002 +2 29 4 0 0 0.002 +2 30 6 0 0 0.002 +0 + +0101000 ++75 0 -70 0 * +Wi + +0101100 ++95 0 +69 0 -68 0 -74 0 * +Fa +0 1e-10 4 0 + +0101000 +-67 0 * +Ve +1e-07 +-0.001 3.46944695195361e-20 0.000225 +0 0 + +0101101 +* +Ve +1e-07 +-0.001 0.000325 -6.93889390390723e-20 +0 0 + +0101101 +* +Ed + 5e-09 1 1 0 +1 16 0 0 1 +2 31 5 0 0 1 +2 32 10 0 0 1 +0 + +0101000 ++65 0 -64 0 * +Ve +1e-07 +-0.001 -0.000325 4.16333634234434e-20 +0 0 + +0101101 +* +Ed + 5e-09 1 1 0 +1 17 0 0 1 +2 33 5 0 0 1 +2 34 9 0 0 1 +0 + +0101000 ++62 0 -65 0 * +Ve +1e-07 +-0.001 -1.06858966120168e-19 -0.000225 +0 0 + +0101101 +* +Ed + 5e-09 1 1 0 +1 18 0 0 1 +2 35 5 0 0 1 +2 36 8 0 0 1 +0 + +0101000 ++60 0 -62 0 * +Ed + 5e-09 1 1 0 +1 19 0 0 1 +2 37 5 0 0 1 +2 38 7 0 0 1 +0 + +0101000 ++64 0 -60 0 * +Wi + +0101000 ++63 0 +61 0 +59 0 +58 0 * +Ed + 1e-10 1 1 0 +1 20 0 0 0.002 +2 39 5 0 0 0.002 +2 40 6 0 0 0.002 +0 + +0101000 ++70 0 -89 0 * +Wi + +0101000 +-94 0 +69 0 -87 0 +56 0 * +Fa +0 1e-10 5 0 + +0101000 ++57 0 +55 0 * +Wi + +0101100 ++88 0 +73 0 +68 0 +56 0 * +Fa +0 1e-10 6 0 + +0111000 +-53 0 * +Ed + 5e-09 1 1 0 +1 21 0 0.25 0.75 +2 41 7 0 0.25 0.75 +2 42 10 0 0.25 0.75 +4 G1 7 0 10 0 +0 + +0101000 ++64 0 -84 0 * +Ed + 5e-09 1 1 0 +1 22 0 0.25 0.75 +2 43 7 0 0.25 0.75 +2 44 8 0 0.25 0.75 +4 G1 7 0 8 0 +0 + +0101000 ++60 0 -83 0 * +Wi + +0101000 ++51 0 -58 0 -50 0 +82 0 * +Fa +0 1e-10 7 0 + +0101000 ++49 0 * +Ed + 5e-09 1 1 0 +1 23 0 0.25 0.75 +2 45 8 0 0.25 0.75 +2 46 9 0 0.25 0.75 +4 G1 8 0 9 0 +0 + +0101000 ++62 0 -81 0 * +Wi + +0101000 ++50 0 -59 0 -47 0 +80 0 * +Fa +0 1e-10 8 0 + +0101000 ++46 0 * +Ed + 5e-09 1 1 0 +1 24 0 0.25 0.75 +2 47 9 0 0.25 0.75 +2 48 10 0 0.25 0.75 +4 G1 9 0 10 0 +0 + +0101000 ++65 0 -79 0 * +Wi + +0101000 ++47 0 -61 0 -44 0 +78 0 * +Fa +0 1e-10 9 0 + +0101000 ++43 0 * +Wi + +0101000 ++44 0 -63 0 -51 0 +77 0 * +Fa +0 1e-10 10 0 + +0101000 ++41 0 * +Sh + +0101000 ++92 0 -85 0 -71 0 -66 0 -54 0 -52 0 -48 0 -45 0 -42 0 -40 0 +* +So + +0100000 ++39 0 * +Co + +0100000 ++38 0 * +Ve +1e-07 +-0.0012 -0.0002 -0.0011 +0 0 + +0101101 +* +Ve +1e-07 +-0.001 -0.0002 -0.0011 +0 0 + +0101101 +* +Ed + 1e-10 1 1 0 +1 25 0 0 0.0002 +2 49 11 0 0 0.0002 +2 50 12 0 0 0.0002 +0 + +0101000 ++36 0 -35 0 * +Ve +1e-07 +-0.001 0.0002 -0.0011 +0 0 + +0101101 +* +Ed + 1e-10 1 1 0 +1 26 0 0 0.0004 +2 51 11 0 0 0.0004 +2 52 13 0 0 0.0004 +0 + +0101000 ++35 0 -33 0 * +Ve +1e-07 +-0.0012 0.0002 -0.0011 +0 0 + +0101101 +* +Ed + 1e-10 1 1 0 +1 27 0 0 0.0002 +2 53 11 0 0 0.0002 +2 54 14 0 0 0.0002 +0 + +0101000 ++33 0 -31 0 * +Ed + 1e-10 1 1 0 +1 28 0 0 0.0004 +2 55 11 0 0 0.0004 +2 56 15 0 0 0.0004 +0 + +0101000 ++31 0 -36 0 * +Wi + +0101100 ++34 0 +32 0 +30 0 +29 0 * +Fa +0 1e-10 11 0 + +0111000 +-28 0 * +Ve +1e-07 +-0.0012 -0.0002 0.001 +0 0 + +0101101 +* +Ve +1e-07 +-0.001 -0.0002 0.001 +0 0 + +0101101 +* +Ed + 1e-10 1 1 0 +1 29 0 0 0.0002 +2 57 16 0 0 0.0002 +2 58 12 0 0 0.0002 +0 + +0101000 ++26 0 -25 0 * +Ve +1e-07 +-0.001 0.0002 0.001 +0 0 + +0101101 +* +Ed + 1e-10 1 1 0 +1 30 0 0 0.0004 +2 59 16 0 0 0.0004 +2 60 13 0 0 0.0004 +0 + +0101000 ++25 0 -23 0 * +Ve +1e-07 +-0.0012 0.0002 0.001 +0 0 + +0101101 +* +Ed + 1e-10 1 1 0 +1 31 0 0 0.0002 +2 61 16 0 0 0.0002 +2 62 14 0 0 0.0002 +0 + +0101000 ++23 0 -21 0 * +Ed + 1e-10 1 1 0 +1 32 0 0 0.0004 +2 63 16 0 0 0.0004 +2 64 15 0 0 0.0004 +0 + +0101000 ++21 0 -26 0 * +Wi + +0101100 ++24 0 +22 0 +20 0 +19 0 * +Fa +0 1e-10 16 0 + +0111000 +-18 0 * +Ed + 1e-10 1 1 0 +1 33 0 0 0.0021 +2 65 12 0 0 0.0021 +2 66 13 0 0 0.0021 +0 + +0101000 ++35 0 -25 0 * +Ed + 1e-10 1 1 0 +1 34 0 0 0.0021 +2 67 12 0 0 0.0021 +2 68 15 0 0 0.0021 +0 + +0101000 ++36 0 -26 0 * +Wi + +0101100 ++34 0 +16 0 -24 0 -15 0 * +Fa +0 1e-10 12 0 + +0101000 +-14 0 * +Ed + 1e-10 1 1 0 +1 35 0 0 0.0021 +2 69 13 0 0 0.0021 +2 70 14 0 0 0.0021 +0 + +0101000 ++33 0 -23 0 * +Wi + +0101100 ++32 0 +12 0 -22 0 -16 0 * +Fa +0 1e-10 13 0 + +0101000 +-11 0 * +Ed + 1e-10 1 1 0 +1 36 0 0 0.0021 +2 71 14 0 0 0.0021 +2 72 15 0 0 0.0021 +0 + +0101000 ++31 0 -21 0 * +Wi + +0101100 ++30 0 +9 0 -20 0 -12 0 * +Fa +0 1e-10 14 0 + +0101000 +-8 0 * +Wi + +0101100 ++29 0 +15 0 -19 0 -9 0 * +Fa +0 1e-10 15 0 + +0101000 +-6 0 * +Sh + +0101100 ++27 0 -17 0 -13 0 -10 0 -7 0 -5 0 * +So + +0100000 ++4 0 * +Co + +0100000 ++37 0 +3 0 * +Co + +1100000 ++2 0 * + ++1 0 \ No newline at end of file diff --git a/utils/converters/brl-cad/tprintf.h b/utils/converters/brl-cad/tprintf.h new file mode 100644 index 0000000000000000000000000000000000000000..bacecff9a52f0e0966fa2bf88c1b5840967f4713 --- /dev/null +++ b/utils/converters/brl-cad/tprintf.h @@ -0,0 +1,30 @@ +#ifndef TPRINTF_H_INCLUDED +#define TPRINTF_H_INCLUDED + +#include <stdarg.h> +#include <stdio.h> + +class tprintf { + char *buffer; +public: + tprintf(const char *fmt, ...); + ~tprintf() { delete buffer; } + operator const char* () const { return buffer; } +}; + +inline tprintf::tprintf(const char *fmt, ...) +{ + va_list ap; + int size=100; + for(;;) { + buffer=new char[size]; + va_start(ap,fmt); + int new_size=vsnprintf(buffer,size,fmt,ap); + va_end(ap); + if(new_size<size) + break; + size=new_size+1; + delete buffer; + } +} +#endif // TPRINTF_H_INCLUDED diff --git a/utils/converters/gid/gmsh2_2gid.c b/utils/converters/gid/gmsh2_2gid.c new file mode 100644 index 0000000000000000000000000000000000000000..9d9bc8ede1b4e98a49846eba95d457b666f76e9e --- /dev/null +++ b/utils/converters/gid/gmsh2_2gid.c @@ -0,0 +1,121 @@ +//////////////////////////////////////////////////////////////////////////////////////////////////// +// gmsh2_2gid.c routine to convert gmsh format 2 mesh files into gid mesh file for EBEM programme // +// writes out all the nodes but only writes out the triangular 3 node elements. // +// mark smith 2008 piedycat@tiscali.co.uk // +//////////////////////////////////////////////////////////////////////////////////////////////////// + + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#define MAXLINE 128 +#define MaxNodes 32 // maximum number of nodes per element +#define version "gmsh2_2gid.exe ver 1.00 Oct 2008 Mark Smith\n" +#define debug 0 + +void jumpline (FILE *stream); //skip a line + +FILE *fpGid,*fpGmsh; + +int main(int argc, char *argv[]) +{ + char buffer[MAXLINE],temp[64]; + long ELEMENTS,NODES,i,N,k=1; // number of elements and nodes etc + long n[MaxNodes]; + int elem_type,n_tags,n_nodes=0,tag_1,tag_2,tag_3,j; + double x,y,z; //nodal coordinates + printf(version); + if(argc<2) + { + printf("Gmesh format 2 .msh file to Gid mesh .dat file conversion routine\n"); + printf("writes out all the nodes but only writes out the triangular 3 node elements.\n"); + printf("Usage: gmsh2_2gid.exe in_filename out_filename .\n"); + exit(0); + } + if((fpGmsh=fopen(argv[1],"r"))==NULL) + { + printf("can't open input gmsh mesh .msh file\n"); + exit(1); + } + if((fpGid=fopen(argv[2],"w"))==NULL) + { + printf("can't open output Gid mesh .dat file\n"); + exit(1); + } + strcpy(temp,"$MeshFormat"); + fgets(buffer, MAXLINE, fpGmsh); + if(!strstr(buffer,temp)) + { + printf("input file not correct type!\n"); + exit(0); + } + jumpline(fpGmsh); //jump over 2 0 8 + jumpline(fpGmsh); //jump over $EndMeshFormat + jumpline(fpGmsh); //jump over $Nodes + fscanf(fpGmsh,"%ld ",&NODES); //read in the number of nodes + printf("number of NODES=%ld\n",NODES); + fprintf(fpGid,"MESH dimension 3 ElemType Triangle Nnode 3\nCoordinates\n"); // write out gid header + for(i=0;i<NODES;i++) + { + fscanf(fpGmsh,"%ld %lg %lg %lg ",&N,&x,&y,&z); + fprintf(fpGid,"%6ld %15.6e %15.6e %15.6e\n",N,x,y,z); + } + fprintf(fpGid,"end coordinates\n\nElements\n"); + jumpline(fpGmsh); //jump over $EndNodes + jumpline(fpGmsh); //jump over $Elements + fscanf(fpGmsh,"%ld ",&ELEMENTS); //read in the number of elements + printf("number of ELEMENTS=%ld\n",ELEMENTS); + + for(i=0;i<ELEMENTS;i++) + { + //elm-number elm-type number-of-tags < tag > ... node-number-list + fscanf(fpGmsh,"%ld %d %d ",&N,&elem_type,&n_tags); + switch(elem_type) + { + case 1:n_nodes=2;break; //2-node line. + case 2:n_nodes=3;break; //3-node triangle. + case 3:n_nodes=4;break; //4-node quadrangle. + case 4:n_nodes=4;break; //4-node tetrahedron. + case 5:n_nodes=8;break; //8-node hexahedron. + case 6:n_nodes=6;break; //6-node prism. + case 7:n_nodes=5;break; //5-node pyramid. + case 8:n_nodes=3;break; //3-node second order line (2 nodes associated with the vertices and 1 with the edge). + case 9:n_nodes=6;break; //6-node second order triangle (3 nodes associated with the vertices and 3 with the edges). + case 10:n_nodes=9;break; //9-node second order quadrangle (4 nodes associated with the vertices, 4 with the edges and 1 with the face). + case 11:n_nodes=10;break; //10-node second order tetrahedron (4 nodes associated with the vertices and 6 with the edges). + case 12:n_nodes=27;break; //27-node second order hexahedron (8 nodes associated with the vertices, 12 with the edges, 6 with the faces and 1 with the volume). + case 13:n_nodes=18;break; //18-node second order prism (6 nodes associated with the vertices, 9 with the edges and 3 with the quadrangular faces). + case 14:n_nodes=14;break; //14-node second order pyramid (5 nodes associated with the vertices, 8 with the edges and 1 with the quadrangular face). + case 15:n_nodes=1;break; //1-node point. + case 16:n_nodes=8;break; //8-node second order quadrangle (4 nodes associated with the vertices and 4 with the edges). + case 17:n_nodes=20;break; //20-node second order hexahedron (8 nodes associated with the vertices and 12 with the edges). + case 18:n_nodes=15;break; //15-node second order prism (6 nodes associated with the vertices and 9 with the edges). + } + fscanf(fpGmsh,"%d %d %d ",&tag_1,&tag_2,&tag_3); + // tag_1= the number of the physical entity to which the element belongs + // tag_2= the number of the elementary geometrical entity to which the element belongs + // tag_3= the number of a mesh partition to which the element belongs + for(j=0;j<n_nodes;j++) + { + fscanf(fpGmsh,"%ld ",&n[j]); + } + if(n_nodes==3) //only write out the 3 node triangular elements + { + fprintf(fpGid," %6ld %6ld %6ld %6ld %4d\n",k,n[0],n[1],n[2],tag_1); + k++; //keep a count of the elements written & renumber starting @ 1 + } + if(debug)printf("%ld %d %d %d %d %d\n",N,elem_type,n_nodes,tag_1,tag_2,tag_3); + } + fprintf(fpGid,"end elements\n"); + fclose(fpGmsh); // close all the files + fclose(fpGid); + printf("Finished!!"); + return 0; +} + +void jumpline (FILE *stream) //skip a line +{ + char buffer[MAXLINE]; + fgets(buffer, MAXLINE, stream); + if(debug)printf("buffer=%s\n",buffer); +} diff --git a/utils/converters/stl_to_cartesian/LICENCE.txt b/utils/converters/stl_to_cartesian/LICENCE.txt new file mode 100644 index 0000000000000000000000000000000000000000..3e0d561d9a1de547caf31ce8dbbbb14a63f08166 --- /dev/null +++ b/utils/converters/stl_to_cartesian/LICENCE.txt @@ -0,0 +1,3 @@ +Code posted by "Billy" on: + +http://www.cfd-online.com/Forums/openfoam-meshing-opensource/61973-generating-unstructured-grids-stl-files.html diff --git a/utils/converters/stl_to_cartesian/README.txt b/utils/converters/stl_to_cartesian/README.txt new file mode 100644 index 0000000000000000000000000000000000000000..4da34aa58082091277cec080b1289d268ec0c2fb --- /dev/null +++ b/utils/converters/stl_to_cartesian/README.txt @@ -0,0 +1,10 @@ + +Compile sources using the following command: + +gcc stl.c segtri.c mesh.c main.c -o stlToGmsh + +To run application + +./stlToGmsh <file.stl> <nx> <ny> <nz> + + diff --git a/utils/converters/stl_to_cartesian/globals.h b/utils/converters/stl_to_cartesian/globals.h new file mode 100644 index 0000000000000000000000000000000000000000..044c79a67e8e6cbf1716fabba3432fc4ca65e48a --- /dev/null +++ b/utils/converters/stl_to_cartesian/globals.h @@ -0,0 +1,12 @@ + +#define MAX(A,B) ((A)>(B) ? (A):(B)) +#define MIN(A,B) ((A)<(B) ? (A):(B)) + +#define ABS(X) ((X) < 0 ? -(X) : (X)) + +static const int LOGICAL_TRUE = 1; +static const int LOGICAL_FALSE = 0; +static const int LOGICAL_ERROR = -1; + +float C_EPS; + diff --git a/utils/converters/stl_to_cartesian/lever.stl b/utils/converters/stl_to_cartesian/lever.stl new file mode 100644 index 0000000000000000000000000000000000000000..892c0692ff995c0ad8c01711f195e3c44e9a4a7d Binary files /dev/null and b/utils/converters/stl_to_cartesian/lever.stl differ diff --git a/utils/converters/stl_to_cartesian/main.c b/utils/converters/stl_to_cartesian/main.c new file mode 100644 index 0000000000000000000000000000000000000000..33e154ce4aed67a1edf2910bc824bc0addf05a82 --- /dev/null +++ b/utils/converters/stl_to_cartesian/main.c @@ -0,0 +1,295 @@ + +#include <math.h> +#include <stdlib.h> +#include <stdio.h> +#include <string.h> + +#include "globals.h" +#include "stl.h" +#include "mesh.h" +#include "segtri.h" + +stl_data stl_in; +msh_data msh_out; + +int CreateVoxelMesh(int nx, int ny, int nz) +{ + + msh_data msh_tmp; + int *conversion_list; + + int i, j, k, n; + int ind; + + float dx, dy, dz; + float cx, cy, cz; + + msh_node v[8]; + + stl_facet T; + stl_vertex q; + stl_vertex r; + + char code; + + msh_tmp.stats.number_of_nodes = (nx + 1) * (ny + 1) * (nz + 1); + msh_tmp.stats.number_of_elements = nx * ny * nz; + + MshAllocate(&msh_tmp); + + dx = (stl_in.stats.max.x - stl_in.stats.min.x) / nx; + dy = (stl_in.stats.max.y - stl_in.stats.min.y) / ny; + dz = (stl_in.stats.max.z - stl_in.stats.min.z) / nz; + + ind = 0; + + cz = stl_in.stats.min.z; + + for(k = 0; k < nz + 1; k++) + { + + cy = stl_in.stats.min.y; + + for(j = 0; j < ny + 1; j++) + { + + cx = stl_in.stats.min.x; + + for(i = 0; i < nx + 1; i++) + { + + msh_tmp.node_start[ind].x = cx; + msh_tmp.node_start[ind].y = cy; + msh_tmp.node_start[ind].z = cz; + + ind++; + + cx += dx; + + } + + cy += dy; + } + + cz += dz; + + } + + ind = 0; + + for(k = 0; k < nz; k++) + { + for(j = 0; j < ny; j++) + { + for(i = 0; i < nx; i++) + { + + msh_tmp.element_start[ind].node[0] = (i + 0) + (nx + 1) * (j + 0) + (nx + 1) * (ny + 1) * (k + 0); + msh_tmp.element_start[ind].node[1] = (i + 1) + (nx + 1) * (j + 0) + (nx + 1) * (ny + 1) * (k + 0); + msh_tmp.element_start[ind].node[2] = (i + 1) + (nx + 1) * (j + 1) + (nx + 1) * (ny + 1) * (k + 0); + msh_tmp.element_start[ind].node[3] = (i + 0) + (nx + 1) * (j + 1) + (nx + 1) * (ny + 1) * (k + 0); + + msh_tmp.element_start[ind].node[4] = (i + 0) + (nx + 1) * (j + 0) + (nx + 1) * (ny + 1) * (k + 1); + msh_tmp.element_start[ind].node[5] = (i + 1) + (nx + 1) * (j + 0) + (nx + 1) * (ny + 1) * (k + 1); + msh_tmp.element_start[ind].node[6] = (i + 1) + (nx + 1) * (j + 1) + (nx + 1) * (ny + 1) * (k + 1); + msh_tmp.element_start[ind].node[7] = (i + 0) + (nx + 1) * (j + 1) + (nx + 1) * (ny + 1) * (k + 1); + + ind++; + + } + } + } + + for (i = 0; i < msh_tmp.stats.number_of_elements; i++) + { + + // printf("Processing element: %d of %d...\n", i + 1, msh_tmp.stats.number_of_elements); + + // Create a ray from the center of the element to a distant point + + q.x = 0; + q.y = 0; + q.z = 0; + + for (k = 0; k < 8; k++) + { + v[k] = msh_tmp.node_start[msh_tmp.element_start[i].node[k]]; + + q.x += v[k].x; + q.y += v[k].y; + q.z += v[k].z; + } + + q.x /= 8; + q.y /= 8; + q.z /= 8; + + r.x = q.x + 2.91f * stl_in.stats.size.x; + r.y = q.y + 2.21f * stl_in.stats.size.y; + r.z = q.z + 2.45f * stl_in.stats.size.z; + + n = 0; + + for (j = 0; j < stl_in.stats.number_of_facets; j++) + { + + T = stl_in.facet_start[j]; + + code = StlSegTriInt(T, q, r); + + if (code != '0') n++; + + } + + if (n % 2 != 0) + { + // The element is inside the solid + msh_tmp.element_start[i].inside = LOGICAL_TRUE; + } + else + { + // The element is outside the solid + msh_tmp.element_start[i].inside = LOGICAL_FALSE; + } + + } + + // Remove elements which are outside the solid + + msh_out.stats.number_of_nodes = msh_tmp.stats.number_of_nodes; + msh_out.stats.number_of_elements = msh_tmp.stats.number_of_elements; + + MshAllocate(&msh_out); + + n = 0; + + for (i = 0; i < msh_tmp.stats.number_of_elements; i++) + { + + if (msh_tmp.element_start[i].inside == LOGICAL_TRUE) + { + msh_out.element_start[n] = msh_tmp.element_start[i]; + n++; + } + + } + + msh_out.stats.number_of_elements = n; + + // Allocate memory for conversion list + + conversion_list = calloc(msh_tmp.stats.number_of_nodes, sizeof(int)); + + // Remove unused nodes + + for (i = 0; i < msh_tmp.stats.number_of_nodes; i++) + { + msh_tmp.node_start[i].keep = LOGICAL_FALSE; + } + + for (i = 0; i < msh_out.stats.number_of_elements; i++) + { + if (msh_out.element_start[i].inside == LOGICAL_TRUE) + { + for (k = 0; k < 8; k++) + { + msh_tmp.node_start[msh_out.element_start[i].node[k]].keep = LOGICAL_TRUE; + } + } + } + + n = 0; + + for (i = 0; i < msh_tmp.stats.number_of_nodes; i++) + { + + if (msh_tmp.node_start[i].keep == LOGICAL_TRUE) + { + msh_out.node_start[n] = msh_tmp.node_start[i]; + + conversion_list[i] = n; + + n++; + } + } + + msh_out.stats.number_of_nodes = n; + + // Renumber elements + + for (i = 0; i < msh_out.stats.number_of_elements; i++) + { + for (k = 0; k < 8; k++) + { + msh_out.element_start[i].node[k] = conversion_list[msh_out.element_start[i].node[k]]; + } + } + + // Free memory + + if (conversion_list != NULL) + { + free(conversion_list); + conversion_list = NULL; + } + + MshReallocate(&msh_out); + + // Free memory + + MshClose(&msh_tmp); + + return LOGICAL_TRUE; + +} + +void Usage() +{ + printf("\nUsage:\n"); + printf("stlToGmsh <file.stl> <nx> <ny> <nz>\n"); + + printf("\n"); + printf("nx: number of divisions along x axis\n"); + printf("ny: number of divisions along y axis\n"); + printf("nz: number of divisions along z axis\n"); + + printf("\nExample:\n"); + printf("stlToGmsh part.stl 20 20 20\n"); + printf("\n"); + +} + +int main(int argc, char *argv[]) +{ + + int nx, ny, nz; + + if (argc != 5) + { + printf("\nError: %d argument(s) entered when 4 were expected\n", argc - 1); + Usage(); + exit(0); + } + + StlOpenSTL(&stl_in, argv[1]); + + sscanf(argv[2], "%d", &nx); + sscanf(argv[3], "%d", &ny); + sscanf(argv[4], "%d", &nz); + + printf("Processing...\n"); + + CreateVoxelMesh(nx, ny, nz); + + strncpy(argv[1] + strlen(argv[1]) - 3, "msh", 3); + MshWriteMSH(&msh_out, argv[1]); + + // Free memory + + StlClose(&stl_in); + MshClose(&msh_out); + + printf("Done.\n"); + + return 0; /* ANSI C requires main to return int. */ +} diff --git a/utils/converters/stl_to_cartesian/mesh.c b/utils/converters/stl_to_cartesian/mesh.c new file mode 100644 index 0000000000000000000000000000000000000000..03fe0d114d9e7cc968c5642619833ff3c5bca877 --- /dev/null +++ b/utils/converters/stl_to_cartesian/mesh.c @@ -0,0 +1,135 @@ +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <math.h> +//#include <malloc.h> + +#include "globals.h" +#include "mesh.h" + +int MshAllocate(msh_data *msh) +{ + + /* Allocate memory */ + msh->node_start = calloc(msh->stats.number_of_nodes, sizeof(msh_node)); + + msh->stats.nodes_malloced = msh->stats.number_of_nodes; + + if (msh->node_start == NULL) return LOGICAL_FALSE; + + msh->element_start = calloc(msh->stats.number_of_elements, sizeof(msh_element)); + + msh->stats.elements_malloced = msh->stats.number_of_elements; + + if (msh->element_start == NULL) return LOGICAL_FALSE; + + return LOGICAL_TRUE; +} + +int MshReallocate(msh_data *msh) +{ + + /* Reallocate more memory */ + + msh->node_start = realloc(msh->node_start, (msh->stats.number_of_nodes + 1) * sizeof(msh_node)); + + msh->stats.nodes_malloced = msh->stats.number_of_nodes; + + if (msh->node_start == NULL) return LOGICAL_FALSE; + + msh->element_start = realloc(msh->element_start, (msh->stats.number_of_elements + 1) * sizeof(msh_element)); + + msh->stats.elements_malloced = msh->stats.number_of_elements; + + if (msh->element_start == NULL) return LOGICAL_FALSE; + + return LOGICAL_TRUE; +} + +void MshClose(msh_data *msh) +{ + + + msh->stats.number_of_nodes = 0; + msh->stats.number_of_elements = 0; + + msh->stats.nodes_malloced = 0; + msh->stats.elements_malloced = 0; + + // Free memory + + if(msh->node_start != NULL) + { + free(msh->node_start); + msh->node_start = NULL; + } + + if(msh->element_start != NULL) + { + free(msh->element_start); + msh->element_start = NULL; + } + +} +int MshWriteMSH(msh_data *msh, char *file) +{ + + int i, j; + + FILE *fp; + + if (msh->node_start == NULL) + return LOGICAL_FALSE; + + if (msh->element_start == NULL) + return LOGICAL_FALSE; + + fp = fopen(file, "w"); + + if (fp == NULL) return LOGICAL_FALSE; + + fprintf(fp, "$NOD\n"); + fprintf(fp, "%d\n", msh->stats.number_of_nodes); + + for (i = 0; i < msh->stats.number_of_nodes; i++) + { + fprintf(fp, "%d %f %f %f", i + 1, msh->node_start[i].x, msh->node_start[i].y, msh->node_start[i].z); + fprintf(fp, "\n"); + } + + fprintf(fp, "$ENDNOD\n"); + + fprintf(fp, "$ELM\n"); + + fprintf(fp, "%d\n", msh->stats.number_of_elements); + + for (i = 0; i < msh->stats.number_of_elements; i++) + { + + fprintf(fp, "%d", i + 1); + + fprintf(fp, " %d", 5); + + fprintf(fp, " %d", 1); + fprintf(fp, " %d", 1); + + fprintf(fp, " %d", 8); + + for (j = 0; j < 8; j++) + { + fprintf(fp, " %d", msh->element_start[i].node[j] + 1); + } + + fprintf(fp, "\n"); + + } + + fprintf(fp, "$ENDELM\n"); + + fclose(fp); + + return LOGICAL_TRUE; + +} + + diff --git a/utils/converters/stl_to_cartesian/mesh.h b/utils/converters/stl_to_cartesian/mesh.h new file mode 100644 index 0000000000000000000000000000000000000000..7ee4296fa4048ac71215515c5c73fc85d6902f12 --- /dev/null +++ b/utils/converters/stl_to_cartesian/mesh.h @@ -0,0 +1,29 @@ + +typedef struct +{ + float x, y, z; + int keep; +}msh_node; + +typedef struct +{ + int node[8]; + int inside; +}msh_element; + +typedef struct +{ + int number_of_nodes; + int number_of_elements; + int nodes_malloced; + int elements_malloced; +}msh_stats; + +typedef struct +{ + FILE *fp; + msh_node *node_start; + msh_element *element_start; + msh_stats stats; +}msh_data; + diff --git a/utils/converters/stl_to_cartesian/segtri.c b/utils/converters/stl_to_cartesian/segtri.c new file mode 100644 index 0000000000000000000000000000000000000000..52d3df89a77987549030c2f552aac40dd1636a93 --- /dev/null +++ b/utils/converters/stl_to_cartesian/segtri.c @@ -0,0 +1,417 @@ + +#include <stdio.h> +#include <stdlib.h> +#include <math.h> + +#include "globals.h" +#include "stl.h" +#include "segtri.h" + +/*------------Function prototypes. ----------------------------*/ +int StlFindLargestValue(stl_vertex v); +float StlDot(stl_vertex a, stl_vertex b); +void StlSubVec(stl_vertex a, stl_vertex b, stl_vertex *c); +char StlInTri3D(stl_facet T, int m, stl_vertex r ); +char StlInTri2D(stl_vertex Tp[3], stl_vertex pp ); +float StlArea(stl_vertex q, stl_vertex b, stl_vertex c ); +char StlInPlane(stl_facet T, int m, stl_vertex q, stl_vertex r); +char StlSegTriCross(stl_facet T, stl_vertex q, stl_vertex r ); +float StlVolume(stl_vertex a, stl_vertex b, stl_vertex c, stl_vertex d ); +/*-------------------------------------------------------------------*/ + +/*--------------------------------------------------------------------- + 'p': The segment lies wholly within the plane. + 'q': The q endpoint is on the plane (but not 'p'). + 'r': The r endpoint is on the plane (but not 'p'). + '0': The segment lies strictly to one side or the other of the plane. + '1': The segement intersects the plane, and 'p' does not hold. +---------------------------------------------------------------------*/ +char StlSegPlaneInt(stl_plane P, stl_vertex q, stl_vertex r, stl_vertex *p, int *m) +{ + + stl_vertex rq; + float num, denom, t; + + num = P.D - StlDot(q, P.normal); + + StlSubVec(r, q, &rq); + + denom = StlDot(P.normal, rq); + + if ( ABS(denom) < C_EPS ) + { + /* Segment is parallel to plane. */ + if ( ABS(num) < C_EPS) + { + /* q is on plane. */ + *m = StlFindLargestValue(P.normal); + return 'p'; + } + else + return '0'; + } + else + t = num / denom; + + if (t < -C_EPS || t > 1 + C_EPS) + return '0'; + + if ( (C_EPS < t) && (t < 1 - C_EPS) ) + { + *m = StlFindLargestValue(P.normal); + p->x = q.x + t * (r.x - q.x); + p->y = q.y + t * (r.y - q.y); + p->z = q.z + t * (r.z - q.z); + + return '1'; + } + else if ( t <= C_EPS ) /* t == 0 */ + { + *m = StlFindLargestValue(P.normal); + return 'q'; + } + else if ( t >= 1 - C_EPS ) /* t == 1 */ + { + *m = StlFindLargestValue(P.normal); + return 'r'; + } + + return '0'; + +} + +int StlFindLargestValue(stl_vertex nv) +{ + + int m; + int j; + float tcur; /*temporary storage */ + float biggest = 0; /* Largest component of normal vector. */ + float v[3]; + + v[0] = nv.x; + v[1] = nv.y; + v[2] = nv.z; + + for (j = 0; j < 3; j++) + { + tcur = ABS(v[j]); + + if ( tcur > biggest) + { + biggest = tcur; + m = j; + } + } + + return m; + +} + +/*--------------------------------------------------------------------- +a - b ==> c. +---------------------------------------------------------------------*/ +void StlSubVec(stl_vertex a, stl_vertex b, stl_vertex *c) +{ + + c->x = a.x - b.x; + c->y = a.y - b.y; + c->z = a.z - b.z; + +} + +/*--------------------------------------------------------------------- +Returns the dot product of the two input vectors. +---------------------------------------------------------------------*/ +float StlDot(stl_vertex a, stl_vertex b) +{ + + float sum = 0; + + sum = a.x * b.x + a.y * b.y + a.z * b.z; + + return sum; + +} + +/* Assumption: p lies in the plane containing T. + Returns a char: + 'V': the query point p coincides with a Vertex of triangle T. + 'E': the query point p is in the relative interior of an Edge of triangle T. + 'F': the query point p is in the relative interior of a Face of triangle T. + '0': the query point p does not intersect (misses) triangle T. +*/ + +char StlInTri3D( stl_facet T, int m, stl_vertex r ) +{ + + int j; + + stl_vertex pp; /* projected p */ + stl_vertex Tp[3]; /* projected T: three new vertices */ + + /* Project out coordinate m in both p and the triangular face */ + + for ( j = 0; j < 3; j++ ) + { + if ( m == 0 ) + { + pp.x = r.y; + pp.y = r.z; + + Tp[j].x = T.vertex[j].y; + Tp[j].y = T.vertex[j].z; + } + + if ( m == 1 ) + { + pp.x = r.x; + pp.y = r.z; + + Tp[j].x = T.vertex[j].x; + Tp[j].y = T.vertex[j].z; + } + + if ( m == 2 ) + { + pp.x = r.x; + pp.y = r.y; + + Tp[j].x = T.vertex[j].x; + Tp[j].y = T.vertex[j].y; + } + + } + + return (StlInTri2D(Tp, pp)); +} + +char StlInTri2D(stl_vertex Tp[3], stl_vertex pp ) +{ + + float area0, area1, area2; + + /* compute three AreaSign() values for pp w.r.t. each edge of the face in 2D */ + area0 = StlArea( pp, Tp[0], Tp[1] ); + area1 = StlArea( pp, Tp[1], Tp[2] ); + area2 = StlArea( pp, Tp[2], Tp[0] ); + + if ( ( ABS(area0) < C_EPS ) && ( area1 > 0 ) && ( area2 > 0 ) || + ( ABS(area1) < C_EPS ) && ( area0 > 0 ) && ( area2 > 0 ) || + ( ABS(area2) < C_EPS ) && ( area0 > 0 ) && ( area1 > 0 ) ) + return 'E'; + + if ( ( ABS(area0) < C_EPS ) && ( area1 < 0 ) && ( area2 < 0 ) || + ( ABS(area1) < C_EPS ) && ( area0 < 0 ) && ( area2 < 0 ) || + ( ABS(area2) < C_EPS ) && ( area0 < 0 ) && ( area1 < 0 ) ) + return 'E'; + + if ( ( area0 > 0 ) && ( area1 > 0 ) && ( area2 > 0 ) || + ( area0 < 0 ) && ( area1 < 0 ) && ( area2 < 0 ) ) + return 'F'; + + if ( ( ABS(area0) < C_EPS ) && ( ABS(area1) < C_EPS ) || + ( ABS(area0) < C_EPS ) && ( ABS(area2) < C_EPS ) || + ( ABS(area1) < C_EPS ) && ( ABS(area2) < C_EPS ) ) + return 'V'; + + return '0'; +} + +float StlArea( stl_vertex a, stl_vertex b, stl_vertex c ) +{ + + float area2; + + area2 = ( b.x - a.x ) * ( c.y - a.y ) - + ( c.x - a.x ) * ( b.y - a.y ); + + return area2; + +} + +char StlTriPlaneCross(stl_facet T, stl_plane P, int *v) +{ + + int code = '?'; + float d0, d1, d2; + + d0 = T.vertex[0].x * P.normal.x + + T.vertex[0].y * P.normal.y + + T.vertex[0].z * P.normal.z - P.D; + + d1 = T.vertex[1].x * P.normal.x + + T.vertex[1].y * P.normal.y + + T.vertex[1].z * P.normal.z - P.D; + + d2 = T.vertex[2].x * P.normal.x + + T.vertex[2].y * P.normal.y + + T.vertex[2].z * P.normal.z - P.D; + + if ((d0 > 0) && (d1 > 0) && (d2 > 0) || + (d0 < 0) && (d1 < 0) && (d2 < 0)) + return '0'; + + // The triangle is completly on the plane + // This will result in bad contours. + // Another section should be chosen. + if (d0 == 0 && d1 == 0 && d2 == 0) + { + return '?'; + } + + if (d0 == 0 && d1 == 0) + { + *v = 2; + return '1'; + } + + if (d0 == 0 && d2 == 0) + { + *v = 1; + return '1'; + } + + if (d1 == 0 && d2 == 0) + { + *v = 2; + return '1'; + } + + if ((d0 <= 0) && (d1 > 0) && (d2 > 0) || + (d0 >= 0) && (d1 < 0) && (d2 < 0)) + { + *v = 0; + return '1'; + } + + if ((d0 > 0) && (d1 <= 0) && (d2 > 0) || + (d0 < 0) && (d1 >= 0) && (d2 < 0)) + { + *v = 1; + return '1'; + } + + if ((d0 > 0) && (d1 > 0) && (d2 <= 0) || + (d0 < 0) && (d1 < 0) && (d2 >= 0)) + { + *v = 2; + return '1'; + } + + return code; +} + +char StlTriTriCross(stl_facet T0, stl_facet T1) +{ + + int code = '?'; + float vol0, vol1, vol2; + + vol0 = StlVolume(T0.vertex[0], T0.vertex[1], T0.vertex[2], T1.vertex[0]); + vol1 = StlVolume(T0.vertex[0], T0.vertex[1], T0.vertex[2], T1.vertex[1]); + vol2 = StlVolume(T0.vertex[0], T0.vertex[1], T0.vertex[2], T1.vertex[2]); + + /* Opposite sign: no intersection between triangle 1 and triangle 2 */ + if ( ( ( vol0 > 0 ) && ( vol1 > 0 ) && ( vol2 > 0 ) ) || + ( ( vol0 < 0 ) && ( vol1 < 0 ) && ( vol2 < 0 ) ) ) + return '0'; + + return code; + +} + +char StlSegTriInt(stl_facet T, stl_vertex q, stl_vertex r) +{ + + int code = '?'; + int m = -1; + stl_vertex p; + stl_plane P; + + P.D = StlDot(T.vertex[0], T.normal); + P.normal = T.normal; + + code = StlSegPlaneInt(P, q, r, &p, &m ); + + if ( code == '0') + return '0'; + else if ( code == 'q') + return StlInTri3D( T, m, q ); + else if ( code == 'r') + return StlInTri3D( T, m, r ); + else if ( code == 'p' ) + return 'p'; + else if ( code == '1' ) + return StlSegTriCross( T, q, r ); + else + return code; + +} + +/*--------------------------------------------------------------------- +The signed volumes of three tetrahedra are computed, determined +by the segment qr, and each edge of the triangle. +Returns a char: + 'v': the open segment includes a vertex of T. + 'e': the open segment includes a point in the relative interior of an edge + of T. + 'f': the open segment includes a point in the relative interior of a face + of T. + '0': the open segment does not intersect triangle T. +---------------------------------------------------------------------*/ + +char StlSegTriCross(stl_facet T, stl_vertex q, stl_vertex r) +{ + + float vol0, vol1, vol2; + + vol0 = StlVolume( q, T.vertex[0], T.vertex[1], r ); + vol1 = StlVolume( q, T.vertex[1], T.vertex[2], r ); + vol2 = StlVolume( q, T.vertex[2], T.vertex[0], r ); + + /* Same sign: segment intersects interior of triangle. */ + if ( ( ( vol0 > C_EPS ) && ( vol1 > C_EPS ) && ( vol2 > C_EPS ) ) || + ( ( vol0 < -C_EPS ) && ( vol1 < -C_EPS ) && ( vol2 < -C_EPS ) ) ) + return 'f'; + + /* Opposite sign: no intersection between segment and triangle */ + if ( ( ( vol0 > 0 ) || ( vol1 > 0 ) || ( vol2 > 0 ) ) && + ( ( vol0 < 0 ) || ( vol1 < 0 ) || ( vol2 < 0 ) ) ) + return '0'; + + /* Two zeros: segment intersects vertex. */ + else if ( ( ( ABS(vol0) < C_EPS ) && ( ABS(vol1) < C_EPS ) ) || + ( ( ABS(vol0) < C_EPS ) && ( ABS(vol2) < C_EPS ) ) || + ( ( ABS(vol1) < C_EPS ) && ( ABS(vol2) < C_EPS ) ) ) + return 'v'; + + /* One zero: segment intersects edge. */ + else if ( ( ABS(vol0) < C_EPS ) || ( ABS(vol1) < C_EPS ) || ( ABS(vol2) < C_EPS ) ) + return 'e'; + else + return '0'; + +} + +float StlVolume( stl_vertex a, stl_vertex b, stl_vertex c, stl_vertex d ) +{ + + float vol; + float bxdx, bydy, bzdz, cxdx, cydy, czdz; + + bxdx = b.x - d.x; + bydy = b.y - d.y; + bzdz = b.z - d.z; + + cxdx = c.x - d.x; + cydy = c.y - d.y; + czdz = c.z - d.z; + + vol = (a.z - d.z) * (bxdx * cydy - bydy * cxdx) + + (a.y - d.y) * (bzdz * cxdx - bxdx * czdz) + + (a.x - d.x) * (bydy * czdz - bzdz * cydy); + + return vol; + +} diff --git a/utils/converters/stl_to_cartesian/segtri.h b/utils/converters/stl_to_cartesian/segtri.h new file mode 100644 index 0000000000000000000000000000000000000000..afb292baf9f9fe9cec52111eac3b888598a1a51d --- /dev/null +++ b/utils/converters/stl_to_cartesian/segtri.h @@ -0,0 +1,6 @@ + +char StlTriTriCross(stl_facet T0, stl_facet T1); +char StlSegTriInt( stl_facet T, stl_vertex q, stl_vertex r); +char StlSegPlaneInt(stl_plane P, stl_vertex q, stl_vertex r, stl_vertex *p, int *m ); +char StlTriPlaneCross(stl_facet T, stl_plane P, int *v); + diff --git a/utils/converters/stl_to_cartesian/stl.c b/utils/converters/stl_to_cartesian/stl.c new file mode 100644 index 0000000000000000000000000000000000000000..67655a42487a12ba56c54fab4b71b44f35159e2b --- /dev/null +++ b/utils/converters/stl_to_cartesian/stl.c @@ -0,0 +1,542 @@ +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <math.h> +//#include <malloc.h> + +#include "globals.h" +#include "stl.h" + +#if !defined(SEEK_SET) +#define SEEK_SET 0 +#define SEEK_CUR 1 +#define SEEK_END 2 +#endif + + +int StlGetLittleInt(FILE *fp) +{ + int value; + value = fgetc(fp) & 0xFF; + value |= (fgetc(fp) & 0xFF) << 0x08; + value |= (fgetc(fp) & 0xFF) << 0x10; + value |= (fgetc(fp) & 0xFF) << 0x18; + return(value); +} + +float StlGetLittleFloat(FILE *fp) +{ + union + { + int int_value; + float float_value; + } value; + + value.int_value = fgetc(fp) & 0xFF; + value.int_value |= (fgetc(fp) & 0xFF) << 0x08; + value.int_value |= (fgetc(fp) & 0xFF) << 0x10; + value.int_value |= (fgetc(fp) & 0xFF) << 0x18; + return(value.float_value); +} + +void StlPutLittleInt(FILE *fp, int value_in) +{ + + int new_value; + union + { + int int_value; + char char_value[4]; + } value; + + value.int_value = value_in; + + new_value = value.char_value[0] & 0xFF; + new_value |= (value.char_value[1] & 0xFF) << 0x08; + new_value |= (value.char_value[2] & 0xFF) << 0x10; + new_value |= (value.char_value[3] & 0xFF) << 0x18; + + fwrite(&new_value, sizeof(int), 1, fp); +} + +void StlPutLittleFloat(FILE *fp, float value_in) +{ + + int new_value; + union + { + float float_value; + char char_value[4]; + } value; + + value.float_value = value_in; + + new_value = value.char_value[0] & 0xFF; + new_value |= (value.char_value[1] & 0xFF) << 0x08; + new_value |= (value.char_value[2] & 0xFF) << 0x10; + new_value |= (value.char_value[3] & 0xFF) << 0x18; + + fwrite(&new_value, sizeof(int), 1, fp); +} + +int StlCheckIfFileExists(char *file) +{ + + FILE *fp; + + fp = fopen(file, "rb"); + if(fp == NULL) + { + return LOGICAL_FALSE; + } + else + { + fclose(fp); + return LOGICAL_TRUE; + } +} + +int StlInitialize(stl_data *stl, char *file) +{ + + long file_size; + int header_num_facets; + int num_facets; + int i, j; + unsigned char chtest[128]; + unsigned char fhtest[5]; + int num_lines = 1; + + stl->stats.volume = -1.0; + + /* Open the file */ + stl->fp = fopen(file, "rb"); + + if(stl->fp == NULL) + return LOGICAL_FALSE; + + /* Find size of file */ + fseek(stl->fp, 0, SEEK_END); + file_size = ftell(stl->fp); + + stl->stats.file_size = file_size; + + /* Check for binary or ASCII file */ + fseek(stl->fp, HEADER_SIZE, SEEK_SET); + fread(chtest, sizeof(chtest), 1, stl->fp); + stl->stats.type = ASCII; + + for(i = 0; i < sizeof(chtest); i++) + { + if(chtest[i] > 127) + { + stl->stats.type = BINARY; + break; + } + } + + rewind(stl->fp); + + /* Get the header and the number of facets in the .STL file */ + /* If the .STL file is binary, then do the following */ + if(stl->stats.type == BINARY) + { + /* Test if the STL file has the right size */ + if(((file_size - HEADER_SIZE) % SIZEOF_STL_FACET != 0) + || (file_size < STL_MIN_FILE_SIZE)) + return LOGICAL_FALSE; + + num_facets = (file_size - HEADER_SIZE) / SIZEOF_STL_FACET; + + /* Read the header */ + strcpy(stl->stats.header, ""); + fread(stl->stats.header, LABEL_SIZE, 1, stl->fp); + stl->stats.header[80] = '\0'; + + /* Read the int following the header. This should contain # of facets */ + header_num_facets = StlGetLittleInt(stl->fp); + + //if(num_facets != header_num_facets) + //"Warning: File size doesn't match number of facets in the header" + + } + /* Otherwise, if the .STL file is ASCII, then do the following */ + else + { + + /* Get the header */ + for(i = 0; (i < 80) && (chtest[i] = getc(stl->fp)) != '\n'; i++); + + fscanf(stl->fp, "%s", &fhtest); + + if (strcmp(fhtest, "facet") != 0) + return LOGICAL_FALSE; + + rewind(stl->fp); + + /* Find the number of facets */ + j = 0; + for(i = 0; i < file_size ; i++) + { + j++; + if(getc(stl->fp) == '\n') + { + if(j > 4) /* don't count short lines */ + { + num_lines++; + } + j = 0; + + } + + } + + rewind(stl->fp); + + /* Get the header */ + strcpy(stl->stats.header, ""); + for(i = 0; (i < 80) && (stl->stats.header[i] = getc(stl->fp)) != '\n'; i++); + + num_facets = num_lines / ASCII_LINES_PER_FACET; + + } + + stl->stats.number_of_facets += num_facets; + + /* Successful exit */ + return LOGICAL_TRUE; + +} + +int StlOpenSTL(stl_data *stl, char *file) +{ + + StlClose(stl); + + if (StlInitialize(stl, file) == LOGICAL_TRUE) + { + + if (StlAllocate(stl) == LOGICAL_TRUE) + StlReadStl(stl, 0, 1); + else + return LOGICAL_FALSE; + + } + else + return LOGICAL_FALSE; + + return LOGICAL_TRUE; +} + +void StlClose(stl_data *stl) +{ + + stl_index = 0; + + stl->stats.number_of_facets = 0; + + stl->stats.malloced = 0; + stl->stats.freed = 0; + stl->stats.facets_malloced = 0; + + stl->stats.file_size = 0; + strcpy(stl->stats.header, ""); + + stl->stats.shortest_edge = 0; + stl->stats.tolerance = 0; + stl->stats.type = 0; + + stl->stats.area = 0; + stl->stats.volume = 0; + + stl->stats.min.x = 0; + stl->stats.min.y = 0; + stl->stats.min.z = 0; + + stl->stats.max.x = 0; + stl->stats.max.y = 0; + stl->stats.max.z = 0; + + stl->stats.center.x = 0; + stl->stats.center.y = 0; + stl->stats.center.z = 0; + + stl->stats.size.x = 0; + stl->stats.size.y = 0; + stl->stats.size.z = 0; + + stl->stats.bounding_diameter = 0; + + // Free memory + + if(stl->facet_start != NULL) + { + free(stl->facet_start); + stl->facet_start = NULL; + } + + +} + +int StlAllocate(stl_data *stl) +{ + + /* Allocate memory for the entire .STL file */ + stl->facet_start = calloc(stl->stats.number_of_facets, sizeof(stl_facet)); + + stl->stats.facets_malloced = stl->stats.number_of_facets; + + if (stl->facet_start == NULL) return LOGICAL_FALSE; + + return LOGICAL_TRUE; +} + +int StlAddSTL(stl_data *stl, char *file) +{ + + int first_facet; + + first_facet = stl->stats.number_of_facets; + + if (StlInitialize(stl, file) == LOGICAL_TRUE) + { + + if (StlReallocate(stl) == LOGICAL_TRUE) + StlReadStl(stl, first_facet, 1); + else + return LOGICAL_FALSE; + + } + else + return LOGICAL_FALSE; + + + return LOGICAL_TRUE; +} + +int StlReallocate(stl_data *stl) +{ + + /* Reallocate more memory for the .STL file(s) */ + stl->facet_start = realloc(stl->facet_start, (stl->stats.number_of_facets + 1) * sizeof(stl_facet)); + + stl->stats.facets_malloced = stl->stats.number_of_facets; + + if (stl->facet_start == NULL) return LOGICAL_FALSE; + + return LOGICAL_TRUE; +} + +void StlReadStl(stl_data *stl, int first_facet, int first) +{ + + stl_facet facet; + int i; + float diff_x; + float diff_y; + float diff_z; + float max_diff; + + if (stl->facet_start == NULL) + return; + + if(stl->stats.type == BINARY) + { + fseek(stl->fp, HEADER_SIZE, SEEK_SET); + } + else + { + rewind(stl->fp); + /* Skip the first line of the file */ + while(getc(stl->fp) != '\n'); + } + + for(i = first_facet; i < stl->stats.number_of_facets; i++) + { + if(stl->stats.type == BINARY) + /* Read a single facet from a binary .STL file */ + { + facet.normal.x = StlGetLittleFloat(stl->fp); + facet.normal.y = StlGetLittleFloat(stl->fp); + facet.normal.z = StlGetLittleFloat(stl->fp); + facet.vertex[0].x = StlGetLittleFloat(stl->fp); + facet.vertex[0].y = StlGetLittleFloat(stl->fp); + facet.vertex[0].z = StlGetLittleFloat(stl->fp); + facet.vertex[1].x = StlGetLittleFloat(stl->fp); + facet.vertex[1].y = StlGetLittleFloat(stl->fp); + facet.vertex[1].z = StlGetLittleFloat(stl->fp); + facet.vertex[2].x = StlGetLittleFloat(stl->fp); + facet.vertex[2].y = StlGetLittleFloat(stl->fp); + facet.vertex[2].z = StlGetLittleFloat(stl->fp); + facet.extra[0] = fgetc(stl->fp); + facet.extra[1] = fgetc(stl->fp); + } + else + /* Read a single facet from an ASCII .STL file */ + { + fscanf(stl->fp, "%*s %*s %f %f %f\n", &facet.normal.x, + &facet.normal.y, &facet.normal.z); + fscanf(stl->fp, "%*s %*s"); + fscanf(stl->fp, "%*s %f %f %f\n", &facet.vertex[0].x, + &facet.vertex[0].y, &facet.vertex[0].z); + fscanf(stl->fp, "%*s %f %f %f\n", &facet.vertex[1].x, + &facet.vertex[1].y, &facet.vertex[1].z); + fscanf(stl->fp, "%*s %f %f %f\n", &facet.vertex[2].x, + &facet.vertex[2].y, &facet.vertex[2].z); + fscanf(stl->fp, "%*s"); + fscanf(stl->fp, "%*s"); + } + + /* Write the facet into memory. */ + stl->facet_start[i] = facet; + + /* while we are going through all of the facets, let's find the */ + /* maximum and minimum values for x, y, and z */ + + /* Initialize the max and min values the first time through*/ + if(first) + { + stl->stats.max.x = facet.vertex[0].x; + stl->stats.min.x = facet.vertex[0].x; + stl->stats.max.y = facet.vertex[0].y; + stl->stats.min.y = facet.vertex[0].y; + stl->stats.max.z = facet.vertex[0].z; + stl->stats.min.z = facet.vertex[0].z; + + diff_x = ABS(facet.vertex[0].x - facet.vertex[1].x); + diff_y = ABS(facet.vertex[0].y - facet.vertex[1].y); + diff_z = ABS(facet.vertex[0].z - facet.vertex[1].z); + max_diff = MAX(diff_x, diff_y); + max_diff = MAX(diff_z, max_diff); + stl->stats.shortest_edge = max_diff; + + first = 0; + } + + /* now find the max and min values */ + stl->stats.max.x = MAX(stl->stats.max.x, facet.vertex[0].x); + stl->stats.min.x = MIN(stl->stats.min.x, facet.vertex[0].x); + stl->stats.max.y = MAX(stl->stats.max.y, facet.vertex[0].y); + stl->stats.min.y = MIN(stl->stats.min.y, facet.vertex[0].y); + stl->stats.max.z = MAX(stl->stats.max.z, facet.vertex[0].z); + stl->stats.min.z = MIN(stl->stats.min.z, facet.vertex[0].z); + + stl->stats.max.x = MAX(stl->stats.max.x, facet.vertex[1].x); + stl->stats.min.x = MIN(stl->stats.min.x, facet.vertex[1].x); + stl->stats.max.y = MAX(stl->stats.max.y, facet.vertex[1].y); + stl->stats.min.y = MIN(stl->stats.min.y, facet.vertex[1].y); + stl->stats.max.z = MAX(stl->stats.max.z, facet.vertex[1].z); + stl->stats.min.z = MIN(stl->stats.min.z, facet.vertex[1].z); + + stl->stats.max.x = MAX(stl->stats.max.x, facet.vertex[2].x); + stl->stats.min.x = MIN(stl->stats.min.x, facet.vertex[2].x); + stl->stats.max.y = MAX(stl->stats.max.y, facet.vertex[2].y); + stl->stats.min.y = MIN(stl->stats.min.y, facet.vertex[2].y); + stl->stats.max.z = MAX(stl->stats.max.z, facet.vertex[2].z); + stl->stats.min.z = MIN(stl->stats.min.z, facet.vertex[2].z); + } + + stl->stats.size.x = stl->stats.max.x - stl->stats.min.x; + stl->stats.size.y = stl->stats.max.y - stl->stats.min.y; + stl->stats.size.z = stl->stats.max.z - stl->stats.min.z; + + /* + stl->stats.bounding_diameter = sqrt(stl->stats.size.x * stl->stats.size.x + stl->stats.size.y * stl->stats.size.y + stl->stats.size.z * stl->stats.size.z); + + C_EPS = stl->stats.bounding_diameter / 10000; + C_EPS *= C_EPS; + */ + + C_EPS = 1E-6f; + + StlReallocate(stl); +} + +int StlWriteAscii(stl_data *stl, char *file, char *label) +{ + int i; + FILE *fp; + + /* Open the file */ + fp = fopen(file, "w"); + if(fp == NULL) + { + return LOGICAL_FALSE; + } + + fprintf(fp, "solid %s\n", label); + + for(i = 0; i < stl->stats.number_of_facets; i++) + { + fprintf(fp, "facet normal %.8E %.8E %.8E\n", + stl->facet_start[i].normal.x, stl->facet_start[i].normal.y, + stl->facet_start[i].normal.z); + fprintf(fp, "outer loop\n"); + fprintf(fp, "vertex %.8E %.8E %.8E\n", + stl->facet_start[i].vertex[0].x, stl->facet_start[i].vertex[0].y, + stl->facet_start[i].vertex[0].z); + fprintf(fp, "vertex %.8E %.8E %.8E\n", + stl->facet_start[i].vertex[1].x, stl->facet_start[i].vertex[1].y, + stl->facet_start[i].vertex[1].z); + fprintf(fp, "vertex %.8E %.8E %.8E\n", + stl->facet_start[i].vertex[2].x, stl->facet_start[i].vertex[2].y, + stl->facet_start[i].vertex[2].z); + fprintf(fp, "endloop\n"); + fprintf(fp, "endfacet\n"); + } + + fprintf(fp, "endsolid %s\n", label); + + fclose(fp); + + return LOGICAL_TRUE; +} + +int StlWriteBinary(stl_data *stl, char *file, char *label) +{ + + FILE *fp; + int i; + + if (stl->facet_start == NULL) + return LOGICAL_FALSE; + + /* Open the file */ + fp = fopen(file, "wb"); + if(fp == NULL) + { + return LOGICAL_FALSE; + } + + fprintf(fp, "%s", label); + for(i = strlen(label); i < LABEL_SIZE; i++) putc(0, fp); + + fseek(fp, LABEL_SIZE, SEEK_SET); + + StlPutLittleInt(fp, stl->stats.number_of_facets); + + for(i = 0; i < stl->stats.number_of_facets; i++) + { + StlPutLittleFloat(fp, stl->facet_start[i].normal.x); + StlPutLittleFloat(fp, stl->facet_start[i].normal.y); + StlPutLittleFloat(fp, stl->facet_start[i].normal.z); + StlPutLittleFloat(fp, stl->facet_start[i].vertex[0].x); + StlPutLittleFloat(fp, stl->facet_start[i].vertex[0].y); + StlPutLittleFloat(fp, stl->facet_start[i].vertex[0].z); + StlPutLittleFloat(fp, stl->facet_start[i].vertex[1].x); + StlPutLittleFloat(fp, stl->facet_start[i].vertex[1].y); + StlPutLittleFloat(fp, stl->facet_start[i].vertex[1].z); + StlPutLittleFloat(fp, stl->facet_start[i].vertex[2].x); + StlPutLittleFloat(fp, stl->facet_start[i].vertex[2].y); + StlPutLittleFloat(fp, stl->facet_start[i].vertex[2].z); + + fputc(stl->facet_start[i].extra[0], fp); + fputc(stl->facet_start[i].extra[1], fp); + } + + fclose(fp); + + return LOGICAL_TRUE; +} + + diff --git a/utils/converters/stl_to_cartesian/stl.h b/utils/converters/stl_to_cartesian/stl.h new file mode 100644 index 0000000000000000000000000000000000000000..d0a17042f879853d1171d982753e8d476f8b1428 --- /dev/null +++ b/utils/converters/stl_to_cartesian/stl.h @@ -0,0 +1,79 @@ + +#define LABEL_SIZE 80 +#define NUM_FACET_SIZE 4 +#define HEADER_SIZE 84 +#define STL_MIN_FILE_SIZE 134 +#define ASCII_LINES_PER_FACET 7 +#define SIZEOF_EDGE_SORT 24 + +typedef struct +{ + float x, y, z; +}stl_vertex; + +typedef char stl_extra[2]; + +typedef struct +{ + stl_vertex normal; + stl_vertex vertex[3]; + stl_extra extra; +}stl_facet; + +#define SIZEOF_STL_FACET 50 + +typedef enum {BINARY, ASCII} stl_type; + +typedef struct +{ + long file_size; + char header[81]; + stl_type type; + int number_of_facets; + stl_vertex max; + stl_vertex min; + stl_vertex center; + stl_vertex size; + float bounding_diameter; + float shortest_edge; + float tolerance; + float volume; + float area; + int malloced; + int freed; + int facets_malloced; +}stl_stats; + +typedef struct +{ + FILE *fp; + stl_facet *facet_start; + stl_stats stats; +}stl_data; + +typedef struct +{ + stl_vertex normal; + float D; +}stl_plane; + +int stl_index; + +int StlGetLittleInt(FILE *fp); +float StlGetLittleFloat(FILE *fp); + +void StlPutLittleInt(FILE *fp, int value_in); +void StlPutLittleFloat(FILE *fp, float value_in); + +int StlCheckIfFileExists(char *file); + +int StlOpenStl(stl_data *stl, char *file); +int StlAddStl(stl_data *stl, char *file); +void StlReadStl(stl_data *stl, int first_facet, int first); + +void StlClose(stl_data *stl); + +int StlReallocate(stl_data *stl); +int StlAllocate(stl_data *stl); + + diff --git a/utils/converters/tetgen/tetgentogmsh.py b/utils/converters/tetgen/tetgentogmsh.py new file mode 100644 index 0000000000000000000000000000000000000000..7fd1513df07560b3cd7e6e67e054e962ecb75b13 --- /dev/null +++ b/utils/converters/tetgen/tetgentogmsh.py @@ -0,0 +1,129 @@ +#!/usr/bin/python +#tetgentogmsh.py +#Petit convertiseur de fichier tetgen en gmsh .msh +#car le fichier .mesh cree par tetgen ne conserve pas les marqueurs de surface +#Ecrit par frederic Renou frederic.renou@gmail.com 2009 + +#Base sur la bibliotheque de Ondrej Certik <ondrej@certik.cz> +#homepage: http://code.google.com/p/femgeom/ + +import sys + +verbose=False +if sys.argv[1] in ('h','-h','-help'): + print '-v for verbose mode' + print 'l argument doit etre le fichier tetgen sans le .node' + raise 'fin du fichier' +else: + if sys.argv[1] in ('v','-v'): + print '-v for verbose mode' + fname=sys.argv[2] + verbose=True + else: + fname=sys.argv[1] + +#ouverture des fichiers +fo=file(fname+'.msh',"w") +fn=file(fname+'.node',"r") +ff=file(fname+'.face',"r") +fe=file(fname+'.ele',"r") + + +#lecture du fichier .node +l=[int(x) for x in fn.readline().split()] +npoints,dim,nattrib,nbound=l +assert dim==3 +if npoints < 3: + raise "tetgen file empty" + +l=fo.write("$NOD\n") +l=fo.write("%d\n"%npoints) + +npointlu=0 +for line in fn: + if line[0]=="#": continue + l=[float(x) for x in line.split()] + npointlu=npointlu + 1 + l[0]=int(l[0]) + fo.write("%d "%l[0]+"%f "%l[1]+"%f "%l[2]+"%f\n"%l[3]) +if verbose: print "nombre de point lut %d nombre de point par tetgen %d"%(npointlu,npoints) +assert npoints==npointlu + + + +#lecture des fichiers elements +l=[int(x) for x in fe.readline().split()] +ntetra,nnod,nattribe=l +if nnod!=4: + raise "tetgen element are not linear not supported" +#if nattribe!=0: +# raise "tetgen did assign an entity number to each element" + +l=[int(x) for x in ff.readline().split()] +nfaces,nattribf=l +if nattribf!=1: + raise "tetgen didn't assign an entity number to each face" + +#fin de l ecriture des noeud +l=fo.write("$ENDNOD\n") +l=fo.write("$ELM\n") +l=fo.write("%d\n"%(ntetra+nfaces)) + +#lecture du fichier face +nfacelu=0 +for line in ff: + if line[0]=="#": continue + l=[int(x) for x in line.split()] + nfacelu=nfacelu+1 + assert len(l)==5 + n=[ #elm-number + l[0], + #elm-type + 2, + #reg-phys + l[4], + #reg-elem + l[4], + #number-of-nodes + 3, + #coord1 + l[1], + #coord + l[2], + #coord + l[3] + ] + l=fo.write("%d %d %d %d %d %d %d %d\n"%tuple(n)) +if verbose: print "nombre de face lut %d nombre de face par tetgen %d"%(nfacelu,nfaces) +assert nfaces==nfacelu + +ntetralu=0 +for line in fe: + if line[0]=="#": continue + l=[int(x) for x in line.split()] + ntetralu=ntetralu+1 + if nattribe==1: regnumber=l[5] + else: regnumber=3 + assert len(l)==(nattrib+5) + n=[ #elm-number + l[0], + #elm-type + 4, + #reg-phys + regnumber, + #reg-elem + regnumber, + #number-of-nodes + 4, + #coord + l[1], + #coord + l[2], + #coord + l[3], + #coord + l[4] + ] + l=fo.write("%d %d %d %d %d %d %d %d %d\n"%tuple(n)) +if verbose: print "nombre de tetra lut %d nombre de tetra par tetgen %d"%(nfacelu,nfaces) +assert ntetra==ntetralu \ No newline at end of file diff --git a/utils/misc/Info.plist b/utils/misc/gmsh_app.plist similarity index 95% rename from utils/misc/Info.plist rename to utils/misc/gmsh_app.plist index 6078eb2c18d0142dfda04c4fbc451a2f00dce49f..98c8855a9d0fab14eb56a62c81d76751c5a0f5e5 100644 --- a/utils/misc/Info.plist +++ b/utils/misc/gmsh_app.plist @@ -9,7 +9,7 @@ <key>CFBundleShortVersionString</key><string>GMSH_VERSION</string> <key>CFBundleIconFile</key><string>Gmsh.icns</string> <key>CFBundleSignature</key><string>GMSH</string> - <key>CFBundleGetInfoString</key><string>GMSH_VERSION, Copyright 1997-2009 C. Geuzaine and J.-F. Remacle</string> + <key>CFBundleGetInfoString</key><string>Gmsh GMSH_VERSION, Copyright 1997-2009 C. Geuzaine and J.-F. Remacle</string> <key>CFBundleIdentifier</key><string>org.geuz.Gmsh</string> <key>CFBundleDocumentTypes</key> <array> diff --git a/utils/misc/gmsh_bundle.sh b/utils/misc/gmsh_app.sh similarity index 100% rename from utils/misc/gmsh_bundle.sh rename to utils/misc/gmsh_app.sh diff --git a/utils/misc/Info_framework.plist b/utils/misc/gmsh_framework.plist similarity index 100% rename from utils/misc/Info_framework.plist rename to utils/misc/gmsh_framework.plist diff --git a/utils/misc/gmsh_framework.sh b/utils/misc/gmsh_framework.sh new file mode 100755 index 0000000000000000000000000000000000000000..3fb826666dbced0240752349dfb6fe9bd03f0712 --- /dev/null +++ b/utils/misc/gmsh_framework.sh @@ -0,0 +1,17 @@ +### FIXME TODO ### + +# rm -rf Gmsh.framework +# mkdir -p Gmsh.framework +# mkdir -p Gmsh.framework/Versions +# mkdir -p Gmsh.framework/Versions/A +# mkdir -p Gmsh.framework/Versions/A/Headers +# mkdir -p Gmsh.framework/Versions/A/Resources +# cp libGmshLib.a Gmsh.framework/Versions/A/Gmsh +# cp ${GMSH_API} Gmsh.framework/Versions/A/Headers/ +# sed -e "s/GMSH_VERSION/${GMSH_VERSION}/g" utils/misc/Info_framework.plist\ +# > Gmsh.framework/Versions/A/Resources/Info.plist +# cd Gmsh.framework/Versions && ln -s A Current +# cd Gmsh.framework && ln -s Versions/Current/Gmsh +# cd Gmsh.framework && ln -s Versions/Current/Headers +# cd Gmsh.framework && ln -s Versions/Current/Resources +