diff --git a/src/bin/edje/edje_cc_handlers.c b/src/bin/edje/edje_cc_handlers.c index 8a1f36b47c..3c9d997930 100644 --- a/src/bin/edje/edje_cc_handlers.c +++ b/src/bin/edje/edje_cc_handlers.c @@ -270,7 +270,6 @@ static void st_collections_group_script_recursion(void); static void st_collections_group_alias(void); static void st_collections_group_min(void); static void st_collections_group_max(void); -static void st_collections_group_scene_size(void); static void st_collections_group_broadcast_signal(void); static void st_collections_group_data_item(void); static void st_collections_group_orientation(void); @@ -680,7 +679,6 @@ New_Statement_Handler statement_handlers[] = {"collections.group.alias", st_collections_group_alias}, {"collections.group.min", st_collections_group_min}, {"collections.group.max", st_collections_group_max}, - {"collections.group.scene_size", st_collections_group_scene_size}, {"collections.group.broadcast_signal", st_collections_group_broadcast_signal}, {"collections.group.orientation", st_collections_group_orientation}, {"collections.group.mouse_events", st_collections_group_mouse_events}, @@ -4126,9 +4124,6 @@ ob_collections_group(void) pcp->default_mouse_events = 1; pcp->inherit_script = EINA_FALSE; - pc->scene_size.width = 0; - pc->scene_size.height = 0; - #ifdef HAVE_EPHYSICS pc->physics.world.gravity.x = 0; pc->physics.world.gravity.y = 294; @@ -4317,18 +4312,6 @@ _parts_count_update(unsigned int type, int inc) current_de->count.PROXY += inc; break; - case EDJE_PART_TYPE_MESH_NODE: - current_de->count.MESH_NODE += inc; - break; - - case EDJE_PART_TYPE_LIGHT: - current_de->count.LIGHT += inc; - break; - - case EDJE_PART_TYPE_CAMERA: - current_de->count.CAMERA += inc; - break; - case EDJE_PART_TYPE_SPACER: current_de->count.SPACER += inc; break; @@ -5182,30 +5165,6 @@ st_collections_group_max(void) pc->prop.max.h = parse_int_range(1, 0, 0x7fffffff); } -/** - @page edcref - @property - scene_size - @parameters - [width] [height] - @effect - Size of scene. - - Defaults: 0.0 0.0 - @endproperty - */ -static void -st_collections_group_scene_size(void) -{ - Edje_Part_Collection *pc; - - check_arg_count(2); - - pc = eina_list_data_get(eina_list_last(edje_collections)); - pc->scene_size.width = parse_float(0); - pc->scene_size.height = parse_float(1); -} - /** @page edcref @property @@ -6524,9 +6483,6 @@ st_collections_group_parts_part_name(void) @li BOX @li TABLE @li EXTERNAL - @li MESH_NODE - @li CAMERA - @li LIGHT @li PROXY @li SPACER @li SNAPSHOT @@ -6538,9 +6494,6 @@ static void st_collections_group_parts_part_type(void) { unsigned int type; - unsigned int i = 0; - - Edje_Part_Collection *pc; check_arg_count(1); @@ -6556,29 +6509,11 @@ st_collections_group_parts_part_type(void) "TABLE", EDJE_PART_TYPE_TABLE, "EXTERNAL", EDJE_PART_TYPE_EXTERNAL, "PROXY", EDJE_PART_TYPE_PROXY, - "MESH_NODE", EDJE_PART_TYPE_MESH_NODE, - "LIGHT", EDJE_PART_TYPE_LIGHT, - "CAMERA", EDJE_PART_TYPE_CAMERA, "SPACER", EDJE_PART_TYPE_SPACER, "SNAPSHOT", EDJE_PART_TYPE_SNAPSHOT, "VECTOR", EDJE_PART_TYPE_VECTOR, NULL); - pc = eina_list_data_get(eina_list_last(edje_collections)); - - if (type == EDJE_PART_TYPE_CAMERA) - { - for (i = 0; i < (pc->parts_count - 1); i++) - { - if (pc->parts[i]->type == EDJE_PART_TYPE_CAMERA) - { - WRN("parse error %s:%i. more then one part of type CAMERA in scene.", - file_in, line - 1); - exit(-1); - } - } - } - _part_type_set(type); } diff --git a/src/bin/edje/edje_cc_out.c b/src/bin/edje/edje_cc_out.c index 0dcde387e9..64f6cec29d 100644 --- a/src/bin/edje/edje_cc_out.c +++ b/src/bin/edje/edje_cc_out.c @@ -715,13 +715,6 @@ check_program(Edje_Part_Collection *pc, Edje_Program *ep, Eet_File *ef) Edje_Program_Target *et; Eina_List *l; unsigned int i = 0; - int camera_id = -1; - - for (i = 0; (i < pc->parts_count) && (camera_id < 0); i++) - { - if (pc->parts[i]->type == EDJE_PART_TYPE_CAMERA) - camera_id = i; - } if ((!ep->targets) && (ep->action == EDJE_ACTION_TYPE_SIGNAL_EMIT)) { diff --git a/src/lib/edje/edje_data.c b/src/lib/edje/edje_data.c index 8b07c9dc13..a4b3f90a94 100644 --- a/src/lib/edje/edje_data.c +++ b/src/lib/edje/edje_data.c @@ -1297,8 +1297,6 @@ _edje_edd_init(void) EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_collection, Edje_Part_Collection, "id", id, EET_T_INT); EET_DATA_DESCRIPTOR_ADD_HASH_STRING(_edje_edd_edje_part_collection, Edje_Part_Collection, "alias", alias); EET_DATA_DESCRIPTOR_ADD_HASH_STRING(_edje_edd_edje_part_collection, Edje_Part_Collection, "aliased", aliased); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_collection, Edje_Part_Collection, "scene_size.width", scene_size.width, EDJE_T_FLOAT); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_collection, Edje_Part_Collection, "scene_size.height", scene_size.height, EDJE_T_FLOAT); EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_collection, Edje_Part_Collection, "prop.min.w", prop.min.w, EET_T_INT); EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_collection, Edje_Part_Collection, "prop.min.h", prop.min.h, EET_T_INT); EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_collection, Edje_Part_Collection, "prop.max.w", prop.max.w, EET_T_INT); diff --git a/src/lib/edje/edje_private.h b/src/lib/edje/edje_private.h index fa2d921212..03e288c567 100644 --- a/src/lib/edje/edje_private.h +++ b/src/lib/edje/edje_private.h @@ -897,9 +897,6 @@ struct _Edje_Limit TYPE TABLE; \ TYPE SPACER; \ TYPE EXTERNAL; \ - TYPE MESH_NODE; \ - TYPE LIGHT; \ - TYPE CAMERA; \ TYPE SNAPSHOT; \ TYPE VECTOR; @@ -1149,11 +1146,6 @@ struct _Edje_Part_Collection } patterns; /* *** *** */ - struct { - Evas_Real height; - Evas_Real width; - } scene_size; - unsigned char lua_script_only; unsigned char broadcast_signal; unsigned char physics_enabled; /* will be 1 if a body is declared */ @@ -2368,9 +2360,6 @@ EAPI extern Eina_Mempool *_emp_BOX; EAPI extern Eina_Mempool *_emp_TABLE; EAPI extern Eina_Mempool *_emp_EXTERNAL; EAPI extern Eina_Mempool *_emp_SPACER; -EAPI extern Eina_Mempool *_emp_MESH_NODE; -EAPI extern Eina_Mempool *_emp_LIGHT; -EAPI extern Eina_Mempool *_emp_CAMERA; EAPI extern Eina_Mempool *_emp_SNAPSHOT; EAPI extern Eina_Mempool *_emp_part; EAPI extern Eina_Mempool *_emp_VECTOR; diff --git a/src/lib/evas/Evas_Eo.h b/src/lib/evas/Evas_Eo.h index 046f2c55d6..aefbe144f7 100644 --- a/src/lib/evas/Evas_Eo.h +++ b/src/lib/evas/Evas_Eo.h @@ -119,218 +119,6 @@ struct _Efl_Canvas_Object_Animation_Event #include "canvas/efl_canvas_object_animation.eo.h" #include "canvas/efl_canvas_event_grabber.eo.h" - /** - * @defgroup Evas_3D Evas 3D Extensions - * - * Evas extension to support 3D rendering. - * - * @ingroup Evas - */ - -#include "canvas/evas_canvas3d_types.eot.h" - -/** - * @page evas_canvas3d_main Evas 3D - * - * @since 1.10 - * - * @section evas_canvas3d_toc Table of Contents - * - * @li @ref evas_canvas3d_intro - * @li @ref evas_canvas3d_example - * - * @section evas_canvas3d_intro Introduction - * - * Evas 3D is an extension to support 3D scene graph rendering into 2D Evas - * canvases, with tree-based scene graph manipulation and other typical 3D - * rendering techniques. - * - * 3D objects are used to describe three dimensional scenes and to provide - * interfaces to connect the scene to an Evas image object for rendering. - * - * Scenes are constructed by locating cameras and lights and selecting desired - * meshes, and organizing Node objects into hierarchical n-ary tree data structures. - * The scene is stacked on the canvas with existing Evas objects, which permits - * intermingling 3D rendered content in existing 2D application layouts. - * - * Rendering techniques supported by Evas 3D include flat and phong - * shading, normal and texture mapping, and triangle meshes. Existing - * Evas objects may also be used as textures inside the 3D scene, - * including EFL widgets and even application windows. This latter - * capability makes it possible to create a 3D version of an arbitrary - * EFL application with minimal code changes. - * - * @section evas_canvas3d_example Introductory Example - * - * @include evas-3d-cube.c - */ - -/** - * @defgroup Evas_Canvas3D_Types Types & Enums - * @ingroup Evas_3D - * - * Primitive type definitions and enumerations. - */ - -/** - * @defgroup Evas_Canvas3D_Object Generic 3D Object Descriptions - * @ingroup Evas_3D - * - * The Evas_Canvas3D_Object structure is an abstract base for other Evas - * 3D objects (scenes, nodes, lights, meshes, textures, and materials) - * with reference counting and propagation of modifications via - * reference tracking. This permits, for example, when a scene object - * is modified (marked dirty), a number of image objects rendering that - * object to be notified to update themselves, without needing to call - * update functions manually. - */ - -/** - * @defgroup Evas_Canvas3D_Scene Scene Object - * @ingroup Evas_3D - * - * The Evas_Canvas3D_Scene structure represents a captured image of a - * scene graph through its viewing camera. A scene can be associated - * with an image object for canvas display via the - * evas_object_image_scene_set() function. - */ - -/** - * @defgroup Evas_Canvas3D_Node Node Object - * @ingroup Evas_3D - * - * The Evas_Canvas3D_Node structure defines the position, orientation, - * and scale of canvas objects (cameras, lights, meshes, etc.) in a 3D - * space. These nodes can be organized into a hierarchical n-ary tree - * structure to construct a scene graph. - */ - -/** - * @defgroup Evas_Canvas3D_Camera Camera Object - * @ingroup Evas_3D - * - * The Evas_Canvas3D_Camera structure defines properties used to - * generate 2D pictures of a given scene graph, similar in concept to - * focus length and film size for a real world camera. - * - * A given camera definition can be used to take multiple pictures of - * the scene by establishing multiple nodes for the - * Evas_Canvas3D_Camera, each of which are located at different - * positions and with different orientations. Convenience routines - * evas_canvas3d_node_position_set() and - * evas_canvas3d_node_look_at_set() are provided to adjust the position - * and viewing direction for these nodes. - */ - -/** - * @defgroup Evas_Canvas3D_Light Light Object - * @ingroup Evas_3D - * - * The Evas_Canvas3D_Light structure defines various light source - * properties. Reflection models include: Ambient, diffuse, and - * specular. Light models include directional, point, and spot. The - * position and direction for the light is tracked by the node that - * contains the light. - */ - -/** - * @defgroup Evas_Canvas3D_Mesh Mesh Object - * @ingroup Evas_3D - * - * The Evas_Canvas3D_Mesh structure manages key-frame based mesh - * animations for geometrical objects like character models, terrain, - * buildings, and other such visible objects. Each mesh frame can have - * its own material and geometric data. Blending functions, fog - * effects, level of detail boundaries, and shadow properties are also - * supported. - * - * Like other data objects, a mesh definition is located and oriented in - * the canvas with one or more nodes, with the mesh transformed from its - * modeling coordinate space to the node's coordinate space. The frame - * number is also tracked by the node, permitting creation of multiple - * nodes in the canvas each set to a different animation frame, for - * example. - * - * Unlike camera and light objects, multiple meshes can be contained in - * a single node. - */ - -/** - * @defgroup Evas_Canvas3D_Primitive Primitive Object - * @ingroup Evas_3D - * - * The Evas_Canvas3D_Primitive structure defines the data for - * generating meshes for various types of primitive shapes such as - * cubes, cylinders, spheres, surfaces, terrain, etc. Use the - * evas_canvas3d_mesh_from_primitive_set() function to generate a - * mesh's frame of this primitive. - */ - -/** - * @defgroup Evas_Canvas3D_Texture Texture Object - * @ingroup Evas_3D - * - * The Evas_Canvas3D_Texture structure associates a 2D bitmap image to a - * material for a surface. Image data for the texture can be loaded - * from memory, a file, or an Evas_Object. Use the - * evas_canvas3d_material_texture_set() function to add the texture to - * an Evas_Canvas3DMaterial's slot. - */ - -/** - * @defgroup Evas_Canvas3D_Material Material Object - * @ingroup Evas_3D - * - * The Evas_Canvas3D_Material structure defines a set of material - * attributes used for determining the color of mesh surfaces. Each - * attribute is defined by a color value and texture map. The five - * attributes are: ambient, diffuse, specular, emission, and normal. - */ - -/** - * @typedef Evas_Canvas3D_Surface_Func - * - * The Evas_Canvas3D_Surface_Func type of functions are used to - * create parametric surfaces as primitives. These compute the - * vertex x,y,z values for given v,u values. - * - * @param out_x The x component of the calculated value. - * @param out_y The y component of the calculated value. - * @param out_z The z component of the calculated value. - * @param a is the v value. - * @param b is the u value. - - * @see Evas_Canvas3D_Primitive - * - * @since 1.15 - * @ingroup Evas_Canvas3D_Primitive - */ -typedef void (Evas_Canvas3D_Surface_Func)(Evas_Real *out_x, - Evas_Real *out_y, - Evas_Real *out_z, - Evas_Real a, - Evas_Real b); - -#include "canvas/evas_canvas3d_object.eo.h" - -#include "canvas/evas_canvas3d_texture.eo.h" - -#include "canvas/evas_canvas3d_material.eo.h" - -#include "canvas/evas_canvas3d_light.eo.h" - -#include "canvas/evas_canvas3d_primitive.eo.h" - -#include "canvas/evas_canvas3d_mesh.eo.h" - -#include "canvas/evas_canvas3d_node.eo.h" - -#include "canvas/evas_canvas3d_camera.eo.h" - -#include "canvas/evas_canvas3d_scene.eo.h" - -#include "canvas/efl_canvas_scene3d.eo.h" - #include "canvas/efl_canvas_image_internal.eo.h" #include "canvas/efl_canvas_image.eo.h" #include "canvas/efl_canvas_snapshot.eo.h" diff --git a/src/lib/evas/canvas/efl_canvas_scene3d.c b/src/lib/evas/canvas/efl_canvas_scene3d.c deleted file mode 100644 index 513a68ba94..0000000000 --- a/src/lib/evas/canvas/efl_canvas_scene3d.c +++ /dev/null @@ -1,310 +0,0 @@ -#include "evas_image_private.h" -#include "efl_canvas_scene3d.eo.h" - -#define MY_CLASS EFL_CANVAS_SCENE3D_CLASS - -EOLIAN static void -_efl_canvas_scene3d_scene3d_set(Eo *eo_obj, void *pd EINA_UNUSED, Evas_Canvas3D_Scene *scene) -{ - Evas_Object_Protected_Data *obj = efl_data_scope_get(eo_obj, EFL_CANVAS_OBJECT_CLASS); - Evas_Image_Data *o = efl_data_scope_get(eo_obj, EFL_CANVAS_IMAGE_INTERNAL_CLASS); - Evas_Image_Load_Opts lo; - int load_error; - - if (o->cur->scene == scene) return; - - evas_object_async_block(obj); - _evas_image_init_set(NULL, NULL, eo_obj, obj, o, &lo); - o->engine_data = ENFN->image_mmap(ENC, o->cur->f, o->cur->key, &load_error, &lo); - o->load_error = _evas_load_error_to_efl_gfx_image_load_error(load_error); - _evas_image_done_set(eo_obj, obj, o); - - if (scene) _evas_image_3d_set(eo_obj, scene); - else _evas_image_3d_unset(eo_obj, obj, o); -} - -EOLIAN static Evas_Canvas3D_Scene * -_efl_canvas_scene3d_scene3d_get(const Eo *eo_obj, void *pd EINA_UNUSED) -{ - Evas_Image_Data *o = efl_data_scope_get(eo_obj, EFL_CANVAS_IMAGE_INTERNAL_CLASS); - return o->cur->scene; -} - -void -_evas_image_3d_render(Evas *eo_e, Evas_Object *eo_obj, - Evas_Object_Protected_Data *obj, Evas_Image_Data *o EINA_UNUSED, - Evas_Canvas3D_Scene *scene, void *engine, void *output) -{ - Evas_Public_Data *e; - Eina_Bool need_native_set = EINA_FALSE; - Evas_Canvas3D_Scene_Public_Data scene_data; - Evas_Canvas3D_Scene_Data *pd_scene = NULL; - - pd_scene = efl_data_scope_get(scene, EVAS_CANVAS3D_SCENE_CLASS); - - if ((pd_scene->w == 0) || (pd_scene->h == 0)) return; - if (!pd_scene->camera_node) - { - WRN("Camera has not been set to scene(%p)", scene); - return; - } - - e = efl_data_scope_get(eo_e, EVAS_CANVAS_CLASS); - - if (pd_scene->surface) - { - int w = 0; - int h = 0; - - if (e->engine.func->drawable_size_get) - { - e->engine.func->drawable_size_get(engine, - pd_scene->surface, &w, &h); - } - if ((w != pd_scene->w) || (h != pd_scene->h)) - { - if (e->engine.func->drawable_free) - { - e->engine.func->drawable_free(engine, - pd_scene->surface); - } - pd_scene->surface = NULL; - need_native_set = EINA_TRUE; - } - } - else - { - /* TODO: Hard-coded alpha on. */ - if (e->engine.func->drawable_new) - { - pd_scene->surface = - e->engine.func->drawable_new(engine, - pd_scene->w, pd_scene->h, 1); - } - need_native_set = EINA_TRUE; - } - - EINA_COW_WRITE_BEGIN(evas_object_3d_cow, obj->data_3d, Evas_Object_3D_Data, - data) - { - if (need_native_set) - { - if (e->engine.func->image_drawable_set) - { - data->surface = - e->engine.func->image_drawable_set(engine, - data->surface, - pd_scene->surface); - } - } - data->w = pd_scene->w; - data->h = pd_scene->h; - } - EINA_COW_WRITE_END(evas_object_3d_cow, obj->data_3d, data); - - evas_canvas3d_scene_data_init(&scene_data); - - scene_data.bg_color = pd_scene->bg_color; - scene_data.shadows_enabled = pd_scene->shadows_enabled; - scene_data.camera_node = pd_scene->camera_node; - scene_data.depth_offset = pd_scene->depth_offset; - scene_data.depth_constant = pd_scene->depth_constant; - if (evas_object_anti_alias_get(eo_obj)) - { - /*Use post processing render*/ - scene_data.post_processing = EINA_TRUE; - scene_data.color_pick_enabled = EINA_FALSE; - scene_data.render_to_texture = EINA_TRUE; - scene_data.post_processing_type = EVAS_CANVAS3D_SHADER_MODE_POST_PROCESSING_FXAA; - } - /* Phase 1 - Update scene graph tree. */ - evas_canvas3d_object_update(scene); - - /* Phase 2 - Do frustum culling and get visible model nodes. */ - evas_canvas3d_node_tree_traverse(pd_scene->root_node, - EVAS_CANVAS3D_TREE_TRAVERSE_LEVEL_ORDER, EINA_TRUE, - evas_canvas3d_node_mesh_collect, &scene_data); - - /* Phase 3 - Collect active light nodes in the scene graph tree. */ - evas_canvas3d_node_tree_traverse(pd_scene->root_node, - EVAS_CANVAS3D_TREE_TRAVERSE_ANY_ORDER, EINA_FALSE, - evas_canvas3d_node_light_collect, &scene_data); - - /* Phase 5 - Draw the scene. */ - if (e->engine.func->drawable_scene_render) - { - e->engine.func->drawable_scene_render(engine, output, - pd_scene->surface, &scene_data); - } - /* Clean up temporary resources. */ - evas_canvas3d_scene_data_fini(&scene_data); -} - -void -_evas_image_3d_set(Evas_Object *eo_obj, Evas_Canvas3D_Scene *scene) -{ - Evas_Object_Protected_Data *obj = efl_data_scope_get(eo_obj, EFL_CANVAS_OBJECT_CLASS); - Evas_Image_Data *o = efl_data_scope_get(eo_obj, EFL_CANVAS_IMAGE_INTERNAL_CLASS); - Evas_Canvas3D_Scene_Data *pd_scene = efl_data_scope_get(scene, - EVAS_CANVAS3D_SCENE_CLASS); - EINA_COW_WRITE_BEGIN(evas_object_3d_cow, obj->data_3d, Evas_Object_3D_Data, - data) - { - data->surface = NULL; - data->w = 0; - data->h = 0; - efl_ref(scene); - } - EINA_COW_WRITE_END(evas_object_3d_cow, obj->data_3d, data); - - EINA_COW_IMAGE_STATE_WRITE_BEGIN(o, state_write) - { - state_write->scene = scene; - } - EINA_COW_IMAGE_STATE_WRITE_END(o, state_write); - - pd_scene->images = eina_list_append(pd_scene->images, eo_obj); -} - -void -_evas_image_3d_unset(Evas_Object *eo_obj EINA_UNUSED, Evas_Object_Protected_Data *obj, - Evas_Image_Data *o) -{ - Evas_Public_Data *e; - - if (!o->cur->scene) return; - - Evas_Canvas3D_Scene_Data *pd_scene = - efl_data_scope_get(o->cur->scene, EVAS_CANVAS3D_SCENE_CLASS); - - EINA_COW_IMAGE_STATE_WRITE_BEGIN(o, state_write) - { - pd_scene->images = eina_list_remove(pd_scene->images, eo_obj); - efl_unref(state_write->scene); - state_write->scene = NULL; - } - EINA_COW_IMAGE_STATE_WRITE_END(o, state_write); - - if (o->cur->defmap) - { - EINA_COW_IMAGE_STATE_WRITE_BEGIN(o, state_write) - { - evas_map_free(state_write->defmap); - state_write->defmap = NULL; - } - EINA_COW_IMAGE_STATE_WRITE_END(o, state_write); - } - - EINA_COW_WRITE_BEGIN(evas_object_3d_cow, obj->data_3d, Evas_Object_3D_Data, - data) - { - e = obj->layer->evas; - - if (data->surface) - e->engine.func->image_free(_evas_engine_context(e), data->surface); - - data->surface = NULL; - data->w = 0; - data->h = 0; - } - EINA_COW_WRITE_END(evas_object_3d_cow, obj->data_3d, data); -} - -EOLIAN static Eina_Rw_Slice -_efl_canvas_scene3d_efl_gfx_buffer_buffer_map(Eo *eo_obj, void *_pd EINA_UNUSED, - Efl_Gfx_Buffer_Access_Mode mode, - const Eina_Rect *region, - Efl_Gfx_Colorspace cspace, int plane, - int *stride) -{ - Evas_Image_Data *o = efl_data_scope_get(eo_obj, EFL_CANVAS_IMAGE_INTERNAL_CLASS); - Evas_Public_Data *e; - Evas_Canvas3D_Object_Data *pd_parent; - Evas_Canvas3D_Scene_Data *pd_scene; - int width = -1, height = -1, ntex = -1; - unsigned char *pixels = NULL; - Eina_Rw_Slice slice = {}; - int x, y, w, h; - size_t len = 0; - - if (!o->cur->scene) - { - ERR("invalid scene data"); - return slice; - } - if (mode & EFL_GFX_BUFFER_ACCESS_MODE_WRITE) - { - ERR("invalid map access mode"); - return slice; - } - if (cspace != EFL_GFX_COLORSPACE_ARGB8888) - { - ERR("invalid map colorspace. Only ARGB is supported"); - return slice; - } - - pd_parent = efl_data_scope_get(o->cur->scene, EVAS_CANVAS3D_OBJECT_CLASS); - e = efl_data_scope_get(pd_parent->evas, EVAS_CANVAS_CLASS); - pd_scene = efl_data_scope_get(o->cur->scene, EVAS_CANVAS3D_SCENE_CLASS); - - if (e->engine.func->drawable_size_get) - { - e->engine.func->drawable_size_get(_evas_engine_context(e), - pd_scene->surface, &width, &height); - } - - if (region) - { - x = region->x; - y = region->y; - w = region->w; - h = region->h; - } - else - { - x = y = 0; - w = width; - h = height; - } - - if ((x < 0) || (y < 0) || (w <= 0) || (h <= 0) || ((x + w) > width) || ((y + h) > height)) - { - ERR("Invalid map dimensions : %dx%d +%d,%d. Image is %dx%d.", - w, h, x, y, width, height); - return slice; - } - - if (e->engine.func->drawable_texture_target_id_get) - { - ntex = e->engine.func->drawable_texture_target_id_get(pd_scene->surface); - - if (e->engine.func->drawable_texture_rendered_pixels_get) - { - len = w * h * sizeof(DATA32); //four component texture - pixels = malloc(len + sizeof(slice) + 8); - e->engine.func->drawable_texture_rendered_pixels_get(ntex, x, y, w, h, - pd_scene->surface, pixels); - } - else - return slice; - } - else - return slice; - - if (stride) *stride = w * sizeof(DATA32); - slice.mem = pixels; - slice.len = len; - DBG("map(%p, %d,%d %dx%d plane:%d) -> " EINA_SLICE_FMT, - eo_obj, x, y, w, h, plane, EINA_SLICE_PRINT(slice)); - - return slice; -} -EOLIAN static Eina_Bool -_efl_canvas_scene3d_efl_gfx_buffer_buffer_unmap(Eo *eo_obj EINA_UNUSED, void *_pd EINA_UNUSED, - const Eina_Rw_Slice slice) -{ - free(slice.mem); - return EINA_TRUE; -} - -#include "efl_canvas_scene3d.eo.c" diff --git a/src/lib/evas/canvas/efl_canvas_scene3d.eo b/src/lib/evas/canvas/efl_canvas_scene3d.eo deleted file mode 100644 index 8d506be64c..0000000000 --- a/src/lib/evas/canvas/efl_canvas_scene3d.eo +++ /dev/null @@ -1,20 +0,0 @@ -class @beta Efl.Canvas.Scene3d extends Efl.Canvas.Image_Internal -{ - [[A UI view for EFL Canvas 3D.]] - data: null; - methods { - @property scene3d { - [[The 3d scene to display in this view. - ]] - set {} - get {} - values { - scene: Evas.Canvas3D.Scene; [[3D scene.]] - } - } - } - implements { - Efl.Gfx.Buffer.buffer_map; - Efl.Gfx.Buffer.buffer_unmap; - } -} diff --git a/src/lib/evas/canvas/evas_canvas3d_camera.c b/src/lib/evas/canvas/evas_canvas3d_camera.c deleted file mode 100644 index 97f0576431..0000000000 --- a/src/lib/evas/canvas/evas_canvas3d_camera.c +++ /dev/null @@ -1,203 +0,0 @@ -#include "evas_common_private.h" -#include "evas_private.h" - -#define MY_CLASS EVAS_CANVAS3D_CAMERA_CLASS - -static Eina_Bool -_camera_node_change_notify(const Eina_Hash *hash EINA_UNUSED, const void *key, - void *data EINA_UNUSED, void *fdata) -{ - Evas_Canvas3D_Node *n = *(Evas_Canvas3D_Node **)key; - evas_canvas3d_object_change(n, EVAS_CANVAS3D_STATE_NODE_CAMERA, (Evas_Canvas3D_Object *)fdata); - return EINA_TRUE; -} - -EOLIAN static void -_evas_canvas3d_camera_evas_canvas3d_object_change_notify(Eo *obj,Evas_Canvas3D_Camera_Data *pd, Evas_Canvas3D_State state EINA_UNUSED, Evas_Canvas3D_Object *ref EINA_UNUSED) -{ - if (pd->nodes) eina_hash_foreach(pd->nodes, _camera_node_change_notify, obj); -} - -EOLIAN static void -_evas_canvas3d_camera_evas_canvas3d_object_update_notify(Eo *obj EINA_UNUSED, - Evas_Canvas3D_Camera_Data *pd EINA_UNUSED) -{ - -} - -void -evas_canvas3d_camera_node_add(Evas_Canvas3D_Camera *camera, Evas_Canvas3D_Node *node) -{ - Evas_Canvas3D_Camera_Data *pd = efl_data_scope_get(camera, MY_CLASS); - int count = 0; - - if (!pd->nodes) - { - pd->nodes = eina_hash_pointer_new(NULL); - - if (!pd->nodes) - { - ERR("Failed to create hash table. camera(%p)", camera); - return; - } - } - else count = (int)(uintptr_t)eina_hash_find(pd->nodes, &node); - eina_hash_set(pd->nodes, &node, (const void *)(uintptr_t)(count + 1)); -} - -void -evas_canvas3d_camera_node_del(Evas_Canvas3D_Camera *camera, Evas_Canvas3D_Node *node) -{ - Evas_Canvas3D_Camera_Data *pd = efl_data_scope_get(camera, MY_CLASS); - int count = 0; - - if (!pd->nodes) - { - ERR("No node to delete."); - return; - } - - count = (int)(uintptr_t)eina_hash_find(pd->nodes, &node); - if (count == 1) eina_hash_del(pd->nodes, &node, NULL); - else eina_hash_set(pd->nodes, &node, (const void *)(uintptr_t)(count - 1)); -} - -EOLIAN static Eo * -_evas_canvas3d_camera_efl_object_constructor(Eo *obj, - Evas_Canvas3D_Camera_Data *pd EINA_UNUSED) -{ - obj = efl_constructor(efl_super(obj, MY_CLASS)); - evas_canvas3d_object_type_set(obj, EVAS_CANVAS3D_OBJECT_TYPE_CAMERA); - - return obj; -} - -EOLIAN static void -_evas_canvas3d_camera_efl_object_destructor(Eo *obj, - Evas_Canvas3D_Camera_Data *pd) -{ - Eina_Iterator *it = NULL; - void *data = NULL; - Evas_Canvas3D_Node_Data *node = NULL; - - if (pd->nodes) - { - it = eina_hash_iterator_key_new(pd->nodes); - while (eina_iterator_next(it, &data)) - { - node = efl_data_scope_get(data, EVAS_CANVAS3D_NODE_CLASS); - node->data.camera.camera = NULL; - } - - eina_hash_free(pd->nodes); - } - - efl_destructor(efl_super(obj, MY_CLASS)); -} - -EAPI Evas_Canvas3D_Camera * -evas_canvas3d_camera_add(Evas *e) -{ - MAGIC_CHECK(e, Evas, MAGIC_EVAS); - return NULL; - MAGIC_CHECK_END(); - return efl_add(MY_CLASS, e); -} - -EOLIAN static void -_evas_canvas3d_camera_projection_matrix_set(Eo *obj, Evas_Canvas3D_Camera_Data *pd, - const Evas_Real *matrix) -{ - eina_matrix4_array_set(&pd->projection, matrix); - evas_canvas3d_object_change(obj, EVAS_CANVAS3D_STATE_CAMERA_PROJECTION, NULL); -} - -EOLIAN static void -_evas_canvas3d_camera_projection_matrix_get(const Eo *obj EINA_UNUSED, - Evas_Canvas3D_Camera_Data *pd, - Evas_Real *matrix) -{ - memcpy(matrix, &pd->projection.xx, sizeof(Evas_Real) * 16); -} - -EOLIAN static void -_evas_canvas3d_camera_projection_perspective_set(Eo *obj, Evas_Canvas3D_Camera_Data *pd, - Evas_Real fovy, Evas_Real aspect, - Evas_Real dnear, Evas_Real dfar) -{ - Evas_Real xmax; - Evas_Real ymax; - - ymax = dnear * (Evas_Real)tan((double)fovy * M_PI / 360.0); - xmax = ymax * aspect; - - evas_mat4_frustum_set(&pd->projection, -xmax, xmax, -ymax, ymax, dnear, dfar); - evas_canvas3d_object_change(obj, EVAS_CANVAS3D_STATE_CAMERA_PROJECTION, NULL); -} - -EOLIAN static void -_evas_canvas3d_camera_projection_frustum_set(Eo *obj, Evas_Canvas3D_Camera_Data *pd, - Evas_Real left, Evas_Real right, - Evas_Real bottom, Evas_Real top, - Evas_Real dnear, Evas_Real dfar) -{ - evas_mat4_frustum_set(&pd->projection, left, right, bottom, top, dnear, dfar); - evas_canvas3d_object_change(obj, EVAS_CANVAS3D_STATE_CAMERA_PROJECTION, NULL); -} - -EOLIAN static void -_evas_canvas3d_camera_projection_ortho_set(Eo *obj, Evas_Canvas3D_Camera_Data *pd, - Evas_Real left, Evas_Real right, - Evas_Real bottom, Evas_Real top, - Evas_Real dnear, Evas_Real dfar) -{ - eina_matrix4_ortho_set(&pd->projection, left, right, bottom, top, dnear, dfar); - evas_canvas3d_object_change(obj, EVAS_CANVAS3D_STATE_CAMERA_PROJECTION, NULL); -} - -EOLIAN static Eina_Bool -_evas_canvas3d_camera_node_visible_get(Eo *obj EINA_UNUSED, Evas_Canvas3D_Camera_Data *pd, Evas_Canvas3D_Node *camera_node, Evas_Canvas3D_Node *node, Evas_Canvas3D_Frustum_Mode key) -{ - Eina_Matrix4 matrix_vp; - Eina_Quaternion planes[6]; - Evas_Canvas3D_Node_Data *pd_node = efl_data_scope_get(node, EVAS_CANVAS3D_NODE_CLASS); - Evas_Canvas3D_Node_Data *pd_camera = efl_data_scope_get(camera_node, EVAS_CANVAS3D_NODE_CLASS); - Eina_Vector3 central_point; - - if (!node || pd_node->type != EVAS_CANVAS3D_NODE_TYPE_MESH) - { - ERR("Mesh node %p type mismatch.", node); - return EINA_FALSE; - } - - if (!camera_node || pd_camera->type != EVAS_CANVAS3D_NODE_TYPE_CAMERA) - { - ERR("Camera node %p type mismatch.", camera_node); - return EINA_FALSE; - } - - /*get need matrix like multiply projection matrix with view matrix*/ - eina_matrix4_multiply(&matrix_vp, &pd->projection, &pd_camera->data.camera.matrix_world_to_eye); - - evas_frustum_calculate(planes, &matrix_vp); - - if (key == EVAS_CANVAS3D_FRUSTUM_MODE_BSPHERE) - return evas_is_sphere_in_frustum(&pd_node->bsphere, planes); - else if (key == EVAS_CANVAS3D_FRUSTUM_MODE_AABB) - return evas_is_box_in_frustum(&pd_node->aabb, planes); - else if (key == EVAS_CANVAS3D_FRUSTUM_MODE_CENTRAL_POINT) - { - central_point.x = (pd_node->aabb.p0.x + pd_node->aabb.p1.x) / 2; - central_point.y = (pd_node->aabb.p0.y + pd_node->aabb.p1.y) / 2; - central_point.z = (pd_node->aabb.p0.z + pd_node->aabb.p1.z) / 2; - return evas_is_point_in_frustum(¢ral_point, planes); - } - else - { - ERR("Unknown frustun mode."); - return EINA_TRUE; - } -} - -#include "canvas/evas_canvas3d_camera.eo.c" - diff --git a/src/lib/evas/canvas/evas_canvas3d_camera.eo b/src/lib/evas/canvas/evas_canvas3d_camera.eo deleted file mode 100644 index 9cd98007f2..0000000000 --- a/src/lib/evas/canvas/evas_canvas3d_camera.eo +++ /dev/null @@ -1,89 +0,0 @@ -import evas_canvas3d_types; - -class @beta Evas.Canvas3D.Camera extends Evas.Canvas3D.Object -{ - [[Evas 3D canvas camera class]] - data: Evas_Canvas3D_Camera_Data; - methods { - projection_matrix_set { - [[Set the projection matrix of the given camera. - - Default projection matrix is identity matrix. - - See also @.projection_perspective_set, @.projection_ortho_set and @.projection_frustum_set.]] - params { - @in matrix: ptr(const(Evas.Real)); [[Projection Matrix]] - } - } - - projection_matrix_get @const { - [[Get the projection matrix of the given camera. - - See also @.projection_matrix_set.]] - params { - @out matrix: Evas.Real; [[Projection Matrix]] - } - } - - projection_perspective_set { - [[Set the projection matrix of the given camera with perspective projection. - - See also @.projection_matrix_set.]] - - params { - fovy: Evas.Real; [[Field of view angle in Y direction.]] - aspect: Evas.Real; [[Aspect ratio.]] - dnear: Evas.Real; [[Distance to near clipping plane.]] - dfar: Evas.Real; [[Distance to far clipping plane.]] - } - } - - projection_frustum_set { - [[Set the projection matrix of the given camera with frustum projection. - - See also @.projection_matrix_set.]] - params { - left: Evas.Real; [[Left X coordinate of the near clipping plane.]] - right: Evas.Real; [[Right X coordinate of the near clipping plane..]] - bottom: Evas.Real; [[Bottom Y coordinate of the near clipping plane.]] - top: Evas.Real; [[Top Y coordinate of the near clipping plane]] - dnear: Evas.Real; [[Distance to near clipping plane.]] - dfar: Evas.Real; [[Distance to far clipping plane.]] - } - } - projection_ortho_set { - [[Set the projection matrix of the given camera with orthogonal projection. - - See also @.projection_matrix_set.]] - params { - left: Evas.Real; [[Left X coordinate of the near clipping plane.]] - right: Evas.Real; [[Right X coordinate of the near clipping plane..]] - bottom: Evas.Real; [[Bottom Y coordinate of the near clipping plane.]] - top: Evas.Real; [[Top Y coordinate of the near clipping plane]] - dnear: Evas.Real; [[Distance to near clipping plane.]] - dfar: Evas.Real; [[Distance to far clipping plane.]] - } - } - node_visible_get { - [[Check is bounding sphere of given node inside frustum of camera node. - - If the nodes are $null or nodes type mismatch error wrong type of nodes will be generated and returned $false.]] - return: bool; [[$true in frustum, $false otherwise]] - params { - @in camera_node: Evas.Canvas3D.Node; [[The given camera node.]] - @in node: Evas.Canvas3D.Node; [[The given node.]] - @in key: Evas.Canvas3D.Frustum_Mode; [[The given key]] - } - } - } - - implements { - Efl.Object.constructor; - Efl.Object.destructor; - Evas.Canvas3D.Object.update_notify; - Evas.Canvas3D.Object.change_notify; - @empty Evas.Canvas3D.Object.callback_register; - @empty Evas.Canvas3D.Object.callback_unregister; - } - -} diff --git a/src/lib/evas/canvas/evas_canvas3d_eet.c b/src/lib/evas/canvas/evas_canvas3d_eet.c deleted file mode 100644 index ca24450626..0000000000 --- a/src/lib/evas/canvas/evas_canvas3d_eet.c +++ /dev/null @@ -1,211 +0,0 @@ -#include "evas_common_private.h" -#include "evas_private.h" - -static Eet_Data_Descriptor *_vec2_descriptor = NULL; -static Eet_Data_Descriptor *_vec3_descriptor = NULL; -static Eet_Data_Descriptor *_vertex_descriptor = NULL; -static Eet_Data_Descriptor *_geometry_descriptor = NULL; -static Eet_Data_Descriptor *_color_descriptor = NULL; -static Eet_Data_Descriptor *_material_descriptor = NULL; -static Eet_Data_Descriptor *_frame_descriptor = NULL; -static Eet_Data_Descriptor *_mesh_descriptor = NULL; -static Eet_Data_Descriptor *_header_descriptor = NULL; -static Eet_Data_Descriptor *_file_descriptor = NULL; - -Evas_Canvas3D_File_Eet * -_evas_canvas3d_eet_file_new(void) -{ - Evas_Canvas3D_File_Eet *creating_file = calloc(1, sizeof(Evas_Canvas3D_File_Eet)); - - if (!creating_file) - { - ERR("Could not calloc Evas_Canvas3D_File_Eet"); - return NULL; - } - - return creating_file; -} - -Eet_Data_Descriptor* -_evas_canvas3d_eet_file_get(void) -{ - if(_file_descriptor == NULL) - _evas_canvas3d_eet_file_init(); - - return _file_descriptor; -} -void -_evas_canvas3d_eet_file_init(void) -{ -/* initialization of bonding between structure units in eet file */ - Eet_Data_Descriptor_Class eddc; - EET_EINA_FILE_DATA_DESCRIPTOR_CLASS_SET(&eddc, Evas_Canvas3D_Vec2_Eet); - _vec2_descriptor = eet_data_descriptor_file_new(&eddc); - EET_EINA_FILE_DATA_DESCRIPTOR_CLASS_SET(&eddc, Evas_Canvas3D_Vec3_Eet); - _vec3_descriptor = eet_data_descriptor_file_new(&eddc); - EET_EINA_FILE_DATA_DESCRIPTOR_CLASS_SET(&eddc, Evas_Canvas3D_Vertex_Eet); - _vertex_descriptor = eet_data_descriptor_file_new(&eddc); - EET_EINA_FILE_DATA_DESCRIPTOR_CLASS_SET(&eddc, Evas_Canvas3D_Geometry_Eet); - _geometry_descriptor = eet_data_descriptor_file_new(&eddc); - EET_EINA_FILE_DATA_DESCRIPTOR_CLASS_SET(&eddc, Evas_Canvas3D_Color_Eet); - _color_descriptor = eet_data_descriptor_file_new(&eddc); - EET_EINA_FILE_DATA_DESCRIPTOR_CLASS_SET(&eddc, Evas_Canvas3D_Frame_Eet); - _frame_descriptor = eet_data_descriptor_file_new(&eddc); - EET_EINA_FILE_DATA_DESCRIPTOR_CLASS_SET(&eddc, Evas_Canvas3D_Material_Eet); - _material_descriptor = eet_data_descriptor_file_new(&eddc); - EET_EINA_FILE_DATA_DESCRIPTOR_CLASS_SET(&eddc, Evas_Canvas3D_Mesh_Eet); - _mesh_descriptor = eet_data_descriptor_file_new(&eddc); - EET_EINA_FILE_DATA_DESCRIPTOR_CLASS_SET(&eddc, Evas_Canvas3D_Header_Eet); - _header_descriptor = eet_data_descriptor_file_new(&eddc); - EET_EINA_FILE_DATA_DESCRIPTOR_CLASS_SET(&eddc, Evas_Canvas3D_File_Eet); - _file_descriptor = eet_data_descriptor_file_new(&eddc); - -/* Vec_2 */ -#define ADD_BASIC(member, eet_type) EET_DATA_DESCRIPTOR_ADD_BASIC \ - (_vec2_descriptor, Evas_Canvas3D_Vec3_Eet, # member, member, eet_type); - ADD_BASIC(x, EET_T_FLOAT); - ADD_BASIC(y, EET_T_FLOAT); -#undef ADD_BASIC - -/* Vec_3 */ -#define ADD_BASIC(member, eet_type) EET_DATA_DESCRIPTOR_ADD_BASIC \ - (_vec3_descriptor, Evas_Canvas3D_Vec3_Eet, # member, member, eet_type); - ADD_BASIC(x, EET_T_FLOAT); - ADD_BASIC(y, EET_T_FLOAT); - ADD_BASIC(z, EET_T_FLOAT); -#undef ADD_BASIC - -/* Vertex */ - EET_DATA_DESCRIPTOR_ADD_SUB_NESTED(_vertex_descriptor, Evas_Canvas3D_Vertex_Eet, - "position", position, _vec3_descriptor); - EET_DATA_DESCRIPTOR_ADD_SUB_NESTED(_vertex_descriptor, Evas_Canvas3D_Vertex_Eet, - "normal", normal, _vec3_descriptor); - EET_DATA_DESCRIPTOR_ADD_SUB_NESTED(_vertex_descriptor, Evas_Canvas3D_Vertex_Eet, - "texcoord", texcoord, _vec2_descriptor); - -/* Geometry */ - EET_DATA_DESCRIPTOR_ADD_VAR_ARRAY(_geometry_descriptor, Evas_Canvas3D_Geometry_Eet, - "vertices", vertices, _vertex_descriptor); -#define ADD_BASIC(member, eet_type) \ - EET_DATA_DESCRIPTOR_ADD_BASIC \ - (_geometry_descriptor, Evas_Canvas3D_Geometry_Eet, # member, member, eet_type); - ADD_BASIC(vertices_count, EET_T_UINT); - ADD_BASIC(id, EET_T_UINT); -#undef ADD_BASIC - -/* Color */ -#define ADD_BASIC(member, eet_type) EET_DATA_DESCRIPTOR_ADD_BASIC \ - (_color_descriptor, Evas_Canvas3D_Color_Eet, # member, member, eet_type); - ADD_BASIC(r, EET_T_FLOAT); - ADD_BASIC(g, EET_T_FLOAT); - ADD_BASIC(b, EET_T_FLOAT); - ADD_BASIC(a, EET_T_FLOAT); -#undef ADD_BASIC - -/* Material */ - EET_DATA_DESCRIPTOR_ADD_VAR_ARRAY(_material_descriptor, Evas_Canvas3D_Material_Eet, - "colors", colors, _color_descriptor); -#define ADD_BASIC(member, eet_type) \ - EET_DATA_DESCRIPTOR_ADD_BASIC \ - (_material_descriptor, Evas_Canvas3D_Material_Eet, # member, member, eet_type); - ADD_BASIC(id, EET_T_UINT); - ADD_BASIC(colors_count, EET_T_UINT); - ADD_BASIC(shininess, EET_T_FLOAT); -#undef ADD_BASIC - -/* Frame */ -#define ADD_BASIC(member, eet_type) EET_DATA_DESCRIPTOR_ADD_BASIC \ - (_frame_descriptor, Evas_Canvas3D_Frame_Eet, # member, member, eet_type); - ADD_BASIC(id, EET_T_UINT); - ADD_BASIC(geometry_id, EET_T_UINT); - ADD_BASIC(material_id, EET_T_UINT); -#undef ADD_BASIC - -/* Mesh */ - EET_DATA_DESCRIPTOR_ADD_VAR_ARRAY(_mesh_descriptor, Evas_Canvas3D_Mesh_Eet, - "frames", frames, _frame_descriptor); - EET_DATA_DESCRIPTOR_ADD_VAR_ARRAY(_mesh_descriptor, Evas_Canvas3D_Mesh_Eet, - "geometries", geometries, _geometry_descriptor); - EET_DATA_DESCRIPTOR_ADD_VAR_ARRAY(_mesh_descriptor, Evas_Canvas3D_Mesh_Eet, - "materials", materials, _material_descriptor); -#define ADD_BASIC(member, eet_type) \ - EET_DATA_DESCRIPTOR_ADD_BASIC \ - (_mesh_descriptor, Evas_Canvas3D_Mesh_Eet, # member, member, eet_type); - ADD_BASIC(materials_count, EET_T_UINT); - ADD_BASIC(frames_count, EET_T_UINT); - ADD_BASIC(geometries_count, EET_T_UINT); -#undef ADD_BASIC - -/* Header */ - EET_DATA_DESCRIPTOR_ADD_BASIC_VAR_ARRAY(_header_descriptor, Evas_Canvas3D_Header_Eet, - "materials", materials, EET_T_UINT); - EET_DATA_DESCRIPTOR_ADD_BASIC_VAR_ARRAY(_header_descriptor, Evas_Canvas3D_Header_Eet, - "geometries", geometries, EET_T_UINT); -#define ADD_BASIC(member, eet_type) \ - EET_DATA_DESCRIPTOR_ADD_BASIC \ - (_header_descriptor, Evas_Canvas3D_Header_Eet, # member, member, eet_type); - ADD_BASIC(version, EET_T_UINT); - ADD_BASIC(materials_count, EET_T_UINT); - ADD_BASIC(frames, EET_T_UINT); - ADD_BASIC(geometries_count, EET_T_UINT); -#undef ADD_BASIC - -/* File */ - EET_DATA_DESCRIPTOR_ADD_SUB(_file_descriptor, Evas_Canvas3D_File_Eet, - "mesh", mesh, _mesh_descriptor); - EET_DATA_DESCRIPTOR_ADD_SUB(_file_descriptor, Evas_Canvas3D_File_Eet, - "header", header, _header_descriptor); -} - -void -_evas_canvas3d_eet_descriptor_shutdown(void) -{ - eet_data_descriptor_free(_geometry_descriptor); - _geometry_descriptor = NULL; - eet_data_descriptor_free(_vertex_descriptor); - _vertex_descriptor = NULL; - eet_data_descriptor_free(_vec2_descriptor); - _vec2_descriptor = NULL; - eet_data_descriptor_free(_vec3_descriptor); - _vec3_descriptor = NULL; - eet_data_descriptor_free(_color_descriptor); - _color_descriptor = NULL; - eet_data_descriptor_free(_material_descriptor); - _material_descriptor = NULL; - eet_data_descriptor_free(_frame_descriptor); - _frame_descriptor = NULL; - eet_data_descriptor_free(_mesh_descriptor); - _mesh_descriptor = NULL; - eet_data_descriptor_free(_header_descriptor); - _header_descriptor = NULL; - eet_data_descriptor_free(_file_descriptor); - _file_descriptor = NULL; -} - -void -_evas_canvas3d_eet_file_free(Evas_Canvas3D_File_Eet* eet_file) -{ - if (eet_file) - { - if (eet_file->mesh) - { - free(eet_file->mesh->geometries[0].vertices); - free(eet_file->mesh->geometries); - free(eet_file->mesh->frames); - free(eet_file->mesh->materials[0].colors); - free(eet_file->mesh->materials); - free(eet_file->mesh); - } - - if (eet_file->header) - { - free(eet_file->header->materials); - free(eet_file->header->geometries); - free(eet_file->header); - } - - free(eet_file); - } - - _evas_canvas3d_eet_descriptor_shutdown(); -} diff --git a/src/lib/evas/canvas/evas_canvas3d_light.c b/src/lib/evas/canvas/evas_canvas3d_light.c deleted file mode 100644 index 887f3abb6c..0000000000 --- a/src/lib/evas/canvas/evas_canvas3d_light.c +++ /dev/null @@ -1,309 +0,0 @@ -#include "evas_common_private.h" -#include "evas_private.h" - -#define MY_CLASS EVAS_CANVAS3D_LIGHT_CLASS - -static Eina_Bool -_light_node_change_notify(const Eina_Hash *hash EINA_UNUSED, const void *key, - void *data EINA_UNUSED, void *fdata) -{ - Evas_Canvas3D_Node *n = *(Evas_Canvas3D_Node **)key; - evas_canvas3d_object_change(n, EVAS_CANVAS3D_STATE_NODE_LIGHT, (Evas_Canvas3D_Object *)fdata); - return EINA_TRUE; -} - -EOLIAN static void -_evas_canvas3d_light_evas_canvas3d_object_change_notify(Eo *obj, Evas_Canvas3D_Light_Data *pd, Evas_Canvas3D_State state EINA_UNUSED, Evas_Canvas3D_Object *ref EINA_UNUSED) -{ - if (pd->nodes) - eina_hash_foreach(pd->nodes, _light_node_change_notify, obj); -} - -EOLIAN static void -_evas_canvas3d_light_evas_canvas3d_object_update_notify(Eo *obj EINA_UNUSED, Evas_Canvas3D_Light_Data *pd EINA_UNUSED) -{ - -} - -void -evas_canvas3d_light_node_add(Evas_Canvas3D_Light *light, Evas_Canvas3D_Node *node) -{ - int count = 0; - Evas_Canvas3D_Light_Data *pd = efl_data_scope_get(light, MY_CLASS); - if (pd->nodes == NULL) - { - pd->nodes = eina_hash_pointer_new(NULL); - - if (pd->nodes == NULL) - { - ERR("Failed to create hash table."); - return; - } - } - else - count = (int)(uintptr_t)eina_hash_find(pd->nodes, &node); - - eina_hash_set(pd->nodes, &node, (const void *)(uintptr_t)(count + 1)); -} - -void -evas_canvas3d_light_node_del(Evas_Canvas3D_Light *light, Evas_Canvas3D_Node *node) -{ - int count = 0; - Evas_Canvas3D_Light_Data *pd = efl_data_scope_get(light, MY_CLASS); - if (pd->nodes == NULL) - { - ERR("No node to delete."); - return; - } - - count = (int)(uintptr_t)eina_hash_find(pd->nodes, &node); - - if (count == 1) - eina_hash_del(pd->nodes, &node, NULL); - else - eina_hash_set(pd->nodes, &node, (const void *)(uintptr_t)(count - 1)); -} - - -EAPI Evas_Canvas3D_Light * -evas_canvas3d_light_add(Evas *e) -{ - MAGIC_CHECK(e, Evas, MAGIC_EVAS); - return NULL; - MAGIC_CHECK_END(); - return efl_add(MY_CLASS, e); -} - -EOLIAN static Eo * -_evas_canvas3d_light_efl_object_constructor(Eo *obj, Evas_Canvas3D_Light_Data *pd) -{ - obj = efl_constructor(efl_super(obj, MY_CLASS)); - evas_canvas3d_object_type_set(obj, EVAS_CANVAS3D_OBJECT_TYPE_LIGHT); - evas_color_set(&pd->ambient, 0.0, 0.0, 0.0, 1.0); - evas_color_set(&pd->diffuse, 1.0, 1.0, 1.0, 1.0); - evas_color_set(&pd->specular, 1.0, 1.0, 1.0, 1.0); - - pd->spot_exp = 0.0; - pd->spot_cutoff = 180.0; - pd->spot_cutoff_cos = -1.0; - - pd->atten_const = 1.0; - pd->atten_linear = 0.0; - pd->atten_quad = 0.0; - - return obj; -} - -EOLIAN static void -_evas_canvas3d_light_efl_object_destructor(Eo *obj, Evas_Canvas3D_Light_Data *pd) -{ - Eina_Iterator *it = NULL; - void *data = NULL; - Evas_Canvas3D_Node_Data *node = NULL; - - if (pd->nodes) - { - it = eina_hash_iterator_key_new(pd->nodes); - while (eina_iterator_next(it, &data)) - { - node = efl_data_scope_get(data, EVAS_CANVAS3D_NODE_CLASS); - node->data.light.light = NULL; - } - - eina_hash_free(pd->nodes); - } - - efl_destructor(efl_super(obj, MY_CLASS)); -} - - -EOLIAN static void -_evas_canvas3d_light_directional_set(Eo *obj, Evas_Canvas3D_Light_Data *pd, Eina_Bool directional) -{ - if (pd->directional != directional) - { - pd->directional = directional; - evas_canvas3d_object_change(obj, EVAS_CANVAS3D_STATE_ANY, NULL); - } -} - -EOLIAN static Eina_Bool -_evas_canvas3d_light_directional_get(const Eo *obj EINA_UNUSED, Evas_Canvas3D_Light_Data *pd) -{ - return pd->directional; -} - -EOLIAN static void -_evas_canvas3d_light_ambient_set(Eo *obj, Evas_Canvas3D_Light_Data *pd, Evas_Real r, Evas_Real g, Evas_Real b, Evas_Real a) -{ - pd->ambient.r = r; - pd->ambient.g = g; - pd->ambient.b = b; - pd->ambient.a = a; - - evas_canvas3d_object_change(obj, EVAS_CANVAS3D_STATE_LIGHT_AMBIENT, NULL); -} - -EOLIAN static void -_evas_canvas3d_light_ambient_get(const Eo *obj EINA_UNUSED, Evas_Canvas3D_Light_Data *pd, Evas_Real *r, Evas_Real *g, Evas_Real *b, Evas_Real *a) -{ - if (r) *r = pd->ambient.r; - if (g) *g = pd->ambient.g; - if (b) *b = pd->ambient.b; - if (a) *a = pd->ambient.a; -} - -EOLIAN static void -_evas_canvas3d_light_diffuse_set(Eo *obj, Evas_Canvas3D_Light_Data *pd, Evas_Real r, Evas_Real g, Evas_Real b, Evas_Real a) -{ - pd->diffuse.r = r; - pd->diffuse.g = g; - pd->diffuse.b = b; - pd->diffuse.a = a; - - evas_canvas3d_object_change(obj, EVAS_CANVAS3D_STATE_LIGHT_DIFFUSE, NULL); -} - -EOLIAN static void -_evas_canvas3d_light_diffuse_get(const Eo *obj EINA_UNUSED, Evas_Canvas3D_Light_Data *pd, Evas_Real *r, Evas_Real *g, Evas_Real *b, Evas_Real *a) -{ - if (r) *r = pd->diffuse.r; - if (g) *g = pd->diffuse.g; - if (b) *b = pd->diffuse.b; - if (a) *a = pd->diffuse.a; -} - -EOLIAN static void -_evas_canvas3d_light_specular_set(Eo *obj, Evas_Canvas3D_Light_Data *pd, Evas_Real r, Evas_Real g, Evas_Real b, Evas_Real a) -{ - pd->specular.r = r; - pd->specular.g = g; - pd->specular.b = b; - pd->specular.a = a; - - evas_canvas3d_object_change(obj, EVAS_CANVAS3D_STATE_LIGHT_SPECULAR, NULL); -} - -EOLIAN static void -_evas_canvas3d_light_specular_get(const Eo *obj EINA_UNUSED, Evas_Canvas3D_Light_Data *pd, Evas_Real *r, Evas_Real *g, Evas_Real *b, Evas_Real *a) -{ - if (r) *r = pd->specular.r; - if (g) *g = pd->specular.g; - if (b) *b = pd->specular.b; - if (a) *a = pd->specular.a; -} - -EOLIAN static void -_evas_canvas3d_light_spot_exponent_set(Eo *obj, Evas_Canvas3D_Light_Data *pd, Evas_Real exponent) -{ - pd->spot_exp = exponent; - evas_canvas3d_object_change(obj, EVAS_CANVAS3D_STATE_LIGHT_SPOT_EXP, NULL); -} - -EOLIAN static Evas_Real -_evas_canvas3d_light_spot_exponent_get(const Eo *obj EINA_UNUSED, Evas_Canvas3D_Light_Data *pd) -{ - return pd->spot_exp; -} - -EOLIAN static void -_evas_canvas3d_light_spot_cutoff_set(Eo *obj, Evas_Canvas3D_Light_Data *pd, Evas_Real cutoff) -{ - pd->spot_cutoff = cutoff; - pd->spot_cutoff_cos = cos(cutoff * M_PI / 180.0); - evas_canvas3d_object_change(obj, EVAS_CANVAS3D_STATE_LIGHT_SPOT_CUTOFF, NULL); -} - -EOLIAN static Evas_Real -_evas_canvas3d_light_spot_cutoff_get(const Eo *obj EINA_UNUSED, Evas_Canvas3D_Light_Data *pd) -{ - return pd->spot_cutoff; -} - -EOLIAN static void -_evas_canvas3d_light_attenuation_set(Eo *obj, Evas_Canvas3D_Light_Data *pd, Evas_Real constant, Evas_Real linear, Evas_Real quadratic) -{ - pd->atten_const = constant; - pd->atten_linear = linear; - pd->atten_quad = quadratic; - evas_canvas3d_object_change(obj, EVAS_CANVAS3D_STATE_LIGHT_ATTENUATION, NULL); -} - -EOLIAN static void -_evas_canvas3d_light_attenuation_get(const Eo *obj EINA_UNUSED, Evas_Canvas3D_Light_Data *pd, Evas_Real *constant, Evas_Real *linear, Evas_Real *quadratic) -{ - if (constant) *constant = pd->atten_const; - if (linear) *linear = pd->atten_linear; - if (quadratic) *quadratic = pd->atten_quad; -} - -EOLIAN static void -_evas_canvas3d_light_attenuation_enable_set(Eo *obj, Evas_Canvas3D_Light_Data *pd, Eina_Bool enable) -{ - if (pd->enable_attenuation != enable) - { - pd->enable_attenuation = enable; - evas_canvas3d_object_change(obj, EVAS_CANVAS3D_STATE_LIGHT_ATTENUATION, NULL); - } -} - -EOLIAN static Eina_Bool -_evas_canvas3d_light_attenuation_enable_get(const Eo *obj EINA_UNUSED, Evas_Canvas3D_Light_Data *pd) -{ - return pd->enable_attenuation; -} - -EOLIAN static void -_evas_canvas3d_light_projection_matrix_set(Eo *obj, Evas_Canvas3D_Light_Data *pd, - const Evas_Real *matrix) -{ - eina_matrix4_array_set(&pd->projection, matrix); - evas_canvas3d_object_change(obj, EVAS_CANVAS3D_STATE_LIGHT_PROJECTION, NULL); -} - -EOLIAN static void -_evas_canvas3d_light_projection_matrix_get(const Eo *obj EINA_UNUSED, - Evas_Canvas3D_Light_Data *pd, - Evas_Real *matrix) -{ - memcpy(matrix, &pd->projection.xx, sizeof(Evas_Real) * 16); -} - -EOLIAN static void -_evas_canvas3d_light_projection_perspective_set(Eo *obj, Evas_Canvas3D_Light_Data *pd, - Evas_Real fovy, Evas_Real aspect, - Evas_Real dnear, Evas_Real dfar) -{ - Evas_Real xmax; - Evas_Real ymax; - - ymax = dnear * (Evas_Real)tan((double)fovy * M_PI / 360.0); - xmax = ymax * aspect; - - evas_mat4_frustum_set(&pd->projection, -xmax, xmax, -ymax, ymax, dnear, dfar); - evas_canvas3d_object_change(obj, EVAS_CANVAS3D_STATE_LIGHT_PROJECTION, NULL); -} - -EOLIAN static void -_evas_canvas3d_light_projection_frustum_set(Eo *obj, Evas_Canvas3D_Light_Data *pd, - Evas_Real left, Evas_Real right, - Evas_Real bottom, Evas_Real top, - Evas_Real dnear, Evas_Real dfar) -{ - evas_mat4_frustum_set(&pd->projection, left, right, bottom, top, dnear, dfar); - evas_canvas3d_object_change(obj, EVAS_CANVAS3D_STATE_LIGHT_PROJECTION, NULL); -} - -EOLIAN static void -_evas_canvas3d_light_projection_ortho_set(Eo *obj, Evas_Canvas3D_Light_Data *pd, - Evas_Real left, Evas_Real right, - Evas_Real bottom, Evas_Real top, - Evas_Real dnear, Evas_Real dfar) -{ - eina_matrix4_ortho_set(&pd->projection, left, right, bottom, top, dnear, dfar); - evas_canvas3d_object_change(obj, EVAS_CANVAS3D_STATE_LIGHT_PROJECTION, NULL); -} - - -#include "canvas/evas_canvas3d_light.eo.c" diff --git a/src/lib/evas/canvas/evas_canvas3d_light.eo b/src/lib/evas/canvas/evas_canvas3d_light.eo deleted file mode 100644 index f15a088f17..0000000000 --- a/src/lib/evas/canvas/evas_canvas3d_light.eo +++ /dev/null @@ -1,249 +0,0 @@ -import evas_canvas3d_types; - -class @beta Evas.Canvas3D.Light extends Evas.Canvas3D.Object -{ - [[Evas 3D canvas light class]] - - data: Evas_Canvas3D_Light_Data; - - methods { - @property directional { - [[The directional flag of the given light. - - Directional light is a type of light which is infinitely far away with no - attenuation. The light direction is determined by the containing node's - forward vector (negative Z-axis). - - By default, directional is not enabled. - - \@ref evas_canvas3d_node_look_at_set]] - set { - } - get { - } - values { - directional: bool; [[Whether the light is directional ($true), or not ($false).]] - } - } - - @property spot_exponent { - [[The spot exponent of the given light. - - Higher spot exponent means intensity at the center of the cone is relatively - stronger. Zero exponent means the light intensity is evenly distributed. The - spot exponent has no effect when the light is not spot light (spot cutoff - angle is less than 180 degree). - - Default spot exponent is 0. - - See also @.spot_cutoff.set]] - set { - } - get { - } - values { - exponent: Evas.Real; [[Spot exponent value.]] - } - } - - @property spot_cutoff { - [[The spot cutoff angle of the given light. - - Only angle less than 180 degree will make it spot light, so that other spot - light attribute will take effect. - - Default spot cutoff angle is 180.]] - set { - } - get { - } - values { - cutoff: Evas.Real; [[Cutoff angle in degree..]] - } - } - - @property attenuation_enable { - [[The attenuation enable flag of the given light. - - By default, light attenuation is not enabled. - - See also @.attenuation_set]] - set { - } - get { - } - values { - enable: bool; [[Whether to enable attenuation ($true), or not ($false)..]] - } - } - - ambient_set { - [[Set the ambient color of the given light. - - Default ambient color is (0.0, 0.0, 0.0, 1.0).]] - params { - @in r: Evas.Real; [[Red component of the ambient color between [0.0, 1.0].]] - @in g: Evas.Real; [[Green component of the ambient color between [0.0, 1.0].]] - @in b: Evas.Real; [[Blue component of the ambient color between [0.0, 1.0].]] - @in a: Evas.Real; [[Alpha component of the ambient color between [0.0, 1.0].]] - } - } - ambient_get @const { - [[Get the ambient color of the given light. - - See also @.ambient_set]] - params { - @out r: Evas.Real; [[Red component of the ambient color between [0.0, 1.0].]] - @out g: Evas.Real; [[Green component of the ambient color between [0.0, 1.0].]] - @out b: Evas.Real; [[Blue component of the ambient color between [0.0, 1.0].]] - @out a: Evas.Real; [[Alpha component of the ambient color between [0.0, 1.0].]] - } - } - - diffuse_set { - [[Set the diffuse color of the given light. - - Default diffuse color is (1.0, 1.0, 1.0, 1.0).]] - params { - @in r: Evas.Real; [[Red component of the diffuse color between [0.0, 1.0].]] - @in g: Evas.Real; [[Green component of the diffuse color between [0.0, 1.0].]] - @in b: Evas.Real; [[Blue component of the diffuse color between [0.0, 1.0].]] - @in a: Evas.Real; [[Alpha component of the diffuse color between [0.0, 1.0].]] - } - } - diffuse_get @const { - [[Get the diffuse color of the given light. - - See also @.diffuse_set]] - params { - @out r: Evas.Real; [[Red component of the diffuse color between [0.0, 1.0].]] - @out g: Evas.Real; [[Green component of the diffuse color between [0.0, 1.0].]] - @out b: Evas.Real; [[Blue component of the diffuse color between [0.0, 1.0].]] - @out a: Evas.Real; [[Alpha component of the diffuse color between [0.0, 1.0].]] - } - } - - specular_set { - [[Set the specular color of the given light. - - Default specular color is (1.0, 1.0, 1.0, 1.0).]] - params { - @in r: Evas.Real; [[Red component of the specular color between [0.0, 1.0].]] - @in g: Evas.Real; [[Green component of the specular color between [0.0, 1.0].]] - @in b: Evas.Real; [[Blue component of the specular color between [0.0, 1.0].]] - @in a: Evas.Real; [[Alpha component of the specular color between [0.0, 1.0].]] - } - } - specular_get @const { - [[Get the specular color of the given light. - - See also @.specular_set]] - params { - @out r: Evas.Real; [[Red component of the specular color between [0.0, 1.0].]] - @out g: Evas.Real; [[Green component of the specular color between [0.0, 1.0].]] - @out b: Evas.Real; [[Blue component of the specular color between [0.0, 1.0].]] - @out a: Evas.Real; [[Alpha component of the specular color between [0.0, 1.0].]] - } - } - - attenuation_set { - [[Set the attenuation of the given light. - - Light attenuation has no effect with directional light. And the attenuation - should be enabled first to take effect. The attenuation factor is calculated - as follows. - - atten = 1.0 / constant + linear * distance + quadratic * distance * distance - - Default attenuation is constant = 1.0, linear = 0.0, quadratic = 0.0. - - See also @.attenuation_enable.set]] - params { - @in constant: Evas.Real; [[Constant attenuation term..]] - @in linear: Evas.Real; [[Linear attenuation term..]] - @in quadratic: Evas.Real; [[Quadratic attenuation term..]] - } - } - - attenuation_get @const { - [[Get the attenuation of the given light. - - See also @.attenuation_set]] - params { - @out constant: Evas.Real; [[Constant attenuation term..]] - @out linear: Evas.Real; [[Linear attenuation term..]] - @out quadratic: Evas.Real; [[Quadratic attenuation term..]] - } - } - - projection_matrix_set { - [[Set the projection matrix of the given light source. - - Default projection matrix is identity matrix. - - See also @.projection_perspective_set, @.projection_ortho_set and @.projection_frustum_set]] - params { - @in matrix: ptr(const(Evas.Real)); [[Projection Matrix. Pointer to the array of 16 Evas.Real values in column major order.]] - } - } - - projection_matrix_get @const { - [[Get the projection matrix of the given light source. - - See also @.projection_matrix_set]] - params { - @out matrix: Evas.Real; [[Projection Matrix]] - } - } - - projection_perspective_set { - [[Set the projection matrix of the given light source with perspective projection. - - See also @.projection_matrix_set]] - - params { - fovy: Evas.Real; [[Field of view angle in Y direction.]] - aspect: Evas.Real; [[Aspect ratio.]] - dnear: Evas.Real; [[Distance to near clipping plane.]] - dfar: Evas.Real; [[Distance to far clipping plane.]] - } - } - - projection_frustum_set { - [[Set the projection matrix of the given light source with frustum projection. - - @Evas.Canvas3D.Light.projection_matrix_set]] - params { - left: Evas.Real; [[Left X coordinate of the near clipping plane.]] - right: Evas.Real; [[Right X coordinate of the near clipping plane.]] - bottom: Evas.Real; [[Bottom Y coordinate of the near clipping plane.]] - top: Evas.Real; [[Top Y coordinate of the near clipping plane]] - dnear: Evas.Real; [[Distance to near clipping plane.]] - dfar: Evas.Real; [[Distance to far clipping plane.]] - } - } - projection_ortho_set { - [[Set the projection matrix of the given light source with orthogonal projection. - - See also @.projection_matrix_set]] - params { - left: Evas.Real; [[Left X coordinate of the near clipping plane.]] - right: Evas.Real; [[Right X coordinate of the near clipping plane.]] - bottom: Evas.Real; [[Bottom Y coordinate of the near clipping plane.]] - top: Evas.Real; [[Top Y coordinate of the near clipping plane]] - dnear: Evas.Real; [[Distance to near clipping plane.]] - dfar: Evas.Real; [[Distance to far clipping plane.]] - } - } - } - - implements { - Efl.Object.constructor; - Efl.Object.destructor; - Evas.Canvas3D.Object.update_notify; - Evas.Canvas3D.Object.change_notify; - @empty Evas.Canvas3D.Object.callback_register; - @empty Evas.Canvas3D.Object.callback_unregister; - } - -} diff --git a/src/lib/evas/canvas/evas_canvas3d_material.c b/src/lib/evas/canvas/evas_canvas3d_material.c deleted file mode 100644 index 48f6ce1e5a..0000000000 --- a/src/lib/evas/canvas/evas_canvas3d_material.c +++ /dev/null @@ -1,206 +0,0 @@ -#include "evas_common_private.h" -#include "evas_private.h" - -#define MY_CLASS EVAS_CANVAS3D_MATERIAL_CLASS - -static Eina_Bool -_material_mesh_change_notify(const Eina_Hash *hash EINA_UNUSED, const void *key, - void *data EINA_UNUSED, void *fdata) -{ - Evas_Canvas3D_Mesh *m = *(Evas_Canvas3D_Mesh **)key; - evas_canvas3d_object_change(m, EVAS_CANVAS3D_STATE_MESH_MATERIAL, (Evas_Canvas3D_Object *)fdata); - return EINA_TRUE; -} - -EOLIAN static void -_evas_canvas3d_material_evas_canvas3d_object_change_notify(Eo *obj, Evas_Canvas3D_Material_Data *pd, Evas_Canvas3D_State state EINA_UNUSED, Evas_Canvas3D_Object *ref EINA_UNUSED) -{ - if (pd->meshes) - eina_hash_foreach(pd->meshes, _material_mesh_change_notify, obj); -} - -EOLIAN static void -_evas_canvas3d_material_evas_canvas3d_object_update_notify(Eo *obj EINA_UNUSED, Evas_Canvas3D_Material_Data *pd) -{ - int i; - for (i = 0; i < EVAS_CANVAS3D_MATERIAL_ATTRIB_COUNT; i++) - { - if (pd->attribs[i].enable) - { - if (pd->attribs[i].texture) - { - evas_canvas3d_object_update(pd->attribs[i].texture); - } - } - } -} - -void -evas_canvas3d_material_mesh_add(Evas_Canvas3D_Material *material, Evas_Canvas3D_Mesh *mesh) -{ - int count = 0; - Evas_Canvas3D_Material_Data *pd = efl_data_scope_get(material, MY_CLASS); - - if (pd->meshes == NULL) - { - pd->meshes = eina_hash_pointer_new(NULL); - - if (pd->meshes == NULL) - { - ERR("Failed to create hash table."); - return; - } - } - else - count = (int)(uintptr_t)eina_hash_find(pd->meshes, &mesh); - - eina_hash_set(pd->meshes, &mesh, (const void *)(uintptr_t)(count + 1)); -} - -void -evas_canvas3d_material_mesh_del(Evas_Canvas3D_Material *material, Evas_Canvas3D_Mesh *mesh) -{ - int count = 0; - Evas_Canvas3D_Material_Data *pd = efl_data_scope_get(material, MY_CLASS); - - if (pd->meshes == NULL) - { - ERR("No mesh to delete."); - return; - } - - count = (int)(uintptr_t)eina_hash_find(pd->meshes, &mesh); - - if (count == 1) - eina_hash_del(pd->meshes, &mesh, NULL); - else - eina_hash_set(pd->meshes, &mesh, (const void *)(uintptr_t)(count - 1)); -} - - -EAPI Evas_Canvas3D_Material * -evas_canvas3d_material_add(Evas *e) -{ - MAGIC_CHECK(e, Evas, MAGIC_EVAS); - return NULL; - MAGIC_CHECK_END(); - return efl_add(MY_CLASS, e); -} - -EOLIAN static Eo * -_evas_canvas3d_material_efl_object_constructor(Eo *obj EINA_UNUSED, Evas_Canvas3D_Material_Data *pd) -{ - obj = efl_constructor(efl_super(obj, MY_CLASS)); - evas_canvas3d_object_type_set(obj, EVAS_CANVAS3D_OBJECT_TYPE_MATERIAL); - - evas_color_set(&pd->attribs[EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT].color, 0.2, 0.2, 0.2, 1.0); - evas_color_set(&pd->attribs[EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE].color, 0.8, 0.8, 0.8, 1.0); - evas_color_set(&pd->attribs[EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR].color, 1.0, 1.0, 1.0, 1.0); - evas_color_set(&pd->attribs[EVAS_CANVAS3D_MATERIAL_ATTRIB_EMISSION].color, 0.0, 0.0, 0.0, 1.0); - pd->shininess = 150.0; - - return obj; -} - -EOLIAN static void -_evas_canvas3d_material_efl_object_destructor(Eo *obj, Evas_Canvas3D_Material_Data *pd) -{ - int i = 0; - Eina_Iterator *it = NULL; - void *data = NULL; - Evas_Canvas3D_Mesh_Data *mesh = NULL; - Eina_List *l = NULL; - Evas_Canvas3D_Mesh_Frame *f = NULL; - - if (pd->meshes) - { - it = eina_hash_iterator_key_new(pd->meshes); - while (eina_iterator_next(it, &data)) - { - mesh = efl_data_scope_get(data, EVAS_CANVAS3D_MESH_CLASS); - if (mesh->frames) - { - EINA_LIST_FOREACH(mesh->frames, l, f) - f->material = NULL; - } - } - eina_iterator_free(it); - eina_hash_free(pd->meshes); - } - - for (i = 0; i < EVAS_CANVAS3D_MATERIAL_ATTRIB_COUNT; i++) - { - if (pd->attribs[i].texture) - { - evas_canvas3d_texture_material_del(pd->attribs[i].texture, obj); - } - } - efl_destructor(efl_super(obj, MY_CLASS)); -} - -EOLIAN static void -_evas_canvas3d_material_enable_set(Eo *obj EINA_UNUSED, Evas_Canvas3D_Material_Data *pd, Evas_Canvas3D_Material_Attrib attrib, Eina_Bool enable) -{ - pd->attribs[attrib].enable = enable; -} - -EOLIAN static Eina_Bool -_evas_canvas3d_material_enable_get(const Eo *obj EINA_UNUSED, Evas_Canvas3D_Material_Data *pd, Evas_Canvas3D_Material_Attrib attrib) -{ - return pd->attribs[attrib].enable; -} - -EOLIAN static void -_evas_canvas3d_material_color_set(Eo *obj, Evas_Canvas3D_Material_Data *pd, Evas_Canvas3D_Material_Attrib attrib, Evas_Real r, Evas_Real g, Evas_Real b, Evas_Real a) -{ - evas_color_set(&pd->attribs[attrib].color, r, g, b, a); - evas_canvas3d_object_change(obj, EVAS_CANVAS3D_STATE_MATERIAL_COLOR, NULL); -} - -EOLIAN static void -_evas_canvas3d_material_color_get(const Eo *obj EINA_UNUSED, Evas_Canvas3D_Material_Data *pd, Evas_Canvas3D_Material_Attrib attrib, Evas_Real *r, Evas_Real *g, Evas_Real *b, Evas_Real *a) -{ - if (r) *r = pd->attribs[attrib].color.r; - if (g) *g = pd->attribs[attrib].color.g; - if (b) *b = pd->attribs[attrib].color.b; - if (a) *a = pd->attribs[attrib].color.a; -} - -EOLIAN static void -_evas_canvas3d_material_shininess_set(Eo *obj EINA_UNUSED, Evas_Canvas3D_Material_Data *pd, Evas_Real shininess) -{ - pd->shininess = shininess; -} - -EOLIAN static Evas_Real -_evas_canvas3d_material_shininess_get(const Eo *obj EINA_UNUSED, Evas_Canvas3D_Material_Data *pd) -{ - return pd->shininess; -} - -EOLIAN static void -_evas_canvas3d_material_texture_set(Eo *obj, Evas_Canvas3D_Material_Data *pd, Evas_Canvas3D_Material_Attrib attrib, Evas_Canvas3D_Texture *texture) -{ - if (pd->attribs[attrib].texture != texture) - { - if (pd->attribs[attrib].texture) - { - evas_canvas3d_texture_material_del(pd->attribs[attrib].texture, obj); - efl_unref(pd->attribs[attrib].texture); - } - - pd->attribs[attrib].texture = texture; - evas_canvas3d_texture_material_add(texture, obj); - efl_ref(texture); - } - - evas_canvas3d_object_change(obj, EVAS_CANVAS3D_STATE_MATERIAL_TEXTURE, NULL); -} - -EOLIAN static Evas_Canvas3D_Texture * -_evas_canvas3d_material_texture_get(const Eo *obj EINA_UNUSED, Evas_Canvas3D_Material_Data *pd, Evas_Canvas3D_Material_Attrib attrib) -{ - return pd->attribs[attrib].texture; -} - -#include "canvas/evas_canvas3d_material.eo.c" diff --git a/src/lib/evas/canvas/evas_canvas3d_material.eo b/src/lib/evas/canvas/evas_canvas3d_material.eo deleted file mode 100644 index 3576de1dcc..0000000000 --- a/src/lib/evas/canvas/evas_canvas3d_material.eo +++ /dev/null @@ -1,116 +0,0 @@ -class @beta Evas.Canvas3D.Material extends Evas.Canvas3D.Object -{ - [[Evas 3D canvas material class]] - data: Evas_Canvas3D_Material_Data; - methods { - color_set { - [[Set the material attribute color of the given material. - - Material color is used also when texture map is enabled. The colors - will be modulated (multiplied). To control the color contribution - of a material attribute, use gray color. Setting color value for - normal attribute has no effect. - - Default color is as follows. - - Ambient : (0.2, 0.2, 0.2, 1.0) - Diffuse : (0.8, 0.8, 0.8, 1.0) - Specular : (1.0, 1.0, 1.0, 1.0) - Emission : (0.0, 0.0, 0.0, 1.0) - Normal : Not used - ]] - - params { - @in attrib: Evas.Canvas3D.Material_Attrib; [[Material attribute ID.]] - @in r: Evas.Real; [[Red component of the color.]] - @in g: Evas.Real; [[Green component of the color.]] - @in b: Evas.Real; [[Blue component of the color.]] - @in a: Evas.Real; [[Alpha component of the color.]] - } - } - - color_get @const { - [[Get the material attribute color of the given material. - - See also @.color_set. - ]] - params { - @in attrib: Evas.Canvas3D.Material_Attrib; [[Material attribute ID.]] - @out r: Evas.Real; [[Pointer to receive red component of the color.]] - @out g: Evas.Real; [[Pointer to receive green component of the color.]] - @out b: Evas.Real; [[Pointer to receive blue component of the color.]] - @out a: Evas.Real; [[Pointer to receive alpha component of the color.]] - } - } - - @property enable { - [[The material attribute enable flag of the given material. - - You might want to disable some material reflection contribution. - For example, Emission attribute is rarely used. Disabling unused - attributes might help the shading less complex so that can get - speed up. - - By default, diffuse and specular is enabled. - ]] - set { - } - get { - } - keys { - attrib: Evas.Canvas3D.Material_Attrib; [[Material attribute ID.]] - } - values { - enable: bool; [[Whether to enable the attribute or not.]] - } - } - - @property shininess { - [[The shininess of the given material. - - Shininess is only used when specular attribute is enabled. Higher shininess - value will make the object more shiny. - - Default shininess value is 150.0. - - See also @.enable.set. - ]] - set { - } - get { - } - values { - shininess: Evas.Real; [[Shininess value.]] - } - } - - @property texture { - [[The texture of the given material. - - You have to enable the desired attribute first. - - See also @.enable.set. - ]] - set { - } - get { - } - - keys { - attrib: Evas.Canvas3D.Material_Attrib; [[Material attribute ID.]] - } - values { - texture: Evas.Canvas3D.Texture; [[The texture set to the attribute.]] - } - } - } - implements { - Efl.Object.constructor; - Efl.Object.destructor; - Evas.Canvas3D.Object.update_notify; - Evas.Canvas3D.Object.change_notify; - @empty Evas.Canvas3D.Object.callback_register; - @empty Evas.Canvas3D.Object.callback_unregister; - } - -} diff --git a/src/lib/evas/canvas/evas_canvas3d_mesh.c b/src/lib/evas/canvas/evas_canvas3d_mesh.c deleted file mode 100644 index 0bea10eb21..0000000000 --- a/src/lib/evas/canvas/evas_canvas3d_mesh.c +++ /dev/null @@ -1,1172 +0,0 @@ -#include "evas_common_private.h" -#include "evas_private.h" - -#define MY_CLASS EVAS_CANVAS3D_MESH_CLASS - -static Evas_Canvas3D_Mesh_Frame * -evas_canvas3d_mesh_frame_new(Evas_Canvas3D_Mesh *mesh) -{ - Evas_Canvas3D_Mesh_Frame *frame = NULL; - frame = (Evas_Canvas3D_Mesh_Frame *)calloc(1, sizeof(Evas_Canvas3D_Mesh_Frame)); - - if (frame == NULL) - { - ERR("Failed to allocate memory."); - return NULL; - } - - frame->mesh = mesh; - evas_box3_empty_set(&frame->aabb); - - return frame; -} - -static void -evas_canvas3d_mesh_frame_free(Evas_Canvas3D_Mesh_Frame *frame) -{ - int i; - - if (frame->material) - evas_canvas3d_material_mesh_del(frame->material, frame->mesh); - - for (i = 0; i < EVAS_CANVAS3D_VERTEX_ATTRIB_COUNT; i++) - { - if (frame->vertices[i].owns_data) - free(frame->vertices[i].data); - } - - free(frame); -} - -Evas_Canvas3D_Mesh_Frame * -evas_canvas3d_mesh_frame_find(Evas_Canvas3D_Mesh_Data *pd, int frame) -{ - Eina_List *l; - Evas_Canvas3D_Mesh_Frame *f; - - EINA_LIST_FOREACH(pd->frames, l, f) - { - if (f->frame == frame) - return f; - } - - return NULL; -} - -Eina_Bool -evas_canvas3d_mesh_aabb_add_to_frame(Evas_Canvas3D_Mesh_Data *pd, int frame, int stride) -{ - Evas_Canvas3D_Mesh_Frame *curframe = evas_canvas3d_mesh_frame_find(pd, frame); - int i = 0, j = 0, step = 0, size = 0, max; - float vxmin, vymin, vzmin, vxmax, vymax, vzmax; - float *minmaxdata = NULL; - Evas_Box3 box3; - - if (stride <= 0) return EINA_FALSE; - - if (!curframe) - { - ERR("Invalid frame %i.", frame); - return EINA_FALSE; - } - - step = curframe->vertices[EVAS_CANVAS3D_VERTEX_ATTRIB_POSITION].element_count; - size = curframe->vertices[EVAS_CANVAS3D_VERTEX_ATTRIB_POSITION].size; - minmaxdata = (float *)curframe->vertices[EVAS_CANVAS3D_VERTEX_ATTRIB_POSITION].data; - - if (!minmaxdata) - { - ERR("Invalid vertex data."); - return EINA_FALSE; - } - - vxmax = vxmin = minmaxdata[0]; - vymax = vymin = minmaxdata[1]; - vzmax = vzmin = minmaxdata[2]; - j += step; - - max = size / stride; - for (i = 1; i < max; ++i) - { - vxmin > minmaxdata[j] ? vxmin = minmaxdata[j] : 0; - vxmax < minmaxdata[j] ? vxmax = minmaxdata[j] : 0; - vymin > minmaxdata[j + 1] ? vymin = minmaxdata[j + 1] : 0; - vymax < minmaxdata[j + 1] ? vymax = minmaxdata[j + 1] : 0; - vzmin > minmaxdata[j + 2] ? vzmin = minmaxdata[j + 2] : 0; - vzmax < minmaxdata[j + 2] ? vzmax = minmaxdata[j + 2] : 0; - j += step; - } - - evas_box3_empty_set(&box3); - evas_box3_set(&box3, vxmin, vymin, vzmin, vxmax, vymax, vzmax); - curframe->aabb = box3; - return EINA_TRUE; -} - -static inline void -_mesh_init(Evas_Canvas3D_Mesh_Data *pd) -{ - pd->vertex_count = 0; - pd->frame_count = 0; - pd->frames = NULL; - - pd->index_format = EVAS_CANVAS3D_INDEX_FORMAT_NONE; - pd->index_count = 0; - pd->indices = NULL; - pd->owns_indices = EINA_FALSE; - pd->assembly = EVAS_CANVAS3D_VERTEX_ASSEMBLY_TRIANGLES; - - pd->nodes = NULL; - pd->blend_sfactor = EVAS_CANVAS3D_BLEND_FUNC_ONE; - pd->blend_dfactor = EVAS_CANVAS3D_BLEND_FUNC_ZERO; - pd->blending = EINA_FALSE; - - pd->alpha_comparison = EVAS_CANVAS3D_COMPARISON_ALWAYS; - pd->alpha_ref_value = 0.0f; - pd->alpha_test_enabled = EINA_FALSE; - - pd->color_pick_key.r = 0.0; - pd->color_pick_key.g = 0.0; - pd->color_pick_key.b = 0.0; - pd->color_pick_enabled = EINA_FALSE; - - pd->shadows_edges_filtering_level = 4; - pd->shadows_edges_size = 300.0; - pd->shadows_constant_bias = 0.00015; - pd->near_lod_boundary = 0.0; - pd->far_lod_boundary = 0.0; -} - -static inline void -_mesh_fini(Evas_Canvas3D_Mesh_Data *pd) -{ - Eina_List *l; - Evas_Canvas3D_Mesh_Frame *f; - - if (pd->frames) - { - EINA_LIST_FOREACH(pd->frames, l, f) - { - evas_canvas3d_mesh_frame_free(f); - } - - eina_list_free(pd->frames); - } - - if (pd->indices && pd->owns_indices) - { - free(pd->indices); - pd->indices = NULL; - } - - if (pd->nodes) - eina_hash_free(pd->nodes); -} - -static Eina_Bool -_mesh_node_geometry_change_notify(const Eina_Hash *hash EINA_UNUSED, const void *key, - void *data EINA_UNUSED, void *fdata) -{ - Evas_Canvas3D_Node *n = *(Evas_Canvas3D_Node **)key; - evas_canvas3d_object_change(n, EVAS_CANVAS3D_STATE_NODE_MESH_GEOMETRY, (Evas_Canvas3D_Object *)fdata); - return EINA_TRUE; -} - -static Eina_Bool -_mesh_node_material_change_notify(const Eina_Hash *hash EINA_UNUSED, const void *key, - void *data EINA_UNUSED, void *fdata) -{ - Evas_Canvas3D_Node *n = *(Evas_Canvas3D_Node **)key; - evas_canvas3d_object_change(n, EVAS_CANVAS3D_STATE_NODE_MESH_MATERIAL, (Evas_Canvas3D_Object *)fdata); - return EINA_TRUE; -} - -static void -_evas_canvas3d_mesh_evas_canvas3d_object_change_notify(Eo *obj, Evas_Canvas3D_Mesh_Data *pd, Evas_Canvas3D_State state, Evas_Canvas3D_Object *ref EINA_UNUSED) -{ - if (state == EVAS_CANVAS3D_STATE_MESH_MATERIAL) - { - if (pd->nodes) - eina_hash_foreach(pd->nodes, _mesh_node_material_change_notify, obj); - } - else - { - if (pd->nodes) - eina_hash_foreach(pd->nodes, _mesh_node_geometry_change_notify, obj); - } -} - -EOLIAN static void -_evas_canvas3d_mesh_evas_canvas3d_object_update_notify(Eo *obj EINA_UNUSED, Evas_Canvas3D_Mesh_Data *pd) -{ - Eina_List *l; - Evas_Canvas3D_Mesh_Frame *f; - - EINA_LIST_FOREACH(pd->frames, l, f) - { - if (f->material) - { - evas_canvas3d_object_update(f->material); - } - } -} - - -void -evas_canvas3d_mesh_node_add(Evas_Canvas3D_Mesh *mesh, Evas_Canvas3D_Node *node) -{ - int count = 0; - Evas_Canvas3D_Mesh_Data *pd = efl_data_scope_get(mesh, MY_CLASS); - if (pd->nodes == NULL) - { - pd->nodes = eina_hash_pointer_new(NULL); - - if (pd->nodes == NULL) - { - ERR("Failed to create hash table."); - return; - } - } - else - count = (int)(uintptr_t)eina_hash_find(pd->nodes, &node); - - eina_hash_set(pd->nodes, &node, (const void *)(uintptr_t)(count + 1)); -} - -void -evas_canvas3d_mesh_node_del(Evas_Canvas3D_Mesh *mesh, Evas_Canvas3D_Node *node) -{ - int count = 0; - Evas_Canvas3D_Mesh_Data *pd = efl_data_scope_get(mesh, MY_CLASS); - if (pd->nodes == NULL) - { - ERR("No node to delete."); - return; - } - - count = (int)(uintptr_t)eina_hash_find(pd->nodes, &node); - - if (count == 1) - eina_hash_del(pd->nodes, &node, NULL); - else - eina_hash_set(pd->nodes, &node, (const void *)(uintptr_t)(count - 1)); -} - - -EAPI Evas_Canvas3D_Mesh * -evas_canvas3d_mesh_add(Evas *e) -{ - MAGIC_CHECK(e, Evas, MAGIC_EVAS); - return NULL; - MAGIC_CHECK_END(); - return efl_add(MY_CLASS, e); -} - -EOLIAN static Eo * -_evas_canvas3d_mesh_efl_object_constructor(Eo *obj, Evas_Canvas3D_Mesh_Data *pd) -{ - obj = efl_constructor(efl_super(obj, MY_CLASS)); - evas_canvas3d_object_type_set(obj, EVAS_CANVAS3D_OBJECT_TYPE_MESH); - _mesh_init(pd); - - return obj; -} - -EOLIAN static void -_evas_canvas3d_mesh_efl_object_destructor(Eo *obj, Evas_Canvas3D_Mesh_Data *pd) -{ - _mesh_fini(pd); - efl_destructor(efl_super(obj, MY_CLASS)); -} - -EOLIAN static void -_evas_canvas3d_mesh_shader_mode_set(Eo *obj EINA_UNUSED, Evas_Canvas3D_Mesh_Data *pd, Evas_Canvas3D_Shader_Mode mode) -{ - if (pd->shader_mode != mode) - { - pd->shader_mode = mode; - evas_canvas3d_object_change(obj, EVAS_CANVAS3D_STATE_MESH_SHADER_MODE, NULL); - } -} - -EOLIAN static Evas_Canvas3D_Shader_Mode -_evas_canvas3d_mesh_shader_mode_get(const Eo *obj EINA_UNUSED, Evas_Canvas3D_Mesh_Data *pd) -{ - return pd->shader_mode; -} - -EOLIAN static void -_evas_canvas3d_mesh_vertex_count_set(Eo *obj, Evas_Canvas3D_Mesh_Data *pd, unsigned int count) -{ - pd->vertex_count = count; - evas_canvas3d_object_change(obj, EVAS_CANVAS3D_STATE_MESH_VERTEX_COUNT, NULL); -} - -EOLIAN static unsigned int -_evas_canvas3d_mesh_vertex_count_get(const Eo *obj EINA_UNUSED, Evas_Canvas3D_Mesh_Data *pd) -{ - return pd->vertex_count; -} - -EOLIAN static Eina_Bool -_evas_canvas3d_mesh_frame_exist(Eo *obj EINA_UNUSED, Evas_Canvas3D_Mesh_Data *pd, int frame) -{ - Evas_Canvas3D_Mesh_Frame *f = evas_canvas3d_mesh_frame_find(pd, frame); - - if (f) - return EINA_TRUE; - - return EINA_FALSE; -} - -EOLIAN static void -_evas_canvas3d_mesh_frame_add(Eo *obj, Evas_Canvas3D_Mesh_Data *pd, int frame) -{ - Evas_Canvas3D_Mesh_Frame *f = evas_canvas3d_mesh_frame_find(pd, frame); - - if (f != NULL) - { - ERR("Already existing frame."); - return; - } - - f = evas_canvas3d_mesh_frame_new(obj); - - if (f == NULL) - return; - - f->frame = frame; - pd->frames = eina_list_append(pd->frames, f); - evas_canvas3d_object_change(obj, EVAS_CANVAS3D_STATE_MESH_FRAME, NULL); -} - -EOLIAN static void -_evas_canvas3d_mesh_frame_del(Eo *obj, Evas_Canvas3D_Mesh_Data *pd, int frame) -{ - Evas_Canvas3D_Mesh_Frame *f = evas_canvas3d_mesh_frame_find(pd, frame); - - if (f == NULL) - { - ERR("Not existing mesh frame."); - return; - } - - pd->frames = eina_list_remove(pd->frames, f); - evas_canvas3d_mesh_frame_free(f); - evas_canvas3d_object_change(obj, EVAS_CANVAS3D_STATE_MESH_FRAME, NULL); -} - -EOLIAN static void -_evas_canvas3d_mesh_frame_material_set(Eo *obj, Evas_Canvas3D_Mesh_Data *pd, int frame, Evas_Canvas3D_Material *material) -{ - Evas_Canvas3D_Mesh_Frame *f = evas_canvas3d_mesh_frame_find(pd, frame); - - if (f == NULL) - { - ERR("Not existing mesh frame."); - return; - } - - if (f->material == material) - return; - - if (f->material) - { - evas_canvas3d_material_mesh_del(f->material, obj); - efl_unref(f->material); - } - - f->material = material; - efl_ref(material); - evas_canvas3d_object_change(obj, EVAS_CANVAS3D_STATE_MESH_MATERIAL, NULL); - evas_canvas3d_material_mesh_add(material, obj); -} - -EOLIAN static Evas_Canvas3D_Material * -_evas_canvas3d_mesh_frame_material_get(const Eo *obj EINA_UNUSED, Evas_Canvas3D_Mesh_Data *pd, int frame) -{ - Evas_Canvas3D_Mesh_Frame *f = evas_canvas3d_mesh_frame_find(pd, frame); - - if (f == NULL) - { - ERR("Not existing mesh frame."); - return NULL; - } - - return f->material; -} - -EOLIAN static void -_evas_canvas3d_mesh_frame_vertex_data_set(Eo *obj, Evas_Canvas3D_Mesh_Data *pd, int frame, Evas_Canvas3D_Vertex_Attrib attrib, int stride, const void *data) -{ - Evas_Canvas3D_Mesh_Frame *f = evas_canvas3d_mesh_frame_find(pd, frame); - int element_count; - - if (f == NULL) - { - ERR("Not existing mesh frame."); - return; - } - - if (stride < (int)sizeof(float)) - { - ERR("Stride too small"); - return; - } - - if (attrib == EVAS_CANVAS3D_VERTEX_ATTRIB_POSITION) - { - int i = 0, j = 0, size = stride/sizeof(float); - float vxmin, vymin, vzmin, vxmax, vymax, vzmax; - float *minmaxdata = (float *)data; - Evas_Box3 box3; - - element_count = 3; - - if (minmaxdata) - { - vxmax = vxmin = minmaxdata[0]; - vymax = vymin = minmaxdata[1]; - vzmax = vzmin = minmaxdata[2]; - j += size; - - for (i = 1; i < size; ++i) - { - vxmin > minmaxdata[j] ? vxmin = minmaxdata[j] : 0; - vxmax < minmaxdata[j] ? vxmax = minmaxdata[j] : 0; - vymin > minmaxdata[j + 1] ? vymin = minmaxdata[j + 1] : 0; - vymax < minmaxdata[j + 1] ? vymax = minmaxdata[j + 1] : 0; - vzmin > minmaxdata[j + 2] ? vzmin = minmaxdata[j + 2] : 0; - vzmax < minmaxdata[j + 2] ? vzmax = minmaxdata[j + 2] : 0; - j += size; - } - - evas_box3_empty_set(&box3); - evas_box3_set(&box3, vxmin, vymin, vzmin, vxmax, vymax, vzmax); - f->aabb = box3; - } - else - { - ERR("Axis-Aligned Bounding Box wasn't added in frame %d ", frame); - } - } - else if (attrib == EVAS_CANVAS3D_VERTEX_ATTRIB_NORMAL) - { - element_count = 3; - } - else if (attrib == EVAS_CANVAS3D_VERTEX_ATTRIB_TANGENT) - { - element_count = 3; - } - else if (attrib == EVAS_CANVAS3D_VERTEX_ATTRIB_COLOR) - { - element_count = 4; - } - else if (attrib == EVAS_CANVAS3D_VERTEX_ATTRIB_TEXCOORD) - { - element_count = 2; - } - else - { - ERR("Invalid vertex attrib."); - return; - } - - if (f->vertices[attrib].owns_data && f->vertices[attrib].data) - free(f->vertices[attrib].data); - - f->vertices[attrib].size = 0; - f->vertices[attrib].stride = stride; - f->vertices[attrib].data = (void *)data; - f->vertices[attrib].owns_data = EINA_FALSE; - f->vertices[attrib].element_count = element_count; - - evas_canvas3d_object_change(obj, EVAS_CANVAS3D_STATE_MESH_VERTEX_DATA, NULL); -} - -EOLIAN static void -_evas_canvas3d_mesh_frame_vertex_data_copy_set(Eo *obj, Evas_Canvas3D_Mesh_Data *pd, int frame, Evas_Canvas3D_Vertex_Attrib attrib, int stride, const void *data) -{ - Evas_Canvas3D_Mesh_Frame *f = evas_canvas3d_mesh_frame_find(pd, frame); - Evas_Canvas3D_Vertex_Buffer *vb; - int size, element_count; - - if (f == NULL) - { - ERR("Not existing mesh frame."); - return; - } - - if (attrib == EVAS_CANVAS3D_VERTEX_ATTRIB_POSITION) - { - element_count = 3; - } - else if (attrib == EVAS_CANVAS3D_VERTEX_ATTRIB_NORMAL) - { - element_count = 3; - } - else if (attrib == EVAS_CANVAS3D_VERTEX_ATTRIB_TANGENT) - { - element_count = 3; - } - else if (attrib == EVAS_CANVAS3D_VERTEX_ATTRIB_COLOR) - { - element_count = 4; - } - else if (attrib == EVAS_CANVAS3D_VERTEX_ATTRIB_TEXCOORD) - { - element_count = 2; - } - else - { - ERR("Invalid vertex attrib."); - return; - } - - vb = &f->vertices[attrib]; - size = element_count * sizeof(float) * pd->vertex_count; - - if (!vb->owns_data || vb->size < size) - { - if (vb->owns_data && vb->data) - free(vb->data); - - vb->data = malloc(size); - - if (vb->data == NULL) - { - vb->element_count = 0; - vb->size = 0; - vb->stride = 0; - vb->owns_data = EINA_FALSE; - - ERR("Failed to allocate memory."); - return; - } - - vb->size = size; - vb->owns_data = EINA_TRUE; - } - - vb->element_count = element_count; - vb->stride = 0; - - if (data == NULL) - return; - - if (stride == 0 || stride == (int)(element_count * sizeof(float))) - { - memcpy(vb->data, data, size); - } - else - { - int i; - float *dst = (float *)vb->data; - float *src = (float *)data; - - if (element_count == 2) - { - for (i = 0; i vertex_count; i++) - { - *dst++ = src[0]; - *dst++ = src[1]; - - src = (float *)((char *)src + stride); - } - } - else if (element_count == 3) - { - for (i = 0; i vertex_count; i++) - { - *dst++ = src[0]; - *dst++ = src[1]; - *dst++ = src[2]; - - src = (float *)((char *)src + stride); - } - } - else if (element_count == 4) - { - for (i = 0; i vertex_count; i++) - { - *dst++ = src[0]; - *dst++ = src[1]; - *dst++ = src[2]; - *dst++ = src[3]; - - src = (float *)((char *)src + stride); - } - } - } - - if (attrib == EVAS_CANVAS3D_VERTEX_ATTRIB_POSITION && - !evas_canvas3d_mesh_aabb_add_to_frame(pd, frame, stride)) - { - ERR("Axis-Aligned Bounding Box wasn't added in frame %d ", frame); - } - - evas_canvas3d_object_change(obj, EVAS_CANVAS3D_STATE_MESH_VERTEX_DATA, NULL); -} - -EOLIAN static void * -_evas_canvas3d_mesh_frame_vertex_data_map(Eo *obj EINA_UNUSED, Evas_Canvas3D_Mesh_Data *pd, int frame, Evas_Canvas3D_Vertex_Attrib attrib) -{ - Evas_Canvas3D_Mesh_Frame *f = evas_canvas3d_mesh_frame_find(pd, frame); - - if (f == NULL) - { - ERR("Not existing mesh frame."); - return NULL; - } - - if (f->vertices[attrib].mapped) - { - ERR("Try to map already mapped data."); - return NULL; - } - - f->vertices[attrib].mapped = EINA_TRUE; - return f->vertices[attrib].data; -} - -EOLIAN static void -_evas_canvas3d_mesh_frame_vertex_data_unmap(Eo *obj EINA_UNUSED, Evas_Canvas3D_Mesh_Data *pd, int frame, Evas_Canvas3D_Vertex_Attrib attrib) -{ - Evas_Canvas3D_Mesh_Frame *f = evas_canvas3d_mesh_frame_find(pd, frame); - - if (f == NULL) - { - ERR("Not existing mesh frame."); - return; - } - - if (!f->vertices[attrib].mapped) - { - ERR("Try to unmap data which is not mapped yet."); - return; - } - - f->vertices[attrib].mapped = EINA_FALSE; -} - -EOLIAN static int -_evas_canvas3d_mesh_frame_vertex_stride_get(const Eo *obj EINA_UNUSED, Evas_Canvas3D_Mesh_Data *pd, int frame, Evas_Canvas3D_Vertex_Attrib attrib) -{ - Evas_Canvas3D_Mesh_Frame *f = evas_canvas3d_mesh_frame_find(pd, frame); - - if (f == NULL) - { - ERR("Not existing mesh frame."); - return 0; - } - - return f->vertices[attrib].stride; -} - -EOLIAN static void -_evas_canvas3d_mesh_index_data_set(Eo *obj, Evas_Canvas3D_Mesh_Data *pd, Evas_Canvas3D_Index_Format format, int count, const void *indices) -{ - if (pd->owns_indices && pd->indices) - free(pd->indices); - - pd->index_format = format; - pd->index_count = count; - pd->index_size = 0; - pd->indices = (void *)indices; - pd->owns_indices = EINA_FALSE; - - evas_canvas3d_object_change(obj, EVAS_CANVAS3D_STATE_MESH_INDEX_DATA, NULL); -} - -EOLIAN static void -_evas_canvas3d_mesh_index_data_copy_set(Eo *obj EINA_UNUSED, Evas_Canvas3D_Mesh_Data *pd, Evas_Canvas3D_Index_Format format, int count, const void *indices) -{ - int size; - - if (format == EVAS_CANVAS3D_INDEX_FORMAT_UNSIGNED_BYTE) - { - size = count * sizeof(unsigned char); - } - else if (format == EVAS_CANVAS3D_INDEX_FORMAT_UNSIGNED_SHORT) - { - size = count * sizeof(unsigned short); - } - else - { - ERR("Invalid index format."); - return; - } - - if (!pd->owns_indices || pd->index_size < size) - { - if (pd->owns_indices && pd->indices) - free(pd->indices); - - pd->indices = malloc(size); - - if (pd->indices == NULL) - { - ERR("Failed to allocate memory."); - return; - } - - pd->index_size = size; - pd->owns_indices = EINA_TRUE; - } - - pd->index_format = format; - pd->index_count = count; - - if (indices) - memcpy(pd->indices, indices, size); -} - -EOLIAN static Evas_Canvas3D_Index_Format -_evas_canvas3d_mesh_index_format_get(const Eo *obj EINA_UNUSED, Evas_Canvas3D_Mesh_Data *pd) -{ - return pd->index_format; -} - -EOLIAN static int -_evas_canvas3d_mesh_index_count_get(const Eo *obj EINA_UNUSED, Evas_Canvas3D_Mesh_Data *pd) -{ - return pd->index_count; -} - -EOLIAN static void * -_evas_canvas3d_mesh_index_data_map(Eo *obj EINA_UNUSED, Evas_Canvas3D_Mesh_Data *pd) -{ - if (pd->index_mapped) - { - ERR("Try to map already mapped data."); - return NULL; - } - - pd->index_mapped = EINA_TRUE; - return pd->indices; -} - -EOLIAN static void -_evas_canvas3d_mesh_index_data_unmap(Eo *obj EINA_UNUSED, Evas_Canvas3D_Mesh_Data *pd) -{ - if (!pd->index_mapped) - { - ERR("Try to unmap data which is not mapped yet."); - return; - } - - pd->index_mapped = EINA_FALSE; -} - -EOLIAN static void -_evas_canvas3d_mesh_vertex_assembly_set(Eo *obj, Evas_Canvas3D_Mesh_Data *pd, Evas_Canvas3D_Vertex_Assembly assembly) -{ - pd->assembly = assembly; - evas_canvas3d_object_change(obj, EVAS_CANVAS3D_STATE_MESH_VERTEX_ASSEMBLY, NULL); -} - -EOLIAN static Evas_Canvas3D_Vertex_Assembly -_evas_canvas3d_mesh_vertex_assembly_get(const Eo *obj EINA_UNUSED, Evas_Canvas3D_Mesh_Data *pd) -{ - return pd->assembly; -} - -EOLIAN static void -_evas_canvas3d_mesh_fog_color_set(Eo *obj, Evas_Canvas3D_Mesh_Data *pd, Evas_Real r, Evas_Real g, Evas_Real b, Evas_Real a) -{ - evas_color_set(&pd->fog_color, r, g, b, a); - evas_canvas3d_object_change(obj, EVAS_CANVAS3D_STATE_MESH_FOG, NULL); -} - -EOLIAN static void -_evas_canvas3d_mesh_fog_color_get(Eo *obj EINA_UNUSED, Evas_Canvas3D_Mesh_Data *pd, - Evas_Real *r, Evas_Real *g, Evas_Real *b, Evas_Real *a) -{ - if (r) *r = pd->fog_color.r; - if (g) *g = pd->fog_color.g; - if (b) *b = pd->fog_color.b; - if (a) *a = pd->fog_color.a; -} - -EOLIAN static void -_evas_canvas3d_mesh_fog_enable_set(Eo *obj, Evas_Canvas3D_Mesh_Data *pd, Eina_Bool enabled) -{ - pd->fog_enabled = enabled; - evas_canvas3d_object_change(obj, EVAS_CANVAS3D_STATE_MESH_FOG, NULL); -} - -EOLIAN static Eina_Bool -_evas_canvas3d_mesh_fog_enable_get(const Eo *obj EINA_UNUSED, Evas_Canvas3D_Mesh_Data *pd) -{ - return pd->fog_enabled; -} - -EOLIAN static void -_evas_canvas3d_mesh_blending_enable_set(Eo *obj, Evas_Canvas3D_Mesh_Data *pd, Eina_Bool blending) -{ - pd->blending = blending; - evas_canvas3d_object_change(obj, EVAS_CANVAS3D_STATE_MESH_BLENDING, NULL); -} - -EOLIAN static Eina_Bool -_evas_canvas3d_mesh_blending_enable_get(const Eo *obj EINA_UNUSED, Evas_Canvas3D_Mesh_Data *pd) -{ - return pd->blending; -} - -EOLIAN static void -_evas_canvas3d_mesh_blending_func_set(Eo *obj, Evas_Canvas3D_Mesh_Data *pd, Evas_Canvas3D_Blend_Func sfactor, Evas_Canvas3D_Blend_Func dfactor) -{ - pd->blend_sfactor = sfactor; - pd->blend_dfactor = dfactor; - evas_canvas3d_object_change(obj, EVAS_CANVAS3D_STATE_MESH_BLENDING, NULL); -} - -EOLIAN static void -_evas_canvas3d_mesh_blending_func_get(Eo *obj EINA_UNUSED, Evas_Canvas3D_Mesh_Data *pd, - Evas_Canvas3D_Blend_Func *sfactor, Evas_Canvas3D_Blend_Func *dfactor) -{ - if (sfactor) *sfactor = pd->blend_sfactor; - if (dfactor) *dfactor = pd->blend_dfactor; -} - -EOLIAN static void -_evas_canvas3d_mesh_alpha_func_set(Eo *obj, Evas_Canvas3D_Mesh_Data *pd, Evas_Canvas3D_Comparison comparison, - Evas_Real ref_value) -{ - if (pd->alpha_comparison == comparison && - (EINA_DBL_EQ(pd->alpha_ref_value, ref_value))) - return; - pd->alpha_comparison = comparison; - pd->alpha_ref_value = ref_value; - evas_canvas3d_object_change(obj, EVAS_CANVAS3D_STATE_MESH_ALPHA_TEST, NULL); -} - -EOLIAN static void -_evas_canvas3d_mesh_alpha_func_get(const Eo *obj EINA_UNUSED, Evas_Canvas3D_Mesh_Data *pd, - Evas_Canvas3D_Comparison *comparison, - Evas_Real *ref_value) -{ - if (comparison) *comparison = pd->alpha_comparison; - if (ref_value) *ref_value = pd->alpha_ref_value; -} - -EOLIAN static void -_evas_canvas3d_mesh_alpha_test_enable_set(Eo *obj, Evas_Canvas3D_Mesh_Data *pd, Eina_Bool enabled) -{ - pd->alpha_test_enabled = enabled; - evas_canvas3d_object_change(obj, EVAS_CANVAS3D_STATE_MESH_ALPHA_TEST, NULL); -} - -EOLIAN static Eina_Bool -_evas_canvas3d_mesh_alpha_test_enable_get(const Eo *obj EINA_UNUSED, Evas_Canvas3D_Mesh_Data *pd) -{ - return pd->alpha_test_enabled; -} - -EOLIAN static void -_evas_canvas3d_mesh_efl_file_unload(Eo *obj, Evas_Canvas3D_Mesh_Data *pd) -{ - efl_file_unload(efl_super(obj, MY_CLASS)); - _mesh_fini(pd); -} - -EOLIAN static Eina_Error -_evas_canvas3d_mesh_efl_file_load(Eo *obj, Evas_Canvas3D_Mesh_Data *pd) -{ - const Eina_File *f; - Eina_Error err; - - if (efl_file_loaded_get(obj)) return 0; - - err = efl_file_load(efl_super(obj, MY_CLASS)); - if (err) return err; - - _mesh_fini(pd); - _mesh_init(pd); - - f = efl_file_mmap_get(obj); - if (f == NULL) return EFL_GFX_IMAGE_LOAD_ERROR_DOES_NOT_EXIST; - - evas_common_load_model_from_eina_file(obj, f); - - return 0; -} - -EOLIAN static Eina_Bool -_evas_canvas3d_mesh_efl_file_save_save(const Eo *obj, Evas_Canvas3D_Mesh_Data *pd, - const char *file, - const char *key EINA_UNUSED, - const Efl_File_Save_Info *info EINA_UNUSED) -{ - if ((file == NULL) || (obj == NULL) || (pd == NULL)) return EINA_FALSE; - - Evas_Canvas3D_Mesh_Frame *f = evas_canvas3d_mesh_frame_find(pd, 0); - - if (f == NULL) - { - ERR("Not existing mesh frame."); - return EINA_FALSE; - } - - evas_common_save_model_to_file(obj, file, f); - return EINA_TRUE; -} - -EOLIAN static void -_evas_canvas3d_mesh_from_primitive_set(Eo *obj, - Evas_Canvas3D_Mesh_Data *pd EINA_UNUSED, - int frame, - Eo *primitive) -{ - if ((primitive == NULL) || (obj == NULL)) return; - - Evas_Canvas3D_Primitive_Data *ppd = efl_data_scope_get(primitive, EVAS_CANVAS3D_PRIMITIVE_CLASS); - - evas_common_set_model_from_primitive(obj, frame, ppd); -} - -void -evas_canvas3d_mesh_interpolate_position_get(Eina_Vector3 *out, const Evas_Canvas3D_Vertex_Buffer *pos0, const Evas_Canvas3D_Vertex_Buffer *pos1, - Evas_Real weight, int index) -{ - if (pos1->data == NULL) - { - float *ptr; - - if (pos0->stride != 0) - ptr = (float *)((char *)pos0->data + pos0->stride * index); - else - ptr = (float *)pos0->data + 3 * index; - - out->x = ptr[0]; - out->y = ptr[1]; - out->z = ptr[2]; - } - else - { - float *ptr0, *ptr1; - - if (pos0->stride != 0) - ptr0 = (float *)((char *)pos0->data + pos0->stride * index); - else - ptr0 = (float *)pos0->data + 3 * index; - - if (pos1->stride != 0) - ptr1 = (float *)((char *)pos1->data + pos1->stride * index); - else - ptr1 = (float *)pos1->data + 3 * index; - - out->x = ptr0[0] * weight + ptr1[0] * (1.0 - weight); - out->y = ptr0[1] * weight + ptr1[1] * (1.0 - weight); - out->z = ptr0[2] * weight + ptr1[2] * (1.0 - weight); - } -} - -static inline void -_mesh_frame_find(Evas_Canvas3D_Mesh *mesh, int frame, - Eina_List **l, Eina_List **r) -{ - Eina_List *left, *right; - Evas_Canvas3D_Mesh_Frame *f0 = NULL, *f1; - Evas_Canvas3D_Mesh_Data *pdmesh = efl_data_scope_get(mesh, EVAS_CANVAS3D_MESH_CLASS); - - left = pdmesh->frames; - right = eina_list_next(left); - - while (right) - { - f0 = (Evas_Canvas3D_Mesh_Frame *)eina_list_data_get(left); - f1 = (Evas_Canvas3D_Mesh_Frame *)eina_list_data_get(right); - - if (frame >= f0->frame && frame <= f1->frame) - break; - - left = right; - right = eina_list_next(left); - } - - if (right == NULL) - { - if (f0 && frame <= f0->frame) - { - *l = NULL; - *r = left; - } - else - { - *l = left; - *r = NULL; - } - return; - } - - *l = left; - *r = right; -} - -void -evas_canvas3d_mesh_interpolate_vertex_buffer_get(Evas_Canvas3D_Mesh *mesh, int frame, - Evas_Canvas3D_Vertex_Attrib attrib, - Evas_Canvas3D_Vertex_Buffer *buf0, - Evas_Canvas3D_Vertex_Buffer *buf1, - Evas_Real *weight) -{ - Eina_List *l, *r; - const Evas_Canvas3D_Mesh_Frame *f0 = NULL, *f1 = NULL; - _mesh_frame_find(mesh, frame, &l, &r); - - while (l) - { - f0 = (const Evas_Canvas3D_Mesh_Frame *)eina_list_data_get(l); - - if (f0->vertices[attrib].data != NULL) - break; - - l = eina_list_prev(l); - f0 = NULL; - } - - while (r) - { - f1 = (const Evas_Canvas3D_Mesh_Frame *)eina_list_data_get(r); - - if (f1->vertices[attrib].data != NULL) - break; - - r = eina_list_next(r); - f1 = NULL; - } - - if (f0 == NULL && f1 == NULL) - return; - - if (f0 == NULL) - { - f0 = f1; - } - else if (f1 != NULL) - { - if (frame == f0->frame) - { - f1 = NULL; - } - else if (frame == f1->frame) - { - f0 = f1; - f1 = NULL; - } - } - - buf0->data = f0->vertices[attrib].data; - buf0->stride = f0->vertices[attrib].stride; - buf0->size = f0->vertices[attrib].size; - - if (f1) - { - buf1->data = f1->vertices[attrib].data; - buf1->stride = f1->vertices[attrib].stride; - buf1->size = f1->vertices[attrib].size; - - *weight = (f1->frame - frame) / (Evas_Real)(f1->frame - f0->frame); - } - else - { - buf1->data = NULL; - buf1->stride = 0; - buf1->size = 0; - - *weight = 1.0; - } -} - -EOLIAN static Eina_Bool -_evas_canvas3d_mesh_color_pick_enable_get(const Eo *obj EINA_UNUSED, Evas_Canvas3D_Mesh_Data *pd) -{ - return pd->color_pick_enabled; -} -EOLIAN static void -_evas_canvas3d_mesh_color_pick_enable_set(Eo *obj, Evas_Canvas3D_Mesh_Data *pd, Eina_Bool enabled) -{ - if (pd->color_pick_enabled != enabled) - pd->color_pick_enabled = enabled; - evas_canvas3d_object_change(obj, EVAS_CANVAS3D_STATE_MESH_COLOR_PICK, NULL); -} - -EOLIAN static void -_evas_canvas3d_mesh_shadows_edges_filtering_set(Eo *obj, Evas_Canvas3D_Mesh_Data *pd, - int blur_level, Evas_Real edges_size) -{ - if (blur_level > 0) - pd->shadows_edges_filtering_level = blur_level; - if (edges_size >= 0) - pd->shadows_edges_size = edges_size; - evas_canvas3d_object_change(obj, EVAS_CANVAS3D_STATE_MESH_SHADOWS_EDGES_FILTERING, NULL); -} - -EOLIAN static void -_evas_canvas3d_mesh_shadows_edges_filtering_get(const Eo *obj EINA_UNUSED, Evas_Canvas3D_Mesh_Data *pd, - int *blur_level, Evas_Real *edges_size) -{ - if (blur_level) *blur_level = pd->shadows_edges_filtering_level; - if (edges_size) *edges_size = pd->shadows_edges_size; -} - -EOLIAN static void -_evas_canvas3d_mesh_shadows_constant_bias_set(Eo *obj EINA_UNUSED, Evas_Canvas3D_Mesh_Data *pd, - Evas_Real bias) -{ - if (!EINA_DBL_EQ(pd->shadows_constant_bias, bias)) - { - pd->shadows_constant_bias = bias; - evas_canvas3d_object_change(obj, EVAS_CANVAS3D_STATE_MESH_SHADOWS_CONSTANT_BIAS, NULL); - } -} - -EOLIAN static Evas_Real -_evas_canvas3d_mesh_shadows_constant_bias_get(const Eo *obj EINA_UNUSED, Evas_Canvas3D_Mesh_Data *pd) -{ - return pd->shadows_constant_bias; -} -EOLIAN static void -_evas_canvas3d_mesh_convex_hull_data_get(Eo *obj EINA_UNUSED, Evas_Canvas3D_Mesh_Data *pd, - int frame, Eina_Inarray *vertex, Eina_Inarray *index) -{ - int stride; - - Evas_Canvas3D_Mesh_Frame *f = evas_canvas3d_mesh_frame_find(pd, frame); - - if (!f) - { - ERR("Not existing mesh frame %d %s", __LINE__, __FILE__); - return; - } - - if (f->vertices[EVAS_CANVAS3D_VERTEX_ATTRIB_POSITION].stride != 0) - stride = f->vertices[EVAS_CANVAS3D_VERTEX_ATTRIB_POSITION].stride / sizeof(float); - else - stride = 3; - - float *data = (float *)f->vertices[EVAS_CANVAS3D_VERTEX_ATTRIB_POSITION].data; - - evas_convex_hull_get(data, pd->vertex_count, stride, vertex, index); - - return; -} - -EOLIAN static void -_evas_canvas3d_mesh_lod_boundary_set(Eo *obj EINA_UNUSED, Evas_Canvas3D_Mesh_Data *pd, - Evas_Real near_lod, Evas_Real far_lod) -{ - pd->near_lod_boundary = near_lod; - pd->far_lod_boundary = far_lod; -} - -EOLIAN static void -_evas_canvas3d_mesh_lod_boundary_get(const Eo *obj EINA_UNUSED, Evas_Canvas3D_Mesh_Data *pd, - Evas_Real *near_lod, Evas_Real *far_lod) -{ - *near_lod = pd->near_lod_boundary; - *far_lod = pd->far_lod_boundary; -} -#include "canvas/evas_canvas3d_mesh.eo.c" diff --git a/src/lib/evas/canvas/evas_canvas3d_mesh.eo b/src/lib/evas/canvas/evas_canvas3d_mesh.eo deleted file mode 100644 index 364390d18f..0000000000 --- a/src/lib/evas/canvas/evas_canvas3d_mesh.eo +++ /dev/null @@ -1,421 +0,0 @@ -import evas_canvas3d_types; - -struct @beta @extern Eina.Inarray; [[Eina inarray data structure]] - -class @beta Evas.Canvas3D.Mesh extends Evas.Canvas3D.Object implements Efl.File, Efl.File_Save -{ - [[Evas 3D canvas mesh class]] - data: Evas_Canvas3D_Mesh_Data; - - methods { - frame_vertex_data_set { - [[Set the vertex data of the key frame of the given mesh. - - This function make evas read from the given buffer whenever it - requires. If you want to release the buffer after calling this - function, use @.frame_vertex_data_copy_set instead. - - After setting the vertex data, further modifications should be - protected by map/unmap pair. - - See also @.frame_vertex_data_map, @.frame_vertex_data_unmap. - ]] - params { - @in frame: int; [[The number of the key frame.]] - @in attrib: Evas.Canvas3D.Vertex_Attrib; [[Vertex attribute ID.]] - @in stride: int; [[Stride to go to the next vertex (in bytes).]] - @in data: const(void_ptr); [[Pointer to the vertex data buffer.]] - } - } - - frame_vertex_data_copy_set { - [[Set the vertex data of the key frame of the given mesh by copying - from a buffer. This function allocates internal vertex buffer and - copy from the given buffer. So you can release the buffer. If you - want to modify the vertex data use @.frame_vertex_data_map. After - finishing the modifications, you should call @.frame_vertex_data_unmap. - - See also @.frame_vertex_data_set. - ]] - params { - @in frame: int; [[The number of the key frame.]] - @in attrib: Evas.Canvas3D.Vertex_Attrib; [[Vertex attribute ID.]] - @in stride: int; [[Stride to go to the next vertex (in bytes).]] - @in data: const(void_ptr); [[Pointer to the vertex data buffer.]] - } - } - - frame_vertex_data_map { - [[Map the vertex buffer of the key frame of the given mesh. - - After manipulating the mapped buffer, @.frame_vertex_data_unmap - should be called to properly download the data to the engine. If - the data was set using @.frame_vertex_data_set, pointer to the - original buffer will be returned. Otherwise, the returned pointer - can differ every time calling this function. - ]] - return: void_ptr; [[Starting address of the mapped vertex buffer.]] - params { - @in frame: int; [[The number of the key frame.]] - @in attrib: Evas.Canvas3D.Vertex_Attrib; [[Vertex attribute ID.]] - } - } - - frame_vertex_data_unmap { - [[Unmap the vertex buffer of the key frame of the given mesh. - - See also @.frame_vertex_data_map. - ]] - params { - @in frame: int; [[The number of the key frame.]] - @in attrib: Evas.Canvas3D.Vertex_Attrib; [[Vertex attribute ID.]] - } - } - - frame_vertex_stride_get @const { - [[Get the vertex buffer stride of the key frame of the given mesh. - - This function returns valid stride only when the vertex buffer - is mapped. If the data was set with @.frame_vertex_data_set, the - original stride will be returned unchanged. - ]] - return: int; [[Stride to go to the next vertex (in bytes).]] - params { - @in frame: int; [[The number of the key frame.]] - @in attrib: Evas.Canvas3D.Vertex_Attrib; [[Vertex attribute ID.]] - } - } - - index_data_set { - [[Set the vertex index data of the given mesh. - - When the index data is set, Evas 3D assembles vertices using the - index data. If you want to free the data buffer, use - @.index_data_copy_set. Further modifications should be made - within map/unmap pair. - ]] - params { - @in format: Evas.Canvas3D.Index_Format; [[Vertex index data format.]] - @in count: int; [[Vertex index count.]] - @in indices: const(void_ptr); [[Pointer to the index data.]] - } - } - - convex_hull_data_get { - [[Get the vertex and index data of convex hull around the given mesh. - ]] - params { - @in frame: int; [[ The number of the key frame.]] - @in vertex: ptr(Eina.Inarray); [[Vertex data pointer]] - @in index: ptr(Eina.Inarray); [[Index data pointer]] - } - } - - index_data_copy_set { - [[Set the vertex index data of the given mesh by copying from a - buffer. - - This function allocates internal index buffer any copy data from - the given buffer. Further modifications can be made within - map/unmap pair. - - See also @.index_data_set. - ]] - params { - @in format: Evas.Canvas3D.Index_Format; [[Vertex index data format.]] - @in count: int; [[Vertex index count.]] - @in indices: const(void_ptr); [[Pointer to the index data.]] - } - } - - index_format_get @const { - [[Get the format of the index data of the given mesh. - - Returns valid format only when the index buffer is mapped. First - map the index buffer and then query the properties of the mapped - buffer. If the index data was set by @.index_data_set, the - original format will be returned. Otherwise the format can differ - every time you call the @.index_data_map function. - ]] - return: Evas.Canvas3D.Index_Format; [[Format of the index data.]] - } - - index_count_get @const { - [[Get the count of the index data of the given mesh. - - This function returns the index count of the last called data_set - function. - ]] - return: int; [[Index data count.]] - } - - index_data_map { - [[Map the index buffer of the given mesh. - - @.index_data_unmap should be called after modifications. If the - data was set using @.index_data_set, the original pointer will - be returned, otherwise, the returned pointer may differ every - time you call this function. - ]] - return: void_ptr; [[Pointer to the mapped buffer.]] - } - - index_data_unmap { - [[Unmap the index buffer of the given mesh. - - See also @.index_data_map. - ]] - } - - frame_exist { - [[Returns $true if frame was added and $false in other case.]] - params { - @in frame: int; [[Frame number.]] - } - return: bool; [[$true ifr frame was added, $false otherwise]] - } - - frame_add { - [[Add a key frame to the given mesh. - - If specified frame is already exist, error message will be generated. - ]] - params { - @in frame: int; [[The number of the key frame to be added.]] - } - } - - frame_del { - [[Delete a key frame from the given mesh.]] - params { - @in frame: int; [[The number of the key frame to be added.]] - } - } - - fog_color_set { - [[Set the fog color and density for the given mesh.]] - params { - @in r: Evas.Real; [[The red component of the fog color.]] - @in g: Evas.Real; [[The green component of the fog color.]] - @in b: Evas.Real; [[The blue component of the fog color.]] - @in a: Evas.Real; [[The transparency of fog.]] - } - } - fog_color_get { - [[Set the fog color and density for the given mesh.]] - params { - @out r: Evas.Real; [[Pointer to receive red component of the fog color.]] - @out g: Evas.Real; [[Pointer to receive green component of the fog color.]] - @out b: Evas.Real; [[Pointer to receive blue component of the fog color.]] - @out a: Evas.Real; [[Pointer to receive transparency of fog.]] - } - } - blending_func_set { - [[Set the blending function for given mesh.]] - params { - @in sfactor: Evas.Canvas3D.Blend_Func; [[Specifies how the red, green, blue, - and alpha source blending factors - are computed. - ]] - @in dfactor: Evas.Canvas3D.Blend_Func; [[Specifies how the red, green, blue, - and alpha destination blending - factors are computed. - ]] - } - } - blending_func_get { - [[Get blending function for given mesh.]] - params { - @out sfactor: Evas.Canvas3D.Blend_Func; [[Pointer to receive source blending factors key.]] - @out dfactor: Evas.Canvas3D.Blend_Func; [[Pointer to receive destination blending factors key.]] - } - } - from_primitive_set { - [[Set the data of given mesh frame from the given primitive.]] - params { - @in frame: int; [[Specifies data of which frame of given mesh will be set.]] - @in primitive: Evas.Canvas3D.Primitive; [[Specifies which data will be set.]] - } - } - @property shader_mode { - [[Set the shader mode of the given mesh. - - Default shader mode is EVAS_CANVAS3D_SHADER_MODE_VERTEX_COLOR. - ]] - set { - } - get { - } - values { - mode: Evas.Canvas3D.Shader_Mode; [[The shader mode.]] - } - } - @property color_pick_enable { - [[Set possibility color picking.]] - set { - } - get { - } - values { - enabled: bool; [[Possibility flag.]] - } - } - @property vertex_count { - [[The vertex count of the given mesh. - - Each key frame should have same vertex count to be properly - interpolated. Key frames have their own vertex data and the - data should have more vertices than the mesh's vertex count. - - Default vertex count is 0. - ]] - set { - } - get { - } - values { - count: uint; [[Vertex count.]] - } - } - @property fog_enable { - [[Enable or disable fog effect for given mesh. - - Default fog is disabled. - ]] - set { - } - get { - } - values { - enabled: bool; [[Fog enabled status.]] - } - } - - @property alpha_test_enable { - [[The enable status of alpha test for given mesh. - - Default alpha test disabled. - ]] - set { - } - get { - [[Get the enable status of alpha test for given mesh.]] - } - values { - enabled: bool; [[The alpha test status.]] - } - } - - @property alpha_func { - [[The alpha function. - - The alpha test discards fragments depending on the outcome of - a comparison between an incoming fragment's alpha value and a - constant reference value. This function specifies the reference - value and the comparison function. - ]] - set { - } - get { - } - values { - comparison_func: Evas.Canvas3D.Comparison; [[The alpha comparison function.]] - ref_value: Evas.Real; [[The reference value that incoming alpha values are compared to.]] - } - } - - @property blending_enable { - [[Enable or disable blending for given mesh.]] - set { - } - get { - } - values { - blending: bool; [[The blending state.]] - } - } - - @property frame_material { - [[The material of the key frame of the given mesh. - - Setting different materials for each key frame is useful for - doing animations like GIF images or color changing animations. - ]] - set { - } - get { - } - keys { - frame: int; [[The number of the key frame.]] - } - values { - material: Evas.Canvas3D.Material; [[The material to be set to the key frame.]] - } - } - - @property vertex_assembly { - [[The vertex assembly of the given mesh. - - Vertex assembly defines how the engine organizes vertices into - geometric primitives. - - Default vertex assembly is EVAS_CANVAS3D_VERTEX_ASSEMBLY_TRIANGLES. - ]] - set { - } - get { - } - values { - assembly: Evas.Canvas3D.Vertex_Assembly; [[The vertex assembly.]] - } - } - @property shadows_edges_filtering { - [[The shadow edges blur parameters. - - The averaging values in window is used for blurring. - User can set the size of window and num of points in window. - ]] - set { - } - get { - } - values { - blur_level: int; [[Number of points within a bluring radius.]] - edges_size: Evas.Real; [[The bluring radius.]] - } - } - @property shadows_constant_bias { - [[The offset shadow toward object.]] - set { - } - get { - } - values { - bias: Evas.Real; [[Offset.]] - } - } - @property lod_boundary { - [[The LOD boundary distances.]] - set { - } - get { - } - values { - near_lod: Evas.Real; [[Up boundary]] - far_lod: Evas.Real; [[Down boundary]] - } - } - } - implements { - Efl.Object.constructor; - Efl.Object.destructor; - Evas.Canvas3D.Object.update_notify; - Evas.Canvas3D.Object.change_notify; - Efl.File.load; - Efl.File.unload; - Efl.File_Save.save; - @empty Evas.Canvas3D.Object.callback_register; - @empty Evas.Canvas3D.Object.callback_unregister; - } - -} diff --git a/src/lib/evas/canvas/evas_canvas3d_node.c b/src/lib/evas/canvas/evas_canvas3d_node.c deleted file mode 100644 index 98492fa502..0000000000 --- a/src/lib/evas/canvas/evas_canvas3d_node.c +++ /dev/null @@ -1,1695 +0,0 @@ -#include "eo_internal.h" -#include "evas_common_private.h" -#include "evas_private.h" -#include "evas_canvas3d_node_callback.h" - -#define MY_CLASS EVAS_CANVAS3D_NODE_CLASS -#define MY_CLASS_NAME "Evas_Canvas3D_Node" - -Evas_Canvas3D_Mesh_Frame *evas_canvas3d_mesh_frame_find(Evas_Canvas3D_Mesh_Data *pd, int frame); - -static void -_look_at_set(Evas_Canvas3D_Node_Data *pd, Eina_Vector3 *target, Eina_Vector3 *up); - -static Eina_Stringshare * -_generate_unic_color_key(Evas_Color *color, Evas_Color *bg_color, Evas_Canvas3D_Node *node, Evas_Canvas3D_Mesh *mesh, - Eina_Bool init) -{ - static unsigned char red = 0; - static unsigned char green = 0; - static unsigned char blue = 0; - if (init) red = green = blue = 0; - -#define GET_NEXT_COLOR \ - red++; \ - if (red == 255) \ - { \ - red = 0; \ - green++; \ - if (green == 255) \ - { \ - green = 0; \ - blue++; \ - } \ - } - - GET_NEXT_COLOR - /*Get another color if color equal with background color*/ - if ((EINA_DBL_EQ(bg_color->r, (double)red)) && - (EINA_DBL_EQ(bg_color->g, (double)green)) && - (EINA_DBL_EQ(bg_color->b, (double)blue))) - { - GET_NEXT_COLOR - } - - color->r = (double)red / 255; - color->g = (double)green / 255; - color->b = (double)blue / 255; - -#undef GET_NEXT_COLOR - - return eina_stringshare_printf("%p %p", node, mesh); -} - -static void -_evas_canvas3d_node_private_callback_collision(void *data, const Efl_Event *event) -{ - Eina_List *collision_list = NULL, *l = NULL; - Evas_Canvas3D_Node *target_node = NULL, *n = NULL; - Evas_Canvas3D_Node_Data *pd_target = NULL, *pd = NULL; - const Efl_Event_Description *eo_desc = NULL; - Eina_Bool ret = EINA_FALSE; - - target_node = (Evas_Canvas3D_Node *)event->info; - pd_target = efl_data_scope_get(target_node, EVAS_CANVAS3D_NODE_CLASS); - collision_list = (Eina_List *)data; - eo_desc = efl_object_legacy_only_event_description_get("collision"); - - if (collision_list) - { - EINA_LIST_FOREACH(collision_list, l, n) - { - pd = efl_data_scope_get(n, EVAS_CANVAS3D_NODE_CLASS); - if (box_intersection_box(&pd_target->aabb, &pd->aabb)) - ret = efl_event_callback_legacy_call(target_node, eo_desc, n); - } - if (!ret) - { - /* XXX: Putting it like this because that's how the logic was, - * but it seems absolutely wrong that it only checks the last - * and decides based on that. */ - efl_event_callback_stop(event->object); - } - } -} -static void -_evas_canvas3d_node_private_callback_clicked(void *data EINA_UNUSED, const Efl_Event *event) -{ - Eina_Bool ret = EINA_FALSE; - const Efl_Event_Description *eo_desc = efl_object_legacy_only_event_description_get("clicked"); - ret = efl_event_callback_legacy_call((Eo *)event->info, eo_desc, event->info); - - if (!ret) - efl_event_callback_stop(event->object); -} - -static inline Evas_Canvas3D_Node_Mesh * -_node_mesh_new(Evas_Canvas3D_Node *node, Evas_Canvas3D_Mesh *mesh) -{ - Evas_Canvas3D_Node_Mesh *nm = (Evas_Canvas3D_Node_Mesh *)malloc(sizeof(Evas_Canvas3D_Node_Mesh)); - - if (nm == NULL) - { - ERR("Failed to allocate memory."); - return NULL; - } - - nm->node = node; - nm->mesh = mesh; - nm->frame = 0; - - return nm; -} - -static inline void -_node_mesh_free(Evas_Canvas3D_Node_Mesh *nm) -{ - free(nm); -} - -static void -_node_mesh_free_func(void *data) -{ - _node_mesh_free((Evas_Canvas3D_Node_Mesh *)data); -} - -static Eina_Bool -_node_scene_root_change_notify(const Eina_Hash *hash EINA_UNUSED, const void *key, - void *data EINA_UNUSED, void *fdata) -{ - Evas_Canvas3D_Scene *s = *(Evas_Canvas3D_Scene **)key; - evas_canvas3d_object_change(s, EVAS_CANVAS3D_STATE_SCENE_ROOT_NODE, (Evas_Canvas3D_Object *)fdata); - return EINA_TRUE; -} - -static Eina_Bool -_node_scene_camera_change_notify(const Eina_Hash *hash EINA_UNUSED, const void *key, - void *data EINA_UNUSED, void *fdata) -{ - Evas_Canvas3D_Scene *s = *(Evas_Canvas3D_Scene **)key; - evas_canvas3d_object_change(s, EVAS_CANVAS3D_STATE_SCENE_CAMERA_NODE, (Evas_Canvas3D_Object *)fdata); - return EINA_TRUE; -} - -EOLIAN static void -_evas_canvas3d_node_evas_canvas3d_object_change_notify(Eo *obj, Evas_Canvas3D_Node_Data *pd, Evas_Canvas3D_State state EINA_UNUSED , Evas_Canvas3D_Object *ref EINA_UNUSED) -{ - Eina_List *l; - Evas_Canvas3D_Node *n; - Eina_Bool orientation; - Eina_Bool position; - Eina_Bool scale; - Eina_Bool parent_change; - - /* Notify all scenes using this node that it has changed. */ - if (pd->scenes_root) - eina_hash_foreach(pd->scenes_root, _node_scene_root_change_notify, obj); - - if (pd->scenes_camera) - eina_hash_foreach(pd->scenes_camera, _node_scene_camera_change_notify, obj); - - parent_change = (state == EVAS_CANVAS3D_STATE_NODE_PARENT_ORIENTATION) - || (state == EVAS_CANVAS3D_STATE_NODE_PARENT_POSITION) - || (state == EVAS_CANVAS3D_STATE_NODE_PARENT_SCALE); - - /* Notify parent that a member has changed. */ - if (pd->parent && !parent_change) - { - evas_canvas3d_object_change(pd->parent, EVAS_CANVAS3D_STATE_NODE_MEMBER, obj); - } - - orientation = (state == EVAS_CANVAS3D_STATE_NODE_TRANSFORM_ORIENTATION) - || (state == EVAS_CANVAS3D_STATE_NODE_PARENT_ORIENTATION); - position = (state == EVAS_CANVAS3D_STATE_NODE_TRANSFORM_POSITION) - || (state == EVAS_CANVAS3D_STATE_NODE_PARENT_POSITION); - scale = (state == EVAS_CANVAS3D_STATE_NODE_TRANSFORM_SCALE) - || (state == EVAS_CANVAS3D_STATE_NODE_PARENT_SCALE); - - /* Notify members that the parent has changed. */ - if (scale) - EINA_LIST_FOREACH(pd->members, l, n) - { - evas_canvas3d_object_change(n, EVAS_CANVAS3D_STATE_NODE_PARENT_SCALE, obj); - } - if (orientation && !(pd->billboard_target)) - EINA_LIST_FOREACH(pd->members, l, n) - { - /*Skip change orientation if node is billboard*/ - Evas_Canvas3D_Node_Data *pdm = efl_data_scope_get(n, EVAS_CANVAS3D_NODE_CLASS); - if (pdm->billboard_target) - continue; - evas_canvas3d_object_change(n, EVAS_CANVAS3D_STATE_NODE_PARENT_ORIENTATION, obj); - } - if (position) - EINA_LIST_FOREACH(pd->members, l, n) - { - evas_canvas3d_object_change(n, EVAS_CANVAS3D_STATE_NODE_PARENT_POSITION, obj); - } -} - -EOLIAN static void -_evas_canvas3d_node_evas_canvas3d_object_callback_register(Eo *obj, Evas_Canvas3D_Node_Data *pd EINA_UNUSED, - const char *event, const void *data) -{ - Evas_Canvas3D_Node_Private_Callback_Type tcb; - - GET_CALLBACK_TYPE(tcb, event) - - if (tcb != PRIVATE_CALLBACK_NONE) - efl_event_callback_add(obj, &evas_canvas3d_node_private_event_desc[tcb], evas_canvas3d_node_private_callback_functions[tcb], data); - -} - -EOLIAN static void -_evas_canvas3d_node_evas_canvas3d_object_callback_unregister(Eo *obj, Evas_Canvas3D_Node_Data *pd EINA_UNUSED, - const char *event) -{ - Evas_Canvas3D_Node_Private_Callback_Type tcb; - - GET_CALLBACK_TYPE(tcb, event) - - if (tcb != PRIVATE_CALLBACK_NONE) - efl_event_callback_del(obj, &evas_canvas3d_node_private_event_desc[tcb], evas_canvas3d_node_private_callback_functions[tcb], NULL); -} - -static Eina_Bool -_node_transform_update(Evas_Canvas3D_Node *node, void *data EINA_UNUSED) -{ - Evas_Canvas3D_Node_Data *pd = efl_data_scope_get(node, MY_CLASS); - Eina_Bool transform_dirty = EINA_FALSE, parent_dirty = EINA_FALSE; - - transform_dirty = evas_canvas3d_object_dirty_get(node, EVAS_CANVAS3D_STATE_NODE_TRANSFORM_ORIENTATION); - transform_dirty|= evas_canvas3d_object_dirty_get(node, EVAS_CANVAS3D_STATE_NODE_TRANSFORM_POSITION); - transform_dirty|= evas_canvas3d_object_dirty_get(node, EVAS_CANVAS3D_STATE_NODE_TRANSFORM_SCALE); - parent_dirty = evas_canvas3d_object_dirty_get(node, EVAS_CANVAS3D_STATE_NODE_PARENT_ORIENTATION); - parent_dirty |= evas_canvas3d_object_dirty_get(node, EVAS_CANVAS3D_STATE_NODE_PARENT_POSITION); - parent_dirty |= evas_canvas3d_object_dirty_get(node, EVAS_CANVAS3D_STATE_NODE_PARENT_SCALE); - - if (transform_dirty || parent_dirty) - { - if (pd->parent) - { - Evas_Canvas3D_Node_Data *pdparent = efl_data_scope_get(pd->parent, MY_CLASS); - const Eina_Vector3 *scale_parent = &pdparent->scale_world; - const Eina_Quaternion *orientation_parent = &pdparent->orientation_world; - - /* Orienatation */ - if (pd->orientation_inherit) - { - eina_quaternion_mul(&pd->orientation_world, - orientation_parent, &pd->orientation); - } - else - { - pd->orientation_world = pd->orientation; - } - - /* Scale */ - if (pd->scale_inherit) - eina_vector3_multiply(&pd->scale_world, scale_parent, &pd->scale); - else - pd->scale_world = pd->scale; - - /* Position */ - if (pd->position_inherit) - { - eina_vector3_multiply(&pd->position_world, &pd->position, scale_parent); - eina_vector3_quaternion_rotate(&pd->position_world, &pd->position_world, - orientation_parent); - eina_vector3_add(&pd->position_world, &pd->position_world, - &pdparent->position_world); - } - else - { - pd->position_world = pd->position; - } - } - else - { - pd->position_world = pd->position; - pd->orientation_world = pd->orientation; - pd->scale_world = pd->scale; - } - - if (pd->type == EVAS_CANVAS3D_NODE_TYPE_CAMERA) - { - evas_mat4_inverse_build(&pd->data.camera.matrix_world_to_eye, - &pd->position_world, &pd->orientation_world, - &pd->scale_world); - } - else if (pd->type == EVAS_CANVAS3D_NODE_TYPE_LIGHT) - { - } - else if (pd->type == EVAS_CANVAS3D_NODE_TYPE_MESH) - { - evas_mat4_build(&pd->data.mesh.matrix_local_to_world, - &pd->position_world, &pd->orientation_world, &pd->scale_world); - } -/* - if (pd->parent) - { - evas_mat4_nocheck_multiply(&pd->matrix_local_to_world, - &pd->parent->matrix_local_to_world, - &pd->matrix_local_to_parent); - } - else - { - evas_mat4_copy(&pd->matrix_local_to_world, &pd->matrix_local_to_parent); - }*/ - } - - return EINA_TRUE; -} - -static Eina_Bool -_node_billboard_update(Evas_Canvas3D_Node *node, void *data EINA_UNUSED) -{ - Eina_Vector3 target; - Eina_Vector3 up; - Evas_Canvas3D_Node_Data *pd_node = efl_data_scope_get(node, MY_CLASS); - if (pd_node->billboard_target) - { - Evas_Canvas3D_Node_Data *pd_target = efl_data_scope_get(pd_node->billboard_target, - MY_CLASS); - eina_vector3_set(&target, pd_target->position.x, pd_target->position.y, - pd_target->position.z); - eina_vector3_set(&up, 0, 1, 0); - - _look_at_set(pd_node, &target, &up); - - if (pd_node->type == EVAS_CANVAS3D_NODE_TYPE_MESH) - { - evas_mat4_build(&pd_node->data.mesh.matrix_local_to_world, - &pd_node->position, &pd_node->orientation, - &pd_node->scale); - } - else if (pd_node->type == EVAS_CANVAS3D_NODE_TYPE_LIGHT) - { - evas_mat4_build(&pd_node->data.light.matrix_local_to_world, - &pd_node->position, &pd_node->orientation, - &pd_node->scale); - } - else if (pd_node->type == EVAS_CANVAS3D_NODE_TYPE_CAMERA) - { - evas_mat4_inverse_build(&pd_node->data.light.matrix_local_to_world, - &pd_node->position, &pd_node->orientation, - &pd_node->scale); - } - else - ERR("Not supported type of node: line %d in file %s", __LINE__ , __FILE__); - } - return EINA_TRUE; -} - -static Eina_Bool -_node_item_update(Evas_Canvas3D_Node *node, void *data EINA_UNUSED) -{ - Evas_Canvas3D_Node_Data *pd = efl_data_scope_get(node, EVAS_CANVAS3D_NODE_CLASS); - if (pd->type == EVAS_CANVAS3D_NODE_TYPE_CAMERA) - { - if (pd->data.camera.camera) - { - evas_canvas3d_object_update(pd->data.camera.camera); - } - } - else if (pd->type == EVAS_CANVAS3D_NODE_TYPE_LIGHT) - { - if (pd->data.light.light) - { - evas_canvas3d_object_update(pd->data.light.light); - } - } - else if (pd->type == EVAS_CANVAS3D_NODE_TYPE_MESH) - { - Eina_List *l; - Evas_Canvas3D_Mesh *m; - EINA_LIST_FOREACH(pd->data.mesh.meshes, l, m) - { - evas_canvas3d_object_update(m); - } - } - - return EINA_TRUE; -} - -static void -_pack_meshes_vertex_data(Evas_Canvas3D_Node *node, Eina_Vector3 **vertices, int *count) -{ - const Eina_List *m, *l; - Evas_Canvas3D_Mesh *mesh; - int j; - int frame; - Eina_Vector3 *it; - Evas_Canvas3D_Vertex_Buffer pos0, pos1; - Evas_Real pos_weight; - - *count = 0; - m = (Eina_List *)evas_canvas3d_node_mesh_list_get(node); - EINA_LIST_FOREACH(m, l, mesh) - { - frame = evas_canvas3d_node_mesh_frame_get(node, mesh); - evas_canvas3d_mesh_interpolate_vertex_buffer_get(mesh, frame, EVAS_CANVAS3D_VERTEX_ATTRIB_POSITION, - &pos0, &pos1, &pos_weight); - if(!pos0.data) continue; - if(!pos0.stride) - { - *count += pos0.size / (sizeof(float) * 3); - } - else - { - *count += pos0.size / pos0.stride; - } - } - *vertices = (Eina_Vector3*)malloc(*count * sizeof(Eina_Vector3)); - it = *vertices; - if(!*vertices) - { - ERR("Not enough memory."); - return; - } - - EINA_LIST_FOREACH(m, l, mesh) - { - frame = evas_canvas3d_node_mesh_frame_get(node, mesh); - evas_canvas3d_mesh_interpolate_vertex_buffer_get(mesh, frame, EVAS_CANVAS3D_VERTEX_ATTRIB_POSITION, - &pos0, &pos1, &pos_weight); - if(!pos0.data) continue; - int stride = 0; - if(!pos0.stride) - { - stride = sizeof(float) * 3; - } - else - { - stride = pos0.stride; - } - for (j = 0; j < pos0.size / stride; j++) - { - evas_canvas3d_mesh_interpolate_position_get(it, &pos0, &pos1, pos_weight, j); - it++; - } - } -} - -static void -_update_node_shapes(Evas_Canvas3D_Node *node) -{ - int i; - int count; - Eina_Vector3 *vertices = NULL; - Evas_Canvas3D_Node_Data *pd = efl_data_scope_get(node, EVAS_CANVAS3D_NODE_CLASS); - Eina_Bool transform_orientation_dirty; - Eina_Bool transform_position_dirty; - Eina_Bool transform_scale_dirty; - Eina_Bool mesh_geom_dirty; - Eina_Vector3 position = pd->position_world; - - if (pd->type != EVAS_CANVAS3D_NODE_TYPE_MESH) - { - pd->aabb.p0 = position; - pd->aabb.p1 = position; - pd->obb.p0 = position; - pd->obb.p1 = position; - pd->bsphere.radius = 0; - pd->bsphere.center = position; - return; - } - - transform_orientation_dirty = evas_canvas3d_object_dirty_get(node, EVAS_CANVAS3D_STATE_NODE_TRANSFORM_ORIENTATION); - transform_orientation_dirty |= evas_canvas3d_object_dirty_get(node, EVAS_CANVAS3D_STATE_NODE_PARENT_ORIENTATION); - transform_position_dirty = evas_canvas3d_object_dirty_get(node, EVAS_CANVAS3D_STATE_NODE_TRANSFORM_POSITION); - transform_position_dirty |= evas_canvas3d_object_dirty_get(node, EVAS_CANVAS3D_STATE_NODE_PARENT_POSITION); - transform_scale_dirty = evas_canvas3d_object_dirty_get(node, EVAS_CANVAS3D_STATE_NODE_TRANSFORM_SCALE); - transform_scale_dirty |= evas_canvas3d_object_dirty_get(node, EVAS_CANVAS3D_STATE_NODE_PARENT_SCALE); - mesh_geom_dirty = evas_canvas3d_object_dirty_get(node, EVAS_CANVAS3D_STATE_NODE_MESH_GEOMETRY); - mesh_geom_dirty |= evas_canvas3d_object_dirty_get(node, EVAS_CANVAS3D_STATE_NODE_MESH_FRAME); - - - _pack_meshes_vertex_data(node, &vertices, &count); - if (count > 0) - { - calculate_box(&pd->obb, count, vertices); - for (i = 0; i < count; i++) - { - eina_vector3_homogeneous_position_transform(&vertices[i], &pd->data.mesh.matrix_local_to_world, &vertices[i]); - } - calculate_box(&pd->aabb, count, vertices); - if (transform_position_dirty || transform_scale_dirty || mesh_geom_dirty) - { - calculate_sphere(&pd->bsphere, count, vertices); - } - eina_vector3_homogeneous_position_transform(&pd->obb.p0, &pd->data.mesh.matrix_local_to_world, &pd->obb.p0); - eina_vector3_homogeneous_position_transform(&pd->obb.p0, &pd->data.mesh.matrix_local_to_world, &pd->obb.p0); - } - free(vertices); - -} - -Eina_Bool -node_aabb_update(Evas_Canvas3D_Node *node, void *data EINA_UNUSED) -{ - Evas_Canvas3D_Node_Data *pd = efl_data_scope_get(node, EVAS_CANVAS3D_NODE_CLASS); - Eina_List *current; - Evas_Canvas3D_Node *datanode; - const Efl_Event_Description *eo_desc = NULL; - if (pd->type != EVAS_CANVAS3D_NODE_TYPE_MESH && - pd->type != EVAS_CANVAS3D_NODE_TYPE_NODE) - return EINA_TRUE; - _update_node_shapes(node); - EINA_LIST_FOREACH(pd->members, current, datanode) - { - Evas_Canvas3D_Node_Data *datapd = efl_data_scope_get(datanode, EVAS_CANVAS3D_NODE_CLASS); - evas_box3_union(&pd->obb, &pd->obb, &datapd->obb); - evas_box3_union(&pd->aabb, &pd->aabb, &datapd->aabb); - } - - evas_build_sphere(&pd->aabb, &pd->bsphere); - eo_desc = efl_object_legacy_only_event_description_get("collision,private"); - efl_event_callback_legacy_call(node, eo_desc, (void *)node); - - return EINA_TRUE; -} - -static Eina_Bool -_node_update_done(Evas_Canvas3D_Node *obj, void *data EINA_UNUSED) -{ - //@FIXME - Evas_Canvas3D_Object_Data *pdobject = efl_data_scope_get(obj, EVAS_CANVAS3D_OBJECT_CLASS); - memset(&pdobject->dirty[0], 0x00, sizeof(Eina_Bool) * EVAS_CANVAS3D_STATE_MAX); - return EINA_TRUE; -} - -EOLIAN static void -_evas_canvas3d_node_evas_canvas3d_object_update_notify(Eo *obj, Evas_Canvas3D_Node_Data *pd EINA_UNUSED) -{ - /* Update transform. */ - evas_canvas3d_node_tree_traverse(obj, EVAS_CANVAS3D_TREE_TRAVERSE_LEVEL_ORDER, EINA_FALSE, - _node_transform_update, NULL); - /*Update billboard*/ - evas_canvas3d_node_tree_traverse(obj, EVAS_CANVAS3D_TREE_TRAVERSE_ANY_ORDER, EINA_FALSE, - _node_billboard_update, NULL); - /* Update AABB. */ - if(efl_object_legacy_only_event_description_get("collision,private")) - { - evas_canvas3d_node_tree_traverse(obj, EVAS_CANVAS3D_TREE_TRAVERSE_POST_ORDER, EINA_FALSE, - node_aabb_update, NULL); - } - - /* Update node item. */ - evas_canvas3d_node_tree_traverse(obj, EVAS_CANVAS3D_TREE_TRAVERSE_ANY_ORDER, EINA_FALSE, - _node_item_update, NULL); - - /* Mark all nodes in the tree as up-to-date. */ - evas_canvas3d_node_tree_traverse(obj, EVAS_CANVAS3D_TREE_TRAVERSE_ANY_ORDER, EINA_FALSE, - _node_update_done, NULL); -} - -static void -_node_free(Evas_Canvas3D_Object *obj) -{ - Evas_Canvas3D_Node_Data *pd = efl_data_scope_get(obj, MY_CLASS); - - if (pd->members) - { - Eina_List *l; - Evas_Canvas3D_Node *n; - - EINA_LIST_FOREACH(pd->members, l, n) - { - efl_unref(n); - } - - eina_list_free(pd->members); - } - - if (pd->parent) - { - evas_canvas3d_node_member_del(pd->parent, obj); - } - - if (pd->type == EVAS_CANVAS3D_NODE_TYPE_MESH && pd->data.mesh.meshes) - { - Eina_List *l; - Evas_Canvas3D_Mesh *m; - - EINA_LIST_FOREACH(pd->data.mesh.meshes, l, m) - { - efl_unref(m); - } - - eina_list_free(pd->data.mesh.meshes); - - if (pd->data.mesh.node_meshes) - eina_hash_free(pd->data.mesh.node_meshes); - } - - if (pd->scenes_root) - eina_hash_free(pd->scenes_root); - - if (pd->scenes_camera) - eina_hash_free(pd->scenes_camera); -} - -void -evas_canvas3d_node_scene_root_add(Evas_Canvas3D_Node *node, Evas_Canvas3D_Scene *scene) -{ - int count = 0; - Evas_Canvas3D_Node_Data *pd = efl_data_scope_get(node, MY_CLASS); - if (pd->scenes_root == NULL) - { - pd->scenes_root = eina_hash_pointer_new(NULL); - - if (pd->scenes_root == NULL) - { - ERR("Failed to create hash table."); - return; - } - } - else - count = (int)(uintptr_t)eina_hash_find(pd->scenes_root, &scene); - - eina_hash_set(pd->scenes_root, &scene, (const void *)(uintptr_t)(count + 1)); -} - -void -evas_canvas3d_node_scene_root_del(Evas_Canvas3D_Node *node, Evas_Canvas3D_Scene *scene) -{ - int count = 0; - Evas_Canvas3D_Node_Data *pd = efl_data_scope_get(node, MY_CLASS); - if (pd->scenes_root == NULL) - { - ERR("No scene to delete."); - return; - } - - count = (int)(uintptr_t)eina_hash_find(pd->scenes_root, &scene); - - if (count == 1) - eina_hash_del(pd->scenes_root, &scene, NULL); - else - eina_hash_set(pd->scenes_root, &scene, (const void *)(uintptr_t)(count - 1)); -} - -EOLIAN static Eina_Hash* -_evas_canvas3d_node_scene_root_get(Eo *obj EINA_UNUSED, Evas_Canvas3D_Node_Data *pd) -{ - return pd->scenes_root; -} - -void -evas_canvas3d_node_scene_camera_add(Evas_Canvas3D_Node *node, Evas_Canvas3D_Scene *scene) -{ - int count = 0; - Evas_Canvas3D_Node_Data *pd = efl_data_scope_get(node, MY_CLASS); - if (pd->scenes_camera == NULL) - { - pd->scenes_camera = eina_hash_pointer_new(NULL); - - if (pd->scenes_camera == NULL) - { - ERR("Failed to create hash table."); - return; - } - } - else - count = (int)(uintptr_t)eina_hash_find(pd->scenes_camera, &scene); - - eina_hash_set(pd->scenes_camera, &scene, (const void *)(uintptr_t)(count + 1)); -} - -void -evas_canvas3d_node_scene_camera_del(Evas_Canvas3D_Node *node, Evas_Canvas3D_Scene *scene) -{ - int count = 0; - Evas_Canvas3D_Node_Data *pd = efl_data_scope_get(node, MY_CLASS); - if (pd->scenes_camera == NULL) - { - ERR("No scene to delete."); - return; - } - - count = (int)(uintptr_t)eina_hash_find(pd->scenes_camera, &scene); - - if (count == 1) - eina_hash_del(pd->scenes_camera, &scene, NULL); - else - eina_hash_set(pd->scenes_camera, &scene, (const void *)(uintptr_t)(count - 1)); -} - -void -evas_canvas3d_node_traverse(Evas_Canvas3D_Node *from, Evas_Canvas3D_Node *to, Evas_Canvas3D_Node_Traverse_Type type, - Eina_Bool skip, Evas_Canvas3D_Node_Func func, void *data) -{ - Eina_List *nodes = NULL, *n; - Evas_Canvas3D_Node *node = NULL; - - if (from == NULL || func == NULL) - goto error; - - if (type == EVAS_CANVAS3D_NODE_TRAVERSE_DOWNWARD) - { - if (to == NULL) - goto error; - - node = to; - - do { - nodes = eina_list_prepend(nodes, (const void *)node); - - if (node == from) - break; - Evas_Canvas3D_Node_Data *pdnode = efl_data_scope_get(node, MY_CLASS); - node = pdnode->parent; - - if (node == NULL) - goto error; - } while (1); - } - else if (type == EVAS_CANVAS3D_NODE_TRAVERSE_UPWARD) - { - node = from; - - do { - nodes = eina_list_append(nodes, (const void *)node); - - if (node == to) - break; - Evas_Canvas3D_Node_Data *pdnode = efl_data_scope_get(node, MY_CLASS); - node = pdnode->parent; - - if (node == NULL) - { - if (to == NULL) - break; - - goto error; - } - } while (1); - } - - EINA_LIST_FOREACH(nodes, n, node) - { - if (!func(node, data) && skip) - break; - } - - eina_list_free(nodes); - return; - -error: - ERR("Node traverse error."); - - if (nodes) - eina_list_free(nodes); -} - -void -evas_canvas3d_node_tree_traverse(Evas_Canvas3D_Node *root, Evas_Canvas3D_Tree_Traverse_Type type, - Eina_Bool skip, Evas_Canvas3D_Node_Func func, void *data) -{ - Eina_List *nodes = NULL, *l; - Evas_Canvas3D_Node *node = NULL, *n, *last; - - if (root == NULL || func == NULL) - return; - - if (type == EVAS_CANVAS3D_TREE_TRAVERSE_LEVEL_ORDER) - { - /* Put the root node in the queue. */ - nodes = eina_list_append(nodes, root); - - while (eina_list_count(nodes) > 0) - { - /* Dequeue a node. */ - node = eina_list_data_get(nodes); - Evas_Canvas3D_Node_Data *pdnode = efl_data_scope_get(node, MY_CLASS); - - nodes = eina_list_remove_list(nodes, nodes); - - /* Call node function on the node. */ - if (func(node, data) || !skip) - { - /* Enqueue member nodes. */ - EINA_LIST_FOREACH(pdnode->members, l, n) - { - nodes = eina_list_append(nodes, n); - } - } - } - } - else if (type == EVAS_CANVAS3D_TREE_TRAVERSE_PRE_ORDER) - { - /* Put the root node in the stack. */ - nodes = eina_list_append(nodes, root); - - while (eina_list_count(nodes) > 0) - { - /* Pop a node from the stack. */ - node = eina_list_data_get(nodes); - Evas_Canvas3D_Node_Data *pdnode = efl_data_scope_get(node, MY_CLASS); - nodes = eina_list_remove_list(nodes, nodes); - - /* Call node function on the node. */ - if (func(node, data) || !skip) - { - /* Push member nodes into the stack. */ - EINA_LIST_REVERSE_FOREACH(pdnode->members, l, n) - { - nodes = eina_list_prepend(nodes, n); - } - } - } - } - else if (type == EVAS_CANVAS3D_TREE_TRAVERSE_POST_ORDER) - { - if (skip) - { - ERR("Using skip with post order traversal has no effect."); - return; - } - - /* Put the root node in the stack. */ - nodes = eina_list_append(nodes, root); - last = NULL; - - while (eina_list_count(nodes) > 0) - { - /* Peek a node from the stack. */ - node = eina_list_data_get(nodes); - Evas_Canvas3D_Node_Data *pdnode = efl_data_scope_get(node, MY_CLASS); - if (eina_list_count(pdnode->members) == 0) - { - /* The peeked node is a leaf node, - * so visit it and pop from the stack. */ - func(node, data); - nodes = eina_list_remove_list(nodes, nodes); - - /* Save the last visited node. */ - last = node; - } - else - { - /* If the peeked node is not a leaf node, - * there can be only two possible cases. - * - * 1. the parent of the last visited node. - * 2. a sibling of the last visited node. - * - * If the last visited node is a direct child of the peeked node, - * we have no unvisted child nodes for the peeked node, so we have to visit - * the peeked node and pop from the stack. - * - * Otherwise it should be a sibling of the peeked node, so we have to push - * its childs into the stack. */ - Evas_Canvas3D_Node_Data *pdlast; - if (last ) - pdlast= efl_data_scope_get(last, MY_CLASS); - if (last && pdlast->parent == node) - { - /* Visit the node as it doesn't have any unvisited child node. */ - func(node, data); - nodes = eina_list_remove_list(nodes, nodes); - - /* Save the last visited node. */ - last = node; - } - else - { - /* Push child nodes into the stack. */ - EINA_LIST_REVERSE_FOREACH(pdnode->members, l, n) - { - nodes = eina_list_prepend(nodes, n); - } - } - } - } - } - - if (nodes != NULL) - eina_list_free(nodes); -} - -Eina_Bool -_node_is_visible(Evas_Canvas3D_Node *node EINA_UNUSED, Evas_Canvas3D_Node *camera_node EINA_UNUSED) -{ - /* TODO: */ - return EINA_TRUE; -} - -Eina_Bool -evas_canvas3d_node_mesh_collect(Evas_Canvas3D_Node *node, void *data) -{ - Eina_List *list_meshes, *l; - Evas_Canvas3D_Mesh *mesh = NULL; - Evas_Canvas3D_Mesh_Data *mesh_pd; - Evas_Canvas3D_Mesh_Frame *f; - Evas_Canvas3D_Scene_Public_Data *scene_data = (Evas_Canvas3D_Scene_Public_Data *)data; - Evas_Canvas3D_Node_Data *pd = efl_data_scope_get(node, MY_CLASS); - unsigned short int *index; - int stride, tex_stride, normal_stride; - - if (pd->type == EVAS_CANVAS3D_NODE_TYPE_MESH) - { - scene_data->mesh_nodes = eina_list_append(scene_data->mesh_nodes, node); - /*In case LOD calculate distance to the camera node*/ - if (pd->lod) - { - Evas_Canvas3D_Node_Data *pd_camera = efl_data_scope_get(scene_data->camera_node, MY_CLASS); - scene_data->lod_distance = eina_vector3_distance_get(&pd_camera->position, &pd->position_world); - } - /* calculation of tangent space for all meshes */ - list_meshes = (Eina_List *)evas_canvas3d_node_mesh_list_get(node); - EINA_LIST_FOREACH(list_meshes, l, mesh) - { - mesh_pd = efl_data_scope_get(mesh, MY_CLASS); - f = evas_canvas3d_mesh_frame_find(mesh_pd, 0); - if (!f) - { - ERR("Not existing mesh frame."); - continue; - } - - float *tangent_data = (float *)f->vertices[EVAS_CANVAS3D_VERTEX_ATTRIB_TANGENT].data; - if (!tangent_data && ((mesh_pd->shader_mode == EVAS_CANVAS3D_SHADER_MODE_NORMAL_MAP) || - (mesh_pd->shader_mode == EVAS_CANVAS3D_SHADER_MODE_PARALLAX_OCCLUSION))) - { - index = (unsigned short int *)mesh_pd->indices; - tangent_data = (float*) malloc((3 * mesh_pd->vertex_count) * sizeof(float)); - - float *vertex_data = (float *)f->vertices[EVAS_CANVAS3D_VERTEX_ATTRIB_POSITION].data; - if (f->vertices[EVAS_CANVAS3D_VERTEX_ATTRIB_POSITION].stride != 0) - stride = f->vertices[EVAS_CANVAS3D_VERTEX_ATTRIB_POSITION].stride / sizeof(float); - else - stride = 3; - - float *tex_data = (float *)f->vertices[EVAS_CANVAS3D_VERTEX_ATTRIB_TEXCOORD].data; - if (f->vertices[EVAS_CANVAS3D_VERTEX_ATTRIB_TEXCOORD].stride != 0) - tex_stride = f->vertices[EVAS_CANVAS3D_VERTEX_ATTRIB_TEXCOORD].stride / sizeof(float); - else - tex_stride = 2; - - float *normal_data = (float *)f->vertices[EVAS_CANVAS3D_VERTEX_ATTRIB_NORMAL].data; - if (f->vertices[EVAS_CANVAS3D_VERTEX_ATTRIB_NORMAL].stride != 0) - normal_stride = f->vertices[EVAS_CANVAS3D_VERTEX_ATTRIB_NORMAL].stride / sizeof(float); - else - normal_stride = 2; - - evas_tangent_space_get(vertex_data, tex_data, normal_data, index, mesh_pd->vertex_count, - mesh_pd->index_count, stride, tex_stride, normal_stride, &tangent_data); - - evas_canvas3d_mesh_frame_vertex_data_copy_set(mesh, 0, EVAS_CANVAS3D_VERTEX_ATTRIB_TANGENT, 3 * sizeof(float), tangent_data); - free(tangent_data); - } - } - } - if (!_node_is_visible(node, scene_data->camera_node)) - { - /* Skip entire sub-tree of this node. */ - return EINA_FALSE; - } - - return EINA_TRUE; -} - -Eina_Bool -evas_canvas3d_node_color_node_mesh_collect(Evas_Canvas3D_Node *node, void *data) -{ - Evas_Canvas3D_Scene_Public_Data *scene_data = (Evas_Canvas3D_Scene_Public_Data *)data; - Evas_Canvas3D_Node_Data *pd = efl_data_scope_get(node, MY_CLASS); - Evas_Canvas3D_Node_Data *pd_camera = efl_data_scope_get(scene_data->camera_node, MY_CLASS); - Evas_Canvas3D_Camera *camera = (Evas_Canvas3D_Camera*)pd_camera->data.camera.camera; - - Eina_List *list_meshes, *l; - Evas_Canvas3D_Mesh *mesh; - Eina_Stringshare *key, *datakey; - Evas_Color *color; - Eina_Bool visible = EINA_FALSE; - Eina_Array *arr; - if (pd->type == EVAS_CANVAS3D_NODE_TYPE_MESH) - { - visible = evas_canvas3d_camera_node_visible_get(camera, scene_data->camera_node, node, EVAS_CANVAS3D_FRUSTUM_MODE_BSPHERE); - if (visible) - { - list_meshes = (Eina_List *)evas_canvas3d_node_mesh_list_get(node); - EINA_LIST_FOREACH(list_meshes, l, mesh) - { - if (evas_canvas3d_mesh_color_pick_enable_get(mesh)) - { - color = calloc(1, sizeof(Evas_Color)); - - if (!eina_hash_population(scene_data->node_mesh_colors)) - key = _generate_unic_color_key(color, &scene_data->bg_color, - node, mesh, EINA_TRUE); - else - key = _generate_unic_color_key(color, &scene_data->bg_color, - node, mesh, EINA_FALSE); - - datakey = eina_stringshare_printf("%f %f %f", color->r, color->g, color->b); - eina_hash_add(scene_data->node_mesh_colors, key, color); - arr = eina_array_new(2); - eina_array_push(arr, (void *)node); - eina_array_push(arr, (void *)mesh); - eina_hash_add(scene_data->colors_node_mesh, datakey, arr); - } - } - } - else - return EINA_FALSE; - } - return EINA_TRUE; -} - -Eina_Bool -evas_canvas3d_node_light_collect(Evas_Canvas3D_Node *node, void *data) -{ - Evas_Canvas3D_Scene_Public_Data *scene_data = (Evas_Canvas3D_Scene_Public_Data *)data; - Evas_Canvas3D_Node_Data *pd = efl_data_scope_get(node, MY_CLASS); - if (pd->type == EVAS_CANVAS3D_NODE_TYPE_LIGHT) - scene_data->light_nodes = eina_list_append(scene_data->light_nodes, node); - - return EINA_TRUE; -} - -EAPI Evas_Canvas3D_Node * -evas_canvas3d_node_add(Evas *e, Evas_Canvas3D_Node_Type type) -{ - MAGIC_CHECK(e, Evas, MAGIC_EVAS); - return NULL; - MAGIC_CHECK_END(); - return efl_add(MY_CLASS, e, evas_canvas3d_node_type_set(efl_added, type)); -} - -EOLIAN static Efl_Object * -_evas_canvas3d_node_efl_object_finalize(Eo *obj, Evas_Canvas3D_Node_Data *pd) -{ - if (pd->type == EVAS_CANVAS3D_NODE_TYPE_MESH) - { - pd->data.mesh.node_meshes = eina_hash_pointer_new(_node_mesh_free_func); - if (pd->data.mesh.node_meshes == NULL) - { - ERR("Failed to create node mesh table."); - _node_free(obj); - return NULL; - } - } - return obj; -} - -EOLIAN static Efl_Object * -_evas_canvas3d_node_efl_object_constructor(Eo *obj, Evas_Canvas3D_Node_Data *pd) -{ - efl_constructor(efl_super(obj, MY_CLASS)); - evas_canvas3d_object_type_set(obj, EVAS_CANVAS3D_OBJECT_TYPE_NODE); - - eina_vector3_set(&pd->position, 0.0, 0.0, 0.0); - eina_quaternion_set(&pd->orientation, 0.0, 0.0, 0.0, 1.0); - eina_vector3_set(&pd->scale, 1.0, 1.0, 1.0); - - eina_vector3_set(&pd->position_world, 0.0, 0.0, 0.0); - eina_quaternion_set(&pd->orientation_world, 0.0, 0.0, 0.0, 1.0); - eina_vector3_set(&pd->scale_world, 1.0, 1.0, 1.0); - - pd->position_inherit = EINA_TRUE; - pd->orientation_inherit = EINA_TRUE; - pd->scale_inherit = EINA_TRUE; - pd->data.mesh.node_meshes = 0; - pd->billboard_target = NULL; - pd->lod = EINA_FALSE; - - evas_box3_set(&pd->aabb, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); - return obj; -} - -EOLIAN static void -_evas_canvas3d_node_efl_object_destructor(Eo *obj, Evas_Canvas3D_Node_Data *pd EINA_UNUSED) -{ - _node_free(obj); - - efl_destructor(efl_super(obj, MY_CLASS)); -} - -EOLIAN static Evas_Canvas3D_Node_Type -_evas_canvas3d_node_node_type_get(const Eo *obj EINA_UNUSED, Evas_Canvas3D_Node_Data *pd) -{ - return pd->type; -} - -EOLIAN static void -_evas_canvas3d_node_node_type_set(Eo *obj EINA_UNUSED, Evas_Canvas3D_Node_Data *pd, Evas_Canvas3D_Node_Type type) -{ - pd->type = type; -} - -EOLIAN static void -_evas_canvas3d_node_member_add(Eo *obj, Evas_Canvas3D_Node_Data *pd, Evas_Canvas3D_Node *member) -{ - if (obj == member) - { - ERR("Failed to add a member node (adding to itself)."); - return; - } - Evas_Canvas3D_Node_Data *pdmember = efl_data_scope_get(member, MY_CLASS); - if (!pdmember || pdmember->parent == obj) - return; - - if (pdmember->parent) - { - /* Detaching from previous parent. */ - Evas_Canvas3D_Node_Data *pdmemberparent = efl_data_scope_get(pdmember->parent, MY_CLASS); - pdmemberparent->members = eina_list_remove(pdmemberparent->members, member); - - /* Mark changed. */ - evas_canvas3d_object_change(pdmember->parent, EVAS_CANVAS3D_STATE_NODE_MEMBER, NULL); - } - else - { - /* Should get a new reference. */ - efl_ref(member); - } - - /* Add the member node. */ - pd->members = eina_list_append(pd->members, (const void *)member); - pdmember->parent = obj; - - /* Mark changed. */ - evas_canvas3d_object_change(obj, EVAS_CANVAS3D_STATE_NODE_MEMBER, NULL); - evas_canvas3d_object_change(member, EVAS_CANVAS3D_STATE_NODE_PARENT_ORIENTATION, NULL); - evas_canvas3d_object_change(member, EVAS_CANVAS3D_STATE_NODE_PARENT_POSITION, NULL); - evas_canvas3d_object_change(member, EVAS_CANVAS3D_STATE_NODE_PARENT_SCALE, NULL); -} - -EOLIAN static void -_evas_canvas3d_node_member_del(Eo *obj, Evas_Canvas3D_Node_Data *pd, Evas_Canvas3D_Node *member) -{ - Evas_Canvas3D_Node_Data *pdmember = efl_data_scope_get(member, MY_CLASS); - if (!pdmember || pdmember->parent != obj) - { - ERR("Failed to delete a member node (not a member of the given node)"); - return; - } - - /* Delete the member node. */ - pd->members = eina_list_remove(pd->members, member); - pdmember->parent = NULL; - - /* Mark modified object as changed. */ - evas_canvas3d_object_change(obj, EVAS_CANVAS3D_STATE_NODE_MEMBER, NULL); - evas_canvas3d_object_change(member, EVAS_CANVAS3D_STATE_NODE_PARENT_ORIENTATION, NULL); - evas_canvas3d_object_change(member, EVAS_CANVAS3D_STATE_NODE_PARENT_POSITION, NULL); - evas_canvas3d_object_change(member, EVAS_CANVAS3D_STATE_NODE_PARENT_SCALE, NULL); - - /* Decrease reference count. */ - efl_unref(member); -} - -EOLIAN static Evas_Canvas3D_Node * -_evas_canvas3d_node_parent_get(const Eo *obj EINA_UNUSED, Evas_Canvas3D_Node_Data *pd) -{ - return pd->parent; -} - -EOLIAN static const Eina_List * -_evas_canvas3d_node_member_list_get(const Eo *obj EINA_UNUSED, Evas_Canvas3D_Node_Data *pd) -{ - return pd->members; -} - -EOLIAN static void -_evas_canvas3d_node_position_set(Eo *obj, Evas_Canvas3D_Node_Data *pd, Evas_Real x, Evas_Real y, Evas_Real z) -{ - pd->position.x = x; - pd->position.y = y; - pd->position.z = z; - - evas_canvas3d_object_change(obj, EVAS_CANVAS3D_STATE_NODE_TRANSFORM_POSITION, NULL); -} - -EOLIAN static void -_evas_canvas3d_node_orientation_set(Eo *obj, Evas_Canvas3D_Node_Data *pd, Evas_Real x, Evas_Real y, Evas_Real z, Evas_Real w) -{ - pd->orientation.x = x; - pd->orientation.y = y; - pd->orientation.z = z; - pd->orientation.w = w; - - evas_canvas3d_object_change(obj, EVAS_CANVAS3D_STATE_NODE_TRANSFORM_ORIENTATION, NULL); -} - -EOLIAN static void -_evas_canvas3d_node_orientation_angle_axis_set(Eo *obj, Evas_Canvas3D_Node_Data *pd, - Evas_Real angle, Evas_Real x, Evas_Real y, Evas_Real z) -{ - Evas_Real half_angle = 0.5 * DEGREE_TO_RADIAN(angle); - Evas_Real s = sin(half_angle); - Eina_Vector3 axis; - - eina_vector3_set(&axis, x, y, z); - eina_vector3_normalize(&axis, &axis); - - pd->orientation.w = cos(half_angle); - pd->orientation.x = s * axis.x; - pd->orientation.y = s * axis.y; - pd->orientation.z = s * axis.z; - - evas_canvas3d_object_change(obj, EVAS_CANVAS3D_STATE_NODE_TRANSFORM_ORIENTATION, NULL); -} - -EOLIAN static void -_evas_canvas3d_node_scale_set(Eo *obj, Evas_Canvas3D_Node_Data *pd, Evas_Real x, Evas_Real y, Evas_Real z) -{ - pd->scale.x = x; - pd->scale.y = y; - pd->scale.z = z; - - evas_canvas3d_object_change(obj, EVAS_CANVAS3D_STATE_NODE_TRANSFORM_SCALE, NULL); -} - -EOLIAN static void -_evas_canvas3d_node_position_get(const Eo *obj, Evas_Canvas3D_Node_Data *pd, Evas_Canvas3D_Space space, - Evas_Real *x, Evas_Real *y, Evas_Real *z) -{ - if (space == EVAS_CANVAS3D_SPACE_LOCAL) - { - if (x) *x = 0.0; - if (y) *y = 0.0; - if (z) *z = 0.0; - } - else if (space == EVAS_CANVAS3D_SPACE_PARENT) - { - if (x) *x = pd->position.x; - if (y) *y = pd->position.y; - if (z) *z = pd->position.z; - } - else if (space == EVAS_CANVAS3D_SPACE_WORLD) - { - evas_canvas3d_object_update((Eo *) obj); - - if (x) *x = pd->position_world.x; - if (y) *y = pd->position_world.y; - if (z) *z = pd->position_world.z; - } -} - -EOLIAN static void -_evas_canvas3d_node_orientation_get(const Eo *obj, Evas_Canvas3D_Node_Data *pd, Evas_Canvas3D_Space space, - Evas_Real *x, Evas_Real *y, Evas_Real *z, Evas_Real *w) -{ - if (space == EVAS_CANVAS3D_SPACE_LOCAL) - { - if (x) *x = 0.0; - if (y) *y = 0.0; - if (z) *z = 0.0; - if (w) *w = 0.0; - } - else if (space == EVAS_CANVAS3D_SPACE_PARENT) - { - if (x) *x = pd->orientation.x; - if (y) *y = pd->orientation.y; - if (z) *z = pd->orientation.z; - if (w) *w = pd->orientation.w; - } - else if (space == EVAS_CANVAS3D_SPACE_WORLD) - { - evas_canvas3d_object_update((Eo *) obj); - - if (x) *x = pd->orientation_world.x; - if (y) *y = pd->orientation_world.y; - if (z) *z = pd->orientation_world.z; - if (w) *w = pd->orientation_world.w; - } - -} - -EOLIAN static void -_evas_canvas3d_node_scale_get(const Eo *obj, Evas_Canvas3D_Node_Data *pd, Evas_Canvas3D_Space space, - Evas_Real *x, Evas_Real *y, Evas_Real *z) -{ - if (space == EVAS_CANVAS3D_SPACE_LOCAL) - { - if (x) *x = 0.0; - if (y) *y = 0.0; - if (z) *z = 0.0; - } - else if (space == EVAS_CANVAS3D_SPACE_PARENT) - { - if (x) *x = pd->scale.x; - if (y) *y = pd->scale.y; - if (z) *z = pd->scale.z; - } - else if (space == EVAS_CANVAS3D_SPACE_WORLD) - { - evas_canvas3d_object_update((Eo *) obj); - - if (x) *x = pd->scale_world.x; - if (y) *y = pd->scale_world.y; - if (z) *z = pd->scale_world.z; - } -} - -EOLIAN static void -_evas_canvas3d_node_position_inherit_set(Eo *obj, Evas_Canvas3D_Node_Data *pd, Eina_Bool inherit) -{ - pd->position_inherit = inherit; - evas_canvas3d_object_change(obj, EVAS_CANVAS3D_STATE_NODE_TRANSFORM_POSITION, NULL); -} - -EOLIAN static void -_evas_canvas3d_node_orientation_inherit_set(Eo *obj, Evas_Canvas3D_Node_Data *pd, Eina_Bool inherit) -{ - pd->orientation_inherit = inherit; - evas_canvas3d_object_change(obj, EVAS_CANVAS3D_STATE_NODE_TRANSFORM_ORIENTATION, NULL); -} - -EOLIAN static void -_evas_canvas3d_node_scale_inherit_set(Eo *obj, Evas_Canvas3D_Node_Data *pd, Eina_Bool inherit) -{ - pd->scale_inherit = inherit; - evas_canvas3d_object_change(obj, EVAS_CANVAS3D_STATE_NODE_TRANSFORM_SCALE, NULL); -} - -EOLIAN static Eina_Bool -_evas_canvas3d_node_position_inherit_get(const Eo *obj EINA_UNUSED, Evas_Canvas3D_Node_Data *pd) -{ - return pd->position_inherit; -} - -EOLIAN static Eina_Bool -_evas_canvas3d_node_orientation_inherit_get(const Eo *obj EINA_UNUSED, Evas_Canvas3D_Node_Data *pd) -{ - return pd->orientation_inherit; -} - -EOLIAN static Eina_Bool -_evas_canvas3d_node_scale_inherit_get(const Eo *obj EINA_UNUSED, Evas_Canvas3D_Node_Data *pd) -{ - return pd->scale_inherit; -} - -static void -_look_at_set(Evas_Canvas3D_Node_Data *pd, Eina_Vector3 *target, Eina_Vector3 *up) -{ - Eina_Vector3 x, y, z; - - eina_vector3_subtract(&z, &pd->position, target); - eina_vector3_normalize(&z, &z); - - eina_vector3_cross_product(&x, up, &z); - eina_vector3_normalize(&x, &x); - - eina_vector3_cross_product(&y, &z, &x); - eina_vector3_normalize(&y, &y); - - /* Below matrix to quaternion conversion code taken from - * http://fabiensanglard.net/doom3_documentation/37726-293748.pdf - * When any license issue occurs, use ken shoemake's algorithm instead. - */ - - if (x.x + y.y + z.z > 0.0) - { - Evas_Real t = x.x + y.y + z.z + 1.0; - Evas_Real s = evas_reciprocal_sqrt(t) * 0.5; - - pd->orientation.w = s * t; - pd->orientation.z = (x.y - y.x) * s; - pd->orientation.y = (z.x - x.z) * s; - pd->orientation.x = (y.z - z.y) * s; - } - else if (x.x > y.y && x.x > z.z) - { - Evas_Real t = x.x - y.y - z.z + 1.0; - Evas_Real s = evas_reciprocal_sqrt(t) * 0.5; - - pd->orientation.x = s * t; - pd->orientation.y = (x.y + y.x) * s; - pd->orientation.z = (z.x + x.z) * s; - pd->orientation.w = (y.z - z.y) * s; - } - else if (y.y > z.z) - { - Evas_Real t = -x.x + y.y - z.z + 1.0; - Evas_Real s = evas_reciprocal_sqrt(t) * 0.5; - - pd->orientation.y = s * t; - pd->orientation.x = (x.y + y.x) * s; - pd->orientation.w = (z.x - x.z) * s; - pd->orientation.z = (y.z + z.y) * s; - } - else - { - Evas_Real t = -x.x - y.y + z.z + 1.0; - Evas_Real s = evas_reciprocal_sqrt(t) * 0.5; - - pd->orientation.z = s * t; - pd->orientation.w = (x.y - y.x) * s; - pd->orientation.x = (z.x + x.z) * s; - pd->orientation.y = (y.z + z.y) * s; - } -} - -EOLIAN static void -_evas_canvas3d_node_look_at_set(Eo *obj, Evas_Canvas3D_Node_Data *pd, - Evas_Canvas3D_Space target_space, Evas_Real tx, Evas_Real ty, Evas_Real tz, - Evas_Canvas3D_Space up_space, Evas_Real ux, Evas_Real uy, Evas_Real uz) -{ - Eina_Vector3 target; - Eina_Vector3 up; - - /* Target position in parent space. */ - if (target_space == EVAS_CANVAS3D_SPACE_LOCAL) - { - ERR("TODO:"); - return; - } - else if (target_space == EVAS_CANVAS3D_SPACE_PARENT) - { - eina_vector3_set(&target, tx, ty, tz); - } - else if (target_space == EVAS_CANVAS3D_SPACE_WORLD) - { - ERR("TODO:"); - return; - - } - else - { - ERR("Invalid coordinate space."); - return; - } - - if (up_space == EVAS_CANVAS3D_SPACE_LOCAL) - { - eina_vector3_set(&up, ux, uy, uz); - //ERR("TODO:"); - //return; - } - else if (up_space == EVAS_CANVAS3D_SPACE_PARENT) - { - eina_vector3_set(&up, ux, uy, uz); - } - else if (up_space == EVAS_CANVAS3D_SPACE_WORLD) - { - ERR("TODO:"); - return; - } - else - { - ERR("Invalid coordinate space."); - return; - } - - _look_at_set(pd, &target, &up); - - evas_canvas3d_object_change(obj, EVAS_CANVAS3D_STATE_NODE_TRANSFORM_ORIENTATION, NULL); -} - -EOLIAN static void -_evas_canvas3d_node_camera_set(Eo *obj, Evas_Canvas3D_Node_Data *pd, Evas_Canvas3D_Camera *camera) -{ - if (pd->type != EVAS_CANVAS3D_NODE_TYPE_CAMERA) - { - ERR("Node type mismatch."); - return; - } - - if (pd->data.camera.camera == camera) - return; - - if (pd->data.camera.camera) - { - /* Detach previous camera object. */ - evas_canvas3d_camera_node_del(pd->data.camera.camera, obj); - efl_unref(pd->data.camera.camera); - } - - pd->data.camera.camera = camera; - efl_ref(camera); - - /* Register change notification on the camera for this node. */ - evas_canvas3d_camera_node_add(camera, obj); - - /* Mark changed. */ - evas_canvas3d_object_change(obj, EVAS_CANVAS3D_STATE_NODE_CAMERA, NULL); -} - -EOLIAN static Evas_Canvas3D_Camera * -_evas_canvas3d_node_camera_get(const Eo *obj EINA_UNUSED, Evas_Canvas3D_Node_Data *pd) -{ - return pd->data.camera.camera; -} - -EOLIAN static void -_evas_canvas3d_node_light_set(Eo *obj, Evas_Canvas3D_Node_Data *pd, Evas_Canvas3D_Light *light) -{ - if (pd->type != EVAS_CANVAS3D_NODE_TYPE_LIGHT) - { - ERR("Node type mismatch."); - return; - } - - if (pd->data.light.light == light) - return; - - if (pd->data.light.light) - { - /* Detach previous light object. */ - evas_canvas3d_light_node_del(pd->data.light.light, obj); - efl_unref(pd->data.light.light); - } - - pd->data.light.light = light; - efl_ref(light); - - /* Register change notification on the light for this node. */ - evas_canvas3d_light_node_add(light, obj); - - /* Mark changed. */ - evas_canvas3d_object_change(obj, EVAS_CANVAS3D_STATE_NODE_LIGHT, NULL); -} - -EOLIAN static Evas_Canvas3D_Light * -_evas_canvas3d_node_light_get(const Eo *obj EINA_UNUSED, Evas_Canvas3D_Node_Data *pd) -{ - return pd->data.light.light; -} - -EOLIAN static void -_evas_canvas3d_node_mesh_add(Eo *obj, Evas_Canvas3D_Node_Data *pd, Evas_Canvas3D_Mesh *mesh) -{ - Evas_Canvas3D_Node_Mesh *nm = NULL; - - if (pd->type != EVAS_CANVAS3D_NODE_TYPE_MESH) - { - ERR("Node type mismatch."); - return; - } - - if (eina_hash_find(pd->data.mesh.node_meshes, &mesh) != NULL) - { - ERR("The mesh is already added to the node."); - return; - } - - if ((nm = _node_mesh_new(obj, mesh)) == NULL) - { - ERR("Failed to create node mesh."); - return; - } - - /* TODO: Find node mesh and add if it does not exist. */ - if (!eina_hash_add(pd->data.mesh.node_meshes, &mesh, nm)) - { - ERR("Failed to add a mesh to mesh table."); - _node_mesh_free(nm); - return; - } - - pd->data.mesh.meshes = eina_list_append(pd->data.mesh.meshes, mesh); - efl_ref(mesh); - - /* Register change notification. */ - evas_canvas3d_mesh_node_add(mesh, obj); - - /* Mark changed. */ - evas_canvas3d_object_change(obj, EVAS_CANVAS3D_STATE_NODE_MESH_GEOMETRY, NULL); - evas_canvas3d_object_change(obj, EVAS_CANVAS3D_STATE_NODE_MESH_MATERIAL, NULL); -} - -EOLIAN static void -_evas_canvas3d_node_mesh_del(Eo *obj, Evas_Canvas3D_Node_Data *pd, Evas_Canvas3D_Mesh *mesh) -{ - if (pd->type != EVAS_CANVAS3D_NODE_TYPE_MESH) - { - ERR("Node type mismatch."); - return; - } - - if (!eina_hash_del(pd->data.mesh.node_meshes, &mesh, NULL)) - { - ERR("The given mesh doesn't belong to this node."); - return; - } - - pd->data.mesh.meshes = eina_list_remove(pd->data.mesh.meshes, mesh); - evas_canvas3d_mesh_node_del(mesh, obj); - efl_unref(mesh); - - evas_canvas3d_object_change(obj, EVAS_CANVAS3D_STATE_NODE_MESH_GEOMETRY, NULL); - evas_canvas3d_object_change(obj, EVAS_CANVAS3D_STATE_NODE_MESH_MATERIAL, NULL); -} - -EOLIAN static const Eina_List * -_evas_canvas3d_node_mesh_list_get(const Eo *obj EINA_UNUSED, Evas_Canvas3D_Node_Data *pd) -{ - return pd->data.mesh.meshes; -} - -EOLIAN static void -_evas_canvas3d_node_mesh_frame_set(Eo *obj, Evas_Canvas3D_Node_Data *pd, Evas_Canvas3D_Mesh *mesh, int frame) -{ - Evas_Canvas3D_Node_Mesh *nm = NULL; - - if (pd->type != EVAS_CANVAS3D_NODE_TYPE_MESH) - { - ERR("Node type mismatch."); - return; - } - - if ((nm = eina_hash_find(pd->data.mesh.node_meshes, &mesh)) == NULL) - { - ERR("The given mesh doesn't belongs to this node."); - return; - } - - nm->frame = frame; - evas_canvas3d_object_change(obj, EVAS_CANVAS3D_STATE_NODE_MESH_FRAME, NULL); -} - -EOLIAN static int -_evas_canvas3d_node_mesh_frame_get(const Eo *obj EINA_UNUSED, Evas_Canvas3D_Node_Data *pd, Evas_Canvas3D_Mesh *mesh) -{ - Evas_Canvas3D_Node_Mesh *nm = NULL; - - if (pd->type != EVAS_CANVAS3D_NODE_TYPE_MESH) - { - ERR("Node type mismatch."); - return 0; - } - - if ((nm = eina_hash_find(pd->data.mesh.node_meshes, &mesh)) == NULL) - { - ERR("The given mesh doesn't belongs to this node."); - return 0; - } - - return nm->frame; -} - -EOLIAN static void -_evas_canvas3d_node_bounding_box_get(Eo *obj EINA_UNUSED, Evas_Canvas3D_Node_Data *pd, Evas_Real *x, Evas_Real *y, Evas_Real *z, Evas_Real *x2, Evas_Real *y2, Evas_Real *z2) -{ - evas_canvas3d_object_update(obj); - evas_canvas3d_node_tree_traverse(obj, EVAS_CANVAS3D_TREE_TRAVERSE_LEVEL_ORDER, EINA_FALSE, - node_aabb_update, NULL); - - if (x) *x = pd->aabb.p0.x; - if (y) *y = pd->aabb.p0.y; - if (z) *z = pd->aabb.p0.z; - if (x2) *x2 = pd->aabb.p1.x; - if (y2) *y2 = pd->aabb.p1.y; - if (z2) *z2 = pd->aabb.p1.z; -} - -EOLIAN static void -_evas_canvas3d_node_bounding_sphere_get(Eo *obj EINA_UNUSED, Evas_Canvas3D_Node_Data *pd, Evas_Real *x, Evas_Real *y, Evas_Real *z, Evas_Real *r) -{ - evas_canvas3d_object_update(obj); - evas_canvas3d_node_tree_traverse(obj, EVAS_CANVAS3D_TREE_TRAVERSE_LEVEL_ORDER, EINA_FALSE, - node_aabb_update, NULL); - - if (x) *x = pd->bsphere.center.x; - if (y) *y = pd->bsphere.center.y; - if (z) *z = pd->bsphere.center.z; - if (r) *r = pd->bsphere.radius; -} - -EOLIAN static void -_evas_canvas3d_node_billboard_target_set(Eo *obj EINA_UNUSED, Evas_Canvas3D_Node_Data *pd, - Eo *target) -{ - if (pd->billboard_target != target) - { - pd->billboard_target = target; - evas_canvas3d_object_change(obj, EVAS_CANVAS3D_STATE_NODE_PARENT_BILLBOARD, NULL); - } -} - -EOLIAN static Evas_Canvas3D_Node * -_evas_canvas3d_node_billboard_target_get(const Eo *obj EINA_UNUSED, Evas_Canvas3D_Node_Data *pd) -{ - return pd->billboard_target; -} - -EOLIAN static void -_evas_canvas3d_node_lod_enable_set(Eo *obj, Evas_Canvas3D_Node_Data *pd, - Eina_Bool enable) -{ - pd->lod = enable; - evas_canvas3d_object_change(obj, EVAS_CANVAS3D_STATE_NODE_LOD, NULL); -} - -EOLIAN static Eina_Bool -_evas_canvas3d_node_lod_enable_get(const Eo *obj EINA_UNUSED, Evas_Canvas3D_Node_Data *pd) -{ - return pd->lod; -} -#include "canvas/evas_canvas3d_node.eo.c" diff --git a/src/lib/evas/canvas/evas_canvas3d_node.eo b/src/lib/evas/canvas/evas_canvas3d_node.eo deleted file mode 100644 index 900bbd6b53..0000000000 --- a/src/lib/evas/canvas/evas_canvas3d_node.eo +++ /dev/null @@ -1,368 +0,0 @@ -import evas_canvas3d_types; - -class @beta Evas.Canvas3D.Node extends Evas.Canvas3D.Object -{ - [[Evas 3D canvas node class]] - data: Evas_Canvas3D_Node_Data; - methods { - @property node_type { - [[Get the type of the given node. - - See also @Evas.Canvas3D.Node.member_add.]] - set { - [[Type can only be set before finalize.]] - } - get { - [[If the object is not node object, returns $unknown.]] - } - values { - type: Evas.Canvas3D.Node_Type(Evas.Canvas3D.Node_Type.unknown); [[Node type]] - } - } - member_add { - [[Add a member node to the given node. - - Nodes can be constructed into N-ary tree structure like other ordinary scene - graphs. A node inherit transforms from its parent. - - See also @Evas.Canvas3D.Node.parent_get.]] - - params { - @in member: Evas.Canvas3D.Node; [[Node object to be added.]] - } - } - member_del { - [[Delete a member node from the given node. - - See also @Evas.Canvas3D.Node.member_add.]] - params { - @in member: Evas.Canvas3D.Node; [[Member node to be deleted from the given node.]] - } - } - - parent_get @const { - [[Get the parent node of the given node. - - See also @Evas.Canvas3D.Node.member_add.]] - return: Evas.Canvas3D.Node; [[The parent node of the given node.]] - } - - member_list_get @const { - [[Get the list of member nodes of the given node. - - See also @Evas.Canvas3D.Node.member_add.]] - return: const(list); [[The list of member nodes if any or $null if there are none.]] - } - scene_root_get { - [[Get hash table of scenes using this node as root.]] - /* FIXME: void_ptr is actually uintptr and that is also wrong */ - return: hash; [[ scenes using this node as root. FIXME: Actually a scene, not object.]] - } - position_set { - [[Set the position of the given node. - - According to the inheritance flag, (x, y, z) can be a world space position or - parent space position. - - Default position is (0.0, 0.0, 0.0). - - See also @Evas.Canvas3D.Node.position_inherit.set.]] - params { - @in x: Evas.Real; [[X coordinate of the position.]] - @in y: Evas.Real; [[Y coordinate of the position.]] - @in z: Evas.Real; [[Z coordinate of the position.]] - } - } - orientation_set { - [[Set the orientation of the given node using quaternion. - - According the the inheritance flag, (w, x, y, z) can be a world space - orientation or parent space orientation. - - Default orientation is (1.0, 0.0, 0.0, 0.0) (identity quaternion). - - See also @Evas.Canvas3D.Node.orientation_inherit.set.]] - params { - @in x: Evas.Real; [[X term of the orientation quaternion (w, x, y, z.]] - @in y: Evas.Real; [[Y term of the orientation quaternion (w, x, y, z.]] - @in z: Evas.Real; [[Z term of the orientation quaternion (w, x, y, z.]] - @in w: Evas.Real; [[W term of the orientation quaternion (w, x, y, z.]] - } - } - - orientation_angle_axis_set { - [[Set the orientation of the given node using axis-angle. - - See also @Evas.Canvas3D.Node.orientation_set.]] - params { - @in angle: Evas.Real; [[Rotation angle.]] - @in x: Evas.Real; [[X term of the rotation axis.]] - @in y: Evas.Real; [[Y term of the rotation axis.]] - @in z: Evas.Real; [[Z term of the rotation axis.]] - } - } - - scale_set { - [[Set the scale of the given node. - - According to the inheritance flag, (x, y, z) can be a world space scale or - parent space scale. Be careful when using non-uniform scale factor with - inheritance, each transform attributes are not affected by other attributes. - - Default scale is (1.0, 1.0, 1.0). - - See also @Evas.Canvas3D.Node.scale_inherit.set.]] - params { - @in x: Evas.Real; [[Scale factor along X-axis.]] - @in y: Evas.Real; [[Scale factor along Y-axis.]] - @in z: Evas.Real; [[Scale factor along Z-axis.]] - } - } - - position_get @const { - [[Get the position of the given node. - - See also @Evas.Canvas3D.Node.position_set.]] - params { - @in space: Evas.Canvas3D.Space; [[The given node.]] - @out x: Evas.Real; [[Pointer to receive X coordinate of the position.]] - @out y: Evas.Real; [[Pointer to receive Y coordinate of the position.]] - @out z: Evas.Real; [[Pointer to receive Z coordinate of the position.]] - } - } - - orientation_get @const { - [[Get the orientation of the given node as quaternion. - - See also @Evas.Canvas3D.Node.orientation_set.]] - params { - @in space: Evas.Canvas3D.Space; [[The given node.]] - @out x: Evas.Real; [[Pointer to receive X term of the orientation quaternion.]] - @out y: Evas.Real; [[Pointer to receive Y term of the orientation quaternion.]] - @out z: Evas.Real; [[Pointer to receive Z term of the orientation quaternion.]] - @out w: Evas.Real; [[Pointer to receive W term of the orientation quaternion.]] - } - } - - scale_get @const { - [[Get the scale of the given node. - - See also @Evas.Canvas3D.Node.scale_get.]] - params { - @in space: Evas.Canvas3D.Space; [[The given node.]] - @out x: Evas.Real; [[Pointer to receive Scale factor along X-axis.]] - @out y: Evas.Real; [[Pointer to receive Scale factor along X-axis.]] - @out z: Evas.Real; [[Pointer to receive Scale factor along X-axis.]] - } - } - - look_at_set { - [[Rotate the given node to look at desired position. - - This function rotate the given node so that its forward vector (negative - Z-axis) points to the desired position and the up vector coincide with the - given up vector. - - See also @Evas.Canvas3D.Node.orientation_set.]] - params { - @in target_space: Evas.Canvas3D.Space; [[Space where the target position belongs to.]] - @in x: Evas.Real; [[X coordinate of the target position.]] - @in y: Evas.Real; [[Y coordinate of the target position.]] - @in z: Evas.Real; [[Z coordinate of the target position.]] - @in up_space: Evas.Canvas3D.Space; [[Space where the up vector belongs to.]] - @in ux: Evas.Real; [[X term of the up vector.]] - @in uy: Evas.Real; [[Y term of the up vector.]] - @in uz: Evas.Real; [[Z term of the up vector.]] - } - } - - mesh_add { - [[Add a mesh to the given node. - - If the node is not of type EVAS_CANVAS3D_NODE_TYPE_MESH, error message will be - generated and nothing happens. - - See also @Evas.Canvas3D.Node.member_add.]] - params { - @in mesh: Evas.Canvas3D.Mesh; [[The mesh to be added.]] - } - } - - mesh_del { - [[Delete a mesh from the given node. - - If the node is not of type EVAS_CANVAS3D_NODE_TYPE_MESH or the given mesh does not - belong to the given node, error message will be gnerated and nothing happens. - - See also @Evas.Canvas3D.Node.mesh_add.]] - params { - @in mesh: Evas.Canvas3D.Mesh; [[The mesh to be deleted.]] - } - } - - mesh_list_get @const { - [[Get the list of meshes of the given node. - - If the node is not of type EVAS_CANVAS3D_NODE_TYPE_MESH, error message will be - generated and $null will be returned. If there're no meshes in the given - node, $null will be returned. - - See also @Evas.Canvas3D.Node.mesh_add.]] - return: const(list); [[The list of meshes if any, or $null if there're none.]] - } - - bounding_box_get{ - [[Get axis-aligned bounding box (AABB) of the given node.]] - params { - @in x: ptr(Evas.Real); [[Pointer to receive X coordinate of the first point of AABB.]] - @in y: ptr(Evas.Real); [[Pointer to receive Y coordinate of the first point of AABB.]] - @in z: ptr(Evas.Real); [[Pointer to receive Z coordinate of the first point of AABB.]] - @in x2: ptr(Evas.Real); [[Pointer to receive X coordinate of the second point of AABB.]] - @in y2: ptr(Evas.Real); [[Pointer to receive Y coordinate of the second point of AABB.]] - @in z2: ptr(Evas.Real); [[Pointer to receive Z coordinate of the second point of AABB.]] - } - } - - bounding_sphere_get { - [[Get bounding sphere of the given node.]] - params { - - @in x: ptr(Evas.Real); [[Pointer to receive X coordinate of the center of sphere.]] - @in y: ptr(Evas.Real); [[Pointer to receive Y coordinate of the center of sphere.]] - @in z: ptr(Evas.Real); [[Pointer to receive Z coordinate of center of sphere.]] - @in r: ptr(Evas.Real); [[Pointer to receive radius of center of sphere.]] - } - } - - @property position_inherit { - [[The position inheritance flag of the given node. - - When inheritance is enabled, a node's world space position is determined by - adding the parent node's world position and the node's position. Otherwise - the node's position will be the world space position.]] - set { - } - get { - } - values { - inherit: bool; [[Whether to inherit parent position.]] - } - } - - @property orientation_inherit { - [[The orientation inheritance flag of the given node. - - When inheritance is enabled, a node's world space orientation is determined - by multiplying the parent node's world orientation and the node's - orientation. Otherwise the node's orientation will be the world space - orientation.]] - set { - } - get { - } - values { - inherit: bool; [[Whether to inherit parent orientation.]] - } - } - - @property scale_inherit { - [[The scale inheritance flag of the given node. - - When inheritance is enabled, a node's world space scale is determined by - multiplying the parent node's world scale and the node's scale. Otherwise - the node's scale will be the world space scale.]] - set { - } - get { - } - values { - inherit: bool; [[Whether to inherit parent scale.]] - } - } - - @property camera { - [[A camera attached to the given node. - - If the node is not of type EVAS_CANVAS3D_NODE_TYPE_CAMERA, error message will be - generated and nothing happens. - - See also @Evas.Canvas3D.Node.member_add.]] - set { - } - get { - } - values { - // FIXME: Evas_Canvas3D_Camera is necessary, but that introduces a cycle - camera: Evas.Canvas3D.Object; [[The camera of the given node if any, or $null if there're none.]] - } - } - - @property light { - [[A light attached to the given node. - - If the node is not of type EVAS_CANVAS3D_NODE_TYPE_LIGHT, error message will be - generated and nothing happens. - - See also @Evas.Canvas3D.Node.member_add.]] - set { - } - get { - } - values { - light: Evas.Canvas3D.Light; [[The light of the given node if any, or $null if there're none.]] - } - } - - @property mesh_frame { - [[The animation frame number of the given node for the given mesh. - - If the node is not of type EVAS_CANVAS3D_NODE_TYPE_MESH or the given mesh does not - belong to the given mesh error mesh will be generated and nothing happens. - - Default mesh frame is 0. - - See also @Evas.Canvas3D.Node.mesh_add.]] - set { - } - get { - } - keys { - mesh: Evas.Canvas3D.Mesh; [[The given mesh.]] - } - values { - frame: int; [[The animation frame number.]] - } - } - - @property billboard_target { - [[Set behavior of node like billboard object.]] - set { - } - get { - } - values { - target: Evas.Canvas3D.Node; [[The pointer to target node for billboard object, - or $null if there're none.]] - } - } - @property lod_enable { - [[Enable behavior of node like LOD object.]] - set { - } - get { - } - values { - enable: bool; [[status property (true/false)]] - } - } - } - implements { - Efl.Object.constructor; - Efl.Object.destructor; - Efl.Object.finalize; - Evas.Canvas3D.Object.update_notify; - Evas.Canvas3D.Object.change_notify; - Evas.Canvas3D.Object.callback_register; - Evas.Canvas3D.Object.callback_unregister; - } -} diff --git a/src/lib/evas/canvas/evas_canvas3d_node_callback.h b/src/lib/evas/canvas/evas_canvas3d_node_callback.h deleted file mode 100644 index d310ade12a..0000000000 --- a/src/lib/evas/canvas/evas_canvas3d_node_callback.h +++ /dev/null @@ -1,36 +0,0 @@ -/*Type of events and callbacks for object Evas_Canvas3D_Node*/ - -#define GET_CALLBACK_TYPE(check, type) \ - if (!(strcmp(type, "clicked"))) \ - check = PRIVATE_CALLBACK_CLICKED; \ - else if (!(strcmp(type, "collision"))) \ - check = PRIVATE_CALLBACK_COLLISION; \ - else \ - check = PRIVATE_CALLBACK_NONE; - -typedef enum _Evas_Canvas3D_Node_Private_Callback_Type -{ - PRIVATE_CALLBACK_CLICKED = 0, - PRIVATE_CALLBACK_COLLISION, - /*Insert here new type of callback*/ - PRIVATE_CALLBACK_NONE -} Evas_Canvas3D_Node_Private_Callback_Type; - -const Efl_Event_Description evas_canvas3d_node_private_event_desc[] = -{ - EFL_EVENT_DESCRIPTION("clicked,private"), - EFL_EVENT_DESCRIPTION("collision,private") -}; - -/*Private callbacks */ -static void -_evas_canvas3d_node_private_callback_clicked(void *data, const Efl_Event *event); -static void -_evas_canvas3d_node_private_callback_collision(void *data, const Efl_Event *event); - -Efl_Event_Cb evas_canvas3d_node_private_callback_functions[] = -{ - _evas_canvas3d_node_private_callback_clicked, - _evas_canvas3d_node_private_callback_collision, -}; - diff --git a/src/lib/evas/canvas/evas_canvas3d_object.c b/src/lib/evas/canvas/evas_canvas3d_object.c deleted file mode 100644 index aca9839e51..0000000000 --- a/src/lib/evas/canvas/evas_canvas3d_object.c +++ /dev/null @@ -1,101 +0,0 @@ -#include "evas_common_private.h" -#include "evas_private.h" - -#define MY_CLASS EVAS_CANVAS3D_OBJECT_CLASS - -EOLIAN static Eo * -_evas_canvas3d_object_efl_object_constructor(Eo *obj, Evas_Canvas3D_Object_Data *pd) -{ - Eo *e = NULL; - obj = efl_constructor(efl_super(obj, MY_CLASS)); - e = efl_parent_get(obj); - pd->evas = e; - pd->type = EVAS_CANVAS3D_OBJECT_TYPE_INVALID; - memset(&pd->dirty[0], 0x00, sizeof(Eina_Bool) * EVAS_CANVAS3D_STATE_MAX); - - return obj; -} - -EOLIAN static Evas * - _evas_canvas3d_object_efl_object_provider_find(const Eo *obj, Evas_Canvas3D_Object_Data *pd, const Efl_Class *klass) -{ - if (klass == EVAS_CANVAS_CLASS) - return pd->evas; - return efl_provider_find(efl_super(obj, MY_CLASS), klass); -} - -EOLIAN static void -_evas_canvas3d_object_type_set(Eo *obj EINA_UNUSED, Evas_Canvas3D_Object_Data *pd, Evas_Canvas3D_Object_Type type) -{ - pd->type = type; -} - -EOLIAN static Evas_Canvas3D_Object_Type -_evas_canvas3d_object_type_get(const Eo *obj EINA_UNUSED, Evas_Canvas3D_Object_Data *pd) -{ - return pd->type; -} - -EOLIAN static Eina_Bool -_evas_canvas3d_object_dirty_get(const Eo *obj EINA_UNUSED, Evas_Canvas3D_Object_Data *pd, Evas_Canvas3D_State state) -{ - return pd->dirty[state]; -} - -EOLIAN static void -_evas_canvas3d_object_change(Eo *obj, Evas_Canvas3D_Object_Data *pd, Evas_Canvas3D_State state, Evas_Canvas3D_Object *ref) -{ - /* Skip already dirty properties. */ - if (pd->dirty[state]) - return; - - pd->dirty[state] = EINA_TRUE; - pd->dirty[EVAS_CANVAS3D_STATE_ANY] = EINA_TRUE; - - evas_canvas3d_object_change_notify(obj, state, ref); -} - -EOLIAN static void -_evas_canvas3d_object_update(Eo *obj, Evas_Canvas3D_Object_Data *pd) -{ - if (!pd->dirty[EVAS_CANVAS3D_STATE_ANY]) - return; - - evas_canvas3d_object_update_notify(obj); - - memset(&pd->dirty[0], 0x00, sizeof(Eina_Bool) * EVAS_CANVAS3D_STATE_MAX); -} - -EOLIAN static Eina_Bool -_evas_canvas3d_object_efl_object_event_callback_priority_add(Eo *obj, - Evas_Canvas3D_Object_Data *pd EINA_UNUSED, - const Efl_Event_Description *desc, - Efl_Callback_Priority priority, - Efl_Event_Cb func, - const void *user_data) -{ - Eina_Bool r = EINA_FALSE; - - r = efl_event_callback_priority_add(efl_super(obj, MY_CLASS), desc, priority, func, user_data); - evas_canvas3d_object_callback_register(obj, desc->name, user_data); - - return r; -} - -EOLIAN static Eina_Bool -_evas_canvas3d_object_efl_object_event_callback_del(Eo *obj, Evas_Canvas3D_Object_Data *pd EINA_UNUSED, - const Efl_Event_Description *desc, - Efl_Event_Cb func, - const void *user_data) -{ - Eina_Bool r = EINA_FALSE; - r = efl_event_callback_del(efl_super(obj, MY_CLASS), desc, func, user_data); - if (r) evas_canvas3d_object_callback_unregister(obj, desc->name); - return r; -} - -#define EVAS_CANVAS3D_OBJECT_EXTRA_OPS \ - EFL_OBJECT_OP_FUNC(efl_event_callback_priority_add, _evas_canvas3d_object_efl_object_event_callback_priority_add), \ - EFL_OBJECT_OP_FUNC(efl_event_callback_del, _evas_canvas3d_object_efl_object_event_callback_del) - -#include "canvas/evas_canvas3d_object.eo.c" diff --git a/src/lib/evas/canvas/evas_canvas3d_object.eo b/src/lib/evas/canvas/evas_canvas3d_object.eo deleted file mode 100644 index c058cda77f..0000000000 --- a/src/lib/evas/canvas/evas_canvas3d_object.eo +++ /dev/null @@ -1,77 +0,0 @@ -import evas_canvas3d_types; - -abstract @beta Evas.Canvas3D.Object extends Efl.Object -{ - [[Evas 3D canvas object class]] - data: Evas_Canvas3D_Object_Data; - methods { - change { - [[Notify the object regarding its state change.]] - params { - @in state: Evas.Canvas3D.State; [[State that is changed.]] - @in ref: Evas.Canvas3D.Object; [[The Object that caused the change.]] - } - } - type_get @const { - [[Returns the type of the object.]] - return: Evas.Canvas3D.Object_Type; [[Object type]] - } - - type_set { - [[Sets the type of the object.]] - params{ - @in type: Evas.Canvas3D.Object_Type; [[Object type]] - } - } - - dirty_get @const { - [[Returns the status of a particular state of the object.]] - return: bool; [[$true if the status is dirty, $false otherwise]] - params { - @in state: Evas.Canvas3D.State; [[State whose status is being asked.]] - } - } - - update { - [[Update request for the object.]] - } - update_notify @pure_virtual { - [[Pure virtual update_notify function. - - Update request for the object.]] - } - - change_notify @pure_virtual { - [[Pure virtual change_notify function. - - Update request for the object.]] - params { - @in state: Evas.Canvas3D.State; [[State that is changed.]] - @in ref: Evas.Canvas3D.Object; [[The Object that caused the change.]] - } - } - callback_register @pure_virtual { - [[Pure virtual register samrt callback function.]] - params { - @in event: string; [[Event type.]] - @in data: const(void_ptr); [[User data.]] - } - } - callback_unregister @pure_virtual { - [[Pure virtual unregister smart callback function.]] - params { - @in event: string; [[Event type.]] - } - } - } - - implements { - Efl.Object.constructor; - Efl.Object.provider_find; - } - events { - /* FIXME: Make sure that these two events are actually being emitted */ - clicked: Evas.Canvas3D.Node; [[Clicked Event.]] - collision: Evas.Canvas3D.Node; [[Collision Event.]] - } -} diff --git a/src/lib/evas/canvas/evas_canvas3d_primitive.c b/src/lib/evas/canvas/evas_canvas3d_primitive.c deleted file mode 100644 index 45625df424..0000000000 --- a/src/lib/evas/canvas/evas_canvas3d_primitive.c +++ /dev/null @@ -1,152 +0,0 @@ -#include "evas_common_private.h" -#include "evas_private.h" - -#define MY_CLASS EVAS_CANVAS3D_PRIMITIVE_CLASS - -static inline void -_primitive_init(Evas_Canvas3D_Primitive_Data *pd) -{ - pd->form = EVAS_CANVAS3D_MESH_PRIMITIVE_NONE; - pd->ratio = 3.0; - pd->precision = 10; - pd->surface = NULL; - pd->tex_scale.x = 1.0; - pd->tex_scale.y = 1.0; -} - -EAPI Evas_Canvas3D_Primitive * -evas_canvas3d_primitive_add(Evas *e) -{ - MAGIC_CHECK(e, Evas, MAGIC_EVAS); - return NULL; - MAGIC_CHECK_END(); - return efl_add(MY_CLASS, e); -} - -EOLIAN static Eo * -_evas_canvas3d_primitive_efl_object_constructor(Eo *obj, Evas_Canvas3D_Primitive_Data *pd) -{ - obj = efl_constructor(efl_super(obj, MY_CLASS)); - evas_canvas3d_object_type_set(obj, EVAS_CANVAS3D_OBJECT_TYPE_PRIMITIVE); - _primitive_init(pd); - - return obj; -} - -EOLIAN static void -_evas_canvas3d_primitive_efl_object_destructor(Eo *obj, Evas_Canvas3D_Primitive_Data *pd EINA_UNUSED) -{ - efl_destructor(efl_super(obj, MY_CLASS)); -} - -EOLIAN static void -_evas_canvas3d_primitive_form_set(Eo *obj EINA_UNUSED, - Evas_Canvas3D_Primitive_Data *pd, - Evas_Canvas3D_Mesh_Primitive form) -{ - if (form >= EVAS_CANVAS3D_MESH_PRIMITIVE_COUNT) - { - ERR("Wrong form of primitive."); - return; - } - - if (pd->form != form) - pd->form = form; -} - -EOLIAN static Evas_Canvas3D_Mesh_Primitive -_evas_canvas3d_primitive_form_get(const Eo *obj EINA_UNUSED, - Evas_Canvas3D_Primitive_Data *pd) -{ - return pd->form; -} - -EOLIAN static void -_evas_canvas3d_primitive_mode_set(Eo *obj EINA_UNUSED, - Evas_Canvas3D_Primitive_Data *pd, - Evas_Canvas3D_Primitive_Mode mode) -{ - if (pd->mode != mode) - pd->mode = mode; -} - -EOLIAN static Evas_Canvas3D_Primitive_Mode -_evas_canvas3d_primitive_mode_get(const Eo *obj EINA_UNUSED, - Evas_Canvas3D_Primitive_Data *pd) -{ - return pd->mode; -} - -EOLIAN static void -_evas_canvas3d_primitive_ratio_set(Eo *obj EINA_UNUSED, - Evas_Canvas3D_Primitive_Data *pd, - Evas_Real ratio) -{ - pd->ratio = ratio; -} - -EOLIAN static Evas_Real -_evas_canvas3d_primitive_ratio_get(const Eo *obj EINA_UNUSED, - Evas_Canvas3D_Primitive_Data *pd) -{ - return pd->ratio; -} - -EOLIAN static void -_evas_canvas3d_primitive_precision_set(Eo *obj EINA_UNUSED, - Evas_Canvas3D_Primitive_Data *pd, - int precision) -{ - if ((precision < 3)) - { - ERR("Precision of Evas_Canvas3D_Primitive cannot be less than 3."); - return; - } - - if ((precision >= 100)) - { - ERR("%s\n%s", - "Be careful with precision of Evas_Canvas3D_Primitive more than 100.", - "It can give unacceptable result."); - } - - if (pd->precision != precision) - pd->precision = precision; -} - -EOLIAN static int -_evas_canvas3d_primitive_precision_get(const Eo *obj EINA_UNUSED, - Evas_Canvas3D_Primitive_Data *pd) -{ - return pd->precision; -} - -EOLIAN static void -_evas_canvas3d_primitive_surface_set(Eo *obj EINA_UNUSED, - Evas_Canvas3D_Primitive_Data *pd, - Evas_Canvas3D_Surface_Func surface_func) -{ - pd->surface = surface_func; -} - -EOLIAN static void -_evas_canvas3d_primitive_tex_scale_set(Eo *obj EINA_UNUSED, - Evas_Canvas3D_Primitive_Data *pd, - Evas_Real x, - Evas_Real y) -{ - if (!EINA_DBL_EQ(x, 0.0)) pd->tex_scale.x = x; - if (!EINA_DBL_EQ(y, 0.0)) pd->tex_scale.y = y; -} - -EOLIAN static void -_evas_canvas3d_primitive_tex_scale_get(const Eo *obj EINA_UNUSED, - Evas_Canvas3D_Primitive_Data *pd, - Evas_Real *x, - Evas_Real *y) -{ - if (x) *x = pd->tex_scale.x; - if (y) *y = pd->tex_scale.y; -} - -#include "canvas/evas_canvas3d_primitive.eo.c" diff --git a/src/lib/evas/canvas/evas_canvas3d_primitive.eo b/src/lib/evas/canvas/evas_canvas3d_primitive.eo deleted file mode 100644 index 3e21f0e4d5..0000000000 --- a/src/lib/evas/canvas/evas_canvas3d_primitive.eo +++ /dev/null @@ -1,130 +0,0 @@ -import evas_canvas3d_types; - -class @beta Evas.Canvas3D.Primitive extends Evas.Canvas3D.Object -{ - [[Evas 3D canvas primitive class]] - data: Evas_Canvas3D_Primitive_Data; - - methods { - @property form { - [[The form of the given primitive. - - Form defines which function will be chosen to set data to mesh - on call of evas_canvas3d_mesh_primitive_set. - - Now available next forms of primitives are tabulated primitives (SQUARE and CUBE), - solids of revolution (CYLINDER, CONE, SPHERE and TORUS) and surfaces (SURFACE and TERRAIN). - - Default form is EVAS_CANVAS3D_MESH_PRIMITIVE_NONE.]] - set { - } - get { - } - values { - form: Evas.Canvas3D.Mesh_Primitive; [[Form of primitive.]] - } - } - @property mode { - [[The mode of the given primitive. - - Mode defines which function will be chosen to set data to mesh - on call of evas_canvas3d_mesh_primitive_set. It helps to choose - an alternative algorithm for primitives with a given form, - such as a cone without a base or sphere textured in alternative way. - - Mods of primitives are now available - without base (bases) (supported for cylinder and cone) and - with alternative UV (supported by sphere). - - Default form is EVAS_CANVAS3D_PRIMITIVE_MODE_DEFAULT.]] - set { - } - get { - } - values { - mode: Evas.Canvas3D.Primitive_Mode; [[Mode of primitive.]] - } - } - @property ratio { - [[The ratio of the given primitive. - - Ratio is used only in torus as the ratio of the - major radius and minor radius. For this usage - Available values is from 1.0 to infinity. - If ratio for torus has a bad value, - 3.0 will be used as the ratio. - - Default ratio is 3.0.]] - set { - } - get { - } - values { - ratio: Evas.Real; [[Ratio of primitive.]] - } - } - @property precision { - [[The precision of the given primitive. - - Precision is used in all non tabulated primitives and defines - the precision of created primitives. - Available values range from 3 to infinity. - If the value is more than 100, you may see a warning - about possibility of incorrect values or slow processing. - - Default ratio is 10.]] - set { - } - get { - } - values { - precision: int; [[Precision of primitive.]] - } - } - @property surface { - [[The surface of the given primitive. - - Surface is used only in surface primitives and defines - the equation of filling mesh data on call of - evas_canvas3d_mesh_primitive_set. - - This allows you to create customers primitives like - shell, heart, hyperbolic paraboloid etc. See _shell_func in - examples/evas/evas-3d-visual-test.c or _perlin_terrain in - modules/evas/primitives/surfaces/terrain.c for usage examples. - - Default surface is $null]] - set { - } - values { - surface: ptr(Evas.Canvas3D.Surface_Func); [[Pointer to customers surface function.]] - } - } - @property tex_scale { - [[The texture scale of the given primitive. - - Texture scale uses in all non tabulated primitives - and defines scale of texture coordinates or primitives. - - It uses to create periodical textured meshes. - - Default tex_scale is {1.0, 1.0}]] - set { - } - get { - } - values { - tex_scale_x: Evas.Real; [[Texture scale X coordinate]] - tex_scale_y: Evas.Real; [[Texture scale Y coordinate]] - } - } - } - implements { - Efl.Object.constructor; - Efl.Object.destructor; - @empty Evas.Canvas3D.Object.update_notify; - @empty Evas.Canvas3D.Object.change_notify; - @empty Evas.Canvas3D.Object.callback_register; - @empty Evas.Canvas3D.Object.callback_unregister; - } -} diff --git a/src/lib/evas/canvas/evas_canvas3d_scene.c b/src/lib/evas/canvas/evas_canvas3d_scene.c deleted file mode 100644 index 725996ee96..0000000000 --- a/src/lib/evas/canvas/evas_canvas3d_scene.c +++ /dev/null @@ -1,839 +0,0 @@ -#include "eo_internal.h" -#include "evas_common_private.h" -#include "evas_private.h" - -#define MY_CLASS EVAS_CANVAS3D_SCENE_CLASS - -void -evas_canvas3d_scene_data_init(Evas_Canvas3D_Scene_Public_Data *data) -{ - data->camera_node = NULL; - data->light_nodes = NULL; - data->mesh_nodes = NULL; - data->node_mesh_colors = NULL; - data->colors_node_mesh = NULL; - data->render_to_texture = EINA_FALSE; - data->lod_distance = 0; - data->post_processing = EINA_FALSE; - data->post_processing_type = EVAS_CANVAS3D_SHADER_MODE_POST_PROCESSING_FXAA; -} - -void -evas_canvas3d_scene_data_fini(Evas_Canvas3D_Scene_Public_Data *data) -{ - if (data->light_nodes) - eina_list_free(data->light_nodes); - - if (data->mesh_nodes) - eina_list_free(data->mesh_nodes); -} - -EOLIAN static void -_evas_canvas3d_scene_evas_canvas3d_object_change_notify(Eo *eo_obj EINA_UNUSED, Evas_Canvas3D_Scene_Data *pd, - Evas_Canvas3D_State state EINA_UNUSED, - Evas_Canvas3D_Object *ref EINA_UNUSED) -{ - Eina_List *l; - Evas_Object *eo; - - EINA_LIST_FOREACH(pd->images, l, eo) - { - Evas_Object_Protected_Data *obj = efl_data_scope_get(eo, EFL_CANVAS_OBJECT_CLASS); - evas_object_change(eo, obj); - } -} - -EOLIAN static void -_evas_canvas3d_scene_evas_canvas3d_object_update_notify(Eo *obj EINA_UNUSED, Evas_Canvas3D_Scene_Data *pd) -{ - if (pd->root_node) - { - evas_canvas3d_object_update(pd->root_node); - } - - if (pd->camera_node) - { - evas_canvas3d_object_update(pd->camera_node); - } - - evas_canvas3d_object_change(obj, EVAS_CANVAS3D_STATE_SCENE_UPDATED, NULL); -} - -EAPI Evas_Canvas3D_Scene * -evas_canvas3d_scene_add(Evas *e) -{ - MAGIC_CHECK(e, Evas, MAGIC_EVAS); - return NULL; - MAGIC_CHECK_END(); - return efl_add(MY_CLASS, e); -} - -EOLIAN static Eo * -_evas_canvas3d_scene_efl_object_constructor(Eo *obj, Evas_Canvas3D_Scene_Data *pd) -{ - obj = efl_constructor(efl_super(obj, MY_CLASS)); - evas_canvas3d_object_type_set(obj, EVAS_CANVAS3D_OBJECT_TYPE_SCENE); - evas_color_set(&pd->bg_color, 0.0, 0.0, 0.0, 0.0); - pd->shadows_enabled = EINA_FALSE; - pd->color_pick_enabled = EINA_FALSE; - pd->node_mesh_colors = NULL; - pd->colors_node_mesh = NULL; - pd->depth_offset = 4.0; - pd->depth_constant = 100.0; - return obj; -} - -EOLIAN static void -_evas_canvas3d_scene_root_node_set(Eo *obj, Evas_Canvas3D_Scene_Data *pd, Evas_Canvas3D_Node *node) -{ - if (pd->root_node == node) - return; - - if (pd->root_node) - { - evas_canvas3d_node_scene_root_del(pd->root_node, obj); - efl_unref(pd->root_node); - } - - pd->root_node = node; - - if (node) - { - efl_ref(node); - evas_canvas3d_node_scene_root_add(node, obj); - } - - evas_canvas3d_object_change(obj, EVAS_CANVAS3D_STATE_SCENE_ROOT_NODE, NULL); -} - -EOLIAN static Evas_Canvas3D_Node * -_evas_canvas3d_scene_root_node_get(const Eo *obj EINA_UNUSED, Evas_Canvas3D_Scene_Data *pd) -{ - return pd->root_node; -} - -EOLIAN static void -_evas_canvas3d_scene_camera_node_set(Eo *obj, Evas_Canvas3D_Scene_Data *pd, Evas_Canvas3D_Node *node) -{ - if (pd->camera_node == node) - return; - - if (pd->camera_node) - { - evas_canvas3d_node_scene_camera_del(pd->camera_node, obj); - } - - pd->camera_node = node; - - if (node) - { - evas_canvas3d_node_scene_camera_add(node, obj); - } - - evas_canvas3d_object_change(obj, EVAS_CANVAS3D_STATE_SCENE_CAMERA_NODE, NULL); -} - -EOLIAN static Evas_Canvas3D_Node * -_evas_canvas3d_scene_camera_node_get(const Eo *obj EINA_UNUSED, Evas_Canvas3D_Scene_Data *pd) -{ - return pd->camera_node; -} - -EOLIAN static void -_evas_canvas3d_scene_size_set(Eo *obj EINA_UNUSED, Evas_Canvas3D_Scene_Data *pd, int w, int h) -{ - pd->w = w; - pd->h = h; - evas_canvas3d_object_change(obj, EVAS_CANVAS3D_STATE_SCENE_SIZE, NULL); -} - -EOLIAN static void -_evas_canvas3d_scene_size_get(const Eo *obj EINA_UNUSED, Evas_Canvas3D_Scene_Data *pd, int *w, int *h) -{ - if (w) *w = pd->w; - if (h) *h = pd->h; -} - -EOLIAN static void -_evas_canvas3d_scene_background_color_set(Eo *obj EINA_UNUSED, Evas_Canvas3D_Scene_Data *pd, - Evas_Real r, Evas_Real g, Evas_Real b, Evas_Real a) -{ - evas_color_set(&pd->bg_color, r, g, b, a); - evas_canvas3d_object_change(obj, EVAS_CANVAS3D_STATE_SCENE_BACKGROUND_COLOR, NULL); -} - -EOLIAN static void -_evas_canvas3d_scene_background_color_get(const Eo *obj EINA_UNUSED, Evas_Canvas3D_Scene_Data *pd, - Evas_Real *r, Evas_Real *g, Evas_Real *b, Evas_Real *a) -{ - if (r) *r = pd->bg_color.r; - if (g) *g = pd->bg_color.g; - if (b) *b = pd->bg_color.b; - if (a) *a = pd->bg_color.a; -} - -static inline Eina_Bool -_pick_data_triangle_add(Evas_Canvas3D_Pick_Data *data, const Evas_Ray3 *ray, - const Evas_Triangle3 *tri) -{ - Eina_Vector3 e1, e2, tvec, pvec, qvec; - Evas_Real det, inv_det, u, v, t; - - eina_vector3_subtract(&e1, &tri->p1, &tri->p0); - eina_vector3_subtract(&e2, &tri->p2, &tri->p0); - - eina_vector3_cross_product(&pvec, &ray->dir, &e2); - det = eina_vector3_dot_product(&e1, &pvec); - - /* If determinant is near zero, ray lies in plane of triangle. */ - if (det > -0.0000001 && det < 0.0000001) - return EINA_FALSE; - - inv_det = 1.0 / det; - - /* Calculate distance from p0 to ray origin. */ - eina_vector3_subtract(&tvec, &ray->org, &tri->p0); - - /* Calculate U parameter and test bounds. */ - u = eina_vector3_dot_product(&tvec, &pvec) * inv_det; - - if (u < 0.0 || u > 1.0) - return EINA_FALSE; - - /* Prepare to tst V parameter. */ - eina_vector3_cross_product(&qvec, &tvec, &e1); - - /* Calculate V parameter and test bounds. */ - v = eina_vector3_dot_product(&ray->dir, &qvec) * inv_det; - - if (v < 0.0 || u + v > 1.0) - return EINA_FALSE; - - /* Calculate T parameter and test bounds. */ - t = eina_vector3_dot_product(&e2, &qvec) * inv_det; - - if (t >= 0.0 && t <= 1.0) - { - if (!data->picked || t < data->z) - { - data->picked = EINA_TRUE; - data->z = t; - data->u = u; - data->v = v; - return EINA_TRUE; - } - } - - return EINA_FALSE; -} - -static inline void -_pick_data_texcoord_update(Evas_Canvas3D_Pick_Data *data, - const Evas_Canvas3D_Vertex_Buffer *tex0, const Evas_Canvas3D_Vertex_Buffer *tex1, - Evas_Real weight, unsigned int i0, unsigned int i1, unsigned int i2) -{ - Evas_Real s0, s1, s2; - Evas_Real t0, t1, t2; - - if (tex1->data == NULL) - { - float *ptr; - - ptr = (float *)((char *)tex0->data + tex0->stride * i0); - - s0 = ptr[0]; - t0 = ptr[1]; - - ptr = (float *)((char *)tex0->data + tex0->stride * i1); - - s1 = ptr[0]; - t1 = ptr[1]; - - ptr = (float *)((char *)tex0->data + tex0->stride * i2); - - s2 = ptr[0]; - t2 = ptr[1]; - } - else - { - float *ptr0, *ptr1; - - ptr0 = (float *)((char *)tex0->data + tex0->stride * i0); - ptr1 = (float *)((char *)tex1->data + tex1->stride * i0); - - s0 = ptr0[0] * weight + ptr1[0] * (1.0 - weight); - t0 = ptr0[1] * weight + ptr1[1] * (1.0 - weight); - - ptr0 = (float *)((char *)tex0->data + tex0->stride * i1); - ptr1 = (float *)((char *)tex1->data + tex1->stride * i1); - - s1 = ptr0[0] * weight + ptr1[0] * (1.0 - weight); - t1 = ptr0[1] * weight + ptr1[1] * (1.0 - weight); - - ptr0 = (float *)((char *)tex0->data + tex0->stride * i2); - ptr1 = (float *)((char *)tex1->data + tex1->stride * i2); - - s2 = ptr0[0] * weight + ptr1[0] * (1.0 - weight); - t2 = ptr0[1] * weight + ptr1[1] * (1.0 - weight); - } - - data->s = s0 * (1 - data->u - data->v) + s1 * data->u + s2 * data->v; - data->t = t0 * (1 - data->u - data->v) + t1 * data->u + t2 * data->v; -} - - -static inline Eina_Bool -_pick_data_mesh_add(Evas_Canvas3D_Pick_Data *data, const Evas_Ray3 *ray, - Evas_Canvas3D_Mesh *mesh, int frame, Evas_Canvas3D_Node *node) -{ - Evas_Canvas3D_Vertex_Buffer pos0, pos1, tex0, tex1; - Evas_Real pos_weight, tex_weight; - Evas_Triangle3 tri; - int i; - - memset(&pos0, 0x00, sizeof(Evas_Canvas3D_Vertex_Buffer)); - memset(&pos1, 0x00, sizeof(Evas_Canvas3D_Vertex_Buffer)); - memset(&tex0, 0x00, sizeof(Evas_Canvas3D_Vertex_Buffer)); - memset(&tex1, 0x00, sizeof(Evas_Canvas3D_Vertex_Buffer)); - - evas_canvas3d_mesh_interpolate_vertex_buffer_get(mesh, frame, EVAS_CANVAS3D_VERTEX_ATTRIB_POSITION, - &pos0, &pos1, &pos_weight); - - evas_canvas3d_mesh_interpolate_vertex_buffer_get(mesh, frame, EVAS_CANVAS3D_VERTEX_ATTRIB_TEXCOORD, - &tex0, &tex1, &tex_weight); - Evas_Canvas3D_Mesh_Data *pdmesh = efl_data_scope_get(mesh, EVAS_CANVAS3D_MESH_CLASS); - if (pdmesh->indices) - { - unsigned int i0, i1, i2; - - if (pdmesh->assembly == EVAS_CANVAS3D_VERTEX_ASSEMBLY_TRIANGLES) - { - for (i = 0; i < pdmesh->index_count; i += 3) - { - if (pdmesh->index_format == EVAS_CANVAS3D_INDEX_FORMAT_UNSIGNED_SHORT) - { - i0 = ((unsigned short *)pdmesh->indices)[i]; - i1 = ((unsigned short *)pdmesh->indices)[i + 1]; - i2 = ((unsigned short *)pdmesh->indices)[i + 2]; - } - else - { - i0 = ((unsigned char *)pdmesh->indices)[i]; - i1 = ((unsigned char *)pdmesh->indices)[i + 1]; - i2 = ((unsigned char *)pdmesh->indices)[i + 2]; - } - - evas_canvas3d_mesh_interpolate_position_get(&tri.p0, &pos0, &pos1, pos_weight, i0); - evas_canvas3d_mesh_interpolate_position_get(&tri.p1, &pos0, &pos1, pos_weight, i1); - evas_canvas3d_mesh_interpolate_position_get(&tri.p2, &pos0, &pos1, pos_weight, i2); - - if (_pick_data_triangle_add(data, ray, &tri)) - { - if (tex0.data) - _pick_data_texcoord_update(data, &tex0, &tex1, tex_weight, i0, i1, i2); - data->mesh = mesh; - data->node = node; - return EINA_TRUE; - } - } - } - else if (pdmesh->assembly == EVAS_CANVAS3D_VERTEX_ASSEMBLY_TRIANGLE_STRIP) - { - if (pdmesh->index_format == EVAS_CANVAS3D_INDEX_FORMAT_UNSIGNED_SHORT) - { - i1 = ((unsigned short *)pdmesh->indices)[0]; - i2 = ((unsigned short *)pdmesh->indices)[1]; - } - else - { - i1 = ((unsigned char *)pdmesh->indices)[0]; - i2 = ((unsigned char *)pdmesh->indices)[1]; - } - - evas_canvas3d_mesh_interpolate_position_get(&tri.p1, &pos0, &pos1, pos_weight, i1); - evas_canvas3d_mesh_interpolate_position_get(&tri.p2, &pos0, &pos1, pos_weight, i2); - - for (i = 0; i < pdmesh->index_count - 2; i++) - { - tri.p0 = tri.p1; - tri.p1 = tri.p2; - - if (pdmesh->index_format == EVAS_CANVAS3D_INDEX_FORMAT_UNSIGNED_SHORT) - i2 = ((unsigned short *)pdmesh->indices)[i + 2]; - else - i2 = ((unsigned char *)pdmesh->indices)[i + 2]; - - evas_canvas3d_mesh_interpolate_position_get(&tri.p2, &pos0, &pos1, pos_weight, i2); - - if (_pick_data_triangle_add(data, ray, &tri)) - { - if (pdmesh->index_format == EVAS_CANVAS3D_INDEX_FORMAT_UNSIGNED_SHORT) - { - i0 = ((unsigned short *)pdmesh->indices)[i]; - i1 = ((unsigned short *)pdmesh->indices)[i + 1]; - } - else - { - i0 = ((unsigned char *)pdmesh->indices)[i]; - i1 = ((unsigned char *)pdmesh->indices)[i + 1]; - } - - if (tex0.data) - _pick_data_texcoord_update(data, &tex0, &tex1, tex_weight, i0, i1, i2); - data->mesh = mesh; - data->node = node; - return EINA_TRUE; - } - } - } - else if (pdmesh->assembly == EVAS_CANVAS3D_VERTEX_ASSEMBLY_TRIANGLE_FAN) - { - if (pdmesh->index_format == EVAS_CANVAS3D_INDEX_FORMAT_UNSIGNED_SHORT) - { - i0 = ((unsigned short *)pdmesh->indices)[0]; - i2 = ((unsigned short *)pdmesh->indices)[1]; - } - else - { - i0 = ((unsigned char *)pdmesh->indices)[0]; - i2 = ((unsigned char *)pdmesh->indices)[1]; - } - - evas_canvas3d_mesh_interpolate_position_get(&tri.p0, &pos0, &pos1, pos_weight, i0); - evas_canvas3d_mesh_interpolate_position_get(&tri.p2, &pos0, &pos1, pos_weight, i2); - - for (i = 1; i < pdmesh->index_count - 1; i++) - { - tri.p1 = tri.p2; - - if (pdmesh->index_format == EVAS_CANVAS3D_INDEX_FORMAT_UNSIGNED_SHORT) - i2 = ((unsigned short *)pdmesh->indices)[i + 1]; - else - i2 = ((unsigned char *)pdmesh->indices)[i + 1]; - - evas_canvas3d_mesh_interpolate_position_get(&tri.p2, &pos0, &pos1, pos_weight, i2); - - if (_pick_data_triangle_add(data, ray, &tri)) - { - if (pdmesh->index_format == EVAS_CANVAS3D_INDEX_FORMAT_UNSIGNED_SHORT) - i1 = ((unsigned short *)pdmesh->indices)[i]; - else - i1 = ((unsigned char *)pdmesh->indices)[i]; - - if (tex0.data) - _pick_data_texcoord_update(data, &tex0, &tex1, tex_weight, i0, i1, i2); - data->mesh = mesh; - data->node = node; - } - } - } - } - else if (pdmesh->index_format == EVAS_CANVAS3D_INDEX_FORMAT_UNSIGNED_BYTE) - { - if (pdmesh->assembly == EVAS_CANVAS3D_VERTEX_ASSEMBLY_TRIANGLES) - { - for (i = 0; i < pdmesh->index_count; i += 3) - { - evas_canvas3d_mesh_interpolate_position_get(&tri.p0, &pos0, &pos1, pos_weight, i); - evas_canvas3d_mesh_interpolate_position_get(&tri.p1, &pos0, &pos1, pos_weight, i + 1); - evas_canvas3d_mesh_interpolate_position_get(&tri.p2, &pos0, &pos1, pos_weight, i + 2); - - if (_pick_data_triangle_add(data, ray, &tri)) - { - if (tex0.data) - _pick_data_texcoord_update(data, &tex0, &tex1, tex_weight, i, i + 1, i + 2); - data->mesh = mesh; - data->node = node; - } - } - } - else if (pdmesh->assembly == EVAS_CANVAS3D_VERTEX_ASSEMBLY_TRIANGLE_STRIP) - { - evas_canvas3d_mesh_interpolate_position_get(&tri.p1, &pos0, &pos1, pos_weight, 0); - evas_canvas3d_mesh_interpolate_position_get(&tri.p2, &pos0, &pos1, pos_weight, 1); - - for (i = 0; i < pdmesh->index_count - 2; i++) - { - tri.p0 = tri.p1; - tri.p1 = tri.p2; - - evas_canvas3d_mesh_interpolate_position_get(&tri.p2, &pos0, &pos1, pos_weight, i + 2); - - if (_pick_data_triangle_add(data, ray, &tri)) - { - if (tex0.data) - _pick_data_texcoord_update(data, &tex0, &tex1, tex_weight, i, i + 1, i + 2); - data->mesh = mesh; - data->node = node; - } - } - } - else if (pdmesh->assembly == EVAS_CANVAS3D_VERTEX_ASSEMBLY_TRIANGLE_FAN) - { - evas_canvas3d_mesh_interpolate_position_get(&tri.p0, &pos0, &pos1, pos_weight, 0); - evas_canvas3d_mesh_interpolate_position_get(&tri.p2, &pos0, &pos1, pos_weight, 1); - - for (i = 1; i < pdmesh->index_count - 1; i++) - { - tri.p1 = tri.p2; - - evas_canvas3d_mesh_interpolate_position_get(&tri.p2, &pos0, &pos1, pos_weight, i + 1); - - if (_pick_data_triangle_add(data, ray, &tri)) - { - if (tex0.data) - _pick_data_texcoord_update(data, &tex0, &tex1, tex_weight, 0, i, i + 1); - data->mesh = mesh; - data->node = node; - } - } - } - } - else if ((EINA_DBL_EQ(pdmesh->index_count, 0.0)) && - pdmesh->vertex_count != 0) - { - if (pdmesh->assembly == EVAS_CANVAS3D_VERTEX_ASSEMBLY_TRIANGLES) - { - for (i = 0; i < pdmesh->vertex_count; i += 3) - { - evas_canvas3d_mesh_interpolate_position_get(&tri.p0, &pos0, &pos1, pos_weight, i); - evas_canvas3d_mesh_interpolate_position_get(&tri.p1, &pos0, &pos1, pos_weight, i + 1); - evas_canvas3d_mesh_interpolate_position_get(&tri.p2, &pos0, &pos1, pos_weight, i + 2); - - if (_pick_data_triangle_add(data, ray, &tri)) - { - if (tex0.data) - _pick_data_texcoord_update(data, &tex0, &tex1, tex_weight, i, i + 1, i + 2); - data->mesh = mesh; - data->node = node; - } - } - } - else if (pdmesh->assembly == EVAS_CANVAS3D_VERTEX_ASSEMBLY_TRIANGLE_STRIP) - { - evas_canvas3d_mesh_interpolate_position_get(&tri.p1, &pos0, &pos1, pos_weight, 0); - evas_canvas3d_mesh_interpolate_position_get(&tri.p2, &pos0, &pos1, pos_weight, 1); - - for (i = 0; i < pdmesh->vertex_count - 2; i++) - { - tri.p0 = tri.p1; - tri.p1 = tri.p2; - - evas_canvas3d_mesh_interpolate_position_get(&tri.p2, &pos0, &pos1, pos_weight, i + 2); - - if (_pick_data_triangle_add(data, ray, &tri)) - { - if (tex0.data) - _pick_data_texcoord_update(data, &tex0, &tex1, tex_weight, i, i + 1, i + 2); - data->mesh = mesh; - data->node = node; - return EINA_TRUE; - } - } - } - else if (pdmesh->assembly == EVAS_CANVAS3D_VERTEX_ASSEMBLY_TRIANGLE_FAN) - { - evas_canvas3d_mesh_interpolate_position_get(&tri.p0, &pos0, &pos1, pos_weight, 0); - evas_canvas3d_mesh_interpolate_position_get(&tri.p2, &pos0, &pos1, pos_weight, 1); - - for (i = 1; i < pdmesh->vertex_count - 1; i++) - { - tri.p1 = tri.p2; - - evas_canvas3d_mesh_interpolate_position_get(&tri.p2, &pos0, &pos1, pos_weight, i + 1); - - if (_pick_data_triangle_add(data, ray, &tri)) - { - if (tex0.data) - _pick_data_texcoord_update(data, &tex0, &tex1, tex_weight, 0, i, i + 1); - data->mesh = mesh; - data->node = node; - return EINA_TRUE; - } - } - } - } - return EINA_FALSE; -} - -Eina_Bool -_node_pick(Evas_Canvas3D_Node *node, void *data) -{ - Evas_Ray3 ray; - Evas_Canvas3D_Pick_Data *pick = (Evas_Canvas3D_Pick_Data *)data; - Eina_Matrix4 mvp; - Evas_Canvas3D_Node_Data *pd_node = efl_data_scope_get(node, EVAS_CANVAS3D_NODE_CLASS); - - evas_canvas3d_node_tree_traverse(node, EVAS_CANVAS3D_TREE_TRAVERSE_POST_ORDER, EINA_FALSE, - node_aabb_update, NULL); - - if (! evas_box3_ray3_intersect(&pd_node->aabb, &pick->ray_world)) - { - /* Skip entire subtree. */ - return EINA_FALSE; - } - - if (pd_node->type == EVAS_CANVAS3D_NODE_TYPE_MESH) - { - Eina_Iterator *itr; - void *ptr; - - /* Transform ray into local coordinate space. */ - eina_matrix4_multiply(&mvp, &pick->matrix_vp, &pd_node->data.mesh.matrix_local_to_world); - evas_ray3_init(&ray, pick->x, pick->y, &mvp); - - itr = eina_hash_iterator_data_new(pd_node->data.mesh.node_meshes); - - while (eina_iterator_next(itr, &ptr)) - { - Evas_Canvas3D_Node_Mesh *nm = (Evas_Canvas3D_Node_Mesh *)ptr; - if(_pick_data_mesh_add(pick, &ray, nm->mesh, nm->frame, node)) - break; - } - } - - return EINA_TRUE; -} - -static void _node_mesh_colors_free_cb(void *data) -{ - if (data) free(data); -} - -static inline void -_pick_data_init(Evas_Canvas3D_Pick_Data *data, Evas_Public_Data *e, Evas_Real x, Evas_Real y) -{ - data->x = ((x * 2.0) / ((Evas_Real)e->viewport.w)) - 1.0; - data->y = ((((Evas_Real)e->viewport.h - y - 1) * 2.0) / ((Evas_Real)e->viewport.h)) - 1.0; - data->picked = EINA_FALSE; - data->z = 1.0; - data->node = NULL; - data->mesh = NULL; - data->s = 0.0; - data->t = 0.0; -} - -EOLIAN static Eina_Bool -_evas_canvas3d_scene_pick(const Eo *obj, Evas_Canvas3D_Scene_Data *pd, Evas_Real x, Evas_Real y, - Evas_Canvas3D_Node **node, Evas_Canvas3D_Mesh **mesh, - Evas_Real *s, Evas_Real *t) -{ - Evas_Canvas3D_Pick_Data data; - Evas_Canvas3D_Node_Data *pd_camera_node; - Evas_Canvas3D_Camera_Data *pd_camera; - Evas_Canvas3D_Object_Data *pd_parent; - Evas_Public_Data *e; - int tex = 0, px, py;; - Evas_Color color = {0.0, 0.0, 0.0, 0.0}; - Eina_Stringshare *tmp; - Eina_Array *arr = NULL; - Eina_Bool update_scene = EINA_FALSE; - Evas_Canvas3D_Node *picked_node = NULL; - const Efl_Event_Description *eo_desc = NULL; - - pd_parent = efl_data_scope_get(obj, EVAS_CANVAS3D_OBJECT_CLASS); - e = efl_data_scope_get(pd_parent->evas, EVAS_CANVAS_CLASS); - - _pick_data_init(&data, e, x, y); - px = round(x * pd->w / e->viewport.w); - py = round((pd->h - (y * pd->h / e->viewport.h) - 1)); - - /*Use color pick mechanism finding node and mesh*/ - if (pd->color_pick_enabled) - { - Evas_Canvas3D_Scene_Public_Data scene_data; - - scene_data.bg_color = pd->bg_color; - scene_data.shadows_enabled = pd->shadows_enabled; - scene_data.camera_node = pd->camera_node; - scene_data.color_pick_enabled = pd->color_pick_enabled; - update_scene = evas_canvas3d_object_dirty_get(obj, EVAS_CANVAS3D_STATE_SCENE_UPDATED); - scene_data.post_processing = EINA_FALSE; - if (update_scene) - { - if (pd->node_mesh_colors) - { - eina_hash_free(pd->node_mesh_colors); - eina_hash_free(pd->colors_node_mesh); - pd->node_mesh_colors = NULL; - pd->colors_node_mesh = NULL; - } - pd->node_mesh_colors = eina_hash_stringshared_new(_node_mesh_colors_free_cb); - pd->colors_node_mesh = eina_hash_stringshared_new(_node_mesh_colors_free_cb); - } - scene_data.node_mesh_colors = pd->node_mesh_colors; - scene_data.colors_node_mesh = pd->colors_node_mesh; - evas_canvas3d_node_tree_traverse(pd->root_node, - EVAS_CANVAS3D_TREE_TRAVERSE_LEVEL_ORDER, EINA_TRUE, - evas_canvas3d_node_color_node_mesh_collect, &scene_data); - - if (e->engine.func->drawable_scene_render_to_texture) - { - if (e->engine.func->drawable_scene_render_to_texture(_evas_engine_context(e), - pd->surface, &scene_data)) - { - if (e->engine.func->drawable_texture_color_pick_id_get) - tex = e->engine.func->drawable_texture_color_pick_id_get(pd->surface); - if (e->engine.func->drawable_texture_pixel_color_get) - { - e->engine.func->drawable_texture_pixel_color_get(tex, px, py, &color, pd->surface); - tmp = eina_stringshare_printf("%f %f %f", color.r, color.g, color.b); - arr = (Eina_Array *)eina_hash_find(pd->colors_node_mesh, tmp); - if (arr) - { - picked_node = (Evas_Canvas3D_Node *)eina_array_data_get(arr, 0); - if (mesh) *mesh = (Evas_Canvas3D_Mesh *)eina_array_data_get(arr, 1); - if (node) *node = picked_node; - eina_stringshare_del(tmp); - - /*Calling callback clicked*/ - eo_desc = efl_object_legacy_only_event_description_get("clicked,private"); - efl_event_callback_legacy_call(picked_node, eo_desc, picked_node); - - return EINA_TRUE; - } - else - { - eina_stringshare_del(tmp); - if (mesh) *mesh = NULL; - if (node) *node = NULL; - } - } - } - } - return EINA_FALSE; - } - /* Update the scene graph. */ - evas_canvas3d_object_update((Eo *) obj); - pd_camera_node = efl_data_scope_get(pd->camera_node, EVAS_CANVAS3D_NODE_CLASS); - pd_camera = efl_data_scope_get(pd_camera_node->data.camera.camera, EVAS_CANVAS3D_CAMERA_CLASS); - eina_matrix4_multiply(&data.matrix_vp, - &pd_camera->projection, - &pd_camera_node->data.camera.matrix_world_to_eye); - - evas_ray3_init(&data.ray_world, data.x, data.y, &data.matrix_vp); - - /* Traverse tree while adding meshes into pick data structure. */ - evas_canvas3d_node_tree_traverse(pd->root_node, EVAS_CANVAS3D_TREE_TRAVERSE_LEVEL_ORDER, EINA_TRUE, - _node_pick, &data); - - if (!data.picked) - return EINA_FALSE; - - if (s) *s = data.s; - if (t) *t = data.t; - if (node) *node = data.node; - if (mesh) *mesh = data.mesh; - - /*Calling callback clicked*/ - eo_desc = efl_object_legacy_only_event_description_get("clicked,private"); - efl_event_callback_legacy_call(data.node, eo_desc, data.node); - - return EINA_TRUE; -} - -EOLIAN static Evas_Canvas3D_Node * -_evas_canvas3d_scene_exist(const Eo *obj, Evas_Canvas3D_Scene_Data *pd, Evas_Real x, Evas_Real y, Evas_Canvas3D_Node *node) -{ - Evas_Canvas3D_Pick_Data data; - Evas_Canvas3D_Node_Data *pd_camera_node; - Evas_Canvas3D_Camera_Data *pd_camera; - Evas_Canvas3D_Object_Data *pd_parent; - Evas_Public_Data *e; - - pd_parent = efl_data_scope_get(obj, EVAS_CANVAS3D_OBJECT_CLASS); - e = efl_data_scope_get(pd_parent->evas, EVAS_CANVAS_CLASS); - - _pick_data_init(&data, e, x, y); - - /* Update the scene graph. */ - evas_canvas3d_object_update((Eo *) obj); - pd_camera_node = efl_data_scope_get(pd->camera_node, EVAS_CANVAS3D_NODE_CLASS); - pd_camera = efl_data_scope_get(pd_camera_node->data.camera.camera, EVAS_CANVAS3D_CAMERA_CLASS); - eina_matrix4_multiply(&data.matrix_vp, - &pd_camera->projection, - &pd_camera_node->data.camera.matrix_world_to_eye); - - evas_ray3_init(&data.ray_world, data.x, data.y, &data.matrix_vp); - - /* Check pick for given node. */ - _node_pick(node, &data); - - if (!data.picked || data.node != node) node = NULL; - - return node; -} - -EOLIAN static Eina_List * -_evas_canvas3d_scene_pick_member_list_get(const Eo *obj, Evas_Canvas3D_Scene_Data *pd, Evas_Real x, Evas_Real y) -{ - const Eina_List *list = NULL, *l = NULL; - Eina_List *picked_nodes = NULL; - void *node; - Eina_Bool pick = EINA_FALSE; - - /* Check pick for given scene. */ - pick = evas_canvas3d_scene_pick(obj, x, y, NULL, NULL, NULL, NULL); - - if (!pick) - return NULL; - - /* Get all members from root node. */ - list = evas_canvas3d_node_member_list_get(pd->root_node); - - EINA_LIST_FOREACH(list, l, node) - { - if (evas_canvas3d_scene_exist(obj, x, y, node)) - picked_nodes = eina_list_append(picked_nodes, l); - } - - return picked_nodes; -} - -EOLIAN static Eina_Bool -_evas_canvas3d_scene_shadows_enable_get(const Eo *obj EINA_UNUSED, Evas_Canvas3D_Scene_Data *pd) -{ - return pd->shadows_enabled; -} - -EOLIAN static void -_evas_canvas3d_scene_shadows_enable_set(Eo *obj EINA_UNUSED, Evas_Canvas3D_Scene_Data *pd, Eina_Bool _shadows_enabled) -{ - pd->shadows_enabled = _shadows_enabled; - evas_canvas3d_object_change(obj, EVAS_CANVAS3D_STATE_SCENE_SHADOWS_ENABLED, NULL); -} - -EOLIAN static Eina_Bool -_evas_canvas3d_scene_color_pick_enable_get(const Eo *obj EINA_UNUSED, Evas_Canvas3D_Scene_Data *pd) -{ - return pd->color_pick_enabled; -} - -EOLIAN static Eina_Bool -_evas_canvas3d_scene_color_pick_enable_set(Eo *obj EINA_UNUSED, Evas_Canvas3D_Scene_Data *pd, Eina_Bool _enabled) -{ - if (pd->color_pick_enabled != _enabled) - pd->color_pick_enabled = _enabled; - - evas_canvas3d_object_change(obj, EVAS_CANVAS3D_STATE_SCENE_UPDATED, NULL); - return EINA_TRUE; -} - -EOLIAN static void -_evas_canvas3d_scene_shadows_depth_set(Eo *obj EINA_UNUSED, Evas_Canvas3D_Scene_Data *pd, - Evas_Real depth_offset, Evas_Real depth_constant) -{ - pd->depth_offset = depth_offset; - pd->depth_constant = depth_constant; - evas_canvas3d_object_change(obj, EVAS_CANVAS3D_STATE_SCENE_SHADOWS_DEPTH, NULL); -} - -EOLIAN static void -_evas_canvas3d_scene_shadows_depth_get(const Eo *obj EINA_UNUSED, Evas_Canvas3D_Scene_Data *pd, - Evas_Real *depth_offset, Evas_Real *depth_constant) -{ - if (depth_offset) *depth_offset = pd->depth_offset; - if (depth_constant) *depth_constant = pd->depth_constant; -} - -#include "canvas/evas_canvas3d_scene.eo.c" diff --git a/src/lib/evas/canvas/evas_canvas3d_scene.eo b/src/lib/evas/canvas/evas_canvas3d_scene.eo deleted file mode 100644 index 86b14ecd8d..0000000000 --- a/src/lib/evas/canvas/evas_canvas3d_scene.eo +++ /dev/null @@ -1,168 +0,0 @@ -import evas_canvas3d_types; - -class @beta Evas.Canvas3D.Scene extends Evas.Canvas3D.Object -{ - [[Efl 3D canvas scene class]] - data: Evas_Canvas3D_Scene_Data; - methods { - size_set { - [[Set the resolution of a scene. - - A scene should be rendered to be displayed through image - objects. The resolution defines the size of the internal surface - holding the rendered result. - ]] - params { - @in w: int; [[Width of the resolution.]] - @in h: int; [[Height of the resolution.]] - } - } - - size_get @const { - [[Get the internal resolution of a scene.]] - params { - @out w: int; [[Pointer to receive width of the resolution.]] - @out h: int; [[Pointer to receive height of the resolution.]] - } - } - - background_color_set { - [[Set the background color of a scene. - - Background color defines the initial color of pixels before a scene - is rendered. If you want to display a scene with background evas - objects as if they're part of the background, set - the alpha term to 0.0. - - Default background color is (0.0, 0.0, 0.0, 0.0). - ]] - params { - @in r: Evas.Real; [[Red component of the background color.]] - @in g: Evas.Real; [[Green component of the background color.]] - @in b: Evas.Real; [[Blue component of the background color.]] - @in a: Evas.Real; [[Alpha component of the background color.]] - } - } - - background_color_get @const { - [[Get the background color of a scene.]] - params { - @out r: Evas.Real; [[Pointer to receive red component of the background color.]] - @out g: Evas.Real; [[Pointer to receive green component of the background color.]] - @out b: Evas.Real; [[Pointer to receive blue component of the background color.]] - @out a: Evas.Real; [[Pointer to receive alpha component of the background color.]] - } - } - - pick @const { - [[Get information on the most front visible mesh for the given - position. - - (x, y) is the screen coordinate of the given scene. That is, - left-top is (0, 0) and right-bottom is (w, h) where (w, h) is - the size of the scene. The texture coordinate is useful when - using proxy texture source. - ]] - return: bool; [[$true on success, $false otherwise]] - params { - @in x: Evas.Real; [[X coordinate of the picking position.]] - @in y: Evas.Real; [[Y coordinate of the picking position.]] - @out node: Evas.Canvas3D.Node; [[Pointer to receive the node contains the picked mesh.]] - @out mesh: Evas.Canvas3D.Mesh; [[Pointer to receive the picked mesh.]] - @out s: Evas.Real; [[Pointer to receive the texture "s" coordinate.]] - @out t: Evas.Real; [[Pointer to receive the texture "t" coordinate.]] - } - } - - exist @const { - [[Search given node in the given position.]] - return: Evas.Canvas3D.Node; [[Node at the given position]] - params { - @in x: Evas.Real; [[X coordinate of the picking position.]] - @in y: Evas.Real; [[Y coordinate of the picking position.]] - @in node: Evas.Canvas3D.Node; [[Node for search.]] - } - } - - pick_member_list_get @const { - [[Get list of the all root members from scene in the given position.]] - return: list; [[List of all root members from scene]] - params { - @in x: Evas.Real; [[X coordinate of the picking position.]] - @in y: Evas.Real; [[Y coordinate of the picking position.]] - } - } - shadows_enable_set { - [[Enable or disable shadows on given scene - - If shadows_enabled is $true, the objects in the scene can throw - shadow to another objects located behind them. The depth map used - for shading. Directed and projective light sources are supported. - ]] - params { - @in shadows_enabled: bool; [[Shadows enabled status.]] - } - } - - shadows_enable_get @const { - [[Get shadows enabled status for given scene.]] - return: bool; [[The shadows enabled status.]] - } - color_pick_enable_get @const { - [[Get status of color picking of the scene.]] - return: bool; [[The pick enabled status]] - } - color_pick_enable_set { - [[Set possibility color picking.]] - return: bool; [[$true on success, $false otherwise]] - params { - @in color_pick: bool; [[Possibility flag]] - } - } - - @property root_node { - [[The root node of a scene.]] - set { - } - get { - } - values { - node: Evas.Canvas3D.Node; [[A node which will be used as a - root node for the scene.]] - } - } - - @property camera_node { - [[The camera node of a scene.]] - set { - } - get { - } - values { - node: Evas.Canvas3D.Node; [[A node which will be used as a - camera node for the scene.]] - } - } - @property shadows_depth { - [[Scale and units used to calculate depth values.]] - set { - } - get { - } - values { - depth_offset: Evas.Real; [[Scale factor that is used to - create a variable depth offset - for each polygon.]] - depth_constant: Evas.Real; [[Value to create a constant - depth offset]] - } - } -} - implements { - Efl.Object.constructor; - Evas.Canvas3D.Object.update_notify; - Evas.Canvas3D.Object.change_notify; - @empty Evas.Canvas3D.Object.callback_register; - @empty Evas.Canvas3D.Object.callback_unregister; - } -} diff --git a/src/lib/evas/canvas/evas_canvas3d_texture.c b/src/lib/evas/canvas/evas_canvas3d_texture.c deleted file mode 100644 index 0381c87275..0000000000 --- a/src/lib/evas/canvas/evas_canvas3d_texture.c +++ /dev/null @@ -1,606 +0,0 @@ -#include "evas_common_private.h" -#include "evas_private.h" - -#define MY_CLASS EVAS_CANVAS3D_TEXTURE_CLASS - -static inline void -_texture_proxy_set(Evas_Canvas3D_Texture *texture, Evas_Object *eo_src, Evas_Object_Protected_Data *src) -{ - Evas_Canvas3D_Texture_Data *pd = efl_data_scope_get(texture, MY_CLASS); - EINA_COW_WRITE_BEGIN(evas_object_proxy_cow, src->proxy, Evas_Object_Proxy_Data, proxy_src) - { - proxy_src->proxy_textures = eina_list_append(proxy_src->proxy_textures, texture); - proxy_src->redraw = EINA_TRUE; - } - EINA_COW_WRITE_END(evas_object_proxy_cow, src->proxy, proxy_src); - - pd->source = eo_src; -} - -static inline void -_texture_proxy_unset(Evas_Canvas3D_Texture_Data *texture) -{ - Evas_Object_Protected_Data *src = efl_data_scope_get(texture->source, EFL_CANVAS_OBJECT_CLASS); - - EINA_COW_WRITE_BEGIN(evas_object_proxy_cow, src->proxy, Evas_Object_Proxy_Data, proxy_src); - { - proxy_src->proxy_textures = eina_list_remove(proxy_src->proxy_textures, texture); - - if (eina_list_count(proxy_src->proxy_textures) == 0 && - eina_list_count(proxy_src->proxies) == 0 && - proxy_src->surface != NULL) - { - Evas_Public_Data *e = src->layer->evas; - e->engine.func->image_free(_evas_engine_context(e), proxy_src->surface); - proxy_src->surface = NULL; - } - - if (proxy_src->src_invisible) - { - proxy_src->src_invisible = EINA_FALSE; - src->changed_src_visible = EINA_TRUE; - evas_object_change(texture->source, src); - evas_object_smart_member_cache_invalidate(texture->source, - EINA_FALSE, EINA_FALSE, EINA_TRUE); - } - } - EINA_COW_WRITE_END(evas_object_proxy_cow, src->proxy, proxy_src); - - texture->source = NULL; -} - -static inline void -_texture_proxy_subrender(Evas_Canvas3D_Texture *obj, void *engine) -{ - /* Code taken from _proxy_subrender() in file evas_object_image.c */ - Eo *evas = NULL; - evas = evas_object_evas_get(obj); - Evas_Public_Data *e = efl_data_scope_get(evas, EVAS_CANVAS_CLASS); - Evas_Canvas3D_Texture_Data *pd = efl_data_scope_get(obj, MY_CLASS); - Evas_Object_Protected_Data *source; - void *ctx; - int w, h; - Eina_Bool is_image; - - if (!pd->source) - return; - - // TODO: replace this function by evas_render_proxy_subrender (as appropriate) - - source = efl_data_scope_get(pd->source, EFL_CANVAS_OBJECT_CLASS); - - is_image = efl_isa(pd->source, EFL_CANVAS_IMAGE_INTERNAL_CLASS); - - EINA_COW_WRITE_BEGIN(evas_object_proxy_cow, source->proxy, Evas_Object_Proxy_Data, proxy_write) - { - proxy_write->redraw = EINA_FALSE; - - if (is_image) - { - void *image = source->func->engine_data_get(pd->source); - e->engine.func->image_size_get(engine, image, &w, &h); - } - else - { - w = source->cur->geometry.w; - h = source->cur->geometry.h; - } - - /* We need to redraw surface then */ - if ((proxy_write->surface) && - ((proxy_write->w != w) || (proxy_write->h != h))) - { - e->engine.func->image_free(engine, proxy_write->surface); - proxy_write->surface = NULL; - } - - /* FIXME: Hardcoded alpha 'on' */ - /* FIXME (cont): Should see if the object has alpha */ - if (!proxy_write->surface) - { - proxy_write->surface = e->engine.func->image_map_surface_new - (engine, w, h, 1); - if (!proxy_write->surface) goto end; - proxy_write->w = w; - proxy_write->h = h; - } - - ctx = e->engine.func->context_new(engine); - e->engine.func->context_color_set(engine, ctx, 0, 0, - 0, 0); - e->engine.func->context_render_op_set(engine, ctx, - EVAS_RENDER_COPY); - e->engine.func->rectangle_draw(engine, _evas_default_output_get(e), ctx, - proxy_write->surface, 0, 0, w, h, - EINA_FALSE); - e->engine.func->context_free(engine, ctx); - - ctx = e->engine.func->context_new(engine); - - if (is_image) - { - void *image = source->func->engine_data_get(pd->source); - - if (image) - { - int imagew, imageh; - e->engine.func->image_size_get(engine, image, - &imagew, &imageh); - e->engine.func->image_draw(engine, _evas_default_output_get(e), ctx, - proxy_write->surface, image, - 0, 0, imagew, imageh, 0, 0, w, h, 0, EINA_FALSE); - } - } - else - { - Evas_Proxy_Render_Data proxy_render_data = { - .eo_proxy = NULL, - .proxy_obj = NULL, - .eo_src = pd->source, - .src_obj = source, - .source_clip = EINA_FALSE - }; - - evas_render_mapped(e, pd->source, source, ctx, - _evas_default_output_get(e), - proxy_write->surface, - -source->cur->geometry.x, - -source->cur->geometry.y, - 2, 0, 0, e->output.w, e->output.h, - &proxy_render_data, 1, EINA_FALSE); - } - - e->engine.func->context_free(engine, ctx); - proxy_write->surface = e->engine.func->image_dirty_region - (engine, proxy_write->surface, 0, 0, w, h); - } - end: - EINA_COW_WRITE_END(evas_object_proxy_cow, source->proxy, proxy_write); -} - -static void -_texture_fini(Evas_Canvas3D_Texture *obj) -{ - Eo *evas = NULL; - int i = 0; - Eina_Iterator *it = NULL; - void *data = NULL; - Evas_Canvas3D_Material_Data *material = NULL; - - evas = evas_object_evas_get(obj); - Evas_Canvas3D_Texture_Data *pd = efl_data_scope_get(obj, MY_CLASS); - - if (pd->engine_data) - { - Evas_Public_Data *e = efl_data_scope_get(evas, EVAS_CANVAS_CLASS); - if (e->engine.func->texture_free) - e->engine.func->texture_free(_evas_engine_context(e), pd->engine_data); - pd->engine_data = NULL; - } - - if (pd->materials) - { - it = eina_hash_iterator_key_new(pd->materials); - EINA_ITERATOR_FOREACH(it, data) - { - material = efl_data_scope_get(data, EVAS_CANVAS3D_MATERIAL_CLASS); - if (!material) continue; - for (i = 0; i < EVAS_CANVAS3D_MATERIAL_ATTRIB_COUNT; i++) - { - if (material->attribs[i].texture) - evas_canvas3d_texture_material_del(material->attribs[i].texture, data); - } - } - eina_iterator_free(it); - - eina_hash_free(pd->materials); - pd->materials = NULL; - } - - if (pd->source) - { - _texture_proxy_unset(pd); - } -} - -static Eina_Bool -_texture_material_change_notify(const Eina_Hash *hash EINA_UNUSED, const void *key, - void *data EINA_UNUSED, void *fdata) -{ - Evas_Canvas3D_Material *m = *(Evas_Canvas3D_Material **)key; - evas_canvas3d_object_change(m, EVAS_CANVAS3D_STATE_MATERIAL_TEXTURE, (Evas_Canvas3D_Object *)fdata); - return EINA_TRUE; -} - -EOLIAN static void -_evas_canvas3d_texture_evas_canvas3d_object_change_notify(Eo *obj, Evas_Canvas3D_Texture_Data *pd, Evas_Canvas3D_State state EINA_UNUSED, Evas_Canvas3D_Object *ref EINA_UNUSED) -{ - - if (pd->materials) - eina_hash_foreach(pd->materials, _texture_material_change_notify, obj); -} - -/* FIXME: This code is problematic as it actually does rendering and rely on the output before we start rendering. */ -EOLIAN static void -_evas_canvas3d_texture_evas_canvas3d_object_update_notify(Eo *obj, Evas_Canvas3D_Texture_Data *pd) -{ - if (pd->source) - { - Eo *evas = NULL; - evas = evas_object_evas_get(obj); - Evas_Public_Data *e = efl_data_scope_get(evas, EVAS_CANVAS_CLASS); - Evas_Object_Protected_Data *src = efl_data_scope_get(pd->source, EFL_CANVAS_OBJECT_CLASS); - - if (pd->engine_data == NULL) - { - if (e->engine.func->texture_new) - { - pd->engine_data = - e->engine.func->texture_new(_evas_engine_context(e), pd->atlas_enable); - } - - if (pd->engine_data == NULL) - { - ERR("Failed to create engine-side texture object."); - return; - } - } - - if (src->proxy->surface && !src->proxy->redraw) - { - if (e->engine.func->texture_image_set) - { - e->engine.func->texture_image_set(_evas_engine_context(e), - pd->engine_data, - src->proxy->surface); - } - return; - - } - - pd->proxy_rendering = EINA_TRUE; - _texture_proxy_subrender(obj, _evas_engine_context(e)); - - if (e->engine.func->texture_image_set) - e->engine.func->texture_image_set(_evas_engine_context(e), - pd->engine_data, - src->proxy->surface); - pd->proxy_rendering = EINA_FALSE; - } -} - -void -evas_canvas3d_texture_material_add(Evas_Canvas3D_Texture *texture, Evas_Canvas3D_Material *material) -{ - int count = 0; - Evas_Canvas3D_Texture_Data *pd = efl_data_scope_get(texture, MY_CLASS); - if (pd->materials == NULL) - { - pd->materials = eina_hash_pointer_new(NULL); - - if (pd->materials == NULL) - { - ERR("Failed to create hash table."); - return; - } - } - else - count = (int)(uintptr_t)eina_hash_find(pd->materials, &material); - - /* Increase reference count or add new one if not exist. */ - eina_hash_set(pd->materials, &material, (const void *)(uintptr_t)(count + 1)); -} - -void -evas_canvas3d_texture_material_del(Evas_Canvas3D_Texture *texture, Evas_Canvas3D_Material *material) -{ - int count = 0; - Evas_Canvas3D_Texture_Data *pd = efl_data_scope_get(texture, MY_CLASS); - if (pd->materials == NULL) - { - ERR("No material to delete."); - return; - } - - count = (int)(uintptr_t)eina_hash_find(pd->materials, &material); - - if (count == 1) - eina_hash_del(pd->materials, &material, NULL); - else - eina_hash_set(pd->materials, &material, (const void *)(uintptr_t)(count - 1)); -} - -EAPI Evas_Canvas3D_Texture * -evas_canvas3d_texture_add(Evas *e) -{ - MAGIC_CHECK(e, Evas, MAGIC_EVAS); - return NULL; - MAGIC_CHECK_END(); - return efl_add(MY_CLASS, e); -} - - -EOLIAN static Eo * -_evas_canvas3d_texture_efl_object_constructor(Eo *obj, Evas_Canvas3D_Texture_Data *pd EINA_UNUSED) -{ - obj = efl_constructor(efl_super(obj, MY_CLASS)); - pd->atlas_enable = EINA_TRUE; - - evas_canvas3d_object_type_set(obj, EVAS_CANVAS3D_OBJECT_TYPE_TEXTURE); - - return obj; -} - -EOLIAN static void -_evas_canvas3d_texture_efl_object_destructor(Eo *obj, Evas_Canvas3D_Texture_Data *pd) -{ - eina_file_close(pd->f); // close matching open (matches open in _evas_canvas3d_texture_efl_file_load) OK - pd->f = NULL; - _texture_fini(obj); - efl_destructor(efl_super(obj, MY_CLASS)); -} - -EOLIAN static void -_evas_canvas3d_texture_data_set(Eo *obj, Evas_Canvas3D_Texture_Data *pd, - Evas_Colorspace color_format, - int w, int h, const void *data) -{ - Eo *evas = NULL; - void *image = NULL; - evas = evas_object_evas_get(obj); - Evas_Public_Data *e = efl_data_scope_get(evas, EVAS_CANVAS_CLASS); - - if (!pd->engine_data && e->engine.func->texture_new) - pd->engine_data = e->engine.func->texture_new(_evas_engine_context(e), pd->atlas_enable); - if (!data) - { - ERR("Failure, image data is empty"); - return; - } - - image = e->engine.func->image_new_from_data(_evas_engine_context(e), w, h, (DATA32 *)data, EINA_TRUE, color_format); - if (!image) - { - ERR("Can't load image from data"); - return; - } - - if (e->engine.func->texture_image_set) - e->engine.func->texture_image_set(_evas_engine_context(e), - pd->engine_data, - image); - e->engine.func->image_free(_evas_engine_context(e), image); - evas_canvas3d_object_change(obj, EVAS_CANVAS3D_STATE_TEXTURE_DATA, NULL); -} - -EOLIAN static void -_evas_canvas3d_texture_efl_file_unload(Eo *obj, Evas_Canvas3D_Texture_Data *pd) -{ - efl_file_unload(efl_super(obj, MY_CLASS)); - eina_file_close(pd->f); // close matching open (matches open in _evas_canvas3d_texture_efl_file_load) OK - pd->f = NULL; - _texture_fini(obj); -} - -EOLIAN static Eina_Error -_evas_canvas3d_texture_efl_file_load(Eo *obj, Evas_Canvas3D_Texture_Data *pd) -{ - Evas_Image_Load_Opts lo; - int load_error; - Eo *evas = NULL; - void *image; - const Eina_File *f; - const char *key; - - if (efl_file_loaded_get(obj)) return 0; - - evas = evas_object_evas_get(obj); - Evas_Public_Data *e = efl_data_scope_get(evas, EVAS_CANVAS_CLASS); - - Eina_Error err = efl_file_load(efl_super(obj, MY_CLASS)); - if (err) return err; - - f = efl_file_mmap_get(obj); - key = efl_file_key_get(obj); - - if (!pd->engine_data && e->engine.func->texture_new) - pd->engine_data = e->engine.func->texture_new(_evas_engine_context(e), pd->atlas_enable); - - memset(&lo, 0x0, sizeof(Evas_Image_Load_Opts)); - image = e->engine.func->image_mmap(_evas_engine_context(e), - (Eina_File *) f, key, &load_error, &lo); - if (!image) - { - ERR("Can't load image from file"); - return EINA_FALSE; - } - - if (e->engine.func->texture_image_set) - e->engine.func->texture_image_set(_evas_engine_context(e), - pd->engine_data, - image); - - e->engine.func->image_free(_evas_engine_context(e), image); - - pd->f = eina_file_dup(f); - pd->key = eina_stringshare_add(key); - evas_canvas3d_object_change(obj, EVAS_CANVAS3D_STATE_TEXTURE_DATA, NULL); - - return EINA_TRUE; -} - -EAPI void -_evas_canvas3d_texture_source_set(Eo *obj , Evas_Canvas3D_Texture_Data *pd, Evas_Object *source) -{ - Eo *evas = NULL; - evas = evas_object_evas_get(obj); - Evas_Public_Data *e = efl_data_scope_get(evas, EVAS_CANVAS_CLASS); - Evas_Object_Protected_Data *src; - - if (source == pd->source) - return; - - _texture_fini(obj); - - if (source == NULL) - return; - - if (evas_object_evas_get(source) != evas) - { - ERR("Not matching canvas."); - return; - } - - src = efl_data_scope_get(source, EFL_CANVAS_OBJECT_CLASS); - - if (src->delete_me) - { - ERR("Source object is deleted."); - return; - } - - if (src->layer == NULL) - { - ERR("No evas surface associated with the source object."); - return; - } - if (!pd->engine_data && e->engine.func->texture_new) - pd->engine_data = e->engine.func->texture_new(_evas_engine_context(e), pd->atlas_enable); - - _texture_proxy_set(obj, source, src); - evas_canvas3d_object_change(obj, EVAS_CANVAS3D_STATE_TEXTURE_DATA, NULL); -} - -EOLIAN static void -_evas_canvas3d_texture_source_visible_set(Eo *obj EINA_UNUSED, Evas_Canvas3D_Texture_Data *pd, Eina_Bool visible) -{ - Evas_Object_Protected_Data *src_obj; - - if (pd->source == NULL) - return; - - src_obj = efl_data_scope_get(pd->source, EFL_CANVAS_OBJECT_CLASS); - - if (src_obj->proxy->src_invisible == !visible) - return; - - EINA_COW_WRITE_BEGIN(evas_object_proxy_cow, src_obj->proxy, Evas_Object_Proxy_Data, proxy_write) - proxy_write->src_invisible = !visible; - EINA_COW_WRITE_END(evas_object_proxy_cow, src_obj->proxy, proxy_write); - - src_obj->changed_src_visible = EINA_TRUE; - evas_object_smart_member_cache_invalidate(pd->source, EINA_FALSE, EINA_FALSE, EINA_TRUE); - evas_object_change(pd->source, src_obj); -} - -EOLIAN static Eina_Bool -_evas_canvas3d_texture_source_visible_get(const Eo *obj EINA_UNUSED, Evas_Canvas3D_Texture_Data *pd) -{ - Evas_Object_Protected_Data *src_obj; - - if (pd->source == NULL) - return EINA_FALSE; - - src_obj = efl_data_scope_get(pd->source, EFL_CANVAS_OBJECT_CLASS); - return !src_obj->proxy->src_invisible; -} - -EOLIAN static Evas_Colorspace -_evas_canvas3d_texture_color_format_get(const Eo *obj EINA_UNUSED, Evas_Canvas3D_Texture_Data *pd) -{ - Evas_Colorspace format = -1; - Eo *evas = NULL; - evas = evas_object_evas_get(obj); - Evas_Public_Data *e = efl_data_scope_get(evas, EVAS_CANVAS_CLASS); - - if (e->engine.func->image_colorspace_get && - e->engine.func->texture_image_get) - { - void *image; - - image = e->engine.func->texture_image_get(_evas_engine_context(e), pd->engine_data); - format = e->engine.func->image_colorspace_get(_evas_engine_context(e), image); - } - - return format; -} - -EOLIAN static void -_evas_canvas3d_texture_size_get(const Eo *obj, Evas_Canvas3D_Texture_Data *pd, int *w, int *h) -{ - Eo *evas = NULL; - evas = evas_object_evas_get(obj); - Evas_Public_Data *e = efl_data_scope_get(evas, EVAS_CANVAS_CLASS); - if (e->engine.func->texture_size_get) - { - e->engine.func->texture_size_get(_evas_engine_context(e), - pd->engine_data, w, h); - } -} - -EOLIAN static void -_evas_canvas3d_texture_wrap_set(Eo *obj, Evas_Canvas3D_Texture_Data *pd, Evas_Canvas3D_Wrap_Mode s, Evas_Canvas3D_Wrap_Mode t) -{ - Eo *evas = NULL; - evas = evas_object_evas_get(obj); - Evas_Public_Data *e = efl_data_scope_get(evas, EVAS_CANVAS_CLASS); - if (e->engine.func->texture_wrap_set) - { - e->engine.func->texture_wrap_set(_evas_engine_context(e), - pd->engine_data, s, t); - } - evas_canvas3d_object_change(obj, EVAS_CANVAS3D_STATE_TEXTURE_WRAP, NULL); -} - -EOLIAN static void -_evas_canvas3d_texture_wrap_get(Eo *obj, Evas_Canvas3D_Texture_Data *pd, Evas_Canvas3D_Wrap_Mode *s, Evas_Canvas3D_Wrap_Mode *t) -{ - Eo *evas = NULL; - evas = evas_object_evas_get(obj); - Evas_Public_Data *e = efl_data_scope_get(evas, EVAS_CANVAS_CLASS); - if (e->engine.func->texture_wrap_set) - { - e->engine.func->texture_wrap_get(_evas_engine_context(e), - pd->engine_data, s, t); - } -} - -EOLIAN static void -_evas_canvas3d_texture_filter_set(Eo *obj, Evas_Canvas3D_Texture_Data *pd, Evas_Canvas3D_Texture_Filter min, Evas_Canvas3D_Texture_Filter mag) -{ - Eo *evas = NULL; - evas = evas_object_evas_get(obj); - Evas_Public_Data *e = efl_data_scope_get(evas, EVAS_CANVAS_CLASS); - if (e->engine.func->texture_filter_set) - { - e->engine.func->texture_filter_set(_evas_engine_context(e), - pd->engine_data, min, mag); - } - evas_canvas3d_object_change(obj, EVAS_CANVAS3D_STATE_TEXTURE_FILTER, NULL); -} - -EOLIAN static void -_evas_canvas3d_texture_filter_get(const Eo *obj EINA_UNUSED, Evas_Canvas3D_Texture_Data *pd, Evas_Canvas3D_Texture_Filter *min, Evas_Canvas3D_Texture_Filter *mag) -{ - Eo *evas = NULL; - evas = evas_object_evas_get(obj); - Evas_Public_Data *e = efl_data_scope_get(evas, EVAS_CANVAS_CLASS); - if (e->engine.func->texture_filter_get) - { - e->engine.func->texture_filter_get(_evas_engine_context(e), - pd->engine_data, min, mag); - } -} - -EOLIAN static void -_evas_canvas3d_texture_atlas_enable_set(Eo *obj EINA_UNUSED, Evas_Canvas3D_Texture_Data *pd, Eina_Bool use_atlas) -{ - if (pd->atlas_enable != use_atlas) pd->atlas_enable = use_atlas; -} - -EOLIAN static Eina_Bool -_evas_canvas3d_texture_atlas_enable_get(const Eo *obj EINA_UNUSED, Evas_Canvas3D_Texture_Data *pd) -{ - return pd->atlas_enable; -} -#include "canvas/evas_canvas3d_texture.eo.c" diff --git a/src/lib/evas/canvas/evas_canvas3d_texture.eo b/src/lib/evas/canvas/evas_canvas3d_texture.eo deleted file mode 100644 index a680d299cc..0000000000 --- a/src/lib/evas/canvas/evas_canvas3d_texture.eo +++ /dev/null @@ -1,159 +0,0 @@ -type @beta @extern Evas_Colorspace: int; [[Evas colorspace type]] /* FIXME: Need to get emile migrated. */ - -class @beta Evas.Canvas3D.Texture extends Evas.Canvas3D.Object implements Efl.File -{ - [[Evas 3d canvas texture class]] - data : Evas_Canvas3D_Texture_Data; - methods { - @property source_visible { - [[The visibility flag of the source evas object of the given - texture. - - Call \@ref evas_object_show on the source object - and control the visibility using this function. - - By default the source object is visible. - - See also @.source_set. - ]] - set { - } - get { - } - values { - visible: bool; [[$true for visible, $false for invisible.]] - } - } - @property atlas_enable { - [[Enable flag to generation texture unit with support atlas. - - Use this flag only when you cannot normalize texture coordinates. - - By default it is enabled. - ]] - set { - } - get { - } - values { - use_atlas: bool; [[$true for enable, $false for disable.]] - } - } - data_set { - [[Set the data of the given texture. - - See also @Efl.File.file.set. - ]] - - params { - @in color_format: Evas_Colorspace; [[Color format of the texture.]] - @in w: int; [[Width of the data.]] - @in h: int; [[Height of the data.]] - @in data: const(void_ptr); [[Pointer to the data.]] - } - } - - source_set { - [[Set the data of the given texture from an evas object. - - Evas 3D support using existing evas object as a texture source. - This feature make it possible using any existing evas object - inside 3D scene. - - See also @.source_visible.set. - ]] - - params { - @in source: Efl.Canvas.Object; [[Source evas object to be used as - the texture data.]] - } - } - - color_format_get @const { - [[Get the color format of the given texture. - - EVAS_CANVAS3D_COLOR_FORMAT_RGBA will be returned if the texture - has source object. Otherwise, the color format of the data will - be returned. - - See also @.data_set, @Efl.File.file.set, @.source_set. - ]] - return: Evas_Colorspace; [[Color format of the given texture]] - } - - size_get @const { - [[Get the size of the given texture. - - If the texture has a source object, the size of the source object - will be returned. Otherwise the size of the data (or image file) - will be returned. - - See also @.data_set, @Efl.File.file.set, @.source_set. - ]] - params { - @out w: int; [[Pointer to receive the width of the texture size.]] - @out h: int; [[Pointer to receive the height of the texture size.]] - } - } - - wrap_set { - [[Set the wrap mode of the given texture. - - If the texture coordinate exceed range [0.0, 1.0] the values are - modified according to the wrap mode. - - Default wrap modes are both EVAS_CANVAS3D_WRAP_MODE_CLAMP for s and t. - ]] - params { - @in s: Evas.Canvas3D.Wrap_Mode; [[Wrap mode for S-axis.]] - @in t: Evas.Canvas3D.Wrap_Mode; [[Wrap mode for T-axis.]] - } - } - - wrap_get { - [[Get the wrap mode of the given texture. - - See also @.wrap_set. - ]] - params { - @out s: Evas.Canvas3D.Wrap_Mode; [[Pointer to receive S-axis wrap mode.]] - @out t: Evas.Canvas3D.Wrap_Mode; [[Pointer to receive T-axis wrap mode.]] - } - } - - filter_set { - [[Set the filter of the given texture. - - Default filters are both EVAS_CANVAS3D_TEXTURE_FILTER_NEAREST for - s and t. - ]] - - params { - @in min: Evas.Canvas3D.Texture_Filter; [[Minification filter used when down-scaling.]] - @in mag: Evas.Canvas3D.Texture_Filter; [[Magnification filter used when up-scaling.]] - } - } - - filter_get @const { - [[Get the filter of the given texture. - - See also @.filter_set. - ]] - params { - @out min: Evas.Canvas3D.Texture_Filter; [[Pointer to receive the minification filter.]] - @out mag: Evas.Canvas3D.Texture_Filter; [[Pointer to receive the magnification filter.]] - } - } - } - - implements { - Efl.Object.constructor; - Efl.Object.destructor; - Evas.Canvas3D.Object.update_notify; - Evas.Canvas3D.Object.change_notify; - Efl.File.load; - Efl.File.unload; - @empty Evas.Canvas3D.Object.callback_register; - @empty Evas.Canvas3D.Object.callback_unregister; - } -} diff --git a/src/lib/evas/canvas/evas_canvas3d_types.eot b/src/lib/evas/canvas/evas_canvas3d_types.eot deleted file mode 100644 index 81e3030e19..0000000000 --- a/src/lib/evas/canvas/evas_canvas3d_types.eot +++ /dev/null @@ -1,293 +0,0 @@ -// ---------------------------------------------------------------------------- -// All the below types are for Evas 3D - -type @beta Evas.Real: double; [[A type for floating value]] - -enum @beta Evas.Canvas3D.Object_Type -{ - [[Type of 3D Object - - @since 1.10]] - invalid = 0, [[Evas 3D type: invalid]] - scene, [[Evas 3D type: scene]] - node, [[Evas 3D type: node]] - camera, [[Evas 3D type: camera]] - light, [[Evas 3D type: light]] - model, [[Evas 3D type: model]] - mesh, [[Evas 3D type: mesh]] - texture, [[Evas 3D type: texture]] - material, [[Evas 3D type: material]] - primitive [[Evas 3D type: primitive - @since 1.15]] -} - -enum @beta Evas.Canvas3D.State -{ - [[State of the Evas 3D - - @since 1.10]] - max = 16, [[Evas 3D state: max]] - - any = 0, [[Evas 3D state: any]] - - scene_root_node = 1, [[Evas 3D state: scene root node]] - scene_camera_node, [[Evas 3D state: scene camera node]] - scene_background_color, [[Evas 3D state: scene background color]] - scene_size, [[Evas 3D state: scene size]] - scene_shadows_enabled, [[Evas 3D state: scene shadows enabled]] - scene_updated, [[Evas 3D state: scene updated - @since 1.14]] - scene_shadows_depth, [[Evas 3D state: scene shadows depth]] - scene_render_to_texture, [[Evas 3D state: scene render to texture]] - - texture_data = 1, [[Evas 3D state: texture data]] - texture_wrap, [[Evas 3D state: texture wrap]] - texture_filter, [[Evas 3D state: texture filter]] - - material_id = 1, [[Evas 3D state: material ID]] - material_color, [[Evas 3D state: material color]] - material_texture, [[Evas 3D state: material texture]] - - mesh_vertex_count = 1, [[Evas 3D state: mesh vertex count]] - mesh_frame, [[Evas 3D state: mesh frame]] - mesh_material, [[Evas 3D state: mesh material]] - mesh_transform, [[Evas 3D state: mesh transform]] - mesh_vertex_data, [[Evas 3D state: mesh vertex data]] - mesh_index_data, [[Evas 3D state: mesh index data]] - mesh_vertex_assembly, [[Evas 3D state: mesh vertex assembly]] - mesh_shader_mode, [[Evas 3D state: mesh shader mode]] - mesh_fog, [[Evas 3D state: mesh fog]] - mesh_blending, [[Evas 3D state: mesh blending]] - mesh_alpha_test, [[Evas 3D state: mesh alpha test]] - mesh_color_pick, [[Evas 3D state: mesh color pick]] - mesh_shadows_edges_filtering, [[Evas 3D state: mesh shadows edges filtering]] - mesh_shadows_constant_bias, [[Evas 3D state: mesh shadows constant bias]] - - camera_projection = 1, [[Evas 3D state: camera projection]] - - light_ambient = 1, [[Evas 3D state: light ambient]] - light_diffuse, [[Evas 3D state: light diffuse]] - light_specular, [[Evas 3D state: light specular]] - light_spot_dir, [[Evas 3D state: light spot dir]] - light_spot_exp, [[Evas 3D state: light spot exp]] - light_spot_cutoff, [[Evas 3D state: light spot cutoff]] - light_attenuation, [[Evas 3D state: light attenuation]] - light_projection, [[Evas 3D state: light projection]] - - node_transform_position = 1, [[Evas 3D state: node transform position]] - node_transform_orientation, [[Evas 3D state: node transform orientation]] - node_transform_scale, [[Evas 3D state: node transform scale]] - node_mesh_geometry, [[Evas 3D state: node mesh geometry]] - node_mesh_material, [[Evas 3D state: node mesh material]] - node_mesh_frame, [[Evas 3D state: node mesh frame]] - node_mesh_shader_mode, [[Evas 3D state: node mesh shader mode]] - node_mesh_material_id, [[Evas 3D state: node mesh material ID]] - node_light, [[Evas 3D state: node light]] - node_camera, [[Evas 3D state: node camera]] - node_parent_position, [[Evas 3D state: node parent position]] - node_parent_orientation, [[Evas 3D state: node parent orientation]] - node_parent_scale, [[Evas 3D state: node parent scale]] - node_member, [[Evas 3D state: node member]] - node_parent_billboard, [[Evas 3D state: node parent billboard - @since 1.14]] - node_lod [[Evas 3D state: node lod - @since 1.18]] -} - -enum @beta Evas.Canvas3D.Space -{ - [[Transform space - - @since 1.10]] - local = 0, [[Local coordinate space]] - parent, [[Parent coordinate space]] - world [[World coordinate space]] -} - -enum @beta Evas.Canvas3D.Node_Type -{ - [[Types of a node - - @since 1.10]] - unknown = -1, [[Unknown node type @since 1.21]] - node = 0, [[Node with no items]] - camera, [[Node which can contain camera object]] - light, [[Node which can contain light object]] - mesh [[Node which can contain mesh objects]] -} - -enum @beta Evas.Canvas3D.Node_Orientation_Type -{ - [[Types of node orientation - - @since 1.13]] - none = 0, [[Node with no orientation properties]] - look_at, [[Node orientation is given as a point to look at and a vector that indicates the angle at which the subject is looking at the point]] - look_to, [[Node orientation is given as id of another part to look at and a vector that indicates the angle at which the subject is looking at the part]] - angle_axis, [[Node orientation is given as an angle and an axis to rotate around]] - quaternion [[Node orientation is given as a quaternion]] -} - -enum @beta Evas.Canvas3D.Index_Format -{ - [[Index formats - - @since 1.10]] - none = 0, [[Indexing is not used]] - unsigned_byte, [[Index is of type unsigned byte]] - unsigned_short [[Index is of type unsigned short]] -} - -enum @beta Evas.Canvas3D.Frustum_Mode -{ - [[Frustum modes - - @since 1.12]] - bsphere, [[Bounding sphere]] - aabb, [[Axis-aligned bounding box]] - central_point [[Central point]] -} - -enum @beta Evas.Canvas3D.Vertex_Assembly -{ - [[Vertex assembly modes. Vertex assembly represents how the vertices are organized into geometric primitives. - - @since 1.10]] - points = 0, [[A vertex is rendered as a point]] - lines, [[Two vertices are organized as a line]] - line_strip, [[Vertices are organized as a connected line path]] - line_loop, [[Vertices are organized as a closed line path]] - triangles, [[Three vertices are organized as a triangle]] - triangle_strip, [[Vertices are organized as connected triangles]] - triangle_fan [[Vertices are organized as a triangle fan]] -} - -enum @beta Evas.Canvas3D.Comparison -{ - [[Comparsion functions for testing(alpha, depth, stencil) in fragment shader - - @since 1.14]] - never, [[Never passes]] - less, [[Passes if the incoming value is less than the reference value]] - equal, [[Passes if the incoming value is equal to the reference value]] - lequal, [[Passes if the incoming value is less than or equal to the reference value]] - greater, [[Passes if the incoming value is greater than the reference value]] - notequal, [[Passes if the incoming value is not equal to the reference value]] - gequal, [[Passes if the incoming value is greater than or equal to the reference value]] - always [[Always passes (initial value)]] -} - -enum @beta Evas.Canvas3D.Wrap_Mode -{ - [[Wrap modes for texture units - - @since 1.14]] - clamp = 0, [[Values will be clamped to be in range (min, max)]] - repeat, [[Values will be repeated]] - reflect [[Values will be repeated in a reflected manner]] -} - -enum @beta Evas.Canvas3D.Texture_Filter -{ - [[Filters for texture units - - @since 1.14]] - nearest = 0, [[Samples nearest texel]] - linear, [[Lineary interpolate nearby texels]] - nearest_mipmap_nearest, [[Nearest sampling mipmap]] - linear_mipmap_nearest, [[Nearest sampling mipmap and interpolate]] - nearest_mipmap_linear, [[Linear sampling in nearest mipmap]] - linear_mipmap_linear [[Linear sampling in mipmap and interpolate]] -} - -enum @beta Evas.Canvas3D.Mesh_Primitive -{ - [[Mesh primitive - - @since 1.12]] - none = 0, [[An empty space]] - square, [[One sided square]] - cube, [[Cube primitive]] - cylinder, [[Cylinder (can use precision and texture scale)]] - cone, [[Cone (can use precision and texture scale)]] - sphere, [[Sphere (can use precision and texture scale)]] - torus, [[Torus (can use ratio, precision and texture scale)]] - surface, [[Custom surface (can use pointer to users function, precision and texture scale)]] - terrain, [[Terrain as surface with pointer to perlin's noise function]] - count [[Sentinel value to indicate last enum field during iteration]] -} - -enum @beta Evas.Canvas3D.Primitive_Mode -{ - [[Mode of mesh primitive - - @since 1.15]] - default = 0, [[Default mode of primitive]] - without_base, [[Primitive without base (supported for cylinder and cone)]] - alternative_uv [[Ptimitive with alternative uv (supported for sphere)]] -} - -enum @beta Evas.Canvas3D.Shader_Mode -{ - [[Shader shade modes - - @since 1.10]] - vertex_color = 0, [[Shaded using vertex color attribute]] - diffuse, [[Shaded using material diffuse term]] - flat, [[Per-vertex flat lighting]] - phong, [[Per-pixel phong shading]] - normal_map, [[Per-pixel normal map shading]] - shadow_map_render, [[Fragment color is defined by its z-coord]] - color_pick, [[Rendering to additional frame bufer]] - parallax_occlusion, [[Per-pixel parallax occlusion map shading]] - post_processing_FXAA [[Render full screen quard]] -} - -enum @beta Evas.Canvas3D.Vertex_Attrib -{ - [[Vertex attribute IDs - - @since 1.10]] - position = 0, [[vertex position]] - normal, [[vertex normal]] - tangent, [[vertex tangent (for normal mapping)]] - color, [[vertex color]] - texcoord [[vertex texture coordinate]] -} - -enum @beta Evas.Canvas3D.Blend_Func -{ - [[Blending function - - @since 1.14]] - - zero = 0, [[The scale factors for color components is (0, 0, 0, 0)]] - one, [[The scale factors for color components is (1, 1, 1, 1)]] - src_color, [[The scale factors for color components is (rs/kr, gs/kg, bs/kb, as/ka)]] - one_minus_src_color, [[The scale factors for color components is (1, 1, 1, 1) - (rs/kr, gs/kg, bs/kb, as/ka)]] - dst_color, [[The scale factors for color components is (rd/kr, gd/kg, bd/kb, ad/ka)]] - one_minus_dst_color, [[The scale factors for color components is (1, 1, 1, 1) - (rd/kr, gd/kg, bd/kb, ad/ka)]] - src_alpha, [[The scale factors for color components is (as/ka, as/ka, as/ka, as/ka)]] - one_minus_src_alpha, [[The scale factors for color components is (1, 1, 1, 1) - (as/ka, as/ka, as/ka, as/ka)]] - dst_alpha, [[The scale factors for color components is (ad/ka, ad/ka, ad/ka, ad/ka)]] - one_minus_dst_alpha, [[The scale factors for color components is (1, 1, 1, 1) - (ad/ka, ad/ka, ad/ka, ad/ka)]] - constant_color, [[The scale factors for color components is (rc, gc, bc, ac)]] - one_minus_constant_color, [[The scale factors for color components is (1, 1, 1, 1) - (rc, gc, bc, ac)]] - constant_alpha, [[The scale factors for color components is (ac, ac, ac, ac)]] - one_minus_constant_alpha, [[The scale factors for color components is (1, 1, 1, 1) - (ac, ac, ac, ac)]] - src_alpha_saturate [[The scale factors for color components is (i, i, i, 1) where i = min(as, ka, ad)/ka]] -} - -enum @beta Evas.Canvas3D.Material_Attrib -{ - [[Material attributes - - @since 1.10]] - ambient = 0, [[ambient term]] - diffuse, [[diffuse term]] - specular, [[specular term]] - emission, [[emission term]] - normal [[Normal map term]] -} - -type @beta Evas.Canvas3D.Surface_Func: __undefined_type; [[Evas 3D canvas surface function type]] diff --git a/src/lib/evas/canvas/evas_image_legacy.c b/src/lib/evas/canvas/evas_image_legacy.c index 12d53a4a10..f58dd3870c 100644 --- a/src/lib/evas/canvas/evas_image_legacy.c +++ b/src/lib/evas/canvas/evas_image_legacy.c @@ -853,8 +853,6 @@ evas_object_image_size_set(Evas_Object *eo_obj, int w, int h) Evas_Image_Data *o = efl_data_scope_get(eo_obj, EFL_CANVAS_IMAGE_INTERNAL_CLASS); int stride = 0; - if (o->cur->scene) return; - evas_object_async_block(obj); _evas_image_cleanup(eo_obj, obj, o); if (w < 1) w = 1; diff --git a/src/lib/evas/canvas/evas_image_private.h b/src/lib/evas/canvas/evas_image_private.h index 310d91236b..693125fb84 100644 --- a/src/lib/evas/canvas/evas_image_private.h +++ b/src/lib/evas/canvas/evas_image_private.h @@ -82,7 +82,6 @@ struct _Evas_Object_Image_State Evas_Object *source; Evas_Map *defmap; - Evas_Canvas3D_Scene *scene; Eina_File *f; const char *key; @@ -213,11 +212,6 @@ Eina_Bool _evas_image_proxy_source_clip_get(const Eo *eo_obj); void _evas_image_proxy_source_events_set(Eo *eo_obj, Eina_Bool source_events); Eina_Bool _evas_image_proxy_source_events_get(const Eo *eo_obj); -/* Efl.Canvas.Scene3d */ -void _evas_image_3d_render(Evas *eo_e, Evas_Object *eo_obj, Evas_Object_Protected_Data *obj, Evas_Image_Data *o, Evas_Canvas3D_Scene *scene, void *engine, void *output); -void _evas_image_3d_set(Evas_Object *eo_obj, Evas_Canvas3D_Scene *scene); -void _evas_image_3d_unset(Evas_Object *eo_obj, Evas_Object_Protected_Data *image, Evas_Image_Data *o); - /* Efl.Canvas.Surface */ Eina_Bool _evas_image_native_surface_set(Eo *eo_obj, Evas_Native_Surface *surf); Evas_Native_Surface *_evas_image_native_surface_get(const Evas_Object *eo_obj); diff --git a/src/lib/evas/canvas/evas_main.c b/src/lib/evas/canvas/evas_main.c index 9aa455553d..deb1905626 100644 --- a/src/lib/evas/canvas/evas_main.c +++ b/src/lib/evas/canvas/evas_main.c @@ -1077,9 +1077,6 @@ _image_data_unset(Evas_Object_Protected_Data *obj, Eina_List **list) data->engine_data = obj->layer->evas->engine.func->polygon_points_clear(ENC, data->engine_data)) - else CHECK(EVAS_CANVAS3D_TEXTURE_CLASS, Evas_Canvas3D_Texture_Data, - if (obj->layer->evas->engine.func->texture_free) - obj->layer->evas->engine.func->texture_free(ENC, data->engine_data)) else return; #undef CHECK evas_object_ref(obj->object); @@ -1136,10 +1133,8 @@ _image_data_regenerate(Evas_Object *eo_obj) } CHECK(EFL_CANVAS_IMAGE_INTERNAL_CLASS, Evas_Image_Data, _image_image_data_regenerate(eo_obj, obj, data)) else CHECK(EFL_CANVAS_IMAGE_CLASS, Evas_Image_Data, _image_image_data_regenerate(eo_obj, obj, data)) - else CHECK(EFL_CANVAS_SCENE3D_CLASS, Evas_Image_Data, _image_image_data_regenerate(eo_obj, obj, data)) //else CHECK(EFL_CANVAS_VG_OBJECT_CLASS, Efl_Canvas_Vg_Object_Data,) //else CHECK(EFL_CANVAS_POLYGON_CLASS, Efl_Canvas_Polygon_Data,) - //else CHECK(EVAS_CANVAS3D_TEXTURE_CLASS, Evas_Canvas3D_Texture_Data, } EAPI void diff --git a/src/lib/evas/canvas/evas_object_image.c b/src/lib/evas/canvas/evas_object_image.c index 32939b769c..8d714035a6 100644 --- a/src/lib/evas/canvas/evas_object_image.c +++ b/src/lib/evas/canvas/evas_object_image.c @@ -96,7 +96,7 @@ static const Evas_Object_Image_State default_state = { { 0, 0, 0 }, // image { 1.0, 0, 0, 0, 0, 1 }, // border { { NULL, 0, 0 }, { NULL, 0, 0 } }, - NULL, NULL, NULL, //source, defmap, scene + NULL, NULL, //source, defmap NULL, //f NULL, //key 0, //frame @@ -171,7 +171,6 @@ _evas_image_cleanup(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj, Evas_I ENFN->image_data_preload_cancel(ENC, o->engine_data, eo_obj, EINA_FALSE); } if (o->cur->source) _evas_image_proxy_unset(eo_obj, obj, o); - if (o->cur->scene) _evas_image_3d_unset(eo_obj, obj, o); } static Eina_Bool @@ -252,7 +251,6 @@ _evas_image_init_set(const Eina_File *f, const char *key, Evas_Image_Load_Opts *lo) { if (o->cur->source) _evas_image_proxy_unset(eo_obj, obj, o); - if (o->cur->scene) _evas_image_3d_unset(eo_obj, obj, o); EINA_COW_IMAGE_STATE_WRITE_BEGIN(o, state_write) { @@ -1033,22 +1031,15 @@ _efl_canvas_image_internal_efl_gfx_image_image_size_get(const Eo *eo_obj EINA_UN } EOLIAN static Eina_Size2D -_efl_canvas_image_internal_efl_gfx_view_view_size_get(const Eo *eo_obj, Evas_Image_Data *o) +_efl_canvas_image_internal_efl_gfx_view_view_size_get(const Eo *eo_obj EINA_UNUSED, Evas_Image_Data *o) { int uvw, uvh; Evas_Object_Protected_Data *source = NULL; - Evas_Object_Protected_Data *obj; - obj = efl_data_scope_get(eo_obj, EFL_CANVAS_OBJECT_CLASS); if (o->cur->source) source = efl_data_scope_get(o->cur->source, EFL_CANVAS_OBJECT_CLASS); - if (o->cur->scene) - { - uvw = obj->data_3d->w; - uvh = obj->data_3d->h; - } - else if (!o->cur->source) + if (!o->cur->source) { uvw = o->cur->image.w; uvh = o->cur->image.h; @@ -1732,13 +1723,6 @@ evas_object_image_free(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj) state_write->source = NULL; EINA_COW_IMAGE_STATE_WRITE_END(o, state_write); } - if (o->cur->scene) - { - _evas_image_3d_unset(eo_obj, obj, o); - EINA_COW_IMAGE_STATE_WRITE_BEGIN(o, state_write) - state_write->scene = NULL; - EINA_COW_IMAGE_STATE_WRITE_END(o, state_write); - } if (o->cur->f) { eina_file_close(o->cur->f); // close matching open (dup in _evas_image_init_set) OK @@ -2318,15 +2302,6 @@ _evas_image_pixels_get(Eo *eo_obj, Evas_Object_Protected_Data *obj, *uvw = *imagew; *uvh = *imageh; } - else if (o->cur->scene) - { - _evas_image_3d_render(obj->layer->evas->evas, eo_obj, obj, o, o->cur->scene, engine, output); - pixels = obj->data_3d->surface; - *imagew = obj->data_3d->w; - *imageh = obj->data_3d->h; - *uvw = *imagew; - *uvh = *imageh; - } else if (obj->cur->snapshot) { pixels = o->engine_data; @@ -2868,18 +2843,6 @@ evas_object_image_render_pre(Evas_Object *eo_obj, goto done; } } - else if (o->cur->scene) - { - Evas_Canvas3D_Scene *scene = o->cur->scene; - Eina_Bool dirty; - - dirty = evas_canvas3d_object_dirty_get(scene, EVAS_CANVAS3D_STATE_ANY); - if (dirty) - { - evas_object_render_pre_prev_cur_add(&e->clip_changes, eo_obj, obj); - goto done; - } - } /* now figure what changed and add draw rects */ /* if it just became visible or invisible */ diff --git a/src/lib/evas/canvas/evas_object_main.c b/src/lib/evas/canvas/evas_object_main.c index 82eee8aad2..eb4b9952ab 100644 --- a/src/lib/evas/canvas/evas_object_main.c +++ b/src/lib/evas/canvas/evas_object_main.c @@ -13,7 +13,7 @@ EVAS_MEMPOOL(_mp_sh); /* evas internal stuff */ static const Evas_Object_Proxy_Data default_proxy = { - NULL, NULL, NULL, 0, 0, NULL, 0, 0, 0, 0 + NULL, NULL, 0, 0, NULL, 0, 0, 0, 0 }; static const Evas_Object_Map_Data default_map = { { NULL, NULL, 0, 0 }, { NULL, NULL, 0, 0 }, NULL, 0, 0, NULL, NULL @@ -34,7 +34,6 @@ static const Evas_Object_Events_Data default_events = { Eina_Cow *evas_object_proxy_cow = NULL; Eina_Cow *evas_object_map_cow = NULL; Eina_Cow *evas_object_state_cow = NULL; -Eina_Cow *evas_object_3d_cow = NULL; Eina_Cow *evas_object_mask_cow = NULL; Eina_Cow *evas_object_events_cow = NULL; @@ -49,29 +48,26 @@ typedef struct _Event_Animation static Eina_Bool _init_cow(void) { - if (evas_object_map_cow && evas_object_proxy_cow && evas_object_state_cow && evas_object_3d_cow) return EINA_TRUE; + if (evas_object_map_cow && evas_object_proxy_cow && evas_object_state_cow) return EINA_TRUE; evas_object_proxy_cow = eina_cow_add("Evas Object Proxy", sizeof (Evas_Object_Proxy_Data), 8, &default_proxy, EINA_TRUE); evas_object_map_cow = eina_cow_add("Evas Object Map", sizeof (Evas_Object_Map_Data), 8, &default_map, EINA_TRUE); evas_object_state_cow = eina_cow_add("Evas Object State", sizeof (Evas_Object_Protected_State), 64, &default_state, EINA_FALSE); - evas_object_3d_cow = eina_cow_add("Evas Object 3D", sizeof (Evas_Object_3D_Data), 8, &default_proxy, EINA_TRUE); evas_object_mask_cow = eina_cow_add("Evas Mask Data", sizeof (Evas_Object_Mask_Data), 8, &default_mask, EINA_TRUE); evas_object_events_cow = eina_cow_add("Evas Events Data", sizeof (Evas_Object_Events_Data), 8, &default_events, EINA_TRUE); if (!(evas_object_map_cow && evas_object_proxy_cow && evas_object_state_cow && - evas_object_3d_cow && evas_object_mask_cow && evas_object_events_cow)) + evas_object_mask_cow && evas_object_events_cow)) { eina_cow_del(evas_object_proxy_cow); eina_cow_del(evas_object_map_cow); eina_cow_del(evas_object_state_cow); - eina_cow_del(evas_object_3d_cow); eina_cow_del(evas_object_mask_cow); eina_cow_del(evas_object_events_cow); evas_object_proxy_cow = NULL; evas_object_map_cow = NULL; evas_object_state_cow = NULL; - evas_object_3d_cow = NULL; evas_object_mask_cow = NULL; evas_object_events_cow = NULL; @@ -206,7 +202,6 @@ _efl_canvas_object_efl_object_constructor(Eo *eo_obj, Evas_Object_Protected_Data obj->map = eina_cow_alloc(evas_object_map_cow); obj->cur = eina_cow_alloc(evas_object_state_cow); obj->prev = eina_cow_alloc(evas_object_state_cow); - obj->data_3d = eina_cow_alloc(evas_object_3d_cow); obj->mask = eina_cow_alloc(evas_object_mask_cow); obj->events = eina_cow_alloc(evas_object_events_cow); @@ -519,7 +514,6 @@ evas_object_free(Evas_Object_Protected_Data *obj, Eina_Bool clean_layer) eina_cow_free(evas_object_map_cow, (const Eina_Cow_Data**) &obj->map); eina_cow_free(evas_object_state_cow, (const Eina_Cow_Data**) &obj->cur); eina_cow_free(evas_object_state_cow, (const Eina_Cow_Data**) &obj->prev); - eina_cow_free(evas_object_3d_cow, (const Eina_Cow_Data**) &obj->data_3d); eina_cow_free(evas_object_mask_cow, (const Eina_Cow_Data**) &obj->mask); eina_cow_free(evas_object_events_cow, (const Eina_Cow_Data**) &obj->events); @@ -539,7 +533,6 @@ evas_object_change(Evas_Object *eo_obj EINA_UNUSED, Evas_Object_Protected_Data * Evas_Object_Protected_Data *obj2; Evas_Object *eo_obj2; Eina_Bool movch = EINA_FALSE; - Evas_Canvas3D_Texture *texture; if ((!obj->layer) || (!obj->layer->evas)) return; if (obj->layer->evas->nochange) return; @@ -570,10 +563,6 @@ evas_object_change(Evas_Object *eo_obj EINA_UNUSED, Evas_Object_Protected_Data * if (!obj2) continue; evas_object_change(eo_obj2, obj2); } - EINA_LIST_FOREACH(obj->proxy->proxy_textures, l, texture) - { - evas_canvas3d_object_change(texture, EVAS_CANVAS3D_STATE_TEXTURE_DATA, NULL); - } if (obj->smart.parent) { Evas_Object_Protected_Data *smart_parent = efl_data_scope_get(obj->smart.parent, MY_CLASS); @@ -1103,21 +1092,6 @@ _efl_canvas_object_efl_object_invalidate(Eo *eo_obj, Evas_Object_Protected_Data if (efl_isa(proxy, EFL_GFX_FILTER_INTERFACE)) efl_gfx_filter_source_set(proxy, NULL, eo_obj); } - - /* Eina_Cow has no way to know if we are going to really change something - or not. So before calling the cow, let's check if we want to do something */ - if (obj->proxy->proxy_textures) - { - EINA_COW_WRITE_BEGIN(evas_object_proxy_cow, obj->proxy, - Evas_Object_Proxy_Data, proxy_src) - { - Evas_Canvas3D_Texture *texture; - - EINA_LIST_FREE(proxy_src->proxy_textures, texture) - evas_canvas3d_texture_source_set(texture, NULL); - } - EINA_COW_WRITE_END_NOGC(evas_object_proxy_cow, obj->proxy, proxy_src); - } } if (obj->cur) diff --git a/src/lib/evas/canvas/evas_render.c b/src/lib/evas/canvas/evas_render.c index 08252d2326..6a0d7fab0f 100644 --- a/src/lib/evas/canvas/evas_render.c +++ b/src/lib/evas/canvas/evas_render.c @@ -389,15 +389,6 @@ _evas_proxy_redraw_set(Evas_Public_Data *e, Evas_Object_Protected_Data *obj, //Update the proxies recursively. _evas_proxy_redraw_set(e, proxy, render); } - - if (obj->proxy->proxy_textures) - { - /* Flag need redraw on proxy texture source */ - EINA_COW_WRITE_BEGIN(evas_object_proxy_cow, obj->proxy, - Evas_Object_Proxy_Data, source) - source->redraw = EINA_TRUE; - EINA_COW_WRITE_END(evas_object_proxy_cow, obj->proxy, source); - } } /* sets the mask redraw flag for all the objects clipped by this mask */ @@ -466,7 +457,7 @@ _evas_render_phase1_direct(Evas_Public_Data *e, EINA_PREFETCH(&(obj->cur->clipper)); if (obj->changed) evas_object_clip_recalc(obj); - if (obj->proxy->proxies || obj->proxy->proxy_textures) + if (obj->proxy->proxies) { /* is proxy source */ if (_evas_render_object_changed_get(obj)) @@ -498,7 +489,7 @@ _evas_render_phase1_direct(Evas_Public_Data *e, if (!obj->smart.smart || evas_object_smart_changed_get(obj)) { /* proxy sources */ - if (obj->proxy->proxies || obj->proxy->proxy_textures) + if (obj->proxy->proxies) { EINA_COW_WRITE_BEGIN(evas_object_proxy_cow, obj->proxy, Evas_Object_Proxy_Data, proxy_write) @@ -2313,7 +2304,6 @@ end: * Render the source object when a proxy is set. * Used to force a draw if necessary, else just makes sure it's available. * Called from: image objects and text with filters. - * TODO: 3d objects subrender should probably be merged here as well. */ void evas_render_proxy_subrender(Evas *eo_e, void *output, Evas_Object *eo_source, Evas_Object *eo_proxy, diff --git a/src/lib/evas/canvas/meson.build b/src/lib/evas/canvas/meson.build index a7a6d06385..291695bf67 100644 --- a/src/lib/evas/canvas/meson.build +++ b/src/lib/evas/canvas/meson.build @@ -2,19 +2,9 @@ pub_eo_files = [ 'efl_canvas_polygon.eo', 'efl_canvas_image_internal.eo', - 'evas_canvas3d_camera.eo', - 'evas_canvas3d_texture.eo', - 'evas_canvas3d_material.eo', - 'evas_canvas3d_light.eo', - 'evas_canvas3d_mesh.eo', - 'evas_canvas3d_primitive.eo', - 'evas_canvas3d_node.eo', - 'evas_canvas3d_scene.eo', - 'evas_canvas3d_object.eo', 'efl_canvas_image.eo', 'efl_canvas_snapshot.eo', 'efl_canvas_proxy.eo', - 'efl_canvas_scene3d.eo', 'efl_canvas_surface.eo', 'efl_canvas_surface_tbm.eo', 'efl_canvas_surface_x11.eo', @@ -80,7 +70,6 @@ endforeach pub_eo_types_files = [ - 'evas_canvas3d_types.eot', 'efl_canvas_animation_types.eot', 'efl_input_types.eot', ] @@ -166,7 +155,6 @@ evas_src += files([ 'efl_canvas_event_grabber.c', 'efl_canvas_proxy.c', 'efl_canvas_snapshot.c', - 'efl_canvas_scene3d.c', 'efl_canvas_surface.c', 'efl_canvas_surface_tbm.c', 'efl_canvas_surface_x11.c', @@ -198,17 +186,6 @@ evas_src += files([ 'efl_canvas_vg_shape.c', 'efl_canvas_vg_image.c', 'evas_filter_mixin.c', - 'evas_canvas3d_object.c', - 'evas_canvas3d_scene.c', - 'evas_canvas3d_node.c', - 'evas_canvas3d_camera.c', - 'evas_canvas3d_light.c', - 'evas_canvas3d_mesh.c', - 'evas_canvas3d_texture.c', - 'evas_canvas3d_material.c', - 'evas_canvas3d_primitive.c', - 'evas_canvas3d_node_callback.h', - 'evas_canvas3d_eet.c', 'efl_canvas_object_animation.c', 'efl_text_cursor.c', 'efl_text_formatter.c' diff --git a/src/lib/evas/common3d/meson.build b/src/lib/evas/common3d/meson.build deleted file mode 100644 index 22341b4a84..0000000000 --- a/src/lib/evas/common3d/meson.build +++ /dev/null @@ -1,2 +0,0 @@ -subdir('primitives') -subdir('save_load') \ No newline at end of file diff --git a/src/lib/evas/common3d/primitives/meson.build b/src/lib/evas/common3d/primitives/meson.build deleted file mode 100644 index 2888869bf8..0000000000 --- a/src/lib/evas/common3d/primitives/meson.build +++ /dev/null @@ -1,5 +0,0 @@ -subdir('solids_of_revolution') -subdir('surfaces') -subdir('tabulated_primitives') - -evas_src += files(['primitive_common.c']) \ No newline at end of file diff --git a/src/lib/evas/common3d/primitives/primitive_common.c b/src/lib/evas/common3d/primitives/primitive_common.c deleted file mode 100644 index 1bea0682c6..0000000000 --- a/src/lib/evas/common3d/primitives/primitive_common.c +++ /dev/null @@ -1,203 +0,0 @@ -#include "primitive_common.h" - -void _set_vertex_data_from_array(Evas_Canvas3D_Mesh *mesh, - int frame, - const float *data, - Evas_Canvas3D_Vertex_Attrib attr, - int start, - int attr_count, - int line, - int vcount) -{ - float *address, *out; - int stride, i, j; - evas_canvas3d_mesh_frame_vertex_data_copy_set(mesh, frame, attr, 0, NULL); - address = (float *)evas_canvas3d_mesh_frame_vertex_data_map(mesh, frame, attr); - stride = evas_canvas3d_mesh_frame_vertex_stride_get(mesh, frame, attr); - if (stride == 0) stride = sizeof(float) * attr_count; - for (i = 0; i < vcount; i++) - { - out = (float *)((char *)address + stride * i); - for (j = 0; j < attr_count; j++) - out[j] = data[start + (line * i) + j]; - } - evas_canvas3d_mesh_frame_vertex_data_unmap(mesh, frame, attr); -} - -void -_set_vec3_vertex_data(Evas_Canvas3D_Mesh *mesh, - int frame, - int vcount, - Eina_Vector3 *data, - Evas_Canvas3D_Vertex_Attrib attr) -{ - float *address, *out; - int stride, i; - evas_canvas3d_mesh_frame_vertex_data_copy_set(mesh, frame, attr, 0, NULL); - address = (float *)evas_canvas3d_mesh_frame_vertex_data_map(mesh, frame, attr); - stride = evas_canvas3d_mesh_frame_vertex_stride_get(mesh, frame, attr); - if (stride == 0) stride = sizeof(float) * 3; - for (i = 0; i < vcount; i++) - { - out = (float *)((char *)address + stride * i); - out[0] = data[i].x; - out[1] = data[i].y; - out[2] = data[i].z; - } - free(data); - evas_canvas3d_mesh_frame_vertex_data_unmap(mesh, frame, attr); -} - -void -_set_vec2_vertex_data(Evas_Canvas3D_Mesh *mesh, - int frame, - int vcount, - Eina_Vector2 *data, - Evas_Canvas3D_Vertex_Attrib attr) -{ - float *address, *out; - int stride, i; - evas_canvas3d_mesh_frame_vertex_data_copy_set(mesh, frame, attr, 0, NULL); - address = (float *)evas_canvas3d_mesh_frame_vertex_data_map(mesh, frame, attr); - stride = evas_canvas3d_mesh_frame_vertex_stride_get(mesh, frame, attr); - if (stride == 0) stride = sizeof(float) * 2; - for (i = 0; i < vcount; i++) - { - out = (float *)((char *)address + stride * i); - out[0] = data[i].x; - out[1] = data[i].y; - } - free(data); - evas_canvas3d_mesh_frame_vertex_data_unmap(mesh, frame, attr); -} - -void -_generate_indices(unsigned short *indices, int a, int b) -{ - int i, j, a1 = a + 1; - unsigned short *index = &indices[0]; - - for (i = 0; i < b; i++) - { - for (j = 0; j < a; j++) - { - *index++ = j + a1 * i; - *index++ = j + a1 * (i + 1); - *index++ = j + 1 + a1 * (i + 1); - - *index++ = j + a1 * i; - *index++ = j + 1 + a1 * i; - *index++ = j + a1 * (i + 1) + 1; - } - } -} - -void -_primitives_vec3_copy(Eina_Vector3 *dst, const Eina_Vector3 *src) -{ - dst->x = src->x; - dst->y = src->y; - dst->z = src->z; -} - -void -_primitives_vec3_subtract(Eina_Vector3 *out, const Eina_Vector3 *a, const Eina_Vector3 *b) -{ - out->x = a->x - b->x; - out->y = a->y - b->y; - out->z = a->z - b->z; -} - -void -_primitives_vec3_cross_product(Eina_Vector3 *out, const Eina_Vector3 *a, const Eina_Vector3 *b) -{ - Eina_Vector3 tmp; - - tmp.x = a->y * b->z - a->z * b->y; - tmp.y = a->z * b->x - a->x * b->z; - tmp.z = a->x * b->y - a->y * b->x; - - _primitives_vec3_copy(out, &tmp); -} - -void -_primitives_vec3_normalize(Eina_Vector3 *out) -{ - Evas_Real size = out->x * out->x + out->y *out->y + out->z * out->z; - size = sqrt(size); - out->x /= size; - out->y /= size; - out->z /= size; -} - -void -evas_common_set_model_from_primitive(Evas_Canvas3D_Mesh *model, - int frame, - Evas_Canvas3D_Primitive_Data *primitive) -{ - Evas_Real ratio = primitive->ratio; - int precision = primitive->precision; - Evas_Canvas3D_Surface_Func *surface = primitive->surface; - Eina_Vector2 tex_scale = primitive->tex_scale; - Evas_Canvas3D_Primitive_Mode mode = primitive->mode; - - switch (primitive->form) - { - case EVAS_CANVAS3D_MESH_PRIMITIVE_NONE: - case EVAS_CANVAS3D_MESH_PRIMITIVE_COUNT: - { - ERR("Primitive with this type cannot be set to mesh."); - break; - } - case EVAS_CANVAS3D_MESH_PRIMITIVE_SQUARE: - { - evas_model_set_from_square_primitive(model, frame); - break; - } - case EVAS_CANVAS3D_MESH_PRIMITIVE_CUBE: - { - evas_model_set_from_cube_primitive(model, frame); - break; - } - case EVAS_CANVAS3D_MESH_PRIMITIVE_CYLINDER: - { - evas_model_set_from_cylinder_primitive(model, frame, mode, - precision, tex_scale); - break; - } - case EVAS_CANVAS3D_MESH_PRIMITIVE_CONE: - { - evas_model_set_from_cone_primitive(model, frame, mode, - precision, tex_scale); - break; - } - case EVAS_CANVAS3D_MESH_PRIMITIVE_SPHERE: - { - evas_model_set_from_sphere_primitive(model, frame, mode, - precision, tex_scale); - break; - } - case EVAS_CANVAS3D_MESH_PRIMITIVE_TORUS: - { - evas_model_set_from_torus_primitive(model, frame, - ratio, precision, tex_scale); - break; - } - case EVAS_CANVAS3D_MESH_PRIMITIVE_SURFACE: - { - evas_model_set_from_surface_primitive(model, frame, - surface, precision, tex_scale); - break; - } - case EVAS_CANVAS3D_MESH_PRIMITIVE_TERRAIN: - { - evas_model_set_from_terrain_primitive(model, frame, - precision, tex_scale); - break; - } - default: - { - ERR("Unknown type of primitive"); - } - } -} diff --git a/src/lib/evas/common3d/primitives/primitive_common.h b/src/lib/evas/common3d/primitives/primitive_common.h deleted file mode 100644 index 1cf4d916fb..0000000000 --- a/src/lib/evas/common3d/primitives/primitive_common.h +++ /dev/null @@ -1,62 +0,0 @@ -#ifdef HAVE_CONFIG_H -# include "config.h" -#endif //HAVE_CONFIG_H - -#ifndef PRIMITIVE_COMMON -#define PRIMITIVE_COMMON -#include "evas_options.h" - -#include "evas_common_private.h" -#include "evas_private.h" - -#define ALLOCATE_VERTEX_DATA \ - Eina_Vector3 *vertices = malloc(sizeof(Eina_Vector3) * vcount); \ - Eina_Vector3 *normals = malloc(sizeof(Eina_Vector3) * vcount); \ - Eina_Vector2 *tex_coord = malloc(sizeof(Eina_Vector2) * vcount); \ - Eina_Vector3 *tangents = malloc(sizeof(Eina_Vector3) * vcount); \ - unsigned short *indices = malloc(sizeof(short) * icount); - -#define SET_VERTEX_DATA(frame) \ - Eina_Bool frame_exist; \ - frame_exist = evas_canvas3d_mesh_frame_exist(mesh, frame); \ - if (!frame_exist) \ - evas_canvas3d_mesh_frame_add(mesh, frame); \ - evas_canvas3d_mesh_vertex_count_set(mesh, vcount); \ - evas_canvas3d_mesh_index_data_copy_set(mesh, EVAS_CANVAS3D_INDEX_FORMAT_UNSIGNED_SHORT, \ - icount, &indices[0]); \ - _set_vec3_vertex_data(mesh, frame, vcount, vertices, EVAS_CANVAS3D_VERTEX_ATTRIB_POSITION); \ - _set_vec3_vertex_data(mesh, frame, vcount, normals, EVAS_CANVAS3D_VERTEX_ATTRIB_NORMAL); \ - _set_vec2_vertex_data(mesh, frame, vcount, tex_coord, EVAS_CANVAS3D_VERTEX_ATTRIB_TEXCOORD); \ - _set_vec3_vertex_data(mesh, frame, vcount, tangents, EVAS_CANVAS3D_VERTEX_ATTRIB_TANGENT); \ - free(indices); - -#define SET_VERTEX_DATA_FROM_ARRAY(mesh, frame, varray, vcount, indices, icount) \ - Eina_Bool frame_exist; \ - frame_exist = evas_canvas3d_mesh_frame_exist(mesh, frame); \ - if (!frame_exist) \ - evas_canvas3d_mesh_frame_add(mesh, frame); \ - evas_canvas3d_mesh_vertex_count_set(mesh, vcount); \ - evas_canvas3d_mesh_index_data_copy_set(mesh, EVAS_CANVAS3D_INDEX_FORMAT_UNSIGNED_SHORT, \ - icount, &indices[0]); \ - _set_vertex_data_from_array(mesh, frame, varray, EVAS_CANVAS3D_VERTEX_ATTRIB_POSITION, \ - 0, 3, 15, vcount); \ - _set_vertex_data_from_array(mesh, frame, varray, EVAS_CANVAS3D_VERTEX_ATTRIB_NORMAL, \ - 3, 3, 15, vcount); \ - _set_vertex_data_from_array(mesh, frame, varray, EVAS_CANVAS3D_VERTEX_ATTRIB_COLOR, \ - 6, 4, 15, vcount); \ - _set_vertex_data_from_array(mesh, frame, varray, EVAS_CANVAS3D_VERTEX_ATTRIB_TEXCOORD, \ - 10, 2, 15, vcount); \ - _set_vertex_data_from_array(mesh, frame, varray, EVAS_CANVAS3D_VERTEX_ATTRIB_TANGENT, \ - 12, 3, 15, vcount); - -void _generate_indices(unsigned short *indices, int count, int width); -void _set_vec3_vertex_data(Evas_Canvas3D_Mesh *mesh, int frame, int vcount, Eina_Vector3 *data, Evas_Canvas3D_Vertex_Attrib attr); -void _set_vec2_vertex_data(Evas_Canvas3D_Mesh *mesh, int frame, int vcount, Eina_Vector2 *data, Evas_Canvas3D_Vertex_Attrib attr); -void _set_vertex_data_from_array(Evas_Canvas3D_Mesh *mesh, int frame, const float *data, Evas_Canvas3D_Vertex_Attrib attr, int start, int attr_count, int line, int vcount); - -void _primitives_vec3_copy(Eina_Vector3 *dst, const Eina_Vector3 *src); -void _primitives_vec3_subtract(Eina_Vector3 *out, const Eina_Vector3 *a, const Eina_Vector3 *b); -void _primitives_vec3_cross_product(Eina_Vector3 *out, const Eina_Vector3 *a, const Eina_Vector3 *b); -void _primitives_vec3_normalize(Eina_Vector3 *out); - -#endif //PRIMITIVE_COMMON diff --git a/src/lib/evas/common3d/primitives/solids_of_revolution/cone.c b/src/lib/evas/common3d/primitives/solids_of_revolution/cone.c deleted file mode 100644 index a2852bb374..0000000000 --- a/src/lib/evas/common3d/primitives/solids_of_revolution/cone.c +++ /dev/null @@ -1,140 +0,0 @@ -#include "../primitive_common.h" - -void -_set_default_cone(Evas_Canvas3D_Mesh *mesh, - int frame, - int p, - Eina_Vector2 tex_scale) -{ - int vcount, icount, vccount, i, j, num; - double dfi, fi, sinfi, cosfi, nplane, nz; - - icount = p * 18; - vccount = p + 1; - vcount = 4 * vccount; - - dfi = 2.0 * M_PI / p; - nz = sqrt(1.0 / 3.0); - nplane = sqrt(2.0 / 3.0); - - ALLOCATE_VERTEX_DATA - - for (i = 0; i < vccount; i++) - { - fi = i * dfi; - sinfi = sin(fi); - cosfi = cos(fi); - - vertices[i].x = 0.0; - vertices[i].y = 0.0; - vertices[i].z = -0.5; - vertices[i + vccount].x = sinfi / 2.0; - vertices[i + vccount].y = cosfi / 2.0; - vertices[i + vccount].z = -0.5; - vertices[i + 2 * vccount] = vertices[i + vccount]; - vertices[i + 3 * vccount].x = 0.0; - vertices[i + 3 * vccount].y = 0.0; - vertices[i + 3 * vccount].z = 0.5; - - normals[i].x = normals[i].y = 0.0; - normals[i].z = -1.0; - normals[i + vccount] = normals[i]; - normals[i + 2 * vccount].x = sinfi * nplane; - normals[i + 2 * vccount].y = cosfi * nplane; - normals[i + 2 * vccount].z = nz; - normals[i + 3 * vccount] = normals[i + 2 * vccount]; - - for (j = 0; j < 4; j++) - { - num = i + j * vccount; - - tangents[num].x = cosfi; - tangents[num].y = -sinfi; - tangents[num].z = 0.0; - - tex_coord[num].x = i / (float)(vccount - 1) * tex_scale.x; - tex_coord[num].y = ((j + 1) / 2.0) * tex_scale.y / 2.0; - } - } - - _generate_indices(indices, p, 3); - - SET_VERTEX_DATA(frame) -} - -void -_set_cone_without_base(Evas_Canvas3D_Mesh *mesh, - int frame, - int p, - Eina_Vector2 tex_scale) -{ - int vcount, icount, vccount, i; - double dfi, fi, sinfi, cosfi, nplane, nz; - - icount = p * 6; - vccount = p + 1; - vcount = 2 * vccount; - - dfi = 2.0 * M_PI / p; - nz = sqrt(1.0 / 3.0); - nplane = sqrt(2.0 / 3.0); - - ALLOCATE_VERTEX_DATA - - for (i = 0; i < vccount; i++) - { - fi = i * dfi; - sinfi = sin(fi); - cosfi = cos(fi); - vertices[i].x = sinfi / 2.0; - vertices[i].y = cosfi / 2.0; - vertices[i].z = -0.5; - vertices[i + vccount].x = 0; - vertices[i + vccount].y = 0; - vertices[i + vccount].z = 0.5; - - normals[i + vccount].x = normals[i].x = sinfi * nplane; - normals[i + vccount].y = normals[i].y = cosfi * nplane; - normals[i + vccount].z = normals[i].z = nz; - - tangents[i + vccount].x = tangents[i].x = cosfi; - tangents[i + vccount].y = tangents[i].y = -sinfi; - tangents[i + vccount].z = tangents[i].z = 0; - - tex_coord[i].x = i / (float)(vccount - 1) * tex_scale.x; - tex_coord[i].y = 0; - tex_coord[i + vccount].x = tex_coord[i].x; - tex_coord[i + vccount].y = tex_scale.y; - } - - _generate_indices(indices, p, 1); - - SET_VERTEX_DATA(frame) -} - -void -evas_model_set_from_cone_primitive(Evas_Canvas3D_Mesh *mesh, - int frame, - Evas_Canvas3D_Primitive_Mode mode, - int p, - Eina_Vector2 tex_scale) -{ - switch (mode) - { - case EVAS_CANVAS3D_PRIMITIVE_MODE_DEFAULT: - case EVAS_CANVAS3D_PRIMITIVE_MODE_ALTERNATIVE_UV: - { - _set_default_cone(mesh, frame, p, tex_scale); - break; - } - case EVAS_CANVAS3D_PRIMITIVE_MODE_WITHOUT_BASE: - { - _set_cone_without_base(mesh, frame, p, tex_scale); - break; - } - default: - { - ERR("Unknown mode of primitive"); - } - } -} diff --git a/src/lib/evas/common3d/primitives/solids_of_revolution/cylinder.c b/src/lib/evas/common3d/primitives/solids_of_revolution/cylinder.c deleted file mode 100644 index fc0d3d1d92..0000000000 --- a/src/lib/evas/common3d/primitives/solids_of_revolution/cylinder.c +++ /dev/null @@ -1,136 +0,0 @@ -#include "../primitive_common.h" - -void -_set_default_cylinder(Evas_Canvas3D_Mesh *mesh, - int frame, - int p, - Eina_Vector2 tex_scale) -{ - int vcount, icount, vccount, i, j, num; - icount = p * 30; - vccount = p + 1; - vcount = 6 * vccount; - - ALLOCATE_VERTEX_DATA - - double dfi, fi, sinfi, cosfi; - dfi = 2 * M_PI / p; - - for (i = 0; i < vccount; i++) - { - fi = i * dfi; - sinfi = sin(fi); - cosfi = cos(fi); - - for (j = 0; j < 6; j++) - { - num = i + j * vccount; - - vertices[num].z = -0.5 + j / 3.0; - if ((j == 0) || (j == 5)) - { - vertices[num].x = vertices[num].y = 0.0; - } - else - { - vertices[num].x = sinfi / 2.0; - vertices[num].y = cosfi / 2.0; - } - - if ((j == 2) || (j == 3)) - { - normals[num].x = sinfi; - normals[num].y = cosfi; - normals[num].z = 0.0; - } - else - { - normals[num].x = normals[num].y = 0.0; - normals[num].z = -1.0 + j / 2.0; - } - - tangents[num].x = cosfi; - tangents[num].y = -sinfi; - tangents[num].z = 0.0; - - tex_coord[num].x = i / (float)(vccount - 1) * tex_scale.x; - tex_coord[num].y = ((j + 1) / 2.0) * tex_scale.y / 3.0; - } - } - - _generate_indices(indices, p, 5); - - SET_VERTEX_DATA(frame) -} - -void -_set_cylinder_without_bases(Evas_Canvas3D_Mesh *mesh, - int frame, - int p, - Eina_Vector2 tex_scale) -{ - int vcount, icount, vccount, i; - icount = p * 6; - vccount = p + 1; - vcount = 2 * vccount; - - ALLOCATE_VERTEX_DATA - - double dfi, fi, sinfi, cosfi; - dfi = 2 * M_PI / p; - - for (i = 0; i < vccount; i++) - { - fi = i * dfi; - sinfi = sin(fi); - cosfi = cos(fi); - vertices[i + vccount].x = vertices[i].x = sinfi / 2.0; - vertices[i + vccount].y = vertices[i].y = cosfi / 2.0; - vertices[i].z = -0.5; - vertices[i + vccount].z = 0.5; - - normals[i + vccount].x = normals[i].x = sinfi; - normals[i + vccount].y = normals[i].y = cosfi; - normals[i + vccount].z = normals[i].z = 0; - - tangents[i + vccount].x = tangents[i].x = cosfi; - tangents[i + vccount].y = tangents[i].y = -sinfi; - tangents[i + vccount].z = tangents[i].z = 0; - - tex_coord[i].x = i / (float)(vccount - 1) * tex_scale.x; - tex_coord[i].y = 0; - tex_coord[i + vccount].x = i / (float)(vccount - 1) * tex_scale.x; - tex_coord[i + vccount].y = tex_scale.y; - } - - _generate_indices(indices, p, 1); - - SET_VERTEX_DATA(frame) -} - -void -evas_model_set_from_cylinder_primitive(Evas_Canvas3D_Mesh *mesh, - int frame, - Evas_Canvas3D_Primitive_Mode mode, - int p, - Eina_Vector2 tex_scale) -{ - switch (mode) - { - case EVAS_CANVAS3D_PRIMITIVE_MODE_DEFAULT: - case EVAS_CANVAS3D_PRIMITIVE_MODE_ALTERNATIVE_UV: - { - _set_default_cylinder(mesh, frame, p, tex_scale); - break; - } - case EVAS_CANVAS3D_PRIMITIVE_MODE_WITHOUT_BASE: - { - _set_cylinder_without_bases(mesh, frame, p, tex_scale); - break; - } - default: - { - ERR("Unknown mode of primitive"); - } - } -} diff --git a/src/lib/evas/common3d/primitives/solids_of_revolution/meson.build b/src/lib/evas/common3d/primitives/solids_of_revolution/meson.build deleted file mode 100644 index ac35b05093..0000000000 --- a/src/lib/evas/common3d/primitives/solids_of_revolution/meson.build +++ /dev/null @@ -1,6 +0,0 @@ -evas_src += files([ - 'cone.c', - 'cylinder.c', - 'sphere.c', - 'torus.c' -]) \ No newline at end of file diff --git a/src/lib/evas/common3d/primitives/solids_of_revolution/sphere.c b/src/lib/evas/common3d/primitives/solids_of_revolution/sphere.c deleted file mode 100644 index f2e81b0bf5..0000000000 --- a/src/lib/evas/common3d/primitives/solids_of_revolution/sphere.c +++ /dev/null @@ -1,189 +0,0 @@ -#include "../primitive_common.h" - -void -_set_default_sphere(Evas_Canvas3D_Mesh *mesh, - int frame, - int p, - Eina_Vector2 tex_scale) -{ - int vcount, icount, vccount, i, j; - icount = p * p * 6; - vccount = p + 1; - vcount = vccount * vccount; - - ALLOCATE_VERTEX_DATA - - double dtheta, dfi, sinth, costh, fi, theta, sinfi, cosfi; - dtheta = M_PI / p; - dfi = 2 * M_PI / p; - - for (j = 0; j < vccount; j++) - { - theta = j * dtheta; - sinth = sin(theta); - costh = cos(theta); - for (i = 0; i < vccount; i++) - { - fi = i * dfi; - sinfi = sin(fi); - cosfi = cos(fi); - normals[i + j * vccount].x = sinth * sinfi; - normals[i + j * vccount].y = sinth * cosfi; - normals[i + j * vccount].z = costh; - - vertices[i + j * vccount].x = normals[i + j * vccount].x / 2; - vertices[i + j * vccount].y = normals[i + j * vccount].y / 2; - vertices[i + j * vccount].z = normals[i + j * vccount].z / 2; - - tangents[i + j * vccount].x = -sinth * cosfi; - tangents[i + j * vccount].y = sinth * sinfi; - tangents[i + j * vccount].z = 0; - - _primitives_vec3_normalize(&tangents[i + j * vccount]); - - tex_coord[i + j * vccount].x = i / (float)(vccount - 1) * tex_scale.x; - tex_coord[i + j *vccount].y = tex_scale.y - j / (float)(vccount - 1) * tex_scale.y; - } - } - - _generate_indices(indices, p, p); - - SET_VERTEX_DATA(frame) -} - -void -_set_sphere_with_alternative_uv(Evas_Canvas3D_Mesh *mesh, - int frame, - int p, - Eina_Vector2 tex_scale) -{ - int vcount, icount, vccount, i, j; - - vccount = p + 1; - vcount = vccount * vccount; - icount = p * p * 6; - - ALLOCATE_VERTEX_DATA - - /* Calculate vertices position of the sphere mesh by using - splitting of sphere by latitude and longitude. */ - for (i = 0; i <= p; i++) - { - double lati, z, r, point_r; - - point_r = 0.00001;//non-zero little value for correct tangents calculation. - - lati = ((M_PI - 2 * point_r) * (double)i) / (double)p; - z = cos(lati + point_r); - r = fabs(sin(lati + point_r)); - - for (j = 0; j <= p; j++) - { - double longi; - int num = (i * (p + 1)) + j; - - longi = (M_PI * 2.0 * (double)j) / (double)p; - - normals[num].x = r * sin(longi); - normals[num].y = r * cos(longi); - normals[num].z = z; - - vertices[num].x = normals[num].x / 2; - vertices[num].y = normals[num].y / 2; - vertices[num].z = normals[num].z / 2; - - if (vertices[num].x > 0.0) - { - tangents[num].x = -normals[num].z; - tangents[num].y = normals[num].y; - tangents[num].z = normals[num].x; - } - else - { - tangents[num].x = normals[num].z; - tangents[num].y = normals[num].y; - tangents[num].z = -normals[num].x; - } - - tex_coord[num].x = i / (float)(vccount - 1) * tex_scale.x; - tex_coord[num].y = tex_scale.y - j / (float)(vccount - 1) * tex_scale.y; - } - } - - _generate_indices(indices, p, p); - - /* Triangulation of sphere mesh in appliance with buffer of indices. */ - for (i = 0; i < icount; i += 3) - { - Eina_Vector3 e1, e2; - float du1, du2, dv1, dv2, f; - Eina_Vector3 tangent; - int num0, num1, num2; - - num0 = indices[i + 0]; - num1 = indices[i + 1]; - num2 = indices[i + 2]; - - e1.x = vertices[num1].x - vertices[num0].x; - e1.y = vertices[num1].y - vertices[num0].y; - e1.z = vertices[num1].z - vertices[num0].z; - - e2.x = vertices[num2].x - vertices[num0].x; - e2.y = vertices[num2].y - vertices[num0].y; - e2.z = vertices[num2].z - vertices[num0].z; - - du1 = tex_coord[num1].x - tex_coord[num0].x; - dv1 = tex_coord[num1].y - tex_coord[num0].y; - - du2 = tex_coord[num2].x - tex_coord[num0].x; - dv2 = tex_coord[num2].y - tex_coord[num0].y; - - f = 1.0 / ((du1 * dv2) - (du2 * dv1)); - - tangent.x = f * ((dv2 * e1.x) - (dv1 * e2.x)); - tangent.y = f * ((dv2 * e1.y) - (dv1 * e2.y)); - tangent.z = f * ((dv2 * e1.z) - (dv1 * e2.z)); - - tangents[num0] = tangent; - } - - /* Coupling between vertices by calculation of tangent parametr correct value. */ - for (i = 0; i <= p; i++) - { - for (j = 0; j <= p; j++) - { - if (j == p) - { - tangents[(i * (p + 1)) + j] = tangents[i * (p + 1)]; - } - } - } - SET_VERTEX_DATA(frame) -} - -void -evas_model_set_from_sphere_primitive(Evas_Canvas3D_Mesh *mesh, - int frame, - Evas_Canvas3D_Primitive_Mode mode, - int p, - Eina_Vector2 tex_scale) -{ - switch (mode) - { - case EVAS_CANVAS3D_PRIMITIVE_MODE_DEFAULT: - case EVAS_CANVAS3D_PRIMITIVE_MODE_WITHOUT_BASE: - { - _set_default_sphere(mesh, frame, p, tex_scale); - break; - } - case EVAS_CANVAS3D_PRIMITIVE_MODE_ALTERNATIVE_UV: - { - _set_sphere_with_alternative_uv(mesh, frame, p, tex_scale); - break; - } - default: - { - ERR("Unknown mode of primitive"); - } - } -} diff --git a/src/lib/evas/common3d/primitives/solids_of_revolution/torus.c b/src/lib/evas/common3d/primitives/solids_of_revolution/torus.c deleted file mode 100644 index 99016c620a..0000000000 --- a/src/lib/evas/common3d/primitives/solids_of_revolution/torus.c +++ /dev/null @@ -1,67 +0,0 @@ -#include "../primitive_common.h" - -void -evas_model_set_from_torus_primitive(Evas_Canvas3D_Mesh *mesh, - int frame, - Evas_Real ratio, - int p, - Eina_Vector2 tex_scale) -{ - int vcount, icount, vccount, i, j; - icount = p * p * 6; - vccount = p + 1; - vcount = vccount * vccount; - - ALLOCATE_VERTEX_DATA - - double d, sinth, costh, fi, theta, sinfi, cosfi; - - d = 2 * M_PI / p; - - float rratio; - - if ((ratio < 1.0)) - { - printf("Ratio of torus should be greater than or equal 1.0.\n"); - printf("Ratio = %f is a bad value, so 3.0 is used like default ratio.\n", - ratio); - rratio = 1.0 / 3.0; - } - else - { - rratio = 1.0 / ratio; - } - - for (j = 0; j < vccount; j++) - { - theta = j * d; - sinth = sin(theta); - costh = cos(theta); - for (i = 0; i < vccount; i++) - { - fi = i * d; - sinfi = sin(fi); - cosfi = cos(fi); - vertices[i + j * vccount].x = (1.0 - rratio + rratio * cosfi) * costh * 0.5; - vertices[i + j * vccount].y = (1.0 - rratio + rratio * cosfi) * sinth * 0.5; - vertices[i + j * vccount].z = rratio * sinfi * 0.5; - - normals[i + j * vccount].x = cosfi * costh; - normals[i + j * vccount].y = cosfi * sinth; - normals[i + j * vccount].z = sinfi; - - tangents[i + j * vccount].x = -sinfi * costh; - tangents[i + j * vccount].y = -sinfi * sinth; - tangents[i + j * vccount].z = cosfi; - - _primitives_vec3_normalize(&normals[i + j * vccount]); - - tex_coord[i + j * vccount].x = i / (float)(vccount - 1) * tex_scale.x; - tex_coord[i + j *vccount].y = tex_scale.y - j / (float)(vccount - 1) * tex_scale.y; - } - } - - _generate_indices(indices, p, p); - - SET_VERTEX_DATA(frame) -} diff --git a/src/lib/evas/common3d/primitives/surfaces/meson.build b/src/lib/evas/common3d/primitives/surfaces/meson.build deleted file mode 100644 index 398996f148..0000000000 --- a/src/lib/evas/common3d/primitives/surfaces/meson.build +++ /dev/null @@ -1,4 +0,0 @@ -evas_src += files([ - 'surface.c', - 'terrain.c' -]) \ No newline at end of file diff --git a/src/lib/evas/common3d/primitives/surfaces/surface.c b/src/lib/evas/common3d/primitives/surfaces/surface.c deleted file mode 100644 index 7698ba5fb6..0000000000 --- a/src/lib/evas/common3d/primitives/surfaces/surface.c +++ /dev/null @@ -1,91 +0,0 @@ -#include "../primitive_common.h" - -Eina_Vector3 _get_func_normal(Evas_Canvas3D_Surface_Func *func, Evas_Real x, Evas_Real y) -{ - Eina_Vector3 v00, v01, v10, d1, d2, normal; - - func(&v00.x, &v00.y, &v00.z, x, y); - func(&v01.x, &v01.y, &v01.z, x, y + 0.01); - func(&v10.x, &v10.y, &v10.z, x + 0.01, y); - _primitives_vec3_subtract(&d1, &v00, &v01); - _primitives_vec3_subtract(&d2, &v01, &v10); - - _primitives_vec3_cross_product(&normal, &d1, &d2); - - _primitives_vec3_normalize(&normal); - - return normal; -} - -void -_normalize(Eina_Vector3 *vertices, Eina_Vector3 *normals, int vcount) -{ - int i; - Eina_Vector3 min, max; - min = max = vertices[0]; - -#define CHECK_MIN_AND_MAX(coord) \ - if (min.coord > vertices[i].coord) \ - min.coord = vertices[i].coord; \ - else if (max.coord < vertices[i].coord) \ - max.coord = vertices[i].coord; - for (i = 1; i < vcount; i++) - { - CHECK_MIN_AND_MAX(x) - CHECK_MIN_AND_MAX(y) - CHECK_MIN_AND_MAX(z) - } -#undef CHECK_MIN_AND_MAX - - for (i = 0; i < vcount; i++) - { - vertices[i].x = (vertices[i].x - min.x) / (max.x - min.x) - 0.5; - vertices[i].y = (vertices[i].y - min.y) / (max.y - min.y) - 0.5; - vertices[i].z = (vertices[i].z - min.z) / (max.z - min.z) - 0.5; - - normals[i].x = normals[i].x / (max.x - min.x); - normals[i].y = normals[i].y / (max.y - min.y); - normals[i].z = normals[i].z / (max.z - min.z); - } -} - -void -evas_model_set_from_surface_primitive(Evas_Canvas3D_Mesh *mesh, - int frame, - Evas_Canvas3D_Surface_Func func, - int p, - Eina_Vector2 tex_scale) -{ - int vcount, icount, vccount, i, j, num; - icount = p * p * 6; - vccount = p + 1; - vcount = vccount * vccount; - - ALLOCATE_VERTEX_DATA - - Evas_Real v, u, d = 1.0 / p; - - for (j = 0; j < vccount; j++) - { - u = j * d - 0.5; - for (i = 0; i < vccount; i++) - { - v = i * d - 0.5; - num = i + j * vccount; - func(&vertices[num].x, - &vertices[num].y, - &vertices[num].z, - v, u); - normals[num] = _get_func_normal(func, v, u); - - tangents[num].x = tangents[num].y = tangents[num].z = 0; - - tex_coord[num].x = i / ((vccount - 1) * tex_scale.x); - tex_coord[num].y = tex_scale.y - j / ((vccount - 1) * tex_scale.y); - } - } - - _normalize(vertices, normals, vcount); - _generate_indices(indices, p, p); - SET_VERTEX_DATA(frame) -} diff --git a/src/lib/evas/common3d/primitives/surfaces/terrain.c b/src/lib/evas/common3d/primitives/surfaces/terrain.c deleted file mode 100644 index 1f83c089ef..0000000000 --- a/src/lib/evas/common3d/primitives/surfaces/terrain.c +++ /dev/null @@ -1,86 +0,0 @@ -#include "../primitive_common.h" - -static Evas_Real -_random(int x, int y) -{ - int k = x + y * 57; - k = (k << 13) ^ k; - return (1.0f - ((k * (k * k * 15731 + 789221) + 1376312589) & 0x7fffffff) / - 1073741824.0f); -} - -static Evas_Real -_smooth(Evas_Real x, Evas_Real y) -{ - Evas_Real res; - res = (_random(x - 1, y - 1) + _random(x + 1, y - 1) + - _random(x - 1, y + 1) + _random(x + 1, y + 1)) / 16; - res += (_random(x - 1, y) + _random(x + 1, y) + - _random(x, y - 1) + _random(x, y + 1)) / 8; - res += _random(x, y) / 4; - return res; -} - -static Evas_Real -_interpolate(Evas_Real a, Evas_Real b, Evas_Real x) -{ - Evas_Real ft = x * M_PI; - Evas_Real f = (1 - cosf(ft)) * 0.5; - return a * (1 - f) + b * f; -} - -static Evas_Real _noise(Evas_Real x, Evas_Real y) -{ - Evas_Real ix = (int)(x); - Evas_Real fx = x - ix; - Evas_Real iy = (int)(y); - Evas_Real fy = y - iy; - - Evas_Real v1 = _smooth(ix, iy); - Evas_Real v2 = _smooth(ix + 1, iy); - Evas_Real v3 = _smooth(ix, iy + 1); - Evas_Real v4 = _smooth(ix + 1, iy + 1); - - Evas_Real i1 = _interpolate(v1, v2, fx); - Evas_Real i2 = _interpolate(v3, v4, fx); - - return _interpolate(i1, i2, fy); -} - -static void -_perlin_terrain(Evas_Real *out_x, - Evas_Real *out_y, - Evas_Real *out_z, - Evas_Real x, - Evas_Real y) -{ - Evas_Real persistence = 0.5f; - Evas_Real frequency = 5; - Evas_Real amplitude = 1; - int i = 0; - int octaves = 5; - - *out_x = x; - x += 0.5; - *out_y = y; - y += 0.5; - *out_z = 0; - - for(i = 0; i < octaves; i++) - { - *out_z += _noise(x * frequency, y * frequency) * amplitude; - - amplitude *= persistence; - frequency *= 2; - } -} - -void -evas_model_set_from_terrain_primitive(Evas_Canvas3D_Mesh *mesh, - int frame, - int p, - Eina_Vector2 tex_scale) -{ - evas_model_set_from_surface_primitive(mesh, frame, _perlin_terrain, p, tex_scale); -} - diff --git a/src/lib/evas/common3d/primitives/tabulated_primitives/cube.c b/src/lib/evas/common3d/primitives/tabulated_primitives/cube.c deleted file mode 100644 index 85d49beaaa..0000000000 --- a/src/lib/evas/common3d/primitives/tabulated_primitives/cube.c +++ /dev/null @@ -1,57 +0,0 @@ -#include "../primitive_common.h" - -const float vertices_of_cube[] = -{ - /* positions normals vertex_color tex_coords tangents */ - /* Front */ - 0.5, -0.5, 0.5, 0.0, -1.0, 0.0, 0.0, 1.0, 1.0, 1.0, 0.0, 0.0, -1.0, 0.0, 0.0, - -0.5, -0.5, 0.5, 0.0, -1.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0, 0.0, -1.0, 0.0, 0.0, - -0.5, -0.5, -0.5, 0.0, -1.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0, 0.0, 0.0, - 0.5, -0.5, -0.5, 0.0, -1.0, 0.0, 0.0, 1.0, 1.0, 1.0, 0.0, 1.0, -1.0, 0.0, 0.0, - - /* Left */ - -0.5, -0.5, 0.5, -1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0, 1.0, - -0.5, 0.5, 0.5, -1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 1.0, 1.0, 0.0, 0.0, 1.0, - -0.5, 0.5, -0.5, -1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 1.0, - -0.5, -0.5, -0.5, -1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, - - /* Back */ - -0.5, 0.5, 0.5, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, - 0.5, 0.5, 0.5, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 1.0, 1.0, 0.0, 1.0, 0.0, 0.0, - 0.5, 0.5, -0.5, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, - -0.5, 0.5, -0.5, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 1.0, 0.0, 1.0, 1.0, 0.0, 0.0, - - /* Right */ - 0.5, 0.5, 0.5, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, -1.0, - 0.5, -0.5, 0.5, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, -1.0, - 0.5, -0.5, -0.5, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0, -1.0, - 0.5, 0.5, -0.5, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 1.0, 1.0, 1.0, 0.0, 0.0, -1.0, - - /* Top */ - -0.5, -0.5, 0.5, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, - -0.5, 0.5, 0.5, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 0.0, 1.0, 1.0, 0.0, 0.0, - 0.5, 0.5, 0.5, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, - 0.5, -0.5, 0.5, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 1.0, 0.0, 0.0, - - /* Bottom */ - -0.5, -0.5, -0.5, 0.0, 0.0, -1.0, 0.0, 0.0, 1.0, 1.0, 1.0, 0.0, -1.0, 0.0, 0.0, - -0.5, 0.5, -0.5, 0.0, 0.0, -1.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0, -1.0, 0.0, 0.0, - 0.5, 0.5, -0.5, 0.0, 0.0, -1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 1.0, -1.0, 0.0, 0.0, - 0.5, -0.5, -0.5, 0.0, 0.0, -1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, -1.0, 0.0, 0.0, -}; - -const unsigned short indices_of_cube[] = -{ - 0, 1, 2, 6, 7, 4, - 4, 5, 6, 10, 11, 8, - 8, 9, 10, 14, 15, 12, - 12, 13, 14, 2, 3, 0, - 19, 16, 17, 17, 18, 19, - 23, 20, 21, 21, 22, 23 -}; - -void -evas_model_set_from_cube_primitive(Evas_Canvas3D_Mesh *mesh, int frame) -{ - SET_VERTEX_DATA_FROM_ARRAY(mesh, frame, vertices_of_cube, 24, indices_of_cube, 36) -} diff --git a/src/lib/evas/common3d/primitives/tabulated_primitives/meson.build b/src/lib/evas/common3d/primitives/tabulated_primitives/meson.build deleted file mode 100644 index a24df304d1..0000000000 --- a/src/lib/evas/common3d/primitives/tabulated_primitives/meson.build +++ /dev/null @@ -1,4 +0,0 @@ -evas_src += files([ - 'cube.c', - 'square.c' -]) \ No newline at end of file diff --git a/src/lib/evas/common3d/primitives/tabulated_primitives/square.c b/src/lib/evas/common3d/primitives/tabulated_primitives/square.c deleted file mode 100644 index e34e2b0dbb..0000000000 --- a/src/lib/evas/common3d/primitives/tabulated_primitives/square.c +++ /dev/null @@ -1,18 +0,0 @@ -#include "../primitive_common.h" - -const float vertices_of_square[] = -{ - /* positions normals vertex_color tex_coords tangents */ - -0.5, 0.5, 0.0, 0.0, 0.0, -1.0, 1.0, 0.0, 0.0, 1.0, 0.0, 1.0, 1.0, 0.0, 0.0, - 0.5, 0.5, 0.0, 0.0, 0.0, -1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, - -0.5, -0.5, 0.0, 0.0, 0.0, -1.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, - 0.5, -0.5, 0.0, 0.0, 0.0, -1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 1.0, 0.0, 0.0, -}; - -const unsigned short indices_of_square[] = {0, 1, 2, 2, 1, 3}; - -void -evas_model_set_from_square_primitive(Evas_Canvas3D_Mesh *mesh, int frame) -{ - SET_VERTEX_DATA_FROM_ARRAY(mesh, frame, vertices_of_square, 4, indices_of_square, 6) -} diff --git a/src/lib/evas/common3d/save_load/evas_model_load.c b/src/lib/evas/common3d/save_load/evas_model_load.c deleted file mode 100644 index 7987140d53..0000000000 --- a/src/lib/evas/common3d/save_load/evas_model_load.c +++ /dev/null @@ -1,82 +0,0 @@ -#ifdef HAVE_CONFIG_H -# include "config.h" -#endif - -#include "evas_options.h" - -#include "evas_common_private.h" -#include "evas_private.h" - -void -_evas_common_load_model(Evas_Canvas3D_Mesh *model, - Eina_File *file, - const char *file_path) -{ - char *p; - char *loader_type = NULL; - - p = strrchr(file_path, '.'); - if (p) - { - p++; -#define CHECK_EXTENTION_BY_FILE_NAME(extention) \ - if (!strcasecmp(p, #extention)) \ - { \ - evas_model_load_file_##extention(model, file); \ - loader_type = #extention; \ - } - CHECK_EXTENTION_BY_FILE_NAME(eet) - CHECK_EXTENTION_BY_FILE_NAME(md2) - CHECK_EXTENTION_BY_FILE_NAME(obj) - CHECK_EXTENTION_BY_FILE_NAME(ply) -#undef CHECK_EXTENTION_BY_FILE_NAME - } - if (!loader_type) ERR("Invalid mesh file type."); -} - -void -evas_common_load_model_from_file(Evas_Canvas3D_Mesh *model, const char *file) -{ - Eina_File *tmp_file = eina_file_open(file, 0); - - if (tmp_file == NULL) - { - ERR("Failed to open file %s", file); - ERR("Failed to initialize loader."); - return; - } - - Eina_File *e_file = eina_file_dup(tmp_file); - - if (e_file == NULL) - { - eina_file_close(tmp_file); - file = NULL; - ERR("Failed to initialize loader."); - return; - } - - eina_file_close(tmp_file); - - _evas_common_load_model(model, e_file, file); - - eina_file_close(e_file); - e_file = NULL; -} - -void -evas_common_load_model_from_eina_file(Evas_Canvas3D_Mesh *model, const Eina_File *file) -{ - Eina_File *e_file = eina_file_dup(file); - - if (e_file == NULL) - { - ERR("Failed to initialize loader."); - return; - } - - _evas_common_load_model(model, e_file, eina_file_filename_get(e_file)); - - eina_file_close(e_file); - e_file = NULL; -} diff --git a/src/lib/evas/common3d/save_load/evas_model_load_save_common.c b/src/lib/evas/common3d/save_load/evas_model_load_save_common.c deleted file mode 100644 index 309b8435cc..0000000000 --- a/src/lib/evas/common3d/save_load/evas_model_load_save_common.c +++ /dev/null @@ -1,230 +0,0 @@ -#include "evas_model_load_save_common.h" - -# define SAVE_MESH_INDICES_COPY \ - if (header.indices_count) \ - { \ - data->indices = malloc(header.indices_count \ - * sizeof(unsigned short)); \ - if (pd->index_format == EVAS_CANVAS3D_INDEX_FORMAT_UNSIGNED_BYTE) \ - { \ - for (i = 0; i < header.indices_count; i++) \ - data->indices[i] = ((unsigned char*)(pd->indices))[i]; \ - } \ - else \ - { \ - for (i = 0; i < header.indices_count; i++) \ - data->indices[i] = ((unsigned short*)(pd->indices))[i]; \ - } \ - } \ - else \ - { \ - data->indices = malloc(header.vertices_count * 3 \ - * sizeof(unsigned short)); \ - for (i = 0; i < header.vertices_count * 3; i++) \ - data->indices[i] = (unsigned short)i; \ - } - -/* create new header */ -Evas_Model_Load_Save_Header -evas_model_load_save_header_new(void) -{ - Evas_Model_Load_Save_Header header; - - header.vertices_count = 0; - header.indices_count = 0; - header.existence_of_positions = EINA_FALSE; - header.existence_of_normals = EINA_FALSE; - header.existence_of_tex_coords = EINA_FALSE; - header.existence_of_colors = EINA_FALSE; - - return header; -} - -void -evas_model_load_vertex_data_unmap(Evas_Canvas3D_Mesh *mesh, - int frame, - Evas_Model_Load_Save_Header header) -{ -#define UNMAP_IF_EXIST(existence, vertex_data_type) \ - if (existence) \ - { \ - evas_canvas3d_mesh_frame_vertex_data_unmap(mesh, frame, \ - vertex_data_type); \ - } - UNMAP_IF_EXIST(header.existence_of_positions, EVAS_CANVAS3D_VERTEX_ATTRIB_POSITION) - UNMAP_IF_EXIST(header.existence_of_normals, EVAS_CANVAS3D_VERTEX_ATTRIB_NORMAL) - UNMAP_IF_EXIST(header.existence_of_tex_coords, EVAS_CANVAS3D_VERTEX_ATTRIB_TEXCOORD) - UNMAP_IF_EXIST(header.existence_of_colors, EVAS_CANVAS3D_VERTEX_ATTRIB_COLOR) -#undef UNMAP_IF_EXIST -} - -void -evas_model_load_save_data_free(Evas_Model_Load_Save_Header header, - Evas_Model_Load_Save_Data *data) -{ - if (header.existence_of_positions) free(data->positions); - if (header.existence_of_normals) free(data->normals); - if (header.existence_of_tex_coords) free(data->tex_coords); - if (header.existence_of_colors) free(data->colors); - free(data->indices); -} - -void -evas_model_load_vertex_data_to_mesh(Evas_Canvas3D_Mesh *mesh, - Evas_Model_Load_Save_Header header, - Evas_Model_Load_Save_Data data, - Evas_Model_Load_Save_Stride *stride) -{ - Evas_Model_Load_Save_Data map; - int i, j; - - evas_canvas3d_mesh_vertex_count_set(mesh, header.vertices_count); - evas_canvas3d_mesh_vertex_assembly_set(mesh, EVAS_CANVAS3D_VERTEX_ASSEMBLY_TRIANGLES); - evas_canvas3d_mesh_frame_add(mesh, 0); - -#define VERTEX_DATA_MAP(name, vertex_data_type, default_size) \ - if (header.existence_of_##name) \ - { \ - evas_canvas3d_mesh_frame_vertex_data_copy_set(mesh, 0, vertex_data_type, 0, NULL); \ - map.name = (float *)evas_canvas3d_mesh_frame_vertex_data_map(mesh, 0, vertex_data_type); \ - stride->name = evas_canvas3d_mesh_frame_vertex_stride_get(mesh, 0, vertex_data_type); \ - if (stride->name == 0) stride->name = sizeof(float) * default_size; \ - } - VERTEX_DATA_MAP(positions, EVAS_CANVAS3D_VERTEX_ATTRIB_POSITION, 3) - VERTEX_DATA_MAP(normals, EVAS_CANVAS3D_VERTEX_ATTRIB_NORMAL, 3) - VERTEX_DATA_MAP(tex_coords, EVAS_CANVAS3D_VERTEX_ATTRIB_TEXCOORD, 2) - VERTEX_DATA_MAP(colors, EVAS_CANVAS3D_VERTEX_ATTRIB_COLOR, 4) -#undef VERTEX_DATA_MAP - - for (i = 0; i < header.vertices_count; i++) - { - Evas_Model_Load_Save_Data current_pointer; - -#define FILL_VERTEX_DATA(name, size) \ - if (header.existence_of_##name) \ - { \ - current_pointer.name = (float *)((char *)map.name + stride->name * i); \ - for (j = 0; j < size; j++) \ - current_pointer.name[j] = ARRAY_2D(data.name, i, j, size); \ - } - FILL_VERTEX_DATA(positions, 3) - FILL_VERTEX_DATA(normals, 3) - FILL_VERTEX_DATA(tex_coords, 2) - FILL_VERTEX_DATA(colors, 3) -#undef FILL_VERTEX_DATA - - if (header.existence_of_colors) current_pointer.colors[3] = 1.0; - } -} - -void -evas_model_load_indices_data_to_mesh(Evas_Canvas3D_Mesh *mesh, - Evas_Model_Load_Save_Header header, - Evas_Model_Load_Save_Data data) -{ - evas_canvas3d_mesh_index_data_copy_set(mesh, EVAS_CANVAS3D_INDEX_FORMAT_UNSIGNED_SHORT, header.indices_count, data.indices); -} - -Eina_Bool -evas_model_load_allocate_data_due_to_header(Evas_Model_Load_Save_Header header, - Evas_Model_Load_Save_Data *data) -{ - if (header.existence_of_positions) - data->positions = malloc(header.vertices_count * 3 * sizeof(float)); - if (header.existence_of_normals) - data->normals = malloc(header.vertices_count * 3 * sizeof(float)); - if (header.existence_of_tex_coords) - data->tex_coords = malloc(header.vertices_count * 2 * sizeof(float)); - if (header.existence_of_colors) - data->colors = malloc(header.vertices_count * 3 * sizeof(float)); - data->indices = malloc(header.indices_count * sizeof(unsigned short)); - - if ((header.existence_of_positions && (data->positions == NULL)) || - (header.existence_of_normals && (data->normals == NULL)) || - (header.existence_of_tex_coords && (data->tex_coords == NULL)) || - (header.existence_of_colors && (data->colors == NULL)) || - (data->indices == NULL)) - { - free(data->positions); - free(data->normals); - free(data->tex_coords); - free(data->colors); - free(data->indices); - return EINA_FALSE; - } - return EINA_TRUE; -} - -void -evas_model_load_aabb_add_to_frame(Evas_Canvas3D_Mesh *mesh, - int frame, - Evas_Model_Load_Save_Stride stride) -{ - Evas_Canvas3D_Mesh_Data *pd; - pd = efl_data_scope_get(mesh, EVAS_CANVAS3D_MESH_CLASS); - - if (!evas_canvas3d_mesh_aabb_add_to_frame(pd, frame, stride.positions)) - { - ERR("Axis-Aligned Bounding Box wasn't added in frame %d ", 0); - } -} - -Eina_Bool -evas_model_save_header_from_mesh(Evas_Canvas3D_Mesh_Data *pd, - Evas_Canvas3D_Mesh_Frame *f, - Evas_Model_Load_Save_Header *header) -{ - header->indices_count = pd->index_count; - if (header->indices_count % 3 != 0) - { - printf("Index count is %d. It cannot be divided to triangles correctly.\n", - header->indices_count); - return EINA_FALSE; - } - - header->existence_of_positions = (f->vertices[EVAS_CANVAS3D_VERTEX_ATTRIB_POSITION].data != NULL); - header->existence_of_normals = (f->vertices[EVAS_CANVAS3D_VERTEX_ATTRIB_NORMAL].data != NULL); - header->existence_of_tex_coords = (f->vertices[EVAS_CANVAS3D_VERTEX_ATTRIB_TEXCOORD].data != NULL); - header->existence_of_colors = (f->vertices[EVAS_CANVAS3D_VERTEX_ATTRIB_COLOR].data != NULL); - header->vertices_count = pd->vertex_count; - - return EINA_TRUE; -} - -void -evas_model_save_data_from_mesh(Evas_Canvas3D_Mesh_Data *pd, - Evas_Canvas3D_Mesh_Frame *f, - Evas_Model_Load_Save_Header header, - Evas_Model_Load_Save_Data *data) -{ - int i; - if (header.existence_of_positions) - data->positions = (float*)(&f->vertices[EVAS_CANVAS3D_VERTEX_ATTRIB_POSITION])->data; - if (header.existence_of_normals) - data->normals = (float*)(&f->vertices[EVAS_CANVAS3D_VERTEX_ATTRIB_NORMAL])->data; - if (header.existence_of_tex_coords) - data->tex_coords = (float*)(&f->vertices[EVAS_CANVAS3D_VERTEX_ATTRIB_TEXCOORD])->data; - if (header.existence_of_colors) - data->colors = (float*)(&f->vertices[EVAS_CANVAS3D_VERTEX_ATTRIB_COLOR])->data; - SAVE_MESH_INDICES_COPY -} - -void -evas_model_save_data_copy_from_mesh(Evas_Canvas3D_Mesh_Data *pd, - Evas_Canvas3D_Mesh_Frame *f, - Evas_Model_Load_Save_Header header, - Evas_Model_Load_Save_Data *data) -{ - int i; -#define SAVE_MESH_VERTICES_COPY(name, vertex_data_type) \ - if (header.existence_of_##name) \ - memcpy(data->name, \ - (&f->vertices[vertex_data_type])->data, \ - header.vertices_count); - SAVE_MESH_VERTICES_COPY(positions, EVAS_CANVAS3D_VERTEX_ATTRIB_POSITION) - SAVE_MESH_VERTICES_COPY(normals, EVAS_CANVAS3D_VERTEX_ATTRIB_NORMAL) - SAVE_MESH_VERTICES_COPY(tex_coords, EVAS_CANVAS3D_VERTEX_ATTRIB_TEXCOORD) - SAVE_MESH_VERTICES_COPY(colors, EVAS_CANVAS3D_VERTEX_ATTRIB_COLOR) -#undef SAVE_MESH_VERTICES_COPY - SAVE_MESH_INDICES_COPY -} diff --git a/src/lib/evas/common3d/save_load/evas_model_load_save_common.h b/src/lib/evas/common3d/save_load/evas_model_load_save_common.h deleted file mode 100644 index be8dbae397..0000000000 --- a/src/lib/evas/common3d/save_load/evas_model_load_save_common.h +++ /dev/null @@ -1,62 +0,0 @@ -#ifdef HAVE_CONFIG_H -# include "config.h" -#endif - -#ifndef MODEL_LOAD_COMMON -#define MODEL_LOAD_COMMON - -#include -#include -#include "stdio.h" -#include "evas_common_private.h" -#include "evas_private.h" -#include - -/* set value to position [x][y] to array name which have. */ -#define ARRAY_2D(name, x, y, count_y) (*(name + x * count_y + y)) - -/* Structures for reading data from file. */ -typedef struct _Evas_Model_Load_Save_Header Evas_Model_Load_Save_Header; -typedef struct _Evas_Model_Load_Save_Data Evas_Model_Load_Save_Data; -typedef struct _Evas_Model_Load_Save_Stride Evas_Model_Load_Save_Stride; - -struct _Evas_Model_Load_Save_Header -{ - int vertices_count; - int indices_count; - Eina_Bool existence_of_positions; - Eina_Bool existence_of_normals; - Eina_Bool existence_of_tex_coords; - Eina_Bool existence_of_colors; -}; - -struct _Evas_Model_Load_Save_Data -{ - float *positions; - float *normals; - float *tex_coords; - float *colors; - unsigned short *indices; -}; - -struct _Evas_Model_Load_Save_Stride -{ - int positions; - int normals; - int tex_coords; - int colors; -}; - -/* create new header */ -Evas_Model_Load_Save_Header evas_model_load_save_header_new(void); -void evas_model_load_vertex_data_unmap(Evas_Canvas3D_Mesh *mesh, int frame, Evas_Model_Load_Save_Header header); -void evas_model_load_save_data_free(Evas_Model_Load_Save_Header header, Evas_Model_Load_Save_Data *data); -void evas_model_load_vertex_data_to_mesh(Evas_Canvas3D_Mesh *mesh, Evas_Model_Load_Save_Header header, Evas_Model_Load_Save_Data data, Evas_Model_Load_Save_Stride *stride); -void evas_model_load_indices_data_to_mesh(Evas_Canvas3D_Mesh *mesh, Evas_Model_Load_Save_Header header, Evas_Model_Load_Save_Data data); -Eina_Bool evas_model_load_allocate_data_due_to_header(Evas_Model_Load_Save_Header header, Evas_Model_Load_Save_Data *data); -void evas_model_load_aabb_add_to_frame(Evas_Canvas3D_Mesh *mesh, int frame, Evas_Model_Load_Save_Stride stride); -Eina_Bool evas_model_save_header_from_mesh(Evas_Canvas3D_Mesh_Data *pd, Evas_Canvas3D_Mesh_Frame *f, Evas_Model_Load_Save_Header *header); -void evas_model_save_data_from_mesh(Evas_Canvas3D_Mesh_Data *pd, Evas_Canvas3D_Mesh_Frame *f, Evas_Model_Load_Save_Header header, Evas_Model_Load_Save_Data *data); -void evas_model_save_data_copy_from_mesh(Evas_Canvas3D_Mesh_Data *pd, Evas_Canvas3D_Mesh_Frame *f, Evas_Model_Load_Save_Header header, Evas_Model_Load_Save_Data *data); - -#endif //MODEL_LOAD_COMMON diff --git a/src/lib/evas/common3d/save_load/evas_model_save.c b/src/lib/evas/common3d/save_load/evas_model_save.c deleted file mode 100644 index caf72ca400..0000000000 --- a/src/lib/evas/common3d/save_load/evas_model_save.c +++ /dev/null @@ -1,34 +0,0 @@ -#ifdef HAVE_CONFIG_H -# include "config.h" -#endif - -#include "evas_options.h" - -#include "evas_common_private.h" -#include "evas_private.h" - -void -evas_common_save_model_to_file(const Evas_Canvas3D_Mesh *model, - const char *file, - Evas_Canvas3D_Mesh_Frame *f) -{ - char *p; - char *saver = NULL; - - p = strrchr(file, '.'); - if (p) - { - p++; -#define CHECK_EXTENTION_BY_FILE_NAME(extention) \ - if (!strcasecmp(p, #extention)) \ - { \ - evas_model_save_file_##extention(model, file, f); \ - saver = #extention; \ - } - CHECK_EXTENTION_BY_FILE_NAME(eet) - CHECK_EXTENTION_BY_FILE_NAME(obj) - CHECK_EXTENTION_BY_FILE_NAME(ply) -#undef CHECK_EXTENTION_BY_FILE_NAME - } - if (!saver) ERR("Invalid mesh file type."); -} diff --git a/src/lib/evas/common3d/save_load/meson.build b/src/lib/evas/common3d/save_load/meson.build deleted file mode 100644 index 72f430d31e..0000000000 --- a/src/lib/evas/common3d/save_load/meson.build +++ /dev/null @@ -1,6 +0,0 @@ -evas_src += files([ - 'evas_model_load.c', - 'evas_model_load_save_common.c', - 'evas_model_load_save_common.h', - 'evas_model_save.c', -]) \ No newline at end of file diff --git a/src/lib/evas/include/evas_3d_utils.h b/src/lib/evas/include/evas_3d_utils.h deleted file mode 100644 index 219032306c..0000000000 --- a/src/lib/evas/include/evas_3d_utils.h +++ /dev/null @@ -1,1698 +0,0 @@ -#ifndef EVAS_PRIVATE_H -# error You shall not include this header directly -#endif - -#include -#include - -#define DEGREE_TO_RADIAN(x) (((x) * M_PI) / 180.0) -#define EVAS_MATRIX_IS_IDENTITY 0x00000001 -#define MIN_DIFF 0.00000000001 - -typedef struct _Evas_Color Evas_Color; -typedef struct _Evas_Box2 Evas_Box2; -typedef struct _Evas_Box3 Evas_Box3; -typedef struct _Evas_Line3 Evas_Line3; -typedef struct _Evas_Triangle3 Evas_Triangle3; -typedef struct _Evas_Ray3 Evas_Ray3; -typedef struct _Evas_Sphere Evas_Sphere; - -struct _Evas_Color -{ - Evas_Real r; - Evas_Real g; - Evas_Real b; - Evas_Real a; -}; - -struct _Evas_Box2 -{ - Eina_Vector2 p0; - Eina_Vector2 p1; -}; - -struct _Evas_Box3 -{ - Eina_Vector3 p0; - Eina_Vector3 p1; -}; - -struct _Evas_Line3 -{ - Eina_Vector3 point; - Eina_Vector3 direction; -}; - -struct _Evas_Triangle3 -{ - Eina_Vector3 p0; - Eina_Vector3 p1; - Eina_Vector3 p2; -}; - -struct _Evas_Ray3 -{ - Eina_Vector3 org; - Eina_Vector3 dir; -}; - -struct _Evas_Sphere -{ - Eina_Vector3 center; - Evas_Real radius; -}; - -static inline void -evas_triangle3_set(Evas_Triangle3 *v, Eina_Vector3 *a, Eina_Vector3 *b, Eina_Vector3 *c) -{ - eina_vector3_copy(&v->p0, a); - eina_vector3_copy(&v->p1, b); - eina_vector3_copy(&v->p2, c); -} - -static inline Eina_Bool -evas_triangle3_is_line(Evas_Triangle3 *v) -{ - if (eina_vector3_equivalent(&v->p0, &v->p1) || - eina_vector3_equivalent(&v->p0, &v->p2) || - eina_vector3_equivalent(&v->p1, &v->p2)) - return EINA_TRUE; - - return EINA_FALSE; -} - -static inline Eina_Bool -convex_hull_triangle3_not_first_edje(Evas_Triangle3 *v, Eina_Vector3 *a, Eina_Vector3 *b) -{ - if ((EINA_DBL_EQ(v->p1.x, a->x) && EINA_DBL_EQ(v->p1.y, a->y) && EINA_DBL_EQ(v->p1.z, a->z)) && - (EINA_DBL_EQ(v->p2.x, b->x) && EINA_DBL_EQ(v->p2.y, b->y) && EINA_DBL_EQ(v->p2.z, b->z))) - return EINA_TRUE; - else if ((EINA_DBL_EQ(v->p2.x, a->x) && EINA_DBL_EQ(v->p2.y, a->y) && EINA_DBL_EQ(v->p2.z, a->z)) && - (EINA_DBL_EQ(v->p1.x, b->x) && EINA_DBL_EQ(v->p1.y, b->y) && EINA_DBL_EQ(v->p1.z, b->z))) - return EINA_TRUE; - - return EINA_FALSE; -} - -static inline Eina_Bool -convex_hull_triangle3_first_edje(Evas_Triangle3 *v, Eina_Vector3 *a, Eina_Vector3 *b) -{ - if ((!EINA_FLT_EQ(v->p0.x, a->x) && !EINA_FLT_EQ(v->p0.y, a->y) && - !EINA_FLT_EQ(v->p0.z, a->z)) && (!EINA_FLT_EQ(v->p1.x, b->x) && - !EINA_FLT_EQ(v->p1.y, b->y) && !EINA_FLT_EQ(v->p1.z, b->z))) - return EINA_TRUE; - else if ((!EINA_FLT_EQ(v->p1.x, a->x) && !EINA_FLT_EQ(v->p1.y, a->y) && - !EINA_FLT_EQ(v->p1.z, a->z)) && (!EINA_FLT_EQ(v->p0.x, b->x) && - !EINA_FLT_EQ(v->p0.y, b->y) && !EINA_FLT_EQ(v->p0.z, b->z))) - return EINA_TRUE; - - return EINA_FALSE; -} - -static inline Eina_Bool -convex_hull_triangle3_first_point(Evas_Triangle3 *v, Eina_Vector3 *a) -{ - return (EINA_DBL_EQ(v->p0.x, a->x) && EINA_DBL_EQ(v->p0.y, a->y) && EINA_DBL_EQ(v->p0.z, a->z)); -} - -static inline Eina_Bool -eina_vector3_equivalent_as_triangle(Eina_Vector3 *v0, Eina_Vector3 *v1, Eina_Vector3 *v2, - Eina_Vector3 *w0, Eina_Vector3 *w1, Eina_Vector3 *w2) -{ - if ((EINA_DBL_EQ(v0->x, w0->x) && EINA_DBL_EQ(v0->y, w0->y) && EINA_DBL_EQ(v0->z, w0->z)) && - (EINA_DBL_EQ(v1->x, w1->x) && EINA_DBL_EQ(v1->y, w1->y) && EINA_DBL_EQ(v1->z, w1->z)) && - (EINA_DBL_EQ(v2->x, w2->x) && EINA_DBL_EQ(v2->y, w2->y) && EINA_DBL_EQ(v2->z, w2->z))) - return EINA_TRUE; - - return EINA_FALSE; -} - -static inline Eina_Bool -evas_triangle3_equivalent(Evas_Triangle3 *a, Evas_Triangle3 *b) -{ - /* to compare two triangles there are six permutations - to test because vertices are unordered */ - if (eina_vector3_equivalent_as_triangle(&a->p0, &a->p1, &a->p2, &b->p0, &b->p1, &b->p2) || - eina_vector3_equivalent_as_triangle(&a->p0, &a->p1, &a->p2, &b->p0, &b->p2, &b->p1) || - eina_vector3_equivalent_as_triangle(&a->p0, &a->p1, &a->p2, &b->p1, &b->p0, &b->p2) || - eina_vector3_equivalent_as_triangle(&a->p0, &a->p1, &a->p2, &b->p1, &b->p2, &b->p0) || - eina_vector3_equivalent_as_triangle(&a->p0, &a->p1, &a->p2, &b->p2, &b->p0, &b->p1) || - eina_vector3_equivalent_as_triangle(&a->p0, &a->p1, &a->p2, &b->p2, &b->p1, &b->p0)) - return EINA_TRUE; - - return EINA_FALSE; -} - -static inline void -evas_mat4_look_at_set(Eina_Matrix4 *m, - const Eina_Vector3 *pos, const Eina_Vector3 *center, const Eina_Vector3 *up) -{ - Eina_Vector3 x, y, z; - - eina_vector3_subtract(&z, pos, center); - eina_vector3_normalize(&z, &z); - - eina_vector3_cross_product(&x, up, &z); - eina_vector3_normalize(&x, &x); - - eina_vector3_cross_product(&y, &z, &x); - eina_vector3_normalize(&y, &y); - - m->xx = x.x; - m->xy = y.x; - m->xz = z.x; - m->xw = 0.0; - - m->yx = x.y; - m->yy = y.y; - m->yz = z.y; - m->yw = 0.0; - - m->zx = x.z; - m->zy = y.z; - m->zz = z.z; - m->zw = 0.0; - - m->wx = -eina_vector3_dot_product(&x, pos); - m->wy = -eina_vector3_dot_product(&y, pos); - m->wz = -eina_vector3_dot_product(&z, pos); - m->ww = 1.0; -} - -static inline void -evas_mat4_frustum_set(Eina_Matrix4 *m, - Evas_Real left, Evas_Real right, Evas_Real bottom, Evas_Real top, - Evas_Real dnear, Evas_Real dfar) -{ - Evas_Real w = right - left; - Evas_Real h = top - bottom; - Evas_Real depth = dnear - dfar; - Evas_Real near_2 = 2.0f * dnear; - - m->xx = near_2 / w; - m->xy = 0.0f; - m->xz = 0.0f; - m->xw = 0.0f; - - m->yx = 0.0f; - m->yy = near_2 / h; - m->yz = 0.0f; - m->yw = 0.0f; - - m->zx = (right + left) / w; - m->zy = (top + bottom) / h; - m->zz = (dfar + dnear) / depth; - m->zw = -1.0f; - - m->wx = 0.0f; - m->wy = 0.0f; - m->wz = near_2 * dfar / depth; - m->ww = 0.0f; -} - -static inline void -evas_box2_set(Evas_Box2 *box, Evas_Real x0, Evas_Real y0, Evas_Real x1, - Evas_Real y1) -{ - box->p0.x = x0; - box->p0.y = y0; - box->p1.x = x1; - box->p1.y = y1; -} - -static inline void -evas_box3_set(Evas_Box3 *box, Evas_Real x0, Evas_Real y0, Evas_Real z0, - Evas_Real x1, Evas_Real y1, Evas_Real z1) -{ - box->p0.x = x0; - box->p0.y = y0; - box->p0.z = z0; - box->p1.x = x1; - box->p1.y = y1; - box->p1.z = z1; -} - -static inline void -evas_box3_empty_set(Evas_Box3 *box) -{ - eina_vector3_set(&box->p0, 0.0, 0.0, 0.0); - eina_vector3_set(&box->p1, 0.0, 0.0, 0.0); -} - -static inline void -evas_box3_copy(Evas_Box3 *dst, const Evas_Box3 *src) -{ - eina_vector3_copy(&dst->p0, &src->p0); - eina_vector3_copy(&dst->p1, &src->p1); -} - -static inline void -evas_box3_union(Evas_Box3 *out, const Evas_Box3 *a, const Evas_Box3 *b) -{ - eina_vector3_set(&out->p0, MIN(a->p0.x, b->p0.x), MIN(a->p0.y, b->p0.y), MIN(a->p0.z, b->p0.z)); - eina_vector3_set(&out->p1, MAX(a->p1.x, b->p1.x), MAX(a->p1.y, b->p1.y), MAX(a->p1.z, b->p1.z)); -} - -static inline void -evas_box3_transform(Evas_Box3 *out EINA_UNUSED, const Evas_Box3 *box EINA_UNUSED, const Eina_Matrix4 *mat EINA_UNUSED) -{ - /* TODO: */ -} - -static inline void -evas_mat4_position_get(const Eina_Matrix4 *matrix, Eina_Quaternion *position) -{ - Eina_Quaternion pos; - - pos.x = 0.0; - pos.y = 0.0; - pos.z = 0.0; - pos.w = 1.0; - - eina_quaternion_transform(position, &pos, matrix); -} - -static inline void -evas_mat4_direction_get(const Eina_Matrix4 *matrix, Eina_Vector3 *direction) -{ - /* TODO: Check correctness. */ - - Eina_Quaternion dir; - - dir.x = 0.0; - dir.y = 0.0; - dir.z = 1.0; - dir.w = 1.0; - - eina_quaternion_transform(&dir, &dir, matrix); - - direction->x = dir.x; - direction->y = dir.y; - direction->z = dir.z; -} - -static inline void -evas_mat4_build(Eina_Matrix4 *out, - const Eina_Vector3 *position, const Eina_Quaternion *orientation, const Eina_Vector3 *scale) -{ - Eina_Matrix3 rot; - - eina_quaternion_rotation_matrix3_get(&rot, orientation); - - out->xx = scale->x * rot.xx; - out->xy = scale->x * rot.xy; - out->xz = scale->x * rot.xz; - out->xw = 0.0; - - out->yx = scale->y * rot.yx; - out->yy = scale->y * rot.yy; - out->yz = scale->y * rot.yz; - out->yw = 0.0; - - out->zx = scale->z * rot.zx; - out->zy = scale->z * rot.zy; - out->zz = scale->z * rot.zz; - out->zw = 0.0; - - out->wx = position->x; - out->wy = position->y; - out->wz = position->z; - out->ww = 1.0; -} - -static inline void -evas_mat4_inverse_build(Eina_Matrix4 *out, const Eina_Vector3 *position, - const Eina_Quaternion *orientation, const Eina_Vector3 *scale) -{ - Eina_Quaternion inv_rotation; - Eina_Vector3 inv_scale; - Eina_Vector3 inv_translate; - - Eina_Matrix3 rot; - - /* Inverse scale. */ - eina_vector3_set(&inv_scale, 1.0 / scale->x, 1.0 / scale->y, 1.0 / scale->z); - - /* Inverse rotation. */ - eina_quaternion_inverse(&inv_rotation, orientation); - - /* Inverse translation. */ - eina_vector3_negate(&inv_translate, position); - eina_vector3_quaternion_rotate(&inv_translate, &inv_translate, &inv_rotation); - eina_vector3_multiply(&inv_translate, &inv_translate, &inv_scale); - - /* Get 3x3 rotation matrix. */ - eina_quaternion_rotation_matrix3_get(&rot, &inv_rotation); - - out->xx = inv_scale.x * rot.xx; - out->xy = inv_scale.x * rot.xy; - out->xz = inv_scale.x * rot.xz; - out->xw = 0.0; - - out->yx = inv_scale.y * rot.yx; - out->yy = inv_scale.y * rot.yy; - out->yz = inv_scale.y * rot.yz; - out->yw = 0.0; - - out->zx = inv_scale.z * rot.zx; - out->zy = inv_scale.z * rot.zy; - out->zz = inv_scale.z * rot.zz; - out->zw = 0.0; - - out->wx = inv_translate.x; - out->wy = inv_translate.y; - out->wz = inv_translate.z; - out->ww = 1.0; -} - -static inline void -evas_color_set(Evas_Color *color, Evas_Real r, Evas_Real g, Evas_Real b, Evas_Real a) -{ - color->r = r; - color->g = g; - color->b = b; - color->a = a; -} - -static inline void -evas_color_blend(Evas_Color *dst, const Evas_Color *c0, const Evas_Color *c1, Evas_Real w) -{ - dst->r = c0->r * w + c1->r * (1.0 - w); - dst->g = c0->g * w + c1->g * (1.0 - w); - dst->b = c0->b * w + c1->b * (1.0 - w); - dst->a = c0->a * w + c1->a * (1.0 - w); -} - -static inline void -evas_ray3_init(Evas_Ray3 *ray, Evas_Real x, Evas_Real y, const Eina_Matrix4 *mvp) -{ - Eina_Matrix4 mat; - Eina_Quaternion dnear, dfar; - - memset(&mat, 0, sizeof (mat)); - - /* Get the matrix which transforms from normalized device coordinate to - modeling coodrinate. */ - eina_matrix4_inverse(&mat, mvp); - - /* Transform near point. */ - dnear.x = x; - dnear.y = y; - dnear.z = -1.0; - dnear.w = 1.0; - - eina_quaternion_transform(&dnear, &dnear, &mat); - - dnear.w = 1.0 / dnear.w; - dnear.x *= dnear.w; - dnear.y *= dnear.w; - dnear.z *= dnear.w; - - eina_vector3_set(&ray->org, dnear.x, dnear.y, dnear.z); - - /* Transform far point. */ - dfar.x = x; - dfar.y = y; - dfar.z = 1.0; - dfar.w = 1.0; - - eina_quaternion_transform(&dfar, &dfar, &mat); - - dfar.w = 1.0 / dfar.w; - dfar.x *= dfar.w; - dfar.y *= dfar.w; - dfar.z *= dfar.w; - - eina_vector3_set(&ray->dir, dfar.x - dnear.x, dfar.y - dnear.y, dfar.z - dnear.z); -} - -static inline Eina_Bool -evas_box2_intersect_2d(const Evas_Box2 *box, const Eina_Vector2 *org, const Eina_Vector2 *dir) -{ - Evas_Real t1, t2, t_near = FLT_MIN, t_far = FLT_MAX; - /* ray intersects box if its begins in */ - if ((org->x >= box->p0.x) && (org->x <= box->p1.x) && - (org->y >= box->p0.y) && (org->y <= box->p1.y)) - { - return EINA_TRUE; - } - /* minmax algorithm of ray and box intersection */ - if (!EINA_DBL_EQ(dir->x, 0.0) && !EINA_DBL_EQ(dir->y, 0.0)) - { - t1 = (box->p0.x - org->x) / dir->x; - t2 = (box->p1.x - org->x) / dir->x; - - if (t1 > t2) - { - Evas_Real tmp = t1; - t1 = t2; - t2 = tmp; - } - - if (t1 > t_near) t_near = t1; - if (t2 < t_far) t_far = t2; - - if (t_far < 0.0f) - return EINA_FALSE; - - t1 = (box->p0.y - org->y) / dir->y; - t2 = (box->p1.y - org->y) / dir->y; - - if (t1 > t2) - { - Evas_Real tmp = t1; - t1 = t2; - t2 = tmp; - } - - if (t1 > t_near) t_near = t1; - if (t2 < t_far) t_far = t2; - - if ((t_near > t_far) || (t_far < 0.0f)) - return EINA_FALSE; - } - /* case when ray is parallel to one of axes */ - else if (EINA_DBL_EQ(dir->x, 0.0)) - { - if ((org->x < box->p0.x) && (org->x > box->p1.x)) - return EINA_FALSE; - } - else if (org->y < box->p0.y && org->y > box->p1.y) - return EINA_FALSE; - - return EINA_TRUE; -} - -static inline Evas_Real -evas_determinant_3D(Evas_Real matrix[3][3]) -{ - return (matrix[0][0] * matrix[1][1] * matrix[2][2]) + - (matrix[0][1] * matrix[1][2] * matrix[2][0]) + - (matrix[0][2] * matrix[1][0] * matrix[2][1]) - - (matrix[0][2] * matrix[1][1] * matrix[2][0]) - - (matrix[0][1] * matrix[1][0] * matrix[2][2]) - - (matrix[0][0] * matrix[1][2] * matrix[2][1]); -} - -static inline Eina_Bool -evas_box3_ray3_intersect(const Evas_Box3 *box, const Evas_Ray3 *ray) -{ - Evas_Real t1, t2, t_near = FLT_MIN, t_far = FLT_MAX; - Evas_Box2 box2; - Eina_Vector2 org2; - Eina_Vector2 dir2; - Eina_Bool intersect = EINA_FALSE; - - /* ray intersects box if its begins in */ - if ((ray->org.x >= box->p0.x) && (ray->org.x <= box->p1.x) && - (ray->org.y >= box->p0.y) && (ray->org.y <= box->p1.y) && - (ray->org.z >= box->p0.z) && (ray->org.z <= box->p1.z)) - { - return EINA_TRUE; - } - /* minmax algorithm of ray and box intersection */ - if (!EINA_DBL_EQ(ray->dir.x, 0.0) && !EINA_DBL_EQ(ray->dir.y, 0.0) && !EINA_DBL_EQ(ray->dir.z, 0.0)) - { - t1 = (box->p0.x - ray->org.x) / ray->dir.x; - t2 = (box->p1.x - ray->org.x) / ray->dir.x; - - if (t1 > t2) - { - Evas_Real tmp = t1; - t1 = t2; - t2 = tmp; - } - - if (t1 > t_near) t_near = t1; - if (t2 < t_far) t_far = t2; - - if (t_far < 0.0f) - return EINA_FALSE; - - t1 = (box->p0.y - ray->org.y) / ray->dir.y; - t2 = (box->p1.y - ray->org.y) / ray->dir.y; - - if (t1 > t2) - { - Evas_Real tmp = t1; - t1 = t2; - t2 = tmp; - } - - if (t1 > t_near) t_near = t1; - if (t2 < t_far) t_far = t2; - - if ((t_near > t_far) || (t_far < 0.0f)) - return EINA_FALSE; - - t1 = (box->p0.z - ray->org.z) / ray->dir.z; - t2 = (box->p1.z - ray->org.z) / ray->dir.z; - - if (t1 > t2) - { - Evas_Real tmp = t1; - t1 = t2; - t2 = tmp; - } - - if (t1 > t_near) t_near = t1; - if (t2 < t_far) t_far = t2; - - if ((t_near > t_far) || (t_far < 0.0f)) - return EINA_FALSE; - - intersect = EINA_TRUE; - } - /* case when ray is parallel to one of axes */ - else - { - /* use two-dimensional version here */ - if (EINA_DBL_EQ(ray->dir.x, 0.0)) - { - if ((ray->org.x < box->p0.x) || (ray->org.x > box->p1.x)) - return EINA_FALSE; - else - { - eina_vector2_set(&org2, ray->org.y, ray->org.z); - eina_vector2_set(&dir2, ray->dir.y, ray->dir.z); - evas_box2_set(&box2, box->p0.y, box->p0.z, box->p1.y, box->p1.z); - intersect = evas_box2_intersect_2d(&box2, &org2, &dir2); - } - } - - if (EINA_DBL_EQ(ray->dir.y, 0.0)) - { - if ((ray->org.y < box->p0.y) || (ray->org.y > box->p1.y)) - return EINA_FALSE; - else - { - eina_vector2_set(&org2, ray->org.x, ray->org.z); - eina_vector2_set(&dir2, ray->dir.x, ray->dir.z); - evas_box2_set(&box2, box->p0.x, box->p0.z, box->p1.x, box->p1.z); - intersect = evas_box2_intersect_2d(&box2, &org2, &dir2); - } - } - - if (EINA_DBL_EQ(ray->dir.z, 0.0)) - { - if (ray->org.z < box->p0.z || ray->org.z > box->p1.z) - return EINA_FALSE; - else - { - eina_vector2_set(&org2, ray->org.x, ray->org.y); - eina_vector2_set(&dir2, ray->dir.x, ray->dir.y); - evas_box2_set(&box2, box->p0.x, box->p0.y, box->p1.x, box->p1.y); - intersect = evas_box2_intersect_2d(&box2, &org2, &dir2); - } - } - } - - return intersect; -} - -static inline Evas_Real -evas_reciprocal_sqrt(Evas_Real x) -{ - union { - float f; - long i; - } u; - - u.f = x; - u.i = 0x5f3759df - (u.i >> 1); - return u.f * (1.5f - u.f * u.f * x * 0.5f); -} - -static inline void -evas_build_sphere(const Evas_Box3 *box, Evas_Sphere *sphere) -{ - Eina_Vector3 tmp; - - eina_vector3_set(&sphere->center, (0.5 * (box->p0.x + box->p1.x)), (0.5 * (box->p0.y + box->p1.y)), (0.5 * (box->p0.z + box->p1.z))); - eina_vector3_set(&tmp, sphere->center.x - box->p0.x, sphere->center.y - box->p0.y, sphere->center.z - box->p0.z); - - sphere->radius = sqrtf(eina_vector3_dot_product(&tmp, &tmp)); -} - -static inline void -evas_sphere_empty_set(Evas_Sphere *dst) -{ - dst->radius = 0; - dst->center.x = 0; - dst->center.y = 0; - dst->center.z = 0; -} - -static inline void -evas_plane_normalize(Eina_Quaternion *plane) -{ - Eina_Vector3 tmp; - Evas_Real length; - eina_vector3_set(&tmp, plane->x, plane->y, plane->z); - length = eina_vector3_length_get(&tmp); - plane->x = plane->x / length; - plane->y = plane->y / length; - plane->z = plane->z / length; - plane->w = plane->w / length; -} - -static inline Eina_Bool -evas_intersection_line_of_two_plains(Evas_Line3 *line, Eina_Quaternion *plane1, Eina_Quaternion *plane2) -{ - //TODO:parallel case - Eina_Vector3 planes3D[2]; - - eina_vector3_set(&planes3D[0], plane1->x, plane1->y, plane1->z); - eina_vector3_set(&planes3D[1], plane2->x, plane2->y, plane2->z); - - eina_vector3_cross_product(&line->direction, &planes3D[0], &planes3D[1]); - -#define SOLVE_EQUATION(x, y, z) \ - line->point.x = 0; \ - line->point.y = (plane2->w * plane1->z - plane1->w * plane2->z) / line->direction.x; \ - line->point.z = (plane2->y * plane1->w - plane1->y * plane2->w) / line->direction.x; - - if (!EINA_DBL_EQ(line->direction.x, 0.0) && !EINA_DBL_EQ(plane1->z, 0.0)) - { - SOLVE_EQUATION(x, y, z) - } - else if (!EINA_DBL_EQ(line->direction.y, 0.0) && !EINA_DBL_EQ(plane1->x, 0.0)) - { - SOLVE_EQUATION(y, z, x) - } - else - { - SOLVE_EQUATION(z, x, y) - } -#undef SOLVE_EQUATION - - return EINA_TRUE; -} - -static inline Eina_Bool -evas_intersection_point_of_three_plains(Eina_Vector3 *point, Eina_Quaternion *plane1, Eina_Quaternion *plane2, Eina_Quaternion *plane3) -{ - //TODO:parallel case - int i; - Evas_Real delta, deltax, deltay, deltaz; - Evas_Real matrix_to_det[3][3]; - Eina_Quaternion planes[3]; - - planes[0] = *plane1; - planes[1] = *plane2; - planes[2] = *plane3; - - for (i = 0; i < 3; i++) - { - matrix_to_det[0][i] = planes[i].x; - matrix_to_det[1][i] = planes[i].y; - matrix_to_det[2][i] = planes[i].z; - } - delta = evas_determinant_3D(matrix_to_det); - - for (i = 0; i < 3; i++) - matrix_to_det[0][i] = planes[i].w; - deltax = evas_determinant_3D(matrix_to_det); - - for (i = 0; i < 3; i++) - { - matrix_to_det[0][i] = planes[i].x; - matrix_to_det[1][i] = planes[i].w; - } - deltay = evas_determinant_3D(matrix_to_det); - - for (i = 0; i < 3; i++) - { - matrix_to_det[1][i] = planes[i].y; - matrix_to_det[2][i] = planes[i].w; - } - deltaz = evas_determinant_3D(matrix_to_det); - - eina_vector3_set(point, -deltax/delta, -deltay/delta, -deltaz/delta); - - return EINA_TRUE; -} - -static inline Evas_Real -evas_point_plane_distance(Eina_Vector3 *point, Eina_Quaternion *plane) -{ - return plane->x * point->x + plane->y * point->y + plane->z * point->z + plane->w; -} - -static inline Evas_Real -evas_point_line_distance(Eina_Vector3 *point, Evas_Line3 *line) -{ - Eina_Vector3 temp, sub; - - eina_vector3_subtract(&sub, point, &line->point); - eina_vector3_cross_product(&temp, &sub, &line->direction); - - return eina_vector3_length_get(&temp) / eina_vector3_length_get(&line->direction); -} - -static inline Eina_Bool -evas_is_sphere_in_frustum(Evas_Sphere *bsphere, Eina_Quaternion *planes) -{ - int i; - Evas_Line3 line; - Eina_Vector3 point, sub; - Evas_Real distances[6] = {0}; - int intersected_plains[3]; - int intersected_plains_count = 0; - - for (i = 0; i < 6; i++) - distances[i] = evas_point_plane_distance(&bsphere->center, &planes[i]); - - for (i = 0; i < 6; i++) - { - if (distances[i] <= -bsphere->radius) - { - return EINA_FALSE; - } - else if (distances[i] <= 0) - { - intersected_plains[intersected_plains_count] = i; - intersected_plains_count++; - } - } - - switch (intersected_plains_count) - { - case 2: - evas_intersection_line_of_two_plains(&line, - &planes[intersected_plains[0]], - &planes[intersected_plains[1]]); - return (evas_point_line_distance(&bsphere->center, &line) < - bsphere->radius) ? EINA_TRUE : EINA_FALSE; - case 3: - evas_intersection_point_of_three_plains(&point, - &planes[intersected_plains[0]], - &planes[intersected_plains[1]], - &planes[intersected_plains[2]]); - eina_vector3_subtract(&sub, &point, &bsphere->center); - return (eina_vector3_length_get(&sub) < bsphere->radius) ? EINA_TRUE : EINA_FALSE; - default: - return EINA_TRUE; - } -} - -static inline Eina_Bool -evas_is_point_in_frustum(Eina_Vector3 *point, Eina_Quaternion *planes) -{ - int i; - for (i = 0; i < 6; i++) - if (evas_point_plane_distance(point, &planes[i]) <= 0) return EINA_FALSE; - return EINA_TRUE; -} - -static inline Eina_Bool -evas_is_box_in_frustum(Evas_Box3 *box, Eina_Quaternion *planes) -{ - int i; - for (i = 0; i < 6; i++) - { - if (planes[i].x * box->p0.x + planes[i].y * box->p0.y + planes[i].z * box->p0.z + planes[i].w > 0) - continue; - if (planes[i].x * box->p1.x + planes[i].y * box->p0.y + planes[i].z * box->p0.z + planes[i].w > 0) - continue; - if (planes[i].x * box->p1.x + planes[i].y * box->p1.y + planes[i].z * box->p0.z + planes[i].w > 0) - continue; - if (planes[i].x * box->p0.x + planes[i].y * box->p1.y + planes[i].z * box->p0.z + planes[i].w > 0) - continue; - if (planes[i].x * box->p0.x + planes[i].y * box->p0.y + planes[i].z * box->p1.z + planes[i].w > 0) - continue; - if (planes[i].x * box->p1.x + planes[i].y * box->p0.y + planes[i].z * box->p1.z + planes[i].w > 0) - continue; - if (planes[i].x * box->p1.x + planes[i].y * box->p1.y + planes[i].z * box->p1.z + planes[i].w > 0) - continue; - if (planes[i].x * box->p0.x + planes[i].y * box->p1.y + planes[i].z * box->p1.z + planes[i].w > 0) - continue; - return EINA_FALSE; - } - - return EINA_TRUE; -} - -static inline void -evas_frustum_calculate(Eina_Quaternion *planes, Eina_Matrix4 *matrix_vp) -{ - int i; - - eina_quaternion_set(&planes[0], matrix_vp->xw - matrix_vp->xx, - matrix_vp->yw - matrix_vp->yx, - matrix_vp->zw - matrix_vp->zx, - matrix_vp->ww - matrix_vp->wx); - eina_quaternion_set(&planes[1], matrix_vp->xw - matrix_vp->xx, - matrix_vp->yw - matrix_vp->yx, - matrix_vp->zw - matrix_vp->zx, - matrix_vp->ww - matrix_vp->wx); - eina_quaternion_set(&planes[2], matrix_vp->xw - matrix_vp->xx, - matrix_vp->yw - matrix_vp->yx, - matrix_vp->zw - matrix_vp->zx, - matrix_vp->ww - matrix_vp->wx); - eina_quaternion_set(&planes[3], matrix_vp->xw - matrix_vp->xx, - matrix_vp->yw - matrix_vp->yx, - matrix_vp->zw - matrix_vp->zx, - matrix_vp->ww - matrix_vp->wx); - eina_quaternion_set(&planes[4], matrix_vp->xw - matrix_vp->xx, - matrix_vp->yw - matrix_vp->yx, - matrix_vp->zw - matrix_vp->zx, - matrix_vp->ww - matrix_vp->wx); - eina_quaternion_set(&planes[5], matrix_vp->xw - matrix_vp->xx, - matrix_vp->yw - matrix_vp->yx, - matrix_vp->zw - matrix_vp->zx, - matrix_vp->ww - matrix_vp->wx); - - for (i = 0; i < 6; i++) - { - evas_plane_normalize(&planes[i]); - } -} - -static inline Eina_Bool -box_intersection_box(Evas_Box3 *v1, Evas_Box3 *v2) -{ - if ((v1->p1.x < v2->p0.x) || (v1->p0.x > v2->p1.x) - || (v1->p1.y < v2->p0.y) || (v1->p0.y > v2->p1.y) - || (v1->p1.z < v2->p0.z) || (v1->p0.z > v2->p1.z)) - return EINA_FALSE; - else - return EINA_TRUE; -} - -static inline void -tangent_new_basis(Eina_Vector3 *out, Evas_Triangle3 *triangle, - Eina_Vector2 *a, Eina_Vector2 *b, Eina_Vector2 *c) -{ - Eina_Vector2 new1, new2; - Eina_Vector3 old1, old2; - eina_vector3_set(out, 0, 0, 0); - - eina_vector2_subtract(&new1, b, a); - eina_vector2_subtract(&new2, c, a); - eina_vector3_subtract(&old1, &(triangle->p1), &(triangle->p0)); - eina_vector3_subtract(&old2, &(triangle->p2), &(triangle->p0)); - - - /* calculation of new basis(in system coordinates of texturing) by solution of system of equations */ - if (!EINA_DBL_EQ(new2.y, 0.0)) - { - eina_vector3_scale(&old2, &old2, (new1.y / new2.y)); - eina_vector2_scale(&new2, &new2, (new1.y / new2.y)); - - eina_vector2_subtract(&new1, &new1, &new2); - eina_vector3_subtract(&old1, &old1, &old2); - - eina_vector3_scale(out, &old1, 1 / new1.x); - } - - else if (!EINA_DBL_EQ(new1.y, 0.0)) - { - eina_vector3_scale(&old1, &old1, (new2.y / new1.y)); - eina_vector2_scale(&new1, &new1, (new2.y / new1.y)); - - eina_vector2_subtract(&new2, &new2, &new1); - eina_vector3_subtract(&old2, &old2, &old1); - - eina_vector3_scale(out, &old2, 1 / new2.x); - } - - return; -} - -static inline void -convex_hull_vertex_set(Evas_Triangle3 *el, unsigned short int *vertex_count, float **vertex, - unsigned short int **index, unsigned int k, int *leader, int coord) -{ - int color_coords, normal_coords; - Eina_Vector3 vect = {0, 0, 0}; - switch (coord) - { - case 0: - vect = el->p0; - break; - case 1: - vect = el->p1; - break; - case 2: - vect = el->p2; - break; - } - - (*vertex_count)++; - *vertex = (float*) realloc(*vertex, (10 * (*vertex_count)) * sizeof(float)); - - (*vertex)[10 * (*vertex_count) - 10] = vect.x; - (*vertex)[10 * (*vertex_count) - 9] = vect.y; - (*vertex)[10 * (*vertex_count) - 8] = vect.z; - /* set alpha channel */ - (*vertex)[10 * (*vertex_count) - 1] = 1.0; - /* set color */ - for (color_coords = 2; color_coords < 5; color_coords++) - (*vertex)[10 * (*vertex_count) - color_coords] = (float) rand() / RAND_MAX; - /* set normal coords */ - for (normal_coords = 5; normal_coords < 8; normal_coords++) - (*vertex)[10 * (*vertex_count) - normal_coords] = 1.0; - (*index)[3 * k + coord] = *leader; - (*leader)++; -} - -static inline Evas_Triangle3 -convex_hull_first_tr_get(float *data, int count, int stride) -{ - Evas_Triangle3 out; - - Eina_Vector3 triangle1; - Eina_Vector3 triangle2, triangle2_candidate; - Eina_Vector3 triangle3, triangle3_candidate; - Eina_Vector3 first, diagonal, complanar1, complanar2, candidate; - Eina_Quaternion normal_a, normal_b; - - Evas_Real cos = 0.0, new_cos = 0.0, sin = 0.0, new_sin = 0.0, cos_2d = 0.0, new_cos_2d = 0.0; - int first_num = 0; - int i = 0, j = 0; - - eina_vector3_set(&triangle1, data[0], data[1], data[2]); - - for (i = 1, j = stride; i < count; i++, j += stride) - { - if ((triangle1.z > data[j + 2]) || - ((EINA_FLT_EQ(triangle1.z, data[j + 2])) && (triangle1.y > data[j + 1])) || - ((EINA_FLT_EQ(triangle1.z, data[j + 2])) && (EINA_FLT_EQ(triangle1.y, data[j + 1])) && (triangle1.x > data[j]))) - { - eina_vector3_set(&triangle1, data[j], data[j + 1], data[j + 2]); - first_num = i; - } - } - - if (first_num) - eina_vector3_set(&triangle2, data[0], data[1], data[2]); - else - eina_vector3_set(&triangle2, data[3], data[4], data[5]); - - eina_vector3_subtract(&diagonal, &triangle2, &triangle1); - sin = fabs(triangle2.z - triangle1.z) / eina_vector3_length_get(&diagonal); - -#define COMPARE_ANGLES(trigonom, triangle, previous, big, little) \ - if (little > big + FLT_EPSILON) \ - { \ - trigonom = new_##trigonom; \ - cos_2d = new_cos_2d; \ - eina_vector3_set(&triangle, data[j], data[j + 1], data[j + 2]); \ - } \ - else if(!EINA_FLT_EQ(little, big) && \ - (eina_vector3_distance_get(&triangle##_candidate, &previous) > \ - eina_vector3_distance_get(&triangle, &previous))) \ - { \ - eina_vector3_set(&triangle, data[j], data[j + 1], data[j + 2]); \ - } - eina_vector3_set(&complanar1, 1, 0, 0); - for (i = 0, j = 0; i < count; i++, j += stride) - { - if (EINA_FLT_EQ(data[j], triangle1.x) || - EINA_FLT_EQ(data[j + 1], triangle1.y) || - EINA_FLT_EQ(data[j + 2], triangle1.z)) - { - eina_vector3_set(&triangle2_candidate, data[j], data[j + 1], data[j + 2]); - eina_vector3_subtract(&diagonal, &triangle2_candidate, &triangle1); - new_sin = fabs(data[j + 2] - triangle1.z) / eina_vector3_length_get(&diagonal); - - if (sin > new_sin + FLT_EPSILON) - { - sin = new_sin; - eina_vector3_set(&triangle2, data[j], data[j + 1], data[j + 2]); - eina_vector3_subtract(&diagonal, &triangle2, &triangle1); - cos_2d = eina_vector3_angle_get(&complanar1, &diagonal); - } - else if (!EINA_FLT_EQ(sin, new_sin)) - { - eina_vector3_subtract(&diagonal, &triangle2_candidate, &triangle1); - new_cos_2d = eina_vector3_angle_get(&complanar1, &diagonal); - - COMPARE_ANGLES(cos, triangle2, triangle1, cos_2d, new_cos_2d) - } - } - } - - eina_vector3_set(&complanar1, triangle1.x + 1, triangle1.y, triangle1.z); - eina_vector3_set(&complanar2, triangle1.x, triangle1.y + 1, triangle1.z); - eina_vector3_plane_by_points(&normal_a, &triangle1, &complanar1, &complanar2); - - if (normal_a.z < 0) - eina_quaternion_scale(&normal_a, &normal_a, -1); - - eina_vector3_set(&triangle3, data[0], data[1], data[2]); - - cos = -1.0; - cos_2d = 1.0; - - for (i = 0, j = 0; i < count; i++, j += stride) - { - eina_vector3_set(&candidate, data[j], data[j + 1], data[j + 2]); - - if ((EINA_FLT_EQ(data[j], triangle1.x) || - EINA_FLT_EQ(data[j + 1], triangle1.y) || - EINA_FLT_EQ(data[j + 2], triangle1.z)) && - (EINA_FLT_EQ(data[j], triangle2.x) || - EINA_FLT_EQ(data[j + 1], triangle2.y) || - EINA_FLT_EQ(data[j + 2], triangle2.z))) - { - eina_vector3_plane_by_points(&normal_b, &triangle1, &candidate, &triangle2); - - if (normal_b.z < 0) - eina_quaternion_scale(&normal_b, &normal_b, -1); - - new_cos = eina_quaternion_angle_plains(&normal_a, &normal_b); - - if (new_cos > cos + FLT_EPSILON) - { - eina_vector3_set(&triangle3_candidate, data[j], data[j + 1], data[j + 2]); - eina_vector3_subtract(&first, &triangle2, &triangle1); - eina_vector3_subtract(&diagonal, &triangle3, &triangle1); - cos = new_cos; - eina_vector3_set(&triangle3, data[j], data[j + 1], data[j + 2]); - cos_2d = eina_vector3_angle_get(&diagonal, &first); - } - else if (!EINA_FLT_EQ(new_cos, cos)) - { - eina_vector3_set(&triangle3_candidate, data[j], data[j + 1], data[j + 2]); - eina_vector3_subtract(&first, &triangle1, &triangle2); - eina_vector3_subtract(&diagonal, &triangle3_candidate, &triangle2); - new_cos_2d = eina_vector3_angle_get(&first, &diagonal); - - COMPARE_ANGLES(cos, triangle3, triangle2, new_cos_2d, cos_2d) - } - } - } - - evas_triangle3_set(&out, &triangle1, &triangle2, &triangle3); - -#undef COMPARE_ANGLES - return out; -} - -static inline void -evas_convex_hull_get(float *data, int count, int stride, Eina_Inarray *vertex, - Eina_Inarray *index) -{ - Evas_Triangle3 first_elem, second_elem, *third_elem = NULL, *el = NULL; - - Eina_Vector3 *next = NULL, *best = NULL, *next_2d = NULL, *el_vec3 = NULL; - Eina_Vector3 tmp1, tmp2; - Eina_Quaternion normal_a, normal_b; - - Eina_Array arr_elems; - Eina_Array arr_triangles; - Eina_Array arr_candidates; - Eina_Array arr_ch; - Eina_Array_Iterator iterator; - - Evas_Real cos = 0.0, new_cos = 0.0, cos_2d = 0.0; - float *found_vertex = NULL; - int i = 0, j = 0, new_stride = 0, leader = 0; - int if_two = 0, first_exist_twice = 0, second_exist_twice = 0; - unsigned int k = 0; - unsigned short int *found_index = NULL, index_count, vertex_count = 0; - - Eina_Bool exist1 = EINA_FALSE, pushed; - Eina_Bool equivalent_triangle = EINA_FALSE, triangle_chain = EINA_FALSE; - Eina_Bool on_plane = EINA_FALSE, right = EINA_FALSE; - - eina_array_step_set(&arr_elems, sizeof(Eina_Array), 1); - eina_array_step_set(&arr_triangles, sizeof(Eina_Array), 1); - eina_array_step_set(&arr_candidates, sizeof(Eina_Array), 1); - eina_array_step_set(&arr_ch, sizeof(Eina_Array), 1); - - /* Finding of first triangle in convex hull */ - first_elem = convex_hull_first_tr_get(data, count, stride); - - eina_array_push(&arr_triangles, &first_elem); - eina_array_push(&arr_elems, &first_elem); - - evas_triangle3_set(&second_elem, &first_elem.p1, &first_elem.p2, &first_elem.p0); - eina_array_push(&arr_elems, &second_elem); - eina_array_push(&arr_triangles, &second_elem); - - third_elem = malloc(sizeof(Evas_Triangle3)); - evas_triangle3_set(third_elem, &first_elem.p2, &first_elem.p0, &first_elem.p1); - eina_array_push(&arr_elems, third_elem); - eina_array_push(&arr_triangles, third_elem); - eina_array_push(&arr_ch, third_elem); - - el = eina_array_data_get(&arr_elems, 0); - - /* arr_ellems is an array of triangles, in fact it is a queue of edjes - because vertices in triangles are ordered, every edje in this queue - should have a conjugate edje in some other triangle */ - while (eina_array_count(&arr_elems) > 0) - { - Evas_Triangle3 *new_elem1 = NULL, *new_elem2 = NULL; - - Evas_Triangle3 *elem = eina_array_pop(&arr_elems); - - cos = -1.0; - - /* searching of next triangle in convex hull as given conjugate edje - and one new vertex, all vertices should be checked */ - for (i = 0, j = 0; i < count; i++, j += stride) - { - if ((EINA_FLT_EQ(elem->p0.x, data[j]) || EINA_FLT_EQ(elem->p0.y, data[j + 1]) || - EINA_FLT_EQ(elem->p0.z, data[j + 2])) && (EINA_FLT_EQ(elem->p1.x, data[j]) || - EINA_FLT_EQ(elem->p1.y, data[j + 1]) || EINA_FLT_EQ(elem->p1.z, data[j + 2])) && - (EINA_FLT_EQ(elem->p2.x, data[j]) || EINA_FLT_EQ(elem->p2.y, data[j + 1]) || - EINA_FLT_EQ(elem->p2.z, data[j + 2]))) - { - next = malloc(sizeof(Eina_Vector3)); - eina_vector3_set(next, data[j], data[j + 1], data[j + 2]); - pushed = EINA_FALSE; - - /* something like the dihedral angle between the triangles - is a determining factor in searching the necessary points */ - - eina_vector3_plane_by_points(&normal_a, &elem->p0, &elem->p1, &elem->p2); - eina_vector3_plane_by_points(&normal_b, &elem->p0, &elem->p1, next); - - /* MIN_DIFF because vertices that belong to plain shouldn't be included */ - if (fabs(normal_a.x * data[j] + normal_a.y * data[j + 1] + normal_a.z * data[j + 2] + normal_a.w) < MIN_DIFF) - { - /* based on the construction of triangles, parallel but not collinear normal - means that the triangles overlap, which is the worst case */ - if ((normal_a.x * normal_b.x <= 0) && (normal_a.y * normal_b.y <= 0) && (normal_a.z * normal_b.z <= 0) && - ((fabs(normal_a.x) > DBL_EPSILON) || (fabs(normal_a.y) > DBL_EPSILON) || (fabs(normal_a.z) > DBL_EPSILON)) && - ((fabs(normal_b.x) > DBL_EPSILON) || (fabs(normal_b.y) > DBL_EPSILON) || (fabs(normal_b.z) > DBL_EPSILON))) - new_cos = 1.0; - else new_cos = -1.0; - } - - else - { - if (normal_a.x * data[j] + normal_a.y * data[j+1] + normal_a.z * data[j+2] + normal_a.w < 0) - eina_quaternion_scale(&normal_a, &normal_a, -1); - if (normal_b.x * elem->p2.x + normal_b.y * elem->p2.y + normal_b.z * elem->p2.z + normal_b.w < 0) - eina_quaternion_scale(&normal_b, &normal_b, -1); - - new_cos = eina_quaternion_angle_plains(&normal_a, &normal_b); - } - - /* MIN_DIFF is more useful for dihedral angles apparently */ - if (new_cos > cos + MIN_DIFF) - { - cos = new_cos; - EINA_ARRAY_ITER_NEXT(&arr_candidates, k, el_vec3, iterator) - free(el_vec3); - - /* Vertex gets into arr_candidates if the corresponding cosine is the maximum */ - eina_array_flush(&arr_candidates); - eina_array_step_set(&arr_candidates, sizeof(Eina_Array), 1); - eina_array_push(&arr_candidates, next); - pushed = EINA_TRUE; - } - else if (fabs(new_cos - cos) < MIN_DIFF) - { - exist1 = EINA_FALSE; - - for (k = 0; (k < eina_array_count(&arr_candidates)) && !exist1; k++) - { - next_2d = eina_array_data_get(&arr_candidates, k); - exist1 = eina_vector3_equivalent(next, next_2d); - } - if (!exist1) - { - eina_array_push(&arr_candidates, next); - pushed = EINA_TRUE; - } - } - - if (!pushed) - free(next); - } - } - - on_plane = EINA_FALSE; - right = EINA_FALSE; - - /* The case when several points are found, is discussed below. - This case is interesting because the convex hull in the - two-dimensional subspace should be filled further */ - if ((!EINA_FLT_EQ(cos, 1.0)) && (1 < eina_array_count(&arr_candidates))) - { - Eina_Vector3 angle_from, angle_to; - next_2d = eina_array_data_get(&arr_candidates, 0); - eina_vector3_plane_by_points(&normal_b, &elem->p1, &elem->p0, next_2d); - - if (normal_b.x * elem->p2.x + normal_b.y * elem->p2.y + normal_b.z * elem->p2.z + normal_b.w > 0) - { - eina_vector3_subtract(&angle_from, &elem->p0, &elem->p1); - right = EINA_TRUE; - } - else - eina_vector3_subtract(&angle_from, &elem->p1, &elem->p0); - - cos_2d = -1.0; - - EINA_ARRAY_ITER_NEXT(&arr_candidates, k, next_2d, iterator) - { - /* Selection of the required vertex occurs on the basis of a specific angle */ - if (right) - eina_vector3_subtract(&angle_to, next_2d, &elem->p0); - else - eina_vector3_subtract(&angle_to, next_2d, &elem->p1); - - new_cos = eina_vector3_dot_product(&angle_from, &angle_to) / - (eina_vector3_length_get(&angle_from) * eina_vector3_length_get(&angle_to)); - if (new_cos > cos_2d + FLT_EPSILON) - { - cos_2d = new_cos; - best = eina_array_data_get(&arr_candidates, k); - } - else if (!EINA_FLT_EQ(new_cos, cos_2d)) - { - if ((right && (eina_vector3_distance_get(best, &elem->p0) < eina_vector3_length_get(&angle_from))) || - (!right && (eina_vector3_distance_get(best, &elem->p1) < eina_vector3_length_get(&angle_from)))) - best = eina_array_data_get(&arr_candidates, k); - } - } - } - - /* This event will take place after the previous, - in fact, choice of first triangle in a new two-dimensional - convex hull allows to fill it fan counterclockwise when viewed from the inside */ - else if ((EINA_FLT_EQ(cos, 1.0)) && (1 < eina_array_count(&arr_candidates))) - { - Eina_Vector3 angle_from, angle_to; - eina_vector3_subtract(&angle_from, &elem->p0, &elem->p1); - cos_2d = -1.0; - EINA_ARRAY_ITER_NEXT(&arr_candidates, k, next_2d, iterator) - { - eina_vector3_subtract(&angle_to, next_2d, &elem->p0); - - eina_vector3_plane_by_points(&normal_a, &elem->p0, &elem->p1, &elem->p2); - eina_vector3_plane_by_points(&normal_b, &elem->p0, &elem->p1, next_2d); - if ((normal_a.x * normal_b.x <= 0) && (normal_a.y * normal_b.y <= 0) && (normal_a.z * normal_b.z <= 0)) - { - new_cos = eina_vector3_dot_product(&angle_from, &angle_to) / - (eina_vector3_length_get(&angle_from) * eina_vector3_length_get(&angle_to)); - if (new_cos > cos_2d + FLT_EPSILON) - { - cos_2d = new_cos; - best = eina_array_data_get(&arr_candidates, k); - } - else if (!EINA_FLT_EQ(new_cos, cos_2d)) - { - if (eina_vector3_distance_get(best, &elem->p0) < eina_vector3_length_get(&angle_to)) - best = eina_array_data_get(&arr_candidates, k); - } - on_plane = EINA_TRUE; - } - } - } - - else - best = eina_array_data_get(&arr_candidates, 0); - - eina_vector3_plane_by_points(&normal_b, &elem->p0, &elem->p1, best); - - if_two = 0; - first_exist_twice = 0; - second_exist_twice = 0; - equivalent_triangle = EINA_FALSE; - triangle_chain = EINA_FALSE; - eina_vector3_copy(&tmp1, &elem->p0); - eina_vector3_copy(&tmp2, &elem->p1); - new_elem1 = malloc(sizeof(Evas_Triangle3)); - evas_triangle3_set(new_elem1, best, &tmp1, &tmp2); - pushed = EINA_FALSE; - - /* verification that the edje has not been found previously */ - EINA_ARRAY_ITER_NEXT(&arr_triangles, k, el, iterator) - { - if (convex_hull_triangle3_first_edje(el, &elem->p0, &elem->p1)) - if_two++; - if (evas_triangle3_equivalent(el, new_elem1)) - equivalent_triangle++; - } - - - EINA_ARRAY_ITER_NEXT(&arr_triangles, k, el, iterator) - { - if ((k > 2) && (convex_hull_triangle3_not_first_edje(el, &elem->p0, best) || - convex_hull_triangle3_not_first_edje(el, &elem->p1, best))) - triangle_chain = EINA_TRUE; - } - - /* There is a specific order according to which the edjes are entered in arr_elems */ - if (!on_plane && !right) - { - if ((!equivalent_triangle) && (!second_exist_twice) && (!triangle_chain) && (if_two < 2)) - { - new_elem2 = malloc(sizeof(Evas_Triangle3)); - evas_triangle3_set(new_elem2, best, &tmp2, &tmp1); - eina_array_push(&arr_elems, new_elem2); - - /* triangles whose edges have been found should be entered into the arr_triangles - to optimize the algorithm */ - if ((first_exist_twice < 2) && (second_exist_twice < 2)) - eina_array_push(&arr_triangles, eina_array_data_get(&arr_elems, eina_array_count(&arr_elems) - 1)); - } - if ((!equivalent_triangle) && (!first_exist_twice) && (!triangle_chain) && (if_two < 2)) - { - eina_array_push(&arr_elems, new_elem1); - if ((first_exist_twice < 2) && (second_exist_twice < 2)) - { - pushed = EINA_TRUE; - - /* eina_ch is the resultant vector of all triangles in convex hull */ - eina_array_push(&arr_ch, eina_array_data_get(&arr_elems, eina_array_count(&arr_elems) - 1)); - eina_array_push(&arr_triangles, eina_array_data_get(&arr_elems, eina_array_count(&arr_elems) - 1)); - } - } - } - - else - { - if ((!equivalent_triangle) && (!first_exist_twice) && (!triangle_chain) && (if_two < 2)) - { - eina_array_push(&arr_elems, new_elem1); - if ((first_exist_twice < 2) && (second_exist_twice < 2)) - { - pushed = EINA_TRUE; - eina_array_push(&arr_ch, eina_array_data_get(&arr_elems, eina_array_count(&arr_elems) - 1)); - eina_array_push(&arr_triangles, eina_array_data_get(&arr_elems, eina_array_count(&arr_elems) - 1)); - } - } - - if ((!equivalent_triangle) && (!second_exist_twice) && (!triangle_chain) && (if_two < 2)) - { - new_elem2 = malloc(sizeof(Evas_Triangle3)); - evas_triangle3_set(new_elem2, best, &tmp2, &tmp1); - eina_array_push(&arr_elems, new_elem2); - - if ((first_exist_twice < 2) && (second_exist_twice < 2)) - eina_array_push(&arr_triangles, eina_array_data_get(&arr_elems, eina_array_count(&arr_elems)-1)); - } - } - if (!pushed) - free (new_elem1); - } - - index_count = 3 * eina_array_count(&arr_ch); - - found_vertex = (float*) malloc(10 * sizeof(float)); - found_index = (unsigned short int*) malloc(index_count * sizeof(unsigned short int)); - j = 0; - -#define CHECK_AND_SET_VERTEX(coord) \ - exist1 = EINA_FALSE; \ - for (i = 0, new_stride = 0; (i < vertex_count) && !exist1; i++, new_stride += 10) \ - { \ - if ((k > 0) && !EINA_FLT_EQ(el->p##coord.x, found_vertex[new_stride]) && \ - !EINA_FLT_EQ(el->p##coord.y, found_vertex[new_stride + 1]) && \ - !EINA_FLT_EQ(el->p##coord.z, found_vertex[new_stride + 2])) \ - { \ - exist1 = EINA_TRUE; \ - found_index[3 * k + coord] = i; \ - } \ - } \ - if (!exist1) \ - convex_hull_vertex_set(el, &vertex_count, &found_vertex, \ - &found_index, k, &leader, coord); - - EINA_ARRAY_ITER_NEXT(&arr_ch, k, el, iterator) - { - CHECK_AND_SET_VERTEX(0) - CHECK_AND_SET_VERTEX(1) - CHECK_AND_SET_VERTEX(2) - - j += 30; - } - - for (i = 0; i < 10 * (vertex_count); i++) - eina_inarray_push(vertex, &found_vertex[i]); - - for (i = 0; i < index_count; i++) - eina_inarray_push(index, &found_index[i]); - - free(found_vertex); - - free(found_index); - - EINA_ARRAY_ITER_NEXT(&arr_triangles, k, el, iterator) - { - if (k > 2) - free(el); - } - - free(third_elem); - - EINA_ARRAY_ITER_NEXT(&arr_candidates, k, el_vec3, iterator) - free(el_vec3); - - eina_array_flush(&arr_candidates); - eina_array_flush(&arr_ch); - eina_array_flush(&arr_elems); - eina_array_flush(&arr_triangles); - -#undef CHECK_AND_SET_VERTEX - - return; -} - -static inline void -tangent_space_weighted_sum(Eina_Vector3 *big_t, Eina_Vector3 *little_t, - Evas_Real *big_angle, Evas_Real little_angle) -{ - /* one way to calculate tangent in vertex that is found in many triangles */ - eina_vector3_scale(big_t, big_t, *big_angle / (*big_angle + little_angle)); - eina_vector3_scale(little_t, little_t, little_angle / (*big_angle + little_angle)); - eina_vector3_add(big_t, big_t, little_t); - *big_angle += little_angle; - return; -} - - -static inline Evas_Real -tangent_space_triangle_angle_get(Eina_Vector3 *first, Eina_Vector3 *second, Eina_Vector3 *third) -{ - Eina_Vector3 a, b, c; - Evas_Real cos, arccos; - - eina_vector3_subtract(&a, second, third); - eina_vector3_subtract(&b, third, first); - eina_vector3_subtract(&c, first, second); - - cos = -(eina_vector3_length_square_get(&a) - eina_vector3_length_square_get(&b) - - eina_vector3_length_square_get(&c)) / (2 * eina_vector3_length_get(&b) * - eina_vector3_length_get(&c)); - arccos = acos(cos); - - return arccos; -} - -static inline void -evas_tangent_space_get(float *data, float *tex_data, float *normal_data, unsigned short int *index, int vertex_count, - int index_count, int stride, int tex_stride, int normal_stride, float **tangent) -{ - Eina_Bool if_not_primitive = EINA_FALSE; - Evas_Real big_angle, little_angle; - Evas_Triangle3 triangle; - Eina_Vector2 tex1, tex2, tex3; - Eina_Vector3 big_tangent, little_tangent, normal; - Eina_Quaternion *plain = NULL; - int i, j, k, l, m, found_index = 0; - int indexes[3]; - - if (!tex_data) - { - ERR("Impossible to calculate tangent space, texture coordinates not found %d %s", __LINE__, __FILE__); - return; - } - - if (!(*tangent)) - { - ERR("Failed to allocate memory %d %s", __LINE__, __FILE__); - return; - } - - float *tmp_tangent = (float*) malloc((3 * vertex_count) * sizeof(float)); - if (tmp_tangent == NULL) - { - ERR("Failed to allocate memory %d %s", __LINE__, __FILE__); - return; - } - - if (index_count == 0) - { - if_not_primitive = EINA_TRUE; - index_count = vertex_count; - } - - for (i = 0, j = 0, k = 0; i < vertex_count; i++, j += stride, k += normal_stride) - { - eina_vector3_set(&big_tangent, 0.0, 0.0, 0.0); - big_angle = 0.0; - for (l = 0, m = 0; l < vertex_count; l++, m += stride) - { - /* tangent for vertex is calculating in each triangle in which the vertex is found */ - if ((fabs(data[j] - data[m]) < FLT_EPSILON) && - (fabs(data[j + 1] - data[m + 1]) < FLT_EPSILON) && - (fabs(data[j + 2] - data[m + 2]) < FLT_EPSILON) && - ((m == j) || ((!EINA_FLT_EQ(tex_data[i * tex_stride], 0.0)) && - !EINA_FLT_EQ(tex_data[i * tex_stride + 1], 0.0) && - !EINA_FLT_EQ(tex_data[i * tex_stride], 1.0) && - !EINA_FLT_EQ(tex_data[i * tex_stride + 1], 1.0)))) - { - found_index = l; - for (k = 0; k < index_count; k += 3) - { - /* there is no index count and indexes , for models that are not a primitive, - so we use the vertex count and an ordered array instead of them */ - if (if_not_primitive) - { - indexes[0] = k; - indexes[1] = k + 1; - indexes[2] = k + 2; - } - else - { - indexes[0] = index[k]; - indexes[1] = index[k + 1]; - indexes[2] = index[k + 2]; - } - - if ((found_index == indexes[0]) || - (found_index == indexes[1]) || - (found_index == indexes[2])) - { - eina_vector3_set(&triangle.p0, data[indexes[0] * stride], data[indexes[0] * stride + 1], data[indexes[0] * stride + 2]); - eina_vector3_set(&triangle.p1, data[indexes[1] * stride], data[indexes[1] * stride + 1], data[indexes[1] * stride + 2]); - eina_vector3_set(&triangle.p2, data[indexes[2] * stride], data[indexes[2] * stride + 1], data[indexes[2] * stride + 2]); - if (plain) - free(plain); - plain = malloc(sizeof(Eina_Quaternion)); - - eina_vector3_plane_by_points(plain, &triangle.p0, &triangle.p1, &triangle.p2); - tex1.x = tex_data[indexes[0] * tex_stride]; - tex1.y = tex_data[indexes[0] * tex_stride + 1]; - tex2.x = tex_data[indexes[1] * tex_stride]; - tex2.y = tex_data[indexes[1] * tex_stride + 1]; - tex3.x = tex_data[indexes[2] * tex_stride]; - tex3.y = tex_data[indexes[2] * tex_stride + 1]; - - /* calculate the tangent */ - tangent_new_basis(&little_tangent, &triangle, - &tex1, &tex2, &tex3); - eina_vector3_normalize(&little_tangent, &little_tangent); - - /* founding the angle in triangle in founded vertex */ - if (found_index == indexes[0]) - little_angle = tangent_space_triangle_angle_get(&triangle.p0, &triangle.p1, &triangle.p2); - - else if (found_index == indexes[1]) - little_angle = tangent_space_triangle_angle_get(&triangle.p1, &triangle.p0, &triangle.p2); - - else - little_angle = tangent_space_triangle_angle_get(&triangle.p2, &triangle.p0, &triangle.p1); - - if (evas_triangle3_is_line(&triangle)) - eina_vector3_set(&big_tangent, 1.0, 0.0, 0.0); - - else - tangent_space_weighted_sum(&big_tangent, &little_tangent, &big_angle, little_angle); - } - } - } - } - eina_vector3_set(&normal, normal_data[j], normal_data[j + 1], normal_data[j + 2]); - eina_vector3_orthogonal_projection_on_plane(&big_tangent, &big_tangent, &normal); - eina_vector3_normalize(&big_tangent, &big_tangent); - tmp_tangent[i * 3] = big_tangent.x; - tmp_tangent[i * 3 + 1] = big_tangent.y; - tmp_tangent[i * 3 + 2] = big_tangent.z; - } - - - memcpy(*tangent, tmp_tangent, (3 * vertex_count) * sizeof(float)); - free(tmp_tangent); - free(plain); - - return; -} - -static inline void -calculate_box(Evas_Box3 *box3, int vertex_count, Eina_Vector3 *vertex_position) -{ - int i = 0; - float vxmin, vymin, vzmin, vxmax, vymax, vzmax; - - vxmax = vxmin = vertex_position[0].x; - vymax = vymin = vertex_position[0].y; - vzmax = vzmin = vertex_position[0].z; - - for (i = 1; i < vertex_count; ++i) - { - if (vxmin > vertex_position[i].x) vxmin = vertex_position[i].x; - if (vxmax < vertex_position[i].x) vxmax = vertex_position[i].x; - if (vymin > vertex_position[i].y) vymin = vertex_position[i].y; - if (vymax < vertex_position[i].y) vymax = vertex_position[i].y; - if (vzmin > vertex_position[i].z) vzmin = vertex_position[i].z; - if (vzmax < vertex_position[i].z) vzmax = vertex_position[i].z; - } - evas_box3_set(box3, vxmin, vymin, vzmin, vxmax, vymax, vzmax); -} - -static inline void -calculate_sphere(Evas_Sphere *sphere, int vertex_count, Eina_Vector3 *vertex_position) -{ - float radius = 0.0001f; - Eina_Vector3 center, pos, diff; - float len, alpha, alpha2; - int i, k; - - // shuffle array for averaging algorithms error - for (i = 0; i < vertex_count; i++) - { - k = i + rand()%(vertex_count-i); - pos = vertex_position[i]; - vertex_position[i] = vertex_position[k]; - vertex_position[k] = pos; - } - - center = vertex_position[0]; - - for (k = 0; k < 2; k++) - { - for (i = 0; i < vertex_count; ++i) - { - pos = vertex_position[i]; - eina_vector3_subtract(&diff, &pos, ¢er); - len = eina_vector3_length_get(&diff); - if (len > radius) - { - alpha = len / radius; - alpha2 = alpha * alpha; - radius = 0.5f * (alpha + 1 / alpha) * radius; - eina_vector3_scale(&pos, &pos, 1 - 1 / alpha2); - eina_vector3_scale(¢er, ¢er, (1 + 1 / alpha2)); - eina_vector3_add(¢er, ¢er, &pos); - eina_vector3_scale(¢er, ¢er, 0.5f); - } - } - } - - for (i = 0; i < vertex_count; ++i) - { - pos = vertex_position[i]; - eina_vector3_subtract(&diff, &pos, ¢er); - len = eina_vector3_length_get(&diff); - - if (len > radius) - { - radius = (radius + len) / 2.0f; - eina_vector3_scale(&diff, &diff, (len - radius) / len); - eina_vector3_add(¢er, ¢er, &diff); - } - } - - sphere->radius = radius; - sphere->center = center; -} diff --git a/src/lib/evas/include/evas_common_private.h b/src/lib/evas/include/evas_common_private.h index b2d63476a2..0190b27163 100644 --- a/src/lib/evas/include/evas_common_private.h +++ b/src/lib/evas/include/evas_common_private.h @@ -85,9 +85,6 @@ #define lround(x) (((x) < 0) ? (long int)ceil((x) - 0.5) : (long int)floor((x) + 0.5)) #endif -/*macro to be used in eet loader/saver*/ -#define EVAS_CANVAS3D_FILE_CACHE_FILE_ENTRY "evas_3d file" - /* macros needed to log message through eina_log */ extern EAPI int _evas_log_dom_global; #ifdef _EVAS_DEFAULT_LOG_DOM diff --git a/src/lib/evas/include/evas_inline.x b/src/lib/evas/include/evas_inline.x index a67616e47c..9905d49f28 100644 --- a/src/lib/evas/include/evas_inline.x +++ b/src/lib/evas/include/evas_inline.x @@ -166,7 +166,7 @@ evas_object_is_source_invisible(Evas_Object *eo_obj EINA_UNUSED, Evas_Object_Pro { if (obj->parent_cache.src_invisible_valid) return obj->parent_cache.src_invisible; - if ((obj->proxy->proxies || obj->proxy->proxy_textures) && obj->proxy->src_invisible) return 1; + if (obj->proxy->proxies && obj->proxy->src_invisible) return 1; if (!obj->smart.parent) return 0; if (obj->mask->is_mask) return 0; Evas_Object_Protected_Data *smart_parent_pd = diff --git a/src/lib/evas/include/evas_private.h b/src/lib/evas/include/evas_private.h index 3aa70bf3f8..036ef71ca9 100644 --- a/src/lib/evas/include/evas_private.h +++ b/src/lib/evas/include/evas_private.h @@ -15,8 +15,6 @@ #include "../file/evas_module.h" #include "../file/evas_path.h" -#include "evas_3d_utils.h" - #ifdef EAPI # undef EAPI @@ -84,7 +82,6 @@ typedef struct _Evas_Object_Proxy_Data Evas_Object_Proxy_Data; typedef struct _Evas_Object_Map_Data Evas_Object_Map_Data; typedef struct _Evas_Object_Events_Data Evas_Object_Events_Data; typedef struct _Evas_Proxy_Render_Data Evas_Proxy_Render_Data; -typedef struct _Evas_Object_3D_Data Evas_Object_3D_Data; typedef struct _Evas_Object_Mask_Data Evas_Object_Mask_Data; typedef struct _Evas_Object_Pointer_Data Evas_Object_Pointer_Data; @@ -104,405 +101,10 @@ typedef struct _Evas_Pointer_Data Evas_Pointer_Data; typedef struct _Evas_Filter_Command Evas_Filter_Command; typedef enum _Evas_Filter_Support Evas_Filter_Support; -// 3D stuff - -#define EVAS_CANVAS3D_VERTEX_ATTRIB_COUNT 5 -#define EVAS_CANVAS3D_MATERIAL_ATTRIB_COUNT 5 - -typedef struct _Evas_Canvas3D_Object Evas_Canvas3D_Object_Data; -typedef struct _Evas_Canvas3D_Scene_Public_Data Evas_Canvas3D_Scene_Public_Data; -typedef struct _Evas_Canvas3D_Vertex_Buffer Evas_Canvas3D_Vertex_Buffer; -typedef struct _Evas_Canvas3D_Mesh_Frame Evas_Canvas3D_Mesh_Frame; -typedef struct _Evas_Canvas3D_Node_Mesh Evas_Canvas3D_Node_Mesh; -typedef struct _Evas_Canvas3D_Object_Func Evas_Canvas3D_Object_Func; -typedef struct _Evas_Canvas3D_Pick_Data Evas_Canvas3D_Pick_Data; -typedef struct _Evas_Canvas3D_Interpolate_Vertex_Buffer Evas_Canvas3D_Interpolate_Vertex_Buffer; - -typedef struct _Evas_Canvas3D_Scene Evas_Canvas3D_Scene_Data; -typedef struct _Evas_Canvas3D_Node Evas_Canvas3D_Node_Data; -typedef struct _Evas_Canvas3D_Mesh Evas_Canvas3D_Mesh_Data; -typedef struct _Evas_Canvas3D_Camera Evas_Canvas3D_Camera_Data; -typedef struct _Evas_Canvas3D_Light Evas_Canvas3D_Light_Data; -typedef struct _Evas_Canvas3D_Material Evas_Canvas3D_Material_Data; -typedef struct _Evas_Canvas3D_Texture Evas_Canvas3D_Texture_Data; -typedef struct _Evas_Canvas3D_Primitive Evas_Canvas3D_Primitive_Data; - -/* Structs for mesh eet saver/loader */ -typedef struct _Evas_Canvas3D_Vec2_Eet Evas_Canvas3D_Vec2_Eet; -typedef struct _Evas_Canvas3D_Vec3_Eet Evas_Canvas3D_Vec3_Eet; -typedef struct _Evas_Canvas3D_Vertex_Eet Evas_Canvas3D_Vertex_Eet; -typedef struct _Evas_Canvas3D_Geometry_Eet Evas_Canvas3D_Geometry_Eet; -typedef struct _Evas_Canvas3D_Color_Eet Evas_Canvas3D_Color_Eet; -typedef struct _Evas_Canvas3D_Material_Eet Evas_Canvas3D_Material_Eet; -typedef struct _Evas_Canvas3D_Frame_Eet Evas_Canvas3D_Frame_Eet; -typedef struct _Evas_Canvas3D_Mesh_Eet Evas_Canvas3D_Mesh_Eet; -typedef struct _Evas_Canvas3D_Header_Eet Evas_Canvas3D_Header_Eet; -typedef struct _Evas_Canvas3D_File_Eet Evas_Canvas3D_File_Eet; - typedef struct _Vg_File_Data Vg_File_Data; typedef struct _Vg_File_Anim_Data Vg_File_Anim_Data; typedef struct _Vg_File_Anim_Data_Marker Vg_File_Anim_Data_Marker; -struct _Evas_Canvas3D_Vec2_Eet -{ - float x; - float y; -}; - -struct _Evas_Canvas3D_Vec3_Eet -{ - float x; - float y; - float z; -}; - -struct _Evas_Canvas3D_Vertex_Eet -{ - Evas_Canvas3D_Vec3_Eet position; - Evas_Canvas3D_Vec3_Eet normal; - Evas_Canvas3D_Vec2_Eet texcoord; -};//one point of mesh - -struct _Evas_Canvas3D_Geometry_Eet -{ - unsigned int id; - int vertices_count; - Evas_Canvas3D_Vertex_Eet *vertices; -};//contain array of vertices and id for using in Evas_Canvas3D_Frame_Eet in future - -struct _Evas_Canvas3D_Color_Eet -{ - float r; - float g; - float b; - float a; -}; - -struct _Evas_Canvas3D_Material_Eet -{ - int id; - float shininess; - int colors_count; - Evas_Canvas3D_Color_Eet *colors;//Color per attribute (ambient, diffuse, specular etc.) -}; - -struct _Evas_Canvas3D_Frame_Eet -{ - int id; - int geometry_id; - int material_id; -};//only ids to prevent of spending of memory when animation will change only geometry or only material - -struct _Evas_Canvas3D_Mesh_Eet -{ - int materials_count; - int frames_count; - int geometries_count; - Evas_Canvas3D_Material_Eet *materials; - Evas_Canvas3D_Frame_Eet *frames; - Evas_Canvas3D_Geometry_Eet *geometries; -};//contain materials, geometries and bounding between it (frames) - -struct _Evas_Canvas3D_Header_Eet -{ - int version; - int *materials;//colors_count - int materials_count; - int *geometries;//vertices_count - int geometries_count; - int frames; -};//can be use for fast allocating of memory - -struct _Evas_Canvas3D_File_Eet -{ - Evas_Canvas3D_Mesh_Eet *mesh; - Evas_Canvas3D_Header_Eet *header; -};//contain mesh data and information about mesh size - -typedef Eina_Bool (*Evas_Canvas3D_Node_Func)(Evas_Canvas3D_Node *, void *data); - - -typedef enum _Evas_Canvas3D_Node_Traverse_Type -{ - EVAS_CANVAS3D_NODE_TRAVERSE_DOWNWARD, - EVAS_CANVAS3D_NODE_TRAVERSE_UPWARD, -} Evas_Canvas3D_Node_Traverse_Type; - -typedef enum _Evas_Canvas3D_Tree_Traverse_Type -{ - EVAS_CANVAS3D_TREE_TRAVERSE_PRE_ORDER, - EVAS_CANVAS3D_TREE_TRAVERSE_ANY_ORDER = EVAS_CANVAS3D_TREE_TRAVERSE_PRE_ORDER, - EVAS_CANVAS3D_TREE_TRAVERSE_POST_ORDER, - EVAS_CANVAS3D_TREE_TRAVERSE_LEVEL_ORDER, -} Evas_Canvas3D_Tree_Traverse_Type; - - -struct _Evas_Canvas3D_Object -{ - Evas *evas; - Evas_Canvas3D_Object_Type type; - - Eina_Bool dirty[EVAS_CANVAS3D_STATE_MAX]; -}; - -struct _Evas_Canvas3D_Scene -{ - Evas_Canvas3D_Node *root_node; - Evas_Canvas3D_Node *camera_node; - Evas_Color bg_color; - Eina_Bool shadows_enabled :1; - Eina_Bool color_pick_enabled :1; - - void *surface; - int w, h; - Eina_List *images; - - Eina_Hash *node_mesh_colors; - Eina_Hash *colors_node_mesh; - /*sets constant for shadow rendering*/ - Evas_Real depth_offset; - Evas_Real depth_constant; -}; - -struct _Evas_Canvas3D_Node_Mesh -{ - Evas_Canvas3D_Node *node; - Evas_Canvas3D_Mesh *mesh; - int frame; -}; - -struct _Evas_Canvas3D_Node -{ - Eina_List *members; - Evas_Canvas3D_Node *parent; - Evas_Canvas3D_Node *billboard_target; - - Eina_Vector3 position; - Eina_Quaternion orientation; - Eina_Vector3 scale; - - Eina_Vector3 position_world; - Eina_Quaternion orientation_world; - Eina_Vector3 scale_world; - - Evas_Box3 aabb; - Evas_Box3 obb; - Evas_Sphere bsphere; - - Evas_Canvas3D_Node_Type type; - - /* Camera node. */ - union { - struct { - Evas_Canvas3D_Camera *camera; - Eina_Matrix4 matrix_world_to_eye; - } camera; - - struct { - Evas_Canvas3D_Light *light; - Eina_Matrix4 matrix_local_to_world; - } light; - - struct { - Eina_List *meshes; - Eina_Hash *node_meshes; - Eina_Matrix4 matrix_local_to_world; - } mesh; - } data; - - /* Scene using this node as root. */ - Eina_Hash *scenes_root; - - /* Scene using this node as camera. */ - Eina_Hash *scenes_camera; - - Eina_Bool position_inherit : 1; - Eina_Bool orientation_inherit : 1; - Eina_Bool scale_inherit : 1; - Eina_Bool lod : 1; -}; - -struct _Evas_Canvas3D_Camera -{ - Eina_Matrix4 projection; - Eina_Hash *nodes; -}; - -struct _Evas_Canvas3D_Light -{ - Evas_Color ambient; - Evas_Color diffuse; - Evas_Color specular; - - Eina_Bool directional; - Evas_Real spot_exp; - Evas_Real spot_cutoff; - Evas_Real spot_cutoff_cos; - - Eina_Bool enable_attenuation; - Evas_Real atten_const; - Evas_Real atten_linear; - Evas_Real atten_quad; - Eina_Matrix4 projection; - - Eina_Hash *nodes; -}; - -struct _Evas_Canvas3D_Vertex_Buffer -{ - int element_count; - int stride; - void *data; - int size; - Eina_Bool owns_data; - Eina_Bool mapped; -}; - -struct _Evas_Canvas3D_Interpolate_Vertex_Buffer -{ - void *data0; - int stride0; - int size0; - - void *data1; - int stride1; - int size1; - - Evas_Real weight; -}; - -struct _Evas_Canvas3D_Mesh_Frame -{ - Evas_Canvas3D_Mesh *mesh; - - int frame; - Evas_Canvas3D_Material *material; - Evas_Box3 aabb; - - Evas_Canvas3D_Vertex_Buffer vertices[EVAS_CANVAS3D_VERTEX_ATTRIB_COUNT]; -}; - -struct _Evas_Canvas3D_Mesh -{ - Evas_Canvas3D_Shader_Mode shader_mode; - - int vertex_count; - int frame_count; - Eina_List *frames; - - Evas_Canvas3D_Index_Format index_format; - int index_count; - void *indices; - int index_size; - Eina_Bool owns_indices; - Eina_Bool index_mapped; - - Evas_Canvas3D_Vertex_Assembly assembly; - - Eina_Hash *nodes; - Eina_Bool shadowed; - - Eina_Bool blending :1; - Evas_Canvas3D_Blend_Func blend_sfactor; - Evas_Canvas3D_Blend_Func blend_dfactor; - - Evas_Canvas3D_Comparison alpha_comparison; - Evas_Real alpha_ref_value; - Eina_Bool alpha_test_enabled :1; - - Evas_Color fog_color; - Eina_Bool fog_enabled :1; - Evas_Color color_pick_key; - Eina_Bool color_pick_enabled :1; - /*sets of the quality and offsets for shadow rendering*/ - int shadows_edges_filtering_level; - Evas_Real shadows_edges_size; - Evas_Real shadows_constant_bias; - Evas_Real near_lod_boundary; - Evas_Real far_lod_boundary; -}; - -struct _Evas_Canvas3D_Texture -{ - /* List of materials using this texture. */ - Eina_Hash *materials; - - /* Proxy data. */ - Evas_Object *source; - Eina_Bool proxy_rendering; - void *proxy_surface; - /* Engine-side object. */ - void *engine_data; - - Eina_File *f; - const char *key; - - /*Use atlases, @EINA_TRUE by default*/ - Eina_Bool atlas_enable :1; -}; - -struct _Evas_Canvas3D_Material -{ - struct { - Eina_Bool enable; - Evas_Color color; - Evas_Canvas3D_Texture *texture; - } attribs[EVAS_CANVAS3D_MATERIAL_ATTRIB_COUNT]; - - Evas_Real shininess; - - Eina_Hash *meshes; -}; - -struct _Evas_Canvas3D_Primitive -{ - Evas_Canvas3D_Mesh_Primitive form; - Evas_Canvas3D_Primitive_Mode mode; - Evas_Real ratio; - int precision; - Evas_Canvas3D_Surface_Func *surface; - - Eina_Vector2 tex_scale; -}; - -struct _Evas_Canvas3D_Scene_Public_Data -{ - Evas_Color bg_color; - Evas_Canvas3D_Node *camera_node; - Eina_List *light_nodes; - Eina_List *mesh_nodes; - Eina_Bool shadows_enabled :1; - Eina_Bool color_pick_enabled :1; - Eina_Hash *node_mesh_colors; - Eina_Hash *colors_node_mesh; - - /*sets constant for shadow rendering*/ - Evas_Real depth_offset; - Evas_Real depth_constant; - Eina_Bool render_to_texture; - - unsigned int lod_distance; - - Eina_Bool post_processing :1; - Evas_Canvas3D_Shader_Mode post_processing_type; -}; - -struct _Evas_Canvas3D_Pick_Data -{ - /* Input */ - Evas_Real x, y; - Eina_Matrix4 matrix_vp; - Evas_Ray3 ray_world; - - /* Output */ - Eina_Bool picked; - Evas_Real z; - Evas_Canvas3D_Node *node; - Evas_Canvas3D_Mesh *mesh; - Evas_Real u, v; - Evas_Real s, t; -}; - /* General types - used for script type chceking */ #define OPAQUE_TYPE(type) struct __##type { int a; }; \ typedef struct __##type type @@ -1005,7 +607,6 @@ struct _Evas_Map struct _Evas_Object_Proxy_Data { Eina_List *proxies; - Eina_List *proxy_textures; void *surface; int w,h; Eina_List *src_event_in; @@ -1033,12 +634,6 @@ struct _Evas_Object_Map_Data RGBA_Map *spans; }; -struct _Evas_Object_3D_Data -{ - void *surface; - int w, h; -}; - // Mask clipper information struct _Evas_Object_Mask_Data { @@ -1142,7 +737,6 @@ struct _Evas_Object_Protected_Data // Eina_Cow pointer be careful when writing to it const Evas_Object_Proxy_Data *proxy; const Evas_Object_Map_Data *map; - const Evas_Object_3D_Data *data_3d; const Evas_Object_Mask_Data *mask; const Evas_Object_Events_Data *events; @@ -1490,29 +1084,6 @@ struct _Evas_Func void (*context_flush) (void *engine); - /* 3D features */ - void *(*drawable_new) (void *engine, int w, int h, int alpha); - void (*drawable_free) (void *engine, void *drawable); - void (*drawable_size_get) (void *engine, void *drawable, int *w, int *h); - void *(*image_drawable_set) (void *engine, void *image, void *drawable); - void (*drawable_texture_rendered_pixels_get) (unsigned int tex, int x, int y, int w, int h, void *drawable EINA_UNUSED, void *data); - void (*drawable_scene_render) (void *engine, void *data, void *drawable, void *scene_data); - Eina_Bool (*drawable_scene_render_to_texture) (void *engine, void *drawable, void *scene_data); - - int (*drawable_texture_color_pick_id_get) (void *drawable); - int (*drawable_texture_target_id_get) (void *drawable); - void (*drawable_texture_pixel_color_get) (unsigned int tex EINA_UNUSED, int x, int y, Evas_Color *color, void *drawable); - - void *(*texture_new) (void *engine, Eina_Bool use_atlas); - void (*texture_free) (void *engine, void *texture); - void (*texture_size_get) (void *engine, void *texture, int *w, int *h); - void (*texture_wrap_set) (void *engine, void *texture, Evas_Canvas3D_Wrap_Mode s, Evas_Canvas3D_Wrap_Mode t); - void (*texture_wrap_get) (void *engine, void *texture, Evas_Canvas3D_Wrap_Mode *s, Evas_Canvas3D_Wrap_Mode *t); - void (*texture_filter_set) (void *engine, void *texture, Evas_Canvas3D_Texture_Filter min, Evas_Canvas3D_Texture_Filter mag); - void (*texture_filter_get) (void *engine, void *texture, Evas_Canvas3D_Texture_Filter *min, Evas_Canvas3D_Texture_Filter *mag); - void (*texture_image_set) (void *engine, void *texture, void *image); - void *(*texture_image_get) (void *engine, void *texture); - Ector_Surface *(*ector_create) (void *engine); void (*ector_destroy) (void *engine, Ector_Surface *surface); Ector_Buffer *(*ector_buffer_wrap) (void *engine, Evas *e, void *engine_image); @@ -1730,61 +1301,6 @@ Eina_Bool _efl_canvas_object_efl_gfx_entity_size_set_block(Eo *eo_obj, Evas_Obje void _evas_focus_device_invalidate_cb(void *data, const Efl_Event *ev); -/* Node functions. */ -void evas_canvas3d_node_traverse(Evas_Canvas3D_Node *from, Evas_Canvas3D_Node *to, Evas_Canvas3D_Node_Traverse_Type type, Eina_Bool skip, Evas_Canvas3D_Node_Func func, void *data); -void evas_canvas3d_node_tree_traverse(Evas_Canvas3D_Node *root, Evas_Canvas3D_Tree_Traverse_Type type, Eina_Bool skip, Evas_Canvas3D_Node_Func func, void *data); -Eina_Bool evas_canvas3d_node_mesh_collect(Evas_Canvas3D_Node *node, void *data); -Eina_Bool evas_canvas3d_node_color_node_mesh_collect(Evas_Canvas3D_Node *node, void *data); -Eina_Bool evas_canvas3d_node_light_collect(Evas_Canvas3D_Node *node, void *data); -void evas_canvas3d_node_scene_root_add(Evas_Canvas3D_Node *node, Evas_Canvas3D_Scene *scene); -void evas_canvas3d_node_scene_root_del(Evas_Canvas3D_Node *node, Evas_Canvas3D_Scene *scene); -void evas_canvas3d_node_scene_camera_add(Evas_Canvas3D_Node *node, Evas_Canvas3D_Scene *scene); -void evas_canvas3d_node_scene_camera_del(Evas_Canvas3D_Node *node, Evas_Canvas3D_Scene *scene); -Eina_Bool node_aabb_update(Evas_Canvas3D_Node *node, void *data EINA_UNUSED); - -/* Camera functions. */ -void evas_canvas3d_camera_node_add(Evas_Canvas3D_Camera *camera, Evas_Canvas3D_Node *node); -void evas_canvas3d_camera_node_del(Evas_Canvas3D_Camera *camera, Evas_Canvas3D_Node *node); - -/* Light functions. */ -void evas_canvas3d_light_node_add(Evas_Canvas3D_Light *light, Evas_Canvas3D_Node *node); -void evas_canvas3d_light_node_del(Evas_Canvas3D_Light *light, Evas_Canvas3D_Node *node); - -/* Mesh functions. */ -void evas_canvas3d_mesh_node_add(Evas_Canvas3D_Mesh *mesh, Evas_Canvas3D_Node *node); -void evas_canvas3d_mesh_node_del(Evas_Canvas3D_Mesh *mesh, Evas_Canvas3D_Node *node); -void evas_canvas3d_mesh_interpolate_position_get(Eina_Vector3 *out, const Evas_Canvas3D_Vertex_Buffer *pos0, const Evas_Canvas3D_Vertex_Buffer *pos1, Evas_Real weight, int index); -void evas_canvas3d_mesh_interpolate_vertex_buffer_get(Evas_Canvas3D_Mesh *mesh, int frame, Evas_Canvas3D_Vertex_Attrib attrib, Evas_Canvas3D_Vertex_Buffer *buffer0, Evas_Canvas3D_Vertex_Buffer *buffer1, Evas_Real *weight); -void evas_canvas3d_mesh_file_md2_set(Evas_Canvas3D_Mesh *mesh, const char *file); -void evas_canvas3d_mesh_save_obj(Evas_Canvas3D_Mesh *mesh, const char *file, Evas_Canvas3D_Mesh_Frame *f); -void evas_canvas3d_mesh_file_obj_set(Evas_Canvas3D_Mesh *mesh, const char *file); -Eina_Bool evas_canvas3d_mesh_aabb_add_to_frame(Evas_Canvas3D_Mesh_Data *pd, int frame, int stride); -void evas_canvas3d_mesh_file_eet_set(Evas_Canvas3D_Mesh *mesh, const char *file); -void evas_canvas3d_mesh_save_eet(Evas_Canvas3D_Mesh *mesh, const char *file, Evas_Canvas3D_Mesh_Frame *f); -void evas_canvas3d_mesh_file_ply_set(Evas_Canvas3D_Mesh *mesh, const char *file); -void evas_canvas3d_mesh_save_ply(Evas_Canvas3D_Mesh *mesh, const char *file, Evas_Canvas3D_Mesh_Frame *f); - -/* Texture functions. */ -void evas_canvas3d_texture_material_add(Evas_Canvas3D_Texture *texture, Evas_Canvas3D_Material *material); -void evas_canvas3d_texture_material_del(Evas_Canvas3D_Texture *texture, Evas_Canvas3D_Material *material); - - -/* Material functions. */ -void evas_canvas3d_material_mesh_add(Evas_Canvas3D_Material *material, Evas_Canvas3D_Mesh *mesh); -void evas_canvas3d_material_mesh_del(Evas_Canvas3D_Material *material, Evas_Canvas3D_Mesh *mesh); - -/* Scene functions. */ -void evas_canvas3d_scene_data_init(Evas_Canvas3D_Scene_Public_Data *data); -void evas_canvas3d_scene_data_fini(Evas_Canvas3D_Scene_Public_Data *data); - -/* Eet saver/loader functions */ -Evas_Canvas3D_File_Eet *_evas_canvas3d_eet_file_new(void); -Eet_Data_Descriptor* _evas_canvas3d_eet_file_get(); -void _evas_canvas3d_eet_file_init(); -void _evas_canvas3d_eet_descriptor_shutdown(); -void _evas_canvas3d_eet_file_free(Evas_Canvas3D_File_Eet* eet_file); - - /* Filters */ void evas_filter_init(void); void evas_filter_shutdown(void); @@ -1797,29 +1313,6 @@ void _efl_gfx_mapping_update(Eo *eo_obj); /* Ector */ Ector_Surface *evas_ector_get(Evas_Public_Data *evas); -/* Temporary save/load functions */ -void evas_common_load_model_from_file(Evas_Canvas3D_Mesh *model, const char *file); -void evas_common_load_model_from_eina_file(Evas_Canvas3D_Mesh *model, const Eina_File *file); -void evas_common_save_model_to_file(const Evas_Canvas3D_Mesh *model, const char *file, Evas_Canvas3D_Mesh_Frame *f); -void evas_model_load_file_eet(Evas_Canvas3D_Mesh *mesh, Eina_File *file); -void evas_model_load_file_md2(Evas_Canvas3D_Mesh *mesh, Eina_File *file); -void evas_model_load_file_obj(Evas_Canvas3D_Mesh *mesh, Eina_File *file); -void evas_model_load_file_ply(Evas_Canvas3D_Mesh *mesh, Eina_File *file); -void evas_model_save_file_eet(const Evas_Canvas3D_Mesh *mesh, const char *file, Evas_Canvas3D_Mesh_Frame *f); -void evas_model_save_file_obj(const Evas_Canvas3D_Mesh *mesh, const char *file, Evas_Canvas3D_Mesh_Frame *f); -void evas_model_save_file_ply(const Evas_Canvas3D_Mesh *mesh, const char *file, Evas_Canvas3D_Mesh_Frame *f); - -/* Primitives functions */ -void evas_common_set_model_from_primitive(Evas_Canvas3D_Mesh *model, int frame, Evas_Canvas3D_Primitive_Data *primitive); -void evas_model_set_from_square_primitive(Evas_Canvas3D_Mesh *mesh, int frame); -void evas_model_set_from_cube_primitive(Evas_Canvas3D_Mesh *mesh, int frame); -void evas_model_set_from_cylinder_primitive(Evas_Canvas3D_Mesh *mesh, int frame, Evas_Canvas3D_Primitive_Mode mode, int precision, Eina_Vector2 tex_scale); -void evas_model_set_from_cone_primitive(Evas_Canvas3D_Mesh *mesh, int frame, Evas_Canvas3D_Primitive_Mode mode, int precision, Eina_Vector2 tex_scale); -void evas_model_set_from_sphere_primitive(Evas_Canvas3D_Mesh *mesh, int frame, Evas_Canvas3D_Primitive_Mode mode, int precision, Eina_Vector2 tex_scale); -void evas_model_set_from_torus_primitive(Evas_Canvas3D_Mesh *mesh, int frame, Evas_Real ratio, int precision, Eina_Vector2 tex_scale); -void evas_model_set_from_surface_primitive(Evas_Canvas3D_Mesh *mesh, int frame, Evas_Canvas3D_Surface_Func func, int precision, Eina_Vector2 tex_scale); -void evas_model_set_from_terrain_primitive(Evas_Canvas3D_Mesh *mesh, int frame, int precision, Eina_Vector2 tex_scale); - /* Filter functions */ Eina_Bool evas_filter_object_render(Eo *eo_obj, Evas_Object_Protected_Data *obj, void *engine, void *output, void *context, void *surface, int x, int y, Eina_Bool do_async, Eina_Bool alpha); @@ -1963,8 +1456,6 @@ extern Eina_Cow *evas_object_proxy_cow; extern Eina_Cow *evas_object_map_cow; extern Eina_Cow *evas_object_state_cow; -extern Eina_Cow *evas_object_3d_cow; - extern Eina_Cow *evas_object_image_pixels_cow; extern Eina_Cow *evas_object_image_load_opts_cow; extern Eina_Cow *evas_object_image_state_cow; diff --git a/src/lib/evas/meson.build b/src/lib/evas/meson.build index 94f81ae0a5..a83a5e73e0 100644 --- a/src/lib/evas/meson.build +++ b/src/lib/evas/meson.build @@ -47,10 +47,6 @@ evas_vg_loaders_file = [ evas_vg_savers_file = ['eet', 'svg'] -evas_model_savers_file = ['eet', 'obj', 'ply'] - -evas_model_loaders_file = ['eet', 'md2', 'obj', 'ply'] - rel_evas_modules = join_paths('..', '..', '..', 'modules', 'evas', 'engines', 'software_generic') evas_deps = [eo, eet, eina, efl, emile, ector, ecore, buildsystem, intl] pub_eo_file_target = [] @@ -130,8 +126,6 @@ evas_header_src = [ evas_include_directories += [ include_directories('.'), include_directories('common'), - include_directories('common3d'), - include_directories(join_paths('common3d', 'save_load')), include_directories('include'), include_directories('filters'), vg_common_inc_dir @@ -181,7 +175,6 @@ subdir('canvas') subdir('gesture') subdir('filters') subdir('cache') -subdir('common3d') subdir('file') subdir('vg') @@ -286,22 +279,6 @@ foreach loader : evas_vg_savers_file endif endforeach -foreach loader : evas_model_loaders_file - file = join_paths(meson.source_root(), 'src', 'modules', 'evas', 'model_loaders', loader, 'evas_model_load_'+loader+'.c') - - evas_static_list += [declare_dependency( - sources: file, - )] -endforeach - -foreach loader : evas_model_savers_file - file = join_paths(meson.source_root(), 'src', 'modules', 'evas', 'model_savers', loader, 'evas_model_save_'+loader+'.c') - - evas_static_list += [declare_dependency( - sources: file, - )] -endforeach - evas_lib = library('evas', include_directories: evas_include_directories + [vg_common_inc_dir], sources : [evas_src, pub_eo_file_target, priv_eo_file_target], diff --git a/src/modules/evas/engines/gl_common/evas_gl_3d.c b/src/modules/evas/engines/gl_common/evas_gl_3d.c deleted file mode 100644 index 83cc0738ee..0000000000 --- a/src/modules/evas/engines/gl_common/evas_gl_3d.c +++ /dev/null @@ -1,1494 +0,0 @@ -#include "evas_gl_private.h" -#include "evas_gl_3d_private.h" - -#define CHECK_LOD_DISTANCE \ - if (pd_mesh_node->lod) \ - { \ - if (pdmesh->near_lod_boundary > data->lod_distance) \ - continue; \ - else if ((pdmesh->near_lod_boundary < data->lod_distance) && \ - (pdmesh->far_lod_boundary < data->lod_distance)) \ - continue; \ - } - -#define RENDER_MESH_NODE_ITERATE_BEGIN(param) \ - Eina_Matrix4 matrix_mv; \ - Eina_Matrix4 matrix_mvp; \ - Eina_Iterator *it; \ - void *ptr; \ - eina_matrix4_multiply(&matrix_mv, matrix_##param, &pd_mesh_node->data.mesh.matrix_local_to_world); \ - eina_matrix4_multiply(&matrix_mvp, &pd->projection, &matrix_mv); \ - it = eina_hash_iterator_data_new(pd_mesh_node->data.mesh.node_meshes); \ - while (eina_iterator_next(it, &ptr)) \ - { \ - Evas_Canvas3D_Node_Mesh *nm = (Evas_Canvas3D_Node_Mesh *)ptr; \ - Evas_Canvas3D_Mesh_Data *pdmesh = efl_data_scope_get(nm->mesh, EVAS_CANVAS3D_MESH_CLASS); \ - CHECK_LOD_DISTANCE - -#define RENDER_MESH_NODE_ITERATE_END \ - } \ - eina_iterator_free(it); - -void -e3d_texture_param_update(E3D_Texture *texture) -{ - if (texture->wrap_dirty) - { - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, texture->wrap_s); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, texture->wrap_t); - texture->wrap_dirty = EINA_FALSE; - } - - if (texture->filter_dirty) - { - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, texture->filter_min); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, texture->filter_mag); - texture->filter_dirty = EINA_FALSE; - } -} - -E3D_Texture * -e3d_texture_new(Eina_Bool use_atlas) -{ - E3D_Texture *texture = NULL; - - texture = (E3D_Texture *)malloc(sizeof(E3D_Texture)); - - if (texture == NULL) - { - ERR("Failed to allocate memory."); - return NULL; - } - - eina_matrix3_identity(&texture->trans); - - texture->w = 0; - texture->h = 0; - texture->x = 0; - texture->y = 0; - - texture->tex = 0; - - texture->wrap_dirty = EINA_TRUE; - texture->wrap_s = GL_CLAMP_TO_EDGE; - texture->wrap_t = GL_CLAMP_TO_EDGE; - - texture->filter_dirty = EINA_TRUE; - texture->filter_min = GL_NEAREST; - texture->filter_mag = GL_NEAREST; - - texture->atlas_enable = use_atlas; - - return texture; -} - -void -e3d_texture_free(E3D_Texture *texture) -{ - if (texture) - { - if (texture->surface) - evas_gl_common_image_unref(texture->surface); - } - free(texture); -} - -void -e3d_texture_size_get(const E3D_Texture *texture, int *w, int *h) -{ - if (w) *w = texture->w; - if (h) *h = texture->h; -} - -void -e3d_texture_set(Evas_Engine_GL_Context *gc, - E3D_Texture *texture, - Evas_GL_Image *im) -{ - Eina_Matrix3 pt,st; - Evas_Real pt_x, pt_y, st_x, st_y; - - texture->surface = im; - evas_gl_common_image_ref(im); - im->disable_atlas = !texture->atlas_enable; - evas_gl_common_image_update(gc, im); - - texture->tex = im->tex->pt->texture; - texture->w = im->w; - texture->h = im->h; - texture->x = im->tex->x; - texture->y = im->tex->y; - if (texture->atlas_enable) - { - pt_x = im->tex->pt->w ? (im->tex->x/(Evas_Real)im->tex->pt->w) : 0; - pt_y = im->tex->pt->h ? (im->tex->y/(Evas_Real)im->tex->pt->h) : 0; - - st_x = im->tex->pt->w ? (im->w/(Evas_Real)im->tex->pt->w) : 1.0; - st_y = im->tex->pt->h ? (im->h/(Evas_Real)im->tex->pt->h) : 1.0; - /*Build adjusting matrix for texture unit coordinates*/ - eina_matrix3_position_transform_set(&pt, pt_x, pt_y); - eina_matrix3_scale_transform_set(&st, st_x, st_y); - eina_matrix3_multiply(&texture->trans, &pt, &st); - } -} - -Evas_GL_Image * -e3d_texture_get(E3D_Texture *texture) -{ - return texture ? texture->surface : NULL; -} - -static inline GLenum -_to_gl_texture_wrap(Evas_Canvas3D_Wrap_Mode wrap) -{ - switch (wrap) - { - case EVAS_CANVAS3D_WRAP_MODE_CLAMP: - return GL_CLAMP_TO_EDGE; - case EVAS_CANVAS3D_WRAP_MODE_REFLECT: - return GL_MIRRORED_REPEAT; - case EVAS_CANVAS3D_WRAP_MODE_REPEAT: - return GL_REPEAT; - default: - break; - } - - ERR("Invalid texture wrap mode."); - return GL_CLAMP_TO_EDGE; -} - -static inline Evas_Canvas3D_Wrap_Mode -_to_e3d_texture_wrap(GLenum wrap) -{ - switch (wrap) - { - case GL_CLAMP_TO_EDGE: - return EVAS_CANVAS3D_WRAP_MODE_CLAMP; - case GL_MIRRORED_REPEAT: - return EVAS_CANVAS3D_WRAP_MODE_REFLECT; - case GL_REPEAT: - return EVAS_CANVAS3D_WRAP_MODE_REPEAT; - default: - break; - } - - ERR("Invalid texture wrap mode."); - return EVAS_CANVAS3D_WRAP_MODE_CLAMP; -} - -static inline GLenum -_to_gl_texture_filter(Evas_Canvas3D_Texture_Filter filter) -{ - switch (filter) - { - case EVAS_CANVAS3D_TEXTURE_FILTER_NEAREST: - return GL_NEAREST; - case EVAS_CANVAS3D_TEXTURE_FILTER_LINEAR: - return GL_LINEAR; - case EVAS_CANVAS3D_TEXTURE_FILTER_NEAREST_MIPMAP_NEAREST: - return GL_NEAREST_MIPMAP_NEAREST; - case EVAS_CANVAS3D_TEXTURE_FILTER_NEAREST_MIPMAP_LINEAR: - return GL_NEAREST_MIPMAP_LINEAR; - case EVAS_CANVAS3D_TEXTURE_FILTER_LINEAR_MIPMAP_NEAREST: - return GL_LINEAR_MIPMAP_NEAREST; - case EVAS_CANVAS3D_TEXTURE_FILTER_LINEAR_MIPMAP_LINEAR: - return GL_LINEAR_MIPMAP_LINEAR; - default: - break; - } - - ERR("Invalid texture wrap mode."); - return GL_NEAREST; -} - -static inline Evas_Canvas3D_Texture_Filter -_to_e3d_texture_filter(GLenum filter) -{ - switch (filter) - { - case GL_NEAREST: - return EVAS_CANVAS3D_TEXTURE_FILTER_NEAREST; - case GL_LINEAR: - return EVAS_CANVAS3D_TEXTURE_FILTER_LINEAR; - case GL_NEAREST_MIPMAP_NEAREST: - return EVAS_CANVAS3D_TEXTURE_FILTER_NEAREST_MIPMAP_NEAREST; - case GL_NEAREST_MIPMAP_LINEAR: - return EVAS_CANVAS3D_TEXTURE_FILTER_NEAREST_MIPMAP_LINEAR; - case GL_LINEAR_MIPMAP_NEAREST: - return EVAS_CANVAS3D_TEXTURE_FILTER_LINEAR_MIPMAP_NEAREST; - case GL_LINEAR_MIPMAP_LINEAR: - return EVAS_CANVAS3D_TEXTURE_FILTER_LINEAR_MIPMAP_LINEAR; - default: - break; - } - - ERR("Invalid texture wrap mode."); - return EVAS_CANVAS3D_TEXTURE_FILTER_NEAREST; -} - -void -e3d_texture_wrap_set(E3D_Texture *texture, Evas_Canvas3D_Wrap_Mode s, Evas_Canvas3D_Wrap_Mode t) -{ - GLenum gl_s, gl_t; - - gl_s = _to_gl_texture_wrap(s); - gl_t = _to_gl_texture_wrap(t); - - if (gl_s == texture->wrap_s && gl_t == texture->wrap_t) - return; - - texture->wrap_s = gl_s; - texture->wrap_t = gl_t; - texture->wrap_dirty = EINA_TRUE; -} - -void -e3d_texture_wrap_get(const E3D_Texture *texture, Evas_Canvas3D_Wrap_Mode *s, Evas_Canvas3D_Wrap_Mode *t) -{ - if (s) - *s = _to_e3d_texture_wrap(texture->wrap_s); - - if (t) - *t = _to_e3d_texture_wrap(texture->wrap_t); -} - -void -e3d_texture_filter_set(E3D_Texture *texture, Evas_Canvas3D_Texture_Filter min, Evas_Canvas3D_Texture_Filter mag) -{ - GLenum gl_min, gl_mag; - - gl_min = _to_gl_texture_filter(min); - gl_mag = _to_gl_texture_filter(mag); - - if (gl_min == texture->filter_min && gl_mag == texture->filter_mag) - return; - - texture->filter_min = gl_min; - texture->filter_mag = gl_mag; - texture->filter_dirty = EINA_TRUE; -} - -void -e3d_texture_filter_get(const E3D_Texture *texture, - Evas_Canvas3D_Texture_Filter *min, Evas_Canvas3D_Texture_Filter *mag) -{ - if (min) - *min = _to_e3d_texture_filter(texture->filter_min); - - if (mag) - *mag = _to_e3d_texture_filter(texture->filter_mag); -} - -static void -_gen_texture_2d(GLuint *texture, GLenum wrap_type, GLfloat filter_type) -{ - glGenTextures(1, texture); - glBindTexture(GL_TEXTURE_2D, *texture); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, wrap_type); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, wrap_type); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, filter_type); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, filter_type); -} - -static void -_gen_depth_stencil_buffer(GLuint *buffer, GLenum format, GLenum attach, - int size_w, int size_h) -{ - glGenRenderbuffers(1, buffer); - glBindRenderbuffer(GL_RENDERBUFFER, *buffer); - glRenderbufferStorage(GL_RENDERBUFFER, format, size_w, size_h); - glFramebufferRenderbuffer(GL_FRAMEBUFFER, attach, GL_RENDERBUFFER, *buffer); -} - -E3D_Drawable * -e3d_drawable_new(int w, int h, int alpha, GLenum depth_format, GLenum stencil_format) -{ - E3D_Drawable *drawable = NULL; - GLuint tex, fbo, texDepth, texcolorpick, color_pick_fb_id; - GLuint depth_stencil_buf = 0; - GLuint depth_buf = 0; - GLuint stencil_buf = 0; - Eina_Bool depth_stencil = EINA_FALSE; - - _gen_texture_2d(&tex, GL_CLAMP_TO_EDGE, GL_NEAREST); - if (alpha) - glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, w, h, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL); - else - glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, w, h, 0, GL_RGB, GL_UNSIGNED_BYTE, NULL); - - _gen_texture_2d(&texDepth, GL_CLAMP_TO_EDGE, GL_NEAREST); - glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, w, h, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL); - - glGenFramebuffers(1, &color_pick_fb_id); - _gen_texture_2d(&texcolorpick, GL_CLAMP_TO_EDGE, GL_NEAREST); - glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, w, h, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL); - - glGenFramebuffers(1, &fbo); - glBindFramebuffer(GL_FRAMEBUFFER, fbo); - glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, tex, 0); - -#ifdef GL_GLES - if (depth_format == GL_DEPTH_STENCIL_OES) - { - _gen_texture_2d(&depth_stencil_buf, GL_CLAMP_TO_EDGE, GL_NEAREST); - glTexImage2D(GL_TEXTURE_2D, 0, GL_DEPTH_STENCIL_OES, w, h, 0, - GL_DEPTH_STENCIL_OES, GL_UNSIGNED_INT_24_8_OES, NULL); - - glFramebufferTexture2D(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, - GL_TEXTURE_2D, depth_stencil_buf, 0); - glFramebufferTexture2D(GL_FRAMEBUFFER, GL_STENCIL_ATTACHMENT, - GL_TEXTURE_2D, depth_stencil_buf, 0); - - depth_stencil = EINA_TRUE; - } -#else - if (depth_format == GL_DEPTH24_STENCIL8) - { - _gen_depth_stencil_buffer(&depth_stencil_buf, GL_DEPTH24_STENCIL8, - GL_DEPTH_STENCIL_ATTACHMENT, w, h); - depth_stencil = EINA_TRUE; - } -#endif - - if ((!depth_stencil) && (depth_format)) - _gen_depth_stencil_buffer(&depth_buf, depth_format, GL_DEPTH_ATTACHMENT, w, h); - - if ((!depth_stencil) && (stencil_format)) - _gen_depth_stencil_buffer(&stencil_buf, stencil_format, GL_STENCIL_ATTACHMENT, w, h); - - if (glCheckFramebufferStatus(GL_FRAMEBUFFER) != GL_FRAMEBUFFER_COMPLETE) - goto error; - - drawable = (E3D_Drawable *)calloc(1, sizeof(E3D_Drawable)); - if (drawable == NULL) - goto error; - - drawable->w = w; - drawable->h = h; - drawable->alpha = alpha; - - if (alpha) - drawable->format = GL_RGBA; - else - drawable->format = GL_RGB; - - drawable->depth_format = depth_format; - drawable->stencil_format = stencil_format; - drawable->tex = tex; - drawable->fbo = fbo; - drawable->texcolorpick = texcolorpick; - drawable->color_pick_fb_id = color_pick_fb_id; - drawable->depth_stencil_buf = depth_stencil_buf; - drawable->depth_buf = depth_buf; - drawable->stencil_buf = stencil_buf; - drawable->texDepth = texDepth; - - return drawable; - -error: - ERR("Drawable creation failed."); - - if (tex) - glDeleteTextures(1, &tex); - if (texcolorpick) - glDeleteTextures(1, &texcolorpick); - if (texDepth) - glDeleteTextures(1, &texDepth); - - if (fbo) - glDeleteFramebuffers(1, &fbo); - if (color_pick_fb_id) - glDeleteFramebuffers(1, &color_pick_fb_id); - - if (depth_stencil_buf) - { -#ifdef GL_GLES - glDeleteTextures(1, &depth_stencil_buf); -#else - glDeleteRenderbuffers(1, &depth_stencil_buf); -#endif - } - - if (depth_buf) - glDeleteRenderbuffers(1, &depth_buf); - - if (stencil_buf) - glDeleteRenderbuffers(1, &stencil_buf); - - - return NULL; -} - -void -e3d_drawable_free(E3D_Drawable *drawable) -{ - if (drawable == NULL) - return; - - if (drawable->tex) - glDeleteTextures(1, &drawable->tex); - - if (drawable->fbo) - glDeleteFramebuffers(1, &drawable->fbo); - - if (drawable->depth_stencil_buf) - { -#ifdef GL_GLES - glDeleteTextures(1, &drawable->depth_stencil_buf); -#else - glDeleteRenderbuffers(1, &drawable->depth_stencil_buf); -#endif - } - - if (drawable->depth_buf) - glDeleteRenderbuffers(1, &drawable->depth_buf); - - if (drawable->stencil_buf) - glDeleteRenderbuffers(1, &drawable->stencil_buf); - - free(drawable); -} - -void -e3d_drawable_size_get(E3D_Drawable *drawable, int *w, int *h) -{ - if (drawable) - { - if (w) *w = drawable->w; - if (h) *h = drawable->h; - } - else - { - if (w) *w = 0; - if (h) *h = 0; - } -} - -GLuint -e3d_drawable_texture_id_get(E3D_Drawable *drawable) -{ - return drawable->tex; -} - -GLuint -e3d_drawable_texture_color_pick_id_get(E3D_Drawable *drawable) -{ - return drawable->texcolorpick; -} - -GLenum -e3d_drawable_format_get(E3D_Drawable *drawable) -{ - return drawable->format; -} - -static inline void -_mesh_frame_find(Evas_Canvas3D_Mesh *mesh, int frame, - Eina_List **l, Eina_List **r) -{ - Eina_List *left, *right; - Evas_Canvas3D_Mesh_Frame *f0 = NULL, *f1; - Evas_Canvas3D_Mesh_Data *pdmesh = efl_data_scope_get(mesh, EVAS_CANVAS3D_MESH_CLASS); - - left = pdmesh->frames; - right = eina_list_next(left); - - while (right) - { - f0 = (Evas_Canvas3D_Mesh_Frame *)eina_list_data_get(left); - f1 = (Evas_Canvas3D_Mesh_Frame *)eina_list_data_get(right); - - if (frame >= f0->frame && frame <= f1->frame) - break; - - left = right; - right = eina_list_next(left); - } - - if (right == NULL) - { - if (f0 && frame <= f0->frame) - { - *l = NULL; - *r = left; - } - else - { - *l = left; - *r = NULL; - } - } - - *l = left; - *r = right; -} - -static inline void -_vertex_attrib_flag_add(E3D_Draw_Data *data, - Evas_Canvas3D_Vertex_Attrib attrib, - Eina_Bool blend) -{ - switch (attrib) - { - case EVAS_CANVAS3D_VERTEX_ATTRIB_POSITION: - data->flags |= E3D_SHADER_FLAG_VERTEX_POSITION; - - if (blend) - data->flags |= E3D_SHADER_FLAG_VERTEX_POSITION_BLEND; - break; - case EVAS_CANVAS3D_VERTEX_ATTRIB_NORMAL: - data->flags |= E3D_SHADER_FLAG_VERTEX_NORMAL; - - if (blend) - data->flags |= E3D_SHADER_FLAG_VERTEX_NORMAL_BLEND; - break; - case EVAS_CANVAS3D_VERTEX_ATTRIB_TANGENT: - data->flags |= E3D_SHADER_FLAG_VERTEX_TANGENT; - - if (blend) - data->flags |= E3D_SHADER_FLAG_VERTEX_TANGENT_BLEND; - break; - case EVAS_CANVAS3D_VERTEX_ATTRIB_COLOR: - data->flags |= E3D_SHADER_FLAG_VERTEX_COLOR; - - if (blend) - data->flags |= E3D_SHADER_FLAG_VERTEX_COLOR_BLEND; - break; - case EVAS_CANVAS3D_VERTEX_ATTRIB_TEXCOORD: - data->flags |= E3D_SHADER_FLAG_VERTEX_TEXCOORD; - - if (blend) - data->flags |= E3D_SHADER_FLAG_VERTEX_TEXCOORD_BLEND; - break; - default: - ERR("Invalid vertex attrib."); - break; - } -} - -static inline void -_material_color_flag_add(E3D_Draw_Data *data, Evas_Canvas3D_Material_Attrib attrib) -{ - switch (attrib) - { - case EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT: - data->flags |= E3D_SHADER_FLAG_AMBIENT; - break; - case EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE: - data->flags |= E3D_SHADER_FLAG_DIFFUSE; - break; - case EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR: - data->flags |= E3D_SHADER_FLAG_SPECULAR; - break; - case EVAS_CANVAS3D_MATERIAL_ATTRIB_EMISSION: - data->flags |= E3D_SHADER_FLAG_EMISSION; - break; - case EVAS_CANVAS3D_MATERIAL_ATTRIB_NORMAL: - ERR("Material attribute normal should not be used with color values."); - break; - default: - ERR("Invalid material attrib."); - break; - } -} - -static inline void -_material_texture_flag_add(E3D_Draw_Data *data, Evas_Canvas3D_Material_Attrib attrib, Eina_Bool blend) -{ - switch (attrib) - { - case EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT: - data->flags |= E3D_SHADER_FLAG_AMBIENT; - data->flags |= E3D_SHADER_FLAG_AMBIENT_TEXTURE; - - if (blend) - data->flags |= E3D_SHADER_FLAG_AMBIENT_TEXTURE_BLEND; - break; - case EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE: - data->flags |= E3D_SHADER_FLAG_DIFFUSE; - data->flags |= E3D_SHADER_FLAG_DIFFUSE_TEXTURE; - - if (blend) - data->flags |= E3D_SHADER_FLAG_DIFFUSE_TEXTURE_BLEND; - break; - case EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR: - data->flags |= E3D_SHADER_FLAG_SPECULAR; - data->flags |= E3D_SHADER_FLAG_SPECULAR_TEXTURE; - - if (blend) - data->flags |= E3D_SHADER_FLAG_SPECULAR_TEXTURE_BLEND; - break; - case EVAS_CANVAS3D_MATERIAL_ATTRIB_EMISSION: - data->flags |= E3D_SHADER_FLAG_EMISSION; - data->flags |= E3D_SHADER_FLAG_EMISSION_TEXTURE; - - if (blend) - data->flags |= E3D_SHADER_FLAG_EMISSION_TEXTURE_BLEND; - break; - case EVAS_CANVAS3D_MATERIAL_ATTRIB_NORMAL: - data->flags |= E3D_SHADER_FLAG_NORMAL_TEXTURE; - - if (blend) - data->flags |= E3D_SHADER_FLAG_NORMAL_TEXTURE_BLEND; - break; - default: - ERR("Invalid material attrib."); - break; - } -} - -static inline Eina_Bool -_vertex_attrib_build(E3D_Draw_Data *data, int frame, - const Eina_List *l, const Eina_List *r, - Evas_Canvas3D_Vertex_Attrib attrib) -{ - const Evas_Canvas3D_Mesh_Frame *f0 = NULL, *f1 = NULL; - - while (l) - { - f0 = (const Evas_Canvas3D_Mesh_Frame *)eina_list_data_get(l); - - if (f0->vertices[attrib].data != NULL) - break; - - l = eina_list_prev(l); - f0 = NULL; - } - - while (r) - { - f1 = (const Evas_Canvas3D_Mesh_Frame *)eina_list_data_get(r); - - if (f1->vertices[attrib].data != NULL) - break; - - r = eina_list_next(r); - f1 = NULL; - } - - if (f0 == NULL && f1 == NULL) - return EINA_FALSE; - - if (f0 == NULL) - { - f0 = f1; - f1 = NULL; - } - else if (f1 != NULL) - { - if (frame == f0->frame) - { - f1 = NULL; - } - else if (frame == f1->frame) - { - f0 = f1; - f1 = NULL; - } - } - - data->vertices[attrib].vertex0 = f0->vertices[attrib]; - data->vertices[attrib].vertex0.owns_data = EINA_FALSE; - - if (f1) - { - data->vertices[attrib].vertex1 = f1->vertices[attrib]; - data->vertices[attrib].vertex1.owns_data = EINA_FALSE; - data->vertices[attrib].weight = (f1->frame - frame) / (Evas_Real)(f1->frame - f0->frame); - _vertex_attrib_flag_add(data, attrib, EINA_TRUE); - } - else - { - _vertex_attrib_flag_add(data, attrib, EINA_FALSE); - } - - return EINA_TRUE; -} - -static inline Eina_Bool -_material_color_build(E3D_Draw_Data *data, int frame, - const Eina_List *l, const Eina_List *r, - Evas_Canvas3D_Material_Attrib attrib) -{ - const Evas_Canvas3D_Mesh_Frame *f0 = NULL, *f1 = NULL; - - while (l) - { - f0 = (const Evas_Canvas3D_Mesh_Frame *)eina_list_data_get(l); - - if (f0->material) - { - Evas_Canvas3D_Material_Data *pdm = efl_data_scope_get(f0->material, EVAS_CANVAS3D_MATERIAL_CLASS); - if (pdm->attribs[attrib].enable) - break; - } - - l = eina_list_prev(l); - f0 = NULL; - } - - while (r) - { - f1 = (const Evas_Canvas3D_Mesh_Frame *)eina_list_data_get(r); - - if (f1->material) - { - Evas_Canvas3D_Material_Data *pdm = efl_data_scope_get(f1->material, EVAS_CANVAS3D_MATERIAL_CLASS); - if (pdm->attribs[attrib].enable) - break; - } - - r = eina_list_next(r); - f1 = NULL; - } - - if (f0 == NULL && f1 == NULL) - return EINA_FALSE; - - if (f0 == NULL) - { - f0 = f1; - f1 = NULL; - } - else if (f1 != NULL) - { - if (frame == f0->frame) - { - f1 = NULL; - } - else if (frame == f1->frame) - { - f0 = f1; - f1 = NULL; - } - } - Evas_Canvas3D_Material_Data *pdmf0 = efl_data_scope_get(f0->material, EVAS_CANVAS3D_MATERIAL_CLASS); - if (f1 == NULL) - { - data->materials[attrib].color = pdmf0->attribs[attrib].color; - - if (attrib == EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR) - data->shininess = pdmf0->shininess; - } - else - { - Evas_Real weight; - Evas_Canvas3D_Material_Data *pdmf1 = efl_data_scope_get(f1->material, EVAS_CANVAS3D_MATERIAL_CLASS); - - weight = (f1->frame - frame) / (Evas_Real)(f1->frame - f0->frame); - evas_color_blend(&data->materials[attrib].color, - &pdmf0->attribs[attrib].color, - &pdmf0->attribs[attrib].color, - weight); - - if (attrib == EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR) - { - data->shininess = pdmf0->shininess * weight + - pdmf1->shininess * (1.0 - weight); - } - } - - _material_color_flag_add(data, attrib); - return EINA_TRUE; -} - -static inline Eina_Bool -_material_texture_build(E3D_Draw_Data *data, int frame, - const Eina_List *l, const Eina_List *r, - Evas_Canvas3D_Material_Attrib attrib) -{ - const Evas_Canvas3D_Mesh_Frame *f0 = NULL, *f1 = NULL; - - while (l) - { - f0 = (const Evas_Canvas3D_Mesh_Frame *)eina_list_data_get(l); - - if (f0->material) - { - Evas_Canvas3D_Material_Data *pdm = efl_data_scope_get(f0->material, EVAS_CANVAS3D_MATERIAL_CLASS); - if (pdm->attribs[attrib].enable && pdm->attribs[attrib].texture != NULL) - break; - } - - l = eina_list_prev(l); - f0 = NULL; - } - - while (r) - { - f1 = (const Evas_Canvas3D_Mesh_Frame *)eina_list_data_get(r); - - if (f1->material) - { - Evas_Canvas3D_Material_Data *pdm = efl_data_scope_get(f1->material, EVAS_CANVAS3D_MATERIAL_CLASS); - if (pdm->attribs[attrib].enable && pdm->attribs[attrib].texture != NULL) - break; - } - - r = eina_list_next(r); - f1 = NULL; - } - - if (f0 == NULL && f1 == NULL) - return EINA_FALSE; - - if (f0 == NULL) - { - f0 = f1; - f1 = NULL; - } - else if (f1 != NULL) - { - if (frame == f0->frame) - { - f1 = NULL; - } - else if (frame == f1->frame) - { - f0 = f1; - f1 = NULL; - } - } - - Evas_Canvas3D_Material_Data *pdmf0 = efl_data_scope_get(f0->material, EVAS_CANVAS3D_MATERIAL_CLASS); - data->materials[attrib].sampler0 = data->texture_count++; - Evas_Canvas3D_Texture_Data *pd = efl_data_scope_get(pdmf0->attribs[attrib].texture, EVAS_CANVAS3D_TEXTURE_CLASS); - data->materials[attrib].tex0 = (E3D_Texture *)pd->engine_data; - - if (f1) - { - Evas_Canvas3D_Material_Data *pdmf1 = efl_data_scope_get(f1->material, EVAS_CANVAS3D_MATERIAL_CLASS); - Evas_Real weight = (f1->frame - frame) / (Evas_Real)(f1->frame - f0->frame); - - data->materials[attrib].sampler1 = data->texture_count++; - pd = efl_data_scope_get(pdmf1->attribs[attrib].texture, EVAS_CANVAS3D_TEXTURE_CLASS); - data->materials[attrib].tex1 = (E3D_Texture *)pd->engine_data; - - data->materials[attrib].texture_weight = weight; - - if (attrib == EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR) - { - data->shininess = pdmf0->shininess * weight + - pdmf1->shininess * (1.0 - weight); - } - - _material_texture_flag_add(data, attrib, EINA_TRUE); - } - else - { - if (attrib == EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR) - data->shininess = pdmf0->shininess; - - _material_texture_flag_add(data, attrib, EINA_FALSE); - } - - return EINA_TRUE; -} - -static inline void -_light_build(E3D_Draw_Data *data, - const Evas_Canvas3D_Node *light, - const Eina_Matrix4 *matrix_eye) -{ - Evas_Canvas3D_Node_Data *pd_light_node = efl_data_scope_get(light, EVAS_CANVAS3D_NODE_CLASS); - Evas_Canvas3D_Light *l = pd_light_node ? pd_light_node->data.light.light : NULL; - Evas_Canvas3D_Light_Data *pdl = l ? efl_data_scope_get(l, EVAS_CANVAS3D_LIGHT_CLASS) : NULL; - Eina_Vector3 pos, dir; - - if (pdl == NULL) - return; - - /* Get light node's position. */ - if (pdl->directional) - { - data->flags |= E3D_SHADER_FLAG_LIGHT_DIRECTIONAL; - - /* Negative Z. */ - eina_vector3_set(&dir, 0.0, 0.0, 1.0); - eina_vector3_quaternion_rotate(&dir, &dir, &pd_light_node->orientation); - - /* Transform to eye space. */ - eina_vector3_homogeneous_direction_transform(&dir, matrix_eye, &dir); - eina_vector3_normalize(&dir, &dir); - - data->light.position.x = dir.x; - data->light.position.y = dir.y; - data->light.position.z = dir.z; - data->light.position.w = 0.0; - } - else - { - eina_vector3_copy(&pos, &pd_light_node->position_world); - eina_vector3_homogeneous_position_transform(&pos, matrix_eye, &pos); - - data->light.position.x = pos.x; - data->light.position.y = pos.y; - data->light.position.z = pos.z; - data->light.position.w = 1.0; - - if (pdl->enable_attenuation) - { - data->flags |= E3D_SHADER_FLAG_LIGHT_ATTENUATION; - - data->light.atten.x = pdl->atten_const; - data->light.atten.y = pdl->atten_linear; - data->light.atten.z = pdl->atten_quad; - } - - if (pdl->spot_cutoff < 180.0) - { - data->flags |= E3D_SHADER_FLAG_LIGHT_SPOT; - eina_vector3_set(&dir, 0.0, 0.0, -1.0); - eina_vector3_quaternion_rotate(&dir, &dir, &pd_light_node->orientation); - eina_vector3_homogeneous_direction_transform(&dir, matrix_eye, &dir); - - data->light.spot_dir = dir; - data->light.spot_exp = pdl->spot_exp; - data->light.spot_cutoff_cos = pdl->spot_cutoff_cos; - } - } - - data->light.ambient = pdl->ambient; - data->light.diffuse = pdl->diffuse; - data->light.specular = pdl->specular; -} - -static inline Eina_Bool -_mesh_draw_data_build(E3D_Draw_Data *data, - Evas_Canvas3D_Mesh *mesh, int frame, - const Eina_Matrix4 *matrix_eye, - const Eina_Matrix4 *matrix_mv, - const Eina_Matrix4 *matrix_mvp, - const Eina_Matrix4 *matrix_light, - const Evas_Canvas3D_Node *light) -{ - Eina_List *l, *r; - Evas_Canvas3D_Mesh_Data *pdmesh = efl_data_scope_get(mesh, EVAS_CANVAS3D_MESH_CLASS); - - if (pdmesh->frames == NULL) - return EINA_FALSE; - - if (pdmesh->fog_enabled) - { - data->flags |= E3D_SHADER_FLAG_FOG_ENABLED; - data->fog_color = pdmesh->fog_color; - } - if (pdmesh->alpha_test_enabled) - data->flags |= E3D_SHADER_FLAG_ALPHA_TEST_ENABLED; - - if (pdmesh->shadowed) - { - data->flags |= E3D_SHADER_FLAG_SHADOWED; - data->pcf_size = 1 / pdmesh->shadows_edges_size; - data->pcf_step = (Evas_Real)pdmesh->shadows_edges_filtering_level; - data->constant_bias = pdmesh->shadows_constant_bias; - } - - if (pdmesh->color_pick_enabled) - data->color_pick_key = pdmesh->color_pick_key; - - data->alpha_comparison = pdmesh->alpha_comparison; - data->alpha_ref_value = pdmesh->alpha_ref_value; - data->alpha_test_enabled =pdmesh->alpha_test_enabled; - - data->blending = pdmesh->blending; - data->blend_sfactor = pdmesh->blend_sfactor; - data->blend_dfactor = pdmesh->blend_dfactor; - data->mode = pdmesh->shader_mode; - data->assembly = pdmesh->assembly; - data->vertex_count = pdmesh->vertex_count; - data->index_count = pdmesh->index_count; - data->index_format = pdmesh->index_format; - data->indices = pdmesh->indices; - - eina_matrix4_copy(&data->matrix_mvp, matrix_mvp); - eina_matrix4_copy(&data->matrix_mv, matrix_mv); - if (matrix_light != NULL) - eina_matrix4_copy(&data->matrix_light, matrix_light); - - _mesh_frame_find(mesh, frame, &l, &r); - -#define BUILD(type, arg, check) \ - do { \ - Eina_Bool ret = _##type##_build(data, frame, l, r, EVAS_CANVAS3D_##arg); \ - if (check && !ret) \ - { \ - ERR("Missing attribute : " #arg); \ - return EINA_FALSE; \ - } \ - } while (0) - - if (pdmesh->shader_mode == EVAS_CANVAS3D_SHADER_MODE_VERTEX_COLOR) - { - BUILD(vertex_attrib, VERTEX_ATTRIB_POSITION, EINA_TRUE); - BUILD(vertex_attrib, VERTEX_ATTRIB_COLOR, EINA_TRUE); - } - else if (pdmesh->shader_mode == EVAS_CANVAS3D_SHADER_MODE_SHADOW_MAP_RENDER) - { - BUILD(vertex_attrib, VERTEX_ATTRIB_POSITION, EINA_TRUE); - if (pdmesh->alpha_test_enabled) - { - BUILD(material_texture, MATERIAL_ATTRIB_DIFFUSE, EINA_FALSE); - - if (_flags_need_tex_coord(data->flags)) - BUILD(vertex_attrib, VERTEX_ATTRIB_TEXCOORD, EINA_FALSE); - } - } - else if (pdmesh->shader_mode == EVAS_CANVAS3D_SHADER_MODE_COLOR_PICK) - { - BUILD(vertex_attrib, VERTEX_ATTRIB_POSITION, EINA_TRUE); - } - else if (pdmesh->shader_mode == EVAS_CANVAS3D_SHADER_MODE_DIFFUSE) - { - BUILD(vertex_attrib, VERTEX_ATTRIB_POSITION, EINA_TRUE); - BUILD(material_color, MATERIAL_ATTRIB_DIFFUSE, EINA_TRUE); - BUILD(material_texture, MATERIAL_ATTRIB_DIFFUSE, EINA_FALSE); - - if (_flags_need_tex_coord(data->flags)) - BUILD(vertex_attrib, VERTEX_ATTRIB_TEXCOORD, EINA_FALSE); - } - else if (pdmesh->shader_mode == EVAS_CANVAS3D_SHADER_MODE_FLAT) - { - BUILD(vertex_attrib, VERTEX_ATTRIB_POSITION, EINA_TRUE); - BUILD(vertex_attrib, VERTEX_ATTRIB_NORMAL, EINA_TRUE); - - BUILD(material_color, MATERIAL_ATTRIB_AMBIENT, EINA_FALSE); - BUILD(material_color, MATERIAL_ATTRIB_DIFFUSE, EINA_FALSE); - BUILD(material_color, MATERIAL_ATTRIB_SPECULAR, EINA_FALSE); - BUILD(material_color, MATERIAL_ATTRIB_EMISSION, EINA_FALSE); - - BUILD(material_texture, MATERIAL_ATTRIB_AMBIENT, EINA_FALSE); - BUILD(material_texture, MATERIAL_ATTRIB_DIFFUSE, EINA_FALSE); - BUILD(material_texture, MATERIAL_ATTRIB_SPECULAR, EINA_FALSE); - BUILD(material_texture, MATERIAL_ATTRIB_EMISSION, EINA_FALSE); - - _light_build(data, light, matrix_eye); - eina_normal3_matrix_get(&data->matrix_normal, matrix_mv); - - if (_flags_need_tex_coord(data->flags)) - BUILD(vertex_attrib, VERTEX_ATTRIB_TEXCOORD, EINA_FALSE); - } - else if (pdmesh->shader_mode == EVAS_CANVAS3D_SHADER_MODE_PHONG) - { - BUILD(vertex_attrib, VERTEX_ATTRIB_POSITION, EINA_TRUE); - BUILD(vertex_attrib, VERTEX_ATTRIB_NORMAL, EINA_TRUE); - - BUILD(material_color, MATERIAL_ATTRIB_AMBIENT, EINA_FALSE); - BUILD(material_color, MATERIAL_ATTRIB_DIFFUSE, EINA_FALSE); - BUILD(material_color, MATERIAL_ATTRIB_SPECULAR, EINA_FALSE); - BUILD(material_color, MATERIAL_ATTRIB_EMISSION, EINA_FALSE); - - BUILD(material_texture, MATERIAL_ATTRIB_AMBIENT, EINA_FALSE); - BUILD(material_texture, MATERIAL_ATTRIB_DIFFUSE, EINA_FALSE); - BUILD(material_texture, MATERIAL_ATTRIB_SPECULAR, EINA_FALSE); - BUILD(material_texture, MATERIAL_ATTRIB_EMISSION, EINA_FALSE); - - _light_build(data, light, matrix_eye); - eina_normal3_matrix_get(&data->matrix_normal, matrix_mv); - - if (_flags_need_tex_coord(data->flags)) - BUILD(vertex_attrib, VERTEX_ATTRIB_TEXCOORD, EINA_FALSE); - } - else if ((pdmesh->shader_mode == EVAS_CANVAS3D_SHADER_MODE_NORMAL_MAP) || - (pdmesh->shader_mode == EVAS_CANVAS3D_SHADER_MODE_PARALLAX_OCCLUSION)) - { - BUILD(vertex_attrib, VERTEX_ATTRIB_POSITION, EINA_TRUE); - BUILD(vertex_attrib, VERTEX_ATTRIB_NORMAL, EINA_TRUE); - BUILD(vertex_attrib, VERTEX_ATTRIB_TEXCOORD, EINA_TRUE); - BUILD(material_texture, MATERIAL_ATTRIB_NORMAL, EINA_TRUE); - BUILD(vertex_attrib, VERTEX_ATTRIB_TANGENT, EINA_FALSE); - - - if (pdmesh->shader_mode == EVAS_CANVAS3D_SHADER_MODE_NORMAL_MAP) - BUILD(vertex_attrib, VERTEX_ATTRIB_TANGENT, EINA_FALSE); - else BUILD(vertex_attrib, VERTEX_ATTRIB_TANGENT, EINA_TRUE); - - BUILD(material_color, MATERIAL_ATTRIB_AMBIENT, EINA_FALSE); - BUILD(material_color, MATERIAL_ATTRIB_DIFFUSE, EINA_FALSE); - BUILD(material_color, MATERIAL_ATTRIB_SPECULAR, EINA_FALSE); - BUILD(material_color, MATERIAL_ATTRIB_EMISSION, EINA_FALSE); - - BUILD(material_texture, MATERIAL_ATTRIB_AMBIENT, EINA_FALSE); - BUILD(material_texture, MATERIAL_ATTRIB_DIFFUSE, EINA_FALSE); - BUILD(material_texture, MATERIAL_ATTRIB_SPECULAR, EINA_FALSE); - BUILD(material_texture, MATERIAL_ATTRIB_EMISSION, EINA_FALSE); - - _light_build(data, light, matrix_eye); - eina_normal3_matrix_get(&data->matrix_normal, matrix_mv); - } - /*Check possible quantity of texture units*/ - int num, count = 0; - glGetIntegerv(GL_MAX_TEXTURE_IMAGE_UNITS, &num); - data->smap_sampler = num - 1; - - if (data->render_to_texture) - { - count++; - data->colortex_sampler = num - (count + 1); - } - if (data->texture_count + count >= num) - if ((data->flags & E3D_SHADER_FLAG_SHADOWED) || - (data->texture_count + count > num)) - { - ERR("Too many textures for your graphics configuration."); - return EINA_FALSE; - } - - return EINA_TRUE; -} - -static inline void -_mesh_draw(E3D_Renderer *renderer, Evas_Canvas3D_Mesh *mesh, int frame, Evas_Canvas3D_Node *light, - const Eina_Matrix4 *matrix_eye, const Eina_Matrix4 *matrix_mv, const Eina_Matrix4 *matrix_mvp, const Eina_Matrix4 *matrix_light) -{ - E3D_Draw_Data data; - - memset(&data, 0x00, sizeof(E3D_Draw_Data)); - data.render_to_texture = e3d_renderer_rendering_to_texture_get(renderer); - - if (_mesh_draw_data_build(&data, mesh, frame, matrix_eye, matrix_mv, matrix_mvp, matrix_light, light)) - e3d_renderer_draw(renderer, &data); -} - -void _shadowmap_render(E3D_Drawable *drawable, E3D_Renderer *renderer, - Evas_Canvas3D_Scene_Public_Data *data, Eina_Matrix4 *matrix_light_eye, - Evas_Canvas3D_Node *light) -{ - Eina_List *l; - Evas_Canvas3D_Node *n; - Evas_Canvas3D_Shader_Mode shader_mode; - Eina_Bool blend_enabled; - Evas_Color c = {1.0, 1.0, 1.0, 1.0}; - Eina_Matrix4 matrix_vp; - - glEnable(GL_POLYGON_OFFSET_FILL); - glPolygonOffset(data->depth_offset, data->depth_constant); - - glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, - drawable->texDepth, 0); - - e3d_renderer_clear(renderer, &c); - - Evas_Canvas3D_Node_Data *pd_light_node = efl_data_scope_get(light, EVAS_CANVAS3D_NODE_CLASS); - Evas_Canvas3D_Light_Data *pd = efl_data_scope_get(pd_light_node->data.light.light, - EVAS_CANVAS3D_LIGHT_CLASS); - - Eina_Quaternion planes[6]; - eina_matrix4_multiply(&matrix_vp, &pd->projection, matrix_light_eye); - evas_frustum_calculate(planes, &matrix_vp); - - EINA_LIST_FOREACH(data->mesh_nodes, l, n) - { - Evas_Canvas3D_Node_Data *pd_mesh_node = efl_data_scope_get(n, EVAS_CANVAS3D_NODE_CLASS); - - if (evas_is_sphere_in_frustum(&pd_mesh_node->bsphere, planes)) - { - RENDER_MESH_NODE_ITERATE_BEGIN(light_eye) - { - shader_mode = pdmesh->shader_mode; - blend_enabled = pdmesh->blending; - pdmesh->blending = EINA_FALSE; - pdmesh->shader_mode = EVAS_CANVAS3D_SHADER_MODE_SHADOW_MAP_RENDER; - _mesh_draw(renderer, nm->mesh, nm->frame, light, matrix_light_eye, - &matrix_mv, &matrix_mvp, &matrix_mvp); - pdmesh->shader_mode = shader_mode; - pdmesh->blending = blend_enabled; - } - RENDER_MESH_NODE_ITERATE_END - } - } - - glDisable(GL_POLYGON_OFFSET_FILL); - - if (data->render_to_texture) - { - glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, - drawable->texcolorpick, 0); - e3d_renderer_clear(renderer, &data->bg_color); - } - else - { - glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, - drawable->tex, 0); - e3d_renderer_clear(renderer, &data->bg_color); - } -} - -void -_scene_render(E3D_Drawable *drawable, E3D_Renderer *renderer, Evas_Canvas3D_Scene_Public_Data *data) -{ - Eina_List *l; - Evas_Canvas3D_Node *n; - const Eina_Matrix4 *matrix_eye; - Evas_Canvas3D_Node *light; - Eina_Matrix4 matrix_light_eye, matrix_vp;; - Evas_Canvas3D_Light_Data *ld = NULL; - Evas_Canvas3D_Node_Data *pd_light_node; - Eina_Quaternion planes[6]; - - /* Get eye matrix. */ - Evas_Canvas3D_Node_Data *pd_camera_node = efl_data_scope_get(data->camera_node, EVAS_CANVAS3D_NODE_CLASS); - matrix_eye = &pd_camera_node->data.camera.matrix_world_to_eye; - - Evas_Canvas3D_Camera_Data *pd = efl_data_scope_get(pd_camera_node->data.camera.camera, EVAS_CANVAS3D_CAMERA_CLASS); - - light = eina_list_data_get(data->light_nodes); - - if (data->shadows_enabled) - { - pd_light_node = efl_data_scope_get(light, EVAS_CANVAS3D_NODE_CLASS); - evas_mat4_inverse_build(&matrix_light_eye, - &pd_light_node->position_world, &pd_light_node->orientation_world, &pd_light_node->scale_world); - ld = efl_data_scope_get(pd_light_node->data.light.light, EVAS_CANVAS3D_LIGHT_CLASS); - _shadowmap_render(drawable, renderer, data, &matrix_light_eye, light); - } - - eina_matrix4_multiply(&matrix_vp, &pd->projection, matrix_eye); - evas_frustum_calculate(planes, &matrix_vp); - - EINA_LIST_FOREACH(data->mesh_nodes, l, n) - { - Eina_Matrix4 matrix_mv; - Eina_Matrix4 matrix_light; - Eina_Matrix4 matrix_mvp; - Eina_Iterator *it; - void *ptr; - Evas_Canvas3D_Node_Data *pd_mesh_node = efl_data_scope_get(n, EVAS_CANVAS3D_NODE_CLASS); - - // TODO Add other frustum shapes - if (evas_is_sphere_in_frustum(&pd_mesh_node->bsphere, planes)) - { - - if (data->shadows_enabled) - { - eina_matrix4_multiply(&matrix_mv, &matrix_light_eye, - &pd_mesh_node->data.mesh.matrix_local_to_world); - eina_matrix4_multiply(&matrix_light, &ld->projection, - &matrix_mv); - } - - eina_matrix4_multiply(&matrix_mv, matrix_eye, &pd_mesh_node->data.mesh.matrix_local_to_world); - eina_matrix4_multiply(&matrix_mvp, &pd->projection, - &matrix_mv); - - it = eina_hash_iterator_data_new(pd_mesh_node->data.mesh.node_meshes); - while (eina_iterator_next(it, &ptr)) - { - Evas_Canvas3D_Node_Mesh *nm = (Evas_Canvas3D_Node_Mesh *)ptr; - Evas_Canvas3D_Mesh_Data *pdmesh = efl_data_scope_get(nm->mesh, EVAS_CANVAS3D_MESH_CLASS); - /*In case LOD enable pass in render only LOD meshes in dependences of the - distance to the camera node: - near_boundary <= distance <= far_boundary*/ - CHECK_LOD_DISTANCE - if (data->shadows_enabled) - { - pdmesh->shadowed = EINA_TRUE; - _mesh_draw(renderer, nm->mesh, nm->frame, light, matrix_eye, &matrix_mv, &matrix_mvp, &matrix_light); - pdmesh->shadowed = EINA_FALSE; - } - else _mesh_draw(renderer, nm->mesh, nm->frame, light, matrix_eye, &matrix_mv, &matrix_mvp, NULL); - } - eina_iterator_free(it); - } - } - e3d_renderer_flush(renderer); -} - -void -e3d_drawable_scene_render(E3D_Drawable *drawable, E3D_Renderer *renderer, Evas_Canvas3D_Scene_Public_Data *data) -{ - /* Set up render target. */ - e3d_renderer_target_set(renderer, drawable); - e3d_renderer_clear(renderer, &data->bg_color); - - if (data->post_processing) - e3d_drawable_scene_render_to_texture(drawable, renderer, data);//Render to additional texture - else - _scene_render(drawable, renderer, data);//Common main render -} - -void -_scene_post_render(E3D_Drawable *drawable, E3D_Renderer *renderer, Evas_Canvas3D_Scene_Public_Data *data) -{ - E3D_Draw_Data drawable_data; - float vertices_of_square[] = {-1.0, 1.0, 0.0, 1.0, 1.0, 0.0, - -1.0, -1.0, 0.0, 1.0, -1.0, 0.0}; - unsigned short indices_of_square[] = {0, 1, 2, 2, 1, 3}; - - memset(&drawable_data, 0x00, sizeof(E3D_Draw_Data)); - - drawable_data.flags |= E3D_SHADER_FLAG_VERTEX_POSITION; - drawable_data.mode = data->post_processing_type; - drawable_data.assembly = EVAS_CANVAS3D_VERTEX_ASSEMBLY_TRIANGLES; - drawable_data.indices = indices_of_square; - drawable_data.vertex_count = 4; - drawable_data.index_count = 6; - drawable_data.index_format = EVAS_CANVAS3D_INDEX_FORMAT_UNSIGNED_SHORT; - eina_matrix4_identity(&drawable_data.matrix_mv); - eina_matrix4_identity(&drawable_data.matrix_mvp); - drawable_data.frame_size_h = (Evas_Real)drawable->h; - drawable_data.frame_size_w = (Evas_Real)drawable->w; - /*Initialize Evas_Canvas3D_Vertex_Buffer for full screen quard*/ - drawable_data.vertices[EVAS_CANVAS3D_VERTEX_ATTRIB_POSITION].vertex0.data = (void *)vertices_of_square; - drawable_data.vertices[EVAS_CANVAS3D_VERTEX_ATTRIB_POSITION].vertex0.element_count = 3; - drawable_data.vertices[EVAS_CANVAS3D_VERTEX_ATTRIB_POSITION].vertex0.stride = 3 * sizeof(float); - drawable_data.vertices[EVAS_CANVAS3D_VERTEX_ATTRIB_POSITION].vertex0.owns_data = EINA_FALSE; - drawable_data.vertices[EVAS_CANVAS3D_VERTEX_ATTRIB_POSITION].vertex0.size = 0; - - e3d_renderer_clear(renderer, &data->bg_color); - - /*Initialize texture units*/ - drawable_data.smap_sampler = e3d_renderer_sampler_shadowmap_get(renderer); - drawable_data.colortex_sampler = e3d_renderer_sampler_colortexture_get(renderer); - - /*Render full screen quard with color pick texture unit*/ - e3d_renderer_draw(renderer, &drawable_data); - e3d_renderer_flush(renderer); -} - -Eina_Bool -e3d_drawable_scene_render_to_texture(E3D_Drawable *drawable, E3D_Renderer *renderer, - Evas_Canvas3D_Scene_Public_Data *data) -{ - const Eina_Matrix4 *matrix_eye; - Evas_Canvas3D_Shader_Mode shader_mode; - Eina_Stringshare *tmp; - Eina_Iterator *itmn; - void *ptrmn; - Eina_List *repeat_node = NULL; - Evas_Color *unic_color = NULL; - - e3d_renderer_color_pick_target_set(renderer, drawable); - e3d_renderer_clear(renderer, &data->bg_color); - - if (data->color_pick_enabled) //Use rendering to texture in color pick mechanism - { - Evas_Canvas3D_Node_Data *pd_camera_node = efl_data_scope_get(data->camera_node, EVAS_CANVAS3D_NODE_CLASS); - matrix_eye = &pd_camera_node->data.camera.matrix_world_to_eye; - Evas_Canvas3D_Camera_Data *pd = efl_data_scope_get(pd_camera_node->data.camera.camera, EVAS_CANVAS3D_CAMERA_CLASS); - - itmn = eina_hash_iterator_data_new(data->colors_node_mesh); - - while (eina_iterator_next(itmn, &ptrmn)) - { - Evas_Canvas3D_Node *n; - Eina_Array *arr = NULL; - - arr = (Eina_Array *)ptrmn; - n = (Evas_Canvas3D_Node *)eina_array_data_get(arr, 0); - /*To avoid repeatedly render mesh*/ - if (!repeat_node) - repeat_node = eina_list_append(repeat_node, (void*)n); - else - { - if (eina_list_data_find(repeat_node, (void *)n)) - continue; - else - repeat_node = eina_list_append(repeat_node, (void *)n); - } - Evas_Canvas3D_Node_Data *pd_mesh_node = efl_data_scope_get(n, EVAS_CANVAS3D_NODE_CLASS); - RENDER_MESH_NODE_ITERATE_BEGIN(eye) - { - if (pdmesh->color_pick_enabled) - { - tmp = eina_stringshare_printf("%p %p", n, nm->mesh); - unic_color = (Evas_Color *)eina_hash_find(data->node_mesh_colors, tmp); - if (unic_color) - { - pdmesh->color_pick_key.r = unic_color->r; - pdmesh->color_pick_key.g = unic_color->g; - pdmesh->color_pick_key.b = unic_color->b; - shader_mode = pdmesh->shader_mode; - pdmesh->shader_mode = EVAS_CANVAS3D_SHADER_MODE_COLOR_PICK; - _mesh_draw(renderer, nm->mesh, nm->frame, NULL, matrix_eye, &matrix_mv, - &matrix_mvp, NULL); - pdmesh->shader_mode = shader_mode; - } - eina_stringshare_del(tmp); - } - } - RENDER_MESH_NODE_ITERATE_END - } - eina_iterator_free(itmn); - eina_list_free(repeat_node); - } - else - { - _scene_render(drawable, renderer, data); //Just render scene in texture - glBindFramebuffer(GL_FRAMEBUFFER, drawable->fbo); - /*Render full screen quard*/ - if (data->post_processing) - _scene_post_render(drawable, renderer, data); - } - - return EINA_TRUE; -} - -void -e3d_drawable_texture_pixel_color_get(GLuint tex EINA_UNUSED, int x, int y, - Evas_Color *color, void *drawable) -{ - E3D_Drawable *d = (E3D_Drawable *)drawable; - - glBindFramebuffer(GL_FRAMEBUFFER, d->color_pick_fb_id); - - GLubyte pixel[4] = {0, 0, 0, 0}; - glReadPixels(x, y, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, pixel); - color->r = (double)pixel[0] / 255; - color->g = (double)pixel[1] / 255; - color->b = (double)pixel[2] / 255; - - glBindFramebuffer(GL_FRAMEBUFFER, d->fbo); -} - -void -e3d_drawable_texture_rendered_pixels_get(GLuint tex EINA_UNUSED, int x, int y, int w, int h, - void *drawable EINA_UNUSED, void *data) -{ - DATA32 *buffer = (DATA32 *)data; - DATA32 *datarowup = NULL, *datarowlow = NULL; - DATA32 pixel; - int i, j, width = 0, up, bellow; - - glReadPixels(x, y, w, h, GL_RGBA, GL_UNSIGNED_BYTE, (GLubyte *)buffer); - - /*Due to returned pixels buffer filled as from the - bottom left of the screen going up to the top right*/ - datarowup = malloc(w * sizeof(DATA32)); - datarowlow = malloc(w * sizeof(DATA32)); - - if (!datarowup || !datarowlow) - { - ERR("Not enough memory"); - if (datarowup) free(datarowup); - if (datarowlow) free(datarowlow); - return; - } - for (j = 0; j < h / 2; j++) - { - bellow = h * w - width; - up = w + width; - - for (i = w - 1; i >= 0; i--) - { - pixel = buffer[bellow]; - datarowlow[i] = ((pixel & 0x000000ff) << 16) + - ((pixel & 0x00ff0000) >> 16) + - ((pixel & 0xff00ff00)); - pixel = buffer[up]; - datarowup[i] = ((pixel & 0x000000ff) << 16) + - ((pixel & 0x00ff0000) >> 16) + - ((pixel & 0xff00ff00)); - bellow--; - up--; - } - memcpy(buffer + width, datarowlow, w * sizeof(DATA32)); - width += w; - memcpy(buffer + (h * w - width), datarowup, w * sizeof(DATA32)); - } - free(datarowup); - free(datarowlow); -} -#undef CHECK_LOD_DISTANCE -#undef RENDER_MESH_NODE_ITERATE_BEGIN -#undef RENDER_MESH_NODE_ITERATE_END diff --git a/src/modules/evas/engines/gl_common/evas_gl_3d_common.h b/src/modules/evas/engines/gl_common/evas_gl_3d_common.h deleted file mode 100644 index 6f01d1adb3..0000000000 --- a/src/modules/evas/engines/gl_common/evas_gl_3d_common.h +++ /dev/null @@ -1,40 +0,0 @@ -#ifndef EVAS_GL_COMMON_H -# error You shall not include this header directly -#endif - -typedef struct _E3D_Texture E3D_Texture; -typedef struct _E3D_Drawable E3D_Drawable; -typedef struct _E3D_Renderer E3D_Renderer; - -/* Texture */ -E3D_Texture *e3d_texture_new(Eina_Bool use_atlas); -void e3d_texture_free(E3D_Texture *texture); - -void e3d_texture_size_get(const E3D_Texture *texture, int *w, int *h); -void e3d_texture_set(Evas_Engine_GL_Context *gc, E3D_Texture *texture, Evas_GL_Image *im); -Evas_GL_Image *e3d_texture_get(E3D_Texture *texture); - -void e3d_texture_import(E3D_Texture *texture, GLuint tex); -Eina_Bool e3d_texture_is_imported_get(const E3D_Texture *texture); - -void e3d_texture_wrap_set(E3D_Texture *texture, Evas_Canvas3D_Wrap_Mode s, Evas_Canvas3D_Wrap_Mode t); -void e3d_texture_wrap_get(const E3D_Texture *texture, Evas_Canvas3D_Wrap_Mode *s, Evas_Canvas3D_Wrap_Mode *t); - -void e3d_texture_filter_set(E3D_Texture *texture, Evas_Canvas3D_Texture_Filter min, Evas_Canvas3D_Texture_Filter mag); -void e3d_texture_filter_get(const E3D_Texture *texture, Evas_Canvas3D_Texture_Filter *min, Evas_Canvas3D_Texture_Filter *mag); - -/* Drawable */ -E3D_Drawable *e3d_drawable_new(int w, int h, int alpha, GLenum depth_format, GLenum stencil_format); -void e3d_drawable_free(E3D_Drawable *drawable); -void e3d_drawable_scene_render(E3D_Drawable *drawable, E3D_Renderer *renderer, Evas_Canvas3D_Scene_Public_Data *data); -Eina_Bool e3d_drawable_scene_render_to_texture(E3D_Drawable *drawable, E3D_Renderer *renderer, Evas_Canvas3D_Scene_Public_Data *data); -void e3d_drawable_size_get(E3D_Drawable *drawable, int *w, int *h); -GLuint e3d_drawable_texture_id_get(E3D_Drawable *drawable); -GLuint e3d_drawable_texture_color_pick_id_get(E3D_Drawable *drawable); -void e3d_drawable_texture_pixel_color_get(GLuint tex EINA_UNUSED, int x, int y, Evas_Color *color, void *drawable); -GLenum e3d_drawable_format_get(E3D_Drawable *drawable); -void e3d_drawable_texture_rendered_pixels_get(GLuint tex EINA_UNUSED, int x, int y, int w, int h, - void *drawable EINA_UNUSED, void *data); -/* Renderer */ -E3D_Renderer *e3d_renderer_new(void); -void e3d_renderer_free(E3D_Renderer *renderer); diff --git a/src/modules/evas/engines/gl_common/evas_gl_3d_private.h b/src/modules/evas/engines/gl_common/evas_gl_3d_private.h deleted file mode 100644 index 1c4d2adfac..0000000000 --- a/src/modules/evas/engines/gl_common/evas_gl_3d_private.h +++ /dev/null @@ -1,183 +0,0 @@ -#ifndef EVAS_GL_3D_PRIVATE_H -#define EVAS_GL_3D_PRIVATE_H - -#include "evas_gl_common.h" - -typedef struct _E3D_Program E3D_Program; -typedef struct _E3D_Draw_Data E3D_Draw_Data; -typedef unsigned long E3D_Shader_Flag; - -// NOTE: order here should be equal with flag names in file evas_gl_3d_shader.c -#define E3D_SHADER_FLAG_NORMALIZE_NORMALS (1 << 0) -#define E3D_SHADER_FLAG_VERTEX_POSITION (1 << 1) -#define E3D_SHADER_FLAG_VERTEX_POSITION_BLEND (1 << 2) -#define E3D_SHADER_FLAG_VERTEX_NORMAL (1 << 3) -#define E3D_SHADER_FLAG_VERTEX_NORMAL_BLEND (1 << 4) -#define E3D_SHADER_FLAG_VERTEX_TANGENT (1 << 5) -#define E3D_SHADER_FLAG_VERTEX_TANGENT_BLEND (1 << 6) -#define E3D_SHADER_FLAG_VERTEX_COLOR (1 << 7) -#define E3D_SHADER_FLAG_VERTEX_COLOR_BLEND (1 << 8) -#define E3D_SHADER_FLAG_VERTEX_TEXCOORD (1 << 9) -#define E3D_SHADER_FLAG_VERTEX_TEXCOORD_BLEND (1 << 10) -#define E3D_SHADER_FLAG_LIGHT_DIRECTIONAL (1 << 11) -#define E3D_SHADER_FLAG_LIGHT_SPOT (1 << 12) -#define E3D_SHADER_FLAG_LIGHT_ATTENUATION (1 << 13) -#define E3D_SHADER_FLAG_AMBIENT (1 << 14) -#define E3D_SHADER_FLAG_DIFFUSE (1 << 15) -#define E3D_SHADER_FLAG_SPECULAR (1 << 16) -#define E3D_SHADER_FLAG_EMISSION (1 << 17) -#define E3D_SHADER_FLAG_DIFFUSE_TEXTURE (1 << 18) -#define E3D_SHADER_FLAG_AMBIENT_TEXTURE (1 << 19) -#define E3D_SHADER_FLAG_SPECULAR_TEXTURE (1 << 20) -#define E3D_SHADER_FLAG_EMISSION_TEXTURE (1 << 21) -#define E3D_SHADER_FLAG_NORMAL_TEXTURE (1 << 22) -#define E3D_SHADER_FLAG_DIFFUSE_TEXTURE_BLEND (1 << 23) -#define E3D_SHADER_FLAG_AMBIENT_TEXTURE_BLEND (1 << 24) -#define E3D_SHADER_FLAG_SPECULAR_TEXTURE_BLEND (1 << 25) -#define E3D_SHADER_FLAG_EMISSION_TEXTURE_BLEND (1 << 26) -#define E3D_SHADER_FLAG_NORMAL_TEXTURE_BLEND (1 << 27) -#define E3D_SHADER_FLAG_FOG_ENABLED (1 << 28) -#define E3D_SHADER_FLAG_ALPHA_TEST_ENABLED (1 << 29) -#define E3D_SHADER_FLAG_SHADOWED (1 << 30) -#define E3D_SHADER_FLAG_COUNT 31 - -static inline Eina_Bool -_flags_need_tex_coord(E3D_Shader_Flag flags) -{ - return (flags & E3D_SHADER_FLAG_AMBIENT_TEXTURE) || - (flags & E3D_SHADER_FLAG_DIFFUSE_TEXTURE) || - (flags & E3D_SHADER_FLAG_SPECULAR_TEXTURE) || - (flags & E3D_SHADER_FLAG_EMISSION_TEXTURE) || - (flags & E3D_SHADER_FLAG_NORMAL_TEXTURE); -} - -struct _E3D_Draw_Data -{ - E3D_Shader_Flag flags; - Evas_Canvas3D_Shader_Mode mode; - - Eina_Matrix4 matrix_mvp; - Eina_Matrix4 matrix_mv; - Eina_Matrix3 matrix_normal; - Eina_Matrix4 matrix_light; - - struct { - Evas_Canvas3D_Vertex_Buffer vertex0; - Evas_Canvas3D_Vertex_Buffer vertex1; - Evas_Real weight; - } vertices[EVAS_CANVAS3D_VERTEX_ATTRIB_COUNT]; - - Evas_Canvas3D_Vertex_Assembly assembly; - int vertex_count; - int index_count; - Evas_Canvas3D_Index_Format index_format; - const void *indices; - - GLint texture_count; - - struct { - Evas_Color color; - GLint sampler0; - GLint sampler1; - E3D_Texture *tex0; - E3D_Texture *tex1; - Evas_Real texture_weight; - } materials[EVAS_CANVAS3D_MATERIAL_ATTRIB_COUNT]; - - Evas_Real shininess; - - GLint smap_sampler; - GLint colortex_sampler; - Evas_Canvas3D_Blend_Func blend_sfactor; - Evas_Canvas3D_Blend_Func blend_dfactor; - Eina_Bool blending : 1; - - Evas_Canvas3D_Comparison alpha_comparison; - Evas_Real alpha_ref_value; - Eina_Bool alpha_test_enabled :1; - - struct { - Eina_Quaternion position; - Eina_Vector3 spot_dir; - Evas_Real spot_exp; - Evas_Real spot_cutoff_cos; - Eina_Vector3 atten; - Evas_Color ambient; - Evas_Color diffuse; - Evas_Color specular; - } light; - Evas_Color fog_color; - Evas_Color color_pick_key; - /*Sets of the quality of shadow rendering*/ - Evas_Real pcf_step; - Evas_Real pcf_size; - Evas_Real constant_bias; - - Eina_Bool render_to_texture; - - Evas_Real frame_size_h; - Evas_Real frame_size_w; -}; - -struct _E3D_Texture -{ - /*Offset for atlasses*/ - int x, y; - int w, h; - - Evas_GL_Image *surface; - /*Tranformation matrix, use it for adjusting texture unit coordinates*/ - Eina_Matrix3 trans; - - GLuint tex; - - Eina_Bool wrap_dirty; - GLenum wrap_s; - GLenum wrap_t; - - Eina_Bool filter_dirty; - GLenum filter_min; - GLenum filter_mag; - /*Use atlas for generation texture unit, @EINA_TRUE by default*/ - Eina_Bool atlas_enable; -}; - -struct _E3D_Drawable -{ - int w, h; - int alpha; - GLenum format; - GLenum depth_format; - GLenum stencil_format; - GLuint tex; - GLuint fbo; - GLuint depth_stencil_buf; - GLuint depth_buf; - GLuint stencil_buf; - GLuint texDepth; - GLuint texcolorpick; - GLuint color_pick_fb_id; -}; - -/* Texture internal functions. */ -void e3d_texture_param_update(E3D_Texture *texture); - -/* Program */ -E3D_Program *e3d_program_new(Evas_Canvas3D_Shader_Mode mode, E3D_Shader_Flag flags); -void e3d_program_free(E3D_Program *program); -GLuint e3d_program_id_get(const E3D_Program *program); -Evas_Canvas3D_Shader_Mode e3d_program_shader_mode_get(const E3D_Program *program); -E3D_Shader_Flag e3d_program_shader_flags_get(const E3D_Program *program); -void e3d_program_uniform_upload(E3D_Program *program, const E3D_Draw_Data *data); - -/* Renderer */ -void e3d_renderer_target_set(E3D_Renderer *renderer, E3D_Drawable *target); -void e3d_renderer_viewport_set(E3D_Renderer *renderer, int x, int y, int w, int h); -void e3d_renderer_clear(E3D_Renderer *renderer, const Evas_Color *color); -void e3d_renderer_draw(E3D_Renderer *renderer, E3D_Draw_Data *data); -void e3d_renderer_flush(E3D_Renderer *renderer); -void e3d_renderer_color_pick_target_set(E3D_Renderer *renderer, E3D_Drawable *drawable); -Eina_Bool e3d_renderer_rendering_to_texture_get(E3D_Renderer *renderer); -GLint e3d_renderer_sampler_colortexture_get(E3D_Renderer *renderer); -GLint e3d_renderer_sampler_shadowmap_get(E3D_Renderer *renderer); -#endif /* EVAS_GL_3D_PRIVATE_H */ diff --git a/src/modules/evas/engines/gl_common/evas_gl_3d_renderer.c b/src/modules/evas/engines/gl_common/evas_gl_3d_renderer.c deleted file mode 100644 index 2e4f885b77..0000000000 --- a/src/modules/evas/engines/gl_common/evas_gl_3d_renderer.c +++ /dev/null @@ -1,428 +0,0 @@ -#include "evas_gl_private.h" -#include "evas_gl_3d_private.h" - -#define E3D_MAX_TEXTURE_COUNT 8 -#define E3D_MAX_VERTEX_ATTRIB_COUNT 8 - -struct _E3D_Renderer -{ - Eina_List *programs; - - GLuint fbo; - GLuint program; - E3D_Texture *textures[E3D_MAX_TEXTURE_COUNT]; - - Eina_Bool vertex_attrib_enable[E3D_MAX_VERTEX_ATTRIB_COUNT]; - Eina_Bool depth_test_enable; - GLuint texDepth; - GLint smap_sampler; - Eina_Bool render_to_texture; - GLuint texcolorpick; - GLint colortex_sampler; -}; - -static inline GLenum -_gl_assembly_get(Evas_Canvas3D_Vertex_Assembly assembly) -{ - switch (assembly) - { - case EVAS_CANVAS3D_VERTEX_ASSEMBLY_POINTS: - return GL_POINTS; - case EVAS_CANVAS3D_VERTEX_ASSEMBLY_LINES: - return GL_LINES; - case EVAS_CANVAS3D_VERTEX_ASSEMBLY_LINE_STRIP: - return GL_LINE_STRIP; - case EVAS_CANVAS3D_VERTEX_ASSEMBLY_LINE_LOOP: - return GL_LINE_LOOP; - case EVAS_CANVAS3D_VERTEX_ASSEMBLY_TRIANGLES: - return GL_TRIANGLES; - case EVAS_CANVAS3D_VERTEX_ASSEMBLY_TRIANGLE_STRIP: - return GL_TRIANGLE_STRIP; - case EVAS_CANVAS3D_VERTEX_ASSEMBLY_TRIANGLE_FAN: - return GL_TRIANGLE_FAN; - default: - return GL_NONE; - } -} - -static inline GLenum -_gl_blend_func_get(Evas_Canvas3D_Blend_Func blend_func) -{ - switch (blend_func) - { - case EVAS_CANVAS3D_BLEND_FUNC_ZERO: - return GL_ZERO; - case EVAS_CANVAS3D_BLEND_FUNC_ONE: - return GL_ONE; - case EVAS_CANVAS3D_BLEND_FUNC_SRC_COLOR: - return GL_SRC_COLOR; - case EVAS_CANVAS3D_BLEND_FUNC_ONE_MINUS_SRC_COLOR: - return GL_ONE_MINUS_SRC_COLOR; - case EVAS_CANVAS3D_BLEND_FUNC_DST_COLOR: - return GL_DST_COLOR; - case EVAS_CANVAS3D_BLEND_FUNC_ONE_MINUS_DST_COLOR: - return GL_ONE_MINUS_DST_COLOR; - case EVAS_CANVAS3D_BLEND_FUNC_SRC_ALPHA: - return GL_SRC_ALPHA; - case EVAS_CANVAS3D_BLEND_FUNC_ONE_MINUS_SRC_ALPHA: - return GL_ONE_MINUS_SRC_ALPHA; - case EVAS_CANVAS3D_BLEND_FUNC_DST_ALPHA: - return GL_DST_ALPHA; - case EVAS_CANVAS3D_BLEND_FUNC_ONE_MINUS_DST_ALPHA: - return GL_ONE_MINUS_DST_ALPHA; - case EVAS_CANVAS3D_BLEND_FUNC_CONSTANT_COLOR: - return GL_CONSTANT_COLOR; - case EVAS_CANVAS3D_BLEND_FUNC_ONE_MINUS_CONSTANT_COLOR: - return GL_ONE_MINUS_CONSTANT_COLOR; - case EVAS_CANVAS3D_BLEND_FUNC_CONSTANT_ALPHA: - return GL_CONSTANT_ALPHA; - case EVAS_CANVAS3D_BLEND_FUNC_ONE_MINUS_CONSTANT_ALPHA: - return GL_ONE_MINUS_CONSTANT_ALPHA; - case EVAS_CANVAS3D_BLEND_FUNC_SRC_ALPHA_SATURATE: - return GL_SRC_ALPHA_SATURATE; - default: - return GL_ZERO; - } -} - -#ifndef GL_GLES -static inline GLenum -_gl_comparison_func_get(Evas_Canvas3D_Comparison comparison_func) -{ - switch (comparison_func) - { - case EVAS_CANVAS3D_COMPARISON_NEVER: - return GL_NEVER; - case EVAS_CANVAS3D_COMPARISON_LESS: - return GL_LESS; - case EVAS_CANVAS3D_COMPARISON_EQUAL: - return GL_EQUAL; - case EVAS_CANVAS3D_COMPARISON_LEQUAL: - return GL_LEQUAL; - case EVAS_CANVAS3D_COMPARISON_GREATER: - return GL_GREATER; - case EVAS_CANVAS3D_COMPARISON_NOTEQUAL: - return GL_NOTEQUAL; - case EVAS_CANVAS3D_COMPARISON_GEQUAL: - return GL_GEQUAL; - case EVAS_CANVAS3D_COMPARISON_ALWAYS: - return GL_ALWAYS; - default: - return GL_ALWAYS; - } -} -#endif - -static inline void -_renderer_vertex_attrib_array_enable(E3D_Renderer *renderer, int index) -{ - if (renderer->vertex_attrib_enable[index]) - return; - - glEnableVertexAttribArray(index); - renderer->vertex_attrib_enable[index] = EINA_TRUE; -} - -static inline void -_renderer_vertex_attrib_array_disable(E3D_Renderer *renderer, int index) -{ - if (!renderer->vertex_attrib_enable[index]) - return; - - glDisableVertexAttribArray(index); - renderer->vertex_attrib_enable[index] = EINA_FALSE; -} - -static inline void -_renderer_vertex_attrib_pointer_set(E3D_Renderer *renderer EINA_UNUSED, int index, - const Evas_Canvas3D_Vertex_Buffer *buffer) -{ - glVertexAttribPointer(index, buffer->element_count, GL_FLOAT, - GL_FALSE, buffer->stride, buffer->data); -} - -static inline void -_renderer_elements_draw(E3D_Renderer *renderer EINA_UNUSED, Evas_Canvas3D_Vertex_Assembly assembly, - int count, Evas_Canvas3D_Index_Format format, const void *indices) -{ - GLenum mode = _gl_assembly_get(assembly); - - if (format == EVAS_CANVAS3D_INDEX_FORMAT_UNSIGNED_BYTE) - glDrawElements(mode, count, GL_UNSIGNED_BYTE, indices); - else if (format == EVAS_CANVAS3D_INDEX_FORMAT_UNSIGNED_SHORT) - glDrawElements(mode, count, GL_UNSIGNED_SHORT, indices); -} - -static inline void -_renderer_array_draw(E3D_Renderer *renderer EINA_UNUSED, - Evas_Canvas3D_Vertex_Assembly assembly, int count) -{ - GLenum mode = _gl_assembly_get(assembly); - - glDrawArrays(mode, 0, count); -} - -static inline void -_renderer_program_use(E3D_Renderer *renderer ,E3D_Program *program) -{ - GLuint prog = e3d_program_id_get(program); - - if (renderer->program != prog) - { - glUseProgram(prog); - renderer->program = prog; - } -} - -static inline void -_renderer_texture_bind(E3D_Renderer *renderer, E3D_Draw_Data *data) -{ - int i; - - for (i = 0; i < EVAS_CANVAS3D_MATERIAL_ATTRIB_COUNT; i++) - { - if (data->materials[i].tex0) - { - if (renderer->textures[data->materials[i].sampler0] != data->materials[i].tex0) - { - glActiveTexture(GL_TEXTURE0 + data->materials[i].sampler0); - glBindTexture(GL_TEXTURE_2D, data->materials[i].tex0->tex); - e3d_texture_param_update(data->materials[i].tex0); - - renderer->textures[data->materials[i].sampler0] = data->materials[i].tex0; - } - } - - if (data->materials[i].tex1) - { - if (renderer->textures[data->materials[i].sampler1] != data->materials[i].tex1) - { - glActiveTexture(GL_TEXTURE0 + data->materials[i].sampler1); - glBindTexture(GL_TEXTURE_2D, data->materials[i].tex1->tex); - e3d_texture_param_update(data->materials[i].tex1); - - renderer->textures[data->materials[i].sampler1] = data->materials[i].tex1; - } - } - } - if ((data->flags & E3D_SHADER_FLAG_SHADOWED) && (renderer->smap_sampler != data->smap_sampler)) - { - glActiveTexture(GL_TEXTURE0 + data->smap_sampler); - glBindTexture(GL_TEXTURE_2D, renderer->texDepth); - renderer->smap_sampler = data->smap_sampler; - } - if (renderer->render_to_texture) - { - glActiveTexture(GL_TEXTURE0 + data->colortex_sampler); - glBindTexture(GL_TEXTURE_2D, renderer->texcolorpick); - renderer->colortex_sampler = data->colortex_sampler; - } -} - -static inline void -_renderer_depth_test_enable(E3D_Renderer *renderer, Eina_Bool enable) -{ - if (renderer->depth_test_enable != enable) - { - if (enable) - { - glEnable(GL_DEPTH_TEST); - /* Use default depth func. */ - } - else - { - glDisable(GL_DEPTH_TEST); - } - - renderer->depth_test_enable = enable; - } -} - -E3D_Renderer * -e3d_renderer_new(void) -{ - E3D_Renderer *renderer = NULL; - - renderer = (E3D_Renderer *)calloc(1, sizeof(E3D_Renderer)); - - if (renderer == NULL) - { - ERR("Failed to allocate memory."); - return NULL; - } - - return renderer; -} - -void -e3d_renderer_free(E3D_Renderer *renderer) -{ - Eina_List *l; - E3D_Program *p; - - EINA_LIST_FOREACH(renderer->programs, l, p) - { - e3d_program_free(p); - } - - eina_list_free(renderer->programs); -} - -void -e3d_renderer_target_set(E3D_Renderer *renderer, E3D_Drawable *target) -{ - if (renderer->fbo == target->fbo) - return; - - glBindFramebuffer(GL_FRAMEBUFFER, target->fbo); - glViewport(0, 0, target->w, target->h); - renderer->fbo = target->fbo; - renderer->texDepth = target->texDepth; - renderer->texcolorpick = target->texcolorpick; - renderer->render_to_texture = EINA_FALSE; -} - -void -e3d_renderer_color_pick_target_set(E3D_Renderer *renderer, E3D_Drawable *drawable) -{ - glBindFramebuffer(GL_FRAMEBUFFER, drawable->color_pick_fb_id); - glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, - GL_TEXTURE_2D, drawable->texcolorpick, 0); -#ifdef GL_GLES - glBindRenderbuffer(GL_RENDERBUFFER, drawable->depth_stencil_buf); - glFramebufferTexture2D(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, - GL_TEXTURE_2D, drawable->depth_stencil_buf, 0); -#else - glBindRenderbuffer(GL_RENDERBUFFER, drawable->depth_stencil_buf); - glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_STENCIL_ATTACHMENT, - GL_RENDERBUFFER, drawable->depth_stencil_buf); -#endif - glViewport(0, 0, drawable->w, drawable->h); - renderer->texDepth = drawable->texDepth; - renderer->texcolorpick = drawable->texcolorpick; - renderer->render_to_texture = EINA_TRUE; -} - -Eina_Bool -e3d_renderer_rendering_to_texture_get(E3D_Renderer *renderer) -{ - return renderer->render_to_texture; -} - -void -e3d_renderer_clear(E3D_Renderer *renderer EINA_UNUSED, const Evas_Color *color) -{ - glClearColor(color->r, color->g, color->b, color->a); - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); -} - -void -e3d_renderer_draw(E3D_Renderer *renderer, E3D_Draw_Data *data) -{ - Eina_List *l; - E3D_Program *program = NULL, *p; - int i, index = 0; - - _renderer_depth_test_enable(renderer, EINA_TRUE); - - EINA_LIST_FOREACH(renderer->programs, l, p) - { - if (e3d_program_shader_mode_get(p) == data->mode && - e3d_program_shader_flags_get(p) == data->flags) - { - program = p; - break; - } - } - - if (program == NULL) - { - program = e3d_program_new(data->mode, data->flags); - - if (program == NULL) - { - ERR("Failed to create shader program."); - return; - } - - renderer->programs = eina_list_append(renderer->programs, program); - } - - _renderer_program_use(renderer, program); - e3d_program_uniform_upload(program, data); - _renderer_texture_bind(renderer, data); - - /* Set up vertex attrib pointers. */ - index = 0; - - for (i = 0; i < EVAS_CANVAS3D_VERTEX_ATTRIB_COUNT; i++) - { - const Evas_Canvas3D_Vertex_Buffer *buffer; - - buffer = &data->vertices[i].vertex0; - - if (buffer->data != NULL) - { - _renderer_vertex_attrib_array_enable(renderer, index); - _renderer_vertex_attrib_pointer_set(renderer, index, buffer); - index++; - } - - buffer = &data->vertices[i].vertex1; - - if (buffer->data != NULL) - { - _renderer_vertex_attrib_array_enable(renderer, index); - _renderer_vertex_attrib_pointer_set(renderer, index, buffer); - index++; - } - } - - while (index < E3D_MAX_VERTEX_ATTRIB_COUNT) - _renderer_vertex_attrib_array_disable(renderer, index++); - - if (data->blending) - { - glEnable(GL_BLEND); - glBlendFunc(_gl_blend_func_get(data->blend_sfactor), _gl_blend_func_get(data->blend_dfactor)); - } - else glDisable(GL_BLEND); - -#ifndef GL_GLES - if (data->alpha_test_enabled) - { - glEnable(GL_ALPHA_TEST); - glAlphaFunc(_gl_comparison_func_get(data->alpha_comparison), - (GLclampf)data->alpha_ref_value); - } - else glDisable(GL_ALPHA_TEST); -#endif - - if (data->indices) - { - _renderer_elements_draw(renderer, data->assembly, data->index_count, - data->index_format, data->indices); - } - else - { - _renderer_array_draw(renderer, data->assembly, data->vertex_count); - } -} - -void -e3d_renderer_flush(E3D_Renderer *renderer EINA_UNUSED) -{ - glFlush(); -} - -GLint -e3d_renderer_sampler_colortexture_get(E3D_Renderer *renderer) -{ - return renderer->colortex_sampler; -} - -GLint -e3d_renderer_sampler_shadowmap_get(E3D_Renderer *renderer) -{ - return renderer->smap_sampler; -} diff --git a/src/modules/evas/engines/gl_common/evas_gl_3d_shader.c b/src/modules/evas/engines/gl_common/evas_gl_3d_shader.c deleted file mode 100644 index 95be4a63fa..0000000000 --- a/src/modules/evas/engines/gl_common/evas_gl_3d_shader.c +++ /dev/null @@ -1,751 +0,0 @@ -#include "evas_gl_3d_private.h" -#include "shader_3d/evas_gl_3d_shaders.x" - -typedef enum _E3D_Uniform -{ - E3D_UNIFORM_MATRIX_MVP, - E3D_UNIFORM_MATRIX_MV, - E3D_UNIFORM_MATRIX_NORMAL, - E3D_UNIFORM_MATRIX_LIGHT, - - E3D_UNIFORM_POSITION_WEIGHT, - E3D_UNIFORM_NORMAL_WEIGHT, - E3D_UNIFORM_TANGENT_WEIGHT, - E3D_UNIFORM_COLOR_WEIGHT, - E3D_UNIFORM_TEXCOORD_WEIGHT, - - E3D_UNIFORM_TEXTURE_WEIGHT_AMBIENT, - E3D_UNIFORM_TEXTURE_WEIGHT_DIFFUSE, - E3D_UNIFORM_TEXTURE_WEIGHT_SPECULAR, - E3D_UNIFORM_TEXTURE_WEIGHT_EMISSION, - E3D_UNIFORM_TEXTURE_WEIGHT_NORMAL, - - E3D_UNIFORM_TEXTURE_AMBIENT0, - E3D_UNIFORM_TEXTURE_DIFFUSE0, - E3D_UNIFORM_TEXTURE_SPECULAR0, - E3D_UNIFORM_TEXTURE_EMISSION0, - E3D_UNIFORM_TEXTURE_NORMAL0, - - E3D_UNIFORM_TEXTURE_AMBIENT1, - E3D_UNIFORM_TEXTURE_DIFFUSE1, - E3D_UNIFORM_TEXTURE_SPECULAR1, - E3D_UNIFORM_TEXTURE_EMISSION1, - E3D_UNIFORM_TEXTURE_NORMAL1, - - E3D_UNIFORM_TEXTURE_MATRIX_TRANSFORM_AMBIENT0, - E3D_UNIFORM_TEXTURE_MATRIX_TRANSFORM_DIFFUSE0, - E3D_UNIFORM_TEXTURE_MATRIX_TRANSFORM_SPECULAR0, - E3D_UNIFORM_TEXTURE_MATRIX_TRANSFORM_EMISSION0, - E3D_UNIFORM_TEXTURE_MATRIX_TRANSFORM_NORMAL0, - - E3D_UNIFORM_TEXTURE_MATRIX_TRANSFORM_AMBIENT1, - E3D_UNIFORM_TEXTURE_MATRIX_TRANSFORM_DIFFUSE1, - E3D_UNIFORM_TEXTURE_MATRIX_TRANSFORM_SPECULAR1, - E3D_UNIFORM_TEXTURE_MATRIX_TRANSFORM_EMISSION1, - E3D_UNIFORM_TEXTURE_MATRIX_TRANSFORM_NORMAL1, - - E3D_UNIFORM_SHADOWMAP, - E3D_UNIFORM_SHADOWS_PCF_STEP, - E3D_UNIFORM_SHADOWS_PCF_SIZE, - E3D_UNIFORM_SHADOWS_CONSTANT_BIAS, - - E3D_UNIFORM_LIGHT_POSITION, - E3D_UNIFORM_LIGHT_SPOT_DIR, - E3D_UNIFORM_LIGHT_SPOT_EXP, - E3D_UNIFORM_LIGHT_SPOT_CUTOFF_COS, - E3D_UNIFORM_LIGHT_ATTENUATION, - E3D_UNIFORM_LIGHT_AMBIENT, - E3D_UNIFORM_LIGHT_DIFFUSE, - E3D_UNIFORM_LIGHT_SPECULAR, - - E3D_UNIFORM_MATERIAL_AMBIENT, - E3D_UNIFORM_MATERIAL_DIFFUSE, - E3D_UNIFORM_MATERIAL_SPECULAR, - E3D_UNIFORM_MATERIAL_EMISSION, - E3D_UNIFORM_MATERIAL_SHININESS, - E3D_UNIFORM_FOG_FACTOR, - E3D_UNIFORM_FOG_COLOR, - E3D_UNIFORM_COLOR_PICK, - E3D_UNIFORM_ALPHATEST_COMPARISON, - E3D_UNIFORM_ALPHATEST_REFVALUE, - E3D_UNIFORM_RENDER_TO_TEXTURE, - E3D_UNIFORM_FRAME_SIZE_H, - E3D_UNIFORM_FRAME_SIZE_W, - E3D_UNIFORM_COUNT, -} E3D_Uniform; - -static const char *shader_flag_names[] = -{ - "NORMALIZE_NORMALS", - "VERTEX_POSITION", - "VERTEX_POSITION_BLEND", - "VERTEX_NORMAL", - "VERTEX_NORMAL_BLEND", - "VERTEX_TANGENT", - "VERTEX_TANGENT_BLEND", - "VERTEX_COLOR", - "VERTEX_COLOR_BLEND", - "VERTEX_TEXCOORD", - "VERTEX_TEXCOORD_BLEND", - "LIGHT_DIRECTIONAL", - "LIGHT_SPOT", - "LIGHT_ATTENUATION", - "AMBIENT", - "DIFFUSE", - "SPECULAR", - "EMISSION", - "DIFFUSE_TEXTURE", - "AMBIENT_TEXTURE", - "SPECULAR_TEXTURE", - "EMISSION_TEXTURE", - "NORMAL_TEXTURE", - "DIFFUSE_TEXTURE_BLEND", - "AMBIENT_TEXTURE_BLEND", - "SPECULAR_TEXTURE_BLEND", - "EMISSION_TEXTURE_BLEND", - "NORMAL_TEXTURE_BLEND", - "FOG_ENABLED", - "ALPHA_TEST_ENABLED", - "SHADOWED" -}; - -typedef struct _E3D_Shader_String -{ - char *str; - int size; - int count; -} E3D_Shader_String; - -struct _E3D_Program -{ - GLuint vert; - GLuint frag; - GLuint prog; - - E3D_Shader_Flag flags; - Evas_Canvas3D_Shader_Mode mode; - - GLint uniform_locations[E3D_UNIFORM_COUNT]; -}; - -static void _shader_string_init(E3D_Shader_String *string) -{ - string->str = NULL; - string->size = 0; - string->count = 0; -} - -static void _shader_string_fini(E3D_Shader_String *string) -{ - if (string->str) - { - free(string->str); - _shader_string_init(string); - } -} - -void _shader_string_add(E3D_Shader_String *shader, const char *str) -{ - int len; - - if (str == NULL) - return; - - len = strlen(str); - - if ((shader->size - shader->count) < len) - { - int new_size = (shader->count + len) * 2; - char *new_buf = (char *)malloc(new_size + 1); - - if (shader->str) - { - memcpy(new_buf, shader->str, sizeof(char) * shader->count); - free(shader->str); - } - - shader->str = new_buf; - shader->size = new_size; - } - - memcpy(&shader->str[shader->count], str, len + 1); - shader->count += len; -} - -void _shader_flags_add(E3D_Shader_String *shader, E3D_Shader_Flag flags) -{ - int i; - - for (i = 0; i < E3D_SHADER_FLAG_COUNT; i++) - if (flags & (1 << i)) - { - int len = strlen("#define ") + strlen(shader_flag_names[i]) + 2; - char str[len]; - snprintf(str, len, "#define %s\n", shader_flag_names[i]); - _shader_string_add(shader, str); - } - - if(_flags_need_tex_coord(flags)) - _shader_string_add(shader, "#define NEED_TEX_COORD\n"); -} - -static inline Eina_Bool -_shader_compile(GLuint shader, const char *src) -{ - GLint ok = 0; - - glShaderSource(shader, 1, &src, NULL); - glCompileShader(shader); - glGetShaderiv(shader, GL_COMPILE_STATUS, &ok); - - if (!ok) - { - GLchar *log_str; - GLint len; - GLsizei info_len; - - glGetShaderiv(shader, GL_INFO_LOG_LENGTH, &len); - log_str = (GLchar *)malloc(len); - glGetShaderInfoLog(shader, len, &info_len, log_str); - ERR("Shader compilation failed: %s", log_str); - DBG("Shader source was:\n%s", src); - free(log_str); - - return EINA_FALSE; - } - - return EINA_TRUE; -} - -static inline void -_program_vertex_attrib_bind(E3D_Program *program) -{ - GLint index = 0; - - if (program->flags & E3D_SHADER_FLAG_VERTEX_POSITION) - glBindAttribLocation(program->prog, index++, "aPosition0"); - - if (program->flags & E3D_SHADER_FLAG_VERTEX_POSITION_BLEND) - glBindAttribLocation(program->prog, index++, "aPosition1"); - - if (program->flags & E3D_SHADER_FLAG_VERTEX_NORMAL) - glBindAttribLocation(program->prog, index++, "aNormal0"); - - if (program->flags & E3D_SHADER_FLAG_VERTEX_NORMAL_BLEND) - glBindAttribLocation(program->prog, index++, "aNormal1"); - - if (program->flags & E3D_SHADER_FLAG_VERTEX_TANGENT) - glBindAttribLocation(program->prog, index++, "aTangent0"); - - if (program->flags & E3D_SHADER_FLAG_VERTEX_TANGENT_BLEND) - glBindAttribLocation(program->prog, index++, "aTangent1"); - - if (program->flags & E3D_SHADER_FLAG_VERTEX_COLOR) - glBindAttribLocation(program->prog, index++, "aColor0"); - - if (program->flags & E3D_SHADER_FLAG_VERTEX_COLOR_BLEND) - glBindAttribLocation(program->prog, index++, "aColor1"); - - if (program->flags & E3D_SHADER_FLAG_VERTEX_TEXCOORD) - glBindAttribLocation(program->prog, index++, "aTexCoord0"); - - if (program->flags & E3D_SHADER_FLAG_VERTEX_TEXCOORD_BLEND) - glBindAttribLocation(program->prog, index++, "aTexCoord1"); -} - -static inline Eina_Bool -_program_build(E3D_Program *program, const char *vert_src, const char *frag_src) -{ - GLint ok = 0; - - /* Create OpenGL vertex & fragment shader object. */ - program->vert = glCreateShader(GL_VERTEX_SHADER); - program->frag = glCreateShader(GL_FRAGMENT_SHADER); - - /* Commpile vertex shader. */ - if (!_shader_compile(program->vert, vert_src)) - { - ERR("Faield to compile vertex shader."); - return EINA_FALSE; - } - - /* Compile fragment shader. */ - if (!_shader_compile(program->frag, frag_src)) - { - ERR("Failed to compile fragment shader."); - return EINA_FALSE; - } - - /* Create OpenGL program object. */ - program->prog = glCreateProgram(); - - /* Attach shaders. */ - glAttachShader(program->prog, program->vert); - glAttachShader(program->prog, program->frag); - - _program_vertex_attrib_bind(program); - /* Link program. */ - glLinkProgram(program->prog); - - /* Check link status. */ - glGetProgramiv(program->prog, GL_LINK_STATUS, &ok); - - if (!ok) - { - GLchar *log_str; - GLint len = 0; - GLsizei info_len; - - glGetProgramiv(program->prog, GL_INFO_LOG_LENGTH, &len); - log_str = (GLchar *)malloc(len); - glGetProgramInfoLog(program->prog, len, &info_len, log_str); - ERR("Shader link failed.\n%s", log_str); - free(log_str); - return EINA_FALSE; - } - - return EINA_TRUE; -} - -static const char *uniform_names[] = -{ - "uMatrixMvp", - "uMatrixModelview", - "uMatrixNormal", - "uMatrixLight", - "uPositionWeight", - "uNormalWeight", - "uTangentWeight", - "uColorWeight", - "uTexCoordWeight", - "uTextureAmbientWeight", - "uTextureDiffuseWeight", - "uTextureSpecularWeight", - "uTextureEmissionWeight", - "uTextureNormalWeight", - "uTextureAmbient0", - "uTextureDiffuse0", - "uTextureSpecular0", - "uTextureEmission0", - "uTextureNormal0", - "uTextureAmbient1", - "uTextureDiffuse1", - "uTextureSpecular1", - "uTextureEmission1", - "uTextureNormal1", - "uTextureMatrixTransformAmbient0", - "uTextureMatrixTransformDiffuse0", - "uTextureMatrixTransformSpecular0", - "uTextureMatrixTransformEmission0", - "uTextureMatrixTransformNormal0", - "uTextureMatrixTransformAmbient1", - "uTextureMatrixTransformDiffuse1", - "uTextureMatrixTransformSpecular1", - "uTextureMatrixTransformEmission1", - "uTextureMatrixTransformNormal1", - "uShadowMap", - "uShadowsPCFStep", - "uShadowsPCFSize", - "uShadowsConstantBias", - "uLightPosition", - "uLightSpotDir", - "uLightSpotExp", - "uLightSpotCutoffCos", - "uLightAtten", - "uLightAmbient", - "uLightDiffuse", - "uLightSpecular", - "uMaterialAmbient", - "uMaterialDiffuse", - "uMaterialSpecular", - "uMaterialEmission", - "uMaterialShininess", - "uFogFactor", - "uFogColor", - "uColorPick", - "uAlphaTestComparison", - "uAlphaTestRefValue", - "uColorTexture", - "uFrameSizeH", - "uFrameSizeW" -}; - -static inline void -_program_uniform_init(E3D_Program *program) -{ - int i; - for (i = 0; i < E3D_UNIFORM_COUNT; i++) - { - program->uniform_locations[i] = glGetUniformLocation(program->prog, uniform_names[i]); - } -} - -#define UNIFORM_MATRIX3_FOREACH(m, data) \ - m[0] = data.xx; \ - m[1] = data.xy; \ - m[2] = data.xz; \ - m[3] = data.yx; \ - m[4] = data.yy; \ - m[5] = data.yz; \ - m[6] = data.zx; \ - m[7] = data.zy; \ - m[8] = data.zz; - -#define UNIFORM_MATRIX4_FOREACH(m, data) \ - m[0] = data.xx; \ - m[1] = data.xy; \ - m[2] = data.xz; \ - m[3] = data.xw; \ - m[4] = data.yx; \ - m[5] = data.yy; \ - m[6] = data.yz; \ - m[7] = data.yw; \ - m[8] = data.zx; \ - m[9] = data.zy; \ - m[10] = data.zz; \ - m[11] = data.zw; \ - m[12] = data.wx; \ - m[13] = data.wy; \ - m[14] = data.wz; \ - m[15] = data.ww; - -static inline void -_uniform_upload(E3D_Uniform u, GLint loc, const E3D_Draw_Data *data) -{ -#define SET_TEX_COORD_TRANSFORM_MATRIX(attrib, tn) \ - if (data->materials[attrib].tex##tn) \ - { \ - float m[9]; \ - UNIFORM_MATRIX3_FOREACH(m, data->materials[attrib].tex##tn->trans); \ - glUniformMatrix3fv(loc, 1, EINA_FALSE, &m[0]); \ - } - - switch (u) - { - case E3D_UNIFORM_MATRIX_MVP: { - float m[16]; - UNIFORM_MATRIX4_FOREACH(m, data->matrix_mvp); - glUniformMatrix4fv(loc, 1, EINA_FALSE, &m[0]); - break; - } - case E3D_UNIFORM_MATRIX_MV: { - float m[16]; - UNIFORM_MATRIX4_FOREACH(m, data->matrix_mv); - glUniformMatrix4fv(loc, 1, EINA_FALSE, &m[0]); - break; - } - case E3D_UNIFORM_MATRIX_NORMAL: { - float m[9]; - UNIFORM_MATRIX3_FOREACH(m, data->matrix_normal); - glUniformMatrix3fv(loc, 1, EINA_FALSE, &m[0]); - break; - } - case E3D_UNIFORM_MATRIX_LIGHT: { - float m[16]; - UNIFORM_MATRIX4_FOREACH(m, data->matrix_light); - glUniformMatrix4fv(loc, 1, EINA_FALSE, &m[0]); - break; - } - case E3D_UNIFORM_POSITION_WEIGHT: - glUniform1f(loc, data->vertices[EVAS_CANVAS3D_VERTEX_ATTRIB_POSITION].weight); - break; - case E3D_UNIFORM_NORMAL_WEIGHT: - glUniform1f(loc, data->vertices[EVAS_CANVAS3D_VERTEX_ATTRIB_NORMAL].weight); - break; - case E3D_UNIFORM_TANGENT_WEIGHT: - glUniform1f(loc, data->vertices[EVAS_CANVAS3D_VERTEX_ATTRIB_TANGENT].weight); - break; - case E3D_UNIFORM_COLOR_WEIGHT: - glUniform1f(loc, data->vertices[EVAS_CANVAS3D_VERTEX_ATTRIB_COLOR].weight); - break; - case E3D_UNIFORM_TEXCOORD_WEIGHT: - glUniform1f(loc, data->vertices[EVAS_CANVAS3D_VERTEX_ATTRIB_TEXCOORD].weight); - break; - case E3D_UNIFORM_TEXTURE_WEIGHT_AMBIENT: - glUniform1f(loc, data->materials[EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT].texture_weight); - break; - case E3D_UNIFORM_TEXTURE_WEIGHT_DIFFUSE: - glUniform1f(loc, data->materials[EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE].texture_weight); - break; - case E3D_UNIFORM_TEXTURE_WEIGHT_SPECULAR: - glUniform1f(loc, data->materials[EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR].texture_weight); - break; - case E3D_UNIFORM_TEXTURE_WEIGHT_EMISSION: - glUniform1f(loc, data->materials[EVAS_CANVAS3D_MATERIAL_ATTRIB_EMISSION].texture_weight); - break; - case E3D_UNIFORM_TEXTURE_WEIGHT_NORMAL: - glUniform1f(loc, data->materials[EVAS_CANVAS3D_MATERIAL_ATTRIB_NORMAL].texture_weight); - break; - case E3D_UNIFORM_TEXTURE_AMBIENT0: - glUniform1i(loc, data->materials[EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT].sampler0); - break; - case E3D_UNIFORM_TEXTURE_DIFFUSE0: - glUniform1i(loc, data->materials[EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE].sampler0); - break; - case E3D_UNIFORM_TEXTURE_SPECULAR0: - glUniform1i(loc, data->materials[EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR].sampler0); - break; - case E3D_UNIFORM_TEXTURE_EMISSION0: - glUniform1i(loc, data->materials[EVAS_CANVAS3D_MATERIAL_ATTRIB_EMISSION].sampler0); - break; - case E3D_UNIFORM_TEXTURE_NORMAL0: - glUniform1i(loc, data->materials[EVAS_CANVAS3D_MATERIAL_ATTRIB_NORMAL].sampler0); - break; - case E3D_UNIFORM_TEXTURE_AMBIENT1: - glUniform1i(loc, data->materials[EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT].sampler1); - break; - case E3D_UNIFORM_TEXTURE_DIFFUSE1: - glUniform1i(loc, data->materials[EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE].sampler1); - break; - case E3D_UNIFORM_TEXTURE_SPECULAR1: - glUniform1i(loc, data->materials[EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR].sampler1); - break; - case E3D_UNIFORM_TEXTURE_EMISSION1: - glUniform1i(loc, data->materials[EVAS_CANVAS3D_MATERIAL_ATTRIB_EMISSION].sampler1); - break; - case E3D_UNIFORM_TEXTURE_NORMAL1: - glUniform1i(loc, data->materials[EVAS_CANVAS3D_MATERIAL_ATTRIB_NORMAL].sampler1); - break; - case E3D_UNIFORM_TEXTURE_MATRIX_TRANSFORM_AMBIENT0: { - SET_TEX_COORD_TRANSFORM_MATRIX(EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, 0) - break; - } - case E3D_UNIFORM_TEXTURE_MATRIX_TRANSFORM_DIFFUSE0: { - SET_TEX_COORD_TRANSFORM_MATRIX(EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, 0) - break; - } - case E3D_UNIFORM_TEXTURE_MATRIX_TRANSFORM_SPECULAR0: { - SET_TEX_COORD_TRANSFORM_MATRIX(EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR, 0) - break; - } - case E3D_UNIFORM_TEXTURE_MATRIX_TRANSFORM_EMISSION0: { - SET_TEX_COORD_TRANSFORM_MATRIX(EVAS_CANVAS3D_MATERIAL_ATTRIB_EMISSION, 0) - break; - } - case E3D_UNIFORM_TEXTURE_MATRIX_TRANSFORM_NORMAL0: { - SET_TEX_COORD_TRANSFORM_MATRIX(EVAS_CANVAS3D_MATERIAL_ATTRIB_NORMAL, 0) - break; - } - case E3D_UNIFORM_TEXTURE_MATRIX_TRANSFORM_AMBIENT1: { - SET_TEX_COORD_TRANSFORM_MATRIX(EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, 1) - break; - } - case E3D_UNIFORM_TEXTURE_MATRIX_TRANSFORM_DIFFUSE1: { - SET_TEX_COORD_TRANSFORM_MATRIX(EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, 1) - break; - } - case E3D_UNIFORM_TEXTURE_MATRIX_TRANSFORM_SPECULAR1: { - SET_TEX_COORD_TRANSFORM_MATRIX(EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR, 1) - break; - } - case E3D_UNIFORM_TEXTURE_MATRIX_TRANSFORM_EMISSION1: { - SET_TEX_COORD_TRANSFORM_MATRIX(EVAS_CANVAS3D_MATERIAL_ATTRIB_EMISSION, 1) - break; - } - case E3D_UNIFORM_TEXTURE_MATRIX_TRANSFORM_NORMAL1: { - SET_TEX_COORD_TRANSFORM_MATRIX(EVAS_CANVAS3D_MATERIAL_ATTRIB_NORMAL, 1) - break; - } - case E3D_UNIFORM_SHADOWMAP: - glUniform1i(loc, data->smap_sampler); - break; - case E3D_UNIFORM_SHADOWS_PCF_STEP: - glUniform1f(loc, data->pcf_step); - break; - case E3D_UNIFORM_SHADOWS_PCF_SIZE: - glUniform1f(loc, data->pcf_size); - break; - case E3D_UNIFORM_SHADOWS_CONSTANT_BIAS: - glUniform1f(loc, data->constant_bias); - break; - case E3D_UNIFORM_LIGHT_POSITION: - glUniform4f(loc, data->light.position.x, data->light.position.y, - data->light.position.z, data->light.position.w); - break; - case E3D_UNIFORM_LIGHT_SPOT_DIR: - glUniform3f(loc, data->light.spot_dir.x, data->light.spot_dir.y, data->light.spot_dir.z); - break; - case E3D_UNIFORM_LIGHT_SPOT_EXP: - glUniform1f(loc, data->light.spot_exp); - break; - case E3D_UNIFORM_LIGHT_SPOT_CUTOFF_COS: - glUniform1f(loc, data->light.spot_cutoff_cos); - break; - case E3D_UNIFORM_LIGHT_ATTENUATION: - glUniform3f(loc, data->light.atten.x, data->light.atten.y, data->light.atten.z); - break; - case E3D_UNIFORM_LIGHT_AMBIENT: - glUniform4f(loc, - data->light.ambient.r, data->light.ambient.g, - data->light.ambient.b, data->light.ambient.a); - break; - case E3D_UNIFORM_LIGHT_DIFFUSE: - glUniform4f(loc, - data->light.diffuse.r, data->light.diffuse.g, - data->light.diffuse.b, data->light.diffuse.a); - break; - case E3D_UNIFORM_LIGHT_SPECULAR: - glUniform4f(loc, - data->light.specular.r, data->light.specular.g, - data->light.specular.b, data->light.specular.a); - break; - case E3D_UNIFORM_MATERIAL_AMBIENT: - glUniform4f(loc, - data->materials[EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT].color.r, - data->materials[EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT].color.g, - data->materials[EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT].color.b, - data->materials[EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT].color.a); - break; - case E3D_UNIFORM_MATERIAL_DIFFUSE: - glUniform4f(loc, - data->materials[EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE].color.r, - data->materials[EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE].color.g, - data->materials[EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE].color.b, - data->materials[EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE].color.a); - break; - case E3D_UNIFORM_MATERIAL_SPECULAR: - glUniform4f(loc, - data->materials[EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR].color.r, - data->materials[EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR].color.g, - data->materials[EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR].color.b, - data->materials[EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR].color.a); - break; - case E3D_UNIFORM_MATERIAL_EMISSION: - glUniform4f(loc, - data->materials[EVAS_CANVAS3D_MATERIAL_ATTRIB_EMISSION].color.r, - data->materials[EVAS_CANVAS3D_MATERIAL_ATTRIB_EMISSION].color.g, - data->materials[EVAS_CANVAS3D_MATERIAL_ATTRIB_EMISSION].color.b, - data->materials[EVAS_CANVAS3D_MATERIAL_ATTRIB_EMISSION].color.a); - break; - case E3D_UNIFORM_MATERIAL_SHININESS: - glUniform1f(loc, data->shininess); - break; - case E3D_UNIFORM_FOG_FACTOR: - glUniform1f(loc, data->fog_color.a); - break; - case E3D_UNIFORM_FOG_COLOR: - glUniform4f(loc, data->fog_color.r, data->fog_color.g, data->fog_color.b, 1); - break; - case E3D_UNIFORM_COLOR_PICK: - glUniform4f(loc, data->color_pick_key.r, data->color_pick_key.g, - data->color_pick_key.b, 1.0); - break; - case E3D_UNIFORM_ALPHATEST_COMPARISON: - glUniform1i(loc, - (data->alpha_comparison ? data->alpha_comparison : EVAS_CANVAS3D_COMPARISON_GREATER)); - break; - case E3D_UNIFORM_ALPHATEST_REFVALUE: - glUniform1f(loc, (data->alpha_ref_value ? data->alpha_ref_value : 0.0)); - break; - case E3D_UNIFORM_RENDER_TO_TEXTURE: - glUniform1i(loc, data->colortex_sampler); - break; - case E3D_UNIFORM_FRAME_SIZE_H: - glUniform1f(loc, data->frame_size_h); - break; - case E3D_UNIFORM_FRAME_SIZE_W: - glUniform1f(loc, data->frame_size_w); - break; - default: - ERR("Invalid uniform ID."); - break; - } -#undef SET_TEX_SHIFT -} - -void -e3d_program_uniform_upload(E3D_Program *program, const E3D_Draw_Data *data) -{ - int i; - for (i = 0; i < E3D_UNIFORM_COUNT; i++) - { - if (program->uniform_locations[i] != -1) - { - _uniform_upload(i, program->uniform_locations[i], data); - } - } -} - -E3D_Program * -e3d_program_new(Evas_Canvas3D_Shader_Mode mode, E3D_Shader_Flag flags) -{ - E3D_Shader_String vert, frag; - E3D_Program *program = NULL; - - _shader_string_init(&vert); - _shader_string_init(&frag); - - program = (E3D_Program *)calloc(1, sizeof(E3D_Program)); - - if (program == NULL) - { - ERR("Failed to allocate memory."); - return NULL; - } - - program->prog = glCreateProgram(); - program->vert = glCreateShader(GL_VERTEX_SHADER); - program->frag = glCreateShader(GL_FRAGMENT_SHADER); - program->mode = mode; - program->flags = flags; - - _shader_flags_add(&vert, flags); - _shader_string_add(&frag, vert.str); - - _shader_string_add(&vert, vertex_shaders[mode]); - _shader_string_add(&frag, fragment_shaders[mode]); - - if (! _program_build(program, vert.str, frag.str)) - goto error; - - _program_uniform_init(program); - - _shader_string_fini(&vert); - _shader_string_fini(&frag); - - return program; - -error: - if (program->prog) - glDeleteProgram(program->prog); - - if (program->vert) - glDeleteShader(program->vert); - - if (program->frag) - glDeleteShader(program->frag); - - _shader_string_fini(&vert); - _shader_string_fini(&frag); - - free(program); - - return NULL; -} - -void -e3d_program_free(E3D_Program *program) -{ - glDeleteProgram(program->prog); - glDeleteShader(program->vert); - glDeleteShader(program->frag); - free(program); -} - -GLuint -e3d_program_id_get(const E3D_Program *program) -{ - return program->prog; -} - -Evas_Canvas3D_Shader_Mode -e3d_program_shader_mode_get(const E3D_Program *program) -{ - return program->mode; -} - -E3D_Shader_Flag -e3d_program_shader_flags_get(const E3D_Program *program) -{ - return program->flags; -} diff --git a/src/modules/evas/engines/gl_common/evas_gl_common.h b/src/modules/evas/engines/gl_common/evas_gl_common.h index e902cd6b47..bcd131a146 100644 --- a/src/modules/evas/engines/gl_common/evas_gl_common.h +++ b/src/modules/evas/engines/gl_common/evas_gl_common.h @@ -979,8 +979,6 @@ _comp_tex_sub_2d(Evas_Engine_GL_Context *gc, int x, int y, int w, int h, int fmt #endif -#include "evas_gl_3d_common.h" - #undef EAPI #define EAPI diff --git a/src/modules/evas/engines/gl_common/evas_gl_define.h b/src/modules/evas/engines/gl_common/evas_gl_define.h index 87502505e4..609fa957aa 100644 --- a/src/modules/evas/engines/gl_common/evas_gl_define.h +++ b/src/modules/evas/engines/gl_common/evas_gl_define.h @@ -285,7 +285,6 @@ Much of it is from Mesa, so their copyright is included as well. #ifndef EGL_PLATFORM_X11_KHR # define EGL_PLATFORM_X11_KHR 0x31D5 #endif -// Evas_3d require GL_BGR, but that's an extention and will not be necessary once we move to Evas_GL_Image #ifndef GL_BGR #define GL_BGR 0x80E0 #endif diff --git a/src/modules/evas/engines/gl_common/shader_3d/color_pick_frag.shd b/src/modules/evas/engines/gl_common/shader_3d/color_pick_frag.shd deleted file mode 100644 index faf43304c0..0000000000 --- a/src/modules/evas/engines/gl_common/shader_3d/color_pick_frag.shd +++ /dev/null @@ -1,15 +0,0 @@ -uniform vec4 uColorPick; - -FRAGMENT_SHADER_USE_ALPHA_TEST_GLES - -void main() -{ - vec4 color = uColorPick; - -#ifdef ALPHA_TEST_ENABLED - FRAGMENT_SHADER_ALPHA_TEST_GLES_APPLY(color) -#else - gl_FragColor = color; -#endif //ALPHA_TEST_ENABLED -} - diff --git a/src/modules/evas/engines/gl_common/shader_3d/color_pick_vert.shd b/src/modules/evas/engines/gl_common/shader_3d/color_pick_vert.shd deleted file mode 100644 index 62de54f149..0000000000 --- a/src/modules/evas/engines/gl_common/shader_3d/color_pick_vert.shd +++ /dev/null @@ -1,11 +0,0 @@ -uniform mat4 uMatrixMvp; - -VERTEX_SHADER_USE_POSITION - -void main() -{ - VERTEX_SHADER_POSITION - - gl_Position = uMatrixMvp * position; -} - diff --git a/src/modules/evas/engines/gl_common/shader_3d/diffuse_frag.shd b/src/modules/evas/engines/gl_common/shader_3d/diffuse_frag.shd deleted file mode 100644 index 9faa357ec2..0000000000 --- a/src/modules/evas/engines/gl_common/shader_3d/diffuse_frag.shd +++ /dev/null @@ -1,16 +0,0 @@ -FRAGMENT_SHADER_USE_TEX_COORD -FRAGMENT_SHADER_USE_FOG -FRAGMENT_SHADER_USE_DIFFUSE_TERM -FRAGMENT_SHADER_USE_ALPHA_TEST_GLES - -void main() { - vec4 color; - FRAGMENT_SHADER_TEXTURE_BLEND(DIFFUSE, Diffuse) -#ifdef ALPHA_TEST_ENABLED - FRAGMENT_SHADER_ALPHA_TEST_GLES_APPLY(color) -#else - gl_FragColor = color; -#endif //ALPHA_TEST_ENABLED - FRAGMENT_SHADER_FOG_APPLY -} - diff --git a/src/modules/evas/engines/gl_common/shader_3d/diffuse_vert.shd b/src/modules/evas/engines/gl_common/shader_3d/diffuse_vert.shd deleted file mode 100644 index 1a68155577..0000000000 --- a/src/modules/evas/engines/gl_common/shader_3d/diffuse_vert.shd +++ /dev/null @@ -1,13 +0,0 @@ -uniform mat4 uMatrixMvp; - -VERTEX_SHADER_USE_POSITION -VERTEX_SHADER_USE_TEXCOORD -VERTEX_SHADER_NEED_TEX_COORD - -void main() -{ - VERTEX_SHADER_POSITION - VERTEX_SHADER_TEXCOORD - - gl_Position = uMatrixMvp * position; -} diff --git a/src/modules/evas/engines/gl_common/shader_3d/evas_gl_3d_shaders.x b/src/modules/evas/engines/gl_common/shader_3d/evas_gl_3d_shaders.x deleted file mode 100644 index 12664a04ca..0000000000 --- a/src/modules/evas/engines/gl_common/shader_3d/evas_gl_3d_shaders.x +++ /dev/null @@ -1,2198 +0,0 @@ -/* DO NOT MODIFY THIS FILE AS IT IS AUTO-GENERATED */ -/* IF IT IS CHANGED PLEASE COMMIT THE CHANGES */ - -static const char vertex_color_vert_glsl[] = - "#ifdef GL_ES\n" - "precision mediump float;\n" - "precision mediump int;\n" - "precision lowp sampler2D;\n" - "#endif\n" - "uniform mat4 uMatrixMvp;\n" - "varying vec4 vColor;\n" - "#ifdef VERTEX_POSITION\n" - "attribute vec4 aPosition0;\n" - "#endif //VERTEX_POSITION\n" - "#ifdef VERTEX_POSITION_BLEND\n" - "attribute vec4 aPosition1;\n" - "uniform float uPositionWeight;\n" - "#endif //VERTEX_POSITION_BLEND\n" - "#ifdef VERTEX_COLOR\n" - "attribute vec4 aColor0;\n" - "#endif //VERTEX_COLOR\n" - "#ifdef VERTEX_COLOR_BLEND\n" - "attribute vec4 aColor1;\n" - "uniform float uColorWeight;\n" - "#endif //VERTEX_COLOR_BLEND\n" - "void main()\n" - "{\n" - " #ifdef VERTEX_POSITION_BLEND\n" - " vec4 position = mix(aPosition1, aPosition0, uPositionWeight);\n" - " position = vec4(position.xyz, 1.0);\n" - "#else\n" - "#ifdef VERTEX_POSITION\n" - " vec4 position = vec4(aPosition0.xyz, 1.0);\n" - "#endif // VERTEX_POSITION\n" - "#endif //VERTEX_POSITION_BLEND\n" - "#ifdef VERTEX_COLOR_BLEND\n" - " vec4 color = aColor0 * uColorWeight + aColor1 * (1.0 - uColorWeight);\n" - "#else\n" - "#ifdef VERTEX_COLOR\n" - " vec4 color = aColor0;\n" - "#endif //VERTEX_COLOR\n" - "#endif //VERTEX_COLOR_BLEND\n" - " vColor = color;\n" - " gl_Position = uMatrixMvp * position;\n" - "}\n"; - -static const char vertex_color_frag_glsl[] = - "#ifdef GL_ES\n" - "precision mediump float;\n" - "precision mediump int;\n" - "precision lowp sampler2D;\n" - "#endif\n" - "varying vec4 vColor;\n" - "#ifdef FOG_ENABLED\n" - "uniform float uFogFactor;\n" - "uniform vec4 uFogColor;\n" - "#endif //FOG_ENABLED\n" - "uniform int uAlphaTestComparison;\n" - "uniform float uAlphaTestRefValue;\n" - "void main()\n" - "{\n" - "#ifdef ALPHA_TEST_ENABLED\n" - " /*uAlphaTestComparison is value of the Evas_3D_Comparison type*/\n" - " const float p = 1000000.0;\n" - " float acolor = floor(vColor.a * p);\n" - " float refvalue = floor(uAlphaTestRefValue * p);\n" - " if (uAlphaTestComparison == 0) discard;\n" - " else if (uAlphaTestComparison == 1)\n" - " {\n" - " if (acolor < refvalue) gl_FragColor = vColor;\n" - " else discard;\n" - " }\n" - " else if (uAlphaTestComparison == 2)\n" - " {\n" - " if (acolor == refvalue) gl_FragColor = vColor;\n" - " else discard;\n" - " }\n" - " else if (uAlphaTestComparison == 3)\n" - " {\n" - " if (acolor <= refvalue) gl_FragColor = vColor;\n" - " else discard;\n" - " }\n" - " else if (uAlphaTestComparison == 4)\n" - " {\n" - " if (acolor > refvalue) gl_FragColor = vColor;\n" - " else discard;\n" - " }\n" - " else if (uAlphaTestComparison == 5)\n" - " {\n" - " if (acolor != refvalue) gl_FragColor = vColor;\n" - " else discard;\n" - " }\n" - " else if (uAlphaTestComparison == 6)\n" - " {\n" - " if (acolor >= refvalue) gl_FragColor = vColor;\n" - " else discard;\n" - " }\n" - " else if (uAlphaTestComparison == 7) ;\n" - "#else\n" - " gl_FragColor = vColor;\n" - "#endif //ALPHA_TEST_ENABLED\n" - " \n" - "#ifdef FOG_ENABLED\n" - " float z = gl_FragCoord.z / gl_FragCoord.w;\n" - " float fogFactor = exp2(-uFogFactor * uFogFactor * z * z * 1.44);\n" - " fogFactor = clamp(fogFactor, 0.0, 1.0);\n" - " gl_FragColor = mix(uFogColor, gl_FragColor, fogFactor);\n" - "#endif //FOG_ENABLED\n" - "}\n"; - -static const char diffuse_vert_glsl[] = - "#ifdef GL_ES\n" - "precision mediump float;\n" - "precision mediump int;\n" - "precision lowp sampler2D;\n" - "#endif\n" - "uniform mat4 uMatrixMvp;\n" - "#ifdef VERTEX_POSITION\n" - "attribute vec4 aPosition0;\n" - "#endif //VERTEX_POSITION\n" - "#ifdef VERTEX_POSITION_BLEND\n" - "attribute vec4 aPosition1;\n" - "uniform float uPositionWeight;\n" - "#endif //VERTEX_POSITION_BLEND\n" - "#ifdef VERTEX_TEXCOORD\n" - "attribute vec4 aTexCoord0;\n" - "#endif //VERTEX_TEXCOORD\n" - "#ifdef VERTEX_TEXCOORD_BLEND\n" - "attribute vec4 aTexCoord1;\n" - "uniform float uTexCoordWeight;\n" - "#endif //VERTEX_TEXCOORD_BLEND\n" - "#ifdef NEED_TEX_COORD\n" - "varying vec2 vTexCoord;\n" - "#endif //NEED_TEX_COORD\n" - "void main()\n" - "{\n" - " #ifdef VERTEX_POSITION_BLEND\n" - " vec4 position = mix(aPosition1, aPosition0, uPositionWeight);\n" - " position = vec4(position.xyz, 1.0);\n" - "#else\n" - "#ifdef VERTEX_POSITION\n" - " vec4 position = vec4(aPosition0.xyz, 1.0);\n" - "#endif // VERTEX_POSITION\n" - "#endif //VERTEX_POSITION_BLEND\n" - " #ifdef VERTEX_TEXCOORD_BLEND\n" - " vTexCoord = mix(vec2(aTexCoord1.s, 1.0 - aTexCoord1.t),\n" - " vec2(aTexCoord0.s, 1.0 - aTexCoord0.t), uTexCoordWeight);\n" - "#else\n" - "#ifdef VERTEX_TEXCOORD\n" - " vTexCoord = vec2(aTexCoord0.s, 1.0 - aTexCoord0.t);\n" - "#endif //VERTEX_TEXCOORD\n" - "#endif //VERTEX_TEXCOORD_BLEND\n" - " gl_Position = uMatrixMvp * position;\n" - "}\n"; - -static const char diffuse_frag_glsl[] = - "#ifdef GL_ES\n" - "precision mediump float;\n" - "precision mediump int;\n" - "precision lowp sampler2D;\n" - "#endif\n" - "#ifdef NEED_TEX_COORD\n" - "varying vec2 vTexCoord;\n" - "#endif //TEX_COORD\n" - "#ifdef FOG_ENABLED\n" - "uniform float uFogFactor;\n" - "uniform vec4 uFogColor;\n" - "#endif //FOG_ENABLED\n" - "#ifdef DIFFUSE\n" - "uniform vec4 uMaterialDiffuse;\n" - "uniform vec4 uLightDiffuse;\n" - "#ifdef DIFFUSE_TEXTURE\n" - "uniform sampler2D uTextureDiffuse0;\n" - "uniform mat3 uTextureMatrixTransformDiffuse0;\n" - "#endif //DIFFUSE_TEXTURE\n" - "#ifdef DIFFUSE_TEXTURE_BLEND\n" - "uniform sampler2D uTextureDiffuse1;\n" - "uniform float uTextureDiffuseWeight;\n" - "uniform mat3 uTextureMatrixTransformDiffuse1;\n" - "#endif //DIFFUSE_TEXTURE_BLEND\n" - "#endif //DIFFUSE\n" - "uniform int uAlphaTestComparison;\n" - "uniform float uAlphaTestRefValue;\n" - "void main() {\n" - " vec4 color;\n" - " \n" - "#ifdef DIFFUSE_TEXTURE_BLEND\n" - " vec3 Tex0CoordDiffuse = vec3(vTexCoord, 1.0) * uTextureMatrixTransformDiffuse0;\n" - " vec3 Tex1CoordDiffuse = vec3(vTexCoord, 1.0) * uTextureMatrixTransformDiffuse1;\n" - " color = mix(texture2D(uTextureDiffuse1, vec2(Tex1CoordDiffuse)),\n" - " texture2D(uTextureDiffuse0, vec2(Tex0CoordDiffuse)), uTextureDiffuseWeight);\n" - " color *= uMaterialDiffuse;\n" - "#else\n" - "#ifdef DIFFUSE_TEXTURE\n" - " vec3 Tex0CoordDiffuse = vec3(vTexCoord, 1.0) * uTextureMatrixTransformDiffuse0;\n" - " color = texture2D(uTextureDiffuse0, vec2(Tex0CoordDiffuse)) * uMaterialDiffuse;\n" - "#else\n" - " color = uMaterialDiffuse;\n" - "#endif //DIFFUSE_TEXTURE\n" - "#endif //DIFFUSE_TEXTURE_BLEND\n" - "#ifdef ALPHA_TEST_ENABLED\n" - " /*uAlphaTestComparison is value of the Evas_3D_Comparison type*/\n" - " const float p = 1000000.0;\n" - " float acolor = floor(color.a * p);\n" - " float refvalue = floor(uAlphaTestRefValue * p);\n" - " if (uAlphaTestComparison == 0) discard;\n" - " else if (uAlphaTestComparison == 1)\n" - " {\n" - " if (acolor < refvalue) gl_FragColor = color;\n" - " else discard;\n" - " }\n" - " else if (uAlphaTestComparison == 2)\n" - " {\n" - " if (acolor == refvalue) gl_FragColor = color;\n" - " else discard;\n" - " }\n" - " else if (uAlphaTestComparison == 3)\n" - " {\n" - " if (acolor <= refvalue) gl_FragColor = color;\n" - " else discard;\n" - " }\n" - " else if (uAlphaTestComparison == 4)\n" - " {\n" - " if (acolor > refvalue) gl_FragColor = color;\n" - " else discard;\n" - " }\n" - " else if (uAlphaTestComparison == 5)\n" - " {\n" - " if (acolor != refvalue) gl_FragColor = color;\n" - " else discard;\n" - " }\n" - " else if (uAlphaTestComparison == 6)\n" - " {\n" - " if (acolor >= refvalue) gl_FragColor = color;\n" - " else discard;\n" - " }\n" - " else if (uAlphaTestComparison == 7) ;\n" - "#else\n" - " gl_FragColor = color;\n" - "#endif //ALPHA_TEST_ENABLED\n" - " \n" - "#ifdef FOG_ENABLED\n" - " float z = gl_FragCoord.z / gl_FragCoord.w;\n" - " float fogFactor = exp2(-uFogFactor * uFogFactor * z * z * 1.44);\n" - " fogFactor = clamp(fogFactor, 0.0, 1.0);\n" - " gl_FragColor = mix(uFogColor, gl_FragColor, fogFactor);\n" - "#endif //FOG_ENABLED\n" - "}\n"; - -static const char flat_vert_glsl[] = - "#ifdef GL_ES\n" - "precision mediump float;\n" - "precision mediump int;\n" - "precision lowp sampler2D;\n" - "#endif\n" - "uniform mat4 uMatrixMvp;\n" - "uniform mat3 uMatrixNormal;\n" - "uniform mat4 uMatrixModelview;\n" - "uniform vec4 uLightPosition;\n" - "varying vec2 vFactor;\n" - "#ifdef SHADOWED\n" - "uniform mat4 uMatrixLight;\n" - "varying vec4 vLightPosition;\n" - "#endif //SHADOWED\n" - "#ifdef VERTEX_POSITION\n" - "attribute vec4 aPosition0;\n" - "#endif //VERTEX_POSITION\n" - "#ifdef VERTEX_POSITION_BLEND\n" - "attribute vec4 aPosition1;\n" - "uniform float uPositionWeight;\n" - "#endif //VERTEX_POSITION_BLEND\n" - "#ifdef VERTEX_NORMAL\n" - "attribute vec4 aNormal0;\n" - "#endif //VERTEX_NORMAL\n" - "#ifdef VERTEX_NORMAL_BLEND\n" - "attribute vec4 aNormal1;\n" - "uniform float uNormalWeight;\n" - "#endif //VERTEX_NORMAL_BLEND\n" - "#ifdef VERTEX_TEXCOORD\n" - "attribute vec4 aTexCoord0;\n" - "#endif //VERTEX_TEXCOORD\n" - "#ifdef VERTEX_TEXCOORD_BLEND\n" - "attribute vec4 aTexCoord1;\n" - "uniform float uTexCoordWeight;\n" - "#endif //VERTEX_TEXCOORD_BLEND\n" - "#ifdef NEED_TEX_COORD\n" - "varying vec2 vTexCoord;\n" - "#endif //NEED_TEX_COORD\n" - "#ifdef LIGHT_SPOT\n" - "uniform vec3 uLightSpotDir;\n" - "uniform float uLightSpotExp;\n" - "uniform float uLightSpotCutoffCos;\n" - "#endif //LIGHT_SPOT\n" - "#ifdef SPECULAR\n" - "uniform float uMaterialShininess;\n" - "#endif //SPECULAR\n" - "#ifdef LIGHT_ATTENUATION\n" - "uniform vec3 uLightAtten;\n" - "#endif //LIGHT_ATTENUATION\n" - "void vertexFlat(vec4 position, vec3 normal)\n" - "{\n" - " vec3 lv;\n" - " float factor;\n" - " normal = uMatrixNormal * normal;\n" - " position = uMatrixModelview * position;\n" - "#ifdef NORMALIZE_NORMALS\n" - " normal = normalize(normal);\n" - "#endif //NORMALIZE_NORMALS\n" - "#ifdef LIGHT_DIRECTIONAL\n" - " lv = uLightPosition.xyz;\n" - "#else\n" - " lv = uLightPosition.xyz - position.xyz;\n" - " lv = normalize(lv);\n" - "#endif //LIGHT_DIRECTIONAL\n" - " factor = max(dot(lv, normal), 0.0);\n" - "#ifdef LIGHT_SPOT\n" - " float f = dot(-lv, uLightSpotDir);\n" - " if (f > uLightSpotCutoffCos)\n" - " factor *= pow(f, uLightSpotExp);\n" - " else\n" - " factor = 0.0;\n" - "#endif //LIGHT_SPOT\n" - " if (factor > 0.0)\n" - " {\n" - "#ifdef DIFFUSE\n" - " vFactor.x = factor;\n" - "#else\n" - " vFactor.x = 0.0;\n" - "#endif //DIFFUSE\n" - "#ifdef SPECULAR\n" - " vec3 hv = normalize(normalize(-position.xyz) + lv);\n" - " factor = pow(max(dot(hv, normal), 0.0), uMaterialShininess);\n" - " vFactor.y = factor;\n" - "#endif //SPECULAR\n" - " }\n" - " else\n" - " vFactor = vec2(0.0, 0.0);\n" - " /* Light attenuation. */\n" - "#ifdef LIGHT_ATTENUATION\n" - " float dist = length(lv);\n" - " vFactor /= dot(uLightAtten, vec3(1.0, dist, dist * dist));\n" - "#endif //LIGHT_ATTENUATION\n" - "}\n" - "void main()\n" - "{\n" - " #ifdef VERTEX_POSITION_BLEND\n" - " vec4 position = mix(aPosition1, aPosition0, uPositionWeight);\n" - " position = vec4(position.xyz, 1.0);\n" - "#else\n" - "#ifdef VERTEX_POSITION\n" - " vec4 position = vec4(aPosition0.xyz, 1.0);\n" - "#endif // VERTEX_POSITION\n" - "#endif //VERTEX_POSITION_BLEND\n" - " #ifdef VERTEX_NORMAL_BLEND\n" - " vec3 normal = mix(aNormal1.xyz, aNormal0.xyz, uNormalWeight);\n" - "#else\n" - "#ifdef VERTEX_NORMAL\n" - " vec3 normal = aNormal0.xyz;\n" - "#endif //VERTEX_NORMAL\n" - "#endif //VERTEX_NORMAL_BLEND\n" - " #ifdef VERTEX_TEXCOORD_BLEND\n" - " vTexCoord = mix(vec2(aTexCoord1.s, 1.0 - aTexCoord1.t),\n" - " vec2(aTexCoord0.s, 1.0 - aTexCoord0.t), uTexCoordWeight);\n" - "#else\n" - "#ifdef VERTEX_TEXCOORD\n" - " vTexCoord = vec2(aTexCoord0.s, 1.0 - aTexCoord0.t);\n" - "#endif //VERTEX_TEXCOORD\n" - "#endif //VERTEX_TEXCOORD_BLEND\n" - " gl_Position = uMatrixMvp * position;\n" - " vertexFlat(position, normal);\n" - " #ifdef SHADOWED\n" - " vLightPosition = uMatrixLight * position;\n" - "#endif //SHADOWED\n" - "}\n"; - -static const char flat_frag_glsl[] = - "#ifdef GL_ES\n" - "precision mediump float;\n" - "precision mediump int;\n" - "precision lowp sampler2D;\n" - "#endif\n" - "varying vec2 vFactor;\n" - "#ifdef NEED_TEX_COORD\n" - "varying vec2 vTexCoord;\n" - "#endif //TEX_COORD\n" - "#ifdef FOG_ENABLED\n" - "uniform float uFogFactor;\n" - "uniform vec4 uFogColor;\n" - "#endif //FOG_ENABLED\n" - "#ifdef SHADOWED\n" - "varying vec4 vLightPosition;\n" - "uniform sampler2D uShadowMap;\n" - "uniform float uShadowsPCFStep;\n" - "uniform float uShadowsPCFSize;\n" - "uniform float uShadowsConstantBias;\n" - "float shadow;\n" - "float pcf(vec4 lpos)\n" - "{\n" - " vec3 smcoord = lpos.xyz / lpos.w * 0.5 + 0.5;\n" - " float i, j, shadow, q, c;\n" - " q = floor(uShadowsPCFStep * 2.0);\n" - " c = floor(uShadowsPCFStep * uShadowsPCFStep * 4.0);\n" - " shadow = 0.0;\n" - " const vec4 unpack = vec4(1.0 / (256.0 * 256.0 * 256.0), 1.0 / (256.0 * 256.0), 1.0 / 256.0, 1.0);\n" - " for (i = -uShadowsPCFStep; i < uShadowsPCFStep; i += 1.0)\n" - " for (j = -uShadowsPCFStep; j < uShadowsPCFStep; j += 1.0)\n" - " {\n" - " vec4 zvalue = texture2D(uShadowMap, smcoord.xy + vec2(i / q, j / q) * uShadowsPCFSize);\n" - " shadow += float(smcoord.z < dot(zvalue, unpack) + uShadowsConstantBias);\n" - " }\n" - " return shadow / c;\n" - "}\n" - "#endif //SHADOWED\n" - "#ifdef DIFFUSE\n" - "uniform vec4 uMaterialDiffuse;\n" - "uniform vec4 uLightDiffuse;\n" - "#ifdef DIFFUSE_TEXTURE\n" - "uniform sampler2D uTextureDiffuse0;\n" - "uniform mat3 uTextureMatrixTransformDiffuse0;\n" - "#endif //DIFFUSE_TEXTURE\n" - "#ifdef DIFFUSE_TEXTURE_BLEND\n" - "uniform sampler2D uTextureDiffuse1;\n" - "uniform float uTextureDiffuseWeight;\n" - "uniform mat3 uTextureMatrixTransformDiffuse1;\n" - "#endif //DIFFUSE_TEXTURE_BLEND\n" - "#endif //DIFFUSE\n" - "#ifdef SPECULAR\n" - "uniform vec4 uLightSpecular;\n" - "uniform float uMaterialShininess;\n" - "uniform vec4 uMaterialSpecular;\n" - "#ifdef SPECULAR_TEXTURE\n" - "uniform sampler2D uTextureSpecular0;\n" - "uniform mat3 uTextureMatrixTransformSpecular0;\n" - "#endif //SPECULAR_TEXTURE\n" - "#ifdef SPECULAR_TEXTURE_BLEND\n" - "uniform sampler2D uTextureSpecular1;\n" - "uniform float uTextureSpecularWeight;\n" - "uniform mat3 uTextureMatrixTransformSpecular1;\n" - "#endif //SPECULAR_TEXTURE_BLEND\n" - "#endif //SPECULAR\n" - "#ifdef AMBIENT\n" - "uniform vec4 uMaterialAmbient;\n" - "uniform vec4 uLightAmbient;\n" - "#ifdef AMBIENT_TEXTURE\n" - "uniform sampler2D uTextureAmbient0;\n" - "uniform mat3 uTextureMatrixTransformAmbient0;\n" - "#endif //AMBIENT_TEXTURE\n" - "#ifdef AMBIENT_TEXTURE_BLEND\n" - "uniform sampler2D uTextureAmbient1;\n" - "uniform float uTextureAmbientWeight;\n" - "uniform mat3 uTextureMatrixTransformAmbient1;\n" - "#endif //AMBIENT_TEXTURE_BLEND\n" - "#endif //AMBIENT\n" - "#ifdef EMISSION\n" - "uniform vec4 uMaterialEmission;\n" - "#ifdef EMISSION_TEXTURE\n" - "uniform sampler2D uTextureEmission0;\n" - "uniform mat3 uTextureMatrixTransformEmission0;\n" - "#endif //EMISSION_TEXTURE\n" - "#ifdef EMISSION_TEXTURE_BLEND\n" - "uniform sampler2D uTextureEmission1;\n" - "uniform float uTextureEmissionWeight;\n" - "uniform mat3 uTextureMatrixTransformEmission1;\n" - "#endif //EMISSION_TEXTURE_BLEND\n" - "#endif //EMISSION\n" - "uniform int uAlphaTestComparison;\n" - "uniform float uAlphaTestRefValue;\n" - "vec4 fragmentFlat()\n" - "{\n" - " vec4 color;\n" - " vec4 fragcolor;\n" - "#ifdef DIFFUSE\n" - " \n" - "#ifdef DIFFUSE_TEXTURE_BLEND\n" - " vec3 Tex0CoordDiffuse = vec3(vTexCoord, 1.0) * uTextureMatrixTransformDiffuse0;\n" - " vec3 Tex1CoordDiffuse = vec3(vTexCoord, 1.0) * uTextureMatrixTransformDiffuse1;\n" - " color = mix(texture2D(uTextureDiffuse1, vec2(Tex1CoordDiffuse)),\n" - " texture2D(uTextureDiffuse0, vec2(Tex0CoordDiffuse)), uTextureDiffuseWeight);\n" - " color *= uMaterialDiffuse;\n" - "#else\n" - "#ifdef DIFFUSE_TEXTURE\n" - " vec3 Tex0CoordDiffuse = vec3(vTexCoord, 1.0) * uTextureMatrixTransformDiffuse0;\n" - " color = texture2D(uTextureDiffuse0, vec2(Tex0CoordDiffuse)) * uMaterialDiffuse;\n" - "#else\n" - " color = uMaterialDiffuse;\n" - "#endif //DIFFUSE_TEXTURE\n" - "#endif //DIFFUSE_TEXTURE_BLEND\n" - " fragcolor = uLightDiffuse * color * vFactor.x;\n" - "#else\n" - " fragcolor = vec4(0.0, 0.0, 0.0, 0.0);\n" - "#endif //DIFFUSE\n" - "#ifdef SPECULAR\n" - " \n" - "#ifdef SPECULAR_TEXTURE_BLEND\n" - " vec3 Tex0CoordSpecular = vec3(vTexCoord, 1.0) * uTextureMatrixTransformSpecular0;\n" - " vec3 Tex1CoordSpecular = vec3(vTexCoord, 1.0) * uTextureMatrixTransformSpecular1;\n" - " color = mix(texture2D(uTextureSpecular1, vec2(Tex1CoordSpecular)),\n" - " texture2D(uTextureSpecular0, vec2(Tex0CoordSpecular)), uTextureSpecularWeight);\n" - " color *= uMaterialSpecular;\n" - "#else\n" - "#ifdef SPECULAR_TEXTURE\n" - " vec3 Tex0CoordSpecular = vec3(vTexCoord, 1.0) * uTextureMatrixTransformSpecular0;\n" - " color = texture2D(uTextureSpecular0, vec2(Tex0CoordSpecular)) * uMaterialSpecular;\n" - "#else\n" - " color = uMaterialSpecular;\n" - "#endif //SPECULAR_TEXTURE\n" - "#endif //SPECULAR_TEXTURE_BLEND\n" - " fragcolor += uLightSpecular * color * vFactor.y;\n" - "#endif //SPECULAR\n" - "#ifdef SHADOWED\n" - " fragcolor *= shadow;\n" - "#endif //SHADOWED\n" - "#ifdef AMBIENT\n" - " \n" - "#ifdef AMBIENT_TEXTURE_BLEND\n" - " vec3 Tex0CoordAmbient = vec3(vTexCoord, 1.0) * uTextureMatrixTransformAmbient0;\n" - " vec3 Tex1CoordAmbient = vec3(vTexCoord, 1.0) * uTextureMatrixTransformAmbient1;\n" - " color = mix(texture2D(uTextureAmbient1, vec2(Tex1CoordAmbient)),\n" - " texture2D(uTextureAmbient0, vec2(Tex0CoordAmbient)), uTextureAmbientWeight);\n" - " color *= uMaterialAmbient;\n" - "#else\n" - "#ifdef AMBIENT_TEXTURE\n" - " vec3 Tex0CoordAmbient = vec3(vTexCoord, 1.0) * uTextureMatrixTransformAmbient0;\n" - " color = texture2D(uTextureAmbient0, vec2(Tex0CoordAmbient)) * uMaterialAmbient;\n" - "#else\n" - " color = uMaterialAmbient;\n" - "#endif //AMBIENT_TEXTURE\n" - "#endif //AMBIENT_TEXTURE_BLEND\n" - " fragcolor += uLightAmbient * color;\n" - "#endif //AMBIENT\n" - "#ifdef EMISSION\n" - " \n" - "#ifdef EMISSION_TEXTURE_BLEND\n" - " vec3 Tex0CoordEmission = vec3(vTexCoord, 1.0) * uTextureMatrixTransformEmission0;\n" - " vec3 Tex1CoordEmission = vec3(vTexCoord, 1.0) * uTextureMatrixTransformEmission1;\n" - " color = mix(texture2D(uTextureEmission1, vec2(Tex1CoordEmission)),\n" - " texture2D(uTextureEmission0, vec2(Tex0CoordEmission)), uTextureEmissionWeight);\n" - " color *= uMaterialEmission;\n" - "#else\n" - "#ifdef EMISSION_TEXTURE\n" - " vec3 Tex0CoordEmission = vec3(vTexCoord, 1.0) * uTextureMatrixTransformEmission0;\n" - " color = texture2D(uTextureEmission0, vec2(Tex0CoordEmission)) * uMaterialEmission;\n" - "#else\n" - " color = uMaterialEmission;\n" - "#endif //EMISSION_TEXTURE\n" - "#endif //EMISSION_TEXTURE_BLEND\n" - " fragcolor += color;\n" - "#endif //EMISSION\n" - " return fragcolor;\n" - "}\n" - "void main() {\n" - " vec4 color;\n" - "#ifdef SHADOWED\n" - " shadow = pcf(vLightPosition);\n" - "#endif //SHADOWED\n" - " color = fragmentFlat();\n" - "#ifdef ALPHA_TEST_ENABLED\n" - " /*uAlphaTestComparison is value of the Evas_3D_Comparison type*/\n" - " const float p = 1000000.0;\n" - " float acolor = floor(color.a * p);\n" - " float refvalue = floor(uAlphaTestRefValue * p);\n" - " if (uAlphaTestComparison == 0) discard;\n" - " else if (uAlphaTestComparison == 1)\n" - " {\n" - " if (acolor < refvalue) gl_FragColor = color;\n" - " else discard;\n" - " }\n" - " else if (uAlphaTestComparison == 2)\n" - " {\n" - " if (acolor == refvalue) gl_FragColor = color;\n" - " else discard;\n" - " }\n" - " else if (uAlphaTestComparison == 3)\n" - " {\n" - " if (acolor <= refvalue) gl_FragColor = color;\n" - " else discard;\n" - " }\n" - " else if (uAlphaTestComparison == 4)\n" - " {\n" - " if (acolor > refvalue) gl_FragColor = color;\n" - " else discard;\n" - " }\n" - " else if (uAlphaTestComparison == 5)\n" - " {\n" - " if (acolor != refvalue) gl_FragColor = color;\n" - " else discard;\n" - " }\n" - " else if (uAlphaTestComparison == 6)\n" - " {\n" - " if (acolor >= refvalue) gl_FragColor = color;\n" - " else discard;\n" - " }\n" - " else if (uAlphaTestComparison == 7) ;\n" - "#else\n" - " gl_FragColor = color;\n" - "#endif //ALPHA_TEST_ENABLED\n" - " \n" - "#ifdef FOG_ENABLED\n" - " float z = gl_FragCoord.z / gl_FragCoord.w;\n" - " float fogFactor = exp2(-uFogFactor * uFogFactor * z * z * 1.44);\n" - " fogFactor = clamp(fogFactor, 0.0, 1.0);\n" - " gl_FragColor = mix(uFogColor, gl_FragColor, fogFactor);\n" - "#endif //FOG_ENABLED\n" - "}\n"; - -static const char phong_vert_glsl[] = - "#ifdef GL_ES\n" - "precision mediump float;\n" - "precision mediump int;\n" - "precision lowp sampler2D;\n" - "#endif\n" - "uniform mat4 uMatrixMvp;\n" - "uniform mat3 uMatrixNormal;\n" - "uniform mat4 uMatrixModelview;\n" - "uniform vec4 uLightPosition;\n" - "varying vec3 vLightVector;\n" - "varying vec3 vLightHalfVector;\n" - "varying vec3 vNormal;\n" - "#ifdef SHADOWED\n" - "uniform mat4 uMatrixLight;\n" - "varying vec4 vLightPosition;\n" - "#endif //SHADOWED\n" - "#ifdef VERTEX_POSITION\n" - "attribute vec4 aPosition0;\n" - "#endif //VERTEX_POSITION\n" - "#ifdef VERTEX_POSITION_BLEND\n" - "attribute vec4 aPosition1;\n" - "uniform float uPositionWeight;\n" - "#endif //VERTEX_POSITION_BLEND\n" - "#ifdef VERTEX_NORMAL\n" - "attribute vec4 aNormal0;\n" - "#endif //VERTEX_NORMAL\n" - "#ifdef VERTEX_NORMAL_BLEND\n" - "attribute vec4 aNormal1;\n" - "uniform float uNormalWeight;\n" - "#endif //VERTEX_NORMAL_BLEND\n" - "#ifdef VERTEX_TEXCOORD\n" - "attribute vec4 aTexCoord0;\n" - "#endif //VERTEX_TEXCOORD\n" - "#ifdef VERTEX_TEXCOORD_BLEND\n" - "attribute vec4 aTexCoord1;\n" - "uniform float uTexCoordWeight;\n" - "#endif //VERTEX_TEXCOORD_BLEND\n" - "#ifdef NEED_TEX_COORD\n" - "varying vec2 vTexCoord;\n" - "#endif //NEED_TEX_COORD\n" - "#ifdef LIGHT_ATTENUATION\n" - "varying float vLightDist;\n" - "#endif //LIGHT_ATTENUATION\n" - "void vertexPhong(vec4 position, vec3 normal)\n" - "{\n" - " normal = uMatrixNormal * normal;\n" - " position = uMatrixModelview * position;\n" - "#ifdef NORMALIZE_NORMALS\n" - " normal = normalize(normal);\n" - "#endif //NORMALIZE_NORMALS\n" - "#ifdef LIGHT_DIRECTIONAL\n" - " vLightVector = uLightPosition.xyz;\n" - "#else\n" - " vLightVector = uLightPosition.xyz - position.xyz;\n" - "#ifdef LIGHT_ATTENUATION\n" - " vLightDist = length(vLightVector);\n" - "#endif //LIGHT_ATTENUATION\n" - " vLightVector = normalize(vLightVector);\n" - "#endif //LIGHT_DIRECTIONAL\n" - " vLightHalfVector = normalize(normalize(-position.xyz) + vLightVector);\n" - " vNormal = normal;\n" - "}\n" - "void main() {\n" - " #ifdef VERTEX_POSITION_BLEND\n" - " vec4 position = mix(aPosition1, aPosition0, uPositionWeight);\n" - " position = vec4(position.xyz, 1.0);\n" - "#else\n" - "#ifdef VERTEX_POSITION\n" - " vec4 position = vec4(aPosition0.xyz, 1.0);\n" - "#endif // VERTEX_POSITION\n" - "#endif //VERTEX_POSITION_BLEND\n" - " #ifdef VERTEX_NORMAL_BLEND\n" - " vec3 normal = mix(aNormal1.xyz, aNormal0.xyz, uNormalWeight);\n" - "#else\n" - "#ifdef VERTEX_NORMAL\n" - " vec3 normal = aNormal0.xyz;\n" - "#endif //VERTEX_NORMAL\n" - "#endif //VERTEX_NORMAL_BLEND\n" - " #ifdef VERTEX_TEXCOORD_BLEND\n" - " vTexCoord = mix(vec2(aTexCoord1.s, 1.0 - aTexCoord1.t),\n" - " vec2(aTexCoord0.s, 1.0 - aTexCoord0.t), uTexCoordWeight);\n" - "#else\n" - "#ifdef VERTEX_TEXCOORD\n" - " vTexCoord = vec2(aTexCoord0.s, 1.0 - aTexCoord0.t);\n" - "#endif //VERTEX_TEXCOORD\n" - "#endif //VERTEX_TEXCOORD_BLEND\n" - " gl_Position = uMatrixMvp * position;\n" - " vertexPhong(position, normal);\n" - " #ifdef SHADOWED\n" - " vLightPosition = uMatrixLight * position;\n" - "#endif //SHADOWED\n" - "}\n"; - -static const char phong_frag_glsl[] = - "#ifdef GL_ES\n" - "precision mediump float;\n" - "precision mediump int;\n" - "precision lowp sampler2D;\n" - "#endif\n" - "varying vec3 vLightVector;\n" - "varying vec3 vLightHalfVector;\n" - "varying vec3 vNormal;\n" - "#ifdef NEED_TEX_COORD\n" - "varying vec2 vTexCoord;\n" - "#endif //TEX_COORD\n" - "#ifdef FOG_ENABLED\n" - "uniform float uFogFactor;\n" - "uniform vec4 uFogColor;\n" - "#endif //FOG_ENABLED\n" - "#ifdef SHADOWED\n" - "varying vec4 vLightPosition;\n" - "uniform sampler2D uShadowMap;\n" - "uniform float uShadowsPCFStep;\n" - "uniform float uShadowsPCFSize;\n" - "uniform float uShadowsConstantBias;\n" - "float shadow;\n" - "float pcf(vec4 lpos)\n" - "{\n" - " vec3 smcoord = lpos.xyz / lpos.w * 0.5 + 0.5;\n" - " float i, j, shadow, q, c;\n" - " q = floor(uShadowsPCFStep * 2.0);\n" - " c = floor(uShadowsPCFStep * uShadowsPCFStep * 4.0);\n" - " shadow = 0.0;\n" - " const vec4 unpack = vec4(1.0 / (256.0 * 256.0 * 256.0), 1.0 / (256.0 * 256.0), 1.0 / 256.0, 1.0);\n" - " for (i = -uShadowsPCFStep; i < uShadowsPCFStep; i += 1.0)\n" - " for (j = -uShadowsPCFStep; j < uShadowsPCFStep; j += 1.0)\n" - " {\n" - " vec4 zvalue = texture2D(uShadowMap, smcoord.xy + vec2(i / q, j / q) * uShadowsPCFSize);\n" - " shadow += float(smcoord.z < dot(zvalue, unpack) + uShadowsConstantBias);\n" - " }\n" - " return shadow / c;\n" - "}\n" - "#endif //SHADOWED\n" - "#ifdef DIFFUSE\n" - "uniform vec4 uMaterialDiffuse;\n" - "uniform vec4 uLightDiffuse;\n" - "#ifdef DIFFUSE_TEXTURE\n" - "uniform sampler2D uTextureDiffuse0;\n" - "uniform mat3 uTextureMatrixTransformDiffuse0;\n" - "#endif //DIFFUSE_TEXTURE\n" - "#ifdef DIFFUSE_TEXTURE_BLEND\n" - "uniform sampler2D uTextureDiffuse1;\n" - "uniform float uTextureDiffuseWeight;\n" - "uniform mat3 uTextureMatrixTransformDiffuse1;\n" - "#endif //DIFFUSE_TEXTURE_BLEND\n" - "#endif //DIFFUSE\n" - "#ifdef SPECULAR\n" - "uniform vec4 uLightSpecular;\n" - "uniform float uMaterialShininess;\n" - "uniform vec4 uMaterialSpecular;\n" - "#ifdef SPECULAR_TEXTURE\n" - "uniform sampler2D uTextureSpecular0;\n" - "uniform mat3 uTextureMatrixTransformSpecular0;\n" - "#endif //SPECULAR_TEXTURE\n" - "#ifdef SPECULAR_TEXTURE_BLEND\n" - "uniform sampler2D uTextureSpecular1;\n" - "uniform float uTextureSpecularWeight;\n" - "uniform mat3 uTextureMatrixTransformSpecular1;\n" - "#endif //SPECULAR_TEXTURE_BLEND\n" - "#endif //SPECULAR\n" - "#ifdef AMBIENT\n" - "uniform vec4 uMaterialAmbient;\n" - "uniform vec4 uLightAmbient;\n" - "#ifdef AMBIENT_TEXTURE\n" - "uniform sampler2D uTextureAmbient0;\n" - "uniform mat3 uTextureMatrixTransformAmbient0;\n" - "#endif //AMBIENT_TEXTURE\n" - "#ifdef AMBIENT_TEXTURE_BLEND\n" - "uniform sampler2D uTextureAmbient1;\n" - "uniform float uTextureAmbientWeight;\n" - "uniform mat3 uTextureMatrixTransformAmbient1;\n" - "#endif //AMBIENT_TEXTURE_BLEND\n" - "#endif //AMBIENT\n" - "#ifdef EMISSION\n" - "uniform vec4 uMaterialEmission;\n" - "#ifdef EMISSION_TEXTURE\n" - "uniform sampler2D uTextureEmission0;\n" - "uniform mat3 uTextureMatrixTransformEmission0;\n" - "#endif //EMISSION_TEXTURE\n" - "#ifdef EMISSION_TEXTURE_BLEND\n" - "uniform sampler2D uTextureEmission1;\n" - "uniform float uTextureEmissionWeight;\n" - "uniform mat3 uTextureMatrixTransformEmission1;\n" - "#endif //EMISSION_TEXTURE_BLEND\n" - "#endif //EMISSION\n" - "#ifdef LIGHT_SPOT\n" - "uniform vec3 uLightSpotDir;\n" - "uniform float uLightSpotExp;\n" - "uniform float uLightSpotCutoffCos;\n" - "#endif //LIGHT_SPOT\n" - "#ifdef LIGHT_ATTENUATION\n" - "varying float vLightDist;\n" - "#endif //LIGHT_ATTENUATION\n" - "uniform int uAlphaTestComparison;\n" - "uniform float uAlphaTestRefValue;\n" - "vec4 fragmentPhong()\n" - "{\n" - " vec3 normal = normalize(vNormal);\n" - " vec3 lv = normalize(vLightVector);\n" - " float factor = dot(lv, normal);\n" - " vec4 color;\n" - " vec4 fragcolor;\n" - "#ifdef LIGHT_SPOT\n" - " float f = dot(-lv, normalize(uLightSpotDir));\n" - " if (f > uLightSpotCutoffCos)\n" - " factor *= pow(f, uLightSpotExp);\n" - " else\n" - " factor = 0.0;\n" - "#endif //LIGHT_SPOT\n" - " if (factor > 0.0)\n" - " {\n" - " /* Diffuse term. */\n" - "#ifdef DIFFUSE\n" - " \n" - "#ifdef DIFFUSE_TEXTURE_BLEND\n" - " vec3 Tex0CoordDiffuse = vec3(vTexCoord, 1.0) * uTextureMatrixTransformDiffuse0;\n" - " vec3 Tex1CoordDiffuse = vec3(vTexCoord, 1.0) * uTextureMatrixTransformDiffuse1;\n" - " color = mix(texture2D(uTextureDiffuse1, vec2(Tex1CoordDiffuse)),\n" - " texture2D(uTextureDiffuse0, vec2(Tex0CoordDiffuse)), uTextureDiffuseWeight);\n" - " color *= uMaterialDiffuse;\n" - "#else\n" - "#ifdef DIFFUSE_TEXTURE\n" - " vec3 Tex0CoordDiffuse = vec3(vTexCoord, 1.0) * uTextureMatrixTransformDiffuse0;\n" - " color = texture2D(uTextureDiffuse0, vec2(Tex0CoordDiffuse)) * uMaterialDiffuse;\n" - "#else\n" - " color = uMaterialDiffuse;\n" - "#endif //DIFFUSE_TEXTURE\n" - "#endif //DIFFUSE_TEXTURE_BLEND\n" - " fragcolor = uLightDiffuse * color * factor;\n" - "#else\n" - " fragcolor = vec4(0.0, 0.0, 0.0, 0.0);\n" - "#endif //DIFFUSE\n" - " /* Specular term. */\n" - "#ifdef SPECULAR\n" - " factor = dot(normalize(vLightHalfVector), normal);\n" - " if (factor > 0.0)\n" - " {\n" - " factor = pow(factor, uMaterialShininess);\n" - " \n" - "#ifdef SPECULAR_TEXTURE_BLEND\n" - " vec3 Tex0CoordSpecular = vec3(vTexCoord, 1.0) * uTextureMatrixTransformSpecular0;\n" - " vec3 Tex1CoordSpecular = vec3(vTexCoord, 1.0) * uTextureMatrixTransformSpecular1;\n" - " color = mix(texture2D(uTextureSpecular1, vec2(Tex1CoordSpecular)),\n" - " texture2D(uTextureSpecular0, vec2(Tex0CoordSpecular)), uTextureSpecularWeight);\n" - " color *= uMaterialSpecular;\n" - "#else\n" - "#ifdef SPECULAR_TEXTURE\n" - " vec3 Tex0CoordSpecular = vec3(vTexCoord, 1.0) * uTextureMatrixTransformSpecular0;\n" - " color = texture2D(uTextureSpecular0, vec2(Tex0CoordSpecular)) * uMaterialSpecular;\n" - "#else\n" - " color = uMaterialSpecular;\n" - "#endif //SPECULAR_TEXTURE\n" - "#endif //SPECULAR_TEXTURE_BLEND\n" - " fragcolor += uLightSpecular * color * factor;\n" - " }\n" - "#endif\n" - " }\n" - " else\n" - " fragcolor = vec4(0.0, 0.0, 0.0, 0.0);\n" - "#ifdef SHADOWED\n" - " fragcolor *= shadow;\n" - "#endif //SHADOWED\n" - "#ifdef AMBIENT\n" - " \n" - "#ifdef AMBIENT_TEXTURE_BLEND\n" - " vec3 Tex0CoordAmbient = vec3(vTexCoord, 1.0) * uTextureMatrixTransformAmbient0;\n" - " vec3 Tex1CoordAmbient = vec3(vTexCoord, 1.0) * uTextureMatrixTransformAmbient1;\n" - " color = mix(texture2D(uTextureAmbient1, vec2(Tex1CoordAmbient)),\n" - " texture2D(uTextureAmbient0, vec2(Tex0CoordAmbient)), uTextureAmbientWeight);\n" - " color *= uMaterialAmbient;\n" - "#else\n" - "#ifdef AMBIENT_TEXTURE\n" - " vec3 Tex0CoordAmbient = vec3(vTexCoord, 1.0) * uTextureMatrixTransformAmbient0;\n" - " color = texture2D(uTextureAmbient0, vec2(Tex0CoordAmbient)) * uMaterialAmbient;\n" - "#else\n" - " color = uMaterialAmbient;\n" - "#endif //AMBIENT_TEXTURE\n" - "#endif //AMBIENT_TEXTURE_BLEND\n" - " fragcolor += uLightAmbient * color;\n" - "#endif\n" - " /* Light attenuation. */\n" - "#ifdef LIGHT_ATTENUATION\n" - " fragcolor /= dot(uLightAtten, vec3(1.0, vLightDist, vLightDist * vLightDist));\n" - "#endif\n" - " /* Emission term. */\n" - "#ifdef EMISSION\n" - " \n" - "#ifdef EMISSION_TEXTURE_BLEND\n" - " vec3 Tex0CoordEmission = vec3(vTexCoord, 1.0) * uTextureMatrixTransformEmission0;\n" - " vec3 Tex1CoordEmission = vec3(vTexCoord, 1.0) * uTextureMatrixTransformEmission1;\n" - " color = mix(texture2D(uTextureEmission1, vec2(Tex1CoordEmission)),\n" - " texture2D(uTextureEmission0, vec2(Tex0CoordEmission)), uTextureEmissionWeight);\n" - " color *= uMaterialEmission;\n" - "#else\n" - "#ifdef EMISSION_TEXTURE\n" - " vec3 Tex0CoordEmission = vec3(vTexCoord, 1.0) * uTextureMatrixTransformEmission0;\n" - " color = texture2D(uTextureEmission0, vec2(Tex0CoordEmission)) * uMaterialEmission;\n" - "#else\n" - " color = uMaterialEmission;\n" - "#endif //EMISSION_TEXTURE\n" - "#endif //EMISSION_TEXTURE_BLEND\n" - " fragcolor += color;\n" - "#endif\n" - " return fragcolor;\n" - "}\n" - "void main()\n" - "{\n" - " vec4 color;\n" - "#ifdef SHADOWED\n" - " shadow = pcf(vLightPosition);\n" - "#endif //SHADOWED\n" - " color = fragmentPhong();\n" - "#ifdef ALPHA_TEST_ENABLED\n" - " /*uAlphaTestComparison is value of the Evas_3D_Comparison type*/\n" - " const float p = 1000000.0;\n" - " float acolor = floor(color.a * p);\n" - " float refvalue = floor(uAlphaTestRefValue * p);\n" - " if (uAlphaTestComparison == 0) discard;\n" - " else if (uAlphaTestComparison == 1)\n" - " {\n" - " if (acolor < refvalue) gl_FragColor = color;\n" - " else discard;\n" - " }\n" - " else if (uAlphaTestComparison == 2)\n" - " {\n" - " if (acolor == refvalue) gl_FragColor = color;\n" - " else discard;\n" - " }\n" - " else if (uAlphaTestComparison == 3)\n" - " {\n" - " if (acolor <= refvalue) gl_FragColor = color;\n" - " else discard;\n" - " }\n" - " else if (uAlphaTestComparison == 4)\n" - " {\n" - " if (acolor > refvalue) gl_FragColor = color;\n" - " else discard;\n" - " }\n" - " else if (uAlphaTestComparison == 5)\n" - " {\n" - " if (acolor != refvalue) gl_FragColor = color;\n" - " else discard;\n" - " }\n" - " else if (uAlphaTestComparison == 6)\n" - " {\n" - " if (acolor >= refvalue) gl_FragColor = color;\n" - " else discard;\n" - " }\n" - " else if (uAlphaTestComparison == 7) ;\n" - "#else\n" - " gl_FragColor = color;\n" - "#endif //ALPHA_TEST_ENABLED\n" - " \n" - "#ifdef FOG_ENABLED\n" - " float z = gl_FragCoord.z / gl_FragCoord.w;\n" - " float fogFactor = exp2(-uFogFactor * uFogFactor * z * z * 1.44);\n" - " fogFactor = clamp(fogFactor, 0.0, 1.0);\n" - " gl_FragColor = mix(uFogColor, gl_FragColor, fogFactor);\n" - "#endif //FOG_ENABLED\n" - "}\n"; - -static const char normal_map_vert_glsl[] = - "#ifdef GL_ES\n" - "precision mediump float;\n" - "precision mediump int;\n" - "precision lowp sampler2D;\n" - "#endif\n" - "uniform mat4 uMatrixMvp;\n" - "uniform mat3 uMatrixNormal;\n" - "uniform mat4 uMatrixModelview;\n" - "uniform vec4 uLightPosition;\n" - "varying vec3 vLightVector;\n" - "varying vec3 vLightHalfVector;\n" - "varying vec3 vEyeVector;\n" - "#ifndef VERTEX_TANGENT\n" - "varying vec3 vNormal;\n" - "#endif //VERTEX_TANGENT\n" - "#ifdef SHADOWED\n" - "uniform mat4 uMatrixLight;\n" - "varying vec4 vLightPosition;\n" - "#endif //SHADOWED\n" - "#ifdef VERTEX_POSITION\n" - "attribute vec4 aPosition0;\n" - "#endif //VERTEX_POSITION\n" - "#ifdef VERTEX_POSITION_BLEND\n" - "attribute vec4 aPosition1;\n" - "uniform float uPositionWeight;\n" - "#endif //VERTEX_POSITION_BLEND\n" - "#ifdef VERTEX_NORMAL\n" - "attribute vec4 aNormal0;\n" - "#endif //VERTEX_NORMAL\n" - "#ifdef VERTEX_NORMAL_BLEND\n" - "attribute vec4 aNormal1;\n" - "uniform float uNormalWeight;\n" - "#endif //VERTEX_NORMAL_BLEND\n" - "#ifdef VERTEX_TANGENT\n" - "attribute vec4 aTangent0;\n" - "#endif //VERTEX_TANGENT\n" - "#ifdef VERTEX_TANGENT_BLEND\n" - "attribute vec4 aTangent1;\n" - "uniform float uTangentWeight;\n" - "#endif //VERTEX_TANGENT_BLEND\n" - "#ifdef VERTEX_TEXCOORD\n" - "attribute vec4 aTexCoord0;\n" - "#endif //VERTEX_TEXCOORD\n" - "#ifdef VERTEX_TEXCOORD_BLEND\n" - "attribute vec4 aTexCoord1;\n" - "uniform float uTexCoordWeight;\n" - "#endif //VERTEX_TEXCOORD_BLEND\n" - "#ifdef NEED_TEX_COORD\n" - "varying vec2 vTexCoord;\n" - "#endif //NEED_TEX_COORD\n" - "#ifdef LIGHT_ATTENUATION\n" - "varying float vLightDist;\n" - "#endif //LIGHT_ATTENUATION\n" - "#ifndef VERTEX_TANGENT\n" - "void vertexNormalMap(vec4 position, vec3 normal)\n" - "{\n" - " normal = uMatrixNormal * normal;\n" - " position = uMatrixModelview * position;\n" - " vEyeVector = normalize(-position.xyz);\n" - "#ifdef NORMALIZE_NORMALS\n" - " normal = normalize(normal);\n" - "#endif //NORMALIZE_NORMALS\n" - "#ifdef LIGHT_DIRECTIONAL\n" - " vLightVector = uLightPosition.xyz;\n" - "#else\n" - " vLightVector = uLightPosition.xyz - position.xyz;\n" - "#ifdef LIGHT_ATTENUATION\n" - " vLightDist = length(vLightVector);\n" - "#endif //LIGHT_ATTENUATION\n" - " vLightVector = normalize(vLightVector);\n" - "#endif //LIGHT_DIRECTIONAL\n" - " vLightHalfVector = normalize(vEyeVector + vLightVector);\n" - " vNormal = normal;\n" - "}\n" - "#else\n" - "void vertexNormalMap(vec4 position, vec3 normal, vec3 tangent)\n" - "{\n" - " vec3 n = normalize(uMatrixNormal * normal);\n" - " vec3 t = normalize(uMatrixNormal * tangent);\n" - " vec3 b = cross(n, t);\n" - " vec3 tmp;\n" - " position = uMatrixModelview * position;\n" - "#ifdef LIGHT_DIRECTIONAL\n" - " vec3 lightDir = uLightPosition.xyz;\n" - "#else\n" - " vec3 lightDir = uLightPosition.xyz - position.xyz;\n" - "#ifdef LIGHT_ATTENUATION\n" - " vLightDist = length(lightDir);\n" - "#endif //LIGHT_ATTENUATION\n" - " lightDir = normalize(lightDir);\n" - "#endif //LIGHT_DIRECTIONAL\n" - " tmp.x = dot(lightDir, t);\n" - " tmp.y = dot(lightDir, b);\n" - " tmp.z = dot(lightDir, n);\n" - " vLightVector = tmp;\n" - " tmp.x = dot(position.xyz, t);\n" - " tmp.y = dot(position.xyz, b);\n" - " tmp.z = dot(position.xyz, n);\n" - " vEyeVector = normalize(tmp);\n" - " vec3 hv = normalize(normalize(-position.xyz) + lightDir);\n" - " tmp.x = dot(hv, t);\n" - " tmp.y = dot(hv, b);\n" - " tmp.z = dot(hv, n);\n" - " vLightHalfVector = tmp;\n" - "}\n" - "#endif //VERTEX_TANGENT\n" - "void main()\n" - "{\n" - " #ifdef VERTEX_POSITION_BLEND\n" - " vec4 position = mix(aPosition1, aPosition0, uPositionWeight);\n" - " position = vec4(position.xyz, 1.0);\n" - "#else\n" - "#ifdef VERTEX_POSITION\n" - " vec4 position = vec4(aPosition0.xyz, 1.0);\n" - "#endif // VERTEX_POSITION\n" - "#endif //VERTEX_POSITION_BLEND\n" - " #ifdef VERTEX_NORMAL_BLEND\n" - " vec3 normal = mix(aNormal1.xyz, aNormal0.xyz, uNormalWeight);\n" - "#else\n" - "#ifdef VERTEX_NORMAL\n" - " vec3 normal = aNormal0.xyz;\n" - "#endif //VERTEX_NORMAL\n" - "#endif //VERTEX_NORMAL_BLEND\n" - "#ifdef VERTEX_TANGENT_BLEND\n" - " vec3 tangent = aTangent0.xyz * uTangentWeight +\n" - " aTangent1.xyz * (1.0 - uTangentWeight);\n" - "#else\n" - "#ifdef VERTEX_TANGENT\n" - " vec3 tangent = aTangent0.xyz;\n" - "#endif //VERTEX_TANGENT\n" - "#endif //VERTEX_TANGENT_BLEND\n" - " #ifdef VERTEX_TEXCOORD_BLEND\n" - " vTexCoord = mix(vec2(aTexCoord1.s, 1.0 - aTexCoord1.t),\n" - " vec2(aTexCoord0.s, 1.0 - aTexCoord0.t), uTexCoordWeight);\n" - "#else\n" - "#ifdef VERTEX_TEXCOORD\n" - " vTexCoord = vec2(aTexCoord0.s, 1.0 - aTexCoord0.t);\n" - "#endif //VERTEX_TEXCOORD\n" - "#endif //VERTEX_TEXCOORD_BLEND\n" - " gl_Position = uMatrixMvp * position;\n" - "#ifdef VERTEX_TANGENT\n" - " vertexNormalMap(position, normal, tangent);\n" - "#else\n" - " vertexNormalMap(position, normal);\n" - "#endif //VERTEX_TANGENT\n" - "#ifdef SHADOWED\n" - " vLightPosition = uMatrixLight * position;\n" - "#endif\n" - "}\n"; - -static const char normal_map_frag_glsl[] = - "#ifdef GL_ES\n" - "precision mediump float;\n" - "precision mediump int;\n" - "precision lowp sampler2D;\n" - "#endif\n" - "varying vec3 vLightVector;\n" - "varying vec3 vLightHalfVector;\n" - "varying vec3 vEyeVector;\n" - "#ifdef NEED_TEX_COORD\n" - "varying vec2 vTexCoord;\n" - "#endif //TEX_COORD\n" - "#ifdef FOG_ENABLED\n" - "uniform float uFogFactor;\n" - "uniform vec4 uFogColor;\n" - "#endif //FOG_ENABLED\n" - "#ifdef SHADOWED\n" - "varying vec4 vLightPosition;\n" - "uniform sampler2D uShadowMap;\n" - "uniform float uShadowsPCFStep;\n" - "uniform float uShadowsPCFSize;\n" - "uniform float uShadowsConstantBias;\n" - "float shadow;\n" - "float pcf(vec4 lpos)\n" - "{\n" - " vec3 smcoord = lpos.xyz / lpos.w * 0.5 + 0.5;\n" - " float i, j, shadow, q, c;\n" - " q = floor(uShadowsPCFStep * 2.0);\n" - " c = floor(uShadowsPCFStep * uShadowsPCFStep * 4.0);\n" - " shadow = 0.0;\n" - " const vec4 unpack = vec4(1.0 / (256.0 * 256.0 * 256.0), 1.0 / (256.0 * 256.0), 1.0 / 256.0, 1.0);\n" - " for (i = -uShadowsPCFStep; i < uShadowsPCFStep; i += 1.0)\n" - " for (j = -uShadowsPCFStep; j < uShadowsPCFStep; j += 1.0)\n" - " {\n" - " vec4 zvalue = texture2D(uShadowMap, smcoord.xy + vec2(i / q, j / q) * uShadowsPCFSize);\n" - " shadow += float(smcoord.z < dot(zvalue, unpack) + uShadowsConstantBias);\n" - " }\n" - " return shadow / c;\n" - "}\n" - "#endif //SHADOWED\n" - "#ifdef NORMAL_TEXTURE\n" - "uniform sampler2D uTextureNormal0;\n" - "uniform mat3 uTextureMatrixTransformNormal0;\n" - "#endif //NORMAL_TEXTURE\n" - "#ifdef NORMAL_TEXTURE_BLEND\n" - "uniform sampler2D uTextureNormal1;\n" - "uniform float uTextureNormalWeight;\n" - "uniform mat3 uTextureMatrixTransformNormal1;\n" - "#endif //NORMAL_TEXTURE_BLEND\n" - "uniform int uAlphaTestComparison;\n" - "uniform float uAlphaTestRefValue;\n" - "#ifndef VERTEX_TANGENT\n" - "varying vec3 vNormal;\n" - "#endif //VERTEX_TANGENT\n" - "#ifdef DIFFUSE\n" - "uniform vec4 uMaterialDiffuse;\n" - "uniform vec4 uLightDiffuse;\n" - "#ifdef DIFFUSE_TEXTURE\n" - "uniform sampler2D uTextureDiffuse0;\n" - "uniform mat3 uTextureMatrixTransformDiffuse0;\n" - "#endif //DIFFUSE_TEXTURE\n" - "#ifdef DIFFUSE_TEXTURE_BLEND\n" - "uniform sampler2D uTextureDiffuse1;\n" - "uniform float uTextureDiffuseWeight;\n" - "uniform mat3 uTextureMatrixTransformDiffuse1;\n" - "#endif //DIFFUSE_TEXTURE_BLEND\n" - "#endif //DIFFUSE\n" - "#ifdef SPECULAR\n" - "uniform vec4 uLightSpecular;\n" - "uniform float uMaterialShininess;\n" - "uniform vec4 uMaterialSpecular;\n" - "#ifdef SPECULAR_TEXTURE\n" - "uniform sampler2D uTextureSpecular0;\n" - "uniform mat3 uTextureMatrixTransformSpecular0;\n" - "#endif //SPECULAR_TEXTURE\n" - "#ifdef SPECULAR_TEXTURE_BLEND\n" - "uniform sampler2D uTextureSpecular1;\n" - "uniform float uTextureSpecularWeight;\n" - "uniform mat3 uTextureMatrixTransformSpecular1;\n" - "#endif //SPECULAR_TEXTURE_BLEND\n" - "#endif //SPECULAR\n" - "#ifdef AMBIENT\n" - "uniform vec4 uMaterialAmbient;\n" - "uniform vec4 uLightAmbient;\n" - "#ifdef AMBIENT_TEXTURE\n" - "uniform sampler2D uTextureAmbient0;\n" - "uniform mat3 uTextureMatrixTransformAmbient0;\n" - "#endif //AMBIENT_TEXTURE\n" - "#ifdef AMBIENT_TEXTURE_BLEND\n" - "uniform sampler2D uTextureAmbient1;\n" - "uniform float uTextureAmbientWeight;\n" - "uniform mat3 uTextureMatrixTransformAmbient1;\n" - "#endif //AMBIENT_TEXTURE_BLEND\n" - "#endif //AMBIENT\n" - "#ifdef EMISSION\n" - "uniform vec4 uMaterialEmission;\n" - "#ifdef EMISSION_TEXTURE\n" - "uniform sampler2D uTextureEmission0;\n" - "uniform mat3 uTextureMatrixTransformEmission0;\n" - "#endif //EMISSION_TEXTURE\n" - "#ifdef EMISSION_TEXTURE_BLEND\n" - "uniform sampler2D uTextureEmission1;\n" - "uniform float uTextureEmissionWeight;\n" - "uniform mat3 uTextureMatrixTransformEmission1;\n" - "#endif //EMISSION_TEXTURE_BLEND\n" - "#endif //EMISSION\n" - "#ifdef LIGHT_SPOT\n" - "uniform vec3 uLightSpotDir;\n" - "uniform float uLightSpotExp;\n" - "uniform float uLightSpotCutoffCos;\n" - "#endif //LIGHT_SPOT\n" - "#ifdef LIGHT_ATTENUATION\n" - "varying float vLightDist;\n" - "#endif //LIGHT_ATTENUATION\n" - "#ifndef VERTEX_TANGENT\n" - "mat3 cotangent_frame(vec3 n, vec3 p, vec2 uv)\n" - "{\n" - " vec3 dp1 = dFdx(p);\n" - " vec3 dp2 = dFdy(p);\n" - " vec2 duv1 = dFdx(uv);\n" - " vec2 duv2 = dFdy(uv);\n" - " vec3 dp2perp = cross(dp2, n);\n" - " vec3 dp1perp = cross(n, dp1);\n" - " vec3 t = dp2perp * duv1.x + dp1perp * duv2.x;\n" - " vec3 b = dp2perp * duv1.y + dp1perp * duv2.y;\n" - " float invmax = inversesqrt(max(dot(t, t), dot(b, b)));\n" - " return mat3(t * invmax, b * invmax, n);\n" - "}\n" - "vec3 perturb_normal(vec3 normal)\n" - "{\n" - " mat3 tbn = cotangent_frame(vNormal, -vEyeVector, vTexCoord);\n" - " return normalize(tbn * normal);\n" - "}\n" - "#endif //VERTEX_TANGENT\n" - "vec4 fragmentNormalMap()\n" - "{\n" - " float factor;\n" - " vec3 normal;\n" - " vec4 color;\n" - " vec4 fragcolor;\n" - " vec3 Tex0CoordNormal = vec3(vTexCoord, 1.0) * uTextureMatrixTransformNormal0;\n" - "#ifdef NORMAL_TEXTURE_BLEND\n" - " vec3 Tex1CoordNormal = vec3(vTexCoord, 1.0) * uTextureMatrixTransformNormal1;\n" - " normal = texture2D(uTextureNormal0, vec2(Tex0CoordNormal)).rgb * uTextureNormalWeight / texture2D(uTextureNormal0, vec2(Tex0CoordNormal)).a;\n" - " normal += texture2D(uTextureNormal1, vec2(Tex1CoordNormal)).rgb / texture2D(uTextureNormal1, vec2(Tex1CoordNormal)).a *\n" - " (1.0 - uTextureNormalWeight);\n" - "#else\n" - " normal = texture2D(uTextureNormal0, vec2(Tex0CoordNormal)).rgb / texture2D(uTextureNormal0, vec2(Tex0CoordNormal)).a;\n" - "#endif //NORMAL_TEXTURE_BLEND\n" - " normal = 2.0 * normal - 1.0;\n" - "#ifndef VERTEX_TANGENT\n" - " normal = perturb_normal(normal);\n" - "#endif //VERTEX_TANGENT\n" - " vec3 lv = normalize(vLightVector);\n" - " normal = normalize(normal);\n" - " factor = dot(lv, normal);\n" - "#ifdef LIGHT_SPOT\n" - " float f = dot(-lv, normalize(uLightSpotDir));\n" - " if (f > uLightSpotCutoffCos)\n" - " factor *= pow(f, uLightSpotExp);\n" - " else\n" - " factor = 0.0;\n" - "#endif //LIGHT_SPOT\n" - " if (factor > 0.0)\n" - " {\n" - "#ifdef DIFFUSE\n" - " \n" - "#ifdef DIFFUSE_TEXTURE_BLEND\n" - " vec3 Tex0CoordDiffuse = vec3(vTexCoord, 1.0) * uTextureMatrixTransformDiffuse0;\n" - " vec3 Tex1CoordDiffuse = vec3(vTexCoord, 1.0) * uTextureMatrixTransformDiffuse1;\n" - " color = mix(texture2D(uTextureDiffuse1, vec2(Tex1CoordDiffuse)),\n" - " texture2D(uTextureDiffuse0, vec2(Tex0CoordDiffuse)), uTextureDiffuseWeight);\n" - " color *= uMaterialDiffuse;\n" - "#else\n" - "#ifdef DIFFUSE_TEXTURE\n" - " vec3 Tex0CoordDiffuse = vec3(vTexCoord, 1.0) * uTextureMatrixTransformDiffuse0;\n" - " color = texture2D(uTextureDiffuse0, vec2(Tex0CoordDiffuse)) * uMaterialDiffuse;\n" - "#else\n" - " color = uMaterialDiffuse;\n" - "#endif //DIFFUSE_TEXTURE\n" - "#endif //DIFFUSE_TEXTURE_BLEND\n" - " fragcolor = uLightDiffuse * color * factor;\n" - "#else\n" - " fragcolor = vec4(0.0, 0.0, 0.0, 0.0);\n" - "#endif //DIFFUSE\n" - "#ifdef SPECULAR\n" - " factor = dot(normalize(vLightHalfVector), normal);\n" - " if (factor > 0.0)\n" - " {\n" - " factor = pow(factor, uMaterialShininess);\n" - " \n" - "#ifdef SPECULAR_TEXTURE_BLEND\n" - " vec3 Tex0CoordSpecular = vec3(vTexCoord, 1.0) * uTextureMatrixTransformSpecular0;\n" - " vec3 Tex1CoordSpecular = vec3(vTexCoord, 1.0) * uTextureMatrixTransformSpecular1;\n" - " color = mix(texture2D(uTextureSpecular1, vec2(Tex1CoordSpecular)),\n" - " texture2D(uTextureSpecular0, vec2(Tex0CoordSpecular)), uTextureSpecularWeight);\n" - " color *= uMaterialSpecular;\n" - "#else\n" - "#ifdef SPECULAR_TEXTURE\n" - " vec3 Tex0CoordSpecular = vec3(vTexCoord, 1.0) * uTextureMatrixTransformSpecular0;\n" - " color = texture2D(uTextureSpecular0, vec2(Tex0CoordSpecular)) * uMaterialSpecular;\n" - "#else\n" - " color = uMaterialSpecular;\n" - "#endif //SPECULAR_TEXTURE\n" - "#endif //SPECULAR_TEXTURE_BLEND\n" - " fragcolor += uLightSpecular * color * factor;\n" - " }\n" - "#endif //SPECULAR\n" - "#ifdef SHADOWED\n" - " fragcolor *= shadow;\n" - "#endif //SHADOWED\n" - " }\n" - " else\n" - " fragcolor = vec4(0.0, 0.0, 0.0, 0.0);\n" - "#ifdef AMBIENT\n" - " \n" - "#ifdef AMBIENT_TEXTURE_BLEND\n" - " vec3 Tex0CoordAmbient = vec3(vTexCoord, 1.0) * uTextureMatrixTransformAmbient0;\n" - " vec3 Tex1CoordAmbient = vec3(vTexCoord, 1.0) * uTextureMatrixTransformAmbient1;\n" - " color = mix(texture2D(uTextureAmbient1, vec2(Tex1CoordAmbient)),\n" - " texture2D(uTextureAmbient0, vec2(Tex0CoordAmbient)), uTextureAmbientWeight);\n" - " color *= uMaterialAmbient;\n" - "#else\n" - "#ifdef AMBIENT_TEXTURE\n" - " vec3 Tex0CoordAmbient = vec3(vTexCoord, 1.0) * uTextureMatrixTransformAmbient0;\n" - " color = texture2D(uTextureAmbient0, vec2(Tex0CoordAmbient)) * uMaterialAmbient;\n" - "#else\n" - " color = uMaterialAmbient;\n" - "#endif //AMBIENT_TEXTURE\n" - "#endif //AMBIENT_TEXTURE_BLEND\n" - " fragcolor += uLightAmbient * color;\n" - "#endif //AMBIENT\n" - "#ifdef LIGHT_ATTENUATION\n" - " fragcolor /= dot(uLightAtten, vec3(1.0, vLightDist, vLightDist * vLightDist));\n" - "#endif //LIGHT_ATTENUATION\n" - "#ifdef EMISSION\n" - " \n" - "#ifdef EMISSION_TEXTURE_BLEND\n" - " vec3 Tex0CoordEmission = vec3(vTexCoord, 1.0) * uTextureMatrixTransformEmission0;\n" - " vec3 Tex1CoordEmission = vec3(vTexCoord, 1.0) * uTextureMatrixTransformEmission1;\n" - " color = mix(texture2D(uTextureEmission1, vec2(Tex1CoordEmission)),\n" - " texture2D(uTextureEmission0, vec2(Tex0CoordEmission)), uTextureEmissionWeight);\n" - " color *= uMaterialEmission;\n" - "#else\n" - "#ifdef EMISSION_TEXTURE\n" - " vec3 Tex0CoordEmission = vec3(vTexCoord, 1.0) * uTextureMatrixTransformEmission0;\n" - " color = texture2D(uTextureEmission0, vec2(Tex0CoordEmission)) * uMaterialEmission;\n" - "#else\n" - " color = uMaterialEmission;\n" - "#endif //EMISSION_TEXTURE\n" - "#endif //EMISSION_TEXTURE_BLEND\n" - " fragcolor += color;\n" - "#endif //EMISSION\n" - " return fragcolor;\n" - "}\n" - "void main() {\n" - " vec4 color;\n" - "#ifdef SHADOWED\n" - " shadow = pcf(vLightPosition);\n" - "#endif //SHADOWED\n" - " color = fragmentNormalMap();\n" - "#ifdef ALPHA_TEST_ENABLED\n" - " /*uAlphaTestComparison is value of the Evas_3D_Comparison type*/\n" - " const float p = 1000000.0;\n" - " float acolor = floor(color.a * p);\n" - " float refvalue = floor(uAlphaTestRefValue * p);\n" - " if (uAlphaTestComparison == 0) discard;\n" - " else if (uAlphaTestComparison == 1)\n" - " {\n" - " if (acolor < refvalue) gl_FragColor = color;\n" - " else discard;\n" - " }\n" - " else if (uAlphaTestComparison == 2)\n" - " {\n" - " if (acolor == refvalue) gl_FragColor = color;\n" - " else discard;\n" - " }\n" - " else if (uAlphaTestComparison == 3)\n" - " {\n" - " if (acolor <= refvalue) gl_FragColor = color;\n" - " else discard;\n" - " }\n" - " else if (uAlphaTestComparison == 4)\n" - " {\n" - " if (acolor > refvalue) gl_FragColor = color;\n" - " else discard;\n" - " }\n" - " else if (uAlphaTestComparison == 5)\n" - " {\n" - " if (acolor != refvalue) gl_FragColor = color;\n" - " else discard;\n" - " }\n" - " else if (uAlphaTestComparison == 6)\n" - " {\n" - " if (acolor >= refvalue) gl_FragColor = color;\n" - " else discard;\n" - " }\n" - " else if (uAlphaTestComparison == 7) ;\n" - "#else\n" - " gl_FragColor = color;\n" - "#endif //ALPHA_TEST_ENABLED\n" - "#ifdef FOG_ENABLED\n" - " float z = gl_FragCoord.z / gl_FragCoord.w;\n" - " float fogFactor = exp2(-uFogFactor * uFogFactor * z * z * 1.44);\n" - " fogFactor = clamp(fogFactor, 0.0, 1.0);\n" - " gl_FragColor = mix(uFogColor, gl_FragColor, fogFactor);\n" - "#endif //FOG_ENABLED\n" - "}\n"; - -static const char shadow_map_vert_glsl[] = - "#ifdef GL_ES\n" - "precision mediump float;\n" - "precision mediump int;\n" - "precision lowp sampler2D;\n" - "#endif\n" - "uniform mat4 uMatrixMvp;\n" - "varying vec4 shadowmapposition;\n" - "#ifdef VERTEX_POSITION\n" - "attribute vec4 aPosition0;\n" - "#endif //VERTEX_POSITION\n" - "#ifdef VERTEX_POSITION_BLEND\n" - "attribute vec4 aPosition1;\n" - "uniform float uPositionWeight;\n" - "#endif //VERTEX_POSITION_BLEND\n" - "#ifdef ALPHA_TEST_ENABLED\n" - "#ifdef VERTEX_TEXCOORD\n" - "attribute vec4 aTexCoord0;\n" - "#endif //VERTEX_TEXCOORD\n" - "#ifdef VERTEX_TEXCOORD_BLEND\n" - "attribute vec4 aTexCoord1;\n" - "uniform float uTexCoordWeight;\n" - "#endif //VERTEX_TEXCOORD_BLEND\n" - "#ifdef NEED_TEX_COORD\n" - "varying vec2 vTexCoord;\n" - "#endif //NEED_TEX_COORD\n" - "#endif //ALPHA_TEST_ENABLED\n" - "void main()\n" - "{\n" - "#ifdef VERTEX_POSITION_BLEND\n" - " vec4 position = mix(aPosition1, aPosition0, uPositionWeight);\n" - " position = vec4(position.xyz, 1.0);\n" - "#else\n" - "#ifdef VERTEX_POSITION\n" - " vec4 position = vec4(aPosition0.xyz, 1.0);\n" - "#endif // VERTEX_POSITION\n" - "#endif //VERTEX_POSITION_BLEND\n" - "#ifdef ALPHA_TEST_ENABLED\n" - " #ifdef VERTEX_TEXCOORD_BLEND\n" - " vTexCoord = mix(vec2(aTexCoord1.s, 1.0 - aTexCoord1.t),\n" - " vec2(aTexCoord0.s, 1.0 - aTexCoord0.t), uTexCoordWeight);\n" - "#else\n" - "#ifdef VERTEX_TEXCOORD\n" - " vTexCoord = vec2(aTexCoord0.s, 1.0 - aTexCoord0.t);\n" - "#endif //VERTEX_TEXCOORD\n" - "#endif //VERTEX_TEXCOORD_BLEND\n" - "#endif //ALPHA_TEST_ENABLED\n" - " gl_Position = uMatrixMvp * position;\n" - " shadowmapposition = gl_Position;\n" - "}\n"; - -static const char shadow_map_frag_glsl[] = - "#ifdef GL_ES\n" - "precision mediump float;\n" - "precision mediump int;\n" - "precision lowp sampler2D;\n" - "#endif\n" - "varying vec4 shadowmapposition;\n" - "#ifdef ALPHA_TEST_ENABLED\n" - "#ifdef NEED_TEX_COORD\n" - "varying vec2 vTexCoord;\n" - "#endif //TEX_COORD\n" - "uniform int uAlphaTestComparison;\n" - "uniform float uAlphaTestRefValue;\n" - "#ifdef DIFFUSE\n" - "#ifdef DIFFUSE_TEXTURE\n" - "uniform sampler2D uTextureDiffuse0;\n" - "uniform mat3 uTextureMatrixTransformDiffuse0;\n" - "#endif //DIFFUSE_TEXTURE\n" - "#ifdef DIFFUSE_TEXTURE_BLEND\n" - "uniform sampler2D uTextureDiffuse1;\n" - "uniform float uTextureDiffuseWeight;\n" - "uniform mat3 uTextureMatrixTransformDiffuse1;\n" - "#endif //DIFFUSE_TEXTURE_BLEND\n" - "#endif //DIFFUSE\n" - "#endif //ALPHA_TEST_ENABLED\n" - "void main() {\n" - " vec4 color;\n" - "#ifndef NEED_TEX_COORD\n" - " gl_FragColor = vec4(1);\n" - "#endif\n" - "#ifdef ALPHA_TEST_ENABLED\n" - "#ifdef DIFFUSE_TEXTURE_BLEND\n" - " vec3 Tex1CoordDiffuse = vec3(vTexCoord, 1.0) * uTextureMatrixTransformDiffuse1;\n" - " color = (texture2D(uTextureDiffuse0, vec2(Tex0CoordDiffuse)) *\n" - " uTextureDiffuseWeight + texture2D(uTextureDiffuse1, vec2(Tex1CoordDiffuse)) *\n" - " (1.0 - uTextureDiffuseWeight));\n" - "#else\n" - "#ifdef DIFFUSE_TEXTURE\n" - " vec3 Tex0CoordDiffuse = vec3(vTexCoord, 1.0) * uTextureMatrixTransformDiffuse0;\n" - " color = texture2D(uTextureDiffuse0, vec2(Tex0CoordDiffuse));\n" - "#else\n" - " color = vec4(1);\n" - "#endif //DIFFUSE_TEXTURE\n" - "#endif //DIFFUSE_TEXTURE_BLEND\n" - " /*uAlphaTestComparison is value of the Evas_3D_Comparison type*/\n" - " const float p = 1000000.0;\n" - " float acolor = floor(color.a * p);\n" - " float refvalue = floor(uAlphaTestRefValue * p);\n" - " if (uAlphaTestComparison == 0) discard;\n" - " else if (uAlphaTestComparison == 1)\n" - " {\n" - " if (acolor < refvalue) gl_FragColor = color;\n" - " else discard;\n" - " }\n" - " else if (uAlphaTestComparison == 2)\n" - " {\n" - " if (acolor == refvalue) gl_FragColor = color;\n" - " else discard;\n" - " }\n" - " else if (uAlphaTestComparison == 3)\n" - " {\n" - " if (acolor <= refvalue) gl_FragColor = color;\n" - " else discard;\n" - " }\n" - " else if (uAlphaTestComparison == 4)\n" - " {\n" - " if (acolor > refvalue) gl_FragColor = color;\n" - " else discard;\n" - " }\n" - " else if (uAlphaTestComparison == 5)\n" - " {\n" - " if (acolor != refvalue) gl_FragColor = color;\n" - " else discard;\n" - " }\n" - " else if (uAlphaTestComparison == 6)\n" - " {\n" - " if (acolor >= refvalue) gl_FragColor = color;\n" - " else discard;\n" - " }\n" - " else if (uAlphaTestComparison == 7) ;\n" - "#endif //ALPHA_TEST_ENABLED\n" - " const vec4 pack = vec4(256.0 * 256.0 * 256.0, 256.0 * 256.0, 256.0, 1.0);\n" - " const vec4 mask = vec4(0.0, 1.0 / 256.0, 1.0 / 256.0, 1.0 / 256.0);\n" - " vec4 depthcolor;\n" - " float normdist = shadowmapposition.z / shadowmapposition.w;\n" - " normdist = ((normdist + 1.0) / 2.0);\n" - " depthcolor = vec4(fract(pack * normdist));\n" - " depthcolor -= depthcolor.xxyz * mask;\n" - " gl_FragColor = depthcolor;\n" - "}\n"; - -static const char color_pick_vert_glsl[] = - "#ifdef GL_ES\n" - "precision mediump float;\n" - "precision mediump int;\n" - "precision lowp sampler2D;\n" - "#endif\n" - "uniform mat4 uMatrixMvp;\n" - "#ifdef VERTEX_POSITION\n" - "attribute vec4 aPosition0;\n" - "#endif //VERTEX_POSITION\n" - "#ifdef VERTEX_POSITION_BLEND\n" - "attribute vec4 aPosition1;\n" - "uniform float uPositionWeight;\n" - "#endif //VERTEX_POSITION_BLEND\n" - "void main()\n" - "{\n" - " #ifdef VERTEX_POSITION_BLEND\n" - " vec4 position = mix(aPosition1, aPosition0, uPositionWeight);\n" - " position = vec4(position.xyz, 1.0);\n" - "#else\n" - "#ifdef VERTEX_POSITION\n" - " vec4 position = vec4(aPosition0.xyz, 1.0);\n" - "#endif // VERTEX_POSITION\n" - "#endif //VERTEX_POSITION_BLEND\n" - " gl_Position = uMatrixMvp * position;\n" - "}\n"; - -static const char color_pick_frag_glsl[] = - "#ifdef GL_ES\n" - "precision mediump float;\n" - "precision mediump int;\n" - "precision lowp sampler2D;\n" - "#endif\n" - "uniform vec4 uColorPick;\n" - "uniform int uAlphaTestComparison;\n" - "uniform float uAlphaTestRefValue;\n" - "void main()\n" - "{\n" - " vec4 color = uColorPick;\n" - "#ifdef ALPHA_TEST_ENABLED\n" - " /*uAlphaTestComparison is value of the Evas_3D_Comparison type*/\n" - " const float p = 1000000.0;\n" - " float acolor = floor(color.a * p);\n" - " float refvalue = floor(uAlphaTestRefValue * p);\n" - " if (uAlphaTestComparison == 0) discard;\n" - " else if (uAlphaTestComparison == 1)\n" - " {\n" - " if (acolor < refvalue) gl_FragColor = color;\n" - " else discard;\n" - " }\n" - " else if (uAlphaTestComparison == 2)\n" - " {\n" - " if (acolor == refvalue) gl_FragColor = color;\n" - " else discard;\n" - " }\n" - " else if (uAlphaTestComparison == 3)\n" - " {\n" - " if (acolor <= refvalue) gl_FragColor = color;\n" - " else discard;\n" - " }\n" - " else if (uAlphaTestComparison == 4)\n" - " {\n" - " if (acolor > refvalue) gl_FragColor = color;\n" - " else discard;\n" - " }\n" - " else if (uAlphaTestComparison == 5)\n" - " {\n" - " if (acolor != refvalue) gl_FragColor = color;\n" - " else discard;\n" - " }\n" - " else if (uAlphaTestComparison == 6)\n" - " {\n" - " if (acolor >= refvalue) gl_FragColor = color;\n" - " else discard;\n" - " }\n" - " else if (uAlphaTestComparison == 7) ;\n" - "#else\n" - " gl_FragColor = color;\n" - "#endif //ALPHA_TEST_ENABLED\n" - "}\n"; - -static const char parallax_occlusion_vert_glsl[] = - "#ifdef GL_ES\n" - "precision mediump float;\n" - "precision mediump int;\n" - "precision lowp sampler2D;\n" - "#endif\n" - "uniform mat4 uMatrixMvp;\n" - "uniform mat3 uMatrixNormal;\n" - "uniform mat4 uMatrixModelview;\n" - "uniform vec4 uLightPosition;\n" - "varying vec3 vLightVector;\n" - "varying vec3 vLightHalfVector;\n" - "varying vec3 vEyeVector;\n" - "#ifdef SHADOWED\n" - "uniform mat4 uMatrixLight;\n" - "varying vec4 vLightPosition;\n" - "#endif //SHADOWED\n" - "#ifdef VERTEX_POSITION\n" - "attribute vec4 aPosition0;\n" - "#endif //VERTEX_POSITION\n" - "#ifdef VERTEX_POSITION_BLEND\n" - "attribute vec4 aPosition1;\n" - "uniform float uPositionWeight;\n" - "#endif //VERTEX_POSITION_BLEND\n" - "#ifdef VERTEX_NORMAL\n" - "attribute vec4 aNormal0;\n" - "#endif //VERTEX_NORMAL\n" - "#ifdef VERTEX_NORMAL_BLEND\n" - "attribute vec4 aNormal1;\n" - "uniform float uNormalWeight;\n" - "#endif //VERTEX_NORMAL_BLEND\n" - "#ifdef VERTEX_TANGENT\n" - "attribute vec4 aTangent0;\n" - "#endif //VERTEX_TANGENT\n" - "#ifdef VERTEX_TANGENT_BLEND\n" - "attribute vec4 aTangent1;\n" - "uniform float uTangentWeight;\n" - "#endif //VERTEX_TANGENT_BLEND\n" - "#ifdef VERTEX_TEXCOORD\n" - "attribute vec4 aTexCoord0;\n" - "#endif //VERTEX_TEXCOORD\n" - "#ifdef VERTEX_TEXCOORD_BLEND\n" - "attribute vec4 aTexCoord1;\n" - "uniform float uTexCoordWeight;\n" - "#endif //VERTEX_TEXCOORD_BLEND\n" - "#ifdef NEED_TEX_COORD\n" - "varying vec2 vTexCoord;\n" - "#endif //NEED_TEX_COORD\n" - "#ifdef LIGHT_ATTENUATION\n" - "varying float vLightDist;\n" - "#endif //LIGHT_ATTENUATION\n" - "void vertexParallaxOcclusion(vec4 position, vec3 normal, vec3 tangent)\n" - "{\n" - " vec3 n = normalize(uMatrixNormal * normal);\n" - " vec3 t = normalize(uMatrixNormal * tangent);\n" - " vec3 b = cross(n, t);\n" - " vec3 tmp;\n" - " position = uMatrixModelview * position;\n" - "#ifdef LIGHT_DIRECTIONAL\n" - " vec3 lightDir = uLightPosition.xyz;\n" - "#else\n" - " vec3 lightDir = uLightPosition.xyz - position.xyz;\n" - "#ifdef LIGHT_ATTENUATION\n" - " vLightDist = length(lightDir);\n" - "#endif //LIGHT_ATTENUATION\n" - " lightDir = normalize(lightDir);\n" - "#endif //LIGHT_DIRECTIONAL\n" - " tmp.x = dot(lightDir, t);\n" - " tmp.y = dot(lightDir, b);\n" - " tmp.z = dot(lightDir, n);\n" - " vLightVector = tmp;\n" - " tmp.x = dot(position.xyz, t);\n" - " tmp.y = dot(position.xyz, b);\n" - " tmp.z = dot(position.xyz, n);\n" - " vEyeVector = normalize(tmp);\n" - " vec3 hv = normalize(normalize(-position.xyz) + lightDir);\n" - " tmp.x = dot(hv, t);\n" - " tmp.y = dot(hv, b);\n" - " tmp.z = dot(hv, n);\n" - " vLightHalfVector = tmp;\n" - "}\n" - "void main()\n" - "{\n" - " #ifdef VERTEX_POSITION_BLEND\n" - " vec4 position = mix(aPosition1, aPosition0, uPositionWeight);\n" - " position = vec4(position.xyz, 1.0);\n" - "#else\n" - "#ifdef VERTEX_POSITION\n" - " vec4 position = vec4(aPosition0.xyz, 1.0);\n" - "#endif // VERTEX_POSITION\n" - "#endif //VERTEX_POSITION_BLEND\n" - " #ifdef VERTEX_NORMAL_BLEND\n" - " vec3 normal = mix(aNormal1.xyz, aNormal0.xyz, uNormalWeight);\n" - "#else\n" - "#ifdef VERTEX_NORMAL\n" - " vec3 normal = aNormal0.xyz;\n" - "#endif //VERTEX_NORMAL\n" - "#endif //VERTEX_NORMAL_BLEND\n" - "#ifdef VERTEX_TANGENT_BLEND\n" - " vec3 tangent = aTangent0.xyz * uTangentWeight +\n" - " aTangent1.xyz * (1.0 - uTangentWeight);\n" - "#else\n" - "#ifdef VERTEX_TANGENT\n" - " vec3 tangent = aTangent0.xyz;\n" - "#endif //VERTEX_TANGENT\n" - "#endif //VERTEX_TANGENT_BLEND\n" - " #ifdef VERTEX_TEXCOORD_BLEND\n" - " vTexCoord = mix(vec2(aTexCoord1.s, 1.0 - aTexCoord1.t),\n" - " vec2(aTexCoord0.s, 1.0 - aTexCoord0.t), uTexCoordWeight);\n" - "#else\n" - "#ifdef VERTEX_TEXCOORD\n" - " vTexCoord = vec2(aTexCoord0.s, 1.0 - aTexCoord0.t);\n" - "#endif //VERTEX_TEXCOORD\n" - "#endif //VERTEX_TEXCOORD_BLEND\n" - " gl_Position = uMatrixMvp * position;\n" - " vertexParallaxOcclusion(position, normal, tangent);\n" - " #ifdef SHADOWED\n" - " vLightPosition = uMatrixLight * position;\n" - "#endif //SHADOWED\n" - "}\n"; - -static const char parallax_occlusion_frag_glsl[] = - "#ifdef GL_ES\n" - "precision mediump float;\n" - "precision mediump int;\n" - "precision lowp sampler2D;\n" - "#endif\n" - "varying vec3 vLightVector;\n" - "varying vec3 vLightHalfVector;\n" - "varying vec3 vEyeVector;\n" - "uniform sampler2D uTextureNormal0;\n" - "uniform mat3 uTextureMatrixTransformNormal0;\n" - "#ifdef NEED_TEX_COORD\n" - "varying vec2 vTexCoord;\n" - "vec3 Tex0CoordNormal;\n" - "#endif //TEX_COORD\n" - "#ifdef NORMAL_TEXTURE_BLEND\n" - "uniform sampler2D uTextureNormal1;\n" - "uniform float uTextureNormalWeight;\n" - "uniform mat3 uTextureMatrixTransformNormal1;\n" - "vec3 Tex1CoordNormal;\n" - "#endif //NORMAL_TEXTURE_BLEND\n" - "#ifdef FOG_ENABLED\n" - "uniform float uFogFactor;\n" - "uniform vec4 uFogColor;\n" - "#endif //FOG_ENABLED\n" - "#ifdef SHADOWED\n" - "varying vec4 vLightPosition;\n" - "uniform sampler2D uShadowMap;\n" - "uniform float uShadowsPCFStep;\n" - "uniform float uShadowsPCFSize;\n" - "uniform float uShadowsConstantBias;\n" - "float shadow;\n" - "float pcf(vec4 lpos)\n" - "{\n" - " vec3 smcoord = lpos.xyz / lpos.w * 0.5 + 0.5;\n" - " float i, j, shadow, q, c;\n" - " q = floor(uShadowsPCFStep * 2.0);\n" - " c = floor(uShadowsPCFStep * uShadowsPCFStep * 4.0);\n" - " shadow = 0.0;\n" - " const vec4 unpack = vec4(1.0 / (256.0 * 256.0 * 256.0), 1.0 / (256.0 * 256.0), 1.0 / 256.0, 1.0);\n" - " for (i = -uShadowsPCFStep; i < uShadowsPCFStep; i += 1.0)\n" - " for (j = -uShadowsPCFStep; j < uShadowsPCFStep; j += 1.0)\n" - " {\n" - " vec4 zvalue = texture2D(uShadowMap, smcoord.xy + vec2(i / q, j / q) * uShadowsPCFSize);\n" - " shadow += float(smcoord.z < dot(zvalue, unpack) + uShadowsConstantBias);\n" - " }\n" - " return shadow / c;\n" - "}\n" - "#endif //SHADOWED\n" - "#ifdef DIFFUSE\n" - "uniform vec4 uMaterialDiffuse;\n" - "uniform vec4 uLightDiffuse;\n" - "#ifdef DIFFUSE_TEXTURE\n" - "uniform sampler2D uTextureDiffuse0;\n" - "uniform mat3 uTextureMatrixTransformDiffuse0;\n" - "#endif //DIFFUSE_TEXTURE\n" - "#ifdef DIFFUSE_TEXTURE_BLEND\n" - "uniform sampler2D uTextureDiffuse1;\n" - "uniform float uTextureDiffuseWeight;\n" - "uniform mat3 uTextureMatrixTransformDiffuse1;\n" - "#endif //DIFFUSE_TEXTURE_BLEND\n" - "#endif //DIFFUSE\n" - "#ifdef SPECULAR\n" - "uniform vec4 uLightSpecular;\n" - "uniform float uMaterialShininess;\n" - "uniform vec4 uMaterialSpecular;\n" - "#ifdef SPECULAR_TEXTURE\n" - "uniform sampler2D uTextureSpecular0;\n" - "uniform mat3 uTextureMatrixTransformSpecular0;\n" - "#endif //SPECULAR_TEXTURE\n" - "#ifdef SPECULAR_TEXTURE_BLEND\n" - "uniform sampler2D uTextureSpecular1;\n" - "uniform float uTextureSpecularWeight;\n" - "uniform mat3 uTextureMatrixTransformSpecular1;\n" - "#endif //SPECULAR_TEXTURE_BLEND\n" - "#endif //SPECULAR\n" - "#ifdef AMBIENT\n" - "uniform vec4 uMaterialAmbient;\n" - "uniform vec4 uLightAmbient;\n" - "#ifdef AMBIENT_TEXTURE\n" - "uniform sampler2D uTextureAmbient0;\n" - "uniform mat3 uTextureMatrixTransformAmbient0;\n" - "#endif //AMBIENT_TEXTURE\n" - "#ifdef AMBIENT_TEXTURE_BLEND\n" - "uniform sampler2D uTextureAmbient1;\n" - "uniform float uTextureAmbientWeight;\n" - "uniform mat3 uTextureMatrixTransformAmbient1;\n" - "#endif //AMBIENT_TEXTURE_BLEND\n" - "#endif //AMBIENT\n" - "#ifdef EMISSION\n" - "uniform vec4 uMaterialEmission;\n" - "#ifdef EMISSION_TEXTURE\n" - "uniform sampler2D uTextureEmission0;\n" - "uniform mat3 uTextureMatrixTransformEmission0;\n" - "#endif //EMISSION_TEXTURE\n" - "#ifdef EMISSION_TEXTURE_BLEND\n" - "uniform sampler2D uTextureEmission1;\n" - "uniform float uTextureEmissionWeight;\n" - "uniform mat3 uTextureMatrixTransformEmission1;\n" - "#endif //EMISSION_TEXTURE_BLEND\n" - "#endif //EMISSION\n" - "#ifdef LIGHT_SPOT\n" - "uniform vec3 uLightSpotDir;\n" - "uniform float uLightSpotExp;\n" - "uniform float uLightSpotCutoffCos;\n" - "#endif //LIGHT_SPOT\n" - "#ifdef LIGHT_ATTENUATION\n" - "varying float vLightDist;\n" - "#endif //LIGHT_ATTENUATION\n" - "uniform int uAlphaTestComparison;\n" - "uniform float uAlphaTestRefValue;\n" - "const float parallaxScale = 0.2;\n" - "vec2 parallaxMapping(in vec3 view, in vec2 tex, out float parallaxHeight)\n" - "{\n" - " const float numLayers = 15.0;\n" - " vec2 texStep = parallaxScale * view.xy / view.z / numLayers;\n" - " float layerHeight = 1.0 / numLayers;\n" - " float curLayerHeight = 0.0;\n" - " vec2 dtex = parallaxScale * view.xy / view.z / numLayers;\n" - " vec2 currentTextureCoords = tex;\n" - "#ifdef NORMAL_TEXTURE_BLEND\n" - " float heightFromTexture = (1.0 - texture2D(uTextureNormal0, vec2(Tex0CoordNormal)).a) * uTextureNormalWeight;\n" - " heightFromTexture += (1.0 - texture2D(uTextureNormal1, vec2(Tex1CoordNormal)).a) *\n" - " (1.0 - uTextureNormalWeight);\n" - "#else\n" - " float heightFromTexture = 1.0 - texture2D(uTextureNormal0, currentTextureCoords).a;\n" - "#endif //NORMAL_TEXTURE_BLEND\n" - " while(heightFromTexture > curLayerHeight)\n" - " {\n" - " curLayerHeight += layerHeight;\n" - " currentTextureCoords -= dtex;\n" - "#ifdef NORMAL_TEXTURE_BLEND\n" - " heightFromTexture = (1.0 - texture2D(uTextureNormal0, currentTextureCoords).a) * uTextureNormalWeight;\n" - " heightFromTexture += (1.0 - texture2D(uTextureNormal1, currentTextureCoords).a) *\n" - " (1.0 - uTextureNormalWeight);\n" - "#else\n" - " heightFromTexture = 1.0 - texture2D(uTextureNormal0, currentTextureCoords).a;\n" - "#endif //NORMAL_TEXTURE_BLEND\n" - " }\n" - " vec2 prevTCoords = currentTextureCoords + texStep;\n" - " float nextH = heightFromTexture - curLayerHeight;\n" - "#ifdef NORMAL_TEXTURE_BLEND\n" - " float prevH = (1.0 - texture2D(uTextureNormal0, prevTCoords).a\n" - " - curLayerHeight + layerHeight) * uTextureNormalWeight;\n" - " prevH += (1.0 - texture2D(uTextureNormal1, prevTCoords).a\n" - " - curLayerHeight + layerHeight) * (1.0 - uTextureNormalWeight);\n" - "#else\n" - " float prevH = 1.0 - texture2D(uTextureNormal0, prevTCoords).a\n" - " - curLayerHeight + layerHeight;\n" - "#endif //NORMAL_TEXTURE_BLEND\n" - " float weight = nextH / (nextH - prevH);\n" - " vec2 finalTexCoords = prevTCoords * weight + currentTextureCoords * (1.0-weight);\n" - " parallaxHeight = curLayerHeight + prevH * weight + nextH * (1.0 - weight);\n" - " return finalTexCoords;\n" - "}\n" - "vec4 fragmentParallaxMap()\n" - "{\n" - " float factor;\n" - " vec3 normal;\n" - " vec4 color;\n" - " vec4 fragcolor;\n" - " float parallaxHeight;\n" - " vec2 tex = parallaxMapping(vEyeVector, vec2(Tex0CoordNormal), parallaxHeight);\n" - " vec3 lv = normalize(vLightVector);\n" - "#ifdef NORMAL_TEXTURE_BLEND\n" - " normal = texture2D(uTextureNormal0, tex).rgb * uTextureNormalWeight / texture2D(uTextureNormal0, tex).a;\n" - " normal += texture2D(uTextureNormal1, tex).rgb *\n" - " (1.0 - uTextureNormalWeight) / texture2D(uTextureNormal1, tex).a;\n" - "#else\n" - " normal = texture2D(uTextureNormal0, tex).rgb / texture2D(uTextureNormal0, tex).a;\n" - "#endif //NORMAL_TEXTURE_BLEND\n" - " normal = 2.0 * normal - 1.0;\n" - " normal = normalize(normal);\n" - " factor = dot(lv, normal);\n" - "#ifdef LIGHT_SPOT\n" - " float f = dot(-lv, normalize(uLightSpotDir));\n" - " if (f > uLightSpotCutoffCos)\n" - " factor *= pow(f, uLightSpotExp);\n" - " else\n" - " factor = 0.0;\n" - "#endif //LIGHT_SPOT\n" - " if (factor > 0.0)\n" - " {\n" - "#ifdef DIFFUSE\n" - "#ifdef DIFFUSE_TEXTURE_BLEND\n" - " color = texture2D(uTextureDiffuse0, tex) * uTextureDiffuseWeight +\n" - " texture2D(uTextureDiffuse1, tex) * (1.0 - uTextureDiffuseWeight);\n" - "#else\n" - "#ifdef DIFFUSE_TEXTURE\n" - " color = texture2D(uTextureDiffuse0, tex);\n" - "#else\n" - " color = uMaterialDiffuse;\n" - "#endif //DIFFUSE_TEXTURE\n" - "#endif //DIFFUSE_TEXTURE_BLEND\n" - " fragcolor = uLightDiffuse * color * factor;\n" - "#else\n" - " fragcolor = vec4(0.0, 0.0, 0.0, 0.0);\n" - "#endif //DIFFUSE\n" - "#ifdef SPECULAR\n" - " factor = dot(normalize(vLightHalfVector), normal);\n" - " if (factor > 0.0)\n" - " {\n" - " factor = pow(factor, uMaterialShininess);\n" - "#ifdef SPECULAR_TEXTURE_BLEND\n" - " color = texture2D(uTextureSpecular0, tex) * uTextureSpecularWeight +\n" - " texture2D(uTextureSpecular1, tex) * (1.0 - uTextureSpecularWeight);\n" - "#else\n" - "#ifdef SPECULAR_TEXTURE\n" - " color = texture2D(uTextureSpecular0, tex);\n" - "#else\n" - " color = uMaterialSpecular;\n" - "#endif //SPECULAR_TEXTURE\n" - "#endif //SPECULAR_TEXTURE_BLEND\n" - " fragcolor += uLightSpecular * color * factor;\n" - " }\n" - "#endif //SPECULAR\n" - "#ifdef SHADOWED\n" - " fragcolor *= shadow;\n" - "#endif //SHADOWED\n" - " }\n" - " else\n" - " fragcolor = vec4(0.0, 0.0, 0.0, 0.0);\n" - "#ifdef AMBIENT\n" - "#ifdef AMBIENT_TEXTURE_BLEND\n" - " color = texture2D(uTextureAmbient0, tex) * uTextureAmbientWeight +\n" - " texture2D(uTextureAmbient1, tex) * (1.0 - uTextureAmbientWeight);\n" - "#else\n" - "#ifdef AMBIENT_TEXTURE\n" - " color = texture2D(uTextureAmbient0, tex);\n" - "#else\n" - " color = uMaterialAmbient;\n" - "#endif //AMBIENT_TEXTURE\n" - "#endif //AMBIENT_TEXTURE_BLEND\n" - " fragcolor += uLightAmbient * color;\n" - "#endif //AMBIENT\n" - "#ifdef LIGHT_ATTENUATION\n" - " fragcolor /= dot(uLightAtten, vec3(1.0, vLightDist, vLightDist * vLightDist));\n" - "#endif //LIGHT_ATTENUATION\n" - "#ifdef EMISSION\n" - "#ifdef EMISSION_TEXTURE_BLEND\n" - " color = texture2D(uTextureEmission0, tex) * uTextureEmissionWeight +\n" - " texture2D(uTextureEmission1, tex) * (1.0 - uTextureEmissionWeight);\n" - "#else\n" - "#ifdef EMISSION_TEXTURE\n" - " color = texture2D(uTextureEmission0, tex);\n" - "#else\n" - " color = uMaterialEmission;\n" - "#endif //EMISSION_TEXTURE\n" - "#endif //EMISSION_TEXTURE_BLEND\n" - " fragcolor += color;\n" - "#endif //EMISSION\n" - " return fragcolor;\n" - "}\n" - "void main() {\n" - " vec4 color;\n" - "#ifdef NEED_TEX_COORD\n" - " Tex0CoordNormal = vec3(vTexCoord, 1.0) * uTextureMatrixTransformNormal0;\n" - "#endif // NEED_TEX_COORD\n" - "#ifdef NORMAL_TEXTURE_BLEND\n" - " Tex1CoordNormal = vec3(vTexCoord, 1.0) * uTextureMatrixTransformNormal1;\n" - "#endif //NORMAL_TEXTURE_BLEND\n" - "#ifdef SHADOWED\n" - " shadow = pcf(vLightPosition);\n" - "#endif //SHADOWED\n" - " color = fragmentParallaxMap();\n" - "#ifdef ALPHA_TEST_ENABLED\n" - " /*uAlphaTestComparison is value of the Evas_3D_Comparison type*/\n" - " const float p = 1000000.0;\n" - " float acolor = floor(color.a * p);\n" - " float refvalue = floor(uAlphaTestRefValue * p);\n" - " if (uAlphaTestComparison == 0) discard;\n" - " else if (uAlphaTestComparison == 1)\n" - " {\n" - " if (acolor < refvalue) gl_FragColor = color;\n" - " else discard;\n" - " }\n" - " else if (uAlphaTestComparison == 2)\n" - " {\n" - " if (acolor == refvalue) gl_FragColor = color;\n" - " else discard;\n" - " }\n" - " else if (uAlphaTestComparison == 3)\n" - " {\n" - " if (acolor <= refvalue) gl_FragColor = color;\n" - " else discard;\n" - " }\n" - " else if (uAlphaTestComparison == 4)\n" - " {\n" - " if (acolor > refvalue) gl_FragColor = color;\n" - " else discard;\n" - " }\n" - " else if (uAlphaTestComparison == 5)\n" - " {\n" - " if (acolor != refvalue) gl_FragColor = color;\n" - " else discard;\n" - " }\n" - " else if (uAlphaTestComparison == 6)\n" - " {\n" - " if (acolor >= refvalue) gl_FragColor = color;\n" - " else discard;\n" - " }\n" - " else if (uAlphaTestComparison == 7) ;\n" - "#else\n" - " gl_FragColor = color;\n" - "#endif //ALPHA_TEST_ENABLED\n" - " \n" - "#ifdef FOG_ENABLED\n" - " float z = gl_FragCoord.z / gl_FragCoord.w;\n" - " float fogFactor = exp2(-uFogFactor * uFogFactor * z * z * 1.44);\n" - " fogFactor = clamp(fogFactor, 0.0, 1.0);\n" - " gl_FragColor = mix(uFogColor, gl_FragColor, fogFactor);\n" - "#endif //FOG_ENABLED\n" - "}\n"; - -static const char post_processing_fxaa_vert_glsl[] = - "#ifdef GL_ES\n" - "precision mediump float;\n" - "precision mediump int;\n" - "precision lowp sampler2D;\n" - "#endif\n" - "uniform mat4 uMatrixMvp;\n" - "#ifdef VERTEX_POSITION\n" - "attribute vec4 aPosition0;\n" - "#endif //VERTEX_POSITION\n" - "#ifdef VERTEX_POSITION_BLEND\n" - "attribute vec4 aPosition1;\n" - "uniform float uPositionWeight;\n" - "#endif //VERTEX_POSITION_BLEND\n" - "varying vec2 tc0;\n" - "void main()\n" - "{\n" - " #ifdef VERTEX_POSITION_BLEND\n" - " vec4 position = mix(aPosition1, aPosition0, uPositionWeight);\n" - " position = vec4(position.xyz, 1.0);\n" - "#else\n" - "#ifdef VERTEX_POSITION\n" - " vec4 position = vec4(aPosition0.xyz, 1.0);\n" - "#endif // VERTEX_POSITION\n" - "#endif //VERTEX_POSITION_BLEND\n" - " gl_Position = uMatrixMvp * position;\n" - " tc0 = position.xy * 0.5 + 0.5;\n" - "}\n"; - -static const char post_processing_fxaa_frag_glsl[] = - "#ifdef GL_ES\n" - "precision mediump float;\n" - "precision mediump int;\n" - "precision lowp sampler2D;\n" - "#endif\n" - "//FXAA fragment shader by Timothy Lottes\n" - "//http://developer.download.nvidia.com/assets/gamedev/files/sdk/11/FXAA_WhitePaper.pdf\n" - "//modified and adapted to www.enlightenment.org by Oleksander Shcherbina\n" - "uniform sampler2D uColorTexture;\n" - "uniform float uFrameSizeH;\n" - "uniform float uFrameSizeW;\n" - "varying vec2 tc0;\n" - "vec4 fxaa()\n" - "{\n" - " float _SPAN_MAX_ = 8.0;\n" - " float _REDUCE_MUL_ = (1.0/8.0);\n" - " float _REDUCE_MIN_ = (1.0/128.0);\n" - " vec4 l = vec4(0.299, 0.587, 0.114, 0.0);\n" - " vec2 frameBufSize = vec2(uFrameSizeW, uFrameSizeH);\n" - " vec2 direction;\n" - " vec4 colorNW = texture2D(uColorTexture, tc0 + (vec2(-1.0, -1.0)/frameBufSize));\n" - " vec4 colorNE = texture2D(uColorTexture, tc0 + (vec2(1.0, -1.0)/frameBufSize));\n" - " vec4 colorSW = texture2D(uColorTexture, tc0 + (vec2(-1.0, 1.0)/frameBufSize));\n" - " vec4 colorSE = texture2D(uColorTexture, tc0 + (vec2(1.0, 1.0)/frameBufSize));\n" - " vec4 colorM = texture2D(uColorTexture,tc0);\n" - " float lNW = dot(colorNW, l);\n" - " float lNE = dot(colorNE, l);\n" - " float lSW = dot(colorSW, l);\n" - " float lSE = dot(colorSE, l);\n" - " float lM = dot(colorM, l);\n" - " float lMin = min(lM, min(min(lNW, lNE), min(lSW, lSE)));\n" - " float lMax = max(lM, max(max(lNW, lNE), max(lSW, lSE)));\n" - " direction.x = -((lNW + lNE) - (lSW + lSE));\n" - " direction.y = ((lNW + lSW) - (lNE + lSE));\n" - " float directionReduce = max(\n" - " (lNW + lNE + lSW + lSE) * (0.25 * _REDUCE_MUL_),\n" - " _REDUCE_MIN_);\n" - " float rcpDirMin = 1.0/(min(abs(direction.x), abs(direction.y)) + directionReduce);\n" - " direction = min(vec2(_SPAN_MAX_, _SPAN_MAX_),\n" - " max(vec2(-_SPAN_MAX_, -_SPAN_MAX_),\n" - " direction * rcpDirMin)) / frameBufSize;\n" - " vec4 colorA = 0.5 * (\n" - " texture2D(uColorTexture, tc0.xy + direction * (1.0/3.0 - 0.5)) +\n" - " texture2D(uColorTexture, tc0.xy + direction * (2.0/3.0 - 0.5)));\n" - " vec4 colorB = colorA * 0.5 + 0.25 * (\n" - " texture2D(uColorTexture, tc0.xy + direction * (- 0.5)) +\n" - " texture2D(uColorTexture, tc0.xy + direction * 0.5));\n" - " float lB = dot(colorB, l);\n" - " if((lB < lMin) || (lB > lMax))\n" - " return colorA;\n" - " else\n" - " return colorB;\n" - "}\n" - "void main()\n" - "{\n" - " gl_FragColor = fxaa();\n" - "}\n"; - -static const char *vertex_shaders[] = -{ - vertex_color_vert_glsl, - diffuse_vert_glsl, - flat_vert_glsl, - phong_vert_glsl, - normal_map_vert_glsl, - shadow_map_vert_glsl, - color_pick_vert_glsl, - parallax_occlusion_vert_glsl, - post_processing_fxaa_vert_glsl, -}; - -static const char *fragment_shaders[] = -{ - vertex_color_frag_glsl, - diffuse_frag_glsl, - flat_frag_glsl, - phong_frag_glsl, - normal_map_frag_glsl, - shadow_map_frag_glsl, - color_pick_frag_glsl, - parallax_occlusion_frag_glsl, - post_processing_fxaa_frag_glsl, -}; diff --git a/src/modules/evas/engines/gl_common/shader_3d/flat_frag.shd b/src/modules/evas/engines/gl_common/shader_3d/flat_frag.shd deleted file mode 100644 index 863bac1e1a..0000000000 --- a/src/modules/evas/engines/gl_common/shader_3d/flat_frag.shd +++ /dev/null @@ -1,64 +0,0 @@ -varying vec2 vFactor; - -FRAGMENT_SHADER_USE_TEX_COORD -FRAGMENT_SHADER_USE_FOG -FRAGMENT_SHADER_USE_SHADOWS -FRAGMENT_SHADER_USE_DIFFUSE_TERM -FRAGMENT_SHADER_USE_SPECULAR_TERM -FRAGMENT_SHADER_USE_AMBIENT_TERM -FRAGMENT_SHADER_USE_EMISSION_TERM -FRAGMENT_SHADER_USE_ALPHA_TEST_GLES - -vec4 fragmentFlat() -{ - vec4 color; - vec4 fragcolor; -#ifdef DIFFUSE - - FRAGMENT_SHADER_TEXTURE_BLEND(DIFFUSE, Diffuse) - fragcolor = uLightDiffuse * color * vFactor.x; -#else - fragcolor = vec4(0.0, 0.0, 0.0, 0.0); -#endif //DIFFUSE - -#ifdef SPECULAR - - FRAGMENT_SHADER_TEXTURE_BLEND(SPECULAR, Specular) - fragcolor += uLightSpecular * color * vFactor.y; - -#endif //SPECULAR - -#ifdef SHADOWED - fragcolor *= shadow; -#endif //SHADOWED - -#ifdef AMBIENT - - FRAGMENT_SHADER_TEXTURE_BLEND(AMBIENT, Ambient) - fragcolor += uLightAmbient * color; -#endif //AMBIENT - -#ifdef EMISSION - - FRAGMENT_SHADER_TEXTURE_BLEND(EMISSION, Emission) - fragcolor += color; -#endif //EMISSION - return fragcolor; -} - -void main() { - vec4 color; -#ifdef SHADOWED - shadow = pcf(vLightPosition); -#endif //SHADOWED - - color = fragmentFlat(); - -#ifdef ALPHA_TEST_ENABLED - FRAGMENT_SHADER_ALPHA_TEST_GLES_APPLY(color) -#else - gl_FragColor = color; -#endif //ALPHA_TEST_ENABLED - - FRAGMENT_SHADER_FOG_APPLY -} diff --git a/src/modules/evas/engines/gl_common/shader_3d/flat_vert.shd b/src/modules/evas/engines/gl_common/shader_3d/flat_vert.shd deleted file mode 100644 index 10b9493304..0000000000 --- a/src/modules/evas/engines/gl_common/shader_3d/flat_vert.shd +++ /dev/null @@ -1,92 +0,0 @@ -uniform mat4 uMatrixMvp; -uniform mat3 uMatrixNormal; -uniform mat4 uMatrixModelview; -uniform vec4 uLightPosition; -varying vec2 vFactor; - -VERTEX_SHADER_USE_SHADOWS -VERTEX_SHADER_USE_POSITION -VERTEX_SHADER_USE_NORMALS -VERTEX_SHADER_USE_TEXCOORD -VERTEX_SHADER_NEED_TEX_COORD - -#ifdef LIGHT_SPOT -uniform vec3 uLightSpotDir; -uniform float uLightSpotExp; -uniform float uLightSpotCutoffCos; -#endif //LIGHT_SPOT - -#ifdef SPECULAR -uniform float uMaterialShininess; -#endif //SPECULAR - -#ifdef LIGHT_ATTENUATION -uniform vec3 uLightAtten; -#endif //LIGHT_ATTENUATION - -void vertexFlat(vec4 position, vec3 normal) -{ - vec3 lv; - float factor; - normal = uMatrixNormal * normal; - position = uMatrixModelview * position; - -#ifdef NORMALIZE_NORMALS - normal = normalize(normal); -#endif //NORMALIZE_NORMALS - -#ifdef LIGHT_DIRECTIONAL - lv = uLightPosition.xyz; -#else - lv = uLightPosition.xyz - position.xyz; - lv = normalize(lv); -#endif //LIGHT_DIRECTIONAL - - factor = max(dot(lv, normal), 0.0); - -#ifdef LIGHT_SPOT - float f = dot(-lv, uLightSpotDir); - if (f > uLightSpotCutoffCos) - factor *= pow(f, uLightSpotExp); - else - factor = 0.0; -#endif //LIGHT_SPOT - - if (factor > 0.0) - { - -#ifdef DIFFUSE - vFactor.x = factor; -#else - vFactor.x = 0.0; -#endif //DIFFUSE - -#ifdef SPECULAR - vec3 hv = normalize(normalize(-position.xyz) + lv); - factor = pow(max(dot(hv, normal), 0.0), uMaterialShininess); - vFactor.y = factor; -#endif //SPECULAR - - } - else - vFactor = vec2(0.0, 0.0); - - /* Light attenuation. */ -#ifdef LIGHT_ATTENUATION - float dist = length(lv); - vFactor /= dot(uLightAtten, vec3(1.0, dist, dist * dist)); -#endif //LIGHT_ATTENUATION -} - -void main() -{ - - VERTEX_SHADER_POSITION - VERTEX_SHADER_NORMAL - VERTEX_SHADER_TEXCOORD - - gl_Position = uMatrixMvp * position; - vertexFlat(position, normal); - - VERTEX_SHADER_SHADOWED -} diff --git a/src/modules/evas/engines/gl_common/shader_3d/gen_shaders_3d.sh b/src/modules/evas/engines/gl_common/shader_3d/gen_shaders_3d.sh deleted file mode 100755 index f31880fda0..0000000000 --- a/src/modules/evas/engines/gl_common/shader_3d/gen_shaders_3d.sh +++ /dev/null @@ -1,68 +0,0 @@ -#!/bin/sh - -# This script will generate a C file containing all the shaders used by Evas_3D - -DIR=`dirname $0` -cd $DIR/../../../../../ - -OUTPUT="$DIR/evas_gl_3d_shaders.x" - -# Skip generation during make distcheck -if [ "${top_distdir}" != "" ] ; then exit 0; fi - -# Skip generation if file can not be written to -if [ -e ${OUTPUT} ] && [ ! -w ${OUTPUT} ] ; then exit 0; fi - -# Skip generation if there is no diff (or no git) -if ! git rev-parse 2>> /dev/null >> /dev/null ; then exit 0 ; fi -if git diff --quiet --exit-code -- "$DIR" -then - touch "$OUTPUT" - exit 0 -fi - -exec 1<&- -exec 1>"$OUTPUT" - -SHADERS=$@ -VERT_SHADERS_SOURCE="" -FRAG_SHADERS_SOURCE="" - -# Write header -printf "/* DO NOT MODIFY THIS FILE AS IT IS AUTO-GENERATED */\n" -printf "/* IF IT IS CHANGED PLEASE COMMIT THE CHANGES */\n\n" - -for SHD in $SHADERS ; do - LNAME=`basename "$SHD" .shd` - - if echo "$LNAME" | grep _vert 2>&1 >> /dev/null ; then - VERT_SHADERS_SOURCE="$VERT_SHADERS_SOURCE "$LNAME"_glsl,\n" - fi - if echo "$LNAME" | grep _frag 2>&1 >> /dev/null ; then - FRAG_SHADERS_SOURCE="$FRAG_SHADERS_SOURCE "$LNAME"_glsl,\n" - fi - - m4 "$DIR/include.shd" "$SHD" > "$SHD.tmp" - - OIFS="$IFS" - IFS=`printf '\n+'` - IFS=${IFS%+} - printf "static const char "$LNAME"_glsl[] =" - for LINE in `cat "$SHD.tmp"` ; do - printf "\n \"$LINE\\\n\"" - done - printf ";\n\n" - IFS="$OIFS" - - rm "$SHD.tmp" -done - -printf "static const char *vertex_shaders[] = -{\n" - printf "$VERT_SHADERS_SOURCE" -printf "};\n\n" - -printf "static const char *fragment_shaders[] = -{\n" - printf "$FRAG_SHADERS_SOURCE" -printf "};\n" diff --git a/src/modules/evas/engines/gl_common/shader_3d/include.shd b/src/modules/evas/engines/gl_common/shader_3d/include.shd deleted file mode 100644 index 2897589c17..0000000000 --- a/src/modules/evas/engines/gl_common/shader_3d/include.shd +++ /dev/null @@ -1,254 +0,0 @@ -`#ifdef GL_ES -precision mediump float; -precision mediump int; -precision lowp sampler2D; -#endif' - -define(`FRAGMENT_SHADER_USE_TEX_COORD',` -#ifdef NEED_TEX_COORD -varying vec2 vTexCoord; -#endif //TEX_COORD') - -define(`FRAGMENT_SHADER_USE_TEXTURE', ` -#ifdef $1_TEXTURE -uniform sampler2D uTexture$2`0'; -uniform mat3 uTextureMatrixTransform$2`0'; -#endif //$1_TEXTURE -#ifdef $1_TEXTURE_BLEND -uniform sampler2D uTexture$2`1'; -uniform float uTexture$2Weight; -uniform mat3 uTextureMatrixTransform$2`1'; -#endif //$1_TEXTURE_BLEND') - -define(`FRAGMENT_SHADER_USE_FOG', ` -#ifdef FOG_ENABLED -uniform float uFogFactor; -uniform vec4 uFogColor; -#endif //FOG_ENABLED') -define(`FRAGMENT_SHADER_USE_ALPHA_TEST_GLES', -uniform int uAlphaTestComparison; -uniform float uAlphaTestRefValue;) - -define(`FRAGMENT_SHADER_USE_SHADOWS', ` -#ifdef SHADOWED -varying vec4 vLightPosition; -uniform sampler2D uShadowMap; -uniform float uShadowsPCFStep; -uniform float uShadowsPCFSize; -uniform float uShadowsConstantBias; -float shadow; -float pcf(vec4 lpos) -{ - vec3 smcoord = lpos.xyz / lpos.w * 0.5 + 0.5; - float i, j, shadow, q, c; - q = floor(uShadowsPCFStep * 2.0); - c = floor(uShadowsPCFStep * uShadowsPCFStep * 4.0); - shadow = 0.0; - const vec4 unpack = vec4(1.0 / (256.0 * 256.0 * 256.0), 1.0 / (256.0 * 256.0), 1.0 / 256.0, 1.0); - for (i = -uShadowsPCFStep; i < uShadowsPCFStep; i += 1.0) - for (j = -uShadowsPCFStep; j < uShadowsPCFStep; j += 1.0) - { - vec4 zvalue = texture2D(uShadowMap, smcoord.xy + vec2(i / q, j / q) * uShadowsPCFSize); - shadow += float(smcoord.z < dot(zvalue, unpack) + uShadowsConstantBias); - } - return shadow / c; -} -#endif //SHADOWED') - -define(`FRAGMENT_SHADER_FOG_APPLY', ` -#ifdef FOG_ENABLED - float z = gl_FragCoord.z / gl_FragCoord.w; - float fogFactor = exp2(-uFogFactor * uFogFactor * z * z * 1.44); - fogFactor = clamp(fogFactor, 0.0, 1.0); - gl_FragColor = mix(uFogColor, gl_FragColor, fogFactor); -#endif //FOG_ENABLED') - -define(`FRAGMENT_SHADER_USE_LIGHT', ` -#ifdef LIGHT_SPOT -uniform vec3 uLightSpotDir; -uniform float uLightSpotExp; -uniform float uLightSpotCutoffCos; -#endif //LIGHT_SPOT -#ifdef LIGHT_ATTENUATION -varying float vLightDist; -#endif //LIGHT_ATTENUATION') - -define(`FRAGMENT_SHADER_TEXTURE_BLEND', ` -#ifdef $1_TEXTURE_BLEND - vec3 Tex0Coord$2 = vec3(vTexCoord, 1.0) * uTextureMatrixTransform$2`0'; - vec3 Tex1Coord$2 = vec3(vTexCoord, 1.0) * uTextureMatrixTransform$2`1'; - color = mix(texture2D(uTexture$2`1', vec2(Tex1Coord$2)), - texture2D(uTexture$2`0', vec2(Tex0Coord$2)), uTexture$2Weight); - color *= uMaterial$2; -#else -#ifdef $1_TEXTURE - vec3 Tex0Coord$2 = vec3(vTexCoord, 1.0) * uTextureMatrixTransform$2`0'; - color = texture2D(uTexture$2`0', vec2(Tex0Coord$2)) * uMaterial$2; -#else - color = uMaterial$2; -#endif //$1_TEXTURE -#endif //$1_TEXTURE_BLEND') - -define(`FRAGMENT_SHADER_USE_EMISSION_TERM', -`#ifdef EMISSION' -uniform vec4 uMaterialEmission; -FRAGMENT_SHADER_USE_TEXTURE(EMISSION, Emission) -`#endif //EMISSION') - -define(`FRAGMENT_SHADER_USE_SPECULAR_TERM', -`#ifdef SPECULAR' -uniform vec4 uLightSpecular; -uniform float uMaterialShininess; -uniform vec4 uMaterialSpecular; -FRAGMENT_SHADER_USE_TEXTURE(SPECULAR, Specular) -`#endif //SPECULAR') - -define(`FRAGMENT_SHADER_USE_AMBIENT_TERM', -`#ifdef AMBIENT' -uniform vec4 uMaterialAmbient; -uniform vec4 uLightAmbient; -FRAGMENT_SHADER_USE_TEXTURE(AMBIENT, Ambient) -`#endif //AMBIENT') - -define(`FRAGMENT_SHADER_USE_DIFFUSE_TERM', -`#ifdef DIFFUSE' -uniform vec4 uMaterialDiffuse; -uniform vec4 uLightDiffuse; -FRAGMENT_SHADER_USE_TEXTURE(DIFFUSE, Diffuse) -`#endif //DIFFUSE') - -define(`FRAGMENT_SHADER_ALPHA_TEST_GLES_APPLY', -/*uAlphaTestComparison is value of the Evas_3D_Comparison type*/ - const float p = 1000000.0; - float acolor = floor($1.a * p); - float refvalue = floor(uAlphaTestRefValue * p); - if (uAlphaTestComparison == 0) discard; - else if (uAlphaTestComparison == 1) - { - if (acolor < refvalue) gl_FragColor = $1; - else discard; - } - else if (uAlphaTestComparison == 2) - { - if (acolor == refvalue) gl_FragColor = $1; - else discard; - } - else if (uAlphaTestComparison == 3) - { - if (acolor <= refvalue) gl_FragColor = $1; - else discard; - } - else if (uAlphaTestComparison == 4) - { - if (acolor > refvalue) gl_FragColor = $1; - else discard; - } - else if (uAlphaTestComparison == 5) - { - if (acolor != refvalue) gl_FragColor = $1; - else discard; - } - else if (uAlphaTestComparison == 6) - { - if (acolor >= refvalue) gl_FragColor = $1; - else discard; - } - else if (uAlphaTestComparison == 7) ;) - - -define(`VERTEX_SHADER_NEED_TEX_COORD', -`#ifdef NEED_TEX_COORD' -varying vec2 vTexCoord; -`#endif //NEED_TEX_COORD') - -define(`VERTEX_SHADER_USE_LIGHT_ATTENUATION', -`#ifdef LIGHT_ATTENUATION' -varying float vLightDist; -`#endif //LIGHT_ATTENUATION') - -define(`VERTEX_SHADER_USE_SHADOWS', -`#ifdef SHADOWED' -uniform mat4 uMatrixLight; -varying vec4 vLightPosition; -`#endif //SHADOWED') - -define(`VERTEX_SHADER_USE_POSITION', -`#ifdef VERTEX_POSITION' -attribute vec4 aPosition0; -`#endif //VERTEX_POSITION' - -`#ifdef VERTEX_POSITION_BLEND' -attribute vec4 aPosition1; -uniform float uPositionWeight; -`#endif //VERTEX_POSITION_BLEND') - -define(`VERTEX_SHADER_USE_NORMALS', -`#ifdef VERTEX_NORMAL' -attribute vec4 aNormal0; -`#endif //VERTEX_NORMAL' - -`#ifdef VERTEX_NORMAL_BLEND' -attribute vec4 aNormal1; -uniform float uNormalWeight; -`#endif //VERTEX_NORMAL_BLEND' -) - -define(`VERTEX_SHADER_USE_TEXCOORD', -`#ifdef VERTEX_TEXCOORD' -attribute vec4 aTexCoord0; -`#endif //VERTEX_TEXCOORD' - -`#ifdef VERTEX_TEXCOORD_BLEND' -attribute vec4 aTexCoord1; -uniform float uTexCoordWeight; -`#endif //VERTEX_TEXCOORD_BLEND' -) - -define(`VERTEX_SHADER_USE_COLOR', -`#ifdef VERTEX_COLOR' -attribute vec4 aColor0; -`#endif //VERTEX_COLOR' - -`#ifdef VERTEX_COLOR_BLEND' -attribute vec4 aColor1; -uniform float uColorWeight; -`#endif //VERTEX_COLOR_BLEND') - -define(`VERTEX_SHADER_POSITION', -`#ifdef VERTEX_POSITION_BLEND' - vec4 position = mix(aPosition1, aPosition0, uPositionWeight); - position = vec4(position.xyz, 1.0); -`#else' - -`#ifdef VERTEX_POSITION' - vec4 position = vec4(aPosition0.xyz, 1.0); -`#endif // VERTEX_POSITION' - -`#endif //VERTEX_POSITION_BLEND') - -define(`VERTEX_SHADER_NORMAL', -`#ifdef VERTEX_NORMAL_BLEND' - vec3 normal = mix(aNormal1.xyz, aNormal0.xyz, uNormalWeight); -`#else' - -`#ifdef VERTEX_NORMAL' - vec3 normal = aNormal0.xyz; -`#endif //VERTEX_NORMAL' -`#endif //VERTEX_NORMAL_BLEND') - -define(`VERTEX_SHADER_TEXCOORD', -`#ifdef VERTEX_TEXCOORD_BLEND' - vTexCoord = mix(vec2(aTexCoord1.s, 1.0 - aTexCoord1.t), - vec2(aTexCoord0.s, 1.0 - aTexCoord0.t), uTexCoordWeight); -`#else' - -`#ifdef VERTEX_TEXCOORD' - vTexCoord = vec2(aTexCoord0.s, 1.0 - aTexCoord0.t); -`#endif //VERTEX_TEXCOORD' - -`#endif //VERTEX_TEXCOORD_BLEND') - -define(`VERTEX_SHADER_SHADOWED', -`#ifdef SHADOWED' - vLightPosition = uMatrixLight * position; -`#endif //SHADOWED') diff --git a/src/modules/evas/engines/gl_common/shader_3d/normal_map_frag.shd b/src/modules/evas/engines/gl_common/shader_3d/normal_map_frag.shd deleted file mode 100644 index ad2b64f4f8..0000000000 --- a/src/modules/evas/engines/gl_common/shader_3d/normal_map_frag.shd +++ /dev/null @@ -1,147 +0,0 @@ -varying vec3 vLightVector; -varying vec3 vLightHalfVector; -varying vec3 vEyeVector; - -FRAGMENT_SHADER_USE_TEX_COORD -FRAGMENT_SHADER_USE_FOG -FRAGMENT_SHADER_USE_SHADOWS -FRAGMENT_SHADER_USE_TEXTURE(NORMAL, Normal) -FRAGMENT_SHADER_USE_ALPHA_TEST_GLES - -#ifndef VERTEX_TANGENT -varying vec3 vNormal; -#endif //VERTEX_TANGENT - -FRAGMENT_SHADER_USE_DIFFUSE_TERM -FRAGMENT_SHADER_USE_SPECULAR_TERM -FRAGMENT_SHADER_USE_AMBIENT_TERM -FRAGMENT_SHADER_USE_EMISSION_TERM -FRAGMENT_SHADER_USE_LIGHT - -#ifndef VERTEX_TANGENT - -mat3 cotangent_frame(vec3 n, vec3 p, vec2 uv) -{ - vec3 dp1 = dFdx(p); - vec3 dp2 = dFdy(p); - vec2 duv1 = dFdx(uv); - vec2 duv2 = dFdy(uv); - vec3 dp2perp = cross(dp2, n); - vec3 dp1perp = cross(n, dp1); - vec3 t = dp2perp * duv1.x + dp1perp * duv2.x; - vec3 b = dp2perp * duv1.y + dp1perp * duv2.y; - float invmax = inversesqrt(max(dot(t, t), dot(b, b))); - return mat3(t * invmax, b * invmax, n); -} - -vec3 perturb_normal(vec3 normal) -{ - mat3 tbn = cotangent_frame(vNormal, -vEyeVector, vTexCoord); - return normalize(tbn * normal); -} -#endif //VERTEX_TANGENT - -vec4 fragmentNormalMap() -{ - float factor; - vec3 normal; - vec4 color; - vec4 fragcolor; - - vec3 Tex0CoordNormal = vec3(vTexCoord, 1.0) * uTextureMatrixTransformNormal0; -#ifdef NORMAL_TEXTURE_BLEND - vec3 Tex1CoordNormal = vec3(vTexCoord, 1.0) * uTextureMatrixTransformNormal1; - normal = texture2D(uTextureNormal0, vec2(Tex0CoordNormal)).rgb * uTextureNormalWeight / texture2D(uTextureNormal0, vec2(Tex0CoordNormal)).a; - normal += texture2D(uTextureNormal1, vec2(Tex1CoordNormal)).rgb / texture2D(uTextureNormal1, vec2(Tex1CoordNormal)).a * - (1.0 - uTextureNormalWeight); -#else - normal = texture2D(uTextureNormal0, vec2(Tex0CoordNormal)).rgb / texture2D(uTextureNormal0, vec2(Tex0CoordNormal)).a; -#endif //NORMAL_TEXTURE_BLEND - - normal = 2.0 * normal - 1.0; - -#ifndef VERTEX_TANGENT - normal = perturb_normal(normal); -#endif //VERTEX_TANGENT - - vec3 lv = normalize(vLightVector); - normal = normalize(normal); - - factor = dot(lv, normal); - -#ifdef LIGHT_SPOT - float f = dot(-lv, normalize(uLightSpotDir)); - - if (f > uLightSpotCutoffCos) - factor *= pow(f, uLightSpotExp); - else - factor = 0.0; -#endif //LIGHT_SPOT - - if (factor > 0.0) - { - -#ifdef DIFFUSE - - FRAGMENT_SHADER_TEXTURE_BLEND(DIFFUSE, Diffuse) - fragcolor = uLightDiffuse * color * factor; - -#else - fragcolor = vec4(0.0, 0.0, 0.0, 0.0); -#endif //DIFFUSE - -#ifdef SPECULAR - - factor = dot(normalize(vLightHalfVector), normal); - if (factor > 0.0) - { - factor = pow(factor, uMaterialShininess); - FRAGMENT_SHADER_TEXTURE_BLEND(SPECULAR, Specular) - fragcolor += uLightSpecular * color * factor; - } - -#endif //SPECULAR - -#ifdef SHADOWED - fragcolor *= shadow; -#endif //SHADOWED - - } - else - fragcolor = vec4(0.0, 0.0, 0.0, 0.0); - -#ifdef AMBIENT - FRAGMENT_SHADER_TEXTURE_BLEND(AMBIENT, Ambient) - fragcolor += uLightAmbient * color; -#endif //AMBIENT - -#ifdef LIGHT_ATTENUATION - fragcolor /= dot(uLightAtten, vec3(1.0, vLightDist, vLightDist * vLightDist)); -#endif //LIGHT_ATTENUATION - -#ifdef EMISSION - - FRAGMENT_SHADER_TEXTURE_BLEND(EMISSION, Emission) - fragcolor += color; - -#endif //EMISSION - return fragcolor; -} - -void main() { - vec4 color; -#ifdef SHADOWED - shadow = pcf(vLightPosition); -#endif //SHADOWED - - color = fragmentNormalMap(); -#ifdef ALPHA_TEST_ENABLED - FRAGMENT_SHADER_ALPHA_TEST_GLES_APPLY(color) -#else - gl_FragColor = color; -#endif //ALPHA_TEST_ENABLED - -FRAGMENT_SHADER_FOG_APPLY - -} - diff --git a/src/modules/evas/engines/gl_common/shader_3d/normal_map_vert.shd b/src/modules/evas/engines/gl_common/shader_3d/normal_map_vert.shd deleted file mode 100644 index 0c9e557390..0000000000 --- a/src/modules/evas/engines/gl_common/shader_3d/normal_map_vert.shd +++ /dev/null @@ -1,128 +0,0 @@ -uniform mat4 uMatrixMvp; -uniform mat3 uMatrixNormal; -uniform mat4 uMatrixModelview; -uniform vec4 uLightPosition; -varying vec3 vLightVector; -varying vec3 vLightHalfVector; -varying vec3 vEyeVector; - -#ifndef VERTEX_TANGENT -varying vec3 vNormal; -#endif //VERTEX_TANGENT - -VERTEX_SHADER_USE_SHADOWS -VERTEX_SHADER_USE_POSITION -VERTEX_SHADER_USE_NORMALS - -#ifdef VERTEX_TANGENT -attribute vec4 aTangent0; -#endif //VERTEX_TANGENT - -#ifdef VERTEX_TANGENT_BLEND -attribute vec4 aTangent1; -uniform float uTangentWeight; -#endif //VERTEX_TANGENT_BLEND - -VERTEX_SHADER_USE_TEXCOORD -VERTEX_SHADER_NEED_TEX_COORD -VERTEX_SHADER_USE_LIGHT_ATTENUATION - -#ifndef VERTEX_TANGENT -void vertexNormalMap(vec4 position, vec3 normal) -{ - normal = uMatrixNormal * normal; - position = uMatrixModelview * position; - vEyeVector = normalize(-position.xyz); - -#ifdef NORMALIZE_NORMALS - normal = normalize(normal); -#endif //NORMALIZE_NORMALS - -#ifdef LIGHT_DIRECTIONAL - vLightVector = uLightPosition.xyz; -#else - vLightVector = uLightPosition.xyz - position.xyz; - -#ifdef LIGHT_ATTENUATION - vLightDist = length(vLightVector); -#endif //LIGHT_ATTENUATION - - vLightVector = normalize(vLightVector); -#endif //LIGHT_DIRECTIONAL - - vLightHalfVector = normalize(vEyeVector + vLightVector); - vNormal = normal; -} - -#else - -void vertexNormalMap(vec4 position, vec3 normal, vec3 tangent) -{ - vec3 n = normalize(uMatrixNormal * normal); - vec3 t = normalize(uMatrixNormal * tangent); - vec3 b = cross(n, t); - vec3 tmp; - - position = uMatrixModelview * position; - -#ifdef LIGHT_DIRECTIONAL - vec3 lightDir = uLightPosition.xyz; -#else - vec3 lightDir = uLightPosition.xyz - position.xyz; - -#ifdef LIGHT_ATTENUATION - vLightDist = length(lightDir); -#endif //LIGHT_ATTENUATION - - lightDir = normalize(lightDir); -#endif //LIGHT_DIRECTIONAL - - tmp.x = dot(lightDir, t); - tmp.y = dot(lightDir, b); - tmp.z = dot(lightDir, n); - vLightVector = tmp; - - tmp.x = dot(position.xyz, t); - tmp.y = dot(position.xyz, b); - tmp.z = dot(position.xyz, n); - vEyeVector = normalize(tmp); - - vec3 hv = normalize(normalize(-position.xyz) + lightDir); - tmp.x = dot(hv, t); - tmp.y = dot(hv, b); - tmp.z = dot(hv, n); - vLightHalfVector = tmp; -} -#endif //VERTEX_TANGENT - -void main() -{ - - VERTEX_SHADER_POSITION - VERTEX_SHADER_NORMAL - -#ifdef VERTEX_TANGENT_BLEND - vec3 tangent = aTangent0.xyz * uTangentWeight + - aTangent1.xyz * (1.0 - uTangentWeight); -#else - -#ifdef VERTEX_TANGENT - vec3 tangent = aTangent0.xyz; -#endif //VERTEX_TANGENT - -#endif //VERTEX_TANGENT_BLEND - - VERTEX_SHADER_TEXCOORD - - gl_Position = uMatrixMvp * position; - -#ifdef VERTEX_TANGENT - vertexNormalMap(position, normal, tangent); -#else - vertexNormalMap(position, normal); -#endif //VERTEX_TANGENT - -#ifdef SHADOWED - vLightPosition = uMatrixLight * position; -#endif -} diff --git a/src/modules/evas/engines/gl_common/shader_3d/parallax_occlusion_frag.shd b/src/modules/evas/engines/gl_common/shader_3d/parallax_occlusion_frag.shd deleted file mode 100644 index aedafe4bdd..0000000000 --- a/src/modules/evas/engines/gl_common/shader_3d/parallax_occlusion_frag.shd +++ /dev/null @@ -1,240 +0,0 @@ -varying vec3 vLightVector; -varying vec3 vLightHalfVector; -varying vec3 vEyeVector; -uniform sampler2D uTextureNormal0; -uniform mat3 uTextureMatrixTransformNormal0; - -#ifdef NEED_TEX_COORD -varying vec2 vTexCoord; -vec3 Tex0CoordNormal; -#endif //TEX_COORD - -#ifdef NORMAL_TEXTURE_BLEND -uniform sampler2D uTextureNormal1; -uniform float uTextureNormalWeight; -uniform mat3 uTextureMatrixTransformNormal1; -vec3 Tex1CoordNormal; -#endif //NORMAL_TEXTURE_BLEND - -FRAGMENT_SHADER_USE_FOG -FRAGMENT_SHADER_USE_SHADOWS -FRAGMENT_SHADER_USE_DIFFUSE_TERM -FRAGMENT_SHADER_USE_SPECULAR_TERM -FRAGMENT_SHADER_USE_AMBIENT_TERM -FRAGMENT_SHADER_USE_EMISSION_TERM -FRAGMENT_SHADER_USE_LIGHT -FRAGMENT_SHADER_USE_ALPHA_TEST_GLES - -const float parallaxScale = 0.2; - -vec2 parallaxMapping(in vec3 view, in vec2 tex, out float parallaxHeight) -{ - const float numLayers = 15.0; - vec2 texStep = parallaxScale * view.xy / view.z / numLayers; - - float layerHeight = 1.0 / numLayers; - float curLayerHeight = 0.0; - vec2 dtex = parallaxScale * view.xy / view.z / numLayers; - - vec2 currentTextureCoords = tex; - -#ifdef NORMAL_TEXTURE_BLEND - float heightFromTexture = (1.0 - texture2D(uTextureNormal0, vec2(Tex0CoordNormal)).a) * uTextureNormalWeight; - heightFromTexture += (1.0 - texture2D(uTextureNormal1, vec2(Tex1CoordNormal)).a) * - (1.0 - uTextureNormalWeight); -#else - float heightFromTexture = 1.0 - texture2D(uTextureNormal0, currentTextureCoords).a; -#endif //NORMAL_TEXTURE_BLEND - - while(heightFromTexture > curLayerHeight) - { - curLayerHeight += layerHeight; - currentTextureCoords -= dtex; - -#ifdef NORMAL_TEXTURE_BLEND - heightFromTexture = (1.0 - texture2D(uTextureNormal0, currentTextureCoords).a) * uTextureNormalWeight; - heightFromTexture += (1.0 - texture2D(uTextureNormal1, currentTextureCoords).a) * - (1.0 - uTextureNormalWeight); -#else - heightFromTexture = 1.0 - texture2D(uTextureNormal0, currentTextureCoords).a; -#endif //NORMAL_TEXTURE_BLEND - } - - vec2 prevTCoords = currentTextureCoords + texStep; - float nextH = heightFromTexture - curLayerHeight; - -#ifdef NORMAL_TEXTURE_BLEND - float prevH = (1.0 - texture2D(uTextureNormal0, prevTCoords).a - - curLayerHeight + layerHeight) * uTextureNormalWeight; - prevH += (1.0 - texture2D(uTextureNormal1, prevTCoords).a - - curLayerHeight + layerHeight) * (1.0 - uTextureNormalWeight); -#else - float prevH = 1.0 - texture2D(uTextureNormal0, prevTCoords).a - - curLayerHeight + layerHeight; -#endif //NORMAL_TEXTURE_BLEND - - float weight = nextH / (nextH - prevH); - vec2 finalTexCoords = prevTCoords * weight + currentTextureCoords * (1.0-weight); - parallaxHeight = curLayerHeight + prevH * weight + nextH * (1.0 - weight); - - return finalTexCoords; -} - -vec4 fragmentParallaxMap() -{ - float factor; - vec3 normal; - vec4 color; - vec4 fragcolor; - float parallaxHeight; - vec2 tex = parallaxMapping(vEyeVector, vec2(Tex0CoordNormal), parallaxHeight); - - vec3 lv = normalize(vLightVector); - -#ifdef NORMAL_TEXTURE_BLEND - normal = texture2D(uTextureNormal0, tex).rgb * uTextureNormalWeight / texture2D(uTextureNormal0, tex).a; - normal += texture2D(uTextureNormal1, tex).rgb * - (1.0 - uTextureNormalWeight) / texture2D(uTextureNormal1, tex).a; -#else - normal = texture2D(uTextureNormal0, tex).rgb / texture2D(uTextureNormal0, tex).a; -#endif //NORMAL_TEXTURE_BLEND - - normal = 2.0 * normal - 1.0; - - normal = normalize(normal); - - factor = dot(lv, normal); - -#ifdef LIGHT_SPOT - float f = dot(-lv, normalize(uLightSpotDir)); - - if (f > uLightSpotCutoffCos) - factor *= pow(f, uLightSpotExp); - else - factor = 0.0; -#endif //LIGHT_SPOT - - if (factor > 0.0) - { - -#ifdef DIFFUSE - -#ifdef DIFFUSE_TEXTURE_BLEND - color = texture2D(uTextureDiffuse0, tex) * uTextureDiffuseWeight + - texture2D(uTextureDiffuse1, tex) * (1.0 - uTextureDiffuseWeight); -#else - -#ifdef DIFFUSE_TEXTURE - color = texture2D(uTextureDiffuse0, tex); -#else - color = uMaterialDiffuse; -#endif //DIFFUSE_TEXTURE - -#endif //DIFFUSE_TEXTURE_BLEND - - fragcolor = uLightDiffuse * color * factor; - -#else - fragcolor = vec4(0.0, 0.0, 0.0, 0.0); -#endif //DIFFUSE - -#ifdef SPECULAR - - factor = dot(normalize(vLightHalfVector), normal); - if (factor > 0.0) - { - factor = pow(factor, uMaterialShininess); - -#ifdef SPECULAR_TEXTURE_BLEND - color = texture2D(uTextureSpecular0, tex) * uTextureSpecularWeight + - texture2D(uTextureSpecular1, tex) * (1.0 - uTextureSpecularWeight); -#else -#ifdef SPECULAR_TEXTURE - color = texture2D(uTextureSpecular0, tex); -#else - color = uMaterialSpecular; -#endif //SPECULAR_TEXTURE - -#endif //SPECULAR_TEXTURE_BLEND - - fragcolor += uLightSpecular * color * factor; - } - -#endif //SPECULAR - -#ifdef SHADOWED - fragcolor *= shadow; -#endif //SHADOWED - - } - else - fragcolor = vec4(0.0, 0.0, 0.0, 0.0); - -#ifdef AMBIENT -#ifdef AMBIENT_TEXTURE_BLEND - color = texture2D(uTextureAmbient0, tex) * uTextureAmbientWeight + - texture2D(uTextureAmbient1, tex) * (1.0 - uTextureAmbientWeight); -#else - -#ifdef AMBIENT_TEXTURE - color = texture2D(uTextureAmbient0, tex); -#else - color = uMaterialAmbient; -#endif //AMBIENT_TEXTURE - -#endif //AMBIENT_TEXTURE_BLEND - - fragcolor += uLightAmbient * color; -#endif //AMBIENT - -#ifdef LIGHT_ATTENUATION - fragcolor /= dot(uLightAtten, vec3(1.0, vLightDist, vLightDist * vLightDist)); -#endif //LIGHT_ATTENUATION - -#ifdef EMISSION - -#ifdef EMISSION_TEXTURE_BLEND - color = texture2D(uTextureEmission0, tex) * uTextureEmissionWeight + - texture2D(uTextureEmission1, tex) * (1.0 - uTextureEmissionWeight); -#else - -#ifdef EMISSION_TEXTURE - color = texture2D(uTextureEmission0, tex); -#else - color = uMaterialEmission; -#endif //EMISSION_TEXTURE - -#endif //EMISSION_TEXTURE_BLEND - - fragcolor += color; -#endif //EMISSION - return fragcolor; -} - -void main() { - vec4 color; - -#ifdef NEED_TEX_COORD - Tex0CoordNormal = vec3(vTexCoord, 1.0) * uTextureMatrixTransformNormal0; -#endif // NEED_TEX_COORD - -#ifdef NORMAL_TEXTURE_BLEND - Tex1CoordNormal = vec3(vTexCoord, 1.0) * uTextureMatrixTransformNormal1; -#endif //NORMAL_TEXTURE_BLEND - -#ifdef SHADOWED - shadow = pcf(vLightPosition); -#endif //SHADOWED - - color = fragmentParallaxMap(); - -#ifdef ALPHA_TEST_ENABLED - FRAGMENT_SHADER_ALPHA_TEST_GLES_APPLY(color) -#else - gl_FragColor = color; -#endif //ALPHA_TEST_ENABLED - - FRAGMENT_SHADER_FOG_APPLY - -} - diff --git a/src/modules/evas/engines/gl_common/shader_3d/parallax_occlusion_vert.shd b/src/modules/evas/engines/gl_common/shader_3d/parallax_occlusion_vert.shd deleted file mode 100644 index dff4ff75d4..0000000000 --- a/src/modules/evas/engines/gl_common/shader_3d/parallax_occlusion_vert.shd +++ /dev/null @@ -1,88 +0,0 @@ -uniform mat4 uMatrixMvp; -uniform mat3 uMatrixNormal; -uniform mat4 uMatrixModelview; -uniform vec4 uLightPosition; -varying vec3 vLightVector; -varying vec3 vLightHalfVector; -varying vec3 vEyeVector; - -VERTEX_SHADER_USE_SHADOWS -VERTEX_SHADER_USE_POSITION -VERTEX_SHADER_USE_NORMALS - -#ifdef VERTEX_TANGENT -attribute vec4 aTangent0; -#endif //VERTEX_TANGENT - -#ifdef VERTEX_TANGENT_BLEND -attribute vec4 aTangent1; -uniform float uTangentWeight; -#endif //VERTEX_TANGENT_BLEND - -VERTEX_SHADER_USE_TEXCOORD -VERTEX_SHADER_NEED_TEX_COORD -VERTEX_SHADER_USE_LIGHT_ATTENUATION - -void vertexParallaxOcclusion(vec4 position, vec3 normal, vec3 tangent) -{ - vec3 n = normalize(uMatrixNormal * normal); - vec3 t = normalize(uMatrixNormal * tangent); - vec3 b = cross(n, t); - vec3 tmp; - - position = uMatrixModelview * position; - -#ifdef LIGHT_DIRECTIONAL - vec3 lightDir = uLightPosition.xyz; -#else - vec3 lightDir = uLightPosition.xyz - position.xyz; - -#ifdef LIGHT_ATTENUATION - vLightDist = length(lightDir); -#endif //LIGHT_ATTENUATION - - lightDir = normalize(lightDir); -#endif //LIGHT_DIRECTIONAL - - tmp.x = dot(lightDir, t); - tmp.y = dot(lightDir, b); - tmp.z = dot(lightDir, n); - vLightVector = tmp; - - tmp.x = dot(position.xyz, t); - tmp.y = dot(position.xyz, b); - tmp.z = dot(position.xyz, n); - vEyeVector = normalize(tmp); - - vec3 hv = normalize(normalize(-position.xyz) + lightDir); - tmp.x = dot(hv, t); - tmp.y = dot(hv, b); - tmp.z = dot(hv, n); - vLightHalfVector = tmp; -} - -void main() -{ - - VERTEX_SHADER_POSITION - VERTEX_SHADER_NORMAL - -#ifdef VERTEX_TANGENT_BLEND - vec3 tangent = aTangent0.xyz * uTangentWeight + - aTangent1.xyz * (1.0 - uTangentWeight); -#else - -#ifdef VERTEX_TANGENT - vec3 tangent = aTangent0.xyz; -#endif //VERTEX_TANGENT - -#endif //VERTEX_TANGENT_BLEND - - VERTEX_SHADER_TEXCOORD - - gl_Position = uMatrixMvp * position; - - vertexParallaxOcclusion(position, normal, tangent); - - VERTEX_SHADER_SHADOWED -} diff --git a/src/modules/evas/engines/gl_common/shader_3d/phong_frag.shd b/src/modules/evas/engines/gl_common/shader_3d/phong_frag.shd deleted file mode 100644 index 78a867b96a..0000000000 --- a/src/modules/evas/engines/gl_common/shader_3d/phong_frag.shd +++ /dev/null @@ -1,103 +0,0 @@ -varying vec3 vLightVector; -varying vec3 vLightHalfVector; -varying vec3 vNormal; - -FRAGMENT_SHADER_USE_TEX_COORD -FRAGMENT_SHADER_USE_FOG -FRAGMENT_SHADER_USE_SHADOWS -FRAGMENT_SHADER_USE_DIFFUSE_TERM -FRAGMENT_SHADER_USE_SPECULAR_TERM -FRAGMENT_SHADER_USE_AMBIENT_TERM -FRAGMENT_SHADER_USE_EMISSION_TERM -FRAGMENT_SHADER_USE_LIGHT -FRAGMENT_SHADER_USE_ALPHA_TEST_GLES - -vec4 fragmentPhong() -{ - vec3 normal = normalize(vNormal); - vec3 lv = normalize(vLightVector); - float factor = dot(lv, normal); - vec4 color; - vec4 fragcolor; - -#ifdef LIGHT_SPOT - float f = dot(-lv, normalize(uLightSpotDir)); - - if (f > uLightSpotCutoffCos) - factor *= pow(f, uLightSpotExp); - else - factor = 0.0; -#endif //LIGHT_SPOT - - if (factor > 0.0) - { - - /* Diffuse term. */ -#ifdef DIFFUSE - - FRAGMENT_SHADER_TEXTURE_BLEND(DIFFUSE, Diffuse) - - fragcolor = uLightDiffuse * color * factor; -#else - fragcolor = vec4(0.0, 0.0, 0.0, 0.0); -#endif //DIFFUSE - - /* Specular term. */ -#ifdef SPECULAR - factor = dot(normalize(vLightHalfVector), normal); - if (factor > 0.0) - { - factor = pow(factor, uMaterialShininess); - - FRAGMENT_SHADER_TEXTURE_BLEND(SPECULAR, Specular) - - fragcolor += uLightSpecular * color * factor; - } -#endif - - } - else - fragcolor = vec4(0.0, 0.0, 0.0, 0.0); - -#ifdef SHADOWED - fragcolor *= shadow; -#endif //SHADOWED - -#ifdef AMBIENT - FRAGMENT_SHADER_TEXTURE_BLEND(AMBIENT, Ambient) - - fragcolor += uLightAmbient * color; -#endif - - /* Light attenuation. */ -#ifdef LIGHT_ATTENUATION - fragcolor /= dot(uLightAtten, vec3(1.0, vLightDist, vLightDist * vLightDist)); -#endif - - /* Emission term. */ -#ifdef EMISSION - - FRAGMENT_SHADER_TEXTURE_BLEND(EMISSION, Emission) - fragcolor += color; -#endif - return fragcolor; -} - -void main() -{ - vec4 color; -#ifdef SHADOWED - shadow = pcf(vLightPosition); -#endif //SHADOWED - - color = fragmentPhong(); - -#ifdef ALPHA_TEST_ENABLED - FRAGMENT_SHADER_ALPHA_TEST_GLES_APPLY(color) -#else - gl_FragColor = color; -#endif //ALPHA_TEST_ENABLED - - FRAGMENT_SHADER_FOG_APPLY -} - diff --git a/src/modules/evas/engines/gl_common/shader_3d/phong_vert.shd b/src/modules/evas/engines/gl_common/shader_3d/phong_vert.shd deleted file mode 100644 index ee9eed9c47..0000000000 --- a/src/modules/evas/engines/gl_common/shader_3d/phong_vert.shd +++ /dev/null @@ -1,51 +0,0 @@ -uniform mat4 uMatrixMvp; -uniform mat3 uMatrixNormal; -uniform mat4 uMatrixModelview; -uniform vec4 uLightPosition; -varying vec3 vLightVector; -varying vec3 vLightHalfVector; -varying vec3 vNormal; - -VERTEX_SHADER_USE_SHADOWS -VERTEX_SHADER_USE_POSITION -VERTEX_SHADER_USE_NORMALS -VERTEX_SHADER_USE_TEXCOORD -VERTEX_SHADER_NEED_TEX_COORD -VERTEX_SHADER_USE_LIGHT_ATTENUATION - -void vertexPhong(vec4 position, vec3 normal) -{ - normal = uMatrixNormal * normal; - position = uMatrixModelview * position; - -#ifdef NORMALIZE_NORMALS - normal = normalize(normal); -#endif //NORMALIZE_NORMALS - -#ifdef LIGHT_DIRECTIONAL - vLightVector = uLightPosition.xyz; -#else - vLightVector = uLightPosition.xyz - position.xyz; - -#ifdef LIGHT_ATTENUATION - vLightDist = length(vLightVector); -#endif //LIGHT_ATTENUATION - - vLightVector = normalize(vLightVector); -#endif //LIGHT_DIRECTIONAL - - vLightHalfVector = normalize(normalize(-position.xyz) + vLightVector); - vNormal = normal; -} - -void main() { - - VERTEX_SHADER_POSITION - VERTEX_SHADER_NORMAL - VERTEX_SHADER_TEXCOORD - - gl_Position = uMatrixMvp * position; - vertexPhong(position, normal); - - VERTEX_SHADER_SHADOWED -} diff --git a/src/modules/evas/engines/gl_common/shader_3d/post_processing_fxaa_frag.shd b/src/modules/evas/engines/gl_common/shader_3d/post_processing_fxaa_frag.shd deleted file mode 100644 index b78a09177b..0000000000 --- a/src/modules/evas/engines/gl_common/shader_3d/post_processing_fxaa_frag.shd +++ /dev/null @@ -1,63 +0,0 @@ -//FXAA fragment shader by Timothy Lottes -//http://developer.download.nvidia.com/assets/gamedev/files/sdk/11/FXAA_WhitePaper.pdf -//modified and adapted to www.enlightenment.org by Oleksander Shcherbina -uniform sampler2D uColorTexture; -uniform float uFrameSizeH; -uniform float uFrameSizeW; -varying vec2 tc0; - -vec4 fxaa() -{ - float _SPAN_MAX_ = 8.0; - float _REDUCE_MUL_ = (1.0/8.0); - float _REDUCE_MIN_ = (1.0/128.0); - vec4 l = vec4(0.299, 0.587, 0.114, 0.0); - vec2 frameBufSize = vec2(uFrameSizeW, uFrameSizeH); - vec2 direction; - - vec4 colorNW = texture2D(uColorTexture, tc0 + (vec2(-1.0, -1.0)/frameBufSize)); - vec4 colorNE = texture2D(uColorTexture, tc0 + (vec2(1.0, -1.0)/frameBufSize)); - vec4 colorSW = texture2D(uColorTexture, tc0 + (vec2(-1.0, 1.0)/frameBufSize)); - vec4 colorSE = texture2D(uColorTexture, tc0 + (vec2(1.0, 1.0)/frameBufSize)); - vec4 colorM = texture2D(uColorTexture,tc0); - - float lNW = dot(colorNW, l); - float lNE = dot(colorNE, l); - float lSW = dot(colorSW, l); - float lSE = dot(colorSE, l); - float lM = dot(colorM, l); - - float lMin = min(lM, min(min(lNW, lNE), min(lSW, lSE))); - float lMax = max(lM, max(max(lNW, lNE), max(lSW, lSE))); - - direction.x = -((lNW + lNE) - (lSW + lSE)); - direction.y = ((lNW + lSW) - (lNE + lSE)); - - float directionReduce = max( - (lNW + lNE + lSW + lSE) * (0.25 * _REDUCE_MUL_), - _REDUCE_MIN_); - - float rcpDirMin = 1.0/(min(abs(direction.x), abs(direction.y)) + directionReduce); - - direction = min(vec2(_SPAN_MAX_, _SPAN_MAX_), - max(vec2(-_SPAN_MAX_, -_SPAN_MAX_), - direction * rcpDirMin)) / frameBufSize; - - vec4 colorA = 0.5 * ( - texture2D(uColorTexture, tc0.xy + direction * (1.0/3.0 - 0.5)) + - texture2D(uColorTexture, tc0.xy + direction * (2.0/3.0 - 0.5))); - vec4 colorB = colorA * 0.5 + 0.25 * ( - texture2D(uColorTexture, tc0.xy + direction * (- 0.5)) + - texture2D(uColorTexture, tc0.xy + direction * 0.5)); - float lB = dot(colorB, l); - - if((lB < lMin) || (lB > lMax)) - return colorA; - else - return colorB; -} - -void main() -{ - gl_FragColor = fxaa(); -} diff --git a/src/modules/evas/engines/gl_common/shader_3d/post_processing_fxaa_vert.shd b/src/modules/evas/engines/gl_common/shader_3d/post_processing_fxaa_vert.shd deleted file mode 100644 index 8464fdcc82..0000000000 --- a/src/modules/evas/engines/gl_common/shader_3d/post_processing_fxaa_vert.shd +++ /dev/null @@ -1,12 +0,0 @@ -uniform mat4 uMatrixMvp; - -VERTEX_SHADER_USE_POSITION - -varying vec2 tc0; -void main() -{ - VERTEX_SHADER_POSITION - - gl_Position = uMatrixMvp * position; - tc0 = position.xy * 0.5 + 0.5; -} diff --git a/src/modules/evas/engines/gl_common/shader_3d/shadow_map_frag.shd b/src/modules/evas/engines/gl_common/shader_3d/shadow_map_frag.shd deleted file mode 100644 index a66f47acf8..0000000000 --- a/src/modules/evas/engines/gl_common/shader_3d/shadow_map_frag.shd +++ /dev/null @@ -1,60 +0,0 @@ -varying vec4 shadowmapposition; -#ifdef ALPHA_TEST_ENABLED -FRAGMENT_SHADER_USE_TEX_COORD -FRAGMENT_SHADER_USE_ALPHA_TEST_GLES - -#ifdef DIFFUSE - -#ifdef DIFFUSE_TEXTURE -uniform sampler2D uTextureDiffuse0; -uniform mat3 uTextureMatrixTransformDiffuse0; -#endif //DIFFUSE_TEXTURE - -#ifdef DIFFUSE_TEXTURE_BLEND -uniform sampler2D uTextureDiffuse1; -uniform float uTextureDiffuseWeight; -uniform mat3 uTextureMatrixTransformDiffuse1; -#endif //DIFFUSE_TEXTURE_BLEND - -#endif //DIFFUSE - -#endif //ALPHA_TEST_ENABLED - -void main() { - - vec4 color; -#ifndef NEED_TEX_COORD - gl_FragColor = vec4(1); -#endif - -#ifdef ALPHA_TEST_ENABLED - -#ifdef DIFFUSE_TEXTURE_BLEND - vec3 Tex1CoordDiffuse = vec3(vTexCoord, 1.0) * uTextureMatrixTransformDiffuse1; - color = (texture2D(uTextureDiffuse0, vec2(Tex0CoordDiffuse)) * - uTextureDiffuseWeight + texture2D(uTextureDiffuse1, vec2(Tex1CoordDiffuse)) * - (1.0 - uTextureDiffuseWeight)); -#else - -#ifdef DIFFUSE_TEXTURE - vec3 Tex0CoordDiffuse = vec3(vTexCoord, 1.0) * uTextureMatrixTransformDiffuse0; - color = texture2D(uTextureDiffuse0, vec2(Tex0CoordDiffuse)); -#else - color = vec4(1); -#endif //DIFFUSE_TEXTURE - -#endif //DIFFUSE_TEXTURE_BLEND - - FRAGMENT_SHADER_ALPHA_TEST_GLES_APPLY(color) - -#endif //ALPHA_TEST_ENABLED - - const vec4 pack = vec4(256.0 * 256.0 * 256.0, 256.0 * 256.0, 256.0, 1.0); - const vec4 mask = vec4(0.0, 1.0 / 256.0, 1.0 / 256.0, 1.0 / 256.0); - vec4 depthcolor; - float normdist = shadowmapposition.z / shadowmapposition.w; - normdist = ((normdist + 1.0) / 2.0); - depthcolor = vec4(fract(pack * normdist)); - depthcolor -= depthcolor.xxyz * mask; - gl_FragColor = depthcolor; -} diff --git a/src/modules/evas/engines/gl_common/shader_3d/shadow_map_vert.shd b/src/modules/evas/engines/gl_common/shader_3d/shadow_map_vert.shd deleted file mode 100644 index 66ce4f3d62..0000000000 --- a/src/modules/evas/engines/gl_common/shader_3d/shadow_map_vert.shd +++ /dev/null @@ -1,21 +0,0 @@ -uniform mat4 uMatrixMvp; -varying vec4 shadowmapposition; -VERTEX_SHADER_USE_POSITION - -#ifdef ALPHA_TEST_ENABLED -VERTEX_SHADER_USE_TEXCOORD -VERTEX_SHADER_NEED_TEX_COORD -#endif //ALPHA_TEST_ENABLED - -void main() -{ - -VERTEX_SHADER_POSITION - -#ifdef ALPHA_TEST_ENABLED - VERTEX_SHADER_TEXCOORD -#endif //ALPHA_TEST_ENABLED - - gl_Position = uMatrixMvp * position; - shadowmapposition = gl_Position; -} diff --git a/src/modules/evas/engines/gl_common/shader_3d/vertex_color_frag.shd b/src/modules/evas/engines/gl_common/shader_3d/vertex_color_frag.shd deleted file mode 100644 index 1b85057b66..0000000000 --- a/src/modules/evas/engines/gl_common/shader_3d/vertex_color_frag.shd +++ /dev/null @@ -1,17 +0,0 @@ -varying vec4 vColor; - -FRAGMENT_SHADER_USE_FOG -FRAGMENT_SHADER_USE_ALPHA_TEST_GLES - -void main() -{ - -#ifdef ALPHA_TEST_ENABLED - FRAGMENT_SHADER_ALPHA_TEST_GLES_APPLY(vColor) -#else - gl_FragColor = vColor; -#endif //ALPHA_TEST_ENABLED - - FRAGMENT_SHADER_FOG_APPLY -} - diff --git a/src/modules/evas/engines/gl_common/shader_3d/vertex_color_vert.shd b/src/modules/evas/engines/gl_common/shader_3d/vertex_color_vert.shd deleted file mode 100644 index 6daeacfc1f..0000000000 --- a/src/modules/evas/engines/gl_common/shader_3d/vertex_color_vert.shd +++ /dev/null @@ -1,24 +0,0 @@ -uniform mat4 uMatrixMvp; -varying vec4 vColor; - -VERTEX_SHADER_USE_POSITION -VERTEX_SHADER_USE_COLOR - -void main() -{ - VERTEX_SHADER_POSITION - -#ifdef VERTEX_COLOR_BLEND - vec4 color = aColor0 * uColorWeight + aColor1 * (1.0 - uColorWeight); -#else - -#ifdef VERTEX_COLOR - vec4 color = aColor0; -#endif //VERTEX_COLOR - -#endif //VERTEX_COLOR_BLEND - - vColor = color; - gl_Position = uMatrixMvp * position; -} - diff --git a/src/modules/evas/engines/gl_generic/Evas_Engine_GL_Generic.h b/src/modules/evas/engines/gl_generic/Evas_Engine_GL_Generic.h index 56a0cf3cad..d48b82199b 100644 --- a/src/modules/evas/engines/gl_generic/Evas_Engine_GL_Generic.h +++ b/src/modules/evas/engines/gl_generic/Evas_Engine_GL_Generic.h @@ -44,7 +44,6 @@ struct _Render_Output_GL_Generic Window_GL_Context_Use window_gl_context_use; Context_3D *context_3d; - E3D_Renderer *renderer_3d; const EVGL_Interface *evgl_funcs; }; @@ -95,7 +94,6 @@ evas_render_engine_gl_generic_init(Render_Engine_Software_Generic *engine, re->window_gl_context_use = window_gl_context_use; re->context_3d = NULL; - re->renderer_3d = NULL; re->evgl_funcs = evgl_funcs; evas_render_engine_software_generic_tile_strict_set(&re->software, EINA_TRUE); diff --git a/src/modules/evas/engines/gl_generic/evas_engine.c b/src/modules/evas/engines/gl_generic/evas_engine.c index e73c486073..c0b0dca539 100644 --- a/src/modules/evas/engines/gl_generic/evas_engine.c +++ b/src/modules/evas/engines/gl_generic/evas_engine.c @@ -2378,187 +2378,6 @@ eng_context_dup(void *engine EINA_UNUSED, void *context) return ctx; } -static void -eng_context_3d_use(void *output) -{ - Render_Output_GL_Generic *re = output; - - if (!re->context_3d) - re->context_3d = re->window_gl_context_new(re->software.ob); - if (re->context_3d) re->window_gl_context_use(re->context_3d); -} - -static E3D_Renderer * -eng_renderer_3d_get(void *output) -{ - Render_Output_GL_Generic *re = output; - - if (!re->renderer_3d) - re->renderer_3d = e3d_renderer_new(); - return re->renderer_3d; -} - -static void * -eng_drawable_new(void *engine, int w, int h, int alpha) -{ - eng_context_3d_use(gl_generic_output_find(engine)); -#ifdef GL_GLES - return e3d_drawable_new(w, h, alpha, GL_DEPTH_STENCIL_OES, GL_NONE); -#else - return e3d_drawable_new(w, h, alpha, GL_DEPTH24_STENCIL8, GL_NONE); -#endif -} - -static void -eng_drawable_free(void *engine, void *drawable) -{ - eng_context_3d_use(gl_generic_output_find(engine)); - e3d_drawable_free(drawable); -} - -static void -eng_drawable_size_get(void *engine EINA_UNUSED, void *drawable, int *w, int *h) -{ - e3d_drawable_size_get((E3D_Drawable *)drawable, w, h); -} - -static void * -eng_image_drawable_set(void *engine, void *image, void *drawable) -{ - E3D_Drawable *d = drawable; - Evas_Native_Surface ns; - int w, h; - - ns.type = EVAS_NATIVE_SURFACE_OPENGL; - ns.data.opengl.texture_id = e3d_drawable_texture_id_get(d); - ns.data.opengl.framebuffer_id = 0; - ns.data.opengl.internal_format = e3d_drawable_format_get(d); - ns.data.opengl.format = e3d_drawable_format_get(d); - ns.data.opengl.x = 0; - ns.data.opengl.y = 0; - e3d_drawable_size_get(d, &w, &h); - ns.data.opengl.w = w; - ns.data.opengl.h = h; - - return eng_image_native_set(engine, image, &ns); -} - -static void -eng_drawable_scene_render(void *engine, void *data, void *drawable, void *scene_data) -{ - Evas_Engine_GL_Context *gl_context; - E3D_Renderer *renderer = NULL; - - gl_context = gl_generic_context_get(data, 1); - evas_gl_common_context_flush(gl_context); - - eng_context_3d_use(gl_generic_output_find(engine)); - renderer = eng_renderer_3d_get(data); - e3d_drawable_scene_render(drawable, renderer, scene_data); -} - -static int -eng_drawable_texture_target_id_get(void *drawable) -{ - return e3d_drawable_texture_id_get((E3D_Drawable *)drawable); -} - -static int -eng_drawable_texture_color_pick_id_get(void *drawable) -{ - return e3d_drawable_texture_color_pick_id_get((E3D_Drawable *)drawable); -} - -static void -eng_drawable_texture_pixel_color_get(GLuint tex EINA_UNUSED, int x, int y, - Evas_Color *color, void *drawable) -{ - return e3d_drawable_texture_pixel_color_get(tex, x, y, color, drawable); -} - -static Eina_Bool -eng_drawable_scene_render_to_texture(void *engine, void *drawable, void *scene_data) -{ - Evas_Engine_GL_Context *gl_context; - E3D_Renderer *renderer = NULL; - - gl_context = gl_generic_context_get(engine, 1); - evas_gl_common_context_flush(gl_context); - - eng_context_3d_use(gl_generic_output_find(engine)); - renderer = eng_renderer_3d_get(engine); - - return e3d_drawable_scene_render_to_texture((E3D_Drawable *)drawable, renderer, scene_data); -} - -static void -eng_drawable_texture_rendered_pixels_get(GLuint tex EINA_UNUSED, int x, int y, - int w, int h, void *drawable EINA_UNUSED, void *engine) -{ - e3d_drawable_texture_rendered_pixels_get(tex, x, y, w, h, drawable, engine); -} -static void * -eng_texture_new(void *engine EINA_UNUSED, Eina_Bool use_atlas) -{ - return e3d_texture_new(use_atlas); -} - -static void -eng_texture_free(void *engine EINA_UNUSED, void *texture) -{ - e3d_texture_free((E3D_Texture *)texture); -} - -static void -eng_texture_size_get(void *engine EINA_UNUSED, void *texture, int *w, int *h) -{ - e3d_texture_size_get((E3D_Texture *)texture, w, h); -} - -static void -eng_texture_wrap_set(void *engine EINA_UNUSED, void *texture, - Evas_Canvas3D_Wrap_Mode s, Evas_Canvas3D_Wrap_Mode t) -{ - e3d_texture_wrap_set((E3D_Texture *)texture, s, t); -} - -static void -eng_texture_wrap_get(void *engine EINA_UNUSED, void *texture, - Evas_Canvas3D_Wrap_Mode *s, Evas_Canvas3D_Wrap_Mode *t) -{ - e3d_texture_wrap_get((E3D_Texture *)texture, s, t); -} - -static void -eng_texture_filter_set(void *engine EINA_UNUSED, void *texture, - Evas_Canvas3D_Texture_Filter min, Evas_Canvas3D_Texture_Filter mag) -{ - e3d_texture_filter_set((E3D_Texture *)texture, min, mag); -} - -static void -eng_texture_filter_get(void *engine EINA_UNUSED, void *texture, - Evas_Canvas3D_Texture_Filter *min, Evas_Canvas3D_Texture_Filter *mag) -{ - e3d_texture_filter_get((E3D_Texture *)texture, min, mag); -} - -static void -eng_texture_image_set(void *engine, void *texture, void *image) -{ - Evas_Engine_GL_Context *gl_context; - - gl_context = gl_generic_context_find(engine, 1); - - e3d_texture_set(gl_context, (E3D_Texture *)texture, (Evas_GL_Image *)image); -} - -static void * -eng_texture_image_get(void *engine EINA_UNUSED, void *texture) -{ - return e3d_texture_get((E3D_Texture *)texture); -} - static Eina_Bool use_gl = EINA_FALSE; static Ector_Surface * @@ -3331,29 +3150,6 @@ module_open(Evas_Module *em) ORD(context_flush); - /* 3D features */ - ORD(drawable_new); - ORD(drawable_free); - ORD(drawable_size_get); - ORD(image_drawable_set); - - ORD(drawable_scene_render); - - ORD(drawable_texture_color_pick_id_get); - ORD(drawable_texture_target_id_get); - ORD(drawable_texture_pixel_color_get); - ORD(drawable_scene_render_to_texture); - ORD(drawable_texture_rendered_pixels_get); - ORD(texture_new); - ORD(texture_free); - ORD(texture_size_get); - ORD(texture_wrap_set); - ORD(texture_wrap_get); - ORD(texture_filter_set); - ORD(texture_filter_get); - ORD(texture_image_set); - ORD(texture_image_get); - ORD(ector_create); ORD(ector_destroy); ORD(ector_buffer_wrap); diff --git a/src/modules/evas/engines/gl_generic/meson.build b/src/modules/evas/engines/gl_generic/meson.build index 6f7e9dc259..68163b5711 100644 --- a/src/modules/evas/engines/gl_generic/meson.build +++ b/src/modules/evas/engines/gl_generic/meson.build @@ -39,11 +39,6 @@ common_engine_src = [ 'evas_gl_api_gles1.c', 'evas_gl_api_gles3_def.h', 'evas_gl_api_ext.c', - 'evas_gl_3d_common.h', - 'evas_gl_3d_private.h', - 'evas_gl_3d.c', - 'evas_gl_3d_renderer.c', - 'evas_gl_3d_shader.c', ] foreach src : common_engine_src diff --git a/src/modules/evas/engines/software_generic/evas_engine.c b/src/modules/evas/engines/software_generic/evas_engine.c index a56708fc98..0309d620e9 100644 --- a/src/modules/evas/engines/software_generic/evas_engine.c +++ b/src/modules/evas/engines/software_generic/evas_engine.c @@ -4794,25 +4794,6 @@ static Evas_Func func = eng_multi_font_draw, eng_pixel_alpha_get, NULL, // eng_context_flush - software doesn't use it - NULL, // eng_drawable_new - NULL, // eng_drawable_free - NULL, // eng_drawable_size_get - NULL, // eng_image_drawable_set - NULL, // eng_drawable_scene_render - NULL, // eng_drawable_scene_render_to_texture - NULL, // eng_drawable_texture_color_pick_id_get - NULL, // eng_drawable_texture_target_id_get - NULL, // eng_drawable_texture_pixel_color_get - NULL, // eng_drawable_texture_rendered_pixels_get - NULL, // eng_texture_new - NULL, // eng_texture_free - NULL, // eng_texture_size_get - NULL, // eng_texture_wrap_set - NULL, // eng_texture_wrap_get - NULL, // eng_texture_filter_set - NULL, // eng_texture_filter_get - NULL, // eng_texture_image_set - NULL, // eng_texture_image_get eng_ector_create, eng_ector_destroy, eng_ector_buffer_wrap, diff --git a/src/modules/evas/meson.build b/src/modules/evas/meson.build index a8ce54ea78..6564da0cc9 100644 --- a/src/modules/evas/meson.build +++ b/src/modules/evas/meson.build @@ -2,8 +2,6 @@ subdir('image_savers') subdir('image_loaders') -subdir('model_savers') -subdir('model_loaders') subdir('vg_savers') subdir('vg_loaders') subdir('engines') diff --git a/src/modules/evas/model_loaders/eet/evas_model_load_eet.c b/src/modules/evas/model_loaders/eet/evas_model_load_eet.c deleted file mode 100644 index 7ff40b9b25..0000000000 --- a/src/modules/evas/model_loaders/eet/evas_model_load_eet.c +++ /dev/null @@ -1,111 +0,0 @@ -#ifdef HAVE_CONFIG_H - #include "config.h" -#endif - -#include -#include -#include -#include "evas_common_private.h" -#include "evas_private.h" - -static void -_set_geometry_to_mesh_from_eet_file(Evas_Canvas3D_Mesh *mesh, - Evas_Canvas3D_Mesh_Eet *eet_mesh) -{ - float *pos, *nor, *tex; - int stride_pos, stride_nor, stride_tex, j; - - evas_canvas3d_mesh_vertex_count_set(mesh, eet_mesh->geometries->vertices_count); - evas_canvas3d_mesh_vertex_assembly_set(mesh, EVAS_CANVAS3D_VERTEX_ASSEMBLY_TRIANGLES); - evas_canvas3d_mesh_frame_add(mesh, 0); - evas_canvas3d_mesh_frame_vertex_data_copy_set(mesh, 0, EVAS_CANVAS3D_VERTEX_ATTRIB_POSITION, 0, NULL); - evas_canvas3d_mesh_frame_vertex_data_copy_set(mesh, 0, EVAS_CANVAS3D_VERTEX_ATTRIB_NORMAL, 0, NULL); - evas_canvas3d_mesh_frame_vertex_data_copy_set(mesh, 0, EVAS_CANVAS3D_VERTEX_ATTRIB_TEXCOORD, 0, NULL); - pos = (float *)evas_canvas3d_mesh_frame_vertex_data_map(mesh, 0, EVAS_CANVAS3D_VERTEX_ATTRIB_POSITION); - nor = (float *)evas_canvas3d_mesh_frame_vertex_data_map(mesh, 0, EVAS_CANVAS3D_VERTEX_ATTRIB_NORMAL); - tex = (float *)evas_canvas3d_mesh_frame_vertex_data_map(mesh, 0, EVAS_CANVAS3D_VERTEX_ATTRIB_TEXCOORD); - stride_pos = evas_canvas3d_mesh_frame_vertex_stride_get(mesh, 0, EVAS_CANVAS3D_VERTEX_ATTRIB_POSITION); - stride_nor = evas_canvas3d_mesh_frame_vertex_stride_get(mesh, 0, EVAS_CANVAS3D_VERTEX_ATTRIB_NORMAL); - stride_tex = evas_canvas3d_mesh_frame_vertex_stride_get(mesh, 0, EVAS_CANVAS3D_VERTEX_ATTRIB_TEXCOORD); - - if (stride_pos == 0) stride_pos = sizeof(float) * 3; - if (stride_nor == 0) stride_nor = sizeof(float) * 3; - if (stride_tex == 0) stride_tex = sizeof(float) * 2; - - /* set data to vertex buffer */ - for (j = 0; j < eet_mesh->geometries->vertices_count; j++) - { - float *p, *n, *t; - - p = (float *)((char *)pos + stride_pos * j); - n = (float *)((char *)nor + stride_nor * j); - t = (float *)((char *)tex + stride_tex * j); - - p[0] = eet_mesh->geometries->vertices[j].position.x; - p[1] = eet_mesh->geometries->vertices[j].position.y; - p[2] = eet_mesh->geometries->vertices[j].position.z; - - n[0] = eet_mesh->geometries->vertices[j].normal.x; - n[1] = eet_mesh->geometries->vertices[j].normal.y; - n[2] = eet_mesh->geometries->vertices[j].normal.z; - - t[0] = eet_mesh->geometries->vertices[j].texcoord.x; - t[1] = eet_mesh->geometries->vertices[j].texcoord.y; - } - - /* unmap vertex buffer */ - evas_canvas3d_mesh_frame_vertex_data_unmap(mesh, 0, EVAS_CANVAS3D_VERTEX_ATTRIB_POSITION); - evas_canvas3d_mesh_frame_vertex_data_unmap(mesh, 0, EVAS_CANVAS3D_VERTEX_ATTRIB_NORMAL); - evas_canvas3d_mesh_frame_vertex_data_unmap(mesh, 0, EVAS_CANVAS3D_VERTEX_ATTRIB_TEXCOORD); -} - -static void -_set_material_to_mesh_from_eet_file(Evas_Canvas3D_Mesh *mesh, - Evas_Canvas3D_Mesh_Eet *eet_mesh) -{ - Evas_Canvas3D_Object_Data *pd = efl_data_scope_get(mesh, EVAS_CANVAS3D_OBJECT_CLASS); - Eo *material = NULL; - material = efl_add(EVAS_CANVAS3D_MATERIAL_CLASS, pd->evas); - - evas_canvas3d_material_enable_set(material, EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, !!(eet_mesh->materials->colors[0].a > 0)); - evas_canvas3d_material_enable_set(material, EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, !!(eet_mesh->materials->colors[1].a > 0)); - evas_canvas3d_material_enable_set(material, EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR, !!(eet_mesh->materials->colors[2].a > 0)); - evas_canvas3d_material_enable_set(material, EVAS_CANVAS3D_MATERIAL_ATTRIB_NORMAL, EINA_TRUE); - evas_canvas3d_material_color_set(material, EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT, eet_mesh->materials->colors[0].r, eet_mesh->materials->colors[0].g, eet_mesh->materials->colors[0].b, eet_mesh->materials->colors[0].a); - evas_canvas3d_material_color_set(material, EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE, eet_mesh->materials->colors[1].r, eet_mesh->materials->colors[1].g, eet_mesh->materials->colors[1].b, eet_mesh->materials->colors[1].a); - evas_canvas3d_material_color_set(material, EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR, eet_mesh->materials->colors[2].r, eet_mesh->materials->colors[2].g, eet_mesh->materials->colors[2].b, eet_mesh->materials->colors[2].a); - evas_canvas3d_material_shininess_set(material, eet_mesh->materials->shininess); - - evas_canvas3d_mesh_frame_material_set(mesh, 0, material); -} - -void -evas_model_load_file_eet(Evas_Canvas3D_Mesh *mesh, Eina_File *file) -{ - Eet_File *ef; - Evas_Canvas3D_File_Eet* eet_file; - Eet_Data_Descriptor *_file_descriptor; - - eet_init(); - - _file_descriptor = _evas_canvas3d_eet_file_get(); - ef = eet_mmap(file); - eet_file = eet_data_read(ef, - _file_descriptor, - EVAS_CANVAS3D_FILE_CACHE_FILE_ENTRY); - - eet_close(ef); - - if (!eet_file || !eet_file->mesh || !eet_file->header) - { - ERR("Failed to read model file"); - goto on_error; - } - - _set_geometry_to_mesh_from_eet_file(mesh, eet_file->mesh); - _set_material_to_mesh_from_eet_file(mesh, eet_file->mesh); - - on_error: - _evas_canvas3d_eet_file_free(eet_file); - eet_shutdown(); -} diff --git a/src/modules/evas/model_loaders/md2/evas_model_load_md2.c b/src/modules/evas/model_loaders/md2/evas_model_load_md2.c deleted file mode 100644 index 16dd330813..0000000000 --- a/src/modules/evas/model_loaders/md2/evas_model_load_md2.c +++ /dev/null @@ -1,423 +0,0 @@ -#include "evas_common_private.h" -#include "evas_private.h" - -#define PACKED __attribute__((__packed__)) - -#define MD2_MAGIC_NUMBER 844121161 -#define MD2_VERSION 8 -#define MD2_FRAME_SCALE 256 - -/* Structures for reading data from file. */ -typedef struct _MD2_Header MD2_Header; -typedef struct _MD2_Vertex MD2_Vertex; -typedef struct _MD2_Frame MD2_Frame; -typedef struct _MD2_Triangle MD2_Triangle; -typedef struct _MD2_Texcoord MD2_Texcoord; - -struct PACKED _MD2_Header -{ - int magic; - int version; - - int skin_width; - int skin_height; - - int frame_size; - - int skins_count; - int vertex_count; - int texcoord_count; - int triangle_count; - int glcmd_count; - int frame_count; - - int offset_skins; - int offset_texcoords; - int offset_triangles; - int offset_frames; - int offset_glcmds; - int offset_end; -}; - -struct PACKED _MD2_Vertex -{ - unsigned char pos[3]; - unsigned char normal_idx; -}; - -struct PACKED _MD2_Frame -{ - float scale[3]; - float trans[3]; - char name[16]; - MD2_Vertex vertices[1]; -}; - -struct PACKED _MD2_Triangle -{ - unsigned short vertex_idx[3]; - unsigned short texcoord_idx[3]; -}; - -struct PACKED _MD2_Texcoord -{ - short s; - short t; -}; - -typedef struct _MD2_Loader -{ - char *map; - int size; - - int skin_width; - int skin_height; - - int frame_count; - int frame_size; - char *frames; - - int vertex_count; - int triangle_count; - int texcoord_count; - - MD2_Triangle *triangles; - MD2_Texcoord *texcoords; -} MD2_Loader; - -static const float normal_table[162][3] = -{ - {-0.525731f, 0.000000f, 0.850651f}, - {-0.442863f, 0.238856f, 0.864188f}, - {-0.295242f, 0.000000f, 0.955423f}, - {-0.309017f, 0.500000f, 0.809017f}, - {-0.162460f, 0.262866f, 0.951056f}, - { 0.000000f, 0.000000f, 1.000000f}, - { 0.000000f, 0.850651f, 0.525731f}, - {-0.147621f, 0.716567f, 0.681718f}, - { 0.147621f, 0.716567f, 0.681718f}, - { 0.000000f, 0.525731f, 0.850651f}, - { 0.309017f, 0.500000f, 0.809017f}, - { 0.525731f, 0.000000f, 0.850651f}, - { 0.295242f, 0.000000f, 0.955423f}, - { 0.442863f, 0.238856f, 0.864188f}, - { 0.162460f, 0.262866f, 0.951056f}, - {-0.681718f, 0.147621f, 0.716567f}, - {-0.809017f, 0.309017f, 0.500000f}, - {-0.587785f, 0.425325f, 0.688191f}, - {-0.850651f, 0.525731f, 0.000000f}, - {-0.864188f, 0.442863f, 0.238856f}, - {-0.716567f, 0.681718f, 0.147621f}, - {-0.688191f, 0.587785f, 0.425325f}, - {-0.500000f, 0.809017f, 0.309017f}, - {-0.238856f, 0.864188f, 0.442863f}, - {-0.425325f, 0.688191f, 0.587785f}, - {-0.716567f, 0.681718f, -0.147621f}, - {-0.500000f, 0.809017f, -0.309017f}, - {-0.525731f, 0.850651f, 0.000000f}, - { 0.000000f, 0.850651f, -0.525731f}, - {-0.238856f, 0.864188f, -0.442863f}, - { 0.000000f, 0.955423f, -0.295242f}, - {-0.262866f, 0.951056f, -0.162460f}, - { 0.000000f, 1.000000f, 0.000000f}, - { 0.000000f, 0.955423f, 0.295242f}, - {-0.262866f, 0.951056f, 0.162460f}, - { 0.238856f, 0.864188f, 0.442863f}, - { 0.262866f, 0.951056f, 0.162460f}, - { 0.500000f, 0.809017f, 0.309017f}, - { 0.238856f, 0.864188f, -0.442863f}, - { 0.262866f, 0.951056f, -0.162460f}, - { 0.500000f, 0.809017f, -0.309017f}, - { 0.850651f, 0.525731f, 0.000000f}, - { 0.716567f, 0.681718f, 0.147621f}, - { 0.716567f, 0.681718f, -0.147621f}, - { 0.525731f, 0.850651f, 0.000000f}, - { 0.425325f, 0.688191f, 0.587785f}, - { 0.864188f, 0.442863f, 0.238856f}, - { 0.688191f, 0.587785f, 0.425325f}, - { 0.809017f, 0.309017f, 0.500000f}, - { 0.681718f, 0.147621f, 0.716567f}, - { 0.587785f, 0.425325f, 0.688191f}, - { 0.955423f, 0.295242f, 0.000000f}, - { 1.000000f, 0.000000f, 0.000000f}, - { 0.951056f, 0.162460f, 0.262866f}, - { 0.850651f, -0.525731f, 0.000000f}, - { 0.955423f, -0.295242f, 0.000000f}, - { 0.864188f, -0.442863f, 0.238856f}, - { 0.951056f, -0.162460f, 0.262866f}, - { 0.809017f, -0.309017f, 0.500000f}, - { 0.681718f, -0.147621f, 0.716567f}, - { 0.850651f, 0.000000f, 0.525731f}, - { 0.864188f, 0.442863f, -0.238856f}, - { 0.809017f, 0.309017f, -0.500000f}, - { 0.951056f, 0.162460f, -0.262866f}, - { 0.525731f, 0.000000f, -0.850651f}, - { 0.681718f, 0.147621f, -0.716567f}, - { 0.681718f, -0.147621f, -0.716567f}, - { 0.850651f, 0.000000f, -0.525731f}, - { 0.809017f, -0.309017f, -0.500000f}, - { 0.864188f, -0.442863f, -0.238856f}, - { 0.951056f, -0.162460f, -0.262866f}, - { 0.147621f, 0.716567f, -0.681718f}, - { 0.309017f, 0.500000f, -0.809017f}, - { 0.425325f, 0.688191f, -0.587785f}, - { 0.442863f, 0.238856f, -0.864188f}, - { 0.587785f, 0.425325f, -0.688191f}, - { 0.688191f, 0.587785f, -0.425325f}, - {-0.147621f, 0.716567f, -0.681718f}, - {-0.309017f, 0.500000f, -0.809017f}, - { 0.000000f, 0.525731f, -0.850651f}, - {-0.525731f, 0.000000f, -0.850651f}, - {-0.442863f, 0.238856f, -0.864188f}, - {-0.295242f, 0.000000f, -0.955423f}, - {-0.162460f, 0.262866f, -0.951056f}, - { 0.000000f, 0.000000f, -1.000000f}, - { 0.295242f, 0.000000f, -0.955423f}, - { 0.162460f, 0.262866f, -0.951056f}, - {-0.442863f, -0.238856f, -0.864188f}, - {-0.309017f, -0.500000f, -0.809017f}, - {-0.162460f, -0.262866f, -0.951056f}, - { 0.000000f, -0.850651f, -0.525731f}, - {-0.147621f, -0.716567f, -0.681718f}, - { 0.147621f, -0.716567f, -0.681718f}, - { 0.000000f, -0.525731f, -0.850651f}, - { 0.309017f, -0.500000f, -0.809017f}, - { 0.442863f, -0.238856f, -0.864188f}, - { 0.162460f, -0.262866f, -0.951056f}, - { 0.238856f, -0.864188f, -0.442863f}, - { 0.500000f, -0.809017f, -0.309017f}, - { 0.425325f, -0.688191f, -0.587785f}, - { 0.716567f, -0.681718f, -0.147621f}, - { 0.688191f, -0.587785f, -0.425325f}, - { 0.587785f, -0.425325f, -0.688191f}, - { 0.000000f, -0.955423f, -0.295242f}, - { 0.000000f, -1.000000f, 0.000000f}, - { 0.262866f, -0.951056f, -0.162460f}, - { 0.000000f, -0.850651f, 0.525731f}, - { 0.000000f, -0.955423f, 0.295242f}, - { 0.238856f, -0.864188f, 0.442863f}, - { 0.262866f, -0.951056f, 0.162460f}, - { 0.500000f, -0.809017f, 0.309017f}, - { 0.716567f, -0.681718f, 0.147621f}, - { 0.525731f, -0.850651f, 0.000000f}, - {-0.238856f, -0.864188f, -0.442863f}, - {-0.500000f, -0.809017f, -0.309017f}, - {-0.262866f, -0.951056f, -0.162460f}, - {-0.850651f, -0.525731f, 0.000000f}, - {-0.716567f, -0.681718f, -0.147621f}, - {-0.716567f, -0.681718f, 0.147621f}, - {-0.525731f, -0.850651f, 0.000000f}, - {-0.500000f, -0.809017f, 0.309017f}, - {-0.238856f, -0.864188f, 0.442863f}, - {-0.262866f, -0.951056f, 0.162460f}, - {-0.864188f, -0.442863f, 0.238856f}, - {-0.809017f, -0.309017f, 0.500000f}, - {-0.688191f, -0.587785f, 0.425325f}, - {-0.681718f, -0.147621f, 0.716567f}, - {-0.442863f, -0.238856f, 0.864188f}, - {-0.587785f, -0.425325f, 0.688191f}, - {-0.309017f, -0.500000f, 0.809017f}, - {-0.147621f, -0.716567f, 0.681718f}, - {-0.425325f, -0.688191f, 0.587785f}, - {-0.162460f, -0.262866f, 0.951056f}, - { 0.442863f, -0.238856f, 0.864188f}, - { 0.162460f, -0.262866f, 0.951056f}, - { 0.309017f, -0.500000f, 0.809017f}, - { 0.147621f, -0.716567f, 0.681718f}, - { 0.000000f, -0.525731f, 0.850651f}, - { 0.425325f, -0.688191f, 0.587785f}, - { 0.587785f, -0.425325f, 0.688191f}, - { 0.688191f, -0.587785f, 0.425325f}, - {-0.955423f, 0.295242f, 0.000000f}, - {-0.951056f, 0.162460f, 0.262866f}, - {-1.000000f, 0.000000f, 0.000000f}, - {-0.850651f, 0.000000f, 0.525731f}, - {-0.955423f, -0.295242f, 0.000000f}, - {-0.951056f, -0.162460f, 0.262866f}, - {-0.864188f, 0.442863f, -0.238856f}, - {-0.951056f, 0.162460f, -0.262866f}, - {-0.809017f, 0.309017f, -0.500000f}, - {-0.864188f, -0.442863f, -0.238856f}, - {-0.951056f, -0.162460f, -0.262866f}, - {-0.809017f, -0.309017f, -0.500000f}, - {-0.681718f, 0.147621f, -0.716567f}, - {-0.681718f, -0.147621f, -0.716567f}, - {-0.850651f, 0.000000f, -0.525731f}, - {-0.688191f, 0.587785f, -0.425325f}, - {-0.587785f, 0.425325f, -0.688191f}, - {-0.425325f, 0.688191f, -0.587785f}, - {-0.425325f, -0.688191f, -0.587785f}, - {-0.587785f, -0.425325f, -0.688191f}, - {-0.688191f, -0.587785f, -0.425325f}, -}; - -static inline Eina_Bool -_md2_loader_init(MD2_Loader *loader, Eina_File *file) -{ - MD2_Header header; - - memset(loader, 0x00, sizeof(MD2_Loader)); - - loader->map = eina_file_map_all(file, EINA_FILE_SEQUENTIAL); - - if (loader->map == NULL) - { - ERR("Failed to create map from file %s\n", eina_file_filename_get(file)); - goto error; - } - - /* Check file size. We require a file larger than MD2 header size. */ - loader->size = eina_file_size_get(file); - - if (loader->size < (int)sizeof(MD2_Header)) - goto error; - - /* Read header. */ - memcpy(&header, loader->map, sizeof(MD2_Header)); - - /* Check identity */ - if (header.magic != MD2_MAGIC_NUMBER || header.version != MD2_VERSION) - goto error; - - /* Check offsets */ - if (header.offset_skins > header.offset_end) - goto error; - - if (header.offset_texcoords > header.offset_end) - goto error; - - if (header.offset_triangles > header.offset_end) - goto error; - - if (header.offset_frames > header.offset_end) - goto error; - - if (header.offset_glcmds > header.offset_end) - goto error; - - if (header.offset_end > loader->size) - goto error; - - loader->skin_width = header.skin_width; - loader->skin_height = header.skin_height; - - loader->frame_count = header.frame_count; - loader->frame_size = header.frame_size; - loader->frames = loader->map + header.offset_frames; - - loader->vertex_count = header.vertex_count; - loader->triangle_count = header.triangle_count; - loader->texcoord_count = header.texcoord_count; - - loader->triangles = (MD2_Triangle *)(loader->map + header.offset_triangles); - loader->texcoords = (MD2_Texcoord *)(loader->map + header.offset_texcoords); - return EINA_TRUE; - -error: - return EINA_FALSE; -} - -void -evas_model_load_file_md2(Evas_Canvas3D_Mesh *mesh, Eina_File *file) -{ - MD2_Loader loader; - int i, j, k; - float *pos, *nor, *tex; - int stride_pos, stride_nor, stride_tex; - float s_scale, t_scale; - Evas_Canvas3D_Mesh_Data *pd; - - /* Initialize MD2 loader (Open file and read MD2 head ant etc) */ - if (!_md2_loader_init(&loader, file)) - { - ERR("Failed to initialize MD2 loader."); - return; - } - - s_scale = 1.0 / (float)(loader.skin_width - 1); - t_scale = 1.0 / (float)(loader.skin_height - 1); - - evas_canvas3d_mesh_vertex_count_set(mesh, loader.triangle_count * 3); - evas_canvas3d_mesh_vertex_assembly_set(mesh, EVAS_CANVAS3D_VERTEX_ASSEMBLY_TRIANGLES); - - /* Load frames */ - for (i = 0; i < loader.frame_count; i++) - { - const MD2_Frame *frame = (const MD2_Frame *)(loader.frames + loader.frame_size * i); - int f = i * MD2_FRAME_SCALE; - - /* Add a mesh frame. */ - evas_canvas3d_mesh_frame_add(mesh, f); - - /* Allocate vertex buffer for the frame. */ - evas_canvas3d_mesh_frame_vertex_data_copy_set(mesh, f, EVAS_CANVAS3D_VERTEX_ATTRIB_POSITION, 0, NULL); - evas_canvas3d_mesh_frame_vertex_data_copy_set(mesh, f, EVAS_CANVAS3D_VERTEX_ATTRIB_NORMAL, 0, NULL); - evas_canvas3d_mesh_frame_vertex_data_copy_set(mesh, f, EVAS_CANVAS3D_VERTEX_ATTRIB_TEXCOORD, 0, NULL); - - /* Map vertex buffer. */ - pos = (float *)evas_canvas3d_mesh_frame_vertex_data_map(mesh, f, EVAS_CANVAS3D_VERTEX_ATTRIB_POSITION); - nor = (float *)evas_canvas3d_mesh_frame_vertex_data_map(mesh, f, EVAS_CANVAS3D_VERTEX_ATTRIB_NORMAL); - tex = (float *)evas_canvas3d_mesh_frame_vertex_data_map(mesh, f, EVAS_CANVAS3D_VERTEX_ATTRIB_TEXCOORD); - - stride_pos = evas_canvas3d_mesh_frame_vertex_stride_get(mesh, f, EVAS_CANVAS3D_VERTEX_ATTRIB_POSITION); - stride_nor = evas_canvas3d_mesh_frame_vertex_stride_get(mesh, f, EVAS_CANVAS3D_VERTEX_ATTRIB_NORMAL); - stride_tex = evas_canvas3d_mesh_frame_vertex_stride_get(mesh, f, EVAS_CANVAS3D_VERTEX_ATTRIB_TEXCOORD); - - if (stride_pos == 0) - stride_pos = sizeof(float) * 3; - - if (stride_nor == 0) - stride_nor = sizeof(float) * 3; - - if (stride_tex == 0) - stride_tex = sizeof(float) * 2; - - for (j = 0; j < loader.triangle_count; j++) - { - const MD2_Triangle *tri = &loader.triangles[j]; - - for (k = 0; k < 3; k++) - { - unsigned int tidx, vidx; - float *p, *n, *t; - - tidx = tri->texcoord_idx[k]; - vidx = tri->vertex_idx[k]; - - p = (float *)((char *)pos + stride_pos * (j * 3 + k)); - n = (float *)((char *)nor + stride_nor * (j * 3 + k)); - t = (float *)((char *)tex + stride_tex * (j * 3 + k)); - - p[0] = frame->vertices[vidx].pos[0] * frame->scale[0] + frame->trans[0]; - p[1] = frame->vertices[vidx].pos[1] * frame->scale[1] + frame->trans[1]; - p[2] = frame->vertices[vidx].pos[2] * frame->scale[2] + frame->trans[2]; - - n[0] = normal_table[frame->vertices[vidx].normal_idx][0]; - n[1] = normal_table[frame->vertices[vidx].normal_idx][1]; - n[2] = normal_table[frame->vertices[vidx].normal_idx][2]; - - t[0] = loader.texcoords[tidx].s * s_scale; - t[1] = 1.0 - loader.texcoords[tidx].t * t_scale; - } - } - - /* Unmap vertex buffer. */ - evas_canvas3d_mesh_frame_vertex_data_unmap(mesh, f, EVAS_CANVAS3D_VERTEX_ATTRIB_POSITION); - evas_canvas3d_mesh_frame_vertex_data_unmap(mesh, f, EVAS_CANVAS3D_VERTEX_ATTRIB_NORMAL); - evas_canvas3d_mesh_frame_vertex_data_unmap(mesh, f, EVAS_CANVAS3D_VERTEX_ATTRIB_TEXCOORD); - - pd = efl_data_scope_get(mesh, EVAS_CANVAS3D_MESH_CLASS); - - if (!evas_canvas3d_mesh_aabb_add_to_frame(pd, f, stride_pos)) - { - ERR("Axis-Aligned Bounding Box wasn't added in frame %d ", f); - } - } - - if (loader.map) - { - eina_file_map_free(file, loader.map); - loader.map = NULL; - } -} - diff --git a/src/modules/evas/model_loaders/meson.build b/src/modules/evas/model_loaders/meson.build deleted file mode 100644 index fd7ce398fb..0000000000 --- a/src/modules/evas/model_loaders/meson.build +++ /dev/null @@ -1 +0,0 @@ -#all the loaders here are build statically, the build instructions are in src/lib/evas/meson.build diff --git a/src/modules/evas/model_loaders/obj/evas_model_load_obj.c b/src/modules/evas/model_loaders/obj/evas_model_load_obj.c deleted file mode 100644 index bb2dae308a..0000000000 --- a/src/modules/evas/model_loaders/obj/evas_model_load_obj.c +++ /dev/null @@ -1,461 +0,0 @@ -#ifdef HAVE_CONFIG_H -# include "config.h" -#endif - -#include -#include "stdio.h" -#include "evas_common_private.h" -#include "evas_private.h" - -//TODO Increase of stability (reading .obj file saved with any flags). -/* set value to position [x][y] to array name which have. */ -#define ARRAY_2D(name, x, y, count_y) (*(name + x * count_y + y)) - -/* read 3 float values in string and put it in array */ -#define PUT_DATA_TO_ARRAY(array_name, name) \ - sscanf (current,"%f %f %f", \ - &ARRAY_2D(_##array_name##_obj, counts.current_##name##_counter, 0, 3), \ - &ARRAY_2D(_##array_name##_obj, counts.current_##name##_counter, 1, 3), \ - &ARRAY_2D(_##array_name##_obj, counts.current_##name##_counter, 2, 3)); \ - counts.current_##name##_counter++; - -#define AFTER_NEXT_SPACE(pointer)\ - do \ - { \ - pointer++; \ - i++; \ - } \ - while (*pointer != ' '); - -/* Structures for reading data from file. */ -typedef struct _OBJ_Counts OBJ_Counts; - -struct _OBJ_Counts -{ - int _vertex_counter; - int _normal_counter; - int _texture_point_counter; - int _triangles_counter; - - int current_vertex_counter; - int current_normal_counter; - int current_texture_point_counter; - int current_triangles_counter; - - Eina_Bool existence_of_normal; - Eina_Bool existence_of_tex_point; -}; - -/* create new counter */ -static inline OBJ_Counts -_new_count_elements(void) -{ - OBJ_Counts counts; - - counts._vertex_counter = 0; - counts._normal_counter = 0; - counts._texture_point_counter = 0; - counts._triangles_counter = 0; - - counts.current_vertex_counter = 0; - counts.current_normal_counter = 0; - counts.current_texture_point_counter = 0; - counts.current_triangles_counter = 0; - - counts.existence_of_normal = EINA_FALSE; - counts.existence_of_tex_point = EINA_FALSE; - return counts; -} - -/* count triangles in face */ -static void -_analyze_face_line(char * face_analyzer, - int * count_of_triangles_in_line) -{ - int polygon_checker = -2; - Eina_Bool previous_is_space = EINA_TRUE; - while ((*face_analyzer != '\n') && (*face_analyzer != '#')) - { - if (*face_analyzer == ' ') - { - previous_is_space = EINA_TRUE; - } - else if ((previous_is_space) && (*face_analyzer >= '0') && (*face_analyzer <= '9')) - { - polygon_checker++; - previous_is_space = EINA_FALSE; - } - face_analyzer++; - } - *count_of_triangles_in_line = polygon_checker; -} - -static inline OBJ_Counts -_count_elements(char *map)//count elements of mesh in .obj -{ - OBJ_Counts counts = _new_count_elements(); - - char *current = map; - int polygon_checker = -2;//polygons with n vertices can be represented as n-2 triangles - Eina_Bool will_check_next_char = EINA_FALSE; - Eina_Bool first_char_is_v = EINA_FALSE; - Eina_Bool first_char_is_f = EINA_FALSE; - Eina_Bool previous_is_space = EINA_FALSE; - - long i = 0; - /* count elements of mesh in .obj */ - for (; *current != '\00'; i++) - { - if (will_check_next_char) - { - if (first_char_is_v) - { - switch (*current) - { - case ' ': - counts._vertex_counter++; - break; - case 't': - counts._texture_point_counter++; - counts.existence_of_tex_point = EINA_TRUE; - break; - case 'n': - counts._normal_counter++; - counts.existence_of_normal = EINA_TRUE; - break; - default: - break; - } - first_char_is_v = EINA_FALSE; - will_check_next_char = EINA_FALSE; - } - else if (first_char_is_f) - { - switch (*current) - { - case '\n': - first_char_is_f = EINA_FALSE; - counts._triangles_counter += polygon_checker; - polygon_checker = -2; - previous_is_space = EINA_FALSE; - break; - case '#': - first_char_is_f = EINA_FALSE; - counts._triangles_counter += polygon_checker; - polygon_checker = -2; - previous_is_space = EINA_FALSE; - break; - case ' ': - previous_is_space = EINA_TRUE; - break; - default: - if ((previous_is_space) && (*current >= '0') && (*current <= '9')) - { - polygon_checker++; - previous_is_space = EINA_FALSE; - } - break; - } - } - else - { - switch (*current) - { - case 'v': - first_char_is_v = EINA_TRUE; - break; - case 'f': - first_char_is_f = EINA_TRUE; - break; - case 'm': - will_check_next_char = EINA_FALSE; - break; - default: - will_check_next_char = EINA_FALSE; - break; - } - } - } - if (*current == '\n') - { - will_check_next_char = EINA_TRUE; - } - current++; - } - return counts; -} - -static void -_read_point(int *triangles, - int num, - OBJ_Counts counts, - int num_cur, - char *pointer) -{ - if (counts.existence_of_normal) - { - if (counts.existence_of_tex_point) - sscanf(pointer, "%i/%i/%i", - &ARRAY_2D(triangles, num_cur, (num - 1) * 3, 9), - &ARRAY_2D(triangles, num_cur, (num - 1) * 3 + 1, 9), - &ARRAY_2D(triangles, num_cur, (num - 1) * 3 + 2, 9)); - else - sscanf(pointer, "%i//%i", - &ARRAY_2D(triangles, num_cur, (num - 1) * 3, 9), - &ARRAY_2D(triangles, num_cur, (num - 1) * 3 + 2, 9)); - } - else - { - if (counts.existence_of_tex_point) - sscanf(pointer, "%i/%i", - &ARRAY_2D(triangles, num_cur, (num - 1) * 3, 9), - &ARRAY_2D(triangles, num_cur, (num - 1) * 3 + 1, 9)); - else - sscanf(pointer, "%i", - &ARRAY_2D(triangles, num_cur, (num - 1) * 3, 9)); - } -} - -void -evas_model_load_file_obj(Evas_Canvas3D_Mesh *mesh, Eina_File *file) -{ - long i; - OBJ_Counts counts;//count elements of mesh in .obj - Eina_Bool will_check_next_char = EINA_FALSE; - Eina_Bool first_char_is_v = EINA_FALSE; - Eina_Bool first_char_is_f = EINA_FALSE; - float *pos = NULL, *nor = NULL, *tex = NULL; - int stride_pos = 0, stride_nor = 0, stride_tex = 0; - int j, k, data_for_one_point; - char *current, *map; - float *_vertices_obj = NULL, *_normales_obj = NULL, *_tex_coords_obj = NULL; - int *_triangles; - - map = eina_file_map_all(file, EINA_FILE_SEQUENTIAL); - - if (map == NULL) - { - ERR("Failed to create map from file %s\n", eina_file_filename_get(file)); - return; - } - - counts = _count_elements(map); - _vertices_obj = malloc(counts._vertex_counter * 3 * sizeof(float)); - data_for_one_point = 1; - if (counts.existence_of_normal) - { - data_for_one_point++; - _normales_obj = malloc(counts._normal_counter * 3 * sizeof(float)); - } - if (counts.existence_of_tex_point) - { - data_for_one_point++; - _tex_coords_obj = malloc(counts._texture_point_counter * 3 * sizeof(float)); - } - _triangles = malloc(counts._triangles_counter * 9 * sizeof(int)); - - if ((map == NULL) || (_vertices_obj == NULL) || (_triangles == NULL) || - ((counts.existence_of_normal) && (_normales_obj == NULL)) || - ((counts.existence_of_tex_point) && (_tex_coords_obj == NULL))) - { - ERR("Allocate memory is failed."); - free(_vertices_obj); - free(_triangles); - if (counts.existence_of_normal) - free(_normales_obj); - if (counts.existence_of_tex_point) - free(_tex_coords_obj); - return; - } - - current = map; - i = 0; - /* put data to arrays */ - for (; *current != '\00'; i++) - { - if (will_check_next_char) - { - if (first_char_is_v) - { - switch (*current) - { - case ' ': - PUT_DATA_TO_ARRAY(vertices, vertex) - i--; - break; - case 't': - current++; - if (counts.existence_of_tex_point) - { - PUT_DATA_TO_ARRAY(tex_coords, texture_point) - } - break; - case 'n': - current++; - if (counts.existence_of_normal) - { - PUT_DATA_TO_ARRAY(normales, normal) - } - break; - default: - break; - } - first_char_is_v = EINA_FALSE; - will_check_next_char = EINA_FALSE; - } - else if (first_char_is_f) - { - char *auxiliary_pointer = current; - int count_of_triangles_in_line; - int the_first_point = counts.current_triangles_counter; - - _analyze_face_line(auxiliary_pointer, - &count_of_triangles_in_line); - current++; - i++; - _read_point(_triangles, 1, counts, - the_first_point, - current); - - AFTER_NEXT_SPACE(current) - - for (j = 0; j < count_of_triangles_in_line; j++) - { - auxiliary_pointer = current; - if (counts.current_triangles_counter != the_first_point) - { - ARRAY_2D(_triangles, counts.current_triangles_counter, 0, 9) = \ - ARRAY_2D(_triangles, the_first_point, 0, 9); - ARRAY_2D(_triangles, counts.current_triangles_counter, 1, 9) = \ - ARRAY_2D(_triangles, the_first_point, 1, 9); - ARRAY_2D(_triangles, counts.current_triangles_counter, 2, 9) = \ - ARRAY_2D(_triangles, the_first_point, 2, 9); - } - - _read_point(_triangles, 2, counts, - counts.current_triangles_counter, - auxiliary_pointer); - AFTER_NEXT_SPACE(auxiliary_pointer); - _read_point(_triangles, 3, counts, - counts.current_triangles_counter, - auxiliary_pointer); - AFTER_NEXT_SPACE(current); - - counts.current_triangles_counter++; - } - first_char_is_f = EINA_FALSE; - } - else - { - switch (*current) - { - case 'v': - first_char_is_v = EINA_TRUE; - break; - case 'f': - first_char_is_f = EINA_TRUE; - break; - case 'm': - will_check_next_char = EINA_FALSE; - break; - default: - will_check_next_char = EINA_FALSE; - break; - } - } - } - if (*current == '\n') - { - will_check_next_char = EINA_TRUE; - } - current++; - } - - /* prepare of mesh and take pointers to data which must be read */ - evas_canvas3d_mesh_vertex_count_set(mesh, counts._triangles_counter * 3); - evas_canvas3d_mesh_vertex_assembly_set(mesh, EVAS_CANVAS3D_VERTEX_ASSEMBLY_TRIANGLES); - evas_canvas3d_mesh_frame_add(mesh, 0); - evas_canvas3d_mesh_frame_vertex_data_copy_set(mesh, 0, EVAS_CANVAS3D_VERTEX_ATTRIB_POSITION, 0, NULL); - pos = (float *)evas_canvas3d_mesh_frame_vertex_data_map(mesh, 0, EVAS_CANVAS3D_VERTEX_ATTRIB_POSITION); - stride_pos = evas_canvas3d_mesh_frame_vertex_stride_get(mesh, 0, EVAS_CANVAS3D_VERTEX_ATTRIB_POSITION); - - if (counts.existence_of_normal) - { - evas_canvas3d_mesh_frame_vertex_data_copy_set(mesh, 0, EVAS_CANVAS3D_VERTEX_ATTRIB_NORMAL, 0, NULL); - nor = (float *)evas_canvas3d_mesh_frame_vertex_data_map(mesh, 0, EVAS_CANVAS3D_VERTEX_ATTRIB_NORMAL); - stride_nor = evas_canvas3d_mesh_frame_vertex_stride_get(mesh, 0, EVAS_CANVAS3D_VERTEX_ATTRIB_NORMAL); - } - - if (counts.existence_of_tex_point) - { - evas_canvas3d_mesh_frame_vertex_data_copy_set(mesh, 0, EVAS_CANVAS3D_VERTEX_ATTRIB_TEXCOORD, 0, NULL); - tex = (float *)evas_canvas3d_mesh_frame_vertex_data_map(mesh, 0, EVAS_CANVAS3D_VERTEX_ATTRIB_TEXCOORD); - stride_tex = evas_canvas3d_mesh_frame_vertex_stride_get(mesh, 0, EVAS_CANVAS3D_VERTEX_ATTRIB_TEXCOORD); - } - - if (stride_pos == 0) stride_pos = sizeof(float) * 3; - if ((counts.existence_of_normal) && (stride_nor == 0)) - stride_nor = sizeof(float) * 3; - if ((counts.existence_of_tex_point) && (stride_tex == 0)) - stride_tex = sizeof(float) * 2; - - for (j = 0; j < counts._triangles_counter; j++) - { - for (k = 0; k < 3; k++) - { - float *p, *n, *t; - - n = NULL; - t = NULL; - p = (float *)((char *)pos + stride_pos * (j * 3 + k)); - if (counts.existence_of_normal) - n = (float *)((char *)nor + stride_nor * (j * 3 + k)); - if (counts.existence_of_tex_point) - t = (float *)((char *)tex + stride_tex * (j * 3 + k)); - - p[0] = ARRAY_2D(_vertices_obj, (ARRAY_2D(_triangles, j, (3 * k), 9) - 1), 0, 3); - p[1] = ARRAY_2D(_vertices_obj, (ARRAY_2D(_triangles, j, (3 * k), 9) - 1), 1, 3); - p[2] = ARRAY_2D(_vertices_obj, (ARRAY_2D(_triangles, j, (3 * k), 9) - 1), 2, 3); - - if (n) - { - n[0] = ARRAY_2D(_normales_obj, (ARRAY_2D(_triangles, j, (3 * k + 2), 9) - 1), 0, 3); - n[1] = ARRAY_2D(_normales_obj, (ARRAY_2D(_triangles, j, (3 * k + 2), 9) - 1), 1, 3); - n[2] = ARRAY_2D(_normales_obj, (ARRAY_2D(_triangles, j, (3 * k + 2), 9) - 1), 2, 3); - } - - if (t) - { - t[0] = ARRAY_2D(_tex_coords_obj, (ARRAY_2D(_triangles, j, (3 * k + 1), 9) - 1), 0, 3); - t[1] = ARRAY_2D(_tex_coords_obj, (ARRAY_2D(_triangles, j, (3 * k + 1), 9) - 1), 1, 3); - } - } - } - - free(_vertices_obj); - if (counts.existence_of_normal) - free(_normales_obj); - if (counts.existence_of_tex_point) - free(_tex_coords_obj); - free(_triangles); - - /* Unmap vertex buffer. */ - evas_canvas3d_mesh_frame_vertex_data_unmap(mesh, 0, EVAS_CANVAS3D_VERTEX_ATTRIB_POSITION); - if (counts.existence_of_normal) - evas_canvas3d_mesh_frame_vertex_data_unmap(mesh, 0, EVAS_CANVAS3D_VERTEX_ATTRIB_NORMAL); - if (counts.existence_of_tex_point) - evas_canvas3d_mesh_frame_vertex_data_unmap(mesh, 0, EVAS_CANVAS3D_VERTEX_ATTRIB_TEXCOORD); - - Evas_Canvas3D_Mesh_Data *pd = efl_data_scope_get(mesh, EVAS_CANVAS3D_MESH_CLASS); - - if (!evas_canvas3d_mesh_aabb_add_to_frame(pd, 0, stride_pos)) - { - ERR("Axis-Aligned Bounding Box wasn't added in frame %d ", 0); - } - - if (map) - { - eina_file_map_free(file, map); - map = NULL; - } -} diff --git a/src/modules/evas/model_loaders/ply/evas_model_load_ply.c b/src/modules/evas/model_loaders/ply/evas_model_load_ply.c deleted file mode 100644 index 20a9f69e68..0000000000 --- a/src/modules/evas/model_loaders/ply/evas_model_load_ply.c +++ /dev/null @@ -1,252 +0,0 @@ -#include "evas_model_load_save_common.h" - -static inline char * -_to_next_line(char *current) -{ - while (*current != '\n') current++; - current++; - return current; -} - -static inline char * -_to_begin_of_line(char *current) -{ - while (*current != '\n') current--; - current++; - return current; -} - -static inline char * -_to_next_number(char *current, int count) -{ - int i; - for (i = 0; i < count; i++) - { - while (*current != ' ') current++; - current++; - } - return current; -} - -static inline char * -_read_data(float *array, int place, int count, char *current, float divider) -{ - int i; - for (i = 0; i < count; i++) - { - sscanf (current,"%f", &ARRAY_2D(array, place, i, count)); - ARRAY_2D(array, place, i, count) /= divider; - current = _to_next_number(current, 1); - } - return current; -} - -static inline Eina_Bool -_read_ply_header(char *map, Evas_Model_Load_Save_Header *header, const char *filename) -{ - Eina_Bool reading_vertices = EINA_TRUE, check_next_char = EINA_FALSE; - int vertex_lines, triangles = 0, vertices_in_current_face = 0; - char **helping_pointer; - char *current; - - helping_pointer = eina_str_split(map, "vertex ", 0); - - if (helping_pointer == NULL) - { - ERR("PLY file doesn't contain the required keyword 'vertex': %s", filename); - return EINA_FALSE; - } - - sscanf(helping_pointer[1], "%d", &header->vertices_count); - - free(helping_pointer[0]); - free(helping_pointer); - - helping_pointer = eina_str_split(map, "end_header\n", 0); - - if (helping_pointer == NULL) - { - ERR("PLY file doesn't contain the required keyword 'end_header': %s", filename); - return EINA_FALSE; - } - - current = helping_pointer[1]; - - vertex_lines = header->vertices_count; - while (*current != '\0') - { - if (vertex_lines == 1) - reading_vertices = EINA_FALSE; - if (*current == '\n') - { - if (reading_vertices) - vertex_lines--; - else - check_next_char = EINA_TRUE; - } - if (check_next_char) - { - if ((*current <= '9') && (*current >= '0')) - vertices_in_current_face = (vertices_in_current_face * 10) + (*current - '0'); - else if (*current >= ' ') - { - triangles += (vertices_in_current_face - 2); - vertices_in_current_face = 0; - check_next_char = EINA_FALSE; - } - } - current++; - } - - header->indices_count = 3 * triangles; - - free(helping_pointer[0]); - free(helping_pointer); - - /* analyse flags used when file was saved in blender */ - helping_pointer = eina_str_split(map, "property float ", 0); - - if (helping_pointer == NULL) - { - ERR("PLY file doesn't contain any float properties: %s", filename); - return EINA_FALSE; - } - - if ((helping_pointer[1] != NULL) && (*helping_pointer[1] == 'x') && - (helping_pointer[2] != NULL) && (*helping_pointer[2] == 'y') && - (helping_pointer[3] != NULL) && (*helping_pointer[3] == 'z')) - header->existence_of_positions = EINA_TRUE; - else - { - ERR("PLY file doesn't start with x,y,z float fields, they are required: %s", filename); - free(helping_pointer[0]); - free(helping_pointer); - return EINA_FALSE; - } - - if ((helping_pointer[4] != NULL) && (*helping_pointer[4] == 'n') && - (helping_pointer[5] != NULL) && (*helping_pointer[5] == 'n') && - (helping_pointer[6] != NULL) && (*helping_pointer[6] == 'n')) - header->existence_of_normals = EINA_TRUE; - - if ((header->existence_of_normals && - ((helping_pointer[7] != NULL) && (*helping_pointer[7] == 's') && - (helping_pointer[8] != NULL) && (*helping_pointer[8] == 't'))) || - (!header->existence_of_normals && - ((helping_pointer[4] != NULL) && (*helping_pointer[4] == 's') && - (helping_pointer[5] != NULL) && (*helping_pointer[5] == 't')))) - header->existence_of_tex_coords = EINA_TRUE; - - free(helping_pointer[0]); - free(helping_pointer); - - helping_pointer = eina_str_split(map, "property uchar ", 0); - - if (helping_pointer == NULL) - { - ERR("PLY file doesn't contain any uchar properties: %s", filename); - return EINA_FALSE; - } - - if ((helping_pointer[1] != NULL) && (*helping_pointer[1] == 'r') && - (helping_pointer[2] != NULL) && (*helping_pointer[2] == 'g') && - (helping_pointer[3] != NULL) && (*helping_pointer[3] == 'b')) - header->existence_of_colors = EINA_TRUE; - - free(helping_pointer[0]); - free(helping_pointer); - - return EINA_TRUE; -} - -static inline void -_read_ply_vertex_data(Evas_Model_Load_Save_Header header, - char **current, - Evas_Model_Load_Save_Data data) -{ - int i; - for (i = 0; i < header.vertices_count; i++) - { - *current = _read_data(data.positions, i, 3, *current, 1.0); - if (header.existence_of_normals) - *current = _read_data(data.normals, i, 3, *current, 1.0); - if (header.existence_of_tex_coords) - *current = _read_data(data.tex_coords, i, 2, *current, 1.0); - if (header.existence_of_colors) - *current = _read_data(data.colors, i, 3, *current, 255.0); - *current = _to_begin_of_line(*current); - } -} - -static inline void -_read_ply_indices_data(Evas_Model_Load_Save_Header header, - char **current, - Evas_Model_Load_Save_Data data) -{ - int i, j, count_of_triangles_in_line = 0; - - for (i = 0; i < header.indices_count;) - { - sscanf (*current,"%d", &count_of_triangles_in_line); - count_of_triangles_in_line -= 2; - *current = _to_next_number(*current, 1); - - sscanf (*current,"%hu", data.indices + i); - - for (j = 0; j < count_of_triangles_in_line; j++) - { - if (j > 0) - data.indices[i] = data.indices[i - 3]; - *current = _to_next_number(*current, 1); - sscanf (*current,"%hu %hu", - data.indices + i + 1, - data.indices + i + 2); - i+=3; - } - *current = _to_next_line(*current); - } -} - -void -evas_model_load_file_ply(Evas_Canvas3D_Mesh *mesh, Eina_File *file) -{ - char *current = NULL, *map = NULL, **split_of_map = NULL; - Evas_Model_Load_Save_Header header = { 0, 0, 0, 0, 0, 0 }; - Evas_Model_Load_Save_Data data = { NULL, NULL, NULL, NULL, NULL }; - Evas_Model_Load_Save_Stride stride = { 0, 0, 0, 0 }; - - map = eina_file_map_all(file, EINA_FILE_SEQUENTIAL); - if (map == NULL) - { - ERR("Failed to create map from file %s\n", eina_file_filename_get(file)); - return; - } - - header = evas_model_load_save_header_new(); - if(!_read_ply_header(map, &header, eina_file_filename_get(file))) return; - - if (!evas_model_load_allocate_data_due_to_header(header, &data)) - { - ERR("Memory allocation is failed."); - return; - } - - split_of_map = eina_str_split(map, "end_header\n", 0); - current = split_of_map[1]; - _read_ply_vertex_data(header, ¤t, data); - _read_ply_indices_data(header, ¤t, data); - evas_model_load_vertex_data_to_mesh(mesh, header, data, &stride); - evas_model_load_indices_data_to_mesh(mesh, header, data); - evas_model_load_vertex_data_unmap(mesh, 0, header); - evas_model_load_aabb_add_to_frame(mesh, 0, stride); - - free(split_of_map[0]); - free(split_of_map); - if (map) - { - eina_file_map_free(file, map); - map = NULL; - } - - evas_model_load_save_data_free(header, &data); -} diff --git a/src/modules/evas/model_savers/eet/evas_model_save_eet.c b/src/modules/evas/model_savers/eet/evas_model_save_eet.c deleted file mode 100644 index d659e411f9..0000000000 --- a/src/modules/evas/model_savers/eet/evas_model_save_eet.c +++ /dev/null @@ -1,205 +0,0 @@ -#ifdef HAVE_CONFIG_H - #include "config.h" -#endif - -#include -#include -#include "evas_common_private.h" -#include "evas_private.h" - -#define COMPONENT_OF_DEFAULT_GREY_COLOR 0.3 -#define TRANSPARENCY_OF_DEFAULT_GREY_COLOR 0.5 - -static void -_set_geometry_to_eet_file_from_mesh(Evas_Canvas3D_Mesh_Data *mesh, - Evas_Canvas3D_Mesh_Eet *eet_mesh, - Evas_Canvas3D_Header_Eet *eet_header, - Evas_Canvas3D_Mesh_Frame *f) -{ - Evas_Canvas3D_Vertex_Buffer *vb; - int i; - float *src; - Evas_Canvas3D_Vertex_Eet *vertices = - calloc(1, sizeof(Evas_Canvas3D_Vertex_Eet) * mesh->vertex_count); - Evas_Canvas3D_Geometry_Eet *geometry = - calloc(1, sizeof(Evas_Canvas3D_Geometry_Eet)); - int *geometries = malloc(sizeof(int)); - - if ((vertices == NULL) || (geometry == NULL)) - { - ERR("Allocating of memory is failed."); - free(vertices); - free(geometry); - free(geometries); - return; - } - - geometry->vertices_count = mesh->vertex_count; - geometries[0] = mesh->vertex_count; - -#define SAVE_GEOMETRICS(a, component, command_for_z_component)\ - vb = &f->vertices[a];\ - if (vb->data == NULL)\ - {\ - ERR("Failed to read geometrics for '%s'.", #component);\ - }\ - else\ - {\ - src = (float *)vb->data;\ - for (i = 0; i < mesh->vertex_count; i++)\ - {\ - vertices[i].component.x = src[0];\ - vertices[i].component.y = src[1];\ - command_for_z_component\ - src += f->vertices[a].element_count;\ - }\ - } - geometry->vertices = vertices; - SAVE_GEOMETRICS(EVAS_CANVAS3D_VERTEX_ATTRIB_POSITION, position, vertices[i].position.z = src[2];) - SAVE_GEOMETRICS(EVAS_CANVAS3D_VERTEX_ATTRIB_NORMAL, normal, vertices[i].normal.z = src[2];) - SAVE_GEOMETRICS(EVAS_CANVAS3D_VERTEX_ATTRIB_TEXCOORD, texcoord,) -#undef SAVE_GEOMETRICS - - eet_mesh->geometries = geometry; - eet_header->geometries = geometries; -} - -static void -_set_material_to_eet_file_from_mesh(Evas_Canvas3D_Mesh_Eet *eet_mesh, - Evas_Canvas3D_Header_Eet *eet_header, - Evas_Canvas3D_Mesh_Frame *f) -{ - int i; - Evas_Canvas3D_Material_Data *material = - efl_data_scope_get(f->material, EVAS_CANVAS3D_MATERIAL_CLASS); - Evas_Canvas3D_Material_Eet *saved_materials = - malloc(sizeof(Evas_Canvas3D_Material_Eet)); - Evas_Canvas3D_Color_Eet *saved_colors = - malloc(sizeof(Evas_Canvas3D_Color_Eet) * EVAS_CANVAS3D_MATERIAL_ATTRIB_COUNT); - int *materials = malloc(sizeof(int)); - - if ((saved_materials == NULL) || (saved_colors == NULL)) - { - ERR("Allocating of memory is failed."); - free(material); - free(saved_materials); - free(saved_colors); - free(materials); - return; - } - - if (material == NULL) - { - ERR("Material is set to the default values, because no custom material " - "was saved earlier by evas_3d_mesh_save."); - - for (i = 0; i < 5; i++) - { - saved_colors[i].r = COMPONENT_OF_DEFAULT_GREY_COLOR; - saved_colors[i].g = COMPONENT_OF_DEFAULT_GREY_COLOR; - saved_colors[i].b = COMPONENT_OF_DEFAULT_GREY_COLOR; - saved_colors[i].a = TRANSPARENCY_OF_DEFAULT_GREY_COLOR; - } - - saved_materials->shininess = 50; - } - else - { - - for (i = 0; i < 5; i++) - { - saved_colors[i].r = material->attribs[i].color.r; - saved_colors[i].g = material->attribs[i].color.g; - saved_colors[i].b = material->attribs[i].color.b; - saved_colors[i].a = material->attribs[i].color.a; - } - - saved_materials->shininess = material->shininess; - } - - saved_materials->colors_count = EVAS_CANVAS3D_MATERIAL_ATTRIB_COUNT; - materials[0] = EVAS_CANVAS3D_MATERIAL_ATTRIB_COUNT; - saved_materials->id = 1; - saved_materials->colors = saved_colors; - eet_mesh->materials = saved_materials; - eet_header->materials = materials; -} - -static void -_set_frame_to_eet_file_from_mesh(Evas_Canvas3D_Mesh_Eet *eet_mesh) -{ - eet_mesh->frames = malloc(sizeof(Evas_Canvas3D_Frame_Eet)); - - if (eet_mesh->frames == NULL) - { - ERR("Allocating of memory is failed."); - return; - } - - eet_mesh->frames->id = 1; - eet_mesh->frames->geometry_id = 1; - eet_mesh->frames->material_id = 1; -} - -void -evas_model_save_file_eet(const Evas_Canvas3D_Mesh *mesh, - const char *file, - Evas_Canvas3D_Mesh_Frame *f) -{ - Evas_Canvas3D_Mesh_Data *pd = efl_data_scope_get(mesh, EVAS_CANVAS3D_MESH_CLASS); - Eet_File *ef; - Evas_Canvas3D_Mesh_Eet* eet_mesh = malloc(sizeof(Evas_Canvas3D_Mesh_Eet)); - Evas_Canvas3D_Header_Eet* eet_header = malloc(sizeof(Evas_Canvas3D_Header_Eet)); - Eet_Data_Descriptor *_file_descriptor; - Evas_Canvas3D_File_Eet *eet_file; - - eet_init(); - - ef = eet_open(file, EET_FILE_MODE_WRITE); - if (ef == NULL) - { - ERR("Opening of file is failed."); - free(eet_mesh); - free(eet_header); - eet_shutdown(); - return; - } - - _file_descriptor = _evas_canvas3d_eet_file_get(); - - eet_file = _evas_canvas3d_eet_file_new(); - - if (!eet_file) - { - free(eet_mesh); - free(eet_header); - eet_shutdown(); - return; - } - - eet_mesh->materials_count = 1; - eet_header->materials_count = 1; - eet_mesh->frames_count = 1; - eet_header->frames = 1; - eet_mesh->geometries_count = 1; - eet_header->geometries_count = 1; - eet_header->version = 1; - - _set_geometry_to_eet_file_from_mesh(pd, eet_mesh, eet_header, f); - _set_material_to_eet_file_from_mesh(eet_mesh, eet_header, f); - _set_frame_to_eet_file_from_mesh(eet_mesh); - - eet_file->mesh = eet_mesh; - eet_file->header = eet_header; - - eet_data_write(ef, - _file_descriptor, - EVAS_CANVAS3D_FILE_CACHE_FILE_ENTRY, - eet_file, - EINA_TRUE); - eet_close(ef); - - _evas_canvas3d_eet_file_free(eet_file); - - eet_shutdown(); -} diff --git a/src/modules/evas/model_savers/meson.build b/src/modules/evas/model_savers/meson.build deleted file mode 100644 index fd7ce398fb..0000000000 --- a/src/modules/evas/model_savers/meson.build +++ /dev/null @@ -1 +0,0 @@ -#all the loaders here are build statically, the build instructions are in src/lib/evas/meson.build diff --git a/src/modules/evas/model_savers/obj/evas_model_save_obj.c b/src/modules/evas/model_savers/obj/evas_model_save_obj.c deleted file mode 100644 index f8b5491b2c..0000000000 --- a/src/modules/evas/model_savers/obj/evas_model_save_obj.c +++ /dev/null @@ -1,241 +0,0 @@ -#include "evas_model_load_save_common.h" - -static unsigned short* -_init_obj_indices_data(Evas_Model_Load_Save_Header header) -{ - unsigned short *i_data; - int i = 0; - - if (header.existence_of_positions) i++; - if (header.existence_of_normals) i++; - if (header.existence_of_tex_coords) i++; - i_data = calloc(header.vertices_count * i, sizeof(unsigned short)); - - return i_data; -} - -static void -_vertex_data_free_cb(void *data) -{ - eina_stringshare_del(data); -} - -static void -_write_point(FILE *obj_file, - int num, - int num_of_point, - Evas_Model_Load_Save_Header header, - unsigned short *i_data) -{ - if (num_of_point == 0) - fprintf(obj_file, "f "); - - if (header.existence_of_normals) - { - if (header.existence_of_tex_coords) - fprintf(obj_file, "%hu/%hu/%hu ", i_data[num], - i_data[num + header.vertices_count], - i_data[num + 2 * header.vertices_count]); - else - fprintf(obj_file, "%hu//%hu ", i_data[num], - i_data[num + header.vertices_count]); - } - else - { - if (header.existence_of_tex_coords) - fprintf(obj_file, "%hu/%hu ", i_data[num], - i_data[num + header.vertices_count]); - else - fprintf(obj_file, "%hu ", i_data[num]); - } - - if (num_of_point == 2) - fprintf(obj_file, "\n"); -} - -static inline Eina_Bool -_write_obj_header(FILE *file, - const char *_mtl_file_name) -{ - time_t current_time; - char* c_time_string; - - current_time = time(NULL); - - if (current_time == ((time_t)-1)) - { - ERR("Failure to compute the current time."); - return EINA_FALSE; - } - - c_time_string = ctime(¤t_time); - - if (c_time_string == NULL) - { - ERR("Failure to convert the current time."); - return EINA_FALSE; - } - - fprintf(file, "# Evas_Canvas3D saver OBJ v0.03 \n"); - fprintf(file, "# Current time is %s \n", c_time_string); - fprintf(file, "mtllib %s \n\n", _mtl_file_name); - - return EINA_TRUE; -} - -static inline void -_write_obj_vertex_data(FILE *file, - Evas_Model_Load_Save_Header header, - Evas_Model_Load_Save_Data data, - unsigned short *i_data) -{ - int i, j; - int v = -1; - Eina_Stringshare *str, *cur_str, *cur_index; - unsigned short cur_hu; - - Eina_Hash *vb; -#define WRITE_OBJ_VERTEX_DATA(name, num, format) \ - if (header.existence_of_##name) \ - { \ - cur_hu = 0; \ - v++; \ - vb = eina_hash_string_superfast_new(_vertex_data_free_cb); \ - for (i = 0; i < header.vertices_count; i++) \ - { \ - str = eina_stringshare_printf(" "); \ - for (j = 0; j < num; j++) \ - str = eina_stringshare_printf("%s %f", str, \ - data.name[i * num + j]); \ - cur_index = eina_hash_find(vb, str); \ - if (!cur_index) \ - { \ - cur_hu++; \ - cur_str = eina_stringshare_printf("%hu", cur_hu); \ - eina_hash_add(vb, str, cur_str); \ - i_data[v * header.vertices_count + i] = cur_hu; \ - fprintf(file, "%s%s\n", format, str); \ - } \ - else sscanf(cur_index, "%hu", \ - i_data + v * header.vertices_count + i); \ - } \ - eina_hash_free(vb); \ - } - WRITE_OBJ_VERTEX_DATA(positions, 3, "v") - WRITE_OBJ_VERTEX_DATA(tex_coords, 2, "vt") - WRITE_OBJ_VERTEX_DATA(normals, 3, "vn") -#undef WRITE_OBJ_VERTEX_DATA -} - -static inline void -_write_obj_index_data(FILE *file, - Evas_Model_Load_Save_Header header, - Evas_Model_Load_Save_Data data, - unsigned short *i_data) -{ - int i; - int ic; - ic = header.indices_count ? header.indices_count : header.vertices_count; - for (i = 0; i < ic; i++) - _write_point(file, data.indices[i], i % 3, header, i_data); -} - -static void -_save_mesh(Evas_Canvas3D_Mesh_Data *pd, - const char *_obj_file_name, - const char *_mtl_file_name, - Evas_Canvas3D_Mesh_Frame *f) -{ - Evas_Model_Load_Save_Header header; - Evas_Model_Load_Save_Data data; - unsigned short *index_data; - - if (!evas_model_save_header_from_mesh(pd, f, &header)) return; - - index_data = _init_obj_indices_data(header); - if (index_data == NULL) - { - ERR("Allocation of index data is failed."); - return; - } - - evas_model_save_data_from_mesh(pd, f, header, &data); - - FILE * _obj_file = fopen(_obj_file_name, "w+"); - if (!_obj_file) - { - ERR("File open '%s' for save failed", _obj_file_name); - free(index_data); - return; - } - - if (!_write_obj_header(_obj_file, _mtl_file_name)) - { - fclose(_obj_file); - free(index_data); - return; - } - - _write_obj_vertex_data(_obj_file, header, data, index_data); - fprintf(_obj_file,"usemtl Material\n s off\n"); - _write_obj_index_data(_obj_file, header, data, index_data); - fclose(_obj_file); - free(index_data); - free(data.indices); -} - -static void -_save_material(Evas_Canvas3D_Mesh_Data *pd EINA_UNUSED, - const char *_mtl_file_name, - Evas_Canvas3D_Material_Data *mat) -{ - FILE * _mtl_file = fopen(_mtl_file_name, "w+"); - if (!_mtl_file) - { - ERR("File open '%s' for save failed", _mtl_file_name); - return; - } - fprintf(_mtl_file, "# Evas_Canvas3D saver OBJ v0.03 \n");//_mtl_file created in macro - fprintf(_mtl_file, "# Material Count: 1 \n\n"); - fprintf(_mtl_file, "newmtl Material \n"); - fprintf(_mtl_file, "Ns 1.000000 \n");//exp factor for specular highlight - fprintf(_mtl_file, "Ka %.6f %.6f %.6f \n", - (float)mat->attribs[EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT].color.r, - (float)mat->attribs[EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT].color.g, - (float)mat->attribs[EVAS_CANVAS3D_MATERIAL_ATTRIB_AMBIENT].color.b); - fprintf(_mtl_file, "Kd %.6f %.6f %.6f \n", - (float)mat->attribs[EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE].color.r, - (float)mat->attribs[EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE].color.g, - (float)mat->attribs[EVAS_CANVAS3D_MATERIAL_ATTRIB_DIFFUSE].color.b); - fprintf(_mtl_file, "Ks %.6f %.6f %.6f \n", - (float)mat->attribs[EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR].color.r, - (float)mat->attribs[EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR].color.g, - (float)mat->attribs[EVAS_CANVAS3D_MATERIAL_ATTRIB_SPECULAR].color.b); - fprintf(_mtl_file, "Ni 1.000000 \n");//optical density - fprintf(_mtl_file, "d 1.000000 \n");//a factor d of 1.0 is fully opaque material - fprintf(_mtl_file, "illum 2 \n");//illumination properties - - fclose(_mtl_file); -} - -void -evas_model_save_file_obj(const Evas_Canvas3D_Mesh *mesh, - const char *_obj_file_name, - Evas_Canvas3D_Mesh_Frame *f) -{ - int len; - char *_mtl_file_name, *_without_extention; - Evas_Canvas3D_Material_Data *mat; - - len = strlen(_obj_file_name); - _without_extention = alloca(len - 3); - _mtl_file_name = alloca(len + 1); - eina_strlcpy(_without_extention, _obj_file_name, len - 3); - eina_str_join(_mtl_file_name, len + 1, '.', _without_extention, "mtl"); - - Evas_Canvas3D_Mesh_Data *pd = efl_data_scope_get(mesh, EVAS_CANVAS3D_MESH_CLASS); - mat = efl_data_scope_get(f->material, EVAS_CANVAS3D_MATERIAL_CLASS); - - if (mat != NULL) _save_material(pd, _mtl_file_name, mat); - _save_mesh(pd, _obj_file_name, _mtl_file_name, f); -} diff --git a/src/modules/evas/model_savers/ply/evas_model_save_ply.c b/src/modules/evas/model_savers/ply/evas_model_save_ply.c deleted file mode 100644 index a805baaa05..0000000000 --- a/src/modules/evas/model_savers/ply/evas_model_save_ply.c +++ /dev/null @@ -1,91 +0,0 @@ -#include "evas_model_load_save_common.h" - -static inline void -_write_ply_header(FILE *file, Evas_Model_Load_Save_Header header) -{ - const char *pf = "property float", *puc = "property uchar"; - fprintf(file, "ply\n" \ - "format ascii 1.0\n" \ - "comment Created by EFL evas_canvas3d_mesh_saver_ply.c version 2 " \ - "(sub 0) - www.enlightenment.org, source file: ''\n"); - fprintf(file, "element vertex %d\n", header.vertices_count); - - if (header.existence_of_positions) - fprintf(file, "%s x\n%s y\n%s z\n", pf, pf, pf); - if (header.existence_of_normals) - fprintf(file, "%s nx\n%s ny\n%s nz\n", pf, pf, pf); - if (header.existence_of_tex_coords) - fprintf(file, "%s s\n%s t\n", pf, pf); - if (header.existence_of_colors) - fprintf(file, "%s red\n%s green\n%s blue\n", puc, puc, puc); - - fprintf(file, "element face %d\n" \ - "property list uchar uint vertex_indices\n" \ - "end_header\n", header.indices_count / 3); -} - -static inline void -_write_ply_vertex_data(FILE *file, - Evas_Model_Load_Save_Header header, - Evas_Model_Load_Save_Data data) -{ - int i, j; - for (i = 0; i < header.vertices_count; i++) - { -#define WRITE_PLY_VERTEX_DATA(name, num)\ - if (header.existence_of_##name)\ - for (j = 0; j < num; j++, data.name++)\ - fprintf(file, "%f ", data.name[0]); - WRITE_PLY_VERTEX_DATA(positions, 3) - WRITE_PLY_VERTEX_DATA(normals, 3) - WRITE_PLY_VERTEX_DATA(tex_coords, 2) -#undef WRITE_PLY_VERTEX_DATA - - if (header.existence_of_colors) - { - for (j = 0; j < 3; j++, data.colors++) - fprintf(file, "%.0f ", round(data.colors[0] * 255)); - data.colors++; - } - fprintf(file, "\n"); - } -} - -static inline void -_write_ply_index_data(FILE *file, - Evas_Model_Load_Save_Header header, - Evas_Model_Load_Save_Data data) -{ - int i, triangles_count = header.indices_count / 3; - for (i = 0; i < triangles_count; i++, data.indices += 3) - fprintf(file, "3 %d %d %d\n", data.indices[0], - data.indices[1], - data.indices[2]); -} - -void -evas_model_save_file_ply(const Evas_Canvas3D_Mesh *mesh, - const char *file, - Evas_Canvas3D_Mesh_Frame *f) -{ - Evas_Model_Load_Save_Header header; - Evas_Model_Load_Save_Data data; - - Evas_Canvas3D_Mesh_Data *pd = efl_data_scope_get(mesh, EVAS_CANVAS3D_MESH_CLASS); - if (!evas_model_save_header_from_mesh(pd, f, &header)) return; - evas_model_save_data_from_mesh(pd, f, header, &data); - - FILE *_ply_file = fopen(file, "w+"); - if (!_ply_file) - { - ERR("File open '%s' for save failed", file); - return; - } - - _write_ply_header(_ply_file, header); - _write_ply_vertex_data(_ply_file, header, data); - _write_ply_index_data(_ply_file, header, data); - - free(data.indices); - fclose(_ply_file); -} diff --git a/src/tests/evas/evas_suite.c b/src/tests/evas/evas_suite.c index eded3ae08f..523c10dc76 100644 --- a/src/tests/evas/evas_suite.c +++ b/src/tests/evas/evas_suite.c @@ -20,14 +20,9 @@ static const Efl_Test_Case etc[] = { { "Filters", evas_test_filters }, { "Images", evas_test_image_object }, { "Images", evas_test_image_object2 }, - { "Meshes", evas_test_mesh }, - { "Meshes", evas_test_mesh1 }, - { "Meshes", evas_test_mesh2 }, - { "Meshes", evas_test_mesh3 }, { "Masking", evas_test_mask }, { "Evas GL", evas_test_evasgl }, { "Object Smart", evas_test_object_smart }, - { "Matrix", evas_test_matrix }, { "Events", evas_test_events }, { "Efl Canvas Animation", efl_test_canvas_animation }, { NULL, NULL } diff --git a/src/tests/evas/evas_suite.h b/src/tests/evas/evas_suite.h index 90a7ac0860..ec106315b5 100644 --- a/src/tests/evas/evas_suite.h +++ b/src/tests/evas/evas_suite.h @@ -14,14 +14,9 @@ void evas_test_render_engines(TCase *tc); void evas_test_filters(TCase *tc); void evas_test_image_object(TCase *tc); void evas_test_image_object2(TCase *tc); -void evas_test_mesh(TCase *tc); -void evas_test_mesh1(TCase *tc); -void evas_test_mesh2(TCase *tc); -void evas_test_mesh3(TCase *tc); void evas_test_mask(TCase *tc); void evas_test_evasgl(TCase *tc); void evas_test_object_smart(TCase *tc); -void evas_test_matrix(TCase *tc); void evas_test_events(TCase *tc); void efl_test_canvas_animation(TCase *tc); diff --git a/src/tests/evas/evas_test_matrix.c b/src/tests/evas/evas_test_matrix.c deleted file mode 100644 index 0f0fb2e4bc..0000000000 --- a/src/tests/evas/evas_test_matrix.c +++ /dev/null @@ -1,42 +0,0 @@ -#ifdef HAVE_CONFIG_H -# include "config.h" -#endif - -#include -#include -#include -#include - -#include "../../lib/evas/include/evas_common_private.h" -#include "../../lib/evas/include/evas_private.h" - -#include "evas_suite.h" -#include "evas_tests_helpers.h" - -EFL_START_TEST(evas_matrix) -{ - Eina_Vector3 position; - Eina_Quaternion orientation; - Eina_Vector3 scale; - Eina_Matrix4 mat; - - eina_vector3_set(&position, 5.0, 3.0, 2.0); - eina_quaternion_set(&orientation, 30.0, 1.0, 0.0, 0.0); - eina_vector3_set(&scale, 1.0, 2.0, 1.0); - - evas_mat4_build(&mat, &position, &orientation, &scale); - fail_if((mat.xx != -1) || (mat.xy != 60) || - (mat.wx != 5) || (mat.wy != 3) || - (mat.wz != 2) || (mat.ww != 1)); - - evas_mat4_inverse_build(&mat, &position, &orientation, &scale); - fail_if((mat.xx - 0.99 < DBL_EPSILON) || (mat.xy - 0.0 < DBL_EPSILON) || - (mat.yx -0.0 < DBL_EPSILON) || (mat.yy -0.49 < DBL_EPSILON)); -} -EFL_END_TEST - -void evas_test_matrix(TCase *tc) -{ - (void) _setup_evas; - tcase_add_test(tc, evas_matrix); -} diff --git a/src/tests/evas/evas_test_mesh.c b/src/tests/evas/evas_test_mesh.c deleted file mode 100644 index 3bf3c3032d..0000000000 --- a/src/tests/evas/evas_test_mesh.c +++ /dev/null @@ -1,202 +0,0 @@ -#ifdef HAVE_CONFIG_H -# include "config.h" -#endif - -#include -#include - -#include "../../lib/evas/include/evas_common_private.h" -#include "../../lib/evas/include/evas_private.h" - -#include "evas_suite.h" -#include "evas_tests_helpers.h" - -#define TESTS_MESH_DIR TESTS_SRC_DIR"/meshes" -#define TESTS_OBJ_MESH_DIR TESTS_MESH_DIR"/obj" -#define TESTS_MD2_MESH_DIR TESTS_MESH_DIR"/md2" -#define TESTS_PLY_MESH_DIR TESTS_MESH_DIR"/ply" - -#define COMPARE_GEOMETRICS(a) \ - vb1 = &f1->vertices[a]; \ - vb2 = &f2->vertices[a]; \ - if ((a == EVAS_CANVAS3D_VERTEX_ATTRIB_POSITION) && \ - ((vb1->data == NULL) || (vb2->data == NULL))) \ - return 1; \ - if ((vb1->data != NULL) && (vb2->data != NULL)) \ - { \ - src1 = (float *)vb1->data; \ - src2 = (float *)vb2->data; \ - for (i = 0; i < pd1->vertex_count; i++) \ - { \ - if ((src1[0] != src2[0]) || (src1[1] != src2[1])) \ - return 1; \ - if (a != EVAS_CANVAS3D_VERTEX_ATTRIB_TEXCOORD) \ - if (src1[2] != src2[2]) \ - return 1; \ - src1 += f1->vertices[a].element_count; \ - src2 += f2->vertices[a].element_count; \ - } \ - } - -static Evas_Canvas3D_Mesh_Frame * -return_zero_frame(Evas_Canvas3D_Mesh_Data *pd) -{ - Eina_List *l; - Evas_Canvas3D_Mesh_Frame *f; - - if (!pd) return NULL; - EINA_LIST_FOREACH(pd->frames, l, f) - { - if (f->frame == 0) - return f; - } - - return NULL; -} - -static int _compare_meshes(Evas_Canvas3D_Mesh *mesh1, Evas_Canvas3D_Mesh *mesh2) -{ - Evas_Canvas3D_Mesh_Data *pd1, *pd2; - Evas_Canvas3D_Mesh_Frame *f1, *f2; - int i; - float *src1, *src2; - Evas_Canvas3D_Vertex_Buffer *vb1, *vb2; - - pd1 = efl_data_scope_get(mesh1, EVAS_CANVAS3D_MESH_CLASS); - f1 = return_zero_frame(pd1); - if ((pd1 == NULL) || (f1 == NULL)) - return 1; - - pd2 = efl_data_scope_get(mesh2, EVAS_CANVAS3D_MESH_CLASS); - f2 = return_zero_frame(pd2); - if ((pd2 == NULL) || (f2 == NULL)) - return 1; - - if ((pd1->vertex_count) != (pd2->vertex_count)) - return 1; - -#ifdef __clang__ -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wtautological-compare" -#endif - - COMPARE_GEOMETRICS(EVAS_CANVAS3D_VERTEX_ATTRIB_POSITION) - COMPARE_GEOMETRICS(EVAS_CANVAS3D_VERTEX_ATTRIB_NORMAL) - COMPARE_GEOMETRICS(EVAS_CANVAS3D_VERTEX_ATTRIB_TEXCOORD) - -#ifdef __clang__ -#pragma clang diagnostic pop -#endif - - return 0; -} - -static void -check_meshes_in_folder(Eina_Tmpstr *tmp, const char *folder, const char *loadext, const char *ext) -{ - char buffer[PATH_MAX]; - Evas *e = _setup_evas(); - Eo *mesh, *mesh2; - Eina_Iterator *it; - int res = 0; - const Eina_File_Direct_Info *file; - it = eina_file_direct_ls(folder); - EINA_ITERATOR_FOREACH(it, file) - { - int set_ok, save_ok; - Eina_File *f; - const Eina_File *f_get = NULL; - const char *filename = NULL; - const char *key = NULL; - if (file->path[file->name_start] == '.') continue; //some hidden git file or whatever - if (!eina_str_has_extension(file->path + file->name_start, loadext)) continue; //some other file - mesh = efl_add(EVAS_CANVAS3D_MESH_CLASS, e); - mesh2 = efl_add(EVAS_CANVAS3D_MESH_CLASS, e); - fail_if(mesh == NULL); - fail_if(mesh2 == NULL); - snprintf(buffer, PATH_MAX, "%s%s", tmp, ext); - set_ok = efl_file_simple_load(mesh, file->path, NULL); - fail_if(!set_ok); - save_ok = efl_file_save(mesh, buffer, NULL, NULL); - fail_if(!save_ok); - set_ok = efl_file_simple_load(mesh2, buffer, NULL); - fail_if(!set_ok); - efl_file_simple_get(mesh2, &filename, &key); - fail_if(!filename); - fail_if(!!key); - res = _compare_meshes(mesh, mesh2); - fail_if(res == 1); - f = eina_file_open(file->path, 0); - fail_if(!f); - set_ok = efl_file_simple_mmap_load(mesh, f, NULL); - efl_file_simple_mmap_get(mesh, &f_get, &key); - fail_if(!f_get); - fail_if(!!key); - eina_file_close(f); - save_ok = efl_file_save(mesh, buffer, NULL, NULL); - fail_if(!set_ok); - fail_if(!save_ok); - f = eina_file_open(buffer, 0); - fail_if(!f); - set_ok = efl_file_simple_mmap_load(mesh2, f, NULL); - eina_file_close(f); - fail_if(!set_ok); - res = _compare_meshes(mesh, mesh2); - fail_if(res == 1); - efl_del(mesh2); - efl_del(mesh); - unlink(buffer); - } - eina_iterator_free(it); - evas_free(e); -} -EFL_START_TEST(evas_object_mesh_loader_saver) -{ - Eina_Tmpstr *tmp; - char *file_mask = strdup("evas_test_mesh_XXXXXX"); - int tmpfd; - struct - { - const char *dir; - const char *loadfmt; - const char *savefmt; - } values[4] = - { - { TESTS_OBJ_MESH_DIR, ".obj", ".eet" }, - { TESTS_MD2_MESH_DIR, ".md2", ".eet" }, - { TESTS_PLY_MESH_DIR, ".ply", ".eet" }, - { TESTS_PLY_MESH_DIR, ".ply", ".ply" }, - }; - - /* create tmp file name, assume tmp.eet and tmp.ply also work */ - tmpfd = eina_file_mkstemp(file_mask, &tmp); - fail_if(tmpfd == -1); - fail_if(!!close(tmpfd)); - - check_meshes_in_folder(tmp, values[_i].dir, values[_i].loadfmt, values[_i].savefmt); - - unlink(tmp); - - free(file_mask); -} -EFL_END_TEST - -void evas_test_mesh(TCase *tc) -{ - tcase_add_loop_test(tc, evas_object_mesh_loader_saver, 0, 1); -} - -void evas_test_mesh1(TCase *tc) -{ - tcase_add_loop_test(tc, evas_object_mesh_loader_saver, 1, 2); -} - -void evas_test_mesh2(TCase *tc) -{ - tcase_add_loop_test(tc, evas_object_mesh_loader_saver, 2, 3); -} - -void evas_test_mesh3(TCase *tc) -{ - tcase_add_loop_test(tc, evas_object_mesh_loader_saver, 3, 4); -} diff --git a/src/tests/evas/meshes/md2/sonic.md2 b/src/tests/evas/meshes/md2/sonic.md2 deleted file mode 100644 index 228edb9fb7..0000000000 Binary files a/src/tests/evas/meshes/md2/sonic.md2 and /dev/null differ diff --git a/src/tests/evas/meshes/obj/man_mesh.obj b/src/tests/evas/meshes/obj/man_mesh.obj deleted file mode 100644 index 9e1f6d42ea..0000000000 --- a/src/tests/evas/meshes/obj/man_mesh.obj +++ /dev/null @@ -1,2493 +0,0 @@ -# 3ds Max Wavefront OBJ Exporter v0.97b - (c)2007 guruware -# File Created: 28.03.2014 15:19:59 - -mtllib man_mesh.mtl - -# -# object man_zbrush002 -# - -v 0.0000 47.2875 1.0942 -v 0.0000 50.0378 -9.4137 -v 0.0000 55.9506 -7.2501 -v 0.0000 24.1321 -0.3567 -v -4.6498 14.9457 -8.7856 -v -3.2526 0.0016 -8.5910 -v -1.7126 0.0249 -9.1957 -v -2.0203 14.6106 -8.2788 -v -4.0894 2.6330 -5.0313 -v -5.3088 13.9109 -3.7387 -v -1.5536 3.0595 -4.1735 -v -3.0616 3.5378 -3.4617 -v -1.7669 13.7549 -2.9187 -v -0.6260 0.0317 -8.3362 -v -0.9714 14.6448 -6.7064 -v -5.9192 37.6191 -4.5703 -v -5.4957 46.0431 -6.7324 -v -6.0295 46.1888 -3.9560 -v -4.6857 36.6641 -1.6164 -v -4.2985 47.0011 -0.0589 -v -7.2525 54.5245 -7.6150 -v -6.7758 50.2065 -7.5345 -v 0.0000 53.7381 -8.9868 -v -8.7478 53.7702 -7.3533 -v -6.6241 53.5298 -2.6537 -v -8.1843 53.1087 -3.3204 -v -9.8277 52.9897 -7.1885 -v -9.5084 52.4031 -3.6727 -v -15.6368 49.7151 -4.0157 -v -14.9891 50.5653 -7.2972 -v -2.3212 55.4710 -5.5708 -v -3.7738 51.0936 -1.0343 -v -7.8131 49.3427 -3.8869 -v -16.1362 50.0240 -7.5462 -v -14.8850 46.9747 -7.9460 -v -13.7795 47.4172 -7.7153 -v -14.9771 45.6892 -4.8210 -v -8.9272 49.1285 -4.1282 -v -8.7565 49.3211 -7.6329 -v -17.2082 49.4777 -7.5122 -v -16.8101 49.1399 -3.9288 -v -22.3487 46.9322 -2.8224 -v -22.5852 48.3277 -7.5944 -v -21.9364 43.0552 -3.7336 -v -16.1922 44.9604 -4.8771 -v -23.3377 47.2682 -6.9450 -v -22.1051 44.1196 -7.0740 -v -21.0612 44.1836 -7.6112 -v -15.8846 46.5205 -7.8558 -v -5.5985 31.8229 -1.4054 -v -7.4539 29.9108 -4.7820 -v -7.1743 32.8153 -5.1680 -v -4.9700 33.0828 -8.8713 -v -5.5953 29.7616 -8.4911 -v -6.8277 20.8590 -3.0514 -v -6.1947 19.5763 -3.4925 -v -5.4260 21.3413 -8.1311 -v -0.8999 21.4104 -8.3427 -v -0.8356 22.8539 -8.2030 -v -5.3178 22.9368 -8.0146 -v -1.8530 19.1642 -1.3853 -v -1.9574 20.6208 -1.2177 -v -5.2596 15.4904 -9.5994 -v -0.2944 16.1695 -7.9627 -v -1.2218 14.4504 -2.0041 -v -6.4987 14.6430 -4.0006 -v -1.4357 55.0574 -2.8845 -v -0.5960 60.2687 -0.2559 -v -0.1638 60.6728 0.4053 -v -0.2263 59.6318 0.7170 -v -0.6054 59.4536 0.0068 -v -0.7935 58.6118 -0.0224 -v -1.3407 61.3435 -1.0249 -v -2.2253 60.3012 -1.3344 -v -2.2095 61.2305 -1.5150 -v -0.4741 61.2949 -0.6078 -v -0.7854 61.5398 -0.0488 -v -0.1799 61.2747 0.0585 -v -1.7921 61.5632 -0.6482 -v -1.9014 62.8989 -1.2625 -v -2.5058 61.4136 -3.3339 -v -2.0718 58.0803 -1.8376 -v -2.3616 58.6526 -3.4054 -v -2.0435 58.6944 -1.7220 -v -1.4804 57.2878 -3.1674 -v -2.4848 60.6680 -2.0783 -v -0.8603 57.3392 -0.3453 -v -1.5075 57.9788 -4.8067 -v -0.5095 56.8628 -2.0812 -v -2.1892 21.9879 -1.4818 -v -6.5423 35.4806 -4.9028 -v -5.2832 35.9529 -7.8146 -v -3.7985 31.5525 -0.3863 -v -1.5687 1.9817 -0.6271 -v -3.7356 1.8169 0.2284 -v -1.8252 -0.0241 0.6012 -v -3.7693 -0.0090 1.1329 -v -5.3903 1.5682 -1.6703 -v -5.1768 -0.0250 -0.5983 -v -6.8240 22.1939 -3.2543 -v -0.8451 29.8910 -9.4915 -v -23.2655 44.2902 -3.6142 -v -23.3230 46.2280 -3.4252 -v -23.8813 46.2678 -5.9955 -v -23.2731 44.4791 -6.1705 -v -24.4461 44.0991 -3.0395 -v -24.9354 45.7429 -3.2888 -v -25.9827 45.6412 -5.9747 -v -25.7189 44.4079 -5.9891 -v -27.0580 43.7331 -1.4711 -v -26.7755 43.0070 -1.4929 -v -27.6379 42.3212 -1.9844 -v -27.1027 45.3202 -5.7351 -v -26.2463 42.9014 -5.3836 -v -26.7539 45.3983 -2.8586 -v -28.3806 42.3305 -3.0566 -v -28.6979 44.2382 -3.4775 -v -28.1009 44.1773 -2.4700 -v -28.5438 44.1780 -4.6514 -v -25.5872 43.5577 -2.0387 -v -26.1177 44.4879 -2.1987 -v -25.4919 42.8273 -2.3701 -v -3.4637 23.8728 -0.3567 -v -0.3403 31.4007 -9.9220 -v -0.4256 30.0691 -1.5036 -v -2.1628 35.7435 -9.5999 -v 0.0000 37.0098 0.5507 -v 0.0000 50.8802 0.1100 -v 0.0000 45.2358 -8.5163 -v 0.0000 59.3759 0.2727 -v 0.0000 62.7759 -0.3557 -v 0.0000 61.9130 -0.0480 -v 0.0000 56.8628 -2.0812 -v -2.8276 38.1718 -8.0883 -v -0.0000 31.5470 -9.9391 -v -28.2928 42.5431 -4.4468 -v 0.0000 38.2216 -8.0733 -v 4.6209 14.9457 -8.5161 -v 1.4564 14.6106 -8.6951 -v 1.7126 0.0249 -9.1957 -v 3.2526 0.0016 -8.5910 -v 4.0894 2.6330 -5.0313 -v 5.3088 13.9109 -3.7387 -v 1.5536 3.0595 -4.1735 -v 1.7669 13.7549 -2.9187 -v 3.0616 3.5378 -3.4617 -v 0.6260 0.0317 -8.3362 -v 1.2398 14.6448 -6.4653 -v 5.9192 37.6191 -4.5703 -v 6.0295 46.1888 -3.9560 -v 5.4957 46.0431 -6.7324 -v 2.8276 38.1718 -8.0883 -v 4.6857 36.6641 -1.6164 -v 4.2985 47.0011 -0.0589 -v 7.2525 54.5245 -7.6150 -v 6.7758 50.2065 -7.5345 -v 8.7478 53.7702 -7.3533 -v 8.1843 53.1087 -3.3204 -v 6.6241 53.5298 -2.6537 -v 9.8277 52.9897 -7.1885 -v 14.9891 50.5653 -7.2972 -v 15.6368 49.7151 -4.0157 -v 9.5084 52.4031 -3.6727 -v 2.3212 55.4710 -5.5708 -v 7.8131 49.3427 -3.8869 -v 3.7738 51.0936 -1.0343 -v 16.1362 50.0240 -7.5462 -v 13.7795 47.4172 -7.7153 -v 14.8850 46.9747 -7.9460 -v 8.7565 49.3211 -7.6329 -v 8.9272 49.1285 -4.1282 -v 14.9771 45.6892 -4.8210 -v 17.2082 49.4777 -7.5122 -v 22.5852 48.3277 -7.5944 -v 22.3487 46.9322 -2.8224 -v 16.8101 49.1399 -3.9288 -v 21.9364 43.0552 -3.7336 -v 16.1922 44.9604 -4.8771 -v 23.3377 47.2682 -6.9450 -v 21.0612 44.1836 -7.6112 -v 22.1051 44.1196 -7.0740 -v 15.8846 46.5205 -7.8558 -v 5.5985 31.8229 -1.4043 -v 7.1743 32.8153 -5.1673 -v 7.4539 29.9108 -4.7801 -v 4.9700 33.0828 -8.8719 -v 5.5953 29.7616 -8.4925 -v 6.8277 20.8590 -3.0448 -v 5.4260 21.3413 -8.1326 -v 6.1947 19.5763 -3.4786 -v 0.8999 21.4104 -8.3494 -v 5.3178 22.9368 -8.0162 -v 0.8356 22.8539 -8.2107 -v 1.9574 20.6208 -1.2115 -v 1.8530 19.1642 -1.3716 -v 0.1341 16.1695 -9.1747 -v 5.1172 15.4904 -9.6797 -v 1.7167 14.4504 -2.4592 -v 6.0692 14.6430 -3.7623 -v 0.0000 54.5221 -2.1876 -v 1.4357 55.0574 -2.8845 -v 0.5960 60.2687 -0.2559 -v 0.6054 59.4536 0.0068 -v 0.2263 59.6318 0.7170 -v 0.1638 60.6728 0.4053 -v 0.7935 58.6118 -0.0224 -v 0.0000 58.7353 0.2373 -v 1.3407 61.3435 -1.0249 -v 2.2095 61.2305 -1.5150 -v 2.2253 60.3012 -1.3344 -v 0.4741 61.2949 -0.6078 -v 0.1799 61.2747 0.0585 -v 0.7854 61.5398 -0.0488 -v 1.9014 62.8989 -1.2625 -v 1.7921 61.5632 -0.6482 -v 2.5058 61.4136 -3.3339 -v 2.0718 58.0803 -1.8376 -v 2.0435 58.6944 -1.7220 -v 2.3616 58.6526 -3.4054 -v 1.4804 57.2878 -3.1674 -v 2.4848 60.6680 -2.0783 -v 0.8603 57.3392 -0.3453 -v 0.0000 57.3204 0.1903 -v 1.5075 57.9788 -4.8067 -v 0.5095 56.8628 -2.0812 -v 2.1892 21.9879 -1.4837 -v 6.5423 35.4806 -4.9028 -v 5.2832 35.9529 -7.8146 -v 3.7985 31.5525 -0.3889 -v 3.7356 1.8169 0.2284 -v 1.5687 1.9817 -0.6271 -v 1.8252 -0.0241 0.6012 -v 3.7693 -0.0090 1.1329 -v 5.1768 -0.0250 -0.5983 -v 5.3903 1.5682 -1.6703 -v 6.8240 22.1939 -3.2515 -v 0.8451 29.8910 -9.4989 -v 23.3230 46.2280 -3.4252 -v 23.2655 44.2902 -3.6142 -v 23.2731 44.4791 -6.1705 -v 23.8813 46.2678 -5.9955 -v 24.9354 45.7429 -3.2888 -v 24.4461 44.0991 -3.0395 -v 25.7189 44.4079 -5.9891 -v 25.9827 45.6412 -5.9747 -v 0.0000 31.5525 0.1285 -v 27.0580 43.7331 -1.4711 -v 28.1009 44.1773 -2.4700 -v 27.6379 42.3212 -1.9844 -v 26.7755 43.0070 -1.4929 -v 26.2463 42.9014 -5.3836 -v 27.1027 45.3202 -5.7351 -v 26.7539 45.3983 -2.8586 -v 28.3806 42.3305 -3.0566 -v 28.6979 44.2382 -3.4775 -v 28.2928 42.5431 -4.4468 -v 28.5438 44.1780 -4.6514 -v 26.1177 44.4879 -2.1987 -v 25.5872 43.5577 -2.0387 -v 25.4919 42.8273 -2.3701 -v 3.4637 23.8728 -0.3567 -v 0.3403 31.4007 -9.9280 -v 0.4256 30.0691 -1.5075 -v 2.1628 35.7435 -9.5999 -v -0.0000 30.2154 -1.5220 -v 0.0000 35.7952 -9.5999 -v 0.7069 62.5386 -0.2897 -v 1.8382 62.2558 -0.8026 -v 1.9014 63.5323 -1.2476 -v 0.6723 63.4859 -0.4218 -v 3.1942 60.5972 -3.4604 -v 2.7587 63.5323 -3.3488 -v 3.0106 63.5323 -5.8687 -v 2.1305 53.6286 -1.3592 -v 4.0888 54.8798 -3.4604 -v 4.3407 55.2343 -6.2104 -v 2.3368 60.5972 -1.0725 -v 3.4460 60.5972 -5.9803 -v 1.9321 63.5323 -7.3112 -v 2.9903 54.4963 -8.2460 -v 2.5172 60.5972 -7.8792 -v 1.1714 65.0579 -2.2055 -v 1.7956 65.0579 -4.8061 -v 0.0000 63.5323 -8.1745 -v 0.0000 62.5386 -0.1403 -v 1.1873 53.6286 -3.1647 -v 1.3937 60.5972 -3.1647 -v -0.7069 62.5386 -0.2897 -v -1.8382 62.2558 -0.8026 -v -1.9014 63.5323 -1.2476 -v -0.6723 63.4859 -0.4218 -v -3.1942 60.5972 -3.4604 -v -2.7587 63.5323 -3.3488 -v -3.4460 60.5972 -5.9803 -v -3.0106 63.5323 -5.8687 -v -2.3368 60.5972 -1.0725 -v -2.1305 53.6286 -1.3592 -v -4.0888 54.8798 -3.4604 -v -4.3407 55.2343 -6.2104 -v -2.5172 60.5972 -7.8792 -v -1.9321 63.5323 -7.3112 -v -2.9903 54.4963 -8.2460 -v 0.0000 60.5972 -8.8128 -v 0.0000 54.0508 -8.7827 -v -1.1714 65.0579 -2.2055 -v -1.7956 65.0579 -4.8061 -v 0.0000 65.0579 -6.4214 -v 0.0000 65.5609 -4.0584 -v -1.3937 60.5972 -3.1647 -v -1.1873 53.6286 -3.1647 -v 5.7780 35.9947 -1.7731 -v 5.1150 35.7826 -2.0517 -v 5.7434 36.0196 -3.9959 -v 6.4636 36.2234 -3.7049 -v 8.5039 27.4359 -5.6703 -v 7.4519 27.2103 -3.5044 -v 6.5979 27.3323 -3.6902 -v 7.6499 27.5580 -5.8561 -v 8.7043 24.9057 -6.0365 -v 7.9848 25.1277 -6.1774 -v 2.7647 62.4556 -4.1284 -v 2.9040 62.4556 -5.7005 -v 4.8719 55.7996 -6.7654 -v 4.7366 55.7996 -5.1539 -v 4.0724 55.7996 -5.0402 -v 4.2078 55.7996 -6.6517 -v 4.5130 55.0077 -5.9098 -v 4.2911 55.0989 -5.8718 -# 328 vertices - -vn -0.0217 0.0232 -0.9995 -vn -0.0217 0.0232 -0.9995 -vn -0.0217 0.0232 -0.9995 -vn -0.0217 0.0232 -0.9995 -vn -0.9838 -0.0917 -0.1540 -vn -0.9838 -0.0917 -0.1540 -vn -0.9838 -0.0917 -0.1540 -vn -0.9838 -0.0917 -0.1540 -vn 0.3989 -0.0990 0.9116 -vn 0.3989 -0.0990 0.9116 -vn 0.3989 -0.0990 0.9116 -vn 0.9772 -0.0026 0.2125 -vn 0.9772 -0.0026 0.2125 -vn 0.9772 -0.0026 0.2125 -vn 0.9772 -0.0026 0.2125 -vn -0.8610 -0.0854 -0.5014 -vn -0.8610 -0.0854 -0.5014 -vn -0.8610 -0.0854 -0.5014 -vn -0.8610 -0.0854 -0.5014 -vn -0.9175 -0.0321 0.3964 -vn -0.9175 -0.0321 0.3964 -vn -0.9175 -0.0321 0.3964 -vn -0.9175 -0.0321 0.3964 -vn -0.2238 0.0288 -0.9742 -vn -0.2238 0.0288 -0.9742 -vn -0.2238 0.0288 -0.9742 -vn -0.2238 0.0288 -0.9742 -vn -0.3754 0.9014 0.2157 -vn -0.3754 0.9014 0.2157 -vn -0.3754 0.9014 0.2157 -vn -0.3754 0.9014 0.2157 -vn -0.4122 0.8952 0.1693 -vn -0.4122 0.8952 0.1693 -vn -0.4122 0.8952 0.1693 -vn -0.4122 0.8952 0.1693 -vn -0.3397 -0.0890 0.9363 -vn -0.3397 -0.0890 0.9363 -vn -0.3397 -0.0890 0.9363 -vn -0.3397 -0.0890 0.9363 -vn -0.1393 0.8417 -0.5216 -vn -0.1393 0.8417 -0.5216 -vn -0.1393 0.8417 -0.5216 -vn -0.1393 0.8417 -0.5216 -vn -0.5100 -0.1901 0.8389 -vn -0.5100 -0.1901 0.8389 -vn -0.5100 -0.1901 0.8389 -vn -0.5100 -0.1901 0.8389 -vn -0.9099 0.2029 0.3618 -vn -0.9099 0.2029 0.3618 -vn -0.9099 0.2029 0.3618 -vn -0.2668 0.2552 0.9293 -vn -0.2668 0.2552 0.9293 -vn -0.2668 0.2552 0.9293 -vn -0.2668 0.2552 0.9293 -vn 0.1291 0.1799 -0.9752 -vn 0.1291 0.1799 -0.9752 -vn 0.1291 0.1799 -0.9752 -vn 0.1291 0.1799 -0.9752 -vn 0.4379 -0.8826 -0.1713 -vn 0.4379 -0.8826 -0.1713 -vn 0.4379 -0.8826 -0.1713 -vn 0.4379 -0.8826 -0.1713 -vn -0.2686 0.9389 0.2152 -vn -0.2686 0.9389 0.2152 -vn -0.2686 0.9389 0.2152 -vn -0.2686 0.9389 0.2152 -vn 0.2569 -0.1860 0.9484 -vn 0.2569 -0.1860 0.9484 -vn 0.2569 -0.1860 0.9484 -vn 0.2569 -0.1860 0.9484 -vn -0.4719 -0.1610 -0.8668 -vn -0.4719 -0.1610 -0.8668 -vn -0.4719 -0.1610 -0.8668 -vn -0.4719 -0.1610 -0.8668 -vn 0.3121 -0.9015 -0.2997 -vn 0.3121 -0.9015 -0.2997 -vn 0.3121 -0.9015 -0.2997 -vn 0.3121 -0.9015 -0.2997 -vn -0.8992 0.1416 0.4139 -vn -0.8992 0.1416 0.4139 -vn -0.8992 0.1416 0.4139 -vn -0.8753 0.0683 -0.4787 -vn -0.8753 0.0683 -0.4787 -vn -0.8753 0.0683 -0.4787 -vn -0.8753 0.0683 -0.4787 -vn -0.8956 -0.3457 -0.2800 -vn -0.8956 -0.3457 -0.2800 -vn -0.8956 -0.3457 -0.2800 -vn -0.0441 0.0864 -0.9953 -vn -0.0441 0.0864 -0.9953 -vn -0.0441 0.0864 -0.9953 -vn -0.0441 0.0864 -0.9953 -vn 0.9869 0.0532 0.1524 -vn 0.9869 0.0532 0.1524 -vn 0.9869 0.0532 0.1524 -vn -0.3931 -0.2991 0.8695 -vn -0.3931 -0.2991 0.8695 -vn -0.3931 -0.2991 0.8695 -vn -0.3931 -0.2991 0.8695 -vn 0.1394 0.1063 -0.9845 -vn 0.1394 0.1063 -0.9845 -vn 0.1394 0.1063 -0.9845 -vn 0.1394 0.1063 -0.9845 -vn 0.9770 0.1171 0.1782 -vn 0.9770 0.1171 0.1782 -vn 0.9770 0.1171 0.1782 -vn 0.9770 0.1171 0.1782 -vn -0.3960 -0.1198 0.9104 -vn -0.3960 -0.1198 0.9104 -vn -0.3960 -0.1198 0.9104 -vn -0.3960 -0.1198 0.9104 -vn -0.9824 0.0457 -0.1810 -vn -0.9824 0.0457 -0.1810 -vn -0.9824 0.0457 -0.1810 -vn -0.9824 0.0457 -0.1810 -vn -0.8812 -0.3950 -0.2597 -vn -0.8812 -0.3950 -0.2597 -vn -0.8812 -0.3950 -0.2597 -vn -0.8812 -0.3950 -0.2597 -vn 0.3416 -0.9364 -0.0806 -vn 0.3416 -0.9364 -0.0806 -vn 0.3416 -0.9364 -0.0806 -vn 0.3416 -0.9364 -0.0806 -vn -0.2950 -0.2184 -0.9302 -vn -0.2950 -0.2184 -0.9302 -vn -0.2950 -0.2184 -0.9302 -vn -0.2950 -0.2184 -0.9302 -vn -0.2179 0.5180 0.8271 -vn -0.2179 0.5180 0.8271 -vn -0.2179 0.5180 0.8271 -vn -0.2179 0.5180 0.8271 -vn -0.8781 0.1721 0.4464 -vn -0.8781 0.1721 0.4464 -vn -0.8781 0.1721 0.4464 -vn -0.8781 0.1721 0.4464 -vn -0.3519 0.0039 0.9360 -vn -0.3519 0.0039 0.9360 -vn -0.3519 0.0039 0.9360 -vn -0.3519 0.0039 0.9360 -vn -0.5009 0.1733 0.8480 -vn -0.5009 0.1733 0.8480 -vn -0.5009 0.1733 0.8480 -vn -0.4195 -0.8939 0.1582 -vn -0.4195 -0.8939 0.1582 -vn -0.4195 -0.8939 0.1582 -vn -0.8797 0.2347 0.4135 -vn -0.8797 0.2347 0.4135 -vn -0.8797 0.2347 0.4135 -vn -0.8797 0.2347 0.4135 -vn -0.4054 0.4008 0.8216 -vn -0.4054 0.4008 0.8216 -vn -0.4054 0.4008 0.8216 -vn -0.4054 0.4008 0.8216 -vn -0.9589 0.1397 0.2470 -vn -0.9589 0.1397 0.2470 -vn -0.9589 0.1397 0.2470 -vn -0.9589 0.1397 0.2470 -vn -0.9826 0.0104 0.1854 -vn -0.9826 0.0104 0.1854 -vn -0.9826 0.0104 0.1854 -vn -0.8356 -0.5474 -0.0454 -vn -0.8356 -0.5474 -0.0454 -vn -0.8356 -0.5474 -0.0454 -vn -0.9624 -0.1782 0.2052 -vn -0.9624 -0.1782 0.2052 -vn -0.9624 -0.1782 0.2052 -vn -0.9624 -0.1782 0.2052 -vn -0.5693 0.1809 0.8020 -vn -0.5693 0.1809 0.8020 -vn -0.5693 0.1809 0.8020 -vn -0.5693 0.1809 0.8020 -vn -0.4248 -0.1131 0.8982 -vn -0.4248 -0.1131 0.8982 -vn -0.4248 -0.1131 0.8982 -vn -0.4248 -0.1131 0.8982 -vn -0.8013 -0.5559 -0.2211 -vn -0.8013 -0.5559 -0.2211 -vn -0.8013 -0.5559 -0.2211 -vn -0.6057 -0.0427 0.7945 -vn -0.6057 -0.0427 0.7945 -vn -0.6057 -0.0427 0.7945 -vn -0.6057 -0.0427 0.7945 -vn -0.9625 0.1322 0.2368 -vn -0.9625 0.1322 0.2368 -vn -0.9625 0.1322 0.2368 -vn -0.9625 0.1322 0.2368 -vn 0.3299 -0.1772 -0.9272 -vn 0.3299 -0.1772 -0.9272 -vn 0.3299 -0.1772 -0.9272 -vn 0.9234 -0.3825 0.0334 -vn 0.9234 -0.3825 0.0334 -vn 0.9234 -0.3825 0.0334 -vn -0.2812 -0.5012 0.8184 -vn -0.2812 -0.5012 0.8184 -vn -0.2812 -0.5012 0.8184 -vn -0.2812 -0.5012 0.8184 -vn -0.4657 -0.8535 -0.2339 -vn -0.4657 -0.8535 -0.2339 -vn -0.4657 -0.8535 -0.2339 -vn -0.4657 -0.8535 -0.2339 -vn 0.9816 0.0664 0.1789 -vn 0.9816 0.0664 0.1789 -vn 0.9816 0.0664 0.1789 -vn 0.9816 0.0664 0.1789 -vn -0.8820 0.1569 -0.4443 -vn -0.8820 0.1569 -0.4443 -vn -0.8820 0.1569 -0.4443 -vn -0.8820 0.1569 -0.4443 -vn -0.8922 0.1699 0.4185 -vn -0.8922 0.1699 0.4185 -vn -0.8922 0.1699 0.4185 -vn -0.4741 0.1274 0.8712 -vn -0.4741 0.1274 0.8712 -vn -0.4741 0.1274 0.8712 -vn -0.9265 0.0869 0.3661 -vn -0.9265 0.0869 0.3661 -vn -0.9265 0.0869 0.3661 -vn -0.1743 -0.1645 0.9709 -vn -0.1743 -0.1645 0.9709 -vn -0.1743 -0.1645 0.9709 -vn -0.1743 -0.1645 0.9709 -vn -0.5265 0.8267 0.1983 -vn -0.5265 0.8267 0.1983 -vn -0.5265 0.8267 0.1983 -vn -0.5265 0.8267 0.1983 -vn -0.1549 -0.0355 -0.9873 -vn -0.1549 -0.0355 -0.9873 -vn -0.1549 -0.0355 -0.9873 -vn 0.0017 -0.1699 0.9855 -vn 0.0017 -0.1699 0.9855 -vn 0.0017 -0.1699 0.9855 -vn 0.0017 -0.1699 0.9855 -vn -0.2158 0.8144 0.5387 -vn -0.2158 0.8144 0.5387 -vn -0.2158 0.8144 0.5387 -vn -0.2158 0.8144 0.5387 -vn -0.2761 0.9321 0.2345 -vn -0.2761 0.9321 0.2345 -vn -0.2761 0.9321 0.2345 -vn -0.9428 0.2795 0.1817 -vn -0.9428 0.2795 0.1817 -vn -0.9428 0.2795 0.1817 -vn -0.9986 -0.0518 -0.0141 -vn -0.9986 -0.0518 -0.0141 -vn -0.9986 -0.0518 -0.0141 -vn -0.1080 -0.9096 0.4012 -vn -0.1080 -0.9096 0.4012 -vn -0.1080 -0.9096 0.4012 -vn 0.2345 0.8990 0.3700 -vn 0.2345 0.8990 0.3700 -vn 0.2345 0.8990 0.3700 -vn 0.2345 0.8990 0.3700 -vn 0.9921 0.0722 0.1030 -vn 0.9921 0.0722 0.1030 -vn 0.9921 0.0722 0.1030 -vn 0.9921 0.0722 0.1030 -vn -0.0022 -1.0000 -0.0050 -vn -0.0022 -1.0000 -0.0050 -vn -0.0022 -1.0000 -0.0050 -vn -0.0022 -1.0000 -0.0050 -vn 0.7487 0.0742 -0.6587 -vn 0.7487 0.0742 -0.6587 -vn 0.7487 0.0742 -0.6587 -vn 0.7487 0.0742 -0.6587 -vn 0.2703 0.4526 0.8498 -vn 0.2703 0.4526 0.8498 -vn 0.2703 0.4526 0.8498 -vn 0.2703 0.4526 0.8498 -vn -0.9574 -0.0737 -0.2791 -vn -0.9574 -0.0737 -0.2791 -vn -0.9574 -0.0737 -0.2791 -vn -0.9574 -0.0737 -0.2791 -vn -0.7381 0.3081 0.6002 -vn -0.7381 0.3081 0.6002 -vn -0.7381 0.3081 0.6002 -vn -0.7381 0.3081 0.6002 -vn -0.5607 0.8117 0.1637 -vn -0.5607 0.8117 0.1637 -vn -0.5607 0.8117 0.1637 -vn -0.5607 0.8117 0.1637 -vn -0.4525 -0.0743 0.8887 -vn -0.4525 -0.0743 0.8887 -vn -0.4525 -0.0743 0.8887 -vn -0.4525 -0.0743 0.8887 -vn 0.0015 -0.8305 -0.5570 -vn 0.0015 -0.8305 -0.5570 -vn 0.0015 -0.8305 -0.5570 -vn 0.6496 -0.6341 -0.4195 -vn 0.6496 -0.6341 -0.4195 -vn 0.6496 -0.6341 -0.4195 -vn -0.9596 0.0284 -0.2800 -vn -0.9596 0.0284 -0.2800 -vn -0.9596 0.0284 -0.2800 -vn -0.9596 0.0284 -0.2800 -vn -0.1260 -0.1279 -0.9838 -vn -0.1260 -0.1279 -0.9838 -vn -0.1260 -0.1279 -0.9838 -vn -0.1260 -0.1279 -0.9838 -vn -0.3463 0.1313 0.9289 -vn -0.3463 0.1313 0.9289 -vn -0.3463 0.1313 0.9289 -vn -0.3463 0.1313 0.9289 -vn -0.2764 -0.8870 0.3700 -vn -0.2764 -0.8870 0.3700 -vn -0.2764 -0.8870 0.3700 -vn -0.2451 -0.1993 0.9488 -vn -0.2451 -0.1993 0.9488 -vn -0.2451 -0.1993 0.9488 -vn -0.2451 -0.1993 0.9488 -vn -0.6807 -0.2106 -0.7016 -vn -0.6807 -0.2106 -0.7016 -vn -0.6807 -0.2106 -0.7016 -vn -0.6807 -0.2106 -0.7016 -vn -0.7106 0.6739 0.2021 -vn -0.7106 0.6739 0.2021 -vn -0.7106 0.6739 0.2021 -vn -0.7106 0.6739 0.2021 -vn -0.5757 -0.8031 -0.1535 -vn -0.5757 -0.8031 -0.1535 -vn -0.5757 -0.8031 -0.1535 -vn -0.5757 -0.8031 -0.1535 -vn 0.2345 0.0522 0.9707 -vn 0.2345 0.0522 0.9707 -vn 0.2345 0.0522 0.9707 -vn 0.2345 0.0522 0.9707 -vn -0.0517 0.0476 -0.9975 -vn -0.0517 0.0476 -0.9975 -vn -0.0517 0.0476 -0.9975 -vn -0.0517 0.0476 -0.9975 -vn -0.2831 0.9562 0.0752 -vn -0.2831 0.9562 0.0752 -vn -0.2831 0.9562 0.0752 -vn -0.2831 0.9562 0.0752 -vn 0.0507 -0.9935 -0.1016 -vn 0.0507 -0.9935 -0.1016 -vn 0.0507 -0.9935 -0.1016 -vn 0.0507 -0.9935 -0.1016 -vn -0.3028 0.0473 0.9519 -vn -0.3028 0.0473 0.9519 -vn -0.3028 0.0473 0.9519 -vn -0.3028 0.0473 0.9519 -vn -0.6130 -0.0352 0.7893 -vn -0.6130 -0.0352 0.7893 -vn -0.6130 -0.0352 0.7893 -vn -0.6130 -0.0352 0.7893 -vn -0.2884 -0.1753 -0.9413 -vn -0.2884 -0.1753 -0.9413 -vn -0.2884 -0.1753 -0.9413 -vn -0.2884 -0.1753 -0.9413 -vn -0.2159 0.9761 0.0226 -vn -0.2159 0.9761 0.0226 -vn -0.2159 0.9761 0.0226 -vn -0.2159 0.9761 0.0226 -vn 0.8065 -0.4408 -0.3941 -vn 0.8065 -0.4408 -0.3941 -vn 0.8065 -0.4408 -0.3941 -vn -0.8405 -0.0442 0.5400 -vn -0.8405 -0.0442 0.5400 -vn -0.8405 -0.0442 0.5400 -vn -0.8405 -0.0442 0.5400 -vn -0.9791 -0.1752 -0.1028 -vn -0.9791 -0.1752 -0.1028 -vn -0.9791 -0.1752 -0.1028 -vn -0.9791 -0.1752 -0.1028 -vn -0.5602 0.7378 0.3766 -vn -0.5602 0.7378 0.3766 -vn -0.5602 0.7378 0.3766 -vn 0.4841 0.3212 0.8139 -vn 0.4841 0.3212 0.8139 -vn 0.4841 0.3212 0.8139 -vn 0.4841 0.3212 0.8139 -vn 0.7657 -0.6427 -0.0248 -vn 0.7657 -0.6427 -0.0248 -vn 0.7657 -0.6427 -0.0248 -vn 0.7657 -0.6427 -0.0248 -vn 0.0687 0.6166 0.7843 -vn 0.0687 0.6166 0.7843 -vn 0.0687 0.6166 0.7843 -vn -0.0696 -0.0316 0.9971 -vn -0.0696 -0.0316 0.9971 -vn -0.0696 -0.0316 0.9971 -vn -0.0696 -0.0316 0.9971 -vn -0.7898 -0.2268 0.5698 -vn -0.7898 -0.2268 0.5698 -vn -0.7898 -0.2268 0.5698 -vn -0.8001 -0.0972 0.5919 -vn -0.8001 -0.0972 0.5919 -vn -0.8001 -0.0972 0.5919 -vn -0.8001 -0.0972 0.5919 -vn -0.5940 -0.7913 0.1450 -vn -0.5940 -0.7913 0.1450 -vn -0.5940 -0.7913 0.1450 -vn -0.5940 -0.7913 0.1450 -vn -0.0906 0.1887 0.9778 -vn -0.0906 0.1887 0.9778 -vn -0.0906 0.1887 0.9778 -vn -0.0984 0.0806 -0.9919 -vn -0.0984 0.0806 -0.9919 -vn -0.0984 0.0806 -0.9919 -vn -0.0984 0.0806 -0.9919 -vn -0.4368 0.8892 0.1359 -vn -0.4368 0.8892 0.1359 -vn -0.4368 0.8892 0.1359 -vn -0.4368 0.8892 0.1359 -vn 0.4359 -0.8263 -0.3567 -vn 0.4359 -0.8263 -0.3567 -vn 0.4359 -0.8263 -0.3567 -vn 0.4359 -0.8263 -0.3567 -vn 0.1164 -0.1902 0.9748 -vn 0.1164 -0.1902 0.9748 -vn 0.1164 -0.1902 0.9748 -vn 0.1164 -0.1902 0.9748 -vn -0.0304 0.1155 -0.9928 -vn -0.0304 0.1155 -0.9928 -vn -0.0304 0.1155 -0.9928 -vn -0.0304 0.1155 -0.9928 -vn -0.4473 0.8833 0.1406 -vn -0.4473 0.8833 0.1406 -vn -0.4473 0.8833 0.1406 -vn 0.4096 -0.8479 -0.3367 -vn 0.4096 -0.8479 -0.3367 -vn 0.4096 -0.8479 -0.3367 -vn 0.7771 -0.6292 0.0154 -vn 0.7771 -0.6292 0.0154 -vn 0.7771 -0.6292 0.0154 -vn 0.3745 0.2581 0.8906 -vn 0.3745 0.2581 0.8906 -vn 0.3745 0.2581 0.8906 -vn 0.3745 0.2581 0.8906 -vn 0.3866 -0.6109 0.6909 -vn 0.3866 -0.6109 0.6909 -vn 0.3866 -0.6109 0.6909 -vn 0.3866 -0.6109 0.6909 -vn -0.2026 0.7986 0.5667 -vn -0.2026 0.7986 0.5667 -vn -0.2026 0.7986 0.5667 -vn -0.3472 -0.1729 0.9217 -vn -0.3472 -0.1729 0.9217 -vn -0.3472 -0.1729 0.9217 -vn -0.0557 0.0627 -0.9965 -vn -0.0557 0.0627 -0.9965 -vn -0.0557 0.0627 -0.9965 -vn -0.0557 0.0627 -0.9965 -vn -0.5625 0.8268 -0.0012 -vn -0.5625 0.8268 -0.0012 -vn -0.5625 0.8268 -0.0012 -vn -0.5625 0.8268 -0.0012 -vn 0.1065 -0.9839 -0.1437 -vn 0.1065 -0.9839 -0.1437 -vn 0.1065 -0.9839 -0.1437 -vn -0.1926 0.4841 0.8535 -vn -0.1926 0.4841 0.8535 -vn -0.1926 0.4841 0.8535 -vn 0.0135 -0.9999 -0.0004 -vn 0.0135 -0.9999 -0.0004 -vn 0.0135 -0.9999 -0.0004 -vn 0.0135 -0.9999 -0.0004 -vn -0.1584 0.3315 0.9300 -vn -0.1584 0.3315 0.9300 -vn -0.1584 0.3315 0.9300 -vn 0.9439 -0.3276 -0.0423 -vn 0.9439 -0.3276 -0.0423 -vn 0.9439 -0.3276 -0.0423 -vn 0.0000 -0.0454 0.9990 -vn 0.0000 -0.0454 0.9990 -vn 0.0000 -0.0454 0.9990 -vn -0.0985 -0.9710 0.2177 -vn -0.0985 -0.9710 0.2177 -vn -0.0985 -0.9710 0.2177 -vn -0.0985 -0.9710 0.2177 -vn -0.8813 0.0215 0.4721 -vn -0.8813 0.0215 0.4721 -vn -0.8813 0.0215 0.4721 -vn -0.9212 -0.1090 -0.3736 -vn -0.9212 -0.1090 -0.3736 -vn -0.9212 -0.1090 -0.3736 -vn -0.9212 -0.1090 -0.3736 -vn -0.4028 -0.1467 0.9035 -vn -0.4028 -0.1467 0.9035 -vn -0.4028 -0.1467 0.9035 -vn -0.4028 -0.1467 0.9035 -vn -0.2295 -0.1086 -0.9672 -vn -0.2295 -0.1086 -0.9672 -vn -0.2295 -0.1086 -0.9672 -vn -0.2295 -0.1086 -0.9672 -vn 0.9922 -0.1101 0.0579 -vn 0.9922 -0.1101 0.0579 -vn 0.9922 -0.1101 0.0579 -vn 0.9922 -0.1101 0.0579 -vn -0.3243 0.0841 -0.9422 -vn -0.3243 0.0841 -0.9422 -vn -0.3243 0.0841 -0.9422 -vn -0.3243 0.0841 -0.9422 -vn -0.8896 0.3112 -0.3342 -vn -0.8896 0.3112 -0.3342 -vn -0.8896 0.3112 -0.3342 -vn -0.8826 0.1867 0.4314 -vn -0.8826 0.1867 0.4314 -vn -0.8826 0.1867 0.4314 -vn -0.8826 0.1867 0.4314 -vn -0.4908 0.2558 0.8329 -vn -0.4908 0.2558 0.8329 -vn -0.4908 0.2558 0.8329 -vn -0.4908 0.2558 0.8329 -vn -0.1991 -0.9326 0.3009 -vn -0.1991 -0.9326 0.3009 -vn -0.1991 -0.9326 0.3009 -vn -0.1991 -0.9326 0.3009 -vn -0.2058 0.0231 -0.9783 -vn -0.2058 0.0231 -0.9783 -vn -0.2058 0.0231 -0.9783 -vn -0.2058 0.0231 -0.9783 -vn 0.2897 -0.0607 0.9552 -vn 0.2897 -0.0607 0.9552 -vn 0.2897 -0.0607 0.9552 -vn 0.3472 -0.9265 -0.1448 -vn 0.3472 -0.9265 -0.1448 -vn 0.3472 -0.9265 -0.1448 -vn 0.3472 -0.9265 -0.1448 -vn -0.0284 0.0393 -0.9988 -vn -0.0284 0.0393 -0.9988 -vn -0.0284 0.0393 -0.9988 -vn -0.0284 0.0393 -0.9988 -vn -0.7231 0.6525 0.2267 -vn -0.7231 0.6525 0.2267 -vn -0.7231 0.6525 0.2267 -vn -0.0951 -0.9499 -0.2979 -vn -0.0951 -0.9499 -0.2979 -vn -0.0951 -0.9499 -0.2979 -vn 0.0000 -0.8666 0.4991 -vn 0.0000 -0.8666 0.4991 -vn 0.0000 -0.8666 0.4991 -vn 0.0000 0.2868 0.9580 -vn 0.0000 0.2868 0.9580 -vn 0.0000 0.2868 0.9580 -vn 0.0000 0.2868 0.9580 -vn -0.0127 0.0741 -0.9972 -vn -0.0127 0.0741 -0.9972 -vn -0.0127 0.0741 -0.9972 -vn -0.0127 0.0741 -0.9972 -vn -0.5617 0.5448 -0.6226 -vn -0.5617 0.5448 -0.6226 -vn -0.5617 0.5448 -0.6226 -vn -0.5617 0.5448 -0.6226 -vn -0.4104 -0.2331 -0.8816 -vn -0.4104 -0.2331 -0.8816 -vn -0.4104 -0.2331 -0.8816 -vn -0.4104 -0.2331 -0.8816 -vn 0.2017 -0.9682 -0.1481 -vn 0.2017 -0.9682 -0.1481 -vn 0.2017 -0.9682 -0.1481 -vn 0.1853 -0.9802 -0.0705 -vn 0.1853 -0.9802 -0.0705 -vn 0.1853 -0.9802 -0.0705 -vn 0.0000 0.4993 0.8664 -vn 0.0000 0.4993 0.8664 -vn 0.0000 0.4993 0.8664 -vn 0.0000 0.4993 0.8664 -vn 0.0000 0.1646 0.9864 -vn 0.0000 0.1646 0.9864 -vn 0.0000 0.1646 0.9864 -vn -0.0082 0.5297 -0.8482 -vn -0.0082 0.5297 -0.8482 -vn -0.0082 0.5297 -0.8482 -vn -0.0082 0.5297 -0.8482 -vn 0.1634 0.0131 -0.9865 -vn 0.1634 0.0131 -0.9865 -vn 0.1634 0.0131 -0.9865 -vn 0.1634 0.0131 -0.9865 -vn 0.9827 -0.0885 -0.1628 -vn 0.9827 -0.0885 -0.1628 -vn 0.9827 -0.0885 -0.1628 -vn 0.9827 -0.0885 -0.1628 -vn -0.3989 -0.0990 0.9116 -vn -0.3989 -0.0990 0.9116 -vn -0.3989 -0.0990 0.9116 -vn -0.9831 0.0095 0.1829 -vn -0.9831 0.0095 0.1829 -vn -0.9831 0.0095 0.1829 -vn -0.9831 0.0095 0.1829 -vn 0.8610 -0.0854 -0.5014 -vn 0.8610 -0.0854 -0.5014 -vn 0.8610 -0.0854 -0.5014 -vn 0.8610 -0.0854 -0.5014 -vn 0.9175 -0.0321 0.3964 -vn 0.9175 -0.0321 0.3964 -vn 0.9175 -0.0321 0.3964 -vn 0.9175 -0.0321 0.3964 -vn 0.2238 0.0288 -0.9742 -vn 0.2238 0.0288 -0.9742 -vn 0.2238 0.0288 -0.9742 -vn 0.2238 0.0288 -0.9742 -vn 0.3754 0.9014 0.2157 -vn 0.3754 0.9014 0.2157 -vn 0.3754 0.9014 0.2157 -vn 0.3754 0.9014 0.2157 -vn 0.4122 0.8952 0.1693 -vn 0.4122 0.8952 0.1693 -vn 0.4122 0.8952 0.1693 -vn 0.4122 0.8952 0.1693 -vn 0.3397 -0.0890 0.9363 -vn 0.3397 -0.0890 0.9363 -vn 0.3397 -0.0890 0.9363 -vn 0.3397 -0.0890 0.9363 -vn 0.1393 0.8417 -0.5216 -vn 0.1393 0.8417 -0.5216 -vn 0.1393 0.8417 -0.5216 -vn 0.1393 0.8417 -0.5216 -vn 0.7724 -0.0229 0.6347 -vn 0.7724 -0.0229 0.6347 -vn 0.7724 -0.0229 0.6347 -vn 0.7724 -0.0229 0.6347 -vn 0.3000 -0.1901 0.9348 -vn 0.3000 -0.1901 0.9348 -vn 0.3000 -0.1901 0.9348 -vn 0.2668 0.2552 0.9293 -vn 0.2668 0.2552 0.9293 -vn 0.2668 0.2552 0.9293 -vn 0.2668 0.2552 0.9293 -vn -0.1291 0.1799 -0.9752 -vn -0.1291 0.1799 -0.9752 -vn -0.1291 0.1799 -0.9752 -vn -0.1291 0.1799 -0.9752 -vn -0.4379 -0.8826 -0.1713 -vn -0.4379 -0.8826 -0.1713 -vn -0.4379 -0.8826 -0.1713 -vn -0.4379 -0.8826 -0.1713 -vn 0.2686 0.9389 0.2152 -vn 0.2686 0.9389 0.2152 -vn 0.2686 0.9389 0.2152 -vn 0.2686 0.9389 0.2152 -vn -0.2569 -0.1860 0.9484 -vn -0.2569 -0.1860 0.9484 -vn -0.2569 -0.1860 0.9484 -vn -0.2569 -0.1860 0.9484 -vn 0.4719 -0.1610 -0.8668 -vn 0.4719 -0.1610 -0.8668 -vn 0.4719 -0.1610 -0.8668 -vn 0.4719 -0.1610 -0.8668 -vn -0.3121 -0.9015 -0.2997 -vn -0.3121 -0.9015 -0.2997 -vn -0.3121 -0.9015 -0.2997 -vn -0.3121 -0.9015 -0.2997 -vn 0.8992 0.1417 0.4139 -vn 0.8992 0.1417 0.4139 -vn 0.8992 0.1417 0.4139 -vn 0.8754 0.0683 -0.4785 -vn 0.8754 0.0683 -0.4785 -vn 0.8754 0.0683 -0.4785 -vn 0.8754 0.0683 -0.4785 -vn 0.8951 -0.3473 -0.2795 -vn 0.8951 -0.3473 -0.2795 -vn 0.8951 -0.3473 -0.2795 -vn 0.0453 0.0861 -0.9953 -vn 0.0453 0.0861 -0.9953 -vn 0.0453 0.0861 -0.9953 -vn 0.0453 0.0861 -0.9953 -vn -0.9869 0.0540 0.1522 -vn -0.9869 0.0540 0.1522 -vn -0.9869 0.0540 0.1522 -vn 0.3933 -0.2947 0.8709 -vn 0.3933 -0.2947 0.8709 -vn 0.3933 -0.2947 0.8709 -vn 0.3933 -0.2947 0.8709 -vn -0.0131 0.2104 -0.9775 -vn -0.0131 0.2104 -0.9775 -vn -0.0131 0.2104 -0.9775 -vn -0.0131 0.2104 -0.9775 -vn -0.9792 0.0511 0.1961 -vn -0.9792 0.0511 0.1961 -vn -0.9792 0.0511 0.1961 -vn -0.9792 0.0511 0.1961 -vn 0.3700 -0.1406 0.9183 -vn 0.3700 -0.1406 0.9183 -vn 0.3700 -0.1406 0.9183 -vn 0.3700 -0.1406 0.9183 -vn 0.9865 -0.0120 -0.1635 -vn 0.9865 -0.0120 -0.1635 -vn 0.9865 -0.0120 -0.1635 -vn 0.9865 -0.0120 -0.1635 -vn 0.8812 -0.3950 -0.2597 -vn 0.8812 -0.3950 -0.2597 -vn 0.8812 -0.3950 -0.2597 -vn 0.8812 -0.3950 -0.2597 -vn -0.3416 -0.9364 -0.0806 -vn -0.3416 -0.9364 -0.0806 -vn -0.3416 -0.9364 -0.0806 -vn -0.3416 -0.9364 -0.0806 -vn 0.2950 -0.2184 -0.9302 -vn 0.2950 -0.2184 -0.9302 -vn 0.2950 -0.2184 -0.9302 -vn 0.2950 -0.2184 -0.9302 -vn 0.2179 0.5180 0.8271 -vn 0.2179 0.5180 0.8271 -vn 0.2179 0.5180 0.8271 -vn 0.2179 0.5180 0.8271 -vn 0.8781 0.1721 0.4464 -vn 0.8781 0.1721 0.4464 -vn 0.8781 0.1721 0.4464 -vn 0.8781 0.1721 0.4464 -vn 0.3519 0.0039 0.9360 -vn 0.3519 0.0039 0.9360 -vn 0.3519 0.0039 0.9360 -vn 0.3519 0.0039 0.9360 -vn 0.5009 0.1733 0.8480 -vn 0.5009 0.1733 0.8480 -vn 0.5009 0.1733 0.8480 -vn 0.4195 -0.8939 0.1582 -vn 0.4195 -0.8939 0.1582 -vn 0.4195 -0.8939 0.1582 -vn 0.8797 0.2347 0.4135 -vn 0.8797 0.2347 0.4135 -vn 0.8797 0.2347 0.4135 -vn 0.8797 0.2347 0.4135 -vn 0.4054 0.4008 0.8216 -vn 0.4054 0.4008 0.8216 -vn 0.4054 0.4008 0.8216 -vn 0.4054 0.4008 0.8216 -vn 0.9589 0.1397 0.2470 -vn 0.9589 0.1397 0.2470 -vn 0.9589 0.1397 0.2470 -vn 0.9589 0.1397 0.2470 -vn 0.9826 0.0104 0.1854 -vn 0.9826 0.0104 0.1854 -vn 0.9826 0.0104 0.1854 -vn 0.8356 -0.5474 -0.0454 -vn 0.8356 -0.5474 -0.0454 -vn 0.8356 -0.5474 -0.0454 -vn 0.9624 -0.1782 0.2052 -vn 0.9624 -0.1782 0.2052 -vn 0.9624 -0.1782 0.2052 -vn 0.9624 -0.1782 0.2052 -vn 0.5693 0.1809 0.8020 -vn 0.5693 0.1809 0.8020 -vn 0.5693 0.1809 0.8020 -vn 0.5693 0.1809 0.8020 -vn 0.4248 -0.1131 0.8982 -vn 0.4248 -0.1131 0.8982 -vn 0.4248 -0.1131 0.8982 -vn 0.4248 -0.1131 0.8982 -vn 0.8013 -0.5559 -0.2211 -vn 0.8013 -0.5559 -0.2211 -vn 0.8013 -0.5559 -0.2211 -vn 0.6057 -0.0427 0.7945 -vn 0.6057 -0.0427 0.7945 -vn 0.6057 -0.0427 0.7945 -vn 0.6057 -0.0427 0.7945 -vn 0.9625 0.1322 0.2368 -vn 0.9625 0.1322 0.2368 -vn 0.9625 0.1322 0.2368 -vn 0.9625 0.1322 0.2368 -vn -0.1464 -0.4023 -0.9037 -vn -0.1464 -0.4023 -0.9037 -vn -0.1464 -0.4023 -0.9037 -vn -0.8689 -0.4884 0.0797 -vn -0.8689 -0.4884 0.0797 -vn -0.8689 -0.4884 0.0797 -vn 0.2547 -0.3961 0.8821 -vn 0.2547 -0.3961 0.8821 -vn 0.2547 -0.3961 0.8821 -vn 0.2547 -0.3961 0.8821 -vn 0.5805 -0.7821 -0.2267 -vn 0.5805 -0.7821 -0.2267 -vn 0.5805 -0.7821 -0.2267 -vn 0.5805 -0.7821 -0.2267 -vn -0.9816 0.0670 0.1787 -vn -0.9816 0.0670 0.1787 -vn -0.9816 0.0670 0.1787 -vn -0.9816 0.0670 0.1787 -vn 0.8821 0.1569 -0.4442 -vn 0.8821 0.1569 -0.4442 -vn 0.8821 0.1569 -0.4442 -vn 0.8821 0.1569 -0.4442 -vn 0.8922 0.1700 0.4184 -vn 0.8922 0.1700 0.4184 -vn 0.8922 0.1700 0.4184 -vn 0.4727 0.1273 0.8720 -vn 0.4727 0.1273 0.8720 -vn 0.4727 0.1273 0.8720 -vn 0.9265 0.0869 0.3661 -vn 0.9265 0.0869 0.3661 -vn 0.9265 0.0869 0.3661 -vn 0.1743 -0.1645 0.9709 -vn 0.1743 -0.1645 0.9709 -vn 0.1743 -0.1645 0.9709 -vn 0.1743 -0.1645 0.9709 -vn 0.5265 0.8267 0.1983 -vn 0.5265 0.8267 0.1983 -vn 0.5265 0.8267 0.1983 -vn 0.5265 0.8267 0.1983 -vn 0.1549 -0.0355 -0.9873 -vn 0.1549 -0.0355 -0.9873 -vn 0.1549 -0.0355 -0.9873 -vn -0.0017 -0.1699 0.9855 -vn -0.0017 -0.1699 0.9855 -vn -0.0017 -0.1699 0.9855 -vn -0.0017 -0.1699 0.9855 -vn 0.2158 0.8144 0.5387 -vn 0.2158 0.8144 0.5387 -vn 0.2158 0.8144 0.5387 -vn 0.2158 0.8144 0.5387 -vn 0.2761 0.9321 0.2345 -vn 0.2761 0.9321 0.2345 -vn 0.2761 0.9321 0.2345 -vn 0.9428 0.2795 0.1817 -vn 0.9428 0.2795 0.1817 -vn 0.9428 0.2795 0.1817 -vn 0.9986 -0.0518 -0.0141 -vn 0.9986 -0.0518 -0.0141 -vn 0.9986 -0.0518 -0.0141 -vn 0.1080 -0.9096 0.4012 -vn 0.1080 -0.9096 0.4012 -vn 0.1080 -0.9096 0.4012 -vn -0.2345 0.8990 0.3700 -vn -0.2345 0.8990 0.3700 -vn -0.2345 0.8990 0.3700 -vn -0.2345 0.8990 0.3700 -vn -0.9921 0.0722 0.1030 -vn -0.9921 0.0722 0.1030 -vn -0.9921 0.0722 0.1030 -vn -0.9921 0.0722 0.1030 -vn 0.0022 -1.0000 -0.0050 -vn 0.0022 -1.0000 -0.0050 -vn 0.0022 -1.0000 -0.0050 -vn 0.0022 -1.0000 -0.0050 -vn -0.9203 0.0429 -0.3888 -vn -0.9203 0.0429 -0.3888 -vn -0.9203 0.0429 -0.3888 -vn -0.9203 0.0429 -0.3888 -vn -0.2703 0.4526 0.8498 -vn -0.2703 0.4526 0.8498 -vn -0.2703 0.4526 0.8498 -vn -0.2703 0.4526 0.8498 -vn 0.9574 -0.0737 -0.2791 -vn 0.9574 -0.0737 -0.2791 -vn 0.9574 -0.0737 -0.2791 -vn 0.9574 -0.0737 -0.2791 -vn 0.7381 0.3081 0.6002 -vn 0.7381 0.3081 0.6002 -vn 0.7381 0.3081 0.6002 -vn 0.7381 0.3081 0.6002 -vn 0.5607 0.8117 0.1637 -vn 0.5607 0.8117 0.1637 -vn 0.5607 0.8117 0.1637 -vn 0.5607 0.8117 0.1637 -vn 0.4525 -0.0743 0.8887 -vn 0.4525 -0.0743 0.8887 -vn 0.4525 -0.0743 0.8887 -vn 0.4525 -0.0743 0.8887 -vn 0.1186 -0.9178 -0.3790 -vn 0.1186 -0.9178 -0.3790 -vn 0.1186 -0.9178 -0.3790 -vn -0.7515 -0.6568 -0.0629 -vn -0.7515 -0.6568 -0.0629 -vn -0.7515 -0.6568 -0.0629 -vn 0.9597 0.0281 -0.2798 -vn 0.9597 0.0281 -0.2798 -vn 0.9597 0.0281 -0.2798 -vn 0.9597 0.0281 -0.2798 -vn 0.1273 -0.1278 -0.9836 -vn 0.1273 -0.1278 -0.9836 -vn 0.1273 -0.1278 -0.9836 -vn 0.1273 -0.1278 -0.9836 -vn 0.3455 0.1354 0.9286 -vn 0.3455 0.1354 0.9286 -vn 0.3455 0.1354 0.9286 -vn 0.3455 0.1354 0.9286 -vn 0.2764 -0.8870 0.3700 -vn 0.2764 -0.8870 0.3700 -vn 0.2764 -0.8870 0.3700 -vn 0.2451 -0.1993 0.9488 -vn 0.2451 -0.1993 0.9488 -vn 0.2451 -0.1993 0.9488 -vn 0.2451 -0.1993 0.9488 -vn 0.6807 -0.2106 -0.7016 -vn 0.6807 -0.2106 -0.7016 -vn 0.6807 -0.2106 -0.7016 -vn 0.6807 -0.2106 -0.7016 -vn 0.7106 0.6739 0.2021 -vn 0.7106 0.6739 0.2021 -vn 0.7106 0.6739 0.2021 -vn 0.7106 0.6739 0.2021 -vn 0.5757 -0.8031 -0.1535 -vn 0.5757 -0.8031 -0.1535 -vn 0.5757 -0.8031 -0.1535 -vn 0.5757 -0.8031 -0.1535 -vn -0.2345 0.0522 0.9707 -vn -0.2345 0.0522 0.9707 -vn -0.2345 0.0522 0.9707 -vn -0.2345 0.0522 0.9707 -vn 0.0517 0.0476 -0.9975 -vn 0.0517 0.0476 -0.9975 -vn 0.0517 0.0476 -0.9975 -vn 0.0517 0.0476 -0.9975 -vn 0.2831 0.9562 0.0752 -vn 0.2831 0.9562 0.0752 -vn 0.2831 0.9562 0.0752 -vn 0.2831 0.9562 0.0752 -vn -0.0507 -0.9935 -0.1016 -vn -0.0507 -0.9935 -0.1016 -vn -0.0507 -0.9935 -0.1016 -vn -0.0507 -0.9935 -0.1016 -vn 0.3031 0.0471 0.9518 -vn 0.3031 0.0471 0.9518 -vn 0.3031 0.0471 0.9518 -vn 0.3031 0.0471 0.9518 -vn 0.6130 -0.0352 0.7893 -vn 0.6130 -0.0352 0.7893 -vn 0.6130 -0.0352 0.7893 -vn 0.6130 -0.0352 0.7893 -vn 0.2884 -0.1753 -0.9413 -vn 0.2884 -0.1753 -0.9413 -vn 0.2884 -0.1753 -0.9413 -vn 0.2884 -0.1753 -0.9413 -vn 0.2159 0.9761 0.0226 -vn 0.2159 0.9761 0.0226 -vn 0.2159 0.9761 0.0226 -vn 0.2159 0.9761 0.0226 -vn -0.8065 -0.4408 -0.3941 -vn -0.8065 -0.4408 -0.3941 -vn -0.8065 -0.4408 -0.3941 -vn 0.8405 -0.0442 0.5400 -vn 0.8405 -0.0442 0.5400 -vn 0.8405 -0.0442 0.5400 -vn 0.8405 -0.0442 0.5400 -vn 0.9791 -0.1752 -0.1028 -vn 0.9791 -0.1752 -0.1028 -vn 0.9791 -0.1752 -0.1028 -vn 0.9791 -0.1752 -0.1028 -vn 0.5602 0.7378 0.3766 -vn 0.5602 0.7378 0.3766 -vn 0.5602 0.7378 0.3766 -vn -0.4841 0.3212 0.8139 -vn -0.4841 0.3212 0.8139 -vn -0.4841 0.3212 0.8139 -vn -0.4841 0.3212 0.8139 -vn -0.7657 -0.6427 -0.0248 -vn -0.7657 -0.6427 -0.0248 -vn -0.7657 -0.6427 -0.0248 -vn -0.7657 -0.6427 -0.0248 -vn -0.0687 0.6166 0.7843 -vn -0.0687 0.6166 0.7843 -vn -0.0687 0.6166 0.7843 -vn 0.0699 -0.0315 0.9971 -vn 0.0699 -0.0315 0.9971 -vn 0.0699 -0.0315 0.9971 -vn 0.0699 -0.0315 0.9971 -vn 0.7898 -0.2268 0.5698 -vn 0.7898 -0.2268 0.5698 -vn 0.7898 -0.2268 0.5698 -vn 0.8001 -0.0972 0.5919 -vn 0.8001 -0.0972 0.5919 -vn 0.8001 -0.0972 0.5919 -vn 0.8001 -0.0972 0.5919 -vn 0.5940 -0.7913 0.1450 -vn 0.5940 -0.7913 0.1450 -vn 0.5940 -0.7913 0.1450 -vn 0.5940 -0.7913 0.1450 -vn 0.0906 0.1887 0.9778 -vn 0.0906 0.1887 0.9778 -vn 0.0906 0.1887 0.9778 -vn 0.0984 0.0806 -0.9919 -vn 0.0984 0.0806 -0.9919 -vn 0.0984 0.0806 -0.9919 -vn 0.0984 0.0806 -0.9919 -vn 0.4368 0.8892 0.1359 -vn 0.4368 0.8892 0.1359 -vn 0.4368 0.8892 0.1359 -vn 0.4368 0.8892 0.1359 -vn -0.4359 -0.8263 -0.3567 -vn -0.4359 -0.8263 -0.3567 -vn -0.4359 -0.8263 -0.3567 -vn -0.4359 -0.8263 -0.3567 -vn -0.1164 -0.1902 0.9748 -vn -0.1164 -0.1902 0.9748 -vn -0.1164 -0.1902 0.9748 -vn -0.1164 -0.1902 0.9748 -vn 0.0304 0.1155 -0.9928 -vn 0.0304 0.1155 -0.9928 -vn 0.0304 0.1155 -0.9928 -vn 0.0304 0.1155 -0.9928 -vn 0.4473 0.8833 0.1406 -vn 0.4473 0.8833 0.1406 -vn 0.4473 0.8833 0.1406 -vn -0.4096 -0.8479 -0.3367 -vn -0.4096 -0.8479 -0.3367 -vn -0.4096 -0.8479 -0.3367 -vn -0.9835 -0.1436 0.1101 -vn -0.9835 -0.1436 0.1101 -vn -0.9835 -0.1436 0.1101 -vn -0.3745 0.2581 0.8906 -vn -0.3745 0.2581 0.8906 -vn -0.3745 0.2581 0.8906 -vn -0.3745 0.2581 0.8906 -vn -0.3866 -0.6109 0.6909 -vn -0.3866 -0.6109 0.6909 -vn -0.3866 -0.6109 0.6909 -vn -0.3866 -0.6109 0.6909 -vn 0.2026 0.7986 0.5667 -vn 0.2026 0.7986 0.5667 -vn 0.2026 0.7986 0.5667 -vn 0.3472 -0.1729 0.9217 -vn 0.3472 -0.1729 0.9217 -vn 0.3472 -0.1729 0.9217 -vn 0.0557 0.0627 -0.9965 -vn 0.0557 0.0627 -0.9965 -vn 0.0557 0.0627 -0.9965 -vn 0.0557 0.0627 -0.9965 -vn 0.5625 0.8268 -0.0012 -vn 0.5625 0.8268 -0.0012 -vn 0.5625 0.8268 -0.0012 -vn 0.5625 0.8268 -0.0012 -vn -0.1065 -0.9839 -0.1437 -vn -0.1065 -0.9839 -0.1437 -vn -0.1065 -0.9839 -0.1437 -vn 0.1926 0.4841 0.8535 -vn 0.1926 0.4841 0.8535 -vn 0.1926 0.4841 0.8535 -vn -0.0135 -0.9999 -0.0004 -vn -0.0135 -0.9999 -0.0004 -vn -0.0135 -0.9999 -0.0004 -vn -0.0135 -0.9999 -0.0004 -vn 0.1584 0.3315 0.9300 -vn 0.1584 0.3315 0.9300 -vn 0.1584 0.3315 0.9300 -vn -0.9439 -0.3276 -0.0423 -vn -0.9439 -0.3276 -0.0423 -vn -0.9439 -0.3276 -0.0423 -vn 0.0000 -0.0454 0.9990 -vn 0.0000 -0.0454 0.9990 -vn 0.0000 -0.0454 0.9990 -vn 0.0985 -0.9710 0.2177 -vn 0.0985 -0.9710 0.2177 -vn 0.0985 -0.9710 0.2177 -vn 0.0985 -0.9710 0.2177 -vn 0.8813 0.0216 0.4721 -vn 0.8813 0.0216 0.4721 -vn 0.8813 0.0216 0.4721 -vn 0.9213 -0.1090 -0.3733 -vn 0.9213 -0.1090 -0.3733 -vn 0.9213 -0.1090 -0.3733 -vn 0.9213 -0.1090 -0.3733 -vn 0.4018 -0.1466 0.9039 -vn 0.4018 -0.1466 0.9039 -vn 0.4018 -0.1466 0.9039 -vn 0.4018 -0.1466 0.9039 -vn 0.2305 -0.1079 -0.9671 -vn 0.2305 -0.1079 -0.9671 -vn 0.2305 -0.1079 -0.9671 -vn 0.2305 -0.1079 -0.9671 -vn -0.9922 -0.1101 0.0578 -vn -0.9922 -0.1101 0.0578 -vn -0.9922 -0.1101 0.0578 -vn -0.9922 -0.1101 0.0578 -vn 0.3247 0.0848 -0.9420 -vn 0.3247 0.0848 -0.9420 -vn 0.3247 0.0848 -0.9420 -vn 0.3247 0.0848 -0.9420 -vn 0.8896 0.3112 -0.3342 -vn 0.8896 0.3112 -0.3342 -vn 0.8896 0.3112 -0.3342 -vn 0.8826 0.1868 0.4314 -vn 0.8826 0.1868 0.4314 -vn 0.8826 0.1868 0.4314 -vn 0.8826 0.1868 0.4314 -vn 0.4908 0.2558 0.8329 -vn 0.4908 0.2558 0.8329 -vn 0.4908 0.2558 0.8329 -vn 0.4908 0.2558 0.8329 -vn 0.1991 -0.9326 0.3009 -vn 0.1991 -0.9326 0.3009 -vn 0.1991 -0.9326 0.3009 -vn 0.1991 -0.9326 0.3009 -vn 0.2058 0.0231 -0.9783 -vn 0.2058 0.0231 -0.9783 -vn 0.2058 0.0231 -0.9783 -vn 0.2058 0.0231 -0.9783 -vn -0.2901 -0.0605 0.9551 -vn -0.2901 -0.0605 0.9551 -vn -0.2901 -0.0605 0.9551 -vn -0.3489 -0.9259 -0.1447 -vn -0.3489 -0.9259 -0.1447 -vn -0.3489 -0.9259 -0.1447 -vn -0.3489 -0.9259 -0.1447 -vn 0.0284 0.0393 -0.9988 -vn 0.0284 0.0393 -0.9988 -vn 0.0284 0.0393 -0.9988 -vn 0.0284 0.0393 -0.9988 -vn 0.7231 0.6525 0.2267 -vn 0.7231 0.6525 0.2267 -vn 0.7231 0.6525 0.2267 -vn 0.0951 -0.9499 -0.2979 -vn 0.0951 -0.9499 -0.2979 -vn 0.0951 -0.9499 -0.2979 -vn 0.0104 0.0752 -0.9971 -vn 0.0104 0.0752 -0.9971 -vn 0.0104 0.0752 -0.9971 -vn 0.0104 0.0752 -0.9971 -vn 0.5617 0.5448 -0.6226 -vn 0.5617 0.5448 -0.6226 -vn 0.5617 0.5448 -0.6226 -vn 0.5617 0.5448 -0.6226 -vn 0.4104 -0.2331 -0.8816 -vn 0.4104 -0.2331 -0.8816 -vn 0.4104 -0.2331 -0.8816 -vn 0.4104 -0.2331 -0.8816 -vn -0.2017 -0.9682 -0.1481 -vn -0.2017 -0.9682 -0.1481 -vn -0.2017 -0.9682 -0.1481 -vn -0.1853 -0.9802 -0.0705 -vn -0.1853 -0.9802 -0.0705 -vn -0.1853 -0.9802 -0.0705 -vn 0.0082 0.5297 -0.8482 -vn 0.0082 0.5297 -0.8482 -vn 0.0082 0.5297 -0.8482 -vn 0.0082 0.5297 -0.8482 -vn 0.4981 0.2118 0.8409 -vn 0.4981 0.2118 0.8409 -vn 0.4981 0.2118 0.8409 -vn 0.4981 0.2118 0.8409 -vn 0.9154 0.1115 0.3868 -vn 0.9154 0.1115 0.3868 -vn 0.9154 0.1115 0.3868 -vn 0.9154 0.1115 0.3868 -vn 0.9849 0.1424 0.0984 -vn 0.9849 0.1424 0.0984 -vn 0.9849 0.1424 0.0984 -vn 0.9849 0.1424 0.0984 -vn 0.9176 0.2222 0.3295 -vn 0.9176 0.2222 0.3295 -vn 0.9176 0.2222 0.3295 -vn 0.8424 0.0336 0.5378 -vn 0.8424 0.0336 0.5378 -vn 0.8424 0.0336 0.5378 -vn 0.8424 0.0336 0.5378 -vn 0.9822 0.1564 0.1044 -vn 0.9822 0.1564 0.1044 -vn 0.9822 0.1564 0.1044 -vn 0.9822 0.1564 0.1044 -vn 0.8392 0.2042 -0.5041 -vn 0.8392 0.2042 -0.5041 -vn 0.8392 0.2042 -0.5041 -vn 0.8392 0.2042 -0.5041 -vn 0.8476 0.1279 -0.5150 -vn 0.8476 0.1279 -0.5150 -vn 0.8476 0.1279 -0.5150 -vn 0.8476 0.1279 -0.5150 -vn 0.3651 0.2222 -0.9041 -vn 0.3651 0.2222 -0.9041 -vn 0.3651 0.2222 -0.9041 -vn 0.3651 0.2222 -0.9041 -vn 0.2551 0.0353 -0.9663 -vn 0.2551 0.0353 -0.9663 -vn 0.2551 0.0353 -0.9663 -vn 0.2551 0.0353 -0.9663 -vn 0.4221 0.6183 0.6630 -vn 0.4221 0.6183 0.6630 -vn 0.4221 0.6183 0.6630 -vn 0.7567 0.6087 0.2385 -vn 0.7567 0.6087 0.2385 -vn 0.7567 0.6087 0.2385 -vn 0.7567 0.6087 0.2385 -vn 0.8063 0.5860 0.0806 -vn 0.8063 0.5860 0.0806 -vn 0.8063 0.5860 0.0806 -vn 0.4688 0.7655 -0.4407 -vn 0.4688 0.7655 -0.4407 -vn 0.4688 0.7655 -0.4407 -vn 0.4688 0.7655 -0.4407 -vn 0.2815 0.7238 -0.6299 -vn 0.2815 0.7238 -0.6299 -vn 0.2815 0.7238 -0.6299 -vn 0.2964 0.9524 0.0712 -vn 0.2964 0.9524 0.0712 -vn 0.2964 0.9524 0.0712 -vn 0.1841 0.9614 -0.2047 -vn 0.1841 0.9614 -0.2047 -vn 0.1841 0.9614 -0.2047 -vn 0.0000 0.7502 0.6612 -vn 0.0000 0.7502 0.6612 -vn 0.0000 0.7502 0.6612 -vn 0.0000 0.7502 0.6612 -vn 0.2047 0.1425 0.9684 -vn 0.2047 0.1425 0.9684 -vn 0.2047 0.1425 0.9684 -vn 0.0000 0.2848 0.9586 -vn 0.0000 0.2848 0.9586 -vn 0.0000 0.2848 0.9586 -vn -0.9000 0.0177 0.4355 -vn -0.9000 0.0177 0.4355 -vn -0.9000 0.0177 0.4355 -vn -0.9000 0.0177 0.4355 -vn -0.4981 0.2118 0.8409 -vn -0.4981 0.2118 0.8409 -vn -0.4981 0.2118 0.8409 -vn -0.4981 0.2118 0.8409 -vn -0.9154 0.1115 0.3868 -vn -0.9154 0.1115 0.3868 -vn -0.9154 0.1115 0.3868 -vn -0.9154 0.1115 0.3868 -vn -0.9849 0.1424 0.0984 -vn -0.9849 0.1424 0.0984 -vn -0.9849 0.1424 0.0984 -vn -0.9849 0.1424 0.0984 -vn -0.9176 0.2222 0.3295 -vn -0.9176 0.2222 0.3295 -vn -0.9176 0.2222 0.3295 -vn -0.8424 0.0336 0.5378 -vn -0.8424 0.0336 0.5378 -vn -0.8424 0.0336 0.5378 -vn -0.8424 0.0336 0.5378 -vn -0.9822 0.1564 0.1044 -vn -0.9822 0.1564 0.1044 -vn -0.9822 0.1564 0.1044 -vn -0.9822 0.1564 0.1044 -vn -0.8392 0.2042 -0.5041 -vn -0.8392 0.2042 -0.5041 -vn -0.8392 0.2042 -0.5041 -vn -0.8392 0.2042 -0.5041 -vn -0.8476 0.1279 -0.5150 -vn -0.8476 0.1279 -0.5150 -vn -0.8476 0.1279 -0.5150 -vn -0.8476 0.1279 -0.5150 -vn -0.3651 0.2222 -0.9041 -vn -0.3651 0.2222 -0.9041 -vn -0.3651 0.2222 -0.9041 -vn -0.3651 0.2222 -0.9041 -vn -0.2551 0.0353 -0.9663 -vn -0.2551 0.0353 -0.9663 -vn -0.2551 0.0353 -0.9663 -vn -0.2551 0.0353 -0.9663 -vn -0.4221 0.6183 0.6630 -vn -0.4221 0.6183 0.6630 -vn -0.4221 0.6183 0.6630 -vn -0.7568 0.6087 0.2385 -vn -0.7568 0.6087 0.2385 -vn -0.7568 0.6087 0.2385 -vn -0.7568 0.6087 0.2385 -vn -0.8063 0.5860 0.0806 -vn -0.8063 0.5860 0.0806 -vn -0.8063 0.5860 0.0806 -vn -0.4688 0.7655 -0.4407 -vn -0.4688 0.7655 -0.4407 -vn -0.4688 0.7655 -0.4407 -vn -0.4688 0.7655 -0.4407 -vn -0.2815 0.7238 -0.6299 -vn -0.2815 0.7238 -0.6299 -vn -0.2815 0.7238 -0.6299 -vn -0.2964 0.9524 0.0712 -vn -0.2964 0.9524 0.0712 -vn -0.2964 0.9524 0.0712 -vn -0.1841 0.9614 -0.2047 -vn -0.1841 0.9614 -0.2047 -vn -0.1841 0.9614 -0.2047 -vn 0.0000 0.9651 0.2620 -vn 0.0000 0.9651 0.2620 -vn 0.0000 0.9651 0.2620 -vn -0.2047 0.1425 0.9684 -vn -0.2047 0.1425 0.9684 -vn -0.2047 0.1425 0.9684 -vn 0.9000 0.0177 0.4355 -vn 0.9000 0.0177 0.4355 -vn 0.9000 0.0177 0.4355 -vn 0.9000 0.0177 0.4355 -vn 0.2337 0.1582 -0.9593 -vn 0.2337 0.1582 -0.9593 -vn 0.2337 0.1582 -0.9593 -vn 0.2337 0.1582 -0.9593 -vn 0.9108 0.1087 0.3983 -vn 0.9108 0.1087 0.3983 -vn 0.9108 0.1087 0.3983 -vn 0.9108 0.1087 0.3983 -vn -0.2721 -0.2324 0.9338 -vn -0.2721 -0.2324 0.9338 -vn -0.2721 -0.2324 0.9338 -vn -0.2721 -0.2324 0.9338 -vn 0.2667 0.2664 -0.9262 -vn 0.2667 0.2664 -0.9262 -vn 0.2667 0.2664 -0.9262 -vn 0.2667 0.2664 -0.9262 -vn -0.2859 -0.7827 0.5528 -vn -0.2859 -0.7827 0.5528 -vn -0.2859 -0.7827 0.5528 -vn -0.2859 -0.7827 0.5528 -vn 0.8992 0.0079 0.4376 -vn 0.8992 0.0079 0.4376 -vn 0.8992 0.0079 0.4376 -vn -0.2937 0.9558 0.0153 -vn -0.2937 0.9558 0.0153 -vn -0.2937 0.9558 0.0153 -vn -0.2937 0.9558 0.0153 -vn -0.1893 -0.7092 -0.6791 -vn -0.1893 -0.7092 -0.6791 -vn -0.1893 -0.7092 -0.6791 -vn -0.1893 -0.7092 -0.6791 -vn 0.9591 0.2709 0.0827 -vn 0.9591 0.2709 0.0827 -vn 0.9591 0.2709 0.0827 -vn 0.9591 0.2709 0.0827 -vn 0.1679 -0.1013 0.9806 -vn 0.1679 -0.1013 0.9806 -vn 0.1679 -0.1013 0.9806 -vn -0.1678 0.1072 -0.9800 -vn -0.1678 0.1072 -0.9800 -vn -0.1678 0.1072 -0.9800 -vn 0.0422 -0.7280 0.6843 -vn 0.0422 -0.7280 0.6843 -vn 0.0422 -0.7280 0.6843 -vn 0.0422 -0.7280 0.6843 -vn 0.9372 -0.3398 0.0787 -vn 0.9372 -0.3398 0.0787 -vn 0.9372 -0.3398 0.0787 -# 1312 vertex normals - -vt 0.3107 0.8057 0.0000 -vt 0.0418 0.8273 0.0000 -vt 0.0224 0.9163 0.0000 -vt 0.3107 0.4728 0.0000 -vt 0.1035 0.2227 0.0000 -vt 0.1074 0.0253 0.0000 -vt 0.0899 0.0232 0.0000 -vt 0.0636 0.2210 0.0000 -vt 0.1450 0.0577 0.0000 -vt 0.1687 0.2207 0.0000 -vt 0.1815 0.0586 0.0000 -vt 0.1640 0.0674 0.0000 -vt 0.2169 0.2236 0.0000 -vt 0.2201 0.0170 0.0000 -vt 0.2532 0.2123 0.0000 -vt 0.1832 0.6616 0.0000 -vt 0.1399 0.7884 0.0000 -vt 0.1833 0.7921 0.0000 -vt 0.2391 0.6616 0.0000 -vt 0.2493 0.8024 0.0000 -vt 0.1804 0.9648 0.0000 -vt 0.1341 0.8526 0.0000 -vt 0.0281 0.8778 0.0000 -vt 0.8077 0.9449 0.0000 -vt 0.7460 0.9866 0.0000 -vt 0.7460 0.9449 0.0000 -vt 0.8055 0.9227 0.0000 -vt 0.7460 0.9227 0.0000 -vt 0.7460 0.8094 0.0000 -vt 0.8053 0.8344 0.0000 -vt 0.2595 0.9680 0.0000 -vt 0.2566 0.8644 0.0000 -vt 0.1810 0.8442 0.0000 -vt 0.8086 0.8094 0.0000 -vt 0.8795 0.8094 0.0000 -vt 0.8795 0.8344 0.0000 -vt 0.6800 0.8094 0.0000 -vt 0.6889 0.9227 0.0000 -vt 0.6269 0.9227 0.0000 -vt 0.8108 0.7884 0.0000 -vt 0.7460 0.7884 0.0000 -vt 0.7460 0.6802 0.0000 -vt 0.8127 0.7051 0.0000 -vt 0.6918 0.6802 0.0000 -vt 0.6777 0.7884 0.0000 -vt 0.8099 0.6802 0.0000 -vt 0.8622 0.6802 0.0000 -vt 0.8795 0.7051 0.0000 -vt 0.8795 0.7884 0.0000 -vt 0.1854 0.4365 0.0000 -vt 0.1439 0.4087 0.0000 -vt 0.1364 0.4405 0.0000 -vt 0.0869 0.4366 0.0000 -vt 0.0973 0.3997 0.0000 -vt 0.1665 0.2975 0.0000 -vt 0.1634 0.2856 0.0000 -vt 0.1066 0.2975 0.0000 -vt 0.0549 0.2975 0.0000 -vt 0.0533 0.3137 0.0000 -vt 0.1055 0.3137 0.0000 -vt 0.2216 0.2810 0.0000 -vt 0.2243 0.2975 0.0000 -vt 0.0907 0.2286 0.0000 -vt 0.2823 0.2237 0.0000 -vt 0.2203 0.2369 0.0000 -vt 0.1517 0.2329 0.0000 -vt 0.2858 0.9314 0.0000 -vt 0.5026 0.1853 0.0000 -vt 0.5291 0.2009 0.0000 -vt 0.5298 0.1673 0.0000 -vt 0.5088 0.1569 0.0000 -vt 0.5062 0.1298 0.0000 -vt 0.4678 0.2318 0.0000 -vt 0.4344 0.1874 0.0000 -vt 0.4309 0.2270 0.0000 -vt 0.4999 0.2272 0.0000 -vt 0.5055 0.2476 0.0000 -vt 0.5256 0.2239 0.0000 -vt 0.4643 0.2508 0.0000 -vt 0.4516 0.2875 0.0000 -vt 0.3672 0.2403 0.0000 -vt 0.4357 0.0900 0.0000 -vt 0.3761 0.1116 0.0000 -vt 0.4347 0.1190 0.0000 -vt 0.3880 0.0541 0.0000 -vt 0.4096 0.1930 0.0000 -vt 0.5070 0.0878 0.0000 -vt 0.2699 0.9825 0.0000 -vt 0.3078 0.9535 0.0000 -vt 0.2255 0.3137 0.0000 -vt 0.1336 0.4715 0.0000 -vt 0.0941 0.4709 0.0000 -vt 0.2576 0.5822 0.0000 -vt 0.3084 0.0404 0.0000 -vt 0.2902 0.0307 0.0000 -vt 0.3135 0.0238 0.0000 -vt 0.7658 0.0409 0.0000 -vt 0.2740 0.0396 0.0000 -vt 0.2662 0.0236 0.0000 -vt 0.1657 0.3137 0.0000 -vt 0.0417 0.3958 0.0000 -vt 0.7109 0.6619 0.0000 -vt 0.7460 0.6619 0.0000 -vt 0.8009 0.6619 0.0000 -vt 0.8356 0.6619 0.0000 -vt 0.7232 0.6305 0.0000 -vt 0.7460 0.6305 0.0000 -vt 0.7962 0.6305 0.0000 -vt 0.8121 0.6305 0.0000 -vt 0.7839 0.5279 0.0000 -vt 0.7997 0.5230 0.0000 -vt 0.7802 0.5027 0.0000 -vt 0.7063 0.5876 0.0000 -vt 0.6631 0.5538 0.0000 -vt 0.7660 0.5742 0.0000 -vt 0.7416 0.4982 0.0000 -vt 0.7379 0.5389 0.0000 -vt 0.7561 0.5372 0.0000 -vt 0.7186 0.5457 0.0000 -vt 0.8063 0.5569 0.0000 -vt 0.7882 0.5651 0.0000 -vt 0.8133 0.5545 0.0000 -vt 0.2610 0.4728 0.0000 -vt 0.3489 0.3960 0.0000 -vt 0.2513 0.4119 0.0000 -vt 0.0526 0.4653 0.0000 -vt 0.3107 0.6616 0.0000 -vt 0.3107 0.8605 0.0000 -vt 0.0614 0.7628 0.0000 -vt 0.5338 0.1538 0.0000 -vt 0.5339 0.2868 0.0000 -vt 0.5338 0.2544 0.0000 -vt 0.3105 0.9531 0.0000 -vt 0.1145 0.6616 0.0000 -vt 0.3499 0.4002 0.0000 -vt 0.7042 0.5143 0.0000 -vt 0.0732 0.6616 0.0000 -vt 0.9122 0.1756 0.0000 -vt 0.9434 0.1756 0.0000 -vt 0.9254 0.0319 0.0000 -vt 0.9094 0.0329 0.0000 -vt 0.8739 0.0600 0.0000 -vt 0.8590 0.1756 0.0000 -vt 0.8411 0.0589 0.0000 -vt 0.8242 0.1756 0.0000 -vt 0.8563 0.0678 0.0000 -vt 0.8086 0.0196 0.0000 -vt 0.7953 0.1756 0.0000 -vt 0.1834 0.6616 0.0000 -vt 0.1835 0.7921 0.0000 -vt 0.1401 0.7884 0.0000 -vt 0.1147 0.6616 0.0000 -vt 0.2393 0.6616 0.0000 -vt 0.2495 0.8024 0.0000 -vt 0.1806 0.9648 0.0000 -vt 0.1343 0.8526 0.0000 -vt 0.5286 0.9420 0.0000 -vt 0.4699 0.9420 0.0000 -vt 0.4699 0.9778 0.0000 -vt 0.5264 0.9164 0.0000 -vt 0.5262 0.8281 0.0000 -vt 0.4699 0.8031 0.0000 -vt 0.4699 0.9164 0.0000 -vt 0.2597 0.9680 0.0000 -vt 0.1812 0.8442 0.0000 -vt 0.2568 0.8644 0.0000 -vt 0.5295 0.8031 0.0000 -vt 0.5908 0.8281 0.0000 -vt 0.5908 0.8031 0.0000 -vt 0.3478 0.9164 0.0000 -vt 0.4098 0.9164 0.0000 -vt 0.4009 0.8031 0.0000 -vt 0.5317 0.7821 0.0000 -vt 0.5336 0.6988 0.0000 -vt 0.4699 0.6747 0.0000 -vt 0.4699 0.7821 0.0000 -vt 0.4127 0.6747 0.0000 -vt 0.3986 0.7821 0.0000 -vt 0.5308 0.6747 0.0000 -vt 0.5908 0.6988 0.0000 -vt 0.5831 0.6747 0.0000 -vt 0.5908 0.7821 0.0000 -vt 0.8479 0.4132 0.0000 -vt 0.8933 0.4142 0.0000 -vt 0.8848 0.3854 0.0000 -vt 0.9389 0.4095 0.0000 -vt 0.9275 0.3759 0.0000 -vt 0.8589 0.2861 0.0000 -vt 0.9142 0.2821 0.0000 -vt 0.8602 0.2774 0.0000 -vt 0.9628 0.2861 0.0000 -vt 0.9164 0.3016 0.0000 -vt 0.9643 0.3016 0.0000 -vt 0.8047 0.2861 0.0000 -vt 0.8051 0.2742 0.0000 -vt 0.7326 0.2071 0.0000 -vt 0.9173 0.2208 0.0000 -vt 0.8086 0.2361 0.0000 -vt 0.8594 0.2278 0.0000 -vt 0.3107 0.9196 0.0000 -vt 0.2860 0.9314 0.0000 -vt 0.5651 0.1853 0.0000 -vt 0.5589 0.1569 0.0000 -vt 0.5378 0.1673 0.0000 -vt 0.5385 0.2009 0.0000 -vt 0.5615 0.1298 0.0000 -vt 0.5338 0.1344 0.0000 -vt 0.5999 0.2317 0.0000 -vt 0.6368 0.2281 0.0000 -vt 0.6332 0.1874 0.0000 -vt 0.5678 0.2272 0.0000 -vt 0.5421 0.2239 0.0000 -vt 0.5622 0.2476 0.0000 -vt 0.6161 0.2875 0.0000 -vt 0.6034 0.2508 0.0000 -vt 0.7005 0.2402 0.0000 -vt 0.6320 0.0899 0.0000 -vt 0.6330 0.1190 0.0000 -vt 0.6916 0.1116 0.0000 -vt 0.6796 0.0540 0.0000 -vt 0.6581 0.1930 0.0000 -vt 0.5606 0.0878 0.0000 -vt 0.5338 0.0953 0.0000 -vt 0.2701 0.9825 0.0000 -vt 0.3080 0.9535 0.0000 -vt 0.8045 0.3016 0.0000 -vt 0.8972 0.4428 0.0000 -vt 0.9339 0.4413 0.0000 -vt 0.2578 0.5822 0.0000 -vt 0.2902 0.0307 0.0000 -vt 0.2740 0.0396 0.0000 -vt 0.2662 0.0236 0.0000 -vt 0.7658 0.0409 0.0000 -vt 0.3135 0.0238 0.0000 -vt 0.3084 0.0404 0.0000 -vt 0.8604 0.3016 0.0000 -vt 0.9785 0.3695 0.0000 -vt 0.4699 0.6556 0.0000 -vt 0.4318 0.6556 0.0000 -vt 0.5566 0.6556 0.0000 -vt 0.5218 0.6556 0.0000 -vt 0.4699 0.6242 0.0000 -vt 0.4441 0.6242 0.0000 -vt 0.5330 0.6242 0.0000 -vt 0.5171 0.6242 0.0000 -vt 0.3107 0.5822 0.0000 -vt 0.7839 0.5279 0.0000 -vt 0.7561 0.5372 0.0000 -vt 0.7802 0.5027 0.0000 -vt 0.7997 0.5230 0.0000 -vt 0.6631 0.5538 0.0000 -vt 0.7063 0.5876 0.0000 -vt 0.7660 0.5742 0.0000 -vt 0.7416 0.4982 0.0000 -vt 0.7379 0.5389 0.0000 -vt 0.7042 0.5143 0.0000 -vt 0.7186 0.5457 0.0000 -vt 0.7882 0.5651 0.0000 -vt 0.8063 0.5569 0.0000 -vt 0.8133 0.5545 0.0000 -vt 0.2612 0.4728 0.0000 -vt 0.6949 0.3842 0.0000 -vt 0.7856 0.3933 0.0000 -vt 0.9724 0.4336 0.0000 -vt 0.2524 0.4170 0.0000 -vt 0.0275 0.4648 0.0000 -vt 0.4091 0.5386 0.0000 -vt 0.4300 0.5070 0.0000 -vt 0.4515 0.5314 0.0000 -vt 0.4263 0.5527 0.0000 -vt 0.4920 0.4514 0.0000 -vt 0.4997 0.5187 0.0000 -vt 0.5542 0.5118 0.0000 -vt 0.4167 0.2972 0.0000 -vt 0.4868 0.3160 0.0000 -vt 0.5424 0.3315 0.0000 -vt 0.4341 0.4607 0.0000 -vt 0.5521 0.4459 0.0000 -vt 0.5911 0.5193 0.0000 -vt 0.6084 0.2977 0.0000 -vt 0.6010 0.4502 0.0000 -vt 0.4820 0.5643 0.0000 -vt 0.5386 0.5567 0.0000 -vt 0.6348 0.5377 0.0000 -vt 0.3982 0.5591 0.0000 -vt 0.3690 0.3002 0.0000 -vt 0.3803 0.4634 0.0000 -vt 0.4091 0.5386 0.0000 -vt 0.4300 0.5071 0.0000 -vt 0.4515 0.5315 0.0000 -vt 0.4161 0.5817 0.0000 -vt 0.4920 0.4515 0.0000 -vt 0.4997 0.5188 0.0000 -vt 0.5521 0.4459 0.0000 -vt 0.5542 0.5119 0.0000 -vt 0.4340 0.4608 0.0000 -vt 0.4166 0.2973 0.0000 -vt 0.4867 0.3161 0.0000 -vt 0.5424 0.3315 0.0000 -vt 0.6010 0.4503 0.0000 -vt 0.5911 0.5193 0.0000 -vt 0.6083 0.2977 0.0000 -vt 0.6618 0.4642 0.0000 -vt 0.6823 0.3086 0.0000 -vt 0.4667 0.6076 0.0000 -vt 0.5386 0.5567 0.0000 -vt 0.5889 0.5821 0.0000 -vt 0.5237 0.6033 0.0000 -vt 0.3802 0.4635 0.0000 -vt 0.3690 0.3003 0.0000 -vt 0.0756 0.0215 0.0000 -vt 0.0284 0.2165 0.0000 -vt 0.2315 0.5822 0.0000 -vt 0.3072 0.2975 0.0000 -vt 0.3066 0.3137 0.0000 -vt 0.0396 0.2418 0.0000 -vt 0.1823 0.6318 0.0000 -vt 0.1420 0.6318 0.0000 -vt 0.2109 0.4334 0.0000 -vt 0.3394 0.3798 0.0000 -vt 0.0336 0.4139 0.0000 -vt 0.0965 0.6318 0.0000 -vt 0.0296 0.4154 0.0000 -vt 0.9386 0.0312 0.0000 -vt 0.9744 0.1756 0.0000 -vt 0.2317 0.5822 0.0000 -vt 0.7265 0.2821 0.0000 -vt 0.7289 0.3016 0.0000 -vt 0.9699 0.2253 0.0000 -vt 0.1825 0.6318 0.0000 -vt 0.1422 0.6318 0.0000 -vt 0.8240 0.4114 0.0000 -vt 0.7027 0.3682 0.0000 -vt 0.9868 0.3852 0.0000 -vt 0.0967 0.6318 0.0000 -vt 0.0681 0.6318 0.0000 -vt 0.9955 0.4316 0.0000 -vt 0.9906 0.3863 0.0000 -vt 0.6942 0.3882 0.0000 -vt 0.7850 0.3981 0.0000 -vt 0.0420 0.8273 0.0000 -vt 0.0226 0.9163 0.0000 -vt 0.0283 0.8778 0.0000 -vt 0.0616 0.7629 0.0000 -vt 0.0734 0.6616 0.0000 -vt 0.0683 0.6318 0.0000 -vt 0.5332 0.9778 0.0000 -vt 0.3478 0.9420 0.0000 -vt 0.2104 0.9004 0.0000 -vt 0.4077 0.9420 0.0000 -vt 0.8123 0.9817 0.0000 -vt 0.6269 0.9449 0.0000 -vt 0.2102 0.9004 0.0000 -vt 0.6868 0.9449 0.0000 -vt 0.6269 0.8094 0.0000 -vt 0.6269 0.8294 0.0000 -vt 0.8795 0.9227 0.0000 -vt 0.6417 0.6802 0.0000 -vt 0.6269 0.6997 0.0000 -vt 0.6269 0.7884 0.0000 -vt 0.6659 0.6619 0.0000 -vt 0.6771 0.6305 0.0000 -vt 0.8801 0.5699 0.0000 -vt 0.3478 0.8231 0.0000 -vt 0.3478 0.8031 0.0000 -vt 0.5908 0.9164 0.0000 -vt 0.3478 0.6934 0.0000 -vt 0.3626 0.6747 0.0000 -vt 0.3478 0.7821 0.0000 -vt 0.3868 0.6556 0.0000 -vt 0.3980 0.6242 0.0000 -vt 0.8801 0.5699 0.0000 -vt 0.5908 0.9420 0.0000 -vt 0.8795 0.9449 0.0000 -vt 0.4971 0.0267 0.0000 -vt 0.5338 0.0190 0.0000 -vt 0.5705 0.0266 0.0000 -vt 0.2936 0.9628 0.0000 -vt 0.2938 0.9628 0.0000 -vt 0.1264 0.9132 0.0000 -vt 0.0539 0.9410 0.0000 -vt 0.1261 0.9132 0.0000 -vt 0.0537 0.9410 0.0000 -vt 0.3272 0.0717 0.0000 -vt 0.7404 0.0716 0.0000 -vt 0.9766 0.5071 0.0000 -vt 0.9671 0.4662 0.0000 -vt 0.9664 0.4646 0.0000 -vt 0.9935 0.5066 0.0000 -vt 0.9620 0.7107 0.0000 -vt 0.9222 0.7170 0.0000 -vt 0.9300 0.5164 0.0000 -vt 0.9160 0.7257 0.0000 -vt 0.9130 0.5155 0.0000 -vt 0.9711 0.7189 0.0000 -vt 0.9572 0.7753 0.0000 -vt 0.9353 0.7593 0.0000 -vt 0.9323 0.7553 0.0000 -vt 0.9675 0.7689 0.0000 -vt 0.9543 0.9680 0.0000 -vt 0.9099 0.9758 0.0000 -vt 0.9197 0.7813 0.0000 -vt 0.9041 0.7777 0.0000 -vt 0.7839 0.0501 0.0000 -vt 0.2897 0.0124 0.0000 -vt 0.7483 0.0551 0.0000 -vt 0.2897 0.0124 0.0000 -vt 0.8150 0.5993 0.0000 -vt 0.7740 0.6165 0.0000 -vt 0.7014 0.6099 0.0000 -vt 0.6747 0.5920 0.0000 -vt 0.8859 0.6072 0.0000 -vt 0.8162 0.5073 0.0000 -vt 0.8535 0.5070 0.0000 -vt 0.8162 0.5073 0.0000 -vt 0.8535 0.5070 0.0000 -vt 0.7740 0.6165 0.0000 -vt 0.8150 0.5993 0.0000 -vt 0.8794 0.5231 0.0000 -vt 0.6747 0.5920 0.0000 -vt 0.7014 0.6099 0.0000 -vt 0.8859 0.6072 0.0000 -vt 0.8794 0.5231 0.0000 -vt 0.7483 0.0551 0.0000 -vt 0.7651 0.1471 0.0000 -vt 0.7510 0.1380 0.0000 -vt 0.7779 0.1398 0.0000 -vt 0.9144 0.2153 0.0000 -vt 0.9497 0.2075 0.0000 -vt 0.7466 0.1838 0.0000 -vt 0.8550 0.2181 0.0000 -vt 0.8099 0.2158 0.0000 -vt 0.7741 0.2049 0.0000 -vt 0.3453 0.0972 0.0000 -vt 0.2385 0.1030 0.0000 -vt 0.3104 0.0739 0.0000 -vt 0.2755 0.0719 0.0000 -vt 0.2902 0.0717 0.0000 -vt 0.0944 0.1858 0.0000 -vt 0.0600 0.1858 0.0000 -vt 0.1541 0.1858 0.0000 -vt 0.1933 0.1858 0.0000 -vt 0.2252 0.1858 0.0000 -vt 0.0259 0.1858 0.0000 -vt 0.7779 0.1398 0.0000 -vt 0.7651 0.1471 0.0000 -vt 0.7839 0.0501 0.0000 -vt 0.7510 0.1380 0.0000 -vt 0.2385 0.1030 0.0000 -vt 0.2755 0.0719 0.0000 -vt 0.3104 0.0739 0.0000 -vt 0.2902 0.0717 0.0000 -vt 0.3453 0.0972 0.0000 -vt 0.3627 0.2127 0.0000 -vt 0.7049 0.2127 0.0000 -vt 0.4357 0.0229 0.0000 -vt 0.6319 0.0228 0.0000 -vt 0.6348 0.5377 0.0000 -vt 0.6618 0.4642 0.0000 -vt 0.6823 0.3086 0.0000 -vt 0.5890 0.5821 0.0000 -vt 0.3982 0.5592 0.0000 -vt 0.4263 0.5528 0.0000 -vt 0.4820 0.5644 0.0000 -vt 0.5237 0.6034 0.0000 -vt 0.4678 0.2318 0.0000 -vt 0.4309 0.2270 0.0000 -vt 0.4999 0.2272 0.0000 -vt 0.5055 0.2476 0.0000 -vt 0.5256 0.2239 0.0000 -vt 0.4643 0.2508 0.0000 -vt 0.5338 0.2544 0.0000 -vt 0.5999 0.2317 0.0000 -vt 0.6368 0.2281 0.0000 -vt 0.5678 0.2272 0.0000 -vt 0.5421 0.2239 0.0000 -vt 0.5622 0.2476 0.0000 -vt 0.6034 0.2508 0.0000 -# 478 texture coords - -g man_zbrush002 -usemtl Material__44 -f 5/439/1 8/440/2 7/7/3 6/6/4 -f 9/9/5 10/441/6 5/439/7 6/6/8 -f 11/11/9 13/442/10 12/12/11 -f 11/11/12 14/14/13 15/443/14 13/442/15 -f 17/17/16 134/134/17 16/16/18 18/18/19 -f 19/19/20 20/20/21 18/18/22 16/16/23 -f 22/22/24 21/382/25 23/23/26 2/2/27 -f 21/351/28 24/24/29 26/26/30 25/25/31 -f 27/27/32 30/30/33 29/29/34 28/28/35 -f 127/127/36 1/1/37 20/20/38 19/19/39 -f 23/23/40 21/382/41 31/383/42 3/3/43 -f 25/353/44 33/33/45 18/18/46 32/32/47 -f 18/18/48 20/20/49 32/32/50 -f 128/128/51 32/32/52 20/20/53 1/1/54 -f 34/34/55 30/30/56 36/36/57 35/35/58 -f 36/356/59 39/39/60 38/38/61 37/37/62 -f 40/40/63 43/43/64 42/42/65 41/41/66 -f 44/44/67 45/45/68 41/41/69 42/42/70 -f 47/47/71 46/46/72 43/43/73 48/48/74 -f 49/360/75 45/45/76 44/44/77 48/359/78 -f 50/50/79 52/52/80 51/51/81 -f 53/53/82 54/54/83 51/51/84 52/52/85 -f 55/55/86 57/57/87 56/56/88 -f 59/59/89 58/58/90 57/57/91 60/60/92 -f 58/314/93 62/62/94 61/61/95 -f 56/56/96 61/61/97 62/62/98 55/55/99 -f 63/63/100 57/57/101 58/58/102 64/316/103 -f 64/64/104 58/314/105 61/61/106 65/65/107 -f 61/61/108 56/56/109 66/66/110 65/65/111 -f 66/66/112 56/56/113 57/57/114 63/63/115 -f 33/33/116 22/22/117 17/17/118 18/18/119 -f 39/39/120 22/352/121 33/354/122 38/38/123 -f 17/17/124 22/22/125 2/2/126 129/129/127 -f 32/32/128 128/128/129 200/200/130 67/67/131 -f 69/69/132 68/68/133 71/71/134 70/70/135 -f 130/130/136 71/71/137 72/72/138 207/207/139 -f 73/466/140 75/467/141 74/74/142 -f 76/76/143 78/78/144 77/77/145 -f 69/69/146 78/470/147 76/468/148 68/68/149 -f 77/469/150 131/131/151 80/80/152 79/471/153 -f 80/80/154 81/81/155 75/467/156 79/471/157 -f 82/82/158 84/84/159 83/83/160 -f 83/83/161 85/85/162 82/82/163 -f 83/83/164 84/84/165 74/74/166 86/86/167 -f 68/68/168 74/74/169 72/72/170 71/71/171 -f 72/72/172 87/87/173 223/223/174 207/207/175 -f 83/83/176 88/384/177 85/85/178 -f 85/378/179 67/67/180 200/200/181 89/89/182 -f 67/67/183 85/378/184 88/88/185 31/31/186 -f 63/63/187 64/316/188 8/8/189 -f 64/64/190 65/65/191 15/15/192 -f 10/10/193 13/13/194 65/65/195 66/66/196 -f 5/5/197 10/10/198 66/66/199 63/63/200 -f 62/62/201 58/314/202 59/315/203 90/90/204 -f 52/52/205 91/91/206 92/92/207 53/53/208 -f 50/50/209 91/91/210 52/52/211 -f 19/19/212 50/313/213 93/93/214 -f 74/74/215 75/467/216 86/86/217 -f 38/38/218 33/354/219 26/26/220 28/28/221 -f 26/26/222 24/24/223 27/27/224 28/28/225 -f 24/24/226 21/351/227 22/374/228 -f 38/38/229 28/28/230 29/29/231 37/37/232 -f 25/353/233 32/32/234 67/67/235 21/21/236 -f 31/31/237 21/21/238 67/67/239 -f 75/467/240 81/454/241 86/86/242 -f 86/86/243 81/454/244 83/83/245 -f 75/75/246 73/73/247 79/79/248 -f 12/452/249 95/95/250 94/94/251 11/451/252 -f 14/453/253 11/451/254 94/94/255 96/96/256 -f 96/406/257 97/97/258 7/446/259 14/448/260 -f 7/7/261 8/440/262 15/444/263 14/311/264 -f 94/94/265 95/95/266 97/407/267 96/96/268 -f 9/450/269 6/449/270 99/99/271 98/98/272 -f 97/407/273 95/95/274 98/98/275 99/99/276 -f 98/98/277 95/95/278 12/452/279 9/450/280 -f 12/12/281 13/442/282 10/441/283 9/9/284 -f 63/63/285 8/8/286 5/5/287 -f 8/8/288 64/316/289 15/312/290 -f 57/57/291 55/55/292 100/100/293 60/60/294 -f 101/101/295 59/59/296 60/60/297 54/54/298 -f 62/62/299 90/90/300 100/100/301 55/55/302 -f 71/71/303 130/130/304 70/70/305 -f 44/44/306 42/42/307 103/103/308 102/102/309 -f 47/47/310 105/105/311 104/104/312 46/46/313 -f 42/42/314 46/46/315 104/104/316 103/103/317 -f 44/44/318 102/102/319 105/361/320 47/358/321 -f 103/103/322 107/107/323 106/106/324 102/102/325 -f 105/105/326 109/109/327 108/108/328 104/104/329 -f 104/104/330 108/108/331 107/107/332 103/103/333 -f 102/102/334 106/106/335 109/362/336 105/361/337 -f 93/93/338 246/246/339 127/127/340 19/19/341 -f 110/110/342 118/118/343 112/112/344 111/111/345 -f 113/113/346 108/410/347 109/411/348 114/114/349 -f 107/409/350 108/410/351 113/113/352 115/115/353 -f 106/408/354 114/363/355 109/412/356 -f 116/116/357 112/112/358 118/118/359 117/117/360 -f 116/116/361 117/117/362 119/119/363 136/136/364 -f 115/115/365 117/117/366 118/118/367 -f 107/409/368 121/121/369 120/120/370 106/408/371 -f 106/408/372 120/120/373 122/122/374 114/363/375 -f 115/115/376 121/121/377 107/409/378 -f 246/246/379 93/93/380 123/123/381 4/4/382 -f 74/74/383 84/84/384 72/72/385 -f 72/72/386 84/84/387 82/82/388 87/87/389 -f 82/82/390 85/456/391 89/375/392 87/87/393 -f 78/78/394 132/132/395 77/77/396 -f 49/49/397 40/40/398 34/34/399 35/35/400 -f 29/29/401 34/34/402 40/40/403 41/41/404 -f 45/45/405 49/360/406 35/355/407 37/37/408 -f 41/41/409 45/45/410 37/37/411 29/29/412 -f 36/36/413 30/30/414 27/27/415 39/357/416 -f 29/29/417 30/30/418 34/34/419 -f 36/356/420 37/37/421 35/355/422 -f 15/15/423 65/65/424 13/13/425 -f 121/121/426 110/110/427 111/111/428 120/120/429 -f 120/120/430 111/111/431 112/415/432 122/122/433 -f 121/121/434 118/118/435 110/110/436 -f 26/26/437 33/354/438 25/25/439 -f 24/24/440 22/374/441 39/357/442 27/27/443 -f 119/119/444 117/117/445 115/115/446 113/113/447 -f 114/363/448 116/416/449 136/419/450 -f 118/118/451 121/121/452 115/115/453 -f 7/446/454 97/97/455 99/447/456 6/445/457 -f 132/472/458 131/131/459 77/469/460 -f 124/124/461 125/125/462 101/320/463 -f 200/200/464 133/133/465 89/89/466 -f 89/375/467 133/376/468 223/223/469 87/87/470 -f 50/50/471 51/51/472 100/100/473 -f 100/100/474 51/51/475 54/54/476 60/60/477 -f 93/319/478 50/50/479 100/100/480 90/90/481 -f 124/321/482 101/101/483 54/54/484 53/53/485 -f 59/315/486 101/320/487 125/125/488 90/90/489 -f 126/126/490 124/321/491 53/53/492 92/92/493 -f 92/318/494 91/317/495 16/16/496 -f 16/16/497 91/317/498 50/313/499 19/19/500 -f 76/468/501 73/466/502 74/74/503 68/68/504 -f 73/73/505 76/76/506 77/77/507 79/79/508 -f 129/129/509 137/137/510 134/134/511 17/17/512 -f 125/125/513 93/319/514 90/90/515 -f 135/135/516 265/265/517 125/125/518 124/124/519 -f 48/48/520 43/43/521 40/40/522 49/49/523 -f 42/42/524 43/43/525 46/46/526 -f 48/359/527 44/44/528 47/358/529 -f 130/130/530 204/204/531 70/70/532 -f 69/69/533 70/70/534 204/204/535 205/205/536 -f 124/321/537 126/126/538 266/266/539 135/323/540 -f 16/16/541 134/134/542 126/322/543 92/318/544 -f 119/119/545 113/113/546 114/114/547 136/136/548 -f 122/122/549 112/415/550 116/416/551 -f 114/363/552 122/122/553 116/416/554 -f 78/470/555 69/69/556 205/205/557 212/476/558 -f 132/132/559 78/78/560 212/212/561 -f 126/322/562 134/134/563 137/137/564 266/336/565 -f 138/138/566 141/141/567 140/140/568 139/139/569 -f 142/142/570 141/141/571 138/138/572 143/143/573 -f 144/144/574 146/146/575 145/145/576 -f 144/144/577 145/145/578 148/148/579 147/147/580 -f 151/151/581 150/150/582 149/149/583 152/152/584 -f 153/153/585 149/149/586 150/150/587 154/154/588 -f 156/156/589 2/341/590 23/343/591 155/380/592 -f 155/347/593 159/159/594 158/158/595 157/157/596 -f 160/160/597 163/163/598 162/162/599 161/161/600 -f 127/127/601 153/153/602 154/154/603 1/1/604 -f 23/343/605 3/342/606 164/381/607 155/380/608 -f 166/166/609 154/154/610 150/150/611 159/349/612 -f 159/349/613 150/150/614 165/165/615 -f 128/128/616 1/1/617 154/154/618 166/166/619 -f 167/167/620 169/169/621 168/168/622 161/161/623 -f 168/364/624 172/172/625 171/171/626 170/170/627 -f 173/173/628 176/176/629 175/175/630 174/174/631 -f 177/177/632 175/175/633 176/176/634 178/178/635 -f 181/181/636 180/180/637 174/174/638 179/179/639 -f 182/369/640 180/367/641 177/177/642 178/178/643 -f 183/183/644 185/185/645 184/184/646 -f 186/186/647 184/184/648 185/185/649 187/187/650 -f 188/188/651 190/190/652 189/189/653 -f 193/193/654 192/192/655 189/189/656 191/191/657 -f 191/327/658 195/195/659 194/194/660 -f 190/190/661 188/188/662 194/194/663 195/195/664 -f 197/197/665 196/329/666 191/191/667 189/189/668 -f 196/196/669 198/198/670 195/195/671 191/327/672 -f 195/195/673 198/198/674 199/199/675 190/190/676 -f 199/199/677 197/197/678 189/189/679 190/190/680 -f 165/165/681 150/150/682 151/151/683 156/156/684 -f 170/170/685 171/171/686 165/350/687 156/348/688 -f 151/151/689 129/344/690 2/341/691 156/156/692 -f 166/166/693 201/201/694 200/200/695 128/128/696 -f 205/205/697 204/204/698 203/203/699 202/202/700 -f 130/130/701 207/207/702 206/206/703 203/203/704 -f 208/473/705 210/210/706 209/474/707 -f 211/211/708 213/213/709 212/212/710 -f 205/205/711 202/202/712 211/475/713 212/476/714 -f 213/477/715 215/478/716 214/214/717 131/131/718 -f 214/214/719 215/478/720 209/474/721 216/216/722 -f 217/217/723 219/219/724 218/218/725 -f 219/219/726 217/217/727 220/220/728 -f 219/219/729 221/221/730 210/210/731 218/218/732 -f 202/202/733 203/203/734 206/206/735 210/210/736 -f 206/206/737 207/207/738 223/223/739 222/222/740 -f 219/219/741 220/220/742 224/385/743 -f 220/379/744 225/225/745 200/200/746 201/201/747 -f 201/201/748 164/164/749 224/224/750 220/379/751 -f 197/197/752 139/429/753 196/329/754 -f 196/196/755 148/433/756 198/198/757 -f 143/431/758 199/199/759 198/198/760 145/432/761 -f 138/428/762 197/197/763 199/199/764 143/431/765 -f 194/194/766 226/226/767 193/328/768 191/327/769 -f 184/184/770 186/186/771 228/228/772 227/227/773 -f 183/183/774 184/184/775 227/227/776 -f 153/153/777 229/229/778 183/326/779 -f 210/210/780 221/221/781 209/474/782 -f 171/171/783 163/163/784 158/158/785 165/350/786 -f 158/158/787 163/163/788 160/160/789 157/157/790 -f 157/157/791 156/373/792 155/347/793 -f 171/171/794 172/172/795 162/162/796 163/163/797 -f 201/201/798 166/166/799 159/349/800 155/155/801 -f 164/164/802 201/201/803 155/155/804 -f 209/474/805 221/221/806 216/455/807 -f 221/221/808 219/219/809 216/455/810 -f 209/209/811 215/215/812 208/208/813 -f 146/438/814 144/437/815 231/231/816 230/230/817 -f 147/435/818 232/232/819 231/231/820 144/437/821 -f 232/404/822 147/427/823 140/425/824 233/233/825 -f 140/140/826 147/324/827 148/325/828 139/139/829 -f 231/231/830 232/232/831 233/405/832 230/230/833 -f 142/436/834 235/235/835 234/234/836 141/434/837 -f 233/405/838 234/234/839 235/235/840 230/230/841 -f 235/235/842 142/436/843 146/438/844 230/230/845 -f 146/146/846 142/142/847 143/143/848 145/145/849 -f 197/197/850 138/428/851 139/429/852 -f 139/430/853 148/433/854 196/196/855 -f 189/189/856 192/192/857 236/236/858 188/188/859 -f 237/237/860 187/187/861 192/192/862 193/193/863 -f 194/194/864 188/188/865 236/236/866 226/226/867 -f 203/203/868 204/204/869 130/130/870 -f 177/177/871 239/239/872 238/238/873 175/175/874 -f 181/181/875 179/179/876 241/241/877 240/240/878 -f 175/175/879 238/238/880 241/241/881 179/179/882 -f 177/177/883 181/368/884 240/370/885 239/239/886 -f 238/238/887 239/239/888 243/243/889 242/242/890 -f 240/240/891 241/241/892 245/245/893 244/244/894 -f 241/241/895 238/238/896 242/242/897 245/245/898 -f 239/239/899 240/370/900 244/371/901 243/243/902 -f 229/229/903 153/153/904 127/127/905 246/246/906 -f 247/247/907 250/250/908 249/249/909 248/248/910 -f 252/252/911 251/251/912 244/420/913 245/421/914 -f 242/417/915 253/253/916 252/252/917 245/421/918 -f 243/418/919 244/422/920 251/372/921 -f 254/254/922 255/255/923 248/248/924 249/249/925 -f 254/254/926 256/256/927 257/257/928 255/255/929 -f 253/253/930 248/248/931 255/255/932 -f 242/417/933 243/418/934 259/259/935 258/258/936 -f 243/418/937 251/372/938 260/260/939 259/259/940 -f 253/253/941 242/417/942 258/258/943 -f 246/246/944 4/4/945 261/261/946 229/229/947 -f 210/210/948 206/206/949 218/218/950 -f 206/206/951 222/222/952 217/217/953 218/218/954 -f 217/217/955 222/222/956 225/377/957 220/457/958 -f 212/212/959 213/213/960 132/132/961 -f 182/182/962 169/169/963 167/167/964 173/173/965 -f 162/162/966 176/176/967 173/173/968 167/167/969 -f 178/178/970 172/172/971 169/365/972 182/369/973 -f 176/176/974 162/162/975 172/172/976 178/178/977 -f 168/168/978 170/366/979 160/160/980 161/161/981 -f 162/162/982 167/167/983 161/161/984 -f 168/364/985 169/365/986 172/172/987 -f 148/433/988 145/432/989 198/198/990 -f 258/258/991 259/259/992 250/250/993 247/247/994 -f 259/259/995 260/260/996 249/413/997 250/250/998 -f 258/258/999 247/247/1000 248/248/1001 -f 158/158/1002 159/159/1003 165/350/1004 -f 157/157/1005 160/160/1006 170/366/1007 156/373/1008 -f 257/257/1009 252/252/1010 253/253/1011 255/255/1012 -f 251/372/1013 256/423/1014 254/414/1015 -f 248/248/1016 253/253/1017 258/258/1018 -f 140/425/1019 141/426/1020 234/424/1021 233/233/1022 -f 132/472/1023 213/477/1024 131/131/1025 -f 262/262/1026 237/333/1027 263/263/1028 -f 200/200/1029 225/225/1030 133/133/1031 -f 225/377/1032 222/222/1033 223/223/1034 133/376/1035 -f 183/183/1036 236/236/1037 185/185/1038 -f 236/236/1039 192/192/1040 187/187/1041 185/185/1042 -f 229/332/1043 226/226/1044 236/236/1045 183/183/1046 -f 262/334/1047 186/186/1048 187/187/1049 237/237/1050 -f 193/328/1051 226/226/1052 263/263/1053 237/333/1054 -f 264/264/1055 228/228/1056 186/186/1057 262/334/1058 -f 228/331/1059 149/149/1060 227/330/1061 -f 149/149/1062 153/153/1063 183/326/1064 227/330/1065 -f 211/475/1066 202/202/1067 210/210/1068 208/473/1069 -f 208/208/1070 215/215/1071 213/213/1072 211/211/1073 -f 129/344/1074 151/151/1075 152/152/1076 137/345/1077 -f 263/263/1078 226/226/1079 229/332/1080 -f 135/339/1081 262/262/1082 263/263/1083 265/340/1084 -f 180/180/1085 182/182/1086 173/173/1087 174/174/1088 -f 175/175/1089 179/179/1090 174/174/1091 -f 180/367/1092 181/368/1093 177/177/1094 -f 262/334/1095 135/338/1096 266/337/1097 264/264/1098 -f 149/149/1099 228/331/1100 264/335/1101 152/152/1102 -f 257/257/1103 256/256/1104 251/251/1105 252/252/1106 -f 260/260/1107 254/414/1108 249/413/1109 -f 251/372/1110 254/414/1111 260/260/1112 -f 264/335/1113 266/346/1114 137/345/1115 152/152/1116 -f 267/267/1117 268/268/1118 269/269/1119 270/270/1120 -f 269/269/1121 268/268/1122 271/271/1123 272/272/1124 -f 272/272/1125 271/271/1126 278/278/1127 273/273/1128 -f 271/271/1129 268/268/1130 277/277/1131 -f 274/274/1132 275/275/1133 271/271/1134 277/277/1135 -f 275/275/1136 276/276/1137 278/278/1138 271/271/1139 -f 273/273/1140 278/278/1141 281/281/1142 279/279/1143 -f 278/278/1144 276/276/1145 280/280/1146 281/281/1147 -f 279/279/1148 281/281/1149 303/303/1150 284/284/1151 -f 280/280/1152 304/304/1153 303/303/1154 281/281/1155 -f 270/270/1156 269/269/1157 282/282/1158 -f 269/269/1159 272/272/1160 283/283/1161 282/282/1162 -f 272/272/1163 273/273/1164 283/283/1165 -f 273/273/1166 279/279/1167 307/307/1168 283/283/1169 -f 279/279/1170 284/284/1171 307/307/1172 -f 282/282/1173 283/283/1174 308/308/1175 -f 283/283/1176 307/307/1177 308/308/1178 -f 270/270/1179 282/282/1180 305/305/1181 291/291/1182 -f 267/267/1183 270/270/1184 285/285/1185 -f 270/270/1186 291/291/1187 285/285/1188 -f 274/274/1189 277/277/1190 287/287/1191 286/286/1192 -f 288/288/1193 291/463/1194 290/290/1195 289/289/1196 -f 290/290/1197 293/293/1198 292/292/1199 289/289/1200 -f 293/293/1201 295/295/1202 294/294/1203 292/292/1204 -f 292/292/1205 296/296/1206 289/289/1207 -f 297/297/1208 296/296/1209 292/292/1210 298/298/1211 -f 298/298/1212 292/292/1213 294/294/1214 299/299/1215 -f 295/295/1216 301/301/1217 300/300/1218 294/294/1219 -f 294/294/1220 300/300/1221 302/302/1222 299/299/1223 -f 301/301/1224 284/458/1225 303/459/1226 300/300/1227 -f 302/302/1228 300/300/1229 303/459/1230 304/460/1231 -f 291/463/1232 305/464/1233 290/290/1234 -f 290/290/1235 305/464/1236 306/306/1237 293/293/1238 -f 293/293/1239 306/306/1240 295/295/1241 -f 295/295/1242 306/306/1243 307/461/1244 301/301/1245 -f 301/301/1246 307/461/1247 284/458/1248 -f 305/464/1249 308/465/1250 306/306/1251 -f 306/306/1252 308/465/1253 307/461/1254 -f 305/305/1255 282/282/1256 308/308/1257 -f 288/288/1258 285/462/1259 291/463/1260 -f 297/297/1261 310/310/1262 309/309/1263 296/296/1264 -f 319/387/1265 320/388/1266 318/389/1267 315/386/1268 -f 314/390/1269 311/391/1270 316/392/1271 315/386/1272 -f 312/393/1273 317/394/1274 316/392/1275 311/391/1276 -f 313/395/1277 314/390/1278 315/386/1279 318/389/1280 -f 316/392/1281 317/394/1282 320/388/1283 319/387/1284 -f 316/392/1285 319/387/1286 315/386/1287 -f 314/390/1288 313/395/1289 312/393/1290 311/391/1291 -f 327/397/1292 328/398/1293 326/399/1294 323/396/1295 -f 322/400/1296 321/401/1297 324/402/1298 323/396/1299 -f 321/401/1300 325/403/1301 324/402/1302 -f 322/400/1303 323/396/1304 326/399/1305 -f 324/402/1306 325/403/1307 328/398/1308 327/397/1309 -f 324/402/1310 327/397/1311 323/396/1312 -# 244 polygons - 112 triangles - diff --git a/src/tests/evas/meshes/obj/sweet_home.obj b/src/tests/evas/meshes/obj/sweet_home.obj deleted file mode 100644 index 1a52b933d6..0000000000 --- a/src/tests/evas/meshes/obj/sweet_home.obj +++ /dev/null @@ -1,107 +0,0 @@ -# Blender v2.69 (sub 0) OBJ File: 'sweet_home.blend' -# www.blender.org -v 1.000003 -0.999997 0.000002 -v -0.999997 -1.000003 0.000002 -v -1.000002 0.999998 0.000002 -v 0.999998 1.000002 0.000002 -v 1.000002 -0.999998 2.000002 -v -0.999998 -1.000002 2.000002 -v -1.000002 0.999998 2.000002 -v 0.999997 1.000003 2.000002 -v 0.000002 -1.000000 3.075149 -v -0.000002 1.000000 3.075149 -v 0.666668 -0.644449 2.358384 -v 0.333335 -0.644450 2.716766 -v 0.666667 -0.293067 2.358384 -v 0.333334 -0.293068 2.716766 -v 0.662209 -0.629904 2.991038 -v 0.337794 -0.629904 2.980731 -v 0.662208 -0.307612 2.991038 -v 0.337793 -0.307613 2.980731 -vt 0.013689 0.608350 -vt 0.285640 0.608350 -vt 0.285640 0.978776 -vt 0.013689 0.978776 -vt 0.564957 0.983606 -vt 0.293719 0.983606 -vt 0.293719 0.613180 -vt 0.564957 0.613180 -vt 0.646856 0.021326 -vt 0.083404 0.021326 -vt 0.083369 0.584801 -vt 0.646820 0.584801 -vt 0.949735 0.303064 -vt 0.654355 0.022016 -vt 0.957234 0.303753 -vt 0.654320 0.585490 -vt 0.090869 0.585491 -vt 0.090904 0.022016 -vt 0.820337 0.692442 -vt 0.820337 0.803140 -vt 0.740863 0.803140 -vt 0.740863 0.692442 -vt 0.695284 0.903159 -vt 0.695284 0.830265 -vt 0.768687 0.830265 -vt 0.768687 0.903159 -vt 0.874667 0.789013 -vt 0.874667 0.893367 -vt 0.979009 0.893367 -vt 0.979009 0.789013 -vt 0.567834 0.981515 -vt 0.567834 0.611089 -vt 0.768686 0.903159 -vt 0.768687 0.823686 -vt 0.811715 0.826975 -vt 0.811715 0.899870 -vt 0.591196 0.903159 -vt 0.591196 0.823686 -vt 0.695284 0.826975 -vt 0.695284 0.899870 -vt 0.666035 0.721564 -vt 0.667476 0.661838 -vt 0.740863 0.660019 -vt 0.591196 0.741571 -vt 0.666035 0.660015 -vt 0.666035 0.803140 -vt 0.592658 0.801339 -vt 0.013481 0.981515 -vt 0.104078 0.915663 -vt 0.194676 0.915663 -vt 0.285274 0.981515 -vt 0.194676 0.850582 -vt 0.285274 0.611089 -vt 0.104078 0.850582 -vt 0.013481 0.611089 -vn -0.732233 -0.000002 0.681054 -vn 1.000000 0.000002 0.000000 -vn 0.000002 -1.000000 0.000000 -vn -0.000002 1.000000 -0.000000 -vn -0.732233 -0.000001 -0.681054 -vn -0.031755 -0.000000 0.999496 -vn -0.000000 0.000000 -1.000000 -vn -1.000000 -0.000002 -0.000000 -vn -0.999857 -0.000002 0.016891 -vn 0.999975 0.000002 0.007049 -vn 0.017155 0.999327 0.032422 -vn 0.017160 -0.999327 0.032422 -vn 0.732233 0.000001 0.681054 -vn 0.732233 0.000002 0.681054 -vn 0.732234 0.000002 0.681053 -s off -f 6/1/1 9/2/1 10/3/1 7/4/1 -f 4/5/2 8/6/2 5/7/2 1/8/2 -f 6/9/3 2/10/3 1/11/3 5/12/3 9/13/3 -f 7/14/4 10/15/4 8/16/4 4/17/4 3/18/4 -f 11/19/5 12/20/5 14/21/5 13/22/5 -f 15/23/6 17/24/6 18/25/6 16/26/6 -f 2/27/7 3/28/7 4/29/7 1/30/7 -f 6/2/8 7/3/8 3/31/8 2/32/8 -f 14/33/9 12/34/9 16/35/9 18/36/9 -f 11/37/10 13/38/10 17/39/10 15/40/10 -f 13/21/11 14/41/11 18/42/11 17/43/11 -f 12/44/12 11/45/12 15/46/12 16/47/12 -f 5/48/13 11/49/13 12/50/13 9/51/13 -f 9/51/14 12/50/14 14/52/14 10/53/14 -f 13/54/14 8/55/14 10/53/14 14/52/14 -f 11/49/15 5/48/15 8/55/15 13/54/15 diff --git a/src/tests/evas/meshes/ply/NoNormal_NoUVs_Colors.ply b/src/tests/evas/meshes/ply/NoNormal_NoUVs_Colors.ply deleted file mode 100644 index 0e4e2f81ef..0000000000 --- a/src/tests/evas/meshes/ply/NoNormal_NoUVs_Colors.ply +++ /dev/null @@ -1,1679 +0,0 @@ -ply -format ascii 1.0 -comment Created by Blender 2.69 (sub 0) - www.blender.org, source file: '' -element vertex 1310 -property float x -property float y -property float z -property uchar red -property uchar green -property uchar blue -element face 356 -property list uchar uint vertex_indices -end_header --4.649800 14.945700 -8.785600 0 253 27 --2.020300 14.610600 -8.278800 0 253 27 --1.712600 0.024900 -9.195700 254 68 73 --3.252600 0.001600 -8.591000 254 68 73 --4.649800 14.945700 -8.785600 254 68 73 --3.252600 0.001600 -8.591000 254 88 92 --4.089400 2.633000 -5.031300 254 68 73 --5.308800 13.910900 -3.738700 254 68 73 --1.553600 3.059500 -4.173500 18 0 253 --1.766900 13.754900 -2.918700 0 254 27 --3.061600 3.537800 -3.461700 18 0 252 --1.553600 3.059500 -4.173500 18 0 253 --0.626000 0.031700 -8.336200 19 0 253 --0.971400 14.644800 -6.706400 27 229 30 --1.766900 13.754900 -2.918700 0 253 27 --5.495700 46.043098 -6.732400 254 254 254 --2.827600 38.171799 -8.088300 254 254 254 --5.919200 37.619099 -4.570300 254 254 254 --6.029500 46.188801 -3.956000 254 254 254 --4.685700 36.664101 -1.616400 13 240 28 --4.298500 47.001099 -0.058900 5 247 27 --6.029500 46.188801 -3.956000 0 253 27 --5.919200 37.619099 -4.570300 0 253 27 --6.775800 50.206501 -7.534500 0 254 27 --7.252500 54.524502 -7.615000 0 254 27 -0.000000 53.738098 -8.986800 0 254 27 -0.000000 50.037800 -9.413700 0 254 27 --7.252500 54.524502 -7.615000 0 253 27 --8.747800 53.770199 -7.353300 0 253 27 --8.184300 53.108700 -3.320400 0 253 27 --6.624100 53.529800 -2.653700 0 253 27 --9.827700 52.989700 -7.188500 0 253 27 --14.989100 50.565300 -7.297200 0 253 27 --15.636800 49.715099 -4.015700 0 253 27 --9.508400 52.403099 -3.672700 0 253 27 -0.000000 37.009800 0.550700 172 124 55 -0.000000 47.287498 1.094200 0 252 27 --4.298500 47.001099 -0.058900 0 253 27 --4.685700 36.664101 -1.616400 13 226 40 -0.000000 53.738098 -8.986800 0 254 27 --7.252500 54.524502 -7.615000 0 254 27 --2.321200 55.471001 -5.570800 0 254 27 -0.000000 55.950600 -7.250100 0 254 27 --6.624100 53.529800 -2.653700 0 253 27 --7.813100 49.342701 -3.886900 0 253 27 --6.029500 46.188801 -3.956000 0 253 27 --3.773800 51.093601 -1.034300 0 253 27 --6.029500 46.188801 -3.956000 0 253 27 --4.298500 47.001099 -0.058900 5 247 27 --3.773800 51.093601 -1.034300 0 253 27 -0.000000 50.880199 0.110000 0 253 27 --3.773800 51.093601 -1.034300 0 253 27 --4.298500 47.001099 -0.058900 0 253 27 -0.000000 47.287498 1.094200 0 252 27 --16.136200 50.023998 -7.546200 0 249 27 --14.989100 50.565300 -7.297200 0 252 27 --13.779500 47.417198 -7.715300 0 253 27 --14.885000 46.974701 -7.946000 0 251 27 --13.779500 47.417198 -7.715300 0 253 27 --8.756500 49.321098 -7.632900 0 253 27 --8.927200 49.128502 -4.128200 0 253 27 --14.977100 45.689201 -4.821000 0 248 31 --17.208200 49.477699 -7.512200 0 253 27 --22.585199 48.327702 -7.594400 0 253 27 --22.348700 46.932201 -2.822400 72 195 37 --16.810101 49.139900 -3.928800 0 253 27 --21.936399 43.055199 -3.733600 24 182 75 --16.192200 44.960400 -4.877100 0 236 42 --16.810101 49.139900 -3.928800 0 253 27 --22.348700 46.932201 -2.822400 72 195 37 --22.105101 44.119598 -7.074000 254 254 254 --23.337700 47.268200 -6.945000 254 254 254 --22.585199 48.327702 -7.594400 254 254 254 --21.061199 44.183601 -7.611200 254 254 254 --15.884600 46.520500 -7.855800 0 250 27 --16.192200 44.960400 -4.877100 0 253 27 --21.936399 43.055199 -3.733600 0 253 27 --21.061199 44.183601 -7.611200 52 208 31 --5.598500 31.822901 -1.405400 133 152 48 --7.174300 32.815300 -5.168000 0 253 27 --7.453900 29.910801 -4.782000 0 253 27 --4.970000 33.082802 -8.871300 0 253 27 --5.595300 29.761600 -8.491100 0 253 27 --7.453900 29.910801 -4.782000 0 253 27 --7.174300 32.815300 -5.168000 0 253 27 --6.827700 20.858999 -3.051400 254 254 254 --5.426000 21.341299 -8.131100 254 254 254 --6.194700 19.576300 -3.492500 254 254 254 --0.835600 22.853901 -8.203000 0 253 27 --0.899900 21.410400 -8.342700 0 253 27 --5.426000 21.341299 -8.131100 0 253 27 --5.317800 22.936800 -8.014600 0 253 27 --0.899900 21.410400 -8.342700 219 57 99 --1.957400 20.620800 -1.217700 254 68 73 --1.853000 19.164200 -1.385300 254 68 73 --6.194700 19.576300 -3.492500 114 254 128 --1.853000 19.164200 -1.385300 242 254 242 --1.957400 20.620800 -1.217700 242 254 242 --6.827700 20.858999 -3.051400 168 254 177 --5.259600 15.490400 -9.599400 0 253 27 --5.426000 21.341299 -8.131100 0 253 27 --0.899900 21.410400 -8.342700 0 253 27 --0.294400 16.169500 -7.962700 0 253 27 --0.294400 16.169500 -7.962700 0 253 27 --0.899900 21.410400 -8.342700 1 216 59 --1.853000 19.164200 -1.385300 0 253 27 --1.221800 14.450400 -2.004100 0 253 27 --1.853000 19.164200 -1.385300 254 254 254 --6.194700 19.576300 -3.492500 254 254 254 --6.498700 14.643000 -4.000600 91 254 108 --1.221800 14.450400 -2.004100 0 254 27 --6.498700 14.643000 -4.000600 254 254 254 --6.194700 19.576300 -3.492500 254 254 254 --5.426000 21.341299 -8.131100 254 254 254 --5.259600 15.490400 -9.599400 254 254 254 --7.813100 49.342701 -3.886900 254 68 73 --6.775800 50.206501 -7.534500 254 68 73 --5.495700 46.043098 -6.732400 254 68 73 --6.029500 46.188801 -3.956000 254 68 73 --8.756500 49.321098 -7.632900 0 254 27 --6.775800 50.206501 -7.534500 0 254 27 --7.813100 49.342701 -3.886900 0 254 27 --8.927200 49.128502 -4.128200 0 254 27 --5.495700 46.043098 -6.732400 0 254 27 --6.775800 50.206501 -7.534500 0 254 27 -0.000000 50.037800 -9.413700 0 254 27 -0.000000 45.235802 -8.516300 0 254 27 --3.773800 51.093601 -1.034300 0 253 27 -0.000000 50.880199 0.110000 0 253 27 -0.000000 54.522099 -2.187600 0 253 27 --1.435700 55.057400 -2.884500 0 253 27 --0.163800 60.672798 0.405300 0 254 27 --0.596000 60.268700 -0.255900 0 254 27 --0.605400 59.453602 0.006800 0 254 27 --0.226300 59.631802 0.717000 0 254 27 -0.000000 59.375900 0.272700 0 254 27 --0.605400 59.453602 0.006800 0 254 27 --0.793500 58.611801 -0.022400 0 254 27 -0.000000 58.735298 0.237300 0 253 27 --1.340700 61.343498 -1.024900 254 254 254 --2.209500 61.230499 -1.515000 254 254 254 --2.225300 60.301201 -1.334400 254 254 254 --0.474100 61.294899 -0.607800 254 254 254 --0.179900 61.274700 0.058500 254 254 254 --0.785400 61.539799 -0.048800 254 254 254 --0.163800 60.672798 0.405300 0 254 27 --0.179900 61.274700 0.058500 0 254 27 --0.474100 61.294899 -0.607800 0 254 27 --0.596000 60.268700 -0.255900 0 254 27 --0.785400 61.539799 -0.048800 0 254 27 -0.000000 62.775902 -0.355700 0 254 27 --1.901400 62.898899 -1.262500 0 254 27 --1.792100 61.563202 -0.648200 0 254 27 --1.901400 62.898899 -1.262500 254 254 254 --2.505800 61.413601 -3.333900 254 254 254 --2.209500 61.230499 -1.515000 254 254 254 --1.792100 61.563202 -0.648200 254 254 254 --2.071800 58.080299 -1.837600 254 254 254 --2.043500 58.694401 -1.722000 254 254 254 --2.361600 58.652599 -3.405400 254 254 254 --2.361600 58.652599 -3.405400 254 254 254 --1.480400 57.287800 -3.167400 254 254 254 --2.071800 58.080299 -1.837600 254 254 254 --2.361600 58.652599 -3.405400 254 254 254 --2.043500 58.694401 -1.722000 254 254 254 --2.225300 60.301201 -1.334400 254 254 254 --2.484800 60.667999 -2.078300 254 254 254 --0.596000 60.268700 -0.255900 0 254 27 --2.225300 60.301201 -1.334400 0 254 27 --0.793500 58.611801 -0.022400 0 254 27 --0.605400 59.453602 0.006800 0 254 27 --0.793500 58.611801 -0.022400 0 254 27 --0.860300 57.339199 -0.345300 0 253 27 -0.000000 57.320400 0.190300 0 253 27 -0.000000 58.735298 0.237300 0 253 27 --2.361600 58.652599 -3.405400 254 254 254 --1.507500 57.978802 -4.806700 254 254 254 --1.480400 57.287800 -3.167400 254 254 254 --1.480400 57.287800 -3.167400 254 153 157 --1.435700 55.057400 -2.884500 244 75 71 -0.000000 54.522099 -2.187600 235 81 69 --0.509500 56.862801 -2.081200 254 129 132 --1.435700 55.057400 -2.884500 254 68 73 --1.480400 57.287800 -3.167400 254 68 73 --1.507500 57.978802 -4.806700 254 68 73 --2.321200 55.471001 -5.570800 254 68 73 --5.259600 15.490400 -9.599400 0 253 27 --0.294400 16.169500 -7.962700 0 253 27 --2.020300 14.610600 -8.278800 0 253 27 --0.294400 16.169500 -7.962700 157 130 53 --1.221800 14.450400 -2.004100 0 252 27 --0.971400 14.644800 -6.706400 27 229 30 --5.308800 13.910900 -3.738700 23 254 48 --1.766900 13.754900 -2.918700 0 254 27 --1.221800 14.450400 -2.004100 0 254 27 --6.498700 14.643000 -4.000600 91 254 108 --4.649800 14.945700 -8.785600 254 68 73 --5.308800 13.910900 -3.738700 254 68 73 --6.498700 14.643000 -4.000600 254 68 73 --5.259600 15.490400 -9.599400 254 68 73 --1.957400 20.620800 -1.217700 0 253 27 --0.899900 21.410400 -8.342700 1 216 59 --0.835600 22.853901 -8.203000 2 205 69 --2.189200 21.987900 -1.481800 0 253 27 --7.174300 32.815300 -5.168000 0 253 27 --6.542300 35.480598 -4.902800 0 253 27 --5.283200 35.952900 -7.814600 0 254 27 --4.970000 33.082802 -8.871300 0 253 27 --5.598500 31.822901 -1.405400 133 152 48 --6.542300 35.480598 -4.902800 0 253 27 --7.174300 32.815300 -5.168000 0 253 27 --4.685700 36.664101 -1.616400 13 226 40 --5.598500 31.822901 -1.405400 133 152 48 --3.798500 31.552500 -0.386300 211 97 63 --2.225300 60.301201 -1.334400 254 254 254 --2.209500 61.230499 -1.515000 254 254 254 --2.484800 60.667999 -2.078300 254 254 254 --8.927200 49.128502 -4.128200 0 253 27 --7.813100 49.342701 -3.886900 0 253 27 --8.184300 53.108700 -3.320400 0 253 27 --9.508400 52.403099 -3.672700 0 253 27 --8.184300 53.108700 -3.320400 0 253 27 --8.747800 53.770199 -7.353300 0 253 27 --9.827700 52.989700 -7.188500 0 253 27 --9.508400 52.403099 -3.672700 0 253 27 --8.747800 53.770199 -7.353300 0 254 27 --7.252500 54.524502 -7.615000 0 254 27 --6.775800 50.206501 -7.534500 0 254 27 --8.927200 49.128502 -4.128200 0 253 27 --9.508400 52.403099 -3.672700 0 253 27 --15.636800 49.715099 -4.015700 0 253 27 --14.977100 45.689201 -4.821000 0 248 31 --6.624100 53.529800 -2.653700 0 253 27 --3.773800 51.093601 -1.034300 0 253 27 --1.435700 55.057400 -2.884500 0 253 27 --7.252500 54.524502 -7.615000 0 253 27 --2.321200 55.471001 -5.570800 0 253 27 --7.252500 54.524502 -7.615000 0 253 27 --1.435700 55.057400 -2.884500 0 253 27 --2.209500 61.230499 -1.515000 254 254 254 --2.505800 61.413601 -3.333900 254 254 254 --2.484800 60.667999 -2.078300 254 254 254 --2.484800 60.667999 -2.078300 254 254 254 --2.505800 61.413601 -3.333900 254 254 254 --2.361600 58.652599 -3.405400 254 254 254 --2.209500 61.230499 -1.515000 254 254 254 --1.340700 61.343498 -1.024900 254 254 254 --1.792100 61.563202 -0.648200 254 254 254 --3.061600 3.537800 -3.461700 18 0 252 --3.735600 1.816900 0.228400 18 0 253 --1.568700 1.981700 -0.627100 18 0 253 --1.553600 3.059500 -4.173500 18 0 253 --0.626000 0.031700 -8.336200 18 0 253 --1.553600 3.059500 -4.173500 18 0 253 --1.568700 1.981700 -0.627100 18 0 253 --1.825200 -0.024100 0.601200 18 0 253 --1.825200 -0.024100 0.601200 18 0 253 --3.769300 -0.009000 1.132900 18 0 253 --1.712600 0.024900 -9.195700 19 0 253 --0.626000 0.031700 -8.336200 19 0 253 --1.712600 0.024900 -9.195700 254 68 73 --2.020300 14.610600 -8.278800 0 253 27 --0.971400 14.644800 -6.706400 0 253 27 --0.626000 0.031700 -8.336200 254 68 73 --1.568700 1.981700 -0.627100 18 0 253 --3.735600 1.816900 0.228400 18 0 253 --3.769300 -0.009000 1.132900 18 0 253 --1.825200 -0.024100 0.601200 19 0 253 --4.089400 2.633000 -5.031300 188 254 194 --3.252600 0.001600 -8.591000 0 254 27 --5.176800 -0.025000 -0.598300 254 254 254 --5.390300 1.568200 -1.670300 254 254 254 --3.769300 -0.009000 1.132900 18 0 253 --3.735600 1.816900 0.228400 18 0 253 --5.390300 1.568200 -1.670300 18 0 253 --5.176800 -0.025000 -0.598300 18 0 253 --5.390300 1.568200 -1.670300 18 0 253 --3.735600 1.816900 0.228400 18 0 253 --3.061600 3.537800 -3.461700 18 0 252 --4.089400 2.633000 -5.031300 18 0 252 --3.061600 3.537800 -3.461700 18 0 252 --1.766900 13.754900 -2.918700 0 254 27 --5.308800 13.910900 -3.738700 14 254 41 --4.089400 2.633000 -5.031300 18 0 252 --2.020300 14.610600 -8.278800 0 253 27 --4.649800 14.945700 -8.785600 0 253 27 --5.259600 15.490400 -9.599400 0 253 27 --2.020300 14.610600 -8.278800 0 253 27 --0.294400 16.169500 -7.962700 0 253 27 --0.971400 14.644800 -6.706400 0 253 27 --5.426000 21.341299 -8.131100 254 254 254 --6.827700 20.858999 -3.051400 254 254 254 --6.824000 22.193899 -3.254300 254 254 254 --5.317800 22.936800 -8.014600 254 254 254 --0.845100 29.891001 -9.491500 0 253 27 --0.835600 22.853901 -8.203000 0 253 27 --5.317800 22.936800 -8.014600 0 253 27 --5.595300 29.761600 -8.491100 0 254 27 --1.957400 20.620800 -1.217700 242 254 242 --2.189200 21.987900 -1.481800 218 254 222 --6.824000 22.193899 -3.254300 99 254 117 --6.827700 20.858999 -3.051400 166 254 175 --0.605400 59.453602 0.006800 254 254 254 -0.000000 59.375900 0.272700 254 254 254 --0.226300 59.631802 0.717000 254 254 254 --21.936399 43.055199 -3.733600 24 182 75 --22.348700 46.932201 -2.822400 72 195 37 --23.323000 46.228001 -3.425200 26 230 29 --23.265499 44.290199 -3.614200 37 214 37 --22.105101 44.119598 -7.074000 254 254 254 --23.273100 44.479099 -6.170500 254 254 254 --23.881300 46.267799 -5.995500 254 254 254 --23.337700 47.268200 -6.945000 254 254 254 --22.348700 46.932201 -2.822400 72 195 37 --23.337700 47.268200 -6.945000 0 254 27 --23.881300 46.267799 -5.995500 0 253 27 --23.323000 46.228001 -3.425200 26 230 29 --21.936399 43.055199 -3.733600 254 68 73 --23.265499 44.290199 -3.614200 254 68 73 --23.273100 44.479099 -6.170500 254 68 73 --22.105101 44.119598 -7.074000 254 68 73 --23.323000 46.228001 -3.425200 26 230 29 --24.935400 45.742901 -3.288800 80 189 39 --24.446100 44.099098 -3.039500 144 136 53 --23.265499 44.290199 -3.614200 37 214 37 --23.273100 44.479099 -6.170500 16 254 41 --25.718901 44.407902 -5.989100 47 254 71 --25.982700 45.641201 -5.974700 53 254 75 --23.881300 46.267799 -5.995500 23 254 48 --23.881300 46.267799 -5.995500 0 253 27 --25.982700 45.641201 -5.974700 0 253 27 --24.935400 45.742901 -3.288800 80 189 39 --23.323000 46.228001 -3.425200 26 230 29 --23.265499 44.290199 -3.614200 0 254 27 --24.446100 44.099098 -3.039500 0 254 27 --25.718901 44.407902 -5.989100 47 254 71 --23.273100 44.479099 -6.170500 16 254 41 --3.798500 31.552500 -0.386300 211 97 63 -0.000000 31.552500 0.128500 203 101 62 -0.000000 37.009800 0.550700 172 124 55 --4.685700 36.664101 -1.616400 13 226 40 --27.058001 43.733101 -1.471100 254 68 73 --28.100901 44.177299 -2.470000 231 80 64 --27.637899 42.321201 -1.984400 254 68 73 --26.775499 43.007000 -1.492900 254 68 73 --27.102699 45.320202 -5.735100 75 254 93 --25.982700 45.641201 -5.974700 53 254 75 --25.718901 44.407902 -5.989100 47 254 71 --26.246300 42.901402 -5.383600 20 254 46 --24.935400 45.742901 -3.288800 80 254 99 --25.982700 45.641201 -5.974700 0 254 27 --27.102699 45.320202 -5.735100 0 254 27 --26.753901 45.398300 -2.858600 163 254 174 --24.446100 44.099098 -3.039500 0 249 30 --26.246300 42.901402 -5.383600 19 213 43 --25.718901 44.407902 -5.989100 46 208 34 --28.380600 42.330502 -3.056600 254 68 73 --27.637899 42.321201 -1.984400 254 68 73 --28.100901 44.177299 -2.470000 254 68 73 --28.697901 44.238201 -3.477500 254 68 73 --28.380600 42.330502 -3.056600 254 254 254 --28.697901 44.238201 -3.477500 254 254 254 --28.543800 44.178001 -4.651400 254 254 254 --28.292801 42.543098 -4.446800 254 254 254 --26.753901 45.398300 -2.858600 163 125 53 --28.697901 44.238201 -3.477500 97 175 41 --28.100901 44.177299 -2.470000 231 80 64 --24.935400 45.742901 -3.288800 80 189 39 --26.117701 44.487900 -2.198700 242 74 67 --25.587200 43.557701 -2.038700 253 67 73 --24.446100 44.099098 -3.039500 144 136 53 --24.446100 44.099098 -3.039500 0 249 30 --25.587200 43.557701 -2.038700 0 252 27 --25.491899 42.827301 -2.370100 0 245 34 --26.246300 42.901402 -5.383600 19 213 43 --26.753901 45.398300 -2.858600 163 125 53 --26.117701 44.487900 -2.198700 242 74 67 --24.935400 45.742901 -3.288800 80 189 39 -0.000000 31.552500 0.128500 203 101 62 --3.798500 31.552500 -0.386300 211 97 63 --3.463700 23.872801 -0.356700 254 68 73 -0.000000 24.132099 -0.356700 243 74 70 --2.225300 60.301201 -1.334400 254 254 254 --2.043500 58.694401 -1.722000 254 247 247 --0.793500 58.611801 -0.022400 254 246 246 --0.793500 58.611801 -0.022400 254 246 246 --2.043500 58.694401 -1.722000 254 247 247 --2.071800 58.080299 -1.837600 254 224 225 --0.860300 57.339199 -0.345300 254 172 174 --2.071800 58.080299 -1.837600 254 224 225 --1.480400 57.287800 -3.167400 254 153 157 --0.509500 56.862801 -2.081200 254 129 132 --0.860300 57.339199 -0.345300 254 172 174 --0.179900 61.274700 0.058500 0 254 27 -0.000000 61.912998 -0.048000 0 254 27 --0.785400 61.539799 -0.048800 0 254 27 --15.884600 46.520500 -7.855800 0 250 27 --17.208200 49.477699 -7.512200 6 242 27 --16.136200 50.023998 -7.546200 0 249 27 --14.885000 46.974701 -7.946000 0 251 27 --15.636800 49.715099 -4.015700 0 253 27 --16.136200 50.023998 -7.546200 0 253 27 --17.208200 49.477699 -7.512200 0 253 27 --16.810101 49.139900 -3.928800 0 253 27 --16.192200 44.960400 -4.877100 0 236 42 --15.884600 46.520500 -7.855800 0 253 27 --14.885000 46.974701 -7.946000 0 253 27 --14.977100 45.689201 -4.821000 0 248 31 --16.810101 49.139900 -3.928800 236 81 69 --16.192200 44.960400 -4.877100 200 90 77 --14.977100 45.689201 -4.821000 174 120 62 --15.636800 49.715099 -4.015700 218 94 66 --13.779500 47.417198 -7.715300 0 253 27 --14.989100 50.565300 -7.297200 0 252 27 --9.827700 52.989700 -7.188500 0 253 27 --8.756500 49.321098 -7.632900 0 253 27 --15.636800 49.715099 -4.015700 0 253 27 --14.989100 50.565300 -7.297200 0 253 27 --16.136200 50.023998 -7.546200 0 253 27 --13.779500 47.417198 -7.715300 0 253 27 --14.977100 45.689201 -4.821000 0 253 27 --14.885000 46.974701 -7.946000 0 251 27 --0.971400 14.644800 -6.706400 27 229 30 --1.221800 14.450400 -2.004100 0 252 27 --1.766900 13.754900 -2.918700 0 253 27 --26.117701 44.487900 -2.198700 242 74 67 --27.058001 43.733101 -1.471100 254 68 73 --26.775499 43.007000 -1.492900 254 68 73 --25.587200 43.557701 -2.038700 253 67 73 --25.587200 43.557701 -2.038700 0 252 27 --26.775499 43.007000 -1.492900 0 253 27 --27.637899 42.321201 -1.984400 0 253 27 --25.491899 42.827301 -2.370100 0 245 34 --26.117701 44.487900 -2.198700 242 74 67 --28.100901 44.177299 -2.470000 231 80 64 --27.058001 43.733101 -1.471100 254 68 73 --8.184300 53.108700 -3.320400 0 253 27 --7.813100 49.342701 -3.886900 0 253 27 --6.624100 53.529800 -2.653700 0 253 27 --8.747800 53.770199 -7.353300 0 254 27 --6.775800 50.206501 -7.534500 0 254 27 --8.756500 49.321098 -7.632900 0 254 27 --9.827700 52.989700 -7.188500 0 254 27 --28.543800 44.178001 -4.651400 0 254 27 --28.697901 44.238201 -3.477500 97 254 114 --26.753901 45.398300 -2.858600 163 254 174 --27.102699 45.320202 -5.735100 0 254 27 --26.246300 42.901402 -5.383600 20 231 27 --28.380600 42.330502 -3.056600 0 252 27 --28.292801 42.543098 -4.446800 5 243 27 --28.100901 44.177299 -2.470000 231 80 64 --26.117701 44.487900 -2.198700 242 74 67 --26.753901 45.398300 -2.858600 163 125 53 --1.712600 0.024900 -9.195700 254 254 254 --3.769300 -0.009000 1.132900 0 254 27 --5.176800 -0.025000 -0.598300 0 254 27 --3.252600 0.001600 -8.591000 254 254 254 -0.000000 61.912998 -0.048000 0 254 27 -0.000000 62.775902 -0.355700 0 254 27 --0.785400 61.539799 -0.048800 0 254 27 --0.340300 31.400700 -9.922000 0 253 27 --0.425600 30.069099 -1.503600 0 253 27 --0.845100 29.891001 -9.491500 0 253 27 -0.000000 54.522099 -2.187600 235 81 69 -0.000000 56.862801 -2.081200 254 127 130 --0.509500 56.862801 -2.081200 254 129 132 --0.509500 56.862801 -2.081200 254 129 132 -0.000000 56.862801 -2.081200 254 127 130 -0.000000 57.320400 0.190300 254 190 192 --0.860300 57.339199 -0.345300 254 172 174 --5.598500 31.822901 -1.405400 133 152 48 --7.453900 29.910801 -4.782000 0 253 27 --6.824000 22.193899 -3.254300 99 254 117 --6.824000 22.193899 -3.254300 254 68 73 --7.453900 29.910801 -4.782000 254 68 73 --5.595300 29.761600 -8.491100 254 68 73 --5.317800 22.936800 -8.014600 254 68 73 --3.798500 31.552500 -0.386300 211 97 63 --5.598500 31.822901 -1.405400 133 152 48 --6.824000 22.193899 -3.254300 99 254 117 --2.189200 21.987900 -1.481800 218 254 222 --0.340300 31.400700 -9.922000 0 253 27 --0.845100 29.891001 -9.491500 0 253 27 --5.595300 29.761600 -8.491100 0 254 27 --4.970000 33.082802 -8.871300 0 254 27 --0.835600 22.853901 -8.203000 2 205 69 --0.845100 29.891001 -9.491500 0 241 37 --0.425600 30.069099 -1.503600 0 253 27 --2.189200 21.987900 -1.481800 0 253 27 --2.162800 35.743500 -9.599900 0 254 27 --0.340300 31.400700 -9.922000 0 253 27 --4.970000 33.082802 -8.871300 0 254 27 --5.283200 35.952900 -7.814600 0 254 27 --5.283200 35.952900 -7.814600 0 254 27 --6.542300 35.480598 -4.902800 0 254 27 --5.919200 37.619099 -4.570300 0 254 27 --5.919200 37.619099 -4.570300 0 253 27 --6.542300 35.480598 -4.902800 0 253 27 --5.598500 31.822901 -1.405400 133 152 48 --4.685700 36.664101 -1.616400 13 240 28 --0.474100 61.294899 -0.607800 0 254 27 --1.340700 61.343498 -1.024900 0 254 27 --2.225300 60.301201 -1.334400 0 254 27 --0.596000 60.268700 -0.255900 0 254 27 --1.340700 61.343498 -1.024900 254 254 254 --0.474100 61.294899 -0.607800 254 254 254 --0.785400 61.539799 -0.048800 254 254 254 --1.792100 61.563202 -0.648200 254 254 254 -0.000000 45.235802 -8.516300 0 253 27 -0.000000 38.221600 -8.073300 0 253 27 --2.827600 38.171799 -8.088300 0 253 27 --5.495700 46.043098 -6.732400 0 253 27 --0.425600 30.069099 -1.503600 254 254 254 --3.798500 31.552500 -0.386300 254 254 254 --2.189200 21.987900 -1.481800 254 254 254 -0.000000 31.547001 -9.939100 254 68 73 -0.000000 30.215401 -1.522000 254 68 73 --0.425600 30.069099 -1.503600 254 68 73 --0.340300 31.400700 -9.922000 254 68 73 --21.061199 44.183601 -7.611200 52 208 31 --22.585199 48.327702 -7.594400 104 170 42 --17.208200 49.477699 -7.512200 6 242 27 --15.884600 46.520500 -7.855800 0 250 27 --22.348700 46.932201 -2.822400 72 195 37 --22.585199 48.327702 -7.594400 0 253 27 --23.337700 47.268200 -6.945000 0 254 27 --21.061199 44.183601 -7.611200 52 208 31 --21.936399 43.055199 -3.733600 0 253 27 --22.105101 44.119598 -7.074000 30 225 27 -0.000000 59.375900 0.272700 254 254 254 -0.226300 59.631802 0.717000 254 254 254 --0.226300 59.631802 0.717000 254 254 254 --0.163800 60.672798 0.405300 0 254 27 --0.226300 59.631802 0.717000 0 254 27 -0.226300 59.631802 0.717000 0 254 27 -0.163800 60.672798 0.405300 0 254 27 --0.340300 31.400700 -9.922000 0 253 27 --2.162800 35.743500 -9.599900 0 253 27 -0.000000 35.795200 -9.599900 0 253 27 -0.000000 31.547001 -9.939100 0 253 27 --5.919200 37.619099 -4.570300 0 254 27 --2.827600 38.171799 -8.088300 0 254 27 --2.162800 35.743500 -9.599900 0 254 27 --5.283200 35.952900 -7.814600 0 254 27 --28.543800 44.178001 -4.651400 254 254 254 --27.102699 45.320202 -5.735100 254 254 254 --26.246300 42.901402 -5.383600 254 254 254 --28.292801 42.543098 -4.446800 254 254 254 --25.491899 42.827301 -2.370100 0 254 27 --27.637899 42.321201 -1.984400 0 254 27 --28.380600 42.330502 -3.056600 0 254 27 --26.246300 42.901402 -5.383600 20 231 27 --25.491899 42.827301 -2.370100 0 253 27 --28.380600 42.330502 -3.056600 0 252 27 --0.179900 61.274700 0.058500 0 254 27 --0.163800 60.672798 0.405300 0 254 27 -0.163800 60.672798 0.405300 0 254 27 -0.179900 61.274700 0.058500 0 254 27 -0.000000 61.912998 -0.048000 0 254 27 --0.179900 61.274700 0.058500 0 254 27 -0.179900 61.274700 0.058500 0 254 27 --2.162800 35.743500 -9.599900 0 253 27 --2.827600 38.171799 -8.088300 0 253 27 -0.000000 38.221600 -8.073300 0 253 27 -0.000000 35.795200 -9.599900 0 253 27 -4.620900 14.945700 -8.516100 0 253 27 -3.252600 0.001600 -8.591000 235 80 66 -1.712600 0.024900 -9.195700 254 68 73 -1.456400 14.610600 -8.695100 0 253 27 -4.089400 2.633000 -5.031300 18 0 253 -3.252600 0.001600 -8.591000 19 0 253 -4.620900 14.945700 -8.516100 0 247 31 -5.308800 13.910900 -3.738700 0 253 27 -1.553600 3.059500 -4.173500 18 0 253 -3.061600 3.537800 -3.461700 18 0 253 -1.766900 13.754900 -2.918700 0 254 27 -1.553600 3.059500 -4.173500 254 254 254 -1.766900 13.754900 -2.918700 254 254 254 -1.239800 14.644800 -6.465300 254 254 254 -0.626000 0.031700 -8.336200 254 254 254 -5.495700 46.043098 -6.732400 0 252 27 -6.029500 46.188801 -3.956000 0 253 27 -5.919200 37.619099 -4.570300 9 98 162 -2.827600 38.171799 -8.088300 8 119 142 -4.685700 36.664101 -1.616400 0 250 28 -5.919200 37.619099 -4.570300 9 98 162 -6.029500 46.188801 -3.956000 0 253 27 -4.298500 47.001099 -0.058900 0 253 27 -6.775800 50.206501 -7.534500 0 253 27 -0.000000 50.037800 -9.413700 0 253 27 -0.000000 53.738098 -8.986800 0 253 27 -7.252500 54.524502 -7.615000 0 254 27 -7.252500 54.524502 -7.615000 0 254 27 -6.624100 53.529800 -2.653700 0 253 27 -8.184300 53.108700 -3.320400 0 253 27 -8.747800 53.770199 -7.353300 0 253 27 -9.827700 52.989700 -7.188500 0 253 27 -9.508400 52.403099 -3.672700 0 253 27 -15.636800 49.715099 -4.015700 1 215 59 -14.989100 50.565300 -7.297200 0 249 29 -0.000000 37.009800 0.550700 0 253 27 -4.685700 36.664101 -1.616400 0 250 28 -4.298500 47.001099 -0.058900 0 253 27 -0.000000 47.287498 1.094200 0 253 27 -0.000000 53.738098 -8.986800 0 253 27 -0.000000 55.950600 -7.250100 0 253 27 -2.321200 55.471001 -5.570800 0 253 27 -7.252500 54.524502 -7.615000 0 254 27 -3.773800 51.093601 -1.034300 0 253 27 -4.298500 47.001099 -0.058900 0 253 27 -6.029500 46.188801 -3.956000 0 253 27 -6.624100 53.529800 -2.653700 0 253 27 -6.624100 53.529800 -2.653700 254 68 73 -6.029500 46.188801 -3.956000 254 68 73 -7.813100 49.342701 -3.886900 254 68 73 -0.000000 50.880199 0.110000 0 253 27 -0.000000 47.287498 1.094200 0 252 27 -4.298500 47.001099 -0.058900 0 253 27 -3.773800 51.093601 -1.034300 0 253 27 -16.136200 50.023998 -7.546200 0 253 27 -14.885000 46.974701 -7.946000 0 253 27 -13.779500 47.417198 -7.715300 0 253 27 -14.989100 50.565300 -7.297200 0 253 27 -13.779500 47.417198 -7.715300 0 253 27 -14.977100 45.689201 -4.821000 0 253 27 -8.927200 49.128502 -4.128200 0 253 27 -8.756500 49.321098 -7.632900 0 253 27 -17.208200 49.477699 -7.512200 0 227 47 -16.810101 49.139900 -3.928800 35 133 112 -22.348700 46.932201 -2.822400 19 0 250 -22.585199 48.327702 -7.594400 0 236 38 -21.936399 43.055199 -3.733600 19 0 253 -22.348700 46.932201 -2.822400 19 0 250 -16.810101 49.139900 -3.928800 35 133 112 -16.192200 44.960400 -4.877100 18 0 253 -22.105101 44.119598 -7.074000 0 253 27 -21.061199 44.183601 -7.611200 0 253 27 -22.585199 48.327702 -7.594400 0 253 27 -23.337700 47.268200 -6.945000 0 253 27 -15.884600 46.520500 -7.855800 0 253 27 -21.061199 44.183601 -7.611200 0 253 27 -21.936399 43.055199 -3.733600 0 253 27 -16.192200 44.960400 -4.877100 0 253 27 -5.598500 31.822901 -1.404300 0 240 37 -7.453900 29.910801 -4.780100 18 0 251 -7.174300 32.815300 -5.167300 17 7 244 -4.970000 33.082802 -8.871900 18 0 252 -7.174300 32.815300 -5.167300 17 7 244 -7.453900 29.910801 -4.780100 18 0 251 -5.595300 29.761600 -8.492500 18 0 253 -6.827700 20.858999 -3.044800 0 231 44 -6.194700 19.576300 -3.478600 0 248 31 -5.426000 21.341299 -8.132600 15 21 230 -0.835600 22.853901 -8.210700 0 253 27 -5.317800 22.936800 -8.016200 0 253 27 -5.426000 21.341299 -8.132600 0 253 27 -0.899900 21.410400 -8.349400 0 253 27 -0.899900 21.410400 -8.349400 254 254 254 -1.853000 19.164200 -1.371600 254 254 254 -1.957400 20.620800 -1.211500 254 254 254 -6.194700 19.576300 -3.478600 0 248 31 -6.827700 20.858999 -3.044800 0 231 44 -1.957400 20.620800 -1.211500 0 253 27 -1.853000 19.164200 -1.371600 0 253 27 -5.117200 15.490400 -9.679700 0 253 27 -0.134100 16.169500 -9.174700 0 253 27 -0.899900 21.410400 -8.349400 0 253 27 -5.426000 21.341299 -8.132600 0 253 27 -0.134100 16.169500 -9.174700 0 254 27 -1.716700 14.450400 -2.459200 0 254 27 -1.853000 19.164200 -1.371600 0 254 27 -0.899900 21.410400 -8.349400 0 254 27 -1.853000 19.164200 -1.371600 0 253 27 -1.716700 14.450400 -2.459200 0 253 27 -6.069200 14.643000 -3.762300 0 253 27 -6.194700 19.576300 -3.478600 0 248 31 -6.069200 14.643000 -3.762300 0 253 27 -5.117200 15.490400 -9.679700 2 202 70 -5.426000 21.341299 -8.132600 15 21 230 -6.194700 19.576300 -3.478600 0 248 31 -7.813100 49.342701 -3.886900 0 253 27 -6.029500 46.188801 -3.956000 0 253 27 -5.495700 46.043098 -6.732400 0 252 27 -6.775800 50.206501 -7.534500 0 253 27 -8.756500 49.321098 -7.632900 254 68 73 -8.927200 49.128502 -4.128200 254 68 73 -7.813100 49.342701 -3.886900 254 68 73 -6.775800 50.206501 -7.534500 254 68 73 -5.495700 46.043098 -6.732400 0 253 27 -0.000000 45.235802 -8.516300 0 253 27 -0.000000 50.037800 -9.413700 0 253 27 -6.775800 50.206501 -7.534500 0 253 27 -3.773800 51.093601 -1.034300 0 253 27 -1.435700 55.057400 -2.884500 0 253 27 -0.000000 54.522099 -2.187600 0 253 27 -0.000000 50.880199 0.110000 0 253 27 -0.163800 60.672798 0.405300 0 253 27 -0.226300 59.631802 0.717000 0 253 27 -0.605400 59.453602 0.006800 0 253 27 -0.596000 60.268700 -0.255900 0 253 27 -0.000000 59.375900 0.272700 0 253 27 -0.000000 58.735298 0.237300 0 253 27 -0.793500 58.611801 -0.022400 0 253 27 -0.605400 59.453602 0.006800 0 253 27 -1.340700 61.343498 -1.024900 254 254 254 -2.225300 60.301201 -1.334400 254 254 254 -2.209500 61.230499 -1.515000 254 254 254 -0.474100 61.294899 -0.607800 0 253 27 -0.785400 61.539799 -0.048800 0 253 27 -0.179900 61.274700 0.058500 0 253 27 -0.163800 60.672798 0.405300 0 253 27 -0.596000 60.268700 -0.255900 0 253 27 -0.474100 61.294899 -0.607800 0 253 27 -0.179900 61.274700 0.058500 0 253 27 -0.785400 61.539799 -0.048800 0 253 27 -1.792100 61.563202 -0.648200 0 253 27 -1.901400 62.898899 -1.262500 0 253 27 -0.000000 62.775902 -0.355700 0 253 27 -1.901400 62.898899 -1.262500 254 73 78 -1.792100 61.563202 -0.648200 254 68 73 -2.209500 61.230499 -1.515000 254 68 73 -2.505800 61.413601 -3.333900 254 68 73 -2.071800 58.080299 -1.837600 254 254 254 -2.361600 58.652599 -3.405400 254 254 254 -2.043500 58.694401 -1.722000 254 254 254 -2.361600 58.652599 -3.405400 254 254 254 -2.071800 58.080299 -1.837600 254 254 254 -1.480400 57.287800 -3.167400 254 254 254 -2.361600 58.652599 -3.405400 254 254 254 -2.484800 60.667999 -2.078300 254 254 254 -2.225300 60.301201 -1.334400 254 254 254 -2.043500 58.694401 -1.722000 254 254 254 -0.596000 60.268700 -0.255900 0 253 27 -0.605400 59.453602 0.006800 0 253 27 -0.793500 58.611801 -0.022400 0 253 27 -2.225300 60.301201 -1.334400 0 253 27 -0.793500 58.611801 -0.022400 254 68 73 -0.000000 58.735298 0.237300 254 68 73 -0.000000 57.320400 0.190300 254 68 73 -0.860300 57.339199 -0.345300 254 68 73 -2.361600 58.652599 -3.405400 254 254 254 -1.480400 57.287800 -3.167400 254 254 254 -1.507500 57.978802 -4.806700 254 254 254 -1.480400 57.287800 -3.167400 0 253 27 -0.509500 56.862801 -2.081200 0 253 27 -0.000000 54.522099 -2.187600 0 253 27 -1.435700 55.057400 -2.884500 0 254 27 -1.435700 55.057400 -2.884500 254 68 73 -2.321200 55.471001 -5.570800 254 68 73 -1.507500 57.978802 -4.806700 254 68 73 -1.480400 57.287800 -3.167400 254 68 73 -5.117200 15.490400 -9.679700 0 253 27 -1.456400 14.610600 -8.695100 0 253 27 -0.134100 16.169500 -9.174700 0 253 27 -0.134100 16.169500 -9.174700 254 254 254 -1.239800 14.644800 -6.465300 254 254 254 -1.716700 14.450400 -2.459200 254 254 254 -5.308800 13.910900 -3.738700 0 253 27 -6.069200 14.643000 -3.762300 0 253 27 -1.716700 14.450400 -2.459200 0 253 27 -1.766900 13.754900 -2.918700 0 253 27 -4.620900 14.945700 -8.516100 0 247 31 -5.117200 15.490400 -9.679700 2 205 68 -6.069200 14.643000 -3.762300 0 253 27 -5.308800 13.910900 -3.738700 0 253 27 -1.957400 20.620800 -1.211500 254 254 254 -2.189200 21.987900 -1.483700 254 254 254 -0.835600 22.853901 -8.210700 254 254 254 -0.899900 21.410400 -8.349400 254 254 254 -7.174300 32.815300 -5.167300 17 7 244 -4.970000 33.082802 -8.871900 18 0 252 -5.283200 35.952900 -7.814600 18 1 249 -6.542300 35.480598 -4.902800 15 32 221 -5.598500 31.822901 -1.404300 0 240 37 -7.174300 32.815300 -5.167300 17 7 244 -6.542300 35.480598 -4.902800 15 32 221 -4.685700 36.664101 -1.616400 0 250 28 -3.798500 31.552500 -0.388900 0 253 27 -5.598500 31.822901 -1.404300 0 240 37 -2.225300 60.301201 -1.334400 254 254 254 -2.484800 60.667999 -2.078300 254 254 254 -2.209500 61.230499 -1.515000 254 254 254 -8.927200 49.128502 -4.128200 254 68 73 -9.508400 52.403099 -3.672700 254 68 73 -8.184300 53.108700 -3.320400 254 68 73 -7.813100 49.342701 -3.886900 254 68 73 -8.184300 53.108700 -3.320400 0 253 27 -9.508400 52.403099 -3.672700 0 253 27 -9.827700 52.989700 -7.188500 0 253 27 -8.747800 53.770199 -7.353300 0 253 27 -8.747800 53.770199 -7.353300 0 253 27 -6.775800 50.206501 -7.534500 0 253 27 -7.252500 54.524502 -7.615000 0 254 27 -8.927200 49.128502 -4.128200 0 253 27 -14.977100 45.689201 -4.821000 18 0 253 -15.636800 49.715099 -4.015700 29 188 60 -9.508400 52.403099 -3.672700 0 253 27 -1.435700 55.057400 -2.884500 0 253 27 -3.773800 51.093601 -1.034300 0 253 27 -6.624100 53.529800 -2.653700 0 253 27 -7.252500 54.524502 -7.615000 0 253 27 -2.321200 55.471001 -5.570800 0 253 27 -1.435700 55.057400 -2.884500 0 253 27 -7.252500 54.524502 -7.615000 0 253 27 -2.209500 61.230499 -1.515000 254 254 254 -2.484800 60.667999 -2.078300 254 254 254 -2.505800 61.413601 -3.333900 254 254 254 -2.484800 60.667999 -2.078300 254 254 254 -2.361600 58.652599 -3.405400 254 254 254 -2.505800 61.413601 -3.333900 254 254 254 -2.209500 61.230499 -1.515000 254 68 73 -1.792100 61.563202 -0.648200 254 68 73 -1.340700 61.343498 -1.024900 254 68 73 -3.061600 3.537800 -3.461700 18 0 253 -1.553600 3.059500 -4.173500 18 0 253 -1.568700 1.981700 -0.627100 19 0 253 -3.735600 1.816900 0.228400 19 0 253 -0.626000 0.031700 -8.336200 0 254 27 -1.825200 -0.024100 0.601200 254 254 254 -1.568700 1.981700 -0.627100 254 254 254 -1.553600 3.059500 -4.173500 186 254 192 -1.825200 -0.024100 0.601200 0 254 27 -0.626000 0.031700 -8.336200 253 254 253 -1.712600 0.024900 -9.195700 254 254 254 -3.769300 -0.009000 1.132900 0 254 27 -1.712600 0.024900 -9.195700 254 68 73 -0.626000 0.031700 -8.336200 254 68 73 -1.239800 14.644800 -6.465300 254 68 73 -1.456400 14.610600 -8.695100 254 68 73 -1.568700 1.981700 -0.627100 19 0 253 -1.825200 -0.024100 0.601200 19 0 253 -3.769300 -0.009000 1.132900 19 0 253 -3.735600 1.816900 0.228400 19 0 253 -4.089400 2.633000 -5.031300 18 0 253 -5.390300 1.568200 -1.670300 18 0 253 -5.176800 -0.025000 -0.598300 18 0 253 -3.252600 0.001600 -8.591000 19 0 253 -3.769300 -0.009000 1.132900 18 0 253 -5.176800 -0.025000 -0.598300 18 0 253 -5.390300 1.568200 -1.670300 18 0 253 -3.735600 1.816900 0.228400 18 0 253 -5.390300 1.568200 -1.670300 18 0 253 -4.089400 2.633000 -5.031300 18 0 253 -3.061600 3.537800 -3.461700 18 0 253 -3.735600 1.816900 0.228400 18 0 253 -3.061600 3.537800 -3.461700 18 0 253 -4.089400 2.633000 -5.031300 18 0 253 -5.308800 13.910900 -3.738700 0 253 27 -1.766900 13.754900 -2.918700 0 253 27 -5.117200 15.490400 -9.679700 0 253 27 -4.620900 14.945700 -8.516100 0 253 27 -1.456400 14.610600 -8.695100 0 253 27 -1.456400 14.610600 -8.695100 254 254 254 -1.239800 14.644800 -6.465300 254 254 254 -0.134100 16.169500 -9.174700 254 254 254 -5.426000 21.341299 -8.132600 15 21 230 -5.317800 22.936800 -8.016200 18 0 252 -6.824000 22.193899 -3.251500 3 179 89 -6.827700 20.858999 -3.044800 0 231 44 -0.845100 29.891001 -9.498900 0 253 27 -5.595300 29.761600 -8.492500 0 253 27 -5.317800 22.936800 -8.016200 0 253 27 -0.835600 22.853901 -8.210700 0 253 27 -1.957400 20.620800 -1.211500 254 68 73 -6.827700 20.858999 -3.044800 232 61 86 -6.824000 22.193899 -3.251500 185 47 122 -2.189200 21.987900 -1.483700 254 68 73 -0.605400 59.453602 0.006800 254 68 73 -0.226300 59.631802 0.717000 254 68 73 -0.000000 59.375900 0.272700 254 68 73 -21.936399 43.055199 -3.733600 19 0 253 -23.265499 44.290199 -3.614200 19 0 253 -23.323000 46.228001 -3.425200 19 0 251 -22.348700 46.932201 -2.822400 20 0 250 -22.105101 44.119598 -7.074000 0 253 27 -23.337700 47.268200 -6.945000 0 253 27 -23.881300 46.267799 -5.995500 0 253 27 -23.273100 44.479099 -6.170500 0 253 27 -22.348700 46.932201 -2.822400 18 0 249 -23.323000 46.228001 -3.425200 18 0 251 -23.881300 46.267799 -5.995500 12 63 193 -23.337700 47.268200 -6.945000 2 175 92 -21.936399 43.055199 -3.733600 18 0 253 -22.105101 44.119598 -7.074000 18 0 253 -23.273100 44.479099 -6.170500 18 0 253 -23.265499 44.290199 -3.614200 18 0 253 -23.323000 46.228001 -3.425200 19 0 251 -23.265499 44.290199 -3.614200 19 0 253 -24.446100 44.099098 -3.039500 19 0 253 -24.935400 45.742901 -3.288800 20 0 251 -23.273100 44.479099 -6.170500 0 253 27 -23.881300 46.267799 -5.995500 0 253 27 -25.982700 45.641201 -5.974700 0 253 27 -25.718901 44.407902 -5.989100 0 253 27 -23.881300 46.267799 -5.995500 64 24 202 -23.323000 46.228001 -3.425200 19 0 251 -24.935400 45.742901 -3.288800 20 0 251 -25.982700 45.641201 -5.974700 65 29 197 -23.265499 44.290199 -3.614200 0 251 27 -23.273100 44.479099 -6.170500 0 253 27 -25.718901 44.407902 -5.989100 0 253 27 -24.446100 44.099098 -3.039500 53 205 30 -3.798500 31.552500 -0.388900 57 208 35 -4.685700 36.664101 -1.616400 0 250 28 -0.000000 37.009800 0.550700 172 124 55 -0.000000 31.552500 0.128500 203 101 62 -27.058001 43.733101 -1.471100 19 0 253 -26.775499 43.007000 -1.492900 19 0 253 -27.637899 42.321201 -1.984400 19 0 253 -28.100901 44.177299 -2.470000 19 0 253 -27.102699 45.320202 -5.735100 0 253 27 -26.246300 42.901402 -5.383600 0 252 27 -25.718901 44.407902 -5.989100 0 253 27 -25.982700 45.641201 -5.974700 0 253 27 -24.935400 45.742901 -3.288800 20 0 251 -26.753901 45.398300 -2.858600 21 0 250 -27.102699 45.320202 -5.735100 69 22 201 -25.982700 45.641201 -5.974700 65 29 197 -24.446100 44.099098 -3.039500 254 254 254 -25.718901 44.407902 -5.989100 254 254 254 -26.246300 42.901402 -5.383600 254 254 254 -28.380600 42.330502 -3.056600 19 0 253 -28.697901 44.238201 -3.477500 20 0 252 -28.100901 44.177299 -2.470000 19 0 253 -27.637899 42.321201 -1.984400 19 0 253 -28.380600 42.330502 -3.056600 19 0 253 -28.292801 42.543098 -4.446800 19 0 253 -28.543800 44.178001 -4.651400 20 3 248 -28.697901 44.238201 -3.477500 20 0 252 -26.753901 45.398300 -2.858600 20 0 250 -28.100901 44.177299 -2.470000 19 0 253 -28.697901 44.238201 -3.477500 20 0 252 -24.935400 45.742901 -3.288800 20 0 251 -24.446100 44.099098 -3.039500 19 0 253 -25.587200 43.557701 -2.038700 19 0 253 -26.117701 44.487900 -2.198700 19 0 253 -24.446100 44.099098 -3.039500 254 68 73 -26.246300 42.901402 -5.383600 254 68 73 -25.491899 42.827301 -2.370100 254 68 73 -25.587200 43.557701 -2.038700 254 68 73 -26.753901 45.398300 -2.858600 21 0 250 -24.935400 45.742901 -3.288800 20 0 251 -26.117701 44.487900 -2.198700 19 0 253 -0.000000 31.552500 0.128500 0 253 27 -0.000000 24.132099 -0.356700 0 253 27 -3.463700 23.872801 -0.356700 0 253 27 -3.798500 31.552500 -0.388900 0 253 27 -2.225300 60.301201 -1.334400 0 253 27 -0.793500 58.611801 -0.022400 0 253 27 -2.043500 58.694401 -1.722000 0 253 27 -0.793500 58.611801 -0.022400 0 253 27 -0.860300 57.339199 -0.345300 0 253 27 -2.071800 58.080299 -1.837600 0 253 27 -2.043500 58.694401 -1.722000 0 253 27 -2.071800 58.080299 -1.837600 254 68 73 -0.860300 57.339199 -0.345300 254 68 73 -0.509500 56.862801 -2.081200 254 68 73 -1.480400 57.287800 -3.167400 254 68 73 -0.179900 61.274700 0.058500 0 254 27 -0.785400 61.539799 -0.048800 0 254 27 -0.000000 61.912998 -0.048000 0 254 27 -15.884600 46.520500 -7.855800 0 253 27 -14.885000 46.974701 -7.946000 0 253 27 -16.136200 50.023998 -7.546200 0 253 27 -17.208200 49.477699 -7.512200 0 253 27 -15.636800 49.715099 -4.015700 1 215 59 -16.810101 49.139900 -3.928800 5 158 110 -17.208200 49.477699 -7.512200 0 227 47 -16.136200 50.023998 -7.546200 0 244 34 -16.192200 44.960400 -4.877100 254 252 252 -14.977100 45.689201 -4.821000 254 202 204 -14.885000 46.974701 -7.946000 254 123 127 -15.884600 46.520500 -7.855800 254 212 213 -16.810101 49.139900 -3.928800 35 133 112 -15.636800 49.715099 -4.015700 25 190 59 -14.977100 45.689201 -4.821000 18 0 253 -16.192200 44.960400 -4.877100 18 0 253 -13.779500 47.417198 -7.715300 12 79 181 -8.756500 49.321098 -7.632900 0 250 29 -9.827700 52.989700 -7.188500 0 253 27 -14.989100 50.565300 -7.297200 0 249 29 -15.636800 49.715099 -4.015700 1 215 59 -16.136200 50.023998 -7.546200 0 244 34 -14.989100 50.565300 -7.297200 0 249 29 -13.779500 47.417198 -7.715300 254 70 75 -14.885000 46.974701 -7.946000 254 123 127 -14.977100 45.689201 -4.821000 254 202 204 -1.239800 14.644800 -6.465300 254 254 254 -1.766900 13.754900 -2.918700 254 254 254 -1.716700 14.450400 -2.459200 254 254 254 -26.117701 44.487900 -2.198700 19 0 253 -25.587200 43.557701 -2.038700 19 0 253 -26.775499 43.007000 -1.492900 19 0 253 -27.058001 43.733101 -1.471100 19 0 253 -25.587200 43.557701 -2.038700 19 0 253 -25.491899 42.827301 -2.370100 19 0 253 -27.637899 42.321201 -1.984400 19 0 253 -26.775499 43.007000 -1.492900 19 0 253 -26.117701 44.487900 -2.198700 19 0 253 -27.058001 43.733101 -1.471100 19 0 253 -28.100901 44.177299 -2.470000 19 0 253 -8.184300 53.108700 -3.320400 254 68 73 -6.624100 53.529800 -2.653700 254 68 73 -7.813100 49.342701 -3.886900 254 68 73 -8.747800 53.770199 -7.353300 0 253 27 -9.827700 52.989700 -7.188500 0 253 27 -8.756500 49.321098 -7.632900 0 253 27 -6.775800 50.206501 -7.534500 0 253 27 -28.543800 44.178001 -4.651400 20 3 248 -27.102699 45.320202 -5.735100 12 64 193 -26.753901 45.398300 -2.858600 20 0 250 -28.697901 44.238201 -3.477500 20 0 252 -26.246300 42.901402 -5.383600 0 252 27 -28.292801 42.543098 -4.446800 87 180 37 -28.380600 42.330502 -3.056600 242 73 67 -28.100901 44.177299 -2.470000 19 0 253 -26.753901 45.398300 -2.858600 21 0 250 -26.117701 44.487900 -2.198700 19 0 253 -1.712600 0.024900 -9.195700 19 0 253 -3.252600 0.001600 -8.591000 19 0 253 -5.176800 -0.025000 -0.598300 18 0 253 -3.769300 -0.009000 1.132900 18 0 253 -0.000000 61.912998 -0.048000 0 254 27 -0.785400 61.539799 -0.048800 0 254 27 -0.000000 62.775902 -0.355700 0 254 27 -0.340300 31.400700 -9.928000 254 254 254 -0.845100 29.891001 -9.498900 254 254 254 -0.425600 30.069099 -1.507500 254 254 254 -0.509500 56.862801 -2.081200 254 127 129 -0.509500 56.862801 -2.081200 0 253 27 -0.860300 57.339199 -0.345300 0 253 27 -0.000000 57.320400 0.190300 0 253 27 -0.000000 56.862801 -2.081200 0 253 27 -5.598500 31.822901 -1.404300 0 240 37 -6.824000 22.193899 -3.251500 3 179 89 -7.453900 29.910801 -4.780100 18 0 251 -6.824000 22.193899 -3.251500 3 179 89 -5.317800 22.936800 -8.016200 18 0 252 -5.595300 29.761600 -8.492500 18 0 253 -7.453900 29.910801 -4.780100 18 0 251 -3.798500 31.552500 -0.388900 0 253 27 -2.189200 21.987900 -1.483700 0 253 27 -6.824000 22.193899 -3.251500 3 179 89 -5.598500 31.822901 -1.404300 0 240 37 -0.340300 31.400700 -9.928000 0 253 27 -4.970000 33.082802 -8.871900 0 253 27 -5.595300 29.761600 -8.492500 0 253 27 -0.845100 29.891001 -9.498900 0 253 27 -0.835600 22.853901 -8.210700 254 254 254 -2.189200 21.987900 -1.483700 254 254 254 -0.425600 30.069099 -1.507500 254 254 254 -0.845100 29.891001 -9.498900 254 254 254 -2.162800 35.743500 -9.599900 0 253 27 -5.283200 35.952900 -7.814600 0 253 27 -4.970000 33.082802 -8.871900 0 253 27 -0.340300 31.400700 -9.928000 0 253 27 -5.283200 35.952900 -7.814600 18 1 249 -5.919200 37.619099 -4.570300 9 98 162 -6.542300 35.480598 -4.902800 15 32 221 -5.919200 37.619099 -4.570300 9 98 162 -4.685700 36.664101 -1.616400 0 250 28 -5.598500 31.822901 -1.404300 0 240 37 -6.542300 35.480598 -4.902800 15 32 221 -0.474100 61.294899 -0.607800 254 68 73 -0.596000 60.268700 -0.255900 254 68 73 -2.225300 60.301201 -1.334400 254 68 73 -1.340700 61.343498 -1.024900 254 68 73 -1.340700 61.343498 -1.024900 0 253 27 -1.792100 61.563202 -0.648200 0 253 27 -0.785400 61.539799 -0.048800 0 253 27 -0.474100 61.294899 -0.607800 0 253 27 -0.000000 45.235802 -8.516300 0 253 27 -5.495700 46.043098 -6.732400 0 252 27 -2.827600 38.171799 -8.088300 8 119 142 -0.000000 38.221600 -8.073300 0 240 38 -0.425600 30.069099 -1.507500 254 254 254 -2.189200 21.987900 -1.483700 254 254 254 -3.798500 31.552500 -0.388900 254 254 254 -0.000000 31.547001 -9.939100 254 68 73 -0.340300 31.400700 -9.928000 254 68 73 -0.425600 30.069099 -1.507500 254 68 73 -0.000000 30.215401 -1.522000 254 68 73 -21.061199 44.183601 -7.611200 18 0 253 -15.884600 46.520500 -7.855800 17 5 246 -17.208200 49.477699 -7.512200 0 227 47 -22.585199 48.327702 -7.594400 0 239 38 -22.348700 46.932201 -2.822400 18 0 249 -23.337700 47.268200 -6.945000 2 175 92 -22.585199 48.327702 -7.594400 0 239 38 -21.061199 44.183601 -7.611200 0 253 27 -22.105101 44.119598 -7.074000 0 253 27 -21.936399 43.055199 -3.733600 0 253 27 -0.340300 31.400700 -9.928000 0 253 27 -0.000000 31.547001 -9.939100 0 253 27 -0.000000 35.795200 -9.599900 0 253 27 -2.162800 35.743500 -9.599900 0 253 27 -5.919200 37.619099 -4.570300 9 98 162 -5.283200 35.952900 -7.814600 18 1 249 -2.162800 35.743500 -9.599900 16 28 225 -2.827600 38.171799 -8.088300 8 119 142 -28.543800 44.178001 -4.651400 77 187 34 -28.292801 42.543098 -4.446800 87 180 37 -26.246300 42.901402 -5.383600 0 252 27 -27.102699 45.320202 -5.735100 0 253 27 -25.491899 42.827301 -2.370100 190 254 195 -28.380600 42.330502 -3.056600 242 254 242 -27.637899 42.321201 -1.984400 254 254 254 -26.246300 42.901402 -5.383600 0 254 27 -28.380600 42.330502 -3.056600 242 254 242 -25.491899 42.827301 -2.370100 190 254 195 -2.162800 35.743500 -9.599900 0 253 27 -0.000000 35.795200 -9.599900 0 253 27 -0.000000 38.221600 -8.073300 0 253 27 -2.827600 38.171799 -8.088300 0 253 27 -0.706900 62.538601 -0.289700 0 253 27 -1.838200 62.255798 -0.802600 0 253 27 -1.901400 63.532299 -1.247600 0 253 27 -0.672300 63.485901 -0.421800 0 253 27 -1.901400 63.532299 -1.247600 0 253 27 -1.838200 62.255798 -0.802600 0 253 27 -3.194200 60.597198 -3.460400 0 253 27 -2.758700 63.532299 -3.348800 0 253 27 -2.758700 63.532299 -3.348800 0 253 27 -3.194200 60.597198 -3.460400 0 253 27 -3.446000 60.597198 -5.980300 0 253 27 -3.010600 63.532299 -5.868700 0 253 27 -3.194200 60.597198 -3.460400 0 253 27 -1.838200 62.255798 -0.802600 0 253 27 -2.336800 60.597198 -1.072500 0 253 27 -2.130500 53.628601 -1.359200 0 253 27 -4.088800 54.879799 -3.460400 0 253 27 -3.194200 60.597198 -3.460400 0 253 27 -2.336800 60.597198 -1.072500 0 253 27 -4.088800 54.879799 -3.460400 0 253 27 -4.340700 55.234299 -6.210400 0 254 27 -3.446000 60.597198 -5.980300 0 253 27 -3.194200 60.597198 -3.460400 0 253 27 -3.010600 63.532299 -5.868700 0 253 27 -3.446000 60.597198 -5.980300 0 253 27 -2.517200 60.597198 -7.879200 0 253 27 -1.932100 63.532299 -7.311200 0 253 27 -3.446000 60.597198 -5.980300 0 253 27 -4.340700 55.234299 -6.210400 0 254 27 -2.990300 54.496300 -8.246000 0 253 27 -2.517200 60.597198 -7.879200 0 253 27 -1.932100 63.532299 -7.311200 0 253 27 -2.517200 60.597198 -7.879200 0 253 27 -0.000000 60.597198 -8.812800 0 253 27 -0.000000 63.532299 -8.174500 0 253 27 -2.990300 54.496300 -8.246000 0 253 27 -0.000000 54.050800 -8.782700 0 253 27 -0.000000 60.597198 -8.812800 0 253 27 -2.517200 60.597198 -7.879200 0 253 27 -0.672300 63.485901 -0.421800 0 253 27 -1.901400 63.532299 -1.247600 0 253 27 -1.171400 65.057899 -2.205500 0 253 27 -1.901400 63.532299 -1.247600 0 253 27 -2.758700 63.532299 -3.348800 0 253 27 -1.795600 65.057899 -4.806100 0 253 27 -1.171400 65.057899 -2.205500 0 253 27 -2.758700 63.532299 -3.348800 0 253 27 -3.010600 63.532299 -5.868700 0 253 27 -1.795600 65.057899 -4.806100 0 253 27 -3.010600 63.532299 -5.868700 0 253 27 -1.932100 63.532299 -7.311200 0 254 27 -0.000000 65.057899 -6.421400 0 253 27 -1.795600 65.057899 -4.806100 0 253 27 -1.932100 63.532299 -7.311200 0 254 27 -0.000000 63.532299 -8.174500 0 253 27 -0.000000 65.057899 -6.421400 0 253 27 -1.171400 65.057899 -2.205500 0 253 27 -1.795600 65.057899 -4.806100 0 253 27 -0.000000 65.560898 -4.058400 0 253 27 -1.795600 65.057899 -4.806100 0 254 27 -0.000000 65.057899 -6.421400 0 254 27 -0.000000 65.560898 -4.058400 0 254 27 -0.672300 63.485901 -0.421800 0 254 27 -1.171400 65.057899 -2.205500 0 254 27 --1.171400 65.057899 -2.205500 0 254 27 --0.672300 63.485901 -0.421800 0 254 27 -0.706900 62.538601 -0.289700 0 254 27 -0.672300 63.485901 -0.421800 0 254 27 -0.000000 62.538601 -0.140300 0 254 27 -0.672300 63.485901 -0.421800 0 254 27 --0.672300 63.485901 -0.421800 0 254 27 -0.000000 62.538601 -0.140300 0 254 27 -2.130500 53.628601 -1.359200 0 253 27 -2.336800 60.597198 -1.072500 0 253 27 -1.393700 60.597198 -3.164700 0 253 27 -1.187300 53.628601 -3.164700 0 253 27 --0.706900 62.538601 -0.289700 0 254 27 --0.672300 63.485901 -0.421800 0 254 27 --1.901400 63.532299 -1.247600 0 254 27 --1.838200 62.255798 -0.802600 0 254 27 --1.901400 63.532299 -1.247600 0 254 27 --2.758700 63.532299 -3.348800 0 254 27 --3.194200 60.597198 -3.460400 0 254 27 --1.838200 62.255798 -0.802600 0 254 27 --2.758700 63.532299 -3.348800 0 254 27 --3.010600 63.532299 -5.868700 0 254 27 --3.446000 60.597198 -5.980300 0 254 27 --3.194200 60.597198 -3.460400 0 254 27 --3.194200 60.597198 -3.460400 0 254 27 --2.336800 60.597198 -1.072500 0 254 27 --1.838200 62.255798 -0.802600 0 254 27 --2.130500 53.628601 -1.359200 0 253 27 --2.336800 60.597198 -1.072500 0 254 27 --3.194200 60.597198 -3.460400 0 254 27 --4.088800 54.879799 -3.460400 0 253 27 --4.088800 54.879799 -3.460400 0 253 27 --3.194200 60.597198 -3.460400 0 253 27 --3.446000 60.597198 -5.980300 0 253 27 --4.340700 55.234299 -6.210400 0 254 27 --3.010600 63.532299 -5.868700 0 254 27 --1.932100 63.532299 -7.311200 0 254 27 --2.517200 60.597198 -7.879200 0 254 27 --3.446000 60.597198 -5.980300 0 254 27 --3.446000 60.597198 -5.980300 0 254 27 --2.517200 60.597198 -7.879200 0 254 27 --2.990300 54.496300 -8.246000 0 254 27 --4.340700 55.234299 -6.210400 0 254 27 --1.932100 63.532299 -7.311200 0 254 27 -0.000000 63.532299 -8.174500 0 254 27 -0.000000 60.597198 -8.812800 0 254 27 --2.517200 60.597198 -7.879200 0 254 27 --2.990300 54.496300 -8.246000 0 254 27 --2.517200 60.597198 -7.879200 0 254 27 -0.000000 60.597198 -8.812800 0 254 27 -0.000000 54.050800 -8.782700 0 254 27 --0.672300 63.485901 -0.421800 0 254 27 --1.171400 65.057899 -2.205500 0 254 27 --1.901400 63.532299 -1.247600 0 254 27 --1.901400 63.532299 -1.247600 0 254 27 --1.171400 65.057899 -2.205500 0 254 27 --1.795600 65.057899 -4.806100 0 254 27 --2.758700 63.532299 -3.348800 0 254 27 --2.758700 63.532299 -3.348800 0 254 27 --1.795600 65.057899 -4.806100 0 254 27 --3.010600 63.532299 -5.868700 0 254 27 --3.010600 63.532299 -5.868700 0 254 27 --1.795600 65.057899 -4.806100 0 254 27 -0.000000 65.057899 -6.421400 0 254 27 --1.932100 63.532299 -7.311200 0 254 27 --1.932100 63.532299 -7.311200 0 254 27 -0.000000 65.057899 -6.421400 0 254 27 -0.000000 63.532299 -8.174500 0 254 27 --1.171400 65.057899 -2.205500 0 254 27 -0.000000 65.560898 -4.058400 0 254 27 --1.795600 65.057899 -4.806100 0 254 27 --1.795600 65.057899 -4.806100 0 254 27 -0.000000 65.560898 -4.058400 0 254 27 -0.000000 65.057899 -6.421400 0 254 27 --1.171400 65.057899 -2.205500 0 254 27 -1.171400 65.057899 -2.205500 0 254 27 -0.000000 65.560898 -4.058400 0 254 27 --0.706900 62.538601 -0.289700 0 254 27 -0.000000 62.538601 -0.140300 0 254 27 --0.672300 63.485901 -0.421800 0 254 27 --2.130500 53.628601 -1.359200 164 133 56 --1.187300 53.628601 -3.164700 209 100 64 --1.393700 60.597198 -3.164700 254 254 254 --2.336800 60.597198 -1.072500 254 254 254 -8.704300 24.905701 -6.036500 0 253 27 -7.984800 25.127701 -6.177400 0 253 27 -7.649900 27.558001 -5.856100 0 253 27 -8.503900 27.435900 -5.670300 0 253 27 -6.463600 36.223400 -3.704900 9 100 160 -5.778000 35.994701 -1.773100 0 231 44 -7.451900 27.210300 -3.504400 18 2 248 -8.503900 27.435900 -5.670300 18 0 253 -5.115000 35.782600 -2.051700 0 241 37 -6.597900 27.332300 -3.690200 16 16 234 -7.451900 27.210300 -3.504400 18 2 248 -5.778000 35.994701 -1.773100 0 231 44 -5.743400 36.019600 -3.995900 0 253 27 -6.463600 36.223400 -3.704900 0 253 27 -8.503900 27.435900 -5.670300 0 253 27 -7.649900 27.558001 -5.856100 0 253 27 -7.451900 27.210300 -3.504400 21 0 248 -6.597900 27.332300 -3.690200 35 1 237 -7.984800 25.127701 -6.177400 19 0 253 -8.704300 24.905701 -6.036500 19 0 253 -7.451900 27.210300 -3.504400 18 2 248 -8.704300 24.905701 -6.036500 18 0 253 -8.503900 27.435900 -5.670300 18 0 253 -6.463600 36.223400 -3.704900 254 68 73 -5.743400 36.019600 -3.995900 254 68 73 -5.115000 35.782600 -2.051700 254 68 73 -5.778000 35.994701 -1.773100 254 68 73 -4.513000 55.007702 -5.909800 0 253 27 -4.291100 55.098900 -5.871800 0 253 27 -4.207800 55.799599 -6.651700 0 253 27 -4.871900 55.799599 -6.765400 0 253 27 -2.904000 62.455601 -5.700500 0 253 27 -2.764700 62.455601 -4.128400 0 253 27 -4.736600 55.799599 -5.153900 0 253 27 -4.871900 55.799599 -6.765400 0 253 27 -2.764700 62.455601 -4.128400 0 253 27 -4.072400 55.799599 -5.040200 0 253 27 -4.736600 55.799599 -5.153900 0 253 27 -2.904000 62.455601 -5.700500 0 253 27 -4.871900 55.799599 -6.765400 0 253 27 -4.207800 55.799599 -6.651700 0 253 27 -4.736600 55.799599 -5.153900 254 68 73 -4.072400 55.799599 -5.040200 254 68 73 -4.291100 55.098900 -5.871800 254 68 73 -4.513000 55.007702 -5.909800 254 68 73 -4.736600 55.799599 -5.153900 0 253 27 -4.513000 55.007702 -5.909800 0 253 27 -4.871900 55.799599 -6.765400 0 253 27 -4 0 1 2 3 -4 4 5 6 7 -3 8 9 10 -4 11 12 13 14 -4 15 16 17 18 -4 19 20 21 22 -4 23 24 25 26 -4 27 28 29 30 -4 31 32 33 34 -4 35 36 37 38 -4 39 40 41 42 -4 43 44 45 46 -3 47 48 49 -4 50 51 52 53 -4 54 55 56 57 -4 58 59 60 61 -4 62 63 64 65 -4 66 67 68 69 -4 70 71 72 73 -4 74 75 76 77 -3 78 79 80 -4 81 82 83 84 -3 85 86 87 -4 88 89 90 91 -3 92 93 94 -4 95 96 97 98 -4 99 100 101 102 -4 103 104 105 106 -4 107 108 109 110 -4 111 112 113 114 -4 115 116 117 118 -4 119 120 121 122 -4 123 124 125 126 -4 127 128 129 130 -4 131 132 133 134 -4 135 136 137 138 -3 139 140 141 -3 142 143 144 -4 145 146 147 148 -4 149 150 151 152 -4 153 154 155 156 -3 157 158 159 -3 160 161 162 -4 163 164 165 166 -4 167 168 169 170 -4 171 172 173 174 -3 175 176 177 -4 178 179 180 181 -4 182 183 184 185 -3 186 187 188 -3 189 190 191 -4 192 193 194 195 -4 196 197 198 199 -4 200 201 202 203 -4 204 205 206 207 -3 208 209 210 -3 211 212 213 -3 214 215 216 -4 217 218 219 220 -4 221 222 223 224 -3 225 226 227 -4 228 229 230 231 -4 232 233 234 235 -3 236 237 238 -3 239 240 241 -3 242 243 244 -3 245 246 247 -4 248 249 250 251 -4 252 253 254 255 -4 256 257 258 259 -4 260 261 262 263 -4 264 265 266 267 -4 268 269 270 271 -4 272 273 274 275 -4 276 277 278 279 -4 280 281 282 283 -3 284 285 286 -3 287 288 289 -4 290 291 292 293 -4 294 295 296 297 -4 298 299 300 301 -3 302 303 304 -4 305 306 307 308 -4 309 310 311 312 -4 313 314 315 316 -4 317 318 319 320 -4 321 322 323 324 -4 325 326 327 328 -4 329 330 331 332 -4 333 334 335 336 -4 337 338 339 340 -4 341 342 343 344 -4 345 346 347 348 -4 349 350 351 352 -3 353 354 355 -4 356 357 358 359 -4 360 361 362 363 -3 364 365 366 -4 367 368 369 370 -4 371 372 373 374 -3 375 376 377 -4 378 379 380 381 -3 382 383 384 -4 385 386 387 388 -4 389 390 391 392 -3 393 394 395 -4 396 397 398 399 -4 400 401 402 403 -4 404 405 406 407 -4 408 409 410 411 -4 412 413 414 415 -3 416 417 418 -3 419 420 421 -3 422 423 424 -4 425 426 427 428 -4 429 430 431 432 -3 433 434 435 -3 436 437 438 -4 439 440 441 442 -4 443 444 445 446 -3 447 448 449 -3 450 451 452 -4 453 454 455 456 -3 457 458 459 -3 460 461 462 -3 463 464 465 -4 466 467 468 469 -3 470 471 472 -4 473 474 475 476 -4 477 478 479 480 -4 481 482 483 484 -4 485 486 487 488 -4 489 490 491 492 -3 493 494 495 -4 496 497 498 499 -4 500 501 502 503 -4 504 505 506 507 -4 508 509 510 511 -3 512 513 514 -4 515 516 517 518 -4 519 520 521 522 -3 523 524 525 -3 526 527 528 -3 529 530 531 -4 532 533 534 535 -4 536 537 538 539 -4 540 541 542 543 -4 544 545 546 547 -3 548 549 550 -3 551 552 553 -4 554 555 556 557 -3 558 559 560 -4 561 562 563 564 -4 565 566 567 568 -4 569 570 571 572 -3 573 574 575 -4 576 577 578 579 -4 580 581 582 583 -4 584 585 586 587 -4 588 589 590 591 -4 592 593 594 595 -4 596 597 598 599 -4 600 601 602 603 -4 604 605 606 607 -4 608 609 610 611 -3 612 613 614 -4 615 616 617 618 -4 619 620 621 622 -4 623 624 625 626 -4 627 628 629 630 -4 631 632 633 634 -4 635 636 637 638 -4 639 640 641 642 -3 643 644 645 -4 646 647 648 649 -3 650 651 652 -4 653 654 655 656 -3 657 658 659 -4 660 661 662 663 -4 664 665 666 667 -4 668 669 670 671 -4 672 673 674 675 -4 676 677 678 679 -4 680 681 682 683 -4 684 685 686 687 -4 688 689 690 691 -4 692 693 694 695 -4 696 697 698 699 -4 700 701 702 703 -3 704 705 706 -3 707 708 709 -4 710 711 712 713 -4 714 715 716 717 -4 718 719 720 721 -3 722 723 724 -3 725 726 727 -4 728 729 730 731 -4 732 733 734 735 -4 736 737 738 739 -3 740 741 742 -4 743 744 745 746 -4 747 748 749 750 -3 751 752 753 -3 754 755 756 -4 757 758 759 760 -4 761 762 763 764 -4 765 766 767 768 -4 769 770 771 772 -3 773 774 775 -3 776 777 778 -3 779 780 781 -4 782 783 784 785 -4 786 787 788 789 -3 790 791 792 -4 793 794 795 796 -4 797 798 799 800 -3 801 802 803 -3 804 805 806 -3 807 808 809 -3 810 811 812 -4 813 814 815 816 -4 817 818 819 820 -4 821 822 823 824 -4 825 826 827 828 -4 829 830 831 832 -4 833 834 835 836 -4 837 838 839 840 -4 841 842 843 844 -4 845 846 847 848 -3 849 850 851 -3 852 853 854 -4 855 856 857 858 -4 859 860 861 862 -4 863 864 865 866 -3 867 868 869 -4 870 871 872 873 -4 874 875 876 877 -4 878 879 880 881 -4 882 883 884 885 -4 886 887 888 889 -4 890 891 892 893 -4 894 895 896 897 -4 898 899 900 901 -4 902 903 904 905 -4 906 907 908 909 -4 910 911 912 913 -4 914 915 916 917 -3 918 919 920 -4 921 922 923 924 -4 925 926 927 928 -3 929 930 931 -4 932 933 934 935 -4 936 937 938 939 -3 940 941 942 -4 943 944 945 946 -3 947 948 949 -4 950 951 952 953 -4 954 955 956 957 -3 958 959 960 -4 961 962 963 964 -4 965 966 967 968 -4 969 970 971 972 -4 973 974 975 976 -4 977 978 979 980 -3 981 982 983 -3 984 985 986 -3 987 988 989 -4 990 991 992 993 -4 994 995 996 997 -3 998 999 1000 -3 1001 1002 1003 -4 1004 1005 1006 1007 -4 1008 1009 1010 1011 -3 1012 1013 1014 -3 1015 1016 1017 -4 1018 1019 1020 1021 -3 1022 1023 1024 -3 1025 1026 1027 -3 463 1028 464 -4 1029 1030 1031 1032 -3 1033 1034 1035 -4 1036 1037 1038 1039 -4 1040 1041 1042 1043 -4 1044 1045 1046 1047 -4 1048 1049 1050 1051 -4 1052 1053 1054 1055 -3 1056 1057 1058 -4 1059 1060 1061 1062 -4 1063 1064 1065 1066 -4 1067 1068 1069 1070 -4 1071 1072 1073 1074 -3 1075 1076 1077 -4 1078 1079 1080 1081 -4 1082 1083 1084 1085 -3 1086 1087 1088 -3 1089 1090 1091 -4 1092 1093 1094 1095 -4 1096 1097 1098 1099 -4 1100 1101 1102 1103 -3 1104 1105 1106 -3 1107 1108 1109 -4 1110 1111 1112 1113 -4 1114 1115 1116 1117 -4 1118 1119 1120 1121 -4 1122 1123 1124 1125 -3 1126 1127 1128 -4 1129 1130 1131 1132 -4 1133 1134 1135 1136 -4 1137 1138 1139 1140 -4 1141 1142 1143 1144 -4 1145 1146 1147 1148 -4 1149 1150 1151 1152 -3 1153 1154 1155 -4 1156 1157 1158 1159 -3 1160 1161 1162 -4 1163 1164 1165 1166 -3 1167 1168 1169 -3 1170 1171 1172 -3 1173 1174 1175 -4 1176 1177 1178 1179 -3 1180 1181 1182 -3 1183 1184 1185 -4 1186 1187 1188 1189 -4 1190 1191 1192 1193 -4 1194 1195 1196 1197 -4 1198 1199 1200 1201 -3 1202 1203 1204 -4 1205 1206 1207 1208 -4 1209 1210 1211 1212 -4 1213 1214 1215 1216 -4 1217 1218 1219 1220 -4 1221 1222 1223 1224 -4 1225 1226 1227 1228 -3 1229 1230 1231 -4 1232 1233 1234 1235 -3 1236 1237 1238 -4 1239 1240 1241 1242 -3 1243 1244 1245 -3 1246 1247 1248 -3 1249 1250 1251 -3 1252 1253 1254 -3 1255 1256 1257 -4 1258 1259 1260 1261 -4 1262 1263 1264 1265 -4 1266 1267 1268 1269 -4 1270 1271 1272 1273 -4 1274 1275 1276 1277 -4 1278 1279 1280 1281 -3 1282 1283 1284 -4 1285 1286 1287 1288 -4 1289 1290 1291 1292 -4 1293 1294 1295 1296 -3 1297 1298 1299 -3 1300 1301 1302 -4 1303 1304 1305 1306 -3 1307 1308 1309 diff --git a/src/tests/evas/meshes/ply/NoNormal_NoUVs_NoColors.ply b/src/tests/evas/meshes/ply/NoNormal_NoUVs_NoColors.ply deleted file mode 100644 index d78a23325e..0000000000 --- a/src/tests/evas/meshes/ply/NoNormal_NoUVs_NoColors.ply +++ /dev/null @@ -1,1676 +0,0 @@ -ply -format ascii 1.0 -comment Created by Blender 2.69 (sub 0) - www.blender.org, source file: '' -element vertex 1310 -property float x -property float y -property float z -element face 356 -property list uchar uint vertex_indices -end_header --4.649800 14.945700 -8.785600 --2.020300 14.610600 -8.278800 --1.712600 0.024900 -9.195700 --3.252600 0.001600 -8.591000 --4.649800 14.945700 -8.785600 --3.252600 0.001600 -8.591000 --4.089400 2.633000 -5.031300 --5.308800 13.910900 -3.738700 --1.553600 3.059500 -4.173500 --1.766900 13.754900 -2.918700 --3.061600 3.537800 -3.461700 --1.553600 3.059500 -4.173500 --0.626000 0.031700 -8.336200 --0.971400 14.644800 -6.706400 --1.766900 13.754900 -2.918700 --5.495700 46.043098 -6.732400 --2.827600 38.171799 -8.088300 --5.919200 37.619099 -4.570300 --6.029500 46.188801 -3.956000 --4.685700 36.664101 -1.616400 --4.298500 47.001099 -0.058900 --6.029500 46.188801 -3.956000 --5.919200 37.619099 -4.570300 --6.775800 50.206501 -7.534500 --7.252500 54.524502 -7.615000 -0.000000 53.738098 -8.986800 -0.000000 50.037800 -9.413700 --7.252500 54.524502 -7.615000 --8.747800 53.770199 -7.353300 --8.184300 53.108700 -3.320400 --6.624100 53.529800 -2.653700 --9.827700 52.989700 -7.188500 --14.989100 50.565300 -7.297200 --15.636800 49.715099 -4.015700 --9.508400 52.403099 -3.672700 -0.000000 37.009800 0.550700 -0.000000 47.287498 1.094200 --4.298500 47.001099 -0.058900 --4.685700 36.664101 -1.616400 -0.000000 53.738098 -8.986800 --7.252500 54.524502 -7.615000 --2.321200 55.471001 -5.570800 -0.000000 55.950600 -7.250100 --6.624100 53.529800 -2.653700 --7.813100 49.342701 -3.886900 --6.029500 46.188801 -3.956000 --3.773800 51.093601 -1.034300 --6.029500 46.188801 -3.956000 --4.298500 47.001099 -0.058900 --3.773800 51.093601 -1.034300 -0.000000 50.880199 0.110000 --3.773800 51.093601 -1.034300 --4.298500 47.001099 -0.058900 -0.000000 47.287498 1.094200 --16.136200 50.023998 -7.546200 --14.989100 50.565300 -7.297200 --13.779500 47.417198 -7.715300 --14.885000 46.974701 -7.946000 --13.779500 47.417198 -7.715300 --8.756500 49.321098 -7.632900 --8.927200 49.128502 -4.128200 --14.977100 45.689201 -4.821000 --17.208200 49.477699 -7.512200 --22.585199 48.327702 -7.594400 --22.348700 46.932201 -2.822400 --16.810101 49.139900 -3.928800 --21.936399 43.055199 -3.733600 --16.192200 44.960400 -4.877100 --16.810101 49.139900 -3.928800 --22.348700 46.932201 -2.822400 --22.105101 44.119598 -7.074000 --23.337700 47.268200 -6.945000 --22.585199 48.327702 -7.594400 --21.061199 44.183601 -7.611200 --15.884600 46.520500 -7.855800 --16.192200 44.960400 -4.877100 --21.936399 43.055199 -3.733600 --21.061199 44.183601 -7.611200 --5.598500 31.822901 -1.405400 --7.174300 32.815300 -5.168000 --7.453900 29.910801 -4.782000 --4.970000 33.082802 -8.871300 --5.595300 29.761600 -8.491100 --7.453900 29.910801 -4.782000 --7.174300 32.815300 -5.168000 --6.827700 20.858999 -3.051400 --5.426000 21.341299 -8.131100 --6.194700 19.576300 -3.492500 --0.835600 22.853901 -8.203000 --0.899900 21.410400 -8.342700 --5.426000 21.341299 -8.131100 --5.317800 22.936800 -8.014600 --0.899900 21.410400 -8.342700 --1.957400 20.620800 -1.217700 --1.853000 19.164200 -1.385300 --6.194700 19.576300 -3.492500 --1.853000 19.164200 -1.385300 --1.957400 20.620800 -1.217700 --6.827700 20.858999 -3.051400 --5.259600 15.490400 -9.599400 --5.426000 21.341299 -8.131100 --0.899900 21.410400 -8.342700 --0.294400 16.169500 -7.962700 --0.294400 16.169500 -7.962700 --0.899900 21.410400 -8.342700 --1.853000 19.164200 -1.385300 --1.221800 14.450400 -2.004100 --1.853000 19.164200 -1.385300 --6.194700 19.576300 -3.492500 --6.498700 14.643000 -4.000600 --1.221800 14.450400 -2.004100 --6.498700 14.643000 -4.000600 --6.194700 19.576300 -3.492500 --5.426000 21.341299 -8.131100 --5.259600 15.490400 -9.599400 --7.813100 49.342701 -3.886900 --6.775800 50.206501 -7.534500 --5.495700 46.043098 -6.732400 --6.029500 46.188801 -3.956000 --8.756500 49.321098 -7.632900 --6.775800 50.206501 -7.534500 --7.813100 49.342701 -3.886900 --8.927200 49.128502 -4.128200 --5.495700 46.043098 -6.732400 --6.775800 50.206501 -7.534500 -0.000000 50.037800 -9.413700 -0.000000 45.235802 -8.516300 --3.773800 51.093601 -1.034300 -0.000000 50.880199 0.110000 -0.000000 54.522099 -2.187600 --1.435700 55.057400 -2.884500 --0.163800 60.672798 0.405300 --0.596000 60.268700 -0.255900 --0.605400 59.453602 0.006800 --0.226300 59.631802 0.717000 -0.000000 59.375900 0.272700 --0.605400 59.453602 0.006800 --0.793500 58.611801 -0.022400 -0.000000 58.735298 0.237300 --1.340700 61.343498 -1.024900 --2.209500 61.230499 -1.515000 --2.225300 60.301201 -1.334400 --0.474100 61.294899 -0.607800 --0.179900 61.274700 0.058500 --0.785400 61.539799 -0.048800 --0.163800 60.672798 0.405300 --0.179900 61.274700 0.058500 --0.474100 61.294899 -0.607800 --0.596000 60.268700 -0.255900 --0.785400 61.539799 -0.048800 -0.000000 62.775902 -0.355700 --1.901400 62.898899 -1.262500 --1.792100 61.563202 -0.648200 --1.901400 62.898899 -1.262500 --2.505800 61.413601 -3.333900 --2.209500 61.230499 -1.515000 --1.792100 61.563202 -0.648200 --2.071800 58.080299 -1.837600 --2.043500 58.694401 -1.722000 --2.361600 58.652599 -3.405400 --2.361600 58.652599 -3.405400 --1.480400 57.287800 -3.167400 --2.071800 58.080299 -1.837600 --2.361600 58.652599 -3.405400 --2.043500 58.694401 -1.722000 --2.225300 60.301201 -1.334400 --2.484800 60.667999 -2.078300 --0.596000 60.268700 -0.255900 --2.225300 60.301201 -1.334400 --0.793500 58.611801 -0.022400 --0.605400 59.453602 0.006800 --0.793500 58.611801 -0.022400 --0.860300 57.339199 -0.345300 -0.000000 57.320400 0.190300 -0.000000 58.735298 0.237300 --2.361600 58.652599 -3.405400 --1.507500 57.978802 -4.806700 --1.480400 57.287800 -3.167400 --1.480400 57.287800 -3.167400 --1.435700 55.057400 -2.884500 -0.000000 54.522099 -2.187600 --0.509500 56.862801 -2.081200 --1.435700 55.057400 -2.884500 --1.480400 57.287800 -3.167400 --1.507500 57.978802 -4.806700 --2.321200 55.471001 -5.570800 --5.259600 15.490400 -9.599400 --0.294400 16.169500 -7.962700 --2.020300 14.610600 -8.278800 --0.294400 16.169500 -7.962700 --1.221800 14.450400 -2.004100 --0.971400 14.644800 -6.706400 --5.308800 13.910900 -3.738700 --1.766900 13.754900 -2.918700 --1.221800 14.450400 -2.004100 --6.498700 14.643000 -4.000600 --4.649800 14.945700 -8.785600 --5.308800 13.910900 -3.738700 --6.498700 14.643000 -4.000600 --5.259600 15.490400 -9.599400 --1.957400 20.620800 -1.217700 --0.899900 21.410400 -8.342700 --0.835600 22.853901 -8.203000 --2.189200 21.987900 -1.481800 --7.174300 32.815300 -5.168000 --6.542300 35.480598 -4.902800 --5.283200 35.952900 -7.814600 --4.970000 33.082802 -8.871300 --5.598500 31.822901 -1.405400 --6.542300 35.480598 -4.902800 --7.174300 32.815300 -5.168000 --4.685700 36.664101 -1.616400 --5.598500 31.822901 -1.405400 --3.798500 31.552500 -0.386300 --2.225300 60.301201 -1.334400 --2.209500 61.230499 -1.515000 --2.484800 60.667999 -2.078300 --8.927200 49.128502 -4.128200 --7.813100 49.342701 -3.886900 --8.184300 53.108700 -3.320400 --9.508400 52.403099 -3.672700 --8.184300 53.108700 -3.320400 --8.747800 53.770199 -7.353300 --9.827700 52.989700 -7.188500 --9.508400 52.403099 -3.672700 --8.747800 53.770199 -7.353300 --7.252500 54.524502 -7.615000 --6.775800 50.206501 -7.534500 --8.927200 49.128502 -4.128200 --9.508400 52.403099 -3.672700 --15.636800 49.715099 -4.015700 --14.977100 45.689201 -4.821000 --6.624100 53.529800 -2.653700 --3.773800 51.093601 -1.034300 --1.435700 55.057400 -2.884500 --7.252500 54.524502 -7.615000 --2.321200 55.471001 -5.570800 --7.252500 54.524502 -7.615000 --1.435700 55.057400 -2.884500 --2.209500 61.230499 -1.515000 --2.505800 61.413601 -3.333900 --2.484800 60.667999 -2.078300 --2.484800 60.667999 -2.078300 --2.505800 61.413601 -3.333900 --2.361600 58.652599 -3.405400 --2.209500 61.230499 -1.515000 --1.340700 61.343498 -1.024900 --1.792100 61.563202 -0.648200 --3.061600 3.537800 -3.461700 --3.735600 1.816900 0.228400 --1.568700 1.981700 -0.627100 --1.553600 3.059500 -4.173500 --0.626000 0.031700 -8.336200 --1.553600 3.059500 -4.173500 --1.568700 1.981700 -0.627100 --1.825200 -0.024100 0.601200 --1.825200 -0.024100 0.601200 --3.769300 -0.009000 1.132900 --1.712600 0.024900 -9.195700 --0.626000 0.031700 -8.336200 --1.712600 0.024900 -9.195700 --2.020300 14.610600 -8.278800 --0.971400 14.644800 -6.706400 --0.626000 0.031700 -8.336200 --1.568700 1.981700 -0.627100 --3.735600 1.816900 0.228400 --3.769300 -0.009000 1.132900 --1.825200 -0.024100 0.601200 --4.089400 2.633000 -5.031300 --3.252600 0.001600 -8.591000 --5.176800 -0.025000 -0.598300 --5.390300 1.568200 -1.670300 --3.769300 -0.009000 1.132900 --3.735600 1.816900 0.228400 --5.390300 1.568200 -1.670300 --5.176800 -0.025000 -0.598300 --5.390300 1.568200 -1.670300 --3.735600 1.816900 0.228400 --3.061600 3.537800 -3.461700 --4.089400 2.633000 -5.031300 --3.061600 3.537800 -3.461700 --1.766900 13.754900 -2.918700 --5.308800 13.910900 -3.738700 --4.089400 2.633000 -5.031300 --2.020300 14.610600 -8.278800 --4.649800 14.945700 -8.785600 --5.259600 15.490400 -9.599400 --2.020300 14.610600 -8.278800 --0.294400 16.169500 -7.962700 --0.971400 14.644800 -6.706400 --5.426000 21.341299 -8.131100 --6.827700 20.858999 -3.051400 --6.824000 22.193899 -3.254300 --5.317800 22.936800 -8.014600 --0.845100 29.891001 -9.491500 --0.835600 22.853901 -8.203000 --5.317800 22.936800 -8.014600 --5.595300 29.761600 -8.491100 --1.957400 20.620800 -1.217700 --2.189200 21.987900 -1.481800 --6.824000 22.193899 -3.254300 --6.827700 20.858999 -3.051400 --0.605400 59.453602 0.006800 -0.000000 59.375900 0.272700 --0.226300 59.631802 0.717000 --21.936399 43.055199 -3.733600 --22.348700 46.932201 -2.822400 --23.323000 46.228001 -3.425200 --23.265499 44.290199 -3.614200 --22.105101 44.119598 -7.074000 --23.273100 44.479099 -6.170500 --23.881300 46.267799 -5.995500 --23.337700 47.268200 -6.945000 --22.348700 46.932201 -2.822400 --23.337700 47.268200 -6.945000 --23.881300 46.267799 -5.995500 --23.323000 46.228001 -3.425200 --21.936399 43.055199 -3.733600 --23.265499 44.290199 -3.614200 --23.273100 44.479099 -6.170500 --22.105101 44.119598 -7.074000 --23.323000 46.228001 -3.425200 --24.935400 45.742901 -3.288800 --24.446100 44.099098 -3.039500 --23.265499 44.290199 -3.614200 --23.273100 44.479099 -6.170500 --25.718901 44.407902 -5.989100 --25.982700 45.641201 -5.974700 --23.881300 46.267799 -5.995500 --23.881300 46.267799 -5.995500 --25.982700 45.641201 -5.974700 --24.935400 45.742901 -3.288800 --23.323000 46.228001 -3.425200 --23.265499 44.290199 -3.614200 --24.446100 44.099098 -3.039500 --25.718901 44.407902 -5.989100 --23.273100 44.479099 -6.170500 --3.798500 31.552500 -0.386300 -0.000000 31.552500 0.128500 -0.000000 37.009800 0.550700 --4.685700 36.664101 -1.616400 --27.058001 43.733101 -1.471100 --28.100901 44.177299 -2.470000 --27.637899 42.321201 -1.984400 --26.775499 43.007000 -1.492900 --27.102699 45.320202 -5.735100 --25.982700 45.641201 -5.974700 --25.718901 44.407902 -5.989100 --26.246300 42.901402 -5.383600 --24.935400 45.742901 -3.288800 --25.982700 45.641201 -5.974700 --27.102699 45.320202 -5.735100 --26.753901 45.398300 -2.858600 --24.446100 44.099098 -3.039500 --26.246300 42.901402 -5.383600 --25.718901 44.407902 -5.989100 --28.380600 42.330502 -3.056600 --27.637899 42.321201 -1.984400 --28.100901 44.177299 -2.470000 --28.697901 44.238201 -3.477500 --28.380600 42.330502 -3.056600 --28.697901 44.238201 -3.477500 --28.543800 44.178001 -4.651400 --28.292801 42.543098 -4.446800 --26.753901 45.398300 -2.858600 --28.697901 44.238201 -3.477500 --28.100901 44.177299 -2.470000 --24.935400 45.742901 -3.288800 --26.117701 44.487900 -2.198700 --25.587200 43.557701 -2.038700 --24.446100 44.099098 -3.039500 --24.446100 44.099098 -3.039500 --25.587200 43.557701 -2.038700 --25.491899 42.827301 -2.370100 --26.246300 42.901402 -5.383600 --26.753901 45.398300 -2.858600 --26.117701 44.487900 -2.198700 --24.935400 45.742901 -3.288800 -0.000000 31.552500 0.128500 --3.798500 31.552500 -0.386300 --3.463700 23.872801 -0.356700 -0.000000 24.132099 -0.356700 --2.225300 60.301201 -1.334400 --2.043500 58.694401 -1.722000 --0.793500 58.611801 -0.022400 --0.793500 58.611801 -0.022400 --2.043500 58.694401 -1.722000 --2.071800 58.080299 -1.837600 --0.860300 57.339199 -0.345300 --2.071800 58.080299 -1.837600 --1.480400 57.287800 -3.167400 --0.509500 56.862801 -2.081200 --0.860300 57.339199 -0.345300 --0.179900 61.274700 0.058500 -0.000000 61.912998 -0.048000 --0.785400 61.539799 -0.048800 --15.884600 46.520500 -7.855800 --17.208200 49.477699 -7.512200 --16.136200 50.023998 -7.546200 --14.885000 46.974701 -7.946000 --15.636800 49.715099 -4.015700 --16.136200 50.023998 -7.546200 --17.208200 49.477699 -7.512200 --16.810101 49.139900 -3.928800 --16.192200 44.960400 -4.877100 --15.884600 46.520500 -7.855800 --14.885000 46.974701 -7.946000 --14.977100 45.689201 -4.821000 --16.810101 49.139900 -3.928800 --16.192200 44.960400 -4.877100 --14.977100 45.689201 -4.821000 --15.636800 49.715099 -4.015700 --13.779500 47.417198 -7.715300 --14.989100 50.565300 -7.297200 --9.827700 52.989700 -7.188500 --8.756500 49.321098 -7.632900 --15.636800 49.715099 -4.015700 --14.989100 50.565300 -7.297200 --16.136200 50.023998 -7.546200 --13.779500 47.417198 -7.715300 --14.977100 45.689201 -4.821000 --14.885000 46.974701 -7.946000 --0.971400 14.644800 -6.706400 --1.221800 14.450400 -2.004100 --1.766900 13.754900 -2.918700 --26.117701 44.487900 -2.198700 --27.058001 43.733101 -1.471100 --26.775499 43.007000 -1.492900 --25.587200 43.557701 -2.038700 --25.587200 43.557701 -2.038700 --26.775499 43.007000 -1.492900 --27.637899 42.321201 -1.984400 --25.491899 42.827301 -2.370100 --26.117701 44.487900 -2.198700 --28.100901 44.177299 -2.470000 --27.058001 43.733101 -1.471100 --8.184300 53.108700 -3.320400 --7.813100 49.342701 -3.886900 --6.624100 53.529800 -2.653700 --8.747800 53.770199 -7.353300 --6.775800 50.206501 -7.534500 --8.756500 49.321098 -7.632900 --9.827700 52.989700 -7.188500 --28.543800 44.178001 -4.651400 --28.697901 44.238201 -3.477500 --26.753901 45.398300 -2.858600 --27.102699 45.320202 -5.735100 --26.246300 42.901402 -5.383600 --28.380600 42.330502 -3.056600 --28.292801 42.543098 -4.446800 --28.100901 44.177299 -2.470000 --26.117701 44.487900 -2.198700 --26.753901 45.398300 -2.858600 --1.712600 0.024900 -9.195700 --3.769300 -0.009000 1.132900 --5.176800 -0.025000 -0.598300 --3.252600 0.001600 -8.591000 -0.000000 61.912998 -0.048000 -0.000000 62.775902 -0.355700 --0.785400 61.539799 -0.048800 --0.340300 31.400700 -9.922000 --0.425600 30.069099 -1.503600 --0.845100 29.891001 -9.491500 -0.000000 54.522099 -2.187600 -0.000000 56.862801 -2.081200 --0.509500 56.862801 -2.081200 --0.509500 56.862801 -2.081200 -0.000000 56.862801 -2.081200 -0.000000 57.320400 0.190300 --0.860300 57.339199 -0.345300 --5.598500 31.822901 -1.405400 --7.453900 29.910801 -4.782000 --6.824000 22.193899 -3.254300 --6.824000 22.193899 -3.254300 --7.453900 29.910801 -4.782000 --5.595300 29.761600 -8.491100 --5.317800 22.936800 -8.014600 --3.798500 31.552500 -0.386300 --5.598500 31.822901 -1.405400 --6.824000 22.193899 -3.254300 --2.189200 21.987900 -1.481800 --0.340300 31.400700 -9.922000 --0.845100 29.891001 -9.491500 --5.595300 29.761600 -8.491100 --4.970000 33.082802 -8.871300 --0.835600 22.853901 -8.203000 --0.845100 29.891001 -9.491500 --0.425600 30.069099 -1.503600 --2.189200 21.987900 -1.481800 --2.162800 35.743500 -9.599900 --0.340300 31.400700 -9.922000 --4.970000 33.082802 -8.871300 --5.283200 35.952900 -7.814600 --5.283200 35.952900 -7.814600 --6.542300 35.480598 -4.902800 --5.919200 37.619099 -4.570300 --5.919200 37.619099 -4.570300 --6.542300 35.480598 -4.902800 --5.598500 31.822901 -1.405400 --4.685700 36.664101 -1.616400 --0.474100 61.294899 -0.607800 --1.340700 61.343498 -1.024900 --2.225300 60.301201 -1.334400 --0.596000 60.268700 -0.255900 --1.340700 61.343498 -1.024900 --0.474100 61.294899 -0.607800 --0.785400 61.539799 -0.048800 --1.792100 61.563202 -0.648200 -0.000000 45.235802 -8.516300 -0.000000 38.221600 -8.073300 --2.827600 38.171799 -8.088300 --5.495700 46.043098 -6.732400 --0.425600 30.069099 -1.503600 --3.798500 31.552500 -0.386300 --2.189200 21.987900 -1.481800 -0.000000 31.547001 -9.939100 -0.000000 30.215401 -1.522000 --0.425600 30.069099 -1.503600 --0.340300 31.400700 -9.922000 --21.061199 44.183601 -7.611200 --22.585199 48.327702 -7.594400 --17.208200 49.477699 -7.512200 --15.884600 46.520500 -7.855800 --22.348700 46.932201 -2.822400 --22.585199 48.327702 -7.594400 --23.337700 47.268200 -6.945000 --21.061199 44.183601 -7.611200 --21.936399 43.055199 -3.733600 --22.105101 44.119598 -7.074000 -0.000000 59.375900 0.272700 -0.226300 59.631802 0.717000 --0.226300 59.631802 0.717000 --0.163800 60.672798 0.405300 --0.226300 59.631802 0.717000 -0.226300 59.631802 0.717000 -0.163800 60.672798 0.405300 --0.340300 31.400700 -9.922000 --2.162800 35.743500 -9.599900 -0.000000 35.795200 -9.599900 -0.000000 31.547001 -9.939100 --5.919200 37.619099 -4.570300 --2.827600 38.171799 -8.088300 --2.162800 35.743500 -9.599900 --5.283200 35.952900 -7.814600 --28.543800 44.178001 -4.651400 --27.102699 45.320202 -5.735100 --26.246300 42.901402 -5.383600 --28.292801 42.543098 -4.446800 --25.491899 42.827301 -2.370100 --27.637899 42.321201 -1.984400 --28.380600 42.330502 -3.056600 --26.246300 42.901402 -5.383600 --25.491899 42.827301 -2.370100 --28.380600 42.330502 -3.056600 --0.179900 61.274700 0.058500 --0.163800 60.672798 0.405300 -0.163800 60.672798 0.405300 -0.179900 61.274700 0.058500 -0.000000 61.912998 -0.048000 --0.179900 61.274700 0.058500 -0.179900 61.274700 0.058500 --2.162800 35.743500 -9.599900 --2.827600 38.171799 -8.088300 -0.000000 38.221600 -8.073300 -0.000000 35.795200 -9.599900 -4.620900 14.945700 -8.516100 -3.252600 0.001600 -8.591000 -1.712600 0.024900 -9.195700 -1.456400 14.610600 -8.695100 -4.089400 2.633000 -5.031300 -3.252600 0.001600 -8.591000 -4.620900 14.945700 -8.516100 -5.308800 13.910900 -3.738700 -1.553600 3.059500 -4.173500 -3.061600 3.537800 -3.461700 -1.766900 13.754900 -2.918700 -1.553600 3.059500 -4.173500 -1.766900 13.754900 -2.918700 -1.239800 14.644800 -6.465300 -0.626000 0.031700 -8.336200 -5.495700 46.043098 -6.732400 -6.029500 46.188801 -3.956000 -5.919200 37.619099 -4.570300 -2.827600 38.171799 -8.088300 -4.685700 36.664101 -1.616400 -5.919200 37.619099 -4.570300 -6.029500 46.188801 -3.956000 -4.298500 47.001099 -0.058900 -6.775800 50.206501 -7.534500 -0.000000 50.037800 -9.413700 -0.000000 53.738098 -8.986800 -7.252500 54.524502 -7.615000 -7.252500 54.524502 -7.615000 -6.624100 53.529800 -2.653700 -8.184300 53.108700 -3.320400 -8.747800 53.770199 -7.353300 -9.827700 52.989700 -7.188500 -9.508400 52.403099 -3.672700 -15.636800 49.715099 -4.015700 -14.989100 50.565300 -7.297200 -0.000000 37.009800 0.550700 -4.685700 36.664101 -1.616400 -4.298500 47.001099 -0.058900 -0.000000 47.287498 1.094200 -0.000000 53.738098 -8.986800 -0.000000 55.950600 -7.250100 -2.321200 55.471001 -5.570800 -7.252500 54.524502 -7.615000 -3.773800 51.093601 -1.034300 -4.298500 47.001099 -0.058900 -6.029500 46.188801 -3.956000 -6.624100 53.529800 -2.653700 -6.624100 53.529800 -2.653700 -6.029500 46.188801 -3.956000 -7.813100 49.342701 -3.886900 -0.000000 50.880199 0.110000 -0.000000 47.287498 1.094200 -4.298500 47.001099 -0.058900 -3.773800 51.093601 -1.034300 -16.136200 50.023998 -7.546200 -14.885000 46.974701 -7.946000 -13.779500 47.417198 -7.715300 -14.989100 50.565300 -7.297200 -13.779500 47.417198 -7.715300 -14.977100 45.689201 -4.821000 -8.927200 49.128502 -4.128200 -8.756500 49.321098 -7.632900 -17.208200 49.477699 -7.512200 -16.810101 49.139900 -3.928800 -22.348700 46.932201 -2.822400 -22.585199 48.327702 -7.594400 -21.936399 43.055199 -3.733600 -22.348700 46.932201 -2.822400 -16.810101 49.139900 -3.928800 -16.192200 44.960400 -4.877100 -22.105101 44.119598 -7.074000 -21.061199 44.183601 -7.611200 -22.585199 48.327702 -7.594400 -23.337700 47.268200 -6.945000 -15.884600 46.520500 -7.855800 -21.061199 44.183601 -7.611200 -21.936399 43.055199 -3.733600 -16.192200 44.960400 -4.877100 -5.598500 31.822901 -1.404300 -7.453900 29.910801 -4.780100 -7.174300 32.815300 -5.167300 -4.970000 33.082802 -8.871900 -7.174300 32.815300 -5.167300 -7.453900 29.910801 -4.780100 -5.595300 29.761600 -8.492500 -6.827700 20.858999 -3.044800 -6.194700 19.576300 -3.478600 -5.426000 21.341299 -8.132600 -0.835600 22.853901 -8.210700 -5.317800 22.936800 -8.016200 -5.426000 21.341299 -8.132600 -0.899900 21.410400 -8.349400 -0.899900 21.410400 -8.349400 -1.853000 19.164200 -1.371600 -1.957400 20.620800 -1.211500 -6.194700 19.576300 -3.478600 -6.827700 20.858999 -3.044800 -1.957400 20.620800 -1.211500 -1.853000 19.164200 -1.371600 -5.117200 15.490400 -9.679700 -0.134100 16.169500 -9.174700 -0.899900 21.410400 -8.349400 -5.426000 21.341299 -8.132600 -0.134100 16.169500 -9.174700 -1.716700 14.450400 -2.459200 -1.853000 19.164200 -1.371600 -0.899900 21.410400 -8.349400 -1.853000 19.164200 -1.371600 -1.716700 14.450400 -2.459200 -6.069200 14.643000 -3.762300 -6.194700 19.576300 -3.478600 -6.069200 14.643000 -3.762300 -5.117200 15.490400 -9.679700 -5.426000 21.341299 -8.132600 -6.194700 19.576300 -3.478600 -7.813100 49.342701 -3.886900 -6.029500 46.188801 -3.956000 -5.495700 46.043098 -6.732400 -6.775800 50.206501 -7.534500 -8.756500 49.321098 -7.632900 -8.927200 49.128502 -4.128200 -7.813100 49.342701 -3.886900 -6.775800 50.206501 -7.534500 -5.495700 46.043098 -6.732400 -0.000000 45.235802 -8.516300 -0.000000 50.037800 -9.413700 -6.775800 50.206501 -7.534500 -3.773800 51.093601 -1.034300 -1.435700 55.057400 -2.884500 -0.000000 54.522099 -2.187600 -0.000000 50.880199 0.110000 -0.163800 60.672798 0.405300 -0.226300 59.631802 0.717000 -0.605400 59.453602 0.006800 -0.596000 60.268700 -0.255900 -0.000000 59.375900 0.272700 -0.000000 58.735298 0.237300 -0.793500 58.611801 -0.022400 -0.605400 59.453602 0.006800 -1.340700 61.343498 -1.024900 -2.225300 60.301201 -1.334400 -2.209500 61.230499 -1.515000 -0.474100 61.294899 -0.607800 -0.785400 61.539799 -0.048800 -0.179900 61.274700 0.058500 -0.163800 60.672798 0.405300 -0.596000 60.268700 -0.255900 -0.474100 61.294899 -0.607800 -0.179900 61.274700 0.058500 -0.785400 61.539799 -0.048800 -1.792100 61.563202 -0.648200 -1.901400 62.898899 -1.262500 -0.000000 62.775902 -0.355700 -1.901400 62.898899 -1.262500 -1.792100 61.563202 -0.648200 -2.209500 61.230499 -1.515000 -2.505800 61.413601 -3.333900 -2.071800 58.080299 -1.837600 -2.361600 58.652599 -3.405400 -2.043500 58.694401 -1.722000 -2.361600 58.652599 -3.405400 -2.071800 58.080299 -1.837600 -1.480400 57.287800 -3.167400 -2.361600 58.652599 -3.405400 -2.484800 60.667999 -2.078300 -2.225300 60.301201 -1.334400 -2.043500 58.694401 -1.722000 -0.596000 60.268700 -0.255900 -0.605400 59.453602 0.006800 -0.793500 58.611801 -0.022400 -2.225300 60.301201 -1.334400 -0.793500 58.611801 -0.022400 -0.000000 58.735298 0.237300 -0.000000 57.320400 0.190300 -0.860300 57.339199 -0.345300 -2.361600 58.652599 -3.405400 -1.480400 57.287800 -3.167400 -1.507500 57.978802 -4.806700 -1.480400 57.287800 -3.167400 -0.509500 56.862801 -2.081200 -0.000000 54.522099 -2.187600 -1.435700 55.057400 -2.884500 -1.435700 55.057400 -2.884500 -2.321200 55.471001 -5.570800 -1.507500 57.978802 -4.806700 -1.480400 57.287800 -3.167400 -5.117200 15.490400 -9.679700 -1.456400 14.610600 -8.695100 -0.134100 16.169500 -9.174700 -0.134100 16.169500 -9.174700 -1.239800 14.644800 -6.465300 -1.716700 14.450400 -2.459200 -5.308800 13.910900 -3.738700 -6.069200 14.643000 -3.762300 -1.716700 14.450400 -2.459200 -1.766900 13.754900 -2.918700 -4.620900 14.945700 -8.516100 -5.117200 15.490400 -9.679700 -6.069200 14.643000 -3.762300 -5.308800 13.910900 -3.738700 -1.957400 20.620800 -1.211500 -2.189200 21.987900 -1.483700 -0.835600 22.853901 -8.210700 -0.899900 21.410400 -8.349400 -7.174300 32.815300 -5.167300 -4.970000 33.082802 -8.871900 -5.283200 35.952900 -7.814600 -6.542300 35.480598 -4.902800 -5.598500 31.822901 -1.404300 -7.174300 32.815300 -5.167300 -6.542300 35.480598 -4.902800 -4.685700 36.664101 -1.616400 -3.798500 31.552500 -0.388900 -5.598500 31.822901 -1.404300 -2.225300 60.301201 -1.334400 -2.484800 60.667999 -2.078300 -2.209500 61.230499 -1.515000 -8.927200 49.128502 -4.128200 -9.508400 52.403099 -3.672700 -8.184300 53.108700 -3.320400 -7.813100 49.342701 -3.886900 -8.184300 53.108700 -3.320400 -9.508400 52.403099 -3.672700 -9.827700 52.989700 -7.188500 -8.747800 53.770199 -7.353300 -8.747800 53.770199 -7.353300 -6.775800 50.206501 -7.534500 -7.252500 54.524502 -7.615000 -8.927200 49.128502 -4.128200 -14.977100 45.689201 -4.821000 -15.636800 49.715099 -4.015700 -9.508400 52.403099 -3.672700 -1.435700 55.057400 -2.884500 -3.773800 51.093601 -1.034300 -6.624100 53.529800 -2.653700 -7.252500 54.524502 -7.615000 -2.321200 55.471001 -5.570800 -1.435700 55.057400 -2.884500 -7.252500 54.524502 -7.615000 -2.209500 61.230499 -1.515000 -2.484800 60.667999 -2.078300 -2.505800 61.413601 -3.333900 -2.484800 60.667999 -2.078300 -2.361600 58.652599 -3.405400 -2.505800 61.413601 -3.333900 -2.209500 61.230499 -1.515000 -1.792100 61.563202 -0.648200 -1.340700 61.343498 -1.024900 -3.061600 3.537800 -3.461700 -1.553600 3.059500 -4.173500 -1.568700 1.981700 -0.627100 -3.735600 1.816900 0.228400 -0.626000 0.031700 -8.336200 -1.825200 -0.024100 0.601200 -1.568700 1.981700 -0.627100 -1.553600 3.059500 -4.173500 -1.825200 -0.024100 0.601200 -0.626000 0.031700 -8.336200 -1.712600 0.024900 -9.195700 -3.769300 -0.009000 1.132900 -1.712600 0.024900 -9.195700 -0.626000 0.031700 -8.336200 -1.239800 14.644800 -6.465300 -1.456400 14.610600 -8.695100 -1.568700 1.981700 -0.627100 -1.825200 -0.024100 0.601200 -3.769300 -0.009000 1.132900 -3.735600 1.816900 0.228400 -4.089400 2.633000 -5.031300 -5.390300 1.568200 -1.670300 -5.176800 -0.025000 -0.598300 -3.252600 0.001600 -8.591000 -3.769300 -0.009000 1.132900 -5.176800 -0.025000 -0.598300 -5.390300 1.568200 -1.670300 -3.735600 1.816900 0.228400 -5.390300 1.568200 -1.670300 -4.089400 2.633000 -5.031300 -3.061600 3.537800 -3.461700 -3.735600 1.816900 0.228400 -3.061600 3.537800 -3.461700 -4.089400 2.633000 -5.031300 -5.308800 13.910900 -3.738700 -1.766900 13.754900 -2.918700 -5.117200 15.490400 -9.679700 -4.620900 14.945700 -8.516100 -1.456400 14.610600 -8.695100 -1.456400 14.610600 -8.695100 -1.239800 14.644800 -6.465300 -0.134100 16.169500 -9.174700 -5.426000 21.341299 -8.132600 -5.317800 22.936800 -8.016200 -6.824000 22.193899 -3.251500 -6.827700 20.858999 -3.044800 -0.845100 29.891001 -9.498900 -5.595300 29.761600 -8.492500 -5.317800 22.936800 -8.016200 -0.835600 22.853901 -8.210700 -1.957400 20.620800 -1.211500 -6.827700 20.858999 -3.044800 -6.824000 22.193899 -3.251500 -2.189200 21.987900 -1.483700 -0.605400 59.453602 0.006800 -0.226300 59.631802 0.717000 -0.000000 59.375900 0.272700 -21.936399 43.055199 -3.733600 -23.265499 44.290199 -3.614200 -23.323000 46.228001 -3.425200 -22.348700 46.932201 -2.822400 -22.105101 44.119598 -7.074000 -23.337700 47.268200 -6.945000 -23.881300 46.267799 -5.995500 -23.273100 44.479099 -6.170500 -22.348700 46.932201 -2.822400 -23.323000 46.228001 -3.425200 -23.881300 46.267799 -5.995500 -23.337700 47.268200 -6.945000 -21.936399 43.055199 -3.733600 -22.105101 44.119598 -7.074000 -23.273100 44.479099 -6.170500 -23.265499 44.290199 -3.614200 -23.323000 46.228001 -3.425200 -23.265499 44.290199 -3.614200 -24.446100 44.099098 -3.039500 -24.935400 45.742901 -3.288800 -23.273100 44.479099 -6.170500 -23.881300 46.267799 -5.995500 -25.982700 45.641201 -5.974700 -25.718901 44.407902 -5.989100 -23.881300 46.267799 -5.995500 -23.323000 46.228001 -3.425200 -24.935400 45.742901 -3.288800 -25.982700 45.641201 -5.974700 -23.265499 44.290199 -3.614200 -23.273100 44.479099 -6.170500 -25.718901 44.407902 -5.989100 -24.446100 44.099098 -3.039500 -3.798500 31.552500 -0.388900 -4.685700 36.664101 -1.616400 -0.000000 37.009800 0.550700 -0.000000 31.552500 0.128500 -27.058001 43.733101 -1.471100 -26.775499 43.007000 -1.492900 -27.637899 42.321201 -1.984400 -28.100901 44.177299 -2.470000 -27.102699 45.320202 -5.735100 -26.246300 42.901402 -5.383600 -25.718901 44.407902 -5.989100 -25.982700 45.641201 -5.974700 -24.935400 45.742901 -3.288800 -26.753901 45.398300 -2.858600 -27.102699 45.320202 -5.735100 -25.982700 45.641201 -5.974700 -24.446100 44.099098 -3.039500 -25.718901 44.407902 -5.989100 -26.246300 42.901402 -5.383600 -28.380600 42.330502 -3.056600 -28.697901 44.238201 -3.477500 -28.100901 44.177299 -2.470000 -27.637899 42.321201 -1.984400 -28.380600 42.330502 -3.056600 -28.292801 42.543098 -4.446800 -28.543800 44.178001 -4.651400 -28.697901 44.238201 -3.477500 -26.753901 45.398300 -2.858600 -28.100901 44.177299 -2.470000 -28.697901 44.238201 -3.477500 -24.935400 45.742901 -3.288800 -24.446100 44.099098 -3.039500 -25.587200 43.557701 -2.038700 -26.117701 44.487900 -2.198700 -24.446100 44.099098 -3.039500 -26.246300 42.901402 -5.383600 -25.491899 42.827301 -2.370100 -25.587200 43.557701 -2.038700 -26.753901 45.398300 -2.858600 -24.935400 45.742901 -3.288800 -26.117701 44.487900 -2.198700 -0.000000 31.552500 0.128500 -0.000000 24.132099 -0.356700 -3.463700 23.872801 -0.356700 -3.798500 31.552500 -0.388900 -2.225300 60.301201 -1.334400 -0.793500 58.611801 -0.022400 -2.043500 58.694401 -1.722000 -0.793500 58.611801 -0.022400 -0.860300 57.339199 -0.345300 -2.071800 58.080299 -1.837600 -2.043500 58.694401 -1.722000 -2.071800 58.080299 -1.837600 -0.860300 57.339199 -0.345300 -0.509500 56.862801 -2.081200 -1.480400 57.287800 -3.167400 -0.179900 61.274700 0.058500 -0.785400 61.539799 -0.048800 -0.000000 61.912998 -0.048000 -15.884600 46.520500 -7.855800 -14.885000 46.974701 -7.946000 -16.136200 50.023998 -7.546200 -17.208200 49.477699 -7.512200 -15.636800 49.715099 -4.015700 -16.810101 49.139900 -3.928800 -17.208200 49.477699 -7.512200 -16.136200 50.023998 -7.546200 -16.192200 44.960400 -4.877100 -14.977100 45.689201 -4.821000 -14.885000 46.974701 -7.946000 -15.884600 46.520500 -7.855800 -16.810101 49.139900 -3.928800 -15.636800 49.715099 -4.015700 -14.977100 45.689201 -4.821000 -16.192200 44.960400 -4.877100 -13.779500 47.417198 -7.715300 -8.756500 49.321098 -7.632900 -9.827700 52.989700 -7.188500 -14.989100 50.565300 -7.297200 -15.636800 49.715099 -4.015700 -16.136200 50.023998 -7.546200 -14.989100 50.565300 -7.297200 -13.779500 47.417198 -7.715300 -14.885000 46.974701 -7.946000 -14.977100 45.689201 -4.821000 -1.239800 14.644800 -6.465300 -1.766900 13.754900 -2.918700 -1.716700 14.450400 -2.459200 -26.117701 44.487900 -2.198700 -25.587200 43.557701 -2.038700 -26.775499 43.007000 -1.492900 -27.058001 43.733101 -1.471100 -25.587200 43.557701 -2.038700 -25.491899 42.827301 -2.370100 -27.637899 42.321201 -1.984400 -26.775499 43.007000 -1.492900 -26.117701 44.487900 -2.198700 -27.058001 43.733101 -1.471100 -28.100901 44.177299 -2.470000 -8.184300 53.108700 -3.320400 -6.624100 53.529800 -2.653700 -7.813100 49.342701 -3.886900 -8.747800 53.770199 -7.353300 -9.827700 52.989700 -7.188500 -8.756500 49.321098 -7.632900 -6.775800 50.206501 -7.534500 -28.543800 44.178001 -4.651400 -27.102699 45.320202 -5.735100 -26.753901 45.398300 -2.858600 -28.697901 44.238201 -3.477500 -26.246300 42.901402 -5.383600 -28.292801 42.543098 -4.446800 -28.380600 42.330502 -3.056600 -28.100901 44.177299 -2.470000 -26.753901 45.398300 -2.858600 -26.117701 44.487900 -2.198700 -1.712600 0.024900 -9.195700 -3.252600 0.001600 -8.591000 -5.176800 -0.025000 -0.598300 -3.769300 -0.009000 1.132900 -0.000000 61.912998 -0.048000 -0.785400 61.539799 -0.048800 -0.000000 62.775902 -0.355700 -0.340300 31.400700 -9.928000 -0.845100 29.891001 -9.498900 -0.425600 30.069099 -1.507500 -0.509500 56.862801 -2.081200 -0.509500 56.862801 -2.081200 -0.860300 57.339199 -0.345300 -0.000000 57.320400 0.190300 -0.000000 56.862801 -2.081200 -5.598500 31.822901 -1.404300 -6.824000 22.193899 -3.251500 -7.453900 29.910801 -4.780100 -6.824000 22.193899 -3.251500 -5.317800 22.936800 -8.016200 -5.595300 29.761600 -8.492500 -7.453900 29.910801 -4.780100 -3.798500 31.552500 -0.388900 -2.189200 21.987900 -1.483700 -6.824000 22.193899 -3.251500 -5.598500 31.822901 -1.404300 -0.340300 31.400700 -9.928000 -4.970000 33.082802 -8.871900 -5.595300 29.761600 -8.492500 -0.845100 29.891001 -9.498900 -0.835600 22.853901 -8.210700 -2.189200 21.987900 -1.483700 -0.425600 30.069099 -1.507500 -0.845100 29.891001 -9.498900 -2.162800 35.743500 -9.599900 -5.283200 35.952900 -7.814600 -4.970000 33.082802 -8.871900 -0.340300 31.400700 -9.928000 -5.283200 35.952900 -7.814600 -5.919200 37.619099 -4.570300 -6.542300 35.480598 -4.902800 -5.919200 37.619099 -4.570300 -4.685700 36.664101 -1.616400 -5.598500 31.822901 -1.404300 -6.542300 35.480598 -4.902800 -0.474100 61.294899 -0.607800 -0.596000 60.268700 -0.255900 -2.225300 60.301201 -1.334400 -1.340700 61.343498 -1.024900 -1.340700 61.343498 -1.024900 -1.792100 61.563202 -0.648200 -0.785400 61.539799 -0.048800 -0.474100 61.294899 -0.607800 -0.000000 45.235802 -8.516300 -5.495700 46.043098 -6.732400 -2.827600 38.171799 -8.088300 -0.000000 38.221600 -8.073300 -0.425600 30.069099 -1.507500 -2.189200 21.987900 -1.483700 -3.798500 31.552500 -0.388900 -0.000000 31.547001 -9.939100 -0.340300 31.400700 -9.928000 -0.425600 30.069099 -1.507500 -0.000000 30.215401 -1.522000 -21.061199 44.183601 -7.611200 -15.884600 46.520500 -7.855800 -17.208200 49.477699 -7.512200 -22.585199 48.327702 -7.594400 -22.348700 46.932201 -2.822400 -23.337700 47.268200 -6.945000 -22.585199 48.327702 -7.594400 -21.061199 44.183601 -7.611200 -22.105101 44.119598 -7.074000 -21.936399 43.055199 -3.733600 -0.340300 31.400700 -9.928000 -0.000000 31.547001 -9.939100 -0.000000 35.795200 -9.599900 -2.162800 35.743500 -9.599900 -5.919200 37.619099 -4.570300 -5.283200 35.952900 -7.814600 -2.162800 35.743500 -9.599900 -2.827600 38.171799 -8.088300 -28.543800 44.178001 -4.651400 -28.292801 42.543098 -4.446800 -26.246300 42.901402 -5.383600 -27.102699 45.320202 -5.735100 -25.491899 42.827301 -2.370100 -28.380600 42.330502 -3.056600 -27.637899 42.321201 -1.984400 -26.246300 42.901402 -5.383600 -28.380600 42.330502 -3.056600 -25.491899 42.827301 -2.370100 -2.162800 35.743500 -9.599900 -0.000000 35.795200 -9.599900 -0.000000 38.221600 -8.073300 -2.827600 38.171799 -8.088300 -0.706900 62.538601 -0.289700 -1.838200 62.255798 -0.802600 -1.901400 63.532299 -1.247600 -0.672300 63.485901 -0.421800 -1.901400 63.532299 -1.247600 -1.838200 62.255798 -0.802600 -3.194200 60.597198 -3.460400 -2.758700 63.532299 -3.348800 -2.758700 63.532299 -3.348800 -3.194200 60.597198 -3.460400 -3.446000 60.597198 -5.980300 -3.010600 63.532299 -5.868700 -3.194200 60.597198 -3.460400 -1.838200 62.255798 -0.802600 -2.336800 60.597198 -1.072500 -2.130500 53.628601 -1.359200 -4.088800 54.879799 -3.460400 -3.194200 60.597198 -3.460400 -2.336800 60.597198 -1.072500 -4.088800 54.879799 -3.460400 -4.340700 55.234299 -6.210400 -3.446000 60.597198 -5.980300 -3.194200 60.597198 -3.460400 -3.010600 63.532299 -5.868700 -3.446000 60.597198 -5.980300 -2.517200 60.597198 -7.879200 -1.932100 63.532299 -7.311200 -3.446000 60.597198 -5.980300 -4.340700 55.234299 -6.210400 -2.990300 54.496300 -8.246000 -2.517200 60.597198 -7.879200 -1.932100 63.532299 -7.311200 -2.517200 60.597198 -7.879200 -0.000000 60.597198 -8.812800 -0.000000 63.532299 -8.174500 -2.990300 54.496300 -8.246000 -0.000000 54.050800 -8.782700 -0.000000 60.597198 -8.812800 -2.517200 60.597198 -7.879200 -0.672300 63.485901 -0.421800 -1.901400 63.532299 -1.247600 -1.171400 65.057899 -2.205500 -1.901400 63.532299 -1.247600 -2.758700 63.532299 -3.348800 -1.795600 65.057899 -4.806100 -1.171400 65.057899 -2.205500 -2.758700 63.532299 -3.348800 -3.010600 63.532299 -5.868700 -1.795600 65.057899 -4.806100 -3.010600 63.532299 -5.868700 -1.932100 63.532299 -7.311200 -0.000000 65.057899 -6.421400 -1.795600 65.057899 -4.806100 -1.932100 63.532299 -7.311200 -0.000000 63.532299 -8.174500 -0.000000 65.057899 -6.421400 -1.171400 65.057899 -2.205500 -1.795600 65.057899 -4.806100 -0.000000 65.560898 -4.058400 -1.795600 65.057899 -4.806100 -0.000000 65.057899 -6.421400 -0.000000 65.560898 -4.058400 -0.672300 63.485901 -0.421800 -1.171400 65.057899 -2.205500 --1.171400 65.057899 -2.205500 --0.672300 63.485901 -0.421800 -0.706900 62.538601 -0.289700 -0.672300 63.485901 -0.421800 -0.000000 62.538601 -0.140300 -0.672300 63.485901 -0.421800 --0.672300 63.485901 -0.421800 -0.000000 62.538601 -0.140300 -2.130500 53.628601 -1.359200 -2.336800 60.597198 -1.072500 -1.393700 60.597198 -3.164700 -1.187300 53.628601 -3.164700 --0.706900 62.538601 -0.289700 --0.672300 63.485901 -0.421800 --1.901400 63.532299 -1.247600 --1.838200 62.255798 -0.802600 --1.901400 63.532299 -1.247600 --2.758700 63.532299 -3.348800 --3.194200 60.597198 -3.460400 --1.838200 62.255798 -0.802600 --2.758700 63.532299 -3.348800 --3.010600 63.532299 -5.868700 --3.446000 60.597198 -5.980300 --3.194200 60.597198 -3.460400 --3.194200 60.597198 -3.460400 --2.336800 60.597198 -1.072500 --1.838200 62.255798 -0.802600 --2.130500 53.628601 -1.359200 --2.336800 60.597198 -1.072500 --3.194200 60.597198 -3.460400 --4.088800 54.879799 -3.460400 --4.088800 54.879799 -3.460400 --3.194200 60.597198 -3.460400 --3.446000 60.597198 -5.980300 --4.340700 55.234299 -6.210400 --3.010600 63.532299 -5.868700 --1.932100 63.532299 -7.311200 --2.517200 60.597198 -7.879200 --3.446000 60.597198 -5.980300 --3.446000 60.597198 -5.980300 --2.517200 60.597198 -7.879200 --2.990300 54.496300 -8.246000 --4.340700 55.234299 -6.210400 --1.932100 63.532299 -7.311200 -0.000000 63.532299 -8.174500 -0.000000 60.597198 -8.812800 --2.517200 60.597198 -7.879200 --2.990300 54.496300 -8.246000 --2.517200 60.597198 -7.879200 -0.000000 60.597198 -8.812800 -0.000000 54.050800 -8.782700 --0.672300 63.485901 -0.421800 --1.171400 65.057899 -2.205500 --1.901400 63.532299 -1.247600 --1.901400 63.532299 -1.247600 --1.171400 65.057899 -2.205500 --1.795600 65.057899 -4.806100 --2.758700 63.532299 -3.348800 --2.758700 63.532299 -3.348800 --1.795600 65.057899 -4.806100 --3.010600 63.532299 -5.868700 --3.010600 63.532299 -5.868700 --1.795600 65.057899 -4.806100 -0.000000 65.057899 -6.421400 --1.932100 63.532299 -7.311200 --1.932100 63.532299 -7.311200 -0.000000 65.057899 -6.421400 -0.000000 63.532299 -8.174500 --1.171400 65.057899 -2.205500 -0.000000 65.560898 -4.058400 --1.795600 65.057899 -4.806100 --1.795600 65.057899 -4.806100 -0.000000 65.560898 -4.058400 -0.000000 65.057899 -6.421400 --1.171400 65.057899 -2.205500 -1.171400 65.057899 -2.205500 -0.000000 65.560898 -4.058400 --0.706900 62.538601 -0.289700 -0.000000 62.538601 -0.140300 --0.672300 63.485901 -0.421800 --2.130500 53.628601 -1.359200 --1.187300 53.628601 -3.164700 --1.393700 60.597198 -3.164700 --2.336800 60.597198 -1.072500 -8.704300 24.905701 -6.036500 -7.984800 25.127701 -6.177400 -7.649900 27.558001 -5.856100 -8.503900 27.435900 -5.670300 -6.463600 36.223400 -3.704900 -5.778000 35.994701 -1.773100 -7.451900 27.210300 -3.504400 -8.503900 27.435900 -5.670300 -5.115000 35.782600 -2.051700 -6.597900 27.332300 -3.690200 -7.451900 27.210300 -3.504400 -5.778000 35.994701 -1.773100 -5.743400 36.019600 -3.995900 -6.463600 36.223400 -3.704900 -8.503900 27.435900 -5.670300 -7.649900 27.558001 -5.856100 -7.451900 27.210300 -3.504400 -6.597900 27.332300 -3.690200 -7.984800 25.127701 -6.177400 -8.704300 24.905701 -6.036500 -7.451900 27.210300 -3.504400 -8.704300 24.905701 -6.036500 -8.503900 27.435900 -5.670300 -6.463600 36.223400 -3.704900 -5.743400 36.019600 -3.995900 -5.115000 35.782600 -2.051700 -5.778000 35.994701 -1.773100 -4.513000 55.007702 -5.909800 -4.291100 55.098900 -5.871800 -4.207800 55.799599 -6.651700 -4.871900 55.799599 -6.765400 -2.904000 62.455601 -5.700500 -2.764700 62.455601 -4.128400 -4.736600 55.799599 -5.153900 -4.871900 55.799599 -6.765400 -2.764700 62.455601 -4.128400 -4.072400 55.799599 -5.040200 -4.736600 55.799599 -5.153900 -2.904000 62.455601 -5.700500 -4.871900 55.799599 -6.765400 -4.207800 55.799599 -6.651700 -4.736600 55.799599 -5.153900 -4.072400 55.799599 -5.040200 -4.291100 55.098900 -5.871800 -4.513000 55.007702 -5.909800 -4.736600 55.799599 -5.153900 -4.513000 55.007702 -5.909800 -4.871900 55.799599 -6.765400 -4 0 1 2 3 -4 4 5 6 7 -3 8 9 10 -4 11 12 13 14 -4 15 16 17 18 -4 19 20 21 22 -4 23 24 25 26 -4 27 28 29 30 -4 31 32 33 34 -4 35 36 37 38 -4 39 40 41 42 -4 43 44 45 46 -3 47 48 49 -4 50 51 52 53 -4 54 55 56 57 -4 58 59 60 61 -4 62 63 64 65 -4 66 67 68 69 -4 70 71 72 73 -4 74 75 76 77 -3 78 79 80 -4 81 82 83 84 -3 85 86 87 -4 88 89 90 91 -3 92 93 94 -4 95 96 97 98 -4 99 100 101 102 -4 103 104 105 106 -4 107 108 109 110 -4 111 112 113 114 -4 115 116 117 118 -4 119 120 121 122 -4 123 124 125 126 -4 127 128 129 130 -4 131 132 133 134 -4 135 136 137 138 -3 139 140 141 -3 142 143 144 -4 145 146 147 148 -4 149 150 151 152 -4 153 154 155 156 -3 157 158 159 -3 160 161 162 -4 163 164 165 166 -4 167 168 169 170 -4 171 172 173 174 -3 175 176 177 -4 178 179 180 181 -4 182 183 184 185 -3 186 187 188 -3 189 190 191 -4 192 193 194 195 -4 196 197 198 199 -4 200 201 202 203 -4 204 205 206 207 -3 208 209 210 -3 211 212 213 -3 214 215 216 -4 217 218 219 220 -4 221 222 223 224 -3 225 226 227 -4 228 229 230 231 -4 232 233 234 235 -3 236 237 238 -3 239 240 241 -3 242 243 244 -3 245 246 247 -4 248 249 250 251 -4 252 253 254 255 -4 256 257 258 259 -4 260 261 262 263 -4 264 265 266 267 -4 268 269 270 271 -4 272 273 274 275 -4 276 277 278 279 -4 280 281 282 283 -3 284 285 286 -3 287 288 289 -4 290 291 292 293 -4 294 295 296 297 -4 298 299 300 301 -3 302 303 304 -4 305 306 307 308 -4 309 310 311 312 -4 313 314 315 316 -4 317 318 319 320 -4 321 322 323 324 -4 325 326 327 328 -4 329 330 331 332 -4 333 334 335 336 -4 337 338 339 340 -4 341 342 343 344 -4 345 346 347 348 -4 349 350 351 352 -3 353 354 355 -4 356 357 358 359 -4 360 361 362 363 -3 364 365 366 -4 367 368 369 370 -4 371 372 373 374 -3 375 376 377 -4 378 379 380 381 -3 382 383 384 -4 385 386 387 388 -4 389 390 391 392 -3 393 394 395 -4 396 397 398 399 -4 400 401 402 403 -4 404 405 406 407 -4 408 409 410 411 -4 412 413 414 415 -3 416 417 418 -3 419 420 421 -3 422 423 424 -4 425 426 427 428 -4 429 430 431 432 -3 433 434 435 -3 436 437 438 -4 439 440 441 442 -4 443 444 445 446 -3 447 448 449 -3 450 451 452 -4 453 454 455 456 -3 457 458 459 -3 460 461 462 -3 463 464 465 -4 466 467 468 469 -3 470 471 472 -4 473 474 475 476 -4 477 478 479 480 -4 481 482 483 484 -4 485 486 487 488 -4 489 490 491 492 -3 493 494 495 -4 496 497 498 499 -4 500 501 502 503 -4 504 505 506 507 -4 508 509 510 511 -3 512 513 514 -4 515 516 517 518 -4 519 520 521 522 -3 523 524 525 -3 526 527 528 -3 529 530 531 -4 532 533 534 535 -4 536 537 538 539 -4 540 541 542 543 -4 544 545 546 547 -3 548 549 550 -3 551 552 553 -4 554 555 556 557 -3 558 559 560 -4 561 562 563 564 -4 565 566 567 568 -4 569 570 571 572 -3 573 574 575 -4 576 577 578 579 -4 580 581 582 583 -4 584 585 586 587 -4 588 589 590 591 -4 592 593 594 595 -4 596 597 598 599 -4 600 601 602 603 -4 604 605 606 607 -4 608 609 610 611 -3 612 613 614 -4 615 616 617 618 -4 619 620 621 622 -4 623 624 625 626 -4 627 628 629 630 -4 631 632 633 634 -4 635 636 637 638 -4 639 640 641 642 -3 643 644 645 -4 646 647 648 649 -3 650 651 652 -4 653 654 655 656 -3 657 658 659 -4 660 661 662 663 -4 664 665 666 667 -4 668 669 670 671 -4 672 673 674 675 -4 676 677 678 679 -4 680 681 682 683 -4 684 685 686 687 -4 688 689 690 691 -4 692 693 694 695 -4 696 697 698 699 -4 700 701 702 703 -3 704 705 706 -3 707 708 709 -4 710 711 712 713 -4 714 715 716 717 -4 718 719 720 721 -3 722 723 724 -3 725 726 727 -4 728 729 730 731 -4 732 733 734 735 -4 736 737 738 739 -3 740 741 742 -4 743 744 745 746 -4 747 748 749 750 -3 751 752 753 -3 754 755 756 -4 757 758 759 760 -4 761 762 763 764 -4 765 766 767 768 -4 769 770 771 772 -3 773 774 775 -3 776 777 778 -3 779 780 781 -4 782 783 784 785 -4 786 787 788 789 -3 790 791 792 -4 793 794 795 796 -4 797 798 799 800 -3 801 802 803 -3 804 805 806 -3 807 808 809 -3 810 811 812 -4 813 814 815 816 -4 817 818 819 820 -4 821 822 823 824 -4 825 826 827 828 -4 829 830 831 832 -4 833 834 835 836 -4 837 838 839 840 -4 841 842 843 844 -4 845 846 847 848 -3 849 850 851 -3 852 853 854 -4 855 856 857 858 -4 859 860 861 862 -4 863 864 865 866 -3 867 868 869 -4 870 871 872 873 -4 874 875 876 877 -4 878 879 880 881 -4 882 883 884 885 -4 886 887 888 889 -4 890 891 892 893 -4 894 895 896 897 -4 898 899 900 901 -4 902 903 904 905 -4 906 907 908 909 -4 910 911 912 913 -4 914 915 916 917 -3 918 919 920 -4 921 922 923 924 -4 925 926 927 928 -3 929 930 931 -4 932 933 934 935 -4 936 937 938 939 -3 940 941 942 -4 943 944 945 946 -3 947 948 949 -4 950 951 952 953 -4 954 955 956 957 -3 958 959 960 -4 961 962 963 964 -4 965 966 967 968 -4 969 970 971 972 -4 973 974 975 976 -4 977 978 979 980 -3 981 982 983 -3 984 985 986 -3 987 988 989 -4 990 991 992 993 -4 994 995 996 997 -3 998 999 1000 -3 1001 1002 1003 -4 1004 1005 1006 1007 -4 1008 1009 1010 1011 -3 1012 1013 1014 -3 1015 1016 1017 -4 1018 1019 1020 1021 -3 1022 1023 1024 -3 1025 1026 1027 -3 463 1028 464 -4 1029 1030 1031 1032 -3 1033 1034 1035 -4 1036 1037 1038 1039 -4 1040 1041 1042 1043 -4 1044 1045 1046 1047 -4 1048 1049 1050 1051 -4 1052 1053 1054 1055 -3 1056 1057 1058 -4 1059 1060 1061 1062 -4 1063 1064 1065 1066 -4 1067 1068 1069 1070 -4 1071 1072 1073 1074 -3 1075 1076 1077 -4 1078 1079 1080 1081 -4 1082 1083 1084 1085 -3 1086 1087 1088 -3 1089 1090 1091 -4 1092 1093 1094 1095 -4 1096 1097 1098 1099 -4 1100 1101 1102 1103 -3 1104 1105 1106 -3 1107 1108 1109 -4 1110 1111 1112 1113 -4 1114 1115 1116 1117 -4 1118 1119 1120 1121 -4 1122 1123 1124 1125 -3 1126 1127 1128 -4 1129 1130 1131 1132 -4 1133 1134 1135 1136 -4 1137 1138 1139 1140 -4 1141 1142 1143 1144 -4 1145 1146 1147 1148 -4 1149 1150 1151 1152 -3 1153 1154 1155 -4 1156 1157 1158 1159 -3 1160 1161 1162 -4 1163 1164 1165 1166 -3 1167 1168 1169 -3 1170 1171 1172 -3 1173 1174 1175 -4 1176 1177 1178 1179 -3 1180 1181 1182 -3 1183 1184 1185 -4 1186 1187 1188 1189 -4 1190 1191 1192 1193 -4 1194 1195 1196 1197 -4 1198 1199 1200 1201 -3 1202 1203 1204 -4 1205 1206 1207 1208 -4 1209 1210 1211 1212 -4 1213 1214 1215 1216 -4 1217 1218 1219 1220 -4 1221 1222 1223 1224 -4 1225 1226 1227 1228 -3 1229 1230 1231 -4 1232 1233 1234 1235 -3 1236 1237 1238 -4 1239 1240 1241 1242 -3 1243 1244 1245 -3 1246 1247 1248 -3 1249 1250 1251 -3 1252 1253 1254 -3 1255 1256 1257 -4 1258 1259 1260 1261 -4 1262 1263 1264 1265 -4 1266 1267 1268 1269 -4 1270 1271 1272 1273 -4 1274 1275 1276 1277 -4 1278 1279 1280 1281 -3 1282 1283 1284 -4 1285 1286 1287 1288 -4 1289 1290 1291 1292 -4 1293 1294 1295 1296 -3 1297 1298 1299 -3 1300 1301 1302 -4 1303 1304 1305 1306 -3 1307 1308 1309 diff --git a/src/tests/evas/meshes/ply/NoNormal_UVs_Colors.ply b/src/tests/evas/meshes/ply/NoNormal_UVs_Colors.ply deleted file mode 100644 index 108c259ba9..0000000000 --- a/src/tests/evas/meshes/ply/NoNormal_UVs_Colors.ply +++ /dev/null @@ -1,1681 +0,0 @@ -ply -format ascii 1.0 -comment Created by Blender 2.69 (sub 0) - www.blender.org, source file: '' -element vertex 1310 -property float x -property float y -property float z -property float s -property float t -property uchar red -property uchar green -property uchar blue -element face 356 -property list uchar uint vertex_indices -end_header --4.649800 14.945700 -8.785600 0.094400 0.185800 0 253 27 --2.020300 14.610600 -8.278800 0.060000 0.185800 0 253 27 --1.712600 0.024900 -9.195700 0.089900 0.023200 254 68 73 --3.252600 0.001600 -8.591000 0.107400 0.025300 254 68 73 --4.649800 14.945700 -8.785600 0.094400 0.185800 254 68 73 --3.252600 0.001600 -8.591000 0.107400 0.025300 254 88 92 --4.089400 2.633000 -5.031300 0.145000 0.057700 254 68 73 --5.308800 13.910900 -3.738700 0.154100 0.185800 254 68 73 --1.553600 3.059500 -4.173500 0.181500 0.058600 18 0 253 --1.766900 13.754900 -2.918700 0.193300 0.185800 0 254 27 --3.061600 3.537800 -3.461700 0.164000 0.067400 18 0 252 --1.553600 3.059500 -4.173500 0.181500 0.058600 18 0 253 --0.626000 0.031700 -8.336200 0.220100 0.017000 19 0 253 --0.971400 14.644800 -6.706400 0.225200 0.185800 27 229 30 --1.766900 13.754900 -2.918700 0.193300 0.185800 0 253 27 --5.495700 46.043098 -6.732400 0.139900 0.788400 254 254 254 --2.827600 38.171799 -8.088300 0.114500 0.661600 254 254 254 --5.919200 37.619099 -4.570300 0.183200 0.661600 254 254 254 --6.029500 46.188801 -3.956000 0.183300 0.792100 254 254 254 --4.685700 36.664101 -1.616400 0.239100 0.661600 13 240 28 --4.298500 47.001099 -0.058900 0.249300 0.802400 5 247 27 --6.029500 46.188801 -3.956000 0.183300 0.792100 0 253 27 --5.919200 37.619099 -4.570300 0.183200 0.661600 0 253 27 --6.775800 50.206501 -7.534500 0.134100 0.852600 0 254 27 --7.252500 54.524502 -7.615000 0.126100 0.913200 0 254 27 -0.000000 53.738098 -8.986800 0.028100 0.877800 0 254 27 -0.000000 50.037800 -9.413700 0.041800 0.827300 0 254 27 --7.252500 54.524502 -7.615000 0.812300 0.981700 0 253 27 --8.747800 53.770199 -7.353300 0.807700 0.944900 0 253 27 --8.184300 53.108700 -3.320400 0.746000 0.944900 0 253 27 --6.624100 53.529800 -2.653700 0.746000 0.986600 0 253 27 --9.827700 52.989700 -7.188500 0.805500 0.922700 0 253 27 --14.989100 50.565300 -7.297200 0.805300 0.834400 0 253 27 --15.636800 49.715099 -4.015700 0.746000 0.809400 0 253 27 --9.508400 52.403099 -3.672700 0.746000 0.922700 0 253 27 -0.000000 37.009800 0.550700 0.310700 0.661600 172 124 55 -0.000000 47.287498 1.094200 0.310700 0.805700 0 252 27 --4.298500 47.001099 -0.058900 0.249300 0.802400 0 253 27 --4.685700 36.664101 -1.616400 0.239100 0.661600 13 226 40 -0.000000 53.738098 -8.986800 0.028100 0.877800 0 254 27 --7.252500 54.524502 -7.615000 0.126100 0.913200 0 254 27 --2.321200 55.471001 -5.570800 0.053700 0.941000 0 254 27 -0.000000 55.950600 -7.250100 0.022400 0.916300 0 254 27 --6.624100 53.529800 -2.653700 0.210200 0.900400 0 253 27 --7.813100 49.342701 -3.886900 0.181000 0.844200 0 253 27 --6.029500 46.188801 -3.956000 0.183300 0.792100 0 253 27 --3.773800 51.093601 -1.034300 0.256600 0.864400 0 253 27 --6.029500 46.188801 -3.956000 0.183300 0.792100 0 253 27 --4.298500 47.001099 -0.058900 0.249300 0.802400 5 247 27 --3.773800 51.093601 -1.034300 0.256600 0.864400 0 253 27 -0.000000 50.880199 0.110000 0.310700 0.860500 0 253 27 --3.773800 51.093601 -1.034300 0.256600 0.864400 0 253 27 --4.298500 47.001099 -0.058900 0.249300 0.802400 0 253 27 -0.000000 47.287498 1.094200 0.310700 0.805700 0 252 27 --16.136200 50.023998 -7.546200 0.808600 0.809400 0 249 27 --14.989100 50.565300 -7.297200 0.805300 0.834400 0 252 27 --13.779500 47.417198 -7.715300 0.879500 0.834400 0 253 27 --14.885000 46.974701 -7.946000 0.879500 0.809400 0 251 27 --13.779500 47.417198 -7.715300 0.626900 0.829400 0 253 27 --8.756500 49.321098 -7.632900 0.626900 0.922700 0 253 27 --8.927200 49.128502 -4.128200 0.688900 0.922700 0 253 27 --14.977100 45.689201 -4.821000 0.680000 0.809400 0 248 31 --17.208200 49.477699 -7.512200 0.810800 0.788400 0 253 27 --22.585199 48.327702 -7.594400 0.812700 0.705100 0 253 27 --22.348700 46.932201 -2.822400 0.746000 0.680200 72 195 37 --16.810101 49.139900 -3.928800 0.746000 0.788400 0 253 27 --21.936399 43.055199 -3.733600 0.691800 0.680200 24 182 75 --16.192200 44.960400 -4.877100 0.677700 0.788400 0 236 42 --16.810101 49.139900 -3.928800 0.746000 0.788400 0 253 27 --22.348700 46.932201 -2.822400 0.746000 0.680200 72 195 37 --22.105101 44.119598 -7.074000 0.862200 0.680200 254 254 254 --23.337700 47.268200 -6.945000 0.809900 0.680200 254 254 254 --22.585199 48.327702 -7.594400 0.812700 0.705100 254 254 254 --21.061199 44.183601 -7.611200 0.879500 0.705100 254 254 254 --15.884600 46.520500 -7.855800 0.626900 0.788400 0 250 27 --16.192200 44.960400 -4.877100 0.677700 0.788400 0 253 27 --21.936399 43.055199 -3.733600 0.691800 0.680200 0 253 27 --21.061199 44.183601 -7.611200 0.626900 0.699700 52 208 31 --5.598500 31.822901 -1.405400 0.185400 0.436500 133 152 48 --7.174300 32.815300 -5.168000 0.136400 0.440500 0 253 27 --7.453900 29.910801 -4.782000 0.143900 0.408700 0 253 27 --4.970000 33.082802 -8.871300 0.086900 0.436600 0 253 27 --5.595300 29.761600 -8.491100 0.097300 0.399700 0 253 27 --7.453900 29.910801 -4.782000 0.143900 0.408700 0 253 27 --7.174300 32.815300 -5.168000 0.136400 0.440500 0 253 27 --6.827700 20.858999 -3.051400 0.166500 0.297500 254 254 254 --5.426000 21.341299 -8.131100 0.106600 0.297500 254 254 254 --6.194700 19.576300 -3.492500 0.163400 0.285600 254 254 254 --0.835600 22.853901 -8.203000 0.053300 0.313700 0 253 27 --0.899900 21.410400 -8.342700 0.054900 0.297500 0 253 27 --5.426000 21.341299 -8.131100 0.106600 0.297500 0 253 27 --5.317800 22.936800 -8.014600 0.105500 0.313700 0 253 27 --0.899900 21.410400 -8.342700 0.307200 0.297500 219 57 99 --1.957400 20.620800 -1.217700 0.224300 0.297500 254 68 73 --1.853000 19.164200 -1.385300 0.221600 0.281000 254 68 73 --6.194700 19.576300 -3.492500 0.163400 0.285600 114 254 128 --1.853000 19.164200 -1.385300 0.221600 0.281000 242 254 242 --1.957400 20.620800 -1.217700 0.224300 0.297500 242 254 242 --6.827700 20.858999 -3.051400 0.166500 0.297500 168 254 177 --5.259600 15.490400 -9.599400 0.090700 0.228600 0 253 27 --5.426000 21.341299 -8.131100 0.106600 0.297500 0 253 27 --0.899900 21.410400 -8.342700 0.054900 0.297500 0 253 27 --0.294400 16.169500 -7.962700 0.039600 0.241800 0 253 27 --0.294400 16.169500 -7.962700 0.282300 0.223700 0 253 27 --0.899900 21.410400 -8.342700 0.307200 0.297500 1 216 59 --1.853000 19.164200 -1.385300 0.221600 0.281000 0 253 27 --1.221800 14.450400 -2.004100 0.220300 0.236900 0 253 27 --1.853000 19.164200 -1.385300 0.221600 0.281000 254 254 254 --6.194700 19.576300 -3.492500 0.163400 0.285600 254 254 254 --6.498700 14.643000 -4.000600 0.151700 0.232900 91 254 108 --1.221800 14.450400 -2.004100 0.220300 0.236900 0 254 27 --6.498700 14.643000 -4.000600 0.151700 0.232900 254 254 254 --6.194700 19.576300 -3.492500 0.163400 0.285600 254 254 254 --5.426000 21.341299 -8.131100 0.106600 0.297500 254 254 254 --5.259600 15.490400 -9.599400 0.090700 0.228600 254 254 254 --7.813100 49.342701 -3.886900 0.181000 0.844200 254 68 73 --6.775800 50.206501 -7.534500 0.134100 0.852600 254 68 73 --5.495700 46.043098 -6.732400 0.139900 0.788400 254 68 73 --6.029500 46.188801 -3.956000 0.183300 0.792100 254 68 73 --8.756500 49.321098 -7.632900 0.626900 0.922700 0 254 27 --6.775800 50.206501 -7.534500 0.626900 0.944900 0 254 27 --7.813100 49.342701 -3.886900 0.686800 0.944900 0 254 27 --8.927200 49.128502 -4.128200 0.688900 0.922700 0 254 27 --5.495700 46.043098 -6.732400 0.139900 0.788400 0 254 27 --6.775800 50.206501 -7.534500 0.134100 0.852600 0 254 27 -0.000000 50.037800 -9.413700 0.041800 0.827300 0 254 27 -0.000000 45.235802 -8.516300 0.061400 0.762800 0 254 27 --3.773800 51.093601 -1.034300 0.256600 0.864400 0 253 27 -0.000000 50.880199 0.110000 0.310700 0.860500 0 253 27 -0.000000 54.522099 -2.187600 0.310700 0.919600 0 253 27 --1.435700 55.057400 -2.884500 0.285800 0.931400 0 253 27 --0.163800 60.672798 0.405300 0.529100 0.200900 0 254 27 --0.596000 60.268700 -0.255900 0.502600 0.185300 0 254 27 --0.605400 59.453602 0.006800 0.508800 0.156900 0 254 27 --0.226300 59.631802 0.717000 0.529800 0.167300 0 254 27 -0.000000 59.375900 0.272700 0.533800 0.153800 0 254 27 --0.605400 59.453602 0.006800 0.508800 0.156900 0 254 27 --0.793500 58.611801 -0.022400 0.506200 0.129800 0 254 27 -0.000000 58.735298 0.237300 0.533800 0.134400 0 253 27 --1.340700 61.343498 -1.024900 0.467800 0.231800 254 254 254 --2.209500 61.230499 -1.515000 0.430900 0.227000 254 254 254 --2.225300 60.301201 -1.334400 0.434400 0.187400 254 254 254 --0.474100 61.294899 -0.607800 0.499900 0.227200 254 254 254 --0.179900 61.274700 0.058500 0.525600 0.223900 254 254 254 --0.785400 61.539799 -0.048800 0.505500 0.247600 254 254 254 --0.163800 60.672798 0.405300 0.529100 0.200900 0 254 27 --0.179900 61.274700 0.058500 0.525600 0.223900 0 254 27 --0.474100 61.294899 -0.607800 0.499900 0.227200 0 254 27 --0.596000 60.268700 -0.255900 0.502600 0.185300 0 254 27 --0.785400 61.539799 -0.048800 0.505500 0.247600 0 254 27 -0.000000 62.775902 -0.355700 0.533900 0.286800 0 254 27 --1.901400 62.898899 -1.262500 0.451600 0.287500 0 254 27 --1.792100 61.563202 -0.648200 0.464300 0.250800 0 254 27 --1.901400 62.898899 -1.262500 0.451600 0.287500 254 254 254 --2.505800 61.413601 -3.333900 0.367200 0.240300 254 254 254 --2.209500 61.230499 -1.515000 0.430900 0.227000 254 254 254 --1.792100 61.563202 -0.648200 0.464300 0.250800 254 254 254 --2.071800 58.080299 -1.837600 0.435700 0.090000 254 254 254 --2.043500 58.694401 -1.722000 0.434700 0.119000 254 254 254 --2.361600 58.652599 -3.405400 0.376100 0.111600 254 254 254 --2.361600 58.652599 -3.405400 0.376100 0.111600 254 254 254 --1.480400 57.287800 -3.167400 0.388000 0.054100 254 254 254 --2.071800 58.080299 -1.837600 0.435700 0.090000 254 254 254 --2.361600 58.652599 -3.405400 0.376100 0.111600 254 254 254 --2.043500 58.694401 -1.722000 0.434700 0.119000 254 254 254 --2.225300 60.301201 -1.334400 0.434400 0.187400 254 254 254 --2.484800 60.667999 -2.078300 0.409600 0.193000 254 254 254 --0.596000 60.268700 -0.255900 0.502600 0.185300 0 254 27 --2.225300 60.301201 -1.334400 0.434400 0.187400 0 254 27 --0.793500 58.611801 -0.022400 0.506200 0.129800 0 254 27 --0.605400 59.453602 0.006800 0.508800 0.156900 0 254 27 --0.793500 58.611801 -0.022400 0.506200 0.129800 0 254 27 --0.860300 57.339199 -0.345300 0.507000 0.087800 0 253 27 -0.000000 57.320400 0.190300 0.533800 0.095300 0 253 27 -0.000000 58.735298 0.237300 0.533800 0.134400 0 253 27 --2.361600 58.652599 -3.405400 0.376100 0.111600 254 254 254 --1.507500 57.978802 -4.806700 0.327200 0.071700 254 254 254 --1.480400 57.287800 -3.167400 0.388000 0.054100 254 254 254 --1.480400 57.287800 -3.167400 0.293600 0.962800 254 153 157 --1.435700 55.057400 -2.884500 0.285800 0.931400 244 75 71 -0.000000 54.522099 -2.187600 0.310700 0.919600 235 81 69 --0.509500 56.862801 -2.081200 0.307800 0.953500 254 129 132 --1.435700 55.057400 -2.884500 0.285800 0.931400 254 68 73 --1.480400 57.287800 -3.167400 0.293600 0.962800 254 68 73 --1.507500 57.978802 -4.806700 0.269900 0.982500 254 68 73 --2.321200 55.471001 -5.570800 0.259500 0.968000 254 68 73 --5.259600 15.490400 -9.599400 0.090700 0.228600 0 253 27 --0.294400 16.169500 -7.962700 0.039600 0.241800 0 253 27 --2.020300 14.610600 -8.278800 0.063600 0.221000 0 253 27 --0.294400 16.169500 -7.962700 0.282300 0.223700 157 130 53 --1.221800 14.450400 -2.004100 0.220300 0.236900 0 252 27 --0.971400 14.644800 -6.706400 0.253200 0.212300 27 229 30 --5.308800 13.910900 -3.738700 0.168700 0.220700 23 254 48 --1.766900 13.754900 -2.918700 0.216900 0.223600 0 254 27 --1.221800 14.450400 -2.004100 0.220300 0.236900 0 254 27 --6.498700 14.643000 -4.000600 0.151700 0.232900 91 254 108 --4.649800 14.945700 -8.785600 0.103500 0.222700 254 68 73 --5.308800 13.910900 -3.738700 0.168700 0.220700 254 68 73 --6.498700 14.643000 -4.000600 0.151700 0.232900 254 68 73 --5.259600 15.490400 -9.599400 0.090700 0.228600 254 68 73 --1.957400 20.620800 -1.217700 0.224300 0.297500 0 253 27 --0.899900 21.410400 -8.342700 0.307200 0.297500 1 216 59 --0.835600 22.853901 -8.203000 0.306600 0.313700 2 205 69 --2.189200 21.987900 -1.481800 0.225500 0.313700 0 253 27 --7.174300 32.815300 -5.168000 0.136400 0.440500 0 253 27 --6.542300 35.480598 -4.902800 0.133600 0.471500 0 253 27 --5.283200 35.952900 -7.814600 0.094100 0.470900 0 254 27 --4.970000 33.082802 -8.871300 0.086900 0.436600 0 253 27 --5.598500 31.822901 -1.405400 0.185400 0.436500 133 152 48 --6.542300 35.480598 -4.902800 0.133600 0.471500 0 253 27 --7.174300 32.815300 -5.168000 0.136400 0.440500 0 253 27 --4.685700 36.664101 -1.616400 0.239100 0.661600 13 226 40 --5.598500 31.822901 -1.405400 0.231500 0.582200 133 152 48 --3.798500 31.552500 -0.386300 0.257600 0.582200 211 97 63 --2.225300 60.301201 -1.334400 0.434400 0.187400 254 254 254 --2.209500 61.230499 -1.515000 0.430900 0.227000 254 254 254 --2.484800 60.667999 -2.078300 0.409600 0.193000 254 254 254 --8.927200 49.128502 -4.128200 0.688900 0.922700 0 253 27 --7.813100 49.342701 -3.886900 0.686800 0.944900 0 253 27 --8.184300 53.108700 -3.320400 0.746000 0.944900 0 253 27 --9.508400 52.403099 -3.672700 0.746000 0.922700 0 253 27 --8.184300 53.108700 -3.320400 0.746000 0.944900 0 253 27 --8.747800 53.770199 -7.353300 0.807700 0.944900 0 253 27 --9.827700 52.989700 -7.188500 0.805500 0.922700 0 253 27 --9.508400 52.403099 -3.672700 0.746000 0.922700 0 253 27 --8.747800 53.770199 -7.353300 0.807700 0.944900 0 254 27 --7.252500 54.524502 -7.615000 0.812300 0.981700 0 254 27 --6.775800 50.206501 -7.534500 0.879500 0.944900 0 254 27 --8.927200 49.128502 -4.128200 0.688900 0.922700 0 253 27 --9.508400 52.403099 -3.672700 0.746000 0.922700 0 253 27 --15.636800 49.715099 -4.015700 0.746000 0.809400 0 253 27 --14.977100 45.689201 -4.821000 0.680000 0.809400 0 248 31 --6.624100 53.529800 -2.653700 0.210200 0.900400 0 253 27 --3.773800 51.093601 -1.034300 0.256600 0.864400 0 253 27 --1.435700 55.057400 -2.884500 0.285800 0.931400 0 253 27 --7.252500 54.524502 -7.615000 0.180400 0.964800 0 253 27 --2.321200 55.471001 -5.570800 0.259500 0.968000 0 253 27 --7.252500 54.524502 -7.615000 0.180400 0.964800 0 253 27 --1.435700 55.057400 -2.884500 0.285800 0.931400 0 253 27 --2.209500 61.230499 -1.515000 0.430900 0.227000 254 254 254 --2.505800 61.413601 -3.333900 0.362700 0.212700 254 254 254 --2.484800 60.667999 -2.078300 0.409600 0.193000 254 254 254 --2.484800 60.667999 -2.078300 0.409600 0.193000 254 254 254 --2.505800 61.413601 -3.333900 0.362700 0.212700 254 254 254 --2.361600 58.652599 -3.405400 0.376100 0.111600 254 254 254 --2.209500 61.230499 -1.515000 0.430900 0.227000 254 254 254 --1.340700 61.343498 -1.024900 0.467800 0.231800 254 254 254 --1.792100 61.563202 -0.648200 0.464300 0.250800 254 254 254 --3.061600 3.537800 -3.461700 0.290200 0.071700 18 0 252 --3.735600 1.816900 0.228400 0.290200 0.030700 18 0 253 --1.568700 1.981700 -0.627100 0.308400 0.040400 18 0 253 --1.553600 3.059500 -4.173500 0.310400 0.073900 18 0 253 --0.626000 0.031700 -8.336200 0.345300 0.097200 18 0 253 --1.553600 3.059500 -4.173500 0.310400 0.073900 18 0 253 --1.568700 1.981700 -0.627100 0.308400 0.040400 18 0 253 --1.825200 -0.024100 0.601200 0.313500 0.023800 18 0 253 --1.825200 -0.024100 0.601200 0.748300 0.055100 18 0 253 --3.769300 -0.009000 1.132900 0.765800 0.040900 18 0 253 --1.712600 0.024900 -9.195700 0.765100 0.147100 19 0 253 --0.626000 0.031700 -8.336200 0.751000 0.138000 19 0 253 --1.712600 0.024900 -9.195700 0.089900 0.023200 254 68 73 --2.020300 14.610600 -8.278800 0.060000 0.185800 0 253 27 --0.971400 14.644800 -6.706400 0.025900 0.185800 0 253 27 --0.626000 0.031700 -8.336200 0.075600 0.021500 254 68 73 --1.568700 1.981700 -0.627100 0.308400 0.040400 18 0 253 --3.735600 1.816900 0.228400 0.290200 0.030700 18 0 253 --3.769300 -0.009000 1.132900 0.289700 0.012400 18 0 253 --1.825200 -0.024100 0.601200 0.313500 0.023800 19 0 253 --4.089400 2.633000 -5.031300 0.275500 0.071900 188 254 194 --3.252600 0.001600 -8.591000 0.238500 0.103000 0 254 27 --5.176800 -0.025000 -0.598300 0.266200 0.023600 254 254 254 --5.390300 1.568200 -1.670300 0.274000 0.039600 254 254 254 --3.769300 -0.009000 1.132900 0.289700 0.012400 18 0 253 --3.735600 1.816900 0.228400 0.290200 0.030700 18 0 253 --5.390300 1.568200 -1.670300 0.274000 0.039600 18 0 253 --5.176800 -0.025000 -0.598300 0.266200 0.023600 18 0 253 --5.390300 1.568200 -1.670300 0.274000 0.039600 18 0 253 --3.735600 1.816900 0.228400 0.290200 0.030700 18 0 253 --3.061600 3.537800 -3.461700 0.290200 0.071700 18 0 252 --4.089400 2.633000 -5.031300 0.275500 0.071900 18 0 252 --3.061600 3.537800 -3.461700 0.164000 0.067400 18 0 252 --1.766900 13.754900 -2.918700 0.193300 0.185800 0 254 27 --5.308800 13.910900 -3.738700 0.154100 0.185800 14 254 41 --4.089400 2.633000 -5.031300 0.145000 0.057700 18 0 252 --2.020300 14.610600 -8.278800 0.063600 0.221000 0 253 27 --4.649800 14.945700 -8.785600 0.103500 0.222700 0 253 27 --5.259600 15.490400 -9.599400 0.090700 0.228600 0 253 27 --2.020300 14.610600 -8.278800 0.063600 0.221000 0 253 27 --0.294400 16.169500 -7.962700 0.039600 0.241800 0 253 27 --0.971400 14.644800 -6.706400 0.028400 0.216500 0 253 27 --5.426000 21.341299 -8.131100 0.106600 0.297500 254 254 254 --6.827700 20.858999 -3.051400 0.166500 0.297500 254 254 254 --6.824000 22.193899 -3.254300 0.165700 0.313700 254 254 254 --5.317800 22.936800 -8.014600 0.105500 0.313700 254 254 254 --0.845100 29.891001 -9.491500 0.041700 0.395800 0 253 27 --0.835600 22.853901 -8.203000 0.053300 0.313700 0 253 27 --5.317800 22.936800 -8.014600 0.105500 0.313700 0 253 27 --5.595300 29.761600 -8.491100 0.097300 0.399700 0 254 27 --1.957400 20.620800 -1.217700 0.224300 0.297500 242 254 242 --2.189200 21.987900 -1.481800 0.225500 0.313700 218 254 222 --6.824000 22.193899 -3.254300 0.165700 0.313700 99 254 117 --6.827700 20.858999 -3.051400 0.166500 0.297500 166 254 175 --0.605400 59.453602 0.006800 0.508800 0.156900 254 254 254 -0.000000 59.375900 0.272700 0.533800 0.153800 254 254 254 --0.226300 59.631802 0.717000 0.529800 0.167300 254 254 254 --21.936399 43.055199 -3.733600 0.691800 0.680200 24 182 75 --22.348700 46.932201 -2.822400 0.746000 0.680200 72 195 37 --23.323000 46.228001 -3.425200 0.746000 0.661900 26 230 29 --23.265499 44.290199 -3.614200 0.710900 0.661900 37 214 37 --22.105101 44.119598 -7.074000 0.862200 0.680200 254 254 254 --23.273100 44.479099 -6.170500 0.835600 0.661900 254 254 254 --23.881300 46.267799 -5.995500 0.800900 0.661900 254 254 254 --23.337700 47.268200 -6.945000 0.809900 0.680200 254 254 254 --22.348700 46.932201 -2.822400 0.746000 0.680200 72 195 37 --23.337700 47.268200 -6.945000 0.809900 0.680200 0 254 27 --23.881300 46.267799 -5.995500 0.800900 0.661900 0 253 27 --23.323000 46.228001 -3.425200 0.746000 0.661900 26 230 29 --21.936399 43.055199 -3.733600 0.691800 0.680200 254 68 73 --23.265499 44.290199 -3.614200 0.710900 0.661900 254 68 73 --23.273100 44.479099 -6.170500 0.665900 0.661900 254 68 73 --22.105101 44.119598 -7.074000 0.641700 0.680200 254 68 73 --23.323000 46.228001 -3.425200 0.746000 0.661900 26 230 29 --24.935400 45.742901 -3.288800 0.746000 0.630500 80 189 39 --24.446100 44.099098 -3.039500 0.723200 0.630500 144 136 53 --23.265499 44.290199 -3.614200 0.710900 0.661900 37 214 37 --23.273100 44.479099 -6.170500 0.835600 0.661900 16 254 41 --25.718901 44.407902 -5.989100 0.812100 0.630500 47 254 71 --25.982700 45.641201 -5.974700 0.796200 0.630500 53 254 75 --23.881300 46.267799 -5.995500 0.800900 0.661900 23 254 48 --23.881300 46.267799 -5.995500 0.800900 0.661900 0 253 27 --25.982700 45.641201 -5.974700 0.796200 0.630500 0 253 27 --24.935400 45.742901 -3.288800 0.746000 0.630500 80 189 39 --23.323000 46.228001 -3.425200 0.746000 0.661900 26 230 29 --23.265499 44.290199 -3.614200 0.710900 0.661900 0 254 27 --24.446100 44.099098 -3.039500 0.723200 0.630500 0 254 27 --25.718901 44.407902 -5.989100 0.677100 0.630500 47 254 71 --23.273100 44.479099 -6.170500 0.665900 0.661900 16 254 41 --3.798500 31.552500 -0.386300 0.257600 0.582200 211 97 63 -0.000000 31.552500 0.128500 0.310700 0.582200 203 101 62 -0.000000 37.009800 0.550700 0.310700 0.661600 172 124 55 --4.685700 36.664101 -1.616400 0.239100 0.661600 13 226 40 --27.058001 43.733101 -1.471100 0.783900 0.527900 254 68 73 --28.100901 44.177299 -2.470000 0.756100 0.537200 231 80 64 --27.637899 42.321201 -1.984400 0.780200 0.502700 254 68 73 --26.775499 43.007000 -1.492900 0.799700 0.523000 254 68 73 --27.102699 45.320202 -5.735100 0.706300 0.587600 75 254 93 --25.982700 45.641201 -5.974700 0.701400 0.609900 53 254 75 --25.718901 44.407902 -5.989100 0.674700 0.592000 47 254 71 --26.246300 42.901402 -5.383600 0.663100 0.553800 20 254 46 --24.935400 45.742901 -3.288800 0.774000 0.616500 80 254 99 --25.982700 45.641201 -5.974700 0.701400 0.609900 0 254 27 --27.102699 45.320202 -5.735100 0.706300 0.587600 0 254 27 --26.753901 45.398300 -2.858600 0.766000 0.574200 163 254 174 --24.446100 44.099098 -3.039500 0.815000 0.599300 0 249 30 --26.246300 42.901402 -5.383600 0.880100 0.569900 19 213 43 --25.718901 44.407902 -5.989100 0.885900 0.607200 46 208 34 --28.380600 42.330502 -3.056600 0.741600 0.498200 254 68 73 --27.637899 42.321201 -1.984400 0.780200 0.502700 254 68 73 --28.100901 44.177299 -2.470000 0.756100 0.537200 254 68 73 --28.697901 44.238201 -3.477500 0.737900 0.538900 254 68 73 --28.380600 42.330502 -3.056600 0.741600 0.498200 254 254 254 --28.697901 44.238201 -3.477500 0.737900 0.538900 254 254 254 --28.543800 44.178001 -4.651400 0.718600 0.545700 254 254 254 --28.292801 42.543098 -4.446800 0.704200 0.514300 254 254 254 --26.753901 45.398300 -2.858600 0.766000 0.574200 163 125 53 --28.697901 44.238201 -3.477500 0.737900 0.538900 97 175 41 --28.100901 44.177299 -2.470000 0.756100 0.537200 231 80 64 --24.935400 45.742901 -3.288800 0.774000 0.616500 80 189 39 --26.117701 44.487900 -2.198700 0.788200 0.565100 242 74 67 --25.587200 43.557701 -2.038700 0.806300 0.556900 253 67 73 --24.446100 44.099098 -3.039500 0.815000 0.599300 144 136 53 --24.446100 44.099098 -3.039500 0.815000 0.599300 0 249 30 --25.587200 43.557701 -2.038700 0.806300 0.556900 0 252 27 --25.491899 42.827301 -2.370100 0.813300 0.554500 0 245 34 --26.246300 42.901402 -5.383600 0.880100 0.569900 19 213 43 --26.753901 45.398300 -2.858600 0.766000 0.574200 163 125 53 --26.117701 44.487900 -2.198700 0.788200 0.565100 242 74 67 --24.935400 45.742901 -3.288800 0.774000 0.616500 80 189 39 -0.000000 31.552500 0.128500 0.310700 0.582200 203 101 62 --3.798500 31.552500 -0.386300 0.257600 0.582200 211 97 63 --3.463700 23.872801 -0.356700 0.261000 0.472800 254 68 73 -0.000000 24.132099 -0.356700 0.310700 0.472800 243 74 70 --2.225300 60.301201 -1.334400 0.434400 0.187400 254 254 254 --2.043500 58.694401 -1.722000 0.434700 0.119000 254 247 247 --0.793500 58.611801 -0.022400 0.506200 0.129800 254 246 246 --0.793500 58.611801 -0.022400 0.506200 0.129800 254 246 246 --2.043500 58.694401 -1.722000 0.434700 0.119000 254 247 247 --2.071800 58.080299 -1.837600 0.435700 0.090000 254 224 225 --0.860300 57.339199 -0.345300 0.507000 0.087800 254 172 174 --2.071800 58.080299 -1.837600 0.435700 0.090000 254 224 225 --1.480400 57.287800 -3.167400 0.435700 0.022900 254 153 157 --0.509500 56.862801 -2.081200 0.497100 0.026700 254 129 132 --0.860300 57.339199 -0.345300 0.507000 0.087800 254 172 174 --0.179900 61.274700 0.058500 0.525600 0.223900 0 254 27 -0.000000 61.912998 -0.048000 0.533800 0.254400 0 254 27 --0.785400 61.539799 -0.048800 0.505500 0.247600 0 254 27 --15.884600 46.520500 -7.855800 0.879500 0.788400 0 250 27 --17.208200 49.477699 -7.512200 0.810800 0.788400 6 242 27 --16.136200 50.023998 -7.546200 0.808600 0.809400 0 249 27 --14.885000 46.974701 -7.946000 0.879500 0.809400 0 251 27 --15.636800 49.715099 -4.015700 0.746000 0.809400 0 253 27 --16.136200 50.023998 -7.546200 0.808600 0.809400 0 253 27 --17.208200 49.477699 -7.512200 0.810800 0.788400 0 253 27 --16.810101 49.139900 -3.928800 0.746000 0.788400 0 253 27 --16.192200 44.960400 -4.877100 0.677700 0.788400 0 236 42 --15.884600 46.520500 -7.855800 0.626900 0.788400 0 253 27 --14.885000 46.974701 -7.946000 0.626900 0.809400 0 253 27 --14.977100 45.689201 -4.821000 0.680000 0.809400 0 248 31 --16.810101 49.139900 -3.928800 0.746000 0.788400 236 81 69 --16.192200 44.960400 -4.877100 0.677700 0.788400 200 90 77 --14.977100 45.689201 -4.821000 0.680000 0.809400 174 120 62 --15.636800 49.715099 -4.015700 0.746000 0.809400 218 94 66 --13.779500 47.417198 -7.715300 0.879500 0.834400 0 253 27 --14.989100 50.565300 -7.297200 0.805300 0.834400 0 252 27 --9.827700 52.989700 -7.188500 0.805500 0.922700 0 253 27 --8.756500 49.321098 -7.632900 0.879500 0.922700 0 253 27 --15.636800 49.715099 -4.015700 0.746000 0.809400 0 253 27 --14.989100 50.565300 -7.297200 0.805300 0.834400 0 253 27 --16.136200 50.023998 -7.546200 0.808600 0.809400 0 253 27 --13.779500 47.417198 -7.715300 0.626900 0.829400 0 253 27 --14.977100 45.689201 -4.821000 0.680000 0.809400 0 253 27 --14.885000 46.974701 -7.946000 0.626900 0.809400 0 251 27 --0.971400 14.644800 -6.706400 0.253200 0.212300 27 229 30 --1.221800 14.450400 -2.004100 0.220300 0.236900 0 252 27 --1.766900 13.754900 -2.918700 0.216900 0.223600 0 253 27 --26.117701 44.487900 -2.198700 0.788200 0.565100 242 74 67 --27.058001 43.733101 -1.471100 0.783900 0.527900 254 68 73 --26.775499 43.007000 -1.492900 0.799700 0.523000 254 68 73 --25.587200 43.557701 -2.038700 0.806300 0.556900 253 67 73 --25.587200 43.557701 -2.038700 0.806300 0.556900 0 252 27 --26.775499 43.007000 -1.492900 0.799700 0.523000 0 253 27 --27.637899 42.321201 -1.984400 0.816200 0.507300 0 253 27 --25.491899 42.827301 -2.370100 0.813300 0.554500 0 245 34 --26.117701 44.487900 -2.198700 0.788200 0.565100 242 74 67 --28.100901 44.177299 -2.470000 0.756100 0.537200 231 80 64 --27.058001 43.733101 -1.471100 0.783900 0.527900 254 68 73 --8.184300 53.108700 -3.320400 0.746000 0.944900 0 253 27 --7.813100 49.342701 -3.886900 0.686800 0.944900 0 253 27 --6.624100 53.529800 -2.653700 0.746000 0.986600 0 253 27 --8.747800 53.770199 -7.353300 0.807700 0.944900 0 254 27 --6.775800 50.206501 -7.534500 0.879500 0.944900 0 254 27 --8.756500 49.321098 -7.632900 0.879500 0.922700 0 254 27 --9.827700 52.989700 -7.188500 0.805500 0.922700 0 254 27 --28.543800 44.178001 -4.651400 0.718600 0.545700 0 254 27 --28.697901 44.238201 -3.477500 0.737900 0.538900 97 254 114 --26.753901 45.398300 -2.858600 0.766000 0.574200 163 254 174 --27.102699 45.320202 -5.735100 0.706300 0.587600 0 254 27 --26.246300 42.901402 -5.383600 0.880100 0.569900 20 231 27 --28.380600 42.330502 -3.056600 0.853500 0.507000 0 252 27 --28.292801 42.543098 -4.446800 0.879400 0.523100 5 243 27 --28.100901 44.177299 -2.470000 0.756100 0.537200 231 80 64 --26.117701 44.487900 -2.198700 0.788200 0.565100 242 74 67 --26.753901 45.398300 -2.858600 0.766000 0.574200 163 125 53 --1.712600 0.024900 -9.195700 0.765100 0.147100 254 254 254 --3.769300 -0.009000 1.132900 0.765800 0.040900 0 254 27 --5.176800 -0.025000 -0.598300 0.783900 0.050100 0 254 27 --3.252600 0.001600 -8.591000 0.777900 0.139800 254 254 254 -0.000000 61.912998 -0.048000 0.533800 0.254400 0 254 27 -0.000000 62.775902 -0.355700 0.533900 0.286800 0 254 27 --0.785400 61.539799 -0.048800 0.505500 0.247600 0 254 27 --0.340300 31.400700 -9.922000 0.348900 0.396000 0 253 27 --0.425600 30.069099 -1.503600 0.251300 0.411900 0 253 27 --0.845100 29.891001 -9.491500 0.339400 0.379800 0 253 27 -0.000000 54.522099 -2.187600 0.310700 0.919600 235 81 69 -0.000000 56.862801 -2.081200 0.310500 0.953100 254 127 130 --0.509500 56.862801 -2.081200 0.307800 0.953500 254 129 132 --0.509500 56.862801 -2.081200 0.497100 0.026700 254 129 132 -0.000000 56.862801 -2.081200 0.533800 0.019000 254 127 130 -0.000000 57.320400 0.190300 0.533800 0.095300 254 190 192 --0.860300 57.339199 -0.345300 0.507000 0.087800 254 172 174 --5.598500 31.822901 -1.405400 0.185400 0.436500 133 152 48 --7.453900 29.910801 -4.782000 0.143900 0.408700 0 253 27 --6.824000 22.193899 -3.254300 0.165700 0.313700 99 254 117 --6.824000 22.193899 -3.254300 0.165700 0.313700 254 68 73 --7.453900 29.910801 -4.782000 0.143900 0.408700 254 68 73 --5.595300 29.761600 -8.491100 0.097300 0.399700 254 68 73 --5.317800 22.936800 -8.014600 0.105500 0.313700 254 68 73 --3.798500 31.552500 -0.386300 0.210900 0.433400 211 97 63 --5.598500 31.822901 -1.405400 0.185400 0.436500 133 152 48 --6.824000 22.193899 -3.254300 0.165700 0.313700 99 254 117 --2.189200 21.987900 -1.481800 0.225500 0.313700 218 254 222 --0.340300 31.400700 -9.922000 0.033600 0.413900 0 253 27 --0.845100 29.891001 -9.491500 0.041700 0.395800 0 253 27 --5.595300 29.761600 -8.491100 0.097300 0.399700 0 254 27 --4.970000 33.082802 -8.871300 0.086900 0.436600 0 254 27 --0.835600 22.853901 -8.203000 0.306600 0.313700 2 205 69 --0.845100 29.891001 -9.491500 0.339400 0.379800 0 241 37 --0.425600 30.069099 -1.503600 0.251300 0.411900 0 253 27 --2.189200 21.987900 -1.481800 0.225500 0.313700 0 253 27 --2.162800 35.743500 -9.599900 0.052600 0.465300 0 254 27 --0.340300 31.400700 -9.922000 0.033600 0.413900 0 253 27 --4.970000 33.082802 -8.871300 0.086900 0.436600 0 254 27 --5.283200 35.952900 -7.814600 0.094100 0.470900 0 254 27 --5.283200 35.952900 -7.814600 0.142000 0.631800 0 254 27 --6.542300 35.480598 -4.902800 0.182300 0.631800 0 254 27 --5.919200 37.619099 -4.570300 0.183200 0.661600 0 254 27 --5.919200 37.619099 -4.570300 0.183200 0.661600 0 253 27 --6.542300 35.480598 -4.902800 0.182300 0.631800 0 253 27 --5.598500 31.822901 -1.405400 0.231500 0.582200 133 152 48 --4.685700 36.664101 -1.616400 0.239100 0.661600 13 240 28 --0.474100 61.294899 -0.607800 0.499900 0.227200 0 254 27 --1.340700 61.343498 -1.024900 0.467800 0.231800 0 254 27 --2.225300 60.301201 -1.334400 0.434400 0.187400 0 254 27 --0.596000 60.268700 -0.255900 0.502600 0.185300 0 254 27 --1.340700 61.343498 -1.024900 0.467800 0.231800 254 254 254 --0.474100 61.294899 -0.607800 0.499900 0.227200 254 254 254 --0.785400 61.539799 -0.048800 0.505500 0.247600 254 254 254 --1.792100 61.563202 -0.648200 0.464300 0.250800 254 254 254 -0.000000 45.235802 -8.516300 0.061400 0.762800 0 253 27 -0.000000 38.221600 -8.073300 0.073200 0.661600 0 253 27 --2.827600 38.171799 -8.088300 0.114500 0.661600 0 253 27 --5.495700 46.043098 -6.732400 0.139900 0.788400 0 253 27 --0.425600 30.069099 -1.503600 0.251300 0.411900 254 254 254 --3.798500 31.552500 -0.386300 0.210900 0.433400 254 254 254 --2.189200 21.987900 -1.481800 0.225500 0.313700 254 254 254 -0.000000 31.547001 -9.939100 0.349900 0.400200 254 68 73 -0.000000 30.215401 -1.522000 0.252400 0.417000 254 68 73 --0.425600 30.069099 -1.503600 0.251300 0.411900 254 68 73 --0.340300 31.400700 -9.922000 0.348900 0.396000 254 68 73 --21.061199 44.183601 -7.611200 0.879500 0.705100 52 208 31 --22.585199 48.327702 -7.594400 0.812700 0.705100 104 170 42 --17.208200 49.477699 -7.512200 0.810800 0.788400 6 242 27 --15.884600 46.520500 -7.855800 0.879500 0.788400 0 250 27 --22.348700 46.932201 -2.822400 0.746000 0.680200 72 195 37 --22.585199 48.327702 -7.594400 0.812700 0.705100 0 253 27 --23.337700 47.268200 -6.945000 0.809900 0.680200 0 254 27 --21.061199 44.183601 -7.611200 0.626900 0.699700 52 208 31 --21.936399 43.055199 -3.733600 0.691800 0.680200 0 253 27 --22.105101 44.119598 -7.074000 0.641700 0.680200 30 225 27 -0.000000 59.375900 0.272700 0.533800 0.153800 254 254 254 -0.226300 59.631802 0.717000 0.537800 0.167300 254 254 254 --0.226300 59.631802 0.717000 0.529800 0.167300 254 254 254 --0.163800 60.672798 0.405300 0.529100 0.200900 0 254 27 --0.226300 59.631802 0.717000 0.529800 0.167300 0 254 27 -0.226300 59.631802 0.717000 0.537800 0.167300 0 254 27 -0.163800 60.672798 0.405300 0.538500 0.200900 0 254 27 --0.340300 31.400700 -9.922000 0.033600 0.413900 0 253 27 --2.162800 35.743500 -9.599900 0.052600 0.465300 0 253 27 -0.000000 35.795200 -9.599900 0.027500 0.464800 0 253 27 -0.000000 31.547001 -9.939100 0.029600 0.415400 0 253 27 --5.919200 37.619099 -4.570300 0.183200 0.661600 0 254 27 --2.827600 38.171799 -8.088300 0.114500 0.661600 0 254 27 --2.162800 35.743500 -9.599900 0.096500 0.631800 0 254 27 --5.283200 35.952900 -7.814600 0.142000 0.631800 0 254 27 --28.543800 44.178001 -4.651400 0.718600 0.545700 254 254 254 --27.102699 45.320202 -5.735100 0.706300 0.587600 254 254 254 --26.246300 42.901402 -5.383600 0.663100 0.553800 254 254 254 --28.292801 42.543098 -4.446800 0.704200 0.514300 254 254 254 --25.491899 42.827301 -2.370100 0.813300 0.554500 0 254 27 --27.637899 42.321201 -1.984400 0.816200 0.507300 0 254 27 --28.380600 42.330502 -3.056600 0.853500 0.507000 0 254 27 --26.246300 42.901402 -5.383600 0.880100 0.569900 20 231 27 --25.491899 42.827301 -2.370100 0.813300 0.554500 0 253 27 --28.380600 42.330502 -3.056600 0.853500 0.507000 0 252 27 --0.179900 61.274700 0.058500 0.525600 0.223900 0 254 27 --0.163800 60.672798 0.405300 0.529100 0.200900 0 254 27 -0.163800 60.672798 0.405300 0.538500 0.200900 0 254 27 -0.179900 61.274700 0.058500 0.542100 0.223900 0 254 27 -0.000000 61.912998 -0.048000 0.533800 0.254400 0 254 27 --0.179900 61.274700 0.058500 0.525600 0.223900 0 254 27 -0.179900 61.274700 0.058500 0.542100 0.223900 0 254 27 --2.162800 35.743500 -9.599900 0.096500 0.631800 0 253 27 --2.827600 38.171799 -8.088300 0.114500 0.661600 0 253 27 -0.000000 38.221600 -8.073300 0.073200 0.661600 0 253 27 -0.000000 35.795200 -9.599900 0.068100 0.631800 0 253 27 -4.620900 14.945700 -8.516100 0.912200 0.175600 0 253 27 -3.252600 0.001600 -8.591000 0.909400 0.032900 235 80 66 -1.712600 0.024900 -9.195700 0.925400 0.031900 254 68 73 -1.456400 14.610600 -8.695100 0.943400 0.175600 0 253 27 -4.089400 2.633000 -5.031300 0.873900 0.060000 18 0 253 -3.252600 0.001600 -8.591000 0.909400 0.032900 19 0 253 -4.620900 14.945700 -8.516100 0.912200 0.175600 0 247 31 -5.308800 13.910900 -3.738700 0.859000 0.175600 0 253 27 -1.553600 3.059500 -4.173500 0.841100 0.058900 18 0 253 -3.061600 3.537800 -3.461700 0.856300 0.067800 18 0 253 -1.766900 13.754900 -2.918700 0.824200 0.175600 0 254 27 -1.553600 3.059500 -4.173500 0.841100 0.058900 254 254 254 -1.766900 13.754900 -2.918700 0.824200 0.175600 254 254 254 -1.239800 14.644800 -6.465300 0.795300 0.175600 254 254 254 -0.626000 0.031700 -8.336200 0.808600 0.019600 254 254 254 -5.495700 46.043098 -6.732400 0.140100 0.788400 0 252 27 -6.029500 46.188801 -3.956000 0.183500 0.792100 0 253 27 -5.919200 37.619099 -4.570300 0.183400 0.661600 9 98 162 -2.827600 38.171799 -8.088300 0.114700 0.661600 8 119 142 -4.685700 36.664101 -1.616400 0.239300 0.661600 0 250 28 -5.919200 37.619099 -4.570300 0.183400 0.661600 9 98 162 -6.029500 46.188801 -3.956000 0.183500 0.792100 0 253 27 -4.298500 47.001099 -0.058900 0.249500 0.802400 0 253 27 -6.775800 50.206501 -7.534500 0.134300 0.852600 0 253 27 -0.000000 50.037800 -9.413700 0.042000 0.827300 0 253 27 -0.000000 53.738098 -8.986800 0.028300 0.877800 0 253 27 -7.252500 54.524502 -7.615000 0.126400 0.913200 0 254 27 -7.252500 54.524502 -7.615000 0.533200 0.977800 0 254 27 -6.624100 53.529800 -2.653700 0.469900 0.977800 0 253 27 -8.184300 53.108700 -3.320400 0.469900 0.942000 0 253 27 -8.747800 53.770199 -7.353300 0.528600 0.942000 0 253 27 -9.827700 52.989700 -7.188500 0.526400 0.916400 0 253 27 -9.508400 52.403099 -3.672700 0.469900 0.916400 0 253 27 -15.636800 49.715099 -4.015700 0.469900 0.803100 1 215 59 -14.989100 50.565300 -7.297200 0.526200 0.828100 0 249 29 -0.000000 37.009800 0.550700 0.310700 0.661600 0 253 27 -4.685700 36.664101 -1.616400 0.239300 0.661600 0 250 28 -4.298500 47.001099 -0.058900 0.249500 0.802400 0 253 27 -0.000000 47.287498 1.094200 0.310700 0.805700 0 253 27 -0.000000 53.738098 -8.986800 0.028300 0.877800 0 253 27 -0.000000 55.950600 -7.250100 0.022600 0.916300 0 253 27 -2.321200 55.471001 -5.570800 0.053900 0.941000 0 253 27 -7.252500 54.524502 -7.615000 0.126400 0.913200 0 254 27 -3.773800 51.093601 -1.034300 0.256800 0.864400 0 253 27 -4.298500 47.001099 -0.058900 0.249500 0.802400 0 253 27 -6.029500 46.188801 -3.956000 0.183500 0.792100 0 253 27 -6.624100 53.529800 -2.653700 0.210400 0.900400 0 253 27 -6.624100 53.529800 -2.653700 0.210400 0.900400 254 68 73 -6.029500 46.188801 -3.956000 0.183500 0.792100 254 68 73 -7.813100 49.342701 -3.886900 0.181200 0.844200 254 68 73 -0.000000 50.880199 0.110000 0.310700 0.860500 0 253 27 -0.000000 47.287498 1.094200 0.310700 0.805700 0 252 27 -4.298500 47.001099 -0.058900 0.249500 0.802400 0 253 27 -3.773800 51.093601 -1.034300 0.256800 0.864400 0 253 27 -16.136200 50.023998 -7.546200 0.529500 0.803100 0 253 27 -14.885000 46.974701 -7.946000 0.590800 0.803100 0 253 27 -13.779500 47.417198 -7.715300 0.590800 0.828100 0 253 27 -14.989100 50.565300 -7.297200 0.526200 0.828100 0 253 27 -13.779500 47.417198 -7.715300 0.347800 0.823100 0 253 27 -14.977100 45.689201 -4.821000 0.400900 0.803100 0 253 27 -8.927200 49.128502 -4.128200 0.409800 0.916400 0 253 27 -8.756500 49.321098 -7.632900 0.347800 0.916400 0 253 27 -17.208200 49.477699 -7.512200 0.531700 0.782100 0 227 47 -16.810101 49.139900 -3.928800 0.469900 0.782100 35 133 112 -22.348700 46.932201 -2.822400 0.469900 0.674700 19 0 250 -22.585199 48.327702 -7.594400 0.533600 0.698800 0 236 38 -21.936399 43.055199 -3.733600 0.412700 0.674700 19 0 253 -22.348700 46.932201 -2.822400 0.469900 0.674700 19 0 250 -16.810101 49.139900 -3.928800 0.469900 0.782100 35 133 112 -16.192200 44.960400 -4.877100 0.398600 0.782100 18 0 253 -22.105101 44.119598 -7.074000 0.583100 0.674700 0 253 27 -21.061199 44.183601 -7.611200 0.590800 0.698800 0 253 27 -22.585199 48.327702 -7.594400 0.533600 0.698800 0 253 27 -23.337700 47.268200 -6.945000 0.530800 0.674700 0 253 27 -15.884600 46.520500 -7.855800 0.347800 0.782100 0 253 27 -21.061199 44.183601 -7.611200 0.347800 0.693400 0 253 27 -21.936399 43.055199 -3.733600 0.412700 0.674700 0 253 27 -16.192200 44.960400 -4.877100 0.398600 0.782100 0 253 27 -5.598500 31.822901 -1.404300 0.847900 0.413200 0 240 37 -7.453900 29.910801 -4.780100 0.884800 0.385400 18 0 251 -7.174300 32.815300 -5.167300 0.893300 0.414200 17 7 244 -4.970000 33.082802 -8.871900 0.938900 0.409500 18 0 252 -7.174300 32.815300 -5.167300 0.893300 0.414200 17 7 244 -7.453900 29.910801 -4.780100 0.884800 0.385400 18 0 251 -5.595300 29.761600 -8.492500 0.927500 0.375900 18 0 253 -6.827700 20.858999 -3.044800 0.858900 0.286100 0 231 44 -6.194700 19.576300 -3.478600 0.860200 0.277400 0 248 31 -5.426000 21.341299 -8.132600 0.914200 0.282100 15 21 230 -0.835600 22.853901 -8.210700 0.964300 0.301600 0 253 27 -5.317800 22.936800 -8.016200 0.916400 0.301600 0 253 27 -5.426000 21.341299 -8.132600 0.914200 0.282100 0 253 27 -0.899900 21.410400 -8.349400 0.962800 0.286100 0 253 27 -0.899900 21.410400 -8.349400 0.726500 0.282100 254 254 254 -1.853000 19.164200 -1.371600 0.805100 0.274200 254 254 254 -1.957400 20.620800 -1.211500 0.804700 0.286100 254 254 254 -6.194700 19.576300 -3.478600 0.860200 0.277400 0 248 31 -6.827700 20.858999 -3.044800 0.858900 0.286100 0 231 44 -1.957400 20.620800 -1.211500 0.804700 0.286100 0 253 27 -1.853000 19.164200 -1.371600 0.805100 0.274200 0 253 27 -5.117200 15.490400 -9.679700 0.917300 0.220800 0 253 27 -0.134100 16.169500 -9.174700 0.969900 0.225300 0 253 27 -0.899900 21.410400 -8.349400 0.962800 0.286100 0 253 27 -5.426000 21.341299 -8.132600 0.914200 0.282100 0 253 27 -0.134100 16.169500 -9.174700 0.732600 0.207100 0 254 27 -1.716700 14.450400 -2.459200 0.808600 0.236100 0 254 27 -1.853000 19.164200 -1.371600 0.805100 0.274200 0 254 27 -0.899900 21.410400 -8.349400 0.726500 0.282100 0 254 27 -1.853000 19.164200 -1.371600 0.805100 0.274200 0 253 27 -1.716700 14.450400 -2.459200 0.808600 0.236100 0 253 27 -6.069200 14.643000 -3.762300 0.859400 0.227800 0 253 27 -6.194700 19.576300 -3.478600 0.860200 0.277400 0 248 31 -6.069200 14.643000 -3.762300 0.859400 0.227800 0 253 27 -5.117200 15.490400 -9.679700 0.917300 0.220800 2 202 70 -5.426000 21.341299 -8.132600 0.914200 0.282100 15 21 230 -6.194700 19.576300 -3.478600 0.860200 0.277400 0 248 31 -7.813100 49.342701 -3.886900 0.181200 0.844200 0 253 27 -6.029500 46.188801 -3.956000 0.183500 0.792100 0 253 27 -5.495700 46.043098 -6.732400 0.140100 0.788400 0 252 27 -6.775800 50.206501 -7.534500 0.134300 0.852600 0 253 27 -8.756500 49.321098 -7.632900 0.347800 0.916400 254 68 73 -8.927200 49.128502 -4.128200 0.409800 0.916400 254 68 73 -7.813100 49.342701 -3.886900 0.407700 0.942000 254 68 73 -6.775800 50.206501 -7.534500 0.347800 0.942000 254 68 73 -5.495700 46.043098 -6.732400 0.140100 0.788400 0 253 27 -0.000000 45.235802 -8.516300 0.061600 0.762900 0 253 27 -0.000000 50.037800 -9.413700 0.042000 0.827300 0 253 27 -6.775800 50.206501 -7.534500 0.134300 0.852600 0 253 27 -3.773800 51.093601 -1.034300 0.256800 0.864400 0 253 27 -1.435700 55.057400 -2.884500 0.286000 0.931400 0 253 27 -0.000000 54.522099 -2.187600 0.310700 0.919600 0 253 27 -0.000000 50.880199 0.110000 0.310700 0.860500 0 253 27 -0.163800 60.672798 0.405300 0.538500 0.200900 0 253 27 -0.226300 59.631802 0.717000 0.537800 0.167300 0 253 27 -0.605400 59.453602 0.006800 0.558900 0.156900 0 253 27 -0.596000 60.268700 -0.255900 0.565100 0.185300 0 253 27 -0.000000 59.375900 0.272700 0.533800 0.153800 0 253 27 -0.000000 58.735298 0.237300 0.533800 0.134400 0 253 27 -0.793500 58.611801 -0.022400 0.561500 0.129800 0 253 27 -0.605400 59.453602 0.006800 0.558900 0.156900 0 253 27 -1.340700 61.343498 -1.024900 0.599900 0.231700 254 254 254 -2.225300 60.301201 -1.334400 0.633200 0.187400 254 254 254 -2.209500 61.230499 -1.515000 0.636800 0.228100 254 254 254 -0.474100 61.294899 -0.607800 0.567800 0.227200 0 253 27 -0.785400 61.539799 -0.048800 0.562200 0.247600 0 253 27 -0.179900 61.274700 0.058500 0.542100 0.223900 0 253 27 -0.163800 60.672798 0.405300 0.538500 0.200900 0 253 27 -0.596000 60.268700 -0.255900 0.565100 0.185300 0 253 27 -0.474100 61.294899 -0.607800 0.567800 0.227200 0 253 27 -0.179900 61.274700 0.058500 0.542100 0.223900 0 253 27 -0.785400 61.539799 -0.048800 0.562200 0.247600 0 253 27 -1.792100 61.563202 -0.648200 0.603400 0.250800 0 253 27 -1.901400 62.898899 -1.262500 0.616100 0.287500 0 253 27 -0.000000 62.775902 -0.355700 0.533900 0.286800 0 253 27 -1.901400 62.898899 -1.262500 0.616100 0.287500 254 73 78 -1.792100 61.563202 -0.648200 0.603400 0.250800 254 68 73 -2.209500 61.230499 -1.515000 0.636800 0.228100 254 68 73 -2.505800 61.413601 -3.333900 0.700500 0.240200 254 68 73 -2.071800 58.080299 -1.837600 0.632000 0.089900 254 254 254 -2.361600 58.652599 -3.405400 0.691600 0.111600 254 254 254 -2.043500 58.694401 -1.722000 0.633000 0.119000 254 254 254 -2.361600 58.652599 -3.405400 0.691600 0.111600 254 254 254 -2.071800 58.080299 -1.837600 0.632000 0.089900 254 254 254 -1.480400 57.287800 -3.167400 0.679600 0.054000 254 254 254 -2.361600 58.652599 -3.405400 0.691600 0.111600 254 254 254 -2.484800 60.667999 -2.078300 0.658100 0.193000 254 254 254 -2.225300 60.301201 -1.334400 0.633200 0.187400 254 254 254 -2.043500 58.694401 -1.722000 0.633000 0.119000 254 254 254 -0.596000 60.268700 -0.255900 0.565100 0.185300 0 253 27 -0.605400 59.453602 0.006800 0.558900 0.156900 0 253 27 -0.793500 58.611801 -0.022400 0.561500 0.129800 0 253 27 -2.225300 60.301201 -1.334400 0.633200 0.187400 0 253 27 -0.793500 58.611801 -0.022400 0.561500 0.129800 254 68 73 -0.000000 58.735298 0.237300 0.533800 0.134400 254 68 73 -0.000000 57.320400 0.190300 0.533800 0.095300 254 68 73 -0.860300 57.339199 -0.345300 0.560600 0.087800 254 68 73 -2.361600 58.652599 -3.405400 0.691600 0.111600 254 254 254 -1.480400 57.287800 -3.167400 0.679600 0.054000 254 254 254 -1.507500 57.978802 -4.806700 0.740400 0.071600 254 254 254 -1.480400 57.287800 -3.167400 0.293800 0.962800 0 253 27 -0.509500 56.862801 -2.081200 0.308000 0.953500 0 253 27 -0.000000 54.522099 -2.187600 0.310700 0.919600 0 253 27 -1.435700 55.057400 -2.884500 0.286000 0.931400 0 254 27 -1.435700 55.057400 -2.884500 0.286000 0.931400 254 68 73 -2.321200 55.471001 -5.570800 0.259700 0.968000 254 68 73 -1.507500 57.978802 -4.806700 0.270100 0.982500 254 68 73 -1.480400 57.287800 -3.167400 0.293800 0.962800 254 68 73 -5.117200 15.490400 -9.679700 0.917300 0.220800 0 253 27 -1.456400 14.610600 -8.695100 0.949700 0.207500 0 253 27 -0.134100 16.169500 -9.174700 0.969900 0.225300 0 253 27 -0.134100 16.169500 -9.174700 0.732600 0.207100 254 254 254 -1.239800 14.644800 -6.465300 0.774100 0.204900 254 254 254 -1.716700 14.450400 -2.459200 0.808600 0.236100 254 254 254 -5.308800 13.910900 -3.738700 0.855000 0.218100 0 253 27 -6.069200 14.643000 -3.762300 0.859400 0.227800 0 253 27 -1.716700 14.450400 -2.459200 0.808600 0.236100 0 253 27 -1.766900 13.754900 -2.918700 0.809900 0.215800 0 253 27 -4.620900 14.945700 -8.516100 0.914400 0.215300 0 247 31 -5.117200 15.490400 -9.679700 0.917300 0.220800 2 205 68 -6.069200 14.643000 -3.762300 0.859400 0.227800 0 253 27 -5.308800 13.910900 -3.738700 0.855000 0.218100 0 253 27 -1.957400 20.620800 -1.211500 0.804700 0.286100 254 254 254 -2.189200 21.987900 -1.483700 0.804500 0.301600 254 254 254 -0.835600 22.853901 -8.210700 0.728900 0.301600 254 254 254 -0.899900 21.410400 -8.349400 0.726500 0.282100 254 254 254 -7.174300 32.815300 -5.167300 0.893300 0.414200 17 7 244 -4.970000 33.082802 -8.871900 0.938900 0.409500 18 0 252 -5.283200 35.952900 -7.814600 0.933900 0.441300 18 1 249 -6.542300 35.480598 -4.902800 0.897200 0.442800 15 32 221 -5.598500 31.822901 -1.404300 0.847900 0.413200 0 240 37 -7.174300 32.815300 -5.167300 0.893300 0.414200 17 7 244 -6.542300 35.480598 -4.902800 0.897200 0.442800 15 32 221 -4.685700 36.664101 -1.616400 0.239300 0.661600 0 250 28 -3.798500 31.552500 -0.388900 0.257800 0.582200 0 253 27 -5.598500 31.822901 -1.404300 0.231700 0.582200 0 240 37 -2.225300 60.301201 -1.334400 0.633200 0.187400 254 254 254 -2.484800 60.667999 -2.078300 0.658100 0.193000 254 254 254 -2.209500 61.230499 -1.515000 0.636800 0.228100 254 254 254 -8.927200 49.128502 -4.128200 0.409800 0.916400 254 68 73 -9.508400 52.403099 -3.672700 0.469900 0.916400 254 68 73 -8.184300 53.108700 -3.320400 0.469900 0.942000 254 68 73 -7.813100 49.342701 -3.886900 0.407700 0.942000 254 68 73 -8.184300 53.108700 -3.320400 0.469900 0.942000 0 253 27 -9.508400 52.403099 -3.672700 0.469900 0.916400 0 253 27 -9.827700 52.989700 -7.188500 0.526400 0.916400 0 253 27 -8.747800 53.770199 -7.353300 0.528600 0.942000 0 253 27 -8.747800 53.770199 -7.353300 0.528600 0.942000 0 253 27 -6.775800 50.206501 -7.534500 0.590800 0.942000 0 253 27 -7.252500 54.524502 -7.615000 0.533200 0.977800 0 254 27 -8.927200 49.128502 -4.128200 0.409800 0.916400 0 253 27 -14.977100 45.689201 -4.821000 0.400900 0.803100 18 0 253 -15.636800 49.715099 -4.015700 0.469900 0.803100 29 188 60 -9.508400 52.403099 -3.672700 0.469900 0.916400 0 253 27 -1.435700 55.057400 -2.884500 0.286000 0.931400 0 253 27 -3.773800 51.093601 -1.034300 0.256800 0.864400 0 253 27 -6.624100 53.529800 -2.653700 0.210400 0.900400 0 253 27 -7.252500 54.524502 -7.615000 0.180600 0.964800 0 253 27 -2.321200 55.471001 -5.570800 0.259700 0.968000 0 253 27 -1.435700 55.057400 -2.884500 0.286000 0.931400 0 253 27 -7.252500 54.524502 -7.615000 0.180600 0.964800 0 253 27 -2.209500 61.230499 -1.515000 0.636800 0.228100 254 254 254 -2.484800 60.667999 -2.078300 0.658100 0.193000 254 254 254 -2.505800 61.413601 -3.333900 0.704900 0.212700 254 254 254 -2.484800 60.667999 -2.078300 0.658100 0.193000 254 254 254 -2.361600 58.652599 -3.405400 0.691600 0.111600 254 254 254 -2.505800 61.413601 -3.333900 0.704900 0.212700 254 254 254 -2.209500 61.230499 -1.515000 0.636800 0.228100 254 68 73 -1.792100 61.563202 -0.648200 0.603400 0.250800 254 68 73 -1.340700 61.343498 -1.024900 0.599900 0.231700 254 68 73 -3.061600 3.537800 -3.461700 0.290200 0.071700 18 0 253 -1.553600 3.059500 -4.173500 0.275500 0.071900 18 0 253 -1.568700 1.981700 -0.627100 0.274000 0.039600 19 0 253 -3.735600 1.816900 0.228400 0.290200 0.030700 19 0 253 -0.626000 0.031700 -8.336200 0.238500 0.103000 0 254 27 -1.825200 -0.024100 0.601200 0.266200 0.023600 254 254 254 -1.568700 1.981700 -0.627100 0.274000 0.039600 254 254 254 -1.553600 3.059500 -4.173500 0.275500 0.071900 186 254 192 -1.825200 -0.024100 0.601200 0.783900 0.050100 0 254 27 -0.626000 0.031700 -8.336200 0.777900 0.139800 253 254 253 -1.712600 0.024900 -9.195700 0.765100 0.147100 254 254 254 -3.769300 -0.009000 1.132900 0.765800 0.040900 0 254 27 -1.712600 0.024900 -9.195700 0.925400 0.031900 254 68 73 -0.626000 0.031700 -8.336200 0.938600 0.031200 254 68 73 -1.239800 14.644800 -6.465300 0.974400 0.175600 254 68 73 -1.456400 14.610600 -8.695100 0.943400 0.175600 254 68 73 -1.568700 1.981700 -0.627100 0.274000 0.039600 19 0 253 -1.825200 -0.024100 0.601200 0.266200 0.023600 19 0 253 -3.769300 -0.009000 1.132900 0.289700 0.012400 19 0 253 -3.735600 1.816900 0.228400 0.290200 0.030700 19 0 253 -4.089400 2.633000 -5.031300 0.310400 0.073900 18 0 253 -5.390300 1.568200 -1.670300 0.308400 0.040400 18 0 253 -5.176800 -0.025000 -0.598300 0.313500 0.023800 18 0 253 -3.252600 0.001600 -8.591000 0.345300 0.097200 19 0 253 -3.769300 -0.009000 1.132900 0.289700 0.012400 18 0 253 -5.176800 -0.025000 -0.598300 0.313500 0.023800 18 0 253 -5.390300 1.568200 -1.670300 0.308400 0.040400 18 0 253 -3.735600 1.816900 0.228400 0.290200 0.030700 18 0 253 -5.390300 1.568200 -1.670300 0.308400 0.040400 18 0 253 -4.089400 2.633000 -5.031300 0.310400 0.073900 18 0 253 -3.061600 3.537800 -3.461700 0.290200 0.071700 18 0 253 -3.735600 1.816900 0.228400 0.290200 0.030700 18 0 253 -3.061600 3.537800 -3.461700 0.856300 0.067800 18 0 253 -4.089400 2.633000 -5.031300 0.873900 0.060000 18 0 253 -5.308800 13.910900 -3.738700 0.859000 0.175600 0 253 27 -1.766900 13.754900 -2.918700 0.824200 0.175600 0 253 27 -5.117200 15.490400 -9.679700 0.917300 0.220800 0 253 27 -4.620900 14.945700 -8.516100 0.914400 0.215300 0 253 27 -1.456400 14.610600 -8.695100 0.949700 0.207500 0 253 27 -1.456400 14.610600 -8.695100 0.746600 0.183800 254 254 254 -1.239800 14.644800 -6.465300 0.774100 0.204900 254 254 254 -0.134100 16.169500 -9.174700 0.732600 0.207100 254 254 254 -5.426000 21.341299 -8.132600 0.914200 0.282100 15 21 230 -5.317800 22.936800 -8.016200 0.916400 0.301600 18 0 252 -6.824000 22.193899 -3.251500 0.860400 0.301600 3 179 89 -6.827700 20.858999 -3.044800 0.858900 0.286100 0 231 44 -0.845100 29.891001 -9.498900 0.978500 0.369500 0 253 27 -5.595300 29.761600 -8.492500 0.927500 0.375900 0 253 27 -5.317800 22.936800 -8.016200 0.916400 0.301600 0 253 27 -0.835600 22.853901 -8.210700 0.964300 0.301600 0 253 27 -1.957400 20.620800 -1.211500 0.804700 0.286100 254 68 73 -6.827700 20.858999 -3.044800 0.858900 0.286100 232 61 86 -6.824000 22.193899 -3.251500 0.860400 0.301600 185 47 122 -2.189200 21.987900 -1.483700 0.804500 0.301600 254 68 73 -0.605400 59.453602 0.006800 0.558900 0.156900 254 68 73 -0.226300 59.631802 0.717000 0.537800 0.167300 254 68 73 -0.000000 59.375900 0.272700 0.533800 0.153800 254 68 73 -21.936399 43.055199 -3.733600 0.412700 0.674700 19 0 253 -23.265499 44.290199 -3.614200 0.431800 0.655600 19 0 253 -23.323000 46.228001 -3.425200 0.469900 0.655600 19 0 251 -22.348700 46.932201 -2.822400 0.469900 0.674700 20 0 250 -22.105101 44.119598 -7.074000 0.583100 0.674700 0 253 27 -23.337700 47.268200 -6.945000 0.530800 0.674700 0 253 27 -23.881300 46.267799 -5.995500 0.521800 0.655600 0 253 27 -23.273100 44.479099 -6.170500 0.556600 0.655600 0 253 27 -22.348700 46.932201 -2.822400 0.469900 0.674700 18 0 249 -23.323000 46.228001 -3.425200 0.469900 0.655600 18 0 251 -23.881300 46.267799 -5.995500 0.521800 0.655600 12 63 193 -23.337700 47.268200 -6.945000 0.530800 0.674700 2 175 92 -21.936399 43.055199 -3.733600 0.412700 0.674700 18 0 253 -22.105101 44.119598 -7.074000 0.362600 0.674700 18 0 253 -23.273100 44.479099 -6.170500 0.386800 0.655600 18 0 253 -23.265499 44.290199 -3.614200 0.431800 0.655600 18 0 253 -23.323000 46.228001 -3.425200 0.469900 0.655600 19 0 251 -23.265499 44.290199 -3.614200 0.431800 0.655600 19 0 253 -24.446100 44.099098 -3.039500 0.444100 0.624200 19 0 253 -24.935400 45.742901 -3.288800 0.469900 0.624200 20 0 251 -23.273100 44.479099 -6.170500 0.556600 0.655600 0 253 27 -23.881300 46.267799 -5.995500 0.521800 0.655600 0 253 27 -25.982700 45.641201 -5.974700 0.517100 0.624200 0 253 27 -25.718901 44.407902 -5.989100 0.533000 0.624200 0 253 27 -23.881300 46.267799 -5.995500 0.521800 0.655600 64 24 202 -23.323000 46.228001 -3.425200 0.469900 0.655600 19 0 251 -24.935400 45.742901 -3.288800 0.469900 0.624200 20 0 251 -25.982700 45.641201 -5.974700 0.517100 0.624200 65 29 197 -23.265499 44.290199 -3.614200 0.431800 0.655600 0 251 27 -23.273100 44.479099 -6.170500 0.386800 0.655600 0 253 27 -25.718901 44.407902 -5.989100 0.398000 0.624200 0 253 27 -24.446100 44.099098 -3.039500 0.444100 0.624200 53 205 30 -3.798500 31.552500 -0.388900 0.257800 0.582200 57 208 35 -4.685700 36.664101 -1.616400 0.239300 0.661600 0 250 28 -0.000000 37.009800 0.550700 0.310700 0.661600 172 124 55 -0.000000 31.552500 0.128500 0.310700 0.582200 203 101 62 -27.058001 43.733101 -1.471100 0.783900 0.527900 19 0 253 -26.775499 43.007000 -1.492900 0.799700 0.523000 19 0 253 -27.637899 42.321201 -1.984400 0.780200 0.502700 19 0 253 -28.100901 44.177299 -2.470000 0.756100 0.537200 19 0 253 -27.102699 45.320202 -5.735100 0.706300 0.587600 0 253 27 -26.246300 42.901402 -5.383600 0.663100 0.553800 0 252 27 -25.718901 44.407902 -5.989100 0.674700 0.592000 0 253 27 -25.982700 45.641201 -5.974700 0.701400 0.609900 0 253 27 -24.935400 45.742901 -3.288800 0.774000 0.616500 20 0 251 -26.753901 45.398300 -2.858600 0.766000 0.574200 21 0 250 -27.102699 45.320202 -5.735100 0.706300 0.587600 69 22 201 -25.982700 45.641201 -5.974700 0.701400 0.609900 65 29 197 -24.446100 44.099098 -3.039500 0.815000 0.599300 254 254 254 -25.718901 44.407902 -5.989100 0.885900 0.607200 254 254 254 -26.246300 42.901402 -5.383600 0.880100 0.569900 254 254 254 -28.380600 42.330502 -3.056600 0.741600 0.498200 19 0 253 -28.697901 44.238201 -3.477500 0.737900 0.538900 20 0 252 -28.100901 44.177299 -2.470000 0.756100 0.537200 19 0 253 -27.637899 42.321201 -1.984400 0.780200 0.502700 19 0 253 -28.380600 42.330502 -3.056600 0.741600 0.498200 19 0 253 -28.292801 42.543098 -4.446800 0.704200 0.514300 19 0 253 -28.543800 44.178001 -4.651400 0.718600 0.545700 20 3 248 -28.697901 44.238201 -3.477500 0.737900 0.538900 20 0 252 -26.753901 45.398300 -2.858600 0.766000 0.574200 20 0 250 -28.100901 44.177299 -2.470000 0.756100 0.537200 19 0 253 -28.697901 44.238201 -3.477500 0.737900 0.538900 20 0 252 -24.935400 45.742901 -3.288800 0.774000 0.616500 20 0 251 -24.446100 44.099098 -3.039500 0.815000 0.599300 19 0 253 -25.587200 43.557701 -2.038700 0.806300 0.556900 19 0 253 -26.117701 44.487900 -2.198700 0.788200 0.565100 19 0 253 -24.446100 44.099098 -3.039500 0.815000 0.599300 254 68 73 -26.246300 42.901402 -5.383600 0.880100 0.569900 254 68 73 -25.491899 42.827301 -2.370100 0.813300 0.554500 254 68 73 -25.587200 43.557701 -2.038700 0.806300 0.556900 254 68 73 -26.753901 45.398300 -2.858600 0.766000 0.574200 21 0 250 -24.935400 45.742901 -3.288800 0.774000 0.616500 20 0 251 -26.117701 44.487900 -2.198700 0.788200 0.565100 19 0 253 -0.000000 31.552500 0.128500 0.310700 0.582200 0 253 27 -0.000000 24.132099 -0.356700 0.310700 0.472800 0 253 27 -3.463700 23.872801 -0.356700 0.261200 0.472800 0 253 27 -3.798500 31.552500 -0.388900 0.257800 0.582200 0 253 27 -2.225300 60.301201 -1.334400 0.633200 0.187400 0 253 27 -0.793500 58.611801 -0.022400 0.561500 0.129800 0 253 27 -2.043500 58.694401 -1.722000 0.633000 0.119000 0 253 27 -0.793500 58.611801 -0.022400 0.561500 0.129800 0 253 27 -0.860300 57.339199 -0.345300 0.560600 0.087800 0 253 27 -2.071800 58.080299 -1.837600 0.632000 0.089900 0 253 27 -2.043500 58.694401 -1.722000 0.633000 0.119000 0 253 27 -2.071800 58.080299 -1.837600 0.632000 0.089900 254 68 73 -0.860300 57.339199 -0.345300 0.560600 0.087800 254 68 73 -0.509500 56.862801 -2.081200 0.570500 0.026600 254 68 73 -1.480400 57.287800 -3.167400 0.631900 0.022800 254 68 73 -0.179900 61.274700 0.058500 0.542100 0.223900 0 254 27 -0.785400 61.539799 -0.048800 0.562200 0.247600 0 254 27 -0.000000 61.912998 -0.048000 0.533800 0.254400 0 254 27 -15.884600 46.520500 -7.855800 0.590800 0.782100 0 253 27 -14.885000 46.974701 -7.946000 0.590800 0.803100 0 253 27 -16.136200 50.023998 -7.546200 0.529500 0.803100 0 253 27 -17.208200 49.477699 -7.512200 0.531700 0.782100 0 253 27 -15.636800 49.715099 -4.015700 0.469900 0.803100 1 215 59 -16.810101 49.139900 -3.928800 0.469900 0.782100 5 158 110 -17.208200 49.477699 -7.512200 0.531700 0.782100 0 227 47 -16.136200 50.023998 -7.546200 0.529500 0.803100 0 244 34 -16.192200 44.960400 -4.877100 0.398600 0.782100 254 252 252 -14.977100 45.689201 -4.821000 0.400900 0.803100 254 202 204 -14.885000 46.974701 -7.946000 0.347800 0.803100 254 123 127 -15.884600 46.520500 -7.855800 0.347800 0.782100 254 212 213 -16.810101 49.139900 -3.928800 0.469900 0.782100 35 133 112 -15.636800 49.715099 -4.015700 0.469900 0.803100 25 190 59 -14.977100 45.689201 -4.821000 0.400900 0.803100 18 0 253 -16.192200 44.960400 -4.877100 0.398600 0.782100 18 0 253 -13.779500 47.417198 -7.715300 0.590800 0.828100 12 79 181 -8.756500 49.321098 -7.632900 0.590800 0.916400 0 250 29 -9.827700 52.989700 -7.188500 0.526400 0.916400 0 253 27 -14.989100 50.565300 -7.297200 0.526200 0.828100 0 249 29 -15.636800 49.715099 -4.015700 0.469900 0.803100 1 215 59 -16.136200 50.023998 -7.546200 0.529500 0.803100 0 244 34 -14.989100 50.565300 -7.297200 0.526200 0.828100 0 249 29 -13.779500 47.417198 -7.715300 0.347800 0.823100 254 70 75 -14.885000 46.974701 -7.946000 0.347800 0.803100 254 123 127 -14.977100 45.689201 -4.821000 0.400900 0.803100 254 202 204 -1.239800 14.644800 -6.465300 0.774100 0.204900 254 254 254 -1.766900 13.754900 -2.918700 0.809900 0.215800 254 254 254 -1.716700 14.450400 -2.459200 0.808600 0.236100 254 254 254 -26.117701 44.487900 -2.198700 0.788200 0.565100 19 0 253 -25.587200 43.557701 -2.038700 0.806300 0.556900 19 0 253 -26.775499 43.007000 -1.492900 0.799700 0.523000 19 0 253 -27.058001 43.733101 -1.471100 0.783900 0.527900 19 0 253 -25.587200 43.557701 -2.038700 0.806300 0.556900 19 0 253 -25.491899 42.827301 -2.370100 0.813300 0.554500 19 0 253 -27.637899 42.321201 -1.984400 0.816200 0.507300 19 0 253 -26.775499 43.007000 -1.492900 0.799700 0.523000 19 0 253 -26.117701 44.487900 -2.198700 0.788200 0.565100 19 0 253 -27.058001 43.733101 -1.471100 0.783900 0.527900 19 0 253 -28.100901 44.177299 -2.470000 0.756100 0.537200 19 0 253 -8.184300 53.108700 -3.320400 0.469900 0.942000 254 68 73 -6.624100 53.529800 -2.653700 0.469900 0.977800 254 68 73 -7.813100 49.342701 -3.886900 0.407700 0.942000 254 68 73 -8.747800 53.770199 -7.353300 0.528600 0.942000 0 253 27 -9.827700 52.989700 -7.188500 0.526400 0.916400 0 253 27 -8.756500 49.321098 -7.632900 0.590800 0.916400 0 253 27 -6.775800 50.206501 -7.534500 0.590800 0.942000 0 253 27 -28.543800 44.178001 -4.651400 0.718600 0.545700 20 3 248 -27.102699 45.320202 -5.735100 0.706300 0.587600 12 64 193 -26.753901 45.398300 -2.858600 0.766000 0.574200 20 0 250 -28.697901 44.238201 -3.477500 0.737900 0.538900 20 0 252 -26.246300 42.901402 -5.383600 0.880100 0.569900 0 252 27 -28.292801 42.543098 -4.446800 0.879400 0.523100 87 180 37 -28.380600 42.330502 -3.056600 0.853500 0.507000 242 73 67 -28.100901 44.177299 -2.470000 0.756100 0.537200 19 0 253 -26.753901 45.398300 -2.858600 0.766000 0.574200 21 0 250 -26.117701 44.487900 -2.198700 0.788200 0.565100 19 0 253 -1.712600 0.024900 -9.195700 0.765100 0.147100 19 0 253 -3.252600 0.001600 -8.591000 0.751000 0.138000 19 0 253 -5.176800 -0.025000 -0.598300 0.748300 0.055100 18 0 253 -3.769300 -0.009000 1.132900 0.765800 0.040900 18 0 253 -0.000000 61.912998 -0.048000 0.533800 0.254400 0 254 27 -0.785400 61.539799 -0.048800 0.562200 0.247600 0 254 27 -0.000000 62.775902 -0.355700 0.533900 0.286800 0 254 27 -0.340300 31.400700 -9.928000 0.694900 0.384200 254 254 254 -0.845100 29.891001 -9.498900 0.702700 0.368200 254 254 254 -0.425600 30.069099 -1.507500 0.785600 0.393300 254 254 254 -0.509500 56.862801 -2.081200 0.308000 0.953500 254 127 129 -0.509500 56.862801 -2.081200 0.570500 0.026600 0 253 27 -0.860300 57.339199 -0.345300 0.560600 0.087800 0 253 27 -0.000000 57.320400 0.190300 0.533800 0.095300 0 253 27 -0.000000 56.862801 -2.081200 0.533800 0.019000 0 253 27 -5.598500 31.822901 -1.404300 0.847900 0.413200 0 240 37 -6.824000 22.193899 -3.251500 0.860400 0.301600 3 179 89 -7.453900 29.910801 -4.780100 0.884800 0.385400 18 0 251 -6.824000 22.193899 -3.251500 0.860400 0.301600 3 179 89 -5.317800 22.936800 -8.016200 0.916400 0.301600 18 0 252 -5.595300 29.761600 -8.492500 0.927500 0.375900 18 0 253 -7.453900 29.910801 -4.780100 0.884800 0.385400 18 0 251 -3.798500 31.552500 -0.388900 0.824000 0.411400 0 253 27 -2.189200 21.987900 -1.483700 0.804500 0.301600 0 253 27 -6.824000 22.193899 -3.251500 0.860400 0.301600 3 179 89 -5.598500 31.822901 -1.404300 0.847900 0.413200 0 240 37 -0.340300 31.400700 -9.928000 0.986800 0.385200 0 253 27 -4.970000 33.082802 -8.871900 0.938900 0.409500 0 253 27 -5.595300 29.761600 -8.492500 0.927500 0.375900 0 253 27 -0.845100 29.891001 -9.498900 0.978500 0.369500 0 253 27 -0.835600 22.853901 -8.210700 0.728900 0.301600 254 254 254 -2.189200 21.987900 -1.483700 0.804500 0.301600 254 254 254 -0.425600 30.069099 -1.507500 0.785600 0.393300 254 254 254 -0.845100 29.891001 -9.498900 0.702700 0.368200 254 254 254 -2.162800 35.743500 -9.599900 0.972400 0.433600 0 253 27 -5.283200 35.952900 -7.814600 0.933900 0.441300 0 253 27 -4.970000 33.082802 -8.871900 0.938900 0.409500 0 253 27 -0.340300 31.400700 -9.928000 0.986800 0.385200 0 253 27 -5.283200 35.952900 -7.814600 0.142200 0.631800 18 1 249 -5.919200 37.619099 -4.570300 0.183400 0.661600 9 98 162 -6.542300 35.480598 -4.902800 0.182500 0.631800 15 32 221 -5.919200 37.619099 -4.570300 0.183400 0.661600 9 98 162 -4.685700 36.664101 -1.616400 0.239300 0.661600 0 250 28 -5.598500 31.822901 -1.404300 0.231700 0.582200 0 240 37 -6.542300 35.480598 -4.902800 0.182500 0.631800 15 32 221 -0.474100 61.294899 -0.607800 0.567800 0.227200 254 68 73 -0.596000 60.268700 -0.255900 0.565100 0.185300 254 68 73 -2.225300 60.301201 -1.334400 0.633200 0.187400 254 68 73 -1.340700 61.343498 -1.024900 0.599900 0.231700 254 68 73 -1.340700 61.343498 -1.024900 0.599900 0.231700 0 253 27 -1.792100 61.563202 -0.648200 0.603400 0.250800 0 253 27 -0.785400 61.539799 -0.048800 0.562200 0.247600 0 253 27 -0.474100 61.294899 -0.607800 0.567800 0.227200 0 253 27 -0.000000 45.235802 -8.516300 0.061600 0.762900 0 253 27 -5.495700 46.043098 -6.732400 0.140100 0.788400 0 252 27 -2.827600 38.171799 -8.088300 0.114700 0.661600 8 119 142 -0.000000 38.221600 -8.073300 0.073400 0.661600 0 240 38 -0.425600 30.069099 -1.507500 0.785600 0.393300 254 254 254 -2.189200 21.987900 -1.483700 0.804500 0.301600 254 254 254 -3.798500 31.552500 -0.388900 0.824000 0.411400 254 254 254 -0.000000 31.547001 -9.939100 0.694200 0.388200 254 68 73 -0.340300 31.400700 -9.928000 0.694900 0.384200 254 68 73 -0.425600 30.069099 -1.507500 0.785600 0.393300 254 68 73 -0.000000 30.215401 -1.522000 0.785000 0.398100 254 68 73 -21.061199 44.183601 -7.611200 0.590800 0.698800 18 0 253 -15.884600 46.520500 -7.855800 0.590800 0.782100 17 5 246 -17.208200 49.477699 -7.512200 0.531700 0.782100 0 227 47 -22.585199 48.327702 -7.594400 0.533600 0.698800 0 239 38 -22.348700 46.932201 -2.822400 0.469900 0.674700 18 0 249 -23.337700 47.268200 -6.945000 0.530800 0.674700 2 175 92 -22.585199 48.327702 -7.594400 0.533600 0.698800 0 239 38 -21.061199 44.183601 -7.611200 0.347800 0.693400 0 253 27 -22.105101 44.119598 -7.074000 0.362600 0.674700 0 253 27 -21.936399 43.055199 -3.733600 0.412700 0.674700 0 253 27 -0.340300 31.400700 -9.928000 0.986800 0.385200 0 253 27 -0.000000 31.547001 -9.939100 0.990600 0.386300 0 253 27 -0.000000 35.795200 -9.599900 0.995500 0.431600 0 253 27 -2.162800 35.743500 -9.599900 0.972400 0.433600 0 253 27 -5.919200 37.619099 -4.570300 0.183400 0.661600 9 98 162 -5.283200 35.952900 -7.814600 0.142200 0.631800 18 1 249 -2.162800 35.743500 -9.599900 0.096700 0.631800 16 28 225 -2.827600 38.171799 -8.088300 0.114700 0.661600 8 119 142 -28.543800 44.178001 -4.651400 0.718600 0.545700 77 187 34 -28.292801 42.543098 -4.446800 0.704200 0.514300 87 180 37 -26.246300 42.901402 -5.383600 0.663100 0.553800 0 252 27 -27.102699 45.320202 -5.735100 0.706300 0.587600 0 253 27 -25.491899 42.827301 -2.370100 0.813300 0.554500 190 254 195 -28.380600 42.330502 -3.056600 0.853500 0.507000 242 254 242 -27.637899 42.321201 -1.984400 0.816200 0.507300 254 254 254 -26.246300 42.901402 -5.383600 0.880100 0.569900 0 254 27 -28.380600 42.330502 -3.056600 0.853500 0.507000 242 254 242 -25.491899 42.827301 -2.370100 0.813300 0.554500 190 254 195 -2.162800 35.743500 -9.599900 0.096700 0.631800 0 253 27 -0.000000 35.795200 -9.599900 0.068300 0.631800 0 253 27 -0.000000 38.221600 -8.073300 0.073400 0.661600 0 253 27 -2.827600 38.171799 -8.088300 0.114700 0.661600 0 253 27 -0.706900 62.538601 -0.289700 0.409100 0.538600 0 253 27 -1.838200 62.255798 -0.802600 0.430000 0.507000 0 253 27 -1.901400 63.532299 -1.247600 0.451500 0.531400 0 253 27 -0.672300 63.485901 -0.421800 0.426300 0.552700 0 253 27 -1.901400 63.532299 -1.247600 0.451500 0.531400 0 253 27 -1.838200 62.255798 -0.802600 0.430000 0.507000 0 253 27 -3.194200 60.597198 -3.460400 0.492000 0.451400 0 253 27 -2.758700 63.532299 -3.348800 0.499700 0.518700 0 253 27 -2.758700 63.532299 -3.348800 0.499700 0.518700 0 253 27 -3.194200 60.597198 -3.460400 0.492000 0.451400 0 253 27 -3.446000 60.597198 -5.980300 0.552100 0.445900 0 253 27 -3.010600 63.532299 -5.868700 0.554200 0.511800 0 253 27 -3.194200 60.597198 -3.460400 0.492000 0.451400 0 253 27 -1.838200 62.255798 -0.802600 0.430000 0.507000 0 253 27 -2.336800 60.597198 -1.072500 0.434100 0.460700 0 253 27 -2.130500 53.628601 -1.359200 0.416700 0.297200 0 253 27 -4.088800 54.879799 -3.460400 0.486800 0.316000 0 253 27 -3.194200 60.597198 -3.460400 0.492000 0.451400 0 253 27 -2.336800 60.597198 -1.072500 0.434100 0.460700 0 253 27 -4.088800 54.879799 -3.460400 0.486800 0.316000 0 253 27 -4.340700 55.234299 -6.210400 0.542400 0.331500 0 254 27 -3.446000 60.597198 -5.980300 0.552100 0.445900 0 253 27 -3.194200 60.597198 -3.460400 0.492000 0.451400 0 253 27 -3.010600 63.532299 -5.868700 0.554200 0.511800 0 253 27 -3.446000 60.597198 -5.980300 0.552100 0.445900 0 253 27 -2.517200 60.597198 -7.879200 0.601000 0.450200 0 253 27 -1.932100 63.532299 -7.311200 0.591100 0.519300 0 253 27 -3.446000 60.597198 -5.980300 0.552100 0.445900 0 253 27 -4.340700 55.234299 -6.210400 0.542400 0.331500 0 254 27 -2.990300 54.496300 -8.246000 0.608400 0.297700 0 253 27 -2.517200 60.597198 -7.879200 0.601000 0.450200 0 253 27 -1.932100 63.532299 -7.311200 0.591100 0.519300 0 253 27 -2.517200 60.597198 -7.879200 0.601000 0.450200 0 253 27 -0.000000 60.597198 -8.812800 0.661800 0.464200 0 253 27 -0.000000 63.532299 -8.174500 0.634800 0.537700 0 253 27 -2.990300 54.496300 -8.246000 0.608400 0.297700 0 253 27 -0.000000 54.050800 -8.782700 0.682300 0.308600 0 253 27 -0.000000 60.597198 -8.812800 0.661800 0.464200 0 253 27 -2.517200 60.597198 -7.879200 0.601000 0.450200 0 253 27 -0.672300 63.485901 -0.421800 0.426300 0.552700 0 253 27 -1.901400 63.532299 -1.247600 0.451500 0.531400 0 253 27 -1.171400 65.057899 -2.205500 0.482000 0.564300 0 253 27 -1.901400 63.532299 -1.247600 0.451500 0.531400 0 253 27 -2.758700 63.532299 -3.348800 0.499700 0.518700 0 253 27 -1.795600 65.057899 -4.806100 0.538600 0.556700 0 253 27 -1.171400 65.057899 -2.205500 0.482000 0.564300 0 253 27 -2.758700 63.532299 -3.348800 0.499700 0.518700 0 253 27 -3.010600 63.532299 -5.868700 0.554200 0.511800 0 253 27 -1.795600 65.057899 -4.806100 0.538600 0.556700 0 253 27 -3.010600 63.532299 -5.868700 0.554200 0.511800 0 253 27 -1.932100 63.532299 -7.311200 0.591100 0.519300 0 254 27 -0.000000 65.057899 -6.421400 0.588900 0.582100 0 253 27 -1.795600 65.057899 -4.806100 0.538600 0.556700 0 253 27 -1.932100 63.532299 -7.311200 0.591100 0.519300 0 254 27 -0.000000 63.532299 -8.174500 0.634800 0.537700 0 253 27 -0.000000 65.057899 -6.421400 0.588900 0.582100 0 253 27 -1.171400 65.057899 -2.205500 0.482000 0.564300 0 253 27 -1.795600 65.057899 -4.806100 0.538600 0.556700 0 253 27 -0.000000 65.560898 -4.058400 0.523700 0.603300 0 253 27 -1.795600 65.057899 -4.806100 0.538600 0.556700 0 254 27 -0.000000 65.057899 -6.421400 0.588900 0.582100 0 254 27 -0.000000 65.560898 -4.058400 0.523700 0.603300 0 254 27 -0.672300 63.485901 -0.421800 0.426300 0.552700 0 254 27 -1.171400 65.057899 -2.205500 0.482000 0.564300 0 254 27 --1.171400 65.057899 -2.205500 0.466700 0.607600 0 254 27 --0.672300 63.485901 -0.421800 0.416100 0.581700 0 254 27 -0.706900 62.538601 -0.289700 0.409100 0.538600 0 254 27 -0.672300 63.485901 -0.421800 0.426300 0.552700 0 254 27 -0.000000 62.538601 -0.140300 0.398200 0.559100 0 254 27 -0.672300 63.485901 -0.421800 0.426300 0.552700 0 254 27 --0.672300 63.485901 -0.421800 0.416100 0.581700 0 254 27 -0.000000 62.538601 -0.140300 0.398200 0.559100 0 254 27 -2.130500 53.628601 -1.359200 0.416700 0.297200 0 253 27 -2.336800 60.597198 -1.072500 0.434100 0.460700 0 253 27 -1.393700 60.597198 -3.164700 0.380300 0.463400 0 253 27 -1.187300 53.628601 -3.164700 0.369000 0.300200 0 253 27 --0.706900 62.538601 -0.289700 0.409100 0.538600 0 254 27 --0.672300 63.485901 -0.421800 0.426300 0.552800 0 254 27 --1.901400 63.532299 -1.247600 0.451500 0.531500 0 254 27 --1.838200 62.255798 -0.802600 0.430000 0.507100 0 254 27 --1.901400 63.532299 -1.247600 0.451500 0.531500 0 254 27 --2.758700 63.532299 -3.348800 0.499700 0.518800 0 254 27 --3.194200 60.597198 -3.460400 0.492000 0.451500 0 254 27 --1.838200 62.255798 -0.802600 0.430000 0.507100 0 254 27 --2.758700 63.532299 -3.348800 0.499700 0.518800 0 254 27 --3.010600 63.532299 -5.868700 0.554200 0.511900 0 254 27 --3.446000 60.597198 -5.980300 0.552100 0.445900 0 254 27 --3.194200 60.597198 -3.460400 0.492000 0.451500 0 254 27 --3.194200 60.597198 -3.460400 0.492000 0.451500 0 254 27 --2.336800 60.597198 -1.072500 0.434000 0.460800 0 254 27 --1.838200 62.255798 -0.802600 0.430000 0.507100 0 254 27 --2.130500 53.628601 -1.359200 0.416600 0.297300 0 253 27 --2.336800 60.597198 -1.072500 0.434000 0.460800 0 254 27 --3.194200 60.597198 -3.460400 0.492000 0.451500 0 254 27 --4.088800 54.879799 -3.460400 0.486700 0.316100 0 253 27 --4.088800 54.879799 -3.460400 0.486700 0.316100 0 253 27 --3.194200 60.597198 -3.460400 0.492000 0.451500 0 253 27 --3.446000 60.597198 -5.980300 0.552100 0.445900 0 253 27 --4.340700 55.234299 -6.210400 0.542400 0.331500 0 254 27 --3.010600 63.532299 -5.868700 0.554200 0.511900 0 254 27 --1.932100 63.532299 -7.311200 0.591100 0.519300 0 254 27 --2.517200 60.597198 -7.879200 0.601000 0.450300 0 254 27 --3.446000 60.597198 -5.980300 0.552100 0.445900 0 254 27 --3.446000 60.597198 -5.980300 0.552100 0.445900 0 254 27 --2.517200 60.597198 -7.879200 0.601000 0.450300 0 254 27 --2.990300 54.496300 -8.246000 0.608300 0.297700 0 254 27 --4.340700 55.234299 -6.210400 0.542400 0.331500 0 254 27 --1.932100 63.532299 -7.311200 0.591100 0.519300 0 254 27 -0.000000 63.532299 -8.174500 0.634800 0.537700 0 254 27 -0.000000 60.597198 -8.812800 0.661800 0.464200 0 254 27 --2.517200 60.597198 -7.879200 0.601000 0.450300 0 254 27 --2.990300 54.496300 -8.246000 0.608300 0.297700 0 254 27 --2.517200 60.597198 -7.879200 0.601000 0.450300 0 254 27 -0.000000 60.597198 -8.812800 0.661800 0.464200 0 254 27 -0.000000 54.050800 -8.782700 0.682300 0.308600 0 254 27 --0.672300 63.485901 -0.421800 0.426300 0.552800 0 254 27 --1.171400 65.057899 -2.205500 0.482000 0.564400 0 254 27 --1.901400 63.532299 -1.247600 0.451500 0.531500 0 254 27 --1.901400 63.532299 -1.247600 0.451500 0.531500 0 254 27 --1.171400 65.057899 -2.205500 0.482000 0.564400 0 254 27 --1.795600 65.057899 -4.806100 0.538600 0.556700 0 254 27 --2.758700 63.532299 -3.348800 0.499700 0.518800 0 254 27 --2.758700 63.532299 -3.348800 0.499700 0.518800 0 254 27 --1.795600 65.057899 -4.806100 0.538600 0.556700 0 254 27 --3.010600 63.532299 -5.868700 0.554200 0.511900 0 254 27 --3.010600 63.532299 -5.868700 0.554200 0.511900 0 254 27 --1.795600 65.057899 -4.806100 0.538600 0.556700 0 254 27 -0.000000 65.057899 -6.421400 0.589000 0.582100 0 254 27 --1.932100 63.532299 -7.311200 0.591100 0.519300 0 254 27 --1.932100 63.532299 -7.311200 0.591100 0.519300 0 254 27 -0.000000 65.057899 -6.421400 0.589000 0.582100 0 254 27 -0.000000 63.532299 -8.174500 0.634800 0.537700 0 254 27 --1.171400 65.057899 -2.205500 0.482000 0.564400 0 254 27 -0.000000 65.560898 -4.058400 0.523700 0.603400 0 254 27 --1.795600 65.057899 -4.806100 0.538600 0.556700 0 254 27 --1.795600 65.057899 -4.806100 0.538600 0.556700 0 254 27 -0.000000 65.560898 -4.058400 0.523700 0.603400 0 254 27 -0.000000 65.057899 -6.421400 0.589000 0.582100 0 254 27 --1.171400 65.057899 -2.205500 0.466700 0.607600 0 254 27 -1.171400 65.057899 -2.205500 0.482000 0.564300 0 254 27 -0.000000 65.560898 -4.058400 0.523700 0.603300 0 254 27 --0.706900 62.538601 -0.289700 0.409100 0.538600 0 254 27 -0.000000 62.538601 -0.140300 0.398200 0.559200 0 254 27 --0.672300 63.485901 -0.421800 0.426300 0.552800 0 254 27 --2.130500 53.628601 -1.359200 0.416600 0.297300 164 133 56 --1.187300 53.628601 -3.164700 0.369000 0.300300 209 100 64 --1.393700 60.597198 -3.164700 0.380200 0.463500 254 254 254 --2.336800 60.597198 -1.072500 0.434000 0.460800 254 254 254 -8.704300 24.905701 -6.036500 0.967100 0.466200 0 253 27 -7.984800 25.127701 -6.177400 0.966400 0.464600 0 253 27 -7.649900 27.558001 -5.856100 0.993500 0.506600 0 253 27 -8.503900 27.435900 -5.670300 0.976600 0.507100 0 253 27 -6.463600 36.223400 -3.704900 0.962000 0.710700 9 100 160 -5.778000 35.994701 -1.773100 0.922200 0.717000 0 231 44 -7.451900 27.210300 -3.504400 0.930000 0.516400 18 2 248 -8.503900 27.435900 -5.670300 0.976600 0.507100 18 0 253 -5.115000 35.782600 -2.051700 0.916000 0.725700 0 241 37 -6.597900 27.332300 -3.690200 0.913000 0.515500 16 16 234 -7.451900 27.210300 -3.504400 0.930000 0.516400 18 2 248 -5.778000 35.994701 -1.773100 0.922200 0.717000 0 231 44 -5.743400 36.019600 -3.995900 0.971100 0.718900 0 253 27 -6.463600 36.223400 -3.704900 0.962000 0.710700 0 253 27 -8.503900 27.435900 -5.670300 0.976600 0.507100 0 253 27 -7.649900 27.558001 -5.856100 0.993500 0.506600 0 253 27 -7.451900 27.210300 -3.504400 0.930000 0.516400 21 0 248 -6.597900 27.332300 -3.690200 0.913000 0.515500 35 1 237 -7.984800 25.127701 -6.177400 0.966400 0.464600 19 0 253 -8.704300 24.905701 -6.036500 0.967100 0.466200 19 0 253 -7.451900 27.210300 -3.504400 0.930000 0.516400 18 2 248 -8.704300 24.905701 -6.036500 0.967100 0.466200 18 0 253 -8.503900 27.435900 -5.670300 0.976600 0.507100 18 0 253 -6.463600 36.223400 -3.704900 0.962000 0.710700 254 68 73 -5.743400 36.019600 -3.995900 0.971100 0.718900 254 68 73 -5.115000 35.782600 -2.051700 0.916000 0.725700 254 68 73 -5.778000 35.994701 -1.773100 0.922200 0.717000 254 68 73 -4.513000 55.007702 -5.909800 0.935300 0.759300 0 253 27 -4.291100 55.098900 -5.871800 0.932300 0.755300 0 253 27 -4.207800 55.799599 -6.651700 0.967500 0.768900 0 253 27 -4.871900 55.799599 -6.765400 0.957200 0.775300 0 253 27 -2.904000 62.455601 -5.700500 0.954300 0.968000 0 253 27 -2.764700 62.455601 -4.128400 0.909900 0.975800 0 253 27 -4.736600 55.799599 -5.153900 0.919700 0.781300 0 253 27 -4.871900 55.799599 -6.765400 0.957200 0.775300 0 253 27 -2.764700 62.455601 -4.128400 0.909900 0.975800 0 253 27 -4.072400 55.799599 -5.040200 0.904100 0.777700 0 253 27 -4.736600 55.799599 -5.153900 0.919700 0.781300 0 253 27 -2.904000 62.455601 -5.700500 0.954300 0.968000 0 253 27 -4.871900 55.799599 -6.765400 0.957200 0.775300 0 253 27 -4.207800 55.799599 -6.651700 0.967500 0.768900 0 253 27 -4.736600 55.799599 -5.153900 0.919700 0.781300 254 68 73 -4.072400 55.799599 -5.040200 0.904100 0.777700 254 68 73 -4.291100 55.098900 -5.871800 0.932300 0.755300 254 68 73 -4.513000 55.007702 -5.909800 0.935300 0.759300 254 68 73 -4.736600 55.799599 -5.153900 0.919700 0.781300 0 253 27 -4.513000 55.007702 -5.909800 0.935300 0.759300 0 253 27 -4.871900 55.799599 -6.765400 0.957200 0.775300 0 253 27 -4 0 1 2 3 -4 4 5 6 7 -3 8 9 10 -4 11 12 13 14 -4 15 16 17 18 -4 19 20 21 22 -4 23 24 25 26 -4 27 28 29 30 -4 31 32 33 34 -4 35 36 37 38 -4 39 40 41 42 -4 43 44 45 46 -3 47 48 49 -4 50 51 52 53 -4 54 55 56 57 -4 58 59 60 61 -4 62 63 64 65 -4 66 67 68 69 -4 70 71 72 73 -4 74 75 76 77 -3 78 79 80 -4 81 82 83 84 -3 85 86 87 -4 88 89 90 91 -3 92 93 94 -4 95 96 97 98 -4 99 100 101 102 -4 103 104 105 106 -4 107 108 109 110 -4 111 112 113 114 -4 115 116 117 118 -4 119 120 121 122 -4 123 124 125 126 -4 127 128 129 130 -4 131 132 133 134 -4 135 136 137 138 -3 139 140 141 -3 142 143 144 -4 145 146 147 148 -4 149 150 151 152 -4 153 154 155 156 -3 157 158 159 -3 160 161 162 -4 163 164 165 166 -4 167 168 169 170 -4 171 172 173 174 -3 175 176 177 -4 178 179 180 181 -4 182 183 184 185 -3 186 187 188 -3 189 190 191 -4 192 193 194 195 -4 196 197 198 199 -4 200 201 202 203 -4 204 205 206 207 -3 208 209 210 -3 211 212 213 -3 214 215 216 -4 217 218 219 220 -4 221 222 223 224 -3 225 226 227 -4 228 229 230 231 -4 232 233 234 235 -3 236 237 238 -3 239 240 241 -3 242 243 244 -3 245 246 247 -4 248 249 250 251 -4 252 253 254 255 -4 256 257 258 259 -4 260 261 262 263 -4 264 265 266 267 -4 268 269 270 271 -4 272 273 274 275 -4 276 277 278 279 -4 280 281 282 283 -3 284 285 286 -3 287 288 289 -4 290 291 292 293 -4 294 295 296 297 -4 298 299 300 301 -3 302 303 304 -4 305 306 307 308 -4 309 310 311 312 -4 313 314 315 316 -4 317 318 319 320 -4 321 322 323 324 -4 325 326 327 328 -4 329 330 331 332 -4 333 334 335 336 -4 337 338 339 340 -4 341 342 343 344 -4 345 346 347 348 -4 349 350 351 352 -3 353 354 355 -4 356 357 358 359 -4 360 361 362 363 -3 364 365 366 -4 367 368 369 370 -4 371 372 373 374 -3 375 376 377 -4 378 379 380 381 -3 382 383 384 -4 385 386 387 388 -4 389 390 391 392 -3 393 394 395 -4 396 397 398 399 -4 400 401 402 403 -4 404 405 406 407 -4 408 409 410 411 -4 412 413 414 415 -3 416 417 418 -3 419 420 421 -3 422 423 424 -4 425 426 427 428 -4 429 430 431 432 -3 433 434 435 -3 436 437 438 -4 439 440 441 442 -4 443 444 445 446 -3 447 448 449 -3 450 451 452 -4 453 454 455 456 -3 457 458 459 -3 460 461 462 -3 463 464 465 -4 466 467 468 469 -3 470 471 472 -4 473 474 475 476 -4 477 478 479 480 -4 481 482 483 484 -4 485 486 487 488 -4 489 490 491 492 -3 493 494 495 -4 496 497 498 499 -4 500 501 502 503 -4 504 505 506 507 -4 508 509 510 511 -3 512 513 514 -4 515 516 517 518 -4 519 520 521 522 -3 523 524 525 -3 526 527 528 -3 529 530 531 -4 532 533 534 535 -4 536 537 538 539 -4 540 541 542 543 -4 544 545 546 547 -3 548 549 550 -3 551 552 553 -4 554 555 556 557 -3 558 559 560 -4 561 562 563 564 -4 565 566 567 568 -4 569 570 571 572 -3 573 574 575 -4 576 577 578 579 -4 580 581 582 583 -4 584 585 586 587 -4 588 589 590 591 -4 592 593 594 595 -4 596 597 598 599 -4 600 601 602 603 -4 604 605 606 607 -4 608 609 610 611 -3 612 613 614 -4 615 616 617 618 -4 619 620 621 622 -4 623 624 625 626 -4 627 628 629 630 -4 631 632 633 634 -4 635 636 637 638 -4 639 640 641 642 -3 643 644 645 -4 646 647 648 649 -3 650 651 652 -4 653 654 655 656 -3 657 658 659 -4 660 661 662 663 -4 664 665 666 667 -4 668 669 670 671 -4 672 673 674 675 -4 676 677 678 679 -4 680 681 682 683 -4 684 685 686 687 -4 688 689 690 691 -4 692 693 694 695 -4 696 697 698 699 -4 700 701 702 703 -3 704 705 706 -3 707 708 709 -4 710 711 712 713 -4 714 715 716 717 -4 718 719 720 721 -3 722 723 724 -3 725 726 727 -4 728 729 730 731 -4 732 733 734 735 -4 736 737 738 739 -3 740 741 742 -4 743 744 745 746 -4 747 748 749 750 -3 751 752 753 -3 754 755 756 -4 757 758 759 760 -4 761 762 763 764 -4 765 766 767 768 -4 769 770 771 772 -3 773 774 775 -3 776 777 778 -3 779 780 781 -4 782 783 784 785 -4 786 787 788 789 -3 790 791 792 -4 793 794 795 796 -4 797 798 799 800 -3 801 802 803 -3 804 805 806 -3 807 808 809 -3 810 811 812 -4 813 814 815 816 -4 817 818 819 820 -4 821 822 823 824 -4 825 826 827 828 -4 829 830 831 832 -4 833 834 835 836 -4 837 838 839 840 -4 841 842 843 844 -4 845 846 847 848 -3 849 850 851 -3 852 853 854 -4 855 856 857 858 -4 859 860 861 862 -4 863 864 865 866 -3 867 868 869 -4 870 871 872 873 -4 874 875 876 877 -4 878 879 880 881 -4 882 883 884 885 -4 886 887 888 889 -4 890 891 892 893 -4 894 895 896 897 -4 898 899 900 901 -4 902 903 904 905 -4 906 907 908 909 -4 910 911 912 913 -4 914 915 916 917 -3 918 919 920 -4 921 922 923 924 -4 925 926 927 928 -3 929 930 931 -4 932 933 934 935 -4 936 937 938 939 -3 940 941 942 -4 943 944 945 946 -3 947 948 949 -4 950 951 952 953 -4 954 955 956 957 -3 958 959 960 -4 961 962 963 964 -4 965 966 967 968 -4 969 970 971 972 -4 973 974 975 976 -4 977 978 979 980 -3 981 982 983 -3 984 985 986 -3 987 988 989 -4 990 991 992 993 -4 994 995 996 997 -3 998 999 1000 -3 1001 1002 1003 -4 1004 1005 1006 1007 -4 1008 1009 1010 1011 -3 1012 1013 1014 -3 1015 1016 1017 -4 1018 1019 1020 1021 -3 1022 1023 1024 -3 1025 1026 1027 -3 463 1028 464 -4 1029 1030 1031 1032 -3 1033 1034 1035 -4 1036 1037 1038 1039 -4 1040 1041 1042 1043 -4 1044 1045 1046 1047 -4 1048 1049 1050 1051 -4 1052 1053 1054 1055 -3 1056 1057 1058 -4 1059 1060 1061 1062 -4 1063 1064 1065 1066 -4 1067 1068 1069 1070 -4 1071 1072 1073 1074 -3 1075 1076 1077 -4 1078 1079 1080 1081 -4 1082 1083 1084 1085 -3 1086 1087 1088 -3 1089 1090 1091 -4 1092 1093 1094 1095 -4 1096 1097 1098 1099 -4 1100 1101 1102 1103 -3 1104 1105 1106 -3 1107 1108 1109 -4 1110 1111 1112 1113 -4 1114 1115 1116 1117 -4 1118 1119 1120 1121 -4 1122 1123 1124 1125 -3 1126 1127 1128 -4 1129 1130 1131 1132 -4 1133 1134 1135 1136 -4 1137 1138 1139 1140 -4 1141 1142 1143 1144 -4 1145 1146 1147 1148 -4 1149 1150 1151 1152 -3 1153 1154 1155 -4 1156 1157 1158 1159 -3 1160 1161 1162 -4 1163 1164 1165 1166 -3 1167 1168 1169 -3 1170 1171 1172 -3 1173 1174 1175 -4 1176 1177 1178 1179 -3 1180 1181 1182 -3 1183 1184 1185 -4 1186 1187 1188 1189 -4 1190 1191 1192 1193 -4 1194 1195 1196 1197 -4 1198 1199 1200 1201 -3 1202 1203 1204 -4 1205 1206 1207 1208 -4 1209 1210 1211 1212 -4 1213 1214 1215 1216 -4 1217 1218 1219 1220 -4 1221 1222 1223 1224 -4 1225 1226 1227 1228 -3 1229 1230 1231 -4 1232 1233 1234 1235 -3 1236 1237 1238 -4 1239 1240 1241 1242 -3 1243 1244 1245 -3 1246 1247 1248 -3 1249 1250 1251 -3 1252 1253 1254 -3 1255 1256 1257 -4 1258 1259 1260 1261 -4 1262 1263 1264 1265 -4 1266 1267 1268 1269 -4 1270 1271 1272 1273 -4 1274 1275 1276 1277 -4 1278 1279 1280 1281 -3 1282 1283 1284 -4 1285 1286 1287 1288 -4 1289 1290 1291 1292 -4 1293 1294 1295 1296 -3 1297 1298 1299 -3 1300 1301 1302 -4 1303 1304 1305 1306 -3 1307 1308 1309 diff --git a/src/tests/evas/meshes/ply/NoNormal_UVs_NoColors.ply b/src/tests/evas/meshes/ply/NoNormal_UVs_NoColors.ply deleted file mode 100644 index ffa53101bb..0000000000 --- a/src/tests/evas/meshes/ply/NoNormal_UVs_NoColors.ply +++ /dev/null @@ -1,1678 +0,0 @@ -ply -format ascii 1.0 -comment Created by Blender 2.69 (sub 0) - www.blender.org, source file: '' -element vertex 1310 -property float x -property float y -property float z -property float s -property float t -element face 356 -property list uchar uint vertex_indices -end_header --4.649800 14.945700 -8.785600 0.094400 0.185800 --2.020300 14.610600 -8.278800 0.060000 0.185800 --1.712600 0.024900 -9.195700 0.089900 0.023200 --3.252600 0.001600 -8.591000 0.107400 0.025300 --4.649800 14.945700 -8.785600 0.094400 0.185800 --3.252600 0.001600 -8.591000 0.107400 0.025300 --4.089400 2.633000 -5.031300 0.145000 0.057700 --5.308800 13.910900 -3.738700 0.154100 0.185800 --1.553600 3.059500 -4.173500 0.181500 0.058600 --1.766900 13.754900 -2.918700 0.193300 0.185800 --3.061600 3.537800 -3.461700 0.164000 0.067400 --1.553600 3.059500 -4.173500 0.181500 0.058600 --0.626000 0.031700 -8.336200 0.220100 0.017000 --0.971400 14.644800 -6.706400 0.225200 0.185800 --1.766900 13.754900 -2.918700 0.193300 0.185800 --5.495700 46.043098 -6.732400 0.139900 0.788400 --2.827600 38.171799 -8.088300 0.114500 0.661600 --5.919200 37.619099 -4.570300 0.183200 0.661600 --6.029500 46.188801 -3.956000 0.183300 0.792100 --4.685700 36.664101 -1.616400 0.239100 0.661600 --4.298500 47.001099 -0.058900 0.249300 0.802400 --6.029500 46.188801 -3.956000 0.183300 0.792100 --5.919200 37.619099 -4.570300 0.183200 0.661600 --6.775800 50.206501 -7.534500 0.134100 0.852600 --7.252500 54.524502 -7.615000 0.126100 0.913200 -0.000000 53.738098 -8.986800 0.028100 0.877800 -0.000000 50.037800 -9.413700 0.041800 0.827300 --7.252500 54.524502 -7.615000 0.812300 0.981700 --8.747800 53.770199 -7.353300 0.807700 0.944900 --8.184300 53.108700 -3.320400 0.746000 0.944900 --6.624100 53.529800 -2.653700 0.746000 0.986600 --9.827700 52.989700 -7.188500 0.805500 0.922700 --14.989100 50.565300 -7.297200 0.805300 0.834400 --15.636800 49.715099 -4.015700 0.746000 0.809400 --9.508400 52.403099 -3.672700 0.746000 0.922700 -0.000000 37.009800 0.550700 0.310700 0.661600 -0.000000 47.287498 1.094200 0.310700 0.805700 --4.298500 47.001099 -0.058900 0.249300 0.802400 --4.685700 36.664101 -1.616400 0.239100 0.661600 -0.000000 53.738098 -8.986800 0.028100 0.877800 --7.252500 54.524502 -7.615000 0.126100 0.913200 --2.321200 55.471001 -5.570800 0.053700 0.941000 -0.000000 55.950600 -7.250100 0.022400 0.916300 --6.624100 53.529800 -2.653700 0.210200 0.900400 --7.813100 49.342701 -3.886900 0.181000 0.844200 --6.029500 46.188801 -3.956000 0.183300 0.792100 --3.773800 51.093601 -1.034300 0.256600 0.864400 --6.029500 46.188801 -3.956000 0.183300 0.792100 --4.298500 47.001099 -0.058900 0.249300 0.802400 --3.773800 51.093601 -1.034300 0.256600 0.864400 -0.000000 50.880199 0.110000 0.310700 0.860500 --3.773800 51.093601 -1.034300 0.256600 0.864400 --4.298500 47.001099 -0.058900 0.249300 0.802400 -0.000000 47.287498 1.094200 0.310700 0.805700 --16.136200 50.023998 -7.546200 0.808600 0.809400 --14.989100 50.565300 -7.297200 0.805300 0.834400 --13.779500 47.417198 -7.715300 0.879500 0.834400 --14.885000 46.974701 -7.946000 0.879500 0.809400 --13.779500 47.417198 -7.715300 0.626900 0.829400 --8.756500 49.321098 -7.632900 0.626900 0.922700 --8.927200 49.128502 -4.128200 0.688900 0.922700 --14.977100 45.689201 -4.821000 0.680000 0.809400 --17.208200 49.477699 -7.512200 0.810800 0.788400 --22.585199 48.327702 -7.594400 0.812700 0.705100 --22.348700 46.932201 -2.822400 0.746000 0.680200 --16.810101 49.139900 -3.928800 0.746000 0.788400 --21.936399 43.055199 -3.733600 0.691800 0.680200 --16.192200 44.960400 -4.877100 0.677700 0.788400 --16.810101 49.139900 -3.928800 0.746000 0.788400 --22.348700 46.932201 -2.822400 0.746000 0.680200 --22.105101 44.119598 -7.074000 0.862200 0.680200 --23.337700 47.268200 -6.945000 0.809900 0.680200 --22.585199 48.327702 -7.594400 0.812700 0.705100 --21.061199 44.183601 -7.611200 0.879500 0.705100 --15.884600 46.520500 -7.855800 0.626900 0.788400 --16.192200 44.960400 -4.877100 0.677700 0.788400 --21.936399 43.055199 -3.733600 0.691800 0.680200 --21.061199 44.183601 -7.611200 0.626900 0.699700 --5.598500 31.822901 -1.405400 0.185400 0.436500 --7.174300 32.815300 -5.168000 0.136400 0.440500 --7.453900 29.910801 -4.782000 0.143900 0.408700 --4.970000 33.082802 -8.871300 0.086900 0.436600 --5.595300 29.761600 -8.491100 0.097300 0.399700 --7.453900 29.910801 -4.782000 0.143900 0.408700 --7.174300 32.815300 -5.168000 0.136400 0.440500 --6.827700 20.858999 -3.051400 0.166500 0.297500 --5.426000 21.341299 -8.131100 0.106600 0.297500 --6.194700 19.576300 -3.492500 0.163400 0.285600 --0.835600 22.853901 -8.203000 0.053300 0.313700 --0.899900 21.410400 -8.342700 0.054900 0.297500 --5.426000 21.341299 -8.131100 0.106600 0.297500 --5.317800 22.936800 -8.014600 0.105500 0.313700 --0.899900 21.410400 -8.342700 0.307200 0.297500 --1.957400 20.620800 -1.217700 0.224300 0.297500 --1.853000 19.164200 -1.385300 0.221600 0.281000 --6.194700 19.576300 -3.492500 0.163400 0.285600 --1.853000 19.164200 -1.385300 0.221600 0.281000 --1.957400 20.620800 -1.217700 0.224300 0.297500 --6.827700 20.858999 -3.051400 0.166500 0.297500 --5.259600 15.490400 -9.599400 0.090700 0.228600 --5.426000 21.341299 -8.131100 0.106600 0.297500 --0.899900 21.410400 -8.342700 0.054900 0.297500 --0.294400 16.169500 -7.962700 0.039600 0.241800 --0.294400 16.169500 -7.962700 0.282300 0.223700 --0.899900 21.410400 -8.342700 0.307200 0.297500 --1.853000 19.164200 -1.385300 0.221600 0.281000 --1.221800 14.450400 -2.004100 0.220300 0.236900 --1.853000 19.164200 -1.385300 0.221600 0.281000 --6.194700 19.576300 -3.492500 0.163400 0.285600 --6.498700 14.643000 -4.000600 0.151700 0.232900 --1.221800 14.450400 -2.004100 0.220300 0.236900 --6.498700 14.643000 -4.000600 0.151700 0.232900 --6.194700 19.576300 -3.492500 0.163400 0.285600 --5.426000 21.341299 -8.131100 0.106600 0.297500 --5.259600 15.490400 -9.599400 0.090700 0.228600 --7.813100 49.342701 -3.886900 0.181000 0.844200 --6.775800 50.206501 -7.534500 0.134100 0.852600 --5.495700 46.043098 -6.732400 0.139900 0.788400 --6.029500 46.188801 -3.956000 0.183300 0.792100 --8.756500 49.321098 -7.632900 0.626900 0.922700 --6.775800 50.206501 -7.534500 0.626900 0.944900 --7.813100 49.342701 -3.886900 0.686800 0.944900 --8.927200 49.128502 -4.128200 0.688900 0.922700 --5.495700 46.043098 -6.732400 0.139900 0.788400 --6.775800 50.206501 -7.534500 0.134100 0.852600 -0.000000 50.037800 -9.413700 0.041800 0.827300 -0.000000 45.235802 -8.516300 0.061400 0.762800 --3.773800 51.093601 -1.034300 0.256600 0.864400 -0.000000 50.880199 0.110000 0.310700 0.860500 -0.000000 54.522099 -2.187600 0.310700 0.919600 --1.435700 55.057400 -2.884500 0.285800 0.931400 --0.163800 60.672798 0.405300 0.529100 0.200900 --0.596000 60.268700 -0.255900 0.502600 0.185300 --0.605400 59.453602 0.006800 0.508800 0.156900 --0.226300 59.631802 0.717000 0.529800 0.167300 -0.000000 59.375900 0.272700 0.533800 0.153800 --0.605400 59.453602 0.006800 0.508800 0.156900 --0.793500 58.611801 -0.022400 0.506200 0.129800 -0.000000 58.735298 0.237300 0.533800 0.134400 --1.340700 61.343498 -1.024900 0.467800 0.231800 --2.209500 61.230499 -1.515000 0.430900 0.227000 --2.225300 60.301201 -1.334400 0.434400 0.187400 --0.474100 61.294899 -0.607800 0.499900 0.227200 --0.179900 61.274700 0.058500 0.525600 0.223900 --0.785400 61.539799 -0.048800 0.505500 0.247600 --0.163800 60.672798 0.405300 0.529100 0.200900 --0.179900 61.274700 0.058500 0.525600 0.223900 --0.474100 61.294899 -0.607800 0.499900 0.227200 --0.596000 60.268700 -0.255900 0.502600 0.185300 --0.785400 61.539799 -0.048800 0.505500 0.247600 -0.000000 62.775902 -0.355700 0.533900 0.286800 --1.901400 62.898899 -1.262500 0.451600 0.287500 --1.792100 61.563202 -0.648200 0.464300 0.250800 --1.901400 62.898899 -1.262500 0.451600 0.287500 --2.505800 61.413601 -3.333900 0.367200 0.240300 --2.209500 61.230499 -1.515000 0.430900 0.227000 --1.792100 61.563202 -0.648200 0.464300 0.250800 --2.071800 58.080299 -1.837600 0.435700 0.090000 --2.043500 58.694401 -1.722000 0.434700 0.119000 --2.361600 58.652599 -3.405400 0.376100 0.111600 --2.361600 58.652599 -3.405400 0.376100 0.111600 --1.480400 57.287800 -3.167400 0.388000 0.054100 --2.071800 58.080299 -1.837600 0.435700 0.090000 --2.361600 58.652599 -3.405400 0.376100 0.111600 --2.043500 58.694401 -1.722000 0.434700 0.119000 --2.225300 60.301201 -1.334400 0.434400 0.187400 --2.484800 60.667999 -2.078300 0.409600 0.193000 --0.596000 60.268700 -0.255900 0.502600 0.185300 --2.225300 60.301201 -1.334400 0.434400 0.187400 --0.793500 58.611801 -0.022400 0.506200 0.129800 --0.605400 59.453602 0.006800 0.508800 0.156900 --0.793500 58.611801 -0.022400 0.506200 0.129800 --0.860300 57.339199 -0.345300 0.507000 0.087800 -0.000000 57.320400 0.190300 0.533800 0.095300 -0.000000 58.735298 0.237300 0.533800 0.134400 --2.361600 58.652599 -3.405400 0.376100 0.111600 --1.507500 57.978802 -4.806700 0.327200 0.071700 --1.480400 57.287800 -3.167400 0.388000 0.054100 --1.480400 57.287800 -3.167400 0.293600 0.962800 --1.435700 55.057400 -2.884500 0.285800 0.931400 -0.000000 54.522099 -2.187600 0.310700 0.919600 --0.509500 56.862801 -2.081200 0.307800 0.953500 --1.435700 55.057400 -2.884500 0.285800 0.931400 --1.480400 57.287800 -3.167400 0.293600 0.962800 --1.507500 57.978802 -4.806700 0.269900 0.982500 --2.321200 55.471001 -5.570800 0.259500 0.968000 --5.259600 15.490400 -9.599400 0.090700 0.228600 --0.294400 16.169500 -7.962700 0.039600 0.241800 --2.020300 14.610600 -8.278800 0.063600 0.221000 --0.294400 16.169500 -7.962700 0.282300 0.223700 --1.221800 14.450400 -2.004100 0.220300 0.236900 --0.971400 14.644800 -6.706400 0.253200 0.212300 --5.308800 13.910900 -3.738700 0.168700 0.220700 --1.766900 13.754900 -2.918700 0.216900 0.223600 --1.221800 14.450400 -2.004100 0.220300 0.236900 --6.498700 14.643000 -4.000600 0.151700 0.232900 --4.649800 14.945700 -8.785600 0.103500 0.222700 --5.308800 13.910900 -3.738700 0.168700 0.220700 --6.498700 14.643000 -4.000600 0.151700 0.232900 --5.259600 15.490400 -9.599400 0.090700 0.228600 --1.957400 20.620800 -1.217700 0.224300 0.297500 --0.899900 21.410400 -8.342700 0.307200 0.297500 --0.835600 22.853901 -8.203000 0.306600 0.313700 --2.189200 21.987900 -1.481800 0.225500 0.313700 --7.174300 32.815300 -5.168000 0.136400 0.440500 --6.542300 35.480598 -4.902800 0.133600 0.471500 --5.283200 35.952900 -7.814600 0.094100 0.470900 --4.970000 33.082802 -8.871300 0.086900 0.436600 --5.598500 31.822901 -1.405400 0.185400 0.436500 --6.542300 35.480598 -4.902800 0.133600 0.471500 --7.174300 32.815300 -5.168000 0.136400 0.440500 --4.685700 36.664101 -1.616400 0.239100 0.661600 --5.598500 31.822901 -1.405400 0.231500 0.582200 --3.798500 31.552500 -0.386300 0.257600 0.582200 --2.225300 60.301201 -1.334400 0.434400 0.187400 --2.209500 61.230499 -1.515000 0.430900 0.227000 --2.484800 60.667999 -2.078300 0.409600 0.193000 --8.927200 49.128502 -4.128200 0.688900 0.922700 --7.813100 49.342701 -3.886900 0.686800 0.944900 --8.184300 53.108700 -3.320400 0.746000 0.944900 --9.508400 52.403099 -3.672700 0.746000 0.922700 --8.184300 53.108700 -3.320400 0.746000 0.944900 --8.747800 53.770199 -7.353300 0.807700 0.944900 --9.827700 52.989700 -7.188500 0.805500 0.922700 --9.508400 52.403099 -3.672700 0.746000 0.922700 --8.747800 53.770199 -7.353300 0.807700 0.944900 --7.252500 54.524502 -7.615000 0.812300 0.981700 --6.775800 50.206501 -7.534500 0.879500 0.944900 --8.927200 49.128502 -4.128200 0.688900 0.922700 --9.508400 52.403099 -3.672700 0.746000 0.922700 --15.636800 49.715099 -4.015700 0.746000 0.809400 --14.977100 45.689201 -4.821000 0.680000 0.809400 --6.624100 53.529800 -2.653700 0.210200 0.900400 --3.773800 51.093601 -1.034300 0.256600 0.864400 --1.435700 55.057400 -2.884500 0.285800 0.931400 --7.252500 54.524502 -7.615000 0.180400 0.964800 --2.321200 55.471001 -5.570800 0.259500 0.968000 --7.252500 54.524502 -7.615000 0.180400 0.964800 --1.435700 55.057400 -2.884500 0.285800 0.931400 --2.209500 61.230499 -1.515000 0.430900 0.227000 --2.505800 61.413601 -3.333900 0.362700 0.212700 --2.484800 60.667999 -2.078300 0.409600 0.193000 --2.484800 60.667999 -2.078300 0.409600 0.193000 --2.505800 61.413601 -3.333900 0.362700 0.212700 --2.361600 58.652599 -3.405400 0.376100 0.111600 --2.209500 61.230499 -1.515000 0.430900 0.227000 --1.340700 61.343498 -1.024900 0.467800 0.231800 --1.792100 61.563202 -0.648200 0.464300 0.250800 --3.061600 3.537800 -3.461700 0.290200 0.071700 --3.735600 1.816900 0.228400 0.290200 0.030700 --1.568700 1.981700 -0.627100 0.308400 0.040400 --1.553600 3.059500 -4.173500 0.310400 0.073900 --0.626000 0.031700 -8.336200 0.345300 0.097200 --1.553600 3.059500 -4.173500 0.310400 0.073900 --1.568700 1.981700 -0.627100 0.308400 0.040400 --1.825200 -0.024100 0.601200 0.313500 0.023800 --1.825200 -0.024100 0.601200 0.748300 0.055100 --3.769300 -0.009000 1.132900 0.765800 0.040900 --1.712600 0.024900 -9.195700 0.765100 0.147100 --0.626000 0.031700 -8.336200 0.751000 0.138000 --1.712600 0.024900 -9.195700 0.089900 0.023200 --2.020300 14.610600 -8.278800 0.060000 0.185800 --0.971400 14.644800 -6.706400 0.025900 0.185800 --0.626000 0.031700 -8.336200 0.075600 0.021500 --1.568700 1.981700 -0.627100 0.308400 0.040400 --3.735600 1.816900 0.228400 0.290200 0.030700 --3.769300 -0.009000 1.132900 0.289700 0.012400 --1.825200 -0.024100 0.601200 0.313500 0.023800 --4.089400 2.633000 -5.031300 0.275500 0.071900 --3.252600 0.001600 -8.591000 0.238500 0.103000 --5.176800 -0.025000 -0.598300 0.266200 0.023600 --5.390300 1.568200 -1.670300 0.274000 0.039600 --3.769300 -0.009000 1.132900 0.289700 0.012400 --3.735600 1.816900 0.228400 0.290200 0.030700 --5.390300 1.568200 -1.670300 0.274000 0.039600 --5.176800 -0.025000 -0.598300 0.266200 0.023600 --5.390300 1.568200 -1.670300 0.274000 0.039600 --3.735600 1.816900 0.228400 0.290200 0.030700 --3.061600 3.537800 -3.461700 0.290200 0.071700 --4.089400 2.633000 -5.031300 0.275500 0.071900 --3.061600 3.537800 -3.461700 0.164000 0.067400 --1.766900 13.754900 -2.918700 0.193300 0.185800 --5.308800 13.910900 -3.738700 0.154100 0.185800 --4.089400 2.633000 -5.031300 0.145000 0.057700 --2.020300 14.610600 -8.278800 0.063600 0.221000 --4.649800 14.945700 -8.785600 0.103500 0.222700 --5.259600 15.490400 -9.599400 0.090700 0.228600 --2.020300 14.610600 -8.278800 0.063600 0.221000 --0.294400 16.169500 -7.962700 0.039600 0.241800 --0.971400 14.644800 -6.706400 0.028400 0.216500 --5.426000 21.341299 -8.131100 0.106600 0.297500 --6.827700 20.858999 -3.051400 0.166500 0.297500 --6.824000 22.193899 -3.254300 0.165700 0.313700 --5.317800 22.936800 -8.014600 0.105500 0.313700 --0.845100 29.891001 -9.491500 0.041700 0.395800 --0.835600 22.853901 -8.203000 0.053300 0.313700 --5.317800 22.936800 -8.014600 0.105500 0.313700 --5.595300 29.761600 -8.491100 0.097300 0.399700 --1.957400 20.620800 -1.217700 0.224300 0.297500 --2.189200 21.987900 -1.481800 0.225500 0.313700 --6.824000 22.193899 -3.254300 0.165700 0.313700 --6.827700 20.858999 -3.051400 0.166500 0.297500 --0.605400 59.453602 0.006800 0.508800 0.156900 -0.000000 59.375900 0.272700 0.533800 0.153800 --0.226300 59.631802 0.717000 0.529800 0.167300 --21.936399 43.055199 -3.733600 0.691800 0.680200 --22.348700 46.932201 -2.822400 0.746000 0.680200 --23.323000 46.228001 -3.425200 0.746000 0.661900 --23.265499 44.290199 -3.614200 0.710900 0.661900 --22.105101 44.119598 -7.074000 0.862200 0.680200 --23.273100 44.479099 -6.170500 0.835600 0.661900 --23.881300 46.267799 -5.995500 0.800900 0.661900 --23.337700 47.268200 -6.945000 0.809900 0.680200 --22.348700 46.932201 -2.822400 0.746000 0.680200 --23.337700 47.268200 -6.945000 0.809900 0.680200 --23.881300 46.267799 -5.995500 0.800900 0.661900 --23.323000 46.228001 -3.425200 0.746000 0.661900 --21.936399 43.055199 -3.733600 0.691800 0.680200 --23.265499 44.290199 -3.614200 0.710900 0.661900 --23.273100 44.479099 -6.170500 0.665900 0.661900 --22.105101 44.119598 -7.074000 0.641700 0.680200 --23.323000 46.228001 -3.425200 0.746000 0.661900 --24.935400 45.742901 -3.288800 0.746000 0.630500 --24.446100 44.099098 -3.039500 0.723200 0.630500 --23.265499 44.290199 -3.614200 0.710900 0.661900 --23.273100 44.479099 -6.170500 0.835600 0.661900 --25.718901 44.407902 -5.989100 0.812100 0.630500 --25.982700 45.641201 -5.974700 0.796200 0.630500 --23.881300 46.267799 -5.995500 0.800900 0.661900 --23.881300 46.267799 -5.995500 0.800900 0.661900 --25.982700 45.641201 -5.974700 0.796200 0.630500 --24.935400 45.742901 -3.288800 0.746000 0.630500 --23.323000 46.228001 -3.425200 0.746000 0.661900 --23.265499 44.290199 -3.614200 0.710900 0.661900 --24.446100 44.099098 -3.039500 0.723200 0.630500 --25.718901 44.407902 -5.989100 0.677100 0.630500 --23.273100 44.479099 -6.170500 0.665900 0.661900 --3.798500 31.552500 -0.386300 0.257600 0.582200 -0.000000 31.552500 0.128500 0.310700 0.582200 -0.000000 37.009800 0.550700 0.310700 0.661600 --4.685700 36.664101 -1.616400 0.239100 0.661600 --27.058001 43.733101 -1.471100 0.783900 0.527900 --28.100901 44.177299 -2.470000 0.756100 0.537200 --27.637899 42.321201 -1.984400 0.780200 0.502700 --26.775499 43.007000 -1.492900 0.799700 0.523000 --27.102699 45.320202 -5.735100 0.706300 0.587600 --25.982700 45.641201 -5.974700 0.701400 0.609900 --25.718901 44.407902 -5.989100 0.674700 0.592000 --26.246300 42.901402 -5.383600 0.663100 0.553800 --24.935400 45.742901 -3.288800 0.774000 0.616500 --25.982700 45.641201 -5.974700 0.701400 0.609900 --27.102699 45.320202 -5.735100 0.706300 0.587600 --26.753901 45.398300 -2.858600 0.766000 0.574200 --24.446100 44.099098 -3.039500 0.815000 0.599300 --26.246300 42.901402 -5.383600 0.880100 0.569900 --25.718901 44.407902 -5.989100 0.885900 0.607200 --28.380600 42.330502 -3.056600 0.741600 0.498200 --27.637899 42.321201 -1.984400 0.780200 0.502700 --28.100901 44.177299 -2.470000 0.756100 0.537200 --28.697901 44.238201 -3.477500 0.737900 0.538900 --28.380600 42.330502 -3.056600 0.741600 0.498200 --28.697901 44.238201 -3.477500 0.737900 0.538900 --28.543800 44.178001 -4.651400 0.718600 0.545700 --28.292801 42.543098 -4.446800 0.704200 0.514300 --26.753901 45.398300 -2.858600 0.766000 0.574200 --28.697901 44.238201 -3.477500 0.737900 0.538900 --28.100901 44.177299 -2.470000 0.756100 0.537200 --24.935400 45.742901 -3.288800 0.774000 0.616500 --26.117701 44.487900 -2.198700 0.788200 0.565100 --25.587200 43.557701 -2.038700 0.806300 0.556900 --24.446100 44.099098 -3.039500 0.815000 0.599300 --24.446100 44.099098 -3.039500 0.815000 0.599300 --25.587200 43.557701 -2.038700 0.806300 0.556900 --25.491899 42.827301 -2.370100 0.813300 0.554500 --26.246300 42.901402 -5.383600 0.880100 0.569900 --26.753901 45.398300 -2.858600 0.766000 0.574200 --26.117701 44.487900 -2.198700 0.788200 0.565100 --24.935400 45.742901 -3.288800 0.774000 0.616500 -0.000000 31.552500 0.128500 0.310700 0.582200 --3.798500 31.552500 -0.386300 0.257600 0.582200 --3.463700 23.872801 -0.356700 0.261000 0.472800 -0.000000 24.132099 -0.356700 0.310700 0.472800 --2.225300 60.301201 -1.334400 0.434400 0.187400 --2.043500 58.694401 -1.722000 0.434700 0.119000 --0.793500 58.611801 -0.022400 0.506200 0.129800 --0.793500 58.611801 -0.022400 0.506200 0.129800 --2.043500 58.694401 -1.722000 0.434700 0.119000 --2.071800 58.080299 -1.837600 0.435700 0.090000 --0.860300 57.339199 -0.345300 0.507000 0.087800 --2.071800 58.080299 -1.837600 0.435700 0.090000 --1.480400 57.287800 -3.167400 0.435700 0.022900 --0.509500 56.862801 -2.081200 0.497100 0.026700 --0.860300 57.339199 -0.345300 0.507000 0.087800 --0.179900 61.274700 0.058500 0.525600 0.223900 -0.000000 61.912998 -0.048000 0.533800 0.254400 --0.785400 61.539799 -0.048800 0.505500 0.247600 --15.884600 46.520500 -7.855800 0.879500 0.788400 --17.208200 49.477699 -7.512200 0.810800 0.788400 --16.136200 50.023998 -7.546200 0.808600 0.809400 --14.885000 46.974701 -7.946000 0.879500 0.809400 --15.636800 49.715099 -4.015700 0.746000 0.809400 --16.136200 50.023998 -7.546200 0.808600 0.809400 --17.208200 49.477699 -7.512200 0.810800 0.788400 --16.810101 49.139900 -3.928800 0.746000 0.788400 --16.192200 44.960400 -4.877100 0.677700 0.788400 --15.884600 46.520500 -7.855800 0.626900 0.788400 --14.885000 46.974701 -7.946000 0.626900 0.809400 --14.977100 45.689201 -4.821000 0.680000 0.809400 --16.810101 49.139900 -3.928800 0.746000 0.788400 --16.192200 44.960400 -4.877100 0.677700 0.788400 --14.977100 45.689201 -4.821000 0.680000 0.809400 --15.636800 49.715099 -4.015700 0.746000 0.809400 --13.779500 47.417198 -7.715300 0.879500 0.834400 --14.989100 50.565300 -7.297200 0.805300 0.834400 --9.827700 52.989700 -7.188500 0.805500 0.922700 --8.756500 49.321098 -7.632900 0.879500 0.922700 --15.636800 49.715099 -4.015700 0.746000 0.809400 --14.989100 50.565300 -7.297200 0.805300 0.834400 --16.136200 50.023998 -7.546200 0.808600 0.809400 --13.779500 47.417198 -7.715300 0.626900 0.829400 --14.977100 45.689201 -4.821000 0.680000 0.809400 --14.885000 46.974701 -7.946000 0.626900 0.809400 --0.971400 14.644800 -6.706400 0.253200 0.212300 --1.221800 14.450400 -2.004100 0.220300 0.236900 --1.766900 13.754900 -2.918700 0.216900 0.223600 --26.117701 44.487900 -2.198700 0.788200 0.565100 --27.058001 43.733101 -1.471100 0.783900 0.527900 --26.775499 43.007000 -1.492900 0.799700 0.523000 --25.587200 43.557701 -2.038700 0.806300 0.556900 --25.587200 43.557701 -2.038700 0.806300 0.556900 --26.775499 43.007000 -1.492900 0.799700 0.523000 --27.637899 42.321201 -1.984400 0.816200 0.507300 --25.491899 42.827301 -2.370100 0.813300 0.554500 --26.117701 44.487900 -2.198700 0.788200 0.565100 --28.100901 44.177299 -2.470000 0.756100 0.537200 --27.058001 43.733101 -1.471100 0.783900 0.527900 --8.184300 53.108700 -3.320400 0.746000 0.944900 --7.813100 49.342701 -3.886900 0.686800 0.944900 --6.624100 53.529800 -2.653700 0.746000 0.986600 --8.747800 53.770199 -7.353300 0.807700 0.944900 --6.775800 50.206501 -7.534500 0.879500 0.944900 --8.756500 49.321098 -7.632900 0.879500 0.922700 --9.827700 52.989700 -7.188500 0.805500 0.922700 --28.543800 44.178001 -4.651400 0.718600 0.545700 --28.697901 44.238201 -3.477500 0.737900 0.538900 --26.753901 45.398300 -2.858600 0.766000 0.574200 --27.102699 45.320202 -5.735100 0.706300 0.587600 --26.246300 42.901402 -5.383600 0.880100 0.569900 --28.380600 42.330502 -3.056600 0.853500 0.507000 --28.292801 42.543098 -4.446800 0.879400 0.523100 --28.100901 44.177299 -2.470000 0.756100 0.537200 --26.117701 44.487900 -2.198700 0.788200 0.565100 --26.753901 45.398300 -2.858600 0.766000 0.574200 --1.712600 0.024900 -9.195700 0.765100 0.147100 --3.769300 -0.009000 1.132900 0.765800 0.040900 --5.176800 -0.025000 -0.598300 0.783900 0.050100 --3.252600 0.001600 -8.591000 0.777900 0.139800 -0.000000 61.912998 -0.048000 0.533800 0.254400 -0.000000 62.775902 -0.355700 0.533900 0.286800 --0.785400 61.539799 -0.048800 0.505500 0.247600 --0.340300 31.400700 -9.922000 0.348900 0.396000 --0.425600 30.069099 -1.503600 0.251300 0.411900 --0.845100 29.891001 -9.491500 0.339400 0.379800 -0.000000 54.522099 -2.187600 0.310700 0.919600 -0.000000 56.862801 -2.081200 0.310500 0.953100 --0.509500 56.862801 -2.081200 0.307800 0.953500 --0.509500 56.862801 -2.081200 0.497100 0.026700 -0.000000 56.862801 -2.081200 0.533800 0.019000 -0.000000 57.320400 0.190300 0.533800 0.095300 --0.860300 57.339199 -0.345300 0.507000 0.087800 --5.598500 31.822901 -1.405400 0.185400 0.436500 --7.453900 29.910801 -4.782000 0.143900 0.408700 --6.824000 22.193899 -3.254300 0.165700 0.313700 --6.824000 22.193899 -3.254300 0.165700 0.313700 --7.453900 29.910801 -4.782000 0.143900 0.408700 --5.595300 29.761600 -8.491100 0.097300 0.399700 --5.317800 22.936800 -8.014600 0.105500 0.313700 --3.798500 31.552500 -0.386300 0.210900 0.433400 --5.598500 31.822901 -1.405400 0.185400 0.436500 --6.824000 22.193899 -3.254300 0.165700 0.313700 --2.189200 21.987900 -1.481800 0.225500 0.313700 --0.340300 31.400700 -9.922000 0.033600 0.413900 --0.845100 29.891001 -9.491500 0.041700 0.395800 --5.595300 29.761600 -8.491100 0.097300 0.399700 --4.970000 33.082802 -8.871300 0.086900 0.436600 --0.835600 22.853901 -8.203000 0.306600 0.313700 --0.845100 29.891001 -9.491500 0.339400 0.379800 --0.425600 30.069099 -1.503600 0.251300 0.411900 --2.189200 21.987900 -1.481800 0.225500 0.313700 --2.162800 35.743500 -9.599900 0.052600 0.465300 --0.340300 31.400700 -9.922000 0.033600 0.413900 --4.970000 33.082802 -8.871300 0.086900 0.436600 --5.283200 35.952900 -7.814600 0.094100 0.470900 --5.283200 35.952900 -7.814600 0.142000 0.631800 --6.542300 35.480598 -4.902800 0.182300 0.631800 --5.919200 37.619099 -4.570300 0.183200 0.661600 --5.919200 37.619099 -4.570300 0.183200 0.661600 --6.542300 35.480598 -4.902800 0.182300 0.631800 --5.598500 31.822901 -1.405400 0.231500 0.582200 --4.685700 36.664101 -1.616400 0.239100 0.661600 --0.474100 61.294899 -0.607800 0.499900 0.227200 --1.340700 61.343498 -1.024900 0.467800 0.231800 --2.225300 60.301201 -1.334400 0.434400 0.187400 --0.596000 60.268700 -0.255900 0.502600 0.185300 --1.340700 61.343498 -1.024900 0.467800 0.231800 --0.474100 61.294899 -0.607800 0.499900 0.227200 --0.785400 61.539799 -0.048800 0.505500 0.247600 --1.792100 61.563202 -0.648200 0.464300 0.250800 -0.000000 45.235802 -8.516300 0.061400 0.762800 -0.000000 38.221600 -8.073300 0.073200 0.661600 --2.827600 38.171799 -8.088300 0.114500 0.661600 --5.495700 46.043098 -6.732400 0.139900 0.788400 --0.425600 30.069099 -1.503600 0.251300 0.411900 --3.798500 31.552500 -0.386300 0.210900 0.433400 --2.189200 21.987900 -1.481800 0.225500 0.313700 -0.000000 31.547001 -9.939100 0.349900 0.400200 -0.000000 30.215401 -1.522000 0.252400 0.417000 --0.425600 30.069099 -1.503600 0.251300 0.411900 --0.340300 31.400700 -9.922000 0.348900 0.396000 --21.061199 44.183601 -7.611200 0.879500 0.705100 --22.585199 48.327702 -7.594400 0.812700 0.705100 --17.208200 49.477699 -7.512200 0.810800 0.788400 --15.884600 46.520500 -7.855800 0.879500 0.788400 --22.348700 46.932201 -2.822400 0.746000 0.680200 --22.585199 48.327702 -7.594400 0.812700 0.705100 --23.337700 47.268200 -6.945000 0.809900 0.680200 --21.061199 44.183601 -7.611200 0.626900 0.699700 --21.936399 43.055199 -3.733600 0.691800 0.680200 --22.105101 44.119598 -7.074000 0.641700 0.680200 -0.000000 59.375900 0.272700 0.533800 0.153800 -0.226300 59.631802 0.717000 0.537800 0.167300 --0.226300 59.631802 0.717000 0.529800 0.167300 --0.163800 60.672798 0.405300 0.529100 0.200900 --0.226300 59.631802 0.717000 0.529800 0.167300 -0.226300 59.631802 0.717000 0.537800 0.167300 -0.163800 60.672798 0.405300 0.538500 0.200900 --0.340300 31.400700 -9.922000 0.033600 0.413900 --2.162800 35.743500 -9.599900 0.052600 0.465300 -0.000000 35.795200 -9.599900 0.027500 0.464800 -0.000000 31.547001 -9.939100 0.029600 0.415400 --5.919200 37.619099 -4.570300 0.183200 0.661600 --2.827600 38.171799 -8.088300 0.114500 0.661600 --2.162800 35.743500 -9.599900 0.096500 0.631800 --5.283200 35.952900 -7.814600 0.142000 0.631800 --28.543800 44.178001 -4.651400 0.718600 0.545700 --27.102699 45.320202 -5.735100 0.706300 0.587600 --26.246300 42.901402 -5.383600 0.663100 0.553800 --28.292801 42.543098 -4.446800 0.704200 0.514300 --25.491899 42.827301 -2.370100 0.813300 0.554500 --27.637899 42.321201 -1.984400 0.816200 0.507300 --28.380600 42.330502 -3.056600 0.853500 0.507000 --26.246300 42.901402 -5.383600 0.880100 0.569900 --25.491899 42.827301 -2.370100 0.813300 0.554500 --28.380600 42.330502 -3.056600 0.853500 0.507000 --0.179900 61.274700 0.058500 0.525600 0.223900 --0.163800 60.672798 0.405300 0.529100 0.200900 -0.163800 60.672798 0.405300 0.538500 0.200900 -0.179900 61.274700 0.058500 0.542100 0.223900 -0.000000 61.912998 -0.048000 0.533800 0.254400 --0.179900 61.274700 0.058500 0.525600 0.223900 -0.179900 61.274700 0.058500 0.542100 0.223900 --2.162800 35.743500 -9.599900 0.096500 0.631800 --2.827600 38.171799 -8.088300 0.114500 0.661600 -0.000000 38.221600 -8.073300 0.073200 0.661600 -0.000000 35.795200 -9.599900 0.068100 0.631800 -4.620900 14.945700 -8.516100 0.912200 0.175600 -3.252600 0.001600 -8.591000 0.909400 0.032900 -1.712600 0.024900 -9.195700 0.925400 0.031900 -1.456400 14.610600 -8.695100 0.943400 0.175600 -4.089400 2.633000 -5.031300 0.873900 0.060000 -3.252600 0.001600 -8.591000 0.909400 0.032900 -4.620900 14.945700 -8.516100 0.912200 0.175600 -5.308800 13.910900 -3.738700 0.859000 0.175600 -1.553600 3.059500 -4.173500 0.841100 0.058900 -3.061600 3.537800 -3.461700 0.856300 0.067800 -1.766900 13.754900 -2.918700 0.824200 0.175600 -1.553600 3.059500 -4.173500 0.841100 0.058900 -1.766900 13.754900 -2.918700 0.824200 0.175600 -1.239800 14.644800 -6.465300 0.795300 0.175600 -0.626000 0.031700 -8.336200 0.808600 0.019600 -5.495700 46.043098 -6.732400 0.140100 0.788400 -6.029500 46.188801 -3.956000 0.183500 0.792100 -5.919200 37.619099 -4.570300 0.183400 0.661600 -2.827600 38.171799 -8.088300 0.114700 0.661600 -4.685700 36.664101 -1.616400 0.239300 0.661600 -5.919200 37.619099 -4.570300 0.183400 0.661600 -6.029500 46.188801 -3.956000 0.183500 0.792100 -4.298500 47.001099 -0.058900 0.249500 0.802400 -6.775800 50.206501 -7.534500 0.134300 0.852600 -0.000000 50.037800 -9.413700 0.042000 0.827300 -0.000000 53.738098 -8.986800 0.028300 0.877800 -7.252500 54.524502 -7.615000 0.126400 0.913200 -7.252500 54.524502 -7.615000 0.533200 0.977800 -6.624100 53.529800 -2.653700 0.469900 0.977800 -8.184300 53.108700 -3.320400 0.469900 0.942000 -8.747800 53.770199 -7.353300 0.528600 0.942000 -9.827700 52.989700 -7.188500 0.526400 0.916400 -9.508400 52.403099 -3.672700 0.469900 0.916400 -15.636800 49.715099 -4.015700 0.469900 0.803100 -14.989100 50.565300 -7.297200 0.526200 0.828100 -0.000000 37.009800 0.550700 0.310700 0.661600 -4.685700 36.664101 -1.616400 0.239300 0.661600 -4.298500 47.001099 -0.058900 0.249500 0.802400 -0.000000 47.287498 1.094200 0.310700 0.805700 -0.000000 53.738098 -8.986800 0.028300 0.877800 -0.000000 55.950600 -7.250100 0.022600 0.916300 -2.321200 55.471001 -5.570800 0.053900 0.941000 -7.252500 54.524502 -7.615000 0.126400 0.913200 -3.773800 51.093601 -1.034300 0.256800 0.864400 -4.298500 47.001099 -0.058900 0.249500 0.802400 -6.029500 46.188801 -3.956000 0.183500 0.792100 -6.624100 53.529800 -2.653700 0.210400 0.900400 -6.624100 53.529800 -2.653700 0.210400 0.900400 -6.029500 46.188801 -3.956000 0.183500 0.792100 -7.813100 49.342701 -3.886900 0.181200 0.844200 -0.000000 50.880199 0.110000 0.310700 0.860500 -0.000000 47.287498 1.094200 0.310700 0.805700 -4.298500 47.001099 -0.058900 0.249500 0.802400 -3.773800 51.093601 -1.034300 0.256800 0.864400 -16.136200 50.023998 -7.546200 0.529500 0.803100 -14.885000 46.974701 -7.946000 0.590800 0.803100 -13.779500 47.417198 -7.715300 0.590800 0.828100 -14.989100 50.565300 -7.297200 0.526200 0.828100 -13.779500 47.417198 -7.715300 0.347800 0.823100 -14.977100 45.689201 -4.821000 0.400900 0.803100 -8.927200 49.128502 -4.128200 0.409800 0.916400 -8.756500 49.321098 -7.632900 0.347800 0.916400 -17.208200 49.477699 -7.512200 0.531700 0.782100 -16.810101 49.139900 -3.928800 0.469900 0.782100 -22.348700 46.932201 -2.822400 0.469900 0.674700 -22.585199 48.327702 -7.594400 0.533600 0.698800 -21.936399 43.055199 -3.733600 0.412700 0.674700 -22.348700 46.932201 -2.822400 0.469900 0.674700 -16.810101 49.139900 -3.928800 0.469900 0.782100 -16.192200 44.960400 -4.877100 0.398600 0.782100 -22.105101 44.119598 -7.074000 0.583100 0.674700 -21.061199 44.183601 -7.611200 0.590800 0.698800 -22.585199 48.327702 -7.594400 0.533600 0.698800 -23.337700 47.268200 -6.945000 0.530800 0.674700 -15.884600 46.520500 -7.855800 0.347800 0.782100 -21.061199 44.183601 -7.611200 0.347800 0.693400 -21.936399 43.055199 -3.733600 0.412700 0.674700 -16.192200 44.960400 -4.877100 0.398600 0.782100 -5.598500 31.822901 -1.404300 0.847900 0.413200 -7.453900 29.910801 -4.780100 0.884800 0.385400 -7.174300 32.815300 -5.167300 0.893300 0.414200 -4.970000 33.082802 -8.871900 0.938900 0.409500 -7.174300 32.815300 -5.167300 0.893300 0.414200 -7.453900 29.910801 -4.780100 0.884800 0.385400 -5.595300 29.761600 -8.492500 0.927500 0.375900 -6.827700 20.858999 -3.044800 0.858900 0.286100 -6.194700 19.576300 -3.478600 0.860200 0.277400 -5.426000 21.341299 -8.132600 0.914200 0.282100 -0.835600 22.853901 -8.210700 0.964300 0.301600 -5.317800 22.936800 -8.016200 0.916400 0.301600 -5.426000 21.341299 -8.132600 0.914200 0.282100 -0.899900 21.410400 -8.349400 0.962800 0.286100 -0.899900 21.410400 -8.349400 0.726500 0.282100 -1.853000 19.164200 -1.371600 0.805100 0.274200 -1.957400 20.620800 -1.211500 0.804700 0.286100 -6.194700 19.576300 -3.478600 0.860200 0.277400 -6.827700 20.858999 -3.044800 0.858900 0.286100 -1.957400 20.620800 -1.211500 0.804700 0.286100 -1.853000 19.164200 -1.371600 0.805100 0.274200 -5.117200 15.490400 -9.679700 0.917300 0.220800 -0.134100 16.169500 -9.174700 0.969900 0.225300 -0.899900 21.410400 -8.349400 0.962800 0.286100 -5.426000 21.341299 -8.132600 0.914200 0.282100 -0.134100 16.169500 -9.174700 0.732600 0.207100 -1.716700 14.450400 -2.459200 0.808600 0.236100 -1.853000 19.164200 -1.371600 0.805100 0.274200 -0.899900 21.410400 -8.349400 0.726500 0.282100 -1.853000 19.164200 -1.371600 0.805100 0.274200 -1.716700 14.450400 -2.459200 0.808600 0.236100 -6.069200 14.643000 -3.762300 0.859400 0.227800 -6.194700 19.576300 -3.478600 0.860200 0.277400 -6.069200 14.643000 -3.762300 0.859400 0.227800 -5.117200 15.490400 -9.679700 0.917300 0.220800 -5.426000 21.341299 -8.132600 0.914200 0.282100 -6.194700 19.576300 -3.478600 0.860200 0.277400 -7.813100 49.342701 -3.886900 0.181200 0.844200 -6.029500 46.188801 -3.956000 0.183500 0.792100 -5.495700 46.043098 -6.732400 0.140100 0.788400 -6.775800 50.206501 -7.534500 0.134300 0.852600 -8.756500 49.321098 -7.632900 0.347800 0.916400 -8.927200 49.128502 -4.128200 0.409800 0.916400 -7.813100 49.342701 -3.886900 0.407700 0.942000 -6.775800 50.206501 -7.534500 0.347800 0.942000 -5.495700 46.043098 -6.732400 0.140100 0.788400 -0.000000 45.235802 -8.516300 0.061600 0.762900 -0.000000 50.037800 -9.413700 0.042000 0.827300 -6.775800 50.206501 -7.534500 0.134300 0.852600 -3.773800 51.093601 -1.034300 0.256800 0.864400 -1.435700 55.057400 -2.884500 0.286000 0.931400 -0.000000 54.522099 -2.187600 0.310700 0.919600 -0.000000 50.880199 0.110000 0.310700 0.860500 -0.163800 60.672798 0.405300 0.538500 0.200900 -0.226300 59.631802 0.717000 0.537800 0.167300 -0.605400 59.453602 0.006800 0.558900 0.156900 -0.596000 60.268700 -0.255900 0.565100 0.185300 -0.000000 59.375900 0.272700 0.533800 0.153800 -0.000000 58.735298 0.237300 0.533800 0.134400 -0.793500 58.611801 -0.022400 0.561500 0.129800 -0.605400 59.453602 0.006800 0.558900 0.156900 -1.340700 61.343498 -1.024900 0.599900 0.231700 -2.225300 60.301201 -1.334400 0.633200 0.187400 -2.209500 61.230499 -1.515000 0.636800 0.228100 -0.474100 61.294899 -0.607800 0.567800 0.227200 -0.785400 61.539799 -0.048800 0.562200 0.247600 -0.179900 61.274700 0.058500 0.542100 0.223900 -0.163800 60.672798 0.405300 0.538500 0.200900 -0.596000 60.268700 -0.255900 0.565100 0.185300 -0.474100 61.294899 -0.607800 0.567800 0.227200 -0.179900 61.274700 0.058500 0.542100 0.223900 -0.785400 61.539799 -0.048800 0.562200 0.247600 -1.792100 61.563202 -0.648200 0.603400 0.250800 -1.901400 62.898899 -1.262500 0.616100 0.287500 -0.000000 62.775902 -0.355700 0.533900 0.286800 -1.901400 62.898899 -1.262500 0.616100 0.287500 -1.792100 61.563202 -0.648200 0.603400 0.250800 -2.209500 61.230499 -1.515000 0.636800 0.228100 -2.505800 61.413601 -3.333900 0.700500 0.240200 -2.071800 58.080299 -1.837600 0.632000 0.089900 -2.361600 58.652599 -3.405400 0.691600 0.111600 -2.043500 58.694401 -1.722000 0.633000 0.119000 -2.361600 58.652599 -3.405400 0.691600 0.111600 -2.071800 58.080299 -1.837600 0.632000 0.089900 -1.480400 57.287800 -3.167400 0.679600 0.054000 -2.361600 58.652599 -3.405400 0.691600 0.111600 -2.484800 60.667999 -2.078300 0.658100 0.193000 -2.225300 60.301201 -1.334400 0.633200 0.187400 -2.043500 58.694401 -1.722000 0.633000 0.119000 -0.596000 60.268700 -0.255900 0.565100 0.185300 -0.605400 59.453602 0.006800 0.558900 0.156900 -0.793500 58.611801 -0.022400 0.561500 0.129800 -2.225300 60.301201 -1.334400 0.633200 0.187400 -0.793500 58.611801 -0.022400 0.561500 0.129800 -0.000000 58.735298 0.237300 0.533800 0.134400 -0.000000 57.320400 0.190300 0.533800 0.095300 -0.860300 57.339199 -0.345300 0.560600 0.087800 -2.361600 58.652599 -3.405400 0.691600 0.111600 -1.480400 57.287800 -3.167400 0.679600 0.054000 -1.507500 57.978802 -4.806700 0.740400 0.071600 -1.480400 57.287800 -3.167400 0.293800 0.962800 -0.509500 56.862801 -2.081200 0.308000 0.953500 -0.000000 54.522099 -2.187600 0.310700 0.919600 -1.435700 55.057400 -2.884500 0.286000 0.931400 -1.435700 55.057400 -2.884500 0.286000 0.931400 -2.321200 55.471001 -5.570800 0.259700 0.968000 -1.507500 57.978802 -4.806700 0.270100 0.982500 -1.480400 57.287800 -3.167400 0.293800 0.962800 -5.117200 15.490400 -9.679700 0.917300 0.220800 -1.456400 14.610600 -8.695100 0.949700 0.207500 -0.134100 16.169500 -9.174700 0.969900 0.225300 -0.134100 16.169500 -9.174700 0.732600 0.207100 -1.239800 14.644800 -6.465300 0.774100 0.204900 -1.716700 14.450400 -2.459200 0.808600 0.236100 -5.308800 13.910900 -3.738700 0.855000 0.218100 -6.069200 14.643000 -3.762300 0.859400 0.227800 -1.716700 14.450400 -2.459200 0.808600 0.236100 -1.766900 13.754900 -2.918700 0.809900 0.215800 -4.620900 14.945700 -8.516100 0.914400 0.215300 -5.117200 15.490400 -9.679700 0.917300 0.220800 -6.069200 14.643000 -3.762300 0.859400 0.227800 -5.308800 13.910900 -3.738700 0.855000 0.218100 -1.957400 20.620800 -1.211500 0.804700 0.286100 -2.189200 21.987900 -1.483700 0.804500 0.301600 -0.835600 22.853901 -8.210700 0.728900 0.301600 -0.899900 21.410400 -8.349400 0.726500 0.282100 -7.174300 32.815300 -5.167300 0.893300 0.414200 -4.970000 33.082802 -8.871900 0.938900 0.409500 -5.283200 35.952900 -7.814600 0.933900 0.441300 -6.542300 35.480598 -4.902800 0.897200 0.442800 -5.598500 31.822901 -1.404300 0.847900 0.413200 -7.174300 32.815300 -5.167300 0.893300 0.414200 -6.542300 35.480598 -4.902800 0.897200 0.442800 -4.685700 36.664101 -1.616400 0.239300 0.661600 -3.798500 31.552500 -0.388900 0.257800 0.582200 -5.598500 31.822901 -1.404300 0.231700 0.582200 -2.225300 60.301201 -1.334400 0.633200 0.187400 -2.484800 60.667999 -2.078300 0.658100 0.193000 -2.209500 61.230499 -1.515000 0.636800 0.228100 -8.927200 49.128502 -4.128200 0.409800 0.916400 -9.508400 52.403099 -3.672700 0.469900 0.916400 -8.184300 53.108700 -3.320400 0.469900 0.942000 -7.813100 49.342701 -3.886900 0.407700 0.942000 -8.184300 53.108700 -3.320400 0.469900 0.942000 -9.508400 52.403099 -3.672700 0.469900 0.916400 -9.827700 52.989700 -7.188500 0.526400 0.916400 -8.747800 53.770199 -7.353300 0.528600 0.942000 -8.747800 53.770199 -7.353300 0.528600 0.942000 -6.775800 50.206501 -7.534500 0.590800 0.942000 -7.252500 54.524502 -7.615000 0.533200 0.977800 -8.927200 49.128502 -4.128200 0.409800 0.916400 -14.977100 45.689201 -4.821000 0.400900 0.803100 -15.636800 49.715099 -4.015700 0.469900 0.803100 -9.508400 52.403099 -3.672700 0.469900 0.916400 -1.435700 55.057400 -2.884500 0.286000 0.931400 -3.773800 51.093601 -1.034300 0.256800 0.864400 -6.624100 53.529800 -2.653700 0.210400 0.900400 -7.252500 54.524502 -7.615000 0.180600 0.964800 -2.321200 55.471001 -5.570800 0.259700 0.968000 -1.435700 55.057400 -2.884500 0.286000 0.931400 -7.252500 54.524502 -7.615000 0.180600 0.964800 -2.209500 61.230499 -1.515000 0.636800 0.228100 -2.484800 60.667999 -2.078300 0.658100 0.193000 -2.505800 61.413601 -3.333900 0.704900 0.212700 -2.484800 60.667999 -2.078300 0.658100 0.193000 -2.361600 58.652599 -3.405400 0.691600 0.111600 -2.505800 61.413601 -3.333900 0.704900 0.212700 -2.209500 61.230499 -1.515000 0.636800 0.228100 -1.792100 61.563202 -0.648200 0.603400 0.250800 -1.340700 61.343498 -1.024900 0.599900 0.231700 -3.061600 3.537800 -3.461700 0.290200 0.071700 -1.553600 3.059500 -4.173500 0.275500 0.071900 -1.568700 1.981700 -0.627100 0.274000 0.039600 -3.735600 1.816900 0.228400 0.290200 0.030700 -0.626000 0.031700 -8.336200 0.238500 0.103000 -1.825200 -0.024100 0.601200 0.266200 0.023600 -1.568700 1.981700 -0.627100 0.274000 0.039600 -1.553600 3.059500 -4.173500 0.275500 0.071900 -1.825200 -0.024100 0.601200 0.783900 0.050100 -0.626000 0.031700 -8.336200 0.777900 0.139800 -1.712600 0.024900 -9.195700 0.765100 0.147100 -3.769300 -0.009000 1.132900 0.765800 0.040900 -1.712600 0.024900 -9.195700 0.925400 0.031900 -0.626000 0.031700 -8.336200 0.938600 0.031200 -1.239800 14.644800 -6.465300 0.974400 0.175600 -1.456400 14.610600 -8.695100 0.943400 0.175600 -1.568700 1.981700 -0.627100 0.274000 0.039600 -1.825200 -0.024100 0.601200 0.266200 0.023600 -3.769300 -0.009000 1.132900 0.289700 0.012400 -3.735600 1.816900 0.228400 0.290200 0.030700 -4.089400 2.633000 -5.031300 0.310400 0.073900 -5.390300 1.568200 -1.670300 0.308400 0.040400 -5.176800 -0.025000 -0.598300 0.313500 0.023800 -3.252600 0.001600 -8.591000 0.345300 0.097200 -3.769300 -0.009000 1.132900 0.289700 0.012400 -5.176800 -0.025000 -0.598300 0.313500 0.023800 -5.390300 1.568200 -1.670300 0.308400 0.040400 -3.735600 1.816900 0.228400 0.290200 0.030700 -5.390300 1.568200 -1.670300 0.308400 0.040400 -4.089400 2.633000 -5.031300 0.310400 0.073900 -3.061600 3.537800 -3.461700 0.290200 0.071700 -3.735600 1.816900 0.228400 0.290200 0.030700 -3.061600 3.537800 -3.461700 0.856300 0.067800 -4.089400 2.633000 -5.031300 0.873900 0.060000 -5.308800 13.910900 -3.738700 0.859000 0.175600 -1.766900 13.754900 -2.918700 0.824200 0.175600 -5.117200 15.490400 -9.679700 0.917300 0.220800 -4.620900 14.945700 -8.516100 0.914400 0.215300 -1.456400 14.610600 -8.695100 0.949700 0.207500 -1.456400 14.610600 -8.695100 0.746600 0.183800 -1.239800 14.644800 -6.465300 0.774100 0.204900 -0.134100 16.169500 -9.174700 0.732600 0.207100 -5.426000 21.341299 -8.132600 0.914200 0.282100 -5.317800 22.936800 -8.016200 0.916400 0.301600 -6.824000 22.193899 -3.251500 0.860400 0.301600 -6.827700 20.858999 -3.044800 0.858900 0.286100 -0.845100 29.891001 -9.498900 0.978500 0.369500 -5.595300 29.761600 -8.492500 0.927500 0.375900 -5.317800 22.936800 -8.016200 0.916400 0.301600 -0.835600 22.853901 -8.210700 0.964300 0.301600 -1.957400 20.620800 -1.211500 0.804700 0.286100 -6.827700 20.858999 -3.044800 0.858900 0.286100 -6.824000 22.193899 -3.251500 0.860400 0.301600 -2.189200 21.987900 -1.483700 0.804500 0.301600 -0.605400 59.453602 0.006800 0.558900 0.156900 -0.226300 59.631802 0.717000 0.537800 0.167300 -0.000000 59.375900 0.272700 0.533800 0.153800 -21.936399 43.055199 -3.733600 0.412700 0.674700 -23.265499 44.290199 -3.614200 0.431800 0.655600 -23.323000 46.228001 -3.425200 0.469900 0.655600 -22.348700 46.932201 -2.822400 0.469900 0.674700 -22.105101 44.119598 -7.074000 0.583100 0.674700 -23.337700 47.268200 -6.945000 0.530800 0.674700 -23.881300 46.267799 -5.995500 0.521800 0.655600 -23.273100 44.479099 -6.170500 0.556600 0.655600 -22.348700 46.932201 -2.822400 0.469900 0.674700 -23.323000 46.228001 -3.425200 0.469900 0.655600 -23.881300 46.267799 -5.995500 0.521800 0.655600 -23.337700 47.268200 -6.945000 0.530800 0.674700 -21.936399 43.055199 -3.733600 0.412700 0.674700 -22.105101 44.119598 -7.074000 0.362600 0.674700 -23.273100 44.479099 -6.170500 0.386800 0.655600 -23.265499 44.290199 -3.614200 0.431800 0.655600 -23.323000 46.228001 -3.425200 0.469900 0.655600 -23.265499 44.290199 -3.614200 0.431800 0.655600 -24.446100 44.099098 -3.039500 0.444100 0.624200 -24.935400 45.742901 -3.288800 0.469900 0.624200 -23.273100 44.479099 -6.170500 0.556600 0.655600 -23.881300 46.267799 -5.995500 0.521800 0.655600 -25.982700 45.641201 -5.974700 0.517100 0.624200 -25.718901 44.407902 -5.989100 0.533000 0.624200 -23.881300 46.267799 -5.995500 0.521800 0.655600 -23.323000 46.228001 -3.425200 0.469900 0.655600 -24.935400 45.742901 -3.288800 0.469900 0.624200 -25.982700 45.641201 -5.974700 0.517100 0.624200 -23.265499 44.290199 -3.614200 0.431800 0.655600 -23.273100 44.479099 -6.170500 0.386800 0.655600 -25.718901 44.407902 -5.989100 0.398000 0.624200 -24.446100 44.099098 -3.039500 0.444100 0.624200 -3.798500 31.552500 -0.388900 0.257800 0.582200 -4.685700 36.664101 -1.616400 0.239300 0.661600 -0.000000 37.009800 0.550700 0.310700 0.661600 -0.000000 31.552500 0.128500 0.310700 0.582200 -27.058001 43.733101 -1.471100 0.783900 0.527900 -26.775499 43.007000 -1.492900 0.799700 0.523000 -27.637899 42.321201 -1.984400 0.780200 0.502700 -28.100901 44.177299 -2.470000 0.756100 0.537200 -27.102699 45.320202 -5.735100 0.706300 0.587600 -26.246300 42.901402 -5.383600 0.663100 0.553800 -25.718901 44.407902 -5.989100 0.674700 0.592000 -25.982700 45.641201 -5.974700 0.701400 0.609900 -24.935400 45.742901 -3.288800 0.774000 0.616500 -26.753901 45.398300 -2.858600 0.766000 0.574200 -27.102699 45.320202 -5.735100 0.706300 0.587600 -25.982700 45.641201 -5.974700 0.701400 0.609900 -24.446100 44.099098 -3.039500 0.815000 0.599300 -25.718901 44.407902 -5.989100 0.885900 0.607200 -26.246300 42.901402 -5.383600 0.880100 0.569900 -28.380600 42.330502 -3.056600 0.741600 0.498200 -28.697901 44.238201 -3.477500 0.737900 0.538900 -28.100901 44.177299 -2.470000 0.756100 0.537200 -27.637899 42.321201 -1.984400 0.780200 0.502700 -28.380600 42.330502 -3.056600 0.741600 0.498200 -28.292801 42.543098 -4.446800 0.704200 0.514300 -28.543800 44.178001 -4.651400 0.718600 0.545700 -28.697901 44.238201 -3.477500 0.737900 0.538900 -26.753901 45.398300 -2.858600 0.766000 0.574200 -28.100901 44.177299 -2.470000 0.756100 0.537200 -28.697901 44.238201 -3.477500 0.737900 0.538900 -24.935400 45.742901 -3.288800 0.774000 0.616500 -24.446100 44.099098 -3.039500 0.815000 0.599300 -25.587200 43.557701 -2.038700 0.806300 0.556900 -26.117701 44.487900 -2.198700 0.788200 0.565100 -24.446100 44.099098 -3.039500 0.815000 0.599300 -26.246300 42.901402 -5.383600 0.880100 0.569900 -25.491899 42.827301 -2.370100 0.813300 0.554500 -25.587200 43.557701 -2.038700 0.806300 0.556900 -26.753901 45.398300 -2.858600 0.766000 0.574200 -24.935400 45.742901 -3.288800 0.774000 0.616500 -26.117701 44.487900 -2.198700 0.788200 0.565100 -0.000000 31.552500 0.128500 0.310700 0.582200 -0.000000 24.132099 -0.356700 0.310700 0.472800 -3.463700 23.872801 -0.356700 0.261200 0.472800 -3.798500 31.552500 -0.388900 0.257800 0.582200 -2.225300 60.301201 -1.334400 0.633200 0.187400 -0.793500 58.611801 -0.022400 0.561500 0.129800 -2.043500 58.694401 -1.722000 0.633000 0.119000 -0.793500 58.611801 -0.022400 0.561500 0.129800 -0.860300 57.339199 -0.345300 0.560600 0.087800 -2.071800 58.080299 -1.837600 0.632000 0.089900 -2.043500 58.694401 -1.722000 0.633000 0.119000 -2.071800 58.080299 -1.837600 0.632000 0.089900 -0.860300 57.339199 -0.345300 0.560600 0.087800 -0.509500 56.862801 -2.081200 0.570500 0.026600 -1.480400 57.287800 -3.167400 0.631900 0.022800 -0.179900 61.274700 0.058500 0.542100 0.223900 -0.785400 61.539799 -0.048800 0.562200 0.247600 -0.000000 61.912998 -0.048000 0.533800 0.254400 -15.884600 46.520500 -7.855800 0.590800 0.782100 -14.885000 46.974701 -7.946000 0.590800 0.803100 -16.136200 50.023998 -7.546200 0.529500 0.803100 -17.208200 49.477699 -7.512200 0.531700 0.782100 -15.636800 49.715099 -4.015700 0.469900 0.803100 -16.810101 49.139900 -3.928800 0.469900 0.782100 -17.208200 49.477699 -7.512200 0.531700 0.782100 -16.136200 50.023998 -7.546200 0.529500 0.803100 -16.192200 44.960400 -4.877100 0.398600 0.782100 -14.977100 45.689201 -4.821000 0.400900 0.803100 -14.885000 46.974701 -7.946000 0.347800 0.803100 -15.884600 46.520500 -7.855800 0.347800 0.782100 -16.810101 49.139900 -3.928800 0.469900 0.782100 -15.636800 49.715099 -4.015700 0.469900 0.803100 -14.977100 45.689201 -4.821000 0.400900 0.803100 -16.192200 44.960400 -4.877100 0.398600 0.782100 -13.779500 47.417198 -7.715300 0.590800 0.828100 -8.756500 49.321098 -7.632900 0.590800 0.916400 -9.827700 52.989700 -7.188500 0.526400 0.916400 -14.989100 50.565300 -7.297200 0.526200 0.828100 -15.636800 49.715099 -4.015700 0.469900 0.803100 -16.136200 50.023998 -7.546200 0.529500 0.803100 -14.989100 50.565300 -7.297200 0.526200 0.828100 -13.779500 47.417198 -7.715300 0.347800 0.823100 -14.885000 46.974701 -7.946000 0.347800 0.803100 -14.977100 45.689201 -4.821000 0.400900 0.803100 -1.239800 14.644800 -6.465300 0.774100 0.204900 -1.766900 13.754900 -2.918700 0.809900 0.215800 -1.716700 14.450400 -2.459200 0.808600 0.236100 -26.117701 44.487900 -2.198700 0.788200 0.565100 -25.587200 43.557701 -2.038700 0.806300 0.556900 -26.775499 43.007000 -1.492900 0.799700 0.523000 -27.058001 43.733101 -1.471100 0.783900 0.527900 -25.587200 43.557701 -2.038700 0.806300 0.556900 -25.491899 42.827301 -2.370100 0.813300 0.554500 -27.637899 42.321201 -1.984400 0.816200 0.507300 -26.775499 43.007000 -1.492900 0.799700 0.523000 -26.117701 44.487900 -2.198700 0.788200 0.565100 -27.058001 43.733101 -1.471100 0.783900 0.527900 -28.100901 44.177299 -2.470000 0.756100 0.537200 -8.184300 53.108700 -3.320400 0.469900 0.942000 -6.624100 53.529800 -2.653700 0.469900 0.977800 -7.813100 49.342701 -3.886900 0.407700 0.942000 -8.747800 53.770199 -7.353300 0.528600 0.942000 -9.827700 52.989700 -7.188500 0.526400 0.916400 -8.756500 49.321098 -7.632900 0.590800 0.916400 -6.775800 50.206501 -7.534500 0.590800 0.942000 -28.543800 44.178001 -4.651400 0.718600 0.545700 -27.102699 45.320202 -5.735100 0.706300 0.587600 -26.753901 45.398300 -2.858600 0.766000 0.574200 -28.697901 44.238201 -3.477500 0.737900 0.538900 -26.246300 42.901402 -5.383600 0.880100 0.569900 -28.292801 42.543098 -4.446800 0.879400 0.523100 -28.380600 42.330502 -3.056600 0.853500 0.507000 -28.100901 44.177299 -2.470000 0.756100 0.537200 -26.753901 45.398300 -2.858600 0.766000 0.574200 -26.117701 44.487900 -2.198700 0.788200 0.565100 -1.712600 0.024900 -9.195700 0.765100 0.147100 -3.252600 0.001600 -8.591000 0.751000 0.138000 -5.176800 -0.025000 -0.598300 0.748300 0.055100 -3.769300 -0.009000 1.132900 0.765800 0.040900 -0.000000 61.912998 -0.048000 0.533800 0.254400 -0.785400 61.539799 -0.048800 0.562200 0.247600 -0.000000 62.775902 -0.355700 0.533900 0.286800 -0.340300 31.400700 -9.928000 0.694900 0.384200 -0.845100 29.891001 -9.498900 0.702700 0.368200 -0.425600 30.069099 -1.507500 0.785600 0.393300 -0.509500 56.862801 -2.081200 0.308000 0.953500 -0.509500 56.862801 -2.081200 0.570500 0.026600 -0.860300 57.339199 -0.345300 0.560600 0.087800 -0.000000 57.320400 0.190300 0.533800 0.095300 -0.000000 56.862801 -2.081200 0.533800 0.019000 -5.598500 31.822901 -1.404300 0.847900 0.413200 -6.824000 22.193899 -3.251500 0.860400 0.301600 -7.453900 29.910801 -4.780100 0.884800 0.385400 -6.824000 22.193899 -3.251500 0.860400 0.301600 -5.317800 22.936800 -8.016200 0.916400 0.301600 -5.595300 29.761600 -8.492500 0.927500 0.375900 -7.453900 29.910801 -4.780100 0.884800 0.385400 -3.798500 31.552500 -0.388900 0.824000 0.411400 -2.189200 21.987900 -1.483700 0.804500 0.301600 -6.824000 22.193899 -3.251500 0.860400 0.301600 -5.598500 31.822901 -1.404300 0.847900 0.413200 -0.340300 31.400700 -9.928000 0.986800 0.385200 -4.970000 33.082802 -8.871900 0.938900 0.409500 -5.595300 29.761600 -8.492500 0.927500 0.375900 -0.845100 29.891001 -9.498900 0.978500 0.369500 -0.835600 22.853901 -8.210700 0.728900 0.301600 -2.189200 21.987900 -1.483700 0.804500 0.301600 -0.425600 30.069099 -1.507500 0.785600 0.393300 -0.845100 29.891001 -9.498900 0.702700 0.368200 -2.162800 35.743500 -9.599900 0.972400 0.433600 -5.283200 35.952900 -7.814600 0.933900 0.441300 -4.970000 33.082802 -8.871900 0.938900 0.409500 -0.340300 31.400700 -9.928000 0.986800 0.385200 -5.283200 35.952900 -7.814600 0.142200 0.631800 -5.919200 37.619099 -4.570300 0.183400 0.661600 -6.542300 35.480598 -4.902800 0.182500 0.631800 -5.919200 37.619099 -4.570300 0.183400 0.661600 -4.685700 36.664101 -1.616400 0.239300 0.661600 -5.598500 31.822901 -1.404300 0.231700 0.582200 -6.542300 35.480598 -4.902800 0.182500 0.631800 -0.474100 61.294899 -0.607800 0.567800 0.227200 -0.596000 60.268700 -0.255900 0.565100 0.185300 -2.225300 60.301201 -1.334400 0.633200 0.187400 -1.340700 61.343498 -1.024900 0.599900 0.231700 -1.340700 61.343498 -1.024900 0.599900 0.231700 -1.792100 61.563202 -0.648200 0.603400 0.250800 -0.785400 61.539799 -0.048800 0.562200 0.247600 -0.474100 61.294899 -0.607800 0.567800 0.227200 -0.000000 45.235802 -8.516300 0.061600 0.762900 -5.495700 46.043098 -6.732400 0.140100 0.788400 -2.827600 38.171799 -8.088300 0.114700 0.661600 -0.000000 38.221600 -8.073300 0.073400 0.661600 -0.425600 30.069099 -1.507500 0.785600 0.393300 -2.189200 21.987900 -1.483700 0.804500 0.301600 -3.798500 31.552500 -0.388900 0.824000 0.411400 -0.000000 31.547001 -9.939100 0.694200 0.388200 -0.340300 31.400700 -9.928000 0.694900 0.384200 -0.425600 30.069099 -1.507500 0.785600 0.393300 -0.000000 30.215401 -1.522000 0.785000 0.398100 -21.061199 44.183601 -7.611200 0.590800 0.698800 -15.884600 46.520500 -7.855800 0.590800 0.782100 -17.208200 49.477699 -7.512200 0.531700 0.782100 -22.585199 48.327702 -7.594400 0.533600 0.698800 -22.348700 46.932201 -2.822400 0.469900 0.674700 -23.337700 47.268200 -6.945000 0.530800 0.674700 -22.585199 48.327702 -7.594400 0.533600 0.698800 -21.061199 44.183601 -7.611200 0.347800 0.693400 -22.105101 44.119598 -7.074000 0.362600 0.674700 -21.936399 43.055199 -3.733600 0.412700 0.674700 -0.340300 31.400700 -9.928000 0.986800 0.385200 -0.000000 31.547001 -9.939100 0.990600 0.386300 -0.000000 35.795200 -9.599900 0.995500 0.431600 -2.162800 35.743500 -9.599900 0.972400 0.433600 -5.919200 37.619099 -4.570300 0.183400 0.661600 -5.283200 35.952900 -7.814600 0.142200 0.631800 -2.162800 35.743500 -9.599900 0.096700 0.631800 -2.827600 38.171799 -8.088300 0.114700 0.661600 -28.543800 44.178001 -4.651400 0.718600 0.545700 -28.292801 42.543098 -4.446800 0.704200 0.514300 -26.246300 42.901402 -5.383600 0.663100 0.553800 -27.102699 45.320202 -5.735100 0.706300 0.587600 -25.491899 42.827301 -2.370100 0.813300 0.554500 -28.380600 42.330502 -3.056600 0.853500 0.507000 -27.637899 42.321201 -1.984400 0.816200 0.507300 -26.246300 42.901402 -5.383600 0.880100 0.569900 -28.380600 42.330502 -3.056600 0.853500 0.507000 -25.491899 42.827301 -2.370100 0.813300 0.554500 -2.162800 35.743500 -9.599900 0.096700 0.631800 -0.000000 35.795200 -9.599900 0.068300 0.631800 -0.000000 38.221600 -8.073300 0.073400 0.661600 -2.827600 38.171799 -8.088300 0.114700 0.661600 -0.706900 62.538601 -0.289700 0.409100 0.538600 -1.838200 62.255798 -0.802600 0.430000 0.507000 -1.901400 63.532299 -1.247600 0.451500 0.531400 -0.672300 63.485901 -0.421800 0.426300 0.552700 -1.901400 63.532299 -1.247600 0.451500 0.531400 -1.838200 62.255798 -0.802600 0.430000 0.507000 -3.194200 60.597198 -3.460400 0.492000 0.451400 -2.758700 63.532299 -3.348800 0.499700 0.518700 -2.758700 63.532299 -3.348800 0.499700 0.518700 -3.194200 60.597198 -3.460400 0.492000 0.451400 -3.446000 60.597198 -5.980300 0.552100 0.445900 -3.010600 63.532299 -5.868700 0.554200 0.511800 -3.194200 60.597198 -3.460400 0.492000 0.451400 -1.838200 62.255798 -0.802600 0.430000 0.507000 -2.336800 60.597198 -1.072500 0.434100 0.460700 -2.130500 53.628601 -1.359200 0.416700 0.297200 -4.088800 54.879799 -3.460400 0.486800 0.316000 -3.194200 60.597198 -3.460400 0.492000 0.451400 -2.336800 60.597198 -1.072500 0.434100 0.460700 -4.088800 54.879799 -3.460400 0.486800 0.316000 -4.340700 55.234299 -6.210400 0.542400 0.331500 -3.446000 60.597198 -5.980300 0.552100 0.445900 -3.194200 60.597198 -3.460400 0.492000 0.451400 -3.010600 63.532299 -5.868700 0.554200 0.511800 -3.446000 60.597198 -5.980300 0.552100 0.445900 -2.517200 60.597198 -7.879200 0.601000 0.450200 -1.932100 63.532299 -7.311200 0.591100 0.519300 -3.446000 60.597198 -5.980300 0.552100 0.445900 -4.340700 55.234299 -6.210400 0.542400 0.331500 -2.990300 54.496300 -8.246000 0.608400 0.297700 -2.517200 60.597198 -7.879200 0.601000 0.450200 -1.932100 63.532299 -7.311200 0.591100 0.519300 -2.517200 60.597198 -7.879200 0.601000 0.450200 -0.000000 60.597198 -8.812800 0.661800 0.464200 -0.000000 63.532299 -8.174500 0.634800 0.537700 -2.990300 54.496300 -8.246000 0.608400 0.297700 -0.000000 54.050800 -8.782700 0.682300 0.308600 -0.000000 60.597198 -8.812800 0.661800 0.464200 -2.517200 60.597198 -7.879200 0.601000 0.450200 -0.672300 63.485901 -0.421800 0.426300 0.552700 -1.901400 63.532299 -1.247600 0.451500 0.531400 -1.171400 65.057899 -2.205500 0.482000 0.564300 -1.901400 63.532299 -1.247600 0.451500 0.531400 -2.758700 63.532299 -3.348800 0.499700 0.518700 -1.795600 65.057899 -4.806100 0.538600 0.556700 -1.171400 65.057899 -2.205500 0.482000 0.564300 -2.758700 63.532299 -3.348800 0.499700 0.518700 -3.010600 63.532299 -5.868700 0.554200 0.511800 -1.795600 65.057899 -4.806100 0.538600 0.556700 -3.010600 63.532299 -5.868700 0.554200 0.511800 -1.932100 63.532299 -7.311200 0.591100 0.519300 -0.000000 65.057899 -6.421400 0.588900 0.582100 -1.795600 65.057899 -4.806100 0.538600 0.556700 -1.932100 63.532299 -7.311200 0.591100 0.519300 -0.000000 63.532299 -8.174500 0.634800 0.537700 -0.000000 65.057899 -6.421400 0.588900 0.582100 -1.171400 65.057899 -2.205500 0.482000 0.564300 -1.795600 65.057899 -4.806100 0.538600 0.556700 -0.000000 65.560898 -4.058400 0.523700 0.603300 -1.795600 65.057899 -4.806100 0.538600 0.556700 -0.000000 65.057899 -6.421400 0.588900 0.582100 -0.000000 65.560898 -4.058400 0.523700 0.603300 -0.672300 63.485901 -0.421800 0.426300 0.552700 -1.171400 65.057899 -2.205500 0.482000 0.564300 --1.171400 65.057899 -2.205500 0.466700 0.607600 --0.672300 63.485901 -0.421800 0.416100 0.581700 -0.706900 62.538601 -0.289700 0.409100 0.538600 -0.672300 63.485901 -0.421800 0.426300 0.552700 -0.000000 62.538601 -0.140300 0.398200 0.559100 -0.672300 63.485901 -0.421800 0.426300 0.552700 --0.672300 63.485901 -0.421800 0.416100 0.581700 -0.000000 62.538601 -0.140300 0.398200 0.559100 -2.130500 53.628601 -1.359200 0.416700 0.297200 -2.336800 60.597198 -1.072500 0.434100 0.460700 -1.393700 60.597198 -3.164700 0.380300 0.463400 -1.187300 53.628601 -3.164700 0.369000 0.300200 --0.706900 62.538601 -0.289700 0.409100 0.538600 --0.672300 63.485901 -0.421800 0.426300 0.552800 --1.901400 63.532299 -1.247600 0.451500 0.531500 --1.838200 62.255798 -0.802600 0.430000 0.507100 --1.901400 63.532299 -1.247600 0.451500 0.531500 --2.758700 63.532299 -3.348800 0.499700 0.518800 --3.194200 60.597198 -3.460400 0.492000 0.451500 --1.838200 62.255798 -0.802600 0.430000 0.507100 --2.758700 63.532299 -3.348800 0.499700 0.518800 --3.010600 63.532299 -5.868700 0.554200 0.511900 --3.446000 60.597198 -5.980300 0.552100 0.445900 --3.194200 60.597198 -3.460400 0.492000 0.451500 --3.194200 60.597198 -3.460400 0.492000 0.451500 --2.336800 60.597198 -1.072500 0.434000 0.460800 --1.838200 62.255798 -0.802600 0.430000 0.507100 --2.130500 53.628601 -1.359200 0.416600 0.297300 --2.336800 60.597198 -1.072500 0.434000 0.460800 --3.194200 60.597198 -3.460400 0.492000 0.451500 --4.088800 54.879799 -3.460400 0.486700 0.316100 --4.088800 54.879799 -3.460400 0.486700 0.316100 --3.194200 60.597198 -3.460400 0.492000 0.451500 --3.446000 60.597198 -5.980300 0.552100 0.445900 --4.340700 55.234299 -6.210400 0.542400 0.331500 --3.010600 63.532299 -5.868700 0.554200 0.511900 --1.932100 63.532299 -7.311200 0.591100 0.519300 --2.517200 60.597198 -7.879200 0.601000 0.450300 --3.446000 60.597198 -5.980300 0.552100 0.445900 --3.446000 60.597198 -5.980300 0.552100 0.445900 --2.517200 60.597198 -7.879200 0.601000 0.450300 --2.990300 54.496300 -8.246000 0.608300 0.297700 --4.340700 55.234299 -6.210400 0.542400 0.331500 --1.932100 63.532299 -7.311200 0.591100 0.519300 -0.000000 63.532299 -8.174500 0.634800 0.537700 -0.000000 60.597198 -8.812800 0.661800 0.464200 --2.517200 60.597198 -7.879200 0.601000 0.450300 --2.990300 54.496300 -8.246000 0.608300 0.297700 --2.517200 60.597198 -7.879200 0.601000 0.450300 -0.000000 60.597198 -8.812800 0.661800 0.464200 -0.000000 54.050800 -8.782700 0.682300 0.308600 --0.672300 63.485901 -0.421800 0.426300 0.552800 --1.171400 65.057899 -2.205500 0.482000 0.564400 --1.901400 63.532299 -1.247600 0.451500 0.531500 --1.901400 63.532299 -1.247600 0.451500 0.531500 --1.171400 65.057899 -2.205500 0.482000 0.564400 --1.795600 65.057899 -4.806100 0.538600 0.556700 --2.758700 63.532299 -3.348800 0.499700 0.518800 --2.758700 63.532299 -3.348800 0.499700 0.518800 --1.795600 65.057899 -4.806100 0.538600 0.556700 --3.010600 63.532299 -5.868700 0.554200 0.511900 --3.010600 63.532299 -5.868700 0.554200 0.511900 --1.795600 65.057899 -4.806100 0.538600 0.556700 -0.000000 65.057899 -6.421400 0.589000 0.582100 --1.932100 63.532299 -7.311200 0.591100 0.519300 --1.932100 63.532299 -7.311200 0.591100 0.519300 -0.000000 65.057899 -6.421400 0.589000 0.582100 -0.000000 63.532299 -8.174500 0.634800 0.537700 --1.171400 65.057899 -2.205500 0.482000 0.564400 -0.000000 65.560898 -4.058400 0.523700 0.603400 --1.795600 65.057899 -4.806100 0.538600 0.556700 --1.795600 65.057899 -4.806100 0.538600 0.556700 -0.000000 65.560898 -4.058400 0.523700 0.603400 -0.000000 65.057899 -6.421400 0.589000 0.582100 --1.171400 65.057899 -2.205500 0.466700 0.607600 -1.171400 65.057899 -2.205500 0.482000 0.564300 -0.000000 65.560898 -4.058400 0.523700 0.603300 --0.706900 62.538601 -0.289700 0.409100 0.538600 -0.000000 62.538601 -0.140300 0.398200 0.559200 --0.672300 63.485901 -0.421800 0.426300 0.552800 --2.130500 53.628601 -1.359200 0.416600 0.297300 --1.187300 53.628601 -3.164700 0.369000 0.300300 --1.393700 60.597198 -3.164700 0.380200 0.463500 --2.336800 60.597198 -1.072500 0.434000 0.460800 -8.704300 24.905701 -6.036500 0.967100 0.466200 -7.984800 25.127701 -6.177400 0.966400 0.464600 -7.649900 27.558001 -5.856100 0.993500 0.506600 -8.503900 27.435900 -5.670300 0.976600 0.507100 -6.463600 36.223400 -3.704900 0.962000 0.710700 -5.778000 35.994701 -1.773100 0.922200 0.717000 -7.451900 27.210300 -3.504400 0.930000 0.516400 -8.503900 27.435900 -5.670300 0.976600 0.507100 -5.115000 35.782600 -2.051700 0.916000 0.725700 -6.597900 27.332300 -3.690200 0.913000 0.515500 -7.451900 27.210300 -3.504400 0.930000 0.516400 -5.778000 35.994701 -1.773100 0.922200 0.717000 -5.743400 36.019600 -3.995900 0.971100 0.718900 -6.463600 36.223400 -3.704900 0.962000 0.710700 -8.503900 27.435900 -5.670300 0.976600 0.507100 -7.649900 27.558001 -5.856100 0.993500 0.506600 -7.451900 27.210300 -3.504400 0.930000 0.516400 -6.597900 27.332300 -3.690200 0.913000 0.515500 -7.984800 25.127701 -6.177400 0.966400 0.464600 -8.704300 24.905701 -6.036500 0.967100 0.466200 -7.451900 27.210300 -3.504400 0.930000 0.516400 -8.704300 24.905701 -6.036500 0.967100 0.466200 -8.503900 27.435900 -5.670300 0.976600 0.507100 -6.463600 36.223400 -3.704900 0.962000 0.710700 -5.743400 36.019600 -3.995900 0.971100 0.718900 -5.115000 35.782600 -2.051700 0.916000 0.725700 -5.778000 35.994701 -1.773100 0.922200 0.717000 -4.513000 55.007702 -5.909800 0.935300 0.759300 -4.291100 55.098900 -5.871800 0.932300 0.755300 -4.207800 55.799599 -6.651700 0.967500 0.768900 -4.871900 55.799599 -6.765400 0.957200 0.775300 -2.904000 62.455601 -5.700500 0.954300 0.968000 -2.764700 62.455601 -4.128400 0.909900 0.975800 -4.736600 55.799599 -5.153900 0.919700 0.781300 -4.871900 55.799599 -6.765400 0.957200 0.775300 -2.764700 62.455601 -4.128400 0.909900 0.975800 -4.072400 55.799599 -5.040200 0.904100 0.777700 -4.736600 55.799599 -5.153900 0.919700 0.781300 -2.904000 62.455601 -5.700500 0.954300 0.968000 -4.871900 55.799599 -6.765400 0.957200 0.775300 -4.207800 55.799599 -6.651700 0.967500 0.768900 -4.736600 55.799599 -5.153900 0.919700 0.781300 -4.072400 55.799599 -5.040200 0.904100 0.777700 -4.291100 55.098900 -5.871800 0.932300 0.755300 -4.513000 55.007702 -5.909800 0.935300 0.759300 -4.736600 55.799599 -5.153900 0.919700 0.781300 -4.513000 55.007702 -5.909800 0.935300 0.759300 -4.871900 55.799599 -6.765400 0.957200 0.775300 -4 0 1 2 3 -4 4 5 6 7 -3 8 9 10 -4 11 12 13 14 -4 15 16 17 18 -4 19 20 21 22 -4 23 24 25 26 -4 27 28 29 30 -4 31 32 33 34 -4 35 36 37 38 -4 39 40 41 42 -4 43 44 45 46 -3 47 48 49 -4 50 51 52 53 -4 54 55 56 57 -4 58 59 60 61 -4 62 63 64 65 -4 66 67 68 69 -4 70 71 72 73 -4 74 75 76 77 -3 78 79 80 -4 81 82 83 84 -3 85 86 87 -4 88 89 90 91 -3 92 93 94 -4 95 96 97 98 -4 99 100 101 102 -4 103 104 105 106 -4 107 108 109 110 -4 111 112 113 114 -4 115 116 117 118 -4 119 120 121 122 -4 123 124 125 126 -4 127 128 129 130 -4 131 132 133 134 -4 135 136 137 138 -3 139 140 141 -3 142 143 144 -4 145 146 147 148 -4 149 150 151 152 -4 153 154 155 156 -3 157 158 159 -3 160 161 162 -4 163 164 165 166 -4 167 168 169 170 -4 171 172 173 174 -3 175 176 177 -4 178 179 180 181 -4 182 183 184 185 -3 186 187 188 -3 189 190 191 -4 192 193 194 195 -4 196 197 198 199 -4 200 201 202 203 -4 204 205 206 207 -3 208 209 210 -3 211 212 213 -3 214 215 216 -4 217 218 219 220 -4 221 222 223 224 -3 225 226 227 -4 228 229 230 231 -4 232 233 234 235 -3 236 237 238 -3 239 240 241 -3 242 243 244 -3 245 246 247 -4 248 249 250 251 -4 252 253 254 255 -4 256 257 258 259 -4 260 261 262 263 -4 264 265 266 267 -4 268 269 270 271 -4 272 273 274 275 -4 276 277 278 279 -4 280 281 282 283 -3 284 285 286 -3 287 288 289 -4 290 291 292 293 -4 294 295 296 297 -4 298 299 300 301 -3 302 303 304 -4 305 306 307 308 -4 309 310 311 312 -4 313 314 315 316 -4 317 318 319 320 -4 321 322 323 324 -4 325 326 327 328 -4 329 330 331 332 -4 333 334 335 336 -4 337 338 339 340 -4 341 342 343 344 -4 345 346 347 348 -4 349 350 351 352 -3 353 354 355 -4 356 357 358 359 -4 360 361 362 363 -3 364 365 366 -4 367 368 369 370 -4 371 372 373 374 -3 375 376 377 -4 378 379 380 381 -3 382 383 384 -4 385 386 387 388 -4 389 390 391 392 -3 393 394 395 -4 396 397 398 399 -4 400 401 402 403 -4 404 405 406 407 -4 408 409 410 411 -4 412 413 414 415 -3 416 417 418 -3 419 420 421 -3 422 423 424 -4 425 426 427 428 -4 429 430 431 432 -3 433 434 435 -3 436 437 438 -4 439 440 441 442 -4 443 444 445 446 -3 447 448 449 -3 450 451 452 -4 453 454 455 456 -3 457 458 459 -3 460 461 462 -3 463 464 465 -4 466 467 468 469 -3 470 471 472 -4 473 474 475 476 -4 477 478 479 480 -4 481 482 483 484 -4 485 486 487 488 -4 489 490 491 492 -3 493 494 495 -4 496 497 498 499 -4 500 501 502 503 -4 504 505 506 507 -4 508 509 510 511 -3 512 513 514 -4 515 516 517 518 -4 519 520 521 522 -3 523 524 525 -3 526 527 528 -3 529 530 531 -4 532 533 534 535 -4 536 537 538 539 -4 540 541 542 543 -4 544 545 546 547 -3 548 549 550 -3 551 552 553 -4 554 555 556 557 -3 558 559 560 -4 561 562 563 564 -4 565 566 567 568 -4 569 570 571 572 -3 573 574 575 -4 576 577 578 579 -4 580 581 582 583 -4 584 585 586 587 -4 588 589 590 591 -4 592 593 594 595 -4 596 597 598 599 -4 600 601 602 603 -4 604 605 606 607 -4 608 609 610 611 -3 612 613 614 -4 615 616 617 618 -4 619 620 621 622 -4 623 624 625 626 -4 627 628 629 630 -4 631 632 633 634 -4 635 636 637 638 -4 639 640 641 642 -3 643 644 645 -4 646 647 648 649 -3 650 651 652 -4 653 654 655 656 -3 657 658 659 -4 660 661 662 663 -4 664 665 666 667 -4 668 669 670 671 -4 672 673 674 675 -4 676 677 678 679 -4 680 681 682 683 -4 684 685 686 687 -4 688 689 690 691 -4 692 693 694 695 -4 696 697 698 699 -4 700 701 702 703 -3 704 705 706 -3 707 708 709 -4 710 711 712 713 -4 714 715 716 717 -4 718 719 720 721 -3 722 723 724 -3 725 726 727 -4 728 729 730 731 -4 732 733 734 735 -4 736 737 738 739 -3 740 741 742 -4 743 744 745 746 -4 747 748 749 750 -3 751 752 753 -3 754 755 756 -4 757 758 759 760 -4 761 762 763 764 -4 765 766 767 768 -4 769 770 771 772 -3 773 774 775 -3 776 777 778 -3 779 780 781 -4 782 783 784 785 -4 786 787 788 789 -3 790 791 792 -4 793 794 795 796 -4 797 798 799 800 -3 801 802 803 -3 804 805 806 -3 807 808 809 -3 810 811 812 -4 813 814 815 816 -4 817 818 819 820 -4 821 822 823 824 -4 825 826 827 828 -4 829 830 831 832 -4 833 834 835 836 -4 837 838 839 840 -4 841 842 843 844 -4 845 846 847 848 -3 849 850 851 -3 852 853 854 -4 855 856 857 858 -4 859 860 861 862 -4 863 864 865 866 -3 867 868 869 -4 870 871 872 873 -4 874 875 876 877 -4 878 879 880 881 -4 882 883 884 885 -4 886 887 888 889 -4 890 891 892 893 -4 894 895 896 897 -4 898 899 900 901 -4 902 903 904 905 -4 906 907 908 909 -4 910 911 912 913 -4 914 915 916 917 -3 918 919 920 -4 921 922 923 924 -4 925 926 927 928 -3 929 930 931 -4 932 933 934 935 -4 936 937 938 939 -3 940 941 942 -4 943 944 945 946 -3 947 948 949 -4 950 951 952 953 -4 954 955 956 957 -3 958 959 960 -4 961 962 963 964 -4 965 966 967 968 -4 969 970 971 972 -4 973 974 975 976 -4 977 978 979 980 -3 981 982 983 -3 984 985 986 -3 987 988 989 -4 990 991 992 993 -4 994 995 996 997 -3 998 999 1000 -3 1001 1002 1003 -4 1004 1005 1006 1007 -4 1008 1009 1010 1011 -3 1012 1013 1014 -3 1015 1016 1017 -4 1018 1019 1020 1021 -3 1022 1023 1024 -3 1025 1026 1027 -3 463 1028 464 -4 1029 1030 1031 1032 -3 1033 1034 1035 -4 1036 1037 1038 1039 -4 1040 1041 1042 1043 -4 1044 1045 1046 1047 -4 1048 1049 1050 1051 -4 1052 1053 1054 1055 -3 1056 1057 1058 -4 1059 1060 1061 1062 -4 1063 1064 1065 1066 -4 1067 1068 1069 1070 -4 1071 1072 1073 1074 -3 1075 1076 1077 -4 1078 1079 1080 1081 -4 1082 1083 1084 1085 -3 1086 1087 1088 -3 1089 1090 1091 -4 1092 1093 1094 1095 -4 1096 1097 1098 1099 -4 1100 1101 1102 1103 -3 1104 1105 1106 -3 1107 1108 1109 -4 1110 1111 1112 1113 -4 1114 1115 1116 1117 -4 1118 1119 1120 1121 -4 1122 1123 1124 1125 -3 1126 1127 1128 -4 1129 1130 1131 1132 -4 1133 1134 1135 1136 -4 1137 1138 1139 1140 -4 1141 1142 1143 1144 -4 1145 1146 1147 1148 -4 1149 1150 1151 1152 -3 1153 1154 1155 -4 1156 1157 1158 1159 -3 1160 1161 1162 -4 1163 1164 1165 1166 -3 1167 1168 1169 -3 1170 1171 1172 -3 1173 1174 1175 -4 1176 1177 1178 1179 -3 1180 1181 1182 -3 1183 1184 1185 -4 1186 1187 1188 1189 -4 1190 1191 1192 1193 -4 1194 1195 1196 1197 -4 1198 1199 1200 1201 -3 1202 1203 1204 -4 1205 1206 1207 1208 -4 1209 1210 1211 1212 -4 1213 1214 1215 1216 -4 1217 1218 1219 1220 -4 1221 1222 1223 1224 -4 1225 1226 1227 1228 -3 1229 1230 1231 -4 1232 1233 1234 1235 -3 1236 1237 1238 -4 1239 1240 1241 1242 -3 1243 1244 1245 -3 1246 1247 1248 -3 1249 1250 1251 -3 1252 1253 1254 -3 1255 1256 1257 -4 1258 1259 1260 1261 -4 1262 1263 1264 1265 -4 1266 1267 1268 1269 -4 1270 1271 1272 1273 -4 1274 1275 1276 1277 -4 1278 1279 1280 1281 -3 1282 1283 1284 -4 1285 1286 1287 1288 -4 1289 1290 1291 1292 -4 1293 1294 1295 1296 -3 1297 1298 1299 -3 1300 1301 1302 -4 1303 1304 1305 1306 -3 1307 1308 1309 diff --git a/src/tests/evas/meshes/ply/Normal_NoUVs_Colors.ply b/src/tests/evas/meshes/ply/Normal_NoUVs_Colors.ply deleted file mode 100644 index 77a646fd50..0000000000 --- a/src/tests/evas/meshes/ply/Normal_NoUVs_Colors.ply +++ /dev/null @@ -1,1682 +0,0 @@ -ply -format ascii 1.0 -comment Created by Blender 2.69 (sub 0) - www.blender.org, source file: '' -element vertex 1310 -property float x -property float y -property float z -property float nx -property float ny -property float nz -property uchar red -property uchar green -property uchar blue -element face 356 -property list uchar uint vertex_indices -end_header --4.649800 14.945700 -8.785600 -0.021734 0.023193 -0.999495 0 253 27 --2.020300 14.610600 -8.278800 -0.021734 0.023193 -0.999495 0 253 27 --1.712600 0.024900 -9.195700 -0.021734 0.023193 -0.999495 254 68 73 --3.252600 0.001600 -8.591000 -0.021734 0.023193 -0.999495 254 68 73 --4.649800 14.945700 -8.785600 -0.983809 -0.091724 -0.153967 254 68 73 --3.252600 0.001600 -8.591000 -0.983809 -0.091724 -0.153967 254 88 92 --4.089400 2.633000 -5.031300 -0.983809 -0.091724 -0.153967 254 68 73 --5.308800 13.910900 -3.738700 -0.983809 -0.091724 -0.153967 254 68 73 --1.553600 3.059500 -4.173500 0.398905 -0.098999 0.911633 18 0 253 --1.766900 13.754900 -2.918700 0.398905 -0.098999 0.911633 0 254 27 --3.061600 3.537800 -3.461700 0.398905 -0.098999 0.911633 18 0 252 --1.553600 3.059500 -4.173500 0.977159 -0.002648 0.212493 18 0 253 --0.626000 0.031700 -8.336200 0.977159 -0.002648 0.212493 19 0 253 --0.971400 14.644800 -6.706400 0.977159 -0.002648 0.212493 27 229 30 --1.766900 13.754900 -2.918700 0.977159 -0.002648 0.212493 0 253 27 --5.495700 46.043098 -6.732400 -0.860977 -0.085411 -0.501422 254 254 254 --2.827600 38.171799 -8.088300 -0.860977 -0.085411 -0.501422 254 254 254 --5.919200 37.619099 -4.570300 -0.860977 -0.085411 -0.501422 254 254 254 --6.029500 46.188801 -3.956000 -0.860977 -0.085411 -0.501422 254 254 254 --4.685700 36.664101 -1.616400 -0.917535 -0.032092 0.396359 13 240 28 --4.298500 47.001099 -0.058900 -0.917535 -0.032092 0.396359 5 247 27 --6.029500 46.188801 -3.956000 -0.917535 -0.032092 0.396359 0 253 27 --5.919200 37.619099 -4.570300 -0.917535 -0.032092 0.396359 0 253 27 --6.775800 50.206501 -7.534500 -0.223809 0.028781 -0.974208 0 254 27 --7.252500 54.524502 -7.615000 -0.223809 0.028781 -0.974208 0 254 27 -0.000000 53.738098 -8.986800 -0.223809 0.028781 -0.974208 0 254 27 -0.000000 50.037800 -9.413700 -0.223809 0.028781 -0.974208 0 254 27 --7.252500 54.524502 -7.615000 -0.375359 0.901424 0.215731 0 253 27 --8.747800 53.770199 -7.353300 -0.375359 0.901424 0.215731 0 253 27 --8.184300 53.108700 -3.320400 -0.375359 0.901424 0.215731 0 253 27 --6.624100 53.529800 -2.653700 -0.375359 0.901424 0.215731 0 253 27 --9.827700 52.989700 -7.188500 -0.412168 0.895237 0.169320 0 253 27 --14.989100 50.565300 -7.297200 -0.412168 0.895237 0.169320 0 253 27 --15.636800 49.715099 -4.015700 -0.412168 0.895237 0.169320 0 253 27 --9.508400 52.403099 -3.672700 -0.412168 0.895237 0.169320 0 253 27 -0.000000 37.009800 0.550700 -0.339751 -0.089043 0.936291 172 124 55 -0.000000 47.287498 1.094200 -0.339751 -0.089043 0.936291 0 252 27 --4.298500 47.001099 -0.058900 -0.339751 -0.089043 0.936291 0 253 27 --4.685700 36.664101 -1.616400 -0.339751 -0.089043 0.936291 13 226 40 -0.000000 53.738098 -8.986800 -0.139268 0.841727 -0.521633 0 254 27 --7.252500 54.524502 -7.615000 -0.139268 0.841727 -0.521633 0 254 27 --2.321200 55.471001 -5.570800 -0.139268 0.841727 -0.521633 0 254 27 -0.000000 55.950600 -7.250100 -0.139268 0.841727 -0.521633 0 254 27 --6.624100 53.529800 -2.653700 -0.510018 -0.190129 0.838888 0 253 27 --7.813100 49.342701 -3.886900 -0.510018 -0.190129 0.838888 0 253 27 --6.029500 46.188801 -3.956000 -0.510018 -0.190129 0.838888 0 253 27 --3.773800 51.093601 -1.034300 -0.510018 -0.190129 0.838888 0 253 27 --6.029500 46.188801 -3.956000 -0.909885 0.202901 0.361857 0 253 27 --4.298500 47.001099 -0.058900 -0.909885 0.202901 0.361857 5 247 27 --3.773800 51.093601 -1.034300 -0.909885 0.202901 0.361857 0 253 27 -0.000000 50.880199 0.110000 -0.266804 0.255185 0.929352 0 253 27 --3.773800 51.093601 -1.034300 -0.266804 0.255185 0.929352 0 253 27 --4.298500 47.001099 -0.058900 -0.266804 0.255185 0.929352 0 253 27 -0.000000 47.287498 1.094200 -0.266804 0.255185 0.929352 0 252 27 --16.136200 50.023998 -7.546200 0.129075 0.179950 -0.975171 0 249 27 --14.989100 50.565300 -7.297200 0.129075 0.179950 -0.975171 0 252 27 --13.779500 47.417198 -7.715300 0.129075 0.179950 -0.975171 0 253 27 --14.885000 46.974701 -7.946000 0.129075 0.179950 -0.975171 0 251 27 --13.779500 47.417198 -7.715300 0.437873 -0.882573 -0.171264 0 253 27 --8.756500 49.321098 -7.632900 0.437873 -0.882573 -0.171264 0 253 27 --8.927200 49.128502 -4.128200 0.437873 -0.882573 -0.171264 0 253 27 --14.977100 45.689201 -4.821000 0.437873 -0.882573 -0.171264 0 248 31 --17.208200 49.477699 -7.512200 -0.268622 0.938905 0.215175 0 253 27 --22.585199 48.327702 -7.594400 -0.268622 0.938905 0.215175 0 253 27 --22.348700 46.932201 -2.822400 -0.268622 0.938905 0.215175 72 195 37 --16.810101 49.139900 -3.928800 -0.268622 0.938905 0.215175 0 253 27 --21.936399 43.055199 -3.733600 0.256926 -0.186034 0.948357 24 182 75 --16.192200 44.960400 -4.877100 0.256926 -0.186034 0.948357 0 236 42 --16.810101 49.139900 -3.928800 0.256926 -0.186034 0.948357 0 253 27 --22.348700 46.932201 -2.822400 0.256926 -0.186034 0.948357 72 195 37 --22.105101 44.119598 -7.074000 -0.471869 -0.161034 -0.866838 254 254 254 --23.337700 47.268200 -6.945000 -0.471869 -0.161034 -0.866838 254 254 254 --22.585199 48.327702 -7.594400 -0.471869 -0.161034 -0.866838 254 254 254 --21.061199 44.183601 -7.611200 -0.471869 -0.161034 -0.866838 254 254 254 --15.884600 46.520500 -7.855800 0.312108 -0.901546 -0.299673 0 250 27 --16.192200 44.960400 -4.877100 0.312108 -0.901546 -0.299673 0 253 27 --21.936399 43.055199 -3.733600 0.312108 -0.901546 -0.299673 0 253 27 --21.061199 44.183601 -7.611200 0.312108 -0.901546 -0.299673 52 208 31 --5.598500 31.822901 -1.405400 -0.899226 0.141575 0.413943 133 152 48 --7.174300 32.815300 -5.168000 -0.899226 0.141575 0.413943 0 253 27 --7.453900 29.910801 -4.782000 -0.899226 0.141575 0.413943 0 253 27 --4.970000 33.082802 -8.871300 -0.875321 0.068314 -0.478692 0 253 27 --5.595300 29.761600 -8.491100 -0.875321 0.068314 -0.478692 0 253 27 --7.453900 29.910801 -4.782000 -0.875321 0.068314 -0.478692 0 253 27 --7.174300 32.815300 -5.168000 -0.875321 0.068314 -0.478692 0 253 27 --6.827700 20.858999 -3.051400 -0.895608 -0.345701 -0.279959 254 254 254 --5.426000 21.341299 -8.131100 -0.895608 -0.345701 -0.279959 254 254 254 --6.194700 19.576300 -3.492500 -0.895608 -0.345701 -0.279959 254 254 254 --0.835600 22.853901 -8.203000 -0.044062 0.086408 -0.995285 0 253 27 --0.899900 21.410400 -8.342700 -0.044062 0.086408 -0.995285 0 253 27 --5.426000 21.341299 -8.131100 -0.044062 0.086408 -0.995285 0 253 27 --5.317800 22.936800 -8.014600 -0.044062 0.086408 -0.995285 0 253 27 --0.899900 21.410400 -8.342700 0.986890 0.053202 0.152371 219 57 99 --1.957400 20.620800 -1.217700 0.986890 0.053202 0.152371 254 68 73 --1.853000 19.164200 -1.385300 0.986890 0.053202 0.152371 254 68 73 --6.194700 19.576300 -3.492500 -0.393090 -0.299033 0.869517 114 254 128 --1.853000 19.164200 -1.385300 -0.393090 -0.299033 0.869517 242 254 242 --1.957400 20.620800 -1.217700 -0.393090 -0.299033 0.869517 242 254 242 --6.827700 20.858999 -3.051400 -0.393090 -0.299033 0.869517 168 254 177 --5.259600 15.490400 -9.599400 0.139442 0.106302 -0.984508 0 253 27 --5.426000 21.341299 -8.131100 0.139442 0.106302 -0.984508 0 253 27 --0.899900 21.410400 -8.342700 0.139442 0.106302 -0.984508 0 253 27 --0.294400 16.169500 -7.962700 0.139442 0.106302 -0.984508 0 253 27 --0.294400 16.169500 -7.962700 0.977002 0.117101 0.178197 0 253 27 --0.899900 21.410400 -8.342700 0.977002 0.117101 0.178197 1 216 59 --1.853000 19.164200 -1.385300 0.977002 0.117101 0.178197 0 253 27 --1.221800 14.450400 -2.004100 0.977002 0.117101 0.178197 0 253 27 --1.853000 19.164200 -1.385300 -0.395956 -0.119778 0.910424 254 254 254 --6.194700 19.576300 -3.492500 -0.395956 -0.119778 0.910424 254 254 254 --6.498700 14.643000 -4.000600 -0.395956 -0.119778 0.910424 91 254 108 --1.221800 14.450400 -2.004100 -0.395956 -0.119778 0.910424 0 254 27 --6.498700 14.643000 -4.000600 -0.982418 0.045709 -0.181012 254 254 254 --6.194700 19.576300 -3.492500 -0.982418 0.045709 -0.181012 254 254 254 --5.426000 21.341299 -8.131100 -0.982418 0.045709 -0.181012 254 254 254 --5.259600 15.490400 -9.599400 -0.982418 0.045709 -0.181012 254 254 254 --7.813100 49.342701 -3.886900 -0.881229 -0.394976 -0.259672 254 68 73 --6.775800 50.206501 -7.534500 -0.881229 -0.394976 -0.259672 254 68 73 --5.495700 46.043098 -6.732400 -0.881229 -0.394976 -0.259672 254 68 73 --6.029500 46.188801 -3.956000 -0.881229 -0.394976 -0.259672 254 68 73 --8.756500 49.321098 -7.632900 0.341557 -0.936397 -0.080618 0 254 27 --6.775800 50.206501 -7.534500 0.341557 -0.936397 -0.080618 0 254 27 --7.813100 49.342701 -3.886900 0.341557 -0.936397 -0.080618 0 254 27 --8.927200 49.128502 -4.128200 0.341557 -0.936397 -0.080618 0 254 27 --5.495700 46.043098 -6.732400 -0.295037 -0.218453 -0.930178 0 254 27 --6.775800 50.206501 -7.534500 -0.295037 -0.218453 -0.930178 0 254 27 -0.000000 50.037800 -9.413700 -0.295037 -0.218453 -0.930178 0 254 27 -0.000000 45.235802 -8.516300 -0.295037 -0.218453 -0.930178 0 254 27 --3.773800 51.093601 -1.034300 -0.217879 0.518058 0.827130 0 253 27 -0.000000 50.880199 0.110000 -0.217879 0.518058 0.827130 0 253 27 -0.000000 54.522099 -2.187600 -0.217879 0.518058 0.827130 0 253 27 --1.435700 55.057400 -2.884500 -0.217879 0.518058 0.827130 0 253 27 --0.163800 60.672798 0.405300 -0.878123 0.172158 0.446386 0 254 27 --0.596000 60.268700 -0.255900 -0.878123 0.172158 0.446386 0 254 27 --0.605400 59.453602 0.006800 -0.878123 0.172158 0.446386 0 254 27 --0.226300 59.631802 0.717000 -0.878123 0.172158 0.446386 0 254 27 -0.000000 59.375900 0.272700 -0.351825 0.003851 0.936058 0 254 27 --0.605400 59.453602 0.006800 -0.351825 0.003851 0.936058 0 254 27 --0.793500 58.611801 -0.022400 -0.351825 0.003851 0.936058 0 254 27 -0.000000 58.735298 0.237300 -0.351825 0.003851 0.936058 0 253 27 --1.340700 61.343498 -1.024900 -0.500896 0.173312 0.847978 254 254 254 --2.209500 61.230499 -1.515000 -0.500896 0.173312 0.847978 254 254 254 --2.225300 60.301201 -1.334400 -0.500896 0.173312 0.847978 254 254 254 --0.474100 61.294899 -0.607800 -0.419394 -0.893935 0.158081 254 254 254 --0.179900 61.274700 0.058500 -0.419394 -0.893935 0.158081 254 254 254 --0.785400 61.539799 -0.048800 -0.419394 -0.893935 0.158081 254 254 254 --0.163800 60.672798 0.405300 -0.879737 0.234636 0.413532 0 254 27 --0.179900 61.274700 0.058500 -0.879737 0.234636 0.413532 0 254 27 --0.474100 61.294899 -0.607800 -0.879737 0.234636 0.413532 0 254 27 --0.596000 60.268700 -0.255900 -0.879737 0.234636 0.413532 0 254 27 --0.785400 61.539799 -0.048800 -0.405349 0.400850 0.821591 0 254 27 -0.000000 62.775902 -0.355700 -0.405349 0.400850 0.821591 0 254 27 --1.901400 62.898899 -1.262500 -0.405349 0.400850 0.821591 0 254 27 --1.792100 61.563202 -0.648200 -0.405349 0.400850 0.821591 0 254 27 --1.901400 62.898899 -1.262500 -0.958885 0.139689 0.247034 254 254 254 --2.505800 61.413601 -3.333900 -0.958885 0.139689 0.247034 254 254 254 --2.209500 61.230499 -1.515000 -0.958885 0.139689 0.247034 254 254 254 --1.792100 61.563202 -0.648200 -0.958885 0.139689 0.247034 254 254 254 --2.071800 58.080299 -1.837600 -0.982605 0.010378 0.185418 254 254 254 --2.043500 58.694401 -1.722000 -0.982605 0.010378 0.185418 254 254 254 --2.361600 58.652599 -3.405400 -0.982605 0.010378 0.185418 254 254 254 --2.361600 58.652599 -3.405400 -0.835615 -0.547438 -0.045374 254 254 254 --1.480400 57.287800 -3.167400 -0.835615 -0.547438 -0.045374 254 254 254 --2.071800 58.080299 -1.837600 -0.835615 -0.547438 -0.045374 254 254 254 --2.361600 58.652599 -3.405400 -0.962379 -0.178153 0.205154 254 254 254 --2.043500 58.694401 -1.722000 -0.962379 -0.178153 0.205154 254 254 254 --2.225300 60.301201 -1.334400 -0.962379 -0.178153 0.205154 254 254 254 --2.484800 60.667999 -2.078300 -0.962379 -0.178153 0.205154 254 254 254 --0.596000 60.268700 -0.255900 -0.569338 0.180881 0.801958 0 254 27 --2.225300 60.301201 -1.334400 -0.569338 0.180881 0.801958 0 254 27 --0.793500 58.611801 -0.022400 -0.569338 0.180881 0.801958 0 254 27 --0.605400 59.453602 0.006800 -0.569338 0.180881 0.801958 0 254 27 --0.793500 58.611801 -0.022400 -0.424783 -0.113068 0.898207 0 254 27 --0.860300 57.339199 -0.345300 -0.424783 -0.113068 0.898207 0 253 27 -0.000000 57.320400 0.190300 -0.424783 -0.113068 0.898207 0 253 27 -0.000000 58.735298 0.237300 -0.424783 -0.113068 0.898207 0 253 27 --2.361600 58.652599 -3.405400 -0.801295 -0.555920 -0.221086 254 254 254 --1.507500 57.978802 -4.806700 -0.801295 -0.555920 -0.221086 254 254 254 --1.480400 57.287800 -3.167400 -0.801295 -0.555920 -0.221086 254 254 254 --1.480400 57.287800 -3.167400 -0.605736 -0.042761 0.794516 254 153 157 --1.435700 55.057400 -2.884500 -0.605736 -0.042761 0.794516 244 75 71 -0.000000 54.522099 -2.187600 -0.605736 -0.042761 0.794516 235 81 69 --0.509500 56.862801 -2.081200 -0.605736 -0.042761 0.794516 254 129 132 --1.435700 55.057400 -2.884500 -0.962522 0.132164 0.236820 254 68 73 --1.480400 57.287800 -3.167400 -0.962522 0.132164 0.236820 254 68 73 --1.507500 57.978802 -4.806700 -0.962522 0.132164 0.236820 254 68 73 --2.321200 55.471001 -5.570800 -0.962522 0.132164 0.236820 254 68 73 --5.259600 15.490400 -9.599400 0.329887 -0.177209 -0.927239 0 253 27 --0.294400 16.169500 -7.962700 0.329887 -0.177209 -0.927239 0 253 27 --2.020300 14.610600 -8.278800 0.329887 -0.177209 -0.927239 0 253 27 --0.294400 16.169500 -7.962700 0.923351 -0.382504 0.033356 157 130 53 --1.221800 14.450400 -2.004100 0.923351 -0.382504 0.033356 0 252 27 --0.971400 14.644800 -6.706400 0.923351 -0.382504 0.033356 27 229 30 --5.308800 13.910900 -3.738700 -0.281184 -0.501171 0.818391 23 254 48 --1.766900 13.754900 -2.918700 -0.281184 -0.501171 0.818391 0 254 27 --1.221800 14.450400 -2.004100 -0.281184 -0.501171 0.818391 0 254 27 --6.498700 14.643000 -4.000600 -0.281184 -0.501171 0.818391 91 254 108 --4.649800 14.945700 -8.785600 -0.465679 -0.853476 -0.233927 254 68 73 --5.308800 13.910900 -3.738700 -0.465679 -0.853476 -0.233927 254 68 73 --6.498700 14.643000 -4.000600 -0.465679 -0.853476 -0.233927 254 68 73 --5.259600 15.490400 -9.599400 -0.465679 -0.853476 -0.233927 254 68 73 --1.957400 20.620800 -1.217700 0.981627 0.066418 0.178877 0 253 27 --0.899900 21.410400 -8.342700 0.981627 0.066418 0.178877 1 216 59 --0.835600 22.853901 -8.203000 0.981627 0.066418 0.178877 2 205 69 --2.189200 21.987900 -1.481800 0.981627 0.066418 0.178877 0 253 27 --7.174300 32.815300 -5.168000 -0.882053 0.156893 -0.444261 0 253 27 --6.542300 35.480598 -4.902800 -0.882053 0.156893 -0.444261 0 253 27 --5.283200 35.952900 -7.814600 -0.882053 0.156893 -0.444261 0 254 27 --4.970000 33.082802 -8.871300 -0.882053 0.156893 -0.444261 0 253 27 --5.598500 31.822901 -1.405400 -0.892193 0.169920 0.418473 133 152 48 --6.542300 35.480598 -4.902800 -0.892193 0.169920 0.418473 0 253 27 --7.174300 32.815300 -5.168000 -0.892193 0.169920 0.418473 0 253 27 --4.685700 36.664101 -1.616400 -0.474113 0.127364 0.871203 13 226 40 --5.598500 31.822901 -1.405400 -0.474113 0.127364 0.871203 133 152 48 --3.798500 31.552500 -0.386300 -0.474113 0.127364 0.871203 211 97 63 --2.225300 60.301201 -1.334400 -0.926529 0.086891 0.366052 254 254 254 --2.209500 61.230499 -1.515000 -0.926529 0.086891 0.366052 254 254 254 --2.484800 60.667999 -2.078300 -0.926529 0.086891 0.366052 254 254 254 --8.927200 49.128502 -4.128200 -0.174303 -0.164506 0.970853 0 253 27 --7.813100 49.342701 -3.886900 -0.174303 -0.164506 0.970853 0 253 27 --8.184300 53.108700 -3.320400 -0.174303 -0.164506 0.970853 0 253 27 --9.508400 52.403099 -3.672700 -0.174303 -0.164506 0.970853 0 253 27 --8.184300 53.108700 -3.320400 -0.526523 0.826719 0.198265 0 253 27 --8.747800 53.770199 -7.353300 -0.526523 0.826719 0.198265 0 253 27 --9.827700 52.989700 -7.188500 -0.526523 0.826719 0.198265 0 253 27 --9.508400 52.403099 -3.672700 -0.526523 0.826719 0.198265 0 253 27 --8.747800 53.770199 -7.353300 -0.154881 -0.035505 -0.987295 0 254 27 --7.252500 54.524502 -7.615000 -0.154881 -0.035505 -0.987295 0 254 27 --6.775800 50.206501 -7.534500 -0.154881 -0.035505 -0.987295 0 254 27 --8.927200 49.128502 -4.128200 0.001669 -0.169906 0.985459 0 253 27 --9.508400 52.403099 -3.672700 0.001669 -0.169906 0.985459 0 253 27 --15.636800 49.715099 -4.015700 0.001669 -0.169906 0.985459 0 253 27 --14.977100 45.689201 -4.821000 0.001669 -0.169906 0.985459 0 248 31 --6.624100 53.529800 -2.653700 -0.215818 0.814400 0.538680 0 253 27 --3.773800 51.093601 -1.034300 -0.215818 0.814400 0.538680 0 253 27 --1.435700 55.057400 -2.884500 -0.215818 0.814400 0.538680 0 253 27 --7.252500 54.524502 -7.615000 -0.215818 0.814400 0.538680 0 253 27 --2.321200 55.471001 -5.570800 -0.276118 0.932071 0.234526 0 253 27 --7.252500 54.524502 -7.615000 -0.276118 0.932071 0.234526 0 253 27 --1.435700 55.057400 -2.884500 -0.276118 0.932071 0.234526 0 253 27 --2.209500 61.230499 -1.515000 -0.942806 0.279456 0.181716 254 254 254 --2.505800 61.413601 -3.333900 -0.942806 0.279456 0.181716 254 254 254 --2.484800 60.667999 -2.078300 -0.942806 0.279456 0.181716 254 254 254 --2.484800 60.667999 -2.078300 -0.998559 -0.051788 -0.014052 254 254 254 --2.505800 61.413601 -3.333900 -0.998559 -0.051788 -0.014052 254 254 254 --2.361600 58.652599 -3.405400 -0.998559 -0.051788 -0.014052 254 254 254 --2.209500 61.230499 -1.515000 -0.107977 -0.909631 0.401138 254 254 254 --1.340700 61.343498 -1.024900 -0.107977 -0.909631 0.401138 254 254 254 --1.792100 61.563202 -0.648200 -0.107977 -0.909631 0.401138 254 254 254 --3.061600 3.537800 -3.461700 0.234488 0.898953 0.369997 18 0 252 --3.735600 1.816900 0.228400 0.234488 0.898953 0.369997 18 0 253 --1.568700 1.981700 -0.627100 0.234488 0.898953 0.369997 18 0 253 --1.553600 3.059500 -4.173500 0.234488 0.898953 0.369997 18 0 253 --0.626000 0.031700 -8.336200 0.992053 0.072189 0.103052 18 0 253 --1.553600 3.059500 -4.173500 0.992053 0.072189 0.103052 18 0 253 --1.568700 1.981700 -0.627100 0.992053 0.072189 0.103052 18 0 253 --1.825200 -0.024100 0.601200 0.992053 0.072189 0.103052 18 0 253 --1.825200 -0.024100 0.601200 -0.002195 -0.999985 -0.005027 18 0 253 --3.769300 -0.009000 1.132900 -0.002195 -0.999985 -0.005027 18 0 253 --1.712600 0.024900 -9.195700 -0.002195 -0.999985 -0.005027 19 0 253 --0.626000 0.031700 -8.336200 -0.002195 -0.999985 -0.005027 19 0 253 --1.712600 0.024900 -9.195700 0.748722 0.074200 -0.658719 254 68 73 --2.020300 14.610600 -8.278800 0.748722 0.074200 -0.658719 0 253 27 --0.971400 14.644800 -6.706400 0.748722 0.074200 -0.658719 0 253 27 --0.626000 0.031700 -8.336200 0.748722 0.074200 -0.658719 254 68 73 --1.568700 1.981700 -0.627100 0.270273 0.452545 0.849798 18 0 253 --3.735600 1.816900 0.228400 0.270273 0.452545 0.849798 18 0 253 --3.769300 -0.009000 1.132900 0.270273 0.452545 0.849798 18 0 253 --1.825200 -0.024100 0.601200 0.270273 0.452545 0.849798 19 0 253 --4.089400 2.633000 -5.031300 -0.957442 -0.073711 -0.279054 188 254 194 --3.252600 0.001600 -8.591000 -0.957442 -0.073711 -0.279054 0 254 27 --5.176800 -0.025000 -0.598300 -0.957442 -0.073711 -0.279054 254 254 254 --5.390300 1.568200 -1.670300 -0.957442 -0.073711 -0.279054 254 254 254 --3.769300 -0.009000 1.132900 -0.738109 0.308147 0.600201 18 0 253 --3.735600 1.816900 0.228400 -0.738109 0.308147 0.600201 18 0 253 --5.390300 1.568200 -1.670300 -0.738109 0.308147 0.600201 18 0 253 --5.176800 -0.025000 -0.598300 -0.738109 0.308147 0.600201 18 0 253 --5.390300 1.568200 -1.670300 -0.560649 0.811720 0.163660 18 0 253 --3.735600 1.816900 0.228400 -0.560649 0.811720 0.163660 18 0 253 --3.061600 3.537800 -3.461700 -0.560649 0.811720 0.163660 18 0 252 --4.089400 2.633000 -5.031300 -0.560649 0.811720 0.163660 18 0 252 --3.061600 3.537800 -3.461700 -0.452521 -0.074303 0.888653 18 0 252 --1.766900 13.754900 -2.918700 -0.452521 -0.074303 0.888653 0 254 27 --5.308800 13.910900 -3.738700 -0.452521 -0.074303 0.888653 14 254 41 --4.089400 2.633000 -5.031300 -0.452521 -0.074303 0.888653 18 0 252 --2.020300 14.610600 -8.278800 0.001520 -0.830500 -0.557017 0 253 27 --4.649800 14.945700 -8.785600 0.001520 -0.830500 -0.557017 0 253 27 --5.259600 15.490400 -9.599400 0.001520 -0.830500 -0.557017 0 253 27 --2.020300 14.610600 -8.278800 0.649568 -0.634088 -0.419515 0 253 27 --0.294400 16.169500 -7.962700 0.649568 -0.634088 -0.419515 0 253 27 --0.971400 14.644800 -6.706400 0.649568 -0.634088 -0.419515 0 253 27 --5.426000 21.341299 -8.131100 -0.959570 0.028386 -0.280036 254 254 254 --6.827700 20.858999 -3.051400 -0.959570 0.028386 -0.280036 254 254 254 --6.824000 22.193899 -3.254300 -0.959570 0.028386 -0.280036 254 254 254 --5.317800 22.936800 -8.014600 -0.959570 0.028386 -0.280036 254 254 254 --0.845100 29.891001 -9.491500 -0.126028 -0.127868 -0.983751 0 253 27 --0.835600 22.853901 -8.203000 -0.126028 -0.127868 -0.983751 0 253 27 --5.317800 22.936800 -8.014600 -0.126028 -0.127868 -0.983751 0 253 27 --5.595300 29.761600 -8.491100 -0.126028 -0.127868 -0.983751 0 254 27 --1.957400 20.620800 -1.217700 -0.346283 0.131313 0.928895 242 254 242 --2.189200 21.987900 -1.481800 -0.346283 0.131313 0.928895 218 254 222 --6.824000 22.193899 -3.254300 -0.346283 0.131313 0.928895 99 254 117 --6.827700 20.858999 -3.051400 -0.346283 0.131313 0.928895 166 254 175 --0.605400 59.453602 0.006800 -0.276378 -0.886938 0.370075 254 254 254 -0.000000 59.375900 0.272700 -0.276378 -0.886938 0.370075 254 254 254 --0.226300 59.631802 0.717000 -0.276378 -0.886938 0.370075 254 254 254 --21.936399 43.055199 -3.733600 -0.245050 -0.199318 0.948801 24 182 75 --22.348700 46.932201 -2.822400 -0.245050 -0.199318 0.948801 72 195 37 --23.323000 46.228001 -3.425200 -0.245050 -0.199318 0.948801 26 230 29 --23.265499 44.290199 -3.614200 -0.245050 -0.199318 0.948801 37 214 37 --22.105101 44.119598 -7.074000 -0.680722 -0.210597 -0.701617 254 254 254 --23.273100 44.479099 -6.170500 -0.680722 -0.210597 -0.701617 254 254 254 --23.881300 46.267799 -5.995500 -0.680722 -0.210597 -0.701617 254 254 254 --23.337700 47.268200 -6.945000 -0.680722 -0.210597 -0.701617 254 254 254 --22.348700 46.932201 -2.822400 -0.710630 0.673907 0.202126 72 195 37 --23.337700 47.268200 -6.945000 -0.710630 0.673907 0.202126 0 254 27 --23.881300 46.267799 -5.995500 -0.710630 0.673907 0.202126 0 253 27 --23.323000 46.228001 -3.425200 -0.710630 0.673907 0.202126 26 230 29 --21.936399 43.055199 -3.733600 -0.575702 -0.803125 -0.153486 254 68 73 --23.265499 44.290199 -3.614200 -0.575702 -0.803125 -0.153486 254 68 73 --23.273100 44.479099 -6.170500 -0.575702 -0.803125 -0.153486 254 68 73 --22.105101 44.119598 -7.074000 -0.575702 -0.803125 -0.153486 254 68 73 --23.323000 46.228001 -3.425200 0.234519 0.052147 0.970712 26 230 29 --24.935400 45.742901 -3.288800 0.234519 0.052147 0.970712 80 189 39 --24.446100 44.099098 -3.039500 0.234519 0.052147 0.970712 144 136 53 --23.265499 44.290199 -3.614200 0.234519 0.052147 0.970712 37 214 37 --23.273100 44.479099 -6.170500 -0.051663 0.047611 -0.997529 16 254 41 --25.718901 44.407902 -5.989100 -0.051663 0.047611 -0.997529 47 254 71 --25.982700 45.641201 -5.974700 -0.051663 0.047611 -0.997529 53 254 75 --23.881300 46.267799 -5.995500 -0.051663 0.047611 -0.997529 23 254 48 --23.881300 46.267799 -5.995500 -0.283035 0.956157 0.075198 0 253 27 --25.982700 45.641201 -5.974700 -0.283035 0.956157 0.075198 0 253 27 --24.935400 45.742901 -3.288800 -0.283035 0.956157 0.075198 80 189 39 --23.323000 46.228001 -3.425200 -0.283035 0.956157 0.075198 26 230 29 --23.265499 44.290199 -3.614200 0.050680 -0.993534 -0.101596 0 254 27 --24.446100 44.099098 -3.039500 0.050680 -0.993534 -0.101596 0 254 27 --25.718901 44.407902 -5.989100 0.050680 -0.993534 -0.101596 47 254 71 --23.273100 44.479099 -6.170500 0.050680 -0.993534 -0.101596 16 254 41 --3.798500 31.552500 -0.386300 -0.302820 0.047342 0.951871 211 97 63 -0.000000 31.552500 0.128500 -0.302820 0.047342 0.951871 203 101 62 -0.000000 37.009800 0.550700 -0.302820 0.047342 0.951871 172 124 55 --4.685700 36.664101 -1.616400 -0.302820 0.047342 0.951871 13 226 40 --27.058001 43.733101 -1.471100 -0.612973 -0.035197 0.789319 254 68 73 --28.100901 44.177299 -2.470000 -0.612973 -0.035197 0.789319 231 80 64 --27.637899 42.321201 -1.984400 -0.612973 -0.035197 0.789319 254 68 73 --26.775499 43.007000 -1.492900 -0.612973 -0.035197 0.789319 254 68 73 --27.102699 45.320202 -5.735100 -0.288380 -0.175341 -0.941325 75 254 93 --25.982700 45.641201 -5.974700 -0.288380 -0.175341 -0.941325 53 254 75 --25.718901 44.407902 -5.989100 -0.288380 -0.175341 -0.941325 47 254 71 --26.246300 42.901402 -5.383600 -0.288380 -0.175341 -0.941325 20 254 46 --24.935400 45.742901 -3.288800 -0.215944 0.976143 0.022647 80 254 99 --25.982700 45.641201 -5.974700 -0.215944 0.976143 0.022647 0 254 27 --27.102699 45.320202 -5.735100 -0.215944 0.976143 0.022647 0 254 27 --26.753901 45.398300 -2.858600 -0.215944 0.976143 0.022647 163 254 174 --24.446100 44.099098 -3.039500 0.806467 -0.440747 -0.394147 0 249 30 --26.246300 42.901402 -5.383600 0.806467 -0.440747 -0.394147 19 213 43 --25.718901 44.407902 -5.989100 0.806467 -0.440747 -0.394147 46 208 34 --28.380600 42.330502 -3.056600 -0.840529 -0.044209 0.539960 254 68 73 --27.637899 42.321201 -1.984400 -0.840529 -0.044209 0.539960 254 68 73 --28.100901 44.177299 -2.470000 -0.840529 -0.044209 0.539960 254 68 73 --28.697901 44.238201 -3.477500 -0.840529 -0.044209 0.539960 254 68 73 --28.380600 42.330502 -3.056600 -0.979149 -0.175223 -0.102788 254 254 254 --28.697901 44.238201 -3.477500 -0.979149 -0.175223 -0.102788 254 254 254 --28.543800 44.178001 -4.651400 -0.979149 -0.175223 -0.102788 254 254 254 --28.292801 42.543098 -4.446800 -0.979149 -0.175223 -0.102788 254 254 254 --26.753901 45.398300 -2.858600 -0.560189 0.737837 0.376544 163 125 53 --28.697901 44.238201 -3.477500 -0.560189 0.737837 0.376544 97 175 41 --28.100901 44.177299 -2.470000 -0.560189 0.737837 0.376544 231 80 64 --24.935400 45.742901 -3.288800 0.484106 0.321222 0.813915 80 189 39 --26.117701 44.487900 -2.198700 0.484106 0.321222 0.813915 242 74 67 --25.587200 43.557701 -2.038700 0.484106 0.321222 0.813915 253 67 73 --24.446100 44.099098 -3.039500 0.484106 0.321222 0.813915 144 136 53 --24.446100 44.099098 -3.039500 0.765721 -0.642695 -0.024780 0 249 30 --25.587200 43.557701 -2.038700 0.765721 -0.642695 -0.024780 0 252 27 --25.491899 42.827301 -2.370100 0.765721 -0.642695 -0.024780 0 245 34 --26.246300 42.901402 -5.383600 0.765721 -0.642695 -0.024780 19 213 43 --26.753901 45.398300 -2.858600 0.068715 0.616533 0.784324 163 125 53 --26.117701 44.487900 -2.198700 0.068715 0.616533 0.784324 242 74 67 --24.935400 45.742901 -3.288800 0.068715 0.616533 0.784324 80 189 39 -0.000000 31.552500 0.128500 -0.069551 -0.031626 0.997077 203 101 62 --3.798500 31.552500 -0.386300 -0.069551 -0.031626 0.997077 211 97 63 --3.463700 23.872801 -0.356700 -0.069551 -0.031626 0.997077 254 68 73 -0.000000 24.132099 -0.356700 -0.069551 -0.031626 0.997077 243 74 70 --2.225300 60.301201 -1.334400 -0.789816 -0.226827 0.569860 254 254 254 --2.043500 58.694401 -1.722000 -0.789816 -0.226827 0.569860 254 247 247 --0.793500 58.611801 -0.022400 -0.789816 -0.226827 0.569860 254 246 246 --0.793500 58.611801 -0.022400 -0.800106 -0.097243 0.591924 254 246 246 --2.043500 58.694401 -1.722000 -0.800106 -0.097243 0.591924 254 247 247 --2.071800 58.080299 -1.837600 -0.800106 -0.097243 0.591924 254 224 225 --0.860300 57.339199 -0.345300 -0.800106 -0.097243 0.591924 254 172 174 --2.071800 58.080299 -1.837600 -0.594038 -0.791272 0.144939 254 224 225 --1.480400 57.287800 -3.167400 -0.594038 -0.791272 0.144939 254 153 157 --0.509500 56.862801 -2.081200 -0.594038 -0.791272 0.144939 254 129 132 --0.860300 57.339199 -0.345300 -0.594038 -0.791272 0.144939 254 172 174 --0.179900 61.274700 0.058500 -0.090663 0.188705 0.977840 0 254 27 -0.000000 61.912998 -0.048000 -0.090663 0.188705 0.977840 0 254 27 --0.785400 61.539799 -0.048800 -0.090663 0.188705 0.977840 0 254 27 --15.884600 46.520500 -7.855800 -0.098387 0.080586 -0.991880 0 250 27 --17.208200 49.477699 -7.512200 -0.098387 0.080586 -0.991880 6 242 27 --16.136200 50.023998 -7.546200 -0.098387 0.080586 -0.991880 0 249 27 --14.885000 46.974701 -7.946000 -0.098387 0.080586 -0.991880 0 251 27 --15.636800 49.715099 -4.015700 -0.436830 0.889212 0.135946 0 253 27 --16.136200 50.023998 -7.546200 -0.436830 0.889212 0.135946 0 253 27 --17.208200 49.477699 -7.512200 -0.436830 0.889212 0.135946 0 253 27 --16.810101 49.139900 -3.928800 -0.436830 0.889212 0.135946 0 253 27 --16.192200 44.960400 -4.877100 0.435886 -0.826304 -0.356686 0 236 42 --15.884600 46.520500 -7.855800 0.435886 -0.826304 -0.356686 0 253 27 --14.885000 46.974701 -7.946000 0.435886 -0.826304 -0.356686 0 253 27 --14.977100 45.689201 -4.821000 0.435886 -0.826304 -0.356686 0 248 31 --16.810101 49.139900 -3.928800 0.116417 -0.190205 0.974818 236 81 69 --16.192200 44.960400 -4.877100 0.116417 -0.190205 0.974818 200 90 77 --14.977100 45.689201 -4.821000 0.116417 -0.190205 0.974818 174 120 62 --15.636800 49.715099 -4.015700 0.116417 -0.190205 0.974818 218 94 66 --13.779500 47.417198 -7.715300 -0.030432 0.115440 -0.992848 0 253 27 --14.989100 50.565300 -7.297200 -0.030432 0.115440 -0.992848 0 252 27 --9.827700 52.989700 -7.188500 -0.030432 0.115440 -0.992848 0 253 27 --8.756500 49.321098 -7.632900 -0.030432 0.115440 -0.992848 0 253 27 --15.636800 49.715099 -4.015700 -0.447311 0.883265 0.140554 0 253 27 --14.989100 50.565300 -7.297200 -0.447311 0.883265 0.140554 0 253 27 --16.136200 50.023998 -7.546200 -0.447311 0.883265 0.140554 0 253 27 --13.779500 47.417198 -7.715300 0.409629 -0.847844 -0.336697 0 253 27 --14.977100 45.689201 -4.821000 0.409629 -0.847844 -0.336697 0 253 27 --14.885000 46.974701 -7.946000 0.409629 -0.847844 -0.336697 0 251 27 --0.971400 14.644800 -6.706400 0.777065 -0.629233 0.015366 27 229 30 --1.221800 14.450400 -2.004100 0.777065 -0.629233 0.015366 0 252 27 --1.766900 13.754900 -2.918700 0.777065 -0.629233 0.015366 0 253 27 --26.117701 44.487900 -2.198700 0.374471 0.258120 0.890587 242 74 67 --27.058001 43.733101 -1.471100 0.374471 0.258120 0.890587 254 68 73 --26.775499 43.007000 -1.492900 0.374471 0.258120 0.890587 254 68 73 --25.587200 43.557701 -2.038700 0.374471 0.258120 0.890587 253 67 73 --25.587200 43.557701 -2.038700 0.386633 -0.610879 0.690899 0 252 27 --26.775499 43.007000 -1.492900 0.386633 -0.610879 0.690899 0 253 27 --27.637899 42.321201 -1.984400 0.386633 -0.610879 0.690899 0 253 27 --25.491899 42.827301 -2.370100 0.386633 -0.610879 0.690899 0 245 34 --26.117701 44.487900 -2.198700 -0.202601 0.798645 0.566673 242 74 67 --28.100901 44.177299 -2.470000 -0.202601 0.798645 0.566673 231 80 64 --27.058001 43.733101 -1.471100 -0.202601 0.798645 0.566673 254 68 73 --8.184300 53.108700 -3.320400 -0.347207 -0.172872 0.921717 0 253 27 --7.813100 49.342701 -3.886900 -0.347207 -0.172872 0.921717 0 253 27 --6.624100 53.529800 -2.653700 -0.347207 -0.172872 0.921717 0 253 27 --8.747800 53.770199 -7.353300 -0.055764 0.062731 -0.996471 0 254 27 --6.775800 50.206501 -7.534500 -0.055764 0.062731 -0.996471 0 254 27 --8.756500 49.321098 -7.632900 -0.055764 0.062731 -0.996471 0 254 27 --9.827700 52.989700 -7.188500 -0.055764 0.062731 -0.996471 0 254 27 --28.543800 44.178001 -4.651400 -0.562493 0.826801 -0.001192 0 254 27 --28.697901 44.238201 -3.477500 -0.562493 0.826801 -0.001192 97 254 114 --26.753901 45.398300 -2.858600 -0.562493 0.826801 -0.001192 163 254 174 --27.102699 45.320202 -5.735100 -0.562493 0.826801 -0.001192 0 254 27 --26.246300 42.901402 -5.383600 0.106461 -0.983873 -0.143736 20 231 27 --28.380600 42.330502 -3.056600 0.106461 -0.983873 -0.143736 0 252 27 --28.292801 42.543098 -4.446800 0.106461 -0.983873 -0.143736 5 243 27 --28.100901 44.177299 -2.470000 -0.192584 0.484112 0.853550 231 80 64 --26.117701 44.487900 -2.198700 -0.192584 0.484112 0.853550 242 74 67 --26.753901 45.398300 -2.858600 -0.192584 0.484112 0.853550 163 125 53 --1.712600 0.024900 -9.195700 0.013475 -0.999909 -0.000374 254 254 254 --3.769300 -0.009000 1.132900 0.013475 -0.999909 -0.000374 0 254 27 --5.176800 -0.025000 -0.598300 0.013475 -0.999909 -0.000374 0 254 27 --3.252600 0.001600 -8.591000 0.013475 -0.999909 -0.000374 254 254 254 -0.000000 61.912998 -0.048000 -0.158526 0.331625 0.929997 0 254 27 -0.000000 62.775902 -0.355700 -0.158526 0.331625 0.929997 0 254 27 --0.785400 61.539799 -0.048800 -0.158526 0.331625 0.929997 0 254 27 --0.340300 31.400700 -9.922000 0.943854 -0.327649 -0.042263 0 253 27 --0.425600 30.069099 -1.503600 0.943854 -0.327649 -0.042263 0 253 27 --0.845100 29.891001 -9.491500 0.943854 -0.327649 -0.042263 0 253 27 -0.000000 54.522099 -2.187600 0.000000 -0.045410 0.998968 235 81 69 -0.000000 56.862801 -2.081200 0.000000 -0.045410 0.998968 254 127 130 --0.509500 56.862801 -2.081200 0.000000 -0.045410 0.998968 254 129 132 --0.509500 56.862801 -2.081200 -0.098448 -0.971038 0.217700 254 129 132 -0.000000 56.862801 -2.081200 -0.098448 -0.971038 0.217700 254 127 130 -0.000000 57.320400 0.190300 -0.098448 -0.971038 0.217700 254 190 192 --0.860300 57.339199 -0.345300 -0.098448 -0.971038 0.217700 254 172 174 --5.598500 31.822901 -1.405400 -0.881296 0.021519 0.472075 133 152 48 --7.453900 29.910801 -4.782000 -0.881296 0.021519 0.472075 0 253 27 --6.824000 22.193899 -3.254300 -0.881296 0.021519 0.472075 99 254 117 --6.824000 22.193899 -3.254300 -0.921164 -0.108973 -0.373607 254 68 73 --7.453900 29.910801 -4.782000 -0.921164 -0.108973 -0.373607 254 68 73 --5.595300 29.761600 -8.491100 -0.921164 -0.108973 -0.373607 254 68 73 --5.317800 22.936800 -8.014600 -0.921164 -0.108973 -0.373607 254 68 73 --3.798500 31.552500 -0.386300 -0.402805 -0.146650 0.903461 211 97 63 --5.598500 31.822901 -1.405400 -0.402805 -0.146650 0.903461 133 152 48 --6.824000 22.193899 -3.254300 -0.402805 -0.146650 0.903461 99 254 117 --2.189200 21.987900 -1.481800 -0.402805 -0.146650 0.903461 218 254 222 --0.340300 31.400700 -9.922000 -0.229486 -0.108632 -0.967231 0 253 27 --0.845100 29.891001 -9.491500 -0.229486 -0.108632 -0.967231 0 253 27 --5.595300 29.761600 -8.491100 -0.229486 -0.108632 -0.967231 0 254 27 --4.970000 33.082802 -8.871300 -0.229486 -0.108632 -0.967231 0 254 27 --0.835600 22.853901 -8.203000 0.992234 -0.110109 0.057862 2 205 69 --0.845100 29.891001 -9.491500 0.992234 -0.110109 0.057862 0 241 37 --0.425600 30.069099 -1.503600 0.992234 -0.110109 0.057862 0 253 27 --2.189200 21.987900 -1.481800 0.992234 -0.110109 0.057862 0 253 27 --2.162800 35.743500 -9.599900 -0.324262 0.084100 -0.942221 0 254 27 --0.340300 31.400700 -9.922000 -0.324262 0.084100 -0.942221 0 253 27 --4.970000 33.082802 -8.871300 -0.324262 0.084100 -0.942221 0 254 27 --5.283200 35.952900 -7.814600 -0.324262 0.084100 -0.942221 0 254 27 --5.283200 35.952900 -7.814600 -0.889642 0.311183 -0.334218 0 254 27 --6.542300 35.480598 -4.902800 -0.889642 0.311183 -0.334218 0 254 27 --5.919200 37.619099 -4.570300 -0.889642 0.311183 -0.334218 0 254 27 --5.919200 37.619099 -4.570300 -0.882633 0.186716 0.431389 0 253 27 --6.542300 35.480598 -4.902800 -0.882633 0.186716 0.431389 0 253 27 --5.598500 31.822901 -1.405400 -0.882633 0.186716 0.431389 133 152 48 --4.685700 36.664101 -1.616400 -0.882633 0.186716 0.431389 13 240 28 --0.474100 61.294899 -0.607800 -0.490764 0.255871 0.832875 0 254 27 --1.340700 61.343498 -1.024900 -0.490764 0.255871 0.832875 0 254 27 --2.225300 60.301201 -1.334400 -0.490764 0.255871 0.832875 0 254 27 --0.596000 60.268700 -0.255900 -0.490764 0.255871 0.832875 0 254 27 --1.340700 61.343498 -1.024900 -0.199083 -0.932669 0.300824 254 254 254 --0.474100 61.294899 -0.607800 -0.199083 -0.932669 0.300824 254 254 254 --0.785400 61.539799 -0.048800 -0.199083 -0.932669 0.300824 254 254 254 --1.792100 61.563202 -0.648200 -0.199083 -0.932669 0.300824 254 254 254 -0.000000 45.235802 -8.516300 -0.205813 0.023108 -0.978318 0 253 27 -0.000000 38.221600 -8.073300 -0.205813 0.023108 -0.978318 0 253 27 --2.827600 38.171799 -8.088300 -0.205813 0.023108 -0.978318 0 253 27 --5.495700 46.043098 -6.732400 -0.205813 0.023108 -0.978318 0 253 27 --0.425600 30.069099 -1.503600 0.289736 -0.060654 0.955183 254 254 254 --3.798500 31.552500 -0.386300 0.289736 -0.060654 0.955183 254 254 254 --2.189200 21.987900 -1.481800 0.289736 -0.060654 0.955183 254 254 254 -0.000000 31.547001 -9.939100 0.347255 -0.926523 -0.144807 254 68 73 -0.000000 30.215401 -1.522000 0.347255 -0.926523 -0.144807 254 68 73 --0.425600 30.069099 -1.503600 0.347255 -0.926523 -0.144807 254 68 73 --0.340300 31.400700 -9.922000 0.347255 -0.926523 -0.144807 254 68 73 --21.061199 44.183601 -7.611200 -0.028361 0.039319 -0.998824 52 208 31 --22.585199 48.327702 -7.594400 -0.028361 0.039319 -0.998824 104 170 42 --17.208200 49.477699 -7.512200 -0.028361 0.039319 -0.998824 6 242 27 --15.884600 46.520500 -7.855800 -0.028361 0.039319 -0.998824 0 250 27 --22.348700 46.932201 -2.822400 -0.723103 0.652497 0.226650 72 195 37 --22.585199 48.327702 -7.594400 -0.723103 0.652497 0.226650 0 253 27 --23.337700 47.268200 -6.945000 -0.723103 0.652497 0.226650 0 254 27 --21.061199 44.183601 -7.611200 -0.095048 -0.949863 -0.297868 52 208 31 --21.936399 43.055199 -3.733600 -0.095048 -0.949863 -0.297868 0 253 27 --22.105101 44.119598 -7.074000 -0.095048 -0.949863 -0.297868 30 225 27 -0.000000 59.375900 0.272700 0.000000 -0.866545 0.499100 254 254 254 -0.226300 59.631802 0.717000 0.000000 -0.866545 0.499100 254 254 254 --0.226300 59.631802 0.717000 0.000000 -0.866545 0.499100 254 254 254 --0.163800 60.672798 0.405300 0.000000 0.286842 0.957978 0 254 27 --0.226300 59.631802 0.717000 0.000000 0.286842 0.957978 0 254 27 -0.226300 59.631802 0.717000 0.000000 0.286842 0.957978 0 254 27 -0.163800 60.672798 0.405300 0.000000 0.286842 0.957978 0 254 27 --0.340300 31.400700 -9.922000 -0.012671 0.074070 -0.997173 0 253 27 --2.162800 35.743500 -9.599900 -0.012671 0.074070 -0.997173 0 253 27 -0.000000 35.795200 -9.599900 -0.012671 0.074070 -0.997173 0 253 27 -0.000000 31.547001 -9.939100 -0.012671 0.074070 -0.997173 0 253 27 --5.919200 37.619099 -4.570300 -0.561685 0.544798 -0.622660 0 254 27 --2.827600 38.171799 -8.088300 -0.561685 0.544798 -0.622660 0 254 27 --2.162800 35.743500 -9.599900 -0.561685 0.544798 -0.622660 0 254 27 --5.283200 35.952900 -7.814600 -0.561685 0.544798 -0.622660 0 254 27 --28.543800 44.178001 -4.651400 -0.410462 -0.233070 -0.881589 254 254 254 --27.102699 45.320202 -5.735100 -0.410462 -0.233070 -0.881589 254 254 254 --26.246300 42.901402 -5.383600 -0.410462 -0.233070 -0.881589 254 254 254 --28.292801 42.543098 -4.446800 -0.410462 -0.233070 -0.881589 254 254 254 --25.491899 42.827301 -2.370100 0.201709 -0.968181 -0.148119 0 254 27 --27.637899 42.321201 -1.984400 0.201709 -0.968181 -0.148119 0 254 27 --28.380600 42.330502 -3.056600 0.201709 -0.968181 -0.148119 0 254 27 --26.246300 42.901402 -5.383600 0.185319 -0.980147 -0.070494 20 231 27 --25.491899 42.827301 -2.370100 0.185319 -0.980147 -0.070494 0 253 27 --28.380600 42.330502 -3.056600 0.185319 -0.980147 -0.070494 0 252 27 --0.179900 61.274700 0.058500 0.000000 0.499235 0.866467 0 254 27 --0.163800 60.672798 0.405300 0.000000 0.499235 0.866467 0 254 27 -0.163800 60.672798 0.405300 0.000000 0.499235 0.866467 0 254 27 -0.179900 61.274700 0.058500 0.000000 0.499235 0.866467 0 254 27 -0.000000 61.912998 -0.048000 0.000000 0.164575 0.986365 0 254 27 --0.179900 61.274700 0.058500 0.000000 0.164575 0.986365 0 254 27 -0.179900 61.274700 0.058500 0.000000 0.164575 0.986365 0 254 27 --2.162800 35.743500 -9.599900 -0.008224 0.529675 -0.848161 0 253 27 --2.827600 38.171799 -8.088300 -0.008224 0.529675 -0.848161 0 253 27 -0.000000 38.221600 -8.073300 -0.008224 0.529675 -0.848161 0 253 27 -0.000000 35.795200 -9.599900 -0.008224 0.529675 -0.848161 0 253 27 -4.620900 14.945700 -8.516100 0.163464 0.013069 -0.986463 0 253 27 -3.252600 0.001600 -8.591000 0.163464 0.013069 -0.986463 235 80 66 -1.712600 0.024900 -9.195700 0.163464 0.013069 -0.986463 254 68 73 -1.456400 14.610600 -8.695100 0.163464 0.013069 -0.986463 0 253 27 -4.089400 2.633000 -5.031300 0.982688 -0.088487 -0.162770 18 0 253 -3.252600 0.001600 -8.591000 0.982688 -0.088487 -0.162770 19 0 253 -4.620900 14.945700 -8.516100 0.982688 -0.088487 -0.162770 0 247 31 -5.308800 13.910900 -3.738700 0.982688 -0.088487 -0.162770 0 253 27 -1.553600 3.059500 -4.173500 -0.398905 -0.098999 0.911633 18 0 253 -3.061600 3.537800 -3.461700 -0.398905 -0.098999 0.911633 18 0 253 -1.766900 13.754900 -2.918700 -0.398905 -0.098999 0.911633 0 254 27 -1.553600 3.059500 -4.173500 -0.983093 0.009545 0.182857 254 254 254 -1.766900 13.754900 -2.918700 -0.983093 0.009545 0.182857 254 254 254 -1.239800 14.644800 -6.465300 -0.983093 0.009545 0.182857 254 254 254 -0.626000 0.031700 -8.336200 -0.983093 0.009545 0.182857 254 254 254 -5.495700 46.043098 -6.732400 0.860977 -0.085411 -0.501422 0 252 27 -6.029500 46.188801 -3.956000 0.860977 -0.085411 -0.501422 0 253 27 -5.919200 37.619099 -4.570300 0.860977 -0.085411 -0.501422 9 98 162 -2.827600 38.171799 -8.088300 0.860977 -0.085411 -0.501422 8 119 142 -4.685700 36.664101 -1.616400 0.917535 -0.032092 0.396359 0 250 28 -5.919200 37.619099 -4.570300 0.917535 -0.032092 0.396359 9 98 162 -6.029500 46.188801 -3.956000 0.917535 -0.032092 0.396359 0 253 27 -4.298500 47.001099 -0.058900 0.917535 -0.032092 0.396359 0 253 27 -6.775800 50.206501 -7.534500 0.223809 0.028781 -0.974208 0 253 27 -0.000000 50.037800 -9.413700 0.223809 0.028781 -0.974208 0 253 27 -0.000000 53.738098 -8.986800 0.223809 0.028781 -0.974208 0 253 27 -7.252500 54.524502 -7.615000 0.223809 0.028781 -0.974208 0 254 27 -7.252500 54.524502 -7.615000 0.375359 0.901424 0.215731 0 254 27 -6.624100 53.529800 -2.653700 0.375359 0.901424 0.215731 0 253 27 -8.184300 53.108700 -3.320400 0.375359 0.901424 0.215731 0 253 27 -8.747800 53.770199 -7.353300 0.375359 0.901424 0.215731 0 253 27 -9.827700 52.989700 -7.188500 0.412168 0.895237 0.169320 0 253 27 -9.508400 52.403099 -3.672700 0.412168 0.895237 0.169320 0 253 27 -15.636800 49.715099 -4.015700 0.412168 0.895237 0.169320 1 215 59 -14.989100 50.565300 -7.297200 0.412168 0.895237 0.169320 0 249 29 -0.000000 37.009800 0.550700 0.339751 -0.089043 0.936291 0 253 27 -4.685700 36.664101 -1.616400 0.339751 -0.089043 0.936291 0 250 28 -4.298500 47.001099 -0.058900 0.339751 -0.089043 0.936291 0 253 27 -0.000000 47.287498 1.094200 0.339751 -0.089043 0.936291 0 253 27 -0.000000 53.738098 -8.986800 0.139268 0.841727 -0.521633 0 253 27 -0.000000 55.950600 -7.250100 0.139268 0.841727 -0.521633 0 253 27 -2.321200 55.471001 -5.570800 0.139268 0.841727 -0.521633 0 253 27 -7.252500 54.524502 -7.615000 0.139268 0.841727 -0.521633 0 254 27 -3.773800 51.093601 -1.034300 0.772400 -0.022870 0.634725 0 253 27 -4.298500 47.001099 -0.058900 0.772400 -0.022870 0.634725 0 253 27 -6.029500 46.188801 -3.956000 0.772400 -0.022870 0.634725 0 253 27 -6.624100 53.529800 -2.653700 0.772400 -0.022870 0.634725 0 253 27 -6.624100 53.529800 -2.653700 0.299992 -0.190133 0.934802 254 68 73 -6.029500 46.188801 -3.956000 0.299992 -0.190133 0.934802 254 68 73 -7.813100 49.342701 -3.886900 0.299992 -0.190133 0.934802 254 68 73 -0.000000 50.880199 0.110000 0.266804 0.255185 0.929352 0 253 27 -0.000000 47.287498 1.094200 0.266804 0.255185 0.929352 0 252 27 -4.298500 47.001099 -0.058900 0.266804 0.255185 0.929352 0 253 27 -3.773800 51.093601 -1.034300 0.266804 0.255185 0.929352 0 253 27 -16.136200 50.023998 -7.546200 -0.129075 0.179950 -0.975171 0 253 27 -14.885000 46.974701 -7.946000 -0.129075 0.179950 -0.975171 0 253 27 -13.779500 47.417198 -7.715300 -0.129075 0.179950 -0.975171 0 253 27 -14.989100 50.565300 -7.297200 -0.129075 0.179950 -0.975171 0 253 27 -13.779500 47.417198 -7.715300 -0.437873 -0.882573 -0.171264 0 253 27 -14.977100 45.689201 -4.821000 -0.437873 -0.882573 -0.171264 0 253 27 -8.927200 49.128502 -4.128200 -0.437873 -0.882573 -0.171264 0 253 27 -8.756500 49.321098 -7.632900 -0.437873 -0.882573 -0.171264 0 253 27 -17.208200 49.477699 -7.512200 0.268622 0.938905 0.215175 0 227 47 -16.810101 49.139900 -3.928800 0.268622 0.938905 0.215175 35 133 112 -22.348700 46.932201 -2.822400 0.268622 0.938905 0.215175 19 0 250 -22.585199 48.327702 -7.594400 0.268622 0.938905 0.215175 0 236 38 -21.936399 43.055199 -3.733600 -0.256926 -0.186034 0.948357 19 0 253 -22.348700 46.932201 -2.822400 -0.256926 -0.186034 0.948357 19 0 250 -16.810101 49.139900 -3.928800 -0.256926 -0.186034 0.948357 35 133 112 -16.192200 44.960400 -4.877100 -0.256926 -0.186034 0.948357 18 0 253 -22.105101 44.119598 -7.074000 0.471869 -0.161034 -0.866838 0 253 27 -21.061199 44.183601 -7.611200 0.471869 -0.161034 -0.866838 0 253 27 -22.585199 48.327702 -7.594400 0.471869 -0.161034 -0.866838 0 253 27 -23.337700 47.268200 -6.945000 0.471869 -0.161034 -0.866838 0 253 27 -15.884600 46.520500 -7.855800 -0.312108 -0.901546 -0.299673 0 253 27 -21.061199 44.183601 -7.611200 -0.312108 -0.901546 -0.299673 0 253 27 -21.936399 43.055199 -3.733600 -0.312108 -0.901546 -0.299673 0 253 27 -16.192200 44.960400 -4.877100 -0.312108 -0.901546 -0.299673 0 253 27 -5.598500 31.822901 -1.404300 0.899204 0.141743 0.413933 0 240 37 -7.453900 29.910801 -4.780100 0.899204 0.141743 0.413933 18 0 251 -7.174300 32.815300 -5.167300 0.899204 0.141743 0.413933 17 7 244 -4.970000 33.082802 -8.871900 0.875445 0.068330 -0.478463 18 0 252 -7.174300 32.815300 -5.167300 0.875445 0.068330 -0.478463 17 7 244 -7.453900 29.910801 -4.780100 0.875445 0.068330 -0.478463 18 0 251 -5.595300 29.761600 -8.492500 0.875445 0.068330 -0.478463 18 0 253 -6.827700 20.858999 -3.044800 0.895156 -0.347215 -0.279532 0 231 44 -6.194700 19.576300 -3.478600 0.895156 -0.347215 -0.279532 0 248 31 -5.426000 21.341299 -8.132600 0.895156 -0.347215 -0.279532 15 21 230 -0.835600 22.853901 -8.210700 0.045309 0.086115 -0.995254 0 253 27 -5.317800 22.936800 -8.016200 0.045309 0.086115 -0.995254 0 253 27 -5.426000 21.341299 -8.132600 0.045309 0.086115 -0.995254 0 253 27 -0.899900 21.410400 -8.349400 0.045309 0.086115 -0.995254 0 253 27 -0.899900 21.410400 -8.349400 -0.986876 0.054006 0.152183 254 254 254 -1.853000 19.164200 -1.371600 -0.986876 0.054006 0.152183 254 254 254 -1.957400 20.620800 -1.211500 -0.986876 0.054006 0.152183 254 254 254 -6.194700 19.576300 -3.478600 0.393316 -0.294694 0.870895 0 248 31 -6.827700 20.858999 -3.044800 0.393316 -0.294694 0.870895 0 231 44 -1.957400 20.620800 -1.211500 0.393316 -0.294694 0.870895 0 253 27 -1.853000 19.164200 -1.371600 0.393316 -0.294694 0.870895 0 253 27 -5.117200 15.490400 -9.679700 -0.013076 0.210350 -0.977539 0 253 27 -0.134100 16.169500 -9.174700 -0.013076 0.210350 -0.977539 0 253 27 -0.899900 21.410400 -8.349400 -0.013076 0.210350 -0.977539 0 253 27 -5.426000 21.341299 -8.132600 -0.013076 0.210350 -0.977539 0 253 27 -0.134100 16.169500 -9.174700 -0.979250 0.051054 0.196120 0 254 27 -1.716700 14.450400 -2.459200 -0.979250 0.051054 0.196120 0 254 27 -1.853000 19.164200 -1.371600 -0.979250 0.051054 0.196120 0 254 27 -0.899900 21.410400 -8.349400 -0.979250 0.051054 0.196120 0 254 27 -1.853000 19.164200 -1.371600 0.369977 -0.140579 0.918343 0 253 27 -1.716700 14.450400 -2.459200 0.369977 -0.140579 0.918343 0 253 27 -6.069200 14.643000 -3.762300 0.369977 -0.140579 0.918343 0 253 27 -6.194700 19.576300 -3.478600 0.369977 -0.140579 0.918343 0 248 31 -6.069200 14.643000 -3.762300 0.986467 -0.011966 -0.163524 0 253 27 -5.117200 15.490400 -9.679700 0.986467 -0.011966 -0.163524 2 202 70 -5.426000 21.341299 -8.132600 0.986467 -0.011966 -0.163524 15 21 230 -6.194700 19.576300 -3.478600 0.986467 -0.011966 -0.163524 0 248 31 -7.813100 49.342701 -3.886900 0.881229 -0.394976 -0.259672 0 253 27 -6.029500 46.188801 -3.956000 0.881229 -0.394976 -0.259672 0 253 27 -5.495700 46.043098 -6.732400 0.881229 -0.394976 -0.259672 0 252 27 -6.775800 50.206501 -7.534500 0.881229 -0.394976 -0.259672 0 253 27 -8.756500 49.321098 -7.632900 -0.341557 -0.936397 -0.080618 254 68 73 -8.927200 49.128502 -4.128200 -0.341557 -0.936397 -0.080618 254 68 73 -7.813100 49.342701 -3.886900 -0.341557 -0.936397 -0.080618 254 68 73 -6.775800 50.206501 -7.534500 -0.341557 -0.936397 -0.080618 254 68 73 -5.495700 46.043098 -6.732400 0.295037 -0.218453 -0.930178 0 253 27 -0.000000 45.235802 -8.516300 0.295037 -0.218453 -0.930178 0 253 27 -0.000000 50.037800 -9.413700 0.295037 -0.218453 -0.930178 0 253 27 -6.775800 50.206501 -7.534500 0.295037 -0.218453 -0.930178 0 253 27 -3.773800 51.093601 -1.034300 0.217879 0.518058 0.827130 0 253 27 -1.435700 55.057400 -2.884500 0.217879 0.518058 0.827130 0 253 27 -0.000000 54.522099 -2.187600 0.217879 0.518058 0.827130 0 253 27 -0.000000 50.880199 0.110000 0.217879 0.518058 0.827130 0 253 27 -0.163800 60.672798 0.405300 0.878123 0.172158 0.446386 0 253 27 -0.226300 59.631802 0.717000 0.878123 0.172158 0.446386 0 253 27 -0.605400 59.453602 0.006800 0.878123 0.172158 0.446386 0 253 27 -0.596000 60.268700 -0.255900 0.878123 0.172158 0.446386 0 253 27 -0.000000 59.375900 0.272700 0.351825 0.003851 0.936058 0 253 27 -0.000000 58.735298 0.237300 0.351825 0.003851 0.936058 0 253 27 -0.793500 58.611801 -0.022400 0.351825 0.003851 0.936058 0 253 27 -0.605400 59.453602 0.006800 0.351825 0.003851 0.936058 0 253 27 -1.340700 61.343498 -1.024900 0.500896 0.173312 0.847978 254 254 254 -2.225300 60.301201 -1.334400 0.500896 0.173312 0.847978 254 254 254 -2.209500 61.230499 -1.515000 0.500896 0.173312 0.847978 254 254 254 -0.474100 61.294899 -0.607800 0.419394 -0.893935 0.158081 0 253 27 -0.785400 61.539799 -0.048800 0.419394 -0.893935 0.158081 0 253 27 -0.179900 61.274700 0.058500 0.419394 -0.893935 0.158081 0 253 27 -0.163800 60.672798 0.405300 0.879737 0.234636 0.413532 0 253 27 -0.596000 60.268700 -0.255900 0.879737 0.234636 0.413532 0 253 27 -0.474100 61.294899 -0.607800 0.879737 0.234636 0.413532 0 253 27 -0.179900 61.274700 0.058500 0.879737 0.234636 0.413532 0 253 27 -0.785400 61.539799 -0.048800 0.405349 0.400850 0.821591 0 253 27 -1.792100 61.563202 -0.648200 0.405349 0.400850 0.821591 0 253 27 -1.901400 62.898899 -1.262500 0.405349 0.400850 0.821591 0 253 27 -0.000000 62.775902 -0.355700 0.405349 0.400850 0.821591 0 253 27 -1.901400 62.898899 -1.262500 0.958885 0.139689 0.247034 254 73 78 -1.792100 61.563202 -0.648200 0.958885 0.139689 0.247034 254 68 73 -2.209500 61.230499 -1.515000 0.958885 0.139689 0.247034 254 68 73 -2.505800 61.413601 -3.333900 0.958885 0.139689 0.247034 254 68 73 -2.071800 58.080299 -1.837600 0.982605 0.010378 0.185418 254 254 254 -2.361600 58.652599 -3.405400 0.982605 0.010378 0.185418 254 254 254 -2.043500 58.694401 -1.722000 0.982605 0.010378 0.185418 254 254 254 -2.361600 58.652599 -3.405400 0.835615 -0.547438 -0.045374 254 254 254 -2.071800 58.080299 -1.837600 0.835615 -0.547438 -0.045374 254 254 254 -1.480400 57.287800 -3.167400 0.835615 -0.547438 -0.045374 254 254 254 -2.361600 58.652599 -3.405400 0.962379 -0.178153 0.205154 254 254 254 -2.484800 60.667999 -2.078300 0.962379 -0.178153 0.205154 254 254 254 -2.225300 60.301201 -1.334400 0.962379 -0.178153 0.205154 254 254 254 -2.043500 58.694401 -1.722000 0.962379 -0.178153 0.205154 254 254 254 -0.596000 60.268700 -0.255900 0.569338 0.180881 0.801958 0 253 27 -0.605400 59.453602 0.006800 0.569338 0.180881 0.801958 0 253 27 -0.793500 58.611801 -0.022400 0.569338 0.180881 0.801958 0 253 27 -2.225300 60.301201 -1.334400 0.569338 0.180881 0.801958 0 253 27 -0.793500 58.611801 -0.022400 0.424783 -0.113068 0.898207 254 68 73 -0.000000 58.735298 0.237300 0.424783 -0.113068 0.898207 254 68 73 -0.000000 57.320400 0.190300 0.424783 -0.113068 0.898207 254 68 73 -0.860300 57.339199 -0.345300 0.424783 -0.113068 0.898207 254 68 73 -2.361600 58.652599 -3.405400 0.801295 -0.555920 -0.221086 254 254 254 -1.480400 57.287800 -3.167400 0.801295 -0.555920 -0.221086 254 254 254 -1.507500 57.978802 -4.806700 0.801295 -0.555920 -0.221086 254 254 254 -1.480400 57.287800 -3.167400 0.605736 -0.042761 0.794516 0 253 27 -0.509500 56.862801 -2.081200 0.605736 -0.042761 0.794516 0 253 27 -0.000000 54.522099 -2.187600 0.605736 -0.042761 0.794516 0 253 27 -1.435700 55.057400 -2.884500 0.605736 -0.042761 0.794516 0 254 27 -1.435700 55.057400 -2.884500 0.962522 0.132164 0.236820 254 68 73 -2.321200 55.471001 -5.570800 0.962522 0.132164 0.236820 254 68 73 -1.507500 57.978802 -4.806700 0.962522 0.132164 0.236820 254 68 73 -1.480400 57.287800 -3.167400 0.962522 0.132164 0.236820 254 68 73 -5.117200 15.490400 -9.679700 -0.146405 -0.402228 -0.903758 0 253 27 -1.456400 14.610600 -8.695100 -0.146405 -0.402228 -0.903758 0 253 27 -0.134100 16.169500 -9.174700 -0.146405 -0.402228 -0.903758 0 253 27 -0.134100 16.169500 -9.174700 -0.868940 -0.488451 0.079739 254 254 254 -1.239800 14.644800 -6.465300 -0.868940 -0.488451 0.079739 254 254 254 -1.716700 14.450400 -2.459200 -0.868940 -0.488451 0.079739 254 254 254 -5.308800 13.910900 -3.738700 0.254739 -0.396087 0.882170 0 253 27 -6.069200 14.643000 -3.762300 0.254739 -0.396087 0.882170 0 253 27 -1.716700 14.450400 -2.459200 0.254739 -0.396087 0.882170 0 253 27 -1.766900 13.754900 -2.918700 0.254739 -0.396087 0.882170 0 253 27 -4.620900 14.945700 -8.516100 0.580484 -0.782092 -0.226651 0 247 31 -5.117200 15.490400 -9.679700 0.580484 -0.782092 -0.226651 2 205 68 -6.069200 14.643000 -3.762300 0.580484 -0.782092 -0.226651 0 253 27 -5.308800 13.910900 -3.738700 0.580484 -0.782092 -0.226651 0 253 27 -1.957400 20.620800 -1.211500 -0.981620 0.066989 0.178702 254 254 254 -2.189200 21.987900 -1.483700 -0.981620 0.066989 0.178702 254 254 254 -0.835600 22.853901 -8.210700 -0.981620 0.066989 0.178702 254 254 254 -0.899900 21.410400 -8.349400 -0.981620 0.066989 0.178702 254 254 254 -7.174300 32.815300 -5.167300 0.882089 0.156872 -0.444196 17 7 244 -4.970000 33.082802 -8.871900 0.882089 0.156872 -0.444196 18 0 252 -5.283200 35.952900 -7.814600 0.882089 0.156872 -0.444196 18 1 249 -6.542300 35.480598 -4.902800 0.882089 0.156872 -0.444196 15 32 221 -5.598500 31.822901 -1.404300 0.892181 0.170029 0.418452 0 240 37 -7.174300 32.815300 -5.167300 0.892181 0.170029 0.418452 17 7 244 -6.542300 35.480598 -4.902800 0.892181 0.170029 0.418452 15 32 221 -4.685700 36.664101 -1.616400 0.472747 0.127337 0.871949 0 250 28 -3.798500 31.552500 -0.388900 0.472747 0.127337 0.871949 0 253 27 -5.598500 31.822901 -1.404300 0.472747 0.127337 0.871949 0 240 37 -2.225300 60.301201 -1.334400 0.926529 0.086891 0.366052 254 254 254 -2.484800 60.667999 -2.078300 0.926529 0.086891 0.366052 254 254 254 -2.209500 61.230499 -1.515000 0.926529 0.086891 0.366052 254 254 254 -8.927200 49.128502 -4.128200 0.174303 -0.164506 0.970853 254 68 73 -9.508400 52.403099 -3.672700 0.174303 -0.164506 0.970853 254 68 73 -8.184300 53.108700 -3.320400 0.174303 -0.164506 0.970853 254 68 73 -7.813100 49.342701 -3.886900 0.174303 -0.164506 0.970853 254 68 73 -8.184300 53.108700 -3.320400 0.526523 0.826719 0.198265 0 253 27 -9.508400 52.403099 -3.672700 0.526523 0.826719 0.198265 0 253 27 -9.827700 52.989700 -7.188500 0.526523 0.826719 0.198265 0 253 27 -8.747800 53.770199 -7.353300 0.526523 0.826719 0.198265 0 253 27 -8.747800 53.770199 -7.353300 0.154881 -0.035505 -0.987295 0 253 27 -6.775800 50.206501 -7.534500 0.154881 -0.035505 -0.987295 0 253 27 -7.252500 54.524502 -7.615000 0.154881 -0.035505 -0.987295 0 254 27 -8.927200 49.128502 -4.128200 -0.001669 -0.169906 0.985459 0 253 27 -14.977100 45.689201 -4.821000 -0.001669 -0.169906 0.985459 18 0 253 -15.636800 49.715099 -4.015700 -0.001669 -0.169906 0.985459 29 188 60 -9.508400 52.403099 -3.672700 -0.001669 -0.169906 0.985459 0 253 27 -1.435700 55.057400 -2.884500 0.215818 0.814400 0.538680 0 253 27 -3.773800 51.093601 -1.034300 0.215818 0.814400 0.538680 0 253 27 -6.624100 53.529800 -2.653700 0.215818 0.814400 0.538680 0 253 27 -7.252500 54.524502 -7.615000 0.215818 0.814400 0.538680 0 253 27 -2.321200 55.471001 -5.570800 0.276118 0.932071 0.234526 0 253 27 -1.435700 55.057400 -2.884500 0.276118 0.932071 0.234526 0 253 27 -7.252500 54.524502 -7.615000 0.276118 0.932071 0.234526 0 253 27 -2.209500 61.230499 -1.515000 0.942806 0.279456 0.181716 254 254 254 -2.484800 60.667999 -2.078300 0.942806 0.279456 0.181716 254 254 254 -2.505800 61.413601 -3.333900 0.942806 0.279456 0.181716 254 254 254 -2.484800 60.667999 -2.078300 0.998559 -0.051788 -0.014052 254 254 254 -2.361600 58.652599 -3.405400 0.998559 -0.051788 -0.014052 254 254 254 -2.505800 61.413601 -3.333900 0.998559 -0.051788 -0.014052 254 254 254 -2.209500 61.230499 -1.515000 0.107977 -0.909631 0.401138 254 68 73 -1.792100 61.563202 -0.648200 0.107977 -0.909631 0.401138 254 68 73 -1.340700 61.343498 -1.024900 0.107977 -0.909631 0.401138 254 68 73 -3.061600 3.537800 -3.461700 -0.234488 0.898953 0.369997 18 0 253 -1.553600 3.059500 -4.173500 -0.234488 0.898953 0.369997 18 0 253 -1.568700 1.981700 -0.627100 -0.234488 0.898953 0.369997 19 0 253 -3.735600 1.816900 0.228400 -0.234488 0.898953 0.369997 19 0 253 -0.626000 0.031700 -8.336200 -0.992053 0.072189 0.103052 0 254 27 -1.825200 -0.024100 0.601200 -0.992053 0.072189 0.103052 254 254 254 -1.568700 1.981700 -0.627100 -0.992053 0.072189 0.103052 254 254 254 -1.553600 3.059500 -4.173500 -0.992053 0.072189 0.103052 186 254 192 -1.825200 -0.024100 0.601200 0.002195 -0.999985 -0.005027 0 254 27 -0.626000 0.031700 -8.336200 0.002195 -0.999985 -0.005027 253 254 253 -1.712600 0.024900 -9.195700 0.002195 -0.999985 -0.005027 254 254 254 -3.769300 -0.009000 1.132900 0.002195 -0.999985 -0.005027 0 254 27 -1.712600 0.024900 -9.195700 -0.920325 0.042849 -0.388801 254 68 73 -0.626000 0.031700 -8.336200 -0.920325 0.042849 -0.388801 254 68 73 -1.239800 14.644800 -6.465300 -0.920325 0.042849 -0.388801 254 68 73 -1.456400 14.610600 -8.695100 -0.920325 0.042849 -0.388801 254 68 73 -1.568700 1.981700 -0.627100 -0.270273 0.452545 0.849798 19 0 253 -1.825200 -0.024100 0.601200 -0.270273 0.452545 0.849798 19 0 253 -3.769300 -0.009000 1.132900 -0.270273 0.452545 0.849798 19 0 253 -3.735600 1.816900 0.228400 -0.270273 0.452545 0.849798 19 0 253 -4.089400 2.633000 -5.031300 0.957442 -0.073711 -0.279054 18 0 253 -5.390300 1.568200 -1.670300 0.957442 -0.073711 -0.279054 18 0 253 -5.176800 -0.025000 -0.598300 0.957442 -0.073711 -0.279054 18 0 253 -3.252600 0.001600 -8.591000 0.957442 -0.073711 -0.279054 19 0 253 -3.769300 -0.009000 1.132900 0.738109 0.308147 0.600201 18 0 253 -5.176800 -0.025000 -0.598300 0.738109 0.308147 0.600201 18 0 253 -5.390300 1.568200 -1.670300 0.738109 0.308147 0.600201 18 0 253 -3.735600 1.816900 0.228400 0.738109 0.308147 0.600201 18 0 253 -5.390300 1.568200 -1.670300 0.560649 0.811720 0.163660 18 0 253 -4.089400 2.633000 -5.031300 0.560649 0.811720 0.163660 18 0 253 -3.061600 3.537800 -3.461700 0.560649 0.811720 0.163660 18 0 253 -3.735600 1.816900 0.228400 0.560649 0.811720 0.163660 18 0 253 -3.061600 3.537800 -3.461700 0.452521 -0.074303 0.888653 18 0 253 -4.089400 2.633000 -5.031300 0.452521 -0.074303 0.888653 18 0 253 -5.308800 13.910900 -3.738700 0.452521 -0.074303 0.888653 0 253 27 -1.766900 13.754900 -2.918700 0.452521 -0.074303 0.888653 0 253 27 -5.117200 15.490400 -9.679700 0.118623 -0.917754 -0.379021 0 253 27 -4.620900 14.945700 -8.516100 0.118623 -0.917754 -0.379021 0 253 27 -1.456400 14.610600 -8.695100 0.118623 -0.917754 -0.379021 0 253 27 -1.456400 14.610600 -8.695100 -0.751462 -0.656769 -0.062923 254 254 254 -1.239800 14.644800 -6.465300 -0.751462 -0.656769 -0.062923 254 254 254 -0.134100 16.169500 -9.174700 -0.751462 -0.656769 -0.062923 254 254 254 -5.426000 21.341299 -8.132600 0.959663 0.028025 -0.279753 15 21 230 -5.317800 22.936800 -8.016200 0.959663 0.028025 -0.279753 18 0 252 -6.824000 22.193899 -3.251500 0.959663 0.028025 -0.279753 3 179 89 -6.827700 20.858999 -3.044800 0.959663 0.028025 -0.279753 0 231 44 -0.845100 29.891001 -9.498900 0.127296 -0.127838 -0.983592 0 253 27 -5.595300 29.761600 -8.492500 0.127296 -0.127838 -0.983592 0 253 27 -5.317800 22.936800 -8.016200 0.127296 -0.127838 -0.983592 0 253 27 -0.835600 22.853901 -8.210700 0.127296 -0.127838 -0.983592 0 253 27 -1.957400 20.620800 -1.211500 0.345482 0.135420 0.928603 254 68 73 -6.827700 20.858999 -3.044800 0.345482 0.135420 0.928603 232 61 86 -6.824000 22.193899 -3.251500 0.345482 0.135420 0.928603 185 47 122 -2.189200 21.987900 -1.483700 0.345482 0.135420 0.928603 254 68 73 -0.605400 59.453602 0.006800 0.276378 -0.886938 0.370075 254 68 73 -0.226300 59.631802 0.717000 0.276378 -0.886938 0.370075 254 68 73 -0.000000 59.375900 0.272700 0.276378 -0.886938 0.370075 254 68 73 -21.936399 43.055199 -3.733600 0.245050 -0.199318 0.948801 19 0 253 -23.265499 44.290199 -3.614200 0.245050 -0.199318 0.948801 19 0 253 -23.323000 46.228001 -3.425200 0.245050 -0.199318 0.948801 19 0 251 -22.348700 46.932201 -2.822400 0.245050 -0.199318 0.948801 20 0 250 -22.105101 44.119598 -7.074000 0.680722 -0.210597 -0.701617 0 253 27 -23.337700 47.268200 -6.945000 0.680722 -0.210597 -0.701617 0 253 27 -23.881300 46.267799 -5.995500 0.680722 -0.210597 -0.701617 0 253 27 -23.273100 44.479099 -6.170500 0.680722 -0.210597 -0.701617 0 253 27 -22.348700 46.932201 -2.822400 0.710630 0.673907 0.202126 18 0 249 -23.323000 46.228001 -3.425200 0.710630 0.673907 0.202126 18 0 251 -23.881300 46.267799 -5.995500 0.710630 0.673907 0.202126 12 63 193 -23.337700 47.268200 -6.945000 0.710630 0.673907 0.202126 2 175 92 -21.936399 43.055199 -3.733600 0.575702 -0.803125 -0.153486 18 0 253 -22.105101 44.119598 -7.074000 0.575702 -0.803125 -0.153486 18 0 253 -23.273100 44.479099 -6.170500 0.575702 -0.803125 -0.153486 18 0 253 -23.265499 44.290199 -3.614200 0.575702 -0.803125 -0.153486 18 0 253 -23.323000 46.228001 -3.425200 -0.234519 0.052147 0.970712 19 0 251 -23.265499 44.290199 -3.614200 -0.234519 0.052147 0.970712 19 0 253 -24.446100 44.099098 -3.039500 -0.234519 0.052147 0.970712 19 0 253 -24.935400 45.742901 -3.288800 -0.234519 0.052147 0.970712 20 0 251 -23.273100 44.479099 -6.170500 0.051663 0.047611 -0.997529 0 253 27 -23.881300 46.267799 -5.995500 0.051663 0.047611 -0.997529 0 253 27 -25.982700 45.641201 -5.974700 0.051663 0.047611 -0.997529 0 253 27 -25.718901 44.407902 -5.989100 0.051663 0.047611 -0.997529 0 253 27 -23.881300 46.267799 -5.995500 0.283035 0.956157 0.075198 64 24 202 -23.323000 46.228001 -3.425200 0.283035 0.956157 0.075198 19 0 251 -24.935400 45.742901 -3.288800 0.283035 0.956157 0.075198 20 0 251 -25.982700 45.641201 -5.974700 0.283035 0.956157 0.075198 65 29 197 -23.265499 44.290199 -3.614200 -0.050680 -0.993534 -0.101596 0 251 27 -23.273100 44.479099 -6.170500 -0.050680 -0.993534 -0.101596 0 253 27 -25.718901 44.407902 -5.989100 -0.050680 -0.993534 -0.101596 0 253 27 -24.446100 44.099098 -3.039500 -0.050680 -0.993534 -0.101596 53 205 30 -3.798500 31.552500 -0.388900 0.303080 0.047081 0.951802 57 208 35 -4.685700 36.664101 -1.616400 0.303080 0.047081 0.951802 0 250 28 -0.000000 37.009800 0.550700 0.303080 0.047081 0.951802 172 124 55 -0.000000 31.552500 0.128500 0.303080 0.047081 0.951802 203 101 62 -27.058001 43.733101 -1.471100 0.612973 -0.035197 0.789319 19 0 253 -26.775499 43.007000 -1.492900 0.612973 -0.035197 0.789319 19 0 253 -27.637899 42.321201 -1.984400 0.612973 -0.035197 0.789319 19 0 253 -28.100901 44.177299 -2.470000 0.612973 -0.035197 0.789319 19 0 253 -27.102699 45.320202 -5.735100 0.288380 -0.175341 -0.941325 0 253 27 -26.246300 42.901402 -5.383600 0.288380 -0.175341 -0.941325 0 252 27 -25.718901 44.407902 -5.989100 0.288380 -0.175341 -0.941325 0 253 27 -25.982700 45.641201 -5.974700 0.288380 -0.175341 -0.941325 0 253 27 -24.935400 45.742901 -3.288800 0.215944 0.976143 0.022647 20 0 251 -26.753901 45.398300 -2.858600 0.215944 0.976143 0.022647 21 0 250 -27.102699 45.320202 -5.735100 0.215944 0.976143 0.022647 69 22 201 -25.982700 45.641201 -5.974700 0.215944 0.976143 0.022647 65 29 197 -24.446100 44.099098 -3.039500 -0.806467 -0.440747 -0.394147 254 254 254 -25.718901 44.407902 -5.989100 -0.806467 -0.440747 -0.394147 254 254 254 -26.246300 42.901402 -5.383600 -0.806467 -0.440747 -0.394147 254 254 254 -28.380600 42.330502 -3.056600 0.840529 -0.044209 0.539960 19 0 253 -28.697901 44.238201 -3.477500 0.840529 -0.044209 0.539960 20 0 252 -28.100901 44.177299 -2.470000 0.840529 -0.044209 0.539960 19 0 253 -27.637899 42.321201 -1.984400 0.840529 -0.044209 0.539960 19 0 253 -28.380600 42.330502 -3.056600 0.979149 -0.175223 -0.102788 19 0 253 -28.292801 42.543098 -4.446800 0.979149 -0.175223 -0.102788 19 0 253 -28.543800 44.178001 -4.651400 0.979149 -0.175223 -0.102788 20 3 248 -28.697901 44.238201 -3.477500 0.979149 -0.175223 -0.102788 20 0 252 -26.753901 45.398300 -2.858600 0.560189 0.737837 0.376544 20 0 250 -28.100901 44.177299 -2.470000 0.560189 0.737837 0.376544 19 0 253 -28.697901 44.238201 -3.477500 0.560189 0.737837 0.376544 20 0 252 -24.935400 45.742901 -3.288800 -0.484106 0.321222 0.813915 20 0 251 -24.446100 44.099098 -3.039500 -0.484106 0.321222 0.813915 19 0 253 -25.587200 43.557701 -2.038700 -0.484106 0.321222 0.813915 19 0 253 -26.117701 44.487900 -2.198700 -0.484106 0.321222 0.813915 19 0 253 -24.446100 44.099098 -3.039500 -0.765721 -0.642695 -0.024780 254 68 73 -26.246300 42.901402 -5.383600 -0.765721 -0.642695 -0.024780 254 68 73 -25.491899 42.827301 -2.370100 -0.765721 -0.642695 -0.024780 254 68 73 -25.587200 43.557701 -2.038700 -0.765721 -0.642695 -0.024780 254 68 73 -26.753901 45.398300 -2.858600 -0.068715 0.616533 0.784324 21 0 250 -24.935400 45.742901 -3.288800 -0.068715 0.616533 0.784324 20 0 251 -26.117701 44.487900 -2.198700 -0.068715 0.616533 0.784324 19 0 253 -0.000000 31.552500 0.128500 0.069913 -0.031462 0.997057 0 253 27 -0.000000 24.132099 -0.356700 0.069913 -0.031462 0.997057 0 253 27 -3.463700 23.872801 -0.356700 0.069913 -0.031462 0.997057 0 253 27 -3.798500 31.552500 -0.388900 0.069913 -0.031462 0.997057 0 253 27 -2.225300 60.301201 -1.334400 0.789816 -0.226827 0.569860 0 253 27 -0.793500 58.611801 -0.022400 0.789816 -0.226827 0.569860 0 253 27 -2.043500 58.694401 -1.722000 0.789816 -0.226827 0.569860 0 253 27 -0.793500 58.611801 -0.022400 0.800106 -0.097243 0.591924 0 253 27 -0.860300 57.339199 -0.345300 0.800106 -0.097243 0.591924 0 253 27 -2.071800 58.080299 -1.837600 0.800106 -0.097243 0.591924 0 253 27 -2.043500 58.694401 -1.722000 0.800106 -0.097243 0.591924 0 253 27 -2.071800 58.080299 -1.837600 0.594038 -0.791272 0.144939 254 68 73 -0.860300 57.339199 -0.345300 0.594038 -0.791272 0.144939 254 68 73 -0.509500 56.862801 -2.081200 0.594038 -0.791272 0.144939 254 68 73 -1.480400 57.287800 -3.167400 0.594038 -0.791272 0.144939 254 68 73 -0.179900 61.274700 0.058500 0.090663 0.188705 0.977840 0 254 27 -0.785400 61.539799 -0.048800 0.090663 0.188705 0.977840 0 254 27 -0.000000 61.912998 -0.048000 0.090663 0.188705 0.977840 0 254 27 -15.884600 46.520500 -7.855800 0.098387 0.080586 -0.991880 0 253 27 -14.885000 46.974701 -7.946000 0.098387 0.080586 -0.991880 0 253 27 -16.136200 50.023998 -7.546200 0.098387 0.080586 -0.991880 0 253 27 -17.208200 49.477699 -7.512200 0.098387 0.080586 -0.991880 0 253 27 -15.636800 49.715099 -4.015700 0.436830 0.889212 0.135946 1 215 59 -16.810101 49.139900 -3.928800 0.436830 0.889212 0.135946 5 158 110 -17.208200 49.477699 -7.512200 0.436830 0.889212 0.135946 0 227 47 -16.136200 50.023998 -7.546200 0.436830 0.889212 0.135946 0 244 34 -16.192200 44.960400 -4.877100 -0.435886 -0.826304 -0.356686 254 252 252 -14.977100 45.689201 -4.821000 -0.435886 -0.826304 -0.356686 254 202 204 -14.885000 46.974701 -7.946000 -0.435886 -0.826304 -0.356686 254 123 127 -15.884600 46.520500 -7.855800 -0.435886 -0.826304 -0.356686 254 212 213 -16.810101 49.139900 -3.928800 -0.116417 -0.190205 0.974818 35 133 112 -15.636800 49.715099 -4.015700 -0.116417 -0.190205 0.974818 25 190 59 -14.977100 45.689201 -4.821000 -0.116417 -0.190205 0.974818 18 0 253 -16.192200 44.960400 -4.877100 -0.116417 -0.190205 0.974818 18 0 253 -13.779500 47.417198 -7.715300 0.030432 0.115440 -0.992848 12 79 181 -8.756500 49.321098 -7.632900 0.030432 0.115440 -0.992848 0 250 29 -9.827700 52.989700 -7.188500 0.030432 0.115440 -0.992848 0 253 27 -14.989100 50.565300 -7.297200 0.030432 0.115440 -0.992848 0 249 29 -15.636800 49.715099 -4.015700 0.447311 0.883265 0.140554 1 215 59 -16.136200 50.023998 -7.546200 0.447311 0.883265 0.140554 0 244 34 -14.989100 50.565300 -7.297200 0.447311 0.883265 0.140554 0 249 29 -13.779500 47.417198 -7.715300 -0.409629 -0.847844 -0.336696 254 70 75 -14.885000 46.974701 -7.946000 -0.409629 -0.847844 -0.336696 254 123 127 -14.977100 45.689201 -4.821000 -0.409629 -0.847844 -0.336696 254 202 204 -1.239800 14.644800 -6.465300 -0.983473 -0.143727 0.110102 254 254 254 -1.766900 13.754900 -2.918700 -0.983473 -0.143727 0.110102 254 254 254 -1.716700 14.450400 -2.459200 -0.983473 -0.143727 0.110102 254 254 254 -26.117701 44.487900 -2.198700 -0.374471 0.258120 0.890587 19 0 253 -25.587200 43.557701 -2.038700 -0.374471 0.258120 0.890587 19 0 253 -26.775499 43.007000 -1.492900 -0.374471 0.258120 0.890587 19 0 253 -27.058001 43.733101 -1.471100 -0.374471 0.258120 0.890587 19 0 253 -25.587200 43.557701 -2.038700 -0.386633 -0.610879 0.690899 19 0 253 -25.491899 42.827301 -2.370100 -0.386633 -0.610879 0.690899 19 0 253 -27.637899 42.321201 -1.984400 -0.386633 -0.610879 0.690899 19 0 253 -26.775499 43.007000 -1.492900 -0.386633 -0.610879 0.690899 19 0 253 -26.117701 44.487900 -2.198700 0.202601 0.798645 0.566673 19 0 253 -27.058001 43.733101 -1.471100 0.202601 0.798645 0.566673 19 0 253 -28.100901 44.177299 -2.470000 0.202601 0.798645 0.566673 19 0 253 -8.184300 53.108700 -3.320400 0.347207 -0.172872 0.921717 254 68 73 -6.624100 53.529800 -2.653700 0.347207 -0.172872 0.921717 254 68 73 -7.813100 49.342701 -3.886900 0.347207 -0.172872 0.921717 254 68 73 -8.747800 53.770199 -7.353300 0.055764 0.062731 -0.996471 0 253 27 -9.827700 52.989700 -7.188500 0.055764 0.062731 -0.996471 0 253 27 -8.756500 49.321098 -7.632900 0.055764 0.062731 -0.996471 0 253 27 -6.775800 50.206501 -7.534500 0.055764 0.062731 -0.996471 0 253 27 -28.543800 44.178001 -4.651400 0.562493 0.826801 -0.001192 20 3 248 -27.102699 45.320202 -5.735100 0.562493 0.826801 -0.001192 12 64 193 -26.753901 45.398300 -2.858600 0.562493 0.826801 -0.001192 20 0 250 -28.697901 44.238201 -3.477500 0.562493 0.826801 -0.001192 20 0 252 -26.246300 42.901402 -5.383600 -0.106461 -0.983873 -0.143736 0 252 27 -28.292801 42.543098 -4.446800 -0.106461 -0.983873 -0.143736 87 180 37 -28.380600 42.330502 -3.056600 -0.106461 -0.983873 -0.143736 242 73 67 -28.100901 44.177299 -2.470000 0.192584 0.484112 0.853550 19 0 253 -26.753901 45.398300 -2.858600 0.192584 0.484112 0.853550 21 0 250 -26.117701 44.487900 -2.198700 0.192584 0.484112 0.853550 19 0 253 -1.712600 0.024900 -9.195700 -0.013475 -0.999909 -0.000374 19 0 253 -3.252600 0.001600 -8.591000 -0.013475 -0.999909 -0.000374 19 0 253 -5.176800 -0.025000 -0.598300 -0.013475 -0.999909 -0.000374 18 0 253 -3.769300 -0.009000 1.132900 -0.013475 -0.999909 -0.000374 18 0 253 -0.000000 61.912998 -0.048000 0.158526 0.331625 0.929997 0 254 27 -0.785400 61.539799 -0.048800 0.158526 0.331625 0.929997 0 254 27 -0.000000 62.775902 -0.355700 0.158526 0.331625 0.929997 0 254 27 -0.340300 31.400700 -9.928000 -0.943868 -0.327610 -0.042246 254 254 254 -0.845100 29.891001 -9.498900 -0.943868 -0.327610 -0.042246 254 254 254 -0.425600 30.069099 -1.507500 -0.943868 -0.327610 -0.042246 254 254 254 -0.509500 56.862801 -2.081200 0.000000 -0.045410 0.998968 254 127 129 -0.509500 56.862801 -2.081200 0.098448 -0.971038 0.217700 0 253 27 -0.860300 57.339199 -0.345300 0.098448 -0.971038 0.217700 0 253 27 -0.000000 57.320400 0.190300 0.098448 -0.971038 0.217700 0 253 27 -0.000000 56.862801 -2.081200 0.098448 -0.971038 0.217700 0 253 27 -5.598500 31.822901 -1.404300 0.881264 0.021588 0.472131 0 240 37 -6.824000 22.193899 -3.251500 0.881264 0.021588 0.472131 3 179 89 -7.453900 29.910801 -4.780100 0.881264 0.021588 0.472131 18 0 251 -6.824000 22.193899 -3.251500 0.921284 -0.108958 -0.373315 3 179 89 -5.317800 22.936800 -8.016200 0.921284 -0.108958 -0.373315 18 0 252 -5.595300 29.761600 -8.492500 0.921284 -0.108958 -0.373315 18 0 253 -7.453900 29.910801 -4.780100 0.921284 -0.108958 -0.373315 18 0 251 -3.798500 31.552500 -0.388900 0.401815 -0.146587 0.903912 0 253 27 -2.189200 21.987900 -1.483700 0.401815 -0.146587 0.903912 0 253 27 -6.824000 22.193899 -3.251500 0.401815 -0.146587 0.903912 3 179 89 -5.598500 31.822901 -1.404300 0.401815 -0.146587 0.903912 0 240 37 -0.340300 31.400700 -9.928000 0.230509 -0.107925 -0.967067 0 253 27 -4.970000 33.082802 -8.871900 0.230509 -0.107925 -0.967067 0 253 27 -5.595300 29.761600 -8.492500 0.230509 -0.107925 -0.967067 0 253 27 -0.845100 29.891001 -9.498900 0.230509 -0.107925 -0.967067 0 253 27 -0.835600 22.853901 -8.210700 -0.992236 -0.110106 0.057826 254 254 254 -2.189200 21.987900 -1.483700 -0.992236 -0.110106 0.057826 254 254 254 -0.425600 30.069099 -1.507500 -0.992236 -0.110106 0.057826 254 254 254 -0.845100 29.891001 -9.498900 -0.992236 -0.110106 0.057826 254 254 254 -2.162800 35.743500 -9.599900 0.324673 0.084802 -0.942017 0 253 27 -5.283200 35.952900 -7.814600 0.324673 0.084802 -0.942017 0 253 27 -4.970000 33.082802 -8.871900 0.324673 0.084802 -0.942017 0 253 27 -0.340300 31.400700 -9.928000 0.324673 0.084802 -0.942017 0 253 27 -5.283200 35.952900 -7.814600 0.889642 0.311183 -0.334218 18 1 249 -5.919200 37.619099 -4.570300 0.889642 0.311183 -0.334218 9 98 162 -6.542300 35.480598 -4.902800 0.889642 0.311183 -0.334218 15 32 221 -5.919200 37.619099 -4.570300 0.882631 0.186784 0.431364 9 98 162 -4.685700 36.664101 -1.616400 0.882631 0.186784 0.431364 0 250 28 -5.598500 31.822901 -1.404300 0.882631 0.186784 0.431364 0 240 37 -6.542300 35.480598 -4.902800 0.882631 0.186784 0.431364 15 32 221 -0.474100 61.294899 -0.607800 0.490764 0.255871 0.832875 254 68 73 -0.596000 60.268700 -0.255900 0.490764 0.255871 0.832875 254 68 73 -2.225300 60.301201 -1.334400 0.490764 0.255871 0.832875 254 68 73 -1.340700 61.343498 -1.024900 0.490764 0.255871 0.832875 254 68 73 -1.340700 61.343498 -1.024900 0.199083 -0.932669 0.300824 0 253 27 -1.792100 61.563202 -0.648200 0.199083 -0.932669 0.300824 0 253 27 -0.785400 61.539799 -0.048800 0.199083 -0.932669 0.300824 0 253 27 -0.474100 61.294899 -0.607800 0.199083 -0.932669 0.300824 0 253 27 -0.000000 45.235802 -8.516300 0.205813 0.023108 -0.978318 0 253 27 -5.495700 46.043098 -6.732400 0.205813 0.023108 -0.978318 0 252 27 -2.827600 38.171799 -8.088300 0.205813 0.023108 -0.978318 8 119 142 -0.000000 38.221600 -8.073300 0.205813 0.023108 -0.978318 0 240 38 -0.425600 30.069099 -1.507500 -0.290133 -0.060504 0.955072 254 254 254 -2.189200 21.987900 -1.483700 -0.290133 -0.060504 0.955072 254 254 254 -3.798500 31.552500 -0.388900 -0.290133 -0.060504 0.955072 254 254 254 -0.000000 31.547001 -9.939100 -0.348901 -0.925923 -0.144686 254 68 73 -0.340300 31.400700 -9.928000 -0.348901 -0.925923 -0.144686 254 68 73 -0.425600 30.069099 -1.507500 -0.348901 -0.925923 -0.144686 254 68 73 -0.000000 30.215401 -1.522000 -0.348901 -0.925923 -0.144686 254 68 73 -21.061199 44.183601 -7.611200 0.028361 0.039319 -0.998824 18 0 253 -15.884600 46.520500 -7.855800 0.028361 0.039319 -0.998824 17 5 246 -17.208200 49.477699 -7.512200 0.028361 0.039319 -0.998824 0 227 47 -22.585199 48.327702 -7.594400 0.028361 0.039319 -0.998824 0 239 38 -22.348700 46.932201 -2.822400 0.723103 0.652497 0.226650 18 0 249 -23.337700 47.268200 -6.945000 0.723103 0.652497 0.226650 2 175 92 -22.585199 48.327702 -7.594400 0.723103 0.652497 0.226650 0 239 38 -21.061199 44.183601 -7.611200 0.095048 -0.949863 -0.297868 0 253 27 -22.105101 44.119598 -7.074000 0.095048 -0.949863 -0.297868 0 253 27 -21.936399 43.055199 -3.733600 0.095048 -0.949863 -0.297868 0 253 27 -0.340300 31.400700 -9.928000 0.010374 0.075249 -0.997111 0 253 27 -0.000000 31.547001 -9.939100 0.010374 0.075249 -0.997111 0 253 27 -0.000000 35.795200 -9.599900 0.010374 0.075249 -0.997111 0 253 27 -2.162800 35.743500 -9.599900 0.010374 0.075249 -0.997111 0 253 27 -5.919200 37.619099 -4.570300 0.561685 0.544798 -0.622660 9 98 162 -5.283200 35.952900 -7.814600 0.561685 0.544798 -0.622660 18 1 249 -2.162800 35.743500 -9.599900 0.561685 0.544798 -0.622660 16 28 225 -2.827600 38.171799 -8.088300 0.561685 0.544798 -0.622660 8 119 142 -28.543800 44.178001 -4.651400 0.410462 -0.233070 -0.881589 77 187 34 -28.292801 42.543098 -4.446800 0.410462 -0.233070 -0.881589 87 180 37 -26.246300 42.901402 -5.383600 0.410462 -0.233070 -0.881589 0 252 27 -27.102699 45.320202 -5.735100 0.410462 -0.233070 -0.881589 0 253 27 -25.491899 42.827301 -2.370100 -0.201709 -0.968181 -0.148119 190 254 195 -28.380600 42.330502 -3.056600 -0.201709 -0.968181 -0.148119 242 254 242 -27.637899 42.321201 -1.984400 -0.201709 -0.968181 -0.148119 254 254 254 -26.246300 42.901402 -5.383600 -0.185319 -0.980147 -0.070494 0 254 27 -28.380600 42.330502 -3.056600 -0.185319 -0.980147 -0.070494 242 254 242 -25.491899 42.827301 -2.370100 -0.185319 -0.980147 -0.070494 190 254 195 -2.162800 35.743500 -9.599900 0.008224 0.529675 -0.848161 0 253 27 -0.000000 35.795200 -9.599900 0.008224 0.529675 -0.848161 0 253 27 -0.000000 38.221600 -8.073300 0.008224 0.529675 -0.848161 0 253 27 -2.827600 38.171799 -8.088300 0.008224 0.529675 -0.848161 0 253 27 -0.706900 62.538601 -0.289700 0.498102 0.211804 0.840853 0 253 27 -1.838200 62.255798 -0.802600 0.498102 0.211804 0.840853 0 253 27 -1.901400 63.532299 -1.247600 0.498102 0.211804 0.840853 0 253 27 -0.672300 63.485901 -0.421800 0.498102 0.211804 0.840853 0 253 27 -1.901400 63.532299 -1.247600 0.915374 0.111541 0.386845 0 253 27 -1.838200 62.255798 -0.802600 0.915374 0.111541 0.386845 0 253 27 -3.194200 60.597198 -3.460400 0.915374 0.111541 0.386845 0 253 27 -2.758700 63.532299 -3.348800 0.915374 0.111541 0.386845 0 253 27 -2.758700 63.532299 -3.348800 0.984906 0.142377 0.098436 0 253 27 -3.194200 60.597198 -3.460400 0.984906 0.142377 0.098436 0 253 27 -3.446000 60.597198 -5.980300 0.984906 0.142377 0.098436 0 253 27 -3.010600 63.532299 -5.868700 0.984906 0.142377 0.098436 0 253 27 -3.194200 60.597198 -3.460400 0.917633 0.222238 0.329485 0 253 27 -1.838200 62.255798 -0.802600 0.917633 0.222238 0.329485 0 253 27 -2.336800 60.597198 -1.072500 0.917633 0.222238 0.329485 0 253 27 -2.130500 53.628601 -1.359200 0.842435 0.033555 0.537753 0 253 27 -4.088800 54.879799 -3.460400 0.842435 0.033555 0.537753 0 253 27 -3.194200 60.597198 -3.460400 0.842435 0.033555 0.537753 0 253 27 -2.336800 60.597198 -1.072500 0.842435 0.033555 0.537753 0 253 27 -4.088800 54.879799 -3.460400 0.982155 0.156435 0.104398 0 253 27 -4.340700 55.234299 -6.210400 0.982155 0.156435 0.104398 0 254 27 -3.446000 60.597198 -5.980300 0.982155 0.156435 0.104398 0 253 27 -3.194200 60.597198 -3.460400 0.982155 0.156435 0.104398 0 253 27 -3.010600 63.532299 -5.868700 0.839145 0.204241 -0.504105 0 253 27 -3.446000 60.597198 -5.980300 0.839145 0.204241 -0.504105 0 253 27 -2.517200 60.597198 -7.879200 0.839145 0.204241 -0.504105 0 253 27 -1.932100 63.532299 -7.311200 0.839145 0.204241 -0.504105 0 253 27 -3.446000 60.597198 -5.980300 0.847590 0.127945 -0.514996 0 253 27 -4.340700 55.234299 -6.210400 0.847590 0.127945 -0.514996 0 254 27 -2.990300 54.496300 -8.246000 0.847590 0.127945 -0.514996 0 253 27 -2.517200 60.597198 -7.879200 0.847590 0.127945 -0.514996 0 253 27 -1.932100 63.532299 -7.311200 0.365116 0.222173 -0.904063 0 253 27 -2.517200 60.597198 -7.879200 0.365116 0.222173 -0.904063 0 253 27 -0.000000 60.597198 -8.812800 0.365116 0.222173 -0.904063 0 253 27 -0.000000 63.532299 -8.174500 0.365116 0.222173 -0.904063 0 253 27 -2.990300 54.496300 -8.246000 0.255106 0.035267 -0.966270 0 253 27 -0.000000 54.050800 -8.782700 0.255106 0.035267 -0.966270 0 253 27 -0.000000 60.597198 -8.812800 0.255106 0.035267 -0.966270 0 253 27 -2.517200 60.597198 -7.879200 0.255106 0.035267 -0.966270 0 253 27 -0.672300 63.485901 -0.421800 0.422112 0.618267 0.662999 0 253 27 -1.901400 63.532299 -1.247600 0.422112 0.618267 0.662999 0 253 27 -1.171400 65.057899 -2.205500 0.422112 0.618267 0.662999 0 253 27 -1.901400 63.532299 -1.247600 0.756752 0.608663 0.238446 0 253 27 -2.758700 63.532299 -3.348800 0.756752 0.608663 0.238446 0 253 27 -1.795600 65.057899 -4.806100 0.756752 0.608663 0.238446 0 253 27 -1.171400 65.057899 -2.205500 0.756752 0.608663 0.238446 0 253 27 -2.758700 63.532299 -3.348800 0.806293 0.585999 0.080601 0 253 27 -3.010600 63.532299 -5.868700 0.806293 0.585999 0.080601 0 253 27 -1.795600 65.057899 -4.806100 0.806293 0.585999 0.080601 0 253 27 -3.010600 63.532299 -5.868700 0.468822 0.765524 -0.440657 0 253 27 -1.932100 63.532299 -7.311200 0.468822 0.765524 -0.440657 0 254 27 -0.000000 65.057899 -6.421400 0.468822 0.765524 -0.440657 0 253 27 -1.795600 65.057899 -4.806100 0.468822 0.765524 -0.440657 0 253 27 -1.932100 63.532299 -7.311200 0.281463 0.723860 -0.629925 0 254 27 -0.000000 63.532299 -8.174500 0.281463 0.723860 -0.629925 0 253 27 -0.000000 65.057899 -6.421400 0.281463 0.723860 -0.629925 0 253 27 -1.171400 65.057899 -2.205500 0.296421 0.952404 0.071148 0 253 27 -1.795600 65.057899 -4.806100 0.296421 0.952404 0.071148 0 253 27 -0.000000 65.560898 -4.058400 0.296421 0.952404 0.071148 0 253 27 -1.795600 65.057899 -4.806100 0.184093 0.961370 -0.204641 0 254 27 -0.000000 65.057899 -6.421400 0.184093 0.961370 -0.204641 0 254 27 -0.000000 65.560898 -4.058400 0.184093 0.961370 -0.204641 0 254 27 -0.672300 63.485901 -0.421800 0.000000 0.750225 0.661183 0 254 27 -1.171400 65.057899 -2.205500 0.000000 0.750225 0.661183 0 254 27 --1.171400 65.057899 -2.205500 0.000000 0.750225 0.661183 0 254 27 --0.672300 63.485901 -0.421800 0.000000 0.750225 0.661183 0 254 27 -0.706900 62.538601 -0.289700 0.204667 0.142518 0.968401 0 254 27 -0.672300 63.485901 -0.421800 0.204667 0.142518 0.968401 0 254 27 -0.000000 62.538601 -0.140300 0.204667 0.142518 0.968401 0 254 27 -0.672300 63.485901 -0.421800 -0.000000 0.284850 0.958572 0 254 27 --0.672300 63.485901 -0.421800 -0.000000 0.284850 0.958572 0 254 27 -0.000000 62.538601 -0.140300 -0.000000 0.284850 0.958572 0 254 27 -2.130500 53.628601 -1.359200 -0.899990 0.017690 0.435552 0 253 27 -2.336800 60.597198 -1.072500 -0.899990 0.017690 0.435552 0 253 27 -1.393700 60.597198 -3.164700 -0.899990 0.017690 0.435552 0 253 27 -1.187300 53.628601 -3.164700 -0.899990 0.017690 0.435552 0 253 27 --0.706900 62.538601 -0.289700 -0.498102 0.211804 0.840853 0 254 27 --0.672300 63.485901 -0.421800 -0.498102 0.211804 0.840853 0 254 27 --1.901400 63.532299 -1.247600 -0.498102 0.211804 0.840853 0 254 27 --1.838200 62.255798 -0.802600 -0.498102 0.211804 0.840853 0 254 27 --1.901400 63.532299 -1.247600 -0.915374 0.111541 0.386845 0 254 27 --2.758700 63.532299 -3.348800 -0.915374 0.111541 0.386845 0 254 27 --3.194200 60.597198 -3.460400 -0.915374 0.111541 0.386845 0 254 27 --1.838200 62.255798 -0.802600 -0.915374 0.111541 0.386845 0 254 27 --2.758700 63.532299 -3.348800 -0.984906 0.142377 0.098436 0 254 27 --3.010600 63.532299 -5.868700 -0.984906 0.142377 0.098436 0 254 27 --3.446000 60.597198 -5.980300 -0.984906 0.142377 0.098436 0 254 27 --3.194200 60.597198 -3.460400 -0.984906 0.142377 0.098436 0 254 27 --3.194200 60.597198 -3.460400 -0.917633 0.222238 0.329485 0 254 27 --2.336800 60.597198 -1.072500 -0.917633 0.222238 0.329485 0 254 27 --1.838200 62.255798 -0.802600 -0.917633 0.222238 0.329485 0 254 27 --2.130500 53.628601 -1.359200 -0.842435 0.033555 0.537753 0 253 27 --2.336800 60.597198 -1.072500 -0.842435 0.033555 0.537753 0 254 27 --3.194200 60.597198 -3.460400 -0.842435 0.033555 0.537753 0 254 27 --4.088800 54.879799 -3.460400 -0.842435 0.033555 0.537753 0 253 27 --4.088800 54.879799 -3.460400 -0.982155 0.156435 0.104398 0 253 27 --3.194200 60.597198 -3.460400 -0.982155 0.156435 0.104398 0 253 27 --3.446000 60.597198 -5.980300 -0.982155 0.156435 0.104398 0 253 27 --4.340700 55.234299 -6.210400 -0.982155 0.156435 0.104398 0 254 27 --3.010600 63.532299 -5.868700 -0.839145 0.204241 -0.504105 0 254 27 --1.932100 63.532299 -7.311200 -0.839145 0.204241 -0.504105 0 254 27 --2.517200 60.597198 -7.879200 -0.839145 0.204241 -0.504105 0 254 27 --3.446000 60.597198 -5.980300 -0.839145 0.204241 -0.504105 0 254 27 --3.446000 60.597198 -5.980300 -0.847590 0.127945 -0.514996 0 254 27 --2.517200 60.597198 -7.879200 -0.847590 0.127945 -0.514996 0 254 27 --2.990300 54.496300 -8.246000 -0.847590 0.127945 -0.514996 0 254 27 --4.340700 55.234299 -6.210400 -0.847590 0.127945 -0.514996 0 254 27 --1.932100 63.532299 -7.311200 -0.365116 0.222173 -0.904063 0 254 27 -0.000000 63.532299 -8.174500 -0.365116 0.222173 -0.904063 0 254 27 -0.000000 60.597198 -8.812800 -0.365116 0.222173 -0.904063 0 254 27 --2.517200 60.597198 -7.879200 -0.365116 0.222173 -0.904063 0 254 27 --2.990300 54.496300 -8.246000 -0.255106 0.035267 -0.966270 0 254 27 --2.517200 60.597198 -7.879200 -0.255106 0.035267 -0.966270 0 254 27 -0.000000 60.597198 -8.812800 -0.255106 0.035267 -0.966270 0 254 27 -0.000000 54.050800 -8.782700 -0.255106 0.035267 -0.966270 0 254 27 --0.672300 63.485901 -0.421800 -0.422112 0.618267 0.662999 0 254 27 --1.171400 65.057899 -2.205500 -0.422112 0.618267 0.662999 0 254 27 --1.901400 63.532299 -1.247600 -0.422112 0.618267 0.662999 0 254 27 --1.901400 63.532299 -1.247600 -0.756752 0.608663 0.238446 0 254 27 --1.171400 65.057899 -2.205500 -0.756752 0.608663 0.238446 0 254 27 --1.795600 65.057899 -4.806100 -0.756752 0.608663 0.238446 0 254 27 --2.758700 63.532299 -3.348800 -0.756752 0.608663 0.238446 0 254 27 --2.758700 63.532299 -3.348800 -0.806293 0.585999 0.080601 0 254 27 --1.795600 65.057899 -4.806100 -0.806293 0.585999 0.080601 0 254 27 --3.010600 63.532299 -5.868700 -0.806293 0.585999 0.080601 0 254 27 --3.010600 63.532299 -5.868700 -0.468822 0.765524 -0.440657 0 254 27 --1.795600 65.057899 -4.806100 -0.468822 0.765524 -0.440657 0 254 27 -0.000000 65.057899 -6.421400 -0.468822 0.765524 -0.440657 0 254 27 --1.932100 63.532299 -7.311200 -0.468822 0.765524 -0.440657 0 254 27 --1.932100 63.532299 -7.311200 -0.281463 0.723860 -0.629925 0 254 27 -0.000000 65.057899 -6.421400 -0.281463 0.723860 -0.629925 0 254 27 -0.000000 63.532299 -8.174500 -0.281463 0.723860 -0.629925 0 254 27 --1.171400 65.057899 -2.205500 -0.296421 0.952404 0.071148 0 254 27 -0.000000 65.560898 -4.058400 -0.296421 0.952404 0.071148 0 254 27 --1.795600 65.057899 -4.806100 -0.296421 0.952404 0.071148 0 254 27 --1.795600 65.057899 -4.806100 -0.184093 0.961370 -0.204641 0 254 27 -0.000000 65.560898 -4.058400 -0.184093 0.961370 -0.204641 0 254 27 -0.000000 65.057899 -6.421400 -0.184093 0.961370 -0.204641 0 254 27 --1.171400 65.057899 -2.205500 0.000000 0.965072 0.261984 0 254 27 -1.171400 65.057899 -2.205500 0.000000 0.965072 0.261984 0 254 27 -0.000000 65.560898 -4.058400 0.000000 0.965072 0.261984 0 254 27 --0.706900 62.538601 -0.289700 -0.204667 0.142518 0.968401 0 254 27 -0.000000 62.538601 -0.140300 -0.204667 0.142518 0.968401 0 254 27 --0.672300 63.485901 -0.421800 -0.204667 0.142518 0.968401 0 254 27 --2.130500 53.628601 -1.359200 0.899990 0.017690 0.435552 164 133 56 --1.187300 53.628601 -3.164700 0.899990 0.017690 0.435552 209 100 64 --1.393700 60.597198 -3.164700 0.899990 0.017690 0.435552 254 254 254 --2.336800 60.597198 -1.072500 0.899990 0.017690 0.435552 254 254 254 -8.704300 24.905701 -6.036500 0.233777 0.158187 -0.959336 0 253 27 -7.984800 25.127701 -6.177400 0.233777 0.158187 -0.959336 0 253 27 -7.649900 27.558001 -5.856100 0.233777 0.158187 -0.959336 0 253 27 -8.503900 27.435900 -5.670300 0.233777 0.158187 -0.959336 0 253 27 -6.463600 36.223400 -3.704900 0.910800 0.108730 0.398273 9 100 160 -5.778000 35.994701 -1.773100 0.910800 0.108730 0.398273 0 231 44 -7.451900 27.210300 -3.504400 0.910800 0.108730 0.398273 18 2 248 -8.503900 27.435900 -5.670300 0.910800 0.108730 0.398273 18 0 253 -5.115000 35.782600 -2.051700 -0.272059 -0.232411 0.933793 0 241 37 -6.597900 27.332300 -3.690200 -0.272059 -0.232411 0.933793 16 16 234 -7.451900 27.210300 -3.504400 -0.272059 -0.232411 0.933793 18 2 248 -5.778000 35.994701 -1.773100 -0.272059 -0.232411 0.933793 0 231 44 -5.743400 36.019600 -3.995900 0.266707 0.266447 -0.926215 0 253 27 -6.463600 36.223400 -3.704900 0.266707 0.266447 -0.926215 0 253 27 -8.503900 27.435900 -5.670300 0.266707 0.266447 -0.926215 0 253 27 -7.649900 27.558001 -5.856100 0.266707 0.266447 -0.926215 0 253 27 -7.451900 27.210300 -3.504400 -0.285900 -0.782712 0.552832 21 0 248 -6.597900 27.332300 -3.690200 -0.285900 -0.782712 0.552832 35 1 237 -7.984800 25.127701 -6.177400 -0.285900 -0.782712 0.552832 19 0 253 -8.704300 24.905701 -6.036500 -0.285900 -0.782712 0.552832 19 0 253 -7.451900 27.210300 -3.504400 0.899158 0.007889 0.437552 18 2 248 -8.704300 24.905701 -6.036500 0.899158 0.007889 0.437552 18 0 253 -8.503900 27.435900 -5.670300 0.899158 0.007889 0.437552 18 0 253 -6.463600 36.223400 -3.704900 -0.293676 0.955783 0.015277 254 68 73 -5.743400 36.019600 -3.995900 -0.293676 0.955783 0.015277 254 68 73 -5.115000 35.782600 -2.051700 -0.293676 0.955783 0.015277 254 68 73 -5.778000 35.994701 -1.773100 -0.293676 0.955783 0.015277 254 68 73 -4.513000 55.007702 -5.909800 -0.189279 -0.709198 -0.679126 0 253 27 -4.291100 55.098900 -5.871800 -0.189279 -0.709198 -0.679126 0 253 27 -4.207800 55.799599 -6.651700 -0.189279 -0.709198 -0.679126 0 253 27 -4.871900 55.799599 -6.765400 -0.189279 -0.709198 -0.679126 0 253 27 -2.904000 62.455601 -5.700500 0.959060 0.270852 0.082723 0 253 27 -2.764700 62.455601 -4.128400 0.959060 0.270852 0.082723 0 253 27 -4.736600 55.799599 -5.153900 0.959060 0.270852 0.082723 0 253 27 -4.871900 55.799599 -6.765400 0.959060 0.270852 0.082723 0 253 27 -2.764700 62.455601 -4.128400 0.167860 -0.101350 0.980587 0 253 27 -4.072400 55.799599 -5.040200 0.167860 -0.101350 0.980587 0 253 27 -4.736600 55.799599 -5.153900 0.167860 -0.101350 0.980587 0 253 27 -2.904000 62.455601 -5.700500 -0.167781 0.107182 -0.979980 0 253 27 -4.871900 55.799599 -6.765400 -0.167781 0.107182 -0.979980 0 253 27 -4.207800 55.799599 -6.651700 -0.167781 0.107182 -0.979980 0 253 27 -4.736600 55.799599 -5.153900 0.042232 -0.727963 0.684314 254 68 73 -4.072400 55.799599 -5.040200 0.042232 -0.727963 0.684314 254 68 73 -4.291100 55.098900 -5.871800 0.042232 -0.727963 0.684314 254 68 73 -4.513000 55.007702 -5.909800 0.042232 -0.727963 0.684314 254 68 73 -4.736600 55.799599 -5.153900 0.937220 -0.339745 0.078688 0 253 27 -4.513000 55.007702 -5.909800 0.937220 -0.339745 0.078688 0 253 27 -4.871900 55.799599 -6.765400 0.937220 -0.339745 0.078688 0 253 27 -4 0 1 2 3 -4 4 5 6 7 -3 8 9 10 -4 11 12 13 14 -4 15 16 17 18 -4 19 20 21 22 -4 23 24 25 26 -4 27 28 29 30 -4 31 32 33 34 -4 35 36 37 38 -4 39 40 41 42 -4 43 44 45 46 -3 47 48 49 -4 50 51 52 53 -4 54 55 56 57 -4 58 59 60 61 -4 62 63 64 65 -4 66 67 68 69 -4 70 71 72 73 -4 74 75 76 77 -3 78 79 80 -4 81 82 83 84 -3 85 86 87 -4 88 89 90 91 -3 92 93 94 -4 95 96 97 98 -4 99 100 101 102 -4 103 104 105 106 -4 107 108 109 110 -4 111 112 113 114 -4 115 116 117 118 -4 119 120 121 122 -4 123 124 125 126 -4 127 128 129 130 -4 131 132 133 134 -4 135 136 137 138 -3 139 140 141 -3 142 143 144 -4 145 146 147 148 -4 149 150 151 152 -4 153 154 155 156 -3 157 158 159 -3 160 161 162 -4 163 164 165 166 -4 167 168 169 170 -4 171 172 173 174 -3 175 176 177 -4 178 179 180 181 -4 182 183 184 185 -3 186 187 188 -3 189 190 191 -4 192 193 194 195 -4 196 197 198 199 -4 200 201 202 203 -4 204 205 206 207 -3 208 209 210 -3 211 212 213 -3 214 215 216 -4 217 218 219 220 -4 221 222 223 224 -3 225 226 227 -4 228 229 230 231 -4 232 233 234 235 -3 236 237 238 -3 239 240 241 -3 242 243 244 -3 245 246 247 -4 248 249 250 251 -4 252 253 254 255 -4 256 257 258 259 -4 260 261 262 263 -4 264 265 266 267 -4 268 269 270 271 -4 272 273 274 275 -4 276 277 278 279 -4 280 281 282 283 -3 284 285 286 -3 287 288 289 -4 290 291 292 293 -4 294 295 296 297 -4 298 299 300 301 -3 302 303 304 -4 305 306 307 308 -4 309 310 311 312 -4 313 314 315 316 -4 317 318 319 320 -4 321 322 323 324 -4 325 326 327 328 -4 329 330 331 332 -4 333 334 335 336 -4 337 338 339 340 -4 341 342 343 344 -4 345 346 347 348 -4 349 350 351 352 -3 353 354 355 -4 356 357 358 359 -4 360 361 362 363 -3 364 365 366 -4 367 368 369 370 -4 371 372 373 374 -3 375 376 377 -4 378 379 380 381 -3 382 383 384 -4 385 386 387 388 -4 389 390 391 392 -3 393 394 395 -4 396 397 398 399 -4 400 401 402 403 -4 404 405 406 407 -4 408 409 410 411 -4 412 413 414 415 -3 416 417 418 -3 419 420 421 -3 422 423 424 -4 425 426 427 428 -4 429 430 431 432 -3 433 434 435 -3 436 437 438 -4 439 440 441 442 -4 443 444 445 446 -3 447 448 449 -3 450 451 452 -4 453 454 455 456 -3 457 458 459 -3 460 461 462 -3 463 464 465 -4 466 467 468 469 -3 470 471 472 -4 473 474 475 476 -4 477 478 479 480 -4 481 482 483 484 -4 485 486 487 488 -4 489 490 491 492 -3 493 494 495 -4 496 497 498 499 -4 500 501 502 503 -4 504 505 506 507 -4 508 509 510 511 -3 512 513 514 -4 515 516 517 518 -4 519 520 521 522 -3 523 524 525 -3 526 527 528 -3 529 530 531 -4 532 533 534 535 -4 536 537 538 539 -4 540 541 542 543 -4 544 545 546 547 -3 548 549 550 -3 551 552 553 -4 554 555 556 557 -3 558 559 560 -4 561 562 563 564 -4 565 566 567 568 -4 569 570 571 572 -3 573 574 575 -4 576 577 578 579 -4 580 581 582 583 -4 584 585 586 587 -4 588 589 590 591 -4 592 593 594 595 -4 596 597 598 599 -4 600 601 602 603 -4 604 605 606 607 -4 608 609 610 611 -3 612 613 614 -4 615 616 617 618 -4 619 620 621 622 -4 623 624 625 626 -4 627 628 629 630 -4 631 632 633 634 -4 635 636 637 638 -4 639 640 641 642 -3 643 644 645 -4 646 647 648 649 -3 650 651 652 -4 653 654 655 656 -3 657 658 659 -4 660 661 662 663 -4 664 665 666 667 -4 668 669 670 671 -4 672 673 674 675 -4 676 677 678 679 -4 680 681 682 683 -4 684 685 686 687 -4 688 689 690 691 -4 692 693 694 695 -4 696 697 698 699 -4 700 701 702 703 -3 704 705 706 -3 707 708 709 -4 710 711 712 713 -4 714 715 716 717 -4 718 719 720 721 -3 722 723 724 -3 725 726 727 -4 728 729 730 731 -4 732 733 734 735 -4 736 737 738 739 -3 740 741 742 -4 743 744 745 746 -4 747 748 749 750 -3 751 752 753 -3 754 755 756 -4 757 758 759 760 -4 761 762 763 764 -4 765 766 767 768 -4 769 770 771 772 -3 773 774 775 -3 776 777 778 -3 779 780 781 -4 782 783 784 785 -4 786 787 788 789 -3 790 791 792 -4 793 794 795 796 -4 797 798 799 800 -3 801 802 803 -3 804 805 806 -3 807 808 809 -3 810 811 812 -4 813 814 815 816 -4 817 818 819 820 -4 821 822 823 824 -4 825 826 827 828 -4 829 830 831 832 -4 833 834 835 836 -4 837 838 839 840 -4 841 842 843 844 -4 845 846 847 848 -3 849 850 851 -3 852 853 854 -4 855 856 857 858 -4 859 860 861 862 -4 863 864 865 866 -3 867 868 869 -4 870 871 872 873 -4 874 875 876 877 -4 878 879 880 881 -4 882 883 884 885 -4 886 887 888 889 -4 890 891 892 893 -4 894 895 896 897 -4 898 899 900 901 -4 902 903 904 905 -4 906 907 908 909 -4 910 911 912 913 -4 914 915 916 917 -3 918 919 920 -4 921 922 923 924 -4 925 926 927 928 -3 929 930 931 -4 932 933 934 935 -4 936 937 938 939 -3 940 941 942 -4 943 944 945 946 -3 947 948 949 -4 950 951 952 953 -4 954 955 956 957 -3 958 959 960 -4 961 962 963 964 -4 965 966 967 968 -4 969 970 971 972 -4 973 974 975 976 -4 977 978 979 980 -3 981 982 983 -3 984 985 986 -3 987 988 989 -4 990 991 992 993 -4 994 995 996 997 -3 998 999 1000 -3 1001 1002 1003 -4 1004 1005 1006 1007 -4 1008 1009 1010 1011 -3 1012 1013 1014 -3 1015 1016 1017 -4 1018 1019 1020 1021 -3 1022 1023 1024 -3 1025 1026 1027 -3 463 1028 464 -4 1029 1030 1031 1032 -3 1033 1034 1035 -4 1036 1037 1038 1039 -4 1040 1041 1042 1043 -4 1044 1045 1046 1047 -4 1048 1049 1050 1051 -4 1052 1053 1054 1055 -3 1056 1057 1058 -4 1059 1060 1061 1062 -4 1063 1064 1065 1066 -4 1067 1068 1069 1070 -4 1071 1072 1073 1074 -3 1075 1076 1077 -4 1078 1079 1080 1081 -4 1082 1083 1084 1085 -3 1086 1087 1088 -3 1089 1090 1091 -4 1092 1093 1094 1095 -4 1096 1097 1098 1099 -4 1100 1101 1102 1103 -3 1104 1105 1106 -3 1107 1108 1109 -4 1110 1111 1112 1113 -4 1114 1115 1116 1117 -4 1118 1119 1120 1121 -4 1122 1123 1124 1125 -3 1126 1127 1128 -4 1129 1130 1131 1132 -4 1133 1134 1135 1136 -4 1137 1138 1139 1140 -4 1141 1142 1143 1144 -4 1145 1146 1147 1148 -4 1149 1150 1151 1152 -3 1153 1154 1155 -4 1156 1157 1158 1159 -3 1160 1161 1162 -4 1163 1164 1165 1166 -3 1167 1168 1169 -3 1170 1171 1172 -3 1173 1174 1175 -4 1176 1177 1178 1179 -3 1180 1181 1182 -3 1183 1184 1185 -4 1186 1187 1188 1189 -4 1190 1191 1192 1193 -4 1194 1195 1196 1197 -4 1198 1199 1200 1201 -3 1202 1203 1204 -4 1205 1206 1207 1208 -4 1209 1210 1211 1212 -4 1213 1214 1215 1216 -4 1217 1218 1219 1220 -4 1221 1222 1223 1224 -4 1225 1226 1227 1228 -3 1229 1230 1231 -4 1232 1233 1234 1235 -3 1236 1237 1238 -4 1239 1240 1241 1242 -3 1243 1244 1245 -3 1246 1247 1248 -3 1249 1250 1251 -3 1252 1253 1254 -3 1255 1256 1257 -4 1258 1259 1260 1261 -4 1262 1263 1264 1265 -4 1266 1267 1268 1269 -4 1270 1271 1272 1273 -4 1274 1275 1276 1277 -4 1278 1279 1280 1281 -3 1282 1283 1284 -4 1285 1286 1287 1288 -4 1289 1290 1291 1292 -4 1293 1294 1295 1296 -3 1297 1298 1299 -3 1300 1301 1302 -4 1303 1304 1305 1306 -3 1307 1308 1309 diff --git a/src/tests/evas/meshes/ply/Normal_NoUVs_NoColors.ply b/src/tests/evas/meshes/ply/Normal_NoUVs_NoColors.ply deleted file mode 100644 index b3e1806738..0000000000 --- a/src/tests/evas/meshes/ply/Normal_NoUVs_NoColors.ply +++ /dev/null @@ -1,1679 +0,0 @@ -ply -format ascii 1.0 -comment Created by Blender 2.69 (sub 0) - www.blender.org, source file: '' -element vertex 1310 -property float x -property float y -property float z -property float nx -property float ny -property float nz -element face 356 -property list uchar uint vertex_indices -end_header --4.649800 14.945700 -8.785600 -0.021734 0.023193 -0.999495 --2.020300 14.610600 -8.278800 -0.021734 0.023193 -0.999495 --1.712600 0.024900 -9.195700 -0.021734 0.023193 -0.999495 --3.252600 0.001600 -8.591000 -0.021734 0.023193 -0.999495 --4.649800 14.945700 -8.785600 -0.983809 -0.091724 -0.153967 --3.252600 0.001600 -8.591000 -0.983809 -0.091724 -0.153967 --4.089400 2.633000 -5.031300 -0.983809 -0.091724 -0.153967 --5.308800 13.910900 -3.738700 -0.983809 -0.091724 -0.153967 --1.553600 3.059500 -4.173500 0.398905 -0.098999 0.911633 --1.766900 13.754900 -2.918700 0.398905 -0.098999 0.911633 --3.061600 3.537800 -3.461700 0.398905 -0.098999 0.911633 --1.553600 3.059500 -4.173500 0.977159 -0.002648 0.212493 --0.626000 0.031700 -8.336200 0.977159 -0.002648 0.212493 --0.971400 14.644800 -6.706400 0.977159 -0.002648 0.212493 --1.766900 13.754900 -2.918700 0.977159 -0.002648 0.212493 --5.495700 46.043098 -6.732400 -0.860977 -0.085411 -0.501422 --2.827600 38.171799 -8.088300 -0.860977 -0.085411 -0.501422 --5.919200 37.619099 -4.570300 -0.860977 -0.085411 -0.501422 --6.029500 46.188801 -3.956000 -0.860977 -0.085411 -0.501422 --4.685700 36.664101 -1.616400 -0.917535 -0.032092 0.396359 --4.298500 47.001099 -0.058900 -0.917535 -0.032092 0.396359 --6.029500 46.188801 -3.956000 -0.917535 -0.032092 0.396359 --5.919200 37.619099 -4.570300 -0.917535 -0.032092 0.396359 --6.775800 50.206501 -7.534500 -0.223809 0.028781 -0.974208 --7.252500 54.524502 -7.615000 -0.223809 0.028781 -0.974208 -0.000000 53.738098 -8.986800 -0.223809 0.028781 -0.974208 -0.000000 50.037800 -9.413700 -0.223809 0.028781 -0.974208 --7.252500 54.524502 -7.615000 -0.375359 0.901424 0.215731 --8.747800 53.770199 -7.353300 -0.375359 0.901424 0.215731 --8.184300 53.108700 -3.320400 -0.375359 0.901424 0.215731 --6.624100 53.529800 -2.653700 -0.375359 0.901424 0.215731 --9.827700 52.989700 -7.188500 -0.412168 0.895237 0.169320 --14.989100 50.565300 -7.297200 -0.412168 0.895237 0.169320 --15.636800 49.715099 -4.015700 -0.412168 0.895237 0.169320 --9.508400 52.403099 -3.672700 -0.412168 0.895237 0.169320 -0.000000 37.009800 0.550700 -0.339751 -0.089043 0.936291 -0.000000 47.287498 1.094200 -0.339751 -0.089043 0.936291 --4.298500 47.001099 -0.058900 -0.339751 -0.089043 0.936291 --4.685700 36.664101 -1.616400 -0.339751 -0.089043 0.936291 -0.000000 53.738098 -8.986800 -0.139268 0.841727 -0.521633 --7.252500 54.524502 -7.615000 -0.139268 0.841727 -0.521633 --2.321200 55.471001 -5.570800 -0.139268 0.841727 -0.521633 -0.000000 55.950600 -7.250100 -0.139268 0.841727 -0.521633 --6.624100 53.529800 -2.653700 -0.510018 -0.190129 0.838888 --7.813100 49.342701 -3.886900 -0.510018 -0.190129 0.838888 --6.029500 46.188801 -3.956000 -0.510018 -0.190129 0.838888 --3.773800 51.093601 -1.034300 -0.510018 -0.190129 0.838888 --6.029500 46.188801 -3.956000 -0.909885 0.202901 0.361857 --4.298500 47.001099 -0.058900 -0.909885 0.202901 0.361857 --3.773800 51.093601 -1.034300 -0.909885 0.202901 0.361857 -0.000000 50.880199 0.110000 -0.266804 0.255185 0.929352 --3.773800 51.093601 -1.034300 -0.266804 0.255185 0.929352 --4.298500 47.001099 -0.058900 -0.266804 0.255185 0.929352 -0.000000 47.287498 1.094200 -0.266804 0.255185 0.929352 --16.136200 50.023998 -7.546200 0.129075 0.179950 -0.975171 --14.989100 50.565300 -7.297200 0.129075 0.179950 -0.975171 --13.779500 47.417198 -7.715300 0.129075 0.179950 -0.975171 --14.885000 46.974701 -7.946000 0.129075 0.179950 -0.975171 --13.779500 47.417198 -7.715300 0.437873 -0.882573 -0.171264 --8.756500 49.321098 -7.632900 0.437873 -0.882573 -0.171264 --8.927200 49.128502 -4.128200 0.437873 -0.882573 -0.171264 --14.977100 45.689201 -4.821000 0.437873 -0.882573 -0.171264 --17.208200 49.477699 -7.512200 -0.268622 0.938905 0.215175 --22.585199 48.327702 -7.594400 -0.268622 0.938905 0.215175 --22.348700 46.932201 -2.822400 -0.268622 0.938905 0.215175 --16.810101 49.139900 -3.928800 -0.268622 0.938905 0.215175 --21.936399 43.055199 -3.733600 0.256926 -0.186034 0.948357 --16.192200 44.960400 -4.877100 0.256926 -0.186034 0.948357 --16.810101 49.139900 -3.928800 0.256926 -0.186034 0.948357 --22.348700 46.932201 -2.822400 0.256926 -0.186034 0.948357 --22.105101 44.119598 -7.074000 -0.471869 -0.161034 -0.866838 --23.337700 47.268200 -6.945000 -0.471869 -0.161034 -0.866838 --22.585199 48.327702 -7.594400 -0.471869 -0.161034 -0.866838 --21.061199 44.183601 -7.611200 -0.471869 -0.161034 -0.866838 --15.884600 46.520500 -7.855800 0.312108 -0.901546 -0.299673 --16.192200 44.960400 -4.877100 0.312108 -0.901546 -0.299673 --21.936399 43.055199 -3.733600 0.312108 -0.901546 -0.299673 --21.061199 44.183601 -7.611200 0.312108 -0.901546 -0.299673 --5.598500 31.822901 -1.405400 -0.899226 0.141575 0.413943 --7.174300 32.815300 -5.168000 -0.899226 0.141575 0.413943 --7.453900 29.910801 -4.782000 -0.899226 0.141575 0.413943 --4.970000 33.082802 -8.871300 -0.875321 0.068314 -0.478692 --5.595300 29.761600 -8.491100 -0.875321 0.068314 -0.478692 --7.453900 29.910801 -4.782000 -0.875321 0.068314 -0.478692 --7.174300 32.815300 -5.168000 -0.875321 0.068314 -0.478692 --6.827700 20.858999 -3.051400 -0.895608 -0.345701 -0.279959 --5.426000 21.341299 -8.131100 -0.895608 -0.345701 -0.279959 --6.194700 19.576300 -3.492500 -0.895608 -0.345701 -0.279959 --0.835600 22.853901 -8.203000 -0.044062 0.086408 -0.995285 --0.899900 21.410400 -8.342700 -0.044062 0.086408 -0.995285 --5.426000 21.341299 -8.131100 -0.044062 0.086408 -0.995285 --5.317800 22.936800 -8.014600 -0.044062 0.086408 -0.995285 --0.899900 21.410400 -8.342700 0.986890 0.053202 0.152371 --1.957400 20.620800 -1.217700 0.986890 0.053202 0.152371 --1.853000 19.164200 -1.385300 0.986890 0.053202 0.152371 --6.194700 19.576300 -3.492500 -0.393090 -0.299033 0.869517 --1.853000 19.164200 -1.385300 -0.393090 -0.299033 0.869517 --1.957400 20.620800 -1.217700 -0.393090 -0.299033 0.869517 --6.827700 20.858999 -3.051400 -0.393090 -0.299033 0.869517 --5.259600 15.490400 -9.599400 0.139442 0.106302 -0.984508 --5.426000 21.341299 -8.131100 0.139442 0.106302 -0.984508 --0.899900 21.410400 -8.342700 0.139442 0.106302 -0.984508 --0.294400 16.169500 -7.962700 0.139442 0.106302 -0.984508 --0.294400 16.169500 -7.962700 0.977002 0.117101 0.178197 --0.899900 21.410400 -8.342700 0.977002 0.117101 0.178197 --1.853000 19.164200 -1.385300 0.977002 0.117101 0.178197 --1.221800 14.450400 -2.004100 0.977002 0.117101 0.178197 --1.853000 19.164200 -1.385300 -0.395956 -0.119778 0.910424 --6.194700 19.576300 -3.492500 -0.395956 -0.119778 0.910424 --6.498700 14.643000 -4.000600 -0.395956 -0.119778 0.910424 --1.221800 14.450400 -2.004100 -0.395956 -0.119778 0.910424 --6.498700 14.643000 -4.000600 -0.982418 0.045709 -0.181012 --6.194700 19.576300 -3.492500 -0.982418 0.045709 -0.181012 --5.426000 21.341299 -8.131100 -0.982418 0.045709 -0.181012 --5.259600 15.490400 -9.599400 -0.982418 0.045709 -0.181012 --7.813100 49.342701 -3.886900 -0.881229 -0.394976 -0.259672 --6.775800 50.206501 -7.534500 -0.881229 -0.394976 -0.259672 --5.495700 46.043098 -6.732400 -0.881229 -0.394976 -0.259672 --6.029500 46.188801 -3.956000 -0.881229 -0.394976 -0.259672 --8.756500 49.321098 -7.632900 0.341557 -0.936397 -0.080618 --6.775800 50.206501 -7.534500 0.341557 -0.936397 -0.080618 --7.813100 49.342701 -3.886900 0.341557 -0.936397 -0.080618 --8.927200 49.128502 -4.128200 0.341557 -0.936397 -0.080618 --5.495700 46.043098 -6.732400 -0.295037 -0.218453 -0.930178 --6.775800 50.206501 -7.534500 -0.295037 -0.218453 -0.930178 -0.000000 50.037800 -9.413700 -0.295037 -0.218453 -0.930178 -0.000000 45.235802 -8.516300 -0.295037 -0.218453 -0.930178 --3.773800 51.093601 -1.034300 -0.217879 0.518058 0.827130 -0.000000 50.880199 0.110000 -0.217879 0.518058 0.827130 -0.000000 54.522099 -2.187600 -0.217879 0.518058 0.827130 --1.435700 55.057400 -2.884500 -0.217879 0.518058 0.827130 --0.163800 60.672798 0.405300 -0.878123 0.172158 0.446386 --0.596000 60.268700 -0.255900 -0.878123 0.172158 0.446386 --0.605400 59.453602 0.006800 -0.878123 0.172158 0.446386 --0.226300 59.631802 0.717000 -0.878123 0.172158 0.446386 -0.000000 59.375900 0.272700 -0.351825 0.003851 0.936058 --0.605400 59.453602 0.006800 -0.351825 0.003851 0.936058 --0.793500 58.611801 -0.022400 -0.351825 0.003851 0.936058 -0.000000 58.735298 0.237300 -0.351825 0.003851 0.936058 --1.340700 61.343498 -1.024900 -0.500896 0.173312 0.847978 --2.209500 61.230499 -1.515000 -0.500896 0.173312 0.847978 --2.225300 60.301201 -1.334400 -0.500896 0.173312 0.847978 --0.474100 61.294899 -0.607800 -0.419394 -0.893935 0.158081 --0.179900 61.274700 0.058500 -0.419394 -0.893935 0.158081 --0.785400 61.539799 -0.048800 -0.419394 -0.893935 0.158081 --0.163800 60.672798 0.405300 -0.879737 0.234636 0.413532 --0.179900 61.274700 0.058500 -0.879737 0.234636 0.413532 --0.474100 61.294899 -0.607800 -0.879737 0.234636 0.413532 --0.596000 60.268700 -0.255900 -0.879737 0.234636 0.413532 --0.785400 61.539799 -0.048800 -0.405349 0.400850 0.821591 -0.000000 62.775902 -0.355700 -0.405349 0.400850 0.821591 --1.901400 62.898899 -1.262500 -0.405349 0.400850 0.821591 --1.792100 61.563202 -0.648200 -0.405349 0.400850 0.821591 --1.901400 62.898899 -1.262500 -0.958885 0.139689 0.247034 --2.505800 61.413601 -3.333900 -0.958885 0.139689 0.247034 --2.209500 61.230499 -1.515000 -0.958885 0.139689 0.247034 --1.792100 61.563202 -0.648200 -0.958885 0.139689 0.247034 --2.071800 58.080299 -1.837600 -0.982605 0.010378 0.185418 --2.043500 58.694401 -1.722000 -0.982605 0.010378 0.185418 --2.361600 58.652599 -3.405400 -0.982605 0.010378 0.185418 --2.361600 58.652599 -3.405400 -0.835615 -0.547438 -0.045374 --1.480400 57.287800 -3.167400 -0.835615 -0.547438 -0.045374 --2.071800 58.080299 -1.837600 -0.835615 -0.547438 -0.045374 --2.361600 58.652599 -3.405400 -0.962379 -0.178153 0.205154 --2.043500 58.694401 -1.722000 -0.962379 -0.178153 0.205154 --2.225300 60.301201 -1.334400 -0.962379 -0.178153 0.205154 --2.484800 60.667999 -2.078300 -0.962379 -0.178153 0.205154 --0.596000 60.268700 -0.255900 -0.569338 0.180881 0.801958 --2.225300 60.301201 -1.334400 -0.569338 0.180881 0.801958 --0.793500 58.611801 -0.022400 -0.569338 0.180881 0.801958 --0.605400 59.453602 0.006800 -0.569338 0.180881 0.801958 --0.793500 58.611801 -0.022400 -0.424783 -0.113068 0.898207 --0.860300 57.339199 -0.345300 -0.424783 -0.113068 0.898207 -0.000000 57.320400 0.190300 -0.424783 -0.113068 0.898207 -0.000000 58.735298 0.237300 -0.424783 -0.113068 0.898207 --2.361600 58.652599 -3.405400 -0.801295 -0.555920 -0.221086 --1.507500 57.978802 -4.806700 -0.801295 -0.555920 -0.221086 --1.480400 57.287800 -3.167400 -0.801295 -0.555920 -0.221086 --1.480400 57.287800 -3.167400 -0.605736 -0.042761 0.794516 --1.435700 55.057400 -2.884500 -0.605736 -0.042761 0.794516 -0.000000 54.522099 -2.187600 -0.605736 -0.042761 0.794516 --0.509500 56.862801 -2.081200 -0.605736 -0.042761 0.794516 --1.435700 55.057400 -2.884500 -0.962522 0.132164 0.236820 --1.480400 57.287800 -3.167400 -0.962522 0.132164 0.236820 --1.507500 57.978802 -4.806700 -0.962522 0.132164 0.236820 --2.321200 55.471001 -5.570800 -0.962522 0.132164 0.236820 --5.259600 15.490400 -9.599400 0.329887 -0.177209 -0.927239 --0.294400 16.169500 -7.962700 0.329887 -0.177209 -0.927239 --2.020300 14.610600 -8.278800 0.329887 -0.177209 -0.927239 --0.294400 16.169500 -7.962700 0.923351 -0.382504 0.033356 --1.221800 14.450400 -2.004100 0.923351 -0.382504 0.033356 --0.971400 14.644800 -6.706400 0.923351 -0.382504 0.033356 --5.308800 13.910900 -3.738700 -0.281184 -0.501171 0.818391 --1.766900 13.754900 -2.918700 -0.281184 -0.501171 0.818391 --1.221800 14.450400 -2.004100 -0.281184 -0.501171 0.818391 --6.498700 14.643000 -4.000600 -0.281184 -0.501171 0.818391 --4.649800 14.945700 -8.785600 -0.465679 -0.853476 -0.233927 --5.308800 13.910900 -3.738700 -0.465679 -0.853476 -0.233927 --6.498700 14.643000 -4.000600 -0.465679 -0.853476 -0.233927 --5.259600 15.490400 -9.599400 -0.465679 -0.853476 -0.233927 --1.957400 20.620800 -1.217700 0.981627 0.066418 0.178877 --0.899900 21.410400 -8.342700 0.981627 0.066418 0.178877 --0.835600 22.853901 -8.203000 0.981627 0.066418 0.178877 --2.189200 21.987900 -1.481800 0.981627 0.066418 0.178877 --7.174300 32.815300 -5.168000 -0.882053 0.156893 -0.444261 --6.542300 35.480598 -4.902800 -0.882053 0.156893 -0.444261 --5.283200 35.952900 -7.814600 -0.882053 0.156893 -0.444261 --4.970000 33.082802 -8.871300 -0.882053 0.156893 -0.444261 --5.598500 31.822901 -1.405400 -0.892193 0.169920 0.418473 --6.542300 35.480598 -4.902800 -0.892193 0.169920 0.418473 --7.174300 32.815300 -5.168000 -0.892193 0.169920 0.418473 --4.685700 36.664101 -1.616400 -0.474113 0.127364 0.871203 --5.598500 31.822901 -1.405400 -0.474113 0.127364 0.871203 --3.798500 31.552500 -0.386300 -0.474113 0.127364 0.871203 --2.225300 60.301201 -1.334400 -0.926529 0.086891 0.366052 --2.209500 61.230499 -1.515000 -0.926529 0.086891 0.366052 --2.484800 60.667999 -2.078300 -0.926529 0.086891 0.366052 --8.927200 49.128502 -4.128200 -0.174303 -0.164506 0.970853 --7.813100 49.342701 -3.886900 -0.174303 -0.164506 0.970853 --8.184300 53.108700 -3.320400 -0.174303 -0.164506 0.970853 --9.508400 52.403099 -3.672700 -0.174303 -0.164506 0.970853 --8.184300 53.108700 -3.320400 -0.526523 0.826719 0.198265 --8.747800 53.770199 -7.353300 -0.526523 0.826719 0.198265 --9.827700 52.989700 -7.188500 -0.526523 0.826719 0.198265 --9.508400 52.403099 -3.672700 -0.526523 0.826719 0.198265 --8.747800 53.770199 -7.353300 -0.154881 -0.035505 -0.987295 --7.252500 54.524502 -7.615000 -0.154881 -0.035505 -0.987295 --6.775800 50.206501 -7.534500 -0.154881 -0.035505 -0.987295 --8.927200 49.128502 -4.128200 0.001669 -0.169906 0.985459 --9.508400 52.403099 -3.672700 0.001669 -0.169906 0.985459 --15.636800 49.715099 -4.015700 0.001669 -0.169906 0.985459 --14.977100 45.689201 -4.821000 0.001669 -0.169906 0.985459 --6.624100 53.529800 -2.653700 -0.215818 0.814400 0.538680 --3.773800 51.093601 -1.034300 -0.215818 0.814400 0.538680 --1.435700 55.057400 -2.884500 -0.215818 0.814400 0.538680 --7.252500 54.524502 -7.615000 -0.215818 0.814400 0.538680 --2.321200 55.471001 -5.570800 -0.276118 0.932071 0.234526 --7.252500 54.524502 -7.615000 -0.276118 0.932071 0.234526 --1.435700 55.057400 -2.884500 -0.276118 0.932071 0.234526 --2.209500 61.230499 -1.515000 -0.942806 0.279456 0.181716 --2.505800 61.413601 -3.333900 -0.942806 0.279456 0.181716 --2.484800 60.667999 -2.078300 -0.942806 0.279456 0.181716 --2.484800 60.667999 -2.078300 -0.998559 -0.051788 -0.014052 --2.505800 61.413601 -3.333900 -0.998559 -0.051788 -0.014052 --2.361600 58.652599 -3.405400 -0.998559 -0.051788 -0.014052 --2.209500 61.230499 -1.515000 -0.107977 -0.909631 0.401138 --1.340700 61.343498 -1.024900 -0.107977 -0.909631 0.401138 --1.792100 61.563202 -0.648200 -0.107977 -0.909631 0.401138 --3.061600 3.537800 -3.461700 0.234488 0.898953 0.369997 --3.735600 1.816900 0.228400 0.234488 0.898953 0.369997 --1.568700 1.981700 -0.627100 0.234488 0.898953 0.369997 --1.553600 3.059500 -4.173500 0.234488 0.898953 0.369997 --0.626000 0.031700 -8.336200 0.992053 0.072189 0.103052 --1.553600 3.059500 -4.173500 0.992053 0.072189 0.103052 --1.568700 1.981700 -0.627100 0.992053 0.072189 0.103052 --1.825200 -0.024100 0.601200 0.992053 0.072189 0.103052 --1.825200 -0.024100 0.601200 -0.002195 -0.999985 -0.005027 --3.769300 -0.009000 1.132900 -0.002195 -0.999985 -0.005027 --1.712600 0.024900 -9.195700 -0.002195 -0.999985 -0.005027 --0.626000 0.031700 -8.336200 -0.002195 -0.999985 -0.005027 --1.712600 0.024900 -9.195700 0.748722 0.074200 -0.658719 --2.020300 14.610600 -8.278800 0.748722 0.074200 -0.658719 --0.971400 14.644800 -6.706400 0.748722 0.074200 -0.658719 --0.626000 0.031700 -8.336200 0.748722 0.074200 -0.658719 --1.568700 1.981700 -0.627100 0.270273 0.452545 0.849798 --3.735600 1.816900 0.228400 0.270273 0.452545 0.849798 --3.769300 -0.009000 1.132900 0.270273 0.452545 0.849798 --1.825200 -0.024100 0.601200 0.270273 0.452545 0.849798 --4.089400 2.633000 -5.031300 -0.957442 -0.073711 -0.279054 --3.252600 0.001600 -8.591000 -0.957442 -0.073711 -0.279054 --5.176800 -0.025000 -0.598300 -0.957442 -0.073711 -0.279054 --5.390300 1.568200 -1.670300 -0.957442 -0.073711 -0.279054 --3.769300 -0.009000 1.132900 -0.738109 0.308147 0.600201 --3.735600 1.816900 0.228400 -0.738109 0.308147 0.600201 --5.390300 1.568200 -1.670300 -0.738109 0.308147 0.600201 --5.176800 -0.025000 -0.598300 -0.738109 0.308147 0.600201 --5.390300 1.568200 -1.670300 -0.560649 0.811720 0.163660 --3.735600 1.816900 0.228400 -0.560649 0.811720 0.163660 --3.061600 3.537800 -3.461700 -0.560649 0.811720 0.163660 --4.089400 2.633000 -5.031300 -0.560649 0.811720 0.163660 --3.061600 3.537800 -3.461700 -0.452521 -0.074303 0.888653 --1.766900 13.754900 -2.918700 -0.452521 -0.074303 0.888653 --5.308800 13.910900 -3.738700 -0.452521 -0.074303 0.888653 --4.089400 2.633000 -5.031300 -0.452521 -0.074303 0.888653 --2.020300 14.610600 -8.278800 0.001520 -0.830500 -0.557017 --4.649800 14.945700 -8.785600 0.001520 -0.830500 -0.557017 --5.259600 15.490400 -9.599400 0.001520 -0.830500 -0.557017 --2.020300 14.610600 -8.278800 0.649568 -0.634088 -0.419515 --0.294400 16.169500 -7.962700 0.649568 -0.634088 -0.419515 --0.971400 14.644800 -6.706400 0.649568 -0.634088 -0.419515 --5.426000 21.341299 -8.131100 -0.959570 0.028386 -0.280036 --6.827700 20.858999 -3.051400 -0.959570 0.028386 -0.280036 --6.824000 22.193899 -3.254300 -0.959570 0.028386 -0.280036 --5.317800 22.936800 -8.014600 -0.959570 0.028386 -0.280036 --0.845100 29.891001 -9.491500 -0.126028 -0.127868 -0.983751 --0.835600 22.853901 -8.203000 -0.126028 -0.127868 -0.983751 --5.317800 22.936800 -8.014600 -0.126028 -0.127868 -0.983751 --5.595300 29.761600 -8.491100 -0.126028 -0.127868 -0.983751 --1.957400 20.620800 -1.217700 -0.346283 0.131313 0.928895 --2.189200 21.987900 -1.481800 -0.346283 0.131313 0.928895 --6.824000 22.193899 -3.254300 -0.346283 0.131313 0.928895 --6.827700 20.858999 -3.051400 -0.346283 0.131313 0.928895 --0.605400 59.453602 0.006800 -0.276378 -0.886938 0.370075 -0.000000 59.375900 0.272700 -0.276378 -0.886938 0.370075 --0.226300 59.631802 0.717000 -0.276378 -0.886938 0.370075 --21.936399 43.055199 -3.733600 -0.245050 -0.199318 0.948801 --22.348700 46.932201 -2.822400 -0.245050 -0.199318 0.948801 --23.323000 46.228001 -3.425200 -0.245050 -0.199318 0.948801 --23.265499 44.290199 -3.614200 -0.245050 -0.199318 0.948801 --22.105101 44.119598 -7.074000 -0.680722 -0.210597 -0.701617 --23.273100 44.479099 -6.170500 -0.680722 -0.210597 -0.701617 --23.881300 46.267799 -5.995500 -0.680722 -0.210597 -0.701617 --23.337700 47.268200 -6.945000 -0.680722 -0.210597 -0.701617 --22.348700 46.932201 -2.822400 -0.710630 0.673907 0.202126 --23.337700 47.268200 -6.945000 -0.710630 0.673907 0.202126 --23.881300 46.267799 -5.995500 -0.710630 0.673907 0.202126 --23.323000 46.228001 -3.425200 -0.710630 0.673907 0.202126 --21.936399 43.055199 -3.733600 -0.575702 -0.803125 -0.153486 --23.265499 44.290199 -3.614200 -0.575702 -0.803125 -0.153486 --23.273100 44.479099 -6.170500 -0.575702 -0.803125 -0.153486 --22.105101 44.119598 -7.074000 -0.575702 -0.803125 -0.153486 --23.323000 46.228001 -3.425200 0.234519 0.052147 0.970712 --24.935400 45.742901 -3.288800 0.234519 0.052147 0.970712 --24.446100 44.099098 -3.039500 0.234519 0.052147 0.970712 --23.265499 44.290199 -3.614200 0.234519 0.052147 0.970712 --23.273100 44.479099 -6.170500 -0.051663 0.047611 -0.997529 --25.718901 44.407902 -5.989100 -0.051663 0.047611 -0.997529 --25.982700 45.641201 -5.974700 -0.051663 0.047611 -0.997529 --23.881300 46.267799 -5.995500 -0.051663 0.047611 -0.997529 --23.881300 46.267799 -5.995500 -0.283035 0.956157 0.075198 --25.982700 45.641201 -5.974700 -0.283035 0.956157 0.075198 --24.935400 45.742901 -3.288800 -0.283035 0.956157 0.075198 --23.323000 46.228001 -3.425200 -0.283035 0.956157 0.075198 --23.265499 44.290199 -3.614200 0.050680 -0.993534 -0.101596 --24.446100 44.099098 -3.039500 0.050680 -0.993534 -0.101596 --25.718901 44.407902 -5.989100 0.050680 -0.993534 -0.101596 --23.273100 44.479099 -6.170500 0.050680 -0.993534 -0.101596 --3.798500 31.552500 -0.386300 -0.302820 0.047342 0.951871 -0.000000 31.552500 0.128500 -0.302820 0.047342 0.951871 -0.000000 37.009800 0.550700 -0.302820 0.047342 0.951871 --4.685700 36.664101 -1.616400 -0.302820 0.047342 0.951871 --27.058001 43.733101 -1.471100 -0.612973 -0.035197 0.789319 --28.100901 44.177299 -2.470000 -0.612973 -0.035197 0.789319 --27.637899 42.321201 -1.984400 -0.612973 -0.035197 0.789319 --26.775499 43.007000 -1.492900 -0.612973 -0.035197 0.789319 --27.102699 45.320202 -5.735100 -0.288380 -0.175341 -0.941325 --25.982700 45.641201 -5.974700 -0.288380 -0.175341 -0.941325 --25.718901 44.407902 -5.989100 -0.288380 -0.175341 -0.941325 --26.246300 42.901402 -5.383600 -0.288380 -0.175341 -0.941325 --24.935400 45.742901 -3.288800 -0.215944 0.976143 0.022647 --25.982700 45.641201 -5.974700 -0.215944 0.976143 0.022647 --27.102699 45.320202 -5.735100 -0.215944 0.976143 0.022647 --26.753901 45.398300 -2.858600 -0.215944 0.976143 0.022647 --24.446100 44.099098 -3.039500 0.806467 -0.440747 -0.394147 --26.246300 42.901402 -5.383600 0.806467 -0.440747 -0.394147 --25.718901 44.407902 -5.989100 0.806467 -0.440747 -0.394147 --28.380600 42.330502 -3.056600 -0.840529 -0.044209 0.539960 --27.637899 42.321201 -1.984400 -0.840529 -0.044209 0.539960 --28.100901 44.177299 -2.470000 -0.840529 -0.044209 0.539960 --28.697901 44.238201 -3.477500 -0.840529 -0.044209 0.539960 --28.380600 42.330502 -3.056600 -0.979149 -0.175223 -0.102788 --28.697901 44.238201 -3.477500 -0.979149 -0.175223 -0.102788 --28.543800 44.178001 -4.651400 -0.979149 -0.175223 -0.102788 --28.292801 42.543098 -4.446800 -0.979149 -0.175223 -0.102788 --26.753901 45.398300 -2.858600 -0.560189 0.737837 0.376544 --28.697901 44.238201 -3.477500 -0.560189 0.737837 0.376544 --28.100901 44.177299 -2.470000 -0.560189 0.737837 0.376544 --24.935400 45.742901 -3.288800 0.484106 0.321222 0.813915 --26.117701 44.487900 -2.198700 0.484106 0.321222 0.813915 --25.587200 43.557701 -2.038700 0.484106 0.321222 0.813915 --24.446100 44.099098 -3.039500 0.484106 0.321222 0.813915 --24.446100 44.099098 -3.039500 0.765721 -0.642695 -0.024780 --25.587200 43.557701 -2.038700 0.765721 -0.642695 -0.024780 --25.491899 42.827301 -2.370100 0.765721 -0.642695 -0.024780 --26.246300 42.901402 -5.383600 0.765721 -0.642695 -0.024780 --26.753901 45.398300 -2.858600 0.068715 0.616533 0.784324 --26.117701 44.487900 -2.198700 0.068715 0.616533 0.784324 --24.935400 45.742901 -3.288800 0.068715 0.616533 0.784324 -0.000000 31.552500 0.128500 -0.069551 -0.031626 0.997077 --3.798500 31.552500 -0.386300 -0.069551 -0.031626 0.997077 --3.463700 23.872801 -0.356700 -0.069551 -0.031626 0.997077 -0.000000 24.132099 -0.356700 -0.069551 -0.031626 0.997077 --2.225300 60.301201 -1.334400 -0.789816 -0.226827 0.569860 --2.043500 58.694401 -1.722000 -0.789816 -0.226827 0.569860 --0.793500 58.611801 -0.022400 -0.789816 -0.226827 0.569860 --0.793500 58.611801 -0.022400 -0.800106 -0.097243 0.591924 --2.043500 58.694401 -1.722000 -0.800106 -0.097243 0.591924 --2.071800 58.080299 -1.837600 -0.800106 -0.097243 0.591924 --0.860300 57.339199 -0.345300 -0.800106 -0.097243 0.591924 --2.071800 58.080299 -1.837600 -0.594038 -0.791272 0.144939 --1.480400 57.287800 -3.167400 -0.594038 -0.791272 0.144939 --0.509500 56.862801 -2.081200 -0.594038 -0.791272 0.144939 --0.860300 57.339199 -0.345300 -0.594038 -0.791272 0.144939 --0.179900 61.274700 0.058500 -0.090663 0.188705 0.977840 -0.000000 61.912998 -0.048000 -0.090663 0.188705 0.977840 --0.785400 61.539799 -0.048800 -0.090663 0.188705 0.977840 --15.884600 46.520500 -7.855800 -0.098387 0.080586 -0.991880 --17.208200 49.477699 -7.512200 -0.098387 0.080586 -0.991880 --16.136200 50.023998 -7.546200 -0.098387 0.080586 -0.991880 --14.885000 46.974701 -7.946000 -0.098387 0.080586 -0.991880 --15.636800 49.715099 -4.015700 -0.436830 0.889212 0.135946 --16.136200 50.023998 -7.546200 -0.436830 0.889212 0.135946 --17.208200 49.477699 -7.512200 -0.436830 0.889212 0.135946 --16.810101 49.139900 -3.928800 -0.436830 0.889212 0.135946 --16.192200 44.960400 -4.877100 0.435886 -0.826304 -0.356686 --15.884600 46.520500 -7.855800 0.435886 -0.826304 -0.356686 --14.885000 46.974701 -7.946000 0.435886 -0.826304 -0.356686 --14.977100 45.689201 -4.821000 0.435886 -0.826304 -0.356686 --16.810101 49.139900 -3.928800 0.116417 -0.190205 0.974818 --16.192200 44.960400 -4.877100 0.116417 -0.190205 0.974818 --14.977100 45.689201 -4.821000 0.116417 -0.190205 0.974818 --15.636800 49.715099 -4.015700 0.116417 -0.190205 0.974818 --13.779500 47.417198 -7.715300 -0.030432 0.115440 -0.992848 --14.989100 50.565300 -7.297200 -0.030432 0.115440 -0.992848 --9.827700 52.989700 -7.188500 -0.030432 0.115440 -0.992848 --8.756500 49.321098 -7.632900 -0.030432 0.115440 -0.992848 --15.636800 49.715099 -4.015700 -0.447311 0.883265 0.140554 --14.989100 50.565300 -7.297200 -0.447311 0.883265 0.140554 --16.136200 50.023998 -7.546200 -0.447311 0.883265 0.140554 --13.779500 47.417198 -7.715300 0.409629 -0.847844 -0.336697 --14.977100 45.689201 -4.821000 0.409629 -0.847844 -0.336697 --14.885000 46.974701 -7.946000 0.409629 -0.847844 -0.336697 --0.971400 14.644800 -6.706400 0.777065 -0.629233 0.015366 --1.221800 14.450400 -2.004100 0.777065 -0.629233 0.015366 --1.766900 13.754900 -2.918700 0.777065 -0.629233 0.015366 --26.117701 44.487900 -2.198700 0.374471 0.258120 0.890587 --27.058001 43.733101 -1.471100 0.374471 0.258120 0.890587 --26.775499 43.007000 -1.492900 0.374471 0.258120 0.890587 --25.587200 43.557701 -2.038700 0.374471 0.258120 0.890587 --25.587200 43.557701 -2.038700 0.386633 -0.610879 0.690899 --26.775499 43.007000 -1.492900 0.386633 -0.610879 0.690899 --27.637899 42.321201 -1.984400 0.386633 -0.610879 0.690899 --25.491899 42.827301 -2.370100 0.386633 -0.610879 0.690899 --26.117701 44.487900 -2.198700 -0.202601 0.798645 0.566673 --28.100901 44.177299 -2.470000 -0.202601 0.798645 0.566673 --27.058001 43.733101 -1.471100 -0.202601 0.798645 0.566673 --8.184300 53.108700 -3.320400 -0.347207 -0.172872 0.921717 --7.813100 49.342701 -3.886900 -0.347207 -0.172872 0.921717 --6.624100 53.529800 -2.653700 -0.347207 -0.172872 0.921717 --8.747800 53.770199 -7.353300 -0.055764 0.062731 -0.996471 --6.775800 50.206501 -7.534500 -0.055764 0.062731 -0.996471 --8.756500 49.321098 -7.632900 -0.055764 0.062731 -0.996471 --9.827700 52.989700 -7.188500 -0.055764 0.062731 -0.996471 --28.543800 44.178001 -4.651400 -0.562493 0.826801 -0.001192 --28.697901 44.238201 -3.477500 -0.562493 0.826801 -0.001192 --26.753901 45.398300 -2.858600 -0.562493 0.826801 -0.001192 --27.102699 45.320202 -5.735100 -0.562493 0.826801 -0.001192 --26.246300 42.901402 -5.383600 0.106461 -0.983873 -0.143736 --28.380600 42.330502 -3.056600 0.106461 -0.983873 -0.143736 --28.292801 42.543098 -4.446800 0.106461 -0.983873 -0.143736 --28.100901 44.177299 -2.470000 -0.192584 0.484112 0.853550 --26.117701 44.487900 -2.198700 -0.192584 0.484112 0.853550 --26.753901 45.398300 -2.858600 -0.192584 0.484112 0.853550 --1.712600 0.024900 -9.195700 0.013475 -0.999909 -0.000374 --3.769300 -0.009000 1.132900 0.013475 -0.999909 -0.000374 --5.176800 -0.025000 -0.598300 0.013475 -0.999909 -0.000374 --3.252600 0.001600 -8.591000 0.013475 -0.999909 -0.000374 -0.000000 61.912998 -0.048000 -0.158526 0.331625 0.929997 -0.000000 62.775902 -0.355700 -0.158526 0.331625 0.929997 --0.785400 61.539799 -0.048800 -0.158526 0.331625 0.929997 --0.340300 31.400700 -9.922000 0.943854 -0.327649 -0.042263 --0.425600 30.069099 -1.503600 0.943854 -0.327649 -0.042263 --0.845100 29.891001 -9.491500 0.943854 -0.327649 -0.042263 -0.000000 54.522099 -2.187600 0.000000 -0.045410 0.998968 -0.000000 56.862801 -2.081200 0.000000 -0.045410 0.998968 --0.509500 56.862801 -2.081200 0.000000 -0.045410 0.998968 --0.509500 56.862801 -2.081200 -0.098448 -0.971038 0.217700 -0.000000 56.862801 -2.081200 -0.098448 -0.971038 0.217700 -0.000000 57.320400 0.190300 -0.098448 -0.971038 0.217700 --0.860300 57.339199 -0.345300 -0.098448 -0.971038 0.217700 --5.598500 31.822901 -1.405400 -0.881296 0.021519 0.472075 --7.453900 29.910801 -4.782000 -0.881296 0.021519 0.472075 --6.824000 22.193899 -3.254300 -0.881296 0.021519 0.472075 --6.824000 22.193899 -3.254300 -0.921164 -0.108973 -0.373607 --7.453900 29.910801 -4.782000 -0.921164 -0.108973 -0.373607 --5.595300 29.761600 -8.491100 -0.921164 -0.108973 -0.373607 --5.317800 22.936800 -8.014600 -0.921164 -0.108973 -0.373607 --3.798500 31.552500 -0.386300 -0.402805 -0.146650 0.903461 --5.598500 31.822901 -1.405400 -0.402805 -0.146650 0.903461 --6.824000 22.193899 -3.254300 -0.402805 -0.146650 0.903461 --2.189200 21.987900 -1.481800 -0.402805 -0.146650 0.903461 --0.340300 31.400700 -9.922000 -0.229486 -0.108632 -0.967231 --0.845100 29.891001 -9.491500 -0.229486 -0.108632 -0.967231 --5.595300 29.761600 -8.491100 -0.229486 -0.108632 -0.967231 --4.970000 33.082802 -8.871300 -0.229486 -0.108632 -0.967231 --0.835600 22.853901 -8.203000 0.992234 -0.110109 0.057862 --0.845100 29.891001 -9.491500 0.992234 -0.110109 0.057862 --0.425600 30.069099 -1.503600 0.992234 -0.110109 0.057862 --2.189200 21.987900 -1.481800 0.992234 -0.110109 0.057862 --2.162800 35.743500 -9.599900 -0.324262 0.084100 -0.942221 --0.340300 31.400700 -9.922000 -0.324262 0.084100 -0.942221 --4.970000 33.082802 -8.871300 -0.324262 0.084100 -0.942221 --5.283200 35.952900 -7.814600 -0.324262 0.084100 -0.942221 --5.283200 35.952900 -7.814600 -0.889642 0.311183 -0.334218 --6.542300 35.480598 -4.902800 -0.889642 0.311183 -0.334218 --5.919200 37.619099 -4.570300 -0.889642 0.311183 -0.334218 --5.919200 37.619099 -4.570300 -0.882633 0.186716 0.431389 --6.542300 35.480598 -4.902800 -0.882633 0.186716 0.431389 --5.598500 31.822901 -1.405400 -0.882633 0.186716 0.431389 --4.685700 36.664101 -1.616400 -0.882633 0.186716 0.431389 --0.474100 61.294899 -0.607800 -0.490764 0.255871 0.832875 --1.340700 61.343498 -1.024900 -0.490764 0.255871 0.832875 --2.225300 60.301201 -1.334400 -0.490764 0.255871 0.832875 --0.596000 60.268700 -0.255900 -0.490764 0.255871 0.832875 --1.340700 61.343498 -1.024900 -0.199083 -0.932669 0.300824 --0.474100 61.294899 -0.607800 -0.199083 -0.932669 0.300824 --0.785400 61.539799 -0.048800 -0.199083 -0.932669 0.300824 --1.792100 61.563202 -0.648200 -0.199083 -0.932669 0.300824 -0.000000 45.235802 -8.516300 -0.205813 0.023108 -0.978318 -0.000000 38.221600 -8.073300 -0.205813 0.023108 -0.978318 --2.827600 38.171799 -8.088300 -0.205813 0.023108 -0.978318 --5.495700 46.043098 -6.732400 -0.205813 0.023108 -0.978318 --0.425600 30.069099 -1.503600 0.289736 -0.060654 0.955183 --3.798500 31.552500 -0.386300 0.289736 -0.060654 0.955183 --2.189200 21.987900 -1.481800 0.289736 -0.060654 0.955183 -0.000000 31.547001 -9.939100 0.347255 -0.926523 -0.144807 -0.000000 30.215401 -1.522000 0.347255 -0.926523 -0.144807 --0.425600 30.069099 -1.503600 0.347255 -0.926523 -0.144807 --0.340300 31.400700 -9.922000 0.347255 -0.926523 -0.144807 --21.061199 44.183601 -7.611200 -0.028361 0.039319 -0.998824 --22.585199 48.327702 -7.594400 -0.028361 0.039319 -0.998824 --17.208200 49.477699 -7.512200 -0.028361 0.039319 -0.998824 --15.884600 46.520500 -7.855800 -0.028361 0.039319 -0.998824 --22.348700 46.932201 -2.822400 -0.723103 0.652497 0.226650 --22.585199 48.327702 -7.594400 -0.723103 0.652497 0.226650 --23.337700 47.268200 -6.945000 -0.723103 0.652497 0.226650 --21.061199 44.183601 -7.611200 -0.095048 -0.949863 -0.297868 --21.936399 43.055199 -3.733600 -0.095048 -0.949863 -0.297868 --22.105101 44.119598 -7.074000 -0.095048 -0.949863 -0.297868 -0.000000 59.375900 0.272700 0.000000 -0.866545 0.499100 -0.226300 59.631802 0.717000 0.000000 -0.866545 0.499100 --0.226300 59.631802 0.717000 0.000000 -0.866545 0.499100 --0.163800 60.672798 0.405300 0.000000 0.286842 0.957978 --0.226300 59.631802 0.717000 0.000000 0.286842 0.957978 -0.226300 59.631802 0.717000 0.000000 0.286842 0.957978 -0.163800 60.672798 0.405300 0.000000 0.286842 0.957978 --0.340300 31.400700 -9.922000 -0.012671 0.074070 -0.997173 --2.162800 35.743500 -9.599900 -0.012671 0.074070 -0.997173 -0.000000 35.795200 -9.599900 -0.012671 0.074070 -0.997173 -0.000000 31.547001 -9.939100 -0.012671 0.074070 -0.997173 --5.919200 37.619099 -4.570300 -0.561685 0.544798 -0.622660 --2.827600 38.171799 -8.088300 -0.561685 0.544798 -0.622660 --2.162800 35.743500 -9.599900 -0.561685 0.544798 -0.622660 --5.283200 35.952900 -7.814600 -0.561685 0.544798 -0.622660 --28.543800 44.178001 -4.651400 -0.410462 -0.233070 -0.881589 --27.102699 45.320202 -5.735100 -0.410462 -0.233070 -0.881589 --26.246300 42.901402 -5.383600 -0.410462 -0.233070 -0.881589 --28.292801 42.543098 -4.446800 -0.410462 -0.233070 -0.881589 --25.491899 42.827301 -2.370100 0.201709 -0.968181 -0.148119 --27.637899 42.321201 -1.984400 0.201709 -0.968181 -0.148119 --28.380600 42.330502 -3.056600 0.201709 -0.968181 -0.148119 --26.246300 42.901402 -5.383600 0.185319 -0.980147 -0.070494 --25.491899 42.827301 -2.370100 0.185319 -0.980147 -0.070494 --28.380600 42.330502 -3.056600 0.185319 -0.980147 -0.070494 --0.179900 61.274700 0.058500 0.000000 0.499235 0.866467 --0.163800 60.672798 0.405300 0.000000 0.499235 0.866467 -0.163800 60.672798 0.405300 0.000000 0.499235 0.866467 -0.179900 61.274700 0.058500 0.000000 0.499235 0.866467 -0.000000 61.912998 -0.048000 0.000000 0.164575 0.986365 --0.179900 61.274700 0.058500 0.000000 0.164575 0.986365 -0.179900 61.274700 0.058500 0.000000 0.164575 0.986365 --2.162800 35.743500 -9.599900 -0.008224 0.529675 -0.848161 --2.827600 38.171799 -8.088300 -0.008224 0.529675 -0.848161 -0.000000 38.221600 -8.073300 -0.008224 0.529675 -0.848161 -0.000000 35.795200 -9.599900 -0.008224 0.529675 -0.848161 -4.620900 14.945700 -8.516100 0.163464 0.013069 -0.986463 -3.252600 0.001600 -8.591000 0.163464 0.013069 -0.986463 -1.712600 0.024900 -9.195700 0.163464 0.013069 -0.986463 -1.456400 14.610600 -8.695100 0.163464 0.013069 -0.986463 -4.089400 2.633000 -5.031300 0.982688 -0.088487 -0.162770 -3.252600 0.001600 -8.591000 0.982688 -0.088487 -0.162770 -4.620900 14.945700 -8.516100 0.982688 -0.088487 -0.162770 -5.308800 13.910900 -3.738700 0.982688 -0.088487 -0.162770 -1.553600 3.059500 -4.173500 -0.398905 -0.098999 0.911633 -3.061600 3.537800 -3.461700 -0.398905 -0.098999 0.911633 -1.766900 13.754900 -2.918700 -0.398905 -0.098999 0.911633 -1.553600 3.059500 -4.173500 -0.983093 0.009545 0.182857 -1.766900 13.754900 -2.918700 -0.983093 0.009545 0.182857 -1.239800 14.644800 -6.465300 -0.983093 0.009545 0.182857 -0.626000 0.031700 -8.336200 -0.983093 0.009545 0.182857 -5.495700 46.043098 -6.732400 0.860977 -0.085411 -0.501422 -6.029500 46.188801 -3.956000 0.860977 -0.085411 -0.501422 -5.919200 37.619099 -4.570300 0.860977 -0.085411 -0.501422 -2.827600 38.171799 -8.088300 0.860977 -0.085411 -0.501422 -4.685700 36.664101 -1.616400 0.917535 -0.032092 0.396359 -5.919200 37.619099 -4.570300 0.917535 -0.032092 0.396359 -6.029500 46.188801 -3.956000 0.917535 -0.032092 0.396359 -4.298500 47.001099 -0.058900 0.917535 -0.032092 0.396359 -6.775800 50.206501 -7.534500 0.223809 0.028781 -0.974208 -0.000000 50.037800 -9.413700 0.223809 0.028781 -0.974208 -0.000000 53.738098 -8.986800 0.223809 0.028781 -0.974208 -7.252500 54.524502 -7.615000 0.223809 0.028781 -0.974208 -7.252500 54.524502 -7.615000 0.375359 0.901424 0.215731 -6.624100 53.529800 -2.653700 0.375359 0.901424 0.215731 -8.184300 53.108700 -3.320400 0.375359 0.901424 0.215731 -8.747800 53.770199 -7.353300 0.375359 0.901424 0.215731 -9.827700 52.989700 -7.188500 0.412168 0.895237 0.169320 -9.508400 52.403099 -3.672700 0.412168 0.895237 0.169320 -15.636800 49.715099 -4.015700 0.412168 0.895237 0.169320 -14.989100 50.565300 -7.297200 0.412168 0.895237 0.169320 -0.000000 37.009800 0.550700 0.339751 -0.089043 0.936291 -4.685700 36.664101 -1.616400 0.339751 -0.089043 0.936291 -4.298500 47.001099 -0.058900 0.339751 -0.089043 0.936291 -0.000000 47.287498 1.094200 0.339751 -0.089043 0.936291 -0.000000 53.738098 -8.986800 0.139268 0.841727 -0.521633 -0.000000 55.950600 -7.250100 0.139268 0.841727 -0.521633 -2.321200 55.471001 -5.570800 0.139268 0.841727 -0.521633 -7.252500 54.524502 -7.615000 0.139268 0.841727 -0.521633 -3.773800 51.093601 -1.034300 0.772400 -0.022870 0.634725 -4.298500 47.001099 -0.058900 0.772400 -0.022870 0.634725 -6.029500 46.188801 -3.956000 0.772400 -0.022870 0.634725 -6.624100 53.529800 -2.653700 0.772400 -0.022870 0.634725 -6.624100 53.529800 -2.653700 0.299992 -0.190133 0.934802 -6.029500 46.188801 -3.956000 0.299992 -0.190133 0.934802 -7.813100 49.342701 -3.886900 0.299992 -0.190133 0.934802 -0.000000 50.880199 0.110000 0.266804 0.255185 0.929352 -0.000000 47.287498 1.094200 0.266804 0.255185 0.929352 -4.298500 47.001099 -0.058900 0.266804 0.255185 0.929352 -3.773800 51.093601 -1.034300 0.266804 0.255185 0.929352 -16.136200 50.023998 -7.546200 -0.129075 0.179950 -0.975171 -14.885000 46.974701 -7.946000 -0.129075 0.179950 -0.975171 -13.779500 47.417198 -7.715300 -0.129075 0.179950 -0.975171 -14.989100 50.565300 -7.297200 -0.129075 0.179950 -0.975171 -13.779500 47.417198 -7.715300 -0.437873 -0.882573 -0.171264 -14.977100 45.689201 -4.821000 -0.437873 -0.882573 -0.171264 -8.927200 49.128502 -4.128200 -0.437873 -0.882573 -0.171264 -8.756500 49.321098 -7.632900 -0.437873 -0.882573 -0.171264 -17.208200 49.477699 -7.512200 0.268622 0.938905 0.215175 -16.810101 49.139900 -3.928800 0.268622 0.938905 0.215175 -22.348700 46.932201 -2.822400 0.268622 0.938905 0.215175 -22.585199 48.327702 -7.594400 0.268622 0.938905 0.215175 -21.936399 43.055199 -3.733600 -0.256926 -0.186034 0.948357 -22.348700 46.932201 -2.822400 -0.256926 -0.186034 0.948357 -16.810101 49.139900 -3.928800 -0.256926 -0.186034 0.948357 -16.192200 44.960400 -4.877100 -0.256926 -0.186034 0.948357 -22.105101 44.119598 -7.074000 0.471869 -0.161034 -0.866838 -21.061199 44.183601 -7.611200 0.471869 -0.161034 -0.866838 -22.585199 48.327702 -7.594400 0.471869 -0.161034 -0.866838 -23.337700 47.268200 -6.945000 0.471869 -0.161034 -0.866838 -15.884600 46.520500 -7.855800 -0.312108 -0.901546 -0.299673 -21.061199 44.183601 -7.611200 -0.312108 -0.901546 -0.299673 -21.936399 43.055199 -3.733600 -0.312108 -0.901546 -0.299673 -16.192200 44.960400 -4.877100 -0.312108 -0.901546 -0.299673 -5.598500 31.822901 -1.404300 0.899204 0.141743 0.413933 -7.453900 29.910801 -4.780100 0.899204 0.141743 0.413933 -7.174300 32.815300 -5.167300 0.899204 0.141743 0.413933 -4.970000 33.082802 -8.871900 0.875445 0.068330 -0.478463 -7.174300 32.815300 -5.167300 0.875445 0.068330 -0.478463 -7.453900 29.910801 -4.780100 0.875445 0.068330 -0.478463 -5.595300 29.761600 -8.492500 0.875445 0.068330 -0.478463 -6.827700 20.858999 -3.044800 0.895156 -0.347215 -0.279532 -6.194700 19.576300 -3.478600 0.895156 -0.347215 -0.279532 -5.426000 21.341299 -8.132600 0.895156 -0.347215 -0.279532 -0.835600 22.853901 -8.210700 0.045309 0.086115 -0.995254 -5.317800 22.936800 -8.016200 0.045309 0.086115 -0.995254 -5.426000 21.341299 -8.132600 0.045309 0.086115 -0.995254 -0.899900 21.410400 -8.349400 0.045309 0.086115 -0.995254 -0.899900 21.410400 -8.349400 -0.986876 0.054006 0.152183 -1.853000 19.164200 -1.371600 -0.986876 0.054006 0.152183 -1.957400 20.620800 -1.211500 -0.986876 0.054006 0.152183 -6.194700 19.576300 -3.478600 0.393316 -0.294694 0.870895 -6.827700 20.858999 -3.044800 0.393316 -0.294694 0.870895 -1.957400 20.620800 -1.211500 0.393316 -0.294694 0.870895 -1.853000 19.164200 -1.371600 0.393316 -0.294694 0.870895 -5.117200 15.490400 -9.679700 -0.013076 0.210350 -0.977539 -0.134100 16.169500 -9.174700 -0.013076 0.210350 -0.977539 -0.899900 21.410400 -8.349400 -0.013076 0.210350 -0.977539 -5.426000 21.341299 -8.132600 -0.013076 0.210350 -0.977539 -0.134100 16.169500 -9.174700 -0.979250 0.051054 0.196120 -1.716700 14.450400 -2.459200 -0.979250 0.051054 0.196120 -1.853000 19.164200 -1.371600 -0.979250 0.051054 0.196120 -0.899900 21.410400 -8.349400 -0.979250 0.051054 0.196120 -1.853000 19.164200 -1.371600 0.369977 -0.140579 0.918343 -1.716700 14.450400 -2.459200 0.369977 -0.140579 0.918343 -6.069200 14.643000 -3.762300 0.369977 -0.140579 0.918343 -6.194700 19.576300 -3.478600 0.369977 -0.140579 0.918343 -6.069200 14.643000 -3.762300 0.986467 -0.011966 -0.163524 -5.117200 15.490400 -9.679700 0.986467 -0.011966 -0.163524 -5.426000 21.341299 -8.132600 0.986467 -0.011966 -0.163524 -6.194700 19.576300 -3.478600 0.986467 -0.011966 -0.163524 -7.813100 49.342701 -3.886900 0.881229 -0.394976 -0.259672 -6.029500 46.188801 -3.956000 0.881229 -0.394976 -0.259672 -5.495700 46.043098 -6.732400 0.881229 -0.394976 -0.259672 -6.775800 50.206501 -7.534500 0.881229 -0.394976 -0.259672 -8.756500 49.321098 -7.632900 -0.341557 -0.936397 -0.080618 -8.927200 49.128502 -4.128200 -0.341557 -0.936397 -0.080618 -7.813100 49.342701 -3.886900 -0.341557 -0.936397 -0.080618 -6.775800 50.206501 -7.534500 -0.341557 -0.936397 -0.080618 -5.495700 46.043098 -6.732400 0.295037 -0.218453 -0.930178 -0.000000 45.235802 -8.516300 0.295037 -0.218453 -0.930178 -0.000000 50.037800 -9.413700 0.295037 -0.218453 -0.930178 -6.775800 50.206501 -7.534500 0.295037 -0.218453 -0.930178 -3.773800 51.093601 -1.034300 0.217879 0.518058 0.827130 -1.435700 55.057400 -2.884500 0.217879 0.518058 0.827130 -0.000000 54.522099 -2.187600 0.217879 0.518058 0.827130 -0.000000 50.880199 0.110000 0.217879 0.518058 0.827130 -0.163800 60.672798 0.405300 0.878123 0.172158 0.446386 -0.226300 59.631802 0.717000 0.878123 0.172158 0.446386 -0.605400 59.453602 0.006800 0.878123 0.172158 0.446386 -0.596000 60.268700 -0.255900 0.878123 0.172158 0.446386 -0.000000 59.375900 0.272700 0.351825 0.003851 0.936058 -0.000000 58.735298 0.237300 0.351825 0.003851 0.936058 -0.793500 58.611801 -0.022400 0.351825 0.003851 0.936058 -0.605400 59.453602 0.006800 0.351825 0.003851 0.936058 -1.340700 61.343498 -1.024900 0.500896 0.173312 0.847978 -2.225300 60.301201 -1.334400 0.500896 0.173312 0.847978 -2.209500 61.230499 -1.515000 0.500896 0.173312 0.847978 -0.474100 61.294899 -0.607800 0.419394 -0.893935 0.158081 -0.785400 61.539799 -0.048800 0.419394 -0.893935 0.158081 -0.179900 61.274700 0.058500 0.419394 -0.893935 0.158081 -0.163800 60.672798 0.405300 0.879737 0.234636 0.413532 -0.596000 60.268700 -0.255900 0.879737 0.234636 0.413532 -0.474100 61.294899 -0.607800 0.879737 0.234636 0.413532 -0.179900 61.274700 0.058500 0.879737 0.234636 0.413532 -0.785400 61.539799 -0.048800 0.405349 0.400850 0.821591 -1.792100 61.563202 -0.648200 0.405349 0.400850 0.821591 -1.901400 62.898899 -1.262500 0.405349 0.400850 0.821591 -0.000000 62.775902 -0.355700 0.405349 0.400850 0.821591 -1.901400 62.898899 -1.262500 0.958885 0.139689 0.247034 -1.792100 61.563202 -0.648200 0.958885 0.139689 0.247034 -2.209500 61.230499 -1.515000 0.958885 0.139689 0.247034 -2.505800 61.413601 -3.333900 0.958885 0.139689 0.247034 -2.071800 58.080299 -1.837600 0.982605 0.010378 0.185418 -2.361600 58.652599 -3.405400 0.982605 0.010378 0.185418 -2.043500 58.694401 -1.722000 0.982605 0.010378 0.185418 -2.361600 58.652599 -3.405400 0.835615 -0.547438 -0.045374 -2.071800 58.080299 -1.837600 0.835615 -0.547438 -0.045374 -1.480400 57.287800 -3.167400 0.835615 -0.547438 -0.045374 -2.361600 58.652599 -3.405400 0.962379 -0.178153 0.205154 -2.484800 60.667999 -2.078300 0.962379 -0.178153 0.205154 -2.225300 60.301201 -1.334400 0.962379 -0.178153 0.205154 -2.043500 58.694401 -1.722000 0.962379 -0.178153 0.205154 -0.596000 60.268700 -0.255900 0.569338 0.180881 0.801958 -0.605400 59.453602 0.006800 0.569338 0.180881 0.801958 -0.793500 58.611801 -0.022400 0.569338 0.180881 0.801958 -2.225300 60.301201 -1.334400 0.569338 0.180881 0.801958 -0.793500 58.611801 -0.022400 0.424783 -0.113068 0.898207 -0.000000 58.735298 0.237300 0.424783 -0.113068 0.898207 -0.000000 57.320400 0.190300 0.424783 -0.113068 0.898207 -0.860300 57.339199 -0.345300 0.424783 -0.113068 0.898207 -2.361600 58.652599 -3.405400 0.801295 -0.555920 -0.221086 -1.480400 57.287800 -3.167400 0.801295 -0.555920 -0.221086 -1.507500 57.978802 -4.806700 0.801295 -0.555920 -0.221086 -1.480400 57.287800 -3.167400 0.605736 -0.042761 0.794516 -0.509500 56.862801 -2.081200 0.605736 -0.042761 0.794516 -0.000000 54.522099 -2.187600 0.605736 -0.042761 0.794516 -1.435700 55.057400 -2.884500 0.605736 -0.042761 0.794516 -1.435700 55.057400 -2.884500 0.962522 0.132164 0.236820 -2.321200 55.471001 -5.570800 0.962522 0.132164 0.236820 -1.507500 57.978802 -4.806700 0.962522 0.132164 0.236820 -1.480400 57.287800 -3.167400 0.962522 0.132164 0.236820 -5.117200 15.490400 -9.679700 -0.146405 -0.402228 -0.903758 -1.456400 14.610600 -8.695100 -0.146405 -0.402228 -0.903758 -0.134100 16.169500 -9.174700 -0.146405 -0.402228 -0.903758 -0.134100 16.169500 -9.174700 -0.868940 -0.488451 0.079739 -1.239800 14.644800 -6.465300 -0.868940 -0.488451 0.079739 -1.716700 14.450400 -2.459200 -0.868940 -0.488451 0.079739 -5.308800 13.910900 -3.738700 0.254739 -0.396087 0.882170 -6.069200 14.643000 -3.762300 0.254739 -0.396087 0.882170 -1.716700 14.450400 -2.459200 0.254739 -0.396087 0.882170 -1.766900 13.754900 -2.918700 0.254739 -0.396087 0.882170 -4.620900 14.945700 -8.516100 0.580484 -0.782092 -0.226651 -5.117200 15.490400 -9.679700 0.580484 -0.782092 -0.226651 -6.069200 14.643000 -3.762300 0.580484 -0.782092 -0.226651 -5.308800 13.910900 -3.738700 0.580484 -0.782092 -0.226651 -1.957400 20.620800 -1.211500 -0.981620 0.066989 0.178702 -2.189200 21.987900 -1.483700 -0.981620 0.066989 0.178702 -0.835600 22.853901 -8.210700 -0.981620 0.066989 0.178702 -0.899900 21.410400 -8.349400 -0.981620 0.066989 0.178702 -7.174300 32.815300 -5.167300 0.882089 0.156872 -0.444196 -4.970000 33.082802 -8.871900 0.882089 0.156872 -0.444196 -5.283200 35.952900 -7.814600 0.882089 0.156872 -0.444196 -6.542300 35.480598 -4.902800 0.882089 0.156872 -0.444196 -5.598500 31.822901 -1.404300 0.892181 0.170029 0.418452 -7.174300 32.815300 -5.167300 0.892181 0.170029 0.418452 -6.542300 35.480598 -4.902800 0.892181 0.170029 0.418452 -4.685700 36.664101 -1.616400 0.472747 0.127337 0.871949 -3.798500 31.552500 -0.388900 0.472747 0.127337 0.871949 -5.598500 31.822901 -1.404300 0.472747 0.127337 0.871949 -2.225300 60.301201 -1.334400 0.926529 0.086891 0.366052 -2.484800 60.667999 -2.078300 0.926529 0.086891 0.366052 -2.209500 61.230499 -1.515000 0.926529 0.086891 0.366052 -8.927200 49.128502 -4.128200 0.174303 -0.164506 0.970853 -9.508400 52.403099 -3.672700 0.174303 -0.164506 0.970853 -8.184300 53.108700 -3.320400 0.174303 -0.164506 0.970853 -7.813100 49.342701 -3.886900 0.174303 -0.164506 0.970853 -8.184300 53.108700 -3.320400 0.526523 0.826719 0.198265 -9.508400 52.403099 -3.672700 0.526523 0.826719 0.198265 -9.827700 52.989700 -7.188500 0.526523 0.826719 0.198265 -8.747800 53.770199 -7.353300 0.526523 0.826719 0.198265 -8.747800 53.770199 -7.353300 0.154881 -0.035505 -0.987295 -6.775800 50.206501 -7.534500 0.154881 -0.035505 -0.987295 -7.252500 54.524502 -7.615000 0.154881 -0.035505 -0.987295 -8.927200 49.128502 -4.128200 -0.001669 -0.169906 0.985459 -14.977100 45.689201 -4.821000 -0.001669 -0.169906 0.985459 -15.636800 49.715099 -4.015700 -0.001669 -0.169906 0.985459 -9.508400 52.403099 -3.672700 -0.001669 -0.169906 0.985459 -1.435700 55.057400 -2.884500 0.215818 0.814400 0.538680 -3.773800 51.093601 -1.034300 0.215818 0.814400 0.538680 -6.624100 53.529800 -2.653700 0.215818 0.814400 0.538680 -7.252500 54.524502 -7.615000 0.215818 0.814400 0.538680 -2.321200 55.471001 -5.570800 0.276118 0.932071 0.234526 -1.435700 55.057400 -2.884500 0.276118 0.932071 0.234526 -7.252500 54.524502 -7.615000 0.276118 0.932071 0.234526 -2.209500 61.230499 -1.515000 0.942806 0.279456 0.181716 -2.484800 60.667999 -2.078300 0.942806 0.279456 0.181716 -2.505800 61.413601 -3.333900 0.942806 0.279456 0.181716 -2.484800 60.667999 -2.078300 0.998559 -0.051788 -0.014052 -2.361600 58.652599 -3.405400 0.998559 -0.051788 -0.014052 -2.505800 61.413601 -3.333900 0.998559 -0.051788 -0.014052 -2.209500 61.230499 -1.515000 0.107977 -0.909631 0.401138 -1.792100 61.563202 -0.648200 0.107977 -0.909631 0.401138 -1.340700 61.343498 -1.024900 0.107977 -0.909631 0.401138 -3.061600 3.537800 -3.461700 -0.234488 0.898953 0.369997 -1.553600 3.059500 -4.173500 -0.234488 0.898953 0.369997 -1.568700 1.981700 -0.627100 -0.234488 0.898953 0.369997 -3.735600 1.816900 0.228400 -0.234488 0.898953 0.369997 -0.626000 0.031700 -8.336200 -0.992053 0.072189 0.103052 -1.825200 -0.024100 0.601200 -0.992053 0.072189 0.103052 -1.568700 1.981700 -0.627100 -0.992053 0.072189 0.103052 -1.553600 3.059500 -4.173500 -0.992053 0.072189 0.103052 -1.825200 -0.024100 0.601200 0.002195 -0.999985 -0.005027 -0.626000 0.031700 -8.336200 0.002195 -0.999985 -0.005027 -1.712600 0.024900 -9.195700 0.002195 -0.999985 -0.005027 -3.769300 -0.009000 1.132900 0.002195 -0.999985 -0.005027 -1.712600 0.024900 -9.195700 -0.920325 0.042849 -0.388801 -0.626000 0.031700 -8.336200 -0.920325 0.042849 -0.388801 -1.239800 14.644800 -6.465300 -0.920325 0.042849 -0.388801 -1.456400 14.610600 -8.695100 -0.920325 0.042849 -0.388801 -1.568700 1.981700 -0.627100 -0.270273 0.452545 0.849798 -1.825200 -0.024100 0.601200 -0.270273 0.452545 0.849798 -3.769300 -0.009000 1.132900 -0.270273 0.452545 0.849798 -3.735600 1.816900 0.228400 -0.270273 0.452545 0.849798 -4.089400 2.633000 -5.031300 0.957442 -0.073711 -0.279054 -5.390300 1.568200 -1.670300 0.957442 -0.073711 -0.279054 -5.176800 -0.025000 -0.598300 0.957442 -0.073711 -0.279054 -3.252600 0.001600 -8.591000 0.957442 -0.073711 -0.279054 -3.769300 -0.009000 1.132900 0.738109 0.308147 0.600201 -5.176800 -0.025000 -0.598300 0.738109 0.308147 0.600201 -5.390300 1.568200 -1.670300 0.738109 0.308147 0.600201 -3.735600 1.816900 0.228400 0.738109 0.308147 0.600201 -5.390300 1.568200 -1.670300 0.560649 0.811720 0.163660 -4.089400 2.633000 -5.031300 0.560649 0.811720 0.163660 -3.061600 3.537800 -3.461700 0.560649 0.811720 0.163660 -3.735600 1.816900 0.228400 0.560649 0.811720 0.163660 -3.061600 3.537800 -3.461700 0.452521 -0.074303 0.888653 -4.089400 2.633000 -5.031300 0.452521 -0.074303 0.888653 -5.308800 13.910900 -3.738700 0.452521 -0.074303 0.888653 -1.766900 13.754900 -2.918700 0.452521 -0.074303 0.888653 -5.117200 15.490400 -9.679700 0.118623 -0.917754 -0.379021 -4.620900 14.945700 -8.516100 0.118623 -0.917754 -0.379021 -1.456400 14.610600 -8.695100 0.118623 -0.917754 -0.379021 -1.456400 14.610600 -8.695100 -0.751462 -0.656769 -0.062923 -1.239800 14.644800 -6.465300 -0.751462 -0.656769 -0.062923 -0.134100 16.169500 -9.174700 -0.751462 -0.656769 -0.062923 -5.426000 21.341299 -8.132600 0.959663 0.028025 -0.279753 -5.317800 22.936800 -8.016200 0.959663 0.028025 -0.279753 -6.824000 22.193899 -3.251500 0.959663 0.028025 -0.279753 -6.827700 20.858999 -3.044800 0.959663 0.028025 -0.279753 -0.845100 29.891001 -9.498900 0.127296 -0.127838 -0.983592 -5.595300 29.761600 -8.492500 0.127296 -0.127838 -0.983592 -5.317800 22.936800 -8.016200 0.127296 -0.127838 -0.983592 -0.835600 22.853901 -8.210700 0.127296 -0.127838 -0.983592 -1.957400 20.620800 -1.211500 0.345482 0.135420 0.928603 -6.827700 20.858999 -3.044800 0.345482 0.135420 0.928603 -6.824000 22.193899 -3.251500 0.345482 0.135420 0.928603 -2.189200 21.987900 -1.483700 0.345482 0.135420 0.928603 -0.605400 59.453602 0.006800 0.276378 -0.886938 0.370075 -0.226300 59.631802 0.717000 0.276378 -0.886938 0.370075 -0.000000 59.375900 0.272700 0.276378 -0.886938 0.370075 -21.936399 43.055199 -3.733600 0.245050 -0.199318 0.948801 -23.265499 44.290199 -3.614200 0.245050 -0.199318 0.948801 -23.323000 46.228001 -3.425200 0.245050 -0.199318 0.948801 -22.348700 46.932201 -2.822400 0.245050 -0.199318 0.948801 -22.105101 44.119598 -7.074000 0.680722 -0.210597 -0.701617 -23.337700 47.268200 -6.945000 0.680722 -0.210597 -0.701617 -23.881300 46.267799 -5.995500 0.680722 -0.210597 -0.701617 -23.273100 44.479099 -6.170500 0.680722 -0.210597 -0.701617 -22.348700 46.932201 -2.822400 0.710630 0.673907 0.202126 -23.323000 46.228001 -3.425200 0.710630 0.673907 0.202126 -23.881300 46.267799 -5.995500 0.710630 0.673907 0.202126 -23.337700 47.268200 -6.945000 0.710630 0.673907 0.202126 -21.936399 43.055199 -3.733600 0.575702 -0.803125 -0.153486 -22.105101 44.119598 -7.074000 0.575702 -0.803125 -0.153486 -23.273100 44.479099 -6.170500 0.575702 -0.803125 -0.153486 -23.265499 44.290199 -3.614200 0.575702 -0.803125 -0.153486 -23.323000 46.228001 -3.425200 -0.234519 0.052147 0.970712 -23.265499 44.290199 -3.614200 -0.234519 0.052147 0.970712 -24.446100 44.099098 -3.039500 -0.234519 0.052147 0.970712 -24.935400 45.742901 -3.288800 -0.234519 0.052147 0.970712 -23.273100 44.479099 -6.170500 0.051663 0.047611 -0.997529 -23.881300 46.267799 -5.995500 0.051663 0.047611 -0.997529 -25.982700 45.641201 -5.974700 0.051663 0.047611 -0.997529 -25.718901 44.407902 -5.989100 0.051663 0.047611 -0.997529 -23.881300 46.267799 -5.995500 0.283035 0.956157 0.075198 -23.323000 46.228001 -3.425200 0.283035 0.956157 0.075198 -24.935400 45.742901 -3.288800 0.283035 0.956157 0.075198 -25.982700 45.641201 -5.974700 0.283035 0.956157 0.075198 -23.265499 44.290199 -3.614200 -0.050680 -0.993534 -0.101596 -23.273100 44.479099 -6.170500 -0.050680 -0.993534 -0.101596 -25.718901 44.407902 -5.989100 -0.050680 -0.993534 -0.101596 -24.446100 44.099098 -3.039500 -0.050680 -0.993534 -0.101596 -3.798500 31.552500 -0.388900 0.303080 0.047081 0.951802 -4.685700 36.664101 -1.616400 0.303080 0.047081 0.951802 -0.000000 37.009800 0.550700 0.303080 0.047081 0.951802 -0.000000 31.552500 0.128500 0.303080 0.047081 0.951802 -27.058001 43.733101 -1.471100 0.612973 -0.035197 0.789319 -26.775499 43.007000 -1.492900 0.612973 -0.035197 0.789319 -27.637899 42.321201 -1.984400 0.612973 -0.035197 0.789319 -28.100901 44.177299 -2.470000 0.612973 -0.035197 0.789319 -27.102699 45.320202 -5.735100 0.288380 -0.175341 -0.941325 -26.246300 42.901402 -5.383600 0.288380 -0.175341 -0.941325 -25.718901 44.407902 -5.989100 0.288380 -0.175341 -0.941325 -25.982700 45.641201 -5.974700 0.288380 -0.175341 -0.941325 -24.935400 45.742901 -3.288800 0.215944 0.976143 0.022647 -26.753901 45.398300 -2.858600 0.215944 0.976143 0.022647 -27.102699 45.320202 -5.735100 0.215944 0.976143 0.022647 -25.982700 45.641201 -5.974700 0.215944 0.976143 0.022647 -24.446100 44.099098 -3.039500 -0.806467 -0.440747 -0.394147 -25.718901 44.407902 -5.989100 -0.806467 -0.440747 -0.394147 -26.246300 42.901402 -5.383600 -0.806467 -0.440747 -0.394147 -28.380600 42.330502 -3.056600 0.840529 -0.044209 0.539960 -28.697901 44.238201 -3.477500 0.840529 -0.044209 0.539960 -28.100901 44.177299 -2.470000 0.840529 -0.044209 0.539960 -27.637899 42.321201 -1.984400 0.840529 -0.044209 0.539960 -28.380600 42.330502 -3.056600 0.979149 -0.175223 -0.102788 -28.292801 42.543098 -4.446800 0.979149 -0.175223 -0.102788 -28.543800 44.178001 -4.651400 0.979149 -0.175223 -0.102788 -28.697901 44.238201 -3.477500 0.979149 -0.175223 -0.102788 -26.753901 45.398300 -2.858600 0.560189 0.737837 0.376544 -28.100901 44.177299 -2.470000 0.560189 0.737837 0.376544 -28.697901 44.238201 -3.477500 0.560189 0.737837 0.376544 -24.935400 45.742901 -3.288800 -0.484106 0.321222 0.813915 -24.446100 44.099098 -3.039500 -0.484106 0.321222 0.813915 -25.587200 43.557701 -2.038700 -0.484106 0.321222 0.813915 -26.117701 44.487900 -2.198700 -0.484106 0.321222 0.813915 -24.446100 44.099098 -3.039500 -0.765721 -0.642695 -0.024780 -26.246300 42.901402 -5.383600 -0.765721 -0.642695 -0.024780 -25.491899 42.827301 -2.370100 -0.765721 -0.642695 -0.024780 -25.587200 43.557701 -2.038700 -0.765721 -0.642695 -0.024780 -26.753901 45.398300 -2.858600 -0.068715 0.616533 0.784324 -24.935400 45.742901 -3.288800 -0.068715 0.616533 0.784324 -26.117701 44.487900 -2.198700 -0.068715 0.616533 0.784324 -0.000000 31.552500 0.128500 0.069913 -0.031462 0.997057 -0.000000 24.132099 -0.356700 0.069913 -0.031462 0.997057 -3.463700 23.872801 -0.356700 0.069913 -0.031462 0.997057 -3.798500 31.552500 -0.388900 0.069913 -0.031462 0.997057 -2.225300 60.301201 -1.334400 0.789816 -0.226827 0.569860 -0.793500 58.611801 -0.022400 0.789816 -0.226827 0.569860 -2.043500 58.694401 -1.722000 0.789816 -0.226827 0.569860 -0.793500 58.611801 -0.022400 0.800106 -0.097243 0.591924 -0.860300 57.339199 -0.345300 0.800106 -0.097243 0.591924 -2.071800 58.080299 -1.837600 0.800106 -0.097243 0.591924 -2.043500 58.694401 -1.722000 0.800106 -0.097243 0.591924 -2.071800 58.080299 -1.837600 0.594038 -0.791272 0.144939 -0.860300 57.339199 -0.345300 0.594038 -0.791272 0.144939 -0.509500 56.862801 -2.081200 0.594038 -0.791272 0.144939 -1.480400 57.287800 -3.167400 0.594038 -0.791272 0.144939 -0.179900 61.274700 0.058500 0.090663 0.188705 0.977840 -0.785400 61.539799 -0.048800 0.090663 0.188705 0.977840 -0.000000 61.912998 -0.048000 0.090663 0.188705 0.977840 -15.884600 46.520500 -7.855800 0.098387 0.080586 -0.991880 -14.885000 46.974701 -7.946000 0.098387 0.080586 -0.991880 -16.136200 50.023998 -7.546200 0.098387 0.080586 -0.991880 -17.208200 49.477699 -7.512200 0.098387 0.080586 -0.991880 -15.636800 49.715099 -4.015700 0.436830 0.889212 0.135946 -16.810101 49.139900 -3.928800 0.436830 0.889212 0.135946 -17.208200 49.477699 -7.512200 0.436830 0.889212 0.135946 -16.136200 50.023998 -7.546200 0.436830 0.889212 0.135946 -16.192200 44.960400 -4.877100 -0.435886 -0.826304 -0.356686 -14.977100 45.689201 -4.821000 -0.435886 -0.826304 -0.356686 -14.885000 46.974701 -7.946000 -0.435886 -0.826304 -0.356686 -15.884600 46.520500 -7.855800 -0.435886 -0.826304 -0.356686 -16.810101 49.139900 -3.928800 -0.116417 -0.190205 0.974818 -15.636800 49.715099 -4.015700 -0.116417 -0.190205 0.974818 -14.977100 45.689201 -4.821000 -0.116417 -0.190205 0.974818 -16.192200 44.960400 -4.877100 -0.116417 -0.190205 0.974818 -13.779500 47.417198 -7.715300 0.030432 0.115440 -0.992848 -8.756500 49.321098 -7.632900 0.030432 0.115440 -0.992848 -9.827700 52.989700 -7.188500 0.030432 0.115440 -0.992848 -14.989100 50.565300 -7.297200 0.030432 0.115440 -0.992848 -15.636800 49.715099 -4.015700 0.447311 0.883265 0.140554 -16.136200 50.023998 -7.546200 0.447311 0.883265 0.140554 -14.989100 50.565300 -7.297200 0.447311 0.883265 0.140554 -13.779500 47.417198 -7.715300 -0.409629 -0.847844 -0.336696 -14.885000 46.974701 -7.946000 -0.409629 -0.847844 -0.336696 -14.977100 45.689201 -4.821000 -0.409629 -0.847844 -0.336696 -1.239800 14.644800 -6.465300 -0.983473 -0.143727 0.110102 -1.766900 13.754900 -2.918700 -0.983473 -0.143727 0.110102 -1.716700 14.450400 -2.459200 -0.983473 -0.143727 0.110102 -26.117701 44.487900 -2.198700 -0.374471 0.258120 0.890587 -25.587200 43.557701 -2.038700 -0.374471 0.258120 0.890587 -26.775499 43.007000 -1.492900 -0.374471 0.258120 0.890587 -27.058001 43.733101 -1.471100 -0.374471 0.258120 0.890587 -25.587200 43.557701 -2.038700 -0.386633 -0.610879 0.690899 -25.491899 42.827301 -2.370100 -0.386633 -0.610879 0.690899 -27.637899 42.321201 -1.984400 -0.386633 -0.610879 0.690899 -26.775499 43.007000 -1.492900 -0.386633 -0.610879 0.690899 -26.117701 44.487900 -2.198700 0.202601 0.798645 0.566673 -27.058001 43.733101 -1.471100 0.202601 0.798645 0.566673 -28.100901 44.177299 -2.470000 0.202601 0.798645 0.566673 -8.184300 53.108700 -3.320400 0.347207 -0.172872 0.921717 -6.624100 53.529800 -2.653700 0.347207 -0.172872 0.921717 -7.813100 49.342701 -3.886900 0.347207 -0.172872 0.921717 -8.747800 53.770199 -7.353300 0.055764 0.062731 -0.996471 -9.827700 52.989700 -7.188500 0.055764 0.062731 -0.996471 -8.756500 49.321098 -7.632900 0.055764 0.062731 -0.996471 -6.775800 50.206501 -7.534500 0.055764 0.062731 -0.996471 -28.543800 44.178001 -4.651400 0.562493 0.826801 -0.001192 -27.102699 45.320202 -5.735100 0.562493 0.826801 -0.001192 -26.753901 45.398300 -2.858600 0.562493 0.826801 -0.001192 -28.697901 44.238201 -3.477500 0.562493 0.826801 -0.001192 -26.246300 42.901402 -5.383600 -0.106461 -0.983873 -0.143736 -28.292801 42.543098 -4.446800 -0.106461 -0.983873 -0.143736 -28.380600 42.330502 -3.056600 -0.106461 -0.983873 -0.143736 -28.100901 44.177299 -2.470000 0.192584 0.484112 0.853550 -26.753901 45.398300 -2.858600 0.192584 0.484112 0.853550 -26.117701 44.487900 -2.198700 0.192584 0.484112 0.853550 -1.712600 0.024900 -9.195700 -0.013475 -0.999909 -0.000374 -3.252600 0.001600 -8.591000 -0.013475 -0.999909 -0.000374 -5.176800 -0.025000 -0.598300 -0.013475 -0.999909 -0.000374 -3.769300 -0.009000 1.132900 -0.013475 -0.999909 -0.000374 -0.000000 61.912998 -0.048000 0.158526 0.331625 0.929997 -0.785400 61.539799 -0.048800 0.158526 0.331625 0.929997 -0.000000 62.775902 -0.355700 0.158526 0.331625 0.929997 -0.340300 31.400700 -9.928000 -0.943868 -0.327610 -0.042246 -0.845100 29.891001 -9.498900 -0.943868 -0.327610 -0.042246 -0.425600 30.069099 -1.507500 -0.943868 -0.327610 -0.042246 -0.509500 56.862801 -2.081200 0.000000 -0.045410 0.998968 -0.509500 56.862801 -2.081200 0.098448 -0.971038 0.217700 -0.860300 57.339199 -0.345300 0.098448 -0.971038 0.217700 -0.000000 57.320400 0.190300 0.098448 -0.971038 0.217700 -0.000000 56.862801 -2.081200 0.098448 -0.971038 0.217700 -5.598500 31.822901 -1.404300 0.881264 0.021588 0.472131 -6.824000 22.193899 -3.251500 0.881264 0.021588 0.472131 -7.453900 29.910801 -4.780100 0.881264 0.021588 0.472131 -6.824000 22.193899 -3.251500 0.921284 -0.108958 -0.373315 -5.317800 22.936800 -8.016200 0.921284 -0.108958 -0.373315 -5.595300 29.761600 -8.492500 0.921284 -0.108958 -0.373315 -7.453900 29.910801 -4.780100 0.921284 -0.108958 -0.373315 -3.798500 31.552500 -0.388900 0.401815 -0.146587 0.903912 -2.189200 21.987900 -1.483700 0.401815 -0.146587 0.903912 -6.824000 22.193899 -3.251500 0.401815 -0.146587 0.903912 -5.598500 31.822901 -1.404300 0.401815 -0.146587 0.903912 -0.340300 31.400700 -9.928000 0.230509 -0.107925 -0.967067 -4.970000 33.082802 -8.871900 0.230509 -0.107925 -0.967067 -5.595300 29.761600 -8.492500 0.230509 -0.107925 -0.967067 -0.845100 29.891001 -9.498900 0.230509 -0.107925 -0.967067 -0.835600 22.853901 -8.210700 -0.992236 -0.110106 0.057826 -2.189200 21.987900 -1.483700 -0.992236 -0.110106 0.057826 -0.425600 30.069099 -1.507500 -0.992236 -0.110106 0.057826 -0.845100 29.891001 -9.498900 -0.992236 -0.110106 0.057826 -2.162800 35.743500 -9.599900 0.324673 0.084802 -0.942017 -5.283200 35.952900 -7.814600 0.324673 0.084802 -0.942017 -4.970000 33.082802 -8.871900 0.324673 0.084802 -0.942017 -0.340300 31.400700 -9.928000 0.324673 0.084802 -0.942017 -5.283200 35.952900 -7.814600 0.889642 0.311183 -0.334218 -5.919200 37.619099 -4.570300 0.889642 0.311183 -0.334218 -6.542300 35.480598 -4.902800 0.889642 0.311183 -0.334218 -5.919200 37.619099 -4.570300 0.882631 0.186784 0.431364 -4.685700 36.664101 -1.616400 0.882631 0.186784 0.431364 -5.598500 31.822901 -1.404300 0.882631 0.186784 0.431364 -6.542300 35.480598 -4.902800 0.882631 0.186784 0.431364 -0.474100 61.294899 -0.607800 0.490764 0.255871 0.832875 -0.596000 60.268700 -0.255900 0.490764 0.255871 0.832875 -2.225300 60.301201 -1.334400 0.490764 0.255871 0.832875 -1.340700 61.343498 -1.024900 0.490764 0.255871 0.832875 -1.340700 61.343498 -1.024900 0.199083 -0.932669 0.300824 -1.792100 61.563202 -0.648200 0.199083 -0.932669 0.300824 -0.785400 61.539799 -0.048800 0.199083 -0.932669 0.300824 -0.474100 61.294899 -0.607800 0.199083 -0.932669 0.300824 -0.000000 45.235802 -8.516300 0.205813 0.023108 -0.978318 -5.495700 46.043098 -6.732400 0.205813 0.023108 -0.978318 -2.827600 38.171799 -8.088300 0.205813 0.023108 -0.978318 -0.000000 38.221600 -8.073300 0.205813 0.023108 -0.978318 -0.425600 30.069099 -1.507500 -0.290133 -0.060504 0.955072 -2.189200 21.987900 -1.483700 -0.290133 -0.060504 0.955072 -3.798500 31.552500 -0.388900 -0.290133 -0.060504 0.955072 -0.000000 31.547001 -9.939100 -0.348901 -0.925923 -0.144686 -0.340300 31.400700 -9.928000 -0.348901 -0.925923 -0.144686 -0.425600 30.069099 -1.507500 -0.348901 -0.925923 -0.144686 -0.000000 30.215401 -1.522000 -0.348901 -0.925923 -0.144686 -21.061199 44.183601 -7.611200 0.028361 0.039319 -0.998824 -15.884600 46.520500 -7.855800 0.028361 0.039319 -0.998824 -17.208200 49.477699 -7.512200 0.028361 0.039319 -0.998824 -22.585199 48.327702 -7.594400 0.028361 0.039319 -0.998824 -22.348700 46.932201 -2.822400 0.723103 0.652497 0.226650 -23.337700 47.268200 -6.945000 0.723103 0.652497 0.226650 -22.585199 48.327702 -7.594400 0.723103 0.652497 0.226650 -21.061199 44.183601 -7.611200 0.095048 -0.949863 -0.297868 -22.105101 44.119598 -7.074000 0.095048 -0.949863 -0.297868 -21.936399 43.055199 -3.733600 0.095048 -0.949863 -0.297868 -0.340300 31.400700 -9.928000 0.010374 0.075249 -0.997111 -0.000000 31.547001 -9.939100 0.010374 0.075249 -0.997111 -0.000000 35.795200 -9.599900 0.010374 0.075249 -0.997111 -2.162800 35.743500 -9.599900 0.010374 0.075249 -0.997111 -5.919200 37.619099 -4.570300 0.561685 0.544798 -0.622660 -5.283200 35.952900 -7.814600 0.561685 0.544798 -0.622660 -2.162800 35.743500 -9.599900 0.561685 0.544798 -0.622660 -2.827600 38.171799 -8.088300 0.561685 0.544798 -0.622660 -28.543800 44.178001 -4.651400 0.410462 -0.233070 -0.881589 -28.292801 42.543098 -4.446800 0.410462 -0.233070 -0.881589 -26.246300 42.901402 -5.383600 0.410462 -0.233070 -0.881589 -27.102699 45.320202 -5.735100 0.410462 -0.233070 -0.881589 -25.491899 42.827301 -2.370100 -0.201709 -0.968181 -0.148119 -28.380600 42.330502 -3.056600 -0.201709 -0.968181 -0.148119 -27.637899 42.321201 -1.984400 -0.201709 -0.968181 -0.148119 -26.246300 42.901402 -5.383600 -0.185319 -0.980147 -0.070494 -28.380600 42.330502 -3.056600 -0.185319 -0.980147 -0.070494 -25.491899 42.827301 -2.370100 -0.185319 -0.980147 -0.070494 -2.162800 35.743500 -9.599900 0.008224 0.529675 -0.848161 -0.000000 35.795200 -9.599900 0.008224 0.529675 -0.848161 -0.000000 38.221600 -8.073300 0.008224 0.529675 -0.848161 -2.827600 38.171799 -8.088300 0.008224 0.529675 -0.848161 -0.706900 62.538601 -0.289700 0.498102 0.211804 0.840853 -1.838200 62.255798 -0.802600 0.498102 0.211804 0.840853 -1.901400 63.532299 -1.247600 0.498102 0.211804 0.840853 -0.672300 63.485901 -0.421800 0.498102 0.211804 0.840853 -1.901400 63.532299 -1.247600 0.915374 0.111541 0.386845 -1.838200 62.255798 -0.802600 0.915374 0.111541 0.386845 -3.194200 60.597198 -3.460400 0.915374 0.111541 0.386845 -2.758700 63.532299 -3.348800 0.915374 0.111541 0.386845 -2.758700 63.532299 -3.348800 0.984906 0.142377 0.098436 -3.194200 60.597198 -3.460400 0.984906 0.142377 0.098436 -3.446000 60.597198 -5.980300 0.984906 0.142377 0.098436 -3.010600 63.532299 -5.868700 0.984906 0.142377 0.098436 -3.194200 60.597198 -3.460400 0.917633 0.222238 0.329485 -1.838200 62.255798 -0.802600 0.917633 0.222238 0.329485 -2.336800 60.597198 -1.072500 0.917633 0.222238 0.329485 -2.130500 53.628601 -1.359200 0.842435 0.033555 0.537753 -4.088800 54.879799 -3.460400 0.842435 0.033555 0.537753 -3.194200 60.597198 -3.460400 0.842435 0.033555 0.537753 -2.336800 60.597198 -1.072500 0.842435 0.033555 0.537753 -4.088800 54.879799 -3.460400 0.982155 0.156435 0.104398 -4.340700 55.234299 -6.210400 0.982155 0.156435 0.104398 -3.446000 60.597198 -5.980300 0.982155 0.156435 0.104398 -3.194200 60.597198 -3.460400 0.982155 0.156435 0.104398 -3.010600 63.532299 -5.868700 0.839145 0.204241 -0.504105 -3.446000 60.597198 -5.980300 0.839145 0.204241 -0.504105 -2.517200 60.597198 -7.879200 0.839145 0.204241 -0.504105 -1.932100 63.532299 -7.311200 0.839145 0.204241 -0.504105 -3.446000 60.597198 -5.980300 0.847590 0.127945 -0.514996 -4.340700 55.234299 -6.210400 0.847590 0.127945 -0.514996 -2.990300 54.496300 -8.246000 0.847590 0.127945 -0.514996 -2.517200 60.597198 -7.879200 0.847590 0.127945 -0.514996 -1.932100 63.532299 -7.311200 0.365116 0.222173 -0.904063 -2.517200 60.597198 -7.879200 0.365116 0.222173 -0.904063 -0.000000 60.597198 -8.812800 0.365116 0.222173 -0.904063 -0.000000 63.532299 -8.174500 0.365116 0.222173 -0.904063 -2.990300 54.496300 -8.246000 0.255106 0.035267 -0.966270 -0.000000 54.050800 -8.782700 0.255106 0.035267 -0.966270 -0.000000 60.597198 -8.812800 0.255106 0.035267 -0.966270 -2.517200 60.597198 -7.879200 0.255106 0.035267 -0.966270 -0.672300 63.485901 -0.421800 0.422112 0.618267 0.662999 -1.901400 63.532299 -1.247600 0.422112 0.618267 0.662999 -1.171400 65.057899 -2.205500 0.422112 0.618267 0.662999 -1.901400 63.532299 -1.247600 0.756752 0.608663 0.238446 -2.758700 63.532299 -3.348800 0.756752 0.608663 0.238446 -1.795600 65.057899 -4.806100 0.756752 0.608663 0.238446 -1.171400 65.057899 -2.205500 0.756752 0.608663 0.238446 -2.758700 63.532299 -3.348800 0.806293 0.585999 0.080601 -3.010600 63.532299 -5.868700 0.806293 0.585999 0.080601 -1.795600 65.057899 -4.806100 0.806293 0.585999 0.080601 -3.010600 63.532299 -5.868700 0.468822 0.765524 -0.440657 -1.932100 63.532299 -7.311200 0.468822 0.765524 -0.440657 -0.000000 65.057899 -6.421400 0.468822 0.765524 -0.440657 -1.795600 65.057899 -4.806100 0.468822 0.765524 -0.440657 -1.932100 63.532299 -7.311200 0.281463 0.723860 -0.629925 -0.000000 63.532299 -8.174500 0.281463 0.723860 -0.629925 -0.000000 65.057899 -6.421400 0.281463 0.723860 -0.629925 -1.171400 65.057899 -2.205500 0.296421 0.952404 0.071148 -1.795600 65.057899 -4.806100 0.296421 0.952404 0.071148 -0.000000 65.560898 -4.058400 0.296421 0.952404 0.071148 -1.795600 65.057899 -4.806100 0.184093 0.961370 -0.204641 -0.000000 65.057899 -6.421400 0.184093 0.961370 -0.204641 -0.000000 65.560898 -4.058400 0.184093 0.961370 -0.204641 -0.672300 63.485901 -0.421800 0.000000 0.750225 0.661183 -1.171400 65.057899 -2.205500 0.000000 0.750225 0.661183 --1.171400 65.057899 -2.205500 0.000000 0.750225 0.661183 --0.672300 63.485901 -0.421800 0.000000 0.750225 0.661183 -0.706900 62.538601 -0.289700 0.204667 0.142518 0.968401 -0.672300 63.485901 -0.421800 0.204667 0.142518 0.968401 -0.000000 62.538601 -0.140300 0.204667 0.142518 0.968401 -0.672300 63.485901 -0.421800 -0.000000 0.284850 0.958572 --0.672300 63.485901 -0.421800 -0.000000 0.284850 0.958572 -0.000000 62.538601 -0.140300 -0.000000 0.284850 0.958572 -2.130500 53.628601 -1.359200 -0.899990 0.017690 0.435552 -2.336800 60.597198 -1.072500 -0.899990 0.017690 0.435552 -1.393700 60.597198 -3.164700 -0.899990 0.017690 0.435552 -1.187300 53.628601 -3.164700 -0.899990 0.017690 0.435552 --0.706900 62.538601 -0.289700 -0.498102 0.211804 0.840853 --0.672300 63.485901 -0.421800 -0.498102 0.211804 0.840853 --1.901400 63.532299 -1.247600 -0.498102 0.211804 0.840853 --1.838200 62.255798 -0.802600 -0.498102 0.211804 0.840853 --1.901400 63.532299 -1.247600 -0.915374 0.111541 0.386845 --2.758700 63.532299 -3.348800 -0.915374 0.111541 0.386845 --3.194200 60.597198 -3.460400 -0.915374 0.111541 0.386845 --1.838200 62.255798 -0.802600 -0.915374 0.111541 0.386845 --2.758700 63.532299 -3.348800 -0.984906 0.142377 0.098436 --3.010600 63.532299 -5.868700 -0.984906 0.142377 0.098436 --3.446000 60.597198 -5.980300 -0.984906 0.142377 0.098436 --3.194200 60.597198 -3.460400 -0.984906 0.142377 0.098436 --3.194200 60.597198 -3.460400 -0.917633 0.222238 0.329485 --2.336800 60.597198 -1.072500 -0.917633 0.222238 0.329485 --1.838200 62.255798 -0.802600 -0.917633 0.222238 0.329485 --2.130500 53.628601 -1.359200 -0.842435 0.033555 0.537753 --2.336800 60.597198 -1.072500 -0.842435 0.033555 0.537753 --3.194200 60.597198 -3.460400 -0.842435 0.033555 0.537753 --4.088800 54.879799 -3.460400 -0.842435 0.033555 0.537753 --4.088800 54.879799 -3.460400 -0.982155 0.156435 0.104398 --3.194200 60.597198 -3.460400 -0.982155 0.156435 0.104398 --3.446000 60.597198 -5.980300 -0.982155 0.156435 0.104398 --4.340700 55.234299 -6.210400 -0.982155 0.156435 0.104398 --3.010600 63.532299 -5.868700 -0.839145 0.204241 -0.504105 --1.932100 63.532299 -7.311200 -0.839145 0.204241 -0.504105 --2.517200 60.597198 -7.879200 -0.839145 0.204241 -0.504105 --3.446000 60.597198 -5.980300 -0.839145 0.204241 -0.504105 --3.446000 60.597198 -5.980300 -0.847590 0.127945 -0.514996 --2.517200 60.597198 -7.879200 -0.847590 0.127945 -0.514996 --2.990300 54.496300 -8.246000 -0.847590 0.127945 -0.514996 --4.340700 55.234299 -6.210400 -0.847590 0.127945 -0.514996 --1.932100 63.532299 -7.311200 -0.365116 0.222173 -0.904063 -0.000000 63.532299 -8.174500 -0.365116 0.222173 -0.904063 -0.000000 60.597198 -8.812800 -0.365116 0.222173 -0.904063 --2.517200 60.597198 -7.879200 -0.365116 0.222173 -0.904063 --2.990300 54.496300 -8.246000 -0.255106 0.035267 -0.966270 --2.517200 60.597198 -7.879200 -0.255106 0.035267 -0.966270 -0.000000 60.597198 -8.812800 -0.255106 0.035267 -0.966270 -0.000000 54.050800 -8.782700 -0.255106 0.035267 -0.966270 --0.672300 63.485901 -0.421800 -0.422112 0.618267 0.662999 --1.171400 65.057899 -2.205500 -0.422112 0.618267 0.662999 --1.901400 63.532299 -1.247600 -0.422112 0.618267 0.662999 --1.901400 63.532299 -1.247600 -0.756752 0.608663 0.238446 --1.171400 65.057899 -2.205500 -0.756752 0.608663 0.238446 --1.795600 65.057899 -4.806100 -0.756752 0.608663 0.238446 --2.758700 63.532299 -3.348800 -0.756752 0.608663 0.238446 --2.758700 63.532299 -3.348800 -0.806293 0.585999 0.080601 --1.795600 65.057899 -4.806100 -0.806293 0.585999 0.080601 --3.010600 63.532299 -5.868700 -0.806293 0.585999 0.080601 --3.010600 63.532299 -5.868700 -0.468822 0.765524 -0.440657 --1.795600 65.057899 -4.806100 -0.468822 0.765524 -0.440657 -0.000000 65.057899 -6.421400 -0.468822 0.765524 -0.440657 --1.932100 63.532299 -7.311200 -0.468822 0.765524 -0.440657 --1.932100 63.532299 -7.311200 -0.281463 0.723860 -0.629925 -0.000000 65.057899 -6.421400 -0.281463 0.723860 -0.629925 -0.000000 63.532299 -8.174500 -0.281463 0.723860 -0.629925 --1.171400 65.057899 -2.205500 -0.296421 0.952404 0.071148 -0.000000 65.560898 -4.058400 -0.296421 0.952404 0.071148 --1.795600 65.057899 -4.806100 -0.296421 0.952404 0.071148 --1.795600 65.057899 -4.806100 -0.184093 0.961370 -0.204641 -0.000000 65.560898 -4.058400 -0.184093 0.961370 -0.204641 -0.000000 65.057899 -6.421400 -0.184093 0.961370 -0.204641 --1.171400 65.057899 -2.205500 0.000000 0.965072 0.261984 -1.171400 65.057899 -2.205500 0.000000 0.965072 0.261984 -0.000000 65.560898 -4.058400 0.000000 0.965072 0.261984 --0.706900 62.538601 -0.289700 -0.204667 0.142518 0.968401 -0.000000 62.538601 -0.140300 -0.204667 0.142518 0.968401 --0.672300 63.485901 -0.421800 -0.204667 0.142518 0.968401 --2.130500 53.628601 -1.359200 0.899990 0.017690 0.435552 --1.187300 53.628601 -3.164700 0.899990 0.017690 0.435552 --1.393700 60.597198 -3.164700 0.899990 0.017690 0.435552 --2.336800 60.597198 -1.072500 0.899990 0.017690 0.435552 -8.704300 24.905701 -6.036500 0.233777 0.158187 -0.959336 -7.984800 25.127701 -6.177400 0.233777 0.158187 -0.959336 -7.649900 27.558001 -5.856100 0.233777 0.158187 -0.959336 -8.503900 27.435900 -5.670300 0.233777 0.158187 -0.959336 -6.463600 36.223400 -3.704900 0.910800 0.108730 0.398273 -5.778000 35.994701 -1.773100 0.910800 0.108730 0.398273 -7.451900 27.210300 -3.504400 0.910800 0.108730 0.398273 -8.503900 27.435900 -5.670300 0.910800 0.108730 0.398273 -5.115000 35.782600 -2.051700 -0.272059 -0.232411 0.933793 -6.597900 27.332300 -3.690200 -0.272059 -0.232411 0.933793 -7.451900 27.210300 -3.504400 -0.272059 -0.232411 0.933793 -5.778000 35.994701 -1.773100 -0.272059 -0.232411 0.933793 -5.743400 36.019600 -3.995900 0.266707 0.266447 -0.926215 -6.463600 36.223400 -3.704900 0.266707 0.266447 -0.926215 -8.503900 27.435900 -5.670300 0.266707 0.266447 -0.926215 -7.649900 27.558001 -5.856100 0.266707 0.266447 -0.926215 -7.451900 27.210300 -3.504400 -0.285900 -0.782712 0.552832 -6.597900 27.332300 -3.690200 -0.285900 -0.782712 0.552832 -7.984800 25.127701 -6.177400 -0.285900 -0.782712 0.552832 -8.704300 24.905701 -6.036500 -0.285900 -0.782712 0.552832 -7.451900 27.210300 -3.504400 0.899158 0.007889 0.437552 -8.704300 24.905701 -6.036500 0.899158 0.007889 0.437552 -8.503900 27.435900 -5.670300 0.899158 0.007889 0.437552 -6.463600 36.223400 -3.704900 -0.293676 0.955783 0.015277 -5.743400 36.019600 -3.995900 -0.293676 0.955783 0.015277 -5.115000 35.782600 -2.051700 -0.293676 0.955783 0.015277 -5.778000 35.994701 -1.773100 -0.293676 0.955783 0.015277 -4.513000 55.007702 -5.909800 -0.189279 -0.709198 -0.679126 -4.291100 55.098900 -5.871800 -0.189279 -0.709198 -0.679126 -4.207800 55.799599 -6.651700 -0.189279 -0.709198 -0.679126 -4.871900 55.799599 -6.765400 -0.189279 -0.709198 -0.679126 -2.904000 62.455601 -5.700500 0.959060 0.270852 0.082723 -2.764700 62.455601 -4.128400 0.959060 0.270852 0.082723 -4.736600 55.799599 -5.153900 0.959060 0.270852 0.082723 -4.871900 55.799599 -6.765400 0.959060 0.270852 0.082723 -2.764700 62.455601 -4.128400 0.167860 -0.101350 0.980587 -4.072400 55.799599 -5.040200 0.167860 -0.101350 0.980587 -4.736600 55.799599 -5.153900 0.167860 -0.101350 0.980587 -2.904000 62.455601 -5.700500 -0.167781 0.107182 -0.979980 -4.871900 55.799599 -6.765400 -0.167781 0.107182 -0.979980 -4.207800 55.799599 -6.651700 -0.167781 0.107182 -0.979980 -4.736600 55.799599 -5.153900 0.042232 -0.727963 0.684314 -4.072400 55.799599 -5.040200 0.042232 -0.727963 0.684314 -4.291100 55.098900 -5.871800 0.042232 -0.727963 0.684314 -4.513000 55.007702 -5.909800 0.042232 -0.727963 0.684314 -4.736600 55.799599 -5.153900 0.937220 -0.339745 0.078688 -4.513000 55.007702 -5.909800 0.937220 -0.339745 0.078688 -4.871900 55.799599 -6.765400 0.937220 -0.339745 0.078688 -4 0 1 2 3 -4 4 5 6 7 -3 8 9 10 -4 11 12 13 14 -4 15 16 17 18 -4 19 20 21 22 -4 23 24 25 26 -4 27 28 29 30 -4 31 32 33 34 -4 35 36 37 38 -4 39 40 41 42 -4 43 44 45 46 -3 47 48 49 -4 50 51 52 53 -4 54 55 56 57 -4 58 59 60 61 -4 62 63 64 65 -4 66 67 68 69 -4 70 71 72 73 -4 74 75 76 77 -3 78 79 80 -4 81 82 83 84 -3 85 86 87 -4 88 89 90 91 -3 92 93 94 -4 95 96 97 98 -4 99 100 101 102 -4 103 104 105 106 -4 107 108 109 110 -4 111 112 113 114 -4 115 116 117 118 -4 119 120 121 122 -4 123 124 125 126 -4 127 128 129 130 -4 131 132 133 134 -4 135 136 137 138 -3 139 140 141 -3 142 143 144 -4 145 146 147 148 -4 149 150 151 152 -4 153 154 155 156 -3 157 158 159 -3 160 161 162 -4 163 164 165 166 -4 167 168 169 170 -4 171 172 173 174 -3 175 176 177 -4 178 179 180 181 -4 182 183 184 185 -3 186 187 188 -3 189 190 191 -4 192 193 194 195 -4 196 197 198 199 -4 200 201 202 203 -4 204 205 206 207 -3 208 209 210 -3 211 212 213 -3 214 215 216 -4 217 218 219 220 -4 221 222 223 224 -3 225 226 227 -4 228 229 230 231 -4 232 233 234 235 -3 236 237 238 -3 239 240 241 -3 242 243 244 -3 245 246 247 -4 248 249 250 251 -4 252 253 254 255 -4 256 257 258 259 -4 260 261 262 263 -4 264 265 266 267 -4 268 269 270 271 -4 272 273 274 275 -4 276 277 278 279 -4 280 281 282 283 -3 284 285 286 -3 287 288 289 -4 290 291 292 293 -4 294 295 296 297 -4 298 299 300 301 -3 302 303 304 -4 305 306 307 308 -4 309 310 311 312 -4 313 314 315 316 -4 317 318 319 320 -4 321 322 323 324 -4 325 326 327 328 -4 329 330 331 332 -4 333 334 335 336 -4 337 338 339 340 -4 341 342 343 344 -4 345 346 347 348 -4 349 350 351 352 -3 353 354 355 -4 356 357 358 359 -4 360 361 362 363 -3 364 365 366 -4 367 368 369 370 -4 371 372 373 374 -3 375 376 377 -4 378 379 380 381 -3 382 383 384 -4 385 386 387 388 -4 389 390 391 392 -3 393 394 395 -4 396 397 398 399 -4 400 401 402 403 -4 404 405 406 407 -4 408 409 410 411 -4 412 413 414 415 -3 416 417 418 -3 419 420 421 -3 422 423 424 -4 425 426 427 428 -4 429 430 431 432 -3 433 434 435 -3 436 437 438 -4 439 440 441 442 -4 443 444 445 446 -3 447 448 449 -3 450 451 452 -4 453 454 455 456 -3 457 458 459 -3 460 461 462 -3 463 464 465 -4 466 467 468 469 -3 470 471 472 -4 473 474 475 476 -4 477 478 479 480 -4 481 482 483 484 -4 485 486 487 488 -4 489 490 491 492 -3 493 494 495 -4 496 497 498 499 -4 500 501 502 503 -4 504 505 506 507 -4 508 509 510 511 -3 512 513 514 -4 515 516 517 518 -4 519 520 521 522 -3 523 524 525 -3 526 527 528 -3 529 530 531 -4 532 533 534 535 -4 536 537 538 539 -4 540 541 542 543 -4 544 545 546 547 -3 548 549 550 -3 551 552 553 -4 554 555 556 557 -3 558 559 560 -4 561 562 563 564 -4 565 566 567 568 -4 569 570 571 572 -3 573 574 575 -4 576 577 578 579 -4 580 581 582 583 -4 584 585 586 587 -4 588 589 590 591 -4 592 593 594 595 -4 596 597 598 599 -4 600 601 602 603 -4 604 605 606 607 -4 608 609 610 611 -3 612 613 614 -4 615 616 617 618 -4 619 620 621 622 -4 623 624 625 626 -4 627 628 629 630 -4 631 632 633 634 -4 635 636 637 638 -4 639 640 641 642 -3 643 644 645 -4 646 647 648 649 -3 650 651 652 -4 653 654 655 656 -3 657 658 659 -4 660 661 662 663 -4 664 665 666 667 -4 668 669 670 671 -4 672 673 674 675 -4 676 677 678 679 -4 680 681 682 683 -4 684 685 686 687 -4 688 689 690 691 -4 692 693 694 695 -4 696 697 698 699 -4 700 701 702 703 -3 704 705 706 -3 707 708 709 -4 710 711 712 713 -4 714 715 716 717 -4 718 719 720 721 -3 722 723 724 -3 725 726 727 -4 728 729 730 731 -4 732 733 734 735 -4 736 737 738 739 -3 740 741 742 -4 743 744 745 746 -4 747 748 749 750 -3 751 752 753 -3 754 755 756 -4 757 758 759 760 -4 761 762 763 764 -4 765 766 767 768 -4 769 770 771 772 -3 773 774 775 -3 776 777 778 -3 779 780 781 -4 782 783 784 785 -4 786 787 788 789 -3 790 791 792 -4 793 794 795 796 -4 797 798 799 800 -3 801 802 803 -3 804 805 806 -3 807 808 809 -3 810 811 812 -4 813 814 815 816 -4 817 818 819 820 -4 821 822 823 824 -4 825 826 827 828 -4 829 830 831 832 -4 833 834 835 836 -4 837 838 839 840 -4 841 842 843 844 -4 845 846 847 848 -3 849 850 851 -3 852 853 854 -4 855 856 857 858 -4 859 860 861 862 -4 863 864 865 866 -3 867 868 869 -4 870 871 872 873 -4 874 875 876 877 -4 878 879 880 881 -4 882 883 884 885 -4 886 887 888 889 -4 890 891 892 893 -4 894 895 896 897 -4 898 899 900 901 -4 902 903 904 905 -4 906 907 908 909 -4 910 911 912 913 -4 914 915 916 917 -3 918 919 920 -4 921 922 923 924 -4 925 926 927 928 -3 929 930 931 -4 932 933 934 935 -4 936 937 938 939 -3 940 941 942 -4 943 944 945 946 -3 947 948 949 -4 950 951 952 953 -4 954 955 956 957 -3 958 959 960 -4 961 962 963 964 -4 965 966 967 968 -4 969 970 971 972 -4 973 974 975 976 -4 977 978 979 980 -3 981 982 983 -3 984 985 986 -3 987 988 989 -4 990 991 992 993 -4 994 995 996 997 -3 998 999 1000 -3 1001 1002 1003 -4 1004 1005 1006 1007 -4 1008 1009 1010 1011 -3 1012 1013 1014 -3 1015 1016 1017 -4 1018 1019 1020 1021 -3 1022 1023 1024 -3 1025 1026 1027 -3 463 1028 464 -4 1029 1030 1031 1032 -3 1033 1034 1035 -4 1036 1037 1038 1039 -4 1040 1041 1042 1043 -4 1044 1045 1046 1047 -4 1048 1049 1050 1051 -4 1052 1053 1054 1055 -3 1056 1057 1058 -4 1059 1060 1061 1062 -4 1063 1064 1065 1066 -4 1067 1068 1069 1070 -4 1071 1072 1073 1074 -3 1075 1076 1077 -4 1078 1079 1080 1081 -4 1082 1083 1084 1085 -3 1086 1087 1088 -3 1089 1090 1091 -4 1092 1093 1094 1095 -4 1096 1097 1098 1099 -4 1100 1101 1102 1103 -3 1104 1105 1106 -3 1107 1108 1109 -4 1110 1111 1112 1113 -4 1114 1115 1116 1117 -4 1118 1119 1120 1121 -4 1122 1123 1124 1125 -3 1126 1127 1128 -4 1129 1130 1131 1132 -4 1133 1134 1135 1136 -4 1137 1138 1139 1140 -4 1141 1142 1143 1144 -4 1145 1146 1147 1148 -4 1149 1150 1151 1152 -3 1153 1154 1155 -4 1156 1157 1158 1159 -3 1160 1161 1162 -4 1163 1164 1165 1166 -3 1167 1168 1169 -3 1170 1171 1172 -3 1173 1174 1175 -4 1176 1177 1178 1179 -3 1180 1181 1182 -3 1183 1184 1185 -4 1186 1187 1188 1189 -4 1190 1191 1192 1193 -4 1194 1195 1196 1197 -4 1198 1199 1200 1201 -3 1202 1203 1204 -4 1205 1206 1207 1208 -4 1209 1210 1211 1212 -4 1213 1214 1215 1216 -4 1217 1218 1219 1220 -4 1221 1222 1223 1224 -4 1225 1226 1227 1228 -3 1229 1230 1231 -4 1232 1233 1234 1235 -3 1236 1237 1238 -4 1239 1240 1241 1242 -3 1243 1244 1245 -3 1246 1247 1248 -3 1249 1250 1251 -3 1252 1253 1254 -3 1255 1256 1257 -4 1258 1259 1260 1261 -4 1262 1263 1264 1265 -4 1266 1267 1268 1269 -4 1270 1271 1272 1273 -4 1274 1275 1276 1277 -4 1278 1279 1280 1281 -3 1282 1283 1284 -4 1285 1286 1287 1288 -4 1289 1290 1291 1292 -4 1293 1294 1295 1296 -3 1297 1298 1299 -3 1300 1301 1302 -4 1303 1304 1305 1306 -3 1307 1308 1309 diff --git a/src/tests/evas/meshes/ply/Normal_UVs_Colors.ply b/src/tests/evas/meshes/ply/Normal_UVs_Colors.ply deleted file mode 100644 index 797151afb1..0000000000 --- a/src/tests/evas/meshes/ply/Normal_UVs_Colors.ply +++ /dev/null @@ -1,1684 +0,0 @@ -ply -format ascii 1.0 -comment Created by Blender 2.69 (sub 0) - www.blender.org, source file: '' -element vertex 1310 -property float x -property float y -property float z -property float nx -property float ny -property float nz -property float s -property float t -property uchar red -property uchar green -property uchar blue -element face 356 -property list uchar uint vertex_indices -end_header --4.649800 14.945700 -8.785600 -0.021734 0.023193 -0.999495 0.094400 0.185800 0 253 27 --2.020300 14.610600 -8.278800 -0.021734 0.023193 -0.999495 0.060000 0.185800 0 253 27 --1.712600 0.024900 -9.195700 -0.021734 0.023193 -0.999495 0.089900 0.023200 254 68 73 --3.252600 0.001600 -8.591000 -0.021734 0.023193 -0.999495 0.107400 0.025300 254 68 73 --4.649800 14.945700 -8.785600 -0.983809 -0.091724 -0.153967 0.094400 0.185800 254 68 73 --3.252600 0.001600 -8.591000 -0.983809 -0.091724 -0.153967 0.107400 0.025300 254 88 92 --4.089400 2.633000 -5.031300 -0.983809 -0.091724 -0.153967 0.145000 0.057700 254 68 73 --5.308800 13.910900 -3.738700 -0.983809 -0.091724 -0.153967 0.154100 0.185800 254 68 73 --1.553600 3.059500 -4.173500 0.398905 -0.098999 0.911633 0.181500 0.058600 18 0 253 --1.766900 13.754900 -2.918700 0.398905 -0.098999 0.911633 0.193300 0.185800 0 254 27 --3.061600 3.537800 -3.461700 0.398905 -0.098999 0.911633 0.164000 0.067400 18 0 252 --1.553600 3.059500 -4.173500 0.977159 -0.002648 0.212493 0.181500 0.058600 18 0 253 --0.626000 0.031700 -8.336200 0.977159 -0.002648 0.212493 0.220100 0.017000 19 0 253 --0.971400 14.644800 -6.706400 0.977159 -0.002648 0.212493 0.225200 0.185800 27 229 30 --1.766900 13.754900 -2.918700 0.977159 -0.002648 0.212493 0.193300 0.185800 0 253 27 --5.495700 46.043098 -6.732400 -0.860977 -0.085411 -0.501422 0.139900 0.788400 254 254 254 --2.827600 38.171799 -8.088300 -0.860977 -0.085411 -0.501422 0.114500 0.661600 254 254 254 --5.919200 37.619099 -4.570300 -0.860977 -0.085411 -0.501422 0.183200 0.661600 254 254 254 --6.029500 46.188801 -3.956000 -0.860977 -0.085411 -0.501422 0.183300 0.792100 254 254 254 --4.685700 36.664101 -1.616400 -0.917535 -0.032092 0.396359 0.239100 0.661600 13 240 28 --4.298500 47.001099 -0.058900 -0.917535 -0.032092 0.396359 0.249300 0.802400 5 247 27 --6.029500 46.188801 -3.956000 -0.917535 -0.032092 0.396359 0.183300 0.792100 0 253 27 --5.919200 37.619099 -4.570300 -0.917535 -0.032092 0.396359 0.183200 0.661600 0 253 27 --6.775800 50.206501 -7.534500 -0.223809 0.028781 -0.974208 0.134100 0.852600 0 254 27 --7.252500 54.524502 -7.615000 -0.223809 0.028781 -0.974208 0.126100 0.913200 0 254 27 -0.000000 53.738098 -8.986800 -0.223809 0.028781 -0.974208 0.028100 0.877800 0 254 27 -0.000000 50.037800 -9.413700 -0.223809 0.028781 -0.974208 0.041800 0.827300 0 254 27 --7.252500 54.524502 -7.615000 -0.375359 0.901424 0.215731 0.812300 0.981700 0 253 27 --8.747800 53.770199 -7.353300 -0.375359 0.901424 0.215731 0.807700 0.944900 0 253 27 --8.184300 53.108700 -3.320400 -0.375359 0.901424 0.215731 0.746000 0.944900 0 253 27 --6.624100 53.529800 -2.653700 -0.375359 0.901424 0.215731 0.746000 0.986600 0 253 27 --9.827700 52.989700 -7.188500 -0.412168 0.895237 0.169320 0.805500 0.922700 0 253 27 --14.989100 50.565300 -7.297200 -0.412168 0.895237 0.169320 0.805300 0.834400 0 253 27 --15.636800 49.715099 -4.015700 -0.412168 0.895237 0.169320 0.746000 0.809400 0 253 27 --9.508400 52.403099 -3.672700 -0.412168 0.895237 0.169320 0.746000 0.922700 0 253 27 -0.000000 37.009800 0.550700 -0.339751 -0.089043 0.936291 0.310700 0.661600 172 124 55 -0.000000 47.287498 1.094200 -0.339751 -0.089043 0.936291 0.310700 0.805700 0 252 27 --4.298500 47.001099 -0.058900 -0.339751 -0.089043 0.936291 0.249300 0.802400 0 253 27 --4.685700 36.664101 -1.616400 -0.339751 -0.089043 0.936291 0.239100 0.661600 13 226 40 -0.000000 53.738098 -8.986800 -0.139268 0.841727 -0.521633 0.028100 0.877800 0 254 27 --7.252500 54.524502 -7.615000 -0.139268 0.841727 -0.521633 0.126100 0.913200 0 254 27 --2.321200 55.471001 -5.570800 -0.139268 0.841727 -0.521633 0.053700 0.941000 0 254 27 -0.000000 55.950600 -7.250100 -0.139268 0.841727 -0.521633 0.022400 0.916300 0 254 27 --6.624100 53.529800 -2.653700 -0.510018 -0.190129 0.838888 0.210200 0.900400 0 253 27 --7.813100 49.342701 -3.886900 -0.510018 -0.190129 0.838888 0.181000 0.844200 0 253 27 --6.029500 46.188801 -3.956000 -0.510018 -0.190129 0.838888 0.183300 0.792100 0 253 27 --3.773800 51.093601 -1.034300 -0.510018 -0.190129 0.838888 0.256600 0.864400 0 253 27 --6.029500 46.188801 -3.956000 -0.909885 0.202901 0.361857 0.183300 0.792100 0 253 27 --4.298500 47.001099 -0.058900 -0.909885 0.202901 0.361857 0.249300 0.802400 5 247 27 --3.773800 51.093601 -1.034300 -0.909885 0.202901 0.361857 0.256600 0.864400 0 253 27 -0.000000 50.880199 0.110000 -0.266804 0.255185 0.929352 0.310700 0.860500 0 253 27 --3.773800 51.093601 -1.034300 -0.266804 0.255185 0.929352 0.256600 0.864400 0 253 27 --4.298500 47.001099 -0.058900 -0.266804 0.255185 0.929352 0.249300 0.802400 0 253 27 -0.000000 47.287498 1.094200 -0.266804 0.255185 0.929352 0.310700 0.805700 0 252 27 --16.136200 50.023998 -7.546200 0.129075 0.179950 -0.975171 0.808600 0.809400 0 249 27 --14.989100 50.565300 -7.297200 0.129075 0.179950 -0.975171 0.805300 0.834400 0 252 27 --13.779500 47.417198 -7.715300 0.129075 0.179950 -0.975171 0.879500 0.834400 0 253 27 --14.885000 46.974701 -7.946000 0.129075 0.179950 -0.975171 0.879500 0.809400 0 251 27 --13.779500 47.417198 -7.715300 0.437873 -0.882573 -0.171264 0.626900 0.829400 0 253 27 --8.756500 49.321098 -7.632900 0.437873 -0.882573 -0.171264 0.626900 0.922700 0 253 27 --8.927200 49.128502 -4.128200 0.437873 -0.882573 -0.171264 0.688900 0.922700 0 253 27 --14.977100 45.689201 -4.821000 0.437873 -0.882573 -0.171264 0.680000 0.809400 0 248 31 --17.208200 49.477699 -7.512200 -0.268622 0.938905 0.215175 0.810800 0.788400 0 253 27 --22.585199 48.327702 -7.594400 -0.268622 0.938905 0.215175 0.812700 0.705100 0 253 27 --22.348700 46.932201 -2.822400 -0.268622 0.938905 0.215175 0.746000 0.680200 72 195 37 --16.810101 49.139900 -3.928800 -0.268622 0.938905 0.215175 0.746000 0.788400 0 253 27 --21.936399 43.055199 -3.733600 0.256926 -0.186034 0.948357 0.691800 0.680200 24 182 75 --16.192200 44.960400 -4.877100 0.256926 -0.186034 0.948357 0.677700 0.788400 0 236 42 --16.810101 49.139900 -3.928800 0.256926 -0.186034 0.948357 0.746000 0.788400 0 253 27 --22.348700 46.932201 -2.822400 0.256926 -0.186034 0.948357 0.746000 0.680200 72 195 37 --22.105101 44.119598 -7.074000 -0.471869 -0.161034 -0.866838 0.862200 0.680200 254 254 254 --23.337700 47.268200 -6.945000 -0.471869 -0.161034 -0.866838 0.809900 0.680200 254 254 254 --22.585199 48.327702 -7.594400 -0.471869 -0.161034 -0.866838 0.812700 0.705100 254 254 254 --21.061199 44.183601 -7.611200 -0.471869 -0.161034 -0.866838 0.879500 0.705100 254 254 254 --15.884600 46.520500 -7.855800 0.312108 -0.901546 -0.299673 0.626900 0.788400 0 250 27 --16.192200 44.960400 -4.877100 0.312108 -0.901546 -0.299673 0.677700 0.788400 0 253 27 --21.936399 43.055199 -3.733600 0.312108 -0.901546 -0.299673 0.691800 0.680200 0 253 27 --21.061199 44.183601 -7.611200 0.312108 -0.901546 -0.299673 0.626900 0.699700 52 208 31 --5.598500 31.822901 -1.405400 -0.899226 0.141575 0.413943 0.185400 0.436500 133 152 48 --7.174300 32.815300 -5.168000 -0.899226 0.141575 0.413943 0.136400 0.440500 0 253 27 --7.453900 29.910801 -4.782000 -0.899226 0.141575 0.413943 0.143900 0.408700 0 253 27 --4.970000 33.082802 -8.871300 -0.875321 0.068314 -0.478692 0.086900 0.436600 0 253 27 --5.595300 29.761600 -8.491100 -0.875321 0.068314 -0.478692 0.097300 0.399700 0 253 27 --7.453900 29.910801 -4.782000 -0.875321 0.068314 -0.478692 0.143900 0.408700 0 253 27 --7.174300 32.815300 -5.168000 -0.875321 0.068314 -0.478692 0.136400 0.440500 0 253 27 --6.827700 20.858999 -3.051400 -0.895608 -0.345701 -0.279959 0.166500 0.297500 254 254 254 --5.426000 21.341299 -8.131100 -0.895608 -0.345701 -0.279959 0.106600 0.297500 254 254 254 --6.194700 19.576300 -3.492500 -0.895608 -0.345701 -0.279959 0.163400 0.285600 254 254 254 --0.835600 22.853901 -8.203000 -0.044062 0.086408 -0.995285 0.053300 0.313700 0 253 27 --0.899900 21.410400 -8.342700 -0.044062 0.086408 -0.995285 0.054900 0.297500 0 253 27 --5.426000 21.341299 -8.131100 -0.044062 0.086408 -0.995285 0.106600 0.297500 0 253 27 --5.317800 22.936800 -8.014600 -0.044062 0.086408 -0.995285 0.105500 0.313700 0 253 27 --0.899900 21.410400 -8.342700 0.986890 0.053202 0.152371 0.307200 0.297500 219 57 99 --1.957400 20.620800 -1.217700 0.986890 0.053202 0.152371 0.224300 0.297500 254 68 73 --1.853000 19.164200 -1.385300 0.986890 0.053202 0.152371 0.221600 0.281000 254 68 73 --6.194700 19.576300 -3.492500 -0.393090 -0.299033 0.869517 0.163400 0.285600 114 254 128 --1.853000 19.164200 -1.385300 -0.393090 -0.299033 0.869517 0.221600 0.281000 242 254 242 --1.957400 20.620800 -1.217700 -0.393090 -0.299033 0.869517 0.224300 0.297500 242 254 242 --6.827700 20.858999 -3.051400 -0.393090 -0.299033 0.869517 0.166500 0.297500 168 254 177 --5.259600 15.490400 -9.599400 0.139442 0.106302 -0.984508 0.090700 0.228600 0 253 27 --5.426000 21.341299 -8.131100 0.139442 0.106302 -0.984508 0.106600 0.297500 0 253 27 --0.899900 21.410400 -8.342700 0.139442 0.106302 -0.984508 0.054900 0.297500 0 253 27 --0.294400 16.169500 -7.962700 0.139442 0.106302 -0.984508 0.039600 0.241800 0 253 27 --0.294400 16.169500 -7.962700 0.977002 0.117101 0.178197 0.282300 0.223700 0 253 27 --0.899900 21.410400 -8.342700 0.977002 0.117101 0.178197 0.307200 0.297500 1 216 59 --1.853000 19.164200 -1.385300 0.977002 0.117101 0.178197 0.221600 0.281000 0 253 27 --1.221800 14.450400 -2.004100 0.977002 0.117101 0.178197 0.220300 0.236900 0 253 27 --1.853000 19.164200 -1.385300 -0.395956 -0.119778 0.910424 0.221600 0.281000 254 254 254 --6.194700 19.576300 -3.492500 -0.395956 -0.119778 0.910424 0.163400 0.285600 254 254 254 --6.498700 14.643000 -4.000600 -0.395956 -0.119778 0.910424 0.151700 0.232900 91 254 108 --1.221800 14.450400 -2.004100 -0.395956 -0.119778 0.910424 0.220300 0.236900 0 254 27 --6.498700 14.643000 -4.000600 -0.982418 0.045709 -0.181012 0.151700 0.232900 254 254 254 --6.194700 19.576300 -3.492500 -0.982418 0.045709 -0.181012 0.163400 0.285600 254 254 254 --5.426000 21.341299 -8.131100 -0.982418 0.045709 -0.181012 0.106600 0.297500 254 254 254 --5.259600 15.490400 -9.599400 -0.982418 0.045709 -0.181012 0.090700 0.228600 254 254 254 --7.813100 49.342701 -3.886900 -0.881229 -0.394976 -0.259672 0.181000 0.844200 254 68 73 --6.775800 50.206501 -7.534500 -0.881229 -0.394976 -0.259672 0.134100 0.852600 254 68 73 --5.495700 46.043098 -6.732400 -0.881229 -0.394976 -0.259672 0.139900 0.788400 254 68 73 --6.029500 46.188801 -3.956000 -0.881229 -0.394976 -0.259672 0.183300 0.792100 254 68 73 --8.756500 49.321098 -7.632900 0.341557 -0.936397 -0.080618 0.626900 0.922700 0 254 27 --6.775800 50.206501 -7.534500 0.341557 -0.936397 -0.080618 0.626900 0.944900 0 254 27 --7.813100 49.342701 -3.886900 0.341557 -0.936397 -0.080618 0.686800 0.944900 0 254 27 --8.927200 49.128502 -4.128200 0.341557 -0.936397 -0.080618 0.688900 0.922700 0 254 27 --5.495700 46.043098 -6.732400 -0.295037 -0.218453 -0.930178 0.139900 0.788400 0 254 27 --6.775800 50.206501 -7.534500 -0.295037 -0.218453 -0.930178 0.134100 0.852600 0 254 27 -0.000000 50.037800 -9.413700 -0.295037 -0.218453 -0.930178 0.041800 0.827300 0 254 27 -0.000000 45.235802 -8.516300 -0.295037 -0.218453 -0.930178 0.061400 0.762800 0 254 27 --3.773800 51.093601 -1.034300 -0.217879 0.518058 0.827130 0.256600 0.864400 0 253 27 -0.000000 50.880199 0.110000 -0.217879 0.518058 0.827130 0.310700 0.860500 0 253 27 -0.000000 54.522099 -2.187600 -0.217879 0.518058 0.827130 0.310700 0.919600 0 253 27 --1.435700 55.057400 -2.884500 -0.217879 0.518058 0.827130 0.285800 0.931400 0 253 27 --0.163800 60.672798 0.405300 -0.878123 0.172158 0.446386 0.529100 0.200900 0 254 27 --0.596000 60.268700 -0.255900 -0.878123 0.172158 0.446386 0.502600 0.185300 0 254 27 --0.605400 59.453602 0.006800 -0.878123 0.172158 0.446386 0.508800 0.156900 0 254 27 --0.226300 59.631802 0.717000 -0.878123 0.172158 0.446386 0.529800 0.167300 0 254 27 -0.000000 59.375900 0.272700 -0.351825 0.003851 0.936058 0.533800 0.153800 0 254 27 --0.605400 59.453602 0.006800 -0.351825 0.003851 0.936058 0.508800 0.156900 0 254 27 --0.793500 58.611801 -0.022400 -0.351825 0.003851 0.936058 0.506200 0.129800 0 254 27 -0.000000 58.735298 0.237300 -0.351825 0.003851 0.936058 0.533800 0.134400 0 253 27 --1.340700 61.343498 -1.024900 -0.500896 0.173312 0.847978 0.467800 0.231800 254 254 254 --2.209500 61.230499 -1.515000 -0.500896 0.173312 0.847978 0.430900 0.227000 254 254 254 --2.225300 60.301201 -1.334400 -0.500896 0.173312 0.847978 0.434400 0.187400 254 254 254 --0.474100 61.294899 -0.607800 -0.419394 -0.893935 0.158081 0.499900 0.227200 254 254 254 --0.179900 61.274700 0.058500 -0.419394 -0.893935 0.158081 0.525600 0.223900 254 254 254 --0.785400 61.539799 -0.048800 -0.419394 -0.893935 0.158081 0.505500 0.247600 254 254 254 --0.163800 60.672798 0.405300 -0.879737 0.234636 0.413532 0.529100 0.200900 0 254 27 --0.179900 61.274700 0.058500 -0.879737 0.234636 0.413532 0.525600 0.223900 0 254 27 --0.474100 61.294899 -0.607800 -0.879737 0.234636 0.413532 0.499900 0.227200 0 254 27 --0.596000 60.268700 -0.255900 -0.879737 0.234636 0.413532 0.502600 0.185300 0 254 27 --0.785400 61.539799 -0.048800 -0.405349 0.400850 0.821591 0.505500 0.247600 0 254 27 -0.000000 62.775902 -0.355700 -0.405349 0.400850 0.821591 0.533900 0.286800 0 254 27 --1.901400 62.898899 -1.262500 -0.405349 0.400850 0.821591 0.451600 0.287500 0 254 27 --1.792100 61.563202 -0.648200 -0.405349 0.400850 0.821591 0.464300 0.250800 0 254 27 --1.901400 62.898899 -1.262500 -0.958885 0.139689 0.247034 0.451600 0.287500 254 254 254 --2.505800 61.413601 -3.333900 -0.958885 0.139689 0.247034 0.367200 0.240300 254 254 254 --2.209500 61.230499 -1.515000 -0.958885 0.139689 0.247034 0.430900 0.227000 254 254 254 --1.792100 61.563202 -0.648200 -0.958885 0.139689 0.247034 0.464300 0.250800 254 254 254 --2.071800 58.080299 -1.837600 -0.982605 0.010378 0.185418 0.435700 0.090000 254 254 254 --2.043500 58.694401 -1.722000 -0.982605 0.010378 0.185418 0.434700 0.119000 254 254 254 --2.361600 58.652599 -3.405400 -0.982605 0.010378 0.185418 0.376100 0.111600 254 254 254 --2.361600 58.652599 -3.405400 -0.835615 -0.547438 -0.045374 0.376100 0.111600 254 254 254 --1.480400 57.287800 -3.167400 -0.835615 -0.547438 -0.045374 0.388000 0.054100 254 254 254 --2.071800 58.080299 -1.837600 -0.835615 -0.547438 -0.045374 0.435700 0.090000 254 254 254 --2.361600 58.652599 -3.405400 -0.962379 -0.178153 0.205154 0.376100 0.111600 254 254 254 --2.043500 58.694401 -1.722000 -0.962379 -0.178153 0.205154 0.434700 0.119000 254 254 254 --2.225300 60.301201 -1.334400 -0.962379 -0.178153 0.205154 0.434400 0.187400 254 254 254 --2.484800 60.667999 -2.078300 -0.962379 -0.178153 0.205154 0.409600 0.193000 254 254 254 --0.596000 60.268700 -0.255900 -0.569338 0.180881 0.801958 0.502600 0.185300 0 254 27 --2.225300 60.301201 -1.334400 -0.569338 0.180881 0.801958 0.434400 0.187400 0 254 27 --0.793500 58.611801 -0.022400 -0.569338 0.180881 0.801958 0.506200 0.129800 0 254 27 --0.605400 59.453602 0.006800 -0.569338 0.180881 0.801958 0.508800 0.156900 0 254 27 --0.793500 58.611801 -0.022400 -0.424783 -0.113068 0.898207 0.506200 0.129800 0 254 27 --0.860300 57.339199 -0.345300 -0.424783 -0.113068 0.898207 0.507000 0.087800 0 253 27 -0.000000 57.320400 0.190300 -0.424783 -0.113068 0.898207 0.533800 0.095300 0 253 27 -0.000000 58.735298 0.237300 -0.424783 -0.113068 0.898207 0.533800 0.134400 0 253 27 --2.361600 58.652599 -3.405400 -0.801295 -0.555920 -0.221086 0.376100 0.111600 254 254 254 --1.507500 57.978802 -4.806700 -0.801295 -0.555920 -0.221086 0.327200 0.071700 254 254 254 --1.480400 57.287800 -3.167400 -0.801295 -0.555920 -0.221086 0.388000 0.054100 254 254 254 --1.480400 57.287800 -3.167400 -0.605736 -0.042761 0.794516 0.293600 0.962800 254 153 157 --1.435700 55.057400 -2.884500 -0.605736 -0.042761 0.794516 0.285800 0.931400 244 75 71 -0.000000 54.522099 -2.187600 -0.605736 -0.042761 0.794516 0.310700 0.919600 235 81 69 --0.509500 56.862801 -2.081200 -0.605736 -0.042761 0.794516 0.307800 0.953500 254 129 132 --1.435700 55.057400 -2.884500 -0.962522 0.132164 0.236820 0.285800 0.931400 254 68 73 --1.480400 57.287800 -3.167400 -0.962522 0.132164 0.236820 0.293600 0.962800 254 68 73 --1.507500 57.978802 -4.806700 -0.962522 0.132164 0.236820 0.269900 0.982500 254 68 73 --2.321200 55.471001 -5.570800 -0.962522 0.132164 0.236820 0.259500 0.968000 254 68 73 --5.259600 15.490400 -9.599400 0.329887 -0.177209 -0.927239 0.090700 0.228600 0 253 27 --0.294400 16.169500 -7.962700 0.329887 -0.177209 -0.927239 0.039600 0.241800 0 253 27 --2.020300 14.610600 -8.278800 0.329887 -0.177209 -0.927239 0.063600 0.221000 0 253 27 --0.294400 16.169500 -7.962700 0.923351 -0.382504 0.033356 0.282300 0.223700 157 130 53 --1.221800 14.450400 -2.004100 0.923351 -0.382504 0.033356 0.220300 0.236900 0 252 27 --0.971400 14.644800 -6.706400 0.923351 -0.382504 0.033356 0.253200 0.212300 27 229 30 --5.308800 13.910900 -3.738700 -0.281184 -0.501171 0.818391 0.168700 0.220700 23 254 48 --1.766900 13.754900 -2.918700 -0.281184 -0.501171 0.818391 0.216900 0.223600 0 254 27 --1.221800 14.450400 -2.004100 -0.281184 -0.501171 0.818391 0.220300 0.236900 0 254 27 --6.498700 14.643000 -4.000600 -0.281184 -0.501171 0.818391 0.151700 0.232900 91 254 108 --4.649800 14.945700 -8.785600 -0.465679 -0.853476 -0.233927 0.103500 0.222700 254 68 73 --5.308800 13.910900 -3.738700 -0.465679 -0.853476 -0.233927 0.168700 0.220700 254 68 73 --6.498700 14.643000 -4.000600 -0.465679 -0.853476 -0.233927 0.151700 0.232900 254 68 73 --5.259600 15.490400 -9.599400 -0.465679 -0.853476 -0.233927 0.090700 0.228600 254 68 73 --1.957400 20.620800 -1.217700 0.981627 0.066418 0.178877 0.224300 0.297500 0 253 27 --0.899900 21.410400 -8.342700 0.981627 0.066418 0.178877 0.307200 0.297500 1 216 59 --0.835600 22.853901 -8.203000 0.981627 0.066418 0.178877 0.306600 0.313700 2 205 69 --2.189200 21.987900 -1.481800 0.981627 0.066418 0.178877 0.225500 0.313700 0 253 27 --7.174300 32.815300 -5.168000 -0.882053 0.156893 -0.444261 0.136400 0.440500 0 253 27 --6.542300 35.480598 -4.902800 -0.882053 0.156893 -0.444261 0.133600 0.471500 0 253 27 --5.283200 35.952900 -7.814600 -0.882053 0.156893 -0.444261 0.094100 0.470900 0 254 27 --4.970000 33.082802 -8.871300 -0.882053 0.156893 -0.444261 0.086900 0.436600 0 253 27 --5.598500 31.822901 -1.405400 -0.892193 0.169920 0.418473 0.185400 0.436500 133 152 48 --6.542300 35.480598 -4.902800 -0.892193 0.169920 0.418473 0.133600 0.471500 0 253 27 --7.174300 32.815300 -5.168000 -0.892193 0.169920 0.418473 0.136400 0.440500 0 253 27 --4.685700 36.664101 -1.616400 -0.474113 0.127364 0.871203 0.239100 0.661600 13 226 40 --5.598500 31.822901 -1.405400 -0.474113 0.127364 0.871203 0.231500 0.582200 133 152 48 --3.798500 31.552500 -0.386300 -0.474113 0.127364 0.871203 0.257600 0.582200 211 97 63 --2.225300 60.301201 -1.334400 -0.926529 0.086891 0.366052 0.434400 0.187400 254 254 254 --2.209500 61.230499 -1.515000 -0.926529 0.086891 0.366052 0.430900 0.227000 254 254 254 --2.484800 60.667999 -2.078300 -0.926529 0.086891 0.366052 0.409600 0.193000 254 254 254 --8.927200 49.128502 -4.128200 -0.174303 -0.164506 0.970853 0.688900 0.922700 0 253 27 --7.813100 49.342701 -3.886900 -0.174303 -0.164506 0.970853 0.686800 0.944900 0 253 27 --8.184300 53.108700 -3.320400 -0.174303 -0.164506 0.970853 0.746000 0.944900 0 253 27 --9.508400 52.403099 -3.672700 -0.174303 -0.164506 0.970853 0.746000 0.922700 0 253 27 --8.184300 53.108700 -3.320400 -0.526523 0.826719 0.198265 0.746000 0.944900 0 253 27 --8.747800 53.770199 -7.353300 -0.526523 0.826719 0.198265 0.807700 0.944900 0 253 27 --9.827700 52.989700 -7.188500 -0.526523 0.826719 0.198265 0.805500 0.922700 0 253 27 --9.508400 52.403099 -3.672700 -0.526523 0.826719 0.198265 0.746000 0.922700 0 253 27 --8.747800 53.770199 -7.353300 -0.154881 -0.035505 -0.987295 0.807700 0.944900 0 254 27 --7.252500 54.524502 -7.615000 -0.154881 -0.035505 -0.987295 0.812300 0.981700 0 254 27 --6.775800 50.206501 -7.534500 -0.154881 -0.035505 -0.987295 0.879500 0.944900 0 254 27 --8.927200 49.128502 -4.128200 0.001669 -0.169906 0.985459 0.688900 0.922700 0 253 27 --9.508400 52.403099 -3.672700 0.001669 -0.169906 0.985459 0.746000 0.922700 0 253 27 --15.636800 49.715099 -4.015700 0.001669 -0.169906 0.985459 0.746000 0.809400 0 253 27 --14.977100 45.689201 -4.821000 0.001669 -0.169906 0.985459 0.680000 0.809400 0 248 31 --6.624100 53.529800 -2.653700 -0.215818 0.814400 0.538680 0.210200 0.900400 0 253 27 --3.773800 51.093601 -1.034300 -0.215818 0.814400 0.538680 0.256600 0.864400 0 253 27 --1.435700 55.057400 -2.884500 -0.215818 0.814400 0.538680 0.285800 0.931400 0 253 27 --7.252500 54.524502 -7.615000 -0.215818 0.814400 0.538680 0.180400 0.964800 0 253 27 --2.321200 55.471001 -5.570800 -0.276118 0.932071 0.234526 0.259500 0.968000 0 253 27 --7.252500 54.524502 -7.615000 -0.276118 0.932071 0.234526 0.180400 0.964800 0 253 27 --1.435700 55.057400 -2.884500 -0.276118 0.932071 0.234526 0.285800 0.931400 0 253 27 --2.209500 61.230499 -1.515000 -0.942806 0.279456 0.181716 0.430900 0.227000 254 254 254 --2.505800 61.413601 -3.333900 -0.942806 0.279456 0.181716 0.362700 0.212700 254 254 254 --2.484800 60.667999 -2.078300 -0.942806 0.279456 0.181716 0.409600 0.193000 254 254 254 --2.484800 60.667999 -2.078300 -0.998559 -0.051788 -0.014052 0.409600 0.193000 254 254 254 --2.505800 61.413601 -3.333900 -0.998559 -0.051788 -0.014052 0.362700 0.212700 254 254 254 --2.361600 58.652599 -3.405400 -0.998559 -0.051788 -0.014052 0.376100 0.111600 254 254 254 --2.209500 61.230499 -1.515000 -0.107977 -0.909631 0.401138 0.430900 0.227000 254 254 254 --1.340700 61.343498 -1.024900 -0.107977 -0.909631 0.401138 0.467800 0.231800 254 254 254 --1.792100 61.563202 -0.648200 -0.107977 -0.909631 0.401138 0.464300 0.250800 254 254 254 --3.061600 3.537800 -3.461700 0.234488 0.898953 0.369997 0.290200 0.071700 18 0 252 --3.735600 1.816900 0.228400 0.234488 0.898953 0.369997 0.290200 0.030700 18 0 253 --1.568700 1.981700 -0.627100 0.234488 0.898953 0.369997 0.308400 0.040400 18 0 253 --1.553600 3.059500 -4.173500 0.234488 0.898953 0.369997 0.310400 0.073900 18 0 253 --0.626000 0.031700 -8.336200 0.992053 0.072189 0.103052 0.345300 0.097200 18 0 253 --1.553600 3.059500 -4.173500 0.992053 0.072189 0.103052 0.310400 0.073900 18 0 253 --1.568700 1.981700 -0.627100 0.992053 0.072189 0.103052 0.308400 0.040400 18 0 253 --1.825200 -0.024100 0.601200 0.992053 0.072189 0.103052 0.313500 0.023800 18 0 253 --1.825200 -0.024100 0.601200 -0.002195 -0.999985 -0.005027 0.748300 0.055100 18 0 253 --3.769300 -0.009000 1.132900 -0.002195 -0.999985 -0.005027 0.765800 0.040900 18 0 253 --1.712600 0.024900 -9.195700 -0.002195 -0.999985 -0.005027 0.765100 0.147100 19 0 253 --0.626000 0.031700 -8.336200 -0.002195 -0.999985 -0.005027 0.751000 0.138000 19 0 253 --1.712600 0.024900 -9.195700 0.748722 0.074200 -0.658719 0.089900 0.023200 254 68 73 --2.020300 14.610600 -8.278800 0.748722 0.074200 -0.658719 0.060000 0.185800 0 253 27 --0.971400 14.644800 -6.706400 0.748722 0.074200 -0.658719 0.025900 0.185800 0 253 27 --0.626000 0.031700 -8.336200 0.748722 0.074200 -0.658719 0.075600 0.021500 254 68 73 --1.568700 1.981700 -0.627100 0.270273 0.452545 0.849798 0.308400 0.040400 18 0 253 --3.735600 1.816900 0.228400 0.270273 0.452545 0.849798 0.290200 0.030700 18 0 253 --3.769300 -0.009000 1.132900 0.270273 0.452545 0.849798 0.289700 0.012400 18 0 253 --1.825200 -0.024100 0.601200 0.270273 0.452545 0.849798 0.313500 0.023800 19 0 253 --4.089400 2.633000 -5.031300 -0.957442 -0.073711 -0.279054 0.275500 0.071900 188 254 194 --3.252600 0.001600 -8.591000 -0.957442 -0.073711 -0.279054 0.238500 0.103000 0 254 27 --5.176800 -0.025000 -0.598300 -0.957442 -0.073711 -0.279054 0.266200 0.023600 254 254 254 --5.390300 1.568200 -1.670300 -0.957442 -0.073711 -0.279054 0.274000 0.039600 254 254 254 --3.769300 -0.009000 1.132900 -0.738109 0.308147 0.600201 0.289700 0.012400 18 0 253 --3.735600 1.816900 0.228400 -0.738109 0.308147 0.600201 0.290200 0.030700 18 0 253 --5.390300 1.568200 -1.670300 -0.738109 0.308147 0.600201 0.274000 0.039600 18 0 253 --5.176800 -0.025000 -0.598300 -0.738109 0.308147 0.600201 0.266200 0.023600 18 0 253 --5.390300 1.568200 -1.670300 -0.560649 0.811720 0.163660 0.274000 0.039600 18 0 253 --3.735600 1.816900 0.228400 -0.560649 0.811720 0.163660 0.290200 0.030700 18 0 253 --3.061600 3.537800 -3.461700 -0.560649 0.811720 0.163660 0.290200 0.071700 18 0 252 --4.089400 2.633000 -5.031300 -0.560649 0.811720 0.163660 0.275500 0.071900 18 0 252 --3.061600 3.537800 -3.461700 -0.452521 -0.074303 0.888653 0.164000 0.067400 18 0 252 --1.766900 13.754900 -2.918700 -0.452521 -0.074303 0.888653 0.193300 0.185800 0 254 27 --5.308800 13.910900 -3.738700 -0.452521 -0.074303 0.888653 0.154100 0.185800 14 254 41 --4.089400 2.633000 -5.031300 -0.452521 -0.074303 0.888653 0.145000 0.057700 18 0 252 --2.020300 14.610600 -8.278800 0.001520 -0.830500 -0.557017 0.063600 0.221000 0 253 27 --4.649800 14.945700 -8.785600 0.001520 -0.830500 -0.557017 0.103500 0.222700 0 253 27 --5.259600 15.490400 -9.599400 0.001520 -0.830500 -0.557017 0.090700 0.228600 0 253 27 --2.020300 14.610600 -8.278800 0.649568 -0.634088 -0.419515 0.063600 0.221000 0 253 27 --0.294400 16.169500 -7.962700 0.649568 -0.634088 -0.419515 0.039600 0.241800 0 253 27 --0.971400 14.644800 -6.706400 0.649568 -0.634088 -0.419515 0.028400 0.216500 0 253 27 --5.426000 21.341299 -8.131100 -0.959570 0.028386 -0.280036 0.106600 0.297500 254 254 254 --6.827700 20.858999 -3.051400 -0.959570 0.028386 -0.280036 0.166500 0.297500 254 254 254 --6.824000 22.193899 -3.254300 -0.959570 0.028386 -0.280036 0.165700 0.313700 254 254 254 --5.317800 22.936800 -8.014600 -0.959570 0.028386 -0.280036 0.105500 0.313700 254 254 254 --0.845100 29.891001 -9.491500 -0.126028 -0.127868 -0.983751 0.041700 0.395800 0 253 27 --0.835600 22.853901 -8.203000 -0.126028 -0.127868 -0.983751 0.053300 0.313700 0 253 27 --5.317800 22.936800 -8.014600 -0.126028 -0.127868 -0.983751 0.105500 0.313700 0 253 27 --5.595300 29.761600 -8.491100 -0.126028 -0.127868 -0.983751 0.097300 0.399700 0 254 27 --1.957400 20.620800 -1.217700 -0.346283 0.131313 0.928895 0.224300 0.297500 242 254 242 --2.189200 21.987900 -1.481800 -0.346283 0.131313 0.928895 0.225500 0.313700 218 254 222 --6.824000 22.193899 -3.254300 -0.346283 0.131313 0.928895 0.165700 0.313700 99 254 117 --6.827700 20.858999 -3.051400 -0.346283 0.131313 0.928895 0.166500 0.297500 166 254 175 --0.605400 59.453602 0.006800 -0.276378 -0.886938 0.370075 0.508800 0.156900 254 254 254 -0.000000 59.375900 0.272700 -0.276378 -0.886938 0.370075 0.533800 0.153800 254 254 254 --0.226300 59.631802 0.717000 -0.276378 -0.886938 0.370075 0.529800 0.167300 254 254 254 --21.936399 43.055199 -3.733600 -0.245050 -0.199318 0.948801 0.691800 0.680200 24 182 75 --22.348700 46.932201 -2.822400 -0.245050 -0.199318 0.948801 0.746000 0.680200 72 195 37 --23.323000 46.228001 -3.425200 -0.245050 -0.199318 0.948801 0.746000 0.661900 26 230 29 --23.265499 44.290199 -3.614200 -0.245050 -0.199318 0.948801 0.710900 0.661900 37 214 37 --22.105101 44.119598 -7.074000 -0.680722 -0.210597 -0.701617 0.862200 0.680200 254 254 254 --23.273100 44.479099 -6.170500 -0.680722 -0.210597 -0.701617 0.835600 0.661900 254 254 254 --23.881300 46.267799 -5.995500 -0.680722 -0.210597 -0.701617 0.800900 0.661900 254 254 254 --23.337700 47.268200 -6.945000 -0.680722 -0.210597 -0.701617 0.809900 0.680200 254 254 254 --22.348700 46.932201 -2.822400 -0.710630 0.673907 0.202126 0.746000 0.680200 72 195 37 --23.337700 47.268200 -6.945000 -0.710630 0.673907 0.202126 0.809900 0.680200 0 254 27 --23.881300 46.267799 -5.995500 -0.710630 0.673907 0.202126 0.800900 0.661900 0 253 27 --23.323000 46.228001 -3.425200 -0.710630 0.673907 0.202126 0.746000 0.661900 26 230 29 --21.936399 43.055199 -3.733600 -0.575702 -0.803125 -0.153486 0.691800 0.680200 254 68 73 --23.265499 44.290199 -3.614200 -0.575702 -0.803125 -0.153486 0.710900 0.661900 254 68 73 --23.273100 44.479099 -6.170500 -0.575702 -0.803125 -0.153486 0.665900 0.661900 254 68 73 --22.105101 44.119598 -7.074000 -0.575702 -0.803125 -0.153486 0.641700 0.680200 254 68 73 --23.323000 46.228001 -3.425200 0.234519 0.052147 0.970712 0.746000 0.661900 26 230 29 --24.935400 45.742901 -3.288800 0.234519 0.052147 0.970712 0.746000 0.630500 80 189 39 --24.446100 44.099098 -3.039500 0.234519 0.052147 0.970712 0.723200 0.630500 144 136 53 --23.265499 44.290199 -3.614200 0.234519 0.052147 0.970712 0.710900 0.661900 37 214 37 --23.273100 44.479099 -6.170500 -0.051663 0.047611 -0.997529 0.835600 0.661900 16 254 41 --25.718901 44.407902 -5.989100 -0.051663 0.047611 -0.997529 0.812100 0.630500 47 254 71 --25.982700 45.641201 -5.974700 -0.051663 0.047611 -0.997529 0.796200 0.630500 53 254 75 --23.881300 46.267799 -5.995500 -0.051663 0.047611 -0.997529 0.800900 0.661900 23 254 48 --23.881300 46.267799 -5.995500 -0.283035 0.956157 0.075198 0.800900 0.661900 0 253 27 --25.982700 45.641201 -5.974700 -0.283035 0.956157 0.075198 0.796200 0.630500 0 253 27 --24.935400 45.742901 -3.288800 -0.283035 0.956157 0.075198 0.746000 0.630500 80 189 39 --23.323000 46.228001 -3.425200 -0.283035 0.956157 0.075198 0.746000 0.661900 26 230 29 --23.265499 44.290199 -3.614200 0.050680 -0.993534 -0.101596 0.710900 0.661900 0 254 27 --24.446100 44.099098 -3.039500 0.050680 -0.993534 -0.101596 0.723200 0.630500 0 254 27 --25.718901 44.407902 -5.989100 0.050680 -0.993534 -0.101596 0.677100 0.630500 47 254 71 --23.273100 44.479099 -6.170500 0.050680 -0.993534 -0.101596 0.665900 0.661900 16 254 41 --3.798500 31.552500 -0.386300 -0.302820 0.047342 0.951871 0.257600 0.582200 211 97 63 -0.000000 31.552500 0.128500 -0.302820 0.047342 0.951871 0.310700 0.582200 203 101 62 -0.000000 37.009800 0.550700 -0.302820 0.047342 0.951871 0.310700 0.661600 172 124 55 --4.685700 36.664101 -1.616400 -0.302820 0.047342 0.951871 0.239100 0.661600 13 226 40 --27.058001 43.733101 -1.471100 -0.612973 -0.035197 0.789319 0.783900 0.527900 254 68 73 --28.100901 44.177299 -2.470000 -0.612973 -0.035197 0.789319 0.756100 0.537200 231 80 64 --27.637899 42.321201 -1.984400 -0.612973 -0.035197 0.789319 0.780200 0.502700 254 68 73 --26.775499 43.007000 -1.492900 -0.612973 -0.035197 0.789319 0.799700 0.523000 254 68 73 --27.102699 45.320202 -5.735100 -0.288380 -0.175341 -0.941325 0.706300 0.587600 75 254 93 --25.982700 45.641201 -5.974700 -0.288380 -0.175341 -0.941325 0.701400 0.609900 53 254 75 --25.718901 44.407902 -5.989100 -0.288380 -0.175341 -0.941325 0.674700 0.592000 47 254 71 --26.246300 42.901402 -5.383600 -0.288380 -0.175341 -0.941325 0.663100 0.553800 20 254 46 --24.935400 45.742901 -3.288800 -0.215944 0.976143 0.022647 0.774000 0.616500 80 254 99 --25.982700 45.641201 -5.974700 -0.215944 0.976143 0.022647 0.701400 0.609900 0 254 27 --27.102699 45.320202 -5.735100 -0.215944 0.976143 0.022647 0.706300 0.587600 0 254 27 --26.753901 45.398300 -2.858600 -0.215944 0.976143 0.022647 0.766000 0.574200 163 254 174 --24.446100 44.099098 -3.039500 0.806467 -0.440747 -0.394147 0.815000 0.599300 0 249 30 --26.246300 42.901402 -5.383600 0.806467 -0.440747 -0.394147 0.880100 0.569900 19 213 43 --25.718901 44.407902 -5.989100 0.806467 -0.440747 -0.394147 0.885900 0.607200 46 208 34 --28.380600 42.330502 -3.056600 -0.840529 -0.044209 0.539960 0.741600 0.498200 254 68 73 --27.637899 42.321201 -1.984400 -0.840529 -0.044209 0.539960 0.780200 0.502700 254 68 73 --28.100901 44.177299 -2.470000 -0.840529 -0.044209 0.539960 0.756100 0.537200 254 68 73 --28.697901 44.238201 -3.477500 -0.840529 -0.044209 0.539960 0.737900 0.538900 254 68 73 --28.380600 42.330502 -3.056600 -0.979149 -0.175223 -0.102788 0.741600 0.498200 254 254 254 --28.697901 44.238201 -3.477500 -0.979149 -0.175223 -0.102788 0.737900 0.538900 254 254 254 --28.543800 44.178001 -4.651400 -0.979149 -0.175223 -0.102788 0.718600 0.545700 254 254 254 --28.292801 42.543098 -4.446800 -0.979149 -0.175223 -0.102788 0.704200 0.514300 254 254 254 --26.753901 45.398300 -2.858600 -0.560189 0.737837 0.376544 0.766000 0.574200 163 125 53 --28.697901 44.238201 -3.477500 -0.560189 0.737837 0.376544 0.737900 0.538900 97 175 41 --28.100901 44.177299 -2.470000 -0.560189 0.737837 0.376544 0.756100 0.537200 231 80 64 --24.935400 45.742901 -3.288800 0.484106 0.321222 0.813915 0.774000 0.616500 80 189 39 --26.117701 44.487900 -2.198700 0.484106 0.321222 0.813915 0.788200 0.565100 242 74 67 --25.587200 43.557701 -2.038700 0.484106 0.321222 0.813915 0.806300 0.556900 253 67 73 --24.446100 44.099098 -3.039500 0.484106 0.321222 0.813915 0.815000 0.599300 144 136 53 --24.446100 44.099098 -3.039500 0.765721 -0.642695 -0.024780 0.815000 0.599300 0 249 30 --25.587200 43.557701 -2.038700 0.765721 -0.642695 -0.024780 0.806300 0.556900 0 252 27 --25.491899 42.827301 -2.370100 0.765721 -0.642695 -0.024780 0.813300 0.554500 0 245 34 --26.246300 42.901402 -5.383600 0.765721 -0.642695 -0.024780 0.880100 0.569900 19 213 43 --26.753901 45.398300 -2.858600 0.068715 0.616533 0.784324 0.766000 0.574200 163 125 53 --26.117701 44.487900 -2.198700 0.068715 0.616533 0.784324 0.788200 0.565100 242 74 67 --24.935400 45.742901 -3.288800 0.068715 0.616533 0.784324 0.774000 0.616500 80 189 39 -0.000000 31.552500 0.128500 -0.069551 -0.031626 0.997077 0.310700 0.582200 203 101 62 --3.798500 31.552500 -0.386300 -0.069551 -0.031626 0.997077 0.257600 0.582200 211 97 63 --3.463700 23.872801 -0.356700 -0.069551 -0.031626 0.997077 0.261000 0.472800 254 68 73 -0.000000 24.132099 -0.356700 -0.069551 -0.031626 0.997077 0.310700 0.472800 243 74 70 --2.225300 60.301201 -1.334400 -0.789816 -0.226827 0.569860 0.434400 0.187400 254 254 254 --2.043500 58.694401 -1.722000 -0.789816 -0.226827 0.569860 0.434700 0.119000 254 247 247 --0.793500 58.611801 -0.022400 -0.789816 -0.226827 0.569860 0.506200 0.129800 254 246 246 --0.793500 58.611801 -0.022400 -0.800106 -0.097243 0.591924 0.506200 0.129800 254 246 246 --2.043500 58.694401 -1.722000 -0.800106 -0.097243 0.591924 0.434700 0.119000 254 247 247 --2.071800 58.080299 -1.837600 -0.800106 -0.097243 0.591924 0.435700 0.090000 254 224 225 --0.860300 57.339199 -0.345300 -0.800106 -0.097243 0.591924 0.507000 0.087800 254 172 174 --2.071800 58.080299 -1.837600 -0.594038 -0.791272 0.144939 0.435700 0.090000 254 224 225 --1.480400 57.287800 -3.167400 -0.594038 -0.791272 0.144939 0.435700 0.022900 254 153 157 --0.509500 56.862801 -2.081200 -0.594038 -0.791272 0.144939 0.497100 0.026700 254 129 132 --0.860300 57.339199 -0.345300 -0.594038 -0.791272 0.144939 0.507000 0.087800 254 172 174 --0.179900 61.274700 0.058500 -0.090663 0.188705 0.977840 0.525600 0.223900 0 254 27 -0.000000 61.912998 -0.048000 -0.090663 0.188705 0.977840 0.533800 0.254400 0 254 27 --0.785400 61.539799 -0.048800 -0.090663 0.188705 0.977840 0.505500 0.247600 0 254 27 --15.884600 46.520500 -7.855800 -0.098387 0.080586 -0.991880 0.879500 0.788400 0 250 27 --17.208200 49.477699 -7.512200 -0.098387 0.080586 -0.991880 0.810800 0.788400 6 242 27 --16.136200 50.023998 -7.546200 -0.098387 0.080586 -0.991880 0.808600 0.809400 0 249 27 --14.885000 46.974701 -7.946000 -0.098387 0.080586 -0.991880 0.879500 0.809400 0 251 27 --15.636800 49.715099 -4.015700 -0.436830 0.889212 0.135946 0.746000 0.809400 0 253 27 --16.136200 50.023998 -7.546200 -0.436830 0.889212 0.135946 0.808600 0.809400 0 253 27 --17.208200 49.477699 -7.512200 -0.436830 0.889212 0.135946 0.810800 0.788400 0 253 27 --16.810101 49.139900 -3.928800 -0.436830 0.889212 0.135946 0.746000 0.788400 0 253 27 --16.192200 44.960400 -4.877100 0.435886 -0.826304 -0.356686 0.677700 0.788400 0 236 42 --15.884600 46.520500 -7.855800 0.435886 -0.826304 -0.356686 0.626900 0.788400 0 253 27 --14.885000 46.974701 -7.946000 0.435886 -0.826304 -0.356686 0.626900 0.809400 0 253 27 --14.977100 45.689201 -4.821000 0.435886 -0.826304 -0.356686 0.680000 0.809400 0 248 31 --16.810101 49.139900 -3.928800 0.116417 -0.190205 0.974818 0.746000 0.788400 236 81 69 --16.192200 44.960400 -4.877100 0.116417 -0.190205 0.974818 0.677700 0.788400 200 90 77 --14.977100 45.689201 -4.821000 0.116417 -0.190205 0.974818 0.680000 0.809400 174 120 62 --15.636800 49.715099 -4.015700 0.116417 -0.190205 0.974818 0.746000 0.809400 218 94 66 --13.779500 47.417198 -7.715300 -0.030432 0.115440 -0.992848 0.879500 0.834400 0 253 27 --14.989100 50.565300 -7.297200 -0.030432 0.115440 -0.992848 0.805300 0.834400 0 252 27 --9.827700 52.989700 -7.188500 -0.030432 0.115440 -0.992848 0.805500 0.922700 0 253 27 --8.756500 49.321098 -7.632900 -0.030432 0.115440 -0.992848 0.879500 0.922700 0 253 27 --15.636800 49.715099 -4.015700 -0.447311 0.883265 0.140554 0.746000 0.809400 0 253 27 --14.989100 50.565300 -7.297200 -0.447311 0.883265 0.140554 0.805300 0.834400 0 253 27 --16.136200 50.023998 -7.546200 -0.447311 0.883265 0.140554 0.808600 0.809400 0 253 27 --13.779500 47.417198 -7.715300 0.409629 -0.847844 -0.336697 0.626900 0.829400 0 253 27 --14.977100 45.689201 -4.821000 0.409629 -0.847844 -0.336697 0.680000 0.809400 0 253 27 --14.885000 46.974701 -7.946000 0.409629 -0.847844 -0.336697 0.626900 0.809400 0 251 27 --0.971400 14.644800 -6.706400 0.777065 -0.629233 0.015366 0.253200 0.212300 27 229 30 --1.221800 14.450400 -2.004100 0.777065 -0.629233 0.015366 0.220300 0.236900 0 252 27 --1.766900 13.754900 -2.918700 0.777065 -0.629233 0.015366 0.216900 0.223600 0 253 27 --26.117701 44.487900 -2.198700 0.374471 0.258120 0.890587 0.788200 0.565100 242 74 67 --27.058001 43.733101 -1.471100 0.374471 0.258120 0.890587 0.783900 0.527900 254 68 73 --26.775499 43.007000 -1.492900 0.374471 0.258120 0.890587 0.799700 0.523000 254 68 73 --25.587200 43.557701 -2.038700 0.374471 0.258120 0.890587 0.806300 0.556900 253 67 73 --25.587200 43.557701 -2.038700 0.386633 -0.610879 0.690899 0.806300 0.556900 0 252 27 --26.775499 43.007000 -1.492900 0.386633 -0.610879 0.690899 0.799700 0.523000 0 253 27 --27.637899 42.321201 -1.984400 0.386633 -0.610879 0.690899 0.816200 0.507300 0 253 27 --25.491899 42.827301 -2.370100 0.386633 -0.610879 0.690899 0.813300 0.554500 0 245 34 --26.117701 44.487900 -2.198700 -0.202601 0.798645 0.566673 0.788200 0.565100 242 74 67 --28.100901 44.177299 -2.470000 -0.202601 0.798645 0.566673 0.756100 0.537200 231 80 64 --27.058001 43.733101 -1.471100 -0.202601 0.798645 0.566673 0.783900 0.527900 254 68 73 --8.184300 53.108700 -3.320400 -0.347207 -0.172872 0.921717 0.746000 0.944900 0 253 27 --7.813100 49.342701 -3.886900 -0.347207 -0.172872 0.921717 0.686800 0.944900 0 253 27 --6.624100 53.529800 -2.653700 -0.347207 -0.172872 0.921717 0.746000 0.986600 0 253 27 --8.747800 53.770199 -7.353300 -0.055764 0.062731 -0.996471 0.807700 0.944900 0 254 27 --6.775800 50.206501 -7.534500 -0.055764 0.062731 -0.996471 0.879500 0.944900 0 254 27 --8.756500 49.321098 -7.632900 -0.055764 0.062731 -0.996471 0.879500 0.922700 0 254 27 --9.827700 52.989700 -7.188500 -0.055764 0.062731 -0.996471 0.805500 0.922700 0 254 27 --28.543800 44.178001 -4.651400 -0.562493 0.826801 -0.001192 0.718600 0.545700 0 254 27 --28.697901 44.238201 -3.477500 -0.562493 0.826801 -0.001192 0.737900 0.538900 97 254 114 --26.753901 45.398300 -2.858600 -0.562493 0.826801 -0.001192 0.766000 0.574200 163 254 174 --27.102699 45.320202 -5.735100 -0.562493 0.826801 -0.001192 0.706300 0.587600 0 254 27 --26.246300 42.901402 -5.383600 0.106461 -0.983873 -0.143736 0.880100 0.569900 20 231 27 --28.380600 42.330502 -3.056600 0.106461 -0.983873 -0.143736 0.853500 0.507000 0 252 27 --28.292801 42.543098 -4.446800 0.106461 -0.983873 -0.143736 0.879400 0.523100 5 243 27 --28.100901 44.177299 -2.470000 -0.192584 0.484112 0.853550 0.756100 0.537200 231 80 64 --26.117701 44.487900 -2.198700 -0.192584 0.484112 0.853550 0.788200 0.565100 242 74 67 --26.753901 45.398300 -2.858600 -0.192584 0.484112 0.853550 0.766000 0.574200 163 125 53 --1.712600 0.024900 -9.195700 0.013475 -0.999909 -0.000374 0.765100 0.147100 254 254 254 --3.769300 -0.009000 1.132900 0.013475 -0.999909 -0.000374 0.765800 0.040900 0 254 27 --5.176800 -0.025000 -0.598300 0.013475 -0.999909 -0.000374 0.783900 0.050100 0 254 27 --3.252600 0.001600 -8.591000 0.013475 -0.999909 -0.000374 0.777900 0.139800 254 254 254 -0.000000 61.912998 -0.048000 -0.158526 0.331625 0.929997 0.533800 0.254400 0 254 27 -0.000000 62.775902 -0.355700 -0.158526 0.331625 0.929997 0.533900 0.286800 0 254 27 --0.785400 61.539799 -0.048800 -0.158526 0.331625 0.929997 0.505500 0.247600 0 254 27 --0.340300 31.400700 -9.922000 0.943854 -0.327649 -0.042263 0.348900 0.396000 0 253 27 --0.425600 30.069099 -1.503600 0.943854 -0.327649 -0.042263 0.251300 0.411900 0 253 27 --0.845100 29.891001 -9.491500 0.943854 -0.327649 -0.042263 0.339400 0.379800 0 253 27 -0.000000 54.522099 -2.187600 0.000000 -0.045410 0.998968 0.310700 0.919600 235 81 69 -0.000000 56.862801 -2.081200 0.000000 -0.045410 0.998968 0.310500 0.953100 254 127 130 --0.509500 56.862801 -2.081200 0.000000 -0.045410 0.998968 0.307800 0.953500 254 129 132 --0.509500 56.862801 -2.081200 -0.098448 -0.971038 0.217700 0.497100 0.026700 254 129 132 -0.000000 56.862801 -2.081200 -0.098448 -0.971038 0.217700 0.533800 0.019000 254 127 130 -0.000000 57.320400 0.190300 -0.098448 -0.971038 0.217700 0.533800 0.095300 254 190 192 --0.860300 57.339199 -0.345300 -0.098448 -0.971038 0.217700 0.507000 0.087800 254 172 174 --5.598500 31.822901 -1.405400 -0.881296 0.021519 0.472075 0.185400 0.436500 133 152 48 --7.453900 29.910801 -4.782000 -0.881296 0.021519 0.472075 0.143900 0.408700 0 253 27 --6.824000 22.193899 -3.254300 -0.881296 0.021519 0.472075 0.165700 0.313700 99 254 117 --6.824000 22.193899 -3.254300 -0.921164 -0.108973 -0.373607 0.165700 0.313700 254 68 73 --7.453900 29.910801 -4.782000 -0.921164 -0.108973 -0.373607 0.143900 0.408700 254 68 73 --5.595300 29.761600 -8.491100 -0.921164 -0.108973 -0.373607 0.097300 0.399700 254 68 73 --5.317800 22.936800 -8.014600 -0.921164 -0.108973 -0.373607 0.105500 0.313700 254 68 73 --3.798500 31.552500 -0.386300 -0.402805 -0.146650 0.903461 0.210900 0.433400 211 97 63 --5.598500 31.822901 -1.405400 -0.402805 -0.146650 0.903461 0.185400 0.436500 133 152 48 --6.824000 22.193899 -3.254300 -0.402805 -0.146650 0.903461 0.165700 0.313700 99 254 117 --2.189200 21.987900 -1.481800 -0.402805 -0.146650 0.903461 0.225500 0.313700 218 254 222 --0.340300 31.400700 -9.922000 -0.229486 -0.108632 -0.967231 0.033600 0.413900 0 253 27 --0.845100 29.891001 -9.491500 -0.229486 -0.108632 -0.967231 0.041700 0.395800 0 253 27 --5.595300 29.761600 -8.491100 -0.229486 -0.108632 -0.967231 0.097300 0.399700 0 254 27 --4.970000 33.082802 -8.871300 -0.229486 -0.108632 -0.967231 0.086900 0.436600 0 254 27 --0.835600 22.853901 -8.203000 0.992234 -0.110109 0.057862 0.306600 0.313700 2 205 69 --0.845100 29.891001 -9.491500 0.992234 -0.110109 0.057862 0.339400 0.379800 0 241 37 --0.425600 30.069099 -1.503600 0.992234 -0.110109 0.057862 0.251300 0.411900 0 253 27 --2.189200 21.987900 -1.481800 0.992234 -0.110109 0.057862 0.225500 0.313700 0 253 27 --2.162800 35.743500 -9.599900 -0.324262 0.084100 -0.942221 0.052600 0.465300 0 254 27 --0.340300 31.400700 -9.922000 -0.324262 0.084100 -0.942221 0.033600 0.413900 0 253 27 --4.970000 33.082802 -8.871300 -0.324262 0.084100 -0.942221 0.086900 0.436600 0 254 27 --5.283200 35.952900 -7.814600 -0.324262 0.084100 -0.942221 0.094100 0.470900 0 254 27 --5.283200 35.952900 -7.814600 -0.889642 0.311183 -0.334218 0.142000 0.631800 0 254 27 --6.542300 35.480598 -4.902800 -0.889642 0.311183 -0.334218 0.182300 0.631800 0 254 27 --5.919200 37.619099 -4.570300 -0.889642 0.311183 -0.334218 0.183200 0.661600 0 254 27 --5.919200 37.619099 -4.570300 -0.882633 0.186716 0.431389 0.183200 0.661600 0 253 27 --6.542300 35.480598 -4.902800 -0.882633 0.186716 0.431389 0.182300 0.631800 0 253 27 --5.598500 31.822901 -1.405400 -0.882633 0.186716 0.431389 0.231500 0.582200 133 152 48 --4.685700 36.664101 -1.616400 -0.882633 0.186716 0.431389 0.239100 0.661600 13 240 28 --0.474100 61.294899 -0.607800 -0.490764 0.255871 0.832875 0.499900 0.227200 0 254 27 --1.340700 61.343498 -1.024900 -0.490764 0.255871 0.832875 0.467800 0.231800 0 254 27 --2.225300 60.301201 -1.334400 -0.490764 0.255871 0.832875 0.434400 0.187400 0 254 27 --0.596000 60.268700 -0.255900 -0.490764 0.255871 0.832875 0.502600 0.185300 0 254 27 --1.340700 61.343498 -1.024900 -0.199083 -0.932669 0.300824 0.467800 0.231800 254 254 254 --0.474100 61.294899 -0.607800 -0.199083 -0.932669 0.300824 0.499900 0.227200 254 254 254 --0.785400 61.539799 -0.048800 -0.199083 -0.932669 0.300824 0.505500 0.247600 254 254 254 --1.792100 61.563202 -0.648200 -0.199083 -0.932669 0.300824 0.464300 0.250800 254 254 254 -0.000000 45.235802 -8.516300 -0.205813 0.023108 -0.978318 0.061400 0.762800 0 253 27 -0.000000 38.221600 -8.073300 -0.205813 0.023108 -0.978318 0.073200 0.661600 0 253 27 --2.827600 38.171799 -8.088300 -0.205813 0.023108 -0.978318 0.114500 0.661600 0 253 27 --5.495700 46.043098 -6.732400 -0.205813 0.023108 -0.978318 0.139900 0.788400 0 253 27 --0.425600 30.069099 -1.503600 0.289736 -0.060654 0.955183 0.251300 0.411900 254 254 254 --3.798500 31.552500 -0.386300 0.289736 -0.060654 0.955183 0.210900 0.433400 254 254 254 --2.189200 21.987900 -1.481800 0.289736 -0.060654 0.955183 0.225500 0.313700 254 254 254 -0.000000 31.547001 -9.939100 0.347255 -0.926523 -0.144807 0.349900 0.400200 254 68 73 -0.000000 30.215401 -1.522000 0.347255 -0.926523 -0.144807 0.252400 0.417000 254 68 73 --0.425600 30.069099 -1.503600 0.347255 -0.926523 -0.144807 0.251300 0.411900 254 68 73 --0.340300 31.400700 -9.922000 0.347255 -0.926523 -0.144807 0.348900 0.396000 254 68 73 --21.061199 44.183601 -7.611200 -0.028361 0.039319 -0.998824 0.879500 0.705100 52 208 31 --22.585199 48.327702 -7.594400 -0.028361 0.039319 -0.998824 0.812700 0.705100 104 170 42 --17.208200 49.477699 -7.512200 -0.028361 0.039319 -0.998824 0.810800 0.788400 6 242 27 --15.884600 46.520500 -7.855800 -0.028361 0.039319 -0.998824 0.879500 0.788400 0 250 27 --22.348700 46.932201 -2.822400 -0.723103 0.652497 0.226650 0.746000 0.680200 72 195 37 --22.585199 48.327702 -7.594400 -0.723103 0.652497 0.226650 0.812700 0.705100 0 253 27 --23.337700 47.268200 -6.945000 -0.723103 0.652497 0.226650 0.809900 0.680200 0 254 27 --21.061199 44.183601 -7.611200 -0.095048 -0.949863 -0.297868 0.626900 0.699700 52 208 31 --21.936399 43.055199 -3.733600 -0.095048 -0.949863 -0.297868 0.691800 0.680200 0 253 27 --22.105101 44.119598 -7.074000 -0.095048 -0.949863 -0.297868 0.641700 0.680200 30 225 27 -0.000000 59.375900 0.272700 0.000000 -0.866545 0.499100 0.533800 0.153800 254 254 254 -0.226300 59.631802 0.717000 0.000000 -0.866545 0.499100 0.537800 0.167300 254 254 254 --0.226300 59.631802 0.717000 0.000000 -0.866545 0.499100 0.529800 0.167300 254 254 254 --0.163800 60.672798 0.405300 0.000000 0.286842 0.957978 0.529100 0.200900 0 254 27 --0.226300 59.631802 0.717000 0.000000 0.286842 0.957978 0.529800 0.167300 0 254 27 -0.226300 59.631802 0.717000 0.000000 0.286842 0.957978 0.537800 0.167300 0 254 27 -0.163800 60.672798 0.405300 0.000000 0.286842 0.957978 0.538500 0.200900 0 254 27 --0.340300 31.400700 -9.922000 -0.012671 0.074070 -0.997173 0.033600 0.413900 0 253 27 --2.162800 35.743500 -9.599900 -0.012671 0.074070 -0.997173 0.052600 0.465300 0 253 27 -0.000000 35.795200 -9.599900 -0.012671 0.074070 -0.997173 0.027500 0.464800 0 253 27 -0.000000 31.547001 -9.939100 -0.012671 0.074070 -0.997173 0.029600 0.415400 0 253 27 --5.919200 37.619099 -4.570300 -0.561685 0.544798 -0.622660 0.183200 0.661600 0 254 27 --2.827600 38.171799 -8.088300 -0.561685 0.544798 -0.622660 0.114500 0.661600 0 254 27 --2.162800 35.743500 -9.599900 -0.561685 0.544798 -0.622660 0.096500 0.631800 0 254 27 --5.283200 35.952900 -7.814600 -0.561685 0.544798 -0.622660 0.142000 0.631800 0 254 27 --28.543800 44.178001 -4.651400 -0.410462 -0.233070 -0.881589 0.718600 0.545700 254 254 254 --27.102699 45.320202 -5.735100 -0.410462 -0.233070 -0.881589 0.706300 0.587600 254 254 254 --26.246300 42.901402 -5.383600 -0.410462 -0.233070 -0.881589 0.663100 0.553800 254 254 254 --28.292801 42.543098 -4.446800 -0.410462 -0.233070 -0.881589 0.704200 0.514300 254 254 254 --25.491899 42.827301 -2.370100 0.201709 -0.968181 -0.148119 0.813300 0.554500 0 254 27 --27.637899 42.321201 -1.984400 0.201709 -0.968181 -0.148119 0.816200 0.507300 0 254 27 --28.380600 42.330502 -3.056600 0.201709 -0.968181 -0.148119 0.853500 0.507000 0 254 27 --26.246300 42.901402 -5.383600 0.185319 -0.980147 -0.070494 0.880100 0.569900 20 231 27 --25.491899 42.827301 -2.370100 0.185319 -0.980147 -0.070494 0.813300 0.554500 0 253 27 --28.380600 42.330502 -3.056600 0.185319 -0.980147 -0.070494 0.853500 0.507000 0 252 27 --0.179900 61.274700 0.058500 0.000000 0.499235 0.866467 0.525600 0.223900 0 254 27 --0.163800 60.672798 0.405300 0.000000 0.499235 0.866467 0.529100 0.200900 0 254 27 -0.163800 60.672798 0.405300 0.000000 0.499235 0.866467 0.538500 0.200900 0 254 27 -0.179900 61.274700 0.058500 0.000000 0.499235 0.866467 0.542100 0.223900 0 254 27 -0.000000 61.912998 -0.048000 0.000000 0.164575 0.986365 0.533800 0.254400 0 254 27 --0.179900 61.274700 0.058500 0.000000 0.164575 0.986365 0.525600 0.223900 0 254 27 -0.179900 61.274700 0.058500 0.000000 0.164575 0.986365 0.542100 0.223900 0 254 27 --2.162800 35.743500 -9.599900 -0.008224 0.529675 -0.848161 0.096500 0.631800 0 253 27 --2.827600 38.171799 -8.088300 -0.008224 0.529675 -0.848161 0.114500 0.661600 0 253 27 -0.000000 38.221600 -8.073300 -0.008224 0.529675 -0.848161 0.073200 0.661600 0 253 27 -0.000000 35.795200 -9.599900 -0.008224 0.529675 -0.848161 0.068100 0.631800 0 253 27 -4.620900 14.945700 -8.516100 0.163464 0.013069 -0.986463 0.912200 0.175600 0 253 27 -3.252600 0.001600 -8.591000 0.163464 0.013069 -0.986463 0.909400 0.032900 235 80 66 -1.712600 0.024900 -9.195700 0.163464 0.013069 -0.986463 0.925400 0.031900 254 68 73 -1.456400 14.610600 -8.695100 0.163464 0.013069 -0.986463 0.943400 0.175600 0 253 27 -4.089400 2.633000 -5.031300 0.982688 -0.088487 -0.162770 0.873900 0.060000 18 0 253 -3.252600 0.001600 -8.591000 0.982688 -0.088487 -0.162770 0.909400 0.032900 19 0 253 -4.620900 14.945700 -8.516100 0.982688 -0.088487 -0.162770 0.912200 0.175600 0 247 31 -5.308800 13.910900 -3.738700 0.982688 -0.088487 -0.162770 0.859000 0.175600 0 253 27 -1.553600 3.059500 -4.173500 -0.398905 -0.098999 0.911633 0.841100 0.058900 18 0 253 -3.061600 3.537800 -3.461700 -0.398905 -0.098999 0.911633 0.856300 0.067800 18 0 253 -1.766900 13.754900 -2.918700 -0.398905 -0.098999 0.911633 0.824200 0.175600 0 254 27 -1.553600 3.059500 -4.173500 -0.983093 0.009545 0.182857 0.841100 0.058900 254 254 254 -1.766900 13.754900 -2.918700 -0.983093 0.009545 0.182857 0.824200 0.175600 254 254 254 -1.239800 14.644800 -6.465300 -0.983093 0.009545 0.182857 0.795300 0.175600 254 254 254 -0.626000 0.031700 -8.336200 -0.983093 0.009545 0.182857 0.808600 0.019600 254 254 254 -5.495700 46.043098 -6.732400 0.860977 -0.085411 -0.501422 0.140100 0.788400 0 252 27 -6.029500 46.188801 -3.956000 0.860977 -0.085411 -0.501422 0.183500 0.792100 0 253 27 -5.919200 37.619099 -4.570300 0.860977 -0.085411 -0.501422 0.183400 0.661600 9 98 162 -2.827600 38.171799 -8.088300 0.860977 -0.085411 -0.501422 0.114700 0.661600 8 119 142 -4.685700 36.664101 -1.616400 0.917535 -0.032092 0.396359 0.239300 0.661600 0 250 28 -5.919200 37.619099 -4.570300 0.917535 -0.032092 0.396359 0.183400 0.661600 9 98 162 -6.029500 46.188801 -3.956000 0.917535 -0.032092 0.396359 0.183500 0.792100 0 253 27 -4.298500 47.001099 -0.058900 0.917535 -0.032092 0.396359 0.249500 0.802400 0 253 27 -6.775800 50.206501 -7.534500 0.223809 0.028781 -0.974208 0.134300 0.852600 0 253 27 -0.000000 50.037800 -9.413700 0.223809 0.028781 -0.974208 0.042000 0.827300 0 253 27 -0.000000 53.738098 -8.986800 0.223809 0.028781 -0.974208 0.028300 0.877800 0 253 27 -7.252500 54.524502 -7.615000 0.223809 0.028781 -0.974208 0.126400 0.913200 0 254 27 -7.252500 54.524502 -7.615000 0.375359 0.901424 0.215731 0.533200 0.977800 0 254 27 -6.624100 53.529800 -2.653700 0.375359 0.901424 0.215731 0.469900 0.977800 0 253 27 -8.184300 53.108700 -3.320400 0.375359 0.901424 0.215731 0.469900 0.942000 0 253 27 -8.747800 53.770199 -7.353300 0.375359 0.901424 0.215731 0.528600 0.942000 0 253 27 -9.827700 52.989700 -7.188500 0.412168 0.895237 0.169320 0.526400 0.916400 0 253 27 -9.508400 52.403099 -3.672700 0.412168 0.895237 0.169320 0.469900 0.916400 0 253 27 -15.636800 49.715099 -4.015700 0.412168 0.895237 0.169320 0.469900 0.803100 1 215 59 -14.989100 50.565300 -7.297200 0.412168 0.895237 0.169320 0.526200 0.828100 0 249 29 -0.000000 37.009800 0.550700 0.339751 -0.089043 0.936291 0.310700 0.661600 0 253 27 -4.685700 36.664101 -1.616400 0.339751 -0.089043 0.936291 0.239300 0.661600 0 250 28 -4.298500 47.001099 -0.058900 0.339751 -0.089043 0.936291 0.249500 0.802400 0 253 27 -0.000000 47.287498 1.094200 0.339751 -0.089043 0.936291 0.310700 0.805700 0 253 27 -0.000000 53.738098 -8.986800 0.139268 0.841727 -0.521633 0.028300 0.877800 0 253 27 -0.000000 55.950600 -7.250100 0.139268 0.841727 -0.521633 0.022600 0.916300 0 253 27 -2.321200 55.471001 -5.570800 0.139268 0.841727 -0.521633 0.053900 0.941000 0 253 27 -7.252500 54.524502 -7.615000 0.139268 0.841727 -0.521633 0.126400 0.913200 0 254 27 -3.773800 51.093601 -1.034300 0.772400 -0.022870 0.634725 0.256800 0.864400 0 253 27 -4.298500 47.001099 -0.058900 0.772400 -0.022870 0.634725 0.249500 0.802400 0 253 27 -6.029500 46.188801 -3.956000 0.772400 -0.022870 0.634725 0.183500 0.792100 0 253 27 -6.624100 53.529800 -2.653700 0.772400 -0.022870 0.634725 0.210400 0.900400 0 253 27 -6.624100 53.529800 -2.653700 0.299992 -0.190133 0.934802 0.210400 0.900400 254 68 73 -6.029500 46.188801 -3.956000 0.299992 -0.190133 0.934802 0.183500 0.792100 254 68 73 -7.813100 49.342701 -3.886900 0.299992 -0.190133 0.934802 0.181200 0.844200 254 68 73 -0.000000 50.880199 0.110000 0.266804 0.255185 0.929352 0.310700 0.860500 0 253 27 -0.000000 47.287498 1.094200 0.266804 0.255185 0.929352 0.310700 0.805700 0 252 27 -4.298500 47.001099 -0.058900 0.266804 0.255185 0.929352 0.249500 0.802400 0 253 27 -3.773800 51.093601 -1.034300 0.266804 0.255185 0.929352 0.256800 0.864400 0 253 27 -16.136200 50.023998 -7.546200 -0.129075 0.179950 -0.975171 0.529500 0.803100 0 253 27 -14.885000 46.974701 -7.946000 -0.129075 0.179950 -0.975171 0.590800 0.803100 0 253 27 -13.779500 47.417198 -7.715300 -0.129075 0.179950 -0.975171 0.590800 0.828100 0 253 27 -14.989100 50.565300 -7.297200 -0.129075 0.179950 -0.975171 0.526200 0.828100 0 253 27 -13.779500 47.417198 -7.715300 -0.437873 -0.882573 -0.171264 0.347800 0.823100 0 253 27 -14.977100 45.689201 -4.821000 -0.437873 -0.882573 -0.171264 0.400900 0.803100 0 253 27 -8.927200 49.128502 -4.128200 -0.437873 -0.882573 -0.171264 0.409800 0.916400 0 253 27 -8.756500 49.321098 -7.632900 -0.437873 -0.882573 -0.171264 0.347800 0.916400 0 253 27 -17.208200 49.477699 -7.512200 0.268622 0.938905 0.215175 0.531700 0.782100 0 227 47 -16.810101 49.139900 -3.928800 0.268622 0.938905 0.215175 0.469900 0.782100 35 133 112 -22.348700 46.932201 -2.822400 0.268622 0.938905 0.215175 0.469900 0.674700 19 0 250 -22.585199 48.327702 -7.594400 0.268622 0.938905 0.215175 0.533600 0.698800 0 236 38 -21.936399 43.055199 -3.733600 -0.256926 -0.186034 0.948357 0.412700 0.674700 19 0 253 -22.348700 46.932201 -2.822400 -0.256926 -0.186034 0.948357 0.469900 0.674700 19 0 250 -16.810101 49.139900 -3.928800 -0.256926 -0.186034 0.948357 0.469900 0.782100 35 133 112 -16.192200 44.960400 -4.877100 -0.256926 -0.186034 0.948357 0.398600 0.782100 18 0 253 -22.105101 44.119598 -7.074000 0.471869 -0.161034 -0.866838 0.583100 0.674700 0 253 27 -21.061199 44.183601 -7.611200 0.471869 -0.161034 -0.866838 0.590800 0.698800 0 253 27 -22.585199 48.327702 -7.594400 0.471869 -0.161034 -0.866838 0.533600 0.698800 0 253 27 -23.337700 47.268200 -6.945000 0.471869 -0.161034 -0.866838 0.530800 0.674700 0 253 27 -15.884600 46.520500 -7.855800 -0.312108 -0.901546 -0.299673 0.347800 0.782100 0 253 27 -21.061199 44.183601 -7.611200 -0.312108 -0.901546 -0.299673 0.347800 0.693400 0 253 27 -21.936399 43.055199 -3.733600 -0.312108 -0.901546 -0.299673 0.412700 0.674700 0 253 27 -16.192200 44.960400 -4.877100 -0.312108 -0.901546 -0.299673 0.398600 0.782100 0 253 27 -5.598500 31.822901 -1.404300 0.899204 0.141743 0.413933 0.847900 0.413200 0 240 37 -7.453900 29.910801 -4.780100 0.899204 0.141743 0.413933 0.884800 0.385400 18 0 251 -7.174300 32.815300 -5.167300 0.899204 0.141743 0.413933 0.893300 0.414200 17 7 244 -4.970000 33.082802 -8.871900 0.875445 0.068330 -0.478463 0.938900 0.409500 18 0 252 -7.174300 32.815300 -5.167300 0.875445 0.068330 -0.478463 0.893300 0.414200 17 7 244 -7.453900 29.910801 -4.780100 0.875445 0.068330 -0.478463 0.884800 0.385400 18 0 251 -5.595300 29.761600 -8.492500 0.875445 0.068330 -0.478463 0.927500 0.375900 18 0 253 -6.827700 20.858999 -3.044800 0.895156 -0.347215 -0.279532 0.858900 0.286100 0 231 44 -6.194700 19.576300 -3.478600 0.895156 -0.347215 -0.279532 0.860200 0.277400 0 248 31 -5.426000 21.341299 -8.132600 0.895156 -0.347215 -0.279532 0.914200 0.282100 15 21 230 -0.835600 22.853901 -8.210700 0.045309 0.086115 -0.995254 0.964300 0.301600 0 253 27 -5.317800 22.936800 -8.016200 0.045309 0.086115 -0.995254 0.916400 0.301600 0 253 27 -5.426000 21.341299 -8.132600 0.045309 0.086115 -0.995254 0.914200 0.282100 0 253 27 -0.899900 21.410400 -8.349400 0.045309 0.086115 -0.995254 0.962800 0.286100 0 253 27 -0.899900 21.410400 -8.349400 -0.986876 0.054006 0.152183 0.726500 0.282100 254 254 254 -1.853000 19.164200 -1.371600 -0.986876 0.054006 0.152183 0.805100 0.274200 254 254 254 -1.957400 20.620800 -1.211500 -0.986876 0.054006 0.152183 0.804700 0.286100 254 254 254 -6.194700 19.576300 -3.478600 0.393316 -0.294694 0.870895 0.860200 0.277400 0 248 31 -6.827700 20.858999 -3.044800 0.393316 -0.294694 0.870895 0.858900 0.286100 0 231 44 -1.957400 20.620800 -1.211500 0.393316 -0.294694 0.870895 0.804700 0.286100 0 253 27 -1.853000 19.164200 -1.371600 0.393316 -0.294694 0.870895 0.805100 0.274200 0 253 27 -5.117200 15.490400 -9.679700 -0.013076 0.210350 -0.977539 0.917300 0.220800 0 253 27 -0.134100 16.169500 -9.174700 -0.013076 0.210350 -0.977539 0.969900 0.225300 0 253 27 -0.899900 21.410400 -8.349400 -0.013076 0.210350 -0.977539 0.962800 0.286100 0 253 27 -5.426000 21.341299 -8.132600 -0.013076 0.210350 -0.977539 0.914200 0.282100 0 253 27 -0.134100 16.169500 -9.174700 -0.979250 0.051054 0.196120 0.732600 0.207100 0 254 27 -1.716700 14.450400 -2.459200 -0.979250 0.051054 0.196120 0.808600 0.236100 0 254 27 -1.853000 19.164200 -1.371600 -0.979250 0.051054 0.196120 0.805100 0.274200 0 254 27 -0.899900 21.410400 -8.349400 -0.979250 0.051054 0.196120 0.726500 0.282100 0 254 27 -1.853000 19.164200 -1.371600 0.369977 -0.140579 0.918343 0.805100 0.274200 0 253 27 -1.716700 14.450400 -2.459200 0.369977 -0.140579 0.918343 0.808600 0.236100 0 253 27 -6.069200 14.643000 -3.762300 0.369977 -0.140579 0.918343 0.859400 0.227800 0 253 27 -6.194700 19.576300 -3.478600 0.369977 -0.140579 0.918343 0.860200 0.277400 0 248 31 -6.069200 14.643000 -3.762300 0.986467 -0.011966 -0.163524 0.859400 0.227800 0 253 27 -5.117200 15.490400 -9.679700 0.986467 -0.011966 -0.163524 0.917300 0.220800 2 202 70 -5.426000 21.341299 -8.132600 0.986467 -0.011966 -0.163524 0.914200 0.282100 15 21 230 -6.194700 19.576300 -3.478600 0.986467 -0.011966 -0.163524 0.860200 0.277400 0 248 31 -7.813100 49.342701 -3.886900 0.881229 -0.394976 -0.259672 0.181200 0.844200 0 253 27 -6.029500 46.188801 -3.956000 0.881229 -0.394976 -0.259672 0.183500 0.792100 0 253 27 -5.495700 46.043098 -6.732400 0.881229 -0.394976 -0.259672 0.140100 0.788400 0 252 27 -6.775800 50.206501 -7.534500 0.881229 -0.394976 -0.259672 0.134300 0.852600 0 253 27 -8.756500 49.321098 -7.632900 -0.341557 -0.936397 -0.080618 0.347800 0.916400 254 68 73 -8.927200 49.128502 -4.128200 -0.341557 -0.936397 -0.080618 0.409800 0.916400 254 68 73 -7.813100 49.342701 -3.886900 -0.341557 -0.936397 -0.080618 0.407700 0.942000 254 68 73 -6.775800 50.206501 -7.534500 -0.341557 -0.936397 -0.080618 0.347800 0.942000 254 68 73 -5.495700 46.043098 -6.732400 0.295037 -0.218453 -0.930178 0.140100 0.788400 0 253 27 -0.000000 45.235802 -8.516300 0.295037 -0.218453 -0.930178 0.061600 0.762900 0 253 27 -0.000000 50.037800 -9.413700 0.295037 -0.218453 -0.930178 0.042000 0.827300 0 253 27 -6.775800 50.206501 -7.534500 0.295037 -0.218453 -0.930178 0.134300 0.852600 0 253 27 -3.773800 51.093601 -1.034300 0.217879 0.518058 0.827130 0.256800 0.864400 0 253 27 -1.435700 55.057400 -2.884500 0.217879 0.518058 0.827130 0.286000 0.931400 0 253 27 -0.000000 54.522099 -2.187600 0.217879 0.518058 0.827130 0.310700 0.919600 0 253 27 -0.000000 50.880199 0.110000 0.217879 0.518058 0.827130 0.310700 0.860500 0 253 27 -0.163800 60.672798 0.405300 0.878123 0.172158 0.446386 0.538500 0.200900 0 253 27 -0.226300 59.631802 0.717000 0.878123 0.172158 0.446386 0.537800 0.167300 0 253 27 -0.605400 59.453602 0.006800 0.878123 0.172158 0.446386 0.558900 0.156900 0 253 27 -0.596000 60.268700 -0.255900 0.878123 0.172158 0.446386 0.565100 0.185300 0 253 27 -0.000000 59.375900 0.272700 0.351825 0.003851 0.936058 0.533800 0.153800 0 253 27 -0.000000 58.735298 0.237300 0.351825 0.003851 0.936058 0.533800 0.134400 0 253 27 -0.793500 58.611801 -0.022400 0.351825 0.003851 0.936058 0.561500 0.129800 0 253 27 -0.605400 59.453602 0.006800 0.351825 0.003851 0.936058 0.558900 0.156900 0 253 27 -1.340700 61.343498 -1.024900 0.500896 0.173312 0.847978 0.599900 0.231700 254 254 254 -2.225300 60.301201 -1.334400 0.500896 0.173312 0.847978 0.633200 0.187400 254 254 254 -2.209500 61.230499 -1.515000 0.500896 0.173312 0.847978 0.636800 0.228100 254 254 254 -0.474100 61.294899 -0.607800 0.419394 -0.893935 0.158081 0.567800 0.227200 0 253 27 -0.785400 61.539799 -0.048800 0.419394 -0.893935 0.158081 0.562200 0.247600 0 253 27 -0.179900 61.274700 0.058500 0.419394 -0.893935 0.158081 0.542100 0.223900 0 253 27 -0.163800 60.672798 0.405300 0.879737 0.234636 0.413532 0.538500 0.200900 0 253 27 -0.596000 60.268700 -0.255900 0.879737 0.234636 0.413532 0.565100 0.185300 0 253 27 -0.474100 61.294899 -0.607800 0.879737 0.234636 0.413532 0.567800 0.227200 0 253 27 -0.179900 61.274700 0.058500 0.879737 0.234636 0.413532 0.542100 0.223900 0 253 27 -0.785400 61.539799 -0.048800 0.405349 0.400850 0.821591 0.562200 0.247600 0 253 27 -1.792100 61.563202 -0.648200 0.405349 0.400850 0.821591 0.603400 0.250800 0 253 27 -1.901400 62.898899 -1.262500 0.405349 0.400850 0.821591 0.616100 0.287500 0 253 27 -0.000000 62.775902 -0.355700 0.405349 0.400850 0.821591 0.533900 0.286800 0 253 27 -1.901400 62.898899 -1.262500 0.958885 0.139689 0.247034 0.616100 0.287500 254 73 78 -1.792100 61.563202 -0.648200 0.958885 0.139689 0.247034 0.603400 0.250800 254 68 73 -2.209500 61.230499 -1.515000 0.958885 0.139689 0.247034 0.636800 0.228100 254 68 73 -2.505800 61.413601 -3.333900 0.958885 0.139689 0.247034 0.700500 0.240200 254 68 73 -2.071800 58.080299 -1.837600 0.982605 0.010378 0.185418 0.632000 0.089900 254 254 254 -2.361600 58.652599 -3.405400 0.982605 0.010378 0.185418 0.691600 0.111600 254 254 254 -2.043500 58.694401 -1.722000 0.982605 0.010378 0.185418 0.633000 0.119000 254 254 254 -2.361600 58.652599 -3.405400 0.835615 -0.547438 -0.045374 0.691600 0.111600 254 254 254 -2.071800 58.080299 -1.837600 0.835615 -0.547438 -0.045374 0.632000 0.089900 254 254 254 -1.480400 57.287800 -3.167400 0.835615 -0.547438 -0.045374 0.679600 0.054000 254 254 254 -2.361600 58.652599 -3.405400 0.962379 -0.178153 0.205154 0.691600 0.111600 254 254 254 -2.484800 60.667999 -2.078300 0.962379 -0.178153 0.205154 0.658100 0.193000 254 254 254 -2.225300 60.301201 -1.334400 0.962379 -0.178153 0.205154 0.633200 0.187400 254 254 254 -2.043500 58.694401 -1.722000 0.962379 -0.178153 0.205154 0.633000 0.119000 254 254 254 -0.596000 60.268700 -0.255900 0.569338 0.180881 0.801958 0.565100 0.185300 0 253 27 -0.605400 59.453602 0.006800 0.569338 0.180881 0.801958 0.558900 0.156900 0 253 27 -0.793500 58.611801 -0.022400 0.569338 0.180881 0.801958 0.561500 0.129800 0 253 27 -2.225300 60.301201 -1.334400 0.569338 0.180881 0.801958 0.633200 0.187400 0 253 27 -0.793500 58.611801 -0.022400 0.424783 -0.113068 0.898207 0.561500 0.129800 254 68 73 -0.000000 58.735298 0.237300 0.424783 -0.113068 0.898207 0.533800 0.134400 254 68 73 -0.000000 57.320400 0.190300 0.424783 -0.113068 0.898207 0.533800 0.095300 254 68 73 -0.860300 57.339199 -0.345300 0.424783 -0.113068 0.898207 0.560600 0.087800 254 68 73 -2.361600 58.652599 -3.405400 0.801295 -0.555920 -0.221086 0.691600 0.111600 254 254 254 -1.480400 57.287800 -3.167400 0.801295 -0.555920 -0.221086 0.679600 0.054000 254 254 254 -1.507500 57.978802 -4.806700 0.801295 -0.555920 -0.221086 0.740400 0.071600 254 254 254 -1.480400 57.287800 -3.167400 0.605736 -0.042761 0.794516 0.293800 0.962800 0 253 27 -0.509500 56.862801 -2.081200 0.605736 -0.042761 0.794516 0.308000 0.953500 0 253 27 -0.000000 54.522099 -2.187600 0.605736 -0.042761 0.794516 0.310700 0.919600 0 253 27 -1.435700 55.057400 -2.884500 0.605736 -0.042761 0.794516 0.286000 0.931400 0 254 27 -1.435700 55.057400 -2.884500 0.962522 0.132164 0.236820 0.286000 0.931400 254 68 73 -2.321200 55.471001 -5.570800 0.962522 0.132164 0.236820 0.259700 0.968000 254 68 73 -1.507500 57.978802 -4.806700 0.962522 0.132164 0.236820 0.270100 0.982500 254 68 73 -1.480400 57.287800 -3.167400 0.962522 0.132164 0.236820 0.293800 0.962800 254 68 73 -5.117200 15.490400 -9.679700 -0.146405 -0.402228 -0.903758 0.917300 0.220800 0 253 27 -1.456400 14.610600 -8.695100 -0.146405 -0.402228 -0.903758 0.949700 0.207500 0 253 27 -0.134100 16.169500 -9.174700 -0.146405 -0.402228 -0.903758 0.969900 0.225300 0 253 27 -0.134100 16.169500 -9.174700 -0.868940 -0.488451 0.079739 0.732600 0.207100 254 254 254 -1.239800 14.644800 -6.465300 -0.868940 -0.488451 0.079739 0.774100 0.204900 254 254 254 -1.716700 14.450400 -2.459200 -0.868940 -0.488451 0.079739 0.808600 0.236100 254 254 254 -5.308800 13.910900 -3.738700 0.254739 -0.396087 0.882170 0.855000 0.218100 0 253 27 -6.069200 14.643000 -3.762300 0.254739 -0.396087 0.882170 0.859400 0.227800 0 253 27 -1.716700 14.450400 -2.459200 0.254739 -0.396087 0.882170 0.808600 0.236100 0 253 27 -1.766900 13.754900 -2.918700 0.254739 -0.396087 0.882170 0.809900 0.215800 0 253 27 -4.620900 14.945700 -8.516100 0.580484 -0.782092 -0.226651 0.914400 0.215300 0 247 31 -5.117200 15.490400 -9.679700 0.580484 -0.782092 -0.226651 0.917300 0.220800 2 205 68 -6.069200 14.643000 -3.762300 0.580484 -0.782092 -0.226651 0.859400 0.227800 0 253 27 -5.308800 13.910900 -3.738700 0.580484 -0.782092 -0.226651 0.855000 0.218100 0 253 27 -1.957400 20.620800 -1.211500 -0.981620 0.066989 0.178702 0.804700 0.286100 254 254 254 -2.189200 21.987900 -1.483700 -0.981620 0.066989 0.178702 0.804500 0.301600 254 254 254 -0.835600 22.853901 -8.210700 -0.981620 0.066989 0.178702 0.728900 0.301600 254 254 254 -0.899900 21.410400 -8.349400 -0.981620 0.066989 0.178702 0.726500 0.282100 254 254 254 -7.174300 32.815300 -5.167300 0.882089 0.156872 -0.444196 0.893300 0.414200 17 7 244 -4.970000 33.082802 -8.871900 0.882089 0.156872 -0.444196 0.938900 0.409500 18 0 252 -5.283200 35.952900 -7.814600 0.882089 0.156872 -0.444196 0.933900 0.441300 18 1 249 -6.542300 35.480598 -4.902800 0.882089 0.156872 -0.444196 0.897200 0.442800 15 32 221 -5.598500 31.822901 -1.404300 0.892181 0.170029 0.418452 0.847900 0.413200 0 240 37 -7.174300 32.815300 -5.167300 0.892181 0.170029 0.418452 0.893300 0.414200 17 7 244 -6.542300 35.480598 -4.902800 0.892181 0.170029 0.418452 0.897200 0.442800 15 32 221 -4.685700 36.664101 -1.616400 0.472747 0.127337 0.871949 0.239300 0.661600 0 250 28 -3.798500 31.552500 -0.388900 0.472747 0.127337 0.871949 0.257800 0.582200 0 253 27 -5.598500 31.822901 -1.404300 0.472747 0.127337 0.871949 0.231700 0.582200 0 240 37 -2.225300 60.301201 -1.334400 0.926529 0.086891 0.366052 0.633200 0.187400 254 254 254 -2.484800 60.667999 -2.078300 0.926529 0.086891 0.366052 0.658100 0.193000 254 254 254 -2.209500 61.230499 -1.515000 0.926529 0.086891 0.366052 0.636800 0.228100 254 254 254 -8.927200 49.128502 -4.128200 0.174303 -0.164506 0.970853 0.409800 0.916400 254 68 73 -9.508400 52.403099 -3.672700 0.174303 -0.164506 0.970853 0.469900 0.916400 254 68 73 -8.184300 53.108700 -3.320400 0.174303 -0.164506 0.970853 0.469900 0.942000 254 68 73 -7.813100 49.342701 -3.886900 0.174303 -0.164506 0.970853 0.407700 0.942000 254 68 73 -8.184300 53.108700 -3.320400 0.526523 0.826719 0.198265 0.469900 0.942000 0 253 27 -9.508400 52.403099 -3.672700 0.526523 0.826719 0.198265 0.469900 0.916400 0 253 27 -9.827700 52.989700 -7.188500 0.526523 0.826719 0.198265 0.526400 0.916400 0 253 27 -8.747800 53.770199 -7.353300 0.526523 0.826719 0.198265 0.528600 0.942000 0 253 27 -8.747800 53.770199 -7.353300 0.154881 -0.035505 -0.987295 0.528600 0.942000 0 253 27 -6.775800 50.206501 -7.534500 0.154881 -0.035505 -0.987295 0.590800 0.942000 0 253 27 -7.252500 54.524502 -7.615000 0.154881 -0.035505 -0.987295 0.533200 0.977800 0 254 27 -8.927200 49.128502 -4.128200 -0.001669 -0.169906 0.985459 0.409800 0.916400 0 253 27 -14.977100 45.689201 -4.821000 -0.001669 -0.169906 0.985459 0.400900 0.803100 18 0 253 -15.636800 49.715099 -4.015700 -0.001669 -0.169906 0.985459 0.469900 0.803100 29 188 60 -9.508400 52.403099 -3.672700 -0.001669 -0.169906 0.985459 0.469900 0.916400 0 253 27 -1.435700 55.057400 -2.884500 0.215818 0.814400 0.538680 0.286000 0.931400 0 253 27 -3.773800 51.093601 -1.034300 0.215818 0.814400 0.538680 0.256800 0.864400 0 253 27 -6.624100 53.529800 -2.653700 0.215818 0.814400 0.538680 0.210400 0.900400 0 253 27 -7.252500 54.524502 -7.615000 0.215818 0.814400 0.538680 0.180600 0.964800 0 253 27 -2.321200 55.471001 -5.570800 0.276118 0.932071 0.234526 0.259700 0.968000 0 253 27 -1.435700 55.057400 -2.884500 0.276118 0.932071 0.234526 0.286000 0.931400 0 253 27 -7.252500 54.524502 -7.615000 0.276118 0.932071 0.234526 0.180600 0.964800 0 253 27 -2.209500 61.230499 -1.515000 0.942806 0.279456 0.181716 0.636800 0.228100 254 254 254 -2.484800 60.667999 -2.078300 0.942806 0.279456 0.181716 0.658100 0.193000 254 254 254 -2.505800 61.413601 -3.333900 0.942806 0.279456 0.181716 0.704900 0.212700 254 254 254 -2.484800 60.667999 -2.078300 0.998559 -0.051788 -0.014052 0.658100 0.193000 254 254 254 -2.361600 58.652599 -3.405400 0.998559 -0.051788 -0.014052 0.691600 0.111600 254 254 254 -2.505800 61.413601 -3.333900 0.998559 -0.051788 -0.014052 0.704900 0.212700 254 254 254 -2.209500 61.230499 -1.515000 0.107977 -0.909631 0.401138 0.636800 0.228100 254 68 73 -1.792100 61.563202 -0.648200 0.107977 -0.909631 0.401138 0.603400 0.250800 254 68 73 -1.340700 61.343498 -1.024900 0.107977 -0.909631 0.401138 0.599900 0.231700 254 68 73 -3.061600 3.537800 -3.461700 -0.234488 0.898953 0.369997 0.290200 0.071700 18 0 253 -1.553600 3.059500 -4.173500 -0.234488 0.898953 0.369997 0.275500 0.071900 18 0 253 -1.568700 1.981700 -0.627100 -0.234488 0.898953 0.369997 0.274000 0.039600 19 0 253 -3.735600 1.816900 0.228400 -0.234488 0.898953 0.369997 0.290200 0.030700 19 0 253 -0.626000 0.031700 -8.336200 -0.992053 0.072189 0.103052 0.238500 0.103000 0 254 27 -1.825200 -0.024100 0.601200 -0.992053 0.072189 0.103052 0.266200 0.023600 254 254 254 -1.568700 1.981700 -0.627100 -0.992053 0.072189 0.103052 0.274000 0.039600 254 254 254 -1.553600 3.059500 -4.173500 -0.992053 0.072189 0.103052 0.275500 0.071900 186 254 192 -1.825200 -0.024100 0.601200 0.002195 -0.999985 -0.005027 0.783900 0.050100 0 254 27 -0.626000 0.031700 -8.336200 0.002195 -0.999985 -0.005027 0.777900 0.139800 253 254 253 -1.712600 0.024900 -9.195700 0.002195 -0.999985 -0.005027 0.765100 0.147100 254 254 254 -3.769300 -0.009000 1.132900 0.002195 -0.999985 -0.005027 0.765800 0.040900 0 254 27 -1.712600 0.024900 -9.195700 -0.920325 0.042849 -0.388801 0.925400 0.031900 254 68 73 -0.626000 0.031700 -8.336200 -0.920325 0.042849 -0.388801 0.938600 0.031200 254 68 73 -1.239800 14.644800 -6.465300 -0.920325 0.042849 -0.388801 0.974400 0.175600 254 68 73 -1.456400 14.610600 -8.695100 -0.920325 0.042849 -0.388801 0.943400 0.175600 254 68 73 -1.568700 1.981700 -0.627100 -0.270273 0.452545 0.849798 0.274000 0.039600 19 0 253 -1.825200 -0.024100 0.601200 -0.270273 0.452545 0.849798 0.266200 0.023600 19 0 253 -3.769300 -0.009000 1.132900 -0.270273 0.452545 0.849798 0.289700 0.012400 19 0 253 -3.735600 1.816900 0.228400 -0.270273 0.452545 0.849798 0.290200 0.030700 19 0 253 -4.089400 2.633000 -5.031300 0.957442 -0.073711 -0.279054 0.310400 0.073900 18 0 253 -5.390300 1.568200 -1.670300 0.957442 -0.073711 -0.279054 0.308400 0.040400 18 0 253 -5.176800 -0.025000 -0.598300 0.957442 -0.073711 -0.279054 0.313500 0.023800 18 0 253 -3.252600 0.001600 -8.591000 0.957442 -0.073711 -0.279054 0.345300 0.097200 19 0 253 -3.769300 -0.009000 1.132900 0.738109 0.308147 0.600201 0.289700 0.012400 18 0 253 -5.176800 -0.025000 -0.598300 0.738109 0.308147 0.600201 0.313500 0.023800 18 0 253 -5.390300 1.568200 -1.670300 0.738109 0.308147 0.600201 0.308400 0.040400 18 0 253 -3.735600 1.816900 0.228400 0.738109 0.308147 0.600201 0.290200 0.030700 18 0 253 -5.390300 1.568200 -1.670300 0.560649 0.811720 0.163660 0.308400 0.040400 18 0 253 -4.089400 2.633000 -5.031300 0.560649 0.811720 0.163660 0.310400 0.073900 18 0 253 -3.061600 3.537800 -3.461700 0.560649 0.811720 0.163660 0.290200 0.071700 18 0 253 -3.735600 1.816900 0.228400 0.560649 0.811720 0.163660 0.290200 0.030700 18 0 253 -3.061600 3.537800 -3.461700 0.452521 -0.074303 0.888653 0.856300 0.067800 18 0 253 -4.089400 2.633000 -5.031300 0.452521 -0.074303 0.888653 0.873900 0.060000 18 0 253 -5.308800 13.910900 -3.738700 0.452521 -0.074303 0.888653 0.859000 0.175600 0 253 27 -1.766900 13.754900 -2.918700 0.452521 -0.074303 0.888653 0.824200 0.175600 0 253 27 -5.117200 15.490400 -9.679700 0.118623 -0.917754 -0.379021 0.917300 0.220800 0 253 27 -4.620900 14.945700 -8.516100 0.118623 -0.917754 -0.379021 0.914400 0.215300 0 253 27 -1.456400 14.610600 -8.695100 0.118623 -0.917754 -0.379021 0.949700 0.207500 0 253 27 -1.456400 14.610600 -8.695100 -0.751462 -0.656769 -0.062923 0.746600 0.183800 254 254 254 -1.239800 14.644800 -6.465300 -0.751462 -0.656769 -0.062923 0.774100 0.204900 254 254 254 -0.134100 16.169500 -9.174700 -0.751462 -0.656769 -0.062923 0.732600 0.207100 254 254 254 -5.426000 21.341299 -8.132600 0.959663 0.028025 -0.279753 0.914200 0.282100 15 21 230 -5.317800 22.936800 -8.016200 0.959663 0.028025 -0.279753 0.916400 0.301600 18 0 252 -6.824000 22.193899 -3.251500 0.959663 0.028025 -0.279753 0.860400 0.301600 3 179 89 -6.827700 20.858999 -3.044800 0.959663 0.028025 -0.279753 0.858900 0.286100 0 231 44 -0.845100 29.891001 -9.498900 0.127296 -0.127838 -0.983592 0.978500 0.369500 0 253 27 -5.595300 29.761600 -8.492500 0.127296 -0.127838 -0.983592 0.927500 0.375900 0 253 27 -5.317800 22.936800 -8.016200 0.127296 -0.127838 -0.983592 0.916400 0.301600 0 253 27 -0.835600 22.853901 -8.210700 0.127296 -0.127838 -0.983592 0.964300 0.301600 0 253 27 -1.957400 20.620800 -1.211500 0.345482 0.135420 0.928603 0.804700 0.286100 254 68 73 -6.827700 20.858999 -3.044800 0.345482 0.135420 0.928603 0.858900 0.286100 232 61 86 -6.824000 22.193899 -3.251500 0.345482 0.135420 0.928603 0.860400 0.301600 185 47 122 -2.189200 21.987900 -1.483700 0.345482 0.135420 0.928603 0.804500 0.301600 254 68 73 -0.605400 59.453602 0.006800 0.276378 -0.886938 0.370075 0.558900 0.156900 254 68 73 -0.226300 59.631802 0.717000 0.276378 -0.886938 0.370075 0.537800 0.167300 254 68 73 -0.000000 59.375900 0.272700 0.276378 -0.886938 0.370075 0.533800 0.153800 254 68 73 -21.936399 43.055199 -3.733600 0.245050 -0.199318 0.948801 0.412700 0.674700 19 0 253 -23.265499 44.290199 -3.614200 0.245050 -0.199318 0.948801 0.431800 0.655600 19 0 253 -23.323000 46.228001 -3.425200 0.245050 -0.199318 0.948801 0.469900 0.655600 19 0 251 -22.348700 46.932201 -2.822400 0.245050 -0.199318 0.948801 0.469900 0.674700 20 0 250 -22.105101 44.119598 -7.074000 0.680722 -0.210597 -0.701617 0.583100 0.674700 0 253 27 -23.337700 47.268200 -6.945000 0.680722 -0.210597 -0.701617 0.530800 0.674700 0 253 27 -23.881300 46.267799 -5.995500 0.680722 -0.210597 -0.701617 0.521800 0.655600 0 253 27 -23.273100 44.479099 -6.170500 0.680722 -0.210597 -0.701617 0.556600 0.655600 0 253 27 -22.348700 46.932201 -2.822400 0.710630 0.673907 0.202126 0.469900 0.674700 18 0 249 -23.323000 46.228001 -3.425200 0.710630 0.673907 0.202126 0.469900 0.655600 18 0 251 -23.881300 46.267799 -5.995500 0.710630 0.673907 0.202126 0.521800 0.655600 12 63 193 -23.337700 47.268200 -6.945000 0.710630 0.673907 0.202126 0.530800 0.674700 2 175 92 -21.936399 43.055199 -3.733600 0.575702 -0.803125 -0.153486 0.412700 0.674700 18 0 253 -22.105101 44.119598 -7.074000 0.575702 -0.803125 -0.153486 0.362600 0.674700 18 0 253 -23.273100 44.479099 -6.170500 0.575702 -0.803125 -0.153486 0.386800 0.655600 18 0 253 -23.265499 44.290199 -3.614200 0.575702 -0.803125 -0.153486 0.431800 0.655600 18 0 253 -23.323000 46.228001 -3.425200 -0.234519 0.052147 0.970712 0.469900 0.655600 19 0 251 -23.265499 44.290199 -3.614200 -0.234519 0.052147 0.970712 0.431800 0.655600 19 0 253 -24.446100 44.099098 -3.039500 -0.234519 0.052147 0.970712 0.444100 0.624200 19 0 253 -24.935400 45.742901 -3.288800 -0.234519 0.052147 0.970712 0.469900 0.624200 20 0 251 -23.273100 44.479099 -6.170500 0.051663 0.047611 -0.997529 0.556600 0.655600 0 253 27 -23.881300 46.267799 -5.995500 0.051663 0.047611 -0.997529 0.521800 0.655600 0 253 27 -25.982700 45.641201 -5.974700 0.051663 0.047611 -0.997529 0.517100 0.624200 0 253 27 -25.718901 44.407902 -5.989100 0.051663 0.047611 -0.997529 0.533000 0.624200 0 253 27 -23.881300 46.267799 -5.995500 0.283035 0.956157 0.075198 0.521800 0.655600 64 24 202 -23.323000 46.228001 -3.425200 0.283035 0.956157 0.075198 0.469900 0.655600 19 0 251 -24.935400 45.742901 -3.288800 0.283035 0.956157 0.075198 0.469900 0.624200 20 0 251 -25.982700 45.641201 -5.974700 0.283035 0.956157 0.075198 0.517100 0.624200 65 29 197 -23.265499 44.290199 -3.614200 -0.050680 -0.993534 -0.101596 0.431800 0.655600 0 251 27 -23.273100 44.479099 -6.170500 -0.050680 -0.993534 -0.101596 0.386800 0.655600 0 253 27 -25.718901 44.407902 -5.989100 -0.050680 -0.993534 -0.101596 0.398000 0.624200 0 253 27 -24.446100 44.099098 -3.039500 -0.050680 -0.993534 -0.101596 0.444100 0.624200 53 205 30 -3.798500 31.552500 -0.388900 0.303080 0.047081 0.951802 0.257800 0.582200 57 208 35 -4.685700 36.664101 -1.616400 0.303080 0.047081 0.951802 0.239300 0.661600 0 250 28 -0.000000 37.009800 0.550700 0.303080 0.047081 0.951802 0.310700 0.661600 172 124 55 -0.000000 31.552500 0.128500 0.303080 0.047081 0.951802 0.310700 0.582200 203 101 62 -27.058001 43.733101 -1.471100 0.612973 -0.035197 0.789319 0.783900 0.527900 19 0 253 -26.775499 43.007000 -1.492900 0.612973 -0.035197 0.789319 0.799700 0.523000 19 0 253 -27.637899 42.321201 -1.984400 0.612973 -0.035197 0.789319 0.780200 0.502700 19 0 253 -28.100901 44.177299 -2.470000 0.612973 -0.035197 0.789319 0.756100 0.537200 19 0 253 -27.102699 45.320202 -5.735100 0.288380 -0.175341 -0.941325 0.706300 0.587600 0 253 27 -26.246300 42.901402 -5.383600 0.288380 -0.175341 -0.941325 0.663100 0.553800 0 252 27 -25.718901 44.407902 -5.989100 0.288380 -0.175341 -0.941325 0.674700 0.592000 0 253 27 -25.982700 45.641201 -5.974700 0.288380 -0.175341 -0.941325 0.701400 0.609900 0 253 27 -24.935400 45.742901 -3.288800 0.215944 0.976143 0.022647 0.774000 0.616500 20 0 251 -26.753901 45.398300 -2.858600 0.215944 0.976143 0.022647 0.766000 0.574200 21 0 250 -27.102699 45.320202 -5.735100 0.215944 0.976143 0.022647 0.706300 0.587600 69 22 201 -25.982700 45.641201 -5.974700 0.215944 0.976143 0.022647 0.701400 0.609900 65 29 197 -24.446100 44.099098 -3.039500 -0.806467 -0.440747 -0.394147 0.815000 0.599300 254 254 254 -25.718901 44.407902 -5.989100 -0.806467 -0.440747 -0.394147 0.885900 0.607200 254 254 254 -26.246300 42.901402 -5.383600 -0.806467 -0.440747 -0.394147 0.880100 0.569900 254 254 254 -28.380600 42.330502 -3.056600 0.840529 -0.044209 0.539960 0.741600 0.498200 19 0 253 -28.697901 44.238201 -3.477500 0.840529 -0.044209 0.539960 0.737900 0.538900 20 0 252 -28.100901 44.177299 -2.470000 0.840529 -0.044209 0.539960 0.756100 0.537200 19 0 253 -27.637899 42.321201 -1.984400 0.840529 -0.044209 0.539960 0.780200 0.502700 19 0 253 -28.380600 42.330502 -3.056600 0.979149 -0.175223 -0.102788 0.741600 0.498200 19 0 253 -28.292801 42.543098 -4.446800 0.979149 -0.175223 -0.102788 0.704200 0.514300 19 0 253 -28.543800 44.178001 -4.651400 0.979149 -0.175223 -0.102788 0.718600 0.545700 20 3 248 -28.697901 44.238201 -3.477500 0.979149 -0.175223 -0.102788 0.737900 0.538900 20 0 252 -26.753901 45.398300 -2.858600 0.560189 0.737837 0.376544 0.766000 0.574200 20 0 250 -28.100901 44.177299 -2.470000 0.560189 0.737837 0.376544 0.756100 0.537200 19 0 253 -28.697901 44.238201 -3.477500 0.560189 0.737837 0.376544 0.737900 0.538900 20 0 252 -24.935400 45.742901 -3.288800 -0.484106 0.321222 0.813915 0.774000 0.616500 20 0 251 -24.446100 44.099098 -3.039500 -0.484106 0.321222 0.813915 0.815000 0.599300 19 0 253 -25.587200 43.557701 -2.038700 -0.484106 0.321222 0.813915 0.806300 0.556900 19 0 253 -26.117701 44.487900 -2.198700 -0.484106 0.321222 0.813915 0.788200 0.565100 19 0 253 -24.446100 44.099098 -3.039500 -0.765721 -0.642695 -0.024780 0.815000 0.599300 254 68 73 -26.246300 42.901402 -5.383600 -0.765721 -0.642695 -0.024780 0.880100 0.569900 254 68 73 -25.491899 42.827301 -2.370100 -0.765721 -0.642695 -0.024780 0.813300 0.554500 254 68 73 -25.587200 43.557701 -2.038700 -0.765721 -0.642695 -0.024780 0.806300 0.556900 254 68 73 -26.753901 45.398300 -2.858600 -0.068715 0.616533 0.784324 0.766000 0.574200 21 0 250 -24.935400 45.742901 -3.288800 -0.068715 0.616533 0.784324 0.774000 0.616500 20 0 251 -26.117701 44.487900 -2.198700 -0.068715 0.616533 0.784324 0.788200 0.565100 19 0 253 -0.000000 31.552500 0.128500 0.069913 -0.031462 0.997057 0.310700 0.582200 0 253 27 -0.000000 24.132099 -0.356700 0.069913 -0.031462 0.997057 0.310700 0.472800 0 253 27 -3.463700 23.872801 -0.356700 0.069913 -0.031462 0.997057 0.261200 0.472800 0 253 27 -3.798500 31.552500 -0.388900 0.069913 -0.031462 0.997057 0.257800 0.582200 0 253 27 -2.225300 60.301201 -1.334400 0.789816 -0.226827 0.569860 0.633200 0.187400 0 253 27 -0.793500 58.611801 -0.022400 0.789816 -0.226827 0.569860 0.561500 0.129800 0 253 27 -2.043500 58.694401 -1.722000 0.789816 -0.226827 0.569860 0.633000 0.119000 0 253 27 -0.793500 58.611801 -0.022400 0.800106 -0.097243 0.591924 0.561500 0.129800 0 253 27 -0.860300 57.339199 -0.345300 0.800106 -0.097243 0.591924 0.560600 0.087800 0 253 27 -2.071800 58.080299 -1.837600 0.800106 -0.097243 0.591924 0.632000 0.089900 0 253 27 -2.043500 58.694401 -1.722000 0.800106 -0.097243 0.591924 0.633000 0.119000 0 253 27 -2.071800 58.080299 -1.837600 0.594038 -0.791272 0.144939 0.632000 0.089900 254 68 73 -0.860300 57.339199 -0.345300 0.594038 -0.791272 0.144939 0.560600 0.087800 254 68 73 -0.509500 56.862801 -2.081200 0.594038 -0.791272 0.144939 0.570500 0.026600 254 68 73 -1.480400 57.287800 -3.167400 0.594038 -0.791272 0.144939 0.631900 0.022800 254 68 73 -0.179900 61.274700 0.058500 0.090663 0.188705 0.977840 0.542100 0.223900 0 254 27 -0.785400 61.539799 -0.048800 0.090663 0.188705 0.977840 0.562200 0.247600 0 254 27 -0.000000 61.912998 -0.048000 0.090663 0.188705 0.977840 0.533800 0.254400 0 254 27 -15.884600 46.520500 -7.855800 0.098387 0.080586 -0.991880 0.590800 0.782100 0 253 27 -14.885000 46.974701 -7.946000 0.098387 0.080586 -0.991880 0.590800 0.803100 0 253 27 -16.136200 50.023998 -7.546200 0.098387 0.080586 -0.991880 0.529500 0.803100 0 253 27 -17.208200 49.477699 -7.512200 0.098387 0.080586 -0.991880 0.531700 0.782100 0 253 27 -15.636800 49.715099 -4.015700 0.436830 0.889212 0.135946 0.469900 0.803100 1 215 59 -16.810101 49.139900 -3.928800 0.436830 0.889212 0.135946 0.469900 0.782100 5 158 110 -17.208200 49.477699 -7.512200 0.436830 0.889212 0.135946 0.531700 0.782100 0 227 47 -16.136200 50.023998 -7.546200 0.436830 0.889212 0.135946 0.529500 0.803100 0 244 34 -16.192200 44.960400 -4.877100 -0.435886 -0.826304 -0.356686 0.398600 0.782100 254 252 252 -14.977100 45.689201 -4.821000 -0.435886 -0.826304 -0.356686 0.400900 0.803100 254 202 204 -14.885000 46.974701 -7.946000 -0.435886 -0.826304 -0.356686 0.347800 0.803100 254 123 127 -15.884600 46.520500 -7.855800 -0.435886 -0.826304 -0.356686 0.347800 0.782100 254 212 213 -16.810101 49.139900 -3.928800 -0.116417 -0.190205 0.974818 0.469900 0.782100 35 133 112 -15.636800 49.715099 -4.015700 -0.116417 -0.190205 0.974818 0.469900 0.803100 25 190 59 -14.977100 45.689201 -4.821000 -0.116417 -0.190205 0.974818 0.400900 0.803100 18 0 253 -16.192200 44.960400 -4.877100 -0.116417 -0.190205 0.974818 0.398600 0.782100 18 0 253 -13.779500 47.417198 -7.715300 0.030432 0.115440 -0.992848 0.590800 0.828100 12 79 181 -8.756500 49.321098 -7.632900 0.030432 0.115440 -0.992848 0.590800 0.916400 0 250 29 -9.827700 52.989700 -7.188500 0.030432 0.115440 -0.992848 0.526400 0.916400 0 253 27 -14.989100 50.565300 -7.297200 0.030432 0.115440 -0.992848 0.526200 0.828100 0 249 29 -15.636800 49.715099 -4.015700 0.447311 0.883265 0.140554 0.469900 0.803100 1 215 59 -16.136200 50.023998 -7.546200 0.447311 0.883265 0.140554 0.529500 0.803100 0 244 34 -14.989100 50.565300 -7.297200 0.447311 0.883265 0.140554 0.526200 0.828100 0 249 29 -13.779500 47.417198 -7.715300 -0.409629 -0.847844 -0.336696 0.347800 0.823100 254 70 75 -14.885000 46.974701 -7.946000 -0.409629 -0.847844 -0.336696 0.347800 0.803100 254 123 127 -14.977100 45.689201 -4.821000 -0.409629 -0.847844 -0.336696 0.400900 0.803100 254 202 204 -1.239800 14.644800 -6.465300 -0.983473 -0.143727 0.110102 0.774100 0.204900 254 254 254 -1.766900 13.754900 -2.918700 -0.983473 -0.143727 0.110102 0.809900 0.215800 254 254 254 -1.716700 14.450400 -2.459200 -0.983473 -0.143727 0.110102 0.808600 0.236100 254 254 254 -26.117701 44.487900 -2.198700 -0.374471 0.258120 0.890587 0.788200 0.565100 19 0 253 -25.587200 43.557701 -2.038700 -0.374471 0.258120 0.890587 0.806300 0.556900 19 0 253 -26.775499 43.007000 -1.492900 -0.374471 0.258120 0.890587 0.799700 0.523000 19 0 253 -27.058001 43.733101 -1.471100 -0.374471 0.258120 0.890587 0.783900 0.527900 19 0 253 -25.587200 43.557701 -2.038700 -0.386633 -0.610879 0.690899 0.806300 0.556900 19 0 253 -25.491899 42.827301 -2.370100 -0.386633 -0.610879 0.690899 0.813300 0.554500 19 0 253 -27.637899 42.321201 -1.984400 -0.386633 -0.610879 0.690899 0.816200 0.507300 19 0 253 -26.775499 43.007000 -1.492900 -0.386633 -0.610879 0.690899 0.799700 0.523000 19 0 253 -26.117701 44.487900 -2.198700 0.202601 0.798645 0.566673 0.788200 0.565100 19 0 253 -27.058001 43.733101 -1.471100 0.202601 0.798645 0.566673 0.783900 0.527900 19 0 253 -28.100901 44.177299 -2.470000 0.202601 0.798645 0.566673 0.756100 0.537200 19 0 253 -8.184300 53.108700 -3.320400 0.347207 -0.172872 0.921717 0.469900 0.942000 254 68 73 -6.624100 53.529800 -2.653700 0.347207 -0.172872 0.921717 0.469900 0.977800 254 68 73 -7.813100 49.342701 -3.886900 0.347207 -0.172872 0.921717 0.407700 0.942000 254 68 73 -8.747800 53.770199 -7.353300 0.055764 0.062731 -0.996471 0.528600 0.942000 0 253 27 -9.827700 52.989700 -7.188500 0.055764 0.062731 -0.996471 0.526400 0.916400 0 253 27 -8.756500 49.321098 -7.632900 0.055764 0.062731 -0.996471 0.590800 0.916400 0 253 27 -6.775800 50.206501 -7.534500 0.055764 0.062731 -0.996471 0.590800 0.942000 0 253 27 -28.543800 44.178001 -4.651400 0.562493 0.826801 -0.001192 0.718600 0.545700 20 3 248 -27.102699 45.320202 -5.735100 0.562493 0.826801 -0.001192 0.706300 0.587600 12 64 193 -26.753901 45.398300 -2.858600 0.562493 0.826801 -0.001192 0.766000 0.574200 20 0 250 -28.697901 44.238201 -3.477500 0.562493 0.826801 -0.001192 0.737900 0.538900 20 0 252 -26.246300 42.901402 -5.383600 -0.106461 -0.983873 -0.143736 0.880100 0.569900 0 252 27 -28.292801 42.543098 -4.446800 -0.106461 -0.983873 -0.143736 0.879400 0.523100 87 180 37 -28.380600 42.330502 -3.056600 -0.106461 -0.983873 -0.143736 0.853500 0.507000 242 73 67 -28.100901 44.177299 -2.470000 0.192584 0.484112 0.853550 0.756100 0.537200 19 0 253 -26.753901 45.398300 -2.858600 0.192584 0.484112 0.853550 0.766000 0.574200 21 0 250 -26.117701 44.487900 -2.198700 0.192584 0.484112 0.853550 0.788200 0.565100 19 0 253 -1.712600 0.024900 -9.195700 -0.013475 -0.999909 -0.000374 0.765100 0.147100 19 0 253 -3.252600 0.001600 -8.591000 -0.013475 -0.999909 -0.000374 0.751000 0.138000 19 0 253 -5.176800 -0.025000 -0.598300 -0.013475 -0.999909 -0.000374 0.748300 0.055100 18 0 253 -3.769300 -0.009000 1.132900 -0.013475 -0.999909 -0.000374 0.765800 0.040900 18 0 253 -0.000000 61.912998 -0.048000 0.158526 0.331625 0.929997 0.533800 0.254400 0 254 27 -0.785400 61.539799 -0.048800 0.158526 0.331625 0.929997 0.562200 0.247600 0 254 27 -0.000000 62.775902 -0.355700 0.158526 0.331625 0.929997 0.533900 0.286800 0 254 27 -0.340300 31.400700 -9.928000 -0.943868 -0.327610 -0.042246 0.694900 0.384200 254 254 254 -0.845100 29.891001 -9.498900 -0.943868 -0.327610 -0.042246 0.702700 0.368200 254 254 254 -0.425600 30.069099 -1.507500 -0.943868 -0.327610 -0.042246 0.785600 0.393300 254 254 254 -0.509500 56.862801 -2.081200 0.000000 -0.045410 0.998968 0.308000 0.953500 254 127 129 -0.509500 56.862801 -2.081200 0.098448 -0.971038 0.217700 0.570500 0.026600 0 253 27 -0.860300 57.339199 -0.345300 0.098448 -0.971038 0.217700 0.560600 0.087800 0 253 27 -0.000000 57.320400 0.190300 0.098448 -0.971038 0.217700 0.533800 0.095300 0 253 27 -0.000000 56.862801 -2.081200 0.098448 -0.971038 0.217700 0.533800 0.019000 0 253 27 -5.598500 31.822901 -1.404300 0.881264 0.021588 0.472131 0.847900 0.413200 0 240 37 -6.824000 22.193899 -3.251500 0.881264 0.021588 0.472131 0.860400 0.301600 3 179 89 -7.453900 29.910801 -4.780100 0.881264 0.021588 0.472131 0.884800 0.385400 18 0 251 -6.824000 22.193899 -3.251500 0.921284 -0.108958 -0.373315 0.860400 0.301600 3 179 89 -5.317800 22.936800 -8.016200 0.921284 -0.108958 -0.373315 0.916400 0.301600 18 0 252 -5.595300 29.761600 -8.492500 0.921284 -0.108958 -0.373315 0.927500 0.375900 18 0 253 -7.453900 29.910801 -4.780100 0.921284 -0.108958 -0.373315 0.884800 0.385400 18 0 251 -3.798500 31.552500 -0.388900 0.401815 -0.146587 0.903912 0.824000 0.411400 0 253 27 -2.189200 21.987900 -1.483700 0.401815 -0.146587 0.903912 0.804500 0.301600 0 253 27 -6.824000 22.193899 -3.251500 0.401815 -0.146587 0.903912 0.860400 0.301600 3 179 89 -5.598500 31.822901 -1.404300 0.401815 -0.146587 0.903912 0.847900 0.413200 0 240 37 -0.340300 31.400700 -9.928000 0.230509 -0.107925 -0.967067 0.986800 0.385200 0 253 27 -4.970000 33.082802 -8.871900 0.230509 -0.107925 -0.967067 0.938900 0.409500 0 253 27 -5.595300 29.761600 -8.492500 0.230509 -0.107925 -0.967067 0.927500 0.375900 0 253 27 -0.845100 29.891001 -9.498900 0.230509 -0.107925 -0.967067 0.978500 0.369500 0 253 27 -0.835600 22.853901 -8.210700 -0.992236 -0.110106 0.057826 0.728900 0.301600 254 254 254 -2.189200 21.987900 -1.483700 -0.992236 -0.110106 0.057826 0.804500 0.301600 254 254 254 -0.425600 30.069099 -1.507500 -0.992236 -0.110106 0.057826 0.785600 0.393300 254 254 254 -0.845100 29.891001 -9.498900 -0.992236 -0.110106 0.057826 0.702700 0.368200 254 254 254 -2.162800 35.743500 -9.599900 0.324673 0.084802 -0.942017 0.972400 0.433600 0 253 27 -5.283200 35.952900 -7.814600 0.324673 0.084802 -0.942017 0.933900 0.441300 0 253 27 -4.970000 33.082802 -8.871900 0.324673 0.084802 -0.942017 0.938900 0.409500 0 253 27 -0.340300 31.400700 -9.928000 0.324673 0.084802 -0.942017 0.986800 0.385200 0 253 27 -5.283200 35.952900 -7.814600 0.889642 0.311183 -0.334218 0.142200 0.631800 18 1 249 -5.919200 37.619099 -4.570300 0.889642 0.311183 -0.334218 0.183400 0.661600 9 98 162 -6.542300 35.480598 -4.902800 0.889642 0.311183 -0.334218 0.182500 0.631800 15 32 221 -5.919200 37.619099 -4.570300 0.882631 0.186784 0.431364 0.183400 0.661600 9 98 162 -4.685700 36.664101 -1.616400 0.882631 0.186784 0.431364 0.239300 0.661600 0 250 28 -5.598500 31.822901 -1.404300 0.882631 0.186784 0.431364 0.231700 0.582200 0 240 37 -6.542300 35.480598 -4.902800 0.882631 0.186784 0.431364 0.182500 0.631800 15 32 221 -0.474100 61.294899 -0.607800 0.490764 0.255871 0.832875 0.567800 0.227200 254 68 73 -0.596000 60.268700 -0.255900 0.490764 0.255871 0.832875 0.565100 0.185300 254 68 73 -2.225300 60.301201 -1.334400 0.490764 0.255871 0.832875 0.633200 0.187400 254 68 73 -1.340700 61.343498 -1.024900 0.490764 0.255871 0.832875 0.599900 0.231700 254 68 73 -1.340700 61.343498 -1.024900 0.199083 -0.932669 0.300824 0.599900 0.231700 0 253 27 -1.792100 61.563202 -0.648200 0.199083 -0.932669 0.300824 0.603400 0.250800 0 253 27 -0.785400 61.539799 -0.048800 0.199083 -0.932669 0.300824 0.562200 0.247600 0 253 27 -0.474100 61.294899 -0.607800 0.199083 -0.932669 0.300824 0.567800 0.227200 0 253 27 -0.000000 45.235802 -8.516300 0.205813 0.023108 -0.978318 0.061600 0.762900 0 253 27 -5.495700 46.043098 -6.732400 0.205813 0.023108 -0.978318 0.140100 0.788400 0 252 27 -2.827600 38.171799 -8.088300 0.205813 0.023108 -0.978318 0.114700 0.661600 8 119 142 -0.000000 38.221600 -8.073300 0.205813 0.023108 -0.978318 0.073400 0.661600 0 240 38 -0.425600 30.069099 -1.507500 -0.290133 -0.060504 0.955072 0.785600 0.393300 254 254 254 -2.189200 21.987900 -1.483700 -0.290133 -0.060504 0.955072 0.804500 0.301600 254 254 254 -3.798500 31.552500 -0.388900 -0.290133 -0.060504 0.955072 0.824000 0.411400 254 254 254 -0.000000 31.547001 -9.939100 -0.348901 -0.925923 -0.144686 0.694200 0.388200 254 68 73 -0.340300 31.400700 -9.928000 -0.348901 -0.925923 -0.144686 0.694900 0.384200 254 68 73 -0.425600 30.069099 -1.507500 -0.348901 -0.925923 -0.144686 0.785600 0.393300 254 68 73 -0.000000 30.215401 -1.522000 -0.348901 -0.925923 -0.144686 0.785000 0.398100 254 68 73 -21.061199 44.183601 -7.611200 0.028361 0.039319 -0.998824 0.590800 0.698800 18 0 253 -15.884600 46.520500 -7.855800 0.028361 0.039319 -0.998824 0.590800 0.782100 17 5 246 -17.208200 49.477699 -7.512200 0.028361 0.039319 -0.998824 0.531700 0.782100 0 227 47 -22.585199 48.327702 -7.594400 0.028361 0.039319 -0.998824 0.533600 0.698800 0 239 38 -22.348700 46.932201 -2.822400 0.723103 0.652497 0.226650 0.469900 0.674700 18 0 249 -23.337700 47.268200 -6.945000 0.723103 0.652497 0.226650 0.530800 0.674700 2 175 92 -22.585199 48.327702 -7.594400 0.723103 0.652497 0.226650 0.533600 0.698800 0 239 38 -21.061199 44.183601 -7.611200 0.095048 -0.949863 -0.297868 0.347800 0.693400 0 253 27 -22.105101 44.119598 -7.074000 0.095048 -0.949863 -0.297868 0.362600 0.674700 0 253 27 -21.936399 43.055199 -3.733600 0.095048 -0.949863 -0.297868 0.412700 0.674700 0 253 27 -0.340300 31.400700 -9.928000 0.010374 0.075249 -0.997111 0.986800 0.385200 0 253 27 -0.000000 31.547001 -9.939100 0.010374 0.075249 -0.997111 0.990600 0.386300 0 253 27 -0.000000 35.795200 -9.599900 0.010374 0.075249 -0.997111 0.995500 0.431600 0 253 27 -2.162800 35.743500 -9.599900 0.010374 0.075249 -0.997111 0.972400 0.433600 0 253 27 -5.919200 37.619099 -4.570300 0.561685 0.544798 -0.622660 0.183400 0.661600 9 98 162 -5.283200 35.952900 -7.814600 0.561685 0.544798 -0.622660 0.142200 0.631800 18 1 249 -2.162800 35.743500 -9.599900 0.561685 0.544798 -0.622660 0.096700 0.631800 16 28 225 -2.827600 38.171799 -8.088300 0.561685 0.544798 -0.622660 0.114700 0.661600 8 119 142 -28.543800 44.178001 -4.651400 0.410462 -0.233070 -0.881589 0.718600 0.545700 77 187 34 -28.292801 42.543098 -4.446800 0.410462 -0.233070 -0.881589 0.704200 0.514300 87 180 37 -26.246300 42.901402 -5.383600 0.410462 -0.233070 -0.881589 0.663100 0.553800 0 252 27 -27.102699 45.320202 -5.735100 0.410462 -0.233070 -0.881589 0.706300 0.587600 0 253 27 -25.491899 42.827301 -2.370100 -0.201709 -0.968181 -0.148119 0.813300 0.554500 190 254 195 -28.380600 42.330502 -3.056600 -0.201709 -0.968181 -0.148119 0.853500 0.507000 242 254 242 -27.637899 42.321201 -1.984400 -0.201709 -0.968181 -0.148119 0.816200 0.507300 254 254 254 -26.246300 42.901402 -5.383600 -0.185319 -0.980147 -0.070494 0.880100 0.569900 0 254 27 -28.380600 42.330502 -3.056600 -0.185319 -0.980147 -0.070494 0.853500 0.507000 242 254 242 -25.491899 42.827301 -2.370100 -0.185319 -0.980147 -0.070494 0.813300 0.554500 190 254 195 -2.162800 35.743500 -9.599900 0.008224 0.529675 -0.848161 0.096700 0.631800 0 253 27 -0.000000 35.795200 -9.599900 0.008224 0.529675 -0.848161 0.068300 0.631800 0 253 27 -0.000000 38.221600 -8.073300 0.008224 0.529675 -0.848161 0.073400 0.661600 0 253 27 -2.827600 38.171799 -8.088300 0.008224 0.529675 -0.848161 0.114700 0.661600 0 253 27 -0.706900 62.538601 -0.289700 0.498102 0.211804 0.840853 0.409100 0.538600 0 253 27 -1.838200 62.255798 -0.802600 0.498102 0.211804 0.840853 0.430000 0.507000 0 253 27 -1.901400 63.532299 -1.247600 0.498102 0.211804 0.840853 0.451500 0.531400 0 253 27 -0.672300 63.485901 -0.421800 0.498102 0.211804 0.840853 0.426300 0.552700 0 253 27 -1.901400 63.532299 -1.247600 0.915374 0.111541 0.386845 0.451500 0.531400 0 253 27 -1.838200 62.255798 -0.802600 0.915374 0.111541 0.386845 0.430000 0.507000 0 253 27 -3.194200 60.597198 -3.460400 0.915374 0.111541 0.386845 0.492000 0.451400 0 253 27 -2.758700 63.532299 -3.348800 0.915374 0.111541 0.386845 0.499700 0.518700 0 253 27 -2.758700 63.532299 -3.348800 0.984906 0.142377 0.098436 0.499700 0.518700 0 253 27 -3.194200 60.597198 -3.460400 0.984906 0.142377 0.098436 0.492000 0.451400 0 253 27 -3.446000 60.597198 -5.980300 0.984906 0.142377 0.098436 0.552100 0.445900 0 253 27 -3.010600 63.532299 -5.868700 0.984906 0.142377 0.098436 0.554200 0.511800 0 253 27 -3.194200 60.597198 -3.460400 0.917633 0.222238 0.329485 0.492000 0.451400 0 253 27 -1.838200 62.255798 -0.802600 0.917633 0.222238 0.329485 0.430000 0.507000 0 253 27 -2.336800 60.597198 -1.072500 0.917633 0.222238 0.329485 0.434100 0.460700 0 253 27 -2.130500 53.628601 -1.359200 0.842435 0.033555 0.537753 0.416700 0.297200 0 253 27 -4.088800 54.879799 -3.460400 0.842435 0.033555 0.537753 0.486800 0.316000 0 253 27 -3.194200 60.597198 -3.460400 0.842435 0.033555 0.537753 0.492000 0.451400 0 253 27 -2.336800 60.597198 -1.072500 0.842435 0.033555 0.537753 0.434100 0.460700 0 253 27 -4.088800 54.879799 -3.460400 0.982155 0.156435 0.104398 0.486800 0.316000 0 253 27 -4.340700 55.234299 -6.210400 0.982155 0.156435 0.104398 0.542400 0.331500 0 254 27 -3.446000 60.597198 -5.980300 0.982155 0.156435 0.104398 0.552100 0.445900 0 253 27 -3.194200 60.597198 -3.460400 0.982155 0.156435 0.104398 0.492000 0.451400 0 253 27 -3.010600 63.532299 -5.868700 0.839145 0.204241 -0.504105 0.554200 0.511800 0 253 27 -3.446000 60.597198 -5.980300 0.839145 0.204241 -0.504105 0.552100 0.445900 0 253 27 -2.517200 60.597198 -7.879200 0.839145 0.204241 -0.504105 0.601000 0.450200 0 253 27 -1.932100 63.532299 -7.311200 0.839145 0.204241 -0.504105 0.591100 0.519300 0 253 27 -3.446000 60.597198 -5.980300 0.847590 0.127945 -0.514996 0.552100 0.445900 0 253 27 -4.340700 55.234299 -6.210400 0.847590 0.127945 -0.514996 0.542400 0.331500 0 254 27 -2.990300 54.496300 -8.246000 0.847590 0.127945 -0.514996 0.608400 0.297700 0 253 27 -2.517200 60.597198 -7.879200 0.847590 0.127945 -0.514996 0.601000 0.450200 0 253 27 -1.932100 63.532299 -7.311200 0.365116 0.222173 -0.904063 0.591100 0.519300 0 253 27 -2.517200 60.597198 -7.879200 0.365116 0.222173 -0.904063 0.601000 0.450200 0 253 27 -0.000000 60.597198 -8.812800 0.365116 0.222173 -0.904063 0.661800 0.464200 0 253 27 -0.000000 63.532299 -8.174500 0.365116 0.222173 -0.904063 0.634800 0.537700 0 253 27 -2.990300 54.496300 -8.246000 0.255106 0.035267 -0.966270 0.608400 0.297700 0 253 27 -0.000000 54.050800 -8.782700 0.255106 0.035267 -0.966270 0.682300 0.308600 0 253 27 -0.000000 60.597198 -8.812800 0.255106 0.035267 -0.966270 0.661800 0.464200 0 253 27 -2.517200 60.597198 -7.879200 0.255106 0.035267 -0.966270 0.601000 0.450200 0 253 27 -0.672300 63.485901 -0.421800 0.422112 0.618267 0.662999 0.426300 0.552700 0 253 27 -1.901400 63.532299 -1.247600 0.422112 0.618267 0.662999 0.451500 0.531400 0 253 27 -1.171400 65.057899 -2.205500 0.422112 0.618267 0.662999 0.482000 0.564300 0 253 27 -1.901400 63.532299 -1.247600 0.756752 0.608663 0.238446 0.451500 0.531400 0 253 27 -2.758700 63.532299 -3.348800 0.756752 0.608663 0.238446 0.499700 0.518700 0 253 27 -1.795600 65.057899 -4.806100 0.756752 0.608663 0.238446 0.538600 0.556700 0 253 27 -1.171400 65.057899 -2.205500 0.756752 0.608663 0.238446 0.482000 0.564300 0 253 27 -2.758700 63.532299 -3.348800 0.806293 0.585999 0.080601 0.499700 0.518700 0 253 27 -3.010600 63.532299 -5.868700 0.806293 0.585999 0.080601 0.554200 0.511800 0 253 27 -1.795600 65.057899 -4.806100 0.806293 0.585999 0.080601 0.538600 0.556700 0 253 27 -3.010600 63.532299 -5.868700 0.468822 0.765524 -0.440657 0.554200 0.511800 0 253 27 -1.932100 63.532299 -7.311200 0.468822 0.765524 -0.440657 0.591100 0.519300 0 254 27 -0.000000 65.057899 -6.421400 0.468822 0.765524 -0.440657 0.588900 0.582100 0 253 27 -1.795600 65.057899 -4.806100 0.468822 0.765524 -0.440657 0.538600 0.556700 0 253 27 -1.932100 63.532299 -7.311200 0.281463 0.723860 -0.629925 0.591100 0.519300 0 254 27 -0.000000 63.532299 -8.174500 0.281463 0.723860 -0.629925 0.634800 0.537700 0 253 27 -0.000000 65.057899 -6.421400 0.281463 0.723860 -0.629925 0.588900 0.582100 0 253 27 -1.171400 65.057899 -2.205500 0.296421 0.952404 0.071148 0.482000 0.564300 0 253 27 -1.795600 65.057899 -4.806100 0.296421 0.952404 0.071148 0.538600 0.556700 0 253 27 -0.000000 65.560898 -4.058400 0.296421 0.952404 0.071148 0.523700 0.603300 0 253 27 -1.795600 65.057899 -4.806100 0.184093 0.961370 -0.204641 0.538600 0.556700 0 254 27 -0.000000 65.057899 -6.421400 0.184093 0.961370 -0.204641 0.588900 0.582100 0 254 27 -0.000000 65.560898 -4.058400 0.184093 0.961370 -0.204641 0.523700 0.603300 0 254 27 -0.672300 63.485901 -0.421800 0.000000 0.750225 0.661183 0.426300 0.552700 0 254 27 -1.171400 65.057899 -2.205500 0.000000 0.750225 0.661183 0.482000 0.564300 0 254 27 --1.171400 65.057899 -2.205500 0.000000 0.750225 0.661183 0.466700 0.607600 0 254 27 --0.672300 63.485901 -0.421800 0.000000 0.750225 0.661183 0.416100 0.581700 0 254 27 -0.706900 62.538601 -0.289700 0.204667 0.142518 0.968401 0.409100 0.538600 0 254 27 -0.672300 63.485901 -0.421800 0.204667 0.142518 0.968401 0.426300 0.552700 0 254 27 -0.000000 62.538601 -0.140300 0.204667 0.142518 0.968401 0.398200 0.559100 0 254 27 -0.672300 63.485901 -0.421800 -0.000000 0.284850 0.958572 0.426300 0.552700 0 254 27 --0.672300 63.485901 -0.421800 -0.000000 0.284850 0.958572 0.416100 0.581700 0 254 27 -0.000000 62.538601 -0.140300 -0.000000 0.284850 0.958572 0.398200 0.559100 0 254 27 -2.130500 53.628601 -1.359200 -0.899990 0.017690 0.435552 0.416700 0.297200 0 253 27 -2.336800 60.597198 -1.072500 -0.899990 0.017690 0.435552 0.434100 0.460700 0 253 27 -1.393700 60.597198 -3.164700 -0.899990 0.017690 0.435552 0.380300 0.463400 0 253 27 -1.187300 53.628601 -3.164700 -0.899990 0.017690 0.435552 0.369000 0.300200 0 253 27 --0.706900 62.538601 -0.289700 -0.498102 0.211804 0.840853 0.409100 0.538600 0 254 27 --0.672300 63.485901 -0.421800 -0.498102 0.211804 0.840853 0.426300 0.552800 0 254 27 --1.901400 63.532299 -1.247600 -0.498102 0.211804 0.840853 0.451500 0.531500 0 254 27 --1.838200 62.255798 -0.802600 -0.498102 0.211804 0.840853 0.430000 0.507100 0 254 27 --1.901400 63.532299 -1.247600 -0.915374 0.111541 0.386845 0.451500 0.531500 0 254 27 --2.758700 63.532299 -3.348800 -0.915374 0.111541 0.386845 0.499700 0.518800 0 254 27 --3.194200 60.597198 -3.460400 -0.915374 0.111541 0.386845 0.492000 0.451500 0 254 27 --1.838200 62.255798 -0.802600 -0.915374 0.111541 0.386845 0.430000 0.507100 0 254 27 --2.758700 63.532299 -3.348800 -0.984906 0.142377 0.098436 0.499700 0.518800 0 254 27 --3.010600 63.532299 -5.868700 -0.984906 0.142377 0.098436 0.554200 0.511900 0 254 27 --3.446000 60.597198 -5.980300 -0.984906 0.142377 0.098436 0.552100 0.445900 0 254 27 --3.194200 60.597198 -3.460400 -0.984906 0.142377 0.098436 0.492000 0.451500 0 254 27 --3.194200 60.597198 -3.460400 -0.917633 0.222238 0.329485 0.492000 0.451500 0 254 27 --2.336800 60.597198 -1.072500 -0.917633 0.222238 0.329485 0.434000 0.460800 0 254 27 --1.838200 62.255798 -0.802600 -0.917633 0.222238 0.329485 0.430000 0.507100 0 254 27 --2.130500 53.628601 -1.359200 -0.842435 0.033555 0.537753 0.416600 0.297300 0 253 27 --2.336800 60.597198 -1.072500 -0.842435 0.033555 0.537753 0.434000 0.460800 0 254 27 --3.194200 60.597198 -3.460400 -0.842435 0.033555 0.537753 0.492000 0.451500 0 254 27 --4.088800 54.879799 -3.460400 -0.842435 0.033555 0.537753 0.486700 0.316100 0 253 27 --4.088800 54.879799 -3.460400 -0.982155 0.156435 0.104398 0.486700 0.316100 0 253 27 --3.194200 60.597198 -3.460400 -0.982155 0.156435 0.104398 0.492000 0.451500 0 253 27 --3.446000 60.597198 -5.980300 -0.982155 0.156435 0.104398 0.552100 0.445900 0 253 27 --4.340700 55.234299 -6.210400 -0.982155 0.156435 0.104398 0.542400 0.331500 0 254 27 --3.010600 63.532299 -5.868700 -0.839145 0.204241 -0.504105 0.554200 0.511900 0 254 27 --1.932100 63.532299 -7.311200 -0.839145 0.204241 -0.504105 0.591100 0.519300 0 254 27 --2.517200 60.597198 -7.879200 -0.839145 0.204241 -0.504105 0.601000 0.450300 0 254 27 --3.446000 60.597198 -5.980300 -0.839145 0.204241 -0.504105 0.552100 0.445900 0 254 27 --3.446000 60.597198 -5.980300 -0.847590 0.127945 -0.514996 0.552100 0.445900 0 254 27 --2.517200 60.597198 -7.879200 -0.847590 0.127945 -0.514996 0.601000 0.450300 0 254 27 --2.990300 54.496300 -8.246000 -0.847590 0.127945 -0.514996 0.608300 0.297700 0 254 27 --4.340700 55.234299 -6.210400 -0.847590 0.127945 -0.514996 0.542400 0.331500 0 254 27 --1.932100 63.532299 -7.311200 -0.365116 0.222173 -0.904063 0.591100 0.519300 0 254 27 -0.000000 63.532299 -8.174500 -0.365116 0.222173 -0.904063 0.634800 0.537700 0 254 27 -0.000000 60.597198 -8.812800 -0.365116 0.222173 -0.904063 0.661800 0.464200 0 254 27 --2.517200 60.597198 -7.879200 -0.365116 0.222173 -0.904063 0.601000 0.450300 0 254 27 --2.990300 54.496300 -8.246000 -0.255106 0.035267 -0.966270 0.608300 0.297700 0 254 27 --2.517200 60.597198 -7.879200 -0.255106 0.035267 -0.966270 0.601000 0.450300 0 254 27 -0.000000 60.597198 -8.812800 -0.255106 0.035267 -0.966270 0.661800 0.464200 0 254 27 -0.000000 54.050800 -8.782700 -0.255106 0.035267 -0.966270 0.682300 0.308600 0 254 27 --0.672300 63.485901 -0.421800 -0.422112 0.618267 0.662999 0.426300 0.552800 0 254 27 --1.171400 65.057899 -2.205500 -0.422112 0.618267 0.662999 0.482000 0.564400 0 254 27 --1.901400 63.532299 -1.247600 -0.422112 0.618267 0.662999 0.451500 0.531500 0 254 27 --1.901400 63.532299 -1.247600 -0.756752 0.608663 0.238446 0.451500 0.531500 0 254 27 --1.171400 65.057899 -2.205500 -0.756752 0.608663 0.238446 0.482000 0.564400 0 254 27 --1.795600 65.057899 -4.806100 -0.756752 0.608663 0.238446 0.538600 0.556700 0 254 27 --2.758700 63.532299 -3.348800 -0.756752 0.608663 0.238446 0.499700 0.518800 0 254 27 --2.758700 63.532299 -3.348800 -0.806293 0.585999 0.080601 0.499700 0.518800 0 254 27 --1.795600 65.057899 -4.806100 -0.806293 0.585999 0.080601 0.538600 0.556700 0 254 27 --3.010600 63.532299 -5.868700 -0.806293 0.585999 0.080601 0.554200 0.511900 0 254 27 --3.010600 63.532299 -5.868700 -0.468822 0.765524 -0.440657 0.554200 0.511900 0 254 27 --1.795600 65.057899 -4.806100 -0.468822 0.765524 -0.440657 0.538600 0.556700 0 254 27 -0.000000 65.057899 -6.421400 -0.468822 0.765524 -0.440657 0.589000 0.582100 0 254 27 --1.932100 63.532299 -7.311200 -0.468822 0.765524 -0.440657 0.591100 0.519300 0 254 27 --1.932100 63.532299 -7.311200 -0.281463 0.723860 -0.629925 0.591100 0.519300 0 254 27 -0.000000 65.057899 -6.421400 -0.281463 0.723860 -0.629925 0.589000 0.582100 0 254 27 -0.000000 63.532299 -8.174500 -0.281463 0.723860 -0.629925 0.634800 0.537700 0 254 27 --1.171400 65.057899 -2.205500 -0.296421 0.952404 0.071148 0.482000 0.564400 0 254 27 -0.000000 65.560898 -4.058400 -0.296421 0.952404 0.071148 0.523700 0.603400 0 254 27 --1.795600 65.057899 -4.806100 -0.296421 0.952404 0.071148 0.538600 0.556700 0 254 27 --1.795600 65.057899 -4.806100 -0.184093 0.961370 -0.204641 0.538600 0.556700 0 254 27 -0.000000 65.560898 -4.058400 -0.184093 0.961370 -0.204641 0.523700 0.603400 0 254 27 -0.000000 65.057899 -6.421400 -0.184093 0.961370 -0.204641 0.589000 0.582100 0 254 27 --1.171400 65.057899 -2.205500 0.000000 0.965072 0.261984 0.466700 0.607600 0 254 27 -1.171400 65.057899 -2.205500 0.000000 0.965072 0.261984 0.482000 0.564300 0 254 27 -0.000000 65.560898 -4.058400 0.000000 0.965072 0.261984 0.523700 0.603300 0 254 27 --0.706900 62.538601 -0.289700 -0.204667 0.142518 0.968401 0.409100 0.538600 0 254 27 -0.000000 62.538601 -0.140300 -0.204667 0.142518 0.968401 0.398200 0.559200 0 254 27 --0.672300 63.485901 -0.421800 -0.204667 0.142518 0.968401 0.426300 0.552800 0 254 27 --2.130500 53.628601 -1.359200 0.899990 0.017690 0.435552 0.416600 0.297300 164 133 56 --1.187300 53.628601 -3.164700 0.899990 0.017690 0.435552 0.369000 0.300300 209 100 64 --1.393700 60.597198 -3.164700 0.899990 0.017690 0.435552 0.380200 0.463500 254 254 254 --2.336800 60.597198 -1.072500 0.899990 0.017690 0.435552 0.434000 0.460800 254 254 254 -8.704300 24.905701 -6.036500 0.233777 0.158187 -0.959336 0.967100 0.466200 0 253 27 -7.984800 25.127701 -6.177400 0.233777 0.158187 -0.959336 0.966400 0.464600 0 253 27 -7.649900 27.558001 -5.856100 0.233777 0.158187 -0.959336 0.993500 0.506600 0 253 27 -8.503900 27.435900 -5.670300 0.233777 0.158187 -0.959336 0.976600 0.507100 0 253 27 -6.463600 36.223400 -3.704900 0.910800 0.108730 0.398273 0.962000 0.710700 9 100 160 -5.778000 35.994701 -1.773100 0.910800 0.108730 0.398273 0.922200 0.717000 0 231 44 -7.451900 27.210300 -3.504400 0.910800 0.108730 0.398273 0.930000 0.516400 18 2 248 -8.503900 27.435900 -5.670300 0.910800 0.108730 0.398273 0.976600 0.507100 18 0 253 -5.115000 35.782600 -2.051700 -0.272059 -0.232411 0.933793 0.916000 0.725700 0 241 37 -6.597900 27.332300 -3.690200 -0.272059 -0.232411 0.933793 0.913000 0.515500 16 16 234 -7.451900 27.210300 -3.504400 -0.272059 -0.232411 0.933793 0.930000 0.516400 18 2 248 -5.778000 35.994701 -1.773100 -0.272059 -0.232411 0.933793 0.922200 0.717000 0 231 44 -5.743400 36.019600 -3.995900 0.266707 0.266447 -0.926215 0.971100 0.718900 0 253 27 -6.463600 36.223400 -3.704900 0.266707 0.266447 -0.926215 0.962000 0.710700 0 253 27 -8.503900 27.435900 -5.670300 0.266707 0.266447 -0.926215 0.976600 0.507100 0 253 27 -7.649900 27.558001 -5.856100 0.266707 0.266447 -0.926215 0.993500 0.506600 0 253 27 -7.451900 27.210300 -3.504400 -0.285900 -0.782712 0.552832 0.930000 0.516400 21 0 248 -6.597900 27.332300 -3.690200 -0.285900 -0.782712 0.552832 0.913000 0.515500 35 1 237 -7.984800 25.127701 -6.177400 -0.285900 -0.782712 0.552832 0.966400 0.464600 19 0 253 -8.704300 24.905701 -6.036500 -0.285900 -0.782712 0.552832 0.967100 0.466200 19 0 253 -7.451900 27.210300 -3.504400 0.899158 0.007889 0.437552 0.930000 0.516400 18 2 248 -8.704300 24.905701 -6.036500 0.899158 0.007889 0.437552 0.967100 0.466200 18 0 253 -8.503900 27.435900 -5.670300 0.899158 0.007889 0.437552 0.976600 0.507100 18 0 253 -6.463600 36.223400 -3.704900 -0.293676 0.955783 0.015277 0.962000 0.710700 254 68 73 -5.743400 36.019600 -3.995900 -0.293676 0.955783 0.015277 0.971100 0.718900 254 68 73 -5.115000 35.782600 -2.051700 -0.293676 0.955783 0.015277 0.916000 0.725700 254 68 73 -5.778000 35.994701 -1.773100 -0.293676 0.955783 0.015277 0.922200 0.717000 254 68 73 -4.513000 55.007702 -5.909800 -0.189279 -0.709198 -0.679126 0.935300 0.759300 0 253 27 -4.291100 55.098900 -5.871800 -0.189279 -0.709198 -0.679126 0.932300 0.755300 0 253 27 -4.207800 55.799599 -6.651700 -0.189279 -0.709198 -0.679126 0.967500 0.768900 0 253 27 -4.871900 55.799599 -6.765400 -0.189279 -0.709198 -0.679126 0.957200 0.775300 0 253 27 -2.904000 62.455601 -5.700500 0.959060 0.270852 0.082723 0.954300 0.968000 0 253 27 -2.764700 62.455601 -4.128400 0.959060 0.270852 0.082723 0.909900 0.975800 0 253 27 -4.736600 55.799599 -5.153900 0.959060 0.270852 0.082723 0.919700 0.781300 0 253 27 -4.871900 55.799599 -6.765400 0.959060 0.270852 0.082723 0.957200 0.775300 0 253 27 -2.764700 62.455601 -4.128400 0.167860 -0.101350 0.980587 0.909900 0.975800 0 253 27 -4.072400 55.799599 -5.040200 0.167860 -0.101350 0.980587 0.904100 0.777700 0 253 27 -4.736600 55.799599 -5.153900 0.167860 -0.101350 0.980587 0.919700 0.781300 0 253 27 -2.904000 62.455601 -5.700500 -0.167781 0.107182 -0.979980 0.954300 0.968000 0 253 27 -4.871900 55.799599 -6.765400 -0.167781 0.107182 -0.979980 0.957200 0.775300 0 253 27 -4.207800 55.799599 -6.651700 -0.167781 0.107182 -0.979980 0.967500 0.768900 0 253 27 -4.736600 55.799599 -5.153900 0.042232 -0.727963 0.684314 0.919700 0.781300 254 68 73 -4.072400 55.799599 -5.040200 0.042232 -0.727963 0.684314 0.904100 0.777700 254 68 73 -4.291100 55.098900 -5.871800 0.042232 -0.727963 0.684314 0.932300 0.755300 254 68 73 -4.513000 55.007702 -5.909800 0.042232 -0.727963 0.684314 0.935300 0.759300 254 68 73 -4.736600 55.799599 -5.153900 0.937220 -0.339745 0.078688 0.919700 0.781300 0 253 27 -4.513000 55.007702 -5.909800 0.937220 -0.339745 0.078688 0.935300 0.759300 0 253 27 -4.871900 55.799599 -6.765400 0.937220 -0.339745 0.078688 0.957200 0.775300 0 253 27 -4 0 1 2 3 -4 4 5 6 7 -3 8 9 10 -4 11 12 13 14 -4 15 16 17 18 -4 19 20 21 22 -4 23 24 25 26 -4 27 28 29 30 -4 31 32 33 34 -4 35 36 37 38 -4 39 40 41 42 -4 43 44 45 46 -3 47 48 49 -4 50 51 52 53 -4 54 55 56 57 -4 58 59 60 61 -4 62 63 64 65 -4 66 67 68 69 -4 70 71 72 73 -4 74 75 76 77 -3 78 79 80 -4 81 82 83 84 -3 85 86 87 -4 88 89 90 91 -3 92 93 94 -4 95 96 97 98 -4 99 100 101 102 -4 103 104 105 106 -4 107 108 109 110 -4 111 112 113 114 -4 115 116 117 118 -4 119 120 121 122 -4 123 124 125 126 -4 127 128 129 130 -4 131 132 133 134 -4 135 136 137 138 -3 139 140 141 -3 142 143 144 -4 145 146 147 148 -4 149 150 151 152 -4 153 154 155 156 -3 157 158 159 -3 160 161 162 -4 163 164 165 166 -4 167 168 169 170 -4 171 172 173 174 -3 175 176 177 -4 178 179 180 181 -4 182 183 184 185 -3 186 187 188 -3 189 190 191 -4 192 193 194 195 -4 196 197 198 199 -4 200 201 202 203 -4 204 205 206 207 -3 208 209 210 -3 211 212 213 -3 214 215 216 -4 217 218 219 220 -4 221 222 223 224 -3 225 226 227 -4 228 229 230 231 -4 232 233 234 235 -3 236 237 238 -3 239 240 241 -3 242 243 244 -3 245 246 247 -4 248 249 250 251 -4 252 253 254 255 -4 256 257 258 259 -4 260 261 262 263 -4 264 265 266 267 -4 268 269 270 271 -4 272 273 274 275 -4 276 277 278 279 -4 280 281 282 283 -3 284 285 286 -3 287 288 289 -4 290 291 292 293 -4 294 295 296 297 -4 298 299 300 301 -3 302 303 304 -4 305 306 307 308 -4 309 310 311 312 -4 313 314 315 316 -4 317 318 319 320 -4 321 322 323 324 -4 325 326 327 328 -4 329 330 331 332 -4 333 334 335 336 -4 337 338 339 340 -4 341 342 343 344 -4 345 346 347 348 -4 349 350 351 352 -3 353 354 355 -4 356 357 358 359 -4 360 361 362 363 -3 364 365 366 -4 367 368 369 370 -4 371 372 373 374 -3 375 376 377 -4 378 379 380 381 -3 382 383 384 -4 385 386 387 388 -4 389 390 391 392 -3 393 394 395 -4 396 397 398 399 -4 400 401 402 403 -4 404 405 406 407 -4 408 409 410 411 -4 412 413 414 415 -3 416 417 418 -3 419 420 421 -3 422 423 424 -4 425 426 427 428 -4 429 430 431 432 -3 433 434 435 -3 436 437 438 -4 439 440 441 442 -4 443 444 445 446 -3 447 448 449 -3 450 451 452 -4 453 454 455 456 -3 457 458 459 -3 460 461 462 -3 463 464 465 -4 466 467 468 469 -3 470 471 472 -4 473 474 475 476 -4 477 478 479 480 -4 481 482 483 484 -4 485 486 487 488 -4 489 490 491 492 -3 493 494 495 -4 496 497 498 499 -4 500 501 502 503 -4 504 505 506 507 -4 508 509 510 511 -3 512 513 514 -4 515 516 517 518 -4 519 520 521 522 -3 523 524 525 -3 526 527 528 -3 529 530 531 -4 532 533 534 535 -4 536 537 538 539 -4 540 541 542 543 -4 544 545 546 547 -3 548 549 550 -3 551 552 553 -4 554 555 556 557 -3 558 559 560 -4 561 562 563 564 -4 565 566 567 568 -4 569 570 571 572 -3 573 574 575 -4 576 577 578 579 -4 580 581 582 583 -4 584 585 586 587 -4 588 589 590 591 -4 592 593 594 595 -4 596 597 598 599 -4 600 601 602 603 -4 604 605 606 607 -4 608 609 610 611 -3 612 613 614 -4 615 616 617 618 -4 619 620 621 622 -4 623 624 625 626 -4 627 628 629 630 -4 631 632 633 634 -4 635 636 637 638 -4 639 640 641 642 -3 643 644 645 -4 646 647 648 649 -3 650 651 652 -4 653 654 655 656 -3 657 658 659 -4 660 661 662 663 -4 664 665 666 667 -4 668 669 670 671 -4 672 673 674 675 -4 676 677 678 679 -4 680 681 682 683 -4 684 685 686 687 -4 688 689 690 691 -4 692 693 694 695 -4 696 697 698 699 -4 700 701 702 703 -3 704 705 706 -3 707 708 709 -4 710 711 712 713 -4 714 715 716 717 -4 718 719 720 721 -3 722 723 724 -3 725 726 727 -4 728 729 730 731 -4 732 733 734 735 -4 736 737 738 739 -3 740 741 742 -4 743 744 745 746 -4 747 748 749 750 -3 751 752 753 -3 754 755 756 -4 757 758 759 760 -4 761 762 763 764 -4 765 766 767 768 -4 769 770 771 772 -3 773 774 775 -3 776 777 778 -3 779 780 781 -4 782 783 784 785 -4 786 787 788 789 -3 790 791 792 -4 793 794 795 796 -4 797 798 799 800 -3 801 802 803 -3 804 805 806 -3 807 808 809 -3 810 811 812 -4 813 814 815 816 -4 817 818 819 820 -4 821 822 823 824 -4 825 826 827 828 -4 829 830 831 832 -4 833 834 835 836 -4 837 838 839 840 -4 841 842 843 844 -4 845 846 847 848 -3 849 850 851 -3 852 853 854 -4 855 856 857 858 -4 859 860 861 862 -4 863 864 865 866 -3 867 868 869 -4 870 871 872 873 -4 874 875 876 877 -4 878 879 880 881 -4 882 883 884 885 -4 886 887 888 889 -4 890 891 892 893 -4 894 895 896 897 -4 898 899 900 901 -4 902 903 904 905 -4 906 907 908 909 -4 910 911 912 913 -4 914 915 916 917 -3 918 919 920 -4 921 922 923 924 -4 925 926 927 928 -3 929 930 931 -4 932 933 934 935 -4 936 937 938 939 -3 940 941 942 -4 943 944 945 946 -3 947 948 949 -4 950 951 952 953 -4 954 955 956 957 -3 958 959 960 -4 961 962 963 964 -4 965 966 967 968 -4 969 970 971 972 -4 973 974 975 976 -4 977 978 979 980 -3 981 982 983 -3 984 985 986 -3 987 988 989 -4 990 991 992 993 -4 994 995 996 997 -3 998 999 1000 -3 1001 1002 1003 -4 1004 1005 1006 1007 -4 1008 1009 1010 1011 -3 1012 1013 1014 -3 1015 1016 1017 -4 1018 1019 1020 1021 -3 1022 1023 1024 -3 1025 1026 1027 -3 463 1028 464 -4 1029 1030 1031 1032 -3 1033 1034 1035 -4 1036 1037 1038 1039 -4 1040 1041 1042 1043 -4 1044 1045 1046 1047 -4 1048 1049 1050 1051 -4 1052 1053 1054 1055 -3 1056 1057 1058 -4 1059 1060 1061 1062 -4 1063 1064 1065 1066 -4 1067 1068 1069 1070 -4 1071 1072 1073 1074 -3 1075 1076 1077 -4 1078 1079 1080 1081 -4 1082 1083 1084 1085 -3 1086 1087 1088 -3 1089 1090 1091 -4 1092 1093 1094 1095 -4 1096 1097 1098 1099 -4 1100 1101 1102 1103 -3 1104 1105 1106 -3 1107 1108 1109 -4 1110 1111 1112 1113 -4 1114 1115 1116 1117 -4 1118 1119 1120 1121 -4 1122 1123 1124 1125 -3 1126 1127 1128 -4 1129 1130 1131 1132 -4 1133 1134 1135 1136 -4 1137 1138 1139 1140 -4 1141 1142 1143 1144 -4 1145 1146 1147 1148 -4 1149 1150 1151 1152 -3 1153 1154 1155 -4 1156 1157 1158 1159 -3 1160 1161 1162 -4 1163 1164 1165 1166 -3 1167 1168 1169 -3 1170 1171 1172 -3 1173 1174 1175 -4 1176 1177 1178 1179 -3 1180 1181 1182 -3 1183 1184 1185 -4 1186 1187 1188 1189 -4 1190 1191 1192 1193 -4 1194 1195 1196 1197 -4 1198 1199 1200 1201 -3 1202 1203 1204 -4 1205 1206 1207 1208 -4 1209 1210 1211 1212 -4 1213 1214 1215 1216 -4 1217 1218 1219 1220 -4 1221 1222 1223 1224 -4 1225 1226 1227 1228 -3 1229 1230 1231 -4 1232 1233 1234 1235 -3 1236 1237 1238 -4 1239 1240 1241 1242 -3 1243 1244 1245 -3 1246 1247 1248 -3 1249 1250 1251 -3 1252 1253 1254 -3 1255 1256 1257 -4 1258 1259 1260 1261 -4 1262 1263 1264 1265 -4 1266 1267 1268 1269 -4 1270 1271 1272 1273 -4 1274 1275 1276 1277 -4 1278 1279 1280 1281 -3 1282 1283 1284 -4 1285 1286 1287 1288 -4 1289 1290 1291 1292 -4 1293 1294 1295 1296 -3 1297 1298 1299 -3 1300 1301 1302 -4 1303 1304 1305 1306 -3 1307 1308 1309 diff --git a/src/tests/evas/meshes/ply/Normal_UVs_NoColors.ply b/src/tests/evas/meshes/ply/Normal_UVs_NoColors.ply deleted file mode 100644 index 5622bee27d..0000000000 --- a/src/tests/evas/meshes/ply/Normal_UVs_NoColors.ply +++ /dev/null @@ -1,1681 +0,0 @@ -ply -format ascii 1.0 -comment Created by Blender 2.69 (sub 0) - www.blender.org, source file: '' -element vertex 1310 -property float x -property float y -property float z -property float nx -property float ny -property float nz -property float s -property float t -element face 356 -property list uchar uint vertex_indices -end_header --4.649800 14.945700 -8.785600 -0.021734 0.023193 -0.999495 0.094400 0.185800 --2.020300 14.610600 -8.278800 -0.021734 0.023193 -0.999495 0.060000 0.185800 --1.712600 0.024900 -9.195700 -0.021734 0.023193 -0.999495 0.089900 0.023200 --3.252600 0.001600 -8.591000 -0.021734 0.023193 -0.999495 0.107400 0.025300 --4.649800 14.945700 -8.785600 -0.983809 -0.091724 -0.153967 0.094400 0.185800 --3.252600 0.001600 -8.591000 -0.983809 -0.091724 -0.153967 0.107400 0.025300 --4.089400 2.633000 -5.031300 -0.983809 -0.091724 -0.153967 0.145000 0.057700 --5.308800 13.910900 -3.738700 -0.983809 -0.091724 -0.153967 0.154100 0.185800 --1.553600 3.059500 -4.173500 0.398905 -0.098999 0.911633 0.181500 0.058600 --1.766900 13.754900 -2.918700 0.398905 -0.098999 0.911633 0.193300 0.185800 --3.061600 3.537800 -3.461700 0.398905 -0.098999 0.911633 0.164000 0.067400 --1.553600 3.059500 -4.173500 0.977159 -0.002648 0.212493 0.181500 0.058600 --0.626000 0.031700 -8.336200 0.977159 -0.002648 0.212493 0.220100 0.017000 --0.971400 14.644800 -6.706400 0.977159 -0.002648 0.212493 0.225200 0.185800 --1.766900 13.754900 -2.918700 0.977159 -0.002648 0.212493 0.193300 0.185800 --5.495700 46.043098 -6.732400 -0.860977 -0.085411 -0.501422 0.139900 0.788400 --2.827600 38.171799 -8.088300 -0.860977 -0.085411 -0.501422 0.114500 0.661600 --5.919200 37.619099 -4.570300 -0.860977 -0.085411 -0.501422 0.183200 0.661600 --6.029500 46.188801 -3.956000 -0.860977 -0.085411 -0.501422 0.183300 0.792100 --4.685700 36.664101 -1.616400 -0.917535 -0.032092 0.396359 0.239100 0.661600 --4.298500 47.001099 -0.058900 -0.917535 -0.032092 0.396359 0.249300 0.802400 --6.029500 46.188801 -3.956000 -0.917535 -0.032092 0.396359 0.183300 0.792100 --5.919200 37.619099 -4.570300 -0.917535 -0.032092 0.396359 0.183200 0.661600 --6.775800 50.206501 -7.534500 -0.223809 0.028781 -0.974208 0.134100 0.852600 --7.252500 54.524502 -7.615000 -0.223809 0.028781 -0.974208 0.126100 0.913200 -0.000000 53.738098 -8.986800 -0.223809 0.028781 -0.974208 0.028100 0.877800 -0.000000 50.037800 -9.413700 -0.223809 0.028781 -0.974208 0.041800 0.827300 --7.252500 54.524502 -7.615000 -0.375359 0.901424 0.215731 0.812300 0.981700 --8.747800 53.770199 -7.353300 -0.375359 0.901424 0.215731 0.807700 0.944900 --8.184300 53.108700 -3.320400 -0.375359 0.901424 0.215731 0.746000 0.944900 --6.624100 53.529800 -2.653700 -0.375359 0.901424 0.215731 0.746000 0.986600 --9.827700 52.989700 -7.188500 -0.412168 0.895237 0.169320 0.805500 0.922700 --14.989100 50.565300 -7.297200 -0.412168 0.895237 0.169320 0.805300 0.834400 --15.636800 49.715099 -4.015700 -0.412168 0.895237 0.169320 0.746000 0.809400 --9.508400 52.403099 -3.672700 -0.412168 0.895237 0.169320 0.746000 0.922700 -0.000000 37.009800 0.550700 -0.339751 -0.089043 0.936291 0.310700 0.661600 -0.000000 47.287498 1.094200 -0.339751 -0.089043 0.936291 0.310700 0.805700 --4.298500 47.001099 -0.058900 -0.339751 -0.089043 0.936291 0.249300 0.802400 --4.685700 36.664101 -1.616400 -0.339751 -0.089043 0.936291 0.239100 0.661600 -0.000000 53.738098 -8.986800 -0.139268 0.841727 -0.521633 0.028100 0.877800 --7.252500 54.524502 -7.615000 -0.139268 0.841727 -0.521633 0.126100 0.913200 --2.321200 55.471001 -5.570800 -0.139268 0.841727 -0.521633 0.053700 0.941000 -0.000000 55.950600 -7.250100 -0.139268 0.841727 -0.521633 0.022400 0.916300 --6.624100 53.529800 -2.653700 -0.510018 -0.190129 0.838888 0.210200 0.900400 --7.813100 49.342701 -3.886900 -0.510018 -0.190129 0.838888 0.181000 0.844200 --6.029500 46.188801 -3.956000 -0.510018 -0.190129 0.838888 0.183300 0.792100 --3.773800 51.093601 -1.034300 -0.510018 -0.190129 0.838888 0.256600 0.864400 --6.029500 46.188801 -3.956000 -0.909885 0.202901 0.361857 0.183300 0.792100 --4.298500 47.001099 -0.058900 -0.909885 0.202901 0.361857 0.249300 0.802400 --3.773800 51.093601 -1.034300 -0.909885 0.202901 0.361857 0.256600 0.864400 -0.000000 50.880199 0.110000 -0.266804 0.255185 0.929352 0.310700 0.860500 --3.773800 51.093601 -1.034300 -0.266804 0.255185 0.929352 0.256600 0.864400 --4.298500 47.001099 -0.058900 -0.266804 0.255185 0.929352 0.249300 0.802400 -0.000000 47.287498 1.094200 -0.266804 0.255185 0.929352 0.310700 0.805700 --16.136200 50.023998 -7.546200 0.129075 0.179950 -0.975171 0.808600 0.809400 --14.989100 50.565300 -7.297200 0.129075 0.179950 -0.975171 0.805300 0.834400 --13.779500 47.417198 -7.715300 0.129075 0.179950 -0.975171 0.879500 0.834400 --14.885000 46.974701 -7.946000 0.129075 0.179950 -0.975171 0.879500 0.809400 --13.779500 47.417198 -7.715300 0.437873 -0.882573 -0.171264 0.626900 0.829400 --8.756500 49.321098 -7.632900 0.437873 -0.882573 -0.171264 0.626900 0.922700 --8.927200 49.128502 -4.128200 0.437873 -0.882573 -0.171264 0.688900 0.922700 --14.977100 45.689201 -4.821000 0.437873 -0.882573 -0.171264 0.680000 0.809400 --17.208200 49.477699 -7.512200 -0.268622 0.938905 0.215175 0.810800 0.788400 --22.585199 48.327702 -7.594400 -0.268622 0.938905 0.215175 0.812700 0.705100 --22.348700 46.932201 -2.822400 -0.268622 0.938905 0.215175 0.746000 0.680200 --16.810101 49.139900 -3.928800 -0.268622 0.938905 0.215175 0.746000 0.788400 --21.936399 43.055199 -3.733600 0.256926 -0.186034 0.948357 0.691800 0.680200 --16.192200 44.960400 -4.877100 0.256926 -0.186034 0.948357 0.677700 0.788400 --16.810101 49.139900 -3.928800 0.256926 -0.186034 0.948357 0.746000 0.788400 --22.348700 46.932201 -2.822400 0.256926 -0.186034 0.948357 0.746000 0.680200 --22.105101 44.119598 -7.074000 -0.471869 -0.161034 -0.866838 0.862200 0.680200 --23.337700 47.268200 -6.945000 -0.471869 -0.161034 -0.866838 0.809900 0.680200 --22.585199 48.327702 -7.594400 -0.471869 -0.161034 -0.866838 0.812700 0.705100 --21.061199 44.183601 -7.611200 -0.471869 -0.161034 -0.866838 0.879500 0.705100 --15.884600 46.520500 -7.855800 0.312108 -0.901546 -0.299673 0.626900 0.788400 --16.192200 44.960400 -4.877100 0.312108 -0.901546 -0.299673 0.677700 0.788400 --21.936399 43.055199 -3.733600 0.312108 -0.901546 -0.299673 0.691800 0.680200 --21.061199 44.183601 -7.611200 0.312108 -0.901546 -0.299673 0.626900 0.699700 --5.598500 31.822901 -1.405400 -0.899226 0.141575 0.413943 0.185400 0.436500 --7.174300 32.815300 -5.168000 -0.899226 0.141575 0.413943 0.136400 0.440500 --7.453900 29.910801 -4.782000 -0.899226 0.141575 0.413943 0.143900 0.408700 --4.970000 33.082802 -8.871300 -0.875321 0.068314 -0.478692 0.086900 0.436600 --5.595300 29.761600 -8.491100 -0.875321 0.068314 -0.478692 0.097300 0.399700 --7.453900 29.910801 -4.782000 -0.875321 0.068314 -0.478692 0.143900 0.408700 --7.174300 32.815300 -5.168000 -0.875321 0.068314 -0.478692 0.136400 0.440500 --6.827700 20.858999 -3.051400 -0.895608 -0.345701 -0.279959 0.166500 0.297500 --5.426000 21.341299 -8.131100 -0.895608 -0.345701 -0.279959 0.106600 0.297500 --6.194700 19.576300 -3.492500 -0.895608 -0.345701 -0.279959 0.163400 0.285600 --0.835600 22.853901 -8.203000 -0.044062 0.086408 -0.995285 0.053300 0.313700 --0.899900 21.410400 -8.342700 -0.044062 0.086408 -0.995285 0.054900 0.297500 --5.426000 21.341299 -8.131100 -0.044062 0.086408 -0.995285 0.106600 0.297500 --5.317800 22.936800 -8.014600 -0.044062 0.086408 -0.995285 0.105500 0.313700 --0.899900 21.410400 -8.342700 0.986890 0.053202 0.152371 0.307200 0.297500 --1.957400 20.620800 -1.217700 0.986890 0.053202 0.152371 0.224300 0.297500 --1.853000 19.164200 -1.385300 0.986890 0.053202 0.152371 0.221600 0.281000 --6.194700 19.576300 -3.492500 -0.393090 -0.299033 0.869517 0.163400 0.285600 --1.853000 19.164200 -1.385300 -0.393090 -0.299033 0.869517 0.221600 0.281000 --1.957400 20.620800 -1.217700 -0.393090 -0.299033 0.869517 0.224300 0.297500 --6.827700 20.858999 -3.051400 -0.393090 -0.299033 0.869517 0.166500 0.297500 --5.259600 15.490400 -9.599400 0.139442 0.106302 -0.984508 0.090700 0.228600 --5.426000 21.341299 -8.131100 0.139442 0.106302 -0.984508 0.106600 0.297500 --0.899900 21.410400 -8.342700 0.139442 0.106302 -0.984508 0.054900 0.297500 --0.294400 16.169500 -7.962700 0.139442 0.106302 -0.984508 0.039600 0.241800 --0.294400 16.169500 -7.962700 0.977002 0.117101 0.178197 0.282300 0.223700 --0.899900 21.410400 -8.342700 0.977002 0.117101 0.178197 0.307200 0.297500 --1.853000 19.164200 -1.385300 0.977002 0.117101 0.178197 0.221600 0.281000 --1.221800 14.450400 -2.004100 0.977002 0.117101 0.178197 0.220300 0.236900 --1.853000 19.164200 -1.385300 -0.395956 -0.119778 0.910424 0.221600 0.281000 --6.194700 19.576300 -3.492500 -0.395956 -0.119778 0.910424 0.163400 0.285600 --6.498700 14.643000 -4.000600 -0.395956 -0.119778 0.910424 0.151700 0.232900 --1.221800 14.450400 -2.004100 -0.395956 -0.119778 0.910424 0.220300 0.236900 --6.498700 14.643000 -4.000600 -0.982418 0.045709 -0.181012 0.151700 0.232900 --6.194700 19.576300 -3.492500 -0.982418 0.045709 -0.181012 0.163400 0.285600 --5.426000 21.341299 -8.131100 -0.982418 0.045709 -0.181012 0.106600 0.297500 --5.259600 15.490400 -9.599400 -0.982418 0.045709 -0.181012 0.090700 0.228600 --7.813100 49.342701 -3.886900 -0.881229 -0.394976 -0.259672 0.181000 0.844200 --6.775800 50.206501 -7.534500 -0.881229 -0.394976 -0.259672 0.134100 0.852600 --5.495700 46.043098 -6.732400 -0.881229 -0.394976 -0.259672 0.139900 0.788400 --6.029500 46.188801 -3.956000 -0.881229 -0.394976 -0.259672 0.183300 0.792100 --8.756500 49.321098 -7.632900 0.341557 -0.936397 -0.080618 0.626900 0.922700 --6.775800 50.206501 -7.534500 0.341557 -0.936397 -0.080618 0.626900 0.944900 --7.813100 49.342701 -3.886900 0.341557 -0.936397 -0.080618 0.686800 0.944900 --8.927200 49.128502 -4.128200 0.341557 -0.936397 -0.080618 0.688900 0.922700 --5.495700 46.043098 -6.732400 -0.295037 -0.218453 -0.930178 0.139900 0.788400 --6.775800 50.206501 -7.534500 -0.295037 -0.218453 -0.930178 0.134100 0.852600 -0.000000 50.037800 -9.413700 -0.295037 -0.218453 -0.930178 0.041800 0.827300 -0.000000 45.235802 -8.516300 -0.295037 -0.218453 -0.930178 0.061400 0.762800 --3.773800 51.093601 -1.034300 -0.217879 0.518058 0.827130 0.256600 0.864400 -0.000000 50.880199 0.110000 -0.217879 0.518058 0.827130 0.310700 0.860500 -0.000000 54.522099 -2.187600 -0.217879 0.518058 0.827130 0.310700 0.919600 --1.435700 55.057400 -2.884500 -0.217879 0.518058 0.827130 0.285800 0.931400 --0.163800 60.672798 0.405300 -0.878123 0.172158 0.446386 0.529100 0.200900 --0.596000 60.268700 -0.255900 -0.878123 0.172158 0.446386 0.502600 0.185300 --0.605400 59.453602 0.006800 -0.878123 0.172158 0.446386 0.508800 0.156900 --0.226300 59.631802 0.717000 -0.878123 0.172158 0.446386 0.529800 0.167300 -0.000000 59.375900 0.272700 -0.351825 0.003851 0.936058 0.533800 0.153800 --0.605400 59.453602 0.006800 -0.351825 0.003851 0.936058 0.508800 0.156900 --0.793500 58.611801 -0.022400 -0.351825 0.003851 0.936058 0.506200 0.129800 -0.000000 58.735298 0.237300 -0.351825 0.003851 0.936058 0.533800 0.134400 --1.340700 61.343498 -1.024900 -0.500896 0.173312 0.847978 0.467800 0.231800 --2.209500 61.230499 -1.515000 -0.500896 0.173312 0.847978 0.430900 0.227000 --2.225300 60.301201 -1.334400 -0.500896 0.173312 0.847978 0.434400 0.187400 --0.474100 61.294899 -0.607800 -0.419394 -0.893935 0.158081 0.499900 0.227200 --0.179900 61.274700 0.058500 -0.419394 -0.893935 0.158081 0.525600 0.223900 --0.785400 61.539799 -0.048800 -0.419394 -0.893935 0.158081 0.505500 0.247600 --0.163800 60.672798 0.405300 -0.879737 0.234636 0.413532 0.529100 0.200900 --0.179900 61.274700 0.058500 -0.879737 0.234636 0.413532 0.525600 0.223900 --0.474100 61.294899 -0.607800 -0.879737 0.234636 0.413532 0.499900 0.227200 --0.596000 60.268700 -0.255900 -0.879737 0.234636 0.413532 0.502600 0.185300 --0.785400 61.539799 -0.048800 -0.405349 0.400850 0.821591 0.505500 0.247600 -0.000000 62.775902 -0.355700 -0.405349 0.400850 0.821591 0.533900 0.286800 --1.901400 62.898899 -1.262500 -0.405349 0.400850 0.821591 0.451600 0.287500 --1.792100 61.563202 -0.648200 -0.405349 0.400850 0.821591 0.464300 0.250800 --1.901400 62.898899 -1.262500 -0.958885 0.139689 0.247034 0.451600 0.287500 --2.505800 61.413601 -3.333900 -0.958885 0.139689 0.247034 0.367200 0.240300 --2.209500 61.230499 -1.515000 -0.958885 0.139689 0.247034 0.430900 0.227000 --1.792100 61.563202 -0.648200 -0.958885 0.139689 0.247034 0.464300 0.250800 --2.071800 58.080299 -1.837600 -0.982605 0.010378 0.185418 0.435700 0.090000 --2.043500 58.694401 -1.722000 -0.982605 0.010378 0.185418 0.434700 0.119000 --2.361600 58.652599 -3.405400 -0.982605 0.010378 0.185418 0.376100 0.111600 --2.361600 58.652599 -3.405400 -0.835615 -0.547438 -0.045374 0.376100 0.111600 --1.480400 57.287800 -3.167400 -0.835615 -0.547438 -0.045374 0.388000 0.054100 --2.071800 58.080299 -1.837600 -0.835615 -0.547438 -0.045374 0.435700 0.090000 --2.361600 58.652599 -3.405400 -0.962379 -0.178153 0.205154 0.376100 0.111600 --2.043500 58.694401 -1.722000 -0.962379 -0.178153 0.205154 0.434700 0.119000 --2.225300 60.301201 -1.334400 -0.962379 -0.178153 0.205154 0.434400 0.187400 --2.484800 60.667999 -2.078300 -0.962379 -0.178153 0.205154 0.409600 0.193000 --0.596000 60.268700 -0.255900 -0.569338 0.180881 0.801958 0.502600 0.185300 --2.225300 60.301201 -1.334400 -0.569338 0.180881 0.801958 0.434400 0.187400 --0.793500 58.611801 -0.022400 -0.569338 0.180881 0.801958 0.506200 0.129800 --0.605400 59.453602 0.006800 -0.569338 0.180881 0.801958 0.508800 0.156900 --0.793500 58.611801 -0.022400 -0.424783 -0.113068 0.898207 0.506200 0.129800 --0.860300 57.339199 -0.345300 -0.424783 -0.113068 0.898207 0.507000 0.087800 -0.000000 57.320400 0.190300 -0.424783 -0.113068 0.898207 0.533800 0.095300 -0.000000 58.735298 0.237300 -0.424783 -0.113068 0.898207 0.533800 0.134400 --2.361600 58.652599 -3.405400 -0.801295 -0.555920 -0.221086 0.376100 0.111600 --1.507500 57.978802 -4.806700 -0.801295 -0.555920 -0.221086 0.327200 0.071700 --1.480400 57.287800 -3.167400 -0.801295 -0.555920 -0.221086 0.388000 0.054100 --1.480400 57.287800 -3.167400 -0.605736 -0.042761 0.794516 0.293600 0.962800 --1.435700 55.057400 -2.884500 -0.605736 -0.042761 0.794516 0.285800 0.931400 -0.000000 54.522099 -2.187600 -0.605736 -0.042761 0.794516 0.310700 0.919600 --0.509500 56.862801 -2.081200 -0.605736 -0.042761 0.794516 0.307800 0.953500 --1.435700 55.057400 -2.884500 -0.962522 0.132164 0.236820 0.285800 0.931400 --1.480400 57.287800 -3.167400 -0.962522 0.132164 0.236820 0.293600 0.962800 --1.507500 57.978802 -4.806700 -0.962522 0.132164 0.236820 0.269900 0.982500 --2.321200 55.471001 -5.570800 -0.962522 0.132164 0.236820 0.259500 0.968000 --5.259600 15.490400 -9.599400 0.329887 -0.177209 -0.927239 0.090700 0.228600 --0.294400 16.169500 -7.962700 0.329887 -0.177209 -0.927239 0.039600 0.241800 --2.020300 14.610600 -8.278800 0.329887 -0.177209 -0.927239 0.063600 0.221000 --0.294400 16.169500 -7.962700 0.923351 -0.382504 0.033356 0.282300 0.223700 --1.221800 14.450400 -2.004100 0.923351 -0.382504 0.033356 0.220300 0.236900 --0.971400 14.644800 -6.706400 0.923351 -0.382504 0.033356 0.253200 0.212300 --5.308800 13.910900 -3.738700 -0.281184 -0.501171 0.818391 0.168700 0.220700 --1.766900 13.754900 -2.918700 -0.281184 -0.501171 0.818391 0.216900 0.223600 --1.221800 14.450400 -2.004100 -0.281184 -0.501171 0.818391 0.220300 0.236900 --6.498700 14.643000 -4.000600 -0.281184 -0.501171 0.818391 0.151700 0.232900 --4.649800 14.945700 -8.785600 -0.465679 -0.853476 -0.233927 0.103500 0.222700 --5.308800 13.910900 -3.738700 -0.465679 -0.853476 -0.233927 0.168700 0.220700 --6.498700 14.643000 -4.000600 -0.465679 -0.853476 -0.233927 0.151700 0.232900 --5.259600 15.490400 -9.599400 -0.465679 -0.853476 -0.233927 0.090700 0.228600 --1.957400 20.620800 -1.217700 0.981627 0.066418 0.178877 0.224300 0.297500 --0.899900 21.410400 -8.342700 0.981627 0.066418 0.178877 0.307200 0.297500 --0.835600 22.853901 -8.203000 0.981627 0.066418 0.178877 0.306600 0.313700 --2.189200 21.987900 -1.481800 0.981627 0.066418 0.178877 0.225500 0.313700 --7.174300 32.815300 -5.168000 -0.882053 0.156893 -0.444261 0.136400 0.440500 --6.542300 35.480598 -4.902800 -0.882053 0.156893 -0.444261 0.133600 0.471500 --5.283200 35.952900 -7.814600 -0.882053 0.156893 -0.444261 0.094100 0.470900 --4.970000 33.082802 -8.871300 -0.882053 0.156893 -0.444261 0.086900 0.436600 --5.598500 31.822901 -1.405400 -0.892193 0.169920 0.418473 0.185400 0.436500 --6.542300 35.480598 -4.902800 -0.892193 0.169920 0.418473 0.133600 0.471500 --7.174300 32.815300 -5.168000 -0.892193 0.169920 0.418473 0.136400 0.440500 --4.685700 36.664101 -1.616400 -0.474113 0.127364 0.871203 0.239100 0.661600 --5.598500 31.822901 -1.405400 -0.474113 0.127364 0.871203 0.231500 0.582200 --3.798500 31.552500 -0.386300 -0.474113 0.127364 0.871203 0.257600 0.582200 --2.225300 60.301201 -1.334400 -0.926529 0.086891 0.366052 0.434400 0.187400 --2.209500 61.230499 -1.515000 -0.926529 0.086891 0.366052 0.430900 0.227000 --2.484800 60.667999 -2.078300 -0.926529 0.086891 0.366052 0.409600 0.193000 --8.927200 49.128502 -4.128200 -0.174303 -0.164506 0.970853 0.688900 0.922700 --7.813100 49.342701 -3.886900 -0.174303 -0.164506 0.970853 0.686800 0.944900 --8.184300 53.108700 -3.320400 -0.174303 -0.164506 0.970853 0.746000 0.944900 --9.508400 52.403099 -3.672700 -0.174303 -0.164506 0.970853 0.746000 0.922700 --8.184300 53.108700 -3.320400 -0.526523 0.826719 0.198265 0.746000 0.944900 --8.747800 53.770199 -7.353300 -0.526523 0.826719 0.198265 0.807700 0.944900 --9.827700 52.989700 -7.188500 -0.526523 0.826719 0.198265 0.805500 0.922700 --9.508400 52.403099 -3.672700 -0.526523 0.826719 0.198265 0.746000 0.922700 --8.747800 53.770199 -7.353300 -0.154881 -0.035505 -0.987295 0.807700 0.944900 --7.252500 54.524502 -7.615000 -0.154881 -0.035505 -0.987295 0.812300 0.981700 --6.775800 50.206501 -7.534500 -0.154881 -0.035505 -0.987295 0.879500 0.944900 --8.927200 49.128502 -4.128200 0.001669 -0.169906 0.985459 0.688900 0.922700 --9.508400 52.403099 -3.672700 0.001669 -0.169906 0.985459 0.746000 0.922700 --15.636800 49.715099 -4.015700 0.001669 -0.169906 0.985459 0.746000 0.809400 --14.977100 45.689201 -4.821000 0.001669 -0.169906 0.985459 0.680000 0.809400 --6.624100 53.529800 -2.653700 -0.215818 0.814400 0.538680 0.210200 0.900400 --3.773800 51.093601 -1.034300 -0.215818 0.814400 0.538680 0.256600 0.864400 --1.435700 55.057400 -2.884500 -0.215818 0.814400 0.538680 0.285800 0.931400 --7.252500 54.524502 -7.615000 -0.215818 0.814400 0.538680 0.180400 0.964800 --2.321200 55.471001 -5.570800 -0.276118 0.932071 0.234526 0.259500 0.968000 --7.252500 54.524502 -7.615000 -0.276118 0.932071 0.234526 0.180400 0.964800 --1.435700 55.057400 -2.884500 -0.276118 0.932071 0.234526 0.285800 0.931400 --2.209500 61.230499 -1.515000 -0.942806 0.279456 0.181716 0.430900 0.227000 --2.505800 61.413601 -3.333900 -0.942806 0.279456 0.181716 0.362700 0.212700 --2.484800 60.667999 -2.078300 -0.942806 0.279456 0.181716 0.409600 0.193000 --2.484800 60.667999 -2.078300 -0.998559 -0.051788 -0.014052 0.409600 0.193000 --2.505800 61.413601 -3.333900 -0.998559 -0.051788 -0.014052 0.362700 0.212700 --2.361600 58.652599 -3.405400 -0.998559 -0.051788 -0.014052 0.376100 0.111600 --2.209500 61.230499 -1.515000 -0.107977 -0.909631 0.401138 0.430900 0.227000 --1.340700 61.343498 -1.024900 -0.107977 -0.909631 0.401138 0.467800 0.231800 --1.792100 61.563202 -0.648200 -0.107977 -0.909631 0.401138 0.464300 0.250800 --3.061600 3.537800 -3.461700 0.234488 0.898953 0.369997 0.290200 0.071700 --3.735600 1.816900 0.228400 0.234488 0.898953 0.369997 0.290200 0.030700 --1.568700 1.981700 -0.627100 0.234488 0.898953 0.369997 0.308400 0.040400 --1.553600 3.059500 -4.173500 0.234488 0.898953 0.369997 0.310400 0.073900 --0.626000 0.031700 -8.336200 0.992053 0.072189 0.103052 0.345300 0.097200 --1.553600 3.059500 -4.173500 0.992053 0.072189 0.103052 0.310400 0.073900 --1.568700 1.981700 -0.627100 0.992053 0.072189 0.103052 0.308400 0.040400 --1.825200 -0.024100 0.601200 0.992053 0.072189 0.103052 0.313500 0.023800 --1.825200 -0.024100 0.601200 -0.002195 -0.999985 -0.005027 0.748300 0.055100 --3.769300 -0.009000 1.132900 -0.002195 -0.999985 -0.005027 0.765800 0.040900 --1.712600 0.024900 -9.195700 -0.002195 -0.999985 -0.005027 0.765100 0.147100 --0.626000 0.031700 -8.336200 -0.002195 -0.999985 -0.005027 0.751000 0.138000 --1.712600 0.024900 -9.195700 0.748722 0.074200 -0.658719 0.089900 0.023200 --2.020300 14.610600 -8.278800 0.748722 0.074200 -0.658719 0.060000 0.185800 --0.971400 14.644800 -6.706400 0.748722 0.074200 -0.658719 0.025900 0.185800 --0.626000 0.031700 -8.336200 0.748722 0.074200 -0.658719 0.075600 0.021500 --1.568700 1.981700 -0.627100 0.270273 0.452545 0.849798 0.308400 0.040400 --3.735600 1.816900 0.228400 0.270273 0.452545 0.849798 0.290200 0.030700 --3.769300 -0.009000 1.132900 0.270273 0.452545 0.849798 0.289700 0.012400 --1.825200 -0.024100 0.601200 0.270273 0.452545 0.849798 0.313500 0.023800 --4.089400 2.633000 -5.031300 -0.957442 -0.073711 -0.279054 0.275500 0.071900 --3.252600 0.001600 -8.591000 -0.957442 -0.073711 -0.279054 0.238500 0.103000 --5.176800 -0.025000 -0.598300 -0.957442 -0.073711 -0.279054 0.266200 0.023600 --5.390300 1.568200 -1.670300 -0.957442 -0.073711 -0.279054 0.274000 0.039600 --3.769300 -0.009000 1.132900 -0.738109 0.308147 0.600201 0.289700 0.012400 --3.735600 1.816900 0.228400 -0.738109 0.308147 0.600201 0.290200 0.030700 --5.390300 1.568200 -1.670300 -0.738109 0.308147 0.600201 0.274000 0.039600 --5.176800 -0.025000 -0.598300 -0.738109 0.308147 0.600201 0.266200 0.023600 --5.390300 1.568200 -1.670300 -0.560649 0.811720 0.163660 0.274000 0.039600 --3.735600 1.816900 0.228400 -0.560649 0.811720 0.163660 0.290200 0.030700 --3.061600 3.537800 -3.461700 -0.560649 0.811720 0.163660 0.290200 0.071700 --4.089400 2.633000 -5.031300 -0.560649 0.811720 0.163660 0.275500 0.071900 --3.061600 3.537800 -3.461700 -0.452521 -0.074303 0.888653 0.164000 0.067400 --1.766900 13.754900 -2.918700 -0.452521 -0.074303 0.888653 0.193300 0.185800 --5.308800 13.910900 -3.738700 -0.452521 -0.074303 0.888653 0.154100 0.185800 --4.089400 2.633000 -5.031300 -0.452521 -0.074303 0.888653 0.145000 0.057700 --2.020300 14.610600 -8.278800 0.001520 -0.830500 -0.557017 0.063600 0.221000 --4.649800 14.945700 -8.785600 0.001520 -0.830500 -0.557017 0.103500 0.222700 --5.259600 15.490400 -9.599400 0.001520 -0.830500 -0.557017 0.090700 0.228600 --2.020300 14.610600 -8.278800 0.649568 -0.634088 -0.419515 0.063600 0.221000 --0.294400 16.169500 -7.962700 0.649568 -0.634088 -0.419515 0.039600 0.241800 --0.971400 14.644800 -6.706400 0.649568 -0.634088 -0.419515 0.028400 0.216500 --5.426000 21.341299 -8.131100 -0.959570 0.028386 -0.280036 0.106600 0.297500 --6.827700 20.858999 -3.051400 -0.959570 0.028386 -0.280036 0.166500 0.297500 --6.824000 22.193899 -3.254300 -0.959570 0.028386 -0.280036 0.165700 0.313700 --5.317800 22.936800 -8.014600 -0.959570 0.028386 -0.280036 0.105500 0.313700 --0.845100 29.891001 -9.491500 -0.126028 -0.127868 -0.983751 0.041700 0.395800 --0.835600 22.853901 -8.203000 -0.126028 -0.127868 -0.983751 0.053300 0.313700 --5.317800 22.936800 -8.014600 -0.126028 -0.127868 -0.983751 0.105500 0.313700 --5.595300 29.761600 -8.491100 -0.126028 -0.127868 -0.983751 0.097300 0.399700 --1.957400 20.620800 -1.217700 -0.346283 0.131313 0.928895 0.224300 0.297500 --2.189200 21.987900 -1.481800 -0.346283 0.131313 0.928895 0.225500 0.313700 --6.824000 22.193899 -3.254300 -0.346283 0.131313 0.928895 0.165700 0.313700 --6.827700 20.858999 -3.051400 -0.346283 0.131313 0.928895 0.166500 0.297500 --0.605400 59.453602 0.006800 -0.276378 -0.886938 0.370075 0.508800 0.156900 -0.000000 59.375900 0.272700 -0.276378 -0.886938 0.370075 0.533800 0.153800 --0.226300 59.631802 0.717000 -0.276378 -0.886938 0.370075 0.529800 0.167300 --21.936399 43.055199 -3.733600 -0.245050 -0.199318 0.948801 0.691800 0.680200 --22.348700 46.932201 -2.822400 -0.245050 -0.199318 0.948801 0.746000 0.680200 --23.323000 46.228001 -3.425200 -0.245050 -0.199318 0.948801 0.746000 0.661900 --23.265499 44.290199 -3.614200 -0.245050 -0.199318 0.948801 0.710900 0.661900 --22.105101 44.119598 -7.074000 -0.680722 -0.210597 -0.701617 0.862200 0.680200 --23.273100 44.479099 -6.170500 -0.680722 -0.210597 -0.701617 0.835600 0.661900 --23.881300 46.267799 -5.995500 -0.680722 -0.210597 -0.701617 0.800900 0.661900 --23.337700 47.268200 -6.945000 -0.680722 -0.210597 -0.701617 0.809900 0.680200 --22.348700 46.932201 -2.822400 -0.710630 0.673907 0.202126 0.746000 0.680200 --23.337700 47.268200 -6.945000 -0.710630 0.673907 0.202126 0.809900 0.680200 --23.881300 46.267799 -5.995500 -0.710630 0.673907 0.202126 0.800900 0.661900 --23.323000 46.228001 -3.425200 -0.710630 0.673907 0.202126 0.746000 0.661900 --21.936399 43.055199 -3.733600 -0.575702 -0.803125 -0.153486 0.691800 0.680200 --23.265499 44.290199 -3.614200 -0.575702 -0.803125 -0.153486 0.710900 0.661900 --23.273100 44.479099 -6.170500 -0.575702 -0.803125 -0.153486 0.665900 0.661900 --22.105101 44.119598 -7.074000 -0.575702 -0.803125 -0.153486 0.641700 0.680200 --23.323000 46.228001 -3.425200 0.234519 0.052147 0.970712 0.746000 0.661900 --24.935400 45.742901 -3.288800 0.234519 0.052147 0.970712 0.746000 0.630500 --24.446100 44.099098 -3.039500 0.234519 0.052147 0.970712 0.723200 0.630500 --23.265499 44.290199 -3.614200 0.234519 0.052147 0.970712 0.710900 0.661900 --23.273100 44.479099 -6.170500 -0.051663 0.047611 -0.997529 0.835600 0.661900 --25.718901 44.407902 -5.989100 -0.051663 0.047611 -0.997529 0.812100 0.630500 --25.982700 45.641201 -5.974700 -0.051663 0.047611 -0.997529 0.796200 0.630500 --23.881300 46.267799 -5.995500 -0.051663 0.047611 -0.997529 0.800900 0.661900 --23.881300 46.267799 -5.995500 -0.283035 0.956157 0.075198 0.800900 0.661900 --25.982700 45.641201 -5.974700 -0.283035 0.956157 0.075198 0.796200 0.630500 --24.935400 45.742901 -3.288800 -0.283035 0.956157 0.075198 0.746000 0.630500 --23.323000 46.228001 -3.425200 -0.283035 0.956157 0.075198 0.746000 0.661900 --23.265499 44.290199 -3.614200 0.050680 -0.993534 -0.101596 0.710900 0.661900 --24.446100 44.099098 -3.039500 0.050680 -0.993534 -0.101596 0.723200 0.630500 --25.718901 44.407902 -5.989100 0.050680 -0.993534 -0.101596 0.677100 0.630500 --23.273100 44.479099 -6.170500 0.050680 -0.993534 -0.101596 0.665900 0.661900 --3.798500 31.552500 -0.386300 -0.302820 0.047342 0.951871 0.257600 0.582200 -0.000000 31.552500 0.128500 -0.302820 0.047342 0.951871 0.310700 0.582200 -0.000000 37.009800 0.550700 -0.302820 0.047342 0.951871 0.310700 0.661600 --4.685700 36.664101 -1.616400 -0.302820 0.047342 0.951871 0.239100 0.661600 --27.058001 43.733101 -1.471100 -0.612973 -0.035197 0.789319 0.783900 0.527900 --28.100901 44.177299 -2.470000 -0.612973 -0.035197 0.789319 0.756100 0.537200 --27.637899 42.321201 -1.984400 -0.612973 -0.035197 0.789319 0.780200 0.502700 --26.775499 43.007000 -1.492900 -0.612973 -0.035197 0.789319 0.799700 0.523000 --27.102699 45.320202 -5.735100 -0.288380 -0.175341 -0.941325 0.706300 0.587600 --25.982700 45.641201 -5.974700 -0.288380 -0.175341 -0.941325 0.701400 0.609900 --25.718901 44.407902 -5.989100 -0.288380 -0.175341 -0.941325 0.674700 0.592000 --26.246300 42.901402 -5.383600 -0.288380 -0.175341 -0.941325 0.663100 0.553800 --24.935400 45.742901 -3.288800 -0.215944 0.976143 0.022647 0.774000 0.616500 --25.982700 45.641201 -5.974700 -0.215944 0.976143 0.022647 0.701400 0.609900 --27.102699 45.320202 -5.735100 -0.215944 0.976143 0.022647 0.706300 0.587600 --26.753901 45.398300 -2.858600 -0.215944 0.976143 0.022647 0.766000 0.574200 --24.446100 44.099098 -3.039500 0.806467 -0.440747 -0.394147 0.815000 0.599300 --26.246300 42.901402 -5.383600 0.806467 -0.440747 -0.394147 0.880100 0.569900 --25.718901 44.407902 -5.989100 0.806467 -0.440747 -0.394147 0.885900 0.607200 --28.380600 42.330502 -3.056600 -0.840529 -0.044209 0.539960 0.741600 0.498200 --27.637899 42.321201 -1.984400 -0.840529 -0.044209 0.539960 0.780200 0.502700 --28.100901 44.177299 -2.470000 -0.840529 -0.044209 0.539960 0.756100 0.537200 --28.697901 44.238201 -3.477500 -0.840529 -0.044209 0.539960 0.737900 0.538900 --28.380600 42.330502 -3.056600 -0.979149 -0.175223 -0.102788 0.741600 0.498200 --28.697901 44.238201 -3.477500 -0.979149 -0.175223 -0.102788 0.737900 0.538900 --28.543800 44.178001 -4.651400 -0.979149 -0.175223 -0.102788 0.718600 0.545700 --28.292801 42.543098 -4.446800 -0.979149 -0.175223 -0.102788 0.704200 0.514300 --26.753901 45.398300 -2.858600 -0.560189 0.737837 0.376544 0.766000 0.574200 --28.697901 44.238201 -3.477500 -0.560189 0.737837 0.376544 0.737900 0.538900 --28.100901 44.177299 -2.470000 -0.560189 0.737837 0.376544 0.756100 0.537200 --24.935400 45.742901 -3.288800 0.484106 0.321222 0.813915 0.774000 0.616500 --26.117701 44.487900 -2.198700 0.484106 0.321222 0.813915 0.788200 0.565100 --25.587200 43.557701 -2.038700 0.484106 0.321222 0.813915 0.806300 0.556900 --24.446100 44.099098 -3.039500 0.484106 0.321222 0.813915 0.815000 0.599300 --24.446100 44.099098 -3.039500 0.765721 -0.642695 -0.024780 0.815000 0.599300 --25.587200 43.557701 -2.038700 0.765721 -0.642695 -0.024780 0.806300 0.556900 --25.491899 42.827301 -2.370100 0.765721 -0.642695 -0.024780 0.813300 0.554500 --26.246300 42.901402 -5.383600 0.765721 -0.642695 -0.024780 0.880100 0.569900 --26.753901 45.398300 -2.858600 0.068715 0.616533 0.784324 0.766000 0.574200 --26.117701 44.487900 -2.198700 0.068715 0.616533 0.784324 0.788200 0.565100 --24.935400 45.742901 -3.288800 0.068715 0.616533 0.784324 0.774000 0.616500 -0.000000 31.552500 0.128500 -0.069551 -0.031626 0.997077 0.310700 0.582200 --3.798500 31.552500 -0.386300 -0.069551 -0.031626 0.997077 0.257600 0.582200 --3.463700 23.872801 -0.356700 -0.069551 -0.031626 0.997077 0.261000 0.472800 -0.000000 24.132099 -0.356700 -0.069551 -0.031626 0.997077 0.310700 0.472800 --2.225300 60.301201 -1.334400 -0.789816 -0.226827 0.569860 0.434400 0.187400 --2.043500 58.694401 -1.722000 -0.789816 -0.226827 0.569860 0.434700 0.119000 --0.793500 58.611801 -0.022400 -0.789816 -0.226827 0.569860 0.506200 0.129800 --0.793500 58.611801 -0.022400 -0.800106 -0.097243 0.591924 0.506200 0.129800 --2.043500 58.694401 -1.722000 -0.800106 -0.097243 0.591924 0.434700 0.119000 --2.071800 58.080299 -1.837600 -0.800106 -0.097243 0.591924 0.435700 0.090000 --0.860300 57.339199 -0.345300 -0.800106 -0.097243 0.591924 0.507000 0.087800 --2.071800 58.080299 -1.837600 -0.594038 -0.791272 0.144939 0.435700 0.090000 --1.480400 57.287800 -3.167400 -0.594038 -0.791272 0.144939 0.435700 0.022900 --0.509500 56.862801 -2.081200 -0.594038 -0.791272 0.144939 0.497100 0.026700 --0.860300 57.339199 -0.345300 -0.594038 -0.791272 0.144939 0.507000 0.087800 --0.179900 61.274700 0.058500 -0.090663 0.188705 0.977840 0.525600 0.223900 -0.000000 61.912998 -0.048000 -0.090663 0.188705 0.977840 0.533800 0.254400 --0.785400 61.539799 -0.048800 -0.090663 0.188705 0.977840 0.505500 0.247600 --15.884600 46.520500 -7.855800 -0.098387 0.080586 -0.991880 0.879500 0.788400 --17.208200 49.477699 -7.512200 -0.098387 0.080586 -0.991880 0.810800 0.788400 --16.136200 50.023998 -7.546200 -0.098387 0.080586 -0.991880 0.808600 0.809400 --14.885000 46.974701 -7.946000 -0.098387 0.080586 -0.991880 0.879500 0.809400 --15.636800 49.715099 -4.015700 -0.436830 0.889212 0.135946 0.746000 0.809400 --16.136200 50.023998 -7.546200 -0.436830 0.889212 0.135946 0.808600 0.809400 --17.208200 49.477699 -7.512200 -0.436830 0.889212 0.135946 0.810800 0.788400 --16.810101 49.139900 -3.928800 -0.436830 0.889212 0.135946 0.746000 0.788400 --16.192200 44.960400 -4.877100 0.435886 -0.826304 -0.356686 0.677700 0.788400 --15.884600 46.520500 -7.855800 0.435886 -0.826304 -0.356686 0.626900 0.788400 --14.885000 46.974701 -7.946000 0.435886 -0.826304 -0.356686 0.626900 0.809400 --14.977100 45.689201 -4.821000 0.435886 -0.826304 -0.356686 0.680000 0.809400 --16.810101 49.139900 -3.928800 0.116417 -0.190205 0.974818 0.746000 0.788400 --16.192200 44.960400 -4.877100 0.116417 -0.190205 0.974818 0.677700 0.788400 --14.977100 45.689201 -4.821000 0.116417 -0.190205 0.974818 0.680000 0.809400 --15.636800 49.715099 -4.015700 0.116417 -0.190205 0.974818 0.746000 0.809400 --13.779500 47.417198 -7.715300 -0.030432 0.115440 -0.992848 0.879500 0.834400 --14.989100 50.565300 -7.297200 -0.030432 0.115440 -0.992848 0.805300 0.834400 --9.827700 52.989700 -7.188500 -0.030432 0.115440 -0.992848 0.805500 0.922700 --8.756500 49.321098 -7.632900 -0.030432 0.115440 -0.992848 0.879500 0.922700 --15.636800 49.715099 -4.015700 -0.447311 0.883265 0.140554 0.746000 0.809400 --14.989100 50.565300 -7.297200 -0.447311 0.883265 0.140554 0.805300 0.834400 --16.136200 50.023998 -7.546200 -0.447311 0.883265 0.140554 0.808600 0.809400 --13.779500 47.417198 -7.715300 0.409629 -0.847844 -0.336697 0.626900 0.829400 --14.977100 45.689201 -4.821000 0.409629 -0.847844 -0.336697 0.680000 0.809400 --14.885000 46.974701 -7.946000 0.409629 -0.847844 -0.336697 0.626900 0.809400 --0.971400 14.644800 -6.706400 0.777065 -0.629233 0.015366 0.253200 0.212300 --1.221800 14.450400 -2.004100 0.777065 -0.629233 0.015366 0.220300 0.236900 --1.766900 13.754900 -2.918700 0.777065 -0.629233 0.015366 0.216900 0.223600 --26.117701 44.487900 -2.198700 0.374471 0.258120 0.890587 0.788200 0.565100 --27.058001 43.733101 -1.471100 0.374471 0.258120 0.890587 0.783900 0.527900 --26.775499 43.007000 -1.492900 0.374471 0.258120 0.890587 0.799700 0.523000 --25.587200 43.557701 -2.038700 0.374471 0.258120 0.890587 0.806300 0.556900 --25.587200 43.557701 -2.038700 0.386633 -0.610879 0.690899 0.806300 0.556900 --26.775499 43.007000 -1.492900 0.386633 -0.610879 0.690899 0.799700 0.523000 --27.637899 42.321201 -1.984400 0.386633 -0.610879 0.690899 0.816200 0.507300 --25.491899 42.827301 -2.370100 0.386633 -0.610879 0.690899 0.813300 0.554500 --26.117701 44.487900 -2.198700 -0.202601 0.798645 0.566673 0.788200 0.565100 --28.100901 44.177299 -2.470000 -0.202601 0.798645 0.566673 0.756100 0.537200 --27.058001 43.733101 -1.471100 -0.202601 0.798645 0.566673 0.783900 0.527900 --8.184300 53.108700 -3.320400 -0.347207 -0.172872 0.921717 0.746000 0.944900 --7.813100 49.342701 -3.886900 -0.347207 -0.172872 0.921717 0.686800 0.944900 --6.624100 53.529800 -2.653700 -0.347207 -0.172872 0.921717 0.746000 0.986600 --8.747800 53.770199 -7.353300 -0.055764 0.062731 -0.996471 0.807700 0.944900 --6.775800 50.206501 -7.534500 -0.055764 0.062731 -0.996471 0.879500 0.944900 --8.756500 49.321098 -7.632900 -0.055764 0.062731 -0.996471 0.879500 0.922700 --9.827700 52.989700 -7.188500 -0.055764 0.062731 -0.996471 0.805500 0.922700 --28.543800 44.178001 -4.651400 -0.562493 0.826801 -0.001192 0.718600 0.545700 --28.697901 44.238201 -3.477500 -0.562493 0.826801 -0.001192 0.737900 0.538900 --26.753901 45.398300 -2.858600 -0.562493 0.826801 -0.001192 0.766000 0.574200 --27.102699 45.320202 -5.735100 -0.562493 0.826801 -0.001192 0.706300 0.587600 --26.246300 42.901402 -5.383600 0.106461 -0.983873 -0.143736 0.880100 0.569900 --28.380600 42.330502 -3.056600 0.106461 -0.983873 -0.143736 0.853500 0.507000 --28.292801 42.543098 -4.446800 0.106461 -0.983873 -0.143736 0.879400 0.523100 --28.100901 44.177299 -2.470000 -0.192584 0.484112 0.853550 0.756100 0.537200 --26.117701 44.487900 -2.198700 -0.192584 0.484112 0.853550 0.788200 0.565100 --26.753901 45.398300 -2.858600 -0.192584 0.484112 0.853550 0.766000 0.574200 --1.712600 0.024900 -9.195700 0.013475 -0.999909 -0.000374 0.765100 0.147100 --3.769300 -0.009000 1.132900 0.013475 -0.999909 -0.000374 0.765800 0.040900 --5.176800 -0.025000 -0.598300 0.013475 -0.999909 -0.000374 0.783900 0.050100 --3.252600 0.001600 -8.591000 0.013475 -0.999909 -0.000374 0.777900 0.139800 -0.000000 61.912998 -0.048000 -0.158526 0.331625 0.929997 0.533800 0.254400 -0.000000 62.775902 -0.355700 -0.158526 0.331625 0.929997 0.533900 0.286800 --0.785400 61.539799 -0.048800 -0.158526 0.331625 0.929997 0.505500 0.247600 --0.340300 31.400700 -9.922000 0.943854 -0.327649 -0.042263 0.348900 0.396000 --0.425600 30.069099 -1.503600 0.943854 -0.327649 -0.042263 0.251300 0.411900 --0.845100 29.891001 -9.491500 0.943854 -0.327649 -0.042263 0.339400 0.379800 -0.000000 54.522099 -2.187600 0.000000 -0.045410 0.998968 0.310700 0.919600 -0.000000 56.862801 -2.081200 0.000000 -0.045410 0.998968 0.310500 0.953100 --0.509500 56.862801 -2.081200 0.000000 -0.045410 0.998968 0.307800 0.953500 --0.509500 56.862801 -2.081200 -0.098448 -0.971038 0.217700 0.497100 0.026700 -0.000000 56.862801 -2.081200 -0.098448 -0.971038 0.217700 0.533800 0.019000 -0.000000 57.320400 0.190300 -0.098448 -0.971038 0.217700 0.533800 0.095300 --0.860300 57.339199 -0.345300 -0.098448 -0.971038 0.217700 0.507000 0.087800 --5.598500 31.822901 -1.405400 -0.881296 0.021519 0.472075 0.185400 0.436500 --7.453900 29.910801 -4.782000 -0.881296 0.021519 0.472075 0.143900 0.408700 --6.824000 22.193899 -3.254300 -0.881296 0.021519 0.472075 0.165700 0.313700 --6.824000 22.193899 -3.254300 -0.921164 -0.108973 -0.373607 0.165700 0.313700 --7.453900 29.910801 -4.782000 -0.921164 -0.108973 -0.373607 0.143900 0.408700 --5.595300 29.761600 -8.491100 -0.921164 -0.108973 -0.373607 0.097300 0.399700 --5.317800 22.936800 -8.014600 -0.921164 -0.108973 -0.373607 0.105500 0.313700 --3.798500 31.552500 -0.386300 -0.402805 -0.146650 0.903461 0.210900 0.433400 --5.598500 31.822901 -1.405400 -0.402805 -0.146650 0.903461 0.185400 0.436500 --6.824000 22.193899 -3.254300 -0.402805 -0.146650 0.903461 0.165700 0.313700 --2.189200 21.987900 -1.481800 -0.402805 -0.146650 0.903461 0.225500 0.313700 --0.340300 31.400700 -9.922000 -0.229486 -0.108632 -0.967231 0.033600 0.413900 --0.845100 29.891001 -9.491500 -0.229486 -0.108632 -0.967231 0.041700 0.395800 --5.595300 29.761600 -8.491100 -0.229486 -0.108632 -0.967231 0.097300 0.399700 --4.970000 33.082802 -8.871300 -0.229486 -0.108632 -0.967231 0.086900 0.436600 --0.835600 22.853901 -8.203000 0.992234 -0.110109 0.057862 0.306600 0.313700 --0.845100 29.891001 -9.491500 0.992234 -0.110109 0.057862 0.339400 0.379800 --0.425600 30.069099 -1.503600 0.992234 -0.110109 0.057862 0.251300 0.411900 --2.189200 21.987900 -1.481800 0.992234 -0.110109 0.057862 0.225500 0.313700 --2.162800 35.743500 -9.599900 -0.324262 0.084100 -0.942221 0.052600 0.465300 --0.340300 31.400700 -9.922000 -0.324262 0.084100 -0.942221 0.033600 0.413900 --4.970000 33.082802 -8.871300 -0.324262 0.084100 -0.942221 0.086900 0.436600 --5.283200 35.952900 -7.814600 -0.324262 0.084100 -0.942221 0.094100 0.470900 --5.283200 35.952900 -7.814600 -0.889642 0.311183 -0.334218 0.142000 0.631800 --6.542300 35.480598 -4.902800 -0.889642 0.311183 -0.334218 0.182300 0.631800 --5.919200 37.619099 -4.570300 -0.889642 0.311183 -0.334218 0.183200 0.661600 --5.919200 37.619099 -4.570300 -0.882633 0.186716 0.431389 0.183200 0.661600 --6.542300 35.480598 -4.902800 -0.882633 0.186716 0.431389 0.182300 0.631800 --5.598500 31.822901 -1.405400 -0.882633 0.186716 0.431389 0.231500 0.582200 --4.685700 36.664101 -1.616400 -0.882633 0.186716 0.431389 0.239100 0.661600 --0.474100 61.294899 -0.607800 -0.490764 0.255871 0.832875 0.499900 0.227200 --1.340700 61.343498 -1.024900 -0.490764 0.255871 0.832875 0.467800 0.231800 --2.225300 60.301201 -1.334400 -0.490764 0.255871 0.832875 0.434400 0.187400 --0.596000 60.268700 -0.255900 -0.490764 0.255871 0.832875 0.502600 0.185300 --1.340700 61.343498 -1.024900 -0.199083 -0.932669 0.300824 0.467800 0.231800 --0.474100 61.294899 -0.607800 -0.199083 -0.932669 0.300824 0.499900 0.227200 --0.785400 61.539799 -0.048800 -0.199083 -0.932669 0.300824 0.505500 0.247600 --1.792100 61.563202 -0.648200 -0.199083 -0.932669 0.300824 0.464300 0.250800 -0.000000 45.235802 -8.516300 -0.205813 0.023108 -0.978318 0.061400 0.762800 -0.000000 38.221600 -8.073300 -0.205813 0.023108 -0.978318 0.073200 0.661600 --2.827600 38.171799 -8.088300 -0.205813 0.023108 -0.978318 0.114500 0.661600 --5.495700 46.043098 -6.732400 -0.205813 0.023108 -0.978318 0.139900 0.788400 --0.425600 30.069099 -1.503600 0.289736 -0.060654 0.955183 0.251300 0.411900 --3.798500 31.552500 -0.386300 0.289736 -0.060654 0.955183 0.210900 0.433400 --2.189200 21.987900 -1.481800 0.289736 -0.060654 0.955183 0.225500 0.313700 -0.000000 31.547001 -9.939100 0.347255 -0.926523 -0.144807 0.349900 0.400200 -0.000000 30.215401 -1.522000 0.347255 -0.926523 -0.144807 0.252400 0.417000 --0.425600 30.069099 -1.503600 0.347255 -0.926523 -0.144807 0.251300 0.411900 --0.340300 31.400700 -9.922000 0.347255 -0.926523 -0.144807 0.348900 0.396000 --21.061199 44.183601 -7.611200 -0.028361 0.039319 -0.998824 0.879500 0.705100 --22.585199 48.327702 -7.594400 -0.028361 0.039319 -0.998824 0.812700 0.705100 --17.208200 49.477699 -7.512200 -0.028361 0.039319 -0.998824 0.810800 0.788400 --15.884600 46.520500 -7.855800 -0.028361 0.039319 -0.998824 0.879500 0.788400 --22.348700 46.932201 -2.822400 -0.723103 0.652497 0.226650 0.746000 0.680200 --22.585199 48.327702 -7.594400 -0.723103 0.652497 0.226650 0.812700 0.705100 --23.337700 47.268200 -6.945000 -0.723103 0.652497 0.226650 0.809900 0.680200 --21.061199 44.183601 -7.611200 -0.095048 -0.949863 -0.297868 0.626900 0.699700 --21.936399 43.055199 -3.733600 -0.095048 -0.949863 -0.297868 0.691800 0.680200 --22.105101 44.119598 -7.074000 -0.095048 -0.949863 -0.297868 0.641700 0.680200 -0.000000 59.375900 0.272700 0.000000 -0.866545 0.499100 0.533800 0.153800 -0.226300 59.631802 0.717000 0.000000 -0.866545 0.499100 0.537800 0.167300 --0.226300 59.631802 0.717000 0.000000 -0.866545 0.499100 0.529800 0.167300 --0.163800 60.672798 0.405300 0.000000 0.286842 0.957978 0.529100 0.200900 --0.226300 59.631802 0.717000 0.000000 0.286842 0.957978 0.529800 0.167300 -0.226300 59.631802 0.717000 0.000000 0.286842 0.957978 0.537800 0.167300 -0.163800 60.672798 0.405300 0.000000 0.286842 0.957978 0.538500 0.200900 --0.340300 31.400700 -9.922000 -0.012671 0.074070 -0.997173 0.033600 0.413900 --2.162800 35.743500 -9.599900 -0.012671 0.074070 -0.997173 0.052600 0.465300 -0.000000 35.795200 -9.599900 -0.012671 0.074070 -0.997173 0.027500 0.464800 -0.000000 31.547001 -9.939100 -0.012671 0.074070 -0.997173 0.029600 0.415400 --5.919200 37.619099 -4.570300 -0.561685 0.544798 -0.622660 0.183200 0.661600 --2.827600 38.171799 -8.088300 -0.561685 0.544798 -0.622660 0.114500 0.661600 --2.162800 35.743500 -9.599900 -0.561685 0.544798 -0.622660 0.096500 0.631800 --5.283200 35.952900 -7.814600 -0.561685 0.544798 -0.622660 0.142000 0.631800 --28.543800 44.178001 -4.651400 -0.410462 -0.233070 -0.881589 0.718600 0.545700 --27.102699 45.320202 -5.735100 -0.410462 -0.233070 -0.881589 0.706300 0.587600 --26.246300 42.901402 -5.383600 -0.410462 -0.233070 -0.881589 0.663100 0.553800 --28.292801 42.543098 -4.446800 -0.410462 -0.233070 -0.881589 0.704200 0.514300 --25.491899 42.827301 -2.370100 0.201709 -0.968181 -0.148119 0.813300 0.554500 --27.637899 42.321201 -1.984400 0.201709 -0.968181 -0.148119 0.816200 0.507300 --28.380600 42.330502 -3.056600 0.201709 -0.968181 -0.148119 0.853500 0.507000 --26.246300 42.901402 -5.383600 0.185319 -0.980147 -0.070494 0.880100 0.569900 --25.491899 42.827301 -2.370100 0.185319 -0.980147 -0.070494 0.813300 0.554500 --28.380600 42.330502 -3.056600 0.185319 -0.980147 -0.070494 0.853500 0.507000 --0.179900 61.274700 0.058500 0.000000 0.499235 0.866467 0.525600 0.223900 --0.163800 60.672798 0.405300 0.000000 0.499235 0.866467 0.529100 0.200900 -0.163800 60.672798 0.405300 0.000000 0.499235 0.866467 0.538500 0.200900 -0.179900 61.274700 0.058500 0.000000 0.499235 0.866467 0.542100 0.223900 -0.000000 61.912998 -0.048000 0.000000 0.164575 0.986365 0.533800 0.254400 --0.179900 61.274700 0.058500 0.000000 0.164575 0.986365 0.525600 0.223900 -0.179900 61.274700 0.058500 0.000000 0.164575 0.986365 0.542100 0.223900 --2.162800 35.743500 -9.599900 -0.008224 0.529675 -0.848161 0.096500 0.631800 --2.827600 38.171799 -8.088300 -0.008224 0.529675 -0.848161 0.114500 0.661600 -0.000000 38.221600 -8.073300 -0.008224 0.529675 -0.848161 0.073200 0.661600 -0.000000 35.795200 -9.599900 -0.008224 0.529675 -0.848161 0.068100 0.631800 -4.620900 14.945700 -8.516100 0.163464 0.013069 -0.986463 0.912200 0.175600 -3.252600 0.001600 -8.591000 0.163464 0.013069 -0.986463 0.909400 0.032900 -1.712600 0.024900 -9.195700 0.163464 0.013069 -0.986463 0.925400 0.031900 -1.456400 14.610600 -8.695100 0.163464 0.013069 -0.986463 0.943400 0.175600 -4.089400 2.633000 -5.031300 0.982688 -0.088487 -0.162770 0.873900 0.060000 -3.252600 0.001600 -8.591000 0.982688 -0.088487 -0.162770 0.909400 0.032900 -4.620900 14.945700 -8.516100 0.982688 -0.088487 -0.162770 0.912200 0.175600 -5.308800 13.910900 -3.738700 0.982688 -0.088487 -0.162770 0.859000 0.175600 -1.553600 3.059500 -4.173500 -0.398905 -0.098999 0.911633 0.841100 0.058900 -3.061600 3.537800 -3.461700 -0.398905 -0.098999 0.911633 0.856300 0.067800 -1.766900 13.754900 -2.918700 -0.398905 -0.098999 0.911633 0.824200 0.175600 -1.553600 3.059500 -4.173500 -0.983093 0.009545 0.182857 0.841100 0.058900 -1.766900 13.754900 -2.918700 -0.983093 0.009545 0.182857 0.824200 0.175600 -1.239800 14.644800 -6.465300 -0.983093 0.009545 0.182857 0.795300 0.175600 -0.626000 0.031700 -8.336200 -0.983093 0.009545 0.182857 0.808600 0.019600 -5.495700 46.043098 -6.732400 0.860977 -0.085411 -0.501422 0.140100 0.788400 -6.029500 46.188801 -3.956000 0.860977 -0.085411 -0.501422 0.183500 0.792100 -5.919200 37.619099 -4.570300 0.860977 -0.085411 -0.501422 0.183400 0.661600 -2.827600 38.171799 -8.088300 0.860977 -0.085411 -0.501422 0.114700 0.661600 -4.685700 36.664101 -1.616400 0.917535 -0.032092 0.396359 0.239300 0.661600 -5.919200 37.619099 -4.570300 0.917535 -0.032092 0.396359 0.183400 0.661600 -6.029500 46.188801 -3.956000 0.917535 -0.032092 0.396359 0.183500 0.792100 -4.298500 47.001099 -0.058900 0.917535 -0.032092 0.396359 0.249500 0.802400 -6.775800 50.206501 -7.534500 0.223809 0.028781 -0.974208 0.134300 0.852600 -0.000000 50.037800 -9.413700 0.223809 0.028781 -0.974208 0.042000 0.827300 -0.000000 53.738098 -8.986800 0.223809 0.028781 -0.974208 0.028300 0.877800 -7.252500 54.524502 -7.615000 0.223809 0.028781 -0.974208 0.126400 0.913200 -7.252500 54.524502 -7.615000 0.375359 0.901424 0.215731 0.533200 0.977800 -6.624100 53.529800 -2.653700 0.375359 0.901424 0.215731 0.469900 0.977800 -8.184300 53.108700 -3.320400 0.375359 0.901424 0.215731 0.469900 0.942000 -8.747800 53.770199 -7.353300 0.375359 0.901424 0.215731 0.528600 0.942000 -9.827700 52.989700 -7.188500 0.412168 0.895237 0.169320 0.526400 0.916400 -9.508400 52.403099 -3.672700 0.412168 0.895237 0.169320 0.469900 0.916400 -15.636800 49.715099 -4.015700 0.412168 0.895237 0.169320 0.469900 0.803100 -14.989100 50.565300 -7.297200 0.412168 0.895237 0.169320 0.526200 0.828100 -0.000000 37.009800 0.550700 0.339751 -0.089043 0.936291 0.310700 0.661600 -4.685700 36.664101 -1.616400 0.339751 -0.089043 0.936291 0.239300 0.661600 -4.298500 47.001099 -0.058900 0.339751 -0.089043 0.936291 0.249500 0.802400 -0.000000 47.287498 1.094200 0.339751 -0.089043 0.936291 0.310700 0.805700 -0.000000 53.738098 -8.986800 0.139268 0.841727 -0.521633 0.028300 0.877800 -0.000000 55.950600 -7.250100 0.139268 0.841727 -0.521633 0.022600 0.916300 -2.321200 55.471001 -5.570800 0.139268 0.841727 -0.521633 0.053900 0.941000 -7.252500 54.524502 -7.615000 0.139268 0.841727 -0.521633 0.126400 0.913200 -3.773800 51.093601 -1.034300 0.772400 -0.022870 0.634725 0.256800 0.864400 -4.298500 47.001099 -0.058900 0.772400 -0.022870 0.634725 0.249500 0.802400 -6.029500 46.188801 -3.956000 0.772400 -0.022870 0.634725 0.183500 0.792100 -6.624100 53.529800 -2.653700 0.772400 -0.022870 0.634725 0.210400 0.900400 -6.624100 53.529800 -2.653700 0.299992 -0.190133 0.934802 0.210400 0.900400 -6.029500 46.188801 -3.956000 0.299992 -0.190133 0.934802 0.183500 0.792100 -7.813100 49.342701 -3.886900 0.299992 -0.190133 0.934802 0.181200 0.844200 -0.000000 50.880199 0.110000 0.266804 0.255185 0.929352 0.310700 0.860500 -0.000000 47.287498 1.094200 0.266804 0.255185 0.929352 0.310700 0.805700 -4.298500 47.001099 -0.058900 0.266804 0.255185 0.929352 0.249500 0.802400 -3.773800 51.093601 -1.034300 0.266804 0.255185 0.929352 0.256800 0.864400 -16.136200 50.023998 -7.546200 -0.129075 0.179950 -0.975171 0.529500 0.803100 -14.885000 46.974701 -7.946000 -0.129075 0.179950 -0.975171 0.590800 0.803100 -13.779500 47.417198 -7.715300 -0.129075 0.179950 -0.975171 0.590800 0.828100 -14.989100 50.565300 -7.297200 -0.129075 0.179950 -0.975171 0.526200 0.828100 -13.779500 47.417198 -7.715300 -0.437873 -0.882573 -0.171264 0.347800 0.823100 -14.977100 45.689201 -4.821000 -0.437873 -0.882573 -0.171264 0.400900 0.803100 -8.927200 49.128502 -4.128200 -0.437873 -0.882573 -0.171264 0.409800 0.916400 -8.756500 49.321098 -7.632900 -0.437873 -0.882573 -0.171264 0.347800 0.916400 -17.208200 49.477699 -7.512200 0.268622 0.938905 0.215175 0.531700 0.782100 -16.810101 49.139900 -3.928800 0.268622 0.938905 0.215175 0.469900 0.782100 -22.348700 46.932201 -2.822400 0.268622 0.938905 0.215175 0.469900 0.674700 -22.585199 48.327702 -7.594400 0.268622 0.938905 0.215175 0.533600 0.698800 -21.936399 43.055199 -3.733600 -0.256926 -0.186034 0.948357 0.412700 0.674700 -22.348700 46.932201 -2.822400 -0.256926 -0.186034 0.948357 0.469900 0.674700 -16.810101 49.139900 -3.928800 -0.256926 -0.186034 0.948357 0.469900 0.782100 -16.192200 44.960400 -4.877100 -0.256926 -0.186034 0.948357 0.398600 0.782100 -22.105101 44.119598 -7.074000 0.471869 -0.161034 -0.866838 0.583100 0.674700 -21.061199 44.183601 -7.611200 0.471869 -0.161034 -0.866838 0.590800 0.698800 -22.585199 48.327702 -7.594400 0.471869 -0.161034 -0.866838 0.533600 0.698800 -23.337700 47.268200 -6.945000 0.471869 -0.161034 -0.866838 0.530800 0.674700 -15.884600 46.520500 -7.855800 -0.312108 -0.901546 -0.299673 0.347800 0.782100 -21.061199 44.183601 -7.611200 -0.312108 -0.901546 -0.299673 0.347800 0.693400 -21.936399 43.055199 -3.733600 -0.312108 -0.901546 -0.299673 0.412700 0.674700 -16.192200 44.960400 -4.877100 -0.312108 -0.901546 -0.299673 0.398600 0.782100 -5.598500 31.822901 -1.404300 0.899204 0.141743 0.413933 0.847900 0.413200 -7.453900 29.910801 -4.780100 0.899204 0.141743 0.413933 0.884800 0.385400 -7.174300 32.815300 -5.167300 0.899204 0.141743 0.413933 0.893300 0.414200 -4.970000 33.082802 -8.871900 0.875445 0.068330 -0.478463 0.938900 0.409500 -7.174300 32.815300 -5.167300 0.875445 0.068330 -0.478463 0.893300 0.414200 -7.453900 29.910801 -4.780100 0.875445 0.068330 -0.478463 0.884800 0.385400 -5.595300 29.761600 -8.492500 0.875445 0.068330 -0.478463 0.927500 0.375900 -6.827700 20.858999 -3.044800 0.895156 -0.347215 -0.279532 0.858900 0.286100 -6.194700 19.576300 -3.478600 0.895156 -0.347215 -0.279532 0.860200 0.277400 -5.426000 21.341299 -8.132600 0.895156 -0.347215 -0.279532 0.914200 0.282100 -0.835600 22.853901 -8.210700 0.045309 0.086115 -0.995254 0.964300 0.301600 -5.317800 22.936800 -8.016200 0.045309 0.086115 -0.995254 0.916400 0.301600 -5.426000 21.341299 -8.132600 0.045309 0.086115 -0.995254 0.914200 0.282100 -0.899900 21.410400 -8.349400 0.045309 0.086115 -0.995254 0.962800 0.286100 -0.899900 21.410400 -8.349400 -0.986876 0.054006 0.152183 0.726500 0.282100 -1.853000 19.164200 -1.371600 -0.986876 0.054006 0.152183 0.805100 0.274200 -1.957400 20.620800 -1.211500 -0.986876 0.054006 0.152183 0.804700 0.286100 -6.194700 19.576300 -3.478600 0.393316 -0.294694 0.870895 0.860200 0.277400 -6.827700 20.858999 -3.044800 0.393316 -0.294694 0.870895 0.858900 0.286100 -1.957400 20.620800 -1.211500 0.393316 -0.294694 0.870895 0.804700 0.286100 -1.853000 19.164200 -1.371600 0.393316 -0.294694 0.870895 0.805100 0.274200 -5.117200 15.490400 -9.679700 -0.013076 0.210350 -0.977539 0.917300 0.220800 -0.134100 16.169500 -9.174700 -0.013076 0.210350 -0.977539 0.969900 0.225300 -0.899900 21.410400 -8.349400 -0.013076 0.210350 -0.977539 0.962800 0.286100 -5.426000 21.341299 -8.132600 -0.013076 0.210350 -0.977539 0.914200 0.282100 -0.134100 16.169500 -9.174700 -0.979250 0.051054 0.196120 0.732600 0.207100 -1.716700 14.450400 -2.459200 -0.979250 0.051054 0.196120 0.808600 0.236100 -1.853000 19.164200 -1.371600 -0.979250 0.051054 0.196120 0.805100 0.274200 -0.899900 21.410400 -8.349400 -0.979250 0.051054 0.196120 0.726500 0.282100 -1.853000 19.164200 -1.371600 0.369977 -0.140579 0.918343 0.805100 0.274200 -1.716700 14.450400 -2.459200 0.369977 -0.140579 0.918343 0.808600 0.236100 -6.069200 14.643000 -3.762300 0.369977 -0.140579 0.918343 0.859400 0.227800 -6.194700 19.576300 -3.478600 0.369977 -0.140579 0.918343 0.860200 0.277400 -6.069200 14.643000 -3.762300 0.986467 -0.011966 -0.163524 0.859400 0.227800 -5.117200 15.490400 -9.679700 0.986467 -0.011966 -0.163524 0.917300 0.220800 -5.426000 21.341299 -8.132600 0.986467 -0.011966 -0.163524 0.914200 0.282100 -6.194700 19.576300 -3.478600 0.986467 -0.011966 -0.163524 0.860200 0.277400 -7.813100 49.342701 -3.886900 0.881229 -0.394976 -0.259672 0.181200 0.844200 -6.029500 46.188801 -3.956000 0.881229 -0.394976 -0.259672 0.183500 0.792100 -5.495700 46.043098 -6.732400 0.881229 -0.394976 -0.259672 0.140100 0.788400 -6.775800 50.206501 -7.534500 0.881229 -0.394976 -0.259672 0.134300 0.852600 -8.756500 49.321098 -7.632900 -0.341557 -0.936397 -0.080618 0.347800 0.916400 -8.927200 49.128502 -4.128200 -0.341557 -0.936397 -0.080618 0.409800 0.916400 -7.813100 49.342701 -3.886900 -0.341557 -0.936397 -0.080618 0.407700 0.942000 -6.775800 50.206501 -7.534500 -0.341557 -0.936397 -0.080618 0.347800 0.942000 -5.495700 46.043098 -6.732400 0.295037 -0.218453 -0.930178 0.140100 0.788400 -0.000000 45.235802 -8.516300 0.295037 -0.218453 -0.930178 0.061600 0.762900 -0.000000 50.037800 -9.413700 0.295037 -0.218453 -0.930178 0.042000 0.827300 -6.775800 50.206501 -7.534500 0.295037 -0.218453 -0.930178 0.134300 0.852600 -3.773800 51.093601 -1.034300 0.217879 0.518058 0.827130 0.256800 0.864400 -1.435700 55.057400 -2.884500 0.217879 0.518058 0.827130 0.286000 0.931400 -0.000000 54.522099 -2.187600 0.217879 0.518058 0.827130 0.310700 0.919600 -0.000000 50.880199 0.110000 0.217879 0.518058 0.827130 0.310700 0.860500 -0.163800 60.672798 0.405300 0.878123 0.172158 0.446386 0.538500 0.200900 -0.226300 59.631802 0.717000 0.878123 0.172158 0.446386 0.537800 0.167300 -0.605400 59.453602 0.006800 0.878123 0.172158 0.446386 0.558900 0.156900 -0.596000 60.268700 -0.255900 0.878123 0.172158 0.446386 0.565100 0.185300 -0.000000 59.375900 0.272700 0.351825 0.003851 0.936058 0.533800 0.153800 -0.000000 58.735298 0.237300 0.351825 0.003851 0.936058 0.533800 0.134400 -0.793500 58.611801 -0.022400 0.351825 0.003851 0.936058 0.561500 0.129800 -0.605400 59.453602 0.006800 0.351825 0.003851 0.936058 0.558900 0.156900 -1.340700 61.343498 -1.024900 0.500896 0.173312 0.847978 0.599900 0.231700 -2.225300 60.301201 -1.334400 0.500896 0.173312 0.847978 0.633200 0.187400 -2.209500 61.230499 -1.515000 0.500896 0.173312 0.847978 0.636800 0.228100 -0.474100 61.294899 -0.607800 0.419394 -0.893935 0.158081 0.567800 0.227200 -0.785400 61.539799 -0.048800 0.419394 -0.893935 0.158081 0.562200 0.247600 -0.179900 61.274700 0.058500 0.419394 -0.893935 0.158081 0.542100 0.223900 -0.163800 60.672798 0.405300 0.879737 0.234636 0.413532 0.538500 0.200900 -0.596000 60.268700 -0.255900 0.879737 0.234636 0.413532 0.565100 0.185300 -0.474100 61.294899 -0.607800 0.879737 0.234636 0.413532 0.567800 0.227200 -0.179900 61.274700 0.058500 0.879737 0.234636 0.413532 0.542100 0.223900 -0.785400 61.539799 -0.048800 0.405349 0.400850 0.821591 0.562200 0.247600 -1.792100 61.563202 -0.648200 0.405349 0.400850 0.821591 0.603400 0.250800 -1.901400 62.898899 -1.262500 0.405349 0.400850 0.821591 0.616100 0.287500 -0.000000 62.775902 -0.355700 0.405349 0.400850 0.821591 0.533900 0.286800 -1.901400 62.898899 -1.262500 0.958885 0.139689 0.247034 0.616100 0.287500 -1.792100 61.563202 -0.648200 0.958885 0.139689 0.247034 0.603400 0.250800 -2.209500 61.230499 -1.515000 0.958885 0.139689 0.247034 0.636800 0.228100 -2.505800 61.413601 -3.333900 0.958885 0.139689 0.247034 0.700500 0.240200 -2.071800 58.080299 -1.837600 0.982605 0.010378 0.185418 0.632000 0.089900 -2.361600 58.652599 -3.405400 0.982605 0.010378 0.185418 0.691600 0.111600 -2.043500 58.694401 -1.722000 0.982605 0.010378 0.185418 0.633000 0.119000 -2.361600 58.652599 -3.405400 0.835615 -0.547438 -0.045374 0.691600 0.111600 -2.071800 58.080299 -1.837600 0.835615 -0.547438 -0.045374 0.632000 0.089900 -1.480400 57.287800 -3.167400 0.835615 -0.547438 -0.045374 0.679600 0.054000 -2.361600 58.652599 -3.405400 0.962379 -0.178153 0.205154 0.691600 0.111600 -2.484800 60.667999 -2.078300 0.962379 -0.178153 0.205154 0.658100 0.193000 -2.225300 60.301201 -1.334400 0.962379 -0.178153 0.205154 0.633200 0.187400 -2.043500 58.694401 -1.722000 0.962379 -0.178153 0.205154 0.633000 0.119000 -0.596000 60.268700 -0.255900 0.569338 0.180881 0.801958 0.565100 0.185300 -0.605400 59.453602 0.006800 0.569338 0.180881 0.801958 0.558900 0.156900 -0.793500 58.611801 -0.022400 0.569338 0.180881 0.801958 0.561500 0.129800 -2.225300 60.301201 -1.334400 0.569338 0.180881 0.801958 0.633200 0.187400 -0.793500 58.611801 -0.022400 0.424783 -0.113068 0.898207 0.561500 0.129800 -0.000000 58.735298 0.237300 0.424783 -0.113068 0.898207 0.533800 0.134400 -0.000000 57.320400 0.190300 0.424783 -0.113068 0.898207 0.533800 0.095300 -0.860300 57.339199 -0.345300 0.424783 -0.113068 0.898207 0.560600 0.087800 -2.361600 58.652599 -3.405400 0.801295 -0.555920 -0.221086 0.691600 0.111600 -1.480400 57.287800 -3.167400 0.801295 -0.555920 -0.221086 0.679600 0.054000 -1.507500 57.978802 -4.806700 0.801295 -0.555920 -0.221086 0.740400 0.071600 -1.480400 57.287800 -3.167400 0.605736 -0.042761 0.794516 0.293800 0.962800 -0.509500 56.862801 -2.081200 0.605736 -0.042761 0.794516 0.308000 0.953500 -0.000000 54.522099 -2.187600 0.605736 -0.042761 0.794516 0.310700 0.919600 -1.435700 55.057400 -2.884500 0.605736 -0.042761 0.794516 0.286000 0.931400 -1.435700 55.057400 -2.884500 0.962522 0.132164 0.236820 0.286000 0.931400 -2.321200 55.471001 -5.570800 0.962522 0.132164 0.236820 0.259700 0.968000 -1.507500 57.978802 -4.806700 0.962522 0.132164 0.236820 0.270100 0.982500 -1.480400 57.287800 -3.167400 0.962522 0.132164 0.236820 0.293800 0.962800 -5.117200 15.490400 -9.679700 -0.146405 -0.402228 -0.903758 0.917300 0.220800 -1.456400 14.610600 -8.695100 -0.146405 -0.402228 -0.903758 0.949700 0.207500 -0.134100 16.169500 -9.174700 -0.146405 -0.402228 -0.903758 0.969900 0.225300 -0.134100 16.169500 -9.174700 -0.868940 -0.488451 0.079739 0.732600 0.207100 -1.239800 14.644800 -6.465300 -0.868940 -0.488451 0.079739 0.774100 0.204900 -1.716700 14.450400 -2.459200 -0.868940 -0.488451 0.079739 0.808600 0.236100 -5.308800 13.910900 -3.738700 0.254739 -0.396087 0.882170 0.855000 0.218100 -6.069200 14.643000 -3.762300 0.254739 -0.396087 0.882170 0.859400 0.227800 -1.716700 14.450400 -2.459200 0.254739 -0.396087 0.882170 0.808600 0.236100 -1.766900 13.754900 -2.918700 0.254739 -0.396087 0.882170 0.809900 0.215800 -4.620900 14.945700 -8.516100 0.580484 -0.782092 -0.226651 0.914400 0.215300 -5.117200 15.490400 -9.679700 0.580484 -0.782092 -0.226651 0.917300 0.220800 -6.069200 14.643000 -3.762300 0.580484 -0.782092 -0.226651 0.859400 0.227800 -5.308800 13.910900 -3.738700 0.580484 -0.782092 -0.226651 0.855000 0.218100 -1.957400 20.620800 -1.211500 -0.981620 0.066989 0.178702 0.804700 0.286100 -2.189200 21.987900 -1.483700 -0.981620 0.066989 0.178702 0.804500 0.301600 -0.835600 22.853901 -8.210700 -0.981620 0.066989 0.178702 0.728900 0.301600 -0.899900 21.410400 -8.349400 -0.981620 0.066989 0.178702 0.726500 0.282100 -7.174300 32.815300 -5.167300 0.882089 0.156872 -0.444196 0.893300 0.414200 -4.970000 33.082802 -8.871900 0.882089 0.156872 -0.444196 0.938900 0.409500 -5.283200 35.952900 -7.814600 0.882089 0.156872 -0.444196 0.933900 0.441300 -6.542300 35.480598 -4.902800 0.882089 0.156872 -0.444196 0.897200 0.442800 -5.598500 31.822901 -1.404300 0.892181 0.170029 0.418452 0.847900 0.413200 -7.174300 32.815300 -5.167300 0.892181 0.170029 0.418452 0.893300 0.414200 -6.542300 35.480598 -4.902800 0.892181 0.170029 0.418452 0.897200 0.442800 -4.685700 36.664101 -1.616400 0.472747 0.127337 0.871949 0.239300 0.661600 -3.798500 31.552500 -0.388900 0.472747 0.127337 0.871949 0.257800 0.582200 -5.598500 31.822901 -1.404300 0.472747 0.127337 0.871949 0.231700 0.582200 -2.225300 60.301201 -1.334400 0.926529 0.086891 0.366052 0.633200 0.187400 -2.484800 60.667999 -2.078300 0.926529 0.086891 0.366052 0.658100 0.193000 -2.209500 61.230499 -1.515000 0.926529 0.086891 0.366052 0.636800 0.228100 -8.927200 49.128502 -4.128200 0.174303 -0.164506 0.970853 0.409800 0.916400 -9.508400 52.403099 -3.672700 0.174303 -0.164506 0.970853 0.469900 0.916400 -8.184300 53.108700 -3.320400 0.174303 -0.164506 0.970853 0.469900 0.942000 -7.813100 49.342701 -3.886900 0.174303 -0.164506 0.970853 0.407700 0.942000 -8.184300 53.108700 -3.320400 0.526523 0.826719 0.198265 0.469900 0.942000 -9.508400 52.403099 -3.672700 0.526523 0.826719 0.198265 0.469900 0.916400 -9.827700 52.989700 -7.188500 0.526523 0.826719 0.198265 0.526400 0.916400 -8.747800 53.770199 -7.353300 0.526523 0.826719 0.198265 0.528600 0.942000 -8.747800 53.770199 -7.353300 0.154881 -0.035505 -0.987295 0.528600 0.942000 -6.775800 50.206501 -7.534500 0.154881 -0.035505 -0.987295 0.590800 0.942000 -7.252500 54.524502 -7.615000 0.154881 -0.035505 -0.987295 0.533200 0.977800 -8.927200 49.128502 -4.128200 -0.001669 -0.169906 0.985459 0.409800 0.916400 -14.977100 45.689201 -4.821000 -0.001669 -0.169906 0.985459 0.400900 0.803100 -15.636800 49.715099 -4.015700 -0.001669 -0.169906 0.985459 0.469900 0.803100 -9.508400 52.403099 -3.672700 -0.001669 -0.169906 0.985459 0.469900 0.916400 -1.435700 55.057400 -2.884500 0.215818 0.814400 0.538680 0.286000 0.931400 -3.773800 51.093601 -1.034300 0.215818 0.814400 0.538680 0.256800 0.864400 -6.624100 53.529800 -2.653700 0.215818 0.814400 0.538680 0.210400 0.900400 -7.252500 54.524502 -7.615000 0.215818 0.814400 0.538680 0.180600 0.964800 -2.321200 55.471001 -5.570800 0.276118 0.932071 0.234526 0.259700 0.968000 -1.435700 55.057400 -2.884500 0.276118 0.932071 0.234526 0.286000 0.931400 -7.252500 54.524502 -7.615000 0.276118 0.932071 0.234526 0.180600 0.964800 -2.209500 61.230499 -1.515000 0.942806 0.279456 0.181716 0.636800 0.228100 -2.484800 60.667999 -2.078300 0.942806 0.279456 0.181716 0.658100 0.193000 -2.505800 61.413601 -3.333900 0.942806 0.279456 0.181716 0.704900 0.212700 -2.484800 60.667999 -2.078300 0.998559 -0.051788 -0.014052 0.658100 0.193000 -2.361600 58.652599 -3.405400 0.998559 -0.051788 -0.014052 0.691600 0.111600 -2.505800 61.413601 -3.333900 0.998559 -0.051788 -0.014052 0.704900 0.212700 -2.209500 61.230499 -1.515000 0.107977 -0.909631 0.401138 0.636800 0.228100 -1.792100 61.563202 -0.648200 0.107977 -0.909631 0.401138 0.603400 0.250800 -1.340700 61.343498 -1.024900 0.107977 -0.909631 0.401138 0.599900 0.231700 -3.061600 3.537800 -3.461700 -0.234488 0.898953 0.369997 0.290200 0.071700 -1.553600 3.059500 -4.173500 -0.234488 0.898953 0.369997 0.275500 0.071900 -1.568700 1.981700 -0.627100 -0.234488 0.898953 0.369997 0.274000 0.039600 -3.735600 1.816900 0.228400 -0.234488 0.898953 0.369997 0.290200 0.030700 -0.626000 0.031700 -8.336200 -0.992053 0.072189 0.103052 0.238500 0.103000 -1.825200 -0.024100 0.601200 -0.992053 0.072189 0.103052 0.266200 0.023600 -1.568700 1.981700 -0.627100 -0.992053 0.072189 0.103052 0.274000 0.039600 -1.553600 3.059500 -4.173500 -0.992053 0.072189 0.103052 0.275500 0.071900 -1.825200 -0.024100 0.601200 0.002195 -0.999985 -0.005027 0.783900 0.050100 -0.626000 0.031700 -8.336200 0.002195 -0.999985 -0.005027 0.777900 0.139800 -1.712600 0.024900 -9.195700 0.002195 -0.999985 -0.005027 0.765100 0.147100 -3.769300 -0.009000 1.132900 0.002195 -0.999985 -0.005027 0.765800 0.040900 -1.712600 0.024900 -9.195700 -0.920325 0.042849 -0.388801 0.925400 0.031900 -0.626000 0.031700 -8.336200 -0.920325 0.042849 -0.388801 0.938600 0.031200 -1.239800 14.644800 -6.465300 -0.920325 0.042849 -0.388801 0.974400 0.175600 -1.456400 14.610600 -8.695100 -0.920325 0.042849 -0.388801 0.943400 0.175600 -1.568700 1.981700 -0.627100 -0.270273 0.452545 0.849798 0.274000 0.039600 -1.825200 -0.024100 0.601200 -0.270273 0.452545 0.849798 0.266200 0.023600 -3.769300 -0.009000 1.132900 -0.270273 0.452545 0.849798 0.289700 0.012400 -3.735600 1.816900 0.228400 -0.270273 0.452545 0.849798 0.290200 0.030700 -4.089400 2.633000 -5.031300 0.957442 -0.073711 -0.279054 0.310400 0.073900 -5.390300 1.568200 -1.670300 0.957442 -0.073711 -0.279054 0.308400 0.040400 -5.176800 -0.025000 -0.598300 0.957442 -0.073711 -0.279054 0.313500 0.023800 -3.252600 0.001600 -8.591000 0.957442 -0.073711 -0.279054 0.345300 0.097200 -3.769300 -0.009000 1.132900 0.738109 0.308147 0.600201 0.289700 0.012400 -5.176800 -0.025000 -0.598300 0.738109 0.308147 0.600201 0.313500 0.023800 -5.390300 1.568200 -1.670300 0.738109 0.308147 0.600201 0.308400 0.040400 -3.735600 1.816900 0.228400 0.738109 0.308147 0.600201 0.290200 0.030700 -5.390300 1.568200 -1.670300 0.560649 0.811720 0.163660 0.308400 0.040400 -4.089400 2.633000 -5.031300 0.560649 0.811720 0.163660 0.310400 0.073900 -3.061600 3.537800 -3.461700 0.560649 0.811720 0.163660 0.290200 0.071700 -3.735600 1.816900 0.228400 0.560649 0.811720 0.163660 0.290200 0.030700 -3.061600 3.537800 -3.461700 0.452521 -0.074303 0.888653 0.856300 0.067800 -4.089400 2.633000 -5.031300 0.452521 -0.074303 0.888653 0.873900 0.060000 -5.308800 13.910900 -3.738700 0.452521 -0.074303 0.888653 0.859000 0.175600 -1.766900 13.754900 -2.918700 0.452521 -0.074303 0.888653 0.824200 0.175600 -5.117200 15.490400 -9.679700 0.118623 -0.917754 -0.379021 0.917300 0.220800 -4.620900 14.945700 -8.516100 0.118623 -0.917754 -0.379021 0.914400 0.215300 -1.456400 14.610600 -8.695100 0.118623 -0.917754 -0.379021 0.949700 0.207500 -1.456400 14.610600 -8.695100 -0.751462 -0.656769 -0.062923 0.746600 0.183800 -1.239800 14.644800 -6.465300 -0.751462 -0.656769 -0.062923 0.774100 0.204900 -0.134100 16.169500 -9.174700 -0.751462 -0.656769 -0.062923 0.732600 0.207100 -5.426000 21.341299 -8.132600 0.959663 0.028025 -0.279753 0.914200 0.282100 -5.317800 22.936800 -8.016200 0.959663 0.028025 -0.279753 0.916400 0.301600 -6.824000 22.193899 -3.251500 0.959663 0.028025 -0.279753 0.860400 0.301600 -6.827700 20.858999 -3.044800 0.959663 0.028025 -0.279753 0.858900 0.286100 -0.845100 29.891001 -9.498900 0.127296 -0.127838 -0.983592 0.978500 0.369500 -5.595300 29.761600 -8.492500 0.127296 -0.127838 -0.983592 0.927500 0.375900 -5.317800 22.936800 -8.016200 0.127296 -0.127838 -0.983592 0.916400 0.301600 -0.835600 22.853901 -8.210700 0.127296 -0.127838 -0.983592 0.964300 0.301600 -1.957400 20.620800 -1.211500 0.345482 0.135420 0.928603 0.804700 0.286100 -6.827700 20.858999 -3.044800 0.345482 0.135420 0.928603 0.858900 0.286100 -6.824000 22.193899 -3.251500 0.345482 0.135420 0.928603 0.860400 0.301600 -2.189200 21.987900 -1.483700 0.345482 0.135420 0.928603 0.804500 0.301600 -0.605400 59.453602 0.006800 0.276378 -0.886938 0.370075 0.558900 0.156900 -0.226300 59.631802 0.717000 0.276378 -0.886938 0.370075 0.537800 0.167300 -0.000000 59.375900 0.272700 0.276378 -0.886938 0.370075 0.533800 0.153800 -21.936399 43.055199 -3.733600 0.245050 -0.199318 0.948801 0.412700 0.674700 -23.265499 44.290199 -3.614200 0.245050 -0.199318 0.948801 0.431800 0.655600 -23.323000 46.228001 -3.425200 0.245050 -0.199318 0.948801 0.469900 0.655600 -22.348700 46.932201 -2.822400 0.245050 -0.199318 0.948801 0.469900 0.674700 -22.105101 44.119598 -7.074000 0.680722 -0.210597 -0.701617 0.583100 0.674700 -23.337700 47.268200 -6.945000 0.680722 -0.210597 -0.701617 0.530800 0.674700 -23.881300 46.267799 -5.995500 0.680722 -0.210597 -0.701617 0.521800 0.655600 -23.273100 44.479099 -6.170500 0.680722 -0.210597 -0.701617 0.556600 0.655600 -22.348700 46.932201 -2.822400 0.710630 0.673907 0.202126 0.469900 0.674700 -23.323000 46.228001 -3.425200 0.710630 0.673907 0.202126 0.469900 0.655600 -23.881300 46.267799 -5.995500 0.710630 0.673907 0.202126 0.521800 0.655600 -23.337700 47.268200 -6.945000 0.710630 0.673907 0.202126 0.530800 0.674700 -21.936399 43.055199 -3.733600 0.575702 -0.803125 -0.153486 0.412700 0.674700 -22.105101 44.119598 -7.074000 0.575702 -0.803125 -0.153486 0.362600 0.674700 -23.273100 44.479099 -6.170500 0.575702 -0.803125 -0.153486 0.386800 0.655600 -23.265499 44.290199 -3.614200 0.575702 -0.803125 -0.153486 0.431800 0.655600 -23.323000 46.228001 -3.425200 -0.234519 0.052147 0.970712 0.469900 0.655600 -23.265499 44.290199 -3.614200 -0.234519 0.052147 0.970712 0.431800 0.655600 -24.446100 44.099098 -3.039500 -0.234519 0.052147 0.970712 0.444100 0.624200 -24.935400 45.742901 -3.288800 -0.234519 0.052147 0.970712 0.469900 0.624200 -23.273100 44.479099 -6.170500 0.051663 0.047611 -0.997529 0.556600 0.655600 -23.881300 46.267799 -5.995500 0.051663 0.047611 -0.997529 0.521800 0.655600 -25.982700 45.641201 -5.974700 0.051663 0.047611 -0.997529 0.517100 0.624200 -25.718901 44.407902 -5.989100 0.051663 0.047611 -0.997529 0.533000 0.624200 -23.881300 46.267799 -5.995500 0.283035 0.956157 0.075198 0.521800 0.655600 -23.323000 46.228001 -3.425200 0.283035 0.956157 0.075198 0.469900 0.655600 -24.935400 45.742901 -3.288800 0.283035 0.956157 0.075198 0.469900 0.624200 -25.982700 45.641201 -5.974700 0.283035 0.956157 0.075198 0.517100 0.624200 -23.265499 44.290199 -3.614200 -0.050680 -0.993534 -0.101596 0.431800 0.655600 -23.273100 44.479099 -6.170500 -0.050680 -0.993534 -0.101596 0.386800 0.655600 -25.718901 44.407902 -5.989100 -0.050680 -0.993534 -0.101596 0.398000 0.624200 -24.446100 44.099098 -3.039500 -0.050680 -0.993534 -0.101596 0.444100 0.624200 -3.798500 31.552500 -0.388900 0.303080 0.047081 0.951802 0.257800 0.582200 -4.685700 36.664101 -1.616400 0.303080 0.047081 0.951802 0.239300 0.661600 -0.000000 37.009800 0.550700 0.303080 0.047081 0.951802 0.310700 0.661600 -0.000000 31.552500 0.128500 0.303080 0.047081 0.951802 0.310700 0.582200 -27.058001 43.733101 -1.471100 0.612973 -0.035197 0.789319 0.783900 0.527900 -26.775499 43.007000 -1.492900 0.612973 -0.035197 0.789319 0.799700 0.523000 -27.637899 42.321201 -1.984400 0.612973 -0.035197 0.789319 0.780200 0.502700 -28.100901 44.177299 -2.470000 0.612973 -0.035197 0.789319 0.756100 0.537200 -27.102699 45.320202 -5.735100 0.288380 -0.175341 -0.941325 0.706300 0.587600 -26.246300 42.901402 -5.383600 0.288380 -0.175341 -0.941325 0.663100 0.553800 -25.718901 44.407902 -5.989100 0.288380 -0.175341 -0.941325 0.674700 0.592000 -25.982700 45.641201 -5.974700 0.288380 -0.175341 -0.941325 0.701400 0.609900 -24.935400 45.742901 -3.288800 0.215944 0.976143 0.022647 0.774000 0.616500 -26.753901 45.398300 -2.858600 0.215944 0.976143 0.022647 0.766000 0.574200 -27.102699 45.320202 -5.735100 0.215944 0.976143 0.022647 0.706300 0.587600 -25.982700 45.641201 -5.974700 0.215944 0.976143 0.022647 0.701400 0.609900 -24.446100 44.099098 -3.039500 -0.806467 -0.440747 -0.394147 0.815000 0.599300 -25.718901 44.407902 -5.989100 -0.806467 -0.440747 -0.394147 0.885900 0.607200 -26.246300 42.901402 -5.383600 -0.806467 -0.440747 -0.394147 0.880100 0.569900 -28.380600 42.330502 -3.056600 0.840529 -0.044209 0.539960 0.741600 0.498200 -28.697901 44.238201 -3.477500 0.840529 -0.044209 0.539960 0.737900 0.538900 -28.100901 44.177299 -2.470000 0.840529 -0.044209 0.539960 0.756100 0.537200 -27.637899 42.321201 -1.984400 0.840529 -0.044209 0.539960 0.780200 0.502700 -28.380600 42.330502 -3.056600 0.979149 -0.175223 -0.102788 0.741600 0.498200 -28.292801 42.543098 -4.446800 0.979149 -0.175223 -0.102788 0.704200 0.514300 -28.543800 44.178001 -4.651400 0.979149 -0.175223 -0.102788 0.718600 0.545700 -28.697901 44.238201 -3.477500 0.979149 -0.175223 -0.102788 0.737900 0.538900 -26.753901 45.398300 -2.858600 0.560189 0.737837 0.376544 0.766000 0.574200 -28.100901 44.177299 -2.470000 0.560189 0.737837 0.376544 0.756100 0.537200 -28.697901 44.238201 -3.477500 0.560189 0.737837 0.376544 0.737900 0.538900 -24.935400 45.742901 -3.288800 -0.484106 0.321222 0.813915 0.774000 0.616500 -24.446100 44.099098 -3.039500 -0.484106 0.321222 0.813915 0.815000 0.599300 -25.587200 43.557701 -2.038700 -0.484106 0.321222 0.813915 0.806300 0.556900 -26.117701 44.487900 -2.198700 -0.484106 0.321222 0.813915 0.788200 0.565100 -24.446100 44.099098 -3.039500 -0.765721 -0.642695 -0.024780 0.815000 0.599300 -26.246300 42.901402 -5.383600 -0.765721 -0.642695 -0.024780 0.880100 0.569900 -25.491899 42.827301 -2.370100 -0.765721 -0.642695 -0.024780 0.813300 0.554500 -25.587200 43.557701 -2.038700 -0.765721 -0.642695 -0.024780 0.806300 0.556900 -26.753901 45.398300 -2.858600 -0.068715 0.616533 0.784324 0.766000 0.574200 -24.935400 45.742901 -3.288800 -0.068715 0.616533 0.784324 0.774000 0.616500 -26.117701 44.487900 -2.198700 -0.068715 0.616533 0.784324 0.788200 0.565100 -0.000000 31.552500 0.128500 0.069913 -0.031462 0.997057 0.310700 0.582200 -0.000000 24.132099 -0.356700 0.069913 -0.031462 0.997057 0.310700 0.472800 -3.463700 23.872801 -0.356700 0.069913 -0.031462 0.997057 0.261200 0.472800 -3.798500 31.552500 -0.388900 0.069913 -0.031462 0.997057 0.257800 0.582200 -2.225300 60.301201 -1.334400 0.789816 -0.226827 0.569860 0.633200 0.187400 -0.793500 58.611801 -0.022400 0.789816 -0.226827 0.569860 0.561500 0.129800 -2.043500 58.694401 -1.722000 0.789816 -0.226827 0.569860 0.633000 0.119000 -0.793500 58.611801 -0.022400 0.800106 -0.097243 0.591924 0.561500 0.129800 -0.860300 57.339199 -0.345300 0.800106 -0.097243 0.591924 0.560600 0.087800 -2.071800 58.080299 -1.837600 0.800106 -0.097243 0.591924 0.632000 0.089900 -2.043500 58.694401 -1.722000 0.800106 -0.097243 0.591924 0.633000 0.119000 -2.071800 58.080299 -1.837600 0.594038 -0.791272 0.144939 0.632000 0.089900 -0.860300 57.339199 -0.345300 0.594038 -0.791272 0.144939 0.560600 0.087800 -0.509500 56.862801 -2.081200 0.594038 -0.791272 0.144939 0.570500 0.026600 -1.480400 57.287800 -3.167400 0.594038 -0.791272 0.144939 0.631900 0.022800 -0.179900 61.274700 0.058500 0.090663 0.188705 0.977840 0.542100 0.223900 -0.785400 61.539799 -0.048800 0.090663 0.188705 0.977840 0.562200 0.247600 -0.000000 61.912998 -0.048000 0.090663 0.188705 0.977840 0.533800 0.254400 -15.884600 46.520500 -7.855800 0.098387 0.080586 -0.991880 0.590800 0.782100 -14.885000 46.974701 -7.946000 0.098387 0.080586 -0.991880 0.590800 0.803100 -16.136200 50.023998 -7.546200 0.098387 0.080586 -0.991880 0.529500 0.803100 -17.208200 49.477699 -7.512200 0.098387 0.080586 -0.991880 0.531700 0.782100 -15.636800 49.715099 -4.015700 0.436830 0.889212 0.135946 0.469900 0.803100 -16.810101 49.139900 -3.928800 0.436830 0.889212 0.135946 0.469900 0.782100 -17.208200 49.477699 -7.512200 0.436830 0.889212 0.135946 0.531700 0.782100 -16.136200 50.023998 -7.546200 0.436830 0.889212 0.135946 0.529500 0.803100 -16.192200 44.960400 -4.877100 -0.435886 -0.826304 -0.356686 0.398600 0.782100 -14.977100 45.689201 -4.821000 -0.435886 -0.826304 -0.356686 0.400900 0.803100 -14.885000 46.974701 -7.946000 -0.435886 -0.826304 -0.356686 0.347800 0.803100 -15.884600 46.520500 -7.855800 -0.435886 -0.826304 -0.356686 0.347800 0.782100 -16.810101 49.139900 -3.928800 -0.116417 -0.190205 0.974818 0.469900 0.782100 -15.636800 49.715099 -4.015700 -0.116417 -0.190205 0.974818 0.469900 0.803100 -14.977100 45.689201 -4.821000 -0.116417 -0.190205 0.974818 0.400900 0.803100 -16.192200 44.960400 -4.877100 -0.116417 -0.190205 0.974818 0.398600 0.782100 -13.779500 47.417198 -7.715300 0.030432 0.115440 -0.992848 0.590800 0.828100 -8.756500 49.321098 -7.632900 0.030432 0.115440 -0.992848 0.590800 0.916400 -9.827700 52.989700 -7.188500 0.030432 0.115440 -0.992848 0.526400 0.916400 -14.989100 50.565300 -7.297200 0.030432 0.115440 -0.992848 0.526200 0.828100 -15.636800 49.715099 -4.015700 0.447311 0.883265 0.140554 0.469900 0.803100 -16.136200 50.023998 -7.546200 0.447311 0.883265 0.140554 0.529500 0.803100 -14.989100 50.565300 -7.297200 0.447311 0.883265 0.140554 0.526200 0.828100 -13.779500 47.417198 -7.715300 -0.409629 -0.847844 -0.336696 0.347800 0.823100 -14.885000 46.974701 -7.946000 -0.409629 -0.847844 -0.336696 0.347800 0.803100 -14.977100 45.689201 -4.821000 -0.409629 -0.847844 -0.336696 0.400900 0.803100 -1.239800 14.644800 -6.465300 -0.983473 -0.143727 0.110102 0.774100 0.204900 -1.766900 13.754900 -2.918700 -0.983473 -0.143727 0.110102 0.809900 0.215800 -1.716700 14.450400 -2.459200 -0.983473 -0.143727 0.110102 0.808600 0.236100 -26.117701 44.487900 -2.198700 -0.374471 0.258120 0.890587 0.788200 0.565100 -25.587200 43.557701 -2.038700 -0.374471 0.258120 0.890587 0.806300 0.556900 -26.775499 43.007000 -1.492900 -0.374471 0.258120 0.890587 0.799700 0.523000 -27.058001 43.733101 -1.471100 -0.374471 0.258120 0.890587 0.783900 0.527900 -25.587200 43.557701 -2.038700 -0.386633 -0.610879 0.690899 0.806300 0.556900 -25.491899 42.827301 -2.370100 -0.386633 -0.610879 0.690899 0.813300 0.554500 -27.637899 42.321201 -1.984400 -0.386633 -0.610879 0.690899 0.816200 0.507300 -26.775499 43.007000 -1.492900 -0.386633 -0.610879 0.690899 0.799700 0.523000 -26.117701 44.487900 -2.198700 0.202601 0.798645 0.566673 0.788200 0.565100 -27.058001 43.733101 -1.471100 0.202601 0.798645 0.566673 0.783900 0.527900 -28.100901 44.177299 -2.470000 0.202601 0.798645 0.566673 0.756100 0.537200 -8.184300 53.108700 -3.320400 0.347207 -0.172872 0.921717 0.469900 0.942000 -6.624100 53.529800 -2.653700 0.347207 -0.172872 0.921717 0.469900 0.977800 -7.813100 49.342701 -3.886900 0.347207 -0.172872 0.921717 0.407700 0.942000 -8.747800 53.770199 -7.353300 0.055764 0.062731 -0.996471 0.528600 0.942000 -9.827700 52.989700 -7.188500 0.055764 0.062731 -0.996471 0.526400 0.916400 -8.756500 49.321098 -7.632900 0.055764 0.062731 -0.996471 0.590800 0.916400 -6.775800 50.206501 -7.534500 0.055764 0.062731 -0.996471 0.590800 0.942000 -28.543800 44.178001 -4.651400 0.562493 0.826801 -0.001192 0.718600 0.545700 -27.102699 45.320202 -5.735100 0.562493 0.826801 -0.001192 0.706300 0.587600 -26.753901 45.398300 -2.858600 0.562493 0.826801 -0.001192 0.766000 0.574200 -28.697901 44.238201 -3.477500 0.562493 0.826801 -0.001192 0.737900 0.538900 -26.246300 42.901402 -5.383600 -0.106461 -0.983873 -0.143736 0.880100 0.569900 -28.292801 42.543098 -4.446800 -0.106461 -0.983873 -0.143736 0.879400 0.523100 -28.380600 42.330502 -3.056600 -0.106461 -0.983873 -0.143736 0.853500 0.507000 -28.100901 44.177299 -2.470000 0.192584 0.484112 0.853550 0.756100 0.537200 -26.753901 45.398300 -2.858600 0.192584 0.484112 0.853550 0.766000 0.574200 -26.117701 44.487900 -2.198700 0.192584 0.484112 0.853550 0.788200 0.565100 -1.712600 0.024900 -9.195700 -0.013475 -0.999909 -0.000374 0.765100 0.147100 -3.252600 0.001600 -8.591000 -0.013475 -0.999909 -0.000374 0.751000 0.138000 -5.176800 -0.025000 -0.598300 -0.013475 -0.999909 -0.000374 0.748300 0.055100 -3.769300 -0.009000 1.132900 -0.013475 -0.999909 -0.000374 0.765800 0.040900 -0.000000 61.912998 -0.048000 0.158526 0.331625 0.929997 0.533800 0.254400 -0.785400 61.539799 -0.048800 0.158526 0.331625 0.929997 0.562200 0.247600 -0.000000 62.775902 -0.355700 0.158526 0.331625 0.929997 0.533900 0.286800 -0.340300 31.400700 -9.928000 -0.943868 -0.327610 -0.042246 0.694900 0.384200 -0.845100 29.891001 -9.498900 -0.943868 -0.327610 -0.042246 0.702700 0.368200 -0.425600 30.069099 -1.507500 -0.943868 -0.327610 -0.042246 0.785600 0.393300 -0.509500 56.862801 -2.081200 0.000000 -0.045410 0.998968 0.308000 0.953500 -0.509500 56.862801 -2.081200 0.098448 -0.971038 0.217700 0.570500 0.026600 -0.860300 57.339199 -0.345300 0.098448 -0.971038 0.217700 0.560600 0.087800 -0.000000 57.320400 0.190300 0.098448 -0.971038 0.217700 0.533800 0.095300 -0.000000 56.862801 -2.081200 0.098448 -0.971038 0.217700 0.533800 0.019000 -5.598500 31.822901 -1.404300 0.881264 0.021588 0.472131 0.847900 0.413200 -6.824000 22.193899 -3.251500 0.881264 0.021588 0.472131 0.860400 0.301600 -7.453900 29.910801 -4.780100 0.881264 0.021588 0.472131 0.884800 0.385400 -6.824000 22.193899 -3.251500 0.921284 -0.108958 -0.373315 0.860400 0.301600 -5.317800 22.936800 -8.016200 0.921284 -0.108958 -0.373315 0.916400 0.301600 -5.595300 29.761600 -8.492500 0.921284 -0.108958 -0.373315 0.927500 0.375900 -7.453900 29.910801 -4.780100 0.921284 -0.108958 -0.373315 0.884800 0.385400 -3.798500 31.552500 -0.388900 0.401815 -0.146587 0.903912 0.824000 0.411400 -2.189200 21.987900 -1.483700 0.401815 -0.146587 0.903912 0.804500 0.301600 -6.824000 22.193899 -3.251500 0.401815 -0.146587 0.903912 0.860400 0.301600 -5.598500 31.822901 -1.404300 0.401815 -0.146587 0.903912 0.847900 0.413200 -0.340300 31.400700 -9.928000 0.230509 -0.107925 -0.967067 0.986800 0.385200 -4.970000 33.082802 -8.871900 0.230509 -0.107925 -0.967067 0.938900 0.409500 -5.595300 29.761600 -8.492500 0.230509 -0.107925 -0.967067 0.927500 0.375900 -0.845100 29.891001 -9.498900 0.230509 -0.107925 -0.967067 0.978500 0.369500 -0.835600 22.853901 -8.210700 -0.992236 -0.110106 0.057826 0.728900 0.301600 -2.189200 21.987900 -1.483700 -0.992236 -0.110106 0.057826 0.804500 0.301600 -0.425600 30.069099 -1.507500 -0.992236 -0.110106 0.057826 0.785600 0.393300 -0.845100 29.891001 -9.498900 -0.992236 -0.110106 0.057826 0.702700 0.368200 -2.162800 35.743500 -9.599900 0.324673 0.084802 -0.942017 0.972400 0.433600 -5.283200 35.952900 -7.814600 0.324673 0.084802 -0.942017 0.933900 0.441300 -4.970000 33.082802 -8.871900 0.324673 0.084802 -0.942017 0.938900 0.409500 -0.340300 31.400700 -9.928000 0.324673 0.084802 -0.942017 0.986800 0.385200 -5.283200 35.952900 -7.814600 0.889642 0.311183 -0.334218 0.142200 0.631800 -5.919200 37.619099 -4.570300 0.889642 0.311183 -0.334218 0.183400 0.661600 -6.542300 35.480598 -4.902800 0.889642 0.311183 -0.334218 0.182500 0.631800 -5.919200 37.619099 -4.570300 0.882631 0.186784 0.431364 0.183400 0.661600 -4.685700 36.664101 -1.616400 0.882631 0.186784 0.431364 0.239300 0.661600 -5.598500 31.822901 -1.404300 0.882631 0.186784 0.431364 0.231700 0.582200 -6.542300 35.480598 -4.902800 0.882631 0.186784 0.431364 0.182500 0.631800 -0.474100 61.294899 -0.607800 0.490764 0.255871 0.832875 0.567800 0.227200 -0.596000 60.268700 -0.255900 0.490764 0.255871 0.832875 0.565100 0.185300 -2.225300 60.301201 -1.334400 0.490764 0.255871 0.832875 0.633200 0.187400 -1.340700 61.343498 -1.024900 0.490764 0.255871 0.832875 0.599900 0.231700 -1.340700 61.343498 -1.024900 0.199083 -0.932669 0.300824 0.599900 0.231700 -1.792100 61.563202 -0.648200 0.199083 -0.932669 0.300824 0.603400 0.250800 -0.785400 61.539799 -0.048800 0.199083 -0.932669 0.300824 0.562200 0.247600 -0.474100 61.294899 -0.607800 0.199083 -0.932669 0.300824 0.567800 0.227200 -0.000000 45.235802 -8.516300 0.205813 0.023108 -0.978318 0.061600 0.762900 -5.495700 46.043098 -6.732400 0.205813 0.023108 -0.978318 0.140100 0.788400 -2.827600 38.171799 -8.088300 0.205813 0.023108 -0.978318 0.114700 0.661600 -0.000000 38.221600 -8.073300 0.205813 0.023108 -0.978318 0.073400 0.661600 -0.425600 30.069099 -1.507500 -0.290133 -0.060504 0.955072 0.785600 0.393300 -2.189200 21.987900 -1.483700 -0.290133 -0.060504 0.955072 0.804500 0.301600 -3.798500 31.552500 -0.388900 -0.290133 -0.060504 0.955072 0.824000 0.411400 -0.000000 31.547001 -9.939100 -0.348901 -0.925923 -0.144686 0.694200 0.388200 -0.340300 31.400700 -9.928000 -0.348901 -0.925923 -0.144686 0.694900 0.384200 -0.425600 30.069099 -1.507500 -0.348901 -0.925923 -0.144686 0.785600 0.393300 -0.000000 30.215401 -1.522000 -0.348901 -0.925923 -0.144686 0.785000 0.398100 -21.061199 44.183601 -7.611200 0.028361 0.039319 -0.998824 0.590800 0.698800 -15.884600 46.520500 -7.855800 0.028361 0.039319 -0.998824 0.590800 0.782100 -17.208200 49.477699 -7.512200 0.028361 0.039319 -0.998824 0.531700 0.782100 -22.585199 48.327702 -7.594400 0.028361 0.039319 -0.998824 0.533600 0.698800 -22.348700 46.932201 -2.822400 0.723103 0.652497 0.226650 0.469900 0.674700 -23.337700 47.268200 -6.945000 0.723103 0.652497 0.226650 0.530800 0.674700 -22.585199 48.327702 -7.594400 0.723103 0.652497 0.226650 0.533600 0.698800 -21.061199 44.183601 -7.611200 0.095048 -0.949863 -0.297868 0.347800 0.693400 -22.105101 44.119598 -7.074000 0.095048 -0.949863 -0.297868 0.362600 0.674700 -21.936399 43.055199 -3.733600 0.095048 -0.949863 -0.297868 0.412700 0.674700 -0.340300 31.400700 -9.928000 0.010374 0.075249 -0.997111 0.986800 0.385200 -0.000000 31.547001 -9.939100 0.010374 0.075249 -0.997111 0.990600 0.386300 -0.000000 35.795200 -9.599900 0.010374 0.075249 -0.997111 0.995500 0.431600 -2.162800 35.743500 -9.599900 0.010374 0.075249 -0.997111 0.972400 0.433600 -5.919200 37.619099 -4.570300 0.561685 0.544798 -0.622660 0.183400 0.661600 -5.283200 35.952900 -7.814600 0.561685 0.544798 -0.622660 0.142200 0.631800 -2.162800 35.743500 -9.599900 0.561685 0.544798 -0.622660 0.096700 0.631800 -2.827600 38.171799 -8.088300 0.561685 0.544798 -0.622660 0.114700 0.661600 -28.543800 44.178001 -4.651400 0.410462 -0.233070 -0.881589 0.718600 0.545700 -28.292801 42.543098 -4.446800 0.410462 -0.233070 -0.881589 0.704200 0.514300 -26.246300 42.901402 -5.383600 0.410462 -0.233070 -0.881589 0.663100 0.553800 -27.102699 45.320202 -5.735100 0.410462 -0.233070 -0.881589 0.706300 0.587600 -25.491899 42.827301 -2.370100 -0.201709 -0.968181 -0.148119 0.813300 0.554500 -28.380600 42.330502 -3.056600 -0.201709 -0.968181 -0.148119 0.853500 0.507000 -27.637899 42.321201 -1.984400 -0.201709 -0.968181 -0.148119 0.816200 0.507300 -26.246300 42.901402 -5.383600 -0.185319 -0.980147 -0.070494 0.880100 0.569900 -28.380600 42.330502 -3.056600 -0.185319 -0.980147 -0.070494 0.853500 0.507000 -25.491899 42.827301 -2.370100 -0.185319 -0.980147 -0.070494 0.813300 0.554500 -2.162800 35.743500 -9.599900 0.008224 0.529675 -0.848161 0.096700 0.631800 -0.000000 35.795200 -9.599900 0.008224 0.529675 -0.848161 0.068300 0.631800 -0.000000 38.221600 -8.073300 0.008224 0.529675 -0.848161 0.073400 0.661600 -2.827600 38.171799 -8.088300 0.008224 0.529675 -0.848161 0.114700 0.661600 -0.706900 62.538601 -0.289700 0.498102 0.211804 0.840853 0.409100 0.538600 -1.838200 62.255798 -0.802600 0.498102 0.211804 0.840853 0.430000 0.507000 -1.901400 63.532299 -1.247600 0.498102 0.211804 0.840853 0.451500 0.531400 -0.672300 63.485901 -0.421800 0.498102 0.211804 0.840853 0.426300 0.552700 -1.901400 63.532299 -1.247600 0.915374 0.111541 0.386845 0.451500 0.531400 -1.838200 62.255798 -0.802600 0.915374 0.111541 0.386845 0.430000 0.507000 -3.194200 60.597198 -3.460400 0.915374 0.111541 0.386845 0.492000 0.451400 -2.758700 63.532299 -3.348800 0.915374 0.111541 0.386845 0.499700 0.518700 -2.758700 63.532299 -3.348800 0.984906 0.142377 0.098436 0.499700 0.518700 -3.194200 60.597198 -3.460400 0.984906 0.142377 0.098436 0.492000 0.451400 -3.446000 60.597198 -5.980300 0.984906 0.142377 0.098436 0.552100 0.445900 -3.010600 63.532299 -5.868700 0.984906 0.142377 0.098436 0.554200 0.511800 -3.194200 60.597198 -3.460400 0.917633 0.222238 0.329485 0.492000 0.451400 -1.838200 62.255798 -0.802600 0.917633 0.222238 0.329485 0.430000 0.507000 -2.336800 60.597198 -1.072500 0.917633 0.222238 0.329485 0.434100 0.460700 -2.130500 53.628601 -1.359200 0.842435 0.033555 0.537753 0.416700 0.297200 -4.088800 54.879799 -3.460400 0.842435 0.033555 0.537753 0.486800 0.316000 -3.194200 60.597198 -3.460400 0.842435 0.033555 0.537753 0.492000 0.451400 -2.336800 60.597198 -1.072500 0.842435 0.033555 0.537753 0.434100 0.460700 -4.088800 54.879799 -3.460400 0.982155 0.156435 0.104398 0.486800 0.316000 -4.340700 55.234299 -6.210400 0.982155 0.156435 0.104398 0.542400 0.331500 -3.446000 60.597198 -5.980300 0.982155 0.156435 0.104398 0.552100 0.445900 -3.194200 60.597198 -3.460400 0.982155 0.156435 0.104398 0.492000 0.451400 -3.010600 63.532299 -5.868700 0.839145 0.204241 -0.504105 0.554200 0.511800 -3.446000 60.597198 -5.980300 0.839145 0.204241 -0.504105 0.552100 0.445900 -2.517200 60.597198 -7.879200 0.839145 0.204241 -0.504105 0.601000 0.450200 -1.932100 63.532299 -7.311200 0.839145 0.204241 -0.504105 0.591100 0.519300 -3.446000 60.597198 -5.980300 0.847590 0.127945 -0.514996 0.552100 0.445900 -4.340700 55.234299 -6.210400 0.847590 0.127945 -0.514996 0.542400 0.331500 -2.990300 54.496300 -8.246000 0.847590 0.127945 -0.514996 0.608400 0.297700 -2.517200 60.597198 -7.879200 0.847590 0.127945 -0.514996 0.601000 0.450200 -1.932100 63.532299 -7.311200 0.365116 0.222173 -0.904063 0.591100 0.519300 -2.517200 60.597198 -7.879200 0.365116 0.222173 -0.904063 0.601000 0.450200 -0.000000 60.597198 -8.812800 0.365116 0.222173 -0.904063 0.661800 0.464200 -0.000000 63.532299 -8.174500 0.365116 0.222173 -0.904063 0.634800 0.537700 -2.990300 54.496300 -8.246000 0.255106 0.035267 -0.966270 0.608400 0.297700 -0.000000 54.050800 -8.782700 0.255106 0.035267 -0.966270 0.682300 0.308600 -0.000000 60.597198 -8.812800 0.255106 0.035267 -0.966270 0.661800 0.464200 -2.517200 60.597198 -7.879200 0.255106 0.035267 -0.966270 0.601000 0.450200 -0.672300 63.485901 -0.421800 0.422112 0.618267 0.662999 0.426300 0.552700 -1.901400 63.532299 -1.247600 0.422112 0.618267 0.662999 0.451500 0.531400 -1.171400 65.057899 -2.205500 0.422112 0.618267 0.662999 0.482000 0.564300 -1.901400 63.532299 -1.247600 0.756752 0.608663 0.238446 0.451500 0.531400 -2.758700 63.532299 -3.348800 0.756752 0.608663 0.238446 0.499700 0.518700 -1.795600 65.057899 -4.806100 0.756752 0.608663 0.238446 0.538600 0.556700 -1.171400 65.057899 -2.205500 0.756752 0.608663 0.238446 0.482000 0.564300 -2.758700 63.532299 -3.348800 0.806293 0.585999 0.080601 0.499700 0.518700 -3.010600 63.532299 -5.868700 0.806293 0.585999 0.080601 0.554200 0.511800 -1.795600 65.057899 -4.806100 0.806293 0.585999 0.080601 0.538600 0.556700 -3.010600 63.532299 -5.868700 0.468822 0.765524 -0.440657 0.554200 0.511800 -1.932100 63.532299 -7.311200 0.468822 0.765524 -0.440657 0.591100 0.519300 -0.000000 65.057899 -6.421400 0.468822 0.765524 -0.440657 0.588900 0.582100 -1.795600 65.057899 -4.806100 0.468822 0.765524 -0.440657 0.538600 0.556700 -1.932100 63.532299 -7.311200 0.281463 0.723860 -0.629925 0.591100 0.519300 -0.000000 63.532299 -8.174500 0.281463 0.723860 -0.629925 0.634800 0.537700 -0.000000 65.057899 -6.421400 0.281463 0.723860 -0.629925 0.588900 0.582100 -1.171400 65.057899 -2.205500 0.296421 0.952404 0.071148 0.482000 0.564300 -1.795600 65.057899 -4.806100 0.296421 0.952404 0.071148 0.538600 0.556700 -0.000000 65.560898 -4.058400 0.296421 0.952404 0.071148 0.523700 0.603300 -1.795600 65.057899 -4.806100 0.184093 0.961370 -0.204641 0.538600 0.556700 -0.000000 65.057899 -6.421400 0.184093 0.961370 -0.204641 0.588900 0.582100 -0.000000 65.560898 -4.058400 0.184093 0.961370 -0.204641 0.523700 0.603300 -0.672300 63.485901 -0.421800 0.000000 0.750225 0.661183 0.426300 0.552700 -1.171400 65.057899 -2.205500 0.000000 0.750225 0.661183 0.482000 0.564300 --1.171400 65.057899 -2.205500 0.000000 0.750225 0.661183 0.466700 0.607600 --0.672300 63.485901 -0.421800 0.000000 0.750225 0.661183 0.416100 0.581700 -0.706900 62.538601 -0.289700 0.204667 0.142518 0.968401 0.409100 0.538600 -0.672300 63.485901 -0.421800 0.204667 0.142518 0.968401 0.426300 0.552700 -0.000000 62.538601 -0.140300 0.204667 0.142518 0.968401 0.398200 0.559100 -0.672300 63.485901 -0.421800 -0.000000 0.284850 0.958572 0.426300 0.552700 --0.672300 63.485901 -0.421800 -0.000000 0.284850 0.958572 0.416100 0.581700 -0.000000 62.538601 -0.140300 -0.000000 0.284850 0.958572 0.398200 0.559100 -2.130500 53.628601 -1.359200 -0.899990 0.017690 0.435552 0.416700 0.297200 -2.336800 60.597198 -1.072500 -0.899990 0.017690 0.435552 0.434100 0.460700 -1.393700 60.597198 -3.164700 -0.899990 0.017690 0.435552 0.380300 0.463400 -1.187300 53.628601 -3.164700 -0.899990 0.017690 0.435552 0.369000 0.300200 --0.706900 62.538601 -0.289700 -0.498102 0.211804 0.840853 0.409100 0.538600 --0.672300 63.485901 -0.421800 -0.498102 0.211804 0.840853 0.426300 0.552800 --1.901400 63.532299 -1.247600 -0.498102 0.211804 0.840853 0.451500 0.531500 --1.838200 62.255798 -0.802600 -0.498102 0.211804 0.840853 0.430000 0.507100 --1.901400 63.532299 -1.247600 -0.915374 0.111541 0.386845 0.451500 0.531500 --2.758700 63.532299 -3.348800 -0.915374 0.111541 0.386845 0.499700 0.518800 --3.194200 60.597198 -3.460400 -0.915374 0.111541 0.386845 0.492000 0.451500 --1.838200 62.255798 -0.802600 -0.915374 0.111541 0.386845 0.430000 0.507100 --2.758700 63.532299 -3.348800 -0.984906 0.142377 0.098436 0.499700 0.518800 --3.010600 63.532299 -5.868700 -0.984906 0.142377 0.098436 0.554200 0.511900 --3.446000 60.597198 -5.980300 -0.984906 0.142377 0.098436 0.552100 0.445900 --3.194200 60.597198 -3.460400 -0.984906 0.142377 0.098436 0.492000 0.451500 --3.194200 60.597198 -3.460400 -0.917633 0.222238 0.329485 0.492000 0.451500 --2.336800 60.597198 -1.072500 -0.917633 0.222238 0.329485 0.434000 0.460800 --1.838200 62.255798 -0.802600 -0.917633 0.222238 0.329485 0.430000 0.507100 --2.130500 53.628601 -1.359200 -0.842435 0.033555 0.537753 0.416600 0.297300 --2.336800 60.597198 -1.072500 -0.842435 0.033555 0.537753 0.434000 0.460800 --3.194200 60.597198 -3.460400 -0.842435 0.033555 0.537753 0.492000 0.451500 --4.088800 54.879799 -3.460400 -0.842435 0.033555 0.537753 0.486700 0.316100 --4.088800 54.879799 -3.460400 -0.982155 0.156435 0.104398 0.486700 0.316100 --3.194200 60.597198 -3.460400 -0.982155 0.156435 0.104398 0.492000 0.451500 --3.446000 60.597198 -5.980300 -0.982155 0.156435 0.104398 0.552100 0.445900 --4.340700 55.234299 -6.210400 -0.982155 0.156435 0.104398 0.542400 0.331500 --3.010600 63.532299 -5.868700 -0.839145 0.204241 -0.504105 0.554200 0.511900 --1.932100 63.532299 -7.311200 -0.839145 0.204241 -0.504105 0.591100 0.519300 --2.517200 60.597198 -7.879200 -0.839145 0.204241 -0.504105 0.601000 0.450300 --3.446000 60.597198 -5.980300 -0.839145 0.204241 -0.504105 0.552100 0.445900 --3.446000 60.597198 -5.980300 -0.847590 0.127945 -0.514996 0.552100 0.445900 --2.517200 60.597198 -7.879200 -0.847590 0.127945 -0.514996 0.601000 0.450300 --2.990300 54.496300 -8.246000 -0.847590 0.127945 -0.514996 0.608300 0.297700 --4.340700 55.234299 -6.210400 -0.847590 0.127945 -0.514996 0.542400 0.331500 --1.932100 63.532299 -7.311200 -0.365116 0.222173 -0.904063 0.591100 0.519300 -0.000000 63.532299 -8.174500 -0.365116 0.222173 -0.904063 0.634800 0.537700 -0.000000 60.597198 -8.812800 -0.365116 0.222173 -0.904063 0.661800 0.464200 --2.517200 60.597198 -7.879200 -0.365116 0.222173 -0.904063 0.601000 0.450300 --2.990300 54.496300 -8.246000 -0.255106 0.035267 -0.966270 0.608300 0.297700 --2.517200 60.597198 -7.879200 -0.255106 0.035267 -0.966270 0.601000 0.450300 -0.000000 60.597198 -8.812800 -0.255106 0.035267 -0.966270 0.661800 0.464200 -0.000000 54.050800 -8.782700 -0.255106 0.035267 -0.966270 0.682300 0.308600 --0.672300 63.485901 -0.421800 -0.422112 0.618267 0.662999 0.426300 0.552800 --1.171400 65.057899 -2.205500 -0.422112 0.618267 0.662999 0.482000 0.564400 --1.901400 63.532299 -1.247600 -0.422112 0.618267 0.662999 0.451500 0.531500 --1.901400 63.532299 -1.247600 -0.756752 0.608663 0.238446 0.451500 0.531500 --1.171400 65.057899 -2.205500 -0.756752 0.608663 0.238446 0.482000 0.564400 --1.795600 65.057899 -4.806100 -0.756752 0.608663 0.238446 0.538600 0.556700 --2.758700 63.532299 -3.348800 -0.756752 0.608663 0.238446 0.499700 0.518800 --2.758700 63.532299 -3.348800 -0.806293 0.585999 0.080601 0.499700 0.518800 --1.795600 65.057899 -4.806100 -0.806293 0.585999 0.080601 0.538600 0.556700 --3.010600 63.532299 -5.868700 -0.806293 0.585999 0.080601 0.554200 0.511900 --3.010600 63.532299 -5.868700 -0.468822 0.765524 -0.440657 0.554200 0.511900 --1.795600 65.057899 -4.806100 -0.468822 0.765524 -0.440657 0.538600 0.556700 -0.000000 65.057899 -6.421400 -0.468822 0.765524 -0.440657 0.589000 0.582100 --1.932100 63.532299 -7.311200 -0.468822 0.765524 -0.440657 0.591100 0.519300 --1.932100 63.532299 -7.311200 -0.281463 0.723860 -0.629925 0.591100 0.519300 -0.000000 65.057899 -6.421400 -0.281463 0.723860 -0.629925 0.589000 0.582100 -0.000000 63.532299 -8.174500 -0.281463 0.723860 -0.629925 0.634800 0.537700 --1.171400 65.057899 -2.205500 -0.296421 0.952404 0.071148 0.482000 0.564400 -0.000000 65.560898 -4.058400 -0.296421 0.952404 0.071148 0.523700 0.603400 --1.795600 65.057899 -4.806100 -0.296421 0.952404 0.071148 0.538600 0.556700 --1.795600 65.057899 -4.806100 -0.184093 0.961370 -0.204641 0.538600 0.556700 -0.000000 65.560898 -4.058400 -0.184093 0.961370 -0.204641 0.523700 0.603400 -0.000000 65.057899 -6.421400 -0.184093 0.961370 -0.204641 0.589000 0.582100 --1.171400 65.057899 -2.205500 0.000000 0.965072 0.261984 0.466700 0.607600 -1.171400 65.057899 -2.205500 0.000000 0.965072 0.261984 0.482000 0.564300 -0.000000 65.560898 -4.058400 0.000000 0.965072 0.261984 0.523700 0.603300 --0.706900 62.538601 -0.289700 -0.204667 0.142518 0.968401 0.409100 0.538600 -0.000000 62.538601 -0.140300 -0.204667 0.142518 0.968401 0.398200 0.559200 --0.672300 63.485901 -0.421800 -0.204667 0.142518 0.968401 0.426300 0.552800 --2.130500 53.628601 -1.359200 0.899990 0.017690 0.435552 0.416600 0.297300 --1.187300 53.628601 -3.164700 0.899990 0.017690 0.435552 0.369000 0.300300 --1.393700 60.597198 -3.164700 0.899990 0.017690 0.435552 0.380200 0.463500 --2.336800 60.597198 -1.072500 0.899990 0.017690 0.435552 0.434000 0.460800 -8.704300 24.905701 -6.036500 0.233777 0.158187 -0.959336 0.967100 0.466200 -7.984800 25.127701 -6.177400 0.233777 0.158187 -0.959336 0.966400 0.464600 -7.649900 27.558001 -5.856100 0.233777 0.158187 -0.959336 0.993500 0.506600 -8.503900 27.435900 -5.670300 0.233777 0.158187 -0.959336 0.976600 0.507100 -6.463600 36.223400 -3.704900 0.910800 0.108730 0.398273 0.962000 0.710700 -5.778000 35.994701 -1.773100 0.910800 0.108730 0.398273 0.922200 0.717000 -7.451900 27.210300 -3.504400 0.910800 0.108730 0.398273 0.930000 0.516400 -8.503900 27.435900 -5.670300 0.910800 0.108730 0.398273 0.976600 0.507100 -5.115000 35.782600 -2.051700 -0.272059 -0.232411 0.933793 0.916000 0.725700 -6.597900 27.332300 -3.690200 -0.272059 -0.232411 0.933793 0.913000 0.515500 -7.451900 27.210300 -3.504400 -0.272059 -0.232411 0.933793 0.930000 0.516400 -5.778000 35.994701 -1.773100 -0.272059 -0.232411 0.933793 0.922200 0.717000 -5.743400 36.019600 -3.995900 0.266707 0.266447 -0.926215 0.971100 0.718900 -6.463600 36.223400 -3.704900 0.266707 0.266447 -0.926215 0.962000 0.710700 -8.503900 27.435900 -5.670300 0.266707 0.266447 -0.926215 0.976600 0.507100 -7.649900 27.558001 -5.856100 0.266707 0.266447 -0.926215 0.993500 0.506600 -7.451900 27.210300 -3.504400 -0.285900 -0.782712 0.552832 0.930000 0.516400 -6.597900 27.332300 -3.690200 -0.285900 -0.782712 0.552832 0.913000 0.515500 -7.984800 25.127701 -6.177400 -0.285900 -0.782712 0.552832 0.966400 0.464600 -8.704300 24.905701 -6.036500 -0.285900 -0.782712 0.552832 0.967100 0.466200 -7.451900 27.210300 -3.504400 0.899158 0.007889 0.437552 0.930000 0.516400 -8.704300 24.905701 -6.036500 0.899158 0.007889 0.437552 0.967100 0.466200 -8.503900 27.435900 -5.670300 0.899158 0.007889 0.437552 0.976600 0.507100 -6.463600 36.223400 -3.704900 -0.293676 0.955783 0.015277 0.962000 0.710700 -5.743400 36.019600 -3.995900 -0.293676 0.955783 0.015277 0.971100 0.718900 -5.115000 35.782600 -2.051700 -0.293676 0.955783 0.015277 0.916000 0.725700 -5.778000 35.994701 -1.773100 -0.293676 0.955783 0.015277 0.922200 0.717000 -4.513000 55.007702 -5.909800 -0.189279 -0.709198 -0.679126 0.935300 0.759300 -4.291100 55.098900 -5.871800 -0.189279 -0.709198 -0.679126 0.932300 0.755300 -4.207800 55.799599 -6.651700 -0.189279 -0.709198 -0.679126 0.967500 0.768900 -4.871900 55.799599 -6.765400 -0.189279 -0.709198 -0.679126 0.957200 0.775300 -2.904000 62.455601 -5.700500 0.959060 0.270852 0.082723 0.954300 0.968000 -2.764700 62.455601 -4.128400 0.959060 0.270852 0.082723 0.909900 0.975800 -4.736600 55.799599 -5.153900 0.959060 0.270852 0.082723 0.919700 0.781300 -4.871900 55.799599 -6.765400 0.959060 0.270852 0.082723 0.957200 0.775300 -2.764700 62.455601 -4.128400 0.167860 -0.101350 0.980587 0.909900 0.975800 -4.072400 55.799599 -5.040200 0.167860 -0.101350 0.980587 0.904100 0.777700 -4.736600 55.799599 -5.153900 0.167860 -0.101350 0.980587 0.919700 0.781300 -2.904000 62.455601 -5.700500 -0.167781 0.107182 -0.979980 0.954300 0.968000 -4.871900 55.799599 -6.765400 -0.167781 0.107182 -0.979980 0.957200 0.775300 -4.207800 55.799599 -6.651700 -0.167781 0.107182 -0.979980 0.967500 0.768900 -4.736600 55.799599 -5.153900 0.042232 -0.727963 0.684314 0.919700 0.781300 -4.072400 55.799599 -5.040200 0.042232 -0.727963 0.684314 0.904100 0.777700 -4.291100 55.098900 -5.871800 0.042232 -0.727963 0.684314 0.932300 0.755300 -4.513000 55.007702 -5.909800 0.042232 -0.727963 0.684314 0.935300 0.759300 -4.736600 55.799599 -5.153900 0.937220 -0.339745 0.078688 0.919700 0.781300 -4.513000 55.007702 -5.909800 0.937220 -0.339745 0.078688 0.935300 0.759300 -4.871900 55.799599 -6.765400 0.937220 -0.339745 0.078688 0.957200 0.775300 -4 0 1 2 3 -4 4 5 6 7 -3 8 9 10 -4 11 12 13 14 -4 15 16 17 18 -4 19 20 21 22 -4 23 24 25 26 -4 27 28 29 30 -4 31 32 33 34 -4 35 36 37 38 -4 39 40 41 42 -4 43 44 45 46 -3 47 48 49 -4 50 51 52 53 -4 54 55 56 57 -4 58 59 60 61 -4 62 63 64 65 -4 66 67 68 69 -4 70 71 72 73 -4 74 75 76 77 -3 78 79 80 -4 81 82 83 84 -3 85 86 87 -4 88 89 90 91 -3 92 93 94 -4 95 96 97 98 -4 99 100 101 102 -4 103 104 105 106 -4 107 108 109 110 -4 111 112 113 114 -4 115 116 117 118 -4 119 120 121 122 -4 123 124 125 126 -4 127 128 129 130 -4 131 132 133 134 -4 135 136 137 138 -3 139 140 141 -3 142 143 144 -4 145 146 147 148 -4 149 150 151 152 -4 153 154 155 156 -3 157 158 159 -3 160 161 162 -4 163 164 165 166 -4 167 168 169 170 -4 171 172 173 174 -3 175 176 177 -4 178 179 180 181 -4 182 183 184 185 -3 186 187 188 -3 189 190 191 -4 192 193 194 195 -4 196 197 198 199 -4 200 201 202 203 -4 204 205 206 207 -3 208 209 210 -3 211 212 213 -3 214 215 216 -4 217 218 219 220 -4 221 222 223 224 -3 225 226 227 -4 228 229 230 231 -4 232 233 234 235 -3 236 237 238 -3 239 240 241 -3 242 243 244 -3 245 246 247 -4 248 249 250 251 -4 252 253 254 255 -4 256 257 258 259 -4 260 261 262 263 -4 264 265 266 267 -4 268 269 270 271 -4 272 273 274 275 -4 276 277 278 279 -4 280 281 282 283 -3 284 285 286 -3 287 288 289 -4 290 291 292 293 -4 294 295 296 297 -4 298 299 300 301 -3 302 303 304 -4 305 306 307 308 -4 309 310 311 312 -4 313 314 315 316 -4 317 318 319 320 -4 321 322 323 324 -4 325 326 327 328 -4 329 330 331 332 -4 333 334 335 336 -4 337 338 339 340 -4 341 342 343 344 -4 345 346 347 348 -4 349 350 351 352 -3 353 354 355 -4 356 357 358 359 -4 360 361 362 363 -3 364 365 366 -4 367 368 369 370 -4 371 372 373 374 -3 375 376 377 -4 378 379 380 381 -3 382 383 384 -4 385 386 387 388 -4 389 390 391 392 -3 393 394 395 -4 396 397 398 399 -4 400 401 402 403 -4 404 405 406 407 -4 408 409 410 411 -4 412 413 414 415 -3 416 417 418 -3 419 420 421 -3 422 423 424 -4 425 426 427 428 -4 429 430 431 432 -3 433 434 435 -3 436 437 438 -4 439 440 441 442 -4 443 444 445 446 -3 447 448 449 -3 450 451 452 -4 453 454 455 456 -3 457 458 459 -3 460 461 462 -3 463 464 465 -4 466 467 468 469 -3 470 471 472 -4 473 474 475 476 -4 477 478 479 480 -4 481 482 483 484 -4 485 486 487 488 -4 489 490 491 492 -3 493 494 495 -4 496 497 498 499 -4 500 501 502 503 -4 504 505 506 507 -4 508 509 510 511 -3 512 513 514 -4 515 516 517 518 -4 519 520 521 522 -3 523 524 525 -3 526 527 528 -3 529 530 531 -4 532 533 534 535 -4 536 537 538 539 -4 540 541 542 543 -4 544 545 546 547 -3 548 549 550 -3 551 552 553 -4 554 555 556 557 -3 558 559 560 -4 561 562 563 564 -4 565 566 567 568 -4 569 570 571 572 -3 573 574 575 -4 576 577 578 579 -4 580 581 582 583 -4 584 585 586 587 -4 588 589 590 591 -4 592 593 594 595 -4 596 597 598 599 -4 600 601 602 603 -4 604 605 606 607 -4 608 609 610 611 -3 612 613 614 -4 615 616 617 618 -4 619 620 621 622 -4 623 624 625 626 -4 627 628 629 630 -4 631 632 633 634 -4 635 636 637 638 -4 639 640 641 642 -3 643 644 645 -4 646 647 648 649 -3 650 651 652 -4 653 654 655 656 -3 657 658 659 -4 660 661 662 663 -4 664 665 666 667 -4 668 669 670 671 -4 672 673 674 675 -4 676 677 678 679 -4 680 681 682 683 -4 684 685 686 687 -4 688 689 690 691 -4 692 693 694 695 -4 696 697 698 699 -4 700 701 702 703 -3 704 705 706 -3 707 708 709 -4 710 711 712 713 -4 714 715 716 717 -4 718 719 720 721 -3 722 723 724 -3 725 726 727 -4 728 729 730 731 -4 732 733 734 735 -4 736 737 738 739 -3 740 741 742 -4 743 744 745 746 -4 747 748 749 750 -3 751 752 753 -3 754 755 756 -4 757 758 759 760 -4 761 762 763 764 -4 765 766 767 768 -4 769 770 771 772 -3 773 774 775 -3 776 777 778 -3 779 780 781 -4 782 783 784 785 -4 786 787 788 789 -3 790 791 792 -4 793 794 795 796 -4 797 798 799 800 -3 801 802 803 -3 804 805 806 -3 807 808 809 -3 810 811 812 -4 813 814 815 816 -4 817 818 819 820 -4 821 822 823 824 -4 825 826 827 828 -4 829 830 831 832 -4 833 834 835 836 -4 837 838 839 840 -4 841 842 843 844 -4 845 846 847 848 -3 849 850 851 -3 852 853 854 -4 855 856 857 858 -4 859 860 861 862 -4 863 864 865 866 -3 867 868 869 -4 870 871 872 873 -4 874 875 876 877 -4 878 879 880 881 -4 882 883 884 885 -4 886 887 888 889 -4 890 891 892 893 -4 894 895 896 897 -4 898 899 900 901 -4 902 903 904 905 -4 906 907 908 909 -4 910 911 912 913 -4 914 915 916 917 -3 918 919 920 -4 921 922 923 924 -4 925 926 927 928 -3 929 930 931 -4 932 933 934 935 -4 936 937 938 939 -3 940 941 942 -4 943 944 945 946 -3 947 948 949 -4 950 951 952 953 -4 954 955 956 957 -3 958 959 960 -4 961 962 963 964 -4 965 966 967 968 -4 969 970 971 972 -4 973 974 975 976 -4 977 978 979 980 -3 981 982 983 -3 984 985 986 -3 987 988 989 -4 990 991 992 993 -4 994 995 996 997 -3 998 999 1000 -3 1001 1002 1003 -4 1004 1005 1006 1007 -4 1008 1009 1010 1011 -3 1012 1013 1014 -3 1015 1016 1017 -4 1018 1019 1020 1021 -3 1022 1023 1024 -3 1025 1026 1027 -3 463 1028 464 -4 1029 1030 1031 1032 -3 1033 1034 1035 -4 1036 1037 1038 1039 -4 1040 1041 1042 1043 -4 1044 1045 1046 1047 -4 1048 1049 1050 1051 -4 1052 1053 1054 1055 -3 1056 1057 1058 -4 1059 1060 1061 1062 -4 1063 1064 1065 1066 -4 1067 1068 1069 1070 -4 1071 1072 1073 1074 -3 1075 1076 1077 -4 1078 1079 1080 1081 -4 1082 1083 1084 1085 -3 1086 1087 1088 -3 1089 1090 1091 -4 1092 1093 1094 1095 -4 1096 1097 1098 1099 -4 1100 1101 1102 1103 -3 1104 1105 1106 -3 1107 1108 1109 -4 1110 1111 1112 1113 -4 1114 1115 1116 1117 -4 1118 1119 1120 1121 -4 1122 1123 1124 1125 -3 1126 1127 1128 -4 1129 1130 1131 1132 -4 1133 1134 1135 1136 -4 1137 1138 1139 1140 -4 1141 1142 1143 1144 -4 1145 1146 1147 1148 -4 1149 1150 1151 1152 -3 1153 1154 1155 -4 1156 1157 1158 1159 -3 1160 1161 1162 -4 1163 1164 1165 1166 -3 1167 1168 1169 -3 1170 1171 1172 -3 1173 1174 1175 -4 1176 1177 1178 1179 -3 1180 1181 1182 -3 1183 1184 1185 -4 1186 1187 1188 1189 -4 1190 1191 1192 1193 -4 1194 1195 1196 1197 -4 1198 1199 1200 1201 -3 1202 1203 1204 -4 1205 1206 1207 1208 -4 1209 1210 1211 1212 -4 1213 1214 1215 1216 -4 1217 1218 1219 1220 -4 1221 1222 1223 1224 -4 1225 1226 1227 1228 -3 1229 1230 1231 -4 1232 1233 1234 1235 -3 1236 1237 1238 -4 1239 1240 1241 1242 -3 1243 1244 1245 -3 1246 1247 1248 -3 1249 1250 1251 -3 1252 1253 1254 -3 1255 1256 1257 -4 1258 1259 1260 1261 -4 1262 1263 1264 1265 -4 1266 1267 1268 1269 -4 1270 1271 1272 1273 -4 1274 1275 1276 1277 -4 1278 1279 1280 1281 -3 1282 1283 1284 -4 1285 1286 1287 1288 -4 1289 1290 1291 1292 -4 1293 1294 1295 1296 -3 1297 1298 1299 -3 1300 1301 1302 -4 1303 1304 1305 1306 -3 1307 1308 1309 diff --git a/src/tests/evas/meson.build b/src/tests/evas/meson.build index d89d602507..37935f1e8d 100644 --- a/src/tests/evas/meson.build +++ b/src/tests/evas/meson.build @@ -11,10 +11,8 @@ evas_suite_src = [ 'evas_test_render_engines.c', 'evas_test_filters.c', 'evas_test_image.c', - 'evas_test_mesh.c', 'evas_test_mask.c', 'evas_test_evasgl.c', - 'evas_test_matrix.c', 'evas_test_focus.c', 'evas_test_events.c', 'evas_tests_helpers.h',