diff --git a/.gitignore b/.gitignore index 91a4b99..f650625 100644 --- a/.gitignore +++ b/.gitignore @@ -8,3 +8,4 @@ .rover .docker_home/ .ros/ +__pycache__/ diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 1f9873c..bc7ec0c 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -52,7 +52,7 @@ the commit messages in the branch (recommended, not checked). | `revert` | revert of a previous change | - **scope** (optional) — the part of the project, lower case: a package without the `kpi_rover_` prefix - (`hw`, `description`, `bringup`, `localization`, `slam`), `nav`, `sim`, `docker`, `rover` (rover.sh), + (`hw`, `description`, `bringup`, `localization`, `slam`, `worlds`), `nav`, `sim`, `docker`, `rover` (rover.sh), `rpi-setup`, or the name of an application in `src/apps/`. - **description** — in English, imperative mood, lower case first letter, no period at the end: "add", not "added" or "adds". diff --git a/README.md b/README.md index 78cf3a6..87ba8f4 100644 --- a/README.md +++ b/README.md @@ -61,6 +61,7 @@ maintainers and runs on every robot after boot. | `kpi_rover_localization` | EKF (`robot_localization`): fuses wheel odometry and IMU | | `kpi_rover_slam` | `slam_toolbox`: builds the map from the lidar and localizes the robot on it | | `kpi_rover_bringup` | launch files and configs: `robot.launch.py` (real robot), `sim.launch.py` (Gazebo), Nav2, lidar, joystick | +| `kpi_rover_worlds` | Gazebo worlds for the simulation, configurable ones with their arguments, start points and previews. Not installed on the robot | **`src/apps/`** is for applications. An application does not drive motors or read sensors directly: it uses the platform topics, actions and services (`/cmd_vel`, Nav2, `/scan`, `/map`, ...), so the same application @@ -159,6 +160,21 @@ source install/setup.bash ros2 launch kpi_rover_bringup sim.launch.py ``` +**Worlds.** `world:=` takes a world of `kpi_rover_worlds` by name (`room` by default) or a path to a world file, +`start:=` puts the robot at one of the start points of the world instead of `x_pose`/`y_pose`. A configurable world +(`garden`, `maze`, `overpass`, `test_square`) given by name has its default arguments; with other ones, build it first: +```bash +python3 -m kpi_rover_worlds.world_info # worlds, their arguments and defaults +ros2 launch kpi_rover_bringup sim.launch.py world:=garden start:=road_a +ros2 launch kpi_rover_bringup sim.launch.py start:=a \ + world:=$(python3 -m kpi_rover_worlds.world_info --build test_square floor:=asphalt marking:=yellow) +``` +A world is a directory `worlds//` of `kpi_rover_worlds`: the world file, its manifest `.yaml` and +its previews. +`sim.launch.py` is `world.launch.py` (Gazebo with the world) and `sim_robot.launch.py` (the simulated robot with the +same localization, SLAM and navigation as the real one) together, with RViz and joystick teleop; tools such as the +GUI start them one by one. + Keyboard control (second zellij pane): ```bash ros2 run teleop_twist_keyboard teleop_twist_keyboard \ diff --git a/docker/Dockerfile b/docker/Dockerfile index c293b37..a3242df 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -71,9 +71,12 @@ CMD ["zellij"] FROM ros:${ROS_DISTRO}-ros-base AS build-deps ARG SIM_ONLY_KEYS COPY --from=manifests /src /tmp/src -RUN apt-get update && \ +# kpi_rover_worlds is built, but its tools (world generation, previews) are not run on the robot: +# their dependencies (numpy, scipy, PIL, Gazebo) are not installed. +RUN rm -rf /tmp/src/platform/kpi_rover_worlds && \ + apt-get update && \ rosdep update --rosdistro "$ROS_DISTRO" && \ - rosdep install --from-paths /tmp/src --ignore-src -y --skip-keys "$SIM_ONLY_KEYS" && \ + rosdep install --from-paths /tmp/src --ignore-src -y --skip-keys "$SIM_ONLY_KEYS kpi_rover_worlds" && \ rm -rf /var/lib/apt/lists/* /tmp/src diff --git a/src/platform/kpi_rover_bringup/CMakeLists.txt b/src/platform/kpi_rover_bringup/CMakeLists.txt index cd8bf6e..b009743 100644 --- a/src/platform/kpi_rover_bringup/CMakeLists.txt +++ b/src/platform/kpi_rover_bringup/CMakeLists.txt @@ -16,7 +16,7 @@ endif() find_package(ament_cmake REQUIRED) install( - DIRECTORY launch config rviz worlds + DIRECTORY launch config rviz DESTINATION share/${PROJECT_NAME} ) diff --git a/src/platform/kpi_rover_bringup/launch/sim.launch.py b/src/platform/kpi_rover_bringup/launch/sim.launch.py index 2c8fe61..68175ce 100644 --- a/src/platform/kpi_rover_bringup/launch/sim.launch.py +++ b/src/platform/kpi_rover_bringup/launch/sim.launch.py @@ -1,168 +1,52 @@ from launch import LaunchDescription -from launch.actions import ( - AppendEnvironmentVariable, DeclareLaunchArgument, IncludeLaunchDescription, RegisterEventHandler) +from launch.actions import DeclareLaunchArgument, IncludeLaunchDescription, OpaqueFunction, SetLaunchConfiguration from launch.conditions import IfCondition -from launch.event_handlers import OnProcessExit from launch.launch_description_sources import PythonLaunchDescriptionSource -from launch.substitutions import LaunchConfiguration, PathJoinSubstitution, PythonExpression -from launch_ros.actions import Node +from launch.substitutions import LaunchConfiguration, PathJoinSubstitution from launch_ros.substitutions import FindPackageShare +from kpi_rover_worlds import world_info + + +def start_pose(context): + cfg = context.launch_configurations + if not cfg['start']: + return [] + world = world_info.build(cfg['world'], {}) + x, y, z, yaw = world_info.start_pose(world, cfg['start']) + # 3 cm above the start point, so the robot drops onto uneven ground instead of into it + pose = zip(('x_pose', 'y_pose', 'z_pose', 'yaw_pose'), (x, y, z + 0.03, yaw)) + return [SetLaunchConfiguration('world', world)] + [SetLaunchConfiguration(k, str(v)) for k, v in pose] + def generate_launch_description(): pkg_bringup = FindPackageShare('kpi_rover_bringup') - pkg_description = FindPackageShare('kpi_rover_description') - pkg_ros_gz_sim = FindPackageShare('ros_gz_sim') - world = LaunchConfiguration('world') - wheel_radius = LaunchConfiguration('wheel_radius') - x_pose = LaunchConfiguration('x_pose') - y_pose = LaunchConfiguration('y_pose') - z_pose = LaunchConfiguration('z_pose') - gui = LaunchConfiguration('gui') rviz = LaunchConfiguration('rviz') declared_arguments = [ DeclareLaunchArgument( - 'world', - default_value=PathJoinSubstitution([pkg_bringup, 'worlds', 'room.world']), - description='Path to the Gazebo world file'), - DeclareLaunchArgument( - 'wheel_radius', default_value='0.034', - description='Wheel radius in meters'), - DeclareLaunchArgument('x_pose', default_value='0.0', description='Spawn X position'), - DeclareLaunchArgument('y_pose', default_value='0.0', description='Spawn Y position'), - DeclareLaunchArgument('z_pose', default_value='0.1', description='Spawn Z position'), + 'world', default_value='room', + description='World of kpi_rover_worlds (python3 -m kpi_rover_worlds.world_info) or path to a world file'), DeclareLaunchArgument( - 'gui', default_value='true', - description='Start the Gazebo GUI (otherwise headless server only)'), + 'start', default_value='', + description='Start point of the world to spawn the robot at, instead of the pose'), DeclareLaunchArgument( 'rviz', default_value='true', description='Start RViz2'), - DeclareLaunchArgument( - 'slam', default_value='true', - description='Start slam_toolbox'), - DeclareLaunchArgument( - 'nav', default_value='true', - description='Start Nav2 (handles the RViz 2D Goal Pose)'), DeclareLaunchArgument( 'teleop', default_value='true', description='Start joystick teleop'), ] - # Lets Gazebo resolve model://kpi_rover_description/meshes/... - gz_resource_path = AppendEnvironmentVariable( - 'GZ_SIM_RESOURCE_PATH', - PathJoinSubstitution([pkg_description, '..']), - ) - - # '-s' runs the server only (headless) - gazebo = IncludeLaunchDescription( - PythonLaunchDescriptionSource( - PathJoinSubstitution([pkg_ros_gz_sim, 'launch', 'gz_sim.launch.py'])), - launch_arguments={ - 'gz_args': [ - '-r -v3 ', - PythonExpression(["'' if '", gui, "' == 'true' else '-s '"]), - world, - ], - 'on_exit_shutdown': 'true', - }.items(), - ) - - # robot_state_publisher with the sim_mode URDF (gz_ros2_control plugin) - description = IncludeLaunchDescription( - PythonLaunchDescriptionSource( - PathJoinSubstitution([pkg_description, 'launch', 'description.launch.py'])), - launch_arguments={ - 'use_sim_time': 'true', - 'sim_mode': 'true', - 'wheel_radius': wheel_radius, - }.items(), - ) - - spawn_robot = Node( - package='ros_gz_sim', - executable='create', - arguments=[ - '-name', 'kpi_rover', - '-topic', 'robot_description', - '-x', x_pose, - '-y', y_pose, - '-z', z_pose, - ], - output='screen', - ) - - gz_bridge = Node( - package='ros_gz_bridge', - executable='parameter_bridge', - parameters=[{ - 'config_file': PathJoinSubstitution([pkg_bringup, 'config', 'gz_bridge.yaml']), - }], - output='screen', - ) - - joint_state_broadcaster = Node( - package='controller_manager', - executable='spawner', - arguments=['joint_state_broadcaster', '--switch-timeout', '60'], - output='screen', - ) - - diff_drive_controller = Node( - package='controller_manager', - executable='spawner', - arguments=[ - 'diff_drive_controller', - '--switch-timeout', '60', - '--controller-ros-args', '-r /diff_drive_controller/odom:=/odom', - ], - output='screen', - ) - - # The controller manager only runs once the robot model is in the world - spawn_controllers = RegisterEventHandler(OnProcessExit( - target_action=spawn_robot, - on_exit=[joint_state_broadcaster, diff_drive_controller], - )) - - # Turns unstamped /cmd_vel (Nav2, teleop_twist_keyboard) into the stamped input of the controller - twist_stamper = Node( - package='twist_stamper', - executable='twist_stamper', - parameters=[{'use_sim_time': True, 'frame_id': 'base_link'}], - remappings=[ - ('cmd_vel_in', '/cmd_vel'), - ('cmd_vel_out', '/diff_drive_controller/cmd_vel'), - ], - output='screen', - ) - - localization = IncludeLaunchDescription( + world = IncludeLaunchDescription( PythonLaunchDescriptionSource( - PathJoinSubstitution([ - FindPackageShare('kpi_rover_localization'), 'launch', 'localization.launch.py'])), - launch_arguments={'use_sim_time': 'true'}.items(), - ) - - slam = IncludeLaunchDescription( - PythonLaunchDescriptionSource( - PathJoinSubstitution([ - FindPackageShare('kpi_rover_slam'), 'launch', 'slam.launch.py'])), - launch_arguments={'use_sim_time': 'true'}.items(), - condition=IfCondition(LaunchConfiguration('slam')), + PathJoinSubstitution([pkg_bringup, 'launch', 'world.launch.py'])), ) - navigation = IncludeLaunchDescription( + robot = IncludeLaunchDescription( PythonLaunchDescriptionSource( - PathJoinSubstitution([ - FindPackageShare('nav2_bringup'), 'launch', 'navigation_launch.py'])), - launch_arguments={ - 'use_sim_time': 'true', - 'params_file': PathJoinSubstitution([pkg_bringup, 'config', 'navigation.yaml']), - }.items(), - condition=IfCondition(LaunchConfiguration('nav')), + PathJoinSubstitution([pkg_bringup, 'launch', 'sim_robot.launch.py'])), ) teleop = IncludeLaunchDescription( @@ -180,16 +64,9 @@ def generate_launch_description(): ) return LaunchDescription(declared_arguments + [ - gz_resource_path, - gazebo, - description, - spawn_robot, - gz_bridge, - spawn_controllers, - twist_stamper, - localization, - slam, - navigation, + OpaqueFunction(function=start_pose), + world, + robot, teleop, rviz_launch, ]) diff --git a/src/platform/kpi_rover_bringup/launch/sim_robot.launch.py b/src/platform/kpi_rover_bringup/launch/sim_robot.launch.py new file mode 100644 index 0000000..03c484c --- /dev/null +++ b/src/platform/kpi_rover_bringup/launch/sim_robot.launch.py @@ -0,0 +1,142 @@ +from launch import LaunchDescription +from launch.actions import DeclareLaunchArgument, IncludeLaunchDescription, RegisterEventHandler +from launch.conditions import IfCondition +from launch.event_handlers import OnProcessExit +from launch.launch_description_sources import PythonLaunchDescriptionSource +from launch.substitutions import LaunchConfiguration, PathJoinSubstitution +from launch_ros.actions import Node +from launch_ros.substitutions import FindPackageShare + + +def generate_launch_description(): + pkg_bringup = FindPackageShare('kpi_rover_bringup') + pkg_description = FindPackageShare('kpi_rover_description') + + wheel_radius = LaunchConfiguration('wheel_radius') + x_pose = LaunchConfiguration('x_pose') + y_pose = LaunchConfiguration('y_pose') + z_pose = LaunchConfiguration('z_pose') + yaw_pose = LaunchConfiguration('yaw_pose') + + declared_arguments = [ + DeclareLaunchArgument( + 'wheel_radius', default_value='0.034', + description='Wheel radius in meters'), + DeclareLaunchArgument('x_pose', default_value='0.0', description='Spawn X position'), + DeclareLaunchArgument('y_pose', default_value='0.0', description='Spawn Y position'), + DeclareLaunchArgument('z_pose', default_value='0.1', description='Spawn Z position'), + DeclareLaunchArgument('yaw_pose', default_value='0.0', description='Spawn yaw, rad'), + DeclareLaunchArgument( + 'slam', default_value='true', + description='Start slam_toolbox'), + DeclareLaunchArgument( + 'nav', default_value='true', + description='Start Nav2 (handles the RViz 2D Goal Pose)'), + ] + + # robot_state_publisher with the sim_mode URDF (gz_ros2_control plugin) + description = IncludeLaunchDescription( + PythonLaunchDescriptionSource( + PathJoinSubstitution([pkg_description, 'launch', 'description.launch.py'])), + launch_arguments={ + 'use_sim_time': 'true', + 'sim_mode': 'true', + 'wheel_radius': wheel_radius, + }.items(), + ) + + spawn_robot = Node( + package='ros_gz_sim', + executable='create', + arguments=[ + '-name', 'kpi_rover', + '-topic', 'robot_description', + '-x', x_pose, + '-y', y_pose, + '-z', z_pose, + '-Y', yaw_pose, + ], + output='screen', + ) + + gz_bridge = Node( + package='ros_gz_bridge', + executable='parameter_bridge', + parameters=[{ + 'config_file': PathJoinSubstitution([pkg_bringup, 'config', 'gz_bridge.yaml']), + }], + output='screen', + ) + + joint_state_broadcaster = Node( + package='controller_manager', + executable='spawner', + arguments=['joint_state_broadcaster', '--switch-timeout', '60'], + output='screen', + ) + + diff_drive_controller = Node( + package='controller_manager', + executable='spawner', + arguments=[ + 'diff_drive_controller', + '--switch-timeout', '60', + '--controller-ros-args', '-r /diff_drive_controller/odom:=/odom', + ], + output='screen', + ) + + # The controller manager only runs once the robot model is in the world + spawn_controllers = RegisterEventHandler(OnProcessExit( + target_action=spawn_robot, + on_exit=[joint_state_broadcaster, diff_drive_controller], + )) + + # Turns unstamped /cmd_vel (Nav2, teleop_twist_keyboard) into the stamped input of the controller + twist_stamper = Node( + package='twist_stamper', + executable='twist_stamper', + parameters=[{'use_sim_time': True, 'frame_id': 'base_link'}], + remappings=[ + ('cmd_vel_in', '/cmd_vel'), + ('cmd_vel_out', '/diff_drive_controller/cmd_vel'), + ], + output='screen', + ) + + localization = IncludeLaunchDescription( + PythonLaunchDescriptionSource( + PathJoinSubstitution([ + FindPackageShare('kpi_rover_localization'), 'launch', 'localization.launch.py'])), + launch_arguments={'use_sim_time': 'true'}.items(), + ) + + slam = IncludeLaunchDescription( + PythonLaunchDescriptionSource( + PathJoinSubstitution([ + FindPackageShare('kpi_rover_slam'), 'launch', 'slam.launch.py'])), + launch_arguments={'use_sim_time': 'true'}.items(), + condition=IfCondition(LaunchConfiguration('slam')), + ) + + navigation = IncludeLaunchDescription( + PythonLaunchDescriptionSource( + PathJoinSubstitution([ + FindPackageShare('nav2_bringup'), 'launch', 'navigation_launch.py'])), + launch_arguments={ + 'use_sim_time': 'true', + 'params_file': PathJoinSubstitution([pkg_bringup, 'config', 'navigation.yaml']), + }.items(), + condition=IfCondition(LaunchConfiguration('nav')), + ) + + return LaunchDescription(declared_arguments + [ + description, + spawn_robot, + gz_bridge, + spawn_controllers, + twist_stamper, + localization, + slam, + navigation, + ]) diff --git a/src/platform/kpi_rover_bringup/launch/world.launch.py b/src/platform/kpi_rover_bringup/launch/world.launch.py new file mode 100644 index 0000000..ebcaaf1 --- /dev/null +++ b/src/platform/kpi_rover_bringup/launch/world.launch.py @@ -0,0 +1,55 @@ +from launch import LaunchDescription +from launch.actions import ( + AppendEnvironmentVariable, DeclareLaunchArgument, IncludeLaunchDescription, OpaqueFunction, SetLaunchConfiguration) +from launch.launch_description_sources import PythonLaunchDescriptionSource +from launch.substitutions import LaunchConfiguration, PathJoinSubstitution, PythonExpression +from launch_ros.substitutions import FindPackageShare + +from kpi_rover_worlds import world_info + + +def world_file(context): + return [SetLaunchConfiguration('world', world_info.build(context.launch_configurations['world'], {}))] + + +def generate_launch_description(): + pkg_description = FindPackageShare('kpi_rover_description') + pkg_ros_gz_sim = FindPackageShare('ros_gz_sim') + + world = LaunchConfiguration('world') + gui = LaunchConfiguration('gui') + + declared_arguments = [ + DeclareLaunchArgument( + 'world', default_value='room', + description='World of kpi_rover_worlds (python3 -m kpi_rover_worlds.world_info) or path to a world file'), + DeclareLaunchArgument( + 'gui', default_value='true', + description='Start the Gazebo GUI (otherwise headless server only)'), + ] + + # Lets Gazebo resolve model://kpi_rover_description/meshes/... + gz_resource_path = AppendEnvironmentVariable( + 'GZ_SIM_RESOURCE_PATH', + PathJoinSubstitution([pkg_description, '..']), + ) + + # '-s' runs the server only (headless) + gazebo = IncludeLaunchDescription( + PythonLaunchDescriptionSource( + PathJoinSubstitution([pkg_ros_gz_sim, 'launch', 'gz_sim.launch.py'])), + launch_arguments={ + 'gz_args': [ + '-r -v3 ', + PythonExpression(["'' if '", gui, "' == 'true' else '-s '"]), + world, + ], + 'on_exit_shutdown': 'true', + }.items(), + ) + + return LaunchDescription(declared_arguments + [ + gz_resource_path, + OpaqueFunction(function=world_file), + gazebo, + ]) diff --git a/src/platform/kpi_rover_bringup/package.xml b/src/platform/kpi_rover_bringup/package.xml index 5ae7aee..2570034 100644 --- a/src/platform/kpi_rover_bringup/package.xml +++ b/src/platform/kpi_rover_bringup/package.xml @@ -14,6 +14,7 @@ kpi_rover_hw kpi_rover_description + kpi_rover_worlds ros2_control xacro robot_state_publisher diff --git a/src/platform/kpi_rover_description/urdf/camera.xacro b/src/platform/kpi_rover_description/urdf/camera.xacro index 4bcf874..37be21a 100644 --- a/src/platform/kpi_rover_description/urdf/camera.xacro +++ b/src/platform/kpi_rover_description/urdf/camera.xacro @@ -40,6 +40,8 @@ camera/camera_info 1.02974 + + 4294967293 1920 1080 diff --git a/src/platform/kpi_rover_description/urdf/lidar.xacro b/src/platform/kpi_rover_description/urdf/lidar.xacro index 957c077..c1c4be7 100644 --- a/src/platform/kpi_rover_description/urdf/lidar.xacro +++ b/src/platform/kpi_rover_description/urdf/lidar.xacro @@ -65,6 +65,12 @@ 0.01 laser_frame + + 4294967289 1 true diff --git a/src/platform/kpi_rover_worlds/CMakeLists.txt b/src/platform/kpi_rover_worlds/CMakeLists.txt new file mode 100644 index 0000000..d63039f --- /dev/null +++ b/src/platform/kpi_rover_worlds/CMakeLists.txt @@ -0,0 +1,28 @@ +cmake_minimum_required(VERSION 3.8) +project(kpi_rover_worlds) + +find_package(ament_cmake REQUIRED) +find_package(ament_cmake_python REQUIRED) + +# Python module kpi_rover_worlds: world_info and the helpers of the world generators +ament_python_install_package(${PROJECT_NAME} PACKAGE_DIR common/python) + +install(DIRECTORY + worlds + assets + DESTINATION share/${PROJECT_NAME} + PATTERN __pycache__ EXCLUDE +) +install(DIRECTORY + common/config + DESTINATION share/${PROJECT_NAME}/common +) + +# ros2 run kpi_rover_worlds render_previews.py | spawn_object.py +install(PROGRAMS + tools/render_previews.py + tools/spawn_object.py + DESTINATION lib/${PROJECT_NAME} +) + +ament_package() diff --git a/src/platform/kpi_rover_worlds/assets/meshes/flat_board.obj b/src/platform/kpi_rover_worlds/assets/meshes/flat_board.obj new file mode 100644 index 0000000..2f4551d --- /dev/null +++ b/src/platform/kpi_rover_worlds/assets/meshes/flat_board.obj @@ -0,0 +1,61 @@ +# Flat board, generated by gen_media.py +v -0.25000 -0.04500 0.01800 +v 0.25000 -0.04500 0.01800 +v 0.25000 0.04500 0.01800 +v -0.25000 0.04500 0.01800 +vt -0.50000 -0.09000 +vt 0.50000 -0.09000 +vt 0.50000 0.09000 +vt -0.50000 0.09000 +vn 0.0 0.0 1.0 +v -0.25000 0.04500 0.00000 +v 0.25000 0.04500 0.00000 +v 0.25000 -0.04500 0.00000 +v -0.25000 -0.04500 0.00000 +vt -0.50000 0.09000 +vt 0.50000 0.09000 +vt 0.50000 -0.09000 +vt -0.50000 -0.09000 +vn 0.0 0.0 -1.0 +v 0.25000 -0.04500 0.00000 +v 0.25000 0.04500 0.00000 +v 0.25000 0.04500 0.01800 +v 0.25000 -0.04500 0.01800 +vt -0.09000 0.00000 +vt 0.09000 0.00000 +vt 0.09000 0.03600 +vt -0.09000 0.03600 +vn 1.0 0.0 0.0 +v -0.25000 0.04500 0.00000 +v -0.25000 -0.04500 0.00000 +v -0.25000 -0.04500 0.01800 +v -0.25000 0.04500 0.01800 +vt 0.09000 0.00000 +vt -0.09000 0.00000 +vt -0.09000 0.03600 +vt 0.09000 0.03600 +vn -1.0 0.0 0.0 +v 0.25000 0.04500 0.00000 +v -0.25000 0.04500 0.00000 +v -0.25000 0.04500 0.01800 +v 0.25000 0.04500 0.01800 +vt 0.50000 0.00000 +vt -0.50000 0.00000 +vt -0.50000 0.03600 +vt 0.50000 0.03600 +vn 0.0 1.0 0.0 +v -0.25000 -0.04500 0.00000 +v 0.25000 -0.04500 0.00000 +v 0.25000 -0.04500 0.01800 +v -0.25000 -0.04500 0.01800 +vt -0.50000 0.00000 +vt 0.50000 0.00000 +vt 0.50000 0.03600 +vt -0.50000 0.03600 +vn 0.0 -1.0 0.0 +f 1/1/1 2/2/1 3/3/1 4/4/1 +f 5/5/2 6/6/2 7/7/2 8/8/2 +f 9/9/3 10/10/3 11/11/3 12/12/3 +f 13/13/4 14/14/4 15/15/4 16/16/4 +f 17/17/5 18/18/5 19/19/5 20/20/5 +f 21/21/6 22/22/6 23/23/6 24/24/6 diff --git a/src/platform/kpi_rover_worlds/assets/meshes/miter_end_left.obj b/src/platform/kpi_rover_worlds/assets/meshes/miter_end_left.obj new file mode 100644 index 0000000..de3a4bf --- /dev/null +++ b/src/platform/kpi_rover_worlds/assets/meshes/miter_end_left.obj @@ -0,0 +1,9 @@ +# Marking line miter, generated by gen_media.py +v 0 -0.5 1 +v 1 -0.5 1 +v 0 0.5 1 +vt 1.0 0.0 +vt 1.0 0.25 +vt 0.0 0.0 +vn 0 0 1 +f 1/1/1 2/2/1 3/3/1 diff --git a/src/platform/kpi_rover_worlds/assets/meshes/miter_end_right.obj b/src/platform/kpi_rover_worlds/assets/meshes/miter_end_right.obj new file mode 100644 index 0000000..b4e7e1e --- /dev/null +++ b/src/platform/kpi_rover_worlds/assets/meshes/miter_end_right.obj @@ -0,0 +1,9 @@ +# Marking line miter, generated by gen_media.py +v 0 -0.5 1 +v 1 0.5 1 +v 0 0.5 1 +vt 1.0 0.0 +vt 0.0 0.25 +vt 0.0 0.0 +vn 0 0 1 +f 1/1/1 2/2/1 3/3/1 diff --git a/src/platform/kpi_rover_worlds/assets/meshes/miter_start_left.obj b/src/platform/kpi_rover_worlds/assets/meshes/miter_start_left.obj new file mode 100644 index 0000000..375b2a4 --- /dev/null +++ b/src/platform/kpi_rover_worlds/assets/meshes/miter_start_left.obj @@ -0,0 +1,9 @@ +# Marking line miter, generated by gen_media.py +v -1 -0.5 1 +v 0 -0.5 1 +v 0 0.5 1 +vt 1.0 0.75 +vt 1.0 1.0 +vt 0.0 1.0 +vn 0 0 1 +f 1/1/1 2/2/1 3/3/1 diff --git a/src/platform/kpi_rover_worlds/assets/meshes/miter_start_right.obj b/src/platform/kpi_rover_worlds/assets/meshes/miter_start_right.obj new file mode 100644 index 0000000..ea816b9 --- /dev/null +++ b/src/platform/kpi_rover_worlds/assets/meshes/miter_start_right.obj @@ -0,0 +1,9 @@ +# Marking line miter, generated by gen_media.py +v -1 0.5 1 +v 0 -0.5 1 +v 0 0.5 1 +vt 0.0 0.75 +vt 1.0 1.0 +vt 0.0 1.0 +vn 0 0 1 +f 1/1/1 2/2/1 3/3/1 diff --git a/src/platform/kpi_rover_worlds/assets/meshes/overpass_w0.4_h0.45_d1.4_t0.05_s12.obj b/src/platform/kpi_rover_worlds/assets/meshes/overpass_w0.4_h0.45_d1.4_t0.05_s12.obj new file mode 100644 index 0000000..9faf264 --- /dev/null +++ b/src/platform/kpi_rover_worlds/assets/meshes/overpass_w0.4_h0.45_d1.4_t0.05_s12.obj @@ -0,0 +1,5071 @@ +# Overpass body, generated by gen_media.py +v -4.025507 -0.200000 0.000000 +v -3.956226 -0.200000 0.000482 +v -3.956226 0.200000 0.000482 +v -4.025507 0.200000 0.000000 +v -4.025507 -0.200000 0.000000 +v -3.956226 -0.200000 0.000000 +v -3.956226 -0.200000 0.000482 +v -4.025507 -0.200000 0.000000 +v -4.025507 0.200000 0.000000 +v -4.025507 0.200000 0.000000 +v -3.956226 0.200000 0.000482 +v -3.956226 0.200000 0.000000 +v -4.025507 -0.200000 0.000000 +v -4.025507 0.200000 0.000000 +v -3.956226 0.200000 0.000000 +v -3.956226 -0.200000 0.000000 +v -3.956226 -0.200000 0.000482 +v -3.886944 -0.200000 0.001925 +v -3.886944 0.200000 0.001925 +v -3.956226 0.200000 0.000482 +v -3.956226 -0.200000 0.000000 +v -3.886944 -0.200000 0.000000 +v -3.886944 -0.200000 0.001925 +v -3.956226 -0.200000 0.000482 +v -3.956226 0.200000 0.000000 +v -3.956226 0.200000 0.000482 +v -3.886944 0.200000 0.001925 +v -3.886944 0.200000 0.000000 +v -3.956226 -0.200000 0.000000 +v -3.956226 0.200000 0.000000 +v -3.886944 0.200000 0.000000 +v -3.886944 -0.200000 0.000000 +v -3.886944 -0.200000 0.001925 +v -3.817663 -0.200000 0.004323 +v -3.817663 0.200000 0.004323 +v -3.886944 0.200000 0.001925 +v -3.886944 -0.200000 0.000000 +v -3.817663 -0.200000 0.000000 +v -3.817663 -0.200000 0.004323 +v -3.886944 -0.200000 0.001925 +v -3.886944 0.200000 0.000000 +v -3.886944 0.200000 0.001925 +v -3.817663 0.200000 0.004323 +v -3.817663 0.200000 0.000000 +v -3.886944 -0.200000 0.000000 +v -3.886944 0.200000 0.000000 +v -3.817663 0.200000 0.000000 +v -3.817663 -0.200000 0.000000 +v -3.817663 -0.200000 0.004323 +v -3.748381 -0.200000 0.007667 +v -3.748381 0.200000 0.007667 +v -3.817663 0.200000 0.004323 +v -3.817663 -0.200000 0.000000 +v -3.748381 -0.200000 0.000000 +v -3.748381 -0.200000 0.007667 +v -3.817663 -0.200000 0.004323 +v -3.817663 0.200000 0.000000 +v -3.817663 0.200000 0.004323 +v -3.748381 0.200000 0.007667 +v -3.748381 0.200000 0.000000 +v -3.817663 -0.200000 0.000000 +v -3.817663 0.200000 0.000000 +v -3.748381 0.200000 0.000000 +v -3.748381 -0.200000 0.000000 +v -3.748381 -0.200000 0.007667 +v -3.679100 -0.200000 0.011941 +v -3.679100 0.200000 0.011941 +v -3.748381 0.200000 0.007667 +v -3.748381 -0.200000 0.000000 +v -3.679100 -0.200000 0.000000 +v -3.679100 -0.200000 0.011941 +v -3.748381 -0.200000 0.007667 +v -3.748381 0.200000 0.000000 +v -3.748381 0.200000 0.007667 +v -3.679100 0.200000 0.011941 +v -3.679100 0.200000 0.000000 +v -3.748381 -0.200000 0.000000 +v -3.748381 0.200000 0.000000 +v -3.679100 0.200000 0.000000 +v -3.679100 -0.200000 0.000000 +v -3.679100 -0.200000 0.011941 +v -3.609819 -0.200000 0.017127 +v -3.609819 0.200000 0.017127 +v -3.679100 0.200000 0.011941 +v -3.679100 -0.200000 0.000000 +v -3.609819 -0.200000 0.000000 +v -3.609819 -0.200000 0.017127 +v -3.679100 -0.200000 0.011941 +v -3.679100 0.200000 0.000000 +v -3.679100 0.200000 0.011941 +v -3.609819 0.200000 0.017127 +v -3.609819 0.200000 0.000000 +v -3.679100 -0.200000 0.000000 +v -3.679100 0.200000 0.000000 +v -3.609819 0.200000 0.000000 +v -3.609819 -0.200000 0.000000 +v -3.609819 -0.200000 0.017127 +v -3.540537 -0.200000 0.023204 +v -3.540537 0.200000 0.023204 +v -3.609819 0.200000 0.017127 +v -3.609819 -0.200000 0.000000 +v -3.540537 -0.200000 0.000000 +v -3.540537 -0.200000 0.023204 +v -3.609819 -0.200000 0.017127 +v -3.609819 0.200000 0.000000 +v -3.609819 0.200000 0.017127 +v -3.540537 0.200000 0.023204 +v -3.540537 0.200000 0.000000 +v -3.609819 -0.200000 0.000000 +v -3.609819 0.200000 0.000000 +v -3.540537 0.200000 0.000000 +v -3.540537 -0.200000 0.000000 +v -3.540537 -0.200000 0.023204 +v -3.471256 -0.200000 0.030144 +v -3.471256 0.200000 0.030144 +v -3.540537 0.200000 0.023204 +v -3.540537 -0.200000 0.000000 +v -3.471256 -0.200000 0.000000 +v -3.471256 -0.200000 0.030144 +v -3.540537 -0.200000 0.023204 +v -3.540537 0.200000 0.000000 +v -3.540537 0.200000 0.023204 +v -3.471256 0.200000 0.030144 +v -3.471256 0.200000 0.000000 +v -3.540537 -0.200000 0.000000 +v -3.540537 0.200000 0.000000 +v -3.471256 0.200000 0.000000 +v -3.471256 -0.200000 0.000000 +v -3.471256 -0.200000 0.030144 +v -3.401974 -0.200000 0.037919 +v -3.401974 0.200000 0.037919 +v -3.471256 0.200000 0.030144 +v -3.471256 -0.200000 0.000000 +v -3.401974 -0.200000 0.000000 +v -3.401974 -0.200000 0.037919 +v -3.471256 -0.200000 0.030144 +v -3.471256 0.200000 0.000000 +v -3.471256 0.200000 0.030144 +v -3.401974 0.200000 0.037919 +v -3.401974 0.200000 0.000000 +v -3.471256 -0.200000 0.000000 +v -3.471256 0.200000 0.000000 +v -3.401974 0.200000 0.000000 +v -3.401974 -0.200000 0.000000 +v -3.401974 -0.200000 0.037919 +v -3.332693 -0.200000 0.046495 +v -3.332693 0.200000 0.046495 +v -3.401974 0.200000 0.037919 +v -3.401974 -0.200000 0.000000 +v -3.332693 -0.200000 0.000000 +v -3.332693 -0.200000 0.046495 +v -3.401974 -0.200000 0.037919 +v -3.401974 0.200000 0.000000 +v -3.401974 0.200000 0.037919 +v -3.332693 0.200000 0.046495 +v -3.332693 0.200000 0.000000 +v -3.401974 -0.200000 0.000000 +v -3.401974 0.200000 0.000000 +v -3.332693 0.200000 0.000000 +v -3.332693 -0.200000 0.000000 +v -3.332693 -0.200000 0.046495 +v -3.263412 -0.200000 0.055836 +v -3.263412 0.200000 0.055836 +v -3.332693 0.200000 0.046495 +v -3.332693 -0.200000 0.000000 +v -3.263412 -0.200000 0.000000 +v -3.263412 -0.200000 0.055836 +v -3.332693 -0.200000 0.046495 +v -3.332693 0.200000 0.000000 +v -3.332693 0.200000 0.046495 +v -3.263412 0.200000 0.055836 +v -3.263412 0.200000 0.000000 +v -3.332693 -0.200000 0.000000 +v -3.332693 0.200000 0.000000 +v -3.263412 0.200000 0.000000 +v -3.263412 -0.200000 0.000000 +v -3.263412 -0.200000 0.055836 +v -3.194130 -0.200000 0.065901 +v -3.194130 0.200000 0.065901 +v -3.263412 0.200000 0.055836 +v -3.263412 -0.200000 0.000000 +v -3.194130 -0.200000 0.000000 +v -3.194130 -0.200000 0.065901 +v -3.263412 -0.200000 0.055836 +v -3.263412 0.200000 0.000000 +v -3.263412 0.200000 0.055836 +v -3.194130 0.200000 0.065901 +v -3.194130 0.200000 0.000000 +v -3.263412 -0.200000 0.000000 +v -3.263412 0.200000 0.000000 +v -3.194130 0.200000 0.000000 +v -3.194130 -0.200000 0.000000 +v -3.194130 -0.200000 0.065901 +v -3.124849 -0.200000 0.076647 +v -3.124849 0.200000 0.076647 +v -3.194130 0.200000 0.065901 +v -3.194130 -0.200000 0.000000 +v -3.124849 -0.200000 0.000000 +v -3.124849 -0.200000 0.076647 +v -3.194130 -0.200000 0.065901 +v -3.194130 0.200000 0.000000 +v -3.194130 0.200000 0.065901 +v -3.124849 0.200000 0.076647 +v -3.124849 0.200000 0.000000 +v -3.194130 -0.200000 0.000000 +v -3.194130 0.200000 0.000000 +v -3.124849 0.200000 0.000000 +v -3.124849 -0.200000 0.000000 +v -3.124849 -0.200000 0.076647 +v -3.055568 -0.200000 0.088029 +v -3.055568 0.200000 0.088029 +v -3.124849 0.200000 0.076647 +v -3.124849 -0.200000 0.000000 +v -3.055568 -0.200000 0.000000 +v -3.055568 -0.200000 0.088029 +v -3.124849 -0.200000 0.076647 +v -3.124849 0.200000 0.000000 +v -3.124849 0.200000 0.076647 +v -3.055568 0.200000 0.088029 +v -3.055568 0.200000 0.000000 +v -3.124849 -0.200000 0.000000 +v -3.124849 0.200000 0.000000 +v -3.055568 0.200000 0.000000 +v -3.055568 -0.200000 0.000000 +v -3.055568 -0.200000 0.088029 +v -2.986286 -0.200000 0.099997 +v -2.986286 0.200000 0.099997 +v -3.055568 0.200000 0.088029 +v -3.055568 -0.200000 0.000000 +v -2.986286 -0.200000 0.000000 +v -2.986286 -0.200000 0.099997 +v -3.055568 -0.200000 0.088029 +v -3.055568 0.200000 0.000000 +v -3.055568 0.200000 0.088029 +v -2.986286 0.200000 0.099997 +v -2.986286 0.200000 0.000000 +v -3.055568 -0.200000 0.000000 +v -3.055568 0.200000 0.000000 +v -2.986286 0.200000 0.000000 +v -2.986286 -0.200000 0.000000 +v -2.986286 -0.200000 0.099997 +v -2.917005 -0.200000 0.112500 +v -2.917005 0.200000 0.112500 +v -2.986286 0.200000 0.099997 +v -2.986286 -0.200000 0.000000 +v -2.917005 -0.200000 0.000000 +v -2.917005 -0.200000 0.112500 +v -2.986286 -0.200000 0.099997 +v -2.986286 0.200000 0.000000 +v -2.986286 0.200000 0.099997 +v -2.917005 0.200000 0.112500 +v -2.917005 0.200000 0.000000 +v -2.986286 -0.200000 0.000000 +v -2.986286 0.200000 0.000000 +v -2.917005 0.200000 0.000000 +v -2.917005 -0.200000 0.000000 +v -2.917005 -0.200000 0.112500 +v -2.847723 -0.200000 0.125485 +v -2.847723 0.200000 0.125485 +v -2.917005 0.200000 0.112500 +v -2.917005 -0.200000 0.000000 +v -2.847723 -0.200000 0.000000 +v -2.847723 -0.200000 0.125485 +v -2.917005 -0.200000 0.112500 +v -2.917005 0.200000 0.000000 +v -2.917005 0.200000 0.112500 +v -2.847723 0.200000 0.125485 +v -2.847723 0.200000 0.000000 +v -2.917005 -0.200000 0.000000 +v -2.917005 0.200000 0.000000 +v -2.847723 0.200000 0.000000 +v -2.847723 -0.200000 0.000000 +v -2.847723 -0.200000 0.125485 +v -2.778442 -0.200000 0.138896 +v -2.778442 0.200000 0.138896 +v -2.847723 0.200000 0.125485 +v -2.847723 -0.200000 0.000000 +v -2.778442 -0.200000 0.000000 +v -2.778442 -0.200000 0.138896 +v -2.847723 -0.200000 0.125485 +v -2.847723 0.200000 0.000000 +v -2.847723 0.200000 0.125485 +v -2.778442 0.200000 0.138896 +v -2.778442 0.200000 0.000000 +v -2.847723 -0.200000 0.000000 +v -2.847723 0.200000 0.000000 +v -2.778442 0.200000 0.000000 +v -2.778442 -0.200000 0.000000 +v -2.778442 -0.200000 0.138896 +v -2.709161 -0.200000 0.152676 +v -2.709161 0.200000 0.152676 +v -2.778442 0.200000 0.138896 +v -2.778442 -0.200000 0.000000 +v -2.709161 -0.200000 0.000000 +v -2.709161 -0.200000 0.152676 +v -2.778442 -0.200000 0.138896 +v -2.778442 0.200000 0.000000 +v -2.778442 0.200000 0.138896 +v -2.709161 0.200000 0.152676 +v -2.709161 0.200000 0.000000 +v -2.778442 -0.200000 0.000000 +v -2.778442 0.200000 0.000000 +v -2.709161 0.200000 0.000000 +v -2.709161 -0.200000 0.000000 +v -2.709161 -0.200000 0.152676 +v -2.639879 -0.200000 0.166766 +v -2.639879 0.200000 0.166766 +v -2.709161 0.200000 0.152676 +v -2.709161 -0.200000 0.000000 +v -2.639879 -0.200000 0.000000 +v -2.639879 -0.200000 0.166766 +v -2.709161 -0.200000 0.152676 +v -2.709161 0.200000 0.000000 +v -2.709161 0.200000 0.152676 +v -2.639879 0.200000 0.166766 +v -2.639879 0.200000 0.000000 +v -2.709161 -0.200000 0.000000 +v -2.709161 0.200000 0.000000 +v -2.639879 0.200000 0.000000 +v -2.639879 -0.200000 0.000000 +v -2.639879 -0.200000 0.166766 +v -2.570598 -0.200000 0.181105 +v -2.570598 0.200000 0.181105 +v -2.639879 0.200000 0.166766 +v -2.639879 -0.200000 0.000000 +v -2.570598 -0.200000 0.000000 +v -2.570598 -0.200000 0.181105 +v -2.639879 -0.200000 0.166766 +v -2.639879 0.200000 0.000000 +v -2.639879 0.200000 0.166766 +v -2.570598 0.200000 0.181105 +v -2.570598 0.200000 0.000000 +v -2.639879 -0.200000 0.000000 +v -2.639879 0.200000 0.000000 +v -2.570598 0.200000 0.000000 +v -2.570598 -0.200000 0.000000 +v -2.570598 -0.200000 0.181105 +v -2.501316 -0.200000 0.195632 +v -2.501316 0.200000 0.195632 +v -2.570598 0.200000 0.181105 +v -2.570598 -0.200000 0.000000 +v -2.501316 -0.200000 0.000000 +v -2.501316 -0.200000 0.195632 +v -2.570598 -0.200000 0.181105 +v -2.570598 0.200000 0.000000 +v -2.570598 0.200000 0.181105 +v -2.501316 0.200000 0.195632 +v -2.501316 0.200000 0.000000 +v -2.570598 -0.200000 0.000000 +v -2.570598 0.200000 0.000000 +v -2.501316 0.200000 0.000000 +v -2.501316 -0.200000 0.000000 +v -2.501316 -0.200000 0.195632 +v -2.432035 -0.200000 0.210284 +v -2.432035 0.200000 0.210284 +v -2.501316 0.200000 0.195632 +v -2.501316 -0.200000 0.000000 +v -2.432035 -0.200000 0.000000 +v -2.432035 -0.200000 0.210284 +v -2.501316 -0.200000 0.195632 +v -2.501316 0.200000 0.000000 +v -2.501316 0.200000 0.195632 +v -2.432035 0.200000 0.210284 +v -2.432035 0.200000 0.000000 +v -2.501316 -0.200000 0.000000 +v -2.501316 0.200000 0.000000 +v -2.432035 0.200000 0.000000 +v -2.432035 -0.200000 0.000000 +v -2.432035 -0.200000 0.210284 +v -2.362754 -0.200000 0.225000 +v -2.362754 0.200000 0.225000 +v -2.432035 0.200000 0.210284 +v -2.432035 -0.200000 0.000000 +v -2.362754 -0.200000 0.000000 +v -2.362754 -0.200000 0.225000 +v -2.432035 -0.200000 0.210284 +v -2.432035 0.200000 0.000000 +v -2.432035 0.200000 0.210284 +v -2.362754 0.200000 0.225000 +v -2.362754 0.200000 0.000000 +v -2.432035 -0.200000 0.000000 +v -2.432035 0.200000 0.000000 +v -2.362754 0.200000 0.000000 +v -2.362754 -0.200000 0.000000 +v -2.362754 -0.200000 0.225000 +v -2.293472 -0.200000 0.239716 +v -2.293472 0.200000 0.239716 +v -2.362754 0.200000 0.225000 +v -2.362754 -0.200000 0.000000 +v -2.293472 -0.200000 0.000000 +v -2.293472 -0.200000 0.239716 +v -2.362754 -0.200000 0.225000 +v -2.362754 0.200000 0.000000 +v -2.362754 0.200000 0.225000 +v -2.293472 0.200000 0.239716 +v -2.293472 0.200000 0.000000 +v -2.362754 -0.200000 0.000000 +v -2.362754 0.200000 0.000000 +v -2.293472 0.200000 0.000000 +v -2.293472 -0.200000 0.000000 +v -2.293472 -0.200000 0.239716 +v -2.224191 -0.200000 0.254368 +v -2.224191 0.200000 0.254368 +v -2.293472 0.200000 0.239716 +v -2.293472 -0.200000 0.000000 +v -2.224191 -0.200000 0.000000 +v -2.224191 -0.200000 0.254368 +v -2.293472 -0.200000 0.239716 +v -2.293472 0.200000 0.000000 +v -2.293472 0.200000 0.239716 +v -2.224191 0.200000 0.254368 +v -2.224191 0.200000 0.000000 +v -2.293472 -0.200000 0.000000 +v -2.293472 0.200000 0.000000 +v -2.224191 0.200000 0.000000 +v -2.224191 -0.200000 0.000000 +v -2.224191 -0.200000 0.254368 +v -2.154909 -0.200000 0.268895 +v -2.154909 0.200000 0.268895 +v -2.224191 0.200000 0.254368 +v -2.224191 -0.200000 0.000000 +v -2.154909 -0.200000 0.000000 +v -2.154909 -0.200000 0.268895 +v -2.224191 -0.200000 0.254368 +v -2.224191 0.200000 0.000000 +v -2.224191 0.200000 0.254368 +v -2.154909 0.200000 0.268895 +v -2.154909 0.200000 0.000000 +v -2.224191 -0.200000 0.000000 +v -2.224191 0.200000 0.000000 +v -2.154909 0.200000 0.000000 +v -2.154909 -0.200000 0.000000 +v -2.154909 -0.200000 0.268895 +v -2.085628 -0.200000 0.283234 +v -2.085628 0.200000 0.283234 +v -2.154909 0.200000 0.268895 +v -2.154909 -0.200000 0.000000 +v -2.085628 -0.200000 0.000000 +v -2.085628 -0.200000 0.283234 +v -2.154909 -0.200000 0.268895 +v -2.154909 0.200000 0.000000 +v -2.154909 0.200000 0.268895 +v -2.085628 0.200000 0.283234 +v -2.085628 0.200000 0.000000 +v -2.154909 -0.200000 0.000000 +v -2.154909 0.200000 0.000000 +v -2.085628 0.200000 0.000000 +v -2.085628 -0.200000 0.000000 +v -2.085628 -0.200000 0.283234 +v -2.016347 -0.200000 0.297324 +v -2.016347 0.200000 0.297324 +v -2.085628 0.200000 0.283234 +v -2.085628 -0.200000 0.000000 +v -2.016347 -0.200000 0.000000 +v -2.016347 -0.200000 0.297324 +v -2.085628 -0.200000 0.283234 +v -2.085628 0.200000 0.000000 +v -2.085628 0.200000 0.283234 +v -2.016347 0.200000 0.297324 +v -2.016347 0.200000 0.000000 +v -2.085628 -0.200000 0.000000 +v -2.085628 0.200000 0.000000 +v -2.016347 0.200000 0.000000 +v -2.016347 -0.200000 0.000000 +v -2.016347 -0.200000 0.297324 +v -1.947065 -0.200000 0.311104 +v -1.947065 0.200000 0.311104 +v -2.016347 0.200000 0.297324 +v -2.016347 -0.200000 0.000000 +v -1.947065 -0.200000 0.000000 +v -1.947065 -0.200000 0.311104 +v -2.016347 -0.200000 0.297324 +v -2.016347 0.200000 0.000000 +v -2.016347 0.200000 0.297324 +v -1.947065 0.200000 0.311104 +v -1.947065 0.200000 0.000000 +v -2.016347 -0.200000 0.000000 +v -2.016347 0.200000 0.000000 +v -1.947065 0.200000 0.000000 +v -1.947065 -0.200000 0.000000 +v -1.947065 -0.200000 0.311104 +v -1.877784 -0.200000 0.324515 +v -1.877784 0.200000 0.324515 +v -1.947065 0.200000 0.311104 +v -1.947065 -0.200000 0.000000 +v -1.877784 -0.200000 0.000000 +v -1.877784 -0.200000 0.324515 +v -1.947065 -0.200000 0.311104 +v -1.947065 0.200000 0.000000 +v -1.947065 0.200000 0.311104 +v -1.877784 0.200000 0.324515 +v -1.877784 0.200000 0.000000 +v -1.947065 -0.200000 0.000000 +v -1.947065 0.200000 0.000000 +v -1.877784 0.200000 0.000000 +v -1.877784 -0.200000 0.000000 +v -1.877784 -0.200000 0.324515 +v -1.808502 -0.200000 0.337500 +v -1.808502 0.200000 0.337500 +v -1.877784 0.200000 0.324515 +v -1.877784 -0.200000 0.000000 +v -1.808502 -0.200000 0.000000 +v -1.808502 -0.200000 0.337500 +v -1.877784 -0.200000 0.324515 +v -1.877784 0.200000 0.000000 +v -1.877784 0.200000 0.324515 +v -1.808502 0.200000 0.337500 +v -1.808502 0.200000 0.000000 +v -1.877784 -0.200000 0.000000 +v -1.877784 0.200000 0.000000 +v -1.808502 0.200000 0.000000 +v -1.808502 -0.200000 0.000000 +v -1.808502 -0.200000 0.337500 +v -1.739221 -0.200000 0.350003 +v -1.739221 0.200000 0.350003 +v -1.808502 0.200000 0.337500 +v -1.808502 -0.200000 0.000000 +v -1.739221 -0.200000 0.000000 +v -1.739221 -0.200000 0.350003 +v -1.808502 -0.200000 0.337500 +v -1.808502 0.200000 0.000000 +v -1.808502 0.200000 0.337500 +v -1.739221 0.200000 0.350003 +v -1.739221 0.200000 0.000000 +v -1.808502 -0.200000 0.000000 +v -1.808502 0.200000 0.000000 +v -1.739221 0.200000 0.000000 +v -1.739221 -0.200000 0.000000 +v -1.739221 -0.200000 0.350003 +v -1.669940 -0.200000 0.361971 +v -1.669940 0.200000 0.361971 +v -1.739221 0.200000 0.350003 +v -1.739221 -0.200000 0.000000 +v -1.669940 -0.200000 0.000000 +v -1.669940 -0.200000 0.361971 +v -1.739221 -0.200000 0.350003 +v -1.739221 0.200000 0.000000 +v -1.739221 0.200000 0.350003 +v -1.669940 0.200000 0.361971 +v -1.669940 0.200000 0.000000 +v -1.739221 -0.200000 0.000000 +v -1.739221 0.200000 0.000000 +v -1.669940 0.200000 0.000000 +v -1.669940 -0.200000 0.000000 +v -1.669940 -0.200000 0.361971 +v -1.600658 -0.200000 0.373353 +v -1.600658 0.200000 0.373353 +v -1.669940 0.200000 0.361971 +v -1.669940 -0.200000 0.000000 +v -1.600658 -0.200000 0.000000 +v -1.600658 -0.200000 0.373353 +v -1.669940 -0.200000 0.361971 +v -1.669940 0.200000 0.000000 +v -1.669940 0.200000 0.361971 +v -1.600658 0.200000 0.373353 +v -1.600658 0.200000 0.000000 +v -1.669940 -0.200000 0.000000 +v -1.669940 0.200000 0.000000 +v -1.600658 0.200000 0.000000 +v -1.600658 -0.200000 0.000000 +v -1.600658 -0.200000 0.373353 +v -1.531377 -0.200000 0.384099 +v -1.531377 0.200000 0.384099 +v -1.600658 0.200000 0.373353 +v -1.600658 -0.200000 0.000000 +v -1.531377 -0.200000 0.000000 +v -1.531377 -0.200000 0.384099 +v -1.600658 -0.200000 0.373353 +v -1.600658 0.200000 0.000000 +v -1.600658 0.200000 0.373353 +v -1.531377 0.200000 0.384099 +v -1.531377 0.200000 0.000000 +v -1.600658 -0.200000 0.000000 +v -1.600658 0.200000 0.000000 +v -1.531377 0.200000 0.000000 +v -1.531377 -0.200000 0.000000 +v -1.531377 -0.200000 0.384099 +v -1.462095 -0.200000 0.394164 +v -1.462095 0.200000 0.394164 +v -1.531377 0.200000 0.384099 +v -1.531377 -0.200000 0.000000 +v -1.462095 -0.200000 0.000000 +v -1.462095 -0.200000 0.394164 +v -1.531377 -0.200000 0.384099 +v -1.531377 0.200000 0.000000 +v -1.531377 0.200000 0.384099 +v -1.462095 0.200000 0.394164 +v -1.462095 0.200000 0.000000 +v -1.531377 -0.200000 0.000000 +v -1.531377 0.200000 0.000000 +v -1.462095 0.200000 0.000000 +v -1.462095 -0.200000 0.000000 +v -1.462095 -0.200000 0.394164 +v -1.392814 -0.200000 0.403505 +v -1.392814 0.200000 0.403505 +v -1.462095 0.200000 0.394164 +v -1.462095 -0.200000 0.000000 +v -1.392814 -0.200000 0.000000 +v -1.392814 -0.200000 0.403505 +v -1.462095 -0.200000 0.394164 +v -1.462095 0.200000 0.000000 +v -1.462095 0.200000 0.394164 +v -1.392814 0.200000 0.403505 +v -1.392814 0.200000 0.000000 +v -1.462095 -0.200000 0.000000 +v -1.462095 0.200000 0.000000 +v -1.392814 0.200000 0.000000 +v -1.392814 -0.200000 0.000000 +v -1.392814 -0.200000 0.403505 +v -1.323533 -0.200000 0.412081 +v -1.323533 0.200000 0.412081 +v -1.392814 0.200000 0.403505 +v -1.392814 -0.200000 0.000000 +v -1.323533 -0.200000 0.000000 +v -1.323533 -0.200000 0.412081 +v -1.392814 -0.200000 0.403505 +v -1.392814 0.200000 0.000000 +v -1.392814 0.200000 0.403505 +v -1.323533 0.200000 0.412081 +v -1.323533 0.200000 0.000000 +v -1.392814 -0.200000 0.000000 +v -1.392814 0.200000 0.000000 +v -1.323533 0.200000 0.000000 +v -1.323533 -0.200000 0.000000 +v -1.323533 -0.200000 0.412081 +v -1.254251 -0.200000 0.419856 +v -1.254251 0.200000 0.419856 +v -1.323533 0.200000 0.412081 +v -1.323533 -0.200000 0.000000 +v -1.254251 -0.200000 0.000000 +v -1.254251 -0.200000 0.419856 +v -1.323533 -0.200000 0.412081 +v -1.323533 0.200000 0.000000 +v -1.323533 0.200000 0.412081 +v -1.254251 0.200000 0.419856 +v -1.254251 0.200000 0.000000 +v -1.323533 -0.200000 0.000000 +v -1.323533 0.200000 0.000000 +v -1.254251 0.200000 0.000000 +v -1.254251 -0.200000 0.000000 +v -1.254251 -0.200000 0.419856 +v -1.184970 -0.200000 0.426796 +v -1.184970 0.200000 0.426796 +v -1.254251 0.200000 0.419856 +v -1.254251 -0.200000 0.000000 +v -1.184970 -0.200000 0.000000 +v -1.184970 -0.200000 0.426796 +v -1.254251 -0.200000 0.419856 +v -1.254251 0.200000 0.000000 +v -1.254251 0.200000 0.419856 +v -1.184970 0.200000 0.426796 +v -1.184970 0.200000 0.000000 +v -1.254251 -0.200000 0.000000 +v -1.254251 0.200000 0.000000 +v -1.184970 0.200000 0.000000 +v -1.184970 -0.200000 0.000000 +v -1.184970 -0.200000 0.426796 +v -1.115688 -0.200000 0.432873 +v -1.115688 0.200000 0.432873 +v -1.184970 0.200000 0.426796 +v -1.184970 -0.200000 0.000000 +v -1.115688 -0.200000 0.000000 +v -1.115688 -0.200000 0.432873 +v -1.184970 -0.200000 0.426796 +v -1.184970 0.200000 0.000000 +v -1.184970 0.200000 0.426796 +v -1.115688 0.200000 0.432873 +v -1.115688 0.200000 0.000000 +v -1.184970 -0.200000 0.000000 +v -1.184970 0.200000 0.000000 +v -1.115688 0.200000 0.000000 +v -1.115688 -0.200000 0.000000 +v -1.115688 -0.200000 0.432873 +v -1.046407 -0.200000 0.438059 +v -1.046407 0.200000 0.438059 +v -1.115688 0.200000 0.432873 +v -1.115688 -0.200000 0.000000 +v -1.046407 -0.200000 0.000000 +v -1.046407 -0.200000 0.438059 +v -1.115688 -0.200000 0.432873 +v -1.115688 0.200000 0.000000 +v -1.115688 0.200000 0.432873 +v -1.046407 0.200000 0.438059 +v -1.046407 0.200000 0.000000 +v -1.115688 -0.200000 0.000000 +v -1.115688 0.200000 0.000000 +v -1.046407 0.200000 0.000000 +v -1.046407 -0.200000 0.000000 +v -1.046407 -0.200000 0.438059 +v -0.977126 -0.200000 0.442333 +v -0.977126 0.200000 0.442333 +v -1.046407 0.200000 0.438059 +v -1.046407 -0.200000 0.000000 +v -0.977126 -0.200000 0.000000 +v -0.977126 -0.200000 0.442333 +v -1.046407 -0.200000 0.438059 +v -1.046407 0.200000 0.000000 +v -1.046407 0.200000 0.438059 +v -0.977126 0.200000 0.442333 +v -0.977126 0.200000 0.000000 +v -1.046407 -0.200000 0.000000 +v -1.046407 0.200000 0.000000 +v -0.977126 0.200000 0.000000 +v -0.977126 -0.200000 0.000000 +v -0.977126 -0.200000 0.442333 +v -0.907844 -0.200000 0.445677 +v -0.907844 0.200000 0.445677 +v -0.977126 0.200000 0.442333 +v -0.977126 -0.200000 0.000000 +v -0.907844 -0.200000 0.000000 +v -0.907844 -0.200000 0.445677 +v -0.977126 -0.200000 0.442333 +v -0.977126 0.200000 0.000000 +v -0.977126 0.200000 0.442333 +v -0.907844 0.200000 0.445677 +v -0.907844 0.200000 0.000000 +v -0.977126 -0.200000 0.000000 +v -0.977126 0.200000 0.000000 +v -0.907844 0.200000 0.000000 +v -0.907844 -0.200000 0.000000 +v -0.907844 -0.200000 0.445677 +v -0.838563 -0.200000 0.448075 +v -0.838563 0.200000 0.448075 +v -0.907844 0.200000 0.445677 +v -0.907844 -0.200000 0.000000 +v -0.838563 -0.200000 0.000000 +v -0.838563 -0.200000 0.448075 +v -0.907844 -0.200000 0.445677 +v -0.907844 0.200000 0.000000 +v -0.907844 0.200000 0.445677 +v -0.838563 0.200000 0.448075 +v -0.838563 0.200000 0.000000 +v -0.907844 -0.200000 0.000000 +v -0.907844 0.200000 0.000000 +v -0.838563 0.200000 0.000000 +v -0.838563 -0.200000 0.000000 +v -0.838563 -0.200000 0.448075 +v -0.769281 -0.200000 0.449518 +v -0.769281 0.200000 0.449518 +v -0.838563 0.200000 0.448075 +v -0.838563 -0.200000 0.000000 +v -0.769281 -0.200000 0.000000 +v -0.769281 -0.200000 0.449518 +v -0.838563 -0.200000 0.448075 +v -0.838563 0.200000 0.000000 +v -0.838563 0.200000 0.448075 +v -0.769281 0.200000 0.449518 +v -0.769281 0.200000 0.000000 +v -0.838563 -0.200000 0.000000 +v -0.838563 0.200000 0.000000 +v -0.769281 0.200000 0.000000 +v -0.769281 -0.200000 0.000000 +v -0.769281 -0.200000 0.449518 +v -0.700000 -0.200000 0.450000 +v -0.700000 0.200000 0.450000 +v -0.769281 0.200000 0.449518 +v -0.769281 -0.200000 0.000000 +v -0.700000 -0.200000 0.000000 +v -0.700000 -0.200000 0.450000 +v -0.769281 -0.200000 0.449518 +v -0.769281 0.200000 0.000000 +v -0.769281 0.200000 0.449518 +v -0.700000 0.200000 0.450000 +v -0.700000 0.200000 0.000000 +v -0.769281 -0.200000 0.000000 +v -0.769281 0.200000 0.000000 +v -0.700000 0.200000 0.000000 +v -0.700000 -0.200000 0.000000 +v -0.700000 -0.200000 0.450000 +v 0.700000 -0.200000 0.450000 +v 0.700000 0.200000 0.450000 +v -0.700000 0.200000 0.450000 +v -0.700000 -0.200000 0.400000 +v 0.700000 -0.200000 0.400000 +v 0.700000 -0.200000 0.450000 +v -0.700000 -0.200000 0.450000 +v -0.700000 0.200000 0.400000 +v -0.700000 0.200000 0.450000 +v 0.700000 0.200000 0.450000 +v 0.700000 0.200000 0.400000 +v -0.700000 -0.200000 0.400000 +v -0.700000 0.200000 0.400000 +v 0.700000 0.200000 0.400000 +v 0.700000 -0.200000 0.400000 +v 0.700000 -0.200000 0.450000 +v 0.769281 -0.200000 0.449518 +v 0.769281 0.200000 0.449518 +v 0.700000 0.200000 0.450000 +v 0.700000 -0.200000 0.000000 +v 0.769281 -0.200000 0.000000 +v 0.769281 -0.200000 0.449518 +v 0.700000 -0.200000 0.450000 +v 0.700000 0.200000 0.000000 +v 0.700000 0.200000 0.450000 +v 0.769281 0.200000 0.449518 +v 0.769281 0.200000 0.000000 +v 0.700000 -0.200000 0.000000 +v 0.700000 0.200000 0.000000 +v 0.769281 0.200000 0.000000 +v 0.769281 -0.200000 0.000000 +v 0.769281 -0.200000 0.449518 +v 0.838563 -0.200000 0.448075 +v 0.838563 0.200000 0.448075 +v 0.769281 0.200000 0.449518 +v 0.769281 -0.200000 0.000000 +v 0.838563 -0.200000 0.000000 +v 0.838563 -0.200000 0.448075 +v 0.769281 -0.200000 0.449518 +v 0.769281 0.200000 0.000000 +v 0.769281 0.200000 0.449518 +v 0.838563 0.200000 0.448075 +v 0.838563 0.200000 0.000000 +v 0.769281 -0.200000 0.000000 +v 0.769281 0.200000 0.000000 +v 0.838563 0.200000 0.000000 +v 0.838563 -0.200000 0.000000 +v 0.838563 -0.200000 0.448075 +v 0.907844 -0.200000 0.445677 +v 0.907844 0.200000 0.445677 +v 0.838563 0.200000 0.448075 +v 0.838563 -0.200000 0.000000 +v 0.907844 -0.200000 0.000000 +v 0.907844 -0.200000 0.445677 +v 0.838563 -0.200000 0.448075 +v 0.838563 0.200000 0.000000 +v 0.838563 0.200000 0.448075 +v 0.907844 0.200000 0.445677 +v 0.907844 0.200000 0.000000 +v 0.838563 -0.200000 0.000000 +v 0.838563 0.200000 0.000000 +v 0.907844 0.200000 0.000000 +v 0.907844 -0.200000 0.000000 +v 0.907844 -0.200000 0.445677 +v 0.977126 -0.200000 0.442333 +v 0.977126 0.200000 0.442333 +v 0.907844 0.200000 0.445677 +v 0.907844 -0.200000 0.000000 +v 0.977126 -0.200000 0.000000 +v 0.977126 -0.200000 0.442333 +v 0.907844 -0.200000 0.445677 +v 0.907844 0.200000 0.000000 +v 0.907844 0.200000 0.445677 +v 0.977126 0.200000 0.442333 +v 0.977126 0.200000 0.000000 +v 0.907844 -0.200000 0.000000 +v 0.907844 0.200000 0.000000 +v 0.977126 0.200000 0.000000 +v 0.977126 -0.200000 0.000000 +v 0.977126 -0.200000 0.442333 +v 1.046407 -0.200000 0.438059 +v 1.046407 0.200000 0.438059 +v 0.977126 0.200000 0.442333 +v 0.977126 -0.200000 0.000000 +v 1.046407 -0.200000 0.000000 +v 1.046407 -0.200000 0.438059 +v 0.977126 -0.200000 0.442333 +v 0.977126 0.200000 0.000000 +v 0.977126 0.200000 0.442333 +v 1.046407 0.200000 0.438059 +v 1.046407 0.200000 0.000000 +v 0.977126 -0.200000 0.000000 +v 0.977126 0.200000 0.000000 +v 1.046407 0.200000 0.000000 +v 1.046407 -0.200000 0.000000 +v 1.046407 -0.200000 0.438059 +v 1.115688 -0.200000 0.432873 +v 1.115688 0.200000 0.432873 +v 1.046407 0.200000 0.438059 +v 1.046407 -0.200000 0.000000 +v 1.115688 -0.200000 0.000000 +v 1.115688 -0.200000 0.432873 +v 1.046407 -0.200000 0.438059 +v 1.046407 0.200000 0.000000 +v 1.046407 0.200000 0.438059 +v 1.115688 0.200000 0.432873 +v 1.115688 0.200000 0.000000 +v 1.046407 -0.200000 0.000000 +v 1.046407 0.200000 0.000000 +v 1.115688 0.200000 0.000000 +v 1.115688 -0.200000 0.000000 +v 1.115688 -0.200000 0.432873 +v 1.184970 -0.200000 0.426796 +v 1.184970 0.200000 0.426796 +v 1.115688 0.200000 0.432873 +v 1.115688 -0.200000 0.000000 +v 1.184970 -0.200000 0.000000 +v 1.184970 -0.200000 0.426796 +v 1.115688 -0.200000 0.432873 +v 1.115688 0.200000 0.000000 +v 1.115688 0.200000 0.432873 +v 1.184970 0.200000 0.426796 +v 1.184970 0.200000 0.000000 +v 1.115688 -0.200000 0.000000 +v 1.115688 0.200000 0.000000 +v 1.184970 0.200000 0.000000 +v 1.184970 -0.200000 0.000000 +v 1.184970 -0.200000 0.426796 +v 1.254251 -0.200000 0.419856 +v 1.254251 0.200000 0.419856 +v 1.184970 0.200000 0.426796 +v 1.184970 -0.200000 0.000000 +v 1.254251 -0.200000 0.000000 +v 1.254251 -0.200000 0.419856 +v 1.184970 -0.200000 0.426796 +v 1.184970 0.200000 0.000000 +v 1.184970 0.200000 0.426796 +v 1.254251 0.200000 0.419856 +v 1.254251 0.200000 0.000000 +v 1.184970 -0.200000 0.000000 +v 1.184970 0.200000 0.000000 +v 1.254251 0.200000 0.000000 +v 1.254251 -0.200000 0.000000 +v 1.254251 -0.200000 0.419856 +v 1.323533 -0.200000 0.412081 +v 1.323533 0.200000 0.412081 +v 1.254251 0.200000 0.419856 +v 1.254251 -0.200000 0.000000 +v 1.323533 -0.200000 0.000000 +v 1.323533 -0.200000 0.412081 +v 1.254251 -0.200000 0.419856 +v 1.254251 0.200000 0.000000 +v 1.254251 0.200000 0.419856 +v 1.323533 0.200000 0.412081 +v 1.323533 0.200000 0.000000 +v 1.254251 -0.200000 0.000000 +v 1.254251 0.200000 0.000000 +v 1.323533 0.200000 0.000000 +v 1.323533 -0.200000 0.000000 +v 1.323533 -0.200000 0.412081 +v 1.392814 -0.200000 0.403505 +v 1.392814 0.200000 0.403505 +v 1.323533 0.200000 0.412081 +v 1.323533 -0.200000 0.000000 +v 1.392814 -0.200000 0.000000 +v 1.392814 -0.200000 0.403505 +v 1.323533 -0.200000 0.412081 +v 1.323533 0.200000 0.000000 +v 1.323533 0.200000 0.412081 +v 1.392814 0.200000 0.403505 +v 1.392814 0.200000 0.000000 +v 1.323533 -0.200000 0.000000 +v 1.323533 0.200000 0.000000 +v 1.392814 0.200000 0.000000 +v 1.392814 -0.200000 0.000000 +v 1.392814 -0.200000 0.403505 +v 1.462095 -0.200000 0.394164 +v 1.462095 0.200000 0.394164 +v 1.392814 0.200000 0.403505 +v 1.392814 -0.200000 0.000000 +v 1.462095 -0.200000 0.000000 +v 1.462095 -0.200000 0.394164 +v 1.392814 -0.200000 0.403505 +v 1.392814 0.200000 0.000000 +v 1.392814 0.200000 0.403505 +v 1.462095 0.200000 0.394164 +v 1.462095 0.200000 0.000000 +v 1.392814 -0.200000 0.000000 +v 1.392814 0.200000 0.000000 +v 1.462095 0.200000 0.000000 +v 1.462095 -0.200000 0.000000 +v 1.462095 -0.200000 0.394164 +v 1.531377 -0.200000 0.384099 +v 1.531377 0.200000 0.384099 +v 1.462095 0.200000 0.394164 +v 1.462095 -0.200000 0.000000 +v 1.531377 -0.200000 0.000000 +v 1.531377 -0.200000 0.384099 +v 1.462095 -0.200000 0.394164 +v 1.462095 0.200000 0.000000 +v 1.462095 0.200000 0.394164 +v 1.531377 0.200000 0.384099 +v 1.531377 0.200000 0.000000 +v 1.462095 -0.200000 0.000000 +v 1.462095 0.200000 0.000000 +v 1.531377 0.200000 0.000000 +v 1.531377 -0.200000 0.000000 +v 1.531377 -0.200000 0.384099 +v 1.600658 -0.200000 0.373353 +v 1.600658 0.200000 0.373353 +v 1.531377 0.200000 0.384099 +v 1.531377 -0.200000 0.000000 +v 1.600658 -0.200000 0.000000 +v 1.600658 -0.200000 0.373353 +v 1.531377 -0.200000 0.384099 +v 1.531377 0.200000 0.000000 +v 1.531377 0.200000 0.384099 +v 1.600658 0.200000 0.373353 +v 1.600658 0.200000 0.000000 +v 1.531377 -0.200000 0.000000 +v 1.531377 0.200000 0.000000 +v 1.600658 0.200000 0.000000 +v 1.600658 -0.200000 0.000000 +v 1.600658 -0.200000 0.373353 +v 1.669940 -0.200000 0.361971 +v 1.669940 0.200000 0.361971 +v 1.600658 0.200000 0.373353 +v 1.600658 -0.200000 0.000000 +v 1.669940 -0.200000 0.000000 +v 1.669940 -0.200000 0.361971 +v 1.600658 -0.200000 0.373353 +v 1.600658 0.200000 0.000000 +v 1.600658 0.200000 0.373353 +v 1.669940 0.200000 0.361971 +v 1.669940 0.200000 0.000000 +v 1.600658 -0.200000 0.000000 +v 1.600658 0.200000 0.000000 +v 1.669940 0.200000 0.000000 +v 1.669940 -0.200000 0.000000 +v 1.669940 -0.200000 0.361971 +v 1.739221 -0.200000 0.350003 +v 1.739221 0.200000 0.350003 +v 1.669940 0.200000 0.361971 +v 1.669940 -0.200000 0.000000 +v 1.739221 -0.200000 0.000000 +v 1.739221 -0.200000 0.350003 +v 1.669940 -0.200000 0.361971 +v 1.669940 0.200000 0.000000 +v 1.669940 0.200000 0.361971 +v 1.739221 0.200000 0.350003 +v 1.739221 0.200000 0.000000 +v 1.669940 -0.200000 0.000000 +v 1.669940 0.200000 0.000000 +v 1.739221 0.200000 0.000000 +v 1.739221 -0.200000 0.000000 +v 1.739221 -0.200000 0.350003 +v 1.808502 -0.200000 0.337500 +v 1.808502 0.200000 0.337500 +v 1.739221 0.200000 0.350003 +v 1.739221 -0.200000 0.000000 +v 1.808502 -0.200000 0.000000 +v 1.808502 -0.200000 0.337500 +v 1.739221 -0.200000 0.350003 +v 1.739221 0.200000 0.000000 +v 1.739221 0.200000 0.350003 +v 1.808502 0.200000 0.337500 +v 1.808502 0.200000 0.000000 +v 1.739221 -0.200000 0.000000 +v 1.739221 0.200000 0.000000 +v 1.808502 0.200000 0.000000 +v 1.808502 -0.200000 0.000000 +v 1.808502 -0.200000 0.337500 +v 1.877784 -0.200000 0.324515 +v 1.877784 0.200000 0.324515 +v 1.808502 0.200000 0.337500 +v 1.808502 -0.200000 0.000000 +v 1.877784 -0.200000 0.000000 +v 1.877784 -0.200000 0.324515 +v 1.808502 -0.200000 0.337500 +v 1.808502 0.200000 0.000000 +v 1.808502 0.200000 0.337500 +v 1.877784 0.200000 0.324515 +v 1.877784 0.200000 0.000000 +v 1.808502 -0.200000 0.000000 +v 1.808502 0.200000 0.000000 +v 1.877784 0.200000 0.000000 +v 1.877784 -0.200000 0.000000 +v 1.877784 -0.200000 0.324515 +v 1.947065 -0.200000 0.311104 +v 1.947065 0.200000 0.311104 +v 1.877784 0.200000 0.324515 +v 1.877784 -0.200000 0.000000 +v 1.947065 -0.200000 0.000000 +v 1.947065 -0.200000 0.311104 +v 1.877784 -0.200000 0.324515 +v 1.877784 0.200000 0.000000 +v 1.877784 0.200000 0.324515 +v 1.947065 0.200000 0.311104 +v 1.947065 0.200000 0.000000 +v 1.877784 -0.200000 0.000000 +v 1.877784 0.200000 0.000000 +v 1.947065 0.200000 0.000000 +v 1.947065 -0.200000 0.000000 +v 1.947065 -0.200000 0.311104 +v 2.016347 -0.200000 0.297324 +v 2.016347 0.200000 0.297324 +v 1.947065 0.200000 0.311104 +v 1.947065 -0.200000 0.000000 +v 2.016347 -0.200000 0.000000 +v 2.016347 -0.200000 0.297324 +v 1.947065 -0.200000 0.311104 +v 1.947065 0.200000 0.000000 +v 1.947065 0.200000 0.311104 +v 2.016347 0.200000 0.297324 +v 2.016347 0.200000 0.000000 +v 1.947065 -0.200000 0.000000 +v 1.947065 0.200000 0.000000 +v 2.016347 0.200000 0.000000 +v 2.016347 -0.200000 0.000000 +v 2.016347 -0.200000 0.297324 +v 2.085628 -0.200000 0.283234 +v 2.085628 0.200000 0.283234 +v 2.016347 0.200000 0.297324 +v 2.016347 -0.200000 0.000000 +v 2.085628 -0.200000 0.000000 +v 2.085628 -0.200000 0.283234 +v 2.016347 -0.200000 0.297324 +v 2.016347 0.200000 0.000000 +v 2.016347 0.200000 0.297324 +v 2.085628 0.200000 0.283234 +v 2.085628 0.200000 0.000000 +v 2.016347 -0.200000 0.000000 +v 2.016347 0.200000 0.000000 +v 2.085628 0.200000 0.000000 +v 2.085628 -0.200000 0.000000 +v 2.085628 -0.200000 0.283234 +v 2.154909 -0.200000 0.268895 +v 2.154909 0.200000 0.268895 +v 2.085628 0.200000 0.283234 +v 2.085628 -0.200000 0.000000 +v 2.154909 -0.200000 0.000000 +v 2.154909 -0.200000 0.268895 +v 2.085628 -0.200000 0.283234 +v 2.085628 0.200000 0.000000 +v 2.085628 0.200000 0.283234 +v 2.154909 0.200000 0.268895 +v 2.154909 0.200000 0.000000 +v 2.085628 -0.200000 0.000000 +v 2.085628 0.200000 0.000000 +v 2.154909 0.200000 0.000000 +v 2.154909 -0.200000 0.000000 +v 2.154909 -0.200000 0.268895 +v 2.224191 -0.200000 0.254368 +v 2.224191 0.200000 0.254368 +v 2.154909 0.200000 0.268895 +v 2.154909 -0.200000 0.000000 +v 2.224191 -0.200000 0.000000 +v 2.224191 -0.200000 0.254368 +v 2.154909 -0.200000 0.268895 +v 2.154909 0.200000 0.000000 +v 2.154909 0.200000 0.268895 +v 2.224191 0.200000 0.254368 +v 2.224191 0.200000 0.000000 +v 2.154909 -0.200000 0.000000 +v 2.154909 0.200000 0.000000 +v 2.224191 0.200000 0.000000 +v 2.224191 -0.200000 0.000000 +v 2.224191 -0.200000 0.254368 +v 2.293472 -0.200000 0.239716 +v 2.293472 0.200000 0.239716 +v 2.224191 0.200000 0.254368 +v 2.224191 -0.200000 0.000000 +v 2.293472 -0.200000 0.000000 +v 2.293472 -0.200000 0.239716 +v 2.224191 -0.200000 0.254368 +v 2.224191 0.200000 0.000000 +v 2.224191 0.200000 0.254368 +v 2.293472 0.200000 0.239716 +v 2.293472 0.200000 0.000000 +v 2.224191 -0.200000 0.000000 +v 2.224191 0.200000 0.000000 +v 2.293472 0.200000 0.000000 +v 2.293472 -0.200000 0.000000 +v 2.293472 -0.200000 0.239716 +v 2.362754 -0.200000 0.225000 +v 2.362754 0.200000 0.225000 +v 2.293472 0.200000 0.239716 +v 2.293472 -0.200000 0.000000 +v 2.362754 -0.200000 0.000000 +v 2.362754 -0.200000 0.225000 +v 2.293472 -0.200000 0.239716 +v 2.293472 0.200000 0.000000 +v 2.293472 0.200000 0.239716 +v 2.362754 0.200000 0.225000 +v 2.362754 0.200000 0.000000 +v 2.293472 -0.200000 0.000000 +v 2.293472 0.200000 0.000000 +v 2.362754 0.200000 0.000000 +v 2.362754 -0.200000 0.000000 +v 2.362754 -0.200000 0.225000 +v 2.432035 -0.200000 0.210284 +v 2.432035 0.200000 0.210284 +v 2.362754 0.200000 0.225000 +v 2.362754 -0.200000 0.000000 +v 2.432035 -0.200000 0.000000 +v 2.432035 -0.200000 0.210284 +v 2.362754 -0.200000 0.225000 +v 2.362754 0.200000 0.000000 +v 2.362754 0.200000 0.225000 +v 2.432035 0.200000 0.210284 +v 2.432035 0.200000 0.000000 +v 2.362754 -0.200000 0.000000 +v 2.362754 0.200000 0.000000 +v 2.432035 0.200000 0.000000 +v 2.432035 -0.200000 0.000000 +v 2.432035 -0.200000 0.210284 +v 2.501316 -0.200000 0.195632 +v 2.501316 0.200000 0.195632 +v 2.432035 0.200000 0.210284 +v 2.432035 -0.200000 0.000000 +v 2.501316 -0.200000 0.000000 +v 2.501316 -0.200000 0.195632 +v 2.432035 -0.200000 0.210284 +v 2.432035 0.200000 0.000000 +v 2.432035 0.200000 0.210284 +v 2.501316 0.200000 0.195632 +v 2.501316 0.200000 0.000000 +v 2.432035 -0.200000 0.000000 +v 2.432035 0.200000 0.000000 +v 2.501316 0.200000 0.000000 +v 2.501316 -0.200000 0.000000 +v 2.501316 -0.200000 0.195632 +v 2.570598 -0.200000 0.181105 +v 2.570598 0.200000 0.181105 +v 2.501316 0.200000 0.195632 +v 2.501316 -0.200000 0.000000 +v 2.570598 -0.200000 0.000000 +v 2.570598 -0.200000 0.181105 +v 2.501316 -0.200000 0.195632 +v 2.501316 0.200000 0.000000 +v 2.501316 0.200000 0.195632 +v 2.570598 0.200000 0.181105 +v 2.570598 0.200000 0.000000 +v 2.501316 -0.200000 0.000000 +v 2.501316 0.200000 0.000000 +v 2.570598 0.200000 0.000000 +v 2.570598 -0.200000 0.000000 +v 2.570598 -0.200000 0.181105 +v 2.639879 -0.200000 0.166766 +v 2.639879 0.200000 0.166766 +v 2.570598 0.200000 0.181105 +v 2.570598 -0.200000 0.000000 +v 2.639879 -0.200000 0.000000 +v 2.639879 -0.200000 0.166766 +v 2.570598 -0.200000 0.181105 +v 2.570598 0.200000 0.000000 +v 2.570598 0.200000 0.181105 +v 2.639879 0.200000 0.166766 +v 2.639879 0.200000 0.000000 +v 2.570598 -0.200000 0.000000 +v 2.570598 0.200000 0.000000 +v 2.639879 0.200000 0.000000 +v 2.639879 -0.200000 0.000000 +v 2.639879 -0.200000 0.166766 +v 2.709161 -0.200000 0.152676 +v 2.709161 0.200000 0.152676 +v 2.639879 0.200000 0.166766 +v 2.639879 -0.200000 0.000000 +v 2.709161 -0.200000 0.000000 +v 2.709161 -0.200000 0.152676 +v 2.639879 -0.200000 0.166766 +v 2.639879 0.200000 0.000000 +v 2.639879 0.200000 0.166766 +v 2.709161 0.200000 0.152676 +v 2.709161 0.200000 0.000000 +v 2.639879 -0.200000 0.000000 +v 2.639879 0.200000 0.000000 +v 2.709161 0.200000 0.000000 +v 2.709161 -0.200000 0.000000 +v 2.709161 -0.200000 0.152676 +v 2.778442 -0.200000 0.138896 +v 2.778442 0.200000 0.138896 +v 2.709161 0.200000 0.152676 +v 2.709161 -0.200000 0.000000 +v 2.778442 -0.200000 0.000000 +v 2.778442 -0.200000 0.138896 +v 2.709161 -0.200000 0.152676 +v 2.709161 0.200000 0.000000 +v 2.709161 0.200000 0.152676 +v 2.778442 0.200000 0.138896 +v 2.778442 0.200000 0.000000 +v 2.709161 -0.200000 0.000000 +v 2.709161 0.200000 0.000000 +v 2.778442 0.200000 0.000000 +v 2.778442 -0.200000 0.000000 +v 2.778442 -0.200000 0.138896 +v 2.847723 -0.200000 0.125485 +v 2.847723 0.200000 0.125485 +v 2.778442 0.200000 0.138896 +v 2.778442 -0.200000 0.000000 +v 2.847723 -0.200000 0.000000 +v 2.847723 -0.200000 0.125485 +v 2.778442 -0.200000 0.138896 +v 2.778442 0.200000 0.000000 +v 2.778442 0.200000 0.138896 +v 2.847723 0.200000 0.125485 +v 2.847723 0.200000 0.000000 +v 2.778442 -0.200000 0.000000 +v 2.778442 0.200000 0.000000 +v 2.847723 0.200000 0.000000 +v 2.847723 -0.200000 0.000000 +v 2.847723 -0.200000 0.125485 +v 2.917005 -0.200000 0.112500 +v 2.917005 0.200000 0.112500 +v 2.847723 0.200000 0.125485 +v 2.847723 -0.200000 0.000000 +v 2.917005 -0.200000 0.000000 +v 2.917005 -0.200000 0.112500 +v 2.847723 -0.200000 0.125485 +v 2.847723 0.200000 0.000000 +v 2.847723 0.200000 0.125485 +v 2.917005 0.200000 0.112500 +v 2.917005 0.200000 0.000000 +v 2.847723 -0.200000 0.000000 +v 2.847723 0.200000 0.000000 +v 2.917005 0.200000 0.000000 +v 2.917005 -0.200000 0.000000 +v 2.917005 -0.200000 0.112500 +v 2.986286 -0.200000 0.099997 +v 2.986286 0.200000 0.099997 +v 2.917005 0.200000 0.112500 +v 2.917005 -0.200000 0.000000 +v 2.986286 -0.200000 0.000000 +v 2.986286 -0.200000 0.099997 +v 2.917005 -0.200000 0.112500 +v 2.917005 0.200000 0.000000 +v 2.917005 0.200000 0.112500 +v 2.986286 0.200000 0.099997 +v 2.986286 0.200000 0.000000 +v 2.917005 -0.200000 0.000000 +v 2.917005 0.200000 0.000000 +v 2.986286 0.200000 0.000000 +v 2.986286 -0.200000 0.000000 +v 2.986286 -0.200000 0.099997 +v 3.055568 -0.200000 0.088029 +v 3.055568 0.200000 0.088029 +v 2.986286 0.200000 0.099997 +v 2.986286 -0.200000 0.000000 +v 3.055568 -0.200000 0.000000 +v 3.055568 -0.200000 0.088029 +v 2.986286 -0.200000 0.099997 +v 2.986286 0.200000 0.000000 +v 2.986286 0.200000 0.099997 +v 3.055568 0.200000 0.088029 +v 3.055568 0.200000 0.000000 +v 2.986286 -0.200000 0.000000 +v 2.986286 0.200000 0.000000 +v 3.055568 0.200000 0.000000 +v 3.055568 -0.200000 0.000000 +v 3.055568 -0.200000 0.088029 +v 3.124849 -0.200000 0.076647 +v 3.124849 0.200000 0.076647 +v 3.055568 0.200000 0.088029 +v 3.055568 -0.200000 0.000000 +v 3.124849 -0.200000 0.000000 +v 3.124849 -0.200000 0.076647 +v 3.055568 -0.200000 0.088029 +v 3.055568 0.200000 0.000000 +v 3.055568 0.200000 0.088029 +v 3.124849 0.200000 0.076647 +v 3.124849 0.200000 0.000000 +v 3.055568 -0.200000 0.000000 +v 3.055568 0.200000 0.000000 +v 3.124849 0.200000 0.000000 +v 3.124849 -0.200000 0.000000 +v 3.124849 -0.200000 0.076647 +v 3.194130 -0.200000 0.065901 +v 3.194130 0.200000 0.065901 +v 3.124849 0.200000 0.076647 +v 3.124849 -0.200000 0.000000 +v 3.194130 -0.200000 0.000000 +v 3.194130 -0.200000 0.065901 +v 3.124849 -0.200000 0.076647 +v 3.124849 0.200000 0.000000 +v 3.124849 0.200000 0.076647 +v 3.194130 0.200000 0.065901 +v 3.194130 0.200000 0.000000 +v 3.124849 -0.200000 0.000000 +v 3.124849 0.200000 0.000000 +v 3.194130 0.200000 0.000000 +v 3.194130 -0.200000 0.000000 +v 3.194130 -0.200000 0.065901 +v 3.263412 -0.200000 0.055836 +v 3.263412 0.200000 0.055836 +v 3.194130 0.200000 0.065901 +v 3.194130 -0.200000 0.000000 +v 3.263412 -0.200000 0.000000 +v 3.263412 -0.200000 0.055836 +v 3.194130 -0.200000 0.065901 +v 3.194130 0.200000 0.000000 +v 3.194130 0.200000 0.065901 +v 3.263412 0.200000 0.055836 +v 3.263412 0.200000 0.000000 +v 3.194130 -0.200000 0.000000 +v 3.194130 0.200000 0.000000 +v 3.263412 0.200000 0.000000 +v 3.263412 -0.200000 0.000000 +v 3.263412 -0.200000 0.055836 +v 3.332693 -0.200000 0.046495 +v 3.332693 0.200000 0.046495 +v 3.263412 0.200000 0.055836 +v 3.263412 -0.200000 0.000000 +v 3.332693 -0.200000 0.000000 +v 3.332693 -0.200000 0.046495 +v 3.263412 -0.200000 0.055836 +v 3.263412 0.200000 0.000000 +v 3.263412 0.200000 0.055836 +v 3.332693 0.200000 0.046495 +v 3.332693 0.200000 0.000000 +v 3.263412 -0.200000 0.000000 +v 3.263412 0.200000 0.000000 +v 3.332693 0.200000 0.000000 +v 3.332693 -0.200000 0.000000 +v 3.332693 -0.200000 0.046495 +v 3.401974 -0.200000 0.037919 +v 3.401974 0.200000 0.037919 +v 3.332693 0.200000 0.046495 +v 3.332693 -0.200000 0.000000 +v 3.401974 -0.200000 0.000000 +v 3.401974 -0.200000 0.037919 +v 3.332693 -0.200000 0.046495 +v 3.332693 0.200000 0.000000 +v 3.332693 0.200000 0.046495 +v 3.401974 0.200000 0.037919 +v 3.401974 0.200000 0.000000 +v 3.332693 -0.200000 0.000000 +v 3.332693 0.200000 0.000000 +v 3.401974 0.200000 0.000000 +v 3.401974 -0.200000 0.000000 +v 3.401974 -0.200000 0.037919 +v 3.471256 -0.200000 0.030144 +v 3.471256 0.200000 0.030144 +v 3.401974 0.200000 0.037919 +v 3.401974 -0.200000 0.000000 +v 3.471256 -0.200000 0.000000 +v 3.471256 -0.200000 0.030144 +v 3.401974 -0.200000 0.037919 +v 3.401974 0.200000 0.000000 +v 3.401974 0.200000 0.037919 +v 3.471256 0.200000 0.030144 +v 3.471256 0.200000 0.000000 +v 3.401974 -0.200000 0.000000 +v 3.401974 0.200000 0.000000 +v 3.471256 0.200000 0.000000 +v 3.471256 -0.200000 0.000000 +v 3.471256 -0.200000 0.030144 +v 3.540537 -0.200000 0.023204 +v 3.540537 0.200000 0.023204 +v 3.471256 0.200000 0.030144 +v 3.471256 -0.200000 0.000000 +v 3.540537 -0.200000 0.000000 +v 3.540537 -0.200000 0.023204 +v 3.471256 -0.200000 0.030144 +v 3.471256 0.200000 0.000000 +v 3.471256 0.200000 0.030144 +v 3.540537 0.200000 0.023204 +v 3.540537 0.200000 0.000000 +v 3.471256 -0.200000 0.000000 +v 3.471256 0.200000 0.000000 +v 3.540537 0.200000 0.000000 +v 3.540537 -0.200000 0.000000 +v 3.540537 -0.200000 0.023204 +v 3.609819 -0.200000 0.017127 +v 3.609819 0.200000 0.017127 +v 3.540537 0.200000 0.023204 +v 3.540537 -0.200000 0.000000 +v 3.609819 -0.200000 0.000000 +v 3.609819 -0.200000 0.017127 +v 3.540537 -0.200000 0.023204 +v 3.540537 0.200000 0.000000 +v 3.540537 0.200000 0.023204 +v 3.609819 0.200000 0.017127 +v 3.609819 0.200000 0.000000 +v 3.540537 -0.200000 0.000000 +v 3.540537 0.200000 0.000000 +v 3.609819 0.200000 0.000000 +v 3.609819 -0.200000 0.000000 +v 3.609819 -0.200000 0.017127 +v 3.679100 -0.200000 0.011941 +v 3.679100 0.200000 0.011941 +v 3.609819 0.200000 0.017127 +v 3.609819 -0.200000 0.000000 +v 3.679100 -0.200000 0.000000 +v 3.679100 -0.200000 0.011941 +v 3.609819 -0.200000 0.017127 +v 3.609819 0.200000 0.000000 +v 3.609819 0.200000 0.017127 +v 3.679100 0.200000 0.011941 +v 3.679100 0.200000 0.000000 +v 3.609819 -0.200000 0.000000 +v 3.609819 0.200000 0.000000 +v 3.679100 0.200000 0.000000 +v 3.679100 -0.200000 0.000000 +v 3.679100 -0.200000 0.011941 +v 3.748381 -0.200000 0.007667 +v 3.748381 0.200000 0.007667 +v 3.679100 0.200000 0.011941 +v 3.679100 -0.200000 0.000000 +v 3.748381 -0.200000 0.000000 +v 3.748381 -0.200000 0.007667 +v 3.679100 -0.200000 0.011941 +v 3.679100 0.200000 0.000000 +v 3.679100 0.200000 0.011941 +v 3.748381 0.200000 0.007667 +v 3.748381 0.200000 0.000000 +v 3.679100 -0.200000 0.000000 +v 3.679100 0.200000 0.000000 +v 3.748381 0.200000 0.000000 +v 3.748381 -0.200000 0.000000 +v 3.748381 -0.200000 0.007667 +v 3.817663 -0.200000 0.004323 +v 3.817663 0.200000 0.004323 +v 3.748381 0.200000 0.007667 +v 3.748381 -0.200000 0.000000 +v 3.817663 -0.200000 0.000000 +v 3.817663 -0.200000 0.004323 +v 3.748381 -0.200000 0.007667 +v 3.748381 0.200000 0.000000 +v 3.748381 0.200000 0.007667 +v 3.817663 0.200000 0.004323 +v 3.817663 0.200000 0.000000 +v 3.748381 -0.200000 0.000000 +v 3.748381 0.200000 0.000000 +v 3.817663 0.200000 0.000000 +v 3.817663 -0.200000 0.000000 +v 3.817663 -0.200000 0.004323 +v 3.886944 -0.200000 0.001925 +v 3.886944 0.200000 0.001925 +v 3.817663 0.200000 0.004323 +v 3.817663 -0.200000 0.000000 +v 3.886944 -0.200000 0.000000 +v 3.886944 -0.200000 0.001925 +v 3.817663 -0.200000 0.004323 +v 3.817663 0.200000 0.000000 +v 3.817663 0.200000 0.004323 +v 3.886944 0.200000 0.001925 +v 3.886944 0.200000 0.000000 +v 3.817663 -0.200000 0.000000 +v 3.817663 0.200000 0.000000 +v 3.886944 0.200000 0.000000 +v 3.886944 -0.200000 0.000000 +v 3.886944 -0.200000 0.001925 +v 3.956226 -0.200000 0.000482 +v 3.956226 0.200000 0.000482 +v 3.886944 0.200000 0.001925 +v 3.886944 -0.200000 0.000000 +v 3.956226 -0.200000 0.000000 +v 3.956226 -0.200000 0.000482 +v 3.886944 -0.200000 0.001925 +v 3.886944 0.200000 0.000000 +v 3.886944 0.200000 0.001925 +v 3.956226 0.200000 0.000482 +v 3.956226 0.200000 0.000000 +v 3.886944 -0.200000 0.000000 +v 3.886944 0.200000 0.000000 +v 3.956226 0.200000 0.000000 +v 3.956226 -0.200000 0.000000 +v 3.956226 -0.200000 0.000482 +v 4.025507 -0.200000 0.000000 +v 4.025507 0.200000 0.000000 +v 3.956226 0.200000 0.000482 +v 3.956226 -0.200000 0.000000 +v 4.025507 -0.200000 0.000000 +v 4.025507 -0.200000 0.000000 +v 3.956226 -0.200000 0.000482 +v 3.956226 0.200000 0.000000 +v 3.956226 0.200000 0.000482 +v 4.025507 0.200000 0.000000 +v 4.025507 0.200000 0.000000 +v 3.956226 -0.200000 0.000000 +v 3.956226 0.200000 0.000000 +v 4.025507 0.200000 0.000000 +v 4.025507 -0.200000 0.000000 +v -0.700000 -0.200000 0.000000 +v -0.700000 0.200000 0.000000 +v -0.700000 0.200000 0.400000 +v -0.700000 -0.200000 0.400000 +v 0.700000 -0.200000 0.400000 +v 0.700000 0.200000 0.400000 +v 0.700000 0.200000 0.000000 +v 0.700000 -0.200000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.034642 +vt 0.200000 0.034642 +vt 0.200000 0.000000 +vt -2.012754 0.000000 +vt -1.978113 0.000000 +vt -1.978113 0.000241 +vt -2.012754 0.000000 +vt -2.012754 0.000000 +vt -2.012754 0.000000 +vt -1.978113 0.000241 +vt -1.978113 0.000000 +vt -2.012754 -0.100000 +vt -2.012754 0.100000 +vt -1.978113 0.100000 +vt -1.978113 -0.100000 +vt 0.000000 0.034642 +vt 0.000000 0.069290 +vt 0.200000 0.069290 +vt 0.200000 0.034642 +vt -1.978113 0.000000 +vt -1.943472 0.000000 +vt -1.943472 0.000962 +vt -1.978113 0.000241 +vt -1.978113 0.000000 +vt -1.978113 0.000241 +vt -1.943472 0.000962 +vt -1.943472 0.000000 +vt -1.978113 -0.100000 +vt -1.978113 0.100000 +vt -1.943472 0.100000 +vt -1.943472 -0.100000 +vt 0.000000 0.069290 +vt 0.000000 0.103951 +vt 0.200000 0.103951 +vt 0.200000 0.069290 +vt -1.943472 0.000000 +vt -1.908831 0.000000 +vt -1.908831 0.002162 +vt -1.943472 0.000962 +vt -1.943472 0.000000 +vt -1.943472 0.000962 +vt -1.908831 0.002162 +vt -1.908831 0.000000 +vt -1.943472 -0.100000 +vt -1.943472 0.100000 +vt -1.908831 0.100000 +vt -1.908831 -0.100000 +vt 0.000000 0.103951 +vt 0.000000 0.138632 +vt 0.200000 0.138632 +vt 0.200000 0.103951 +vt -1.908831 0.000000 +vt -1.874191 0.000000 +vt -1.874191 0.003833 +vt -1.908831 0.002162 +vt -1.908831 0.000000 +vt -1.908831 0.002162 +vt -1.874191 0.003833 +vt -1.874191 0.000000 +vt -1.908831 -0.100000 +vt -1.908831 0.100000 +vt -1.874191 0.100000 +vt -1.874191 -0.100000 +vt 0.000000 0.138632 +vt 0.000000 0.173339 +vt 0.200000 0.173339 +vt 0.200000 0.138632 +vt -1.874191 0.000000 +vt -1.839550 0.000000 +vt -1.839550 0.005970 +vt -1.874191 0.003833 +vt -1.874191 0.000000 +vt -1.874191 0.003833 +vt -1.839550 0.005970 +vt -1.839550 0.000000 +vt -1.874191 -0.100000 +vt -1.874191 0.100000 +vt -1.839550 0.100000 +vt -1.839550 -0.100000 +vt 0.000000 0.173339 +vt 0.000000 0.208076 +vt 0.200000 0.208076 +vt 0.200000 0.173339 +vt -1.839550 0.000000 +vt -1.804909 0.000000 +vt -1.804909 0.008564 +vt -1.839550 0.005970 +vt -1.839550 0.000000 +vt -1.839550 0.005970 +vt -1.804909 0.008564 +vt -1.804909 0.000000 +vt -1.839550 -0.100000 +vt -1.839550 0.100000 +vt -1.804909 0.100000 +vt -1.804909 -0.100000 +vt 0.000000 0.208076 +vt 0.000000 0.242850 +vt 0.200000 0.242850 +vt 0.200000 0.208076 +vt -1.804909 0.000000 +vt -1.770269 0.000000 +vt -1.770269 0.011602 +vt -1.804909 0.008564 +vt -1.804909 0.000000 +vt -1.804909 0.008564 +vt -1.770269 0.011602 +vt -1.770269 0.000000 +vt -1.804909 -0.100000 +vt -1.804909 0.100000 +vt -1.770269 0.100000 +vt -1.770269 -0.100000 +vt 0.000000 0.242850 +vt 0.000000 0.277664 +vt 0.200000 0.277664 +vt 0.200000 0.242850 +vt -1.770269 0.000000 +vt -1.735628 0.000000 +vt -1.735628 0.015072 +vt -1.770269 0.011602 +vt -1.770269 0.000000 +vt -1.770269 0.011602 +vt -1.735628 0.015072 +vt -1.735628 0.000000 +vt -1.770269 -0.100000 +vt -1.770269 0.100000 +vt -1.735628 0.100000 +vt -1.735628 -0.100000 +vt 0.000000 0.277664 +vt 0.000000 0.312522 +vt 0.200000 0.312522 +vt 0.200000 0.277664 +vt -1.735628 0.000000 +vt -1.700987 0.000000 +vt -1.700987 0.018960 +vt -1.735628 0.015072 +vt -1.735628 0.000000 +vt -1.735628 0.015072 +vt -1.700987 0.018960 +vt -1.700987 0.000000 +vt -1.735628 -0.100000 +vt -1.735628 0.100000 +vt -1.700987 0.100000 +vt -1.700987 -0.100000 +vt 0.000000 0.312522 +vt 0.000000 0.347427 +vt 0.200000 0.347427 +vt 0.200000 0.312522 +vt -1.700987 0.000000 +vt -1.666347 0.000000 +vt -1.666347 0.023248 +vt -1.700987 0.018960 +vt -1.700987 0.000000 +vt -1.700987 0.018960 +vt -1.666347 0.023248 +vt -1.666347 0.000000 +vt -1.700987 -0.100000 +vt -1.700987 0.100000 +vt -1.666347 0.100000 +vt -1.666347 -0.100000 +vt 0.000000 0.347427 +vt 0.000000 0.382382 +vt 0.200000 0.382382 +vt 0.200000 0.347427 +vt -1.666347 0.000000 +vt -1.631706 0.000000 +vt -1.631706 0.027918 +vt -1.666347 0.023248 +vt -1.666347 0.000000 +vt -1.666347 0.023248 +vt -1.631706 0.027918 +vt -1.631706 0.000000 +vt -1.666347 -0.100000 +vt -1.666347 0.100000 +vt -1.631706 0.100000 +vt -1.631706 -0.100000 +vt 0.000000 0.382382 +vt 0.000000 0.417386 +vt 0.200000 0.417386 +vt 0.200000 0.382382 +vt -1.631706 0.000000 +vt -1.597065 0.000000 +vt -1.597065 0.032950 +vt -1.631706 0.027918 +vt -1.631706 0.000000 +vt -1.631706 0.027918 +vt -1.597065 0.032950 +vt -1.597065 0.000000 +vt -1.631706 -0.100000 +vt -1.631706 0.100000 +vt -1.597065 0.100000 +vt -1.597065 -0.100000 +vt 0.000000 0.417386 +vt 0.000000 0.452441 +vt 0.200000 0.452441 +vt 0.200000 0.417386 +vt -1.597065 0.000000 +vt -1.562424 0.000000 +vt -1.562424 0.038324 +vt -1.597065 0.032950 +vt -1.597065 0.000000 +vt -1.597065 0.032950 +vt -1.562424 0.038324 +vt -1.562424 0.000000 +vt -1.597065 -0.100000 +vt -1.597065 0.100000 +vt -1.562424 0.100000 +vt -1.562424 -0.100000 +vt 0.000000 0.452441 +vt 0.000000 0.487546 +vt 0.200000 0.487546 +vt 0.200000 0.452441 +vt -1.562424 0.000000 +vt -1.527784 0.000000 +vt -1.527784 0.044014 +vt -1.562424 0.038324 +vt -1.562424 0.000000 +vt -1.562424 0.038324 +vt -1.527784 0.044014 +vt -1.527784 0.000000 +vt -1.562424 -0.100000 +vt -1.562424 0.100000 +vt -1.527784 0.100000 +vt -1.527784 -0.100000 +vt 0.000000 0.487546 +vt 0.000000 0.522700 +vt 0.200000 0.522700 +vt 0.200000 0.487546 +vt -1.527784 0.000000 +vt -1.493143 0.000000 +vt -1.493143 0.049998 +vt -1.527784 0.044014 +vt -1.527784 0.000000 +vt -1.527784 0.044014 +vt -1.493143 0.049998 +vt -1.493143 0.000000 +vt -1.527784 -0.100000 +vt -1.527784 0.100000 +vt -1.493143 0.100000 +vt -1.493143 -0.100000 +vt 0.000000 0.522700 +vt 0.000000 0.557900 +vt 0.200000 0.557900 +vt 0.200000 0.522700 +vt -1.493143 0.000000 +vt -1.458502 0.000000 +vt -1.458502 0.056250 +vt -1.493143 0.049998 +vt -1.493143 0.000000 +vt -1.493143 0.049998 +vt -1.458502 0.056250 +vt -1.458502 0.000000 +vt -1.493143 -0.100000 +vt -1.493143 0.100000 +vt -1.458502 0.100000 +vt -1.458502 -0.100000 +vt 0.000000 0.557900 +vt 0.000000 0.593144 +vt 0.200000 0.593144 +vt 0.200000 0.557900 +vt -1.458502 0.000000 +vt -1.423862 0.000000 +vt -1.423862 0.062743 +vt -1.458502 0.056250 +vt -1.458502 0.000000 +vt -1.458502 0.056250 +vt -1.423862 0.062743 +vt -1.423862 0.000000 +vt -1.458502 -0.100000 +vt -1.458502 0.100000 +vt -1.423862 0.100000 +vt -1.423862 -0.100000 +vt 0.000000 0.593144 +vt 0.000000 0.628427 +vt 0.200000 0.628427 +vt 0.200000 0.593144 +vt -1.423862 0.000000 +vt -1.389221 0.000000 +vt -1.389221 0.069448 +vt -1.423862 0.062743 +vt -1.423862 0.000000 +vt -1.423862 0.062743 +vt -1.389221 0.069448 +vt -1.389221 0.000000 +vt -1.423862 -0.100000 +vt -1.423862 0.100000 +vt -1.389221 0.100000 +vt -1.389221 -0.100000 +vt 0.000000 0.628427 +vt 0.000000 0.663747 +vt 0.200000 0.663747 +vt 0.200000 0.628427 +vt -1.389221 0.000000 +vt -1.354580 0.000000 +vt -1.354580 0.076338 +vt -1.389221 0.069448 +vt -1.389221 0.000000 +vt -1.389221 0.069448 +vt -1.354580 0.076338 +vt -1.354580 0.000000 +vt -1.389221 -0.100000 +vt -1.389221 0.100000 +vt -1.354580 0.100000 +vt -1.354580 -0.100000 +vt 0.000000 0.663747 +vt 0.000000 0.699097 +vt 0.200000 0.699097 +vt 0.200000 0.663747 +vt -1.354580 0.000000 +vt -1.319940 0.000000 +vt -1.319940 0.083383 +vt -1.354580 0.076338 +vt -1.354580 0.000000 +vt -1.354580 0.076338 +vt -1.319940 0.083383 +vt -1.319940 0.000000 +vt -1.354580 -0.100000 +vt -1.354580 0.100000 +vt -1.319940 0.100000 +vt -1.319940 -0.100000 +vt 0.000000 0.699097 +vt 0.000000 0.734471 +vt 0.200000 0.734471 +vt 0.200000 0.699097 +vt -1.319940 0.000000 +vt -1.285299 0.000000 +vt -1.285299 0.090552 +vt -1.319940 0.083383 +vt -1.319940 0.000000 +vt -1.319940 0.083383 +vt -1.285299 0.090552 +vt -1.285299 0.000000 +vt -1.319940 -0.100000 +vt -1.319940 0.100000 +vt -1.285299 0.100000 +vt -1.285299 -0.100000 +vt 0.000000 0.734471 +vt 0.000000 0.769865 +vt 0.200000 0.769865 +vt 0.200000 0.734471 +vt -1.285299 0.000000 +vt -1.250658 0.000000 +vt -1.250658 0.097816 +vt -1.285299 0.090552 +vt -1.285299 0.000000 +vt -1.285299 0.090552 +vt -1.250658 0.097816 +vt -1.250658 0.000000 +vt -1.285299 -0.100000 +vt -1.285299 0.100000 +vt -1.250658 0.100000 +vt -1.250658 -0.100000 +vt 0.000000 0.769865 +vt 0.000000 0.805272 +vt 0.200000 0.805272 +vt 0.200000 0.769865 +vt -1.250658 0.000000 +vt -1.216017 0.000000 +vt -1.216017 0.105142 +vt -1.250658 0.097816 +vt -1.250658 0.000000 +vt -1.250658 0.097816 +vt -1.216017 0.105142 +vt -1.216017 0.000000 +vt -1.250658 -0.100000 +vt -1.250658 0.100000 +vt -1.216017 0.100000 +vt -1.216017 -0.100000 +vt 0.000000 0.805272 +vt 0.000000 0.840686 +vt 0.200000 0.840686 +vt 0.200000 0.805272 +vt -1.216017 0.000000 +vt -1.181377 0.000000 +vt -1.181377 0.112500 +vt -1.216017 0.105142 +vt -1.216017 0.000000 +vt -1.216017 0.105142 +vt -1.181377 0.112500 +vt -1.181377 0.000000 +vt -1.216017 -0.100000 +vt -1.216017 0.100000 +vt -1.181377 0.100000 +vt -1.181377 -0.100000 +vt 0.000000 0.840686 +vt 0.000000 0.876099 +vt 0.200000 0.876099 +vt 0.200000 0.840686 +vt -1.181377 0.000000 +vt -1.146736 0.000000 +vt -1.146736 0.119858 +vt -1.181377 0.112500 +vt -1.181377 0.000000 +vt -1.181377 0.112500 +vt -1.146736 0.119858 +vt -1.146736 0.000000 +vt -1.181377 -0.100000 +vt -1.181377 0.100000 +vt -1.146736 0.100000 +vt -1.146736 -0.100000 +vt 0.000000 0.876099 +vt 0.000000 0.911506 +vt 0.200000 0.911506 +vt 0.200000 0.876099 +vt -1.146736 0.000000 +vt -1.112095 0.000000 +vt -1.112095 0.127184 +vt -1.146736 0.119858 +vt -1.146736 0.000000 +vt -1.146736 0.119858 +vt -1.112095 0.127184 +vt -1.112095 0.000000 +vt -1.146736 -0.100000 +vt -1.146736 0.100000 +vt -1.112095 0.100000 +vt -1.112095 -0.100000 +vt 0.000000 0.911506 +vt 0.000000 0.946900 +vt 0.200000 0.946900 +vt 0.200000 0.911506 +vt -1.112095 0.000000 +vt -1.077455 0.000000 +vt -1.077455 0.134448 +vt -1.112095 0.127184 +vt -1.112095 0.000000 +vt -1.112095 0.127184 +vt -1.077455 0.134448 +vt -1.077455 0.000000 +vt -1.112095 -0.100000 +vt -1.112095 0.100000 +vt -1.077455 0.100000 +vt -1.077455 -0.100000 +vt 0.000000 0.946900 +vt 0.000000 0.982275 +vt 0.200000 0.982275 +vt 0.200000 0.946900 +vt -1.077455 0.000000 +vt -1.042814 0.000000 +vt -1.042814 0.141617 +vt -1.077455 0.134448 +vt -1.077455 0.000000 +vt -1.077455 0.134448 +vt -1.042814 0.141617 +vt -1.042814 0.000000 +vt -1.077455 -0.100000 +vt -1.077455 0.100000 +vt -1.042814 0.100000 +vt -1.042814 -0.100000 +vt 0.000000 0.982275 +vt 0.000000 1.017625 +vt 0.200000 1.017625 +vt 0.200000 0.982275 +vt -1.042814 0.000000 +vt -1.008173 0.000000 +vt -1.008173 0.148662 +vt -1.042814 0.141617 +vt -1.042814 0.000000 +vt -1.042814 0.141617 +vt -1.008173 0.148662 +vt -1.008173 0.000000 +vt -1.042814 -0.100000 +vt -1.042814 0.100000 +vt -1.008173 0.100000 +vt -1.008173 -0.100000 +vt 0.000000 1.017625 +vt 0.000000 1.052944 +vt 0.200000 1.052944 +vt 0.200000 1.017625 +vt -1.008173 0.000000 +vt -0.973533 0.000000 +vt -0.973533 0.155552 +vt -1.008173 0.148662 +vt -1.008173 0.000000 +vt -1.008173 0.148662 +vt -0.973533 0.155552 +vt -0.973533 0.000000 +vt -1.008173 -0.100000 +vt -1.008173 0.100000 +vt -0.973533 0.100000 +vt -0.973533 -0.100000 +vt 0.000000 1.052944 +vt 0.000000 1.088228 +vt 0.200000 1.088228 +vt 0.200000 1.052944 +vt -0.973533 0.000000 +vt -0.938892 0.000000 +vt -0.938892 0.162257 +vt -0.973533 0.155552 +vt -0.973533 0.000000 +vt -0.973533 0.155552 +vt -0.938892 0.162257 +vt -0.938892 0.000000 +vt -0.973533 -0.100000 +vt -0.973533 0.100000 +vt -0.938892 0.100000 +vt -0.938892 -0.100000 +vt 0.000000 1.088228 +vt 0.000000 1.123472 +vt 0.200000 1.123472 +vt 0.200000 1.088228 +vt -0.938892 0.000000 +vt -0.904251 0.000000 +vt -0.904251 0.168750 +vt -0.938892 0.162257 +vt -0.938892 0.000000 +vt -0.938892 0.162257 +vt -0.904251 0.168750 +vt -0.904251 0.000000 +vt -0.938892 -0.100000 +vt -0.938892 0.100000 +vt -0.904251 0.100000 +vt -0.904251 -0.100000 +vt 0.000000 1.123472 +vt 0.000000 1.158672 +vt 0.200000 1.158672 +vt 0.200000 1.123472 +vt -0.904251 0.000000 +vt -0.869610 0.000000 +vt -0.869610 0.175002 +vt -0.904251 0.168750 +vt -0.904251 0.000000 +vt -0.904251 0.168750 +vt -0.869610 0.175002 +vt -0.869610 0.000000 +vt -0.904251 -0.100000 +vt -0.904251 0.100000 +vt -0.869610 0.100000 +vt -0.869610 -0.100000 +vt 0.000000 1.158672 +vt 0.000000 1.193826 +vt 0.200000 1.193826 +vt 0.200000 1.158672 +vt -0.869610 0.000000 +vt -0.834970 0.000000 +vt -0.834970 0.180986 +vt -0.869610 0.175002 +vt -0.869610 0.000000 +vt -0.869610 0.175002 +vt -0.834970 0.180986 +vt -0.834970 0.000000 +vt -0.869610 -0.100000 +vt -0.869610 0.100000 +vt -0.834970 0.100000 +vt -0.834970 -0.100000 +vt 0.000000 1.193826 +vt 0.000000 1.228931 +vt 0.200000 1.228931 +vt 0.200000 1.193826 +vt -0.834970 0.000000 +vt -0.800329 0.000000 +vt -0.800329 0.186676 +vt -0.834970 0.180986 +vt -0.834970 0.000000 +vt -0.834970 0.180986 +vt -0.800329 0.186676 +vt -0.800329 0.000000 +vt -0.834970 -0.100000 +vt -0.834970 0.100000 +vt -0.800329 0.100000 +vt -0.800329 -0.100000 +vt 0.000000 1.228931 +vt 0.000000 1.263986 +vt 0.200000 1.263986 +vt 0.200000 1.228931 +vt -0.800329 0.000000 +vt -0.765688 0.000000 +vt -0.765688 0.192050 +vt -0.800329 0.186676 +vt -0.800329 0.000000 +vt -0.800329 0.186676 +vt -0.765688 0.192050 +vt -0.765688 0.000000 +vt -0.800329 -0.100000 +vt -0.800329 0.100000 +vt -0.765688 0.100000 +vt -0.765688 -0.100000 +vt 0.000000 1.263986 +vt 0.000000 1.298990 +vt 0.200000 1.298990 +vt 0.200000 1.263986 +vt -0.765688 0.000000 +vt -0.731048 0.000000 +vt -0.731048 0.197082 +vt -0.765688 0.192050 +vt -0.765688 0.000000 +vt -0.765688 0.192050 +vt -0.731048 0.197082 +vt -0.731048 0.000000 +vt -0.765688 -0.100000 +vt -0.765688 0.100000 +vt -0.731048 0.100000 +vt -0.731048 -0.100000 +vt 0.000000 1.298990 +vt 0.000000 1.333944 +vt 0.200000 1.333944 +vt 0.200000 1.298990 +vt -0.731048 0.000000 +vt -0.696407 0.000000 +vt -0.696407 0.201752 +vt -0.731048 0.197082 +vt -0.731048 0.000000 +vt -0.731048 0.197082 +vt -0.696407 0.201752 +vt -0.696407 0.000000 +vt -0.731048 -0.100000 +vt -0.731048 0.100000 +vt -0.696407 0.100000 +vt -0.696407 -0.100000 +vt 0.000000 1.333944 +vt 0.000000 1.368849 +vt 0.200000 1.368849 +vt 0.200000 1.333944 +vt -0.696407 0.000000 +vt -0.661766 0.000000 +vt -0.661766 0.206040 +vt -0.696407 0.201752 +vt -0.696407 0.000000 +vt -0.696407 0.201752 +vt -0.661766 0.206040 +vt -0.661766 0.000000 +vt -0.696407 -0.100000 +vt -0.696407 0.100000 +vt -0.661766 0.100000 +vt -0.661766 -0.100000 +vt 0.000000 1.368849 +vt 0.000000 1.403708 +vt 0.200000 1.403708 +vt 0.200000 1.368849 +vt -0.661766 0.000000 +vt -0.627126 0.000000 +vt -0.627126 0.209928 +vt -0.661766 0.206040 +vt -0.661766 0.000000 +vt -0.661766 0.206040 +vt -0.627126 0.209928 +vt -0.627126 0.000000 +vt -0.661766 -0.100000 +vt -0.661766 0.100000 +vt -0.627126 0.100000 +vt -0.627126 -0.100000 +vt 0.000000 1.403708 +vt 0.000000 1.438522 +vt 0.200000 1.438522 +vt 0.200000 1.403708 +vt -0.627126 0.000000 +vt -0.592485 0.000000 +vt -0.592485 0.213398 +vt -0.627126 0.209928 +vt -0.627126 0.000000 +vt -0.627126 0.209928 +vt -0.592485 0.213398 +vt -0.592485 0.000000 +vt -0.627126 -0.100000 +vt -0.627126 0.100000 +vt -0.592485 0.100000 +vt -0.592485 -0.100000 +vt 0.000000 1.438522 +vt 0.000000 1.473295 +vt 0.200000 1.473295 +vt 0.200000 1.438522 +vt -0.592485 0.000000 +vt -0.557844 0.000000 +vt -0.557844 0.216436 +vt -0.592485 0.213398 +vt -0.592485 0.000000 +vt -0.592485 0.213398 +vt -0.557844 0.216436 +vt -0.557844 0.000000 +vt -0.592485 -0.100000 +vt -0.592485 0.100000 +vt -0.557844 0.100000 +vt -0.557844 -0.100000 +vt 0.000000 1.473295 +vt 0.000000 1.508033 +vt 0.200000 1.508033 +vt 0.200000 1.473295 +vt -0.557844 0.000000 +vt -0.523203 0.000000 +vt -0.523203 0.219030 +vt -0.557844 0.216436 +vt -0.557844 0.000000 +vt -0.557844 0.216436 +vt -0.523203 0.219030 +vt -0.523203 0.000000 +vt -0.557844 -0.100000 +vt -0.557844 0.100000 +vt -0.523203 0.100000 +vt -0.523203 -0.100000 +vt 0.000000 1.508033 +vt 0.000000 1.542739 +vt 0.200000 1.542739 +vt 0.200000 1.508033 +vt -0.523203 0.000000 +vt -0.488563 0.000000 +vt -0.488563 0.221167 +vt -0.523203 0.219030 +vt -0.523203 0.000000 +vt -0.523203 0.219030 +vt -0.488563 0.221167 +vt -0.488563 0.000000 +vt -0.523203 -0.100000 +vt -0.523203 0.100000 +vt -0.488563 0.100000 +vt -0.488563 -0.100000 +vt 0.000000 1.542739 +vt 0.000000 1.577420 +vt 0.200000 1.577420 +vt 0.200000 1.542739 +vt -0.488563 0.000000 +vt -0.453922 0.000000 +vt -0.453922 0.222838 +vt -0.488563 0.221167 +vt -0.488563 0.000000 +vt -0.488563 0.221167 +vt -0.453922 0.222838 +vt -0.453922 0.000000 +vt -0.488563 -0.100000 +vt -0.488563 0.100000 +vt -0.453922 0.100000 +vt -0.453922 -0.100000 +vt 0.000000 1.577420 +vt 0.000000 1.612082 +vt 0.200000 1.612082 +vt 0.200000 1.577420 +vt -0.453922 0.000000 +vt -0.419281 0.000000 +vt -0.419281 0.224038 +vt -0.453922 0.222838 +vt -0.453922 0.000000 +vt -0.453922 0.222838 +vt -0.419281 0.224038 +vt -0.419281 0.000000 +vt -0.453922 -0.100000 +vt -0.453922 0.100000 +vt -0.419281 0.100000 +vt -0.419281 -0.100000 +vt 0.000000 1.612082 +vt 0.000000 1.646730 +vt 0.200000 1.646730 +vt 0.200000 1.612082 +vt -0.419281 0.000000 +vt -0.384641 0.000000 +vt -0.384641 0.224759 +vt -0.419281 0.224038 +vt -0.419281 0.000000 +vt -0.419281 0.224038 +vt -0.384641 0.224759 +vt -0.384641 0.000000 +vt -0.419281 -0.100000 +vt -0.419281 0.100000 +vt -0.384641 0.100000 +vt -0.384641 -0.100000 +vt 0.000000 1.646730 +vt 0.000000 1.681372 +vt 0.200000 1.681372 +vt 0.200000 1.646730 +vt -0.384641 0.000000 +vt -0.350000 0.000000 +vt -0.350000 0.225000 +vt -0.384641 0.224759 +vt -0.384641 0.000000 +vt -0.384641 0.224759 +vt -0.350000 0.225000 +vt -0.350000 0.000000 +vt -0.384641 -0.100000 +vt -0.384641 0.100000 +vt -0.350000 0.100000 +vt -0.350000 -0.100000 +vt 0.000000 1.681372 +vt 0.000000 2.381372 +vt 0.200000 2.381372 +vt 0.200000 1.681372 +vt -0.350000 0.200000 +vt 0.350000 0.200000 +vt 0.350000 0.225000 +vt -0.350000 0.225000 +vt -0.350000 0.200000 +vt -0.350000 0.225000 +vt 0.350000 0.225000 +vt 0.350000 0.200000 +vt -0.350000 -0.100000 +vt -0.350000 0.100000 +vt 0.350000 0.100000 +vt 0.350000 -0.100000 +vt 0.000000 2.381372 +vt 0.000000 2.416013 +vt 0.200000 2.416013 +vt 0.200000 2.381372 +vt 0.350000 0.000000 +vt 0.384641 0.000000 +vt 0.384641 0.224759 +vt 0.350000 0.225000 +vt 0.350000 0.000000 +vt 0.350000 0.225000 +vt 0.384641 0.224759 +vt 0.384641 0.000000 +vt 0.350000 -0.100000 +vt 0.350000 0.100000 +vt 0.384641 0.100000 +vt 0.384641 -0.100000 +vt 0.000000 2.416013 +vt 0.000000 2.450661 +vt 0.200000 2.450661 +vt 0.200000 2.416013 +vt 0.384641 0.000000 +vt 0.419281 0.000000 +vt 0.419281 0.224038 +vt 0.384641 0.224759 +vt 0.384641 0.000000 +vt 0.384641 0.224759 +vt 0.419281 0.224038 +vt 0.419281 0.000000 +vt 0.384641 -0.100000 +vt 0.384641 0.100000 +vt 0.419281 0.100000 +vt 0.419281 -0.100000 +vt 0.000000 2.450661 +vt 0.000000 2.485323 +vt 0.200000 2.485323 +vt 0.200000 2.450661 +vt 0.419281 0.000000 +vt 0.453922 0.000000 +vt 0.453922 0.222838 +vt 0.419281 0.224038 +vt 0.419281 0.000000 +vt 0.419281 0.224038 +vt 0.453922 0.222838 +vt 0.453922 0.000000 +vt 0.419281 -0.100000 +vt 0.419281 0.100000 +vt 0.453922 0.100000 +vt 0.453922 -0.100000 +vt 0.000000 2.485323 +vt 0.000000 2.520004 +vt 0.200000 2.520004 +vt 0.200000 2.485323 +vt 0.453922 0.000000 +vt 0.488563 0.000000 +vt 0.488563 0.221167 +vt 0.453922 0.222838 +vt 0.453922 0.000000 +vt 0.453922 0.222838 +vt 0.488563 0.221167 +vt 0.488563 0.000000 +vt 0.453922 -0.100000 +vt 0.453922 0.100000 +vt 0.488563 0.100000 +vt 0.488563 -0.100000 +vt 0.000000 2.520004 +vt 0.000000 2.554710 +vt 0.200000 2.554710 +vt 0.200000 2.520004 +vt 0.488563 0.000000 +vt 0.523203 0.000000 +vt 0.523203 0.219030 +vt 0.488563 0.221167 +vt 0.488563 0.000000 +vt 0.488563 0.221167 +vt 0.523203 0.219030 +vt 0.523203 0.000000 +vt 0.488563 -0.100000 +vt 0.488563 0.100000 +vt 0.523203 0.100000 +vt 0.523203 -0.100000 +vt 0.000000 2.554710 +vt 0.000000 2.589448 +vt 0.200000 2.589448 +vt 0.200000 2.554710 +vt 0.523203 0.000000 +vt 0.557844 0.000000 +vt 0.557844 0.216436 +vt 0.523203 0.219030 +vt 0.523203 0.000000 +vt 0.523203 0.219030 +vt 0.557844 0.216436 +vt 0.557844 0.000000 +vt 0.523203 -0.100000 +vt 0.523203 0.100000 +vt 0.557844 0.100000 +vt 0.557844 -0.100000 +vt 0.000000 2.589448 +vt 0.000000 2.624222 +vt 0.200000 2.624222 +vt 0.200000 2.589448 +vt 0.557844 0.000000 +vt 0.592485 0.000000 +vt 0.592485 0.213398 +vt 0.557844 0.216436 +vt 0.557844 0.000000 +vt 0.557844 0.216436 +vt 0.592485 0.213398 +vt 0.592485 0.000000 +vt 0.557844 -0.100000 +vt 0.557844 0.100000 +vt 0.592485 0.100000 +vt 0.592485 -0.100000 +vt 0.000000 2.624222 +vt 0.000000 2.659036 +vt 0.200000 2.659036 +vt 0.200000 2.624222 +vt 0.592485 0.000000 +vt 0.627126 0.000000 +vt 0.627126 0.209928 +vt 0.592485 0.213398 +vt 0.592485 0.000000 +vt 0.592485 0.213398 +vt 0.627126 0.209928 +vt 0.627126 0.000000 +vt 0.592485 -0.100000 +vt 0.592485 0.100000 +vt 0.627126 0.100000 +vt 0.627126 -0.100000 +vt 0.000000 2.659036 +vt 0.000000 2.693894 +vt 0.200000 2.693894 +vt 0.200000 2.659036 +vt 0.627126 0.000000 +vt 0.661766 0.000000 +vt 0.661766 0.206040 +vt 0.627126 0.209928 +vt 0.627126 0.000000 +vt 0.627126 0.209928 +vt 0.661766 0.206040 +vt 0.661766 0.000000 +vt 0.627126 -0.100000 +vt 0.627126 0.100000 +vt 0.661766 0.100000 +vt 0.661766 -0.100000 +vt 0.000000 2.693894 +vt 0.000000 2.728799 +vt 0.200000 2.728799 +vt 0.200000 2.693894 +vt 0.661766 0.000000 +vt 0.696407 0.000000 +vt 0.696407 0.201752 +vt 0.661766 0.206040 +vt 0.661766 0.000000 +vt 0.661766 0.206040 +vt 0.696407 0.201752 +vt 0.696407 0.000000 +vt 0.661766 -0.100000 +vt 0.661766 0.100000 +vt 0.696407 0.100000 +vt 0.696407 -0.100000 +vt 0.000000 2.728799 +vt 0.000000 2.763753 +vt 0.200000 2.763753 +vt 0.200000 2.728799 +vt 0.696407 0.000000 +vt 0.731048 0.000000 +vt 0.731048 0.197082 +vt 0.696407 0.201752 +vt 0.696407 0.000000 +vt 0.696407 0.201752 +vt 0.731048 0.197082 +vt 0.731048 0.000000 +vt 0.696407 -0.100000 +vt 0.696407 0.100000 +vt 0.731048 0.100000 +vt 0.731048 -0.100000 +vt 0.000000 2.763753 +vt 0.000000 2.798758 +vt 0.200000 2.798758 +vt 0.200000 2.763753 +vt 0.731048 0.000000 +vt 0.765688 0.000000 +vt 0.765688 0.192050 +vt 0.731048 0.197082 +vt 0.731048 0.000000 +vt 0.731048 0.197082 +vt 0.765688 0.192050 +vt 0.765688 0.000000 +vt 0.731048 -0.100000 +vt 0.731048 0.100000 +vt 0.765688 0.100000 +vt 0.765688 -0.100000 +vt 0.000000 2.798758 +vt 0.000000 2.833812 +vt 0.200000 2.833812 +vt 0.200000 2.798758 +vt 0.765688 0.000000 +vt 0.800329 0.000000 +vt 0.800329 0.186676 +vt 0.765688 0.192050 +vt 0.765688 0.000000 +vt 0.765688 0.192050 +vt 0.800329 0.186676 +vt 0.800329 0.000000 +vt 0.765688 -0.100000 +vt 0.765688 0.100000 +vt 0.800329 0.100000 +vt 0.800329 -0.100000 +vt 0.000000 2.833812 +vt 0.000000 2.868917 +vt 0.200000 2.868917 +vt 0.200000 2.833812 +vt 0.800329 0.000000 +vt 0.834970 0.000000 +vt 0.834970 0.180986 +vt 0.800329 0.186676 +vt 0.800329 0.000000 +vt 0.800329 0.186676 +vt 0.834970 0.180986 +vt 0.834970 0.000000 +vt 0.800329 -0.100000 +vt 0.800329 0.100000 +vt 0.834970 0.100000 +vt 0.834970 -0.100000 +vt 0.000000 2.868917 +vt 0.000000 2.904071 +vt 0.200000 2.904071 +vt 0.200000 2.868917 +vt 0.834970 0.000000 +vt 0.869610 0.000000 +vt 0.869610 0.175002 +vt 0.834970 0.180986 +vt 0.834970 0.000000 +vt 0.834970 0.180986 +vt 0.869610 0.175002 +vt 0.869610 0.000000 +vt 0.834970 -0.100000 +vt 0.834970 0.100000 +vt 0.869610 0.100000 +vt 0.869610 -0.100000 +vt 0.000000 2.904071 +vt 0.000000 2.939272 +vt 0.200000 2.939272 +vt 0.200000 2.904071 +vt 0.869610 0.000000 +vt 0.904251 0.000000 +vt 0.904251 0.168750 +vt 0.869610 0.175002 +vt 0.869610 0.000000 +vt 0.869610 0.175002 +vt 0.904251 0.168750 +vt 0.904251 0.000000 +vt 0.869610 -0.100000 +vt 0.869610 0.100000 +vt 0.904251 0.100000 +vt 0.904251 -0.100000 +vt 0.000000 2.939272 +vt 0.000000 2.974515 +vt 0.200000 2.974515 +vt 0.200000 2.939272 +vt 0.904251 0.000000 +vt 0.938892 0.000000 +vt 0.938892 0.162257 +vt 0.904251 0.168750 +vt 0.904251 0.000000 +vt 0.904251 0.168750 +vt 0.938892 0.162257 +vt 0.938892 0.000000 +vt 0.904251 -0.100000 +vt 0.904251 0.100000 +vt 0.938892 0.100000 +vt 0.938892 -0.100000 +vt 0.000000 2.974515 +vt 0.000000 3.009799 +vt 0.200000 3.009799 +vt 0.200000 2.974515 +vt 0.938892 0.000000 +vt 0.973533 0.000000 +vt 0.973533 0.155552 +vt 0.938892 0.162257 +vt 0.938892 0.000000 +vt 0.938892 0.162257 +vt 0.973533 0.155552 +vt 0.973533 0.000000 +vt 0.938892 -0.100000 +vt 0.938892 0.100000 +vt 0.973533 0.100000 +vt 0.973533 -0.100000 +vt 0.000000 3.009799 +vt 0.000000 3.045118 +vt 0.200000 3.045118 +vt 0.200000 3.009799 +vt 0.973533 0.000000 +vt 1.008173 0.000000 +vt 1.008173 0.148662 +vt 0.973533 0.155552 +vt 0.973533 0.000000 +vt 0.973533 0.155552 +vt 1.008173 0.148662 +vt 1.008173 0.000000 +vt 0.973533 -0.100000 +vt 0.973533 0.100000 +vt 1.008173 0.100000 +vt 1.008173 -0.100000 +vt 0.000000 3.045118 +vt 0.000000 3.080468 +vt 0.200000 3.080468 +vt 0.200000 3.045118 +vt 1.008173 0.000000 +vt 1.042814 0.000000 +vt 1.042814 0.141617 +vt 1.008173 0.148662 +vt 1.008173 0.000000 +vt 1.008173 0.148662 +vt 1.042814 0.141617 +vt 1.042814 0.000000 +vt 1.008173 -0.100000 +vt 1.008173 0.100000 +vt 1.042814 0.100000 +vt 1.042814 -0.100000 +vt 0.000000 3.080468 +vt 0.000000 3.115843 +vt 0.200000 3.115843 +vt 0.200000 3.080468 +vt 1.042814 0.000000 +vt 1.077455 0.000000 +vt 1.077455 0.134448 +vt 1.042814 0.141617 +vt 1.042814 0.000000 +vt 1.042814 0.141617 +vt 1.077455 0.134448 +vt 1.077455 0.000000 +vt 1.042814 -0.100000 +vt 1.042814 0.100000 +vt 1.077455 0.100000 +vt 1.077455 -0.100000 +vt 0.000000 3.115843 +vt 0.000000 3.151237 +vt 0.200000 3.151237 +vt 0.200000 3.115843 +vt 1.077455 0.000000 +vt 1.112095 0.000000 +vt 1.112095 0.127184 +vt 1.077455 0.134448 +vt 1.077455 0.000000 +vt 1.077455 0.134448 +vt 1.112095 0.127184 +vt 1.112095 0.000000 +vt 1.077455 -0.100000 +vt 1.077455 0.100000 +vt 1.112095 0.100000 +vt 1.112095 -0.100000 +vt 0.000000 3.151237 +vt 0.000000 3.186644 +vt 0.200000 3.186644 +vt 0.200000 3.151237 +vt 1.112095 0.000000 +vt 1.146736 0.000000 +vt 1.146736 0.119858 +vt 1.112095 0.127184 +vt 1.112095 0.000000 +vt 1.112095 0.127184 +vt 1.146736 0.119858 +vt 1.146736 0.000000 +vt 1.112095 -0.100000 +vt 1.112095 0.100000 +vt 1.146736 0.100000 +vt 1.146736 -0.100000 +vt 0.000000 3.186644 +vt 0.000000 3.222058 +vt 0.200000 3.222058 +vt 0.200000 3.186644 +vt 1.146736 0.000000 +vt 1.181377 0.000000 +vt 1.181377 0.112500 +vt 1.146736 0.119858 +vt 1.146736 0.000000 +vt 1.146736 0.119858 +vt 1.181377 0.112500 +vt 1.181377 0.000000 +vt 1.146736 -0.100000 +vt 1.146736 0.100000 +vt 1.181377 0.100000 +vt 1.181377 -0.100000 +vt 0.000000 3.222058 +vt 0.000000 3.257471 +vt 0.200000 3.257471 +vt 0.200000 3.222058 +vt 1.181377 0.000000 +vt 1.216017 0.000000 +vt 1.216017 0.105142 +vt 1.181377 0.112500 +vt 1.181377 0.000000 +vt 1.181377 0.112500 +vt 1.216017 0.105142 +vt 1.216017 0.000000 +vt 1.181377 -0.100000 +vt 1.181377 0.100000 +vt 1.216017 0.100000 +vt 1.216017 -0.100000 +vt 0.000000 3.257471 +vt 0.000000 3.292878 +vt 0.200000 3.292878 +vt 0.200000 3.257471 +vt 1.216017 0.000000 +vt 1.250658 0.000000 +vt 1.250658 0.097816 +vt 1.216017 0.105142 +vt 1.216017 0.000000 +vt 1.216017 0.105142 +vt 1.250658 0.097816 +vt 1.250658 0.000000 +vt 1.216017 -0.100000 +vt 1.216017 0.100000 +vt 1.250658 0.100000 +vt 1.250658 -0.100000 +vt 0.000000 3.292878 +vt 0.000000 3.328272 +vt 0.200000 3.328272 +vt 0.200000 3.292878 +vt 1.250658 0.000000 +vt 1.285299 0.000000 +vt 1.285299 0.090552 +vt 1.250658 0.097816 +vt 1.250658 0.000000 +vt 1.250658 0.097816 +vt 1.285299 0.090552 +vt 1.285299 0.000000 +vt 1.250658 -0.100000 +vt 1.250658 0.100000 +vt 1.285299 0.100000 +vt 1.285299 -0.100000 +vt 0.000000 3.328272 +vt 0.000000 3.363647 +vt 0.200000 3.363647 +vt 0.200000 3.328272 +vt 1.285299 0.000000 +vt 1.319940 0.000000 +vt 1.319940 0.083383 +vt 1.285299 0.090552 +vt 1.285299 0.000000 +vt 1.285299 0.090552 +vt 1.319940 0.083383 +vt 1.319940 0.000000 +vt 1.285299 -0.100000 +vt 1.285299 0.100000 +vt 1.319940 0.100000 +vt 1.319940 -0.100000 +vt 0.000000 3.363647 +vt 0.000000 3.398997 +vt 0.200000 3.398997 +vt 0.200000 3.363647 +vt 1.319940 0.000000 +vt 1.354580 0.000000 +vt 1.354580 0.076338 +vt 1.319940 0.083383 +vt 1.319940 0.000000 +vt 1.319940 0.083383 +vt 1.354580 0.076338 +vt 1.354580 0.000000 +vt 1.319940 -0.100000 +vt 1.319940 0.100000 +vt 1.354580 0.100000 +vt 1.354580 -0.100000 +vt 0.000000 3.398997 +vt 0.000000 3.434316 +vt 0.200000 3.434316 +vt 0.200000 3.398997 +vt 1.354580 0.000000 +vt 1.389221 0.000000 +vt 1.389221 0.069448 +vt 1.354580 0.076338 +vt 1.354580 0.000000 +vt 1.354580 0.076338 +vt 1.389221 0.069448 +vt 1.389221 0.000000 +vt 1.354580 -0.100000 +vt 1.354580 0.100000 +vt 1.389221 0.100000 +vt 1.389221 -0.100000 +vt 0.000000 3.434316 +vt 0.000000 3.469600 +vt 0.200000 3.469600 +vt 0.200000 3.434316 +vt 1.389221 0.000000 +vt 1.423862 0.000000 +vt 1.423862 0.062743 +vt 1.389221 0.069448 +vt 1.389221 0.000000 +vt 1.389221 0.069448 +vt 1.423862 0.062743 +vt 1.423862 0.000000 +vt 1.389221 -0.100000 +vt 1.389221 0.100000 +vt 1.423862 0.100000 +vt 1.423862 -0.100000 +vt 0.000000 3.469600 +vt 0.000000 3.504844 +vt 0.200000 3.504844 +vt 0.200000 3.469600 +vt 1.423862 0.000000 +vt 1.458502 0.000000 +vt 1.458502 0.056250 +vt 1.423862 0.062743 +vt 1.423862 0.000000 +vt 1.423862 0.062743 +vt 1.458502 0.056250 +vt 1.458502 0.000000 +vt 1.423862 -0.100000 +vt 1.423862 0.100000 +vt 1.458502 0.100000 +vt 1.458502 -0.100000 +vt 0.000000 3.504844 +vt 0.000000 3.540044 +vt 0.200000 3.540044 +vt 0.200000 3.504844 +vt 1.458502 0.000000 +vt 1.493143 0.000000 +vt 1.493143 0.049998 +vt 1.458502 0.056250 +vt 1.458502 0.000000 +vt 1.458502 0.056250 +vt 1.493143 0.049998 +vt 1.493143 0.000000 +vt 1.458502 -0.100000 +vt 1.458502 0.100000 +vt 1.493143 0.100000 +vt 1.493143 -0.100000 +vt 0.000000 3.540044 +vt 0.000000 3.575198 +vt 0.200000 3.575198 +vt 0.200000 3.540044 +vt 1.493143 0.000000 +vt 1.527784 0.000000 +vt 1.527784 0.044014 +vt 1.493143 0.049998 +vt 1.493143 0.000000 +vt 1.493143 0.049998 +vt 1.527784 0.044014 +vt 1.527784 0.000000 +vt 1.493143 -0.100000 +vt 1.493143 0.100000 +vt 1.527784 0.100000 +vt 1.527784 -0.100000 +vt 0.000000 3.575198 +vt 0.000000 3.610303 +vt 0.200000 3.610303 +vt 0.200000 3.575198 +vt 1.527784 0.000000 +vt 1.562424 0.000000 +vt 1.562424 0.038324 +vt 1.527784 0.044014 +vt 1.527784 0.000000 +vt 1.527784 0.044014 +vt 1.562424 0.038324 +vt 1.562424 0.000000 +vt 1.527784 -0.100000 +vt 1.527784 0.100000 +vt 1.562424 0.100000 +vt 1.562424 -0.100000 +vt 0.000000 3.610303 +vt 0.000000 3.645358 +vt 0.200000 3.645358 +vt 0.200000 3.610303 +vt 1.562424 0.000000 +vt 1.597065 0.000000 +vt 1.597065 0.032950 +vt 1.562424 0.038324 +vt 1.562424 0.000000 +vt 1.562424 0.038324 +vt 1.597065 0.032950 +vt 1.597065 0.000000 +vt 1.562424 -0.100000 +vt 1.562424 0.100000 +vt 1.597065 0.100000 +vt 1.597065 -0.100000 +vt 0.000000 3.645358 +vt 0.000000 3.680362 +vt 0.200000 3.680362 +vt 0.200000 3.645358 +vt 1.597065 0.000000 +vt 1.631706 0.000000 +vt 1.631706 0.027918 +vt 1.597065 0.032950 +vt 1.597065 0.000000 +vt 1.597065 0.032950 +vt 1.631706 0.027918 +vt 1.631706 0.000000 +vt 1.597065 -0.100000 +vt 1.597065 0.100000 +vt 1.631706 0.100000 +vt 1.631706 -0.100000 +vt 0.000000 3.680362 +vt 0.000000 3.715316 +vt 0.200000 3.715316 +vt 0.200000 3.680362 +vt 1.631706 0.000000 +vt 1.666347 0.000000 +vt 1.666347 0.023248 +vt 1.631706 0.027918 +vt 1.631706 0.000000 +vt 1.631706 0.027918 +vt 1.666347 0.023248 +vt 1.666347 0.000000 +vt 1.631706 -0.100000 +vt 1.631706 0.100000 +vt 1.666347 0.100000 +vt 1.666347 -0.100000 +vt 0.000000 3.715316 +vt 0.000000 3.750221 +vt 0.200000 3.750221 +vt 0.200000 3.715316 +vt 1.666347 0.000000 +vt 1.700987 0.000000 +vt 1.700987 0.018960 +vt 1.666347 0.023248 +vt 1.666347 0.000000 +vt 1.666347 0.023248 +vt 1.700987 0.018960 +vt 1.700987 0.000000 +vt 1.666347 -0.100000 +vt 1.666347 0.100000 +vt 1.700987 0.100000 +vt 1.700987 -0.100000 +vt 0.000000 3.750221 +vt 0.000000 3.785079 +vt 0.200000 3.785079 +vt 0.200000 3.750221 +vt 1.700987 0.000000 +vt 1.735628 0.000000 +vt 1.735628 0.015072 +vt 1.700987 0.018960 +vt 1.700987 0.000000 +vt 1.700987 0.018960 +vt 1.735628 0.015072 +vt 1.735628 0.000000 +vt 1.700987 -0.100000 +vt 1.700987 0.100000 +vt 1.735628 0.100000 +vt 1.735628 -0.100000 +vt 0.000000 3.785079 +vt 0.000000 3.819893 +vt 0.200000 3.819893 +vt 0.200000 3.785079 +vt 1.735628 0.000000 +vt 1.770269 0.000000 +vt 1.770269 0.011602 +vt 1.735628 0.015072 +vt 1.735628 0.000000 +vt 1.735628 0.015072 +vt 1.770269 0.011602 +vt 1.770269 0.000000 +vt 1.735628 -0.100000 +vt 1.735628 0.100000 +vt 1.770269 0.100000 +vt 1.770269 -0.100000 +vt 0.000000 3.819893 +vt 0.000000 3.854667 +vt 0.200000 3.854667 +vt 0.200000 3.819893 +vt 1.770269 0.000000 +vt 1.804909 0.000000 +vt 1.804909 0.008564 +vt 1.770269 0.011602 +vt 1.770269 0.000000 +vt 1.770269 0.011602 +vt 1.804909 0.008564 +vt 1.804909 0.000000 +vt 1.770269 -0.100000 +vt 1.770269 0.100000 +vt 1.804909 0.100000 +vt 1.804909 -0.100000 +vt 0.000000 3.854667 +vt 0.000000 3.889405 +vt 0.200000 3.889405 +vt 0.200000 3.854667 +vt 1.804909 0.000000 +vt 1.839550 0.000000 +vt 1.839550 0.005970 +vt 1.804909 0.008564 +vt 1.804909 0.000000 +vt 1.804909 0.008564 +vt 1.839550 0.005970 +vt 1.839550 0.000000 +vt 1.804909 -0.100000 +vt 1.804909 0.100000 +vt 1.839550 0.100000 +vt 1.839550 -0.100000 +vt 0.000000 3.889405 +vt 0.000000 3.924111 +vt 0.200000 3.924111 +vt 0.200000 3.889405 +vt 1.839550 0.000000 +vt 1.874191 0.000000 +vt 1.874191 0.003833 +vt 1.839550 0.005970 +vt 1.839550 0.000000 +vt 1.839550 0.005970 +vt 1.874191 0.003833 +vt 1.874191 0.000000 +vt 1.839550 -0.100000 +vt 1.839550 0.100000 +vt 1.874191 0.100000 +vt 1.874191 -0.100000 +vt 0.000000 3.924111 +vt 0.000000 3.958792 +vt 0.200000 3.958792 +vt 0.200000 3.924111 +vt 1.874191 0.000000 +vt 1.908831 0.000000 +vt 1.908831 0.002162 +vt 1.874191 0.003833 +vt 1.874191 0.000000 +vt 1.874191 0.003833 +vt 1.908831 0.002162 +vt 1.908831 0.000000 +vt 1.874191 -0.100000 +vt 1.874191 0.100000 +vt 1.908831 0.100000 +vt 1.908831 -0.100000 +vt 0.000000 3.958792 +vt 0.000000 3.993454 +vt 0.200000 3.993454 +vt 0.200000 3.958792 +vt 1.908831 0.000000 +vt 1.943472 0.000000 +vt 1.943472 0.000962 +vt 1.908831 0.002162 +vt 1.908831 0.000000 +vt 1.908831 0.002162 +vt 1.943472 0.000962 +vt 1.943472 0.000000 +vt 1.908831 -0.100000 +vt 1.908831 0.100000 +vt 1.943472 0.100000 +vt 1.943472 -0.100000 +vt 0.000000 3.993454 +vt 0.000000 4.028102 +vt 0.200000 4.028102 +vt 0.200000 3.993454 +vt 1.943472 0.000000 +vt 1.978113 0.000000 +vt 1.978113 0.000241 +vt 1.943472 0.000962 +vt 1.943472 0.000000 +vt 1.943472 0.000962 +vt 1.978113 0.000241 +vt 1.978113 0.000000 +vt 1.943472 -0.100000 +vt 1.943472 0.100000 +vt 1.978113 0.100000 +vt 1.978113 -0.100000 +vt 0.000000 4.028102 +vt 0.000000 4.062743 +vt 0.200000 4.062743 +vt 0.200000 4.028102 +vt 1.978113 0.000000 +vt 2.012754 0.000000 +vt 2.012754 0.000000 +vt 1.978113 0.000241 +vt 1.978113 0.000000 +vt 1.978113 0.000241 +vt 2.012754 0.000000 +vt 2.012754 0.000000 +vt 1.978113 -0.100000 +vt 1.978113 0.100000 +vt 2.012754 0.100000 +vt 2.012754 -0.100000 +vt -0.100000 0.000000 +vt 0.100000 0.000000 +vt 0.100000 0.200000 +vt -0.100000 0.200000 +vt -0.100000 0.200000 +vt 0.100000 0.200000 +vt 0.100000 0.000000 +vt -0.100000 0.000000 +vn -0.000000 0.000000 1.000000 +vn -0.013901 0.000000 0.999903 +vn -0.013901 0.000000 0.999903 +vn -0.000000 0.000000 1.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn -0.013901 0.000000 0.999903 +vn -0.027734 0.000000 0.999615 +vn -0.027734 0.000000 0.999615 +vn -0.013901 0.000000 0.999903 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn -0.027734 0.000000 0.999615 +vn -0.041432 0.000000 0.999141 +vn -0.041432 0.000000 0.999141 +vn -0.027734 0.000000 0.999615 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn -0.041432 0.000000 0.999141 +vn -0.054931 0.000000 0.998490 +vn -0.054931 0.000000 0.998490 +vn -0.041432 0.000000 0.999141 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn -0.054931 0.000000 0.998490 +vn -0.068165 0.000000 0.997674 +vn -0.068165 0.000000 0.997674 +vn -0.054931 0.000000 0.998490 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn -0.068165 0.000000 0.997674 +vn -0.081074 0.000000 0.996708 +vn -0.081074 0.000000 0.996708 +vn -0.068165 0.000000 0.997674 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn -0.081074 0.000000 0.996708 +vn -0.093599 0.000000 0.995610 +vn -0.093599 0.000000 0.995610 +vn -0.081074 0.000000 0.996708 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn -0.093599 0.000000 0.995610 +vn -0.105683 0.000000 0.994400 +vn -0.105683 0.000000 0.994400 +vn -0.093599 0.000000 0.995610 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn -0.105683 0.000000 0.994400 +vn -0.117275 0.000000 0.993099 +vn -0.117275 0.000000 0.993099 +vn -0.105683 0.000000 0.994400 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn -0.117275 0.000000 0.993099 +vn -0.128326 0.000000 0.991732 +vn -0.128326 0.000000 0.991732 +vn -0.117275 0.000000 0.993099 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn -0.128326 0.000000 0.991732 +vn -0.138792 0.000000 0.990322 +vn -0.138792 0.000000 0.990322 +vn -0.128326 0.000000 0.991732 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn -0.138792 0.000000 0.990322 +vn -0.148631 0.000000 0.988893 +vn -0.148631 0.000000 0.988893 +vn -0.138792 0.000000 0.990322 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn -0.148631 0.000000 0.988893 +vn -0.157806 0.000000 0.987470 +vn -0.157806 0.000000 0.987470 +vn -0.148631 0.000000 0.988893 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn -0.157806 0.000000 0.987470 +vn -0.166285 0.000000 0.986078 +vn -0.166285 0.000000 0.986078 +vn -0.157806 0.000000 0.987470 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn -0.166285 0.000000 0.986078 +vn -0.174037 0.000000 0.984739 +vn -0.174037 0.000000 0.984739 +vn -0.166285 0.000000 0.986078 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn -0.174037 0.000000 0.984739 +vn -0.181038 0.000000 0.983476 +vn -0.181038 0.000000 0.983476 +vn -0.174037 0.000000 0.984739 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn -0.181038 0.000000 0.983476 +vn -0.187264 0.000000 0.982310 +vn -0.187264 0.000000 0.982310 +vn -0.181038 0.000000 0.983476 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn -0.187264 0.000000 0.982310 +vn -0.192696 0.000000 0.981258 +vn -0.192696 0.000000 0.981258 +vn -0.187264 0.000000 0.982310 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn -0.192696 0.000000 0.981258 +vn -0.197319 0.000000 0.980339 +vn -0.197319 0.000000 0.980339 +vn -0.192696 0.000000 0.981258 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn -0.197319 0.000000 0.980339 +vn -0.201119 0.000000 0.979567 +vn -0.201119 0.000000 0.979567 +vn -0.197319 0.000000 0.980339 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn -0.201119 0.000000 0.979567 +vn -0.204085 0.000000 0.978953 +vn -0.204085 0.000000 0.978953 +vn -0.201119 0.000000 0.979567 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn -0.204085 0.000000 0.978953 +vn -0.206209 0.000000 0.978508 +vn -0.206209 0.000000 0.978508 +vn -0.204085 0.000000 0.978953 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn -0.206209 0.000000 0.978508 +vn -0.207486 0.000000 0.978238 +vn -0.207486 0.000000 0.978238 +vn -0.206209 0.000000 0.978508 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn -0.207486 0.000000 0.978238 +vn -0.207912 0.000000 0.978148 +vn -0.207912 0.000000 0.978148 +vn -0.207486 0.000000 0.978238 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn -0.207912 0.000000 0.978148 +vn -0.207486 0.000000 0.978238 +vn -0.207486 0.000000 0.978238 +vn -0.207912 0.000000 0.978148 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn -0.207486 0.000000 0.978238 +vn -0.206209 0.000000 0.978508 +vn -0.206209 0.000000 0.978508 +vn -0.207486 0.000000 0.978238 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn -0.206209 0.000000 0.978508 +vn -0.204085 0.000000 0.978953 +vn -0.204085 0.000000 0.978953 +vn -0.206209 0.000000 0.978508 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn -0.204085 0.000000 0.978953 +vn -0.201119 0.000000 0.979567 +vn -0.201119 0.000000 0.979567 +vn -0.204085 0.000000 0.978953 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn -0.201119 0.000000 0.979567 +vn -0.197319 0.000000 0.980339 +vn -0.197319 0.000000 0.980339 +vn -0.201119 0.000000 0.979567 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn -0.197319 0.000000 0.980339 +vn -0.192696 0.000000 0.981258 +vn -0.192696 0.000000 0.981258 +vn -0.197319 0.000000 0.980339 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn -0.192696 0.000000 0.981258 +vn -0.187264 0.000000 0.982310 +vn -0.187264 0.000000 0.982310 +vn -0.192696 0.000000 0.981258 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn -0.187264 0.000000 0.982310 +vn -0.181038 0.000000 0.983476 +vn -0.181038 0.000000 0.983476 +vn -0.187264 0.000000 0.982310 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn -0.181038 0.000000 0.983476 +vn -0.174037 0.000000 0.984739 +vn -0.174037 0.000000 0.984739 +vn -0.181038 0.000000 0.983476 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn -0.174037 0.000000 0.984739 +vn -0.166285 0.000000 0.986078 +vn -0.166285 0.000000 0.986078 +vn -0.174037 0.000000 0.984739 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn -0.166285 0.000000 0.986078 +vn -0.157806 0.000000 0.987470 +vn -0.157806 0.000000 0.987470 +vn -0.166285 0.000000 0.986078 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn -0.157806 0.000000 0.987470 +vn -0.148631 0.000000 0.988893 +vn -0.148631 0.000000 0.988893 +vn -0.157806 0.000000 0.987470 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn -0.148631 0.000000 0.988893 +vn -0.138792 0.000000 0.990322 +vn -0.138792 0.000000 0.990322 +vn -0.148631 0.000000 0.988893 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn -0.138792 0.000000 0.990322 +vn -0.128326 0.000000 0.991732 +vn -0.128326 0.000000 0.991732 +vn -0.138792 0.000000 0.990322 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn -0.128326 0.000000 0.991732 +vn -0.117275 0.000000 0.993099 +vn -0.117275 0.000000 0.993099 +vn -0.128326 0.000000 0.991732 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn -0.117275 0.000000 0.993099 +vn -0.105683 0.000000 0.994400 +vn -0.105683 0.000000 0.994400 +vn -0.117275 0.000000 0.993099 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn -0.105683 0.000000 0.994400 +vn -0.093599 0.000000 0.995610 +vn -0.093599 0.000000 0.995610 +vn -0.105683 0.000000 0.994400 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn -0.093599 0.000000 0.995610 +vn -0.081074 0.000000 0.996708 +vn -0.081074 0.000000 0.996708 +vn -0.093599 0.000000 0.995610 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn -0.081074 0.000000 0.996708 +vn -0.068165 0.000000 0.997674 +vn -0.068165 0.000000 0.997674 +vn -0.081074 0.000000 0.996708 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn -0.068165 0.000000 0.997674 +vn -0.054931 0.000000 0.998490 +vn -0.054931 0.000000 0.998490 +vn -0.068165 0.000000 0.997674 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn -0.054931 0.000000 0.998490 +vn -0.041432 0.000000 0.999141 +vn -0.041432 0.000000 0.999141 +vn -0.054931 0.000000 0.998490 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn -0.041432 0.000000 0.999141 +vn -0.027734 0.000000 0.999615 +vn -0.027734 0.000000 0.999615 +vn -0.041432 0.000000 0.999141 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn -0.027734 0.000000 0.999615 +vn -0.013901 0.000000 0.999903 +vn -0.013901 0.000000 0.999903 +vn -0.027734 0.000000 0.999615 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn -0.013901 0.000000 0.999903 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn -0.013901 0.000000 0.999903 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.013901 0.000000 0.999903 +vn 0.013901 0.000000 0.999903 +vn 0.000000 0.000000 1.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.013901 0.000000 0.999903 +vn 0.027734 0.000000 0.999615 +vn 0.027734 0.000000 0.999615 +vn 0.013901 0.000000 0.999903 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.027734 0.000000 0.999615 +vn 0.041432 0.000000 0.999141 +vn 0.041432 0.000000 0.999141 +vn 0.027734 0.000000 0.999615 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.041432 0.000000 0.999141 +vn 0.054931 0.000000 0.998490 +vn 0.054931 0.000000 0.998490 +vn 0.041432 0.000000 0.999141 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.054931 0.000000 0.998490 +vn 0.068165 0.000000 0.997674 +vn 0.068165 0.000000 0.997674 +vn 0.054931 0.000000 0.998490 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.068165 0.000000 0.997674 +vn 0.081074 0.000000 0.996708 +vn 0.081074 0.000000 0.996708 +vn 0.068165 0.000000 0.997674 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.081074 0.000000 0.996708 +vn 0.093599 0.000000 0.995610 +vn 0.093599 0.000000 0.995610 +vn 0.081074 0.000000 0.996708 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.093599 0.000000 0.995610 +vn 0.105683 0.000000 0.994400 +vn 0.105683 0.000000 0.994400 +vn 0.093599 0.000000 0.995610 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.105683 0.000000 0.994400 +vn 0.117275 0.000000 0.993099 +vn 0.117275 0.000000 0.993099 +vn 0.105683 0.000000 0.994400 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.117275 0.000000 0.993099 +vn 0.128326 0.000000 0.991732 +vn 0.128326 0.000000 0.991732 +vn 0.117275 0.000000 0.993099 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.128326 0.000000 0.991732 +vn 0.138792 0.000000 0.990322 +vn 0.138792 0.000000 0.990322 +vn 0.128326 0.000000 0.991732 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.138792 0.000000 0.990322 +vn 0.148631 0.000000 0.988893 +vn 0.148631 0.000000 0.988893 +vn 0.138792 0.000000 0.990322 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.148631 0.000000 0.988893 +vn 0.157806 0.000000 0.987470 +vn 0.157806 0.000000 0.987470 +vn 0.148631 0.000000 0.988893 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.157806 0.000000 0.987470 +vn 0.166285 0.000000 0.986078 +vn 0.166285 0.000000 0.986078 +vn 0.157806 0.000000 0.987470 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.166285 0.000000 0.986078 +vn 0.174037 0.000000 0.984739 +vn 0.174037 0.000000 0.984739 +vn 0.166285 0.000000 0.986078 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.174037 0.000000 0.984739 +vn 0.181038 0.000000 0.983476 +vn 0.181038 0.000000 0.983476 +vn 0.174037 0.000000 0.984739 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.181038 0.000000 0.983476 +vn 0.187264 0.000000 0.982310 +vn 0.187264 0.000000 0.982310 +vn 0.181038 0.000000 0.983476 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.187264 0.000000 0.982310 +vn 0.192696 0.000000 0.981258 +vn 0.192696 0.000000 0.981258 +vn 0.187264 0.000000 0.982310 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.192696 0.000000 0.981258 +vn 0.197319 0.000000 0.980339 +vn 0.197319 0.000000 0.980339 +vn 0.192696 0.000000 0.981258 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.197319 0.000000 0.980339 +vn 0.201119 0.000000 0.979567 +vn 0.201119 0.000000 0.979567 +vn 0.197319 0.000000 0.980339 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.201119 0.000000 0.979567 +vn 0.204085 0.000000 0.978953 +vn 0.204085 0.000000 0.978953 +vn 0.201119 0.000000 0.979567 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.204085 0.000000 0.978953 +vn 0.206209 0.000000 0.978508 +vn 0.206209 0.000000 0.978508 +vn 0.204085 0.000000 0.978953 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.206209 0.000000 0.978508 +vn 0.207486 0.000000 0.978238 +vn 0.207486 0.000000 0.978238 +vn 0.206209 0.000000 0.978508 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.207486 0.000000 0.978238 +vn 0.207912 0.000000 0.978148 +vn 0.207912 0.000000 0.978148 +vn 0.207486 0.000000 0.978238 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.207912 0.000000 0.978148 +vn 0.207486 0.000000 0.978238 +vn 0.207486 0.000000 0.978238 +vn 0.207912 0.000000 0.978148 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.207486 0.000000 0.978238 +vn 0.206209 0.000000 0.978508 +vn 0.206209 0.000000 0.978508 +vn 0.207486 0.000000 0.978238 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.206209 0.000000 0.978508 +vn 0.204085 0.000000 0.978953 +vn 0.204085 0.000000 0.978953 +vn 0.206209 0.000000 0.978508 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.204085 0.000000 0.978953 +vn 0.201119 0.000000 0.979567 +vn 0.201119 0.000000 0.979567 +vn 0.204085 0.000000 0.978953 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.201119 0.000000 0.979567 +vn 0.197319 0.000000 0.980339 +vn 0.197319 0.000000 0.980339 +vn 0.201119 0.000000 0.979567 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.197319 0.000000 0.980339 +vn 0.192696 0.000000 0.981258 +vn 0.192696 0.000000 0.981258 +vn 0.197319 0.000000 0.980339 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.192696 0.000000 0.981258 +vn 0.187264 0.000000 0.982310 +vn 0.187264 0.000000 0.982310 +vn 0.192696 0.000000 0.981258 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.187264 0.000000 0.982310 +vn 0.181038 0.000000 0.983476 +vn 0.181038 0.000000 0.983476 +vn 0.187264 0.000000 0.982310 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.181038 0.000000 0.983476 +vn 0.174037 0.000000 0.984739 +vn 0.174037 0.000000 0.984739 +vn 0.181038 0.000000 0.983476 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.174037 0.000000 0.984739 +vn 0.166285 0.000000 0.986078 +vn 0.166285 0.000000 0.986078 +vn 0.174037 0.000000 0.984739 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.166285 0.000000 0.986078 +vn 0.157806 0.000000 0.987470 +vn 0.157806 0.000000 0.987470 +vn 0.166285 0.000000 0.986078 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.157806 0.000000 0.987470 +vn 0.148631 0.000000 0.988893 +vn 0.148631 0.000000 0.988893 +vn 0.157806 0.000000 0.987470 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.148631 0.000000 0.988893 +vn 0.138792 0.000000 0.990322 +vn 0.138792 0.000000 0.990322 +vn 0.148631 0.000000 0.988893 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.138792 0.000000 0.990322 +vn 0.128326 0.000000 0.991732 +vn 0.128326 0.000000 0.991732 +vn 0.138792 0.000000 0.990322 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.128326 0.000000 0.991732 +vn 0.117275 0.000000 0.993099 +vn 0.117275 0.000000 0.993099 +vn 0.128326 0.000000 0.991732 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.117275 0.000000 0.993099 +vn 0.105683 0.000000 0.994400 +vn 0.105683 0.000000 0.994400 +vn 0.117275 0.000000 0.993099 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.105683 0.000000 0.994400 +vn 0.093599 0.000000 0.995610 +vn 0.093599 0.000000 0.995610 +vn 0.105683 0.000000 0.994400 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.093599 0.000000 0.995610 +vn 0.081074 0.000000 0.996708 +vn 0.081074 0.000000 0.996708 +vn 0.093599 0.000000 0.995610 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.081074 0.000000 0.996708 +vn 0.068165 0.000000 0.997674 +vn 0.068165 0.000000 0.997674 +vn 0.081074 0.000000 0.996708 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.068165 0.000000 0.997674 +vn 0.054931 0.000000 0.998490 +vn 0.054931 0.000000 0.998490 +vn 0.068165 0.000000 0.997674 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.054931 0.000000 0.998490 +vn 0.041432 0.000000 0.999141 +vn 0.041432 0.000000 0.999141 +vn 0.054931 0.000000 0.998490 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.041432 0.000000 0.999141 +vn 0.027734 0.000000 0.999615 +vn 0.027734 0.000000 0.999615 +vn 0.041432 0.000000 0.999141 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.027734 0.000000 0.999615 +vn 0.013901 0.000000 0.999903 +vn 0.013901 0.000000 0.999903 +vn 0.027734 0.000000 0.999615 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.013901 0.000000 0.999903 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.013901 0.000000 0.999903 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +f 1/1/1 2/2/2 3/3/3 4/4/4 +f 5/5/5 6/6/6 7/7/7 8/8/8 +f 9/9/9 10/10/10 11/11/11 12/12/12 +f 13/13/13 14/14/14 15/15/15 16/16/16 +f 17/17/17 18/18/18 19/19/19 20/20/20 +f 21/21/21 22/22/22 23/23/23 24/24/24 +f 25/25/25 26/26/26 27/27/27 28/28/28 +f 29/29/29 30/30/30 31/31/31 32/32/32 +f 33/33/33 34/34/34 35/35/35 36/36/36 +f 37/37/37 38/38/38 39/39/39 40/40/40 +f 41/41/41 42/42/42 43/43/43 44/44/44 +f 45/45/45 46/46/46 47/47/47 48/48/48 +f 49/49/49 50/50/50 51/51/51 52/52/52 +f 53/53/53 54/54/54 55/55/55 56/56/56 +f 57/57/57 58/58/58 59/59/59 60/60/60 +f 61/61/61 62/62/62 63/63/63 64/64/64 +f 65/65/65 66/66/66 67/67/67 68/68/68 +f 69/69/69 70/70/70 71/71/71 72/72/72 +f 73/73/73 74/74/74 75/75/75 76/76/76 +f 77/77/77 78/78/78 79/79/79 80/80/80 +f 81/81/81 82/82/82 83/83/83 84/84/84 +f 85/85/85 86/86/86 87/87/87 88/88/88 +f 89/89/89 90/90/90 91/91/91 92/92/92 +f 93/93/93 94/94/94 95/95/95 96/96/96 +f 97/97/97 98/98/98 99/99/99 100/100/100 +f 101/101/101 102/102/102 103/103/103 104/104/104 +f 105/105/105 106/106/106 107/107/107 108/108/108 +f 109/109/109 110/110/110 111/111/111 112/112/112 +f 113/113/113 114/114/114 115/115/115 116/116/116 +f 117/117/117 118/118/118 119/119/119 120/120/120 +f 121/121/121 122/122/122 123/123/123 124/124/124 +f 125/125/125 126/126/126 127/127/127 128/128/128 +f 129/129/129 130/130/130 131/131/131 132/132/132 +f 133/133/133 134/134/134 135/135/135 136/136/136 +f 137/137/137 138/138/138 139/139/139 140/140/140 +f 141/141/141 142/142/142 143/143/143 144/144/144 +f 145/145/145 146/146/146 147/147/147 148/148/148 +f 149/149/149 150/150/150 151/151/151 152/152/152 +f 153/153/153 154/154/154 155/155/155 156/156/156 +f 157/157/157 158/158/158 159/159/159 160/160/160 +f 161/161/161 162/162/162 163/163/163 164/164/164 +f 165/165/165 166/166/166 167/167/167 168/168/168 +f 169/169/169 170/170/170 171/171/171 172/172/172 +f 173/173/173 174/174/174 175/175/175 176/176/176 +f 177/177/177 178/178/178 179/179/179 180/180/180 +f 181/181/181 182/182/182 183/183/183 184/184/184 +f 185/185/185 186/186/186 187/187/187 188/188/188 +f 189/189/189 190/190/190 191/191/191 192/192/192 +f 193/193/193 194/194/194 195/195/195 196/196/196 +f 197/197/197 198/198/198 199/199/199 200/200/200 +f 201/201/201 202/202/202 203/203/203 204/204/204 +f 205/205/205 206/206/206 207/207/207 208/208/208 +f 209/209/209 210/210/210 211/211/211 212/212/212 +f 213/213/213 214/214/214 215/215/215 216/216/216 +f 217/217/217 218/218/218 219/219/219 220/220/220 +f 221/221/221 222/222/222 223/223/223 224/224/224 +f 225/225/225 226/226/226 227/227/227 228/228/228 +f 229/229/229 230/230/230 231/231/231 232/232/232 +f 233/233/233 234/234/234 235/235/235 236/236/236 +f 237/237/237 238/238/238 239/239/239 240/240/240 +f 241/241/241 242/242/242 243/243/243 244/244/244 +f 245/245/245 246/246/246 247/247/247 248/248/248 +f 249/249/249 250/250/250 251/251/251 252/252/252 +f 253/253/253 254/254/254 255/255/255 256/256/256 +f 257/257/257 258/258/258 259/259/259 260/260/260 +f 261/261/261 262/262/262 263/263/263 264/264/264 +f 265/265/265 266/266/266 267/267/267 268/268/268 +f 269/269/269 270/270/270 271/271/271 272/272/272 +f 273/273/273 274/274/274 275/275/275 276/276/276 +f 277/277/277 278/278/278 279/279/279 280/280/280 +f 281/281/281 282/282/282 283/283/283 284/284/284 +f 285/285/285 286/286/286 287/287/287 288/288/288 +f 289/289/289 290/290/290 291/291/291 292/292/292 +f 293/293/293 294/294/294 295/295/295 296/296/296 +f 297/297/297 298/298/298 299/299/299 300/300/300 +f 301/301/301 302/302/302 303/303/303 304/304/304 +f 305/305/305 306/306/306 307/307/307 308/308/308 +f 309/309/309 310/310/310 311/311/311 312/312/312 +f 313/313/313 314/314/314 315/315/315 316/316/316 +f 317/317/317 318/318/318 319/319/319 320/320/320 +f 321/321/321 322/322/322 323/323/323 324/324/324 +f 325/325/325 326/326/326 327/327/327 328/328/328 +f 329/329/329 330/330/330 331/331/331 332/332/332 +f 333/333/333 334/334/334 335/335/335 336/336/336 +f 337/337/337 338/338/338 339/339/339 340/340/340 +f 341/341/341 342/342/342 343/343/343 344/344/344 +f 345/345/345 346/346/346 347/347/347 348/348/348 +f 349/349/349 350/350/350 351/351/351 352/352/352 +f 353/353/353 354/354/354 355/355/355 356/356/356 +f 357/357/357 358/358/358 359/359/359 360/360/360 +f 361/361/361 362/362/362 363/363/363 364/364/364 +f 365/365/365 366/366/366 367/367/367 368/368/368 +f 369/369/369 370/370/370 371/371/371 372/372/372 +f 373/373/373 374/374/374 375/375/375 376/376/376 +f 377/377/377 378/378/378 379/379/379 380/380/380 +f 381/381/381 382/382/382 383/383/383 384/384/384 +f 385/385/385 386/386/386 387/387/387 388/388/388 +f 389/389/389 390/390/390 391/391/391 392/392/392 +f 393/393/393 394/394/394 395/395/395 396/396/396 +f 397/397/397 398/398/398 399/399/399 400/400/400 +f 401/401/401 402/402/402 403/403/403 404/404/404 +f 405/405/405 406/406/406 407/407/407 408/408/408 +f 409/409/409 410/410/410 411/411/411 412/412/412 +f 413/413/413 414/414/414 415/415/415 416/416/416 +f 417/417/417 418/418/418 419/419/419 420/420/420 +f 421/421/421 422/422/422 423/423/423 424/424/424 +f 425/425/425 426/426/426 427/427/427 428/428/428 +f 429/429/429 430/430/430 431/431/431 432/432/432 +f 433/433/433 434/434/434 435/435/435 436/436/436 +f 437/437/437 438/438/438 439/439/439 440/440/440 +f 441/441/441 442/442/442 443/443/443 444/444/444 +f 445/445/445 446/446/446 447/447/447 448/448/448 +f 449/449/449 450/450/450 451/451/451 452/452/452 +f 453/453/453 454/454/454 455/455/455 456/456/456 +f 457/457/457 458/458/458 459/459/459 460/460/460 +f 461/461/461 462/462/462 463/463/463 464/464/464 +f 465/465/465 466/466/466 467/467/467 468/468/468 +f 469/469/469 470/470/470 471/471/471 472/472/472 +f 473/473/473 474/474/474 475/475/475 476/476/476 +f 477/477/477 478/478/478 479/479/479 480/480/480 +f 481/481/481 482/482/482 483/483/483 484/484/484 +f 485/485/485 486/486/486 487/487/487 488/488/488 +f 489/489/489 490/490/490 491/491/491 492/492/492 +f 493/493/493 494/494/494 495/495/495 496/496/496 +f 497/497/497 498/498/498 499/499/499 500/500/500 +f 501/501/501 502/502/502 503/503/503 504/504/504 +f 505/505/505 506/506/506 507/507/507 508/508/508 +f 509/509/509 510/510/510 511/511/511 512/512/512 +f 513/513/513 514/514/514 515/515/515 516/516/516 +f 517/517/517 518/518/518 519/519/519 520/520/520 +f 521/521/521 522/522/522 523/523/523 524/524/524 +f 525/525/525 526/526/526 527/527/527 528/528/528 +f 529/529/529 530/530/530 531/531/531 532/532/532 +f 533/533/533 534/534/534 535/535/535 536/536/536 +f 537/537/537 538/538/538 539/539/539 540/540/540 +f 541/541/541 542/542/542 543/543/543 544/544/544 +f 545/545/545 546/546/546 547/547/547 548/548/548 +f 549/549/549 550/550/550 551/551/551 552/552/552 +f 553/553/553 554/554/554 555/555/555 556/556/556 +f 557/557/557 558/558/558 559/559/559 560/560/560 +f 561/561/561 562/562/562 563/563/563 564/564/564 +f 565/565/565 566/566/566 567/567/567 568/568/568 +f 569/569/569 570/570/570 571/571/571 572/572/572 +f 573/573/573 574/574/574 575/575/575 576/576/576 +f 577/577/577 578/578/578 579/579/579 580/580/580 +f 581/581/581 582/582/582 583/583/583 584/584/584 +f 585/585/585 586/586/586 587/587/587 588/588/588 +f 589/589/589 590/590/590 591/591/591 592/592/592 +f 593/593/593 594/594/594 595/595/595 596/596/596 +f 597/597/597 598/598/598 599/599/599 600/600/600 +f 601/601/601 602/602/602 603/603/603 604/604/604 +f 605/605/605 606/606/606 607/607/607 608/608/608 +f 609/609/609 610/610/610 611/611/611 612/612/612 +f 613/613/613 614/614/614 615/615/615 616/616/616 +f 617/617/617 618/618/618 619/619/619 620/620/620 +f 621/621/621 622/622/622 623/623/623 624/624/624 +f 625/625/625 626/626/626 627/627/627 628/628/628 +f 629/629/629 630/630/630 631/631/631 632/632/632 +f 633/633/633 634/634/634 635/635/635 636/636/636 +f 637/637/637 638/638/638 639/639/639 640/640/640 +f 641/641/641 642/642/642 643/643/643 644/644/644 +f 645/645/645 646/646/646 647/647/647 648/648/648 +f 649/649/649 650/650/650 651/651/651 652/652/652 +f 653/653/653 654/654/654 655/655/655 656/656/656 +f 657/657/657 658/658/658 659/659/659 660/660/660 +f 661/661/661 662/662/662 663/663/663 664/664/664 +f 665/665/665 666/666/666 667/667/667 668/668/668 +f 669/669/669 670/670/670 671/671/671 672/672/672 +f 673/673/673 674/674/674 675/675/675 676/676/676 +f 677/677/677 678/678/678 679/679/679 680/680/680 +f 681/681/681 682/682/682 683/683/683 684/684/684 +f 685/685/685 686/686/686 687/687/687 688/688/688 +f 689/689/689 690/690/690 691/691/691 692/692/692 +f 693/693/693 694/694/694 695/695/695 696/696/696 +f 697/697/697 698/698/698 699/699/699 700/700/700 +f 701/701/701 702/702/702 703/703/703 704/704/704 +f 705/705/705 706/706/706 707/707/707 708/708/708 +f 709/709/709 710/710/710 711/711/711 712/712/712 +f 713/713/713 714/714/714 715/715/715 716/716/716 +f 717/717/717 718/718/718 719/719/719 720/720/720 +f 721/721/721 722/722/722 723/723/723 724/724/724 +f 725/725/725 726/726/726 727/727/727 728/728/728 +f 729/729/729 730/730/730 731/731/731 732/732/732 +f 733/733/733 734/734/734 735/735/735 736/736/736 +f 737/737/737 738/738/738 739/739/739 740/740/740 +f 741/741/741 742/742/742 743/743/743 744/744/744 +f 745/745/745 746/746/746 747/747/747 748/748/748 +f 749/749/749 750/750/750 751/751/751 752/752/752 +f 753/753/753 754/754/754 755/755/755 756/756/756 +f 757/757/757 758/758/758 759/759/759 760/760/760 +f 761/761/761 762/762/762 763/763/763 764/764/764 +f 765/765/765 766/766/766 767/767/767 768/768/768 +f 769/769/769 770/770/770 771/771/771 772/772/772 +f 773/773/773 774/774/774 775/775/775 776/776/776 +f 777/777/777 778/778/778 779/779/779 780/780/780 +f 781/781/781 782/782/782 783/783/783 784/784/784 +f 785/785/785 786/786/786 787/787/787 788/788/788 +f 789/789/789 790/790/790 791/791/791 792/792/792 +f 793/793/793 794/794/794 795/795/795 796/796/796 +f 797/797/797 798/798/798 799/799/799 800/800/800 +f 801/801/801 802/802/802 803/803/803 804/804/804 +f 805/805/805 806/806/806 807/807/807 808/808/808 +f 809/809/809 810/810/810 811/811/811 812/812/812 +f 813/813/813 814/814/814 815/815/815 816/816/816 +f 817/817/817 818/818/818 819/819/819 820/820/820 +f 821/821/821 822/822/822 823/823/823 824/824/824 +f 825/825/825 826/826/826 827/827/827 828/828/828 +f 829/829/829 830/830/830 831/831/831 832/832/832 +f 833/833/833 834/834/834 835/835/835 836/836/836 +f 837/837/837 838/838/838 839/839/839 840/840/840 +f 841/841/841 842/842/842 843/843/843 844/844/844 +f 845/845/845 846/846/846 847/847/847 848/848/848 +f 849/849/849 850/850/850 851/851/851 852/852/852 +f 853/853/853 854/854/854 855/855/855 856/856/856 +f 857/857/857 858/858/858 859/859/859 860/860/860 +f 861/861/861 862/862/862 863/863/863 864/864/864 +f 865/865/865 866/866/866 867/867/867 868/868/868 +f 869/869/869 870/870/870 871/871/871 872/872/872 +f 873/873/873 874/874/874 875/875/875 876/876/876 +f 877/877/877 878/878/878 879/879/879 880/880/880 +f 881/881/881 882/882/882 883/883/883 884/884/884 +f 885/885/885 886/886/886 887/887/887 888/888/888 +f 889/889/889 890/890/890 891/891/891 892/892/892 +f 893/893/893 894/894/894 895/895/895 896/896/896 +f 897/897/897 898/898/898 899/899/899 900/900/900 +f 901/901/901 902/902/902 903/903/903 904/904/904 +f 905/905/905 906/906/906 907/907/907 908/908/908 +f 909/909/909 910/910/910 911/911/911 912/912/912 +f 913/913/913 914/914/914 915/915/915 916/916/916 +f 917/917/917 918/918/918 919/919/919 920/920/920 +f 921/921/921 922/922/922 923/923/923 924/924/924 +f 925/925/925 926/926/926 927/927/927 928/928/928 +f 929/929/929 930/930/930 931/931/931 932/932/932 +f 933/933/933 934/934/934 935/935/935 936/936/936 +f 937/937/937 938/938/938 939/939/939 940/940/940 +f 941/941/941 942/942/942 943/943/943 944/944/944 +f 945/945/945 946/946/946 947/947/947 948/948/948 +f 949/949/949 950/950/950 951/951/951 952/952/952 +f 953/953/953 954/954/954 955/955/955 956/956/956 +f 957/957/957 958/958/958 959/959/959 960/960/960 +f 961/961/961 962/962/962 963/963/963 964/964/964 +f 965/965/965 966/966/966 967/967/967 968/968/968 +f 969/969/969 970/970/970 971/971/971 972/972/972 +f 973/973/973 974/974/974 975/975/975 976/976/976 +f 977/977/977 978/978/978 979/979/979 980/980/980 +f 981/981/981 982/982/982 983/983/983 984/984/984 +f 985/985/985 986/986/986 987/987/987 988/988/988 +f 989/989/989 990/990/990 991/991/991 992/992/992 +f 993/993/993 994/994/994 995/995/995 996/996/996 +f 997/997/997 998/998/998 999/999/999 1000/1000/1000 +f 1001/1001/1001 1002/1002/1002 1003/1003/1003 1004/1004/1004 +f 1005/1005/1005 1006/1006/1006 1007/1007/1007 1008/1008/1008 +f 1009/1009/1009 1010/1010/1010 1011/1011/1011 1012/1012/1012 +f 1013/1013/1013 1014/1014/1014 1015/1015/1015 1016/1016/1016 +f 1017/1017/1017 1018/1018/1018 1019/1019/1019 1020/1020/1020 +f 1021/1021/1021 1022/1022/1022 1023/1023/1023 1024/1024/1024 +f 1025/1025/1025 1026/1026/1026 1027/1027/1027 1028/1028/1028 +f 1029/1029/1029 1030/1030/1030 1031/1031/1031 1032/1032/1032 +f 1033/1033/1033 1034/1034/1034 1035/1035/1035 1036/1036/1036 +f 1037/1037/1037 1038/1038/1038 1039/1039/1039 1040/1040/1040 +f 1041/1041/1041 1042/1042/1042 1043/1043/1043 1044/1044/1044 +f 1045/1045/1045 1046/1046/1046 1047/1047/1047 1048/1048/1048 +f 1049/1049/1049 1050/1050/1050 1051/1051/1051 1052/1052/1052 +f 1053/1053/1053 1054/1054/1054 1055/1055/1055 1056/1056/1056 +f 1057/1057/1057 1058/1058/1058 1059/1059/1059 1060/1060/1060 +f 1061/1061/1061 1062/1062/1062 1063/1063/1063 1064/1064/1064 +f 1065/1065/1065 1066/1066/1066 1067/1067/1067 1068/1068/1068 +f 1069/1069/1069 1070/1070/1070 1071/1071/1071 1072/1072/1072 +f 1073/1073/1073 1074/1074/1074 1075/1075/1075 1076/1076/1076 +f 1077/1077/1077 1078/1078/1078 1079/1079/1079 1080/1080/1080 +f 1081/1081/1081 1082/1082/1082 1083/1083/1083 1084/1084/1084 +f 1085/1085/1085 1086/1086/1086 1087/1087/1087 1088/1088/1088 +f 1089/1089/1089 1090/1090/1090 1091/1091/1091 1092/1092/1092 +f 1093/1093/1093 1094/1094/1094 1095/1095/1095 1096/1096/1096 +f 1097/1097/1097 1098/1098/1098 1099/1099/1099 1100/1100/1100 +f 1101/1101/1101 1102/1102/1102 1103/1103/1103 1104/1104/1104 +f 1105/1105/1105 1106/1106/1106 1107/1107/1107 1108/1108/1108 +f 1109/1109/1109 1110/1110/1110 1111/1111/1111 1112/1112/1112 +f 1113/1113/1113 1114/1114/1114 1115/1115/1115 1116/1116/1116 +f 1117/1117/1117 1118/1118/1118 1119/1119/1119 1120/1120/1120 +f 1121/1121/1121 1122/1122/1122 1123/1123/1123 1124/1124/1124 +f 1125/1125/1125 1126/1126/1126 1127/1127/1127 1128/1128/1128 +f 1129/1129/1129 1130/1130/1130 1131/1131/1131 1132/1132/1132 +f 1133/1133/1133 1134/1134/1134 1135/1135/1135 1136/1136/1136 +f 1137/1137/1137 1138/1138/1138 1139/1139/1139 1140/1140/1140 +f 1141/1141/1141 1142/1142/1142 1143/1143/1143 1144/1144/1144 +f 1145/1145/1145 1146/1146/1146 1147/1147/1147 1148/1148/1148 +f 1149/1149/1149 1150/1150/1150 1151/1151/1151 1152/1152/1152 +f 1153/1153/1153 1154/1154/1154 1155/1155/1155 1156/1156/1156 +f 1157/1157/1157 1158/1158/1158 1159/1159/1159 1160/1160/1160 +f 1161/1161/1161 1162/1162/1162 1163/1163/1163 1164/1164/1164 +f 1165/1165/1165 1166/1166/1166 1167/1167/1167 1168/1168/1168 +f 1169/1169/1169 1170/1170/1170 1171/1171/1171 1172/1172/1172 +f 1173/1173/1173 1174/1174/1174 1175/1175/1175 1176/1176/1176 +f 1177/1177/1177 1178/1178/1178 1179/1179/1179 1180/1180/1180 +f 1181/1181/1181 1182/1182/1182 1183/1183/1183 1184/1184/1184 +f 1185/1185/1185 1186/1186/1186 1187/1187/1187 1188/1188/1188 +f 1189/1189/1189 1190/1190/1190 1191/1191/1191 1192/1192/1192 +f 1193/1193/1193 1194/1194/1194 1195/1195/1195 1196/1196/1196 +f 1197/1197/1197 1198/1198/1198 1199/1199/1199 1200/1200/1200 +f 1201/1201/1201 1202/1202/1202 1203/1203/1203 1204/1204/1204 +f 1205/1205/1205 1206/1206/1206 1207/1207/1207 1208/1208/1208 +f 1209/1209/1209 1210/1210/1210 1211/1211/1211 1212/1212/1212 +f 1213/1213/1213 1214/1214/1214 1215/1215/1215 1216/1216/1216 +f 1217/1217/1217 1218/1218/1218 1219/1219/1219 1220/1220/1220 +f 1221/1221/1221 1222/1222/1222 1223/1223/1223 1224/1224/1224 +f 1225/1225/1225 1226/1226/1226 1227/1227/1227 1228/1228/1228 +f 1229/1229/1229 1230/1230/1230 1231/1231/1231 1232/1232/1232 +f 1233/1233/1233 1234/1234/1234 1235/1235/1235 1236/1236/1236 +f 1237/1237/1237 1238/1238/1238 1239/1239/1239 1240/1240/1240 +f 1241/1241/1241 1242/1242/1242 1243/1243/1243 1244/1244/1244 +f 1245/1245/1245 1246/1246/1246 1247/1247/1247 1248/1248/1248 +f 1249/1249/1249 1250/1250/1250 1251/1251/1251 1252/1252/1252 +f 1253/1253/1253 1254/1254/1254 1255/1255/1255 1256/1256/1256 +f 1257/1257/1257 1258/1258/1258 1259/1259/1259 1260/1260/1260 +f 1261/1261/1261 1262/1262/1262 1263/1263/1263 1264/1264/1264 +f 1265/1265/1265 1266/1266/1266 1267/1267/1267 1268/1268/1268 +f 1269/1269/1269 1270/1270/1270 1271/1271/1271 1272/1272/1272 +f 1273/1273/1273 1274/1274/1274 1275/1275/1275 1276/1276/1276 +f 1277/1277/1277 1278/1278/1278 1279/1279/1279 1280/1280/1280 +f 1281/1281/1281 1282/1282/1282 1283/1283/1283 1284/1284/1284 +f 1285/1285/1285 1286/1286/1286 1287/1287/1287 1288/1288/1288 +f 1289/1289/1289 1290/1290/1290 1291/1291/1291 1292/1292/1292 +f 1293/1293/1293 1294/1294/1294 1295/1295/1295 1296/1296/1296 +f 1297/1297/1297 1298/1298/1298 1299/1299/1299 1300/1300/1300 +f 1301/1301/1301 1302/1302/1302 1303/1303/1303 1304/1304/1304 +f 1305/1305/1305 1306/1306/1306 1307/1307/1307 1308/1308/1308 +f 1309/1309/1309 1310/1310/1310 1311/1311/1311 1312/1312/1312 +f 1313/1313/1313 1314/1314/1314 1315/1315/1315 1316/1316/1316 +f 1317/1317/1317 1318/1318/1318 1319/1319/1319 1320/1320/1320 +f 1321/1321/1321 1322/1322/1322 1323/1323/1323 1324/1324/1324 +f 1325/1325/1325 1326/1326/1326 1327/1327/1327 1328/1328/1328 +f 1329/1329/1329 1330/1330/1330 1331/1331/1331 1332/1332/1332 +f 1333/1333/1333 1334/1334/1334 1335/1335/1335 1336/1336/1336 +f 1337/1337/1337 1338/1338/1338 1339/1339/1339 1340/1340/1340 +f 1341/1341/1341 1342/1342/1342 1343/1343/1343 1344/1344/1344 +f 1345/1345/1345 1346/1346/1346 1347/1347/1347 1348/1348/1348 +f 1349/1349/1349 1350/1350/1350 1351/1351/1351 1352/1352/1352 +f 1353/1353/1353 1354/1354/1354 1355/1355/1355 1356/1356/1356 +f 1357/1357/1357 1358/1358/1358 1359/1359/1359 1360/1360/1360 +f 1361/1361/1361 1362/1362/1362 1363/1363/1363 1364/1364/1364 +f 1365/1365/1365 1366/1366/1366 1367/1367/1367 1368/1368/1368 +f 1369/1369/1369 1370/1370/1370 1371/1371/1371 1372/1372/1372 +f 1373/1373/1373 1374/1374/1374 1375/1375/1375 1376/1376/1376 +f 1377/1377/1377 1378/1378/1378 1379/1379/1379 1380/1380/1380 +f 1381/1381/1381 1382/1382/1382 1383/1383/1383 1384/1384/1384 +f 1385/1385/1385 1386/1386/1386 1387/1387/1387 1388/1388/1388 +f 1389/1389/1389 1390/1390/1390 1391/1391/1391 1392/1392/1392 +f 1393/1393/1393 1394/1394/1394 1395/1395/1395 1396/1396/1396 +f 1397/1397/1397 1398/1398/1398 1399/1399/1399 1400/1400/1400 +f 1401/1401/1401 1402/1402/1402 1403/1403/1403 1404/1404/1404 +f 1405/1405/1405 1406/1406/1406 1407/1407/1407 1408/1408/1408 +f 1409/1409/1409 1410/1410/1410 1411/1411/1411 1412/1412/1412 +f 1413/1413/1413 1414/1414/1414 1415/1415/1415 1416/1416/1416 +f 1417/1417/1417 1418/1418/1418 1419/1419/1419 1420/1420/1420 +f 1421/1421/1421 1422/1422/1422 1423/1423/1423 1424/1424/1424 +f 1425/1425/1425 1426/1426/1426 1427/1427/1427 1428/1428/1428 +f 1429/1429/1429 1430/1430/1430 1431/1431/1431 1432/1432/1432 +f 1433/1433/1433 1434/1434/1434 1435/1435/1435 1436/1436/1436 +f 1437/1437/1437 1438/1438/1438 1439/1439/1439 1440/1440/1440 +f 1441/1441/1441 1442/1442/1442 1443/1443/1443 1444/1444/1444 +f 1445/1445/1445 1446/1446/1446 1447/1447/1447 1448/1448/1448 +f 1449/1449/1449 1450/1450/1450 1451/1451/1451 1452/1452/1452 +f 1453/1453/1453 1454/1454/1454 1455/1455/1455 1456/1456/1456 +f 1457/1457/1457 1458/1458/1458 1459/1459/1459 1460/1460/1460 +f 1461/1461/1461 1462/1462/1462 1463/1463/1463 1464/1464/1464 +f 1465/1465/1465 1466/1466/1466 1467/1467/1467 1468/1468/1468 +f 1469/1469/1469 1470/1470/1470 1471/1471/1471 1472/1472/1472 +f 1473/1473/1473 1474/1474/1474 1475/1475/1475 1476/1476/1476 +f 1477/1477/1477 1478/1478/1478 1479/1479/1479 1480/1480/1480 +f 1481/1481/1481 1482/1482/1482 1483/1483/1483 1484/1484/1484 +f 1485/1485/1485 1486/1486/1486 1487/1487/1487 1488/1488/1488 +f 1489/1489/1489 1490/1490/1490 1491/1491/1491 1492/1492/1492 +f 1493/1493/1493 1494/1494/1494 1495/1495/1495 1496/1496/1496 +f 1497/1497/1497 1498/1498/1498 1499/1499/1499 1500/1500/1500 +f 1501/1501/1501 1502/1502/1502 1503/1503/1503 1504/1504/1504 +f 1505/1505/1505 1506/1506/1506 1507/1507/1507 1508/1508/1508 +f 1509/1509/1509 1510/1510/1510 1511/1511/1511 1512/1512/1512 +f 1513/1513/1513 1514/1514/1514 1515/1515/1515 1516/1516/1516 +f 1517/1517/1517 1518/1518/1518 1519/1519/1519 1520/1520/1520 +f 1521/1521/1521 1522/1522/1522 1523/1523/1523 1524/1524/1524 +f 1525/1525/1525 1526/1526/1526 1527/1527/1527 1528/1528/1528 +f 1529/1529/1529 1530/1530/1530 1531/1531/1531 1532/1532/1532 +f 1533/1533/1533 1534/1534/1534 1535/1535/1535 1536/1536/1536 +f 1537/1537/1537 1538/1538/1538 1539/1539/1539 1540/1540/1540 +f 1541/1541/1541 1542/1542/1542 1543/1543/1543 1544/1544/1544 +f 1545/1545/1545 1546/1546/1546 1547/1547/1547 1548/1548/1548 +f 1549/1549/1549 1550/1550/1550 1551/1551/1551 1552/1552/1552 +f 1553/1553/1553 1554/1554/1554 1555/1555/1555 1556/1556/1556 +f 1557/1557/1557 1558/1558/1558 1559/1559/1559 1560/1560/1560 diff --git a/src/platform/kpi_rover_worlds/assets/meshes/overpass_w0.7_h0.45_d1.4_t0.05_s12.obj b/src/platform/kpi_rover_worlds/assets/meshes/overpass_w0.7_h0.45_d1.4_t0.05_s12.obj new file mode 100644 index 0000000..d3b5f09 --- /dev/null +++ b/src/platform/kpi_rover_worlds/assets/meshes/overpass_w0.7_h0.45_d1.4_t0.05_s12.obj @@ -0,0 +1,5071 @@ +# Overpass body, generated by gen_media.py +v -4.025507 -0.350000 0.000000 +v -3.956226 -0.350000 0.000482 +v -3.956226 0.350000 0.000482 +v -4.025507 0.350000 0.000000 +v -4.025507 -0.350000 0.000000 +v -3.956226 -0.350000 0.000000 +v -3.956226 -0.350000 0.000482 +v -4.025507 -0.350000 0.000000 +v -4.025507 0.350000 0.000000 +v -4.025507 0.350000 0.000000 +v -3.956226 0.350000 0.000482 +v -3.956226 0.350000 0.000000 +v -4.025507 -0.350000 0.000000 +v -4.025507 0.350000 0.000000 +v -3.956226 0.350000 0.000000 +v -3.956226 -0.350000 0.000000 +v -3.956226 -0.350000 0.000482 +v -3.886944 -0.350000 0.001925 +v -3.886944 0.350000 0.001925 +v -3.956226 0.350000 0.000482 +v -3.956226 -0.350000 0.000000 +v -3.886944 -0.350000 0.000000 +v -3.886944 -0.350000 0.001925 +v -3.956226 -0.350000 0.000482 +v -3.956226 0.350000 0.000000 +v -3.956226 0.350000 0.000482 +v -3.886944 0.350000 0.001925 +v -3.886944 0.350000 0.000000 +v -3.956226 -0.350000 0.000000 +v -3.956226 0.350000 0.000000 +v -3.886944 0.350000 0.000000 +v -3.886944 -0.350000 0.000000 +v -3.886944 -0.350000 0.001925 +v -3.817663 -0.350000 0.004323 +v -3.817663 0.350000 0.004323 +v -3.886944 0.350000 0.001925 +v -3.886944 -0.350000 0.000000 +v -3.817663 -0.350000 0.000000 +v -3.817663 -0.350000 0.004323 +v -3.886944 -0.350000 0.001925 +v -3.886944 0.350000 0.000000 +v -3.886944 0.350000 0.001925 +v -3.817663 0.350000 0.004323 +v -3.817663 0.350000 0.000000 +v -3.886944 -0.350000 0.000000 +v -3.886944 0.350000 0.000000 +v -3.817663 0.350000 0.000000 +v -3.817663 -0.350000 0.000000 +v -3.817663 -0.350000 0.004323 +v -3.748381 -0.350000 0.007667 +v -3.748381 0.350000 0.007667 +v -3.817663 0.350000 0.004323 +v -3.817663 -0.350000 0.000000 +v -3.748381 -0.350000 0.000000 +v -3.748381 -0.350000 0.007667 +v -3.817663 -0.350000 0.004323 +v -3.817663 0.350000 0.000000 +v -3.817663 0.350000 0.004323 +v -3.748381 0.350000 0.007667 +v -3.748381 0.350000 0.000000 +v -3.817663 -0.350000 0.000000 +v -3.817663 0.350000 0.000000 +v -3.748381 0.350000 0.000000 +v -3.748381 -0.350000 0.000000 +v -3.748381 -0.350000 0.007667 +v -3.679100 -0.350000 0.011941 +v -3.679100 0.350000 0.011941 +v -3.748381 0.350000 0.007667 +v -3.748381 -0.350000 0.000000 +v -3.679100 -0.350000 0.000000 +v -3.679100 -0.350000 0.011941 +v -3.748381 -0.350000 0.007667 +v -3.748381 0.350000 0.000000 +v -3.748381 0.350000 0.007667 +v -3.679100 0.350000 0.011941 +v -3.679100 0.350000 0.000000 +v -3.748381 -0.350000 0.000000 +v -3.748381 0.350000 0.000000 +v -3.679100 0.350000 0.000000 +v -3.679100 -0.350000 0.000000 +v -3.679100 -0.350000 0.011941 +v -3.609819 -0.350000 0.017127 +v -3.609819 0.350000 0.017127 +v -3.679100 0.350000 0.011941 +v -3.679100 -0.350000 0.000000 +v -3.609819 -0.350000 0.000000 +v -3.609819 -0.350000 0.017127 +v -3.679100 -0.350000 0.011941 +v -3.679100 0.350000 0.000000 +v -3.679100 0.350000 0.011941 +v -3.609819 0.350000 0.017127 +v -3.609819 0.350000 0.000000 +v -3.679100 -0.350000 0.000000 +v -3.679100 0.350000 0.000000 +v -3.609819 0.350000 0.000000 +v -3.609819 -0.350000 0.000000 +v -3.609819 -0.350000 0.017127 +v -3.540537 -0.350000 0.023204 +v -3.540537 0.350000 0.023204 +v -3.609819 0.350000 0.017127 +v -3.609819 -0.350000 0.000000 +v -3.540537 -0.350000 0.000000 +v -3.540537 -0.350000 0.023204 +v -3.609819 -0.350000 0.017127 +v -3.609819 0.350000 0.000000 +v -3.609819 0.350000 0.017127 +v -3.540537 0.350000 0.023204 +v -3.540537 0.350000 0.000000 +v -3.609819 -0.350000 0.000000 +v -3.609819 0.350000 0.000000 +v -3.540537 0.350000 0.000000 +v -3.540537 -0.350000 0.000000 +v -3.540537 -0.350000 0.023204 +v -3.471256 -0.350000 0.030144 +v -3.471256 0.350000 0.030144 +v -3.540537 0.350000 0.023204 +v -3.540537 -0.350000 0.000000 +v -3.471256 -0.350000 0.000000 +v -3.471256 -0.350000 0.030144 +v -3.540537 -0.350000 0.023204 +v -3.540537 0.350000 0.000000 +v -3.540537 0.350000 0.023204 +v -3.471256 0.350000 0.030144 +v -3.471256 0.350000 0.000000 +v -3.540537 -0.350000 0.000000 +v -3.540537 0.350000 0.000000 +v -3.471256 0.350000 0.000000 +v -3.471256 -0.350000 0.000000 +v -3.471256 -0.350000 0.030144 +v -3.401974 -0.350000 0.037919 +v -3.401974 0.350000 0.037919 +v -3.471256 0.350000 0.030144 +v -3.471256 -0.350000 0.000000 +v -3.401974 -0.350000 0.000000 +v -3.401974 -0.350000 0.037919 +v -3.471256 -0.350000 0.030144 +v -3.471256 0.350000 0.000000 +v -3.471256 0.350000 0.030144 +v -3.401974 0.350000 0.037919 +v -3.401974 0.350000 0.000000 +v -3.471256 -0.350000 0.000000 +v -3.471256 0.350000 0.000000 +v -3.401974 0.350000 0.000000 +v -3.401974 -0.350000 0.000000 +v -3.401974 -0.350000 0.037919 +v -3.332693 -0.350000 0.046495 +v -3.332693 0.350000 0.046495 +v -3.401974 0.350000 0.037919 +v -3.401974 -0.350000 0.000000 +v -3.332693 -0.350000 0.000000 +v -3.332693 -0.350000 0.046495 +v -3.401974 -0.350000 0.037919 +v -3.401974 0.350000 0.000000 +v -3.401974 0.350000 0.037919 +v -3.332693 0.350000 0.046495 +v -3.332693 0.350000 0.000000 +v -3.401974 -0.350000 0.000000 +v -3.401974 0.350000 0.000000 +v -3.332693 0.350000 0.000000 +v -3.332693 -0.350000 0.000000 +v -3.332693 -0.350000 0.046495 +v -3.263412 -0.350000 0.055836 +v -3.263412 0.350000 0.055836 +v -3.332693 0.350000 0.046495 +v -3.332693 -0.350000 0.000000 +v -3.263412 -0.350000 0.000000 +v -3.263412 -0.350000 0.055836 +v -3.332693 -0.350000 0.046495 +v -3.332693 0.350000 0.000000 +v -3.332693 0.350000 0.046495 +v -3.263412 0.350000 0.055836 +v -3.263412 0.350000 0.000000 +v -3.332693 -0.350000 0.000000 +v -3.332693 0.350000 0.000000 +v -3.263412 0.350000 0.000000 +v -3.263412 -0.350000 0.000000 +v -3.263412 -0.350000 0.055836 +v -3.194130 -0.350000 0.065901 +v -3.194130 0.350000 0.065901 +v -3.263412 0.350000 0.055836 +v -3.263412 -0.350000 0.000000 +v -3.194130 -0.350000 0.000000 +v -3.194130 -0.350000 0.065901 +v -3.263412 -0.350000 0.055836 +v -3.263412 0.350000 0.000000 +v -3.263412 0.350000 0.055836 +v -3.194130 0.350000 0.065901 +v -3.194130 0.350000 0.000000 +v -3.263412 -0.350000 0.000000 +v -3.263412 0.350000 0.000000 +v -3.194130 0.350000 0.000000 +v -3.194130 -0.350000 0.000000 +v -3.194130 -0.350000 0.065901 +v -3.124849 -0.350000 0.076647 +v -3.124849 0.350000 0.076647 +v -3.194130 0.350000 0.065901 +v -3.194130 -0.350000 0.000000 +v -3.124849 -0.350000 0.000000 +v -3.124849 -0.350000 0.076647 +v -3.194130 -0.350000 0.065901 +v -3.194130 0.350000 0.000000 +v -3.194130 0.350000 0.065901 +v -3.124849 0.350000 0.076647 +v -3.124849 0.350000 0.000000 +v -3.194130 -0.350000 0.000000 +v -3.194130 0.350000 0.000000 +v -3.124849 0.350000 0.000000 +v -3.124849 -0.350000 0.000000 +v -3.124849 -0.350000 0.076647 +v -3.055568 -0.350000 0.088029 +v -3.055568 0.350000 0.088029 +v -3.124849 0.350000 0.076647 +v -3.124849 -0.350000 0.000000 +v -3.055568 -0.350000 0.000000 +v -3.055568 -0.350000 0.088029 +v -3.124849 -0.350000 0.076647 +v -3.124849 0.350000 0.000000 +v -3.124849 0.350000 0.076647 +v -3.055568 0.350000 0.088029 +v -3.055568 0.350000 0.000000 +v -3.124849 -0.350000 0.000000 +v -3.124849 0.350000 0.000000 +v -3.055568 0.350000 0.000000 +v -3.055568 -0.350000 0.000000 +v -3.055568 -0.350000 0.088029 +v -2.986286 -0.350000 0.099997 +v -2.986286 0.350000 0.099997 +v -3.055568 0.350000 0.088029 +v -3.055568 -0.350000 0.000000 +v -2.986286 -0.350000 0.000000 +v -2.986286 -0.350000 0.099997 +v -3.055568 -0.350000 0.088029 +v -3.055568 0.350000 0.000000 +v -3.055568 0.350000 0.088029 +v -2.986286 0.350000 0.099997 +v -2.986286 0.350000 0.000000 +v -3.055568 -0.350000 0.000000 +v -3.055568 0.350000 0.000000 +v -2.986286 0.350000 0.000000 +v -2.986286 -0.350000 0.000000 +v -2.986286 -0.350000 0.099997 +v -2.917005 -0.350000 0.112500 +v -2.917005 0.350000 0.112500 +v -2.986286 0.350000 0.099997 +v -2.986286 -0.350000 0.000000 +v -2.917005 -0.350000 0.000000 +v -2.917005 -0.350000 0.112500 +v -2.986286 -0.350000 0.099997 +v -2.986286 0.350000 0.000000 +v -2.986286 0.350000 0.099997 +v -2.917005 0.350000 0.112500 +v -2.917005 0.350000 0.000000 +v -2.986286 -0.350000 0.000000 +v -2.986286 0.350000 0.000000 +v -2.917005 0.350000 0.000000 +v -2.917005 -0.350000 0.000000 +v -2.917005 -0.350000 0.112500 +v -2.847723 -0.350000 0.125485 +v -2.847723 0.350000 0.125485 +v -2.917005 0.350000 0.112500 +v -2.917005 -0.350000 0.000000 +v -2.847723 -0.350000 0.000000 +v -2.847723 -0.350000 0.125485 +v -2.917005 -0.350000 0.112500 +v -2.917005 0.350000 0.000000 +v -2.917005 0.350000 0.112500 +v -2.847723 0.350000 0.125485 +v -2.847723 0.350000 0.000000 +v -2.917005 -0.350000 0.000000 +v -2.917005 0.350000 0.000000 +v -2.847723 0.350000 0.000000 +v -2.847723 -0.350000 0.000000 +v -2.847723 -0.350000 0.125485 +v -2.778442 -0.350000 0.138896 +v -2.778442 0.350000 0.138896 +v -2.847723 0.350000 0.125485 +v -2.847723 -0.350000 0.000000 +v -2.778442 -0.350000 0.000000 +v -2.778442 -0.350000 0.138896 +v -2.847723 -0.350000 0.125485 +v -2.847723 0.350000 0.000000 +v -2.847723 0.350000 0.125485 +v -2.778442 0.350000 0.138896 +v -2.778442 0.350000 0.000000 +v -2.847723 -0.350000 0.000000 +v -2.847723 0.350000 0.000000 +v -2.778442 0.350000 0.000000 +v -2.778442 -0.350000 0.000000 +v -2.778442 -0.350000 0.138896 +v -2.709161 -0.350000 0.152676 +v -2.709161 0.350000 0.152676 +v -2.778442 0.350000 0.138896 +v -2.778442 -0.350000 0.000000 +v -2.709161 -0.350000 0.000000 +v -2.709161 -0.350000 0.152676 +v -2.778442 -0.350000 0.138896 +v -2.778442 0.350000 0.000000 +v -2.778442 0.350000 0.138896 +v -2.709161 0.350000 0.152676 +v -2.709161 0.350000 0.000000 +v -2.778442 -0.350000 0.000000 +v -2.778442 0.350000 0.000000 +v -2.709161 0.350000 0.000000 +v -2.709161 -0.350000 0.000000 +v -2.709161 -0.350000 0.152676 +v -2.639879 -0.350000 0.166766 +v -2.639879 0.350000 0.166766 +v -2.709161 0.350000 0.152676 +v -2.709161 -0.350000 0.000000 +v -2.639879 -0.350000 0.000000 +v -2.639879 -0.350000 0.166766 +v -2.709161 -0.350000 0.152676 +v -2.709161 0.350000 0.000000 +v -2.709161 0.350000 0.152676 +v -2.639879 0.350000 0.166766 +v -2.639879 0.350000 0.000000 +v -2.709161 -0.350000 0.000000 +v -2.709161 0.350000 0.000000 +v -2.639879 0.350000 0.000000 +v -2.639879 -0.350000 0.000000 +v -2.639879 -0.350000 0.166766 +v -2.570598 -0.350000 0.181105 +v -2.570598 0.350000 0.181105 +v -2.639879 0.350000 0.166766 +v -2.639879 -0.350000 0.000000 +v -2.570598 -0.350000 0.000000 +v -2.570598 -0.350000 0.181105 +v -2.639879 -0.350000 0.166766 +v -2.639879 0.350000 0.000000 +v -2.639879 0.350000 0.166766 +v -2.570598 0.350000 0.181105 +v -2.570598 0.350000 0.000000 +v -2.639879 -0.350000 0.000000 +v -2.639879 0.350000 0.000000 +v -2.570598 0.350000 0.000000 +v -2.570598 -0.350000 0.000000 +v -2.570598 -0.350000 0.181105 +v -2.501316 -0.350000 0.195632 +v -2.501316 0.350000 0.195632 +v -2.570598 0.350000 0.181105 +v -2.570598 -0.350000 0.000000 +v -2.501316 -0.350000 0.000000 +v -2.501316 -0.350000 0.195632 +v -2.570598 -0.350000 0.181105 +v -2.570598 0.350000 0.000000 +v -2.570598 0.350000 0.181105 +v -2.501316 0.350000 0.195632 +v -2.501316 0.350000 0.000000 +v -2.570598 -0.350000 0.000000 +v -2.570598 0.350000 0.000000 +v -2.501316 0.350000 0.000000 +v -2.501316 -0.350000 0.000000 +v -2.501316 -0.350000 0.195632 +v -2.432035 -0.350000 0.210284 +v -2.432035 0.350000 0.210284 +v -2.501316 0.350000 0.195632 +v -2.501316 -0.350000 0.000000 +v -2.432035 -0.350000 0.000000 +v -2.432035 -0.350000 0.210284 +v -2.501316 -0.350000 0.195632 +v -2.501316 0.350000 0.000000 +v -2.501316 0.350000 0.195632 +v -2.432035 0.350000 0.210284 +v -2.432035 0.350000 0.000000 +v -2.501316 -0.350000 0.000000 +v -2.501316 0.350000 0.000000 +v -2.432035 0.350000 0.000000 +v -2.432035 -0.350000 0.000000 +v -2.432035 -0.350000 0.210284 +v -2.362754 -0.350000 0.225000 +v -2.362754 0.350000 0.225000 +v -2.432035 0.350000 0.210284 +v -2.432035 -0.350000 0.000000 +v -2.362754 -0.350000 0.000000 +v -2.362754 -0.350000 0.225000 +v -2.432035 -0.350000 0.210284 +v -2.432035 0.350000 0.000000 +v -2.432035 0.350000 0.210284 +v -2.362754 0.350000 0.225000 +v -2.362754 0.350000 0.000000 +v -2.432035 -0.350000 0.000000 +v -2.432035 0.350000 0.000000 +v -2.362754 0.350000 0.000000 +v -2.362754 -0.350000 0.000000 +v -2.362754 -0.350000 0.225000 +v -2.293472 -0.350000 0.239716 +v -2.293472 0.350000 0.239716 +v -2.362754 0.350000 0.225000 +v -2.362754 -0.350000 0.000000 +v -2.293472 -0.350000 0.000000 +v -2.293472 -0.350000 0.239716 +v -2.362754 -0.350000 0.225000 +v -2.362754 0.350000 0.000000 +v -2.362754 0.350000 0.225000 +v -2.293472 0.350000 0.239716 +v -2.293472 0.350000 0.000000 +v -2.362754 -0.350000 0.000000 +v -2.362754 0.350000 0.000000 +v -2.293472 0.350000 0.000000 +v -2.293472 -0.350000 0.000000 +v -2.293472 -0.350000 0.239716 +v -2.224191 -0.350000 0.254368 +v -2.224191 0.350000 0.254368 +v -2.293472 0.350000 0.239716 +v -2.293472 -0.350000 0.000000 +v -2.224191 -0.350000 0.000000 +v -2.224191 -0.350000 0.254368 +v -2.293472 -0.350000 0.239716 +v -2.293472 0.350000 0.000000 +v -2.293472 0.350000 0.239716 +v -2.224191 0.350000 0.254368 +v -2.224191 0.350000 0.000000 +v -2.293472 -0.350000 0.000000 +v -2.293472 0.350000 0.000000 +v -2.224191 0.350000 0.000000 +v -2.224191 -0.350000 0.000000 +v -2.224191 -0.350000 0.254368 +v -2.154909 -0.350000 0.268895 +v -2.154909 0.350000 0.268895 +v -2.224191 0.350000 0.254368 +v -2.224191 -0.350000 0.000000 +v -2.154909 -0.350000 0.000000 +v -2.154909 -0.350000 0.268895 +v -2.224191 -0.350000 0.254368 +v -2.224191 0.350000 0.000000 +v -2.224191 0.350000 0.254368 +v -2.154909 0.350000 0.268895 +v -2.154909 0.350000 0.000000 +v -2.224191 -0.350000 0.000000 +v -2.224191 0.350000 0.000000 +v -2.154909 0.350000 0.000000 +v -2.154909 -0.350000 0.000000 +v -2.154909 -0.350000 0.268895 +v -2.085628 -0.350000 0.283234 +v -2.085628 0.350000 0.283234 +v -2.154909 0.350000 0.268895 +v -2.154909 -0.350000 0.000000 +v -2.085628 -0.350000 0.000000 +v -2.085628 -0.350000 0.283234 +v -2.154909 -0.350000 0.268895 +v -2.154909 0.350000 0.000000 +v -2.154909 0.350000 0.268895 +v -2.085628 0.350000 0.283234 +v -2.085628 0.350000 0.000000 +v -2.154909 -0.350000 0.000000 +v -2.154909 0.350000 0.000000 +v -2.085628 0.350000 0.000000 +v -2.085628 -0.350000 0.000000 +v -2.085628 -0.350000 0.283234 +v -2.016347 -0.350000 0.297324 +v -2.016347 0.350000 0.297324 +v -2.085628 0.350000 0.283234 +v -2.085628 -0.350000 0.000000 +v -2.016347 -0.350000 0.000000 +v -2.016347 -0.350000 0.297324 +v -2.085628 -0.350000 0.283234 +v -2.085628 0.350000 0.000000 +v -2.085628 0.350000 0.283234 +v -2.016347 0.350000 0.297324 +v -2.016347 0.350000 0.000000 +v -2.085628 -0.350000 0.000000 +v -2.085628 0.350000 0.000000 +v -2.016347 0.350000 0.000000 +v -2.016347 -0.350000 0.000000 +v -2.016347 -0.350000 0.297324 +v -1.947065 -0.350000 0.311104 +v -1.947065 0.350000 0.311104 +v -2.016347 0.350000 0.297324 +v -2.016347 -0.350000 0.000000 +v -1.947065 -0.350000 0.000000 +v -1.947065 -0.350000 0.311104 +v -2.016347 -0.350000 0.297324 +v -2.016347 0.350000 0.000000 +v -2.016347 0.350000 0.297324 +v -1.947065 0.350000 0.311104 +v -1.947065 0.350000 0.000000 +v -2.016347 -0.350000 0.000000 +v -2.016347 0.350000 0.000000 +v -1.947065 0.350000 0.000000 +v -1.947065 -0.350000 0.000000 +v -1.947065 -0.350000 0.311104 +v -1.877784 -0.350000 0.324515 +v -1.877784 0.350000 0.324515 +v -1.947065 0.350000 0.311104 +v -1.947065 -0.350000 0.000000 +v -1.877784 -0.350000 0.000000 +v -1.877784 -0.350000 0.324515 +v -1.947065 -0.350000 0.311104 +v -1.947065 0.350000 0.000000 +v -1.947065 0.350000 0.311104 +v -1.877784 0.350000 0.324515 +v -1.877784 0.350000 0.000000 +v -1.947065 -0.350000 0.000000 +v -1.947065 0.350000 0.000000 +v -1.877784 0.350000 0.000000 +v -1.877784 -0.350000 0.000000 +v -1.877784 -0.350000 0.324515 +v -1.808502 -0.350000 0.337500 +v -1.808502 0.350000 0.337500 +v -1.877784 0.350000 0.324515 +v -1.877784 -0.350000 0.000000 +v -1.808502 -0.350000 0.000000 +v -1.808502 -0.350000 0.337500 +v -1.877784 -0.350000 0.324515 +v -1.877784 0.350000 0.000000 +v -1.877784 0.350000 0.324515 +v -1.808502 0.350000 0.337500 +v -1.808502 0.350000 0.000000 +v -1.877784 -0.350000 0.000000 +v -1.877784 0.350000 0.000000 +v -1.808502 0.350000 0.000000 +v -1.808502 -0.350000 0.000000 +v -1.808502 -0.350000 0.337500 +v -1.739221 -0.350000 0.350003 +v -1.739221 0.350000 0.350003 +v -1.808502 0.350000 0.337500 +v -1.808502 -0.350000 0.000000 +v -1.739221 -0.350000 0.000000 +v -1.739221 -0.350000 0.350003 +v -1.808502 -0.350000 0.337500 +v -1.808502 0.350000 0.000000 +v -1.808502 0.350000 0.337500 +v -1.739221 0.350000 0.350003 +v -1.739221 0.350000 0.000000 +v -1.808502 -0.350000 0.000000 +v -1.808502 0.350000 0.000000 +v -1.739221 0.350000 0.000000 +v -1.739221 -0.350000 0.000000 +v -1.739221 -0.350000 0.350003 +v -1.669940 -0.350000 0.361971 +v -1.669940 0.350000 0.361971 +v -1.739221 0.350000 0.350003 +v -1.739221 -0.350000 0.000000 +v -1.669940 -0.350000 0.000000 +v -1.669940 -0.350000 0.361971 +v -1.739221 -0.350000 0.350003 +v -1.739221 0.350000 0.000000 +v -1.739221 0.350000 0.350003 +v -1.669940 0.350000 0.361971 +v -1.669940 0.350000 0.000000 +v -1.739221 -0.350000 0.000000 +v -1.739221 0.350000 0.000000 +v -1.669940 0.350000 0.000000 +v -1.669940 -0.350000 0.000000 +v -1.669940 -0.350000 0.361971 +v -1.600658 -0.350000 0.373353 +v -1.600658 0.350000 0.373353 +v -1.669940 0.350000 0.361971 +v -1.669940 -0.350000 0.000000 +v -1.600658 -0.350000 0.000000 +v -1.600658 -0.350000 0.373353 +v -1.669940 -0.350000 0.361971 +v -1.669940 0.350000 0.000000 +v -1.669940 0.350000 0.361971 +v -1.600658 0.350000 0.373353 +v -1.600658 0.350000 0.000000 +v -1.669940 -0.350000 0.000000 +v -1.669940 0.350000 0.000000 +v -1.600658 0.350000 0.000000 +v -1.600658 -0.350000 0.000000 +v -1.600658 -0.350000 0.373353 +v -1.531377 -0.350000 0.384099 +v -1.531377 0.350000 0.384099 +v -1.600658 0.350000 0.373353 +v -1.600658 -0.350000 0.000000 +v -1.531377 -0.350000 0.000000 +v -1.531377 -0.350000 0.384099 +v -1.600658 -0.350000 0.373353 +v -1.600658 0.350000 0.000000 +v -1.600658 0.350000 0.373353 +v -1.531377 0.350000 0.384099 +v -1.531377 0.350000 0.000000 +v -1.600658 -0.350000 0.000000 +v -1.600658 0.350000 0.000000 +v -1.531377 0.350000 0.000000 +v -1.531377 -0.350000 0.000000 +v -1.531377 -0.350000 0.384099 +v -1.462095 -0.350000 0.394164 +v -1.462095 0.350000 0.394164 +v -1.531377 0.350000 0.384099 +v -1.531377 -0.350000 0.000000 +v -1.462095 -0.350000 0.000000 +v -1.462095 -0.350000 0.394164 +v -1.531377 -0.350000 0.384099 +v -1.531377 0.350000 0.000000 +v -1.531377 0.350000 0.384099 +v -1.462095 0.350000 0.394164 +v -1.462095 0.350000 0.000000 +v -1.531377 -0.350000 0.000000 +v -1.531377 0.350000 0.000000 +v -1.462095 0.350000 0.000000 +v -1.462095 -0.350000 0.000000 +v -1.462095 -0.350000 0.394164 +v -1.392814 -0.350000 0.403505 +v -1.392814 0.350000 0.403505 +v -1.462095 0.350000 0.394164 +v -1.462095 -0.350000 0.000000 +v -1.392814 -0.350000 0.000000 +v -1.392814 -0.350000 0.403505 +v -1.462095 -0.350000 0.394164 +v -1.462095 0.350000 0.000000 +v -1.462095 0.350000 0.394164 +v -1.392814 0.350000 0.403505 +v -1.392814 0.350000 0.000000 +v -1.462095 -0.350000 0.000000 +v -1.462095 0.350000 0.000000 +v -1.392814 0.350000 0.000000 +v -1.392814 -0.350000 0.000000 +v -1.392814 -0.350000 0.403505 +v -1.323533 -0.350000 0.412081 +v -1.323533 0.350000 0.412081 +v -1.392814 0.350000 0.403505 +v -1.392814 -0.350000 0.000000 +v -1.323533 -0.350000 0.000000 +v -1.323533 -0.350000 0.412081 +v -1.392814 -0.350000 0.403505 +v -1.392814 0.350000 0.000000 +v -1.392814 0.350000 0.403505 +v -1.323533 0.350000 0.412081 +v -1.323533 0.350000 0.000000 +v -1.392814 -0.350000 0.000000 +v -1.392814 0.350000 0.000000 +v -1.323533 0.350000 0.000000 +v -1.323533 -0.350000 0.000000 +v -1.323533 -0.350000 0.412081 +v -1.254251 -0.350000 0.419856 +v -1.254251 0.350000 0.419856 +v -1.323533 0.350000 0.412081 +v -1.323533 -0.350000 0.000000 +v -1.254251 -0.350000 0.000000 +v -1.254251 -0.350000 0.419856 +v -1.323533 -0.350000 0.412081 +v -1.323533 0.350000 0.000000 +v -1.323533 0.350000 0.412081 +v -1.254251 0.350000 0.419856 +v -1.254251 0.350000 0.000000 +v -1.323533 -0.350000 0.000000 +v -1.323533 0.350000 0.000000 +v -1.254251 0.350000 0.000000 +v -1.254251 -0.350000 0.000000 +v -1.254251 -0.350000 0.419856 +v -1.184970 -0.350000 0.426796 +v -1.184970 0.350000 0.426796 +v -1.254251 0.350000 0.419856 +v -1.254251 -0.350000 0.000000 +v -1.184970 -0.350000 0.000000 +v -1.184970 -0.350000 0.426796 +v -1.254251 -0.350000 0.419856 +v -1.254251 0.350000 0.000000 +v -1.254251 0.350000 0.419856 +v -1.184970 0.350000 0.426796 +v -1.184970 0.350000 0.000000 +v -1.254251 -0.350000 0.000000 +v -1.254251 0.350000 0.000000 +v -1.184970 0.350000 0.000000 +v -1.184970 -0.350000 0.000000 +v -1.184970 -0.350000 0.426796 +v -1.115688 -0.350000 0.432873 +v -1.115688 0.350000 0.432873 +v -1.184970 0.350000 0.426796 +v -1.184970 -0.350000 0.000000 +v -1.115688 -0.350000 0.000000 +v -1.115688 -0.350000 0.432873 +v -1.184970 -0.350000 0.426796 +v -1.184970 0.350000 0.000000 +v -1.184970 0.350000 0.426796 +v -1.115688 0.350000 0.432873 +v -1.115688 0.350000 0.000000 +v -1.184970 -0.350000 0.000000 +v -1.184970 0.350000 0.000000 +v -1.115688 0.350000 0.000000 +v -1.115688 -0.350000 0.000000 +v -1.115688 -0.350000 0.432873 +v -1.046407 -0.350000 0.438059 +v -1.046407 0.350000 0.438059 +v -1.115688 0.350000 0.432873 +v -1.115688 -0.350000 0.000000 +v -1.046407 -0.350000 0.000000 +v -1.046407 -0.350000 0.438059 +v -1.115688 -0.350000 0.432873 +v -1.115688 0.350000 0.000000 +v -1.115688 0.350000 0.432873 +v -1.046407 0.350000 0.438059 +v -1.046407 0.350000 0.000000 +v -1.115688 -0.350000 0.000000 +v -1.115688 0.350000 0.000000 +v -1.046407 0.350000 0.000000 +v -1.046407 -0.350000 0.000000 +v -1.046407 -0.350000 0.438059 +v -0.977126 -0.350000 0.442333 +v -0.977126 0.350000 0.442333 +v -1.046407 0.350000 0.438059 +v -1.046407 -0.350000 0.000000 +v -0.977126 -0.350000 0.000000 +v -0.977126 -0.350000 0.442333 +v -1.046407 -0.350000 0.438059 +v -1.046407 0.350000 0.000000 +v -1.046407 0.350000 0.438059 +v -0.977126 0.350000 0.442333 +v -0.977126 0.350000 0.000000 +v -1.046407 -0.350000 0.000000 +v -1.046407 0.350000 0.000000 +v -0.977126 0.350000 0.000000 +v -0.977126 -0.350000 0.000000 +v -0.977126 -0.350000 0.442333 +v -0.907844 -0.350000 0.445677 +v -0.907844 0.350000 0.445677 +v -0.977126 0.350000 0.442333 +v -0.977126 -0.350000 0.000000 +v -0.907844 -0.350000 0.000000 +v -0.907844 -0.350000 0.445677 +v -0.977126 -0.350000 0.442333 +v -0.977126 0.350000 0.000000 +v -0.977126 0.350000 0.442333 +v -0.907844 0.350000 0.445677 +v -0.907844 0.350000 0.000000 +v -0.977126 -0.350000 0.000000 +v -0.977126 0.350000 0.000000 +v -0.907844 0.350000 0.000000 +v -0.907844 -0.350000 0.000000 +v -0.907844 -0.350000 0.445677 +v -0.838563 -0.350000 0.448075 +v -0.838563 0.350000 0.448075 +v -0.907844 0.350000 0.445677 +v -0.907844 -0.350000 0.000000 +v -0.838563 -0.350000 0.000000 +v -0.838563 -0.350000 0.448075 +v -0.907844 -0.350000 0.445677 +v -0.907844 0.350000 0.000000 +v -0.907844 0.350000 0.445677 +v -0.838563 0.350000 0.448075 +v -0.838563 0.350000 0.000000 +v -0.907844 -0.350000 0.000000 +v -0.907844 0.350000 0.000000 +v -0.838563 0.350000 0.000000 +v -0.838563 -0.350000 0.000000 +v -0.838563 -0.350000 0.448075 +v -0.769281 -0.350000 0.449518 +v -0.769281 0.350000 0.449518 +v -0.838563 0.350000 0.448075 +v -0.838563 -0.350000 0.000000 +v -0.769281 -0.350000 0.000000 +v -0.769281 -0.350000 0.449518 +v -0.838563 -0.350000 0.448075 +v -0.838563 0.350000 0.000000 +v -0.838563 0.350000 0.448075 +v -0.769281 0.350000 0.449518 +v -0.769281 0.350000 0.000000 +v -0.838563 -0.350000 0.000000 +v -0.838563 0.350000 0.000000 +v -0.769281 0.350000 0.000000 +v -0.769281 -0.350000 0.000000 +v -0.769281 -0.350000 0.449518 +v -0.700000 -0.350000 0.450000 +v -0.700000 0.350000 0.450000 +v -0.769281 0.350000 0.449518 +v -0.769281 -0.350000 0.000000 +v -0.700000 -0.350000 0.000000 +v -0.700000 -0.350000 0.450000 +v -0.769281 -0.350000 0.449518 +v -0.769281 0.350000 0.000000 +v -0.769281 0.350000 0.449518 +v -0.700000 0.350000 0.450000 +v -0.700000 0.350000 0.000000 +v -0.769281 -0.350000 0.000000 +v -0.769281 0.350000 0.000000 +v -0.700000 0.350000 0.000000 +v -0.700000 -0.350000 0.000000 +v -0.700000 -0.350000 0.450000 +v 0.700000 -0.350000 0.450000 +v 0.700000 0.350000 0.450000 +v -0.700000 0.350000 0.450000 +v -0.700000 -0.350000 0.400000 +v 0.700000 -0.350000 0.400000 +v 0.700000 -0.350000 0.450000 +v -0.700000 -0.350000 0.450000 +v -0.700000 0.350000 0.400000 +v -0.700000 0.350000 0.450000 +v 0.700000 0.350000 0.450000 +v 0.700000 0.350000 0.400000 +v -0.700000 -0.350000 0.400000 +v -0.700000 0.350000 0.400000 +v 0.700000 0.350000 0.400000 +v 0.700000 -0.350000 0.400000 +v 0.700000 -0.350000 0.450000 +v 0.769281 -0.350000 0.449518 +v 0.769281 0.350000 0.449518 +v 0.700000 0.350000 0.450000 +v 0.700000 -0.350000 0.000000 +v 0.769281 -0.350000 0.000000 +v 0.769281 -0.350000 0.449518 +v 0.700000 -0.350000 0.450000 +v 0.700000 0.350000 0.000000 +v 0.700000 0.350000 0.450000 +v 0.769281 0.350000 0.449518 +v 0.769281 0.350000 0.000000 +v 0.700000 -0.350000 0.000000 +v 0.700000 0.350000 0.000000 +v 0.769281 0.350000 0.000000 +v 0.769281 -0.350000 0.000000 +v 0.769281 -0.350000 0.449518 +v 0.838563 -0.350000 0.448075 +v 0.838563 0.350000 0.448075 +v 0.769281 0.350000 0.449518 +v 0.769281 -0.350000 0.000000 +v 0.838563 -0.350000 0.000000 +v 0.838563 -0.350000 0.448075 +v 0.769281 -0.350000 0.449518 +v 0.769281 0.350000 0.000000 +v 0.769281 0.350000 0.449518 +v 0.838563 0.350000 0.448075 +v 0.838563 0.350000 0.000000 +v 0.769281 -0.350000 0.000000 +v 0.769281 0.350000 0.000000 +v 0.838563 0.350000 0.000000 +v 0.838563 -0.350000 0.000000 +v 0.838563 -0.350000 0.448075 +v 0.907844 -0.350000 0.445677 +v 0.907844 0.350000 0.445677 +v 0.838563 0.350000 0.448075 +v 0.838563 -0.350000 0.000000 +v 0.907844 -0.350000 0.000000 +v 0.907844 -0.350000 0.445677 +v 0.838563 -0.350000 0.448075 +v 0.838563 0.350000 0.000000 +v 0.838563 0.350000 0.448075 +v 0.907844 0.350000 0.445677 +v 0.907844 0.350000 0.000000 +v 0.838563 -0.350000 0.000000 +v 0.838563 0.350000 0.000000 +v 0.907844 0.350000 0.000000 +v 0.907844 -0.350000 0.000000 +v 0.907844 -0.350000 0.445677 +v 0.977126 -0.350000 0.442333 +v 0.977126 0.350000 0.442333 +v 0.907844 0.350000 0.445677 +v 0.907844 -0.350000 0.000000 +v 0.977126 -0.350000 0.000000 +v 0.977126 -0.350000 0.442333 +v 0.907844 -0.350000 0.445677 +v 0.907844 0.350000 0.000000 +v 0.907844 0.350000 0.445677 +v 0.977126 0.350000 0.442333 +v 0.977126 0.350000 0.000000 +v 0.907844 -0.350000 0.000000 +v 0.907844 0.350000 0.000000 +v 0.977126 0.350000 0.000000 +v 0.977126 -0.350000 0.000000 +v 0.977126 -0.350000 0.442333 +v 1.046407 -0.350000 0.438059 +v 1.046407 0.350000 0.438059 +v 0.977126 0.350000 0.442333 +v 0.977126 -0.350000 0.000000 +v 1.046407 -0.350000 0.000000 +v 1.046407 -0.350000 0.438059 +v 0.977126 -0.350000 0.442333 +v 0.977126 0.350000 0.000000 +v 0.977126 0.350000 0.442333 +v 1.046407 0.350000 0.438059 +v 1.046407 0.350000 0.000000 +v 0.977126 -0.350000 0.000000 +v 0.977126 0.350000 0.000000 +v 1.046407 0.350000 0.000000 +v 1.046407 -0.350000 0.000000 +v 1.046407 -0.350000 0.438059 +v 1.115688 -0.350000 0.432873 +v 1.115688 0.350000 0.432873 +v 1.046407 0.350000 0.438059 +v 1.046407 -0.350000 0.000000 +v 1.115688 -0.350000 0.000000 +v 1.115688 -0.350000 0.432873 +v 1.046407 -0.350000 0.438059 +v 1.046407 0.350000 0.000000 +v 1.046407 0.350000 0.438059 +v 1.115688 0.350000 0.432873 +v 1.115688 0.350000 0.000000 +v 1.046407 -0.350000 0.000000 +v 1.046407 0.350000 0.000000 +v 1.115688 0.350000 0.000000 +v 1.115688 -0.350000 0.000000 +v 1.115688 -0.350000 0.432873 +v 1.184970 -0.350000 0.426796 +v 1.184970 0.350000 0.426796 +v 1.115688 0.350000 0.432873 +v 1.115688 -0.350000 0.000000 +v 1.184970 -0.350000 0.000000 +v 1.184970 -0.350000 0.426796 +v 1.115688 -0.350000 0.432873 +v 1.115688 0.350000 0.000000 +v 1.115688 0.350000 0.432873 +v 1.184970 0.350000 0.426796 +v 1.184970 0.350000 0.000000 +v 1.115688 -0.350000 0.000000 +v 1.115688 0.350000 0.000000 +v 1.184970 0.350000 0.000000 +v 1.184970 -0.350000 0.000000 +v 1.184970 -0.350000 0.426796 +v 1.254251 -0.350000 0.419856 +v 1.254251 0.350000 0.419856 +v 1.184970 0.350000 0.426796 +v 1.184970 -0.350000 0.000000 +v 1.254251 -0.350000 0.000000 +v 1.254251 -0.350000 0.419856 +v 1.184970 -0.350000 0.426796 +v 1.184970 0.350000 0.000000 +v 1.184970 0.350000 0.426796 +v 1.254251 0.350000 0.419856 +v 1.254251 0.350000 0.000000 +v 1.184970 -0.350000 0.000000 +v 1.184970 0.350000 0.000000 +v 1.254251 0.350000 0.000000 +v 1.254251 -0.350000 0.000000 +v 1.254251 -0.350000 0.419856 +v 1.323533 -0.350000 0.412081 +v 1.323533 0.350000 0.412081 +v 1.254251 0.350000 0.419856 +v 1.254251 -0.350000 0.000000 +v 1.323533 -0.350000 0.000000 +v 1.323533 -0.350000 0.412081 +v 1.254251 -0.350000 0.419856 +v 1.254251 0.350000 0.000000 +v 1.254251 0.350000 0.419856 +v 1.323533 0.350000 0.412081 +v 1.323533 0.350000 0.000000 +v 1.254251 -0.350000 0.000000 +v 1.254251 0.350000 0.000000 +v 1.323533 0.350000 0.000000 +v 1.323533 -0.350000 0.000000 +v 1.323533 -0.350000 0.412081 +v 1.392814 -0.350000 0.403505 +v 1.392814 0.350000 0.403505 +v 1.323533 0.350000 0.412081 +v 1.323533 -0.350000 0.000000 +v 1.392814 -0.350000 0.000000 +v 1.392814 -0.350000 0.403505 +v 1.323533 -0.350000 0.412081 +v 1.323533 0.350000 0.000000 +v 1.323533 0.350000 0.412081 +v 1.392814 0.350000 0.403505 +v 1.392814 0.350000 0.000000 +v 1.323533 -0.350000 0.000000 +v 1.323533 0.350000 0.000000 +v 1.392814 0.350000 0.000000 +v 1.392814 -0.350000 0.000000 +v 1.392814 -0.350000 0.403505 +v 1.462095 -0.350000 0.394164 +v 1.462095 0.350000 0.394164 +v 1.392814 0.350000 0.403505 +v 1.392814 -0.350000 0.000000 +v 1.462095 -0.350000 0.000000 +v 1.462095 -0.350000 0.394164 +v 1.392814 -0.350000 0.403505 +v 1.392814 0.350000 0.000000 +v 1.392814 0.350000 0.403505 +v 1.462095 0.350000 0.394164 +v 1.462095 0.350000 0.000000 +v 1.392814 -0.350000 0.000000 +v 1.392814 0.350000 0.000000 +v 1.462095 0.350000 0.000000 +v 1.462095 -0.350000 0.000000 +v 1.462095 -0.350000 0.394164 +v 1.531377 -0.350000 0.384099 +v 1.531377 0.350000 0.384099 +v 1.462095 0.350000 0.394164 +v 1.462095 -0.350000 0.000000 +v 1.531377 -0.350000 0.000000 +v 1.531377 -0.350000 0.384099 +v 1.462095 -0.350000 0.394164 +v 1.462095 0.350000 0.000000 +v 1.462095 0.350000 0.394164 +v 1.531377 0.350000 0.384099 +v 1.531377 0.350000 0.000000 +v 1.462095 -0.350000 0.000000 +v 1.462095 0.350000 0.000000 +v 1.531377 0.350000 0.000000 +v 1.531377 -0.350000 0.000000 +v 1.531377 -0.350000 0.384099 +v 1.600658 -0.350000 0.373353 +v 1.600658 0.350000 0.373353 +v 1.531377 0.350000 0.384099 +v 1.531377 -0.350000 0.000000 +v 1.600658 -0.350000 0.000000 +v 1.600658 -0.350000 0.373353 +v 1.531377 -0.350000 0.384099 +v 1.531377 0.350000 0.000000 +v 1.531377 0.350000 0.384099 +v 1.600658 0.350000 0.373353 +v 1.600658 0.350000 0.000000 +v 1.531377 -0.350000 0.000000 +v 1.531377 0.350000 0.000000 +v 1.600658 0.350000 0.000000 +v 1.600658 -0.350000 0.000000 +v 1.600658 -0.350000 0.373353 +v 1.669940 -0.350000 0.361971 +v 1.669940 0.350000 0.361971 +v 1.600658 0.350000 0.373353 +v 1.600658 -0.350000 0.000000 +v 1.669940 -0.350000 0.000000 +v 1.669940 -0.350000 0.361971 +v 1.600658 -0.350000 0.373353 +v 1.600658 0.350000 0.000000 +v 1.600658 0.350000 0.373353 +v 1.669940 0.350000 0.361971 +v 1.669940 0.350000 0.000000 +v 1.600658 -0.350000 0.000000 +v 1.600658 0.350000 0.000000 +v 1.669940 0.350000 0.000000 +v 1.669940 -0.350000 0.000000 +v 1.669940 -0.350000 0.361971 +v 1.739221 -0.350000 0.350003 +v 1.739221 0.350000 0.350003 +v 1.669940 0.350000 0.361971 +v 1.669940 -0.350000 0.000000 +v 1.739221 -0.350000 0.000000 +v 1.739221 -0.350000 0.350003 +v 1.669940 -0.350000 0.361971 +v 1.669940 0.350000 0.000000 +v 1.669940 0.350000 0.361971 +v 1.739221 0.350000 0.350003 +v 1.739221 0.350000 0.000000 +v 1.669940 -0.350000 0.000000 +v 1.669940 0.350000 0.000000 +v 1.739221 0.350000 0.000000 +v 1.739221 -0.350000 0.000000 +v 1.739221 -0.350000 0.350003 +v 1.808502 -0.350000 0.337500 +v 1.808502 0.350000 0.337500 +v 1.739221 0.350000 0.350003 +v 1.739221 -0.350000 0.000000 +v 1.808502 -0.350000 0.000000 +v 1.808502 -0.350000 0.337500 +v 1.739221 -0.350000 0.350003 +v 1.739221 0.350000 0.000000 +v 1.739221 0.350000 0.350003 +v 1.808502 0.350000 0.337500 +v 1.808502 0.350000 0.000000 +v 1.739221 -0.350000 0.000000 +v 1.739221 0.350000 0.000000 +v 1.808502 0.350000 0.000000 +v 1.808502 -0.350000 0.000000 +v 1.808502 -0.350000 0.337500 +v 1.877784 -0.350000 0.324515 +v 1.877784 0.350000 0.324515 +v 1.808502 0.350000 0.337500 +v 1.808502 -0.350000 0.000000 +v 1.877784 -0.350000 0.000000 +v 1.877784 -0.350000 0.324515 +v 1.808502 -0.350000 0.337500 +v 1.808502 0.350000 0.000000 +v 1.808502 0.350000 0.337500 +v 1.877784 0.350000 0.324515 +v 1.877784 0.350000 0.000000 +v 1.808502 -0.350000 0.000000 +v 1.808502 0.350000 0.000000 +v 1.877784 0.350000 0.000000 +v 1.877784 -0.350000 0.000000 +v 1.877784 -0.350000 0.324515 +v 1.947065 -0.350000 0.311104 +v 1.947065 0.350000 0.311104 +v 1.877784 0.350000 0.324515 +v 1.877784 -0.350000 0.000000 +v 1.947065 -0.350000 0.000000 +v 1.947065 -0.350000 0.311104 +v 1.877784 -0.350000 0.324515 +v 1.877784 0.350000 0.000000 +v 1.877784 0.350000 0.324515 +v 1.947065 0.350000 0.311104 +v 1.947065 0.350000 0.000000 +v 1.877784 -0.350000 0.000000 +v 1.877784 0.350000 0.000000 +v 1.947065 0.350000 0.000000 +v 1.947065 -0.350000 0.000000 +v 1.947065 -0.350000 0.311104 +v 2.016347 -0.350000 0.297324 +v 2.016347 0.350000 0.297324 +v 1.947065 0.350000 0.311104 +v 1.947065 -0.350000 0.000000 +v 2.016347 -0.350000 0.000000 +v 2.016347 -0.350000 0.297324 +v 1.947065 -0.350000 0.311104 +v 1.947065 0.350000 0.000000 +v 1.947065 0.350000 0.311104 +v 2.016347 0.350000 0.297324 +v 2.016347 0.350000 0.000000 +v 1.947065 -0.350000 0.000000 +v 1.947065 0.350000 0.000000 +v 2.016347 0.350000 0.000000 +v 2.016347 -0.350000 0.000000 +v 2.016347 -0.350000 0.297324 +v 2.085628 -0.350000 0.283234 +v 2.085628 0.350000 0.283234 +v 2.016347 0.350000 0.297324 +v 2.016347 -0.350000 0.000000 +v 2.085628 -0.350000 0.000000 +v 2.085628 -0.350000 0.283234 +v 2.016347 -0.350000 0.297324 +v 2.016347 0.350000 0.000000 +v 2.016347 0.350000 0.297324 +v 2.085628 0.350000 0.283234 +v 2.085628 0.350000 0.000000 +v 2.016347 -0.350000 0.000000 +v 2.016347 0.350000 0.000000 +v 2.085628 0.350000 0.000000 +v 2.085628 -0.350000 0.000000 +v 2.085628 -0.350000 0.283234 +v 2.154909 -0.350000 0.268895 +v 2.154909 0.350000 0.268895 +v 2.085628 0.350000 0.283234 +v 2.085628 -0.350000 0.000000 +v 2.154909 -0.350000 0.000000 +v 2.154909 -0.350000 0.268895 +v 2.085628 -0.350000 0.283234 +v 2.085628 0.350000 0.000000 +v 2.085628 0.350000 0.283234 +v 2.154909 0.350000 0.268895 +v 2.154909 0.350000 0.000000 +v 2.085628 -0.350000 0.000000 +v 2.085628 0.350000 0.000000 +v 2.154909 0.350000 0.000000 +v 2.154909 -0.350000 0.000000 +v 2.154909 -0.350000 0.268895 +v 2.224191 -0.350000 0.254368 +v 2.224191 0.350000 0.254368 +v 2.154909 0.350000 0.268895 +v 2.154909 -0.350000 0.000000 +v 2.224191 -0.350000 0.000000 +v 2.224191 -0.350000 0.254368 +v 2.154909 -0.350000 0.268895 +v 2.154909 0.350000 0.000000 +v 2.154909 0.350000 0.268895 +v 2.224191 0.350000 0.254368 +v 2.224191 0.350000 0.000000 +v 2.154909 -0.350000 0.000000 +v 2.154909 0.350000 0.000000 +v 2.224191 0.350000 0.000000 +v 2.224191 -0.350000 0.000000 +v 2.224191 -0.350000 0.254368 +v 2.293472 -0.350000 0.239716 +v 2.293472 0.350000 0.239716 +v 2.224191 0.350000 0.254368 +v 2.224191 -0.350000 0.000000 +v 2.293472 -0.350000 0.000000 +v 2.293472 -0.350000 0.239716 +v 2.224191 -0.350000 0.254368 +v 2.224191 0.350000 0.000000 +v 2.224191 0.350000 0.254368 +v 2.293472 0.350000 0.239716 +v 2.293472 0.350000 0.000000 +v 2.224191 -0.350000 0.000000 +v 2.224191 0.350000 0.000000 +v 2.293472 0.350000 0.000000 +v 2.293472 -0.350000 0.000000 +v 2.293472 -0.350000 0.239716 +v 2.362754 -0.350000 0.225000 +v 2.362754 0.350000 0.225000 +v 2.293472 0.350000 0.239716 +v 2.293472 -0.350000 0.000000 +v 2.362754 -0.350000 0.000000 +v 2.362754 -0.350000 0.225000 +v 2.293472 -0.350000 0.239716 +v 2.293472 0.350000 0.000000 +v 2.293472 0.350000 0.239716 +v 2.362754 0.350000 0.225000 +v 2.362754 0.350000 0.000000 +v 2.293472 -0.350000 0.000000 +v 2.293472 0.350000 0.000000 +v 2.362754 0.350000 0.000000 +v 2.362754 -0.350000 0.000000 +v 2.362754 -0.350000 0.225000 +v 2.432035 -0.350000 0.210284 +v 2.432035 0.350000 0.210284 +v 2.362754 0.350000 0.225000 +v 2.362754 -0.350000 0.000000 +v 2.432035 -0.350000 0.000000 +v 2.432035 -0.350000 0.210284 +v 2.362754 -0.350000 0.225000 +v 2.362754 0.350000 0.000000 +v 2.362754 0.350000 0.225000 +v 2.432035 0.350000 0.210284 +v 2.432035 0.350000 0.000000 +v 2.362754 -0.350000 0.000000 +v 2.362754 0.350000 0.000000 +v 2.432035 0.350000 0.000000 +v 2.432035 -0.350000 0.000000 +v 2.432035 -0.350000 0.210284 +v 2.501316 -0.350000 0.195632 +v 2.501316 0.350000 0.195632 +v 2.432035 0.350000 0.210284 +v 2.432035 -0.350000 0.000000 +v 2.501316 -0.350000 0.000000 +v 2.501316 -0.350000 0.195632 +v 2.432035 -0.350000 0.210284 +v 2.432035 0.350000 0.000000 +v 2.432035 0.350000 0.210284 +v 2.501316 0.350000 0.195632 +v 2.501316 0.350000 0.000000 +v 2.432035 -0.350000 0.000000 +v 2.432035 0.350000 0.000000 +v 2.501316 0.350000 0.000000 +v 2.501316 -0.350000 0.000000 +v 2.501316 -0.350000 0.195632 +v 2.570598 -0.350000 0.181105 +v 2.570598 0.350000 0.181105 +v 2.501316 0.350000 0.195632 +v 2.501316 -0.350000 0.000000 +v 2.570598 -0.350000 0.000000 +v 2.570598 -0.350000 0.181105 +v 2.501316 -0.350000 0.195632 +v 2.501316 0.350000 0.000000 +v 2.501316 0.350000 0.195632 +v 2.570598 0.350000 0.181105 +v 2.570598 0.350000 0.000000 +v 2.501316 -0.350000 0.000000 +v 2.501316 0.350000 0.000000 +v 2.570598 0.350000 0.000000 +v 2.570598 -0.350000 0.000000 +v 2.570598 -0.350000 0.181105 +v 2.639879 -0.350000 0.166766 +v 2.639879 0.350000 0.166766 +v 2.570598 0.350000 0.181105 +v 2.570598 -0.350000 0.000000 +v 2.639879 -0.350000 0.000000 +v 2.639879 -0.350000 0.166766 +v 2.570598 -0.350000 0.181105 +v 2.570598 0.350000 0.000000 +v 2.570598 0.350000 0.181105 +v 2.639879 0.350000 0.166766 +v 2.639879 0.350000 0.000000 +v 2.570598 -0.350000 0.000000 +v 2.570598 0.350000 0.000000 +v 2.639879 0.350000 0.000000 +v 2.639879 -0.350000 0.000000 +v 2.639879 -0.350000 0.166766 +v 2.709161 -0.350000 0.152676 +v 2.709161 0.350000 0.152676 +v 2.639879 0.350000 0.166766 +v 2.639879 -0.350000 0.000000 +v 2.709161 -0.350000 0.000000 +v 2.709161 -0.350000 0.152676 +v 2.639879 -0.350000 0.166766 +v 2.639879 0.350000 0.000000 +v 2.639879 0.350000 0.166766 +v 2.709161 0.350000 0.152676 +v 2.709161 0.350000 0.000000 +v 2.639879 -0.350000 0.000000 +v 2.639879 0.350000 0.000000 +v 2.709161 0.350000 0.000000 +v 2.709161 -0.350000 0.000000 +v 2.709161 -0.350000 0.152676 +v 2.778442 -0.350000 0.138896 +v 2.778442 0.350000 0.138896 +v 2.709161 0.350000 0.152676 +v 2.709161 -0.350000 0.000000 +v 2.778442 -0.350000 0.000000 +v 2.778442 -0.350000 0.138896 +v 2.709161 -0.350000 0.152676 +v 2.709161 0.350000 0.000000 +v 2.709161 0.350000 0.152676 +v 2.778442 0.350000 0.138896 +v 2.778442 0.350000 0.000000 +v 2.709161 -0.350000 0.000000 +v 2.709161 0.350000 0.000000 +v 2.778442 0.350000 0.000000 +v 2.778442 -0.350000 0.000000 +v 2.778442 -0.350000 0.138896 +v 2.847723 -0.350000 0.125485 +v 2.847723 0.350000 0.125485 +v 2.778442 0.350000 0.138896 +v 2.778442 -0.350000 0.000000 +v 2.847723 -0.350000 0.000000 +v 2.847723 -0.350000 0.125485 +v 2.778442 -0.350000 0.138896 +v 2.778442 0.350000 0.000000 +v 2.778442 0.350000 0.138896 +v 2.847723 0.350000 0.125485 +v 2.847723 0.350000 0.000000 +v 2.778442 -0.350000 0.000000 +v 2.778442 0.350000 0.000000 +v 2.847723 0.350000 0.000000 +v 2.847723 -0.350000 0.000000 +v 2.847723 -0.350000 0.125485 +v 2.917005 -0.350000 0.112500 +v 2.917005 0.350000 0.112500 +v 2.847723 0.350000 0.125485 +v 2.847723 -0.350000 0.000000 +v 2.917005 -0.350000 0.000000 +v 2.917005 -0.350000 0.112500 +v 2.847723 -0.350000 0.125485 +v 2.847723 0.350000 0.000000 +v 2.847723 0.350000 0.125485 +v 2.917005 0.350000 0.112500 +v 2.917005 0.350000 0.000000 +v 2.847723 -0.350000 0.000000 +v 2.847723 0.350000 0.000000 +v 2.917005 0.350000 0.000000 +v 2.917005 -0.350000 0.000000 +v 2.917005 -0.350000 0.112500 +v 2.986286 -0.350000 0.099997 +v 2.986286 0.350000 0.099997 +v 2.917005 0.350000 0.112500 +v 2.917005 -0.350000 0.000000 +v 2.986286 -0.350000 0.000000 +v 2.986286 -0.350000 0.099997 +v 2.917005 -0.350000 0.112500 +v 2.917005 0.350000 0.000000 +v 2.917005 0.350000 0.112500 +v 2.986286 0.350000 0.099997 +v 2.986286 0.350000 0.000000 +v 2.917005 -0.350000 0.000000 +v 2.917005 0.350000 0.000000 +v 2.986286 0.350000 0.000000 +v 2.986286 -0.350000 0.000000 +v 2.986286 -0.350000 0.099997 +v 3.055568 -0.350000 0.088029 +v 3.055568 0.350000 0.088029 +v 2.986286 0.350000 0.099997 +v 2.986286 -0.350000 0.000000 +v 3.055568 -0.350000 0.000000 +v 3.055568 -0.350000 0.088029 +v 2.986286 -0.350000 0.099997 +v 2.986286 0.350000 0.000000 +v 2.986286 0.350000 0.099997 +v 3.055568 0.350000 0.088029 +v 3.055568 0.350000 0.000000 +v 2.986286 -0.350000 0.000000 +v 2.986286 0.350000 0.000000 +v 3.055568 0.350000 0.000000 +v 3.055568 -0.350000 0.000000 +v 3.055568 -0.350000 0.088029 +v 3.124849 -0.350000 0.076647 +v 3.124849 0.350000 0.076647 +v 3.055568 0.350000 0.088029 +v 3.055568 -0.350000 0.000000 +v 3.124849 -0.350000 0.000000 +v 3.124849 -0.350000 0.076647 +v 3.055568 -0.350000 0.088029 +v 3.055568 0.350000 0.000000 +v 3.055568 0.350000 0.088029 +v 3.124849 0.350000 0.076647 +v 3.124849 0.350000 0.000000 +v 3.055568 -0.350000 0.000000 +v 3.055568 0.350000 0.000000 +v 3.124849 0.350000 0.000000 +v 3.124849 -0.350000 0.000000 +v 3.124849 -0.350000 0.076647 +v 3.194130 -0.350000 0.065901 +v 3.194130 0.350000 0.065901 +v 3.124849 0.350000 0.076647 +v 3.124849 -0.350000 0.000000 +v 3.194130 -0.350000 0.000000 +v 3.194130 -0.350000 0.065901 +v 3.124849 -0.350000 0.076647 +v 3.124849 0.350000 0.000000 +v 3.124849 0.350000 0.076647 +v 3.194130 0.350000 0.065901 +v 3.194130 0.350000 0.000000 +v 3.124849 -0.350000 0.000000 +v 3.124849 0.350000 0.000000 +v 3.194130 0.350000 0.000000 +v 3.194130 -0.350000 0.000000 +v 3.194130 -0.350000 0.065901 +v 3.263412 -0.350000 0.055836 +v 3.263412 0.350000 0.055836 +v 3.194130 0.350000 0.065901 +v 3.194130 -0.350000 0.000000 +v 3.263412 -0.350000 0.000000 +v 3.263412 -0.350000 0.055836 +v 3.194130 -0.350000 0.065901 +v 3.194130 0.350000 0.000000 +v 3.194130 0.350000 0.065901 +v 3.263412 0.350000 0.055836 +v 3.263412 0.350000 0.000000 +v 3.194130 -0.350000 0.000000 +v 3.194130 0.350000 0.000000 +v 3.263412 0.350000 0.000000 +v 3.263412 -0.350000 0.000000 +v 3.263412 -0.350000 0.055836 +v 3.332693 -0.350000 0.046495 +v 3.332693 0.350000 0.046495 +v 3.263412 0.350000 0.055836 +v 3.263412 -0.350000 0.000000 +v 3.332693 -0.350000 0.000000 +v 3.332693 -0.350000 0.046495 +v 3.263412 -0.350000 0.055836 +v 3.263412 0.350000 0.000000 +v 3.263412 0.350000 0.055836 +v 3.332693 0.350000 0.046495 +v 3.332693 0.350000 0.000000 +v 3.263412 -0.350000 0.000000 +v 3.263412 0.350000 0.000000 +v 3.332693 0.350000 0.000000 +v 3.332693 -0.350000 0.000000 +v 3.332693 -0.350000 0.046495 +v 3.401974 -0.350000 0.037919 +v 3.401974 0.350000 0.037919 +v 3.332693 0.350000 0.046495 +v 3.332693 -0.350000 0.000000 +v 3.401974 -0.350000 0.000000 +v 3.401974 -0.350000 0.037919 +v 3.332693 -0.350000 0.046495 +v 3.332693 0.350000 0.000000 +v 3.332693 0.350000 0.046495 +v 3.401974 0.350000 0.037919 +v 3.401974 0.350000 0.000000 +v 3.332693 -0.350000 0.000000 +v 3.332693 0.350000 0.000000 +v 3.401974 0.350000 0.000000 +v 3.401974 -0.350000 0.000000 +v 3.401974 -0.350000 0.037919 +v 3.471256 -0.350000 0.030144 +v 3.471256 0.350000 0.030144 +v 3.401974 0.350000 0.037919 +v 3.401974 -0.350000 0.000000 +v 3.471256 -0.350000 0.000000 +v 3.471256 -0.350000 0.030144 +v 3.401974 -0.350000 0.037919 +v 3.401974 0.350000 0.000000 +v 3.401974 0.350000 0.037919 +v 3.471256 0.350000 0.030144 +v 3.471256 0.350000 0.000000 +v 3.401974 -0.350000 0.000000 +v 3.401974 0.350000 0.000000 +v 3.471256 0.350000 0.000000 +v 3.471256 -0.350000 0.000000 +v 3.471256 -0.350000 0.030144 +v 3.540537 -0.350000 0.023204 +v 3.540537 0.350000 0.023204 +v 3.471256 0.350000 0.030144 +v 3.471256 -0.350000 0.000000 +v 3.540537 -0.350000 0.000000 +v 3.540537 -0.350000 0.023204 +v 3.471256 -0.350000 0.030144 +v 3.471256 0.350000 0.000000 +v 3.471256 0.350000 0.030144 +v 3.540537 0.350000 0.023204 +v 3.540537 0.350000 0.000000 +v 3.471256 -0.350000 0.000000 +v 3.471256 0.350000 0.000000 +v 3.540537 0.350000 0.000000 +v 3.540537 -0.350000 0.000000 +v 3.540537 -0.350000 0.023204 +v 3.609819 -0.350000 0.017127 +v 3.609819 0.350000 0.017127 +v 3.540537 0.350000 0.023204 +v 3.540537 -0.350000 0.000000 +v 3.609819 -0.350000 0.000000 +v 3.609819 -0.350000 0.017127 +v 3.540537 -0.350000 0.023204 +v 3.540537 0.350000 0.000000 +v 3.540537 0.350000 0.023204 +v 3.609819 0.350000 0.017127 +v 3.609819 0.350000 0.000000 +v 3.540537 -0.350000 0.000000 +v 3.540537 0.350000 0.000000 +v 3.609819 0.350000 0.000000 +v 3.609819 -0.350000 0.000000 +v 3.609819 -0.350000 0.017127 +v 3.679100 -0.350000 0.011941 +v 3.679100 0.350000 0.011941 +v 3.609819 0.350000 0.017127 +v 3.609819 -0.350000 0.000000 +v 3.679100 -0.350000 0.000000 +v 3.679100 -0.350000 0.011941 +v 3.609819 -0.350000 0.017127 +v 3.609819 0.350000 0.000000 +v 3.609819 0.350000 0.017127 +v 3.679100 0.350000 0.011941 +v 3.679100 0.350000 0.000000 +v 3.609819 -0.350000 0.000000 +v 3.609819 0.350000 0.000000 +v 3.679100 0.350000 0.000000 +v 3.679100 -0.350000 0.000000 +v 3.679100 -0.350000 0.011941 +v 3.748381 -0.350000 0.007667 +v 3.748381 0.350000 0.007667 +v 3.679100 0.350000 0.011941 +v 3.679100 -0.350000 0.000000 +v 3.748381 -0.350000 0.000000 +v 3.748381 -0.350000 0.007667 +v 3.679100 -0.350000 0.011941 +v 3.679100 0.350000 0.000000 +v 3.679100 0.350000 0.011941 +v 3.748381 0.350000 0.007667 +v 3.748381 0.350000 0.000000 +v 3.679100 -0.350000 0.000000 +v 3.679100 0.350000 0.000000 +v 3.748381 0.350000 0.000000 +v 3.748381 -0.350000 0.000000 +v 3.748381 -0.350000 0.007667 +v 3.817663 -0.350000 0.004323 +v 3.817663 0.350000 0.004323 +v 3.748381 0.350000 0.007667 +v 3.748381 -0.350000 0.000000 +v 3.817663 -0.350000 0.000000 +v 3.817663 -0.350000 0.004323 +v 3.748381 -0.350000 0.007667 +v 3.748381 0.350000 0.000000 +v 3.748381 0.350000 0.007667 +v 3.817663 0.350000 0.004323 +v 3.817663 0.350000 0.000000 +v 3.748381 -0.350000 0.000000 +v 3.748381 0.350000 0.000000 +v 3.817663 0.350000 0.000000 +v 3.817663 -0.350000 0.000000 +v 3.817663 -0.350000 0.004323 +v 3.886944 -0.350000 0.001925 +v 3.886944 0.350000 0.001925 +v 3.817663 0.350000 0.004323 +v 3.817663 -0.350000 0.000000 +v 3.886944 -0.350000 0.000000 +v 3.886944 -0.350000 0.001925 +v 3.817663 -0.350000 0.004323 +v 3.817663 0.350000 0.000000 +v 3.817663 0.350000 0.004323 +v 3.886944 0.350000 0.001925 +v 3.886944 0.350000 0.000000 +v 3.817663 -0.350000 0.000000 +v 3.817663 0.350000 0.000000 +v 3.886944 0.350000 0.000000 +v 3.886944 -0.350000 0.000000 +v 3.886944 -0.350000 0.001925 +v 3.956226 -0.350000 0.000482 +v 3.956226 0.350000 0.000482 +v 3.886944 0.350000 0.001925 +v 3.886944 -0.350000 0.000000 +v 3.956226 -0.350000 0.000000 +v 3.956226 -0.350000 0.000482 +v 3.886944 -0.350000 0.001925 +v 3.886944 0.350000 0.000000 +v 3.886944 0.350000 0.001925 +v 3.956226 0.350000 0.000482 +v 3.956226 0.350000 0.000000 +v 3.886944 -0.350000 0.000000 +v 3.886944 0.350000 0.000000 +v 3.956226 0.350000 0.000000 +v 3.956226 -0.350000 0.000000 +v 3.956226 -0.350000 0.000482 +v 4.025507 -0.350000 0.000000 +v 4.025507 0.350000 0.000000 +v 3.956226 0.350000 0.000482 +v 3.956226 -0.350000 0.000000 +v 4.025507 -0.350000 0.000000 +v 4.025507 -0.350000 0.000000 +v 3.956226 -0.350000 0.000482 +v 3.956226 0.350000 0.000000 +v 3.956226 0.350000 0.000482 +v 4.025507 0.350000 0.000000 +v 4.025507 0.350000 0.000000 +v 3.956226 -0.350000 0.000000 +v 3.956226 0.350000 0.000000 +v 4.025507 0.350000 0.000000 +v 4.025507 -0.350000 0.000000 +v -0.700000 -0.350000 0.000000 +v -0.700000 0.350000 0.000000 +v -0.700000 0.350000 0.400000 +v -0.700000 -0.350000 0.400000 +v 0.700000 -0.350000 0.400000 +v 0.700000 0.350000 0.400000 +v 0.700000 0.350000 0.000000 +v 0.700000 -0.350000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.034642 +vt 0.350000 0.034642 +vt 0.350000 0.000000 +vt -2.012754 0.000000 +vt -1.978113 0.000000 +vt -1.978113 0.000241 +vt -2.012754 0.000000 +vt -2.012754 0.000000 +vt -2.012754 0.000000 +vt -1.978113 0.000241 +vt -1.978113 0.000000 +vt -2.012754 -0.175000 +vt -2.012754 0.175000 +vt -1.978113 0.175000 +vt -1.978113 -0.175000 +vt 0.000000 0.034642 +vt 0.000000 0.069290 +vt 0.350000 0.069290 +vt 0.350000 0.034642 +vt -1.978113 0.000000 +vt -1.943472 0.000000 +vt -1.943472 0.000962 +vt -1.978113 0.000241 +vt -1.978113 0.000000 +vt -1.978113 0.000241 +vt -1.943472 0.000962 +vt -1.943472 0.000000 +vt -1.978113 -0.175000 +vt -1.978113 0.175000 +vt -1.943472 0.175000 +vt -1.943472 -0.175000 +vt 0.000000 0.069290 +vt 0.000000 0.103951 +vt 0.350000 0.103951 +vt 0.350000 0.069290 +vt -1.943472 0.000000 +vt -1.908831 0.000000 +vt -1.908831 0.002162 +vt -1.943472 0.000962 +vt -1.943472 0.000000 +vt -1.943472 0.000962 +vt -1.908831 0.002162 +vt -1.908831 0.000000 +vt -1.943472 -0.175000 +vt -1.943472 0.175000 +vt -1.908831 0.175000 +vt -1.908831 -0.175000 +vt 0.000000 0.103951 +vt 0.000000 0.138632 +vt 0.350000 0.138632 +vt 0.350000 0.103951 +vt -1.908831 0.000000 +vt -1.874191 0.000000 +vt -1.874191 0.003833 +vt -1.908831 0.002162 +vt -1.908831 0.000000 +vt -1.908831 0.002162 +vt -1.874191 0.003833 +vt -1.874191 0.000000 +vt -1.908831 -0.175000 +vt -1.908831 0.175000 +vt -1.874191 0.175000 +vt -1.874191 -0.175000 +vt 0.000000 0.138632 +vt 0.000000 0.173339 +vt 0.350000 0.173339 +vt 0.350000 0.138632 +vt -1.874191 0.000000 +vt -1.839550 0.000000 +vt -1.839550 0.005970 +vt -1.874191 0.003833 +vt -1.874191 0.000000 +vt -1.874191 0.003833 +vt -1.839550 0.005970 +vt -1.839550 0.000000 +vt -1.874191 -0.175000 +vt -1.874191 0.175000 +vt -1.839550 0.175000 +vt -1.839550 -0.175000 +vt 0.000000 0.173339 +vt 0.000000 0.208076 +vt 0.350000 0.208076 +vt 0.350000 0.173339 +vt -1.839550 0.000000 +vt -1.804909 0.000000 +vt -1.804909 0.008564 +vt -1.839550 0.005970 +vt -1.839550 0.000000 +vt -1.839550 0.005970 +vt -1.804909 0.008564 +vt -1.804909 0.000000 +vt -1.839550 -0.175000 +vt -1.839550 0.175000 +vt -1.804909 0.175000 +vt -1.804909 -0.175000 +vt 0.000000 0.208076 +vt 0.000000 0.242850 +vt 0.350000 0.242850 +vt 0.350000 0.208076 +vt -1.804909 0.000000 +vt -1.770269 0.000000 +vt -1.770269 0.011602 +vt -1.804909 0.008564 +vt -1.804909 0.000000 +vt -1.804909 0.008564 +vt -1.770269 0.011602 +vt -1.770269 0.000000 +vt -1.804909 -0.175000 +vt -1.804909 0.175000 +vt -1.770269 0.175000 +vt -1.770269 -0.175000 +vt 0.000000 0.242850 +vt 0.000000 0.277664 +vt 0.350000 0.277664 +vt 0.350000 0.242850 +vt -1.770269 0.000000 +vt -1.735628 0.000000 +vt -1.735628 0.015072 +vt -1.770269 0.011602 +vt -1.770269 0.000000 +vt -1.770269 0.011602 +vt -1.735628 0.015072 +vt -1.735628 0.000000 +vt -1.770269 -0.175000 +vt -1.770269 0.175000 +vt -1.735628 0.175000 +vt -1.735628 -0.175000 +vt 0.000000 0.277664 +vt 0.000000 0.312522 +vt 0.350000 0.312522 +vt 0.350000 0.277664 +vt -1.735628 0.000000 +vt -1.700987 0.000000 +vt -1.700987 0.018960 +vt -1.735628 0.015072 +vt -1.735628 0.000000 +vt -1.735628 0.015072 +vt -1.700987 0.018960 +vt -1.700987 0.000000 +vt -1.735628 -0.175000 +vt -1.735628 0.175000 +vt -1.700987 0.175000 +vt -1.700987 -0.175000 +vt 0.000000 0.312522 +vt 0.000000 0.347427 +vt 0.350000 0.347427 +vt 0.350000 0.312522 +vt -1.700987 0.000000 +vt -1.666347 0.000000 +vt -1.666347 0.023248 +vt -1.700987 0.018960 +vt -1.700987 0.000000 +vt -1.700987 0.018960 +vt -1.666347 0.023248 +vt -1.666347 0.000000 +vt -1.700987 -0.175000 +vt -1.700987 0.175000 +vt -1.666347 0.175000 +vt -1.666347 -0.175000 +vt 0.000000 0.347427 +vt 0.000000 0.382382 +vt 0.350000 0.382382 +vt 0.350000 0.347427 +vt -1.666347 0.000000 +vt -1.631706 0.000000 +vt -1.631706 0.027918 +vt -1.666347 0.023248 +vt -1.666347 0.000000 +vt -1.666347 0.023248 +vt -1.631706 0.027918 +vt -1.631706 0.000000 +vt -1.666347 -0.175000 +vt -1.666347 0.175000 +vt -1.631706 0.175000 +vt -1.631706 -0.175000 +vt 0.000000 0.382382 +vt 0.000000 0.417386 +vt 0.350000 0.417386 +vt 0.350000 0.382382 +vt -1.631706 0.000000 +vt -1.597065 0.000000 +vt -1.597065 0.032950 +vt -1.631706 0.027918 +vt -1.631706 0.000000 +vt -1.631706 0.027918 +vt -1.597065 0.032950 +vt -1.597065 0.000000 +vt -1.631706 -0.175000 +vt -1.631706 0.175000 +vt -1.597065 0.175000 +vt -1.597065 -0.175000 +vt 0.000000 0.417386 +vt 0.000000 0.452441 +vt 0.350000 0.452441 +vt 0.350000 0.417386 +vt -1.597065 0.000000 +vt -1.562424 0.000000 +vt -1.562424 0.038324 +vt -1.597065 0.032950 +vt -1.597065 0.000000 +vt -1.597065 0.032950 +vt -1.562424 0.038324 +vt -1.562424 0.000000 +vt -1.597065 -0.175000 +vt -1.597065 0.175000 +vt -1.562424 0.175000 +vt -1.562424 -0.175000 +vt 0.000000 0.452441 +vt 0.000000 0.487546 +vt 0.350000 0.487546 +vt 0.350000 0.452441 +vt -1.562424 0.000000 +vt -1.527784 0.000000 +vt -1.527784 0.044014 +vt -1.562424 0.038324 +vt -1.562424 0.000000 +vt -1.562424 0.038324 +vt -1.527784 0.044014 +vt -1.527784 0.000000 +vt -1.562424 -0.175000 +vt -1.562424 0.175000 +vt -1.527784 0.175000 +vt -1.527784 -0.175000 +vt 0.000000 0.487546 +vt 0.000000 0.522700 +vt 0.350000 0.522700 +vt 0.350000 0.487546 +vt -1.527784 0.000000 +vt -1.493143 0.000000 +vt -1.493143 0.049998 +vt -1.527784 0.044014 +vt -1.527784 0.000000 +vt -1.527784 0.044014 +vt -1.493143 0.049998 +vt -1.493143 0.000000 +vt -1.527784 -0.175000 +vt -1.527784 0.175000 +vt -1.493143 0.175000 +vt -1.493143 -0.175000 +vt 0.000000 0.522700 +vt 0.000000 0.557900 +vt 0.350000 0.557900 +vt 0.350000 0.522700 +vt -1.493143 0.000000 +vt -1.458502 0.000000 +vt -1.458502 0.056250 +vt -1.493143 0.049998 +vt -1.493143 0.000000 +vt -1.493143 0.049998 +vt -1.458502 0.056250 +vt -1.458502 0.000000 +vt -1.493143 -0.175000 +vt -1.493143 0.175000 +vt -1.458502 0.175000 +vt -1.458502 -0.175000 +vt 0.000000 0.557900 +vt 0.000000 0.593144 +vt 0.350000 0.593144 +vt 0.350000 0.557900 +vt -1.458502 0.000000 +vt -1.423862 0.000000 +vt -1.423862 0.062743 +vt -1.458502 0.056250 +vt -1.458502 0.000000 +vt -1.458502 0.056250 +vt -1.423862 0.062743 +vt -1.423862 0.000000 +vt -1.458502 -0.175000 +vt -1.458502 0.175000 +vt -1.423862 0.175000 +vt -1.423862 -0.175000 +vt 0.000000 0.593144 +vt 0.000000 0.628427 +vt 0.350000 0.628427 +vt 0.350000 0.593144 +vt -1.423862 0.000000 +vt -1.389221 0.000000 +vt -1.389221 0.069448 +vt -1.423862 0.062743 +vt -1.423862 0.000000 +vt -1.423862 0.062743 +vt -1.389221 0.069448 +vt -1.389221 0.000000 +vt -1.423862 -0.175000 +vt -1.423862 0.175000 +vt -1.389221 0.175000 +vt -1.389221 -0.175000 +vt 0.000000 0.628427 +vt 0.000000 0.663747 +vt 0.350000 0.663747 +vt 0.350000 0.628427 +vt -1.389221 0.000000 +vt -1.354580 0.000000 +vt -1.354580 0.076338 +vt -1.389221 0.069448 +vt -1.389221 0.000000 +vt -1.389221 0.069448 +vt -1.354580 0.076338 +vt -1.354580 0.000000 +vt -1.389221 -0.175000 +vt -1.389221 0.175000 +vt -1.354580 0.175000 +vt -1.354580 -0.175000 +vt 0.000000 0.663747 +vt 0.000000 0.699097 +vt 0.350000 0.699097 +vt 0.350000 0.663747 +vt -1.354580 0.000000 +vt -1.319940 0.000000 +vt -1.319940 0.083383 +vt -1.354580 0.076338 +vt -1.354580 0.000000 +vt -1.354580 0.076338 +vt -1.319940 0.083383 +vt -1.319940 0.000000 +vt -1.354580 -0.175000 +vt -1.354580 0.175000 +vt -1.319940 0.175000 +vt -1.319940 -0.175000 +vt 0.000000 0.699097 +vt 0.000000 0.734471 +vt 0.350000 0.734471 +vt 0.350000 0.699097 +vt -1.319940 0.000000 +vt -1.285299 0.000000 +vt -1.285299 0.090552 +vt -1.319940 0.083383 +vt -1.319940 0.000000 +vt -1.319940 0.083383 +vt -1.285299 0.090552 +vt -1.285299 0.000000 +vt -1.319940 -0.175000 +vt -1.319940 0.175000 +vt -1.285299 0.175000 +vt -1.285299 -0.175000 +vt 0.000000 0.734471 +vt 0.000000 0.769865 +vt 0.350000 0.769865 +vt 0.350000 0.734471 +vt -1.285299 0.000000 +vt -1.250658 0.000000 +vt -1.250658 0.097816 +vt -1.285299 0.090552 +vt -1.285299 0.000000 +vt -1.285299 0.090552 +vt -1.250658 0.097816 +vt -1.250658 0.000000 +vt -1.285299 -0.175000 +vt -1.285299 0.175000 +vt -1.250658 0.175000 +vt -1.250658 -0.175000 +vt 0.000000 0.769865 +vt 0.000000 0.805272 +vt 0.350000 0.805272 +vt 0.350000 0.769865 +vt -1.250658 0.000000 +vt -1.216017 0.000000 +vt -1.216017 0.105142 +vt -1.250658 0.097816 +vt -1.250658 0.000000 +vt -1.250658 0.097816 +vt -1.216017 0.105142 +vt -1.216017 0.000000 +vt -1.250658 -0.175000 +vt -1.250658 0.175000 +vt -1.216017 0.175000 +vt -1.216017 -0.175000 +vt 0.000000 0.805272 +vt 0.000000 0.840686 +vt 0.350000 0.840686 +vt 0.350000 0.805272 +vt -1.216017 0.000000 +vt -1.181377 0.000000 +vt -1.181377 0.112500 +vt -1.216017 0.105142 +vt -1.216017 0.000000 +vt -1.216017 0.105142 +vt -1.181377 0.112500 +vt -1.181377 0.000000 +vt -1.216017 -0.175000 +vt -1.216017 0.175000 +vt -1.181377 0.175000 +vt -1.181377 -0.175000 +vt 0.000000 0.840686 +vt 0.000000 0.876099 +vt 0.350000 0.876099 +vt 0.350000 0.840686 +vt -1.181377 0.000000 +vt -1.146736 0.000000 +vt -1.146736 0.119858 +vt -1.181377 0.112500 +vt -1.181377 0.000000 +vt -1.181377 0.112500 +vt -1.146736 0.119858 +vt -1.146736 0.000000 +vt -1.181377 -0.175000 +vt -1.181377 0.175000 +vt -1.146736 0.175000 +vt -1.146736 -0.175000 +vt 0.000000 0.876099 +vt 0.000000 0.911506 +vt 0.350000 0.911506 +vt 0.350000 0.876099 +vt -1.146736 0.000000 +vt -1.112095 0.000000 +vt -1.112095 0.127184 +vt -1.146736 0.119858 +vt -1.146736 0.000000 +vt -1.146736 0.119858 +vt -1.112095 0.127184 +vt -1.112095 0.000000 +vt -1.146736 -0.175000 +vt -1.146736 0.175000 +vt -1.112095 0.175000 +vt -1.112095 -0.175000 +vt 0.000000 0.911506 +vt 0.000000 0.946900 +vt 0.350000 0.946900 +vt 0.350000 0.911506 +vt -1.112095 0.000000 +vt -1.077455 0.000000 +vt -1.077455 0.134448 +vt -1.112095 0.127184 +vt -1.112095 0.000000 +vt -1.112095 0.127184 +vt -1.077455 0.134448 +vt -1.077455 0.000000 +vt -1.112095 -0.175000 +vt -1.112095 0.175000 +vt -1.077455 0.175000 +vt -1.077455 -0.175000 +vt 0.000000 0.946900 +vt 0.000000 0.982275 +vt 0.350000 0.982275 +vt 0.350000 0.946900 +vt -1.077455 0.000000 +vt -1.042814 0.000000 +vt -1.042814 0.141617 +vt -1.077455 0.134448 +vt -1.077455 0.000000 +vt -1.077455 0.134448 +vt -1.042814 0.141617 +vt -1.042814 0.000000 +vt -1.077455 -0.175000 +vt -1.077455 0.175000 +vt -1.042814 0.175000 +vt -1.042814 -0.175000 +vt 0.000000 0.982275 +vt 0.000000 1.017625 +vt 0.350000 1.017625 +vt 0.350000 0.982275 +vt -1.042814 0.000000 +vt -1.008173 0.000000 +vt -1.008173 0.148662 +vt -1.042814 0.141617 +vt -1.042814 0.000000 +vt -1.042814 0.141617 +vt -1.008173 0.148662 +vt -1.008173 0.000000 +vt -1.042814 -0.175000 +vt -1.042814 0.175000 +vt -1.008173 0.175000 +vt -1.008173 -0.175000 +vt 0.000000 1.017625 +vt 0.000000 1.052944 +vt 0.350000 1.052944 +vt 0.350000 1.017625 +vt -1.008173 0.000000 +vt -0.973533 0.000000 +vt -0.973533 0.155552 +vt -1.008173 0.148662 +vt -1.008173 0.000000 +vt -1.008173 0.148662 +vt -0.973533 0.155552 +vt -0.973533 0.000000 +vt -1.008173 -0.175000 +vt -1.008173 0.175000 +vt -0.973533 0.175000 +vt -0.973533 -0.175000 +vt 0.000000 1.052944 +vt 0.000000 1.088228 +vt 0.350000 1.088228 +vt 0.350000 1.052944 +vt -0.973533 0.000000 +vt -0.938892 0.000000 +vt -0.938892 0.162257 +vt -0.973533 0.155552 +vt -0.973533 0.000000 +vt -0.973533 0.155552 +vt -0.938892 0.162257 +vt -0.938892 0.000000 +vt -0.973533 -0.175000 +vt -0.973533 0.175000 +vt -0.938892 0.175000 +vt -0.938892 -0.175000 +vt 0.000000 1.088228 +vt 0.000000 1.123472 +vt 0.350000 1.123472 +vt 0.350000 1.088228 +vt -0.938892 0.000000 +vt -0.904251 0.000000 +vt -0.904251 0.168750 +vt -0.938892 0.162257 +vt -0.938892 0.000000 +vt -0.938892 0.162257 +vt -0.904251 0.168750 +vt -0.904251 0.000000 +vt -0.938892 -0.175000 +vt -0.938892 0.175000 +vt -0.904251 0.175000 +vt -0.904251 -0.175000 +vt 0.000000 1.123472 +vt 0.000000 1.158672 +vt 0.350000 1.158672 +vt 0.350000 1.123472 +vt -0.904251 0.000000 +vt -0.869610 0.000000 +vt -0.869610 0.175002 +vt -0.904251 0.168750 +vt -0.904251 0.000000 +vt -0.904251 0.168750 +vt -0.869610 0.175002 +vt -0.869610 0.000000 +vt -0.904251 -0.175000 +vt -0.904251 0.175000 +vt -0.869610 0.175000 +vt -0.869610 -0.175000 +vt 0.000000 1.158672 +vt 0.000000 1.193826 +vt 0.350000 1.193826 +vt 0.350000 1.158672 +vt -0.869610 0.000000 +vt -0.834970 0.000000 +vt -0.834970 0.180986 +vt -0.869610 0.175002 +vt -0.869610 0.000000 +vt -0.869610 0.175002 +vt -0.834970 0.180986 +vt -0.834970 0.000000 +vt -0.869610 -0.175000 +vt -0.869610 0.175000 +vt -0.834970 0.175000 +vt -0.834970 -0.175000 +vt 0.000000 1.193826 +vt 0.000000 1.228931 +vt 0.350000 1.228931 +vt 0.350000 1.193826 +vt -0.834970 0.000000 +vt -0.800329 0.000000 +vt -0.800329 0.186676 +vt -0.834970 0.180986 +vt -0.834970 0.000000 +vt -0.834970 0.180986 +vt -0.800329 0.186676 +vt -0.800329 0.000000 +vt -0.834970 -0.175000 +vt -0.834970 0.175000 +vt -0.800329 0.175000 +vt -0.800329 -0.175000 +vt 0.000000 1.228931 +vt 0.000000 1.263986 +vt 0.350000 1.263986 +vt 0.350000 1.228931 +vt -0.800329 0.000000 +vt -0.765688 0.000000 +vt -0.765688 0.192050 +vt -0.800329 0.186676 +vt -0.800329 0.000000 +vt -0.800329 0.186676 +vt -0.765688 0.192050 +vt -0.765688 0.000000 +vt -0.800329 -0.175000 +vt -0.800329 0.175000 +vt -0.765688 0.175000 +vt -0.765688 -0.175000 +vt 0.000000 1.263986 +vt 0.000000 1.298990 +vt 0.350000 1.298990 +vt 0.350000 1.263986 +vt -0.765688 0.000000 +vt -0.731048 0.000000 +vt -0.731048 0.197082 +vt -0.765688 0.192050 +vt -0.765688 0.000000 +vt -0.765688 0.192050 +vt -0.731048 0.197082 +vt -0.731048 0.000000 +vt -0.765688 -0.175000 +vt -0.765688 0.175000 +vt -0.731048 0.175000 +vt -0.731048 -0.175000 +vt 0.000000 1.298990 +vt 0.000000 1.333944 +vt 0.350000 1.333944 +vt 0.350000 1.298990 +vt -0.731048 0.000000 +vt -0.696407 0.000000 +vt -0.696407 0.201752 +vt -0.731048 0.197082 +vt -0.731048 0.000000 +vt -0.731048 0.197082 +vt -0.696407 0.201752 +vt -0.696407 0.000000 +vt -0.731048 -0.175000 +vt -0.731048 0.175000 +vt -0.696407 0.175000 +vt -0.696407 -0.175000 +vt 0.000000 1.333944 +vt 0.000000 1.368849 +vt 0.350000 1.368849 +vt 0.350000 1.333944 +vt -0.696407 0.000000 +vt -0.661766 0.000000 +vt -0.661766 0.206040 +vt -0.696407 0.201752 +vt -0.696407 0.000000 +vt -0.696407 0.201752 +vt -0.661766 0.206040 +vt -0.661766 0.000000 +vt -0.696407 -0.175000 +vt -0.696407 0.175000 +vt -0.661766 0.175000 +vt -0.661766 -0.175000 +vt 0.000000 1.368849 +vt 0.000000 1.403708 +vt 0.350000 1.403708 +vt 0.350000 1.368849 +vt -0.661766 0.000000 +vt -0.627126 0.000000 +vt -0.627126 0.209928 +vt -0.661766 0.206040 +vt -0.661766 0.000000 +vt -0.661766 0.206040 +vt -0.627126 0.209928 +vt -0.627126 0.000000 +vt -0.661766 -0.175000 +vt -0.661766 0.175000 +vt -0.627126 0.175000 +vt -0.627126 -0.175000 +vt 0.000000 1.403708 +vt 0.000000 1.438522 +vt 0.350000 1.438522 +vt 0.350000 1.403708 +vt -0.627126 0.000000 +vt -0.592485 0.000000 +vt -0.592485 0.213398 +vt -0.627126 0.209928 +vt -0.627126 0.000000 +vt -0.627126 0.209928 +vt -0.592485 0.213398 +vt -0.592485 0.000000 +vt -0.627126 -0.175000 +vt -0.627126 0.175000 +vt -0.592485 0.175000 +vt -0.592485 -0.175000 +vt 0.000000 1.438522 +vt 0.000000 1.473295 +vt 0.350000 1.473295 +vt 0.350000 1.438522 +vt -0.592485 0.000000 +vt -0.557844 0.000000 +vt -0.557844 0.216436 +vt -0.592485 0.213398 +vt -0.592485 0.000000 +vt -0.592485 0.213398 +vt -0.557844 0.216436 +vt -0.557844 0.000000 +vt -0.592485 -0.175000 +vt -0.592485 0.175000 +vt -0.557844 0.175000 +vt -0.557844 -0.175000 +vt 0.000000 1.473295 +vt 0.000000 1.508033 +vt 0.350000 1.508033 +vt 0.350000 1.473295 +vt -0.557844 0.000000 +vt -0.523203 0.000000 +vt -0.523203 0.219030 +vt -0.557844 0.216436 +vt -0.557844 0.000000 +vt -0.557844 0.216436 +vt -0.523203 0.219030 +vt -0.523203 0.000000 +vt -0.557844 -0.175000 +vt -0.557844 0.175000 +vt -0.523203 0.175000 +vt -0.523203 -0.175000 +vt 0.000000 1.508033 +vt 0.000000 1.542739 +vt 0.350000 1.542739 +vt 0.350000 1.508033 +vt -0.523203 0.000000 +vt -0.488563 0.000000 +vt -0.488563 0.221167 +vt -0.523203 0.219030 +vt -0.523203 0.000000 +vt -0.523203 0.219030 +vt -0.488563 0.221167 +vt -0.488563 0.000000 +vt -0.523203 -0.175000 +vt -0.523203 0.175000 +vt -0.488563 0.175000 +vt -0.488563 -0.175000 +vt 0.000000 1.542739 +vt 0.000000 1.577420 +vt 0.350000 1.577420 +vt 0.350000 1.542739 +vt -0.488563 0.000000 +vt -0.453922 0.000000 +vt -0.453922 0.222838 +vt -0.488563 0.221167 +vt -0.488563 0.000000 +vt -0.488563 0.221167 +vt -0.453922 0.222838 +vt -0.453922 0.000000 +vt -0.488563 -0.175000 +vt -0.488563 0.175000 +vt -0.453922 0.175000 +vt -0.453922 -0.175000 +vt 0.000000 1.577420 +vt 0.000000 1.612082 +vt 0.350000 1.612082 +vt 0.350000 1.577420 +vt -0.453922 0.000000 +vt -0.419281 0.000000 +vt -0.419281 0.224038 +vt -0.453922 0.222838 +vt -0.453922 0.000000 +vt -0.453922 0.222838 +vt -0.419281 0.224038 +vt -0.419281 0.000000 +vt -0.453922 -0.175000 +vt -0.453922 0.175000 +vt -0.419281 0.175000 +vt -0.419281 -0.175000 +vt 0.000000 1.612082 +vt 0.000000 1.646730 +vt 0.350000 1.646730 +vt 0.350000 1.612082 +vt -0.419281 0.000000 +vt -0.384641 0.000000 +vt -0.384641 0.224759 +vt -0.419281 0.224038 +vt -0.419281 0.000000 +vt -0.419281 0.224038 +vt -0.384641 0.224759 +vt -0.384641 0.000000 +vt -0.419281 -0.175000 +vt -0.419281 0.175000 +vt -0.384641 0.175000 +vt -0.384641 -0.175000 +vt 0.000000 1.646730 +vt 0.000000 1.681372 +vt 0.350000 1.681372 +vt 0.350000 1.646730 +vt -0.384641 0.000000 +vt -0.350000 0.000000 +vt -0.350000 0.225000 +vt -0.384641 0.224759 +vt -0.384641 0.000000 +vt -0.384641 0.224759 +vt -0.350000 0.225000 +vt -0.350000 0.000000 +vt -0.384641 -0.175000 +vt -0.384641 0.175000 +vt -0.350000 0.175000 +vt -0.350000 -0.175000 +vt 0.000000 1.681372 +vt 0.000000 2.381372 +vt 0.350000 2.381372 +vt 0.350000 1.681372 +vt -0.350000 0.200000 +vt 0.350000 0.200000 +vt 0.350000 0.225000 +vt -0.350000 0.225000 +vt -0.350000 0.200000 +vt -0.350000 0.225000 +vt 0.350000 0.225000 +vt 0.350000 0.200000 +vt -0.350000 -0.175000 +vt -0.350000 0.175000 +vt 0.350000 0.175000 +vt 0.350000 -0.175000 +vt 0.000000 2.381372 +vt 0.000000 2.416013 +vt 0.350000 2.416013 +vt 0.350000 2.381372 +vt 0.350000 0.000000 +vt 0.384641 0.000000 +vt 0.384641 0.224759 +vt 0.350000 0.225000 +vt 0.350000 0.000000 +vt 0.350000 0.225000 +vt 0.384641 0.224759 +vt 0.384641 0.000000 +vt 0.350000 -0.175000 +vt 0.350000 0.175000 +vt 0.384641 0.175000 +vt 0.384641 -0.175000 +vt 0.000000 2.416013 +vt 0.000000 2.450661 +vt 0.350000 2.450661 +vt 0.350000 2.416013 +vt 0.384641 0.000000 +vt 0.419281 0.000000 +vt 0.419281 0.224038 +vt 0.384641 0.224759 +vt 0.384641 0.000000 +vt 0.384641 0.224759 +vt 0.419281 0.224038 +vt 0.419281 0.000000 +vt 0.384641 -0.175000 +vt 0.384641 0.175000 +vt 0.419281 0.175000 +vt 0.419281 -0.175000 +vt 0.000000 2.450661 +vt 0.000000 2.485323 +vt 0.350000 2.485323 +vt 0.350000 2.450661 +vt 0.419281 0.000000 +vt 0.453922 0.000000 +vt 0.453922 0.222838 +vt 0.419281 0.224038 +vt 0.419281 0.000000 +vt 0.419281 0.224038 +vt 0.453922 0.222838 +vt 0.453922 0.000000 +vt 0.419281 -0.175000 +vt 0.419281 0.175000 +vt 0.453922 0.175000 +vt 0.453922 -0.175000 +vt 0.000000 2.485323 +vt 0.000000 2.520004 +vt 0.350000 2.520004 +vt 0.350000 2.485323 +vt 0.453922 0.000000 +vt 0.488563 0.000000 +vt 0.488563 0.221167 +vt 0.453922 0.222838 +vt 0.453922 0.000000 +vt 0.453922 0.222838 +vt 0.488563 0.221167 +vt 0.488563 0.000000 +vt 0.453922 -0.175000 +vt 0.453922 0.175000 +vt 0.488563 0.175000 +vt 0.488563 -0.175000 +vt 0.000000 2.520004 +vt 0.000000 2.554710 +vt 0.350000 2.554710 +vt 0.350000 2.520004 +vt 0.488563 0.000000 +vt 0.523203 0.000000 +vt 0.523203 0.219030 +vt 0.488563 0.221167 +vt 0.488563 0.000000 +vt 0.488563 0.221167 +vt 0.523203 0.219030 +vt 0.523203 0.000000 +vt 0.488563 -0.175000 +vt 0.488563 0.175000 +vt 0.523203 0.175000 +vt 0.523203 -0.175000 +vt 0.000000 2.554710 +vt 0.000000 2.589448 +vt 0.350000 2.589448 +vt 0.350000 2.554710 +vt 0.523203 0.000000 +vt 0.557844 0.000000 +vt 0.557844 0.216436 +vt 0.523203 0.219030 +vt 0.523203 0.000000 +vt 0.523203 0.219030 +vt 0.557844 0.216436 +vt 0.557844 0.000000 +vt 0.523203 -0.175000 +vt 0.523203 0.175000 +vt 0.557844 0.175000 +vt 0.557844 -0.175000 +vt 0.000000 2.589448 +vt 0.000000 2.624222 +vt 0.350000 2.624222 +vt 0.350000 2.589448 +vt 0.557844 0.000000 +vt 0.592485 0.000000 +vt 0.592485 0.213398 +vt 0.557844 0.216436 +vt 0.557844 0.000000 +vt 0.557844 0.216436 +vt 0.592485 0.213398 +vt 0.592485 0.000000 +vt 0.557844 -0.175000 +vt 0.557844 0.175000 +vt 0.592485 0.175000 +vt 0.592485 -0.175000 +vt 0.000000 2.624222 +vt 0.000000 2.659036 +vt 0.350000 2.659036 +vt 0.350000 2.624222 +vt 0.592485 0.000000 +vt 0.627126 0.000000 +vt 0.627126 0.209928 +vt 0.592485 0.213398 +vt 0.592485 0.000000 +vt 0.592485 0.213398 +vt 0.627126 0.209928 +vt 0.627126 0.000000 +vt 0.592485 -0.175000 +vt 0.592485 0.175000 +vt 0.627126 0.175000 +vt 0.627126 -0.175000 +vt 0.000000 2.659036 +vt 0.000000 2.693894 +vt 0.350000 2.693894 +vt 0.350000 2.659036 +vt 0.627126 0.000000 +vt 0.661766 0.000000 +vt 0.661766 0.206040 +vt 0.627126 0.209928 +vt 0.627126 0.000000 +vt 0.627126 0.209928 +vt 0.661766 0.206040 +vt 0.661766 0.000000 +vt 0.627126 -0.175000 +vt 0.627126 0.175000 +vt 0.661766 0.175000 +vt 0.661766 -0.175000 +vt 0.000000 2.693894 +vt 0.000000 2.728799 +vt 0.350000 2.728799 +vt 0.350000 2.693894 +vt 0.661766 0.000000 +vt 0.696407 0.000000 +vt 0.696407 0.201752 +vt 0.661766 0.206040 +vt 0.661766 0.000000 +vt 0.661766 0.206040 +vt 0.696407 0.201752 +vt 0.696407 0.000000 +vt 0.661766 -0.175000 +vt 0.661766 0.175000 +vt 0.696407 0.175000 +vt 0.696407 -0.175000 +vt 0.000000 2.728799 +vt 0.000000 2.763753 +vt 0.350000 2.763753 +vt 0.350000 2.728799 +vt 0.696407 0.000000 +vt 0.731048 0.000000 +vt 0.731048 0.197082 +vt 0.696407 0.201752 +vt 0.696407 0.000000 +vt 0.696407 0.201752 +vt 0.731048 0.197082 +vt 0.731048 0.000000 +vt 0.696407 -0.175000 +vt 0.696407 0.175000 +vt 0.731048 0.175000 +vt 0.731048 -0.175000 +vt 0.000000 2.763753 +vt 0.000000 2.798758 +vt 0.350000 2.798758 +vt 0.350000 2.763753 +vt 0.731048 0.000000 +vt 0.765688 0.000000 +vt 0.765688 0.192050 +vt 0.731048 0.197082 +vt 0.731048 0.000000 +vt 0.731048 0.197082 +vt 0.765688 0.192050 +vt 0.765688 0.000000 +vt 0.731048 -0.175000 +vt 0.731048 0.175000 +vt 0.765688 0.175000 +vt 0.765688 -0.175000 +vt 0.000000 2.798758 +vt 0.000000 2.833812 +vt 0.350000 2.833812 +vt 0.350000 2.798758 +vt 0.765688 0.000000 +vt 0.800329 0.000000 +vt 0.800329 0.186676 +vt 0.765688 0.192050 +vt 0.765688 0.000000 +vt 0.765688 0.192050 +vt 0.800329 0.186676 +vt 0.800329 0.000000 +vt 0.765688 -0.175000 +vt 0.765688 0.175000 +vt 0.800329 0.175000 +vt 0.800329 -0.175000 +vt 0.000000 2.833812 +vt 0.000000 2.868917 +vt 0.350000 2.868917 +vt 0.350000 2.833812 +vt 0.800329 0.000000 +vt 0.834970 0.000000 +vt 0.834970 0.180986 +vt 0.800329 0.186676 +vt 0.800329 0.000000 +vt 0.800329 0.186676 +vt 0.834970 0.180986 +vt 0.834970 0.000000 +vt 0.800329 -0.175000 +vt 0.800329 0.175000 +vt 0.834970 0.175000 +vt 0.834970 -0.175000 +vt 0.000000 2.868917 +vt 0.000000 2.904071 +vt 0.350000 2.904071 +vt 0.350000 2.868917 +vt 0.834970 0.000000 +vt 0.869610 0.000000 +vt 0.869610 0.175002 +vt 0.834970 0.180986 +vt 0.834970 0.000000 +vt 0.834970 0.180986 +vt 0.869610 0.175002 +vt 0.869610 0.000000 +vt 0.834970 -0.175000 +vt 0.834970 0.175000 +vt 0.869610 0.175000 +vt 0.869610 -0.175000 +vt 0.000000 2.904071 +vt 0.000000 2.939272 +vt 0.350000 2.939272 +vt 0.350000 2.904071 +vt 0.869610 0.000000 +vt 0.904251 0.000000 +vt 0.904251 0.168750 +vt 0.869610 0.175002 +vt 0.869610 0.000000 +vt 0.869610 0.175002 +vt 0.904251 0.168750 +vt 0.904251 0.000000 +vt 0.869610 -0.175000 +vt 0.869610 0.175000 +vt 0.904251 0.175000 +vt 0.904251 -0.175000 +vt 0.000000 2.939272 +vt 0.000000 2.974515 +vt 0.350000 2.974515 +vt 0.350000 2.939272 +vt 0.904251 0.000000 +vt 0.938892 0.000000 +vt 0.938892 0.162257 +vt 0.904251 0.168750 +vt 0.904251 0.000000 +vt 0.904251 0.168750 +vt 0.938892 0.162257 +vt 0.938892 0.000000 +vt 0.904251 -0.175000 +vt 0.904251 0.175000 +vt 0.938892 0.175000 +vt 0.938892 -0.175000 +vt 0.000000 2.974515 +vt 0.000000 3.009799 +vt 0.350000 3.009799 +vt 0.350000 2.974515 +vt 0.938892 0.000000 +vt 0.973533 0.000000 +vt 0.973533 0.155552 +vt 0.938892 0.162257 +vt 0.938892 0.000000 +vt 0.938892 0.162257 +vt 0.973533 0.155552 +vt 0.973533 0.000000 +vt 0.938892 -0.175000 +vt 0.938892 0.175000 +vt 0.973533 0.175000 +vt 0.973533 -0.175000 +vt 0.000000 3.009799 +vt 0.000000 3.045118 +vt 0.350000 3.045118 +vt 0.350000 3.009799 +vt 0.973533 0.000000 +vt 1.008173 0.000000 +vt 1.008173 0.148662 +vt 0.973533 0.155552 +vt 0.973533 0.000000 +vt 0.973533 0.155552 +vt 1.008173 0.148662 +vt 1.008173 0.000000 +vt 0.973533 -0.175000 +vt 0.973533 0.175000 +vt 1.008173 0.175000 +vt 1.008173 -0.175000 +vt 0.000000 3.045118 +vt 0.000000 3.080468 +vt 0.350000 3.080468 +vt 0.350000 3.045118 +vt 1.008173 0.000000 +vt 1.042814 0.000000 +vt 1.042814 0.141617 +vt 1.008173 0.148662 +vt 1.008173 0.000000 +vt 1.008173 0.148662 +vt 1.042814 0.141617 +vt 1.042814 0.000000 +vt 1.008173 -0.175000 +vt 1.008173 0.175000 +vt 1.042814 0.175000 +vt 1.042814 -0.175000 +vt 0.000000 3.080468 +vt 0.000000 3.115843 +vt 0.350000 3.115843 +vt 0.350000 3.080468 +vt 1.042814 0.000000 +vt 1.077455 0.000000 +vt 1.077455 0.134448 +vt 1.042814 0.141617 +vt 1.042814 0.000000 +vt 1.042814 0.141617 +vt 1.077455 0.134448 +vt 1.077455 0.000000 +vt 1.042814 -0.175000 +vt 1.042814 0.175000 +vt 1.077455 0.175000 +vt 1.077455 -0.175000 +vt 0.000000 3.115843 +vt 0.000000 3.151237 +vt 0.350000 3.151237 +vt 0.350000 3.115843 +vt 1.077455 0.000000 +vt 1.112095 0.000000 +vt 1.112095 0.127184 +vt 1.077455 0.134448 +vt 1.077455 0.000000 +vt 1.077455 0.134448 +vt 1.112095 0.127184 +vt 1.112095 0.000000 +vt 1.077455 -0.175000 +vt 1.077455 0.175000 +vt 1.112095 0.175000 +vt 1.112095 -0.175000 +vt 0.000000 3.151237 +vt 0.000000 3.186644 +vt 0.350000 3.186644 +vt 0.350000 3.151237 +vt 1.112095 0.000000 +vt 1.146736 0.000000 +vt 1.146736 0.119858 +vt 1.112095 0.127184 +vt 1.112095 0.000000 +vt 1.112095 0.127184 +vt 1.146736 0.119858 +vt 1.146736 0.000000 +vt 1.112095 -0.175000 +vt 1.112095 0.175000 +vt 1.146736 0.175000 +vt 1.146736 -0.175000 +vt 0.000000 3.186644 +vt 0.000000 3.222058 +vt 0.350000 3.222058 +vt 0.350000 3.186644 +vt 1.146736 0.000000 +vt 1.181377 0.000000 +vt 1.181377 0.112500 +vt 1.146736 0.119858 +vt 1.146736 0.000000 +vt 1.146736 0.119858 +vt 1.181377 0.112500 +vt 1.181377 0.000000 +vt 1.146736 -0.175000 +vt 1.146736 0.175000 +vt 1.181377 0.175000 +vt 1.181377 -0.175000 +vt 0.000000 3.222058 +vt 0.000000 3.257471 +vt 0.350000 3.257471 +vt 0.350000 3.222058 +vt 1.181377 0.000000 +vt 1.216017 0.000000 +vt 1.216017 0.105142 +vt 1.181377 0.112500 +vt 1.181377 0.000000 +vt 1.181377 0.112500 +vt 1.216017 0.105142 +vt 1.216017 0.000000 +vt 1.181377 -0.175000 +vt 1.181377 0.175000 +vt 1.216017 0.175000 +vt 1.216017 -0.175000 +vt 0.000000 3.257471 +vt 0.000000 3.292878 +vt 0.350000 3.292878 +vt 0.350000 3.257471 +vt 1.216017 0.000000 +vt 1.250658 0.000000 +vt 1.250658 0.097816 +vt 1.216017 0.105142 +vt 1.216017 0.000000 +vt 1.216017 0.105142 +vt 1.250658 0.097816 +vt 1.250658 0.000000 +vt 1.216017 -0.175000 +vt 1.216017 0.175000 +vt 1.250658 0.175000 +vt 1.250658 -0.175000 +vt 0.000000 3.292878 +vt 0.000000 3.328272 +vt 0.350000 3.328272 +vt 0.350000 3.292878 +vt 1.250658 0.000000 +vt 1.285299 0.000000 +vt 1.285299 0.090552 +vt 1.250658 0.097816 +vt 1.250658 0.000000 +vt 1.250658 0.097816 +vt 1.285299 0.090552 +vt 1.285299 0.000000 +vt 1.250658 -0.175000 +vt 1.250658 0.175000 +vt 1.285299 0.175000 +vt 1.285299 -0.175000 +vt 0.000000 3.328272 +vt 0.000000 3.363647 +vt 0.350000 3.363647 +vt 0.350000 3.328272 +vt 1.285299 0.000000 +vt 1.319940 0.000000 +vt 1.319940 0.083383 +vt 1.285299 0.090552 +vt 1.285299 0.000000 +vt 1.285299 0.090552 +vt 1.319940 0.083383 +vt 1.319940 0.000000 +vt 1.285299 -0.175000 +vt 1.285299 0.175000 +vt 1.319940 0.175000 +vt 1.319940 -0.175000 +vt 0.000000 3.363647 +vt 0.000000 3.398997 +vt 0.350000 3.398997 +vt 0.350000 3.363647 +vt 1.319940 0.000000 +vt 1.354580 0.000000 +vt 1.354580 0.076338 +vt 1.319940 0.083383 +vt 1.319940 0.000000 +vt 1.319940 0.083383 +vt 1.354580 0.076338 +vt 1.354580 0.000000 +vt 1.319940 -0.175000 +vt 1.319940 0.175000 +vt 1.354580 0.175000 +vt 1.354580 -0.175000 +vt 0.000000 3.398997 +vt 0.000000 3.434316 +vt 0.350000 3.434316 +vt 0.350000 3.398997 +vt 1.354580 0.000000 +vt 1.389221 0.000000 +vt 1.389221 0.069448 +vt 1.354580 0.076338 +vt 1.354580 0.000000 +vt 1.354580 0.076338 +vt 1.389221 0.069448 +vt 1.389221 0.000000 +vt 1.354580 -0.175000 +vt 1.354580 0.175000 +vt 1.389221 0.175000 +vt 1.389221 -0.175000 +vt 0.000000 3.434316 +vt 0.000000 3.469600 +vt 0.350000 3.469600 +vt 0.350000 3.434316 +vt 1.389221 0.000000 +vt 1.423862 0.000000 +vt 1.423862 0.062743 +vt 1.389221 0.069448 +vt 1.389221 0.000000 +vt 1.389221 0.069448 +vt 1.423862 0.062743 +vt 1.423862 0.000000 +vt 1.389221 -0.175000 +vt 1.389221 0.175000 +vt 1.423862 0.175000 +vt 1.423862 -0.175000 +vt 0.000000 3.469600 +vt 0.000000 3.504844 +vt 0.350000 3.504844 +vt 0.350000 3.469600 +vt 1.423862 0.000000 +vt 1.458502 0.000000 +vt 1.458502 0.056250 +vt 1.423862 0.062743 +vt 1.423862 0.000000 +vt 1.423862 0.062743 +vt 1.458502 0.056250 +vt 1.458502 0.000000 +vt 1.423862 -0.175000 +vt 1.423862 0.175000 +vt 1.458502 0.175000 +vt 1.458502 -0.175000 +vt 0.000000 3.504844 +vt 0.000000 3.540044 +vt 0.350000 3.540044 +vt 0.350000 3.504844 +vt 1.458502 0.000000 +vt 1.493143 0.000000 +vt 1.493143 0.049998 +vt 1.458502 0.056250 +vt 1.458502 0.000000 +vt 1.458502 0.056250 +vt 1.493143 0.049998 +vt 1.493143 0.000000 +vt 1.458502 -0.175000 +vt 1.458502 0.175000 +vt 1.493143 0.175000 +vt 1.493143 -0.175000 +vt 0.000000 3.540044 +vt 0.000000 3.575198 +vt 0.350000 3.575198 +vt 0.350000 3.540044 +vt 1.493143 0.000000 +vt 1.527784 0.000000 +vt 1.527784 0.044014 +vt 1.493143 0.049998 +vt 1.493143 0.000000 +vt 1.493143 0.049998 +vt 1.527784 0.044014 +vt 1.527784 0.000000 +vt 1.493143 -0.175000 +vt 1.493143 0.175000 +vt 1.527784 0.175000 +vt 1.527784 -0.175000 +vt 0.000000 3.575198 +vt 0.000000 3.610303 +vt 0.350000 3.610303 +vt 0.350000 3.575198 +vt 1.527784 0.000000 +vt 1.562424 0.000000 +vt 1.562424 0.038324 +vt 1.527784 0.044014 +vt 1.527784 0.000000 +vt 1.527784 0.044014 +vt 1.562424 0.038324 +vt 1.562424 0.000000 +vt 1.527784 -0.175000 +vt 1.527784 0.175000 +vt 1.562424 0.175000 +vt 1.562424 -0.175000 +vt 0.000000 3.610303 +vt 0.000000 3.645358 +vt 0.350000 3.645358 +vt 0.350000 3.610303 +vt 1.562424 0.000000 +vt 1.597065 0.000000 +vt 1.597065 0.032950 +vt 1.562424 0.038324 +vt 1.562424 0.000000 +vt 1.562424 0.038324 +vt 1.597065 0.032950 +vt 1.597065 0.000000 +vt 1.562424 -0.175000 +vt 1.562424 0.175000 +vt 1.597065 0.175000 +vt 1.597065 -0.175000 +vt 0.000000 3.645358 +vt 0.000000 3.680362 +vt 0.350000 3.680362 +vt 0.350000 3.645358 +vt 1.597065 0.000000 +vt 1.631706 0.000000 +vt 1.631706 0.027918 +vt 1.597065 0.032950 +vt 1.597065 0.000000 +vt 1.597065 0.032950 +vt 1.631706 0.027918 +vt 1.631706 0.000000 +vt 1.597065 -0.175000 +vt 1.597065 0.175000 +vt 1.631706 0.175000 +vt 1.631706 -0.175000 +vt 0.000000 3.680362 +vt 0.000000 3.715316 +vt 0.350000 3.715316 +vt 0.350000 3.680362 +vt 1.631706 0.000000 +vt 1.666347 0.000000 +vt 1.666347 0.023248 +vt 1.631706 0.027918 +vt 1.631706 0.000000 +vt 1.631706 0.027918 +vt 1.666347 0.023248 +vt 1.666347 0.000000 +vt 1.631706 -0.175000 +vt 1.631706 0.175000 +vt 1.666347 0.175000 +vt 1.666347 -0.175000 +vt 0.000000 3.715316 +vt 0.000000 3.750221 +vt 0.350000 3.750221 +vt 0.350000 3.715316 +vt 1.666347 0.000000 +vt 1.700987 0.000000 +vt 1.700987 0.018960 +vt 1.666347 0.023248 +vt 1.666347 0.000000 +vt 1.666347 0.023248 +vt 1.700987 0.018960 +vt 1.700987 0.000000 +vt 1.666347 -0.175000 +vt 1.666347 0.175000 +vt 1.700987 0.175000 +vt 1.700987 -0.175000 +vt 0.000000 3.750221 +vt 0.000000 3.785079 +vt 0.350000 3.785079 +vt 0.350000 3.750221 +vt 1.700987 0.000000 +vt 1.735628 0.000000 +vt 1.735628 0.015072 +vt 1.700987 0.018960 +vt 1.700987 0.000000 +vt 1.700987 0.018960 +vt 1.735628 0.015072 +vt 1.735628 0.000000 +vt 1.700987 -0.175000 +vt 1.700987 0.175000 +vt 1.735628 0.175000 +vt 1.735628 -0.175000 +vt 0.000000 3.785079 +vt 0.000000 3.819893 +vt 0.350000 3.819893 +vt 0.350000 3.785079 +vt 1.735628 0.000000 +vt 1.770269 0.000000 +vt 1.770269 0.011602 +vt 1.735628 0.015072 +vt 1.735628 0.000000 +vt 1.735628 0.015072 +vt 1.770269 0.011602 +vt 1.770269 0.000000 +vt 1.735628 -0.175000 +vt 1.735628 0.175000 +vt 1.770269 0.175000 +vt 1.770269 -0.175000 +vt 0.000000 3.819893 +vt 0.000000 3.854667 +vt 0.350000 3.854667 +vt 0.350000 3.819893 +vt 1.770269 0.000000 +vt 1.804909 0.000000 +vt 1.804909 0.008564 +vt 1.770269 0.011602 +vt 1.770269 0.000000 +vt 1.770269 0.011602 +vt 1.804909 0.008564 +vt 1.804909 0.000000 +vt 1.770269 -0.175000 +vt 1.770269 0.175000 +vt 1.804909 0.175000 +vt 1.804909 -0.175000 +vt 0.000000 3.854667 +vt 0.000000 3.889405 +vt 0.350000 3.889405 +vt 0.350000 3.854667 +vt 1.804909 0.000000 +vt 1.839550 0.000000 +vt 1.839550 0.005970 +vt 1.804909 0.008564 +vt 1.804909 0.000000 +vt 1.804909 0.008564 +vt 1.839550 0.005970 +vt 1.839550 0.000000 +vt 1.804909 -0.175000 +vt 1.804909 0.175000 +vt 1.839550 0.175000 +vt 1.839550 -0.175000 +vt 0.000000 3.889405 +vt 0.000000 3.924111 +vt 0.350000 3.924111 +vt 0.350000 3.889405 +vt 1.839550 0.000000 +vt 1.874191 0.000000 +vt 1.874191 0.003833 +vt 1.839550 0.005970 +vt 1.839550 0.000000 +vt 1.839550 0.005970 +vt 1.874191 0.003833 +vt 1.874191 0.000000 +vt 1.839550 -0.175000 +vt 1.839550 0.175000 +vt 1.874191 0.175000 +vt 1.874191 -0.175000 +vt 0.000000 3.924111 +vt 0.000000 3.958792 +vt 0.350000 3.958792 +vt 0.350000 3.924111 +vt 1.874191 0.000000 +vt 1.908831 0.000000 +vt 1.908831 0.002162 +vt 1.874191 0.003833 +vt 1.874191 0.000000 +vt 1.874191 0.003833 +vt 1.908831 0.002162 +vt 1.908831 0.000000 +vt 1.874191 -0.175000 +vt 1.874191 0.175000 +vt 1.908831 0.175000 +vt 1.908831 -0.175000 +vt 0.000000 3.958792 +vt 0.000000 3.993454 +vt 0.350000 3.993454 +vt 0.350000 3.958792 +vt 1.908831 0.000000 +vt 1.943472 0.000000 +vt 1.943472 0.000962 +vt 1.908831 0.002162 +vt 1.908831 0.000000 +vt 1.908831 0.002162 +vt 1.943472 0.000962 +vt 1.943472 0.000000 +vt 1.908831 -0.175000 +vt 1.908831 0.175000 +vt 1.943472 0.175000 +vt 1.943472 -0.175000 +vt 0.000000 3.993454 +vt 0.000000 4.028102 +vt 0.350000 4.028102 +vt 0.350000 3.993454 +vt 1.943472 0.000000 +vt 1.978113 0.000000 +vt 1.978113 0.000241 +vt 1.943472 0.000962 +vt 1.943472 0.000000 +vt 1.943472 0.000962 +vt 1.978113 0.000241 +vt 1.978113 0.000000 +vt 1.943472 -0.175000 +vt 1.943472 0.175000 +vt 1.978113 0.175000 +vt 1.978113 -0.175000 +vt 0.000000 4.028102 +vt 0.000000 4.062743 +vt 0.350000 4.062743 +vt 0.350000 4.028102 +vt 1.978113 0.000000 +vt 2.012754 0.000000 +vt 2.012754 0.000000 +vt 1.978113 0.000241 +vt 1.978113 0.000000 +vt 1.978113 0.000241 +vt 2.012754 0.000000 +vt 2.012754 0.000000 +vt 1.978113 -0.175000 +vt 1.978113 0.175000 +vt 2.012754 0.175000 +vt 2.012754 -0.175000 +vt -0.175000 0.000000 +vt 0.175000 0.000000 +vt 0.175000 0.200000 +vt -0.175000 0.200000 +vt -0.175000 0.200000 +vt 0.175000 0.200000 +vt 0.175000 0.000000 +vt -0.175000 0.000000 +vn -0.000000 0.000000 1.000000 +vn -0.013901 0.000000 0.999903 +vn -0.013901 0.000000 0.999903 +vn -0.000000 0.000000 1.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn -0.013901 0.000000 0.999903 +vn -0.027734 0.000000 0.999615 +vn -0.027734 0.000000 0.999615 +vn -0.013901 0.000000 0.999903 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn -0.027734 0.000000 0.999615 +vn -0.041432 0.000000 0.999141 +vn -0.041432 0.000000 0.999141 +vn -0.027734 0.000000 0.999615 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn -0.041432 0.000000 0.999141 +vn -0.054931 0.000000 0.998490 +vn -0.054931 0.000000 0.998490 +vn -0.041432 0.000000 0.999141 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn -0.054931 0.000000 0.998490 +vn -0.068165 0.000000 0.997674 +vn -0.068165 0.000000 0.997674 +vn -0.054931 0.000000 0.998490 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn -0.068165 0.000000 0.997674 +vn -0.081074 0.000000 0.996708 +vn -0.081074 0.000000 0.996708 +vn -0.068165 0.000000 0.997674 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn -0.081074 0.000000 0.996708 +vn -0.093599 0.000000 0.995610 +vn -0.093599 0.000000 0.995610 +vn -0.081074 0.000000 0.996708 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn -0.093599 0.000000 0.995610 +vn -0.105683 0.000000 0.994400 +vn -0.105683 0.000000 0.994400 +vn -0.093599 0.000000 0.995610 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn -0.105683 0.000000 0.994400 +vn -0.117275 0.000000 0.993099 +vn -0.117275 0.000000 0.993099 +vn -0.105683 0.000000 0.994400 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn -0.117275 0.000000 0.993099 +vn -0.128326 0.000000 0.991732 +vn -0.128326 0.000000 0.991732 +vn -0.117275 0.000000 0.993099 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn -0.128326 0.000000 0.991732 +vn -0.138792 0.000000 0.990322 +vn -0.138792 0.000000 0.990322 +vn -0.128326 0.000000 0.991732 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn -0.138792 0.000000 0.990322 +vn -0.148631 0.000000 0.988893 +vn -0.148631 0.000000 0.988893 +vn -0.138792 0.000000 0.990322 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn -0.148631 0.000000 0.988893 +vn -0.157806 0.000000 0.987470 +vn -0.157806 0.000000 0.987470 +vn -0.148631 0.000000 0.988893 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn -0.157806 0.000000 0.987470 +vn -0.166285 0.000000 0.986078 +vn -0.166285 0.000000 0.986078 +vn -0.157806 0.000000 0.987470 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn -0.166285 0.000000 0.986078 +vn -0.174037 0.000000 0.984739 +vn -0.174037 0.000000 0.984739 +vn -0.166285 0.000000 0.986078 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn -0.174037 0.000000 0.984739 +vn -0.181038 0.000000 0.983476 +vn -0.181038 0.000000 0.983476 +vn -0.174037 0.000000 0.984739 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn -0.181038 0.000000 0.983476 +vn -0.187264 0.000000 0.982310 +vn -0.187264 0.000000 0.982310 +vn -0.181038 0.000000 0.983476 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn -0.187264 0.000000 0.982310 +vn -0.192696 0.000000 0.981258 +vn -0.192696 0.000000 0.981258 +vn -0.187264 0.000000 0.982310 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn -0.192696 0.000000 0.981258 +vn -0.197319 0.000000 0.980339 +vn -0.197319 0.000000 0.980339 +vn -0.192696 0.000000 0.981258 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn -0.197319 0.000000 0.980339 +vn -0.201119 0.000000 0.979567 +vn -0.201119 0.000000 0.979567 +vn -0.197319 0.000000 0.980339 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn -0.201119 0.000000 0.979567 +vn -0.204085 0.000000 0.978953 +vn -0.204085 0.000000 0.978953 +vn -0.201119 0.000000 0.979567 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn -0.204085 0.000000 0.978953 +vn -0.206209 0.000000 0.978508 +vn -0.206209 0.000000 0.978508 +vn -0.204085 0.000000 0.978953 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn -0.206209 0.000000 0.978508 +vn -0.207486 0.000000 0.978238 +vn -0.207486 0.000000 0.978238 +vn -0.206209 0.000000 0.978508 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn -0.207486 0.000000 0.978238 +vn -0.207912 0.000000 0.978148 +vn -0.207912 0.000000 0.978148 +vn -0.207486 0.000000 0.978238 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn -0.207912 0.000000 0.978148 +vn -0.207486 0.000000 0.978238 +vn -0.207486 0.000000 0.978238 +vn -0.207912 0.000000 0.978148 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn -0.207486 0.000000 0.978238 +vn -0.206209 0.000000 0.978508 +vn -0.206209 0.000000 0.978508 +vn -0.207486 0.000000 0.978238 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn -0.206209 0.000000 0.978508 +vn -0.204085 0.000000 0.978953 +vn -0.204085 0.000000 0.978953 +vn -0.206209 0.000000 0.978508 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn -0.204085 0.000000 0.978953 +vn -0.201119 0.000000 0.979567 +vn -0.201119 0.000000 0.979567 +vn -0.204085 0.000000 0.978953 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn -0.201119 0.000000 0.979567 +vn -0.197319 0.000000 0.980339 +vn -0.197319 0.000000 0.980339 +vn -0.201119 0.000000 0.979567 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn -0.197319 0.000000 0.980339 +vn -0.192696 0.000000 0.981258 +vn -0.192696 0.000000 0.981258 +vn -0.197319 0.000000 0.980339 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn -0.192696 0.000000 0.981258 +vn -0.187264 0.000000 0.982310 +vn -0.187264 0.000000 0.982310 +vn -0.192696 0.000000 0.981258 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn -0.187264 0.000000 0.982310 +vn -0.181038 0.000000 0.983476 +vn -0.181038 0.000000 0.983476 +vn -0.187264 0.000000 0.982310 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn -0.181038 0.000000 0.983476 +vn -0.174037 0.000000 0.984739 +vn -0.174037 0.000000 0.984739 +vn -0.181038 0.000000 0.983476 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn -0.174037 0.000000 0.984739 +vn -0.166285 0.000000 0.986078 +vn -0.166285 0.000000 0.986078 +vn -0.174037 0.000000 0.984739 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn -0.166285 0.000000 0.986078 +vn -0.157806 0.000000 0.987470 +vn -0.157806 0.000000 0.987470 +vn -0.166285 0.000000 0.986078 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn -0.157806 0.000000 0.987470 +vn -0.148631 0.000000 0.988893 +vn -0.148631 0.000000 0.988893 +vn -0.157806 0.000000 0.987470 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn -0.148631 0.000000 0.988893 +vn -0.138792 0.000000 0.990322 +vn -0.138792 0.000000 0.990322 +vn -0.148631 0.000000 0.988893 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn -0.138792 0.000000 0.990322 +vn -0.128326 0.000000 0.991732 +vn -0.128326 0.000000 0.991732 +vn -0.138792 0.000000 0.990322 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn -0.128326 0.000000 0.991732 +vn -0.117275 0.000000 0.993099 +vn -0.117275 0.000000 0.993099 +vn -0.128326 0.000000 0.991732 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn -0.117275 0.000000 0.993099 +vn -0.105683 0.000000 0.994400 +vn -0.105683 0.000000 0.994400 +vn -0.117275 0.000000 0.993099 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn -0.105683 0.000000 0.994400 +vn -0.093599 0.000000 0.995610 +vn -0.093599 0.000000 0.995610 +vn -0.105683 0.000000 0.994400 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn -0.093599 0.000000 0.995610 +vn -0.081074 0.000000 0.996708 +vn -0.081074 0.000000 0.996708 +vn -0.093599 0.000000 0.995610 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn -0.081074 0.000000 0.996708 +vn -0.068165 0.000000 0.997674 +vn -0.068165 0.000000 0.997674 +vn -0.081074 0.000000 0.996708 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn -0.068165 0.000000 0.997674 +vn -0.054931 0.000000 0.998490 +vn -0.054931 0.000000 0.998490 +vn -0.068165 0.000000 0.997674 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn -0.054931 0.000000 0.998490 +vn -0.041432 0.000000 0.999141 +vn -0.041432 0.000000 0.999141 +vn -0.054931 0.000000 0.998490 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn -0.041432 0.000000 0.999141 +vn -0.027734 0.000000 0.999615 +vn -0.027734 0.000000 0.999615 +vn -0.041432 0.000000 0.999141 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn -0.027734 0.000000 0.999615 +vn -0.013901 0.000000 0.999903 +vn -0.013901 0.000000 0.999903 +vn -0.027734 0.000000 0.999615 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn -0.013901 0.000000 0.999903 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn -0.013901 0.000000 0.999903 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.013901 0.000000 0.999903 +vn 0.013901 0.000000 0.999903 +vn 0.000000 0.000000 1.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.013901 0.000000 0.999903 +vn 0.027734 0.000000 0.999615 +vn 0.027734 0.000000 0.999615 +vn 0.013901 0.000000 0.999903 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.027734 0.000000 0.999615 +vn 0.041432 0.000000 0.999141 +vn 0.041432 0.000000 0.999141 +vn 0.027734 0.000000 0.999615 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.041432 0.000000 0.999141 +vn 0.054931 0.000000 0.998490 +vn 0.054931 0.000000 0.998490 +vn 0.041432 0.000000 0.999141 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.054931 0.000000 0.998490 +vn 0.068165 0.000000 0.997674 +vn 0.068165 0.000000 0.997674 +vn 0.054931 0.000000 0.998490 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.068165 0.000000 0.997674 +vn 0.081074 0.000000 0.996708 +vn 0.081074 0.000000 0.996708 +vn 0.068165 0.000000 0.997674 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.081074 0.000000 0.996708 +vn 0.093599 0.000000 0.995610 +vn 0.093599 0.000000 0.995610 +vn 0.081074 0.000000 0.996708 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.093599 0.000000 0.995610 +vn 0.105683 0.000000 0.994400 +vn 0.105683 0.000000 0.994400 +vn 0.093599 0.000000 0.995610 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.105683 0.000000 0.994400 +vn 0.117275 0.000000 0.993099 +vn 0.117275 0.000000 0.993099 +vn 0.105683 0.000000 0.994400 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.117275 0.000000 0.993099 +vn 0.128326 0.000000 0.991732 +vn 0.128326 0.000000 0.991732 +vn 0.117275 0.000000 0.993099 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.128326 0.000000 0.991732 +vn 0.138792 0.000000 0.990322 +vn 0.138792 0.000000 0.990322 +vn 0.128326 0.000000 0.991732 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.138792 0.000000 0.990322 +vn 0.148631 0.000000 0.988893 +vn 0.148631 0.000000 0.988893 +vn 0.138792 0.000000 0.990322 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.148631 0.000000 0.988893 +vn 0.157806 0.000000 0.987470 +vn 0.157806 0.000000 0.987470 +vn 0.148631 0.000000 0.988893 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.157806 0.000000 0.987470 +vn 0.166285 0.000000 0.986078 +vn 0.166285 0.000000 0.986078 +vn 0.157806 0.000000 0.987470 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.166285 0.000000 0.986078 +vn 0.174037 0.000000 0.984739 +vn 0.174037 0.000000 0.984739 +vn 0.166285 0.000000 0.986078 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.174037 0.000000 0.984739 +vn 0.181038 0.000000 0.983476 +vn 0.181038 0.000000 0.983476 +vn 0.174037 0.000000 0.984739 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.181038 0.000000 0.983476 +vn 0.187264 0.000000 0.982310 +vn 0.187264 0.000000 0.982310 +vn 0.181038 0.000000 0.983476 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.187264 0.000000 0.982310 +vn 0.192696 0.000000 0.981258 +vn 0.192696 0.000000 0.981258 +vn 0.187264 0.000000 0.982310 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.192696 0.000000 0.981258 +vn 0.197319 0.000000 0.980339 +vn 0.197319 0.000000 0.980339 +vn 0.192696 0.000000 0.981258 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.197319 0.000000 0.980339 +vn 0.201119 0.000000 0.979567 +vn 0.201119 0.000000 0.979567 +vn 0.197319 0.000000 0.980339 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.201119 0.000000 0.979567 +vn 0.204085 0.000000 0.978953 +vn 0.204085 0.000000 0.978953 +vn 0.201119 0.000000 0.979567 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.204085 0.000000 0.978953 +vn 0.206209 0.000000 0.978508 +vn 0.206209 0.000000 0.978508 +vn 0.204085 0.000000 0.978953 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.206209 0.000000 0.978508 +vn 0.207486 0.000000 0.978238 +vn 0.207486 0.000000 0.978238 +vn 0.206209 0.000000 0.978508 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.207486 0.000000 0.978238 +vn 0.207912 0.000000 0.978148 +vn 0.207912 0.000000 0.978148 +vn 0.207486 0.000000 0.978238 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.207912 0.000000 0.978148 +vn 0.207486 0.000000 0.978238 +vn 0.207486 0.000000 0.978238 +vn 0.207912 0.000000 0.978148 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.207486 0.000000 0.978238 +vn 0.206209 0.000000 0.978508 +vn 0.206209 0.000000 0.978508 +vn 0.207486 0.000000 0.978238 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.206209 0.000000 0.978508 +vn 0.204085 0.000000 0.978953 +vn 0.204085 0.000000 0.978953 +vn 0.206209 0.000000 0.978508 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.204085 0.000000 0.978953 +vn 0.201119 0.000000 0.979567 +vn 0.201119 0.000000 0.979567 +vn 0.204085 0.000000 0.978953 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.201119 0.000000 0.979567 +vn 0.197319 0.000000 0.980339 +vn 0.197319 0.000000 0.980339 +vn 0.201119 0.000000 0.979567 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.197319 0.000000 0.980339 +vn 0.192696 0.000000 0.981258 +vn 0.192696 0.000000 0.981258 +vn 0.197319 0.000000 0.980339 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.192696 0.000000 0.981258 +vn 0.187264 0.000000 0.982310 +vn 0.187264 0.000000 0.982310 +vn 0.192696 0.000000 0.981258 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.187264 0.000000 0.982310 +vn 0.181038 0.000000 0.983476 +vn 0.181038 0.000000 0.983476 +vn 0.187264 0.000000 0.982310 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.181038 0.000000 0.983476 +vn 0.174037 0.000000 0.984739 +vn 0.174037 0.000000 0.984739 +vn 0.181038 0.000000 0.983476 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.174037 0.000000 0.984739 +vn 0.166285 0.000000 0.986078 +vn 0.166285 0.000000 0.986078 +vn 0.174037 0.000000 0.984739 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.166285 0.000000 0.986078 +vn 0.157806 0.000000 0.987470 +vn 0.157806 0.000000 0.987470 +vn 0.166285 0.000000 0.986078 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.157806 0.000000 0.987470 +vn 0.148631 0.000000 0.988893 +vn 0.148631 0.000000 0.988893 +vn 0.157806 0.000000 0.987470 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.148631 0.000000 0.988893 +vn 0.138792 0.000000 0.990322 +vn 0.138792 0.000000 0.990322 +vn 0.148631 0.000000 0.988893 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.138792 0.000000 0.990322 +vn 0.128326 0.000000 0.991732 +vn 0.128326 0.000000 0.991732 +vn 0.138792 0.000000 0.990322 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.128326 0.000000 0.991732 +vn 0.117275 0.000000 0.993099 +vn 0.117275 0.000000 0.993099 +vn 0.128326 0.000000 0.991732 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.117275 0.000000 0.993099 +vn 0.105683 0.000000 0.994400 +vn 0.105683 0.000000 0.994400 +vn 0.117275 0.000000 0.993099 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.105683 0.000000 0.994400 +vn 0.093599 0.000000 0.995610 +vn 0.093599 0.000000 0.995610 +vn 0.105683 0.000000 0.994400 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.093599 0.000000 0.995610 +vn 0.081074 0.000000 0.996708 +vn 0.081074 0.000000 0.996708 +vn 0.093599 0.000000 0.995610 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.081074 0.000000 0.996708 +vn 0.068165 0.000000 0.997674 +vn 0.068165 0.000000 0.997674 +vn 0.081074 0.000000 0.996708 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.068165 0.000000 0.997674 +vn 0.054931 0.000000 0.998490 +vn 0.054931 0.000000 0.998490 +vn 0.068165 0.000000 0.997674 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.054931 0.000000 0.998490 +vn 0.041432 0.000000 0.999141 +vn 0.041432 0.000000 0.999141 +vn 0.054931 0.000000 0.998490 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.041432 0.000000 0.999141 +vn 0.027734 0.000000 0.999615 +vn 0.027734 0.000000 0.999615 +vn 0.041432 0.000000 0.999141 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.027734 0.000000 0.999615 +vn 0.013901 0.000000 0.999903 +vn 0.013901 0.000000 0.999903 +vn 0.027734 0.000000 0.999615 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.013901 0.000000 0.999903 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.013901 0.000000 0.999903 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +f 1/1/1 2/2/2 3/3/3 4/4/4 +f 5/5/5 6/6/6 7/7/7 8/8/8 +f 9/9/9 10/10/10 11/11/11 12/12/12 +f 13/13/13 14/14/14 15/15/15 16/16/16 +f 17/17/17 18/18/18 19/19/19 20/20/20 +f 21/21/21 22/22/22 23/23/23 24/24/24 +f 25/25/25 26/26/26 27/27/27 28/28/28 +f 29/29/29 30/30/30 31/31/31 32/32/32 +f 33/33/33 34/34/34 35/35/35 36/36/36 +f 37/37/37 38/38/38 39/39/39 40/40/40 +f 41/41/41 42/42/42 43/43/43 44/44/44 +f 45/45/45 46/46/46 47/47/47 48/48/48 +f 49/49/49 50/50/50 51/51/51 52/52/52 +f 53/53/53 54/54/54 55/55/55 56/56/56 +f 57/57/57 58/58/58 59/59/59 60/60/60 +f 61/61/61 62/62/62 63/63/63 64/64/64 +f 65/65/65 66/66/66 67/67/67 68/68/68 +f 69/69/69 70/70/70 71/71/71 72/72/72 +f 73/73/73 74/74/74 75/75/75 76/76/76 +f 77/77/77 78/78/78 79/79/79 80/80/80 +f 81/81/81 82/82/82 83/83/83 84/84/84 +f 85/85/85 86/86/86 87/87/87 88/88/88 +f 89/89/89 90/90/90 91/91/91 92/92/92 +f 93/93/93 94/94/94 95/95/95 96/96/96 +f 97/97/97 98/98/98 99/99/99 100/100/100 +f 101/101/101 102/102/102 103/103/103 104/104/104 +f 105/105/105 106/106/106 107/107/107 108/108/108 +f 109/109/109 110/110/110 111/111/111 112/112/112 +f 113/113/113 114/114/114 115/115/115 116/116/116 +f 117/117/117 118/118/118 119/119/119 120/120/120 +f 121/121/121 122/122/122 123/123/123 124/124/124 +f 125/125/125 126/126/126 127/127/127 128/128/128 +f 129/129/129 130/130/130 131/131/131 132/132/132 +f 133/133/133 134/134/134 135/135/135 136/136/136 +f 137/137/137 138/138/138 139/139/139 140/140/140 +f 141/141/141 142/142/142 143/143/143 144/144/144 +f 145/145/145 146/146/146 147/147/147 148/148/148 +f 149/149/149 150/150/150 151/151/151 152/152/152 +f 153/153/153 154/154/154 155/155/155 156/156/156 +f 157/157/157 158/158/158 159/159/159 160/160/160 +f 161/161/161 162/162/162 163/163/163 164/164/164 +f 165/165/165 166/166/166 167/167/167 168/168/168 +f 169/169/169 170/170/170 171/171/171 172/172/172 +f 173/173/173 174/174/174 175/175/175 176/176/176 +f 177/177/177 178/178/178 179/179/179 180/180/180 +f 181/181/181 182/182/182 183/183/183 184/184/184 +f 185/185/185 186/186/186 187/187/187 188/188/188 +f 189/189/189 190/190/190 191/191/191 192/192/192 +f 193/193/193 194/194/194 195/195/195 196/196/196 +f 197/197/197 198/198/198 199/199/199 200/200/200 +f 201/201/201 202/202/202 203/203/203 204/204/204 +f 205/205/205 206/206/206 207/207/207 208/208/208 +f 209/209/209 210/210/210 211/211/211 212/212/212 +f 213/213/213 214/214/214 215/215/215 216/216/216 +f 217/217/217 218/218/218 219/219/219 220/220/220 +f 221/221/221 222/222/222 223/223/223 224/224/224 +f 225/225/225 226/226/226 227/227/227 228/228/228 +f 229/229/229 230/230/230 231/231/231 232/232/232 +f 233/233/233 234/234/234 235/235/235 236/236/236 +f 237/237/237 238/238/238 239/239/239 240/240/240 +f 241/241/241 242/242/242 243/243/243 244/244/244 +f 245/245/245 246/246/246 247/247/247 248/248/248 +f 249/249/249 250/250/250 251/251/251 252/252/252 +f 253/253/253 254/254/254 255/255/255 256/256/256 +f 257/257/257 258/258/258 259/259/259 260/260/260 +f 261/261/261 262/262/262 263/263/263 264/264/264 +f 265/265/265 266/266/266 267/267/267 268/268/268 +f 269/269/269 270/270/270 271/271/271 272/272/272 +f 273/273/273 274/274/274 275/275/275 276/276/276 +f 277/277/277 278/278/278 279/279/279 280/280/280 +f 281/281/281 282/282/282 283/283/283 284/284/284 +f 285/285/285 286/286/286 287/287/287 288/288/288 +f 289/289/289 290/290/290 291/291/291 292/292/292 +f 293/293/293 294/294/294 295/295/295 296/296/296 +f 297/297/297 298/298/298 299/299/299 300/300/300 +f 301/301/301 302/302/302 303/303/303 304/304/304 +f 305/305/305 306/306/306 307/307/307 308/308/308 +f 309/309/309 310/310/310 311/311/311 312/312/312 +f 313/313/313 314/314/314 315/315/315 316/316/316 +f 317/317/317 318/318/318 319/319/319 320/320/320 +f 321/321/321 322/322/322 323/323/323 324/324/324 +f 325/325/325 326/326/326 327/327/327 328/328/328 +f 329/329/329 330/330/330 331/331/331 332/332/332 +f 333/333/333 334/334/334 335/335/335 336/336/336 +f 337/337/337 338/338/338 339/339/339 340/340/340 +f 341/341/341 342/342/342 343/343/343 344/344/344 +f 345/345/345 346/346/346 347/347/347 348/348/348 +f 349/349/349 350/350/350 351/351/351 352/352/352 +f 353/353/353 354/354/354 355/355/355 356/356/356 +f 357/357/357 358/358/358 359/359/359 360/360/360 +f 361/361/361 362/362/362 363/363/363 364/364/364 +f 365/365/365 366/366/366 367/367/367 368/368/368 +f 369/369/369 370/370/370 371/371/371 372/372/372 +f 373/373/373 374/374/374 375/375/375 376/376/376 +f 377/377/377 378/378/378 379/379/379 380/380/380 +f 381/381/381 382/382/382 383/383/383 384/384/384 +f 385/385/385 386/386/386 387/387/387 388/388/388 +f 389/389/389 390/390/390 391/391/391 392/392/392 +f 393/393/393 394/394/394 395/395/395 396/396/396 +f 397/397/397 398/398/398 399/399/399 400/400/400 +f 401/401/401 402/402/402 403/403/403 404/404/404 +f 405/405/405 406/406/406 407/407/407 408/408/408 +f 409/409/409 410/410/410 411/411/411 412/412/412 +f 413/413/413 414/414/414 415/415/415 416/416/416 +f 417/417/417 418/418/418 419/419/419 420/420/420 +f 421/421/421 422/422/422 423/423/423 424/424/424 +f 425/425/425 426/426/426 427/427/427 428/428/428 +f 429/429/429 430/430/430 431/431/431 432/432/432 +f 433/433/433 434/434/434 435/435/435 436/436/436 +f 437/437/437 438/438/438 439/439/439 440/440/440 +f 441/441/441 442/442/442 443/443/443 444/444/444 +f 445/445/445 446/446/446 447/447/447 448/448/448 +f 449/449/449 450/450/450 451/451/451 452/452/452 +f 453/453/453 454/454/454 455/455/455 456/456/456 +f 457/457/457 458/458/458 459/459/459 460/460/460 +f 461/461/461 462/462/462 463/463/463 464/464/464 +f 465/465/465 466/466/466 467/467/467 468/468/468 +f 469/469/469 470/470/470 471/471/471 472/472/472 +f 473/473/473 474/474/474 475/475/475 476/476/476 +f 477/477/477 478/478/478 479/479/479 480/480/480 +f 481/481/481 482/482/482 483/483/483 484/484/484 +f 485/485/485 486/486/486 487/487/487 488/488/488 +f 489/489/489 490/490/490 491/491/491 492/492/492 +f 493/493/493 494/494/494 495/495/495 496/496/496 +f 497/497/497 498/498/498 499/499/499 500/500/500 +f 501/501/501 502/502/502 503/503/503 504/504/504 +f 505/505/505 506/506/506 507/507/507 508/508/508 +f 509/509/509 510/510/510 511/511/511 512/512/512 +f 513/513/513 514/514/514 515/515/515 516/516/516 +f 517/517/517 518/518/518 519/519/519 520/520/520 +f 521/521/521 522/522/522 523/523/523 524/524/524 +f 525/525/525 526/526/526 527/527/527 528/528/528 +f 529/529/529 530/530/530 531/531/531 532/532/532 +f 533/533/533 534/534/534 535/535/535 536/536/536 +f 537/537/537 538/538/538 539/539/539 540/540/540 +f 541/541/541 542/542/542 543/543/543 544/544/544 +f 545/545/545 546/546/546 547/547/547 548/548/548 +f 549/549/549 550/550/550 551/551/551 552/552/552 +f 553/553/553 554/554/554 555/555/555 556/556/556 +f 557/557/557 558/558/558 559/559/559 560/560/560 +f 561/561/561 562/562/562 563/563/563 564/564/564 +f 565/565/565 566/566/566 567/567/567 568/568/568 +f 569/569/569 570/570/570 571/571/571 572/572/572 +f 573/573/573 574/574/574 575/575/575 576/576/576 +f 577/577/577 578/578/578 579/579/579 580/580/580 +f 581/581/581 582/582/582 583/583/583 584/584/584 +f 585/585/585 586/586/586 587/587/587 588/588/588 +f 589/589/589 590/590/590 591/591/591 592/592/592 +f 593/593/593 594/594/594 595/595/595 596/596/596 +f 597/597/597 598/598/598 599/599/599 600/600/600 +f 601/601/601 602/602/602 603/603/603 604/604/604 +f 605/605/605 606/606/606 607/607/607 608/608/608 +f 609/609/609 610/610/610 611/611/611 612/612/612 +f 613/613/613 614/614/614 615/615/615 616/616/616 +f 617/617/617 618/618/618 619/619/619 620/620/620 +f 621/621/621 622/622/622 623/623/623 624/624/624 +f 625/625/625 626/626/626 627/627/627 628/628/628 +f 629/629/629 630/630/630 631/631/631 632/632/632 +f 633/633/633 634/634/634 635/635/635 636/636/636 +f 637/637/637 638/638/638 639/639/639 640/640/640 +f 641/641/641 642/642/642 643/643/643 644/644/644 +f 645/645/645 646/646/646 647/647/647 648/648/648 +f 649/649/649 650/650/650 651/651/651 652/652/652 +f 653/653/653 654/654/654 655/655/655 656/656/656 +f 657/657/657 658/658/658 659/659/659 660/660/660 +f 661/661/661 662/662/662 663/663/663 664/664/664 +f 665/665/665 666/666/666 667/667/667 668/668/668 +f 669/669/669 670/670/670 671/671/671 672/672/672 +f 673/673/673 674/674/674 675/675/675 676/676/676 +f 677/677/677 678/678/678 679/679/679 680/680/680 +f 681/681/681 682/682/682 683/683/683 684/684/684 +f 685/685/685 686/686/686 687/687/687 688/688/688 +f 689/689/689 690/690/690 691/691/691 692/692/692 +f 693/693/693 694/694/694 695/695/695 696/696/696 +f 697/697/697 698/698/698 699/699/699 700/700/700 +f 701/701/701 702/702/702 703/703/703 704/704/704 +f 705/705/705 706/706/706 707/707/707 708/708/708 +f 709/709/709 710/710/710 711/711/711 712/712/712 +f 713/713/713 714/714/714 715/715/715 716/716/716 +f 717/717/717 718/718/718 719/719/719 720/720/720 +f 721/721/721 722/722/722 723/723/723 724/724/724 +f 725/725/725 726/726/726 727/727/727 728/728/728 +f 729/729/729 730/730/730 731/731/731 732/732/732 +f 733/733/733 734/734/734 735/735/735 736/736/736 +f 737/737/737 738/738/738 739/739/739 740/740/740 +f 741/741/741 742/742/742 743/743/743 744/744/744 +f 745/745/745 746/746/746 747/747/747 748/748/748 +f 749/749/749 750/750/750 751/751/751 752/752/752 +f 753/753/753 754/754/754 755/755/755 756/756/756 +f 757/757/757 758/758/758 759/759/759 760/760/760 +f 761/761/761 762/762/762 763/763/763 764/764/764 +f 765/765/765 766/766/766 767/767/767 768/768/768 +f 769/769/769 770/770/770 771/771/771 772/772/772 +f 773/773/773 774/774/774 775/775/775 776/776/776 +f 777/777/777 778/778/778 779/779/779 780/780/780 +f 781/781/781 782/782/782 783/783/783 784/784/784 +f 785/785/785 786/786/786 787/787/787 788/788/788 +f 789/789/789 790/790/790 791/791/791 792/792/792 +f 793/793/793 794/794/794 795/795/795 796/796/796 +f 797/797/797 798/798/798 799/799/799 800/800/800 +f 801/801/801 802/802/802 803/803/803 804/804/804 +f 805/805/805 806/806/806 807/807/807 808/808/808 +f 809/809/809 810/810/810 811/811/811 812/812/812 +f 813/813/813 814/814/814 815/815/815 816/816/816 +f 817/817/817 818/818/818 819/819/819 820/820/820 +f 821/821/821 822/822/822 823/823/823 824/824/824 +f 825/825/825 826/826/826 827/827/827 828/828/828 +f 829/829/829 830/830/830 831/831/831 832/832/832 +f 833/833/833 834/834/834 835/835/835 836/836/836 +f 837/837/837 838/838/838 839/839/839 840/840/840 +f 841/841/841 842/842/842 843/843/843 844/844/844 +f 845/845/845 846/846/846 847/847/847 848/848/848 +f 849/849/849 850/850/850 851/851/851 852/852/852 +f 853/853/853 854/854/854 855/855/855 856/856/856 +f 857/857/857 858/858/858 859/859/859 860/860/860 +f 861/861/861 862/862/862 863/863/863 864/864/864 +f 865/865/865 866/866/866 867/867/867 868/868/868 +f 869/869/869 870/870/870 871/871/871 872/872/872 +f 873/873/873 874/874/874 875/875/875 876/876/876 +f 877/877/877 878/878/878 879/879/879 880/880/880 +f 881/881/881 882/882/882 883/883/883 884/884/884 +f 885/885/885 886/886/886 887/887/887 888/888/888 +f 889/889/889 890/890/890 891/891/891 892/892/892 +f 893/893/893 894/894/894 895/895/895 896/896/896 +f 897/897/897 898/898/898 899/899/899 900/900/900 +f 901/901/901 902/902/902 903/903/903 904/904/904 +f 905/905/905 906/906/906 907/907/907 908/908/908 +f 909/909/909 910/910/910 911/911/911 912/912/912 +f 913/913/913 914/914/914 915/915/915 916/916/916 +f 917/917/917 918/918/918 919/919/919 920/920/920 +f 921/921/921 922/922/922 923/923/923 924/924/924 +f 925/925/925 926/926/926 927/927/927 928/928/928 +f 929/929/929 930/930/930 931/931/931 932/932/932 +f 933/933/933 934/934/934 935/935/935 936/936/936 +f 937/937/937 938/938/938 939/939/939 940/940/940 +f 941/941/941 942/942/942 943/943/943 944/944/944 +f 945/945/945 946/946/946 947/947/947 948/948/948 +f 949/949/949 950/950/950 951/951/951 952/952/952 +f 953/953/953 954/954/954 955/955/955 956/956/956 +f 957/957/957 958/958/958 959/959/959 960/960/960 +f 961/961/961 962/962/962 963/963/963 964/964/964 +f 965/965/965 966/966/966 967/967/967 968/968/968 +f 969/969/969 970/970/970 971/971/971 972/972/972 +f 973/973/973 974/974/974 975/975/975 976/976/976 +f 977/977/977 978/978/978 979/979/979 980/980/980 +f 981/981/981 982/982/982 983/983/983 984/984/984 +f 985/985/985 986/986/986 987/987/987 988/988/988 +f 989/989/989 990/990/990 991/991/991 992/992/992 +f 993/993/993 994/994/994 995/995/995 996/996/996 +f 997/997/997 998/998/998 999/999/999 1000/1000/1000 +f 1001/1001/1001 1002/1002/1002 1003/1003/1003 1004/1004/1004 +f 1005/1005/1005 1006/1006/1006 1007/1007/1007 1008/1008/1008 +f 1009/1009/1009 1010/1010/1010 1011/1011/1011 1012/1012/1012 +f 1013/1013/1013 1014/1014/1014 1015/1015/1015 1016/1016/1016 +f 1017/1017/1017 1018/1018/1018 1019/1019/1019 1020/1020/1020 +f 1021/1021/1021 1022/1022/1022 1023/1023/1023 1024/1024/1024 +f 1025/1025/1025 1026/1026/1026 1027/1027/1027 1028/1028/1028 +f 1029/1029/1029 1030/1030/1030 1031/1031/1031 1032/1032/1032 +f 1033/1033/1033 1034/1034/1034 1035/1035/1035 1036/1036/1036 +f 1037/1037/1037 1038/1038/1038 1039/1039/1039 1040/1040/1040 +f 1041/1041/1041 1042/1042/1042 1043/1043/1043 1044/1044/1044 +f 1045/1045/1045 1046/1046/1046 1047/1047/1047 1048/1048/1048 +f 1049/1049/1049 1050/1050/1050 1051/1051/1051 1052/1052/1052 +f 1053/1053/1053 1054/1054/1054 1055/1055/1055 1056/1056/1056 +f 1057/1057/1057 1058/1058/1058 1059/1059/1059 1060/1060/1060 +f 1061/1061/1061 1062/1062/1062 1063/1063/1063 1064/1064/1064 +f 1065/1065/1065 1066/1066/1066 1067/1067/1067 1068/1068/1068 +f 1069/1069/1069 1070/1070/1070 1071/1071/1071 1072/1072/1072 +f 1073/1073/1073 1074/1074/1074 1075/1075/1075 1076/1076/1076 +f 1077/1077/1077 1078/1078/1078 1079/1079/1079 1080/1080/1080 +f 1081/1081/1081 1082/1082/1082 1083/1083/1083 1084/1084/1084 +f 1085/1085/1085 1086/1086/1086 1087/1087/1087 1088/1088/1088 +f 1089/1089/1089 1090/1090/1090 1091/1091/1091 1092/1092/1092 +f 1093/1093/1093 1094/1094/1094 1095/1095/1095 1096/1096/1096 +f 1097/1097/1097 1098/1098/1098 1099/1099/1099 1100/1100/1100 +f 1101/1101/1101 1102/1102/1102 1103/1103/1103 1104/1104/1104 +f 1105/1105/1105 1106/1106/1106 1107/1107/1107 1108/1108/1108 +f 1109/1109/1109 1110/1110/1110 1111/1111/1111 1112/1112/1112 +f 1113/1113/1113 1114/1114/1114 1115/1115/1115 1116/1116/1116 +f 1117/1117/1117 1118/1118/1118 1119/1119/1119 1120/1120/1120 +f 1121/1121/1121 1122/1122/1122 1123/1123/1123 1124/1124/1124 +f 1125/1125/1125 1126/1126/1126 1127/1127/1127 1128/1128/1128 +f 1129/1129/1129 1130/1130/1130 1131/1131/1131 1132/1132/1132 +f 1133/1133/1133 1134/1134/1134 1135/1135/1135 1136/1136/1136 +f 1137/1137/1137 1138/1138/1138 1139/1139/1139 1140/1140/1140 +f 1141/1141/1141 1142/1142/1142 1143/1143/1143 1144/1144/1144 +f 1145/1145/1145 1146/1146/1146 1147/1147/1147 1148/1148/1148 +f 1149/1149/1149 1150/1150/1150 1151/1151/1151 1152/1152/1152 +f 1153/1153/1153 1154/1154/1154 1155/1155/1155 1156/1156/1156 +f 1157/1157/1157 1158/1158/1158 1159/1159/1159 1160/1160/1160 +f 1161/1161/1161 1162/1162/1162 1163/1163/1163 1164/1164/1164 +f 1165/1165/1165 1166/1166/1166 1167/1167/1167 1168/1168/1168 +f 1169/1169/1169 1170/1170/1170 1171/1171/1171 1172/1172/1172 +f 1173/1173/1173 1174/1174/1174 1175/1175/1175 1176/1176/1176 +f 1177/1177/1177 1178/1178/1178 1179/1179/1179 1180/1180/1180 +f 1181/1181/1181 1182/1182/1182 1183/1183/1183 1184/1184/1184 +f 1185/1185/1185 1186/1186/1186 1187/1187/1187 1188/1188/1188 +f 1189/1189/1189 1190/1190/1190 1191/1191/1191 1192/1192/1192 +f 1193/1193/1193 1194/1194/1194 1195/1195/1195 1196/1196/1196 +f 1197/1197/1197 1198/1198/1198 1199/1199/1199 1200/1200/1200 +f 1201/1201/1201 1202/1202/1202 1203/1203/1203 1204/1204/1204 +f 1205/1205/1205 1206/1206/1206 1207/1207/1207 1208/1208/1208 +f 1209/1209/1209 1210/1210/1210 1211/1211/1211 1212/1212/1212 +f 1213/1213/1213 1214/1214/1214 1215/1215/1215 1216/1216/1216 +f 1217/1217/1217 1218/1218/1218 1219/1219/1219 1220/1220/1220 +f 1221/1221/1221 1222/1222/1222 1223/1223/1223 1224/1224/1224 +f 1225/1225/1225 1226/1226/1226 1227/1227/1227 1228/1228/1228 +f 1229/1229/1229 1230/1230/1230 1231/1231/1231 1232/1232/1232 +f 1233/1233/1233 1234/1234/1234 1235/1235/1235 1236/1236/1236 +f 1237/1237/1237 1238/1238/1238 1239/1239/1239 1240/1240/1240 +f 1241/1241/1241 1242/1242/1242 1243/1243/1243 1244/1244/1244 +f 1245/1245/1245 1246/1246/1246 1247/1247/1247 1248/1248/1248 +f 1249/1249/1249 1250/1250/1250 1251/1251/1251 1252/1252/1252 +f 1253/1253/1253 1254/1254/1254 1255/1255/1255 1256/1256/1256 +f 1257/1257/1257 1258/1258/1258 1259/1259/1259 1260/1260/1260 +f 1261/1261/1261 1262/1262/1262 1263/1263/1263 1264/1264/1264 +f 1265/1265/1265 1266/1266/1266 1267/1267/1267 1268/1268/1268 +f 1269/1269/1269 1270/1270/1270 1271/1271/1271 1272/1272/1272 +f 1273/1273/1273 1274/1274/1274 1275/1275/1275 1276/1276/1276 +f 1277/1277/1277 1278/1278/1278 1279/1279/1279 1280/1280/1280 +f 1281/1281/1281 1282/1282/1282 1283/1283/1283 1284/1284/1284 +f 1285/1285/1285 1286/1286/1286 1287/1287/1287 1288/1288/1288 +f 1289/1289/1289 1290/1290/1290 1291/1291/1291 1292/1292/1292 +f 1293/1293/1293 1294/1294/1294 1295/1295/1295 1296/1296/1296 +f 1297/1297/1297 1298/1298/1298 1299/1299/1299 1300/1300/1300 +f 1301/1301/1301 1302/1302/1302 1303/1303/1303 1304/1304/1304 +f 1305/1305/1305 1306/1306/1306 1307/1307/1307 1308/1308/1308 +f 1309/1309/1309 1310/1310/1310 1311/1311/1311 1312/1312/1312 +f 1313/1313/1313 1314/1314/1314 1315/1315/1315 1316/1316/1316 +f 1317/1317/1317 1318/1318/1318 1319/1319/1319 1320/1320/1320 +f 1321/1321/1321 1322/1322/1322 1323/1323/1323 1324/1324/1324 +f 1325/1325/1325 1326/1326/1326 1327/1327/1327 1328/1328/1328 +f 1329/1329/1329 1330/1330/1330 1331/1331/1331 1332/1332/1332 +f 1333/1333/1333 1334/1334/1334 1335/1335/1335 1336/1336/1336 +f 1337/1337/1337 1338/1338/1338 1339/1339/1339 1340/1340/1340 +f 1341/1341/1341 1342/1342/1342 1343/1343/1343 1344/1344/1344 +f 1345/1345/1345 1346/1346/1346 1347/1347/1347 1348/1348/1348 +f 1349/1349/1349 1350/1350/1350 1351/1351/1351 1352/1352/1352 +f 1353/1353/1353 1354/1354/1354 1355/1355/1355 1356/1356/1356 +f 1357/1357/1357 1358/1358/1358 1359/1359/1359 1360/1360/1360 +f 1361/1361/1361 1362/1362/1362 1363/1363/1363 1364/1364/1364 +f 1365/1365/1365 1366/1366/1366 1367/1367/1367 1368/1368/1368 +f 1369/1369/1369 1370/1370/1370 1371/1371/1371 1372/1372/1372 +f 1373/1373/1373 1374/1374/1374 1375/1375/1375 1376/1376/1376 +f 1377/1377/1377 1378/1378/1378 1379/1379/1379 1380/1380/1380 +f 1381/1381/1381 1382/1382/1382 1383/1383/1383 1384/1384/1384 +f 1385/1385/1385 1386/1386/1386 1387/1387/1387 1388/1388/1388 +f 1389/1389/1389 1390/1390/1390 1391/1391/1391 1392/1392/1392 +f 1393/1393/1393 1394/1394/1394 1395/1395/1395 1396/1396/1396 +f 1397/1397/1397 1398/1398/1398 1399/1399/1399 1400/1400/1400 +f 1401/1401/1401 1402/1402/1402 1403/1403/1403 1404/1404/1404 +f 1405/1405/1405 1406/1406/1406 1407/1407/1407 1408/1408/1408 +f 1409/1409/1409 1410/1410/1410 1411/1411/1411 1412/1412/1412 +f 1413/1413/1413 1414/1414/1414 1415/1415/1415 1416/1416/1416 +f 1417/1417/1417 1418/1418/1418 1419/1419/1419 1420/1420/1420 +f 1421/1421/1421 1422/1422/1422 1423/1423/1423 1424/1424/1424 +f 1425/1425/1425 1426/1426/1426 1427/1427/1427 1428/1428/1428 +f 1429/1429/1429 1430/1430/1430 1431/1431/1431 1432/1432/1432 +f 1433/1433/1433 1434/1434/1434 1435/1435/1435 1436/1436/1436 +f 1437/1437/1437 1438/1438/1438 1439/1439/1439 1440/1440/1440 +f 1441/1441/1441 1442/1442/1442 1443/1443/1443 1444/1444/1444 +f 1445/1445/1445 1446/1446/1446 1447/1447/1447 1448/1448/1448 +f 1449/1449/1449 1450/1450/1450 1451/1451/1451 1452/1452/1452 +f 1453/1453/1453 1454/1454/1454 1455/1455/1455 1456/1456/1456 +f 1457/1457/1457 1458/1458/1458 1459/1459/1459 1460/1460/1460 +f 1461/1461/1461 1462/1462/1462 1463/1463/1463 1464/1464/1464 +f 1465/1465/1465 1466/1466/1466 1467/1467/1467 1468/1468/1468 +f 1469/1469/1469 1470/1470/1470 1471/1471/1471 1472/1472/1472 +f 1473/1473/1473 1474/1474/1474 1475/1475/1475 1476/1476/1476 +f 1477/1477/1477 1478/1478/1478 1479/1479/1479 1480/1480/1480 +f 1481/1481/1481 1482/1482/1482 1483/1483/1483 1484/1484/1484 +f 1485/1485/1485 1486/1486/1486 1487/1487/1487 1488/1488/1488 +f 1489/1489/1489 1490/1490/1490 1491/1491/1491 1492/1492/1492 +f 1493/1493/1493 1494/1494/1494 1495/1495/1495 1496/1496/1496 +f 1497/1497/1497 1498/1498/1498 1499/1499/1499 1500/1500/1500 +f 1501/1501/1501 1502/1502/1502 1503/1503/1503 1504/1504/1504 +f 1505/1505/1505 1506/1506/1506 1507/1507/1507 1508/1508/1508 +f 1509/1509/1509 1510/1510/1510 1511/1511/1511 1512/1512/1512 +f 1513/1513/1513 1514/1514/1514 1515/1515/1515 1516/1516/1516 +f 1517/1517/1517 1518/1518/1518 1519/1519/1519 1520/1520/1520 +f 1521/1521/1521 1522/1522/1522 1523/1523/1523 1524/1524/1524 +f 1525/1525/1525 1526/1526/1526 1527/1527/1527 1528/1528/1528 +f 1529/1529/1529 1530/1530/1530 1531/1531/1531 1532/1532/1532 +f 1533/1533/1533 1534/1534/1534 1535/1535/1535 1536/1536/1536 +f 1537/1537/1537 1538/1538/1538 1539/1539/1539 1540/1540/1540 +f 1541/1541/1541 1542/1542/1542 1543/1543/1543 1544/1544/1544 +f 1545/1545/1545 1546/1546/1546 1547/1547/1547 1548/1548/1548 +f 1549/1549/1549 1550/1550/1550 1551/1551/1551 1552/1552/1552 +f 1553/1553/1553 1554/1554/1554 1555/1555/1555 1556/1556/1556 +f 1557/1557/1557 1558/1558/1558 1559/1559/1559 1560/1560/1560 diff --git a/src/platform/kpi_rover_worlds/assets/meshes/traffic_cone_30.obj b/src/platform/kpi_rover_worlds/assets/meshes/traffic_cone_30.obj new file mode 100644 index 0000000..3b58b9d --- /dev/null +++ b/src/platform/kpi_rover_worlds/assets/meshes/traffic_cone_30.obj @@ -0,0 +1,815 @@ +# Traffic cone, generated by gen_media.py +v -0.12000 -0.12000 0.03000 +v 0.12000 -0.12000 0.03000 +v 0.12000 0.12000 0.03000 +v -0.12000 0.12000 0.03000 +v -0.12000 0.12000 0.00000 +v 0.12000 0.12000 0.00000 +v 0.12000 -0.12000 0.00000 +v -0.12000 -0.12000 0.00000 +v -0.12000 -0.12000 0.00000 +v 0.12000 -0.12000 0.00000 +v 0.12000 -0.12000 0.03000 +v -0.12000 -0.12000 0.03000 +v 0.12000 -0.12000 0.00000 +v 0.12000 0.12000 0.00000 +v 0.12000 0.12000 0.03000 +v 0.12000 -0.12000 0.03000 +v 0.12000 0.12000 0.00000 +v -0.12000 0.12000 0.00000 +v -0.12000 0.12000 0.03000 +v 0.12000 0.12000 0.03000 +v -0.12000 0.12000 0.00000 +v -0.12000 -0.12000 0.00000 +v -0.12000 -0.12000 0.03000 +v -0.12000 0.12000 0.03000 +v 0.09000 0.00000 0.03000 +v 0.08827 0.01756 0.03000 +v 0.01765 0.00351 0.30000 +v 0.01800 0.00000 0.30000 +v 0.00000 0.00000 0.30000 +v 0.01800 0.00000 0.30000 +v 0.01765 0.00351 0.30000 +v 0.08827 0.01756 0.03000 +v 0.08315 0.03444 0.03000 +v 0.01663 0.00689 0.30000 +v 0.01765 0.00351 0.30000 +v 0.00000 0.00000 0.30000 +v 0.01765 0.00351 0.30000 +v 0.01663 0.00689 0.30000 +v 0.08315 0.03444 0.03000 +v 0.07483 0.05000 0.03000 +v 0.01497 0.01000 0.30000 +v 0.01663 0.00689 0.30000 +v 0.00000 0.00000 0.30000 +v 0.01663 0.00689 0.30000 +v 0.01497 0.01000 0.30000 +v 0.07483 0.05000 0.03000 +v 0.06364 0.06364 0.03000 +v 0.01273 0.01273 0.30000 +v 0.01497 0.01000 0.30000 +v 0.00000 0.00000 0.30000 +v 0.01497 0.01000 0.30000 +v 0.01273 0.01273 0.30000 +v 0.06364 0.06364 0.03000 +v 0.05000 0.07483 0.03000 +v 0.01000 0.01497 0.30000 +v 0.01273 0.01273 0.30000 +v 0.00000 0.00000 0.30000 +v 0.01273 0.01273 0.30000 +v 0.01000 0.01497 0.30000 +v 0.05000 0.07483 0.03000 +v 0.03444 0.08315 0.03000 +v 0.00689 0.01663 0.30000 +v 0.01000 0.01497 0.30000 +v 0.00000 0.00000 0.30000 +v 0.01000 0.01497 0.30000 +v 0.00689 0.01663 0.30000 +v 0.03444 0.08315 0.03000 +v 0.01756 0.08827 0.03000 +v 0.00351 0.01765 0.30000 +v 0.00689 0.01663 0.30000 +v 0.00000 0.00000 0.30000 +v 0.00689 0.01663 0.30000 +v 0.00351 0.01765 0.30000 +v 0.01756 0.08827 0.03000 +v 0.00000 0.09000 0.03000 +v 0.00000 0.01800 0.30000 +v 0.00351 0.01765 0.30000 +v 0.00000 0.00000 0.30000 +v 0.00351 0.01765 0.30000 +v 0.00000 0.01800 0.30000 +v 0.00000 0.09000 0.03000 +v -0.01756 0.08827 0.03000 +v -0.00351 0.01765 0.30000 +v 0.00000 0.01800 0.30000 +v 0.00000 0.00000 0.30000 +v 0.00000 0.01800 0.30000 +v -0.00351 0.01765 0.30000 +v -0.01756 0.08827 0.03000 +v -0.03444 0.08315 0.03000 +v -0.00689 0.01663 0.30000 +v -0.00351 0.01765 0.30000 +v 0.00000 0.00000 0.30000 +v -0.00351 0.01765 0.30000 +v -0.00689 0.01663 0.30000 +v -0.03444 0.08315 0.03000 +v -0.05000 0.07483 0.03000 +v -0.01000 0.01497 0.30000 +v -0.00689 0.01663 0.30000 +v 0.00000 0.00000 0.30000 +v -0.00689 0.01663 0.30000 +v -0.01000 0.01497 0.30000 +v -0.05000 0.07483 0.03000 +v -0.06364 0.06364 0.03000 +v -0.01273 0.01273 0.30000 +v -0.01000 0.01497 0.30000 +v 0.00000 0.00000 0.30000 +v -0.01000 0.01497 0.30000 +v -0.01273 0.01273 0.30000 +v -0.06364 0.06364 0.03000 +v -0.07483 0.05000 0.03000 +v -0.01497 0.01000 0.30000 +v -0.01273 0.01273 0.30000 +v 0.00000 0.00000 0.30000 +v -0.01273 0.01273 0.30000 +v -0.01497 0.01000 0.30000 +v -0.07483 0.05000 0.03000 +v -0.08315 0.03444 0.03000 +v -0.01663 0.00689 0.30000 +v -0.01497 0.01000 0.30000 +v 0.00000 0.00000 0.30000 +v -0.01497 0.01000 0.30000 +v -0.01663 0.00689 0.30000 +v -0.08315 0.03444 0.03000 +v -0.08827 0.01756 0.03000 +v -0.01765 0.00351 0.30000 +v -0.01663 0.00689 0.30000 +v 0.00000 0.00000 0.30000 +v -0.01663 0.00689 0.30000 +v -0.01765 0.00351 0.30000 +v -0.08827 0.01756 0.03000 +v -0.09000 0.00000 0.03000 +v -0.01800 0.00000 0.30000 +v -0.01765 0.00351 0.30000 +v 0.00000 0.00000 0.30000 +v -0.01765 0.00351 0.30000 +v -0.01800 0.00000 0.30000 +v -0.09000 0.00000 0.03000 +v -0.08827 -0.01756 0.03000 +v -0.01765 -0.00351 0.30000 +v -0.01800 0.00000 0.30000 +v 0.00000 0.00000 0.30000 +v -0.01800 0.00000 0.30000 +v -0.01765 -0.00351 0.30000 +v -0.08827 -0.01756 0.03000 +v -0.08315 -0.03444 0.03000 +v -0.01663 -0.00689 0.30000 +v -0.01765 -0.00351 0.30000 +v 0.00000 0.00000 0.30000 +v -0.01765 -0.00351 0.30000 +v -0.01663 -0.00689 0.30000 +v -0.08315 -0.03444 0.03000 +v -0.07483 -0.05000 0.03000 +v -0.01497 -0.01000 0.30000 +v -0.01663 -0.00689 0.30000 +v 0.00000 0.00000 0.30000 +v -0.01663 -0.00689 0.30000 +v -0.01497 -0.01000 0.30000 +v -0.07483 -0.05000 0.03000 +v -0.06364 -0.06364 0.03000 +v -0.01273 -0.01273 0.30000 +v -0.01497 -0.01000 0.30000 +v 0.00000 0.00000 0.30000 +v -0.01497 -0.01000 0.30000 +v -0.01273 -0.01273 0.30000 +v -0.06364 -0.06364 0.03000 +v -0.05000 -0.07483 0.03000 +v -0.01000 -0.01497 0.30000 +v -0.01273 -0.01273 0.30000 +v 0.00000 0.00000 0.30000 +v -0.01273 -0.01273 0.30000 +v -0.01000 -0.01497 0.30000 +v -0.05000 -0.07483 0.03000 +v -0.03444 -0.08315 0.03000 +v -0.00689 -0.01663 0.30000 +v -0.01000 -0.01497 0.30000 +v 0.00000 0.00000 0.30000 +v -0.01000 -0.01497 0.30000 +v -0.00689 -0.01663 0.30000 +v -0.03444 -0.08315 0.03000 +v -0.01756 -0.08827 0.03000 +v -0.00351 -0.01765 0.30000 +v -0.00689 -0.01663 0.30000 +v 0.00000 0.00000 0.30000 +v -0.00689 -0.01663 0.30000 +v -0.00351 -0.01765 0.30000 +v -0.01756 -0.08827 0.03000 +v -0.00000 -0.09000 0.03000 +v -0.00000 -0.01800 0.30000 +v -0.00351 -0.01765 0.30000 +v 0.00000 0.00000 0.30000 +v -0.00351 -0.01765 0.30000 +v -0.00000 -0.01800 0.30000 +v -0.00000 -0.09000 0.03000 +v 0.01756 -0.08827 0.03000 +v 0.00351 -0.01765 0.30000 +v -0.00000 -0.01800 0.30000 +v 0.00000 0.00000 0.30000 +v -0.00000 -0.01800 0.30000 +v 0.00351 -0.01765 0.30000 +v 0.01756 -0.08827 0.03000 +v 0.03444 -0.08315 0.03000 +v 0.00689 -0.01663 0.30000 +v 0.00351 -0.01765 0.30000 +v 0.00000 0.00000 0.30000 +v 0.00351 -0.01765 0.30000 +v 0.00689 -0.01663 0.30000 +v 0.03444 -0.08315 0.03000 +v 0.05000 -0.07483 0.03000 +v 0.01000 -0.01497 0.30000 +v 0.00689 -0.01663 0.30000 +v 0.00000 0.00000 0.30000 +v 0.00689 -0.01663 0.30000 +v 0.01000 -0.01497 0.30000 +v 0.05000 -0.07483 0.03000 +v 0.06364 -0.06364 0.03000 +v 0.01273 -0.01273 0.30000 +v 0.01000 -0.01497 0.30000 +v 0.00000 0.00000 0.30000 +v 0.01000 -0.01497 0.30000 +v 0.01273 -0.01273 0.30000 +v 0.06364 -0.06364 0.03000 +v 0.07483 -0.05000 0.03000 +v 0.01497 -0.01000 0.30000 +v 0.01273 -0.01273 0.30000 +v 0.00000 0.00000 0.30000 +v 0.01273 -0.01273 0.30000 +v 0.01497 -0.01000 0.30000 +v 0.07483 -0.05000 0.03000 +v 0.08315 -0.03444 0.03000 +v 0.01663 -0.00689 0.30000 +v 0.01497 -0.01000 0.30000 +v 0.00000 0.00000 0.30000 +v 0.01497 -0.01000 0.30000 +v 0.01663 -0.00689 0.30000 +v 0.08315 -0.03444 0.03000 +v 0.08827 -0.01756 0.03000 +v 0.01765 -0.00351 0.30000 +v 0.01663 -0.00689 0.30000 +v 0.00000 0.00000 0.30000 +v 0.01663 -0.00689 0.30000 +v 0.01765 -0.00351 0.30000 +v 0.08827 -0.01756 0.03000 +v 0.09000 -0.00000 0.03000 +v 0.01800 -0.00000 0.30000 +v 0.01765 -0.00351 0.30000 +v 0.00000 0.00000 0.30000 +v 0.01765 -0.00351 0.30000 +v 0.01800 -0.00000 0.30000 +vt 0.50000 0.05000 +vt 0.50000 0.05000 +vt 0.50000 0.05000 +vt 0.50000 0.05000 +vt 0.50000 0.05000 +vt 0.50000 0.05000 +vt 0.50000 0.05000 +vt 0.50000 0.05000 +vt 0.50000 0.05000 +vt 0.50000 0.05000 +vt 0.50000 0.05000 +vt 0.50000 0.05000 +vt 0.50000 0.05000 +vt 0.50000 0.05000 +vt 0.50000 0.05000 +vt 0.50000 0.05000 +vt 0.50000 0.05000 +vt 0.50000 0.05000 +vt 0.50000 0.05000 +vt 0.50000 0.05000 +vt 0.50000 0.05000 +vt 0.50000 0.05000 +vt 0.50000 0.05000 +vt 0.50000 0.05000 +vt 0.00000 0.10000 +vt 0.03125 0.10000 +vt 0.03125 1.00000 +vt 0.00000 1.00000 +vt 0.50000 1.00000 +vt 0.50000 1.00000 +vt 0.50000 1.00000 +vt 0.03125 0.10000 +vt 0.06250 0.10000 +vt 0.06250 1.00000 +vt 0.03125 1.00000 +vt 0.50000 1.00000 +vt 0.50000 1.00000 +vt 0.50000 1.00000 +vt 0.06250 0.10000 +vt 0.09375 0.10000 +vt 0.09375 1.00000 +vt 0.06250 1.00000 +vt 0.50000 1.00000 +vt 0.50000 1.00000 +vt 0.50000 1.00000 +vt 0.09375 0.10000 +vt 0.12500 0.10000 +vt 0.12500 1.00000 +vt 0.09375 1.00000 +vt 0.50000 1.00000 +vt 0.50000 1.00000 +vt 0.50000 1.00000 +vt 0.12500 0.10000 +vt 0.15625 0.10000 +vt 0.15625 1.00000 +vt 0.12500 1.00000 +vt 0.50000 1.00000 +vt 0.50000 1.00000 +vt 0.50000 1.00000 +vt 0.15625 0.10000 +vt 0.18750 0.10000 +vt 0.18750 1.00000 +vt 0.15625 1.00000 +vt 0.50000 1.00000 +vt 0.50000 1.00000 +vt 0.50000 1.00000 +vt 0.18750 0.10000 +vt 0.21875 0.10000 +vt 0.21875 1.00000 +vt 0.18750 1.00000 +vt 0.50000 1.00000 +vt 0.50000 1.00000 +vt 0.50000 1.00000 +vt 0.21875 0.10000 +vt 0.25000 0.10000 +vt 0.25000 1.00000 +vt 0.21875 1.00000 +vt 0.50000 1.00000 +vt 0.50000 1.00000 +vt 0.50000 1.00000 +vt 0.25000 0.10000 +vt 0.28125 0.10000 +vt 0.28125 1.00000 +vt 0.25000 1.00000 +vt 0.50000 1.00000 +vt 0.50000 1.00000 +vt 0.50000 1.00000 +vt 0.28125 0.10000 +vt 0.31250 0.10000 +vt 0.31250 1.00000 +vt 0.28125 1.00000 +vt 0.50000 1.00000 +vt 0.50000 1.00000 +vt 0.50000 1.00000 +vt 0.31250 0.10000 +vt 0.34375 0.10000 +vt 0.34375 1.00000 +vt 0.31250 1.00000 +vt 0.50000 1.00000 +vt 0.50000 1.00000 +vt 0.50000 1.00000 +vt 0.34375 0.10000 +vt 0.37500 0.10000 +vt 0.37500 1.00000 +vt 0.34375 1.00000 +vt 0.50000 1.00000 +vt 0.50000 1.00000 +vt 0.50000 1.00000 +vt 0.37500 0.10000 +vt 0.40625 0.10000 +vt 0.40625 1.00000 +vt 0.37500 1.00000 +vt 0.50000 1.00000 +vt 0.50000 1.00000 +vt 0.50000 1.00000 +vt 0.40625 0.10000 +vt 0.43750 0.10000 +vt 0.43750 1.00000 +vt 0.40625 1.00000 +vt 0.50000 1.00000 +vt 0.50000 1.00000 +vt 0.50000 1.00000 +vt 0.43750 0.10000 +vt 0.46875 0.10000 +vt 0.46875 1.00000 +vt 0.43750 1.00000 +vt 0.50000 1.00000 +vt 0.50000 1.00000 +vt 0.50000 1.00000 +vt 0.46875 0.10000 +vt 0.50000 0.10000 +vt 0.50000 1.00000 +vt 0.46875 1.00000 +vt 0.50000 1.00000 +vt 0.50000 1.00000 +vt 0.50000 1.00000 +vt 0.50000 0.10000 +vt 0.53125 0.10000 +vt 0.53125 1.00000 +vt 0.50000 1.00000 +vt 0.50000 1.00000 +vt 0.50000 1.00000 +vt 0.50000 1.00000 +vt 0.53125 0.10000 +vt 0.56250 0.10000 +vt 0.56250 1.00000 +vt 0.53125 1.00000 +vt 0.50000 1.00000 +vt 0.50000 1.00000 +vt 0.50000 1.00000 +vt 0.56250 0.10000 +vt 0.59375 0.10000 +vt 0.59375 1.00000 +vt 0.56250 1.00000 +vt 0.50000 1.00000 +vt 0.50000 1.00000 +vt 0.50000 1.00000 +vt 0.59375 0.10000 +vt 0.62500 0.10000 +vt 0.62500 1.00000 +vt 0.59375 1.00000 +vt 0.50000 1.00000 +vt 0.50000 1.00000 +vt 0.50000 1.00000 +vt 0.62500 0.10000 +vt 0.65625 0.10000 +vt 0.65625 1.00000 +vt 0.62500 1.00000 +vt 0.50000 1.00000 +vt 0.50000 1.00000 +vt 0.50000 1.00000 +vt 0.65625 0.10000 +vt 0.68750 0.10000 +vt 0.68750 1.00000 +vt 0.65625 1.00000 +vt 0.50000 1.00000 +vt 0.50000 1.00000 +vt 0.50000 1.00000 +vt 0.68750 0.10000 +vt 0.71875 0.10000 +vt 0.71875 1.00000 +vt 0.68750 1.00000 +vt 0.50000 1.00000 +vt 0.50000 1.00000 +vt 0.50000 1.00000 +vt 0.71875 0.10000 +vt 0.75000 0.10000 +vt 0.75000 1.00000 +vt 0.71875 1.00000 +vt 0.50000 1.00000 +vt 0.50000 1.00000 +vt 0.50000 1.00000 +vt 0.75000 0.10000 +vt 0.78125 0.10000 +vt 0.78125 1.00000 +vt 0.75000 1.00000 +vt 0.50000 1.00000 +vt 0.50000 1.00000 +vt 0.50000 1.00000 +vt 0.78125 0.10000 +vt 0.81250 0.10000 +vt 0.81250 1.00000 +vt 0.78125 1.00000 +vt 0.50000 1.00000 +vt 0.50000 1.00000 +vt 0.50000 1.00000 +vt 0.81250 0.10000 +vt 0.84375 0.10000 +vt 0.84375 1.00000 +vt 0.81250 1.00000 +vt 0.50000 1.00000 +vt 0.50000 1.00000 +vt 0.50000 1.00000 +vt 0.84375 0.10000 +vt 0.87500 0.10000 +vt 0.87500 1.00000 +vt 0.84375 1.00000 +vt 0.50000 1.00000 +vt 0.50000 1.00000 +vt 0.50000 1.00000 +vt 0.87500 0.10000 +vt 0.90625 0.10000 +vt 0.90625 1.00000 +vt 0.87500 1.00000 +vt 0.50000 1.00000 +vt 0.50000 1.00000 +vt 0.50000 1.00000 +vt 0.90625 0.10000 +vt 0.93750 0.10000 +vt 0.93750 1.00000 +vt 0.90625 1.00000 +vt 0.50000 1.00000 +vt 0.50000 1.00000 +vt 0.50000 1.00000 +vt 0.93750 0.10000 +vt 0.96875 0.10000 +vt 0.96875 1.00000 +vt 0.93750 1.00000 +vt 0.50000 1.00000 +vt 0.50000 1.00000 +vt 0.50000 1.00000 +vt 0.96875 0.10000 +vt 1.00000 0.10000 +vt 1.00000 1.00000 +vt 0.96875 1.00000 +vt 0.50000 1.00000 +vt 0.50000 1.00000 +vt 0.50000 1.00000 +vn 0.00000 0.00000 1.00000 +vn 0.00000 0.00000 1.00000 +vn 0.00000 0.00000 1.00000 +vn 0.00000 0.00000 1.00000 +vn 0.00000 0.00000 -1.00000 +vn 0.00000 0.00000 -1.00000 +vn 0.00000 0.00000 -1.00000 +vn 0.00000 0.00000 -1.00000 +vn 0.00000 -1.00000 0.00000 +vn 0.00000 -1.00000 0.00000 +vn 0.00000 -1.00000 0.00000 +vn 0.00000 -1.00000 0.00000 +vn 1.00000 0.00000 0.00000 +vn 1.00000 0.00000 0.00000 +vn 1.00000 0.00000 0.00000 +vn 1.00000 0.00000 0.00000 +vn 0.00000 1.00000 0.00000 +vn 0.00000 1.00000 0.00000 +vn 0.00000 1.00000 0.00000 +vn 0.00000 1.00000 0.00000 +vn -1.00000 0.00000 0.00000 +vn -1.00000 0.00000 0.00000 +vn -1.00000 0.00000 0.00000 +vn -1.00000 0.00000 0.00000 +vn 0.96623 0.00000 0.25766 +vn 0.94767 0.18850 0.25766 +vn 0.94767 0.18850 0.25766 +vn 0.96623 0.00000 0.25766 +vn 0.00000 0.00000 1.00000 +vn 0.00000 0.00000 1.00000 +vn 0.00000 0.00000 1.00000 +vn 0.94767 0.18850 0.25766 +vn 0.89268 0.36976 0.25766 +vn 0.89268 0.36976 0.25766 +vn 0.94767 0.18850 0.25766 +vn 0.00000 0.00000 1.00000 +vn 0.00000 0.00000 1.00000 +vn 0.00000 0.00000 1.00000 +vn 0.89268 0.36976 0.25766 +vn 0.80339 0.53681 0.25766 +vn 0.80339 0.53681 0.25766 +vn 0.89268 0.36976 0.25766 +vn 0.00000 0.00000 1.00000 +vn 0.00000 0.00000 1.00000 +vn 0.00000 0.00000 1.00000 +vn 0.80339 0.53681 0.25766 +vn 0.68323 0.68323 0.25766 +vn 0.68323 0.68323 0.25766 +vn 0.80339 0.53681 0.25766 +vn 0.00000 0.00000 1.00000 +vn 0.00000 0.00000 1.00000 +vn 0.00000 0.00000 1.00000 +vn 0.68323 0.68323 0.25766 +vn 0.53681 0.80339 0.25766 +vn 0.53681 0.80339 0.25766 +vn 0.68323 0.68323 0.25766 +vn 0.00000 0.00000 1.00000 +vn 0.00000 0.00000 1.00000 +vn 0.00000 0.00000 1.00000 +vn 0.53681 0.80339 0.25766 +vn 0.36976 0.89268 0.25766 +vn 0.36976 0.89268 0.25766 +vn 0.53681 0.80339 0.25766 +vn 0.00000 0.00000 1.00000 +vn 0.00000 0.00000 1.00000 +vn 0.00000 0.00000 1.00000 +vn 0.36976 0.89268 0.25766 +vn 0.18850 0.94767 0.25766 +vn 0.18850 0.94767 0.25766 +vn 0.36976 0.89268 0.25766 +vn 0.00000 0.00000 1.00000 +vn 0.00000 0.00000 1.00000 +vn 0.00000 0.00000 1.00000 +vn 0.18850 0.94767 0.25766 +vn 0.00000 0.96623 0.25766 +vn 0.00000 0.96623 0.25766 +vn 0.18850 0.94767 0.25766 +vn 0.00000 0.00000 1.00000 +vn 0.00000 0.00000 1.00000 +vn 0.00000 0.00000 1.00000 +vn 0.00000 0.96623 0.25766 +vn -0.18850 0.94767 0.25766 +vn -0.18850 0.94767 0.25766 +vn 0.00000 0.96623 0.25766 +vn 0.00000 0.00000 1.00000 +vn 0.00000 0.00000 1.00000 +vn 0.00000 0.00000 1.00000 +vn -0.18850 0.94767 0.25766 +vn -0.36976 0.89268 0.25766 +vn -0.36976 0.89268 0.25766 +vn -0.18850 0.94767 0.25766 +vn 0.00000 0.00000 1.00000 +vn 0.00000 0.00000 1.00000 +vn 0.00000 0.00000 1.00000 +vn -0.36976 0.89268 0.25766 +vn -0.53681 0.80339 0.25766 +vn -0.53681 0.80339 0.25766 +vn -0.36976 0.89268 0.25766 +vn 0.00000 0.00000 1.00000 +vn 0.00000 0.00000 1.00000 +vn 0.00000 0.00000 1.00000 +vn -0.53681 0.80339 0.25766 +vn -0.68323 0.68323 0.25766 +vn -0.68323 0.68323 0.25766 +vn -0.53681 0.80339 0.25766 +vn 0.00000 0.00000 1.00000 +vn 0.00000 0.00000 1.00000 +vn 0.00000 0.00000 1.00000 +vn -0.68323 0.68323 0.25766 +vn -0.80339 0.53681 0.25766 +vn -0.80339 0.53681 0.25766 +vn -0.68323 0.68323 0.25766 +vn 0.00000 0.00000 1.00000 +vn 0.00000 0.00000 1.00000 +vn 0.00000 0.00000 1.00000 +vn -0.80339 0.53681 0.25766 +vn -0.89268 0.36976 0.25766 +vn -0.89268 0.36976 0.25766 +vn -0.80339 0.53681 0.25766 +vn 0.00000 0.00000 1.00000 +vn 0.00000 0.00000 1.00000 +vn 0.00000 0.00000 1.00000 +vn -0.89268 0.36976 0.25766 +vn -0.94767 0.18850 0.25766 +vn -0.94767 0.18850 0.25766 +vn -0.89268 0.36976 0.25766 +vn 0.00000 0.00000 1.00000 +vn 0.00000 0.00000 1.00000 +vn 0.00000 0.00000 1.00000 +vn -0.94767 0.18850 0.25766 +vn -0.96623 0.00000 0.25766 +vn -0.96623 0.00000 0.25766 +vn -0.94767 0.18850 0.25766 +vn 0.00000 0.00000 1.00000 +vn 0.00000 0.00000 1.00000 +vn 0.00000 0.00000 1.00000 +vn -0.96623 0.00000 0.25766 +vn -0.94767 -0.18850 0.25766 +vn -0.94767 -0.18850 0.25766 +vn -0.96623 0.00000 0.25766 +vn 0.00000 0.00000 1.00000 +vn 0.00000 0.00000 1.00000 +vn 0.00000 0.00000 1.00000 +vn -0.94767 -0.18850 0.25766 +vn -0.89268 -0.36976 0.25766 +vn -0.89268 -0.36976 0.25766 +vn -0.94767 -0.18850 0.25766 +vn 0.00000 0.00000 1.00000 +vn 0.00000 0.00000 1.00000 +vn 0.00000 0.00000 1.00000 +vn -0.89268 -0.36976 0.25766 +vn -0.80339 -0.53681 0.25766 +vn -0.80339 -0.53681 0.25766 +vn -0.89268 -0.36976 0.25766 +vn 0.00000 0.00000 1.00000 +vn 0.00000 0.00000 1.00000 +vn 0.00000 0.00000 1.00000 +vn -0.80339 -0.53681 0.25766 +vn -0.68323 -0.68323 0.25766 +vn -0.68323 -0.68323 0.25766 +vn -0.80339 -0.53681 0.25766 +vn 0.00000 0.00000 1.00000 +vn 0.00000 0.00000 1.00000 +vn 0.00000 0.00000 1.00000 +vn -0.68323 -0.68323 0.25766 +vn -0.53681 -0.80339 0.25766 +vn -0.53681 -0.80339 0.25766 +vn -0.68323 -0.68323 0.25766 +vn 0.00000 0.00000 1.00000 +vn 0.00000 0.00000 1.00000 +vn 0.00000 0.00000 1.00000 +vn -0.53681 -0.80339 0.25766 +vn -0.36976 -0.89268 0.25766 +vn -0.36976 -0.89268 0.25766 +vn -0.53681 -0.80339 0.25766 +vn 0.00000 0.00000 1.00000 +vn 0.00000 0.00000 1.00000 +vn 0.00000 0.00000 1.00000 +vn -0.36976 -0.89268 0.25766 +vn -0.18850 -0.94767 0.25766 +vn -0.18850 -0.94767 0.25766 +vn -0.36976 -0.89268 0.25766 +vn 0.00000 0.00000 1.00000 +vn 0.00000 0.00000 1.00000 +vn 0.00000 0.00000 1.00000 +vn -0.18850 -0.94767 0.25766 +vn -0.00000 -0.96623 0.25766 +vn -0.00000 -0.96623 0.25766 +vn -0.18850 -0.94767 0.25766 +vn 0.00000 0.00000 1.00000 +vn 0.00000 0.00000 1.00000 +vn 0.00000 0.00000 1.00000 +vn -0.00000 -0.96623 0.25766 +vn 0.18850 -0.94767 0.25766 +vn 0.18850 -0.94767 0.25766 +vn -0.00000 -0.96623 0.25766 +vn 0.00000 0.00000 1.00000 +vn 0.00000 0.00000 1.00000 +vn 0.00000 0.00000 1.00000 +vn 0.18850 -0.94767 0.25766 +vn 0.36976 -0.89268 0.25766 +vn 0.36976 -0.89268 0.25766 +vn 0.18850 -0.94767 0.25766 +vn 0.00000 0.00000 1.00000 +vn 0.00000 0.00000 1.00000 +vn 0.00000 0.00000 1.00000 +vn 0.36976 -0.89268 0.25766 +vn 0.53681 -0.80339 0.25766 +vn 0.53681 -0.80339 0.25766 +vn 0.36976 -0.89268 0.25766 +vn 0.00000 0.00000 1.00000 +vn 0.00000 0.00000 1.00000 +vn 0.00000 0.00000 1.00000 +vn 0.53681 -0.80339 0.25766 +vn 0.68323 -0.68323 0.25766 +vn 0.68323 -0.68323 0.25766 +vn 0.53681 -0.80339 0.25766 +vn 0.00000 0.00000 1.00000 +vn 0.00000 0.00000 1.00000 +vn 0.00000 0.00000 1.00000 +vn 0.68323 -0.68323 0.25766 +vn 0.80339 -0.53681 0.25766 +vn 0.80339 -0.53681 0.25766 +vn 0.68323 -0.68323 0.25766 +vn 0.00000 0.00000 1.00000 +vn 0.00000 0.00000 1.00000 +vn 0.00000 0.00000 1.00000 +vn 0.80339 -0.53681 0.25766 +vn 0.89268 -0.36976 0.25766 +vn 0.89268 -0.36976 0.25766 +vn 0.80339 -0.53681 0.25766 +vn 0.00000 0.00000 1.00000 +vn 0.00000 0.00000 1.00000 +vn 0.00000 0.00000 1.00000 +vn 0.89268 -0.36976 0.25766 +vn 0.94767 -0.18850 0.25766 +vn 0.94767 -0.18850 0.25766 +vn 0.89268 -0.36976 0.25766 +vn 0.00000 0.00000 1.00000 +vn 0.00000 0.00000 1.00000 +vn 0.00000 0.00000 1.00000 +vn 0.94767 -0.18850 0.25766 +vn 0.96623 -0.00000 0.25766 +vn 0.96623 -0.00000 0.25766 +vn 0.94767 -0.18850 0.25766 +vn 0.00000 0.00000 1.00000 +vn 0.00000 0.00000 1.00000 +vn 0.00000 0.00000 1.00000 +f 1/1/1 2/2/2 3/3/3 4/4/4 +f 5/5/5 6/6/6 7/7/7 8/8/8 +f 9/9/9 10/10/10 11/11/11 12/12/12 +f 13/13/13 14/14/14 15/15/15 16/16/16 +f 17/17/17 18/18/18 19/19/19 20/20/20 +f 21/21/21 22/22/22 23/23/23 24/24/24 +f 25/25/25 26/26/26 27/27/27 28/28/28 +f 29/29/29 30/30/30 31/31/31 +f 32/32/32 33/33/33 34/34/34 35/35/35 +f 36/36/36 37/37/37 38/38/38 +f 39/39/39 40/40/40 41/41/41 42/42/42 +f 43/43/43 44/44/44 45/45/45 +f 46/46/46 47/47/47 48/48/48 49/49/49 +f 50/50/50 51/51/51 52/52/52 +f 53/53/53 54/54/54 55/55/55 56/56/56 +f 57/57/57 58/58/58 59/59/59 +f 60/60/60 61/61/61 62/62/62 63/63/63 +f 64/64/64 65/65/65 66/66/66 +f 67/67/67 68/68/68 69/69/69 70/70/70 +f 71/71/71 72/72/72 73/73/73 +f 74/74/74 75/75/75 76/76/76 77/77/77 +f 78/78/78 79/79/79 80/80/80 +f 81/81/81 82/82/82 83/83/83 84/84/84 +f 85/85/85 86/86/86 87/87/87 +f 88/88/88 89/89/89 90/90/90 91/91/91 +f 92/92/92 93/93/93 94/94/94 +f 95/95/95 96/96/96 97/97/97 98/98/98 +f 99/99/99 100/100/100 101/101/101 +f 102/102/102 103/103/103 104/104/104 105/105/105 +f 106/106/106 107/107/107 108/108/108 +f 109/109/109 110/110/110 111/111/111 112/112/112 +f 113/113/113 114/114/114 115/115/115 +f 116/116/116 117/117/117 118/118/118 119/119/119 +f 120/120/120 121/121/121 122/122/122 +f 123/123/123 124/124/124 125/125/125 126/126/126 +f 127/127/127 128/128/128 129/129/129 +f 130/130/130 131/131/131 132/132/132 133/133/133 +f 134/134/134 135/135/135 136/136/136 +f 137/137/137 138/138/138 139/139/139 140/140/140 +f 141/141/141 142/142/142 143/143/143 +f 144/144/144 145/145/145 146/146/146 147/147/147 +f 148/148/148 149/149/149 150/150/150 +f 151/151/151 152/152/152 153/153/153 154/154/154 +f 155/155/155 156/156/156 157/157/157 +f 158/158/158 159/159/159 160/160/160 161/161/161 +f 162/162/162 163/163/163 164/164/164 +f 165/165/165 166/166/166 167/167/167 168/168/168 +f 169/169/169 170/170/170 171/171/171 +f 172/172/172 173/173/173 174/174/174 175/175/175 +f 176/176/176 177/177/177 178/178/178 +f 179/179/179 180/180/180 181/181/181 182/182/182 +f 183/183/183 184/184/184 185/185/185 +f 186/186/186 187/187/187 188/188/188 189/189/189 +f 190/190/190 191/191/191 192/192/192 +f 193/193/193 194/194/194 195/195/195 196/196/196 +f 197/197/197 198/198/198 199/199/199 +f 200/200/200 201/201/201 202/202/202 203/203/203 +f 204/204/204 205/205/205 206/206/206 +f 207/207/207 208/208/208 209/209/209 210/210/210 +f 211/211/211 212/212/212 213/213/213 +f 214/214/214 215/215/215 216/216/216 217/217/217 +f 218/218/218 219/219/219 220/220/220 +f 221/221/221 222/222/222 223/223/223 224/224/224 +f 225/225/225 226/226/226 227/227/227 +f 228/228/228 229/229/229 230/230/230 231/231/231 +f 232/232/232 233/233/233 234/234/234 +f 235/235/235 236/236/236 237/237/237 238/238/238 +f 239/239/239 240/240/240 241/241/241 +f 242/242/242 243/243/243 244/244/244 245/245/245 +f 246/246/246 247/247/247 248/248/248 diff --git a/src/platform/kpi_rover_worlds/assets/meshes/traffic_cone_45.obj b/src/platform/kpi_rover_worlds/assets/meshes/traffic_cone_45.obj new file mode 100644 index 0000000..630fbac --- /dev/null +++ b/src/platform/kpi_rover_worlds/assets/meshes/traffic_cone_45.obj @@ -0,0 +1,815 @@ +# Traffic cone, generated by gen_media.py +v -0.17000 -0.17000 0.03000 +v 0.17000 -0.17000 0.03000 +v 0.17000 0.17000 0.03000 +v -0.17000 0.17000 0.03000 +v -0.17000 0.17000 0.00000 +v 0.17000 0.17000 0.00000 +v 0.17000 -0.17000 0.00000 +v -0.17000 -0.17000 0.00000 +v -0.17000 -0.17000 0.00000 +v 0.17000 -0.17000 0.00000 +v 0.17000 -0.17000 0.03000 +v -0.17000 -0.17000 0.03000 +v 0.17000 -0.17000 0.00000 +v 0.17000 0.17000 0.00000 +v 0.17000 0.17000 0.03000 +v 0.17000 -0.17000 0.03000 +v 0.17000 0.17000 0.00000 +v -0.17000 0.17000 0.00000 +v -0.17000 0.17000 0.03000 +v 0.17000 0.17000 0.03000 +v -0.17000 0.17000 0.00000 +v -0.17000 -0.17000 0.00000 +v -0.17000 -0.17000 0.03000 +v -0.17000 0.17000 0.03000 +v 0.13000 0.00000 0.03000 +v 0.12750 0.02536 0.03000 +v 0.02452 0.00488 0.45000 +v 0.02500 0.00000 0.45000 +v 0.00000 0.00000 0.45000 +v 0.02500 0.00000 0.45000 +v 0.02452 0.00488 0.45000 +v 0.12750 0.02536 0.03000 +v 0.12010 0.04975 0.03000 +v 0.02310 0.00957 0.45000 +v 0.02452 0.00488 0.45000 +v 0.00000 0.00000 0.45000 +v 0.02452 0.00488 0.45000 +v 0.02310 0.00957 0.45000 +v 0.12010 0.04975 0.03000 +v 0.10809 0.07222 0.03000 +v 0.02079 0.01389 0.45000 +v 0.02310 0.00957 0.45000 +v 0.00000 0.00000 0.45000 +v 0.02310 0.00957 0.45000 +v 0.02079 0.01389 0.45000 +v 0.10809 0.07222 0.03000 +v 0.09192 0.09192 0.03000 +v 0.01768 0.01768 0.45000 +v 0.02079 0.01389 0.45000 +v 0.00000 0.00000 0.45000 +v 0.02079 0.01389 0.45000 +v 0.01768 0.01768 0.45000 +v 0.09192 0.09192 0.03000 +v 0.07222 0.10809 0.03000 +v 0.01389 0.02079 0.45000 +v 0.01768 0.01768 0.45000 +v 0.00000 0.00000 0.45000 +v 0.01768 0.01768 0.45000 +v 0.01389 0.02079 0.45000 +v 0.07222 0.10809 0.03000 +v 0.04975 0.12010 0.03000 +v 0.00957 0.02310 0.45000 +v 0.01389 0.02079 0.45000 +v 0.00000 0.00000 0.45000 +v 0.01389 0.02079 0.45000 +v 0.00957 0.02310 0.45000 +v 0.04975 0.12010 0.03000 +v 0.02536 0.12750 0.03000 +v 0.00488 0.02452 0.45000 +v 0.00957 0.02310 0.45000 +v 0.00000 0.00000 0.45000 +v 0.00957 0.02310 0.45000 +v 0.00488 0.02452 0.45000 +v 0.02536 0.12750 0.03000 +v 0.00000 0.13000 0.03000 +v 0.00000 0.02500 0.45000 +v 0.00488 0.02452 0.45000 +v 0.00000 0.00000 0.45000 +v 0.00488 0.02452 0.45000 +v 0.00000 0.02500 0.45000 +v 0.00000 0.13000 0.03000 +v -0.02536 0.12750 0.03000 +v -0.00488 0.02452 0.45000 +v 0.00000 0.02500 0.45000 +v 0.00000 0.00000 0.45000 +v 0.00000 0.02500 0.45000 +v -0.00488 0.02452 0.45000 +v -0.02536 0.12750 0.03000 +v -0.04975 0.12010 0.03000 +v -0.00957 0.02310 0.45000 +v -0.00488 0.02452 0.45000 +v 0.00000 0.00000 0.45000 +v -0.00488 0.02452 0.45000 +v -0.00957 0.02310 0.45000 +v -0.04975 0.12010 0.03000 +v -0.07222 0.10809 0.03000 +v -0.01389 0.02079 0.45000 +v -0.00957 0.02310 0.45000 +v 0.00000 0.00000 0.45000 +v -0.00957 0.02310 0.45000 +v -0.01389 0.02079 0.45000 +v -0.07222 0.10809 0.03000 +v -0.09192 0.09192 0.03000 +v -0.01768 0.01768 0.45000 +v -0.01389 0.02079 0.45000 +v 0.00000 0.00000 0.45000 +v -0.01389 0.02079 0.45000 +v -0.01768 0.01768 0.45000 +v -0.09192 0.09192 0.03000 +v -0.10809 0.07222 0.03000 +v -0.02079 0.01389 0.45000 +v -0.01768 0.01768 0.45000 +v 0.00000 0.00000 0.45000 +v -0.01768 0.01768 0.45000 +v -0.02079 0.01389 0.45000 +v -0.10809 0.07222 0.03000 +v -0.12010 0.04975 0.03000 +v -0.02310 0.00957 0.45000 +v -0.02079 0.01389 0.45000 +v 0.00000 0.00000 0.45000 +v -0.02079 0.01389 0.45000 +v -0.02310 0.00957 0.45000 +v -0.12010 0.04975 0.03000 +v -0.12750 0.02536 0.03000 +v -0.02452 0.00488 0.45000 +v -0.02310 0.00957 0.45000 +v 0.00000 0.00000 0.45000 +v -0.02310 0.00957 0.45000 +v -0.02452 0.00488 0.45000 +v -0.12750 0.02536 0.03000 +v -0.13000 0.00000 0.03000 +v -0.02500 0.00000 0.45000 +v -0.02452 0.00488 0.45000 +v 0.00000 0.00000 0.45000 +v -0.02452 0.00488 0.45000 +v -0.02500 0.00000 0.45000 +v -0.13000 0.00000 0.03000 +v -0.12750 -0.02536 0.03000 +v -0.02452 -0.00488 0.45000 +v -0.02500 0.00000 0.45000 +v 0.00000 0.00000 0.45000 +v -0.02500 0.00000 0.45000 +v -0.02452 -0.00488 0.45000 +v -0.12750 -0.02536 0.03000 +v -0.12010 -0.04975 0.03000 +v -0.02310 -0.00957 0.45000 +v -0.02452 -0.00488 0.45000 +v 0.00000 0.00000 0.45000 +v -0.02452 -0.00488 0.45000 +v -0.02310 -0.00957 0.45000 +v -0.12010 -0.04975 0.03000 +v -0.10809 -0.07222 0.03000 +v -0.02079 -0.01389 0.45000 +v -0.02310 -0.00957 0.45000 +v 0.00000 0.00000 0.45000 +v -0.02310 -0.00957 0.45000 +v -0.02079 -0.01389 0.45000 +v -0.10809 -0.07222 0.03000 +v -0.09192 -0.09192 0.03000 +v -0.01768 -0.01768 0.45000 +v -0.02079 -0.01389 0.45000 +v 0.00000 0.00000 0.45000 +v -0.02079 -0.01389 0.45000 +v -0.01768 -0.01768 0.45000 +v -0.09192 -0.09192 0.03000 +v -0.07222 -0.10809 0.03000 +v -0.01389 -0.02079 0.45000 +v -0.01768 -0.01768 0.45000 +v 0.00000 0.00000 0.45000 +v -0.01768 -0.01768 0.45000 +v -0.01389 -0.02079 0.45000 +v -0.07222 -0.10809 0.03000 +v -0.04975 -0.12010 0.03000 +v -0.00957 -0.02310 0.45000 +v -0.01389 -0.02079 0.45000 +v 0.00000 0.00000 0.45000 +v -0.01389 -0.02079 0.45000 +v -0.00957 -0.02310 0.45000 +v -0.04975 -0.12010 0.03000 +v -0.02536 -0.12750 0.03000 +v -0.00488 -0.02452 0.45000 +v -0.00957 -0.02310 0.45000 +v 0.00000 0.00000 0.45000 +v -0.00957 -0.02310 0.45000 +v -0.00488 -0.02452 0.45000 +v -0.02536 -0.12750 0.03000 +v -0.00000 -0.13000 0.03000 +v -0.00000 -0.02500 0.45000 +v -0.00488 -0.02452 0.45000 +v 0.00000 0.00000 0.45000 +v -0.00488 -0.02452 0.45000 +v -0.00000 -0.02500 0.45000 +v -0.00000 -0.13000 0.03000 +v 0.02536 -0.12750 0.03000 +v 0.00488 -0.02452 0.45000 +v -0.00000 -0.02500 0.45000 +v 0.00000 0.00000 0.45000 +v -0.00000 -0.02500 0.45000 +v 0.00488 -0.02452 0.45000 +v 0.02536 -0.12750 0.03000 +v 0.04975 -0.12010 0.03000 +v 0.00957 -0.02310 0.45000 +v 0.00488 -0.02452 0.45000 +v 0.00000 0.00000 0.45000 +v 0.00488 -0.02452 0.45000 +v 0.00957 -0.02310 0.45000 +v 0.04975 -0.12010 0.03000 +v 0.07222 -0.10809 0.03000 +v 0.01389 -0.02079 0.45000 +v 0.00957 -0.02310 0.45000 +v 0.00000 0.00000 0.45000 +v 0.00957 -0.02310 0.45000 +v 0.01389 -0.02079 0.45000 +v 0.07222 -0.10809 0.03000 +v 0.09192 -0.09192 0.03000 +v 0.01768 -0.01768 0.45000 +v 0.01389 -0.02079 0.45000 +v 0.00000 0.00000 0.45000 +v 0.01389 -0.02079 0.45000 +v 0.01768 -0.01768 0.45000 +v 0.09192 -0.09192 0.03000 +v 0.10809 -0.07222 0.03000 +v 0.02079 -0.01389 0.45000 +v 0.01768 -0.01768 0.45000 +v 0.00000 0.00000 0.45000 +v 0.01768 -0.01768 0.45000 +v 0.02079 -0.01389 0.45000 +v 0.10809 -0.07222 0.03000 +v 0.12010 -0.04975 0.03000 +v 0.02310 -0.00957 0.45000 +v 0.02079 -0.01389 0.45000 +v 0.00000 0.00000 0.45000 +v 0.02079 -0.01389 0.45000 +v 0.02310 -0.00957 0.45000 +v 0.12010 -0.04975 0.03000 +v 0.12750 -0.02536 0.03000 +v 0.02452 -0.00488 0.45000 +v 0.02310 -0.00957 0.45000 +v 0.00000 0.00000 0.45000 +v 0.02310 -0.00957 0.45000 +v 0.02452 -0.00488 0.45000 +v 0.12750 -0.02536 0.03000 +v 0.13000 -0.00000 0.03000 +v 0.02500 -0.00000 0.45000 +v 0.02452 -0.00488 0.45000 +v 0.00000 0.00000 0.45000 +v 0.02452 -0.00488 0.45000 +v 0.02500 -0.00000 0.45000 +vt 0.50000 0.05000 +vt 0.50000 0.05000 +vt 0.50000 0.05000 +vt 0.50000 0.05000 +vt 0.50000 0.05000 +vt 0.50000 0.05000 +vt 0.50000 0.05000 +vt 0.50000 0.05000 +vt 0.50000 0.05000 +vt 0.50000 0.05000 +vt 0.50000 0.05000 +vt 0.50000 0.05000 +vt 0.50000 0.05000 +vt 0.50000 0.05000 +vt 0.50000 0.05000 +vt 0.50000 0.05000 +vt 0.50000 0.05000 +vt 0.50000 0.05000 +vt 0.50000 0.05000 +vt 0.50000 0.05000 +vt 0.50000 0.05000 +vt 0.50000 0.05000 +vt 0.50000 0.05000 +vt 0.50000 0.05000 +vt 0.00000 0.10000 +vt 0.03125 0.10000 +vt 0.03125 1.00000 +vt 0.00000 1.00000 +vt 0.50000 1.00000 +vt 0.50000 1.00000 +vt 0.50000 1.00000 +vt 0.03125 0.10000 +vt 0.06250 0.10000 +vt 0.06250 1.00000 +vt 0.03125 1.00000 +vt 0.50000 1.00000 +vt 0.50000 1.00000 +vt 0.50000 1.00000 +vt 0.06250 0.10000 +vt 0.09375 0.10000 +vt 0.09375 1.00000 +vt 0.06250 1.00000 +vt 0.50000 1.00000 +vt 0.50000 1.00000 +vt 0.50000 1.00000 +vt 0.09375 0.10000 +vt 0.12500 0.10000 +vt 0.12500 1.00000 +vt 0.09375 1.00000 +vt 0.50000 1.00000 +vt 0.50000 1.00000 +vt 0.50000 1.00000 +vt 0.12500 0.10000 +vt 0.15625 0.10000 +vt 0.15625 1.00000 +vt 0.12500 1.00000 +vt 0.50000 1.00000 +vt 0.50000 1.00000 +vt 0.50000 1.00000 +vt 0.15625 0.10000 +vt 0.18750 0.10000 +vt 0.18750 1.00000 +vt 0.15625 1.00000 +vt 0.50000 1.00000 +vt 0.50000 1.00000 +vt 0.50000 1.00000 +vt 0.18750 0.10000 +vt 0.21875 0.10000 +vt 0.21875 1.00000 +vt 0.18750 1.00000 +vt 0.50000 1.00000 +vt 0.50000 1.00000 +vt 0.50000 1.00000 +vt 0.21875 0.10000 +vt 0.25000 0.10000 +vt 0.25000 1.00000 +vt 0.21875 1.00000 +vt 0.50000 1.00000 +vt 0.50000 1.00000 +vt 0.50000 1.00000 +vt 0.25000 0.10000 +vt 0.28125 0.10000 +vt 0.28125 1.00000 +vt 0.25000 1.00000 +vt 0.50000 1.00000 +vt 0.50000 1.00000 +vt 0.50000 1.00000 +vt 0.28125 0.10000 +vt 0.31250 0.10000 +vt 0.31250 1.00000 +vt 0.28125 1.00000 +vt 0.50000 1.00000 +vt 0.50000 1.00000 +vt 0.50000 1.00000 +vt 0.31250 0.10000 +vt 0.34375 0.10000 +vt 0.34375 1.00000 +vt 0.31250 1.00000 +vt 0.50000 1.00000 +vt 0.50000 1.00000 +vt 0.50000 1.00000 +vt 0.34375 0.10000 +vt 0.37500 0.10000 +vt 0.37500 1.00000 +vt 0.34375 1.00000 +vt 0.50000 1.00000 +vt 0.50000 1.00000 +vt 0.50000 1.00000 +vt 0.37500 0.10000 +vt 0.40625 0.10000 +vt 0.40625 1.00000 +vt 0.37500 1.00000 +vt 0.50000 1.00000 +vt 0.50000 1.00000 +vt 0.50000 1.00000 +vt 0.40625 0.10000 +vt 0.43750 0.10000 +vt 0.43750 1.00000 +vt 0.40625 1.00000 +vt 0.50000 1.00000 +vt 0.50000 1.00000 +vt 0.50000 1.00000 +vt 0.43750 0.10000 +vt 0.46875 0.10000 +vt 0.46875 1.00000 +vt 0.43750 1.00000 +vt 0.50000 1.00000 +vt 0.50000 1.00000 +vt 0.50000 1.00000 +vt 0.46875 0.10000 +vt 0.50000 0.10000 +vt 0.50000 1.00000 +vt 0.46875 1.00000 +vt 0.50000 1.00000 +vt 0.50000 1.00000 +vt 0.50000 1.00000 +vt 0.50000 0.10000 +vt 0.53125 0.10000 +vt 0.53125 1.00000 +vt 0.50000 1.00000 +vt 0.50000 1.00000 +vt 0.50000 1.00000 +vt 0.50000 1.00000 +vt 0.53125 0.10000 +vt 0.56250 0.10000 +vt 0.56250 1.00000 +vt 0.53125 1.00000 +vt 0.50000 1.00000 +vt 0.50000 1.00000 +vt 0.50000 1.00000 +vt 0.56250 0.10000 +vt 0.59375 0.10000 +vt 0.59375 1.00000 +vt 0.56250 1.00000 +vt 0.50000 1.00000 +vt 0.50000 1.00000 +vt 0.50000 1.00000 +vt 0.59375 0.10000 +vt 0.62500 0.10000 +vt 0.62500 1.00000 +vt 0.59375 1.00000 +vt 0.50000 1.00000 +vt 0.50000 1.00000 +vt 0.50000 1.00000 +vt 0.62500 0.10000 +vt 0.65625 0.10000 +vt 0.65625 1.00000 +vt 0.62500 1.00000 +vt 0.50000 1.00000 +vt 0.50000 1.00000 +vt 0.50000 1.00000 +vt 0.65625 0.10000 +vt 0.68750 0.10000 +vt 0.68750 1.00000 +vt 0.65625 1.00000 +vt 0.50000 1.00000 +vt 0.50000 1.00000 +vt 0.50000 1.00000 +vt 0.68750 0.10000 +vt 0.71875 0.10000 +vt 0.71875 1.00000 +vt 0.68750 1.00000 +vt 0.50000 1.00000 +vt 0.50000 1.00000 +vt 0.50000 1.00000 +vt 0.71875 0.10000 +vt 0.75000 0.10000 +vt 0.75000 1.00000 +vt 0.71875 1.00000 +vt 0.50000 1.00000 +vt 0.50000 1.00000 +vt 0.50000 1.00000 +vt 0.75000 0.10000 +vt 0.78125 0.10000 +vt 0.78125 1.00000 +vt 0.75000 1.00000 +vt 0.50000 1.00000 +vt 0.50000 1.00000 +vt 0.50000 1.00000 +vt 0.78125 0.10000 +vt 0.81250 0.10000 +vt 0.81250 1.00000 +vt 0.78125 1.00000 +vt 0.50000 1.00000 +vt 0.50000 1.00000 +vt 0.50000 1.00000 +vt 0.81250 0.10000 +vt 0.84375 0.10000 +vt 0.84375 1.00000 +vt 0.81250 1.00000 +vt 0.50000 1.00000 +vt 0.50000 1.00000 +vt 0.50000 1.00000 +vt 0.84375 0.10000 +vt 0.87500 0.10000 +vt 0.87500 1.00000 +vt 0.84375 1.00000 +vt 0.50000 1.00000 +vt 0.50000 1.00000 +vt 0.50000 1.00000 +vt 0.87500 0.10000 +vt 0.90625 0.10000 +vt 0.90625 1.00000 +vt 0.87500 1.00000 +vt 0.50000 1.00000 +vt 0.50000 1.00000 +vt 0.50000 1.00000 +vt 0.90625 0.10000 +vt 0.93750 0.10000 +vt 0.93750 1.00000 +vt 0.90625 1.00000 +vt 0.50000 1.00000 +vt 0.50000 1.00000 +vt 0.50000 1.00000 +vt 0.93750 0.10000 +vt 0.96875 0.10000 +vt 0.96875 1.00000 +vt 0.93750 1.00000 +vt 0.50000 1.00000 +vt 0.50000 1.00000 +vt 0.50000 1.00000 +vt 0.96875 0.10000 +vt 1.00000 0.10000 +vt 1.00000 1.00000 +vt 0.96875 1.00000 +vt 0.50000 1.00000 +vt 0.50000 1.00000 +vt 0.50000 1.00000 +vn 0.00000 0.00000 1.00000 +vn 0.00000 0.00000 1.00000 +vn 0.00000 0.00000 1.00000 +vn 0.00000 0.00000 1.00000 +vn 0.00000 0.00000 -1.00000 +vn 0.00000 0.00000 -1.00000 +vn 0.00000 0.00000 -1.00000 +vn 0.00000 0.00000 -1.00000 +vn 0.00000 -1.00000 0.00000 +vn 0.00000 -1.00000 0.00000 +vn 0.00000 -1.00000 0.00000 +vn 0.00000 -1.00000 0.00000 +vn 1.00000 0.00000 0.00000 +vn 1.00000 0.00000 0.00000 +vn 1.00000 0.00000 0.00000 +vn 1.00000 0.00000 0.00000 +vn 0.00000 1.00000 0.00000 +vn 0.00000 1.00000 0.00000 +vn 0.00000 1.00000 0.00000 +vn 0.00000 1.00000 0.00000 +vn -1.00000 0.00000 0.00000 +vn -1.00000 0.00000 0.00000 +vn -1.00000 0.00000 0.00000 +vn -1.00000 0.00000 0.00000 +vn 0.97014 0.00000 0.24254 +vn 0.95150 0.18927 0.24254 +vn 0.95150 0.18927 0.24254 +vn 0.97014 0.00000 0.24254 +vn 0.00000 0.00000 1.00000 +vn 0.00000 0.00000 1.00000 +vn 0.00000 0.00000 1.00000 +vn 0.95150 0.18927 0.24254 +vn 0.89629 0.37126 0.24254 +vn 0.89629 0.37126 0.24254 +vn 0.95150 0.18927 0.24254 +vn 0.00000 0.00000 1.00000 +vn 0.00000 0.00000 1.00000 +vn 0.00000 0.00000 1.00000 +vn 0.89629 0.37126 0.24254 +vn 0.80664 0.53898 0.24254 +vn 0.80664 0.53898 0.24254 +vn 0.89629 0.37126 0.24254 +vn 0.00000 0.00000 1.00000 +vn 0.00000 0.00000 1.00000 +vn 0.00000 0.00000 1.00000 +vn 0.80664 0.53898 0.24254 +vn 0.68599 0.68599 0.24254 +vn 0.68599 0.68599 0.24254 +vn 0.80664 0.53898 0.24254 +vn 0.00000 0.00000 1.00000 +vn 0.00000 0.00000 1.00000 +vn 0.00000 0.00000 1.00000 +vn 0.68599 0.68599 0.24254 +vn 0.53898 0.80664 0.24254 +vn 0.53898 0.80664 0.24254 +vn 0.68599 0.68599 0.24254 +vn 0.00000 0.00000 1.00000 +vn 0.00000 0.00000 1.00000 +vn 0.00000 0.00000 1.00000 +vn 0.53898 0.80664 0.24254 +vn 0.37126 0.89629 0.24254 +vn 0.37126 0.89629 0.24254 +vn 0.53898 0.80664 0.24254 +vn 0.00000 0.00000 1.00000 +vn 0.00000 0.00000 1.00000 +vn 0.00000 0.00000 1.00000 +vn 0.37126 0.89629 0.24254 +vn 0.18927 0.95150 0.24254 +vn 0.18927 0.95150 0.24254 +vn 0.37126 0.89629 0.24254 +vn 0.00000 0.00000 1.00000 +vn 0.00000 0.00000 1.00000 +vn 0.00000 0.00000 1.00000 +vn 0.18927 0.95150 0.24254 +vn 0.00000 0.97014 0.24254 +vn 0.00000 0.97014 0.24254 +vn 0.18927 0.95150 0.24254 +vn 0.00000 0.00000 1.00000 +vn 0.00000 0.00000 1.00000 +vn 0.00000 0.00000 1.00000 +vn 0.00000 0.97014 0.24254 +vn -0.18927 0.95150 0.24254 +vn -0.18927 0.95150 0.24254 +vn 0.00000 0.97014 0.24254 +vn 0.00000 0.00000 1.00000 +vn 0.00000 0.00000 1.00000 +vn 0.00000 0.00000 1.00000 +vn -0.18927 0.95150 0.24254 +vn -0.37126 0.89629 0.24254 +vn -0.37126 0.89629 0.24254 +vn -0.18927 0.95150 0.24254 +vn 0.00000 0.00000 1.00000 +vn 0.00000 0.00000 1.00000 +vn 0.00000 0.00000 1.00000 +vn -0.37126 0.89629 0.24254 +vn -0.53898 0.80664 0.24254 +vn -0.53898 0.80664 0.24254 +vn -0.37126 0.89629 0.24254 +vn 0.00000 0.00000 1.00000 +vn 0.00000 0.00000 1.00000 +vn 0.00000 0.00000 1.00000 +vn -0.53898 0.80664 0.24254 +vn -0.68599 0.68599 0.24254 +vn -0.68599 0.68599 0.24254 +vn -0.53898 0.80664 0.24254 +vn 0.00000 0.00000 1.00000 +vn 0.00000 0.00000 1.00000 +vn 0.00000 0.00000 1.00000 +vn -0.68599 0.68599 0.24254 +vn -0.80664 0.53898 0.24254 +vn -0.80664 0.53898 0.24254 +vn -0.68599 0.68599 0.24254 +vn 0.00000 0.00000 1.00000 +vn 0.00000 0.00000 1.00000 +vn 0.00000 0.00000 1.00000 +vn -0.80664 0.53898 0.24254 +vn -0.89629 0.37126 0.24254 +vn -0.89629 0.37126 0.24254 +vn -0.80664 0.53898 0.24254 +vn 0.00000 0.00000 1.00000 +vn 0.00000 0.00000 1.00000 +vn 0.00000 0.00000 1.00000 +vn -0.89629 0.37126 0.24254 +vn -0.95150 0.18927 0.24254 +vn -0.95150 0.18927 0.24254 +vn -0.89629 0.37126 0.24254 +vn 0.00000 0.00000 1.00000 +vn 0.00000 0.00000 1.00000 +vn 0.00000 0.00000 1.00000 +vn -0.95150 0.18927 0.24254 +vn -0.97014 0.00000 0.24254 +vn -0.97014 0.00000 0.24254 +vn -0.95150 0.18927 0.24254 +vn 0.00000 0.00000 1.00000 +vn 0.00000 0.00000 1.00000 +vn 0.00000 0.00000 1.00000 +vn -0.97014 0.00000 0.24254 +vn -0.95150 -0.18927 0.24254 +vn -0.95150 -0.18927 0.24254 +vn -0.97014 0.00000 0.24254 +vn 0.00000 0.00000 1.00000 +vn 0.00000 0.00000 1.00000 +vn 0.00000 0.00000 1.00000 +vn -0.95150 -0.18927 0.24254 +vn -0.89629 -0.37126 0.24254 +vn -0.89629 -0.37126 0.24254 +vn -0.95150 -0.18927 0.24254 +vn 0.00000 0.00000 1.00000 +vn 0.00000 0.00000 1.00000 +vn 0.00000 0.00000 1.00000 +vn -0.89629 -0.37126 0.24254 +vn -0.80664 -0.53898 0.24254 +vn -0.80664 -0.53898 0.24254 +vn -0.89629 -0.37126 0.24254 +vn 0.00000 0.00000 1.00000 +vn 0.00000 0.00000 1.00000 +vn 0.00000 0.00000 1.00000 +vn -0.80664 -0.53898 0.24254 +vn -0.68599 -0.68599 0.24254 +vn -0.68599 -0.68599 0.24254 +vn -0.80664 -0.53898 0.24254 +vn 0.00000 0.00000 1.00000 +vn 0.00000 0.00000 1.00000 +vn 0.00000 0.00000 1.00000 +vn -0.68599 -0.68599 0.24254 +vn -0.53898 -0.80664 0.24254 +vn -0.53898 -0.80664 0.24254 +vn -0.68599 -0.68599 0.24254 +vn 0.00000 0.00000 1.00000 +vn 0.00000 0.00000 1.00000 +vn 0.00000 0.00000 1.00000 +vn -0.53898 -0.80664 0.24254 +vn -0.37126 -0.89629 0.24254 +vn -0.37126 -0.89629 0.24254 +vn -0.53898 -0.80664 0.24254 +vn 0.00000 0.00000 1.00000 +vn 0.00000 0.00000 1.00000 +vn 0.00000 0.00000 1.00000 +vn -0.37126 -0.89629 0.24254 +vn -0.18927 -0.95150 0.24254 +vn -0.18927 -0.95150 0.24254 +vn -0.37126 -0.89629 0.24254 +vn 0.00000 0.00000 1.00000 +vn 0.00000 0.00000 1.00000 +vn 0.00000 0.00000 1.00000 +vn -0.18927 -0.95150 0.24254 +vn -0.00000 -0.97014 0.24254 +vn -0.00000 -0.97014 0.24254 +vn -0.18927 -0.95150 0.24254 +vn 0.00000 0.00000 1.00000 +vn 0.00000 0.00000 1.00000 +vn 0.00000 0.00000 1.00000 +vn -0.00000 -0.97014 0.24254 +vn 0.18927 -0.95150 0.24254 +vn 0.18927 -0.95150 0.24254 +vn -0.00000 -0.97014 0.24254 +vn 0.00000 0.00000 1.00000 +vn 0.00000 0.00000 1.00000 +vn 0.00000 0.00000 1.00000 +vn 0.18927 -0.95150 0.24254 +vn 0.37126 -0.89629 0.24254 +vn 0.37126 -0.89629 0.24254 +vn 0.18927 -0.95150 0.24254 +vn 0.00000 0.00000 1.00000 +vn 0.00000 0.00000 1.00000 +vn 0.00000 0.00000 1.00000 +vn 0.37126 -0.89629 0.24254 +vn 0.53898 -0.80664 0.24254 +vn 0.53898 -0.80664 0.24254 +vn 0.37126 -0.89629 0.24254 +vn 0.00000 0.00000 1.00000 +vn 0.00000 0.00000 1.00000 +vn 0.00000 0.00000 1.00000 +vn 0.53898 -0.80664 0.24254 +vn 0.68599 -0.68599 0.24254 +vn 0.68599 -0.68599 0.24254 +vn 0.53898 -0.80664 0.24254 +vn 0.00000 0.00000 1.00000 +vn 0.00000 0.00000 1.00000 +vn 0.00000 0.00000 1.00000 +vn 0.68599 -0.68599 0.24254 +vn 0.80664 -0.53898 0.24254 +vn 0.80664 -0.53898 0.24254 +vn 0.68599 -0.68599 0.24254 +vn 0.00000 0.00000 1.00000 +vn 0.00000 0.00000 1.00000 +vn 0.00000 0.00000 1.00000 +vn 0.80664 -0.53898 0.24254 +vn 0.89629 -0.37126 0.24254 +vn 0.89629 -0.37126 0.24254 +vn 0.80664 -0.53898 0.24254 +vn 0.00000 0.00000 1.00000 +vn 0.00000 0.00000 1.00000 +vn 0.00000 0.00000 1.00000 +vn 0.89629 -0.37126 0.24254 +vn 0.95150 -0.18927 0.24254 +vn 0.95150 -0.18927 0.24254 +vn 0.89629 -0.37126 0.24254 +vn 0.00000 0.00000 1.00000 +vn 0.00000 0.00000 1.00000 +vn 0.00000 0.00000 1.00000 +vn 0.95150 -0.18927 0.24254 +vn 0.97014 -0.00000 0.24254 +vn 0.97014 -0.00000 0.24254 +vn 0.95150 -0.18927 0.24254 +vn 0.00000 0.00000 1.00000 +vn 0.00000 0.00000 1.00000 +vn 0.00000 0.00000 1.00000 +f 1/1/1 2/2/2 3/3/3 4/4/4 +f 5/5/5 6/6/6 7/7/7 8/8/8 +f 9/9/9 10/10/10 11/11/11 12/12/12 +f 13/13/13 14/14/14 15/15/15 16/16/16 +f 17/17/17 18/18/18 19/19/19 20/20/20 +f 21/21/21 22/22/22 23/23/23 24/24/24 +f 25/25/25 26/26/26 27/27/27 28/28/28 +f 29/29/29 30/30/30 31/31/31 +f 32/32/32 33/33/33 34/34/34 35/35/35 +f 36/36/36 37/37/37 38/38/38 +f 39/39/39 40/40/40 41/41/41 42/42/42 +f 43/43/43 44/44/44 45/45/45 +f 46/46/46 47/47/47 48/48/48 49/49/49 +f 50/50/50 51/51/51 52/52/52 +f 53/53/53 54/54/54 55/55/55 56/56/56 +f 57/57/57 58/58/58 59/59/59 +f 60/60/60 61/61/61 62/62/62 63/63/63 +f 64/64/64 65/65/65 66/66/66 +f 67/67/67 68/68/68 69/69/69 70/70/70 +f 71/71/71 72/72/72 73/73/73 +f 74/74/74 75/75/75 76/76/76 77/77/77 +f 78/78/78 79/79/79 80/80/80 +f 81/81/81 82/82/82 83/83/83 84/84/84 +f 85/85/85 86/86/86 87/87/87 +f 88/88/88 89/89/89 90/90/90 91/91/91 +f 92/92/92 93/93/93 94/94/94 +f 95/95/95 96/96/96 97/97/97 98/98/98 +f 99/99/99 100/100/100 101/101/101 +f 102/102/102 103/103/103 104/104/104 105/105/105 +f 106/106/106 107/107/107 108/108/108 +f 109/109/109 110/110/110 111/111/111 112/112/112 +f 113/113/113 114/114/114 115/115/115 +f 116/116/116 117/117/117 118/118/118 119/119/119 +f 120/120/120 121/121/121 122/122/122 +f 123/123/123 124/124/124 125/125/125 126/126/126 +f 127/127/127 128/128/128 129/129/129 +f 130/130/130 131/131/131 132/132/132 133/133/133 +f 134/134/134 135/135/135 136/136/136 +f 137/137/137 138/138/138 139/139/139 140/140/140 +f 141/141/141 142/142/142 143/143/143 +f 144/144/144 145/145/145 146/146/146 147/147/147 +f 148/148/148 149/149/149 150/150/150 +f 151/151/151 152/152/152 153/153/153 154/154/154 +f 155/155/155 156/156/156 157/157/157 +f 158/158/158 159/159/159 160/160/160 161/161/161 +f 162/162/162 163/163/163 164/164/164 +f 165/165/165 166/166/166 167/167/167 168/168/168 +f 169/169/169 170/170/170 171/171/171 +f 172/172/172 173/173/173 174/174/174 175/175/175 +f 176/176/176 177/177/177 178/178/178 +f 179/179/179 180/180/180 181/181/181 182/182/182 +f 183/183/183 184/184/184 185/185/185 +f 186/186/186 187/187/187 188/188/188 189/189/189 +f 190/190/190 191/191/191 192/192/192 +f 193/193/193 194/194/194 195/195/195 196/196/196 +f 197/197/197 198/198/198 199/199/199 +f 200/200/200 201/201/201 202/202/202 203/203/203 +f 204/204/204 205/205/205 206/206/206 +f 207/207/207 208/208/208 209/209/209 210/210/210 +f 211/211/211 212/212/212 213/213/213 +f 214/214/214 215/215/215 216/216/216 217/217/217 +f 218/218/218 219/219/219 220/220/220 +f 221/221/221 222/222/222 223/223/223 224/224/224 +f 225/225/225 226/226/226 227/227/227 +f 228/228/228 229/229/229 230/230/230 231/231/231 +f 232/232/232 233/233/233 234/234/234 +f 235/235/235 236/236/236 237/237/237 238/238/238 +f 239/239/239 240/240/240 241/241/241 +f 242/242/242 243/243/243 244/244/244 245/245/245 +f 246/246/246 247/247/247 248/248/248 diff --git a/src/platform/kpi_rover_worlds/assets/models/CREDITS.md b/src/platform/kpi_rover_worlds/assets/models/CREDITS.md new file mode 100644 index 0000000..3507c13 --- /dev/null +++ b/src/platform/kpi_rover_worlds/assets/models/CREDITS.md @@ -0,0 +1,20 @@ +# Model credits + +Models from [Poly Haven](https://polyhaven.com), licensed [CC0](https://polyhaven.com/license), textures reduced to 512 px. + +| Model | Authors | +|---|---| +| [cardboard_box_01](https://polyhaven.com/a/cardboard_box_01) | Rahul Chaudhary | +| [plastic_crate_02](https://polyhaven.com/a/plastic_crate_02) | Fabi_G | +| [metal_toolbox](https://polyhaven.com/a/metal_toolbox) | Mateusz Sadek | +| [wooden_crate_01](https://polyhaven.com/a/wooden_crate_01) | James Ray Cock | +| [wooden_bucket_01](https://polyhaven.com/a/wooden_bucket_01) | James Ray Cock | +| [old_tyre](https://polyhaven.com/a/old_tyre) | MP | +| [cement_bag](https://polyhaven.com/a/cement_bag) | PierreB3D | +| [medical_box](https://polyhaven.com/a/medical_box) | Ulan Cabanilla | +| [can_rusted](https://polyhaven.com/a/can_rusted) | Rahul Chaudhary | +| [oil_tin](https://polyhaven.com/a/oil_tin) | Niklas | +| [grass_medium_01](https://polyhaven.com/a/grass_medium_01) (grass cards) | Rob Tuytel, Rico Cilliers | +| [grass_medium_02](https://polyhaven.com/a/grass_medium_02) (grass cards) | Rico Cilliers | +| [grass_bermuda_01](https://polyhaven.com/a/grass_bermuda_01) (grass cards) | Rico Cilliers | +| [island_tree_02](https://polyhaven.com/a/island_tree_02) (leaves) | Rob Tuytel, Rico Cilliers | diff --git a/src/platform/kpi_rover_worlds/assets/models/apple_1/apple_1_leaves.yaml b/src/platform/kpi_rover_worlds/assets/models/apple_1/apple_1_leaves.yaml new file mode 100644 index 0000000..1582b03 --- /dev/null +++ b/src/platform/kpi_rover_worlds/assets/models/apple_1/apple_1_leaves.yaml @@ -0,0 +1,2 @@ +# Leaf cards of apple_1, written by tools/assets/convert_trees.py: centers and half-axes, real m. +{centers: [[0.2441, 0.3465, 1.4464], [0.413, 0.3425, 1.732], [0.2584, 0.2843, 2.048], [0.4159, 0.5678, 2.0273], [0.4079, 0.4757, 2.3148], [0.3096, 0.6153, 2.5845], [0.5815, 0.3137, 1.5318], [0.4489, 0.118, 1.7121], [0.6501, 0.2403, 1.789], [0.6287, -0.0331, 1.7986], [0.8721, 0.0859, 1.7882], [0.7109, 0.0858, 1.9928], [0.8111, -0.1596, 1.9576], [0.9547, 0.0682, 2.0933], [1.0021, -0.1895, 2.1535], [0.9079, -0.0064, 2.3576], [0.7465, 0.5309, 1.5814], [0.5786, 0.6216, 1.7948], [0.8415, 0.4935, 1.8409], [0.7447, 0.6487, 1.9499], [0.9539, 0.634, 1.8792], [1.1292, 0.6836, 2.1899], [0.6893, 0.2474, 1.8227], [0.6301, 0.5035, 1.9155], [0.493, 0.211, 1.9774], [0.5671, 0.2428, 2.2292], [0.5149, 0.4006, 2.373], [0.6714, 0.2364, 2.4667], [0.4761, 0.3048, 2.6095], [0.8764, 0.2942, 1.8165], [0.899, 0.2834, 2.0615], [1.0318, 0.3972, 1.8666], [1.1277, 0.3589, 2.1982], [1.2903, 0.3067, 2.0605], [1.2849, 0.4732, 2.2116], [1.4558, 0.2388, 2.2926], [1.5223, 0.4132, 2.3482], [0.9992, 0.594, 2.1414], [0.7664, 0.6982, 2.1022], [0.9718, 0.7794, 2.1853], [0.9601, 0.6839, 2.3954], [1.0984, 0.9735, 2.5195], [1.1524, 0.8947, 2.7295], [0.9088, 0.5831, 2.2828], [1.1103, 0.6619, 2.2484], [0.9899, 0.4425, 2.3607], [1.2504, 0.4751, 2.233], [1.1423, 0.3371, 2.4083], [1.2732, 0.5671, 2.3889], [1.1035, 0.4944, 2.5774], [1.3107, 0.3747, 2.463], [1.2793, 0.5837, 2.5755], [1.1958, 0.3545, 2.6566], [1.2593, 0.5254, 2.739], [1.2808, 0.3891, 2.875], [1.0609, 0.8499, 2.2422], [1.0919, 0.77, 2.4626], [1.2736, 0.8481, 2.2903], [1.2593, 0.8272, 2.5295], [1.2565, 1.0654, 2.3387], [1.1371, 0.9737, 2.5788], [1.3766, 0.9645, 2.5341], [1.4091, 1.1299, 2.5915], [1.2211, 1.1432, 2.715], [1.4333, 1.0149, 2.7989], [1.2945, 1.1325, 2.8845], [1.0672, 0.9127, 2.5288], [0.9933, 0.6479, 2.6008], [1.1879, 0.7806, 2.6097], [0.9609, 0.8527, 2.6526], [1.0985, 0.6313, 2.718], [1.1851, 0.8752, 2.743], [0.9803, 0.8428, 2.7832], [0.9827, 0.7002, 2.8305], [1.2611, 0.6651, 3.1955], [1.1485, 0.8642, 2.6543], [1.3661, 0.7766, 2.5345], [1.2523, 0.9938, 2.6172], [1.2781, 0.7806, 2.746], [1.4023, 0.9218, 2.5931], [1.4378, 0.7993, 2.7324], [1.3821, 0.8932, 2.8907], [1.5716, 0.8926, 2.7613], [1.5308, 0.8303, 2.9488], [1.6396, 1.0059, 2.8498], [1.6712, 0.868, 2.9502], [1.612, 0.8819, 3.1624], [1.8324, 0.9652, 2.9886], [1.6757, 1.0533, 3.1443], [1.129, 1.1333, 2.6257], [1.344, 1.1385, 2.9567], [1.3105, 1.3529, 2.8362], [1.1939, 1.2872, 3.0383], [1.3683, 1.4104, 3.0019], [1.3567, 1.4574, 3.2324], [1.1662, 1.4296, 2.839], [1.198, 1.281, 3.1146], [1.3299, 1.4338, 2.9555], [1.0907, 1.4752, 3.0353], [1.3195, 1.4266, 3.1703], [1.2291, 1.1189, 2.8654], [1.3271, 1.2732, 2.7841], [1.3418, 1.0877, 2.9466], [1.2708, 1.2769, 2.9475], [1.4802, 1.104, 2.9972], [1.3248, 1.2049, 3.0904], [1.3467, 1.3464, 3.2055], [1.5152, 1.4474, 3.1561], [1.4219, 1.2551, 3.315], [1.6388, 1.3358, 3.2202], [1.4437, 1.4472, 3.2927], [1.0535, 0.3921, 2.2361], [1.1499, 0.5108, 1.9546], [1.2285, 0.3207, 2.1049], [1.6436, 0.4556, 2.1142], [1.6007, 0.2901, 2.2608], [1.754, 0.4955, 2.3198], [1.7962, 0.2842, 2.2988], [1.7805, 0.1803, 2.4831], [1.0933, 0.5093, 2.3712], [1.3164, 0.6078, 2.272], [1.3046, 0.7404, 2.3804], [1.3773, 0.5976, 2.5216], [1.2909, 0.8423, 2.566], [1.2493, 0.6249, 2.6724], [1.2711, 0.8168, 2.7583], [1.3655, 0.5678, 2.7972], [1.4532, 0.7748, 2.7605], [1.2849, 0.7246, 2.9062], [1.4828, 0.6452, 2.858], [1.4286, 0.856, 2.9412], [1.4029, 0.6474, 3.0082], [1.5515, 0.5403, 2.5055], [1.4426, 0.3551, 2.5801], [1.7007, 0.3611, 2.4851], [1.559, 0.4739, 2.6926], [1.7586, 0.4005, 2.6737], [1.5406, 0.3453, 2.806], [1.6956, 0.2159, 2.6958], [1.7322, 0.4003, 2.8617], [1.6085, 0.5486, 2.1953], [1.5043, 0.8123, 2.3], [1.6497, 0.714, 2.1186], [1.6185, 0.7889, 2.4386], [1.7805, 0.5883, 2.2864], [1.6879, 0.8484, 2.247], [1.7463, 0.6992, 2.4905], [1.8778, 0.7218, 2.2251], [1.7536, 0.8857, 2.4247], [1.9322, 0.8823, 2.3146], [1.8091, 0.8131, 2.5641], [1.9192, 0.937, 2.4732], [1.9313, 0.7248, 2.6173], [1.7023, 0.5029, 2.4027], [1.7851, 0.7935, 2.3605], [1.598, 0.6174, 2.5836], [1.8502, 0.5853, 2.4184], [1.7415, 0.5647, 2.5758], [1.9211, 0.6961, 2.4938], [1.9453, 0.7469, 2.6423], [1.7819, 0.6056, 2.8221], [1.9911, 0.5545, 2.6602], [1.9471, 0.7373, 2.8051], [1.9225, 0.6482, 2.9443], [2.037, 0.5532, 2.4705], [2.0477, 0.8664, 2.4375], [1.9671, 0.6747, 2.6741], [2.1409, 0.8963, 2.6552], [2.292, 0.7705, 2.7762], [2.0935, 0.8087, 2.5117], [2.0104, 0.6556, 2.6519], [2.1534, 0.566, 2.6699], [2.3075, 0.7294, 2.615], [-0.2407, -0.1725, 1.6245], [-0.5329, -0.2128, 1.6801], [-0.4201, -0.2278, 1.9643], [-0.6491, -0.1613, 2.1674], [-0.8771, -0.1965, 2.1091], [-0.3788, 0.1405, 1.9415], [-0.3285, 0.3648, 1.9558], [-0.5371, 0.334, 2.0885], [-0.3301, 0.2632, 2.2142], [-0.4827, 0.3409, 2.383], [-0.2756, 0.4465, 2.4759], [-0.5847, 0.0506, 1.4754], [-0.6796, 0.3127, 1.4575], [-0.8122, 0.0947, 1.6478], [-0.7565, 0.3521, 1.7189], [-0.9669, 0.3096, 1.5807], [-1.1188, 0.3563, 1.8221], [-0.9987, 0.4531, 1.9931], [-0.626, 0.1916, 1.8196], [-0.7614, 0.1131, 2.0028], [-0.5799, 0.1465, 2.2356], [-0.8039, 0.0592, 2.1923], [-0.6633, -0.0671, 2.3895], [-0.7476, 0.2042, 2.3765], [-0.9101, -0.0263, 2.423], [-0.7315, 0.0836, 2.5505], [-0.626, 0.3184, 1.6304], [-0.5806, 0.392, 1.8688], [-0.7769, 0.3254, 1.9875], [-0.7055, 0.5884, 1.8485], [-0.9289, 0.4576, 1.9216], [-0.7517, 0.5191, 2.0951], [-0.8903, 0.6944, 1.9356], [-0.7959, 0.6951, 2.1259], [-1.0057, 0.7181, 2.1018], [-0.8407, 0.2202, 1.7172], [-1.1491, 0.1984, 1.9244], [-1.1953, -0.0946, 1.952], [-1.1399, 0.1135, 2.1635], [-1.2523, -0.0456, 2.1833], [-1.4691, -0.0289, 2.1833], [-1.3589, 0.0118, 2.4432], [-0.8283, 0.3217, 1.9358], [-0.8346, 0.1019, 1.9958], [-0.7088, 0.257, 2.0695], [-0.8304, 0.3343, 2.3049], [-0.7307, 0.1507, 2.582], [-0.65, 0.3749, 2.5733], [-0.8313, 0.2773, 2.7247], [-0.9885, 0.1505, 1.8978], [-0.9427, 0.314, 2.0786], [-1.0673, 0.3302, 1.8225], [-1.0709, 0.4023, 2.014], [-1.1544, 0.3057, 2.2127], [-1.2741, 0.4811, 2.0072], [-1.2399, 0.434, 2.2079], [-1.4578, 0.4183, 2.0989], [-1.3379, 0.2985, 2.3194], [-1.0999, 0.1835, 1.9825], [-1.1056, 0.2416, 2.1669], [-1.1405, -0.026, 2.0862], [-1.0152, 0.1235, 2.322], [-1.2335, 0.1381, 2.233], [-1.1405, -0.0812, 2.3187], [-1.3529, 0.0444, 2.3707], [-1.2912, 0.2048, 2.5531], [-1.3785, -0.0112, 2.5353], [-1.2162, 0.0598, 2.73], [-1.1834, 0.4085, 2.0773], [-1.0171, 0.4748, 2.2072], [-1.2722, 0.3729, 2.2305], [-1.1355, 0.5359, 2.2661], [-1.2513, 0.3799, 2.4154], [-0.9812, 0.4789, 2.4636], [-1.2419, 0.6316, 2.397], [-1.1722, 0.4133, 2.5701], [-1.0458, 0.587, 2.4789], [-1.2621, 0.5906, 2.5541], [-1.0688, 0.5021, 2.6296], [-1.1234, 0.73, 2.563], [-1.3937, 0.2955, 2.1055], [-1.3603, 0.0713, 2.2727], [-1.4262, 0.3377, 2.2972], [-1.5452, 0.1518, 2.1339], [-1.6243, 0.0482, 2.3191], [-1.6573, 0.066, 2.526], [-1.7516, 0.1876, 2.5879], [-1.394, 0.4342, 2.2356], [-1.2168, 0.4262, 2.3961], [-1.2133, 0.1985, 2.4988], [-1.3513, 0.458, 2.4716], [-1.4092, 0.4341, 2.5809], [-1.4565, 0.2332, 2.6851], [-1.4612, 0.441, 2.7051], [-1.3839, 0.2803, 2.8046], [-1.5072, 0.3821, 2.8597], [-1.4829, 0.6245, 2.2663], [-1.7723, 0.586, 2.4852], [-1.5373, 0.6427, 2.6704], [-1.6689, 0.7495, 2.4765], [-1.5896, 0.798, 2.6439], [-1.5529, 0.2313, 2.1809], [-1.5043, 0.3187, 2.4807], [-1.6368, 0.4028, 2.2424], [-1.6401, 0.4248, 2.4722], [-1.7244, 0.2725, 2.2163], [-1.6306, 0.2337, 2.4498], [-1.7476, 0.4221, 2.3773], [-1.7607, 0.1964, 2.3467], [-1.8753, 0.371, 2.3362], [-1.9696, 0.4487, 2.477], [-1.6986, 0.55, 2.284], [-1.6567, 0.3457, 2.4717], [-1.5495, 0.5771, 2.4661], [-1.6082, 0.4267, 2.6147], [-1.7047, 0.6649, 2.4737], [-1.824, 0.4107, 2.5947], [-1.8756, 0.6391, 2.5797], [-1.7344, 0.4664, 2.7108], [-1.6877, 0.7176, 2.7149], [-1.8942, 0.5406, 2.7231], [-1.8332, 0.7102, 2.7627], [-1.7256, 0.6753, 2.8861], [-1.7925, 0.5283, 2.3732], [-1.8526, 0.3109, 2.4381], [-1.7547, 0.5291, 2.5794], [-1.8529, 0.3567, 2.5917], [-1.8778, 0.571, 2.5319], [-2.0128, 0.3974, 2.5072], [-1.8654, 0.4728, 2.7053], [-2.0098, 0.3845, 2.6591], [-1.9281, 0.6171, 2.7434], [-1.9907, 0.4317, 2.8175], [0.1805, -0.1904, 1.8769], [0.4136, -0.047, 1.8353], [0.4015, -0.0153, 2.3584], [0.2842, -0.6759, 1.974], [0.4416, -0.6841, 2.1632], [0.1844, -0.7457, 2.2528], [0.1817, -1.0036, 2.3306], [0.4469, -0.3877, 2.0485], [0.665, -0.2508, 2.0229], [0.7312, -0.5212, 2.0038], [0.8945, -0.3236, 1.9619], [0.8714, -0.404, 2.2226], [1.0353, -0.5449, 2.0925], [1.113, -0.3755, 2.2487], [1.0264, -0.6067, 2.3964], [1.207, -0.4979, 2.5102], [1.2895, -0.6967, 2.5022], [0.5658, -0.4088, 2.0745], [0.3802, -0.1863, 2.2057], [0.3924, -0.4657, 2.2333], [0.5453, -0.3266, 2.3436], [0.3334, -0.3406, 2.4314], [0.4747, -0.3063, 2.6592], [0.2977, -0.493, 2.7229], [0.3601, -0.3696, 2.9207], [0.5338, -0.4345, 3.1282], [0.6856, -0.5046, 2.0236], [0.5721, -0.5651, 2.2776], [0.6105, -0.8021, 2.0878], [0.5817, -1.0446, 2.3494], [0.4927, -1.065, 2.6198], [0.6104, -1.2984, 2.6422], [0.5834, -0.4502, 2.3691], [0.7461, -0.1909, 2.4065], [1.0258, -0.3414, 2.4547], [0.9866, -0.2784, 2.7111], [1.0498, -0.5757, 2.6501], [1.2621, -0.3764, 2.6633], [1.1539, -0.4904, 2.8532], [0.9735, -0.4507, 2.6806], [1.0667, -0.1989, 2.6912], [0.9179, -0.2947, 2.8802], [1.1762, -0.3406, 2.899], [0.5903, -0.446, 2.3969], [0.7916, -0.7967, 2.6822], [0.5504, -0.6863, 2.7355], [0.5745, -0.9438, 2.693], [0.6825, -0.7757, 2.8425], [0.637, -0.9877, 2.8796], [0.5633, -0.7714, 2.9975], [0.453, -0.9603, 2.9328], [0.742, -0.7272, 2.3976], [0.9395, -0.5885, 2.2819], [0.88, -0.6166, 2.5163], [0.9437, -0.7958, 2.5671], [1.1295, -0.701, 2.6387], [1.0688, -0.9143, 2.5563], [1.2152, -1.0571, 2.5977], [1.3512, -0.8685, 2.7763], [1.1203, -1.0591, 2.8324], [1.3922, -1.089, 2.7054], [0.8297, -0.471, 2.4963], [0.8367, -0.6855, 2.5996], [0.8086, -0.5134, 2.6787], [0.9806, -0.6625, 2.7014], [1.0143, -0.4079, 2.7168], [0.9226, -0.623, 2.9919], [1.1889, -0.6337, 2.9753], [1.0177, -0.4509, 3.1346], [1.0115, -0.6966, 3.0872], [0.9855, -0.5884, 3.2583], [0.7944, -0.7391, 2.6257], [1.1015, -0.9229, 2.7531], [1.0532, -0.9865, 2.947], [0.8933, -1.1915, 2.9283], [1.0199, -1.1314, 3.0751], [1.0424, -1.3203, 2.9577], [0.8276, -0.8823, 2.9213], [0.8768, -1.1021, 2.8397], [0.9667, -1.0049, 3.0402], [0.7475, -1.0533, 2.9774], [1.1503, -0.7535, 2.5535], [1.1047, -0.7085, 2.8773], [1.259, -0.5371, 2.8383], [1.2141, -0.7915, 2.9043], [1.4469, -0.6803, 2.9664], [1.2609, -0.7413, 3.1535], [1.5493, -0.7949, 3.1227], [1.0236, -0.9111, 2.7536], [1.2224, -0.7943, 2.8155], [0.9477, -0.7753, 2.926], [0.9599, -0.9453, 3.0234], [1.2547, -0.9451, 3.0297], [1.0667, -1.036, 3.128], [1.2252, -0.8934, 3.1966], [1.0213, -0.8893, 3.2708], [1.1839, -0.8657, 3.3688], [0.9769, -1.036, 3.3937], [1.0795, -0.897, 3.5085], [1.2509, -0.9642, 3.6065], [1.132, -1.0398, 2.8391], [1.3271, -0.9099, 2.6922], [1.2832, -0.9251, 2.9858], [1.2572, -1.1056, 2.7276], [1.4374, -1.0994, 2.7085], [1.58, -1.0757, 2.8487], [1.5629, -1.093, 3.0115], [1.4015, -1.2629, 3.0904], [1.5098, -1.3952, 3.0634], [1.4537, -0.9475, 2.8415], [1.2705, -0.8157, 3.0277], [1.388, -1.0473, 3.023], [1.5285, -0.8218, 3.0031], [1.3223, -0.9001, 3.2301], [1.4994, -1.0545, 3.1112], [1.6318, -1.1214, 3.2024], [1.7244, -1.0817, 3.3799], [1.3506, -0.8735, 3.2922], [1.5436, -1.0265, 2.9305], [1.4913, -1.0272, 3.0934], [1.5152, -1.1769, 2.9756], [1.2913, -1.2181, 3.2207], [1.4808, -1.3413, 3.0999], [1.2952, -1.3534, 3.2142], [1.5496, -1.3437, 3.2282], [1.5527, -1.2963, 3.377], [1.5003, -1.4424, 3.3289], [1.6366, -1.0225, 3.0533], [1.4463, -1.2147, 3.1897], [1.6811, -1.2167, 2.9833], [1.7768, -1.1431, 3.117], [1.7014, -1.3272, 3.16], [1.7632, -1.1103, 3.304], [1.5706, -1.3358, 3.3511], [1.6929, -1.3963, 3.3437], [1.8666, -1.2211, 3.3934], [1.8142, -1.382, 3.3914], [1.8072, -1.2131, 3.5389], [-0.1211, 0.3412, 1.9955], [-0.0995, 0.4514, 2.4234], [-0.3826, 0.3197, 2.2101], [-0.1041, 0.414, 2.0064], [-0.0856, 0.5581, 1.7784], [-0.187, 0.9266, 1.8912], [-0.1314, 0.8696, 2.1569], [0.0133, 1.1393, 2.3616], [-0.4172, 0.4526, 1.8568], [-0.5066, 0.4837, 2.3201], [-0.6835, 0.6391, 2.2401], [-0.7692, 0.4482, 2.4215], [-0.5884, 0.657, 2.5245], [-0.7602, 0.561, 2.7166], [-0.7807, 0.8141, 2.6776], [-0.3286, 0.6469, 2.034], [-0.3114, 0.7113, 2.3383], [-0.1228, 0.9158, 2.3869], [-0.1099, 0.977, 2.6782], [0.0214, 0.79, 2.801], [-0.7055, 0.9116, 2.1658], [-0.5257, 1.0823, 2.2081], [-0.7221, 1.1481, 2.0998], [-0.7045, 1.1112, 2.3932], [-0.5856, 1.3054, 2.2261], [-0.8172, 1.2851, 2.2978], [-0.6531, 1.3556, 2.4511], [-0.5208, 0.7265, 2.1242], [-0.3561, 0.5424, 2.307], [-0.5867, 0.8165, 2.4475], [-0.7176, 0.7764, 2.6532], [-0.5393, 0.6603, 2.7535], [-0.7372, 0.6812, 2.8624], [-0.5408, 0.7667, 2.9475], [-0.3241, 0.903, 2.0797], [-0.5296, 0.8788, 2.2968], [-0.2168, 0.8759, 2.2926], [-0.4163, 1.0203, 2.1816], [-0.3909, 0.9295, 2.4097], [-0.2534, 1.0422, 2.2738], [-0.4871, 1.145, 2.3739], [-0.2408, 1.0254, 2.5046], [-0.2777, 1.231, 2.3431], [-0.148, 1.1729, 2.508], [-0.1614, 1.3556, 2.5361], [-0.5998, 0.7399, 2.2957], [-0.6924, 0.9128, 2.168], [-0.6426, 0.8766, 2.4557], [-0.7132, 1.0443, 2.4913], [-0.8996, 1.1323, 2.3293], [-1.02, 1.0886, 2.4835], [-0.991, 1.2416, 2.5631], [-0.4086, 0.9131, 2.4076], [-0.5224, 1.1578, 2.4028], [-0.3944, 1.2844, 2.8246], [-0.6138, 1.1105, 2.7983], [-0.4819, 1.2609, 2.9215], [-0.5547, 1.0554, 3.0248], [-0.448, 1.1541, 2.3494], [-0.5781, 1.1738, 2.5003], [-0.7791, 1.2245, 2.4184], [-0.5356, 1.3013, 2.455], [-0.686, 1.3159, 2.5415], [-0.5953, 1.4045, 2.6294], [-0.6275, 1.6201, 2.4689], [-0.7967, 1.4753, 2.6754], [-0.7762, 1.6764, 2.5646], [-0.5817, 1.1028, 2.5469], [-0.7081, 1.307, 2.381], [-0.7496, 1.0565, 2.4809], [-0.8404, 1.2176, 2.4378], [-0.7721, 1.111, 2.6413], [-0.7668, 1.2242, 2.7844], [-0.901, 1.4268, 2.6411], [-0.9693, 1.2082, 2.7764], [-0.7708, 1.3627, 2.828], [-0.7029, 1.5036, 2.5635], [-0.514, 1.4892, 2.6498], [-0.4859, 1.3814, 2.8667], [-0.5406, 1.6634, 2.7709], [-0.4134, 1.5065, 2.9061], [-0.5516, 1.4535, 3.0544], [-0.4452, 1.6513, 2.9735], [-0.8503, 1.3702, 2.3552], [-0.8025, 1.3966, 2.6308], [-0.9296, 1.5812, 2.3848], [-0.944, 1.4748, 2.6318], [-1.0461, 1.5669, 2.5327], [-0.9775, 1.7467, 2.557], [-1.1281, 1.5563, 2.7156], [-1.0981, 1.7186, 2.6182], [-0.7542, 1.5727, 2.5482], [-0.6962, 1.4754, 2.7578], [-0.8985, 1.5472, 2.5853], [-0.7946, 1.6048, 2.7459], [-1.0176, 1.4965, 2.7011], [-1.0472, 1.4221, 2.8919], [-0.826, 1.5923, 2.9646], [-0.9521, 1.4664, 3.0058], [-0.934, 1.6822, 2.9953], [-0.819, 1.6463, 2.4983], [-0.9353, 1.5013, 2.6475], [-0.7381, 1.6548, 2.678], [-0.882, 1.5625, 2.765], [-0.8193, 1.7419, 2.6286], [-0.8154, 1.6604, 2.8002], [-0.8125, 1.757, 2.7999], [-1.0211, 1.8229, 2.7847], [-0.8468, 1.8927, 2.8311], [-1.0775, 1.7696, 2.94], [-0.8401, 1.7874, 2.9503], [-0.2056, -0.5379, 2.2352], [-0.1956, -0.8272, 2.4181], [-0.1629, -1.0876, 2.6729], [-0.217, -0.4606, 2.428], [-0.5019, -0.4584, 2.3907], [-0.3702, -0.4005, 2.6419], [-0.3336, -0.6474, 2.7659], [-0.445, -0.5607, 2.9344], [-0.6982, -0.5052, 2.9142], [-0.5705, -0.7259, 3.0502], [-0.5989, -0.4958, 3.0981], [-0.4454, -0.9901, 2.706], [-0.3006, -1.1329, 2.6742], [-0.5717, -1.1179, 2.686], [-0.4183, -1.1736, 2.8201], [-0.6307, -1.2844, 2.7146], [-0.5952, -1.2289, 2.9424], [-0.5718, -1.4399, 2.8128], [-0.5405, -1.139, 2.6949], [-0.4495, -1.0875, 2.8507], [-0.4573, -1.2929, 2.7323], [-0.3085, -1.1822, 2.8768], [-0.541, -1.2058, 2.9365], [-0.5339, -1.3194, 2.9958], [-0.4891, -1.2084, 3.1955], [-0.3643, -1.3604, 3.2434], [-0.8689, -1.1901, 2.616], [-0.7968, -1.3926, 2.7672], [-0.864, -1.1407, 2.8629], [-1.0328, -1.3886, 2.8306], [-1.0834, -1.4121, 3.0336], [-1.0864, -1.1655, 2.9951], [-1.2262, -1.3165, 2.9347], [-1.2882, -1.1328, 3.0051], [-1.0901, -1.4606, 2.696], [-0.9769, -1.7171, 2.6389], [-1.0238, -1.535, 2.8537], [-1.1624, -1.5962, 2.6567], [-1.0052, -1.6888, 2.8088], [-1.1463, -1.7303, 2.7345], [-1.0504, -1.6604, 2.9772], [-1.3031, -1.6146, 2.8244], [-1.115, -1.8382, 2.8693], [-0.2393, -0.2394, 2.474], [-0.4659, -0.3023, 2.535], [-0.2652, -0.4382, 2.616], [-0.2354, -0.1517, 3.1184], [-0.4801, -0.1386, 3.1841], [-0.6699, -0.5149, 2.7989], [-0.9026, -0.4742, 2.7156], [-0.7562, -0.4307, 2.9976], [-0.9607, -0.4767, 2.9475], [-0.8563, -0.2875, 3.094], [-1.062, -0.3056, 2.9674], [-0.8503, -0.6519, 2.8976], [-0.86, -0.5758, 3.1163], [-0.7616, -0.7903, 2.9984], [-0.8502, -0.813, 3.539], [-1.0504, -0.6784, 3.2685], [-1.2358, -0.538, 3.2915], [-1.1822, -0.4606, 3.4757], [-1.2125, -0.681, 3.5076], [-1.1339, -0.5144, 3.6972], [-1.3977, -0.5683, 3.5882], [-1.2332, -0.7184, 3.7454], [-0.9844, -0.5692, 3.4514], [-0.95, -0.3779, 3.6192], [-1.2039, -0.4256, 3.6764], [-1.0203, -0.5149, 3.7665], [-1.2151, -0.6381, 3.3846], [-1.3063, -0.7396, 3.3992], [-1.2346, -0.6572, 3.584], [-1.3846, -0.6514, 3.6159], [-1.4989, -0.7655, 3.6511], [-1.2927, -0.9338, 3.7987], [-0.1939, -0.9678, 2.7168], [-0.3821, -0.9604, 2.8428], [-0.1485, -0.9785, 2.9314], [-0.3773, -1.0274, 3.0669], [-0.2373, -1.2049, 2.9708], [-0.1682, -1.0882, 3.1529], [-0.4025, -1.2376, 3.1473], [-0.1018, -1.3125, 3.1584], [-0.3867, -0.9891, 3.1381], [-0.1547, -1.0816, 3.2117], [-0.2776, -1.3314, 3.009], [-0.447, -1.3844, 3.089], [-0.4695, -1.5936, 2.9253], [-0.3122, -1.5125, 3.1048], [-0.5291, -1.5296, 3.1131], [-0.4389, -1.5923, 3.0215], [-0.5595, -1.426, 3.1276], [-0.6554, -1.6228, 2.9516], [-0.1484, -1.5445, 3.1025], [-0.3758, -1.5849, 3.1067], [-0.4112, -1.7171, 3.1402], [-0.3548, -1.8234, 3.202], [-0.1846, -1.6791, 3.3428], [-0.5644, -1.207, 2.8779], [-0.5359, -1.4149, 2.8304], [-0.6014, -1.3852, 2.9816], [-0.8254, -1.3838, 2.9251], [-0.6843, -1.5507, 3.1512], [-0.8506, -1.3439, 3.189], [-0.861, -1.5749, 3.143], [-0.9676, -1.4436, 3.2379], [-0.7626, -1.6961, 2.8307], [-0.5475, -1.7963, 2.7963], [-0.7518, -1.8506, 2.806], [-0.5644, -1.8259, 2.9597], [-0.8, -1.7831, 3.0097], [-0.8851, -1.9048, 2.9961], [-0.6484, -2.0647, 3.0484], [-0.879, -2.0599, 3.0131], [-0.7003, -2.0056, 3.1779], [-0.9216, -1.9447, 3.1812], [-0.7878, -2.1643, 3.1234], [0.1986, 0.017, 2.4162], [0.54, 0.2566, 2.8848], [0.29, -0.0158, 2.4576], [0.4405, -0.2232, 2.3232], [0.3789, -0.2279, 2.5751], [0.7028, -0.3164, 2.8147], [0.7219, 0.1445, 2.6], [0.9084, 0.1107, 2.4389], [0.8798, 0.2996, 2.6033], [0.91, 0.0482, 2.692], [1.0674, 0.2015, 2.5758], [0.6988, 0.0308, 2.5153], [0.4502, 0.1717, 2.5661], [0.5999, 0.0004, 2.8419], [0.7328, -0.001, 3.0085], [0.6651, 0.2649, 3.1254], [0.6374, -0.1033, 2.6344], [0.8014, 0.0769, 2.7061], [0.9897, 0.032, 2.5459], [0.857, -0.0921, 2.7437], [1.0485, -0.0011, 2.7847], [0.9437, -0.2264, 2.7984], [1.1734, -0.1716, 2.7161], [1.0607, -0.1187, 2.9844], [0.8605, 0.0415, 2.5531], [0.6804, 0.2385, 2.6107], [0.8314, 0.0425, 2.7874], [0.8779, 0.2011, 2.5909], [0.7342, 0.2647, 2.8289], [0.936, 0.1122, 2.7572], [0.9399, 0.3081, 2.7397], [0.8536, 0.1876, 2.948], [1.0778, 0.144, 2.8131], [1.136, 0.2812, 2.9094], [0.8216, 0.1109, 2.7865], [0.776, -0.1394, 2.7833], [1.038, 0.0097, 2.8459], [0.7888, -0.0359, 2.9874], [0.7989, 0.0026, 3.159], [0.6854, -0.1828, 3.1187], [0.9954, 0.1136, 2.8366], [1.1327, -0.0249, 2.9094], [1.3563, -0.1158, 2.9341], [1.1663, -0.1397, 2.7946], [1.385, 0.0154, 2.8445], [1.2129, -0.1183, 2.9791], [1.3884, -0.2254, 2.8307], [1.4119, -0.0519, 3.0567], [1.143, -0.0256, 2.8525], [1.0389, 0.2409, 2.7929], [1.2803, 0.0579, 3.1013], [1.2962, 0.3446, 3.1098], [1.1843, 0.1419, 3.2552], [1.4209, 0.1609, 3.1364], [1.2567, 0.3071, 3.2787], [1.0675, -0.127, 2.9436], [1.3734, 0.0535, 3.0023], [1.2651, -0.139, 3.1527], [1.5117, -0.0904, 3.0005], [1.3741, 0.0507, 3.2214], [1.3562, -0.1201, 2.9882], [1.2271, -0.2348, 3.0726], [1.4348, -0.1016, 3.2079], [1.1474, -0.1584, 3.2867], [1.3793, 0.0932, 3.0265], [1.5176, 0.0363, 3.0169], [1.5741, 0.253, 2.9035], [1.4971, 0.1814, 3.1407], [1.3236, 0.1486, 3.0423], [1.4398, -0.0434, 2.9721], [1.3846, 0.0389, 3.1836], [1.4793, 0.1878, 3.0972], [1.5092, -0.0144, 3.1407], [1.6298, 0.1943, 3.207], [1.5467, 0.0273, 3.3139], [1.7721, 0.0701, 3.2195], [1.6089, 0.2112, 3.3946], [-0.1157, 0.252, 2.4465], [-0.3826, 0.2226, 2.4112], [-0.3914, 0.523, 2.6351], [-0.5688, 0.4539, 2.8062], [-0.2139, 0.1637, 2.6306], [-0.3672, -0.2267, 2.9289], [-0.3395, -0.0121, 3.0986], [-0.2569, 0.5014, 2.7961], [-0.2165, 0.2909, 3.0448], [-0.0672, 0.5156, 2.9737], [-0.2808, 0.5132, 3.0742], [-0.3329, 0.2586, 2.7869], [-0.6051, 0.1895, 2.9298], [-0.4632, 0.4639, 2.8916], [-0.7351, 0.4402, 2.8872], [-0.4434, 0.2303, 2.9373], [-0.7129, 0.3533, 2.8884], [-0.399, 0.2776, 2.8259], [-0.3651, -0.0053, 2.8023], [-0.3015, 0.0059, 3.0052], [-0.3071, -0.0168, 3.197], [-0.3886, 0.2675, 3.2471], [-0.3149, 0.4515, 2.8683], [-0.2965, 0.3827, 3.097], [-0.2592, 0.5308, 3.1471], [-0.451, 0.6508, 3.1643], [-0.345, 0.5267, 3.3346], [-0.4289, 0.0987, 3.0017], [-0.6927, 0.3306, 3.0563], [-0.6025, 0.2613, 3.2116], [-0.7697, 0.2341, 3.1164], [-0.3397, 0.306, 3.038], [-0.47, 0.1952, 3.1885], [-0.6098, 0.4178, 3.2091], [-0.3702, 0.2642, 3.2776], [-0.3677, 0.5389, 3.1986], [-0.516, 0.3912, 3.3417], [-0.4357, 0.5474, 3.3271], [-0.6149, 0.4321, 2.9406], [-0.6739, 0.2757, 3.1372], [-0.7925, 0.404, 3.0101], [-0.7105, 0.5718, 3.1277], [-0.8446, 0.4195, 3.2133], [-0.8793, 0.6443, 3.2065], [-0.7488, 0.6752, 3.3557], [-0.6786, 0.2158, 3.1224], [-0.561, 0.4083, 3.3281], [-0.654, 0.2083, 3.2917], [-0.6997, 0.4548, 3.3484], [-0.899, 0.2722, 3.2806], [-0.8123, 0.4699, 3.3917], [-0.8563, 0.2586, 3.4226], [-0.9246, 0.3897, 3.4587], [-0.5839, 0.4947, 3.2379], [-0.6807, 0.4141, 3.3741], [-0.6598, 0.6054, 3.2254], [-0.857, 0.4852, 3.3248], [-0.5915, 0.5501, 3.4311], [-0.8795, 0.6195, 3.3761], [-0.8626, 0.579, 3.1794], [-0.8261, 0.3399, 3.3355], [-0.7285, 0.5932, 3.3569], [-0.7874, 0.4205, 3.4396], [-0.9462, 0.4752, 3.3804], [-0.8923, 0.6307, 3.3643], [-1.0158, 0.6186, 3.4529], [0.0871, -0.2724, 3.0002], [-0.1742, -0.287, 3.1729], [0.037, -0.2994, 2.7593], [-0.1356, -0.408, 2.8309], [-0.2932, -0.5867, 2.6986], [0.1859, -0.3455, 2.6759], [-0.0927, -0.5544, 2.8485], [-0.1536, -0.2823, 3.1469], [-0.0529, -0.6648, 2.8182], [0.1455, -0.6969, 2.8904], [-0.0354, -0.6595, 3.0701], [-0.0861, -0.819, 2.901], [0.0222, -0.8518, 3.0969], [-0.0707, -0.6955, 2.9524], [0.0303, -0.9229, 3.0611], [0.1249, -0.3717, 2.9875], [-0.0576, -0.5723, 3.0207], [0.1823, -0.604, 3.0104], [0.0326, -0.4183, 3.146], [0.0046, -0.516, 3.2547], [0.1765, -0.4883, 3.3686], [-0.1173, -0.5815, 3.2317], [-0.0602, -0.7991, 3.2864], [-0.273, -0.5851, 3.2463], [-0.2278, -0.8415, 3.2094], [0.0191, -0.8684, 2.9462], [0.2159, -0.7037, 3.1205], [-0.0543, -0.8617, 3.1814], [0.0153, -0.9454, 3.1403], [0.2166, -0.906, 3.1696], [0.1237, -1.0431, 3.1634], [0.128, -0.8038, 3.1861], [-0.1461, -0.7556, 3.2078], [0.1033, -0.9758, 3.3353], [-0.1257, -0.9017, 3.421], [-0.159, -0.8553, 3.2125], [-0.126, -0.7439, 3.3356], [-0.1667, -0.9376, 3.3684], [-0.0203, -0.8632, 3.2523], [-0.0269, -1.0486, 3.1212], [-0.1435, -0.9675, 3.3399], [-0.0301, -1.1746, 3.1966], [0.1444, -0.9991, 3.2747], [-0.1177, 0.3268, 2.995], [-0.0674, 0.5296, 3.1534], [-0.0805, 0.3798, 3.0864], [0.1133, 0.2458, 3.2089], [0.341, 0.2719, 3.1465], [0.4488, 0.0462, 3.2882], [0.1846, 0.3824, 3.2847], [0.3308, 0.5146, 3.1247], [0.1168, 0.5616, 3.2209], [0.3051, 0.4815, 3.3383], [0.2909, 0.3639, 3.36], [0.1753, 0.4338, 3.4675], [0.3568, 0.6298, 3.5499], [0.3707, 0.4382, 3.6664], [0.3592, 0.4371, 3.59], [0.5289, 0.5342, 3.532], [0.5776, 0.3765, 3.3275], [0.5952, 0.6315, 3.2042], [0.5609, 0.531, 3.4381], [0.701, 0.4476, 3.2585], [0.6751, 0.4226, 3.4901], [0.6974, 0.6176, 3.5311], [0.5604, 0.7543, 3.2973], [0.6072, 0.5834, 3.5136], [0.7149, 0.6749, 3.2845], [0.562, 0.7713, 3.446], [0.7316, 0.5862, 3.4583], [0.8604, 0.6322, 3.4245], [0.7178, 0.8685, 3.4844], [0.7501, 0.628, 3.621], [0.8887, 0.788, 3.4282], [0.2002, 0.5203, 3.3271], [0.2209, 0.2519, 3.3784], [0.3867, 0.4651, 3.4039], [0.1739, 0.4471, 3.465], [0.2979, 0.2899, 3.4983], [0.1342, 0.3668, 3.632], [0.2064, 0.5741, 3.5262], [0.3287, 0.7186, 3.6397], [0.4134, 0.7355, 3.4402], [0.1133, 0.72, 3.5285], [0.3899, 0.6002, 3.6255], [0.3092, 0.8173, 3.4753], [0.1985, 0.6722, 3.6444], [0.3006, 0.6457, 3.748], [0.2244, 0.8007, 3.7039], [-0.1759, 0.1151, 3.1479], [-0.3238, 0.245, 3.1906], [-0.574, 0.1612, 3.2731], [-0.5589, -0.1872, 2.9765], [-0.7081, -0.117, 3.1726], [-0.6563, -0.3695, 3.1836], [-0.9206, -0.2242, 3.1101], [-0.8589, -0.0596, 3.2682], [-0.7511, -0.362, 3.1597], [-0.902, -0.2831, 3.167], [-0.1788, -0.2789, 3.1621], [-0.3196, -0.2059, 3.3387], [-0.523, -0.1054, 3.1898], [-0.176, -0.2139, 3.4611], [-0.1918, -0.4136, 3.4206], [-0.3441, -0.4396, 3.4855], [-0.1582, -0.3743, 3.5759], [-0.5391, -0.3412, 3.5243], [-0.6449, -0.4255, 3.4902], [-0.4501, -0.5834, 3.5109], [-0.4384, -0.3724, 3.6472], [-0.6551, -0.501, 3.5352], [-0.4197, -0.5762, 3.6531], [-0.5688, -0.3919, 3.6365], [-0.5768, -0.1248, 3.0494], [-0.5333, -0.05, 3.3596], [-0.6313, 0.0886, 3.1123], [-0.5812, 0.0786, 3.3307], [-0.609, -0.0793, 3.3338], [-0.674, 0.1347, 3.2526], [-0.6218, 0.0176, 3.3765], [-0.7635, 0.1399, 3.2429], [-0.7653, -0.063, 3.373], [-0.6206, 0.1477, 3.4182], [-0.8581, 0.0672, 3.2991], [0.1391, 0.2195, 3.4308], [0.0185, 0.2266, 3.3097], [0.0655, -0.1367, 3.3106], [0.1115, 0.0726, 3.473], [-0.1466, 0.1159, 3.5468], [0.0373, -0.0797, 3.6009], [0.0338, 0.1962, 3.5687], [-0.1484, -0.0049, 3.6756], [0.0787, -0.116, 3.5958], [-0.0866, 0.0641, 3.6607], [-0.1033, -0.1345, 3.6173], [0.1024, -0.022, 3.7041], [-0.1438, -0.1096, 3.7073], [0.0434, 0.0453, 3.758], [-0.1832, 0.1757, 3.543], [-0.2341, -0.0922, 3.6188], [-0.06, 0.1014, 3.679], [-0.1907, -0.0362, 3.7233], [-0.0402, 0.1698, 3.7264], [-0.3286, 0.0987, 3.7275]], u: [[0.0103, -0.2104, 0.0216], [0.2259, 0.0699, 0.086], [-0.0036, 0.1522, -0.212], [0.1909, 0.1537, 0.0189], [0.1057, -0.0978, 0.1266], [-0.1195, -0.0283, 0.223], [0.1849, 0.1632, 0.0022], [-0.0676, -0.073, 0.181], [-0.058, -0.1497, -0.1514], [0.0416, 0.1864, -0.0867], [0.2189, 0.0122, -0.0181], [-0.0562, 0.0512, 0.1635], [-0.0361, 0.2436, -0.0267], [0.196, 0.0996, 0.1225], [0.1962, -0.1743, 0.0201], [-0.0282, -0.1149, -0.1924], [0.1589, 0.0834, -0.1422], [-0.112, 0.1423, 0.1093], [0.1946, -0.0922, 0.127], [0.0456, -0.0095, -0.1584], [0.1863, -0.0472, 0.0028], [0.1701, -0.1099, 0.0953], [0.0926, -0.1235, 0.06], [-0.0128, -0.2239, -0.1013], [-0.172, -0.1691, 0.1017], [0.0714, 0.1271, -0.0847], [-0.1423, 0.0743, 0.0856], [0.0686, -0.1553, 0.1268], [-0.1961, -0.0816, 0.1583], [0.1092, -0.1454, -0.0774], [-0.01, 0.1549, -0.1874], [0.1245, 0.0013, -0.1089], [-0.0199, -0.031, 0.1755], [0.131, -0.0932, -0.0606], [-0.0628, -0.1404, -0.095], [0.081, -0.1363, 0.0115], [0.1134, 0.1102, 0.0337], [0.195, 0.0475, 0.0763], [-0.1184, 0.1439, -0.0292], [0.1556, 0.1631, -0.0259], [0.1215, -0.0605, 0.1381], [0.1663, 0.097, -0.0264], [0.1792, -0.0817, 0.1484], [-0.0996, 0.0645, 0.1888], [-0.1079, -0.1833, -0.0526], [-0.0868, -0.1067, 0.1596], [0.2325, -0.0564, -0.0581], [-0.0198, 0.2285, -0.0833], [0.1616, 0.0904, 0.0055], [-0.1036, 0.0016, 0.2051], [0.1412, -0.1502, -0.004], [-0.0673, -0.1418, -0.0973], [0.0744, 0.1582, -0.1591], [-0.0427, 0.0917, 0.1786], [-0.0987, -0.0611, 0.2164], [0.033, -0.1533, 0.0924], [0.0164, 0.0017, -0.1778], [0.2036, 0.0566, -0.0836], [0.1318, -0.0661, 0.1736], [-0.1003, -0.208, 0.1236], [-0.09, 0.0365, 0.1552], [0.2053, -0.0201, 0.0468], [0.1788, 0.1023, -0.0162], [-0.0964, 0.0921, 0.1031], [0.1685, -0.109, 0.1675], [0.0652, 0.0112, -0.1793], [0.0224, -0.2247, -0.0565], [0.1206, 0.1399, -0.1055], [0.1436, 0.0325, 0.0688], [-0.1616, 0.1236, 0.0767], [-0.0248, 0.1805, -0.1135], [0.1418, 0.145, 0.0933], [-0.1354, 0.0989, 0.0907], [-0.1337, -0.0938, 0.0954], [0.2087, -0.0934, 0.1317], [-0.0606, 0.0086, 0.1528], [0.1973, -0.1206, -0.0439], [-0.0081, -0.1616, -0.0332], [-0.0075, 0.1372, -0.1726], [0.1395, 0.0424, -0.0688], [0.1134, -0.1447, 0.0463], [0.0417, 0.039, -0.1789], [0.1721, -0.0498, -0.0396], [0.0413, -0.1499, 0.133], [0.1538, 0.0808, -0.038], [0.1304, -0.1166, 0.0247], [0.0178, 0.1088, -0.2354], [0.2426, -0.0027, -0.0403], [0.0094, -0.1091, -0.1257], [-0.1405, 0.1282, -0.0789], [0.1492, -0.0781, 0.184], [-0.0817, -0.165, 0.04], [-0.1047, 0.0425, 0.1759], [-0.059, -0.1671, -0.0221], [-0.0787, 0.1739, 0.1674], [-0.0996, 0.2134, -0.0721], [0.0565, 0.0373, -0.2561], [0.1217, 0.1185, -0.0028], [-0.2009, 0.1222, 0.0593], [0.1082, 0.0014, 0.1933], [-0.1398, 0.0356, 0.1404], [0.035, -0.2028, 0.0285], [0.029, 0.0682, -0.1617], [-0.1526, 0.1459, 0.1029], [0.1158, -0.1082, 0.138], [-0.1236, -0.0135, 0.193], [-0.1597, 0.0956, 0.1698], [-0.0453, -0.2066, -0.0356], [0.0925, 0.0664, -0.2145], [0.1877, 0.028, 0.0489], [-0.0896, 0.1622, 0.1065], [0.044, -0.1707, 0.1831], [0.1068, -0.0026, -0.2061], [0.0788, -0.2448, -0.019], [0.2216, 0.0199, -0.135], [0.0533, -0.1635, -0.0093], [0.2104, 0.1348, 0.0318], [0.167, -0.1061, -0.0789], [0.0284, -0.1984, 0.0814], [0.0863, 0.0873, -0.1758], [0.1937, 0.0241, -0.0086], [0.1127, 0.1393, -0.0165], [0.1635, -0.0917, 0.0595], [-0.021, -0.222, -0.056], [0.0607, 0.0853, -0.1364], [-0.0765, 0.1565, 0.1381], [-0.0299, 0.185, -0.137], [0.1276, 0.0906, 0.0341], [-0.1207, 0.0194, 0.1769], [0.1247, -0.0914, 0.0555], [-0.0282, -0.1886, -0.1081], [0.0319, 0.0995, -0.1339], [0.0961, 0.1059, 0.0751], [-0.0875, -0.1206, 0.1275], [0.2244, -0.0864, -0.0532], [0.0005, -0.0924, -0.1741], [0.215, 0.0426, 0.0516], [-0.102, -0.008, 0.184], [0.0859, -0.1588, -0.0107], [-0.1142, -0.1146, -0.1664], [0.1459, -0.0875, -0.1341], [-0.0323, 0.2478, 0.0045], [-0.0895, -0.0736, 0.2439], [-0.0098, -0.154, -0.1854], [0.1903, -0.1375, -0.0249], [-0.0257, -0.1931, 0.0858], [0.0635, -0.0288, 0.2313], [0.198, -0.0185, -0.1438], [0.0112, -0.1844, -0.1051], [0.1594, 0.1516, -0.0898], [-0.0382, 0.0468, 0.2214], [-0.0495, -0.1935, -0.0437], [-0.034, 0.1037, -0.2092], [0.0693, -0.1818, 0.0659], [0.1544, 0.2055, -0.0286], [-0.1248, -0.0381, 0.2356], [0.1892, -0.0871, -0.0247], [0.012, 0.1242, -0.1118], [0.202, 0.0509, -0.0391], [0.1419, 0.127, 0.0309], [-0.1071, -0.0566, 0.2337], [0.1491, -0.1165, -0.0224], [-0.0645, -0.1405, -0.1377], [-0.0445, 0.0561, 0.2181], [0.1437, -0.1933, 0.0394], [-0.1093, -0.2167, 0.0416], [0.0467, 0.0594, -0.2319], [-0.0795, -0.1594, -0.0094], [0.2388, -0.0522, 0.0727], [0.124, 0.1245, 0.0137], [-0.0327, -0.0721, 0.1657], [-0.0291, 0.1629, -0.0797], [0.1898, 0.0686, -0.0341], [0.0853, -0.1779, 0.0656], [-0.1551, -0.1173, -0.0607], [0.0901, -0.0927, 0.2067], [-0.0336, -0.0514, -0.1789], [-0.1789, 0.0221, -0.013], [-0.0015, 0.1221, -0.1548], [0.088, 0.1271, 0.0409], [-0.1833, 0.0379, 0.0871], [0.0986, -0.0958, 0.1371], [-0.1125, -0.0594, 0.1277], [0.1664, 0.0424, 0.117], [-0.1376, -0.1077, -0.1305], [-0.0735, 0.1793, -0.1785], [-0.1556, -0.1523, 0.0587], [0.018, 0.1515, 0.1214], [-0.1691, 0.0429, -0.116], [-0.174, -0.0373, 0.0207], [0.0494, 0.0433, 0.1797], [-0.1201, 0.1279, 0.0872], [-0.2271, 0.083, 0.0569], [-0.091, -0.1429, -0.1652], [-0.1743, 0.0217, 0.0172], [0.0528, -0.157, 0.2001], [0.0226, -0.1988, -0.0996], [-0.2012, -0.1233, 0.0743], [0.084, 0.0159, 0.1476], [0.0081, -0.166, 0.1136], [0.1361, 0.1553, 0.1342], [0.0466, 0.0487, -0.2128], [-0.0904, -0.2447, 0.0242], [-0.1722, 0.0034, 0.0182], [0.0989, 0.0284, 0.1977], [0.0623, -0.2127, 0.0709], [0.1102, 0.1132, 0.0779], [-0.1491, 0.0906, -0.0128], [-0.1246, 0.0773, -0.0934], [-0.1423, 0.1547, 0.0075], [-0.1207, -0.2243, -0.0144], [-0.0263, -0.0682, -0.2107], [0.0055, 0.134, -0.1135], [-0.1799, -0.1025, -0.0209], [0.0389, -0.0404, 0.2565], [0.0568, -0.162, -0.0553], [0.0561, 0.137, -0.0593], [0.1236, 0.0703, 0.0821], [0.0285, -0.1539, -0.0666], [-0.0437, 0.1427, -0.1309], [0.1309, 0.146, 0.0475], [-0.1363, -0.0006, 0.1751], [-0.1135, -0.1085, -0.0331], [-0.0038, -0.0924, -0.1928], [-0.1095, 0.0945, -0.1704], [0.0031, -0.1517, -0.0488], [0.0005, 0.0204, -0.2593], [-0.1033, 0.1951, -0.0574], [0.0385, 0.0967, 0.1312], [-0.2152, 0.0607, -0.0586], [0.0146, 0.1154, -0.1949], [-0.159, -0.0401, -0.0531], [-0.0964, 0.102, 0.0909], [0.1084, 0.2277, 0.071], [0.0971, 0.0041, 0.1918], [-0.1597, 0.0514, 0.0119], [-0.0062, 0.2211, -0.0619], [-0.1999, -0.0213, -0.0066], [0.049, -0.202, -0.1153], [-0.1346, -0.091, 0.0302], [0.1176, 0.0029, 0.2299], [-0.1408, 0.149, -0.0559], [0.1152, 0.187, 0.0364], [-0.2144, 0.0229, 0.0251], [0.0045, -0.1861, 0.0196], [-0.1517, -0.0558, 0.1304], [0.2189, 0.047, 0.1442], [-0.1306, 0.225, 0.0072], [0.0366, 0.096, -0.1968], [0.132, 0.113, 0.0306], [-0.1631, 0.0925, 0.0891], [0.0946, -0.0533, 0.1466], [-0.018, -0.2264, -0.0092], [-0.1286, 0.0613, -0.1037], [0.0314, 0.2312, -0.0996], [-0.0669, 0.1385, 0.1081], [-0.1719, -0.103, -0.1403], [-0.1135, -0.2198, 0.0112], [0.0233, 0.1833, -0.1926], [0.0029, 0.006, -0.1665], [-0.1894, 0.1751, 0.0267], [-0.089, -0.165, -0.1397], [0.1325, -0.1428, 0.1733], [0.0354, -0.2054, -0.081], [-0.0667, 0.1509, 0.0439], [0.1208, 0.132, -0.1275], [-0.1144, 0.122, 0.0494], [0.0055, 0.1098, -0.1322], [-0.1617, -0.0035, 0.0963], [0.0189, -0.2195, 0.0965], [-0.2561, -0.0108, 0.0217], [0.0824, 0.0404, 0.2427], [0.0734, -0.1585, 0.0493], [0.0834, 0.1649, 0.1105], [-0.097, -0.1586, -0.1419], [-0.0017, 0.0301, -0.2495], [-0.1446, 0.0941, -0.0853], [-0.0832, 0.145, 0.1982], [-0.1629, -0.0512, -0.1622], [0.0005, 0.0953, -0.1367], [-0.121, 0.1657, 0.0201], [-0.0996, -0.1342, -0.0419], [-0.1856, 0.1041, -0.0961], [-0.1577, 0.1965, -0.0078], [-0.1467, 0.1883, -0.1011], [0.0676, 0.108, -0.12], [0.0999, 0.184, 0.0798], [-0.0657, 0.0599, -0.2114], [0.0422, -0.2411, 0.0172], [-0.181, -0.1228, 0.1043], [-0.2106, 0.1478, -0.0048], [0.0043, 0.1005, -0.131], [-0.0726, -0.2252, -0.0962], [-0.1937, -0.0263, 0.0674], [-0.0863, 0.1775, 0.038], [0.0889, 0.1006, 0.1119], [-0.0695, 0.1406, -0.0376], [-0.1188, -0.1603, 0.0268], [0.0455, 0.1269, 0.1936], [0.0214, 0.122, -0.1571], [0.0209, -0.1583, -0.0461], [-0.1688, -0.0856, -0.0204], [0.0612, 0.0071, 0.2152], [0.0809, 0.129, -0.0924], [-0.0535, -0.177, -0.1765], [-0.0181, 0.0901, -0.2147], [0.0525, 0.1166, -0.1468], [0.2017, 0.0464, -0.0271], [-0.0901, 0.0165, 0.1565], [0.0604, 0.142, 0.0662], [0.1501, -0.0387, 0.1004], [-0.1907, -0.0213, 0.1387], [-0.148, -0.099, 0.0062], [0.0018, 0.1391, -0.222], [0.0602, 0.1015, 0.1147], [0.0325, -0.2338, 0.0464], [0.1346, 0.0667, -0.0647], [0.0172, 0.0023, -0.2144], [0.0953, -0.1511, -0.0456], [0.1119, 0.1165, 0.0791], [-0.0815, -0.1576, 0.1894], [-0.0116, -0.0692, -0.1513], [0.0318, -0.1541, 0.0356], [0.1692, -0.1025, 0.0672], [-0.0806, 0.2115, 0.1295], [0.0634, 0.1525, -0.0523], [0.1441, 0.0495, 0.0845], [-0.1402, 0.0468, 0.0811], [-0.0579, -0.1349, -0.122], [-0.1759, -0.0946, 0.0836], [-0.0798, 0.1176, 0.1278], [0.168, 0.0788, 0.1799], [0.1733, -0.046, -0.07], [0.0321, 0.0059, -0.2063], [0.0347, 0.2018, 0.12], [0.1073, 0.1813, 0.0583], [-0.1552, -0.0041, 0.0847], [-0.0446, 0.2035, 0.0105], [-0.1029, -0.0436, 0.23], [0.0286, -0.2301, -0.0868], [0.168, 0.0016, -0.0564], [-0.0191, -0.109, -0.1961], [-0.0172, 0.2533, -0.0375], [0.2178, 0.0651, -0.0147], [0.0201, 0.0361, -0.1669], [0.0582, -0.1712, 0.1299], [0.1377, 0.1486, 0.0298], [-0.1104, -0.0012, 0.1688], [0.1884, -0.085, 0.0712], [-0.1182, 0.1113, 0.171], [0.1981, -0.0984, 0.1253], [-0.113, 0.0868, 0.1269], [0.065, 0.2297, -0.0048], [0.0974, 0.0249, 0.1456], [0.0716, -0.2111, 0.0772], [0.009, -0.1065, -0.1749], [-0.1383, -0.1207, 0.022], [-0.0657, -0.2011, 0.0764], [0.1478, 0.0205, -0.1073], [-0.0141, -0.0161, -0.1828], [-0.0593, -0.1208, 0.1656], [-0.0867, -0.0894, -0.1863], [0.0457, 0.1525, -0.0287], [-0.0414, 0.2202, 0.053], [0.1966, 0.0738, 0.142], [-0.1428, -0.1436, 0.1704], [0.1958, -0.1425, -0.0503], [0.023, -0.176, -0.0438], [0.0359, 0.1271, -0.1223], [-0.1182, 0.0766, 0.1088], [0.0916, -0.1376, 0.078], [-0.1142, -0.1955, -0.0352], [-0.1066, -0.0963, 0.1246], [0.2322, -0.0999, 0.0386], [0.0182, -0.1607, -0.1935], [0.0449, 0.155, -0.0708], [-0.1175, 0.027, 0.1818], [-0.1711, -0.029, 0.0919], [0.2208, -0.0534, 0.0499], [-0.0989, -0.041, -0.1447], [-0.1406, -0.1845, 0.0731], [0.0216, -0.0025, -0.1761], [0.0175, 0.1948, 0.0347], [-0.1385, 0.1032, 0.154], [0.0482, 0.1559, 0.0175], [0.097, 0.013, 0.1918], [-0.1744, -0.0135, 0.0437], [0.1715, -0.0283, -0.1012], [-0.0514, 0.0103, 0.2062], [-0.0762, -0.2355, -0.0808], [0.0248, 0.1078, -0.1282], [0.1525, 0.0703, 0.0278], [-0.1231, -0.0006, 0.2369], [0.1711, -0.0188, 0.0121], [0.0764, 0.1381, -0.036], [0.1847, 0.0336, 0.0616], [-0.1938, 0.0731, 0.1535], [-0.1995, -0.1138, 0.1104], [0.1919, -0.0981, 0.0571], [0.0733, 0.1865, -0.0562], [0.1366, 0.0239, 0.0811], [-0.1415, 0.0462, 0.119], [-0.0753, -0.1097, -0.1369], [-0.2047, -0.1047, 0.1151], [0.0668, -0.1151, -0.1557], [0.1627, 0.0607, 0.1581], [-0.0893, -0.1999, 0.0815], [0.1421, 0.0029, -0.1296], [-0.0509, -0.0094, -0.2549], [0.0161, 0.2073, 0.1055], [0.1307, -0.1158, -0.1736], [0.2245, 0.0075, -0.053], [0.1235, 0.0632, 0.0831], [-0.1159, -0.1431, 0.1605], [0.0327, 0.2519, -0.0311], [0.2118, -0.0162, -0.0511], [-0.0743, 0.1555, 0.142], [0.0455, -0.1634, 0.0772], [0.1958, 0.1384, -0.0098], [-0.1231, 0.037, 0.233], [0.074, -0.1568, 0.0036], [0.1555, -0.1607, -0.0453], [0.1961, -0.0008, 0.0369], [-0.1406, 0.0655, 0.1079], [0.239, -0.0065, 0.0254], [0.1369, 0.0726, 0.1739], [0.1486, -0.0758, -0.0343], [-0.1861, -0.0206, 0.1736], [-0.0653, 0.1619, 0.0233], [-0.1897, -0.1358, 0.0668], [0.1533, -0.1039, 0.0542], [0.158, 0.0159, 0.1572], [0.0859, -0.1373, 0.0188], [0.1617, 0.1204, 0.0457], [-0.1198, -0.1224, 0.204], [0.1726, -0.1083, -0.101], [0.2284, 0.0434, -0.009], [0.0784, -0.1682, -0.0231], [0.141, 0.1417, 0.1352], [-0.137, -0.1475, 0.1639], [0.0163, 0.1884, -0.0528], [0.2044, 0.0615, 0.0852], [0.1029, -0.1269, 0.0086], [-0.0753, -0.1176, -0.1672], [-0.0533, -0.1578, -0.0712], [0.1958, 0.1301, 0.0464], [-0.1753, 0.029, -0.0366], [-0.0621, -0.0304, -0.1815], [-0.0765, -0.1005, 0.1519], [0.0947, -0.1988, 0.1302], [0.0297, -0.0041, -0.1642], [0.137, 0.0347, 0.2205], [-0.1852, 0.0474, -0.1347], [0.062, -0.0011, 0.191], [-0.0943, 0.1684, -0.0213], [-0.1484, -0.1318, 0.1232], [0.1418, 0.1065, 0.1652], [0.0099, 0.117, -0.2223], [-0.0137, -0.173, -0.0555], [-0.1237, 0.149, 0.0178], [-0.1773, 0.0478, 0.1575], [-0.0081, -0.2023, -0.0065], [-0.0824, 0.164, 0.1022], [-0.0567, 0.1251, -0.1662], [-0.169, -0.0218, 0.0878], [0.1197, 0.1163, 0.1016], [-0.1132, 0.1216, -0.0904], [0.0658, 0.0074, -0.2575], [0.1149, 0.1752, -0.0191], [-0.1761, 0.0633, 0.0239], [0.0741, 0.0645, 0.1741], [-0.1896, 0.0585, -0.0122], [0.0653, -0.1957, 0.1605], [-0.1168, 0.1477, 0.0352], [-0.2159, 0.0635, 0.0583], [0.0435, -0.1036, 0.1179], [-0.1858, -0.0974, 0.1061], [0.1025, 0.0058, 0.1304], [-0.0957, -0.1426, 0.1165], [-0.1916, 0.0604, 0.1432], [0.221, 0.0072, 0.1045], [-0.0583, 0.1525, -0.0793], [0.035, 0.0207, -0.1926], [0.1384, 0.0792, -0.0304], [-0.1916, 0.1637, 0.0603], [0.1259, -0.0497, 0.1914], [-0.0615, -0.1828, 0.0692], [0.2078, 0.0238, 0.071], [0.1417, 0.1395, -0.0274], [-0.1478, -0.1672, 0.0928], [-0.1623, 0.0095, -0.1376], [0.0395, 0.0681, -0.221], [0.0397, 0.0625, 0.1566], [-0.1552, 0.1476, -0.1076], [-0.1824, 0.0012, -0.0307], [-0.0549, 0.1484, -0.0166], [0.1203, -0.0705, 0.0984], [0.0323, -0.2289, -0.008], [-0.0567, 0.1725, 0.1354], [-0.1871, 0.0318, 0.1064], [0.0055, -0.2029, -0.0906], [0.1019, 0.0923, -0.128], [0.1432, 0.1166, 0.0135], [-0.0, -0.0482, -0.199], [-0.2393, 0.0206, 0.0668], [0.1048, 0.0744, 0.1003], [0.0709, 0.0102, -0.1673], [-0.0742, 0.0154, -0.1909], [-0.0352, -0.2396, 0.0605], [-0.1888, 0.0071, 0.1821], [-0.1493, 0.1937, -0.0448], [0.0401, -0.0402, 0.1878], [-0.0921, 0.2211, -0.0681], [-0.1094, -0.131, 0.0355], [-0.1553, 0.0573, -0.0874], [0.0254, 0.1036, -0.1516], [0.0849, -0.0177, 0.2148], [0.0716, -0.2321, 0.0222], [-0.1438, -0.0866, 0.1186], [0.1413, 0.0982, 0.1469], [-0.1134, 0.1982, -0.0318], [0.1287, 0.1079, -0.0072], [0.1475, -0.1048, 0.1794], [-0.0634, -0.2493, 0.0], [0.2137, -0.0061, 0.0874], [-0.0041, 0.1174, -0.1905], [0.1354, 0.1275, 0.029], [-0.1554, 0.0043, -0.1824], [0.0612, -0.0096, -0.1839], [-0.111, 0.132, -0.1856], [-0.0978, -0.0466, 0.13], [-0.1776, 0.0142, -0.0469], [0.038, -0.2039, 0.0619], [-0.2191, -0.0786, 0.1268], [-0.1307, 0.0859, -0.059], [-0.0108, -0.2031, -0.0096], [0.1377, 0.04, 0.2215], [-0.1111, 0.1211, -0.0469], [-0.0778, -0.1666, -0.0941], [-0.199, 0.004, -0.0084], [-0.1735, -0.1421, 0.1129], [0.1415, 0.0757, 0.1693], [-0.0004, 0.1161, -0.1428], [-0.0395, -0.1641, -0.0859], [0.0053, -0.158, 0.094], [-0.1471, -0.062, 0.0882], [0.1346, 0.1213, 0.1108], [0.0296, 0.0519, -0.1894], [-0.0692, -0.1655, 0.0168], [0.1, 0.0041, 0.1612], [0.1256, 0.0697, 0.0732], [-0.1526, 0.141, 0.0242], [-0.0882, -0.2003, -0.0278], [-0.2199, 0.0148, 0.1431], [0.1055, 0.0173, 0.123], [-0.1246, -0.103, -0.0065], [0.101, 0.1497, 0.0393], [-0.0417, 0.2422, 0.0168], [0.0947, 0.0305, 0.1337], [-0.2526, 0.0586, 0.0074], [-0.0012, -0.1856, -0.1919], [0.1345, -0.1081, 0.182], [0.0982, 0.0303, 0.1552], [-0.2092, 0.1058, 0.0486], [0.0001, 0.1912, -0.1481], [-0.0028, -0.1227, -0.1191], [-0.121, -0.0095, 0.2366], [0.1133, -0.0673, 0.1253], [-0.2283, 0.0145, 0.0962], [-0.0283, -0.0323, -0.1833], [-0.2328, -0.0784, -0.0089], [-0.1298, 0.0776, 0.1922], [0.0683, 0.1578, 0.0402], [-0.1618, -0.1022, 0.0236], [-0.0499, 0.0476, 0.151], [0.0646, 0.1897, 0.0529], [0.1344, -0.0004, 0.0944], [-0.1785, 0.0073, 0.122], [-0.1474, -0.0491, 0.0363], [0.0633, -0.1453, -0.2037], [0.1319, -0.0147, 0.1595], [-0.1694, 0.1022, -0.1279], [0.0264, 0.1632, -0.0556], [-0.071, 0.1843, 0.1629], [-0.1037, -0.1372, 0.0004], [0.0543, 0.1798, -0.1746], [0.0224, -0.1473, -0.0885], [-0.1743, -0.0628, -0.0285], [-0.1737, 0.1737, -0.0105], [-0.173, 0.0752, 0.0061], [-0.0076, 0.2473, 0.0857], [0.0272, -0.0231, -0.187], [-0.1846, -0.0342, -0.0999], [0.0561, -0.1351, 0.0828], [0.0862, 0.1508, 0.063], [-0.0648, 0.0385, -0.2415], [-0.255, 0.041, 0.0112], [-0.021, 0.2427, -0.0469], [0.1493, 0.096, 0.0786], [-0.1565, 0.0158, 0.0698], [0.1148, -0.1636, 0.0873], [0.1692, 0.1023, 0.1062], [-0.1581, 0.0902, 0.0949], [0.0163, 0.1606, -0.1095], [-0.2114, -0.1051, -0.0922], [0.0478, -0.0507, 0.2356], [-0.1132, -0.1331, 0.052], [0.0738, 0.1088, 0.1954], [-0.1618, 0.0691, -0.0293], [-0.1682, -0.1405, -0.0807], [-0.1563, 0.0483, 0.1332], [0.0095, 0.1987, 0.07], [-0.0507, -0.0452, -0.178], [0.095, 0.137, -0.0568], [-0.2546, 0.0257, -0.0449], [-0.0828, 0.1279, 0.053], [0.0813, 0.1605, -0.0297], [-0.0648, -0.0775, -0.2221], [-0.2496, 0.0192, 0.0085], [-0.0198, 0.1698, -0.1458], [0.1356, -0.0214, 0.0949], [0.1848, 0.1567, 0.0947], [-0.1571, 0.0634, 0.0906], [0.0915, -0.0782, 0.1525], [-0.1254, 0.1161, 0.059], [-0.1783, 0.0219, -0.0196], [0.0303, -0.1577, -0.1524], [-0.164, 0.1863, 0.0809], [-0.2587, 0.0408, 0.0207], [-0.0416, 0.1832, -0.1809], [0.1759, 0.041, 0.0163], [-0.1023, 0.0578, 0.1128], [0.1687, 0.0631, 0.0783], [-0.1568, 0.0311, 0.1789], [-0.0232, 0.168, 0.0189], [-0.1125, -0.0343, -0.1678], [-0.2066, -0.1188, 0.1007], [0.1944, -0.1682, 0.0465], [-0.1732, 0.031, 0.1235], [0.1354, -0.1083, 0.1406], [-0.0664, 0.0318, -0.2025], [-0.0861, 0.0593, 0.2126], [0.097, 0.1701, 0.0591], [0.1276, -0.0192, 0.1327], [-0.1565, -0.0053, 0.0916], [-0.0152, 0.1573, -0.0492], [-0.0999, 0.096, 0.1584], [-0.1788, -0.1394, -0.1153], [0.1709, 0.0014, 0.115], [-0.1386, -0.0238, 0.0914], [-0.1838, -0.12, 0.0317], [0.0928, 0.2084, -0.0146], [0.1431, 0.0035, 0.1698], [-0.0511, -0.1056, -0.2237], [0.1284, -0.1188, 0.0785], [0.0997, 0.0048, 0.1573], [-0.181, 0.0328, 0.0342], [0.1018, -0.1133, 0.1331], [-0.1023, 0.1769, 0.1368], [-0.0963, -0.126, 0.0279], [-0.1991, 0.0679, 0.0592], [-0.1517, -0.0478, 0.0152], [0.1427, -0.1457, -0.0546], [0.1222, 0.1435, 0.0912], [0.1391, -0.0719, 0.0884], [-0.1681, 0.0247, 0.1249], [-0.2374, -0.0372, 0.0089], [0.0991, -0.2265, 0.0489], [-0.1761, -0.1705, -0.0601], [0.0845, -0.0717, 0.1303], [-0.1944, 0.0383, 0.1008], [-0.0068, 0.227, 0.0137], [0.0469, 0.0673, -0.167], [0.1668, -0.0573, 0.0901], [-0.0802, 0.007, 0.1642], [-0.0746, 0.2175, 0.0893], [-0.1059, -0.1054, 0.0928], [0.1853, 0.0071, 0.0755], [-0.0084, 0.0202, -0.1943], [0.1726, -0.0822, -0.0755], [-0.0588, -0.168, -0.0933], [-0.0291, 0.1697, -0.1579], [0.1684, 0.0405, -0.0578], [0.2455, -0.0138, 0.0615], [-0.1029, 0.1547, 0.0539], [-0.0297, 0.1396, -0.0881], [0.1433, -0.1409, 0.0821], [-0.0268, -0.218, -0.1518], [-0.0226, -0.1591, 0.1719], [-0.0804, -0.1248, -0.2232], [0.2131, 0.1106, -0.0536], [-0.0277, -0.0294, 0.1714], [0.1361, 0.1435, 0.1399], [-0.0461, -0.1365, 0.1132], [0.2212, -0.0368, -0.0459], [-0.019, -0.063, -0.2647], [0.1867, -0.0256, -0.0405], [-0.0882, 0.2047, 0.0064], [0.084, -0.0957, 0.2143], [0.1137, 0.084, -0.0841], [-0.1162, 0.1379, 0.1995], [0.116, -0.0961, 0.0579], [-0.0813, -0.1478, 0.013], [-0.0712, -0.027, 0.2237], [0.1976, -0.0925, -0.0022], [0.1657, 0.0757, -0.0158], [-0.0029, -0.1261, -0.1291], [0.0818, 0.1833, -0.0502], [0.2465, 0.0465, 0.0568], [-0.1209, 0.0137, 0.1615], [0.0164, -0.13, -0.1641], [-0.1359, -0.0964, 0.0246], [0.0571, 0.1157, 0.1595], [0.023, -0.0303, 0.1842], [0.0996, -0.1589, 0.1311], [-0.0003, 0.1629, 0.0084], [0.2455, 0.0842, 0.0158], [-0.0373, -0.0584, 0.1538], [0.1454, -0.1625, -0.0933], [0.1413, 0.0987, 0.181], [0.1728, -0.1126, 0.0821], [-0.0109, -0.2223, 0.0394], [0.1457, -0.1604, 0.0653], [-0.1366, -0.2204, -0.0368], [0.0459, 0.0585, -0.1926], [0.2404, -0.0389, -0.0111], [0.0174, -0.1501, -0.133], [-0.1031, -0.2072, 0.1289], [0.1327, 0.1359, 0.0445], [-0.0554, -0.1142, 0.2022], [0.2385, -0.0436, -0.0479], [-0.0112, -0.1516, -0.2029], [0.1358, -0.0906, 0.0207], [0.0541, 0.1887, -0.0258], [0.218, 0.0212, 0.1509], [-0.1792, -0.0226, 0.194], [0.0455, -0.046, 0.1522], [0.1086, -0.1634, 0.0835], [0.1468, 0.123, -0.0894], [0.0073, 0.0233, 0.211], [-0.037, 0.1019, 0.1446], [0.0876, -0.1608, 0.0243], [-0.0516, -0.0569, 0.2592], [-0.0106, -0.1378, -0.0838], [-0.0172, 0.1378, -0.1071], [-0.0781, -0.1398, -0.0571], [0.0558, 0.0859, -0.1662], [0.2251, -0.0285, 0.0015], [0.0221, -0.1614, -0.1975], [0.0668, 0.1692, 0.0387], [-0.1688, 0.0112, -0.0791], [-0.0078, -0.1804, 0.0126], [-0.1554, -0.0281, 0.0794], [-0.054, 0.1565, 0.1397], [0.0467, 0.2292, -0.0771], [-0.0452, -0.0891, -0.1823], [0.1017, -0.2401, 0.0123], [0.0498, 0.104, -0.2305], [0.1501, 0.144, 0.044], [-0.1403, 0.0773, 0.0773], [-0.0145, -0.1192, -0.1709], [0.122, 0.0878, -0.1988], [0.1296, 0.1848, 0.0651], [-0.1818, 0.0533, -0.022], [0.0887, 0.0077, 0.1923], [-0.1942, 0.1592, 0.0065], [-0.1124, 0.1403, 0.1102], [0.0561, 0.2234, -0.018], [-0.0589, 0.1656, -0.0865], [0.0657, -0.1932, 0.1517], [0.0393, -0.191, -0.1467], [-0.0974, -0.1731, 0.0327], [0.1372, -0.0238, 0.1625], [0.17, 0.0415, 0.0614], [-0.0998, 0.1615, 0.0289], [-0.0334, 0.0542, -0.1964], [-0.0474, 0.1736, -0.1078], [-0.1541, 0.1731, 0.0146], [-0.0358, -0.075, -0.1454], [-0.1554, 0.0342, -0.0238], [0.1768, 0.0143, 0.0701], [-0.0005, 0.1695, -0.1847], [-0.1958, 0.0939, 0.1176], [0.1179, -0.1343, 0.1587], [-0.1087, -0.2181, -0.0066], [-0.1057, 0.0015, 0.1591], [0.0297, -0.1782, -0.0582], [-0.077, 0.1276, -0.1362], [-0.117, -0.1099, 0.1083], [-0.1981, 0.0092, -0.1095], [0.0108, -0.1747, 0.0201], [-0.1625, -0.0588, 0.0564], [-0.1652, 0.1955, -0.0322], [-0.0592, -0.1827, -0.0802], [0.0792, 0.1867, 0.0093], [0.1054, 0.0827, 0.2298], [-0.0324, 0.1702, -0.101], [0.0013, -0.1681, -0.1329], [-0.2414, -0.0765, -0.0073], [0.0768, -0.1846, -0.0574], [-0.1148, -0.1066, 0.0586], [-0.1587, 0.0585, 0.0168], [0.1315, 0.0858, 0.0618], [-0.0173, 0.0653, -0.1999], [-0.0545, -0.1708, 0.0256], [-0.202, -0.0152, 0.0813], [0.1661, 0.0495, 0.1978], [-0.1885, 0.0662, 0.0274], [-0.1421, 0.1738, -0.0772], [0.0747, 0.1576, -0.1114], [-0.0752, -0.1758, -0.1181], [-0.031, 0.0781, -0.1818], [-0.1524, -0.034, 0.0474], [0.0602, -0.1451, 0.0219], [-0.2003, 0.0773, 0.0227], [0.1402, -0.1636, 0.133], [-0.124, -0.1302, 0.0587], [-0.0781, 0.0688, -0.2], [0.0444, -0.0499, -0.1737], [-0.2096, -0.1352, -0.069], [0.1441, -0.0164, -0.0656], [0.0358, 0.2094, -0.0135], [0.0129, -0.2013, -0.1753], [-0.1343, -0.1474, -0.0459], [0.1275, -0.0982, 0.0035], [-0.0917, 0.0349, 0.1936], [-0.1167, -0.1148, -0.0839], [0.0774, -0.0849, 0.1256], [-0.1644, -0.0964, 0.0871], [0.0759, 0.225, -0.0099], [-0.1427, -0.1973, -0.1032], [-0.1187, -0.064, 0.095], [0.1905, -0.0968, 0.0266], [0.0258, -0.1653, -0.1506], [-0.0923, 0.0703, 0.1236], [-0.1253, -0.1335, -0.1616], [0.0208, -0.1468, -0.205], [0.1005, -0.1272, 0.2091], [-0.1643, 0.1702, 0.1185], [0.0778, 0.1649, -0.0283], [0.0166, 0.1936, 0.1166], [0.2301, 0.0591, 0.0993], [-0.1532, -0.1225, 0.1593], [-0.1006, -0.1404, 0.0197], [0.1633, -0.0606, 0.031], [-0.0203, 0.1868, 0.0397], [0.1745, -0.0206, 0.1219], [-0.1855, 0.0657, 0.1004], [0.1715, -0.0925, 0.0877], [-0.1369, 0.0188, 0.1906], [-0.1706, -0.0332, 0.002], [-0.0755, 0.1232, 0.0681], [0.1018, 0.1352, -0.0556], [-0.0469, 0.0466, 0.1553], [0.0616, 0.1634, 0.0609], [-0.2073, 0.0364, 0.1496], [0.0339, 0.2037, 0.0789], [0.1689, -0.0157, 0.0577], [-0.1566, 0.0665, -0.0153], [-0.0038, -0.1878, 0.0015], [-0.1326, 0.1491, 0.107], [0.0755, -0.0967, 0.1248], [0.1318, 0.108, 0.0378], [0.1977, -0.1684, 0.0444], [0.0341, 0.0197, -0.2048], [0.1564, 0.1041, -0.0468], [-0.1434, 0.112, 0.0413], [0.0945, -0.0509, 0.1494], [0.0181, 0.0958, -0.1361], [-0.1961, -0.0624, 0.1239], [-0.0594, -0.1943, -0.1496], [0.1205, -0.0536, 0.1452], [0.0267, 0.0873, -0.1526], [0.1645, 0.0296, 0.0085], [0.1184, -0.1827, 0.0509], [0.1035, 0.1534, -0.1273], [0.0168, 0.0098, 0.1745], [0.1626, -0.1102, -0.0864], [-0.0511, 0.1536, -0.1843], [-0.0135, -0.1038, -0.1949], [0.0218, -0.18, 0.0405], [-0.0223, 0.0678, -0.2354], [0.1484, 0.0388, -0.0902], [-0.0782, 0.152, 0.1103], [0.1287, -0.1147, 0.1072], [0.2373, -0.091, -0.002], [-0.025, -0.219, -0.0587], [-0.0479, 0.1152, -0.2219], [0.2117, 0.0895, -0.062], [0.0698, -0.1486, -0.0855], [0.048, 0.212, -0.0993], [0.1697, 0.0778, 0.0757], [-0.1237, 0.0563, 0.0939], [-0.0388, 0.1525, -0.0764], [-0.1891, -0.0414, 0.1469], [0.0871, -0.0301, -0.2028], [0.0202, -0.0038, -0.1932], [0.1808, 0.1372, -0.0228], [-0.2266, 0.0992, 0.0744], [0.1447, -0.0798, 0.1831], [-0.0327, -0.1956, 0.0435], [-0.1215, -0.0191, 0.1584], [0.0024, 0.1001, -0.2259], [-0.1201, 0.0791, 0.1161], [0.1315, 0.1737, 0.1473], [-0.0642, -0.1834, -0.0193], [-0.2393, 0.0124, 0.0621], [0.0815, 0.056, 0.1894], [-0.2276, 0.0993, 0.0598], [-0.0291, 0.24, -0.0541], [-0.2397, -0.0201, -0.0982], [-0.0871, 0.1841, 0.0474], [0.0149, 0.1936, 0.0262], [-0.1435, -0.0362, -0.0671], [0.0557, -0.2044, 0.1361], [0.0454, -0.0353, 0.2456], [-0.1779, 0.1116, -0.0026], [-0.1351, -0.1135, -0.1823], [0.1079, -0.1139, 0.0401], [-0.0949, -0.1209, 0.0476], [0.1578, -0.0165, 0.1241], [-0.1463, 0.1119, 0.1416], [-0.2565, 0.0424, 0.0375], [-0.0191, 0.159, -0.0404], [-0.046, -0.1333, -0.2008], [-0.2364, -0.0357, 0.0268], [0.0918, -0.1333, 0.1623], [-0.0978, 0.1211, 0.1136], [-0.1277, -0.1177, -0.1373], [-0.0318, -0.0184, 0.2698], [-0.1241, 0.1643, -0.0806], [-0.01, -0.1353, -0.1725], [-0.0117, 0.0999, -0.1475], [-0.0577, 0.1867, 0.0235], [0.0503, 0.0197, 0.1571], [-0.1246, 0.1768, -0.0423], [-0.1143, -0.1058, 0.1161], [0.093, 0.169, 0.1596], [-0.2136, 0.0501, -0.0211], [0.177, 0.1638, 0.095], [-0.0016, -0.2198, -0.0398], [0.1081, -0.1895, -0.0438], [0.2024, 0.0644, 0.0245], [-0.1516, 0.115, 0.097], [-0.0911, 0.1571, -0.1392], [-0.0819, -0.2085, -0.0657], [-0.1675, -0.0684, 0.1829], [0.1734, -0.1246, 0.0519], [0.0492, -0.1249, -0.1204], [0.0711, 0.1376, -0.0407], [0.2075, 0.0181, 0.1343], [-0.1233, -0.0986, 0.0982], [0.1304, 0.1111, 0.1441], [-0.086, 0.1781, -0.0058], [-0.1411, -0.1879, 0.0756], [0.1069, 0.0683, 0.1335], [0.0534, 0.131, -0.1419], [0.1533, 0.1403, 0.1223], [-0.2315, 0.0366, 0.0968]], v: [[0.1585, 0.0078, 0.0], [-0.0207, 0.1664, -0.0885], [-0.1888, 0.0153, 0.0156], [-0.1093, 0.1411, -0.0481], [0.1166, 0.0484, -0.0657], [0.0993, -0.1513, 0.0373], [-0.0827, 0.092, 0.144], [-0.0027, -0.1374, -0.0619], [0.1177, 0.0504, -0.1041], [-0.0895, 0.0681, 0.1134], [-0.0031, 0.1504, 0.0709], [-0.0826, -0.1006, 0.0034], [-0.1714, -0.0182, 0.0723], [-0.1138, 0.1161, 0.0963], [0.1301, 0.1479, 0.0134], [0.1505, 0.0422, -0.0518], [-0.1125, 0.1073, -0.0689], [0.0105, -0.0871, 0.136], [0.1061, 0.0269, -0.1567], [-0.0565, 0.1018, -0.0245], [0.0294, 0.1113, -0.0907], [0.102, 0.0614, -0.1219], [0.0985, 0.0745, 0.0015], [0.1829, -0.0106, 0.0004], [0.1359, -0.1398, -0.0029], [-0.1096, 0.0601, -0.0024], [-0.0574, -0.1218, 0.0113], [0.1449, 0.0585, -0.0074], [0.0887, -0.1729, 0.0228], [0.0547, 0.0923, -0.1055], [-0.0499, 0.1276, 0.1185], [0.0027, 0.1216, 0.005], [0.0016, -0.1266, -0.0243], [0.0518, 0.1051, -0.0544], [0.0838, 0.0276, -0.1055], [0.079, 0.0405, -0.0833], [-0.0687, 0.0447, 0.0932], [0.0104, 0.1197, -0.1109], [-0.1033, -0.0728, 0.0661], [-0.116, 0.0994, -0.0782], [0.1074, 0.0581, -0.0757], [-0.0751, 0.119, -0.0393], [0.1227, 0.0685, -0.121], [-0.0583, -0.1496, 0.0222], [0.1226, -0.045, -0.1038], [0.0549, -0.1307, -0.0631], [0.0423, 0.1792, -0.0051], [-0.1446, 0.025, 0.1129], [-0.0622, 0.1075, 0.0651], [-0.0262, -0.1637, -0.0131], [0.1059, 0.1008, -0.0527], [0.1145, -0.0053, -0.0782], [-0.0908, 0.1226, 0.087], [-0.096, -0.1084, 0.0358], [0.0121, -0.1716, -0.0471], [0.1115, -0.0185, -0.0773], [-0.11, 0.0645, -0.0104], [-0.0728, 0.1059, -0.1156], [0.1306, 0.0018, -0.108], [0.1716, -0.0905, -0.0143], [0.0623, -0.0995, 0.0652], [0.035, 0.1041, -0.1194], [-0.0766, 0.1271, -0.0467], [-0.0228, -0.0996, 0.0741], [0.1452, 0.0674, -0.112], [-0.0862, 0.1042, -0.0272], [0.1733, 0.0164, 0.0037], [-0.125, 0.0944, -0.0194], [-0.019, 0.1182, -0.0178], [-0.0942, -0.1313, 0.0143], [-0.1576, -0.0213, 0.0007], [-0.1167, 0.1181, -0.0066], [-0.0817, -0.1155, 0.0045], [0.0784, -0.1162, -0.0047], [0.0731, 0.1811, 0.0139], [0.0205, -0.1159, 0.0161], [0.0572, 0.1299, -0.1094], [0.0812, 0.014, -0.0966], [-0.1041, 0.092, 0.0851], [-0.0349, 0.1148, 0.0], [0.0887, 0.0377, -0.1089], [-0.0477, 0.1253, 0.0178], [0.0244, 0.1244, -0.0553], [0.1066, -0.0502, -0.0982], [-0.0542, 0.1173, 0.0332], [0.0767, 0.0691, -0.0868], [-0.0934, 0.1495, 0.068], [-0.0024, 0.1821, -0.029], [0.0576, 0.0816, -0.073], [-0.1088, -0.0715, 0.085], [0.1437, 0.0596, -0.1], [0.1249, -0.0646, -0.0124], [0.0322, -0.1379, 0.0575], [0.1068, -0.0282, -0.0792], [-0.0718, -0.1332, 0.1146], [-0.163, -0.0551, 0.0683], [-0.184, 0.031, -0.0396], [-0.0687, 0.0687, -0.0864], [-0.0311, -0.1147, 0.1435], [0.1271, 0.0631, -0.0785], [0.0364, -0.1243, 0.0743], [0.1351, 0.0131, -0.0799], [-0.1112, 0.0641, 0.0078], [-0.0493, -0.1259, 0.1157], [0.1264, 0.036, -0.0853], [0.0817, -0.1384, 0.0468], [-0.0233, -0.1674, 0.0793], [0.1527, -0.0264, -0.0447], [-0.1174, 0.1304, -0.0113], [-0.0069, 0.1362, -0.0563], [-0.094, -0.101, 0.0819], [0.0023, -0.133, -0.1365], [0.0175, 0.1669, 0.0076], [0.026, 0.0225, -0.1992], [0.022, 0.18, 0.0688], [0.0809, 0.0315, -0.1001], [-0.077, 0.0866, 0.156], [0.077, 0.1371, -0.0236], [0.0738, -0.0431, -0.1432], [-0.1109, 0.1097, 0.0], [-0.0191, 0.1353, -0.0555], [-0.1038, 0.0854, 0.0124], [0.0809, 0.1035, -0.069], [0.1582, 0.0013, -0.0706], [-0.0863, 0.0891, 0.019], [-0.1123, -0.1041, 0.0612], [-0.1583, 0.019, 0.066], [-0.072, 0.0931, 0.0239], [-0.007, -0.1557, 0.0135], [0.079, 0.0855, -0.0402], [0.1497, 0.0117, -0.0653], [-0.0964, 0.0711, 0.0328], [-0.0852, 0.0221, 0.0853], [0.0358, -0.1113, -0.0886], [0.072, 0.1657, 0.0381], [0.1183, 0.0698, -0.0402], [-0.0478, 0.1302, 0.1002], [-0.0615, -0.1332, -0.0437], [0.1174, 0.0648, -0.0215], [0.1453, -0.0284, -0.0878], [-0.0436, 0.0992, -0.1229], [-0.0076, -0.0042, 0.1961], [0.0952, -0.1695, -0.0178], [-0.0596, 0.1267, -0.1119], [0.0057, 0.0378, -0.1809], [0.0623, -0.0639, -0.1372], [0.0843, -0.1456, -0.0452], [-0.0394, 0.1588, -0.0818], [0.038, 0.075, -0.1397], [-0.0957, 0.1356, 0.0646], [0.0234, -0.1585, 0.0411], [0.1014, -0.0012, -0.12], [-0.1034, 0.1127, 0.0796], [0.1214, 0.0142, -0.097], [-0.1345, 0.1121, 0.0871], [0.0483, -0.1889, -0.0054], [0.0542, 0.1342, -0.0642], [-0.0884, 0.0607, 0.0635], [-0.0349, 0.1535, 0.0215], [-0.0894, 0.0814, 0.0829], [0.0049, -0.1851, -0.0467], [0.0832, 0.112, -0.0317], [0.1245, 0.0222, -0.0887], [-0.0891, -0.1379, 0.019], [0.0897, 0.0364, -0.1624], [0.1185, -0.081, -0.1212], [-0.0881, 0.1502, 0.0227], [0.1184, -0.0577, -0.0248], [0.0617, 0.1509, -0.1032], [-0.0668, 0.0561, 0.1039], [0.0142, -0.1212, -0.0547], [-0.0774, 0.036, 0.1117], [-0.0329, 0.1281, 0.0813], [0.076, 0.0759, 0.1173], [0.0881, -0.1233, 0.0143], [0.017, 0.1623, 0.0716], [0.0502, -0.1237, 0.0286], [-0.0133, -0.1293, -0.04], [-0.1414, -0.0212, -0.0169], [-0.0872, 0.0722, -0.0403], [-0.007, -0.1449, 0.053], [0.1138, 0.0815, -0.0273], [0.083, -0.0989, 0.0297], [-0.0052, 0.146, -0.0499], [-0.0228, -0.1073, 0.1233], [-0.0678, -0.1388, -0.1222], [0.0457, 0.0129, 0.1694], [-0.0038, 0.0876, -0.1192], [-0.0586, -0.139, 0.0372], [0.0303, -0.092, 0.0974], [0.0486, 0.121, -0.0466], [-0.1145, -0.0746, -0.0528], [-0.0718, -0.1645, -0.0508], [0.1126, -0.1236, 0.0492], [-0.0161, -0.1313, 0.0025], [0.1419, 0.1137, 0.0567], [0.1473, -0.019, 0.0781], [0.1066, -0.1354, 0.0699], [-0.0046, 0.1231, -0.0117], [0.1241, 0.0491, 0.069], [0.0161, 0.107, -0.1536], [-0.1406, -0.0617, -0.0492], [0.1287, -0.0339, 0.1513], [0.0085, -0.0821, 0.1049], [0.0951, 0.112, -0.0698], [0.1634, 0.055, 0.0235], [-0.0257, 0.0871, -0.0988], [-0.063, -0.0949, 0.068], [-0.0033, -0.0995, -0.0854], [-0.0677, -0.0563, -0.137], [0.1135, -0.0695, 0.1439], [0.0563, -0.1445, 0.0435], [-0.0814, -0.0612, -0.0835], [0.0679, -0.1297, 0.0565], [0.0071, 0.1861, 0.031], [0.1278, 0.0406, 0.0136], [-0.1112, 0.039, -0.0166], [-0.055, 0.1082, -0.0108], [0.1228, 0.0284, -0.0144], [-0.1391, -0.0036, 0.0465], [-0.1142, 0.0974, 0.0167], [0.0285, -0.1577, 0.0237], [0.0178, -0.0501, 0.1128], [-0.0279, -0.1356, 0.0718], [-0.0643, -0.1445, -0.0426], [0.031, -0.0332, 0.1152], [-0.0706, -0.1719, -0.0149], [-0.1043, -0.0848, -0.1101], [-0.0281, 0.0982, -0.0702], [-0.0494, -0.1653, 0.0112], [-0.113, -0.0976, -0.0726], [0.0418, -0.1149, -0.0421], [-0.0931, -0.021, -0.0825], [-0.1625, 0.094, -0.0586], [-0.0633, 0.1388, 0.0319], [-0.037, -0.1, -0.0706], [-0.1384, -0.0299, -0.1016], [0.0162, -0.1496, -0.0106], [0.154, -0.0094, 0.0896], [0.0713, -0.092, 0.0442], [0.0028, 0.1868, -0.0041], [-0.1182, -0.1042, 0.0218], [-0.1077, 0.0841, -0.1001], [-0.0049, -0.1374, 0.0911], [0.1376, 0.006, 0.0281], [0.0954, -0.094, 0.0776], [0.0285, 0.1662, -0.1068], [-0.161, -0.0952, 0.0582], [-0.1569, 0.031, -0.0154], [-0.0708, 0.097, -0.058], [-0.0301, -0.1278, 0.0851], [0.1063, 0.0641, -0.0497], [0.1699, -0.0135, -0.0], [-0.0036, -0.1126, -0.0681], [-0.0597, -0.0612, -0.1764], [-0.0612, 0.0542, -0.1176], [0.0545, -0.1632, 0.0581], [0.101, -0.0449, 0.1562], [-0.0846, -0.1194, -0.1358], [0.0092, -0.119, -0.0045], [-0.1312, -0.1348, -0.0513], [0.1257, -0.1076, 0.0514], [0.114, 0.1495, 0.0395], [0.1583, 0.0078, 0.0542], [-0.1174, -0.0479, -0.0151], [-0.1328, 0.0839, -0.0426], [-0.0907, -0.0919, 0.0186], [-0.1251, -0.005, -0.0103], [0.0256, -0.1313, 0.0417], [0.144, 0.0515, 0.0975], [0.0168, -0.1348, 0.1433], [0.0972, 0.1479, -0.0632], [0.116, 0.063, 0.0327], [-0.0363, 0.0964, -0.1276], [0.0749, -0.1249, 0.0969], [0.0478, -0.1723, -0.0231], [-0.0064, -0.0991, -0.1079], [-0.0843, 0.1148, -0.1308], [0.0457, -0.1666, 0.0073], [-0.0122, -0.0974, -0.0745], [-0.0629, -0.0299, -0.1444], [0.0554, -0.0691, 0.098], [-0.0469, -0.1497, -0.0784], [-0.0941, -0.0809, -0.1493], [-0.1452, -0.1252, -0.0246], [-0.1063, -0.0096, -0.075], [-0.0789, 0.0909, -0.1214], [-0.1116, -0.1222, -0.0], [0.1634, 0.0339, 0.0811], [0.1173, -0.0879, 0.1099], [-0.1107, -0.1572, 0.0177], [-0.1119, -0.0327, -0.0315], [0.1524, -0.0816, 0.0834], [0.0376, -0.1386, 0.0592], [-0.1356, -0.0611, -0.0249], [-0.051, 0.1043, -0.0583], [-0.0693, -0.0552, -0.0858], [0.078, -0.0382, 0.1292], [-0.0319, 0.1426, -0.0942], [-0.0878, -0.084, -0.0846], [0.0791, -0.0158, 0.0989], [0.0457, -0.1085, 0.0844], [0.0321, 0.157, -0.0157], [-0.0993, 0.0029, -0.0909], [0.085, -0.1282, 0.1127], [-0.0999, -0.1273, -0.0493], [-0.1062, 0.0884, 0.0354], [-0.0373, 0.1505, -0.0219], [-0.0144, -0.1306, 0.0059], [-0.1127, 0.0271, 0.0491], [-0.0449, 0.0791, 0.1069], [-0.0772, -0.0934, -0.132], [0.0529, -0.0844, -0.0933], [0.0061, 0.1589, 0.1092], [-0.0447, -0.069, 0.0926], [0.0587, -0.0238, -0.1765], [-0.0106, 0.0933, 0.0813], [0.048, 0.1464, 0.006], [0.0903, 0.0772, -0.0734], [-0.0892, 0.0228, 0.1015], [0.0496, -0.1488, -0.1123], [0.0864, 0.0729, -0.0438], [0.0865, -0.0007, -0.0882], [0.0753, 0.1355, 0.0185], [-0.1822, -0.0643, -0.0093], [-0.1187, 0.0511, 0.0057], [-0.0492, 0.1186, 0.0158], [-0.0478, -0.1143, -0.0184], [0.1304, -0.0522, -0.0047], [0.0662, -0.1449, -0.027], [-0.1242, -0.062, -0.0225], [-0.1028, 0.1569, 0.0299], [0.0608, 0.0799, 0.1074], [0.1311, 0.0687, 0.0245], [-0.153, -0.0216, 0.0882], [-0.1423, 0.0764, 0.0265], [-0.0464, -0.0801, -0.0975], [-0.1364, -0.0264, -0.0753], [0.0817, -0.1658, 0.0056], [0.1249, 0.0596, -0.1281], [0.0027, 0.1317, 0.0129], [0.1007, 0.1063, -0.0755], [-0.115, 0.0139, 0.1607], [-0.0264, 0.1151, 0.1292], [0.037, 0.1138, 0.0318], [0.151, 0.0043, -0.068], [-0.1132, 0.0992, 0.0312], [0.0249, -0.1436, 0.0167], [0.0796, 0.1302, -0.0606], [-0.1467, -0.0698, -0.0613], [0.0234, 0.1617, 0.0986], [-0.111, -0.0627, -0.0614], [-0.1711, 0.0479, -0.0236], [-0.0678, 0.1056, 0.0299], [0.1395, 0.0744, 0.0812], [0.1414, -0.0351, 0.0314], [0.0885, -0.1048, -0.0209], [0.0339, -0.0657, -0.1578], [0.0349, 0.1095, 0.0756], [0.075, 0.1074, -0.0167], [-0.0251, -0.1175, -0.1038], [0.1229, 0.0587, -0.0935], [-0.0598, 0.0357, 0.1038], [-0.1537, -0.0437, 0.0675], [-0.1158, 0.0671, 0.1375], [0.0002, -0.1462, -0.1349], [0.1127, 0.1374, 0.0544], [0.1227, 0.0287, -0.0556], [-0.1144, 0.0594, 0.0309], [-0.0387, -0.1179, 0.0449], [0.1155, 0.0478, -0.0561], [0.1466, -0.0781, -0.0454], [0.0637, -0.1184, -0.0406], [0.0739, 0.1763, 0.0129], [0.1684, 0.0637, -0.0406], [-0.108, 0.0539, 0.0541], [-0.0655, -0.1427, -0.0232], [-0.0363, -0.097, -0.1075], [0.0003, 0.1165, 0.1354], [0.1081, -0.0161, -0.076], [0.0555, -0.0966, -0.1502], [0.1095, 0.0633, 0.0137], [-0.133, 0.0006, 0.0699], [-0.1346, -0.0536, -0.0934], [-0.1149, 0.0379, -0.0234], [-0.0912, 0.1198, 0.0417], [-0.0095, -0.1114, -0.079], [0.0071, 0.1459, -0.0317], [0.0095, -0.1522, 0.0109], [0.1328, 0.0036, -0.1486], [-0.0623, 0.0862, 0.0663], [-0.0555, 0.0979, 0.0627], [-0.0486, -0.1851, -0.0282], [0.0118, 0.1254, 0.031], [-0.0997, 0.0624, 0.0303], [-0.0377, 0.1369, 0.0418], [-0.086, -0.1671, -0.0317], [0.0688, -0.1688, -0.0545], [0.0671, 0.1492, 0.0337], [-0.1397, 0.0628, 0.0286], [-0.0373, 0.1084, 0.0339], [-0.0648, -0.1205, -0.0332], [0.124, -0.0617, -0.0206], [0.0612, -0.1736, -0.0539], [0.1368, 0.0585, 0.0169], [-0.0918, 0.1399, 0.0447], [0.0079, -0.0663, -0.1686], [0.0616, 0.1041, 0.0766], [0.1251, 0.135, -0.0328], [-0.0959, -0.0571, 0.1389], [0.1197, 0.1352, 0.0], [0.0223, 0.1247, 0.1229], [-0.0739, 0.0335, 0.0924], [0.0111, -0.1352, -0.1233], [-0.1395, 0.0332, 0.1334], [0.0077, 0.1621, -0.0212], [-0.092, -0.1119, 0.0815], [0.1142, -0.0037, -0.0824], [-0.0949, 0.1386, 0.0679], [-0.0477, -0.1867, 0.0049], [0.108, 0.0498, -0.0551], [0.1243, 0.1162, 0.0158], [-0.0144, 0.1234, 0.087], [-0.043, -0.1307, 0.0255], [-0.0107, 0.1169, 0.1432], [-0.1356, 0.0299, 0.1033], [0.06, 0.087, 0.0746], [-0.0742, -0.1398, -0.1054], [-0.1219, -0.0464, -0.0215], [0.0692, -0.14, -0.0967], [0.054, 0.1143, 0.0727], [-0.0819, 0.1216, 0.0767], [0.096, 0.0651, 0.0404], [-0.0777, 0.0612, 0.1246], [-0.0049, -0.1634, -0.1106], [0.092, 0.1418, 0.0058], [-0.0232, 0.1417, 0.1037], [0.1183, 0.0609, -0.0462], [-0.1393, 0.0461, 0.1063], [0.0549, -0.1549, -0.1025], [-0.1281, 0.0287, 0.0688], [-0.0726, 0.131, 0.0872], [0.0952, 0.0765, -0.0117], [0.1435, 0.0017, -0.0721], [0.1039, -0.0612, 0.0633], [-0.0871, 0.1484, -0.0533], [-0.0249, -0.1326, 0.0156], [-0.1319, 0.0019, 0.0491], [0.1319, -0.0222, 0.0567], [0.1671, 0.0257, -0.0901], [-0.1153, 0.0229, -0.0235], [0.1504, 0.0485, -0.1108], [-0.0388, -0.1683, -0.0065], [0.042, 0.1376, -0.0141], [-0.1151, -0.071, -0.0564], [0.1297, -0.0576, 0.1037], [-0.0225, 0.1551, -0.0884], [-0.1659, -0.0619, -0.0438], [0.1115, -0.0308, 0.0751], [-0.0861, -0.0812, 0.0891], [0.0351, -0.1501, 0.0932], [0.1437, -0.0042, -0.0512], [-0.0996, -0.0942, 0.0778], [-0.1472, 0.0041, 0.0584], [0.0646, -0.0158, 0.1319], [0.0288, 0.0722, -0.1279], [-0.1118, -0.0668, 0.0549], [-0.1834, -0.0191, -0.052], [-0.0934, 0.0491, -0.1228], [-0.0113, -0.0745, 0.1252], [0.1001, 0.0745, -0.0769], [-0.0434, -0.1423, -0.0085], [0.1524, 0.1, 0.0657], [-0.1131, -0.0819, -0.0348], [-0.0464, -0.1672, 0.0114], [0.1014, 0.0607, 0.0174], [0.097, -0.1383, 0.0469], [0.0098, 0.1199, -0.0143], [0.1357, -0.0566, 0.0463], [0.066, -0.1007, 0.1433], [0.0644, 0.0828, -0.1556], [-0.1195, -0.0155, 0.0637], [-0.1327, 0.0441, -0.0212], [-0.0581, 0.0729, -0.0817], [-0.048, -0.1099, 0.1595], [0.1419, 0.0335, -0.0928], [0.1449, -0.0488, -0.0], [0.0263, 0.1108, -0.1248], [-0.1022, 0.0925, -0.063], [0.0858, 0.008, 0.1656], [-0.0479, -0.141, 0.0513], [-0.0965, -0.1257, -0.0613], [0.0259, 0.1104, -0.0555], [-0.1093, -0.1371, -0.0332], [-0.0117, -0.1201, 0.0713], [-0.0911, -0.0407, -0.0683], [0.0805, 0.0905, -0.0368], [0.1716, 0.0245, -0.0086], [-0.042, -0.1057, 0.1283], [-0.0113, -0.1585, 0.0302], [0.1655, 0.0034, 0.0027], [-0.1033, 0.0896, -0.0193], [-0.0086, 0.0256, -0.1426], [-0.1378, -0.0497, 0.0132], [0.0446, -0.0334, 0.1862], [0.0529, 0.0492, -0.1006], [-0.1201, 0.0024, -0.0556], [-0.1276, -0.0588, 0.0492], [0.1813, -0.0167, 0.0431], [0.1093, -0.1006, 0.1284], [-0.1401, -0.0894, 0.0879], [0.0611, 0.1263, 0.0154], [-0.1198, -0.0838, -0.1206], [0.0701, -0.0312, 0.1105], [-0.0503, -0.1295, 0.0049], [-0.0963, -0.068, -0.0686], [0.0864, 0.141, -0.0247], [0.1645, 0.056, 0.0597], [0.107, -0.0636, 0.0912], [-0.0095, 0.1406, -0.0929], [-0.1389, -0.0676, 0.081], [-0.0756, 0.0868, -0.0537], [0.1489, 0.0811, -0.0823], [0.1863, -0.0474, -0.0174], [0.0335, 0.1514, -0.0784], [-0.1571, 0.0329, 0.0259], [-0.0925, 0.1036, -0.0259], [-0.1005, -0.1143, 0.0908], [-0.1004, -0.0923, -0.0314], [-0.1366, -0.1252, -0.0081], [0.0861, 0.0356, 0.085], [-0.031, -0.098, 0.096], [0.1349, 0.0471, 0.0795], [0.1064, -0.0573, 0.1626], [-0.0754, -0.0944, 0.0325], [0.1226, -0.0106, 0.0947], [0.0369, 0.179, -0.0606], [-0.0888, -0.0894, -0.0223], [0.0853, -0.0891, 0.0956], [-0.0049, -0.1399, 0.0546], [0.1335, -0.0966, 0.0917], [-0.0223, 0.1601, -0.058], [-0.1238, -0.0399, -0.0352], [0.1154, -0.0565, 0.0601], [0.1212, 0.0339, 0.055], [0.0753, -0.0323, 0.1128], [0.0095, 0.0972, -0.1292], [-0.1297, -0.0486, -0.0369], [0.0939, -0.0303, 0.0966], [0.0812, 0.0966, -0.0579], [-0.0164, 0.0975, -0.0709], [-0.0934, -0.1108, 0.0626], [0.1393, -0.0688, 0.0593], [0.0557, -0.1531, 0.1112], [0.0475, 0.0936, -0.059], [0.045, -0.0484, -0.1065], [-0.1151, 0.0694, 0.0343], [-0.1696, -0.0247, -0.072], [-0.0503, 0.11, 0.0115], [-0.042, -0.1715, -0.0855], [0.1712, -0.0671, 0.07], [0.0589, 0.1645, 0.0594], [-0.0261, 0.1324, -0.0102], [-0.0858, -0.1522, -0.0418], [-0.1545, -0.0531, -0.0752], [0.1068, -0.0461, 0.0493], [-0.1696, 0.0056, -0.0949], [-0.0534, 0.078, 0.0987], [-0.0654, -0.0882, -0.1557], [0.1122, -0.0753, -0.0044], [0.0543, -0.1514, -0.0944], [-0.1485, -0.0192, -0.1015], [-0.1196, 0.0548, -0.0134], [0.0446, -0.093, -0.106], [-0.1105, -0.039, -0.0266], [-0.1438, 0.0372, 0.0464], [-0.0478, 0.0856, 0.0749], [-0.063, -0.1169, -0.0934], [0.0242, -0.1066, -0.0503], [0.1808, 0.0099, 0.0538], [-0.0442, 0.1356, 0.0538], [-0.0159, -0.1434, -0.1026], [-0.0465, -0.0308, -0.1232], [-0.0811, 0.0905, -0.1509], [0.0679, -0.051, 0.1015], [-0.1214, -0.0766, -0.1278], [0.0784, -0.0414, 0.0974], [0.0347, -0.1222, 0.0628], [-0.102, -0.1083, -0.1141], [-0.0241, -0.0452, -0.1382], [-0.1192, 0.0453, -0.155], [0.0963, -0.0932, 0.028], [0.0597, -0.1287, -0.0726], [0.0237, 0.069, 0.1059], [-0.1061, 0.0774, -0.0439], [0.0788, -0.1568, -0.0506], [-0.0279, -0.1392, -0.1382], [-0.1187, -0.0358, -0.1448], [-0.08, 0.1203, 0.0055], [-0.0159, -0.1269, -0.0077], [0.132, 0.0945, 0.0039], [-0.0584, 0.1474, -0.0537], [-0.0564, -0.1366, 0.0394], [-0.0709, -0.0635, -0.1135], [0.0513, -0.1659, 0.0781], [0.0426, 0.169, 0.0304], [0.0899, -0.0416, 0.0979], [-0.0364, 0.1504, -0.0768], [-0.0519, -0.123, -0.004], [0.1196, -0.1014, -0.0796], [-0.1009, -0.0631, -0.1047], [-0.1526, 0.0187, -0.0355], [0.103, -0.0906, -0.0069], [-0.0977, 0.036, -0.0841], [-0.0212, -0.1932, 0.0103], [-0.0941, -0.0345, -0.0699], [-0.1113, 0.0449, -0.0684], [0.0918, -0.1481, 0.0273], [-0.0155, -0.1806, -0.0517], [-0.1114, -0.085, -0.0919], [0.0436, 0.1084, -0.0414], [-0.1022, 0.1542, -0.0611], [-0.0265, -0.1316, 0.0506], [0.1135, 0.0801, -0.0296], [-0.0865, -0.0493, -0.0953], [-0.0093, -0.1233, -0.0578], [0.1354, -0.0457, 0.0812], [-0.145, -0.0877, -0.1008], [-0.0328, -0.1912, -0.0355], [-0.1293, -0.1112, -0.0909], [-0.0324, 0.1298, 0.0256], [-0.0531, -0.1069, 0.0073], [-0.0685, 0.1162, 0.0592], [-0.0904, -0.139, -0.0604], [-0.1267, -0.0175, -0.0], [0.1143, -0.0701, -0.0683], [0.0263, -0.1457, -0.1292], [0.1008, 0.1406, 0.0957], [-0.0082, -0.156, 0.0303], [0.117, 0.1122, -0.0288], [0.118, -0.0848, -0.057], [-0.1567, 0.008, -0.072], [-0.1344, 0.0689, 0.0246], [-0.0537, 0.1033, 0.0729], [-0.041, -0.1005, -0.0832], [-0.0508, -0.0368, -0.1116], [-0.102, 0.0541, -0.1064], [0.1072, -0.1543, 0.0222], [-0.068, 0.0873, 0.1097], [-0.0373, -0.0851, -0.0862], [0.0706, -0.1281, -0.0825], [-0.1563, 0.07, 0.0075], [-0.0685, 0.1354, 0.0602], [0.1552, -0.096, 0.0108], [0.0383, 0.1005, 0.0982], [-0.0638, 0.1128, 0.0406], [-0.0342, -0.1114, -0.0814], [0.0607, 0.1218, 0.0628], [-0.1601, -0.034, -0.0831], [0.0958, -0.0669, 0.0316], [-0.0634, -0.1404, -0.057], [0.0095, -0.0613, -0.1073], [0.0974, 0.0557, 0.1163], [-0.1248, 0.0668, 0.0681], [-0.0213, 0.0808, 0.1089], [-0.0888, -0.061, -0.1177], [0.0169, -0.1348, -0.1242], [0.1104, 0.0757, 0.1392], [0.1342, -0.1306, -0.0247], [-0.0203, 0.1004, 0.075], [-0.076, -0.0846, -0.1255], [-0.148, 0.0004, -0.0889], [-0.1104, 0.077, -0.0], [0.067, 0.1216, -0.0512], [-0.0736, -0.1048, -0.0345], [-0.1599, -0.075, 0.0538], [0.0231, -0.0954, -0.0898], [-0.0401, 0.1105, 0.0963], [-0.0415, 0.1328, 0.0171], [0.0308, 0.1302, -0.0782], [0.0849, 0.0331, -0.1238], [-0.0863, 0.0901, 0.1235], [-0.0208, 0.1307, 0.0343], [0.0236, 0.1795, -0.059], [-0.1074, -0.0861, 0.0462], [-0.1197, -0.0057, 0.0343], [0.1201, 0.1027, -0.0365], [0.1891, 0.0133, -0.0575], [0.0021, -0.1239, -0.1254], [0.0899, 0.1323, -0.1165], [-0.0294, 0.1198, 0.1432], [-0.0361, -0.1181, -0.0286], [-0.1271, 0.0031, 0.132], [0.0459, -0.0881, -0.0959], [0.0371, 0.1584, 0.0564], [0.1228, 0.1457, -0.0477], [-0.0085, 0.0978, -0.1107], [-0.083, -0.0399, 0.1461], [0.1467, -0.0588, -0.0918], [-0.0779, 0.0929, -0.0137], [0.0051, -0.1579, 0.1228], [0.0732, 0.038, -0.0917], [0.0951, -0.0574, -0.0642], [0.0475, -0.1633, -0.005], [0.0628, 0.1358, -0.0694], [-0.055, 0.1241, 0.0201], [0.126, 0.0267, -0.0317], [-0.1198, 0.0711, 0.0707], [-0.0492, 0.1683, 0.0832], [-0.0484, -0.1368, -0.027], [0.1406, -0.0388, 0.0491], [0.073, -0.1029, 0.0], [-0.0528, -0.1013, 0.1013], [-0.0052, -0.1331, -0.0233], [0.0633, -0.0707, -0.1466], [-0.0798, -0.0047, 0.0969], [-0.0467, 0.1084, 0.1625], [-0.0365, -0.1045, -0.0532], [0.1204, 0.1253, -0.0334], [-0.1291, -0.0344, 0.1311], [0.0998, 0.08, -0.11], [0.1529, -0.0194, -0.0735], [0.1165, 0.0655, -0.1085], [0.1465, -0.0737, -0.1128], [-0.0574, 0.1343, 0.0297], [0.026, 0.1742, -0.0511], [0.0882, 0.0826, -0.0895], [0.0459, -0.114, -0.1607], [-0.0878, 0.0533, 0.1086], [0.0525, -0.1483, -0.0761], [0.0312, 0.182, -0.0114], [0.1157, 0.1101, -0.0972], [0.0592, 0.0985, 0.0469], [-0.1344, 0.0443, 0.0465], [-0.0779, 0.1533, 0.0998], [-0.0625, -0.1651, -0.0843], [0.0598, -0.0916, -0.0499], [0.0719, -0.0206, -0.1467], [-0.0564, 0.123, 0.084], [-0.0007, -0.1513, 0.0183], [-0.0401, -0.1058, 0.0705], [0.0788, 0.0269, -0.1158], [0.0457, -0.186, -0.0348], [0.0749, 0.0426, -0.0871], [-0.0891, 0.0485, 0.0841], [0.1032, -0.0316, -0.0698], [-0.0652, 0.1188, 0.0433], [0.0214, 0.168, -0.0173], [0.1167, 0.1175, -0.0909], [-0.0242, 0.0383, -0.1378], [-0.0446, -0.1008, 0.0886], [0.1193, -0.0008, 0.0678], [0.0595, -0.0639, 0.1029], [-0.1435, 0.0093, -0.0722], [-0.1679, 0.0103, -0.0779], [0.1081, -0.102, 0.0252], [0.1737, 0.0708, -0.0588], [-0.1808, 0.0399, -0.023], [-0.0882, 0.1124, -0.0735], [-0.0216, -0.1085, 0.0759], [0.0228, -0.1223, 0.0914], [-0.1448, -0.028, -0.111], [-0.0505, 0.0844, -0.1523], [-0.0407, -0.1031, 0.0946], [0.011, 0.1522, -0.0122], [-0.1137, -0.1363, -0.0661], [-0.1314, -0.0707, -0.0482], [-0.1675, 0.0407, -0.0186], [-0.1325, -0.0572, -0.0211], [0.1748, 0.0675, 0.0113], [0.1776, 0.0255, 0.0158], [0.117, -0.0514, 0.0839], [0.1029, 0.0888, -0.081], [0.0033, 0.1084, -0.0901], [-0.0972, -0.0732, 0.0804], [-0.1464, -0.005, 0.0257], [-0.0752, -0.084, -0.1122], [-0.1093, -0.089, -0.107], [0.0395, -0.1049, 0.0486], [-0.0243, -0.1176, -0.011], [0.0095, 0.1315, -0.0557], [-0.1835, 0.0025, 0.0031], [-0.036, -0.1638, 0.0775], [0.1518, 0.0616, -0.0665], [0.1629, -0.0807, -0.0198], [0.0491, -0.1249, 0.0371], [0.1187, 0.0404, -0.0692], [-0.0945, -0.1045, -0.0487], [0.0772, 0.0282, 0.1228], [-0.0485, -0.14, 0.0833], [0.1036, 0.0153, 0.0842], [0.0593, -0.0768, 0.0995], [-0.1477, -0.1248, 0.0], [0.0875, -0.0726, 0.1104], [-0.1223, 0.0553, -0.0751], [-0.0908, 0.169, -0.021], [-0.1052, -0.0663, -0.0855], [0.1264, -0.0565, 0.0796], [0.0556, -0.1785, 0.0354], [0.1342, 0.035, 0.0736], [0.0888, -0.0646, 0.062], [-0.0451, -0.1184, -0.0145], [-0.0159, 0.0864, -0.0943], [-0.1428, -0.0517, -0.005], [0.1144, -0.0268, 0.071], [0.0514, -0.1048, 0.1186], [0.0714, 0.147, -0.1061], [-0.0296, -0.1191, 0.0924], [-0.1201, -0.1199, -0.0536], [-0.1179, -0.0099, -0.102], [0.0774, -0.1016, 0.1119], [-0.1054, -0.0961, -0.0255], [0.0417, -0.0862, 0.0789], [0.1092, 0.0463, 0.0068], [-0.0445, -0.1365, 0.0783], [0.1155, 0.1386, 0.0535], [0.1044, -0.0945, 0.012], [0.1365, -0.0502, -0.0774], [0.1177, -0.0457, 0.0474], [0.1117, -0.1517, -0.046], [0.0358, 0.0977, 0.0594], [-0.1398, 0.0193, -0.078], [0.1801, -0.0434, 0.0691], [0.0812, -0.0369, -0.1304], [0.0374, 0.0521, 0.107], [-0.1374, 0.0231, -0.0758], [0.1017, -0.0891, -0.0214], [-0.0437, 0.08, 0.0888], [0.0173, -0.1172, -0.1063], [-0.1505, 0.0541, 0.0823], [0.1646, -0.0867, -0.0677], [0.036, -0.112, -0.0334], [0.0721, 0.1441, 0.0093], [0.1564, 0.0474, -0.0276], [-0.0835, -0.0913, -0.0114], [0.1491, -0.0904, -0.0448], [0.15, -0.0773, 0.0774], [0.0576, 0.1671, 0.081], [-0.1468, -0.0669, -0.1179], [-0.1149, 0.0439, -0.0661], [-0.1393, -0.0375, 0.0901], [-0.0819, 0.0547, 0.1724], [-0.0407, -0.1193, -0.1434], [0.0725, -0.0636, -0.0917], [0.0199, 0.0968, 0.0925], [-0.1396, -0.0207, 0.0288], [-0.0205, 0.1462, 0.0593], [-0.0815, -0.1218, -0.0776], [0.009, 0.1155, 0.1141], [-0.124, -0.0826, -0.0887], [0.0249, -0.1279, 0.0056], [-0.1002, -0.0324, -0.0576], [-0.1066, 0.0596, -0.0552], [-0.1128, -0.0398, -0.0243], [-0.1261, 0.0309, 0.0491], [-0.1081, -0.0765, -0.1438], [-0.1478, 0.0457, -0.0596], [-0.0116, 0.1145, 0.0713], [-0.0488, -0.1013, 0.0643], [0.1266, -0.0021, 0.0646], [-0.0742, -0.1244, 0.0894], [0.1142, 0.0228, -0.0564], [-0.0834, 0.0827, 0.0598], [0.13, 0.1462, -0.0271], [-0.1451, 0.0288, -0.0235], [-0.0777, 0.0753, -0.1008], [-0.0318, -0.0796, 0.1155], [0.1137, 0.0236, -0.07], [-0.1157, 0.0368, 0.0115], [0.0717, -0.1592, 0.0365], [0.1657, -0.0771, 0.0377], [0.0464, 0.1353, 0.0125], [-0.0898, 0.0858, 0.0366], [-0.0214, 0.1228, -0.0154], [0.0468, -0.0123, -0.1677], [-0.0555, 0.1185, 0.107], [0.0208, -0.124, 0.0054], [0.0279, 0.1186, -0.1083], [-0.0816, 0.1079, 0.1234], [0.037, 0.135, -0.0816], [0.0929, -0.0108, -0.1077], [-0.133, 0.1075, 0.0477], [-0.0562, 0.1095, -0.0497], [-0.0236, -0.0927, 0.1217], [0.0967, 0.0058, -0.1204], [0.0519, 0.138, -0.1265], [0.1143, 0.019, -0.1311], [-0.1293, 0.1012, 0.0881], [-0.072, 0.1624, -0.0124], [0.1213, 0.0637, -0.0128], [-0.17, 0.048, 0.0222], [-0.0667, 0.1339, 0.013], [-0.0513, -0.1108, -0.0012], [-0.1267, -0.0286, 0.0081], [0.0279, -0.1766, -0.0151], [-0.1209, 0.0822, -0.0703], [-0.12, 0.0691, -0.0152], [-0.0966, 0.114, -0.0869], [-0.0258, -0.1468, 0.1283], [0.1407, 0.0796, -0.0838], [0.1497, -0.0259, -0.0042], [0.0862, -0.1039, 0.0587], [-0.1694, 0.0515, 0.023], [-0.0058, -0.1136, 0.0783], [-0.0152, 0.1288, -0.1517], [0.104, -0.0457, 0.0966], [0.0255, -0.1295, 0.136], [-0.1222, 0.091, 0.0281], [-0.0568, -0.0263, -0.189], [-0.0488, -0.0433, -0.1817], [0.0059, -0.1918, 0.0273], [-0.105, -0.0217, -0.1194], [-0.0888, 0.0217, -0.1203], [0.0446, -0.1047, -0.0428], [0.0357, 0.105, 0.1568], [-0.0188, 0.1776, 0.0318], [-0.0649, -0.1055, -0.1018], [0.1542, -0.0778, -0.0722], [0.0778, 0.0857, 0.0373], [0.0884, -0.0781, -0.0243], [-0.0256, 0.1364, 0.0555], [-0.1275, -0.0349, -0.1142], [-0.0415, -0.1552, -0.119], [-0.1025, -0.0277, -0.0661], [0.1392, -0.1046, 0.0411], [0.0246, -0.1774, -0.0216], [0.084, 0.1312, 0.0661], [-0.1201, -0.0371, -0.0699], [0.022, -0.1304, 0.1002], [0.0188, 0.1937, 0.0169], [-0.0672, -0.1024, -0.1155], [0.0327, -0.1221, 0.1029], [-0.059, -0.0966, -0.0666], [-0.0897, -0.0137, -0.1217], [0.0223, 0.1153, -0.0236], [-0.1218, -0.0979, -0.0554], [0.1087, -0.0221, 0.0952], [-0.0548, 0.1336, -0.12], [-0.0403, -0.1529, 0.0501], [-0.102, 0.1487, -0.0726], [0.1144, 0.02, -0.126], [0.1431, 0.0844, -0.0128], [-0.0435, 0.1499, -0.0379], [-0.0687, -0.1331, 0.0551], [-0.1543, -0.055, 0.0426], [0.1631, -0.0612, -0.01], [0.0903, -0.1641, 0.0233], [0.082, 0.1337, 0.0515], [0.1267, 0.0356, 0.0163], [-0.105, 0.0569, 0.0097], [-0.0281, 0.1802, 0.021], [0.0875, -0.1063, 0.0034], [-0.108, 0.1244, 0.002], [-0.1173, -0.0588, -0.0727], [0.1382, -0.0638, 0.1089], [-0.027, 0.1246, -0.0462], [-0.1412, 0.0236, -0.0344], [-0.0884, 0.1444, -0.06], [-0.0081, -0.1816, 0.054]]} diff --git a/src/platform/kpi_rover_worlds/assets/models/apple_1/apple_1_wood.bin b/src/platform/kpi_rover_worlds/assets/models/apple_1/apple_1_wood.bin new file mode 100644 index 0000000..6e14958 Binary files /dev/null and b/src/platform/kpi_rover_worlds/assets/models/apple_1/apple_1_wood.bin differ diff --git a/src/platform/kpi_rover_worlds/assets/models/apple_1/apple_1_wood.gltf b/src/platform/kpi_rover_worlds/assets/models/apple_1/apple_1_wood.gltf new file mode 100644 index 0000000..e867872 --- /dev/null +++ b/src/platform/kpi_rover_worlds/assets/models/apple_1/apple_1_wood.gltf @@ -0,0 +1 @@ +{"asset": {"version": "2.0", "generator": "kpi_rover garden"}, "scene": 0, "scenes": [{"nodes": [0]}], "nodes": [{"mesh": 0, "name": "mesh"}], "meshes": [{"name": "mesh", "primitives": [{"attributes": {"POSITION": 0, "NORMAL": 1, "TEXCOORD_0": 2}, "indices": 3}]}], "accessors": [{"bufferView": 0, "componentType": 5126, "count": 18000, "type": "VEC3", "min": [-2.048381805419922, -1.9983251094818115, 0.0], "max": [2.2065482139587402, 1.7768609523773193, 3.6979119777679443]}, {"bufferView": 1, "componentType": 5126, "count": 18000, "type": "VEC3"}, {"bufferView": 2, "componentType": 5126, "count": 18000, "type": "VEC2"}, {"bufferView": 3, "componentType": 5125, "count": 18000, "type": "SCALAR"}], "bufferViews": [{"buffer": 0, "byteOffset": 0, "byteLength": 216000, "target": 34962}, {"buffer": 0, "byteOffset": 216000, "byteLength": 216000, "target": 34962}, {"buffer": 0, "byteOffset": 432000, "byteLength": 144000, "target": 34962}, {"buffer": 0, "byteOffset": 576000, "byteLength": 72000, "target": 34963}], "buffers": [{"uri": "apple_1_wood.bin", "byteLength": 648000}]} \ No newline at end of file diff --git a/src/platform/kpi_rover_worlds/assets/models/apple_2/apple_2_leaves.yaml b/src/platform/kpi_rover_worlds/assets/models/apple_2/apple_2_leaves.yaml new file mode 100644 index 0000000..fea6d0c --- /dev/null +++ b/src/platform/kpi_rover_worlds/assets/models/apple_2/apple_2_leaves.yaml @@ -0,0 +1,2 @@ +# Leaf cards of apple_2, written by tools/assets/convert_trees.py: centers and half-axes, real m. +{centers: [[0.1206, 0.4092, 1.2445], [0.2447, 0.4554, 1.546], [0.1374, 0.497, 1.8871], [0.1635, 0.7604, 1.8422], [0.2179, 0.7639, 2.1654], [0.0658, 0.8709, 2.414], [0.592, 0.3873, 1.4185], [0.5404, 0.1836, 1.6277], [0.7706, 0.3161, 1.7238], [0.8082, 0.0206, 1.7602], [1.0198, 0.1785, 1.7529], [0.9178, 0.1443, 1.9743], [1.0648, -0.0282, 1.935], [1.1443, 0.1481, 2.0753], [1.2944, -0.0323, 2.1788], [0.5568, 0.5475, 1.5282], [0.8421, 0.6251, 1.279], [0.7646, 0.815, 1.4835], [0.9969, 0.625, 1.499], [0.9619, 0.8157, 1.6521], [1.1169, 0.7607, 1.4776], [0.8189, 0.3667, 1.6022], [0.9279, 0.6143, 1.6705], [0.7406, 0.4799, 1.8856], [0.9963, 0.3345, 1.8434], [1.1225, 0.3615, 2.3072], [1.265, 0.2613, 2.2482], [0.882, 0.3792, 2.0132], [0.87, 0.5341, 2.205], [1.1029, 0.449, 1.5032], [1.2367, 0.4569, 1.7377], [1.3715, 0.5526, 1.5573], [1.6148, 0.563, 2.0317], [1.8232, 0.6132, 1.8512], [1.7464, 0.746, 2.016], [1.6594, 0.3147, 1.7548], [1.814, 0.5155, 1.8203], [1.3075, 0.7243, 1.7629], [1.1342, 0.9323, 1.6761], [1.3393, 0.9065, 1.7566], [1.3714, 0.8788, 1.9975], [1.5298, 1.2068, 2.0659], [1.5383, 1.1038, 2.2684], [1.436, 1.2143, 2.3845], [1.4504, 0.8315, 1.8144], [1.3549, 0.6747, 1.9147], [1.58, 0.6649, 1.7691], [1.4761, 0.5435, 1.9481], [1.6139, 0.7578, 1.9149], [1.4624, 0.6933, 2.0993], [1.6393, 0.5781, 1.9732], [1.6325, 0.8225, 2.1202], [1.5404, 0.563, 2.1689], [1.5722, 0.7343, 2.2691], [1.5662, 0.6017, 2.3896], [1.8333, 0.6657, 2.4144], [1.6028, 0.9036, 2.0171], [1.7589, 0.8698, 1.7352], [1.7408, 0.9236, 1.9402], [1.7206, 1.0307, 1.7442], [1.6828, 1.0763, 1.975], [1.8954, 0.9814, 1.8629], [1.9469, 1.1454, 1.8054], [1.7888, 1.2912, 2.0151], [2.0128, 1.093, 2.042], [1.9018, 1.2451, 2.1426], [2.1027, 1.346, 1.9912], [2.0161, 1.4166, 2.1921], [1.9101, 0.8667, 1.9656], [1.8313, 1.1467, 1.9133], [1.7788, 0.9448, 2.128], [1.9845, 1.0211, 1.9734], [1.7867, 1.1641, 2.1006], [1.9421, 0.9285, 2.1807], [2.2296, 1.1837, 2.3712], [2.0356, 1.1292, 2.5257], [2.197, 1.0121, 2.4519], [2.1892, 1.2309, 2.5322], [2.1152, 1.0044, 2.6521], [2.3459, 1.1159, 2.5398], [2.1219, 1.0055, 1.9473], [2.0712, 1.0845, 2.1505], [2.1798, 1.1116, 1.9026], [2.2105, 1.0406, 2.099], [2.2163, 1.2397, 1.9406], [2.2982, 1.1194, 2.0423], [2.2323, 1.13, 2.2253], [2.4056, 1.2386, 2.0571], [2.2238, 1.2949, 2.2229], [2.3778, 1.3453, 2.1587], [2.3995, 1.1633, 2.3804], [0.2389, 0.5284, 1.2604], [0.1868, 0.5525, 1.5409], [0.0937, 0.9337, 1.5931], [0.2707, 1.1616, 2.0191], [0.1065, 0.914, 1.5398], [0.1389, 0.9165, 1.8278], [0.1783, 1.1746, 1.7609], [-0.0929, 1.1998, 1.9045], [0.1444, 1.2271, 2.046], [0.4183, 0.5663, 1.6915], [0.6677, 0.6477, 1.7662], [0.4877, 0.495, 1.9898], [0.7162, 0.6207, 2.0879], [0.6022, 0.3948, 2.2234], [0.7389, 0.5681, 2.4071], [0.4599, 0.8404, 1.7323], [0.5746, 0.9409, 1.6071], [0.6132, 0.9245, 1.8768], [0.8181, 0.9767, 1.6487], [0.6187, 1.0987, 1.7726], [0.8167, 0.993, 1.9372], [0.8123, 1.1837, 1.7529], [0.9295, 1.1291, 1.9267], [0.3354, 0.9332, 1.9289], [0.5278, 1.0836, 2.1318], [0.307, 0.9867, 2.2245], [0.4929, 1.1952, 2.3242], [0.5947, 1.138, 2.5451], [0.4748, 1.1649, 2.6965], [0.2879, 0.9424, 2.3174], [0.3255, 0.8227, 2.5612], [0.2524, 0.9434, 2.7804], [0.7315, 1.1727, 1.9869], [0.6327, 0.9374, 2.1933], [0.7211, 1.1281, 2.1729], [0.809, 0.9215, 2.2048], [0.9054, 1.1152, 2.1551], [0.743, 1.0666, 2.3884], [0.994, 0.9253, 2.2835], [0.9312, 1.1649, 2.3614], [0.8652, 0.9846, 2.4502], [1.0644, 1.1195, 2.757], [0.8424, 1.2005, 2.1707], [0.7297, 1.3425, 1.969], [0.7164, 1.3015, 2.2423], [0.6729, 1.4381, 2.1084], [0.8425, 1.3739, 2.2734], [0.866, 1.5068, 2.0472], [0.7048, 1.5057, 2.2851], [0.9671, 1.636, 2.244], [0.7431, 1.714, 2.3538], [0.9196, 1.7797, 2.2959], [0.8259, 1.6933, 2.4894], [1.0638, 1.7341, 2.4391], [0.8614, 1.8429, 2.4211], [0.8194, 1.2621, 2.3697], [0.9707, 1.4768, 2.3018], [0.7311, 1.444, 2.4135], [0.8933, 1.6023, 2.4294], [0.7844, 1.3764, 2.5856], [0.8162, 1.6125, 2.6113], [0.9151, 1.3764, 2.7063], [1.0301, 1.4404, 2.7898], [0.9898, 1.6361, 2.7925], [0.8926, 1.4723, 2.9536], [1.0987, 1.5418, 2.8698], [1.0452, 1.4551, 3.0415], [1.123, 1.681, 3.0046], [0.9656, 1.7235, 2.3056], [1.0601, 1.6023, 2.4992], [1.1174, 1.6723, 2.27], [1.0144, 1.7618, 2.4418], [1.1151, 1.7433, 2.5481], [1.3685, 1.7685, 2.571], [1.3061, 2.0175, 2.5384], [1.2993, 1.8279, 2.7649], [1.0207, 1.8763, 2.3606], [1.1481, 1.8106, 2.4622], [0.9574, 1.9333, 2.4963], [1.0934, 1.7903, 2.6252], [1.2468, 1.8544, 2.6554], [1.1031, 2.0299, 2.5814], [1.0631, 2.1135, 2.7423], [1.2467, 2.1124, 2.675], [1.125, 2.0452, 2.8569], [-0.1763, -0.0472, 1.7356], [-0.3976, 0.1061, 1.6482], [-0.5125, 0.0947, 2.258], [-0.5391, 0.3473, 2.3054], [-0.7356, 0.2091, 2.4594], [-0.558, -0.0686, 1.7853], [-0.6896, -0.2857, 1.773], [-0.8159, -0.066, 1.6898], [-0.8976, -0.2899, 1.6368], [-1.1057, -0.1277, 1.7], [-1.112, -0.3225, 1.8615], [-1.1664, -0.1168, 1.9375], [-1.3364, -0.2435, 1.8121], [-0.6467, -0.288, 2.0111], [-0.6749, -0.0953, 2.1499], [-0.7726, -0.1196, 2.3514], [-0.9221, -0.098, 2.5326], [-0.8236, -0.1317, 2.7457], [-1.0002, -0.0374, 1.8553], [-0.9587, -0.1827, 2.1035], [-0.8909, 0.0737, 2.035], [-1.089, -0.0692, 2.022], [-0.9607, -0.0349, 2.189], [-1.0715, 0.1393, 2.075], [-0.9922, 0.125, 2.2927], [-1.1098, 0.025, 2.4117], [-1.0996, 0.2484, 2.3511], [-1.2686, 0.1131, 2.4062], [-1.0939, 0.1761, 2.5509], [-1.2177, -0.2384, 1.9868], [-1.3053, -0.1716, 2.1661], [-1.2285, -0.3883, 2.0939], [-1.3886, -0.3023, 2.1623], [-1.5354, -0.3055, 2.3731], [-1.5627, -0.5204, 2.3886], [-1.529, -0.3518, 2.5908], [-1.3061, -0.2956, 2.2821], [-1.5063, -0.2847, 2.2557], [-1.2919, -0.2017, 2.4507], [-1.5303, -0.0888, 2.3532], [-1.4789, -0.3133, 2.4178], [-1.365, -0.1165, 2.5164], [-1.6237, -0.1321, 2.5871], [-1.4498, -0.0708, 2.7784], [-1.6728, -0.2577, 2.0897], [-1.6935, -0.2864, 2.4151], [-1.7395, -0.3303, 2.2052], [-1.7654, -0.1537, 2.3867], [-1.8213, -0.1865, 2.1518], [-1.8624, -0.0484, 2.3416], [-1.8429, -0.2231, 2.4887], [-1.9799, -0.0834, 2.2972], [-1.9077, -0.102, 2.4905], [-2.0567, -0.184, 2.3349], [-1.9892, -0.2637, 2.5406], [-1.8041, -0.1889, 2.246], [-1.7735, -0.1306, 2.4109], [-1.906, -0.3101, 2.2882], [-1.7514, -0.2791, 2.5518], [-1.8809, -0.1495, 2.3966], [-1.8966, -0.3472, 2.4473], [-1.9852, -0.2038, 2.4278], [-1.9233, -0.109, 2.5568], [-2.0288, -0.2975, 2.5159], [-1.8922, -0.2211, 2.7245], [-0.6907, -0.1411, 1.9675], [-0.6125, 0.0123, 2.1986], [-0.8257, -0.1481, 2.2898], [-0.7943, 0.0939, 2.3962], [-0.827, -0.0649, 2.5653], [-0.7137, 0.1571, 2.6612], [-0.9991, 0.1176, 2.6528], [-0.4519, -0.4163, 2.0856], [-0.6205, -0.5429, 1.9622], [-0.44, -0.6772, 2.0784], [-0.6336, -0.6677, 2.224], [-0.5853, -0.9033, 2.1279], [-0.7045, -0.7749, 2.1963], [-0.5732, -0.8839, 2.3703], [-0.7621, -0.7325, 2.4969], [-0.8003, -0.9808, 2.4757], [-0.5888, -0.3322, 2.3689], [-0.3933, -0.4847, 2.7333], [-0.5508, -0.4502, 3.0099], [-0.7828, -0.5307, 3.0222], [-0.552, -0.5152, 2.7139], [-0.4841, -0.3527, 2.909], [-0.3117, -0.5654, 2.922], [-0.7703, -0.6354, 2.302], [-0.64, -0.7868, 2.4892], [-0.8281, -0.8087, 2.3624], [-0.7654, -0.7321, 2.6251], [-0.8697, -0.8763, 2.5424], [-1.2319, -0.7436, 2.7287], [-0.5189, -0.9523, 2.4862], [-0.7068, -0.9718, 2.6493], [-0.6628, -1.084, 2.4642], [-0.7422, -1.123, 2.644], [-0.5466, -1.1736, 2.5585], [-0.6068, -1.1102, 2.8032], [-0.6932, -1.2701, 2.6445], [-0.6807, -1.2231, 2.8186], [-0.6082, -1.4182, 2.7063], [-0.5497, -1.2704, 2.8833], [-0.748, -1.3709, 2.8626], [-0.5294, -1.4303, 2.8485], [-0.6853, -1.5587, 2.8811], [-0.9996, -1.0861, 2.7223], [-1.0283, -1.2235, 2.769], [-0.8302, -1.2419, 2.9483], [-1.0396, -1.0898, 2.9258], [-0.9284, -1.1736, 3.0248], [-1.1531, -1.1946, 2.9444], [-0.9639, -1.3465, 3.039], [-1.1279, -1.3156, 3.0083], [-0.9837, -1.2792, 3.1717], [-1.1687, -1.2043, 3.1194], [-0.814, -1.4005, 2.6629], [-0.9777, -1.432, 2.6449], [-1.0388, -1.3785, 2.818], [-1.1062, -1.5134, 2.7917], [-0.854, -1.6108, 2.8761], [-1.0304, -1.4331, 2.9989], [-0.8822, -1.5721, 3.0505], [-1.1126, -1.5111, 2.9844], [-1.0028, -1.6851, 2.9662], [-0.9953, -1.5247, 3.1085], [-0.9754, -1.6759, 3.0992], [-1.1366, -1.5572, 3.1665], [-0.607, -0.5397, 2.5164], [-0.717, -0.5694, 2.6601], [-0.7164, -0.8103, 2.5655], [-0.6378, -0.6584, 2.9013], [-0.8806, -0.4508, 2.6297], [-0.9199, -0.6419, 2.7607], [-0.7747, -0.4418, 2.8112], [-0.9127, -0.3303, 2.8592], [-0.8492, -0.4275, 3.0804], [-1.0328, -0.5062, 3.11], [-0.9598, -0.3145, 3.1012], [-1.1455, -0.3809, 3.098], [-0.9738, -0.4308, 3.2941], [-1.0809, -0.2547, 3.1717], [-1.1589, -0.4077, 3.268], [-1.0291, -0.2852, 3.3281], [-0.9515, -0.739, 2.9707], [-1.1762, -0.6636, 2.8407], [-1.0197, -0.8735, 2.8448], [-1.0901, -0.7082, 3.0297], [-1.2243, -0.8245, 2.8077], [-1.0527, -0.8748, 2.9999], [-1.2331, -0.7346, 3.0129], [-1.143, -0.8451, 3.1151], [-1.3363, -0.8431, 3.0039], [-1.2766, -0.7904, 3.2227], [-1.2176, -0.9601, 3.2109], [-1.3357, -1.0864, 3.1651], [-1.3162, -0.9227, 3.3425], [-1.2853, -0.7388, 2.9995], [-1.438, -0.8871, 3.4509], [-1.4332, -0.7357, 3.6192], [-1.4028, -0.9611, 3.6175], [-1.2592, -0.8289, 3.3915], [-1.4502, -0.8992, 3.383], [-1.5354, -0.7428, 3.3572], [-1.4776, -0.8079, 3.5414], [-1.5465, -0.5768, 3.5141], [0.2995, -0.3939, 1.7163], [0.1381, -0.4482, 1.9351], [0.0882, -0.7999, 2.0158], [0.2519, -1.0, 1.9513], [0.2164, -0.9575, 2.2139], [0.0965, -1.1265, 2.1507], [0.0959, -1.2546, 2.4551], [0.6882, -0.2383, 2.3356], [0.6304, -0.5038, 2.4426], [0.8534, -0.3942, 2.3953], [0.6909, -0.3137, 2.6173], [0.9078, -0.344, 2.6519], [0.2483, -0.406, 2.1695], [0.1561, -0.6812, 2.0264], [0.0981, -0.6123, 2.2924], [0.2168, -0.8508, 2.2819], [0.2137, -0.7036, 2.4869], [0.0633, -0.7504, 2.7656], [0.1595, -0.9188, 2.9237], [-0.1059, -0.8781, 2.9733], [0.4443, -0.7595, 1.9581], [0.5729, -0.6301, 2.1487], [0.4284, -0.8364, 2.2122], [0.6413, -0.7988, 2.0428], [0.8029, -0.8928, 2.2296], [0.6223, -0.9777, 2.3869], [0.7949, -0.9963, 2.4106], [0.667, -1.1644, 2.4087], [0.9014, -1.167, 2.3547], [0.4485, -0.7907, 2.4817], [0.6267, -0.5936, 2.4628], [0.4354, -0.5886, 2.5976], [0.6172, -0.7492, 2.6469], [0.4412, -0.6979, 2.8619], [0.5087, -0.7461, 3.06], [0.6363, -0.5021, 3.3557], [0.5786, -0.8443, 2.4946], [0.3449, -0.8985, 2.4492], [0.4604, -0.8827, 2.67], [0.348, -1.0624, 2.4921], [0.3491, -0.9876, 2.6897], [0.3519, -1.228, 2.6268], [0.4691, -1.0777, 2.8192], [0.251, -1.083, 2.759], [0.2034, -1.2441, 2.8472], [0.6546, -0.8465, 2.6781], [0.8576, -0.7574, 2.5743], [0.7523, -0.9958, 2.6782], [1.0502, -0.9464, 2.6852], [0.9163, -1.0025, 2.8545], [1.1526, -1.1248, 2.8302], [1.1105, -1.2492, 2.9363], [0.7853, -0.9416, 2.6227], [0.5217, -0.8933, 2.6946], [0.5317, -1.0216, 2.8002], [0.7561, -1.0565, 2.8323], [0.5068, -0.992, 2.9402], [0.679, -1.1154, 2.9985], [0.7079, -0.9003, 3.0488], [0.6957, -1.0771, 3.1687], [0.6099, -0.8771, 3.1515], [0.677, -0.9642, 3.2724], [0.5709, -1.0554, 3.3447], [0.6107, -0.8569, 3.4046], [0.8086, -1.1655, 2.5442], [0.7472, -1.1362, 2.8353], [0.658, -1.2753, 2.6183], [0.79, -1.3952, 2.6318], [0.9241, -1.5412, 2.7695], [0.8959, -1.5801, 2.9816], [0.6823, -1.5553, 3.0283], [0.6286, -1.7189, 3.0718], [0.9067, -1.2052, 2.6834], [0.8368, -1.0329, 2.897], [0.8709, -1.2796, 2.8361], [0.9904, -1.1117, 2.7778], [0.8714, -1.1686, 2.9984], [1.0284, -1.2842, 2.8422], [1.1823, -1.2119, 2.93], [1.2103, -1.134, 3.103], [1.1606, -1.134, 3.2548], [1.0605, -1.3489, 2.8385], [1.0475, -1.39, 3.0272], [1.099, -1.5671, 2.8822], [0.853, -1.6292, 3.173], [1.0509, -1.7787, 3.0311], [0.8589, -1.7954, 3.1697], [1.0924, -1.7494, 3.1818], [1.1241, -1.7568, 3.3743], [1.124, -1.3218, 2.7407], [1.2612, -1.3165, 2.8557], [1.2611, -1.5341, 2.993], [1.3629, -1.4429, 2.782], [1.5689, -1.3603, 2.8631], [1.6048, -1.5643, 2.8753], [1.6387, -1.3944, 3.0341], [1.2014, -1.5376, 2.9733], [1.323, -1.6734, 2.9343], [1.519, -1.5609, 2.9847], [1.5042, -1.7704, 2.9526], [1.2143, -1.389, 2.9668], [1.1452, -1.5842, 2.9227], [1.2573, -1.6135, 2.8868], [1.4223, -1.6418, 2.8875], [1.2888, -1.6174, 3.1982], [1.3597, -1.7541, 3.0441], [1.4795, -1.7911, 3.106], [1.3865, -1.6706, 3.285], [0.7388, -1.2924, 2.9389], [0.7583, -1.4455, 2.763], [0.7424, -1.4556, 3.0964], [0.6096, -1.6156, 2.8859], [0.8536, -1.6192, 3.0594], [0.6188, -1.5469, 3.1132], [0.7718, -1.6114, 3.2323], [0.5671, -1.6897, 3.137], [0.7741, -1.7945, 3.1802], [0.7762, -1.7703, 3.3666], [0.6684, -1.9042, 3.3163], [0.9802, -1.3706, 3.0359], [0.7966, -1.5269, 3.1528], [1.0937, -1.4852, 3.3073], [0.9252, -1.6477, 3.3476], [1.1293, -1.643, 3.2759], [1.0318, -1.51, 3.4819], [1.0198, -1.748, 3.3649], [1.216, -1.5998, 3.4256], [1.0049, -1.6499, 3.5017], [1.1589, -1.7692, 3.424], [0.9423, -1.5022, 3.1342], [0.8127, -1.7249, 3.1063], [0.9144, -1.7791, 3.1711], [0.95, -1.6264, 3.3844], [1.0149, -1.808, 3.3037], [0.8434, -1.7057, 3.4083], [0.8521, -1.8922, 3.3121], [0.9865, -1.7661, 3.4388], [0.7578, -1.8161, 3.4643], [0.9557, -1.9231, 3.395], [0.9076, -1.769, 3.5722], [0.8146, -1.9378, 3.4648], [-0.334, 0.3262, 1.8262], [-0.2237, 0.6083, 1.9491], [-0.4234, 0.6853, 1.7339], [-0.6166, 1.0022, 1.9163], [-0.3468, 0.9082, 1.8337], [-0.5457, 0.9832, 2.0406], [-0.41, 0.3956, 2.0749], [-0.2372, 0.3643, 2.3551], [-0.5387, 0.4834, 2.7502], [-0.8039, 0.3521, 2.6813], [-0.5732, 0.4896, 2.5026], [-0.4699, 0.6716, 2.7903], [-0.436, 0.601, 3.1081], [-0.3959, 0.763, 2.0666], [-0.3298, 1.1873, 2.638], [-0.5322, 1.0538, 2.6791], [-0.4813, 1.2794, 2.8389], [-0.5541, 0.6014, 2.4041], [-0.641, 0.8359, 2.3468], [-0.6852, 0.7213, 2.5457], [-0.8541, 0.5949, 2.5117], [-0.8543, 0.8241, 2.5932], [-0.934, 0.6647, 2.7524], [-1.0048, 0.8102, 2.9064], [-1.2276, 0.8384, 2.7727], [-1.1633, 0.6992, 2.9232], [-0.732, 0.9002, 2.49], [-0.5974, 0.7108, 2.5876], [-0.5786, 0.974, 2.6031], [-0.7804, 0.806, 2.6719], [-0.6886, 0.971, 2.743], [-0.6912, 0.7747, 2.8349], [-0.5959, 0.79, 3.038], [-0.6149, 1.0695, 3.0392], [-0.7524, 0.8768, 3.095], [-0.5297, 0.9139, 3.1725], [-1.0183, 1.4233, 2.6718], [-0.789, 1.4988, 2.774], [-0.7911, 1.4899, 2.9847], [-0.8466, 1.6716, 2.8944], [-0.8575, 1.4396, 2.7185], [-0.9555, 1.4363, 2.9304], [-1.0315, 1.5496, 2.7434], [-1.2058, 1.6633, 2.8493], [-0.8589, 1.0866, 2.8942], [-1.2008, 1.1506, 2.7724], [-1.037, 1.0585, 2.9566], [-1.2411, 1.0484, 2.9292], [-1.2296, 1.2354, 3.0008], [-1.2129, 1.0656, 3.1019], [-1.3442, 1.1976, 3.1084], [-1.2482, 1.3359, 3.2208], [-1.1932, 1.2283, 3.3641], [-1.3812, 1.2808, 3.2872], [-0.9241, 1.4056, 2.9061], [-1.1781, 1.4639, 2.7984], [-1.2354, 1.4784, 2.9603], [-0.9998, 1.4879, 3.0601], [-1.1772, 1.5085, 3.1162], [-0.9987, 1.6439, 3.045], [-1.0773, 1.7996, 3.0469], [-1.2732, 1.661, 3.2216], [-1.0018, 1.7237, 3.2435], [-1.1735, 1.6936, 3.3553], [-1.0633, 1.8543, 3.2208], [-1.2263, 1.553, 3.061], [-1.2748, 1.723, 3.0855], [-1.4914, 1.6605, 3.0483], [-1.3674, 1.788, 3.1329], [-1.5553, 1.7334, 3.259], [-1.3215, 1.7431, 3.32], [-1.3918, 1.7615, 3.0689], [-1.5589, 1.7574, 3.0905], [-0.1768, 0.3462, 2.1583], [-0.1217, 0.6222, 2.1095], [-0.1069, 0.495, 2.3604], [-0.3236, 0.5938, 2.5449], [-0.2012, 0.5869, 2.7902], [-0.0218, 0.7348, 2.7797], [-0.2666, 0.8406, 2.0814], [0.0195, 0.7371, 2.1206], [0.1101, 0.9957, 2.2745], [0.0518, 1.2084, 2.3172], [0.3046, 1.0905, 2.2947], [0.2341, 1.2378, 2.4354], [-0.2591, 1.0922, 2.0446], [-0.2668, 1.0983, 2.3111], [-0.4788, 1.0943, 2.1052], [-0.4079, 1.2089, 2.2972], [-0.4474, 1.1607, 2.5318], [-0.5439, 1.373, 2.3988], [-0.6489, 1.1958, 2.5654], [-0.4724, 1.318, 2.5933], [-0.0966, 1.1818, 2.2453], [-0.1507, 1.1194, 2.4369], [-0.2839, 1.2498, 2.5362], [0.0103, 1.3634, 2.6713], [-0.169, 1.4459, 2.7786], [-0.0324, 1.242, 2.8772], [-0.3425, 1.4406, 2.2089], [-0.3662, 1.5768, 2.343], [-0.0661, 1.5723, 2.2923], [-0.2776, 1.6366, 2.1507], [-0.0778, 1.6811, 2.1907], [0.0298, 1.79, 2.3358], [-0.1525, 1.9371, 2.2936], [-0.0488, 1.875, 2.5112], [-0.3157, 1.7507, 2.2446], [-0.4502, 1.5551, 2.4326], [-0.4823, 1.7427, 2.3052], [-0.407, 1.6685, 2.5833], [-0.366, 1.9045, 2.4247], [-0.5383, 1.7594, 2.4809], [-0.5651, 1.8005, 2.6845], [-0.3954, 1.9336, 2.6485], [-0.6167, 1.9984, 2.627], [-0.0953, 1.9404, 2.3825], [-0.3072, 2.0576, 2.3825], [-0.3037, 2.0957, 2.5616], [-0.1564, 2.1746, 2.4987], [-0.2146, 2.054, 2.6532], [-0.208, 2.2542, 2.6586], [-0.0951, 2.0465, 2.7346], [-0.0393, 2.2194, 2.6277], [-0.2414, 2.1177, 2.2818], [-0.1967, 2.0758, 2.5201], [-0.3695, 2.1618, 2.3654], [-0.005, -0.0832, 2.344], [-0.136, -0.3046, 2.4856], [-0.2631, -0.0162, 2.6659], [-0.0482, -0.0365, 2.8654], [-0.3244, -0.017, 2.9242], [-0.1502, -0.1443, 3.0654], [-0.4646, -0.2231, 2.2072], [-0.4758, -0.4245, 2.4546], [-0.6711, -0.2485, 2.5592], [-1.0475, -0.472, 2.8682], [-0.6977, -0.4462, 2.4866], [-0.7299, -0.2464, 2.6901], [-0.3976, -0.4381, 2.4339], [-0.3143, -0.6836, 2.4964], [-0.3608, -0.6455, 2.8026], [-0.4321, -0.8295, 2.9083], [-0.4839, -0.2661, 2.4956], [-0.3674, -0.4785, 2.6073], [-0.5772, -0.3851, 2.6763], [-0.3342, -0.4036, 2.8115], [-0.5276, -0.4327, 2.8917], [-0.3737, -0.2674, 3.0027], [-0.6072, -0.2711, 2.9619], [-0.4835, -0.4118, 3.1005], [-0.5089, -0.158, 3.1338], [-0.6907, -0.3588, 3.1711], [-0.3534, -0.7057, 2.6699], [-0.626, -0.6453, 2.7362], [-0.4891, -0.7909, 2.8541], [-0.6544, -0.8492, 2.9424], [-0.7953, -1.0122, 2.8353], [-0.627, -1.0283, 3.0309], [-0.8474, -0.9286, 3.047], [-0.3706, -0.4584, 2.8335], [-0.5436, -0.5458, 2.8982], [-0.3654, -0.6849, 2.9449], [-0.3504, -0.6628, 3.3129], [-0.5341, -0.5219, 3.3435], [-0.7256, -0.4859, 2.7519], [-0.8768, -0.6323, 2.8012], [-0.7466, -0.7342, 3.0539], [-0.846, -0.6253, 3.1921], [-1.0117, -0.7684, 3.231], [-1.0351, -0.6792, 3.436], [-0.7692, -0.7579, 2.8329], [-0.5102, -0.8899, 3.041], [-0.7485, -0.8826, 3.0264], [-0.6021, -1.0843, 2.9375], [-0.804, -1.0373, 3.048], [-0.8567, -1.1055, 3.2594], [-0.7347, -1.3071, 3.267], [-0.8083, -0.7591, 3.0274], [-0.5748, -0.8226, 3.0911], [-0.7005, -0.592, 3.1549], [-0.7409, -0.6297, 3.2431], [-0.796, -0.8521, 3.3009], [-0.8221, -0.6309, 3.3496], [-0.7541, -0.8523, 3.4624], [-0.6766, -0.6427, 3.4473], [-0.8506, -0.708, 3.456], [-0.6836, -0.7642, 3.5764], [-1.006, -0.7735, 3.0494], [-0.9235, -0.8515, 3.2699], [-1.087, -0.9073, 3.0357], [-1.0568, -0.7997, 3.2503], [-1.1275, -1.0896, 3.2915], [-0.8256, -0.9493, 3.3642], [-0.912, -1.1692, 3.2216], [-0.662, -1.098, 3.3721], [-0.9473, -1.0384, 3.4361], [-0.82, -1.2754, 3.3455], [-0.9946, -1.1705, 3.4748], [-0.78, -1.242, 3.4949], [-1.0068, -1.1874, 3.7022], [-1.0354, -0.9154, 3.1937], [-0.9623, -1.1255, 3.2813], [-0.9607, -0.9021, 3.3459], [-0.9641, -1.0501, 3.4077], [-1.1149, -1.1003, 3.3727], [-1.004, -0.9506, 3.5672], [-1.0966, -1.102, 3.5114], [-1.1382, -0.8869, 3.5632], [-1.2606, -1.076, 3.4797], [-1.0988, -1.0443, 3.6655], [-1.3053, -0.9028, 3.5774], [-0.9032, -1.2226, 3.2412], [-1.037, -0.9966, 3.3989], [-1.0779, -1.1719, 3.2119], [-0.9125, -1.1844, 3.4191], [-1.1822, -1.0617, 3.3659], [-1.0637, -1.3274, 3.2967], [-1.0253, -1.1255, 3.52], [-1.2131, -1.1752, 3.3584], [-1.2709, -1.2834, 3.4193], [-1.0966, -1.2691, 3.6322], [-1.3036, -1.0951, 3.5415], [-1.24, -1.3375, 3.543], [-1.1907, -1.173, 3.6846], [0.3211, 0.0109, 3.3235], [0.4838, -0.0669, 2.3343], [0.5671, 0.0006, 2.5904], [0.676, -0.2201, 2.7275], [0.7924, -0.4052, 2.7186], [0.7247, 0.0864, 2.6248], [0.4919, 0.2459, 2.6888], [0.6349, 0.0814, 2.8395], [0.7455, 0.286, 2.7301], [0.579, 0.2696, 2.9275], [0.8027, 0.1645, 2.9628], [0.7635, 0.4177, 2.9356], [0.677, -0.1471, 2.9393], [0.8503, 0.0078, 2.9665], [0.6689, 0.0326, 3.1042], [0.7578, -0.183, 3.0725], [0.8527, -0.0231, 3.1741], [0.6568, -0.0842, 3.2335], [0.8377, 0.2556, 2.8506], [0.8794, 0.0679, 2.9791], [0.9708, 0.1552, 2.7882], [0.9104, 0.2569, 3.0199], [1.0467, 0.2642, 2.8979], [1.1924, 0.1329, 2.9432], [1.0921, 0.2948, 3.0663], [1.1472, 0.0768, 3.1667], [0.9334, 0.0927, 3.1163], [1.0376, 0.15, 3.192], [0.9411, 0.3422, 3.1979], [0.8793, 0.1416, 3.2923], [0.9096, 0.3196, 3.4422], [1.0087, 0.1051, 3.5028], [1.057, 0.2087, 3.2429], [1.1883, 0.3088, 3.2223], [1.1556, 0.087, 3.2761], [1.4183, 0.2807, 3.3472], [1.2389, 0.1306, 3.4409], [1.4296, 0.0622, 3.3493], [1.3575, 0.2261, 3.4876], [1.3144, 0.0293, 3.4869], [1.4908, 0.1356, 3.4657], [1.3666, 0.2711, 3.1993], [1.2722, 0.4463, 3.3088], [1.3488, 0.2197, 3.4121], [1.4243, 0.5576, 3.4115], [1.481, 0.3997, 3.593], [1.5891, 0.375, 3.431], [1.4018, 0.3762, 3.6414], [1.5379, 0.2166, 3.5234], [0.7288, 0.0643, 2.7206], [0.6336, -0.1439, 2.8276], [0.6928, 0.0244, 2.8895], [0.7561, -0.1623, 2.9262], [0.9013, 0.0184, 2.9895], [0.6396, -0.0, 3.0866], [0.8127, -0.2001, 3.0908], [0.6935, -0.138, 3.2108], [0.9898, -0.1594, 2.5546], [1.0945, -0.1813, 2.7068], [1.1495, -0.2605, 2.8864], [0.9809, -0.4436, 2.8817], [1.1085, -0.559, 2.858], [1.1358, -0.2606, 2.9323], [1.2451, -0.2207, 2.8821], [1.2694, 0.0067, 2.8849], [1.177, -0.1526, 3.0254], [1.2574, -0.0057, 3.0536], [1.2481, -0.423, 2.8456], [1.2425, -0.3221, 3.0347], [1.2609, -0.4936, 2.9471], [1.1539, -0.445, 3.1176], [1.2832, -0.3214, 3.0886], [1.4847, -0.3166, 3.0592], [1.3189, -0.5088, 3.1588], [1.5178, -0.4917, 3.0201], [1.3153, -0.1781, 3.0045], [1.4534, -0.1938, 2.8452], [1.5132, -0.388, 2.8162], [1.51, -0.1956, 3.0296], [1.6465, -0.3301, 2.9133], [1.5672, -0.5102, 2.9932], [1.6465, -0.3074, 3.0644], [-0.3761, 0.2967, 2.7036], [-0.2423, 0.4279, 2.9047], [-0.4331, 0.2723, 2.9312], [-0.2643, 0.2416, 3.0941], [-0.4494, 0.3347, 3.1775], [-0.2565, 0.3986, 3.2536], [-0.4343, 0.5111, 3.2486], [-0.3062, 0.699, 2.7866], [-0.57, 0.6791, 2.829], [-0.4164, 0.8225, 2.8325], [-0.3203, 0.8004, 3.0208], [-0.4387, 0.793, 3.2122], [-0.2815, 0.9663, 3.0775], [-0.5319, 0.9987, 3.2004], [-0.715, 0.8811, 2.9905], [-0.9384, 0.7029, 2.8633], [-1.0206, 0.8745, 2.867], [-1.0183, 0.7314, 3.027], [-1.0075, 0.9588, 3.078], [-1.061, 0.7993, 3.2065], [-1.2619, 0.738, 3.1238], [-1.0349, 1.0963, 2.7779], [-1.1261, 1.0611, 2.8819], [-1.2033, 1.0538, 3.0535], [-1.1744, 1.219, 2.9824], [-1.1225, 1.0936, 3.1756], [-0.295, 0.2856, 2.8236], [-0.4827, 0.3902, 2.6202], [-0.8137, 0.3892, 2.8103], [-0.6009, 0.027, 3.1416], [-0.6647, 0.2527, 3.362], [-0.6947, 0.5733, 3.2902], [-0.9595, 0.4537, 3.3538], [-0.7133, 0.4244, 3.4597], [-0.7849, 0.6434, 3.3841], [-0.9017, 0.4607, 3.5315], [-0.6928, 0.5156, 3.5102], [-0.9383, 0.4952, 3.2541], [-0.9585, 0.2858, 3.3722], [-0.8449, 0.4901, 3.4536], [-1.0269, 0.5535, 3.3431], [-0.9946, 0.4409, 3.5282], [-0.837, 0.4433, 3.4839], [-0.9499, 0.3001, 3.5846], [-0.1923, 0.505, 3.1616], [-0.3492, 0.6687, 3.2421], [-0.399, 0.4352, 3.305], [-0.2195, 0.6068, 3.3457], [-0.2625, 1.0115, 2.857], [-0.4766, 1.023, 3.0394], [-0.2621, 1.0378, 3.0809], [-0.2419, 1.175, 3.053], [-0.4649, 1.2603, 3.0841], [-0.2963, 1.3175, 3.0611], [-0.5624, 1.023, 3.1022], [-0.3762, 1.1934, 3.0914], [-0.6905, 1.183, 3.1427], [-0.468, 1.2279, 3.2154], [-0.6037, 1.3767, 3.0575], [-0.4719, 1.3541, 3.199], [-0.6914, 1.3564, 3.185], [-0.3559, 0.8099, 3.1345], [-0.1859, 0.8999, 3.0053], [-0.2235, 0.8136, 3.1658], [-0.1736, 1.0532, 3.0973], [-0.2385, 1.1023, 3.2737], [-0.3461, 1.1907, 3.0973], [-0.1606, 1.2259, 3.1222], [-0.4073, 1.229, 3.2549], [-0.1432, 1.1324, 3.3413], [-0.3121, 1.3607, 3.306], [-0.1508, 1.3852, 3.3064], [0.1132, -0.0383, 3.2799], [-0.0011, -0.2849, 3.2915], [0.1135, -0.3639, 2.9193], [-0.1039, -0.2375, 3.0642], [0.0674, -0.285, 3.0881], [0.2489, -0.2956, 3.0884], [0.1076, -0.4401, 3.1631], [0.2466, -0.3607, 3.3468], [0.1172, -0.1896, 3.2099], [0.1484, -0.1915, 3.2563], [0.1928, -0.4073, 3.378], [0.0927, -0.1645, 3.368], [0.0216, -0.3705, 3.5268], [0.2171, -0.2559, 3.4714], [-0.0125, -0.4995, 3.2874], [0.187, -0.5279, 3.3511], [0.1906, -0.6917, 3.2644], [0.0653, -0.5987, 3.4697], [0.0374, -0.7833, 3.2958], [0.2211, -0.7432, 3.4656], [0.0745, -0.5843, 3.3132], [0.204, -0.6878, 3.327], [0.3094, -0.4644, 3.3894], [0.1187, -0.5703, 3.5262], [0.3088, -0.674, 3.3845], [0.3026, -0.4887, 3.5659], [0.1615, -0.7218, 3.5431], [0.4073, -0.627, 3.5045], [0.1272, -0.5163, 3.4499], [-0.0429, -0.648, 3.3241], [-0.0231, -0.5215, 3.537], [0.1339, -0.6748, 3.638], [0.2043, -0.7247, 3.5512], [0.1677, -0.8849, 3.4074], [0.3781, -0.779, 3.5102], [0.1494, -0.8225, 3.5921], [0.2807, -0.9276, 3.4719], [0.3243, -0.7879, 3.6848], [0.1253, -0.7233, 3.6417], [0.2791, -0.79, 3.5787], [0.0694, -0.8383, 3.6303], [0.0837, -0.9534, 3.6381], [0.3438, -0.9494, 3.6916], [0.1422, 0.2425, 2.8606], [0.3102, 0.2441, 3.1282], [-0.174, 0.3345, 3.1965], [-0.0946, 0.602, 3.1856], [0.1748, 0.292, 3.1727], [0.1111, 0.4894, 3.2111], [0.2752, 0.4126, 3.3031], [0.0963, 0.4948, 3.4287], [0.0769, 0.5439, 3.299], [0.234, 0.6503, 3.1431], [0.045, 0.6737, 3.3626], [0.1619, 0.8123, 3.2654], [0.2021, 0.7566, 3.241], [-0.0366, 0.6706, 3.3894], [0.228, 0.623, 3.4243], [0.2751, 0.7149, 3.4452], [0.0872, 0.8425, 3.484], [0.2592, 0.6596, 3.4304], [0.2924, 0.8016, 3.1657], [0.1216, 0.8183, 3.3876], [0.3505, 0.7299, 3.3483], [0.2358, 0.9279, 3.2654], [0.2261, 0.7757, 3.4656], [0.3932, 0.8446, 3.337], [0.3491, 0.7966, 3.4945], [-0.0136, 0.5788, 3.4007], [0.112, 0.7524, 3.2708], [0.0616, 0.6812, 3.4359], [0.0381, 0.8341, 3.2931], [-0.1184, 0.7233, 3.4475], [0.1449, 0.7961, 3.4876], [-0.0987, 0.9084, 3.3631], [0.1507, 0.8231, 3.3263], [-0.1001, 0.7875, 3.3811], [0.0724, 0.9405, 3.3448], [0.1001, -0.1214, 3.2834], [0.2014, 0.0554, 3.4271], [0.0113, -0.1343, 3.5363], [0.2844, -0.1717, 3.4168], [0.0135, -0.0172, 3.5875], [0.1331, 0.2057, 3.567], [0.1026, -0.0244, 3.6606], [0.2657, 0.0583, 3.5805], [0.1499, 0.1214, 3.6347], [0.2934, 0.0002, 3.5668], [0.1361, 0.0318, 3.7502], [0.2415, -0.1657, 3.6262], [0.318, 0.0536, 3.6926], [-0.058, 0.1194, 3.4368], [-0.1847, -0.0251, 3.518], [-0.1927, 0.1897, 3.4613], [0.0346, -0.008, 3.5277], [-0.0097, 0.1234, 3.7044], [-0.2654, 0.1086, 3.7002], [-0.2846, 0.2719, 3.614]], u: [[0.0254, -0.233, 0.0953], [0.1661, 0.081, 0.0537], [-0.0392, 0.0898, -0.2154], [-0.0792, -0.1591, 0.0054], [0.1535, -0.0113, 0.1456], [0.0536, 0.0538, -0.1679], [0.1415, 0.1616, -0.0092], [-0.0381, -0.0886, 0.1995], [-0.0524, -0.1495, -0.1583], [0.0095, 0.2142, -0.0999], [0.1753, 0.0384, -0.0239], [-0.0464, 0.0287, 0.1674], [0.0799, -0.1688, 0.0065], [0.1178, 0.1071, 0.0864], [0.1598, -0.0552, -0.0172], [0.0289, -0.1394, -0.1873], [0.1181, 0.0099, -0.1577], [-0.0547, 0.2089, 0.1064], [0.1852, -0.1066, 0.1048], [0.0048, -0.0582, -0.2467], [0.1413, -0.0513, -0.0285], [0.0441, -0.1504, 0.061], [0.1447, 0.1778, 0.0298], [-0.1589, -0.0064, 0.1962], [0.1302, -0.1892, 0.0093], [-0.0518, -0.0752, -0.224], [0.1737, 0.0162, 0.037], [0.0671, 0.1166, -0.104], [-0.1151, 0.073, 0.1021], [0.0902, -0.1546, -0.1145], [0.0418, -0.1273, 0.1511], [0.1069, 0.006, -0.1271], [0.0047, 0.051, -0.2654], [0.193, -0.015, -0.0542], [0.0, -0.1307, -0.0893], [0.0597, -0.2164, -0.0477], [0.167, 0.1005, -0.004], [0.1715, -0.0156, 0.0509], [-0.0834, 0.2148, -0.1034], [0.1536, 0.0768, -0.0687], [0.1515, -0.0641, 0.1745], [0.1968, 0.1144, -0.0403], [0.1523, -0.0885, 0.1324], [0.047, 0.0078, -0.1798], [0.0977, 0.1254, 0.0296], [-0.0641, -0.0764, 0.1285], [0.2087, -0.0791, -0.1047], [-0.0033, 0.2224, -0.0652], [0.1579, 0.0785, -0.0179], [-0.0794, 0.0013, 0.1915], [0.1283, -0.1447, -0.0231], [-0.0873, -0.1962, -0.1283], [0.0684, 0.1461, -0.1429], [-0.0754, 0.1001, 0.1815], [-0.1399, -0.0652, 0.2071], [0.1427, 0.0413, 0.0383], [-0.0205, -0.0493, -0.2314], [0.1992, -0.0329, -0.157], [0.1103, -0.0321, 0.1095], [-0.0503, -0.0766, 0.1623], [0.0342, -0.1017, -0.143], [0.2193, -0.064, -0.0182], [0.1745, 0.042, -0.1428], [-0.0773, 0.2041, 0.1209], [0.1915, -0.0963, 0.1358], [0.0238, -0.0531, -0.2263], [0.1151, 0.0768, -0.0808], [-0.0411, 0.1386, 0.1637], [0.1625, -0.1324, 0.0701], [-0.0307, -0.2263, 0.0408], [0.0648, 0.0684, -0.2108], [0.1896, 0.0136, -0.0377], [-0.1031, 0.1863, 0.0952], [-0.0823, 0.1534, -0.1633], [0.218, 0.1033, 0.0091], [-0.0708, 0.0309, 0.1759], [0.1214, -0.1262, 0.0324], [-0.0831, -0.1717, -0.0958], [0.0465, 0.1347, -0.2101], [0.2345, 0.0153, 0.0062], [0.1381, -0.1125, 0.0156], [-0.0151, 0.0361, -0.2603], [0.1349, -0.0146, -0.0913], [0.1211, -0.1413, 0.1403], [0.1005, 0.1133, -0.0944], [0.1523, -0.0796, -0.0047], [-0.0085, 0.0908, -0.1899], [0.2199, 0.0462, -0.0643], [-0.0483, 0.1134, 0.1341], [0.119, 0.1652, -0.0064], [0.056, -0.118, 0.1755], [0.0674, -0.1263, 0.1564], [0.0815, 0.0131, -0.1431], [-0.1546, 0.1486, -0.0143], [-0.085, 0.0849, 0.1031], [-0.1372, 0.1218, -0.0866], [0.0333, 0.0245, -0.1872], [-0.0802, -0.1757, 0.0199], [-0.2204, 0.0433, 0.0451], [0.104, 0.0731, 0.2311], [-0.0839, 0.0986, 0.1183], [0.1489, 0.186, 0.0177], [-0.1474, -0.0265, 0.2124], [-0.0582, -0.1559, -0.1021], [-0.1386, -0.1324, 0.1702], [0.0198, -0.1525, -0.2103], [-0.1086, 0.1127, 0.1102], [0.0246, -0.1216, 0.1023], [0.0097, -0.0353, -0.2381], [0.2287, 0.0411, -0.1013], [-0.084, 0.1403, 0.0291], [0.1392, -0.069, 0.2065], [-0.0915, -0.1323, 0.0905], [0.1749, -0.0353, 0.0478], [-0.2305, 0.0815, -0.0089], [-0.0947, -0.2156, -0.0538], [-0.184, 0.0355, 0.0629], [-0.0696, -0.2021, 0.0179], [0.1759, 0.0047, 0.1013], [0.0096, 0.0548, -0.159], [-0.1944, -0.0238, 0.0723], [0.0962, 0.1372, -0.0665], [-0.1601, 0.0628, 0.112], [-0.0877, -0.2257, -0.0003], [0.0839, 0.102, -0.2298], [-0.0397, 0.1378, 0.1038], [0.0417, -0.1509, 0.0963], [0.1345, 0.1039, -0.0244], [-0.1233, 0.0318, 0.2345], [0.1791, -0.1638, 0.0301], [-0.0571, -0.1589, -0.0685], [-0.064, -0.0848, 0.1252], [-0.036, -0.1344, -0.1117], [0.1381, -0.0015, 0.098], [0.027, -0.1453, 0.1893], [0.0572, -0.0444, -0.1679], [-0.1407, 0.1386, -0.0407], [0.0763, 0.0054, 0.1669], [-0.0945, -0.1386, 0.1583], [-0.1382, 0.089, 0.1415], [0.1586, 0.0899, -0.0331], [-0.1578, 0.1608, 0.0839], [-0.0554, -0.1828, 0.061], [-0.0851, 0.0308, 0.1661], [0.2228, 0.0483, 0.0616], [-0.067, 0.1536, -0.0009], [0.0302, 0.1538, -0.1533], [0.1648, 0.1192, 0.0067], [-0.1695, 0.0569, 0.1043], [-0.0305, -0.2358, -0.0174], [-0.1279, -0.0883, 0.1731], [-0.1106, 0.1954, 0.089], [-0.0078, 0.1429, -0.153], [0.1139, -0.1018, 0.0895], [-0.0428, -0.1511, -0.0407], [-0.1057, -0.0825, 0.2072], [0.1562, 0.0, 0.0413], [-0.047, 0.1429, -0.1612], [0.1325, 0.1484, 0.048], [-0.0325, 0.1544, -0.0466], [0.0663, -0.0359, 0.2027], [0.1143, 0.0328, -0.1215], [-0.0554, 0.1275, 0.0962], [0.016, -0.0203, -0.1797], [0.1617, -0.0735, 0.0555], [-0.0507, -0.2443, 0.0169], [-0.0132, 0.0338, -0.2606], [-0.0072, -0.1722, 0.0958], [0.1555, 0.0273, -0.0093], [-0.1158, 0.1652, 0.0103], [0.0547, -0.0571, 0.1572], [0.2124, -0.0587, 0.1037], [0.0002, -0.1523, 0.0284], [-0.1059, 0.1987, 0.1025], [-0.1077, -0.1567, 0.0457], [-0.0755, 0.0443, 0.1706], [0.0994, 0.0057, 0.1917], [-0.1091, 0.1576, -0.0543], [-0.027, 0.0954, -0.1573], [-0.0325, -0.1939, -0.0672], [-0.1828, -0.0539, 0.1022], [-0.0878, 0.1096, 0.1789], [-0.0502, -0.148, 0.146], [-0.1077, 0.1659, 0.0164], [-0.0957, -0.1239, -0.086], [-0.1602, 0.1076, -0.0901], [-0.0747, -0.1558, 0.0765], [-0.0507, 0.1229, 0.1236], [-0.1692, -0.0471, -0.1052], [-0.0576, 0.1408, -0.0457], [-0.039, -0.142, -0.1393], [0.0118, -0.1484, -0.0973], [-0.1233, 0.1686, 0.0719], [-0.0787, -0.113, -0.1621], [-0.1515, 0.1232, -0.1234], [0.0584, 0.1064, -0.171], [-0.0702, -0.2084, -0.0367], [-0.1614, -0.0183, -0.0242], [0.0494, -0.0059, 0.1552], [0.0637, -0.1944, 0.052], [0.1104, 0.1058, 0.1281], [0.0007, 0.0861, -0.1829], [-0.0356, -0.1892, -0.0465], [-0.1693, -0.0233, 0.0635], [0.0956, 0.0289, 0.1967], [-0.1247, -0.0708, -0.1243], [-0.1655, 0.0914, 0.0553], [0.0218, 0.1667, 0.0749], [-0.1509, 0.0168, -0.0545], [-0.11, 0.1079, 0.0258], [-0.101, -0.1739, 0.0067], [0.0064, -0.0653, -0.238], [0.068, -0.162, 0.1108], [-0.1598, -0.1374, -0.0115], [0.1524, -0.0201, 0.2091], [-0.1491, 0.1361, 0.0319], [0.0584, 0.167, -0.0716], [0.1165, 0.0973, 0.1536], [-0.1755, 0.0363, 0.0527], [0.1027, 0.0585, 0.1205], [-0.0889, -0.0666, -0.2067], [-0.0801, -0.1034, 0.2322], [-0.0689, -0.1586, -0.0556], [-0.0667, 0.0824, 0.1865], [-0.1039, 0.0387, -0.139], [-0.0789, 0.2237, 0.0897], [-0.0144, 0.0195, -0.2485], [-0.1428, 0.1654, -0.0338], [-0.0102, -0.1302, -0.1786], [-0.1616, 0.0139, -0.0586], [0.036, 0.0992, -0.1929], [-0.1386, 0.0497, -0.0852], [-0.041, 0.1365, 0.0971], [-0.1915, -0.1039, -0.0927], [0.0481, -0.0601, 0.2378], [-0.0987, 0.1161, 0.0001], [-0.0948, -0.1523, 0.0425], [-0.1708, 0.0385, -0.0349], [-0.0443, 0.162, 0.0874], [-0.1639, -0.096, 0.0036], [0.0474, 0.0054, 0.256], [-0.2344, 0.0215, -0.0321], [0.0011, -0.1762, -0.0479], [-0.2298, -0.0787, 0.0533], [-0.091, 0.1671, -0.0062], [0.0909, 0.0926, -0.1248], [0.1098, 0.1611, 0.1504], [-0.2226, 0.058, 0.0222], [-0.0316, -0.0065, -0.1794], [-0.1528, -0.0526, -0.0567], [0.1328, -0.1194, 0.0278], [-0.0968, 0.017, 0.1406], [0.0128, 0.1709, 0.0889], [-0.1505, -0.0348, -0.0079], [0.0871, -0.13, 0.108], [-0.1084, 0.128, 0.158], [0.0948, 0.151, 0.0022], [-0.0771, 0.1363, 0.0635], [0.1928, -0.0728, 0.1474], [-0.073, -0.0576, -0.1638], [-0.2022, -0.0158, 0.0602], [0.0405, 0.1178, -0.1295], [-0.0703, 0.1008, 0.179], [0.1018, -0.1882, 0.0882], [-0.1346, -0.0102, -0.0928], [0.0852, -0.1873, 0.1272], [0.0842, 0.1601, 0.1108], [-0.0443, 0.0285, -0.2109], [0.0037, 0.1726, -0.0233], [-0.1634, 0.086, -0.0284], [0.2142, -0.0454, -0.0452], [0.055, 0.0259, -0.1548], [0.0096, 0.1317, 0.1179], [-0.1431, -0.0898, 0.0746], [0.1108, -0.1091, -0.0724], [-0.02, -0.0278, -0.2231], [-0.1038, -0.1403, -0.0307], [-0.0928, 0.0058, 0.1294], [-0.0054, 0.2223, 0.061], [-0.0856, -0.0131, -0.14], [-0.1815, -0.0878, 0.072], [0.116, -0.1316, 0.0115], [0.0946, 0.2219, 0.0336], [-0.1892, 0.0395, 0.0156], [-0.1689, -0.0958, -0.0347], [0.1222, -0.1031, 0.1662], [-0.1389, 0.1194, 0.0941], [-0.0533, -0.0337, -0.1541], [-0.2314, 0.0174, 0.0106], [0.0447, -0.1766, 0.1047], [-0.1369, -0.1109, -0.0075], [0.0807, -0.0483, 0.1755], [-0.1462, 0.068, 0.063], [0.1, -0.1285, -0.0279], [0.1017, 0.1114, 0.0972], [-0.1645, 0.021, 0.0925], [-0.2207, -0.0725, -0.0229], [0.1353, -0.175, 0.0587], [-0.089, 0.093, 0.1912], [0.1396, -0.0523, 0.1968], [-0.1591, 0.0481, 0.0757], [-0.0033, 0.1709, -0.0194], [-0.0273, -0.0628, -0.1798], [0.0839, -0.1059, 0.098], [-0.1183, 0.0765, 0.1514], [-0.0666, -0.0787, -0.1214], [-0.0759, 0.1138, 0.1698], [0.072, 0.1868, 0.0095], [-0.057, -0.1262, -0.2196], [-0.0677, 0.1531, -0.03], [0.0973, 0.126, -0.0987], [0.1232, 0.1249, 0.1183], [-0.0099, -0.2126, -0.0278], [0.149, 0.0339, 0.2095], [0.0531, 0.1151, -0.1405], [-0.0664, -0.1253, -0.0785], [-0.1652, 0.0166, 0.0248], [0.0875, -0.0699, 0.2409], [0.0368, -0.1491, -0.0235], [-0.1201, -0.0791, 0.099], [0.0803, 0.0641, 0.1206], [0.0722, -0.056, 0.1855], [-0.2056, 0.0709, -0.0129], [0.0332, -0.1887, -0.0297], [0.0352, -0.0602, -0.1978], [-0.1895, -0.0724, -0.1272], [0.0713, -0.1155, 0.1068], [-0.1436, 0.0998, 0.0954], [-0.0392, 0.0002, -0.1679], [-0.1956, 0.0235, -0.015], [-0.0659, 0.1305, 0.2189], [0.0607, -0.0669, 0.1395], [0.0487, 0.2027, -0.009], [-0.0063, -0.0397, -0.2119], [-0.1766, 0.0196, -0.0388], [-0.1475, -0.0648, 0.0566], [-0.1168, 0.1578, 0.1459], [0.0591, 0.1369, -0.0648], [0.0367, -0.0198, 0.1859], [-0.1281, -0.1471, 0.0807], [-0.1494, 0.0326, -0.0481], [0.0203, 0.073, -0.151], [-0.0621, 0.2225, 0.0626], [0.1887, -0.0926, -0.0813], [0.0431, 0.0235, -0.1682], [-0.1393, -0.0488, 0.0879], [-0.0817, 0.1719, 0.0906], [-0.0373, -0.0108, -0.1738], [-0.1187, -0.1024, -0.0063], [-0.1059, -0.0177, 0.1969], [-0.0673, -0.1884, -0.1188], [0.0667, 0.161, -0.1699], [0.1883, -0.002, 0.0134], [-0.0762, 0.118, 0.2198], [0.1138, 0.101, 0.0575], [0.0486, -0.1223, -0.2072], [0.1458, 0.182, 0.079], [-0.1687, 0.0483, 0.0951], [-0.0222, 0.2076, 0.0211], [-0.0508, -0.0575, -0.1438], [0.0551, -0.1439, -0.1709], [0.1344, -0.0192, 0.1671], [-0.1935, 0.0703, 0.1173], [-0.0058, 0.1792, 0.1715], [0.1336, 0.0516, 0.0634], [-0.109, -0.1715, 0.1248], [0.1327, -0.0622, -0.1323], [0.2125, 0.0039, 0.0059], [-0.0689, -0.0524, 0.1764], [0.103, 0.0305, 0.122], [-0.1004, -0.1429, 0.074], [0.1847, -0.0881, -0.0472], [0.0654, 0.2018, -0.1444], [0.1525, 0.06, 0.0273], [-0.1292, 0.0621, 0.1155], [0.096, -0.1598, 0.0828], [-0.1777, -0.096, 0.1551], [0.1094, 0.1612, -0.1307], [-0.0486, -0.1747, -0.1347], [0.1235, -0.0004, 0.1515], [-0.1847, -0.0284, 0.048], [0.0067, -0.0833, -0.2563], [-0.1446, -0.1156, -0.0362], [-0.1049, 0.0693, 0.1155], [0.0804, 0.2238, 0.0249], [0.0995, 0.0075, 0.1829], [-0.1741, 0.0248, 0.049], [-0.1678, -0.1206, 0.003], [-0.0314, 0.0301, 0.2676], [0.1467, 0.1804, 0.0581], [-0.0448, -0.1255, 0.1616], [0.1685, 0.039, -0.0078], [-0.05, -0.0096, 0.1774], [0.1448, -0.06, -0.0296], [-0.0147, 0.1636, -0.0151], [0.1934, 0.0163, 0.0723], [-0.1668, 0.0889, 0.1125], [-0.1633, -0.0628, 0.0856], [0.1389, -0.1038, 0.0703], [-0.1967, -0.0071, 0.0917], [-0.0417, 0.1722, -0.1027], [-0.0886, -0.1192, -0.1044], [0.0926, -0.1252, 0.1495], [0.0115, -0.1415, -0.0721], [0.1068, 0.0125, 0.1292], [0.0078, 0.1225, -0.1116], [-0.0609, -0.1414, -0.1276], [0.1359, -0.0956, -0.14], [-0.0369, 0.0009, -0.2323], [-0.1004, -0.1347, -0.0826], [-0.0318, 0.1318, 0.1321], [0.185, -0.1554, -0.0497], [0.1503, -0.0586, 0.1039], [-0.1322, 0.0152, 0.1218], [-0.1774, -0.0897, 0.0369], [0.1405, -0.0519, -0.0848], [-0.0089, -0.1859, -0.171], [-0.0181, 0.1441, -0.0558], [0.1431, 0.0877, -0.0559], [-0.0551, 0.0149, 0.2094], [0.1208, -0.1368, -0.0378], [0.2199, -0.0202, -0.0467], [0.1722, 0.1078, 0.0481], [-0.0432, -0.1308, -0.1197], [0.2069, -0.0241, 0.0108], [0.1529, 0.0391, 0.1874], [0.1994, -0.1199, -0.0676], [-0.1736, -0.0381, 0.1751], [-0.0881, 0.2058, 0.0559], [-0.1816, -0.166, 0.0556], [0.1309, -0.0742, 0.0333], [0.1615, 0.0104, 0.1699], [0.0936, 0.0638, -0.1228], [0.0984, 0.119, 0.0049], [0.0332, -0.1594, 0.1776], [0.1009, -0.0184, -0.1259], [0.1983, 0.1358, -0.0781], [0.1305, -0.1146, -0.108], [0.1226, 0.1277, 0.0869], [-0.1141, -0.1438, 0.1318], [0.0465, 0.1948, 0.0203], [0.1858, 0.003, 0.0142], [0.0927, -0.1809, -0.104], [-0.0727, -0.1021, -0.1229], [-0.045, -0.146, 0.0441], [0.034, -0.1375, -0.0604], [0.1873, -0.1207, -0.1233], [-0.0673, 0.0035, 0.1926], [-0.0173, 0.1602, 0.0411], [0.1525, -0.1452, -0.032], [-0.0174, -0.041, -0.1839], [-0.0879, 0.0333, 0.1352], [0.0481, 0.1311, 0.1295], [0.0165, -0.0274, -0.2169], [-0.1827, -0.1458, -0.1], [0.1621, -0.1068, 0.0991], [-0.1414, 0.0355, 0.1309], [-0.0922, -0.0254, -0.2062], [-0.1739, -0.0492, 0.035], [0.1171, -0.1625, 0.0515], [0.1508, -0.047, 0.1719], [-0.0289, 0.1628, -0.0054], [0.1343, 0.1005, 0.0547], [-0.136, -0.0945, 0.1791], [0.1196, 0.0964, 0.1157], [-0.1243, -0.1054, 0.1325], [0.1378, -0.0812, -0.0013], [0.0079, -0.1165, -0.2416], [0.0377, 0.188, -0.0461], [0.2139, 0.0315, 0.0899], [-0.0875, -0.0166, 0.1522], [0.1038, -0.1568, 0.0029], [0.1171, 0.0585, 0.126], [0.075, 0.1493, 0.0283], [-0.0512, 0.1482, 0.0363], [-0.096, -0.0856, -0.2167], [0.1789, -0.1108, 0.038], [0.0552, -0.0496, -0.1482], [0.0447, 0.1823, 0.0128], [0.1363, 0.0089, 0.1286], [-0.1746, -0.0384, 0.1322], [0.0924, -0.162, 0.0063], [-0.026, -0.0698, -0.2123], [-0.1016, -0.134, 0.03], [-0.2184, -0.0368, -0.0269], [-0.0539, -0.1557, -0.1551], [-0.0579, 0.0627, -0.1445], [-0.017, -0.2001, -0.0117], [-0.0669, -0.1585, 0.1056], [-0.1683, 0.0537, 0.0841], [-0.1955, -0.042, -0.0174], [0.1215, -0.0937, 0.1919], [-0.029, -0.1027, -0.1922], [-0.2217, -0.038, -0.0447], [-0.1337, 0.0837, 0.0293], [-0.0587, -0.2045, -0.0596], [0.1507, -0.0015, 0.1749], [0.0555, -0.1684, 0.1219], [-0.0857, 0.117, 0.1097], [-0.1629, 0.0198, 0.0719], [0.0464, -0.1824, -0.0151], [0.0049, 0.1379, -0.1576], [-0.0539, 0.1767, 0.0374], [0.0235, 0.0153, 0.2226], [0.0658, 0.1652, -0.0794], [-0.0055, -0.1383, -0.131], [-0.0309, 0.0969, -0.2149], [0.084, 0.0673, 0.2321], [-0.1703, 0.0935, -0.0158], [0.0317, 0.1076, -0.1176], [-0.1367, 0.0906, 0.0454], [-0.049, 0.1738, -0.1111], [-0.0778, -0.1753, -0.0664], [-0.1923, -0.06, 0.0935], [0.0611, -0.1464, -0.0522], [0.0609, 0.1297, -0.1031], [0.0787, -0.1456, 0.153], [-0.0559, -0.2211, -0.0891], [-0.1276, -0.0523, 0.1016], [0.1768, -0.0145, 0.1433], [-0.1381, 0.1519, -0.0716], [0.1556, 0.1161, -0.0419], [0.1082, -0.02, 0.1298], [-0.0121, -0.1547, 0.0557], [0.0936, 0.1814, -0.0018], [-0.04, -0.0485, -0.2072], [0.0234, -0.138, 0.0852], [-0.129, 0.0802, -0.0704], [0.1001, -0.0553, 0.2301], [-0.2322, 0.0248, -0.0848], [-0.0224, 0.1025, -0.1254], [-0.1884, -0.1246, 0.0012], [-0.1092, 0.1143, -0.0007], [0.0603, 0.1241, -0.0895], [-0.194, 0.0364, 0.0101], [0.0246, -0.2035, -0.0747], [0.0929, 0.036, 0.174], [-0.1365, 0.096, 0.0174], [0.2059, 0.0824, 0.0875], [-0.1329, 0.1268, -0.0844], [-0.1945, 0.0412, 0.0548], [0.1304, 0.0175, 0.1608], [0.0978, 0.0318, -0.1708], [0.1502, 0.1135, 0.0396], [-0.0593, -0.2283, 0.0529], [-0.2014, 0.0111, 0.1531], [0.1713, 0.0664, 0.1515], [0.0508, 0.0384, -0.2359], [0.1045, 0.143, 0.0165], [0.0763, 0.0604, 0.1649], [0.1184, 0.1835, 0.0786], [-0.1458, 0.0554, -0.023], [-0.0556, -0.1446, 0.0109], [-0.1925, 0.0327, 0.1118], [0.128, 0.0076, 0.1455], [0.0109, -0.1923, -0.0049], [-0.103, 0.1126, -0.0719], [-0.009, 0.1555, -0.1848], [-0.0979, -0.1748, -0.0206], [0.1382, -0.0844, 0.1538], [-0.1692, -0.0285, 0.1667], [0.0736, 0.11, -0.1891], [0.1431, 0.0626, 0.0566], [-0.152, 0.178, 0.0804], [0.1954, -0.032, 0.1186], [0.085, -0.0373, 0.1978], [-0.0882, 0.1422, 0.1718], [0.2077, -0.067, 0.0961], [-0.0083, -0.019, -0.1884], [0.0174, -0.2186, 0.1125], [0.082, 0.1412, 0.1758], [-0.151, 0.092, -0.1418], [-0.0487, -0.1511, -0.0206], [0.0769, -0.016, 0.2124], [0.0275, -0.2277, 0.0299], [-0.1487, -0.0545, 0.1331], [0.1098, 0.0686, 0.1061], [0.1664, 0.0452, 0.0085], [-0.0659, 0.1068, -0.1408], [-0.144, 0.0028, 0.1436], [0.1723, 0.0385, 0.0284], [-0.0921, 0.1304, 0.107], [0.0712, -0.1639, 0.175], [-0.1402, 0.0739, -0.0673], [-0.1838, 0.1213, 0.1196], [0.2173, 0.0685, 0.0512], [-0.0772, 0.1074, -0.1428], [0.1667, 0.0656, -0.1033], [0.2164, 0.0152, 0.0197], [-0.0526, 0.1742, -0.0552], [-0.0649, -0.045, -0.2218], [0.0361, -0.1704, 0.1094], [-0.1866, -0.1261, 0.1163], [-0.1664, 0.0654, -0.1138], [0.0333, 0.0677, -0.2319], [-0.0522, -0.2178, 0.0177], [-0.1529, -0.0154, 0.019], [-0.1289, -0.0666, 0.1651], [0.1125, 0.0828, 0.0748], [-0.1777, 0.1402, 0.0037], [0.22, 0.0179, 0.0006], [-0.0813, 0.1449, -0.0225], [-0.1271, 0.1029, 0.1306], [-0.0386, -0.1628, 0.0201], [0.0563, 0.0193, -0.157], [-0.0798, 0.2169, 0.0976], [0.0556, -0.0838, 0.1649], [0.1121, 0.128, -0.0184], [-0.1037, -0.1829, 0.1314], [0.1727, 0.0565, 0.1521], [-0.0577, 0.1366, -0.082], [0.1874, 0.1006, 0.1335], [-0.0359, 0.1838, -0.0939], [-0.1124, 0.1908, 0.0769], [0.1926, 0.1098, 0.1219], [-0.1761, 0.103, 0.0918], [-0.0671, 0.1036, -0.1578], [-0.1674, 0.0624, -0.1499], [0.0023, 0.1686, -0.0965], [-0.0865, 0.1295, 0.1109], [-0.2331, 0.0559, 0.0357], [-0.1227, -0.1383, 0.0125], [-0.0039, -0.097, -0.1806], [-0.1813, -0.0897, 0.0567], [0.1096, 0.1812, 0.0596], [-0.1712, 0.0365, 0.1807], [-0.211, -0.0321, 0.0664], [-0.1824, 0.1462, 0.0147], [0.003, 0.1494, -0.0936], [-0.2435, -0.0389, 0.0401], [0.1096, -0.073, 0.1445], [0.1003, 0.1328, -0.0848], [0.1316, 0.0817, 0.1609], [-0.1623, 0.0674, 0.0356], [-0.0278, 0.1326, -0.1536], [-0.0172, -0.2013, -0.1246], [-0.2026, -0.0816, 0.0923], [0.1496, -0.1232, 0.083], [-0.1904, 0.0293, 0.1384], [-0.0654, 0.0269, -0.2089], [0.0335, -0.0633, -0.1521], [-0.1843, -0.1178, -0.0527], [0.085, -0.1012, 0.1502], [-0.17, 0.0757, 0.1066], [0.0968, 0.1081, 0.0686], [-0.1437, -0.0042, 0.0869], [-0.0937, 0.1856, -0.0775], [0.1509, -0.0919, 0.1457], [-0.0864, 0.1114, 0.1176], [-0.1756, 0.1622, -0.0519], [-0.2122, -0.0085, -0.1167], [-0.0227, 0.1402, -0.1744], [0.0558, 0.0101, 0.1874], [0.0813, 0.1931, -0.1306], [0.0288, -0.0894, 0.227], [-0.2389, -0.0729, -0.0257], [0.1492, -0.0594, 0.1334], [-0.1612, -0.0007, 0.0779], [-0.0529, 0.2243, 0.0826], [-0.1816, -0.0686, -0.0212], [-0.1441, 0.0079, 0.052], [-0.046, 0.2253, -0.0131], [-0.1977, -0.0269, 0.0507], [0.1254, -0.1081, 0.0863], [0.038, -0.2091, -0.1217], [-0.067, 0.1632, 0.0755], [-0.1304, -0.1414, 0.0931], [-0.1436, 0.1454, 0.0528], [0.0405, 0.1634, -0.1576], [-0.0759, -0.1109, -0.0899], [-0.1482, 0.012, 0.053], [0.0905, -0.0747, 0.1641], [-0.2084, 0.1385, -0.0122], [0.0224, -0.0679, -0.2417], [-0.2043, 0.0078, -0.1039], [-0.0954, 0.174, 0.1303], [0.0684, 0.1949, -0.0665], [0.02, -0.0815, -0.2001], [-0.135, -0.184, -0.0342], [0.2072, -0.0552, 0.125], [-0.1743, 0.0579, 0.1623], [-0.0047, 0.2336, 0.0104], [-0.217, -0.0452, 0.073], [0.0822, -0.1228, 0.0562], [-0.1881, 0.0336, 0.1444], [-0.1376, 0.0843, -0.0183], [0.0147, 0.1955, -0.069], [-0.0117, -0.1119, -0.1242], [0.0584, -0.079, 0.1388], [0.091, 0.1381, -0.0153], [0.0837, 0.0683, 0.2441], [-0.0029, 0.1312, -0.1041], [0.0315, -0.1628, -0.1423], [-0.1749, -0.0907, -0.0037], [0.0685, -0.045, 0.2128], [-0.1847, 0.1502, 0.0551], [0.0992, -0.208, 0.0224], [-0.0638, 0.12, 0.2085], [-0.1013, -0.0955, -0.0719], [0.1409, -0.0904, 0.1815], [-0.2057, 0.0975, 0.0812], [0.0247, 0.2417, 0.0425], [-0.0496, -0.0519, -0.2281], [-0.1798, 0.0032, -0.0259], [-0.185, -0.1067, -0.0416], [0.0742, -0.0801, 0.2169], [-0.1829, 0.1619, 0.0639], [0.0725, 0.1602, -0.0348], [-0.02, -0.0702, -0.1934], [0.0751, 0.1307, -0.151], [0.081, -0.0445, -0.1513], [0.1118, 0.0919, 0.1748], [-0.0016, 0.0479, -0.2645], [-0.0427, -0.1358, 0.1146], [0.2193, 0.0245, -0.0016], [-0.1223, 0.19, 0.0237], [-0.0427, 0.0832, -0.163], [0.1589, 0.144, -0.0568], [-0.1057, 0.0739, 0.1319], [0.1596, -0.1066, 0.1073], [-0.0696, -0.2057, -0.0028], [0.0612, 0.2075, -0.0802], [0.1547, 0.0192, 0.0446], [-0.1079, 0.0743, 0.1526], [-0.0, 0.1935, -0.0331], [0.1208, 0.0474, 0.1027], [-0.1491, -0.0105, 0.1193], [-0.0264, -0.1771, 0.0024], [0.0385, -0.089, 0.1518], [0.1182, 0.0175, -0.1266], [-0.0083, 0.1435, 0.1664], [0.0828, 0.1295, -0.0515], [0.189, -0.0702, -0.0577], [-0.0155, -0.1406, -0.0754], [-0.0551, 0.1624, -0.1774], [-0.0075, 0.1236, -0.1139], [0.1294, -0.0828, 0.0878], [0.0072, -0.1672, -0.0485], [0.0961, 0.1133, -0.1247], [0.0658, -0.1177, -0.0989], [-0.0673, 0.1728, -0.1339], [-0.0593, -0.0208, 0.1697], [-0.0507, -0.1304, -0.0795], [0.0275, 0.162, -0.1205], [0.1937, 0.1446, 0.0605], [-0.0759, -0.0463, 0.1471], [0.1594, -0.1264, -0.0159], [-0.0404, -0.1083, -0.1327], [0.0394, 0.1452, -0.0916], [0.1764, 0.0127, 0.0204], [0.1455, -0.0527, -0.0379], [0.0195, -0.1713, -0.067], [0.0462, -0.1507, 0.1631], [0.0051, -0.2029, 0.0046], [-0.0377, 0.0423, -0.2063], [0.2273, 0.0468, -0.0048], [-0.062, 0.0569, 0.2271], [0.102, -0.1544, 0.0366], [-0.0407, -0.1564, -0.0552], [-0.109, -0.1258, 0.1413], [-0.0686, 0.1029, 0.1009], [0.0, 0.1483, -0.0791], [0.184, 0.0995, 0.0944], [-0.1784, 0.078, 0.1626], [-0.0511, 0.1891, -0.1075], [-0.1222, -0.0963, 0.1348], [0.1311, -0.024, -0.2251], [0.1609, 0.0468, -0.0395], [0.1339, 0.0552, 0.1369], [-0.1172, -0.1593, 0.1006], [0.0112, 0.2098, 0.0331], [0.0579, -0.14, 0.1771], [0.1089, -0.1205, 0.0313], [-0.108, -0.1797, -0.0002], [-0.0457, -0.0405, 0.1567], [-0.0155, -0.1564, -0.1282], [0.0321, 0.1883, 0.0233], [-0.083, 0.0269, 0.1362], [0.0568, 0.1685, 0.032], [-0.1803, -0.0303, 0.0992], [-0.0375, 0.0228, 0.2147], [0.1696, 0.0877, 0.0952], [-0.0897, -0.142, 0.1884], [0.1416, -0.0851, -0.0457], [-0.016, -0.1128, -0.2309], [0.1343, 0.1122, -0.0275], [0.1446, -0.1269, -0.1142], [-0.1028, -0.1489, -0.1464], [0.223, -0.0012, -0.068], [-0.0622, 0.2133, 0.014], [0.1415, 0.0787, 0.0535], [-0.1813, 0.0705, -0.0024], [-0.06, -0.2232, -0.0975], [-0.1705, -0.0083, 0.0396], [0.0827, -0.0807, 0.1599], [-0.1407, -0.0259, 0.1066], [0.1309, 0.0208, 0.1287], [-0.0968, 0.1306, 0.0295], [0.1472, 0.1441, -0.0429], [-0.1988, 0.0641, -0.0138], [-0.0244, -0.1494, 0.0809], [0.1497, 0.0183, 0.0786], [0.0307, 0.0661, -0.2426], [0.1705, 0.1308, 0.009], [-0.18, 0.1307, 0.1199], [-0.0216, 0.1704, 0.1631], [-0.1186, -0.1115, -0.0571], [-0.1189, 0.0963, -0.0998], [-0.0668, -0.1093, 0.0879], [0.009, -0.1877, -0.1266], [0.0014, 0.0499, -0.2354], [-0.1821, -0.1574, 0.0511], [-0.0923, 0.0997, -0.1646], [-0.149, -0.0062, -0.0616], [-0.1923, -0.0797, 0.1082], [-0.1263, 0.1095, -0.0341], [0.0438, 0.0772, -0.2035], [-0.0264, -0.0635, -0.1736], [-0.1166, 0.1381, -0.1576], [-0.2133, -0.0245, -0.0918], [0.0432, 0.2168, -0.0397], [-0.0495, 0.1266, 0.132], [-0.1058, -0.2086, -0.0169], [-0.2405, 0.02, 0.0604], [0.1025, -0.0476, 0.1552], [-0.0103, -0.2235, -0.0036], [-0.1473, -0.0454, 0.1586], [0.134, 0.0095, 0.0862], [-0.1061, 0.1283, -0.0427], [0.0957, 0.1636, -0.0764], [0.0935, 0.097, 0.1416], [-0.1255, 0.1527, -0.0566], [0.0681, 0.0352, -0.1545], [0.1249, 0.0215, 0.1285], [0.0003, 0.1798, -0.1533], [0.1956, -0.0759, 0.1325], [0.0206, -0.1472, -0.1126], [0.0921, 0.1663, -0.134], [0.1476, 0.0683, 0.117], [-0.1355, -0.1095, 0.1917], [-0.1566, 0.0765, 0.0493], [0.1313, 0.046, 0.0956], [0.1453, 0.0845, -0.0056], [-0.162, 0.1604, 0.0098], [-0.055, -0.1496, 0.0799], [-0.121, -0.0456, 0.1075], [0.1477, 0.1559, 0.0756], [-0.2155, 0.013, 0.0617], [0.097, 0.0425, 0.1361], [0.0784, -0.2155, 0.1014], [0.1152, 0.1276, 0.0415], [-0.1727, 0.0975, -0.0049], [0.0351, 0.0753, -0.156], [0.1747, 0.0315, -0.0504], [0.082, -0.1157, 0.1017], [-0.128, -0.194, 0.0284], [0.0165, -0.2247, -0.095], [-0.0784, 0.1354, -0.0466], [0.1611, 0.1314, -0.0603], [-0.1801, 0.1084, 0.0934], [0.1695, -0.0511, 0.1816], [-0.0923, 0.1635, 0.0275], [-0.1079, -0.1478, 0.029], [-0.0348, -0.129, -0.1978], [-0.1214, -0.1602, 0.0883], [0.1476, -0.1855, 0.0308], [-0.1026, 0.0635, 0.1689], [0.0274, 0.0087, -0.1638], [0.1235, 0.0672, 0.0781], [-0.1074, -0.079, 0.1162], [-0.0411, -0.1074, -0.2373], [-0.0703, -0.1886, -0.1091], [-0.1138, -0.1864, -0.1056], [0.1621, -0.1219, 0.128], [-0.015, -0.1928, -0.0549], [0.0948, 0.1028, -0.2113], [0.1561, 0.0351, 0.0688], [-0.1495, -0.0485, 0.1688], [-0.1074, -0.0116, -0.1961], [0.1118, -0.1151, 0.0008], [0.054, -0.0491, -0.2408], [0.0867, 0.1626, 0.035], [0.1667, -0.0637, 0.1506], [0.0628, 0.1378, -0.0912], [-0.0386, 0.2416, -0.007], [0.1566, 0.0784, 0.0517], [-0.1234, -0.046, 0.1977], [0.1171, -0.1676, -0.0294], [-0.0938, -0.1029, -0.1826], [-0.1126, -0.1924, 0.1165], [0.2022, -0.0416, 0.0245], [-0.0294, -0.0727, -0.1631], [-0.1859, -0.0811, -0.0429], [-0.1258, 0.1384, 0.1703], [0.1298, -0.0295, 0.2187], [-0.015, -0.0117, -0.1727], [0.0523, 0.1729, 0.0453], [0.2178, 0.0008, 0.0674], [-0.1031, -0.0326, 0.1518], [-0.0654, 0.1515, 0.0385], [-0.1151, -0.0621, -0.2211], [0.0636, -0.0636, -0.2209], [0.1339, 0.016, 0.086], [-0.155, -0.027, 0.1262], [-0.1417, -0.1289, 0.0519], [0.2098, -0.1071, 0.0958], [-0.0825, -0.0557, 0.151], [0.1299, -0.1032, 0.0803], [-0.1838, -0.0217, 0.0805], [0.0536, -0.2356, 0.0518], [0.1264, -0.0997, 0.0426], [-0.0162, -0.1548, -0.0327], [0.1847, 0.0223, 0.0179], [-0.0822, 0.1218, 0.1247], [0.0231, -0.0387, -0.1572], [0.1789, 0.1171, -0.0741], [-0.0985, 0.0936, 0.1847], [0.0101, -0.1859, 0.0282], [-0.109, -0.1856, 0.0457], [-0.2146, 0.0434, 0.1224], [0.1401, -0.0478, 0.132], [0.1758, 0.0162, 0.0548], [-0.0903, 0.168, 0.0688], [-0.0862, 0.058, -0.2362], [-0.1174, -0.1098, 0.1374], [-0.1281, 0.1077, 0.1473], [0.167, -0.0376, 0.0749], [0.0043, -0.2049, 0.0606], [0.0313, 0.0224, -0.1877], [0.1825, 0.0527, -0.0091], [0.0953, -0.0519, 0.1542], [0.1135, 0.0556, -0.1961], [0.0783, 0.1515, 0.0048], [0.0465, -0.0075, 0.1817], [-0.0247, -0.1722, 0.0394], [-0.1817, -0.0026, 0.1414], [0.1798, 0.0711, 0.1658], [-0.1435, 0.1946, -0.0357], [0.1076, 0.1317, -0.0141], [-0.2271, 0.0609, 0.0371], [-0.0133, -0.2185, 0.0654], [-0.0578, 0.1488, 0.0548], [0.1546, 0.1173, 0.0939], [-0.1337, -0.1125, 0.192], [0.2088, -0.1355, -0.022], [-0.1206, -0.03, 0.1566], [-0.0161, -0.2443, -0.0616], [0.0406, 0.0748, -0.158], [0.163, 0.0299, 0.0164], [0.0157, -0.1872, -0.1351], [0.1519, 0.0278, -0.0029], [-0.074, 0.076, 0.2223], [0.0576, -0.1854, 0.0337], [0.1488, 0.1186, 0.1006], [-0.0253, -0.1157, -0.1625], [0.0477, 0.1103, -0.1836], [0.0156, -0.1588, -0.0596], [0.1929, -0.0838, 0.0724], [0.1449, 0.092, 0.1467], [-0.1943, 0.0661, 0.0988], [0.0735, -0.2323, -0.0241]], v: [[0.1866, 0.0203, 0.0], [-0.0233, 0.1055, -0.1024], [-0.162, -0.0321, 0.019], [0.1141, -0.0555, 0.0447], [0.0721, 0.1138, -0.0791], [-0.1199, 0.04, -0.0299], [-0.0666, 0.0652, 0.1427], [0.0087, -0.1408, -0.0716], [0.1045, 0.0654, -0.1133], [-0.102, 0.06, 0.1398], [-0.0186, 0.1198, 0.0657], [-0.056, -0.1092, 0.0038], [0.1147, 0.0521, -0.0667], [-0.0958, 0.0447, 0.0884], [0.0424, 0.1196, 0.0117], [-0.0948, 0.0996, -0.1044], [-0.0812, 0.0985, -0.0642], [0.0214, -0.0705, 0.1756], [0.0699, -0.0234, -0.1732], [-0.0689, 0.1567, -0.0451], [0.0114, 0.0752, -0.0927], [0.1141, 0.0153, -0.0525], [-0.1324, 0.1, 0.0537], [-0.0002, -0.1805, -0.007], [0.1367, 0.0918, -0.0552], [0.1471, 0.06, -0.0636], [-0.0261, 0.0985, 0.0933], [-0.1041, 0.0666, 0.0088], [-0.056, -0.1097, 0.018], [0.0318, 0.0983, -0.1265], [0.0174, -0.1036, -0.1083], [-0.0013, 0.1189, 0.0054], [-0.0843, 0.1643, 0.0354], [-0.0046, 0.1377, -0.0642], [0.0504, 0.0557, -0.0958], [0.0805, 0.0512, -0.1547], [-0.0298, 0.0545, 0.1435], [0.0366, 0.0609, -0.1231], [-0.1523, -0.0113, 0.117], [-0.0746, 0.0847, -0.0848], [0.1294, 0.0271, -0.1203], [-0.0902, 0.1406, -0.0487], [0.1124, 0.0526, -0.1107], [-0.0834, 0.097, -0.0207], [-0.0769, 0.0417, 0.0907], [0.0221, -0.1009, -0.0576], [0.0623, 0.1713, -0.0062], [-0.1191, 0.031, 0.1315], [-0.0445, 0.1041, 0.0754], [-0.03, -0.1415, -0.0135], [0.0981, 0.0946, -0.0564], [0.1512, -0.0042, -0.1134], [-0.0871, 0.1069, 0.0795], [-0.0938, -0.1218, 0.0332], [0.0378, -0.1772, -0.0356], [-0.0376, 0.1038, 0.0331], [-0.1205, 0.1118, -0.0155], [-0.0835, 0.0955, -0.148], [0.0639, -0.0447, -0.0911], [0.0983, -0.0868, -0.0123], [-0.0666, 0.0771, -0.0832], [-0.0001, 0.0435, -0.1803], [-0.0849, 0.1238, -0.0791], [-0.0034, -0.0891, 0.1743], [0.0997, -0.0061, -0.1704], [-0.0833, 0.1327, -0.0469], [-0.071, 0.0931, -0.0149], [0.0278, -0.1098, 0.1175], [0.1015, 0.0721, -0.1166], [0.1495, -0.0339, -0.0884], [-0.1107, 0.1183, 0.0051], [-0.0207, 0.1292, -0.0674], [-0.084, -0.0998, 0.1228], [-0.1456, 0.0121, 0.0996], [-0.0757, 0.1554, 0.0582], [-0.0276, -0.1312, 0.014], [0.0929, 0.0756, -0.0633], [0.1304, -0.0185, -0.094], [-0.1026, 0.1322, 0.073], [-0.0115, 0.1759, 0.0], [0.0433, 0.0376, -0.1314], [-0.0995, 0.1501, 0.0313], [-0.0253, 0.1015, -0.0631], [0.1007, -0.0349, -0.1436], [-0.0776, 0.0984, 0.0417], [0.0389, 0.0795, -0.1017], [-0.0976, 0.0969, 0.0596], [-0.0423, 0.1669, -0.0291], [-0.0438, -0.099, 0.0798], [-0.1112, 0.0824, 0.0701], [0.1172, -0.0596, -0.0911], [0.1412, 0.0543, -0.02], [-0.0991, -0.0028, -0.0667], [-0.0867, -0.0804, 0.1187], [-0.0104, -0.0898, 0.0768], [-0.1092, -0.0853, 0.0625], [-0.1264, -0.0302, -0.0311], [0.0979, -0.034, 0.1108], [0.0073, -0.0979, 0.1523], [0.1136, 0.1133, -0.1023], [-0.0583, -0.1023, 0.0516], [-0.1334, 0.1012, 0.0691], [0.0232, -0.1833, -0.0079], [0.1308, -0.0145, -0.0616], [0.0793, -0.1563, -0.067], [0.17, 0.066, -0.0375], [0.0458, -0.0614, 0.127], [0.0924, -0.0312, -0.0698], [-0.1389, 0.0903, -0.0224], [-0.0742, 0.1093, -0.1448], [-0.0343, -0.042, 0.1213], [0.1437, -0.0225, -0.1227], [0.1102, -0.0793, -0.0054], [0.0423, 0.0777, -0.1146], [-0.0612, -0.1701, 0.0339], [0.146, -0.0801, 0.0754], [-0.005, -0.1319, 0.0704], [0.1517, -0.051, 0.0171], [0.0451, 0.11, -0.0981], [-0.1159, 0.0202, 0.0], [0.011, -0.1531, -0.0243], [-0.1105, 0.0753, -0.0054], [-0.0707, -0.1291, -0.0337], [0.1398, -0.0542, -0.111], [-0.0889, 0.1595, 0.0451], [-0.0743, -0.074, 0.0821], [0.1064, -0.0183, -0.0878], [-0.0708, 0.1001, 0.042], [-0.0075, -0.1866, 0.0252], [0.1179, 0.1153, -0.0866], [0.1168, -0.0157, -0.0718], [0.0619, -0.0939, -0.0376], [0.1182, 0.0089, -0.0573], [0.0675, 0.0122, -0.1117], [0.1614, -0.0299, -0.0541], [-0.1088, 0.043, -0.0569], [-0.0601, -0.0241, 0.1476], [0.1151, -0.0132, -0.0613], [0.1503, -0.06, 0.0437], [0.065, -0.0766, 0.1313], [-0.0668, 0.0901, -0.0884], [-0.0401, -0.1058, 0.1499], [0.1417, -0.046, -0.0107], [0.0799, -0.0872, 0.0671], [0.0099, 0.1129, -0.1462], [-0.0854, -0.0368, 0.0917], [-0.1513, 0.0439, 0.0168], [-0.0874, 0.1222, -0.0289], [-0.0167, -0.1414, 0.0587], [0.1752, -0.0208, -0.0309], [0.1096, -0.1246, 0.0205], [-0.1318, -0.1022, 0.0713], [-0.1451, 0.0243, 0.0354], [0.0982, 0.0689, -0.0549], [0.1138, -0.0239, -0.0365], [0.1043, -0.1406, -0.0033], [0.0075, 0.1164, -0.0333], [-0.1502, 0.0037, 0.0553], [-0.1155, 0.0993, 0.014], [-0.0585, 0.0173, 0.1154], [0.1055, -0.0931, -0.0599], [-0.0663, 0.0951, -0.0432], [0.0092, -0.0677, 0.1118], [-0.0707, 0.1022, -0.021], [0.0619, 0.0609, -0.1172], [0.1416, -0.0368, -0.1271], [-0.1232, 0.132, 0.0274], [0.1374, -0.0259, -0.0427], [-0.0188, 0.0808, -0.0918], [-0.0795, -0.0622, 0.1225], [0.1135, -0.013, -0.052], [0.0841, 0.0876, -0.1443], [0.1017, -0.0093, -0.0595], [-0.0762, -0.1029, 0.142], [0.1181, -0.0849, -0.0147], [0.049, -0.1131, 0.06], [0.0467, 0.1415, -0.0334], [-0.1107, -0.0899, -0.0454], [-0.1183, -0.056, -0.016], [0.1382, -0.041, 0.0607], [0.0732, -0.1217, 0.0785], [-0.0281, 0.126, -0.107], [-0.0051, 0.105, 0.1231], [-0.0257, -0.0033, -0.1589], [0.0341, -0.0862, 0.1013], [-0.0396, -0.1257, -0.0937], [0.0645, 0.0243, 0.1321], [-0.051, 0.0703, -0.1068], [0.02, -0.1449, 0.0385], [-0.1004, -0.0517, -0.0385], [0.1347, -0.0544, 0.0209], [0.1232, -0.0143, 0.0434], [-0.1355, -0.081, -0.0498], [0.0944, -0.114, 0.0395], [-0.1095, -0.1293, 0.0063], [-0.1198, -0.0466, -0.0822], [0.0909, -0.0517, 0.141], [0.0001, -0.0954, 0.0841], [0.0641, 0.0921, -0.0198], [0.1354, 0.0581, 0.0606], [-0.0227, 0.1165, -0.0901], [-0.1282, -0.0542, -0.0306], [0.1207, -0.0398, 0.082], [0.0409, -0.1037, 0.0835], [0.0555, 0.1358, -0.0552], [0.0812, -0.1092, -0.0226], [-0.0607, -0.0384, -0.1389], [-0.1002, 0.0463, -0.0867], [0.0118, -0.098, -0.0739], [-0.0622, -0.0438, -0.0963], [0.0952, -0.0515, 0.1141], [0.0726, -0.1486, 0.0503], [0.107, 0.0864, 0.0712], [0.0985, -0.1176, 0.0421], [0.0002, 0.184, 0.0206], [-0.1018, -0.0994, -0.061], [-0.1272, 0.0214, -0.0634], [-0.0663, 0.1356, -0.0419], [-0.0159, -0.1321, 0.0448], [-0.0218, 0.1131, -0.0427], [0.0115, -0.1574, 0.0538], [-0.0075, 0.1704, 0.0862], [0.011, -0.0457, 0.1375], [-0.0134, 0.134, -0.0752], [-0.0061, -0.1228, -0.0349], [-0.0725, 0.0373, -0.1842], [-0.0319, -0.1694, -0.0135], [-0.0924, -0.0979, -0.1045], [0.0535, -0.1179, 0.0975], [-0.0139, -0.1271, 0.0096], [-0.0695, -0.1147, -0.0846], [-0.0134, -0.1145, -0.053], [-0.0728, 0.0404, -0.1029], [0.058, -0.155, 0.0635], [0.0273, 0.1674, 0.0433], [-0.0672, -0.0571, -0.0788], [0.0937, -0.0338, 0.1031], [-0.0272, -0.1302, -0.0126], [-0.1029, 0.018, -0.1006], [0.0643, -0.1074, 0.0738], [0.0067, 0.1804, -0.0059], [-0.0187, -0.1757, 0.0226], [0.1154, -0.0169, 0.0764], [0.0696, -0.1454, 0.1004], [-0.1226, -0.0677, -0.0301], [-0.1092, 0.0253, -0.0715], [-0.0704, 0.1326, -0.1067], [-0.0371, -0.161, 0.0565], [0.1125, -0.0543, -0.021], [0.0554, -0.0721, -0.0968], [0.0317, 0.0603, 0.1268], [-0.0972, -0.0257, -0.075], [-0.1421, 0.0106, -0.0], [0.0265, -0.1069, -0.0394], [0.0583, 0.0991, 0.085], [-0.141, -0.0214, -0.0935], [-0.1108, 0.0699, -0.0289], [-0.1051, -0.0664, 0.0174], [0.0463, 0.1769, 0.0315], [0.0857, -0.1017, -0.0028], [-0.0007, -0.151, -0.0492], [-0.0855, 0.0821, 0.0563], [-0.0738, -0.1274, 0.0503], [0.1422, 0.039, -0.0952], [0.0355, -0.106, -0.0468], [0.0326, 0.1031, 0.1529], [-0.1066, 0.0954, -0.0669], [0.0588, -0.1352, -0.036], [-0.0758, -0.0115, -0.1145], [-0.05, -0.1143, -0.0687], [0.0436, 0.0739, 0.1556], [0.0951, 0.0493, 0.0494], [-0.1216, -0.0204, 0.0384], [-0.0139, -0.0681, -0.1278], [0.0943, 0.0577, 0.0676], [0.155, 0.0131, -0.0183], [0.0917, -0.0517, -0.0874], [-0.0789, -0.0565, -0.0636], [-0.1719, -0.0028, -0.0058], [0.0872, -0.0573, -0.0564], [0.0158, -0.115, -0.1182], [0.0781, 0.0749, 0.0816], [-0.1594, 0.0586, 0.0723], [-0.0308, -0.1191, -0.084], [0.0746, -0.1264, -0.0165], [0.0241, 0.1446, 0.0847], [-0.1074, -0.0598, -0.097], [0.0623, -0.0986, -0.0], [-0.0149, -0.1592, -0.0751], [0.1005, 0.0749, 0.0982], [0.0824, -0.1025, 0.0146], [-0.0095, 0.1328, 0.0481], [-0.0671, -0.0817, -0.0793], [0.0742, 0.0396, 0.0983], [-0.1071, 0.0637, 0.0459], [-0.0644, -0.0572, -0.1195], [0.0522, -0.1274, -0.117], [0.0736, 0.0946, 0.132], [-0.1469, -0.0038, -0.0782], [-0.0438, 0.1519, 0.0841], [-0.0624, -0.0884, -0.0879], [-0.1149, -0.0083, -0.0629], [0.111, -0.0753, 0.0111], [0.0376, 0.091, 0.0779], [-0.1193, -0.0381, -0.087], [0.0995, -0.0507, -0.0256], [-0.1442, -0.0481, -0.0379], [-0.1394, 0.0529, 0.0202], [0.1717, -0.0658, -0.0079], [-0.11, -0.0547, -0.0362], [-0.1114, 0.0329, -0.0798], [-0.0513, 0.1216, -0.0881], [0.1403, -0.0158, 0.0835], [0.0347, 0.1722, -0.0618], [-0.1245, -0.004, -0.0592], [0.071, -0.0734, 0.0671], [-0.0054, -0.1169, 0.0497], [0.1228, 0.1405, -0.0045], [0.1078, 0.021, 0.0418], [0.0905, -0.0618, 0.0712], [-0.0139, 0.1017, -0.0527], [-0.0592, 0.1169, 0.0686], [-0.0225, -0.088, -0.1472], [0.0894, -0.0008, 0.124], [0.1123, -0.0807, 0.0524], [0.0867, -0.1441, -0.0554], [0.0082, 0.0843, 0.1008], [-0.0876, -0.0244, -0.125], [0.0625, -0.1009, -0.0173], [-0.0082, -0.1193, -0.0948], [-0.1527, 0.0608, -0.0967], [-0.0022, 0.1041, 0.0598], [-0.1266, 0.0269, -0.0954], [0.1014, -0.1085, 0.0204], [-0.0052, -0.1282, -0.0487], [0.0491, -0.1169, -0.007], [-0.1547, -0.0782, -0.0461], [-0.112, 0.0388, -0.0238], [0.0464, 0.1239, 0.0047], [0.0993, -0.0268, 0.1281], [-0.0286, -0.1153, 0.0128], [-0.0738, -0.0777, -0.0558], [-0.1207, 0.0004, -0.1427], [0.0796, 0.0501, 0.1501], [0.1149, 0.0211, 0.0381], [-0.042, -0.0553, -0.1144], [-0.1388, -0.0363, -0.0662], [0.1185, -0.0241, -0.0282], [0.0594, -0.0644, -0.0852], [-0.1274, -0.0503, -0.0859], [0.1404, 0.0066, -0.1057], [-0.1052, 0.1181, 0.0831], [0.0004, 0.1404, 0.0188], [-0.1132, -0.1409, 0.0427], [-0.0843, 0.0646, 0.0626], [0.1671, -0.0082, 0.0518], [-0.147, 0.1032, 0.0395], [-0.073, -0.0896, -0.0987], [-0.1473, -0.0107, -0.0585], [0.0947, -0.0645, -0.009], [0.1577, 0.0066, 0.0532], [-0.0236, 0.1471, 0.0422], [-0.0877, -0.1334, -0.0761], [-0.1354, -0.0802, 0.0932], [-0.0472, 0.002, 0.1149], [-0.0265, -0.0846, -0.1638], [0.0924, 0.0962, 0.0558], [-0.005, 0.0835, 0.1473], [-0.08, -0.0929, -0.0692], [-0.0871, 0.0109, 0.0833], [0.027, -0.0744, -0.126], [0.0722, 0.1074, 0.0963], [-0.1645, 0.0807, 0.0451], [-0.0463, 0.1153, 0.0062], [-0.0455, -0.1248, 0.019], [0.1328, 0.065, -0.0336], [0.0827, -0.166, -0.0094], [-0.1395, 0.1001, 0.0079], [0.1603, -0.0369, -0.0118], [-0.0859, 0.0799, 0.0825], [-0.012, -0.0927, -0.1188], [0.1839, -0.0352, 0.0191], [0.0885, -0.0948, -0.0602], [-0.0953, -0.0423, -0.0719], [-0.1648, 0.0625, -0.0345], [-0.0694, 0.1246, 0.0384], [-0.0341, -0.1117, -0.0759], [0.0892, -0.1247, -0.0245], [-0.0604, -0.1774, 0.0151], [-0.0923, 0.0304, 0.163], [0.0227, -0.1167, -0.0991], [-0.0192, 0.0981, 0.0899], [-0.0595, -0.1111, -0.0268], [0.0493, 0.1024, 0.0396], [-0.0951, -0.0018, 0.0858], [-0.0197, 0.1513, 0.022], [-0.0825, -0.1383, -0.0154], [0.0429, -0.136, -0.0211], [0.0797, 0.1132, 0.0116], [0.0023, -0.1604, -0.0087], [-0.1435, -0.0433, -0.017], [0.0993, -0.0867, 0.0174], [0.1142, 0.1046, 0.0199], [0.1135, -0.005, 0.0327], [0.001, 0.1196, -0.0147], [-0.1156, -0.0163, -0.0305], [0.1178, -0.0783, 0.0359], [0.1204, 0.064, 0.0861], [0.1565, 0.0368, -0.0291], [0.0906, -0.0087, -0.1129], [-0.1329, -0.0321, -0.0], [0.1059, 0.0904, 0.1311], [-0.023, 0.0994, 0.1051], [-0.0756, -0.0709, -0.0861], [0.0395, -0.1131, -0.1001], [0.0329, 0.1206, -0.0226], [0.1063, 0.0933, -0.1258], [-0.0697, 0.0231, 0.0967], [-0.0416, 0.1064, 0.071], [-0.0229, -0.1492, 0.0054], [0.0794, 0.0885, -0.0788], [0.018, 0.1672, 0.015], [-0.0866, 0.1104, 0.0739], [0.12, 0.007, -0.06], [0.0032, 0.0828, 0.1438], [-0.1328, 0.0302, 0.1201], [0.0976, 0.1051, 0.1191], [-0.0747, -0.1223, -0.1183], [-0.1585, -0.0601, -0.0334], [0.0821, -0.1252, -0.1243], [0.0334, 0.087, 0.0734], [-0.0993, 0.0974, 0.104], [0.0161, 0.0976, 0.074], [-0.0169, 0.0096, 0.1238], [-0.0064, -0.1247, -0.1302], [0.0263, 0.1131, 0.0053], [-0.0272, 0.1167, 0.1574], [0.0526, 0.1215, -0.0769], [-0.0519, -0.0331, 0.1432], [-0.0134, -0.0999, -0.1419], [-0.0946, 0.0113, 0.1268], [-0.0095, 0.0743, 0.128], [0.1424, 0.0865, -0.0278], [0.0874, 0.0328, -0.0929], [0.0444, -0.042, -0.1102], [0.0806, 0.0466, -0.0715], [0.1116, 0.1484, 0.0286], [-0.0996, -0.0954, -0.0388], [-0.1175, -0.0208, 0.0373], [0.1084, 0.1023, 0.0615], [0.1264, 0.0303, -0.022], [-0.0965, -0.0084, -0.0713], [-0.1308, 0.0432, 0.0058], [0.1468, -0.0353, 0.0184], [0.1287, -0.1046, -0.0972], [-0.0036, 0.1014, 0.1355], [-0.0928, -0.0539, -0.1008], [0.12, -0.095, -0.0493], [0.0162, -0.1103, -0.0876], [0.0896, 0.0901, 0.0951], [-0.0445, 0.1387, 0.0905], [-0.1124, -0.0215, -0.052], [-0.0779, 0.0607, 0.0939], [0.0034, -0.1534, -0.0922], [-0.1072, 0.049, 0.0824], [0.0292, -0.1269, -0.0865], [0.0594, 0.1003, 0.0306], [0.1718, 0.0714, -0.034], [-0.123, 0.0405, 0.0761], [-0.0562, 0.135, 0.1016], [-0.0432, -0.1099, -0.0433], [0.1174, 0.0775, -0.0113], [-0.0959, 0.0601, 0.0721], [-0.1061, 0.0439, 0.0584], [-0.1137, -0.0356, -0.018], [0.1614, -0.051, -0.0605], [0.0576, 0.1207, 0.0953], [0.105, 0.0433, 0.0289], [-0.1346, 0.0312, 0.0309], [-0.0675, 0.0942, 0.0765], [-0.0357, -0.129, -0.0995], [0.1147, 0.067, 0.0479], [0.1557, -0.0127, -0.0175], [0.0833, -0.0757, -0.0657], [-0.0195, 0.0039, 0.1799], [-0.1006, -0.0667, 0.1198], [-0.0872, -0.0805, 0.0], [0.0357, -0.0109, 0.1585], [0.1282, -0.0086, 0.0802], [0.0455, -0.045, 0.1407], [0.0293, -0.1456, 0.0262], [0.074, 0.1561, 0.0346], [0.0961, -0.1116, 0.0531], [0.0332, -0.1664, -0.0272], [-0.0574, -0.1012, 0.0318], [0.149, -0.0547, 0.0481], [0.0531, 0.1492, -0.0523], [0.1517, 0.0389, -0.0181], [-0.0032, -0.0881, 0.1075], [0.0135, -0.1138, 0.0727], [0.1372, 0.0344, 0.0069], [-0.0611, -0.0986, -0.1036], [-0.0689, 0.003, -0.1333], [0.001, 0.1549, -0.0126], [-0.084, -0.0179, -0.1257], [0.0639, -0.0818, 0.0983], [-0.0801, -0.1362, -0.0587], [-0.0176, 0.1724, -0.0513], [-0.0672, -0.1268, -0.0298], [-0.0892, -0.0391, -0.0704], [-0.0678, -0.1069, 0.011], [-0.1494, -0.0438, -0.003], [0.1352, -0.0655, 0.0169], [0.0576, -0.1522, 0.0245], [0.1147, 0.0481, -0.0009], [-0.1196, 0.0463, -0.0146], [0.1461, 0.0722, -0.0076], [0.1735, -0.0509, 0.0204], [0.0619, -0.1056, 0.0276], [0.0373, 0.1583, -0.0353], [-0.1157, -0.0651, 0.1002], [-0.0871, 0.0905, -0.0857], [0.0898, 0.0326, -0.0822], [0.1204, -0.0151, -0.0184], [-0.0672, 0.0334, -0.1447], [-0.109, -0.0933, 0.0505], [0.1051, 0.0415, 0.0451], [-0.0773, -0.079, 0.0606], [0.04, 0.1743, 0.0288], [-0.0178, -0.1838, -0.0059], [-0.0694, -0.0769, -0.0593], [0.0829, -0.1247, 0.0859], [-0.0812, -0.0778, -0.0408], [-0.103, 0.0087, -0.0673], [-0.026, -0.1443, 0.0236], [0.1455, -0.0066, 0.0775], [0.0019, 0.1379, -0.0348], [-0.073, -0.1011, -0.0178], [0.0155, 0.1021, -0.1559], [-0.1096, -0.0687, 0.0816], [0.0137, -0.0887, 0.1355], [0.0892, 0.0802, -0.0953], [-0.119, 0.036, -0.0723], [-0.0391, 0.0865, -0.1171], [0.1674, -0.0305, 0.0658], [0.0818, -0.1082, 0.1358], [0.0473, 0.1203, -0.1249], [-0.1657, 0.0083, -0.0404], [-0.0783, 0.0663, -0.0923], [0.0407, 0.1117, -0.0702], [-0.0623, 0.0922, -0.143], [-0.0436, -0.0916, 0.0654], [0.0995, -0.0348, 0.0538], [0.0365, -0.1213, 0.1157], [0.0717, 0.0938, -0.08], [0.0858, 0.0022, 0.126], [-0.0768, -0.0915, -0.039], [-0.1709, -0.0246, -0.0146], [0.1203, -0.0733, 0.0588], [0.1102, 0.1103, -0.0453], [0.0608, -0.1573, 0.0409], [-0.1288, 0.1014, 0.0104], [-0.042, 0.1141, -0.0235], [0.0251, -0.0515, 0.1898], [0.0802, -0.0176, -0.161], [0.1239, -0.0579, -0.0755], [0.0231, -0.1209, 0.1316], [0.08, 0.051, -0.1616], [-0.0969, 0.0883, -0.0055], [0.1253, 0.0646, 0.1248], [0.023, 0.123, -0.1288], [-0.0969, -0.1321, 0.0205], [0.0673, -0.0334, 0.1014], [0.107, 0.1119, -0.0357], [0.1647, 0.0256, 0.0513], [0.0983, -0.0743, 0.0933], [0.0006, 0.0993, -0.0763], [-0.028, 0.1129, -0.0618], [-0.1258, -0.0248, 0.0471], [0.0475, -0.1278, 0.0589], [-0.023, 0.127, -0.0383], [-0.079, -0.1004, 0.064], [0.1685, 0.0099, -0.0697], [-0.0484, 0.0073, 0.1279], [0.0922, -0.0057, 0.1735], [0.0378, -0.0026, -0.1847], [-0.1136, 0.0166, 0.0869], [-0.0858, 0.0517, -0.1242], [0.0087, 0.0586, -0.165], [-0.0894, 0.0051, 0.1191], [-0.1491, 0.0604, 0.0369], [0.1208, 0.0637, 0.0698], [0.104, -0.023, 0.1668], [-0.0803, -0.1231, 0.055], [-0.1395, -0.0844, -0.0525], [0.1166, -0.019, 0.1302], [0.0175, -0.0757, 0.0934], [0.1242, -0.0504, 0.0901], [-0.0188, 0.0878, -0.0811], [-0.0942, -0.1212, 0.0787], [-0.0071, 0.0914, -0.1495], [-0.0779, -0.0303, 0.1016], [0.0036, -0.1139, 0.1096], [0.115, -0.032, -0.0446], [-0.0722, 0.0912, -0.0172], [-0.1171, -0.09, 0.1226], [0.1238, -0.0181, -0.0599], [-0.0967, 0.0842, -0.004], [0.1535, -0.0243, 0.1027], [0.0774, 0.0837, -0.1399], [-0.1166, -0.0318, 0.034], [-0.0884, 0.1618, 0.0026], [-0.149, -0.0377, -0.0197], [-0.1498, -0.0893, 0.003], [-0.0613, 0.1664, -0.0624], [-0.0647, -0.1462, 0.0469], [-0.1258, -0.0676, 0.0106], [0.0026, -0.1532, -0.0784], [-0.0458, -0.0627, -0.1302], [-0.0922, 0.0199, -0.1118], [-0.0483, -0.1377, -0.117], [0.0597, -0.0432, 0.1277], [0.0161, -0.1243, 0.0781], [0.0099, -0.0932, -0.1362], [-0.1318, 0.0553, 0.0874], [-0.1175, -0.0952, -0.1083], [-0.0068, -0.1366, -0.1031], [-0.1101, -0.1354, -0.0212], [-0.1225, -0.019, -0.0403], [0.0339, -0.1809, 0.0358], [0.0708, 0.1211, 0.0088], [-0.1152, 0.0592, -0.0513], [-0.0493, 0.1484, -0.0412], [-0.0514, -0.1239, 0.0], [-0.1274, -0.0643, -0.0381], [0.1559, -0.0482, 0.0664], [0.0804, -0.1486, 0.0529], [-0.0169, 0.0667, 0.1522], [-0.0981, -0.0251, -0.1525], [0.1075, -0.0981, -0.0544], [0.1019, -0.0414, 0.0466], [0.0942, -0.1368, -0.0279], [0.0052, 0.1174, 0.0895], [-0.0924, -0.0622, -0.1213], [-0.0922, 0.073, 0.0176], [-0.003, -0.1228, -0.0129], [-0.1468, -0.0751, -0.0028], [0.0567, 0.1514, 0.0432], [-0.1153, -0.0595, -0.0335], [-0.0688, -0.112, -0.1378], [0.0134, -0.1776, -0.0134], [-0.0663, -0.115, -0.0986], [0.0002, 0.1362, -0.0087], [-0.1398, -0.0127, -0.1244], [0.0714, 0.1473, 0.0576], [0.0457, -0.1002, -0.1655], [-0.058, 0.085, 0.1209], [-0.0474, -0.062, -0.1159], [-0.1613, -0.0096, -0.0908], [0.0501, -0.1088, -0.0911], [-0.0309, -0.0745, -0.0874], [-0.1348, -0.033, -0.1115], [0.0175, -0.1521, -0.0146], [0.08, 0.1098, 0.025], [0.1772, 0.0172, 0.0304], [-0.133, -0.0444, -0.0261], [0.1231, -0.0931, 0.0365], [-0.1133, -0.1092, -0.0086], [-0.1614, 0.0028, -0.0453], [0.0767, -0.0815, 0.0421], [-0.0007, -0.1145, 0.0281], [0.0914, 0.1107, 0.0], [-0.0421, -0.0769, -0.1802], [0.0913, -0.1406, 0.0564], [0.0193, -0.1593, -0.0588], [-0.1143, 0.0261, -0.1394], [-0.1071, -0.0005, -0.1313], [0.1513, 0.0073, 0.0143], [0.1347, -0.088, -0.0685], [-0.0209, 0.1461, 0.1166], [-0.1107, -0.1083, -0.0944], [-0.1731, -0.0023, -0.0303], [0.0092, -0.1563, -0.0817], [0.0775, 0.0729, 0.054], [-0.0816, -0.1308, -0.0891], [-0.0507, -0.0943, -0.0626], [-0.1162, -0.0235, -0.1076], [0.0827, -0.0667, 0.0615], [0.0399, 0.1045, 0.0501], [-0.0918, 0.0539, -0.07], [-0.0627, 0.174, -0.032], [-0.0861, -0.0522, -0.0746], [0.1236, -0.0468, 0.0951], [0.0653, -0.1272, 0.0406], [0.0196, 0.1556, 0.0313], [-0.1131, -0.1067, -0.1038], [0.1025, 0.0614, 0.1364], [-0.1544, 0.0396, -0.0824], [0.0828, -0.0799, -0.0123], [-0.0289, 0.1428, 0.11], [-0.088, -0.0844, -0.1431], [-0.1558, 0.0312, -0.1019], [0.1097, -0.1255, 0.0055], [0.0058, -0.1219, -0.0652], [0.0769, -0.1416, 0.0252], [0.0213, 0.16, 0.0609], [-0.1169, -0.089, -0.128], [-0.1032, 0.0307, -0.0866], [0.0794, -0.1151, 0.0395], [-0.1222, 0.0915, 0.0216], [0.0604, 0.11, 0.0], [-0.0774, -0.0941, 0.1165], [0.0972, 0.1562, 0.0326], [0.0022, -0.0821, -0.1134], [-0.0148, 0.1255, -0.116], [-0.0996, -0.0773, 0.124], [-0.1233, 0.0189, 0.0493], [-0.1142, 0.1175, -0.0257], [0.0004, -0.1134, 0.0752], [0.1077, 0.0694, -0.1074], [0.1424, -0.0474, -0.0686], [-0.1468, 0.0648, 0.0656], [-0.0238, 0.1126, 0.0401], [-0.0944, -0.108, -0.0167], [-0.1451, 0.0036, 0.0247], [-0.0687, 0.0892, 0.0467], [-0.0301, -0.1253, -0.0572], [0.0547, -0.0097, -0.1326], [0.0536, -0.0906, -0.0784], [-0.028, 0.1217, -0.011], [-0.0182, -0.1149, 0.1155], [-0.0628, 0.0684, 0.0835], [0.0283, 0.1338, -0.0822], [0.0689, 0.0363, -0.0964], [-0.1183, 0.0721, 0.1208], [-0.1202, 0.008, 0.0195], [0.0828, 0.0936, -0.0397], [0.1283, 0.0102, -0.0192], [-0.1091, 0.0892, -0.0036], [0.1058, 0.0608, -0.0024], [-0.1569, -0.0571, 0.0061], [-0.0116, -0.1242, -0.0227], [0.0781, 0.0186, -0.0945], [-0.0703, 0.0821, 0.1109], [-0.1076, 0.1001, 0.1238], [-0.0002, -0.1151, -0.0427], [0.0937, 0.1199, -0.0166], [0.1106, 0.0225, -0.0612], [-0.0849, 0.0653, 0.0787], [-0.0143, 0.1221, 0.0561], [0.0234, 0.102, -0.0613], [0.0871, 0.0447, -0.1045], [0.1225, -0.0552, -0.1009], [0.1046, 0.0003, -0.12], [-0.1157, 0.084, 0.0451], [-0.0326, 0.1629, 0.0563], [-0.0673, -0.1538, 0.0237], [0.1091, 0.057, -0.0749], [0.118, -0.0163, -0.048], [0.096, -0.1208, -0.0394], [-0.0837, -0.0769, 0.0254], [-0.12, 0.0137, 0.0301], [-0.088, 0.1437, 0.0236], [-0.076, -0.1679, -0.0033], [-0.1599, -0.0378, 0.0111], [0.0804, -0.1247, -0.0191], [0.1123, 0.1362, 0.0599], [0.0125, 0.0491, 0.1282], [-0.1002, 0.0068, 0.1121], [0.0277, -0.096, -0.1409], [-0.1254, -0.0075, 0.1061], [0.1016, -0.0808, -0.1142], [0.0706, 0.0416, -0.1005], [0.1084, -0.0651, -0.1014], [0.0353, -0.1105, -0.0215], [0.1111, 0.0513, -0.0893], [-0.1052, 0.0067, 0.1066], [-0.085, -0.0642, -0.046], [-0.1282, 0.0413, 0.0121], [-0.0295, -0.1155, -0.1046], [-0.0976, -0.1165, -0.0055], [-0.0885, 0.051, 0.1302], [0.0022, -0.1409, -0.1236], [0.0696, 0.1052, 0.023], [0.088, 0.1371, -0.0859], [-0.0392, 0.0707, 0.1141], [0.0828, 0.1339, -0.0518], [0.1085, 0.0379, -0.1349], [0.0216, 0.1558, 0.08], [-0.1246, -0.0425, 0.1112], [-0.0623, 0.0502, 0.1069], [-0.0528, -0.136, 0.0], [0.1577, -0.0702, 0.0751], [0.0145, -0.124, 0.0427], [0.1066, 0.091, -0.0108], [0.0603, -0.0983, 0.0654], [0.0327, 0.1163, -0.0613], [-0.0962, -0.0753, 0.0206], [-0.0782, 0.0445, -0.14], [-0.0329, -0.0755, 0.1448], [0.1243, -0.0092, 0.0241], [0.0315, 0.0853, -0.0938], [-0.1658, 0.0602, -0.0053], [-0.0849, 0.1153, -0.0804], [-0.0206, -0.1353, 0.1372], [-0.0042, 0.113, -0.1395], [0.0179, -0.0693, 0.1155], [-0.0517, -0.1125, -0.0553], [0.0619, 0.0294, 0.0984], [0.07, -0.077, 0.1401], [-0.0672, -0.149, -0.0376], [0.0873, -0.0555, 0.165], [-0.1017, -0.1133, -0.0137], [-0.0266, -0.0856, 0.086], [0.0943, -0.0652, 0.1407], [-0.0854, -0.092, 0.0246], [-0.1428, -0.0381, -0.0531], [-0.0463, -0.1108, 0.0559], [-0.099, -0.1346, -0.0525], [-0.0189, -0.1466, 0.0976], [-0.1525, 0.0189, -0.0737], [-0.1259, 0.0023, -0.0582], [0.1281, -0.0721, 0.1045], [0.0111, -0.154, 0.112], [0.0955, 0.09, -0.0416], [0.1671, -0.0079, 0.0151], [0.0921, -0.1172, 0.0612], [0.0228, 0.103, -0.0549], [-0.0762, -0.0822, -0.0677], [-0.1069, 0.0169, -0.1152], [-0.0174, 0.1178, -0.0814], [-0.1206, -0.0929, 0.02], [-0.11, 0.0163, -0.0526], [-0.0108, 0.1291, -0.013], [-0.1631, -0.0327, -0.0454], [0.0685, 0.1686, -0.0055], [0.1336, 0.0242, -0.0086], [-0.1439, 0.0896, 0.0145], [-0.0641, 0.1315, 0.0047], [0.1519, -0.0164, 0.1153], [0.0283, -0.0197, 0.1416], [0.0631, 0.0198, -0.1131], [-0.0407, 0.0639, -0.1093], [-0.0695, -0.0778, 0.1471], [0.1244, -0.0311, 0.0324], [0.0789, -0.007, 0.1009], [-0.0089, 0.0759, -0.1638], [0.0321, -0.0845, 0.1528], [0.0633, 0.075, -0.0806], [0.1759, 0.0583, -0.014], [-0.0425, 0.0695, -0.1127], [-0.0553, -0.0933, 0.1105], [-0.0906, 0.0828, 0.023], [-0.034, 0.1265, -0.0457], [0.1031, 0.0133, -0.08], [0.139, -0.0977, -0.0474], [0.1541, 0.0443, -0.0917], [-0.0958, -0.0343, 0.0723], [-0.1043, 0.0942, -0.086], [-0.0073, -0.1132, 0.1379], [0.1294, 0.0669, -0.1199], [-0.0891, -0.0642, 0.0978], [0.1115, -0.0753, 0.0366], [0.1667, -0.0292, -0.0121], [0.1138, -0.108, -0.0465], [0.0569, 0.069, 0.1682], [-0.1219, 0.0069, -0.0902], [0.0684, 0.0911, 0.0192], [-0.0698, 0.0313, 0.0981], [-0.0021, -0.1022, -0.0841], [0.1807, 0.0122, -0.0433], [0.1572, -0.0612, 0.0052], [0.1528, -0.0939, 0.0012], [0.1226, 0.117, -0.0515], [0.146, -0.0024, -0.037], [-0.1348, 0.119, -0.0031], [-0.0167, 0.1249, -0.0303], [-0.0955, -0.0729, -0.1241], [0.1328, -0.0384, -0.0829], [0.0653, 0.0639, 0.0849], [0.1705, 0.0148, 0.0414], [-0.1212, 0.056, 0.0467], [-0.0567, 0.1081, 0.1277], [-0.0646, 0.0787, 0.0875], [-0.1529, -0.0217, 0.1077], [-0.0672, 0.0832, 0.0913], [-0.0377, -0.1515, -0.0691], [0.1259, 0.0894, -0.009], [0.1455, -0.0104, -0.081], [0.0887, -0.1159, -0.1244], [0.0203, 0.1371, 0.077], [0.1117, -0.0603, 0.0079], [0.0677, -0.1246, -0.0678], [-0.1533, -0.0311, -0.1034], [-0.0334, 0.1719, 0.0505], [0.1072, 0.0528, -0.0152], [-0.1061, 0.0105, 0.0968], [-0.0381, 0.0997, 0.1433], [-0.062, -0.0956, -0.0737], [-0.1165, -0.0494, -0.0042], [0.1598, -0.0257, -0.0893], [0.1504, 0.0679, 0.0279], [-0.0529, 0.0736, 0.0808], [-0.0426, -0.1134, -0.09], [0.0744, -0.1075, -0.0754], [0.039, 0.1568, 0.1057], [0.0941, -0.0845, 0.0238], [0.0856, 0.0364, -0.1079], [0.0542, -0.0873, 0.1179], [0.1797, 0.0363, -0.0243], [0.0794, 0.0804, -0.0561], [0.1098, -0.0027, -0.0492], [-0.0146, 0.1375, -0.0247], [-0.0779, -0.1032, 0.0581], [-0.1081, 0.0263, -0.0263], [-0.0902, 0.0637, -0.1378], [0.0567, -0.1181, 0.1059], [0.1072, -0.007, -0.099], [0.137, -0.0663, 0.0676], [0.0313, -0.142, 0.1236], [0.0922, 0.0817, -0.0804], [0.0096, 0.1177, -0.0769], [-0.0976, -0.0826, 0.0866], [-0.1581, 0.0462, 0.0812], [0.1207, -0.088, 0.0386], [0.0425, -0.1001, 0.1296], [0.0588, 0.051, -0.1242], [0.1384, -0.0181, -0.0833], [-0.1055, 0.0806, -0.0094], [-0.0368, 0.1155, -0.0816], [0.1121, 0.004, -0.0799], [-0.1239, -0.0553, -0.1027], [-0.0478, 0.0281, -0.125], [0.1073, 0.0694, -0.0289], [0.1254, -0.0086, 0.048], [0.0782, -0.103, 0.1159], [0.0449, 0.1365, -0.1261], [-0.1447, -0.0973, 0.0603], [-0.0796, 0.0569, -0.0893], [-0.014, -0.1238, 0.1382], [0.1695, -0.006, 0.0168], [-0.092, -0.0573, 0.0688], [-0.1013, 0.0508, 0.1215], [0.0072, -0.1598, -0.1042], [0.1028, 0.1544, 0.0285], [0.0747, -0.1156, 0.0416], [0.1666, 0.0094, -0.0952], [-0.081, 0.0938, 0.0277], [-0.0202, 0.1212, -0.024], [0.1332, 0.0652, -0.088], [-0.0194, 0.1091, 0.0366], [-0.0989, -0.1411, 0.018], [0.1289, 0.029, -0.071], [-0.1116, 0.0715, 0.0948], [0.0384, -0.1123, 0.087], [-0.1154, -0.0697, -0.0845], [0.0804, -0.0248, 0.1026], [0.0604, 0.1531, 0.0194], [-0.0595, 0.1482, -0.0402], [-0.0491, -0.1606, 0.0127], [0.1483, 0.0372, 0.1101]]} diff --git a/src/platform/kpi_rover_worlds/assets/models/apple_2/apple_2_wood.bin b/src/platform/kpi_rover_worlds/assets/models/apple_2/apple_2_wood.bin new file mode 100644 index 0000000..b5a0054 Binary files /dev/null and b/src/platform/kpi_rover_worlds/assets/models/apple_2/apple_2_wood.bin differ diff --git a/src/platform/kpi_rover_worlds/assets/models/apple_2/apple_2_wood.gltf b/src/platform/kpi_rover_worlds/assets/models/apple_2/apple_2_wood.gltf new file mode 100644 index 0000000..a364d22 --- /dev/null +++ b/src/platform/kpi_rover_worlds/assets/models/apple_2/apple_2_wood.gltf @@ -0,0 +1 @@ +{"asset": {"version": "2.0", "generator": "kpi_rover garden"}, "scene": 0, "scenes": [{"nodes": [0]}], "nodes": [{"mesh": 0, "name": "mesh"}], "meshes": [{"name": "mesh", "primitives": [{"attributes": {"POSITION": 0, "NORMAL": 1, "TEXCOORD_0": 2}, "indices": 3}]}], "accessors": [{"bufferView": 0, "componentType": 5126, "count": 17856, "type": "VEC3", "min": [-1.96431303024292, -1.8412792682647705, 0.0], "max": [2.3600237369537354, 2.2333900928497314, 3.6769278049468994]}, {"bufferView": 1, "componentType": 5126, "count": 17856, "type": "VEC3"}, {"bufferView": 2, "componentType": 5126, "count": 17856, "type": "VEC2"}, {"bufferView": 3, "componentType": 5125, "count": 17856, "type": "SCALAR"}], "bufferViews": [{"buffer": 0, "byteOffset": 0, "byteLength": 214272, "target": 34962}, {"buffer": 0, "byteOffset": 214272, "byteLength": 214272, "target": 34962}, {"buffer": 0, "byteOffset": 428544, "byteLength": 142848, "target": 34962}, {"buffer": 0, "byteOffset": 571392, "byteLength": 71424, "target": 34963}], "buffers": [{"uri": "apple_2_wood.bin", "byteLength": 642816}]} \ No newline at end of file diff --git a/src/platform/kpi_rover_worlds/assets/models/apple_3/apple_3_leaves.yaml b/src/platform/kpi_rover_worlds/assets/models/apple_3/apple_3_leaves.yaml new file mode 100644 index 0000000..783e5b5 --- /dev/null +++ b/src/platform/kpi_rover_worlds/assets/models/apple_3/apple_3_leaves.yaml @@ -0,0 +1,2 @@ +# Leaf cards of apple_3, written by tools/assets/convert_trees.py: centers and half-axes, real m. +{centers: [[-0.0124, 0.3067, 1.3831], [0.107, 0.3414, 1.6409], [0.0029, 0.2382, 1.9337], [0.1678, 0.4081, 1.9906], [0.1537, 0.3112, 2.267], [0.1628, 0.3254, 1.5406], [0.4224, 0.465, 1.5693], [0.4002, 0.2509, 1.7265], [0.5384, 0.4376, 1.9087], [0.6708, 0.1921, 1.9552], [0.7831, 0.4194, 1.9653], [0.6649, 0.3391, 2.19], [0.9274, 0.2675, 2.1473], [0.1017, 0.4889, 1.4853], [0.2093, 0.6859, 1.4238], [0.1668, 0.6833, 1.6455], [0.1448, 1.065, 1.8773], [0.4199, 1.0888, 1.9367], [0.2682, 1.1992, 2.0675], [0.3763, 0.3363, 1.6259], [0.1741, 0.3966, 1.9247], [0.3695, 0.3526, 1.977], [0.2788, 0.542, 2.1144], [0.1851, 0.3016, 2.0818], [0.3186, 0.3761, 2.3637], [0.3361, 0.7262, 1.6241], [0.4444, 0.5863, 1.8116], [0.4189, 0.8248, 1.8262], [0.7983, 0.8142, 1.827], [0.7685, 0.8282, 2.01], [0.8863, 1.0074, 1.8947], [0.3421, 0.6578, 1.9864], [0.2225, 0.8708, 1.8569], [0.1205, 0.6999, 1.9967], [0.2914, 1.0377, 2.1595], [0.005, 1.0076, 2.2247], [0.2782, 1.1436, 2.4444], [0.5172, 0.8076, 1.8098], [0.5892, 0.6109, 1.8956], [0.5029, 0.612, 2.0759], [0.8373, 0.6215, 2.2714], [0.7438, 0.557, 2.4474], [0.7583, 0.7113, 2.5938], [0.3405, 0.9315, 1.9214], [0.5171, 0.8818, 2.0297], [0.5084, 1.0484, 1.8376], [0.6785, 1.024, 2.0267], [0.4729, 1.187, 1.9863], [0.5434, 1.0877, 2.1772], [0.707, 1.21, 2.0396], [0.5255, 1.2649, 2.1739], [0.7169, 1.1261, 2.2682], [0.594, 1.2782, 2.3755], [0.7681, 1.2969, 2.445], [0.3246, 0.931, 2.1735], [0.5392, 1.0275, 2.282], [0.514, 0.7681, 2.4087], [0.4914, 1.0101, 2.3932], [0.303, 0.8929, 2.5081], [0.5656, 0.8573, 2.5036], [0.6133, 0.9817, 2.6057], [0.3795, 1.0161, 2.685], [0.5463, 0.8581, 2.7274], [0.5077, 1.0019, 2.2753], [0.7815, 1.0597, 2.1464], [0.6782, 1.1375, 2.3336], [0.855, 0.9449, 2.3117], [0.8715, 1.2115, 2.2716], [0.775, 1.0625, 2.4883], [0.9781, 1.053, 2.3478], [0.8758, 1.2007, 2.4413], [0.9152, 1.0189, 2.5122], [0.411, 1.266, 2.1591], [0.4815, 1.1662, 2.3922], [0.5732, 1.3062, 2.2425], [0.348, 1.3222, 2.3225], [0.605, 1.2712, 2.4556], [0.5255, 1.4697, 2.2736], [0.6563, 1.3922, 2.4213], [0.541, 1.3878, 2.5543], [0.6581, 1.554, 2.4165], [0.6662, 1.4931, 2.5939], [0.6551, 1.2982, 2.2641], [0.7924, 1.141, 2.4019], [0.6043, 1.1003, 2.5832], [0.8179, 1.1905, 2.5088], [0.7111, 1.3005, 2.6587], [0.9066, 1.2527, 2.6266], [0.8143, 1.1908, 2.6702], [0.5968, 1.2984, 2.6698], [0.6471, 1.1247, 2.7487], [0.5449, 1.2374, 2.858], [0.6012, 1.4294, 2.3615], [0.728, 1.4712, 2.2243], [0.7356, 1.4348, 2.4377], [0.9347, 1.4282, 2.2809], [0.7345, 1.6327, 2.354], [0.8903, 1.4421, 2.4913], [0.8312, 1.6088, 2.5015], [0.9523, 1.6764, 2.415], [0.9423, 1.5699, 2.5722], [0.9692, 1.7604, 2.568], [1.0911, 1.586, 2.5969], [0.6048, 1.2935, 2.5187], [0.5613, 1.4571, 2.5701], [0.5455, 1.668, 2.572], [0.6318, 1.4549, 2.7196], [0.7611, 1.6803, 2.6663], [0.5185, 1.607, 2.7249], [0.7513, 1.5015, 2.8143], [0.6542, 1.752, 2.753], [0.7767, 1.6557, 2.8562], [0.7686, 1.7047, 2.4037], [0.9666, 1.6215, 2.5066], [0.7366, 1.7304, 2.551], [0.9687, 1.6186, 2.6839], [0.8457, 1.6738, 2.8434], [1.0561, 1.7346, 2.6875], [-0.4122, -0.2777, 1.3768], [-0.6043, -0.2742, 1.5568], [-0.4618, -0.5172, 1.5749], [-0.5863, -0.4059, 1.7591], [-0.5872, -0.6328, 1.8421], [-0.824, -0.5391, 1.9031], [-0.7733, -0.7791, 1.844], [-0.7562, -0.7181, 2.1107], [-0.6132, -0.1714, 1.6904], [-0.3694, -0.2582, 1.7751], [-0.515, -0.017, 1.8786], [-0.4445, -0.3062, 2.3992], [-0.5272, -0.0724, 2.4925], [-0.7778, -0.2189, 1.6032], [-0.7464, -0.2354, 1.873], [-0.9453, -0.3014, 1.7582], [-0.9062, -0.0865, 1.9669], [-1.0984, -0.1027, 1.7537], [-1.06, -0.266, 1.9856], [-1.3201, -0.0362, 2.0431], [-1.319, -0.2246, 2.138], [-0.8236, -0.3856, 1.7769], [-0.7061, -0.3502, 2.0325], [-0.999, -0.3609, 1.9367], [-0.8024, -0.5139, 1.9373], [-0.8819, -0.419, 2.1009], [-0.9978, -0.5511, 1.9992], [-0.8552, -0.6146, 2.1528], [-1.0623, -0.7171, 2.1669], [-0.959, -0.6179, 2.3482], [-1.0772, -0.7624, 2.3634], [-1.1183, -0.5829, 2.5098], [-0.8603, -0.1005, 2.0905], [-1.0722, -0.2569, 2.0683], [-0.8927, -0.272, 2.2417], [-1.0361, -0.0976, 2.1588], [-0.949, -0.1284, 2.3323], [-1.1546, -0.1321, 2.3222], [-1.2065, -0.211, 2.5144], [-0.9593, -0.1633, 2.6203], [-1.1774, -0.047, 2.594], [-1.1457, -0.2745, 2.7113], [-1.017, -0.4246, 2.2454], [-1.2997, -0.4928, 2.2718], [-1.271, -0.7269, 2.2481], [-1.2387, -0.5622, 2.4327], [-1.4816, -0.7206, 2.3498], [-1.1793, -0.5506, 2.2986], [-0.9462, -0.5037, 2.3396], [-1.1411, -0.4134, 2.3948], [-1.2015, -0.5066, 2.5084], [-1.0027, -0.6147, 2.5189], [-0.9489, -0.5915, 2.6778], [-1.1113, -0.6928, 2.7111], [-0.983, -0.5197, 2.8164], [-1.1028, -0.4838, 2.9528], [-1.3334, -0.538, 2.287], [-1.3022, -0.6284, 2.5813], [-1.4427, -0.5262, 2.4304], [-1.4148, -0.7244, 2.4876], [-1.4112, -0.5106, 2.6475], [-1.4362, -0.6934, 2.6298], [-1.5574, -0.5095, 2.6211], [-1.5925, -0.7434, 2.5914], [-1.6966, -0.5857, 2.6355], [-1.5748, -0.7803, 2.7453], [-1.6224, -0.5259, 2.8223], [-1.3217, -0.8384, 2.3662], [-1.2598, -0.881, 2.5077], [-1.3995, -0.7715, 2.6702], [-1.5429, -0.8395, 2.6683], [-1.6019, -0.9575, 2.6379], [-1.5432, -0.9207, 2.8117], [-1.5786, -1.0771, 2.6797], [-1.4734, -1.0704, 2.8504], [-1.7152, -1.0044, 2.8109], [-1.3355, -0.8326, 2.4939], [-1.4858, -0.7651, 2.5108], [-1.458, -0.6817, 2.6479], [-1.3596, -0.7793, 2.7318], [-1.5786, -0.7421, 2.6599], [-1.445, -0.912, 2.6958], [-1.4557, -0.7033, 2.8457], [-1.6177, -0.8526, 2.6976], [-1.6001, -0.6923, 2.8391], [-1.6243, -0.9733, 2.7869], [-1.7268, -0.798, 2.835], [-1.193, -0.0519, 2.0351], [-1.3435, -0.2933, 2.0193], [-1.2588, -0.1426, 2.209], [-1.4407, -0.2498, 2.189], [-1.5014, -0.1002, 2.0669], [-1.4556, -0.1055, 2.3327], [-1.5968, -0.0793, 2.2019], [-1.4626, 0.0348, 2.2946], [-1.7326, 0.0798, 2.2469], [-1.387, -0.2502, 2.2835], [-1.395, -0.4794, 2.1467], [-1.2812, -0.4015, 2.3632], [-1.3813, -0.5331, 2.2873], [-1.4139, -0.3702, 2.4131], [-1.5992, -0.4815, 2.2803], [-1.5682, -0.3508, 2.4552], [-1.4909, -0.4776, 2.5644], [-1.6865, -0.4261, 2.4494], [-1.6155, -0.417, 2.6079], [-1.7356, -0.5529, 2.5041], [-1.6103, -0.5837, 2.6894], [-1.6241, -0.0928, 2.2718], [-1.5204, -0.0961, 2.4631], [-1.7005, -0.0324, 2.4352], [-1.4812, 0.0004, 2.5541], [-1.7192, 0.0836, 2.6206], [-1.5421, 0.1187, 2.6467], [-1.6088, -0.0291, 2.4783], [-1.8023, -0.1383, 2.4672], [-1.6383, -0.1212, 2.6677], [-1.9373, 0.0102, 2.6402], [-1.79, -0.1738, 2.1798], [-1.7648, -0.477, 2.1614], [-1.9026, -0.3198, 2.1431], [-1.8791, -0.4841, 2.3323], [-1.9836, -0.2841, 2.3119], [-2.0588, -0.4981, 2.2104], [-1.9884, -0.4123, 2.4528], [-2.1808, -0.3358, 2.3055], [-2.094, -0.5581, 2.39], [-2.1485, -0.3657, 2.4886], [-2.264, -0.4826, 2.3348], [-2.1632, -0.1644, 2.2166], [-2.21, -0.3367, 2.3682], [-2.1872, -0.1473, 2.4007], [-1.9455, -0.3451, 2.1733], [-1.96, -0.4381, 2.3105], [-1.9811, -0.4094, 2.4743], [-2.0089, -0.2966, 2.5761], [-2.1594, -0.1526, 2.442], [-2.0434, -0.1706, 2.6238], [-2.1463, -0.3473, 2.701], [-2.1513, -0.0701, 2.625], [-2.336, -0.0856, 2.6393], [0.3882, -0.1263, 1.657], [0.4471, -0.3812, 1.5671], [0.4473, -0.4271, 1.8215], [0.606, -0.6549, 1.8015], [0.6841, -0.0746, 1.7494], [1.0024, 0.0896, 2.1954], [0.3295, -0.1508, 1.8303], [0.4043, -0.3527, 1.8189], [0.3058, -0.3013, 2.0091], [0.491, -0.4674, 2.0483], [0.4481, -0.273, 2.2079], [0.2382, -0.4479, 2.212], [0.32, -0.342, 2.4098], [0.2989, -0.5579, 2.3785], [0.4517, -0.4756, 2.5779], [0.5385, -0.4044, 1.7597], [0.7379, -0.1894, 1.6989], [0.7812, -0.4146, 1.7385], [1.066, -0.6634, 2.0119], [1.2942, -0.6638, 2.115], [0.4815, -0.1823, 1.9705], [0.7173, -0.338, 1.9654], [0.6038, -0.2412, 2.1006], [0.8275, -0.2105, 2.0393], [0.6903, -0.0753, 2.135], [0.9045, -0.1142, 2.1801], [0.7464, -0.0992, 2.333], [0.8856, -0.2645, 2.3135], [0.9343, -0.0493, 2.3469], [1.0831, -0.1917, 2.4223], [0.5697, -0.4249, 2.0491], [0.6128, -0.6361, 2.1223], [0.8606, -0.6023, 2.2195], [0.616, -0.6051, 2.364], [0.837, -0.6489, 2.47], [0.6345, -0.8119, 2.4231], [0.8393, -0.839, 2.4218], [0.7394, -0.7841, 2.5731], [0.8056, -0.2139, 2.0548], [0.8477, -0.4873, 2.1267], [0.9037, -0.2857, 2.2114], [1.0413, -0.4072, 2.28], [1.227, -0.3967, 2.1035], [1.2404, -0.3552, 2.4621], [0.9983, -0.4631, 2.3712], [0.8881, -0.2878, 2.439], [0.8406, -0.4808, 2.4881], [0.9514, -0.5214, 2.571], [0.872, -0.444, 2.6895], [1.011, -0.4102, 2.2317], [0.9048, -0.6619, 2.1848], [1.1082, -0.4889, 2.0965], [1.0299, -0.5494, 2.3466], [1.061, -0.6824, 2.1149], [1.19, -0.5188, 2.2445], [1.0516, -0.68, 2.3054], [1.1763, -0.6064, 2.373], [1.1388, -0.7828, 2.3127], [1.3378, -0.6808, 2.3389], [1.2628, -0.8324, 2.3574], [1.3292, -0.6812, 2.5044], [1.205, -0.8522, 2.4942], [1.0157, -0.4515, 2.4154], [1.2378, -0.5612, 2.2199], [1.1589, -0.5183, 2.403], [1.1861, -0.3489, 2.4799], [1.3625, -0.3391, 2.4275], [1.4476, -0.5035, 2.4802], [1.1803, -0.7738, 2.358], [1.0458, -0.7093, 2.5071], [1.2792, -0.7301, 2.4908], [1.1345, -0.583, 2.6612], [1.2792, -0.6959, 2.6461], [1.24, -0.865, 2.6821], [1.2481, -0.6581, 2.8138], [1.107, -0.8351, 2.7812], [1.3134, -0.8257, 2.8097], [1.1339, -0.7207, 2.9507], [1.3327, -0.7453, 2.3939], [1.4146, -0.5707, 2.2536], [1.4129, -0.5839, 2.5127], [1.4537, -0.7315, 2.3192], [1.4689, -0.7098, 2.4903], [1.7436, -0.6769, 2.6049], [1.6633, -0.8381, 2.6541], [1.4243, -0.6303, 2.3594], [1.2626, -0.568, 2.5148], [1.4368, -0.5507, 2.4722], [1.3047, -0.6796, 2.5702], [1.5365, -0.7506, 2.4958], [1.3511, -0.7751, 2.6361], [1.6093, -0.7059, 2.614], [1.3829, -0.5906, 2.772], [1.344, -0.7166, 2.8215], [1.5175, -0.6428, 2.8847], [1.3953, -0.8889, 2.8672], [1.5463, -0.824, 2.3889], [1.566, -0.5978, 2.5452], [1.467, -0.8388, 2.56], [1.6904, -0.7628, 2.4347], [1.72, -0.7413, 2.5869], [1.5331, -0.8324, 2.7157], [1.7124, -0.7654, 2.7402], [1.5634, -0.9595, 2.7039], [1.7741, -0.9044, 2.6511], [-0.2063, 0.3709, 1.9975], [-0.4741, 0.3306, 1.8504], [-0.4259, 0.2691, 2.1315], [-0.4527, 0.5542, 2.1224], [-0.5053, 0.4776, 2.3992], [-0.1602, 0.1741, 2.1555], [-0.0437, 0.4476, 2.4981], [-0.0374, 0.4164, 2.8104], [-0.1976, 0.1875, 2.8628], [-0.1183, 0.3044, 3.0499], [-0.3348, 0.5807, 2.199], [-0.3188, 0.5576, 2.3993], [-0.4943, 0.598, 2.3073], [-0.4793, 0.5051, 2.5591], [-0.4788, 0.8513, 2.5573], [-0.5037, 0.7687, 2.9104], [-0.4047, 0.3035, 2.6494], [-0.5416, 0.4614, 2.77], [-0.4208, 0.2626, 3.0431], [-0.5707, 0.3372, 3.1457], [-0.7972, 0.2454, 2.9173], [-0.8562, 0.3793, 3.0807], [-0.6505, 0.6271, 2.7707], [-0.4712, 0.4833, 2.9017], [-0.3979, 0.6376, 2.9344], [-0.6134, 0.824, 2.9232], [-0.3995, 0.8182, 3.0006], [-0.6143, 0.7682, 3.0875], [-0.4088, 0.7012, 3.1669], [-0.5702, 0.7494, 3.2453], [-0.3586, 0.8563, 3.2118], [-0.4558, 0.7942, 3.3536], [-0.8251, 0.5597, 3.0389], [-0.7999, 0.8148, 3.0374], [-0.9805, 0.6409, 2.9083], [-0.8693, 0.6642, 3.1961], [-0.9679, 0.861, 2.9958], [-1.1215, 0.8135, 3.0772], [-1.1784, 0.7777, 3.2207], [-1.193, 0.7693, 3.3712], [-1.0895, 0.9627, 3.4599], [-0.8271, 0.9095, 3.3031], [-0.9183, 0.6525, 3.4492], [-0.7842, 0.8341, 3.5585], [-1.011, 0.7206, 3.5754], [-0.7955, 0.6291, 3.6067], [-0.8945, 0.8193, 3.6807], [-0.8769, 0.9972, 3.4568], [-1.0665, 0.7113, 3.1722], [-1.0336, 0.6598, 3.3244], [-1.1761, 0.7596, 3.3967], [-1.0923, 0.7681, 3.5073], [-1.2095, 0.9095, 3.4853], [-0.096, 0.5017, 2.0684], [-0.2896, 0.5092, 1.968], [-0.2531, 0.7021, 2.1053], [-0.505, 0.5623, 2.1478], [-0.5268, 0.6996, 2.3915], [-0.5866, 0.9406, 2.3802], [-0.6721, 0.9906, 2.6205], [-0.0649, 0.5039, 2.2766], [0.0755, 0.7741, 2.1622], [0.0386, 0.8838, 2.3492], [0.2252, 0.7264, 2.4373], [0.0703, 0.8579, 2.5643], [0.1303, 0.6293, 2.6409], [0.2916, 0.6262, 2.7252], [0.3059, 0.861, 2.7801], [0.4254, 0.7353, 2.8465], [-0.2633, 0.8898, 2.4216], [0.007, 1.0275, 2.3532], [-0.0926, 1.2058, 2.3009], [-0.2274, 1.3567, 2.3745], [-0.1611, 1.4624, 2.7373], [-0.1844, 1.6141, 2.5452], [-0.3088, 1.7891, 2.6341], [-0.1038, 1.0234, 2.5838], [-0.0988, 1.168, 2.7122], [-0.3353, 1.2222, 2.6029], [-0.2395, 1.1589, 2.894], [-0.3332, 1.3603, 2.8333], [-0.4142, 1.1851, 2.9268], [-0.2267, 1.295, 3.0028], [-0.3728, 1.2176, 3.0805], [-0.2977, 1.4251, 3.0551], [-0.487, 1.3357, 3.0884], [-0.1901, 1.3723, 2.6874], [-0.0892, 1.4793, 2.6011], [-0.0947, 1.5611, 2.7432], [0.0824, 1.4371, 2.8498], [0.0674, 1.746, 2.9909], [0.2621, 1.6369, 3.0503], [0.2092, 1.8724, 2.9526], [0.131, 1.7493, 3.1803], [0.3236, 1.7851, 3.0499], [-0.3521, 1.5226, 2.7273], [-0.1198, 1.6538, 2.9006], [-0.2504, 1.6839, 2.674], [-0.3272, 1.5755, 2.8825], [-0.2777, 1.8239, 2.7755], [-0.3901, 1.8876, 2.8163], [-0.39, 1.8131, 2.9937], [-0.5211, 1.9536, 2.9195], [-0.3167, 1.907, 3.0675], [-0.3544, 2.0416, 2.91], [-0.4927, 1.9566, 3.0701], [-0.2682, 2.0595, 3.0686], [-0.4948, 2.1147, 2.9661], [-0.2093, 1.7719, 2.9657], [-0.1219, 1.9157, 2.8373], [-0.3411, 1.8864, 2.9034], [-0.1007, 1.8704, 3.0197], [-0.2201, 2.0125, 2.8471], [-0.0851, 2.0072, 2.9782], [-0.1707, 2.1149, 2.9883], [-0.3569, 2.0262, 3.1124], [-0.2818, 2.1899, 3.0607], [-0.26, 2.0213, 3.1984], [-0.1786, 2.0838, 3.2557], [-0.2165, 2.3018, 3.1772], [-0.105, -0.3822, 1.877], [-0.3709, -0.4439, 2.2513], [-0.5097, -0.6731, 2.2004], [0.1347, -0.5177, 2.6728], [0.404, -0.3843, 2.6742], [-0.4055, -0.2984, 2.3172], [-0.2725, -0.4019, 2.5154], [-0.4, -0.2039, 2.6002], [-0.3509, -0.3073, 2.8165], [-0.4648, -0.3683, 2.575], [-0.3682, -0.163, 2.6782], [-0.5702, -0.2038, 2.8362], [-0.3269, -0.5927, 2.5169], [-0.3698, -0.73, 2.3489], [-0.2053, -0.7915, 2.566], [-0.3542, -0.928, 2.5095], [-0.3499, -0.8178, 2.7404], [-0.535, -0.9481, 2.6282], [-0.3286, -1.0228, 2.7251], [-0.5057, -1.1263, 2.7461], [-0.2414, -0.481, 2.5541], [-0.3376, -0.4831, 2.6932], [-0.454, -0.723, 2.6939], [-0.2407, -0.6431, 2.7558], [-0.4031, -0.4968, 2.8372], [-0.6086, -0.7498, 2.5594], [-0.7376, -0.5878, 2.5886], [-0.685, -0.5738, 2.7987], [-0.8764, -0.6889, 2.6625], [-0.8218, -0.5116, 2.8096], [-0.7705, -0.619, 2.9794], [-0.9556, -0.578, 2.8388], [-0.5079, -0.9291, 2.6298], [-0.5355, -0.8017, 2.862], [-0.6186, -1.0849, 2.7508], [-0.4958, -0.9768, 2.949], [-0.5534, -1.1353, 2.8877], [-0.7533, -1.17, 2.9326], [-0.5369, -1.1383, 3.0315], [-0.6513, -1.2567, 3.0103], [-0.8443, -0.7621, 2.8062], [-0.6972, -0.8056, 2.9569], [-0.922, -0.8982, 2.8364], [-0.8326, -0.7566, 2.9879], [-0.8999, -0.9889, 2.9514], [-0.8675, -1.0604, 3.1005], [-0.8004, -0.8331, 3.119], [-0.7834, -0.9991, 3.231], [-0.9222, -0.8076, 3.1794], [-0.9456, -1.0689, 2.8172], [-0.7708, -1.1676, 2.9645], [-0.9865, -0.9752, 2.9865], [-0.8436, -1.0905, 3.0664], [-1.0407, -1.0783, 2.9652], [-0.9433, -1.0245, 3.1288], [-1.0471, -1.0689, 3.1154], [-1.0461, -1.2876, 3.1082], [-0.0213, -0.4666, 2.3756], [-0.1444, -0.2528, 2.4992], [-0.0785, -0.5093, 2.5518], [0.0617, -0.5599, 2.666], [-0.0974, -0.5073, 2.6961], [-0.3736, -0.6025, 2.6139], [-0.294, -0.6083, 2.8357], [-0.2164, -0.7707, 2.964], [-0.3455, -0.8544, 3.2104], [-0.3869, -0.6151, 2.8181], [-0.3281, -0.7986, 2.9497], [-0.3262, -0.5831, 3.0251], [-0.082, -0.7189, 2.8814], [0.1028, -0.6574, 2.8784], [-0.0226, -0.8589, 2.8658], [0.0783, -0.7772, 2.9815], [0.0766, -0.9572, 2.8883], [0.0345, -0.9056, 3.0628], [0.2144, -1.0614, 2.949], [0.0978, -1.0517, 3.0758], [0.0487, -0.7423, 2.9313], [-0.1388, -0.6059, 2.9617], [-0.0953, -0.8719, 3.0137], [0.0817, -0.7756, 3.0442], [-0.0207, -0.8187, 3.1203], [-0.1479, -0.7708, 3.2302], [-0.0581, -0.6281, 3.2804], [-0.1951, -0.9855, 2.9326], [0.0797, -1.0171, 3.0858], [-0.1709, -0.9114, 3.1276], [-0.0201, -1.1852, 3.15], [-0.0386, -1.1465, 3.2997], [-0.2841, -1.0997, 3.3192], [-0.1395, -1.2573, 3.252], [-0.1048, -1.0964, 3.0978], [-0.1577, -1.1281, 3.2847], [0.111, -1.1749, 3.2791], [-0.0254, -1.0046, 3.4143], [-0.0894, -1.222, 3.331], [0.1316, -1.151, 3.4414], [-0.0199, -1.2995, 3.4212], [0.0321, -1.1098, 3.518], [-0.1734, -1.218, 3.5096], [0.0628, -1.2649, 3.5411], [0.3613, 0.2685, 2.4708], [0.3495, -0.0182, 2.4943], [0.5818, 0.1132, 2.5388], [0.5593, 0.5364, 2.4932], [0.2961, 0.6227, 2.5], [0.3409, 0.7241, 2.6836], [0.4359, 0.8042, 2.9054], [0.4503, 0.9966, 2.835], [0.5986, 0.8953, 2.9433], [0.6338, 1.1116, 2.8343], [0.3986, 0.7429, 3.028], [0.5087, 0.6669, 3.161], [0.3209, 0.7082, 3.1896], [0.6963, 0.6694, 3.2807], [0.9003, 0.7341, 3.195], [0.9746, 0.527, 3.1188], [0.8624, 0.4021, 3.2714], [1.0078, 0.5798, 3.2616], [0.8708, 0.5263, 3.428], [1.0075, 0.4014, 3.2811], [1.0385, 0.5869, 3.4111], [0.9308, 0.4144, 3.422], [1.0537, 0.3113, 3.4392], [1.0933, 0.8323, 3.2753], [1.0511, 0.6073, 3.4057], [1.1907, 0.5519, 3.3765], [1.3246, 0.5906, 3.353], [1.191, 0.6184, 3.5011], [1.2788, 0.5762, 3.5068], [1.348, 0.7514, 3.6439], [0.4336, 0.1772, 2.3244], [0.2301, 0.2393, 2.5058], [0.4365, 0.0605, 2.6255], [0.2871, 0.2013, 2.7727], [0.2509, -0.0607, 2.7686], [0.4105, 0.0667, 2.9265], [0.7099, 0.0617, 2.3555], [0.7597, 0.3215, 2.3077], [0.9069, 0.3515, 2.4695], [0.9223, 0.1147, 2.5076], [1.0076, 0.2572, 2.6398], [1.1353, 0.1283, 2.6708], [0.9873, 0.4217, 2.5644], [0.8281, 0.3643, 2.7062], [1.0694, 0.3317, 2.7249], [0.9198, 0.5459, 2.8838], [1.0504, 0.3744, 2.9807], [1.1319, 0.6312, 2.9254], [1.3637, 0.4481, 2.8201], [1.3152, 0.2526, 2.8314], [1.4284, 0.1954, 2.8384], [1.5518, 0.1842, 2.8926], [1.5221, 0.3643, 3.0667], [1.3497, 0.4007, 2.9171], [1.4378, 0.5986, 2.8726], [1.5368, 0.5056, 3.0006], [1.6333, 0.3147, 2.9213], [1.4255, 0.5283, 2.9513], [1.6246, 0.3861, 2.9703], [1.5966, 0.6474, 2.9258], [1.6911, 0.5187, 3.007], [0.6462, 0.6173, 2.983], [0.4285, 0.7635, 3.0058], [0.6562, 0.6656, 3.0934], [0.4476, 0.7586, 3.1732], [0.5303, 0.5208, 3.2329], [0.6724, 0.5761, 3.3091], [0.5959, 0.8231, 3.3764], [0.6577, 1.0183, 2.8767], [0.5467, 1.0661, 3.0733], [0.7635, 0.9635, 3.0314], [0.6495, 1.1708, 2.9464], [0.6656, 1.0527, 3.1777], [0.9412, 1.0528, 3.1797], [0.6497, 1.1236, 3.1977], [0.691, 1.3063, 3.0108], [0.7763, 1.2373, 3.2013], [0.7422, 1.4025, 3.5158], [0.77, 0.5448, 3.1505], [0.7514, 0.8044, 3.2401], [0.645, 0.5698, 3.2724], [0.8399, 0.6713, 3.2925], [0.8686, 0.5267, 3.4284], [0.8125, 0.8052, 3.4708], [0.6234, 0.715, 3.3883], [0.5799, 0.5662, 3.464], [0.7602, 0.4393, 3.5735], [0.5985, 0.641, 3.6686], [0.7229, 0.8533, 3.4969], [0.7661, 1.0539, 3.4697], [0.8232, 0.8016, 3.6109], [0.7347, 1.0007, 3.6126], [0.9529, 0.8553, 3.6384], [0.9151, 1.0842, 3.5836], [0.8058, 0.9372, 3.7191], [0.9976, 0.9606, 3.6531], [0.8544, 1.1216, 3.7071], [0.9157, 0.9054, 3.7826], [1.0273, 1.0793, 3.7055], [0.8331, 1.0572, 3.8376], [1.0251, 0.969, 3.8076], [-0.2194, -0.1644, 2.2112], [-0.155, 0.0207, 2.4316], [-0.3808, -0.0486, 2.3815], [-0.5555, -0.2172, 2.6364], [-0.3954, -0.1882, 2.8562], [-0.2258, 0.2506, 2.2574], [-0.5106, 0.2115, 2.2907], [-0.3132, 0.2605, 2.4928], [-0.6123, 0.1195, 2.5014], [-0.7586, -0.0341, 2.334], [-0.6703, -0.0934, 2.5831], [-0.8374, -0.0202, 2.7669], [-0.5541, 0.2898, 2.5497], [-0.5983, 0.2803, 2.69], [-0.6699, 0.0776, 2.7389], [-0.458, 0.1164, 2.8448], [-0.6355, 0.2772, 2.8216], [-0.6724, 0.0508, 2.952], [-0.4782, 0.2689, 2.9825], [-0.7351, 0.2312, 2.9929], [-0.8563, 0.5523, 2.6872], [-1.1085, 0.4517, 2.7126], [-0.8879, 0.4522, 2.8915], [-1.0196, 0.6565, 2.7664], [-1.1241, 0.4647, 2.9393], [-0.8731, 0.2971, 2.6663], [-0.8539, -0.0296, 2.7613], [-0.8773, 0.1987, 2.8694], [-1.1044, 0.0822, 2.7965], [-0.9032, 0.0152, 2.9341], [-1.0748, 0.049, 2.9337], [-1.1455, 0.182, 3.0191], [-1.0471, 0.1801, 2.7471], [-0.8322, 0.3343, 2.7939], [-0.9248, 0.3437, 3.0438], [-0.8744, 0.4879, 2.9278], [-1.112, 0.4287, 2.8738], [-0.9822, 0.3614, 3.0809], [-1.1446, 0.222, 2.8663], [-1.1774, 0.416, 2.772], [-1.2082, 0.3539, 2.9806], [-1.3416, 0.2486, 2.9023], [-1.2968, 0.479, 2.9642], [-1.5315, 0.3035, 2.9834], [-1.0694, 0.4166, 2.9052], [-1.2616, 0.3721, 2.8222], [-1.1199, 0.2571, 2.9479], [-1.1881, 0.5104, 2.9543], [-1.2877, 0.298, 2.918], [-1.2706, 0.4685, 2.9819], [-1.3292, 0.2507, 3.0772], [-1.1394, 0.43, 3.1157], [-1.3953, 0.378, 3.1647], [-1.1429, 0.4461, 3.0268], [-1.4606, 0.4927, 2.9014], [-1.2835, 0.4366, 3.0807], [-1.3189, 0.6359, 2.9997], [-1.4411, 0.4727, 3.0578], [-1.2411, 0.5326, 3.162], [-1.4287, 0.4491, 3.2228], [-1.2648, 0.653, 3.181], [-1.5351, 0.6283, 3.1772], [-1.3234, 0.5348, 3.31], [-1.1731, 0.2551, 2.6194], [-1.2223, 0.2286, 2.8117], [-1.2344, 0.0401, 2.6639], [-1.2454, -0.0844, 2.8455], [-1.296, -0.1886, 3.0375], [-1.2744, 0.2079, 2.8447], [-1.4477, 0.1363, 2.8971], [-1.4345, 0.1399, 3.0856], [-1.2356, 0.4024, 2.8072], [-1.3193, 0.1977, 2.7971], [-1.1881, 0.293, 2.9416], [-1.314, 0.1957, 2.9255], [-1.3707, 0.436, 2.9751], [-1.3065, 0.3617, 3.1001], [-1.4746, 0.3932, 3.0136], [-1.4046, 0.3598, 2.7894], [-1.3902, 0.2342, 2.9418], [-1.4873, 0.0656, 2.8645], [-1.4972, 0.3073, 2.9117], [-1.6064, 0.1973, 2.7877], [-1.5386, 0.1643, 2.9773], [-1.6882, 0.1523, 2.9028], [-1.7727, 0.3494, 2.8807], [-1.7161, 0.1545, 3.0509], [-1.8193, 0.2406, 2.9696], [0.2075, -0.4046, 2.4918], [0.3082, -0.1804, 2.6187], [0.3763, -0.4516, 2.7148], [0.3243, -0.5346, 2.928], [0.0798, -0.5713, 2.5034], [0.0303, -0.4181, 2.7416], [0.0483, -0.6586, 2.7211], [-0.1474, -0.4925, 2.7843], [-0.214, -0.7409, 2.7072], [-0.3194, -0.5646, 2.8587], [-0.2249, -0.7799, 2.9079], [0.0914, -0.7523, 2.5588], [-0.0355, -0.8793, 2.7549], [0.0906, -0.9556, 2.9425], [-0.0894, -1.0854, 2.7603], [0.1172, -1.1191, 2.8581], [0.025, -0.9072, 2.8834], [0.1166, -0.8979, 2.8046], [-0.0456, -1.0146, 2.8823], [0.1557, -0.8602, 2.9899], [-0.1172, -0.8116, 3.0432], [0.0806, -0.881, 3.1548], [-0.0238, -1.0765, 3.1919], [-0.1895, -1.0047, 3.2289], [-0.0177, -1.1914, 2.7822], [-0.0386, -1.2846, 2.911], [-0.1908, -1.3788, 2.8213], [-0.1164, -1.3059, 3.0635], [-0.2464, -1.3128, 3.1079], [-0.3576, -1.4863, 2.9613], [0.0223, -1.3978, 2.8549], [-0.041, -1.6205, 3.0708], [0.059, -0.4967, 2.7692], [-0.0922, -0.6329, 2.8917], [0.1397, -0.7613, 2.9528], [0.047, -0.5856, 3.0534], [-0.0317, -0.7651, 3.0412], [0.128, -0.7153, 3.1493], [-0.1044, -0.6321, 3.2162], [0.2826, -0.8498, 2.7744], [0.4616, -0.6521, 2.9136], [0.2837, -0.8602, 3.0002], [0.4796, -0.8555, 2.8006], [0.4732, -0.7663, 3.0866], [0.4201, -0.9256, 3.1743], [0.5992, -0.9517, 3.1382], [0.3266, -0.8912, 3.203], [0.4296, -0.728, 3.271], [0.5809, -0.8464, 3.2753], [0.5103, -1.0192, 3.3413], [0.5569, -0.8145, 3.3949], [0.413, -0.927, 3.4392], [0.4376, -1.189, 3.1661], [0.6482, -1.0243, 3.1922], [0.5941, -1.2367, 3.1846], [0.6377, -1.0378, 3.3417], [0.4695, -1.1711, 3.3429], [0.7297, -1.2073, 3.4649], [0.4871, -1.1831, 3.526], [0.6246, -1.3446, 3.4453], [0.0148, 0.3502, 2.5027], [-0.2637, 0.3845, 2.5233], [-0.0852, 0.3889, 2.7707], [-0.1464, 0.5841, 2.6269], [0.116, 0.1214, 2.707], [0.2166, 0.3566, 2.7588], [0.1685, 0.3585, 3.0201], [0.2457, 0.5879, 2.668], [0.426, 0.5387, 2.7361], [-0.073, 0.27, 2.7554], [0.1161, 0.4989, 2.8375], [-0.1866, 0.5471, 2.9962], [-0.0871, 0.7097, 3.0906], [0.0725, 0.5079, 2.9545], [0.295, 0.4323, 2.9106], [0.236, 0.6652, 2.9892], [0.1825, 0.4534, 3.0546], [0.0795, 0.6854, 2.987], [-0.0634, 0.7699, 2.9017], [0.1341, 0.7902, 2.9442], [-0.0025, 0.8331, 3.0695], [0.1984, 0.5863, 2.9681], [0.1121, 0.8497, 2.8741], [0.2404, 0.7221, 3.001], [0.008, 0.859, 3.0082], [0.0699, 0.6283, 3.0735], [0.2213, 0.7582, 3.0739], [0.1261, 0.6414, 3.1437], [0.074, 0.8632, 3.038], [0.1367, 0.9629, 2.8673], [0.2192, 0.8277, 3.0526], [0.362, 0.923, 2.8548], [0.1764, 0.9995, 3.032], [0.3183, 0.8277, 3.0356], [0.4337, 0.9092, 3.0295], [-0.0014, 0.9949, 2.9433], [0.2362, 0.8894, 3.0689], [0.1846, 1.0474, 2.8944], [0.0453, 0.9763, 3.102], [0.3265, 0.9981, 3.0391], [0.1251, 1.1124, 2.9941], [0.1747, 0.9869, 3.1465], [0.278, 1.0962, 3.0316], [0.3195, 1.0218, 3.2076], [-0.1049, -0.1425, 2.7967], [-0.4319, -0.1803, 2.9399], [-0.6094, -0.1106, 2.8048], [-0.5789, -0.3092, 2.8937], [-0.4323, -0.1242, 2.9174], [-0.3715, -0.3217, 2.825], [-0.2838, -0.1994, 2.9782], [-0.327, -0.3953, 3.136], [-0.5022, -0.0542, 3.0058], [-0.5426, 0.0238, 3.0546], [-0.7759, -0.0456, 3.1168], [-0.7453, -0.1036, 2.9212], [-0.7095, -0.0133, 3.1181], [-0.6302, -0.4148, 2.9912], [-0.7997, -0.3675, 2.8876], [-0.8442, -0.222, 3.0127], [-0.8282, -0.4426, 3.0055], [-0.8299, -0.2051, 2.908], [-0.786, -0.3711, 3.0664], [-0.808, -0.2721, 3.164], [-0.9482, -0.1537, 3.0262], [-0.6103, -0.3388, 3.0658], [-0.7692, -0.4263, 2.994], [-0.9261, -0.3292, 3.0681], [-0.7981, -0.478, 3.2037], [-0.6549, -0.1981, 3.115], [-0.8103, -0.1051, 3.1637], [-0.6243, -0.515, 3.0469], [-0.7084, -0.3099, 3.1622], [-0.6351, -0.4711, 3.1844], [-0.8336, -0.2891, 3.1798], [-0.821, -0.5275, 3.1059], [-0.7139, -0.4072, 3.2447], [-0.8721, -0.3594, 3.1537], [-0.8116, -0.3409, 3.2903], [0.2291, -0.0358, 3.0202], [0.0788, -0.2369, 3.0259], [0.1646, -0.1711, 3.2288], [0.4225, -0.0359, 2.867], [0.3136, 0.1229, 3.0427], [0.4249, -0.0767, 3.0711], [0.5213, 0.1243, 2.9851], [0.6301, -0.0367, 3.0994], [0.44, 0.0511, 3.071], [0.5698, -0.0935, 3.0894], [0.6086, -0.2328, 3.0312], [0.6487, -0.0109, 3.143], [0.5498, -0.2286, 3.183], [0.72, -0.1726, 3.0557], [0.6184, -0.0709, 3.2912], [0.7412, -0.1204, 3.1622], [0.6084, -0.2079, 3.2986], [0.4678, 0.133, 2.998], [0.2378, 0.0813, 3.19], [0.4114, 0.199, 3.1095], [0.3507, 0.0501, 3.2571], [0.5378, 0.0735, 3.1799], [0.3705, 0.2281, 3.2501], [0.4759, -0.0484, 3.251], [0.4273, 0.1343, 3.3099], [0.6067, -0.0787, 3.255], [0.6193, 0.1841, 3.223], [-0.0511, -0.0923, 3.1512], [0.0743, -0.2485, 3.1152], [-0.1172, 0.083, 3.1436], [0.0093, 0.0154, 3.3913], [0.0055, -0.2175, 3.3316], [-0.061, -0.093, 3.4732], [-0.068, -0.0376, 3.4276], [0.1512, -0.0446, 3.4151], [0.0977, 0.1209, 3.4301], [-0.0737, -0.005, 3.4949], [0.166, -0.0178, 3.4686], [0.2261, -0.1455, 3.3441], [0.0109, -0.0676, 3.5451]], u: [[-0.1145, 0.1353, 0.0072], [0.1115, 0.1033, 0.0625], [0.0204, 0.1266, -0.1225], [0.1787, 0.0648, 0.0459], [-0.077, 0.1403, -0.1378], [-0.0701, 0.0597, 0.1667], [-0.0932, -0.2263, -0.0235], [0.0345, 0.0769, -0.1371], [-0.0406, 0.1555, 0.1529], [0.0625, -0.1866, 0.1083], [0.145, 0.116, 0.0161], [-0.089, -0.0003, 0.2108], [0.184, -0.1062, 0.0288], [-0.1375, 0.0632, 0.0252], [0.0099, -0.1294, 0.1313], [0.0778, -0.0233, -0.13], [-0.1669, 0.0611, 0.1304], [0.1962, 0.0175, 0.1396], [0.036, 0.0058, -0.1604], [0.177, -0.1499, 0.0708], [-0.1427, -0.0679, 0.0794], [0.1206, -0.1128, 0.0598], [0.0024, -0.165, -0.1656], [-0.1268, -0.1389, 0.0477], [-0.077, -0.0763, -0.1328], [0.0363, -0.1801, 0.0327], [-0.0582, 0.0566, -0.1923], [-0.0867, 0.1738, 0.1448], [0.2018, -0.0201, -0.0312], [0.0642, -0.071, 0.128], [0.1726, 0.1356, -0.0774], [0.1043, -0.0563, 0.2052], [0.0293, -0.1953, 0.0325], [-0.1405, -0.0783, 0.0941], [0.1671, 0.188, 0.0385], [-0.2171, 0.1012, 0.0668], [0.1703, 0.0894, 0.1109], [0.163, 0.1593, -0.0303], [0.1777, -0.1164, -0.0224], [0.0243, 0.1219, -0.1117], [0.1809, -0.0978, 0.005], [0.0155, 0.1735, -0.1294], [-0.0754, 0.0489, 0.1984], [-0.1264, 0.1119, 0.0043], [0.0947, -0.0144, 0.1274], [-0.0631, -0.1539, 0.1591], [0.25, 0.0036, 0.0412], [0.057, -0.1671, 0.0492], [-0.0075, 0.0263, -0.1689], [0.1969, 0.0873, -0.0635], [-0.0828, 0.1181, 0.0751], [0.1459, -0.1084, 0.1596], [-0.0865, 0.0335, 0.2156], [0.0422, -0.0514, 0.1601], [-0.1542, 0.075, 0.0529], [-0.1432, -0.1917, -0.0884], [0.1068, -0.179, 0.1367], [-0.0715, -0.1414, -0.0528], [-0.1915, -0.0271, 0.1521], [0.1585, -0.0841, 0.0926], [0.1948, 0.0597, 0.0762], [-0.1338, 0.0972, 0.1275], [-0.0833, 0.128, -0.1231], [-0.0679, 0.0434, 0.2322], [0.1303, 0.0388, -0.0725], [-0.056, 0.1248, 0.1444], [0.1379, -0.1569, 0.0724], [-0.1125, -0.188, 0.0287], [-0.062, -0.0299, 0.2212], [0.1761, -0.055, -0.0136], [-0.0012, -0.1359, -0.0708], [-0.0209, 0.1205, -0.1245], [-0.1306, 0.1383, -0.0859], [0.028, 0.0369, -0.2045], [0.1014, 0.1131, -0.0282], [-0.2035, 0.0926, 0.0491], [0.145, -0.0205, 0.1962], [-0.0322, -0.2103, 0.0841], [0.1948, 0.0356, 0.057], [-0.0164, 0.0343, -0.1792], [0.1642, 0.159, -0.0394], [0.1527, 0.001, 0.1343], [-0.0736, -0.2123, -0.0114], [0.2321, -0.041, 0.0617], [0.0727, 0.128, -0.1649], [0.1774, -0.0137, -0.0109], [0.0124, -0.1343, -0.1311], [0.1575, 0.0776, -0.0157], [0.2017, -0.0215, 0.1367], [-0.09, 0.1174, 0.0653], [0.0169, 0.1271, -0.1002], [-0.1459, 0.009, 0.0885], [-0.1228, 0.1516, 0.0941], [0.0005, -0.1304, 0.1166], [0.0175, -0.042, -0.1599], [0.2239, -0.0056, -0.0704], [-0.0816, 0.2344, 0.009], [0.0946, -0.0627, 0.1724], [-0.0533, 0.1057, 0.1376], [-0.0477, -0.1531, 0.0303], [-0.0017, 0.0127, -0.1576], [-0.031, 0.2018, 0.0963], [0.0967, -0.0629, 0.1058], [0.0893, 0.1112, -0.2086], [-0.1226, -0.0356, 0.1007], [-0.1376, 0.1953, 0.0133], [0.0186, 0.1184, -0.1697], [0.1579, 0.1688, 0.0548], [-0.1727, 0.052, 0.0934], [0.1434, -0.1071, 0.1743], [-0.0099, -0.2192, -0.0494], [0.1746, 0.0554, 0.1013], [-0.0009, -0.2106, 0.0842], [0.2436, 0.0394, -0.0009], [-0.0863, 0.1587, 0.0278], [0.1533, -0.0857, 0.0832], [0.0536, 0.0442, -0.2423], [0.2121, 0.0214, -0.0003], [0.0646, 0.1517, 0.1661], [-0.1972, 0.0284, -0.0099], [0.0644, -0.2122, -0.0383], [0.0327, -0.0336, -0.1458], [0.0936, -0.1162, 0.113], [-0.1739, 0.0776, 0.1225], [0.0475, 0.1808, 0.0358], [-0.0412, 0.0186, -0.2422], [-0.1892, -0.0216, 0.0579], [0.1494, -0.1287, 0.0777], [0.0424, -0.211, -0.1225], [0.0952, -0.1432, 0.1172], [0.0115, -0.1782, -0.1334], [-0.1469, -0.0455, -0.154], [0.0247, 0.0765, -0.1847], [-0.1362, -0.1837, -0.0304], [0.0012, -0.1004, -0.2178], [-0.1788, 0.0698, -0.117], [0.0413, 0.1608, -0.1448], [-0.1409, 0.1307, -0.0032], [0.0767, 0.1308, -0.0636], [0.0583, 0.147, 0.1053], [0.1318, -0.0387, 0.1969], [-0.2375, 0.007, 0.0213], [0.0607, -0.1416, -0.0246], [0.0147, -0.0462, -0.1475], [-0.1361, -0.0768, -0.048], [0.0999, -0.109, 0.0954], [0.0986, 0.1671, 0.019], [0.0813, -0.0045, 0.1645], [0.0002, 0.1556, -0.056], [0.0134, -0.114, -0.1858], [-0.092, -0.212, -0.0831], [-0.1671, -0.0205, -0.0029], [0.1067, -0.0606, 0.1767], [-0.0598, 0.1578, 0.0048], [0.1135, 0.0795, 0.1096], [-0.1417, 0.0582, 0.0219], [-0.1651, -0.0805, 0.0864], [0.1826, -0.0226, 0.1678], [-0.1036, 0.1286, 0.0672], [0.0482, 0.1892, -0.158], [-0.0282, 0.0089, -0.1645], [-0.1466, 0.092, 0.0367], [0.0677, 0.2042, 0.029], [-0.0137, -0.0375, -0.1904], [-0.1674, -0.1262, -0.0536], [-0.1431, -0.1059, 0.0513], [0.1728, -0.0329, 0.0583], [-0.0943, 0.099, 0.0851], [-0.1802, 0.0007, 0.0901], [0.0907, -0.1353, 0.0503], [0.1706, -0.066, 0.1013], [0.0427, 0.18, -0.0525], [0.1366, 0.0679, 0.1498], [0.0124, -0.157, -0.1808], [-0.16, 0.0506, -0.1104], [0.0307, -0.0448, 0.2042], [-0.1229, 0.1016, -0.026], [0.0466, 0.1609, -0.0242], [0.0023, -0.138, -0.2102], [0.033, -0.0972, 0.1207], [-0.1035, 0.1593, 0.0773], [-0.1245, -0.1537, 0.0052], [-0.2134, 0.0723, -0.0005], [0.0183, 0.1866, -0.1136], [-0.0504, 0.1667, 0.1809], [0.0124, 0.1945, 0.1469], [0.1115, -0.1453, -0.0191], [-0.0646, 0.0398, 0.1797], [-0.2033, 0.0566, 0.098], [-0.2133, -0.0153, -0.0274], [-0.0853, 0.0807, 0.1567], [-0.1083, -0.109, -0.0507], [0.0615, -0.0745, 0.1527], [-0.2397, 0.0442, 0.0674], [-0.0111, 0.1716, 0.0158], [-0.1604, -0.0471, -0.044], [-0.0891, 0.099, 0.0911], [0.0814, -0.0026, 0.1494], [-0.1967, 0.0631, 0.0205], [-0.0068, 0.1544, -0.0367], [-0.0126, -0.1413, -0.21], [-0.1889, -0.0526, -0.0204], [-0.1284, 0.1802, 0.1175], [-0.1429, -0.1961, 0.0189], [-0.2433, 0.0568, 0.0255], [0.0102, -0.2359, 0.0355], [-0.1691, -0.1135, -0.0683], [0.0073, -0.0695, -0.1774], [-0.1604, -0.1276, 0.1185], [-0.1489, 0.0138, -0.0905], [0.0466, 0.0242, -0.2491], [-0.1705, -0.0486, 0.0254], [0.0435, 0.0765, 0.1281], [-0.1854, 0.0048, -0.0404], [-0.116, 0.1275, 0.1309], [0.1003, 0.1614, 0.0848], [0.0822, -0.0324, 0.1799], [-0.0052, 0.1673, -0.0116], [0.0064, -0.0756, -0.1471], [-0.2237, -0.0561, -0.0715], [-0.1169, 0.1518, 0.0975], [0.0482, 0.0001, 0.1825], [-0.1885, 0.079, -0.0055], [0.0298, -0.1093, -0.145], [-0.16, -0.0655, -0.0318], [0.0465, -0.095, 0.1825], [-0.094, 0.1476, -0.0494], [0.1181, 0.0809, 0.0984], [-0.1069, 0.1276, -0.0064], [0.193, 0.0967, 0.0377], [-0.1433, 0.1732, 0.0739], [-0.0667, -0.1433, 0.0041], [-0.0296, -0.1412, -0.0593], [-0.1949, -0.0297, -0.0073], [0.067, -0.028, 0.2151], [-0.1912, 0.0667, -0.0189], [-0.1413, 0.1713, -0.0575], [-0.0479, -0.2255, -0.087], [-0.1135, 0.0228, -0.1289], [0.0164, 0.1818, -0.112], [-0.0929, 0.1108, 0.0604], [-0.1381, -0.1624, -0.1046], [-0.0085, 0.0285, -0.1964], [-0.2058, 0.092, -0.0354], [0.0391, 0.1938, -0.0466], [-0.0606, 0.0862, 0.1462], [-0.1731, -0.0578, -0.0903], [-0.1195, 0.162, -0.1298], [-0.1226, -0.096, 0.059], [-0.0264, 0.137, 0.0841], [-0.1782, -0.0866, -0.1387], [-0.0923, -0.2055, -0.0113], [0.0152, 0.162, -0.1471], [0.0534, -0.0191, 0.1982], [-0.1206, 0.1694, -0.0163], [0.0877, 0.1261, 0.1695], [0.0103, 0.1371, -0.213], [-0.0035, -0.2283, -0.0776], [-0.1757, 0.1692, -0.0076], [0.1941, 0.0664, 0.1026], [0.1189, -0.0562, -0.1045], [-0.0468, -0.0066, -0.1868], [0.1585, -0.0426, 0.0198], [0.1931, -0.0592, -0.0634], [0.1461, 0.1606, 0.0461], [-0.09, 0.085, 0.1078], [-0.0017, 0.1549, -0.0034], [-0.1491, -0.0128, 0.08], [0.1022, -0.1992, 0.0334], [-0.051, -0.1079, -0.1446], [-0.2212, -0.0921, 0.0553], [-0.0702, 0.1211, 0.1543], [0.0762, 0.1369, -0.0229], [0.1545, 0.0156, 0.1943], [0.0017, 0.2025, 0.0087], [0.1805, 0.1276, -0.1109], [0.06, -0.1032, -0.1001], [-0.041, 0.2367, -0.0141], [0.1532, -0.1196, -0.0543], [-0.147, 0.0998, 0.1395], [0.1429, -0.1354, 0.0756], [-0.0744, -0.0498, 0.1452], [0.1961, -0.029, 0.0008], [0.0283, -0.1367, -0.0655], [0.1841, 0.0606, -0.0068], [-0.0672, 0.0768, 0.1427], [0.0871, -0.1497, 0.0598], [0.1176, 0.1433, 0.0481], [0.2401, -0.0541, 0.0221], [-0.1373, -0.0374, 0.075], [-0.1123, -0.1539, -0.007], [0.2124, -0.0458, 0.0572], [-0.1343, 0.015, 0.1812], [-0.1424, -0.0661, -0.1965], [-0.1448, -0.1057, 0.0724], [0.1226, -0.0921, 0.0095], [0.0258, -0.0367, -0.1505], [-0.0417, -0.1853, -0.0687], [0.0398, -0.189, 0.1378], [0.0023, -0.0816, -0.1955], [0.0068, 0.0822, -0.1836], [0.1815, -0.0637, -0.0973], [0.0122, -0.0196, -0.2391], [0.1684, -0.1053, 0.0531], [-0.0035, -0.1361, -0.0852], [0.0756, 0.1226, -0.0969], [-0.0329, 0.1595, -0.0641], [-0.1056, -0.0393, 0.1248], [0.0981, 0.0737, 0.1136], [-0.0829, -0.2386, 0.0358], [0.1578, 0.0273, -0.0977], [-0.0147, 0.0245, -0.229], [-0.0206, 0.1745, 0.1027], [0.1598, 0.0805, 0.0538], [-0.0654, -0.1056, 0.1115], [-0.0379, -0.0596, -0.1403], [0.0388, 0.1535, -0.025], [0.2098, 0.0105, 0.0268], [-0.0652, 0.1468, 0.0199], [0.1323, 0.0859, 0.1419], [-0.0639, -0.117, 0.0876], [-0.0583, 0.0248, 0.2344], [0.2028, -0.1358, -0.061], [-0.0116, 0.0984, -0.1268], [-0.0386, 0.1157, 0.1577], [0.1178, 0.1214, 0.0011], [0.1675, -0.1013, -0.0071], [0.065, -0.2288, -0.034], [-0.1423, -0.0931, 0.0816], [0.1642, -0.0966, 0.0116], [0.044, -0.1289, -0.1919], [0.1361, 0.0196, 0.0719], [0.0715, -0.1746, 0.0315], [-0.0779, -0.1242, -0.1664], [-0.1191, -0.0993, 0.0761], [0.1565, -0.0675, 0.066], [-0.0944, 0.0968, 0.2048], [0.0396, -0.1906, 0.0799], [0.1041, 0.0547, -0.1203], [0.0545, 0.0452, 0.2218], [0.0623, -0.1457, -0.0556], [-0.0146, -0.088, 0.1361], [0.1193, 0.0881, 0.0795], [-0.0277, -0.1096, 0.1109], [0.1556, 0.0108, -0.027], [-0.0855, 0.0989, 0.1511], [0.1098, 0.1286, 0.0266], [-0.0907, -0.0431, 0.1258], [0.2048, -0.1343, -0.0115], [0.0863, 0.1503, -0.0997], [0.249, -0.0439, 0.0285], [0.0723, -0.1259, -0.206], [-0.1526, -0.003, 0.1695], [-0.0661, -0.1292, -0.1821], [0.1116, 0.1892, -0.1168], [0.1135, -0.1489, -0.0832], [0.1126, 0.1708, 0.1068], [-0.0502, -0.1447, 0.1035], [0.2264, -0.0271, -0.0919], [0.1861, 0.0586, 0.0302], [-0.0895, -0.045, 0.1783], [-0.12, -0.0873, -0.1607], [-0.0986, -0.1558, 0.0859], [0.1723, -0.0589, -0.0122], [0.046, 0.155, 0.1508], [-0.204, 0.0517, -0.1257], [0.0269, 0.0906, -0.1653], [-0.0382, -0.2255, -0.0404], [0.0911, -0.019, 0.2003], [-0.0164, 0.2107, -0.0924], [-0.1114, -0.1521, -0.0898], [-0.074, -0.1626, -0.1523], [-0.1571, -0.1237, 0.1171], [-0.0784, 0.0899, 0.1328], [-0.0054, -0.21, 0.0984], [0.0958, 0.0819, 0.0953], [-0.1097, 0.088, -0.0714], [0.058, 0.0886, -0.2253], [-0.016, -0.1904, 0.0095], [0.0028, 0.0825, -0.224], [0.093, -0.1223, 0.0557], [-0.0606, 0.1329, 0.1262], [0.1422, -0.0268, 0.0711], [-0.0695, 0.0909, 0.1059], [-0.1912, -0.0933, -0.0277], [-0.1167, 0.1019, 0.0235], [-0.1386, 0.0915, 0.0343], [-0.1, 0.1311, -0.1676], [0.1827, -0.0014, 0.0756], [-0.1169, 0.2237, 0.0117], [0.1612, 0.153, 0.0112], [-0.1375, 0.0554, 0.0797], [0.1366, -0.0633, 0.1418], [0.0941, 0.0497, -0.1613], [0.1885, 0.0692, 0.0711], [-0.0437, 0.0752, -0.1639], [-0.0739, -0.1414, 0.1046], [-0.0062, -0.1918, -0.0796], [-0.1939, -0.0595, -0.1198], [-0.0032, 0.0429, -0.2468], [-0.0854, 0.2089, -0.0545], [-0.1628, 0.0861, -0.0572], [-0.1516, -0.0182, 0.0162], [-0.0942, -0.087, 0.0901], [0.079, 0.1545, 0.1622], [-0.0822, -0.1949, -0.0759], [0.0294, 0.1544, -0.0573], [0.152, 0.1059, 0.1429], [-0.1593, -0.0325, 0.1044], [0.1316, -0.1401, 0.0807], [0.0044, -0.1291, -0.1353], [-0.0067, -0.1824, 0.0144], [-0.192, -0.0863, 0.0004], [0.0944, 0.1857, -0.1303], [-0.2045, -0.1053, 0.0803], [0.0567, 0.127, -0.1401], [-0.1998, 0.0447, 0.0527], [0.0817, 0.0973, 0.0996], [-0.1221, 0.055, -0.0883], [-0.0466, -0.2114, 0.0049], [-0.2393, -0.0371, -0.0047], [-0.1298, -0.0516, 0.1203], [-0.1639, 0.1537, -0.0258], [-0.2139, 0.0216, 0.0874], [-0.027, 0.1841, -0.1649], [0.1856, 0.159, -0.052], [-0.037, -0.2346, -0.018], [0.2159, -0.019, -0.0004], [0.0371, -0.1464, -0.0967], [-0.0053, 0.1726, -0.1309], [0.1175, -0.1764, 0.0577], [-0.1005, -0.1466, -0.0692], [0.1821, -0.0216, 0.0182], [-0.1884, -0.0013, 0.1638], [0.1938, 0.117, 0.0458], [-0.1007, -0.1523, 0.0999], [0.0447, -0.1311, 0.0986], [-0.0732, -0.0049, -0.24], [-0.0454, -0.1512, 0.061], [-0.1096, 0.1865, -0.0702], [-0.0539, 0.078, -0.1285], [0.1406, 0.0646, 0.1625], [-0.1551, 0.1201, -0.0338], [0.0773, -0.0541, 0.1501], [0.0282, -0.1945, -0.0097], [-0.1203, -0.0685, 0.0836], [0.1504, 0.0574, 0.1368], [0.0231, 0.0948, -0.1459], [-0.091, -0.1638, -0.0625], [-0.1544, 0.0171, 0.0569], [-0.1046, 0.0756, 0.1003], [0.0165, -0.1437, 0.0712], [-0.0985, 0.138, 0.0393], [0.1164, -0.0709, 0.1535], [-0.0836, 0.0989, 0.0911], [0.1589, -0.079, 0.1355], [-0.0632, -0.2111, 0.0355], [0.0686, -0.0105, -0.2346], [0.1661, 0.0227, 0.0143], [-0.2433, -0.0583, -0.0109], [0.0964, 0.0906, 0.2089], [0.0578, -0.1025, 0.1154], [-0.1388, -0.0742, 0.153], [-0.0192, -0.1388, 0.0633], [-0.0784, 0.115, -0.0768], [0.0658, 0.0204, -0.1424], [-0.226, 0.1068, -0.0027], [-0.0597, -0.0116, -0.1768], [-0.0155, -0.1627, 0.0604], [-0.1652, 0.0134, 0.134], [0.1494, 0.1178, 0.1071], [-0.1484, 0.1546, -0.0589], [0.0211, 0.0538, -0.1618], [0.1016, 0.1139, -0.0352], [-0.1933, 0.046, 0.0334], [0.1377, -0.0037, 0.1703], [0.0211, -0.1618, 0.0866], [0.17, 0.0978, 0.045], [-0.0641, -0.1568, 0.0273], [-0.1866, 0.0096, 0.1116], [-0.0796, 0.1876, -0.016], [0.0479, 0.0621, -0.1437], [0.0688, -0.0368, 0.1346], [-0.0193, -0.2377, 0.0039], [-0.039, 0.1581, 0.0977], [0.0581, -0.0893, -0.1222], [-0.1827, -0.1741, -0.0376], [0.1238, -0.0534, 0.1082], [0.1858, 0.1092, 0.0723], [-0.2116, 0.0398, -0.0399], [0.046, -0.1066, 0.1096], [-0.0581, 0.166, 0.0858], [0.0945, 0.0494, 0.1303], [-0.1378, -0.0933, 0.0777], [0.0736, 0.1228, 0.1334], [0.0419, 0.06, -0.1786], [-0.0655, 0.0155, 0.1578], [0.0939, 0.1005, 0.1042], [0.161, -0.1123, 0.1508], [-0.0196, 0.1576, 0.036], [-0.0502, -0.0476, -0.2202], [-0.1801, -0.0818, 0.0082], [0.1223, -0.1373, 0.0786], [0.0703, 0.1718, 0.0279], [0.1118, 0.0965, 0.0946], [0.0168, -0.1408, -0.1159], [-0.1719, -0.1708, 0.0573], [0.125, -0.0476, 0.078], [0.086, -0.1647, -0.1215], [-0.087, -0.1167, -0.0686], [-0.1722, 0.1175, -0.0786], [0.0054, -0.1416, -0.1427], [-0.2208, -0.0173, -0.0799], [-0.0732, 0.2127, 0.0493], [0.0622, 0.0495, 0.2078], [-0.1544, 0.0963, -0.0228], [-0.08, 0.1698, 0.0888], [-0.046, -0.0405, -0.2003], [0.0466, 0.194, 0.0737], [0.1292, -0.0079, 0.1578], [0.0687, -0.1597, 0.0026], [-0.184, -0.1535, -0.0052], [0.121, -0.0836, 0.0938], [0.0127, 0.1832, 0.014], [-0.1756, 0.1604, 0.0247], [-0.065, -0.1135, -0.1697], [-0.2211, -0.0069, -0.0262], [-0.059, 0.1959, 0.1099], [-0.1309, -0.117, 0.0208], [0.043, 0.2107, -0.1188], [-0.0605, -0.0988, -0.1105], [0.1089, -0.1277, 0.1918], [0.0648, -0.1336, -0.0815], [-0.1333, -0.0449, -0.0644], [0.1232, -0.1602, 0.1157], [-0.1519, 0.1209, 0.1239], [0.0818, 0.0005, 0.1818], [-0.1664, 0.034, 0.014], [-0.0002, -0.1318, -0.1796], [-0.0978, 0.0965, 0.0771], [0.0807, 0.1924, -0.0368], [0.1552, -0.0539, -0.0151], [0.049, -0.2248, -0.0957], [-0.0042, 0.1371, -0.11], [-0.0827, 0.2211, -0.0706], [-0.0842, -0.0554, -0.1758], [-0.2529, -0.0242, -0.0129], [-0.0678, 0.08, 0.1254], [0.0989, -0.01, 0.1313], [0.0138, -0.0659, -0.2421], [-0.1503, 0.099, 0.0105], [0.0222, 0.1551, -0.1022], [-0.0285, -0.134, -0.117], [-0.0842, -0.0566, 0.1891], [0.1037, 0.0888, 0.1236], [-0.0976, -0.1515, 0.0714], [0.0145, -0.0355, -0.1489], [0.0358, 0.1749, 0.0161], [-0.1213, -0.0389, 0.1482], [0.1111, -0.2176, -0.0446], [-0.0787, -0.1296, 0.0444], [0.1435, -0.0299, 0.0693], [-0.1098, 0.1547, 0.0703], [0.0488, 0.2085, -0.1002], [0.1928, -0.0781, 0.0994], [-0.0444, 0.1346, -0.0637], [-0.1427, -0.0647, 0.1321], [0.0376, -0.1354, -0.1233], [-0.196, -0.1218, -0.094], [0.1906, -0.1319, 0.0894], [-0.1381, 0.045, 0.1205], [0.1211, -0.1906, 0.0236], [0.1295, -0.0578, 0.1304], [-0.1939, 0.0311, 0.1239], [-0.0146, 0.1565, 0.0026], [-0.1193, -0.1678, -0.0086], [-0.2108, -0.0984, 0.0766], [0.1539, -0.1389, 0.0296], [0.031, -0.1162, -0.1716], [-0.1156, -0.1598, 0.0189], [0.1891, -0.0456, 0.1326], [0.0068, 0.2171, -0.0347], [-0.07, -0.0567, -0.1302], [-0.2039, -0.0739, 0.0802], [0.1234, -0.1188, 0.0809], [-0.0034, -0.1985, -0.156], [0.0577, 0.1708, -0.0857], [0.2123, 0.0323, 0.0333], [0.2333, 0.0754, -0.0077], [-0.1353, 0.1272, -0.0343], [-0.1175, 0.0615, 0.0909], [0.0592, 0.0144, -0.2426], [-0.0918, 0.1492, 0.0499], [0.082, -0.0413, 0.1455], [-0.1003, -0.1933, 0.0597], [-0.0497, 0.1674, 0.0449], [0.1229, 0.042, 0.0829], [-0.122, 0.0856, 0.0443], [-0.053, 0.0472, 0.2305], [0.1643, 0.1644, 0.0604], [0.2036, -0.0862, -0.0999], [0.0145, 0.2196, -0.0432], [0.1518, 0.0419, -0.0039], [-0.0628, -0.0125, 0.1914], [0.0978, -0.165, -0.0386], [0.116, 0.1051, 0.1093], [-0.0545, -0.1122, 0.0949], [-0.0327, 0.1941, -0.0205], [-0.0572, -0.1933, -0.0157], [0.0249, 0.1166, -0.1723], [0.091, -0.2028, 0.0701], [0.1967, -0.1535, -0.0351], [0.0346, 0.1099, -0.1105], [-0.0283, 0.1499, -0.0421], [-0.0457, -0.118, -0.119], [0.1679, 0.0366, 0.0258], [-0.1392, 0.1341, 0.159], [0.1227, -0.0621, 0.0707], [0.0682, -0.1583, -0.1635], [0.0991, 0.1677, -0.051], [0.1353, 0.0394, 0.1441], [0.0887, -0.2268, 0.0036], [0.0902, 0.1275, -0.0784], [0.0836, 0.1745, 0.0789], [0.0298, -0.1409, 0.0991], [-0.0228, -0.0714, -0.2137], [0.0148, -0.0701, 0.1464], [-0.0993, -0.1311, 0.0385], [-0.1321, 0.0213, 0.1057], [0.1819, -0.0547, 0.0824], [-0.0936, 0.1159, 0.0732], [-0.0656, 0.1395, -0.1505], [0.1583, 0.1917, 0.023], [-0.0718, -0.1213, -0.0838], [0.0262, 0.1322, -0.0763], [-0.0323, 0.1636, 0.0015], [0.1337, -0.131, -0.0212], [-0.0746, -0.1303, -0.1843], [0.0415, 0.0319, -0.2048], [0.0031, -0.2103, -0.0837], [0.0074, -0.069, -0.1535], [0.0826, -0.1847, 0.0138], [-0.1118, 0.0989, 0.122], [0.1363, -0.1151, 0.1044], [-0.0758, -0.2209, -0.0015], [0.1568, 0.0034, 0.0223], [0.2212, -0.0071, 0.0909], [-0.0798, 0.18, 0.0646], [0.2106, 0.0251, 0.0583], [-0.0875, 0.1442, 0.1089], [-0.0095, 0.1852, -0.1372], [0.1494, -0.1225, 0.0847], [-0.0258, -0.2083, -0.1155], [-0.0959, -0.0757, 0.1361], [-0.0806, 0.1082, 0.1178], [0.1884, -0.0636, 0.0457], [-0.005, -0.1872, 0.0878], [0.0044, 0.004, -0.2055], [0.1843, -0.1089, 0.0432], [-0.0527, 0.0582, -0.1806], [-0.103, -0.1568, 0.0993], [0.207, -0.0047, 0.1094], [0.0086, 0.0489, -0.2217], [0.0972, -0.1489, 0.0426], [-0.0623, -0.2092, -0.1006], [-0.0933, -0.1061, 0.0797], [0.1581, 0.0344, 0.0387], [0.1549, -0.1667, 0.0814], [-0.0549, -0.2066, -0.0792], [-0.1502, 0.0973, 0.0975], [-0.1498, -0.031, 0.0288], [0.117, -0.1775, 0.1171], [-0.0801, 0.126, 0.1803], [-0.1299, -0.0241, 0.1249], [0.0879, -0.2182, -0.0257], [0.019, 0.1411, -0.186], [-0.16, 0.0981, 0.1202], [0.1249, -0.1166, 0.118], [-0.0608, -0.1795, -0.0065], [-0.1004, -0.0343, 0.1575], [0.1487, -0.0148, 0.0362], [-0.0583, 0.1929, 0.0792], [-0.013, 0.1128, -0.1517], [0.1522, 0.1123, 0.0151], [-0.1257, 0.0695, 0.1615], [0.1213, -0.0648, 0.0838], [0.0599, 0.2249, 0.0141], [-0.0877, -0.0675, -0.1807], [-0.1547, 0.0134, -0.0013], [-0.1953, -0.1237, 0.0053], [0.0924, -0.0552, 0.185], [0.1042, 0.1584, -0.0048], [-0.2376, 0.0221, -0.0228], [0.0741, 0.0016, 0.1844], [-0.0596, 0.1124, 0.163], [-0.1748, -0.0641, -0.1161], [0.0335, -0.1148, 0.1617], [-0.0194, -0.0398, -0.232], [0.0241, -0.2025, -0.1049], [0.0506, -0.198, -0.0852], [-0.1357, -0.084, 0.0725], [0.1639, -0.0415, 0.146], [0.0679, -0.1641, -0.05], [0.1086, 0.1595, -0.1647], [0.1662, 0.1211, 0.1399], [-0.1721, 0.0532, 0.0792], [-0.07, -0.1942, -0.045], [-0.242, 0.0182, 0.0259], [0.0862, -0.0188, 0.2137], [0.0641, -0.2199, 0.0158], [-0.171, -0.0864, 0.156], [-0.123, 0.1445, 0.1046], [-0.0227, 0.2055, -0.0569], [-0.0247, -0.1217, -0.1493], [-0.2521, -0.0276, -0.0056], [-0.0503, 0.1161, -0.1309], [-0.1315, -0.0759, 0.0323], [-0.1694, 0.0994, 0.0387], [-0.1989, -0.1122, 0.0956], [0.1205, 0.0625, 0.1075], [0.0062, 0.0887, -0.1447], [0.1197, 0.1635, 0.1131], [-0.1745, 0.052, -0.0121], [-0.0318, 0.0708, -0.218], [0.045, 0.1066, -0.1509], [-0.0434, 0.1502, 0.0057], [0.0106, 0.0473, 0.2465], [-0.0788, -0.1201, 0.082], [-0.0196, -0.1819, -0.137], [-0.1523, -0.109, 0.0341], [0.0824, 0.0834, 0.1193], [-0.1606, 0.0229, -0.0247], [0.0512, -0.1334, 0.1157], [0.023, -0.2114, -0.0928], [-0.14, -0.0795, 0.0101], [-0.0796, 0.1423, 0.0224], [0.1443, 0.1623, -0.1167], [0.1268, 0.0726, 0.1365], [-0.1741, -0.0419, 0.068], [0.1025, 0.0242, 0.2091], [-0.236, 0.0293, -0.0609], [-0.0273, 0.0635, -0.1539], [0.0001, -0.1898, -0.0103], [-0.1491, -0.0503, 0.0551], [0.1361, 0.0151, 0.1648], [0.1014, 0.1289, -0.1854], [0.1295, 0.1333, 0.0964], [-0.2299, 0.0832, 0.0573], [0.0695, -0.0622, 0.2012], [-0.1601, 0.0237, -0.1389], [-0.1119, 0.0722, 0.0876], [0.0711, 0.1373, 0.137], [0.0556, -0.1448, 0.0039], [0.0872, -0.1247, 0.1393], [-0.0689, 0.146, 0.0777], [-0.1504, 0.0788, -0.0061], [0.0242, -0.1049, -0.1419], [0.0363, -0.1852, -0.0333], [-0.127, -0.0987, -0.006], [0.0753, 0.0255, 0.1644], [0.0477, 0.1207, -0.0842], [0.0421, -0.1722, -0.0322], [0.0793, 0.0529, 0.1463], [-0.131, 0.086, -0.0018], [-0.0833, 0.1693, 0.0377], [-0.0081, -0.0099, -0.2101], [0.0511, 0.2095, -0.0681], [-0.0267, 0.1225, 0.1116], [-0.1358, -0.027, -0.0807], [0.0028, 0.0747, -0.1515], [-0.1378, -0.1037, 0.0007], [-0.1934, 0.146, -0.077], [0.0864, 0.13, -0.13], [-0.1585, -0.0338, -0.0353], [-0.0868, 0.2113, 0.0033], [0.1516, 0.1279, 0.0645], [0.1208, -0.1392, -0.0206], [0.0498, 0.1334, -0.0651], [-0.0376, 0.1828, 0.0402], [-0.0072, -0.0752, -0.235], [0.1115, -0.1557, 0.1012], [-0.1069, 0.116, 0.1235], [-0.1485, -0.1852, -0.0466], [-0.2024, 0.1028, 0.0412], [0.0271, 0.169, -0.0465], [-0.0045, 0.1112, 0.1264], [-0.2144, -0.0918, 0.0694], [-0.0026, 0.0143, -0.2313], [-0.2022, -0.1086, -0.0653], [0.0945, -0.1159, 0.0462], [-0.1542, -0.053, 0.1788], [0.137, -0.0921, 0.0318], [0.0859, 0.2114, -0.0247], [0.1893, 0.0188, 0.1131], [-0.1776, 0.1047, 0.1243], [0.1179, 0.0474, 0.1453], [-0.0151, 0.193, -0.086], [-0.1641, -0.072, 0.0279], [-0.0498, 0.1307, 0.0863], [0.0978, -0.1372, 0.0512], [0.0547, 0.1796, 0.116], [-0.0707, 0.0424, -0.1872], [-0.0457, 0.043, 0.1616], [-0.1761, -0.1604, -0.0694], [0.0809, -0.1132, -0.076], [-0.0454, 0.1782, -0.0177], [-0.0934, 0.0935, 0.0777], [-0.2428, -0.0062, 0.05], [0.0922, -0.1524, 0.0598], [0.015, -0.1144, -0.1173], [-0.1065, -0.1078, 0.0279], [0.1244, -0.0218, 0.1076], [-0.1796, 0.1082, 0.1318], [0.0021, 0.203, 0.1206], [0.2011, 0.1041, 0.0482], [-0.0816, -0.1415, 0.1454], [0.145, -0.0959, -0.1493], [-0.0967, -0.068, -0.2132], [-0.0734, -0.0142, 0.2272], [0.1299, 0.0294, 0.105], [-0.129, -0.0789, 0.1266], [0.0193, -0.1559, -0.1316], [0.1594, 0.0127, 0.0456], [-0.0432, 0.2032, -0.0564], [0.0974, 0.0859, 0.0901], [-0.1085, -0.0566, 0.1084], [0.0944, 0.2303, -0.003], [0.1751, 0.0174, 0.01], [-0.0686, 0.223, 0.0617], [0.1134, 0.0741, 0.117], [-0.128, -0.08, 0.0801], [0.2061, -0.0408, 0.1084], [-0.1276, 0.0147, 0.1554], [-0.0548, 0.18, -0.0056], [0.1096, 0.1488, 0.0032], [-0.2189, 0.0808, -0.0326], [-0.0573, 0.0054, -0.2328], [-0.0082, -0.1615, 0.0437], [-0.0515, 0.1394, -0.0901], [0.1577, 0.1643, 0.0543], [-0.0352, -0.16, -0.1027], [-0.0467, -0.1479, 0.0238], [0.1932, 0.0149, -0.0293], [-0.148, -0.179, 0.0956], [0.1432, 0.1101, 0.1416], [-0.1764, 0.0591, 0.0626], [0.0206, -0.2151, -0.0429], [-0.0954, -0.0061, 0.1433], [0.175, -0.118, 0.0268], [-0.0638, -0.1956, -0.0843], [0.0389, 0.0932, -0.1282], [-0.034, -0.0197, -0.2379], [-0.1429, 0.0366, 0.0713], [0.1261, 0.0166, 0.0979], [0.0743, 0.0019, -0.207], [0.1282, -0.1219, 0.1575], [-0.0128, -0.2216, 0.0042], [0.1909, 0.0186, 0.0974], [-0.1254, 0.1925, 0.0658], [0.0424, 0.1308, -0.1135], [0.1615, 0.0407, 0.0771], [-0.0255, 0.1248, -0.0992], [0.0933, -0.0954, -0.2086], [0.0501, -0.1765, 0.05], [-0.0392, 0.0346, -0.1863], [0.2077, 0.0688, -0.1042], [-0.0709, 0.151, 0.1132], [0.0993, -0.099, 0.0945], [0.1847, -0.0315, 0.0079], [-0.2064, 0.129, 0.0206], [0.1131, -0.0413, 0.1722], [-0.0386, -0.1472, 0.0852], [-0.1561, 0.0231, 0.1764], [0.2202, 0.0245, 0.0673], [0.0626, -0.1514, 0.0203], [0.0041, 0.0439, -0.1628], [0.1274, 0.0837, -0.0169], [0.1637, -0.0593, 0.175], [0.0559, -0.1275, 0.1392], [0.025, -0.0198, 0.2162], [-0.1605, 0.0872, -0.0134], [0.0557, 0.1696, -0.057], [-0.107, 0.0674, 0.1224], [0.0199, 0.1721, 0.0421], [0.1054, 0.0245, 0.126], [0.1217, -0.1118, 0.1274], [-0.0071, -0.1832, -0.1165], [-0.1004, -0.2084, -0.0265], [-0.203, 0.0682, 0.0568], [-0.2087, 0.0761, -0.0963], [0.0434, -0.1779, -0.0779], [0.0302, -0.1886, 0.0341], [-0.137, -0.0907, -0.1302], [-0.1401, 0.1254, 0.0108], [-0.0899, -0.1682, -0.015], [-0.1134, 0.0483, -0.0931], [0.0274, 0.1762, -0.1098], [0.0255, -0.0363, 0.1933], [-0.1411, 0.1264, -0.013], [0.0127, -0.1026, 0.1183], [0.0839, 0.1858, 0.0458], [-0.2034, -0.0056, -0.0307], [-0.0181, 0.1813, -0.1062], [0.0717, 0.125, 0.119], [-0.0506, 0.2102, 0.0584], [0.0763, -0.2184, 0.0022], [0.0248, -0.0764, -0.1409], [0.104, -0.1136, 0.1323], [-0.1484, 0.1473, 0.1031], [-0.1128, -0.1675, -0.0205], [0.0502, 0.0025, 0.1479], [-0.1485, 0.0719, 0.004], [0.0286, -0.1069, -0.1456], [-0.0678, -0.0882, -0.1413], [-0.1574, -0.1286, 0.0668], [-0.0565, 0.0606, 0.1904], [0.1789, -0.0294, -0.1178], [-0.0196, 0.1676, 0.0921], [0.0776, -0.1241, 0.0944], [0.1588, 0.133, -0.0626], [0.2161, -0.1139, 0.0116], [-0.0565, -0.1651, -0.035], [0.1882, -0.0332, -0.0098], [0.0839, -0.137, -0.0682], [0.1198, 0.1713, 0.0711], [-0.034, -0.1184, 0.1118], [0.1774, -0.0342, -0.0779], [-0.0205, -0.1128, -0.226], [0.1574, 0.0614, 0.019], [-0.0409, -0.0486, 0.1869], [-0.1401, -0.1685, 0.0971], [-0.1814, 0.0753, 0.1428], [-0.0316, -0.1921, 0.0192], [0.0646, 0.0254, -0.1558], [0.1764, -0.0057, 0.0251], [-0.067, 0.1906, 0.092], [-0.0063, 0.1224, -0.1327], [-0.0914, 0.1124, 0.1734], [0.1347, -0.183, 0.076], [0.1357, 0.1716, 0.0127], [-0.1202, -0.0231, 0.0952], [-0.0465, 0.191, 0.0153], [-0.1465, 0.145, 0.0239], [0.0429, -0.0995, -0.1555], [0.0549, 0.2033, -0.042], [-0.1561, -0.008, 0.173], [-0.1472, -0.0679, 0.1192], [0.1485, -0.0815, 0.0787], [-0.0725, -0.1423, -0.0764], [-0.1639, -0.029, 0.1443], [0.1591, -0.0462, 0.0857], [0.1738, -0.078, -0.0006], [-0.1303, 0.0654, 0.1757]], v: [[-0.1016, -0.0859, -0.0], [-0.0685, 0.0959, -0.0362], [-0.1301, 0.027, 0.0062], [-0.0433, 0.1377, -0.0257], [-0.1468, -0.03, 0.0514], [-0.0212, -0.1356, 0.0396], [0.1291, -0.0402, -0.1254], [-0.056, 0.0987, 0.0412], [-0.0982, -0.1063, 0.0821], [0.1391, -0.0083, -0.0946], [-0.085, 0.0994, 0.0493], [0.0104, -0.1712, 0.0042], [0.081, 0.1225, -0.0656], [0.0012, -0.0402, 0.1078], [0.1373, -0.0067, -0.017], [-0.0912, 0.0349, -0.0607], [0.0473, -0.1113, 0.1127], [0.0788, 0.1059, -0.124], [-0.1151, 0.0369, -0.0245], [0.1215, 0.1339, -0.0201], [0.0483, -0.1223, -0.0179], [0.0836, 0.0998, 0.0196], [0.1752, -0.0017, 0.0042], [0.0999, -0.1015, -0.0298], [0.1045, -0.0725, -0.0189], [0.0737, -0.0067, -0.1188], [-0.1131, 0.0896, 0.0606], [0.0042, -0.115, 0.1406], [-0.0027, 0.1207, -0.0954], [0.0912, -0.0389, -0.0673], [-0.1061, 0.1385, 0.0061], [0.1177, 0.131, -0.0239], [0.1399, 0.0286, 0.0462], [0.0918, -0.0671, 0.0812], [-0.1094, 0.1182, -0.1023], [-0.0345, -0.1466, 0.1099], [-0.0041, 0.1326, -0.1006], [-0.1031, 0.1189, 0.0706], [0.0741, 0.1257, -0.0661], [-0.0844, 0.0712, 0.0593], [0.0726, 0.1326, -0.0309], [-0.1221, 0.0712, 0.0808], [-0.0506, -0.1542, 0.0188], [-0.0304, -0.0388, 0.1166], [0.0958, -0.0021, -0.0715], [0.162, -0.0592, 0.007], [0.0266, 0.0829, -0.1689], [0.1029, 0.0084, -0.0908], [-0.1145, 0.0562, 0.0139], [-0.0808, 0.1263, -0.0767], [-0.0275, -0.0769, 0.0906], [0.1391, 0.0179, -0.1151], [0.072, -0.1518, 0.0525], [0.1133, -0.0456, -0.0445], [-0.0554, -0.1221, 0.0117], [0.1482, -0.1195, 0.019], [0.1662, 0.083, -0.0212], [0.112, -0.0559, -0.0019], [0.043, -0.1781, 0.0223], [0.0839, 0.1216, -0.0331], [-0.0409, 0.1569, -0.0183], [-0.0673, -0.1373, 0.034], [-0.132, -0.0579, 0.0292], [0.0494, -0.1714, 0.0465], [-0.0389, 0.1081, -0.0122], [-0.0278, -0.1161, 0.0895], [0.1037, 0.0333, -0.1251], [0.116, -0.0824, -0.085], [0.0599, -0.163, -0.0053], [0.0332, 0.1209, -0.0594], [0.0803, 0.0374, -0.0732], [-0.0994, 0.0522, 0.0672], [-0.1209, -0.0706, 0.0701], [-0.1555, -0.0065, -0.0225], [-0.0746, 0.0483, -0.0744], [-0.0145, -0.1038, 0.1359], [0.1407, 0.0672, -0.097], [0.1696, -0.026, -0.0], [0.0156, 0.1005, -0.1163], [-0.1328, 0.0303, 0.0179], [-0.119, 0.1055, -0.0703], [0.0899, 0.068, -0.1027], [0.1587, -0.054, -0.0193], [0.0446, 0.1681, -0.0561], [-0.1157, 0.1129, 0.0366], [0.0093, 0.1325, -0.0155], [0.0916, 0.0792, -0.0724], [-0.047, 0.1076, 0.0607], [0.031, 0.1799, -0.0175], [-0.0957, -0.0744, 0.002], [-0.1214, 0.0092, -0.0087], [0.0005, -0.1274, 0.0138], [0.0336, -0.0632, 0.1458], [0.1055, -0.0517, -0.0583], [-0.0914, 0.079, -0.0307], [-0.0413, 0.0994, -0.1393], [-0.0723, -0.0316, 0.1688], [0.1154, -0.0588, -0.0847], [0.0151, -0.1044, 0.086], [0.0873, -0.042, -0.0748], [-0.068, 0.0968, 0.0085], [-0.0586, -0.0757, 0.1397], [0.0794, -0.0197, -0.0843], [-0.1773, 0.033, -0.0583], [0.0724, -0.0768, 0.061], [-0.1392, -0.1015, 0.0502], [-0.1551, 0.0115, -0.009], [-0.1147, 0.125, -0.0546], [-0.0124, -0.1413, 0.0557], [0.141, 0.1146, -0.0456], [0.1685, -0.0071, -0.0025], [-0.0137, 0.1459, -0.0563], [0.1614, -0.0205, -0.0495], [-0.0229, 0.1388, -0.1203], [-0.079, -0.0596, 0.0949], [0.0881, 0.0633, -0.0972], [-0.1203, 0.1459, -0.0], [-0.0144, 0.1421, -0.0719], [-0.1461, 0.0931, -0.0282], [-0.0033, -0.0695, -0.1324], [0.1032, 0.0073, 0.1334], [0.0978, -0.0501, 0.0335], [0.0058, 0.1001, 0.0982], [-0.1076, -0.049, -0.1218], [-0.1247, 0.0435, -0.0542], [0.1238, -0.1336, -0.0313], [0.0119, -0.1479, -0.0161], [0.0964, 0.1246, 0.0211], [0.183, 0.0279, 0.0154], [0.1264, 0.0911, 0.0088], [0.1669, 0.0039, 0.0092], [0.0003, -0.1567, 0.046], [-0.0358, -0.1339, -0.0603], [0.0544, -0.0653, 0.1507], [0.0192, -0.1624, 0.0749], [-0.0376, -0.16, -0.0378], [-0.0869, -0.081, -0.1148], [-0.0829, -0.0912, -0.0748], [-0.0854, 0.0069, -0.0888], [-0.1295, 0.0586, -0.0102], [-0.1013, 0.1178, 0.091], [-0.0161, -0.1024, -0.1459], [0.0825, 0.0215, 0.0801], [0.1062, -0.0415, 0.0236], [0.0675, -0.0933, -0.0421], [0.0229, 0.0969, 0.0867], [-0.1196, 0.0749, -0.0382], [-0.0424, 0.1287, 0.0244], [-0.0994, -0.025, -0.0697], [0.1353, -0.074, 0.0551], [0.1251, -0.0928, 0.0983], [0.0134, -0.1161, 0.0477], [0.0842, 0.1376, -0.0037], [-0.1128, -0.0416, -0.0399], [-0.041, 0.1183, -0.0434], [-0.0428, -0.1075, 0.0087], [0.0776, -0.1276, 0.0295], [0.0356, 0.1828, -0.0141], [-0.1062, -0.0808, -0.0091], [-0.1841, 0.0165, -0.0364], [0.0853, -0.0898, -0.0195], [-0.0584, -0.05, -0.1081], [-0.1144, 0.0526, -0.1031], [0.0703, -0.1263, 0.0198], [0.0852, -0.1313, 0.0429], [0.0759, -0.114, -0.0237], [0.0176, 0.1357, 0.0246], [-0.0917, -0.0778, -0.0112], [-0.0154, -0.1473, -0.0297], [0.1022, 0.0749, 0.0171], [0.0343, 0.148, 0.0387], [-0.1406, 0.0319, -0.005], [-0.0916, 0.1292, 0.0249], [0.1793, -0.0017, 0.0138], [-0.0064, -0.1401, -0.0549], [-0.0073, 0.1544, 0.035], [-0.0438, -0.0747, -0.0849], [-0.0776, 0.0074, -0.1002], [0.1012, -0.1325, 0.0881], [0.0455, 0.0913, 0.061], [-0.1124, -0.0234, -0.1023], [0.1027, -0.0808, 0.0703], [-0.0498, -0.1475, -0.0655], [-0.1143, -0.0531, -0.1056], [-0.1353, 0.0753, -0.1071], [-0.1734, 0.042, -0.041], [0.0719, 0.0406, 0.1107], [-0.1346, 0.0218, -0.0532], [-0.0844, -0.0612, -0.1399], [0.0216, -0.127, -0.0976], [-0.118, 0.0326, -0.0811], [0.0851, -0.0864, 0.0041], [-0.0345, 0.1118, 0.0684], [-0.0604, -0.101, -0.1487], [-0.1085, -0.0006, -0.0707], [0.0453, -0.1134, -0.0437], [-0.0949, -0.0185, -0.0728], [-0.0475, 0.1151, 0.0279], [-0.0476, -0.1206, -0.0862], [-0.0939, -0.0209, -0.0703], [0.1469, -0.104, 0.0612], [0.041, -0.1413, -0.0151], [-0.1493, -0.0358, -0.1083], [0.139, -0.0945, 0.0712], [-0.0467, -0.1668, -0.074], [0.0521, 0.0277, 0.1691], [-0.0018, -0.0811, 0.1392], [-0.0485, -0.1259, 0.0474], [0.0823, 0.0383, 0.1527], [-0.0466, -0.1066, 0.0604], [-0.1307, -0.134, -0.0375], [0.0334, -0.0557, 0.1176], [0.037, 0.0889, -0.0657], [-0.0238, -0.101, 0.0974], [-0.1209, 0.0012, -0.1083], [-0.1198, 0.0933, -0.036], [-0.0537, 0.1318, 0.0483], [-0.0897, -0.0089, -0.0878], [0.0902, -0.0741, 0.042], [0.0534, -0.1697, -0.034], [-0.1141, -0.0154, -0.1128], [-0.0332, 0.1374, 0.0087], [-0.0487, -0.1218, -0.0793], [0.0961, -0.0686, 0.0715], [0.0484, -0.1224, 0.0081], [0.0212, 0.1412, 0.0681], [-0.1015, -0.0795, -0.0443], [-0.0161, 0.1087, -0.07], [-0.0939, -0.0773, 0.0287], [-0.0512, 0.1337, -0.0807], [-0.087, -0.1158, 0.1026], [0.1073, -0.0497, 0.009], [0.0742, -0.0478, 0.0767], [0.0172, -0.1299, 0.0687], [0.0788, 0.1509, -0.0049], [-0.0516, -0.1419, 0.0217], [0.0024, -0.0529, -0.1637], [0.034, -0.0717, 0.1669], [0.0255, -0.1197, -0.0436], [-0.0172, -0.0826, -0.1367], [-0.049, 0.0165, -0.1055], [0.0874, -0.1294, 0.0856], [0.0347, -0.1431, -0.0223], [-0.035, -0.1224, -0.1144], [-0.0817, -0.0143, -0.1278], [-0.0765, 0.0792, -0.0784], [0.0484, -0.1448, 0.0], [-0.0782, -0.1323, -0.0931], [0.0413, 0.0187, 0.1164], [-0.0065, 0.0629, -0.1045], [0.0405, -0.1686, 0.0533], [0.0822, -0.0447, 0.1409], [-0.0776, -0.0935, -0.1109], [0.0357, 0.1504, 0.0049], [-0.1078, -0.084, -0.0761], [-0.0459, 0.1431, -0.0827], [-0.1538, -0.0904, -0.0656], [0.1414, -0.0382, 0.106], [-0.1212, -0.128, -0.0493], [-0.0804, -0.0001, 0.1521], [0.0842, 0.0759, 0.055], [0.1305, 0.0516, -0.0345], [0.0041, 0.0646, 0.1058], [0.0171, 0.1379, -0.0767], [-0.1093, 0.0695, 0.1045], [-0.095, -0.0757, -0.0197], [-0.1155, -0.0009, 0.0133], [-0.0146, -0.1177, -0.0461], [0.1451, 0.0805, 0.0362], [0.1304, -0.0522, -0.007], [0.0551, -0.1665, -0.0571], [-0.1467, -0.0239, -0.048], [-0.1039, 0.0575, -0.0022], [-0.0785, 0.1619, 0.0494], [-0.0368, -0.006, 0.1474], [0.0144, 0.1093, 0.1492], [0.0549, 0.0865, -0.0563], [-0.1354, -0.0164, 0.1182], [0.0877, 0.1216, -0.0205], [-0.0295, -0.1488, 0.0755], [0.1116, 0.068, -0.0892], [0.0712, -0.1063, 0.0], [0.0204, 0.1368, -0.0546], [0.086, 0.0472, -0.0613], [-0.0449, 0.1377, 0.0132], [-0.0521, -0.115, 0.0373], [0.112, 0.0371, -0.0705], [-0.1081, 0.066, 0.0677], [0.0431, 0.1764, -0.0373], [-0.0198, -0.088, -0.0801], [0.0973, -0.0674, -0.0802], [-0.0035, 0.125, 0.113], [-0.1101, -0.1065, -0.0728], [0.1523, -0.0694, -0.087], [0.0306, -0.1062, -0.0939], [0.0572, 0.0821, 0.0571], [0.1113, 0.0372, 0.01], [0.0644, 0.0347, -0.1327], [0.0701, -0.0865, -0.1388], [0.0265, 0.1447, -0.0601], [-0.0294, 0.1355, 0.0596], [0.0352, 0.1539, -0.0351], [0.0355, 0.1762, -0.0126], [0.085, 0.1276, -0.0165], [0.116, 0.0149, -0.0286], [-0.0938, 0.084, 0.033], [-0.1256, -0.0113, 0.0364], [0.0192, -0.1226, -0.0224], [-0.0738, -0.0432, 0.0917], [0.0344, -0.0396, -0.184], [0.0431, 0.0936, 0.0958], [0.1098, 0.1335, 0.0072], [-0.1022, -0.0662, 0.092], [-0.055, 0.0247, 0.1265], [-0.0122, -0.0868, -0.0894], [0.0992, 0.0442, -0.0456], [-0.0801, 0.0338, 0.083], [-0.0187, 0.123, 0.0987], [-0.1065, -0.0511, 0.0278], [-0.1226, 0.0278, 0.0975], [0.0311, -0.0796, -0.0837], [0.0293, -0.1779, 0.0261], [0.0517, 0.1328, -0.1236], [-0.0678, 0.0758, 0.065], [-0.052, -0.1188, 0.0745], [-0.0775, 0.0747, 0.0671], [0.0703, 0.1196, -0.0484], [0.1713, 0.0518, -0.021], [0.0358, -0.117, -0.0709], [0.0667, 0.1186, 0.0444], [0.1653, 0.0616, -0.0035], [-0.0393, 0.0987, 0.0474], [0.1322, 0.0554, 0.007], [0.1547, -0.05, -0.0351], [0.0583, -0.1058, -0.0468], [0.0348, 0.1247, 0.045], [-0.1517, -0.1019, -0.0218], [0.0181, -0.0574, -0.1459], [0.007, 0.1123, 0.0571], [-0.0428, -0.1635, 0.0439], [0.0467, 0.0586, -0.1012], [-0.0004, -0.1025, -0.0663], [-0.0802, 0.0232, 0.0947], [0.0233, -0.0857, -0.0789], [-0.0053, 0.1175, 0.0161], [-0.0768, -0.1232, 0.0371], [-0.0912, 0.0649, 0.0629], [0.0189, -0.1163, -0.0262], [0.0987, 0.1528, -0.0272], [-0.0932, 0.0972, 0.0659], [0.0267, 0.1828, 0.048], [0.1555, 0.1068, -0.0107], [-0.0567, -0.1522, -0.0538], [0.1668, -0.0158, -0.0494], [-0.1184, 0.1196, 0.0806], [0.0933, 0.1055, -0.0615], [-0.1124, -0.0081, 0.1314], [0.0446, -0.0862, -0.099], [0.0427, 0.1708, 0.0548], [-0.0463, 0.0928, 0.1057], [-0.0545, -0.1301, -0.0602], [0.134, -0.0113, -0.094], [0.0514, -0.093, -0.1096], [0.0428, 0.1115, 0.0667], [-0.0243, 0.1181, -0.1139], [-0.06, -0.1717, 0.0266], [-0.1037, -0.078, -0.0596], [0.1201, -0.0417, 0.1191], [0.103, 0.125, -0.035], [-0.1713, -0.003, 0.0236], [0.131, -0.0828, -0.0222], [0.1668, -0.0469, -0.031], [0.0814, -0.1466, -0.0457], [-0.1037, -0.0846, -0.004], [0.1494, 0.0347, 0.0822], [0.0154, 0.081, -0.0851], [-0.0826, -0.0797, 0.0287], [-0.1716, -0.0416, -0.0605], [0.1415, -0.0109, 0.0209], [-0.1779, -0.0184, -0.009], [0.0684, 0.0804, 0.0624], [-0.1356, -0.016, -0.0482], [0.0139, 0.1189, 0.0171], [-0.0957, -0.0671, -0.0052], [0.0623, -0.1412, 0.0457], [-0.0703, -0.0648, -0.0684], [-0.049, -0.0983, 0.0641], [-0.1592, -0.0548, 0.0522], [0.0326, 0.1228, -0.0766], [-0.1548, -0.0845, 0.0693], [-0.1063, 0.1161, -0.0557], [-0.0058, -0.108, 0.065], [0.1093, 0.088, -0.0661], [-0.1102, 0.0862, -0.0377], [-0.0204, 0.1372, -0.0793], [-0.1352, -0.0182, 0.0277], [0.0726, 0.0465, 0.1142], [0.0503, -0.0579, 0.1356], [-0.0048, -0.1549, 0.0848], [-0.0746, -0.1701, -0.0286], [-0.1058, -0.0738, -0.117], [-0.0676, -0.1279, 0.0], [0.0178, -0.0998, 0.0546], [0.0911, -0.027, 0.0692], [-0.0572, 0.1352, -0.1009], [0.149, -0.0737, 0.0278], [-0.1229, 0.025, 0.0043], [-0.1189, 0.1245, 0.0342], [0.0037, -0.1398, -0.0379], [0.1057, 0.1128, 0.0235], [0.1402, 0.0061, -0.0012], [0.1368, -0.0058, -0.0107], [0.0553, -0.1226, 0.0826], [-0.1519, 0.0041, -0.1042], [0.0993, -0.1244, 0.0898], [-0.14, 0.0107, -0.047], [-0.0206, -0.1495, 0.0486], [0.002, 0.0857, -0.0855], [-0.0635, -0.0988, 0.0263], [0.1004, -0.0192, 0.1262], [0.016, -0.1204, 0.1351], [0.0981, -0.044, 0.0869], [-0.1119, -0.1079, 0.068], [0.039, -0.1157, 0.1241], [-0.1667, 0.0408, 0.0728], [-0.1211, 0.1429, 0.0046], [0.1591, -0.019, -0.0789], [0.0137, 0.1566, -0.0414], [0.0975, 0.067, -0.064], [-0.136, 0.0511, 0.0729], [0.1328, 0.0645, -0.0732], [0.1161, -0.0469, -0.0692], [0.0174, 0.1366, -0.0119], [0.1217, -0.0269, 0.1398], [0.0033, 0.0583, -0.1631], [0.12, -0.0145, 0.0987], [0.123, 0.027, -0.0199], [-0.1741, -0.0469, 0.0541], [0.1187, -0.0193, 0.0406], [-0.1434, -0.0568, 0.0729], [-0.0853, -0.0828, -0.0145], [-0.0014, 0.1568, -0.0611], [-0.0909, -0.1184, -0.0036], [0.0871, 0.1, -0.0089], [0.1402, 0.0182, 0.0424], [0.0803, -0.0698, 0.0583], [0.0059, 0.1436, -0.0667], [-0.1285, -0.0098, -0.0267], [0.1038, -0.0828, 0.0658], [0.0085, -0.1103, 0.0561], [0.0267, -0.0805, 0.0885], [0.1008, -0.02, -0.0637], [-0.0379, -0.0585, 0.1104], [0.1215, -0.0048, -0.0944], [-0.0156, -0.0866, 0.0797], [0.1171, 0.0465, -0.1102], [0.1503, -0.0535, -0.0507], [-0.1162, 0.1362, -0.04], [-0.0063, 0.0969, -0.0806], [0.0124, -0.083, 0.168], [0.0928, 0.1272, -0.098], [0.099, 0.0726, 0.0149], [0.113, 0.0285, 0.1163], [0.0929, 0.0173, 0.0661], [-0.1031, -0.0555, 0.0221], [-0.1076, -0.0026, -0.0501], [-0.0543, -0.1114, 0.1407], [-0.1198, -0.0579, 0.0443], [0.1254, 0.0017, 0.0368], [0.0901, -0.0609, 0.1172], [0.0187, 0.0959, -0.1315], [-0.1206, -0.0873, 0.075], [-0.1276, -0.0025, -0.0175], [-0.0783, 0.047, -0.0739], [-0.0012, -0.0919, 0.1199], [0.1113, 0.0826, -0.0882], [0.1374, 0.0179, -0.0], [-0.0254, 0.0962, -0.1134], [0.1136, -0.0383, 0.0467], [0.0551, -0.1148, 0.1021], [-0.1391, -0.0564, 0.0312], [-0.1166, 0.0272, -0.0271], [0.096, 0.0573, -0.0333], [0.1769, -0.014, 0.0227], [-0.1109, 0.0255, -0.0856], [0.1023, -0.0193, 0.0628], [0.1297, -0.1397, 0.0166], [-0.011, 0.1104, 0.0671], [-0.0938, 0.0831, 0.1155], [-0.0288, -0.1615, -0.0082], [0.0786, 0.079, 0.0438], [-0.1336, -0.0164, -0.0586], [-0.0548, 0.1137, -0.0034], [0.0828, -0.0354, 0.1043], [-0.0128, 0.111, -0.0951], [-0.1135, -0.0738, -0.0514], [-0.1153, 0.0267, -0.0505], [-0.1071, 0.0635, 0.0352], [-0.0535, 0.1104, 0.1393], [-0.1102, -0.0017, -0.0526], [0.1496, -0.0857, -0.0156], [0.0506, -0.1187, -0.0734], [0.0545, 0.1027, 0.0947], [-0.13, 0.0539, -0.0042], [-0.0951, 0.088, 0.0227], [0.1368, 0.01, 0.0077], [0.1267, -0.1353, -0.0229], [0.0255, 0.1102, 0.0263], [0.1535, 0.053, 0.0368], [0.0517, -0.0813, 0.0728], [-0.0437, -0.1289, -0.0969], [0.072, -0.0927, 0.0947], [0.0053, -0.175, 0.0232], [-0.1272, -0.0169, -0.1156], [0.0, 0.1623, -0.0387], [-0.0663, -0.1149, -0.0363], [-0.1387, -0.0324, -0.0629], [0.1507, -0.035, -0.0275], [-0.1554, 0.0354, 0.0051], [-0.0874, 0.0997, 0.0765], [0.1033, 0.0455, 0.0653], [0.1086, -0.1279, -0.0646], [0.0091, 0.103, 0.0801], [-0.1349, 0.0115, -0.0271], [-0.1096, -0.1054, -0.0951], [0.0993, -0.1192, 0.0417], [0.0079, -0.1652, -0.0234], [-0.1541, -0.0009, -0.0812], [0.0882, -0.0925, 0.0351], [-0.173, -0.0005, -0.0634], [0.0816, -0.083, 0.0295], [0.1078, 0.1526, 0.0404], [0.1151, 0.0278, 0.0459], [0.0524, -0.0942, -0.0428], [0.0276, 0.1145, 0.129], [-0.1199, -0.0261, -0.1215], [-0.069, 0.1291, 0.0307], [-0.027, -0.1032, -0.0703], [0.1417, -0.0715, 0.0523], [-0.0916, -0.0454, -0.0592], [-0.14, 0.0476, -0.0583], [0.0342, 0.1105, -0.0439], [0.1364, 0.0741, -0.104], [-0.1089, 0.0445, 0.0596], [-0.1622, -0.0347, 0.0813], [0.1059, -0.1077, -0.0168], [0.0206, -0.1633, -0.0964], [-0.11, -0.0097, -0.0532], [-0.0641, 0.0901, 0.0552], [0.1826, -0.0412, 0.0216], [-0.0736, -0.108, -0.035], [-0.1215, -0.0256, -0.0653], [0.099, -0.0715, 0.0578], [-0.0611, -0.133, -0.067], [-0.1036, -0.0061, 0.0912], [0.043, -0.0809, -0.1129], [0.1005, 0.0565, -0.0037], [-0.1148, 0.0173, 0.0677], [-0.0592, -0.1095, -0.0773], [0.1666, 0.0817, 0.0167], [0.0581, -0.0633, -0.0817], [0.0258, 0.1188, -0.0021], [-0.1244, -0.0868, -0.0035], [-0.1732, 0.0377, -0.006], [0.0655, 0.1599, -0.0015], [-0.1116, -0.0305, 0.0133], [0.0472, -0.1449, -0.0199], [0.1259, 0.0568, -0.024], [0.1154, -0.1143, -0.0924], [0.0076, 0.1118, 0.1488], [-0.0965, -0.0398, -0.0957], [0.1027, 0.0789, 0.1106], [-0.0284, 0.1169, 0.0801], [-0.0863, -0.1052, -0.1087], [-0.109, -0.0094, -0.0439], [0.1152, -0.0785, -0.0667], [0.0368, -0.1529, -0.095], [0.0892, 0.1125, 0.0637], [0.1553, 0.0178, 0.0159], [0.1154, -0.0874, -0.0332], [-0.012, 0.1607, 0.0724], [-0.1628, 0.0009, -0.0262], [0.0913, -0.074, -0.0168], [0.0318, -0.1578, -0.0646], [0.0675, 0.1102, 0.059], [0.1701, 0.0496, -0.0669], [-0.1152, 0.071, 0.0641], [-0.0304, 0.1536, 0.0451], [-0.0343, 0.0903, -0.1566], [-0.074, -0.049, 0.1103], [0.0321, -0.0728, 0.0907], [-0.1527, 0.1045, -0.0311], [-0.0584, -0.07, 0.1018], [0.1127, 0.0025, -0.0628], [0.1509, -0.0766, 0.0057], [-0.1298, -0.034, -0.017], [-0.0238, 0.1111, -0.0211], [-0.0651, -0.0965, 0.0073], [-0.087, -0.1581, 0.0123], [-0.1011, 0.0493, 0.1407], [0.0758, 0.165, 0.0122], [-0.1097, 0.0315, 0.1236], [-0.0229, 0.0898, 0.0733], [-0.0594, -0.1363, -0.0284], [0.1138, 0.0788, -0.0486], [-0.1052, 0.0165, 0.0957], [0.0345, -0.0818, -0.077], [-0.1157, -0.0097, 0.0925], [0.0996, -0.0203, -0.1125], [-0.0759, 0.1188, 0.0694], [0.1145, 0.0058, -0.1319], [0.0947, 0.1405, -0.0836], [-0.0605, 0.0821, 0.0627], [-0.0976, 0.0005, 0.0675], [0.1048, 0.031, -0.071], [-0.0305, 0.1249, 0.0213], [-0.1254, -0.1395, 0.0079], [0.0375, 0.1061, 0.0282], [0.1707, 0.0351, 0.0372], [-0.13, 0.0768, -0.0], [-0.0677, 0.1323, 0.0275], [0.0467, 0.0155, -0.1759], [-0.0253, 0.0799, 0.1008], [-0.0572, -0.0365, 0.1413], [0.0414, -0.0656, -0.1057], [0.0607, 0.1484, -0.0561], [0.012, -0.1093, -0.0535], [0.1024, -0.0729, 0.0158], [0.0314, -0.1079, 0.061], [0.0719, 0.1053, -0.0887], [-0.0637, -0.0889, 0.0594], [-0.1511, -0.0103, 0.0563], [-0.1448, 0.1182, 0.0107], [0.0744, 0.0219, -0.0955], [-0.0423, 0.0602, 0.0899], [-0.0978, -0.02, 0.0753], [0.0981, 0.1014, -0.0076], [0.1572, 0.0241, -0.0806], [-0.0576, 0.1473, 0.0113], [0.0852, 0.0554, -0.136], [0.0453, 0.1083, -0.0465], [0.0944, 0.0336, -0.1145], [-0.0288, -0.1218, 0.0723], [0.1148, 0.0566, -0.0874], [0.1565, -0.0533, -0.058], [0.0051, 0.1064, -0.0526], [0.0218, 0.1736, -0.0395], [-0.1359, -0.0702, 0.0278], [-0.0138, 0.1631, -0.0206], [-0.1085, -0.0964, 0.0404], [-0.1635, 0.028, 0.0492], [0.1107, 0.1034, -0.0458], [0.1716, 0.008, -0.0527], [0.1021, -0.0888, 0.0226], [0.0427, -0.0779, 0.1008], [0.0457, 0.0332, -0.1423], [0.1126, -0.0477, -0.0954], [-0.1026, 0.1151, -0.0], [0.076, 0.0809, -0.1204], [-0.142, -0.0033, 0.0404], [0.139, -0.0601, 0.0492], [0.0724, 0.0886, -0.1332], [-0.1412, 0.0941, 0.0153], [0.116, 0.072, -0.0132], [0.1738, -0.0377, -0.0292], [0.0826, -0.0872, -0.0194], [-0.0285, 0.1212, 0.0085], [0.139, 0.1005, -0.0587], [0.1576, -0.0173, -0.0642], [-0.1031, -0.0859, -0.0731], [0.0143, -0.108, -0.0418], [0.0997, 0.124, 0.0884], [-0.1633, -0.0139, -0.0629], [0.0606, -0.1151, 0.0409], [0.1466, 0.0677, -0.0736], [-0.1664, 0.0517, 0.0223], [-0.032, -0.1454, 0.076], [0.1244, 0.0631, -0.0693], [0.1322, -0.0437, -0.0289], [0.0734, -0.1203, 0.0206], [0.0219, 0.1026, -0.048], [-0.1255, -0.0693, 0.0762], [-0.1313, 0.0377, 0.0392], [-0.0837, 0.1147, -0.0089], [-0.0066, -0.1506, 0.0597], [0.0782, 0.0715, -0.058], [-0.1537, 0.0453, -0.07], [0.0918, -0.1297, 0.0039], [-0.0091, -0.1085, -0.0414], [0.0926, -0.1453, 0.02], [0.0062, 0.1545, 0.043], [-0.0739, 0.0452, -0.1129], [-0.0238, -0.1163, 0.135], [0.113, 0.0856, -0.0461], [-0.0888, 0.0871, -0.0926], [0.0567, -0.1545, 0.0], [0.0228, 0.1238, 0.0831], [0.0596, -0.1652, 0.0234], [0.1696, 0.0058, 0.0278], [0.1614, 0.0308, 0.0242], [0.077, -0.1039, 0.0237], [0.0568, 0.1564, -0.0193], [0.1285, 0.0507, 0.008], [-0.171, 0.0709, -0.0441], [-0.0761, 0.1627, -0.0504], [-0.0332, -0.1419, 0.0232], [0.0968, -0.0604, 0.11], [-0.0002, -0.1506, 0.104], [0.1102, 0.1297, -0.0331], [0.158, 0.0495, 0.0473], [0.1334, -0.0509, 0.1181], [-0.1228, -0.0308, -0.1019], [-0.1247, -0.0396, -0.0934], [0.1109, -0.0813, 0.0479], [0.0209, -0.1889, -0.0083], [-0.0882, -0.0925, -0.0481], [0.0618, -0.0901, 0.0402], [-0.08, -0.1193, -0.0437], [0.1092, -0.093, 0.1179], [0.0064, 0.1089, -0.0705], [-0.1118, 0.0541, 0.0283], [-0.0629, 0.1209, -0.1082], [-0.0396, -0.1211, 0.05], [-0.1368, -0.1059, -0.0145], [-0.0457, -0.1035, -0.0868], [-0.0431, -0.0083, -0.1088], [0.0217, 0.1836, -0.0361], [0.076, 0.0162, 0.0967], [0.0682, -0.0993, 0.122], [0.0682, -0.0609, 0.1097], [-0.0573, 0.1061, -0.0346], [-0.0156, -0.1215, -0.0111], [0.093, 0.0847, 0.0565], [0.1491, -0.022, 0.087], [0.0587, -0.0982, 0.0392], [-0.1052, -0.0531, -0.0367], [-0.149, 0.0753, -0.0795], [-0.0244, 0.1388, -0.0512], [0.0509, -0.1226, 0.0548], [0.053, 0.1613, -0.0447], [-0.0376, -0.1681, 0.0649], [-0.093, -0.0839, -0.0181], [0.1234, -0.0038, 0.0714], [0.0554, -0.0877, 0.0699], [0.0493, 0.1432, -0.0538], [-0.1694, 0.0436, -0.0624], [-0.0683, 0.1202, -0.0744], [-0.0438, -0.1692, 0.0702], [0.1273, 0.1065, -0.011], [0.0597, -0.1187, -0.0891], [-0.0585, 0.0303, -0.0997], [-0.1095, 0.1005, -0.0439], [0.0655, 0.0276, 0.0921], [-0.0297, 0.1034, 0.1112], [-0.0957, 0.005, -0.0942], [-0.0482, -0.0972, -0.0669], [0.0852, -0.0752, 0.0701], [0.1057, 0.0032, 0.0973], [0.0586, -0.0795, 0.0694], [0.0061, 0.1348, -0.0237], [-0.0923, -0.0118, -0.0692], [0.1164, 0.016, 0.0668], [-0.0041, 0.1238, -0.0425], [-0.0642, -0.0981, -0.0088], [-0.0643, -0.0029, -0.1292], [0.0288, -0.1551, 0.0062], [-0.0756, -0.03, -0.1489], [-0.0539, 0.07, -0.0897], [0.0102, -0.1177, 0.0222], [-0.0465, -0.1054, -0.0528], [0.0537, -0.0706, 0.0941], [-0.0972, -0.1558, -0.0515], [-0.1014, -0.0393, -0.1067], [0.0119, -0.1116, 0.0537], [-0.1381, -0.058, 0.0832], [-0.1017, 0.0734, 0.0935], [0.105, 0.0912, 0.0], [-0.0717, 0.061, 0.0702], [-0.1126, -0.0037, -0.0884], [0.1577, -0.0937, 0.0251], [0.0424, 0.1057, 0.1158], [-0.1172, -0.0082, -0.0937], [0.1325, -0.1167, 0.0417], [-0.0795, -0.1165, -0.1002], [-0.105, -0.0056, -0.0814], [-0.1187, -0.0345, 0.0261], [-0.0225, -0.0727, -0.1659], [0.1541, -0.0802, -0.0067], [0.0924, -0.1046, -0.1121], [0.0134, 0.0524, 0.1042], [-0.0718, -0.1324, -0.1012], [0.0616, 0.104, 0.0359], [-0.1569, 0.0665, 0.0239], [-0.0443, 0.1524, 0.0488], [-0.1138, -0.1296, -0.0534], [-0.0678, 0.1272, 0.0134], [-0.1384, -0.0405, -0.0666], [0.0539, -0.1248, -0.005], [-0.0811, 0.0276, -0.0886], [0.0036, 0.0484, 0.1228], [-0.1458, 0.0687, -0.0377], [0.094, -0.1057, -0.0595], [-0.1181, 0.0341, -0.0425], [0.1309, -0.1247, -0.0441], [0.0983, 0.0302, 0.0597], [-0.1129, -0.0359, -0.0718], [-0.091, -0.0501, -0.0491], [-0.0107, -0.1708, -0.0728], [0.1001, 0.0823, 0.0554], [0.1206, -0.0092, 0.0244], [0.0812, -0.082, -0.0067], [-0.0048, 0.1206, 0.0301], [-0.1192, -0.1317, -0.0543], [-0.1212, -0.065, 0.1116], [-0.0543, 0.0298, 0.1623], [-0.0348, -0.1047, -0.1214], [0.1123, 0.1272, 0.0274], [0.1447, 0.0691, -0.0877], [-0.1279, -0.116, -0.0486], [-0.081, 0.0434, 0.088], [0.0488, -0.1353, -0.0346], [0.1408, 0.049, -0.0374], [-0.0186, 0.1192, 0.0317], [-0.1565, -0.0248, 0.0307], [-0.092, 0.0642, 0.0384], [0.0248, -0.1148, -0.0351], [-0.1291, 0.0545, 0.1234], [-0.0147, 0.0972, 0.0883], [-0.1678, -0.0603, 0.0312], [-0.1039, 0.0459, 0.0716], [0.0167, -0.1022, -0.0754], [-0.0197, 0.1492, 0.0937], [-0.0854, -0.1096, -0.0597], [-0.1349, -0.0413, -0.0068], [-0.0437, 0.0349, -0.1269], [-0.059, -0.109, 0.126], [-0.1555, -0.0827, 0.0364], [0.1161, 0.0069, 0.0473], [-0.1219, -0.0173, 0.0429], [-0.1291, 0.1174, 0.0197], [0.1419, -0.0145, -0.026], [0.0903, -0.0389, -0.0647], [-0.021, 0.1247, -0.0751], [0.1458, -0.0682, 0.0979], [-0.0427, 0.1498, -0.0732], [-0.025, -0.1338, 0.056], [0.1631, 0.0109, 0.0239], [0.025, -0.1263, 0.0113], [0.088, 0.1156, -0.0659], [0.1401, -0.0069, -0.0901], [-0.0671, 0.0914, 0.0461], [-0.1681, -0.0602, 0.029], [0.0355, -0.0594, 0.1015], [0.06, 0.0576, -0.087], [-0.137, 0.078, -0.0485], [0.1412, 0.1014, -0.0365], [0.1656, -0.0093, 0.015], [0.0119, 0.1521, -0.0525], [-0.1434, -0.1034, 0.0291], [-0.1275, 0.0404, -0.0011], [-0.0275, 0.1342, -0.0132], [-0.1195, -0.0152, 0.0115], [-0.0976, 0.1225, -0.0997], [0.085, -0.0082, -0.1142], [-0.1156, 0.0786, 0.0389], [-0.0818, 0.1488, -0.0648], [-0.0326, -0.0981, 0.1104], [0.0906, 0.0063, -0.0885], [0.0219, 0.106, -0.0898], [-0.0481, -0.1001, 0.1457], [0.1319, 0.0369, -0.0778], [0.1274, -0.0281, 0.0092], [0.1013, -0.1031, 0.1031], [0.0285, 0.1082, -0.1328], [0.0988, 0.0318, -0.0676], [-0.1196, 0.0403, 0.0079], [-0.0616, 0.0838, -0.049], [0.1378, 0.0584, -0.1091], [0.1177, 0.084, 0.0297], [-0.0233, 0.1613, 0.0174], [-0.0477, -0.1002, -0.0809], [-0.0809, -0.0118, -0.1143], [-0.1029, -0.06, -0.0569], [-0.1326, 0.0162, -0.0035], [-0.0769, 0.0857, 0.0477], [0.0274, 0.1278, 0.086], [0.0683, -0.0813, 0.1236], [0.1223, -0.0719, 0.1018], [-0.0127, -0.1268, 0.1067], [-0.0514, -0.1724, -0.0247], [0.0885, -0.0294, 0.1165], [0.0218, 0.029, 0.1409], [0.0683, -0.1394, 0.0253], [-0.0548, -0.0509, -0.1199], [0.0746, -0.0498, 0.112], [-0.0135, -0.108, -0.0397], [-0.0597, -0.07, -0.1273], [0.0101, 0.1461, 0.0261], [-0.0687, -0.086, -0.0903], [0.0132, 0.0891, 0.0759], [-0.0988, 0.0693, -0.1], [0.0137, -0.1391, -0.0655], [-0.0714, -0.0766, -0.1186], [-0.0575, 0.1039, -0.0744], [-0.1382, -0.0068, -0.0952], [0.117, 0.0421, 0.1209], [0.1059, -0.0427, 0.0418], [0.0163, 0.121, 0.091], [-0.1226, -0.0411, -0.1178], [0.1118, -0.0828, 0.0618], [-0.0256, 0.1141, 0.0067], [-0.0485, -0.0969, -0.0599], [0.1015, -0.0637, 0.0667], [0.1242, -0.014, -0.0508], [0.0591, -0.119, -0.0899], [-0.1413, -0.0614, -0.0224], [-0.0194, 0.1468, -0.0662], [-0.0458, -0.0699, 0.1175], [0.0812, -0.0247, -0.0993], [-0.0857, 0.1272, 0.053], [0.0686, 0.1177, -0.1228], [0.1091, -0.0216, -0.0738], [0.0244, 0.1411, -0.0092], [0.075, 0.0809, -0.0704], [-0.0928, 0.0081, 0.1369], [0.0309, -0.0876, -0.0833], [0.0381, 0.1403, 0.0251], [0.128, 0.1208, -0.0719], [-0.0433, 0.0848, 0.0848], [-0.0284, -0.139, -0.0424], [0.1457, -0.0946, 0.0462], [0.039, -0.1321, 0.1191], [0.1353, -0.0272, -0.0499], [-0.0728, 0.1044, -0.0132], [0.0126, 0.1177, -0.062], [-0.1029, -0.0845, 0.1], [-0.1052, 0.0602, 0.0606], [-0.0397, -0.147, 0.0744], [0.1296, 0.0476, -0.115], [-0.1141, 0.084, 0.0834], [-0.0291, -0.0953, -0.0599], [-0.1411, -0.0318, -0.0308], [-0.1013, -0.0897, -0.0769], [0.1288, 0.06, -0.0029], [-0.1456, 0.0492, 0.048], [-0.0545, -0.1563, -0.0564], [0.0765, -0.1284, 0.0213], [0.0759, 0.1154, -0.0238], [0.1208, -0.0526, -0.0167], [0.0222, -0.1635, -0.0077], [0.0432, 0.1327, -0.0086], [0.0571, 0.1269, 0.0324], [-0.1126, -0.1234, -0.0376]]} diff --git a/src/platform/kpi_rover_worlds/assets/models/apple_3/apple_3_wood.bin b/src/platform/kpi_rover_worlds/assets/models/apple_3/apple_3_wood.bin new file mode 100644 index 0000000..aaa381b Binary files /dev/null and b/src/platform/kpi_rover_worlds/assets/models/apple_3/apple_3_wood.bin differ diff --git a/src/platform/kpi_rover_worlds/assets/models/apple_3/apple_3_wood.gltf b/src/platform/kpi_rover_worlds/assets/models/apple_3/apple_3_wood.gltf new file mode 100644 index 0000000..52058de --- /dev/null +++ b/src/platform/kpi_rover_worlds/assets/models/apple_3/apple_3_wood.gltf @@ -0,0 +1 @@ +{"asset": {"version": "2.0", "generator": "kpi_rover garden"}, "scene": 0, "scenes": [{"nodes": [0]}], "nodes": [{"mesh": 0, "name": "mesh"}], "meshes": [{"name": "mesh", "primitives": [{"attributes": {"POSITION": 0, "NORMAL": 1, "TEXCOORD_0": 2}, "indices": 3}]}], "accessors": [{"bufferView": 0, "componentType": 5126, "count": 18480, "type": "VEC3", "min": [-2.20934796333313, -1.541462779045105, 0.0], "max": [1.6854727268218994, 2.1477699279785156, 3.7474958896636963]}, {"bufferView": 1, "componentType": 5126, "count": 18480, "type": "VEC3"}, {"bufferView": 2, "componentType": 5126, "count": 18480, "type": "VEC2"}, {"bufferView": 3, "componentType": 5125, "count": 18480, "type": "SCALAR"}], "bufferViews": [{"buffer": 0, "byteOffset": 0, "byteLength": 221760, "target": 34962}, {"buffer": 0, "byteOffset": 221760, "byteLength": 221760, "target": 34962}, {"buffer": 0, "byteOffset": 443520, "byteLength": 147840, "target": 34962}, {"buffer": 0, "byteOffset": 591360, "byteLength": 73920, "target": 34963}], "buffers": [{"uri": "apple_3_wood.bin", "byteLength": 665280}]} \ No newline at end of file diff --git a/src/platform/kpi_rover_worlds/assets/models/apple_4/apple_4_leaves.yaml b/src/platform/kpi_rover_worlds/assets/models/apple_4/apple_4_leaves.yaml new file mode 100644 index 0000000..49937e9 --- /dev/null +++ b/src/platform/kpi_rover_worlds/assets/models/apple_4/apple_4_leaves.yaml @@ -0,0 +1,2 @@ +# Leaf cards of apple_4, written by tools/assets/convert_trees.py: centers and half-axes, real m. +{centers: [[0.1222, 0.349, 1.5455], [0.0867, 0.2538, 1.8273], [-0.0139, 0.4686, 1.8622], [0.077, 0.4245, 2.1241], [0.1971, 0.3607, 1.5592], [0.4148, 0.268, 1.6642], [0.5378, 0.4769, 1.8009], [0.7651, 0.4501, 1.7787], [0.6761, 0.3694, 1.9887], [0.8783, 0.3155, 1.9107], [0.8648, 0.5222, 2.0534], [0.2114, 0.6241, 1.4508], [0.175, 0.9378, 1.9221], [0.4243, 0.9235, 2.0047], [0.4597, 1.1722, 2.0758], [0.3477, 0.5707, 2.0028], [0.2761, 0.6203, 2.2584], [0.2953, 0.3571, 2.5765], [0.4598, 0.8069, 1.9454], [0.8688, 0.8044, 1.9428], [0.8326, 0.8208, 2.1632], [0.9089, 0.9679, 2.0457], [0.3954, 0.7965, 1.8939], [0.28, 0.6694, 2.0256], [0.3986, 0.9367, 2.1406], [0.1607, 0.9149, 2.2156], [0.4467, 1.0463, 2.4235], [0.3528, 1.1963, 2.4751], [0.4414, 0.619, 2.177], [0.7503, 0.6186, 2.49], [0.5816, 0.589, 2.6413], [0.5501, 0.7577, 2.7669], [0.7285, 0.8163, 2.895], [0.5879, 0.6441, 2.9355], [0.4561, 0.9792, 2.057], [0.5536, 0.9894, 2.2343], [0.3097, 1.0616, 2.19], [0.4645, 0.9902, 2.43], [0.5026, 1.1881, 2.2401], [0.3245, 1.1141, 2.3897], [0.5325, 1.1593, 2.4664], [0.3626, 1.1985, 2.6152], [0.4883, 1.303, 2.6962], [0.3654, 0.8354, 2.3362], [0.3657, 0.9955, 2.436], [0.5192, 0.9642, 2.5387], [0.2832, 0.9327, 2.5815], [0.4979, 0.7736, 2.6789], [0.4561, 1.0039, 2.68], [0.3707, 1.0208, 2.8091], [0.341, 0.8433, 2.8928], [0.4825, 0.9872, 2.9357], [0.5992, 1.1405, 2.3965], [0.4647, 1.1563, 2.5892], [0.6787, 1.0748, 2.5373], [0.5779, 1.3112, 2.4767], [0.5801, 1.1264, 2.723], [0.7349, 1.2064, 2.5454], [0.5723, 1.3225, 2.6653], [0.7269, 1.1535, 2.728], [0.4415, 1.1802, 2.7265], [0.2861, 1.2595, 2.6366], [0.5019, 1.2991, 2.742], [0.5154, 1.415, 2.735], [0.4848, 1.5256, 2.7431], [0.5207, 1.4572, 2.9073], [0.3847, 1.6319, 2.8045], [0.6558, 1.2117, 2.6637], [0.5251, 1.1682, 2.7953], [0.649, 1.3421, 2.7245], [0.4246, 1.3433, 2.8645], [0.6152, 1.4446, 2.8428], [0.7682, 1.3915, 3.0261], [0.5139, 1.3874, 3.1435], [0.6861, 1.4364, 3.1265], [0.4218, 1.297, 2.7259], [0.473, 1.429, 2.6879], [0.4725, 1.2691, 2.9015], [0.4292, 1.4378, 2.8112], [0.4577, 1.4431, 2.9521], [0.5356, 1.6414, 2.9216], [0.5383, 1.431, 3.0661], [0.5264, 1.583, 3.0437], [0.6778, 1.4336, 3.1278], [0.5378, 1.5459, 3.2223], [0.3841, 0.9006, 2.2504], [0.4425, 1.1102, 2.2198], [0.4718, 0.9289, 2.4476], [0.6123, 1.0852, 2.3485], [0.6033, 0.9981, 2.5569], [0.5854, 1.2038, 2.4868], [0.6865, 1.1196, 2.6357], [0.7874, 0.8089, 2.0748], [0.8504, 0.6262, 2.1689], [0.886, 0.8623, 2.2268], [0.9791, 0.7337, 2.6014], [1.1546, 0.5673, 2.4834], [1.2578, 0.6508, 2.5904], [1.2252, 0.5471, 2.7253], [0.7697, 0.9238, 2.3141], [0.6734, 1.0675, 2.2512], [0.8708, 1.0214, 2.2503], [0.7625, 1.2011, 2.1128], [0.7777, 1.1141, 2.3684], [0.9609, 1.1631, 2.2098], [0.9177, 1.4598, 2.5673], [1.0744, 1.3382, 2.6086], [1.0634, 1.5078, 2.5271], [0.7095, 0.9834, 2.3721], [0.8526, 1.1578, 2.3446], [0.833, 0.8918, 2.4692], [0.9952, 1.0302, 2.3707], [0.8051, 1.1121, 2.5221], [1.064, 0.9454, 2.596], [1.0115, 1.1417, 2.6698], [1.1444, 0.9866, 2.7027], [0.9894, 1.0973, 2.8072], [1.0166, 0.8604, 2.8246], [1.1626, 1.0605, 2.832], [0.947, 1.0056, 2.9661], [1.1484, 0.9127, 2.8885], [1.0463, 1.1728, 2.1612], [1.0486, 1.146, 2.4007], [1.1118, 1.2995, 2.2784], [1.2058, 1.0842, 2.4529], [1.3463, 1.0838, 2.3849], [1.3529, 1.3343, 2.314], [1.3034, 1.2048, 2.5672], [1.4779, 1.181, 2.378], [1.4228, 1.1613, 2.5557], [1.5571, 1.3153, 2.453], [1.5621, 1.4066, 2.5944], [1.5367, 1.2431, 2.7222], [0.9175, 1.2718, 2.4405], [1.0469, 1.3, 2.5167], [1.277, 1.4815, 2.5501], [1.0733, 1.6137, 2.5201], [1.1375, 1.4708, 2.6913], [1.1917, 1.7604, 2.6228], [1.3068, 1.6711, 2.7235], [1.1305, 1.4068, 2.371], [1.2135, 1.2594, 2.4969], [1.2678, 1.4763, 2.4161], [1.4594, 1.5131, 2.5311], [1.309, 1.5068, 2.7248], [1.3807, 1.4203, 2.7923], [1.5691, 1.448, 2.6771], [-0.2487, -0.1518, 1.566], [-0.4679, -0.1504, 1.4048], [-0.4448, -0.3666, 1.4999], [-0.6091, -0.2602, 1.691], [-0.7308, -0.5086, 1.8535], [-0.9589, -0.3364, 1.8968], [-1.031, -0.6343, 1.9206], [-0.2204, -0.2763, 1.6909], [-0.1927, -0.0264, 1.843], [-0.3093, -0.2259, 1.9373], [-0.0667, -0.2353, 2.0014], [0.0012, -0.2117, 2.3817], [-0.1987, -0.2375, 2.515], [-0.1614, -0.4189, 2.8478], [-0.7146, -0.2779, 1.9708], [-0.7099, -0.2859, 2.2593], [-0.9558, -0.3164, 2.145], [-0.8938, -0.4252, 2.2695], [-0.8621, -0.3556, 2.5435], [-0.4614, -0.5312, 2.1223], [-0.2538, -0.4373, 2.1873], [-0.2958, -0.6778, 2.2126], [-0.1954, -0.7074, 2.4226], [-0.3413, -0.8377, 2.5329], [-0.3717, -1.0037, 2.8483], [-0.6244, -0.3666, 2.3502], [-0.4295, -0.4962, 2.4262], [-0.6158, -0.4682, 2.5454], [-0.5581, -0.2622, 2.6221], [-0.536, -0.4722, 2.7139], [-0.5494, -0.2798, 2.8166], [-0.5227, -0.4857, 2.9178], [-0.4002, -0.2559, 3.0952], [-0.6809, -0.5423, 2.6103], [-0.5929, -0.6741, 2.7377], [-0.6591, -0.8223, 2.6438], [-0.7481, -0.6799, 2.8088], [-0.8774, -0.7542, 2.8473], [-0.7923, -0.824, 2.9707], [-1.0097, -0.852, 2.9261], [-0.993, -0.9766, 3.0263], [-0.8634, -0.9586, 3.2036], [-0.5802, -0.8519, 2.8576], [-0.6908, -0.7583, 2.9991], [-0.4883, -0.821, 2.9804], [-0.6643, -0.9146, 3.106], [-0.4024, -0.8152, 3.168], [-0.5512, -0.9308, 3.1869], [-0.6916, -0.9083, 3.3412], [-0.4545, -0.9684, 3.3207], [-0.5602, -0.8315, 3.4423], [-0.9486, -0.8591, 2.9588], [-0.9537, -0.6676, 3.107], [-1.0006, -0.9106, 3.1377], [-1.0806, -0.6914, 3.1709], [-0.9774, -0.642, 3.3531], [-1.1738, -0.7559, 3.2929], [-1.0157, -0.8364, 3.1534], [-0.79, -0.9216, 3.2443], [-0.9695, -0.7096, 3.3338], [-0.9498, -0.988, 3.0918], [-0.7359, -1.0263, 3.2163], [-0.9702, -0.8764, 3.2692], [-0.9127, -1.1189, 3.1731], [-0.8689, -1.1691, 3.3297], [-0.8736, -1.1479, 3.5114], [-0.9385, -1.0634, 3.6131], [-1.1767, -1.0271, 3.5403], [-1.0581, -1.0069, 3.6829], [-0.2257, -0.0958, 1.7341], [-0.465, -0.0918, 1.7947], [-0.5444, -0.2137, 2.1139], [-0.3548, -0.2847, 2.2755], [-0.5827, -0.2933, 2.4568], [-0.3798, -0.2324, 2.6295], [-0.5481, -0.3716, 2.8228], [-1.0536, 0.3816, 2.1803], [-1.04, 0.5658, 2.1682], [-0.9041, 0.6121, 2.3457], [-0.9594, -0.1251, 2.0494], [-0.8768, -0.3654, 1.9687], [-0.8637, -0.2554, 2.2027], [-1.0522, -0.3172, 2.0973], [-1.0476, -0.2972, 2.3523], [-1.1434, -0.5271, 2.266], [-0.9648, -0.474, 2.4791], [-1.1171, -0.5831, 2.4838], [-1.3073, -0.5589, 2.5976], [-0.8684, 0.1287, 2.2394], [-1.0007, 0.2071, 2.3641], [-1.0515, 0.0333, 2.5059], [-0.8683, 0.1817, 2.5504], [-0.9853, 0.1005, 2.6856], [-0.9699, 0.2877, 2.6363], [-1.1543, 0.2017, 2.7501], [-1.087, 0.391, 2.7771], [-1.0786, 0.2188, 2.9342], [-1.1206, 0.1858, 2.2195], [-1.2989, -0.0152, 2.221], [-1.3402, 0.2251, 2.2368], [-1.2365, 0.4016, 2.5805], [-1.4347, 0.1425, 2.5444], [-1.4278, 0.3454, 2.5288], [-1.503, 0.2839, 2.7113], [-1.274, 0.1804, 2.5238], [-1.2426, 0.0431, 2.6135], [-1.3209, 0.134, 2.7703], [-1.5576, 0.0315, 2.6517], [-1.417, 0.0219, 2.9434], [-1.587, 0.2355, 2.6765], [-1.4163, 0.4077, 2.7203], [-1.5199, 0.5443, 2.6882], [-1.5223, 0.479, 2.9204], [-1.7104, 0.4458, 2.9259], [-1.5823, 0.603, 2.8916], [-1.8229, 0.6048, 2.858], [-1.6588, 0.5423, 3.0142], [-1.6837, 0.6991, 2.9157], [-1.8431, 0.5857, 3.0353], [-1.6271, 0.7129, 3.1265], [-1.7366, 0.4535, 2.7723], [-1.9355, 0.2667, 3.0138], [-1.808, 0.4718, 2.9874], [-1.918, 0.419, 3.1329], [-1.7713, 0.4054, 2.9582], [-2.0123, 0.1967, 3.0533], [-2.066, 0.3625, 3.1205], [-1.4137, 0.0247, 2.5573], [-1.212, 0.067, 2.7306], [-1.2756, -0.0983, 2.8199], [-1.4389, -0.0723, 2.9056], [-1.4622, 0.0904, 2.9802], [-1.4069, -0.218, 2.3803], [-1.4468, -0.0154, 2.2512], [-1.5259, -0.232, 2.2248], [-1.5079, -0.0912, 2.4213], [-1.6161, 0.0358, 2.4], [-1.7881, -0.1217, 2.2443], [-1.6977, -0.1102, 2.5123], [-1.7639, 0.0985, 2.3616], [-1.7302, 0.0328, 2.5761], [-1.698, -0.2123, 2.4698], [-1.6785, -0.3938, 2.3476], [-1.6731, -0.4686, 2.4803], [-1.7172, -0.3243, 2.6157], [-1.8513, -0.4297, 2.4967], [-1.8407, -0.3375, 2.6497], [-1.8697, -0.5157, 2.6014], [-1.7729, -0.4352, 2.798], [-1.9072, -0.3736, 2.848], [-1.9175, -0.1721, 2.3952], [-2.0174, -0.2777, 2.3531], [-1.9825, -0.2319, 2.5374], [-2.0109, -0.2549, 2.745], [-2.0961, -0.4125, 2.7278], [-2.1399, -0.1926, 2.7355], [0.5292, -0.2375, 1.7028], [0.768, -0.1765, 1.5359], [0.7961, -0.1529, 1.846], [0.9067, -0.3641, 1.7931], [1.0556, -0.3627, 2.0557], [0.3379, -0.3373, 1.8377], [0.4995, -0.1285, 2.2451], [0.5535, -0.1129, 2.6447], [0.3941, -0.2691, 2.7152], [0.4715, -0.1543, 2.9594], [0.4823, -0.4161, 3.0638], [0.352, -0.5618, 1.9276], [0.5101, -0.6999, 2.0427], [0.3676, -1.0573, 1.9721], [0.3526, -1.2047, 2.3519], [0.3959, -1.436, 2.3493], [0.617, -0.7127, 2.0787], [0.9902, -0.5566, 2.0085], [0.8893, -0.7116, 2.2644], [1.2229, -0.7891, 2.1943], [1.2043, -0.9569, 2.3128], [1.3892, -0.7972, 2.3886], [1.2182, -0.949, 2.5536], [0.6134, -0.8049, 2.1829], [0.8766, -0.8331, 2.2529], [0.7001, -0.9066, 2.371], [0.858, -0.7453, 2.4724], [0.6285, -0.7726, 2.5384], [0.8155, -0.7599, 2.6972], [0.6259, -0.8222, 2.747], [0.7535, -0.771, 2.9241], [0.7871, -0.9588, 3.0688], [0.6296, -0.7649, 3.1176], [0.6004, -0.9865, 3.1419], [0.7438, -0.8597, 3.2733], [0.4816, -0.8702, 3.325], [1.0787, -1.2331, 2.2415], [1.1341, -1.3625, 2.4153], [0.9639, -1.4698, 2.4662], [1.0005, -1.6584, 2.4759], [1.1219, -1.8307, 2.5065], [1.2231, -1.7247, 2.7112], [1.0257, -1.8802, 2.7151], [1.1169, -1.023, 2.3372], [0.9726, -1.0898, 2.5202], [1.2755, -1.1189, 2.454], [1.2939, -1.0607, 2.6122], [1.3253, -1.0464, 2.7995], [1.4968, -1.1107, 2.9109], [1.1842, -1.2921, 2.5827], [1.1829, -1.4452, 2.5069], [0.9902, -1.4939, 2.7488], [0.9639, -1.6516, 2.7619], [1.1998, -1.7416, 2.8008], [1.185, -1.7381, 2.9981], [1.0699, -1.9109, 2.9462], [1.1065, -1.8943, 3.1085], [0.9458, -1.805, 3.2022], [1.3525, -1.5055, 2.4263], [1.4997, -1.4358, 2.4953], [1.4862, -1.6526, 2.4791], [1.5694, -1.4751, 2.6612], [1.474, -1.7048, 2.6908], [1.7738, -1.626, 2.6893], [1.7236, -1.8247, 2.6535], [1.7463, -1.6919, 2.8367], [1.6251, -1.8763, 2.8213], [1.7552, -1.9298, 2.8068], [1.5416, -1.7846, 2.5337], [1.4507, -1.7879, 2.8601], [1.5823, -1.8415, 2.9662], [1.7067, -2.0547, 2.8977], [1.654, -2.0014, 3.1633], [1.7274, -2.2107, 3.0423], [0.4694, -0.2092, 1.7684], [0.3662, -0.3765, 1.8419], [0.5402, -0.3414, 2.0313], [0.5212, -0.5668, 1.9435], [0.7328, -0.503, 2.0228], [0.7694, -0.5766, 2.3109], [0.5709, -0.0517, 1.8635], [0.6516, 0.0619, 2.1248], [0.7669, -0.2403, 2.2126], [0.5417, -0.2623, 2.2725], [0.717, -0.4436, 2.2677], [0.7064, -0.2157, 2.4364], [0.5526, -0.3927, 2.4054], [0.7658, -0.4561, 2.503], [0.5425, -0.476, 2.5916], [0.7475, -0.435, 2.7275], [0.9299, -0.329, 2.2696], [1.0779, -0.2268, 2.3536], [1.041, -0.198, 2.5611], [1.2826, -0.1491, 2.5306], [1.1537, -0.3214, 2.7377], [1.341, -0.3798, 2.5726], [1.3396, -0.1971, 2.7705], [1.2872, -0.445, 2.7764], [1.4714, -0.3333, 2.7185], [1.3825, -0.3383, 2.9083], [1.0907, -0.2583, 2.5578], [0.9018, -0.1212, 2.6482], [1.0395, -0.3172, 2.7488], [1.1605, -0.2218, 2.8396], [1.2857, -0.1144, 2.9821], [1.0722, 0.0078, 3.0971], [1.2708, -0.0052, 3.1267], [1.1131, -0.0783, 3.2555], [1.1093, -0.364, 2.9184], [1.4111, -0.3527, 2.8387], [1.2626, -0.4431, 3.075], [1.4391, -0.5745, 3.0132], [1.2816, 0.0266, 3.0924], [1.6704, 0.0455, 3.3037], [1.5325, 0.0584, 3.036], [1.385, 0.0685, 3.2676], [1.6406, 0.0002, 3.2249], [1.556, 0.0841, 3.4412], [1.3183, -0.0472, 3.0758], [1.4085, -0.2708, 3.1167], [1.4143, -0.1945, 3.2965], [1.642, -0.2169, 3.2462], [1.5132, -0.0628, 3.3441], [1.644, -0.1761, 3.3547], [1.6613, -0.1049, 3.51], [1.2206, -0.3803, 2.5513], [1.2722, -0.3241, 2.7951], [1.3414, -0.5703, 2.5982], [1.4713, -0.4103, 2.7904], [1.4912, -0.311, 2.82], [1.6222, -0.4765, 2.8818], [1.5202, -0.4726, 3.0695], [1.5682, -0.439, 3.3101], [1.7511, -0.5413, 3.2115], [1.5534, -0.4803, 2.7833], [1.6768, -0.6307, 2.8665], [1.6036, -0.4572, 3.1067], [1.6884, -0.723, 3.0426], [1.7471, -0.531, 3.1625], [1.8093, -0.6844, 3.1054], [0.1176, 0.4369, 1.7474], [0.0464, 0.605, 1.9797], [0.0834, 0.9311, 2.0117], [-0.0751, 1.0881, 1.9696], [0.1357, 0.4743, 2.0411], [-0.012, 0.377, 2.1959], [0.0018, 0.6024, 2.2606], [0.0138, 0.6796, 2.5492], [-0.1783, 0.5951, 2.6655], [0.0185, 0.5177, 2.7546], [-0.1018, 0.5574, 2.9784], [0.2473, 0.5188, 1.9798], [0.2408, 0.5771, 2.1839], [0.4296, 0.6561, 2.2652], [0.5738, 0.7591, 2.4027], [0.4752, 0.9178, 2.5304], [0.5509, 0.7123, 2.6238], [0.0964, 0.8756, 2.1545], [-0.0983, 1.1931, 2.7199], [0.1074, 0.7504, 2.493], [0.3249, 0.7219, 2.4816], [0.2251, 0.9173, 2.5945], [0.15, 0.6705, 2.6737], [0.2158, 0.7367, 2.9362], [0.3791, 0.8023, 3.0653], [0.2928, 0.9575, 2.3848], [0.1375, 1.0154, 2.4979], [0.2333, 1.1261, 2.3256], [0.2317, 1.143, 2.5211], [0.1704, 1.3013, 2.3884], [0.3521, 1.2882, 2.5631], [0.2279, 1.2753, 2.7429], [0.3734, 1.4483, 2.6171], [0.1442, 1.0863, 2.7001], [0.0043, 1.0034, 2.7908], [-0.035, 1.284, 2.9272], [-0.1822, 1.1148, 3.0518], [0.069, 1.2168, 3.112], [0.3152, 1.3112, 2.7089], [0.2738, 1.5244, 2.6776], [0.4585, 1.4053, 2.8318], [0.4217, 1.4939, 2.7903], [0.1989, 1.5736, 2.7834], [0.2944, 1.5185, 2.9703], [0.3713, 1.7229, 2.8327], [0.1796, 1.6955, 3.0063], [-0.0367, 1.388, 2.4338], [-0.0397, 1.4069, 2.7569], [0.0682, 1.5613, 2.5438], [-0.2442, 1.5933, 2.8029], [-0.3524, 1.7363, 2.6984], [0.0378, 1.8669, 2.8543], [-0.1667, 1.882, 2.8494], [-0.0991, 1.4646, 2.8786], [-0.0169, 1.5907, 3.0655], [-0.004, 1.7991, 3.0692], [0.1238, 1.6934, 3.1745], [0.1638, 1.8568, 3.0841], [-0.0444, 1.7741, 3.1803], [0.0867, 1.7004, 3.3075], [0.0059, 1.7227, 2.5502], [0.0856, 1.967, 2.9262], [0.0188, 2.0891, 2.8546], [0.1265, 2.1818, 2.8155], [0.2294, 2.1881, 2.9292], [0.0657, 2.2825, 2.9198], [0.033, 1.7575, 2.9063], [-0.1712, 1.8297, 2.8445], [0.0763, 1.9041, 2.8534], [0.0599, 2.0721, 2.8204], [-0.1712, 2.0054, 2.8811], [0.0038, 1.9944, 3.0026], [0.05, 2.1397, 3.0356], [-0.0195, 2.2893, 3.0464], [0.2251, 0.8107, 2.666], [0.3264, 1.0806, 2.9674], [0.5453, 1.0111, 2.9475], [0.3598, 0.8916, 2.8387], [0.1862, 0.9591, 2.9578], [0.2443, 0.7694, 2.8984], [0.1237, 0.7827, 3.0779], [0.2102, 1.2394, 2.6638], [0.43, 1.1341, 2.734], [0.2838, 1.2718, 2.8518], [0.534, 1.4508, 2.7276], [0.3447, 1.4573, 2.9403], [0.5678, 1.3514, 2.9029], [0.4604, 1.6027, 3.0335], [0.6309, 1.433, 3.1409], [0.1414, 1.2083, 3.0555], [0.4167, 1.2647, 3.2092], [0.4102, 1.3376, 3.3073], [0.2065, 1.3698, 3.4302], [0.3811, 1.2562, 3.0032], [0.6001, 1.3811, 3.1847], [0.6768, 1.1928, 3.1919], [0.7856, 1.3327, 3.481], [0.72, 1.274, 3.1472], [0.7093, 1.482, 3.1144], [0.9004, 1.4154, 3.2298], [0.5813, 1.5262, 2.9697], [0.5283, 1.6956, 2.9429], [0.3418, 1.6055, 3.1048], [0.5579, 1.6153, 3.152], [0.567, 1.7488, 3.1657], [0.3703, 1.8083, 3.2155], [0.5249, 1.8659, 3.2193], [0.3884, 1.798, 3.3794], [0.6368, 1.8187, 3.3804], [0.5043, 1.4584, 3.1695], [0.7725, 1.7558, 3.2533], [0.7945, 1.6215, 3.4285], [-0.5605, -0.5001, 2.0288], [-0.6765, -0.7366, 1.9922], [-0.8957, -0.5832, 2.072], [-0.1225, -0.4063, 1.928], [-0.1942, -0.5529, 2.2411], [-0.4247, -0.1926, 1.9191], [-0.418, -0.1966, 2.196], [-0.537, -0.3925, 2.3457], [-0.6497, -0.2366, 2.4936], [-0.216, -0.4674, 2.0359], [-0.4306, -0.5271, 2.0739], [-0.2716, -0.6799, 1.9202], [-0.3001, -0.6564, 2.1869], [-0.4867, -0.7786, 2.0697], [-0.2697, -0.9007, 2.1609], [-0.4663, -0.801, 2.3504], [-0.4831, -0.9967, 2.1882], [-0.347, -1.0029, 2.4251], [-0.5957, -1.0137, 2.3936], [-0.276, -0.5169, 2.0957], [-0.4497, -0.6213, 2.239], [-0.4473, -0.5961, 2.4483], [-0.2914, -0.5687, 2.5817], [-0.4654, -0.3988, 2.6149], [-0.4945, -0.6309, 2.6627], [-0.3439, -0.4734, 2.81], [-0.8058, -0.4986, 2.4106], [-0.9867, -0.6221, 2.2258], [-0.8687, -0.6695, 2.4421], [-1.0205, -0.6054, 2.596], [-0.5742, -0.9138, 2.3068], [-0.4141, -0.9957, 2.3625], [-0.5559, -0.9178, 2.5355], [-0.5858, -1.0956, 2.391], [-0.4598, -1.07, 2.5591], [-0.6987, -1.0651, 2.5907], [-0.5338, -1.2618, 2.5365], [-0.8457, -0.7227, 2.6376], [-0.8904, -0.5413, 2.7037], [-0.826, -0.7193, 2.8465], [-0.5703, -0.9387, 2.2609], [-0.7557, -0.7886, 2.4086], [-0.7683, -0.9098, 2.1794], [-0.6843, -0.9543, 2.406], [-0.7845, -1.0746, 2.2945], [-0.9797, -1.0217, 2.324], [-1.0088, -0.9913, 2.5504], [-0.6938, -0.7708, 2.5991], [-0.7798, -0.8894, 2.693], [-0.6052, -1.1049, 2.6666], [-0.5958, -0.8937, 2.8139], [-0.814, -0.701, 2.3787], [-0.7824, -0.8155, 2.5588], [-0.8468, -0.9692, 2.4936], [-0.9129, -0.7613, 2.536], [-1.0667, -1.0013, 2.5827], [-1.1607, -0.8506, 2.5714], [-1.0687, -0.9799, 2.7583], [-1.1308, -0.7831, 2.7088], [-0.6975, -1.0104, 2.3213], [-0.8763, -1.027, 2.338], [-0.6573, -1.1213, 2.4623], [-0.8861, -1.0409, 2.523], [-0.8265, -1.2967, 2.5067], [-0.8936, -1.1332, 2.6838], [-0.9816, -1.39, 2.5951], [-0.7669, -0.9375, 2.5686], [-0.9639, -1.016, 2.5201], [-0.8895, -0.9411, 2.68], [-0.7694, -1.0714, 2.7601], [-1.0253, -1.0006, 2.7714], [-0.9024, -1.2529, 2.7869], [-0.8534, -1.0299, 2.8832], [-1.0627, -1.1084, 2.8675], [-0.9464, -1.0089, 2.9853], [-0.8568, -1.2239, 2.4275], [-0.9365, -1.2535, 2.583], [-1.1993, -1.1898, 2.4618], [-1.2043, -1.1973, 2.649], [-1.3544, -1.2375, 2.6087], [-1.2433, -1.4209, 2.5852], [-0.7944, -1.1812, 2.6154], [-1.0725, -1.3323, 2.6065], [-1.0172, -1.4655, 2.6529], [-1.0962, -1.3308, 2.8043], [-0.9567, -1.3218, 2.9335], [-1.051, -1.3365, 2.4765], [-1.0008, -1.4432, 2.5876], [-1.2022, -1.3798, 2.5753], [-1.025, -1.46, 2.7755], [-1.1912, -1.4635, 2.6648], [-1.2796, -1.3513, 2.7243], [-1.3251, -1.4751, 2.7536], [0.4826, -0.0259, 2.0576], [0.6153, 0.1334, 2.2713], [0.8212, 0.3118, 2.3445], [0.9404, 0.0698, 2.4369], [0.2885, 0.276, 2.2066], [0.473, 0.1712, 2.441], [0.288, 0.2933, 2.5386], [0.5476, 0.2908, 2.7299], [0.5139, 0.1845, 2.9746], [0.5048, 0.0396, 2.4008], [0.6253, -0.1326, 2.1868], [0.7141, 0.0573, 2.3369], [1.082, -0.0804, 2.6376], [0.6089, 0.2764, 2.1986], [0.4604, 0.3254, 2.388], [0.697, 0.2385, 2.4629], [0.5886, 0.3935, 2.6367], [0.9083, 0.532, 2.6611], [0.702, 0.1407, 2.4935], [0.7127, 0.1336, 2.7245], [0.6646, -0.0778, 2.7752], [0.666, 0.0991, 2.5302], [0.7962, 0.1269, 2.2709], [0.9347, 0.2448, 2.3733], [0.6102, 0.3412, 2.5218], [0.905, 0.3708, 2.9034], [0.71, 0.5212, 2.9644], [0.7963, 0.3031, 3.0876], [0.868, 0.5013, 3.0199], [0.8586, 0.2681, 2.6529], [0.7844, -0.0125, 2.6452], [1.0436, 0.2062, 2.9141], [1.1726, 0.0373, 2.9639], [0.9694, 0.1188, 2.8045], [0.9498, -0.067, 2.9635], [0.8288, 0.3401, 2.6495], [1.1086, 0.3278, 2.8051], [1.1052, 0.5142, 2.9101], [1.2769, 0.5656, 2.8024], [1.4416, 0.4428, 2.8406], [0.9238, 0.3588, 2.7138], [0.9197, 0.1337, 2.7511], [1.0267, 0.0724, 2.8529], [1.0805, 0.2912, 2.8785], [1.0175, 0.0728, 2.9546], [0.9081, 0.1941, 3.0461], [1.1267, 0.3749, 2.7015], [1.1168, 0.1303, 2.8161], [1.2127, 0.2367, 2.6117], [1.2527, 0.1138, 2.7383], [1.3891, 0.3322, 2.7078], [1.2918, 0.1774, 2.9316], [1.4558, 0.0974, 2.7274], [1.3937, 0.0761, 2.9311], [1.5563, 0.183, 2.8339], [1.0828, 0.4056, 2.7379], [1.2345, 0.5322, 2.7991], [1.441, 0.4862, 2.8428], [1.2367, 0.6235, 2.9843], [1.4027, 0.4164, 3.0601], [1.3968, 0.7175, 3.0514], [1.3944, 0.2036, 2.7873], [1.4492, 0.4517, 3.1604], [1.4551, 0.2063, 3.281], [1.3187, 0.2765, 3.2821], [1.3456, 0.5032, 2.902], [1.4258, 0.2306, 2.9339], [1.3991, 0.3939, 2.9994], [1.4794, 0.2903, 3.1242], [1.6505, 0.3926, 2.966], [1.6018, 0.3078, 3.0959], [1.6584, 0.4908, 3.0768], [1.5288, 0.3918, 3.2615], [1.7735, 0.3447, 3.1446], [-0.1838, 0.2539, 2.5936], [-0.3283, 0.0452, 2.8456], [-0.4162, 0.2893, 3.0081], [-0.2849, 0.2086, 3.2055], [-0.2016, 0.4045, 2.2393], [-0.3738, 0.369, 2.4508], [-0.1604, 0.7088, 2.5786], [-0.3701, 0.7894, 2.6836], [-0.1811, 0.7005, 2.8275], [-0.2009, 0.9289, 2.7386], [-0.4612, 0.475, 2.4536], [-0.5865, 0.2657, 2.4012], [-0.5681, 0.3554, 2.6322], [-0.7266, 0.5333, 2.7274], [-0.885, 0.4117, 2.8063], [-0.399, 0.4316, 3.0487], [-0.1589, 0.5194, 3.0701], [-0.3868, 0.6033, 3.149], [-0.596, 0.5836, 2.4136], [-0.6284, 0.53, 2.6744], [-0.7212, 0.8994, 2.8662], [-0.6353, 0.5562, 2.6214], [-0.6, 0.3418, 2.6727], [-0.7562, 0.4466, 2.6794], [-0.7252, 0.5601, 2.8612], [-0.8846, 0.3812, 3.0302], [-1.0217, 0.5256, 3.0396], [-0.441, 0.6398, 2.8354], [-0.6348, 0.721, 2.8883], [-0.5238, 0.864, 2.9875], [-0.674, 0.8091, 3.1642], [-0.609, 0.6941, 3.0524], [-0.3501, 0.6632, 3.0398], [-0.7422, 0.5356, 2.8848], [-0.8639, 0.601, 2.7447], [-0.9156, 0.8272, 2.7399], [-1.0002, 0.6265, 2.92], [-0.895, 0.8409, 2.9783], [-1.0085, 0.9511, 2.9781], [-0.6808, 0.5233, 2.9568], [-0.749, 0.7731, 2.9474], [-0.6947, 0.6462, 3.0848], [-0.8632, 0.752, 3.0374], [-0.7438, 0.7078, 3.1897], [-0.882, 0.6029, 3.3014], [-0.7641, 0.7594, 3.2968], [-0.7831, 0.6375, 3.4726], [-0.8626, 0.8912, 3.4386], [-0.953, 0.7542, 2.9699], [-0.7367, 0.8945, 2.9725], [-0.9396, 0.9532, 2.8255], [-0.7745, 1.0641, 2.9818], [-0.9918, 1.0841, 3.0606], [-0.8305, 1.2141, 3.0769], [-0.9975, 1.2296, 3.0097], [-1.1457, 1.0408, 3.1481], [-0.8917, 0.9362, 3.0574], [-1.0226, 0.7992, 2.864], [-0.9683, 0.7553, 3.1105], [-1.1446, 0.7079, 2.9853], [-1.1926, 0.7486, 3.1982], [-1.3083, 0.921, 3.1039], [-1.2005, 1.0362, 3.1867], [-1.3508, 0.8822, 3.2708], [-1.0191, 0.8354, 3.1434], [-0.8416, 1.0375, 3.0987], [-0.8963, 1.0195, 3.2886], [-0.8329, 1.1315, 3.3563], [-1.0569, 0.9708, 3.2471], [-1.1104, 1.1827, 3.0534], [-1.0125, 1.0979, 3.2745], [-1.1835, 1.0077, 3.299], [-1.2631, 1.1537, 3.254], [-1.1004, 1.0638, 3.3837], [-1.1452, 1.261, 3.2762], [0.3559, -0.2842, 3.1894], [0.0325, -0.5046, 2.6685], [0.0748, -0.4517, 3.0444], [-0.1024, -0.5152, 2.9593], [0.0364, -0.6562, 3.0923], [-0.0898, -0.4722, 3.1519], [0.3633, -0.5981, 3.0945], [0.5718, -0.7289, 2.9926], [0.4317, -0.7082, 3.031], [0.3531, -0.8087, 3.2416], [0.3988, -0.7738, 3.0977], [0.312, -0.9288, 3.1256], [0.4107, -0.7716, 3.2944], [0.134, -0.8447, 3.2653], [0.1503, -0.9687, 3.303], [0.3827, -0.8907, 3.2126], [0.2737, -1.0953, 3.1055], [0.488, -1.1266, 3.26], [0.3243, 0.0588, 3.2852], [0.3784, 0.0682, 2.9196], [0.3263, -0.1954, 2.9658], [0.2818, -0.2072, 3.2386], [0.1236, -0.3695, 3.2317], [0.1785, -0.2746, 3.4134], [0.3706, -0.0311, 3.301], [0.5262, 0.0511, 3.1597], [0.4474, 0.1211, 3.4747], [0.6148, -0.0014, 3.4101], [0.4981, -0.1154, 3.4389], [0.4057, 0.1286, 3.3991], [0.4213, 0.1428, 3.577], [0.4506, 0.0654, 3.7478], [0.4626, 0.2151, 3.5346], [0.5534, 0.108, 3.6982], [0.3867, 0.2662, 3.735], [0.5067, -0.0177, 3.6344], [0.6168, 0.0328, 3.8215], [0.796, 0.1263, 3.7889], [0.6167, 0.1699, 3.8741], [0.3916, -0.0941, 2.7351], [0.3064, -0.1908, 3.0165], [0.4588, -0.2995, 2.7998], [0.6199, -0.2797, 2.9174], [0.5997, -0.3974, 3.058], [0.2838, -0.2536, 3.1151], [0.2531, -0.3807, 3.263], [0.3686, -0.2446, 3.3487], [0.6559, -0.4762, 3.0226], [0.6536, -0.3513, 3.2925], [0.7922, -0.4015, 3.1072], [0.7446, -0.6002, 3.1481], [0.6741, -0.6215, 3.3378], [0.7878, -0.3607, 3.2818], [0.7636, -0.3873, 3.423], [0.9693, -0.5315, 3.5731], [0.6133, -0.4517, 3.2764], [0.5815, -0.6421, 3.2101], [0.4771, -0.6933, 3.4238], [0.3859, -0.4778, 3.4947], [0.4213, -0.7648, 3.3438], [0.5635, -0.6594, 3.293], [0.7465, -0.6075, 3.3284], [0.6602, -0.6879, 3.4143], [0.8126, -0.7605, 3.3614], [0.6155, -0.7775, 3.3991], [-0.0917, -0.1407, 3.1527], [0.1751, 0.0871, 3.2518], [0.1576, 0.1792, 2.9448], [0.3585, 0.1071, 2.8547], [0.347, 0.0896, 3.1294], [0.0712, 0.2944, 3.1587], [0.0424, 0.4972, 3.0193], [0.3128, 0.2568, 2.9194], [0.342, 0.1843, 3.2312], [0.2132, 0.3273, 3.3495], [0.2515, 0.1195, 3.3781], [0.1284, 0.47, 2.9171], [0.3224, 0.4612, 2.9883], [0.3251, 0.5845, 3.1283], [0.0454, 0.3293, 3.1187], [0.0959, 0.4937, 3.1842], [0.2284, 0.4379, 3.3289], [0.0894, 0.3195, 3.4815], [0.2503, 0.5394, 3.4589], [0.4688, 0.4793, 3.363], [0.3678, 0.7056, 3.3906], [0.3851, 0.5122, 3.5862], [0.6305, 0.5292, 3.318], [0.3047, 0.5946, 3.5009], [0.1463, 0.6992, 3.3384], [0.244, 0.5803, 3.5206], [0.2514, 0.7812, 3.4336], [0.1568, 0.5796, 3.4831], [0.329, 0.756, 3.4986], [0.2666, 0.5205, 3.6216], [0.4191, 0.6225, 3.6334], [0.2624, 0.6233, 3.4948], [0.4445, 0.8636, 3.4413], [0.2481, 0.7761, 3.6125], [0.3451, 0.7296, 3.6838], [0.5327, 0.8294, 3.6139], [-0.0748, -0.1876, 3.0018], [-0.2831, -0.1943, 3.1403], [-0.1949, -0.4327, 3.1446], [-0.1384, -0.2171, 3.1995], [-0.4229, -0.0448, 3.0265], [-0.2129, -0.0395, 3.1568], [-0.3191, 0.1517, 3.1069], [-0.4021, 0.1705, 3.281], [-0.6896, -0.0021, 3.2045], [-0.5104, -0.1831, 3.2513], [-0.6852, -0.0016, 3.1909], [-0.5307, -0.1974, 3.3176], [-0.5536, -0.1212, 3.409], [-0.7994, 0.0009, 3.1322], [-0.7638, 0.1291, 3.3079], [-0.3493, -0.2215, 3.0466], [-0.4849, -0.3011, 3.2367], [-0.528, -0.2438, 3.4093], [-0.3592, -0.1672, 3.3689], [-0.5862, -0.1889, 3.4042], [-0.4041, -0.1785, 3.4529], [-0.5845, -0.1586, 3.5575], [-0.3625, -0.0759, 3.5451], [-0.5786, -0.1607, 3.4748], [-0.7434, -0.1494, 3.2911], [-0.6774, -0.0775, 3.4815], [-0.6661, -0.2579, 3.544], [-0.8235, -0.3172, 3.4714], [-0.5066, -0.1242, 3.3505], [-0.3094, -0.0866, 3.3969], [-0.3183, -0.2694, 3.3522], [-0.286, -0.2285, 3.4813], [-0.5411, -0.4035, 3.3585], [-0.3727, -0.2496, 3.5465], [-0.6451, -0.2412, 3.4934], [-0.4582, -0.3982, 3.6338], [-0.163, 0.0367, 3.2079], [-0.2483, -0.1117, 3.3181], [-0.1224, -0.0839, 3.2469], [0.0359, 0.0385, 3.3794], [-0.1532, -0.0626, 3.4441], [-0.234, -0.0585, 3.2408], [-0.1655, 0.1491, 3.3099], [-0.0561, 0.0874, 3.4897], [-0.1166, 0.05, 3.6052], [-0.2996, -0.0741, 3.5657], [-0.1525, 0.1102, 3.5558], [-0.0422, -0.132, 3.3528], [0.0796, 0.0153, 3.4635], [-0.1431, 0.0398, 3.4484], [-0.081, -0.1706, 3.5084], [0.0537, 0.0299, 3.5198], [-0.0653, -0.1557, 3.4916], [0.1792, -0.1373, 3.5981], [-0.0263, -0.0354, 3.6315]], u: [[0.0941, 0.1306, 0.0702], [0.1055, -0.0914, 0.1555], [0.0177, -0.191, -0.0535], [0.1648, 0.0526, 0.1553], [-0.0781, 0.0845, 0.2579], [0.0208, 0.0924, -0.1844], [0.0301, -0.1919, -0.2], [0.1484, 0.13, -0.0134], [-0.057, -0.0, 0.2123], [0.168, -0.0908, 0.0032], [-0.0606, -0.2057, -0.1136], [0.0408, -0.1747, 0.1365], [-0.1316, 0.0697, 0.1139], [0.2144, -0.0274, 0.1595], [0.1789, 0.1002, 0.0113], [-0.0729, -0.1661, -0.0941], [0.0213, -0.2281, -0.1167], [-0.0338, 0.1964, -0.1752], [-0.0977, 0.1769, 0.1605], [0.2462, -0.0341, -0.0562], [0.0722, -0.0918, 0.163], [0.1296, 0.0909, -0.0661], [-0.0033, -0.1645, 0.0448], [-0.1473, -0.0664, 0.0941], [0.1075, 0.1514, 0.0174], [-0.2331, 0.0664, 0.0581], [0.2149, 0.0802, 0.1267], [-0.0835, -0.1587, -0.0121], [0.0948, 0.1407, -0.1258], [0.196, -0.1174, 0.0721], [0.0838, 0.1555, -0.1182], [-0.145, 0.1007, 0.1398], [-0.1082, -0.193, -0.155], [-0.1113, -0.061, 0.1159], [0.0235, -0.1911, 0.1482], [0.1438, 0.0876, 0.0323], [-0.209, 0.1359, -0.0758], [-0.0322, 0.031, -0.2385], [-0.0982, -0.2022, 0.0912], [-0.1598, 0.0275, 0.0813], [0.1559, 0.0274, 0.1396], [0.0944, 0.0376, -0.2509], [0.0841, -0.0364, 0.2176], [-0.1558, -0.0951, 0.052], [-0.1391, 0.1432, 0.0684], [0.1063, 0.0955, 0.0879], [-0.2368, 0.0466, 0.0815], [-0.0932, 0.1942, -0.153], [-0.0414, -0.1439, -0.0763], [0.0552, -0.1446, -0.0566], [0.0898, 0.1298, -0.1185], [0.131, 0.0743, 0.1196], [0.1009, 0.0975, -0.0892], [-0.1238, 0.0902, 0.1672], [0.1706, -0.0623, 0.0579], [0.0055, -0.2586, 0.0664], [0.0296, 0.0493, -0.2642], [0.1721, 0.0371, -0.0408], [-0.0993, 0.1789, 0.0974], [0.1048, -0.1004, 0.153], [0.0153, 0.0476, -0.2317], [-0.2161, 0.0045, 0.044], [0.1188, 0.0284, 0.171], [0.1621, 0.0905, 0.0567], [-0.1132, -0.1643, 0.0281], [0.1588, 0.003, 0.1507], [0.0476, -0.231, 0.0382], [0.2034, -0.0586, 0.0389], [0.0172, 0.1486, -0.1488], [0.1546, 0.0983, 0.0001], [-0.193, 0.0878, 0.165], [-0.0639, -0.2157, -0.0393], [0.2242, 0.0995, 0.0663], [-0.1667, 0.09, 0.1977], [-0.0666, -0.1573, -0.0823], [-0.1413, -0.0014, 0.0879], [0.0667, -0.1456, 0.0365], [0.0681, 0.1176, -0.2482], [-0.1368, 0.0835, 0.0436], [-0.1166, 0.0129, 0.1346], [0.0251, -0.2644, -0.0144], [0.0353, 0.0683, -0.1958], [-0.0836, 0.1228, 0.0958], [0.126, -0.1184, 0.1864], [-0.1166, 0.0067, 0.2498], [-0.1549, 0.0149, 0.1301], [-0.0842, 0.2256, -0.0359], [0.0513, 0.095, -0.235], [0.1457, 0.0893, 0.0122], [0.1066, -0.117, 0.1825], [-0.0667, -0.1593, -0.0112], [0.1901, -0.0207, 0.0993], [0.1365, 0.0446, -0.0955], [0.1144, -0.2142, -0.034], [0.1092, 0.1457, 0.0097], [-0.0784, 0.0259, 0.2372], [0.1439, -0.2085, 0.0049], [0.1838, -0.0404, -0.0111], [0.045, -0.1629, 0.0588], [-0.0703, 0.0165, -0.2266], [-0.1168, 0.1003, 0.0941], [0.1555, -0.0173, 0.0726], [0.029, -0.2017, 0.1545], [0.0305, -0.0227, -0.202], [0.2167, 0.0464, -0.0633], [-0.0919, 0.1529, 0.1144], [0.113, -0.0626, 0.1306], [-0.0656, -0.1516, 0.0386], [-0.1816, 0.0197, 0.1932], [0.0108, -0.256, -0.0523], [0.0612, 0.153, -0.1889], [0.1594, 0.0414, -0.008], [-0.1457, 0.1527, 0.1665], [0.1488, -0.1214, 0.0449], [-0.0491, -0.1717, -0.096], [0.2098, -0.0517, 0.0379], [0.0385, -0.1197, -0.143], [0.0147, 0.2261, -0.1184], [0.1861, 0.0805, 0.078], [-0.1531, 0.0068, 0.2243], [0.1282, -0.1238, 0.0515], [-0.0665, -0.1204, 0.1803], [0.0201, 0.0593, 0.168], [-0.0145, -0.2463, 0.0328], [0.1041, -0.0956, 0.2156], [0.1548, -0.1581, 0.0542], [0.1097, 0.1956, -0.0827], [0.0139, 0.0145, -0.2613], [0.2022, -0.0643, -0.0558], [-0.0416, 0.1172, -0.1351], [0.2051, 0.102, -0.0572], [-0.0945, -0.205, -0.0277], [-0.0098, 0.0528, -0.1735], [-0.1961, 0.082, 0.1487], [0.0303, -0.0008, -0.1984], [0.2419, 0.0222, 0.0685], [-0.0749, 0.1854, -0.0111], [-0.0081, 0.0584, -0.2095], [-0.0367, -0.2601, 0.037], [0.1788, 0.0598, 0.0318], [-0.0568, 0.1787, -0.0086], [0.0419, -0.0664, 0.155], [-0.0228, -0.1555, 0.0613], [0.1648, 0.1067, -0.0531], [-0.0862, 0.0855, 0.201], [0.0525, 0.0654, -0.1994], [0.2041, -0.0295, -0.0076], [-0.0248, 0.0517, -0.2442], [-0.1591, 0.0551, -0.0634], [0.0215, -0.1639, 0.0038], [0.0681, -0.0944, -0.1919], [0.0532, -0.1238, 0.1744], [-0.1629, 0.1785, 0.1037], [-0.1445, -0.2232, -0.0042], [-0.0962, 0.202, -0.0291], [-0.0983, -0.1927, -0.1066], [-0.1148, -0.0827, 0.0971], [0.2076, -0.0726, 0.036], [0.1992, 0.0517, 0.0917], [-0.1253, 0.0423, 0.1412], [-0.1499, -0.1336, 0.1619], [-0.2291, 0.0849, -0.0383], [-0.0137, -0.117, -0.1587], [-0.2389, 0.0529, -0.1114], [-0.2428, -0.0341, 0.0251], [0.0821, -0.1457, -0.1539], [0.0987, 0.1872, 0.002], [0.1842, 0.0041, 0.026], [-0.069, 0.2491, 0.0781], [0.1506, -0.1137, -0.0096], [0.0934, 0.1955, 0.0004], [-0.1782, -0.17, 0.0893], [-0.2058, 0.0762, 0.0689], [0.0874, -0.1297, 0.1024], [-0.1849, -0.1137, 0.1218], [-0.0959, 0.1693, 0.0705], [0.0635, 0.1548, -0.1181], [-0.0909, 0.1151, 0.0822], [0.0572, 0.1971, -0.1475], [-0.0921, -0.1374, -0.0963], [-0.114, 0.0759, 0.1077], [-0.0851, 0.0343, -0.2232], [0.0557, -0.1698, 0.0018], [0.0409, -0.0846, -0.2007], [-0.1238, 0.0871, 0.0864], [-0.0625, -0.0333, -0.1572], [-0.2345, 0.0122, 0.0341], [-0.1239, -0.1107, 0.0023], [0.103, -0.0571, 0.1991], [-0.0368, 0.2304, -0.0146], [-0.1523, -0.0522, 0.1075], [0.1382, -0.1239, 0.0173], [-0.1445, -0.2128, 0.0703], [0.2386, -0.0388, 0.0996], [-0.0068, 0.1619, -0.0143], [-0.2092, -0.0789, 0.1368], [0.1413, -0.1426, 0.0502], [0.0201, -0.089, -0.1715], [-0.1987, -0.0899, -0.0603], [-0.1231, 0.2068, 0.0474], [-0.1468, -0.1581, 0.0301], [-0.1814, 0.1471, -0.0362], [-0.0463, -0.1856, -0.1345], [-0.2076, -0.0038, -0.009], [-0.1693, -0.0473, 0.0535], [0.1765, -0.1566, 0.1221], [0.0821, -0.1771, -0.1906], [-0.155, -0.082, -0.0283], [0.1784, -0.1153, 0.1152], [-0.1565, 0.1319, 0.1517], [0.0558, 0.2063, 0.0347], [0.0629, -0.2144, 0.0589], [0.124, -0.1311, 0.1769], [0.0937, 0.0228, 0.1963], [-0.2385, 0.0843, 0.0439], [0.0129, -0.1312, -0.1624], [0.178, 0.031, 0.1233], [-0.1566, 0.0636, 0.0628], [-0.1992, -0.0431, 0.0589], [0.1164, -0.1296, 0.1184], [-0.1611, -0.1213, 0.0757], [0.1726, -0.0246, 0.1863], [0.0092, 0.2173, -0.1452], [-0.0769, 0.1513, 0.0245], [-0.1792, 0.0934, 0.013], [0.0538, 0.017, 0.1635], [-0.1926, 0.0979, 0.0983], [0.0206, 0.2017, 0.0823], [-0.0483, -0.0208, -0.2024], [-0.1823, -0.0137, -0.0259], [-0.0714, 0.127, 0.1836], [-0.1683, -0.171, -0.0329], [0.1383, -0.0553, 0.2001], [0.0164, 0.1579, -0.0386], [-0.2247, -0.0608, 0.0275], [-0.1151, -0.1855, -0.0426], [0.0428, -0.2066, -0.0015], [0.1051, 0.0895, -0.129], [0.1806, 0.0946, 0.113], [-0.0264, 0.0941, -0.1696], [-0.0582, -0.1529, -0.0285], [-0.2082, -0.008, 0.1307], [-0.0895, 0.2049, 0.0268], [0.0661, 0.0907, -0.1793], [-0.0184, -0.2462, 0.024], [-0.1706, -0.0959, -0.0574], [-0.0867, 0.1698, -0.118], [0.1713, 0.1341, 0.0269], [0.0519, 0.093, -0.1465], [-0.0171, -0.1737, -0.0601], [0.029, 0.0061, 0.1989], [0.0155, -0.1478, -0.1098], [0.0931, -0.0365, 0.141], [-0.0719, -0.1298, -0.2132], [-0.2472, -0.0128, -0.0228], [0.093, 0.0075, 0.1742], [-0.1477, -0.0709, 0.0949], [0.1351, 0.1482, 0.1289], [-0.0671, -0.233, 0.0251], [0.1209, 0.0508, 0.2355], [0.1132, 0.0718, -0.1624], [0.0981, 0.1293, 0.0719], [-0.2412, 0.0993, -0.0177], [-0.0228, 0.0268, -0.1748], [-0.0059, -0.1727, 0.014], [-0.2099, -0.0331, 0.1201], [0.1368, 0.1164, 0.2087], [0.0491, -0.2497, -0.0247], [-0.1574, -0.1324, 0.1728], [0.0721, 0.1362, 0.0894], [0.022, 0.0226, -0.2277], [-0.0412, -0.1101, -0.142], [-0.1703, -0.1879, 0.0446], [-0.1721, 0.0665, 0.0186], [-0.2099, 0.1424, 0.0388], [0.1329, 0.1812, 0.1402], [0.0651, -0.0932, 0.1337], [-0.1558, -0.0853, 0.1208], [-0.1619, 0.1243, 0.0728], [-0.0509, -0.1028, 0.1826], [-0.0531, 0.1902, -0.0247], [-0.1139, -0.1411, -0.0775], [-0.0297, 0.0602, 0.2018], [0.017, -0.2142, -0.1142], [-0.214, -0.0388, -0.146], [0.0199, 0.0438, -0.2199], [-0.0672, 0.2441, -0.04], [0.0674, 0.0975, 0.207], [-0.1188, 0.0993, 0.1341], [0.065, 0.1415, 0.0815], [-0.0245, 0.1664, -0.0076], [0.0094, -0.0758, -0.1676], [-0.1748, -0.0562, -0.0545], [-0.0943, 0.118, 0.0912], [-0.107, -0.1346, -0.0193], [0.0676, -0.0032, 0.2358], [0.0359, -0.1229, -0.1895], [-0.1457, 0.1729, 0.0154], [-0.1835, 0.05, -0.113], [-0.0554, 0.1376, 0.1089], [0.074, 0.117, 0.2432], [0.0013, 0.1242, -0.1457], [0.04, -0.2002, -0.1194], [0.0181, -0.1291, 0.1199], [0.1946, -0.0019, -0.1944], [-0.0475, -0.0827, -0.1825], [0.0372, -0.1743, 0.0058], [-0.0222, -0.0514, 0.1982], [0.0372, 0.1749, -0.0896], [-0.0565, -0.1415, -0.074], [-0.082, -0.1926, -0.1498], [-0.1587, -0.0276, 0.1034], [0.0437, -0.1719, -0.1549], [0.0315, 0.2037, -0.1311], [-0.1612, -0.0383, 0.1178], [-0.0847, 0.0357, -0.2208], [0.0675, 0.1259, 0.0912], [-0.0165, -0.0016, -0.221], [0.1427, -0.1527, 0.0726], [-0.0306, -0.1658, 0.1894], [0.2088, 0.1513, -0.0746], [-0.0224, -0.0541, 0.2619], [0.1625, -0.0242, -0.0686], [-0.0185, 0.1945, 0.0045], [0.2399, 0.0852, 0.0512], [-0.0714, -0.098, 0.2378], [-0.1456, -0.0633, 0.0655], [0.2403, -0.0911, 0.0717], [0.0375, 0.1721, -0.0537], [0.1918, 0.0827, 0.106], [-0.1546, 0.0566, 0.1024], [0.1256, 0.1052, 0.1197], [-0.15, 0.0273, 0.0761], [-0.064, -0.1289, -0.1303], [0.1469, -0.1302, 0.1578], [-0.0696, 0.1691, 0.1369], [0.0939, 0.151, -0.0759], [0.1393, 0.0495, 0.1682], [-0.2326, 0.0466, 0.1318], [0.1731, -0.0447, -0.0878], [0.1633, -0.0042, 0.0755], [-0.1178, -0.0849, 0.1096], [-0.1224, -0.1655, -0.0054], [-0.0118, 0.2344, 0.1005], [0.1448, -0.0071, 0.1541], [-0.1702, -0.1633, 0.1071], [0.1888, 0.1099, -0.0629], [-0.0645, 0.0155, 0.1693], [0.235, -0.0073, -0.091], [0.1422, 0.1039, 0.0068], [-0.0752, -0.1608, -0.1398], [0.1784, 0.1321, 0.0855], [0.1245, 0.0203, 0.1389], [0.1209, -0.114, -0.051], [-0.1681, 0.0018, 0.1531], [-0.1944, -0.0871, 0.027], [0.1658, -0.1745, 0.0313], [0.1753, -0.0562, 0.1762], [-0.0288, 0.2498, -0.0018], [0.1245, -0.1223, 0.0872], [-0.1011, 0.0516, 0.1685], [0.1099, -0.0432, -0.1883], [0.19, 0.1238, -0.1195], [0.0768, -0.1564, -0.1678], [0.1544, 0.1321, 0.089], [-0.0344, -0.1843, 0.1157], [0.2396, 0.0619, 0.0108], [0.1037, -0.1705, -0.1012], [0.1111, 0.0593, 0.1418], [-0.0952, -0.1833, 0.0877], [-0.016, 0.1593, 0.0339], [0.1648, -0.1386, -0.1676], [-0.0675, -0.0215, 0.2158], [-0.0027, -0.0592, -0.2067], [0.109, -0.1553, -0.0376], [-0.0443, 0.0224, 0.2087], [-0.0429, 0.2603, 0.0139], [0.1309, 0.0837, 0.0678], [-0.0883, -0.0988, 0.1071], [-0.0415, -0.0928, -0.2371], [0.051, 0.1659, -0.0122], [0.2094, 0.0037, 0.0326], [0.1473, 0.084, 0.1841], [-0.0403, -0.2043, 0.0902], [-0.0631, 0.1796, 0.0583], [0.1673, 0.033, 0.0936], [-0.1693, 0.0303, 0.1033], [0.0914, -0.21, 0.0164], [-0.076, -0.1596, -0.1855], [-0.1502, -0.0752, 0.0514], [0.1747, -0.1417, 0.1007], [-0.1352, -0.129, 0.0526], [0.1847, -0.0529, 0.1746], [0.1319, -0.118, -0.0987], [0.1297, 0.0304, -0.0997], [0.0016, -0.0763, -0.1618], [0.2011, 0.1715, -0.0023], [-0.0593, -0.0672, 0.2453], [0.1611, -0.1332, -0.0602], [-0.1046, -0.1627, -0.1757], [0.0274, 0.1819, -0.1237], [0.1896, 0.011, -0.0272], [0.0092, -0.0301, -0.1859], [0.1764, 0.0084, 0.0026], [-0.1295, 0.1829, 0.0698], [-0.0519, 0.1395, -0.1528], [0.155, -0.0844, 0.0722], [0.2554, 0.009, 0.0431], [-0.0885, 0.1776, 0.143], [0.157, 0.1353, 0.0446], [-0.1056, 0.0138, 0.1599], [-0.1014, -0.0846, 0.2372], [0.2091, 0.005, -0.0338], [-0.1081, -0.0326, 0.1305], [0.1416, -0.2048, -0.006], [-0.1418, 0.1801, 0.1516], [0.1687, 0.1554, 0.0941], [0.1264, 0.1332, -0.0676], [-0.1337, 0.0983, 0.2146], [0.2074, -0.0534, 0.0875], [0.0067, 0.0374, -0.2716], [0.0722, -0.2058, -0.1005], [-0.0355, 0.1406, -0.1196], [-0.0907, -0.0693, 0.1505], [0.2239, -0.1011, 0.0204], [-0.0112, -0.134, -0.1157], [0.1723, -0.0166, 0.0367], [0.1497, 0.1255, 0.1208], [0.0844, -0.0504, -0.1945], [0.1189, 0.0636, 0.1625], [-0.0493, 0.1764, 0.1667], [0.1971, 0.0998, 0.102], [0.1035, 0.1488, -0.0553], [0.2113, -0.1178, -0.0482], [0.0297, 0.1173, -0.1268], [-0.1114, -0.0086, 0.2176], [0.1335, -0.1445, 0.0142], [0.1774, 0.0101, -0.0884], [0.2072, -0.1315, -0.1109], [-0.0651, -0.1466, -0.2112], [0.0851, -0.1801, -0.0206], [0.1498, 0.1225, 0.1254], [0.1934, -0.0716, -0.0296], [0.1446, 0.1071, -0.0529], [0.0886, 0.0592, 0.2179], [0.1692, 0.0607, 0.0726], [-0.0799, 0.1584, -0.0692], [0.1549, 0.0745, 0.1323], [-0.0202, 0.1227, -0.1155], [-0.0785, -0.1855, -0.0815], [-0.141, -0.2003, -0.0764], [-0.156, 0.043, 0.1224], [0.1207, -0.1037, 0.1303], [0.0915, 0.1143, -0.184], [0.1865, -0.0596, -0.0434], [0.0461, -0.075, 0.1522], [0.1232, -0.102, 0.0647], [0.1691, -0.0347, 0.0144], [0.0255, -0.1836, -0.119], [-0.0368, 0.1426, -0.1673], [-0.0945, -0.2211, 0.0049], [0.1086, 0.021, 0.1753], [-0.1153, -0.048, 0.129], [0.1839, -0.0934, 0.0352], [-0.0098, -0.1992, -0.1221], [-0.1281, -0.1623, 0.1526], [-0.1233, 0.0252, 0.1674], [-0.0826, -0.1685, -0.1987], [0.2301, 0.0601, 0.0625], [0.0064, -0.0137, -0.1827], [0.1337, 0.1123, -0.0991], [0.1187, 0.0039, 0.1302], [-0.0147, -0.1726, 0.1096], [0.2479, 0.0313, 0.0486], [-0.0175, 0.0749, -0.212], [0.2097, 0.1453, -0.03], [0.121, 0.0325, 0.1339], [0.034, 0.1342, -0.1328], [0.0016, -0.1814, -0.0318], [-0.2065, -0.0952, 0.1496], [0.1808, 0.0329, 0.1733], [0.1463, -0.0505, 0.0765], [-0.0358, -0.2028, 0.0464], [0.2101, -0.0559, 0.0177], [0.2425, 0.0832, 0.0563], [-0.1, 0.1291, -0.0159], [-0.0323, 0.0259, -0.2012], [-0.1365, -0.2038, 0.0676], [-0.1604, 0.0836, 0.124], [-0.14, 0.0651, -0.2152], [0.1029, -0.0184, -0.2528], [0.1, 0.1738, -0.0795], [-0.1589, -0.0745, 0.1822], [-0.2185, 0.0328, -0.0632], [0.1779, 0.124, 0.044], [-0.1272, 0.1204, 0.0136], [-0.1808, -0.1032, 0.146], [0.0549, 0.0591, -0.1787], [-0.085, 0.1509, 0.052], [0.0724, -0.056, 0.1516], [-0.0967, -0.1358, 0.0438], [0.0452, -0.1974, -0.0871], [0.1664, 0.0711, 0.1656], [0.0371, -0.1306, 0.187], [0.0138, -0.009, -0.214], [-0.1306, 0.0981, 0.0492], [-0.0146, -0.1501, 0.0708], [0.1514, 0.0668, 0.0322], [-0.1025, 0.1546, -0.0173], [-0.0708, 0.0303, -0.2677], [-0.2166, -0.0029, 0.1229], [0.1611, 0.0679, 0.1103], [0.1625, 0.1956, -0.0274], [-0.1735, 0.0536, 0.0269], [0.096, -0.0057, 0.1681], [0.185, 0.1081, 0.1029], [-0.0979, -0.2425, -0.0029], [-0.023, 0.2435, -0.0787], [-0.0076, -0.1925, -0.1697], [0.2351, 0.0975, -0.0034], [0.1416, -0.0703, 0.0665], [-0.1121, 0.0743, 0.1657], [0.0201, 0.1653, 0.0007], [-0.1888, -0.0536, 0.1024], [-0.1062, 0.1217, 0.0717], [0.1935, -0.0776, 0.1499], [0.0823, -0.0426, -0.2675], [0.1673, 0.1412, -0.0788], [-0.1417, 0.1176, 0.1954], [0.166, -0.0701, 0.0969], [-0.0937, 0.1894, 0.1097], [0.1311, -0.0989, 0.2186], [-0.1942, -0.0649, 0.1337], [0.1983, -0.0361, 0.09], [0.1548, 0.0535, 0.0587], [-0.1619, 0.0957, 0.1807], [0.0637, 0.0409, -0.2347], [-0.0555, 0.077, 0.1416], [-0.0151, 0.1898, -0.0642], [-0.0533, -0.1235, -0.1404], [0.1273, -0.1053, 0.0964], [-0.0647, -0.1675, 0.0228], [0.2553, -0.0074, 0.0074], [0.1987, 0.0939, 0.0262], [-0.1228, -0.2172, 0.109], [-0.1562, 0.0384, 0.096], [0.1635, 0.0077, 0.1259], [0.1606, 0.0842, 0.0179], [-0.1403, 0.14, 0.0517], [-0.0736, -0.1636, 0.024], [-0.139, 0.0302, 0.1719], [0.2223, 0.0263, 0.1283], [0.0549, 0.0832, -0.2386], [0.1674, 0.103, -0.0102], [0.167, -0.1369, 0.161], [0.0637, 0.0098, -0.2468], [-0.0043, 0.2183, -0.0894], [-0.1857, 0.093, 0.1507], [0.069, -0.1549, -0.0659], [-0.0879, -0.1326, 0.0482], [-0.1776, 0.1555, -0.0728], [-0.0109, -0.1613, -0.1919], [-0.019, 0.1446, -0.2291], [0.0578, 0.017, 0.1742], [0.1371, -0.0552, 0.0711], [-0.174, -0.0408, 0.0958], [0.0733, -0.1643, -0.1676], [-0.046, 0.0226, -0.1878], [-0.2085, -0.0939, -0.0442], [0.1457, -0.175, 0.0257], [-0.1147, 0.0563, 0.2412], [0.1046, 0.1611, 0.0702], [0.1361, -0.0936, 0.2093], [-0.1947, -0.0202, 0.0824], [0.1148, -0.1126, 0.0263], [0.1489, 0.2132, -0.0535], [-0.1195, -0.1116, 0.0487], [0.135, -0.0624, 0.1466], [0.0987, -0.1934, -0.1042], [0.1135, 0.1536, -0.0858], [0.1416, 0.0803, 0.2107], [0.0391, -0.1349, -0.2038], [-0.2374, -0.0371, -0.1233], [-0.0048, 0.0982, -0.1485], [0.0075, -0.0273, -0.2106], [-0.1465, -0.0723, -0.0071], [0.1087, -0.1211, 0.0158], [0.0831, -0.0568, -0.2166], [0.1056, 0.1532, 0.0557], [0.1065, -0.0615, 0.137], [-0.2245, 0.0029, 0.1227], [-0.0475, 0.225, 0.0252], [-0.1734, -0.1623, 0.0526], [-0.1637, 0.0967, 0.011], [0.0296, 0.1752, -0.1544], [0.1133, -0.2338, -0.0209], [-0.1255, 0.0361, 0.1854], [0.1048, 0.0974, 0.1733], [0.0628, -0.1145, 0.1433], [0.0008, 0.1995, 0.0765], [-0.2183, -0.0448, -0.0892], [-0.1863, 0.0764, 0.1868], [0.1007, -0.1163, -0.1997], [-0.2226, 0.0401, 0.1398], [-0.0471, 0.2493, -0.0295], [-0.0727, -0.0929, -0.1847], [-0.1396, 0.1932, 0.0127], [0.0045, -0.0446, -0.2349], [0.0112, 0.1636, -0.0876], [-0.0631, 0.1555, 0.1208], [-0.1206, -0.1878, 0.0461], [-0.1906, 0.035, -0.0444], [0.0155, 0.1587, -0.1947], [-0.0654, 0.1349, 0.0782], [0.0915, -0.1351, -0.1265], [-0.1487, -0.0675, -0.1241], [0.1918, -0.162, 0.049], [-0.1337, 0.0041, 0.1246], [0.0459, -0.2085, -0.0064], [0.0299, -0.0641, -0.226], [0.0544, 0.2056, 0.049], [-0.0869, -0.0687, -0.1372], [-0.1919, -0.0253, 0.0126], [0.0509, -0.1324, -0.1474], [0.1594, -0.0181, 0.155], [-0.2057, 0.1077, 0.1097], [0.0055, 0.2504, -0.0662], [-0.0828, -0.096, -0.1477], [-0.2156, -0.0108, 0.0662], [0.0168, -0.1519, -0.1304], [0.0616, -0.2392, -0.0738], [0.053, -0.1941, 0.1392], [-0.1764, 0.0279, -0.0902], [-0.1078, 0.0731, 0.1512], [-0.2287, 0.0866, 0.0275], [0.0259, 0.1604, 0.0305], [0.2018, -0.0319, 0.1202], [-0.2044, -0.1259, -0.0087], [0.1017, 0.2285, 0.0506], [-0.2016, 0.0201, 0.1054], [-0.0265, -0.077, -0.2275], [0.0548, 0.1532, 0.1195], [0.0757, -0.232, -0.0215], [-0.1793, -0.0853, -0.0926], [0.1118, -0.1803, 0.1758], [0.0851, 0.1485, 0.0445], [-0.1675, 0.046, -0.0079], [-0.153, -0.094, -0.051], [0.1577, -0.1937, -0.0121], [-0.018, 0.028, -0.2117], [-0.0586, -0.2085, -0.1336], [0.0903, -0.1671, 0.1629], [-0.0179, -0.2571, -0.0054], [0.25, 0.0065, 0.0747], [0.0586, -0.1438, -0.0605], [0.249, 0.0791, 0.054], [0.1088, -0.1291, 0.1274], [-0.0167, -0.0036, -0.254], [0.0908, -0.2111, -0.1134], [0.1151, 0.116, 0.0471], [0.2389, 0.0957, 0.0303], [0.172, 0.1007, -0.1432], [-0.0961, 0.1009, 0.0884], [0.2052, -0.0996, 0.1416], [0.0793, -0.0102, -0.2504], [0.1592, 0.0837, -0.03], [0.2149, 0.0472, 0.0517], [0.1769, 0.0932, 0.1229], [0.0857, -0.1686, 0.034], [0.0273, -0.0884, 0.2257], [0.1543, -0.0526, -0.1838], [0.1507, 0.1113, -0.1128], [-0.1173, 0.1743, 0.0109], [0.2224, -0.0055, 0.0791], [-0.086, 0.1973, 0.1021], [-0.0242, 0.1511, -0.2138], [0.1111, 0.1175, 0.0328], [-0.0869, -0.1469, -0.1668], [0.084, 0.2273, -0.0887], [-0.0814, -0.2105, -0.1396], [0.1879, -0.0244, 0.0241], [-0.0692, -0.048, -0.1634], [0.0564, 0.0157, -0.208], [-0.0746, 0.1487, 0.1045], [0.0499, -0.081, 0.1482], [-0.0523, 0.1516, 0.2233], [0.1139, 0.1953, -0.0194], [0.2578, -0.0265, -0.0545], [0.0215, -0.1921, -0.0924], [0.0442, 0.1445, -0.097], [-0.0675, 0.2355, -0.0915], [0.1348, 0.0956, 0.0707], [-0.0245, 0.2109, -0.0645], [-0.1423, -0.0038, 0.099], [0.0993, 0.1944, 0.0246], [0.0275, -0.1639, 0.1776], [0.1137, 0.0012, -0.1449], [0.0568, -0.1669, 0.0019], [0.1988, 0.1692, -0.0716], [-0.0087, -0.049, 0.2279], [0.1812, -0.1553, -0.1117], [0.0043, 0.16, -0.1205], [0.1936, 0.0137, -0.0622], [-0.081, 0.162, 0.0023], [-0.0023, -0.1777, 0.0542], [0.2435, 0.0388, -0.0648], [-0.0915, 0.2146, 0.11], [0.1275, -0.12, 0.1882], [0.0024, -0.2234, -0.0248], [0.194, -0.1219, -0.06], [-0.0239, -0.2307, -0.1131], [0.0099, 0.1475, -0.223], [0.045, -0.1176, -0.2038], [0.0147, -0.2448, -0.1175], [0.0682, -0.1717, 0.1382], [-0.0455, 0.0521, 0.1779], [0.0363, 0.1319, -0.2491], [0.1896, 0.0129, -0.0264], [0.0673, -0.1267, 0.0891], [0.1277, 0.1399, 0.0201], [-0.0916, -0.0147, 0.2527], [0.2435, -0.0928, 0.032], [-0.0897, -0.1824, -0.1654], [0.0211, 0.1666, -0.1593], [-0.1291, 0.0894, 0.0634], [-0.0764, 0.0943, -0.1704], [-0.0671, -0.1756, 0.1727], [-0.1703, 0.0168, 0.0983], [0.1659, 0.108, 0.0053], [-0.1633, 0.1538, 0.0741], [0.0989, -0.0528, 0.1958], [-0.0506, -0.2005, 0.0386], [-0.042, 0.2446, 0.0333], [-0.133, -0.0897, -0.0815], [0.0053, -0.0179, -0.2179], [-0.0262, -0.191, -0.1881], [0.0417, 0.0571, -0.1778], [0.0979, 0.0805, -0.1598], [0.2429, 0.0303, 0.1025], [-0.115, 0.132, 0.1196], [-0.1075, 0.1132, -0.221], [-0.0975, -0.037, 0.1418], [0.0889, 0.1092, 0.1188], [-0.1411, 0.1369, -0.0157], [0.0415, 0.1723, -0.0144], [-0.1799, 0.0033, -0.0708], [0.0352, -0.1775, -0.0858], [-0.1228, -0.1347, 0.1081], [-0.2524, 0.0484, -0.002], [0.1758, 0.0497, 0.0424], [-0.1215, 0.108, 0.0198], [-0.0446, -0.1645, 0.0378], [-0.171, 0.0064, 0.1447], [-0.0861, -0.0082, 0.1572], [0.246, -0.0824, 0.0384], [-0.0827, -0.1212, 0.1742], [-0.143, -0.0753, -0.0826], [-0.0978, 0.2047, -0.1443], [-0.1617, -0.1294, 0.0893], [0.0567, 0.1503, 0.1347], [-0.023, -0.2003, -0.0096], [-0.0698, 0.2079, -0.1527], [0.0045, -0.1643, -0.0797], [0.1309, -0.0264, 0.1656], [-0.095, 0.1281, 0.0308], [0.1255, 0.0451, 0.1137], [0.0594, 0.1388, -0.1482], [0.1213, 0.0788, 0.0803], [0.1013, -0.1376, 0.2145], [0.0101, -0.2226, -0.0907], [-0.2285, -0.0332, 0.1148], [0.1245, 0.109, 0.0922], [-0.1494, 0.128, -0.1567], [0.1353, 0.1464, -0.0159], [-0.1855, 0.1142, 0.0469], [-0.0445, -0.1997, 0.0444], [0.0361, -0.2483, 0.0873], [-0.2363, -0.0558, 0.1016], [-0.0018, -0.1867, -0.1658], [-0.1466, -0.0235, -0.1457], [0.0188, 0.0945, -0.1995], [-0.1878, -0.18, -0.0369], [0.1226, 0.1673, -0.1747], [-0.2313, 0.0468, -0.0411], [0.0174, -0.1713, -0.0052], [-0.2127, -0.0838, 0.0891], [0.1022, 0.1135, -0.1736], [0.1752, 0.159, 0.0664], [0.1321, -0.0183, 0.1127], [0.2148, 0.0779, 0.0751], [-0.0324, 0.0404, -0.2518], [0.025, -0.2556, 0.0623], [0.161, 0.0847, 0.2063], [0.0681, 0.0931, -0.1762], [-0.1741, 0.087, 0.0456], [0.0732, -0.066, 0.2063], [-0.0122, -0.2078, -0.0113], [-0.0849, -0.1168, 0.2402], [-0.1476, -0.1805, -0.0965], [-0.0528, -0.0616, -0.1963], [-0.1755, -0.0071, 0.0043], [0.0683, -0.1934, 0.1371], [0.0785, -0.1097, -0.1517], [-0.0919, -0.0664, -0.2618], [0.2678, 0.021, -0.0057], [0.1236, -0.0208, 0.1117], [-0.0266, -0.023, -0.2387], [0.1566, 0.0172, 0.0606], [-0.018, 0.1733, -0.0045], [0.1663, 0.0848, 0.2017], [-0.2403, -0.0009, 0.1057], [-0.1813, -0.1237, 0.0273], [-0.0363, -0.0537, -0.1745], [-0.137, -0.2257, -0.0097], [0.1473, -0.1452, 0.0341], [0.0487, -0.1309, -0.2142], [0.207, 0.0143, 0.0545], [0.1336, 0.0371, 0.0923], [-0.0698, -0.1439, -0.1816], [-0.1589, -0.0684, 0.067], [-0.0577, 0.1201, 0.1399], [0.0244, 0.0644, -0.2307], [0.1713, 0.0241, -0.0324], [-0.0893, 0.0694, 0.2099], [0.1255, -0.1185, 0.0556], [0.1379, -0.1474, 0.166], [-0.0045, -0.193, -0.0266], [-0.0464, -0.1852, -0.1125], [0.1242, 0.0879, 0.1993], [-0.0881, -0.2505, 0.0194], [0.1885, 0.0111, 0.0825], [0.0799, -0.2019, -0.0569], [0.0812, 0.1101, -0.1823], [0.0557, 0.1049, -0.1365], [0.1985, 0.0309, 0.0482], [-0.0829, 0.0919, 0.1333], [0.1659, 0.1285, -0.0953], [-0.0286, -0.0066, 0.2834], [0.13, -0.1567, -0.0842], [0.178, -0.0559, -0.0681], [0.0353, -0.1705, 0.0303], [-0.1448, 0.0861, 0.1079], [-0.2059, -0.08, 0.1344], [0.0438, -0.1405, -0.1341], [0.1325, -0.0623, -0.1634], [-0.0957, -0.1395, -0.2231], [0.2348, 0.0969, -0.0881], [0.0933, -0.1621, -0.0763], [-0.0676, -0.1599, 0.1532], [0.1302, 0.1466, 0.0185], [-0.0099, -0.129, -0.1214], [0.1744, -0.0395, 0.0343], [-0.1286, -0.0473, -0.2156], [0.0889, -0.1354, 0.0128], [-0.0189, 0.1545, -0.1359], [-0.0802, 0.1756, 0.1715], [-0.1534, -0.1898, 0.0355], [-0.1047, -0.0452, 0.1746], [-0.1351, -0.0835, -0.1866], [0.0377, -0.0465, -0.239], [0.1738, -0.0093, 0.1007], [-0.1238, -0.0123, 0.1284], [-0.0998, -0.1299, 0.0234], [0.1438, -0.0822, 0.1328], [-0.0453, 0.0116, 0.2046], [0.151, -0.1157, -0.0234], [0.0404, 0.1303, -0.195], [0.0744, -0.0709, 0.2625], [-0.0453, -0.176, 0.0176], [0.2448, 0.0157, -0.0051], [0.1557, -0.056, 0.057], [-0.0534, 0.1603, 0.1553], [0.0166, 0.1454, -0.1098], [0.0662, -0.1889, 0.1023], [0.1738, 0.0718, -0.0663], [-0.093, -0.1331, 0.0145], [-0.1885, -0.0679, 0.0397], [-0.0788, 0.1504, 0.0194], [0.1432, 0.0351, 0.0986], [0.0601, 0.1715, -0.2037], [0.1787, 0.1413, 0.1092], [0.1496, -0.0504, 0.0703], [0.0291, -0.2476, -0.0368], [0.0311, 0.0782, -0.2577], [0.2049, 0.0609, -0.0803], [-0.0857, 0.0741, -0.2595], [-0.1323, 0.0958, 0.0101], [-0.0254, 0.1118, -0.2228], [-0.0488, -0.1568, -0.0321], [-0.2032, -0.0112, 0.1678], [-0.0371, -0.2379, -0.0991], [0.0812, 0.1114, -0.1096], [0.1395, 0.0423, 0.0793], [0.0769, 0.0575, -0.1743], [-0.1549, -0.2055, 0.0397], [-0.1517, 0.0541, 0.1773], [0.0476, 0.0606, -0.1796], [0.2168, 0.0708, 0.0356], [0.1597, -0.1137, 0.0889], [-0.1166, 0.0155, 0.1252], [-0.0202, 0.2111, 0.0239], [0.1304, -0.081, 0.2026], [-0.2259, -0.0219, 0.0325], [0.1095, -0.0438, 0.158], [0.029, -0.2074, -0.0054], [-0.1252, 0.1371, 0.0427], [-0.1446, 0.0783, -0.05], [0.0104, -0.1012, 0.145], [-0.2256, 0.0689, -0.0166], [-0.0251, 0.2195, -0.1339], [-0.0343, 0.1173, -0.1411], [-0.1616, 0.0463, -0.1245], [-0.0463, 0.2327, 0.0952], [-0.0204, 0.1806, 0.0935], [-0.1393, -0.1082, -0.0246], [-0.1657, 0.0418, 0.1427], [0.1464, -0.047, 0.1399], [-0.1711, -0.0854, 0.0953], [0.1045, -0.0792, 0.1182], [-0.1662, -0.0737, 0.1877], [0.164, 0.0361, 0.12], [-0.0507, -0.0359, -0.2393], [-0.1705, 0.0602, -0.057], [0.0186, -0.1779, -0.1735], [0.0429, -0.0904, 0.2155], [-0.1455, -0.1803, 0.0523], [-0.1126, 0.0369, 0.1673], [0.159, 0.1306, 0.1694], [0.1279, -0.1045, 0.0235], [0.1623, 0.0012, 0.1023], [0.0784, 0.2276, 0.0387], [0.1808, 0.0206, 0.2065], [-0.2148, 0.0516, 0.0876], [0.1153, -0.1309, 0.149], [-0.1847, 0.1067, 0.1529], [-0.2471, -0.0145, 0.0944], [-0.1172, -0.1215, 0.0374], [0.1458, 0.0502, 0.1819], [0.1057, 0.1304, -0.1606], [-0.2167, -0.0838, -0.1037], [0.0673, -0.2029, 0.0409], [0.1256, 0.082, 0.1777], [0.1129, 0.0969, 0.1634], [-0.1559, -0.1143, 0.165], [0.0796, 0.1443, 0.1258], [0.0441, 0.1612, -0.0244], [0.146, 0.0668, 0.1463], [-0.1757, 0.1093, 0.0752], [0.0719, 0.2031, -0.1176], [0.003, -0.1263, -0.1098], [-0.193, -0.1392, 0.0237], [0.179, -0.0947, 0.1422], [-0.1192, 0.0762, 0.1473]], v: [[-0.0896, 0.0851, -0.0441], [0.1048, 0.1081, -0.0087], [0.1464, 0.0071, 0.0264], [-0.0115, 0.1623, -0.0493], [-0.0203, -0.1893, 0.0645], [-0.0647, 0.1194, 0.0606], [0.098, 0.1305, -0.1275], [-0.085, 0.1031, 0.069], [0.0155, -0.1534, 0.0048], [0.0609, 0.1104, -0.073], [0.1282, 0.0253, -0.1319], [0.162, 0.0245, -0.0197], [0.0257, -0.0957, 0.1019], [0.1063, 0.0939, -0.1464], [-0.054, 0.1066, -0.1045], [0.1376, -0.0622, 0.0037], [0.1894, 0.013, 0.0105], [-0.1886, -0.0405, -0.0103], [0.0026, -0.1207, 0.1555], [-0.0055, 0.1466, -0.1306], [0.106, -0.0518, -0.0879], [-0.0717, 0.1052, 0.0048], [0.1199, 0.0082, 0.045], [0.0824, -0.0688, 0.0929], [-0.0898, 0.0722, -0.0851], [-0.0152, -0.1464, 0.1226], [0.0111, 0.1497, -0.1311], [0.1061, -0.0599, 0.0618], [-0.0997, 0.1077, 0.0524], [0.0951, 0.1504, -0.0159], [-0.1305, 0.0835, 0.0199], [-0.0921, -0.1362, 0.003], [0.1778, -0.0853, -0.0206], [0.0522, -0.113, -0.0108], [0.1755, 0.0263, 0.007], [-0.0183, 0.067, -0.1158], [-0.1085, -0.1022, 0.1339], [-0.1643, -0.039, 0.0197], [0.1543, -0.0395, 0.0907], [0.0367, -0.0751, 0.1128], [0.0716, 0.0872, -0.112], [-0.1723, 0.0559, -0.0651], [0.1518, 0.0406, -0.0599], [0.0761, -0.1189, 0.0122], [-0.1155, -0.1055, -0.0161], [-0.0767, 0.0959, -0.0132], [-0.0359, -0.1863, 0.0025], [-0.1682, -0.0941, -0.0196], [0.1146, -0.0433, 0.0224], [0.1154, 0.0395, 0.0135], [-0.127, 0.061, -0.034], [-0.0468, 0.1288, -0.0332], [-0.0898, 0.082, -0.0138], [0.0365, -0.1238, 0.1084], [0.0587, 0.063, -0.1214], [0.1643, -0.023, -0.119], [-0.1465, 0.1198, 0.0068], [-0.0385, 0.1116, -0.0705], [-0.061, -0.0963, 0.1324], [0.1226, -0.0005, -0.0974], [-0.1528, -0.0602, -0.0259], [0.0233, -0.0944, 0.1433], [0.0853, 0.0943, -0.0865], [-0.02, 0.0972, -0.1132], [0.1192, -0.0731, 0.0609], [0.0853, 0.0909, -0.1059], [0.1712, 0.0287, -0.0463], [0.0511, 0.1411, -0.0629], [-0.1424, 0.0458, 0.0337], [-0.0735, 0.1155, -0.013], [-0.0324, -0.1829, 0.0686], [0.1611, -0.041, -0.043], [-0.0785, 0.1725, 0.0076], [-0.0646, -0.1845, 0.0342], [0.1306, -0.0387, -0.0365], [0.0412, -0.0919, 0.0748], [0.1098, 0.0421, -0.0379], [-0.1925, 0.0482, -0.0346], [-0.035, -0.0932, 0.0794], [0.0484, -0.1054, 0.06], [0.178, 0.0213, -0.0938], [-0.1222, 0.0837, 0.0083], [-0.051, -0.091, 0.0832], [0.1555, 0.0284, -0.1005], [0.0977, -0.1601, 0.0577], [0.061, -0.1, 0.0971], [-0.1618, -0.0504, 0.0725], [-0.1723, 0.0597, -0.0155], [-0.0574, 0.1007, -0.0597], [0.1544, 0.0538, -0.0643], [0.1197, -0.05, -0.0028], [0.0479, 0.1358, -0.0732], [-0.012, 0.1191, 0.0444], [0.0989, 0.073, -0.1466], [-0.0698, 0.0456, 0.1164], [-0.0555, -0.1678, -0.0], [0.1432, 0.0971, -0.0844], [0.031, 0.1371, 0.0158], [0.1051, 0.0016, -0.0879], [-0.1509, 0.0476, 0.0581], [0.0354, -0.0583, 0.1225], [0.0522, 0.0216, -0.1232], [0.161, -0.0388, -0.0934], [-0.1195, 0.0748, -0.0305], [-0.0562, 0.1032, -0.1349], [-0.0432, -0.1021, 0.1176], [0.101, 0.0181, -0.0909], [0.1107, -0.0547, -0.0309], [0.0163, -0.1879, 0.0397], [0.1738, 0.0238, -0.093], [-0.1437, 0.1024, 0.042], [-0.0315, 0.1186, -0.0158], [-0.0884, -0.1591, 0.0791], [0.0962, 0.1041, -0.0434], [0.1391, -0.0115, -0.0583], [0.0385, 0.1595, 0.0055], [0.114, 0.0703, -0.0325], [-0.1707, 0.0442, 0.0729], [-0.077, 0.1331, 0.0534], [-0.0334, -0.1905, -0.0196], [0.0992, 0.0937, -0.0248], [0.0671, -0.1317, -0.0729], [0.0417, -0.1132, 0.0404], [0.0454, -0.0249, -0.1925], [0.0784, -0.1309, -0.1107], [0.068, 0.0171, -0.1666], [-0.0985, 0.0987, 0.1186], [-0.062, 0.172, 0.0072], [0.0225, 0.1387, -0.0905], [-0.092, 0.0528, 0.0856], [-0.0719, 0.1588, 0.0294], [0.1188, -0.0403, -0.1238], [-0.064, 0.1038, 0.0406], [0.0701, -0.0897, 0.1638], [-0.1324, 0.0411, -0.0235], [0.0266, 0.1201, -0.1533], [-0.1151, -0.0416, 0.0936], [-0.1456, 0.0421, 0.0201], [0.1904, -0.033, -0.0497], [-0.0206, 0.1073, -0.0994], [-0.0818, -0.0209, 0.121], [0.0989, -0.0514, -0.0563], [0.0988, -0.0389, -0.0717], [-0.0793, 0.1288, 0.0146], [-0.0164, -0.1541, 0.0675], [-0.0681, 0.1339, 0.03], [0.02, 0.1483, -0.0426], [0.0875, -0.1463, -0.046], [0.0115, -0.0805, -0.1141], [0.0518, 0.0092, 0.1207], [0.1057, -0.0846, 0.0914], [0.0322, 0.1281, 0.0936], [-0.1305, -0.0444, -0.1484], [0.1418, -0.0936, 0.1123], [-0.1515, -0.068, 0.0339], [0.1612, -0.0543, -0.0582], [0.0533, -0.1094, -0.0348], [0.053, 0.1577, 0.0138], [-0.0573, 0.1511, 0.0455], [-0.0592, -0.1256, -0.0172], [0.0901, -0.1576, -0.0538], [-0.0385, -0.1478, -0.1125], [0.0591, -0.1035, 0.0822], [-0.0459, -0.1938, 0.0075], [0.0209, -0.1785, -0.046], [0.149, 0.0157, 0.0746], [-0.1133, 0.0588, 0.1013], [-0.0142, 0.1053, 0.0969], [-0.191, -0.0596, 0.0248], [0.0795, 0.1005, 0.065], [-0.1333, 0.0636, 0.0729], [0.076, -0.1367, -0.1251], [-0.0519, -0.1614, 0.0273], [0.1165, 0.0724, -0.0089], [0.1074, -0.1463, 0.0305], [-0.1318, -0.0788, 0.0115], [-0.1399, 0.0546, -0.0042], [-0.0928, -0.0814, 0.013], [-0.175, 0.0592, 0.013], [0.1205, -0.0722, -0.0142], [-0.0866, -0.0071, -0.1], [0.0969, -0.1263, -0.0651], [0.0837, 0.0284, 0.1082], [0.1351, -0.0571, 0.0596], [-0.0871, -0.0497, -0.0864], [0.0678, -0.1012, -0.0064], [-0.0179, -0.1624, -0.0751], [0.083, -0.0928, 0.0064], [-0.0197, 0.1528, 0.0624], [-0.1707, -0.0254, 0.0332], [0.0119, -0.1323, -0.0547], [0.0905, 0.104, 0.0249], [0.1431, -0.1189, -0.0759], [-0.0021, 0.1771, 0.0855], [-0.1217, -0.0046, 0.0075], [0.0123, -0.1721, -0.0929], [0.0959, 0.111, 0.0524], [0.1354, 0.0259, 0.0029], [0.0635, -0.1548, 0.0247], [-0.1363, -0.058, -0.1164], [0.1065, -0.0827, 0.0987], [-0.1043, -0.1375, -0.0419], [0.0902, -0.0963, 0.1176], [0.0005, -0.1459, 0.059], [0.0265, -0.1302, -0.036], [0.1008, 0.1574, 0.0648], [0.188, 0.0458, 0.0443], [0.0645, -0.1088, -0.0441], [0.0335, 0.1443, 0.1069], [-0.1445, -0.0697, -0.1022], [-0.1522, 0.0461, -0.0338], [0.1353, 0.062, 0.0937], [0.0624, 0.1545, 0.0817], [-0.0429, 0.1488, 0.0037], [-0.0702, -0.1651, -0.0743], [0.1273, -0.0547, 0.0627], [-0.041, 0.1536, 0.0237], [-0.059, -0.1162, -0.0339], [0.0294, -0.1548, -0.016], [0.0984, 0.115, 0.0337], [0.1004, -0.1237, 0.0178], [0.0152, 0.1834, 0.0116], [-0.1865, -0.0182, -0.0451], [-0.1116, -0.0511, -0.0406], [-0.0402, -0.0918, 0.1226], [0.1018, 0.0519, -0.0449], [-0.0932, -0.0532, -0.1498], [-0.1381, 0.0424, -0.0801], [0.1025, -0.1039, -0.0159], [0.0188, -0.1125, -0.084], [-0.1488, 0.0192, -0.0822], [0.1288, -0.1276, 0.005], [-0.0179, 0.1665, 0.0674], [-0.1116, 0.0004, -0.0531], [0.0395, -0.165, -0.0486], [0.1239, -0.0906, 0.0691], [0.1545, 0.0319, 0.0132], [-0.1109, 0.0641, -0.0529], [-0.0326, 0.1496, -0.0843], [-0.134, -0.0376, 0.0], [0.1077, -0.0479, 0.0426], [0.0555, -0.1497, 0.0916], [-0.1535, -0.0687, 0.0148], [-0.142, 0.0339, -0.0406], [0.0812, 0.0091, 0.1795], [0.0078, -0.0843, 0.1358], [-0.1217, -0.0973, -0.0584], [-0.0792, 0.1168, -0.0902], [-0.0987, -0.0472, -0.075], [0.0793, -0.0414, 0.1122], [0.0625, 0.1251, -0.015], [0.1133, -0.0336, 0.0707], [0.0057, 0.1201, 0.0316], [0.1171, -0.1364, 0.0503], [0.0118, -0.1841, -0.0279], [-0.022, 0.1384, 0.0066], [0.0793, -0.0257, 0.1203], [0.0022, 0.109, -0.1475], [0.1283, -0.0241, 0.1373], [0.0928, 0.1446, -0.091], [-0.1241, 0.0159, -0.0918], [-0.0418, 0.0809, -0.1022], [-0.0701, -0.154, 0.1065], [-0.1056, -0.0665, 0.0042], [0.1154, 0.0005, 0.0643], [0.0836, -0.0933, 0.139], [0.0393, 0.1533, -0.1285], [0.1405, 0.0158, 0.139], [0.1407, -0.0019, 0.1463], [-0.0274, 0.0772, -0.1103], [-0.1315, -0.0895, -0.0249], [0.0829, -0.0907, 0.0535], [0.1371, -0.1055, 0.0913], [-0.0514, -0.1223, -0.0446], [-0.1093, -0.1575, -0.0151], [-0.1281, 0.1352, -0.0615], [0.1026, 0.0737, 0.0017], [0.0959, -0.1171, 0.0475], [-0.0966, -0.1291, 0.0065], [0.0421, 0.1206, 0.092], [-0.0361, -0.0272, -0.1527], [0.016, -0.0763, 0.1331], [0.0119, 0.1425, -0.0471], [0.0415, -0.0751, 0.1698], [-0.0198, -0.1734, 0.0868], [-0.076, -0.1334, -0.0386], [-0.1223, -0.0546, -0.1477], [0.0217, 0.1469, -0.0881], [-0.1117, -0.01, -0.1056], [-0.1098, 0.0644, -0.0281], [-0.0905, -0.017, -0.0928], [0.1029, -0.0693, 0.0428], [0.0507, -0.1301, -0.0327], [-0.0956, -0.014, -0.0933], [0.0901, -0.0784, 0.0541], [-0.0413, 0.1665, 0.0163], [0.1212, -0.0768, 0.084], [-0.0673, -0.0444, -0.1607], [0.0007, -0.1467, -0.0763], [-0.0806, 0.0411, -0.1073], [-0.0687, 0.1741, -0.0726], [-0.0977, -0.0714, -0.0713], [0.1345, -0.0321, 0.1141], [0.0152, -0.0823, -0.105], [0.0321, 0.194, 0.0349], [0.0659, 0.109, -0.0769], [0.0694, 0.0113, -0.1223], [-0.0337, -0.1344, -0.0445], [-0.1357, 0.0463, 0.0393], [0.1179, -0.0356, -0.0253], [0.1762, -0.0661, -0.0132], [0.0161, -0.1391, -0.0143], [0.1666, 0.0406, 0.0023], [-0.1763, 0.0329, 0.0102], [-0.0761, -0.0337, -0.1328], [0.1513, -0.0316, -0.0729], [-0.1139, 0.042, 0.0303], [0.1432, -0.0576, -0.0119], [0.0249, 0.0848, 0.1494], [0.0214, -0.1342, -0.1316], [-0.0392, 0.124, 0.1637], [-0.0376, -0.179, -0.0464], [0.0356, 0.1189, 0.049], [-0.106, -0.0123, 0.108], [-0.0668, 0.1047, 0.1604], [-0.0409, -0.1637, -0.0921], [0.0426, -0.1184, -0.0227], [0.0641, 0.1869, 0.0262], [-0.1324, 0.0332, 0.0163], [-0.0796, 0.1513, 0.03], [-0.0582, -0.129, -0.019], [-0.1007, 0.1088, 0.0116], [-0.0309, -0.1208, -0.0202], [0.1218, -0.0705, 0.0115], [0.0968, 0.1517, 0.0406], [-0.1586, -0.0365, -0.041], [-0.1245, 0.0691, -0.0192], [-0.0602, 0.1497, 0.0067], [-0.0552, -0.1898, -0.035], [0.0699, 0.0647, 0.1209], [-0.0499, 0.0369, 0.1269], [-0.0419, -0.069, -0.1137], [0.0824, -0.0574, -0.126], [-0.185, -0.0229, 0.0366], [-0.1021, 0.0433, 0.1131], [0.0026, -0.1019, -0.1748], [-0.0572, 0.1396, 0.0832], [-0.0206, -0.1265, 0.0043], [0.012, 0.1863, 0.0185], [-0.0655, 0.0849, 0.083], [0.1316, 0.0178, -0.1054], [-0.1108, 0.0838, 0.1176], [-0.0917, 0.0613, 0.0845], [0.0861, 0.0594, 0.0823], [-0.0915, -0.0866, -0.1149], [0.0379, -0.1151, -0.1138], [0.0929, 0.1072, 0.1222], [-0.0444, 0.1498, 0.1062], [-0.1759, -0.0207, -0.0698], [0.045, 0.1046, 0.0953], [-0.1224, -0.044, -0.0693], [0.0671, 0.1434, 0.0072], [0.0162, 0.1117, 0.1634], [0.0857, 0.1272, -0.0916], [-0.0609, -0.0236, 0.1624], [0.0047, -0.0824, -0.1499], [-0.0312, 0.0953, 0.168], [0.1337, 0.0945, -0.0257], [-0.1037, -0.004, 0.0958], [0.0475, -0.0849, -0.1453], [-0.0985, -0.0235, 0.0738], [0.1425, 0.1363, 0.0316], [-0.0993, -0.1165, -0.0492], [0.1299, 0.073, -0.0261], [0.1179, 0.0837, -0.0045], [-0.1098, -0.1019, -0.0143], [-0.1788, -0.0334, 0.0844], [-0.0688, 0.0321, 0.1077], [-0.0016, -0.0876, -0.0948], [0.1565, 0.0718, -0.0641], [-0.0898, 0.0337, 0.095], [-0.017, 0.1194, 0.1108], [-0.1431, 0.0505, 0.1055], [0.1341, -0.0602, -0.0882], [-0.0731, -0.0602, 0.1228], [-0.0507, 0.1247, 0.0538], [-0.0523, -0.1282, -0.0555], [0.1551, 0.0695, 0.029], [0.1737, -0.0616, -0.021], [0.0468, -0.1168, -0.0393], [0.0923, 0.1487, 0.0565], [0.099, -0.1057, -0.0054], [0.019, 0.1838, 0.0412], [0.0438, 0.1151, -0.0912], [-0.0114, 0.119, 0.0247], [0.0404, 0.1072, -0.0579], [-0.0887, 0.1057, 0.1529], [-0.0076, -0.1758, -0.0577], [0.0913, 0.1277, -0.0441], [0.1419, 0.0317, -0.1314], [-0.0805, 0.0841, 0.1222], [-0.0001, 0.1321, 0.0606], [0.0597, 0.1164, -0.0184], [-0.005, 0.1207, -0.0584], [-0.1044, -0.1065, 0.0984], [-0.1444, 0.002, 0.0587], [0.0808, 0.0954, -0.0715], [-0.0001, 0.1894, -0.0454], [-0.1225, -0.1119, 0.073], [-0.1057, 0.1162, 0.0225], [0.0112, -0.1352, 0.022], [-0.0136, -0.1775, -0.0798], [0.0072, 0.1421, 0.0753], [-0.0269, -0.1091, -0.0572], [0.1534, 0.1057, 0.0144], [-0.0108, -0.1295, 0.166], [-0.1276, 0.078, 0.1155], [-0.1075, 0.0977, -0.01], [0.0414, -0.1582, 0.1135], [0.073, 0.0906, -0.1359], [-0.1558, 0.111, 0.0132], [0.1128, 0.0878, -0.1139], [-0.1147, 0.0267, 0.0755], [0.0531, -0.122, -0.0278], [0.0771, 0.1663, -0.0252], [0.118, 0.0266, -0.0487], [0.0064, 0.1286, 0.0328], [-0.1262, 0.0899, 0.0727], [0.0895, 0.1258, 0.0072], [-0.076, -0.0888, 0.1043], [-0.1139, -0.1086, 0.0939], [-0.075, -0.0076, 0.176], [-0.0855, 0.085, 0.0792], [0.0636, 0.1482, -0.0964], [-0.0734, 0.082, 0.0677], [-0.0437, -0.165, -0.0334], [0.1077, 0.0968, -0.0322], [0.0197, 0.1331, 0.0632], [0.1046, 0.1699, -0.0071], [0.1469, 0.0685, -0.1072], [0.1225, 0.0641, -0.0629], [-0.1206, 0.041, 0.1202], [0.057, 0.1417, 0.0345], [-0.0577, 0.02, -0.1353], [0.1479, 0.0417, -0.0825], [0.0286, 0.0616, -0.1365], [-0.1167, -0.0285, 0.0804], [-0.0345, 0.1478, -0.0494], [-0.1117, -0.0435, -0.0308], [0.1313, -0.0773, 0.0573], [0.1514, -0.1146, 0.0243], [-0.0105, -0.1427, 0.0424], [0.1156, 0.0864, -0.0442], [-0.1408, 0.0926, -0.0145], [0.0086, 0.1015, -0.1182], [0.0929, -0.0576, -0.0653], [0.0797, 0.0424, -0.0978], [0.0279, 0.1183, -0.0489], [0.1193, 0.0683, -0.0921], [-0.1366, 0.0439, 0.0779], [0.1024, -0.0408, 0.1534], [0.0925, 0.0892, -0.0785], [0.043, -0.1224, -0.0083], [0.0737, 0.1355, -0.0295], [0.1626, 0.0217, -0.0559], [0.1171, -0.1378, -0.0558], [-0.0632, -0.1332, -0.0306], [0.187, -0.0293, -0.061], [0.0273, 0.0611, -0.1837], [-0.1278, 0.006, -0.0057], [-0.1027, 0.0414, -0.1057], [0.0875, 0.0321, -0.0931], [0.1481, -0.0225, -0.0179], [0.0091, 0.1293, -0.15], [-0.1471, 0.0504, 0.0346], [-0.1101, 0.1485, -0.0577], [0.0065, 0.1264, -0.0422], [-0.1303, -0.0109, -0.0512], [0.1334, -0.0045, 0.0373], [0.1184, -0.1399, 0.0859], [0.0244, 0.1708, -0.0668], [0.0649, 0.0491, -0.1059], [0.1388, -0.0383, -0.0694], [0.043, 0.1399, -0.0784], [-0.0088, 0.1221, -0.1648], [-0.0784, -0.0517, 0.0853], [-0.1417, 0.0004, 0.0263], [0.1548, -0.0806, 0.0804], [0.0348, -0.1002, 0.13], [-0.1471, -0.0958, 0.077], [-0.1635, -0.0792, -0.0702], [-0.0762, -0.0158, -0.1505], [0.1267, 0.025, 0.1394], [-0.0465, -0.1319, 0.1065], [-0.0425, 0.1017, -0.1327], [-0.0611, -0.074, 0.0969], [0.1257, -0.1087, 0.0909], [-0.1225, 0.0623, -0.0197], [-0.0641, -0.0675, 0.1049], [0.11, -0.0109, -0.0653], [0.1054, -0.0738, 0.0044], [0.1599, 0.0283, 0.0218], [-0.0418, 0.1701, -0.0358], [0.157, -0.02, -0.0521], [-0.1457, 0.0332, -0.0125], [-0.012, -0.0663, 0.1159], [0.1221, -0.0158, -0.0096], [-0.0097, 0.0692, -0.1128], [-0.0846, -0.0455, 0.1089], [-0.1793, -0.0651, 0.0463], [0.0796, -0.0723, 0.16], [0.042, 0.0826, -0.1295], [-0.1137, 0.077, -0.1437], [-0.0123, -0.0888, 0.112], [0.1004, 0.0737, -0.0633], [-0.017, 0.1315, -0.1243], [0.1654, -0.0677, 0.0868], [-0.1806, 0.0021, 0.0684], [0.1449, 0.0714, -0.101], [-0.0684, 0.1669, 0.0673], [0.0242, 0.1064, 0.0704], [-0.123, -0.0744, -0.0576], [-0.124, 0.0151, -0.0], [-0.0027, -0.1402, -0.0905], [-0.0021, -0.0644, 0.1227], [0.1132, 0.0131, -0.1609], [-0.1299, 0.1358, -0.0711], [-0.1172, 0.1243, -0.0301], [0.0155, -0.1568, 0.1219], [0.0856, 0.0705, -0.1104], [-0.0775, -0.103, 0.1288], [0.1652, 0.0017, -0.1135], [0.0809, -0.1537, 0.0497], [0.0409, 0.1557, -0.0319], [-0.0414, 0.1227, -0.0029], [-0.0681, -0.1734, 0.0356], [-0.0637, 0.1608, 0.0124], [-0.0662, -0.098, 0.0316], [-0.1344, 0.0098, 0.0699], [0.1294, 0.0023, -0.0591], [0.0983, 0.0397, -0.0999], [0.1143, -0.0508, -0.0564], [0.0074, 0.1638, -0.1065], [-0.0252, 0.0891, -0.1478], [0.1746, -0.0608, 0.0874], [0.0384, -0.0833, 0.1107], [0.0703, 0.0844, -0.1114], [-0.0438, 0.0998, -0.0884], [-0.0649, -0.0985, 0.1046], [0.1237, -0.0535, 0.0162], [0.0687, -0.1196, 0.0884], [0.0509, 0.1347, -0.1337], [-0.1523, 0.1006, 0.0], [-0.0769, 0.122, -0.0337], [0.1522, 0.0831, -0.1007], [0.1032, -0.1444, 0.0241], [-0.0313, -0.0619, -0.1729], [-0.0905, 0.054, -0.1672], [0.1246, 0.0443, 0.0304], [0.0865, -0.074, -0.0528], [-0.0728, -0.1302, -0.1161], [0.0875, -0.12, 0.1107], [-0.1128, -0.1348, -0.0874], [0.0228, 0.1259, -0.0229], [-0.0384, 0.0359, 0.1177], [-0.0604, -0.033, -0.143], [0.1635, 0.0049, 0.0771], [0.1257, -0.0377, -0.0408], [0.0668, -0.0899, -0.1434], [0.0653, 0.0736, 0.1512], [-0.1722, 0.0033, -0.0954], [-0.1297, 0.0779, 0.0166], [-0.0719, 0.1351, 0.1238], [-0.0418, -0.0825, -0.1372], [0.0806, 0.0878, 0.0277], [-0.1558, 0.1174, 0.0398], [0.088, -0.0917, 0.0066], [0.0457, 0.1429, 0.0217], [0.1609, 0.0556, 0.0569], [-0.1297, 0.0716, -0.05], [-0.0682, 0.177, -0.025], [0.0864, -0.1169, 0.1085], [0.0308, -0.1973, 0.0], [-0.0371, -0.0998, -0.0748], [0.037, -0.1423, 0.0228], [0.0397, -0.0721, -0.0976], [0.0545, 0.0601, 0.0987], [0.1564, 0.0016, 0.0688], [-0.1213, 0.0757, 0.0249], [-0.0387, 0.0988, 0.0859], [-0.072, -0.1059, -0.1492], [-0.1497, -0.0228, -0.0907], [0.1232, -0.1077, 0.0852], [-0.0723, -0.1192, -0.0332], [-0.1449, -0.0421, -0.0873], [0.0511, 0.0091, 0.2024], [-0.1137, 0.0646, -0.1034], [-0.1204, 0.107, 0.0146], [-0.0496, 0.0869, 0.1053], [-0.1111, 0.0385, -0.1147], [0.0643, -0.1361, -0.1028], [-0.1311, 0.0197, -0.1602], [0.1593, 0.0766, 0.0412], [-0.079, -0.1565, -0.0934], [-0.1808, -0.0395, -0.0526], [0.1306, -0.0855, -0.0097], [-0.0706, -0.0412, -0.1711], [0.0551, -0.1546, 0.0351], [-0.0537, -0.0534, -0.1231], [-0.0824, 0.0508, -0.1252], [0.1127, -0.045, 0.1286], [-0.0228, -0.1457, -0.0198], [-0.1006, -0.1089, -0.1117], [-0.0835, 0.0095, -0.0994], [0.1134, -0.0096, 0.1065], [0.1003, -0.0515, -0.1064], [-0.0016, 0.0501, 0.1985], [-0.087, -0.0024, -0.1077], [0.1104, 0.0211, 0.1226], [0.1402, -0.0782, 0.047], [-0.1407, 0.0515, -0.0693], [0.0896, -0.0886, -0.0143], [0.0138, -0.1321, -0.0637], [0.1405, 0.0063, 0.0495], [-0.0273, 0.1518, 0.0528], [-0.1088, -0.1372, -0.0799], [-0.1861, -0.0088, -0.0562], [0.1019, -0.0962, 0.0062], [0.0004, -0.166, -0.0299], [0.1422, -0.0105, 0.0353], [0.0603, -0.0359, 0.1924], [-0.0446, 0.0879, 0.1612], [0.0337, -0.0998, -0.1117], [-0.0906, 0.0543, -0.1049], [-0.0454, -0.0716, -0.176], [-0.0741, 0.0287, -0.1019], [-0.0555, 0.1032, 0.1392], [0.0761, -0.1161, -0.1234], [-0.175, 0.0745, 0.0172], [-0.061, -0.1212, -0.108], [0.1568, -0.0659, 0.0047], [-0.1295, 0.0659, -0.029], [0.1182, 0.0266, 0.1483], [0.084, -0.1316, -0.0478], [0.0241, 0.142, 0.1505], [-0.0974, 0.0709, -0.0582], [-0.0244, -0.1015, -0.0839], [0.073, -0.1187, 0.0], [0.0108, 0.0197, -0.2001], [-0.0339, 0.1441, 0.0253], [0.1031, 0.0576, -0.1561], [0.0945, -0.0736, -0.1476], [0.1913, -0.0128, -0.0266], [0.0127, 0.1837, -0.0678], [0.1018, 0.0575, -0.0439], [-0.0574, 0.1905, -0.0165], [0.1315, 0.0616, -0.0576], [0.0679, 0.1641, -0.0078], [0.0999, 0.1044, -0.132], [-0.0611, 0.0192, 0.1177], [-0.0687, 0.1362, 0.129], [-0.12, 0.1158, -0.0723], [0.0073, -0.0723, 0.1044], [0.1177, 0.039, -0.1652], [-0.0809, 0.1625, -0.0372], [-0.0646, 0.12, -0.0089], [-0.0431, 0.1594, 0.0385], [-0.1027, 0.1277, 0.0588], [0.1265, 0.0669, 0.015], [0.0347, -0.1537, -0.0744], [0.0014, 0.1698, -0.0547], [-0.0383, 0.1316, 0.0909], [-0.1164, -0.0822, 0.0727], [0.0249, 0.1621, -0.0679], [-0.1343, -0.0916, 0.0737], [-0.182, 0.025, 0.0442], [-0.0883, 0.0858, -0.0096], [0.133, 0.0329, -0.1135], [-0.0909, 0.0864, 0.1562], [0.175, -0.0151, -0.0916], [0.0169, 0.1416, 0.0128], [0.1177, 0.0065, -0.0598], [0.1169, 0.0874, 0.0442], [-0.0028, -0.0801, 0.1292], [0.0841, -0.064, -0.0731], [-0.0271, -0.1607, 0.1186], [-0.1138, 0.0758, 0.1087], [0.0002, 0.176, -0.0977], [0.1456, 0.0386, -0.0535], [-0.1121, 0.0583, 0.0413], [-0.1852, -0.0359, 0.051], [-0.0844, 0.0991, 0.0311], [-0.1644, -0.0161, 0.011], [-0.0208, -0.1199, -0.0398], [-0.0473, 0.0056, 0.1693], [0.0223, -0.122, -0.134], [0.0118, 0.1313, 0.0119], [0.0496, 0.0156, -0.1306], [-0.05, 0.1197, 0.1665], [-0.0145, -0.1585, -0.04], [0.0895, 0.1556, -0.0822], [-0.0601, 0.0778, 0.1169], [0.0052, 0.1429, 0.0552], [-0.0659, -0.0345, 0.1222], [0.1097, -0.0244, -0.087], [-0.0489, 0.1566, -0.1039], [-0.0714, -0.1002, 0.1571], [0.145, -0.0141, -0.1239], [0.1204, 0.0134, -0.1258], [0.0839, 0.151, -0.041], [0.1548, 0.0328, -0.115], [-0.1368, 0.1117, 0.0783], [0.1643, 0.0451, 0.0119], [0.0895, 0.078, -0.1747], [0.1, -0.0539, -0.1342], [0.0018, -0.1282, 0.0439], [-0.1182, 0.1495, 0.0716], [-0.0121, 0.1419, -0.0205], [0.1035, 0.0105, -0.073], [-0.1019, 0.0863, 0.0543], [0.0417, -0.1849, 0.0051], [0.0723, 0.163, -0.0894], [0.141, -0.1165, 0.06], [-0.1657, -0.0033, -0.0292], [-0.0551, -0.1059, 0.0427], [-0.1268, -0.0784, 0.0155], [0.1705, 0.0017, 0.0785], [0.0635, -0.0383, 0.1345], [-0.0632, 0.1011, -0.0951], [-0.0621, -0.1177, 0.1238], [0.1412, 0.0393, -0.0701], [0.1527, -0.0368, 0.0104], [-0.0572, 0.0127, -0.1914], [0.0119, -0.0954, 0.0989], [-0.036, -0.1479, 0.0131], [0.0457, -0.1317, 0.147], [-0.0727, -0.1006, -0.057], [-0.0982, 0.1087, -0.0063], [-0.0059, 0.1915, -0.0492], [-0.0902, -0.1179, 0.05], [-0.1475, -0.1253, 0.0088], [0.0886, 0.0445, 0.0838], [-0.0033, 0.0968, -0.0999], [-0.0724, -0.085, -0.1042], [-0.091, 0.0145, -0.1035], [0.0039, -0.1425, -0.0192], [0.1122, -0.0204, 0.102], [0.1208, -0.0438, 0.0954], [-0.0363, -0.1883, 0.0211], [-0.0171, 0.1184, -0.0786], [-0.0645, -0.0833, 0.0675], [0.1231, -0.026, 0.0371], [0.0816, -0.0913, 0.1161], [0.0372, -0.121, 0.0162], [0.0671, 0.1622, -0.0947], [0.0816, 0.0908, 0.1176], [-0.0037, -0.0924, 0.1046], [-0.1142, -0.1231, -0.1122], [0.0803, -0.0061, 0.1576], [-0.0094, 0.0998, -0.124], [0.0993, -0.0164, 0.1215], [-0.1519, -0.1005, -0.0777], [0.1187, -0.0239, 0.0647], [0.0238, 0.151, 0.006], [-0.0973, -0.0647, -0.0359], [-0.0214, 0.1229, -0.029], [-0.1466, 0.0372, -0.0276], [-0.0483, 0.1068, -0.0369], [0.1676, 0.1027, -0.0154], [0.1773, -0.0005, 0.0241], [0.0831, -0.0262, 0.1824], [0.0319, 0.0598, -0.1313], [-0.1448, -0.0874, 0.077], [-0.0839, 0.0669, -0.1125], [-0.0383, -0.1084, 0.1296], [0.1527, -0.031, 0.0155], [0.1518, 0.0588, 0.1207], [0.0802, -0.0495, 0.184], [0.048, -0.1119, 0.1448], [-0.0039, -0.1477, 0.0321], [-0.0482, -0.1311, -0.0769], [0.0662, -0.099, 0.1684], [-0.1413, -0.0281, -0.1455], [-0.0437, -0.1597, 0.0739], [0.107, 0.0088, 0.0773], [0.0876, -0.0944, 0.1388], [-0.1473, 0.0301, -0.0774], [-0.0705, 0.1229, -0.1252], [0.0592, 0.0968, -0.0619], [-0.0323, 0.1584, -0.083], [-0.1205, -0.1335, -0.0068], [0.1606, 0.0401, 0.1158], [0.0353, 0.1659, -0.1105], [-0.1409, 0.0141, -0.0543], [-0.0449, -0.1241, 0.0752], [0.1393, 0.0781, -0.0282], [0.1516, -0.0107, 0.0392], [0.0628, -0.1767, -0.0735], [0.1475, -0.115, -0.012], [0.1014, -0.1101, 0.0084], [0.0039, -0.1231, -0.0505], [0.1039, 0.1055, 0.1121], [0.1266, -0.0039, 0.0789], [0.1577, 0.0927, -0.091], [-0.0066, 0.1244, 0.1702], [-0.0534, 0.0764, 0.0847], [0.1648, -0.0319, -0.0176], [-0.0311, 0.1094, 0.0571], [-0.13, -0.0135, -0.0026], [-0.1321, 0.1377, 0.059], [-0.0355, -0.1698, -0.095], [0.0864, -0.1352, -0.0447], [0.124, 0.0237, -0.0382], [0.1279, -0.0724, -0.1428], [0.0969, 0.1104, 0.0595], [0.1345, 0.1157, -0.0464], [0.0149, 0.1269, -0.1038], [-0.0581, 0.0959, 0.0526], [0.1618, -0.0642, -0.0131], [0.0423, -0.1274, -0.0343], [-0.1324, -0.0379, -0.0254], [-0.1319, 0.1045, 0.0176], [-0.0258, 0.1184, -0.0556], [-0.039, -0.1601, 0.042], [0.0936, 0.0691, -0.0739], [0.1511, 0.113, -0.0291], [0.1455, -0.0048, 0.0119], [0.1521, -0.0532, 0.0286], [-0.109, 0.143, 0.0056], [0.1878, -0.0667, -0.0102], [0.0263, 0.1258, -0.089], [0.13, 0.0719, -0.0835], [-0.1123, 0.1167, 0.0236], [-0.097, 0.0832, 0.028], [-0.0222, 0.1526, -0.0074], [-0.0665, -0.1077, 0.038], [-0.0425, 0.1276, 0.1132], [-0.0242, -0.1974, -0.0082], [0.0801, 0.1112, -0.0961], [0.0516, 0.1362, 0.0267], [0.0874, 0.0017, -0.1067], [-0.0792, -0.1236, -0.0089], [0.0521, -0.1807, -0.0319], [0.1369, 0.0466, -0.0047], [0.0673, 0.1433, 0.0], [0.1085, 0.1129, -0.1352], [-0.0079, 0.14, 0.1535], [0.1015, 0.0878, -0.072], [0.0392, -0.118, -0.1222], [-0.0908, 0.0697, 0.1001], [0.0996, 0.0494, -0.0699], [0.0287, 0.133, 0.0081], [0.15, -0.0646, -0.0869], [0.0833, 0.0605, 0.07], [-0.1108, -0.0722, -0.077], [-0.1665, 0.003, -0.0935], [0.1126, -0.1082, -0.106], [-0.0736, -0.1044, -0.0822], [0.1381, 0.005, -0.118], [0.1561, 0.0732, 0.012], [-0.0467, 0.1022, 0.104], [-0.058, -0.0923, -0.0748], [0.0958, -0.0766, -0.0191], [0.1053, 0.0983, -0.0614], [0.0273, -0.1437, 0.0164], [0.0642, 0.0992, -0.0877], [-0.0656, 0.1342, 0.0878], [0.176, 0.0881, -0.0302], [0.1264, -0.0284, 0.0474], [-0.0111, 0.1813, 0.0316], [0.0457, 0.1219, -0.0057], [-0.1452, -0.0761, 0.0331], [-0.1236, 0.0383, 0.037], [0.1333, -0.0033, -0.1066], [-0.071, 0.1002, -0.0895], [0.099, -0.0705, -0.0135], [0.0575, -0.1321, 0.0546], [-0.1133, -0.0573, -0.0183], [-0.0093, 0.1255, -0.0359], [-0.1891, 0.0541, -0.0118], [-0.0991, 0.1537, -0.0425], [0.0611, 0.0839, -0.0808], [0.1672, 0.0309, -0.0879], [-0.1567, 0.1075, 0.0159], [-0.0325, 0.1612, 0.0456], [-0.1863, 0.0163, 0.0765], [-0.0667, -0.0958, 0.0408], [-0.1694, -0.0531, -0.0085], [0.108, -0.0426, 0.0504], [0.0367, -0.1857, 0.0371], [0.1899, -0.017, -0.0349], [-0.0943, 0.0855, 0.0198], [-0.0393, 0.1158, 0.0086], [-0.1159, 0.0759, -0.0301], [0.1565, -0.1153, 0.016], [0.0251, -0.1544, 0.0792], [-0.1041, 0.0906, 0.0034], [-0.042, 0.1566, -0.0645], [0.0252, 0.1143, 0.1166], [-0.077, -0.0701, -0.0728], [-0.1577, -0.0127, -0.0248], [0.0492, 0.1711, 0.0424], [0.0252, -0.1504, 0.0848], [0.0809, 0.1128, -0.0286], [0.1537, 0.0209, 0.0267], [-0.0971, -0.0985, 0.0364], [-0.061, -0.1127, 0.0], [0.0122, 0.1014, 0.0807], [-0.0465, -0.1636, -0.054], [-0.1564, -0.0664, -0.0919], [-0.1226, -0.0531, -0.0166], [-0.0222, -0.1488, -0.0306], [-0.1021, 0.0389, -0.167], [-0.1501, -0.0099, -0.0157], [0.0823, -0.098, -0.0403], [-0.1009, -0.0757, -0.1097], [0.0366, 0.1461, 0.0124], [0.082, -0.1314, 0.034], [0.0887, 0.0909, -0.0202], [0.1101, -0.1477, 0.0457], [-0.005, 0.1459, -0.0427], [0.0624, -0.1614, 0.0127], [-0.0228, -0.1228, -0.071], [0.1168, -0.0858, 0.116], [0.065, 0.146, 0.0558], [0.1205, -0.067, 0.1202], [-0.0871, -0.1123, -0.0391], [-0.1536, 0.076, 0.0987], [0.0733, 0.0962, 0.0335], [-0.0356, 0.1231, 0.0635], [-0.1724, 0.0601, -0.0046], [-0.0886, 0.165, 0.0705], [-0.0661, -0.1396, -0.0921], [0.0638, 0.1353, 0.0802], [-0.1333, -0.0894, -0.1138], [-0.0182, -0.1788, -0.0866], [0.0885, -0.0662, 0.072], [-0.0077, 0.1662, -0.0459], [-0.147, 0.0711, -0.045], [0.0109, -0.1537, 0.1171], [0.1284, 0.0579, 0.0877], [0.0158, 0.1443, -0.0897], [-0.0951, 0.1277, -0.0116], [0.1388, -0.0295, 0.1278], [-0.039, 0.1047, -0.1101], [-0.1213, 0.0306, -0.0197], [-0.0726, 0.1399, 0.01], [-0.0941, -0.1299, -0.0359], [-0.1714, 0.0352, -0.0507], [0.1127, 0.0307, -0.0372], [0.098, -0.143, -0.0489], [0.0273, 0.1613, 0.0843], [-0.1135, -0.0758, -0.0609]]} diff --git a/src/platform/kpi_rover_worlds/assets/models/apple_4/apple_4_wood.bin b/src/platform/kpi_rover_worlds/assets/models/apple_4/apple_4_wood.bin new file mode 100644 index 0000000..73f8d27 Binary files /dev/null and b/src/platform/kpi_rover_worlds/assets/models/apple_4/apple_4_wood.bin differ diff --git a/src/platform/kpi_rover_worlds/assets/models/apple_4/apple_4_wood.gltf b/src/platform/kpi_rover_worlds/assets/models/apple_4/apple_4_wood.gltf new file mode 100644 index 0000000..fd52417 --- /dev/null +++ b/src/platform/kpi_rover_worlds/assets/models/apple_4/apple_4_wood.gltf @@ -0,0 +1 @@ +{"asset": {"version": "2.0", "generator": "kpi_rover garden"}, "scene": 0, "scenes": [{"nodes": [0]}], "nodes": [{"mesh": 0, "name": "mesh"}], "meshes": [{"name": "mesh", "primitives": [{"attributes": {"POSITION": 0, "NORMAL": 1, "TEXCOORD_0": 2}, "indices": 3}]}], "accessors": [{"bufferView": 0, "componentType": 5126, "count": 21408, "type": "VEC3", "min": [-2.156507968902588, -2.0378737449645996, 0.0], "max": [1.7691282033920288, 2.1803479194641113, 3.817211866378784]}, {"bufferView": 1, "componentType": 5126, "count": 21408, "type": "VEC3"}, {"bufferView": 2, "componentType": 5126, "count": 21408, "type": "VEC2"}, {"bufferView": 3, "componentType": 5125, "count": 21408, "type": "SCALAR"}], "bufferViews": [{"buffer": 0, "byteOffset": 0, "byteLength": 256896, "target": 34962}, {"buffer": 0, "byteOffset": 256896, "byteLength": 256896, "target": 34962}, {"buffer": 0, "byteOffset": 513792, "byteLength": 171264, "target": 34962}, {"buffer": 0, "byteOffset": 685056, "byteLength": 85632, "target": 34963}], "buffers": [{"uri": "apple_4_wood.bin", "byteLength": 770688}]} \ No newline at end of file diff --git a/src/platform/kpi_rover_worlds/assets/models/apple_leaves/apple_clusters.png b/src/platform/kpi_rover_worlds/assets/models/apple_leaves/apple_clusters.png new file mode 100644 index 0000000..2c0b944 Binary files /dev/null and b/src/platform/kpi_rover_worlds/assets/models/apple_leaves/apple_clusters.png differ diff --git a/src/platform/kpi_rover_worlds/assets/models/can_rusted/can_rusted.bin b/src/platform/kpi_rover_worlds/assets/models/can_rusted/can_rusted.bin new file mode 100644 index 0000000..14f0375 Binary files /dev/null and b/src/platform/kpi_rover_worlds/assets/models/can_rusted/can_rusted.bin differ diff --git a/src/platform/kpi_rover_worlds/assets/models/can_rusted/can_rusted.gltf b/src/platform/kpi_rover_worlds/assets/models/can_rusted/can_rusted.gltf new file mode 100644 index 0000000..14f38d3 --- /dev/null +++ b/src/platform/kpi_rover_worlds/assets/models/can_rusted/can_rusted.gltf @@ -0,0 +1 @@ +{"asset": {"generator": "Khronos glTF Blender I/O v3.3.32", "version": "2.0"}, "scene": 0, "scenes": [{"name": "Scene", "nodes": [0]}], "nodes": [{"mesh": 0, "name": "can_rusted"}], "materials": [{"doubleSided": true, "name": "can_rusted", "normalTexture": {"index": 0}, "pbrMetallicRoughness": {"baseColorTexture": {"index": 1}, "metallicRoughnessTexture": {"index": 2}}}], "meshes": [{"name": "rusty_can_01", "primitives": [{"attributes": {"POSITION": 0, "NORMAL": 1, "TEXCOORD_0": 2, "TEXCOORD_1": 3}, "indices": 4, "material": 0}]}], "textures": [{"sampler": 0, "source": 0}, {"sampler": 0, "source": 1}, {"sampler": 0, "source": 2}], "images": [{"mimeType": "image/jpeg", "name": "can_rusted_nor_gl", "uri": "textures/can_rusted_nor_gl_512.jpg"}, {"mimeType": "image/jpeg", "name": "can_rusted_diff", "uri": "textures/can_rusted_diff_512.jpg"}, {"mimeType": "image/jpeg", "name": "can_rusted_metal-can_rusted_rough", "uri": "textures/can_rusted_arm_512.jpg"}], "accessors": [{"bufferView": 0, "componentType": 5126, "count": 1908, "max": [0.06251539289951324, 0.150177001953125, 0.06328438967466354], "min": [-0.0620175339281559, -0.0012007831828668714, -0.061391331255435944], "type": "VEC3"}, {"bufferView": 1, "componentType": 5126, "count": 1908, "type": "VEC3"}, {"bufferView": 2, "componentType": 5126, "count": 1908, "type": "VEC2"}, {"bufferView": 3, "componentType": 5126, "count": 1908, "type": "VEC2"}, {"bufferView": 4, "componentType": 5123, "count": 10560, "type": "SCALAR"}], "bufferViews": [{"buffer": 0, "byteLength": 22896, "byteOffset": 0, "target": 34962}, {"buffer": 0, "byteLength": 22896, "byteOffset": 22896, "target": 34962}, {"buffer": 0, "byteLength": 15264, "byteOffset": 45792, "target": 34962}, {"buffer": 0, "byteLength": 15264, "byteOffset": 61056, "target": 34962}, {"buffer": 0, "byteLength": 21120, "byteOffset": 76320, "target": 34963}], "samplers": [{"magFilter": 9729, "minFilter": 9987}], "buffers": [{"byteLength": 97440, "uri": "can_rusted.bin"}]} \ No newline at end of file diff --git a/src/platform/kpi_rover_worlds/assets/models/can_rusted/textures/can_rusted_arm_512.jpg b/src/platform/kpi_rover_worlds/assets/models/can_rusted/textures/can_rusted_arm_512.jpg new file mode 100644 index 0000000..62ef799 Binary files /dev/null and b/src/platform/kpi_rover_worlds/assets/models/can_rusted/textures/can_rusted_arm_512.jpg differ diff --git a/src/platform/kpi_rover_worlds/assets/models/can_rusted/textures/can_rusted_diff_512.jpg b/src/platform/kpi_rover_worlds/assets/models/can_rusted/textures/can_rusted_diff_512.jpg new file mode 100644 index 0000000..2e6ea7f Binary files /dev/null and b/src/platform/kpi_rover_worlds/assets/models/can_rusted/textures/can_rusted_diff_512.jpg differ diff --git a/src/platform/kpi_rover_worlds/assets/models/can_rusted/textures/can_rusted_nor_gl_512.jpg b/src/platform/kpi_rover_worlds/assets/models/can_rusted/textures/can_rusted_nor_gl_512.jpg new file mode 100644 index 0000000..0610b93 Binary files /dev/null and b/src/platform/kpi_rover_worlds/assets/models/can_rusted/textures/can_rusted_nor_gl_512.jpg differ diff --git a/src/platform/kpi_rover_worlds/assets/models/cardboard_box_01/cardboard_box_01.bin b/src/platform/kpi_rover_worlds/assets/models/cardboard_box_01/cardboard_box_01.bin new file mode 100644 index 0000000..0062fa2 Binary files /dev/null and b/src/platform/kpi_rover_worlds/assets/models/cardboard_box_01/cardboard_box_01.bin differ diff --git a/src/platform/kpi_rover_worlds/assets/models/cardboard_box_01/cardboard_box_01.gltf b/src/platform/kpi_rover_worlds/assets/models/cardboard_box_01/cardboard_box_01.gltf new file mode 100644 index 0000000..91d32c2 --- /dev/null +++ b/src/platform/kpi_rover_worlds/assets/models/cardboard_box_01/cardboard_box_01.gltf @@ -0,0 +1 @@ +{"asset": {"generator": "Khronos glTF Blender I/O v3.3.32", "version": "2.0"}, "scene": 0, "scenes": [{"name": "Scene", "nodes": [0]}], "nodes": [{"mesh": 0, "name": "cardboard_box_01", "translation": [0, 0.17664676904678345, 0]}], "materials": [{"doubleSided": true, "name": "cardboard_box_01", "normalTexture": {"index": 0}, "pbrMetallicRoughness": {"baseColorTexture": {"index": 1}, "metallicFactor": 0, "metallicRoughnessTexture": {"index": 2}}}], "meshes": [{"name": "cardboard_box_01", "primitives": [{"attributes": {"POSITION": 0, "NORMAL": 1, "TEXCOORD_0": 2}, "indices": 3, "material": 0}]}], "textures": [{"sampler": 0, "source": 0}, {"sampler": 0, "source": 1}, {"sampler": 0, "source": 2}], "images": [{"mimeType": "image/jpeg", "name": "cardboard_box_01_nor_gl", "uri": "textures/cardboard_box_01_nor_gl_512.jpg"}, {"mimeType": "image/jpeg", "name": "cardboard_box_01_diff", "uri": "textures/cardboard_box_01_diff_512.jpg"}, {"mimeType": "image/jpeg", "name": "cardboard_box_01_rough", "uri": "textures/cardboard_box_01_arm_512.jpg"}], "accessors": [{"bufferView": 0, "componentType": 5126, "count": 8757, "max": [0.19451794028282166, 0.1583968549966812, 0.2907867133617401], "min": [-0.19250565767288208, -0.18340270221233368, -0.22508370876312256], "type": "VEC3"}, {"bufferView": 1, "componentType": 5126, "count": 8757, "type": "VEC3"}, {"bufferView": 2, "componentType": 5126, "count": 8757, "type": "VEC2"}, {"bufferView": 3, "componentType": 5123, "count": 50856, "type": "SCALAR"}], "bufferViews": [{"buffer": 0, "byteLength": 105084, "byteOffset": 0, "target": 34962}, {"buffer": 0, "byteLength": 105084, "byteOffset": 105084, "target": 34962}, {"buffer": 0, "byteLength": 70056, "byteOffset": 210168, "target": 34962}, {"buffer": 0, "byteLength": 101712, "byteOffset": 280224, "target": 34963}], "samplers": [{"magFilter": 9729, "minFilter": 9987}], "buffers": [{"byteLength": 381936, "uri": "cardboard_box_01.bin"}]} \ No newline at end of file diff --git a/src/platform/kpi_rover_worlds/assets/models/cardboard_box_01/textures/cardboard_box_01_arm_512.jpg b/src/platform/kpi_rover_worlds/assets/models/cardboard_box_01/textures/cardboard_box_01_arm_512.jpg new file mode 100644 index 0000000..e571e28 Binary files /dev/null and b/src/platform/kpi_rover_worlds/assets/models/cardboard_box_01/textures/cardboard_box_01_arm_512.jpg differ diff --git a/src/platform/kpi_rover_worlds/assets/models/cardboard_box_01/textures/cardboard_box_01_diff_512.jpg b/src/platform/kpi_rover_worlds/assets/models/cardboard_box_01/textures/cardboard_box_01_diff_512.jpg new file mode 100644 index 0000000..094503e Binary files /dev/null and b/src/platform/kpi_rover_worlds/assets/models/cardboard_box_01/textures/cardboard_box_01_diff_512.jpg differ diff --git a/src/platform/kpi_rover_worlds/assets/models/cardboard_box_01/textures/cardboard_box_01_nor_gl_512.jpg b/src/platform/kpi_rover_worlds/assets/models/cardboard_box_01/textures/cardboard_box_01_nor_gl_512.jpg new file mode 100644 index 0000000..64f8829 Binary files /dev/null and b/src/platform/kpi_rover_worlds/assets/models/cardboard_box_01/textures/cardboard_box_01_nor_gl_512.jpg differ diff --git a/src/platform/kpi_rover_worlds/assets/models/cement_bag/cement_bag.bin b/src/platform/kpi_rover_worlds/assets/models/cement_bag/cement_bag.bin new file mode 100644 index 0000000..781f4dc Binary files /dev/null and b/src/platform/kpi_rover_worlds/assets/models/cement_bag/cement_bag.bin differ diff --git a/src/platform/kpi_rover_worlds/assets/models/cement_bag/cement_bag.gltf b/src/platform/kpi_rover_worlds/assets/models/cement_bag/cement_bag.gltf new file mode 100644 index 0000000..f9946e6 --- /dev/null +++ b/src/platform/kpi_rover_worlds/assets/models/cement_bag/cement_bag.gltf @@ -0,0 +1 @@ +{"asset": {"generator": "Khronos glTF Blender I/O v5.1.20", "version": "2.0"}, "scene": 0, "scenes": [{"name": "Scene", "nodes": [0]}], "nodes": [{"mesh": 0, "name": "cement_bag"}], "materials": [{"doubleSided": true, "name": "cement_bag", "normalTexture": {"index": 0}, "pbrMetallicRoughness": {"baseColorTexture": {"index": 1}, "metallicFactor": 0, "metallicRoughnessTexture": {"index": 2}}}], "meshes": [{"name": "cement_bag", "primitives": [{"attributes": {"POSITION": 0, "NORMAL": 1, "TEXCOORD_0": 2}, "indices": 3, "material": 0}]}], "textures": [{"sampler": 0, "source": 0}, {"sampler": 0, "source": 1}, {"sampler": 0, "source": 2}], "images": [{"mimeType": "image/jpeg", "name": "cement_bag_nor_gl", "uri": "textures/cement_bag_nor_gl_512.jpg"}, {"mimeType": "image/jpeg", "name": "cement_bag_diff", "uri": "textures/cement_bag_diff_512.jpg"}, {"mimeType": "image/jpeg", "name": "cement_bag_rough", "uri": "textures/cement_bag_arm_512.jpg"}], "accessors": [{"bufferView": 0, "componentType": 5126, "count": 538, "max": [0.23361928761005402, 0.1811952143907547, 0.35138440132141113], "min": [-0.22885453701019287, 0.0012853443622589111, -0.348199725151062], "type": "VEC3"}, {"bufferView": 1, "componentType": 5126, "count": 538, "type": "VEC3"}, {"bufferView": 2, "componentType": 5126, "count": 538, "type": "VEC2"}, {"bufferView": 3, "componentType": 5123, "count": 2532, "type": "SCALAR"}], "bufferViews": [{"buffer": 0, "byteLength": 6456, "byteOffset": 0, "target": 34962}, {"buffer": 0, "byteLength": 6456, "byteOffset": 6456, "target": 34962}, {"buffer": 0, "byteLength": 4304, "byteOffset": 12912, "target": 34962}, {"buffer": 0, "byteLength": 5064, "byteOffset": 17216, "target": 34963}], "samplers": [{"magFilter": 9729, "minFilter": 9987}], "buffers": [{"byteLength": 22280, "uri": "cement_bag.bin"}]} \ No newline at end of file diff --git a/src/platform/kpi_rover_worlds/assets/models/cement_bag/textures/cement_bag_arm_512.jpg b/src/platform/kpi_rover_worlds/assets/models/cement_bag/textures/cement_bag_arm_512.jpg new file mode 100644 index 0000000..127f71c Binary files /dev/null and b/src/platform/kpi_rover_worlds/assets/models/cement_bag/textures/cement_bag_arm_512.jpg differ diff --git a/src/platform/kpi_rover_worlds/assets/models/cement_bag/textures/cement_bag_diff_512.jpg b/src/platform/kpi_rover_worlds/assets/models/cement_bag/textures/cement_bag_diff_512.jpg new file mode 100644 index 0000000..2371209 Binary files /dev/null and b/src/platform/kpi_rover_worlds/assets/models/cement_bag/textures/cement_bag_diff_512.jpg differ diff --git a/src/platform/kpi_rover_worlds/assets/models/cement_bag/textures/cement_bag_nor_gl_512.jpg b/src/platform/kpi_rover_worlds/assets/models/cement_bag/textures/cement_bag_nor_gl_512.jpg new file mode 100644 index 0000000..bd01c3c Binary files /dev/null and b/src/platform/kpi_rover_worlds/assets/models/cement_bag/textures/cement_bag_nor_gl_512.jpg differ diff --git a/src/platform/kpi_rover_worlds/assets/models/grass_cards/grass_cards.png b/src/platform/kpi_rover_worlds/assets/models/grass_cards/grass_cards.png new file mode 100644 index 0000000..162ca30 Binary files /dev/null and b/src/platform/kpi_rover_worlds/assets/models/grass_cards/grass_cards.png differ diff --git a/src/platform/kpi_rover_worlds/assets/models/grass_cards/grass_cards.yaml b/src/platform/kpi_rover_worlds/assets/models/grass_cards/grass_cards.yaml new file mode 100644 index 0000000..464971d --- /dev/null +++ b/src/platform/kpi_rover_worlds/assets/models/grass_cards/grass_cards.yaml @@ -0,0 +1,209 @@ +# Sprites of grass_cards.png: name, real width and height (m), uv: left, top, right, bottom. +- name: dandelion_01__dandelion_01_a_LOD0 + width: 0.219 + height: 0.164 + uv: [0.25391, 0.38086, 0.37891, 0.47412] +- name: dandelion_01__dandelion_01_b_LOD0 + width: 0.201 + height: 0.113 + uv: [0.12695, 0.47656, 0.25195, 0.54688] +- name: dandelion_01__dandelion_01_c_LOD0 + width: 0.169 + height: 0.1 + uv: [0.0, 0.47656, 0.125, 0.55078] +- name: grass_bermuda_01__grass_bermuda_01_medium_a + width: 0.036 + height: 0.09 + uv: [0.0, 0.0, 0.05029, 0.125] +- name: grass_bermuda_01__grass_bermuda_01_medium_b + width: 0.048 + height: 0.07 + uv: [0.05225, 0.0, 0.13721, 0.125] +- name: grass_bermuda_01__grass_bermuda_01_medium_c + width: 0.053 + height: 0.063 + uv: [0.13916, 0.0, 0.24414, 0.125] +- name: grass_bermuda_01__grass_bermuda_01_medium_d + width: 0.049 + height: 0.093 + uv: [0.24609, 0.0, 0.31152, 0.125] +- name: grass_bermuda_01__grass_bermuda_01_medium_e + width: 0.06 + height: 0.078 + uv: [0.31348, 0.0, 0.40918, 0.125] +- name: grass_bermuda_01__grass_bermuda_01_medium_f + width: 0.035 + height: 0.106 + uv: [0.41113, 0.0, 0.45264, 0.125] +- name: grass_bermuda_01__grass_bermuda_01_seedling_a + width: 0.065 + height: 0.15 + uv: [0.45459, 0.0, 0.50879, 0.125] +- name: grass_bermuda_01__grass_bermuda_01_seedling_b + width: 0.069 + height: 0.127 + uv: [0.51074, 0.0, 0.57861, 0.125] +- name: grass_bermuda_01__grass_bermuda_01_seedling_c + width: 0.036 + height: 0.092 + uv: [0.1084, 0.25391, 0.15674, 0.37842] +- name: grass_bermuda_01__grass_bermuda_01_seedling_d + width: 0.063 + height: 0.15 + uv: [0.58057, 0.0, 0.63281, 0.125] +- name: grass_bermuda_01__grass_bermuda_01_single_a + width: 0.004 + height: 0.149 + uv: [0.63477, 0.0, 0.6377, 0.125] +- name: grass_bermuda_01__grass_bermuda_01_single_b + width: 0.004 + height: 0.149 + uv: [0.63965, 0.0, 0.64258, 0.125] +- name: grass_bermuda_01__grass_bermuda_01_small_e + width: 0.024 + height: 0.082 + uv: [0.64453, 0.0, 0.68115, 0.125] +- name: grass_bermuda_01__grass_bermuda_01_small_f + width: 0.032 + height: 0.065 + uv: [0.68311, 0.0, 0.74414, 0.125] +- name: grass_medium_01__grass_medium_01_large_a_LOD0 + width: 0.314 + height: 0.144 + uv: [0.50781, 0.47656, 0.63281, 0.53369] +- name: grass_medium_01__grass_medium_01_large_b_LOD0 + width: 0.277 + height: 0.166 + uv: [0.38086, 0.38086, 0.50586, 0.45557] +- name: grass_medium_01__grass_medium_01_large_c_LOD0 + width: 0.275 + height: 0.139 + uv: [0.25391, 0.47656, 0.37891, 0.53955] +- name: grass_medium_01__grass_medium_01_mid_a_LOD0 + width: 0.211 + height: 0.213 + uv: [0.74609, 0.0, 0.87012, 0.125] +- name: grass_medium_01__grass_medium_01_mid_b_LOD0 + width: 0.182 + height: 0.177 + uv: [0.39355, 0.25391, 0.51855, 0.375] +- name: grass_medium_01__grass_medium_01_mid_c_LOD0 + width: 0.189 + height: 0.142 + uv: [0.0, 0.38086, 0.125, 0.47461] +- name: grass_medium_01__grass_medium_01_small_a_LOD0 + width: 0.158 + height: 0.138 + uv: [0.64746, 0.25391, 0.77246, 0.36279] +- name: grass_medium_01__grass_medium_01_small_b_LOD0 + width: 0.163 + height: 0.098 + uv: [0.50781, 0.38086, 0.63281, 0.45557] +- name: grass_medium_01__grass_medium_01_tall_a_LOD0 + width: 0.139 + height: 0.304 + uv: [0.87207, 0.0, 0.92871, 0.125] +- name: grass_medium_01__grass_medium_01_tall_b_LOD0 + width: 0.147 + height: 0.28 + uv: [0.93066, 0.0, 0.99609, 0.125] +- name: grass_medium_01__grass_medium_01_tall_c_LOD0 + width: 0.146 + height: 0.233 + uv: [0.0, 0.12695, 0.07812, 0.25195] +- name: grass_medium_01__grass_medium_01_tiny_a_LOD0 + width: 0.065 + height: 0.111 + uv: [0.08008, 0.12695, 0.15332, 0.25195] +- name: grass_medium_01__grass_medium_01_tiny_b_LOD0 + width: 0.023 + height: 0.06 + uv: [0.15527, 0.12695, 0.20312, 0.25195] +- name: grass_medium_01__grass_medium_01_tiny_c_LOD0 + width: 0.015 + height: 0.081 + uv: [0.20508, 0.12695, 0.22754, 0.25195] +- name: grass_medium_01_dry__grass_medium_01_large_a_LOD0 + width: 0.314 + height: 0.144 + uv: [0.63477, 0.47656, 0.75977, 0.53369] +- name: grass_medium_01_dry__grass_medium_01_large_b_LOD0 + width: 0.277 + height: 0.166 + uv: [0.63477, 0.38086, 0.75977, 0.45557] +- name: grass_medium_01_dry__grass_medium_01_large_c_LOD0 + width: 0.275 + height: 0.139 + uv: [0.38086, 0.47656, 0.50586, 0.53955] +- name: grass_medium_01_dry__grass_medium_01_mid_a_LOD0 + width: 0.211 + height: 0.213 + uv: [0.22949, 0.12695, 0.35352, 0.25195] +- name: grass_medium_01_dry__grass_medium_01_mid_b_LOD0 + width: 0.182 + height: 0.177 + uv: [0.52051, 0.25391, 0.64551, 0.375] +- name: grass_medium_01_dry__grass_medium_01_mid_c_LOD0 + width: 0.189 + height: 0.142 + uv: [0.12695, 0.38086, 0.25195, 0.47461] +- name: grass_medium_01_dry__grass_medium_01_small_a_LOD0 + width: 0.158 + height: 0.138 + uv: [0.77441, 0.25391, 0.89941, 0.36279] +- name: grass_medium_01_dry__grass_medium_01_small_b_LOD0 + width: 0.163 + height: 0.098 + uv: [0.76172, 0.38086, 0.88672, 0.45557] +- name: grass_medium_01_dry__grass_medium_01_tall_a_LOD0 + width: 0.139 + height: 0.304 + uv: [0.35547, 0.12695, 0.41211, 0.25195] +- name: grass_medium_01_dry__grass_medium_01_tall_b_LOD0 + width: 0.147 + height: 0.28 + uv: [0.41406, 0.12695, 0.47949, 0.25195] +- name: grass_medium_01_dry__grass_medium_01_tall_c_LOD0 + width: 0.146 + height: 0.233 + uv: [0.48145, 0.12695, 0.55957, 0.25195] +- name: grass_medium_01_dry__grass_medium_01_tiny_a_LOD0 + width: 0.065 + height: 0.111 + uv: [0.56152, 0.12695, 0.63477, 0.25195] +- name: grass_medium_01_dry__grass_medium_01_tiny_b_LOD0 + width: 0.023 + height: 0.06 + uv: [0.63672, 0.12695, 0.68457, 0.25195] +- name: grass_medium_01_dry__grass_medium_01_tiny_c_LOD0 + width: 0.015 + height: 0.081 + uv: [0.68652, 0.12695, 0.70898, 0.25195] +- name: grass_medium_02__grass_medium_02_a + width: 0.113 + height: 0.132 + uv: [0.71094, 0.12695, 0.81836, 0.25195] +- name: grass_medium_02__grass_medium_02_b + width: 0.178 + height: 0.175 + uv: [0.2666, 0.25391, 0.3916, 0.37646] +- name: grass_medium_02__grass_medium_02_c + width: 0.193 + height: 0.228 + uv: [0.15869, 0.25391, 0.26465, 0.37842] +- name: grass_medium_02__grass_medium_02_d + width: 0.254 + height: 0.257 + uv: [0.82031, 0.12695, 0.94385, 0.25195] +- name: grass_medium_02__grass_medium_02_e + width: 0.34 + height: 0.398 + uv: [0.0, 0.25391, 0.10645, 0.37891] +- name: weed_plant_02__weed_plant_02_a_LOD0 + width: 0.217 + height: 0.071 + uv: [0.0, 0.55273, 0.125, 0.59375] +- name: weed_plant_02__weed_plant_02_b_LOD0 + width: 0.185 + height: 0.067 + uv: [0.76172, 0.47656, 0.88672, 0.52148] diff --git a/src/platform/kpi_rover_worlds/assets/models/medical_box/medical_box.bin b/src/platform/kpi_rover_worlds/assets/models/medical_box/medical_box.bin new file mode 100644 index 0000000..6a77479 Binary files /dev/null and b/src/platform/kpi_rover_worlds/assets/models/medical_box/medical_box.bin differ diff --git a/src/platform/kpi_rover_worlds/assets/models/medical_box/medical_box.gltf b/src/platform/kpi_rover_worlds/assets/models/medical_box/medical_box.gltf new file mode 100644 index 0000000..e52cec0 --- /dev/null +++ b/src/platform/kpi_rover_worlds/assets/models/medical_box/medical_box.gltf @@ -0,0 +1 @@ +{"asset": {"generator": "Khronos glTF Blender I/O v5.1.20", "version": "2.0"}, "scene": 0, "scenes": [{"name": "Scene", "nodes": [0, 1, 2, 3, 4]}], "nodes": [{"mesh": 0, "name": "medical_box_latch", "translation": [0, 0.05740829184651375, 0.16993090510368347]}, {"mesh": 1, "name": "medical_box_latch_rings", "translation": [0, 0.03510414808988571, 0.17115692794322968]}, {"mesh": 2, "name": "medical_box_lid", "translation": [0, 0.06554923951625824, -0.16924864053726196]}, {"mesh": 3, "name": "medical_box"}, {"mesh": 4, "name": "medical_box_handle", "translation": [0, 0.04422575235366821, 0.1691111922264099]}], "materials": [{"doubleSided": true, "name": "medical_box", "normalTexture": {"index": 0}, "pbrMetallicRoughness": {"baseColorTexture": {"index": 1}, "metallicRoughnessTexture": {"index": 2}}}], "meshes": [{"name": "Cylinder.007", "primitives": [{"attributes": {"POSITION": 0, "NORMAL": 1, "TEXCOORD_0": 2}, "indices": 3, "material": 0}]}, {"name": "Circle.005", "primitives": [{"attributes": {"POSITION": 4, "NORMAL": 5, "TEXCOORD_0": 6}, "indices": 7, "material": 0}]}, {"name": "Plane.002", "primitives": [{"attributes": {"POSITION": 8, "NORMAL": 9, "TEXCOORD_0": 10}, "indices": 11, "material": 0}]}, {"name": "Plane", "primitives": [{"attributes": {"POSITION": 12, "NORMAL": 13, "TEXCOORD_0": 14}, "indices": 15, "material": 0}]}, {"name": "Plane.001", "primitives": [{"attributes": {"POSITION": 16, "NORMAL": 17, "TEXCOORD_0": 18}, "indices": 19, "material": 0}]}], "textures": [{"sampler": 0, "source": 0}, {"sampler": 0, "source": 1}, {"sampler": 0, "source": 2}], "images": [{"mimeType": "image/jpeg", "name": "medical_box_nor_gl", "uri": "textures/medical_box_nor_gl_512.jpg"}, {"mimeType": "image/jpeg", "name": "medical_box_diff", "uri": "textures/medical_box_diff_512.jpg"}, {"mimeType": "image/jpeg", "name": "medical_box_metal-medical_box_rough", "uri": "textures/medical_box_arm_512.jpg"}], "accessors": [{"bufferView": 0, "componentType": 5126, "count": 780, "max": [0.17246168851852417, 0.0033796154893934727, 0.003937479108572006], "min": [-0.17246168851852417, -0.04141842946410179, -0.003331138286739588], "type": "VEC3"}, {"bufferView": 1, "componentType": 5126, "count": 780, "type": "VEC3"}, {"bufferView": 2, "componentType": 5126, "count": 780, "type": "VEC2"}, {"bufferView": 3, "componentType": 5123, "count": 2520, "type": "SCALAR"}, {"bufferView": 4, "componentType": 5126, "count": 308, "max": [0.17612716555595398, 0.03215055912733078, 0.0037464387714862823], "min": [-0.1761271357536316, -0.000991286477074027, -0.0009492921526543796], "type": "VEC3"}, {"bufferView": 5, "componentType": 5126, "count": 308, "type": "VEC3"}, {"bufferView": 6, "componentType": 5126, "count": 308, "type": "VEC2"}, {"bufferView": 7, "componentType": 5123, "count": 1296, "type": "SCALAR"}, {"bufferView": 8, "componentType": 5126, "count": 844, "max": [0.26274073123931885, 0.031962908804416656, 0.3471660315990448], "min": [-0.26274073123931885, -0.0013234559446573257, 7.864832878112793e-05], "type": "VEC3"}, {"bufferView": 9, "componentType": 5126, "count": 844, "type": "VEC3"}, {"bufferView": 10, "componentType": 5126, "count": 844, "type": "VEC2"}, {"bufferView": 11, "componentType": 5123, "count": 2820, "type": "SCALAR"}, {"bufferView": 12, "componentType": 5126, "count": 1216, "max": [0.25836989283561707, 0.07818616926670074, 0.17187944054603577], "min": [-0.25836989283561707, 0, -0.1722518801689148], "type": "VEC3"}, {"bufferView": 13, "componentType": 5126, "count": 1216, "type": "VEC3"}, {"bufferView": 14, "componentType": 5126, "count": 1216, "type": "VEC2"}, {"bufferView": 15, "componentType": 5123, "count": 3870, "type": "SCALAR"}, {"bufferView": 16, "componentType": 5126, "count": 154, "max": [0.08127199113368988, 0.0018050603102892637, 0.0022361623123288155], "min": [-0.08127199113368988, -0.03967483341693878, -0.0022223254200071096], "type": "VEC3"}, {"bufferView": 17, "componentType": 5126, "count": 154, "type": "VEC3"}, {"bufferView": 18, "componentType": 5126, "count": 154, "type": "VEC2"}, {"bufferView": 19, "componentType": 5123, "count": 648, "type": "SCALAR"}], "bufferViews": [{"buffer": 0, "byteLength": 9360, "byteOffset": 0, "target": 34962}, {"buffer": 0, "byteLength": 9360, "byteOffset": 9360, "target": 34962}, {"buffer": 0, "byteLength": 6240, "byteOffset": 18720, "target": 34962}, {"buffer": 0, "byteLength": 5040, "byteOffset": 24960, "target": 34963}, {"buffer": 0, "byteLength": 3696, "byteOffset": 30000, "target": 34962}, {"buffer": 0, "byteLength": 3696, "byteOffset": 33696, "target": 34962}, {"buffer": 0, "byteLength": 2464, "byteOffset": 37392, "target": 34962}, {"buffer": 0, "byteLength": 2592, "byteOffset": 39856, "target": 34963}, {"buffer": 0, "byteLength": 10128, "byteOffset": 42448, "target": 34962}, {"buffer": 0, "byteLength": 10128, "byteOffset": 52576, "target": 34962}, {"buffer": 0, "byteLength": 6752, "byteOffset": 62704, "target": 34962}, {"buffer": 0, "byteLength": 5640, "byteOffset": 69456, "target": 34963}, {"buffer": 0, "byteLength": 14592, "byteOffset": 75096, "target": 34962}, {"buffer": 0, "byteLength": 14592, "byteOffset": 89688, "target": 34962}, {"buffer": 0, "byteLength": 9728, "byteOffset": 104280, "target": 34962}, {"buffer": 0, "byteLength": 7740, "byteOffset": 114008, "target": 34963}, {"buffer": 0, "byteLength": 1848, "byteOffset": 121748, "target": 34962}, {"buffer": 0, "byteLength": 1848, "byteOffset": 123596, "target": 34962}, {"buffer": 0, "byteLength": 1232, "byteOffset": 125444, "target": 34962}, {"buffer": 0, "byteLength": 1296, "byteOffset": 126676, "target": 34963}], "samplers": [{"magFilter": 9729, "minFilter": 9987}], "buffers": [{"byteLength": 127972, "uri": "medical_box.bin"}]} \ No newline at end of file diff --git a/src/platform/kpi_rover_worlds/assets/models/medical_box/textures/medical_box_arm_512.jpg b/src/platform/kpi_rover_worlds/assets/models/medical_box/textures/medical_box_arm_512.jpg new file mode 100644 index 0000000..429988f Binary files /dev/null and b/src/platform/kpi_rover_worlds/assets/models/medical_box/textures/medical_box_arm_512.jpg differ diff --git a/src/platform/kpi_rover_worlds/assets/models/medical_box/textures/medical_box_diff_512.jpg b/src/platform/kpi_rover_worlds/assets/models/medical_box/textures/medical_box_diff_512.jpg new file mode 100644 index 0000000..9d6afee Binary files /dev/null and b/src/platform/kpi_rover_worlds/assets/models/medical_box/textures/medical_box_diff_512.jpg differ diff --git a/src/platform/kpi_rover_worlds/assets/models/medical_box/textures/medical_box_nor_gl_512.jpg b/src/platform/kpi_rover_worlds/assets/models/medical_box/textures/medical_box_nor_gl_512.jpg new file mode 100644 index 0000000..3f9d20b Binary files /dev/null and b/src/platform/kpi_rover_worlds/assets/models/medical_box/textures/medical_box_nor_gl_512.jpg differ diff --git a/src/platform/kpi_rover_worlds/assets/models/metal_toolbox/metal_toolbox.bin b/src/platform/kpi_rover_worlds/assets/models/metal_toolbox/metal_toolbox.bin new file mode 100644 index 0000000..c0fda2f Binary files /dev/null and b/src/platform/kpi_rover_worlds/assets/models/metal_toolbox/metal_toolbox.bin differ diff --git a/src/platform/kpi_rover_worlds/assets/models/metal_toolbox/metal_toolbox.gltf b/src/platform/kpi_rover_worlds/assets/models/metal_toolbox/metal_toolbox.gltf new file mode 100644 index 0000000..eb9fdc2 --- /dev/null +++ b/src/platform/kpi_rover_worlds/assets/models/metal_toolbox/metal_toolbox.gltf @@ -0,0 +1 @@ +{"asset": {"generator": "Khronos glTF Blender I/O v5.1.19", "version": "2.0"}, "scene": 0, "scenes": [{"name": "Scene", "nodes": [0, 1, 5]}], "nodes": [{"mesh": 0, "name": "metal_toolbox", "translation": [-0.0001489296555519104, 0.0006703957915306091, 0]}, {"mesh": 1, "name": "metal_toolbox_tray", "translation": [0, 0.15213841199874878, 0]}, {"mesh": 2, "name": "metal_toolbox_handle", "translation": [0, 0.08566431701183319, 0.1030561551451683]}, {"mesh": 3, "name": "metal_toolbox_handle_latch_l", "translation": [-0.11792459338903427, 0.00807546079158783, 0.20997348427772522]}, {"mesh": 4, "name": "metal_toolbox_handle_latch_r", "translation": [0.11794313043355942, 0.008075451478362083, 0.2103140950202942]}, {"children": [2, 3, 4], "mesh": 5, "name": "metal_toolbox_lid", "rotation": [-0.4733262360095978, 0, 0, 0.8808872103691101], "translation": [-9.275972843170166e-06, 0.1195942610502243, -0.10313405096530914]}], "materials": [{"doubleSided": true, "name": "metal_toolbox", "normalTexture": {"index": 0}, "pbrMetallicRoughness": {"baseColorTexture": {"index": 1}, "metallicRoughnessTexture": {"index": 2}}}], "meshes": [{"name": "Cube.012", "primitives": [{"attributes": {"POSITION": 0, "NORMAL": 1, "TEXCOORD_0": 2}, "indices": 3, "material": 0}]}, {"name": "Cube.013", "primitives": [{"attributes": {"POSITION": 4, "NORMAL": 5, "TEXCOORD_0": 6}, "indices": 7, "material": 0}]}, {"name": "Cylinder.021", "primitives": [{"attributes": {"POSITION": 8, "NORMAL": 9, "TEXCOORD_0": 10}, "indices": 11, "material": 0}]}, {"name": "Cylinder.003", "primitives": [{"attributes": {"POSITION": 12, "NORMAL": 13, "TEXCOORD_0": 14}, "indices": 15, "material": 0}]}, {"name": "Cylinder.006", "primitives": [{"attributes": {"POSITION": 16, "NORMAL": 17, "TEXCOORD_0": 18}, "indices": 19, "material": 0}]}, {"name": "Cylinder.015", "primitives": [{"attributes": {"POSITION": 20, "NORMAL": 21, "TEXCOORD_0": 22}, "indices": 23, "material": 0}]}], "textures": [{"sampler": 0, "source": 0}, {"sampler": 0, "source": 1}, {"sampler": 0, "source": 2}], "images": [{"mimeType": "image/jpeg", "name": "metal_toolbox_nor_gl", "uri": "textures/metal_toolbox_nor_gl_512.jpg"}, {"mimeType": "image/jpeg", "name": "metal_toolbox_diff", "uri": "textures/metal_toolbox_diff_512.jpg"}, {"mimeType": "image/jpeg", "name": "metal_toolbox_metal-metal_toolbox_rough", "uri": "textures/metal_toolbox_arm_512.jpg"}], "accessors": [{"bufferView": 0, "componentType": 5126, "count": 4083, "max": [0.20014899969100952, 0.12143678218126297, 0.11380399018526077], "min": [-0.1998511254787445, -0.0006703957915306091, -0.10565546154975891], "type": "VEC3"}, {"bufferView": 1, "componentType": 5126, "count": 4083, "type": "VEC3"}, {"bufferView": 2, "componentType": 5126, "count": 4083, "type": "VEC2"}, {"bufferView": 3, "componentType": 5123, "count": 11925, "type": "SCALAR"}, {"bufferView": 4, "componentType": 5126, "count": 170, "max": [0.19316866993904114, 0.035882994532585144, 0.09332501888275146], "min": [-0.19316866993904114, -0.05100996419787407, -0.09332501888275146], "type": "VEC3"}, {"bufferView": 5, "componentType": 5126, "count": 170, "type": "VEC3"}, {"bufferView": 6, "componentType": 5126, "count": 170, "type": "VEC2"}, {"bufferView": 7, "componentType": 5123, "count": 408, "type": "SCALAR"}, {"bufferView": 8, "componentType": 5126, "count": 2390, "max": [0.08826681226491928, 0.019392801448702812, 0.0019598049111664295], "min": [-0.08826681971549988, -0.00974997878074646, -0.04949367791414261], "type": "VEC3"}, {"bufferView": 9, "componentType": 5126, "count": 2390, "type": "VEC3"}, {"bufferView": 10, "componentType": 5126, "count": 2390, "type": "VEC2"}, {"bufferView": 11, "componentType": 5123, "count": 11046, "type": "SCALAR"}, {"bufferView": 12, "componentType": 5126, "count": 212, "max": [0.012720995582640171, 0.006732132285833359, 0.008262255229055882], "min": [-0.010982025414705276, -0.03917273133993149, -0.0016482406063005328], "type": "VEC3"}, {"bufferView": 13, "componentType": 5126, "count": 212, "type": "VEC3"}, {"bufferView": 14, "componentType": 5126, "count": 212, "type": "VEC2"}, {"bufferView": 15, "componentType": 5123, "count": 576, "type": "SCALAR"}, {"bufferView": 16, "componentType": 5126, "count": 212, "max": [0.013112541288137436, 0.006777667906135321, 0.007921606302261353], "min": [-0.01078210398554802, -0.03945206105709076, -0.001988873817026615], "type": "VEC3"}, {"bufferView": 17, "componentType": 5126, "count": 212, "type": "VEC3"}, {"bufferView": 18, "componentType": 5126, "count": 212, "type": "VEC2"}, {"bufferView": 19, "componentType": 5123, "count": 576, "type": "SCALAR"}, {"bufferView": 20, "componentType": 5126, "count": 4918, "max": [0.2000001221895218, 0.08869991451501846, 0.21412305533885956], "min": [-0.20000053942203522, -0.00255153002217412, -0.002580755390226841], "type": "VEC3"}, {"bufferView": 21, "componentType": 5126, "count": 4918, "type": "VEC3"}, {"bufferView": 22, "componentType": 5126, "count": 4918, "type": "VEC2"}, {"bufferView": 23, "componentType": 5123, "count": 18153, "type": "SCALAR"}], "bufferViews": [{"buffer": 0, "byteLength": 48996, "byteOffset": 0, "target": 34962}, {"buffer": 0, "byteLength": 48996, "byteOffset": 48996, "target": 34962}, {"buffer": 0, "byteLength": 32664, "byteOffset": 97992, "target": 34962}, {"buffer": 0, "byteLength": 23850, "byteOffset": 130656, "target": 34963}, {"buffer": 0, "byteLength": 2040, "byteOffset": 154508, "target": 34962}, {"buffer": 0, "byteLength": 2040, "byteOffset": 156548, "target": 34962}, {"buffer": 0, "byteLength": 1360, "byteOffset": 158588, "target": 34962}, {"buffer": 0, "byteLength": 816, "byteOffset": 159948, "target": 34963}, {"buffer": 0, "byteLength": 28680, "byteOffset": 160764, "target": 34962}, {"buffer": 0, "byteLength": 28680, "byteOffset": 189444, "target": 34962}, {"buffer": 0, "byteLength": 19120, "byteOffset": 218124, "target": 34962}, {"buffer": 0, "byteLength": 22092, "byteOffset": 237244, "target": 34963}, {"buffer": 0, "byteLength": 2544, "byteOffset": 259336, "target": 34962}, {"buffer": 0, "byteLength": 2544, "byteOffset": 261880, "target": 34962}, {"buffer": 0, "byteLength": 1696, "byteOffset": 264424, "target": 34962}, {"buffer": 0, "byteLength": 1152, "byteOffset": 266120, "target": 34963}, {"buffer": 0, "byteLength": 2544, "byteOffset": 267272, "target": 34962}, {"buffer": 0, "byteLength": 2544, "byteOffset": 269816, "target": 34962}, {"buffer": 0, "byteLength": 1696, "byteOffset": 272360, "target": 34962}, {"buffer": 0, "byteLength": 1152, "byteOffset": 274056, "target": 34963}, {"buffer": 0, "byteLength": 59016, "byteOffset": 275208, "target": 34962}, {"buffer": 0, "byteLength": 59016, "byteOffset": 334224, "target": 34962}, {"buffer": 0, "byteLength": 39344, "byteOffset": 393240, "target": 34962}, {"buffer": 0, "byteLength": 36306, "byteOffset": 432584, "target": 34963}], "samplers": [{"magFilter": 9729, "minFilter": 9987}], "buffers": [{"byteLength": 468892, "uri": "metal_toolbox.bin"}]} \ No newline at end of file diff --git a/src/platform/kpi_rover_worlds/assets/models/metal_toolbox/textures/metal_toolbox_arm_512.jpg b/src/platform/kpi_rover_worlds/assets/models/metal_toolbox/textures/metal_toolbox_arm_512.jpg new file mode 100644 index 0000000..0c416fd Binary files /dev/null and b/src/platform/kpi_rover_worlds/assets/models/metal_toolbox/textures/metal_toolbox_arm_512.jpg differ diff --git a/src/platform/kpi_rover_worlds/assets/models/metal_toolbox/textures/metal_toolbox_diff_512.jpg b/src/platform/kpi_rover_worlds/assets/models/metal_toolbox/textures/metal_toolbox_diff_512.jpg new file mode 100644 index 0000000..76dd12d Binary files /dev/null and b/src/platform/kpi_rover_worlds/assets/models/metal_toolbox/textures/metal_toolbox_diff_512.jpg differ diff --git a/src/platform/kpi_rover_worlds/assets/models/metal_toolbox/textures/metal_toolbox_nor_gl_512.jpg b/src/platform/kpi_rover_worlds/assets/models/metal_toolbox/textures/metal_toolbox_nor_gl_512.jpg new file mode 100644 index 0000000..7f01f7c Binary files /dev/null and b/src/platform/kpi_rover_worlds/assets/models/metal_toolbox/textures/metal_toolbox_nor_gl_512.jpg differ diff --git a/src/platform/kpi_rover_worlds/assets/models/oil_tin/oil_tin.bin b/src/platform/kpi_rover_worlds/assets/models/oil_tin/oil_tin.bin new file mode 100644 index 0000000..73c8903 Binary files /dev/null and b/src/platform/kpi_rover_worlds/assets/models/oil_tin/oil_tin.bin differ diff --git a/src/platform/kpi_rover_worlds/assets/models/oil_tin/oil_tin.gltf b/src/platform/kpi_rover_worlds/assets/models/oil_tin/oil_tin.gltf new file mode 100644 index 0000000..973e8b7 --- /dev/null +++ b/src/platform/kpi_rover_worlds/assets/models/oil_tin/oil_tin.gltf @@ -0,0 +1 @@ +{"asset": {"generator": "Khronos glTF Blender I/O v5.1.20", "version": "2.0"}, "scene": 0, "scenes": [{"name": "Scene", "nodes": [0, 1]}], "nodes": [{"mesh": 0, "name": "oil_tin"}, {"mesh": 1, "name": "oil_tin_handle", "translation": [-0.0014898735098540783, 0.19314929842948914, -0.0089885164052248]}], "materials": [{"doubleSided": true, "name": "oil_tin", "normalTexture": {"index": 0}, "pbrMetallicRoughness": {"baseColorTexture": {"index": 1}, "metallicRoughnessTexture": {"index": 2}}}], "meshes": [{"name": "Oilkanister_Body_low", "primitives": [{"attributes": {"POSITION": 0, "NORMAL": 1, "TEXCOORD_0": 2}, "indices": 3, "material": 0}]}, {"name": "Oilkanister_Handle_low", "primitives": [{"attributes": {"POSITION": 4, "NORMAL": 5, "TEXCOORD_0": 6}, "indices": 7, "material": 0}]}], "textures": [{"sampler": 0, "source": 0}, {"sampler": 0, "source": 1}, {"sampler": 0, "source": 2}], "images": [{"mimeType": "image/jpeg", "name": "oil_tin_nor_gl", "uri": "textures/oil_tin_nor_gl_512.jpg"}, {"mimeType": "image/jpeg", "name": "oil_tin_diff", "uri": "textures/oil_tin_diff_512.jpg"}, {"mimeType": "image/jpeg", "name": "oil_tin_metal-oil_tin_rough", "uri": "textures/oil_tin_arm_512.jpg"}], "accessors": [{"bufferView": 0, "componentType": 5126, "count": 1535, "max": [0.048009999096393585, 0.20463000237941742, 0.07553098350763321], "min": [-0.06671199947595596, -0.0007489951676689088, -0.07801400125026703], "type": "VEC3"}, {"bufferView": 1, "componentType": 5126, "count": 1535, "type": "VEC3"}, {"bufferView": 2, "componentType": 5126, "count": 1535, "type": "VEC2"}, {"bufferView": 3, "componentType": 5123, "count": 7266, "type": "SCALAR"}, {"bufferView": 4, "componentType": 5126, "count": 236, "max": [0.002549523953348398, 0.0058106123469769955, 0.03835447505116463], "min": [-0.036578357219696045, -0.0028220503591001034, -0.03796595707535744], "type": "VEC3"}, {"bufferView": 5, "componentType": 5126, "count": 236, "type": "VEC3"}, {"bufferView": 6, "componentType": 5126, "count": 236, "type": "VEC2"}, {"bufferView": 7, "componentType": 5123, "count": 1236, "type": "SCALAR"}], "bufferViews": [{"buffer": 0, "byteLength": 18420, "byteOffset": 0, "target": 34962}, {"buffer": 0, "byteLength": 18420, "byteOffset": 18420, "target": 34962}, {"buffer": 0, "byteLength": 12280, "byteOffset": 36840, "target": 34962}, {"buffer": 0, "byteLength": 14532, "byteOffset": 49120, "target": 34963}, {"buffer": 0, "byteLength": 2832, "byteOffset": 63652, "target": 34962}, {"buffer": 0, "byteLength": 2832, "byteOffset": 66484, "target": 34962}, {"buffer": 0, "byteLength": 1888, "byteOffset": 69316, "target": 34962}, {"buffer": 0, "byteLength": 2472, "byteOffset": 71204, "target": 34963}], "samplers": [{"magFilter": 9729, "minFilter": 9987}], "buffers": [{"byteLength": 73676, "uri": "oil_tin.bin"}]} \ No newline at end of file diff --git a/src/platform/kpi_rover_worlds/assets/models/oil_tin/textures/oil_tin_arm_512.jpg b/src/platform/kpi_rover_worlds/assets/models/oil_tin/textures/oil_tin_arm_512.jpg new file mode 100644 index 0000000..e52464b Binary files /dev/null and b/src/platform/kpi_rover_worlds/assets/models/oil_tin/textures/oil_tin_arm_512.jpg differ diff --git a/src/platform/kpi_rover_worlds/assets/models/oil_tin/textures/oil_tin_diff_512.jpg b/src/platform/kpi_rover_worlds/assets/models/oil_tin/textures/oil_tin_diff_512.jpg new file mode 100644 index 0000000..10b7efa Binary files /dev/null and b/src/platform/kpi_rover_worlds/assets/models/oil_tin/textures/oil_tin_diff_512.jpg differ diff --git a/src/platform/kpi_rover_worlds/assets/models/oil_tin/textures/oil_tin_nor_gl_512.jpg b/src/platform/kpi_rover_worlds/assets/models/oil_tin/textures/oil_tin_nor_gl_512.jpg new file mode 100644 index 0000000..4de9fae Binary files /dev/null and b/src/platform/kpi_rover_worlds/assets/models/oil_tin/textures/oil_tin_nor_gl_512.jpg differ diff --git a/src/platform/kpi_rover_worlds/assets/models/old_tyre/old_tyre.bin b/src/platform/kpi_rover_worlds/assets/models/old_tyre/old_tyre.bin new file mode 100644 index 0000000..f76114f Binary files /dev/null and b/src/platform/kpi_rover_worlds/assets/models/old_tyre/old_tyre.bin differ diff --git a/src/platform/kpi_rover_worlds/assets/models/old_tyre/old_tyre.gltf b/src/platform/kpi_rover_worlds/assets/models/old_tyre/old_tyre.gltf new file mode 100644 index 0000000..da6e5b1 --- /dev/null +++ b/src/platform/kpi_rover_worlds/assets/models/old_tyre/old_tyre.gltf @@ -0,0 +1 @@ +{"asset": {"generator": "Khronos glTF Blender I/O v3.6.27", "version": "2.0"}, "scene": 0, "scenes": [{"name": "Scene", "nodes": [0]}], "nodes": [{"mesh": 0, "name": "old_tyre"}], "materials": [{"doubleSided": true, "name": "old_tyre", "normalTexture": {"index": 0}, "pbrMetallicRoughness": {"baseColorTexture": {"index": 1}, "metallicFactor": 0, "metallicRoughnessTexture": {"index": 2}}}], "meshes": [{"name": "tire_lo", "primitives": [{"attributes": {"POSITION": 0, "NORMAL": 1, "TEXCOORD_0": 2}, "indices": 3, "material": 0}]}], "textures": [{"sampler": 0, "source": 0}, {"sampler": 0, "source": 1}, {"sampler": 0, "source": 2}], "images": [{"mimeType": "image/jpeg", "name": "old_tyre_nor_gl", "uri": "textures/old_tyre_nor_gl_512.jpg"}, {"mimeType": "image/jpeg", "name": "old_tyre_diff", "uri": "textures/old_tyre_diff_512.jpg"}, {"mimeType": "image/jpeg", "name": "old_tyre_rough", "uri": "textures/old_tyre_arm_512.jpg"}], "accessors": [{"bufferView": 0, "componentType": 5126, "count": 2090, "max": [0.30000001192092896, 0.30000001192092896, 0.08223667740821838], "min": [-0.30000001192092896, -0.30000001192092896, -0.08276332169771194], "type": "VEC3"}, {"bufferView": 1, "componentType": 5126, "count": 2090, "type": "VEC3"}, {"bufferView": 2, "componentType": 5126, "count": 2090, "type": "VEC2"}, {"bufferView": 3, "componentType": 5123, "count": 8640, "type": "SCALAR"}], "bufferViews": [{"buffer": 0, "byteLength": 25080, "byteOffset": 0, "target": 34962}, {"buffer": 0, "byteLength": 25080, "byteOffset": 25080, "target": 34962}, {"buffer": 0, "byteLength": 16720, "byteOffset": 50160, "target": 34962}, {"buffer": 0, "byteLength": 17280, "byteOffset": 66880, "target": 34963}], "samplers": [{"magFilter": 9729, "minFilter": 9987}], "buffers": [{"byteLength": 84160, "uri": "old_tyre.bin"}]} \ No newline at end of file diff --git a/src/platform/kpi_rover_worlds/assets/models/old_tyre/textures/old_tyre_arm_512.jpg b/src/platform/kpi_rover_worlds/assets/models/old_tyre/textures/old_tyre_arm_512.jpg new file mode 100644 index 0000000..cf66583 Binary files /dev/null and b/src/platform/kpi_rover_worlds/assets/models/old_tyre/textures/old_tyre_arm_512.jpg differ diff --git a/src/platform/kpi_rover_worlds/assets/models/old_tyre/textures/old_tyre_diff_512.jpg b/src/platform/kpi_rover_worlds/assets/models/old_tyre/textures/old_tyre_diff_512.jpg new file mode 100644 index 0000000..eefaa29 Binary files /dev/null and b/src/platform/kpi_rover_worlds/assets/models/old_tyre/textures/old_tyre_diff_512.jpg differ diff --git a/src/platform/kpi_rover_worlds/assets/models/old_tyre/textures/old_tyre_nor_gl_512.jpg b/src/platform/kpi_rover_worlds/assets/models/old_tyre/textures/old_tyre_nor_gl_512.jpg new file mode 100644 index 0000000..dd41821 Binary files /dev/null and b/src/platform/kpi_rover_worlds/assets/models/old_tyre/textures/old_tyre_nor_gl_512.jpg differ diff --git a/src/platform/kpi_rover_worlds/assets/models/plastic_crate_02/plastic_crate_02.bin b/src/platform/kpi_rover_worlds/assets/models/plastic_crate_02/plastic_crate_02.bin new file mode 100644 index 0000000..a732d3e Binary files /dev/null and b/src/platform/kpi_rover_worlds/assets/models/plastic_crate_02/plastic_crate_02.bin differ diff --git a/src/platform/kpi_rover_worlds/assets/models/plastic_crate_02/plastic_crate_02.gltf b/src/platform/kpi_rover_worlds/assets/models/plastic_crate_02/plastic_crate_02.gltf new file mode 100644 index 0000000..8d40c0d --- /dev/null +++ b/src/platform/kpi_rover_worlds/assets/models/plastic_crate_02/plastic_crate_02.gltf @@ -0,0 +1 @@ +{"asset": {"generator": "Khronos glTF Blender I/O v5.1.20", "version": "2.0"}, "scene": 0, "scenes": [{"name": "Scene", "nodes": [0]}], "nodes": [{"mesh": 0, "name": "plastic_crate_02"}], "materials": [{"alphaMode": "BLEND", "name": "plastic_crate_02", "normalTexture": {"index": 0}, "pbrMetallicRoughness": {"baseColorFactor": [1, 0.40816283226013184, 0, 1], "baseColorTexture": {"index": 1}, "metallicFactor": 0, "metallicRoughnessTexture": {"index": 2}}}], "meshes": [{"name": "Cube.002", "primitives": [{"attributes": {"POSITION": 0, "NORMAL": 1, "TEXCOORD_0": 2}, "indices": 3, "material": 0}]}], "textures": [{"sampler": 0, "source": 0}, {"sampler": 0, "source": 1}, {"sampler": 0, "source": 2}], "images": [{"mimeType": "image/jpeg", "name": "plastic_crate_02_nor_gl", "uri": "textures/plastic_crate_02_nor_gl_512.jpg"}, {"mimeType": "image/jpeg", "name": "plastic_crate_02_diff-plastic_crate_02_opacity", "uri": "textures/plastic_crate_02_diff_512.jpg"}, {"mimeType": "image/jpeg", "name": "plastic_crate_02_rough", "uri": "textures/plastic_crate_02_arm_512.jpg"}], "accessors": [{"bufferView": 0, "componentType": 5126, "count": 4744, "max": [0.2527506947517395, 0.25407320261001587, 0.20275069773197174], "min": [-0.2527506947517395, -1.595914363861084e-05, -0.20275069773197174], "type": "VEC3"}, {"bufferView": 1, "componentType": 5126, "count": 4744, "type": "VEC3"}, {"bufferView": 2, "componentType": 5126, "count": 4744, "type": "VEC2"}, {"bufferView": 3, "componentType": 5123, "count": 17520, "type": "SCALAR"}], "bufferViews": [{"buffer": 0, "byteLength": 56928, "byteOffset": 0, "target": 34962}, {"buffer": 0, "byteLength": 56928, "byteOffset": 56928, "target": 34962}, {"buffer": 0, "byteLength": 37952, "byteOffset": 113856, "target": 34962}, {"buffer": 0, "byteLength": 35040, "byteOffset": 151808, "target": 34963}], "samplers": [{"magFilter": 9729, "minFilter": 9987}], "buffers": [{"byteLength": 186848, "uri": "plastic_crate_02.bin"}]} \ No newline at end of file diff --git a/src/platform/kpi_rover_worlds/assets/models/plastic_crate_02/textures/plastic_crate_02_arm_512.jpg b/src/platform/kpi_rover_worlds/assets/models/plastic_crate_02/textures/plastic_crate_02_arm_512.jpg new file mode 100644 index 0000000..3290cf6 Binary files /dev/null and b/src/platform/kpi_rover_worlds/assets/models/plastic_crate_02/textures/plastic_crate_02_arm_512.jpg differ diff --git a/src/platform/kpi_rover_worlds/assets/models/plastic_crate_02/textures/plastic_crate_02_diff_512.jpg b/src/platform/kpi_rover_worlds/assets/models/plastic_crate_02/textures/plastic_crate_02_diff_512.jpg new file mode 100644 index 0000000..b9c220e Binary files /dev/null and b/src/platform/kpi_rover_worlds/assets/models/plastic_crate_02/textures/plastic_crate_02_diff_512.jpg differ diff --git a/src/platform/kpi_rover_worlds/assets/models/plastic_crate_02/textures/plastic_crate_02_nor_gl_512.jpg b/src/platform/kpi_rover_worlds/assets/models/plastic_crate_02/textures/plastic_crate_02_nor_gl_512.jpg new file mode 100644 index 0000000..f05d89b Binary files /dev/null and b/src/platform/kpi_rover_worlds/assets/models/plastic_crate_02/textures/plastic_crate_02_nor_gl_512.jpg differ diff --git a/src/platform/kpi_rover_worlds/assets/models/wooden_bucket_01/textures/wooden_bucket_01_arm_512.jpg b/src/platform/kpi_rover_worlds/assets/models/wooden_bucket_01/textures/wooden_bucket_01_arm_512.jpg new file mode 100644 index 0000000..15eab63 Binary files /dev/null and b/src/platform/kpi_rover_worlds/assets/models/wooden_bucket_01/textures/wooden_bucket_01_arm_512.jpg differ diff --git a/src/platform/kpi_rover_worlds/assets/models/wooden_bucket_01/textures/wooden_bucket_01_diff_512.jpg b/src/platform/kpi_rover_worlds/assets/models/wooden_bucket_01/textures/wooden_bucket_01_diff_512.jpg new file mode 100644 index 0000000..93500d4 Binary files /dev/null and b/src/platform/kpi_rover_worlds/assets/models/wooden_bucket_01/textures/wooden_bucket_01_diff_512.jpg differ diff --git a/src/platform/kpi_rover_worlds/assets/models/wooden_bucket_01/textures/wooden_bucket_01_nor_gl_512.jpg b/src/platform/kpi_rover_worlds/assets/models/wooden_bucket_01/textures/wooden_bucket_01_nor_gl_512.jpg new file mode 100644 index 0000000..6b34bf3 Binary files /dev/null and b/src/platform/kpi_rover_worlds/assets/models/wooden_bucket_01/textures/wooden_bucket_01_nor_gl_512.jpg differ diff --git a/src/platform/kpi_rover_worlds/assets/models/wooden_bucket_01/wooden_bucket_01.bin b/src/platform/kpi_rover_worlds/assets/models/wooden_bucket_01/wooden_bucket_01.bin new file mode 100644 index 0000000..ccdaeca Binary files /dev/null and b/src/platform/kpi_rover_worlds/assets/models/wooden_bucket_01/wooden_bucket_01.bin differ diff --git a/src/platform/kpi_rover_worlds/assets/models/wooden_bucket_01/wooden_bucket_01.gltf b/src/platform/kpi_rover_worlds/assets/models/wooden_bucket_01/wooden_bucket_01.gltf new file mode 100644 index 0000000..7dc772e --- /dev/null +++ b/src/platform/kpi_rover_worlds/assets/models/wooden_bucket_01/wooden_bucket_01.gltf @@ -0,0 +1 @@ +{"asset": {"generator": "Khronos glTF Blender I/O v1.7.33", "version": "2.0"}, "scene": 0, "scenes": [{"name": "Scene", "nodes": [0, 1]}], "nodes": [{"mesh": 0, "name": "wooden_bucket_01", "translation": [-0.00012092795077478513, 0, 0.00012092784163542092]}, {"mesh": 1, "name": "wooden_bucket_01_handle", "translation": [0, 0.3211684823036194, 0.00012092789256712422]}], "materials": [{"doubleSided": true, "name": "wooden_bucket_01", "normalTexture": {"index": 0}, "pbrMetallicRoughness": {"baseColorTexture": {"index": 1}, "metallicRoughnessTexture": {"index": 2}}}], "meshes": [{"name": "Cylinder", "primitives": [{"attributes": {"POSITION": 0, "NORMAL": 1, "TEXCOORD_0": 2}, "indices": 3, "material": 0}]}, {"name": "Plane", "primitives": [{"attributes": {"POSITION": 4, "NORMAL": 5, "TEXCOORD_0": 6}, "indices": 7, "material": 0}]}], "textures": [{"sampler": 0, "source": 0}, {"sampler": 0, "source": 1}, {"sampler": 0, "source": 2}], "images": [{"mimeType": "image/jpeg", "name": "wooden_bucket_01_nor_gl", "uri": "textures/wooden_bucket_01_nor_gl_512.jpg"}, {"mimeType": "image/jpeg", "name": "wooden_bucket_01_diff", "uri": "textures/wooden_bucket_01_diff_512.jpg"}, {"mimeType": "image/jpeg", "name": "wooden_bucket_01_metal-wooden_bucket_01_rough", "uri": "textures/wooden_bucket_01_arm_512.jpg"}], "accessors": [{"bufferView": 0, "componentType": 5126, "count": 3606, "max": [0.17380821704864502, 0.3491709232330322, 0.17213965952396393], "min": [-0.17317181825637817, 0.00013674795627593994, -0.17008152604103088], "type": "VEC3"}, {"bufferView": 1, "componentType": 5126, "count": 3606, "type": "VEC3"}, {"bufferView": 2, "componentType": 5126, "count": 3606, "type": "VEC2"}, {"bufferView": 3, "componentType": 5123, "count": 13452, "type": "SCALAR"}, {"bufferView": 4, "componentType": 5126, "count": 385, "max": [0.18252430856227875, 0.22883063554763794, 0.004410651046782732], "min": [-0.1844465434551239, -0.007601439952850342, -0.003766037989407778], "type": "VEC3"}, {"bufferView": 5, "componentType": 5126, "count": 385, "type": "VEC3"}, {"bufferView": 6, "componentType": 5126, "count": 385, "type": "VEC2"}, {"bufferView": 7, "componentType": 5123, "count": 1896, "type": "SCALAR"}], "bufferViews": [{"buffer": 0, "byteLength": 43272, "byteOffset": 0}, {"buffer": 0, "byteLength": 43272, "byteOffset": 43272}, {"buffer": 0, "byteLength": 28848, "byteOffset": 86544}, {"buffer": 0, "byteLength": 26904, "byteOffset": 115392}, {"buffer": 0, "byteLength": 4620, "byteOffset": 142296}, {"buffer": 0, "byteLength": 4620, "byteOffset": 146916}, {"buffer": 0, "byteLength": 3080, "byteOffset": 151536}, {"buffer": 0, "byteLength": 3792, "byteOffset": 154616}], "samplers": [{"magFilter": 9729, "minFilter": 9987}], "buffers": [{"byteLength": 158408, "uri": "wooden_bucket_01.bin"}]} \ No newline at end of file diff --git a/src/platform/kpi_rover_worlds/assets/models/wooden_crate_01/textures/wooden_crate_01_arm_512.jpg b/src/platform/kpi_rover_worlds/assets/models/wooden_crate_01/textures/wooden_crate_01_arm_512.jpg new file mode 100644 index 0000000..f271afb Binary files /dev/null and b/src/platform/kpi_rover_worlds/assets/models/wooden_crate_01/textures/wooden_crate_01_arm_512.jpg differ diff --git a/src/platform/kpi_rover_worlds/assets/models/wooden_crate_01/textures/wooden_crate_01_diff_512.jpg b/src/platform/kpi_rover_worlds/assets/models/wooden_crate_01/textures/wooden_crate_01_diff_512.jpg new file mode 100644 index 0000000..38fc548 Binary files /dev/null and b/src/platform/kpi_rover_worlds/assets/models/wooden_crate_01/textures/wooden_crate_01_diff_512.jpg differ diff --git a/src/platform/kpi_rover_worlds/assets/models/wooden_crate_01/textures/wooden_crate_01_nor_gl_512.jpg b/src/platform/kpi_rover_worlds/assets/models/wooden_crate_01/textures/wooden_crate_01_nor_gl_512.jpg new file mode 100644 index 0000000..800bffe Binary files /dev/null and b/src/platform/kpi_rover_worlds/assets/models/wooden_crate_01/textures/wooden_crate_01_nor_gl_512.jpg differ diff --git a/src/platform/kpi_rover_worlds/assets/models/wooden_crate_01/wooden_crate_01.bin b/src/platform/kpi_rover_worlds/assets/models/wooden_crate_01/wooden_crate_01.bin new file mode 100644 index 0000000..d68d9f3 Binary files /dev/null and b/src/platform/kpi_rover_worlds/assets/models/wooden_crate_01/wooden_crate_01.bin differ diff --git a/src/platform/kpi_rover_worlds/assets/models/wooden_crate_01/wooden_crate_01.gltf b/src/platform/kpi_rover_worlds/assets/models/wooden_crate_01/wooden_crate_01.gltf new file mode 100644 index 0000000..3e6cce3 --- /dev/null +++ b/src/platform/kpi_rover_worlds/assets/models/wooden_crate_01/wooden_crate_01.gltf @@ -0,0 +1 @@ +{"asset": {"generator": "Khronos glTF Blender I/O v4.1.63", "version": "2.0"}, "scene": 0, "scenes": [{"name": "Scene", "nodes": [0, 1, 2]}], "nodes": [{"mesh": 0, "name": "wooden_crate_01_lid"}, {"mesh": 1, "name": "wooden_crate_01"}, {"mesh": 2, "name": "wooden_crate_01_latch"}], "materials": [{"doubleSided": true, "name": "wooden_crate_01", "normalTexture": {"index": 0}, "pbrMetallicRoughness": {"baseColorTexture": {"index": 1}, "metallicRoughnessTexture": {"index": 2}}}], "meshes": [{"name": "Cube.005", "primitives": [{"attributes": {"POSITION": 0, "NORMAL": 1, "TEXCOORD_0": 2}, "indices": 3, "material": 0}]}, {"name": "Cube.020", "primitives": [{"attributes": {"POSITION": 4, "NORMAL": 5, "TEXCOORD_0": 6}, "indices": 7, "material": 0}]}, {"name": "Cube.001", "primitives": [{"attributes": {"POSITION": 8, "NORMAL": 9, "TEXCOORD_0": 10}, "indices": 11, "material": 0}]}], "textures": [{"sampler": 0, "source": 0}, {"sampler": 0, "source": 1}, {"sampler": 0, "source": 2}], "images": [{"mimeType": "image/jpeg", "name": "wooden_crate_01_nor_gl", "uri": "textures/wooden_crate_01_nor_gl_512.jpg"}, {"mimeType": "image/jpeg", "name": "wooden_crate_01_diff", "uri": "textures/wooden_crate_01_diff_512.jpg"}, {"mimeType": "image/jpeg", "name": "wooden_crate_01_metal-wooden_crate_01_rough", "uri": "textures/wooden_crate_01_arm_512.jpg"}], "accessors": [{"bufferView": 0, "componentType": 5126, "count": 596, "max": [0.3539096713066101, 0.3416849374771118, 0.1961396187543869], "min": [-0.3539096713066101, 0.29946234822273254, -0.1961396187543869], "type": "VEC3"}, {"bufferView": 1, "componentType": 5126, "count": 596, "type": "VEC3"}, {"bufferView": 2, "componentType": 5126, "count": 596, "type": "VEC2"}, {"bufferView": 3, "componentType": 5123, "count": 2076, "type": "SCALAR"}, {"bufferView": 4, "componentType": 5126, "count": 3706, "max": [0.4126364588737488, 0.3139750361442566, 0.2128141224384308], "min": [-0.4126364588737488, -0.00793334562331438, -0.19549614191055298], "type": "VEC3"}, {"bufferView": 5, "componentType": 5126, "count": 3706, "type": "VEC3"}, {"bufferView": 6, "componentType": 5126, "count": 3706, "type": "VEC2"}, {"bufferView": 7, "componentType": 5123, "count": 16524, "type": "SCALAR"}, {"bufferView": 8, "componentType": 5126, "count": 384, "max": [0.009643923491239548, 0.3357900381088257, 0.2071036398410797], "min": [-0.016070956364274025, 0.2390938252210617, 0.1312473714351654], "type": "VEC3"}, {"bufferView": 9, "componentType": 5126, "count": 384, "type": "VEC3"}, {"bufferView": 10, "componentType": 5126, "count": 384, "type": "VEC2"}, {"bufferView": 11, "componentType": 5123, "count": 1128, "type": "SCALAR"}], "bufferViews": [{"buffer": 0, "byteLength": 7152, "byteOffset": 0, "target": 34962}, {"buffer": 0, "byteLength": 7152, "byteOffset": 7152, "target": 34962}, {"buffer": 0, "byteLength": 4768, "byteOffset": 14304, "target": 34962}, {"buffer": 0, "byteLength": 4152, "byteOffset": 19072, "target": 34963}, {"buffer": 0, "byteLength": 44472, "byteOffset": 23224, "target": 34962}, {"buffer": 0, "byteLength": 44472, "byteOffset": 67696, "target": 34962}, {"buffer": 0, "byteLength": 29648, "byteOffset": 112168, "target": 34962}, {"buffer": 0, "byteLength": 33048, "byteOffset": 141816, "target": 34963}, {"buffer": 0, "byteLength": 4608, "byteOffset": 174864, "target": 34962}, {"buffer": 0, "byteLength": 4608, "byteOffset": 179472, "target": 34962}, {"buffer": 0, "byteLength": 3072, "byteOffset": 184080, "target": 34962}, {"buffer": 0, "byteLength": 2256, "byteOffset": 187152, "target": 34963}], "samplers": [{"magFilter": 9729, "minFilter": 9987}], "buffers": [{"byteLength": 189408, "uri": "wooden_crate_01.bin"}]} \ No newline at end of file diff --git a/src/platform/kpi_rover_worlds/assets/textures/CREDITS.md b/src/platform/kpi_rover_worlds/assets/textures/CREDITS.md new file mode 100644 index 0000000..58e2010 --- /dev/null +++ b/src/platform/kpi_rover_worlds/assets/textures/CREDITS.md @@ -0,0 +1,22 @@ +# Texture credits + +Photo textures from [Poly Haven](https://polyhaven.com), licensed [CC0](https://polyhaven.com/license). + +| Texture | Poly Haven asset | Authors | Size covered, m | +|---|---|---|---| +| floor_concrete | [concrete_floor_02](https://polyhaven.com/a/concrete_floor_02) | Rob Tuytel | 2.00 | +| floor_painted_concrete | [concrete_floor_painted](https://polyhaven.com/a/concrete_floor_painted) | Rob Tuytel | 2.00 | +| floor_asphalt | [asphalt_pit_lane](https://polyhaven.com/a/asphalt_pit_lane) | Dimitrios Savva | 2.00 | +| floor_wood | [laminate_floor_02](https://polyhaven.com/a/laminate_floor_02) | Dario Barresi, Charlotte Baglioni | 1.70 | +| floor_tiles | [floor_tiles_06](https://polyhaven.com/a/floor_tiles_06) | Rob Tuytel | 3.00 | +| floor_carpet | [dirty_carpet](https://polyhaven.com/a/dirty_carpet) | Rohit Seervi | 1.80 | +| wall_brick | [red_brick_03](https://polyhaven.com/a/red_brick_03) | Rob Tuytel | 1.00 | +| wall_plaster | [painted_plaster_wall](https://polyhaven.com/a/painted_plaster_wall) | Amal Kumar | 2.00 | +| wall_concrete | [concrete_wall_007](https://polyhaven.com/a/concrete_wall_007) | Dario Barresi, Rico Cilliers, Charlotte Baglioni | 2.16 | +| wall_wood | [wood_planks](https://polyhaven.com/a/wood_planks) | Amal Kumar | 1.50 | +| wall_metal | [corrugated_iron](https://polyhaven.com/a/corrugated_iron) | Jenelle van Heerden, Dimitrios Savva | 1.12 | +| ground_meadow | [grass_ground](https://polyhaven.com/a/grass_ground) | Charlotte Baglioni | 2.51 | +| ground_loose_soil | [farm_soil](https://polyhaven.com/a/farm_soil) | Amal Kumar | 2.00 | +| ground_forest_mud | [mud_forest](https://polyhaven.com/a/mud_forest) | eye-candy.xyz | 2.35 | +| road_gravel | [gravel_ground_01](https://polyhaven.com/a/gravel_ground_01) | Rob Tuytel | 3.00 | +| tree_bark | [bark_willow_02](https://polyhaven.com/a/bark_willow_02) | Charlotte Baglioni | 2.15 | diff --git a/src/platform/kpi_rover_worlds/assets/textures/floor_asphalt/floor_asphalt_albedo.jpg b/src/platform/kpi_rover_worlds/assets/textures/floor_asphalt/floor_asphalt_albedo.jpg new file mode 100644 index 0000000..0b9c20c Binary files /dev/null and b/src/platform/kpi_rover_worlds/assets/textures/floor_asphalt/floor_asphalt_albedo.jpg differ diff --git a/src/platform/kpi_rover_worlds/assets/textures/floor_asphalt/floor_asphalt_normal.jpg b/src/platform/kpi_rover_worlds/assets/textures/floor_asphalt/floor_asphalt_normal.jpg new file mode 100644 index 0000000..d649ebb Binary files /dev/null and b/src/platform/kpi_rover_worlds/assets/textures/floor_asphalt/floor_asphalt_normal.jpg differ diff --git a/src/platform/kpi_rover_worlds/assets/textures/floor_asphalt/floor_asphalt_roughness.jpg b/src/platform/kpi_rover_worlds/assets/textures/floor_asphalt/floor_asphalt_roughness.jpg new file mode 100644 index 0000000..8be1ca1 Binary files /dev/null and b/src/platform/kpi_rover_worlds/assets/textures/floor_asphalt/floor_asphalt_roughness.jpg differ diff --git a/src/platform/kpi_rover_worlds/assets/textures/floor_carpet/floor_carpet_albedo.jpg b/src/platform/kpi_rover_worlds/assets/textures/floor_carpet/floor_carpet_albedo.jpg new file mode 100644 index 0000000..8f64b51 Binary files /dev/null and b/src/platform/kpi_rover_worlds/assets/textures/floor_carpet/floor_carpet_albedo.jpg differ diff --git a/src/platform/kpi_rover_worlds/assets/textures/floor_carpet/floor_carpet_normal.jpg b/src/platform/kpi_rover_worlds/assets/textures/floor_carpet/floor_carpet_normal.jpg new file mode 100644 index 0000000..b8d65e1 Binary files /dev/null and b/src/platform/kpi_rover_worlds/assets/textures/floor_carpet/floor_carpet_normal.jpg differ diff --git a/src/platform/kpi_rover_worlds/assets/textures/floor_carpet/floor_carpet_roughness.jpg b/src/platform/kpi_rover_worlds/assets/textures/floor_carpet/floor_carpet_roughness.jpg new file mode 100644 index 0000000..428a5c5 Binary files /dev/null and b/src/platform/kpi_rover_worlds/assets/textures/floor_carpet/floor_carpet_roughness.jpg differ diff --git a/src/platform/kpi_rover_worlds/assets/textures/floor_concrete/floor_concrete_albedo.jpg b/src/platform/kpi_rover_worlds/assets/textures/floor_concrete/floor_concrete_albedo.jpg new file mode 100644 index 0000000..fcc5564 Binary files /dev/null and b/src/platform/kpi_rover_worlds/assets/textures/floor_concrete/floor_concrete_albedo.jpg differ diff --git a/src/platform/kpi_rover_worlds/assets/textures/floor_concrete/floor_concrete_normal.jpg b/src/platform/kpi_rover_worlds/assets/textures/floor_concrete/floor_concrete_normal.jpg new file mode 100644 index 0000000..8865f44 Binary files /dev/null and b/src/platform/kpi_rover_worlds/assets/textures/floor_concrete/floor_concrete_normal.jpg differ diff --git a/src/platform/kpi_rover_worlds/assets/textures/floor_concrete/floor_concrete_roughness.jpg b/src/platform/kpi_rover_worlds/assets/textures/floor_concrete/floor_concrete_roughness.jpg new file mode 100644 index 0000000..195b2f0 Binary files /dev/null and b/src/platform/kpi_rover_worlds/assets/textures/floor_concrete/floor_concrete_roughness.jpg differ diff --git a/src/platform/kpi_rover_worlds/assets/textures/floor_painted_concrete/floor_painted_concrete_albedo.jpg b/src/platform/kpi_rover_worlds/assets/textures/floor_painted_concrete/floor_painted_concrete_albedo.jpg new file mode 100644 index 0000000..4ba6466 Binary files /dev/null and b/src/platform/kpi_rover_worlds/assets/textures/floor_painted_concrete/floor_painted_concrete_albedo.jpg differ diff --git a/src/platform/kpi_rover_worlds/assets/textures/floor_painted_concrete/floor_painted_concrete_normal.jpg b/src/platform/kpi_rover_worlds/assets/textures/floor_painted_concrete/floor_painted_concrete_normal.jpg new file mode 100644 index 0000000..65d818d Binary files /dev/null and b/src/platform/kpi_rover_worlds/assets/textures/floor_painted_concrete/floor_painted_concrete_normal.jpg differ diff --git a/src/platform/kpi_rover_worlds/assets/textures/floor_painted_concrete/floor_painted_concrete_roughness.jpg b/src/platform/kpi_rover_worlds/assets/textures/floor_painted_concrete/floor_painted_concrete_roughness.jpg new file mode 100644 index 0000000..46116d5 Binary files /dev/null and b/src/platform/kpi_rover_worlds/assets/textures/floor_painted_concrete/floor_painted_concrete_roughness.jpg differ diff --git a/src/platform/kpi_rover_worlds/assets/textures/floor_tiles/floor_tiles_albedo.jpg b/src/platform/kpi_rover_worlds/assets/textures/floor_tiles/floor_tiles_albedo.jpg new file mode 100644 index 0000000..c011e4d Binary files /dev/null and b/src/platform/kpi_rover_worlds/assets/textures/floor_tiles/floor_tiles_albedo.jpg differ diff --git a/src/platform/kpi_rover_worlds/assets/textures/floor_tiles/floor_tiles_normal.jpg b/src/platform/kpi_rover_worlds/assets/textures/floor_tiles/floor_tiles_normal.jpg new file mode 100644 index 0000000..54e6b35 Binary files /dev/null and b/src/platform/kpi_rover_worlds/assets/textures/floor_tiles/floor_tiles_normal.jpg differ diff --git a/src/platform/kpi_rover_worlds/assets/textures/floor_tiles/floor_tiles_roughness.jpg b/src/platform/kpi_rover_worlds/assets/textures/floor_tiles/floor_tiles_roughness.jpg new file mode 100644 index 0000000..cea8c1c Binary files /dev/null and b/src/platform/kpi_rover_worlds/assets/textures/floor_tiles/floor_tiles_roughness.jpg differ diff --git a/src/platform/kpi_rover_worlds/assets/textures/floor_wood/floor_wood_albedo.jpg b/src/platform/kpi_rover_worlds/assets/textures/floor_wood/floor_wood_albedo.jpg new file mode 100644 index 0000000..f67956e Binary files /dev/null and b/src/platform/kpi_rover_worlds/assets/textures/floor_wood/floor_wood_albedo.jpg differ diff --git a/src/platform/kpi_rover_worlds/assets/textures/floor_wood/floor_wood_normal.jpg b/src/platform/kpi_rover_worlds/assets/textures/floor_wood/floor_wood_normal.jpg new file mode 100644 index 0000000..37144e9 Binary files /dev/null and b/src/platform/kpi_rover_worlds/assets/textures/floor_wood/floor_wood_normal.jpg differ diff --git a/src/platform/kpi_rover_worlds/assets/textures/floor_wood/floor_wood_roughness.jpg b/src/platform/kpi_rover_worlds/assets/textures/floor_wood/floor_wood_roughness.jpg new file mode 100644 index 0000000..368be0b Binary files /dev/null and b/src/platform/kpi_rover_worlds/assets/textures/floor_wood/floor_wood_roughness.jpg differ diff --git a/src/platform/kpi_rover_worlds/assets/textures/ground_forest_mud/ground_forest_mud_albedo.jpg b/src/platform/kpi_rover_worlds/assets/textures/ground_forest_mud/ground_forest_mud_albedo.jpg new file mode 100644 index 0000000..1ad907d Binary files /dev/null and b/src/platform/kpi_rover_worlds/assets/textures/ground_forest_mud/ground_forest_mud_albedo.jpg differ diff --git a/src/platform/kpi_rover_worlds/assets/textures/ground_forest_mud/ground_forest_mud_normal.jpg b/src/platform/kpi_rover_worlds/assets/textures/ground_forest_mud/ground_forest_mud_normal.jpg new file mode 100644 index 0000000..1cd09b3 Binary files /dev/null and b/src/platform/kpi_rover_worlds/assets/textures/ground_forest_mud/ground_forest_mud_normal.jpg differ diff --git a/src/platform/kpi_rover_worlds/assets/textures/ground_forest_mud/ground_forest_mud_roughness.jpg b/src/platform/kpi_rover_worlds/assets/textures/ground_forest_mud/ground_forest_mud_roughness.jpg new file mode 100644 index 0000000..7784f1c Binary files /dev/null and b/src/platform/kpi_rover_worlds/assets/textures/ground_forest_mud/ground_forest_mud_roughness.jpg differ diff --git a/src/platform/kpi_rover_worlds/assets/textures/ground_loose_soil/ground_loose_soil_albedo.jpg b/src/platform/kpi_rover_worlds/assets/textures/ground_loose_soil/ground_loose_soil_albedo.jpg new file mode 100644 index 0000000..2955707 Binary files /dev/null and b/src/platform/kpi_rover_worlds/assets/textures/ground_loose_soil/ground_loose_soil_albedo.jpg differ diff --git a/src/platform/kpi_rover_worlds/assets/textures/ground_loose_soil/ground_loose_soil_normal.jpg b/src/platform/kpi_rover_worlds/assets/textures/ground_loose_soil/ground_loose_soil_normal.jpg new file mode 100644 index 0000000..b4b62b4 Binary files /dev/null and b/src/platform/kpi_rover_worlds/assets/textures/ground_loose_soil/ground_loose_soil_normal.jpg differ diff --git a/src/platform/kpi_rover_worlds/assets/textures/ground_loose_soil/ground_loose_soil_roughness.jpg b/src/platform/kpi_rover_worlds/assets/textures/ground_loose_soil/ground_loose_soil_roughness.jpg new file mode 100644 index 0000000..7b02ce6 Binary files /dev/null and b/src/platform/kpi_rover_worlds/assets/textures/ground_loose_soil/ground_loose_soil_roughness.jpg differ diff --git a/src/platform/kpi_rover_worlds/assets/textures/ground_meadow/ground_meadow_albedo.jpg b/src/platform/kpi_rover_worlds/assets/textures/ground_meadow/ground_meadow_albedo.jpg new file mode 100644 index 0000000..53fa3d2 Binary files /dev/null and b/src/platform/kpi_rover_worlds/assets/textures/ground_meadow/ground_meadow_albedo.jpg differ diff --git a/src/platform/kpi_rover_worlds/assets/textures/ground_meadow/ground_meadow_normal.jpg b/src/platform/kpi_rover_worlds/assets/textures/ground_meadow/ground_meadow_normal.jpg new file mode 100644 index 0000000..58d545c Binary files /dev/null and b/src/platform/kpi_rover_worlds/assets/textures/ground_meadow/ground_meadow_normal.jpg differ diff --git a/src/platform/kpi_rover_worlds/assets/textures/ground_meadow/ground_meadow_roughness.jpg b/src/platform/kpi_rover_worlds/assets/textures/ground_meadow/ground_meadow_roughness.jpg new file mode 100644 index 0000000..03012e8 Binary files /dev/null and b/src/platform/kpi_rover_worlds/assets/textures/ground_meadow/ground_meadow_roughness.jpg differ diff --git a/src/platform/kpi_rover_worlds/assets/textures/marking_black_white.png b/src/platform/kpi_rover_worlds/assets/textures/marking_black_white.png new file mode 100644 index 0000000..c87a7cc Binary files /dev/null and b/src/platform/kpi_rover_worlds/assets/textures/marking_black_white.png differ diff --git a/src/platform/kpi_rover_worlds/assets/textures/marking_black_white_tile.png b/src/platform/kpi_rover_worlds/assets/textures/marking_black_white_tile.png new file mode 100644 index 0000000..4e0fc79 Binary files /dev/null and b/src/platform/kpi_rover_worlds/assets/textures/marking_black_white_tile.png differ diff --git a/src/platform/kpi_rover_worlds/assets/textures/marking_red_white.png b/src/platform/kpi_rover_worlds/assets/textures/marking_red_white.png new file mode 100644 index 0000000..5d06fc4 Binary files /dev/null and b/src/platform/kpi_rover_worlds/assets/textures/marking_red_white.png differ diff --git a/src/platform/kpi_rover_worlds/assets/textures/marking_red_white_tile.png b/src/platform/kpi_rover_worlds/assets/textures/marking_red_white_tile.png new file mode 100644 index 0000000..1fe5ad8 Binary files /dev/null and b/src/platform/kpi_rover_worlds/assets/textures/marking_red_white_tile.png differ diff --git a/src/platform/kpi_rover_worlds/assets/textures/marking_yellow_black.png b/src/platform/kpi_rover_worlds/assets/textures/marking_yellow_black.png new file mode 100644 index 0000000..9c2006a Binary files /dev/null and b/src/platform/kpi_rover_worlds/assets/textures/marking_yellow_black.png differ diff --git a/src/platform/kpi_rover_worlds/assets/textures/marking_yellow_black_tile.png b/src/platform/kpi_rover_worlds/assets/textures/marking_yellow_black_tile.png new file mode 100644 index 0000000..92660ae Binary files /dev/null and b/src/platform/kpi_rover_worlds/assets/textures/marking_yellow_black_tile.png differ diff --git a/src/platform/kpi_rover_worlds/assets/textures/road_gravel/road_gravel_albedo.jpg b/src/platform/kpi_rover_worlds/assets/textures/road_gravel/road_gravel_albedo.jpg new file mode 100644 index 0000000..2df5df9 Binary files /dev/null and b/src/platform/kpi_rover_worlds/assets/textures/road_gravel/road_gravel_albedo.jpg differ diff --git a/src/platform/kpi_rover_worlds/assets/textures/road_gravel/road_gravel_normal.jpg b/src/platform/kpi_rover_worlds/assets/textures/road_gravel/road_gravel_normal.jpg new file mode 100644 index 0000000..870f382 Binary files /dev/null and b/src/platform/kpi_rover_worlds/assets/textures/road_gravel/road_gravel_normal.jpg differ diff --git a/src/platform/kpi_rover_worlds/assets/textures/road_gravel/road_gravel_roughness.jpg b/src/platform/kpi_rover_worlds/assets/textures/road_gravel/road_gravel_roughness.jpg new file mode 100644 index 0000000..ee3b7ce Binary files /dev/null and b/src/platform/kpi_rover_worlds/assets/textures/road_gravel/road_gravel_roughness.jpg differ diff --git a/src/platform/kpi_rover_worlds/assets/textures/traffic_cone.png b/src/platform/kpi_rover_worlds/assets/textures/traffic_cone.png new file mode 100644 index 0000000..021965a Binary files /dev/null and b/src/platform/kpi_rover_worlds/assets/textures/traffic_cone.png differ diff --git a/src/platform/kpi_rover_worlds/assets/textures/tree_bark/tree_bark_albedo.jpg b/src/platform/kpi_rover_worlds/assets/textures/tree_bark/tree_bark_albedo.jpg new file mode 100644 index 0000000..8f9b16d Binary files /dev/null and b/src/platform/kpi_rover_worlds/assets/textures/tree_bark/tree_bark_albedo.jpg differ diff --git a/src/platform/kpi_rover_worlds/assets/textures/tree_bark/tree_bark_normal.jpg b/src/platform/kpi_rover_worlds/assets/textures/tree_bark/tree_bark_normal.jpg new file mode 100644 index 0000000..6d390d5 Binary files /dev/null and b/src/platform/kpi_rover_worlds/assets/textures/tree_bark/tree_bark_normal.jpg differ diff --git a/src/platform/kpi_rover_worlds/assets/textures/tree_bark/tree_bark_roughness.jpg b/src/platform/kpi_rover_worlds/assets/textures/tree_bark/tree_bark_roughness.jpg new file mode 100644 index 0000000..051440e Binary files /dev/null and b/src/platform/kpi_rover_worlds/assets/textures/tree_bark/tree_bark_roughness.jpg differ diff --git a/src/platform/kpi_rover_worlds/assets/textures/wall_brick/wall_brick_albedo.jpg b/src/platform/kpi_rover_worlds/assets/textures/wall_brick/wall_brick_albedo.jpg new file mode 100644 index 0000000..2ce8991 Binary files /dev/null and b/src/platform/kpi_rover_worlds/assets/textures/wall_brick/wall_brick_albedo.jpg differ diff --git a/src/platform/kpi_rover_worlds/assets/textures/wall_brick/wall_brick_normal.jpg b/src/platform/kpi_rover_worlds/assets/textures/wall_brick/wall_brick_normal.jpg new file mode 100644 index 0000000..80a2622 Binary files /dev/null and b/src/platform/kpi_rover_worlds/assets/textures/wall_brick/wall_brick_normal.jpg differ diff --git a/src/platform/kpi_rover_worlds/assets/textures/wall_brick/wall_brick_roughness.jpg b/src/platform/kpi_rover_worlds/assets/textures/wall_brick/wall_brick_roughness.jpg new file mode 100644 index 0000000..cd6493a Binary files /dev/null and b/src/platform/kpi_rover_worlds/assets/textures/wall_brick/wall_brick_roughness.jpg differ diff --git a/src/platform/kpi_rover_worlds/assets/textures/wall_concrete/wall_concrete_albedo.jpg b/src/platform/kpi_rover_worlds/assets/textures/wall_concrete/wall_concrete_albedo.jpg new file mode 100644 index 0000000..f154ab7 Binary files /dev/null and b/src/platform/kpi_rover_worlds/assets/textures/wall_concrete/wall_concrete_albedo.jpg differ diff --git a/src/platform/kpi_rover_worlds/assets/textures/wall_concrete/wall_concrete_normal.jpg b/src/platform/kpi_rover_worlds/assets/textures/wall_concrete/wall_concrete_normal.jpg new file mode 100644 index 0000000..b304475 Binary files /dev/null and b/src/platform/kpi_rover_worlds/assets/textures/wall_concrete/wall_concrete_normal.jpg differ diff --git a/src/platform/kpi_rover_worlds/assets/textures/wall_concrete/wall_concrete_roughness.jpg b/src/platform/kpi_rover_worlds/assets/textures/wall_concrete/wall_concrete_roughness.jpg new file mode 100644 index 0000000..af010d5 Binary files /dev/null and b/src/platform/kpi_rover_worlds/assets/textures/wall_concrete/wall_concrete_roughness.jpg differ diff --git a/src/platform/kpi_rover_worlds/assets/textures/wall_metal/wall_metal_albedo.jpg b/src/platform/kpi_rover_worlds/assets/textures/wall_metal/wall_metal_albedo.jpg new file mode 100644 index 0000000..3af8474 Binary files /dev/null and b/src/platform/kpi_rover_worlds/assets/textures/wall_metal/wall_metal_albedo.jpg differ diff --git a/src/platform/kpi_rover_worlds/assets/textures/wall_metal/wall_metal_normal.jpg b/src/platform/kpi_rover_worlds/assets/textures/wall_metal/wall_metal_normal.jpg new file mode 100644 index 0000000..a995275 Binary files /dev/null and b/src/platform/kpi_rover_worlds/assets/textures/wall_metal/wall_metal_normal.jpg differ diff --git a/src/platform/kpi_rover_worlds/assets/textures/wall_metal/wall_metal_roughness.jpg b/src/platform/kpi_rover_worlds/assets/textures/wall_metal/wall_metal_roughness.jpg new file mode 100644 index 0000000..8930f17 Binary files /dev/null and b/src/platform/kpi_rover_worlds/assets/textures/wall_metal/wall_metal_roughness.jpg differ diff --git a/src/platform/kpi_rover_worlds/assets/textures/wall_plaster/wall_plaster_albedo.jpg b/src/platform/kpi_rover_worlds/assets/textures/wall_plaster/wall_plaster_albedo.jpg new file mode 100644 index 0000000..9878362 Binary files /dev/null and b/src/platform/kpi_rover_worlds/assets/textures/wall_plaster/wall_plaster_albedo.jpg differ diff --git a/src/platform/kpi_rover_worlds/assets/textures/wall_plaster/wall_plaster_normal.jpg b/src/platform/kpi_rover_worlds/assets/textures/wall_plaster/wall_plaster_normal.jpg new file mode 100644 index 0000000..f0cb0d4 Binary files /dev/null and b/src/platform/kpi_rover_worlds/assets/textures/wall_plaster/wall_plaster_normal.jpg differ diff --git a/src/platform/kpi_rover_worlds/assets/textures/wall_plaster/wall_plaster_roughness.jpg b/src/platform/kpi_rover_worlds/assets/textures/wall_plaster/wall_plaster_roughness.jpg new file mode 100644 index 0000000..3d390b3 Binary files /dev/null and b/src/platform/kpi_rover_worlds/assets/textures/wall_plaster/wall_plaster_roughness.jpg differ diff --git a/src/platform/kpi_rover_worlds/assets/textures/wall_wood/wall_wood_albedo.jpg b/src/platform/kpi_rover_worlds/assets/textures/wall_wood/wall_wood_albedo.jpg new file mode 100644 index 0000000..486de74 Binary files /dev/null and b/src/platform/kpi_rover_worlds/assets/textures/wall_wood/wall_wood_albedo.jpg differ diff --git a/src/platform/kpi_rover_worlds/assets/textures/wall_wood/wall_wood_normal.jpg b/src/platform/kpi_rover_worlds/assets/textures/wall_wood/wall_wood_normal.jpg new file mode 100644 index 0000000..4d3d7a5 Binary files /dev/null and b/src/platform/kpi_rover_worlds/assets/textures/wall_wood/wall_wood_normal.jpg differ diff --git a/src/platform/kpi_rover_worlds/assets/textures/wall_wood/wall_wood_roughness.jpg b/src/platform/kpi_rover_worlds/assets/textures/wall_wood/wall_wood_roughness.jpg new file mode 100644 index 0000000..c52e17e Binary files /dev/null and b/src/platform/kpi_rover_worlds/assets/textures/wall_wood/wall_wood_roughness.jpg differ diff --git a/src/platform/kpi_rover_worlds/common/config/floors.yaml b/src/platform/kpi_rover_worlds/common/config/floors.yaml new file mode 100644 index 0000000..8ad83e6 --- /dev/null +++ b/src/platform/kpi_rover_worlds/common/config/floors.yaml @@ -0,0 +1,49 @@ +# Floor types of sdf.floor. +# +# texture - photo texture directory in assets/textures (see its CREDITS.md), +# covering one 'tile' x 'tile' m square. Empty for a plain colored floor. +# color - RGB color; multiplied with the texture when it is set. +# tile - size of the area one texture covers, m. +# mu - surface friction coefficient (approximate values for rubber wheels). + +plain: + texture: '' + color: [0.25, 0.25, 0.25] + tile: 2.0 + mu: 1.0 + +concrete: + texture: floor_concrete + color: [1.0, 1.0, 1.0] + tile: 2.0 + mu: 0.9 + +painted_concrete: + texture: floor_painted_concrete + color: [1.0, 1.0, 1.0] + tile: 2.0 + mu: 0.7 + +asphalt: + texture: floor_asphalt + color: [1.0, 1.0, 1.0] + tile: 2.0 + mu: 1.0 + +carpet: + texture: floor_carpet + color: [1.0, 1.0, 1.0] + tile: 1.8 + mu: 0.8 + +wood: + texture: floor_wood + color: [1.0, 1.0, 1.0] + tile: 1.7 + mu: 0.6 + +tiles: + texture: floor_tiles + color: [1.0, 1.0, 1.0] + tile: 3.0 + mu: 0.5 diff --git a/src/platform/kpi_rover_worlds/common/config/markings.yaml b/src/platform/kpi_rover_worlds/common/config/markings.yaml new file mode 100644 index 0000000..889887c --- /dev/null +++ b/src/platform/kpi_rover_worlds/common/config/markings.yaml @@ -0,0 +1,38 @@ +# Marking styles of sdf.marking_line and sdf.marking_arc. +# +# texture - file from assets/textures with a stripe pattern. One texture +# covers a segment 4 line widths long and is repeated along the line. +# Empty for a solid colored line. +# color - RGB color; multiplied with the texture when it is set. + +white: + texture: '' + color: [1.0, 1.0, 1.0] + +yellow: + texture: '' + color: [1.0, 0.8, 0.0] + +red: + texture: '' + color: [0.85, 0.05, 0.05] + +blue: + texture: '' + color: [0.1, 0.3, 0.9] + +green: + texture: '' + color: [0.0, 0.8, 0.0] + +yellow_black: + texture: marking_yellow_black.png + color: [1.0, 1.0, 1.0] + +red_white: + texture: marking_red_white.png + color: [1.0, 1.0, 1.0] + +black_white: + texture: marking_black_white.png + color: [1.0, 1.0, 1.0] diff --git a/src/platform/kpi_rover_worlds/common/config/objects.yaml b/src/platform/kpi_rover_worlds/common/config/objects.yaml new file mode 100644 index 0000000..e6238d8 --- /dev/null +++ b/src/platform/kpi_rover_worlds/common/config/objects.yaml @@ -0,0 +1,122 @@ +# Object library for scattered objects (see sdf.scatter_object and scatter.py). +# +# kind - 'item' or 'cone' +# mesh - visual mesh in assets +# size - bounding box size [x, y, z] in the model frame, m +# center - bounding box center in the model frame (after 'roll'), m +# roll - rotation of the mesh about X, rad: 90 degrees to turn Y-up glTF meshes +# to Z-up, plus any rotation to lay the object on the floor +# mass - kg +# shape - collision shape filling the bounding box: box, cylinder (vertical) or +# cone (a base plate 3 cm high and a cylinder of 'radius' above it) +# texture - optional texture in assets/textures for meshes without materials + +cardboard_box_01: + kind: item + mesh: models/cardboard_box_01/cardboard_box_01.gltf + size: [0.387, 0.5159, 0.3418] + center: [0.001, -0.0329, 0.1641] + roll: 1.5708 + mass: 0.5 + shape: box +plastic_crate_02: + kind: item + mesh: models/plastic_crate_02/plastic_crate_02.gltf + size: [0.5055, 0.4055, 0.2541] + center: [0.0, 0.0, 0.127] + roll: 1.5708 + mass: 1.2 + shape: box +metal_toolbox: + kind: item + mesh: models/metal_toolbox/metal_toolbox.gltf + size: [0.4, 0.2923, 0.3471] + center: [-0.0, 0.0324, 0.1736] + roll: 1.5708 + mass: 3.0 + shape: box +wooden_crate_01: + kind: item + mesh: models/wooden_crate_01/wooden_crate_01.gltf + size: [0.8253, 0.409, 0.3496] + center: [0.0, -0.0083, 0.1669] + roll: 1.5708 + mass: 6.0 + shape: box +wooden_bucket_01: + kind: item + mesh: models/wooden_bucket_01/wooden_bucket_01.gltf + size: [0.367, 0.3422, 0.5499] + center: [-0.001, -0.0011, 0.2751] + roll: 1.5708 + mass: 1.5 + shape: cylinder +old_tyre: + kind: item + mesh: models/old_tyre/old_tyre.gltf + size: [0.6, 0.6, 0.165] + center: [0.0, 0.0, 0.0003] + roll: 3.1416 + mass: 8.0 + shape: cylinder +cement_bag: + kind: item + mesh: models/cement_bag/cement_bag.gltf + size: [0.4625, 0.6996, 0.1799] + center: [0.0024, -0.0016, 0.0912] + roll: 1.5708 + mass: 25.0 + shape: box +traffic_cone_45: + kind: cone + mesh: meshes/traffic_cone_45.obj + texture: traffic_cone.png + size: [0.34, 0.34, 0.45] + center: [0.0, 0.0, 0.225] + roll: 0 + mass: 1.0 + shape: cone + radius: 0.1 +traffic_cone_30: + kind: cone + mesh: meshes/traffic_cone_30.obj + texture: traffic_cone.png + size: [0.24, 0.24, 0.3] + center: [0.0, 0.0, 0.15] + roll: 0 + mass: 0.6 + shape: cone + radius: 0.07 +medical_box: + kind: item + mesh: models/medical_box/medical_box.gltf + size: [0.5255, 0.3502, 0.0975] + center: [0.0, -0.0028, 0.0488] + roll: 1.5708 + mass: 0.8 + shape: box +can_rusted: + kind: item + mesh: models/can_rusted/can_rusted.gltf + size: [0.1245, 0.1247, 0.1514] + center: [0.0002, -0.0009, 0.0745] + roll: 1.5708 + mass: 0.4 + shape: cylinder +oil_tin: + kind: item + mesh: models/oil_tin/oil_tin.gltf + size: [0.1147, 0.1535, 0.2054] + center: [-0.0094, 0.0012, 0.1019] + roll: 1.5708 + mass: 0.6 + shape: box +flat_board: + kind: item + mesh: meshes/flat_board.obj + texture: floor_wood + size: [0.5, 0.09, 0.018] + center: [0.0, 0.0, 0.009] + roll: 0 + mass: 0.4 + shape: box diff --git a/src/platform/kpi_rover_worlds/common/config/walls.yaml b/src/platform/kpi_rover_worlds/common/config/walls.yaml new file mode 100644 index 0000000..71bc94b --- /dev/null +++ b/src/platform/kpi_rover_worlds/common/config/walls.yaml @@ -0,0 +1,37 @@ +# Wall materials of sdf.wall and sdf.solid_box. +# +# texture - photo texture directory in assets/textures (see its CREDITS.md), +# made for walls 0.5 m high. Empty for a plain colored wall. +# color - RGB color; multiplied with the texture when it is set. +# segment - length of wall one texture covers, m; walls are built of +# segments about this long. + +plain: + texture: '' + color: [0.85, 0.85, 0.82] + segment: 1.0 + +plaster: + texture: wall_plaster + color: [1.0, 1.0, 1.0] + segment: 2.0 + +brick: + texture: wall_brick + color: [1.0, 1.0, 1.0] + segment: 1.0 + +concrete: + texture: wall_concrete + color: [1.0, 1.0, 1.0] + segment: 2.16 + +wood: + texture: wall_wood + color: [1.0, 1.0, 1.0] + segment: 1.5 + +metal: + texture: wall_metal + color: [1.0, 1.0, 1.0] + segment: 1.12 diff --git a/src/platform/kpi_rover_worlds/common/python/__init__.py b/src/platform/kpi_rover_worlds/common/python/__init__.py new file mode 100644 index 0000000..ef1f74e --- /dev/null +++ b/src/platform/kpi_rover_worlds/common/python/__init__.py @@ -0,0 +1 @@ +"""Worlds of the KPI Rover simulation: see world_info.""" diff --git a/src/platform/kpi_rover_worlds/common/python/gltf.py b/src/platform/kpi_rover_worlds/common/python/gltf.py new file mode 100644 index 0000000..11ed7a3 --- /dev/null +++ b/src/platform/kpi_rover_worlds/common/python/gltf.py @@ -0,0 +1,92 @@ +""" +Minimal glTF reading and writing for the garden meshes. + +Gazebo loads glTF coordinates as they are (it does not turn Y-up to Z-up), so +the meshes written here are in the Gazebo Z-up frame. Texture coordinates +are written with v pointing down, as glTF has it. +""" + +import json +import os + +import numpy as np + +COMPONENT = {5121: np.uint8, 5123: np.uint16, 5125: np.uint32, 5126: np.float32} +COUNT = {'SCALAR': 1, 'VEC2': 2, 'VEC3': 3, 'VEC4': 4} + + +def read(path): + """Read a glTF: return (json, {buffer index: bytes}).""" + with open(path) as f: + gltf = json.load(f) + buffers = {} + for i, buffer in enumerate(gltf['buffers']): + with open(os.path.join(os.path.dirname(path), buffer['uri']), 'rb') as f: + buffers[i] = f.read() + return gltf, buffers + + +def accessor(gltf, buffers, index): + """Data of a glTF accessor as a numpy array.""" + a = gltf['accessors'][index] + view = gltf['bufferViews'][a['bufferView']] + dtype = COMPONENT[a['componentType']] + n = COUNT[a['type']] + offset = view.get('byteOffset', 0) + a.get('byteOffset', 0) + stride = view.get('byteStride', 0) + data = buffers[view['buffer']] + itemsize = np.dtype(dtype).itemsize * n + if stride and stride != itemsize: + raw = np.frombuffer(data, np.uint8, a['count'] * stride, offset).reshape(-1, stride)[:, :itemsize] + return np.frombuffer(raw.tobytes(), dtype).reshape(a['count'], n) + return np.frombuffer(data, dtype, a['count'] * n, offset).reshape(a['count'], n) + + +def mesh_data(gltf, buffers, mesh_index): + """Positions, normals, uvs and triangle indices of the first primitive of a mesh.""" + p = gltf['meshes'][mesh_index]['primitives'][0] + attrs = p['attributes'] + return (accessor(gltf, buffers, attrs['POSITION']).astype(np.float32), + accessor(gltf, buffers, attrs['NORMAL']).astype(np.float32), + accessor(gltf, buffers, attrs['TEXCOORD_0']).astype(np.float32), + accessor(gltf, buffers, p['indices']).astype(np.uint32).reshape(-1, 3)) + + +def write(path, positions, normals, uvs, faces, material=None, images=()): + """ + Write a one-mesh glTF with a .bin next to it. 'material' is an optional + glTF material dict and 'images' a list of image URIs it refers to by index. + """ + positions = np.ascontiguousarray(positions, np.float32) + normals = np.ascontiguousarray(normals, np.float32) + uvs = np.ascontiguousarray(uvs, np.float32) + faces = np.ascontiguousarray(faces, np.uint32).reshape(-1) + blobs = [positions.tobytes(), normals.tobytes(), uvs.tobytes(), faces.tobytes()] + views, offset = [], 0 + for i, blob in enumerate(blobs): + views.append(dict(buffer=0, byteOffset=offset, byteLength=len(blob), target=34963 if i == 3 else 34962)) + offset += len(blob) + accessors = [ + dict(bufferView=0, componentType=5126, count=len(positions), type='VEC3', + min=positions.min(0).tolist(), max=positions.max(0).tolist()), + dict(bufferView=1, componentType=5126, count=len(normals), type='VEC3'), + dict(bufferView=2, componentType=5126, count=len(uvs), type='VEC2'), + dict(bufferView=3, componentType=5125, count=len(faces), type='SCALAR'), + ] + primitive = dict(attributes=dict(POSITION=0, NORMAL=1, TEXCOORD_0=2), indices=3) + gltf = dict(asset=dict(version='2.0', generator='kpi_rover garden'), + scene=0, scenes=[dict(nodes=[0])], nodes=[dict(mesh=0, name='mesh')], + meshes=[dict(name='mesh', primitives=[primitive])], + accessors=accessors, bufferViews=views, + buffers=[dict(uri=os.path.basename(path)[:-5] + '.bin', byteLength=offset)]) + if material: + primitive['material'] = 0 + gltf['materials'] = [material] + if images: + gltf['images'] = [dict(uri=uri) for uri in images] + gltf['textures'] = [dict(source=i) for i in range(len(images))] + with open(path[:-5] + '.bin', 'wb') as f: + for blob in blobs: + f.write(blob) + with open(path, 'w') as f: + json.dump(gltf, f) diff --git a/src/platform/kpi_rover_worlds/common/python/scatter.py b/src/platform/kpi_rover_worlds/common/python/scatter.py new file mode 100644 index 0000000..66e10b3 --- /dev/null +++ b/src/platform/kpi_rover_worlds/common/python/scatter.py @@ -0,0 +1,136 @@ +""" +Random scattering of library objects (objects.yaml) over the free area of a +world, used by world generators. + +The area is a rectangle with shapes in it: + - 'keep_out' shapes, where objects are not placed (routes, start points, + structures), and + - 'obstacles', which the robot cannot pass (walls, structures). +Shapes are tuples: + ('circle', x, y, radius) + ('segment', x1, y1, x2, y2, half_width) + ('arc', cx, cy, radius, a1, a2, half_width) counterclockwise from a1 to a2 + ('rect', x_min, x_max, y_min, y_max) + +An object is accepted only if the free space for the robot (everything +farther than ROBOT_RADIUS from obstacles, objects and the area border) stays +as connected as it was without objects, so objects never close a passage or +cut off a part of the area. +""" + +import math +import random +import sys + +import numpy as np +from scipy import ndimage + +from .sdf import OBJECTS + +RESOLUTION = 0.05 # grid cell size, m +ROBOT_RADIUS = 0.2 # robot footprint radius (0.27 x 0.26 m), m +GAP = 0.05 # minimal gap between objects and keep-out shapes, m +ATTEMPTS = 200 # placement attempts per object + + +class Grid: + def __init__(self, x_min, x_max, y_min, y_max): + self.x_min, self.y_min = x_min, y_min + self.nx = int(math.ceil((x_max - x_min) / RESOLUTION)) + self.ny = int(math.ceil((y_max - y_min) / RESOLUTION)) + xs = x_min + (np.arange(self.nx) + 0.5) * RESOLUTION + ys = y_min + (np.arange(self.ny) + 0.5) * RESOLUTION + self.x, self.y = np.meshgrid(xs, ys, indexing='ij') + + def mask(self, shapes, inflate=0.0): + """Cells within 'inflate' of any of the shapes.""" + result = np.zeros((self.nx, self.ny), bool) + for shape in shapes: + kind, *p = shape + if kind == 'circle': + x, y, r = p + result |= np.hypot(self.x - x, self.y - y) <= r + inflate + elif kind == 'segment': + x1, y1, x2, y2, half = p + dx, dy = x2 - x1, y2 - y1 + t = np.clip(((self.x - x1) * dx + (self.y - y1) * dy) / max(dx * dx + dy * dy, 1e-12), 0, 1) + result |= np.hypot(self.x - x1 - t * dx, self.y - y1 - t * dy) <= half + inflate + elif kind == 'arc': + cx, cy, r, a1, a2, half = p + a = np.mod(np.arctan2(self.y - cy, self.x - cx) - a1, 2 * math.pi) + within = a <= (a2 - a1) + ring = np.abs(np.hypot(self.x - cx, self.y - cy) - r) <= half + inflate + ends = [('circle', cx + r * math.cos(b), cy + r * math.sin(b), half) for b in (a1, a2)] + result |= (within & ring) | self.mask(ends, inflate) + elif kind == 'rect': + x0, x1, y0, y1 = p + result |= ((self.x >= x0 - inflate) & (self.x <= x1 + inflate) & + (self.y >= y0 - inflate) & (self.y <= y1 + inflate)) + else: + raise ValueError(f'Unknown shape {kind}.') + return result + + def border(self, inflate): + """Cells within 'inflate' of the area border.""" + r = int(math.ceil(inflate / RESOLUTION)) + result = np.zeros((self.nx, self.ny), bool) + result[:r, :] = result[-r:, :] = result[:, :r] = result[:, -r:] = True + return result + + +def components(free): + """Number of 4-connected components of free cells.""" + return ndimage.label(free)[1] # the default structure of ndimage.label is 4-connectivity in 2D + + +def scatter(rng, area, keep_out, obstacles, count, scale=1.0): + """ + Place 'count' random objects of the library (any kind, each type as likely), + scaled by 'scale' (for a scaled-down world). + Returns ([[type, x, y, yaw], ...], number of objects that did not fit). + """ + types = sorted(OBJECTS) + grid = Grid(*area) + blocked = grid.mask(keep_out) | grid.mask(obstacles) + fixed = grid.mask(obstacles, ROBOT_RADIUS) | grid.border(ROBOT_RADIUS) + baseline = components(~fixed) + # Cells the robot cannot reach the center of: 'fixed' and the placed objects, inflated by the robot radius. + occupied = fixed.copy() + + placed, shapes, skipped = [], [], 0 + for _ in range(count): + type_ = rng.choice(types) + sx, sy = (s * scale for s in OBJECTS[type_]['size'][:2]) + radius = math.hypot(sx, sy) / 2 + for _ in range(ATTEMPTS): + x = rng.uniform(area[0] + radius, area[1] - radius) + y = rng.uniform(area[2] + radius, area[3] - radius) + if any(math.hypot(x - px, y - py) < radius + pr + GAP for _, px, py, pr in shapes): + continue + if grid.mask([('circle', x, y, radius)], GAP)[blocked].any(): + continue + circle = ('circle', x, y, radius) + with_object = occupied | grid.mask([circle], ROBOT_RADIUS) + if components(~with_object) > baseline: + continue + shapes.append(circle) + occupied = with_object + placed.append([type_, round(x, 3), round(y, 3), round(rng.uniform(-math.pi, math.pi), 3)]) + break + else: + skipped += 1 + return placed, skipped + + +def scatter_from_args(args, area, keep_out, obstacles, label, scale=1.0): + """ + Scatter objects for world arguments 'objects' (their number) and 'objects_seed' + (empty for a new random seed) and print the seed, so the placement can be + repeated with objects_seed:=. + """ + seed = args.get('objects_seed') or str(random.SystemRandom().randrange(1000000)) + rng = random.Random(f'objects:{seed}') + placed, skipped = scatter(rng, area, keep_out, obstacles, int(args.get('objects', 0)), scale) + note = f', {skipped} did not fit' if skipped else '' + print(f'[{label}] objects_seed:={seed}: {len(placed)} objects placed{note}', file=sys.stderr, flush=True) + return placed diff --git a/src/platform/kpi_rover_worlds/common/python/sdf.py b/src/platform/kpi_rover_worlds/common/python/sdf.py new file mode 100644 index 0000000..1a9993b --- /dev/null +++ b/src/platform/kpi_rover_worlds/common/python/sdf.py @@ -0,0 +1,320 @@ +"""SDF building blocks for the world generators.""" + +import math +import os +import xml.etree.ElementTree as ET + +import yaml + +from . import textured_box +from .world_info import CONFIG_DIR, SHARE_DIR + +ASSETS_DIR = os.path.join(SHARE_DIR, 'assets') +TEXTURES_DIR = os.path.join(ASSETS_DIR, 'textures') +MESHES_DIR = os.path.join(ASSETS_DIR, 'meshes') + + +def _load(name): + with open(os.path.join(CONFIG_DIR, name + '.yaml')) as f: + return yaml.safe_load(f) + + +FLOORS = _load('floors') +MARKINGS = _load('markings') +WALLS = _load('walls') +OBJECTS = _load('objects') + +# Visibility flags; the robot sensor masks are in kpi_rover_description (camera.xacro, lidar.xacro). +VISIBLE_ALL = 4294967295 +VISIBLE_NO_LIDAR = 4 # grass the robot drives through +VISIBLE_GUI_ONLY = 2 +VISIBLE_ROBOT_ONLY = 536870912 # bit 29, outside the GUI mask 0x0FFFFFFF + +MARKING_THICKNESS = 0.001 + + +def num(v): + if isinstance(v, bool): + return str(v).lower() + if isinstance(v, (int, str)): + return str(v) + text = f'{v:.10g}' + return '0' if text == '-0' else text + + +def el(parent, tag, *values, **attrib): + e = ET.SubElement(parent, tag, attrib) + if values: + e.text = ' '.join(map(num, values)) + return e + + +def to_string(root): + ET.indent(root, ' ') + return ET.tostring(root, encoding='unicode', xml_declaration=True) + '\n' + + +def material(parent, color, texture=''): + """'texture' is an image in assets/textures, or a photo texture directory (name or absolute path).""" + m = el(parent, 'material') + el(m, 'ambient', *color, 1) + el(m, 'diffuse', *color, 1) + if texture: + metal = el(el(m, 'pbr'), 'metal') + name = os.path.basename(texture) + if '.' in name: + el(metal, 'albedo_map', os.path.join(TEXTURES_DIR, texture)) + el(metal, 'roughness', '0.9') + else: + directory = os.path.join(TEXTURES_DIR, texture) + for kind in ('albedo', 'normal', 'roughness'): + el(metal, f'{kind}_map', f'{directory}/{name}_{kind}.jpg') + el(metal, 'roughness', '1.0') + el(metal, 'metalness', '0.0') + + +def world(name, shadows=False, sky=(0.7, 0.7, 0.7), skybox=False, ambient=0.6, sun=(-0.3, 0.2, -0.9)): + root = ET.Element('sdf', version='1.9') + w = el(root, 'world', name=name) + for plugin, system in (('physics', 'Physics'), ('user-commands', 'UserCommands'), + ('scene-broadcaster', 'SceneBroadcaster'), ('sensors', 'Sensors'), ('imu', 'Imu')): + p = el(w, 'plugin', filename=f'gz-sim-{plugin}-system', name=f'gz::sim::systems::{system}') + if system == 'Sensors': + el(p, 'render_engine', 'ogre2') + el(w, 'gravity', '0 0 -9.8') + physics = el(w, 'physics', default='0', name='default_physics', type='ode') + el(physics, 'max_step_size', '0.01') + el(physics, 'real_time_factor', '1') + el(physics, 'real_time_update_rate', '100') + scene = el(w, 'scene') + el(scene, 'ambient', ambient, ambient, ambient, 1) + el(scene, 'background', *sky, 1) + el(scene, 'shadows', shadows) + if skybox: + el(scene, 'sky') + light = el(w, 'light', name='sun', type='directional') + el(light, 'pose', '0 0 10 0 0 0') + el(light, 'diffuse', '0.8 0.8 0.8 1') + el(light, 'specular', '0.2 0.2 0.2 1') + el(light, 'direction', *sun) + el(light, 'cast_shadows', shadows) + return root, w + + +def static_model(parent, name, pose=None): + """Returns the link of a new static model.""" + model = el(parent, 'model', name=name) + el(model, 'static', 'true') + if pose: + el(model, 'pose', *pose) + return el(model, 'link', name='link') + + +def plane(parent, size_x, size_y): + p = el(el(parent, 'geometry'), 'plane') + el(p, 'normal', '0 0 1') + el(p, 'size', size_x, size_y) + + +def friction(collision, mu): + ode = el(el(el(collision, 'surface'), 'friction'), 'ode') + el(ode, 'mu', mu) + el(ode, 'mu2', mu) + + +def floor(parent, kind, size_x, size_y): + """A textured floor is made of tiles, one texture repeat each.""" + cfg = FLOORS[kind] + link = static_model(parent, 'ground_plane') + collision = el(link, 'collision', name='collision') + plane(collision, size_x, size_y) + friction(collision, cfg['mu']) + if not cfg['texture']: + visual = el(link, 'visual', name='visual') + plane(visual, size_x, size_y) + material(visual, cfg['color']) + return + nx, ny = max(1, round(size_x / cfg['tile'])), max(1, round(size_y / cfg['tile'])) + tx, ty = size_x / nx, size_y / ny + for k in range(nx * ny): + visual = el(link, 'visual', name=f'tile_{k}') + el(visual, 'pose', tx * (k % nx + 0.5 - nx / 2), ty * (k // nx + 0.5 - ny / 2), 0, 0, 0, 0) + plane(visual, tx, ty) + material(visual, cfg['color'], cfg['texture']) + + +def marking_line(link, name, x1, y1, x2, y2, style, z1=0.0, z2=0.0, width=0.05, start='flat', end='flat', extend=0.0, + fine=False, visibility=VISIBLE_ALL): + """ + start, end: 'flat' (lengthened by 'extend') or 'left'/'right', a 45 degree cut for a corner turning that way. + Striped lines are split into segments 4 widths long, 1 width if 'fine' (to follow a curved surface). + """ + cfg = MARKINGS[style] + dist = math.dist((x1, y1, z1), (x2, y2, z2)) + dx, dy, dz = (x2 - x1) / dist, (y2 - y1) / dist, (z2 - z1) / dist + yaw, pitch = math.atan2(dy, dx), -math.asin(dz) + start_offset = extend if start == 'flat' else -width / 2 + length = dist + start_offset + (extend if end == 'flat' else -width / 2) + bx, by, bz = x1 - dx * start_offset, y1 - dy * start_offset, z1 - dz * start_offset + texture = cfg['texture'].replace('.png', '_tile.png') if fine else cfg['texture'] + n = max(1, round(length / (width if fine else 4 * width))) if fine or texture else 1 + seg = length / n + for k in range(n): + s = seg * (k + 0.5) + visual = el(link, 'visual', name=f'{name}_{k}') + el(visual, 'pose', bx + dx * s, by + dy * s, bz + dz * s + MARKING_THICKNESS / 2, 0, pitch, yaw) + el(el(el(visual, 'geometry'), 'box'), 'size', seg, width, MARKING_THICKNESS) + material(visual, cfg['color'], texture) + el(visual, 'visibility_flags', visibility) + for side, turn, x, y in (('start', start, bx, by), ('end', end, bx + dx * length, by + dy * length)): + if turn != 'flat': + visual = el(link, 'visual', name=f'{name}_{side}_miter') + el(visual, 'pose', x, y, 0, 0, 0, yaw) + mesh = el(el(visual, 'geometry'), 'mesh') + el(mesh, 'uri', f'file://{MESHES_DIR}/miter_{side}_{turn}.obj') + el(mesh, 'scale', width, width, MARKING_THICKNESS) + material(visual, cfg['color'], cfg['texture']) + el(visual, 'visibility_flags', visibility) + + +def marking_arc(link, name, cx, cy, r, a1, a2, style, width=0.05, visibility=VISIBLE_ALL): + """Counterclockwise from a1 to a2, of straight segments 4 widths long; alternate ones are raised against z-fighting.""" + cfg = MARKINGS[style] + n = max(1, round((a2 - a1) * r / (4 * width))) + step = (a2 - a1) / n + for k in range(n): + a = a1 + step * (k + 0.5) + visual = el(link, 'visual', name=f'{name}_{k}') + el(visual, 'pose', cx + r * math.cos(step / 2) * math.cos(a), cy + r * math.cos(step / 2) * math.sin(a), + MARKING_THICKNESS / 2 + (k % 2) * 0.0001, 0, 0, a + math.pi / 2) + el(el(el(visual, 'geometry'), 'box'), 'size', 2 * r * math.sin(step / 2) + width * math.tan(step / 2), width, + MARKING_THICKNESS) + material(visual, cfg['color'], cfg['texture']) + el(visual, 'visibility_flags', visibility) + + +def mesh_visual(link, name, mesh): + visual = el(link, 'visual', name=name) + el(el(el(visual, 'geometry'), 'mesh'), 'uri', f'file://{mesh}') + return visual + + +def start_point(parent, name, x, y, yaw, z=0.0): + """Robot footprint and heading arrow, GUI only; the launch file finds it by the model name.""" + link = static_model(parent, f'start_point_{name}', (x, y, z + 0.001, 0, 0, yaw)) + corners = [(0.15, -0.15), (0.15, 0.15), (-0.15, 0.15), (-0.15, -0.15)] + for i, side in enumerate(('front', 'left', 'back', 'right')): + marking_line(link, f'outline_{side}', *corners[i], *corners[(i + 1) % 4], 'green', width=0.01, + start='left', end='left', visibility=VISIBLE_GUI_ONLY) + marking_line(link, 'arrow_shaft', -0.15, -0.25, 0.15, -0.25, 'green', width=0.02, visibility=VISIBLE_GUI_ONLY) + visual = el(link, 'visual', name='arrow_head') + polyline = el(el(visual, 'geometry'), 'polyline') + for point in ('0.15 -0.31', '0.27 -0.25', '0.15 -0.19'): + el(polyline, 'point', point) + el(polyline, 'height', '0.001') + material(visual, MARKINGS['green']['color']) + el(visual, 'visibility_flags', VISIBLE_GUI_ONLY) + + +def box_geometry(parent, sx, sy, sz, mesh=''): + geometry = el(parent, 'geometry') + if mesh: + el(el(geometry, 'mesh'), 'uri', f'file://{mesh}') + else: + el(el(geometry, 'box'), 'size', sx, sy, sz) + + +def solid_box(link, name, x, y, z, sx, sy, sz, color=None, wall_material=None, pitch=0, yaw=0, view='solid', + transparency=0.7, footprint_scale=1, footprint_color=None): + """ + Box with a collision; a wall_material of walls.yaml gives its color and texture at the real size. + view (GUI only): solid, transparent, hidden, or marking - its footprint, footprint_scale as wide. + """ + texture = mesh = '' + if wall_material: + cfg = WALLS[wall_material] + color, texture = cfg['color'], cfg['texture'] + if texture: + mesh = textured_box.box_mesh(sx, sy, sz, cfg['segment'], textured_box.WALL_TEXTURE_HEIGHT, z - sz / 2) + pose = (x, y, z, 0, pitch, yaw) + collision = el(link, 'collision', name=f'{name}_collision') + el(collision, 'pose', *pose) + box_geometry(collision, sx, sy, sz) + visual = el(link, 'visual', name=f'{name}_visual') + el(visual, 'pose', *pose) + box_geometry(visual, sx, sy, sz, mesh) + material(visual, color, texture) + el(visual, 'visibility_flags', VISIBLE_ALL if view == 'solid' else VISIBLE_ROBOT_ONLY) + if view == 'transparent': + visual = el(link, 'visual', name=f'{name}_gui_visual') + el(visual, 'pose', *pose) + box_geometry(visual, sx, sy, sz, mesh) + material(visual, color, texture) + el(visual, 'transparency', transparency) + el(visual, 'visibility_flags', VISIBLE_GUI_ONLY) + if view == 'marking': + visual = el(link, 'visual', name=f'{name}_footprint') + el(visual, 'pose', x, y, 0.0015, 0, 0, yaw) + box_geometry(visual, sx, sy * footprint_scale, 0.001) + material(visual, footprint_color or color) + el(visual, 'visibility_flags', VISIBLE_GUI_ONLY) + + +def wall(link, name, x, y, yaw, length, height=0.5, thickness=0.05, material='plain', view='solid'): + solid_box(link, name, x, y, height / 2, length, thickness, height, wall_material=material, yaw=yaw, view=view, + transparency=0.35, footprint_color=WALLS['plain']['color']) + + +def perimeter_walls(parent, size_x, size_y, material, height=0.5, thickness=0.1): + link = static_model(parent, 'perimeter_walls') + for name, x, y, yaw, length in (('north', 0, (size_y + thickness) / 2, 0, size_x + 2 * thickness), + ('south', 0, -(size_y + thickness) / 2, math.pi, size_x + 2 * thickness), + ('east', (size_x + thickness) / 2, 0, math.pi / 2, size_y), + ('west', -(size_x + thickness) / 2, 0, -math.pi / 2, size_y)): + wall(link, name, x, y, yaw, length, height, thickness, material) + + +def scatter_object(parent, name, kind, x, y, yaw, z=0.0, scale=1.0): + """An object of objects.yaml, its origin on the ground under its center; mass scales with the volume.""" + cfg = OBJECTS[kind] + k = float(scale) + sx, sy, sz = (v * k for v in cfg['size']) + mass = cfg['mass'] * k ** 3 + model = el(parent, 'model', name=name) + el(model, 'pose', x, y, z, 0, 0, yaw) + link = el(model, 'link', name='link') + inertial = el(link, 'inertial') + el(inertial, 'pose', 0, 0, sz / 2, 0, 0, 0) + el(inertial, 'mass', mass) + inertia = el(inertial, 'inertia') + el(inertia, 'ixx', mass * (sy ** 2 + sz ** 2) / 12) + el(inertia, 'iyy', mass * (sx ** 2 + sz ** 2) / 12) + el(inertia, 'izz', mass * (sx ** 2 + sy ** 2) / 12) + for axes in ('ixy', 'ixz', 'iyz'): + el(inertia, axes, 0) + if cfg['shape'] == 'box': + _object_collision(link, 'collision', sz / 2, 'box', size=(sx, sy, sz)) + elif cfg['shape'] == 'cylinder': + _object_collision(link, 'collision', sz / 2, 'cylinder', radius=max(sx, sy) / 2, length=sz) + else: + base = 0.03 * k # cone base plate + _object_collision(link, 'base_collision', base / 2, 'box', size=(sx, sy, base)) + _object_collision(link, 'body_collision', (sz + base) / 2, 'cylinder', radius=cfg['radius'] * k, + length=sz - base) + visual = el(link, 'visual', name='visual') + cx, cy, cz = (v * k for v in cfg['center']) + el(visual, 'pose', -cx, -cy, sz / 2 - cz, cfg['roll'], 0, 0) + mesh = el(el(visual, 'geometry'), 'mesh') + el(mesh, 'uri', f"file://{ASSETS_DIR}/{cfg['mesh']}") + el(mesh, 'scale', k, k, k) + if 'texture' in cfg: + material(visual, (1, 1, 1), cfg['texture']) + + +def _object_collision(link, name, z, shape, **dims): + collision = el(link, 'collision', name=name) + el(collision, 'pose', 0, 0, z, 0, 0, 0) + geometry = el(el(collision, 'geometry'), shape) + for dim, value in dims.items(): + el(geometry, dim, *(value if isinstance(value, tuple) else (value,))) + friction(collision, 0.6) diff --git a/src/platform/kpi_rover_worlds/common/python/textured_box.py b/src/platform/kpi_rover_worlds/common/python/textured_box.py new file mode 100644 index 0000000..e7567dd --- /dev/null +++ b/src/platform/kpi_rover_worlds/common/python/textured_box.py @@ -0,0 +1,64 @@ +""" +Box meshes with texture coordinates in metres, for textured walls and arches. + +A box primitive maps a texture onto each whole face, so a wall texture made +for a wall 'segment' m long and WALL_TEXTURE_HEIGHT m high (walls.yaml) is +stretched or squashed on boxes of other sizes, e.g. short walls and arch +posts. These meshes keep the texture at its real size on every face, with +the texture height counted from the floor (a lintel shows the top of the +texture, as the wall around it does). sdf.solid_box makes them for its wall materials. +""" + +import hashlib +import os + +CACHE_DIR = os.path.join(os.path.expanduser('~'), '.cache', 'kpi_rover', 'meshes') +WALL_TEXTURE_HEIGHT = 0.5 + + +def box_mesh(sx, sy, sz, tile_u, tile_v, z0=0.0): + """ + OBJ path of a box centered at the origin (sx along X, sy along Y, sz up) + whose bottom is z0 above the floor, with texture coordinates in units of + tile_u along the box and tile_v up; written to CACHE_DIR if missing. + """ + name = 'box_' + hashlib.sha1(repr((round(sx, 4), round(sy, 4), round(sz, 4), round(tile_u, 4), round(tile_v, 4), + round(z0, 4))).encode()).hexdigest()[:12] + '.obj' + path = os.path.join(CACHE_DIR, name) + if os.path.isfile(path): + return path + hx, hy, hz = sx / 2, sy / 2, sz / 2 + + def v(z): + return (z0 + z + hz) / tile_v + + # Each face: normal, corners counterclockwise seen from outside, their texture coordinates. + faces = [ + ((0, -1, 0), [(-hx, -hy, -hz), (hx, -hy, -hz), (hx, -hy, hz), (-hx, -hy, hz)], + [((x + hx) / tile_u, v(z)) for x, _, z in [(-hx, 0, -hz), (hx, 0, -hz), (hx, 0, hz), (-hx, 0, hz)]]), + ((0, 1, 0), [(hx, hy, -hz), (-hx, hy, -hz), (-hx, hy, hz), (hx, hy, hz)], + [((hx - x) / tile_u, v(z)) for x, _, z in [(hx, 0, -hz), (-hx, 0, -hz), (-hx, 0, hz), (hx, 0, hz)]]), + ((1, 0, 0), [(hx, -hy, -hz), (hx, hy, -hz), (hx, hy, hz), (hx, -hy, hz)], + [((y + hy) / tile_u, v(z)) for _, y, z in [(0, -hy, -hz), (0, hy, -hz), (0, hy, hz), (0, -hy, hz)]]), + ((-1, 0, 0), [(-hx, hy, -hz), (-hx, -hy, -hz), (-hx, -hy, hz), (-hx, hy, hz)], + [((hy - y) / tile_u, v(z)) for _, y, z in [(0, hy, -hz), (0, -hy, -hz), (0, -hy, hz), (0, hy, hz)]]), + ((0, 0, 1), [(-hx, -hy, hz), (hx, -hy, hz), (hx, hy, hz), (-hx, hy, hz)], + [((x + hx) / tile_u, (y + hy) / tile_u) for x, y, _ in [(-hx, -hy, 0), (hx, -hy, 0), (hx, hy, 0), (-hx, hy, 0)]]), + ((0, 0, -1), [(-hx, hy, -hz), (hx, hy, -hz), (hx, -hy, -hz), (-hx, -hy, -hz)], + [((x + hx) / tile_u, (y + hy) / tile_u) for x, y, _ in [(-hx, hy, 0), (hx, hy, 0), (hx, -hy, 0), (-hx, -hy, 0)]]), + ] + lines = ['# Textured box, generated by textured_box.py'] + elements = [] + for i, (normal, corners, uvs) in enumerate(faces): + lines += ['v {:.5f} {:.5f} {:.5f}'.format(*c) for c in corners] + lines += ['vt {:.5f} {:.5f}'.format(*uv) for uv in uvs] + lines.append('vn {:.1f} {:.1f} {:.1f}'.format(*normal)) + k = 4 * i + elements.append(' '.join(f'{k + j + 1}/{k + j + 1}/{i + 1}' for j in range(4))) + lines += ['f ' + e for e in elements] + os.makedirs(CACHE_DIR, exist_ok=True) + tmp = path + f'.{os.getpid()}.tmp' + with open(tmp, 'w') as f: + f.write('\n'.join(lines) + '\n') + os.replace(tmp, path) + return path diff --git a/src/platform/kpi_rover_worlds/common/python/world_info.py b/src/platform/kpi_rover_worlds/common/python/world_info.py new file mode 100644 index 0000000..cf0e46d --- /dev/null +++ b/src/platform/kpi_rover_worlds/common/python/world_info.py @@ -0,0 +1,449 @@ +""" +Descriptions of the worlds and their arguments, and building their SDF, for +the launch file and for tools such as a GUI. + +Every world has a directory of its own, worlds//, with the world file +.world (SDF) or .py, a configurable world whose build(args) +returns the SDF root (see sdf.py) for {arg: parsed value}, and a manifest +.yaml describing the world and each of its arguments: + + title: Garden + description: Apple orchard in the steppe with a field road around it. + start_points: # named start points (see the 'start' launch argument) + road_a: South side of the road + garden_a: West part of the orchard + groups: # optional: order of argument groups in a UI + terrain: Terrain + args: + relief: + type: choice # bool, int, float, string, choice + choices: [steppe, hills] # for 'choice'; or choices_from: floors + # (a common/config/.yaml file) + label: Relief + description: ... + group: terrain + terrain_seed: {type: int, min: 0, default: 11, label: Terrain seed} + friction: {type: float, label: Friction, advanced: true} # shown under 'more options' in a UI + seed: {type: int, show_if: {maze: random}} # shown only while other arguments have these values + presets: # optional: ready sets of arguments + light: + label: Light + description: No grass and shadows, the fastest simulation. + args: {grass: 0, shadows: false} + previews: ... # optional: pictures, see render_previews.py + objects_scale: 0.345 # optional: size of library objects in a scaled-down world + +Pictures rendered by render_previews.py are in worlds//previews/: +describe() gives their paths as 'image' of the world, of each start point +and of each preset, 'layers' {base, overlay} names the two arguments whose +pictures are put one over the other (the overlay ones are transparent PNG), +and as 'images' [{value, image}] of the arguments. + +Command line, for tools: + python3 -m kpi_rover_worlds.world_info --json # all worlds, their arguments and defaults + python3 -m kpi_rover_worlds.world_info --check # manifests match the worlds + python3 -m kpi_rover_worlds.world_info --build garden grass:=0.5 mud:=0.25 # prints the world file +""" + +import hashlib +import json +import os +import sys +import xml.etree.ElementTree as ET + +import yaml +from ament_index_python.packages import get_package_share_directory + +SHARE_DIR = get_package_share_directory('kpi_rover_worlds') +WORLDS_DIR = os.path.join(SHARE_DIR, 'worlds') +CONFIG_DIR = os.path.join(SHARE_DIR, 'common', 'config') +EXTENSIONS = ('.py', '.world') +# World files built by build(): the CACHE_KEEP most recently used are kept. +CACHE_DIR = os.path.join(os.path.expanduser('~'), '.cache', 'kpi_rover', 'worlds') +CACHE_KEEP = 20 +TYPES = ('bool', 'int', 'float', 'string', 'choice') + + +def world_name(filename): + """World name for a world file name, or None if it is not a world file.""" + for ext in EXTENSIONS: + if filename.endswith(ext): + return filename[:-len(ext)] + return None + + +def world_files(worlds_dir=WORLDS_DIR): + """{name: path} of the worlds: /.py or /.world in the worlds folder.""" + files = {} + for name in sorted(os.listdir(worlds_dir)): + for ext in EXTENSIONS: + path = os.path.join(worlds_dir, name, name + ext) + if os.path.isfile(path): + files[name] = path + break + return files + + +def declared_args(path): + """{name: default as text} of the arguments of a configurable world, in order; empty for an SDF world.""" + return {arg: as_text(spec['default']) for arg, spec in (manifest(path).get('args') or {}).items() + if 'default' in (spec or {})} + + +def as_text(value): + """A manifest value (YAML: bool, number or string) as given on the command line.""" + return str(value).lower() if isinstance(value, bool) else str(value) + + +def resolve(world, worlds_dir=WORLDS_DIR): + """Path of a world given by name or by path; raise ValueError if there is none.""" + if os.path.isfile(world): + return os.path.abspath(world) + files = world_files(worlds_dir) + if world in files: + return files[world] + raise ValueError(f"World '{world}' not found. Available worlds: {', '.join(files)} " + f"(or pass a path to a world file).") + + +_generators = {} + + +def generator(path): + """The module of a .py world, loaded once.""" + if path not in _generators: + import importlib.util + world_dir = os.path.dirname(path) + spec = importlib.util.spec_from_file_location(f'kpi_rover_world_{os.path.basename(world_dir)}', path) + module = importlib.util.module_from_spec(spec) + # Its own modules (e.g. garden/terrain.py) are found next to it while it is imported. + sys.path.insert(0, world_dir) + try: + spec.loader.exec_module(module) + finally: + sys.path.remove(world_dir) + _generators[path] = module + return _generators[path] + + +def world_sdf(path, args, worlds_dir=WORLDS_DIR): + """SDF of a world file: an SDF file as it is, or a .py world built for {arg: string value}.""" + if not path.endswith('.py'): + with open(path) as f: + return f.read() + validate(path, args, worlds_dir) + from .sdf import to_string + specs = describe(path, worlds_dir)['args'] + values = {arg: spec['default'] for arg, spec in specs.items()} + values.update({arg: parse(specs[arg], value) for arg, value in args.items()}) + return to_string(generator(path).build(values)) + + +def parse_args(text): + """{name: value} of world arguments given as space separated 'name:=value' pairs.""" + args = {} + for pair in text.split(): + name, sep, value = pair.partition(':=') + if not sep: + raise ValueError(f"Invalid world argument '{pair}', expected 'name:=value'.") + args[name] = value + return args + + +def build(world, args, worlds_dir=WORLDS_DIR): + """ + Path of an SDF file for Gazebo of a world given by name or path: an SDF file as it is, or a configurable + world built with {arg: string value}, checked against its manifest, into CACHE_DIR/_.world. + """ + path = resolve(world, worlds_dir) + if not path.endswith('.py'): + if args: + raise ValueError(f"{os.path.basename(path)} is not a configurable world, it takes no arguments.") + return path + sdf = world_sdf(path, args, worlds_dir) + os.makedirs(CACHE_DIR, exist_ok=True) + digest = hashlib.sha1(sdf.encode()).hexdigest()[:12] + file = os.path.join(CACHE_DIR, f'{world_name(os.path.basename(path))}_{digest}.world') + if not os.path.isfile(file): + tmp = f'{file}.{os.getpid()}.tmp' # several launches may build the same world at once + with open(tmp, 'w') as f: + f.write(sdf) + os.replace(tmp, file) + os.utime(file) # marks it as recently used + clean_cache() + return file + + +def clean_cache(keep=CACHE_KEEP): + """Remove the least recently used world files from CACHE_DIR, keeping 'keep' of them.""" + files = [os.path.join(CACHE_DIR, f) for f in os.listdir(CACHE_DIR) if f.endswith('.world')] + files.sort(key=os.path.getmtime) + for file in files[:-keep]: + try: + os.remove(file) + except FileNotFoundError: + pass # removed by another launch + + +def start_poses(sdf): + """{name: (x, y, z, yaw)} of the start points of an SDF world: models named start_point_.""" + poses = {} + for model in ET.fromstring(sdf).iter('model'): + name = model.get('name', '') + if name.startswith('start_point_'): + x, y, z, _, _, yaw = map(float, model.findtext('pose', '0 0 0 0 0 0').split()) + poses[name[len('start_point_'):]] = (x, y, z, yaw) + return poses + + +def start_pose(path, name): + """(x, y, z, yaw) of a start point of an SDF world file; raise ValueError if there is none.""" + with open(path) as f: + poses = start_poses(f.read()) + if name not in poses: + raise ValueError(f"Start point '{name}' not found. Start points of the world: {', '.join(sorted(poses)) or 'none'}.") + return poses[name] + + +def options(name, worlds_dir=WORLDS_DIR): + """Option names from a common/config YAML file (floors, markings, walls).""" + with open(os.path.join(os.path.dirname(worlds_dir), 'common', 'config', name + '.yaml')) as f: + return list(yaml.safe_load(f)) + + +def manifest(path): + """The manifest of a world file (.yaml next to it), or an empty one.""" + name = world_name(os.path.basename(path)) + m = os.path.join(os.path.dirname(path), f'{name}.yaml') if name else None + if m and os.path.isfile(m): + with open(m) as f: + return yaml.safe_load(f) or {} + return {} + + +def describe(path, worlds_dir=WORLDS_DIR): + """ + Description of a world file: {name, file, title, description, image, start_points: [{name, label, image}], + groups, presets: [{name, label, description, args}], + args: {name: {type, default, label, description, group, advanced, choices, min, max, images, ...}}}. + Images are paths of existing pictures or absent. + """ + m = manifest(path) + name = world_name(os.path.basename(path)) + pictures = os.path.join(os.path.dirname(path), 'previews') + + layers = (m.get('previews') or {}).get('layers') + overlay = layers['overlay']['arg'] if layers else None + + def picture(filename): + # Overlay pictures are transparent PNG only (a JPEG of the same name would be a whole old frame). + for ext in (('.png',) if overlay and filename.startswith(overlay + '_') else ('.jpg', '.png')): + file = os.path.join(pictures, filename + ext) + if os.path.isfile(file): + return file + return None + + info = dict(name=name, file=path, title=m.get('title', name), description=m.get('description', ''), + image=picture('world'), objects_scale=m.get('objects_scale', 1.0), + start_points=start_point_list(m), groups=m.get('groups', {}), + presets=preset_list(m), args={}) + for point in info['start_points']: + point['image'] = picture('start_' + point['name']) + for preset in info['presets']: + preset['image'] = picture('preset_' + preset['name']) + if layers: + info['layers'] = dict(base=layers['base']['arg'], overlay=layers['overlay']['arg']) + if not path.endswith('.py'): + return info + specs = m.get('args', {}) + for arg, default in declared_args(path).items(): + spec = dict(specs.get(arg) or {}) + if 'choices_from' in spec: + spec['choices'] = options(spec.pop('choices_from'), worlds_dir) + spec.setdefault('type', 'choice' if 'choices' in spec else 'string') + spec.setdefault('label', arg) + spec['default'] = parse(spec, default) if default != '' else default + previews = m.get('previews') or {} + examples = (previews.get('args') or {}).get(arg, {}).get('values', []) + for layer in ((previews.get('layers') or {}).get(k) for k in ('base', 'overlay')): + if layer and layer['arg'] == arg: + examples = layer['values'] + images = [dict(value=parse(spec, str(v)), image=picture(f'{arg}_{format_value(spec, parse(spec, str(v)))}')) + for v in examples] + spec['images'] = [i for i in images if i['image']] + info['args'][arg] = spec + return info + + +def format_value(spec, value): + """The string form of a parsed argument value, as given on the command line.""" + if spec.get('type') == 'bool': + return 'true' if value else 'false' + if spec.get('type') == 'float': + return f'{value:g}' + return str(value) + + +def preset_list(m): + """[{name, label, description, args: {name: string value}}] of the presets of a manifest.""" + return [dict(name=str(n), label=p.get('label', str(n)), description=p.get('description', ''), + args={k: as_text(v) for k, v in (p.get('args') or {}).items()}) + for n, p in (m.get('presets') or {}).items()] + + +def start_point_list(m): + """[{name, label}] of the start points of a manifest; they can be listed as names or as {name: label}.""" + points = m.get('start_points') or [] + if isinstance(points, dict): + return [dict(name=str(n), label=label or str(n)) for n, label in points.items()] + return [dict(name=str(n), label=str(n)) for n in points] + + +def describe_all(worlds_dir=WORLDS_DIR): + return [describe(path, worlds_dir) for path in world_files(worlds_dir).values()] + + +def parse(spec, value): + """Parse a string world argument value by its spec; raise ValueError if it is not valid.""" + kind = spec.get('type', 'string') + if kind == 'bool': + if str(value).lower() in ('true', '1'): + return True + if str(value).lower() in ('false', '0'): + return False + raise ValueError(f"expected true or false, got '{value}'") + if kind in ('int', 'float'): + try: + v = int(value) if kind == 'int' else float(value) + except ValueError: + raise ValueError(f"expected {'an integer' if kind == 'int' else 'a number'}, got '{value}'") + if 'min' in spec and v < spec['min'] or 'max' in spec and v > spec['max']: + raise ValueError(f"expected a value from {spec.get('min', '-inf')} to {spec.get('max', 'inf')}, got {v}") + return v + if kind == 'choice' and value not in spec.get('choices', []): + raise ValueError(f"expected one of {', '.join(map(str, spec.get('choices', [])))}, got '{value}'") + return value + + +def validate(path, values, worlds_dir=WORLDS_DIR): + """Check {arg: string value} for a world; raise ValueError naming the argument at the first problem.""" + info = describe(path, worlds_dir) + declared = declared_args(path) + for arg, value in values.items(): + if arg not in declared: + raise ValueError(f"Unknown world argument '{arg}'. Arguments of {os.path.basename(path)}: " + f"{', '.join(info['args'])}.") + try: + parse(info['args'][arg], value) + except ValueError as e: + raise ValueError(f"World argument '{arg}': {e}.") from e + + +def promised_previews(m, info): + """Names (without extension) of the pictures in previews/ that the manifest asks render_previews.py for.""" + previews = m.get('previews') or {} + names = ['world'] if previews.get('world') else [] + if previews.get('start_points'): + names += ['start_' + p['name'] for p in info['start_points']] + if previews.get('presets'): + names += ['preset_' + p['name'] for p in info['presets']] + examples = {arg: e.get('values', []) for arg, e in (previews.get('args') or {}).items()} + for layer in ((previews.get('layers') or {}).get(k) for k in ('base', 'overlay')): + if layer: + examples[layer['arg']] = layer['values'] + for arg, values in examples.items(): + spec = info['args'].get(arg) + if spec: # an unknown argument is reported by check() + names += [f'{arg}_{format_value(spec, parse(spec, str(v)))}' for v in values] + return names + + +def check(worlds_dir=WORLDS_DIR): + """ + Problems of the worlds: pictures the manifest asks for are missing; arguments without a default, bad specs. + """ + problems = [] + for name, path in world_files(worlds_dir).items(): + m = manifest(path) + pictures = os.path.join(os.path.dirname(path), 'previews') + try: + for picture in promised_previews(m, describe(path, worlds_dir)): + if not any(os.path.isfile(os.path.join(pictures, picture + ext)) for ext in ('.jpg', '.png')): + problems.append(f'{name}: no picture previews/{picture}.jpg (render_previews.py {name})') + except ValueError: + pass # bad example values are reported below + if not path.endswith('.py'): + continue + if not m: + problems.append(f'{name}: no manifest {name}.yaml') + continue + declared = declared_args(path) + for arg, spec in m.get('args', {}).items(): + if arg not in declared: + problems.append(f'{name}: argument {arg} has no default') + else: + kind = spec.get('type', 'choice' if 'choices' in spec or 'choices_from' in spec else 'string') + if kind not in TYPES: + problems.append(f'{name}: argument {arg} has an unknown type {kind}') + try: + if declared[arg] != '': + parse(dict(spec, choices=options(spec['choices_from'], worlds_dir)) if 'choices_from' in spec + else spec, declared[arg]) + except ValueError as e: + problems.append(f'{name}: default of {arg}: {e}') + info = describe(path, worlds_dir) + for preset in info['presets']: + try: + validate(path, preset['args'], worlds_dir) + except ValueError as e: + problems.append(f"{name}: preset {preset['name']}: {e}") + for arg, spec in info['args'].items(): + for other, value in (spec.get('show_if') or {}).items(): + if other not in info['args']: + problems.append(f'{name}: show_if of {arg}: unknown argument {other}') + continue + try: + parse(info['args'][other], str(value)) + except ValueError as e: + problems.append(f'{name}: show_if of {arg}: {e}') + previews = m.get('previews') or {} + cameras = previews.get('cameras') or {} + for arg, example in (previews.get('args') or {}).items(): + if arg not in info['args']: + problems.append(f'{name}: previews of an unknown argument {arg}') + continue + if example.get('camera') not in cameras: + problems.append(f"{name}: previews of {arg}: unknown camera {example.get('camera')}") + for value in example.get('values', []): + try: + parse(info['args'][arg], str(value)) + except ValueError as e: + problems.append(f'{name}: previews of {arg}: {e}') + if previews.get('world') and previews['world'] not in cameras: + problems.append(f"{name}: previews: unknown world camera {previews['world']}") + return problems + + +def main(): + if len(sys.argv) > 2 and sys.argv[1] == '--build': + try: + print(build(sys.argv[2], parse_args(' '.join(sys.argv[3:])))) + except ValueError as e: + sys.exit(str(e)) + return + if '--check' in sys.argv: + problems = check() + print('\n'.join(problems) or 'All world manifests match their worlds.') + sys.exit(1 if problems else 0) + if '--json' in sys.argv: + print(json.dumps(describe_all(), ensure_ascii=False, indent=1)) + return + for info in describe_all(): + print(f"{info['name']}: {info['title']}") + for arg, spec in info['args'].items(): + choices = f" ({', '.join(map(str, spec['choices']))})" if 'choices' in spec else '' + print(f" {arg} = {spec['default']} [{spec['type']}{choices}] {spec.get('label', '')}") + + +if __name__ == '__main__': + main() diff --git a/src/platform/kpi_rover_worlds/package.xml b/src/platform/kpi_rover_worlds/package.xml new file mode 100644 index 0000000..3ef5e45 --- /dev/null +++ b/src/platform/kpi_rover_worlds/package.xml @@ -0,0 +1,26 @@ + + + + kpi_rover_worlds + 0.0.0 + Gazebo worlds for the KPI Rover simulation + rover + MIT + + ament_cmake + ament_cmake_python + + ament_index_python + + gz_msgs_vendor + gz_sim_vendor + gz_transport_vendor + python3-numpy + python3-pil + python3-scipy + python3-yaml + + + ament_cmake + + diff --git a/src/platform/kpi_rover_worlds/tools/render_previews.py b/src/platform/kpi_rover_worlds/tools/render_previews.py new file mode 100755 index 0000000..b6edb95 --- /dev/null +++ b/src/platform/kpi_rover_worlds/tools/render_previews.py @@ -0,0 +1,458 @@ +#!/usr/bin/env python3 +""" +Render the preview pictures of a world for tools such as a GUI: a picture of +the world, a view from the robot camera at each start point, and example +pictures of argument values. What to render is in the 'previews' section of +the world manifest (see world_info.py of kpi_rover_worlds): + + previews: + cameras: # name: [x, y, z, roll, pitch, yaw, horizontal fov], degrees + over: [-11, -11, 4, 0, 18, 45, 70] + close: [-2, -2, 0.25, 0, 25, 30, 60] + gui_cameras: [over] # cameras that see what the Gazebo window shows (default: the robot camera) + world: over # camera of the world picture + start_points: true # robot camera views from the start points + map: {center: [0, 0], size: 21} # where the map made with --sdf is: the square of 'size' m seen + # from right above, or {fit: , margin: 0.3}: around the plane of that model + presets: true # a picture of each preset of the world (with the world camera) + layers: # instead of examples of every combination of two arguments: + camera: over # the base pictures, with the overlay models hidden, and + base: {arg: floor, values: [plain, wood], hide: [square_marking]} + overlay: {arg: marking, values: [white, red], against: [plain, asphalt]} # the overlay cut out + args: # example pictures of argument values + grass: {camera: close, values: [0, 1, 3]} + items: {camera: close, values: [0, 20], with: {objects_seed: 1}} # 'with': more arguments + +The pictures go to worlds//previews/ or --out: world.jpg, start_.jpg, +_.jpg, preset_.jpg, with the other arguments at their defaults. +Layers make _.jpg without the overlay and _.png, +the overlay alone on a transparent background, so a tool can put any overlay on +any base. Needs Gazebo; runs a headless server for each set of world arguments. + + ros2 run kpi_rover_worlds render_previews.py garden --out src/platform/kpi_rover_worlds/worlds/garden/previews + ros2 run kpi_rover_worlds render_previews.py garden --only grass,start_points + +With --sdf it makes the map of a generated world file, e.g. for a GUI to show +where the robot can start; --partition keeps its Gazebo apart from a running one: + ros2 run kpi_rover_worlds render_previews.py garden --sdf --out /tmp/map --partition map + +map.jpg has north up. map.json: {center: [x, y], size, start_points: {name: [x, y, yaw]}, +heights: ground [[z]], surface: the top of the ground and everything on it [[z]]}, +rows from north to south over the map square. +""" + +import argparse +import glob +import json +import math +import os +import re +import subprocess +import sys +import tempfile +import time +import xml.etree.ElementTree as ET + +import numpy as np +from PIL import Image + +from kpi_rover_worlds import world_info + +# The robot camera relative to a start point: ahead, up (m), pitch and horizontal fov (degrees). +ROBOT_CAMERA = (0.135, 0.31, 3, 70) + +# Visibility masks of the preview cameras: like the robot camera (kpi_rover_description/urdf/camera.xacro), which +# doesn't see helpers shown only in the Gazebo window, or like the Gazebo window itself (cameras +# listed in 'gui_cameras' of the previews). +ROBOT_MASK = 4294967293 +GUI_MASK = 0x0FFFFFFF + +# Map picture size (px) and the height it is seen from (m): high, so it is nearly orthographic, +# but at most MAP_HEIGHT_RATIO map sizes, so the field of view stays wide enough for Gazebo. +MAP_PIXELS = 900 +MAP_HEIGHT = 60 +MAP_HEIGHT_RATIO = 5 + +# Ground height samples along each side of the map. +HEIGHT_SAMPLES = 129 +# Surface heights (map.json 'surface'): depth image size (px) and the grid it is reduced to (the highest +# point of each block, so thin walls and stems stay), frames to wait for. +DEPTH_PIXELS = 600 +SURFACE_SAMPLES = 200 +DEPTH_FRAMES = 4 + +# Frames to wait for from each camera before taking the last one: big models load for a few seconds. +SETTLE_FRAMES = 10 + + +def ground_heights(sdf, center, size, samples=HEIGHT_SAMPLES): + """ + Ground heights [[z]] over the map square, rows from north to south, from + the first height map collision of the world (0 without one). + """ + c = (np.arange(samples) / (samples - 1) - 0.5) * size + x, y = np.meshgrid(center[0] + c, center[1] - c) + z = np.zeros_like(x) + for collision in ET.fromstring(sdf).iter('collision'): + heightmap = collision.find('geometry/heightmap') + if heightmap is None: + continue + uri = heightmap.findtext('uri', '').replace('file://', '') + sx, sy, sz = map(float, heightmap.findtext('size', '1 1 1').split()) + z0 = float(collision.findtext('pose', '0 0 0 0 0 0').split()[2]) + image = np.asarray(Image.open(uri), float) + image /= 65535 if image.max() > 255 else 255 + rows, cols = image.shape[:2] + col = np.clip((x / sx + 0.5) * (cols - 1), 0, cols - 1).round().astype(int) + row = np.clip((0.5 - y / sy) * (rows - 1), 0, rows - 1).round().astype(int) + inside = (abs(x) <= sx / 2) & (abs(y) <= sy / 2) + z = np.where(inside, z0 + image[row, col] * sz, z) + break + return np.round(z, 3).tolist() + + +def collision_world(sdf): + """ + The world with its collisions shown instead of its visuals (except height + maps, which are only sampled): what a top view of it sees is the surface + the robot stands on, without leaves, grass and other things it drives + under or through. Included models (e.g. from Gazebo Fuel) stay as they are. + """ + root = ET.fromstring(sdf) + for link in root.iter('link'): + for visual in link.findall('visual'): + link.remove(visual) + for i, collision in enumerate(link.findall('collision')): + geometry = collision.find('geometry') + if geometry is None or geometry.find('heightmap') is not None: + continue + visual = ET.SubElement(link, 'visual', name=f'surface_{i}') + if collision.find('pose') is not None: + visual.append(collision.find('pose')) + visual.append(geometry) + return ET.tostring(root, encoding='unicode') + + +def run_gazebo(sdf, done, timeout): + """Run a headless Gazebo server on an SDF world until done() or the timeout.""" + with tempfile.TemporaryDirectory(prefix='kpi_rover_gz_') as tmp: + path = os.path.join(tmp, 'world.sdf') + with open(path, 'w') as f: + f.write(sdf) + with open(os.path.join(tmp, 'stderr'), 'w+') as err: + server = subprocess.Popen(['gz', 'sim', '-s', '-r', path], stdout=subprocess.DEVNULL, stderr=err, + start_new_session=True) + start = time.time() + try: + while not done() and time.time() - start < timeout: + if server.poll() is not None: + err.seek(0) + raise RuntimeError(f'Gazebo exited with {server.returncode}: {err.read()[-2000:]}') + time.sleep(1) + finally: + stop(server) + + +def surface_heights(sdf, center, size, timeout=120): + """ + Heights [[z]] of the top surface over the map square, rows from north to + south (SURFACE_SAMPLES each way): the ground, objects, walls and other + structures the robot would stand on or hit, from a depth camera looking + down at the collisions; None if it couldn't be rendered. + """ + from gz.msgs10.image_pb2 import Image as ImageMsg + from gz.transport13 import Node + x, y, height, _, _, _, fov = map_camera(center, size)[:7] + topic = f'/kpi_rover_preview_depth_{os.getpid()}' + sensor = f'''true + {topic} + {x} {y} {height} 0 {math.pi / 2} {math.pi / 2}21 + {math.radians(fov)} + {DEPTH_PIXELS}{DEPTH_PIXELS}R_FLOAT32 + 0.1{height * 2}''' + world = collision_world(sdf).replace('', sensor + '', 1) + frames = [] + node = Node() + node.subscribe(ImageMsg, topic, lambda msg: frames.append(msg)) + start = time.time() + try: + run_gazebo(world, lambda: len(frames) >= DEPTH_FRAMES, timeout) + except RuntimeError as e: + print(f' {e}', file=sys.stderr) + if not frames: + print(' no depth frames: no surface heights', file=sys.stderr) + return None + msg = frames[-1] + depth = np.frombuffer(msg.data, np.float32).reshape(msg.height, msg.width).astype(float) + top = np.where(np.isfinite(depth) & (depth < height * 2 - 0.01), height - depth, -np.inf) + ground = np.array(ground_heights(sdf, center, size, DEPTH_PIXELS)) + top = np.maximum(top, ground) + k = DEPTH_PIXELS // SURFACE_SAMPLES + n = SURFACE_SAMPLES + top = top[:k * n, :k * n].reshape(n, k, n, k).max(axis=(1, 3)) + print(f' surface heights in {time.time() - start:.0f} s') + return np.round(top, 3).tolist() + + +# A pixel of an overlay render that differs from the bare base by more than this (0-255) is the +# overlay; the alpha ramps up over OVERLAY_SOFT above it, for smooth edges. +OVERLAY_DIFF = 18 +OVERLAY_SOFT = 30 + + +def remove_models(sdf, names): + """The world without the named models.""" + for name in names: + sdf = re.sub(rf'.*?', '', sdf, flags=re.S) + return sdf + + +def render_layers(path, info, spec, out, size, quality, only): + """The base pictures without the overlay, and the overlay pictures cut out of their backgrounds.""" + layers = spec['layers'] + base, overlay = layers['base'], layers['overlay'] + if only and base['arg'] not in only and overlay['arg'] not in only: + return + camera = spec['cameras'][layers['camera']] + bases = list(base['values']) if not only or base['arg'] in only else [] + overlays = list(overlay['values']) if not only or overlay['arg'] in only else [] + bare = {} + for value in dict.fromkeys(bases + (list(overlay.get('against', [])) if overlays else [])): + print(f"{info['name']} {base['arg']}:={value} (without {overlay['arg']}): layer") + sdf = remove_models(world_info.world_sdf(path, {base['arg']: str(value)}), base.get('hide', [])) + picture = render(sdf, {'layer': camera}, size).get('layer') + if picture: + bare[value] = np.asarray(picture, float) + if value in bases: + picture.save(os.path.join(out, f"{base['arg']}_{value}.jpg"), quality=quality, optimize=True) + for value in overlays: + alpha, color = None, None + for back in overlay.get('against', []): + print(f"{info['name']} {base['arg']}:={back} {overlay['arg']}:={value}: overlay") + picture = render(world_info.world_sdf(path, {base['arg']: str(back), overlay['arg']: str(value)}), + {'layer': camera}, size).get('layer') + if picture is None or back not in bare: + continue + picture = np.asarray(picture, float) + diff = np.abs(picture - bare[back]).max(axis=2) + a = np.clip((diff - OVERLAY_DIFF) / OVERLAY_SOFT, 0, 1) + if alpha is None: + alpha, color = a, picture + else: + # The overlay color from the background it differs from the most. + color = np.where((a > alpha)[..., None], picture, color) + alpha = np.maximum(alpha, a) + if alpha is not None: + rgba = np.dstack([color, alpha * 255]).astype(np.uint8) + Image.fromarray(rgba, 'RGBA').save(os.path.join(out, f"{overlay['arg']}_{value}.png"), optimize=True) + + +def write_map(sdf, out, image, center, size, quality): + """ + map.jpg from a rendered image and map.json: where the map is, the start + points, the ground heights and the surface heights (see surface_heights). + """ + image.save(os.path.join(out, 'map.jpg'), quality=quality, optimize=True) + info = dict(center=list(center), size=size, + start_points={n: [round(x, 3), round(y, 3), round(yaw, 4)] + for n, (x, y, _, yaw) in world_info.start_poses(sdf).items()}, + heights=ground_heights(sdf, center, size)) + surface = surface_heights(sdf, center, size) + if surface is not None: + info['surface'] = surface + with open(os.path.join(out, 'map.json'), 'w') as f: + json.dump(info, f) + + +def robot_camera(pose): + x, y, z, yaw = pose + ahead, up, pitch, fov = ROBOT_CAMERA + return [x + ahead * math.cos(yaw), y + ahead * math.sin(yaw), z + up, 0, pitch, math.degrees(yaw), fov] + + +def stop(server): + """Stop a Gazebo server started in its own session, with every process it started.""" + for sig in (15, 9): + try: + os.killpg(server.pid, sig) + except ProcessLookupError: + return + try: + server.wait(15) + return + except subprocess.TimeoutExpired: + pass + + +def map_camera(center, size): + """A camera right above 'center' seeing a square of 'size' m, north up: [..., width, height].""" + height = min(MAP_HEIGHT, size * MAP_HEIGHT_RATIO) + fov = math.degrees(2 * math.atan(size / 2 / height)) + return [center[0], center[1], height, 0, 90, 90, fov, MAP_PIXELS, MAP_PIXELS] + + +def render(sdf, cameras, size, timeout=300, gui_cameras=()): + """ + Render {name: camera} in an SDF world with a headless Gazebo; return {name: RGB image}. + A camera is [x, y, z, roll, pitch, yaw, fov], optionally followed by its own width and height. + Cameras in gui_cameras see what the Gazebo window shows, the others what the robot camera sees. + """ + with tempfile.TemporaryDirectory(prefix='kpi_rover_frames_') as frames: + return _render(sdf, cameras, size, timeout, gui_cameras, frames) + + +def _render(sdf, cameras, size, timeout, gui_cameras, frames): + sensors = '' + for name, camera in cameras.items(): + x, y, z, roll, pitch, yaw, fov = camera[:7] + width, height = camera[7:9] if len(camera) >= 9 else size + os.makedirs(os.path.join(frames, name), exist_ok=True) + # Sensor names are prefixed: some, like 'world', are reserved. + sensors += f''' + + {x} {y} {z} {math.radians(roll)} {math.radians(pitch)} {math.radians(yaw)} + 21 + {math.radians(fov)} + {width}{height} + {GUI_MASK if name in gui_cameras else ROBOT_MASK} + 0.05{max(300, z * 2)} + {frames}/{name} + + ''' + model = f'true{sensors}' + sdf = sdf.replace('', model + '', 1) + world = re.search(r'' the square around the plane collision of + that model in the world (e.g. a floor whose size depends on the world + arguments), plus 'margin' m around it. + """ + m = (spec or {}).get('map') or DEFAULT_MAP + if m.get('fit') and sdf: + for model in ET.fromstring(sdf).iter('model'): + plane = model.find('link/collision/geometry/plane/size') + if model.get('name') == m['fit'] and plane is not None: + x, y = map(float, model.findtext('pose', '0 0 0 0 0 0').split()[:2]) + sx, sy = map(float, plane.text.split()) + return [x, y], round(max(sx, sy) + 2 * m.get('margin', 0.3), 2) + return m.get('center', [0, 0]), m['size'] + + +def jobs(info, spec, only): + """{args tuple: {picture file name: camera name}} of what to render, grouped by the world arguments.""" + groups = {} + + def add(args, filename, camera): + groups.setdefault(tuple(sorted(args.items())), {})[filename] = camera + + def wanted(key): + return not only or key in only + + if spec.get('world') and wanted('world'): + add({}, 'world', spec['world']) + if spec.get('start_points') and wanted('start_points'): + add({}, 'start_points', None) + if spec.get('presets') and spec.get('world') and wanted('presets'): + for preset in info.get('presets', []): + add(dict(preset['args']), f"preset_{preset['name']}", spec['world']) + for arg, example in (spec.get('args') or {}).items(): + if not wanted(arg): + continue + arg_spec = info['args'][arg] + extra = {k: world_info.as_text(v) for k, v in (example.get('with') or {}).items()} + for value in example['values']: + text = world_info.format_value(arg_spec, world_info.parse(arg_spec, str(value))) + default = world_info.format_value(arg_spec, arg_spec['default']) + add(dict(extra, **({} if text == default else {arg: text})), f'{arg}_{text}', example['camera']) + return groups + + +def main(): + parser = argparse.ArgumentParser(description=__doc__, formatter_class=argparse.RawDescriptionHelpFormatter) + parser.add_argument('world') + parser.add_argument('--only', default='', help="comma separated: 'world', 'start_points', 'presets' and argument names") + parser.add_argument('--size', default='960x600') + parser.add_argument('--quality', type=int, default=85) + parser.add_argument('--sdf', help='make only the map of this world file (one the launch file generated)') + parser.add_argument('--out', help='folder for the pictures, or for the map made with --sdf') + parser.add_argument('--partition', help='Gazebo transport partition, to keep apart from a running simulation') + options = parser.parse_args() + if options.partition: + os.environ['GZ_PARTITION'] = options.partition + + path = world_info.world_files().get(options.world) + if options.sdf: + spec = world_info.manifest(path).get('previews') if path else None + with open(options.sdf) as f: + sdf = f.read() + os.makedirs(options.out, exist_ok=True) + place = map_place(spec, sdf) + image = render(sdf, {'map': map_camera(*place)}, None).get('map') + if not image: + sys.exit('The map was not rendered') + write_map(sdf, options.out, image, *place, options.quality) + print(f'Map in {options.out}') + return + if not path: + sys.exit(f'{options.world}: no such world') + info = world_info.describe(path) + spec = world_info.manifest(path).get('previews') + if not spec: + sys.exit(f'{options.world}: no previews section in the manifest') + out = options.out or os.path.join(os.path.dirname(path), 'previews') + os.makedirs(out, exist_ok=True) + size = tuple(map(int, options.size.split('x'))) + only = set(filter(None, options.only.split(','))) + + gui_cameras = set(spec.get('gui_cameras') or []) + for args, pictures in jobs(info, spec, only).items(): + args = dict(args) + print(f"{options.world} {' '.join(f'{k}:={v}' for k, v in args.items()) or '(defaults)'}: " + f"{', '.join(pictures)}") + sdf = world_info.world_sdf(path, args) + cameras = {name: spec['cameras'][camera] for name, camera in pictures.items() if camera} + gui = {name for name, camera in pictures.items() if camera in gui_cameras} + if 'start_points' in pictures: + for name, pose in world_info.start_poses(sdf).items(): + cameras[f'start_{name}'] = robot_camera(pose) + for name, image in render(sdf, cameras, size, gui_cameras=gui).items(): + image.save(os.path.join(out, name + '.jpg'), quality=options.quality, optimize=True) + if spec.get('layers'): + render_layers(path, info, spec, out, size, options.quality, only) + print(f'Pictures in {out}') + + +if __name__ == '__main__': + main() diff --git a/src/platform/kpi_rover_worlds/tools/spawn_object.py b/src/platform/kpi_rover_worlds/tools/spawn_object.py new file mode 100755 index 0000000..8cbb976 --- /dev/null +++ b/src/platform/kpi_rover_worlds/tools/spawn_object.py @@ -0,0 +1,69 @@ +#!/usr/bin/env python3 +""" +Put objects of the object library (common/config/objects.yaml) into a running +simulation, or take them away, e.g. for a GUI placing them on a map. + + ros2 run kpi_rover_worlds spawn_object.py --list # the library as JSON + ros2 run kpi_rover_worlds spawn_object.py --world garden --name box_1 --type cardboard_box_01 --x 1 --y 2 --z 0.05 --yaw 0.5 --scale 0.345 + ros2 run kpi_rover_worlds spawn_object.py --world garden --remove box_1 + +The object is the same model the worlds scatter (sdf.scatter_object); its +origin is on the ground under its center, so z is the ground height there. +Needs a sourced ROS environment (ros_gz_sim, gz). +""" + +import argparse +import json +import subprocess +import sys +import xml.etree.ElementTree as ET + +from kpi_rover_worlds import sdf + + +def model_sdf(name, kind, scale=1.0): + root = ET.Element('sdf', version='1.9') + sdf.scatter_object(root, name, kind, 0, 0, 0, scale=scale) + return sdf.to_string(root) + + +def spawn(world, name, kind, x, y, z, yaw, scale=1.0): + command = ['ros2', 'run', 'ros_gz_sim', 'create', '-world', world, '-name', name, '-string', model_sdf(name, kind, scale), + '-x', str(x), '-y', str(y), '-z', str(z), '-Y', str(yaw)] + return subprocess.run(command).returncode + + +def remove(world, name): + command = ['gz', 'service', '-s', f'/world/{world}/remove', '--reqtype', 'gz.msgs.Entity', + '--reptype', 'gz.msgs.Boolean', '--timeout', '5000', '--req', f'name: "{name}" type: MODEL'] + return subprocess.run(command).returncode + + +def main(): + parser = argparse.ArgumentParser(description=__doc__, formatter_class=argparse.RawDescriptionHelpFormatter) + parser.add_argument('--list', action='store_true', help='print the object library as JSON') + parser.add_argument('--world', help='name of the running world ( of its SDF)') + parser.add_argument('--name', help='model name of the new object') + parser.add_argument('--type', help='object type from objects.yaml') + parser.add_argument('--x', type=float, default=0.0) + parser.add_argument('--y', type=float, default=0.0) + parser.add_argument('--z', type=float, default=0.0) + parser.add_argument('--yaw', type=float, default=0.0) + parser.add_argument('--scale', type=float, default=1.0, help="object size factor: the world's objects_scale") + parser.add_argument('--remove', metavar='NAME', help='take this object away') + options = parser.parse_args() + if options.list: + print(json.dumps([dict(name=k, kind=v['kind'], size=v['size']) for k, v in sdf.OBJECTS.items()])) + return + if not options.world: + sys.exit('--world is needed') + if options.remove: + sys.exit(remove(options.world, options.remove)) + if options.type not in sdf.OBJECTS: + sys.exit(f"Unknown object type {options.type}; see --list") + sys.exit(spawn(options.world, options.name or options.type, options.type, options.x, options.y, options.z, + options.yaw, options.scale)) + + +if __name__ == '__main__': + main() diff --git a/src/platform/kpi_rover_bringup/worlds/empty.world b/src/platform/kpi_rover_worlds/worlds/empty/empty.world similarity index 100% rename from src/platform/kpi_rover_bringup/worlds/empty.world rename to src/platform/kpi_rover_worlds/worlds/empty/empty.world diff --git a/src/platform/kpi_rover_worlds/worlds/empty/empty.yaml b/src/platform/kpi_rover_worlds/worlds/empty/empty.yaml new file mode 100644 index 0000000..56b8bfb --- /dev/null +++ b/src/platform/kpi_rover_worlds/worlds/empty/empty.yaml @@ -0,0 +1,4 @@ +title: Empty world +description: A flat ground plane without obstacles. +previews: + map: {center: [0, 0], size: 10} diff --git a/src/platform/kpi_rover_worlds/worlds/empty/previews/world.jpg b/src/platform/kpi_rover_worlds/worlds/empty/previews/world.jpg new file mode 100644 index 0000000..7cb2bc9 Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/empty/previews/world.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/garden/garden.py b/src/platform/kpi_rover_worlds/worlds/garden/garden.py new file mode 100644 index 0000000..a841e79 --- /dev/null +++ b/src/platform/kpi_rover_worlds/worlds/garden/garden.py @@ -0,0 +1,155 @@ +""" +Garden: rows of fruit trees on grass with patches of loose soil and mud, pits +and puddles, and a field road around, on uneven terrain (terrain.py). + +The garden is modeled in real sizes, then scaled down to the robot, so the +trees are 4 robot heights tall (trees.SCALE). The robot collides with +the height map and sees meshes of the same heights, one for each ground; +grass and the surroundings up to the horizon are only seen. Axes: x east, y north. +""" + +import dataclasses +import math +import os +import shutil + +import numpy as np +import yaml +from PIL import Image + +from kpi_rover_worlds import scatter, sdf + +import terrain # garden/terrain.py, next to this file + +CACHE_DIR = os.path.join(os.path.expanduser('~'), '.cache', 'kpi_rover', 'garden') +CACHE_KEEP = 6 # built terrains kept in the cache; older ones are removed + +# Scattered objects: the square they lie in (m from the center), free room +# around pits, puddles and start points (m), and the height above the ground +# they are dropped from (m). +OBJECTS_AREA = 9.4 +OBJECTS_CLEARANCE = 0.15 +START_CLEARANCE = 0.45 +OBJECTS_LIFT = 0.01 +STEM_HEIGHT = 0.45 # tree stem collisions + + +def scatter_objects(args, info): + """[[type, x, y, yaw, z, scale]] of the objects scattered over the garden for the world arguments.""" + features = info.get('features', {}) + keep_out = [('circle', p['x'], p['y'], p['radius'] + OBJECTS_CLEARANCE) for p in features.get('pits', [])] + keep_out += [('circle', p['x'], p['y'], p['length'] / 2 + OBJECTS_CLEARANCE) for p in features.get('puddles', [])] + keep_out += [('circle', p['x'], p['y'], START_CLEARANCE) for p in info.get('start_points', [])] + obstacles = [('circle', s['x'], s['y'], s['radius']) for s in info.get('trees', {}).get('stems', [])] + area = (-OBJECTS_AREA, OBJECTS_AREA, -OBJECTS_AREA, OBJECTS_AREA) + # The objects are scaled down with the whole garden. + objects = scatter.scatter_from_args(args, area, keep_out, obstacles, 'garden', terrain.SCALE) + z_map = np.asarray(Image.open(info['heightmap']), float) / 65535 * (info['z_max'] - info['z_min']) + info['z_min'] + half, step = info['size'] / 2, info['size'] / (len(z_map) - 1) + + def ground_z(px, py): + return terrain.bilinear(z_map, (px + half) / step, (half - py) / step) + + for obj in objects: + kind, x, y, yaw = obj[:4] + # The highest ground under the object footprint, so it never starts inside the ground. + r = math.hypot(*sdf.OBJECTS[kind]['size'][:2]) / 2 * terrain.SCALE + a = np.linspace(0, 2 * math.pi, 8, endpoint=False) + z = float(ground_z(np.append(x + r * np.cos(a), x), np.append(y + r * np.sin(a), y)).max()) + obj += [round(z + OBJECTS_LIFT, 4), terrain.SCALE] + return objects + + +def clean_cache(keep): + """Remove the least recently used terrains from the cache, keeping 'keep' of them.""" + dirs = [os.path.join(CACHE_DIR, d) for d in os.listdir(CACHE_DIR) if d.startswith('terrain_')] + dirs.sort(key=lambda d: os.path.getmtime(os.path.join(d, 'terrain.yaml')) if os.path.isfile( + os.path.join(d, 'terrain.yaml')) else 0) + for d in dirs[:-keep]: + shutil.rmtree(d, ignore_errors=True) + + +def mesh_geometry(parent, uri): + sdf.el(sdf.el(sdf.el(parent, 'geometry'), 'mesh'), 'uri', uri) + + +def ground_visuals(link, grounds): + # Grounds cast no shadows: on this flat land they would hardly show, but cost much rendering. + for ground in grounds: + visual = sdf.el(link, 'visual', name=f"ground_{ground['name']}") + sdf.el(visual, 'cast_shadows', False) + mesh_geometry(visual, ground['mesh']) + sdf.material(visual, ground['color'], ground['texture']) + + +def build(args): + options = terrain.Options(**{f.name: args[f.name] for f in dataclasses.fields(terrain.Options)}) + path = terrain.build(CACHE_DIR, args['relief'], args['terrain_seed'], options) + os.utime(path) # marks it as recently used + clean_cache(CACHE_KEEP) + with open(path) as f: + info = yaml.safe_load(f) + + # Afternoon sun, low enough to show the relief. + root, world = sdf.world('garden', shadows=args['shadows'], skybox=True, ambient=0.35, sun=(-0.65, 0.55, -0.45)) + link = sdf.static_model(world, 'terrain') + collision = sdf.el(link, 'collision', name='collision') + sdf.el(collision, 'pose', 0, 0, info['z_min'], 0, 0, 0) # DART ignores the height map + heightmap = sdf.el(sdf.el(collision, 'geometry'), 'heightmap') + sdf.el(heightmap, 'uri', info['heightmap']) + sdf.el(heightmap, 'size', info['size'], info['size'], info['z_max'] - info['z_min']) + sdf.friction(collision, info['mu']) + # Mud and wheel tracks have their own friction: collision meshes 1 cm above the height map there. + for ground in info['grounds']: + if ground['collision']: + collision = sdf.el(link, 'collision', name=f"ground_{ground['name']}") + mesh_geometry(collision, ground['mesh']) + sdf.friction(collision, ground['mu']) + ground_visuals(link, info['grounds']) + features = info['features'] + if features['water']: + # Only seen, the robot drives through it to the bottom. + visual = sdf.el(link, 'visual', name='water') + sdf.el(visual, 'cast_shadows', False) + sdf.el(visual, 'visibility_flags', sdf.VISIBLE_NO_LIDAR) + mesh_geometry(visual, features['water']) + material = sdf.el(visual, 'material') + sdf.el(material, 'ambient', *features['water_color'], 1) + sdf.el(material, 'diffuse', *features['water_color'], 1) + sdf.el(material, 'specular', '0.6 0.6 0.6 1') + metal = sdf.el(sdf.el(material, 'pbr'), 'metal') + sdf.el(metal, 'metalness', '0.0') + sdf.el(metal, 'roughness', features['water_roughness']) + + trees = info['trees'] + link = sdf.static_model(world, 'trees') + for k, stem in enumerate(trees['stems']): + # Up to above the robot, where the crowns begin. + collision = sdf.el(link, 'collision', name=f'stem_{k}') + sdf.el(collision, 'pose', stem['x'], stem['y'], stem['z'] + STEM_HEIGHT / 2, 0, 0, 0) + cylinder = sdf.el(sdf.el(collision, 'geometry'), 'cylinder') + sdf.el(cylinder, 'radius', stem['radius']) + sdf.el(cylinder, 'length', STEM_HEIGHT) + for wood in trees['wood']: + visual = sdf.el(link, 'visual', name=wood['name']) + mesh_geometry(visual, wood['mesh']) + sdf.material(visual, wood['color'], wood['texture']) + if trees['leaves']: + # They cast the crown shadows; above the lidar scan plane. + visual = sdf.el(link, 'visual', name='leaves') + sdf.el(visual, 'visibility_flags', sdf.VISIBLE_NO_LIDAR) + mesh_geometry(visual, trees['leaves']) + + link = sdf.static_model(world, 'grass') + for plant in info['plants']: + visual = sdf.el(link, 'visual', name=plant['name']) + sdf.el(visual, 'cast_shadows', False) + sdf.el(visual, 'visibility_flags', sdf.VISIBLE_NO_LIDAR) + mesh_geometry(visual, plant['mesh']) + ground_visuals(sdf.static_model(world, 'surroundings'), info['surroundings']) + + for i, (kind, x, y, yaw, z, scale) in enumerate(scatter_objects(args, info) if args['objects'] else []): + sdf.scatter_object(world, f'{kind}_{i}', kind, x, y, yaw, z, scale) + for point in info['start_points']: + sdf.start_point(world, point['name'], point['x'], point['y'], point['yaw'], point['z']) + return root diff --git a/src/platform/kpi_rover_worlds/worlds/garden/garden.yaml b/src/platform/kpi_rover_worlds/worlds/garden/garden.yaml new file mode 100644 index 0000000..13afb92 --- /dev/null +++ b/src/platform/kpi_rover_worlds/worlds/garden/garden.yaml @@ -0,0 +1,171 @@ +title: Garden +description: >- + An apple orchard in the steppe (a real place near 47.08, 33.20) scaled down + to the robot: the trees are four times as tall as it is. Grass, patches of + loose soil and mud, pits with and without water, and a two-track field road + with puddles around the orchard. +objects_scale: 0.345 +start_points: + road_a: Road, south side + road_b: Road, north side + garden_a: Orchard, west end + garden_b: Orchard, east end +groups: + terrain: Terrain + grounds: Grounds and plants + obstacles: Pits, puddles, trees + objects: Objects + physics: Friction + render: Look +args: + relief: + type: choice + default: steppe + choices: [steppe, hills] + label: Relief + description: steppe — the real, almost flat place; hills — made-up hills. + group: terrain + terrain_seed: + type: int + default: 11 + min: 0 + label: Terrain variant + description: One number sets the small relief, the ground patches, the pits and the grass; the same number gives the same garden. + group: terrain + grass: + type: float + default: 1.0 + min: 0.0 + max: 3.0 + step: 0.1 + label: Grass density + description: Grass density multiplier; 0 — no grass (the lightest for the simulation). + group: grounds + soil: + type: float + default: 0.13 + min: 0.0 + max: 0.4 + step: 0.01 + label: Loose soil share + description: Share of the orchard covered with patches of loose soil. + group: grounds + mud: + type: float + default: 0.12 + min: 0.0 + max: 0.4 + step: 0.01 + label: Mud share + description: Share of the orchard covered with mud (mostly in the hollows). + group: grounds + pits: + type: bool + default: true + label: Pits in the orchard + description: Four pits between the rows, 5–17 cm deep, two of them with water. + group: obstacles + puddles: + type: bool + default: true + label: Puddles on the road + description: Three puddles in the road ruts. + group: obstacles + tree_rows: + type: int + default: 6 + min: 0 + max: 7 + label: Tree rows + description: Number of tree rows; 0 — no trees. + group: obstacles + grass_friction: + advanced: true + type: float + default: 0.65 + min: 0.05 + max: 1.5 + step: 0.05 + label: Grass and soil friction + group: physics + mud_friction: + advanced: true + type: float + default: 0.3 + min: 0.05 + max: 1.5 + step: 0.05 + label: Mud friction + group: physics + track_friction: + advanced: true + type: float + default: 0.85 + min: 0.05 + max: 1.5 + step: 0.05 + label: Road track friction + group: physics + shadows: + advanced: true + type: bool + default: true + label: Shadows + description: Sun shadows; without them the simulation is a bit faster. + group: render + objects: + type: int + default: 0 + min: 0 + max: 50 + label: Objects + description: Number of boxes, crates, cones and other objects scattered at random over the garden and the road; some are low, under the lidar, and a flat board can be driven over. + group: objects + objects_seed: + type: string + default: '' + label: Objects layout + description: A number sets where the objects lie; empty — a new random layout every time. + group: objects +presets: + light: + label: Light + description: No grass and no shadows — the fastest simulation. + args: {grass: 0, shadows: false} + dry: + label: Dry + description: No mud and no puddles. + args: {mud: 0, puddles: false} + after_rain: + label: After rain + description: Much mud and loose soil, slippery mud. + args: {mud: 0.35, soil: 0.25, mud_friction: 0.2} + open_field: + label: Open field + description: No trees — the field and the road only. + args: {tree_rows: 0} +previews: + cameras: + over: [-11, -11, 4, 0, 18, 45, 70] + high: [0, -14, 7, 0, 30, 90, 70] + horizon: [-12, -12, 1.2, 0, 6, 45, 80] + grass: [-9.6, -3, 0.3, 0, 18, 20, 60] + pit: [-4.4, 1.25, 0.55, 0, 28, 35, 65] + puddle: [1.6, -7.05, 0.35, 0, 12, 0, 60] + orchard: [-3.2, -9.2, 2.2, 0, 22, 75, 60] + objects: [0, -11, 3, 0, 35, 90, 60] + world: over + presets: true + start_points: true + map: {center: [0, 0], size: 21} + args: + relief: {camera: horizon, values: [steppe, hills]} + terrain_seed: {camera: high, values: [11, 3, 25]} + grass: {camera: grass, values: [0, 1, 3]} + soil: {camera: high, values: [0, 0.13, 0.4]} + mud: {camera: high, values: [0, 0.12, 0.4]} + pits: {camera: pit, values: [true, false]} + puddles: {camera: puddle, values: [true, false]} + tree_rows: {camera: over, values: [0, 3, 6]} + shadows: {camera: orchard, values: [true, false]} + objects: {camera: objects, values: [0, 14, 45], with: {objects_seed: 1, grass: 0}} diff --git a/src/platform/kpi_rover_worlds/worlds/garden/previews/grass_0.jpg b/src/platform/kpi_rover_worlds/worlds/garden/previews/grass_0.jpg new file mode 100644 index 0000000..3bbabd9 Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/garden/previews/grass_0.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/garden/previews/grass_1.jpg b/src/platform/kpi_rover_worlds/worlds/garden/previews/grass_1.jpg new file mode 100644 index 0000000..2b567b1 Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/garden/previews/grass_1.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/garden/previews/grass_3.jpg b/src/platform/kpi_rover_worlds/worlds/garden/previews/grass_3.jpg new file mode 100644 index 0000000..4b6fa0c Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/garden/previews/grass_3.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/garden/previews/mud_0.12.jpg b/src/platform/kpi_rover_worlds/worlds/garden/previews/mud_0.12.jpg new file mode 100644 index 0000000..799c04c Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/garden/previews/mud_0.12.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/garden/previews/mud_0.4.jpg b/src/platform/kpi_rover_worlds/worlds/garden/previews/mud_0.4.jpg new file mode 100644 index 0000000..e4c6305 Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/garden/previews/mud_0.4.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/garden/previews/mud_0.jpg b/src/platform/kpi_rover_worlds/worlds/garden/previews/mud_0.jpg new file mode 100644 index 0000000..f6616a6 Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/garden/previews/mud_0.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/garden/previews/objects_0.jpg b/src/platform/kpi_rover_worlds/worlds/garden/previews/objects_0.jpg new file mode 100644 index 0000000..8c5bc07 Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/garden/previews/objects_0.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/garden/previews/objects_14.jpg b/src/platform/kpi_rover_worlds/worlds/garden/previews/objects_14.jpg new file mode 100644 index 0000000..e61dc16 Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/garden/previews/objects_14.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/garden/previews/objects_45.jpg b/src/platform/kpi_rover_worlds/worlds/garden/previews/objects_45.jpg new file mode 100644 index 0000000..1bb19ec Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/garden/previews/objects_45.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/garden/previews/pits_false.jpg b/src/platform/kpi_rover_worlds/worlds/garden/previews/pits_false.jpg new file mode 100644 index 0000000..b6b7f05 Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/garden/previews/pits_false.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/garden/previews/pits_true.jpg b/src/platform/kpi_rover_worlds/worlds/garden/previews/pits_true.jpg new file mode 100644 index 0000000..de844e2 Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/garden/previews/pits_true.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/garden/previews/preset_after_rain.jpg b/src/platform/kpi_rover_worlds/worlds/garden/previews/preset_after_rain.jpg new file mode 100644 index 0000000..7d134f7 Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/garden/previews/preset_after_rain.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/garden/previews/preset_dry.jpg b/src/platform/kpi_rover_worlds/worlds/garden/previews/preset_dry.jpg new file mode 100644 index 0000000..44160c0 Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/garden/previews/preset_dry.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/garden/previews/preset_light.jpg b/src/platform/kpi_rover_worlds/worlds/garden/previews/preset_light.jpg new file mode 100644 index 0000000..a4b013b Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/garden/previews/preset_light.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/garden/previews/preset_open_field.jpg b/src/platform/kpi_rover_worlds/worlds/garden/previews/preset_open_field.jpg new file mode 100644 index 0000000..eba3159 Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/garden/previews/preset_open_field.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/garden/previews/puddles_false.jpg b/src/platform/kpi_rover_worlds/worlds/garden/previews/puddles_false.jpg new file mode 100644 index 0000000..ce068a4 Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/garden/previews/puddles_false.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/garden/previews/puddles_true.jpg b/src/platform/kpi_rover_worlds/worlds/garden/previews/puddles_true.jpg new file mode 100644 index 0000000..7b8e574 Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/garden/previews/puddles_true.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/garden/previews/relief_hills.jpg b/src/platform/kpi_rover_worlds/worlds/garden/previews/relief_hills.jpg new file mode 100644 index 0000000..c9152e0 Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/garden/previews/relief_hills.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/garden/previews/relief_steppe.jpg b/src/platform/kpi_rover_worlds/worlds/garden/previews/relief_steppe.jpg new file mode 100644 index 0000000..98926af Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/garden/previews/relief_steppe.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/garden/previews/shadows_false.jpg b/src/platform/kpi_rover_worlds/worlds/garden/previews/shadows_false.jpg new file mode 100644 index 0000000..8a5a864 Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/garden/previews/shadows_false.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/garden/previews/shadows_true.jpg b/src/platform/kpi_rover_worlds/worlds/garden/previews/shadows_true.jpg new file mode 100644 index 0000000..b4880a3 Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/garden/previews/shadows_true.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/garden/previews/soil_0.13.jpg b/src/platform/kpi_rover_worlds/worlds/garden/previews/soil_0.13.jpg new file mode 100644 index 0000000..799c04c Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/garden/previews/soil_0.13.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/garden/previews/soil_0.4.jpg b/src/platform/kpi_rover_worlds/worlds/garden/previews/soil_0.4.jpg new file mode 100644 index 0000000..6e92b64 Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/garden/previews/soil_0.4.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/garden/previews/soil_0.jpg b/src/platform/kpi_rover_worlds/worlds/garden/previews/soil_0.jpg new file mode 100644 index 0000000..c1d3461 Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/garden/previews/soil_0.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/garden/previews/start_garden_a.jpg b/src/platform/kpi_rover_worlds/worlds/garden/previews/start_garden_a.jpg new file mode 100644 index 0000000..6999bcb Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/garden/previews/start_garden_a.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/garden/previews/start_garden_b.jpg b/src/platform/kpi_rover_worlds/worlds/garden/previews/start_garden_b.jpg new file mode 100644 index 0000000..e085a0d Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/garden/previews/start_garden_b.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/garden/previews/start_road_a.jpg b/src/platform/kpi_rover_worlds/worlds/garden/previews/start_road_a.jpg new file mode 100644 index 0000000..251d20a Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/garden/previews/start_road_a.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/garden/previews/start_road_b.jpg b/src/platform/kpi_rover_worlds/worlds/garden/previews/start_road_b.jpg new file mode 100644 index 0000000..f86581c Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/garden/previews/start_road_b.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/garden/previews/terrain_seed_11.jpg b/src/platform/kpi_rover_worlds/worlds/garden/previews/terrain_seed_11.jpg new file mode 100644 index 0000000..799c04c Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/garden/previews/terrain_seed_11.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/garden/previews/terrain_seed_25.jpg b/src/platform/kpi_rover_worlds/worlds/garden/previews/terrain_seed_25.jpg new file mode 100644 index 0000000..02bb806 Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/garden/previews/terrain_seed_25.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/garden/previews/terrain_seed_3.jpg b/src/platform/kpi_rover_worlds/worlds/garden/previews/terrain_seed_3.jpg new file mode 100644 index 0000000..8b204a7 Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/garden/previews/terrain_seed_3.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/garden/previews/tree_rows_0.jpg b/src/platform/kpi_rover_worlds/worlds/garden/previews/tree_rows_0.jpg new file mode 100644 index 0000000..65861b7 Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/garden/previews/tree_rows_0.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/garden/previews/tree_rows_3.jpg b/src/platform/kpi_rover_worlds/worlds/garden/previews/tree_rows_3.jpg new file mode 100644 index 0000000..df0151e Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/garden/previews/tree_rows_3.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/garden/previews/tree_rows_6.jpg b/src/platform/kpi_rover_worlds/worlds/garden/previews/tree_rows_6.jpg new file mode 100644 index 0000000..fed12a4 Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/garden/previews/tree_rows_6.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/garden/previews/world.jpg b/src/platform/kpi_rover_worlds/worlds/garden/previews/world.jpg new file mode 100644 index 0000000..fed12a4 Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/garden/previews/world.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/garden/relief/steppe.png b/src/platform/kpi_rover_worlds/worlds/garden/relief/steppe.png new file mode 100644 index 0000000..386165f Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/garden/relief/steppe.png differ diff --git a/src/platform/kpi_rover_worlds/worlds/garden/relief/steppe.yaml b/src/platform/kpi_rover_worlds/worlds/garden/relief/steppe.yaml new file mode 100644 index 0000000..bd24a8a --- /dev/null +++ b/src/platform/kpi_rover_worlds/worlds/garden/relief/steppe.yaml @@ -0,0 +1,10 @@ +# Real terrain heights for the garden relief. +# The PNG holds heights from h_min (black) to h_max (white), m, on a +# north-up grid of size x size m with step m spacing centered at lat, lon. +lat: 47.0787331 +lon: 33.1950273 +size: 800.0 +step: 5.0 +h_min: 61.763 +h_max: 69.193 +source: Terrain Tiles on AWS Open Data (terrarium, mostly SRTM), https://registry.opendata.aws/terrain-tiles/ diff --git a/src/platform/kpi_rover_worlds/worlds/garden/terrain.py b/src/platform/kpi_rover_worlds/worlds/garden/terrain.py new file mode 100644 index 0000000..2bb5bad --- /dev/null +++ b/src/platform/kpi_rover_worlds/worlds/garden/terrain.py @@ -0,0 +1,867 @@ +""" +Garden terrain: a height map with natural relief, covered with grounds and +grass. + +Two reliefs are available: + steppe - a real place (see relief/): the overall + slope and broad undulations come from real heights, smoothed; + the small unevenness of the ground and a few shallow pits are + added in real sizes. Almost flat, like the real steppe. + hills - made-up hilly relief: broad hills and hollows with bumps on them. +All real sizes are scaled down to the robot by SCALE (trees.py). World axes are +x east and y north. The noise is defined in world coordinates, so the same +seed always gives the same terrain, whatever the grid. + +Grounds: grass covers the garden, with natural patches of loose soil and of +mud, which gathers in hollows. A field road goes around the garden: two worn +wheel tracks of dirt and gravel with ruts pressed into them and low berms +beside them, grass between and along them. Each ground has its own small +relief: grass tussocks, soil clods, smooth sunken mud. Ground boundaries are smooth curves: +the terrain triangles are cut exactly along them. Grass (CARDS) +grows on the grass ground and thickest along the patch edges, softening them: +cards, pictures of tufts on crossed rectangles. + +The terrain is written as: + heightmap_.png - 16-bit height map for the Gazebo collision; + black is the lowest point, white the highest + ground__.gltf - visual mesh of each ground on the same heights, + with UVs repeating its macro texture (textures.py) + grass_cards_.gltf - all grass cards + surroundings_.gltf - visual-only rings around the terrain up to the horizon + terrain.yaml - size, height range, file names for the world +The key is a hash of the parameters, unique for each terrain, as Gazebo caches +meshes and images by file name. +""" + +import dataclasses +import hashlib +import math +import os +import shutil +from typing import NamedTuple + +import numpy as np +import yaml +from PIL import Image +from scipy import ndimage + +import textures +import trees +from kpi_rover_worlds import gltf + +HERE = os.path.dirname(os.path.abspath(__file__)) +ASSETS_DIR = os.path.join(HERE, '..', '..', 'assets') +SCALE = trees.SCALE + +# Garden grounds: texture in assets/textures, color multiplied with it, real +# size one texture repeat covers (m), friction for rubber wheels. The height +# map has the grass friction (soil too); mud and the wheel tracks have their +# own collision meshes. +GROUNDS = { + 'grass': {'texture': 'ground_meadow', 'color': [0.82, 0.95, 0.62], 'tile': 2.51, 'mu': 0.65}, + 'soil': {'texture': 'ground_loose_soil', 'tile': 2.0, 'mu': 0.7}, + 'mud': {'texture': 'ground_forest_mud', 'tile': 2.35, 'mu': 0.3}, + 'track': {'texture': 'road_gravel', 'color': [0.6, 0.57, 0.52], 'tile': 3.0, 'mu': 0.85}, +} +# Grass card pictures: an atlas and the places of the sprites in it, real m. +CARDS_ATLAS = 'models/grass_cards/grass_cards.png' +with open(os.path.join(ASSETS_DIR, 'models', 'grass_cards', 'grass_cards.yaml')) as f: + CARDS = yaml.safe_load(f) + +SIZE = 20.48 # terrain side, m +SAMPLES = 1025 # height map samples per side (2^n + 1, as Gazebo needs): a 2 cm grid +STEP = SIZE / (SAMPLES - 1) +# The visual meshes use every VISUAL_STEP-th sample: an 8 cm grid with smooth +# normals looks the same and has 16 times fewer triangles; it differs from the +# collision height map (which the robot drives on, 2 cm, smooth) by 1.7 mm on +# average and under 7 mm in 99% of places. +VISUAL_STEP = 4 + +# Surroundings: visual-only meshes around the terrain up to the horizon, so +# the terrain doesn't end at an edge: rings of (side, grid step), m, each +# coarser than the one inside it. A ring grid is aligned with the grid inside +# and overlaps its border a little, under it, so there are no cracks. +RINGS = ((122.88, 0.64), (2048.0, 20.48)) +FAR_TILE = 16 # texture repeat of the far rings, in near texture repeats + +RELIEFS = ('steppe', 'hills') + +# --- real sizes, m (scaled down with SCALE) --- +STEPPE_SMOOTH = 40.0 # smoothing of the real heights (removes SRTM noise) +# Unevenness of a field: (wavelength, amplitude). +BROAD_LAYERS = ((30.0, 0.12), (10.0, 0.05)) +SMALL_LAYERS = ((3.0, 0.04), (1.2, 0.025), (0.5, 0.012), (0.2, 0.005)) +# Ground relief: grass tussocks, soil clods and raise, mud sinking. +TUSSOCKS = (0.6, 0.05) # wavelength, height +CLODS = ((0.35, 0.035), (0.15, 0.015)) +SOIL_RAISE = 0.02 +MUD_SINK = 0.05 +MUD_SMOOTH = 0.7 # part of the small unevenness mud smooths out +# Shallow pits: radius and depth ranges, and how many per 100 m^2 where they gather. +PITS_RADIUS = (0.3, 0.7) +PITS_DEPTH = (0.03, 0.08) +PITS_DENSITY = 1.5 +PITS_GATHER = 25.0 # size of the places where pits gather +# Ground patches: share of the terrain, patch size (noise wavelength) and the +# width of the relief transition at their edges. +SOIL_SHARE, SOIL_SIZE = 0.13, 9.0 +MUD_SHARE, MUD_SIZE = 0.12, 6.0 +MUD_IN_HOLLOWS = 0.6 # how much mud prefers low places (0..1) +EDGE = 0.3 +PATCH_FADE = 2.0 # world m at the terrain border over which the patches fade out +# Grass cards per real m^2: on grass, and along the ground edges (both sides, +# within CARDS_EDGE_BAND). +CARDS_DENSITY = 10.0 +CARDS_EDGE_DENSITY = 14.0 +# How often each kind of plant picture is picked (by the start of its name, see +# CARDS): meadow grass mostly, some of it dry, a few weeds. +CARD_WEIGHTS = (('grass_medium_01_dry', 0.15), ('grass_medium_01', 1.0), ('grass_medium_02', 0.6), + ('grass_bermuda_01', 0.5), ('weed_plant_02', 0.15), ('dandelion_01', 0.1)) +CARDS_PLANES = 2 # crossed rectangles per card +CARDS_EDGE_BAND = 0.5 +CARDS_SIZE = (0.9, 1.6) # random scale + +# --- hills: made-up relief, world sizes --- +HILLS_LAYERS = ((14.0, 0.5), (6.0, 0.18), (2.5, 0.04)) +HILLS_TILT = 0.01 # overall slope, m per m +HILLS_WARP = (8.0, 1.5) # wavelength, shift, m +HORIZON_HILLS = ((40.0, 3.0), (15.0, 0.8)) # (wavelength, amplitude), m +HORIZON_RISE = 25.0 # distance from the terrain over which they rise to full height, m + +OUTSIDE = 'grass' + +# --- field road around the garden: two wheel tracks with gravel, grass between them --- +# Centerline: a rounded rectangle around the trees, world m, a little wavy. +ROAD_HALF = (7.4, 6.7) +ROAD_CORNER = 2.0 +ROAD_WAVE = (6.0, 0.15) # wavelength, sideways shift, world m +# Real sizes, m: a car track gauge, the worn tracks and the ruts in them. +GAUGE = 1.55 # distance between the wheel track middles +TRACK_HALF = 0.3 # half width of a worn track (gravel and dirt) +TRACK_EDGE = (0.5, 0.07) # wavelength, sideways wobble of the track edges +RUT_HALF = 0.25 # half width of the rut pressed into a track +RUT_DEPTH = (0.04, 0.12) # rut depth, changing along the road +BERM = 0.025 # soil pushed up at the rut sides +ROAD_CLEAR = 1.0 # no soil and mud patches this far beyond the tracks + +# --- pits and puddles, real sizes, m --- +# Garden pits between the tree rows: (radius, depth, water). Dry pits have +# bare soil, pits with water are muddy around it. +GARDEN_PITS = ((1.0, 0.15, False), (1.3, 0.25, True), (1.5, 0.35, False), (1.7, 0.5, True)) +# Puddles on the road, in a wheel track: (side of the garden, along the side +# from -1 to 1, track: +1 outer or -1 inner, half length along the track, depth). +ROAD_PUDDLES = (('south', 0.45, 1, 1.4, 0.12), ('east', -0.3, -1, 1.8, 0.15), ('north', -0.55, 1, 1.2, 0.1)) +PUDDLE_WIDTH = 0.45 # half width of a road puddle across the track, real m +WATER_LEVEL = 0.55 # water depth, share of the pit depth +WATER_COLOR = [0.07, 0.06, 0.04] # muddy water +WATER_ROUGHNESS = 0.3 + +# --- start points: name and place: (road side, along it from -1 to 1, track) +# on the road, or (x world m, y in tree row spacings) in the garden --- +# On the road the robot stands in the middle (track 0), on the grass between +# the wheel tracks, which is as wide as the robot is: in a deep rut it would +# sit on its belly. It heads counterclockwise around the garden. In the +# garden it stands between tree rows, heading along them. +START_POINTS = (('road_a', ('south', -0.5, 0)), ('road_b', ('north', 0.5, 0)), + ('garden_a', (-4.6, 0)), ('garden_b', (4.6, 1))) + +# The height map is this much lower under mud and the wheel tracks, which +# have collision meshes of their own, with their own friction. +FRICTION_GAP = 0.01 +OWN_COLLISION = ('mud', 'track') +GARDEN_GROUNDS = ('grass', 'soil', 'mud', 'track') + + +@dataclasses.dataclass(frozen=True) +class Options: + """ + Terrain settings set by the garden world arguments (see garden.yaml); part + of the cache key. The defaults are the module settings above. + """ + grass: float = 1.0 # grass density, a multiplier of CARDS_DENSITY and CARDS_EDGE_DENSITY + soil: float = SOIL_SHARE # soil and mud shares of the garden + mud: float = MUD_SHARE + pits: bool = True # garden pits (GARDEN_PITS) and road puddles (ROAD_PUDDLES) + puddles: bool = True + tree_rows: int = trees.ROWS + grass_friction: float | None = None # friction of grass and soil, mud and the wheel tracks; None: GROUNDS + mud_friction: float | None = None + track_friction: float | None = None + + def grounds(self): + """GROUNDS with the friction of these options.""" + grounds = dict(GROUNDS) + for ground, mu in (('grass', self.grass_friction), ('soil', self.grass_friction), + ('mud', self.mud_friction), ('track', self.track_friction)): + if mu is not None: + grounds[ground] = dict(grounds[ground], mu=mu) + return grounds + + +def _hash(ix, iy, seed): + """Pseudo-random 32-bit integers for integer lattice points.""" + h = (ix.astype(np.int64) * 374761393 + iy.astype(np.int64) * 668265263 + seed * 2147483647) & 0xFFFFFFFF + h = ((h ^ (h >> 13)) * 1274126177) & 0xFFFFFFFF + return h ^ (h >> 16) + + +def perlin(x, y, seed): + """2D gradient noise in about [-1, 1] with a lattice step of 1.""" + x = np.asarray(x, float) + y = np.asarray(y, float) + x0 = np.floor(x) + y0 = np.floor(y) + fx = x - x0 + fy = y - y0 + ix = x0.astype(np.int64) + iy = y0.astype(np.int64) + # Dense points: the gradients of their lattice are computed once and looked up. + x_lo, y_lo = (ix.min(), iy.min()) if ix.size else (0, 0) + width, height = (ix.max() - x_lo + 2, iy.max() - y_lo + 2) if ix.size else (0, 0) + table = width * height <= ix.size + if table: + gy, gx = np.mgrid[y_lo:y_lo + height, x_lo:x_lo + width] + angle = (_hash(gx, gy, seed) * (2 * math.pi / 2 ** 32)).ravel() + cos, sin = np.cos(angle), np.sin(angle) + k = (iy - y_lo) * width + (ix - x_lo) + + def grad(dx, dy): + if table: + i = k + dy * width + dx + return cos[i] * (fx - dx) + sin[i] * (fy - dy) + angle = _hash(ix + dx, iy + dy, seed) * (2 * math.pi / 2 ** 32) + return np.cos(angle) * (fx - dx) + np.sin(angle) * (fy - dy) + + u = fx ** 3 * (fx * (fx * 6 - 15) + 10) + v = fy ** 3 * (fy * (fy * 6 - 15) + 10) + bottom = grad(0, 0) + u * (grad(1, 0) - grad(0, 0)) + top = grad(0, 1) + u * (grad(1, 1) - grad(0, 1)) + return (bottom + v * (top - bottom)) * math.sqrt(2) + + +def noise_layers(x, y, layers, seed): + """Sum of noise layers [(wavelength, amplitude)], each rotated and shifted so their lattices don't line up.""" + rng = np.random.default_rng(seed) + z = 0 + for i, (wavelength, amplitude) in enumerate(layers): + a = rng.uniform(0, 2 * math.pi) + ox, oy = rng.uniform(0, 1000, 2) + u = (x * math.cos(a) - y * math.sin(a)) / wavelength + ox + v = (x * math.sin(a) + y * math.cos(a)) / wavelength + oy + z = z + amplitude * perlin(u, v, seed * 31 + i) + return z + + +def smoothstep(t): + t = np.clip(t, 0, 1) + return t * t * (3 - 2 * t) + + +def window(x, y, cx, cy, r): + """Grid slices around a circle; rows go along -y.""" + c0, c1 = np.searchsorted(x[0], [cx - r, cx + r]) + r0, r1 = np.searchsorted(-y[:, 0], [-(cy + r), -(cy - r)]) + return slice(r0, r1), slice(c0, c1) + + +class Hole(NamedTuple): + """A garden pit or a road puddle: an ellipse of radius r along 'angle' and 'width' across, real m.""" + x: float + y: float + r: float + depth: float + water: bool + angle: float + width: float + + +def bilinear(a, col, row): + """Grid a at fractional (col, row), row 0 at the top; clipped to the grid.""" + rows, cols = a.shape + col, row = np.clip(col, 0, cols - 1), np.clip(row, 0, rows - 1) + c0, r0 = np.minimum(col.astype(int), cols - 2), np.minimum(row.astype(int), rows - 2) + fc, fr = col - c0, row - r0 + return ((a[r0, c0] * (1 - fc) + a[r0, c0 + 1] * fc) * (1 - fr) + + (a[r0 + 1, c0] * (1 - fc) + a[r0 + 1, c0 + 1] * fc) * fr) + + +class RealHeights: + """Smoothed real heights from relief/.png, sampled at real east/north offsets from the place.""" + + def __init__(self, name): + with open(os.path.join(HERE, 'relief', name + '.yaml')) as f: + self.info = yaml.safe_load(f) + data = np.asarray(Image.open(os.path.join(HERE, 'relief', name + '.png'))).astype(float) / 65535 + h = self.info['h_min'] + data * (self.info['h_max'] - self.info['h_min']) + self.h = ndimage.gaussian_filter(h, STEPPE_SMOOTH / self.info['step'], mode='nearest', truncate=3) + self.h0 = self.sample(np.zeros(1), np.zeros(1))[0] + + def sample(self, east, north): + step, half = self.info['step'], self.info['size'] / 2 + return bilinear(self.h, (east + half) / step, (half - north) / step) + + +def real(layers): + """Real (wavelength, amplitude) layers in world sizes.""" + return tuple((w * SCALE, a * SCALE) for w, a in layers) + + +class Terrain: + """Relief and grounds of the terrain for a relief name and seed; all functions take world points.""" + + def __init__(self, relief, seed, options=Options()): + if relief not in RELIEFS: + raise ValueError(f"Unknown relief '{relief}'. Available: {', '.join(RELIEFS)}.") + self.relief = relief + self.seed = seed + self.options = options + if relief == 'steppe': + self.real = RealHeights('steppe') + # Patch thresholds give the wanted shares of the garden inside the road. + x, y = grid(SIZE, SIZE / 256) + inside = (self.road(x, y) < -(GAUGE / 2 + TRACK_HALF + ROAD_CLEAR + 0.5)) + # A share of 0 puts the threshold above all noise values: no patches. + soil, mud = options.soil, options.mud + self.soil_cut = np.quantile(self._soil_noise(x, y)[inside], 1 - soil) if soil > 0 else 10.0 + self.mud_cut = np.quantile(self._mud_noise(x, y)[inside], 1 - mud) if mud > 0 else 10.0 + self.place_features() + + def broad(self, x, y): + """Broad relief: the shape of the land, m.""" + if self.relief == 'hills': + rng = np.random.default_rng(self.seed) + tilt_dir = rng.uniform(0, 2 * math.pi) + z = HILLS_TILT * (x * math.cos(tilt_dir) + y * math.sin(tilt_dir)) + wavelength, shift = HILLS_WARP + wx = x + shift * perlin(x / wavelength + 100.5, y / wavelength, self.seed * 31 + 101) + wy = y + shift * perlin(x / wavelength, y / wavelength + 200.5, self.seed * 31 + 102) + return z + noise_layers(wx, wy, HILLS_LAYERS, self.seed) + z = (self.real.sample(x / SCALE, y / SCALE) - self.real.h0) * SCALE + return z + noise_layers(x, y, real(BROAD_LAYERS), self.seed) + + def horizon(self, x, y): + """Broad relief of the surroundings: for hills, rising into hills away from the terrain.""" + z = self.broad(x, y) + if self.relief == 'hills': + half = SIZE / 2 + d = np.hypot(np.maximum(np.abs(x) - half, 0), np.maximum(np.abs(y) - half, 0)) + rise = smoothstep(d / HORIZON_RISE) + for i, (wavelength, amplitude) in enumerate(HORIZON_HILLS): + # Mostly up: hills around rather than pits. + z = z + rise * amplitude * (0.6 + perlin(x / wavelength + 500.5, y / wavelength + 700.5, + self.seed * 31 + 200 + i)) + return z + + def _warp(self, x, y, k): + """Domain warp for the patches, so their edges wind naturally.""" + w = 6.0 * SCALE + return (x + 2.0 * SCALE * perlin(x / w + 11.5 * k, y / w, self.seed * 31 + 500 + k), + y + 2.0 * SCALE * perlin(x / w, y / w + 13.5 * k, self.seed * 31 + 510 + k)) + + def _soil_noise(self, x, y): + wx, wy = self._warp(x, y, 1) + s = SOIL_SIZE * SCALE + return noise_layers(wx, wy, ((s, 1.0), (s / 2.5, 0.35), (s / 7, 0.08)), self.seed * 7 + 1) + + def _mud_noise(self, x, y): + wx, wy = self._warp(x, y, 2) + s = MUD_SIZE * SCALE + n = noise_layers(wx, wy, ((s, 1.0), (s / 2.5, 0.3), (s / 6, 0.08)), self.seed * 7 + 2) + # Low places: the broad relief below its local average. + r = 4.0 * SCALE + average = sum(self.broad(x + dx, y + dy) for dx, dy in ((r, 0), (-r, 0), (0, r), (0, -r))) / 4 + hollow = np.tanh(-(self.broad(x, y) - average) / (0.05 * SCALE)) + return (1 - MUD_IN_HOLLOWS) * n + MUD_IN_HOLLOWS * 0.8 * hollow + + @staticmethod + def _fade(x, y): + """0 inside the terrain, rising to 1 at its border: patches fade out there, grass goes on.""" + return smoothstep((np.maximum(np.abs(x), np.abs(y)) - (SIZE / 2 - PATCH_FADE)) / PATCH_FADE) + + def road(self, x, y): + """Sideways offset from the road centerline, real m (negative inside the ring).""" + hx, hy = ROAD_HALF + qx, qy = np.abs(x) - hx + ROAD_CORNER, np.abs(y) - hy + ROAD_CORNER + sdf = np.hypot(np.maximum(qx, 0), np.maximum(qy, 0)) + np.minimum(np.maximum(qx, qy), 0) - ROAD_CORNER + wavelength, shift = ROAD_WAVE + sdf = sdf + shift * perlin(x / wavelength + 60.5, y / wavelength + 70.5, self.seed * 31 + 600) + return sdf / SCALE + + @staticmethod + def _track_distance(s): + """Distance from the nearest wheel track middle, real m, for road offsets s.""" + return np.minimum(np.abs(s - GAUGE / 2), np.abs(s + GAUGE / 2)) + + def track(self, x, y, s=None): + """Wheel track field, real m: positive on the worn tracks.""" + s = self.road(x, y) if s is None else s + wavelength, wobble = TRACK_EDGE + edge = wobble * perlin(x / (wavelength * SCALE) + 3.5, y / (wavelength * SCALE) + 9.5, self.seed * 31 + 610) + return TRACK_HALF + edge - self._track_distance(s) + + def _off_road(self, x, y, s=None): + """0 away from the road, rising to 1 near the tracks: patches stay off the road.""" + s = self.road(x, y) if s is None else s + return smoothstep((GAUGE / 2 + TRACK_HALF + ROAD_CLEAR - np.abs(s)) / 0.5) + + def road_point(self, side, along, track): + """World point on a road side, 'along' it from -1 to 1, on a track: +1 outer, -1 inner, 0 the middle.""" + hx, hy = ROAD_HALF + sx, sy = {'south': (0, -1), 'north': (0, 1), 'east': (1, 0), 'west': (-1, 0)}[side] + across = np.linspace(-1.0, 1.0, 801) + if sx == 0: + xs, ys = np.full_like(across, along * (hx - ROAD_CORNER)), sy * hy + across + else: + xs, ys = sx * hx + across, np.full_like(across, along * (hy - ROAD_CORNER)) + i = np.argmin(np.abs(self.road(xs, ys) - track * GAUGE / 2)) + return float(xs[i]), float(ys[i]) + + def place_features(self): + """Places of the garden pits, road puddles and start points (world m).""" + spacing = trees.ROW_SPACING * SCALE + rng = np.random.default_rng(self.seed * 7 + 11) + # Pits on the lines between the tree rows, away from the start points and each other. + rows = self.options.tree_rows + lines = (np.arange(rows - 1) - (rows - 2) / 2) * spacing if rows > 1 else np.zeros(1) + starts = [(x, y * spacing) for _, (x, y, *_) in START_POINTS if not isinstance(x, str)] + self.pits = [] + for r, depth, water in GARDEN_PITS if self.options.pits else (): + for _ in range(100): + py = lines[rng.integers(len(lines))] + px = rng.uniform(-trees.GARDEN_HALF_X + 1.5, trees.GARDEN_HALF_X - 1.5) + taken = starts + [(p.x, p.y) for p in self.pits] + if all(math.hypot(px - qx, py - qy) > 1.6 for qx, qy in taken): + break + self.pits.append(Hole(px, py, r, depth, water, 0.0, r)) + self.puddles = [] + for side, along, track, r, depth in ROAD_PUDDLES if self.options.puddles else (): + px, py = self.road_point(side, along, track) + angle = 0.0 if side in ('south', 'north') else math.pi / 2 + self.puddles.append(Hole(px, py, r, depth, True, angle, PUDDLE_WIDTH)) + + def feature_heights(self, x, y): + """Height change of the garden pits and road puddles at grid points, m.""" + dz = np.zeros(np.shape(x)) + for hole in self.pits + self.puddles: + w = window(x, y, hole.x, hole.y, hole.r * SCALE) + wx, wy = x[w], y[w] + # Irregular edges: the distance wobbles around the pit. + wobble = 1 + 0.18 * perlin(wx / (0.3 * SCALE) + hole.x, wy / (0.3 * SCALE) + hole.y, self.seed * 31 + 700) + t = np.clip(hole_distance(hole, wx, wy) * wobble, 0, 1) + # A bowl with steeper sides and a flatter bottom than a plain bump. + dz[w] -= hole.depth * SCALE * (1 - t ** 2.5) ** 1.5 + return dz + + def _pit_field(self, x, y, water): + """Positive around the garden pits with or without water: their ground, in real m.""" + f = np.full(np.shape(x), -10.0) + for p in self.pits: + if p.water == water: + f = np.maximum(f, 1.25 * p.r - np.hypot(x - p.x, y - p.y) / SCALE) + return f + + def soil(self, x, y, s=None): + """Soil patch field: positive inside the patches.""" + f = self._soil_noise(x, y) - self.soil_cut - 2 * self._fade(x, y) - 3 * self._off_road(x, y, s) + return np.maximum(f, self._pit_field(x, y, False) / SOIL_SIZE) + + def mud(self, x, y, s=None): + """Mud patch field: positive inside the patches.""" + f = self._mud_noise(x, y) - self.mud_cut - 2 * self._fade(x, y) - 3 * self._off_road(x, y, s) + return np.maximum(f, self._pit_field(x, y, True) / MUD_SIZE) + + def fields(self, x, y): + """Ground fields (soil, mud, track), each positive on its ground; see labels().""" + s = self.road(x, y) + return self.soil(x, y, s), self.mud(x, y, s), self.track(x, y, s) + + def weights(self, soil, mud, track): + """Smooth weights (soil, mud, track) of the ground relief, rising over EDGE at the ground edges.""" + e = EDGE * SCALE + # Patch field values are noise units changing by about 1 over a patch size; convert to meters. + w_track = smoothstep(0.5 + track / 0.15) + w_mud = smoothstep(0.5 + mud * MUD_SIZE * SCALE / e) * (1 - w_track) + w_soil = smoothstep(0.5 + soil * SOIL_SIZE * SCALE / e) * (1 - w_mud - w_track) + return w_soil, w_mud, w_track + + def ruts(self, x, y): + """Height change of the road: ruts in the wheel tracks and low berms beside them, m.""" + d = self._track_distance(self.road(x, y)) + lo, hi = RUT_DEPTH + wave = perlin(x / (8 * SCALE) + 1.5, y / (8 * SCALE) + 2.5, self.seed * 31 + 620) + depth = lo + (hi - lo) * smoothstep(0.5 + wave) + t = np.clip(d / RUT_HALF, 0, 1) + rut = -depth * (1 - t * t) ** 2 + berm = BERM * np.exp(-((d - RUT_HALF - 0.08) / 0.08) ** 2) + return (rut + berm) * SCALE + + def heights(self, x, y, fields): + """Terrain heights with the ground relief, road and pits at grid points, m.""" + z = self.broad(x, y) + w_soil, w_mud, w_track = self.weights(*fields) + w_grass = 1 - w_soil - w_mud - w_track + small = noise_layers(x, y, real(SMALL_LAYERS), self.seed * 3 + 1) + z = z + small * (1 - MUD_SMOOTH * w_mud - 0.5 * w_track) + self.ruts(x, y) + wavelength, height = TUSSOCKS + tussocks = smoothstep(noise_layers(x, y, ((wavelength * SCALE, 1.0),), self.seed * 3 + 2) * 1.5 + 0.2) + z = z + w_grass * tussocks * height * SCALE + clods = noise_layers(x, y, real(CLODS), self.seed * 3 + 3) + z = z + w_soil * (np.abs(clods) * 1.5 + SOIL_RAISE * SCALE) + z = z - w_mud * MUD_SINK * SCALE + return z + shallow_pits(x, y, self.seed) + self.feature_heights(x, y) + + +def labels(fields): + """Ground at points from the fields (soil, mud, track): indices into GARDEN_GROUNDS; later ones win.""" + g = np.zeros(np.shape(fields[0]), int) + for i, f in enumerate(fields): + g[f > 0] = i + 1 + return g + + +def shallow_pits(x, y, seed): + """Height changes of shallow pits at world grid points (inside the terrain only), m.""" + rng = np.random.default_rng(seed * 7 + 3) + half = SIZE / 2 - 0.5 + area = (2 * half / SCALE) ** 2 # real m^2 + n = rng.poisson(area / 100 * PITS_DENSITY) + px, py = rng.uniform(-half, half, (2, n)) + gather = perlin(px / (PITS_GATHER * SCALE) + 300.5, py / (PITS_GATHER * SCALE) + 900.5, seed * 31 + 300) + keep = rng.uniform(0, 1, n) < np.clip(gather * 1.6 + 0.15, 0, 1) + dz = np.zeros(np.shape(x)) + for cx, cy in zip(px[keep], py[keep]): + r = rng.uniform(*PITS_RADIUS) * SCALE + depth = rng.uniform(*PITS_DEPTH) * SCALE + w = window(x, y, cx, cy, r) + t = np.clip(np.hypot(x[w] - cx, y[w] - cy) / r, 0, 1) + dz[w] -= depth * (1 - t * t) ** 2 + return dz + + +def grid(size=SIZE, step=STEP): + """World coordinates of a square grid; row 0 is the +y edge, as in a Gazebo height map image.""" + n = int(round(size / step)) + 1 + c = (np.arange(n) / (n - 1) - 0.5) * size + x, y = np.meshgrid(c, c[::-1]) + return x, y + + +def grid_normals(z, step): + """Smooth normals of a grid from central differences; rows go along -y.""" + dzdx = np.gradient(z, step, axis=1) + dzdy = -np.gradient(z, step, axis=0) + n = np.stack([-dzdx, -dzdy, np.ones_like(z)], axis=-1) + return n / np.linalg.norm(n, axis=-1, keepdims=True) + + +def grid_triangles(rows, cols, keep=None): + """Counter-clockwise (from above) vertex index triangles of a grid, two per cell, for the kept cells.""" + idx = np.arange(rows * cols).reshape(rows, cols) + a, b = idx[:-1, :-1], idx[:-1, 1:] # upper row (larger y) + c, d = idx[1:, :-1], idx[1:, 1:] # lower row + if keep is None: + keep = np.ones(a.shape, bool) + return np.concatenate([np.stack([c[keep], d[keep], b[keep]], -1), np.stack([c[keep], b[keep], a[keep]], -1)]) + + +def clip(tris, f): + """ + Cut triangles (M, 3, D) of vertex attributes along the zero line of field + values f (M, 3), linear over each triangle. Return the triangles on the + positive and on the negative side, keeping the vertex order. + """ + s = f >= 0 + count = s.sum(1) + pos, neg = [tris[count == 3]], [tris[count == 0]] + for lone_positive in (True, False): + sel = count == (1 if lone_positive else 2) + if not sel.any(): + continue + t, fs, ss = tris[sel], f[sel], s[sel] + lone = np.argmax(ss if lone_positive else ~ss, axis=1) + order = (lone[:, None] + np.arange(3)) % 3 + rows = np.arange(len(t))[:, None] + t, fs = t[rows, order], fs[rows, order] + a, b, c = t[:, 0], t[:, 1], t[:, 2] + tab = (fs[:, 0] / (fs[:, 0] - fs[:, 1]))[:, None] + tac = (fs[:, 0] / (fs[:, 0] - fs[:, 2]))[:, None] + p = a + tab * (b - a) + q = a + tac * (c - a) + lone_tris = np.stack([a, p, q], 1) + rest = np.concatenate([np.stack([p, b, c], 1), np.stack([p, c, q], 1)]) + (pos if lone_positive else neg).append(lone_tris) + (neg if lone_positive else pos).append(rest) + return np.concatenate(pos), np.concatenate(neg) + + +def ground_meshes(x, y, z, normals, fields): + """ + Triangles of each ground: [(positions, normals, faces)] in GARDEN_GROUNDS + order. Whole triangles keep the grid vertices; triangles on a boundary are + cut along it. fields: (soil, mud, track) values at the grid vertices. + """ + rows, cols = z.shape + tris = grid_triangles(rows, cols) + lab = labels(fields).reshape(-1)[tris] + same = (lab == lab[:, :1]).all(1) + pos = np.stack([x, y, z], -1).reshape(-1, 3) + nrm = normals.reshape(-1, 3) + out = [] + for g in range(len(GARDEN_GROUNDS)): + used, faces = np.unique(tris[same & (lab[:, 0] == g)], return_inverse=True) + out.append([pos[used], nrm[used], faces.reshape(-1, 3)]) + + # Boundary triangles with attributes: position (3), normal (3), then the fields. + # They are cut by the last field first, as later grounds win (see labels). + bt = tris[~same] + attrs = np.concatenate([pos[bt], nrm[bt]] + [f.reshape(-1)[bt][..., None] for f in fields], -1) + parts = [None] * len(GARDEN_GROUNDS) + rest = attrs + for i in range(len(fields), 0, -1): + parts[i], rest = clip(rest, rest[..., 5 + i]) + parts[0] = rest + for g, part in enumerate(parts): + if not len(part): + continue + p, n, f = out[g] + n_new = part[..., 3:6].reshape(-1, 3) + n_new /= np.linalg.norm(n_new, axis=-1, keepdims=True) + out[g] = [np.concatenate([p, part[..., :3].reshape(-1, 3)]), np.concatenate([n, n_new]), + np.concatenate([f, len(p) + np.arange(len(part) * 3).reshape(-1, 3)])] + return out + + +def hole_distance(hole, x, y): + """Distance from a hole middle in its radii: 1 at its edge.""" + dx, dy = x - hole.x, y - hole.y + along = dx * math.cos(hole.angle) + dy * math.sin(hole.angle) + across = -dx * math.sin(hole.angle) + dy * math.cos(hole.angle) + return np.hypot(along / (hole.r * SCALE), across / (hole.width * SCALE)) + + +def write_water(path, x, y, z, holes): + """ + Water of the holes in one glTF: for each, the terrain cells below its + water level, cut exactly along the shore and flattened to the level. + Returns the path, or '' without water. + """ + parts = [] + for hole in holes: + w = window(x, y, hole.x, hole.y, hole.r * SCALE) + wx, wy, wz = x[w], y[w], z[w] + level = float(wz.min() + WATER_LEVEL * hole.depth * SCALE) + # Under water: below the level and inside the pit (ruts nearby may be lower too). + field = np.minimum(level - wz, (0.95 - hole_distance(hole, wx, wy)) * 0.1) + tris = grid_triangles(*wz.shape) + attrs = np.stack([wx, wy, field], -1).reshape(-1, 3)[tris] + wet, _ = clip(attrs, attrs[..., 2]) + if len(wet): + parts.append(np.concatenate([wet[..., :2], np.full(wet.shape[:2] + (1,), level)], -1)) + if not parts: + return '' + tris = np.concatenate(parts) + p = tris.reshape(-1, 3) + # The water material is set in the world (glTF colors without a texture are not used by Gazebo). + gltf.write(path, p, np.tile([0.0, 0.0, 1.0], (len(p), 1)), p[:, :2] / 0.5, np.arange(len(p)).reshape(-1, 3)) + return path + + +def start_points(terrain, z_at): + """Start points: [{name, x, y, z, yaw}] (world m, rad).""" + spacing = trees.ROW_SPACING * SCALE + points = [] + for name, place in START_POINTS: + if isinstance(place[0], str): + x, y = terrain.road_point(*place) + # Counterclockwise along the road: the road offset grows outward, the heading is across it. + e = 0.01 + s = terrain.road(np.array([x + e, x - e, x, x]), np.array([y, y, y + e, y - e])) + yaw = math.atan2(s[0] - s[1], s[3] - s[2]) + else: + x, y = place[0], place[1] * spacing + yaw = 0.0 if x < 0 else math.pi + z = float(z_at(np.array([x]), np.array([y]))[0]) + points.append(dict(name=name, x=round(float(x), 3), y=round(float(y), 3), z=round(z, 4), yaw=round(yaw, 4))) + return points + + +def write_ground(path, positions, normals, faces, uv_tile): + uvs = np.stack([positions[:, 0], -positions[:, 1]], -1) / uv_tile + gltf.write(path, positions, normals, uvs, faces) + + +def scatter(terrain, z_at, rng, density, edge_density): + """ + Random points (x, y, z) for plants: 'density' per real m^2 on the grass, + plus 'edge_density' along the patch edges on both sides (not in mud). + """ + half = SIZE / 2 - 0.2 + area = (2 * half / SCALE) ** 2 # real m^2 + peak = density + edge_density + n = rng.poisson(area * peak) + x, y = rng.uniform(-half, half, (2, n)) + soil, mud, track = terrain.fields(x, y) + # Distance to the nearest ground edge, real m, from the field values. + edge = np.minimum(np.minimum(np.abs(soil) * SOIL_SIZE, np.abs(mud) * MUD_SIZE), np.abs(track)) + on_grass = (soil <= 0) & (mud <= 0) & (track <= 0) + d = density * on_grass + edge_density * np.exp(-(edge / CARDS_EDGE_BAND) ** 2) * (mud <= 0) * (track <= 0) + # Thinning out towards the terrain border, where the surroundings go on without plants. + d = d * (1 - Terrain._fade(x, y)) + keep = rng.uniform(0, peak, n) < d + return x[keep], y[keep], z_at(x[keep], y[keep]) + + +def write_cards(out_dir, key, terrain, z_at, seed): + """Grass cards in one glTF, CARDS_PLANES crossed rectangles each; {name, mesh} or None without cards.""" + rng = np.random.default_rng(seed * 7 + 6) + grass = terrain.options.grass + x, y, z = scatter(terrain, z_at, rng, CARDS_DENSITY * grass, CARDS_EDGE_DENSITY * grass) + n = len(x) + if not n: + return None + sprites = CARDS + weights = np.array([next((wt for prefix, wt in CARD_WEIGHTS if s['name'].startswith(prefix + '__')), 0.3) + for s in sprites]) + pick = rng.choice(len(sprites), n, p=weights / weights.sum()) + w = np.array([s['width'] for s in sprites])[pick] + h = np.array([s['height'] for s in sprites])[pick] + uv = np.array([s['uv'] for s in sprites])[pick] + scale = rng.uniform(*CARDS_SIZE, n) * SCALE + w, h = w * scale, h * scale + yaw = rng.uniform(0, math.pi, n) + positions, uvs = [], [] + for k in range(CARDS_PLANES): + a = yaw + k * math.pi / CARDS_PLANES + dx, dy = np.cos(a) * w / 2, np.sin(a) * w / 2 + bottom = z - 0.003 # a little into the ground, so no gap shows + quad = [(x - dx, y - dy, bottom), (x + dx, y + dy, bottom), (x + dx, y + dy, z + h), (x - dx, y - dy, z + h)] + positions.append(np.stack([np.stack(c, -1) for c in quad], 1)) + quad_uv = [(uv[:, 0], uv[:, 3]), (uv[:, 2], uv[:, 3]), (uv[:, 2], uv[:, 1]), (uv[:, 0], uv[:, 1])] + uvs.append(np.stack([np.stack(c, -1) for c in quad_uv], 1)) + positions = np.concatenate(positions) # (CARDS_PLANES * n, 4, 3) + uvs = np.concatenate(uvs) + # Both sides of each rectangle are separate faces, all with normals up, so a + # card is lit like the ground under it from any side (a two-sided material + # would flip the normal of the back side down and make that side dark). + positions = np.concatenate([positions, positions]) + uvs = np.concatenate([uvs, uvs]) + m = len(positions) // 2 + base = np.arange(m)[:, None] * 4 + back = base + m * 4 + faces = np.concatenate([base + [0, 1, 2], base + [0, 2, 3], back + [0, 2, 1], back + [0, 3, 2]]) + atlas = os.path.basename(CARDS_ATLAS) + shutil.copy(os.path.join(ASSETS_DIR, CARDS_ATLAS), os.path.join(out_dir, atlas)) + material = dict(name='grass_cards', alphaMode='MASK', alphaCutoff=0.5, + pbrMetallicRoughness=dict(baseColorTexture=dict(index=0), metallicFactor=0.0, roughnessFactor=1.0)) + path = os.path.join(out_dir, f'grass_cards_{key}.gltf') + p = positions.reshape(-1, 3) + gltf.write(path, p, np.tile([0.0, 0.0, 1.0], (len(p), 1)), uvs.reshape(-1, 2), faces, + material=material, images=[atlas]) + return dict(name='grass_cards', mesh=path) + + +def ground_color(ground): + return GROUNDS[ground].get('color', [1.0, 1.0, 1.0]) + + +def macro_tile(ground): + """World size of one repeat of the ground macro texture, m.""" + return GROUNDS[ground]['tile'] * SCALE * textures.GRID + + +def ground_texture(cache_dir, ground): + """Directory of the macro texture of a ground (see textures.py), built once into cache_dir/textures.""" + texture = GROUNDS[ground]['texture'] + with open(os.path.join(textures.TEXTURES_DIR, texture, texture + '_albedo.jpg'), 'rb') as f: + params = repr((texture, textures.GRID, textures.SIZE, textures.SHARPNESS, textures.BRIGHTNESS)) + params += hashlib.sha1(f.read()).hexdigest() + name = f'garden_{ground}_' + hashlib.sha1(params.encode()).hexdigest()[:10] + return textures.make(texture, os.path.join(cache_dir, 'textures'), name, seed=len(ground)) + + +def write_surroundings(out_dir, key, cache_dir, terrain, z_offset): + """Rings around the terrain, without the cells well inside the next ring in; their border cells go under it.""" + surroundings, inner = [], SIZE + for i, (ring_size, ring_step) in enumerate(RINGS): + ox, oy = grid(ring_size, ring_step) + oz = terrain.horizon(ox, oy) - z_offset + inside = (np.abs(ox) < inner / 2 - 1e-6) & (np.abs(oy) < inner / 2 - 1e-6) + # Lowered by more on coarse rings, as their straight cells cut across the curved relief. + oz[inside] -= 0.025 * ring_step + 0.01 + cell_inside = inside[:-1, :-1] & inside[:-1, 1:] & inside[1:, :-1] & inside[1:, 1:] + deep = (np.abs(ox[:-1, :-1] + ring_step / 2) < inner / 2 - ring_step) + deep &= (np.abs(oy[:-1, :-1] - ring_step / 2) < inner / 2 - ring_step) + used, faces = np.unique(grid_triangles(*oz.shape, keep=~(cell_inside & deep)), return_inverse=True) + p = np.stack([ox, oy, oz], -1).reshape(-1, 3)[used] + n = grid_normals(oz, ring_step).reshape(-1, 3)[used] + mesh = os.path.join(out_dir, f'surroundings{i}_{key}.gltf') + # Far rings are seen only from afar: a much larger texture repeat avoids ripples near the horizon. + write_ground(mesh, p, n, faces.reshape(-1, 3), macro_tile(OUTSIDE) * (1 if i == 0 else FAR_TILE)) + surroundings.append(dict(name=f'ring{i}', mesh=mesh, texture=ground_texture(cache_dir, OUTSIDE), + color=ground_color(OUTSIDE))) + inner = ring_size + return surroundings + + +def build(cache_dir, relief_name, seed, options=Options()): + """Build the terrain files into a cache_dir subdirectory (if not built yet) and return the terrain.yaml path.""" + grounds_cfg = options.grounds() + # The key covers the options, this code, the parameter files and the source data. + params = repr((relief_name, seed, grounds_cfg, CARDS, options)) + for path in (__file__, textures.__file__, trees.__file__, os.path.join(HERE, 'relief', 'steppe.png')): + with open(path, 'rb') as f: + params += hashlib.sha1(f.read()).hexdigest() + key = hashlib.sha1(params.encode()).hexdigest()[:10] + out_dir = os.path.join(cache_dir, 'terrain_' + key) + info_path = os.path.join(out_dir, 'terrain.yaml') + if os.path.isfile(info_path): + return info_path + + os.makedirs(out_dir, exist_ok=True) + terrain = Terrain(relief_name, seed, options) + x, y = grid() + fields = terrain.fields(x, y) + z = terrain.heights(x, y, fields) + z_offset = z.mean() + z -= z_offset + # The height map is lower under the grounds with their own collision meshes. + own = np.isin(labels(fields), [GARDEN_GROUNDS.index(g) for g in OWN_COLLISION]) + z_collision = z - FRICTION_GAP * own + z_min, z_max = float(z_collision.min()), float(z_collision.max()) + heightmap = os.path.join(out_dir, f'heightmap_{key}.png') + data = np.round((z_collision - z_min) / (z_max - z_min) * 65535) + Image.fromarray(data.astype(np.uint16)).save(heightmap) + + grounds = [] + k = VISUAL_STEP + meshes = ground_meshes(x[::k, ::k], y[::k, ::k], z[::k, ::k], grid_normals(z[::k, ::k], STEP * k), + [f[::k, ::k] for f in fields]) + for name, (p, n, f) in zip(GARDEN_GROUNDS, meshes): + if not len(f): + continue + mesh = os.path.join(out_dir, f'ground_{name}_{key}.gltf') + write_ground(mesh, p, n, f, macro_tile(name)) + grounds.append(dict(name=name, mesh=mesh, texture=ground_texture(cache_dir, name), color=ground_color(name), + collision=name in OWN_COLLISION, mu=grounds_cfg[name]['mu'])) + + def z_at(px, py): + return bilinear(z, (px + SIZE / 2) / STEP, (SIZE / 2 - py) / STEP) + + cards = write_cards(out_dir, key, terrain, z_at, seed) + orchard = trees.build(out_dir, key, z_at, seed, options.tree_rows) + water = write_water(os.path.join(out_dir, f'water_{key}.gltf'), x, y, z, + [h for h in terrain.pits + terrain.puddles if h.water]) + features = dict(water=water, water_color=WATER_COLOR, water_roughness=WATER_ROUGHNESS, + pits=[dict(x=round(float(p.x), 3), y=round(float(p.y), 3), radius=round(p.r * SCALE, 3), + depth=round(p.depth * SCALE, 3), water=p.water) for p in terrain.pits], + puddles=[dict(x=round(float(p.x), 3), y=round(float(p.y), 3), length=round(2 * p.r * SCALE, 3), + depth=round(p.depth * SCALE, 3)) for p in terrain.puddles]) + + surroundings = write_surroundings(out_dir, key, cache_dir, terrain, z_offset) + + info = dict(size=SIZE, z_min=z_min, z_max=z_max, heightmap=heightmap, mu=grounds_cfg[OUTSIDE]['mu'], + grounds=grounds, plants=[cards] if cards else [], trees=orchard, surroundings=surroundings, + features=features, start_points=start_points(terrain, z_at)) + with open(info_path, 'w') as f: + yaml.safe_dump(info, f, sort_keys=False) + return info_path diff --git a/src/platform/kpi_rover_worlds/worlds/garden/textures.py b/src/platform/kpi_rover_worlds/worlds/garden/textures.py new file mode 100644 index 0000000..fd45d13 --- /dev/null +++ b/src/platform/kpi_rover_worlds/worlds/garden/textures.py @@ -0,0 +1,112 @@ +""" +Ground textures without visible repetition. + +A photo texture repeated over a large area shows a regular grid of copies. +make() builds a macro texture of GRID x GRID repeats of a photo texture from +assets/textures, where every repeat is a differently shifted, flipped +or turned copy, blended with soft irregular seams, and the brightness varies +in broad patches. The macro texture is seamless too, but repeats GRID times +less often, and its copies differ, so the eye doesn't catch the grid. +""" + +import os + +import numpy as np +from PIL import Image + +TEXTURES_DIR = os.path.join(os.path.dirname(os.path.abspath(__file__)), '..', '..', 'assets', 'textures') + +GRID = 3 # repeats of the photo texture along each side of the macro texture +SIZE = 3072 # macro texture side, px: the full resolution of the photo texture +SHARPNESS = 20.0 # how narrow the seams between copies are +BRIGHTNESS = 0.08 # broad brightness variation, fraction + + +def _periodic_noise(n, cells, rng): + """Smooth seamless noise on an n x n image with 'cells' random values per side, in about [-1, 1].""" + v = rng.uniform(-1, 1, (cells, cells)) + t = np.arange(n) / n * cells + i0 = np.floor(t).astype(int) + f = t - i0 + f = f * f * (3 - 2 * f) + i1 = (i0 + 1) % cells + rows = v[i0][:, i0] * (1 - f)[None, :] + v[i0][:, i1] * f[None, :] + rows1 = v[i1][:, i0] * (1 - f)[None, :] + v[i1][:, i1] * f[None, :] + return rows * (1 - f)[:, None] + rows1 * f[:, None] + + +def _variant(img, kind, normal): + """Flipped or turned copy of a texture; normal map vectors are turned with it.""" + if kind == 1: # turned 180 degrees + img = img[::-1, ::-1] + if normal: + img = img.copy() + img[..., :2] = 1 - img[..., :2] + elif kind == 2: # mirrored left-right + img = img[:, ::-1] + if normal: + img = img.copy() + img[..., 0] = 1 - img[..., 0] + elif kind == 3: # mirrored top-bottom + img = img[::-1] + if normal: + img = img.copy() + img[..., 1] = 1 - img[..., 1] + return img + + +def make(texture, out_dir, name, seed): + """ + Build a macro texture of the photo texture directory 'texture' as + out_dir/name/name_{albedo,normal,roughness}.jpg and return the directory. + """ + path = os.path.join(out_dir, name) + if os.path.isfile(os.path.join(path, name + '_roughness.jpg')): + return path + os.makedirs(path, exist_ok=True) + rng = np.random.default_rng(seed) + cell = SIZE // GRID + + # Each copy: a cell it is centered at (jittered), a shift and a variant. + centers = (np.stack(np.meshgrid(np.arange(GRID), np.arange(GRID)), -1).reshape(-1, 2) + + 0.5 + rng.uniform(-0.3, 0.3, (GRID * GRID, 2))) * cell + shifts = rng.integers(0, cell, (GRID * GRID, 2)) + kinds = rng.integers(0, 4, GRID * GRID) + + # Soft weights of the copies: nearest copy wins, seams wobble with noise. + yy, xx = np.mgrid[0:SIZE, 0:SIZE].astype(np.float32) + xx += _periodic_noise(SIZE, GRID * 4, rng).astype(np.float32) * cell * 0.25 + yy += _periodic_noise(SIZE, GRID * 4, rng).astype(np.float32) * cell * 0.25 + + def weight(k): + cx, cy = (float(c) for c in centers[k]) + dx = (xx - cx + SIZE / 2) % SIZE - SIZE / 2 + dy = (yy - cy + SIZE / 2) % SIZE - SIZE / 2 + return np.exp(-SHARPNESS * (dx * dx + dy * dy) / (cell * cell)) + + brightness = 1 + BRIGHTNESS * _periodic_noise(SIZE, GRID, rng) + BRIGHTNESS / 2 * _periodic_noise(SIZE, GRID * 3, rng) + + src = os.path.join(TEXTURES_DIR, texture, texture) + kinds_out = ('albedo', 'normal', 'roughness') + imgs = [np.asarray(Image.open(f'{src}_{kind}.jpg').convert('RGB').resize((cell, cell), Image.LANCZOS)) + .astype(np.float32) / 255 for kind in kinds_out] + outs = [np.zeros((SIZE, SIZE, 3), np.float32) for _ in kinds_out] + total = np.zeros((SIZE, SIZE), np.float32) + for k in range(GRID * GRID): + w = weight(k) + total += w + for kind, img, out in zip(kinds_out, imgs, outs): + v = np.roll(_variant(img, kinds[k], kind == 'normal'), tuple(shifts[k]), axis=(0, 1)) + out += w[..., None] * np.tile(v, (GRID, GRID, 1)) + for kind, out in zip(kinds_out, outs): + out /= total[..., None] + if kind == 'normal': + # Blending shortens the normals; make them unit length again. + n = out * 2 - 1 + n /= np.linalg.norm(n, axis=-1, keepdims=True) + 1e-6 + out = (n + 1) / 2 + if kind == 'albedo': + out *= brightness[..., None] + Image.fromarray((np.clip(out, 0, 1) * 255).astype(np.uint8)).save( + os.path.join(path, f'{name}_{kind}.jpg'), quality=90) + return path diff --git a/src/platform/kpi_rover_worlds/worlds/garden/trees.py b/src/platform/kpi_rover_worlds/worlds/garden/trees.py new file mode 100644 index 0000000..4ae56fb --- /dev/null +++ b/src/platform/kpi_rover_worlds/worlds/garden/trees.py @@ -0,0 +1,177 @@ +""" +Trees of the garden: apple tree models (made with Blender's Sapling Tree Gen), +planted in rows and scaled down to the robot (SCALE). + +Each tree is one of the models, turned and sized at random; a few are +missing or younger, as in a real orchard. The wood gets the bark photo +texture of assets/textures in real size, each triangle projected onto +its own plane with v along the branch. The leaf cards of the model get the +leaf cluster pictures (CLUSTERS), a random one on each card, mirrored +at random. Both sides of a card are separate faces with normals pointing +away from the crown middle, so the crown is lit as one rounded mass from +any side (a two-sided material would make the back sides dark). + +All trees of a model go into one wood mesh, and all leaves into one mesh, to +keep the drawing cheap. The robot collides with the stems only: cylinders up +to above the robot, where the crowns begin. + +Trees stand in rows along x, ROW_SPACING apart, TREE_SPACING apart in a row. +""" + +import math +import os +import shutil + +import numpy as np +import yaml + +from kpi_rover_worlds import gltf + +HERE = os.path.dirname(os.path.abspath(__file__)) +ASSETS_DIR = os.path.join(HERE, '..', '..', 'assets') + +# The garden is modeled in real sizes, then scaled down so that a real orchard +# tree is TREE_HEIGHT_ROBOTS robot heights (0.345 m with the lidar) tall. +TREE_HEIGHT_ROBOTS = 4 +REAL_TREE_HEIGHT = 4.0 +SCALE = 0.345 * TREE_HEIGHT_ROBOTS / REAL_TREE_HEIGHT +ROW_SPACING = 5.5 # real distance between tree rows, m + +# Models in assets/models//: _wood.gltf, _leaves.yaml; their real stem radius, m. +STEM_RADIUS = {'apple_1': 0.134, 'apple_2': 0.1, 'apple_3': 0.124, 'apple_4': 0.118} +CLUSTERS = 'models/apple_leaves/apple_clusters.png' # leaf cluster pictures side by side +CLUSTER_VARIANTS = 4 + +GARDEN_HALF_X = 6.0 # half length of the rows, world m +ROWS = 6 # tree rows by default (the tree_rows world argument) +TREE_SPACING = 4.5 # real distance between trees in a row, m +JITTER = 0.15 # real random offset of a tree from its place, m +SIZE = (0.9, 1.1) # random size of a tree +MISSING = 0.04 # share of missing trees +YOUNG = 0.08 # share of young trees +YOUNG_SIZE = 0.65 +BARK = 'tree_bark' # bark photo texture in assets/textures +BARK_TILE = 2.15 # real size one bark texture repeat covers, m (see textures/CREDITS.md) + + +def layout(seed, rows=ROWS): + """Tree places in 'rows' rows: [(x, y, young)] in world m.""" + rng = np.random.default_rng(seed * 7 + 9) + spacing_y = ROW_SPACING * SCALE + spacing_x = TREE_SPACING * SCALE + count_x = int(2 * GARDEN_HALF_X / spacing_x) + 1 + places = [] + for row in range(rows): + y = (row - (rows - 1) / 2) * spacing_y + for i in range(count_x): + x = (i - (count_x - 1) / 2) * spacing_x + r = rng.uniform(0, 1) + if r < MISSING: + continue + jx, jy = rng.normal(0, JITTER * SCALE, 2) + places.append((x + jx, y + jy, r < MISSING + YOUNG)) + return places + + +def bark_uvs(p, f): + """UVs in real meters: each triangle projected onto its plane, v along the steepest direction in it.""" + uv = np.zeros((len(p), 2)) + a, b, c = p[f[:, 0]], p[f[:, 1]], p[f[:, 2]] + n = np.cross(b - a, c - a) + n /= np.linalg.norm(n, axis=1, keepdims=True) + 1e-12 + side = np.cross([0.0, 0.0, 1.0], n) + flat = np.linalg.norm(side, axis=1) < 0.2 # facing up or down: any direction will do + side[flat] = [1.0, 0.0, 0.0] + side /= np.linalg.norm(side, axis=1, keepdims=True) + up = np.cross(n, side) + for k in range(3): + q = p[f[:, k]] + uv[f[:, k]] = np.stack([(q * side).sum(1), -(q * up).sum(1)], 1) / BARK_TILE + return uv + + +def load(name): + """Wood arrays with bark UVs, and leaf cards of a tree model.""" + g, buffers = gltf.read(os.path.join(ASSETS_DIR, 'models', name, f'{name}_wood.gltf')) + p, n, _, f = gltf.mesh_data(g, buffers, g['nodes'][0]['mesh']) + # Vertices are separate for each triangle, so each can have its own projection. + wood = (p, n, bark_uvs(p, f), f) + with open(os.path.join(ASSETS_DIR, 'models', name, f'{name}_leaves.yaml')) as f: + leaves = yaml.load(f, yaml.CSafeLoader) + cards = tuple(np.array(leaves[k], float) for k in ('centers', 'u', 'v')) + return wood, cards + + +def build(out_dir, key, z_at, seed, rows=ROWS): + """ + Build all trees in 'rows' rows: write the wood and leaves glTFs into out_dir and return + {wood: [{name, mesh, texture, color}], leaves, stems: [{x, y, z, radius}]}. + """ + rng = np.random.default_rng(seed * 7 + 10) + names = sorted(STEM_RADIUS) + models = {name: load(name) for name in names} + places = layout(seed, rows) + if not places: + return dict(wood=[], leaves='', stems=[]) + zs = z_at(np.array([p[0] for p in places]), np.array([p[1] for p in places])) + wood_parts = {name: [] for name in names} + centers, us, vs, mids, stems = [], [], [], [], [] + for (x, y, young), z in zip(places, zs): + name = names[rng.integers(len(names))] + (p, n, uv, f), (c, u, v) = models[name] + k = rng.uniform(*SIZE) * (YOUNG_SIZE if young else 1.0) * SCALE + yaw = rng.uniform(0, 2 * math.pi) + cs, sn = math.cos(yaw), math.sin(yaw) + rot = np.array([[cs, -sn, 0], [sn, cs, 0], [0, 0, 1]]) + offset = np.array([x, y, z - 0.01]) # a little into the ground + wood_parts[name].append((p @ rot.T * k + offset, n @ rot.T, uv, f)) + c = c @ rot.T * k + offset + middle = c.mean(0) + centers.append(c) + us.append(u @ rot.T * k) + vs.append(v @ rot.T * k) + mids.append(np.repeat([middle], len(c), 0)) + stems.append(dict(x=float(x), y=float(y), z=float(z), radius=round(float(STEM_RADIUS[name] * k), 4))) + + wood = [] + for name, parts in wood_parts.items(): + if not parts: + continue + offsets = np.cumsum([0] + [len(part[0]) for part in parts[:-1]]) + path = os.path.join(out_dir, f'trees_{name}_{key}.gltf') + gltf.write(path, np.concatenate([part[0] for part in parts]), np.concatenate([part[1] for part in parts]), + np.concatenate([part[2] for part in parts]), + np.concatenate([part[3] + o for part, o in zip(parts, offsets)])) + wood.append(dict(name=name, mesh=path, texture=BARK, color=[1.0, 1.0, 1.0])) + + # Leaf cards: two-sided rectangles with a random cluster picture along their long side, mirrored at random. + c, u, v, mid = (np.concatenate(a) for a in (centers, us, vs, mids)) + m = len(c) + long_v = np.linalg.norm(v, axis=1) > np.linalg.norm(u, axis=1) + u[long_v], v[long_v] = v[long_v].copy(), u[long_v].copy() + u *= rng.choice([-1, 1], (m, 1)) + v *= rng.choice([-1, 1], (m, 1)) + corners = np.stack([c - u - v, c + u - v, c + u + v, c - u + v], 1) + normals = corners - mid[:, None, :] + normals[..., 2] += 0.3 * np.linalg.norm(normals, axis=-1) # crowns are lit more from above + normals /= np.linalg.norm(normals, axis=-1, keepdims=True) + variant = rng.integers(0, CLUSTER_VARIANTS, m) + u0, u1 = variant / CLUSTER_VARIANTS, (variant + 1) / CLUSTER_VARIANTS + uvs = np.stack([np.stack([u0, np.ones(m)], -1), np.stack([u1, np.ones(m)], -1), + np.stack([u1, np.zeros(m)], -1), np.stack([u0, np.zeros(m)], -1)], 1) + # Both sides as separate faces with the same normals. + corners = np.concatenate([corners, corners]) + normals = np.concatenate([normals, normals]) + uvs = np.concatenate([uvs, uvs]) + q = np.arange(m)[:, None] * 4 + back = q + m * 4 + faces = np.concatenate([q + [0, 1, 2], q + [0, 2, 3], back + [0, 2, 1], back + [0, 3, 2]]) + atlas = os.path.basename(CLUSTERS) + shutil.copy(os.path.join(ASSETS_DIR, CLUSTERS), os.path.join(out_dir, atlas)) + material = dict(name='apple_leaves', alphaMode='MASK', alphaCutoff=0.5, + pbrMetallicRoughness=dict(baseColorTexture=dict(index=0), metallicFactor=0.0, roughnessFactor=0.8)) + leaves = os.path.join(out_dir, f'trees_leaves_{key}.gltf') + gltf.write(leaves, corners.reshape(-1, 3), normals.reshape(-1, 3), uvs.reshape(-1, 2), faces, + material=material, images=[atlas]) + + return dict(wood=wood, leaves=leaves, stems=stems) diff --git a/src/platform/kpi_rover_worlds/worlds/maze/levels/level1.txt b/src/platform/kpi_rover_worlds/worlds/maze/levels/level1.txt new file mode 100644 index 0000000..4f07bc5 --- /dev/null +++ b/src/platform/kpi_rover_worlds/worlds/maze/levels/level1.txt @@ -0,0 +1,9 @@ +########### +S # # +### #D# # # +# # # # +##### ##### +# # +###A#N##### +# E +########### diff --git a/src/platform/kpi_rover_worlds/worlds/maze/levels/level2.txt b/src/platform/kpi_rover_worlds/worlds/maze/levels/level2.txt new file mode 100644 index 0000000..07ca6d9 --- /dev/null +++ b/src/platform/kpi_rover_worlds/worlds/maze/levels/level2.txt @@ -0,0 +1,11 @@ +############### +S # # # +# #D### ### # # +# # A # # +# ### #######T# +# # # # # +# ### # # # # # +# # # # +#N##### #L### # +# L E +############### diff --git a/src/platform/kpi_rover_worlds/worlds/maze/levels/level3.txt b/src/platform/kpi_rover_worlds/worlds/maze/levels/level3.txt new file mode 100644 index 0000000..ac20bf4 --- /dev/null +++ b/src/platform/kpi_rover_worlds/worlds/maze/levels/level3.txt @@ -0,0 +1,15 @@ +##################### +# # N # # +# ##### ###T#N# # # # +# T # # L # # # +# ### # # # # # # # # +# # # # # # L # # +# # ### # # # #L#L# # +S # # # # E +# ####### ######### # +# # # D # # # +##### # ### #A# # # # +# # # # # # # # # +# # ### # # # # # #A# +# # # # +##################### diff --git a/src/platform/kpi_rover_worlds/worlds/maze/maze.py b/src/platform/kpi_rover_worlds/worlds/maze/maze.py new file mode 100644 index 0000000..f16b8eb --- /dev/null +++ b/src/platform/kpi_rover_worlds/worlds/maze/maze.py @@ -0,0 +1,403 @@ +""" +Maze world: a warehouse with a maze of walls and arches, a fixed level or a random one. + +A maze is a text grid of (2 * rows + 1) lines of (2 * cols + 1) characters. +Cells are at odd line and odd column indices, everything else is a wall +position between cells or a corner: + '#' - wall + ' ' - open passage (in a wall position) or a cell + 'S', 'E' - entrance and exit, open passages in the outer wall + letters - openings from ARCHES, e.g. 'A' arch or 'L' too low arch + +Example: + ####### + S A # + ### # # + # L E + ####### + +Start points: 'a' outside the entrance and 'b' outside the exit, facing into +the maze; the shortest route between them is a blue line, GUI only. To print +a maze: python3 maze.py --maze random --seed 7 --difficulty hard + +Random mazes are perfect mazes (a spanning tree of passages) with a few extra +loops, so every cell is reachable. Passable arches replace passages on the +route from the entrance to the exit and impassable arches replace walls, so +the exit always stays reachable; the generator checks it anyway. Impassable +arches are put where they look like shortcuts. The same seed and difficulty +always give the same maze. +""" + +import argparse +import math +import os +import random +from collections import deque + +from kpi_rover_worlds import scatter, sdf + +HERE = os.path.dirname(os.path.abspath(__file__)) +LEVELS_DIR = os.path.join(HERE, 'levels') + +CELL = 0.7 # cell size, m; corridors are CELL - WALL_THICKNESS wide +WALL_THICKNESS = 0.05 +WALL_HEIGHT = 0.5 # not higher than two robot heights +MARGIN = 1.5 # free space between the maze and the warehouse walls +START_DISTANCE = 0.6 # distance of start points from the entrance and exit + +# Random maze parameters for each difficulty: size in cells (cols, rows), +# number of extra loops, passable arches on the route and impassable arches. +DIFFICULTIES = { + 'easy': dict(size=(5, 4), loops=1, arches='DA', traps='N'), + 'medium': dict(size=(7, 5), loops=2, arches='DAT', traps='NLL'), + 'hard': dict(size=(10, 7), loops=3, arches='DAATT', traps='NNLLLL'), +} + +DIRECTIONS = ((0, 1), (1, 0), (0, -1), (-1, 0)) + +# Free space kept around the maze and on the way from start points to the maze, m. +MAZE_MARGIN = 0.4 +START_RADIUS = 0.6 +ARCH_COLOR = (0.55, 0.42, 0.3) # arch_material 'contrast' + +# Openings by their letter in maze grids: clear width and height (None: a +# doorway without a lintel), m, and whether the robot (0.26 m wide, 0.345 m +# high, lidar at 0.245 m) fits through. T fits with about 3 cm to spare; the +# L lintel is above the lidar scan plane, so the opening looks free to the +# lidar, but the robot hits it. +ARCHES = { + 'D': dict(name='door', width=0.55, height=None, passable=True), + 'A': dict(name='arch', width=0.45, height=0.45, passable=True), + 'T': dict(name='tight_arch', width=0.32, height=0.38, passable=True), + 'N': dict(name='narrow_arch', width=0.20, height=0.45, passable=False), + 'L': dict(name='low_arch', width=0.45, height=0.30, passable=False), +} + + +def available_levels(): + return sorted(f[:-4] for f in os.listdir(LEVELS_DIR) if f.endswith('.txt')) + + +class Maze: + def __init__(self, grid): + self.grid = [list(line) for line in grid] + self.rows = (len(self.grid) - 1) // 2 + self.cols = (len(self.grid[0]) - 1) // 2 + + @classmethod + def parse(cls, text): + lines = [line.rstrip('\n') for line in text.splitlines() if line.strip()] + width = max(len(line) for line in lines) + lines = [line.ljust(width) for line in lines] + if len(lines) % 2 == 0 or width % 2 == 0: + raise ValueError('Maze grid must have an odd number of lines and columns.') + return cls(lines) + + def text(self): + return '\n'.join(''.join(line) for line in self.grid) + + def cells(self): + return [(r, c) for r in range(1, 2 * self.rows, 2) for c in range(1, 2 * self.cols, 2)] + + def find(self, char): + found = [(r, c) for r, line in enumerate(self.grid) for c, ch in enumerate(line) if ch == char] + if len(found) != 1: + raise ValueError(f"Maze must have exactly one '{char}', found {len(found)}.") + return found[0] + + def inner_cell(self, position): + """Cell next to an entrance or exit in the outer wall.""" + r, c = position + return (min(max(r, 1), 2 * self.rows - 1), min(max(c, 1), 2 * self.cols - 1)) + + def is_boundary(self, r, c): + return r in (0, 2 * self.rows) or c in (0, 2 * self.cols) + + def wall_positions(self, interior=True): + """Positions between two cells (not corners), optionally only inside the outer wall.""" + return [(r, c) for r in range(len(self.grid)) for c in range(len(self.grid[0])) + if (r + c) % 2 == 1 and not (interior and self.is_boundary(r, c))] + + def wall_cells(self, r, c): + """The two cells separated by a wall position.""" + if r % 2 == 0: + return (r - 1, c), (r + 1, c) + return (r, c - 1), (r, c + 1) + + def distances(self, start, arches): + """BFS distances and parents from a cell, through open passages and passable arches.""" + dist, parent = {start: 0}, {start: None} + queue = deque([start]) + while queue: + r, c = queue.popleft() + for dr, dc in DIRECTIONS: + wr, wc, nr, nc = r + dr, c + dc, r + 2 * dr, c + 2 * dc + if not (0 < nr < 2 * self.rows and 0 < nc < 2 * self.cols) or (nr, nc) in dist: + continue + ch = self.grid[wr][wc] + if ch == ' ' or (ch in arches and arches[ch]['passable']): + dist[(nr, nc)] = dist[(r, c)] + 1 + parent[(nr, nc)] = (wr, wc), (r, c) + queue.append((nr, nc)) + return dist, parent + + def check(self, arches): + """Check the maze characters and that the exit is reachable from the entrance.""" + allowed = set('# SE') | set(arches) + for r, line in enumerate(self.grid): + for c, ch in enumerate(line): + if ch not in allowed: + raise ValueError(f"Unknown maze character '{ch}' at line {r + 1}, column {c + 1}.") + if r % 2 == 1 and c % 2 == 1 and ch != ' ': + raise ValueError(f"Cell at line {r + 1}, column {c + 1} must be ' '.") + if r % 2 == 0 and c % 2 == 0 and ch not in '# ': + raise ValueError(f"Corner at line {r + 1}, column {c + 1} must be '#' or ' '.") + entrance, exit_ = self.find('S'), self.find('E') + for name, position in (('S', entrance), ('E', exit_)): + if not self.is_boundary(*position) or sum(position) % 2 == 0: + raise ValueError(f"'{name}' must be in the outer wall between corners.") + dist, _ = self.distances(self.inner_cell(entrance), arches) + if self.inner_cell(exit_) not in dist: + raise ValueError('Exit is not reachable from the entrance.') + + +def generate(seed, difficulty): + """Random maze for a seed and difficulty from DIFFICULTIES.""" + if difficulty not in DIFFICULTIES: + raise ValueError(f"Unknown difficulty '{difficulty}'. Available: {', '.join(DIFFICULTIES)}.") + cfg = DIFFICULTIES[difficulty] + arches = ARCHES + rng = random.Random(f'{seed}:{difficulty}') + cols, rows = cfg['size'] + maze = Maze([['#'] * (2 * cols + 1) for _ in range(2 * rows + 1)]) + for r, c in maze.cells(): + maze.grid[r][c] = ' ' + + # Perfect maze with an iterative recursive backtracker. + start = rng.choice(maze.cells()) + visited, stack = {start}, [start] + while stack: + r, c = stack[-1] + options = [(dr, dc) for dr, dc in DIRECTIONS + if 0 < r + 2 * dr < 2 * rows and 0 < c + 2 * dc < 2 * cols and (r + 2 * dr, c + 2 * dc) not in visited] + if not options: + stack.pop() + continue + dr, dc = rng.choice(options) + maze.grid[r + dr][c + dc] = ' ' + visited.add((r + 2 * dr, c + 2 * dc)) + stack.append((r + 2 * dr, c + 2 * dc)) + + # Entrance on the left side, exit on the right side. + entrance = (2 * rng.randrange(rows) + 1, 0) + exit_ = (2 * rng.randrange(rows) + 1, 2 * cols) + maze.grid[entrance[0]][entrance[1]] = 'S' + maze.grid[exit_[0]][exit_[1]] = 'E' + + # Extra loops give alternative routes. + walls = [p for p in maze.wall_positions() if maze.grid[p[0]][p[1]] == '#'] + for r, c in rng.sample(walls, min(cfg['loops'], len(walls))): + maze.grid[r][c] = ' ' + + # Passable arches spread along the route from the entrance to the exit. + start_cell, end_cell = maze.inner_cell(entrance), maze.inner_cell(exit_) + dist, parent = maze.distances(start_cell, arches) + route, cell = [], end_cell + while parent[cell]: + wall, cell = parent[cell] + route.append(wall) + route.reverse() + letters = list(cfg['arches']) + rng.shuffle(letters) + for i, letter in enumerate(letters[:len(route)]): + r, c = route[(2 * i + 1) * len(route) // (2 * len(letters))] + maze.grid[r][c] = letter + + # Impassable arches in walls that look like shortcuts: between cells far apart along the passages. + dist, _ = maze.distances(start_cell, arches) + walls = [p for p in maze.wall_positions() if maze.grid[p[0]][p[1]] == '#'] + rng.shuffle(walls) + walls.sort(key=lambda p: -abs(dist[maze.wall_cells(*p)[0]] - dist[maze.wall_cells(*p)[1]])) + for (r, c), letter in zip(walls, cfg['traps']): + maze.grid[r][c] = letter + + maze.check(arches) + return maze + + +def load_level(name): + path = os.path.join(LEVELS_DIR, name + '.txt') + if not os.path.isfile(path): + raise ValueError(f"Unknown maze '{name}'. Available: {', '.join(available_levels())}, random.") + with open(path) as f: + maze = Maze.parse(f.read()) + maze.check(ARCHES) + return maze + + +def layout(maze): + """Geometry of a maze centered at the origin.""" + arches = ARCHES + t = WALL_THICKNESS + + def x(c): + return round((c / 2 - maze.cols / 2) * CELL, 4) + + def y(r): + return round((maze.rows / 2 - r / 2) * CELL, 4) + + def solid(r, c): + return maze.grid[r][c] == '#' + + walls, covered = [], set() + # Horizontal wall runs along even lines and vertical ones along even columns, each from corner to corner. + for r in range(0, 2 * maze.rows + 1, 2): + c = 1 + while c < 2 * maze.cols: + if solid(r, c): + end = c + while end + 2 < 2 * maze.cols and solid(r, end + 2): + end += 2 + walls.append([round((x(c - 1) + x(end + 1)) / 2, 4), y(r), round(x(end + 1) - x(c - 1) + t, 4), t]) + covered.update((r, cc) for cc in range(c - 1, end + 2, 2)) + c = end + 2 + else: + c += 2 + # Vertical runs stop at corners already covered by horizontal runs, so walls do not overlap. + horizontal = set(covered) + for c in range(0, 2 * maze.cols + 1, 2): + r = 1 + while r < 2 * maze.rows: + if solid(r, c): + end = r + while end + 2 < 2 * maze.rows and solid(end + 2, c): + end += 2 + top = y(r - 1) + (-t / 2 if (r - 1, c) in horizontal else t / 2) + bottom = y(end + 1) - (-t / 2 if (end + 1, c) in horizontal else t / 2) + walls.append([x(c), round((top + bottom) / 2, 4), t, round(top - bottom, 4)]) + covered.update((rr, c) for rr in range(r - 1, end + 2, 2)) + r = end + 2 + else: + r += 2 + + # Arches, and posts at corners next to arches that no wall run covers. + openings = [] + for r, c in maze.wall_positions(interior=False): + ch = maze.grid[r][c] + if ch not in arches: + continue + arch = arches[ch] + openings.append(dict(type=arch['name'], x=x(c), y=y(r), yaw=0.0 if r % 2 == 0 else round(math.pi / 2, 4), + width=arch['width'], height=arch['height'] or 0.0)) + corners = [(r, c - 1), (r, c + 1)] if r % 2 == 0 else [(r - 1, c), (r + 1, c)] + for corner in corners: + if corner not in covered: + covered.add(corner) + walls.append([x(corner[1]), y(corner[0]), t, t]) + + # Start points outside the entrance and exit, facing into the maze. + starts = {} + for name, char in (('a', 'S'), ('b', 'E')): + r, c = maze.find(char) + nx = -1 if c == 0 else 1 if c == 2 * maze.cols else 0 + ny = 1 if r == 0 else -1 if r == 2 * maze.rows else 0 + starts[name] = [round(x(c) + nx * START_DISTANCE, 4), round(y(r) + ny * START_DISTANCE, 4), + round(math.atan2(-ny, -nx), 4)] + + # Shortest route through passable openings, from start point 'a' through the cell centers to start point 'b'. + start_cell, end_cell = maze.inner_cell(maze.find('S')), maze.inner_cell(maze.find('E')) + _, parent = maze.distances(start_cell, arches) + cells = [end_cell] + while parent[cells[-1]]: + cells.append(parent[cells[-1]][1]) + points = [starts['a'][:2]] + [[x(c), y(r)] for r, c in reversed(cells)] + [starts['b'][:2]] + corners = [points[0]] + for point, following in zip(points[1:-1], points[2:]): + previous = corners[-1] + if abs((point[0] - previous[0]) * (following[1] - point[1]) - (point[1] - previous[1]) * (following[0] - point[0])) > 1e-9: + corners.append(point) + corners.append(points[-1]) + + def turn(a, b, c): + return 'left' if (b[0] - a[0]) * (c[1] - b[1]) - (b[1] - a[1]) * (c[0] - b[0]) > 0 else 'right' + + route = [] + for i in range(len(corners) - 1): + start = turn(corners[i - 1], corners[i], corners[i + 1]) if i > 0 else 'flat' + end = turn(corners[i], corners[i + 1], corners[i + 2]) if i + 2 < len(corners) else 'flat' + route.append(corners[i] + corners[i + 1] + [start, end]) + + size = [round(maze.cols * CELL, 4), round(maze.rows * CELL, 4)] + return dict( + cell=CELL, wall_thickness=t, wall_height=WALL_HEIGHT, span=round(CELL - t, 4), + size=size, warehouse=[size[0] + 2 * MARGIN, size[1] + 2 * MARGIN], + walls=walls, arches=openings, starts=starts, route=route, grid=maze.text().splitlines()) + + +def scatter_objects(lay, args): + """Scatter objects around the maze, off it and the ways from the start points to it.""" + sx, sy = lay['size'][0] / 2 + WALL_THICKNESS, lay['size'][1] / 2 + WALL_THICKNESS + wx, wy = lay['warehouse'][0] / 2, lay['warehouse'][1] / 2 + keep_out = [('rect', -sx - MAZE_MARGIN, sx + MAZE_MARGIN, -sy - MAZE_MARGIN, sy + MAZE_MARGIN)] + for x, y, yaw in lay['starts'].values(): + keep_out.append(('circle', x, y, START_RADIUS)) + keep_out.append(('segment', x, y, x + START_DISTANCE * math.cos(yaw), y + START_DISTANCE * math.sin(yaw), START_RADIUS)) + return scatter.scatter_from_args(args, (-wx, wx, -wy, wy), keep_out, [('rect', -sx, sx, -sy, sy)], 'maze') + + +def make_maze(name, seed, difficulty): + if name == 'random': + return generate(int(seed), difficulty) + return load_level(name) + + +def arch(parent, name, x, y, yaw, span, width, height, wall_height, thickness, view, material): + """Posts leave a 'width' opening in a 'span' long wall, a lintel above 'height' (0: none) closes it.""" + look = dict(color=ARCH_COLOR) if material == 'contrast' else dict(wall_material=material) + link = sdf.static_model(parent, name, (x, y, 0, 0, 0, yaw)) + post = (span - width) / 2 + if post > 0: + for side, sign in (('left', -1), ('right', 1)): + sdf.solid_box(link, f'post_{side}', sign * (width + post) / 2, 0, wall_height / 2, post, thickness, + wall_height, view=view, **look) + if height > 0: + sdf.solid_box(link, 'lintel', 0, 0, (height + wall_height) / 2, width, thickness, wall_height - height, + view=view, footprint_scale=0.3, **look) + + +def build(args): + lay = layout(make_maze(args['maze'], args['seed'], args['difficulty'])) + view = args['wall_view'] + root, world = sdf.world('maze') + sdf.floor(world, args['floor'], *lay['warehouse']) + sdf.perimeter_walls(world, *lay['warehouse'], args['wall_material']) + link = sdf.static_model(world, 'maze_walls') + for i, (x, y, sx, sy) in enumerate(lay['walls']): + sdf.wall(link, f'wall_{i}', x, y, 0 if sx >= sy else math.pi / 2, max(sx, sy), lay['wall_height'], + min(sx, sy), args['wall_material'], view) + for i, a in enumerate(lay['arches']): + arch(world, f"{a['type']}_{i}", a['x'], a['y'], a['yaw'], lay['span'], a['width'], a['height'], + lay['wall_height'], lay['wall_thickness'], view, args['arch_material']) + if args['route']: + link = sdf.static_model(world, 'maze_route', (0, 0, 0.002, 0, 0, 0)) # above wall footprints + for i, (x1, y1, x2, y2, start, end) in enumerate(lay['route']): + sdf.marking_line(link, f'route_{i}', x1, y1, x2, y2, 'blue', width=0.03, start=start, end=end, + visibility=sdf.VISIBLE_GUI_ONLY) + for i, (kind, x, y, yaw) in enumerate(scatter_objects(lay, args)): + sdf.scatter_object(world, f'{kind}_{i}', kind, x, y, yaw) + for name, (x, y, yaw) in lay['starts'].items(): + sdf.start_point(world, name, x, y, yaw) + return root + + +def main(): + parser = argparse.ArgumentParser(description='Print a maze.') + parser.add_argument('--maze', default='level1', help=f"fixed level ({', '.join(available_levels())}) or 'random'") + parser.add_argument('--seed', type=int, default=0) + parser.add_argument('--difficulty', default='medium', choices=list(DIFFICULTIES)) + args = parser.parse_args() + print(make_maze(args.maze, args.seed, args.difficulty).text()) + + +if __name__ == '__main__': + main() diff --git a/src/platform/kpi_rover_worlds/worlds/maze/maze.yaml b/src/platform/kpi_rover_worlds/worlds/maze/maze.yaml new file mode 100644 index 0000000..5479025 --- /dev/null +++ b/src/platform/kpi_rover_worlds/worlds/maze/maze.yaml @@ -0,0 +1,95 @@ +title: Maze +description: >- + A warehouse with a maze: walls, passages and arches, some of them barely + let the robot through and some are impassable (too narrow or too low — the + lidar sees a passage, but the robot hits it with its top). Ready levels or a + random maze. +start_points: + a: Maze entrance + b: Maze exit +groups: + maze: Maze + look: Look + objects: Objects +args: + maze: + type: choice + choices: [level1, level2, level3, random] + default: level1 + label: Maze + description: A ready level (levels/) or random — a random maze. + group: maze + seed: {type: int, min: 0, default: 0, label: Random maze variant, group: maze, show_if: {maze: random}} + difficulty: + type: choice + choices: [easy, medium, hard] + default: medium + label: Random maze difficulty + description: The size of the random maze and how many tight and impassable arches it has. + group: maze + show_if: {maze: random} + route: {type: bool, default: true, label: Show route, description: "A blue line of the shortest path, visible only in the Gazebo GUI.", group: maze} + floor: {type: choice, choices_from: floors, default: concrete, label: Floor, group: look} + wall_material: {type: choice, choices_from: walls, default: brick, label: Walls, group: look} + arch_material: + type: choice + choices: [contrast, plain, plaster, brick, concrete, wood, metal] + default: contrast + label: Arches and narrow openings + description: contrast — a plain color that stands out from the walls; or a wall material. + group: look + wall_view: + type: choice + choices: [solid, transparent, hidden, marking] + default: transparent + label: Walls in the Gazebo GUI + description: How the GUI shows the walls; the robot always bumps into them and the sensors see them. + group: look + objects: + type: int + min: 0 + max: 50 + default: 14 + label: Objects + description: Number of boxes, crates, cones and other objects scattered around the maze; some are low, under the lidar, and a flat board can be driven over. + group: objects + objects_seed: {type: string, default: '', label: Layout variant, description: Empty — a new random one every time., group: objects} +presets: + random_easy: + label: Random, easy + description: A new small random maze. + args: {maze: random, difficulty: easy} + random_hard: + label: Random, hard + description: A big random maze with many tight and impassable arches. + args: {maze: random, difficulty: hard} + level3: + label: Level 3 + description: The biggest ready level. + args: {maze: level3} + empty: + label: No objects + description: Only the walls. + args: {objects: 0} +previews: + cameras: + top: [0, 0, 17, 0, 90, 90, 42] + top_gui: [0, 0, 17, 0, 90, 90, 42] + over: [-5.2, -5.0, 3.6, 0, 35, 45, 66] + over_gui: [-5.2, -5.0, 3.6, 0, 35, 45, 66] + arches: [0.7, 0.4, 1.4, 0, 38, 90, 70] + gui_cameras: [top_gui, over_gui] + world: over + presets: true + start_points: true + map: {fit: ground_plane, margin: 0.3} + args: + maze: {camera: top, values: [level1, level2, level3, random]} + seed: {camera: top, values: [0, 1, 2], with: {maze: random}} + difficulty: {camera: top, values: [easy, medium, hard], with: {maze: random}} + route: {camera: top_gui, values: [true, false]} + floor: {camera: over, values: [plain, concrete, painted_concrete, asphalt, carpet, wood, tiles]} + wall_material: {camera: over, values: [plain, plaster, brick, concrete, wood, metal]} + arch_material: {camera: arches, values: [contrast, plain, plaster, brick, concrete, wood, metal], with: {maze: level3}} + wall_view: {camera: over_gui, values: [solid, transparent, hidden, marking]} + objects: {camera: over, values: [0, 14, 45], with: {objects_seed: 1}} diff --git a/src/platform/kpi_rover_worlds/worlds/maze/previews/arch_material_brick.jpg b/src/platform/kpi_rover_worlds/worlds/maze/previews/arch_material_brick.jpg new file mode 100644 index 0000000..9e42aff Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/maze/previews/arch_material_brick.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/maze/previews/arch_material_concrete.jpg b/src/platform/kpi_rover_worlds/worlds/maze/previews/arch_material_concrete.jpg new file mode 100644 index 0000000..c9304b7 Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/maze/previews/arch_material_concrete.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/maze/previews/arch_material_contrast.jpg b/src/platform/kpi_rover_worlds/worlds/maze/previews/arch_material_contrast.jpg new file mode 100644 index 0000000..3fc32b8 Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/maze/previews/arch_material_contrast.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/maze/previews/arch_material_metal.jpg b/src/platform/kpi_rover_worlds/worlds/maze/previews/arch_material_metal.jpg new file mode 100644 index 0000000..bfd8a33 Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/maze/previews/arch_material_metal.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/maze/previews/arch_material_plain.jpg b/src/platform/kpi_rover_worlds/worlds/maze/previews/arch_material_plain.jpg new file mode 100644 index 0000000..6989078 Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/maze/previews/arch_material_plain.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/maze/previews/arch_material_plaster.jpg b/src/platform/kpi_rover_worlds/worlds/maze/previews/arch_material_plaster.jpg new file mode 100644 index 0000000..2a0cd9c Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/maze/previews/arch_material_plaster.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/maze/previews/arch_material_wood.jpg b/src/platform/kpi_rover_worlds/worlds/maze/previews/arch_material_wood.jpg new file mode 100644 index 0000000..10575c2 Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/maze/previews/arch_material_wood.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/maze/previews/difficulty_easy.jpg b/src/platform/kpi_rover_worlds/worlds/maze/previews/difficulty_easy.jpg new file mode 100644 index 0000000..d2eb0eb Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/maze/previews/difficulty_easy.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/maze/previews/difficulty_hard.jpg b/src/platform/kpi_rover_worlds/worlds/maze/previews/difficulty_hard.jpg new file mode 100644 index 0000000..556d699 Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/maze/previews/difficulty_hard.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/maze/previews/difficulty_medium.jpg b/src/platform/kpi_rover_worlds/worlds/maze/previews/difficulty_medium.jpg new file mode 100644 index 0000000..b97411e Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/maze/previews/difficulty_medium.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/maze/previews/floor_asphalt.jpg b/src/platform/kpi_rover_worlds/worlds/maze/previews/floor_asphalt.jpg new file mode 100644 index 0000000..e5c9b9f Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/maze/previews/floor_asphalt.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/maze/previews/floor_carpet.jpg b/src/platform/kpi_rover_worlds/worlds/maze/previews/floor_carpet.jpg new file mode 100644 index 0000000..2b1a526 Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/maze/previews/floor_carpet.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/maze/previews/floor_concrete.jpg b/src/platform/kpi_rover_worlds/worlds/maze/previews/floor_concrete.jpg new file mode 100644 index 0000000..d7bb0cb Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/maze/previews/floor_concrete.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/maze/previews/floor_painted_concrete.jpg b/src/platform/kpi_rover_worlds/worlds/maze/previews/floor_painted_concrete.jpg new file mode 100644 index 0000000..7907443 Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/maze/previews/floor_painted_concrete.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/maze/previews/floor_plain.jpg b/src/platform/kpi_rover_worlds/worlds/maze/previews/floor_plain.jpg new file mode 100644 index 0000000..683e9a9 Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/maze/previews/floor_plain.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/maze/previews/floor_tiles.jpg b/src/platform/kpi_rover_worlds/worlds/maze/previews/floor_tiles.jpg new file mode 100644 index 0000000..f5fa923 Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/maze/previews/floor_tiles.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/maze/previews/floor_wood.jpg b/src/platform/kpi_rover_worlds/worlds/maze/previews/floor_wood.jpg new file mode 100644 index 0000000..4461009 Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/maze/previews/floor_wood.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/maze/previews/maze_level1.jpg b/src/platform/kpi_rover_worlds/worlds/maze/previews/maze_level1.jpg new file mode 100644 index 0000000..e71398f Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/maze/previews/maze_level1.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/maze/previews/maze_level2.jpg b/src/platform/kpi_rover_worlds/worlds/maze/previews/maze_level2.jpg new file mode 100644 index 0000000..1bada95 Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/maze/previews/maze_level2.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/maze/previews/maze_level3.jpg b/src/platform/kpi_rover_worlds/worlds/maze/previews/maze_level3.jpg new file mode 100644 index 0000000..b891cb4 Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/maze/previews/maze_level3.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/maze/previews/maze_random.jpg b/src/platform/kpi_rover_worlds/worlds/maze/previews/maze_random.jpg new file mode 100644 index 0000000..b97411e Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/maze/previews/maze_random.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/maze/previews/objects_0.jpg b/src/platform/kpi_rover_worlds/worlds/maze/previews/objects_0.jpg new file mode 100644 index 0000000..c6ee79d Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/maze/previews/objects_0.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/maze/previews/objects_14.jpg b/src/platform/kpi_rover_worlds/worlds/maze/previews/objects_14.jpg new file mode 100644 index 0000000..630e8cd Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/maze/previews/objects_14.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/maze/previews/objects_45.jpg b/src/platform/kpi_rover_worlds/worlds/maze/previews/objects_45.jpg new file mode 100644 index 0000000..69b0a6a Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/maze/previews/objects_45.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/maze/previews/preset_empty.jpg b/src/platform/kpi_rover_worlds/worlds/maze/previews/preset_empty.jpg new file mode 100644 index 0000000..c6ee79d Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/maze/previews/preset_empty.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/maze/previews/preset_level3.jpg b/src/platform/kpi_rover_worlds/worlds/maze/previews/preset_level3.jpg new file mode 100644 index 0000000..4a48446 Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/maze/previews/preset_level3.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/maze/previews/preset_random_easy.jpg b/src/platform/kpi_rover_worlds/worlds/maze/previews/preset_random_easy.jpg new file mode 100644 index 0000000..e343fbe Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/maze/previews/preset_random_easy.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/maze/previews/preset_random_hard.jpg b/src/platform/kpi_rover_worlds/worlds/maze/previews/preset_random_hard.jpg new file mode 100644 index 0000000..0658c04 Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/maze/previews/preset_random_hard.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/maze/previews/route_false.jpg b/src/platform/kpi_rover_worlds/worlds/maze/previews/route_false.jpg new file mode 100644 index 0000000..8c859ce Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/maze/previews/route_false.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/maze/previews/route_true.jpg b/src/platform/kpi_rover_worlds/worlds/maze/previews/route_true.jpg new file mode 100644 index 0000000..02caaac Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/maze/previews/route_true.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/maze/previews/seed_0.jpg b/src/platform/kpi_rover_worlds/worlds/maze/previews/seed_0.jpg new file mode 100644 index 0000000..b97411e Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/maze/previews/seed_0.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/maze/previews/seed_1.jpg b/src/platform/kpi_rover_worlds/worlds/maze/previews/seed_1.jpg new file mode 100644 index 0000000..9a87bfe Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/maze/previews/seed_1.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/maze/previews/seed_2.jpg b/src/platform/kpi_rover_worlds/worlds/maze/previews/seed_2.jpg new file mode 100644 index 0000000..5d571b8 Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/maze/previews/seed_2.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/maze/previews/start_a.jpg b/src/platform/kpi_rover_worlds/worlds/maze/previews/start_a.jpg new file mode 100644 index 0000000..e15baff Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/maze/previews/start_a.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/maze/previews/start_b.jpg b/src/platform/kpi_rover_worlds/worlds/maze/previews/start_b.jpg new file mode 100644 index 0000000..db0c5ce Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/maze/previews/start_b.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/maze/previews/wall_material_brick.jpg b/src/platform/kpi_rover_worlds/worlds/maze/previews/wall_material_brick.jpg new file mode 100644 index 0000000..d7bb0cb Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/maze/previews/wall_material_brick.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/maze/previews/wall_material_concrete.jpg b/src/platform/kpi_rover_worlds/worlds/maze/previews/wall_material_concrete.jpg new file mode 100644 index 0000000..b761afd Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/maze/previews/wall_material_concrete.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/maze/previews/wall_material_metal.jpg b/src/platform/kpi_rover_worlds/worlds/maze/previews/wall_material_metal.jpg new file mode 100644 index 0000000..8508f5f Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/maze/previews/wall_material_metal.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/maze/previews/wall_material_plain.jpg b/src/platform/kpi_rover_worlds/worlds/maze/previews/wall_material_plain.jpg new file mode 100644 index 0000000..bf4b001 Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/maze/previews/wall_material_plain.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/maze/previews/wall_material_plaster.jpg b/src/platform/kpi_rover_worlds/worlds/maze/previews/wall_material_plaster.jpg new file mode 100644 index 0000000..9a97b78 Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/maze/previews/wall_material_plaster.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/maze/previews/wall_material_wood.jpg b/src/platform/kpi_rover_worlds/worlds/maze/previews/wall_material_wood.jpg new file mode 100644 index 0000000..d4748cc Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/maze/previews/wall_material_wood.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/maze/previews/wall_view_hidden.jpg b/src/platform/kpi_rover_worlds/worlds/maze/previews/wall_view_hidden.jpg new file mode 100644 index 0000000..93cd44e Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/maze/previews/wall_view_hidden.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/maze/previews/wall_view_marking.jpg b/src/platform/kpi_rover_worlds/worlds/maze/previews/wall_view_marking.jpg new file mode 100644 index 0000000..2f18683 Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/maze/previews/wall_view_marking.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/maze/previews/wall_view_solid.jpg b/src/platform/kpi_rover_worlds/worlds/maze/previews/wall_view_solid.jpg new file mode 100644 index 0000000..8ad0a8b Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/maze/previews/wall_view_solid.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/maze/previews/wall_view_transparent.jpg b/src/platform/kpi_rover_worlds/worlds/maze/previews/wall_view_transparent.jpg new file mode 100644 index 0000000..ef100f4 Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/maze/previews/wall_view_transparent.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/maze/previews/world.jpg b/src/platform/kpi_rover_worlds/worlds/maze/previews/world.jpg new file mode 100644 index 0000000..d7bb0cb Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/maze/previews/world.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/overpass/overpass.py b/src/platform/kpi_rover_worlds/worlds/overpass/overpass.py new file mode 100644 index 0000000..4ef2f4c --- /dev/null +++ b/src/platform/kpi_rover_worlds/worlds/overpass/overpass.py @@ -0,0 +1,201 @@ +""" +Warehouse with a figure-eight marking and an overpass at its crossing. + +The figure eight is two loops of radius r centered at (+-d, 0) and two +diagonals tangent to both, crossing at the origin at angles +-alpha. The ++alpha diagonal goes over the overpass, so two robots can drive the figure +eight at once without meeting. Start points a and b are at the outer points +of the loops, half a lap apart. +""" + +import hashlib +import math +import os + +from kpi_rover_worlds import scatter, sdf, textured_box + +# Geometry, m: the warehouse inside, the figure eight (loop radius, distance +# from the crossing to the loop tangent points) and the overpass: the deck +# height leaves room under its bottom (5 cm lower) for the 0.345 m high robot; +# max_slope is the steepest ramp slope, degrees. +PARAMS = dict(size_x=15, size_y=8, marking_width=0.05, loop_radius=2.0, tangent_distance=4.5, + height=0.45, deck_length=1.4, max_slope=12, rail_width=0.04, + overpass_types={'wide': {'width': 0.7, 'rails': True}, 'narrow': {'width': 0.4, 'rails': False}}) + +# Free space kept on each side of the lane and around the overpass and start points, m. +LANE_MARGIN = 0.35 +START_RADIUS = 0.6 +# Road band: height above the floor (under the marking lines, 1 mm thick) and arc segment length, m. +ROAD_HEIGHT = 0.0005 +ROAD_STEP = 0.1 +RAIL_COLOR = (1.0, 0.8, 0.0) +RAIL_HEIGHT = 0.1 +RAIL_PIECES = 16 +DECK_THICKNESS = 0.05 + + +def geometry(p): + """ + Loop radius r, distance lt from the center to the tangent points, loop center distance d, angle alpha + of the diagonals, and distance 'foot' from the center to the ends of the overpass ramps. + """ + r, lt = p['loop_radius'], p['tangent_distance'] + foot = p['deck_length'] / 2 + p['height'] * math.pi / (2 * math.tan(math.radians(p['max_slope']))) + return r, lt, math.hypot(lt, r), math.atan2(r, lt), foot + + +def figure_eight(p): + """The figure eight on the floor: ('arc', cx, cy, r, a1, a2) and ('segment', x1, y1, x2, y2) pieces.""" + r, lt, d, alpha, foot = geometry(p) + ca, sa = math.cos(alpha), math.sin(alpha) + return [('arc', d, 0, r, -(math.pi / 2 + alpha), math.pi / 2 + alpha), + ('arc', -d, 0, r, math.pi / 2 - alpha, 3 * math.pi / 2 + alpha), + ('segment', -lt * ca, lt * sa, lt * ca, -lt * sa), + ('segment', -lt * ca, -lt * sa, -foot * ca, -foot * sa), + ('segment', foot * ca, foot * sa, lt * ca, lt * sa)] + + +def road_mesh(p, width, tile): + """ + OBJ path of the road band along the figure eight on the floor, 'width' + wide, with texture coordinates in units of 'tile' m; cached by its shape. + """ + name = 'road_' + hashlib.sha1(repr((sorted(p.items(), key=str), width, tile)).encode()).hexdigest()[:12] + '.obj' + path = os.path.join(textured_box.CACHE_DIR, name) + if os.path.isfile(path): + return path + lines, faces, n = ['# Overpass road band, generated by overpass.py'], [], 0 + for piece in figure_eight(p): + if piece[0] == 'arc': + _, cx, cy, r, a1, a2 = piece + k = max(2, int(abs(a2 - a1) * r / ROAD_STEP) + 1) + points = [(cx + r * math.cos(a1 + (a2 - a1) * i / (k - 1)), cy + r * math.sin(a1 + (a2 - a1) * i / (k - 1))) + for i in range(k)] + else: + _, x1, y1, x2, y2 = piece + points = [(x1, y1), (x2, y2)] + along = 0.0 + for i, (x, y) in enumerate(points): + ax, ay = points[min(i + 1, len(points) - 1)] + bx, by = points[max(i - 1, 0)] + dx, dy = ax - bx, ay - by + length = math.hypot(dx, dy) + nx, ny = -dy / length * width / 2, dx / length * width / 2 + if i: + along += math.hypot(x - points[i - 1][0], y - points[i - 1][1]) + for side in (-1, 1): + lines.append(f'v {x + side * nx:.4f} {y + side * ny:.4f} {ROAD_HEIGHT}') + lines.append(f'vt {along / tile:.4f} {(side + 1) / 2 * width / tile:.4f}') + if i: + # 1-based vertices: right and left of the previous point, right and left of this one; counterclockwise from above. + a, b, c, e = n + 2 * i - 1, n + 2 * i, n + 2 * i + 1, n + 2 * i + 2 + faces.append(f'f {a}/{a}/1 {c}/{c}/1 {e}/{e}/1 {b}/{b}/1') + n += 2 * len(points) + lines.append('vn 0 0 1') + os.makedirs(textured_box.CACHE_DIR, exist_ok=True) + tmp = path + f'.{os.getpid()}.tmp' # several launches may write the same mesh at once + with open(tmp, 'w') as f: + f.write('\n'.join(lines + faces) + '\n') + os.replace(tmp, path) + return path + + +def shapes(overpass_type, objects_on_route=False): + """Scatter area, keep-out shapes and obstacles; with objects_on_route the figure eight is not kept free.""" + p = PARAMS + cfg = p['overpass_types'][overpass_type] + r, lt, d, alpha, foot = geometry(p) + ca, sa = math.cos(alpha), math.sin(alpha) + lane = max(cfg['width'], 0.5) / 2 + LANE_MARGIN + overpass = ('segment', -foot * ca, -foot * sa, foot * ca, foot * sa, cfg['width'] / 2) + + # The loops, the lower diagonal and the whole upper one. + route = [piece + (lane,) for piece in figure_eight(p)[:3]] + route.append(('segment', -lt * ca, -lt * sa, lt * ca, lt * sa, lane)) + # On the route, objects are obstacles; the overpass diagonal (its ramps) and the start points stay free anyway. + keep_out = [route[3]] if objects_on_route else route + keep_out += [('circle', d + r, 0, START_RADIUS), ('circle', -(d + r), 0, START_RADIUS)] + area = (-p['size_x'] / 2, p['size_x'] / 2, -p['size_y'] / 2, p['size_y'] / 2) + return area, keep_out, [overpass] + + +def overpass(parent, p, kind, yaw, offsets, style, surface): + """A deck with a smooth ramp at each end, rails if kind['rails'], marking lines at 'offsets' from its axis.""" + height, deck, width, rail_width = p['height'], p['deck_length'], kind['width'], p['rail_width'] + ramp = height * math.pi / (2 * math.tan(math.radians(p['max_slope']))) + half, rail_y = deck / 2, (width - rail_width) / 2 + cfg = sdf.FLOORS[surface] + mesh = f"{sdf.MESHES_DIR}/overpass_w{width:g}_h{height:g}_d{deck:g}_t{DECK_THICKNESS:g}_s{p['max_slope']:g}.obj" + link = sdf.static_model(parent, 'overpass', (0, 0, 0, 0, 0, yaw)) + collision = sdf.el(link, 'collision', name='body_collision') + sdf.el(sdf.el(sdf.el(collision, 'geometry'), 'mesh'), 'uri', f'file://{mesh}') + sdf.friction(collision, cfg['mu']) + sdf.material(sdf.mesh_visual(link, 'body_visual', mesh), cfg['color'], cfg['texture']) + + def pieces(n): + """(ramp, k, xa, za, xb, zb) of the n pieces of each ramp profile, from the ground to the deck.""" + for name, direction in (('ramp_in', -1), ('ramp_out', 1)): + for k in range(n): + yield (name, k, direction * (half + ramp - ramp * k / n), height * (1 - math.cos(math.pi * k / n)) / 2, + direction * (half + ramp - ramp * (k + 1) / n), + height * (1 - math.cos(math.pi * (k + 1) / n)) / 2) + + sides = (('left', rail_y), ('right', -rail_y)) + if kind['rails']: + for side, y in sides: + sdf.solid_box(link, f'deck_rail_{side}', 0, y, height + RAIL_HEIGHT / 2, deck, rail_width, RAIL_HEIGHT, + color=RAIL_COLOR) + for name, k, xa, za, xb, zb in pieces(RAIL_PIECES): + for side, y in sides: + # Lengthened by half their height, so there are no gaps where the slope changes. + sdf.solid_box(link, f'{name}_rail_{side}_{k}', (xa + xb) / 2, y, (za + zb) / 2 + RAIL_HEIGHT / 2, + math.hypot(xb - xa, zb - za) + RAIL_HEIGHT / 2, rail_width, RAIL_HEIGHT, + color=RAIL_COLOR, pitch=-math.atan2(zb - za, xb - xa)) + for i, offset in enumerate(offsets): + sdf.marking_line(link, f'deck_marking_{i}', -half, offset, half, offset, style, height, height, + p['marking_width']) + # Pieces about 1 width long, so the marking stays on the curved ramp. + for name, k, xa, za, xb, zb in pieces(round(ramp / p['marking_width'])): + for i, offset in enumerate(offsets): + sdf.marking_line(link, f'{name}_marking_{k}_{i}', xa, offset, xb, offset, style, za, zb, + p['marking_width'], fine=True) + + +def build(args): + p = PARAMS + r, lt, d, alpha, foot = geometry(p) + kind = p['overpass_types'][args['overpass']] + width = p['marking_width'] + driveway = kind['width'] - (2 * p['rail_width'] if kind['rails'] else 0) + # Lane edge lines lie inside the overpass driveway. + offsets = [0] if args['lane'] == 'center' else [-(driveway - width) / 2, (driveway - width) / 2] + + root, world = sdf.world('overpass') + sdf.floor(world, args['floor'], p['size_x'], p['size_y']) + sdf.perimeter_walls(world, p['size_x'], p['size_y'], args['wall_material']) + overpass(world, p, kind, alpha, offsets, args['marking'], args['overpass_surface']) + if args['road'] != 'none': + cfg = sdf.FLOORS[args['road']] + link = sdf.static_model(world, 'figure_eight_road') + sdf.material(sdf.mesh_visual(link, 'road', road_mesh(p, kind['width'], cfg['tile'])), cfg['color'], + cfg['texture']) + link = sdf.static_model(world, 'figure_eight_marking') + names = ('loop_right', 'loop_left', 'diagonal_lower', 'diagonal_upper_in', 'diagonal_upper_out') + for name, (shape, *piece) in zip(names, figure_eight(p)): + for i, offset in enumerate(offsets): + if shape == 'arc': + cx, cy, radius, a1, a2 = piece + sdf.marking_arc(link, f'{name}_{i}', cx, cy, radius - offset, a1, a2, args['marking'], width) + else: + x1, y1, x2, y2 = piece + length = math.hypot(x2 - x1, y2 - y1) + nx, ny = -(y2 - y1) / length * offset, (x2 - x1) / length * offset + sdf.marking_line(link, f'{name}_{i}', x1 + nx, y1 + ny, x2 + nx, y2 + ny, args['marking'], + width=width) + area, keep_out, obstacles = shapes(args['overpass'], args['objects_on_route']) + for i, (kind_name, x, y, yaw) in enumerate(scatter.scatter_from_args(args, area, keep_out, obstacles, 'overpass')): + sdf.scatter_object(world, f'{kind_name}_{i}', kind_name, x, y, yaw) + # The right loop is driven counterclockwise and the left one clockwise, both heading +Y at the outer points. + sdf.start_point(world, 'a', d + r, 0, math.pi / 2) + sdf.start_point(world, 'b', -(d + r), 0, math.pi / 2) + return root diff --git a/src/platform/kpi_rover_worlds/worlds/overpass/overpass.yaml b/src/platform/kpi_rover_worlds/worlds/overpass/overpass.yaml new file mode 100644 index 0000000..8e36057 --- /dev/null +++ b/src/platform/kpi_rover_worlds/worlds/overpass/overpass.yaml @@ -0,0 +1,100 @@ +title: Overpass +description: >- + A warehouse with a figure-eight marking and an overpass at the crossing: two + robots can drive the figure eight at the same time without meeting at the + intersection. Scattered objects around it. +start_points: + a: Right loop + b: Left loop +groups: + look: Look + route: Route + objects: Objects +args: + floor: {type: choice, choices_from: floors, default: concrete, label: Floor, group: look} + marking: {type: choice, choices_from: markings, default: yellow_black, label: Route lines, description: Color and style of the figure-eight lines and the overpass marking., group: look} + wall_material: {type: choice, choices_from: walls, default: concrete, label: Warehouse walls, group: look} + lane: + type: choice + choices: [center, edges] + default: center + label: Lane marking + description: center — a line along the middle of the route; edges — lines along the lane edges, as wide as the overpass deck. + group: route + overpass: + type: choice + choices: [wide, narrow] + default: wide + label: Overpass + description: wide — 0.7 m with railings; narrow — 0.4 m for one robot, without railings. + group: route + road: + type: choice + choices: [none, plain, concrete, painted_concrete, asphalt, carpet, wood, tiles] + default: none + label: Road surface + description: none — only the lines on the floor; or a road band of this surface along the figure eight. + group: route + overpass_surface: {type: choice, choices_from: floors, default: asphalt, label: Overpass surface, group: route} + objects: + type: int + min: 0 + max: 50 + default: 14 + label: Objects + description: Number of boxes, crates, cones and other objects scattered around; some are low, under the lidar, and a flat board can be driven over. + group: objects + objects_on_route: + type: bool + default: false + label: Objects on the route + description: Also put objects on the figure eight, as obstacles to drive around; the overpass stays free. + group: objects + objects_seed: + type: string + default: '' + label: Layout variant + description: A number selects the layout of the objects; empty — a new random one every time. + group: objects +presets: + empty: + label: No objects + description: Only the figure eight and the overpass. + args: {objects: 0} + narrow: + label: Narrow overpass + description: The overpass for one robot, without railings. + args: {overpass: narrow} + lane_edges: + label: Lane edges + description: Lines along the lane edges instead of the middle. + args: {lane: edges} + obstacle_course: + label: Obstacle course + description: An asphalt road with objects on it to drive around. + args: {road: asphalt, objects_on_route: true, objects: 25} + crowded: + label: Crowded + description: Many objects around the route. + args: {objects: 45} +previews: + cameras: + over: [-8.5, -6.5, 4.5, 0, 32, 38, 70] + high: [0, -7.5, 6.5, 0, 50, 90, 80] + bridge: [-2.2, -2.4, 1.0, 0, 18, 48, 62] + floor: [-3.5, -3.2, 1.6, 0, 30, 40, 60] + loop: [4.4, -2.6, 1.3, 0, 28, 45, 62] + world: over + presets: true + start_points: true + map: {center: [0, 0], size: 16} + args: + floor: {camera: floor, values: [plain, concrete, painted_concrete, asphalt, carpet, wood, tiles]} + marking: {camera: floor, values: [white, yellow, red, blue, green, yellow_black, red_white, black_white]} + wall_material: {camera: over, values: [plain, plaster, brick, concrete, wood, metal]} + lane: {camera: loop, values: [center, edges]} + overpass: {camera: bridge, values: [wide, narrow]} + overpass_surface: {camera: bridge, values: [plain, concrete, painted_concrete, asphalt, carpet, wood, tiles]} + road: {camera: over, values: [none, plain, concrete, painted_concrete, asphalt, carpet, wood, tiles]} + objects_on_route: {camera: over, values: [false, true], with: {objects_seed: 1, objects: 30}} + objects: {camera: over, values: [0, 14, 45], with: {objects_seed: 1}} diff --git a/src/platform/kpi_rover_worlds/worlds/overpass/previews/floor_asphalt.jpg b/src/platform/kpi_rover_worlds/worlds/overpass/previews/floor_asphalt.jpg new file mode 100644 index 0000000..54256d8 Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/overpass/previews/floor_asphalt.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/overpass/previews/floor_carpet.jpg b/src/platform/kpi_rover_worlds/worlds/overpass/previews/floor_carpet.jpg new file mode 100644 index 0000000..7a8ca02 Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/overpass/previews/floor_carpet.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/overpass/previews/floor_concrete.jpg b/src/platform/kpi_rover_worlds/worlds/overpass/previews/floor_concrete.jpg new file mode 100644 index 0000000..1945796 Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/overpass/previews/floor_concrete.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/overpass/previews/floor_painted_concrete.jpg b/src/platform/kpi_rover_worlds/worlds/overpass/previews/floor_painted_concrete.jpg new file mode 100644 index 0000000..52de243 Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/overpass/previews/floor_painted_concrete.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/overpass/previews/floor_plain.jpg b/src/platform/kpi_rover_worlds/worlds/overpass/previews/floor_plain.jpg new file mode 100644 index 0000000..0a43309 Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/overpass/previews/floor_plain.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/overpass/previews/floor_tiles.jpg b/src/platform/kpi_rover_worlds/worlds/overpass/previews/floor_tiles.jpg new file mode 100644 index 0000000..b32c059 Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/overpass/previews/floor_tiles.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/overpass/previews/floor_wood.jpg b/src/platform/kpi_rover_worlds/worlds/overpass/previews/floor_wood.jpg new file mode 100644 index 0000000..ac61fd9 Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/overpass/previews/floor_wood.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/overpass/previews/lane_center.jpg b/src/platform/kpi_rover_worlds/worlds/overpass/previews/lane_center.jpg new file mode 100644 index 0000000..21d0dea Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/overpass/previews/lane_center.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/overpass/previews/lane_edges.jpg b/src/platform/kpi_rover_worlds/worlds/overpass/previews/lane_edges.jpg new file mode 100644 index 0000000..6ff530c Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/overpass/previews/lane_edges.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/overpass/previews/marking_black_white.jpg b/src/platform/kpi_rover_worlds/worlds/overpass/previews/marking_black_white.jpg new file mode 100644 index 0000000..5fa1cdb Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/overpass/previews/marking_black_white.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/overpass/previews/marking_blue.jpg b/src/platform/kpi_rover_worlds/worlds/overpass/previews/marking_blue.jpg new file mode 100644 index 0000000..8b8d516 Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/overpass/previews/marking_blue.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/overpass/previews/marking_green.jpg b/src/platform/kpi_rover_worlds/worlds/overpass/previews/marking_green.jpg new file mode 100644 index 0000000..586f848 Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/overpass/previews/marking_green.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/overpass/previews/marking_red.jpg b/src/platform/kpi_rover_worlds/worlds/overpass/previews/marking_red.jpg new file mode 100644 index 0000000..1bcfa2b Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/overpass/previews/marking_red.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/overpass/previews/marking_red_white.jpg b/src/platform/kpi_rover_worlds/worlds/overpass/previews/marking_red_white.jpg new file mode 100644 index 0000000..180570b Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/overpass/previews/marking_red_white.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/overpass/previews/marking_white.jpg b/src/platform/kpi_rover_worlds/worlds/overpass/previews/marking_white.jpg new file mode 100644 index 0000000..77b9cd3 Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/overpass/previews/marking_white.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/overpass/previews/marking_yellow.jpg b/src/platform/kpi_rover_worlds/worlds/overpass/previews/marking_yellow.jpg new file mode 100644 index 0000000..1990174 Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/overpass/previews/marking_yellow.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/overpass/previews/marking_yellow_black.jpg b/src/platform/kpi_rover_worlds/worlds/overpass/previews/marking_yellow_black.jpg new file mode 100644 index 0000000..1945796 Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/overpass/previews/marking_yellow_black.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/overpass/previews/objects_0.jpg b/src/platform/kpi_rover_worlds/worlds/overpass/previews/objects_0.jpg new file mode 100644 index 0000000..8d6f4e8 Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/overpass/previews/objects_0.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/overpass/previews/objects_14.jpg b/src/platform/kpi_rover_worlds/worlds/overpass/previews/objects_14.jpg new file mode 100644 index 0000000..1e4115d Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/overpass/previews/objects_14.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/overpass/previews/objects_45.jpg b/src/platform/kpi_rover_worlds/worlds/overpass/previews/objects_45.jpg new file mode 100644 index 0000000..8084a0a Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/overpass/previews/objects_45.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/overpass/previews/objects_on_route_false.jpg b/src/platform/kpi_rover_worlds/worlds/overpass/previews/objects_on_route_false.jpg new file mode 100644 index 0000000..cd0aa04 Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/overpass/previews/objects_on_route_false.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/overpass/previews/objects_on_route_true.jpg b/src/platform/kpi_rover_worlds/worlds/overpass/previews/objects_on_route_true.jpg new file mode 100644 index 0000000..81cbfa4 Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/overpass/previews/objects_on_route_true.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/overpass/previews/overpass_narrow.jpg b/src/platform/kpi_rover_worlds/worlds/overpass/previews/overpass_narrow.jpg new file mode 100644 index 0000000..51b0f02 Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/overpass/previews/overpass_narrow.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/overpass/previews/overpass_surface_asphalt.jpg b/src/platform/kpi_rover_worlds/worlds/overpass/previews/overpass_surface_asphalt.jpg new file mode 100644 index 0000000..25444c5 Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/overpass/previews/overpass_surface_asphalt.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/overpass/previews/overpass_surface_carpet.jpg b/src/platform/kpi_rover_worlds/worlds/overpass/previews/overpass_surface_carpet.jpg new file mode 100644 index 0000000..bc0671c Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/overpass/previews/overpass_surface_carpet.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/overpass/previews/overpass_surface_concrete.jpg b/src/platform/kpi_rover_worlds/worlds/overpass/previews/overpass_surface_concrete.jpg new file mode 100644 index 0000000..8f541f4 Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/overpass/previews/overpass_surface_concrete.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/overpass/previews/overpass_surface_painted_concrete.jpg b/src/platform/kpi_rover_worlds/worlds/overpass/previews/overpass_surface_painted_concrete.jpg new file mode 100644 index 0000000..4820945 Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/overpass/previews/overpass_surface_painted_concrete.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/overpass/previews/overpass_surface_plain.jpg b/src/platform/kpi_rover_worlds/worlds/overpass/previews/overpass_surface_plain.jpg new file mode 100644 index 0000000..d5a0d40 Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/overpass/previews/overpass_surface_plain.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/overpass/previews/overpass_surface_tiles.jpg b/src/platform/kpi_rover_worlds/worlds/overpass/previews/overpass_surface_tiles.jpg new file mode 100644 index 0000000..865cdf0 Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/overpass/previews/overpass_surface_tiles.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/overpass/previews/overpass_surface_wood.jpg b/src/platform/kpi_rover_worlds/worlds/overpass/previews/overpass_surface_wood.jpg new file mode 100644 index 0000000..14c09f9 Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/overpass/previews/overpass_surface_wood.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/overpass/previews/overpass_wide.jpg b/src/platform/kpi_rover_worlds/worlds/overpass/previews/overpass_wide.jpg new file mode 100644 index 0000000..25444c5 Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/overpass/previews/overpass_wide.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/overpass/previews/preset_crowded.jpg b/src/platform/kpi_rover_worlds/worlds/overpass/previews/preset_crowded.jpg new file mode 100644 index 0000000..4d72d81 Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/overpass/previews/preset_crowded.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/overpass/previews/preset_empty.jpg b/src/platform/kpi_rover_worlds/worlds/overpass/previews/preset_empty.jpg new file mode 100644 index 0000000..8d6f4e8 Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/overpass/previews/preset_empty.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/overpass/previews/preset_lane_edges.jpg b/src/platform/kpi_rover_worlds/worlds/overpass/previews/preset_lane_edges.jpg new file mode 100644 index 0000000..43f5c88 Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/overpass/previews/preset_lane_edges.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/overpass/previews/preset_narrow.jpg b/src/platform/kpi_rover_worlds/worlds/overpass/previews/preset_narrow.jpg new file mode 100644 index 0000000..6052df0 Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/overpass/previews/preset_narrow.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/overpass/previews/preset_obstacle_course.jpg b/src/platform/kpi_rover_worlds/worlds/overpass/previews/preset_obstacle_course.jpg new file mode 100644 index 0000000..7d44a8c Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/overpass/previews/preset_obstacle_course.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/overpass/previews/road_asphalt.jpg b/src/platform/kpi_rover_worlds/worlds/overpass/previews/road_asphalt.jpg new file mode 100644 index 0000000..109e44a Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/overpass/previews/road_asphalt.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/overpass/previews/road_carpet.jpg b/src/platform/kpi_rover_worlds/worlds/overpass/previews/road_carpet.jpg new file mode 100644 index 0000000..b41033f Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/overpass/previews/road_carpet.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/overpass/previews/road_concrete.jpg b/src/platform/kpi_rover_worlds/worlds/overpass/previews/road_concrete.jpg new file mode 100644 index 0000000..0eadbdd Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/overpass/previews/road_concrete.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/overpass/previews/road_none.jpg b/src/platform/kpi_rover_worlds/worlds/overpass/previews/road_none.jpg new file mode 100644 index 0000000..41b02fd Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/overpass/previews/road_none.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/overpass/previews/road_painted_concrete.jpg b/src/platform/kpi_rover_worlds/worlds/overpass/previews/road_painted_concrete.jpg new file mode 100644 index 0000000..f30b154 Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/overpass/previews/road_painted_concrete.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/overpass/previews/road_plain.jpg b/src/platform/kpi_rover_worlds/worlds/overpass/previews/road_plain.jpg new file mode 100644 index 0000000..59d68b6 Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/overpass/previews/road_plain.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/overpass/previews/road_tiles.jpg b/src/platform/kpi_rover_worlds/worlds/overpass/previews/road_tiles.jpg new file mode 100644 index 0000000..944dad7 Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/overpass/previews/road_tiles.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/overpass/previews/road_wood.jpg b/src/platform/kpi_rover_worlds/worlds/overpass/previews/road_wood.jpg new file mode 100644 index 0000000..1a490bf Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/overpass/previews/road_wood.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/overpass/previews/start_a.jpg b/src/platform/kpi_rover_worlds/worlds/overpass/previews/start_a.jpg new file mode 100644 index 0000000..896439f Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/overpass/previews/start_a.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/overpass/previews/start_b.jpg b/src/platform/kpi_rover_worlds/worlds/overpass/previews/start_b.jpg new file mode 100644 index 0000000..dc38653 Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/overpass/previews/start_b.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/overpass/previews/wall_material_brick.jpg b/src/platform/kpi_rover_worlds/worlds/overpass/previews/wall_material_brick.jpg new file mode 100644 index 0000000..b80bed1 Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/overpass/previews/wall_material_brick.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/overpass/previews/wall_material_concrete.jpg b/src/platform/kpi_rover_worlds/worlds/overpass/previews/wall_material_concrete.jpg new file mode 100644 index 0000000..41b02fd Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/overpass/previews/wall_material_concrete.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/overpass/previews/wall_material_metal.jpg b/src/platform/kpi_rover_worlds/worlds/overpass/previews/wall_material_metal.jpg new file mode 100644 index 0000000..e570174 Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/overpass/previews/wall_material_metal.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/overpass/previews/wall_material_plain.jpg b/src/platform/kpi_rover_worlds/worlds/overpass/previews/wall_material_plain.jpg new file mode 100644 index 0000000..a14462b Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/overpass/previews/wall_material_plain.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/overpass/previews/wall_material_plaster.jpg b/src/platform/kpi_rover_worlds/worlds/overpass/previews/wall_material_plaster.jpg new file mode 100644 index 0000000..e4d6c62 Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/overpass/previews/wall_material_plaster.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/overpass/previews/wall_material_wood.jpg b/src/platform/kpi_rover_worlds/worlds/overpass/previews/wall_material_wood.jpg new file mode 100644 index 0000000..9d9ca09 Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/overpass/previews/wall_material_wood.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/overpass/previews/world.jpg b/src/platform/kpi_rover_worlds/worlds/overpass/previews/world.jpg new file mode 100644 index 0000000..41b02fd Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/overpass/previews/world.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/room/previews/world.jpg b/src/platform/kpi_rover_worlds/worlds/room/previews/world.jpg new file mode 100644 index 0000000..2cacc94 Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/room/previews/world.jpg differ diff --git a/src/platform/kpi_rover_bringup/worlds/room.world b/src/platform/kpi_rover_worlds/worlds/room/room.world similarity index 100% rename from src/platform/kpi_rover_bringup/worlds/room.world rename to src/platform/kpi_rover_worlds/worlds/room/room.world diff --git a/src/platform/kpi_rover_worlds/worlds/room/room.yaml b/src/platform/kpi_rover_worlds/worlds/room/room.yaml new file mode 100644 index 0000000..83998b4 --- /dev/null +++ b/src/platform/kpi_rover_worlds/worlds/room/room.yaml @@ -0,0 +1,7 @@ +title: Room +description: A 6×6 m room with three boxes; the default world of sim.launch.py. +previews: + cameras: + over: [0, -5.6, 4.2, 0, 42, 90, 70] + world: over + map: {center: [0, 0], size: 7} diff --git a/src/platform/kpi_rover_worlds/worlds/test_square/previews/floor_asphalt.jpg b/src/platform/kpi_rover_worlds/worlds/test_square/previews/floor_asphalt.jpg new file mode 100644 index 0000000..284aa4c Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/test_square/previews/floor_asphalt.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/test_square/previews/floor_carpet.jpg b/src/platform/kpi_rover_worlds/worlds/test_square/previews/floor_carpet.jpg new file mode 100644 index 0000000..d1c2322 Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/test_square/previews/floor_carpet.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/test_square/previews/floor_concrete.jpg b/src/platform/kpi_rover_worlds/worlds/test_square/previews/floor_concrete.jpg new file mode 100644 index 0000000..94a8d8b Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/test_square/previews/floor_concrete.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/test_square/previews/floor_painted_concrete.jpg b/src/platform/kpi_rover_worlds/worlds/test_square/previews/floor_painted_concrete.jpg new file mode 100644 index 0000000..6a13df3 Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/test_square/previews/floor_painted_concrete.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/test_square/previews/floor_plain.jpg b/src/platform/kpi_rover_worlds/worlds/test_square/previews/floor_plain.jpg new file mode 100644 index 0000000..e7f8cf0 Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/test_square/previews/floor_plain.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/test_square/previews/floor_tiles.jpg b/src/platform/kpi_rover_worlds/worlds/test_square/previews/floor_tiles.jpg new file mode 100644 index 0000000..97bd40b Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/test_square/previews/floor_tiles.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/test_square/previews/floor_wood.jpg b/src/platform/kpi_rover_worlds/worlds/test_square/previews/floor_wood.jpg new file mode 100644 index 0000000..83fb6c4 Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/test_square/previews/floor_wood.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/test_square/previews/marking_black_white.png b/src/platform/kpi_rover_worlds/worlds/test_square/previews/marking_black_white.png new file mode 100644 index 0000000..426dcd9 Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/test_square/previews/marking_black_white.png differ diff --git a/src/platform/kpi_rover_worlds/worlds/test_square/previews/marking_blue.png b/src/platform/kpi_rover_worlds/worlds/test_square/previews/marking_blue.png new file mode 100644 index 0000000..ee2c98f Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/test_square/previews/marking_blue.png differ diff --git a/src/platform/kpi_rover_worlds/worlds/test_square/previews/marking_green.png b/src/platform/kpi_rover_worlds/worlds/test_square/previews/marking_green.png new file mode 100644 index 0000000..67c6b40 Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/test_square/previews/marking_green.png differ diff --git a/src/platform/kpi_rover_worlds/worlds/test_square/previews/marking_red.png b/src/platform/kpi_rover_worlds/worlds/test_square/previews/marking_red.png new file mode 100644 index 0000000..83517f6 Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/test_square/previews/marking_red.png differ diff --git a/src/platform/kpi_rover_worlds/worlds/test_square/previews/marking_red_white.png b/src/platform/kpi_rover_worlds/worlds/test_square/previews/marking_red_white.png new file mode 100644 index 0000000..dfc80c4 Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/test_square/previews/marking_red_white.png differ diff --git a/src/platform/kpi_rover_worlds/worlds/test_square/previews/marking_white.png b/src/platform/kpi_rover_worlds/worlds/test_square/previews/marking_white.png new file mode 100644 index 0000000..99efeb1 Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/test_square/previews/marking_white.png differ diff --git a/src/platform/kpi_rover_worlds/worlds/test_square/previews/marking_yellow.png b/src/platform/kpi_rover_worlds/worlds/test_square/previews/marking_yellow.png new file mode 100644 index 0000000..658e70f Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/test_square/previews/marking_yellow.png differ diff --git a/src/platform/kpi_rover_worlds/worlds/test_square/previews/marking_yellow_black.png b/src/platform/kpi_rover_worlds/worlds/test_square/previews/marking_yellow_black.png new file mode 100644 index 0000000..361931e Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/test_square/previews/marking_yellow_black.png differ diff --git a/src/platform/kpi_rover_worlds/worlds/test_square/previews/start_a.jpg b/src/platform/kpi_rover_worlds/worlds/test_square/previews/start_a.jpg new file mode 100644 index 0000000..9dce0b5 Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/test_square/previews/start_a.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/test_square/previews/world.jpg b/src/platform/kpi_rover_worlds/worlds/test_square/previews/world.jpg new file mode 100644 index 0000000..6f5bd87 Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/test_square/previews/world.jpg differ diff --git a/src/platform/kpi_rover_worlds/worlds/test_square/test_square.py b/src/platform/kpi_rover_worlds/worlds/test_square/test_square.py new file mode 100644 index 0000000..bdf6fdb --- /dev/null +++ b/src/platform/kpi_rover_worlds/worlds/test_square/test_square.py @@ -0,0 +1,15 @@ +"""1x1 m square marked on the floor, driven counterclockwise from start point a, to check motion accuracy.""" + +from kpi_rover_worlds import sdf + + +def build(args): + root, world = sdf.world('test_square') + sdf.floor(world, args['floor'], 10, 10) + link = sdf.static_model(world, 'square_marking') + corners = [(0, 0), (1, 0), (1, 1), (0, 1)] + for i, side in enumerate(('bottom', 'right', 'top', 'left')): + sdf.marking_line(link, f'edge_{side}', *corners[i], *corners[(i + 1) % 4], args['marking'], + start='left', end='left') + sdf.start_point(world, 'a', 0, 0, 0) + return root diff --git a/src/platform/kpi_rover_worlds/worlds/test_square/test_square.yaml b/src/platform/kpi_rover_worlds/worlds/test_square/test_square.yaml new file mode 100644 index 0000000..4cc2a5c --- /dev/null +++ b/src/platform/kpi_rover_worlds/worlds/test_square/test_square.yaml @@ -0,0 +1,17 @@ +title: Test square +description: A 1×1 m square marked on the floor to check motion and odometry accuracy. +start_points: + a: Square corner +args: + floor: {type: choice, choices_from: floors, default: wood, label: Floor} + marking: {type: choice, choices_from: markings, default: white, label: Marking} +previews: + cameras: + over: [-1.1, -1.1, 1.2, 0, 32, 45, 62] + world: over + start_points: true + map: {center: [0.5, 0.5], size: 4} + layers: + camera: over + base: {arg: floor, values: [plain, concrete, painted_concrete, asphalt, carpet, wood, tiles], hide: [square_marking]} + overlay: {arg: marking, values: [white, yellow, red, blue, green, yellow_black, red_white, black_white], against: [plain, asphalt]} diff --git a/src/platform/kpi_rover_worlds/worlds/warehouse/previews/world.jpg b/src/platform/kpi_rover_worlds/worlds/warehouse/previews/world.jpg new file mode 100644 index 0000000..de14964 Binary files /dev/null and b/src/platform/kpi_rover_worlds/worlds/warehouse/previews/world.jpg differ diff --git a/src/platform/kpi_rover_bringup/worlds/warehouse.world b/src/platform/kpi_rover_worlds/worlds/warehouse/warehouse.world similarity index 100% rename from src/platform/kpi_rover_bringup/worlds/warehouse.world rename to src/platform/kpi_rover_worlds/worlds/warehouse/warehouse.world diff --git a/src/platform/kpi_rover_worlds/worlds/warehouse/warehouse.yaml b/src/platform/kpi_rover_worlds/worlds/warehouse/warehouse.yaml new file mode 100644 index 0000000..0a4839c --- /dev/null +++ b/src/platform/kpi_rover_worlds/worlds/warehouse/warehouse.yaml @@ -0,0 +1,7 @@ +title: Industrial warehouse +description: A warehouse with shelves (Gazebo Fuel models). +previews: + cameras: + over: [0, -10.2, 2.4, 0, 14, 90, 80] + world: over + map: {center: [0, 0], size: 22}