diff --git a/Makefile b/Makefile index 68a43c8..02651c6 100644 --- a/Makefile +++ b/Makefile @@ -50,11 +50,10 @@ SHADERS = \ $(BUILD_TYPE)/effect/collada.fxo \ $(BUILD_TYPE)/effect/collada_scene.fxo -BUFFERS = \ - models/curve_interpolation/curve_interpolation.vtx \ - models/curve_interpolation/curve_interpolation.idx +SCENES = \ + src/scenes/curve_interpolation/curve_interpolation.cpp -$(BUILD_TYPE)/%.res: %.rc $(SHADERS) $(BUFFERS) +$(BUILD_TYPE)/%.res: %.rc $(SHADERS) $(SCENES) @mkdir -p $(@D) $(WINDRES) -O coff -I$(BUILD_TYPE)/effect -o $@ $< @@ -62,6 +61,17 @@ $(BUILD_TYPE)/%.obj: src/%.cpp @mkdir -p $(@D) $(CXX) $(CXXSTD) $(CFLAGS) $(CXXFLAGS) $(WOPT) $(OPT) -o $@ -c $< +COLLADA_PY_SOURCE = \ + $(wildcard collada/*.py) + +include/scenes/%.hpp: $(COLLADA_PY_SOURCE) + @mkdir -p $(@D) + PYTHONPATH=. python -m collada.main $@ + +src/scenes/%.cpp: scenes/%.DAE include/scenes/%.hpp + @mkdir -p $(@D) + PYTHONPATH=. python -m collada.main $< $@ $(<:.DAE=.vtx) $(<:.DAE=.idx) + OBJS = \ $(BUILD_TYPE)/main.res \ $(BUILD_TYPE)/robot_player.obj \ @@ -72,7 +82,7 @@ OBJS = \ $(BUILD_TYPE)/input.obj \ $(BUILD_TYPE)/collada.obj \ $(BUILD_TYPE)/collada_scene.obj \ - $(BUILD_TYPE)/scenes/curve_interpolation.obj + $(BUILD_TYPE)/scenes/curve_interpolation/curve_interpolation.obj $(BUILD_TYPE)/d3d10.exe: $(OBJS) @mkdir -p $(@D) diff --git a/collada/header.py b/collada/header.py index 27cc51e..9ccb6e5 100644 --- a/collada/header.py +++ b/collada/header.py @@ -310,12 +310,23 @@ def render_node_channels(state, collada, node, node_name): yield f"&node_channel_{target_name}," yield "};" +def render_node_instance_lights(state, collada, node_name, instance_lights): + yield f"instance_light const instance_lights_{node_name}[] = {{" + for instance_light in instance_lights: + light = collada.lookup(instance_light.url, types.Light) + light_name = sanitize_name(state, light.id, light) + yield "{" + yield f".light = &light_{light_name}," + yield "}" + yield "};" + def render_node(state, collada, node, node_index): node_name_id = get_node_name_id(node) node_name = sanitize_name(state, node_name_id, node) #yield from render_node_children(state, collada, node_name, node.nodes) yield from render_node_transforms(state, collada, node_name, node.transformation_elements) yield from render_node_instance_geometries(state, collada, node_name, node.instance_geometries) + yield from render_node_instance_lights(state, collada, node_name, node.instance_lights) yield from render_node_channels(state, collada, node, node_name) type = { @@ -334,6 +345,9 @@ def render_node(state, collada, node, node_index): yield f".instance_geometries = instance_geometries_{node_name}," yield f".instance_geometries_count = {len(node.instance_geometries)}," yield "" + yield f".instance_lights = instance_lights_{node_name}," + yield f".instance_lights_count = {len(node.instance_lights)}," + yield "" yield f".channels = node_channels_{node_name}," yield f".channels_count = {len(state.node_animation_channels[node.id])}," #yield "" @@ -392,69 +406,72 @@ def render_opt_float(field_name, f): f = types.Float(value=0.0) yield f".{field_name} = {float(f.value)}f," +def render_effect(state, collada, effect): + profile_common, = effect.profile_common + assert profile_common.newparam == [] + shader = profile_common.technique.shader + effect_name = sanitize_name(state, effect.id, effect) + yield f"effect const effect_{effect_name} = {{" + + if type(shader) is types.Blinn: + yield ".type = effect_type::BLINN," + yield ".blinn = {" + yield from render_opt_color_or_texture("emission", shader.emission) + yield from render_opt_color_or_texture("ambient", shader.ambient) + yield from render_opt_color_or_texture("diffuse", shader.diffuse) + yield from render_opt_color_or_texture("specular", shader.specular) + yield from render_opt_float("shininess", shader.shininess) + yield from render_opt_color_or_texture("reflective", shader.reflective) + yield from render_opt_float("reflectivity", shader.reflectivity) + yield from render_opt_color_or_texture("transparent", shader.transparent) + yield from render_opt_float("transparency", shader.transparency) + yield from render_opt_float("index_of_refraction", shader.index_of_refraction) + yield "}" + elif type(shader) is types.Lambert: + yield ".type = effect_type::LAMBERT," + yield ".lambert = {" + yield from render_opt_color_or_texture("emission", shader.emission) + yield from render_opt_color_or_texture("ambient", shader.ambient) + yield from render_opt_color_or_texture("diffuse", shader.diffuse) + yield from render_opt_color_or_texture("reflective", shader.reflective) + yield from render_opt_float("reflectivity", shader.reflectivity) + yield from render_opt_color_or_texture("transparent", shader.transparent) + yield from render_opt_float("transparency", shader.transparency) + yield from render_opt_float("index_of_refraction", shader.index_of_refraction) + yield "}" + elif type(shader) is types.Phong: + yield ".type = effect_type::PHONG," + yield ".phong = {" + yield from render_opt_color_or_texture("emission", shader.emission) + yield from render_opt_color_or_texture("ambient", shader.ambient) + yield from render_opt_color_or_texture("diffuse", shader.diffuse) + yield from render_opt_color_or_texture("specular", shader.specular) + yield from render_opt_float("shininess", shader.shininess) + yield from render_opt_color_or_texture("reflective", shader.reflective) + yield from render_opt_float("reflectivity", shader.reflectivity) + yield from render_opt_color_or_texture("transparent", shader.transparent) + yield from render_opt_float("transparency", shader.transparency) + yield from render_opt_float("index_of_refraction", shader.index_of_refraction) + yield "}" + elif type(shader) is types.Constant: + yield ".type = effect_type::CONSTANT," + yield ".constant = {" + yield from render_opt_color("color", shader.color) + yield from render_opt_color_or_texture("reflective", shader.reflective) + yield from render_opt_float("reflectivity", shader.reflectivity) + yield from render_opt_color_or_texture("transparent", shader.transparent) + yield from render_opt_float("transparency", shader.transparency) + yield from render_opt_float("index_of_refraction", shader.index_of_refraction) + yield "}" + else: + assert False, type(shader) + + yield "};" + def render_library_effects(state, collada): for library_effects in collada.library_effects: for effect in library_effects.effects: - profile_common, = effect.profile_common - assert profile_common.newparam == [] - shader = profile_common.technique.shader - effect_name = sanitize_name(state, effect.id, effect) - yield f"effect const effect_{effect_name} = {{" - - if type(shader) is types.Blinn: - yield ".type = effect_type::BLINN," - yield ".blinn = {" - yield from render_opt_color_or_texture("emission", shader.emission) - yield from render_opt_color_or_texture("ambient", shader.ambient) - yield from render_opt_color_or_texture("diffuse", shader.diffuse) - yield from render_opt_color_or_texture("specular", shader.specular) - yield from render_opt_float("shininess", shader.shininess) - yield from render_opt_color_or_texture("reflective", shader.reflective) - yield from render_opt_float("reflectivity", shader.reflectivity) - yield from render_opt_color_or_texture("transparent", shader.transparent) - yield from render_opt_float("transparency", shader.transparency) - yield from render_opt_float("index_of_refraction", shader.index_of_refraction) - yield "}" - elif type(shader) is types.Lambert: - yield ".type = effect_type::LAMBERT," - yield ".lambert = {" - yield from render_opt_color_or_texture("emission", shader.emission) - yield from render_opt_color_or_texture("ambient", shader.ambient) - yield from render_opt_color_or_texture("diffuse", shader.diffuse) - yield from render_opt_color_or_texture("reflective", shader.reflective) - yield from render_opt_float("reflectivity", shader.reflectivity) - yield from render_opt_color_or_texture("transparent", shader.transparent) - yield from render_opt_float("transparency", shader.transparency) - yield from render_opt_float("index_of_refraction", shader.index_of_refraction) - yield "}" - elif type(shader) is types.Phong: - yield ".type = effect_type::PHONG," - yield ".phong = {" - yield from render_opt_color_or_texture("emission", shader.emission) - yield from render_opt_color_or_texture("ambient", shader.ambient) - yield from render_opt_color_or_texture("diffuse", shader.diffuse) - yield from render_opt_color_or_texture("specular", shader.specular) - yield from render_opt_float("shininess", shader.shininess) - yield from render_opt_color_or_texture("reflective", shader.reflective) - yield from render_opt_float("reflectivity", shader.reflectivity) - yield from render_opt_color_or_texture("transparent", shader.transparent) - yield from render_opt_float("transparency", shader.transparency) - yield from render_opt_float("index_of_refraction", shader.index_of_refraction) - yield "}" - elif type(shader) is types.Constant: - yield ".type = effect_type::CONSTANT," - yield ".constant = {" - yield from render_opt_color("color", shader.color) - yield from render_opt_color_or_texture("reflective", shader.reflective) - yield from render_opt_float("reflectivity", shader.reflectivity) - yield from render_opt_color_or_texture("transparent", shader.transparent) - yield from render_opt_float("transparency", shader.transparency) - yield from render_opt_float("index_of_refraction", shader.index_of_refraction) - yield "}" - else: - assert False, type(shader) - - yield "};" + yield from render_effect(state, collada, effect) def render_library_materials(state, collada): for library_materials in collada.library_materials: @@ -655,10 +672,34 @@ def render_library_animations(state, collada): yield from render_animation(state, collada, animation_name, animation) animation_ix += 1 +def render_light_type(technique_common: types.TechniqueCommon_Light): + return { + types.Ambient: "AMBIENT", + types.Directional: "DIRECTIONAL", + types.Point: "POINT", + types.Spot: "SPOT", + }[type(technique_common.light)] + +def render_light(state, collada, light): + technique_common = light.technique_common + light_name = sanitize_name(state, light.id, light) + color = ", ".join(f"{float(f)}f" for f in technique_common.light.color) + light_type = render_light_type(technique_common) + yield f"light const light_{light_name} = {{" + yield f".type = light_type::{light_type}," + yield f".color = {{ {color} }}," + yield "};" + +def render_library_lights(state, collada): + for library_lights in collada.library_lights: + for light in library_lights.lights: + yield from render_light(state, collada, light) + def render_all(collada, namespace): state = State() render, out = renderer() render(render_header(namespace)) + render(render_library_lights(state, collada)) render(render_library_animations(state, collada)) render(render_library_effects(state, collada)) render(render_library_materials(state, collada)) diff --git a/collada/main.py b/collada/main.py index 058c46e..3d8619e 100644 --- a/collada/main.py +++ b/collada/main.py @@ -6,44 +6,61 @@ from collada import header def usage(): name = sys.argv[0] - print("usage:") - print(f" {name} [input_collada.dae] [output_source.cpp] [output_header.hpp] [output_vertex.vtx] [output_vertex.idx]") + print("usage (source):") + print(f" {name} [input_collada.dae] [output_source.cpp] [output_vertex.vtx] [output_vertex.idx]") + print("usage (header):") + print(f" {name} [output_header.hpp]") sys.exit(1) +def parse_namespace(filename): + namespace = path.splitext(path.split(filename)[1])[0] + return namespace + def main(): try: input_collada = sys.argv[1] output_source = sys.argv[2] - output_header = sys.argv[3] - output_vertex = sys.argv[4] - output_index = sys.argv[5] + output_vertex = sys.argv[3] + output_index = sys.argv[4] assert input_collada.lower().endswith(".dae") - assert output_header.lower().endswith(".hpp") + assert output_source.lower().endswith(".cpp") assert output_vertex.lower().endswith(".vtx") assert output_index.lower().endswith(".idx") except Exception as e: usage() collada = parse.parse_collada_file(input_collada) - namespace = path.splitext(path.split(input_collada)[1])[0] + namespace = parse_namespace(input_collada) state, out_source = header.render_all(collada, namespace) - out_header = header.render_all_hpp(namespace) with open(output_source, 'wb') as f: source_buf = out_source.getvalue() assert "\r\n" in source_buf f.write(source_buf.encode('utf-8')) - with open(output_header, 'wb') as f: - header_buf = out_header.getvalue() - assert "\r\n" in header_buf - f.write(header_buf.encode('utf-8')) - with open(output_vertex, 'wb') as f: f.write(state.vertex_buffer.getvalue()) with open(output_index, 'wb') as f: f.write(state.index_buffer.getvalue()) +def main_header(): + try: + output_header = sys.argv[1] + assert output_header.lower().endswith(".hpp") + except Exception as e: + usage() + + namespace = parse_namespace(output_header) + out_header = header.render_all_hpp(namespace) + + with open(output_header, 'wb') as f: + header_buf = out_header.getvalue() + assert "\r\n" in header_buf + f.write(header_buf.encode('utf-8')) + if __name__ == "__main__": - main() + if len(sys.argv) == 2: + main_header() + else: + main() diff --git a/include/collada_scene.hpp b/include/collada_scene.hpp index b3b4b75..62c935e 100644 --- a/include/collada_scene.hpp +++ b/include/collada_scene.hpp @@ -37,20 +37,33 @@ namespace collada_scene { node_instance * m_nodeInstances = NULL; + XMFLOAT4 * m_lightPositions = NULL; + XMFLOAT4 * m_lightDirections = NULL; + XMFLOAT4 * m_lightColors = NULL; + + int m_lightInstancesCount = 0; + collada::descriptor const * m_descriptor; HRESULT load_scene(collada::descriptor const * const descriptor); - void render(float t); + void update(float t); + void render(); private: HRESULT load_layouts(); void allocate_node_instances(); void allocate_node_instance(collada::node const * const node, node_instance * node_instance); + void allocate_light_instances(); + + void node_world_transform(collada::node const& node, node_instance& node_instance); + void update_light_instances(); + void update_light_instance_vectors(collada::light const& light, + node_instance const& node_instance, + int light_index); void render_geometries(collada::instance_geometry const * const instance_geometries, int const instance_geometries_count); - void node_world_transform(collada::node const& node, node_instance& node_instance); }; HRESULT LoadEffect(); diff --git a/include/collada_types.hpp b/include/collada_types.hpp index ee8cf9d..775dda6 100644 --- a/include/collada_types.hpp +++ b/include/collada_types.hpp @@ -81,47 +81,24 @@ namespace collada { }; ////////////////////////////////////////////////////////////////////// - // node + // light ////////////////////////////////////////////////////////////////////// - struct lookat { - float3 const eye; - float3 const at; - float3 const up; + enum class light_type { + AMBIENT, + DIRECTIONAL, + POINT, + SPOT, }; - struct matrix { - float const _11, _12, _13, _14; - float const _21, _22, _23, _24; - float const _31, _32, _33, _34; - float const _41, _42, _43, _44; + struct light { + light_type type; + float3 color; }; - enum class transform_type { - LOOKAT, - MATRIX, - ROTATE, - SCALE, - SKEW, - TRANSLATE, - }; - - struct transform { - transform_type const type; - union { - lookat const lookat; - matrix const matrix; - float4 const rotate; - float3 const scale; - float7 const skew; - float3 const translate; - }; - }; - - enum class node_type { - JOINT, - NODE, - }; + ////////////////////////////////////////////////////////////////////// + // effect + ////////////////////////////////////////////////////////////////////// struct color_or_texture { union { @@ -192,12 +169,55 @@ namespace collada { }; }; + ////////////////////////////////////////////////////////////////////// + // node + ////////////////////////////////////////////////////////////////////// + + struct lookat { + float3 const eye; + float3 const at; + float3 const up; + }; + + struct matrix { + float const _11, _12, _13, _14; + float const _21, _22, _23, _24; + float const _31, _32, _33, _34; + float const _41, _42, _43, _44; + }; + + enum class transform_type { + LOOKAT, + MATRIX, + ROTATE, + SCALE, + SKEW, + TRANSLATE, + }; + + struct transform { + transform_type const type; + union { + lookat const lookat; + matrix const matrix; + float4 const rotate; + float3 const scale; + float7 const skew; + float3 const translate; + }; + }; + + enum class node_type { + JOINT, + NODE, + }; + struct material { effect const * const effect; }; struct instance_material { - int element_index; + int element_index; // an index into mesh.triangles material const * const material; }; @@ -208,6 +228,10 @@ namespace collada { int const instance_materials_count; }; + struct instance_light { + light const * const light; + }; + ////////////////////////////////////////////////////////////////////// // animation ////////////////////////////////////////////////////////////////////// @@ -286,6 +310,9 @@ namespace collada { instance_geometry const * const instance_geometries; int const instance_geometries_count; + instance_light const * const instance_lights; + int const instance_lights_count; + channel const * const * const channels; int const channels_count; diff --git a/include/scenes/curve_interpolation.hpp b/include/scenes/curve_interpolation/curve_interpolation.hpp similarity index 100% rename from include/scenes/curve_interpolation.hpp rename to include/scenes/curve_interpolation/curve_interpolation.hpp diff --git a/main.rc b/main.rc index 18746d6..55feb50 100644 --- a/main.rc +++ b/main.rc @@ -10,5 +10,5 @@ RES_FONT_TERMINUS_6X12 RCDATA "font/terminus_128x64_6x12.data" RES_COLLADA_FXO RCDATA "collada.fxo" RES_COLLADA_SCENE_FXO RCDATA "collada_scene.fxo" -RES_MODELS_CURVE_INTERPOLATION_VTX RCDATA "models/curve_interpolation/curve_interpolation.vtx" -RES_MODELS_CURVE_INTERPOLATION_IDX RCDATA "models/curve_interpolation/curve_interpolation.idx" +RES_MODELS_CURVE_INTERPOLATION_VTX RCDATA "scenes/curve_interpolation/curve_interpolation.vtx" +RES_MODELS_CURVE_INTERPOLATION_IDX RCDATA "scenes/curve_interpolation/curve_interpolation.idx" diff --git a/models/curve_interpolation/curve_interpolation.DAE b/scenes/curve_interpolation/curve_interpolation.DAE similarity index 56% rename from models/curve_interpolation/curve_interpolation.DAE rename to scenes/curve_interpolation/curve_interpolation.DAE index 446f27d..99a9bce 100755 --- a/models/curve_interpolation/curve_interpolation.DAE +++ b/scenes/curve_interpolation/curve_interpolation.DAE @@ -4,10 +4,10 @@ bilbo OpenCOLLADA for 3ds Max; Version: 1.6; Revision: 68 - file:///C:/cygwin/home/bilbo/d3d10/models/curve_interpolation/curve_interpolation.max + file:///C:/cygwin/home/bilbo/d3d10/scenes/curve_interpolation/curve_interpolation.max - 2026-01-27T22:01:59 - 2026-01-27T22:01:59 + 2026-01-28T15:18:44 + 2026-01-28T15:18:44 Z_UP @@ -464,6 +464,62 @@ + + + + + + 1 1 1 1 + + + 0 0 0 1 + + + 0 0 0 1 + + + 0 0 0 1 + + + 10 + + + 0 0 0 1 + + + 1 1 1 1 + + + 1 + + + + + + + + 0 + 0 + 0 + 1.5 + 1 + 0 + 0 + 0 + 3 + + + 1 + 0 + 0 + 1 + 0 + 0 + 0.1 + + + + @@ -496,6 +552,9 @@ + + + @@ -571,45 +630,45 @@ - + - - -1.09278e-7 2.5 0 -1.0635e-7 2.433013 0.25 -9.83506e-8 2.25 0.4330127 -8.74228e-8 2 0.5 -7.64949e-8 1.75 0.4330127 -6.84952e-8 1.566987 0.25 -6.55671e-8 1.5 7.54979e-8 -6.84952e-8 1.566987 -0.2499999 -7.64949e-8 1.75 -0.4330126 -8.74228e-8 2 -0.5 -9.83506e-8 2.25 -0.4330128 -1.0635e-7 2.433012 -0.2500003 1.469463 2.022542 0 1.430089 1.968349 0.25 1.322517 1.820288 0.4330127 1.17557 1.618034 0.5 1.028624 1.41578 0.4330127 0.921052 1.267719 0.25 0.8816779 1.213526 7.54979e-8 0.921052 1.267719 -0.2499999 1.028624 1.41578 -0.4330126 1.17557 1.618034 -0.5 1.322517 1.820288 -0.4330128 1.430089 1.968349 -0.2500003 2.377641 0.7725425 0 2.313933 0.7518423 0.25 2.139877 0.6952882 0.4330127 1.902113 0.618034 0.5 1.664349 0.5407798 0.4330127 1.490294 0.4842257 0.25 1.426585 0.4635255 7.54979e-8 1.490294 0.4842257 -0.2499999 1.664349 0.5407797 -0.4330126 1.902113 0.6180339 -0.5 2.139877 0.6952882 -0.4330128 2.313932 0.7518422 -0.2500003 2.377641 -0.7725425 0 2.313933 -0.7518423 0.25 2.139877 -0.6952882 0.4330127 1.902113 -0.618034 0.5 1.664349 -0.5407798 0.4330127 1.490294 -0.4842257 0.25 1.426585 -0.4635255 7.54979e-8 1.490294 -0.4842257 -0.2499999 1.664349 -0.5407797 -0.4330126 1.902113 -0.6180339 -0.5 2.139877 -0.6952882 -0.4330128 2.313932 -0.7518422 -0.2500003 1.469463 -2.022542 0 1.430089 -1.968349 0.25 1.322517 -1.820288 0.4330127 1.17557 -1.618034 0.5 1.028624 -1.41578 0.4330127 0.921052 -1.267719 0.25 0.8816779 -1.213526 7.54979e-8 0.921052 -1.267719 -0.2499999 1.028624 -1.41578 -0.4330126 1.17557 -1.618034 -0.5 1.322517 -1.820288 -0.4330128 1.430089 -1.968349 -0.2500003 -1.09278e-7 -2.5 0 -1.0635e-7 -2.433013 0.25 -9.83506e-8 -2.25 0.4330127 -8.74228e-8 -2 0.5 -7.64949e-8 -1.75 0.4330127 -6.84952e-8 -1.566987 0.25 -6.55671e-8 -1.5 7.54979e-8 -6.84952e-8 -1.566987 -0.2499999 -7.64949e-8 -1.75 -0.4330126 -8.74228e-8 -2 -0.5 -9.83506e-8 -2.25 -0.4330128 -1.0635e-7 -2.433012 -0.2500003 -1.469463 -2.022542 0 -1.430089 -1.968349 0.25 -1.322517 -1.820288 0.4330127 -1.17557 -1.618034 0.5 -1.028624 -1.41578 0.4330127 -0.9210519 -1.267719 0.25 -0.8816777 -1.213526 7.54979e-8 -0.9210519 -1.267719 -0.2499999 -1.028624 -1.41578 -0.4330126 -1.17557 -1.618034 -0.5 -1.322517 -1.820288 -0.4330128 -1.430089 -1.968349 -0.2500003 -2.377641 -0.7725426 0 -2.313932 -0.7518424 0.25 -2.139877 -0.6952883 0.4330127 -1.902113 -0.6180341 0.5 -1.664349 -0.5407798 0.4330127 -1.490293 -0.4842257 0.25 -1.426585 -0.4635255 7.54979e-8 -1.490293 -0.4842257 -0.2499999 -1.664349 -0.5407798 -0.4330126 -1.902113 -0.618034 -0.5 -2.139877 -0.6952882 -0.4330128 -2.313932 -0.7518423 -0.2500003 -2.377641 0.7725424 0 -2.313933 0.7518422 0.25 -2.139877 0.6952882 0.4330127 -1.902113 0.6180339 0.5 -1.664349 0.5407797 0.4330127 -1.490294 0.4842257 0.25 -1.426585 0.4635255 7.54979e-8 -1.490294 0.4842257 -0.2499999 -1.664349 0.5407797 -0.4330126 -1.902113 0.6180339 -0.5 -2.139877 0.6952881 -0.4330128 -2.313932 0.7518421 -0.2500003 -1.469464 2.022542 0 -1.430089 1.968348 0.25 -1.322517 1.820288 0.4330127 -1.175571 1.618034 0.5 -1.028625 1.415779 0.4330127 -0.9210523 1.267719 0.25 -0.8816781 1.213525 7.54979e-8 -0.9210523 1.267719 -0.2499999 -1.028624 1.415779 -0.4330126 -1.175571 1.618033 -0.5 -1.322517 1.820288 -0.4330128 -1.430089 1.968348 -0.2500003 + + -1.09278e-7 2.5 0 -1.0635e-7 2.433013 0.25 -9.83506e-8 2.25 0.4330127 -8.74228e-8 2 0.5 -7.64949e-8 1.75 0.4330127 -6.84952e-8 1.566987 0.25 -6.55671e-8 1.5 7.54979e-8 -6.84952e-8 1.566987 -0.2499999 -7.64949e-8 1.75 -0.4330126 -8.74228e-8 2 -0.5 -9.83506e-8 2.25 -0.4330128 -1.0635e-7 2.433012 -0.2500003 1.469463 2.022542 0 1.430089 1.968349 0.25 1.322517 1.820288 0.4330127 1.17557 1.618034 0.5 1.028624 1.41578 0.4330127 0.921052 1.267719 0.25 0.8816779 1.213526 7.54979e-8 0.921052 1.267719 -0.2499999 1.028624 1.41578 -0.4330126 1.17557 1.618034 -0.5 1.322517 1.820288 -0.4330128 1.430089 1.968349 -0.2500003 2.377641 0.7725425 0 2.313933 0.7518423 0.25 2.139877 0.6952882 0.4330127 1.902113 0.618034 0.5 1.664349 0.5407798 0.4330127 1.490294 0.4842257 0.25 1.426585 0.4635255 7.54979e-8 1.490294 0.4842257 -0.2499999 1.664349 0.5407797 -0.4330126 1.902113 0.6180339 -0.5 2.139877 0.6952882 -0.4330128 2.313932 0.7518422 -0.2500003 2.377641 -0.7725425 0 2.313933 -0.7518423 0.25 2.139877 -0.6952882 0.4330127 1.902113 -0.618034 0.5 1.664349 -0.5407798 0.4330127 1.490294 -0.4842257 0.25 1.426585 -0.4635255 7.54979e-8 1.490294 -0.4842257 -0.2499999 1.664349 -0.5407797 -0.4330126 1.902113 -0.6180339 -0.5 2.139877 -0.6952882 -0.4330128 2.313932 -0.7518422 -0.2500003 1.469463 -2.022542 0 1.430089 -1.968349 0.25 1.322517 -1.820288 0.4330127 1.17557 -1.618034 0.5 1.028624 -1.41578 0.4330127 0.921052 -1.267719 0.25 0.8816779 -1.213526 7.54979e-8 0.921052 -1.267719 -0.2499999 1.028624 -1.41578 -0.4330126 1.17557 -1.618034 -0.5 1.322517 -1.820288 -0.4330128 1.430089 -1.968349 -0.2500003 -1.09278e-7 -2.5 0 -1.0635e-7 -2.433013 0.25 -9.83506e-8 -2.25 0.4330127 -8.74228e-8 -2 0.5 -7.64949e-8 -1.75 0.4330127 -6.84952e-8 -1.566987 0.25 -6.55671e-8 -1.5 7.54979e-8 -6.84952e-8 -1.566987 -0.2499999 -7.64949e-8 -1.75 -0.4330126 -8.74228e-8 -2 -0.5 -9.83506e-8 -2.25 -0.4330128 -1.0635e-7 -2.433012 -0.2500003 -1.469463 -2.022542 0 -1.430089 -1.968349 0.25 -1.322517 -1.820288 0.4330127 -1.17557 -1.618034 0.5 -1.028624 -1.41578 0.4330127 -0.9210519 -1.267719 0.25 -0.8816777 -1.213526 7.54979e-8 -0.9210519 -1.267719 -0.2499999 -1.028624 -1.41578 -0.4330126 -1.17557 -1.618034 -0.5 -1.322517 -1.820288 -0.4330128 -1.430089 -1.968349 -0.2500003 -2.377641 -0.7725426 0 -2.313932 -0.7518424 0.25 -2.139877 -0.6952883 0.4330127 -1.902113 -0.6180341 0.5 -1.664349 -0.5407798 0.4330127 -1.490293 -0.4842257 0.25 -1.426585 -0.4635255 7.54979e-8 -1.490293 -0.4842257 -0.2499999 -1.664349 -0.5407798 -0.4330126 -1.902113 -0.618034 -0.5 -2.139877 -0.6952882 -0.4330128 -2.313932 -0.7518423 -0.2500003 -2.377641 0.7725424 0 -2.313933 0.7518422 0.25 -2.139877 0.6952882 0.4330127 -1.902113 0.6180339 0.5 -1.664349 0.5407797 0.4330127 -1.490294 0.4842257 0.25 -1.426585 0.4635255 7.54979e-8 -1.490294 0.4842257 -0.2499999 -1.664349 0.5407797 -0.4330126 -1.902113 0.6180339 -0.5 -2.139877 0.6952881 -0.4330128 -2.313932 0.7518421 -0.2500003 -1.469464 2.022542 0 -1.430089 1.968348 0.25 -1.322517 1.820288 0.4330127 -1.175571 1.618034 0.5 -1.028625 1.415779 0.4330127 -0.9210523 1.267719 0.25 -0.8816781 1.213525 7.54979e-8 -0.9210523 1.267719 -0.2499999 -1.028624 1.415779 -0.4330126 -1.175571 1.618033 -0.5 -1.322517 1.820288 -0.4330128 -1.430089 1.968348 -0.2500003 - + - - -1.39645e-7 1 -2.71833e-7 0.5159397 0.71013 0.4790842 0.5877851 0.809017 -1.46424e-7 -1.12014e-7 0.8777689 0.4790842 0.3154685 0.4342053 0.8437685 -9.73266e-8 0.5367071 0.8437687 0.03035063 0.04177406 0.9986659 -1.35335e-8 0.05163556 0.9986659 -0.2699911 -0.3716109 0.8882624 4.84062e-8 -0.4593363 0.8882624 -0.5008137 -0.6893111 0.5234843 1.02225e-7 -0.8520353 0.5234844 -0.5877852 -0.809017 1.46912e-8 1.32221e-7 -0.9999999 4.89707e-9 -0.5008138 -0.6893111 -0.5234841 9.24895e-8 -0.8520354 -0.5234841 -0.2699913 -0.3716112 -0.8882623 5.80874e-8 -0.4593366 -0.8882622 0.03035033 0.04177367 -0.998666 -2.46063e-8 0.05163517 -0.998666 0.3154682 0.4342048 -0.8437689 -8.70817e-8 0.5367067 -0.8437688 0.5159394 0.7101299 -0.4790846 -1.22682e-7 0.8777687 -0.4790847 0.8348078 0.2712456 0.4790843 0.9510565 0.3090169 -2.65732e-7 0.5104388 0.1658516 0.8437687 0.04910826 0.01595625 0.998666 -0.4368547 -0.1419427 0.8882625 -0.8103337 -0.2632934 0.5234844 -0.9510565 -0.309017 -9.79413e-9 -0.8103338 -0.2632935 -0.5234841 -0.4368552 -0.1419429 -0.8882623 0.04910788 0.01595613 -0.998666 0.5104386 0.1658515 -0.8437688 0.8348075 0.2712454 -0.4790847 0.8348078 -0.2712456 0.4790842 0.9510565 -0.309017 -3.52501e-7 0.5104389 -0.1658516 0.8437686 0.04910832 -0.01595627 0.9986659 -0.4368547 0.1419427 0.8882625 -0.8103337 0.2632934 0.5234844 -0.9510565 0.309017 2.44853e-8 -0.8103338 0.2632934 -0.5234841 -0.4368552 0.1419429 -0.8882623 0.04910788 -0.01595613 -0.998666 0.5104385 -0.1658515 -0.8437688 0.8348076 -0.2712455 -0.4790847 0.5159396 -0.7101301 0.4790841 0.5877853 -0.809017 -2.11501e-7 0.3154684 -0.4342052 0.8437686 0.03035063 -0.04177404 0.998666 -0.2699911 0.3716109 0.8882624 -0.5008137 0.6893111 0.5234843 -0.5877852 0.809017 9.79413e-9 -0.5008138 0.6893111 -0.5234841 -0.2699913 0.3716112 -0.8882622 0.03035034 -0.04177368 -0.998666 0.3154682 -0.4342048 -0.8437689 0.5159395 -0.7101298 -0.4790846 -6.40082e-8 -0.8777689 0.4790843 -7.59233e-8 -1 -2.38616e-7 -2.3051e-8 -0.536707 0.8437687 2.46063e-9 -0.05163559 0.998666 2.90437e-8 0.4593363 0.8882624 1.46036e-8 0.8520353 0.5234843 9.79413e-9 0.9999999 2.93824e-8 3.40751e-8 0.8520354 -0.5234841 1.69422e-8 0.4593367 -0.8882622 -2.46063e-9 -0.05163516 -0.998666 -3.07347e-8 -0.5367067 -0.8437688 -3.73381e-8 -0.8777686 -0.4790848 -0.5159397 -0.7101299 0.4790842 -0.5877852 -0.8090169 -2.54885e-7 -0.3154685 -0.4342053 0.8437686 -0.03035061 -0.04177405 0.9986659 0.2699912 0.3716109 0.8882624 0.5008138 0.689311 0.5234843 0.5877852 0.8090171 2.93824e-8 0.5008138 0.6893111 -0.5234842 0.2699913 0.3716112 -0.8882622 -0.03035032 -0.04177361 -0.998666 -0.3154683 -0.4342048 -0.8437689 -0.5159395 -0.7101299 -0.4790846 -0.8348078 -0.2712456 0.4790843 -0.9510564 -0.309017 -3.03693e-7 -0.5104389 -0.1658517 0.8437685 -0.04910835 -0.01595627 0.998666 0.4368547 0.1419428 0.8882624 0.8103337 0.2632934 0.5234843 0.9510565 0.3090171 9.79413e-9 0.8103338 0.2632935 -0.5234842 0.4368551 0.1419429 -0.8882622 -0.04910791 -0.01595615 -0.9986661 -0.5104385 -0.1658516 -0.8437688 -0.8348075 -0.2712456 -0.4790848 -0.8348079 0.2712454 0.4790843 -0.9510565 0.3090169 -3.36232e-7 -0.5104389 0.1658516 0.8437685 -0.04910829 0.01595625 0.998666 0.4368548 -0.1419427 0.8882625 0.8103337 -0.2632933 0.5234843 0.9510565 -0.3090169 3.91765e-8 0.8103339 -0.2632934 -0.5234841 0.4368552 -0.1419428 -0.8882623 -0.04910788 0.01595612 -0.998666 -0.5104386 0.1658515 -0.8437688 -0.8348076 0.2712454 -0.4790848 -0.5159396 0.71013 0.4790843 -0.5877853 0.8090169 -2.71155e-7 -0.3154685 0.434205 0.8437687 -0.03035063 0.04177407 0.998666 0.2699911 -0.3716108 0.8882625 0.5008138 -0.6893109 0.5234844 0.5877853 -0.8090169 1.46912e-8 0.500814 -0.6893111 -0.5234841 0.2699914 -0.3716112 -0.8882623 -0.03035034 0.04177367 -0.998666 -0.3154683 0.4342048 -0.8437688 -0.5159395 0.7101298 -0.4790846 + + -1.39645e-7 1 -2.71833e-7 0.5159397 0.71013 0.4790842 0.5877851 0.809017 -1.46424e-7 -1.12014e-7 0.8777689 0.4790842 0.3154685 0.4342053 0.8437685 -9.73266e-8 0.5367071 0.8437687 0.03035063 0.04177406 0.9986659 -1.35335e-8 0.05163556 0.9986659 -0.2699911 -0.3716109 0.8882624 4.84062e-8 -0.4593363 0.8882624 -0.5008137 -0.6893111 0.5234843 1.02225e-7 -0.8520353 0.5234844 -0.5877852 -0.809017 1.46912e-8 1.32221e-7 -0.9999999 4.89707e-9 -0.5008138 -0.6893111 -0.5234841 9.24895e-8 -0.8520354 -0.5234841 -0.2699913 -0.3716112 -0.8882623 5.80874e-8 -0.4593366 -0.8882622 0.03035033 0.04177367 -0.998666 -2.46063e-8 0.05163517 -0.998666 0.3154682 0.4342048 -0.8437689 -8.70817e-8 0.5367067 -0.8437688 0.5159394 0.7101299 -0.4790846 -1.22682e-7 0.8777687 -0.4790847 0.8348078 0.2712456 0.4790843 0.9510565 0.3090169 -2.65732e-7 0.5104388 0.1658516 0.8437687 0.04910826 0.01595625 0.998666 -0.4368547 -0.1419427 0.8882625 -0.8103337 -0.2632934 0.5234844 -0.9510565 -0.309017 -9.79413e-9 -0.8103338 -0.2632935 -0.5234841 -0.4368552 -0.1419429 -0.8882623 0.04910788 0.01595613 -0.998666 0.5104386 0.1658515 -0.8437688 0.8348075 0.2712454 -0.4790847 0.8348078 -0.2712456 0.4790842 0.9510565 -0.309017 -3.52501e-7 0.5104389 -0.1658516 0.8437686 0.04910832 -0.01595627 0.9986659 -0.4368547 0.1419427 0.8882625 -0.8103337 0.2632934 0.5234844 -0.9510565 0.309017 2.44853e-8 -0.8103338 0.2632934 -0.5234841 -0.4368552 0.1419429 -0.8882623 0.04910788 -0.01595613 -0.998666 0.5104385 -0.1658515 -0.8437688 0.8348076 -0.2712455 -0.4790847 0.5159396 -0.7101301 0.4790841 0.5877853 -0.809017 -2.11501e-7 0.3154684 -0.4342052 0.8437686 0.03035063 -0.04177404 0.998666 -0.2699911 0.3716109 0.8882624 -0.5008137 0.6893111 0.5234843 -0.5877852 0.809017 9.79413e-9 -0.5008138 0.6893111 -0.5234841 -0.2699913 0.3716112 -0.8882622 0.03035034 -0.04177368 -0.998666 0.3154682 -0.4342048 -0.8437689 0.5159395 -0.7101298 -0.4790846 -6.40082e-8 -0.8777689 0.4790843 -7.59233e-8 -1 -2.38616e-7 -2.3051e-8 -0.536707 0.8437687 2.46063e-9 -0.05163559 0.998666 2.90437e-8 0.4593363 0.8882624 1.46036e-8 0.8520353 0.5234843 9.79413e-9 0.9999999 2.93824e-8 3.40751e-8 0.8520354 -0.5234841 1.69422e-8 0.4593367 -0.8882622 -2.46063e-9 -0.05163516 -0.998666 -3.07347e-8 -0.5367067 -0.8437688 -3.73381e-8 -0.8777686 -0.4790848 -0.5159397 -0.7101299 0.4790842 -0.5877852 -0.8090169 -2.54885e-7 -0.3154685 -0.4342053 0.8437686 -0.03035061 -0.04177405 0.9986659 0.2699912 0.3716109 0.8882624 0.5008138 0.689311 0.5234843 0.5877852 0.8090171 2.93824e-8 0.5008138 0.6893111 -0.5234842 0.2699913 0.3716112 -0.8882622 -0.03035032 -0.04177361 -0.998666 -0.3154683 -0.4342048 -0.8437689 -0.5159395 -0.7101299 -0.4790846 -0.8348078 -0.2712456 0.4790843 -0.9510564 -0.309017 -3.03693e-7 -0.5104389 -0.1658517 0.8437685 -0.04910835 -0.01595627 0.998666 0.4368547 0.1419428 0.8882624 0.8103337 0.2632934 0.5234843 0.9510565 0.3090171 9.79413e-9 0.8103338 0.2632935 -0.5234842 0.4368551 0.1419429 -0.8882622 -0.04910791 -0.01595615 -0.9986661 -0.5104385 -0.1658516 -0.8437688 -0.8348075 -0.2712456 -0.4790848 -0.8348079 0.2712454 0.4790843 -0.9510565 0.3090169 -3.36232e-7 -0.5104389 0.1658516 0.8437685 -0.04910829 0.01595625 0.998666 0.4368548 -0.1419427 0.8882625 0.8103337 -0.2632933 0.5234843 0.9510565 -0.3090169 3.91765e-8 0.8103339 -0.2632934 -0.5234841 0.4368552 -0.1419428 -0.8882623 -0.04910788 0.01595612 -0.998666 -0.5104386 0.1658515 -0.8437688 -0.8348076 0.2712454 -0.4790848 -0.5159396 0.71013 0.4790843 -0.5877853 0.8090169 -2.71155e-7 -0.3154685 0.434205 0.8437687 -0.03035063 0.04177407 0.998666 0.2699911 -0.3716108 0.8882625 0.5008138 -0.6893109 0.5234844 0.5877853 -0.8090169 1.46912e-8 0.500814 -0.6893111 -0.5234841 0.2699914 -0.3716112 -0.8882623 -0.03035034 0.04177367 -0.998666 -0.3154683 0.4342048 -0.8437688 -0.5159395 0.7101298 -0.4790846 - + - - 0 0 0 0.08333334 0 0 0.1666667 0 0 0.25 0 0 0.3333333 0 0 0.4166667 0 0 0.5 0 0 0.5833333 0 0 0.6666667 0 0 0.75 0 0 0.8333333 0 0 0.9166667 0 0 1 0 0 0 0.1 0 0.08333334 0.1 0 0.1666667 0.1 0 0.25 0.1 0 0.3333333 0.1 0 0.4166667 0.1 0 0.5 0.1 0 0.5833333 0.1 0 0.6666667 0.1 0 0.75 0.1 0 0.8333333 0.1 0 0.9166667 0.1 0 1 0.1 0 0 0.2 0 0.08333334 0.2 0 0.1666667 0.2 0 0.25 0.2 0 0.3333333 0.2 0 0.4166667 0.2 0 0.5 0.2 0 0.5833333 0.2 0 0.6666667 0.2 0 0.75 0.2 0 0.8333333 0.2 0 0.9166667 0.2 0 1 0.2 0 0 0.3 0 0.08333334 0.3 0 0.1666667 0.3 0 0.25 0.3 0 0.3333333 0.3 0 0.4166667 0.3 0 0.5 0.3 0 0.5833333 0.3 0 0.6666667 0.3 0 0.75 0.3 0 0.8333333 0.3 0 0.9166667 0.3 0 1 0.3 0 0 0.4 0 0.08333334 0.4 0 0.1666667 0.4 0 0.25 0.4 0 0.3333333 0.4 0 0.4166667 0.4 0 0.5 0.4 0 0.5833333 0.4 0 0.6666667 0.4 0 0.75 0.4 0 0.8333333 0.4 0 0.9166667 0.4 0 1 0.4 0 0 0.5 0 0.08333334 0.5 0 0.1666667 0.5 0 0.25 0.5 0 0.3333333 0.5 0 0.4166667 0.5 0 0.5 0.5 0 0.5833333 0.5 0 0.6666667 0.5 0 0.75 0.5 0 0.8333333 0.5 0 0.9166667 0.5 0 1 0.5 0 0 0.6 0 0.08333334 0.6 0 0.1666667 0.6 0 0.25 0.6 0 0.3333333 0.6 0 0.4166667 0.6 0 0.5 0.6 0 0.5833333 0.6 0 0.6666667 0.6 0 0.75 0.6 0 0.8333333 0.6 0 0.9166667 0.6 0 1 0.6 0 0 0.7 0 0.08333334 0.7 0 0.1666667 0.7 0 0.25 0.7 0 0.3333333 0.7 0 0.4166667 0.7 0 0.5 0.7 0 0.5833333 0.7 0 0.6666667 0.7 0 0.75 0.7 0 0.8333333 0.7 0 0.9166667 0.7 0 1 0.7 0 0 0.8 0 0.08333334 0.8 0 0.1666667 0.8 0 0.25 0.8 0 0.3333333 0.8 0 0.4166667 0.8 0 0.5 0.8 0 0.5833333 0.8 0 0.6666667 0.8 0 0.75 0.8 0 0.8333333 0.8 0 0.9166667 0.8 0 1 0.8 0 0 0.9 0 0.08333334 0.9 0 0.1666667 0.9 0 0.25 0.9 0 0.3333333 0.9 0 0.4166667 0.9 0 0.5 0.9 0 0.5833333 0.9 0 0.6666667 0.9 0 0.75 0.9 0 0.8333333 0.9 0 0.9166667 0.9 0 1 0.9 0 0 1 0 0.08333334 1 0 0.1666667 1 0 0.25 1 0 0.3333333 1 0 0.4166667 1 0 0.5 1 0 0.5833333 1 0 0.6666667 1 0 0.75 1 0 0.8333333 1 0 0.9166667 1 0 1 1 0 + + 0 0 0 0.08333334 0 0 0.1666667 0 0 0.25 0 0 0.3333333 0 0 0.4166667 0 0 0.5 0 0 0.5833333 0 0 0.6666667 0 0 0.75 0 0 0.8333333 0 0 0.9166667 0 0 1 0 0 0 0.1 0 0.08333334 0.1 0 0.1666667 0.1 0 0.25 0.1 0 0.3333333 0.1 0 0.4166667 0.1 0 0.5 0.1 0 0.5833333 0.1 0 0.6666667 0.1 0 0.75 0.1 0 0.8333333 0.1 0 0.9166667 0.1 0 1 0.1 0 0 0.2 0 0.08333334 0.2 0 0.1666667 0.2 0 0.25 0.2 0 0.3333333 0.2 0 0.4166667 0.2 0 0.5 0.2 0 0.5833333 0.2 0 0.6666667 0.2 0 0.75 0.2 0 0.8333333 0.2 0 0.9166667 0.2 0 1 0.2 0 0 0.3 0 0.08333334 0.3 0 0.1666667 0.3 0 0.25 0.3 0 0.3333333 0.3 0 0.4166667 0.3 0 0.5 0.3 0 0.5833333 0.3 0 0.6666667 0.3 0 0.75 0.3 0 0.8333333 0.3 0 0.9166667 0.3 0 1 0.3 0 0 0.4 0 0.08333334 0.4 0 0.1666667 0.4 0 0.25 0.4 0 0.3333333 0.4 0 0.4166667 0.4 0 0.5 0.4 0 0.5833333 0.4 0 0.6666667 0.4 0 0.75 0.4 0 0.8333333 0.4 0 0.9166667 0.4 0 1 0.4 0 0 0.5 0 0.08333334 0.5 0 0.1666667 0.5 0 0.25 0.5 0 0.3333333 0.5 0 0.4166667 0.5 0 0.5 0.5 0 0.5833333 0.5 0 0.6666667 0.5 0 0.75 0.5 0 0.8333333 0.5 0 0.9166667 0.5 0 1 0.5 0 0 0.6 0 0.08333334 0.6 0 0.1666667 0.6 0 0.25 0.6 0 0.3333333 0.6 0 0.4166667 0.6 0 0.5 0.6 0 0.5833333 0.6 0 0.6666667 0.6 0 0.75 0.6 0 0.8333333 0.6 0 0.9166667 0.6 0 1 0.6 0 0 0.7 0 0.08333334 0.7 0 0.1666667 0.7 0 0.25 0.7 0 0.3333333 0.7 0 0.4166667 0.7 0 0.5 0.7 0 0.5833333 0.7 0 0.6666667 0.7 0 0.75 0.7 0 0.8333333 0.7 0 0.9166667 0.7 0 1 0.7 0 0 0.8 0 0.08333334 0.8 0 0.1666667 0.8 0 0.25 0.8 0 0.3333333 0.8 0 0.4166667 0.8 0 0.5 0.8 0 0.5833333 0.8 0 0.6666667 0.8 0 0.75 0.8 0 0.8333333 0.8 0 0.9166667 0.8 0 1 0.8 0 0 0.9 0 0.08333334 0.9 0 0.1666667 0.9 0 0.25 0.9 0 0.3333333 0.9 0 0.4166667 0.9 0 0.5 0.9 0 0.5833333 0.9 0 0.6666667 0.9 0 0.75 0.9 0 0.8333333 0.9 0 0.9166667 0.9 0 1 0.9 0 0 1 0 0.08333334 1 0 0.1666667 1 0 0.25 1 0 0.3333333 1 0 0.4166667 1 0 0.5 1 0 0.5833333 1 0 0.6666667 1 0 0.75 1 0 0.8333333 1 0 0.9166667 1 0 1 1 0 - + - - + + - - - + + +

0 0 0 13 1 14 12 2 13 0 0 0 1 3 1 13 1 14 1 3 1 14 4 15 13 1 14 1 3 1 2 5 2 14 4 15 2 5 2 15 6 16 14 4 15 2 5 2 3 7 3 15 6 16 3 7 3 16 8 17 15 6 16 3 7 3 4 9 4 16 8 17 4 9 4 17 10 18 16 8 17 4 9 4 5 11 5 17 10 18 5 11 5 18 12 19 17 10 18 5 11 5 6 13 6 18 12 19 6 13 6 19 14 20 18 12 19 6 13 6 7 15 7 19 14 20 7 15 7 20 16 21 19 14 20 7 15 7 8 17 8 20 16 21 8 17 8 21 18 22 20 16 21 8 17 8 9 19 9 21 18 22 9 19 9 22 20 23 21 18 22 9 19 9 10 21 10 22 20 23 10 21 10 23 22 24 22 20 23 10 21 10 11 23 11 23 22 24 11 23 11 12 2 25 23 22 24 11 23 11 0 0 12 12 2 25 12 2 13 25 24 27 24 25 26 12 2 13 13 1 14 25 24 27 13 1 14 26 26 28 25 24 27 13 1 14 14 4 15 26 26 28 14 4 15 27 27 29 26 26 28 14 4 15 15 6 16 27 27 29 15 6 16 28 28 30 27 27 29 15 6 16 16 8 17 28 28 30 16 8 17 29 29 31 28 28 30 16 8 17 17 10 18 29 29 31 17 10 18 30 30 32 29 29 31 17 10 18 18 12 19 30 30 32 18 12 19 31 31 33 30 30 32 18 12 19 19 14 20 31 31 33 19 14 20 32 32 34 31 31 33 19 14 20 20 16 21 32 32 34 20 16 21 33 33 35 32 32 34 20 16 21 21 18 22 33 33 35 21 18 22 34 34 36 33 33 35 21 18 22 22 20 23 34 34 36 22 20 23 35 35 37 34 34 36 22 20 23 23 22 24 35 35 37 23 22 24 24 25 38 35 35 37 23 22 24 12 2 25 24 25 38 24 25 26 37 36 40 36 37 39 24 25 26 25 24 27 37 36 40 25 24 27 38 38 41 37 36 40 25 24 27 26 26 28 38 38 41 26 26 28 39 39 42 38 38 41 26 26 28 27 27 29 39 39 42 27 27 29 40 40 43 39 39 42 27 27 29 28 28 30 40 40 43 28 28 30 41 41 44 40 40 43 28 28 30 29 29 31 41 41 44 29 29 31 42 42 45 41 41 44 29 29 31 30 30 32 42 42 45 30 30 32 43 43 46 42 42 45 30 30 32 31 31 33 43 43 46 31 31 33 44 44 47 43 43 46 31 31 33 32 32 34 44 44 47 32 32 34 45 45 48 44 44 47 32 32 34 33 33 35 45 45 48 33 33 35 46 46 49 45 45 48 33 33 35 34 34 36 46 46 49 34 34 36 47 47 50 46 46 49 34 34 36 35 35 37 47 47 50 35 35 37 36 37 51 47 47 50 35 35 37 24 25 38 36 37 51 36 37 39 49 48 53 48 49 52 36 37 39 37 36 40 49 48 53 37 36 40 50 50 54 49 48 53 37 36 40 38 38 41 50 50 54 38 38 41 51 51 55 50 50 54 38 38 41 39 39 42 51 51 55 39 39 42 52 52 56 51 51 55 39 39 42 40 40 43 52 52 56 40 40 43 53 53 57 52 52 56 40 40 43 41 41 44 53 53 57 41 41 44 54 54 58 53 53 57 41 41 44 42 42 45 54 54 58 42 42 45 55 55 59 54 54 58 42 42 45 43 43 46 55 55 59 43 43 46 56 56 60 55 55 59 43 43 46 44 44 47 56 56 60 44 44 47 57 57 61 56 56 60 44 44 47 45 45 48 57 57 61 45 45 48 58 58 62 57 57 61 45 45 48 46 46 49 58 58 62 46 46 49 59 59 63 58 58 62 46 46 49 47 47 50 59 59 63 47 47 50 48 49 64 59 59 63 47 47 50 36 37 51 48 49 64 48 49 52 61 60 66 60 61 65 48 49 52 49 48 53 61 60 66 49 48 53 62 62 67 61 60 66 49 48 53 50 50 54 62 62 67 50 50 54 63 63 68 62 62 67 50 50 54 51 51 55 63 63 68 51 51 55 64 64 69 63 63 68 51 51 55 52 52 56 64 64 69 52 52 56 65 65 70 64 64 69 52 52 56 53 53 57 65 65 70 53 53 57 66 66 71 65 65 70 53 53 57 54 54 58 66 66 71 54 54 58 67 67 72 66 66 71 54 54 58 55 55 59 67 67 72 55 55 59 68 68 73 67 67 72 55 55 59 56 56 60 68 68 73 56 56 60 69 69 74 68 68 73 56 56 60 57 57 61 69 69 74 57 57 61 70 70 75 69 69 74 57 57 61 58 58 62 70 70 75 58 58 62 71 71 76 70 70 75 58 58 62 59 59 63 71 71 76 59 59 63 60 61 77 71 71 76 59 59 63 48 49 64 60 61 77 60 61 65 73 72 79 72 73 78 60 61 65 61 60 66 73 72 79 61 60 66 74 74 80 73 72 79 61 60 66 62 62 67 74 74 80 62 62 67 75 75 81 74 74 80 62 62 67 63 63 68 75 75 81 63 63 68 76 76 82 75 75 81 63 63 68 64 64 69 76 76 82 64 64 69 77 77 83 76 76 82 64 64 69 65 65 70 77 77 83 65 65 70 78 78 84 77 77 83 65 65 70 66 66 71 78 78 84 66 66 71 79 79 85 78 78 84 66 66 71 67 67 72 79 79 85 67 67 72 80 80 86 79 79 85 67 67 72 68 68 73 80 80 86 68 68 73 81 81 87 80 80 86 68 68 73 69 69 74 81 81 87 69 69 74 82 82 88 81 81 87 69 69 74 70 70 75 82 82 88 70 70 75 83 83 89 82 82 88 70 70 75 71 71 76 83 83 89 71 71 76 72 73 90 83 83 89 71 71 76 60 61 77 72 73 90 72 73 78 85 84 92 84 85 91 72 73 78 73 72 79 85 84 92 73 72 79 86 86 93 85 84 92 73 72 79 74 74 80 86 86 93 74 74 80 87 87 94 86 86 93 74 74 80 75 75 81 87 87 94 75 75 81 88 88 95 87 87 94 75 75 81 76 76 82 88 88 95 76 76 82 89 89 96 88 88 95 76 76 82 77 77 83 89 89 96 77 77 83 90 90 97 89 89 96 77 77 83 78 78 84 90 90 97 78 78 84 91 91 98 90 90 97 78 78 84 79 79 85 91 91 98 79 79 85 92 92 99 91 91 98 79 79 85 80 80 86 92 92 99 80 80 86 93 93 100 92 92 99 80 80 86 81 81 87 93 93 100 81 81 87 94 94 101 93 93 100 81 81 87 82 82 88 94 94 101 82 82 88 95 95 102 94 94 101 82 82 88 83 83 89 95 95 102 83 83 89 84 85 103 95 95 102 83 83 89 72 73 90 84 85 103 84 85 91 97 96 105 96 97 104 84 85 91 85 84 92 97 96 105 85 84 92 98 98 106 97 96 105 85 84 92 86 86 93 98 98 106 86 86 93 99 99 107 98 98 106 86 86 93 87 87 94 99 99 107 87 87 94 100 100 108 99 99 107 87 87 94 88 88 95 100 100 108 88 88 95 101 101 109 100 100 108 88 88 95 89 89 96 101 101 109 89 89 96 102 102 110 101 101 109 89 89 96 90 90 97 102 102 110 90 90 97 103 103 111 102 102 110 90 90 97 91 91 98 103 103 111 91 91 98 104 104 112 103 103 111 91 91 98 92 92 99 104 104 112 92 92 99 105 105 113 104 104 112 92 92 99 93 93 100 105 105 113 93 93 100 106 106 114 105 105 113 93 93 100 94 94 101 106 106 114 94 94 101 107 107 115 106 106 114 94 94 101 95 95 102 107 107 115 95 95 102 96 97 116 107 107 115 95 95 102 84 85 103 96 97 116 96 97 104 109 108 118 108 109 117 96 97 104 97 96 105 109 108 118 97 96 105 110 110 119 109 108 118 97 96 105 98 98 106 110 110 119 98 98 106 111 111 120 110 110 119 98 98 106 99 99 107 111 111 120 99 99 107 112 112 121 111 111 120 99 99 107 100 100 108 112 112 121 100 100 108 113 113 122 112 112 121 100 100 108 101 101 109 113 113 122 101 101 109 114 114 123 113 113 122 101 101 109 102 102 110 114 114 123 102 102 110 115 115 124 114 114 123 102 102 110 103 103 111 115 115 124 103 103 111 116 116 125 115 115 124 103 103 111 104 104 112 116 116 125 104 104 112 117 117 126 116 116 125 104 104 112 105 105 113 117 117 126 105 105 113 118 118 127 117 117 126 105 105 113 106 106 114 118 118 127 106 106 114 119 119 128 118 118 127 106 106 114 107 107 115 119 119 128 107 107 115 108 109 129 119 119 128 107 107 115 96 97 116 108 109 129 108 109 117 1 3 131 0 0 130 108 109 117 109 108 118 1 3 131 109 108 118 2 5 132 1 3 131 109 108 118 110 110 119 2 5 132 110 110 119 3 7 133 2 5 132 110 110 119 111 111 120 3 7 133 111 111 120 4 9 134 3 7 133 111 111 120 112 112 121 4 9 134 112 112 121 5 11 135 4 9 134 112 112 121 113 113 122 5 11 135 113 113 122 6 13 136 5 11 135 113 113 122 114 114 123 6 13 136 114 114 123 7 15 137 6 13 136 114 114 123 115 115 124 7 15 137 115 115 124 8 17 138 7 15 137 115 115 124 116 116 125 8 17 138 116 116 125 9 19 139 8 17 138 116 116 125 117 117 126 9 19 139 117 117 126 10 21 140 9 19 139 117 117 126 118 118 127 10 21 140 118 118 127 11 23 141 10 21 140 118 118 127 119 119 128 11 23 141 119 119 128 0 0 142 11 23 141 119 119 128 108 109 129 0 0 142

@@ -631,88 +690,88 @@
- + - - 10 0 0 9.807853 1.950903 0 9.238795 3.826834 0 8.314696 5.555702 0 7.071068 7.071068 0 5.555702 8.314696 0 3.826834 9.238795 0 1.950904 9.807853 0 7.54979e-7 10 0 -1.950902 9.807853 0 -3.826833 9.238796 0 -5.555702 8.314696 0 -7.071068 7.071068 0 -8.314696 5.555702 0 -9.238796 3.826833 0 -9.807854 1.950901 0 -10 -3.25841e-6 0 -9.807852 -1.950907 0 -9.238793 -3.826839 0 -8.314693 -5.555707 0 -7.071063 -7.071073 0 -5.555696 -8.3147 0 -3.826827 -9.238798 0 -1.950894 -9.807855 0 9.65599e-6 -10 0 1.950913 -9.807851 0 3.826845 -9.238791 0 5.555712 -8.31469 0 7.071077 -7.071059 0 8.314704 -5.555691 0 9.238801 -3.826821 0 9.807856 -1.950888 0 + + 10 0 0 9.807853 1.950903 0 9.238795 3.826834 0 8.314696 5.555702 0 7.071068 7.071068 0 5.555702 8.314696 0 3.826834 9.238795 0 1.950904 9.807853 0 7.54979e-7 10 0 -1.950902 9.807853 0 -3.826833 9.238796 0 -5.555702 8.314696 0 -7.071068 7.071068 0 -8.314696 5.555702 0 -9.238796 3.826833 0 -9.807854 1.950901 0 -10 -3.25841e-6 0 -9.807852 -1.950907 0 -9.238793 -3.826839 0 -8.314693 -5.555707 0 -7.071063 -7.071073 0 -5.555696 -8.3147 0 -3.826827 -9.238798 0 -1.950894 -9.807855 0 9.65599e-6 -10 0 1.950913 -9.807851 0 3.826845 -9.238791 0 5.555712 -8.31469 0 7.071077 -7.071059 0 8.314704 -5.555691 0 9.238801 -3.826821 0 9.807856 -1.950888 0 - + - - 0 0 1 0 0 1 0 0 1 0 0 0.9999999 0 0 1 0 0 0.9999999 0 0 1 0 0 0.9999999 0 0 1 0 0 1 0 0 0.9999999 0 0 1 0 0 1 0 0 1 0 0 1 0 0 0.9999999 0 0 1 0 0 0.9999999 0 0 1 0 0 0.9999999 0 0 0.9999999 0 0 0.9999999 0 0 1 0 0 0.9999999 0 0 1 0 0 1 0 0 0.9999999 0 0 1 0 0 1 0 0 0.9999999 0 0 0.9999999 0 0 1 + + 0 0 1 0 0 1 0 0 1 0 0 0.9999999 0 0 1 0 0 0.9999999 0 0 1 0 0 0.9999999 0 0 1 0 0 1 0 0 0.9999999 0 0 1 0 0 1 0 0 1 0 0 1 0 0 0.9999999 0 0 1 0 0 0.9999999 0 0 1 0 0 0.9999999 0 0 0.9999999 0 0 0.9999999 0 0 1 0 0 0.9999999 0 0 1 0 0 1 0 0 0.9999999 0 0 1 0 0 1 0 0 0.9999999 0 0 0.9999999 0 0 1 - + - - 0.5975444 0.9903928 -0.25 0.691341 0.9619401 -0.25 0.7777845 0.9157352 -0.25 0.8535529 0.8535539 -0.25 0.9157345 0.7777857 -0.25 0.9619396 0.6913422 -0.25 0.9903926 0.5975457 -0.25 1 0.5000005 -0.25 0.9903927 0.4024553 -0.25 0.9619399 0.3086587 -0.25 0.915735 0.2222152 -0.25 0.8535537 0.1464469 -0.25 0.7777854 0.08426532 -0.25 0.6913419 0.03806034 -0.25 0.5975454 0.009607404 -0.25 0.5000002 0 -0.25 0.402455 0.009607315 -0.25 0.3086584 0.03806019 -0.25 0.2222149 0.08426517 -0.25 0.1464466 0.1464466 -0.25 0.08426517 0.2222149 -0.25 0.03806019 0.3086583 -0.25 0.009607345 0.4024549 -0.25 0 0.5 -0.25 0.009607345 0.5975451 -0.25 0.03806022 0.6913417 -0.25 0.08426517 0.7777851 -0.25 0.1464466 0.8535534 -0.25 0.2222148 0.9157348 -0.25 0.3086582 0.9619398 -0.25 0.4024548 0.9903927 -0.25 0.5 1 -0.25 + + 0.5975444 0.9903928 -0.25 0.691341 0.9619401 -0.25 0.7777845 0.9157352 -0.25 0.8535529 0.8535539 -0.25 0.9157345 0.7777857 -0.25 0.9619396 0.6913422 -0.25 0.9903926 0.5975457 -0.25 1 0.5000005 -0.25 0.9903927 0.4024553 -0.25 0.9619399 0.3086587 -0.25 0.915735 0.2222152 -0.25 0.8535537 0.1464469 -0.25 0.7777854 0.08426532 -0.25 0.6913419 0.03806034 -0.25 0.5975454 0.009607404 -0.25 0.5000002 0 -0.25 0.402455 0.009607315 -0.25 0.3086584 0.03806019 -0.25 0.2222149 0.08426517 -0.25 0.1464466 0.1464466 -0.25 0.08426517 0.2222149 -0.25 0.03806019 0.3086583 -0.25 0.009607345 0.4024549 -0.25 0 0.5 -0.25 0.009607345 0.5975451 -0.25 0.03806022 0.6913417 -0.25 0.08426517 0.7777851 -0.25 0.1464466 0.8535534 -0.25 0.2222148 0.9157348 -0.25 0.3086582 0.9619398 -0.25 0.4024548 0.9903927 -0.25 0.5 1 -0.25 - + - - + + - - - + + +

0 0 31 1 1 30 2 2 29 2 2 29 3 3 28 4 4 27 0 0 31 2 2 29 4 4 27 4 4 27 5 5 26 6 6 25 6 6 25 7 7 24 8 8 23 4 4 27 6 6 25 8 8 23 0 0 31 4 4 27 8 8 23 8 8 23 9 9 22 10 10 21 10 10 21 11 11 20 12 12 19 8 8 23 10 10 21 12 12 19 12 12 19 13 13 18 14 14 17 14 14 17 15 15 16 16 16 15 12 12 19 14 14 17 16 16 15 8 8 23 12 12 19 16 16 15 0 0 31 8 8 23 16 16 15 16 16 15 17 17 14 18 18 13 18 18 13 19 19 12 20 20 11 16 16 15 18 18 13 20 20 11 20 20 11 21 21 10 22 22 9 22 22 9 23 23 8 24 24 7 20 20 11 22 22 9 24 24 7 16 16 15 20 20 11 24 24 7 0 0 31 16 16 15 24 24 7 24 24 7 25 25 6 26 26 5 26 26 5 27 27 4 28 28 3 24 24 7 26 26 5 28 28 3 0 0 31 24 24 7 28 28 3 28 28 3 29 29 2 30 30 1 0 0 31 28 28 3 30 30 1 31 31 0 0 0 31 30 30 1

- + - - -7.071065 -7.071065 0 7.071065 -7.071065 0 -7.071065 7.071065 0 7.071065 7.071065 0 + + -7.071065 -7.071065 0 7.071065 -7.071065 0 -7.071065 7.071065 0 7.071065 7.071065 0 - + - - 0 0 1 0 0 0.9999999 0 0 0.9999999 0 0 1 + + 0 0 1 0 0 0.9999999 0 0 0.9999999 0 0 1 - + - - 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 1 1 0 + + 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 1 1 0 - + - - + + - - - + + +

2 0 6 0 1 4 3 2 7 1 3 5 3 2 7 0 1 4

@@ -730,49 +789,108 @@
- + - - 0 0 1.039281 0.929561 0 0.4647805 0.2872501 0.884065 0.4647805 -0.7520307 0.5463822 0.4647805 -0.7520306 -0.5463823 0.4647805 0.2872503 -0.884065 0.4647805 0.5463822 0 0.8840649 0.1688414 0.5196404 0.8840649 -0.4420325 0.3211554 0.8840649 -0.4420325 -0.3211555 0.8840649 0.1688415 -0.5196403 0.8840649 0.7152236 0.5196404 0.5463822 -0.2731912 0.8407957 0.5463822 -0.884065 -6.664e-8 0.5463822 -0.273191 -0.8407958 0.5463822 0.7152236 -0.5196403 0.5463822 0.9884146 0.3211554 0 -3.332e-8 1.039281 0 -0.9884147 0.3211553 0 -0.6108739 -0.8407958 0 0.6108741 -0.8407956 0 0.9884148 -0.3211552 0 0.6108739 0.8407957 0 -0.6108739 0.8407957 0 -0.9884146 -0.3211555 0 1.666e-8 -1.039281 0 + + 0 0 1.039281 0.929561 0 0.4647805 0.2872501 0.884065 0.4647805 -0.7520307 0.5463822 0.4647805 -0.7520306 -0.5463823 0.4647805 0.2872503 -0.884065 0.4647805 0.5463822 0 0.8840649 0.1688414 0.5196404 0.8840649 -0.4420325 0.3211554 0.8840649 -0.4420325 -0.3211555 0.8840649 0.1688415 -0.5196403 0.8840649 0.7152236 0.5196404 0.5463822 -0.2731912 0.8407957 0.5463822 -0.884065 -6.664e-8 0.5463822 -0.273191 -0.8407958 0.5463822 0.7152236 -0.5196403 0.5463822 0.9884146 0.3211554 0 -3.332e-8 1.039281 0 -0.9884147 0.3211553 0 -0.6108739 -0.8407958 0 0.6108741 -0.8407956 0 0.9884148 -0.3211552 0 0.6108739 0.8407957 0 -0.6108739 0.8407957 0 -0.9884146 -0.3211555 0 1.666e-8 -1.039281 0 - + - - 1.05124e-8 -2.6281e-9 1 0.5257311 1.32646e-8 0.8506508 0.1624598 0.5 0.8506508 0.8944272 5.25619e-8 0.4472137 0.6881909 0.5 0.5257311 0.2763931 0.8506508 0.4472136 -0.4253254 0.3090169 0.8506508 -0.2628656 0.8090169 0.5257311 -0.7236068 0.5257311 0.4472136 -0.4253254 -0.3090171 0.8506507 -0.8506508 -9.01996e-8 0.5257311 -0.7236068 -0.5257311 0.4472137 0.1624599 -0.5 0.8506508 -0.2628654 -0.8090169 0.5257312 0.2763933 -0.8506508 0.4472136 0.6881909 -0.4999999 0.5257311 0.9224887 -0.3159864 0.2217367 0.9224886 0.3159866 0.2217367 0.5855858 0.7796935 0.2217367 -0.01545645 0.9749841 0.2217368 -0.5605768 0.7978637 0.2217367 -0.9320413 0.2865866 0.2217367 -0.9320413 -0.2865868 0.2217367 -0.5605767 -0.7978638 0.2217368 -0.01545633 -0.9749841 0.2217368 0.585586 -0.7796935 0.2217367 + + 0.2680351 0.1947389 0.9435221 0.2680351 0.1947389 0.9435221 0.2680351 0.1947389 0.9435221 0.7240429 0.1947388 0.6616938 0.724043 0.1947388 0.6616938 0.724043 0.1947388 0.6616938 0.4911234 0.356822 0.7946546 0.4911234 0.356822 0.7946545 0.4911234 0.356822 0.7946545 0.4089492 0.6284282 0.6616938 0.4089492 0.6284282 0.6616938 0.4089491 0.6284282 0.6616937 -0.1023803 0.3150941 0.9435221 -0.1023803 0.3150941 0.9435221 -0.1023803 0.3150941 0.9435221 0.03853388 0.7487833 0.6616937 0.03853388 0.7487833 0.6616938 0.03853388 0.7487833 0.6616937 -0.1875925 0.5773503 0.7946545 -0.1875925 0.5773503 0.7946544 -0.1875925 0.5773503 0.7946545 -0.4712985 0.5831288 0.6616938 -0.4712985 0.5831288 0.6616938 -0.4712985 0.5831288 0.6616938 -0.3313095 -4.61169e-8 0.9435221 -0.3313095 -4.61169e-8 0.9435221 -0.3313095 -4.61169e-8 0.9435221 -0.7002277 0.2680347 0.6616938 -0.7002277 0.2680347 0.6616938 -0.7002277 0.2680347 0.6616938 -0.6070619 -8.45005e-8 0.7946545 -0.607062 -8.45005e-8 0.7946545 -0.6070619 -8.45005e-8 0.7946546 -0.7002276 -0.2680348 0.6616938 -0.7002277 -0.2680348 0.6616937 -0.7002276 -0.2680348 0.6616938 -0.1023802 -0.3150941 0.9435221 -0.1023802 -0.3150941 0.943522 -0.1023802 -0.3150941 0.943522 -0.4712984 -0.5831288 0.6616938 -0.4712983 -0.5831288 0.6616937 -0.4712984 -0.5831288 0.6616937 -0.1875924 -0.5773503 0.7946545 -0.1875924 -0.5773503 0.7946544 -0.1875924 -0.5773503 0.7946545 0.03853405 -0.7487833 0.6616938 0.03853405 -0.7487833 0.6616938 0.03853405 -0.7487833 0.6616938 0.2680351 -0.1947389 0.9435222 0.268035 -0.1947388 0.943522 0.268035 -0.1947388 0.943522 0.4089492 -0.6284282 0.6616938 0.4089492 -0.628428 0.6616938 0.4089492 -0.6284281 0.6616938 0.4911234 -0.356822 0.7946545 0.4911234 -0.356822 0.7946545 0.4911234 -0.356822 0.7946545 0.724043 -0.1947387 0.6616937 0.724043 -0.1947387 0.6616937 0.724043 -0.1947388 0.6616938 0.9920779 1.84124e-7 0.1256238 0.992078 1.84124e-7 0.1256238 0.9920779 1.84124e-7 0.1256238 0.3065691 0.9435222 0.1256237 0.3065691 0.9435222 0.1256237 0.3065691 0.9435222 0.1256237 -0.8026079 0.5831288 0.1256237 -0.802608 0.5831288 0.1256238 -0.802608 0.5831288 0.1256238 -0.802608 -0.5831288 0.1256239 -0.8026079 -0.5831288 0.1256239 -0.802608 -0.5831288 0.1256239 0.3065692 -0.9435222 0.1256237 0.3065692 -0.9435221 0.1256237 0.3065692 -0.9435221 0.1256237 0.5746039 0.7487835 0.3303842 0.5746039 0.7487835 0.3303842 0.5746039 0.7487835 0.3303842 0.7946545 0.5773503 0.1875924 0.7946545 0.5773503 0.1875924 0.7946545 0.5773503 0.1875924 0.8896977 0.3150941 0.3303842 0.8896977 0.3150941 0.3303842 0.8896977 0.315094 0.3303842 -0.534573 0.7778676 0.3303843 -0.534573 0.7778676 0.3303843 -0.534573 0.7778676 0.3303843 -0.3035312 0.9341723 0.1875926 -0.3035311 0.9341723 0.1875926 -0.3035311 0.9341723 0.1875926 -0.02474059 0.9435222 0.3303844 -0.02474059 0.9435222 0.3303844 -0.02474058 0.9435221 0.3303844 -0.9049882 -0.2680349 0.3303843 -0.9049881 -0.2680349 0.3303842 -0.9049881 -0.2680348 0.3303842 -0.982247 -9.11498e-8 0.1875925 -0.982247 -9.11498e-8 0.1875925 -0.982247 -9.11498e-8 0.1875925 -0.9049882 0.2680347 0.3303842 -0.9049882 0.2680347 0.3303842 -0.9049882 0.2680347 0.3303842 -0.02474038 -0.9435221 0.3303844 -0.02474038 -0.9435222 0.3303844 -0.02474038 -0.9435222 0.3303844 -0.303531 -0.9341724 0.1875926 -0.303531 -0.9341724 0.1875926 -0.303531 -0.9341724 0.1875926 -0.5345728 -0.7778677 0.3303844 -0.5345728 -0.7778677 0.3303844 -0.5345728 -0.7778676 0.3303844 0.8896978 -0.315094 0.3303843 0.8896977 -0.315094 0.3303843 0.8896977 -0.315094 0.3303843 0.7946545 -0.5773502 0.1875925 0.7946546 -0.5773502 0.1875925 0.7946545 -0.5773501 0.1875924 0.574604 -0.7487833 0.3303842 0.574604 -0.7487834 0.3303842 0.574604 -0.7487833 0.3303842 - + - - 0.6 1 1.039281 0.5 0.8237918 1.039281 0.7 0.8237918 1.039281 0.5 0.8237918 1.039281 0.5 0.6475836 1.039281 0.6 0.6762082 1.039281 0.5 0.8237918 1.039281 0.6 0.6762082 1.039281 0.7 0.8237918 1.039281 0.7 0.8237918 1.039281 0.6 0.6762082 1.039281 0.7 0.6475836 1.039281 0.8 1 1.039281 0.7 0.8237918 1.039281 0.9 0.8237918 1.039281 0.7 0.8237918 1.039281 0.7 0.6475836 1.039281 0.8 0.6762082 1.039281 0.7 0.8237918 1.039281 0.8 0.6762082 1.039281 0.9 0.8237918 1.039281 0.9 0.8237918 1.039281 0.8 0.6762082 1.039281 0.9 0.6475836 1.039281 7.45058e-9 1 1.039281 -0.1 0.8237918 1.039281 0.1 0.8237918 1.039281 -0.1 0.8237918 1.039281 -0.1 0.6475836 1.039281 3.79455e-8 0.6762082 1.039281 -0.1 0.8237918 1.039281 3.79455e-8 0.6762082 1.039281 0.1 0.8237918 1.039281 0.1 0.8237918 1.039281 3.79455e-8 0.6762082 1.039281 0.1 0.6475836 1.039281 0.2 1 1.039281 0.1 0.8237918 1.039281 0.3 0.8237918 1.039281 0.1 0.8237918 1.039281 0.1 0.6475836 1.039281 0.2 0.6762082 1.039281 0.1 0.8237918 1.039281 0.2 0.6762082 1.039281 0.3 0.8237918 1.039281 0.3 0.8237918 1.039281 0.2 0.6762082 1.039281 0.3 0.6475836 1.039281 0.4 1 1.039281 0.3 0.8237918 1.039281 0.5 0.8237918 1.039281 0.3 0.8237918 1.039281 0.3 0.6475836 1.039281 0.4 0.6762082 1.039281 0.3 0.8237918 1.039281 0.4 0.6762082 1.039281 0.5 0.8237918 1.039281 0.5 0.8237918 1.039281 0.4 0.6762082 1.039281 0.5 0.6475836 1.039281 0.5 0.6475836 1.039281 0.45 0.5 1.039281 0.55 0.5 1.039281 0.7 0.6475836 1.039281 0.65 0.5 1.039281 0.75 0.5 1.039281 0.9 0.6475836 1.039281 0.85 0.5 1.039281 0.95 0.5 1.039281 0.1 0.6475836 1.039281 0.05000002 0.5 1.039281 0.15 0.5 1.039281 0.3 0.6475836 1.039281 0.25 0.5 1.039281 0.3500001 0.5 1.039281 0.65 0.5 1.039281 0.7 0.6475836 1.039281 0.6 0.6762082 1.039281 0.65 0.5 1.039281 0.6 0.6762082 1.039281 0.55 0.5 1.039281 0.55 0.5 1.039281 0.6 0.6762082 1.039281 0.5 0.6475836 1.039281 0.85 0.5 1.039281 0.9 0.6475836 1.039281 0.8 0.6762082 1.039281 0.85 0.5 1.039281 0.8 0.6762082 1.039281 0.75 0.5 1.039281 0.75 0.5 1.039281 0.8 0.6762082 1.039281 0.7 0.6475836 1.039281 0.05000002 0.5 1.039281 0.1 0.6475836 1.039281 3.79455e-8 0.6762082 1.039281 0.05000002 0.5 1.039281 3.79455e-8 0.6762082 1.039281 -0.05000001 0.5 1.039281 -0.05000001 0.5 1.039281 3.79455e-8 0.6762082 1.039281 -0.1 0.6475836 1.039281 0.25 0.5 1.039281 0.3 0.6475836 1.039281 0.2 0.6762082 1.039281 0.25 0.5 1.039281 0.2 0.6762082 1.039281 0.15 0.5 1.039281 0.15 0.5 1.039281 0.2 0.6762082 1.039281 0.1 0.6475836 1.039281 0.45 0.5 1.039281 0.5 0.6475836 1.039281 0.4 0.6762082 1.039281 0.45 0.5 1.039281 0.4 0.6762082 1.039281 0.3500001 0.5 1.039281 0.3500001 0.5 1.039281 0.4 0.6762082 1.039281 0.3 0.6475836 1.039281 + + 0.6 1 1.039281 0.5 0.8237918 1.039281 0.7 0.8237918 1.039281 0.5 0.8237918 1.039281 0.5 0.6475836 1.039281 0.6 0.6762082 1.039281 0.5 0.8237918 1.039281 0.6 0.6762082 1.039281 0.7 0.8237918 1.039281 0.7 0.8237918 1.039281 0.6 0.6762082 1.039281 0.7 0.6475836 1.039281 0.8 1 1.039281 0.7 0.8237918 1.039281 0.9 0.8237918 1.039281 0.7 0.8237918 1.039281 0.7 0.6475836 1.039281 0.8 0.6762082 1.039281 0.7 0.8237918 1.039281 0.8 0.6762082 1.039281 0.9 0.8237918 1.039281 0.9 0.8237918 1.039281 0.8 0.6762082 1.039281 0.9 0.6475836 1.039281 7.45058e-9 1 1.039281 -0.1 0.8237918 1.039281 0.1 0.8237918 1.039281 -0.1 0.8237918 1.039281 -0.1 0.6475836 1.039281 3.79455e-8 0.6762082 1.039281 -0.1 0.8237918 1.039281 3.79455e-8 0.6762082 1.039281 0.1 0.8237918 1.039281 0.1 0.8237918 1.039281 3.79455e-8 0.6762082 1.039281 0.1 0.6475836 1.039281 0.2 1 1.039281 0.1 0.8237918 1.039281 0.3 0.8237918 1.039281 0.1 0.8237918 1.039281 0.1 0.6475836 1.039281 0.2 0.6762082 1.039281 0.1 0.8237918 1.039281 0.2 0.6762082 1.039281 0.3 0.8237918 1.039281 0.3 0.8237918 1.039281 0.2 0.6762082 1.039281 0.3 0.6475836 1.039281 0.4 1 1.039281 0.3 0.8237918 1.039281 0.5 0.8237918 1.039281 0.3 0.8237918 1.039281 0.3 0.6475836 1.039281 0.4 0.6762082 1.039281 0.3 0.8237918 1.039281 0.4 0.6762082 1.039281 0.5 0.8237918 1.039281 0.5 0.8237918 1.039281 0.4 0.6762082 1.039281 0.5 0.6475836 1.039281 0.5 0.6475836 1.039281 0.45 0.5 1.039281 0.55 0.5 1.039281 0.7 0.6475836 1.039281 0.65 0.5 1.039281 0.75 0.5 1.039281 0.9 0.6475836 1.039281 0.85 0.5 1.039281 0.95 0.5 1.039281 0.1 0.6475836 1.039281 0.05000002 0.5 1.039281 0.15 0.5 1.039281 0.3 0.6475836 1.039281 0.25 0.5 1.039281 0.3500001 0.5 1.039281 0.65 0.5 1.039281 0.7 0.6475836 1.039281 0.6 0.6762082 1.039281 0.65 0.5 1.039281 0.6 0.6762082 1.039281 0.55 0.5 1.039281 0.55 0.5 1.039281 0.6 0.6762082 1.039281 0.5 0.6475836 1.039281 0.85 0.5 1.039281 0.9 0.6475836 1.039281 0.8 0.6762082 1.039281 0.85 0.5 1.039281 0.8 0.6762082 1.039281 0.75 0.5 1.039281 0.75 0.5 1.039281 0.8 0.6762082 1.039281 0.7 0.6475836 1.039281 0.05000002 0.5 1.039281 0.1 0.6475836 1.039281 3.79455e-8 0.6762082 1.039281 0.05000002 0.5 1.039281 3.79455e-8 0.6762082 1.039281 -0.05000001 0.5 1.039281 -0.05000001 0.5 1.039281 3.79455e-8 0.6762082 1.039281 -0.1 0.6475836 1.039281 0.25 0.5 1.039281 0.3 0.6475836 1.039281 0.2 0.6762082 1.039281 0.25 0.5 1.039281 0.2 0.6762082 1.039281 0.15 0.5 1.039281 0.15 0.5 1.039281 0.2 0.6762082 1.039281 0.1 0.6475836 1.039281 0.45 0.5 1.039281 0.5 0.6475836 1.039281 0.4 0.6762082 1.039281 0.45 0.5 1.039281 0.4 0.6762082 1.039281 0.3500001 0.5 1.039281 0.3500001 0.5 1.039281 0.4 0.6762082 1.039281 0.3 0.6475836 1.039281 - + - - + + - - - -

0 0 0 6 1 1 7 2 2 6 1 3 1 3 4 11 4 5 6 1 6 11 4 7 7 2 8 7 2 9 11 4 10 2 5 11 0 0 12 7 2 13 8 6 14 7 2 15 2 5 16 12 7 17 7 2 18 12 7 19 8 6 20 8 6 21 12 7 22 3 8 23 0 0 24 8 6 25 9 9 26 8 6 27 3 8 28 13 10 29 8 6 30 13 10 31 9 9 32 9 9 33 13 10 34 4 11 35 0 0 36 9 9 37 10 12 38 9 9 39 4 11 40 14 13 41 9 9 42 14 13 43 10 12 44 10 12 45 14 13 46 5 14 47 0 0 48 10 12 49 6 1 50 10 12 51 5 14 52 15 15 53 10 12 54 15 15 55 6 1 56 6 1 57 15 15 58 1 3 59 1 3 60 21 16 61 16 17 62 2 5 63 22 18 64 17 19 65 3 8 66 23 20 67 18 21 68 4 11 69 24 22 70 19 23 71 5 14 72 25 24 73 20 25 74 22 18 75 2 5 76 11 4 77 22 18 78 11 4 79 16 17 80 16 17 81 11 4 82 1 3 83 23 20 84 3 8 85 12 7 86 23 20 87 12 7 88 17 19 89 17 19 90 12 7 91 2 5 92 24 22 93 4 11 94 13 10 95 24 22 96 13 10 97 18 21 98 18 21 99 13 10 100 3 8 101 25 24 102 5 14 103 14 13 104 25 24 105 14 13 106 19 23 107 19 23 108 14 13 109 4 11 110 21 16 111 1 3 112 15 15 113 21 16 114 15 15 115 20 25 116 20 25 117 15 15 118 5 14 119

+ + + +

0 0 0 6 1 1 7 2 2 6 3 3 1 4 4 11 5 5 6 6 6 11 7 7 7 8 8 7 9 9 11 10 10 2 11 11 0 12 12 7 13 13 8 14 14 7 15 15 2 16 16 12 17 17 7 18 18 12 19 19 8 20 20 8 21 21 12 22 22 3 23 23 0 24 24 8 25 25 9 26 26 8 27 27 3 28 28 13 29 29 8 30 30 13 31 31 9 32 32 9 33 33 13 34 34 4 35 35 0 36 36 9 37 37 10 38 38 9 39 39 4 40 40 14 41 41 9 42 42 14 43 43 10 44 44 10 45 45 14 46 46 5 47 47 0 48 48 10 49 49 6 50 50 10 51 51 5 52 52 15 53 53 10 54 54 15 55 55 6 56 56 6 57 57 15 58 58 1 59 59 1 60 60 21 61 61 16 62 62 2 63 63 22 64 64 17 65 65 3 66 66 23 67 67 18 68 68 4 69 69 24 70 70 19 71 71 5 72 72 25 73 73 20 74 74 22 75 75 2 76 76 11 77 77 22 78 78 11 79 79 16 80 80 16 81 81 11 82 82 1 83 83 23 84 84 3 85 85 12 86 86 23 87 87 12 88 88 17 89 89 17 90 90 12 91 91 2 92 92 24 93 93 4 94 94 13 95 95 24 96 96 13 97 97 18 98 98 18 99 99 13 100 100 3 101 101 25 102 102 5 103 103 14 104 104 25 105 105 14 106 106 19 107 107 19 108 108 14 109 109 4 110 110 21 111 111 1 112 112 15 113 113 21 114 114 15 115 115 20 116 116 20 117 117 15 118 118 5 119 119

+ + + + 0 0 1 -4.37114e-8 1 -4.37114e-8 -1 -8.74228e-8 -4.37114e-8 1.19249e-8 -1 -4.37114e-8 1 1.74846e-7 -4.37114e-8 0 0 -1 + + + + + + + + + + -0.5773503 0.5773502 0.5773503 -0.5773503 0.5773502 0.5773503 -0.5773503 0.5773502 0.5773503 -0.5773503 -0.5773503 0.5773503 -0.5773503 -0.5773503 0.5773503 -0.5773503 -0.5773503 0.5773503 0.5773504 -0.5773503 0.5773503 0.5773503 -0.5773503 0.5773503 0.5773503 -0.5773503 0.5773503 0.5773502 0.5773503 0.5773503 0.5773502 0.5773503 0.5773503 0.5773502 0.5773503 0.5773503 -0.5773503 0.5773503 -0.5773503 -0.5773503 0.5773503 -0.5773503 -0.5773503 0.5773503 -0.5773503 -0.5773503 -0.5773503 -0.5773503 -0.5773503 -0.5773503 -0.5773503 -0.5773503 -0.5773503 -0.5773503 0.5773503 -0.5773503 -0.5773503 0.5773503 -0.5773503 -0.5773503 0.5773503 -0.5773503 -0.5773503 0.5773503 0.5773503 -0.5773503 0.5773503 0.5773503 -0.5773503 0.5773503 0.5773503 -0.5773503 + + + + + + + + + + 0 1 0 0.25 1 0 0.5 1 0 0.75 1 0 1 1 0 0 0.5 0 0.25 0.5 0 0.5 0.5 0 0.75 0.5 0 1 0.5 0 0 0 0 0.25 0 0 0.5 0 0 0.75 0 0 1 0 0 + + + + + + + + + + + + + + + +

0 0 0 1 1 5 2 2 6 0 3 1 2 4 6 3 5 7 0 6 2 3 7 7 4 8 8 0 9 3 4 10 8 1 11 9 5 12 10 2 13 6 1 14 5 5 15 11 3 16 7 2 17 6 5 18 12 4 19 8 3 20 7 5 21 13 1 22 9 4 23 8

+
+
+ + + + 1 + 4 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + + + +
@@ -782,6 +900,35 @@ + + + + 1 1 1 + + + + + + 0 + 1 + 1 + 2 + 1 + 10 + 0 + 0 + 7 + 9 + 80 + 200 + + + type_map + 512 + + + + @@ -802,13 +949,13 @@ - + 5 1.14258e-7 2 0 0 1 0 0 1 0 2.00358e-5 1 0 0 0 0.5 0.5 0.5 - + @@ -833,8 +980,8 @@ - - + + @@ -850,10 +997,10 @@ - + 0 0 0.01 0 0 -1 -44.99999 - + @@ -869,12 +1016,11 @@ - - 0.03164387 -0.03838623 0 + 0 0 0 0 1 1 1 0 0 0 0 - + @@ -890,6 +1036,36 @@ + + 2.124535 8.291501 6.185831 + + + 0.5773504 -0.5773501 -0.5773504 -120 + + + + + + + + + + 1 + 1 + 1 + 1 + + + + + + 1 + 1 + 1 + 1 + + + @@ -978,70 +1154,70 @@ - - 0 0.8333334 1.666667 2.5 3.333333 + + 0 0.8333334 1.666667 2.5 3.333333 - + - - 0 -90 -180 -270 -360 + + 0 -90 -180 -270 -360 - + - - 0.9997917 0 0.3270486 -89.70257 0.9961964 -179.1937 1.990403 -269.8432 2.6534 -360 + + 0.9997917 0 0.3270486 -89.70257 0.9961964 -179.1937 1.990403 -269.8432 2.6534 -360 - + - - 0.6602973 0 1.324714 -90.28867 2.332406 -180.8006 3.004865 -270.1553 2.333542 -360 + + 0.6602973 0 1.324714 -90.28867 2.332406 -180.8006 3.004865 -270.1553 2.333542 -360 - + - - BEZIER BEZIER BEZIER BEZIER BEZIER + + BEZIER BEZIER BEZIER BEZIER BEZIER - + - - 0 1.666667 3.333333 + + 0 1.666667 3.333333 - + - - 1 1 1 1.996525 1.996525 1.996525 1 1 1 + + 1 1 1 1.996525 1.996525 1.996525 1 1 1 - + - - 0.9997917 1 0.9997917 1 0.9997917 1 1.111167 1.996525 1.111167 1.996525 1.111167 1.996525 2.777833 1 2.777833 1 2.777833 1 + + 0.9997917 1 0.9997917 1 0.9997917 1 1.111167 1.996525 1.111167 1.996525 1.111167 1.996525 2.777833 1 2.777833 1 2.777833 1 - + @@ -1051,10 +1227,10 @@ - - 0.5555 1 0.5555 1 0.5555 1 2.222167 1.996525 2.222167 1.996525 2.222167 1.996525 2.333542 1 2.333542 1 2.333542 1 + + 0.5555 1 0.5555 1 0.5555 1 2.222167 1.996525 2.222167 1.996525 2.222167 1.996525 2.333542 1 2.333542 1 2.333542 1 - + @@ -1064,26 +1240,26 @@ - - BEZIER BEZIER BEZIER + + BEZIER BEZIER BEZIER - + - - 0 1.666667 3.333333 + + 0 1.666667 3.333333 - + - - 0 0 0 0 0 0 0 0 0 0 0 0 + + 0 0 0 0 0 0 0 0 0 0 0 0 - + @@ -1091,26 +1267,26 @@ - - LINEAR LINEAR LINEAR + + LINEAR LINEAR LINEAR - + - - 0 1.666667 3.333333 + + 0 1.666667 3.333333 - + - - 0 0 0 0 0 0 0 0 0 0 0 0 + + 0 0 0 0 0 0 0 0 0 0 0 0 - + @@ -1118,10 +1294,10 @@ - - LINEAR LINEAR LINEAR + + LINEAR LINEAR LINEAR - + @@ -1140,36 +1316,36 @@ - - - - - - + + + + + + - - - - - - + + + + + + - - - - + + + + - - - - + + + + - - - - + + + + diff --git a/models/curve_interpolation/curve_interpolation.idx b/scenes/curve_interpolation/curve_interpolation.idx similarity index 96% rename from models/curve_interpolation/curve_interpolation.idx rename to scenes/curve_interpolation/curve_interpolation.idx index 5de993b..273bdee 100644 Binary files a/models/curve_interpolation/curve_interpolation.idx and b/scenes/curve_interpolation/curve_interpolation.idx differ diff --git a/models/curve_interpolation/curve_interpolation.max b/scenes/curve_interpolation/curve_interpolation.max similarity index 86% rename from models/curve_interpolation/curve_interpolation.max rename to scenes/curve_interpolation/curve_interpolation.max index a703be2..f660dd7 100755 Binary files a/models/curve_interpolation/curve_interpolation.max and b/scenes/curve_interpolation/curve_interpolation.max differ diff --git a/models/curve_interpolation/curve_interpolation.vtx b/scenes/curve_interpolation/curve_interpolation.vtx similarity index 58% rename from models/curve_interpolation/curve_interpolation.vtx rename to scenes/curve_interpolation/curve_interpolation.vtx index 5d54548..60046c8 100644 Binary files a/models/curve_interpolation/curve_interpolation.vtx and b/scenes/curve_interpolation/curve_interpolation.vtx differ diff --git a/src/scenes/curve_interpolation.cpp b/src/scenes/curve_interpolation/curve_interpolation.cpp similarity index 63% rename from src/scenes/curve_interpolation.cpp rename to src/scenes/curve_interpolation/curve_interpolation.cpp index b9df8d9..b26354c 100644 --- a/src/scenes/curve_interpolation.cpp +++ b/src/scenes/curve_interpolation/curve_interpolation.cpp @@ -4,6 +4,16 @@ namespace curve_interpolation { using namespace collada; +light const light_environmentambientlight = { + .type = light_type::AMBIENT, + .color = { 0.0f, 0.0f, 0.0f }, +}; + +light const light_light_light = { + .type = light_type::DIRECTIONAL, + .color = { 1.0f, 1.0f, 1.0f }, +}; + float const array_node_cube_translation_x_input_array[] = { 0.0f, 1.666667f, @@ -140,7 +150,7 @@ sampler const sampler_node_cube_translation_y_sampler = { }, }; -float const array_node_torus001_rotationx_angle_input_array[] = { +float const array_node_torus_rotationx_angle_input_array[] = { 0.0f, 0.8333334f, 1.666667f, @@ -148,7 +158,7 @@ float const array_node_torus001_rotationx_angle_input_array[] = { 3.333333f, }; -float const array_node_torus001_rotationx_angle_output_array[] = { +float const array_node_torus_rotationx_angle_output_array[] = { 0.0f, -90.0f, -180.0f, @@ -156,7 +166,7 @@ float const array_node_torus001_rotationx_angle_output_array[] = { -360.0f, }; -float const array_node_torus001_rotationx_angle_intangent_array[] = { +float const array_node_torus_rotationx_angle_intangent_array[] = { 0.9997917f, 0.0f, 0.3270486f, -89.70257f, 0.9961964f, -179.1937f, @@ -164,7 +174,7 @@ float const array_node_torus001_rotationx_angle_intangent_array[] = { 2.6534f, -360.0f, }; -float const array_node_torus001_rotationx_angle_outtangent_array[] = { +float const array_node_torus_rotationx_angle_outtangent_array[] = { 0.6602973f, 0.0f, 1.324714f, -90.28867f, 2.332406f, -180.8006f, @@ -172,7 +182,7 @@ float const array_node_torus001_rotationx_angle_outtangent_array[] = { 2.333542f, -360.0f, }; -enum interpolation const array_node_torus001_rotationx_angle_interpolation_array[] = { +enum interpolation const array_node_torus_rotationx_angle_interpolation_array[] = { interpolation::BEZIER, interpolation::BEZIER, interpolation::BEZIER, @@ -180,175 +190,175 @@ enum interpolation const array_node_torus001_rotationx_angle_interpolation_array interpolation::BEZIER, }; -sampler const sampler_node_torus001_rotationx_angle_sampler = { - // node_torus001_rotationx_angle_input +sampler const sampler_node_torus_rotationx_angle_sampler = { + // node_torus_rotationx_angle_input .input = { - .float_array = array_node_torus001_rotationx_angle_input_array, + .float_array = array_node_torus_rotationx_angle_input_array, .count = 5, .stride = 1, }, - // node_torus001_rotationx_angle_output + // node_torus_rotationx_angle_output .output = { - .float_array = array_node_torus001_rotationx_angle_output_array, + .float_array = array_node_torus_rotationx_angle_output_array, .count = 5, .stride = 1, }, - // node_torus001_rotationx_angle_intangent + // node_torus_rotationx_angle_intangent .in_tangent = { - .float_array = array_node_torus001_rotationx_angle_intangent_array, + .float_array = array_node_torus_rotationx_angle_intangent_array, .count = 5, .stride = 2, }, - // node_torus001_rotationx_angle_outtangent + // node_torus_rotationx_angle_outtangent .out_tangent = { - .float_array = array_node_torus001_rotationx_angle_outtangent_array, + .float_array = array_node_torus_rotationx_angle_outtangent_array, .count = 5, .stride = 2, }, - // node_torus001_rotationx_angle_interpolation + // node_torus_rotationx_angle_interpolation .interpolation = { - .interpolation_array = array_node_torus001_rotationx_angle_interpolation_array, + .interpolation_array = array_node_torus_rotationx_angle_interpolation_array, .count = 5, .stride = 1, }, }; -float const array_node_geosphere001_scale_input_array[] = { +float const array_node_geosphere_scale_input_array[] = { 0.0f, 1.666667f, 3.333333f, }; -float const array_node_geosphere001_scale_output_array[] = { +float const array_node_geosphere_scale_output_array[] = { 1.0f, 1.0f, 1.0f, 1.996525f, 1.996525f, 1.996525f, 1.0f, 1.0f, 1.0f, }; -float const array_node_geosphere001_scale_intangent_array[] = { +float const array_node_geosphere_scale_intangent_array[] = { 0.9997917f, 1.0f, 0.9997917f, 1.0f, 0.9997917f, 1.0f, 1.111167f, 1.996525f, 1.111167f, 1.996525f, 1.111167f, 1.996525f, 2.777833f, 1.0f, 2.777833f, 1.0f, 2.777833f, 1.0f, }; -float const array_node_geosphere001_scale_outtangent_array[] = { +float const array_node_geosphere_scale_outtangent_array[] = { 0.5555f, 1.0f, 0.5555f, 1.0f, 0.5555f, 1.0f, 2.222167f, 1.996525f, 2.222167f, 1.996525f, 2.222167f, 1.996525f, 2.333542f, 1.0f, 2.333542f, 1.0f, 2.333542f, 1.0f, }; -enum interpolation const array_node_geosphere001_scale_interpolation_array[] = { +enum interpolation const array_node_geosphere_scale_interpolation_array[] = { interpolation::BEZIER, interpolation::BEZIER, interpolation::BEZIER, }; -sampler const sampler_node_geosphere001_scale_sampler = { - // node_geosphere001_scale_input +sampler const sampler_node_geosphere_scale_sampler = { + // node_geosphere_scale_input .input = { - .float_array = array_node_geosphere001_scale_input_array, + .float_array = array_node_geosphere_scale_input_array, .count = 3, .stride = 1, }, - // node_geosphere001_scale_output + // node_geosphere_scale_output .output = { - .float_array = array_node_geosphere001_scale_output_array, + .float_array = array_node_geosphere_scale_output_array, .count = 3, .stride = 3, }, - // node_geosphere001_scale_intangent + // node_geosphere_scale_intangent .in_tangent = { - .float_array = array_node_geosphere001_scale_intangent_array, + .float_array = array_node_geosphere_scale_intangent_array, .count = 3, .stride = 6, }, - // node_geosphere001_scale_outtangent + // node_geosphere_scale_outtangent .out_tangent = { - .float_array = array_node_geosphere001_scale_outtangent_array, + .float_array = array_node_geosphere_scale_outtangent_array, .count = 3, .stride = 6, }, - // node_geosphere001_scale_interpolation + // node_geosphere_scale_interpolation .interpolation = { - .interpolation_array = array_node_geosphere001_scale_interpolation_array, + .interpolation_array = array_node_geosphere_scale_interpolation_array, .count = 3, .stride = 1, }, }; -float const array_node_geosphere001_inversescaleaxisrotation_input_array[] = { +float const array_node_geosphere_inversescaleaxisrotation_input_array[] = { 0.0f, 1.666667f, 3.333333f, }; -float const array_node_geosphere001_inversescaleaxisrotation_output_array[] = { +float const array_node_geosphere_inversescaleaxisrotation_output_array[] = { 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, }; -enum interpolation const array_node_geosphere001_inversescaleaxisrotation_interpolation_array[] = { +enum interpolation const array_node_geosphere_inversescaleaxisrotation_interpolation_array[] = { interpolation::LINEAR, interpolation::LINEAR, interpolation::LINEAR, }; -sampler const sampler_node_geosphere001_inversescaleaxisrotation_sampler = { - // node_geosphere001_inversescaleaxisrotation_input +sampler const sampler_node_geosphere_inversescaleaxisrotation_sampler = { + // node_geosphere_inversescaleaxisrotation_input .input = { - .float_array = array_node_geosphere001_inversescaleaxisrotation_input_array, + .float_array = array_node_geosphere_inversescaleaxisrotation_input_array, .count = 3, .stride = 1, }, - // node_geosphere001_inversescaleaxisrotation_output + // node_geosphere_inversescaleaxisrotation_output .output = { - .float_array = array_node_geosphere001_inversescaleaxisrotation_output_array, + .float_array = array_node_geosphere_inversescaleaxisrotation_output_array, .count = 3, .stride = 4, }, - // node_geosphere001_inversescaleaxisrotation_interpolation + // node_geosphere_inversescaleaxisrotation_interpolation .interpolation = { - .interpolation_array = array_node_geosphere001_inversescaleaxisrotation_interpolation_array, + .interpolation_array = array_node_geosphere_inversescaleaxisrotation_interpolation_array, .count = 3, .stride = 1, }, }; -float const array_node_geosphere001_scaleaxisrotation_input_array[] = { +float const array_node_geosphere_scaleaxisrotation_input_array[] = { 0.0f, 1.666667f, 3.333333f, }; -float const array_node_geosphere001_scaleaxisrotation_output_array[] = { +float const array_node_geosphere_scaleaxisrotation_output_array[] = { 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, }; -enum interpolation const array_node_geosphere001_scaleaxisrotation_interpolation_array[] = { +enum interpolation const array_node_geosphere_scaleaxisrotation_interpolation_array[] = { interpolation::LINEAR, interpolation::LINEAR, interpolation::LINEAR, }; -sampler const sampler_node_geosphere001_scaleaxisrotation_sampler = { - // node_geosphere001_scaleaxisrotation_input +sampler const sampler_node_geosphere_scaleaxisrotation_sampler = { + // node_geosphere_scaleaxisrotation_input .input = { - .float_array = array_node_geosphere001_scaleaxisrotation_input_array, + .float_array = array_node_geosphere_scaleaxisrotation_input_array, .count = 3, .stride = 1, }, - // node_geosphere001_scaleaxisrotation_output + // node_geosphere_scaleaxisrotation_output .output = { - .float_array = array_node_geosphere001_scaleaxisrotation_output_array, + .float_array = array_node_geosphere_scaleaxisrotation_output_array, .count = 3, .stride = 4, }, - // node_geosphere001_scaleaxisrotation_interpolation + // node_geosphere_scaleaxisrotation_interpolation .interpolation = { - .interpolation_array = array_node_geosphere001_scaleaxisrotation_interpolation_array, + .interpolation_array = array_node_geosphere_scaleaxisrotation_interpolation_array, .count = 3, .stride = 1, }, @@ -366,27 +376,27 @@ channel const node_channel_node_cube_translation_y = { .target_attribute = target_attribute::Y, }; -channel const node_channel_node_torus001_rotationx_angle = { - .source_sampler = &sampler_node_torus001_rotationx_angle_sampler, +channel const node_channel_node_torus_rotationx_angle = { + .source_sampler = &sampler_node_torus_rotationx_angle_sampler, .target_transform_index = 3, .target_attribute = target_attribute::ANGLE, }; -channel const node_channel_node_geosphere001_scale = { - .source_sampler = &sampler_node_geosphere001_scale_sampler, - .target_transform_index = 2, - .target_attribute = target_attribute::ALL, -}; - -channel const node_channel_node_geosphere001_inversescaleaxisrotation = { - .source_sampler = &sampler_node_geosphere001_inversescaleaxisrotation_sampler, +channel const node_channel_node_geosphere_scale = { + .source_sampler = &sampler_node_geosphere_scale_sampler, .target_transform_index = 1, .target_attribute = target_attribute::ALL, }; -channel const node_channel_node_geosphere001_scaleaxisrotation = { - .source_sampler = &sampler_node_geosphere001_scaleaxisrotation_sampler, - .target_transform_index = 3, +channel const node_channel_node_geosphere_inversescaleaxisrotation = { + .source_sampler = &sampler_node_geosphere_inversescaleaxisrotation_sampler, + .target_transform_index = 0, + .target_attribute = target_attribute::ALL, +}; + +channel const node_channel_node_geosphere_scaleaxisrotation = { + .source_sampler = &sampler_node_geosphere_scaleaxisrotation_sampler, + .target_transform_index = 2, .target_attribute = target_attribute::ALL, }; @@ -670,6 +680,34 @@ effect const effect_coloreffectr198g224b87 = { } }; +effect const effect_lightemit = { + .type = effect_type::BLINN, + .blinn = { + .emission = { + .color = {1.0f, 1.0f, 1.0f, 1.0f}, + }, + .ambient = { + .color = {0.0f, 0.0f, 0.0f, 1.0f}, + }, + .diffuse = { + .color = {0.0f, 0.0f, 0.0f, 1.0f}, + }, + .specular = { + .color = {0.0f, 0.0f, 0.0f, 1.0f}, + }, + .shininess = 10.0f, + .reflective = { + .color = {0.0f, 0.0f, 0.0f, 1.0f}, + }, + .reflectivity = 0.0f, + .transparent = { + .color = {1.0f, 1.0f, 1.0f, 1.0f}, + }, + .transparency = 1.0f, + .index_of_refraction = 0.0f, + } +}; + material const material_coloreffectr26g177b26_material = { .effect = &effect_coloreffectr26g177b26, }; @@ -710,6 +748,10 @@ material const material_material__20_material = { .effect = &effect_material__20, }; +material const material_lightemit_material = { + .effect = &effect_lightemit, +}; + input_element const input_elements_position_0_3_normal_0_3_texcoord_0_3[] = { { .semantic = "POSITION", @@ -774,7 +816,7 @@ geometry const geometry_geom_cube = { } }; -triangles const triangles_geom_torus001[] = { +triangles const triangles_geom_torus[] = { { .count = 240, // triangles .index_offset = 0, // indices @@ -782,9 +824,9 @@ triangles const triangles_geom_torus001[] = { }, }; -geometry const geometry_geom_torus001 = { +geometry const geometry_geom_torus = { .mesh = { - .triangles = triangles_geom_torus001, + .triangles = triangles_geom_torus, .triangles_count = 1, .vertex_buffer_offset = 864, @@ -795,7 +837,7 @@ geometry const geometry_geom_torus001 = { } }; -triangles const triangles_geom_cylinder001[] = { +triangles const triangles_geom_cylinder[] = { { .count = 30, // triangles .index_offset = 0, // indices @@ -803,9 +845,9 @@ triangles const triangles_geom_cylinder001[] = { }, }; -geometry const geometry_geom_cylinder001 = { +geometry const geometry_geom_cylinder = { .mesh = { - .triangles = triangles_geom_cylinder001, + .triangles = triangles_geom_cylinder, .triangles_count = 1, .vertex_buffer_offset = 6012, @@ -816,7 +858,7 @@ geometry const geometry_geom_cylinder001 = { } }; -triangles const triangles_geom_plane001[] = { +triangles const triangles_geom_plane[] = { { .count = 2, // triangles .index_offset = 0, // indices @@ -824,9 +866,9 @@ triangles const triangles_geom_plane001[] = { }, }; -geometry const geometry_geom_plane001 = { +geometry const geometry_geom_plane = { .mesh = { - .triangles = triangles_geom_plane001, + .triangles = triangles_geom_plane, .triangles_count = 1, .vertex_buffer_offset = 7164, @@ -837,7 +879,7 @@ geometry const geometry_geom_plane001 = { } }; -triangles const triangles_geom_geosphere001[] = { +triangles const triangles_geom_geosphere[] = { { .count = 40, // triangles .index_offset = 0, // indices @@ -845,9 +887,9 @@ triangles const triangles_geom_geosphere001[] = { }, }; -geometry const geometry_geom_geosphere001 = { +geometry const geometry_geom_geosphere = { .mesh = { - .triangles = triangles_geom_geosphere001, + .triangles = triangles_geom_geosphere, .triangles_count = 1, .vertex_buffer_offset = 7308, @@ -858,12 +900,34 @@ geometry const geometry_geom_geosphere001 = { } }; +triangles const triangles_geom_lightindicator[] = { + { + .count = 8, // triangles + .index_offset = 0, // indices + .inputs_index = 0, // index into inputs_list + }, +}; + +geometry const geometry_geom_lightindicator = { + .mesh = { + .triangles = triangles_geom_lightindicator, + .triangles_count = 1, + + .vertex_buffer_offset = 11628, + .vertex_buffer_size = 864, + + .index_buffer_offset = 3888, + .index_buffer_size = 96, + } +}; + geometry const * const geometries[] = { &geometry_geom_cube, - &geometry_geom_torus001, - &geometry_geom_cylinder001, - &geometry_geom_plane001, - &geometry_geom_geosphere001, + &geometry_geom_torus, + &geometry_geom_cylinder, + &geometry_geom_plane, + &geometry_geom_geosphere, + &geometry_geom_lightindicator, }; transform const transforms_node_environmentambientlight[] = { @@ -872,6 +936,12 @@ transform const transforms_node_environmentambientlight[] = { instance_geometry const instance_geometries_node_environmentambientlight[] = { }; +instance_light const instance_lights_node_environmentambientlight[] = { + { + .light = &light_environmentambientlight, + } +}; + channel const * const node_channels_node_environmentambientlight[] = {}; node const node_node_environmentambientlight = { @@ -885,6 +955,9 @@ node const node_node_environmentambientlight = { .instance_geometries = instance_geometries_node_environmentambientlight, .instance_geometries_count = 0, + .instance_lights = instance_lights_node_environmentambientlight, + .instance_lights_count = 1, + .channels = node_channels_node_environmentambientlight, .channels_count = 0, }; @@ -931,9 +1004,12 @@ instance_geometry const instance_geometries_node_cube[] = { }, }; +instance_light const instance_lights_node_cube[] = { +}; + channel const * const node_channels_node_cube[] = { - &node_channel_node_cube_translation_y, &node_channel_node_cube_translation_x, + &node_channel_node_cube_translation_y, }; node const node_node_cube = { @@ -947,11 +1023,14 @@ node const node_node_cube = { .instance_geometries = instance_geometries_node_cube, .instance_geometries_count = 1, + .instance_lights = instance_lights_node_cube, + .instance_lights_count = 0, + .channels = node_channels_node_cube, .channels_count = 2, }; -transform const transforms_node_torus001[] = { +transform const transforms_node_torus[] = { { .type = transform_type::TRANSLATE, .translate = {5.0f, 1.14258e-07f, 2.0f}, @@ -974,77 +1053,89 @@ transform const transforms_node_torus001[] = { }, }; -instance_material const instance_materials_node_torus001_0[] = { +instance_material const instance_materials_node_torus_0[] = { { .element_index = 0, // an index into mesh.triangles .material = &material_coloreffectr26g177b26_material, }, }; -instance_geometry const instance_geometries_node_torus001[] = { +instance_geometry const instance_geometries_node_torus[] = { { - .geometry = &geometry_geom_torus001, - .instance_materials = instance_materials_node_torus001_0, + .geometry = &geometry_geom_torus, + .instance_materials = instance_materials_node_torus_0, .instance_materials_count = 1, }, }; -channel const * const node_channels_node_torus001[] = { - &node_channel_node_torus001_rotationx_angle, +instance_light const instance_lights_node_torus[] = { }; -node const node_node_torus001 = { +channel const * const node_channels_node_torus[] = { + &node_channel_node_torus_rotationx_angle, +}; + +node const node_node_torus = { .parent_index = 1, .type = node_type::NODE, - .transforms = transforms_node_torus001, + .transforms = transforms_node_torus, .transforms_count = 5, - .instance_geometries = instance_geometries_node_torus001, + .instance_geometries = instance_geometries_node_torus, .instance_geometries_count = 1, - .channels = node_channels_node_torus001, + .instance_lights = instance_lights_node_torus, + .instance_lights_count = 0, + + .channels = node_channels_node_torus, .channels_count = 1, }; -transform const transforms_node_cylinder001[] = { +transform const transforms_node_cylinder[] = { }; -instance_material const instance_materials_node_cylinder001_0[] = { +instance_material const instance_materials_node_cylinder_0[] = { { .element_index = 0, // an index into mesh.triangles .material = &material_coloreffectr229g154b215_material, }, }; -instance_geometry const instance_geometries_node_cylinder001[] = { +instance_geometry const instance_geometries_node_cylinder[] = { { - .geometry = &geometry_geom_cylinder001, - .instance_materials = instance_materials_node_cylinder001_0, + .geometry = &geometry_geom_cylinder, + .instance_materials = instance_materials_node_cylinder_0, .instance_materials_count = 1, }, }; -channel const * const node_channels_node_cylinder001[] = { +instance_light const instance_lights_node_cylinder[] = { }; -node const node_node_cylinder001 = { +channel const * const node_channels_node_cylinder[] = { +}; + +node const node_node_cylinder = { .parent_index = -1, .type = node_type::NODE, - .transforms = transforms_node_cylinder001, + .transforms = transforms_node_cylinder, .transforms_count = 0, - .instance_geometries = instance_geometries_node_cylinder001, + .instance_geometries = instance_geometries_node_cylinder, .instance_geometries_count = 1, - .channels = node_channels_node_cylinder001, + .instance_lights = instance_lights_node_cylinder, + .instance_lights_count = 0, + + .channels = node_channels_node_cylinder, .channels_count = 0, }; -transform const transforms_node_plane001[] = { +transform const transforms_node_plane[] = { { .type = transform_type::TRANSLATE, .translate = {0.0f, 0.0f, 0.01f}, @@ -1055,44 +1146,46 @@ transform const transforms_node_plane001[] = { }, }; -instance_material const instance_materials_node_plane001_0[] = { +instance_material const instance_materials_node_plane_0[] = { { .element_index = 0, // an index into mesh.triangles .material = &material_coloreffectr28g149b177_material, }, }; -instance_geometry const instance_geometries_node_plane001[] = { +instance_geometry const instance_geometries_node_plane[] = { { - .geometry = &geometry_geom_plane001, - .instance_materials = instance_materials_node_plane001_0, + .geometry = &geometry_geom_plane, + .instance_materials = instance_materials_node_plane_0, .instance_materials_count = 1, }, }; -channel const * const node_channels_node_plane001[] = { +instance_light const instance_lights_node_plane[] = { }; -node const node_node_plane001 = { +channel const * const node_channels_node_plane[] = { +}; + +node const node_node_plane = { .parent_index = -1, .type = node_type::NODE, - .transforms = transforms_node_plane001, + .transforms = transforms_node_plane, .transforms_count = 2, - .instance_geometries = instance_geometries_node_plane001, + .instance_geometries = instance_geometries_node_plane, .instance_geometries_count = 1, - .channels = node_channels_node_plane001, + .instance_lights = instance_lights_node_plane, + .instance_lights_count = 0, + + .channels = node_channels_node_plane, .channels_count = 0, }; -transform const transforms_node_geosphere001[] = { - { - .type = transform_type::TRANSLATE, - .translate = {0.03164387f, -0.03838623f, 0.0f}, - }, +transform const transforms_node_geosphere[] = { { .type = transform_type::ROTATE, .rotate = {0.0f, 0.0f, 0.0f, 0.0f}, @@ -1107,49 +1200,140 @@ transform const transforms_node_geosphere001[] = { }, }; -instance_material const instance_materials_node_geosphere001_0[] = { +instance_material const instance_materials_node_geosphere_0[] = { { .element_index = 0, // an index into mesh.triangles .material = &material_coloreffectr198g224b87_material, }, }; -instance_geometry const instance_geometries_node_geosphere001[] = { +instance_geometry const instance_geometries_node_geosphere[] = { { - .geometry = &geometry_geom_geosphere001, - .instance_materials = instance_materials_node_geosphere001_0, + .geometry = &geometry_geom_geosphere, + .instance_materials = instance_materials_node_geosphere_0, .instance_materials_count = 1, }, }; -channel const * const node_channels_node_geosphere001[] = { - &node_channel_node_geosphere001_inversescaleaxisrotation, - &node_channel_node_geosphere001_scale, - &node_channel_node_geosphere001_scaleaxisrotation, +instance_light const instance_lights_node_geosphere[] = { }; -node const node_node_geosphere001 = { +channel const * const node_channels_node_geosphere[] = { + &node_channel_node_geosphere_scale, + &node_channel_node_geosphere_inversescaleaxisrotation, + &node_channel_node_geosphere_scaleaxisrotation, +}; + +node const node_node_geosphere = { .parent_index = -1, .type = node_type::NODE, - .transforms = transforms_node_geosphere001, - .transforms_count = 4, + .transforms = transforms_node_geosphere, + .transforms_count = 3, - .instance_geometries = instance_geometries_node_geosphere001, + .instance_geometries = instance_geometries_node_geosphere, .instance_geometries_count = 1, - .channels = node_channels_node_geosphere001, + .instance_lights = instance_lights_node_geosphere, + .instance_lights_count = 0, + + .channels = node_channels_node_geosphere, .channels_count = 3, }; +transform const transforms_node_light[] = { + { + .type = transform_type::TRANSLATE, + .translate = {2.124535f, 8.291501f, 6.185831f}, + }, +}; + +instance_geometry const instance_geometries_node_light[] = { +}; + +instance_light const instance_lights_node_light[] = { + { + .light = &light_light_light, + } +}; + +channel const * const node_channels_node_light[] = { +}; + +node const node_node_light = { + .parent_index = -1, + + .type = node_type::NODE, + + .transforms = transforms_node_light, + .transforms_count = 1, + + .instance_geometries = instance_geometries_node_light, + .instance_geometries_count = 0, + + .instance_lights = instance_lights_node_light, + .instance_lights_count = 1, + + .channels = node_channels_node_light, + .channels_count = 0, +}; + +transform const transforms_node_lightindicator[] = { + { + .type = transform_type::ROTATE, + .rotate = {0.5773504f, -0.5773501f, -0.5773504f, -120.0f}, + }, +}; + +instance_material const instance_materials_node_lightindicator_0[] = { + { + .element_index = 0, // an index into mesh.triangles + .material = &material_lightemit_material, + }, +}; + +instance_geometry const instance_geometries_node_lightindicator[] = { + { + .geometry = &geometry_geom_lightindicator, + .instance_materials = instance_materials_node_lightindicator_0, + .instance_materials_count = 1, + }, +}; + +instance_light const instance_lights_node_lightindicator[] = { +}; + +channel const * const node_channels_node_lightindicator[] = { +}; + +node const node_node_lightindicator = { + .parent_index = 6, + + .type = node_type::NODE, + + .transforms = transforms_node_lightindicator, + .transforms_count = 1, + + .instance_geometries = instance_geometries_node_lightindicator, + .instance_geometries_count = 1, + + .instance_lights = instance_lights_node_lightindicator, + .instance_lights_count = 0, + + .channels = node_channels_node_lightindicator, + .channels_count = 0, +}; + node const * const nodes[] = { &node_node_environmentambientlight, &node_node_cube, - &node_node_torus001, - &node_node_cylinder001, - &node_node_plane001, - &node_node_geosphere001, + &node_node_torus, + &node_node_cylinder, + &node_node_plane, + &node_node_geosphere, + &node_node_light, + &node_node_lightindicator, }; inputs const inputs_list[] = {