From 8a48db2b7354d2fcc7f6cd8a28a0ea2a0d1262d5 Mon Sep 17 00:00:00 2001 From: Alllex202 Date: Sun, 17 Nov 2019 16:16:08 +0500 Subject: [PATCH 01/36] testing --- Visualization.py | 1 + 1 file changed, 1 insertion(+) diff --git a/Visualization.py b/Visualization.py index c4d766c..76c52be 100644 --- a/Visualization.py +++ b/Visualization.py @@ -55,3 +55,4 @@ def get_model(coords: []): #raise ValueError("Input array is empty") # Проверка на пустой массив без данных (если не нужен, можно урать) for voxel in coords: _get_voxel(voxel[0], voxel[1], voxel[2]) +#213 \ No newline at end of file From 37d82ee8a4bdffbd85afde2bd78a6e52ac674bf9 Mon Sep 17 00:00:00 2001 From: Alllex202 <56914444+Alllex202@users.noreply.github.com> Date: Sun, 17 Nov 2019 16:22:04 +0500 Subject: [PATCH 02/36] Update Visualization.py --- Visualization.py | 1 - 1 file changed, 1 deletion(-) diff --git a/Visualization.py b/Visualization.py index 76c52be..c4d766c 100644 --- a/Visualization.py +++ b/Visualization.py @@ -55,4 +55,3 @@ def get_model(coords: []): #raise ValueError("Input array is empty") # Проверка на пустой массив без данных (если не нужен, можно урать) for voxel in coords: _get_voxel(voxel[0], voxel[1], voxel[2]) -#213 \ No newline at end of file From 27c37e7b0730bbcd11e20471fc5d97849550a412 Mon Sep 17 00:00:00 2001 From: Alllex202 <56914444+Alllex202@users.noreply.github.com> Date: Sun, 17 Nov 2019 20:29:55 +0500 Subject: [PATCH 03/36] Update Visualization.py --- Visualization.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Visualization.py b/Visualization.py index c4d766c..d84f5a2 100644 --- a/Visualization.py +++ b/Visualization.py @@ -2,7 +2,7 @@ def _get_voxel(x, y, z): - a = 0.1 # Длина вокселя + a = 1 # Длина вокселя !!!НЕ ИЗМЕНЯТЬ!!! b = a / 2 # Половина длины вокселя c = 0.02 # Толщина ребра d = 0.001 # Толщина грани From 9380b4c4cb240086fec1ad53301dbdb579d6d666 Mon Sep 17 00:00:00 2001 From: Alllex202 <56914444+Alllex202@users.noreply.github.com> Date: Sun, 17 Nov 2019 20:31:07 +0500 Subject: [PATCH 04/36] Update Visualization.py --- Visualization.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Visualization.py b/Visualization.py index c4d766c..ef0016a 100644 --- a/Visualization.py +++ b/Visualization.py @@ -2,7 +2,7 @@ def _get_voxel(x, y, z): - a = 0.1 # Длина вокселя + a = 1 # Длина вокселя !!!НЕ ИЗМЕНЯТЬ!! b = a / 2 # Половина длины вокселя c = 0.02 # Толщина ребра d = 0.001 # Толщина грани From 15b694bb574a8348e1da0cab53337b8a1633b4f3 Mon Sep 17 00:00:00 2001 From: Aleksandr Date: Mon, 18 Nov 2019 20:31:44 +0500 Subject: [PATCH 05/36] Init branch --- MeshToVoxel.py | 6 +++--- Tests/MeshToVoxelTests.py | 21 +++++++++++---------- Tests/Samples.py | 38 +++++++++++++++++++++----------------- 3 files changed, 35 insertions(+), 30 deletions(-) diff --git a/MeshToVoxel.py b/MeshToVoxel.py index 4b61bf6..0bcb0a9 100644 --- a/MeshToVoxel.py +++ b/MeshToVoxel.py @@ -16,11 +16,11 @@ def get_voxel_model(model, size_mod, size_voxel): res = [] z = size_mod[2][0] - while z <= size_mod[2][1]: + while z < size_mod[2][1]: y = size_mod[1][0] - while y <= size_mod[1][1]: + while y < size_mod[1][1]: x = size_mod[0][0] - while x <= size_mod[0][1]: + while x < size_mod[0][1]: if octree.check_crossing([x, y, z], size_voxel): yield [x, y, z] #res.append([x, y, z]) diff --git a/Tests/MeshToVoxelTests.py b/Tests/MeshToVoxelTests.py index f483dd0..2b98c6b 100644 --- a/Tests/MeshToVoxelTests.py +++ b/Tests/MeshToVoxelTests.py @@ -21,19 +21,20 @@ def test_cube(self): # TODO Неверный пример куба cube = Samples.cube() size_model = Samples.find_size_model(cube) - voxel_cube = MV.get_voxel_model(cube, size_model, 1) - answ = [] - for z in range(3): - for y in range(3): - for x in range(3): - answ.append([x, y, z]) - for i in range(len(answ)): - self.assertEqual(answ[i], voxel_cube[i], str(answ[i])) + voxel_cube = [i for i in MV.get_voxel_model(cube, [[0, 3], [0, 3], [0, 3]], 2)] + Visualization.get_model(voxel_cube) + #answ = [] + #for z in range(3): + # for y in range(3): + # for x in range(3): + # answ.append([x, y, z]) + #for i in range(len(answ)): + # self.assertEqual(answ[i], voxel_cube[i], str(answ[i])) def test_pyramid(self): # TODO Ошибка объявления начальных вокселей - pyramid = Samples.pyramid1() - model = MV.get_voxel_model(pyramid, [[0, 3], [0, 3], [0, 3]], 0.1) + pyramid = Samples.pyramid2() + model = [i for i in MV.get_voxel_model(pyramid, [[0, 4], [0, 4], [0, 4]], 0.1)] Visualization.get_model(model) diff --git a/Tests/Samples.py b/Tests/Samples.py index 2b77989..82e98ab 100644 --- a/Tests/Samples.py +++ b/Tests/Samples.py @@ -9,23 +9,12 @@ def cube(): :return: Список мешей куба """ return [ - [[0, 3, 3], [3, 3, 3], [3, 0, 3], []], - [[0, 3, 3], [0, 0, 3], [3, 0, 3], []], - - [[0, 3, 3], [0, 0, 3], [0, 0, 0], []], - [[0, 3, 3], [0, 3, 0], [0, 0, 0], []], - - [[0, 3, 3], [3, 3, 3], [0, 3, 0], []], - [[0, 3, 3], [3, 3, 0], [0, 3, 0], []], - - [[3, 0, 3], [0, 0, 3], [3, 3, 3], []], - [[3, 0, 3], [3, 0, 0], [3, 3, 3], []], - - [[3, 3, 3], [3, 0, 3], [3, 0, 0], []], - [[3, 3, 3], [3, 3, 0], [3, 0, 0], []], - - [[0, 3, 0], [3, 3, 0], [3, 0, 0], []], - [[0, 3, 0], [0, 0, 0], [3, 0, 0], []], + [[0, 0, 0], [3, 0, 0], [3, 0, 3], [0, 0, 3]], + [[0, 3, 0], [3, 3, 0], [3, 3, 3], [0, 3, 3]], + [[0, 0, 0], [3, 0, 0], [3, 3, 0], [0, 3, 0]], + [[3, 0, 0], [3, 0, 3], [3, 3, 3], [3, 3, 0]], + [[3, 0, 3], [0, 0, 3], [0, 3, 3], [3, 3, 3]], + [[0, 0, 3], [0, 0, 0], [0, 3, 0], [0, 3, 3]] ] @@ -51,6 +40,21 @@ def pyramid1(): [[3, 0, 0], [0, 0, 0], [0, 3, 0]]] +def pyramid2(): + """ + Пример простой пирамиды с треугольным основанием + :return: Список меши пирамиды с треугольным основанием + """ + return [ + [[0, 0, 0], [4, 0, 4], [0, 0, 4]], + [[0, 0, 0], [4, 0, 0], [4, 0, 4]], + [[0, 0, 0], [4, 0, 0], [2, 4, 2]], + [[4, 0, 0], [4, 0, 4], [2, 4, 2]], + [[4, 0, 4], [0, 0, 4], [2, 4, 2]], + [[0, 0, 0], [0, 0, 4], [2, 4, 2]] + ] + + def triangle(): """ Пример треугольника на плоскости OX From 37f1a09f8c21cb3b8e4a9628558dd7994d7fdd1f Mon Sep 17 00:00:00 2001 From: Aleksandr Date: Tue, 19 Nov 2019 15:44:24 +0500 Subject: [PATCH 06/36] Save last version under delited --- .idea/dictionaries/aleksandr.xml | 1 + Experiments/experiment.py | 7 +- OcTreeV2/CreateOcTree.py | 23 +++++ OcTreeV2/NodeOcTreeV2.py | 148 +++++++++++++++++++++++++++++++ OcTreeV2/OcTree.py | 14 +++ Tests/NodeV2Tests.py | 13 +++ Visualization.py | 2 +- 7 files changed, 202 insertions(+), 6 deletions(-) create mode 100644 OcTreeV2/CreateOcTree.py create mode 100644 OcTreeV2/NodeOcTreeV2.py create mode 100644 OcTreeV2/OcTree.py create mode 100644 Tests/NodeV2Tests.py diff --git a/.idea/dictionaries/aleksandr.xml b/.idea/dictionaries/aleksandr.xml index 3394137..f05e547 100644 --- a/.idea/dictionaries/aleksandr.xml +++ b/.idea/dictionaries/aleksandr.xml @@ -5,6 +5,7 @@ devider dont octree + redisribution vert diff --git a/Experiments/experiment.py b/Experiments/experiment.py index 9271c62..7c11300 100644 --- a/Experiments/experiment.py +++ b/Experiments/experiment.py @@ -1,5 +1,2 @@ -import PyMesh.python.pymesh as py - - -mesh = py.load_mesh("test.obj", None, True) -print(1) +test = [x * y for x in range(2) for y in range(2)] +print(test) diff --git a/OcTreeV2/CreateOcTree.py b/OcTreeV2/CreateOcTree.py new file mode 100644 index 0000000..25f4d33 --- /dev/null +++ b/OcTreeV2/CreateOcTree.py @@ -0,0 +1,23 @@ +from OcTreeV2.NodeOcTreeV2 import Node + + +def get_octree(objects: [], size_voxel: [], ep: [], is_voxel: bool): + max_size_model = max(*[i[1] - i[0] for i in ep]) + start = Node(None, max_size_model, [point[0] for point in ep], is_voxel) + start.add_objects(objects) + _fill_tree(start, size_voxel) + return start + + +def _fill_tree(node: Node, size_voxel): + """ + Заполнение дерева + :param node: вершина + :param size_voxel: размер вокселя (как минимальный размер вершины) + :return: + """ + if node.Size <= size_voxel or len(node.Objects) <= 1: + return + node.redistribution() + for child in node.Children: + _fill_tree(child, size_voxel) diff --git a/OcTreeV2/NodeOcTreeV2.py b/OcTreeV2/NodeOcTreeV2.py new file mode 100644 index 0000000..bdc2747 --- /dev/null +++ b/OcTreeV2/NodeOcTreeV2.py @@ -0,0 +1,148 @@ +class Node: + + def __init__(self, parent, size, coordinate: [], track_usage: bool): + """ + :param parent: предок вершины + :param size: размер вершины + :param coordinate: координаты вершины + :param track_usage: True - в списке objects должны содержаться, помимо координат, bool параметр в значении false. + False - список objects содержит только координаты + """ + self.Parent = parent + self.Size = size + self.Coordinate = coordinate + div_size = self.Size / 2 + self.BoundingBox = [self.Coordinate[2] + div_size, self.Coordinate[1] + div_size, self.Coordinate[0] + div_size] + self.Objects = [] + self.Track_usage = track_usage + self.Children = [] + + def add_objects(self, objects: []): + """ + Добавление объектов в вершину и распределение по потомкам и самой вершине + :param objects: список объектов + :return: + """ + self._add_children() + self.Objects = self._distribute(objects) + + def redistribution(self): + """ + Перераспределение объектов в вершине + :return: + """ + self._add_children() + self.Objects = self._distribute(self.Objects) + + def get_location_point(self, point: []): + """ + Сравнивает положение точки и плоскости + :param point: проверяемая точка с координатами [x, y, z] + :return: -1, если координата точки меньше по модулю, чем координыты плоскости, 0 - если лежит на плоскости + и 1 - если больше по модулю, [yOz, xOz, xOy] + """ + res = [] + for area in range(3): + if abs(self.BoundingBox[area] > abs(point[area])): + res.append(-1) + elif abs(self.BoundingBox[area] < abs(point[area])): + res.append(1) + else: + res.append(0) + return res + + def get_crossing_children(self, checked_object: []): + res = [] + for vert in checked_object: + location = self.get_location_point(vert) + res.append(self._find_and_get_child(location)) + return res + + def fill_tree(self, size_voxel): + """ + Заполнение дерева + :param node: вершина + :param size_voxel: размер вокселя (как минимальный размер вершины) + :return: + """ + if self.Size <= size_voxel or len(self.Objects) <= 1: + return + self.redistribution() + for child in self.Children: + child.fill_tree(child, size_voxel) + + def _distribute(self, objects: []): + on_bounding = [] + for ob in objects: + location = self.get_location_point(ob[0]) + if 0 in location: + on_bounding.append(ob) + continue + is_added = False + for v in ob: + temp = self.get_location_point(v) + if 0 in temp or temp != location: + on_bounding.append(ob) + is_added = True + break + if not is_added: + child = self._find_and_get_child(location) + child.Objects.append(ob) + return on_bounding + + def _add_children(self): + def get_coordinate(mask: [], div_size): + mask = [m * div_size for m in mask] + return [self.Coordinate[i] + mask[i] for i in range(3)] + + div_size = self.Size / 2 + self.Children = [Node(self, div_size, get_coordinate([x, y, z], div_size), self.Track_usage) + for x in range(2) for y in range(2) for z in range(2)] + + def _find_and_get_child(self, pos_point: []): # Tested + """ + Ищет по позиционным координатам потомка + :param pos_point: позиционная координата + :return: + """ + # TODO Сделать из этой херни конфетку + if 0 in pos_point: + raise Exception("pos_point shouldn't contains 0") + + if pos_point[0] == 1: + if pos_point[1] == 1: + if pos_point[2] == 1: + return self.Children[7] + else: + return self.Children[6] + else: + if pos_point[2] == 1: + return self.Children[5] + else: + return self.Children[4] + else: + if pos_point[1] == 1: + if pos_point[2] == 1: + return self.Children[3] + else: + return self.Children[2] + else: + if pos_point[2] == 1: + return self.Children[1] + else: + return self.Children[0] + + @staticmethod + def get_all_voxels_vertex(voxel: [], size: float): # Tested + """ + Генерирует все вершины вокселя + :param voxel: воксель + :param size: размер + :return: ленивый список вершин вокселя + """ + if size < 0: + raise Exception("size can't be less than zero") + for x in range(2): + for y in range(2): + for z in range(2): + yield [x * size + voxel[0], y * size + voxel[1], z * size + voxel[2]] diff --git a/OcTreeV2/OcTree.py b/OcTreeV2/OcTree.py new file mode 100644 index 0000000..8d33001 --- /dev/null +++ b/OcTreeV2/OcTree.py @@ -0,0 +1,14 @@ +from OcTreeV2.NodeOcTreeV2 import Node + + +class Octree: + + def __init__(self, objects: [], size_voxel: [], ep: [], is_voxel: bool): + max_size_model = max(*[i[1] - i[0] for i in ep]) + self.Start = Node(None, max_size_model, [point[0] for point in ep], is_voxel) + self.Start.add_objects(objects) + self.Size_voxel = size_voxel + self.Start.fill_tree(self.Size_voxel) + + def crossing_with_meshes(self): + diff --git a/Tests/NodeV2Tests.py b/Tests/NodeV2Tests.py new file mode 100644 index 0000000..f690d2e --- /dev/null +++ b/Tests/NodeV2Tests.py @@ -0,0 +1,13 @@ +import unittest +from OcTreeV2.NodeOcTreeV2 import Node + + +class TestsCreate(unittest.TestCase): + + def test_simple(self): + node = Node(None, 4, [0, 0, 0], [1], False) + self.assertTrue(True) + + +if __name__ == '__main': + unittest.main() diff --git a/Visualization.py b/Visualization.py index ef0016a..2dc8f9e 100644 --- a/Visualization.py +++ b/Visualization.py @@ -2,7 +2,7 @@ def _get_voxel(x, y, z): - a = 1 # Длина вокселя !!!НЕ ИЗМЕНЯТЬ!! + a = 2 # Длина вокселя !!!НЕ ИЗМЕНЯТЬ!! b = a / 2 # Половина длины вокселя c = 0.02 # Толщина ребра d = 0.001 # Толщина грани From f2d8b8012e1c182c94c315802dba3f516012cc5f Mon Sep 17 00:00:00 2001 From: Aleksandr Date: Thu, 21 Nov 2019 18:34:28 +0500 Subject: [PATCH 07/36] Add tests ad fix octree --- .idea/dictionaries/aleksandr.xml | 1 + Experiments/cube.obj | 44 + Experiments/deer.obj | 2 +- Experiments/experiment.py | 7 +- Experiments/sphere.obj | 2580 ++++++++++++++++++++++++++++++ OcTreeV2/CreateOcTree.py | 23 - OcTreeV2/NodeOcTreeV2.py | 98 +- OcTreeV2/OcTree.py | 93 +- ReadObj.py | 11 +- Tests/MeshToVoxelTests.py | 11 +- Tests/NodeV2Tests.py | 153 +- Visualization.py | 2 +- 12 files changed, 2927 insertions(+), 98 deletions(-) create mode 100644 Experiments/cube.obj create mode 100644 Experiments/sphere.obj delete mode 100644 OcTreeV2/CreateOcTree.py diff --git a/.idea/dictionaries/aleksandr.xml b/.idea/dictionaries/aleksandr.xml index f05e547..f7e0e11 100644 --- a/.idea/dictionaries/aleksandr.xml +++ b/.idea/dictionaries/aleksandr.xml @@ -2,6 +2,7 @@ answ + dectribute devider dont octree diff --git a/Experiments/cube.obj b/Experiments/cube.obj new file mode 100644 index 0000000..a4db18c --- /dev/null +++ b/Experiments/cube.obj @@ -0,0 +1,44 @@ +#### +# +# OBJ File Generated by Meshlab +# +#### +# Object cube.obj +# +# Vertices: 8 +# Faces: 12 +# +#### +vn 0.577350 0.577350 0.577350 +v 0.500000 0.500000 0.500000 +vn -0.333333 0.666667 0.666667 +v -0.500000 0.500000 0.500000 +vn 0.666667 -0.333333 0.666667 +v 0.500000 -0.500000 0.500000 +vn -0.666667 -0.666667 0.333333 +v -0.500000 -0.500000 0.500000 +vn 0.666667 0.666667 -0.333333 +v 0.500000 0.500000 -0.500000 +vn -0.666667 0.333333 -0.666667 +v -0.500000 0.500000 -0.500000 +vn 0.333333 -0.666667 -0.666667 +v 0.500000 -0.500000 -0.500000 +vn -0.577350 -0.577350 -0.577350 +v -0.500000 -0.500000 -0.500000 +# 8 vertices, 0 vertices normals + +f 1//1 2//2 3//3 +f 4//4 3//3 2//2 +f 1//1 3//3 5//5 +f 7//7 5//5 3//3 +f 1//1 5//5 2//2 +f 6//6 2//2 5//5 +f 8//8 6//6 7//7 +f 5//5 7//7 6//6 +f 8//8 7//7 4//4 +f 3//3 4//4 7//7 +f 8//8 4//4 6//6 +f 2//2 6//6 4//4 +# 12 faces, 0 coords texture + +# End of File \ No newline at end of file diff --git a/Experiments/deer.obj b/Experiments/deer.obj index db46109..c08d68b 100644 --- a/Experiments/deer.obj +++ b/Experiments/deer.obj @@ -1,4 +1,4 @@ -# WaveFront *.obj file (generated by CINEMA 4D) + g grp1 grp1_2 usemtl Mat diff --git a/Experiments/experiment.py b/Experiments/experiment.py index 7c11300..3972867 100644 --- a/Experiments/experiment.py +++ b/Experiments/experiment.py @@ -1,2 +1,5 @@ -test = [x * y for x in range(2) for y in range(2)] -print(test) +from pymesh import obj + + +a = obj.Obj("cube.obj") +print(1) diff --git a/Experiments/sphere.obj b/Experiments/sphere.obj new file mode 100644 index 0000000..c56eaa2 --- /dev/null +++ b/Experiments/sphere.obj @@ -0,0 +1,2580 @@ +#### +# +# OBJ File Generated by Meshlab +# +#### +# Object spfere.obj +# +# Vertices: 642 +# Faces: 1280 +# +#### +vn -0.000000 0.850651 0.525731 +v 0.000000 0.850651 0.525731 +vn 0.000000 0.850651 -0.525731 +v 0.000000 0.850651 -0.525731 +vn 0.000000 -0.850651 0.525731 +v 0.000000 -0.850651 0.525731 +vn -0.000000 -0.850651 -0.525731 +v 0.000000 -0.850651 -0.525731 +vn 0.850651 0.525731 -0.000000 +v 0.850651 0.525731 0.000000 +vn 0.850651 -0.525731 0.000000 +v 0.850651 -0.525731 0.000000 +vn -0.850651 0.525731 0.000000 +v -0.850651 0.525731 0.000000 +vn -0.850651 -0.525731 -0.000000 +v -0.850651 -0.525731 0.000000 +vn 0.525731 -0.000000 0.850651 +v 0.525731 0.000000 0.850651 +vn -0.525731 0.000000 0.850651 +v -0.525731 0.000000 0.850651 +vn 0.525731 0.000000 -0.850651 +v 0.525731 0.000000 -0.850651 +vn -0.525731 -0.000000 -0.850651 +v -0.525731 0.000000 -0.850651 +vn 0.000000 1.000000 0.000000 +v 0.000000 1.000000 0.000000 +vn 0.500000 0.809017 0.309017 +v 0.500000 0.809017 0.309017 +vn 0.500000 0.809017 -0.309017 +v 0.500000 0.809017 -0.309017 +vn -0.500000 0.809017 -0.309017 +v -0.500000 0.809017 -0.309017 +vn -0.500000 0.809017 0.309017 +v -0.500000 0.809017 0.309017 +vn 0.000000 -1.000000 0.000000 +v 0.000000 -1.000000 0.000000 +vn 0.500000 -0.809017 -0.309017 +v 0.500000 -0.809017 -0.309017 +vn 0.500000 -0.809017 0.309017 +v 0.500000 -0.809017 0.309017 +vn -0.500000 -0.809017 0.309017 +v -0.500000 -0.809017 0.309017 +vn -0.500000 -0.809017 -0.309017 +v -0.500000 -0.809017 -0.309017 +vn 1.000000 0.000000 0.000000 +v 1.000000 0.000000 0.000000 +vn 0.809017 -0.309017 -0.500000 +v 0.809017 -0.309017 -0.500000 +vn 0.809017 0.309017 -0.500000 +v 0.809017 0.309017 -0.500000 +vn 0.809017 0.309017 0.500000 +v 0.809017 0.309017 0.500000 +vn 0.809017 -0.309017 0.500000 +v 0.809017 -0.309017 0.500000 +vn -1.000000 0.000000 0.000000 +v -1.000000 0.000000 0.000000 +vn -0.809017 -0.309017 0.500000 +v -0.809017 -0.309017 0.500000 +vn -0.809017 0.309017 0.500000 +v -0.809017 0.309017 0.500000 +vn -0.809017 0.309017 -0.500000 +v -0.809017 0.309017 -0.500000 +vn -0.809017 -0.309017 -0.500000 +v -0.809017 -0.309017 -0.500000 +vn 0.000000 0.000000 1.000000 +v 0.000000 0.000000 1.000000 +vn -0.309017 -0.500000 0.809017 +v -0.309017 -0.500000 0.809017 +vn 0.309017 -0.500000 0.809017 +v 0.309017 -0.500000 0.809017 +vn 0.309017 0.500000 0.809017 +v 0.309017 0.500000 0.809017 +vn -0.309017 0.500000 0.809017 +v -0.309017 0.500000 0.809017 +vn 0.000000 0.000000 -1.000000 +v 0.000000 0.000000 -1.000000 +vn -0.309017 0.500000 -0.809017 +v -0.309017 0.500000 -0.809017 +vn 0.309017 0.500000 -0.809017 +v 0.309017 0.500000 -0.809017 +vn 0.309017 -0.500000 -0.809017 +v 0.309017 -0.500000 -0.809017 +vn -0.309017 -0.500000 -0.809017 +v -0.309017 -0.500000 -0.809017 +vn 0.269058 0.950990 0.152399 +v 0.262866 0.951057 0.162460 +vn 0.515645 0.856803 0.000000 +v 0.525731 0.850651 0.000000 +vn 0.269058 0.950990 -0.152399 +v 0.262866 0.951057 -0.162460 +vn -0.269058 0.950990 -0.152399 +v -0.262866 0.951057 -0.162460 +vn -0.515645 0.856803 0.000000 +v -0.525731 0.850651 0.000000 +vn -0.269058 0.950990 0.152399 +v -0.262866 0.951057 0.162460 +vn 0.269058 -0.950990 -0.152399 +v 0.262866 -0.951057 -0.162460 +vn 0.515645 -0.856803 0.000000 +v 0.525731 -0.850651 0.000000 +vn 0.269058 -0.950990 0.152399 +v 0.262866 -0.951057 0.162460 +vn -0.269058 -0.950990 0.152399 +v -0.262866 -0.951057 0.162460 +vn -0.515645 -0.856803 0.000000 +v -0.525731 -0.850651 0.000000 +vn -0.269058 -0.950990 -0.152399 +v -0.262866 -0.951057 -0.162460 +vn 0.950990 -0.152399 -0.269058 +v 0.951057 -0.162460 -0.262866 +vn 0.856803 0.000000 -0.515645 +v 0.850651 0.000000 -0.525731 +vn 0.950990 0.152399 -0.269058 +v 0.951057 0.162460 -0.262866 +vn 0.950990 0.152399 0.269058 +v 0.951057 0.162460 0.262866 +vn 0.856803 0.000000 0.515645 +v 0.850651 0.000000 0.525731 +vn 0.950990 -0.152399 0.269058 +v 0.951057 -0.162460 0.262866 +vn -0.950990 -0.152399 0.269058 +v -0.951057 -0.162460 0.262866 +vn -0.856803 0.000000 0.515645 +v -0.850651 0.000000 0.525731 +vn -0.950990 0.152399 0.269058 +v -0.951057 0.162460 0.262866 +vn -0.950990 0.152399 -0.269058 +v -0.951057 0.162460 -0.262866 +vn -0.856803 0.000000 -0.515645 +v -0.850651 0.000000 -0.525731 +vn -0.950990 -0.152399 -0.269058 +v -0.951057 -0.162460 -0.262866 +vn -0.152399 -0.269058 0.950990 +v -0.162460 -0.262866 0.951057 +vn 0.000000 -0.515645 0.856803 +v 0.000000 -0.525731 0.850651 +vn 0.152399 -0.269058 0.950990 +v 0.162460 -0.262866 0.951057 +vn 0.152399 0.269058 0.950990 +v 0.162460 0.262866 0.951057 +vn 0.000000 0.515645 0.856803 +v 0.000000 0.525731 0.850651 +vn -0.152399 0.269058 0.950990 +v -0.162460 0.262866 0.951057 +vn -0.152399 0.269058 -0.950990 +v -0.162460 0.262866 -0.951057 +vn 0.000000 0.515645 -0.856803 +v 0.000000 0.525731 -0.850651 +vn 0.152399 0.269058 -0.950990 +v 0.162460 0.262866 -0.951057 +vn 0.152399 -0.269058 -0.950990 +v 0.162460 -0.262866 -0.951057 +vn 0.000000 -0.515645 -0.856803 +v 0.000000 -0.525731 -0.850651 +vn -0.152399 -0.269058 -0.950990 +v -0.162460 -0.262866 -0.951057 +vn 0.587744 0.435345 0.681932 +v 0.587785 0.425325 0.688191 +vn 0.681932 0.587744 0.435345 +v 0.688191 0.587785 0.425325 +vn 0.435345 0.681932 0.587744 +v 0.425325 0.688191 0.587785 +vn -0.681932 0.587744 0.435345 +v -0.688191 0.587785 0.425325 +vn -0.587744 0.435345 0.681932 +v -0.587785 0.425325 0.688191 +vn -0.435345 0.681932 0.587744 +v -0.425325 0.688191 0.587785 +vn 0.681932 0.587744 -0.435345 +v 0.688191 0.587785 -0.425325 +vn 0.587744 0.435345 -0.681932 +v 0.587785 0.425325 -0.688191 +vn 0.435345 0.681932 -0.587744 +v 0.425325 0.688191 -0.587785 +vn -0.587744 0.435345 -0.681932 +v -0.587785 0.425325 -0.688191 +vn -0.681932 0.587744 -0.435345 +v -0.688191 0.587785 -0.425325 +vn -0.435345 0.681932 -0.587744 +v -0.425325 0.688191 -0.587785 +vn 0.681932 -0.587744 0.435345 +v 0.688191 -0.587785 0.425325 +vn 0.587744 -0.435345 0.681932 +v 0.587785 -0.425325 0.688191 +vn 0.435345 -0.681932 0.587744 +v 0.425325 -0.688191 0.587785 +vn -0.587744 -0.435345 0.681932 +v -0.587785 -0.425325 0.688191 +vn -0.681932 -0.587744 0.435345 +v -0.688191 -0.587785 0.425325 +vn -0.435345 -0.681932 0.587744 +v -0.425325 -0.688191 0.587785 +vn 0.587744 -0.435345 -0.681932 +v 0.587785 -0.425325 -0.688191 +vn 0.681932 -0.587744 -0.435345 +v 0.688191 -0.587785 -0.425325 +vn 0.435345 -0.681932 -0.587744 +v 0.425325 -0.688191 -0.587785 +vn -0.681932 -0.587744 -0.435345 +v -0.688191 -0.587785 -0.425325 +vn -0.587744 -0.435345 -0.681932 +v -0.587785 -0.425325 -0.688191 +vn -0.435345 -0.681932 -0.587744 +v -0.425325 -0.688191 -0.587785 +vn 0.000000 0.960122 -0.279581 +v 0.000000 0.961938 -0.273267 +vn 0.253876 0.863150 -0.436484 +v 0.259892 0.862668 -0.433889 +vn -0.000000 0.960122 0.279581 +v 0.000000 0.961938 0.273267 +vn 0.253876 0.863150 0.436484 +v 0.259892 0.862668 0.433889 +vn 0.706247 0.690360 0.156904 +v 0.702046 0.693780 0.160622 +vn 0.706247 0.690360 -0.156904 +v 0.702046 0.693780 -0.160622 +vn -0.253876 0.863150 0.436484 +v -0.259892 0.862668 0.433889 +vn -0.253876 0.863150 -0.436484 +v -0.259892 0.862668 -0.433889 +vn -0.706247 0.690360 -0.156904 +v -0.702046 0.693780 -0.160622 +vn -0.706247 0.690360 0.156904 +v -0.702046 0.693780 0.160622 +vn 0.000000 -0.960122 0.279581 +v 0.000000 -0.961938 0.273267 +vn 0.253876 -0.863150 0.436484 +v 0.259892 -0.862668 0.433889 +vn -0.000000 -0.960122 -0.279581 +v 0.000000 -0.961938 -0.273267 +vn 0.253876 -0.863150 -0.436484 +v 0.259892 -0.862668 -0.433889 +vn 0.706247 -0.690360 -0.156904 +v 0.702046 -0.693780 -0.160622 +vn 0.706247 -0.690360 0.156904 +v 0.702046 -0.693780 0.160622 +vn -0.253876 -0.863150 -0.436484 +v -0.259892 -0.862668 -0.433889 +vn -0.253876 -0.863150 0.436484 +v -0.259892 -0.862668 0.433889 +vn -0.706247 -0.690360 0.156904 +v -0.702046 -0.693780 0.160622 +vn -0.706247 -0.690360 -0.156904 +v -0.702046 -0.693780 -0.160622 +vn 0.960122 0.279581 -0.000000 +v 0.961938 0.273267 0.000000 +vn 0.863150 0.436484 -0.253876 +v 0.862668 0.433889 -0.259892 +vn 0.960122 -0.279581 0.000000 +v 0.961938 -0.273267 0.000000 +vn 0.863150 -0.436484 -0.253876 +v 0.862668 -0.433889 -0.259892 +vn 0.690360 -0.156904 -0.706247 +v 0.693780 -0.160622 -0.702046 +vn 0.690360 0.156904 -0.706247 +v 0.693780 0.160622 -0.702046 +vn 0.863150 -0.436484 0.253876 +v 0.862668 -0.433889 0.259892 +vn 0.863150 0.436484 0.253876 +v 0.862668 0.433889 0.259892 +vn 0.690360 0.156904 0.706247 +v 0.693780 0.160622 0.702046 +vn 0.690360 -0.156904 0.706247 +v 0.693780 -0.160622 0.702046 +vn -0.960122 0.279581 0.000000 +v -0.961938 0.273267 0.000000 +vn -0.863150 0.436484 0.253876 +v -0.862668 0.433889 0.259892 +vn -0.960122 -0.279581 -0.000000 +v -0.961938 -0.273267 0.000000 +vn -0.863150 -0.436484 0.253876 +v -0.862668 -0.433889 0.259892 +vn -0.690360 -0.156904 0.706247 +v -0.693780 -0.160622 0.702046 +vn -0.690360 0.156904 0.706247 +v -0.693780 0.160622 0.702046 +vn -0.863150 -0.436484 -0.253876 +v -0.862668 -0.433889 -0.259892 +vn -0.863150 0.436484 -0.253876 +v -0.862668 0.433889 -0.259892 +vn -0.690360 0.156904 -0.706247 +v -0.693780 0.160622 -0.702046 +vn -0.690360 -0.156904 -0.706247 +v -0.693780 -0.160622 -0.702046 +vn 0.279581 -0.000000 0.960122 +v 0.273267 0.000000 0.961938 +vn 0.436484 -0.253876 0.863150 +v 0.433889 -0.259892 0.862668 +vn -0.279581 0.000000 0.960122 +v -0.273267 0.000000 0.961938 +vn -0.436484 -0.253876 0.863150 +v -0.433889 -0.259892 0.862668 +vn -0.156904 -0.706247 0.690360 +v -0.160622 -0.702046 0.693780 +vn 0.156904 -0.706247 0.690360 +v 0.160622 -0.702046 0.693780 +vn -0.436484 0.253876 0.863150 +v -0.433889 0.259892 0.862668 +vn 0.436484 0.253876 0.863150 +v 0.433889 0.259892 0.862668 +vn 0.156904 0.706247 0.690360 +v 0.160622 0.702046 0.693780 +vn -0.156904 0.706247 0.690360 +v -0.160622 0.702046 0.693780 +vn 0.279581 0.000000 -0.960122 +v 0.273267 0.000000 -0.961938 +vn 0.436484 0.253876 -0.863150 +v 0.433889 0.259892 -0.862668 +vn -0.279581 -0.000000 -0.960122 +v -0.273267 0.000000 -0.961938 +vn -0.436484 0.253876 -0.863150 +v -0.433889 0.259892 -0.862668 +vn -0.156904 0.706247 -0.690360 +v -0.160622 0.702046 -0.693780 +vn 0.156904 0.706247 -0.690360 +v 0.160622 0.702046 -0.693780 +vn -0.436484 -0.253876 -0.863150 +v -0.433889 -0.259892 -0.862668 +vn 0.436484 -0.253876 -0.863150 +v 0.433889 -0.259892 -0.862668 +vn 0.156904 -0.706247 -0.690360 +v 0.160622 -0.702046 -0.693780 +vn -0.156904 -0.706247 -0.690360 +v -0.160622 -0.702046 -0.693780 +vn 0.398048 0.913939 0.079210 +v 0.399607 0.912982 0.082324 +vn 0.398048 0.913939 -0.079210 +v 0.399607 0.912982 -0.082324 +vn 0.269884 0.962893 0.000000 +v 0.266405 0.963861 0.000000 +vn -0.398048 0.913939 -0.079210 +v -0.399607 0.912982 -0.082324 +vn -0.398048 0.913939 0.079210 +v -0.399607 0.912982 0.082324 +vn -0.269884 0.962893 -0.000000 +v -0.266405 0.963861 0.000000 +vn 0.398048 -0.913939 -0.079210 +v 0.399607 -0.912982 -0.082324 +vn 0.398048 -0.913939 0.079210 +v 0.399607 -0.912982 0.082324 +vn 0.269884 -0.962893 -0.000000 +v 0.266405 -0.963861 0.000000 +vn -0.398048 -0.913939 0.079210 +v -0.399607 -0.912982 0.082324 +vn -0.398048 -0.913939 -0.079210 +v -0.399607 -0.912982 -0.082324 +vn -0.269884 -0.962893 0.000000 +v -0.266405 -0.963861 0.000000 +vn 0.913939 -0.079210 -0.398048 +v 0.912982 -0.082324 -0.399607 +vn 0.913939 0.079210 -0.398048 +v 0.912982 0.082324 -0.399607 +vn 0.962893 -0.000000 -0.269884 +v 0.963861 0.000000 -0.266405 +vn 0.913939 0.079210 0.398048 +v 0.912982 0.082324 0.399607 +vn 0.913939 -0.079210 0.398048 +v 0.912982 -0.082324 0.399607 +vn 0.962893 0.000000 0.269884 +v 0.963861 0.000000 0.266405 +vn -0.913939 -0.079210 0.398048 +v -0.912982 -0.082324 0.399607 +vn -0.913939 0.079210 0.398048 +v -0.912982 0.082324 0.399607 +vn -0.962893 -0.000000 0.269884 +v -0.963861 0.000000 0.266405 +vn -0.913939 0.079210 -0.398048 +v -0.912982 0.082324 -0.399607 +vn -0.913939 -0.079210 -0.398048 +v -0.912982 -0.082324 -0.399607 +vn -0.962893 0.000000 -0.269884 +v -0.963861 0.000000 -0.266405 +vn -0.079210 -0.398048 0.913939 +v -0.082324 -0.399607 0.912982 +vn 0.079210 -0.398048 0.913939 +v 0.082324 -0.399607 0.912982 +vn -0.000000 -0.269884 0.962893 +v 0.000000 -0.266405 0.963861 +vn 0.079210 0.398048 0.913939 +v 0.082324 0.399607 0.912982 +vn -0.079210 0.398048 0.913939 +v -0.082324 0.399607 0.912982 +vn 0.000000 0.269884 0.962893 +v 0.000000 0.266405 0.963861 +vn -0.079210 0.398048 -0.913939 +v -0.082324 0.399607 -0.912982 +vn 0.079210 0.398048 -0.913939 +v 0.082324 0.399607 -0.912982 +vn -0.000000 0.269884 -0.962893 +v 0.000000 0.266405 -0.963861 +vn 0.079210 -0.398048 -0.913939 +v 0.082324 -0.399607 -0.912982 +vn -0.079210 -0.398048 -0.913939 +v -0.082324 -0.399607 -0.912982 +vn 0.000000 -0.269884 -0.962893 +v 0.000000 -0.266405 -0.963861 +vn 0.644055 0.515891 0.564845 +v 0.646578 0.513375 0.564254 +vn 0.564845 0.644055 0.515891 +v 0.564254 0.646578 0.513375 +vn 0.515891 0.564845 0.644055 +v 0.513375 0.564254 0.646578 +vn -0.644055 0.515891 0.564845 +v -0.646578 0.513375 0.564254 +vn -0.515891 0.564845 0.644055 +v -0.513375 0.564254 0.646578 +vn -0.564845 0.644055 0.515891 +v -0.564254 0.646578 0.513375 +vn 0.644055 0.515891 -0.564845 +v 0.646578 0.513375 -0.564254 +vn 0.515891 0.564845 -0.644055 +v 0.513375 0.564254 -0.646578 +vn 0.564845 0.644055 -0.515891 +v 0.564254 0.646578 -0.513375 +vn -0.644055 0.515891 -0.564845 +v -0.646578 0.513375 -0.564254 +vn -0.564845 0.644055 -0.515891 +v -0.564254 0.646578 -0.513375 +vn -0.515891 0.564845 -0.644055 +v -0.513375 0.564254 -0.646578 +vn 0.644055 -0.515891 0.564845 +v 0.646578 -0.513375 0.564254 +vn 0.515891 -0.564845 0.644055 +v 0.513375 -0.564254 0.646578 +vn 0.564845 -0.644055 0.515891 +v 0.564254 -0.646578 0.513375 +vn -0.644055 -0.515891 0.564845 +v -0.646578 -0.513375 0.564254 +vn -0.564845 -0.644055 0.515891 +v -0.564254 -0.646578 0.513375 +vn -0.515891 -0.564845 0.644055 +v -0.513375 -0.564254 0.646578 +vn 0.644055 -0.515891 -0.564845 +v 0.646578 -0.513375 -0.564254 +vn 0.564845 -0.644055 -0.515891 +v 0.564254 -0.646578 -0.513375 +vn 0.515891 -0.564845 -0.644055 +v 0.513375 -0.564254 -0.646578 +vn -0.644055 -0.515891 -0.564845 +v -0.646578 -0.513375 -0.564254 +vn -0.515891 -0.564845 -0.644055 +v -0.513375 -0.564254 -0.646578 +vn -0.564845 -0.644055 -0.515891 +v -0.564254 -0.646578 -0.513375 +vn 0.133869 0.965715 -0.222424 +v 0.132792 0.966393 -0.220117 +vn 0.261545 0.916948 -0.301332 +v 0.264083 0.916244 -0.301259 +vn 0.133372 0.924972 -0.355864 +v 0.131655 0.924305 -0.358229 +vn 0.133372 0.924972 0.355864 +v 0.131655 0.924305 0.358229 +vn 0.261545 0.916948 0.301332 +v 0.264083 0.916244 0.301259 +vn 0.133869 0.965715 0.222424 +v 0.132792 0.966393 0.220117 +vn 0.621435 0.779482 0.078908 +v 0.620240 0.780204 0.081142 +vn 0.709172 0.705036 0.000000 +v 0.711282 0.702907 0.000000 +vn 0.621435 0.779482 -0.078908 +v 0.620240 0.780204 -0.081142 +vn -0.133869 0.965715 0.222424 +v -0.132792 0.966393 0.220117 +vn -0.261545 0.916948 0.301332 +v -0.264083 0.916244 0.301259 +vn -0.133372 0.924972 0.355864 +v -0.131655 0.924305 0.358229 +vn -0.133372 0.924972 -0.355864 +v -0.131655 0.924305 -0.358229 +vn -0.261545 0.916948 -0.301332 +v -0.264083 0.916244 -0.301259 +vn -0.133869 0.965715 -0.222424 +v -0.132792 0.966393 -0.220117 +vn -0.621435 0.779482 -0.078908 +v -0.620240 0.780204 -0.081142 +vn -0.709172 0.705036 0.000000 +v -0.711282 0.702907 0.000000 +vn -0.621435 0.779482 0.078908 +v -0.620240 0.780204 0.081142 +vn 0.133869 -0.965715 0.222424 +v 0.132792 -0.966393 0.220117 +vn 0.261545 -0.916948 0.301332 +v 0.264083 -0.916244 0.301259 +vn 0.133372 -0.924972 0.355864 +v 0.131655 -0.924305 0.358229 +vn 0.133372 -0.924972 -0.355864 +v 0.131655 -0.924305 -0.358229 +vn 0.261545 -0.916948 -0.301332 +v 0.264083 -0.916244 -0.301259 +vn 0.133869 -0.965715 -0.222424 +v 0.132792 -0.966393 -0.220117 +vn 0.621435 -0.779482 -0.078908 +v 0.620240 -0.780204 -0.081142 +vn 0.709172 -0.705036 0.000000 +v 0.711282 -0.702907 0.000000 +vn 0.621435 -0.779482 0.078908 +v 0.620240 -0.780204 0.081142 +vn -0.133869 -0.965715 -0.222424 +v -0.132792 -0.966393 -0.220117 +vn -0.261545 -0.916948 -0.301332 +v -0.264083 -0.916244 -0.301259 +vn -0.133372 -0.924972 -0.355864 +v -0.131655 -0.924305 -0.358229 +vn -0.133372 -0.924972 0.355864 +v -0.131655 -0.924305 0.358229 +vn -0.261545 -0.916948 0.301332 +v -0.264083 -0.916244 0.301259 +vn -0.133869 -0.965715 0.222424 +v -0.132792 -0.966393 0.220117 +vn -0.621435 -0.779482 0.078908 +v -0.620240 -0.780204 0.081142 +vn -0.709172 -0.705036 0.000000 +v -0.711282 -0.702907 0.000000 +vn -0.621435 -0.779482 -0.078908 +v -0.620240 -0.780204 -0.081142 +vn 0.965715 0.222424 -0.133869 +v 0.966393 0.220117 -0.132792 +vn 0.916948 0.301332 -0.261545 +v 0.916244 0.301259 -0.264083 +vn 0.924972 0.355864 -0.133372 +v 0.924305 0.358229 -0.131655 +vn 0.924972 -0.355864 -0.133372 +v 0.924305 -0.358229 -0.131655 +vn 0.916948 -0.301332 -0.261545 +v 0.916244 -0.301259 -0.264083 +vn 0.965715 -0.222424 -0.133869 +v 0.966393 -0.220117 -0.132792 +vn 0.779482 -0.078908 -0.621435 +v 0.780204 -0.081142 -0.620240 +vn 0.705036 0.000000 -0.709172 +v 0.702907 0.000000 -0.711282 +vn 0.779482 0.078908 -0.621435 +v 0.780204 0.081142 -0.620240 +vn 0.965715 -0.222424 0.133869 +v 0.966393 -0.220117 0.132792 +vn 0.916948 -0.301332 0.261545 +v 0.916244 -0.301259 0.264083 +vn 0.924972 -0.355864 0.133372 +v 0.924305 -0.358229 0.131655 +vn 0.924972 0.355864 0.133372 +v 0.924305 0.358229 0.131655 +vn 0.916948 0.301332 0.261545 +v 0.916244 0.301259 0.264083 +vn 0.965715 0.222424 0.133869 +v 0.966393 0.220117 0.132792 +vn 0.779482 0.078908 0.621435 +v 0.780204 0.081142 0.620240 +vn 0.705036 0.000000 0.709172 +v 0.702907 0.000000 0.711282 +vn 0.779482 -0.078908 0.621435 +v 0.780204 -0.081142 0.620240 +vn -0.965715 0.222424 0.133869 +v -0.966393 0.220117 0.132792 +vn -0.916948 0.301332 0.261545 +v -0.916244 0.301259 0.264083 +vn -0.924972 0.355864 0.133372 +v -0.924305 0.358229 0.131655 +vn -0.924972 -0.355864 0.133372 +v -0.924305 -0.358229 0.131655 +vn -0.916948 -0.301332 0.261545 +v -0.916244 -0.301259 0.264083 +vn -0.965715 -0.222424 0.133869 +v -0.966393 -0.220117 0.132792 +vn -0.779482 -0.078908 0.621435 +v -0.780204 -0.081142 0.620240 +vn -0.705036 0.000000 0.709172 +v -0.702907 0.000000 0.711282 +vn -0.779482 0.078908 0.621435 +v -0.780204 0.081142 0.620240 +vn -0.965715 -0.222424 -0.133869 +v -0.966393 -0.220117 -0.132792 +vn -0.916948 -0.301332 -0.261545 +v -0.916244 -0.301259 -0.264083 +vn -0.924972 -0.355864 -0.133372 +v -0.924305 -0.358229 -0.131655 +vn -0.924972 0.355864 -0.133372 +v -0.924305 0.358229 -0.131655 +vn -0.916948 0.301332 -0.261545 +v -0.916244 0.301259 -0.264083 +vn -0.965715 0.222424 -0.133869 +v -0.966393 0.220117 -0.132792 +vn -0.779482 0.078908 -0.621435 +v -0.780204 0.081142 -0.620240 +vn -0.705036 0.000000 -0.709172 +v -0.702907 0.000000 -0.711282 +vn -0.779482 -0.078908 -0.621435 +v -0.780204 -0.081142 -0.620240 +vn 0.222424 -0.133869 0.965715 +v 0.220117 -0.132792 0.966393 +vn 0.301332 -0.261545 0.916948 +v 0.301259 -0.264083 0.916244 +vn 0.355864 -0.133372 0.924972 +v 0.358229 -0.131655 0.924305 +vn -0.355864 -0.133372 0.924972 +v -0.358229 -0.131655 0.924305 +vn -0.301332 -0.261545 0.916948 +v -0.301259 -0.264083 0.916244 +vn -0.222424 -0.133869 0.965715 +v -0.220117 -0.132792 0.966393 +vn -0.078908 -0.621435 0.779482 +v -0.081142 -0.620240 0.780204 +vn 0.000000 -0.709172 0.705036 +v 0.000000 -0.711282 0.702907 +vn 0.078908 -0.621435 0.779482 +v 0.081142 -0.620240 0.780204 +vn -0.222424 0.133869 0.965715 +v -0.220117 0.132792 0.966393 +vn -0.301332 0.261545 0.916948 +v -0.301259 0.264083 0.916244 +vn -0.355864 0.133372 0.924972 +v -0.358229 0.131655 0.924305 +vn 0.355864 0.133372 0.924972 +v 0.358229 0.131655 0.924305 +vn 0.301332 0.261545 0.916948 +v 0.301259 0.264083 0.916244 +vn 0.222424 0.133869 0.965715 +v 0.220117 0.132792 0.966393 +vn 0.078908 0.621435 0.779482 +v 0.081142 0.620240 0.780204 +vn 0.000000 0.709172 0.705036 +v 0.000000 0.711282 0.702907 +vn -0.078908 0.621435 0.779482 +v -0.081142 0.620240 0.780204 +vn 0.222424 0.133869 -0.965715 +v 0.220117 0.132792 -0.966393 +vn 0.301332 0.261545 -0.916948 +v 0.301259 0.264083 -0.916244 +vn 0.355864 0.133372 -0.924972 +v 0.358229 0.131655 -0.924305 +vn -0.355864 0.133372 -0.924972 +v -0.358229 0.131655 -0.924305 +vn -0.301332 0.261545 -0.916948 +v -0.301259 0.264083 -0.916244 +vn -0.222424 0.133869 -0.965715 +v -0.220117 0.132792 -0.966393 +vn -0.078908 0.621435 -0.779482 +v -0.081142 0.620240 -0.780204 +vn 0.000000 0.709172 -0.705036 +v 0.000000 0.711282 -0.702907 +vn 0.078908 0.621435 -0.779482 +v 0.081142 0.620240 -0.780204 +vn -0.222424 -0.133869 -0.965715 +v -0.220117 -0.132792 -0.966393 +vn -0.301332 -0.261545 -0.916948 +v -0.301259 -0.264083 -0.916244 +vn -0.355864 -0.133372 -0.924972 +v -0.358229 -0.131655 -0.924305 +vn 0.355864 -0.133372 -0.924972 +v 0.358229 -0.131655 -0.924305 +vn 0.301332 -0.261545 -0.916948 +v 0.301259 -0.264083 -0.916244 +vn 0.222424 -0.133869 -0.965715 +v 0.220117 -0.132792 -0.966393 +vn 0.078908 -0.621435 -0.779482 +v 0.081142 -0.620240 -0.780204 +vn 0.000000 -0.709172 -0.705036 +v 0.000000 -0.711282 -0.702907 +vn -0.078908 -0.621435 -0.779482 +v -0.081142 -0.620240 -0.780204 +vn 0.295513 0.704171 0.645613 +v 0.296005 0.702310 0.647412 +vn 0.344281 0.783078 0.517937 +v 0.346153 0.783452 0.516122 +vn 0.215800 0.791600 0.571664 +v 0.213023 0.792649 0.571252 +vn 0.571664 0.215800 0.791600 +v 0.571252 0.213023 0.792649 +vn 0.645613 0.295513 0.704171 +v 0.647412 0.296005 0.702310 +vn 0.517937 0.344281 0.783078 +v 0.516122 0.346153 0.783452 +vn 0.783078 0.517937 0.344281 +v 0.783452 0.516122 0.346153 +vn 0.791600 0.571664 0.215800 +v 0.792649 0.571252 0.213023 +vn 0.704170 0.645613 0.295513 +v 0.702310 0.647412 0.296005 +vn -0.344281 0.783078 0.517937 +v -0.346153 0.783452 0.516122 +vn -0.295513 0.704171 0.645613 +v -0.296005 0.702310 0.647412 +vn -0.215800 0.791600 0.571664 +v -0.213023 0.792649 0.571252 +vn -0.791600 0.571664 0.215800 +v -0.792649 0.571252 0.213023 +vn -0.783078 0.517937 0.344281 +v -0.783452 0.516122 0.346153 +vn -0.704170 0.645613 0.295513 +v -0.702310 0.647412 0.296005 +vn -0.645613 0.295513 0.704171 +v -0.647412 0.296005 0.702310 +vn -0.571664 0.215800 0.791600 +v -0.571252 0.213023 0.792649 +vn -0.517937 0.344281 0.783078 +v -0.516122 0.346153 0.783452 +vn 0.344281 0.783078 -0.517937 +v 0.346153 0.783452 -0.516122 +vn 0.295513 0.704171 -0.645613 +v 0.296005 0.702310 -0.647412 +vn 0.215800 0.791600 -0.571664 +v 0.213023 0.792649 -0.571252 +vn 0.791600 0.571664 -0.215800 +v 0.792649 0.571252 -0.213023 +vn 0.783078 0.517937 -0.344281 +v 0.783452 0.516122 -0.346153 +vn 0.704170 0.645613 -0.295513 +v 0.702310 0.647412 -0.296005 +vn 0.645613 0.295513 -0.704171 +v 0.647412 0.296005 -0.702310 +vn 0.571664 0.215800 -0.791600 +v 0.571252 0.213023 -0.792649 +vn 0.517937 0.344281 -0.783078 +v 0.516122 0.346153 -0.783452 +vn -0.295513 0.704171 -0.645613 +v -0.296005 0.702310 -0.647412 +vn -0.344281 0.783078 -0.517937 +v -0.346153 0.783452 -0.516122 +vn -0.215800 0.791600 -0.571664 +v -0.213023 0.792649 -0.571252 +vn -0.571664 0.215800 -0.791600 +v -0.571252 0.213023 -0.792649 +vn -0.645613 0.295513 -0.704171 +v -0.647412 0.296005 -0.702310 +vn -0.517937 0.344281 -0.783078 +v -0.516122 0.346153 -0.783452 +vn -0.783078 0.517937 -0.344281 +v -0.783452 0.516122 -0.346153 +vn -0.791600 0.571664 -0.215800 +v -0.792649 0.571252 -0.213023 +vn -0.704170 0.645613 -0.295513 +v -0.702310 0.647412 -0.296005 +vn 0.344281 -0.783078 0.517937 +v 0.346153 -0.783452 0.516122 +vn 0.295513 -0.704171 0.645613 +v 0.296005 -0.702310 0.647412 +vn 0.215800 -0.791600 0.571664 +v 0.213023 -0.792649 0.571252 +vn 0.791600 -0.571664 0.215800 +v 0.792649 -0.571252 0.213023 +vn 0.783078 -0.517937 0.344281 +v 0.783452 -0.516122 0.346153 +vn 0.704170 -0.645613 0.295513 +v 0.702310 -0.647412 0.296005 +vn 0.645613 -0.295513 0.704171 +v 0.647412 -0.296005 0.702310 +vn 0.571664 -0.215800 0.791600 +v 0.571252 -0.213023 0.792649 +vn 0.517937 -0.344281 0.783078 +v 0.516122 -0.346153 0.783452 +vn -0.295513 -0.704171 0.645613 +v -0.296005 -0.702310 0.647412 +vn -0.344281 -0.783078 0.517937 +v -0.346153 -0.783452 0.516122 +vn -0.215800 -0.791600 0.571664 +v -0.213023 -0.792649 0.571252 +vn -0.571664 -0.215800 0.791600 +v -0.571252 -0.213023 0.792649 +vn -0.645613 -0.295513 0.704171 +v -0.647412 -0.296005 0.702310 +vn -0.517937 -0.344281 0.783078 +v -0.516122 -0.346153 0.783452 +vn -0.783078 -0.517937 0.344281 +v -0.783452 -0.516122 0.346153 +vn -0.791600 -0.571664 0.215800 +v -0.792649 -0.571252 0.213023 +vn -0.704170 -0.645613 0.295513 +v -0.702310 -0.647412 0.296005 +vn 0.295513 -0.704171 -0.645613 +v 0.296005 -0.702310 -0.647412 +vn 0.344281 -0.783078 -0.517937 +v 0.346153 -0.783452 -0.516122 +vn 0.215800 -0.791600 -0.571664 +v 0.213023 -0.792649 -0.571252 +vn 0.571664 -0.215800 -0.791600 +v 0.571252 -0.213023 -0.792649 +vn 0.645613 -0.295513 -0.704171 +v 0.647412 -0.296005 -0.702310 +vn 0.517937 -0.344281 -0.783078 +v 0.516122 -0.346153 -0.783452 +vn 0.783078 -0.517937 -0.344281 +v 0.783452 -0.516122 -0.346153 +vn 0.791600 -0.571664 -0.215800 +v 0.792649 -0.571252 -0.213023 +vn 0.704170 -0.645613 -0.295513 +v 0.702310 -0.647412 -0.296005 +vn -0.344281 -0.783078 -0.517937 +v -0.346153 -0.783452 -0.516122 +vn -0.295513 -0.704171 -0.645613 +v -0.296005 -0.702310 -0.647412 +vn -0.215800 -0.791600 -0.571664 +v -0.213023 -0.792649 -0.571252 +vn -0.791600 -0.571664 -0.215800 +v -0.792649 -0.571252 -0.213023 +vn -0.783078 -0.517937 -0.344281 +v -0.783452 -0.516122 -0.346153 +vn -0.704170 -0.645613 -0.295513 +v -0.702310 -0.647412 -0.296005 +vn -0.645613 -0.295513 -0.704171 +v -0.647412 -0.296005 -0.702310 +vn -0.571664 -0.215800 -0.791600 +v -0.571252 -0.213023 -0.792649 +vn -0.517937 -0.344281 -0.783078 +v -0.516122 -0.346153 -0.783452 +vn 0.137620 0.987900 0.071520 +v 0.133071 0.987688 0.082242 +vn 0.137620 0.987900 -0.071520 +v 0.133071 0.987688 -0.082242 +vn 0.393562 0.890138 0.229701 +v 0.386187 0.891007 0.238677 +vn 0.509284 0.845936 0.158181 +v 0.519258 0.840178 0.156434 +vn 0.509284 0.845936 -0.158181 +v 0.519258 0.840178 -0.156434 +vn 0.393562 0.890139 -0.229701 +v 0.386187 0.891007 -0.238677 +vn -0.137620 0.987900 -0.071520 +v -0.133071 0.987688 -0.082242 +vn -0.137620 0.987900 0.071520 +v -0.133071 0.987688 0.082242 +vn -0.393562 0.890138 -0.229701 +v -0.386187 0.891007 -0.238677 +vn -0.509284 0.845936 -0.158181 +v -0.519258 0.840178 -0.156434 +vn -0.509284 0.845936 0.158181 +v -0.519258 0.840178 0.156434 +vn -0.393562 0.890139 0.229701 +v -0.386187 0.891007 0.238677 +vn 0.137620 -0.987900 -0.071520 +v 0.133071 -0.987688 -0.082242 +vn 0.137620 -0.987900 0.071520 +v 0.133071 -0.987688 0.082242 +vn 0.393562 -0.890138 -0.229701 +v 0.386187 -0.891007 -0.238677 +vn 0.509284 -0.845936 -0.158181 +v 0.519258 -0.840178 -0.156434 +vn 0.509284 -0.845936 0.158181 +v 0.519258 -0.840178 0.156434 +vn 0.393562 -0.890139 0.229701 +v 0.386187 -0.891007 0.238677 +vn -0.137620 -0.987900 0.071520 +v -0.133071 -0.987688 0.082242 +vn -0.137620 -0.987900 -0.071520 +v -0.133071 -0.987688 -0.082242 +vn -0.393562 -0.890138 0.229701 +v -0.386187 -0.891007 0.238677 +vn -0.509284 -0.845936 0.158181 +v -0.519258 -0.840178 0.156434 +vn -0.509284 -0.845936 -0.158181 +v -0.519258 -0.840178 -0.156434 +vn -0.393562 -0.890139 -0.229701 +v -0.386187 -0.891007 -0.238677 +vn 0.987900 -0.071520 -0.137620 +v 0.987688 -0.082242 -0.133071 +vn 0.987900 0.071520 -0.137620 +v 0.987688 0.082242 -0.133071 +vn 0.890138 -0.229701 -0.393562 +v 0.891007 -0.238677 -0.386187 +vn 0.845937 -0.158181 -0.509284 +v 0.840178 -0.156434 -0.519258 +vn 0.845937 0.158181 -0.509284 +v 0.840178 0.156434 -0.519258 +vn 0.890138 0.229701 -0.393562 +v 0.891007 0.238677 -0.386187 +vn 0.987900 0.071520 0.137620 +v 0.987688 0.082242 0.133071 +vn 0.987900 -0.071520 0.137620 +v 0.987688 -0.082242 0.133071 +vn 0.890138 0.229701 0.393562 +v 0.891007 0.238677 0.386187 +vn 0.845937 0.158181 0.509284 +v 0.840178 0.156434 0.519258 +vn 0.845937 -0.158181 0.509284 +v 0.840178 -0.156434 0.519258 +vn 0.890138 -0.229701 0.393562 +v 0.891007 -0.238677 0.386187 +vn -0.987900 -0.071520 0.137620 +v -0.987688 -0.082242 0.133071 +vn -0.987900 0.071520 0.137620 +v -0.987688 0.082242 0.133071 +vn -0.890138 -0.229701 0.393562 +v -0.891007 -0.238677 0.386187 +vn -0.845937 -0.158181 0.509284 +v -0.840178 -0.156434 0.519258 +vn -0.845937 0.158181 0.509284 +v -0.840178 0.156434 0.519258 +vn -0.890138 0.229701 0.393562 +v -0.891007 0.238677 0.386187 +vn -0.987900 0.071520 -0.137620 +v -0.987688 0.082242 -0.133071 +vn -0.987900 -0.071520 -0.137620 +v -0.987688 -0.082242 -0.133071 +vn -0.890138 0.229701 -0.393562 +v -0.891007 0.238677 -0.386187 +vn -0.845937 0.158181 -0.509284 +v -0.840178 0.156434 -0.519258 +vn -0.845937 -0.158181 -0.509284 +v -0.840178 -0.156434 -0.519258 +vn -0.890138 -0.229701 -0.393562 +v -0.891007 -0.238677 -0.386187 +vn -0.071520 -0.137620 0.987900 +v -0.082242 -0.133071 0.987688 +vn 0.071520 -0.137620 0.987900 +v 0.082242 -0.133071 0.987688 +vn -0.229701 -0.393562 0.890138 +v -0.238677 -0.386187 0.891007 +vn -0.158181 -0.509284 0.845937 +v -0.156434 -0.519258 0.840178 +vn 0.158181 -0.509284 0.845937 +v 0.156434 -0.519258 0.840178 +vn 0.229701 -0.393562 0.890138 +v 0.238677 -0.386187 0.891007 +vn 0.071520 0.137620 0.987900 +v 0.082242 0.133071 0.987688 +vn -0.071520 0.137620 0.987900 +v -0.082242 0.133071 0.987688 +vn 0.229701 0.393562 0.890138 +v 0.238677 0.386187 0.891007 +vn 0.158181 0.509284 0.845937 +v 0.156434 0.519258 0.840178 +vn -0.158181 0.509284 0.845937 +v -0.156434 0.519258 0.840178 +vn -0.229701 0.393562 0.890138 +v -0.238677 0.386187 0.891007 +vn -0.071520 0.137620 -0.987900 +v -0.082242 0.133071 -0.987688 +vn 0.071520 0.137620 -0.987900 +v 0.082242 0.133071 -0.987688 +vn -0.229701 0.393562 -0.890138 +v -0.238677 0.386187 -0.891007 +vn -0.158181 0.509284 -0.845937 +v -0.156434 0.519258 -0.840178 +vn 0.158181 0.509284 -0.845937 +v 0.156434 0.519258 -0.840178 +vn 0.229701 0.393562 -0.890138 +v 0.238677 0.386187 -0.891007 +vn 0.071520 -0.137620 -0.987900 +v 0.082242 -0.133071 -0.987688 +vn -0.071520 -0.137620 -0.987900 +v -0.082242 -0.133071 -0.987688 +vn 0.229701 -0.393562 -0.890138 +v 0.238677 -0.386187 -0.891007 +vn 0.158181 -0.509284 -0.845937 +v 0.156434 -0.519258 -0.840178 +vn -0.158181 -0.509284 -0.845937 +v -0.156434 -0.519258 -0.840178 +vn -0.229701 -0.393562 -0.890138 +v -0.238677 -0.386187 -0.891007 +vn 0.452375 0.478615 0.752519 +v 0.453991 0.468430 0.757935 +vn 0.380854 0.594338 0.708317 +v 0.371748 0.601501 0.707107 +vn 0.708317 0.380854 0.594338 +v 0.707107 0.371748 0.601501 +vn 0.752519 0.452375 0.478616 +v 0.757935 0.453991 0.468430 +vn 0.594338 0.708317 0.380854 +v 0.601501 0.707107 0.371748 +vn 0.478615 0.752519 0.452375 +v 0.468430 0.757935 0.453991 +vn -0.594338 0.708317 0.380854 +v -0.601501 0.707107 0.371748 +vn -0.478615 0.752519 0.452375 +v -0.468430 0.757935 0.453991 +vn -0.752519 0.452375 0.478615 +v -0.757935 0.453991 0.468430 +vn -0.708317 0.380854 0.594338 +v -0.707107 0.371748 0.601501 +vn -0.452375 0.478616 0.752519 +v -0.453991 0.468430 0.757935 +vn -0.380854 0.594338 0.708317 +v -0.371748 0.601501 0.707107 +vn 0.594338 0.708317 -0.380854 +v 0.601501 0.707107 -0.371748 +vn 0.478615 0.752519 -0.452375 +v 0.468430 0.757935 -0.453991 +vn 0.752519 0.452375 -0.478615 +v 0.757935 0.453991 -0.468430 +vn 0.708317 0.380854 -0.594338 +v 0.707107 0.371748 -0.601501 +vn 0.452375 0.478616 -0.752519 +v 0.453991 0.468430 -0.757935 +vn 0.380854 0.594338 -0.708317 +v 0.371748 0.601501 -0.707107 +vn -0.452375 0.478615 -0.752519 +v -0.453991 0.468430 -0.757935 +vn -0.380854 0.594338 -0.708317 +v -0.371748 0.601501 -0.707107 +vn -0.708317 0.380854 -0.594338 +v -0.707107 0.371748 -0.601501 +vn -0.752519 0.452375 -0.478616 +v -0.757935 0.453991 -0.468430 +vn -0.594338 0.708317 -0.380854 +v -0.601501 0.707107 -0.371748 +vn -0.478615 0.752519 -0.452375 +v -0.468430 0.757935 -0.453991 +vn 0.594338 -0.708317 0.380854 +v 0.601501 -0.707107 0.371748 +vn 0.478615 -0.752519 0.452375 +v 0.468430 -0.757935 0.453991 +vn 0.752519 -0.452375 0.478615 +v 0.757935 -0.453991 0.468430 +vn 0.708317 -0.380854 0.594338 +v 0.707107 -0.371748 0.601501 +vn 0.452375 -0.478616 0.752519 +v 0.453991 -0.468430 0.757935 +vn 0.380854 -0.594338 0.708317 +v 0.371748 -0.601501 0.707107 +vn -0.452375 -0.478615 0.752519 +v -0.453991 -0.468430 0.757935 +vn -0.380854 -0.594338 0.708317 +v -0.371748 -0.601501 0.707107 +vn -0.708317 -0.380854 0.594338 +v -0.707107 -0.371748 0.601501 +vn -0.752519 -0.452375 0.478616 +v -0.757935 -0.453991 0.468430 +vn -0.594338 -0.708317 0.380854 +v -0.601501 -0.707107 0.371748 +vn -0.478615 -0.752519 0.452375 +v -0.468430 -0.757935 0.453991 +vn 0.452375 -0.478615 -0.752519 +v 0.453991 -0.468430 -0.757935 +vn 0.380854 -0.594338 -0.708317 +v 0.371748 -0.601501 -0.707107 +vn 0.708317 -0.380854 -0.594338 +v 0.707107 -0.371748 -0.601501 +vn 0.752519 -0.452375 -0.478616 +v 0.757935 -0.453991 -0.468430 +vn 0.594338 -0.708317 -0.380854 +v 0.601501 -0.707107 -0.371748 +vn 0.478615 -0.752519 -0.452375 +v 0.468430 -0.757935 -0.453991 +vn -0.594338 -0.708317 -0.380854 +v -0.601501 -0.707107 -0.371748 +vn -0.478615 -0.752519 -0.452375 +v -0.468430 -0.757935 -0.453991 +vn -0.752519 -0.452375 -0.478615 +v -0.757935 -0.453991 -0.468430 +vn -0.708317 -0.380854 -0.594338 +v -0.707107 -0.371748 -0.601501 +vn -0.452375 -0.478616 -0.752519 +v -0.453991 -0.468430 -0.757935 +vn -0.380854 -0.594338 -0.708317 +v -0.371748 -0.601501 -0.707107 +vn 0.000000 0.911683 -0.410894 +v 0.000000 0.915043 -0.403355 +vn 0.123422 0.864540 -0.487173 +v 0.131200 0.864929 -0.484442 +vn 0.000000 0.989737 -0.142900 +v 0.000000 0.990439 -0.137952 +vn 0.379260 0.844873 -0.377296 +v 0.383614 0.843911 -0.375039 +vn 0.000000 0.989737 0.142900 +v 0.000000 0.990439 0.137952 +vn -0.000000 0.911683 0.410894 +v 0.000000 0.915043 0.403355 +vn 0.123422 0.864540 0.487173 +v 0.131200 0.864929 0.484442 +vn 0.379260 0.844873 0.377296 +v 0.383614 0.843911 0.375039 +vn 0.610477 0.756555 -0.234396 +v 0.606825 0.758652 -0.237086 +vn 0.610477 0.756555 0.234396 +v 0.606825 0.758652 0.237086 +vn 0.788262 0.610594 0.076279 +v 0.783843 0.615642 0.081086 +vn 0.788262 0.610594 -0.076279 +v 0.783843 0.615642 -0.081086 +vn -0.123422 0.864540 0.487173 +v -0.131200 0.864929 0.484442 +vn -0.379260 0.844873 0.377296 +v -0.383614 0.843911 0.375039 +vn -0.123422 0.864540 -0.487173 +v -0.131200 0.864929 -0.484442 +vn -0.379260 0.844873 -0.377296 +v -0.383614 0.843911 -0.375039 +vn -0.610477 0.756555 0.234396 +v -0.606825 0.758652 0.237086 +vn -0.610477 0.756555 -0.234396 +v -0.606825 0.758652 -0.237086 +vn -0.788262 0.610594 -0.076279 +v -0.783843 0.615642 -0.081086 +vn -0.788262 0.610594 0.076279 +v -0.783843 0.615642 0.081086 +vn 0.000000 -0.911683 0.410894 +v 0.000000 -0.915043 0.403355 +vn 0.123422 -0.864540 0.487173 +v 0.131200 -0.864929 0.484442 +vn 0.000000 -0.989737 0.142900 +v 0.000000 -0.990439 0.137952 +vn 0.379260 -0.844873 0.377296 +v 0.383614 -0.843911 0.375039 +vn 0.000000 -0.989737 -0.142900 +v 0.000000 -0.990439 -0.137952 +vn -0.000000 -0.911683 -0.410894 +v 0.000000 -0.915043 -0.403355 +vn 0.123422 -0.864540 -0.487173 +v 0.131200 -0.864929 -0.484442 +vn 0.379260 -0.844873 -0.377296 +v 0.383614 -0.843911 -0.375039 +vn 0.610477 -0.756555 0.234396 +v 0.606825 -0.758652 0.237086 +vn 0.610477 -0.756555 -0.234396 +v 0.606825 -0.758652 -0.237086 +vn 0.788262 -0.610594 -0.076279 +v 0.783843 -0.615642 -0.081086 +vn 0.788262 -0.610594 0.076279 +v 0.783843 -0.615642 0.081086 +vn -0.123422 -0.864540 -0.487173 +v -0.131200 -0.864929 -0.484442 +vn -0.379260 -0.844873 -0.377296 +v -0.383614 -0.843911 -0.375039 +vn -0.123422 -0.864540 0.487173 +v -0.131200 -0.864929 0.484442 +vn -0.379260 -0.844873 0.377296 +v -0.383614 -0.843911 0.375039 +vn -0.610477 -0.756555 -0.234396 +v -0.606825 -0.758652 -0.237086 +vn -0.610477 -0.756555 0.234396 +v -0.606825 -0.758652 0.237086 +vn -0.788262 -0.610594 0.076279 +v -0.783843 -0.615642 0.081086 +vn -0.788262 -0.610594 -0.076279 +v -0.783843 -0.615642 -0.081086 +vn 0.911683 0.410894 -0.000000 +v 0.915043 0.403355 0.000000 +vn 0.864540 0.487172 -0.123422 +v 0.864929 0.484442 -0.131200 +vn 0.989737 0.142900 0.000000 +v 0.990439 0.137952 0.000000 +vn 0.844873 0.377296 -0.379260 +v 0.843911 0.375039 -0.383614 +vn 0.989737 -0.142900 -0.000000 +v 0.990439 -0.137952 0.000000 +vn 0.911683 -0.410894 0.000000 +v 0.915043 -0.403355 0.000000 +vn 0.864540 -0.487173 -0.123422 +v 0.864929 -0.484442 -0.131200 +vn 0.844873 -0.377296 -0.379260 +v 0.843911 -0.375039 -0.383614 +vn 0.756556 0.234396 -0.610477 +v 0.758652 0.237086 -0.606825 +vn 0.756556 -0.234396 -0.610477 +v 0.758652 -0.237086 -0.606825 +vn 0.610594 -0.076279 -0.788262 +v 0.615642 -0.081086 -0.783843 +vn 0.610594 0.076279 -0.788262 +v 0.615642 0.081086 -0.783843 +vn 0.864540 -0.487172 0.123422 +v 0.864929 -0.484442 0.131200 +vn 0.844873 -0.377296 0.379260 +v 0.843911 -0.375039 0.383614 +vn 0.864540 0.487173 0.123422 +v 0.864929 0.484442 0.131200 +vn 0.844873 0.377296 0.379260 +v 0.843911 0.375039 0.383614 +vn 0.756556 -0.234396 0.610477 +v 0.758652 -0.237086 0.606825 +vn 0.756556 0.234396 0.610477 +v 0.758652 0.237086 0.606825 +vn 0.610594 0.076279 0.788262 +v 0.615642 0.081086 0.783843 +vn 0.610594 -0.076279 0.788262 +v 0.615642 -0.081086 0.783843 +vn -0.911683 0.410894 0.000000 +v -0.915043 0.403355 0.000000 +vn -0.864540 0.487172 0.123422 +v -0.864929 0.484442 0.131200 +vn -0.989737 0.142900 0.000000 +v -0.990439 0.137952 0.000000 +vn -0.844873 0.377296 0.379260 +v -0.843911 0.375039 0.383614 +vn -0.989737 -0.142900 0.000000 +v -0.990439 -0.137952 0.000000 +vn -0.911683 -0.410894 -0.000000 +v -0.915043 -0.403355 0.000000 +vn -0.864540 -0.487173 0.123422 +v -0.864929 -0.484442 0.131200 +vn -0.844873 -0.377296 0.379260 +v -0.843911 -0.375039 0.383614 +vn -0.756556 0.234396 0.610477 +v -0.758652 0.237086 0.606825 +vn -0.756556 -0.234396 0.610477 +v -0.758652 -0.237086 0.606825 +vn -0.610594 -0.076279 0.788262 +v -0.615642 -0.081086 0.783843 +vn -0.610594 0.076279 0.788262 +v -0.615642 0.081086 0.783843 +vn -0.864540 -0.487172 -0.123422 +v -0.864929 -0.484442 -0.131200 +vn -0.844873 -0.377296 -0.379260 +v -0.843911 -0.375039 -0.383614 +vn -0.864540 0.487173 -0.123422 +v -0.864929 0.484442 -0.131200 +vn -0.844873 0.377296 -0.379260 +v -0.843911 0.375039 -0.383614 +vn -0.756556 -0.234396 -0.610477 +v -0.758652 -0.237086 -0.606825 +vn -0.756556 0.234396 -0.610477 +v -0.758652 0.237086 -0.606825 +vn -0.610594 0.076279 -0.788262 +v -0.615642 0.081086 -0.783843 +vn -0.610594 -0.076279 -0.788262 +v -0.615642 -0.081086 -0.783843 +vn 0.410894 -0.000000 0.911683 +v 0.403355 0.000000 0.915043 +vn 0.487173 -0.123422 0.864540 +v 0.484442 -0.131200 0.864929 +vn 0.142900 0.000000 0.989737 +v 0.137952 0.000000 0.990439 +vn 0.377296 -0.379260 0.844873 +v 0.375039 -0.383614 0.843911 +vn -0.142900 -0.000000 0.989737 +v -0.137952 0.000000 0.990439 +vn -0.410894 0.000000 0.911683 +v -0.403355 0.000000 0.915043 +vn -0.487173 -0.123422 0.864540 +v -0.484442 -0.131200 0.864929 +vn -0.377296 -0.379260 0.844873 +v -0.375039 -0.383614 0.843911 +vn 0.234396 -0.610477 0.756556 +v 0.237086 -0.606825 0.758652 +vn -0.234396 -0.610477 0.756556 +v -0.237086 -0.606825 0.758652 +vn -0.076279 -0.788262 0.610594 +v -0.081086 -0.783843 0.615642 +vn 0.076279 -0.788262 0.610594 +v 0.081086 -0.783843 0.615642 +vn -0.487173 0.123422 0.864540 +v -0.484442 0.131200 0.864929 +vn -0.377296 0.379260 0.844873 +v -0.375039 0.383614 0.843911 +vn 0.487173 0.123422 0.864540 +v 0.484442 0.131200 0.864929 +vn 0.377296 0.379260 0.844873 +v 0.375039 0.383614 0.843911 +vn -0.234396 0.610477 0.756556 +v -0.237086 0.606825 0.758652 +vn 0.234396 0.610477 0.756556 +v 0.237086 0.606825 0.758652 +vn 0.076279 0.788262 0.610594 +v 0.081086 0.783843 0.615642 +vn -0.076279 0.788262 0.610594 +v -0.081086 0.783843 0.615642 +vn 0.410894 0.000000 -0.911683 +v 0.403355 0.000000 -0.915043 +vn 0.487173 0.123422 -0.864540 +v 0.484442 0.131200 -0.864929 +vn 0.142900 0.000000 -0.989737 +v 0.137952 0.000000 -0.990439 +vn 0.377296 0.379260 -0.844873 +v 0.375039 0.383614 -0.843911 +vn -0.142900 0.000000 -0.989737 +v -0.137952 0.000000 -0.990439 +vn -0.410894 -0.000000 -0.911683 +v -0.403355 0.000000 -0.915043 +vn -0.487173 0.123422 -0.864540 +v -0.484442 0.131200 -0.864929 +vn -0.377296 0.379260 -0.844873 +v -0.375039 0.383614 -0.843911 +vn 0.234396 0.610477 -0.756556 +v 0.237086 0.606825 -0.758652 +vn -0.234396 0.610477 -0.756556 +v -0.237086 0.606825 -0.758652 +vn -0.076279 0.788262 -0.610594 +v -0.081086 0.783843 -0.615642 +vn 0.076279 0.788262 -0.610594 +v 0.081086 0.783843 -0.615642 +vn -0.487173 -0.123422 -0.864540 +v -0.484442 -0.131200 -0.864929 +vn -0.377296 -0.379260 -0.844873 +v -0.375039 -0.383614 -0.843911 +vn 0.487173 -0.123422 -0.864540 +v 0.484442 -0.131200 -0.864929 +vn 0.377296 -0.379260 -0.844873 +v 0.375039 -0.383614 -0.843911 +vn -0.234396 -0.610477 -0.756556 +v -0.237086 -0.606825 -0.758652 +vn 0.234396 -0.610477 -0.756556 +v 0.237086 -0.606825 -0.758652 +vn 0.076279 -0.788262 -0.610594 +v 0.081086 -0.783843 -0.615642 +vn -0.076279 -0.788262 -0.610594 +v -0.081086 -0.783843 -0.615642 +# 642 vertices, 0 vertices normals + +f 163//163 164//164 165//165 +f 166//166 167//167 168//168 +f 169//169 170//170 171//171 +f 172//172 173//173 174//174 +f 175//175 176//176 177//177 +f 178//178 179//179 180//180 +f 181//181 182//182 183//183 +f 184//184 185//185 186//186 +f 187//187 188//188 189//189 +f 190//190 191//191 192//192 +f 193//193 194//194 195//195 +f 196//196 197//197 198//198 +f 199//199 200//200 201//201 +f 202//202 203//203 204//204 +f 205//205 206//206 207//207 +f 208//208 209//209 210//210 +f 211//211 212//212 213//213 +f 214//214 215//215 216//216 +f 217//217 218//218 219//219 +f 220//220 221//221 222//222 +f 223//223 224//224 225//225 +f 226//226 227//227 228//228 +f 229//229 230//230 231//231 +f 232//232 233//233 234//234 +f 235//235 236//236 237//237 +f 238//238 239//239 240//240 +f 241//241 242//242 243//243 +f 244//244 245//245 246//246 +f 247//247 248//248 249//249 +f 250//250 251//251 252//252 +f 253//253 254//254 255//255 +f 256//256 257//257 258//258 +f 259//259 260//260 261//261 +f 262//262 263//263 264//264 +f 265//265 266//266 267//267 +f 268//268 269//269 270//270 +f 271//271 272//272 273//273 +f 274//274 275//275 276//276 +f 277//277 278//278 279//279 +f 280//280 281//281 282//282 +f 283//283 284//284 285//285 +f 286//286 287//287 288//288 +f 289//289 290//290 291//291 +f 292//292 293//293 294//294 +f 295//295 296//296 297//297 +f 298//298 299//299 300//300 +f 301//301 302//302 303//303 +f 304//304 305//305 306//306 +f 307//307 308//308 309//309 +f 310//310 311//311 312//312 +f 313//313 314//314 315//315 +f 316//316 317//317 318//318 +f 319//319 320//320 321//321 +f 322//322 323//323 324//324 +f 325//325 326//326 327//327 +f 328//328 329//329 330//330 +f 331//331 332//332 333//333 +f 334//334 335//335 336//336 +f 337//337 338//338 339//339 +f 340//340 341//341 342//342 +f 343//343 344//344 345//345 +f 346//346 347//347 348//348 +f 349//349 350//350 351//351 +f 352//352 353//353 354//354 +f 355//355 356//356 357//357 +f 358//358 359//359 360//360 +f 361//361 362//362 363//363 +f 364//364 365//365 366//366 +f 367//367 368//368 369//369 +f 370//370 371//371 372//372 +f 373//373 374//374 375//375 +f 376//376 377//377 378//378 +f 379//379 380//380 381//381 +f 382//382 383//383 384//384 +f 385//385 386//386 387//387 +f 388//388 389//389 390//390 +f 391//391 392//392 393//393 +f 394//394 395//395 396//396 +f 397//397 398//398 399//399 +f 400//400 401//401 402//402 +f 403//403 165//165 404//404 +f 405//405 406//406 163//163 +f 164//164 407//407 408//408 +f 409//409 168//168 410//410 +f 411//411 412//412 166//166 +f 167//167 413//413 414//414 +f 415//415 171//171 416//416 +f 417//417 418//418 169//169 +f 170//170 419//419 420//420 +f 421//421 174//174 422//422 +f 423//423 424//424 172//172 +f 173//173 425//425 426//426 +f 427//427 177//177 428//428 +f 429//429 430//430 175//175 +f 176//176 431//431 432//432 +f 433//433 180//180 434//434 +f 435//435 436//436 178//178 +f 179//179 437//437 438//438 +f 439//439 183//183 440//440 +f 441//441 442//442 181//181 +f 182//182 443//443 444//444 +f 445//445 186//186 446//446 +f 447//447 448//448 184//184 +f 185//185 449//449 450//450 +f 451//451 189//189 452//452 +f 453//453 454//454 187//187 +f 188//188 455//455 456//456 +f 457//457 192//192 458//458 +f 459//459 460//460 190//190 +f 191//191 461//461 462//462 +f 463//463 195//195 464//464 +f 465//465 466//466 193//193 +f 194//194 467//467 468//468 +f 469//469 198//198 470//470 +f 471//471 472//472 196//196 +f 197//197 473//473 474//474 +f 475//475 201//201 476//476 +f 477//477 478//478 199//199 +f 200//200 479//479 480//480 +f 481//481 204//204 482//482 +f 483//483 484//484 202//202 +f 203//203 485//485 486//486 +f 487//487 207//207 488//488 +f 489//489 490//490 205//205 +f 206//206 491//491 492//492 +f 493//493 210//210 494//494 +f 495//495 496//496 208//208 +f 209//209 497//497 498//498 +f 499//499 213//213 500//500 +f 501//501 502//502 211//211 +f 212//212 503//503 504//504 +f 505//505 216//216 506//506 +f 507//507 508//508 214//214 +f 215//215 509//509 510//510 +f 511//511 219//219 512//512 +f 513//513 514//514 217//217 +f 218//218 515//515 516//516 +f 517//517 222//222 518//518 +f 519//519 520//520 220//220 +f 221//221 521//521 522//522 +f 523//523 225//225 524//524 +f 525//525 404//404 223//223 +f 224//224 408//408 526//526 +f 527//527 228//228 403//403 +f 528//528 529//529 226//226 +f 227//227 530//530 405//405 +f 407//407 231//231 531//531 +f 406//406 532//532 229//229 +f 230//230 533//533 534//534 +f 528//528 234//234 535//535 +f 527//527 410//410 232//232 +f 233//233 414//414 536//536 +f 525//525 237//237 409//409 +f 523//523 537//537 235//235 +f 236//236 538//538 411//411 +f 413//413 240//240 539//539 +f 412//412 540//540 238//238 +f 239//239 541//541 542//542 +f 543//543 243//243 544//544 +f 545//545 416//416 241//241 +f 242//242 420//420 546//546 +f 547//547 246//246 415//415 +f 548//548 549//549 244//244 +f 245//245 550//550 417//417 +f 419//419 249//249 551//551 +f 418//418 552//552 247//247 +f 248//248 553//553 554//554 +f 548//548 252//252 555//555 +f 547//547 422//422 250//250 +f 251//251 426//426 556//556 +f 545//545 255//255 421//421 +f 543//543 557//557 253//253 +f 254//254 558//558 423//423 +f 425//425 258//258 559//559 +f 424//424 560//560 256//256 +f 257//257 561//561 562//562 +f 563//563 261//261 564//564 +f 565//565 428//428 259//259 +f 260//260 432//432 566//566 +f 567//567 264//264 427//427 +f 568//568 569//569 262//262 +f 263//263 570//570 429//429 +f 431//431 267//267 571//571 +f 430//430 572//572 265//265 +f 266//266 573//573 574//574 +f 568//568 270//270 575//575 +f 567//567 434//434 268//268 +f 269//269 438//438 576//576 +f 565//565 273//273 433//433 +f 563//563 577//577 271//271 +f 272//272 578//578 435//435 +f 437//437 276//276 579//579 +f 436//436 580//580 274//274 +f 275//275 581//581 582//582 +f 583//583 279//279 584//584 +f 585//585 440//440 277//277 +f 278//278 444//444 586//586 +f 587//587 282//282 439//439 +f 588//588 589//589 280//280 +f 281//281 590//590 441//441 +f 443//443 285//285 591//591 +f 442//442 592//592 283//283 +f 284//284 593//593 594//594 +f 588//588 288//288 595//595 +f 587//587 446//446 286//286 +f 287//287 450//450 596//596 +f 585//585 291//291 445//445 +f 583//583 597//597 289//289 +f 290//290 598//598 447//447 +f 449//449 294//294 599//599 +f 448//448 600//600 292//292 +f 293//293 601//601 602//602 +f 603//603 297//297 604//604 +f 605//605 452//452 295//295 +f 296//296 456//456 606//606 +f 607//607 300//300 451//451 +f 608//608 609//609 298//298 +f 299//299 610//610 453//453 +f 455//455 303//303 611//611 +f 454//454 612//612 301//301 +f 302//302 613//613 614//614 +f 608//608 306//306 615//615 +f 607//607 458//458 304//304 +f 305//305 462//462 616//616 +f 605//605 309//309 457//457 +f 603//603 617//617 307//307 +f 308//308 618//618 459//459 +f 461//461 312//312 619//619 +f 460//460 620//620 310//310 +f 311//311 621//621 622//622 +f 623//623 315//315 624//624 +f 625//625 464//464 313//313 +f 314//314 468//468 626//626 +f 627//627 318//318 463//463 +f 628//628 629//629 316//316 +f 317//317 630//630 465//465 +f 467//467 321//321 631//631 +f 466//466 632//632 319//319 +f 320//320 633//633 634//634 +f 628//628 324//324 635//635 +f 627//627 470//470 322//322 +f 323//323 474//474 636//636 +f 625//625 327//327 469//469 +f 623//623 637//637 325//325 +f 326//326 638//638 471//471 +f 473//473 330//330 639//639 +f 472//472 640//640 328//328 +f 329//329 641//641 642//642 +f 621//621 333//333 529//529 +f 620//620 476//476 331//331 +f 332//332 480//480 530//530 +f 618//618 336//336 475//475 +f 617//617 581//581 334//334 +f 335//335 580//580 477//477 +f 479//479 339//339 532//532 +f 478//478 578//578 337//337 +f 338//338 577//577 533//533 +f 535//535 342//342 622//622 +f 536//536 482//482 340//340 +f 341//341 486//486 619//619 +f 539//539 345//345 481//481 +f 542//542 584//584 343//343 +f 344//344 586//586 483//483 +f 485//485 348//348 616//616 +f 484//484 591//591 346//346 +f 347//347 594//594 615//615 +f 524//524 351//351 634//634 +f 526//526 488//488 349//349 +f 350//350 492//492 631//631 +f 531//531 354//354 487//487 +f 534//534 564//564 352//352 +f 353//353 566//566 489//489 +f 491//491 357//357 626//626 +f 490//490 571//571 355//355 +f 356//356 574//574 624//624 +f 633//633 360//360 537//537 +f 632//632 494//494 358//358 +f 359//359 498//498 538//538 +f 630//630 363//363 493//493 +f 629//629 601//601 361//361 +f 362//362 600//600 495//495 +f 497//497 366//366 540//540 +f 496//496 598//598 364//364 +f 365//365 597//597 541//541 +f 544//544 369//369 614//614 +f 546//546 500//500 367//367 +f 368//368 504//504 611//611 +f 551//551 372//372 499//499 +f 554//554 575//575 370//370 +f 371//371 576//576 501//501 +f 503//503 375//375 606//606 +f 502//502 579//579 373//373 +f 374//374 582//582 604//604 +f 613//613 378//378 557//557 +f 612//612 506//506 376//376 +f 377//377 510//510 558//558 +f 610//610 381//381 505//505 +f 609//609 593//593 379//379 +f 380//380 592//592 507//507 +f 509//509 384//384 560//560 +f 508//508 590//590 382//382 +f 383//383 589//589 561//561 +f 641//641 387//387 549//549 +f 640//640 512//512 385//385 +f 386//386 516//516 550//550 +f 638//638 390//390 511//511 +f 637//637 573//573 388//388 +f 389//389 572//572 513//513 +f 515//515 393//393 552//552 +f 514//514 570//570 391//391 +f 392//392 569//569 553//553 +f 555//555 396//396 642//642 +f 556//556 518//518 394//394 +f 395//395 522//522 639//639 +f 559//559 399//399 517//517 +f 562//562 595//595 397//397 +f 398//398 596//596 519//519 +f 521//521 402//402 636//636 +f 520//520 599//599 400//400 +f 401//401 602//602 635//635 +f 43//43 163//163 165//165 +f 163//163 44//44 164//164 +f 165//165 164//164 45//45 +f 46//46 166//166 168//168 +f 166//166 47//47 167//167 +f 168//168 167//167 48//48 +f 49//49 169//169 171//171 +f 169//169 50//50 170//170 +f 171//171 170//170 51//51 +f 52//52 172//172 174//174 +f 172//172 53//53 173//173 +f 174//174 173//173 54//54 +f 55//55 175//175 177//177 +f 175//175 56//56 176//176 +f 177//177 176//176 57//57 +f 58//58 178//178 180//180 +f 178//178 59//59 179//179 +f 180//180 179//179 60//60 +f 61//61 181//181 183//183 +f 181//181 62//62 182//182 +f 183//183 182//182 63//63 +f 64//64 184//184 186//186 +f 184//184 65//65 185//185 +f 186//186 185//185 66//66 +f 67//67 187//187 189//189 +f 187//187 68//68 188//188 +f 189//189 188//188 69//69 +f 70//70 190//190 192//192 +f 190//190 71//71 191//191 +f 192//192 191//191 72//72 +f 73//73 193//193 195//195 +f 193//193 74//74 194//194 +f 195//195 194//194 75//75 +f 76//76 196//196 198//198 +f 196//196 77//77 197//197 +f 198//198 197//197 78//78 +f 79//79 199//199 201//201 +f 199//199 80//80 200//200 +f 201//201 200//200 81//81 +f 82//82 202//202 204//204 +f 202//202 83//83 203//203 +f 204//204 203//203 84//84 +f 85//85 205//205 207//207 +f 205//205 86//86 206//206 +f 207//207 206//206 87//87 +f 88//88 208//208 210//210 +f 208//208 89//89 209//209 +f 210//210 209//209 90//90 +f 91//91 211//211 213//213 +f 211//211 92//92 212//212 +f 213//213 212//212 93//93 +f 94//94 214//214 216//216 +f 214//214 95//95 215//215 +f 216//216 215//215 96//96 +f 97//97 217//217 219//219 +f 217//217 98//98 218//218 +f 219//219 218//218 99//99 +f 100//100 220//220 222//222 +f 220//220 101//101 221//221 +f 222//222 221//221 102//102 +f 103//103 223//223 225//225 +f 223//223 45//45 224//224 +f 225//225 224//224 104//104 +f 105//105 226//226 228//228 +f 226//226 106//106 227//227 +f 228//228 227//227 43//43 +f 44//44 229//229 231//231 +f 229//229 107//107 230//230 +f 231//231 230//230 108//108 +f 105//105 232//232 234//234 +f 232//232 48//48 233//233 +f 234//234 233//233 109//109 +f 103//103 235//235 237//237 +f 235//235 110//110 236//236 +f 237//237 236//236 46//46 +f 47//47 238//238 240//240 +f 238//238 111//111 239//239 +f 240//240 239//239 112//112 +f 113//113 241//241 243//243 +f 241//241 51//51 242//242 +f 243//243 242//242 114//114 +f 115//115 244//244 246//246 +f 244//244 116//116 245//245 +f 246//246 245//245 49//49 +f 50//50 247//247 249//249 +f 247//247 117//117 248//248 +f 249//249 248//248 118//118 +f 115//115 250//250 252//252 +f 250//250 54//54 251//251 +f 252//252 251//251 119//119 +f 113//113 253//253 255//255 +f 253//253 120//120 254//254 +f 255//255 254//254 52//52 +f 53//53 256//256 258//258 +f 256//256 121//121 257//257 +f 258//258 257//257 122//122 +f 123//123 259//259 261//261 +f 259//259 57//57 260//260 +f 261//261 260//260 124//124 +f 125//125 262//262 264//264 +f 262//262 126//126 263//263 +f 264//264 263//263 55//55 +f 56//56 265//265 267//267 +f 265//265 127//127 266//266 +f 267//267 266//266 128//128 +f 125//125 268//268 270//270 +f 268//268 60//60 269//269 +f 270//270 269//269 129//129 +f 123//123 271//271 273//273 +f 271//271 130//130 272//272 +f 273//273 272//272 58//58 +f 59//59 274//274 276//276 +f 274//274 131//131 275//275 +f 276//276 275//275 132//132 +f 133//133 277//277 279//279 +f 277//277 63//63 278//278 +f 279//279 278//278 134//134 +f 135//135 280//280 282//282 +f 280//280 136//136 281//281 +f 282//282 281//281 61//61 +f 62//62 283//283 285//285 +f 283//283 137//137 284//284 +f 285//285 284//284 138//138 +f 135//135 286//286 288//288 +f 286//286 66//66 287//287 +f 288//288 287//287 139//139 +f 133//133 289//289 291//291 +f 289//289 140//140 290//290 +f 291//291 290//290 64//64 +f 65//65 292//292 294//294 +f 292//292 141//141 293//293 +f 294//294 293//293 142//142 +f 143//143 295//295 297//297 +f 295//295 69//69 296//296 +f 297//297 296//296 144//144 +f 145//145 298//298 300//300 +f 298//298 146//146 299//299 +f 300//300 299//299 67//67 +f 68//68 301//301 303//303 +f 301//301 147//147 302//302 +f 303//303 302//302 148//148 +f 145//145 304//304 306//306 +f 304//304 72//72 305//305 +f 306//306 305//305 149//149 +f 143//143 307//307 309//309 +f 307//307 150//150 308//308 +f 309//309 308//308 70//70 +f 71//71 310//310 312//312 +f 310//310 151//151 311//311 +f 312//312 311//311 152//152 +f 153//153 313//313 315//315 +f 313//313 75//75 314//314 +f 315//315 314//314 154//154 +f 155//155 316//316 318//318 +f 316//316 156//156 317//317 +f 318//318 317//317 73//73 +f 74//74 319//319 321//321 +f 319//319 157//157 320//320 +f 321//321 320//320 158//158 +f 155//155 322//322 324//324 +f 322//322 78//78 323//323 +f 324//324 323//323 159//159 +f 153//153 325//325 327//327 +f 325//325 160//160 326//326 +f 327//327 326//326 76//76 +f 77//77 328//328 330//330 +f 328//328 161//161 329//329 +f 330//330 329//329 162//162 +f 151//151 331//331 333//333 +f 331//331 81//81 332//332 +f 333//333 332//332 106//106 +f 150//150 334//334 336//336 +f 334//334 131//131 335//335 +f 336//336 335//335 79//79 +f 80//80 337//337 339//339 +f 337//337 130//130 338//338 +f 339//339 338//338 107//107 +f 109//109 340//340 342//342 +f 340//340 84//84 341//341 +f 342//342 341//341 152//152 +f 112//112 343//343 345//345 +f 343//343 134//134 344//344 +f 345//345 344//344 82//82 +f 83//83 346//346 348//348 +f 346//346 138//138 347//347 +f 348//348 347//347 149//149 +f 104//104 349//349 351//351 +f 349//349 87//87 350//350 +f 351//351 350//350 158//158 +f 108//108 352//352 354//354 +f 352//352 124//124 353//353 +f 354//354 353//353 85//85 +f 86//86 355//355 357//357 +f 355//355 128//128 356//356 +f 357//357 356//356 154//154 +f 157//157 358//358 360//360 +f 358//358 90//90 359//359 +f 360//360 359//359 110//110 +f 156//156 361//361 363//363 +f 361//361 141//141 362//362 +f 363//363 362//362 88//88 +f 89//89 364//364 366//366 +f 364//364 140//140 365//365 +f 366//366 365//365 111//111 +f 114//114 367//367 369//369 +f 367//367 93//93 368//368 +f 369//369 368//368 148//148 +f 118//118 370//370 372//372 +f 370//370 129//129 371//371 +f 372//372 371//371 91//91 +f 92//92 373//373 375//375 +f 373//373 132//132 374//374 +f 375//375 374//374 144//144 +f 147//147 376//376 378//378 +f 376//376 96//96 377//377 +f 378//378 377//377 120//120 +f 146//146 379//379 381//381 +f 379//379 137//137 380//380 +f 381//381 380//380 94//94 +f 95//95 382//382 384//384 +f 382//382 136//136 383//383 +f 384//384 383//383 121//121 +f 161//161 385//385 387//387 +f 385//385 99//99 386//386 +f 387//387 386//386 116//116 +f 160//160 388//388 390//390 +f 388//388 127//127 389//389 +f 390//390 389//389 97//97 +f 98//98 391//391 393//393 +f 391//391 126//126 392//392 +f 393//393 392//392 117//117 +f 119//119 394//394 396//396 +f 394//394 102//102 395//395 +f 396//396 395//395 162//162 +f 122//122 397//397 399//399 +f 397//397 139//139 398//398 +f 399//399 398//398 100//100 +f 101//101 400//400 402//402 +f 400//400 142//142 401//401 +f 402//402 401//401 159//159 +f 13//13 403//403 404//404 +f 403//403 43//43 165//165 +f 404//404 165//165 45//45 +f 43//43 405//405 163//163 +f 405//405 14//14 406//406 +f 163//163 406//406 44//44 +f 45//45 164//164 408//408 +f 164//164 44//44 407//407 +f 408//408 407//407 15//15 +f 13//13 409//409 410//410 +f 409//409 46//46 168//168 +f 410//410 168//168 48//48 +f 46//46 411//411 166//166 +f 411//411 16//16 412//412 +f 166//166 412//412 47//47 +f 48//48 167//167 414//414 +f 167//167 47//47 413//413 +f 414//414 413//413 17//17 +f 18//18 415//415 416//416 +f 415//415 49//49 171//171 +f 416//416 171//171 51//51 +f 49//49 417//417 169//169 +f 417//417 19//19 418//418 +f 169//169 418//418 50//50 +f 51//51 170//170 420//420 +f 170//170 50//50 419//419 +f 420//420 419//419 20//20 +f 18//18 421//421 422//422 +f 421//421 52//52 174//174 +f 422//422 174//174 54//54 +f 52//52 423//423 172//172 +f 423//423 21//21 424//424 +f 172//172 424//424 53//53 +f 54//54 173//173 426//426 +f 173//173 53//53 425//425 +f 426//426 425//425 22//22 +f 23//23 427//427 428//428 +f 427//427 55//55 177//177 +f 428//428 177//177 57//57 +f 55//55 429//429 175//175 +f 429//429 24//24 430//430 +f 175//175 430//430 56//56 +f 57//57 176//176 432//432 +f 176//176 56//56 431//431 +f 432//432 431//431 25//25 +f 23//23 433//433 434//434 +f 433//433 58//58 180//180 +f 434//434 180//180 60//60 +f 58//58 435//435 178//178 +f 435//435 26//26 436//436 +f 178//178 436//436 59//59 +f 60//60 179//179 438//438 +f 179//179 59//59 437//437 +f 438//438 437//437 27//27 +f 28//28 439//439 440//440 +f 439//439 61//61 183//183 +f 440//440 183//183 63//63 +f 61//61 441//441 181//181 +f 441//441 29//29 442//442 +f 181//181 442//442 62//62 +f 63//63 182//182 444//444 +f 182//182 62//62 443//443 +f 444//444 443//443 30//30 +f 28//28 445//445 446//446 +f 445//445 64//64 186//186 +f 446//446 186//186 66//66 +f 64//64 447//447 184//184 +f 447//447 31//31 448//448 +f 184//184 448//448 65//65 +f 66//66 185//185 450//450 +f 185//185 65//65 449//449 +f 450//450 449//449 32//32 +f 33//33 451//451 452//452 +f 451//451 67//67 189//189 +f 452//452 189//189 69//69 +f 67//67 453//453 187//187 +f 453//453 34//34 454//454 +f 187//187 454//454 68//68 +f 69//69 188//188 456//456 +f 188//188 68//68 455//455 +f 456//456 455//455 35//35 +f 33//33 457//457 458//458 +f 457//457 70//70 192//192 +f 458//458 192//192 72//72 +f 70//70 459//459 190//190 +f 459//459 36//36 460//460 +f 190//190 460//460 71//71 +f 72//72 191//191 462//462 +f 191//191 71//71 461//461 +f 462//462 461//461 37//37 +f 38//38 463//463 464//464 +f 463//463 73//73 195//195 +f 464//464 195//195 75//75 +f 73//73 465//465 193//193 +f 465//465 39//39 466//466 +f 193//193 466//466 74//74 +f 75//75 194//194 468//468 +f 194//194 74//74 467//467 +f 468//468 467//467 40//40 +f 38//38 469//469 470//470 +f 469//469 76//76 198//198 +f 470//470 198//198 78//78 +f 76//76 471//471 196//196 +f 471//471 41//41 472//472 +f 196//196 472//472 77//77 +f 78//78 197//197 474//474 +f 197//197 77//77 473//473 +f 474//474 473//473 42//42 +f 36//36 475//475 476//476 +f 475//475 79//79 201//201 +f 476//476 201//201 81//81 +f 79//79 477//477 199//199 +f 477//477 26//26 478//478 +f 199//199 478//478 80//80 +f 81//81 200//200 480//480 +f 200//200 80//80 479//479 +f 480//480 479//479 14//14 +f 17//17 481//481 482//482 +f 481//481 82//82 204//204 +f 482//482 204//204 84//84 +f 82//82 483//483 202//202 +f 483//483 30//30 484//484 +f 202//202 484//484 83//83 +f 84//84 203//203 486//486 +f 203//203 83//83 485//485 +f 486//486 485//485 37//37 +f 15//15 487//487 488//488 +f 487//487 85//85 207//207 +f 488//488 207//207 87//87 +f 85//85 489//489 205//205 +f 489//489 25//25 490//490 +f 205//205 490//490 86//86 +f 87//87 206//206 492//492 +f 206//206 86//86 491//491 +f 492//492 491//491 40//40 +f 39//39 493//493 494//494 +f 493//493 88//88 210//210 +f 494//494 210//210 90//90 +f 88//88 495//495 208//208 +f 495//495 31//31 496//496 +f 208//208 496//496 89//89 +f 90//90 209//209 498//498 +f 209//209 89//89 497//497 +f 498//498 497//497 16//16 +f 20//20 499//499 500//500 +f 499//499 91//91 213//213 +f 500//500 213//213 93//93 +f 91//91 501//501 211//211 +f 501//501 27//27 502//502 +f 211//211 502//502 92//92 +f 93//93 212//212 504//504 +f 212//212 92//92 503//503 +f 504//504 503//503 35//35 +f 34//34 505//505 506//506 +f 505//505 94//94 216//216 +f 506//506 216//216 96//96 +f 94//94 507//507 214//214 +f 507//507 29//29 508//508 +f 214//214 508//508 95//95 +f 96//96 215//215 510//510 +f 215//215 95//95 509//509 +f 510//510 509//509 21//21 +f 41//41 511//511 512//512 +f 511//511 97//97 219//219 +f 512//512 219//219 99//99 +f 97//97 513//513 217//217 +f 513//513 24//24 514//514 +f 217//217 514//514 98//98 +f 99//99 218//218 516//516 +f 218//218 98//98 515//515 +f 516//516 515//515 19//19 +f 22//22 517//517 518//518 +f 517//517 100//100 222//222 +f 518//518 222//222 102//102 +f 100//100 519//519 220//220 +f 519//519 32//32 520//520 +f 220//220 520//520 101//101 +f 102//102 221//221 522//522 +f 221//221 101//101 521//521 +f 522//522 521//521 42//42 +f 2//2 523//523 524//524 +f 523//523 103//103 225//225 +f 524//524 225//225 104//104 +f 103//103 525//525 223//223 +f 525//525 13//13 404//404 +f 223//223 404//404 45//45 +f 104//104 224//224 526//526 +f 224//224 45//45 408//408 +f 526//526 408//408 15//15 +f 13//13 527//527 403//403 +f 527//527 105//105 228//228 +f 403//403 228//228 43//43 +f 105//105 528//528 226//226 +f 528//528 1//1 529//529 +f 226//226 529//529 106//106 +f 43//43 227//227 405//405 +f 227//227 106//106 530//530 +f 405//405 530//530 14//14 +f 15//15 407//407 531//531 +f 407//407 44//44 231//231 +f 531//531 231//231 108//108 +f 44//44 406//406 229//229 +f 406//406 14//14 532//532 +f 229//229 532//532 107//107 +f 108//108 230//230 534//534 +f 230//230 107//107 533//533 +f 534//534 533//533 5//5 +f 1//1 528//528 535//535 +f 528//528 105//105 234//234 +f 535//535 234//234 109//109 +f 105//105 527//527 232//232 +f 527//527 13//13 410//410 +f 232//232 410//410 48//48 +f 109//109 233//233 536//536 +f 233//233 48//48 414//414 +f 536//536 414//414 17//17 +f 13//13 525//525 409//409 +f 525//525 103//103 237//237 +f 409//409 237//237 46//46 +f 103//103 523//523 235//235 +f 523//523 2//2 537//537 +f 235//235 537//537 110//110 +f 46//46 236//236 411//411 +f 236//236 110//110 538//538 +f 411//411 538//538 16//16 +f 17//17 413//413 539//539 +f 413//413 47//47 240//240 +f 539//539 240//240 112//112 +f 47//47 412//412 238//238 +f 412//412 16//16 540//540 +f 238//238 540//540 111//111 +f 112//112 239//239 542//542 +f 239//239 111//111 541//541 +f 542//542 541//541 7//7 +f 3//3 543//543 544//544 +f 543//543 113//113 243//243 +f 544//544 243//243 114//114 +f 113//113 545//545 241//241 +f 545//545 18//18 416//416 +f 241//241 416//416 51//51 +f 114//114 242//242 546//546 +f 242//242 51//51 420//420 +f 546//546 420//420 20//20 +f 18//18 547//547 415//415 +f 547//547 115//115 246//246 +f 415//415 246//246 49//49 +f 115//115 548//548 244//244 +f 548//548 4//4 549//549 +f 244//244 549//549 116//116 +f 49//49 245//245 417//417 +f 245//245 116//116 550//550 +f 417//417 550//550 19//19 +f 20//20 419//419 551//551 +f 419//419 50//50 249//249 +f 551//551 249//249 118//118 +f 50//50 418//418 247//247 +f 418//418 19//19 552//552 +f 247//247 552//552 117//117 +f 118//118 248//248 554//554 +f 248//248 117//117 553//553 +f 554//554 553//553 6//6 +f 4//4 548//548 555//555 +f 548//548 115//115 252//252 +f 555//555 252//252 119//119 +f 115//115 547//547 250//250 +f 547//547 18//18 422//422 +f 250//250 422//422 54//54 +f 119//119 251//251 556//556 +f 251//251 54//54 426//426 +f 556//556 426//426 22//22 +f 18//18 545//545 421//421 +f 545//545 113//113 255//255 +f 421//421 255//255 52//52 +f 113//113 543//543 253//253 +f 543//543 3//3 557//557 +f 253//253 557//557 120//120 +f 52//52 254//254 423//423 +f 254//254 120//120 558//558 +f 423//423 558//558 21//21 +f 22//22 425//425 559//559 +f 425//425 53//53 258//258 +f 559//559 258//258 122//122 +f 53//53 424//424 256//256 +f 424//424 21//21 560//560 +f 256//256 560//560 121//121 +f 122//122 257//257 562//562 +f 257//257 121//121 561//561 +f 562//562 561//561 8//8 +f 5//5 563//563 564//564 +f 563//563 123//123 261//261 +f 564//564 261//261 124//124 +f 123//123 565//565 259//259 +f 565//565 23//23 428//428 +f 259//259 428//428 57//57 +f 124//124 260//260 566//566 +f 260//260 57//57 432//432 +f 566//566 432//432 25//25 +f 23//23 567//567 427//427 +f 567//567 125//125 264//264 +f 427//427 264//264 55//55 +f 125//125 568//568 262//262 +f 568//568 6//6 569//569 +f 262//262 569//569 126//126 +f 55//55 263//263 429//429 +f 263//263 126//126 570//570 +f 429//429 570//570 24//24 +f 25//25 431//431 571//571 +f 431//431 56//56 267//267 +f 571//571 267//267 128//128 +f 56//56 430//430 265//265 +f 430//430 24//24 572//572 +f 265//265 572//572 127//127 +f 128//128 266//266 574//574 +f 266//266 127//127 573//573 +f 574//574 573//573 11//11 +f 6//6 568//568 575//575 +f 568//568 125//125 270//270 +f 575//575 270//270 129//129 +f 125//125 567//567 268//268 +f 567//567 23//23 434//434 +f 268//268 434//434 60//60 +f 129//129 269//269 576//576 +f 269//269 60//60 438//438 +f 576//576 438//438 27//27 +f 23//23 565//565 433//433 +f 565//565 123//123 273//273 +f 433//433 273//273 58//58 +f 123//123 563//563 271//271 +f 563//563 5//5 577//577 +f 271//271 577//577 130//130 +f 58//58 272//272 435//435 +f 272//272 130//130 578//578 +f 435//435 578//578 26//26 +f 27//27 437//437 579//579 +f 437//437 59//59 276//276 +f 579//579 276//276 132//132 +f 59//59 436//436 274//274 +f 436//436 26//26 580//580 +f 274//274 580//580 131//131 +f 132//132 275//275 582//582 +f 275//275 131//131 581//581 +f 582//582 581//581 9//9 +f 7//7 583//583 584//584 +f 583//583 133//133 279//279 +f 584//584 279//279 134//134 +f 133//133 585//585 277//277 +f 585//585 28//28 440//440 +f 277//277 440//440 63//63 +f 134//134 278//278 586//586 +f 278//278 63//63 444//444 +f 586//586 444//444 30//30 +f 28//28 587//587 439//439 +f 587//587 135//135 282//282 +f 439//439 282//282 61//61 +f 135//135 588//588 280//280 +f 588//588 8//8 589//589 +f 280//280 589//589 136//136 +f 61//61 281//281 441//441 +f 281//281 136//136 590//590 +f 441//441 590//590 29//29 +f 30//30 443//443 591//591 +f 443//443 62//62 285//285 +f 591//591 285//285 138//138 +f 62//62 442//442 283//283 +f 442//442 29//29 592//592 +f 283//283 592//592 137//137 +f 138//138 284//284 594//594 +f 284//284 137//137 593//593 +f 594//594 593//593 10//10 +f 8//8 588//588 595//595 +f 588//588 135//135 288//288 +f 595//595 288//288 139//139 +f 135//135 587//587 286//286 +f 587//587 28//28 446//446 +f 286//286 446//446 66//66 +f 139//139 287//287 596//596 +f 287//287 66//66 450//450 +f 596//596 450//450 32//32 +f 28//28 585//585 445//445 +f 585//585 133//133 291//291 +f 445//445 291//291 64//64 +f 133//133 583//583 289//289 +f 583//583 7//7 597//597 +f 289//289 597//597 140//140 +f 64//64 290//290 447//447 +f 290//290 140//140 598//598 +f 447//447 598//598 31//31 +f 32//32 449//449 599//599 +f 449//449 65//65 294//294 +f 599//599 294//294 142//142 +f 65//65 448//448 292//292 +f 448//448 31//31 600//600 +f 292//292 600//600 141//141 +f 142//142 293//293 602//602 +f 293//293 141//141 601//601 +f 602//602 601//601 12//12 +f 9//9 603//603 604//604 +f 603//603 143//143 297//297 +f 604//604 297//297 144//144 +f 143//143 605//605 295//295 +f 605//605 33//33 452//452 +f 295//295 452//452 69//69 +f 144//144 296//296 606//606 +f 296//296 69//69 456//456 +f 606//606 456//456 35//35 +f 33//33 607//607 451//451 +f 607//607 145//145 300//300 +f 451//451 300//300 67//67 +f 145//145 608//608 298//298 +f 608//608 10//10 609//609 +f 298//298 609//609 146//146 +f 67//67 299//299 453//453 +f 299//299 146//146 610//610 +f 453//453 610//610 34//34 +f 35//35 455//455 611//611 +f 455//455 68//68 303//303 +f 611//611 303//303 148//148 +f 68//68 454//454 301//301 +f 454//454 34//34 612//612 +f 301//301 612//612 147//147 +f 148//148 302//302 614//614 +f 302//302 147//147 613//613 +f 614//614 613//613 3//3 +f 10//10 608//608 615//615 +f 608//608 145//145 306//306 +f 615//615 306//306 149//149 +f 145//145 607//607 304//304 +f 607//607 33//33 458//458 +f 304//304 458//458 72//72 +f 149//149 305//305 616//616 +f 305//305 72//72 462//462 +f 616//616 462//462 37//37 +f 33//33 605//605 457//457 +f 605//605 143//143 309//309 +f 457//457 309//309 70//70 +f 143//143 603//603 307//307 +f 603//603 9//9 617//617 +f 307//307 617//617 150//150 +f 70//70 308//308 459//459 +f 308//308 150//150 618//618 +f 459//459 618//618 36//36 +f 37//37 461//461 619//619 +f 461//461 71//71 312//312 +f 619//619 312//312 152//152 +f 71//71 460//460 310//310 +f 460//460 36//36 620//620 +f 310//310 620//620 151//151 +f 152//152 311//311 622//622 +f 311//311 151//151 621//621 +f 622//622 621//621 1//1 +f 11//11 623//623 624//624 +f 623//623 153//153 315//315 +f 624//624 315//315 154//154 +f 153//153 625//625 313//313 +f 625//625 38//38 464//464 +f 313//313 464//464 75//75 +f 154//154 314//314 626//626 +f 314//314 75//75 468//468 +f 626//626 468//468 40//40 +f 38//38 627//627 463//463 +f 627//627 155//155 318//318 +f 463//463 318//318 73//73 +f 155//155 628//628 316//316 +f 628//628 12//12 629//629 +f 316//316 629//629 156//156 +f 73//73 317//317 465//465 +f 317//317 156//156 630//630 +f 465//465 630//630 39//39 +f 40//40 467//467 631//631 +f 467//467 74//74 321//321 +f 631//631 321//321 158//158 +f 74//74 466//466 319//319 +f 466//466 39//39 632//632 +f 319//319 632//632 157//157 +f 158//158 320//320 634//634 +f 320//320 157//157 633//633 +f 634//634 633//633 2//2 +f 12//12 628//628 635//635 +f 628//628 155//155 324//324 +f 635//635 324//324 159//159 +f 155//155 627//627 322//322 +f 627//627 38//38 470//470 +f 322//322 470//470 78//78 +f 159//159 323//323 636//636 +f 323//323 78//78 474//474 +f 636//636 474//474 42//42 +f 38//38 625//625 469//469 +f 625//625 153//153 327//327 +f 469//469 327//327 76//76 +f 153//153 623//623 325//325 +f 623//623 11//11 637//637 +f 325//325 637//637 160//160 +f 76//76 326//326 471//471 +f 326//326 160//160 638//638 +f 471//471 638//638 41//41 +f 42//42 473//473 639//639 +f 473//473 77//77 330//330 +f 639//639 330//330 162//162 +f 77//77 472//472 328//328 +f 472//472 41//41 640//640 +f 328//328 640//640 161//161 +f 162//162 329//329 642//642 +f 329//329 161//161 641//641 +f 642//642 641//641 4//4 +f 1//1 621//621 529//529 +f 621//621 151//151 333//333 +f 529//529 333//333 106//106 +f 151//151 620//620 331//331 +f 620//620 36//36 476//476 +f 331//331 476//476 81//81 +f 106//106 332//332 530//530 +f 332//332 81//81 480//480 +f 530//530 480//480 14//14 +f 36//36 618//618 475//475 +f 618//618 150//150 336//336 +f 475//475 336//336 79//79 +f 150//150 617//617 334//334 +f 617//617 9//9 581//581 +f 334//334 581//581 131//131 +f 79//79 335//335 477//477 +f 335//335 131//131 580//580 +f 477//477 580//580 26//26 +f 14//14 479//479 532//532 +f 479//479 80//80 339//339 +f 532//532 339//339 107//107 +f 80//80 478//478 337//337 +f 478//478 26//26 578//578 +f 337//337 578//578 130//130 +f 107//107 338//338 533//533 +f 338//338 130//130 577//577 +f 533//533 577//577 5//5 +f 1//1 535//535 622//622 +f 535//535 109//109 342//342 +f 622//622 342//342 152//152 +f 109//109 536//536 340//340 +f 536//536 17//17 482//482 +f 340//340 482//482 84//84 +f 152//152 341//341 619//619 +f 341//341 84//84 486//486 +f 619//619 486//486 37//37 +f 17//17 539//539 481//481 +f 539//539 112//112 345//345 +f 481//481 345//345 82//82 +f 112//112 542//542 343//343 +f 542//542 7//7 584//584 +f 343//343 584//584 134//134 +f 82//82 344//344 483//483 +f 344//344 134//134 586//586 +f 483//483 586//586 30//30 +f 37//37 485//485 616//616 +f 485//485 83//83 348//348 +f 616//616 348//348 149//149 +f 83//83 484//484 346//346 +f 484//484 30//30 591//591 +f 346//346 591//591 138//138 +f 149//149 347//347 615//615 +f 347//347 138//138 594//594 +f 615//615 594//594 10//10 +f 2//2 524//524 634//634 +f 524//524 104//104 351//351 +f 634//634 351//351 158//158 +f 104//104 526//526 349//349 +f 526//526 15//15 488//488 +f 349//349 488//488 87//87 +f 158//158 350//350 631//631 +f 350//350 87//87 492//492 +f 631//631 492//492 40//40 +f 15//15 531//531 487//487 +f 531//531 108//108 354//354 +f 487//487 354//354 85//85 +f 108//108 534//534 352//352 +f 534//534 5//5 564//564 +f 352//352 564//564 124//124 +f 85//85 353//353 489//489 +f 353//353 124//124 566//566 +f 489//489 566//566 25//25 +f 40//40 491//491 626//626 +f 491//491 86//86 357//357 +f 626//626 357//357 154//154 +f 86//86 490//490 355//355 +f 490//490 25//25 571//571 +f 355//355 571//571 128//128 +f 154//154 356//356 624//624 +f 356//356 128//128 574//574 +f 624//624 574//574 11//11 +f 2//2 633//633 537//537 +f 633//633 157//157 360//360 +f 537//537 360//360 110//110 +f 157//157 632//632 358//358 +f 632//632 39//39 494//494 +f 358//358 494//494 90//90 +f 110//110 359//359 538//538 +f 359//359 90//90 498//498 +f 538//538 498//498 16//16 +f 39//39 630//630 493//493 +f 630//630 156//156 363//363 +f 493//493 363//363 88//88 +f 156//156 629//629 361//361 +f 629//629 12//12 601//601 +f 361//361 601//601 141//141 +f 88//88 362//362 495//495 +f 362//362 141//141 600//600 +f 495//495 600//600 31//31 +f 16//16 497//497 540//540 +f 497//497 89//89 366//366 +f 540//540 366//366 111//111 +f 89//89 496//496 364//364 +f 496//496 31//31 598//598 +f 364//364 598//598 140//140 +f 111//111 365//365 541//541 +f 365//365 140//140 597//597 +f 541//541 597//597 7//7 +f 3//3 544//544 614//614 +f 544//544 114//114 369//369 +f 614//614 369//369 148//148 +f 114//114 546//546 367//367 +f 546//546 20//20 500//500 +f 367//367 500//500 93//93 +f 148//148 368//368 611//611 +f 368//368 93//93 504//504 +f 611//611 504//504 35//35 +f 20//20 551//551 499//499 +f 551//551 118//118 372//372 +f 499//499 372//372 91//91 +f 118//118 554//554 370//370 +f 554//554 6//6 575//575 +f 370//370 575//575 129//129 +f 91//91 371//371 501//501 +f 371//371 129//129 576//576 +f 501//501 576//576 27//27 +f 35//35 503//503 606//606 +f 503//503 92//92 375//375 +f 606//606 375//375 144//144 +f 92//92 502//502 373//373 +f 502//502 27//27 579//579 +f 373//373 579//579 132//132 +f 144//144 374//374 604//604 +f 374//374 132//132 582//582 +f 604//604 582//582 9//9 +f 3//3 613//613 557//557 +f 613//613 147//147 378//378 +f 557//557 378//378 120//120 +f 147//147 612//612 376//376 +f 612//612 34//34 506//506 +f 376//376 506//506 96//96 +f 120//120 377//377 558//558 +f 377//377 96//96 510//510 +f 558//558 510//510 21//21 +f 34//34 610//610 505//505 +f 610//610 146//146 381//381 +f 505//505 381//381 94//94 +f 146//146 609//609 379//379 +f 609//609 10//10 593//593 +f 379//379 593//593 137//137 +f 94//94 380//380 507//507 +f 380//380 137//137 592//592 +f 507//507 592//592 29//29 +f 21//21 509//509 560//560 +f 509//509 95//95 384//384 +f 560//560 384//384 121//121 +f 95//95 508//508 382//382 +f 508//508 29//29 590//590 +f 382//382 590//590 136//136 +f 121//121 383//383 561//561 +f 383//383 136//136 589//589 +f 561//561 589//589 8//8 +f 4//4 641//641 549//549 +f 641//641 161//161 387//387 +f 549//549 387//387 116//116 +f 161//161 640//640 385//385 +f 640//640 41//41 512//512 +f 385//385 512//512 99//99 +f 116//116 386//386 550//550 +f 386//386 99//99 516//516 +f 550//550 516//516 19//19 +f 41//41 638//638 511//511 +f 638//638 160//160 390//390 +f 511//511 390//390 97//97 +f 160//160 637//637 388//388 +f 637//637 11//11 573//573 +f 388//388 573//573 127//127 +f 97//97 389//389 513//513 +f 389//389 127//127 572//572 +f 513//513 572//572 24//24 +f 19//19 515//515 552//552 +f 515//515 98//98 393//393 +f 552//552 393//393 117//117 +f 98//98 514//514 391//391 +f 514//514 24//24 570//570 +f 391//391 570//570 126//126 +f 117//117 392//392 553//553 +f 392//392 126//126 569//569 +f 553//553 569//569 6//6 +f 4//4 555//555 642//642 +f 555//555 119//119 396//396 +f 642//642 396//396 162//162 +f 119//119 556//556 394//394 +f 556//556 22//22 518//518 +f 394//394 518//518 102//102 +f 162//162 395//395 639//639 +f 395//395 102//102 522//522 +f 639//639 522//522 42//42 +f 22//22 559//559 517//517 +f 559//559 122//122 399//399 +f 517//517 399//399 100//100 +f 122//122 562//562 397//397 +f 562//562 8//8 595//595 +f 397//397 595//595 139//139 +f 100//100 398//398 519//519 +f 398//398 139//139 596//596 +f 519//519 596//596 32//32 +f 42//42 521//521 636//636 +f 521//521 101//101 402//402 +f 636//636 402//402 159//159 +f 101//101 520//520 400//400 +f 520//520 32//32 599//599 +f 400//400 599//599 142//142 +f 159//159 401//401 635//635 +f 401//401 142//142 602//602 +f 635//635 602//602 12//12 +# 1280 faces, 0 coords texture + +# End of File \ No newline at end of file diff --git a/OcTreeV2/CreateOcTree.py b/OcTreeV2/CreateOcTree.py deleted file mode 100644 index 25f4d33..0000000 --- a/OcTreeV2/CreateOcTree.py +++ /dev/null @@ -1,23 +0,0 @@ -from OcTreeV2.NodeOcTreeV2 import Node - - -def get_octree(objects: [], size_voxel: [], ep: [], is_voxel: bool): - max_size_model = max(*[i[1] - i[0] for i in ep]) - start = Node(None, max_size_model, [point[0] for point in ep], is_voxel) - start.add_objects(objects) - _fill_tree(start, size_voxel) - return start - - -def _fill_tree(node: Node, size_voxel): - """ - Заполнение дерева - :param node: вершина - :param size_voxel: размер вокселя (как минимальный размер вершины) - :return: - """ - if node.Size <= size_voxel or len(node.Objects) <= 1: - return - node.redistribution() - for child in node.Children: - _fill_tree(child, size_voxel) diff --git a/OcTreeV2/NodeOcTreeV2.py b/OcTreeV2/NodeOcTreeV2.py index bdc2747..ee6b5b3 100644 --- a/OcTreeV2/NodeOcTreeV2.py +++ b/OcTreeV2/NodeOcTreeV2.py @@ -1,12 +1,10 @@ class Node: - def __init__(self, parent, size, coordinate: [], track_usage: bool): + def __init__(self, parent, size, coordinate: []): """ :param parent: предок вершины :param size: размер вершины :param coordinate: координаты вершины - :param track_usage: True - в списке objects должны содержаться, помимо координат, bool параметр в значении false. - False - список objects содержит только координаты """ self.Parent = parent self.Size = size @@ -14,27 +12,18 @@ def __init__(self, parent, size, coordinate: [], track_usage: bool): div_size = self.Size / 2 self.BoundingBox = [self.Coordinate[2] + div_size, self.Coordinate[1] + div_size, self.Coordinate[0] + div_size] self.Objects = [] - self.Track_usage = track_usage self.Children = [] def add_objects(self, objects: []): """ - Добавление объектов в вершину и распределение по потомкам и самой вершине + Добавление объектов в вершину и создание потомков :param objects: список объектов :return: """ - self._add_children() - self.Objects = self._distribute(objects) + self.add_children() + self.Objects = objects - def redistribution(self): - """ - Перераспределение объектов в вершине - :return: - """ - self._add_children() - self.Objects = self._distribute(self.Objects) - - def get_location_point(self, point: []): + def get_location_point(self, point: []): # Tested """ Сравнивает положение точки и плоскости :param point: проверяемая точка с координатами [x, y, z] @@ -51,55 +40,20 @@ def get_location_point(self, point: []): res.append(0) return res - def get_crossing_children(self, checked_object: []): - res = [] - for vert in checked_object: - location = self.get_location_point(vert) - res.append(self._find_and_get_child(location)) - return res - - def fill_tree(self, size_voxel): + def add_children(self): # Tested """ - Заполнение дерева - :param node: вершина - :param size_voxel: размер вокселя (как минимальный размер вершины) + Добавить потомков в вершину :return: """ - if self.Size <= size_voxel or len(self.Objects) <= 1: - return - self.redistribution() - for child in self.Children: - child.fill_tree(child, size_voxel) - - def _distribute(self, objects: []): - on_bounding = [] - for ob in objects: - location = self.get_location_point(ob[0]) - if 0 in location: - on_bounding.append(ob) - continue - is_added = False - for v in ob: - temp = self.get_location_point(v) - if 0 in temp or temp != location: - on_bounding.append(ob) - is_added = True - break - if not is_added: - child = self._find_and_get_child(location) - child.Objects.append(ob) - return on_bounding - - def _add_children(self): def get_coordinate(mask: [], div_size): mask = [m * div_size for m in mask] return [self.Coordinate[i] + mask[i] for i in range(3)] div_size = self.Size / 2 - self.Children = [Node(self, div_size, get_coordinate([x, y, z], div_size), self.Track_usage) + self.Children = [Node(self, div_size, get_coordinate([x, y, z], div_size)) for x in range(2) for y in range(2) for z in range(2)] - def _find_and_get_child(self, pos_point: []): # Tested + def find_and_get_child(self, pos_point: []): # Tested """ Ищет по позиционным координатам потомка :param pos_point: позиционная координата @@ -132,8 +86,36 @@ def _find_and_get_child(self, pos_point: []): # Tested else: return self.Children[0] + def distribute(self, is_voxels=False, size_voxels=0): + """ + Разбивает объекты в вершине между вершиной и детьми + :return: + """ + try: + node_objects = [] + for ob in self.Objects: + object_vertex = ob + if is_voxels: + object_vertex = self._get_all_voxels_vertex(ob, size_voxels) + location = self.get_location_point(object_vertex[0]) + if 0 in location: + node_objects.append(ob) + continue + is_added = False + for i in object_vertex: + temp_location = self.get_location_point(i) + if 0 in temp_location or temp_location != location: + node_objects.append(ob) + is_added = True + break + if not is_added: + self.find_and_get_child(location).Objects.append(ob) + self.Objects = node_objects + except: + raise Exception("error") + @staticmethod - def get_all_voxels_vertex(voxel: [], size: float): # Tested + def _get_all_voxels_vertex(voxel: [], size: float): # Tested """ Генерирует все вершины вокселя :param voxel: воксель @@ -142,7 +124,9 @@ def get_all_voxels_vertex(voxel: [], size: float): # Tested """ if size < 0: raise Exception("size can't be less than zero") + res = [] for x in range(2): for y in range(2): for z in range(2): - yield [x * size + voxel[0], y * size + voxel[1], z * size + voxel[2]] + res.append([x * size + voxel[0], y * size + voxel[1], z * size + voxel[2]]) + return res diff --git a/OcTreeV2/OcTree.py b/OcTreeV2/OcTree.py index 8d33001..5ad7126 100644 --- a/OcTreeV2/OcTree.py +++ b/OcTreeV2/OcTree.py @@ -1,14 +1,99 @@ from OcTreeV2.NodeOcTreeV2 import Node +import Crossing class Octree: - def __init__(self, objects: [], size_voxel: [], ep: [], is_voxel: bool): + def __init__(self, objects: [], size_voxel: [], ep: [], is_voxels=False): + """ + + :param objects: объекты для хранения в дереве + :param size_voxel: размер вокселя + :param ep: крайние точки модели + :param is_voxels: объекты дерева - воксели? + """ max_size_model = max(*[i[1] - i[0] for i in ep]) - self.Start = Node(None, max_size_model, [point[0] for point in ep], is_voxel) + self.Start = Node(None, max_size_model, [point[0] for point in ep]) self.Start.add_objects(objects) self.Size_voxel = size_voxel - self.Start.fill_tree(self.Size_voxel) + self.Is_voxels = is_voxels + + def fill_tree(self, node: Node): + """ + Заполнение дерева + :param node: вершина + :return: + """ + if node.Size <= self.Size_voxel or len(node.Objects) <= 1: + return + if len(node.Children) == 0: + node.add_children() + node.distribute(self.Is_voxels, self.Size_voxel) + for child in node.Children: + self.fill_tree(child) + + def get_first_crossing(self, object_checked, node: Node): + """ + Предназначена для возвращения первого персечения с мешем, когда меши в дереве + :param object_checked: воксель + :param node: проверяемая вершина, для начала поиска указать стартовую + :return: + """ + for ob in node.Objects: + if Crossing.crossing(ob, object_checked, self.Size_voxel): + return ob + if len(node.Children) > 0: + for child in self._get_children_for_checked(self._get_all_voxels_vertex(object_checked, self.Size_voxel), node): + temp = self.get_first_crossing(object_checked, child) + if temp is not None: + return temp + + def get_all_crossing(self, object_checked, node: Node): + """ + Предназначена для возвращения вокселей, когда они находятся в дереве + :param object_checked: Меш + :param node: проверяемая вершина. Для начала поиска указать стартовую + :return: + """ + not_crossing = [] + for ob in node.Objects: + if Crossing.crossing(object_checked, ob, self.Size_voxel): + not_crossing.append(ob) + yield ob + node.Objects = not_crossing + if len(node.Children) > 0: + for child in self._get_children_for_checked(self._get_all_voxels_vertex(object_checked, self.Size_voxel), node): + temp = self.get_all_crossing(object_checked, child) + for i in temp: + yield i - def crossing_with_meshes(self): + @staticmethod + def _get_children_for_checked(vertexes: [], node: Node): # Tested + """ + Определяет, каких потомков проверять дальше + :param vertexes список вершин + :return: ленивый список потомкав + """ + children = [] + for vert in vertexes: + location = node.get_location_point(vert) + if 0 in location: + continue + if location not in children: + children.append(location) + yield node.find_and_get_child(location) + @staticmethod + def _get_all_voxels_vertex(voxel: [], size: float): # Tested + """ + Генерирует все вершины вокселя + :param voxel: воксель + :param size: размер + :return: ленивый список вершин вокселя + """ + if size < 0: + raise Exception("size can't be less than zero") + for x in range(2): + for y in range(2): + for z in range(2): + yield [x * size + voxel[0], y * size + voxel[1], z * size + voxel[2]] diff --git a/ReadObj.py b/ReadObj.py index 76e7082..7e0b411 100644 --- a/ReadObj.py +++ b/ReadObj.py @@ -15,10 +15,9 @@ def read_file(path: str): points = _get_list_vertex(file) for string in file: temp = string.split() - if temp[0] == "f": - test = len(points) + if len(temp) > 0 and temp[0] == "f": temp = [i.split("/")[0] for i in temp[1:]] - res.append([points[0][int(i) - 2] for i in temp]) + res.append([points[0][int(i) - 1] for i in temp]) return res, points[1], points[2], points[3] @@ -35,7 +34,7 @@ def _get_list_vertex(file): for string in file: temp = string.split() - if temp[0].lower() == "v": + if len(temp) > 0 and temp[0].lower() == "v": points.append([float(i) for i in temp[1:]]) if min_x > float(temp[1]): min_x = float(temp[1]) @@ -51,6 +50,6 @@ def _get_list_vertex(file): if max_z < float(temp[3]): max_z = float(temp[3]) - if len(points) > 0 and temp[0].lower() != "v": + if len(points) > 0 and (len(temp) > 0 or temp[0].lower() == "f"): break - return points, [min_x, max_x], [min_y, max_y], [min_z, max_z] + return points, [min_x, max_x], [min_y, max_y], [min_z, max_z] \ No newline at end of file diff --git a/Tests/MeshToVoxelTests.py b/Tests/MeshToVoxelTests.py index 2b98c6b..caee83a 100644 --- a/Tests/MeshToVoxelTests.py +++ b/Tests/MeshToVoxelTests.py @@ -2,10 +2,17 @@ import MeshToVoxel as MV import unittest from Tests import Samples +import ReadObj class TestsMeshToVoxel(unittest.TestCase): + def test_1(self): + mod = ReadObj.read_file("deer.obj") + #file = open("deer.obj") + + Visualization.get_model(mod) + def test_triangle(self): triangle = Samples.triangle() size_model = [3, 3, 1] @@ -22,7 +29,9 @@ def test_cube(self): cube = Samples.cube() size_model = Samples.find_size_model(cube) voxel_cube = [i for i in MV.get_voxel_model(cube, [[0, 3], [0, 3], [0, 3]], 2)] - Visualization.get_model(voxel_cube) + #Visualization.get_model(voxel_cube) + points = [[0, 0, 0], [0, 0, 1], [0, 1, 0], [0, 1, 1], [1, 0, 0], [1, 0, 1], [1, 1, 0], [1, 1, 1]] + Visualization.get_model(points) #answ = [] #for z in range(3): # for y in range(3): diff --git a/Tests/NodeV2Tests.py b/Tests/NodeV2Tests.py index f690d2e..a382449 100644 --- a/Tests/NodeV2Tests.py +++ b/Tests/NodeV2Tests.py @@ -1,12 +1,159 @@ import unittest from OcTreeV2.NodeOcTreeV2 import Node +from OcTreeV2.OcTree import Octree -class TestsCreate(unittest.TestCase): +def get_simple_node(size = 4): + return Node(None, size, [0, 0, 0]) + + +class TestsAddChildren(unittest.TestCase): + + def test_simple(self): + node = get_simple_node() + node.add_children() + self.assertEqual(8, len(node.Children)) + + +class TestsAddObjects(unittest.TestCase): def test_simple(self): - node = Node(None, 4, [0, 0, 0], [1], False) - self.assertTrue(True) + node = get_simple_node() + node.add_objects([1, 1, 2, 2, 3, 3, 4, 4, 5, 9]) + self.assertEqual(8, len(node.Children)) + self.assertEqual(10, len(node.Objects)) + + +class TestsDectribute(unittest.TestCase): + + def test_add_one_object_on_bounding(self): + node = get_simple_node() + node.add_objects([[[2, 2, 2], [1, 2, 1], [3, 3, 3]]]) + node.distribute() + self.assertEqual(1, len(node.Objects)) + self.assertEqual(8, len(node.Children)) + for i in node.Children: + self.assertEqual(0, len(i.Objects)) + self.assertEqual(0, len(i.Children)) + + def test_add_one_object_in_first_child(self): + node = get_simple_node() + node.add_objects([[[0, 0, 0], [1, 0.5, 1], [1, 1, 1]]]) + node.distribute() + self.assertEqual(0, len(node.Objects)) + self.assertEqual(1, len(node.Children[0].Objects)) + + def test_zero_in_node_two_in_children(self): + node = get_simple_node() + node.add_objects([[[0, 0, 0], [1, 0.5, 1], [1, 1, 1]], [[1, 1, 1], [0.5, 0.7, 0], [0, 0, 0]]]) + node.distribute() + self.assertEqual(0, len(node.Objects)) + self.assertEqual(2, len(node.Children[0].Objects)) + + def test_last(self): + node = get_simple_node() + node.add_objects([[[0, 2, 0], [1, 0.5, 1], [1, 1, 1]], [[1, 1, 1], [0.5, 0.7, 0], [0, 0, 0]]]) + node.distribute() + self.assertEqual(1, len(node.Objects)) + self.assertEqual(1, len(node.Children[0].Objects)) + + +def get_octree(points=[], size=1.0, is_voxel=False): + return Octree(points, size, [[0, 4], [0, 4], [0, 4]], is_voxel) + + +class TestsGetChildrenForChecked(unittest.TestCase): + + def test_with_one_point_on_bounding_boxes(self): + point = [[2, 2, 2]] + tree = get_octree() + res = [i for i in tree._get_children_for_checked(point, tree.Start)] + self.assertEqual(res, []) + + point = [[2, 0, 2]] + res = [i for i in tree._get_children_for_checked(point, tree.Start)] + self.assertEqual([], res) + + def test_with_one_point_on_child(self): + point = [[0, 0, 0]] + tree = get_octree() + res = [i for i in tree._get_children_for_checked(point, tree.Start)] + self.assertEqual(1, len(res)) + self.assertEqual(tree.Start.Children[0], res[0]) + + point = [[3, 3, 3]] + res = [i for i in tree._get_children_for_checked(point, tree.Start)] + self.assertEqual(1, len(res)) + self.assertEqual(tree.Start.Children[7], res[0]) + + def test_with_voxel(self): + tree = get_octree() + point = tree._get_all_voxels_vertex([1.5, 1.5, 1.5], 1) + res = [i for i in tree._get_children_for_checked(point, tree.Start)] + self.assertEqual(8, len(res)) + for i in range(8): + self.assertEqual(tree.Start.Children[i], res[i]) + + def test_with_mesh_on_bounding_boxes(self): + point = [[2, 2, 2], [2, 0, 2], [3, 2, 2]] + tree = get_octree() + res = [i for i in tree._get_children_for_checked(point, tree.Start)] + self.assertEqual([], res) + + +class TestsFillOctree(unittest.TestCase): + + def test_with_one_voxel(self): + points = [[0, 0, 0]] + octree = get_octree(points, 4) + octree.fill_tree(octree.Start) + self.assertEqual(points, octree.Start.Objects) + for ch in octree.Start.Children: + self.assertEqual([], ch.Objects) + + def test_with_8_voxels(self): + voxels = [] + for x in range(2): + for y in range(2): + for z in range(2): + voxels.append([x * 2, y * 2, z * 2]) + tree = get_octree(voxels, 2, True) + tree.fill_tree(tree.Start) + self.assertEqual(voxels, tree.Start.Objects) + + def test_with_64_voxels(self): + voxels = Node._get_all_voxels_vertex([0, 0, 0], 2) + v = [] + for i in voxels: + temp = Node._get_all_voxels_vertex(i, 1) + for t in temp: + v.append(t) + tree = get_octree(v, 1, True) + tree.fill_tree(tree.Start) + self.assertEqual(56, len(tree.Start.Objects)) + for child in tree.Start.Children: + self.assertEqual(1, len(child.Objects)) + + def test_with_512_voxels(self): + # TODO fixme + voxels = Node._get_all_voxels_vertex([0, 0, 0], 2) + v = [] + for i in voxels: + temp = Node._get_all_voxels_vertex(i, 1) + for t in temp: + v.append(t) + voxels = [] + for i in v: + temp = Node._get_all_voxels_vertex(i, 0.5) + for t in temp: + voxels.append(t) + tree = get_octree(voxels, 0.5, True) + tree.fill_tree(tree.Start) + #for ch in tree.Start.Children: + #self.assertEqual(26, len(ch.Objects)) + + + if __name__ == '__main': diff --git a/Visualization.py b/Visualization.py index 2dc8f9e..911d730 100644 --- a/Visualization.py +++ b/Visualization.py @@ -2,7 +2,7 @@ def _get_voxel(x, y, z): - a = 2 # Длина вокселя !!!НЕ ИЗМЕНЯТЬ!! + a = 10 # Длина вокселя !!!НЕ ИЗМЕНЯТЬ!! b = a / 2 # Половина длины вокселя c = 0.02 # Толщина ребра d = 0.001 # Толщина грани From 6aca05ae4909f05fd39902d44bbc8d065bc29478 Mon Sep 17 00:00:00 2001 From: Alllex202 Date: Thu, 21 Nov 2019 21:11:29 +0500 Subject: [PATCH 08/36] Release Visual_2.0 --- Visual_2.0.py | 181 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 181 insertions(+) create mode 100644 Visual_2.0.py diff --git a/Visual_2.0.py b/Visual_2.0.py new file mode 100644 index 0000000..5fd8a89 --- /dev/null +++ b/Visual_2.0.py @@ -0,0 +1,181 @@ +import math + +import pygame +from pygame.locals import * + +from OpenGL.GL import * +from OpenGL.GLU import * + +''' +Импортировать метод ShowModel - Принимает 3 аргумента: + 1 - массив с координатама (x, y, z) вокселей + 2 - размер вокселя + 3 - debug_mod (True/False) +____________________________________________________________ +Приоритеты в планах: + - Добавить цвет + - Переработать debug_mode + - Доделать полноценное перемещение +''' + + +def GetModel(size_voxel: float, voxels_coords: []): + model = ( + [], # Вершины + ( # Грани + (0, 1), + (0, 3), + (0, 4), + (2, 1), + (2, 3), + (2, 7), + (6, 3), + (6, 4), + (6, 7), + (5, 1), + (5, 4), + (5, 7) + ), + ( # Поверхности + (0, 1, 2, 3), + (3, 2, 7, 6), + (6, 7, 5, 4), + (4, 5, 1, 0), + (1, 5, 7, 2), + (4, 0, 3, 6) + ) + ) + + for voxel_coords in voxels_coords: + model[0].append(GetVoxel(size_voxel, voxel_coords)) + + return model + + +def GetVoxel(size_voxel: float, voxel: []): + x = voxel[0] / size_voxel / 5 + y = voxel[1] / size_voxel / 5 + z = voxel[2] / size_voxel / 5 + + return ( + (x + 0.1, y - 0.1, z - 0.1), # правый низ зад + (x + 0.1, y + 0.1, z - 0.1), # правый верх зад + (x - 0.1, y + 0.1, z - 0.1), # левый верх зад + (x - 0.1, y - 0.1, z - 0.1), # левый низ зад + (x + 0.1, y - 0.1, z + 0.1), # правый низ перед + (x + 0.1, y + 0.1, z + 0.1), # правый верх перед + (x - 0.1, y - 0.1, z + 0.1), # левый низ перед + (x - 0.1, y + 0.1, z + 0.1) # левый верх перед + ) + + +def Model(model: [], debug_mode: bool): + for verticies in model[0]: + glBegin(GL_QUADS) + glColor3f(1, 0, 0) + for surface in model[2]: + for vertex in surface: + glVertex3fv(verticies[vertex]) + glEnd() + + if debug_mode: + glBegin(GL_LINES) # Отображение границ + for edge in model[1]: + for vertex in edge: + glColor3f(1, 1, 0) + glVertex3fv(verticies[vertex]) + glEnd() + + +def ShowModel(voxels_coords: [], size_voxel: float, debug_mode: bool): + + model = GetModel(size_voxel, voxels_coords) + + pygame.init() + display = (800, 600) # Размер окна + pygame.display.set_mode(display, DOUBLEBUF | OPENGL) + + pygame.display.set_caption("Result") # Название окна + + gluPerspective(45, (display[0] / display[1]), 0.1, 50.0) + + glTranslatef(0, 0, -2) + + glRotatef(0, 0, 0, 0) + + x_move = 0 + y_move = 0 + z_move = 0 + + x_rotate = 0 + y_rotate = 0 + z_rotate = 0 + step = 0 + + # radians_axis_z = 0 + radians_axis_y = 0 + radians_axis_x = 0 + + degrees_axis_y = 0 # Вращение право/лево + degrees_axis_x = 0 # Вращение верх/низ + # degrees_axis_z = 0 + + while True: + for event in pygame.event.get(): + if event.type == pygame.QUIT: + pygame.quit() + quit() + + if event.type == pygame.KEYDOWN: + if event.key == pygame.K_LEFT: + x_rotate = -0.1 + step = 1 + if event.key == pygame.K_RIGHT: + x_rotate = 0.1 + step = 1 + + # ВРЕМЕННО НЕ РАБОТАЕТ + # if event.key == pygame.K_DOWN: + # y_rotate = 0.1 + # step = 1 + # if event.key == pygame.K_UP: + # y_rotate = -0.1 + # step = 1 + + if event.type == pygame.KEYUP: + if event.key == pygame.K_LEFT or event.key == pygame.K_RIGHT: + x_rotate = 0 + step = 0 + if event.key == pygame.K_DOWN or event.key == pygame.K_UP: + y_rotate = 0 + step = 0 + + # Вращение вправо/влево + z_move = -math.cos(radians_axis_y) * 0.1 + x_move = math.sin(radians_axis_y) * 0.1 + + # Вращение вверх/вниз + # z_move = math.cos(radians_axis_x) * -0.1 + # y_move = math.sin(radians_axis_x) * -0.1 + + # Приближение/отдаление + if event.type == pygame.MOUSEBUTTONDOWN: + if event.button == 4: + glTranslatef(x_move, y_move, z_move) + if event.button == 5: + glTranslatef(-x_move, -y_move, -z_move) + + # Изменение оси Y (Вращение влево/вправо) + degrees_axis_y += x_rotate * step * 10 + radians_axis_y += x_rotate * step * 10 / 180 * math.pi + + # Изменение оси X (Вращение вверх/вниз) + degrees_axis_x += y_rotate * step * 10 + radians_axis_x += y_rotate * step * 10 / 180 * math.pi + + glRotatef(step, y_rotate, x_rotate, z_rotate) # Изменение ориентации + + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT) + Model(model, debug_mode) + pygame.display.flip() + pygame.time.wait(10) From bb0d8eed0ac28f29226c42bcbd3a7eeffa9e61a8 Mon Sep 17 00:00:00 2001 From: Aleksandr Date: Thu, 21 Nov 2019 21:17:50 +0500 Subject: [PATCH 09/36] Add tests for distribute in Node --- Experiments/experiment.py | 21 +++++- OcTreeV2/NodeOcTreeV2.py | 43 +++++------ OcTreeV2/OcTree.py | 2 +- .../__pycache__/NodeOcTreeV2.cpython-36.pyc | Bin 0 -> 4818 bytes Tests/NodeV2Tests.py | 69 +++++++++++++++++- 5 files changed, 108 insertions(+), 27 deletions(-) create mode 100644 OcTreeV2/__pycache__/NodeOcTreeV2.cpython-36.pyc diff --git a/Experiments/experiment.py b/Experiments/experiment.py index 3972867..6485b64 100644 --- a/Experiments/experiment.py +++ b/Experiments/experiment.py @@ -1,5 +1,20 @@ -from pymesh import obj +from OcTreeV2.NodeOcTreeV2 import Node +voxels = Node._get_all_voxels_vertex([0, 0, 0], 2) +v = [] +for i in voxels: + temp = Node._get_all_voxels_vertex(i, 1) + for t in temp: + v.append(t) +voxels = [] +for i in v: + temp = Node._get_all_voxels_vertex(i, 0.5) + for t in temp: + voxels.append(t) -a = obj.Obj("cube.obj") -print(1) +search = [] +count = 0 +for i in voxels: + if 2 in i or 2 in [j + 0.5 for j in i]: + count += 1 +print(count) diff --git a/OcTreeV2/NodeOcTreeV2.py b/OcTreeV2/NodeOcTreeV2.py index ee6b5b3..566e4ed 100644 --- a/OcTreeV2/NodeOcTreeV2.py +++ b/OcTreeV2/NodeOcTreeV2.py @@ -45,6 +45,7 @@ def add_children(self): # Tested Добавить потомков в вершину :return: """ + def get_coordinate(mask: [], div_size): mask = [m * div_size for m in mask] return [self.Coordinate[i] + mask[i] for i in range(3)] @@ -91,28 +92,28 @@ def distribute(self, is_voxels=False, size_voxels=0): Разбивает объекты в вершине между вершиной и детьми :return: """ - try: - node_objects = [] - for ob in self.Objects: - object_vertex = ob - if is_voxels: - object_vertex = self._get_all_voxels_vertex(ob, size_voxels) - location = self.get_location_point(object_vertex[0]) - if 0 in location: + #try: + node_objects = [] + for ob in self.Objects: + object_vertex = ob + if is_voxels: + object_vertex = self._get_all_voxels_vertex(ob, size_voxels) + location = self.get_location_point(object_vertex[0]) + if 0 in location: + node_objects.append(ob) + continue + is_added = False + for i in object_vertex: + temp_location = self.get_location_point(i) + if 0 in temp_location or temp_location != location: node_objects.append(ob) - continue - is_added = False - for i in object_vertex: - temp_location = self.get_location_point(i) - if 0 in temp_location or temp_location != location: - node_objects.append(ob) - is_added = True - break - if not is_added: - self.find_and_get_child(location).Objects.append(ob) - self.Objects = node_objects - except: - raise Exception("error") + is_added = True + break + if not is_added: + self.find_and_get_child(location).Objects.append(ob) + self.Objects = node_objects + #except: + #raise Exception("error") @staticmethod def _get_all_voxels_vertex(voxel: [], size: float): # Tested diff --git a/OcTreeV2/OcTree.py b/OcTreeV2/OcTree.py index 5ad7126..f38103d 100644 --- a/OcTreeV2/OcTree.py +++ b/OcTreeV2/OcTree.py @@ -18,7 +18,7 @@ def __init__(self, objects: [], size_voxel: [], ep: [], is_voxels=False): self.Size_voxel = size_voxel self.Is_voxels = is_voxels - def fill_tree(self, node: Node): + def fill_tree(self, node: Node): # Tested """ Заполнение дерева :param node: вершина diff --git a/OcTreeV2/__pycache__/NodeOcTreeV2.cpython-36.pyc b/OcTreeV2/__pycache__/NodeOcTreeV2.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..50e03526e34820ce51feb5ca794105418ed0ce1d GIT binary patch literal 4818 zcma)9&u<&Y6`t8$l1qwWY(=r-*fln7lY*`y*$EK1f@>JDlNLG1MjY5JQ9DF@hFBQRL8G3KYmeQT;=)9l3wP@=~DNV^2EvnoIk=S#n8APTD1Q z_-6Lan>X{```(+k#>Z3t{`~J({_!GX|6)Ur4*CpUcLL2%m|%jh<85m>CbWwzs~0gI zJqD;Vc-DAkV{}|( zFq#kt#eOld&U2=nTwr!ey!e?WCdEtZMw{ox!~tmWa$w9k!p`y_RdgIFN|l0V7fBm> zVt9!@i`Tt`rpcQu&zc%q-qg{8TH=BqW-SAhCio%NG!8OFYeTdi(hD>PJ3)&bpp6Lw zTEuFfLwL&SJ+sw} z3+x;IBmXIJ{*MWRO=F$MSYaEJ?~`zUqkFS^=bNVQXi#{EQ-hbyW#hT{1*LCbT!a!q z>TGnJ!Pq-at%9Rnc*m&+iSzSIcF}VK^Xy`&EU?9FEHGTVd^L!NJ4O!@B&`sbqI4}! z-M=vT0tUW*cV^L9v1bZpd)X~igq*psR$MH|l?&2QVrMQnb-P?@6ugpCnK@tlP}=sT zH)qJm{myiCEim)>Ql;eO^W>&(1`UhHIsH=n7}~}-&6w_U!9NmCsCSX{qKE$JRn9?9 z4x_U+Fvl{b|o&E1K|B*=;jgq~|?7b>R&+{Ad1_nh*Ecwb)>mw7r_F%tixqSuIEx zgvb|rW|B#4C9BCX{7KrcGDz6$LpK;B?%uNdG2p5&ikrN#PaWpaXPjrO>Xa&8behB) z$E!}W3Sxn^wE9(#AcLP{S8^@gL+~wWO@tCCgx?|7=F13Wd9tZ3=>imItC{C=fm8lc zacLo!qV zv)(u{WkKi-=mB;1gtQOALmC4kfFpN-CvZe;&Vu-D|9-daKk0rvWnp8`Y?qksoe&xJ zY<0>yZoM(IIQjTPxE{_8aPnE7c5?&I#}{3tJ=5dl<>%nd9WAek1iaR)QC^DNUfD$taf>Pm? zbPG}4VUz3=Z52szU<3e>HhnzcD_JfHsRxkrb?Q{P~UM)v>S zza(=;8z!UBa%#h8K&TC$Y;jl;P6rr1*3u&S2tjg3>#z>NF@SkN@36Mk);}>;kF4$^ zBSL*z0P54mB)L9fE~=0-gxa>_BF8I97Iwo3D-=~ zn&Bxb$Jx7{vIlMXhqM&o1B*`>DTH-n|DFXA6UnOMhA1!+8033rNy0W7fg@Rt%Y8U3 zWSpDmQE4djWlferBX=qKeb7daK8@^#^7atBNRtvki0(( zaeu71lMy%80k<{8v7tDiOK(MJc#(+|%r;j0D>e}!ga7;P?I`~#NI@yG)%`Wm2o98l&gl*{>RbgOXl z*KFz8b$J9zODX~66g7k!*^~mWT(Sf%#he?XdrQBQuHZh=uZ{!Fna_=frE*VZVD<}) zoCy)Am2Dwkh2Y${XRlPF@?*E>r34b7EX~(EI|pu;6k;)r8}K$mwHa>WQbQvt{Py8B zaKSP70Z_Q;yr3X%AO(&eQyY-ukQ5;t#Ry#hl<$$zfFpbv$*hlXs$O42g@URYe)J3Y z<)x_ie#@wzi+U&FlNwd>O+E>%BhSQ@+359vQ|Q5q)ia&;G>J;9i@GXr> zirPP+NMu$2w^YnhK@DuWjuKW??3*Zs;Uy#2X6oWHOcQ+Fm zcl4?~;ON)l(JgNi2>Io%o7j*>qe~6+3DN8bEoBu81Y+~HRkmH%@)ipf3zuX^g>=Zmn$_*(z(3)xrdX?6umdRw2nf+!a^J?md##O~JhxAVz&zl~Yr$QZ1 JD;eNo{{?)2+W`Oo literal 0 HcmV?d00001 diff --git a/Tests/NodeV2Tests.py b/Tests/NodeV2Tests.py index a382449..d769d0a 100644 --- a/Tests/NodeV2Tests.py +++ b/Tests/NodeV2Tests.py @@ -3,7 +3,7 @@ from OcTreeV2.OcTree import Octree -def get_simple_node(size = 4): +def get_simple_node(size=4): return Node(None, size, [0, 0, 0]) @@ -134,8 +134,23 @@ def test_with_64_voxels(self): for child in tree.Start.Children: self.assertEqual(1, len(child.Objects)) + def test_with_voxels_in_child(self): + # TODO + # Работает правильно, но лень настраивать тест + voxels = Node._get_all_voxels_vertex([0, 0, 0], 1) + v = [] + for i in voxels: + temp = Node._get_all_voxels_vertex(i, 0.5) + for t in temp: + if 2 not in t: + v.append(t) + tree = Octree(v, 0.5, [[0, 4], [0, 4], [0, 4]], True) + tree.fill_tree(tree.Start) + print(1) + def test_with_512_voxels(self): - # TODO fixme + # TODO + # Работает правильно, но лень настраивать тест voxels = Node._get_all_voxels_vertex([0, 0, 0], 2) v = [] for i in voxels: @@ -153,7 +168,57 @@ def test_with_512_voxels(self): #self.assertEqual(26, len(ch.Objects)) +class TestsDistribute(unittest.TestCase): + + def test_with_one_vertex_on_bounding_boxes(self): + voxel = [[0, 2, 0]] + node = get_simple_node() + node.add_objects(voxel) + node.distribute(True, 1) + self.assertEqual(voxel, node.Objects) + + def test_with_one_voxel_in_child(self): + voxel = [[3, 0, 3]] + node = get_simple_node() + node.add_objects(voxel) + node.distribute(True, 1) + self.assertEqual(node.Children[5].Objects, voxel) + + voxel = [[0, 3, 3]] + node.Objects.append(voxel[0]) + node.distribute(True, 1) + self.assertEqual(node.Children[3].Objects, voxel) + + def test_with_8_voxels(self): + voxels = Node._get_all_voxels_vertex([0, 0, 0], 3) + node = get_simple_node() + node.add_objects(voxels) + node.distribute(True, 1) + for i in node.Children: + self.assertEqual(1, len(i.Objects)) + self.assertEqual(0, len(node.Objects)) + + def test_distribute_child(self): + voxels = Node._get_all_voxels_vertex([0, 0, 0], 2) + v = [] + for i in voxels: + temp = Node._get_all_voxels_vertex(i, 1) + for t in temp: + v.append(t) + voxels = [] + for i in v: + temp = Node._get_all_voxels_vertex(i, 0.5) + for t in temp: + voxels.append(t) + node = get_simple_node(4) + node.add_objects(voxels) + node.distribute(True, 0.5) + for i in node.Children: + self.assertEqual(27, len(i.Objects)) + i.add_children() + +class if __name__ == '__main': From 940fc06388a6784470a7f7a88566e1813cdbddd0 Mon Sep 17 00:00:00 2001 From: Alllex202 Date: Thu, 21 Nov 2019 21:33:29 +0500 Subject: [PATCH 10/36] Minor changes in Visual_2.0. Fixed old version. --- Visual_2.0.py | 20 ++++++++++---------- Visualization.py | 17 ++++++++--------- 2 files changed, 18 insertions(+), 19 deletions(-) diff --git a/Visual_2.0.py b/Visual_2.0.py index 5fd8a89..6bf3a9a 100644 --- a/Visual_2.0.py +++ b/Visual_2.0.py @@ -19,7 +19,7 @@ ''' -def GetModel(size_voxel: float, voxels_coords: []): +def _GetModel(voxel_size: float, voxels_coords: []): model = ( [], # Вершины ( # Грани @@ -47,15 +47,15 @@ def GetModel(size_voxel: float, voxels_coords: []): ) for voxel_coords in voxels_coords: - model[0].append(GetVoxel(size_voxel, voxel_coords)) + model[0].append(_GetVoxel(voxel_size, voxel_coords)) return model -def GetVoxel(size_voxel: float, voxel: []): - x = voxel[0] / size_voxel / 5 - y = voxel[1] / size_voxel / 5 - z = voxel[2] / size_voxel / 5 +def _GetVoxel(voxel_size: float, voxel: []): + x = voxel[0] / voxel_size / 5 + y = voxel[1] / voxel_size / 5 + z = voxel[2] / voxel_size / 5 return ( (x + 0.1, y - 0.1, z - 0.1), # правый низ зад @@ -69,7 +69,7 @@ def GetVoxel(size_voxel: float, voxel: []): ) -def Model(model: [], debug_mode: bool): +def _Model(model: [], debug_mode: bool): for verticies in model[0]: glBegin(GL_QUADS) glColor3f(1, 0, 0) @@ -87,9 +87,9 @@ def Model(model: [], debug_mode: bool): glEnd() -def ShowModel(voxels_coords: [], size_voxel: float, debug_mode: bool): +def ShowModel(voxels_coords: [], voxel_size: float, debug_mode: bool): - model = GetModel(size_voxel, voxels_coords) + model = _GetModel(voxel_size, voxels_coords) pygame.init() display = (800, 600) # Размер окна @@ -176,6 +176,6 @@ def ShowModel(voxels_coords: [], size_voxel: float, debug_mode: bool): glRotatef(step, y_rotate, x_rotate, z_rotate) # Изменение ориентации glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT) - Model(model, debug_mode) + _Model(model, debug_mode) pygame.display.flip() pygame.time.wait(10) diff --git a/Visualization.py b/Visualization.py index ef0016a..a93934c 100644 --- a/Visualization.py +++ b/Visualization.py @@ -1,16 +1,15 @@ from vpython import * -def _get_voxel(x, y, z): - a = 1 # Длина вокселя !!!НЕ ИЗМЕНЯТЬ!! - b = a / 2 # Половина длины вокселя +def _get_voxel(x, y, z, voxel_size: float): + b = voxel_size / 2 # Половина длины вокселя c = 0.02 # Толщина ребра d = 0.001 # Толщина грани - _get_verges(a, b, c, d, x, y, z) - _get_borders(a, b, c, x, y, z) + _get_verges(voxel_size, b, c, d, x, y, z) + _get_borders(voxel_size, b, c, x, y, z) -def _get_verges(a, b, c, d, x, y, z): +def _get_verges(voxel_size, b, c, d, x, y, z): """ pos - позиция, задается => vec(x, y, z), где x/y/z - любое число size - размер (в нашем случае он не важен, т.к. все воксели одинаковые) @@ -19,7 +18,7 @@ def _get_verges(a, b, c, d, x, y, z): emissive - Игнорирование источников света (True - игнор., False - не игнор.(по умол.)) """ m = (b - 0.5 * d) # Сдвиг грани от центра вокселя - p = (a - 2 * c) # Длина грани между ребрами + p = (voxel_size - 2 * c) # Длина грани между ребрами box(pos=vec(x, y, z + m), size=vec(p, p, d), color=color.green, shininess=0, emissive=True) # front(x, y) box(pos=vec(x, y, z - m), size=vec(p, p, d), color=color.green, shininess=0, emissive=True) # back(x, y) box(pos=vec(x - m, y, z), size=vec(d, p, p), color=color.green, shininess=0, emissive=True) # left(y, z) @@ -44,7 +43,7 @@ def _get_borders(a, b, c, x, y, z): box(pos=vec(x + n, y + n, z), size=vec(c, c, a), color=color.red, shininess=0, emissive=True) # право верх -def get_model(coords: []): +def get_model(coords: [], voxel_size: float): """ Метод, визуализирующий воксели. Принимает массив вида : [[x, y, z], [x, y, z], ...], где x/y/z/ - координаты вокселя @@ -54,4 +53,4 @@ def get_model(coords: []): #if len(coords) == 0: #raise ValueError("Input array is empty") # Проверка на пустой массив без данных (если не нужен, можно урать) for voxel in coords: - _get_voxel(voxel[0], voxel[1], voxel[2]) + _get_voxel(voxel[0], voxel[1], voxel[2], voxel_size) From f4e5d670273a1004f3725852eae46cfc7ab9eb96 Mon Sep 17 00:00:00 2001 From: Alllex202 <56914444+Alllex202@users.noreply.github.com> Date: Thu, 21 Nov 2019 21:43:27 +0500 Subject: [PATCH 11/36] Update Visualization.py --- Visualization.py | 1 - 1 file changed, 1 deletion(-) diff --git a/Visualization.py b/Visualization.py index b6adc86..e9a7a1d 100644 --- a/Visualization.py +++ b/Visualization.py @@ -1,7 +1,6 @@ from vpython import * - def _get_voxel(x, y, z, voxel_size: float): b = voxel_size / 2 # Половина длины вокселя c = 0.02 # Толщина ребра From 8cb420c479efbca33afbc51cdb16928fbfd3382e Mon Sep 17 00:00:00 2001 From: Sw24sX Date: Fri, 22 Nov 2019 13:57:32 +0500 Subject: [PATCH 12/36] smth --- .idea/.gitignore | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 .idea/.gitignore diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..0e40fe8 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,3 @@ + +# Default ignored files +/workspace.xml \ No newline at end of file From d8184295f74efb3915253a6d720d7601317f0913 Mon Sep 17 00:00:00 2001 From: Sw24sX Date: Fri, 22 Nov 2019 13:58:10 +0500 Subject: [PATCH 13/36] smth --- .idea/Coursework.iml | 2 +- .idea/misc.xml | 2 +- MeshToVoxel.py | 8 +++++++- __pycache__/Visualization.cpython-37.pyc | Bin 0 -> 1619 bytes 4 files changed, 9 insertions(+), 3 deletions(-) create mode 100644 __pycache__/Visualization.cpython-37.pyc diff --git a/.idea/Coursework.iml b/.idea/Coursework.iml index d3ad9cc..fa80a76 100644 --- a/.idea/Coursework.iml +++ b/.idea/Coursework.iml @@ -4,7 +4,7 @@ - + diff --git a/.idea/misc.xml b/.idea/misc.xml index 1b476fd..8656114 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -3,5 +3,5 @@ - + \ No newline at end of file diff --git a/MeshToVoxel.py b/MeshToVoxel.py index 1cea2ab..59858ea 100644 --- a/MeshToVoxel.py +++ b/MeshToVoxel.py @@ -1,4 +1,6 @@ import math +#Временно +import Visualization class Mesh: @@ -100,6 +102,7 @@ def is_voxel(voxel: [], model: [], size_voxel: float): def check_all_projection(voxel: [], size_voxel: float, ver_1: [], ver_2: []): # TODO # Нет проверки, когда меш полностью внутри проекции + # Нет проверки, когда воксель полностью внутри меша return check_crossing_projection([voxel[0], voxel[1]], size_voxel, ver_1, ver_2) and \ check_crossing_projection([voxel[1], voxel[2]], size_voxel, ver_1, ver_2) and \ check_crossing_projection([voxel[0], voxel[2]], size_voxel, ver_1, ver_2) @@ -167,6 +170,9 @@ def det(ver_1: [], ver_2: []): model = return_sample_cube() size_mod = find_size_model(model) voxels = get_voxel_model(model, size_mod) -print(len(voxels)) +#Visualization.get_model(voxels) +#print(len(voxels)) #print(check_crossing_lines([2, 0], [4, 0], [1, 0], [3, 0])) + +print(input(60)) \ No newline at end of file diff --git a/__pycache__/Visualization.cpython-37.pyc b/__pycache__/Visualization.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..517c9e73e7b397f519e089a2fa1f74efa7c7a180 GIT binary patch literal 1619 zcmah}L2nyH6rSL0P$XK!VT3r?Xj!-77D0-jRN~O85>b$xM3v*+x=S}+GrJC6 z%ScIFwV*;HZaq}u+?xqCF-dGBe!(oqJt1+*5eacX2>9M?O;f3*W6k)@n>XK^_ulvR z-IFJa4CBRrep;QMVeD7hOosvC9n9cWEH<;b#}=8Lv5gz7${Wni-s5)8&fmyZGxp4f ztXw#P9V_#Mzh0-iH0U3=>^;ojcPt?bd5`sYFJtqUSlM4xazVF3n8)56)OoV6^-|ydl(&YNGbk zD87lgV+zOv^#F4iZ^v8lj(B@PY&i8&#}tt%x@A~=hx4K6RH90k01o0i>RW&eMSKew zTk1efw1dFyIxvVgfwrd(fw(D3YFDVS8pNNgp*j>~9rtk${sb__bO>n|itk}DHbuN` zseKD7*y@vs+9wfiMs($Y8WEt{hrAo#R>QJ(UiUp;lJ}bcLo82^Oq!x$inT|P$x5TL zhO5hG%(JU$B-h-g+jIh*u&?2Hh!^aO(ivF!SFf7lED6mLB~!$G#5z$2Rylo%v+f3g zyFsZ?caglYnjj@3OgtD5A0q$+hRns=IJ%`3IvPrke!Lop(xPl@h|v_nGR1|O7igtU z+M|;vKcoTDWBhXN2ozwAzwZC`^ToBx=OpbG%ekrnMkHCPT9VW0tIh_~z^jF67?;Y~ zs*>~Z|Cd2FYTaC&!>^W z%wy^XUw{y@9_ynmu4m*NHFuwH^UiBMcAl-i@)-{^)H0{hgtnpA>}fPNXP>uiF;cj7Ow`+<&+5!6bre?tY=bv?v2KnYM} zfP!y9jfNmd^qiO%%gYZNZPgUVM9Z?EINo^`q7$)%$n>xW(6P54dqBLC`o9Zzpk};@ zApRpBtiJ^9Z~75 itthZ5z0$%n2 literal 0 HcmV?d00001 From 8ffaaa93559d9f7807dc0fc265e4cb3fa1b65ddc Mon Sep 17 00:00:00 2001 From: Sw24sX Date: Fri, 22 Nov 2019 15:52:46 +0500 Subject: [PATCH 14/36] Save --- .idea/Coursework.iml | 2 +- .idea/misc.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.idea/Coursework.iml b/.idea/Coursework.iml index d3ad9cc..fa80a76 100644 --- a/.idea/Coursework.iml +++ b/.idea/Coursework.iml @@ -4,7 +4,7 @@ - + diff --git a/.idea/misc.xml b/.idea/misc.xml index 1b476fd..8656114 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -3,5 +3,5 @@ - + \ No newline at end of file From 0fd65b27369619b16392dceb07486e589f6beb56 Mon Sep 17 00:00:00 2001 From: Alllex202 <56914444+Alllex202@users.noreply.github.com> Date: Fri, 22 Nov 2019 23:24:24 +0500 Subject: [PATCH 15/36] Rename Visual_2.0.py to Visual_2_0.py --- Visual_2.0.py => Visual_2_0.py | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename Visual_2.0.py => Visual_2_0.py (100%) diff --git a/Visual_2.0.py b/Visual_2_0.py similarity index 100% rename from Visual_2.0.py rename to Visual_2_0.py From 97a56ef8dbdbdb6ce8eb99bb705ca8bdc5459374 Mon Sep 17 00:00:00 2001 From: Alllex202 <56914444+Alllex202@users.noreply.github.com> Date: Fri, 22 Nov 2019 23:26:07 +0500 Subject: [PATCH 16/36] Rename Visual_2.0.py to Visual_2_0.py --- Visual_2.0.py => Visual_2_0.py | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename Visual_2.0.py => Visual_2_0.py (100%) diff --git a/Visual_2.0.py b/Visual_2_0.py similarity index 100% rename from Visual_2.0.py rename to Visual_2_0.py From 155248b4b09e6e251446d91690ce5488d718c5fe Mon Sep 17 00:00:00 2001 From: Alllex202 Date: Sat, 23 Nov 2019 01:15:26 +0500 Subject: [PATCH 17/36] Added model centering and auto zoom. --- Visual_2_0.py | 33 +++++++++++++++++++++++++++------ 1 file changed, 27 insertions(+), 6 deletions(-) diff --git a/Visual_2_0.py b/Visual_2_0.py index 6bf3a9a..210995b 100644 --- a/Visual_2_0.py +++ b/Visual_2_0.py @@ -7,15 +7,16 @@ from OpenGL.GLU import * ''' -Импортировать метод ShowModel - Принимает 3 аргумента: +Импортировать метод ShowModel - Принимает 4 аргумента: 1 - массив с координатама (x, y, z) вокселей 2 - размер вокселя - 3 - debug_mod (True/False) + 3 - крайние координаты объекта в виде -> ((Xmin, Ymin, Zmin), (Xmax, Ymax, Zmax)) + 4 - debug_mod (True/False) ____________________________________________________________ Приоритеты в планах: - Добавить цвет - Переработать debug_mode - - Доделать полноценное перемещение + - Доделать полноценное перемещение (На данный момент: вращение только по одной оси и зум) ''' @@ -87,7 +88,27 @@ def _Model(model: [], debug_mode: bool): glEnd() -def ShowModel(voxels_coords: [], voxel_size: float, debug_mode: bool): +def _ModelCentering(voxels_coords: [], extreme_coordinates: ()): + """ + :param extreme_coordinates: в виде -> ((Xmin, Ymin, Zmin), (Xmax, Ymax, Zmax)) + :return: () + """ + dif_x = extreme_coordinates[1][0] - extreme_coordinates[0][0] + dif_y = extreme_coordinates[1][1] - extreme_coordinates[0][1] + dif_z = extreme_coordinates[1][2] - extreme_coordinates[0][2] + + for voxel_coords in voxels_coords: + voxel_coords[0] = voxel_coords[0] - extreme_coordinates[0][0] - (dif_x / 2) + voxel_coords[1] = voxel_coords[1] - extreme_coordinates[0][1] - (dif_y / 2) + voxel_coords[2] = voxel_coords[2] - extreme_coordinates[0][2] - (dif_z / 2) + + max_half = max(dif_x, dif_y, dif_z) / 2 + return (max_half * 1.3, max_half * 10) + + +def ShowModel(voxels_coords: [], voxel_size: float, extreme_coordinates: (), debug_mode: bool): + + perspective = _ModelCentering(voxels_coords, extreme_coordinates) model = _GetModel(voxel_size, voxels_coords) @@ -97,9 +118,9 @@ def ShowModel(voxels_coords: [], voxel_size: float, debug_mode: bool): pygame.display.set_caption("Result") # Название окна - gluPerspective(45, (display[0] / display[1]), 0.1, 50.0) + gluPerspective(45, (display[0] / display[1]), 0.1, perspective[1]) - glTranslatef(0, 0, -2) + glTranslatef(0, 0, -perspective[0]) glRotatef(0, 0, 0, 0) From 58067788c21e08c0d51bd667a4edb7985b235d36 Mon Sep 17 00:00:00 2001 From: Sw24sX Date: Sat, 23 Nov 2019 06:52:46 +0500 Subject: [PATCH 18/36] Save --- Crossing.py | 1 - Experiments/experiment.py | 30 +- Tests/MeshToVoxelTests.py | 27 +- Tests/NodeV2Tests.py | 1 - Tests/Voxels.txt | 6856 ++++++++++++++++++++++++++++++++++++ Visual_2.0.py => Visual.py | 362 +- Visualization.py | 59 +- 7 files changed, 7074 insertions(+), 262 deletions(-) create mode 100644 Tests/Voxels.txt rename Visual_2.0.py => Visual.py (95%) diff --git a/Crossing.py b/Crossing.py index f44067a..b9b5cad 100644 --- a/Crossing.py +++ b/Crossing.py @@ -1,6 +1,5 @@ import matplotlib.path as mpltPath - def crossing(mesh: [], voxel: [], size_voxel: float): """ Проверка, что у меша и вокселя есть общие точки diff --git a/Experiments/experiment.py b/Experiments/experiment.py index 6485b64..05ebc70 100644 --- a/Experiments/experiment.py +++ b/Experiments/experiment.py @@ -1,20 +1,12 @@ -from OcTreeV2.NodeOcTreeV2 import Node +def convert_base(num, to_base=10, from_base=10): + if isinstance(num, str): + n = int(num, from_base) + else: + n = int(num) + alphabet = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ" + if n < to_base: + return alphabet[n] + else: + return convert_base(n // to_base, to_base) + alphabet[n % to_base] -voxels = Node._get_all_voxels_vertex([0, 0, 0], 2) -v = [] -for i in voxels: - temp = Node._get_all_voxels_vertex(i, 1) - for t in temp: - v.append(t) -voxels = [] -for i in v: - temp = Node._get_all_voxels_vertex(i, 0.5) - for t in temp: - voxels.append(t) - -search = [] -count = 0 -for i in voxels: - if 2 in i or 2 in [j + 0.5 for j in i]: - count += 1 -print(count) +print(convert_base("1", to_base=2, from_base=10)) diff --git a/Tests/MeshToVoxelTests.py b/Tests/MeshToVoxelTests.py index caee83a..2765863 100644 --- a/Tests/MeshToVoxelTests.py +++ b/Tests/MeshToVoxelTests.py @@ -3,6 +3,7 @@ import unittest from Tests import Samples import ReadObj +from Visual import ShowModel class TestsMeshToVoxel(unittest.TestCase): @@ -28,10 +29,12 @@ def test_cube(self): # TODO Неверный пример куба cube = Samples.cube() size_model = Samples.find_size_model(cube) - voxel_cube = [i for i in MV.get_voxel_model(cube, [[0, 3], [0, 3], [0, 3]], 2)] - #Visualization.get_model(voxel_cube) - points = [[0, 0, 0], [0, 0, 1], [0, 1, 0], [0, 1, 1], [1, 0, 0], [1, 0, 1], [1, 1, 0], [1, 1, 1]] - Visualization.get_model(points) + voxel_cube = [i for i in MV.get_voxel_model(cube, [[0, 3], [0, 3], [0, 3]], 0.1)] + #self.print_in_file(voxel_cube) + ShowModel(voxel_cube, 1, True) + #Visualization.get_model(voxel_cube, 0.1) + #points = [[0, 0, 0], [0, 0, 1], [0, 1, 0], [0, 1, 1], [1, 0, 0], [1, 0, 1], [1, 1, 0], [1, 1, 1]] + #Visualization.get_model(points) #answ = [] #for z in range(3): # for y in range(3): @@ -44,7 +47,21 @@ def test_pyramid(self): # TODO Ошибка объявления начальных вокселей pyramid = Samples.pyramid2() model = [i for i in MV.get_voxel_model(pyramid, [[0, 4], [0, 4], [0, 4]], 0.1)] - Visualization.get_model(model) + self.print_in_file(model) + #Visualization.get_model(model) + #ShowModel(model, 0.1, True) + + def print_in_file(self, voxels: []): + with open("Voxels.txt", "w") as file: + file.write("[") + for i in voxels: + file.write("[") + file.write(str(i[0]) + ", ") + file.write(str(i[1]) + ", ") + file.write(str(i[2])) + file.write("],") + file.write("\n") + file.write("]") if __name__ == '__main__': diff --git a/Tests/NodeV2Tests.py b/Tests/NodeV2Tests.py index d769d0a..1bd0aed 100644 --- a/Tests/NodeV2Tests.py +++ b/Tests/NodeV2Tests.py @@ -218,7 +218,6 @@ def test_distribute_child(self): i.add_children() -class if __name__ == '__main': diff --git a/Tests/Voxels.txt b/Tests/Voxels.txt new file mode 100644 index 0000000..56d425c --- /dev/null +++ b/Tests/Voxels.txt @@ -0,0 +1,6856 @@ +[[0, 0, 0], +[0.1, 0, 0], +[0.2, 0, 0], +[0.30000000000000004, 0, 0], +[0.4, 0, 0], +[0.5, 0, 0], +[0.6, 0, 0], +[0.7, 0, 0], +[0.7999999999999999, 0, 0], +[0.8999999999999999, 0, 0], +[0.9999999999999999, 0, 0], +[1.0999999999999999, 0, 0], +[1.2, 0, 0], +[1.3, 0, 0], +[1.4000000000000001, 0, 0], +[1.5000000000000002, 0, 0], +[1.6000000000000003, 0, 0], +[1.7000000000000004, 0, 0], +[1.8000000000000005, 0, 0], +[1.9000000000000006, 0, 0], +[2.0000000000000004, 0, 0], +[2.1000000000000005, 0, 0], +[2.2000000000000006, 0, 0], +[2.3000000000000007, 0, 0], +[2.400000000000001, 0, 0], +[2.500000000000001, 0, 0], +[2.600000000000001, 0, 0], +[2.700000000000001, 0, 0], +[2.800000000000001, 0, 0], +[2.9000000000000012, 0, 0], +[3.0000000000000013, 0, 0], +[3.1000000000000014, 0, 0], +[3.2000000000000015, 0, 0], +[3.3000000000000016, 0, 0], +[3.4000000000000017, 0, 0], +[3.5000000000000018, 0, 0], +[3.600000000000002, 0, 0], +[3.700000000000002, 0, 0], +[3.800000000000002, 0, 0], +[3.900000000000002, 0, 0], +[0, 0.1, 0], +[0.1, 0.1, 0], +[0.2, 0.1, 0], +[0.30000000000000004, 0.1, 0], +[0.4, 0.1, 0], +[0.5, 0.1, 0], +[0.6, 0.1, 0], +[0.7, 0.1, 0], +[0.7999999999999999, 0.1, 0], +[0.8999999999999999, 0.1, 0], +[0.9999999999999999, 0.1, 0], +[1.0999999999999999, 0.1, 0], +[1.2, 0.1, 0], +[1.3, 0.1, 0], +[1.4000000000000001, 0.1, 0], +[1.5000000000000002, 0.1, 0], +[1.6000000000000003, 0.1, 0], +[1.7000000000000004, 0.1, 0], +[1.8000000000000005, 0.1, 0], +[1.9000000000000006, 0.1, 0], +[2.0000000000000004, 0.1, 0], +[2.1000000000000005, 0.1, 0], +[2.2000000000000006, 0.1, 0], +[2.3000000000000007, 0.1, 0], +[2.400000000000001, 0.1, 0], +[2.500000000000001, 0.1, 0], +[2.600000000000001, 0.1, 0], +[2.700000000000001, 0.1, 0], +[2.800000000000001, 0.1, 0], +[2.9000000000000012, 0.1, 0], +[3.0000000000000013, 0.1, 0], +[3.1000000000000014, 0.1, 0], +[3.2000000000000015, 0.1, 0], +[3.3000000000000016, 0.1, 0], +[3.4000000000000017, 0.1, 0], +[3.5000000000000018, 0.1, 0], +[3.600000000000002, 0.1, 0], +[3.700000000000002, 0.1, 0], +[3.800000000000002, 0.1, 0], +[3.900000000000002, 0.1, 0], +[0, 0.2, 0], +[0.1, 0.2, 0], +[0.2, 0.2, 0], +[0.30000000000000004, 0.2, 0], +[0.4, 0.2, 0], +[0.5, 0.2, 0], +[0.6, 0.2, 0], +[0.7, 0.2, 0], +[0.7999999999999999, 0.2, 0], +[0.8999999999999999, 0.2, 0], +[0.9999999999999999, 0.2, 0], +[1.0999999999999999, 0.2, 0], +[1.2, 0.2, 0], +[1.3, 0.2, 0], +[1.4000000000000001, 0.2, 0], +[1.5000000000000002, 0.2, 0], +[1.6000000000000003, 0.2, 0], +[1.7000000000000004, 0.2, 0], +[1.8000000000000005, 0.2, 0], +[1.9000000000000006, 0.2, 0], +[2.0000000000000004, 0.2, 0], +[2.1000000000000005, 0.2, 0], +[2.2000000000000006, 0.2, 0], +[2.3000000000000007, 0.2, 0], +[2.400000000000001, 0.2, 0], +[2.500000000000001, 0.2, 0], +[2.600000000000001, 0.2, 0], +[2.700000000000001, 0.2, 0], +[2.800000000000001, 0.2, 0], +[2.9000000000000012, 0.2, 0], +[3.0000000000000013, 0.2, 0], +[3.1000000000000014, 0.2, 0], +[3.2000000000000015, 0.2, 0], +[3.3000000000000016, 0.2, 0], +[3.4000000000000017, 0.2, 0], +[3.5000000000000018, 0.2, 0], +[3.600000000000002, 0.2, 0], +[3.700000000000002, 0.2, 0], +[3.800000000000002, 0.2, 0], +[0, 0, 0.1], +[0.1, 0, 0.1], +[0.2, 0, 0.1], +[0.30000000000000004, 0, 0.1], +[0.4, 0, 0.1], +[0.5, 0, 0.1], +[0.6, 0, 0.1], +[0.7, 0, 0.1], +[0.7999999999999999, 0, 0.1], +[0.8999999999999999, 0, 0.1], +[0.9999999999999999, 0, 0.1], +[1.0999999999999999, 0, 0.1], +[1.2, 0, 0.1], +[1.3, 0, 0.1], +[1.4000000000000001, 0, 0.1], +[1.5000000000000002, 0, 0.1], +[1.6000000000000003, 0, 0.1], +[1.7000000000000004, 0, 0.1], +[1.8000000000000005, 0, 0.1], +[1.9000000000000006, 0, 0.1], +[2.0000000000000004, 0, 0.1], +[2.1000000000000005, 0, 0.1], +[2.2000000000000006, 0, 0.1], +[2.3000000000000007, 0, 0.1], +[2.400000000000001, 0, 0.1], +[2.500000000000001, 0, 0.1], +[2.600000000000001, 0, 0.1], +[2.700000000000001, 0, 0.1], +[2.800000000000001, 0, 0.1], +[2.9000000000000012, 0, 0.1], +[3.0000000000000013, 0, 0.1], +[3.1000000000000014, 0, 0.1], +[3.2000000000000015, 0, 0.1], +[3.3000000000000016, 0, 0.1], +[3.4000000000000017, 0, 0.1], +[3.5000000000000018, 0, 0.1], +[3.600000000000002, 0, 0.1], +[3.700000000000002, 0, 0.1], +[3.800000000000002, 0, 0.1], +[3.900000000000002, 0, 0.1], +[0, 0.1, 0.1], +[0.1, 0.1, 0.1], +[0.2, 0.1, 0.1], +[0.30000000000000004, 0.1, 0.1], +[0.4, 0.1, 0.1], +[0.5, 0.1, 0.1], +[0.6, 0.1, 0.1], +[0.7, 0.1, 0.1], +[0.7999999999999999, 0.1, 0.1], +[0.8999999999999999, 0.1, 0.1], +[0.9999999999999999, 0.1, 0.1], +[1.0999999999999999, 0.1, 0.1], +[1.2, 0.1, 0.1], +[1.3, 0.1, 0.1], +[1.4000000000000001, 0.1, 0.1], +[1.5000000000000002, 0.1, 0.1], +[1.6000000000000003, 0.1, 0.1], +[1.7000000000000004, 0.1, 0.1], +[1.8000000000000005, 0.1, 0.1], +[1.9000000000000006, 0.1, 0.1], +[2.0000000000000004, 0.1, 0.1], +[2.1000000000000005, 0.1, 0.1], +[2.2000000000000006, 0.1, 0.1], +[2.3000000000000007, 0.1, 0.1], +[2.400000000000001, 0.1, 0.1], +[2.500000000000001, 0.1, 0.1], +[2.600000000000001, 0.1, 0.1], +[2.700000000000001, 0.1, 0.1], +[2.800000000000001, 0.1, 0.1], +[2.9000000000000012, 0.1, 0.1], +[3.0000000000000013, 0.1, 0.1], +[3.1000000000000014, 0.1, 0.1], +[3.2000000000000015, 0.1, 0.1], +[3.3000000000000016, 0.1, 0.1], +[3.4000000000000017, 0.1, 0.1], +[3.5000000000000018, 0.1, 0.1], +[3.600000000000002, 0.1, 0.1], +[3.700000000000002, 0.1, 0.1], +[3.800000000000002, 0.1, 0.1], +[3.900000000000002, 0.1, 0.1], +[0, 0.2, 0.1], +[0.1, 0.2, 0.1], +[0.2, 0.2, 0.1], +[0.30000000000000004, 0.2, 0.1], +[0.4, 0.2, 0.1], +[0.5, 0.2, 0.1], +[0.6, 0.2, 0.1], +[0.7, 0.2, 0.1], +[0.7999999999999999, 0.2, 0.1], +[0.8999999999999999, 0.2, 0.1], +[0.9999999999999999, 0.2, 0.1], +[1.0999999999999999, 0.2, 0.1], +[1.2, 0.2, 0.1], +[1.3, 0.2, 0.1], +[1.4000000000000001, 0.2, 0.1], +[1.5000000000000002, 0.2, 0.1], +[1.6000000000000003, 0.2, 0.1], +[1.7000000000000004, 0.2, 0.1], +[1.8000000000000005, 0.2, 0.1], +[1.9000000000000006, 0.2, 0.1], +[2.0000000000000004, 0.2, 0.1], +[2.1000000000000005, 0.2, 0.1], +[2.2000000000000006, 0.2, 0.1], +[2.3000000000000007, 0.2, 0.1], +[2.400000000000001, 0.2, 0.1], +[2.500000000000001, 0.2, 0.1], +[2.600000000000001, 0.2, 0.1], +[2.700000000000001, 0.2, 0.1], +[2.800000000000001, 0.2, 0.1], +[2.9000000000000012, 0.2, 0.1], +[3.0000000000000013, 0.2, 0.1], +[3.1000000000000014, 0.2, 0.1], +[3.2000000000000015, 0.2, 0.1], +[3.3000000000000016, 0.2, 0.1], +[3.4000000000000017, 0.2, 0.1], +[3.5000000000000018, 0.2, 0.1], +[3.600000000000002, 0.2, 0.1], +[3.700000000000002, 0.2, 0.1], +[3.800000000000002, 0.2, 0.1], +[0.1, 0.30000000000000004, 0.1], +[0.2, 0.30000000000000004, 0.1], +[0.30000000000000004, 0.30000000000000004, 0.1], +[0.4, 0.30000000000000004, 0.1], +[0.5, 0.30000000000000004, 0.1], +[0.6, 0.30000000000000004, 0.1], +[0.7, 0.30000000000000004, 0.1], +[0.7999999999999999, 0.30000000000000004, 0.1], +[0.8999999999999999, 0.30000000000000004, 0.1], +[0.9999999999999999, 0.30000000000000004, 0.1], +[1.0999999999999999, 0.30000000000000004, 0.1], +[1.2, 0.30000000000000004, 0.1], +[1.3, 0.30000000000000004, 0.1], +[1.4000000000000001, 0.30000000000000004, 0.1], +[1.5000000000000002, 0.30000000000000004, 0.1], +[1.6000000000000003, 0.30000000000000004, 0.1], +[1.7000000000000004, 0.30000000000000004, 0.1], +[1.8000000000000005, 0.30000000000000004, 0.1], +[1.9000000000000006, 0.30000000000000004, 0.1], +[2.0000000000000004, 0.30000000000000004, 0.1], +[2.1000000000000005, 0.30000000000000004, 0.1], +[2.2000000000000006, 0.30000000000000004, 0.1], +[2.3000000000000007, 0.30000000000000004, 0.1], +[2.400000000000001, 0.30000000000000004, 0.1], +[2.500000000000001, 0.30000000000000004, 0.1], +[2.600000000000001, 0.30000000000000004, 0.1], +[2.700000000000001, 0.30000000000000004, 0.1], +[2.800000000000001, 0.30000000000000004, 0.1], +[2.9000000000000012, 0.30000000000000004, 0.1], +[3.0000000000000013, 0.30000000000000004, 0.1], +[3.1000000000000014, 0.30000000000000004, 0.1], +[3.2000000000000015, 0.30000000000000004, 0.1], +[3.3000000000000016, 0.30000000000000004, 0.1], +[3.4000000000000017, 0.30000000000000004, 0.1], +[3.5000000000000018, 0.30000000000000004, 0.1], +[3.600000000000002, 0.30000000000000004, 0.1], +[3.700000000000002, 0.30000000000000004, 0.1], +[3.800000000000002, 0.30000000000000004, 0.1], +[0.1, 0.4, 0.1], +[0.2, 0.4, 0.1], +[0.30000000000000004, 0.4, 0.1], +[0.4, 0.4, 0.1], +[0.5, 0.4, 0.1], +[0.6, 0.4, 0.1], +[0.7, 0.4, 0.1], +[0.7999999999999999, 0.4, 0.1], +[0.8999999999999999, 0.4, 0.1], +[0.9999999999999999, 0.4, 0.1], +[1.0999999999999999, 0.4, 0.1], +[1.2, 0.4, 0.1], +[1.3, 0.4, 0.1], +[1.4000000000000001, 0.4, 0.1], +[1.5000000000000002, 0.4, 0.1], +[1.6000000000000003, 0.4, 0.1], +[1.7000000000000004, 0.4, 0.1], +[1.8000000000000005, 0.4, 0.1], +[1.9000000000000006, 0.4, 0.1], +[2.0000000000000004, 0.4, 0.1], +[2.1000000000000005, 0.4, 0.1], +[2.2000000000000006, 0.4, 0.1], +[2.3000000000000007, 0.4, 0.1], +[2.400000000000001, 0.4, 0.1], +[2.500000000000001, 0.4, 0.1], +[2.600000000000001, 0.4, 0.1], +[2.700000000000001, 0.4, 0.1], +[2.800000000000001, 0.4, 0.1], +[2.9000000000000012, 0.4, 0.1], +[3.0000000000000013, 0.4, 0.1], +[3.1000000000000014, 0.4, 0.1], +[3.2000000000000015, 0.4, 0.1], +[3.3000000000000016, 0.4, 0.1], +[3.4000000000000017, 0.4, 0.1], +[3.5000000000000018, 0.4, 0.1], +[3.600000000000002, 0.4, 0.1], +[3.700000000000002, 0.4, 0.1], +[0, 0, 0.2], +[0.1, 0, 0.2], +[0.2, 0, 0.2], +[0.30000000000000004, 0, 0.2], +[0.4, 0, 0.2], +[0.5, 0, 0.2], +[0.6, 0, 0.2], +[0.7, 0, 0.2], +[0.7999999999999999, 0, 0.2], +[0.8999999999999999, 0, 0.2], +[0.9999999999999999, 0, 0.2], +[1.0999999999999999, 0, 0.2], +[1.2, 0, 0.2], +[1.3, 0, 0.2], +[1.4000000000000001, 0, 0.2], +[1.5000000000000002, 0, 0.2], +[1.6000000000000003, 0, 0.2], +[1.7000000000000004, 0, 0.2], +[1.8000000000000005, 0, 0.2], +[1.9000000000000006, 0, 0.2], +[2.0000000000000004, 0, 0.2], +[2.1000000000000005, 0, 0.2], +[2.2000000000000006, 0, 0.2], +[2.3000000000000007, 0, 0.2], +[2.400000000000001, 0, 0.2], +[2.500000000000001, 0, 0.2], +[2.600000000000001, 0, 0.2], +[2.700000000000001, 0, 0.2], +[2.800000000000001, 0, 0.2], +[2.9000000000000012, 0, 0.2], +[3.0000000000000013, 0, 0.2], +[3.1000000000000014, 0, 0.2], +[3.2000000000000015, 0, 0.2], +[3.3000000000000016, 0, 0.2], +[3.4000000000000017, 0, 0.2], +[3.5000000000000018, 0, 0.2], +[3.600000000000002, 0, 0.2], +[3.700000000000002, 0, 0.2], +[3.800000000000002, 0, 0.2], +[3.900000000000002, 0, 0.2], +[0, 0.1, 0.2], +[0.1, 0.1, 0.2], +[3.800000000000002, 0.1, 0.2], +[3.900000000000002, 0.1, 0.2], +[0, 0.2, 0.2], +[0.1, 0.2, 0.2], +[3.800000000000002, 0.2, 0.2], +[0.1, 0.30000000000000004, 0.2], +[0.2, 0.30000000000000004, 0.2], +[0.30000000000000004, 0.30000000000000004, 0.2], +[0.4, 0.30000000000000004, 0.2], +[0.5, 0.30000000000000004, 0.2], +[0.6, 0.30000000000000004, 0.2], +[0.7, 0.30000000000000004, 0.2], +[0.7999999999999999, 0.30000000000000004, 0.2], +[0.8999999999999999, 0.30000000000000004, 0.2], +[0.9999999999999999, 0.30000000000000004, 0.2], +[1.0999999999999999, 0.30000000000000004, 0.2], +[1.2, 0.30000000000000004, 0.2], +[1.3, 0.30000000000000004, 0.2], +[1.4000000000000001, 0.30000000000000004, 0.2], +[1.5000000000000002, 0.30000000000000004, 0.2], +[1.6000000000000003, 0.30000000000000004, 0.2], +[1.7000000000000004, 0.30000000000000004, 0.2], +[1.8000000000000005, 0.30000000000000004, 0.2], +[1.9000000000000006, 0.30000000000000004, 0.2], +[2.0000000000000004, 0.30000000000000004, 0.2], +[2.1000000000000005, 0.30000000000000004, 0.2], +[2.2000000000000006, 0.30000000000000004, 0.2], +[2.3000000000000007, 0.30000000000000004, 0.2], +[2.400000000000001, 0.30000000000000004, 0.2], +[2.500000000000001, 0.30000000000000004, 0.2], +[2.600000000000001, 0.30000000000000004, 0.2], +[2.700000000000001, 0.30000000000000004, 0.2], +[2.800000000000001, 0.30000000000000004, 0.2], +[2.9000000000000012, 0.30000000000000004, 0.2], +[3.0000000000000013, 0.30000000000000004, 0.2], +[3.1000000000000014, 0.30000000000000004, 0.2], +[3.2000000000000015, 0.30000000000000004, 0.2], +[3.3000000000000016, 0.30000000000000004, 0.2], +[3.4000000000000017, 0.30000000000000004, 0.2], +[3.5000000000000018, 0.30000000000000004, 0.2], +[3.600000000000002, 0.30000000000000004, 0.2], +[3.700000000000002, 0.30000000000000004, 0.2], +[3.800000000000002, 0.30000000000000004, 0.2], +[0.1, 0.4, 0.2], +[0.2, 0.4, 0.2], +[0.30000000000000004, 0.4, 0.2], +[0.4, 0.4, 0.2], +[0.5, 0.4, 0.2], +[0.6, 0.4, 0.2], +[0.7, 0.4, 0.2], +[0.7999999999999999, 0.4, 0.2], +[0.8999999999999999, 0.4, 0.2], +[0.9999999999999999, 0.4, 0.2], +[1.0999999999999999, 0.4, 0.2], +[1.2, 0.4, 0.2], +[1.3, 0.4, 0.2], +[1.4000000000000001, 0.4, 0.2], +[1.5000000000000002, 0.4, 0.2], +[1.6000000000000003, 0.4, 0.2], +[1.7000000000000004, 0.4, 0.2], +[1.8000000000000005, 0.4, 0.2], +[1.9000000000000006, 0.4, 0.2], +[2.0000000000000004, 0.4, 0.2], +[2.1000000000000005, 0.4, 0.2], +[2.2000000000000006, 0.4, 0.2], +[2.3000000000000007, 0.4, 0.2], +[2.400000000000001, 0.4, 0.2], +[2.500000000000001, 0.4, 0.2], +[2.600000000000001, 0.4, 0.2], +[2.700000000000001, 0.4, 0.2], +[2.800000000000001, 0.4, 0.2], +[2.9000000000000012, 0.4, 0.2], +[3.0000000000000013, 0.4, 0.2], +[3.1000000000000014, 0.4, 0.2], +[3.2000000000000015, 0.4, 0.2], +[3.3000000000000016, 0.4, 0.2], +[3.4000000000000017, 0.4, 0.2], +[3.5000000000000018, 0.4, 0.2], +[3.600000000000002, 0.4, 0.2], +[3.700000000000002, 0.4, 0.2], +[0.2, 0.5, 0.2], +[0.30000000000000004, 0.5, 0.2], +[0.4, 0.5, 0.2], +[0.5, 0.5, 0.2], +[0.6, 0.5, 0.2], +[0.7, 0.5, 0.2], +[0.7999999999999999, 0.5, 0.2], +[0.8999999999999999, 0.5, 0.2], +[0.9999999999999999, 0.5, 0.2], +[1.0999999999999999, 0.5, 0.2], +[1.2, 0.5, 0.2], +[1.3, 0.5, 0.2], +[1.4000000000000001, 0.5, 0.2], +[1.5000000000000002, 0.5, 0.2], +[1.6000000000000003, 0.5, 0.2], +[1.7000000000000004, 0.5, 0.2], +[1.8000000000000005, 0.5, 0.2], +[1.9000000000000006, 0.5, 0.2], +[2.0000000000000004, 0.5, 0.2], +[2.1000000000000005, 0.5, 0.2], +[2.2000000000000006, 0.5, 0.2], +[2.3000000000000007, 0.5, 0.2], +[2.400000000000001, 0.5, 0.2], +[2.500000000000001, 0.5, 0.2], +[2.600000000000001, 0.5, 0.2], +[2.700000000000001, 0.5, 0.2], +[2.800000000000001, 0.5, 0.2], +[2.9000000000000012, 0.5, 0.2], +[3.0000000000000013, 0.5, 0.2], +[3.1000000000000014, 0.5, 0.2], +[3.2000000000000015, 0.5, 0.2], +[3.3000000000000016, 0.5, 0.2], +[3.4000000000000017, 0.5, 0.2], +[3.5000000000000018, 0.5, 0.2], +[3.600000000000002, 0.5, 0.2], +[3.700000000000002, 0.5, 0.2], +[0.2, 0.6, 0.2], +[0.30000000000000004, 0.6, 0.2], +[0.4, 0.6, 0.2], +[0.5, 0.6, 0.2], +[0.6, 0.6, 0.2], +[0.7, 0.6, 0.2], +[0.7999999999999999, 0.6, 0.2], +[0.8999999999999999, 0.6, 0.2], +[0.9999999999999999, 0.6, 0.2], +[1.0999999999999999, 0.6, 0.2], +[1.2, 0.6, 0.2], +[1.3, 0.6, 0.2], +[1.4000000000000001, 0.6, 0.2], +[1.5000000000000002, 0.6, 0.2], +[1.6000000000000003, 0.6, 0.2], +[1.7000000000000004, 0.6, 0.2], +[1.8000000000000005, 0.6, 0.2], +[1.9000000000000006, 0.6, 0.2], +[2.0000000000000004, 0.6, 0.2], +[2.1000000000000005, 0.6, 0.2], +[2.2000000000000006, 0.6, 0.2], +[2.3000000000000007, 0.6, 0.2], +[2.400000000000001, 0.6, 0.2], +[2.500000000000001, 0.6, 0.2], +[2.600000000000001, 0.6, 0.2], +[2.700000000000001, 0.6, 0.2], +[2.800000000000001, 0.6, 0.2], +[2.9000000000000012, 0.6, 0.2], +[3.0000000000000013, 0.6, 0.2], +[3.1000000000000014, 0.6, 0.2], +[3.2000000000000015, 0.6, 0.2], +[3.3000000000000016, 0.6, 0.2], +[3.4000000000000017, 0.6, 0.2], +[3.5000000000000018, 0.6, 0.2], +[3.600000000000002, 0.6, 0.2], +[0, 0, 0.30000000000000004], +[0.1, 0, 0.30000000000000004], +[0.2, 0, 0.30000000000000004], +[0.30000000000000004, 0, 0.30000000000000004], +[0.4, 0, 0.30000000000000004], +[0.5, 0, 0.30000000000000004], +[0.6, 0, 0.30000000000000004], +[0.7, 0, 0.30000000000000004], +[0.7999999999999999, 0, 0.30000000000000004], +[0.8999999999999999, 0, 0.30000000000000004], +[0.9999999999999999, 0, 0.30000000000000004], +[1.0999999999999999, 0, 0.30000000000000004], +[1.2, 0, 0.30000000000000004], +[1.3, 0, 0.30000000000000004], +[1.4000000000000001, 0, 0.30000000000000004], +[1.5000000000000002, 0, 0.30000000000000004], +[1.6000000000000003, 0, 0.30000000000000004], +[1.7000000000000004, 0, 0.30000000000000004], +[1.8000000000000005, 0, 0.30000000000000004], +[1.9000000000000006, 0, 0.30000000000000004], +[2.0000000000000004, 0, 0.30000000000000004], +[2.1000000000000005, 0, 0.30000000000000004], +[2.2000000000000006, 0, 0.30000000000000004], +[2.3000000000000007, 0, 0.30000000000000004], +[2.400000000000001, 0, 0.30000000000000004], +[2.500000000000001, 0, 0.30000000000000004], +[2.600000000000001, 0, 0.30000000000000004], +[2.700000000000001, 0, 0.30000000000000004], +[2.800000000000001, 0, 0.30000000000000004], +[2.9000000000000012, 0, 0.30000000000000004], +[3.0000000000000013, 0, 0.30000000000000004], +[3.1000000000000014, 0, 0.30000000000000004], +[3.2000000000000015, 0, 0.30000000000000004], +[3.3000000000000016, 0, 0.30000000000000004], +[3.4000000000000017, 0, 0.30000000000000004], +[3.5000000000000018, 0, 0.30000000000000004], +[3.600000000000002, 0, 0.30000000000000004], +[3.700000000000002, 0, 0.30000000000000004], +[3.800000000000002, 0, 0.30000000000000004], +[3.900000000000002, 0, 0.30000000000000004], +[0, 0.1, 0.30000000000000004], +[0.1, 0.1, 0.30000000000000004], +[3.800000000000002, 0.1, 0.30000000000000004], +[3.900000000000002, 0.1, 0.30000000000000004], +[0, 0.2, 0.30000000000000004], +[0.1, 0.2, 0.30000000000000004], +[3.800000000000002, 0.2, 0.30000000000000004], +[0.1, 0.30000000000000004, 0.30000000000000004], +[0.2, 0.30000000000000004, 0.30000000000000004], +[3.700000000000002, 0.30000000000000004, 0.30000000000000004], +[3.800000000000002, 0.30000000000000004, 0.30000000000000004], +[0.1, 0.4, 0.30000000000000004], +[0.2, 0.4, 0.30000000000000004], +[3.700000000000002, 0.4, 0.30000000000000004], +[0.2, 0.5, 0.30000000000000004], +[0.30000000000000004, 0.5, 0.30000000000000004], +[3.600000000000002, 0.5, 0.30000000000000004], +[3.700000000000002, 0.5, 0.30000000000000004], +[0.2, 0.6, 0.30000000000000004], +[0.30000000000000004, 0.6, 0.30000000000000004], +[0.4, 0.6, 0.30000000000000004], +[0.5, 0.6, 0.30000000000000004], +[0.6, 0.6, 0.30000000000000004], +[0.7, 0.6, 0.30000000000000004], +[0.7999999999999999, 0.6, 0.30000000000000004], +[0.8999999999999999, 0.6, 0.30000000000000004], +[0.9999999999999999, 0.6, 0.30000000000000004], +[1.0999999999999999, 0.6, 0.30000000000000004], +[1.2, 0.6, 0.30000000000000004], +[1.3, 0.6, 0.30000000000000004], +[1.4000000000000001, 0.6, 0.30000000000000004], +[1.5000000000000002, 0.6, 0.30000000000000004], +[1.6000000000000003, 0.6, 0.30000000000000004], +[1.7000000000000004, 0.6, 0.30000000000000004], +[1.8000000000000005, 0.6, 0.30000000000000004], +[1.9000000000000006, 0.6, 0.30000000000000004], +[2.0000000000000004, 0.6, 0.30000000000000004], +[2.1000000000000005, 0.6, 0.30000000000000004], +[2.2000000000000006, 0.6, 0.30000000000000004], +[2.3000000000000007, 0.6, 0.30000000000000004], +[2.400000000000001, 0.6, 0.30000000000000004], +[2.500000000000001, 0.6, 0.30000000000000004], +[2.600000000000001, 0.6, 0.30000000000000004], +[2.700000000000001, 0.6, 0.30000000000000004], +[2.800000000000001, 0.6, 0.30000000000000004], +[2.9000000000000012, 0.6, 0.30000000000000004], +[3.0000000000000013, 0.6, 0.30000000000000004], +[3.1000000000000014, 0.6, 0.30000000000000004], +[3.2000000000000015, 0.6, 0.30000000000000004], +[3.3000000000000016, 0.6, 0.30000000000000004], +[3.4000000000000017, 0.6, 0.30000000000000004], +[3.5000000000000018, 0.6, 0.30000000000000004], +[3.600000000000002, 0.6, 0.30000000000000004], +[0.30000000000000004, 0.7, 0.30000000000000004], +[0.4, 0.7, 0.30000000000000004], +[0.5, 0.7, 0.30000000000000004], +[0.6, 0.7, 0.30000000000000004], +[0.7, 0.7, 0.30000000000000004], +[0.7999999999999999, 0.7, 0.30000000000000004], +[0.8999999999999999, 0.7, 0.30000000000000004], +[0.9999999999999999, 0.7, 0.30000000000000004], +[1.0999999999999999, 0.7, 0.30000000000000004], +[1.2, 0.7, 0.30000000000000004], +[1.3, 0.7, 0.30000000000000004], +[1.4000000000000001, 0.7, 0.30000000000000004], +[1.5000000000000002, 0.7, 0.30000000000000004], +[1.6000000000000003, 0.7, 0.30000000000000004], +[1.7000000000000004, 0.7, 0.30000000000000004], +[1.8000000000000005, 0.7, 0.30000000000000004], +[1.9000000000000006, 0.7, 0.30000000000000004], +[2.0000000000000004, 0.7, 0.30000000000000004], +[2.1000000000000005, 0.7, 0.30000000000000004], +[2.2000000000000006, 0.7, 0.30000000000000004], +[2.3000000000000007, 0.7, 0.30000000000000004], +[2.400000000000001, 0.7, 0.30000000000000004], +[2.500000000000001, 0.7, 0.30000000000000004], +[2.600000000000001, 0.7, 0.30000000000000004], +[2.700000000000001, 0.7, 0.30000000000000004], +[2.800000000000001, 0.7, 0.30000000000000004], +[2.9000000000000012, 0.7, 0.30000000000000004], +[3.0000000000000013, 0.7, 0.30000000000000004], +[3.1000000000000014, 0.7, 0.30000000000000004], +[3.2000000000000015, 0.7, 0.30000000000000004], +[3.3000000000000016, 0.7, 0.30000000000000004], +[3.4000000000000017, 0.7, 0.30000000000000004], +[3.5000000000000018, 0.7, 0.30000000000000004], +[3.600000000000002, 0.7, 0.30000000000000004], +[0.30000000000000004, 0.7999999999999999, 0.30000000000000004], +[0.4, 0.7999999999999999, 0.30000000000000004], +[0.5, 0.7999999999999999, 0.30000000000000004], +[0.6, 0.7999999999999999, 0.30000000000000004], +[0.7, 0.7999999999999999, 0.30000000000000004], +[0.7999999999999999, 0.7999999999999999, 0.30000000000000004], +[0.8999999999999999, 0.7999999999999999, 0.30000000000000004], +[0.9999999999999999, 0.7999999999999999, 0.30000000000000004], +[1.0999999999999999, 0.7999999999999999, 0.30000000000000004], +[1.2, 0.7999999999999999, 0.30000000000000004], +[1.3, 0.7999999999999999, 0.30000000000000004], +[1.4000000000000001, 0.7999999999999999, 0.30000000000000004], +[1.5000000000000002, 0.7999999999999999, 0.30000000000000004], +[1.6000000000000003, 0.7999999999999999, 0.30000000000000004], +[1.7000000000000004, 0.7999999999999999, 0.30000000000000004], +[1.8000000000000005, 0.7999999999999999, 0.30000000000000004], +[1.9000000000000006, 0.7999999999999999, 0.30000000000000004], +[2.0000000000000004, 0.7999999999999999, 0.30000000000000004], +[2.1000000000000005, 0.7999999999999999, 0.30000000000000004], +[2.2000000000000006, 0.7999999999999999, 0.30000000000000004], +[2.3000000000000007, 0.7999999999999999, 0.30000000000000004], +[2.400000000000001, 0.7999999999999999, 0.30000000000000004], +[2.500000000000001, 0.7999999999999999, 0.30000000000000004], +[2.600000000000001, 0.7999999999999999, 0.30000000000000004], +[2.700000000000001, 0.7999999999999999, 0.30000000000000004], +[2.800000000000001, 0.7999999999999999, 0.30000000000000004], +[2.9000000000000012, 0.7999999999999999, 0.30000000000000004], +[3.0000000000000013, 0.7999999999999999, 0.30000000000000004], +[3.1000000000000014, 0.7999999999999999, 0.30000000000000004], +[3.2000000000000015, 0.7999999999999999, 0.30000000000000004], +[3.3000000000000016, 0.7999999999999999, 0.30000000000000004], +[3.4000000000000017, 0.7999999999999999, 0.30000000000000004], +[3.5000000000000018, 0.7999999999999999, 0.30000000000000004], +[0, 0, 0.4], +[0.1, 0, 0.4], +[0.2, 0, 0.4], +[0.30000000000000004, 0, 0.4], +[0.4, 0, 0.4], +[0.5, 0, 0.4], +[0.6, 0, 0.4], +[0.7, 0, 0.4], +[0.7999999999999999, 0, 0.4], +[0.8999999999999999, 0, 0.4], +[0.9999999999999999, 0, 0.4], +[1.0999999999999999, 0, 0.4], +[1.2, 0, 0.4], +[1.3, 0, 0.4], +[1.4000000000000001, 0, 0.4], +[1.5000000000000002, 0, 0.4], +[1.6000000000000003, 0, 0.4], +[1.7000000000000004, 0, 0.4], +[1.8000000000000005, 0, 0.4], +[1.9000000000000006, 0, 0.4], +[2.0000000000000004, 0, 0.4], +[2.1000000000000005, 0, 0.4], +[2.2000000000000006, 0, 0.4], +[2.3000000000000007, 0, 0.4], +[2.400000000000001, 0, 0.4], +[2.500000000000001, 0, 0.4], +[2.600000000000001, 0, 0.4], +[2.700000000000001, 0, 0.4], +[2.800000000000001, 0, 0.4], +[2.9000000000000012, 0, 0.4], +[3.0000000000000013, 0, 0.4], +[3.1000000000000014, 0, 0.4], +[3.2000000000000015, 0, 0.4], +[3.3000000000000016, 0, 0.4], +[3.4000000000000017, 0, 0.4], +[3.5000000000000018, 0, 0.4], +[3.600000000000002, 0, 0.4], +[3.700000000000002, 0, 0.4], +[3.800000000000002, 0, 0.4], +[3.900000000000002, 0, 0.4], +[0, 0.1, 0.4], +[0.1, 0.1, 0.4], +[3.800000000000002, 0.1, 0.4], +[3.900000000000002, 0.1, 0.4], +[0, 0.2, 0.4], +[0.1, 0.2, 0.4], +[3.800000000000002, 0.2, 0.4], +[0.1, 0.30000000000000004, 0.4], +[0.2, 0.30000000000000004, 0.4], +[3.700000000000002, 0.30000000000000004, 0.4], +[3.800000000000002, 0.30000000000000004, 0.4], +[0.1, 0.4, 0.4], +[0.2, 0.4, 0.4], +[3.700000000000002, 0.4, 0.4], +[0.2, 0.5, 0.4], +[0.30000000000000004, 0.5, 0.4], +[3.600000000000002, 0.5, 0.4], +[3.700000000000002, 0.5, 0.4], +[0.2, 0.6, 0.4], +[0.30000000000000004, 0.6, 0.4], +[3.600000000000002, 0.6, 0.4], +[0.30000000000000004, 0.7, 0.4], +[0.4, 0.7, 0.4], +[3.5000000000000018, 0.7, 0.4], +[3.600000000000002, 0.7, 0.4], +[0.30000000000000004, 0.7999999999999999, 0.4], +[0.4, 0.7999999999999999, 0.4], +[0.5, 0.7999999999999999, 0.4], +[0.6, 0.7999999999999999, 0.4], +[0.7, 0.7999999999999999, 0.4], +[0.7999999999999999, 0.7999999999999999, 0.4], +[0.8999999999999999, 0.7999999999999999, 0.4], +[0.9999999999999999, 0.7999999999999999, 0.4], +[1.0999999999999999, 0.7999999999999999, 0.4], +[1.2, 0.7999999999999999, 0.4], +[1.3, 0.7999999999999999, 0.4], +[1.4000000000000001, 0.7999999999999999, 0.4], +[1.5000000000000002, 0.7999999999999999, 0.4], +[1.6000000000000003, 0.7999999999999999, 0.4], +[1.7000000000000004, 0.7999999999999999, 0.4], +[1.8000000000000005, 0.7999999999999999, 0.4], +[1.9000000000000006, 0.7999999999999999, 0.4], +[2.0000000000000004, 0.7999999999999999, 0.4], +[2.1000000000000005, 0.7999999999999999, 0.4], +[2.2000000000000006, 0.7999999999999999, 0.4], +[2.3000000000000007, 0.7999999999999999, 0.4], +[2.400000000000001, 0.7999999999999999, 0.4], +[2.500000000000001, 0.7999999999999999, 0.4], +[2.600000000000001, 0.7999999999999999, 0.4], +[2.700000000000001, 0.7999999999999999, 0.4], +[2.800000000000001, 0.7999999999999999, 0.4], +[2.9000000000000012, 0.7999999999999999, 0.4], +[3.0000000000000013, 0.7999999999999999, 0.4], +[3.1000000000000014, 0.7999999999999999, 0.4], +[3.2000000000000015, 0.7999999999999999, 0.4], +[3.3000000000000016, 0.7999999999999999, 0.4], +[3.4000000000000017, 0.7999999999999999, 0.4], +[3.5000000000000018, 0.7999999999999999, 0.4], +[0.4, 0.8999999999999999, 0.4], +[0.5, 0.8999999999999999, 0.4], +[0.6, 0.8999999999999999, 0.4], +[0.7, 0.8999999999999999, 0.4], +[0.7999999999999999, 0.8999999999999999, 0.4], +[0.8999999999999999, 0.8999999999999999, 0.4], +[0.9999999999999999, 0.8999999999999999, 0.4], +[1.0999999999999999, 0.8999999999999999, 0.4], +[1.2, 0.8999999999999999, 0.4], +[1.3, 0.8999999999999999, 0.4], +[1.4000000000000001, 0.8999999999999999, 0.4], +[1.5000000000000002, 0.8999999999999999, 0.4], +[1.6000000000000003, 0.8999999999999999, 0.4], +[1.7000000000000004, 0.8999999999999999, 0.4], +[1.8000000000000005, 0.8999999999999999, 0.4], +[1.9000000000000006, 0.8999999999999999, 0.4], +[2.0000000000000004, 0.8999999999999999, 0.4], +[2.1000000000000005, 0.8999999999999999, 0.4], +[2.2000000000000006, 0.8999999999999999, 0.4], +[2.3000000000000007, 0.8999999999999999, 0.4], +[2.400000000000001, 0.8999999999999999, 0.4], +[2.500000000000001, 0.8999999999999999, 0.4], +[2.600000000000001, 0.8999999999999999, 0.4], +[2.700000000000001, 0.8999999999999999, 0.4], +[2.800000000000001, 0.8999999999999999, 0.4], +[2.9000000000000012, 0.8999999999999999, 0.4], +[3.0000000000000013, 0.8999999999999999, 0.4], +[3.1000000000000014, 0.8999999999999999, 0.4], +[3.2000000000000015, 0.8999999999999999, 0.4], +[3.3000000000000016, 0.8999999999999999, 0.4], +[3.4000000000000017, 0.8999999999999999, 0.4], +[3.5000000000000018, 0.8999999999999999, 0.4], +[0.4, 0.9999999999999999, 0.4], +[0.5, 0.9999999999999999, 0.4], +[0.6, 0.9999999999999999, 0.4], +[0.7, 0.9999999999999999, 0.4], +[0.7999999999999999, 0.9999999999999999, 0.4], +[0.8999999999999999, 0.9999999999999999, 0.4], +[0.9999999999999999, 0.9999999999999999, 0.4], +[1.0999999999999999, 0.9999999999999999, 0.4], +[1.2, 0.9999999999999999, 0.4], +[1.3, 0.9999999999999999, 0.4], +[1.4000000000000001, 0.9999999999999999, 0.4], +[1.5000000000000002, 0.9999999999999999, 0.4], +[1.6000000000000003, 0.9999999999999999, 0.4], +[1.7000000000000004, 0.9999999999999999, 0.4], +[1.8000000000000005, 0.9999999999999999, 0.4], +[1.9000000000000006, 0.9999999999999999, 0.4], +[2.0000000000000004, 0.9999999999999999, 0.4], +[2.1000000000000005, 0.9999999999999999, 0.4], +[2.2000000000000006, 0.9999999999999999, 0.4], +[2.3000000000000007, 0.9999999999999999, 0.4], +[2.400000000000001, 0.9999999999999999, 0.4], +[2.500000000000001, 0.9999999999999999, 0.4], +[2.600000000000001, 0.9999999999999999, 0.4], +[2.700000000000001, 0.9999999999999999, 0.4], +[2.800000000000001, 0.9999999999999999, 0.4], +[2.9000000000000012, 0.9999999999999999, 0.4], +[3.0000000000000013, 0.9999999999999999, 0.4], +[3.1000000000000014, 0.9999999999999999, 0.4], +[3.2000000000000015, 0.9999999999999999, 0.4], +[3.3000000000000016, 0.9999999999999999, 0.4], +[3.4000000000000017, 0.9999999999999999, 0.4], +[0, 0, 0.5], +[0.1, 0, 0.5], +[0.2, 0, 0.5], +[0.30000000000000004, 0, 0.5], +[0.4, 0, 0.5], +[0.5, 0, 0.5], +[0.6, 0, 0.5], +[0.7, 0, 0.5], +[0.7999999999999999, 0, 0.5], +[0.8999999999999999, 0, 0.5], +[0.9999999999999999, 0, 0.5], +[1.0999999999999999, 0, 0.5], +[1.2, 0, 0.5], +[1.3, 0, 0.5], +[1.4000000000000001, 0, 0.5], +[1.5000000000000002, 0, 0.5], +[1.6000000000000003, 0, 0.5], +[1.7000000000000004, 0, 0.5], +[1.8000000000000005, 0, 0.5], +[1.9000000000000006, 0, 0.5], +[2.0000000000000004, 0, 0.5], +[2.1000000000000005, 0, 0.5], +[2.2000000000000006, 0, 0.5], +[2.3000000000000007, 0, 0.5], +[2.400000000000001, 0, 0.5], +[2.500000000000001, 0, 0.5], +[2.600000000000001, 0, 0.5], +[2.700000000000001, 0, 0.5], +[2.800000000000001, 0, 0.5], +[2.9000000000000012, 0, 0.5], +[3.0000000000000013, 0, 0.5], +[3.1000000000000014, 0, 0.5], +[3.2000000000000015, 0, 0.5], +[3.3000000000000016, 0, 0.5], +[3.4000000000000017, 0, 0.5], +[3.5000000000000018, 0, 0.5], +[3.600000000000002, 0, 0.5], +[3.700000000000002, 0, 0.5], +[3.800000000000002, 0, 0.5], +[3.900000000000002, 0, 0.5], +[0, 0.1, 0.5], +[0.1, 0.1, 0.5], +[3.800000000000002, 0.1, 0.5], +[3.900000000000002, 0.1, 0.5], +[0, 0.2, 0.5], +[0.1, 0.2, 0.5], +[3.800000000000002, 0.2, 0.5], +[0.1, 0.30000000000000004, 0.5], +[0.2, 0.30000000000000004, 0.5], +[3.700000000000002, 0.30000000000000004, 0.5], +[3.800000000000002, 0.30000000000000004, 0.5], +[0.1, 0.4, 0.5], +[0.2, 0.4, 0.5], +[3.700000000000002, 0.4, 0.5], +[0.2, 0.5, 0.5], +[0.30000000000000004, 0.5, 0.5], +[3.600000000000002, 0.5, 0.5], +[3.700000000000002, 0.5, 0.5], +[0.2, 0.6, 0.5], +[0.30000000000000004, 0.6, 0.5], +[3.600000000000002, 0.6, 0.5], +[0.30000000000000004, 0.7, 0.5], +[0.4, 0.7, 0.5], +[3.5000000000000018, 0.7, 0.5], +[3.600000000000002, 0.7, 0.5], +[0.30000000000000004, 0.7999999999999999, 0.5], +[0.4, 0.7999999999999999, 0.5], +[3.5000000000000018, 0.7999999999999999, 0.5], +[0.4, 0.8999999999999999, 0.5], +[0.5, 0.8999999999999999, 0.5], +[3.4000000000000017, 0.8999999999999999, 0.5], +[3.5000000000000018, 0.8999999999999999, 0.5], +[0.4, 0.9999999999999999, 0.5], +[0.5, 0.9999999999999999, 0.5], +[0.6, 0.9999999999999999, 0.5], +[0.7, 0.9999999999999999, 0.5], +[0.7999999999999999, 0.9999999999999999, 0.5], +[0.8999999999999999, 0.9999999999999999, 0.5], +[0.9999999999999999, 0.9999999999999999, 0.5], +[1.0999999999999999, 0.9999999999999999, 0.5], +[1.2, 0.9999999999999999, 0.5], +[1.3, 0.9999999999999999, 0.5], +[1.4000000000000001, 0.9999999999999999, 0.5], +[1.5000000000000002, 0.9999999999999999, 0.5], +[1.6000000000000003, 0.9999999999999999, 0.5], +[1.7000000000000004, 0.9999999999999999, 0.5], +[1.8000000000000005, 0.9999999999999999, 0.5], +[1.9000000000000006, 0.9999999999999999, 0.5], +[2.0000000000000004, 0.9999999999999999, 0.5], +[2.1000000000000005, 0.9999999999999999, 0.5], +[2.2000000000000006, 0.9999999999999999, 0.5], +[2.3000000000000007, 0.9999999999999999, 0.5], +[2.400000000000001, 0.9999999999999999, 0.5], +[2.500000000000001, 0.9999999999999999, 0.5], +[2.600000000000001, 0.9999999999999999, 0.5], +[2.700000000000001, 0.9999999999999999, 0.5], +[2.800000000000001, 0.9999999999999999, 0.5], +[2.9000000000000012, 0.9999999999999999, 0.5], +[3.0000000000000013, 0.9999999999999999, 0.5], +[3.1000000000000014, 0.9999999999999999, 0.5], +[3.2000000000000015, 0.9999999999999999, 0.5], +[3.3000000000000016, 0.9999999999999999, 0.5], +[3.4000000000000017, 0.9999999999999999, 0.5], +[0.5, 1.0999999999999999, 0.5], +[0.6, 1.0999999999999999, 0.5], +[0.7, 1.0999999999999999, 0.5], +[0.7999999999999999, 1.0999999999999999, 0.5], +[0.8999999999999999, 1.0999999999999999, 0.5], +[0.9999999999999999, 1.0999999999999999, 0.5], +[1.0999999999999999, 1.0999999999999999, 0.5], +[1.2, 1.0999999999999999, 0.5], +[1.3, 1.0999999999999999, 0.5], +[1.4000000000000001, 1.0999999999999999, 0.5], +[1.5000000000000002, 1.0999999999999999, 0.5], +[1.6000000000000003, 1.0999999999999999, 0.5], +[1.7000000000000004, 1.0999999999999999, 0.5], +[1.8000000000000005, 1.0999999999999999, 0.5], +[1.9000000000000006, 1.0999999999999999, 0.5], +[2.0000000000000004, 1.0999999999999999, 0.5], +[2.1000000000000005, 1.0999999999999999, 0.5], +[2.2000000000000006, 1.0999999999999999, 0.5], +[2.3000000000000007, 1.0999999999999999, 0.5], +[2.400000000000001, 1.0999999999999999, 0.5], +[2.500000000000001, 1.0999999999999999, 0.5], +[2.600000000000001, 1.0999999999999999, 0.5], +[2.700000000000001, 1.0999999999999999, 0.5], +[2.800000000000001, 1.0999999999999999, 0.5], +[2.9000000000000012, 1.0999999999999999, 0.5], +[3.0000000000000013, 1.0999999999999999, 0.5], +[3.1000000000000014, 1.0999999999999999, 0.5], +[3.2000000000000015, 1.0999999999999999, 0.5], +[3.3000000000000016, 1.0999999999999999, 0.5], +[3.4000000000000017, 1.0999999999999999, 0.5], +[0.5, 1.2, 0.5], +[0.6, 1.2, 0.5], +[0.7, 1.2, 0.5], +[0.7999999999999999, 1.2, 0.5], +[0.8999999999999999, 1.2, 0.5], +[0.9999999999999999, 1.2, 0.5], +[1.0999999999999999, 1.2, 0.5], +[1.2, 1.2, 0.5], +[1.3, 1.2, 0.5], +[1.4000000000000001, 1.2, 0.5], +[1.5000000000000002, 1.2, 0.5], +[1.6000000000000003, 1.2, 0.5], +[1.7000000000000004, 1.2, 0.5], +[1.8000000000000005, 1.2, 0.5], +[1.9000000000000006, 1.2, 0.5], +[2.0000000000000004, 1.2, 0.5], +[2.1000000000000005, 1.2, 0.5], +[2.2000000000000006, 1.2, 0.5], +[2.3000000000000007, 1.2, 0.5], +[2.400000000000001, 1.2, 0.5], +[2.500000000000001, 1.2, 0.5], +[2.600000000000001, 1.2, 0.5], +[2.700000000000001, 1.2, 0.5], +[2.800000000000001, 1.2, 0.5], +[2.9000000000000012, 1.2, 0.5], +[3.0000000000000013, 1.2, 0.5], +[3.1000000000000014, 1.2, 0.5], +[3.2000000000000015, 1.2, 0.5], +[3.3000000000000016, 1.2, 0.5], +[0, 0, 0.6], +[0.1, 0, 0.6], +[0.2, 0, 0.6], +[0.30000000000000004, 0, 0.6], +[0.4, 0, 0.6], +[0.5, 0, 0.6], +[0.6, 0, 0.6], +[0.7, 0, 0.6], +[0.7999999999999999, 0, 0.6], +[0.8999999999999999, 0, 0.6], +[0.9999999999999999, 0, 0.6], +[1.0999999999999999, 0, 0.6], +[1.2, 0, 0.6], +[1.3, 0, 0.6], +[1.4000000000000001, 0, 0.6], +[1.5000000000000002, 0, 0.6], +[1.6000000000000003, 0, 0.6], +[1.7000000000000004, 0, 0.6], +[1.8000000000000005, 0, 0.6], +[1.9000000000000006, 0, 0.6], +[2.0000000000000004, 0, 0.6], +[2.1000000000000005, 0, 0.6], +[2.2000000000000006, 0, 0.6], +[2.3000000000000007, 0, 0.6], +[2.400000000000001, 0, 0.6], +[2.500000000000001, 0, 0.6], +[2.600000000000001, 0, 0.6], +[2.700000000000001, 0, 0.6], +[2.800000000000001, 0, 0.6], +[2.9000000000000012, 0, 0.6], +[3.0000000000000013, 0, 0.6], +[3.1000000000000014, 0, 0.6], +[3.2000000000000015, 0, 0.6], +[3.3000000000000016, 0, 0.6], +[3.4000000000000017, 0, 0.6], +[3.5000000000000018, 0, 0.6], +[3.600000000000002, 0, 0.6], +[3.700000000000002, 0, 0.6], +[3.800000000000002, 0, 0.6], +[3.900000000000002, 0, 0.6], +[0, 0.1, 0.6], +[0.1, 0.1, 0.6], +[3.800000000000002, 0.1, 0.6], +[3.900000000000002, 0.1, 0.6], +[0, 0.2, 0.6], +[0.1, 0.2, 0.6], +[3.800000000000002, 0.2, 0.6], +[0.1, 0.30000000000000004, 0.6], +[0.2, 0.30000000000000004, 0.6], +[3.700000000000002, 0.30000000000000004, 0.6], +[3.800000000000002, 0.30000000000000004, 0.6], +[0.1, 0.4, 0.6], +[0.2, 0.4, 0.6], +[3.700000000000002, 0.4, 0.6], +[0.2, 0.5, 0.6], +[0.30000000000000004, 0.5, 0.6], +[3.600000000000002, 0.5, 0.6], +[3.700000000000002, 0.5, 0.6], +[0.2, 0.6, 0.6], +[0.30000000000000004, 0.6, 0.6], +[3.600000000000002, 0.6, 0.6], +[0.30000000000000004, 0.7, 0.6], +[0.4, 0.7, 0.6], +[3.5000000000000018, 0.7, 0.6], +[3.600000000000002, 0.7, 0.6], +[0.30000000000000004, 0.7999999999999999, 0.6], +[0.4, 0.7999999999999999, 0.6], +[3.5000000000000018, 0.7999999999999999, 0.6], +[0.4, 0.8999999999999999, 0.6], +[0.5, 0.8999999999999999, 0.6], +[3.4000000000000017, 0.8999999999999999, 0.6], +[3.5000000000000018, 0.8999999999999999, 0.6], +[0.4, 0.9999999999999999, 0.6], +[0.5, 0.9999999999999999, 0.6], +[3.4000000000000017, 0.9999999999999999, 0.6], +[0.5, 1.0999999999999999, 0.6], +[0.6, 1.0999999999999999, 0.6], +[0.7, 1.0999999999999999, 0.6], +[0.7999999999999999, 1.0999999999999999, 0.6], +[0.8999999999999999, 1.0999999999999999, 0.6], +[0.9999999999999999, 1.0999999999999999, 0.6], +[1.0999999999999999, 1.0999999999999999, 0.6], +[1.2, 1.0999999999999999, 0.6], +[1.3, 1.0999999999999999, 0.6], +[1.4000000000000001, 1.0999999999999999, 0.6], +[1.5000000000000002, 1.0999999999999999, 0.6], +[1.6000000000000003, 1.0999999999999999, 0.6], +[1.7000000000000004, 1.0999999999999999, 0.6], +[1.8000000000000005, 1.0999999999999999, 0.6], +[1.9000000000000006, 1.0999999999999999, 0.6], +[2.0000000000000004, 1.0999999999999999, 0.6], +[2.1000000000000005, 1.0999999999999999, 0.6], +[2.2000000000000006, 1.0999999999999999, 0.6], +[2.3000000000000007, 1.0999999999999999, 0.6], +[2.400000000000001, 1.0999999999999999, 0.6], +[2.500000000000001, 1.0999999999999999, 0.6], +[2.600000000000001, 1.0999999999999999, 0.6], +[2.700000000000001, 1.0999999999999999, 0.6], +[2.800000000000001, 1.0999999999999999, 0.6], +[2.9000000000000012, 1.0999999999999999, 0.6], +[3.0000000000000013, 1.0999999999999999, 0.6], +[3.1000000000000014, 1.0999999999999999, 0.6], +[3.2000000000000015, 1.0999999999999999, 0.6], +[3.3000000000000016, 1.0999999999999999, 0.6], +[3.4000000000000017, 1.0999999999999999, 0.6], +[0.5, 1.2, 0.6], +[0.6, 1.2, 0.6], +[0.7, 1.2, 0.6], +[0.7999999999999999, 1.2, 0.6], +[0.8999999999999999, 1.2, 0.6], +[0.9999999999999999, 1.2, 0.6], +[1.0999999999999999, 1.2, 0.6], +[1.2, 1.2, 0.6], +[1.3, 1.2, 0.6], +[1.4000000000000001, 1.2, 0.6], +[1.5000000000000002, 1.2, 0.6], +[1.6000000000000003, 1.2, 0.6], +[1.7000000000000004, 1.2, 0.6], +[1.8000000000000005, 1.2, 0.6], +[1.9000000000000006, 1.2, 0.6], +[2.0000000000000004, 1.2, 0.6], +[2.1000000000000005, 1.2, 0.6], +[2.2000000000000006, 1.2, 0.6], +[2.3000000000000007, 1.2, 0.6], +[2.400000000000001, 1.2, 0.6], +[2.500000000000001, 1.2, 0.6], +[2.600000000000001, 1.2, 0.6], +[2.700000000000001, 1.2, 0.6], +[2.800000000000001, 1.2, 0.6], +[2.9000000000000012, 1.2, 0.6], +[3.0000000000000013, 1.2, 0.6], +[3.1000000000000014, 1.2, 0.6], +[3.2000000000000015, 1.2, 0.6], +[3.3000000000000016, 1.2, 0.6], +[0.6, 1.3, 0.6], +[0.7, 1.3, 0.6], +[0.7999999999999999, 1.3, 0.6], +[0.8999999999999999, 1.3, 0.6], +[0.9999999999999999, 1.3, 0.6], +[1.0999999999999999, 1.3, 0.6], +[1.2, 1.3, 0.6], +[1.3, 1.3, 0.6], +[1.4000000000000001, 1.3, 0.6], +[1.5000000000000002, 1.3, 0.6], +[1.6000000000000003, 1.3, 0.6], +[1.7000000000000004, 1.3, 0.6], +[1.8000000000000005, 1.3, 0.6], +[1.9000000000000006, 1.3, 0.6], +[2.0000000000000004, 1.3, 0.6], +[2.1000000000000005, 1.3, 0.6], +[2.2000000000000006, 1.3, 0.6], +[2.3000000000000007, 1.3, 0.6], +[2.400000000000001, 1.3, 0.6], +[2.500000000000001, 1.3, 0.6], +[2.600000000000001, 1.3, 0.6], +[2.700000000000001, 1.3, 0.6], +[2.800000000000001, 1.3, 0.6], +[2.9000000000000012, 1.3, 0.6], +[3.0000000000000013, 1.3, 0.6], +[3.1000000000000014, 1.3, 0.6], +[3.2000000000000015, 1.3, 0.6], +[3.3000000000000016, 1.3, 0.6], +[0.6, 1.4000000000000001, 0.6], +[0.7, 1.4000000000000001, 0.6], +[0.7999999999999999, 1.4000000000000001, 0.6], +[0.8999999999999999, 1.4000000000000001, 0.6], +[0.9999999999999999, 1.4000000000000001, 0.6], +[1.0999999999999999, 1.4000000000000001, 0.6], +[1.2, 1.4000000000000001, 0.6], +[1.3, 1.4000000000000001, 0.6], +[1.4000000000000001, 1.4000000000000001, 0.6], +[1.5000000000000002, 1.4000000000000001, 0.6], +[1.6000000000000003, 1.4000000000000001, 0.6], +[1.7000000000000004, 1.4000000000000001, 0.6], +[1.8000000000000005, 1.4000000000000001, 0.6], +[1.9000000000000006, 1.4000000000000001, 0.6], +[2.0000000000000004, 1.4000000000000001, 0.6], +[2.1000000000000005, 1.4000000000000001, 0.6], +[2.2000000000000006, 1.4000000000000001, 0.6], +[2.3000000000000007, 1.4000000000000001, 0.6], +[2.400000000000001, 1.4000000000000001, 0.6], +[2.500000000000001, 1.4000000000000001, 0.6], +[2.600000000000001, 1.4000000000000001, 0.6], +[2.700000000000001, 1.4000000000000001, 0.6], +[2.800000000000001, 1.4000000000000001, 0.6], +[2.9000000000000012, 1.4000000000000001, 0.6], +[3.0000000000000013, 1.4000000000000001, 0.6], +[3.1000000000000014, 1.4000000000000001, 0.6], +[3.2000000000000015, 1.4000000000000001, 0.6], +[3.3000000000000016, 1.4000000000000001, 0.6], +[0, 0, 0.7], +[0.1, 0, 0.7], +[0.2, 0, 0.7], +[0.30000000000000004, 0, 0.7], +[0.4, 0, 0.7], +[0.5, 0, 0.7], +[0.6, 0, 0.7], +[0.7, 0, 0.7], +[0.7999999999999999, 0, 0.7], +[0.8999999999999999, 0, 0.7], +[0.9999999999999999, 0, 0.7], +[1.0999999999999999, 0, 0.7], +[1.2, 0, 0.7], +[1.3, 0, 0.7], +[1.4000000000000001, 0, 0.7], +[1.5000000000000002, 0, 0.7], +[1.6000000000000003, 0, 0.7], +[1.7000000000000004, 0, 0.7], +[1.8000000000000005, 0, 0.7], +[1.9000000000000006, 0, 0.7], +[2.0000000000000004, 0, 0.7], +[2.1000000000000005, 0, 0.7], +[2.2000000000000006, 0, 0.7], +[2.3000000000000007, 0, 0.7], +[2.400000000000001, 0, 0.7], +[2.500000000000001, 0, 0.7], +[2.600000000000001, 0, 0.7], +[2.700000000000001, 0, 0.7], +[2.800000000000001, 0, 0.7], +[2.9000000000000012, 0, 0.7], +[3.0000000000000013, 0, 0.7], +[3.1000000000000014, 0, 0.7], +[3.2000000000000015, 0, 0.7], +[3.3000000000000016, 0, 0.7], +[3.4000000000000017, 0, 0.7], +[3.5000000000000018, 0, 0.7], +[3.600000000000002, 0, 0.7], +[3.700000000000002, 0, 0.7], +[3.800000000000002, 0, 0.7], +[3.900000000000002, 0, 0.7], +[0, 0.1, 0.7], +[0.1, 0.1, 0.7], +[3.800000000000002, 0.1, 0.7], +[3.900000000000002, 0.1, 0.7], +[0, 0.2, 0.7], +[0.1, 0.2, 0.7], +[3.800000000000002, 0.2, 0.7], +[0.1, 0.30000000000000004, 0.7], +[0.2, 0.30000000000000004, 0.7], +[3.700000000000002, 0.30000000000000004, 0.7], +[3.800000000000002, 0.30000000000000004, 0.7], +[0.1, 0.4, 0.7], +[0.2, 0.4, 0.7], +[3.700000000000002, 0.4, 0.7], +[0.2, 0.5, 0.7], +[0.30000000000000004, 0.5, 0.7], +[3.600000000000002, 0.5, 0.7], +[3.700000000000002, 0.5, 0.7], +[0.2, 0.6, 0.7], +[0.30000000000000004, 0.6, 0.7], +[3.600000000000002, 0.6, 0.7], +[0.30000000000000004, 0.7, 0.7], +[0.4, 0.7, 0.7], +[3.5000000000000018, 0.7, 0.7], +[3.600000000000002, 0.7, 0.7], +[0.30000000000000004, 0.7999999999999999, 0.7], +[0.4, 0.7999999999999999, 0.7], +[3.5000000000000018, 0.7999999999999999, 0.7], +[0.4, 0.8999999999999999, 0.7], +[0.5, 0.8999999999999999, 0.7], +[3.4000000000000017, 0.8999999999999999, 0.7], +[3.5000000000000018, 0.8999999999999999, 0.7], +[0.4, 0.9999999999999999, 0.7], +[0.5, 0.9999999999999999, 0.7], +[3.4000000000000017, 0.9999999999999999, 0.7], +[0.5, 1.0999999999999999, 0.7], +[0.6, 1.0999999999999999, 0.7], +[3.3000000000000016, 1.0999999999999999, 0.7], +[3.4000000000000017, 1.0999999999999999, 0.7], +[0.5, 1.2, 0.7], +[0.6, 1.2, 0.7], +[3.3000000000000016, 1.2, 0.7], +[0.6, 1.3, 0.7], +[0.7, 1.3, 0.7], +[0.7999999999999999, 1.3, 0.7], +[0.8999999999999999, 1.3, 0.7], +[0.9999999999999999, 1.3, 0.7], +[1.0999999999999999, 1.3, 0.7], +[1.2, 1.3, 0.7], +[1.3, 1.3, 0.7], +[1.4000000000000001, 1.3, 0.7], +[1.5000000000000002, 1.3, 0.7], +[1.6000000000000003, 1.3, 0.7], +[1.7000000000000004, 1.3, 0.7], +[1.8000000000000005, 1.3, 0.7], +[1.9000000000000006, 1.3, 0.7], +[2.0000000000000004, 1.3, 0.7], +[2.1000000000000005, 1.3, 0.7], +[2.2000000000000006, 1.3, 0.7], +[2.3000000000000007, 1.3, 0.7], +[2.400000000000001, 1.3, 0.7], +[2.500000000000001, 1.3, 0.7], +[2.600000000000001, 1.3, 0.7], +[2.700000000000001, 1.3, 0.7], +[2.800000000000001, 1.3, 0.7], +[2.9000000000000012, 1.3, 0.7], +[3.0000000000000013, 1.3, 0.7], +[3.1000000000000014, 1.3, 0.7], +[3.2000000000000015, 1.3, 0.7], +[3.3000000000000016, 1.3, 0.7], +[0.6, 1.4000000000000001, 0.7], +[0.7, 1.4000000000000001, 0.7], +[0.7999999999999999, 1.4000000000000001, 0.7], +[0.8999999999999999, 1.4000000000000001, 0.7], +[0.9999999999999999, 1.4000000000000001, 0.7], +[1.0999999999999999, 1.4000000000000001, 0.7], +[1.2, 1.4000000000000001, 0.7], +[1.3, 1.4000000000000001, 0.7], +[1.4000000000000001, 1.4000000000000001, 0.7], +[1.5000000000000002, 1.4000000000000001, 0.7], +[1.6000000000000003, 1.4000000000000001, 0.7], +[1.7000000000000004, 1.4000000000000001, 0.7], +[1.8000000000000005, 1.4000000000000001, 0.7], +[1.9000000000000006, 1.4000000000000001, 0.7], +[2.0000000000000004, 1.4000000000000001, 0.7], +[2.1000000000000005, 1.4000000000000001, 0.7], +[2.2000000000000006, 1.4000000000000001, 0.7], +[2.3000000000000007, 1.4000000000000001, 0.7], +[2.400000000000001, 1.4000000000000001, 0.7], +[2.500000000000001, 1.4000000000000001, 0.7], +[2.600000000000001, 1.4000000000000001, 0.7], +[2.700000000000001, 1.4000000000000001, 0.7], +[2.800000000000001, 1.4000000000000001, 0.7], +[2.9000000000000012, 1.4000000000000001, 0.7], +[3.0000000000000013, 1.4000000000000001, 0.7], +[3.1000000000000014, 1.4000000000000001, 0.7], +[3.2000000000000015, 1.4000000000000001, 0.7], +[3.3000000000000016, 1.4000000000000001, 0.7], +[0.7, 1.5000000000000002, 0.7], +[0.7999999999999999, 1.5000000000000002, 0.7], +[0.8999999999999999, 1.5000000000000002, 0.7], +[0.9999999999999999, 1.5000000000000002, 0.7], +[1.0999999999999999, 1.5000000000000002, 0.7], +[1.2, 1.5000000000000002, 0.7], +[1.3, 1.5000000000000002, 0.7], +[1.4000000000000001, 1.5000000000000002, 0.7], +[1.5000000000000002, 1.5000000000000002, 0.7], +[1.6000000000000003, 1.5000000000000002, 0.7], +[1.7000000000000004, 1.5000000000000002, 0.7], +[1.8000000000000005, 1.5000000000000002, 0.7], +[1.9000000000000006, 1.5000000000000002, 0.7], +[2.0000000000000004, 1.5000000000000002, 0.7], +[2.1000000000000005, 1.5000000000000002, 0.7], +[2.2000000000000006, 1.5000000000000002, 0.7], +[2.3000000000000007, 1.5000000000000002, 0.7], +[2.400000000000001, 1.5000000000000002, 0.7], +[2.500000000000001, 1.5000000000000002, 0.7], +[2.600000000000001, 1.5000000000000002, 0.7], +[2.700000000000001, 1.5000000000000002, 0.7], +[2.800000000000001, 1.5000000000000002, 0.7], +[2.9000000000000012, 1.5000000000000002, 0.7], +[3.0000000000000013, 1.5000000000000002, 0.7], +[3.1000000000000014, 1.5000000000000002, 0.7], +[3.2000000000000015, 1.5000000000000002, 0.7], +[0, 0, 0.7999999999999999], +[0.1, 0, 0.7999999999999999], +[0.2, 0, 0.7999999999999999], +[0.30000000000000004, 0, 0.7999999999999999], +[0.4, 0, 0.7999999999999999], +[0.5, 0, 0.7999999999999999], +[0.6, 0, 0.7999999999999999], +[0.7, 0, 0.7999999999999999], +[0.7999999999999999, 0, 0.7999999999999999], +[0.8999999999999999, 0, 0.7999999999999999], +[0.9999999999999999, 0, 0.7999999999999999], +[1.0999999999999999, 0, 0.7999999999999999], +[1.2, 0, 0.7999999999999999], +[1.3, 0, 0.7999999999999999], +[1.4000000000000001, 0, 0.7999999999999999], +[1.5000000000000002, 0, 0.7999999999999999], +[1.6000000000000003, 0, 0.7999999999999999], +[1.7000000000000004, 0, 0.7999999999999999], +[1.8000000000000005, 0, 0.7999999999999999], +[1.9000000000000006, 0, 0.7999999999999999], +[2.0000000000000004, 0, 0.7999999999999999], +[2.1000000000000005, 0, 0.7999999999999999], +[2.2000000000000006, 0, 0.7999999999999999], +[2.3000000000000007, 0, 0.7999999999999999], +[2.400000000000001, 0, 0.7999999999999999], +[2.500000000000001, 0, 0.7999999999999999], +[2.600000000000001, 0, 0.7999999999999999], +[2.700000000000001, 0, 0.7999999999999999], +[2.800000000000001, 0, 0.7999999999999999], +[2.9000000000000012, 0, 0.7999999999999999], +[3.0000000000000013, 0, 0.7999999999999999], +[3.1000000000000014, 0, 0.7999999999999999], +[3.2000000000000015, 0, 0.7999999999999999], +[3.3000000000000016, 0, 0.7999999999999999], +[3.4000000000000017, 0, 0.7999999999999999], +[3.5000000000000018, 0, 0.7999999999999999], +[3.600000000000002, 0, 0.7999999999999999], +[3.700000000000002, 0, 0.7999999999999999], +[3.800000000000002, 0, 0.7999999999999999], +[3.900000000000002, 0, 0.7999999999999999], +[0, 0.1, 0.7999999999999999], +[0.1, 0.1, 0.7999999999999999], +[3.800000000000002, 0.1, 0.7999999999999999], +[3.900000000000002, 0.1, 0.7999999999999999], +[0, 0.2, 0.7999999999999999], +[0.1, 0.2, 0.7999999999999999], +[3.800000000000002, 0.2, 0.7999999999999999], +[0.1, 0.30000000000000004, 0.7999999999999999], +[0.2, 0.30000000000000004, 0.7999999999999999], +[3.700000000000002, 0.30000000000000004, 0.7999999999999999], +[3.800000000000002, 0.30000000000000004, 0.7999999999999999], +[0.1, 0.4, 0.7999999999999999], +[0.2, 0.4, 0.7999999999999999], +[3.700000000000002, 0.4, 0.7999999999999999], +[0.2, 0.5, 0.7999999999999999], +[0.30000000000000004, 0.5, 0.7999999999999999], +[3.600000000000002, 0.5, 0.7999999999999999], +[3.700000000000002, 0.5, 0.7999999999999999], +[0.2, 0.6, 0.7999999999999999], +[0.30000000000000004, 0.6, 0.7999999999999999], +[3.600000000000002, 0.6, 0.7999999999999999], +[0.30000000000000004, 0.7, 0.7999999999999999], +[0.4, 0.7, 0.7999999999999999], +[3.5000000000000018, 0.7, 0.7999999999999999], +[3.600000000000002, 0.7, 0.7999999999999999], +[0.30000000000000004, 0.7999999999999999, 0.7999999999999999], +[0.4, 0.7999999999999999, 0.7999999999999999], +[3.5000000000000018, 0.7999999999999999, 0.7999999999999999], +[0.4, 0.8999999999999999, 0.7999999999999999], +[0.5, 0.8999999999999999, 0.7999999999999999], +[3.4000000000000017, 0.8999999999999999, 0.7999999999999999], +[3.5000000000000018, 0.8999999999999999, 0.7999999999999999], +[0.4, 0.9999999999999999, 0.7999999999999999], +[0.5, 0.9999999999999999, 0.7999999999999999], +[3.4000000000000017, 0.9999999999999999, 0.7999999999999999], +[0.5, 1.0999999999999999, 0.7999999999999999], +[0.6, 1.0999999999999999, 0.7999999999999999], +[3.3000000000000016, 1.0999999999999999, 0.7999999999999999], +[3.4000000000000017, 1.0999999999999999, 0.7999999999999999], +[0.5, 1.2, 0.7999999999999999], +[0.6, 1.2, 0.7999999999999999], +[3.3000000000000016, 1.2, 0.7999999999999999], +[0.6, 1.3, 0.7999999999999999], +[0.7, 1.3, 0.7999999999999999], +[3.2000000000000015, 1.3, 0.7999999999999999], +[3.3000000000000016, 1.3, 0.7999999999999999], +[0.6, 1.4000000000000001, 0.7999999999999999], +[0.7, 1.4000000000000001, 0.7999999999999999], +[3.2000000000000015, 1.4000000000000001, 0.7999999999999999], +[3.3000000000000016, 1.4000000000000001, 0.7999999999999999], +[0.7, 1.5000000000000002, 0.7999999999999999], +[0.7999999999999999, 1.5000000000000002, 0.7999999999999999], +[0.8999999999999999, 1.5000000000000002, 0.7999999999999999], +[0.9999999999999999, 1.5000000000000002, 0.7999999999999999], +[1.0999999999999999, 1.5000000000000002, 0.7999999999999999], +[1.2, 1.5000000000000002, 0.7999999999999999], +[1.3, 1.5000000000000002, 0.7999999999999999], +[1.4000000000000001, 1.5000000000000002, 0.7999999999999999], +[1.5000000000000002, 1.5000000000000002, 0.7999999999999999], +[1.6000000000000003, 1.5000000000000002, 0.7999999999999999], +[1.7000000000000004, 1.5000000000000002, 0.7999999999999999], +[1.8000000000000005, 1.5000000000000002, 0.7999999999999999], +[1.9000000000000006, 1.5000000000000002, 0.7999999999999999], +[2.0000000000000004, 1.5000000000000002, 0.7999999999999999], +[2.1000000000000005, 1.5000000000000002, 0.7999999999999999], +[2.2000000000000006, 1.5000000000000002, 0.7999999999999999], +[2.3000000000000007, 1.5000000000000002, 0.7999999999999999], +[2.400000000000001, 1.5000000000000002, 0.7999999999999999], +[2.500000000000001, 1.5000000000000002, 0.7999999999999999], +[2.600000000000001, 1.5000000000000002, 0.7999999999999999], +[2.700000000000001, 1.5000000000000002, 0.7999999999999999], +[2.800000000000001, 1.5000000000000002, 0.7999999999999999], +[2.9000000000000012, 1.5000000000000002, 0.7999999999999999], +[3.0000000000000013, 1.5000000000000002, 0.7999999999999999], +[3.1000000000000014, 1.5000000000000002, 0.7999999999999999], +[3.2000000000000015, 1.5000000000000002, 0.7999999999999999], +[0.7999999999999999, 1.6000000000000003, 0.7999999999999999], +[0.8999999999999999, 1.6000000000000003, 0.7999999999999999], +[0.9999999999999999, 1.6000000000000003, 0.7999999999999999], +[1.0999999999999999, 1.6000000000000003, 0.7999999999999999], +[1.2, 1.6000000000000003, 0.7999999999999999], +[1.3, 1.6000000000000003, 0.7999999999999999], +[1.4000000000000001, 1.6000000000000003, 0.7999999999999999], +[1.5000000000000002, 1.6000000000000003, 0.7999999999999999], +[1.6000000000000003, 1.6000000000000003, 0.7999999999999999], +[1.7000000000000004, 1.6000000000000003, 0.7999999999999999], +[1.8000000000000005, 1.6000000000000003, 0.7999999999999999], +[1.9000000000000006, 1.6000000000000003, 0.7999999999999999], +[2.0000000000000004, 1.6000000000000003, 0.7999999999999999], +[2.1000000000000005, 1.6000000000000003, 0.7999999999999999], +[2.2000000000000006, 1.6000000000000003, 0.7999999999999999], +[2.3000000000000007, 1.6000000000000003, 0.7999999999999999], +[2.400000000000001, 1.6000000000000003, 0.7999999999999999], +[2.500000000000001, 1.6000000000000003, 0.7999999999999999], +[2.600000000000001, 1.6000000000000003, 0.7999999999999999], +[2.700000000000001, 1.6000000000000003, 0.7999999999999999], +[2.800000000000001, 1.6000000000000003, 0.7999999999999999], +[2.9000000000000012, 1.6000000000000003, 0.7999999999999999], +[3.0000000000000013, 1.6000000000000003, 0.7999999999999999], +[3.1000000000000014, 1.6000000000000003, 0.7999999999999999], +[0.7999999999999999, 1.7000000000000004, 0.7999999999999999], +[0.8999999999999999, 1.7000000000000004, 0.7999999999999999], +[0.9999999999999999, 1.7000000000000004, 0.7999999999999999], +[1.0999999999999999, 1.7000000000000004, 0.7999999999999999], +[1.2, 1.7000000000000004, 0.7999999999999999], +[1.3, 1.7000000000000004, 0.7999999999999999], +[1.4000000000000001, 1.7000000000000004, 0.7999999999999999], +[1.5000000000000002, 1.7000000000000004, 0.7999999999999999], +[1.6000000000000003, 1.7000000000000004, 0.7999999999999999], +[1.7000000000000004, 1.7000000000000004, 0.7999999999999999], +[1.8000000000000005, 1.7000000000000004, 0.7999999999999999], +[1.9000000000000006, 1.7000000000000004, 0.7999999999999999], +[2.0000000000000004, 1.7000000000000004, 0.7999999999999999], +[2.1000000000000005, 1.7000000000000004, 0.7999999999999999], +[2.2000000000000006, 1.7000000000000004, 0.7999999999999999], +[2.3000000000000007, 1.7000000000000004, 0.7999999999999999], +[2.400000000000001, 1.7000000000000004, 0.7999999999999999], +[2.500000000000001, 1.7000000000000004, 0.7999999999999999], +[2.600000000000001, 1.7000000000000004, 0.7999999999999999], +[2.700000000000001, 1.7000000000000004, 0.7999999999999999], +[2.800000000000001, 1.7000000000000004, 0.7999999999999999], +[2.9000000000000012, 1.7000000000000004, 0.7999999999999999], +[3.0000000000000013, 1.7000000000000004, 0.7999999999999999], +[3.1000000000000014, 1.7000000000000004, 0.7999999999999999], +[0, 0, 0.8999999999999999], +[0.1, 0, 0.8999999999999999], +[0.2, 0, 0.8999999999999999], +[0.30000000000000004, 0, 0.8999999999999999], +[0.4, 0, 0.8999999999999999], +[0.5, 0, 0.8999999999999999], +[0.6, 0, 0.8999999999999999], +[0.7, 0, 0.8999999999999999], +[0.7999999999999999, 0, 0.8999999999999999], +[0.8999999999999999, 0, 0.8999999999999999], +[0.9999999999999999, 0, 0.8999999999999999], +[1.0999999999999999, 0, 0.8999999999999999], +[1.2, 0, 0.8999999999999999], +[1.3, 0, 0.8999999999999999], +[1.4000000000000001, 0, 0.8999999999999999], +[1.5000000000000002, 0, 0.8999999999999999], +[1.6000000000000003, 0, 0.8999999999999999], +[1.7000000000000004, 0, 0.8999999999999999], +[1.8000000000000005, 0, 0.8999999999999999], +[1.9000000000000006, 0, 0.8999999999999999], +[2.0000000000000004, 0, 0.8999999999999999], +[2.1000000000000005, 0, 0.8999999999999999], +[2.2000000000000006, 0, 0.8999999999999999], +[2.3000000000000007, 0, 0.8999999999999999], +[2.400000000000001, 0, 0.8999999999999999], +[2.500000000000001, 0, 0.8999999999999999], +[2.600000000000001, 0, 0.8999999999999999], +[2.700000000000001, 0, 0.8999999999999999], +[2.800000000000001, 0, 0.8999999999999999], +[2.9000000000000012, 0, 0.8999999999999999], +[3.0000000000000013, 0, 0.8999999999999999], +[3.1000000000000014, 0, 0.8999999999999999], +[3.2000000000000015, 0, 0.8999999999999999], +[3.3000000000000016, 0, 0.8999999999999999], +[3.4000000000000017, 0, 0.8999999999999999], +[3.5000000000000018, 0, 0.8999999999999999], +[3.600000000000002, 0, 0.8999999999999999], +[3.700000000000002, 0, 0.8999999999999999], +[3.800000000000002, 0, 0.8999999999999999], +[3.900000000000002, 0, 0.8999999999999999], +[0, 0.1, 0.8999999999999999], +[0.1, 0.1, 0.8999999999999999], +[3.800000000000002, 0.1, 0.8999999999999999], +[3.900000000000002, 0.1, 0.8999999999999999], +[0, 0.2, 0.8999999999999999], +[0.1, 0.2, 0.8999999999999999], +[3.800000000000002, 0.2, 0.8999999999999999], +[0.1, 0.30000000000000004, 0.8999999999999999], +[0.2, 0.30000000000000004, 0.8999999999999999], +[3.700000000000002, 0.30000000000000004, 0.8999999999999999], +[3.800000000000002, 0.30000000000000004, 0.8999999999999999], +[0.1, 0.4, 0.8999999999999999], +[0.2, 0.4, 0.8999999999999999], +[3.700000000000002, 0.4, 0.8999999999999999], +[0.2, 0.5, 0.8999999999999999], +[0.30000000000000004, 0.5, 0.8999999999999999], +[3.600000000000002, 0.5, 0.8999999999999999], +[3.700000000000002, 0.5, 0.8999999999999999], +[0.2, 0.6, 0.8999999999999999], +[0.30000000000000004, 0.6, 0.8999999999999999], +[3.600000000000002, 0.6, 0.8999999999999999], +[0.30000000000000004, 0.7, 0.8999999999999999], +[0.4, 0.7, 0.8999999999999999], +[3.5000000000000018, 0.7, 0.8999999999999999], +[3.600000000000002, 0.7, 0.8999999999999999], +[0.30000000000000004, 0.7999999999999999, 0.8999999999999999], +[0.4, 0.7999999999999999, 0.8999999999999999], +[3.5000000000000018, 0.7999999999999999, 0.8999999999999999], +[0.4, 0.8999999999999999, 0.8999999999999999], +[0.5, 0.8999999999999999, 0.8999999999999999], +[3.4000000000000017, 0.8999999999999999, 0.8999999999999999], +[3.5000000000000018, 0.8999999999999999, 0.8999999999999999], +[0.4, 0.9999999999999999, 0.8999999999999999], +[0.5, 0.9999999999999999, 0.8999999999999999], +[3.4000000000000017, 0.9999999999999999, 0.8999999999999999], +[0.5, 1.0999999999999999, 0.8999999999999999], +[0.6, 1.0999999999999999, 0.8999999999999999], +[3.3000000000000016, 1.0999999999999999, 0.8999999999999999], +[3.4000000000000017, 1.0999999999999999, 0.8999999999999999], +[0.5, 1.2, 0.8999999999999999], +[0.6, 1.2, 0.8999999999999999], +[3.3000000000000016, 1.2, 0.8999999999999999], +[0.6, 1.3, 0.8999999999999999], +[0.7, 1.3, 0.8999999999999999], +[3.2000000000000015, 1.3, 0.8999999999999999], +[3.3000000000000016, 1.3, 0.8999999999999999], +[0.6, 1.4000000000000001, 0.8999999999999999], +[0.7, 1.4000000000000001, 0.8999999999999999], +[3.2000000000000015, 1.4000000000000001, 0.8999999999999999], +[3.3000000000000016, 1.4000000000000001, 0.8999999999999999], +[0.7, 1.5000000000000002, 0.8999999999999999], +[0.7999999999999999, 1.5000000000000002, 0.8999999999999999], +[3.1000000000000014, 1.5000000000000002, 0.8999999999999999], +[3.2000000000000015, 1.5000000000000002, 0.8999999999999999], +[0.7999999999999999, 1.6000000000000003, 0.8999999999999999], +[3.1000000000000014, 1.6000000000000003, 0.8999999999999999], +[0.7999999999999999, 1.7000000000000004, 0.8999999999999999], +[0.8999999999999999, 1.7000000000000004, 0.8999999999999999], +[0.9999999999999999, 1.7000000000000004, 0.8999999999999999], +[1.0999999999999999, 1.7000000000000004, 0.8999999999999999], +[1.2, 1.7000000000000004, 0.8999999999999999], +[1.3, 1.7000000000000004, 0.8999999999999999], +[1.4000000000000001, 1.7000000000000004, 0.8999999999999999], +[1.5000000000000002, 1.7000000000000004, 0.8999999999999999], +[1.6000000000000003, 1.7000000000000004, 0.8999999999999999], +[1.7000000000000004, 1.7000000000000004, 0.8999999999999999], +[1.8000000000000005, 1.7000000000000004, 0.8999999999999999], +[1.9000000000000006, 1.7000000000000004, 0.8999999999999999], +[2.0000000000000004, 1.7000000000000004, 0.8999999999999999], +[2.1000000000000005, 1.7000000000000004, 0.8999999999999999], +[2.2000000000000006, 1.7000000000000004, 0.8999999999999999], +[2.3000000000000007, 1.7000000000000004, 0.8999999999999999], +[2.400000000000001, 1.7000000000000004, 0.8999999999999999], +[2.500000000000001, 1.7000000000000004, 0.8999999999999999], +[2.600000000000001, 1.7000000000000004, 0.8999999999999999], +[2.700000000000001, 1.7000000000000004, 0.8999999999999999], +[2.800000000000001, 1.7000000000000004, 0.8999999999999999], +[2.9000000000000012, 1.7000000000000004, 0.8999999999999999], +[3.0000000000000013, 1.7000000000000004, 0.8999999999999999], +[3.1000000000000014, 1.7000000000000004, 0.8999999999999999], +[0.8999999999999999, 1.8000000000000005, 0.8999999999999999], +[0.9999999999999999, 1.8000000000000005, 0.8999999999999999], +[1.0999999999999999, 1.8000000000000005, 0.8999999999999999], +[1.2, 1.8000000000000005, 0.8999999999999999], +[1.3, 1.8000000000000005, 0.8999999999999999], +[1.4000000000000001, 1.8000000000000005, 0.8999999999999999], +[1.5000000000000002, 1.8000000000000005, 0.8999999999999999], +[1.6000000000000003, 1.8000000000000005, 0.8999999999999999], +[1.7000000000000004, 1.8000000000000005, 0.8999999999999999], +[1.8000000000000005, 1.8000000000000005, 0.8999999999999999], +[1.9000000000000006, 1.8000000000000005, 0.8999999999999999], +[2.0000000000000004, 1.8000000000000005, 0.8999999999999999], +[2.1000000000000005, 1.8000000000000005, 0.8999999999999999], +[2.2000000000000006, 1.8000000000000005, 0.8999999999999999], +[2.3000000000000007, 1.8000000000000005, 0.8999999999999999], +[2.400000000000001, 1.8000000000000005, 0.8999999999999999], +[2.500000000000001, 1.8000000000000005, 0.8999999999999999], +[2.600000000000001, 1.8000000000000005, 0.8999999999999999], +[2.700000000000001, 1.8000000000000005, 0.8999999999999999], +[2.800000000000001, 1.8000000000000005, 0.8999999999999999], +[2.9000000000000012, 1.8000000000000005, 0.8999999999999999], +[3.0000000000000013, 1.8000000000000005, 0.8999999999999999], +[3.1000000000000014, 1.8000000000000005, 0.8999999999999999], +[0.8999999999999999, 1.9000000000000006, 0.8999999999999999], +[0.9999999999999999, 1.9000000000000006, 0.8999999999999999], +[1.0999999999999999, 1.9000000000000006, 0.8999999999999999], +[1.2, 1.9000000000000006, 0.8999999999999999], +[1.3, 1.9000000000000006, 0.8999999999999999], +[1.4000000000000001, 1.9000000000000006, 0.8999999999999999], +[1.5000000000000002, 1.9000000000000006, 0.8999999999999999], +[1.6000000000000003, 1.9000000000000006, 0.8999999999999999], +[1.7000000000000004, 1.9000000000000006, 0.8999999999999999], +[1.8000000000000005, 1.9000000000000006, 0.8999999999999999], +[1.9000000000000006, 1.9000000000000006, 0.8999999999999999], +[2.0000000000000004, 1.9000000000000006, 0.8999999999999999], +[2.1000000000000005, 1.9000000000000006, 0.8999999999999999], +[2.2000000000000006, 1.9000000000000006, 0.8999999999999999], +[2.3000000000000007, 1.9000000000000006, 0.8999999999999999], +[2.400000000000001, 1.9000000000000006, 0.8999999999999999], +[2.500000000000001, 1.9000000000000006, 0.8999999999999999], +[2.600000000000001, 1.9000000000000006, 0.8999999999999999], +[2.700000000000001, 1.9000000000000006, 0.8999999999999999], +[2.800000000000001, 1.9000000000000006, 0.8999999999999999], +[2.9000000000000012, 1.9000000000000006, 0.8999999999999999], +[3.0000000000000013, 1.9000000000000006, 0.8999999999999999], +[0.8999999999999999, 2.0000000000000004, 0.8999999999999999], +[0.9999999999999999, 2.0000000000000004, 0.8999999999999999], +[1.0999999999999999, 2.0000000000000004, 0.8999999999999999], +[1.2, 2.0000000000000004, 0.8999999999999999], +[1.3, 2.0000000000000004, 0.8999999999999999], +[1.4000000000000001, 2.0000000000000004, 0.8999999999999999], +[1.5000000000000002, 2.0000000000000004, 0.8999999999999999], +[1.6000000000000003, 2.0000000000000004, 0.8999999999999999], +[1.7000000000000004, 2.0000000000000004, 0.8999999999999999], +[1.8000000000000005, 2.0000000000000004, 0.8999999999999999], +[1.9000000000000006, 2.0000000000000004, 0.8999999999999999], +[2.0000000000000004, 2.0000000000000004, 0.8999999999999999], +[2.1000000000000005, 2.0000000000000004, 0.8999999999999999], +[2.2000000000000006, 2.0000000000000004, 0.8999999999999999], +[2.3000000000000007, 2.0000000000000004, 0.8999999999999999], +[2.400000000000001, 2.0000000000000004, 0.8999999999999999], +[2.500000000000001, 2.0000000000000004, 0.8999999999999999], +[2.600000000000001, 2.0000000000000004, 0.8999999999999999], +[2.700000000000001, 2.0000000000000004, 0.8999999999999999], +[2.800000000000001, 2.0000000000000004, 0.8999999999999999], +[2.9000000000000012, 2.0000000000000004, 0.8999999999999999], +[3.0000000000000013, 2.0000000000000004, 0.8999999999999999], +[0, 0, 0.9999999999999999], +[0.1, 0, 0.9999999999999999], +[0.2, 0, 0.9999999999999999], +[0.30000000000000004, 0, 0.9999999999999999], +[0.4, 0, 0.9999999999999999], +[0.5, 0, 0.9999999999999999], +[0.6, 0, 0.9999999999999999], +[0.7, 0, 0.9999999999999999], +[0.7999999999999999, 0, 0.9999999999999999], +[0.8999999999999999, 0, 0.9999999999999999], +[0.9999999999999999, 0, 0.9999999999999999], +[1.0999999999999999, 0, 0.9999999999999999], +[1.2, 0, 0.9999999999999999], +[1.3, 0, 0.9999999999999999], +[1.4000000000000001, 0, 0.9999999999999999], +[1.5000000000000002, 0, 0.9999999999999999], +[1.6000000000000003, 0, 0.9999999999999999], +[1.7000000000000004, 0, 0.9999999999999999], +[1.8000000000000005, 0, 0.9999999999999999], +[1.9000000000000006, 0, 0.9999999999999999], +[2.0000000000000004, 0, 0.9999999999999999], +[2.1000000000000005, 0, 0.9999999999999999], +[2.2000000000000006, 0, 0.9999999999999999], +[2.3000000000000007, 0, 0.9999999999999999], +[2.400000000000001, 0, 0.9999999999999999], +[2.500000000000001, 0, 0.9999999999999999], +[2.600000000000001, 0, 0.9999999999999999], +[2.700000000000001, 0, 0.9999999999999999], +[2.800000000000001, 0, 0.9999999999999999], +[2.9000000000000012, 0, 0.9999999999999999], +[3.0000000000000013, 0, 0.9999999999999999], +[3.1000000000000014, 0, 0.9999999999999999], +[3.2000000000000015, 0, 0.9999999999999999], +[3.3000000000000016, 0, 0.9999999999999999], +[3.4000000000000017, 0, 0.9999999999999999], +[3.5000000000000018, 0, 0.9999999999999999], +[3.600000000000002, 0, 0.9999999999999999], +[3.700000000000002, 0, 0.9999999999999999], +[3.800000000000002, 0, 0.9999999999999999], +[3.900000000000002, 0, 0.9999999999999999], +[0, 0.1, 0.9999999999999999], +[0.1, 0.1, 0.9999999999999999], +[3.800000000000002, 0.1, 0.9999999999999999], +[3.900000000000002, 0.1, 0.9999999999999999], +[0, 0.2, 0.9999999999999999], +[0.1, 0.2, 0.9999999999999999], +[3.800000000000002, 0.2, 0.9999999999999999], +[0.1, 0.30000000000000004, 0.9999999999999999], +[0.2, 0.30000000000000004, 0.9999999999999999], +[3.700000000000002, 0.30000000000000004, 0.9999999999999999], +[3.800000000000002, 0.30000000000000004, 0.9999999999999999], +[0.1, 0.4, 0.9999999999999999], +[0.2, 0.4, 0.9999999999999999], +[3.700000000000002, 0.4, 0.9999999999999999], +[0.2, 0.5, 0.9999999999999999], +[0.30000000000000004, 0.5, 0.9999999999999999], +[3.600000000000002, 0.5, 0.9999999999999999], +[3.700000000000002, 0.5, 0.9999999999999999], +[0.2, 0.6, 0.9999999999999999], +[0.30000000000000004, 0.6, 0.9999999999999999], +[3.600000000000002, 0.6, 0.9999999999999999], +[0.30000000000000004, 0.7, 0.9999999999999999], +[0.4, 0.7, 0.9999999999999999], +[3.5000000000000018, 0.7, 0.9999999999999999], +[3.600000000000002, 0.7, 0.9999999999999999], +[0.30000000000000004, 0.7999999999999999, 0.9999999999999999], +[0.4, 0.7999999999999999, 0.9999999999999999], +[3.5000000000000018, 0.7999999999999999, 0.9999999999999999], +[0.4, 0.8999999999999999, 0.9999999999999999], +[0.5, 0.8999999999999999, 0.9999999999999999], +[3.4000000000000017, 0.8999999999999999, 0.9999999999999999], +[3.5000000000000018, 0.8999999999999999, 0.9999999999999999], +[0.4, 0.9999999999999999, 0.9999999999999999], +[0.5, 0.9999999999999999, 0.9999999999999999], +[3.4000000000000017, 0.9999999999999999, 0.9999999999999999], +[0.5, 1.0999999999999999, 0.9999999999999999], +[0.6, 1.0999999999999999, 0.9999999999999999], +[3.3000000000000016, 1.0999999999999999, 0.9999999999999999], +[3.4000000000000017, 1.0999999999999999, 0.9999999999999999], +[0.5, 1.2, 0.9999999999999999], +[0.6, 1.2, 0.9999999999999999], +[3.3000000000000016, 1.2, 0.9999999999999999], +[0.6, 1.3, 0.9999999999999999], +[0.7, 1.3, 0.9999999999999999], +[3.2000000000000015, 1.3, 0.9999999999999999], +[3.3000000000000016, 1.3, 0.9999999999999999], +[0.6, 1.4000000000000001, 0.9999999999999999], +[0.7, 1.4000000000000001, 0.9999999999999999], +[3.2000000000000015, 1.4000000000000001, 0.9999999999999999], +[3.3000000000000016, 1.4000000000000001, 0.9999999999999999], +[0.7, 1.5000000000000002, 0.9999999999999999], +[0.7999999999999999, 1.5000000000000002, 0.9999999999999999], +[3.1000000000000014, 1.5000000000000002, 0.9999999999999999], +[3.2000000000000015, 1.5000000000000002, 0.9999999999999999], +[0.7999999999999999, 1.6000000000000003, 0.9999999999999999], +[3.1000000000000014, 1.6000000000000003, 0.9999999999999999], +[0.7999999999999999, 1.7000000000000004, 0.9999999999999999], +[0.8999999999999999, 1.7000000000000004, 0.9999999999999999], +[3.0000000000000013, 1.7000000000000004, 0.9999999999999999], +[3.1000000000000014, 1.7000000000000004, 0.9999999999999999], +[0.8999999999999999, 1.8000000000000005, 0.9999999999999999], +[3.0000000000000013, 1.8000000000000005, 0.9999999999999999], +[3.1000000000000014, 1.8000000000000005, 0.9999999999999999], +[0.8999999999999999, 1.9000000000000006, 0.9999999999999999], +[0.9999999999999999, 1.9000000000000006, 0.9999999999999999], +[1.0999999999999999, 1.9000000000000006, 0.9999999999999999], +[1.2, 1.9000000000000006, 0.9999999999999999], +[1.3, 1.9000000000000006, 0.9999999999999999], +[1.4000000000000001, 1.9000000000000006, 0.9999999999999999], +[1.5000000000000002, 1.9000000000000006, 0.9999999999999999], +[1.6000000000000003, 1.9000000000000006, 0.9999999999999999], +[1.7000000000000004, 1.9000000000000006, 0.9999999999999999], +[1.8000000000000005, 1.9000000000000006, 0.9999999999999999], +[1.9000000000000006, 1.9000000000000006, 0.9999999999999999], +[2.0000000000000004, 1.9000000000000006, 0.9999999999999999], +[2.1000000000000005, 1.9000000000000006, 0.9999999999999999], +[2.2000000000000006, 1.9000000000000006, 0.9999999999999999], +[2.3000000000000007, 1.9000000000000006, 0.9999999999999999], +[2.400000000000001, 1.9000000000000006, 0.9999999999999999], +[2.500000000000001, 1.9000000000000006, 0.9999999999999999], +[2.600000000000001, 1.9000000000000006, 0.9999999999999999], +[2.700000000000001, 1.9000000000000006, 0.9999999999999999], +[2.800000000000001, 1.9000000000000006, 0.9999999999999999], +[2.9000000000000012, 1.9000000000000006, 0.9999999999999999], +[3.0000000000000013, 1.9000000000000006, 0.9999999999999999], +[0.8999999999999999, 2.0000000000000004, 0.9999999999999999], +[0.9999999999999999, 2.0000000000000004, 0.9999999999999999], +[1.0999999999999999, 2.0000000000000004, 0.9999999999999999], +[1.2, 2.0000000000000004, 0.9999999999999999], +[1.3, 2.0000000000000004, 0.9999999999999999], +[1.4000000000000001, 2.0000000000000004, 0.9999999999999999], +[1.5000000000000002, 2.0000000000000004, 0.9999999999999999], +[1.6000000000000003, 2.0000000000000004, 0.9999999999999999], +[1.7000000000000004, 2.0000000000000004, 0.9999999999999999], +[1.8000000000000005, 2.0000000000000004, 0.9999999999999999], +[1.9000000000000006, 2.0000000000000004, 0.9999999999999999], +[2.0000000000000004, 2.0000000000000004, 0.9999999999999999], +[2.1000000000000005, 2.0000000000000004, 0.9999999999999999], +[2.2000000000000006, 2.0000000000000004, 0.9999999999999999], +[2.3000000000000007, 2.0000000000000004, 0.9999999999999999], +[2.400000000000001, 2.0000000000000004, 0.9999999999999999], +[2.500000000000001, 2.0000000000000004, 0.9999999999999999], +[2.600000000000001, 2.0000000000000004, 0.9999999999999999], +[2.700000000000001, 2.0000000000000004, 0.9999999999999999], +[2.800000000000001, 2.0000000000000004, 0.9999999999999999], +[2.9000000000000012, 2.0000000000000004, 0.9999999999999999], +[3.0000000000000013, 2.0000000000000004, 0.9999999999999999], +[0.9999999999999999, 2.1000000000000005, 0.9999999999999999], +[1.0999999999999999, 2.1000000000000005, 0.9999999999999999], +[1.2, 2.1000000000000005, 0.9999999999999999], +[1.3, 2.1000000000000005, 0.9999999999999999], +[1.4000000000000001, 2.1000000000000005, 0.9999999999999999], +[1.5000000000000002, 2.1000000000000005, 0.9999999999999999], +[1.6000000000000003, 2.1000000000000005, 0.9999999999999999], +[1.7000000000000004, 2.1000000000000005, 0.9999999999999999], +[1.8000000000000005, 2.1000000000000005, 0.9999999999999999], +[1.9000000000000006, 2.1000000000000005, 0.9999999999999999], +[2.0000000000000004, 2.1000000000000005, 0.9999999999999999], +[2.1000000000000005, 2.1000000000000005, 0.9999999999999999], +[2.2000000000000006, 2.1000000000000005, 0.9999999999999999], +[2.3000000000000007, 2.1000000000000005, 0.9999999999999999], +[2.400000000000001, 2.1000000000000005, 0.9999999999999999], +[2.500000000000001, 2.1000000000000005, 0.9999999999999999], +[2.600000000000001, 2.1000000000000005, 0.9999999999999999], +[2.700000000000001, 2.1000000000000005, 0.9999999999999999], +[2.800000000000001, 2.1000000000000005, 0.9999999999999999], +[2.9000000000000012, 2.1000000000000005, 0.9999999999999999], +[0.9999999999999999, 2.2000000000000006, 0.9999999999999999], +[1.0999999999999999, 2.2000000000000006, 0.9999999999999999], +[1.2, 2.2000000000000006, 0.9999999999999999], +[1.3, 2.2000000000000006, 0.9999999999999999], +[1.4000000000000001, 2.2000000000000006, 0.9999999999999999], +[1.5000000000000002, 2.2000000000000006, 0.9999999999999999], +[1.6000000000000003, 2.2000000000000006, 0.9999999999999999], +[1.7000000000000004, 2.2000000000000006, 0.9999999999999999], +[1.8000000000000005, 2.2000000000000006, 0.9999999999999999], +[1.9000000000000006, 2.2000000000000006, 0.9999999999999999], +[2.0000000000000004, 2.2000000000000006, 0.9999999999999999], +[2.1000000000000005, 2.2000000000000006, 0.9999999999999999], +[2.2000000000000006, 2.2000000000000006, 0.9999999999999999], +[2.3000000000000007, 2.2000000000000006, 0.9999999999999999], +[2.400000000000001, 2.2000000000000006, 0.9999999999999999], +[2.500000000000001, 2.2000000000000006, 0.9999999999999999], +[2.600000000000001, 2.2000000000000006, 0.9999999999999999], +[2.700000000000001, 2.2000000000000006, 0.9999999999999999], +[2.800000000000001, 2.2000000000000006, 0.9999999999999999], +[0, 0, 1.0999999999999999], +[0.1, 0, 1.0999999999999999], +[0.2, 0, 1.0999999999999999], +[0.30000000000000004, 0, 1.0999999999999999], +[0.4, 0, 1.0999999999999999], +[0.5, 0, 1.0999999999999999], +[0.6, 0, 1.0999999999999999], +[0.7, 0, 1.0999999999999999], +[0.7999999999999999, 0, 1.0999999999999999], +[0.8999999999999999, 0, 1.0999999999999999], +[0.9999999999999999, 0, 1.0999999999999999], +[1.0999999999999999, 0, 1.0999999999999999], +[1.2, 0, 1.0999999999999999], +[1.3, 0, 1.0999999999999999], +[1.4000000000000001, 0, 1.0999999999999999], +[1.5000000000000002, 0, 1.0999999999999999], +[1.6000000000000003, 0, 1.0999999999999999], +[1.7000000000000004, 0, 1.0999999999999999], +[1.8000000000000005, 0, 1.0999999999999999], +[1.9000000000000006, 0, 1.0999999999999999], +[2.0000000000000004, 0, 1.0999999999999999], +[2.1000000000000005, 0, 1.0999999999999999], +[2.2000000000000006, 0, 1.0999999999999999], +[2.3000000000000007, 0, 1.0999999999999999], +[2.400000000000001, 0, 1.0999999999999999], +[2.500000000000001, 0, 1.0999999999999999], +[2.600000000000001, 0, 1.0999999999999999], +[2.700000000000001, 0, 1.0999999999999999], +[2.800000000000001, 0, 1.0999999999999999], +[2.9000000000000012, 0, 1.0999999999999999], +[3.0000000000000013, 0, 1.0999999999999999], +[3.1000000000000014, 0, 1.0999999999999999], +[3.2000000000000015, 0, 1.0999999999999999], +[3.3000000000000016, 0, 1.0999999999999999], +[3.4000000000000017, 0, 1.0999999999999999], +[3.5000000000000018, 0, 1.0999999999999999], +[3.600000000000002, 0, 1.0999999999999999], +[3.700000000000002, 0, 1.0999999999999999], +[3.800000000000002, 0, 1.0999999999999999], +[3.900000000000002, 0, 1.0999999999999999], +[0, 0.1, 1.0999999999999999], +[0.1, 0.1, 1.0999999999999999], +[3.800000000000002, 0.1, 1.0999999999999999], +[3.900000000000002, 0.1, 1.0999999999999999], +[0, 0.2, 1.0999999999999999], +[0.1, 0.2, 1.0999999999999999], +[3.800000000000002, 0.2, 1.0999999999999999], +[0.1, 0.30000000000000004, 1.0999999999999999], +[0.2, 0.30000000000000004, 1.0999999999999999], +[3.700000000000002, 0.30000000000000004, 1.0999999999999999], +[3.800000000000002, 0.30000000000000004, 1.0999999999999999], +[0.1, 0.4, 1.0999999999999999], +[0.2, 0.4, 1.0999999999999999], +[3.700000000000002, 0.4, 1.0999999999999999], +[0.2, 0.5, 1.0999999999999999], +[0.30000000000000004, 0.5, 1.0999999999999999], +[3.600000000000002, 0.5, 1.0999999999999999], +[3.700000000000002, 0.5, 1.0999999999999999], +[0.2, 0.6, 1.0999999999999999], +[0.30000000000000004, 0.6, 1.0999999999999999], +[3.600000000000002, 0.6, 1.0999999999999999], +[0.30000000000000004, 0.7, 1.0999999999999999], +[0.4, 0.7, 1.0999999999999999], +[3.5000000000000018, 0.7, 1.0999999999999999], +[3.600000000000002, 0.7, 1.0999999999999999], +[0.30000000000000004, 0.7999999999999999, 1.0999999999999999], +[0.4, 0.7999999999999999, 1.0999999999999999], +[3.5000000000000018, 0.7999999999999999, 1.0999999999999999], +[0.4, 0.8999999999999999, 1.0999999999999999], +[0.5, 0.8999999999999999, 1.0999999999999999], +[3.4000000000000017, 0.8999999999999999, 1.0999999999999999], +[3.5000000000000018, 0.8999999999999999, 1.0999999999999999], +[0.4, 0.9999999999999999, 1.0999999999999999], +[0.5, 0.9999999999999999, 1.0999999999999999], +[3.4000000000000017, 0.9999999999999999, 1.0999999999999999], +[0.5, 1.0999999999999999, 1.0999999999999999], +[0.6, 1.0999999999999999, 1.0999999999999999], +[3.3000000000000016, 1.0999999999999999, 1.0999999999999999], +[3.4000000000000017, 1.0999999999999999, 1.0999999999999999], +[0.5, 1.2, 1.0999999999999999], +[0.6, 1.2, 1.0999999999999999], +[3.3000000000000016, 1.2, 1.0999999999999999], +[0.6, 1.3, 1.0999999999999999], +[0.7, 1.3, 1.0999999999999999], +[3.2000000000000015, 1.3, 1.0999999999999999], +[3.3000000000000016, 1.3, 1.0999999999999999], +[0.6, 1.4000000000000001, 1.0999999999999999], +[0.7, 1.4000000000000001, 1.0999999999999999], +[3.2000000000000015, 1.4000000000000001, 1.0999999999999999], +[3.3000000000000016, 1.4000000000000001, 1.0999999999999999], +[0.7, 1.5000000000000002, 1.0999999999999999], +[0.7999999999999999, 1.5000000000000002, 1.0999999999999999], +[3.1000000000000014, 1.5000000000000002, 1.0999999999999999], +[3.2000000000000015, 1.5000000000000002, 1.0999999999999999], +[0.7999999999999999, 1.6000000000000003, 1.0999999999999999], +[3.1000000000000014, 1.6000000000000003, 1.0999999999999999], +[0.7999999999999999, 1.7000000000000004, 1.0999999999999999], +[0.8999999999999999, 1.7000000000000004, 1.0999999999999999], +[3.0000000000000013, 1.7000000000000004, 1.0999999999999999], +[3.1000000000000014, 1.7000000000000004, 1.0999999999999999], +[0.8999999999999999, 1.8000000000000005, 1.0999999999999999], +[3.0000000000000013, 1.8000000000000005, 1.0999999999999999], +[3.1000000000000014, 1.8000000000000005, 1.0999999999999999], +[0.8999999999999999, 1.9000000000000006, 1.0999999999999999], +[0.9999999999999999, 1.9000000000000006, 1.0999999999999999], +[2.9000000000000012, 1.9000000000000006, 1.0999999999999999], +[3.0000000000000013, 1.9000000000000006, 1.0999999999999999], +[0.8999999999999999, 2.0000000000000004, 1.0999999999999999], +[0.9999999999999999, 2.0000000000000004, 1.0999999999999999], +[2.9000000000000012, 2.0000000000000004, 1.0999999999999999], +[3.0000000000000013, 2.0000000000000004, 1.0999999999999999], +[0.9999999999999999, 2.1000000000000005, 1.0999999999999999], +[1.0999999999999999, 2.1000000000000005, 1.0999999999999999], +[1.2, 2.1000000000000005, 1.0999999999999999], +[1.3, 2.1000000000000005, 1.0999999999999999], +[1.4000000000000001, 2.1000000000000005, 1.0999999999999999], +[1.5000000000000002, 2.1000000000000005, 1.0999999999999999], +[1.6000000000000003, 2.1000000000000005, 1.0999999999999999], +[1.7000000000000004, 2.1000000000000005, 1.0999999999999999], +[1.8000000000000005, 2.1000000000000005, 1.0999999999999999], +[1.9000000000000006, 2.1000000000000005, 1.0999999999999999], +[2.0000000000000004, 2.1000000000000005, 1.0999999999999999], +[2.1000000000000005, 2.1000000000000005, 1.0999999999999999], +[2.2000000000000006, 2.1000000000000005, 1.0999999999999999], +[2.3000000000000007, 2.1000000000000005, 1.0999999999999999], +[2.400000000000001, 2.1000000000000005, 1.0999999999999999], +[2.500000000000001, 2.1000000000000005, 1.0999999999999999], +[2.600000000000001, 2.1000000000000005, 1.0999999999999999], +[2.700000000000001, 2.1000000000000005, 1.0999999999999999], +[2.800000000000001, 2.1000000000000005, 1.0999999999999999], +[2.9000000000000012, 2.1000000000000005, 1.0999999999999999], +[0.9999999999999999, 2.2000000000000006, 1.0999999999999999], +[1.0999999999999999, 2.2000000000000006, 1.0999999999999999], +[1.2, 2.2000000000000006, 1.0999999999999999], +[1.3, 2.2000000000000006, 1.0999999999999999], +[1.4000000000000001, 2.2000000000000006, 1.0999999999999999], +[1.5000000000000002, 2.2000000000000006, 1.0999999999999999], +[1.6000000000000003, 2.2000000000000006, 1.0999999999999999], +[1.7000000000000004, 2.2000000000000006, 1.0999999999999999], +[1.8000000000000005, 2.2000000000000006, 1.0999999999999999], +[1.9000000000000006, 2.2000000000000006, 1.0999999999999999], +[2.0000000000000004, 2.2000000000000006, 1.0999999999999999], +[2.1000000000000005, 2.2000000000000006, 1.0999999999999999], +[2.2000000000000006, 2.2000000000000006, 1.0999999999999999], +[2.3000000000000007, 2.2000000000000006, 1.0999999999999999], +[2.400000000000001, 2.2000000000000006, 1.0999999999999999], +[2.500000000000001, 2.2000000000000006, 1.0999999999999999], +[2.600000000000001, 2.2000000000000006, 1.0999999999999999], +[2.700000000000001, 2.2000000000000006, 1.0999999999999999], +[2.800000000000001, 2.2000000000000006, 1.0999999999999999], +[1.0999999999999999, 2.3000000000000007, 1.0999999999999999], +[1.2, 2.3000000000000007, 1.0999999999999999], +[1.3, 2.3000000000000007, 1.0999999999999999], +[1.4000000000000001, 2.3000000000000007, 1.0999999999999999], +[1.5000000000000002, 2.3000000000000007, 1.0999999999999999], +[1.6000000000000003, 2.3000000000000007, 1.0999999999999999], +[1.7000000000000004, 2.3000000000000007, 1.0999999999999999], +[1.8000000000000005, 2.3000000000000007, 1.0999999999999999], +[1.9000000000000006, 2.3000000000000007, 1.0999999999999999], +[2.0000000000000004, 2.3000000000000007, 1.0999999999999999], +[2.1000000000000005, 2.3000000000000007, 1.0999999999999999], +[2.2000000000000006, 2.3000000000000007, 1.0999999999999999], +[2.3000000000000007, 2.3000000000000007, 1.0999999999999999], +[2.400000000000001, 2.3000000000000007, 1.0999999999999999], +[2.500000000000001, 2.3000000000000007, 1.0999999999999999], +[2.600000000000001, 2.3000000000000007, 1.0999999999999999], +[2.700000000000001, 2.3000000000000007, 1.0999999999999999], +[2.800000000000001, 2.3000000000000007, 1.0999999999999999], +[1.0999999999999999, 2.400000000000001, 1.0999999999999999], +[1.2, 2.400000000000001, 1.0999999999999999], +[1.3, 2.400000000000001, 1.0999999999999999], +[1.4000000000000001, 2.400000000000001, 1.0999999999999999], +[1.5000000000000002, 2.400000000000001, 1.0999999999999999], +[1.6000000000000003, 2.400000000000001, 1.0999999999999999], +[1.7000000000000004, 2.400000000000001, 1.0999999999999999], +[1.8000000000000005, 2.400000000000001, 1.0999999999999999], +[1.9000000000000006, 2.400000000000001, 1.0999999999999999], +[2.0000000000000004, 2.400000000000001, 1.0999999999999999], +[2.1000000000000005, 2.400000000000001, 1.0999999999999999], +[2.2000000000000006, 2.400000000000001, 1.0999999999999999], +[2.3000000000000007, 2.400000000000001, 1.0999999999999999], +[2.400000000000001, 2.400000000000001, 1.0999999999999999], +[2.500000000000001, 2.400000000000001, 1.0999999999999999], +[2.600000000000001, 2.400000000000001, 1.0999999999999999], +[2.700000000000001, 2.400000000000001, 1.0999999999999999], +[0, 0, 1.2], +[0.1, 0, 1.2], +[0.2, 0, 1.2], +[0.30000000000000004, 0, 1.2], +[0.4, 0, 1.2], +[0.5, 0, 1.2], +[0.6, 0, 1.2], +[0.7, 0, 1.2], +[0.7999999999999999, 0, 1.2], +[0.8999999999999999, 0, 1.2], +[0.9999999999999999, 0, 1.2], +[1.0999999999999999, 0, 1.2], +[1.2, 0, 1.2], +[1.3, 0, 1.2], +[1.4000000000000001, 0, 1.2], +[1.5000000000000002, 0, 1.2], +[1.6000000000000003, 0, 1.2], +[1.7000000000000004, 0, 1.2], +[1.8000000000000005, 0, 1.2], +[1.9000000000000006, 0, 1.2], +[2.0000000000000004, 0, 1.2], +[2.1000000000000005, 0, 1.2], +[2.2000000000000006, 0, 1.2], +[2.3000000000000007, 0, 1.2], +[2.400000000000001, 0, 1.2], +[2.500000000000001, 0, 1.2], +[2.600000000000001, 0, 1.2], +[2.700000000000001, 0, 1.2], +[2.800000000000001, 0, 1.2], +[2.9000000000000012, 0, 1.2], +[3.0000000000000013, 0, 1.2], +[3.1000000000000014, 0, 1.2], +[3.2000000000000015, 0, 1.2], +[3.3000000000000016, 0, 1.2], +[3.4000000000000017, 0, 1.2], +[3.5000000000000018, 0, 1.2], +[3.600000000000002, 0, 1.2], +[3.700000000000002, 0, 1.2], +[3.800000000000002, 0, 1.2], +[3.900000000000002, 0, 1.2], +[0, 0.1, 1.2], +[0.1, 0.1, 1.2], +[3.800000000000002, 0.1, 1.2], +[3.900000000000002, 0.1, 1.2], +[0, 0.2, 1.2], +[0.1, 0.2, 1.2], +[3.800000000000002, 0.2, 1.2], +[0.1, 0.30000000000000004, 1.2], +[0.2, 0.30000000000000004, 1.2], +[3.700000000000002, 0.30000000000000004, 1.2], +[3.800000000000002, 0.30000000000000004, 1.2], +[0.1, 0.4, 1.2], +[0.2, 0.4, 1.2], +[3.700000000000002, 0.4, 1.2], +[0.2, 0.5, 1.2], +[0.30000000000000004, 0.5, 1.2], +[3.600000000000002, 0.5, 1.2], +[3.700000000000002, 0.5, 1.2], +[0.2, 0.6, 1.2], +[0.30000000000000004, 0.6, 1.2], +[3.600000000000002, 0.6, 1.2], +[0.30000000000000004, 0.7, 1.2], +[0.4, 0.7, 1.2], +[3.5000000000000018, 0.7, 1.2], +[3.600000000000002, 0.7, 1.2], +[0.30000000000000004, 0.7999999999999999, 1.2], +[0.4, 0.7999999999999999, 1.2], +[3.5000000000000018, 0.7999999999999999, 1.2], +[0.4, 0.8999999999999999, 1.2], +[0.5, 0.8999999999999999, 1.2], +[3.4000000000000017, 0.8999999999999999, 1.2], +[3.5000000000000018, 0.8999999999999999, 1.2], +[0.4, 0.9999999999999999, 1.2], +[0.5, 0.9999999999999999, 1.2], +[3.4000000000000017, 0.9999999999999999, 1.2], +[0.5, 1.0999999999999999, 1.2], +[0.6, 1.0999999999999999, 1.2], +[3.3000000000000016, 1.0999999999999999, 1.2], +[3.4000000000000017, 1.0999999999999999, 1.2], +[0.5, 1.2, 1.2], +[0.6, 1.2, 1.2], +[3.3000000000000016, 1.2, 1.2], +[0.6, 1.3, 1.2], +[0.7, 1.3, 1.2], +[3.2000000000000015, 1.3, 1.2], +[3.3000000000000016, 1.3, 1.2], +[0.6, 1.4000000000000001, 1.2], +[0.7, 1.4000000000000001, 1.2], +[3.2000000000000015, 1.4000000000000001, 1.2], +[3.3000000000000016, 1.4000000000000001, 1.2], +[0.7, 1.5000000000000002, 1.2], +[0.7999999999999999, 1.5000000000000002, 1.2], +[3.1000000000000014, 1.5000000000000002, 1.2], +[3.2000000000000015, 1.5000000000000002, 1.2], +[0.7999999999999999, 1.6000000000000003, 1.2], +[3.1000000000000014, 1.6000000000000003, 1.2], +[0.7999999999999999, 1.7000000000000004, 1.2], +[0.8999999999999999, 1.7000000000000004, 1.2], +[3.0000000000000013, 1.7000000000000004, 1.2], +[3.1000000000000014, 1.7000000000000004, 1.2], +[0.8999999999999999, 1.8000000000000005, 1.2], +[3.0000000000000013, 1.8000000000000005, 1.2], +[3.1000000000000014, 1.8000000000000005, 1.2], +[0.8999999999999999, 1.9000000000000006, 1.2], +[0.9999999999999999, 1.9000000000000006, 1.2], +[2.9000000000000012, 1.9000000000000006, 1.2], +[3.0000000000000013, 1.9000000000000006, 1.2], +[0.8999999999999999, 2.0000000000000004, 1.2], +[0.9999999999999999, 2.0000000000000004, 1.2], +[2.9000000000000012, 2.0000000000000004, 1.2], +[3.0000000000000013, 2.0000000000000004, 1.2], +[0.9999999999999999, 2.1000000000000005, 1.2], +[1.0999999999999999, 2.1000000000000005, 1.2], +[2.9000000000000012, 2.1000000000000005, 1.2], +[0.9999999999999999, 2.2000000000000006, 1.2], +[1.0999999999999999, 2.2000000000000006, 1.2], +[2.800000000000001, 2.2000000000000006, 1.2], +[1.0999999999999999, 2.3000000000000007, 1.2], +[1.2, 2.3000000000000007, 1.2], +[1.3, 2.3000000000000007, 1.2], +[1.4000000000000001, 2.3000000000000007, 1.2], +[1.5000000000000002, 2.3000000000000007, 1.2], +[1.6000000000000003, 2.3000000000000007, 1.2], +[1.7000000000000004, 2.3000000000000007, 1.2], +[1.8000000000000005, 2.3000000000000007, 1.2], +[1.9000000000000006, 2.3000000000000007, 1.2], +[2.0000000000000004, 2.3000000000000007, 1.2], +[2.1000000000000005, 2.3000000000000007, 1.2], +[2.2000000000000006, 2.3000000000000007, 1.2], +[2.3000000000000007, 2.3000000000000007, 1.2], +[2.400000000000001, 2.3000000000000007, 1.2], +[2.500000000000001, 2.3000000000000007, 1.2], +[2.600000000000001, 2.3000000000000007, 1.2], +[2.700000000000001, 2.3000000000000007, 1.2], +[2.800000000000001, 2.3000000000000007, 1.2], +[1.0999999999999999, 2.400000000000001, 1.2], +[1.2, 2.400000000000001, 1.2], +[1.3, 2.400000000000001, 1.2], +[1.4000000000000001, 2.400000000000001, 1.2], +[1.5000000000000002, 2.400000000000001, 1.2], +[1.6000000000000003, 2.400000000000001, 1.2], +[1.7000000000000004, 2.400000000000001, 1.2], +[1.8000000000000005, 2.400000000000001, 1.2], +[1.9000000000000006, 2.400000000000001, 1.2], +[2.0000000000000004, 2.400000000000001, 1.2], +[2.1000000000000005, 2.400000000000001, 1.2], +[2.2000000000000006, 2.400000000000001, 1.2], +[2.3000000000000007, 2.400000000000001, 1.2], +[2.400000000000001, 2.400000000000001, 1.2], +[2.500000000000001, 2.400000000000001, 1.2], +[2.600000000000001, 2.400000000000001, 1.2], +[2.700000000000001, 2.400000000000001, 1.2], +[1.2, 2.500000000000001, 1.2], +[1.3, 2.500000000000001, 1.2], +[1.4000000000000001, 2.500000000000001, 1.2], +[1.5000000000000002, 2.500000000000001, 1.2], +[1.6000000000000003, 2.500000000000001, 1.2], +[1.7000000000000004, 2.500000000000001, 1.2], +[1.8000000000000005, 2.500000000000001, 1.2], +[1.9000000000000006, 2.500000000000001, 1.2], +[2.0000000000000004, 2.500000000000001, 1.2], +[2.1000000000000005, 2.500000000000001, 1.2], +[2.2000000000000006, 2.500000000000001, 1.2], +[2.3000000000000007, 2.500000000000001, 1.2], +[2.400000000000001, 2.500000000000001, 1.2], +[2.500000000000001, 2.500000000000001, 1.2], +[2.600000000000001, 2.500000000000001, 1.2], +[2.700000000000001, 2.500000000000001, 1.2], +[1.2, 2.600000000000001, 1.2], +[1.3, 2.600000000000001, 1.2], +[1.4000000000000001, 2.600000000000001, 1.2], +[1.5000000000000002, 2.600000000000001, 1.2], +[1.6000000000000003, 2.600000000000001, 1.2], +[1.7000000000000004, 2.600000000000001, 1.2], +[1.8000000000000005, 2.600000000000001, 1.2], +[1.9000000000000006, 2.600000000000001, 1.2], +[2.0000000000000004, 2.600000000000001, 1.2], +[2.1000000000000005, 2.600000000000001, 1.2], +[2.2000000000000006, 2.600000000000001, 1.2], +[2.3000000000000007, 2.600000000000001, 1.2], +[2.400000000000001, 2.600000000000001, 1.2], +[2.500000000000001, 2.600000000000001, 1.2], +[2.600000000000001, 2.600000000000001, 1.2], +[2.700000000000001, 2.600000000000001, 1.2], +[0, 0, 1.3], +[0.1, 0, 1.3], +[0.2, 0, 1.3], +[0.30000000000000004, 0, 1.3], +[0.4, 0, 1.3], +[0.5, 0, 1.3], +[0.6, 0, 1.3], +[0.7, 0, 1.3], +[0.7999999999999999, 0, 1.3], +[0.8999999999999999, 0, 1.3], +[0.9999999999999999, 0, 1.3], +[1.0999999999999999, 0, 1.3], +[1.2, 0, 1.3], +[1.3, 0, 1.3], +[1.4000000000000001, 0, 1.3], +[1.5000000000000002, 0, 1.3], +[1.6000000000000003, 0, 1.3], +[1.7000000000000004, 0, 1.3], +[1.8000000000000005, 0, 1.3], +[1.9000000000000006, 0, 1.3], +[2.0000000000000004, 0, 1.3], +[2.1000000000000005, 0, 1.3], +[2.2000000000000006, 0, 1.3], +[2.3000000000000007, 0, 1.3], +[2.400000000000001, 0, 1.3], +[2.500000000000001, 0, 1.3], +[2.600000000000001, 0, 1.3], +[2.700000000000001, 0, 1.3], +[2.800000000000001, 0, 1.3], +[2.9000000000000012, 0, 1.3], +[3.0000000000000013, 0, 1.3], +[3.1000000000000014, 0, 1.3], +[3.2000000000000015, 0, 1.3], +[3.3000000000000016, 0, 1.3], +[3.4000000000000017, 0, 1.3], +[3.5000000000000018, 0, 1.3], +[3.600000000000002, 0, 1.3], +[3.700000000000002, 0, 1.3], +[3.800000000000002, 0, 1.3], +[3.900000000000002, 0, 1.3], +[0, 0.1, 1.3], +[0.1, 0.1, 1.3], +[3.800000000000002, 0.1, 1.3], +[3.900000000000002, 0.1, 1.3], +[0, 0.2, 1.3], +[0.1, 0.2, 1.3], +[3.800000000000002, 0.2, 1.3], +[0.1, 0.30000000000000004, 1.3], +[0.2, 0.30000000000000004, 1.3], +[3.700000000000002, 0.30000000000000004, 1.3], +[3.800000000000002, 0.30000000000000004, 1.3], +[0.1, 0.4, 1.3], +[0.2, 0.4, 1.3], +[3.700000000000002, 0.4, 1.3], +[0.2, 0.5, 1.3], +[0.30000000000000004, 0.5, 1.3], +[3.600000000000002, 0.5, 1.3], +[3.700000000000002, 0.5, 1.3], +[0.2, 0.6, 1.3], +[0.30000000000000004, 0.6, 1.3], +[3.600000000000002, 0.6, 1.3], +[0.30000000000000004, 0.7, 1.3], +[0.4, 0.7, 1.3], +[3.5000000000000018, 0.7, 1.3], +[3.600000000000002, 0.7, 1.3], +[0.30000000000000004, 0.7999999999999999, 1.3], +[0.4, 0.7999999999999999, 1.3], +[3.5000000000000018, 0.7999999999999999, 1.3], +[0.4, 0.8999999999999999, 1.3], +[0.5, 0.8999999999999999, 1.3], +[3.4000000000000017, 0.8999999999999999, 1.3], +[3.5000000000000018, 0.8999999999999999, 1.3], +[0.4, 0.9999999999999999, 1.3], +[0.5, 0.9999999999999999, 1.3], +[3.4000000000000017, 0.9999999999999999, 1.3], +[0.5, 1.0999999999999999, 1.3], +[0.6, 1.0999999999999999, 1.3], +[3.3000000000000016, 1.0999999999999999, 1.3], +[3.4000000000000017, 1.0999999999999999, 1.3], +[0.5, 1.2, 1.3], +[0.6, 1.2, 1.3], +[3.3000000000000016, 1.2, 1.3], +[0.6, 1.3, 1.3], +[0.7, 1.3, 1.3], +[3.2000000000000015, 1.3, 1.3], +[3.3000000000000016, 1.3, 1.3], +[0.6, 1.4000000000000001, 1.3], +[0.7, 1.4000000000000001, 1.3], +[3.2000000000000015, 1.4000000000000001, 1.3], +[3.3000000000000016, 1.4000000000000001, 1.3], +[0.7, 1.5000000000000002, 1.3], +[0.7999999999999999, 1.5000000000000002, 1.3], +[3.1000000000000014, 1.5000000000000002, 1.3], +[3.2000000000000015, 1.5000000000000002, 1.3], +[0.7999999999999999, 1.6000000000000003, 1.3], +[3.1000000000000014, 1.6000000000000003, 1.3], +[0.7999999999999999, 1.7000000000000004, 1.3], +[0.8999999999999999, 1.7000000000000004, 1.3], +[3.0000000000000013, 1.7000000000000004, 1.3], +[3.1000000000000014, 1.7000000000000004, 1.3], +[0.8999999999999999, 1.8000000000000005, 1.3], +[3.0000000000000013, 1.8000000000000005, 1.3], +[3.1000000000000014, 1.8000000000000005, 1.3], +[0.8999999999999999, 1.9000000000000006, 1.3], +[0.9999999999999999, 1.9000000000000006, 1.3], +[2.9000000000000012, 1.9000000000000006, 1.3], +[3.0000000000000013, 1.9000000000000006, 1.3], +[0.8999999999999999, 2.0000000000000004, 1.3], +[0.9999999999999999, 2.0000000000000004, 1.3], +[2.9000000000000012, 2.0000000000000004, 1.3], +[3.0000000000000013, 2.0000000000000004, 1.3], +[0.9999999999999999, 2.1000000000000005, 1.3], +[1.0999999999999999, 2.1000000000000005, 1.3], +[2.9000000000000012, 2.1000000000000005, 1.3], +[0.9999999999999999, 2.2000000000000006, 1.3], +[1.0999999999999999, 2.2000000000000006, 1.3], +[2.800000000000001, 2.2000000000000006, 1.3], +[1.0999999999999999, 2.3000000000000007, 1.3], +[1.2, 2.3000000000000007, 1.3], +[2.700000000000001, 2.3000000000000007, 1.3], +[2.800000000000001, 2.3000000000000007, 1.3], +[1.0999999999999999, 2.400000000000001, 1.3], +[1.2, 2.400000000000001, 1.3], +[2.700000000000001, 2.400000000000001, 1.3], +[1.2, 2.500000000000001, 1.3], +[1.3, 2.500000000000001, 1.3], +[1.4000000000000001, 2.500000000000001, 1.3], +[1.5000000000000002, 2.500000000000001, 1.3], +[1.6000000000000003, 2.500000000000001, 1.3], +[1.7000000000000004, 2.500000000000001, 1.3], +[1.8000000000000005, 2.500000000000001, 1.3], +[1.9000000000000006, 2.500000000000001, 1.3], +[2.0000000000000004, 2.500000000000001, 1.3], +[2.1000000000000005, 2.500000000000001, 1.3], +[2.2000000000000006, 2.500000000000001, 1.3], +[2.3000000000000007, 2.500000000000001, 1.3], +[2.400000000000001, 2.500000000000001, 1.3], +[2.500000000000001, 2.500000000000001, 1.3], +[2.600000000000001, 2.500000000000001, 1.3], +[2.700000000000001, 2.500000000000001, 1.3], +[1.2, 2.600000000000001, 1.3], +[1.3, 2.600000000000001, 1.3], +[1.4000000000000001, 2.600000000000001, 1.3], +[1.5000000000000002, 2.600000000000001, 1.3], +[1.6000000000000003, 2.600000000000001, 1.3], +[1.7000000000000004, 2.600000000000001, 1.3], +[1.8000000000000005, 2.600000000000001, 1.3], +[1.9000000000000006, 2.600000000000001, 1.3], +[2.0000000000000004, 2.600000000000001, 1.3], +[2.1000000000000005, 2.600000000000001, 1.3], +[2.2000000000000006, 2.600000000000001, 1.3], +[2.3000000000000007, 2.600000000000001, 1.3], +[2.400000000000001, 2.600000000000001, 1.3], +[2.500000000000001, 2.600000000000001, 1.3], +[2.600000000000001, 2.600000000000001, 1.3], +[2.700000000000001, 2.600000000000001, 1.3], +[1.3, 2.700000000000001, 1.3], +[1.4000000000000001, 2.700000000000001, 1.3], +[1.5000000000000002, 2.700000000000001, 1.3], +[1.6000000000000003, 2.700000000000001, 1.3], +[1.7000000000000004, 2.700000000000001, 1.3], +[1.8000000000000005, 2.700000000000001, 1.3], +[1.9000000000000006, 2.700000000000001, 1.3], +[2.0000000000000004, 2.700000000000001, 1.3], +[2.1000000000000005, 2.700000000000001, 1.3], +[2.2000000000000006, 2.700000000000001, 1.3], +[2.3000000000000007, 2.700000000000001, 1.3], +[2.400000000000001, 2.700000000000001, 1.3], +[2.500000000000001, 2.700000000000001, 1.3], +[2.600000000000001, 2.700000000000001, 1.3], +[0, 0, 1.4000000000000001], +[0.1, 0, 1.4000000000000001], +[0.2, 0, 1.4000000000000001], +[0.30000000000000004, 0, 1.4000000000000001], +[0.4, 0, 1.4000000000000001], +[0.5, 0, 1.4000000000000001], +[0.6, 0, 1.4000000000000001], +[0.7, 0, 1.4000000000000001], +[0.7999999999999999, 0, 1.4000000000000001], +[0.8999999999999999, 0, 1.4000000000000001], +[0.9999999999999999, 0, 1.4000000000000001], +[1.0999999999999999, 0, 1.4000000000000001], +[1.2, 0, 1.4000000000000001], +[1.3, 0, 1.4000000000000001], +[1.4000000000000001, 0, 1.4000000000000001], +[1.5000000000000002, 0, 1.4000000000000001], +[1.6000000000000003, 0, 1.4000000000000001], +[1.7000000000000004, 0, 1.4000000000000001], +[1.8000000000000005, 0, 1.4000000000000001], +[1.9000000000000006, 0, 1.4000000000000001], +[2.0000000000000004, 0, 1.4000000000000001], +[2.1000000000000005, 0, 1.4000000000000001], +[2.2000000000000006, 0, 1.4000000000000001], +[2.3000000000000007, 0, 1.4000000000000001], +[2.400000000000001, 0, 1.4000000000000001], +[2.500000000000001, 0, 1.4000000000000001], +[2.600000000000001, 0, 1.4000000000000001], +[2.700000000000001, 0, 1.4000000000000001], +[2.800000000000001, 0, 1.4000000000000001], +[2.9000000000000012, 0, 1.4000000000000001], +[3.0000000000000013, 0, 1.4000000000000001], +[3.1000000000000014, 0, 1.4000000000000001], +[3.2000000000000015, 0, 1.4000000000000001], +[3.3000000000000016, 0, 1.4000000000000001], +[3.4000000000000017, 0, 1.4000000000000001], +[3.5000000000000018, 0, 1.4000000000000001], +[3.600000000000002, 0, 1.4000000000000001], +[3.700000000000002, 0, 1.4000000000000001], +[3.800000000000002, 0, 1.4000000000000001], +[3.900000000000002, 0, 1.4000000000000001], +[0, 0.1, 1.4000000000000001], +[0.1, 0.1, 1.4000000000000001], +[3.800000000000002, 0.1, 1.4000000000000001], +[3.900000000000002, 0.1, 1.4000000000000001], +[0, 0.2, 1.4000000000000001], +[0.1, 0.2, 1.4000000000000001], +[3.800000000000002, 0.2, 1.4000000000000001], +[0.1, 0.30000000000000004, 1.4000000000000001], +[0.2, 0.30000000000000004, 1.4000000000000001], +[3.700000000000002, 0.30000000000000004, 1.4000000000000001], +[3.800000000000002, 0.30000000000000004, 1.4000000000000001], +[0.1, 0.4, 1.4000000000000001], +[0.2, 0.4, 1.4000000000000001], +[3.700000000000002, 0.4, 1.4000000000000001], +[0.2, 0.5, 1.4000000000000001], +[0.30000000000000004, 0.5, 1.4000000000000001], +[3.600000000000002, 0.5, 1.4000000000000001], +[3.700000000000002, 0.5, 1.4000000000000001], +[0.2, 0.6, 1.4000000000000001], +[0.30000000000000004, 0.6, 1.4000000000000001], +[3.600000000000002, 0.6, 1.4000000000000001], +[0.30000000000000004, 0.7, 1.4000000000000001], +[0.4, 0.7, 1.4000000000000001], +[3.5000000000000018, 0.7, 1.4000000000000001], +[3.600000000000002, 0.7, 1.4000000000000001], +[0.30000000000000004, 0.7999999999999999, 1.4000000000000001], +[0.4, 0.7999999999999999, 1.4000000000000001], +[3.5000000000000018, 0.7999999999999999, 1.4000000000000001], +[0.4, 0.8999999999999999, 1.4000000000000001], +[0.5, 0.8999999999999999, 1.4000000000000001], +[3.4000000000000017, 0.8999999999999999, 1.4000000000000001], +[3.5000000000000018, 0.8999999999999999, 1.4000000000000001], +[0.4, 0.9999999999999999, 1.4000000000000001], +[0.5, 0.9999999999999999, 1.4000000000000001], +[3.4000000000000017, 0.9999999999999999, 1.4000000000000001], +[0.5, 1.0999999999999999, 1.4000000000000001], +[0.6, 1.0999999999999999, 1.4000000000000001], +[3.3000000000000016, 1.0999999999999999, 1.4000000000000001], +[3.4000000000000017, 1.0999999999999999, 1.4000000000000001], +[0.5, 1.2, 1.4000000000000001], +[0.6, 1.2, 1.4000000000000001], +[3.3000000000000016, 1.2, 1.4000000000000001], +[0.6, 1.3, 1.4000000000000001], +[0.7, 1.3, 1.4000000000000001], +[3.2000000000000015, 1.3, 1.4000000000000001], +[3.3000000000000016, 1.3, 1.4000000000000001], +[0.6, 1.4000000000000001, 1.4000000000000001], +[0.7, 1.4000000000000001, 1.4000000000000001], +[3.2000000000000015, 1.4000000000000001, 1.4000000000000001], +[3.3000000000000016, 1.4000000000000001, 1.4000000000000001], +[0.7, 1.5000000000000002, 1.4000000000000001], +[0.7999999999999999, 1.5000000000000002, 1.4000000000000001], +[3.1000000000000014, 1.5000000000000002, 1.4000000000000001], +[3.2000000000000015, 1.5000000000000002, 1.4000000000000001], +[0.7999999999999999, 1.6000000000000003, 1.4000000000000001], +[3.1000000000000014, 1.6000000000000003, 1.4000000000000001], +[0.7999999999999999, 1.7000000000000004, 1.4000000000000001], +[0.8999999999999999, 1.7000000000000004, 1.4000000000000001], +[3.0000000000000013, 1.7000000000000004, 1.4000000000000001], +[3.1000000000000014, 1.7000000000000004, 1.4000000000000001], +[0.8999999999999999, 1.8000000000000005, 1.4000000000000001], +[3.0000000000000013, 1.8000000000000005, 1.4000000000000001], +[3.1000000000000014, 1.8000000000000005, 1.4000000000000001], +[0.8999999999999999, 1.9000000000000006, 1.4000000000000001], +[0.9999999999999999, 1.9000000000000006, 1.4000000000000001], +[2.9000000000000012, 1.9000000000000006, 1.4000000000000001], +[3.0000000000000013, 1.9000000000000006, 1.4000000000000001], +[0.8999999999999999, 2.0000000000000004, 1.4000000000000001], +[0.9999999999999999, 2.0000000000000004, 1.4000000000000001], +[2.9000000000000012, 2.0000000000000004, 1.4000000000000001], +[3.0000000000000013, 2.0000000000000004, 1.4000000000000001], +[0.9999999999999999, 2.1000000000000005, 1.4000000000000001], +[1.0999999999999999, 2.1000000000000005, 1.4000000000000001], +[2.9000000000000012, 2.1000000000000005, 1.4000000000000001], +[0.9999999999999999, 2.2000000000000006, 1.4000000000000001], +[1.0999999999999999, 2.2000000000000006, 1.4000000000000001], +[2.800000000000001, 2.2000000000000006, 1.4000000000000001], +[1.0999999999999999, 2.3000000000000007, 1.4000000000000001], +[1.2, 2.3000000000000007, 1.4000000000000001], +[2.700000000000001, 2.3000000000000007, 1.4000000000000001], +[2.800000000000001, 2.3000000000000007, 1.4000000000000001], +[1.0999999999999999, 2.400000000000001, 1.4000000000000001], +[1.2, 2.400000000000001, 1.4000000000000001], +[2.700000000000001, 2.400000000000001, 1.4000000000000001], +[1.2, 2.500000000000001, 1.4000000000000001], +[1.3, 2.500000000000001, 1.4000000000000001], +[2.600000000000001, 2.500000000000001, 1.4000000000000001], +[2.700000000000001, 2.500000000000001, 1.4000000000000001], +[1.2, 2.600000000000001, 1.4000000000000001], +[1.3, 2.600000000000001, 1.4000000000000001], +[2.600000000000001, 2.600000000000001, 1.4000000000000001], +[2.700000000000001, 2.600000000000001, 1.4000000000000001], +[1.3, 2.700000000000001, 1.4000000000000001], +[1.4000000000000001, 2.700000000000001, 1.4000000000000001], +[1.5000000000000002, 2.700000000000001, 1.4000000000000001], +[1.6000000000000003, 2.700000000000001, 1.4000000000000001], +[1.7000000000000004, 2.700000000000001, 1.4000000000000001], +[1.8000000000000005, 2.700000000000001, 1.4000000000000001], +[1.9000000000000006, 2.700000000000001, 1.4000000000000001], +[2.0000000000000004, 2.700000000000001, 1.4000000000000001], +[2.1000000000000005, 2.700000000000001, 1.4000000000000001], +[2.2000000000000006, 2.700000000000001, 1.4000000000000001], +[2.3000000000000007, 2.700000000000001, 1.4000000000000001], +[2.400000000000001, 2.700000000000001, 1.4000000000000001], +[2.500000000000001, 2.700000000000001, 1.4000000000000001], +[2.600000000000001, 2.700000000000001, 1.4000000000000001], +[1.4000000000000001, 2.800000000000001, 1.4000000000000001], +[1.5000000000000002, 2.800000000000001, 1.4000000000000001], +[1.6000000000000003, 2.800000000000001, 1.4000000000000001], +[1.7000000000000004, 2.800000000000001, 1.4000000000000001], +[1.8000000000000005, 2.800000000000001, 1.4000000000000001], +[1.9000000000000006, 2.800000000000001, 1.4000000000000001], +[2.0000000000000004, 2.800000000000001, 1.4000000000000001], +[2.1000000000000005, 2.800000000000001, 1.4000000000000001], +[2.2000000000000006, 2.800000000000001, 1.4000000000000001], +[2.3000000000000007, 2.800000000000001, 1.4000000000000001], +[2.400000000000001, 2.800000000000001, 1.4000000000000001], +[2.500000000000001, 2.800000000000001, 1.4000000000000001], +[1.4000000000000001, 2.9000000000000012, 1.4000000000000001], +[1.5000000000000002, 2.9000000000000012, 1.4000000000000001], +[1.6000000000000003, 2.9000000000000012, 1.4000000000000001], +[1.7000000000000004, 2.9000000000000012, 1.4000000000000001], +[1.8000000000000005, 2.9000000000000012, 1.4000000000000001], +[1.9000000000000006, 2.9000000000000012, 1.4000000000000001], +[2.0000000000000004, 2.9000000000000012, 1.4000000000000001], +[2.1000000000000005, 2.9000000000000012, 1.4000000000000001], +[2.2000000000000006, 2.9000000000000012, 1.4000000000000001], +[2.3000000000000007, 2.9000000000000012, 1.4000000000000001], +[2.400000000000001, 2.9000000000000012, 1.4000000000000001], +[2.500000000000001, 2.9000000000000012, 1.4000000000000001], +[1.4000000000000001, 3.0000000000000013, 1.4000000000000001], +[1.5000000000000002, 3.0000000000000013, 1.4000000000000001], +[1.6000000000000003, 3.0000000000000013, 1.4000000000000001], +[1.7000000000000004, 3.0000000000000013, 1.4000000000000001], +[1.8000000000000005, 3.0000000000000013, 1.4000000000000001], +[1.9000000000000006, 3.0000000000000013, 1.4000000000000001], +[2.0000000000000004, 3.0000000000000013, 1.4000000000000001], +[2.1000000000000005, 3.0000000000000013, 1.4000000000000001], +[2.2000000000000006, 3.0000000000000013, 1.4000000000000001], +[2.3000000000000007, 3.0000000000000013, 1.4000000000000001], +[2.400000000000001, 3.0000000000000013, 1.4000000000000001], +[2.500000000000001, 3.0000000000000013, 1.4000000000000001], +[0, 0, 1.5000000000000002], +[0.1, 0, 1.5000000000000002], +[0.2, 0, 1.5000000000000002], +[0.30000000000000004, 0, 1.5000000000000002], +[0.4, 0, 1.5000000000000002], +[0.5, 0, 1.5000000000000002], +[0.6, 0, 1.5000000000000002], +[0.7, 0, 1.5000000000000002], +[0.7999999999999999, 0, 1.5000000000000002], +[0.8999999999999999, 0, 1.5000000000000002], +[0.9999999999999999, 0, 1.5000000000000002], +[1.0999999999999999, 0, 1.5000000000000002], +[1.2, 0, 1.5000000000000002], +[1.3, 0, 1.5000000000000002], +[1.4000000000000001, 0, 1.5000000000000002], +[1.5000000000000002, 0, 1.5000000000000002], +[1.6000000000000003, 0, 1.5000000000000002], +[1.7000000000000004, 0, 1.5000000000000002], +[1.8000000000000005, 0, 1.5000000000000002], +[1.9000000000000006, 0, 1.5000000000000002], +[2.0000000000000004, 0, 1.5000000000000002], +[2.1000000000000005, 0, 1.5000000000000002], +[2.2000000000000006, 0, 1.5000000000000002], +[2.3000000000000007, 0, 1.5000000000000002], +[2.400000000000001, 0, 1.5000000000000002], +[2.500000000000001, 0, 1.5000000000000002], +[2.600000000000001, 0, 1.5000000000000002], +[2.700000000000001, 0, 1.5000000000000002], +[2.800000000000001, 0, 1.5000000000000002], +[2.9000000000000012, 0, 1.5000000000000002], +[3.0000000000000013, 0, 1.5000000000000002], +[3.1000000000000014, 0, 1.5000000000000002], +[3.2000000000000015, 0, 1.5000000000000002], +[3.3000000000000016, 0, 1.5000000000000002], +[3.4000000000000017, 0, 1.5000000000000002], +[3.5000000000000018, 0, 1.5000000000000002], +[3.600000000000002, 0, 1.5000000000000002], +[3.700000000000002, 0, 1.5000000000000002], +[3.800000000000002, 0, 1.5000000000000002], +[3.900000000000002, 0, 1.5000000000000002], +[0, 0.1, 1.5000000000000002], +[0.1, 0.1, 1.5000000000000002], +[3.800000000000002, 0.1, 1.5000000000000002], +[3.900000000000002, 0.1, 1.5000000000000002], +[0, 0.2, 1.5000000000000002], +[0.1, 0.2, 1.5000000000000002], +[3.800000000000002, 0.2, 1.5000000000000002], +[0.1, 0.30000000000000004, 1.5000000000000002], +[0.2, 0.30000000000000004, 1.5000000000000002], +[3.700000000000002, 0.30000000000000004, 1.5000000000000002], +[3.800000000000002, 0.30000000000000004, 1.5000000000000002], +[0.1, 0.4, 1.5000000000000002], +[0.2, 0.4, 1.5000000000000002], +[3.700000000000002, 0.4, 1.5000000000000002], +[0.2, 0.5, 1.5000000000000002], +[0.30000000000000004, 0.5, 1.5000000000000002], +[3.600000000000002, 0.5, 1.5000000000000002], +[3.700000000000002, 0.5, 1.5000000000000002], +[0.2, 0.6, 1.5000000000000002], +[0.30000000000000004, 0.6, 1.5000000000000002], +[3.600000000000002, 0.6, 1.5000000000000002], +[0.30000000000000004, 0.7, 1.5000000000000002], +[0.4, 0.7, 1.5000000000000002], +[3.5000000000000018, 0.7, 1.5000000000000002], +[3.600000000000002, 0.7, 1.5000000000000002], +[0.30000000000000004, 0.7999999999999999, 1.5000000000000002], +[0.4, 0.7999999999999999, 1.5000000000000002], +[3.5000000000000018, 0.7999999999999999, 1.5000000000000002], +[0.4, 0.8999999999999999, 1.5000000000000002], +[0.5, 0.8999999999999999, 1.5000000000000002], +[3.4000000000000017, 0.8999999999999999, 1.5000000000000002], +[3.5000000000000018, 0.8999999999999999, 1.5000000000000002], +[0.4, 0.9999999999999999, 1.5000000000000002], +[0.5, 0.9999999999999999, 1.5000000000000002], +[3.4000000000000017, 0.9999999999999999, 1.5000000000000002], +[0.5, 1.0999999999999999, 1.5000000000000002], +[0.6, 1.0999999999999999, 1.5000000000000002], +[3.3000000000000016, 1.0999999999999999, 1.5000000000000002], +[3.4000000000000017, 1.0999999999999999, 1.5000000000000002], +[0.5, 1.2, 1.5000000000000002], +[0.6, 1.2, 1.5000000000000002], +[3.3000000000000016, 1.2, 1.5000000000000002], +[0.6, 1.3, 1.5000000000000002], +[0.7, 1.3, 1.5000000000000002], +[3.2000000000000015, 1.3, 1.5000000000000002], +[3.3000000000000016, 1.3, 1.5000000000000002], +[0.6, 1.4000000000000001, 1.5000000000000002], +[0.7, 1.4000000000000001, 1.5000000000000002], +[3.2000000000000015, 1.4000000000000001, 1.5000000000000002], +[3.3000000000000016, 1.4000000000000001, 1.5000000000000002], +[0.7, 1.5000000000000002, 1.5000000000000002], +[0.7999999999999999, 1.5000000000000002, 1.5000000000000002], +[3.1000000000000014, 1.5000000000000002, 1.5000000000000002], +[3.2000000000000015, 1.5000000000000002, 1.5000000000000002], +[0.7999999999999999, 1.6000000000000003, 1.5000000000000002], +[3.1000000000000014, 1.6000000000000003, 1.5000000000000002], +[0.7999999999999999, 1.7000000000000004, 1.5000000000000002], +[0.8999999999999999, 1.7000000000000004, 1.5000000000000002], +[3.0000000000000013, 1.7000000000000004, 1.5000000000000002], +[3.1000000000000014, 1.7000000000000004, 1.5000000000000002], +[0.8999999999999999, 1.8000000000000005, 1.5000000000000002], +[3.0000000000000013, 1.8000000000000005, 1.5000000000000002], +[3.1000000000000014, 1.8000000000000005, 1.5000000000000002], +[0.8999999999999999, 1.9000000000000006, 1.5000000000000002], +[0.9999999999999999, 1.9000000000000006, 1.5000000000000002], +[2.9000000000000012, 1.9000000000000006, 1.5000000000000002], +[3.0000000000000013, 1.9000000000000006, 1.5000000000000002], +[0.8999999999999999, 2.0000000000000004, 1.5000000000000002], +[0.9999999999999999, 2.0000000000000004, 1.5000000000000002], +[2.9000000000000012, 2.0000000000000004, 1.5000000000000002], +[3.0000000000000013, 2.0000000000000004, 1.5000000000000002], +[0.9999999999999999, 2.1000000000000005, 1.5000000000000002], +[1.0999999999999999, 2.1000000000000005, 1.5000000000000002], +[2.9000000000000012, 2.1000000000000005, 1.5000000000000002], +[0.9999999999999999, 2.2000000000000006, 1.5000000000000002], +[1.0999999999999999, 2.2000000000000006, 1.5000000000000002], +[2.800000000000001, 2.2000000000000006, 1.5000000000000002], +[1.0999999999999999, 2.3000000000000007, 1.5000000000000002], +[1.2, 2.3000000000000007, 1.5000000000000002], +[2.700000000000001, 2.3000000000000007, 1.5000000000000002], +[2.800000000000001, 2.3000000000000007, 1.5000000000000002], +[1.0999999999999999, 2.400000000000001, 1.5000000000000002], +[1.2, 2.400000000000001, 1.5000000000000002], +[2.700000000000001, 2.400000000000001, 1.5000000000000002], +[1.2, 2.500000000000001, 1.5000000000000002], +[1.3, 2.500000000000001, 1.5000000000000002], +[2.600000000000001, 2.500000000000001, 1.5000000000000002], +[2.700000000000001, 2.500000000000001, 1.5000000000000002], +[1.2, 2.600000000000001, 1.5000000000000002], +[1.3, 2.600000000000001, 1.5000000000000002], +[2.600000000000001, 2.600000000000001, 1.5000000000000002], +[2.700000000000001, 2.600000000000001, 1.5000000000000002], +[1.3, 2.700000000000001, 1.5000000000000002], +[1.4000000000000001, 2.700000000000001, 1.5000000000000002], +[2.500000000000001, 2.700000000000001, 1.5000000000000002], +[2.600000000000001, 2.700000000000001, 1.5000000000000002], +[1.4000000000000001, 2.800000000000001, 1.5000000000000002], +[2.500000000000001, 2.800000000000001, 1.5000000000000002], +[1.4000000000000001, 2.9000000000000012, 1.5000000000000002], +[1.5000000000000002, 2.9000000000000012, 1.5000000000000002], +[1.6000000000000003, 2.9000000000000012, 1.5000000000000002], +[1.7000000000000004, 2.9000000000000012, 1.5000000000000002], +[1.8000000000000005, 2.9000000000000012, 1.5000000000000002], +[1.9000000000000006, 2.9000000000000012, 1.5000000000000002], +[2.0000000000000004, 2.9000000000000012, 1.5000000000000002], +[2.1000000000000005, 2.9000000000000012, 1.5000000000000002], +[2.2000000000000006, 2.9000000000000012, 1.5000000000000002], +[2.3000000000000007, 2.9000000000000012, 1.5000000000000002], +[2.400000000000001, 2.9000000000000012, 1.5000000000000002], +[2.500000000000001, 2.9000000000000012, 1.5000000000000002], +[1.4000000000000001, 3.0000000000000013, 1.5000000000000002], +[1.5000000000000002, 3.0000000000000013, 1.5000000000000002], +[1.6000000000000003, 3.0000000000000013, 1.5000000000000002], +[1.7000000000000004, 3.0000000000000013, 1.5000000000000002], +[1.8000000000000005, 3.0000000000000013, 1.5000000000000002], +[1.9000000000000006, 3.0000000000000013, 1.5000000000000002], +[2.0000000000000004, 3.0000000000000013, 1.5000000000000002], +[2.1000000000000005, 3.0000000000000013, 1.5000000000000002], +[2.2000000000000006, 3.0000000000000013, 1.5000000000000002], +[2.3000000000000007, 3.0000000000000013, 1.5000000000000002], +[2.400000000000001, 3.0000000000000013, 1.5000000000000002], +[2.500000000000001, 3.0000000000000013, 1.5000000000000002], +[1.5000000000000002, 3.1000000000000014, 1.5000000000000002], +[1.6000000000000003, 3.1000000000000014, 1.5000000000000002], +[1.7000000000000004, 3.1000000000000014, 1.5000000000000002], +[1.8000000000000005, 3.1000000000000014, 1.5000000000000002], +[1.9000000000000006, 3.1000000000000014, 1.5000000000000002], +[2.0000000000000004, 3.1000000000000014, 1.5000000000000002], +[2.1000000000000005, 3.1000000000000014, 1.5000000000000002], +[2.2000000000000006, 3.1000000000000014, 1.5000000000000002], +[2.3000000000000007, 3.1000000000000014, 1.5000000000000002], +[2.400000000000001, 3.1000000000000014, 1.5000000000000002], +[1.5000000000000002, 3.2000000000000015, 1.5000000000000002], +[1.6000000000000003, 3.2000000000000015, 1.5000000000000002], +[1.7000000000000004, 3.2000000000000015, 1.5000000000000002], +[1.8000000000000005, 3.2000000000000015, 1.5000000000000002], +[1.9000000000000006, 3.2000000000000015, 1.5000000000000002], +[2.0000000000000004, 3.2000000000000015, 1.5000000000000002], +[2.1000000000000005, 3.2000000000000015, 1.5000000000000002], +[2.2000000000000006, 3.2000000000000015, 1.5000000000000002], +[2.3000000000000007, 3.2000000000000015, 1.5000000000000002], +[0, 0, 1.6000000000000003], +[0.1, 0, 1.6000000000000003], +[0.2, 0, 1.6000000000000003], +[0.30000000000000004, 0, 1.6000000000000003], +[0.4, 0, 1.6000000000000003], +[0.5, 0, 1.6000000000000003], +[0.6, 0, 1.6000000000000003], +[0.7, 0, 1.6000000000000003], +[0.7999999999999999, 0, 1.6000000000000003], +[0.8999999999999999, 0, 1.6000000000000003], +[0.9999999999999999, 0, 1.6000000000000003], +[1.0999999999999999, 0, 1.6000000000000003], +[1.2, 0, 1.6000000000000003], +[1.3, 0, 1.6000000000000003], +[1.4000000000000001, 0, 1.6000000000000003], +[1.5000000000000002, 0, 1.6000000000000003], +[1.6000000000000003, 0, 1.6000000000000003], +[1.7000000000000004, 0, 1.6000000000000003], +[1.8000000000000005, 0, 1.6000000000000003], +[1.9000000000000006, 0, 1.6000000000000003], +[2.0000000000000004, 0, 1.6000000000000003], +[2.1000000000000005, 0, 1.6000000000000003], +[2.2000000000000006, 0, 1.6000000000000003], +[2.3000000000000007, 0, 1.6000000000000003], +[2.400000000000001, 0, 1.6000000000000003], +[2.500000000000001, 0, 1.6000000000000003], +[2.600000000000001, 0, 1.6000000000000003], +[2.700000000000001, 0, 1.6000000000000003], +[2.800000000000001, 0, 1.6000000000000003], +[2.9000000000000012, 0, 1.6000000000000003], +[3.0000000000000013, 0, 1.6000000000000003], +[3.1000000000000014, 0, 1.6000000000000003], +[3.2000000000000015, 0, 1.6000000000000003], +[3.3000000000000016, 0, 1.6000000000000003], +[3.4000000000000017, 0, 1.6000000000000003], +[3.5000000000000018, 0, 1.6000000000000003], +[3.600000000000002, 0, 1.6000000000000003], +[3.700000000000002, 0, 1.6000000000000003], +[3.800000000000002, 0, 1.6000000000000003], +[3.900000000000002, 0, 1.6000000000000003], +[0, 0.1, 1.6000000000000003], +[0.1, 0.1, 1.6000000000000003], +[3.800000000000002, 0.1, 1.6000000000000003], +[3.900000000000002, 0.1, 1.6000000000000003], +[0, 0.2, 1.6000000000000003], +[0.1, 0.2, 1.6000000000000003], +[3.800000000000002, 0.2, 1.6000000000000003], +[0.1, 0.30000000000000004, 1.6000000000000003], +[0.2, 0.30000000000000004, 1.6000000000000003], +[3.700000000000002, 0.30000000000000004, 1.6000000000000003], +[3.800000000000002, 0.30000000000000004, 1.6000000000000003], +[0.1, 0.4, 1.6000000000000003], +[0.2, 0.4, 1.6000000000000003], +[3.700000000000002, 0.4, 1.6000000000000003], +[0.2, 0.5, 1.6000000000000003], +[0.30000000000000004, 0.5, 1.6000000000000003], +[3.600000000000002, 0.5, 1.6000000000000003], +[3.700000000000002, 0.5, 1.6000000000000003], +[0.2, 0.6, 1.6000000000000003], +[0.30000000000000004, 0.6, 1.6000000000000003], +[3.600000000000002, 0.6, 1.6000000000000003], +[0.30000000000000004, 0.7, 1.6000000000000003], +[0.4, 0.7, 1.6000000000000003], +[3.5000000000000018, 0.7, 1.6000000000000003], +[3.600000000000002, 0.7, 1.6000000000000003], +[0.30000000000000004, 0.7999999999999999, 1.6000000000000003], +[0.4, 0.7999999999999999, 1.6000000000000003], +[3.5000000000000018, 0.7999999999999999, 1.6000000000000003], +[0.4, 0.8999999999999999, 1.6000000000000003], +[0.5, 0.8999999999999999, 1.6000000000000003], +[3.4000000000000017, 0.8999999999999999, 1.6000000000000003], +[3.5000000000000018, 0.8999999999999999, 1.6000000000000003], +[0.4, 0.9999999999999999, 1.6000000000000003], +[0.5, 0.9999999999999999, 1.6000000000000003], +[3.4000000000000017, 0.9999999999999999, 1.6000000000000003], +[0.5, 1.0999999999999999, 1.6000000000000003], +[0.6, 1.0999999999999999, 1.6000000000000003], +[3.3000000000000016, 1.0999999999999999, 1.6000000000000003], +[3.4000000000000017, 1.0999999999999999, 1.6000000000000003], +[0.5, 1.2, 1.6000000000000003], +[0.6, 1.2, 1.6000000000000003], +[3.3000000000000016, 1.2, 1.6000000000000003], +[0.6, 1.3, 1.6000000000000003], +[0.7, 1.3, 1.6000000000000003], +[3.2000000000000015, 1.3, 1.6000000000000003], +[3.3000000000000016, 1.3, 1.6000000000000003], +[0.6, 1.4000000000000001, 1.6000000000000003], +[0.7, 1.4000000000000001, 1.6000000000000003], +[3.2000000000000015, 1.4000000000000001, 1.6000000000000003], +[3.3000000000000016, 1.4000000000000001, 1.6000000000000003], +[0.7, 1.5000000000000002, 1.6000000000000003], +[0.7999999999999999, 1.5000000000000002, 1.6000000000000003], +[3.1000000000000014, 1.5000000000000002, 1.6000000000000003], +[3.2000000000000015, 1.5000000000000002, 1.6000000000000003], +[0.7999999999999999, 1.6000000000000003, 1.6000000000000003], +[3.1000000000000014, 1.6000000000000003, 1.6000000000000003], +[0.7999999999999999, 1.7000000000000004, 1.6000000000000003], +[0.8999999999999999, 1.7000000000000004, 1.6000000000000003], +[3.0000000000000013, 1.7000000000000004, 1.6000000000000003], +[3.1000000000000014, 1.7000000000000004, 1.6000000000000003], +[0.8999999999999999, 1.8000000000000005, 1.6000000000000003], +[3.0000000000000013, 1.8000000000000005, 1.6000000000000003], +[3.1000000000000014, 1.8000000000000005, 1.6000000000000003], +[0.8999999999999999, 1.9000000000000006, 1.6000000000000003], +[0.9999999999999999, 1.9000000000000006, 1.6000000000000003], +[2.9000000000000012, 1.9000000000000006, 1.6000000000000003], +[3.0000000000000013, 1.9000000000000006, 1.6000000000000003], +[0.8999999999999999, 2.0000000000000004, 1.6000000000000003], +[0.9999999999999999, 2.0000000000000004, 1.6000000000000003], +[2.9000000000000012, 2.0000000000000004, 1.6000000000000003], +[3.0000000000000013, 2.0000000000000004, 1.6000000000000003], +[0.9999999999999999, 2.1000000000000005, 1.6000000000000003], +[1.0999999999999999, 2.1000000000000005, 1.6000000000000003], +[2.9000000000000012, 2.1000000000000005, 1.6000000000000003], +[0.9999999999999999, 2.2000000000000006, 1.6000000000000003], +[1.0999999999999999, 2.2000000000000006, 1.6000000000000003], +[2.800000000000001, 2.2000000000000006, 1.6000000000000003], +[1.0999999999999999, 2.3000000000000007, 1.6000000000000003], +[1.2, 2.3000000000000007, 1.6000000000000003], +[2.700000000000001, 2.3000000000000007, 1.6000000000000003], +[2.800000000000001, 2.3000000000000007, 1.6000000000000003], +[1.0999999999999999, 2.400000000000001, 1.6000000000000003], +[1.2, 2.400000000000001, 1.6000000000000003], +[2.700000000000001, 2.400000000000001, 1.6000000000000003], +[1.2, 2.500000000000001, 1.6000000000000003], +[1.3, 2.500000000000001, 1.6000000000000003], +[2.600000000000001, 2.500000000000001, 1.6000000000000003], +[2.700000000000001, 2.500000000000001, 1.6000000000000003], +[1.2, 2.600000000000001, 1.6000000000000003], +[1.3, 2.600000000000001, 1.6000000000000003], +[2.600000000000001, 2.600000000000001, 1.6000000000000003], +[2.700000000000001, 2.600000000000001, 1.6000000000000003], +[1.3, 2.700000000000001, 1.6000000000000003], +[1.4000000000000001, 2.700000000000001, 1.6000000000000003], +[2.500000000000001, 2.700000000000001, 1.6000000000000003], +[2.600000000000001, 2.700000000000001, 1.6000000000000003], +[1.4000000000000001, 2.800000000000001, 1.6000000000000003], +[2.500000000000001, 2.800000000000001, 1.6000000000000003], +[1.4000000000000001, 2.9000000000000012, 1.6000000000000003], +[1.5000000000000002, 2.9000000000000012, 1.6000000000000003], +[2.400000000000001, 2.9000000000000012, 1.6000000000000003], +[2.500000000000001, 2.9000000000000012, 1.6000000000000003], +[1.4000000000000001, 3.0000000000000013, 1.6000000000000003], +[1.5000000000000002, 3.0000000000000013, 1.6000000000000003], +[2.400000000000001, 3.0000000000000013, 1.6000000000000003], +[2.500000000000001, 3.0000000000000013, 1.6000000000000003], +[1.5000000000000002, 3.1000000000000014, 1.6000000000000003], +[1.6000000000000003, 3.1000000000000014, 1.6000000000000003], +[1.7000000000000004, 3.1000000000000014, 1.6000000000000003], +[1.8000000000000005, 3.1000000000000014, 1.6000000000000003], +[1.9000000000000006, 3.1000000000000014, 1.6000000000000003], +[2.0000000000000004, 3.1000000000000014, 1.6000000000000003], +[2.1000000000000005, 3.1000000000000014, 1.6000000000000003], +[2.2000000000000006, 3.1000000000000014, 1.6000000000000003], +[2.3000000000000007, 3.1000000000000014, 1.6000000000000003], +[2.400000000000001, 3.1000000000000014, 1.6000000000000003], +[1.5000000000000002, 3.2000000000000015, 1.6000000000000003], +[1.6000000000000003, 3.2000000000000015, 1.6000000000000003], +[1.7000000000000004, 3.2000000000000015, 1.6000000000000003], +[1.8000000000000005, 3.2000000000000015, 1.6000000000000003], +[1.9000000000000006, 3.2000000000000015, 1.6000000000000003], +[2.0000000000000004, 3.2000000000000015, 1.6000000000000003], +[2.1000000000000005, 3.2000000000000015, 1.6000000000000003], +[2.2000000000000006, 3.2000000000000015, 1.6000000000000003], +[2.3000000000000007, 3.2000000000000015, 1.6000000000000003], +[1.6000000000000003, 3.3000000000000016, 1.6000000000000003], +[1.7000000000000004, 3.3000000000000016, 1.6000000000000003], +[1.8000000000000005, 3.3000000000000016, 1.6000000000000003], +[1.9000000000000006, 3.3000000000000016, 1.6000000000000003], +[2.0000000000000004, 3.3000000000000016, 1.6000000000000003], +[2.1000000000000005, 3.3000000000000016, 1.6000000000000003], +[2.2000000000000006, 3.3000000000000016, 1.6000000000000003], +[2.3000000000000007, 3.3000000000000016, 1.6000000000000003], +[1.6000000000000003, 3.4000000000000017, 1.6000000000000003], +[1.7000000000000004, 3.4000000000000017, 1.6000000000000003], +[1.8000000000000005, 3.4000000000000017, 1.6000000000000003], +[1.9000000000000006, 3.4000000000000017, 1.6000000000000003], +[2.0000000000000004, 3.4000000000000017, 1.6000000000000003], +[2.1000000000000005, 3.4000000000000017, 1.6000000000000003], +[2.2000000000000006, 3.4000000000000017, 1.6000000000000003], +[2.3000000000000007, 3.4000000000000017, 1.6000000000000003], +[0, 0, 1.7000000000000004], +[0.1, 0, 1.7000000000000004], +[0.2, 0, 1.7000000000000004], +[0.30000000000000004, 0, 1.7000000000000004], +[0.4, 0, 1.7000000000000004], +[0.5, 0, 1.7000000000000004], +[0.6, 0, 1.7000000000000004], +[0.7, 0, 1.7000000000000004], +[0.7999999999999999, 0, 1.7000000000000004], +[0.8999999999999999, 0, 1.7000000000000004], +[0.9999999999999999, 0, 1.7000000000000004], +[1.0999999999999999, 0, 1.7000000000000004], +[1.2, 0, 1.7000000000000004], +[1.3, 0, 1.7000000000000004], +[1.4000000000000001, 0, 1.7000000000000004], +[1.5000000000000002, 0, 1.7000000000000004], +[1.6000000000000003, 0, 1.7000000000000004], +[1.7000000000000004, 0, 1.7000000000000004], +[1.8000000000000005, 0, 1.7000000000000004], +[1.9000000000000006, 0, 1.7000000000000004], +[2.0000000000000004, 0, 1.7000000000000004], +[2.1000000000000005, 0, 1.7000000000000004], +[2.2000000000000006, 0, 1.7000000000000004], +[2.3000000000000007, 0, 1.7000000000000004], +[2.400000000000001, 0, 1.7000000000000004], +[2.500000000000001, 0, 1.7000000000000004], +[2.600000000000001, 0, 1.7000000000000004], +[2.700000000000001, 0, 1.7000000000000004], +[2.800000000000001, 0, 1.7000000000000004], +[2.9000000000000012, 0, 1.7000000000000004], +[3.0000000000000013, 0, 1.7000000000000004], +[3.1000000000000014, 0, 1.7000000000000004], +[3.2000000000000015, 0, 1.7000000000000004], +[3.3000000000000016, 0, 1.7000000000000004], +[3.4000000000000017, 0, 1.7000000000000004], +[3.5000000000000018, 0, 1.7000000000000004], +[3.600000000000002, 0, 1.7000000000000004], +[3.700000000000002, 0, 1.7000000000000004], +[3.800000000000002, 0, 1.7000000000000004], +[3.900000000000002, 0, 1.7000000000000004], +[0, 0.1, 1.7000000000000004], +[0.1, 0.1, 1.7000000000000004], +[3.800000000000002, 0.1, 1.7000000000000004], +[3.900000000000002, 0.1, 1.7000000000000004], +[0, 0.2, 1.7000000000000004], +[0.1, 0.2, 1.7000000000000004], +[3.800000000000002, 0.2, 1.7000000000000004], +[0.1, 0.30000000000000004, 1.7000000000000004], +[0.2, 0.30000000000000004, 1.7000000000000004], +[3.700000000000002, 0.30000000000000004, 1.7000000000000004], +[3.800000000000002, 0.30000000000000004, 1.7000000000000004], +[0.1, 0.4, 1.7000000000000004], +[0.2, 0.4, 1.7000000000000004], +[3.700000000000002, 0.4, 1.7000000000000004], +[0.2, 0.5, 1.7000000000000004], +[0.30000000000000004, 0.5, 1.7000000000000004], +[3.600000000000002, 0.5, 1.7000000000000004], +[3.700000000000002, 0.5, 1.7000000000000004], +[0.2, 0.6, 1.7000000000000004], +[0.30000000000000004, 0.6, 1.7000000000000004], +[3.600000000000002, 0.6, 1.7000000000000004], +[0.30000000000000004, 0.7, 1.7000000000000004], +[0.4, 0.7, 1.7000000000000004], +[3.5000000000000018, 0.7, 1.7000000000000004], +[3.600000000000002, 0.7, 1.7000000000000004], +[0.30000000000000004, 0.7999999999999999, 1.7000000000000004], +[0.4, 0.7999999999999999, 1.7000000000000004], +[3.5000000000000018, 0.7999999999999999, 1.7000000000000004], +[0.4, 0.8999999999999999, 1.7000000000000004], +[0.5, 0.8999999999999999, 1.7000000000000004], +[3.4000000000000017, 0.8999999999999999, 1.7000000000000004], +[3.5000000000000018, 0.8999999999999999, 1.7000000000000004], +[0.4, 0.9999999999999999, 1.7000000000000004], +[0.5, 0.9999999999999999, 1.7000000000000004], +[3.4000000000000017, 0.9999999999999999, 1.7000000000000004], +[0.5, 1.0999999999999999, 1.7000000000000004], +[0.6, 1.0999999999999999, 1.7000000000000004], +[3.3000000000000016, 1.0999999999999999, 1.7000000000000004], +[3.4000000000000017, 1.0999999999999999, 1.7000000000000004], +[0.5, 1.2, 1.7000000000000004], +[0.6, 1.2, 1.7000000000000004], +[3.3000000000000016, 1.2, 1.7000000000000004], +[0.6, 1.3, 1.7000000000000004], +[0.7, 1.3, 1.7000000000000004], +[3.2000000000000015, 1.3, 1.7000000000000004], +[3.3000000000000016, 1.3, 1.7000000000000004], +[0.6, 1.4000000000000001, 1.7000000000000004], +[0.7, 1.4000000000000001, 1.7000000000000004], +[3.2000000000000015, 1.4000000000000001, 1.7000000000000004], +[3.3000000000000016, 1.4000000000000001, 1.7000000000000004], +[0.7, 1.5000000000000002, 1.7000000000000004], +[0.7999999999999999, 1.5000000000000002, 1.7000000000000004], +[3.1000000000000014, 1.5000000000000002, 1.7000000000000004], +[3.2000000000000015, 1.5000000000000002, 1.7000000000000004], +[0.7999999999999999, 1.6000000000000003, 1.7000000000000004], +[3.1000000000000014, 1.6000000000000003, 1.7000000000000004], +[0.7999999999999999, 1.7000000000000004, 1.7000000000000004], +[0.8999999999999999, 1.7000000000000004, 1.7000000000000004], +[3.0000000000000013, 1.7000000000000004, 1.7000000000000004], +[3.1000000000000014, 1.7000000000000004, 1.7000000000000004], +[0.8999999999999999, 1.8000000000000005, 1.7000000000000004], +[3.0000000000000013, 1.8000000000000005, 1.7000000000000004], +[3.1000000000000014, 1.8000000000000005, 1.7000000000000004], +[0.8999999999999999, 1.9000000000000006, 1.7000000000000004], +[0.9999999999999999, 1.9000000000000006, 1.7000000000000004], +[2.9000000000000012, 1.9000000000000006, 1.7000000000000004], +[3.0000000000000013, 1.9000000000000006, 1.7000000000000004], +[0.8999999999999999, 2.0000000000000004, 1.7000000000000004], +[0.9999999999999999, 2.0000000000000004, 1.7000000000000004], +[2.9000000000000012, 2.0000000000000004, 1.7000000000000004], +[3.0000000000000013, 2.0000000000000004, 1.7000000000000004], +[0.9999999999999999, 2.1000000000000005, 1.7000000000000004], +[1.0999999999999999, 2.1000000000000005, 1.7000000000000004], +[2.9000000000000012, 2.1000000000000005, 1.7000000000000004], +[0.9999999999999999, 2.2000000000000006, 1.7000000000000004], +[1.0999999999999999, 2.2000000000000006, 1.7000000000000004], +[2.800000000000001, 2.2000000000000006, 1.7000000000000004], +[1.0999999999999999, 2.3000000000000007, 1.7000000000000004], +[1.2, 2.3000000000000007, 1.7000000000000004], +[2.700000000000001, 2.3000000000000007, 1.7000000000000004], +[2.800000000000001, 2.3000000000000007, 1.7000000000000004], +[1.0999999999999999, 2.400000000000001, 1.7000000000000004], +[1.2, 2.400000000000001, 1.7000000000000004], +[2.700000000000001, 2.400000000000001, 1.7000000000000004], +[1.2, 2.500000000000001, 1.7000000000000004], +[1.3, 2.500000000000001, 1.7000000000000004], +[2.600000000000001, 2.500000000000001, 1.7000000000000004], +[2.700000000000001, 2.500000000000001, 1.7000000000000004], +[1.2, 2.600000000000001, 1.7000000000000004], +[1.3, 2.600000000000001, 1.7000000000000004], +[2.600000000000001, 2.600000000000001, 1.7000000000000004], +[2.700000000000001, 2.600000000000001, 1.7000000000000004], +[1.3, 2.700000000000001, 1.7000000000000004], +[1.4000000000000001, 2.700000000000001, 1.7000000000000004], +[2.500000000000001, 2.700000000000001, 1.7000000000000004], +[2.600000000000001, 2.700000000000001, 1.7000000000000004], +[1.4000000000000001, 2.800000000000001, 1.7000000000000004], +[2.500000000000001, 2.800000000000001, 1.7000000000000004], +[1.4000000000000001, 2.9000000000000012, 1.7000000000000004], +[1.5000000000000002, 2.9000000000000012, 1.7000000000000004], +[2.400000000000001, 2.9000000000000012, 1.7000000000000004], +[2.500000000000001, 2.9000000000000012, 1.7000000000000004], +[1.4000000000000001, 3.0000000000000013, 1.7000000000000004], +[1.5000000000000002, 3.0000000000000013, 1.7000000000000004], +[2.400000000000001, 3.0000000000000013, 1.7000000000000004], +[2.500000000000001, 3.0000000000000013, 1.7000000000000004], +[1.5000000000000002, 3.1000000000000014, 1.7000000000000004], +[1.6000000000000003, 3.1000000000000014, 1.7000000000000004], +[2.3000000000000007, 3.1000000000000014, 1.7000000000000004], +[2.400000000000001, 3.1000000000000014, 1.7000000000000004], +[1.5000000000000002, 3.2000000000000015, 1.7000000000000004], +[1.6000000000000003, 3.2000000000000015, 1.7000000000000004], +[2.3000000000000007, 3.2000000000000015, 1.7000000000000004], +[1.6000000000000003, 3.3000000000000016, 1.7000000000000004], +[1.7000000000000004, 3.3000000000000016, 1.7000000000000004], +[1.8000000000000005, 3.3000000000000016, 1.7000000000000004], +[1.9000000000000006, 3.3000000000000016, 1.7000000000000004], +[2.0000000000000004, 3.3000000000000016, 1.7000000000000004], +[2.1000000000000005, 3.3000000000000016, 1.7000000000000004], +[2.2000000000000006, 3.3000000000000016, 1.7000000000000004], +[2.3000000000000007, 3.3000000000000016, 1.7000000000000004], +[1.6000000000000003, 3.4000000000000017, 1.7000000000000004], +[1.7000000000000004, 3.4000000000000017, 1.7000000000000004], +[1.8000000000000005, 3.4000000000000017, 1.7000000000000004], +[1.9000000000000006, 3.4000000000000017, 1.7000000000000004], +[2.0000000000000004, 3.4000000000000017, 1.7000000000000004], +[2.1000000000000005, 3.4000000000000017, 1.7000000000000004], +[2.2000000000000006, 3.4000000000000017, 1.7000000000000004], +[2.3000000000000007, 3.4000000000000017, 1.7000000000000004], +[1.7000000000000004, 3.5000000000000018, 1.7000000000000004], +[1.8000000000000005, 3.5000000000000018, 1.7000000000000004], +[1.9000000000000006, 3.5000000000000018, 1.7000000000000004], +[2.0000000000000004, 3.5000000000000018, 1.7000000000000004], +[2.1000000000000005, 3.5000000000000018, 1.7000000000000004], +[2.2000000000000006, 3.5000000000000018, 1.7000000000000004], +[1.7000000000000004, 3.600000000000002, 1.7000000000000004], +[1.8000000000000005, 3.600000000000002, 1.7000000000000004], +[1.9000000000000006, 3.600000000000002, 1.7000000000000004], +[2.0000000000000004, 3.600000000000002, 1.7000000000000004], +[2.1000000000000005, 3.600000000000002, 1.7000000000000004], +[2.2000000000000006, 3.600000000000002, 1.7000000000000004], +[0, 0, 1.8000000000000005], +[0.1, 0, 1.8000000000000005], +[0.2, 0, 1.8000000000000005], +[0.30000000000000004, 0, 1.8000000000000005], +[0.4, 0, 1.8000000000000005], +[0.5, 0, 1.8000000000000005], +[0.6, 0, 1.8000000000000005], +[0.7, 0, 1.8000000000000005], +[0.7999999999999999, 0, 1.8000000000000005], +[0.8999999999999999, 0, 1.8000000000000005], +[0.9999999999999999, 0, 1.8000000000000005], +[1.0999999999999999, 0, 1.8000000000000005], +[1.2, 0, 1.8000000000000005], +[1.3, 0, 1.8000000000000005], +[1.4000000000000001, 0, 1.8000000000000005], +[1.5000000000000002, 0, 1.8000000000000005], +[1.6000000000000003, 0, 1.8000000000000005], +[1.7000000000000004, 0, 1.8000000000000005], +[1.8000000000000005, 0, 1.8000000000000005], +[1.9000000000000006, 0, 1.8000000000000005], +[2.0000000000000004, 0, 1.8000000000000005], +[2.1000000000000005, 0, 1.8000000000000005], +[2.2000000000000006, 0, 1.8000000000000005], +[2.3000000000000007, 0, 1.8000000000000005], +[2.400000000000001, 0, 1.8000000000000005], +[2.500000000000001, 0, 1.8000000000000005], +[2.600000000000001, 0, 1.8000000000000005], +[2.700000000000001, 0, 1.8000000000000005], +[2.800000000000001, 0, 1.8000000000000005], +[2.9000000000000012, 0, 1.8000000000000005], +[3.0000000000000013, 0, 1.8000000000000005], +[3.1000000000000014, 0, 1.8000000000000005], +[3.2000000000000015, 0, 1.8000000000000005], +[3.3000000000000016, 0, 1.8000000000000005], +[3.4000000000000017, 0, 1.8000000000000005], +[3.5000000000000018, 0, 1.8000000000000005], +[3.600000000000002, 0, 1.8000000000000005], +[3.700000000000002, 0, 1.8000000000000005], +[3.800000000000002, 0, 1.8000000000000005], +[3.900000000000002, 0, 1.8000000000000005], +[0, 0.1, 1.8000000000000005], +[0.1, 0.1, 1.8000000000000005], +[3.800000000000002, 0.1, 1.8000000000000005], +[3.900000000000002, 0.1, 1.8000000000000005], +[0, 0.2, 1.8000000000000005], +[0.1, 0.2, 1.8000000000000005], +[3.800000000000002, 0.2, 1.8000000000000005], +[0.1, 0.30000000000000004, 1.8000000000000005], +[0.2, 0.30000000000000004, 1.8000000000000005], +[3.700000000000002, 0.30000000000000004, 1.8000000000000005], +[3.800000000000002, 0.30000000000000004, 1.8000000000000005], +[0.1, 0.4, 1.8000000000000005], +[0.2, 0.4, 1.8000000000000005], +[3.700000000000002, 0.4, 1.8000000000000005], +[0.2, 0.5, 1.8000000000000005], +[0.30000000000000004, 0.5, 1.8000000000000005], +[3.600000000000002, 0.5, 1.8000000000000005], +[3.700000000000002, 0.5, 1.8000000000000005], +[0.2, 0.6, 1.8000000000000005], +[0.30000000000000004, 0.6, 1.8000000000000005], +[3.600000000000002, 0.6, 1.8000000000000005], +[0.30000000000000004, 0.7, 1.8000000000000005], +[0.4, 0.7, 1.8000000000000005], +[3.5000000000000018, 0.7, 1.8000000000000005], +[3.600000000000002, 0.7, 1.8000000000000005], +[0.30000000000000004, 0.7999999999999999, 1.8000000000000005], +[0.4, 0.7999999999999999, 1.8000000000000005], +[3.5000000000000018, 0.7999999999999999, 1.8000000000000005], +[0.4, 0.8999999999999999, 1.8000000000000005], +[0.5, 0.8999999999999999, 1.8000000000000005], +[3.4000000000000017, 0.8999999999999999, 1.8000000000000005], +[3.5000000000000018, 0.8999999999999999, 1.8000000000000005], +[0.4, 0.9999999999999999, 1.8000000000000005], +[0.5, 0.9999999999999999, 1.8000000000000005], +[3.4000000000000017, 0.9999999999999999, 1.8000000000000005], +[0.5, 1.0999999999999999, 1.8000000000000005], +[0.6, 1.0999999999999999, 1.8000000000000005], +[3.3000000000000016, 1.0999999999999999, 1.8000000000000005], +[3.4000000000000017, 1.0999999999999999, 1.8000000000000005], +[0.5, 1.2, 1.8000000000000005], +[0.6, 1.2, 1.8000000000000005], +[3.3000000000000016, 1.2, 1.8000000000000005], +[0.6, 1.3, 1.8000000000000005], +[0.7, 1.3, 1.8000000000000005], +[3.2000000000000015, 1.3, 1.8000000000000005], +[3.3000000000000016, 1.3, 1.8000000000000005], +[0.6, 1.4000000000000001, 1.8000000000000005], +[0.7, 1.4000000000000001, 1.8000000000000005], +[3.2000000000000015, 1.4000000000000001, 1.8000000000000005], +[3.3000000000000016, 1.4000000000000001, 1.8000000000000005], +[0.7, 1.5000000000000002, 1.8000000000000005], +[0.7999999999999999, 1.5000000000000002, 1.8000000000000005], +[3.1000000000000014, 1.5000000000000002, 1.8000000000000005], +[3.2000000000000015, 1.5000000000000002, 1.8000000000000005], +[0.7999999999999999, 1.6000000000000003, 1.8000000000000005], +[3.1000000000000014, 1.6000000000000003, 1.8000000000000005], +[0.7999999999999999, 1.7000000000000004, 1.8000000000000005], +[0.8999999999999999, 1.7000000000000004, 1.8000000000000005], +[3.0000000000000013, 1.7000000000000004, 1.8000000000000005], +[3.1000000000000014, 1.7000000000000004, 1.8000000000000005], +[0.8999999999999999, 1.8000000000000005, 1.8000000000000005], +[3.0000000000000013, 1.8000000000000005, 1.8000000000000005], +[3.1000000000000014, 1.8000000000000005, 1.8000000000000005], +[0.8999999999999999, 1.9000000000000006, 1.8000000000000005], +[0.9999999999999999, 1.9000000000000006, 1.8000000000000005], +[2.9000000000000012, 1.9000000000000006, 1.8000000000000005], +[3.0000000000000013, 1.9000000000000006, 1.8000000000000005], +[0.8999999999999999, 2.0000000000000004, 1.8000000000000005], +[0.9999999999999999, 2.0000000000000004, 1.8000000000000005], +[2.9000000000000012, 2.0000000000000004, 1.8000000000000005], +[3.0000000000000013, 2.0000000000000004, 1.8000000000000005], +[0.9999999999999999, 2.1000000000000005, 1.8000000000000005], +[1.0999999999999999, 2.1000000000000005, 1.8000000000000005], +[2.9000000000000012, 2.1000000000000005, 1.8000000000000005], +[0.9999999999999999, 2.2000000000000006, 1.8000000000000005], +[1.0999999999999999, 2.2000000000000006, 1.8000000000000005], +[2.800000000000001, 2.2000000000000006, 1.8000000000000005], +[1.0999999999999999, 2.3000000000000007, 1.8000000000000005], +[1.2, 2.3000000000000007, 1.8000000000000005], +[2.700000000000001, 2.3000000000000007, 1.8000000000000005], +[2.800000000000001, 2.3000000000000007, 1.8000000000000005], +[1.0999999999999999, 2.400000000000001, 1.8000000000000005], +[1.2, 2.400000000000001, 1.8000000000000005], +[2.700000000000001, 2.400000000000001, 1.8000000000000005], +[1.2, 2.500000000000001, 1.8000000000000005], +[1.3, 2.500000000000001, 1.8000000000000005], +[2.600000000000001, 2.500000000000001, 1.8000000000000005], +[2.700000000000001, 2.500000000000001, 1.8000000000000005], +[1.2, 2.600000000000001, 1.8000000000000005], +[1.3, 2.600000000000001, 1.8000000000000005], +[2.600000000000001, 2.600000000000001, 1.8000000000000005], +[2.700000000000001, 2.600000000000001, 1.8000000000000005], +[1.3, 2.700000000000001, 1.8000000000000005], +[1.4000000000000001, 2.700000000000001, 1.8000000000000005], +[2.500000000000001, 2.700000000000001, 1.8000000000000005], +[2.600000000000001, 2.700000000000001, 1.8000000000000005], +[1.4000000000000001, 2.800000000000001, 1.8000000000000005], +[2.500000000000001, 2.800000000000001, 1.8000000000000005], +[1.4000000000000001, 2.9000000000000012, 1.8000000000000005], +[1.5000000000000002, 2.9000000000000012, 1.8000000000000005], +[2.400000000000001, 2.9000000000000012, 1.8000000000000005], +[2.500000000000001, 2.9000000000000012, 1.8000000000000005], +[1.4000000000000001, 3.0000000000000013, 1.8000000000000005], +[1.5000000000000002, 3.0000000000000013, 1.8000000000000005], +[2.400000000000001, 3.0000000000000013, 1.8000000000000005], +[2.500000000000001, 3.0000000000000013, 1.8000000000000005], +[1.5000000000000002, 3.1000000000000014, 1.8000000000000005], +[1.6000000000000003, 3.1000000000000014, 1.8000000000000005], +[2.3000000000000007, 3.1000000000000014, 1.8000000000000005], +[2.400000000000001, 3.1000000000000014, 1.8000000000000005], +[1.5000000000000002, 3.2000000000000015, 1.8000000000000005], +[1.6000000000000003, 3.2000000000000015, 1.8000000000000005], +[2.3000000000000007, 3.2000000000000015, 1.8000000000000005], +[1.6000000000000003, 3.3000000000000016, 1.8000000000000005], +[1.7000000000000004, 3.3000000000000016, 1.8000000000000005], +[2.2000000000000006, 3.3000000000000016, 1.8000000000000005], +[2.3000000000000007, 3.3000000000000016, 1.8000000000000005], +[1.6000000000000003, 3.4000000000000017, 1.8000000000000005], +[1.7000000000000004, 3.4000000000000017, 1.8000000000000005], +[2.2000000000000006, 3.4000000000000017, 1.8000000000000005], +[2.3000000000000007, 3.4000000000000017, 1.8000000000000005], +[1.7000000000000004, 3.5000000000000018, 1.8000000000000005], +[1.8000000000000005, 3.5000000000000018, 1.8000000000000005], +[1.9000000000000006, 3.5000000000000018, 1.8000000000000005], +[2.0000000000000004, 3.5000000000000018, 1.8000000000000005], +[2.1000000000000005, 3.5000000000000018, 1.8000000000000005], +[2.2000000000000006, 3.5000000000000018, 1.8000000000000005], +[1.7000000000000004, 3.600000000000002, 1.8000000000000005], +[1.8000000000000005, 3.600000000000002, 1.8000000000000005], +[1.9000000000000006, 3.600000000000002, 1.8000000000000005], +[2.0000000000000004, 3.600000000000002, 1.8000000000000005], +[2.1000000000000005, 3.600000000000002, 1.8000000000000005], +[2.2000000000000006, 3.600000000000002, 1.8000000000000005], +[1.8000000000000005, 3.700000000000002, 1.8000000000000005], +[1.9000000000000006, 3.700000000000002, 1.8000000000000005], +[2.0000000000000004, 3.700000000000002, 1.8000000000000005], +[2.1000000000000005, 3.700000000000002, 1.8000000000000005], +[1.8000000000000005, 3.800000000000002, 1.8000000000000005], +[1.9000000000000006, 3.800000000000002, 1.8000000000000005], +[2.0000000000000004, 3.800000000000002, 1.8000000000000005], +[2.1000000000000005, 3.800000000000002, 1.8000000000000005], +[0, 0, 1.9000000000000006], +[0.1, 0, 1.9000000000000006], +[0.2, 0, 1.9000000000000006], +[0.30000000000000004, 0, 1.9000000000000006], +[0.4, 0, 1.9000000000000006], +[0.5, 0, 1.9000000000000006], +[0.6, 0, 1.9000000000000006], +[0.7, 0, 1.9000000000000006], +[0.7999999999999999, 0, 1.9000000000000006], +[0.8999999999999999, 0, 1.9000000000000006], +[0.9999999999999999, 0, 1.9000000000000006], +[1.0999999999999999, 0, 1.9000000000000006], +[1.2, 0, 1.9000000000000006], +[1.3, 0, 1.9000000000000006], +[1.4000000000000001, 0, 1.9000000000000006], +[1.5000000000000002, 0, 1.9000000000000006], +[1.6000000000000003, 0, 1.9000000000000006], +[1.7000000000000004, 0, 1.9000000000000006], +[1.8000000000000005, 0, 1.9000000000000006], +[1.9000000000000006, 0, 1.9000000000000006], +[2.0000000000000004, 0, 1.9000000000000006], +[2.1000000000000005, 0, 1.9000000000000006], +[2.2000000000000006, 0, 1.9000000000000006], +[2.3000000000000007, 0, 1.9000000000000006], +[2.400000000000001, 0, 1.9000000000000006], +[2.500000000000001, 0, 1.9000000000000006], +[2.600000000000001, 0, 1.9000000000000006], +[2.700000000000001, 0, 1.9000000000000006], +[2.800000000000001, 0, 1.9000000000000006], +[2.9000000000000012, 0, 1.9000000000000006], +[3.0000000000000013, 0, 1.9000000000000006], +[3.1000000000000014, 0, 1.9000000000000006], +[3.2000000000000015, 0, 1.9000000000000006], +[3.3000000000000016, 0, 1.9000000000000006], +[3.4000000000000017, 0, 1.9000000000000006], +[3.5000000000000018, 0, 1.9000000000000006], +[3.600000000000002, 0, 1.9000000000000006], +[3.700000000000002, 0, 1.9000000000000006], +[3.800000000000002, 0, 1.9000000000000006], +[3.900000000000002, 0, 1.9000000000000006], +[0, 0.1, 1.9000000000000006], +[0.1, 0.1, 1.9000000000000006], +[3.800000000000002, 0.1, 1.9000000000000006], +[3.900000000000002, 0.1, 1.9000000000000006], +[0, 0.2, 1.9000000000000006], +[0.1, 0.2, 1.9000000000000006], +[3.800000000000002, 0.2, 1.9000000000000006], +[0.1, 0.30000000000000004, 1.9000000000000006], +[0.2, 0.30000000000000004, 1.9000000000000006], +[3.700000000000002, 0.30000000000000004, 1.9000000000000006], +[3.800000000000002, 0.30000000000000004, 1.9000000000000006], +[0.1, 0.4, 1.9000000000000006], +[0.2, 0.4, 1.9000000000000006], +[3.700000000000002, 0.4, 1.9000000000000006], +[0.2, 0.5, 1.9000000000000006], +[0.30000000000000004, 0.5, 1.9000000000000006], +[3.600000000000002, 0.5, 1.9000000000000006], +[3.700000000000002, 0.5, 1.9000000000000006], +[0.2, 0.6, 1.9000000000000006], +[0.30000000000000004, 0.6, 1.9000000000000006], +[3.600000000000002, 0.6, 1.9000000000000006], +[0.30000000000000004, 0.7, 1.9000000000000006], +[0.4, 0.7, 1.9000000000000006], +[3.5000000000000018, 0.7, 1.9000000000000006], +[3.600000000000002, 0.7, 1.9000000000000006], +[0.30000000000000004, 0.7999999999999999, 1.9000000000000006], +[0.4, 0.7999999999999999, 1.9000000000000006], +[3.5000000000000018, 0.7999999999999999, 1.9000000000000006], +[0.4, 0.8999999999999999, 1.9000000000000006], +[0.5, 0.8999999999999999, 1.9000000000000006], +[3.4000000000000017, 0.8999999999999999, 1.9000000000000006], +[3.5000000000000018, 0.8999999999999999, 1.9000000000000006], +[0.4, 0.9999999999999999, 1.9000000000000006], +[0.5, 0.9999999999999999, 1.9000000000000006], +[3.4000000000000017, 0.9999999999999999, 1.9000000000000006], +[0.5, 1.0999999999999999, 1.9000000000000006], +[0.6, 1.0999999999999999, 1.9000000000000006], +[3.3000000000000016, 1.0999999999999999, 1.9000000000000006], +[3.4000000000000017, 1.0999999999999999, 1.9000000000000006], +[0.5, 1.2, 1.9000000000000006], +[0.6, 1.2, 1.9000000000000006], +[3.3000000000000016, 1.2, 1.9000000000000006], +[0.6, 1.3, 1.9000000000000006], +[0.7, 1.3, 1.9000000000000006], +[3.2000000000000015, 1.3, 1.9000000000000006], +[3.3000000000000016, 1.3, 1.9000000000000006], +[0.6, 1.4000000000000001, 1.9000000000000006], +[0.7, 1.4000000000000001, 1.9000000000000006], +[3.2000000000000015, 1.4000000000000001, 1.9000000000000006], +[3.3000000000000016, 1.4000000000000001, 1.9000000000000006], +[0.7, 1.5000000000000002, 1.9000000000000006], +[0.7999999999999999, 1.5000000000000002, 1.9000000000000006], +[3.1000000000000014, 1.5000000000000002, 1.9000000000000006], +[3.2000000000000015, 1.5000000000000002, 1.9000000000000006], +[0.7999999999999999, 1.6000000000000003, 1.9000000000000006], +[3.1000000000000014, 1.6000000000000003, 1.9000000000000006], +[0.7999999999999999, 1.7000000000000004, 1.9000000000000006], +[0.8999999999999999, 1.7000000000000004, 1.9000000000000006], +[3.0000000000000013, 1.7000000000000004, 1.9000000000000006], +[3.1000000000000014, 1.7000000000000004, 1.9000000000000006], +[0.8999999999999999, 1.8000000000000005, 1.9000000000000006], +[3.0000000000000013, 1.8000000000000005, 1.9000000000000006], +[3.1000000000000014, 1.8000000000000005, 1.9000000000000006], +[0.8999999999999999, 1.9000000000000006, 1.9000000000000006], +[0.9999999999999999, 1.9000000000000006, 1.9000000000000006], +[2.9000000000000012, 1.9000000000000006, 1.9000000000000006], +[3.0000000000000013, 1.9000000000000006, 1.9000000000000006], +[0.8999999999999999, 2.0000000000000004, 1.9000000000000006], +[0.9999999999999999, 2.0000000000000004, 1.9000000000000006], +[2.9000000000000012, 2.0000000000000004, 1.9000000000000006], +[3.0000000000000013, 2.0000000000000004, 1.9000000000000006], +[0.9999999999999999, 2.1000000000000005, 1.9000000000000006], +[1.0999999999999999, 2.1000000000000005, 1.9000000000000006], +[2.9000000000000012, 2.1000000000000005, 1.9000000000000006], +[0.9999999999999999, 2.2000000000000006, 1.9000000000000006], +[1.0999999999999999, 2.2000000000000006, 1.9000000000000006], +[2.800000000000001, 2.2000000000000006, 1.9000000000000006], +[1.0999999999999999, 2.3000000000000007, 1.9000000000000006], +[1.2, 2.3000000000000007, 1.9000000000000006], +[2.700000000000001, 2.3000000000000007, 1.9000000000000006], +[2.800000000000001, 2.3000000000000007, 1.9000000000000006], +[1.0999999999999999, 2.400000000000001, 1.9000000000000006], +[1.2, 2.400000000000001, 1.9000000000000006], +[2.700000000000001, 2.400000000000001, 1.9000000000000006], +[1.2, 2.500000000000001, 1.9000000000000006], +[1.3, 2.500000000000001, 1.9000000000000006], +[2.600000000000001, 2.500000000000001, 1.9000000000000006], +[2.700000000000001, 2.500000000000001, 1.9000000000000006], +[1.2, 2.600000000000001, 1.9000000000000006], +[1.3, 2.600000000000001, 1.9000000000000006], +[2.600000000000001, 2.600000000000001, 1.9000000000000006], +[2.700000000000001, 2.600000000000001, 1.9000000000000006], +[1.3, 2.700000000000001, 1.9000000000000006], +[1.4000000000000001, 2.700000000000001, 1.9000000000000006], +[2.500000000000001, 2.700000000000001, 1.9000000000000006], +[2.600000000000001, 2.700000000000001, 1.9000000000000006], +[1.4000000000000001, 2.800000000000001, 1.9000000000000006], +[2.500000000000001, 2.800000000000001, 1.9000000000000006], +[1.4000000000000001, 2.9000000000000012, 1.9000000000000006], +[1.5000000000000002, 2.9000000000000012, 1.9000000000000006], +[2.400000000000001, 2.9000000000000012, 1.9000000000000006], +[2.500000000000001, 2.9000000000000012, 1.9000000000000006], +[1.4000000000000001, 3.0000000000000013, 1.9000000000000006], +[1.5000000000000002, 3.0000000000000013, 1.9000000000000006], +[2.400000000000001, 3.0000000000000013, 1.9000000000000006], +[2.500000000000001, 3.0000000000000013, 1.9000000000000006], +[1.5000000000000002, 3.1000000000000014, 1.9000000000000006], +[1.6000000000000003, 3.1000000000000014, 1.9000000000000006], +[2.3000000000000007, 3.1000000000000014, 1.9000000000000006], +[2.400000000000001, 3.1000000000000014, 1.9000000000000006], +[1.5000000000000002, 3.2000000000000015, 1.9000000000000006], +[1.6000000000000003, 3.2000000000000015, 1.9000000000000006], +[2.3000000000000007, 3.2000000000000015, 1.9000000000000006], +[1.6000000000000003, 3.3000000000000016, 1.9000000000000006], +[1.7000000000000004, 3.3000000000000016, 1.9000000000000006], +[2.2000000000000006, 3.3000000000000016, 1.9000000000000006], +[2.3000000000000007, 3.3000000000000016, 1.9000000000000006], +[1.6000000000000003, 3.4000000000000017, 1.9000000000000006], +[1.7000000000000004, 3.4000000000000017, 1.9000000000000006], +[2.2000000000000006, 3.4000000000000017, 1.9000000000000006], +[2.3000000000000007, 3.4000000000000017, 1.9000000000000006], +[1.7000000000000004, 3.5000000000000018, 1.9000000000000006], +[1.8000000000000005, 3.5000000000000018, 1.9000000000000006], +[2.1000000000000005, 3.5000000000000018, 1.9000000000000006], +[2.2000000000000006, 3.5000000000000018, 1.9000000000000006], +[1.7000000000000004, 3.600000000000002, 1.9000000000000006], +[1.8000000000000005, 3.600000000000002, 1.9000000000000006], +[2.1000000000000005, 3.600000000000002, 1.9000000000000006], +[2.2000000000000006, 3.600000000000002, 1.9000000000000006], +[1.8000000000000005, 3.700000000000002, 1.9000000000000006], +[1.9000000000000006, 3.700000000000002, 1.9000000000000006], +[2.0000000000000004, 3.700000000000002, 1.9000000000000006], +[2.1000000000000005, 3.700000000000002, 1.9000000000000006], +[1.8000000000000005, 3.800000000000002, 1.9000000000000006], +[1.9000000000000006, 3.800000000000002, 1.9000000000000006], +[2.0000000000000004, 3.800000000000002, 1.9000000000000006], +[2.1000000000000005, 3.800000000000002, 1.9000000000000006], +[1.9000000000000006, 3.900000000000002, 1.9000000000000006], +[2.0000000000000004, 3.900000000000002, 1.9000000000000006], +[0, 0, 2.0000000000000004], +[0.1, 0, 2.0000000000000004], +[0.2, 0, 2.0000000000000004], +[0.30000000000000004, 0, 2.0000000000000004], +[0.4, 0, 2.0000000000000004], +[0.5, 0, 2.0000000000000004], +[0.6, 0, 2.0000000000000004], +[0.7, 0, 2.0000000000000004], +[0.7999999999999999, 0, 2.0000000000000004], +[0.8999999999999999, 0, 2.0000000000000004], +[0.9999999999999999, 0, 2.0000000000000004], +[1.0999999999999999, 0, 2.0000000000000004], +[1.2, 0, 2.0000000000000004], +[1.3, 0, 2.0000000000000004], +[1.4000000000000001, 0, 2.0000000000000004], +[1.5000000000000002, 0, 2.0000000000000004], +[1.6000000000000003, 0, 2.0000000000000004], +[1.7000000000000004, 0, 2.0000000000000004], +[1.8000000000000005, 0, 2.0000000000000004], +[1.9000000000000006, 0, 2.0000000000000004], +[2.0000000000000004, 0, 2.0000000000000004], +[2.1000000000000005, 0, 2.0000000000000004], +[2.2000000000000006, 0, 2.0000000000000004], +[2.3000000000000007, 0, 2.0000000000000004], +[2.400000000000001, 0, 2.0000000000000004], +[2.500000000000001, 0, 2.0000000000000004], +[2.600000000000001, 0, 2.0000000000000004], +[2.700000000000001, 0, 2.0000000000000004], +[2.800000000000001, 0, 2.0000000000000004], +[2.9000000000000012, 0, 2.0000000000000004], +[3.0000000000000013, 0, 2.0000000000000004], +[3.1000000000000014, 0, 2.0000000000000004], +[3.2000000000000015, 0, 2.0000000000000004], +[3.3000000000000016, 0, 2.0000000000000004], +[3.4000000000000017, 0, 2.0000000000000004], +[3.5000000000000018, 0, 2.0000000000000004], +[3.600000000000002, 0, 2.0000000000000004], +[3.700000000000002, 0, 2.0000000000000004], +[3.800000000000002, 0, 2.0000000000000004], +[3.900000000000002, 0, 2.0000000000000004], +[0, 0.1, 2.0000000000000004], +[0.1, 0.1, 2.0000000000000004], +[3.800000000000002, 0.1, 2.0000000000000004], +[3.900000000000002, 0.1, 2.0000000000000004], +[0, 0.2, 2.0000000000000004], +[0.1, 0.2, 2.0000000000000004], +[3.800000000000002, 0.2, 2.0000000000000004], +[0.1, 0.30000000000000004, 2.0000000000000004], +[0.2, 0.30000000000000004, 2.0000000000000004], +[3.700000000000002, 0.30000000000000004, 2.0000000000000004], +[3.800000000000002, 0.30000000000000004, 2.0000000000000004], +[0.1, 0.4, 2.0000000000000004], +[0.2, 0.4, 2.0000000000000004], +[3.700000000000002, 0.4, 2.0000000000000004], +[0.2, 0.5, 2.0000000000000004], +[0.30000000000000004, 0.5, 2.0000000000000004], +[3.600000000000002, 0.5, 2.0000000000000004], +[3.700000000000002, 0.5, 2.0000000000000004], +[0.2, 0.6, 2.0000000000000004], +[0.30000000000000004, 0.6, 2.0000000000000004], +[3.600000000000002, 0.6, 2.0000000000000004], +[0.30000000000000004, 0.7, 2.0000000000000004], +[0.4, 0.7, 2.0000000000000004], +[3.5000000000000018, 0.7, 2.0000000000000004], +[3.600000000000002, 0.7, 2.0000000000000004], +[0.30000000000000004, 0.7999999999999999, 2.0000000000000004], +[0.4, 0.7999999999999999, 2.0000000000000004], +[3.5000000000000018, 0.7999999999999999, 2.0000000000000004], +[0.4, 0.8999999999999999, 2.0000000000000004], +[0.5, 0.8999999999999999, 2.0000000000000004], +[3.4000000000000017, 0.8999999999999999, 2.0000000000000004], +[3.5000000000000018, 0.8999999999999999, 2.0000000000000004], +[0.4, 0.9999999999999999, 2.0000000000000004], +[0.5, 0.9999999999999999, 2.0000000000000004], +[3.4000000000000017, 0.9999999999999999, 2.0000000000000004], +[0.5, 1.0999999999999999, 2.0000000000000004], +[0.6, 1.0999999999999999, 2.0000000000000004], +[3.3000000000000016, 1.0999999999999999, 2.0000000000000004], +[3.4000000000000017, 1.0999999999999999, 2.0000000000000004], +[0.5, 1.2, 2.0000000000000004], +[0.6, 1.2, 2.0000000000000004], +[3.3000000000000016, 1.2, 2.0000000000000004], +[0.6, 1.3, 2.0000000000000004], +[0.7, 1.3, 2.0000000000000004], +[3.2000000000000015, 1.3, 2.0000000000000004], +[3.3000000000000016, 1.3, 2.0000000000000004], +[0.6, 1.4000000000000001, 2.0000000000000004], +[0.7, 1.4000000000000001, 2.0000000000000004], +[3.2000000000000015, 1.4000000000000001, 2.0000000000000004], +[3.3000000000000016, 1.4000000000000001, 2.0000000000000004], +[0.7, 1.5000000000000002, 2.0000000000000004], +[0.7999999999999999, 1.5000000000000002, 2.0000000000000004], +[3.1000000000000014, 1.5000000000000002, 2.0000000000000004], +[3.2000000000000015, 1.5000000000000002, 2.0000000000000004], +[0.7999999999999999, 1.6000000000000003, 2.0000000000000004], +[3.1000000000000014, 1.6000000000000003, 2.0000000000000004], +[0.7999999999999999, 1.7000000000000004, 2.0000000000000004], +[0.8999999999999999, 1.7000000000000004, 2.0000000000000004], +[3.0000000000000013, 1.7000000000000004, 2.0000000000000004], +[3.1000000000000014, 1.7000000000000004, 2.0000000000000004], +[0.8999999999999999, 1.8000000000000005, 2.0000000000000004], +[3.0000000000000013, 1.8000000000000005, 2.0000000000000004], +[3.1000000000000014, 1.8000000000000005, 2.0000000000000004], +[0.8999999999999999, 1.9000000000000006, 2.0000000000000004], +[0.9999999999999999, 1.9000000000000006, 2.0000000000000004], +[2.9000000000000012, 1.9000000000000006, 2.0000000000000004], +[3.0000000000000013, 1.9000000000000006, 2.0000000000000004], +[0.8999999999999999, 2.0000000000000004, 2.0000000000000004], +[0.9999999999999999, 2.0000000000000004, 2.0000000000000004], +[2.9000000000000012, 2.0000000000000004, 2.0000000000000004], +[3.0000000000000013, 2.0000000000000004, 2.0000000000000004], +[0.9999999999999999, 2.1000000000000005, 2.0000000000000004], +[1.0999999999999999, 2.1000000000000005, 2.0000000000000004], +[2.9000000000000012, 2.1000000000000005, 2.0000000000000004], +[0.9999999999999999, 2.2000000000000006, 2.0000000000000004], +[1.0999999999999999, 2.2000000000000006, 2.0000000000000004], +[2.800000000000001, 2.2000000000000006, 2.0000000000000004], +[1.0999999999999999, 2.3000000000000007, 2.0000000000000004], +[1.2, 2.3000000000000007, 2.0000000000000004], +[2.700000000000001, 2.3000000000000007, 2.0000000000000004], +[2.800000000000001, 2.3000000000000007, 2.0000000000000004], +[1.0999999999999999, 2.400000000000001, 2.0000000000000004], +[1.2, 2.400000000000001, 2.0000000000000004], +[2.700000000000001, 2.400000000000001, 2.0000000000000004], +[1.2, 2.500000000000001, 2.0000000000000004], +[1.3, 2.500000000000001, 2.0000000000000004], +[2.600000000000001, 2.500000000000001, 2.0000000000000004], +[2.700000000000001, 2.500000000000001, 2.0000000000000004], +[1.2, 2.600000000000001, 2.0000000000000004], +[1.3, 2.600000000000001, 2.0000000000000004], +[2.600000000000001, 2.600000000000001, 2.0000000000000004], +[2.700000000000001, 2.600000000000001, 2.0000000000000004], +[1.3, 2.700000000000001, 2.0000000000000004], +[1.4000000000000001, 2.700000000000001, 2.0000000000000004], +[2.500000000000001, 2.700000000000001, 2.0000000000000004], +[2.600000000000001, 2.700000000000001, 2.0000000000000004], +[1.4000000000000001, 2.800000000000001, 2.0000000000000004], +[2.500000000000001, 2.800000000000001, 2.0000000000000004], +[1.4000000000000001, 2.9000000000000012, 2.0000000000000004], +[1.5000000000000002, 2.9000000000000012, 2.0000000000000004], +[2.400000000000001, 2.9000000000000012, 2.0000000000000004], +[2.500000000000001, 2.9000000000000012, 2.0000000000000004], +[1.4000000000000001, 3.0000000000000013, 2.0000000000000004], +[1.5000000000000002, 3.0000000000000013, 2.0000000000000004], +[2.400000000000001, 3.0000000000000013, 2.0000000000000004], +[2.500000000000001, 3.0000000000000013, 2.0000000000000004], +[1.5000000000000002, 3.1000000000000014, 2.0000000000000004], +[1.6000000000000003, 3.1000000000000014, 2.0000000000000004], +[2.3000000000000007, 3.1000000000000014, 2.0000000000000004], +[2.400000000000001, 3.1000000000000014, 2.0000000000000004], +[1.5000000000000002, 3.2000000000000015, 2.0000000000000004], +[1.6000000000000003, 3.2000000000000015, 2.0000000000000004], +[2.3000000000000007, 3.2000000000000015, 2.0000000000000004], +[1.6000000000000003, 3.3000000000000016, 2.0000000000000004], +[1.7000000000000004, 3.3000000000000016, 2.0000000000000004], +[2.2000000000000006, 3.3000000000000016, 2.0000000000000004], +[2.3000000000000007, 3.3000000000000016, 2.0000000000000004], +[1.6000000000000003, 3.4000000000000017, 2.0000000000000004], +[1.7000000000000004, 3.4000000000000017, 2.0000000000000004], +[2.2000000000000006, 3.4000000000000017, 2.0000000000000004], +[2.3000000000000007, 3.4000000000000017, 2.0000000000000004], +[1.7000000000000004, 3.5000000000000018, 2.0000000000000004], +[1.8000000000000005, 3.5000000000000018, 2.0000000000000004], +[2.1000000000000005, 3.5000000000000018, 2.0000000000000004], +[2.2000000000000006, 3.5000000000000018, 2.0000000000000004], +[1.7000000000000004, 3.600000000000002, 2.0000000000000004], +[1.8000000000000005, 3.600000000000002, 2.0000000000000004], +[2.1000000000000005, 3.600000000000002, 2.0000000000000004], +[2.2000000000000006, 3.600000000000002, 2.0000000000000004], +[1.8000000000000005, 3.700000000000002, 2.0000000000000004], +[1.9000000000000006, 3.700000000000002, 2.0000000000000004], +[2.0000000000000004, 3.700000000000002, 2.0000000000000004], +[2.1000000000000005, 3.700000000000002, 2.0000000000000004], +[1.8000000000000005, 3.800000000000002, 2.0000000000000004], +[1.9000000000000006, 3.800000000000002, 2.0000000000000004], +[2.0000000000000004, 3.800000000000002, 2.0000000000000004], +[2.1000000000000005, 3.800000000000002, 2.0000000000000004], +[1.9000000000000006, 3.900000000000002, 2.0000000000000004], +[2.0000000000000004, 3.900000000000002, 2.0000000000000004], +[0, 0, 2.1000000000000005], +[0.1, 0, 2.1000000000000005], +[0.2, 0, 2.1000000000000005], +[0.30000000000000004, 0, 2.1000000000000005], +[0.4, 0, 2.1000000000000005], +[0.5, 0, 2.1000000000000005], +[0.6, 0, 2.1000000000000005], +[0.7, 0, 2.1000000000000005], +[0.7999999999999999, 0, 2.1000000000000005], +[0.8999999999999999, 0, 2.1000000000000005], +[0.9999999999999999, 0, 2.1000000000000005], +[1.0999999999999999, 0, 2.1000000000000005], +[1.2, 0, 2.1000000000000005], +[1.3, 0, 2.1000000000000005], +[1.4000000000000001, 0, 2.1000000000000005], +[1.5000000000000002, 0, 2.1000000000000005], +[1.6000000000000003, 0, 2.1000000000000005], +[1.7000000000000004, 0, 2.1000000000000005], +[1.8000000000000005, 0, 2.1000000000000005], +[1.9000000000000006, 0, 2.1000000000000005], +[2.0000000000000004, 0, 2.1000000000000005], +[2.1000000000000005, 0, 2.1000000000000005], +[2.2000000000000006, 0, 2.1000000000000005], +[2.3000000000000007, 0, 2.1000000000000005], +[2.400000000000001, 0, 2.1000000000000005], +[2.500000000000001, 0, 2.1000000000000005], +[2.600000000000001, 0, 2.1000000000000005], +[2.700000000000001, 0, 2.1000000000000005], +[2.800000000000001, 0, 2.1000000000000005], +[2.9000000000000012, 0, 2.1000000000000005], +[3.0000000000000013, 0, 2.1000000000000005], +[3.1000000000000014, 0, 2.1000000000000005], +[3.2000000000000015, 0, 2.1000000000000005], +[3.3000000000000016, 0, 2.1000000000000005], +[3.4000000000000017, 0, 2.1000000000000005], +[3.5000000000000018, 0, 2.1000000000000005], +[3.600000000000002, 0, 2.1000000000000005], +[3.700000000000002, 0, 2.1000000000000005], +[3.800000000000002, 0, 2.1000000000000005], +[3.900000000000002, 0, 2.1000000000000005], +[0, 0.1, 2.1000000000000005], +[0.1, 0.1, 2.1000000000000005], +[3.800000000000002, 0.1, 2.1000000000000005], +[3.900000000000002, 0.1, 2.1000000000000005], +[0, 0.2, 2.1000000000000005], +[0.1, 0.2, 2.1000000000000005], +[3.800000000000002, 0.2, 2.1000000000000005], +[0.1, 0.30000000000000004, 2.1000000000000005], +[0.2, 0.30000000000000004, 2.1000000000000005], +[3.700000000000002, 0.30000000000000004, 2.1000000000000005], +[3.800000000000002, 0.30000000000000004, 2.1000000000000005], +[0.1, 0.4, 2.1000000000000005], +[0.2, 0.4, 2.1000000000000005], +[3.700000000000002, 0.4, 2.1000000000000005], +[0.2, 0.5, 2.1000000000000005], +[0.30000000000000004, 0.5, 2.1000000000000005], +[3.600000000000002, 0.5, 2.1000000000000005], +[3.700000000000002, 0.5, 2.1000000000000005], +[0.2, 0.6, 2.1000000000000005], +[0.30000000000000004, 0.6, 2.1000000000000005], +[3.600000000000002, 0.6, 2.1000000000000005], +[0.30000000000000004, 0.7, 2.1000000000000005], +[0.4, 0.7, 2.1000000000000005], +[3.5000000000000018, 0.7, 2.1000000000000005], +[3.600000000000002, 0.7, 2.1000000000000005], +[0.30000000000000004, 0.7999999999999999, 2.1000000000000005], +[0.4, 0.7999999999999999, 2.1000000000000005], +[3.5000000000000018, 0.7999999999999999, 2.1000000000000005], +[0.4, 0.8999999999999999, 2.1000000000000005], +[0.5, 0.8999999999999999, 2.1000000000000005], +[3.4000000000000017, 0.8999999999999999, 2.1000000000000005], +[3.5000000000000018, 0.8999999999999999, 2.1000000000000005], +[0.4, 0.9999999999999999, 2.1000000000000005], +[0.5, 0.9999999999999999, 2.1000000000000005], +[3.4000000000000017, 0.9999999999999999, 2.1000000000000005], +[0.5, 1.0999999999999999, 2.1000000000000005], +[0.6, 1.0999999999999999, 2.1000000000000005], +[3.3000000000000016, 1.0999999999999999, 2.1000000000000005], +[3.4000000000000017, 1.0999999999999999, 2.1000000000000005], +[0.5, 1.2, 2.1000000000000005], +[0.6, 1.2, 2.1000000000000005], +[3.3000000000000016, 1.2, 2.1000000000000005], +[0.6, 1.3, 2.1000000000000005], +[0.7, 1.3, 2.1000000000000005], +[3.2000000000000015, 1.3, 2.1000000000000005], +[3.3000000000000016, 1.3, 2.1000000000000005], +[0.6, 1.4000000000000001, 2.1000000000000005], +[0.7, 1.4000000000000001, 2.1000000000000005], +[3.2000000000000015, 1.4000000000000001, 2.1000000000000005], +[3.3000000000000016, 1.4000000000000001, 2.1000000000000005], +[0.7, 1.5000000000000002, 2.1000000000000005], +[0.7999999999999999, 1.5000000000000002, 2.1000000000000005], +[3.1000000000000014, 1.5000000000000002, 2.1000000000000005], +[3.2000000000000015, 1.5000000000000002, 2.1000000000000005], +[0.7999999999999999, 1.6000000000000003, 2.1000000000000005], +[3.1000000000000014, 1.6000000000000003, 2.1000000000000005], +[0.7999999999999999, 1.7000000000000004, 2.1000000000000005], +[0.8999999999999999, 1.7000000000000004, 2.1000000000000005], +[3.0000000000000013, 1.7000000000000004, 2.1000000000000005], +[3.1000000000000014, 1.7000000000000004, 2.1000000000000005], +[0.8999999999999999, 1.8000000000000005, 2.1000000000000005], +[3.0000000000000013, 1.8000000000000005, 2.1000000000000005], +[3.1000000000000014, 1.8000000000000005, 2.1000000000000005], +[0.8999999999999999, 1.9000000000000006, 2.1000000000000005], +[0.9999999999999999, 1.9000000000000006, 2.1000000000000005], +[2.9000000000000012, 1.9000000000000006, 2.1000000000000005], +[3.0000000000000013, 1.9000000000000006, 2.1000000000000005], +[0.8999999999999999, 2.0000000000000004, 2.1000000000000005], +[0.9999999999999999, 2.0000000000000004, 2.1000000000000005], +[2.9000000000000012, 2.0000000000000004, 2.1000000000000005], +[3.0000000000000013, 2.0000000000000004, 2.1000000000000005], +[0.9999999999999999, 2.1000000000000005, 2.1000000000000005], +[1.0999999999999999, 2.1000000000000005, 2.1000000000000005], +[2.9000000000000012, 2.1000000000000005, 2.1000000000000005], +[0.9999999999999999, 2.2000000000000006, 2.1000000000000005], +[1.0999999999999999, 2.2000000000000006, 2.1000000000000005], +[2.800000000000001, 2.2000000000000006, 2.1000000000000005], +[1.0999999999999999, 2.3000000000000007, 2.1000000000000005], +[1.2, 2.3000000000000007, 2.1000000000000005], +[2.700000000000001, 2.3000000000000007, 2.1000000000000005], +[2.800000000000001, 2.3000000000000007, 2.1000000000000005], +[1.0999999999999999, 2.400000000000001, 2.1000000000000005], +[1.2, 2.400000000000001, 2.1000000000000005], +[2.700000000000001, 2.400000000000001, 2.1000000000000005], +[1.2, 2.500000000000001, 2.1000000000000005], +[1.3, 2.500000000000001, 2.1000000000000005], +[2.600000000000001, 2.500000000000001, 2.1000000000000005], +[2.700000000000001, 2.500000000000001, 2.1000000000000005], +[1.2, 2.600000000000001, 2.1000000000000005], +[1.3, 2.600000000000001, 2.1000000000000005], +[2.600000000000001, 2.600000000000001, 2.1000000000000005], +[2.700000000000001, 2.600000000000001, 2.1000000000000005], +[1.3, 2.700000000000001, 2.1000000000000005], +[1.4000000000000001, 2.700000000000001, 2.1000000000000005], +[2.500000000000001, 2.700000000000001, 2.1000000000000005], +[2.600000000000001, 2.700000000000001, 2.1000000000000005], +[1.4000000000000001, 2.800000000000001, 2.1000000000000005], +[2.500000000000001, 2.800000000000001, 2.1000000000000005], +[1.4000000000000001, 2.9000000000000012, 2.1000000000000005], +[1.5000000000000002, 2.9000000000000012, 2.1000000000000005], +[2.400000000000001, 2.9000000000000012, 2.1000000000000005], +[2.500000000000001, 2.9000000000000012, 2.1000000000000005], +[1.4000000000000001, 3.0000000000000013, 2.1000000000000005], +[1.5000000000000002, 3.0000000000000013, 2.1000000000000005], +[2.400000000000001, 3.0000000000000013, 2.1000000000000005], +[2.500000000000001, 3.0000000000000013, 2.1000000000000005], +[1.5000000000000002, 3.1000000000000014, 2.1000000000000005], +[1.6000000000000003, 3.1000000000000014, 2.1000000000000005], +[2.3000000000000007, 3.1000000000000014, 2.1000000000000005], +[2.400000000000001, 3.1000000000000014, 2.1000000000000005], +[1.5000000000000002, 3.2000000000000015, 2.1000000000000005], +[1.6000000000000003, 3.2000000000000015, 2.1000000000000005], +[2.3000000000000007, 3.2000000000000015, 2.1000000000000005], +[1.6000000000000003, 3.3000000000000016, 2.1000000000000005], +[1.7000000000000004, 3.3000000000000016, 2.1000000000000005], +[2.2000000000000006, 3.3000000000000016, 2.1000000000000005], +[2.3000000000000007, 3.3000000000000016, 2.1000000000000005], +[1.6000000000000003, 3.4000000000000017, 2.1000000000000005], +[1.7000000000000004, 3.4000000000000017, 2.1000000000000005], +[2.2000000000000006, 3.4000000000000017, 2.1000000000000005], +[2.3000000000000007, 3.4000000000000017, 2.1000000000000005], +[1.7000000000000004, 3.5000000000000018, 2.1000000000000005], +[1.8000000000000005, 3.5000000000000018, 2.1000000000000005], +[1.9000000000000006, 3.5000000000000018, 2.1000000000000005], +[2.0000000000000004, 3.5000000000000018, 2.1000000000000005], +[2.1000000000000005, 3.5000000000000018, 2.1000000000000005], +[2.2000000000000006, 3.5000000000000018, 2.1000000000000005], +[1.7000000000000004, 3.600000000000002, 2.1000000000000005], +[1.8000000000000005, 3.600000000000002, 2.1000000000000005], +[1.9000000000000006, 3.600000000000002, 2.1000000000000005], +[2.0000000000000004, 3.600000000000002, 2.1000000000000005], +[2.1000000000000005, 3.600000000000002, 2.1000000000000005], +[2.2000000000000006, 3.600000000000002, 2.1000000000000005], +[1.8000000000000005, 3.700000000000002, 2.1000000000000005], +[1.9000000000000006, 3.700000000000002, 2.1000000000000005], +[2.0000000000000004, 3.700000000000002, 2.1000000000000005], +[2.1000000000000005, 3.700000000000002, 2.1000000000000005], +[1.8000000000000005, 3.800000000000002, 2.1000000000000005], +[1.9000000000000006, 3.800000000000002, 2.1000000000000005], +[2.0000000000000004, 3.800000000000002, 2.1000000000000005], +[2.1000000000000005, 3.800000000000002, 2.1000000000000005], +[0, 0, 2.2000000000000006], +[0.1, 0, 2.2000000000000006], +[0.2, 0, 2.2000000000000006], +[0.30000000000000004, 0, 2.2000000000000006], +[0.4, 0, 2.2000000000000006], +[0.5, 0, 2.2000000000000006], +[0.6, 0, 2.2000000000000006], +[0.7, 0, 2.2000000000000006], +[0.7999999999999999, 0, 2.2000000000000006], +[0.8999999999999999, 0, 2.2000000000000006], +[0.9999999999999999, 0, 2.2000000000000006], +[1.0999999999999999, 0, 2.2000000000000006], +[1.2, 0, 2.2000000000000006], +[1.3, 0, 2.2000000000000006], +[1.4000000000000001, 0, 2.2000000000000006], +[1.5000000000000002, 0, 2.2000000000000006], +[1.6000000000000003, 0, 2.2000000000000006], +[1.7000000000000004, 0, 2.2000000000000006], +[1.8000000000000005, 0, 2.2000000000000006], +[1.9000000000000006, 0, 2.2000000000000006], +[2.0000000000000004, 0, 2.2000000000000006], +[2.1000000000000005, 0, 2.2000000000000006], +[2.2000000000000006, 0, 2.2000000000000006], +[2.3000000000000007, 0, 2.2000000000000006], +[2.400000000000001, 0, 2.2000000000000006], +[2.500000000000001, 0, 2.2000000000000006], +[2.600000000000001, 0, 2.2000000000000006], +[2.700000000000001, 0, 2.2000000000000006], +[2.800000000000001, 0, 2.2000000000000006], +[2.9000000000000012, 0, 2.2000000000000006], +[3.0000000000000013, 0, 2.2000000000000006], +[3.1000000000000014, 0, 2.2000000000000006], +[3.2000000000000015, 0, 2.2000000000000006], +[3.3000000000000016, 0, 2.2000000000000006], +[3.4000000000000017, 0, 2.2000000000000006], +[3.5000000000000018, 0, 2.2000000000000006], +[3.600000000000002, 0, 2.2000000000000006], +[3.700000000000002, 0, 2.2000000000000006], +[3.800000000000002, 0, 2.2000000000000006], +[3.900000000000002, 0, 2.2000000000000006], +[0, 0.1, 2.2000000000000006], +[0.1, 0.1, 2.2000000000000006], +[3.800000000000002, 0.1, 2.2000000000000006], +[3.900000000000002, 0.1, 2.2000000000000006], +[0, 0.2, 2.2000000000000006], +[0.1, 0.2, 2.2000000000000006], +[3.800000000000002, 0.2, 2.2000000000000006], +[0.1, 0.30000000000000004, 2.2000000000000006], +[0.2, 0.30000000000000004, 2.2000000000000006], +[3.700000000000002, 0.30000000000000004, 2.2000000000000006], +[3.800000000000002, 0.30000000000000004, 2.2000000000000006], +[0.1, 0.4, 2.2000000000000006], +[0.2, 0.4, 2.2000000000000006], +[3.700000000000002, 0.4, 2.2000000000000006], +[0.2, 0.5, 2.2000000000000006], +[0.30000000000000004, 0.5, 2.2000000000000006], +[3.600000000000002, 0.5, 2.2000000000000006], +[3.700000000000002, 0.5, 2.2000000000000006], +[0.2, 0.6, 2.2000000000000006], +[0.30000000000000004, 0.6, 2.2000000000000006], +[3.600000000000002, 0.6, 2.2000000000000006], +[0.30000000000000004, 0.7, 2.2000000000000006], +[0.4, 0.7, 2.2000000000000006], +[3.5000000000000018, 0.7, 2.2000000000000006], +[3.600000000000002, 0.7, 2.2000000000000006], +[0.30000000000000004, 0.7999999999999999, 2.2000000000000006], +[0.4, 0.7999999999999999, 2.2000000000000006], +[3.5000000000000018, 0.7999999999999999, 2.2000000000000006], +[0.4, 0.8999999999999999, 2.2000000000000006], +[0.5, 0.8999999999999999, 2.2000000000000006], +[3.4000000000000017, 0.8999999999999999, 2.2000000000000006], +[3.5000000000000018, 0.8999999999999999, 2.2000000000000006], +[0.4, 0.9999999999999999, 2.2000000000000006], +[0.5, 0.9999999999999999, 2.2000000000000006], +[3.4000000000000017, 0.9999999999999999, 2.2000000000000006], +[0.5, 1.0999999999999999, 2.2000000000000006], +[0.6, 1.0999999999999999, 2.2000000000000006], +[3.3000000000000016, 1.0999999999999999, 2.2000000000000006], +[3.4000000000000017, 1.0999999999999999, 2.2000000000000006], +[0.5, 1.2, 2.2000000000000006], +[0.6, 1.2, 2.2000000000000006], +[3.3000000000000016, 1.2, 2.2000000000000006], +[0.6, 1.3, 2.2000000000000006], +[0.7, 1.3, 2.2000000000000006], +[3.2000000000000015, 1.3, 2.2000000000000006], +[3.3000000000000016, 1.3, 2.2000000000000006], +[0.6, 1.4000000000000001, 2.2000000000000006], +[0.7, 1.4000000000000001, 2.2000000000000006], +[3.2000000000000015, 1.4000000000000001, 2.2000000000000006], +[3.3000000000000016, 1.4000000000000001, 2.2000000000000006], +[0.7, 1.5000000000000002, 2.2000000000000006], +[0.7999999999999999, 1.5000000000000002, 2.2000000000000006], +[3.1000000000000014, 1.5000000000000002, 2.2000000000000006], +[3.2000000000000015, 1.5000000000000002, 2.2000000000000006], +[0.7999999999999999, 1.6000000000000003, 2.2000000000000006], +[3.1000000000000014, 1.6000000000000003, 2.2000000000000006], +[0.7999999999999999, 1.7000000000000004, 2.2000000000000006], +[0.8999999999999999, 1.7000000000000004, 2.2000000000000006], +[3.0000000000000013, 1.7000000000000004, 2.2000000000000006], +[3.1000000000000014, 1.7000000000000004, 2.2000000000000006], +[0.8999999999999999, 1.8000000000000005, 2.2000000000000006], +[3.0000000000000013, 1.8000000000000005, 2.2000000000000006], +[3.1000000000000014, 1.8000000000000005, 2.2000000000000006], +[0.8999999999999999, 1.9000000000000006, 2.2000000000000006], +[0.9999999999999999, 1.9000000000000006, 2.2000000000000006], +[2.9000000000000012, 1.9000000000000006, 2.2000000000000006], +[3.0000000000000013, 1.9000000000000006, 2.2000000000000006], +[0.8999999999999999, 2.0000000000000004, 2.2000000000000006], +[0.9999999999999999, 2.0000000000000004, 2.2000000000000006], +[2.9000000000000012, 2.0000000000000004, 2.2000000000000006], +[3.0000000000000013, 2.0000000000000004, 2.2000000000000006], +[0.9999999999999999, 2.1000000000000005, 2.2000000000000006], +[1.0999999999999999, 2.1000000000000005, 2.2000000000000006], +[2.9000000000000012, 2.1000000000000005, 2.2000000000000006], +[0.9999999999999999, 2.2000000000000006, 2.2000000000000006], +[1.0999999999999999, 2.2000000000000006, 2.2000000000000006], +[2.800000000000001, 2.2000000000000006, 2.2000000000000006], +[1.0999999999999999, 2.3000000000000007, 2.2000000000000006], +[1.2, 2.3000000000000007, 2.2000000000000006], +[2.700000000000001, 2.3000000000000007, 2.2000000000000006], +[2.800000000000001, 2.3000000000000007, 2.2000000000000006], +[1.0999999999999999, 2.400000000000001, 2.2000000000000006], +[1.2, 2.400000000000001, 2.2000000000000006], +[2.700000000000001, 2.400000000000001, 2.2000000000000006], +[1.2, 2.500000000000001, 2.2000000000000006], +[1.3, 2.500000000000001, 2.2000000000000006], +[2.600000000000001, 2.500000000000001, 2.2000000000000006], +[2.700000000000001, 2.500000000000001, 2.2000000000000006], +[1.2, 2.600000000000001, 2.2000000000000006], +[1.3, 2.600000000000001, 2.2000000000000006], +[2.600000000000001, 2.600000000000001, 2.2000000000000006], +[2.700000000000001, 2.600000000000001, 2.2000000000000006], +[1.3, 2.700000000000001, 2.2000000000000006], +[1.4000000000000001, 2.700000000000001, 2.2000000000000006], +[2.500000000000001, 2.700000000000001, 2.2000000000000006], +[2.600000000000001, 2.700000000000001, 2.2000000000000006], +[1.4000000000000001, 2.800000000000001, 2.2000000000000006], +[2.500000000000001, 2.800000000000001, 2.2000000000000006], +[1.4000000000000001, 2.9000000000000012, 2.2000000000000006], +[1.5000000000000002, 2.9000000000000012, 2.2000000000000006], +[2.400000000000001, 2.9000000000000012, 2.2000000000000006], +[2.500000000000001, 2.9000000000000012, 2.2000000000000006], +[1.4000000000000001, 3.0000000000000013, 2.2000000000000006], +[1.5000000000000002, 3.0000000000000013, 2.2000000000000006], +[2.400000000000001, 3.0000000000000013, 2.2000000000000006], +[2.500000000000001, 3.0000000000000013, 2.2000000000000006], +[1.5000000000000002, 3.1000000000000014, 2.2000000000000006], +[1.6000000000000003, 3.1000000000000014, 2.2000000000000006], +[2.3000000000000007, 3.1000000000000014, 2.2000000000000006], +[2.400000000000001, 3.1000000000000014, 2.2000000000000006], +[1.5000000000000002, 3.2000000000000015, 2.2000000000000006], +[1.6000000000000003, 3.2000000000000015, 2.2000000000000006], +[2.3000000000000007, 3.2000000000000015, 2.2000000000000006], +[1.6000000000000003, 3.3000000000000016, 2.2000000000000006], +[1.7000000000000004, 3.3000000000000016, 2.2000000000000006], +[1.8000000000000005, 3.3000000000000016, 2.2000000000000006], +[1.9000000000000006, 3.3000000000000016, 2.2000000000000006], +[2.0000000000000004, 3.3000000000000016, 2.2000000000000006], +[2.1000000000000005, 3.3000000000000016, 2.2000000000000006], +[2.2000000000000006, 3.3000000000000016, 2.2000000000000006], +[2.3000000000000007, 3.3000000000000016, 2.2000000000000006], +[1.6000000000000003, 3.4000000000000017, 2.2000000000000006], +[1.7000000000000004, 3.4000000000000017, 2.2000000000000006], +[1.8000000000000005, 3.4000000000000017, 2.2000000000000006], +[1.9000000000000006, 3.4000000000000017, 2.2000000000000006], +[2.0000000000000004, 3.4000000000000017, 2.2000000000000006], +[2.1000000000000005, 3.4000000000000017, 2.2000000000000006], +[2.2000000000000006, 3.4000000000000017, 2.2000000000000006], +[2.3000000000000007, 3.4000000000000017, 2.2000000000000006], +[1.7000000000000004, 3.5000000000000018, 2.2000000000000006], +[1.8000000000000005, 3.5000000000000018, 2.2000000000000006], +[1.9000000000000006, 3.5000000000000018, 2.2000000000000006], +[2.0000000000000004, 3.5000000000000018, 2.2000000000000006], +[2.1000000000000005, 3.5000000000000018, 2.2000000000000006], +[2.2000000000000006, 3.5000000000000018, 2.2000000000000006], +[1.7000000000000004, 3.600000000000002, 2.2000000000000006], +[1.8000000000000005, 3.600000000000002, 2.2000000000000006], +[1.9000000000000006, 3.600000000000002, 2.2000000000000006], +[2.0000000000000004, 3.600000000000002, 2.2000000000000006], +[2.1000000000000005, 3.600000000000002, 2.2000000000000006], +[2.2000000000000006, 3.600000000000002, 2.2000000000000006], +[0, 0, 2.3000000000000007], +[0.1, 0, 2.3000000000000007], +[0.2, 0, 2.3000000000000007], +[0.30000000000000004, 0, 2.3000000000000007], +[0.4, 0, 2.3000000000000007], +[0.5, 0, 2.3000000000000007], +[0.6, 0, 2.3000000000000007], +[0.7, 0, 2.3000000000000007], +[0.7999999999999999, 0, 2.3000000000000007], +[0.8999999999999999, 0, 2.3000000000000007], +[0.9999999999999999, 0, 2.3000000000000007], +[1.0999999999999999, 0, 2.3000000000000007], +[1.2, 0, 2.3000000000000007], +[1.3, 0, 2.3000000000000007], +[1.4000000000000001, 0, 2.3000000000000007], +[1.5000000000000002, 0, 2.3000000000000007], +[1.6000000000000003, 0, 2.3000000000000007], +[1.7000000000000004, 0, 2.3000000000000007], +[1.8000000000000005, 0, 2.3000000000000007], +[1.9000000000000006, 0, 2.3000000000000007], +[2.0000000000000004, 0, 2.3000000000000007], +[2.1000000000000005, 0, 2.3000000000000007], +[2.2000000000000006, 0, 2.3000000000000007], +[2.3000000000000007, 0, 2.3000000000000007], +[2.400000000000001, 0, 2.3000000000000007], +[2.500000000000001, 0, 2.3000000000000007], +[2.600000000000001, 0, 2.3000000000000007], +[2.700000000000001, 0, 2.3000000000000007], +[2.800000000000001, 0, 2.3000000000000007], +[2.9000000000000012, 0, 2.3000000000000007], +[3.0000000000000013, 0, 2.3000000000000007], +[3.1000000000000014, 0, 2.3000000000000007], +[3.2000000000000015, 0, 2.3000000000000007], +[3.3000000000000016, 0, 2.3000000000000007], +[3.4000000000000017, 0, 2.3000000000000007], +[3.5000000000000018, 0, 2.3000000000000007], +[3.600000000000002, 0, 2.3000000000000007], +[3.700000000000002, 0, 2.3000000000000007], +[3.800000000000002, 0, 2.3000000000000007], +[3.900000000000002, 0, 2.3000000000000007], +[0, 0.1, 2.3000000000000007], +[0.1, 0.1, 2.3000000000000007], +[3.800000000000002, 0.1, 2.3000000000000007], +[3.900000000000002, 0.1, 2.3000000000000007], +[0, 0.2, 2.3000000000000007], +[0.1, 0.2, 2.3000000000000007], +[3.800000000000002, 0.2, 2.3000000000000007], +[0.1, 0.30000000000000004, 2.3000000000000007], +[0.2, 0.30000000000000004, 2.3000000000000007], +[3.700000000000002, 0.30000000000000004, 2.3000000000000007], +[3.800000000000002, 0.30000000000000004, 2.3000000000000007], +[0.1, 0.4, 2.3000000000000007], +[0.2, 0.4, 2.3000000000000007], +[3.700000000000002, 0.4, 2.3000000000000007], +[0.2, 0.5, 2.3000000000000007], +[0.30000000000000004, 0.5, 2.3000000000000007], +[3.600000000000002, 0.5, 2.3000000000000007], +[3.700000000000002, 0.5, 2.3000000000000007], +[0.2, 0.6, 2.3000000000000007], +[0.30000000000000004, 0.6, 2.3000000000000007], +[3.600000000000002, 0.6, 2.3000000000000007], +[0.30000000000000004, 0.7, 2.3000000000000007], +[0.4, 0.7, 2.3000000000000007], +[3.5000000000000018, 0.7, 2.3000000000000007], +[3.600000000000002, 0.7, 2.3000000000000007], +[0.30000000000000004, 0.7999999999999999, 2.3000000000000007], +[0.4, 0.7999999999999999, 2.3000000000000007], +[3.5000000000000018, 0.7999999999999999, 2.3000000000000007], +[0.4, 0.8999999999999999, 2.3000000000000007], +[0.5, 0.8999999999999999, 2.3000000000000007], +[3.4000000000000017, 0.8999999999999999, 2.3000000000000007], +[3.5000000000000018, 0.8999999999999999, 2.3000000000000007], +[0.4, 0.9999999999999999, 2.3000000000000007], +[0.5, 0.9999999999999999, 2.3000000000000007], +[3.4000000000000017, 0.9999999999999999, 2.3000000000000007], +[0.5, 1.0999999999999999, 2.3000000000000007], +[0.6, 1.0999999999999999, 2.3000000000000007], +[3.3000000000000016, 1.0999999999999999, 2.3000000000000007], +[3.4000000000000017, 1.0999999999999999, 2.3000000000000007], +[0.5, 1.2, 2.3000000000000007], +[0.6, 1.2, 2.3000000000000007], +[3.3000000000000016, 1.2, 2.3000000000000007], +[0.6, 1.3, 2.3000000000000007], +[0.7, 1.3, 2.3000000000000007], +[3.2000000000000015, 1.3, 2.3000000000000007], +[3.3000000000000016, 1.3, 2.3000000000000007], +[0.6, 1.4000000000000001, 2.3000000000000007], +[0.7, 1.4000000000000001, 2.3000000000000007], +[3.2000000000000015, 1.4000000000000001, 2.3000000000000007], +[3.3000000000000016, 1.4000000000000001, 2.3000000000000007], +[0.7, 1.5000000000000002, 2.3000000000000007], +[0.7999999999999999, 1.5000000000000002, 2.3000000000000007], +[3.1000000000000014, 1.5000000000000002, 2.3000000000000007], +[3.2000000000000015, 1.5000000000000002, 2.3000000000000007], +[0.7999999999999999, 1.6000000000000003, 2.3000000000000007], +[3.1000000000000014, 1.6000000000000003, 2.3000000000000007], +[0.7999999999999999, 1.7000000000000004, 2.3000000000000007], +[0.8999999999999999, 1.7000000000000004, 2.3000000000000007], +[3.0000000000000013, 1.7000000000000004, 2.3000000000000007], +[3.1000000000000014, 1.7000000000000004, 2.3000000000000007], +[0.8999999999999999, 1.8000000000000005, 2.3000000000000007], +[3.0000000000000013, 1.8000000000000005, 2.3000000000000007], +[3.1000000000000014, 1.8000000000000005, 2.3000000000000007], +[0.8999999999999999, 1.9000000000000006, 2.3000000000000007], +[0.9999999999999999, 1.9000000000000006, 2.3000000000000007], +[2.9000000000000012, 1.9000000000000006, 2.3000000000000007], +[3.0000000000000013, 1.9000000000000006, 2.3000000000000007], +[0.8999999999999999, 2.0000000000000004, 2.3000000000000007], +[0.9999999999999999, 2.0000000000000004, 2.3000000000000007], +[2.9000000000000012, 2.0000000000000004, 2.3000000000000007], +[3.0000000000000013, 2.0000000000000004, 2.3000000000000007], +[0.9999999999999999, 2.1000000000000005, 2.3000000000000007], +[1.0999999999999999, 2.1000000000000005, 2.3000000000000007], +[2.9000000000000012, 2.1000000000000005, 2.3000000000000007], +[0.9999999999999999, 2.2000000000000006, 2.3000000000000007], +[1.0999999999999999, 2.2000000000000006, 2.3000000000000007], +[2.800000000000001, 2.2000000000000006, 2.3000000000000007], +[1.0999999999999999, 2.3000000000000007, 2.3000000000000007], +[1.2, 2.3000000000000007, 2.3000000000000007], +[2.700000000000001, 2.3000000000000007, 2.3000000000000007], +[2.800000000000001, 2.3000000000000007, 2.3000000000000007], +[1.0999999999999999, 2.400000000000001, 2.3000000000000007], +[1.2, 2.400000000000001, 2.3000000000000007], +[2.700000000000001, 2.400000000000001, 2.3000000000000007], +[1.2, 2.500000000000001, 2.3000000000000007], +[1.3, 2.500000000000001, 2.3000000000000007], +[2.600000000000001, 2.500000000000001, 2.3000000000000007], +[2.700000000000001, 2.500000000000001, 2.3000000000000007], +[1.2, 2.600000000000001, 2.3000000000000007], +[1.3, 2.600000000000001, 2.3000000000000007], +[2.600000000000001, 2.600000000000001, 2.3000000000000007], +[2.700000000000001, 2.600000000000001, 2.3000000000000007], +[1.3, 2.700000000000001, 2.3000000000000007], +[1.4000000000000001, 2.700000000000001, 2.3000000000000007], +[2.500000000000001, 2.700000000000001, 2.3000000000000007], +[2.600000000000001, 2.700000000000001, 2.3000000000000007], +[1.4000000000000001, 2.800000000000001, 2.3000000000000007], +[2.500000000000001, 2.800000000000001, 2.3000000000000007], +[1.4000000000000001, 2.9000000000000012, 2.3000000000000007], +[1.5000000000000002, 2.9000000000000012, 2.3000000000000007], +[2.400000000000001, 2.9000000000000012, 2.3000000000000007], +[2.500000000000001, 2.9000000000000012, 2.3000000000000007], +[1.4000000000000001, 3.0000000000000013, 2.3000000000000007], +[1.5000000000000002, 3.0000000000000013, 2.3000000000000007], +[2.400000000000001, 3.0000000000000013, 2.3000000000000007], +[2.500000000000001, 3.0000000000000013, 2.3000000000000007], +[1.5000000000000002, 3.1000000000000014, 2.3000000000000007], +[1.6000000000000003, 3.1000000000000014, 2.3000000000000007], +[1.7000000000000004, 3.1000000000000014, 2.3000000000000007], +[1.8000000000000005, 3.1000000000000014, 2.3000000000000007], +[1.9000000000000006, 3.1000000000000014, 2.3000000000000007], +[2.0000000000000004, 3.1000000000000014, 2.3000000000000007], +[2.1000000000000005, 3.1000000000000014, 2.3000000000000007], +[2.2000000000000006, 3.1000000000000014, 2.3000000000000007], +[2.3000000000000007, 3.1000000000000014, 2.3000000000000007], +[2.400000000000001, 3.1000000000000014, 2.3000000000000007], +[1.5000000000000002, 3.2000000000000015, 2.3000000000000007], +[1.6000000000000003, 3.2000000000000015, 2.3000000000000007], +[1.7000000000000004, 3.2000000000000015, 2.3000000000000007], +[1.8000000000000005, 3.2000000000000015, 2.3000000000000007], +[1.9000000000000006, 3.2000000000000015, 2.3000000000000007], +[2.0000000000000004, 3.2000000000000015, 2.3000000000000007], +[2.1000000000000005, 3.2000000000000015, 2.3000000000000007], +[2.2000000000000006, 3.2000000000000015, 2.3000000000000007], +[2.3000000000000007, 3.2000000000000015, 2.3000000000000007], +[1.6000000000000003, 3.3000000000000016, 2.3000000000000007], +[1.7000000000000004, 3.3000000000000016, 2.3000000000000007], +[1.8000000000000005, 3.3000000000000016, 2.3000000000000007], +[1.9000000000000006, 3.3000000000000016, 2.3000000000000007], +[2.0000000000000004, 3.3000000000000016, 2.3000000000000007], +[2.1000000000000005, 3.3000000000000016, 2.3000000000000007], +[2.2000000000000006, 3.3000000000000016, 2.3000000000000007], +[2.3000000000000007, 3.3000000000000016, 2.3000000000000007], +[1.6000000000000003, 3.4000000000000017, 2.3000000000000007], +[1.7000000000000004, 3.4000000000000017, 2.3000000000000007], +[1.8000000000000005, 3.4000000000000017, 2.3000000000000007], +[1.9000000000000006, 3.4000000000000017, 2.3000000000000007], +[2.0000000000000004, 3.4000000000000017, 2.3000000000000007], +[2.1000000000000005, 3.4000000000000017, 2.3000000000000007], +[2.2000000000000006, 3.4000000000000017, 2.3000000000000007], +[2.3000000000000007, 3.4000000000000017, 2.3000000000000007], +[0, 0, 2.400000000000001], +[0.1, 0, 2.400000000000001], +[0.2, 0, 2.400000000000001], +[0.30000000000000004, 0, 2.400000000000001], +[0.4, 0, 2.400000000000001], +[0.5, 0, 2.400000000000001], +[0.6, 0, 2.400000000000001], +[0.7, 0, 2.400000000000001], +[0.7999999999999999, 0, 2.400000000000001], +[0.8999999999999999, 0, 2.400000000000001], +[0.9999999999999999, 0, 2.400000000000001], +[1.0999999999999999, 0, 2.400000000000001], +[1.2, 0, 2.400000000000001], +[1.3, 0, 2.400000000000001], +[1.4000000000000001, 0, 2.400000000000001], +[1.5000000000000002, 0, 2.400000000000001], +[1.6000000000000003, 0, 2.400000000000001], +[1.7000000000000004, 0, 2.400000000000001], +[1.8000000000000005, 0, 2.400000000000001], +[1.9000000000000006, 0, 2.400000000000001], +[2.0000000000000004, 0, 2.400000000000001], +[2.1000000000000005, 0, 2.400000000000001], +[2.2000000000000006, 0, 2.400000000000001], +[2.3000000000000007, 0, 2.400000000000001], +[2.400000000000001, 0, 2.400000000000001], +[2.500000000000001, 0, 2.400000000000001], +[2.600000000000001, 0, 2.400000000000001], +[2.700000000000001, 0, 2.400000000000001], +[2.800000000000001, 0, 2.400000000000001], +[2.9000000000000012, 0, 2.400000000000001], +[3.0000000000000013, 0, 2.400000000000001], +[3.1000000000000014, 0, 2.400000000000001], +[3.2000000000000015, 0, 2.400000000000001], +[3.3000000000000016, 0, 2.400000000000001], +[3.4000000000000017, 0, 2.400000000000001], +[3.5000000000000018, 0, 2.400000000000001], +[3.600000000000002, 0, 2.400000000000001], +[3.700000000000002, 0, 2.400000000000001], +[3.800000000000002, 0, 2.400000000000001], +[3.900000000000002, 0, 2.400000000000001], +[0, 0.1, 2.400000000000001], +[0.1, 0.1, 2.400000000000001], +[3.800000000000002, 0.1, 2.400000000000001], +[3.900000000000002, 0.1, 2.400000000000001], +[0, 0.2, 2.400000000000001], +[0.1, 0.2, 2.400000000000001], +[3.800000000000002, 0.2, 2.400000000000001], +[0.1, 0.30000000000000004, 2.400000000000001], +[0.2, 0.30000000000000004, 2.400000000000001], +[3.700000000000002, 0.30000000000000004, 2.400000000000001], +[3.800000000000002, 0.30000000000000004, 2.400000000000001], +[0.1, 0.4, 2.400000000000001], +[0.2, 0.4, 2.400000000000001], +[3.700000000000002, 0.4, 2.400000000000001], +[0.2, 0.5, 2.400000000000001], +[0.30000000000000004, 0.5, 2.400000000000001], +[3.600000000000002, 0.5, 2.400000000000001], +[3.700000000000002, 0.5, 2.400000000000001], +[0.2, 0.6, 2.400000000000001], +[0.30000000000000004, 0.6, 2.400000000000001], +[3.600000000000002, 0.6, 2.400000000000001], +[0.30000000000000004, 0.7, 2.400000000000001], +[0.4, 0.7, 2.400000000000001], +[3.5000000000000018, 0.7, 2.400000000000001], +[3.600000000000002, 0.7, 2.400000000000001], +[0.30000000000000004, 0.7999999999999999, 2.400000000000001], +[0.4, 0.7999999999999999, 2.400000000000001], +[3.5000000000000018, 0.7999999999999999, 2.400000000000001], +[0.4, 0.8999999999999999, 2.400000000000001], +[0.5, 0.8999999999999999, 2.400000000000001], +[3.4000000000000017, 0.8999999999999999, 2.400000000000001], +[3.5000000000000018, 0.8999999999999999, 2.400000000000001], +[0.4, 0.9999999999999999, 2.400000000000001], +[0.5, 0.9999999999999999, 2.400000000000001], +[3.4000000000000017, 0.9999999999999999, 2.400000000000001], +[0.5, 1.0999999999999999, 2.400000000000001], +[0.6, 1.0999999999999999, 2.400000000000001], +[3.3000000000000016, 1.0999999999999999, 2.400000000000001], +[3.4000000000000017, 1.0999999999999999, 2.400000000000001], +[0.5, 1.2, 2.400000000000001], +[0.6, 1.2, 2.400000000000001], +[3.3000000000000016, 1.2, 2.400000000000001], +[0.6, 1.3, 2.400000000000001], +[0.7, 1.3, 2.400000000000001], +[3.2000000000000015, 1.3, 2.400000000000001], +[3.3000000000000016, 1.3, 2.400000000000001], +[0.6, 1.4000000000000001, 2.400000000000001], +[0.7, 1.4000000000000001, 2.400000000000001], +[3.2000000000000015, 1.4000000000000001, 2.400000000000001], +[3.3000000000000016, 1.4000000000000001, 2.400000000000001], +[0.7, 1.5000000000000002, 2.400000000000001], +[0.7999999999999999, 1.5000000000000002, 2.400000000000001], +[3.1000000000000014, 1.5000000000000002, 2.400000000000001], +[3.2000000000000015, 1.5000000000000002, 2.400000000000001], +[0.7999999999999999, 1.6000000000000003, 2.400000000000001], +[3.1000000000000014, 1.6000000000000003, 2.400000000000001], +[0.7999999999999999, 1.7000000000000004, 2.400000000000001], +[0.8999999999999999, 1.7000000000000004, 2.400000000000001], +[3.0000000000000013, 1.7000000000000004, 2.400000000000001], +[3.1000000000000014, 1.7000000000000004, 2.400000000000001], +[0.8999999999999999, 1.8000000000000005, 2.400000000000001], +[3.0000000000000013, 1.8000000000000005, 2.400000000000001], +[3.1000000000000014, 1.8000000000000005, 2.400000000000001], +[0.8999999999999999, 1.9000000000000006, 2.400000000000001], +[0.9999999999999999, 1.9000000000000006, 2.400000000000001], +[2.9000000000000012, 1.9000000000000006, 2.400000000000001], +[3.0000000000000013, 1.9000000000000006, 2.400000000000001], +[0.8999999999999999, 2.0000000000000004, 2.400000000000001], +[0.9999999999999999, 2.0000000000000004, 2.400000000000001], +[2.9000000000000012, 2.0000000000000004, 2.400000000000001], +[3.0000000000000013, 2.0000000000000004, 2.400000000000001], +[0.9999999999999999, 2.1000000000000005, 2.400000000000001], +[1.0999999999999999, 2.1000000000000005, 2.400000000000001], +[2.9000000000000012, 2.1000000000000005, 2.400000000000001], +[0.9999999999999999, 2.2000000000000006, 2.400000000000001], +[1.0999999999999999, 2.2000000000000006, 2.400000000000001], +[2.800000000000001, 2.2000000000000006, 2.400000000000001], +[1.0999999999999999, 2.3000000000000007, 2.400000000000001], +[1.2, 2.3000000000000007, 2.400000000000001], +[2.700000000000001, 2.3000000000000007, 2.400000000000001], +[2.800000000000001, 2.3000000000000007, 2.400000000000001], +[1.0999999999999999, 2.400000000000001, 2.400000000000001], +[1.2, 2.400000000000001, 2.400000000000001], +[2.700000000000001, 2.400000000000001, 2.400000000000001], +[1.2, 2.500000000000001, 2.400000000000001], +[1.3, 2.500000000000001, 2.400000000000001], +[2.600000000000001, 2.500000000000001, 2.400000000000001], +[2.700000000000001, 2.500000000000001, 2.400000000000001], +[1.2, 2.600000000000001, 2.400000000000001], +[1.3, 2.600000000000001, 2.400000000000001], +[2.600000000000001, 2.600000000000001, 2.400000000000001], +[2.700000000000001, 2.600000000000001, 2.400000000000001], +[1.3, 2.700000000000001, 2.400000000000001], +[1.4000000000000001, 2.700000000000001, 2.400000000000001], +[2.500000000000001, 2.700000000000001, 2.400000000000001], +[2.600000000000001, 2.700000000000001, 2.400000000000001], +[1.4000000000000001, 2.800000000000001, 2.400000000000001], +[2.500000000000001, 2.800000000000001, 2.400000000000001], +[1.4000000000000001, 2.9000000000000012, 2.400000000000001], +[1.5000000000000002, 2.9000000000000012, 2.400000000000001], +[1.6000000000000003, 2.9000000000000012, 2.400000000000001], +[1.7000000000000004, 2.9000000000000012, 2.400000000000001], +[1.8000000000000005, 2.9000000000000012, 2.400000000000001], +[1.9000000000000006, 2.9000000000000012, 2.400000000000001], +[2.0000000000000004, 2.9000000000000012, 2.400000000000001], +[2.1000000000000005, 2.9000000000000012, 2.400000000000001], +[2.2000000000000006, 2.9000000000000012, 2.400000000000001], +[2.3000000000000007, 2.9000000000000012, 2.400000000000001], +[2.400000000000001, 2.9000000000000012, 2.400000000000001], +[2.500000000000001, 2.9000000000000012, 2.400000000000001], +[1.4000000000000001, 3.0000000000000013, 2.400000000000001], +[1.5000000000000002, 3.0000000000000013, 2.400000000000001], +[1.6000000000000003, 3.0000000000000013, 2.400000000000001], +[1.7000000000000004, 3.0000000000000013, 2.400000000000001], +[1.8000000000000005, 3.0000000000000013, 2.400000000000001], +[1.9000000000000006, 3.0000000000000013, 2.400000000000001], +[2.0000000000000004, 3.0000000000000013, 2.400000000000001], +[2.1000000000000005, 3.0000000000000013, 2.400000000000001], +[2.2000000000000006, 3.0000000000000013, 2.400000000000001], +[2.3000000000000007, 3.0000000000000013, 2.400000000000001], +[2.400000000000001, 3.0000000000000013, 2.400000000000001], +[2.500000000000001, 3.0000000000000013, 2.400000000000001], +[1.5000000000000002, 3.1000000000000014, 2.400000000000001], +[1.6000000000000003, 3.1000000000000014, 2.400000000000001], +[1.7000000000000004, 3.1000000000000014, 2.400000000000001], +[1.8000000000000005, 3.1000000000000014, 2.400000000000001], +[1.9000000000000006, 3.1000000000000014, 2.400000000000001], +[2.0000000000000004, 3.1000000000000014, 2.400000000000001], +[2.1000000000000005, 3.1000000000000014, 2.400000000000001], +[2.2000000000000006, 3.1000000000000014, 2.400000000000001], +[2.3000000000000007, 3.1000000000000014, 2.400000000000001], +[2.400000000000001, 3.1000000000000014, 2.400000000000001], +[0, 0, 2.500000000000001], +[0.1, 0, 2.500000000000001], +[0.2, 0, 2.500000000000001], +[0.30000000000000004, 0, 2.500000000000001], +[0.4, 0, 2.500000000000001], +[0.5, 0, 2.500000000000001], +[0.6, 0, 2.500000000000001], +[0.7, 0, 2.500000000000001], +[0.7999999999999999, 0, 2.500000000000001], +[0.8999999999999999, 0, 2.500000000000001], +[0.9999999999999999, 0, 2.500000000000001], +[1.0999999999999999, 0, 2.500000000000001], +[1.2, 0, 2.500000000000001], +[1.3, 0, 2.500000000000001], +[1.4000000000000001, 0, 2.500000000000001], +[1.5000000000000002, 0, 2.500000000000001], +[1.6000000000000003, 0, 2.500000000000001], +[1.7000000000000004, 0, 2.500000000000001], +[1.8000000000000005, 0, 2.500000000000001], +[1.9000000000000006, 0, 2.500000000000001], +[2.0000000000000004, 0, 2.500000000000001], +[2.1000000000000005, 0, 2.500000000000001], +[2.2000000000000006, 0, 2.500000000000001], +[2.3000000000000007, 0, 2.500000000000001], +[2.400000000000001, 0, 2.500000000000001], +[2.500000000000001, 0, 2.500000000000001], +[2.600000000000001, 0, 2.500000000000001], +[2.700000000000001, 0, 2.500000000000001], +[2.800000000000001, 0, 2.500000000000001], +[2.9000000000000012, 0, 2.500000000000001], +[3.0000000000000013, 0, 2.500000000000001], +[3.1000000000000014, 0, 2.500000000000001], +[3.2000000000000015, 0, 2.500000000000001], +[3.3000000000000016, 0, 2.500000000000001], +[3.4000000000000017, 0, 2.500000000000001], +[3.5000000000000018, 0, 2.500000000000001], +[3.600000000000002, 0, 2.500000000000001], +[3.700000000000002, 0, 2.500000000000001], +[3.800000000000002, 0, 2.500000000000001], +[3.900000000000002, 0, 2.500000000000001], +[0, 0.1, 2.500000000000001], +[0.1, 0.1, 2.500000000000001], +[3.800000000000002, 0.1, 2.500000000000001], +[3.900000000000002, 0.1, 2.500000000000001], +[0, 0.2, 2.500000000000001], +[0.1, 0.2, 2.500000000000001], +[3.800000000000002, 0.2, 2.500000000000001], +[0.1, 0.30000000000000004, 2.500000000000001], +[0.2, 0.30000000000000004, 2.500000000000001], +[3.700000000000002, 0.30000000000000004, 2.500000000000001], +[3.800000000000002, 0.30000000000000004, 2.500000000000001], +[0.1, 0.4, 2.500000000000001], +[0.2, 0.4, 2.500000000000001], +[3.700000000000002, 0.4, 2.500000000000001], +[0.2, 0.5, 2.500000000000001], +[0.30000000000000004, 0.5, 2.500000000000001], +[3.600000000000002, 0.5, 2.500000000000001], +[3.700000000000002, 0.5, 2.500000000000001], +[0.2, 0.6, 2.500000000000001], +[0.30000000000000004, 0.6, 2.500000000000001], +[3.600000000000002, 0.6, 2.500000000000001], +[0.30000000000000004, 0.7, 2.500000000000001], +[0.4, 0.7, 2.500000000000001], +[3.5000000000000018, 0.7, 2.500000000000001], +[3.600000000000002, 0.7, 2.500000000000001], +[0.30000000000000004, 0.7999999999999999, 2.500000000000001], +[0.4, 0.7999999999999999, 2.500000000000001], +[3.5000000000000018, 0.7999999999999999, 2.500000000000001], +[0.4, 0.8999999999999999, 2.500000000000001], +[0.5, 0.8999999999999999, 2.500000000000001], +[3.4000000000000017, 0.8999999999999999, 2.500000000000001], +[3.5000000000000018, 0.8999999999999999, 2.500000000000001], +[0.4, 0.9999999999999999, 2.500000000000001], +[0.5, 0.9999999999999999, 2.500000000000001], +[3.4000000000000017, 0.9999999999999999, 2.500000000000001], +[0.5, 1.0999999999999999, 2.500000000000001], +[0.6, 1.0999999999999999, 2.500000000000001], +[3.3000000000000016, 1.0999999999999999, 2.500000000000001], +[3.4000000000000017, 1.0999999999999999, 2.500000000000001], +[0.5, 1.2, 2.500000000000001], +[0.6, 1.2, 2.500000000000001], +[3.3000000000000016, 1.2, 2.500000000000001], +[0.6, 1.3, 2.500000000000001], +[0.7, 1.3, 2.500000000000001], +[3.2000000000000015, 1.3, 2.500000000000001], +[3.3000000000000016, 1.3, 2.500000000000001], +[0.6, 1.4000000000000001, 2.500000000000001], +[0.7, 1.4000000000000001, 2.500000000000001], +[3.2000000000000015, 1.4000000000000001, 2.500000000000001], +[3.3000000000000016, 1.4000000000000001, 2.500000000000001], +[0.7, 1.5000000000000002, 2.500000000000001], +[0.7999999999999999, 1.5000000000000002, 2.500000000000001], +[3.1000000000000014, 1.5000000000000002, 2.500000000000001], +[3.2000000000000015, 1.5000000000000002, 2.500000000000001], +[0.7999999999999999, 1.6000000000000003, 2.500000000000001], +[3.1000000000000014, 1.6000000000000003, 2.500000000000001], +[0.7999999999999999, 1.7000000000000004, 2.500000000000001], +[0.8999999999999999, 1.7000000000000004, 2.500000000000001], +[3.0000000000000013, 1.7000000000000004, 2.500000000000001], +[3.1000000000000014, 1.7000000000000004, 2.500000000000001], +[0.8999999999999999, 1.8000000000000005, 2.500000000000001], +[3.0000000000000013, 1.8000000000000005, 2.500000000000001], +[3.1000000000000014, 1.8000000000000005, 2.500000000000001], +[0.8999999999999999, 1.9000000000000006, 2.500000000000001], +[0.9999999999999999, 1.9000000000000006, 2.500000000000001], +[2.9000000000000012, 1.9000000000000006, 2.500000000000001], +[3.0000000000000013, 1.9000000000000006, 2.500000000000001], +[0.8999999999999999, 2.0000000000000004, 2.500000000000001], +[0.9999999999999999, 2.0000000000000004, 2.500000000000001], +[2.9000000000000012, 2.0000000000000004, 2.500000000000001], +[3.0000000000000013, 2.0000000000000004, 2.500000000000001], +[0.9999999999999999, 2.1000000000000005, 2.500000000000001], +[1.0999999999999999, 2.1000000000000005, 2.500000000000001], +[2.9000000000000012, 2.1000000000000005, 2.500000000000001], +[0.9999999999999999, 2.2000000000000006, 2.500000000000001], +[1.0999999999999999, 2.2000000000000006, 2.500000000000001], +[2.800000000000001, 2.2000000000000006, 2.500000000000001], +[1.0999999999999999, 2.3000000000000007, 2.500000000000001], +[1.2, 2.3000000000000007, 2.500000000000001], +[2.700000000000001, 2.3000000000000007, 2.500000000000001], +[2.800000000000001, 2.3000000000000007, 2.500000000000001], +[1.0999999999999999, 2.400000000000001, 2.500000000000001], +[1.2, 2.400000000000001, 2.500000000000001], +[2.700000000000001, 2.400000000000001, 2.500000000000001], +[1.2, 2.500000000000001, 2.500000000000001], +[1.3, 2.500000000000001, 2.500000000000001], +[2.600000000000001, 2.500000000000001, 2.500000000000001], +[2.700000000000001, 2.500000000000001, 2.500000000000001], +[1.2, 2.600000000000001, 2.500000000000001], +[1.3, 2.600000000000001, 2.500000000000001], +[2.600000000000001, 2.600000000000001, 2.500000000000001], +[2.700000000000001, 2.600000000000001, 2.500000000000001], +[1.3, 2.700000000000001, 2.500000000000001], +[1.4000000000000001, 2.700000000000001, 2.500000000000001], +[1.5000000000000002, 2.700000000000001, 2.500000000000001], +[1.6000000000000003, 2.700000000000001, 2.500000000000001], +[1.7000000000000004, 2.700000000000001, 2.500000000000001], +[1.8000000000000005, 2.700000000000001, 2.500000000000001], +[1.9000000000000006, 2.700000000000001, 2.500000000000001], +[2.0000000000000004, 2.700000000000001, 2.500000000000001], +[2.1000000000000005, 2.700000000000001, 2.500000000000001], +[2.2000000000000006, 2.700000000000001, 2.500000000000001], +[2.3000000000000007, 2.700000000000001, 2.500000000000001], +[2.400000000000001, 2.700000000000001, 2.500000000000001], +[2.500000000000001, 2.700000000000001, 2.500000000000001], +[2.600000000000001, 2.700000000000001, 2.500000000000001], +[1.4000000000000001, 2.800000000000001, 2.500000000000001], +[1.5000000000000002, 2.800000000000001, 2.500000000000001], +[1.6000000000000003, 2.800000000000001, 2.500000000000001], +[1.7000000000000004, 2.800000000000001, 2.500000000000001], +[1.8000000000000005, 2.800000000000001, 2.500000000000001], +[1.9000000000000006, 2.800000000000001, 2.500000000000001], +[2.0000000000000004, 2.800000000000001, 2.500000000000001], +[2.1000000000000005, 2.800000000000001, 2.500000000000001], +[2.2000000000000006, 2.800000000000001, 2.500000000000001], +[2.3000000000000007, 2.800000000000001, 2.500000000000001], +[2.400000000000001, 2.800000000000001, 2.500000000000001], +[2.500000000000001, 2.800000000000001, 2.500000000000001], +[1.4000000000000001, 2.9000000000000012, 2.500000000000001], +[1.5000000000000002, 2.9000000000000012, 2.500000000000001], +[1.6000000000000003, 2.9000000000000012, 2.500000000000001], +[1.7000000000000004, 2.9000000000000012, 2.500000000000001], +[1.8000000000000005, 2.9000000000000012, 2.500000000000001], +[1.9000000000000006, 2.9000000000000012, 2.500000000000001], +[2.0000000000000004, 2.9000000000000012, 2.500000000000001], +[2.1000000000000005, 2.9000000000000012, 2.500000000000001], +[2.2000000000000006, 2.9000000000000012, 2.500000000000001], +[2.3000000000000007, 2.9000000000000012, 2.500000000000001], +[2.400000000000001, 2.9000000000000012, 2.500000000000001], +[2.500000000000001, 2.9000000000000012, 2.500000000000001], +[1.4000000000000001, 3.0000000000000013, 2.500000000000001], +[1.5000000000000002, 3.0000000000000013, 2.500000000000001], +[1.6000000000000003, 3.0000000000000013, 2.500000000000001], +[1.7000000000000004, 3.0000000000000013, 2.500000000000001], +[1.8000000000000005, 3.0000000000000013, 2.500000000000001], +[1.9000000000000006, 3.0000000000000013, 2.500000000000001], +[2.0000000000000004, 3.0000000000000013, 2.500000000000001], +[2.1000000000000005, 3.0000000000000013, 2.500000000000001], +[2.2000000000000006, 3.0000000000000013, 2.500000000000001], +[2.3000000000000007, 3.0000000000000013, 2.500000000000001], +[2.400000000000001, 3.0000000000000013, 2.500000000000001], +[2.500000000000001, 3.0000000000000013, 2.500000000000001], +[0, 0, 2.600000000000001], +[0.1, 0, 2.600000000000001], +[0.2, 0, 2.600000000000001], +[0.30000000000000004, 0, 2.600000000000001], +[0.4, 0, 2.600000000000001], +[0.5, 0, 2.600000000000001], +[0.6, 0, 2.600000000000001], +[0.7, 0, 2.600000000000001], +[0.7999999999999999, 0, 2.600000000000001], +[0.8999999999999999, 0, 2.600000000000001], +[0.9999999999999999, 0, 2.600000000000001], +[1.0999999999999999, 0, 2.600000000000001], +[1.2, 0, 2.600000000000001], +[1.3, 0, 2.600000000000001], +[1.4000000000000001, 0, 2.600000000000001], +[1.5000000000000002, 0, 2.600000000000001], +[1.6000000000000003, 0, 2.600000000000001], +[1.7000000000000004, 0, 2.600000000000001], +[1.8000000000000005, 0, 2.600000000000001], +[1.9000000000000006, 0, 2.600000000000001], +[2.0000000000000004, 0, 2.600000000000001], +[2.1000000000000005, 0, 2.600000000000001], +[2.2000000000000006, 0, 2.600000000000001], +[2.3000000000000007, 0, 2.600000000000001], +[2.400000000000001, 0, 2.600000000000001], +[2.500000000000001, 0, 2.600000000000001], +[2.600000000000001, 0, 2.600000000000001], +[2.700000000000001, 0, 2.600000000000001], +[2.800000000000001, 0, 2.600000000000001], +[2.9000000000000012, 0, 2.600000000000001], +[3.0000000000000013, 0, 2.600000000000001], +[3.1000000000000014, 0, 2.600000000000001], +[3.2000000000000015, 0, 2.600000000000001], +[3.3000000000000016, 0, 2.600000000000001], +[3.4000000000000017, 0, 2.600000000000001], +[3.5000000000000018, 0, 2.600000000000001], +[3.600000000000002, 0, 2.600000000000001], +[3.700000000000002, 0, 2.600000000000001], +[3.800000000000002, 0, 2.600000000000001], +[3.900000000000002, 0, 2.600000000000001], +[0, 0.1, 2.600000000000001], +[0.1, 0.1, 2.600000000000001], +[3.800000000000002, 0.1, 2.600000000000001], +[3.900000000000002, 0.1, 2.600000000000001], +[0, 0.2, 2.600000000000001], +[0.1, 0.2, 2.600000000000001], +[3.800000000000002, 0.2, 2.600000000000001], +[0.1, 0.30000000000000004, 2.600000000000001], +[0.2, 0.30000000000000004, 2.600000000000001], +[3.700000000000002, 0.30000000000000004, 2.600000000000001], +[3.800000000000002, 0.30000000000000004, 2.600000000000001], +[0.1, 0.4, 2.600000000000001], +[0.2, 0.4, 2.600000000000001], +[3.700000000000002, 0.4, 2.600000000000001], +[0.2, 0.5, 2.600000000000001], +[0.30000000000000004, 0.5, 2.600000000000001], +[3.600000000000002, 0.5, 2.600000000000001], +[3.700000000000002, 0.5, 2.600000000000001], +[0.2, 0.6, 2.600000000000001], +[0.30000000000000004, 0.6, 2.600000000000001], +[3.600000000000002, 0.6, 2.600000000000001], +[0.30000000000000004, 0.7, 2.600000000000001], +[0.4, 0.7, 2.600000000000001], +[3.5000000000000018, 0.7, 2.600000000000001], +[3.600000000000002, 0.7, 2.600000000000001], +[0.30000000000000004, 0.7999999999999999, 2.600000000000001], +[0.4, 0.7999999999999999, 2.600000000000001], +[3.5000000000000018, 0.7999999999999999, 2.600000000000001], +[0.4, 0.8999999999999999, 2.600000000000001], +[0.5, 0.8999999999999999, 2.600000000000001], +[3.4000000000000017, 0.8999999999999999, 2.600000000000001], +[3.5000000000000018, 0.8999999999999999, 2.600000000000001], +[0.4, 0.9999999999999999, 2.600000000000001], +[0.5, 0.9999999999999999, 2.600000000000001], +[3.4000000000000017, 0.9999999999999999, 2.600000000000001], +[0.5, 1.0999999999999999, 2.600000000000001], +[0.6, 1.0999999999999999, 2.600000000000001], +[3.3000000000000016, 1.0999999999999999, 2.600000000000001], +[3.4000000000000017, 1.0999999999999999, 2.600000000000001], +[0.5, 1.2, 2.600000000000001], +[0.6, 1.2, 2.600000000000001], +[3.3000000000000016, 1.2, 2.600000000000001], +[0.6, 1.3, 2.600000000000001], +[0.7, 1.3, 2.600000000000001], +[3.2000000000000015, 1.3, 2.600000000000001], +[3.3000000000000016, 1.3, 2.600000000000001], +[0.6, 1.4000000000000001, 2.600000000000001], +[0.7, 1.4000000000000001, 2.600000000000001], +[3.2000000000000015, 1.4000000000000001, 2.600000000000001], +[3.3000000000000016, 1.4000000000000001, 2.600000000000001], +[0.7, 1.5000000000000002, 2.600000000000001], +[0.7999999999999999, 1.5000000000000002, 2.600000000000001], +[3.1000000000000014, 1.5000000000000002, 2.600000000000001], +[3.2000000000000015, 1.5000000000000002, 2.600000000000001], +[0.7999999999999999, 1.6000000000000003, 2.600000000000001], +[3.1000000000000014, 1.6000000000000003, 2.600000000000001], +[0.7999999999999999, 1.7000000000000004, 2.600000000000001], +[0.8999999999999999, 1.7000000000000004, 2.600000000000001], +[3.0000000000000013, 1.7000000000000004, 2.600000000000001], +[3.1000000000000014, 1.7000000000000004, 2.600000000000001], +[0.8999999999999999, 1.8000000000000005, 2.600000000000001], +[3.0000000000000013, 1.8000000000000005, 2.600000000000001], +[3.1000000000000014, 1.8000000000000005, 2.600000000000001], +[0.8999999999999999, 1.9000000000000006, 2.600000000000001], +[0.9999999999999999, 1.9000000000000006, 2.600000000000001], +[2.9000000000000012, 1.9000000000000006, 2.600000000000001], +[3.0000000000000013, 1.9000000000000006, 2.600000000000001], +[0.8999999999999999, 2.0000000000000004, 2.600000000000001], +[0.9999999999999999, 2.0000000000000004, 2.600000000000001], +[2.9000000000000012, 2.0000000000000004, 2.600000000000001], +[3.0000000000000013, 2.0000000000000004, 2.600000000000001], +[0.9999999999999999, 2.1000000000000005, 2.600000000000001], +[1.0999999999999999, 2.1000000000000005, 2.600000000000001], +[2.9000000000000012, 2.1000000000000005, 2.600000000000001], +[0.9999999999999999, 2.2000000000000006, 2.600000000000001], +[1.0999999999999999, 2.2000000000000006, 2.600000000000001], +[2.800000000000001, 2.2000000000000006, 2.600000000000001], +[1.0999999999999999, 2.3000000000000007, 2.600000000000001], +[1.2, 2.3000000000000007, 2.600000000000001], +[2.700000000000001, 2.3000000000000007, 2.600000000000001], +[2.800000000000001, 2.3000000000000007, 2.600000000000001], +[1.0999999999999999, 2.400000000000001, 2.600000000000001], +[1.2, 2.400000000000001, 2.600000000000001], +[2.700000000000001, 2.400000000000001, 2.600000000000001], +[1.2, 2.500000000000001, 2.600000000000001], +[1.3, 2.500000000000001, 2.600000000000001], +[1.4000000000000001, 2.500000000000001, 2.600000000000001], +[1.5000000000000002, 2.500000000000001, 2.600000000000001], +[1.6000000000000003, 2.500000000000001, 2.600000000000001], +[1.7000000000000004, 2.500000000000001, 2.600000000000001], +[1.8000000000000005, 2.500000000000001, 2.600000000000001], +[1.9000000000000006, 2.500000000000001, 2.600000000000001], +[2.0000000000000004, 2.500000000000001, 2.600000000000001], +[2.1000000000000005, 2.500000000000001, 2.600000000000001], +[2.2000000000000006, 2.500000000000001, 2.600000000000001], +[2.3000000000000007, 2.500000000000001, 2.600000000000001], +[2.400000000000001, 2.500000000000001, 2.600000000000001], +[2.500000000000001, 2.500000000000001, 2.600000000000001], +[2.600000000000001, 2.500000000000001, 2.600000000000001], +[2.700000000000001, 2.500000000000001, 2.600000000000001], +[1.2, 2.600000000000001, 2.600000000000001], +[1.3, 2.600000000000001, 2.600000000000001], +[1.4000000000000001, 2.600000000000001, 2.600000000000001], +[1.5000000000000002, 2.600000000000001, 2.600000000000001], +[1.6000000000000003, 2.600000000000001, 2.600000000000001], +[1.7000000000000004, 2.600000000000001, 2.600000000000001], +[1.8000000000000005, 2.600000000000001, 2.600000000000001], +[1.9000000000000006, 2.600000000000001, 2.600000000000001], +[2.0000000000000004, 2.600000000000001, 2.600000000000001], +[2.1000000000000005, 2.600000000000001, 2.600000000000001], +[2.2000000000000006, 2.600000000000001, 2.600000000000001], +[2.3000000000000007, 2.600000000000001, 2.600000000000001], +[2.400000000000001, 2.600000000000001, 2.600000000000001], +[2.500000000000001, 2.600000000000001, 2.600000000000001], +[2.600000000000001, 2.600000000000001, 2.600000000000001], +[2.700000000000001, 2.600000000000001, 2.600000000000001], +[1.3, 2.700000000000001, 2.600000000000001], +[1.4000000000000001, 2.700000000000001, 2.600000000000001], +[1.5000000000000002, 2.700000000000001, 2.600000000000001], +[1.6000000000000003, 2.700000000000001, 2.600000000000001], +[1.7000000000000004, 2.700000000000001, 2.600000000000001], +[1.8000000000000005, 2.700000000000001, 2.600000000000001], +[1.9000000000000006, 2.700000000000001, 2.600000000000001], +[2.0000000000000004, 2.700000000000001, 2.600000000000001], +[2.1000000000000005, 2.700000000000001, 2.600000000000001], +[2.2000000000000006, 2.700000000000001, 2.600000000000001], +[2.3000000000000007, 2.700000000000001, 2.600000000000001], +[2.400000000000001, 2.700000000000001, 2.600000000000001], +[2.500000000000001, 2.700000000000001, 2.600000000000001], +[2.600000000000001, 2.700000000000001, 2.600000000000001], +[0, 0, 2.700000000000001], +[0.1, 0, 2.700000000000001], +[0.2, 0, 2.700000000000001], +[0.30000000000000004, 0, 2.700000000000001], +[0.4, 0, 2.700000000000001], +[0.5, 0, 2.700000000000001], +[0.6, 0, 2.700000000000001], +[0.7, 0, 2.700000000000001], +[0.7999999999999999, 0, 2.700000000000001], +[0.8999999999999999, 0, 2.700000000000001], +[0.9999999999999999, 0, 2.700000000000001], +[1.0999999999999999, 0, 2.700000000000001], +[1.2, 0, 2.700000000000001], +[1.3, 0, 2.700000000000001], +[1.4000000000000001, 0, 2.700000000000001], +[1.5000000000000002, 0, 2.700000000000001], +[1.6000000000000003, 0, 2.700000000000001], +[1.7000000000000004, 0, 2.700000000000001], +[1.8000000000000005, 0, 2.700000000000001], +[1.9000000000000006, 0, 2.700000000000001], +[2.0000000000000004, 0, 2.700000000000001], +[2.1000000000000005, 0, 2.700000000000001], +[2.2000000000000006, 0, 2.700000000000001], +[2.3000000000000007, 0, 2.700000000000001], +[2.400000000000001, 0, 2.700000000000001], +[2.500000000000001, 0, 2.700000000000001], +[2.600000000000001, 0, 2.700000000000001], +[2.700000000000001, 0, 2.700000000000001], +[2.800000000000001, 0, 2.700000000000001], +[2.9000000000000012, 0, 2.700000000000001], +[3.0000000000000013, 0, 2.700000000000001], +[3.1000000000000014, 0, 2.700000000000001], +[3.2000000000000015, 0, 2.700000000000001], +[3.3000000000000016, 0, 2.700000000000001], +[3.4000000000000017, 0, 2.700000000000001], +[3.5000000000000018, 0, 2.700000000000001], +[3.600000000000002, 0, 2.700000000000001], +[3.700000000000002, 0, 2.700000000000001], +[3.800000000000002, 0, 2.700000000000001], +[3.900000000000002, 0, 2.700000000000001], +[0, 0.1, 2.700000000000001], +[0.1, 0.1, 2.700000000000001], +[3.800000000000002, 0.1, 2.700000000000001], +[3.900000000000002, 0.1, 2.700000000000001], +[0, 0.2, 2.700000000000001], +[0.1, 0.2, 2.700000000000001], +[3.800000000000002, 0.2, 2.700000000000001], +[0.1, 0.30000000000000004, 2.700000000000001], +[0.2, 0.30000000000000004, 2.700000000000001], +[3.700000000000002, 0.30000000000000004, 2.700000000000001], +[3.800000000000002, 0.30000000000000004, 2.700000000000001], +[0.1, 0.4, 2.700000000000001], +[0.2, 0.4, 2.700000000000001], +[3.700000000000002, 0.4, 2.700000000000001], +[0.2, 0.5, 2.700000000000001], +[0.30000000000000004, 0.5, 2.700000000000001], +[3.600000000000002, 0.5, 2.700000000000001], +[3.700000000000002, 0.5, 2.700000000000001], +[0.2, 0.6, 2.700000000000001], +[0.30000000000000004, 0.6, 2.700000000000001], +[3.600000000000002, 0.6, 2.700000000000001], +[0.30000000000000004, 0.7, 2.700000000000001], +[0.4, 0.7, 2.700000000000001], +[3.5000000000000018, 0.7, 2.700000000000001], +[3.600000000000002, 0.7, 2.700000000000001], +[0.30000000000000004, 0.7999999999999999, 2.700000000000001], +[0.4, 0.7999999999999999, 2.700000000000001], +[3.5000000000000018, 0.7999999999999999, 2.700000000000001], +[0.4, 0.8999999999999999, 2.700000000000001], +[0.5, 0.8999999999999999, 2.700000000000001], +[3.4000000000000017, 0.8999999999999999, 2.700000000000001], +[3.5000000000000018, 0.8999999999999999, 2.700000000000001], +[0.4, 0.9999999999999999, 2.700000000000001], +[0.5, 0.9999999999999999, 2.700000000000001], +[3.4000000000000017, 0.9999999999999999, 2.700000000000001], +[0.5, 1.0999999999999999, 2.700000000000001], +[0.6, 1.0999999999999999, 2.700000000000001], +[3.3000000000000016, 1.0999999999999999, 2.700000000000001], +[3.4000000000000017, 1.0999999999999999, 2.700000000000001], +[0.5, 1.2, 2.700000000000001], +[0.6, 1.2, 2.700000000000001], +[3.3000000000000016, 1.2, 2.700000000000001], +[0.6, 1.3, 2.700000000000001], +[0.7, 1.3, 2.700000000000001], +[3.2000000000000015, 1.3, 2.700000000000001], +[3.3000000000000016, 1.3, 2.700000000000001], +[0.6, 1.4000000000000001, 2.700000000000001], +[0.7, 1.4000000000000001, 2.700000000000001], +[3.2000000000000015, 1.4000000000000001, 2.700000000000001], +[3.3000000000000016, 1.4000000000000001, 2.700000000000001], +[0.7, 1.5000000000000002, 2.700000000000001], +[0.7999999999999999, 1.5000000000000002, 2.700000000000001], +[3.1000000000000014, 1.5000000000000002, 2.700000000000001], +[3.2000000000000015, 1.5000000000000002, 2.700000000000001], +[0.7999999999999999, 1.6000000000000003, 2.700000000000001], +[3.1000000000000014, 1.6000000000000003, 2.700000000000001], +[0.7999999999999999, 1.7000000000000004, 2.700000000000001], +[0.8999999999999999, 1.7000000000000004, 2.700000000000001], +[3.0000000000000013, 1.7000000000000004, 2.700000000000001], +[3.1000000000000014, 1.7000000000000004, 2.700000000000001], +[0.8999999999999999, 1.8000000000000005, 2.700000000000001], +[3.0000000000000013, 1.8000000000000005, 2.700000000000001], +[3.1000000000000014, 1.8000000000000005, 2.700000000000001], +[0.8999999999999999, 1.9000000000000006, 2.700000000000001], +[0.9999999999999999, 1.9000000000000006, 2.700000000000001], +[2.9000000000000012, 1.9000000000000006, 2.700000000000001], +[3.0000000000000013, 1.9000000000000006, 2.700000000000001], +[0.8999999999999999, 2.0000000000000004, 2.700000000000001], +[0.9999999999999999, 2.0000000000000004, 2.700000000000001], +[2.9000000000000012, 2.0000000000000004, 2.700000000000001], +[3.0000000000000013, 2.0000000000000004, 2.700000000000001], +[0.9999999999999999, 2.1000000000000005, 2.700000000000001], +[1.0999999999999999, 2.1000000000000005, 2.700000000000001], +[2.9000000000000012, 2.1000000000000005, 2.700000000000001], +[0.9999999999999999, 2.2000000000000006, 2.700000000000001], +[1.0999999999999999, 2.2000000000000006, 2.700000000000001], +[2.800000000000001, 2.2000000000000006, 2.700000000000001], +[1.0999999999999999, 2.3000000000000007, 2.700000000000001], +[1.2, 2.3000000000000007, 2.700000000000001], +[1.3, 2.3000000000000007, 2.700000000000001], +[1.4000000000000001, 2.3000000000000007, 2.700000000000001], +[1.5000000000000002, 2.3000000000000007, 2.700000000000001], +[1.6000000000000003, 2.3000000000000007, 2.700000000000001], +[1.7000000000000004, 2.3000000000000007, 2.700000000000001], +[1.8000000000000005, 2.3000000000000007, 2.700000000000001], +[1.9000000000000006, 2.3000000000000007, 2.700000000000001], +[2.0000000000000004, 2.3000000000000007, 2.700000000000001], +[2.1000000000000005, 2.3000000000000007, 2.700000000000001], +[2.2000000000000006, 2.3000000000000007, 2.700000000000001], +[2.3000000000000007, 2.3000000000000007, 2.700000000000001], +[2.400000000000001, 2.3000000000000007, 2.700000000000001], +[2.500000000000001, 2.3000000000000007, 2.700000000000001], +[2.600000000000001, 2.3000000000000007, 2.700000000000001], +[2.700000000000001, 2.3000000000000007, 2.700000000000001], +[2.800000000000001, 2.3000000000000007, 2.700000000000001], +[1.0999999999999999, 2.400000000000001, 2.700000000000001], +[1.2, 2.400000000000001, 2.700000000000001], +[1.3, 2.400000000000001, 2.700000000000001], +[1.4000000000000001, 2.400000000000001, 2.700000000000001], +[1.5000000000000002, 2.400000000000001, 2.700000000000001], +[1.6000000000000003, 2.400000000000001, 2.700000000000001], +[1.7000000000000004, 2.400000000000001, 2.700000000000001], +[1.8000000000000005, 2.400000000000001, 2.700000000000001], +[1.9000000000000006, 2.400000000000001, 2.700000000000001], +[2.0000000000000004, 2.400000000000001, 2.700000000000001], +[2.1000000000000005, 2.400000000000001, 2.700000000000001], +[2.2000000000000006, 2.400000000000001, 2.700000000000001], +[2.3000000000000007, 2.400000000000001, 2.700000000000001], +[2.400000000000001, 2.400000000000001, 2.700000000000001], +[2.500000000000001, 2.400000000000001, 2.700000000000001], +[2.600000000000001, 2.400000000000001, 2.700000000000001], +[2.700000000000001, 2.400000000000001, 2.700000000000001], +[1.2, 2.500000000000001, 2.700000000000001], +[1.3, 2.500000000000001, 2.700000000000001], +[1.4000000000000001, 2.500000000000001, 2.700000000000001], +[1.5000000000000002, 2.500000000000001, 2.700000000000001], +[1.6000000000000003, 2.500000000000001, 2.700000000000001], +[1.7000000000000004, 2.500000000000001, 2.700000000000001], +[1.8000000000000005, 2.500000000000001, 2.700000000000001], +[1.9000000000000006, 2.500000000000001, 2.700000000000001], +[2.0000000000000004, 2.500000000000001, 2.700000000000001], +[2.1000000000000005, 2.500000000000001, 2.700000000000001], +[2.2000000000000006, 2.500000000000001, 2.700000000000001], +[2.3000000000000007, 2.500000000000001, 2.700000000000001], +[2.400000000000001, 2.500000000000001, 2.700000000000001], +[2.500000000000001, 2.500000000000001, 2.700000000000001], +[2.600000000000001, 2.500000000000001, 2.700000000000001], +[2.700000000000001, 2.500000000000001, 2.700000000000001], +[1.2, 2.600000000000001, 2.700000000000001], +[1.3, 2.600000000000001, 2.700000000000001], +[1.4000000000000001, 2.600000000000001, 2.700000000000001], +[1.5000000000000002, 2.600000000000001, 2.700000000000001], +[1.6000000000000003, 2.600000000000001, 2.700000000000001], +[1.7000000000000004, 2.600000000000001, 2.700000000000001], +[1.8000000000000005, 2.600000000000001, 2.700000000000001], +[1.9000000000000006, 2.600000000000001, 2.700000000000001], +[2.0000000000000004, 2.600000000000001, 2.700000000000001], +[2.1000000000000005, 2.600000000000001, 2.700000000000001], +[2.2000000000000006, 2.600000000000001, 2.700000000000001], +[2.3000000000000007, 2.600000000000001, 2.700000000000001], +[2.400000000000001, 2.600000000000001, 2.700000000000001], +[2.500000000000001, 2.600000000000001, 2.700000000000001], +[2.600000000000001, 2.600000000000001, 2.700000000000001], +[2.700000000000001, 2.600000000000001, 2.700000000000001], +[0, 0, 2.800000000000001], +[0.1, 0, 2.800000000000001], +[0.2, 0, 2.800000000000001], +[0.30000000000000004, 0, 2.800000000000001], +[0.4, 0, 2.800000000000001], +[0.5, 0, 2.800000000000001], +[0.6, 0, 2.800000000000001], +[0.7, 0, 2.800000000000001], +[0.7999999999999999, 0, 2.800000000000001], +[0.8999999999999999, 0, 2.800000000000001], +[0.9999999999999999, 0, 2.800000000000001], +[1.0999999999999999, 0, 2.800000000000001], +[1.2, 0, 2.800000000000001], +[1.3, 0, 2.800000000000001], +[1.4000000000000001, 0, 2.800000000000001], +[1.5000000000000002, 0, 2.800000000000001], +[1.6000000000000003, 0, 2.800000000000001], +[1.7000000000000004, 0, 2.800000000000001], +[1.8000000000000005, 0, 2.800000000000001], +[1.9000000000000006, 0, 2.800000000000001], +[2.0000000000000004, 0, 2.800000000000001], +[2.1000000000000005, 0, 2.800000000000001], +[2.2000000000000006, 0, 2.800000000000001], +[2.3000000000000007, 0, 2.800000000000001], +[2.400000000000001, 0, 2.800000000000001], +[2.500000000000001, 0, 2.800000000000001], +[2.600000000000001, 0, 2.800000000000001], +[2.700000000000001, 0, 2.800000000000001], +[2.800000000000001, 0, 2.800000000000001], +[2.9000000000000012, 0, 2.800000000000001], +[3.0000000000000013, 0, 2.800000000000001], +[3.1000000000000014, 0, 2.800000000000001], +[3.2000000000000015, 0, 2.800000000000001], +[3.3000000000000016, 0, 2.800000000000001], +[3.4000000000000017, 0, 2.800000000000001], +[3.5000000000000018, 0, 2.800000000000001], +[3.600000000000002, 0, 2.800000000000001], +[3.700000000000002, 0, 2.800000000000001], +[3.800000000000002, 0, 2.800000000000001], +[3.900000000000002, 0, 2.800000000000001], +[0, 0.1, 2.800000000000001], +[0.1, 0.1, 2.800000000000001], +[3.800000000000002, 0.1, 2.800000000000001], +[3.900000000000002, 0.1, 2.800000000000001], +[0, 0.2, 2.800000000000001], +[0.1, 0.2, 2.800000000000001], +[3.800000000000002, 0.2, 2.800000000000001], +[0.1, 0.30000000000000004, 2.800000000000001], +[0.2, 0.30000000000000004, 2.800000000000001], +[3.700000000000002, 0.30000000000000004, 2.800000000000001], +[3.800000000000002, 0.30000000000000004, 2.800000000000001], +[0.1, 0.4, 2.800000000000001], +[0.2, 0.4, 2.800000000000001], +[3.700000000000002, 0.4, 2.800000000000001], +[0.2, 0.5, 2.800000000000001], +[0.30000000000000004, 0.5, 2.800000000000001], +[3.600000000000002, 0.5, 2.800000000000001], +[3.700000000000002, 0.5, 2.800000000000001], +[0.2, 0.6, 2.800000000000001], +[0.30000000000000004, 0.6, 2.800000000000001], +[3.600000000000002, 0.6, 2.800000000000001], +[0.30000000000000004, 0.7, 2.800000000000001], +[0.4, 0.7, 2.800000000000001], +[3.5000000000000018, 0.7, 2.800000000000001], +[3.600000000000002, 0.7, 2.800000000000001], +[0.30000000000000004, 0.7999999999999999, 2.800000000000001], +[0.4, 0.7999999999999999, 2.800000000000001], +[3.5000000000000018, 0.7999999999999999, 2.800000000000001], +[0.4, 0.8999999999999999, 2.800000000000001], +[0.5, 0.8999999999999999, 2.800000000000001], +[3.4000000000000017, 0.8999999999999999, 2.800000000000001], +[3.5000000000000018, 0.8999999999999999, 2.800000000000001], +[0.4, 0.9999999999999999, 2.800000000000001], +[0.5, 0.9999999999999999, 2.800000000000001], +[3.4000000000000017, 0.9999999999999999, 2.800000000000001], +[0.5, 1.0999999999999999, 2.800000000000001], +[0.6, 1.0999999999999999, 2.800000000000001], +[3.3000000000000016, 1.0999999999999999, 2.800000000000001], +[3.4000000000000017, 1.0999999999999999, 2.800000000000001], +[0.5, 1.2, 2.800000000000001], +[0.6, 1.2, 2.800000000000001], +[3.3000000000000016, 1.2, 2.800000000000001], +[0.6, 1.3, 2.800000000000001], +[0.7, 1.3, 2.800000000000001], +[3.2000000000000015, 1.3, 2.800000000000001], +[3.3000000000000016, 1.3, 2.800000000000001], +[0.6, 1.4000000000000001, 2.800000000000001], +[0.7, 1.4000000000000001, 2.800000000000001], +[3.2000000000000015, 1.4000000000000001, 2.800000000000001], +[3.3000000000000016, 1.4000000000000001, 2.800000000000001], +[0.7, 1.5000000000000002, 2.800000000000001], +[0.7999999999999999, 1.5000000000000002, 2.800000000000001], +[3.1000000000000014, 1.5000000000000002, 2.800000000000001], +[3.2000000000000015, 1.5000000000000002, 2.800000000000001], +[0.7999999999999999, 1.6000000000000003, 2.800000000000001], +[3.1000000000000014, 1.6000000000000003, 2.800000000000001], +[0.7999999999999999, 1.7000000000000004, 2.800000000000001], +[0.8999999999999999, 1.7000000000000004, 2.800000000000001], +[3.0000000000000013, 1.7000000000000004, 2.800000000000001], +[3.1000000000000014, 1.7000000000000004, 2.800000000000001], +[0.8999999999999999, 1.8000000000000005, 2.800000000000001], +[3.0000000000000013, 1.8000000000000005, 2.800000000000001], +[3.1000000000000014, 1.8000000000000005, 2.800000000000001], +[0.8999999999999999, 1.9000000000000006, 2.800000000000001], +[0.9999999999999999, 1.9000000000000006, 2.800000000000001], +[2.9000000000000012, 1.9000000000000006, 2.800000000000001], +[3.0000000000000013, 1.9000000000000006, 2.800000000000001], +[0.8999999999999999, 2.0000000000000004, 2.800000000000001], +[0.9999999999999999, 2.0000000000000004, 2.800000000000001], +[2.9000000000000012, 2.0000000000000004, 2.800000000000001], +[3.0000000000000013, 2.0000000000000004, 2.800000000000001], +[0.9999999999999999, 2.1000000000000005, 2.800000000000001], +[1.0999999999999999, 2.1000000000000005, 2.800000000000001], +[2.9000000000000012, 2.1000000000000005, 2.800000000000001], +[0.9999999999999999, 2.2000000000000006, 2.800000000000001], +[1.0999999999999999, 2.2000000000000006, 2.800000000000001], +[1.2, 2.2000000000000006, 2.800000000000001], +[1.3, 2.2000000000000006, 2.800000000000001], +[1.4000000000000001, 2.2000000000000006, 2.800000000000001], +[1.5000000000000002, 2.2000000000000006, 2.800000000000001], +[1.6000000000000003, 2.2000000000000006, 2.800000000000001], +[1.7000000000000004, 2.2000000000000006, 2.800000000000001], +[1.8000000000000005, 2.2000000000000006, 2.800000000000001], +[1.9000000000000006, 2.2000000000000006, 2.800000000000001], +[2.0000000000000004, 2.2000000000000006, 2.800000000000001], +[2.1000000000000005, 2.2000000000000006, 2.800000000000001], +[2.2000000000000006, 2.2000000000000006, 2.800000000000001], +[2.3000000000000007, 2.2000000000000006, 2.800000000000001], +[2.400000000000001, 2.2000000000000006, 2.800000000000001], +[2.500000000000001, 2.2000000000000006, 2.800000000000001], +[2.600000000000001, 2.2000000000000006, 2.800000000000001], +[2.700000000000001, 2.2000000000000006, 2.800000000000001], +[2.800000000000001, 2.2000000000000006, 2.800000000000001], +[1.0999999999999999, 2.3000000000000007, 2.800000000000001], +[1.2, 2.3000000000000007, 2.800000000000001], +[1.3, 2.3000000000000007, 2.800000000000001], +[1.4000000000000001, 2.3000000000000007, 2.800000000000001], +[1.5000000000000002, 2.3000000000000007, 2.800000000000001], +[1.6000000000000003, 2.3000000000000007, 2.800000000000001], +[1.7000000000000004, 2.3000000000000007, 2.800000000000001], +[1.8000000000000005, 2.3000000000000007, 2.800000000000001], +[1.9000000000000006, 2.3000000000000007, 2.800000000000001], +[2.0000000000000004, 2.3000000000000007, 2.800000000000001], +[2.1000000000000005, 2.3000000000000007, 2.800000000000001], +[2.2000000000000006, 2.3000000000000007, 2.800000000000001], +[2.3000000000000007, 2.3000000000000007, 2.800000000000001], +[2.400000000000001, 2.3000000000000007, 2.800000000000001], +[2.500000000000001, 2.3000000000000007, 2.800000000000001], +[2.600000000000001, 2.3000000000000007, 2.800000000000001], +[2.700000000000001, 2.3000000000000007, 2.800000000000001], +[2.800000000000001, 2.3000000000000007, 2.800000000000001], +[0, 0, 2.9000000000000012], +[0.1, 0, 2.9000000000000012], +[0.2, 0, 2.9000000000000012], +[0.30000000000000004, 0, 2.9000000000000012], +[0.4, 0, 2.9000000000000012], +[0.5, 0, 2.9000000000000012], +[0.6, 0, 2.9000000000000012], +[0.7, 0, 2.9000000000000012], +[0.7999999999999999, 0, 2.9000000000000012], +[0.8999999999999999, 0, 2.9000000000000012], +[0.9999999999999999, 0, 2.9000000000000012], +[1.0999999999999999, 0, 2.9000000000000012], +[1.2, 0, 2.9000000000000012], +[1.3, 0, 2.9000000000000012], +[1.4000000000000001, 0, 2.9000000000000012], +[1.5000000000000002, 0, 2.9000000000000012], +[1.6000000000000003, 0, 2.9000000000000012], +[1.7000000000000004, 0, 2.9000000000000012], +[1.8000000000000005, 0, 2.9000000000000012], +[1.9000000000000006, 0, 2.9000000000000012], +[2.0000000000000004, 0, 2.9000000000000012], +[2.1000000000000005, 0, 2.9000000000000012], +[2.2000000000000006, 0, 2.9000000000000012], +[2.3000000000000007, 0, 2.9000000000000012], +[2.400000000000001, 0, 2.9000000000000012], +[2.500000000000001, 0, 2.9000000000000012], +[2.600000000000001, 0, 2.9000000000000012], +[2.700000000000001, 0, 2.9000000000000012], +[2.800000000000001, 0, 2.9000000000000012], +[2.9000000000000012, 0, 2.9000000000000012], +[3.0000000000000013, 0, 2.9000000000000012], +[3.1000000000000014, 0, 2.9000000000000012], +[3.2000000000000015, 0, 2.9000000000000012], +[3.3000000000000016, 0, 2.9000000000000012], +[3.4000000000000017, 0, 2.9000000000000012], +[3.5000000000000018, 0, 2.9000000000000012], +[3.600000000000002, 0, 2.9000000000000012], +[3.700000000000002, 0, 2.9000000000000012], +[3.800000000000002, 0, 2.9000000000000012], +[3.900000000000002, 0, 2.9000000000000012], +[0, 0.1, 2.9000000000000012], +[0.1, 0.1, 2.9000000000000012], +[3.800000000000002, 0.1, 2.9000000000000012], +[3.900000000000002, 0.1, 2.9000000000000012], +[0, 0.2, 2.9000000000000012], +[0.1, 0.2, 2.9000000000000012], +[3.800000000000002, 0.2, 2.9000000000000012], +[0.1, 0.30000000000000004, 2.9000000000000012], +[0.2, 0.30000000000000004, 2.9000000000000012], +[3.700000000000002, 0.30000000000000004, 2.9000000000000012], +[3.800000000000002, 0.30000000000000004, 2.9000000000000012], +[0.1, 0.4, 2.9000000000000012], +[0.2, 0.4, 2.9000000000000012], +[3.700000000000002, 0.4, 2.9000000000000012], +[0.2, 0.5, 2.9000000000000012], +[0.30000000000000004, 0.5, 2.9000000000000012], +[3.600000000000002, 0.5, 2.9000000000000012], +[3.700000000000002, 0.5, 2.9000000000000012], +[0.2, 0.6, 2.9000000000000012], +[0.30000000000000004, 0.6, 2.9000000000000012], +[3.600000000000002, 0.6, 2.9000000000000012], +[0.30000000000000004, 0.7, 2.9000000000000012], +[0.4, 0.7, 2.9000000000000012], +[3.5000000000000018, 0.7, 2.9000000000000012], +[3.600000000000002, 0.7, 2.9000000000000012], +[0.30000000000000004, 0.7999999999999999, 2.9000000000000012], +[0.4, 0.7999999999999999, 2.9000000000000012], +[3.5000000000000018, 0.7999999999999999, 2.9000000000000012], +[0.4, 0.8999999999999999, 2.9000000000000012], +[0.5, 0.8999999999999999, 2.9000000000000012], +[3.4000000000000017, 0.8999999999999999, 2.9000000000000012], +[3.5000000000000018, 0.8999999999999999, 2.9000000000000012], +[0.4, 0.9999999999999999, 2.9000000000000012], +[0.5, 0.9999999999999999, 2.9000000000000012], +[3.4000000000000017, 0.9999999999999999, 2.9000000000000012], +[0.5, 1.0999999999999999, 2.9000000000000012], +[0.6, 1.0999999999999999, 2.9000000000000012], +[3.3000000000000016, 1.0999999999999999, 2.9000000000000012], +[3.4000000000000017, 1.0999999999999999, 2.9000000000000012], +[0.5, 1.2, 2.9000000000000012], +[0.6, 1.2, 2.9000000000000012], +[3.3000000000000016, 1.2, 2.9000000000000012], +[0.6, 1.3, 2.9000000000000012], +[0.7, 1.3, 2.9000000000000012], +[3.2000000000000015, 1.3, 2.9000000000000012], +[3.3000000000000016, 1.3, 2.9000000000000012], +[0.6, 1.4000000000000001, 2.9000000000000012], +[0.7, 1.4000000000000001, 2.9000000000000012], +[3.2000000000000015, 1.4000000000000001, 2.9000000000000012], +[3.3000000000000016, 1.4000000000000001, 2.9000000000000012], +[0.7, 1.5000000000000002, 2.9000000000000012], +[0.7999999999999999, 1.5000000000000002, 2.9000000000000012], +[3.1000000000000014, 1.5000000000000002, 2.9000000000000012], +[3.2000000000000015, 1.5000000000000002, 2.9000000000000012], +[0.7999999999999999, 1.6000000000000003, 2.9000000000000012], +[3.1000000000000014, 1.6000000000000003, 2.9000000000000012], +[0.7999999999999999, 1.7000000000000004, 2.9000000000000012], +[0.8999999999999999, 1.7000000000000004, 2.9000000000000012], +[3.0000000000000013, 1.7000000000000004, 2.9000000000000012], +[3.1000000000000014, 1.7000000000000004, 2.9000000000000012], +[0.8999999999999999, 1.8000000000000005, 2.9000000000000012], +[3.0000000000000013, 1.8000000000000005, 2.9000000000000012], +[3.1000000000000014, 1.8000000000000005, 2.9000000000000012], +[0.8999999999999999, 1.9000000000000006, 2.9000000000000012], +[0.9999999999999999, 1.9000000000000006, 2.9000000000000012], +[1.0999999999999999, 1.9000000000000006, 2.9000000000000012], +[1.2, 1.9000000000000006, 2.9000000000000012], +[1.3, 1.9000000000000006, 2.9000000000000012], +[1.4000000000000001, 1.9000000000000006, 2.9000000000000012], +[1.5000000000000002, 1.9000000000000006, 2.9000000000000012], +[1.6000000000000003, 1.9000000000000006, 2.9000000000000012], +[1.7000000000000004, 1.9000000000000006, 2.9000000000000012], +[1.8000000000000005, 1.9000000000000006, 2.9000000000000012], +[1.9000000000000006, 1.9000000000000006, 2.9000000000000012], +[2.0000000000000004, 1.9000000000000006, 2.9000000000000012], +[2.1000000000000005, 1.9000000000000006, 2.9000000000000012], +[2.2000000000000006, 1.9000000000000006, 2.9000000000000012], +[2.3000000000000007, 1.9000000000000006, 2.9000000000000012], +[2.400000000000001, 1.9000000000000006, 2.9000000000000012], +[2.500000000000001, 1.9000000000000006, 2.9000000000000012], +[2.600000000000001, 1.9000000000000006, 2.9000000000000012], +[2.700000000000001, 1.9000000000000006, 2.9000000000000012], +[2.800000000000001, 1.9000000000000006, 2.9000000000000012], +[2.9000000000000012, 1.9000000000000006, 2.9000000000000012], +[3.0000000000000013, 1.9000000000000006, 2.9000000000000012], +[0.8999999999999999, 2.0000000000000004, 2.9000000000000012], +[0.9999999999999999, 2.0000000000000004, 2.9000000000000012], +[1.0999999999999999, 2.0000000000000004, 2.9000000000000012], +[1.2, 2.0000000000000004, 2.9000000000000012], +[1.3, 2.0000000000000004, 2.9000000000000012], +[1.4000000000000001, 2.0000000000000004, 2.9000000000000012], +[1.5000000000000002, 2.0000000000000004, 2.9000000000000012], +[1.6000000000000003, 2.0000000000000004, 2.9000000000000012], +[1.7000000000000004, 2.0000000000000004, 2.9000000000000012], +[1.8000000000000005, 2.0000000000000004, 2.9000000000000012], +[1.9000000000000006, 2.0000000000000004, 2.9000000000000012], +[2.0000000000000004, 2.0000000000000004, 2.9000000000000012], +[2.1000000000000005, 2.0000000000000004, 2.9000000000000012], +[2.2000000000000006, 2.0000000000000004, 2.9000000000000012], +[2.3000000000000007, 2.0000000000000004, 2.9000000000000012], +[2.400000000000001, 2.0000000000000004, 2.9000000000000012], +[2.500000000000001, 2.0000000000000004, 2.9000000000000012], +[2.600000000000001, 2.0000000000000004, 2.9000000000000012], +[2.700000000000001, 2.0000000000000004, 2.9000000000000012], +[2.800000000000001, 2.0000000000000004, 2.9000000000000012], +[2.9000000000000012, 2.0000000000000004, 2.9000000000000012], +[3.0000000000000013, 2.0000000000000004, 2.9000000000000012], +[0.9999999999999999, 2.1000000000000005, 2.9000000000000012], +[1.0999999999999999, 2.1000000000000005, 2.9000000000000012], +[1.2, 2.1000000000000005, 2.9000000000000012], +[1.3, 2.1000000000000005, 2.9000000000000012], +[1.4000000000000001, 2.1000000000000005, 2.9000000000000012], +[1.5000000000000002, 2.1000000000000005, 2.9000000000000012], +[1.6000000000000003, 2.1000000000000005, 2.9000000000000012], +[1.7000000000000004, 2.1000000000000005, 2.9000000000000012], +[1.8000000000000005, 2.1000000000000005, 2.9000000000000012], +[1.9000000000000006, 2.1000000000000005, 2.9000000000000012], +[2.0000000000000004, 2.1000000000000005, 2.9000000000000012], +[2.1000000000000005, 2.1000000000000005, 2.9000000000000012], +[2.2000000000000006, 2.1000000000000005, 2.9000000000000012], +[2.3000000000000007, 2.1000000000000005, 2.9000000000000012], +[2.400000000000001, 2.1000000000000005, 2.9000000000000012], +[2.500000000000001, 2.1000000000000005, 2.9000000000000012], +[2.600000000000001, 2.1000000000000005, 2.9000000000000012], +[2.700000000000001, 2.1000000000000005, 2.9000000000000012], +[2.800000000000001, 2.1000000000000005, 2.9000000000000012], +[2.9000000000000012, 2.1000000000000005, 2.9000000000000012], +[0, 0, 3.0000000000000013], +[0.1, 0, 3.0000000000000013], +[0.2, 0, 3.0000000000000013], +[0.30000000000000004, 0, 3.0000000000000013], +[0.4, 0, 3.0000000000000013], +[0.5, 0, 3.0000000000000013], +[0.6, 0, 3.0000000000000013], +[0.7, 0, 3.0000000000000013], +[0.7999999999999999, 0, 3.0000000000000013], +[0.8999999999999999, 0, 3.0000000000000013], +[0.9999999999999999, 0, 3.0000000000000013], +[1.0999999999999999, 0, 3.0000000000000013], +[1.2, 0, 3.0000000000000013], +[1.3, 0, 3.0000000000000013], +[1.4000000000000001, 0, 3.0000000000000013], +[1.5000000000000002, 0, 3.0000000000000013], +[1.6000000000000003, 0, 3.0000000000000013], +[1.7000000000000004, 0, 3.0000000000000013], +[1.8000000000000005, 0, 3.0000000000000013], +[1.9000000000000006, 0, 3.0000000000000013], +[2.0000000000000004, 0, 3.0000000000000013], +[2.1000000000000005, 0, 3.0000000000000013], +[2.2000000000000006, 0, 3.0000000000000013], +[2.3000000000000007, 0, 3.0000000000000013], +[2.400000000000001, 0, 3.0000000000000013], +[2.500000000000001, 0, 3.0000000000000013], +[2.600000000000001, 0, 3.0000000000000013], +[2.700000000000001, 0, 3.0000000000000013], +[2.800000000000001, 0, 3.0000000000000013], +[2.9000000000000012, 0, 3.0000000000000013], +[3.0000000000000013, 0, 3.0000000000000013], +[3.1000000000000014, 0, 3.0000000000000013], +[3.2000000000000015, 0, 3.0000000000000013], +[3.3000000000000016, 0, 3.0000000000000013], +[3.4000000000000017, 0, 3.0000000000000013], +[3.5000000000000018, 0, 3.0000000000000013], +[3.600000000000002, 0, 3.0000000000000013], +[3.700000000000002, 0, 3.0000000000000013], +[3.800000000000002, 0, 3.0000000000000013], +[3.900000000000002, 0, 3.0000000000000013], +[0, 0.1, 3.0000000000000013], +[0.1, 0.1, 3.0000000000000013], +[3.800000000000002, 0.1, 3.0000000000000013], +[3.900000000000002, 0.1, 3.0000000000000013], +[0, 0.2, 3.0000000000000013], +[0.1, 0.2, 3.0000000000000013], +[3.800000000000002, 0.2, 3.0000000000000013], +[0.1, 0.30000000000000004, 3.0000000000000013], +[0.2, 0.30000000000000004, 3.0000000000000013], +[3.700000000000002, 0.30000000000000004, 3.0000000000000013], +[3.800000000000002, 0.30000000000000004, 3.0000000000000013], +[0.1, 0.4, 3.0000000000000013], +[0.2, 0.4, 3.0000000000000013], +[3.700000000000002, 0.4, 3.0000000000000013], +[0.2, 0.5, 3.0000000000000013], +[0.30000000000000004, 0.5, 3.0000000000000013], +[3.600000000000002, 0.5, 3.0000000000000013], +[3.700000000000002, 0.5, 3.0000000000000013], +[0.2, 0.6, 3.0000000000000013], +[0.30000000000000004, 0.6, 3.0000000000000013], +[3.600000000000002, 0.6, 3.0000000000000013], +[0.30000000000000004, 0.7, 3.0000000000000013], +[0.4, 0.7, 3.0000000000000013], +[3.5000000000000018, 0.7, 3.0000000000000013], +[3.600000000000002, 0.7, 3.0000000000000013], +[0.30000000000000004, 0.7999999999999999, 3.0000000000000013], +[0.4, 0.7999999999999999, 3.0000000000000013], +[3.5000000000000018, 0.7999999999999999, 3.0000000000000013], +[0.4, 0.8999999999999999, 3.0000000000000013], +[0.5, 0.8999999999999999, 3.0000000000000013], +[3.4000000000000017, 0.8999999999999999, 3.0000000000000013], +[3.5000000000000018, 0.8999999999999999, 3.0000000000000013], +[0.4, 0.9999999999999999, 3.0000000000000013], +[0.5, 0.9999999999999999, 3.0000000000000013], +[3.4000000000000017, 0.9999999999999999, 3.0000000000000013], +[0.5, 1.0999999999999999, 3.0000000000000013], +[0.6, 1.0999999999999999, 3.0000000000000013], +[3.3000000000000016, 1.0999999999999999, 3.0000000000000013], +[3.4000000000000017, 1.0999999999999999, 3.0000000000000013], +[0.5, 1.2, 3.0000000000000013], +[0.6, 1.2, 3.0000000000000013], +[3.3000000000000016, 1.2, 3.0000000000000013], +[0.6, 1.3, 3.0000000000000013], +[0.7, 1.3, 3.0000000000000013], +[3.2000000000000015, 1.3, 3.0000000000000013], +[3.3000000000000016, 1.3, 3.0000000000000013], +[0.6, 1.4000000000000001, 3.0000000000000013], +[0.7, 1.4000000000000001, 3.0000000000000013], +[3.2000000000000015, 1.4000000000000001, 3.0000000000000013], +[3.3000000000000016, 1.4000000000000001, 3.0000000000000013], +[0.7, 1.5000000000000002, 3.0000000000000013], +[0.7999999999999999, 1.5000000000000002, 3.0000000000000013], +[3.1000000000000014, 1.5000000000000002, 3.0000000000000013], +[3.2000000000000015, 1.5000000000000002, 3.0000000000000013], +[0.7999999999999999, 1.6000000000000003, 3.0000000000000013], +[3.1000000000000014, 1.6000000000000003, 3.0000000000000013], +[0.7999999999999999, 1.7000000000000004, 3.0000000000000013], +[0.8999999999999999, 1.7000000000000004, 3.0000000000000013], +[0.9999999999999999, 1.7000000000000004, 3.0000000000000013], +[1.0999999999999999, 1.7000000000000004, 3.0000000000000013], +[1.2, 1.7000000000000004, 3.0000000000000013], +[1.3, 1.7000000000000004, 3.0000000000000013], +[1.4000000000000001, 1.7000000000000004, 3.0000000000000013], +[1.5000000000000002, 1.7000000000000004, 3.0000000000000013], +[1.6000000000000003, 1.7000000000000004, 3.0000000000000013], +[1.7000000000000004, 1.7000000000000004, 3.0000000000000013], +[1.8000000000000005, 1.7000000000000004, 3.0000000000000013], +[1.9000000000000006, 1.7000000000000004, 3.0000000000000013], +[2.0000000000000004, 1.7000000000000004, 3.0000000000000013], +[2.1000000000000005, 1.7000000000000004, 3.0000000000000013], +[2.2000000000000006, 1.7000000000000004, 3.0000000000000013], +[2.3000000000000007, 1.7000000000000004, 3.0000000000000013], +[2.400000000000001, 1.7000000000000004, 3.0000000000000013], +[2.500000000000001, 1.7000000000000004, 3.0000000000000013], +[2.600000000000001, 1.7000000000000004, 3.0000000000000013], +[2.700000000000001, 1.7000000000000004, 3.0000000000000013], +[2.800000000000001, 1.7000000000000004, 3.0000000000000013], +[2.9000000000000012, 1.7000000000000004, 3.0000000000000013], +[3.0000000000000013, 1.7000000000000004, 3.0000000000000013], +[3.1000000000000014, 1.7000000000000004, 3.0000000000000013], +[0.8999999999999999, 1.8000000000000005, 3.0000000000000013], +[0.9999999999999999, 1.8000000000000005, 3.0000000000000013], +[1.0999999999999999, 1.8000000000000005, 3.0000000000000013], +[1.2, 1.8000000000000005, 3.0000000000000013], +[1.3, 1.8000000000000005, 3.0000000000000013], +[1.4000000000000001, 1.8000000000000005, 3.0000000000000013], +[1.5000000000000002, 1.8000000000000005, 3.0000000000000013], +[1.6000000000000003, 1.8000000000000005, 3.0000000000000013], +[1.7000000000000004, 1.8000000000000005, 3.0000000000000013], +[1.8000000000000005, 1.8000000000000005, 3.0000000000000013], +[1.9000000000000006, 1.8000000000000005, 3.0000000000000013], +[2.0000000000000004, 1.8000000000000005, 3.0000000000000013], +[2.1000000000000005, 1.8000000000000005, 3.0000000000000013], +[2.2000000000000006, 1.8000000000000005, 3.0000000000000013], +[2.3000000000000007, 1.8000000000000005, 3.0000000000000013], +[2.400000000000001, 1.8000000000000005, 3.0000000000000013], +[2.500000000000001, 1.8000000000000005, 3.0000000000000013], +[2.600000000000001, 1.8000000000000005, 3.0000000000000013], +[2.700000000000001, 1.8000000000000005, 3.0000000000000013], +[2.800000000000001, 1.8000000000000005, 3.0000000000000013], +[2.9000000000000012, 1.8000000000000005, 3.0000000000000013], +[3.0000000000000013, 1.8000000000000005, 3.0000000000000013], +[3.1000000000000014, 1.8000000000000005, 3.0000000000000013], +[0.8999999999999999, 1.9000000000000006, 3.0000000000000013], +[0.9999999999999999, 1.9000000000000006, 3.0000000000000013], +[1.0999999999999999, 1.9000000000000006, 3.0000000000000013], +[1.2, 1.9000000000000006, 3.0000000000000013], +[1.3, 1.9000000000000006, 3.0000000000000013], +[1.4000000000000001, 1.9000000000000006, 3.0000000000000013], +[1.5000000000000002, 1.9000000000000006, 3.0000000000000013], +[1.6000000000000003, 1.9000000000000006, 3.0000000000000013], +[1.7000000000000004, 1.9000000000000006, 3.0000000000000013], +[1.8000000000000005, 1.9000000000000006, 3.0000000000000013], +[1.9000000000000006, 1.9000000000000006, 3.0000000000000013], +[2.0000000000000004, 1.9000000000000006, 3.0000000000000013], +[2.1000000000000005, 1.9000000000000006, 3.0000000000000013], +[2.2000000000000006, 1.9000000000000006, 3.0000000000000013], +[2.3000000000000007, 1.9000000000000006, 3.0000000000000013], +[2.400000000000001, 1.9000000000000006, 3.0000000000000013], +[2.500000000000001, 1.9000000000000006, 3.0000000000000013], +[2.600000000000001, 1.9000000000000006, 3.0000000000000013], +[2.700000000000001, 1.9000000000000006, 3.0000000000000013], +[2.800000000000001, 1.9000000000000006, 3.0000000000000013], +[2.9000000000000012, 1.9000000000000006, 3.0000000000000013], +[3.0000000000000013, 1.9000000000000006, 3.0000000000000013], +[0.8999999999999999, 2.0000000000000004, 3.0000000000000013], +[0.9999999999999999, 2.0000000000000004, 3.0000000000000013], +[1.0999999999999999, 2.0000000000000004, 3.0000000000000013], +[1.2, 2.0000000000000004, 3.0000000000000013], +[1.3, 2.0000000000000004, 3.0000000000000013], +[1.4000000000000001, 2.0000000000000004, 3.0000000000000013], +[1.5000000000000002, 2.0000000000000004, 3.0000000000000013], +[1.6000000000000003, 2.0000000000000004, 3.0000000000000013], +[1.7000000000000004, 2.0000000000000004, 3.0000000000000013], +[1.8000000000000005, 2.0000000000000004, 3.0000000000000013], +[1.9000000000000006, 2.0000000000000004, 3.0000000000000013], +[2.0000000000000004, 2.0000000000000004, 3.0000000000000013], +[2.1000000000000005, 2.0000000000000004, 3.0000000000000013], +[2.2000000000000006, 2.0000000000000004, 3.0000000000000013], +[2.3000000000000007, 2.0000000000000004, 3.0000000000000013], +[2.400000000000001, 2.0000000000000004, 3.0000000000000013], +[2.500000000000001, 2.0000000000000004, 3.0000000000000013], +[2.600000000000001, 2.0000000000000004, 3.0000000000000013], +[2.700000000000001, 2.0000000000000004, 3.0000000000000013], +[2.800000000000001, 2.0000000000000004, 3.0000000000000013], +[2.9000000000000012, 2.0000000000000004, 3.0000000000000013], +[3.0000000000000013, 2.0000000000000004, 3.0000000000000013], +[0, 0, 3.1000000000000014], +[0.1, 0, 3.1000000000000014], +[0.2, 0, 3.1000000000000014], +[0.30000000000000004, 0, 3.1000000000000014], +[0.4, 0, 3.1000000000000014], +[0.5, 0, 3.1000000000000014], +[0.6, 0, 3.1000000000000014], +[0.7, 0, 3.1000000000000014], +[0.7999999999999999, 0, 3.1000000000000014], +[0.8999999999999999, 0, 3.1000000000000014], +[0.9999999999999999, 0, 3.1000000000000014], +[1.0999999999999999, 0, 3.1000000000000014], +[1.2, 0, 3.1000000000000014], +[1.3, 0, 3.1000000000000014], +[1.4000000000000001, 0, 3.1000000000000014], +[1.5000000000000002, 0, 3.1000000000000014], +[1.6000000000000003, 0, 3.1000000000000014], +[1.7000000000000004, 0, 3.1000000000000014], +[1.8000000000000005, 0, 3.1000000000000014], +[1.9000000000000006, 0, 3.1000000000000014], +[2.0000000000000004, 0, 3.1000000000000014], +[2.1000000000000005, 0, 3.1000000000000014], +[2.2000000000000006, 0, 3.1000000000000014], +[2.3000000000000007, 0, 3.1000000000000014], +[2.400000000000001, 0, 3.1000000000000014], +[2.500000000000001, 0, 3.1000000000000014], +[2.600000000000001, 0, 3.1000000000000014], +[2.700000000000001, 0, 3.1000000000000014], +[2.800000000000001, 0, 3.1000000000000014], +[2.9000000000000012, 0, 3.1000000000000014], +[3.0000000000000013, 0, 3.1000000000000014], +[3.1000000000000014, 0, 3.1000000000000014], +[3.2000000000000015, 0, 3.1000000000000014], +[3.3000000000000016, 0, 3.1000000000000014], +[3.4000000000000017, 0, 3.1000000000000014], +[3.5000000000000018, 0, 3.1000000000000014], +[3.600000000000002, 0, 3.1000000000000014], +[3.700000000000002, 0, 3.1000000000000014], +[3.800000000000002, 0, 3.1000000000000014], +[3.900000000000002, 0, 3.1000000000000014], +[0, 0.1, 3.1000000000000014], +[0.1, 0.1, 3.1000000000000014], +[3.800000000000002, 0.1, 3.1000000000000014], +[3.900000000000002, 0.1, 3.1000000000000014], +[0, 0.2, 3.1000000000000014], +[0.1, 0.2, 3.1000000000000014], +[3.800000000000002, 0.2, 3.1000000000000014], +[0.1, 0.30000000000000004, 3.1000000000000014], +[0.2, 0.30000000000000004, 3.1000000000000014], +[3.700000000000002, 0.30000000000000004, 3.1000000000000014], +[3.800000000000002, 0.30000000000000004, 3.1000000000000014], +[0.1, 0.4, 3.1000000000000014], +[0.2, 0.4, 3.1000000000000014], +[3.700000000000002, 0.4, 3.1000000000000014], +[0.2, 0.5, 3.1000000000000014], +[0.30000000000000004, 0.5, 3.1000000000000014], +[3.600000000000002, 0.5, 3.1000000000000014], +[3.700000000000002, 0.5, 3.1000000000000014], +[0.2, 0.6, 3.1000000000000014], +[0.30000000000000004, 0.6, 3.1000000000000014], +[3.600000000000002, 0.6, 3.1000000000000014], +[0.30000000000000004, 0.7, 3.1000000000000014], +[0.4, 0.7, 3.1000000000000014], +[3.5000000000000018, 0.7, 3.1000000000000014], +[3.600000000000002, 0.7, 3.1000000000000014], +[0.30000000000000004, 0.7999999999999999, 3.1000000000000014], +[0.4, 0.7999999999999999, 3.1000000000000014], +[3.5000000000000018, 0.7999999999999999, 3.1000000000000014], +[0.4, 0.8999999999999999, 3.1000000000000014], +[0.5, 0.8999999999999999, 3.1000000000000014], +[3.4000000000000017, 0.8999999999999999, 3.1000000000000014], +[3.5000000000000018, 0.8999999999999999, 3.1000000000000014], +[0.4, 0.9999999999999999, 3.1000000000000014], +[0.5, 0.9999999999999999, 3.1000000000000014], +[3.4000000000000017, 0.9999999999999999, 3.1000000000000014], +[0.5, 1.0999999999999999, 3.1000000000000014], +[0.6, 1.0999999999999999, 3.1000000000000014], +[3.3000000000000016, 1.0999999999999999, 3.1000000000000014], +[3.4000000000000017, 1.0999999999999999, 3.1000000000000014], +[0.5, 1.2, 3.1000000000000014], +[0.6, 1.2, 3.1000000000000014], +[3.3000000000000016, 1.2, 3.1000000000000014], +[0.6, 1.3, 3.1000000000000014], +[0.7, 1.3, 3.1000000000000014], +[3.2000000000000015, 1.3, 3.1000000000000014], +[3.3000000000000016, 1.3, 3.1000000000000014], +[0.6, 1.4000000000000001, 3.1000000000000014], +[0.7, 1.4000000000000001, 3.1000000000000014], +[3.2000000000000015, 1.4000000000000001, 3.1000000000000014], +[3.3000000000000016, 1.4000000000000001, 3.1000000000000014], +[0.7, 1.5000000000000002, 3.1000000000000014], +[0.7999999999999999, 1.5000000000000002, 3.1000000000000014], +[0.8999999999999999, 1.5000000000000002, 3.1000000000000014], +[0.9999999999999999, 1.5000000000000002, 3.1000000000000014], +[1.0999999999999999, 1.5000000000000002, 3.1000000000000014], +[1.2, 1.5000000000000002, 3.1000000000000014], +[1.3, 1.5000000000000002, 3.1000000000000014], +[1.4000000000000001, 1.5000000000000002, 3.1000000000000014], +[1.5000000000000002, 1.5000000000000002, 3.1000000000000014], +[1.6000000000000003, 1.5000000000000002, 3.1000000000000014], +[1.7000000000000004, 1.5000000000000002, 3.1000000000000014], +[1.8000000000000005, 1.5000000000000002, 3.1000000000000014], +[1.9000000000000006, 1.5000000000000002, 3.1000000000000014], +[2.0000000000000004, 1.5000000000000002, 3.1000000000000014], +[2.1000000000000005, 1.5000000000000002, 3.1000000000000014], +[2.2000000000000006, 1.5000000000000002, 3.1000000000000014], +[2.3000000000000007, 1.5000000000000002, 3.1000000000000014], +[2.400000000000001, 1.5000000000000002, 3.1000000000000014], +[2.500000000000001, 1.5000000000000002, 3.1000000000000014], +[2.600000000000001, 1.5000000000000002, 3.1000000000000014], +[2.700000000000001, 1.5000000000000002, 3.1000000000000014], +[2.800000000000001, 1.5000000000000002, 3.1000000000000014], +[2.9000000000000012, 1.5000000000000002, 3.1000000000000014], +[3.0000000000000013, 1.5000000000000002, 3.1000000000000014], +[3.1000000000000014, 1.5000000000000002, 3.1000000000000014], +[3.2000000000000015, 1.5000000000000002, 3.1000000000000014], +[0.7999999999999999, 1.6000000000000003, 3.1000000000000014], +[0.8999999999999999, 1.6000000000000003, 3.1000000000000014], +[0.9999999999999999, 1.6000000000000003, 3.1000000000000014], +[1.0999999999999999, 1.6000000000000003, 3.1000000000000014], +[1.2, 1.6000000000000003, 3.1000000000000014], +[1.3, 1.6000000000000003, 3.1000000000000014], +[1.4000000000000001, 1.6000000000000003, 3.1000000000000014], +[1.5000000000000002, 1.6000000000000003, 3.1000000000000014], +[1.6000000000000003, 1.6000000000000003, 3.1000000000000014], +[1.7000000000000004, 1.6000000000000003, 3.1000000000000014], +[1.8000000000000005, 1.6000000000000003, 3.1000000000000014], +[1.9000000000000006, 1.6000000000000003, 3.1000000000000014], +[2.0000000000000004, 1.6000000000000003, 3.1000000000000014], +[2.1000000000000005, 1.6000000000000003, 3.1000000000000014], +[2.2000000000000006, 1.6000000000000003, 3.1000000000000014], +[2.3000000000000007, 1.6000000000000003, 3.1000000000000014], +[2.400000000000001, 1.6000000000000003, 3.1000000000000014], +[2.500000000000001, 1.6000000000000003, 3.1000000000000014], +[2.600000000000001, 1.6000000000000003, 3.1000000000000014], +[2.700000000000001, 1.6000000000000003, 3.1000000000000014], +[2.800000000000001, 1.6000000000000003, 3.1000000000000014], +[2.9000000000000012, 1.6000000000000003, 3.1000000000000014], +[3.0000000000000013, 1.6000000000000003, 3.1000000000000014], +[3.1000000000000014, 1.6000000000000003, 3.1000000000000014], +[0.7999999999999999, 1.7000000000000004, 3.1000000000000014], +[0.8999999999999999, 1.7000000000000004, 3.1000000000000014], +[0.9999999999999999, 1.7000000000000004, 3.1000000000000014], +[1.0999999999999999, 1.7000000000000004, 3.1000000000000014], +[1.2, 1.7000000000000004, 3.1000000000000014], +[1.3, 1.7000000000000004, 3.1000000000000014], +[1.4000000000000001, 1.7000000000000004, 3.1000000000000014], +[1.5000000000000002, 1.7000000000000004, 3.1000000000000014], +[1.6000000000000003, 1.7000000000000004, 3.1000000000000014], +[1.7000000000000004, 1.7000000000000004, 3.1000000000000014], +[1.8000000000000005, 1.7000000000000004, 3.1000000000000014], +[1.9000000000000006, 1.7000000000000004, 3.1000000000000014], +[2.0000000000000004, 1.7000000000000004, 3.1000000000000014], +[2.1000000000000005, 1.7000000000000004, 3.1000000000000014], +[2.2000000000000006, 1.7000000000000004, 3.1000000000000014], +[2.3000000000000007, 1.7000000000000004, 3.1000000000000014], +[2.400000000000001, 1.7000000000000004, 3.1000000000000014], +[2.500000000000001, 1.7000000000000004, 3.1000000000000014], +[2.600000000000001, 1.7000000000000004, 3.1000000000000014], +[2.700000000000001, 1.7000000000000004, 3.1000000000000014], +[2.800000000000001, 1.7000000000000004, 3.1000000000000014], +[2.9000000000000012, 1.7000000000000004, 3.1000000000000014], +[3.0000000000000013, 1.7000000000000004, 3.1000000000000014], +[3.1000000000000014, 1.7000000000000004, 3.1000000000000014], +[0.8999999999999999, 1.8000000000000005, 3.1000000000000014], +[0.9999999999999999, 1.8000000000000005, 3.1000000000000014], +[1.0999999999999999, 1.8000000000000005, 3.1000000000000014], +[1.2, 1.8000000000000005, 3.1000000000000014], +[1.3, 1.8000000000000005, 3.1000000000000014], +[1.4000000000000001, 1.8000000000000005, 3.1000000000000014], +[1.5000000000000002, 1.8000000000000005, 3.1000000000000014], +[1.6000000000000003, 1.8000000000000005, 3.1000000000000014], +[1.7000000000000004, 1.8000000000000005, 3.1000000000000014], +[1.8000000000000005, 1.8000000000000005, 3.1000000000000014], +[1.9000000000000006, 1.8000000000000005, 3.1000000000000014], +[2.0000000000000004, 1.8000000000000005, 3.1000000000000014], +[2.1000000000000005, 1.8000000000000005, 3.1000000000000014], +[2.2000000000000006, 1.8000000000000005, 3.1000000000000014], +[2.3000000000000007, 1.8000000000000005, 3.1000000000000014], +[2.400000000000001, 1.8000000000000005, 3.1000000000000014], +[2.500000000000001, 1.8000000000000005, 3.1000000000000014], +[2.600000000000001, 1.8000000000000005, 3.1000000000000014], +[2.700000000000001, 1.8000000000000005, 3.1000000000000014], +[2.800000000000001, 1.8000000000000005, 3.1000000000000014], +[2.9000000000000012, 1.8000000000000005, 3.1000000000000014], +[3.0000000000000013, 1.8000000000000005, 3.1000000000000014], +[3.1000000000000014, 1.8000000000000005, 3.1000000000000014], +[0, 0, 3.2000000000000015], +[0.1, 0, 3.2000000000000015], +[0.2, 0, 3.2000000000000015], +[0.30000000000000004, 0, 3.2000000000000015], +[0.4, 0, 3.2000000000000015], +[0.5, 0, 3.2000000000000015], +[0.6, 0, 3.2000000000000015], +[0.7, 0, 3.2000000000000015], +[0.7999999999999999, 0, 3.2000000000000015], +[0.8999999999999999, 0, 3.2000000000000015], +[0.9999999999999999, 0, 3.2000000000000015], +[1.0999999999999999, 0, 3.2000000000000015], +[1.2, 0, 3.2000000000000015], +[1.3, 0, 3.2000000000000015], +[1.4000000000000001, 0, 3.2000000000000015], +[1.5000000000000002, 0, 3.2000000000000015], +[1.6000000000000003, 0, 3.2000000000000015], +[1.7000000000000004, 0, 3.2000000000000015], +[1.8000000000000005, 0, 3.2000000000000015], +[1.9000000000000006, 0, 3.2000000000000015], +[2.0000000000000004, 0, 3.2000000000000015], +[2.1000000000000005, 0, 3.2000000000000015], +[2.2000000000000006, 0, 3.2000000000000015], +[2.3000000000000007, 0, 3.2000000000000015], +[2.400000000000001, 0, 3.2000000000000015], +[2.500000000000001, 0, 3.2000000000000015], +[2.600000000000001, 0, 3.2000000000000015], +[2.700000000000001, 0, 3.2000000000000015], +[2.800000000000001, 0, 3.2000000000000015], +[2.9000000000000012, 0, 3.2000000000000015], +[3.0000000000000013, 0, 3.2000000000000015], +[3.1000000000000014, 0, 3.2000000000000015], +[3.2000000000000015, 0, 3.2000000000000015], +[3.3000000000000016, 0, 3.2000000000000015], +[3.4000000000000017, 0, 3.2000000000000015], +[3.5000000000000018, 0, 3.2000000000000015], +[3.600000000000002, 0, 3.2000000000000015], +[3.700000000000002, 0, 3.2000000000000015], +[3.800000000000002, 0, 3.2000000000000015], +[3.900000000000002, 0, 3.2000000000000015], +[0, 0.1, 3.2000000000000015], +[0.1, 0.1, 3.2000000000000015], +[3.800000000000002, 0.1, 3.2000000000000015], +[3.900000000000002, 0.1, 3.2000000000000015], +[0, 0.2, 3.2000000000000015], +[0.1, 0.2, 3.2000000000000015], +[3.800000000000002, 0.2, 3.2000000000000015], +[0.1, 0.30000000000000004, 3.2000000000000015], +[0.2, 0.30000000000000004, 3.2000000000000015], +[3.700000000000002, 0.30000000000000004, 3.2000000000000015], +[3.800000000000002, 0.30000000000000004, 3.2000000000000015], +[0.1, 0.4, 3.2000000000000015], +[0.2, 0.4, 3.2000000000000015], +[3.700000000000002, 0.4, 3.2000000000000015], +[0.2, 0.5, 3.2000000000000015], +[0.30000000000000004, 0.5, 3.2000000000000015], +[3.600000000000002, 0.5, 3.2000000000000015], +[3.700000000000002, 0.5, 3.2000000000000015], +[0.2, 0.6, 3.2000000000000015], +[0.30000000000000004, 0.6, 3.2000000000000015], +[3.600000000000002, 0.6, 3.2000000000000015], +[0.30000000000000004, 0.7, 3.2000000000000015], +[0.4, 0.7, 3.2000000000000015], +[3.5000000000000018, 0.7, 3.2000000000000015], +[3.600000000000002, 0.7, 3.2000000000000015], +[0.30000000000000004, 0.7999999999999999, 3.2000000000000015], +[0.4, 0.7999999999999999, 3.2000000000000015], +[3.5000000000000018, 0.7999999999999999, 3.2000000000000015], +[0.4, 0.8999999999999999, 3.2000000000000015], +[0.5, 0.8999999999999999, 3.2000000000000015], +[3.4000000000000017, 0.8999999999999999, 3.2000000000000015], +[3.5000000000000018, 0.8999999999999999, 3.2000000000000015], +[0.4, 0.9999999999999999, 3.2000000000000015], +[0.5, 0.9999999999999999, 3.2000000000000015], +[3.4000000000000017, 0.9999999999999999, 3.2000000000000015], +[0.5, 1.0999999999999999, 3.2000000000000015], +[0.6, 1.0999999999999999, 3.2000000000000015], +[3.3000000000000016, 1.0999999999999999, 3.2000000000000015], +[3.4000000000000017, 1.0999999999999999, 3.2000000000000015], +[0.5, 1.2, 3.2000000000000015], +[0.6, 1.2, 3.2000000000000015], +[3.3000000000000016, 1.2, 3.2000000000000015], +[0.6, 1.3, 3.2000000000000015], +[0.7, 1.3, 3.2000000000000015], +[0.7999999999999999, 1.3, 3.2000000000000015], +[0.8999999999999999, 1.3, 3.2000000000000015], +[0.9999999999999999, 1.3, 3.2000000000000015], +[1.0999999999999999, 1.3, 3.2000000000000015], +[1.2, 1.3, 3.2000000000000015], +[1.3, 1.3, 3.2000000000000015], +[1.4000000000000001, 1.3, 3.2000000000000015], +[1.5000000000000002, 1.3, 3.2000000000000015], +[1.6000000000000003, 1.3, 3.2000000000000015], +[1.7000000000000004, 1.3, 3.2000000000000015], +[1.8000000000000005, 1.3, 3.2000000000000015], +[1.9000000000000006, 1.3, 3.2000000000000015], +[2.0000000000000004, 1.3, 3.2000000000000015], +[2.1000000000000005, 1.3, 3.2000000000000015], +[2.2000000000000006, 1.3, 3.2000000000000015], +[2.3000000000000007, 1.3, 3.2000000000000015], +[2.400000000000001, 1.3, 3.2000000000000015], +[2.500000000000001, 1.3, 3.2000000000000015], +[2.600000000000001, 1.3, 3.2000000000000015], +[2.700000000000001, 1.3, 3.2000000000000015], +[2.800000000000001, 1.3, 3.2000000000000015], +[2.9000000000000012, 1.3, 3.2000000000000015], +[3.0000000000000013, 1.3, 3.2000000000000015], +[3.1000000000000014, 1.3, 3.2000000000000015], +[3.2000000000000015, 1.3, 3.2000000000000015], +[3.3000000000000016, 1.3, 3.2000000000000015], +[0.6, 1.4000000000000001, 3.2000000000000015], +[0.7, 1.4000000000000001, 3.2000000000000015], +[0.7999999999999999, 1.4000000000000001, 3.2000000000000015], +[0.8999999999999999, 1.4000000000000001, 3.2000000000000015], +[0.9999999999999999, 1.4000000000000001, 3.2000000000000015], +[1.0999999999999999, 1.4000000000000001, 3.2000000000000015], +[1.2, 1.4000000000000001, 3.2000000000000015], +[1.3, 1.4000000000000001, 3.2000000000000015], +[1.4000000000000001, 1.4000000000000001, 3.2000000000000015], +[1.5000000000000002, 1.4000000000000001, 3.2000000000000015], +[1.6000000000000003, 1.4000000000000001, 3.2000000000000015], +[1.7000000000000004, 1.4000000000000001, 3.2000000000000015], +[1.8000000000000005, 1.4000000000000001, 3.2000000000000015], +[1.9000000000000006, 1.4000000000000001, 3.2000000000000015], +[2.0000000000000004, 1.4000000000000001, 3.2000000000000015], +[2.1000000000000005, 1.4000000000000001, 3.2000000000000015], +[2.2000000000000006, 1.4000000000000001, 3.2000000000000015], +[2.3000000000000007, 1.4000000000000001, 3.2000000000000015], +[2.400000000000001, 1.4000000000000001, 3.2000000000000015], +[2.500000000000001, 1.4000000000000001, 3.2000000000000015], +[2.600000000000001, 1.4000000000000001, 3.2000000000000015], +[2.700000000000001, 1.4000000000000001, 3.2000000000000015], +[2.800000000000001, 1.4000000000000001, 3.2000000000000015], +[2.9000000000000012, 1.4000000000000001, 3.2000000000000015], +[3.0000000000000013, 1.4000000000000001, 3.2000000000000015], +[3.1000000000000014, 1.4000000000000001, 3.2000000000000015], +[3.2000000000000015, 1.4000000000000001, 3.2000000000000015], +[3.3000000000000016, 1.4000000000000001, 3.2000000000000015], +[0.7, 1.5000000000000002, 3.2000000000000015], +[0.7999999999999999, 1.5000000000000002, 3.2000000000000015], +[0.8999999999999999, 1.5000000000000002, 3.2000000000000015], +[0.9999999999999999, 1.5000000000000002, 3.2000000000000015], +[1.0999999999999999, 1.5000000000000002, 3.2000000000000015], +[1.2, 1.5000000000000002, 3.2000000000000015], +[1.3, 1.5000000000000002, 3.2000000000000015], +[1.4000000000000001, 1.5000000000000002, 3.2000000000000015], +[1.5000000000000002, 1.5000000000000002, 3.2000000000000015], +[1.6000000000000003, 1.5000000000000002, 3.2000000000000015], +[1.7000000000000004, 1.5000000000000002, 3.2000000000000015], +[1.8000000000000005, 1.5000000000000002, 3.2000000000000015], +[1.9000000000000006, 1.5000000000000002, 3.2000000000000015], +[2.0000000000000004, 1.5000000000000002, 3.2000000000000015], +[2.1000000000000005, 1.5000000000000002, 3.2000000000000015], +[2.2000000000000006, 1.5000000000000002, 3.2000000000000015], +[2.3000000000000007, 1.5000000000000002, 3.2000000000000015], +[2.400000000000001, 1.5000000000000002, 3.2000000000000015], +[2.500000000000001, 1.5000000000000002, 3.2000000000000015], +[2.600000000000001, 1.5000000000000002, 3.2000000000000015], +[2.700000000000001, 1.5000000000000002, 3.2000000000000015], +[2.800000000000001, 1.5000000000000002, 3.2000000000000015], +[2.9000000000000012, 1.5000000000000002, 3.2000000000000015], +[3.0000000000000013, 1.5000000000000002, 3.2000000000000015], +[3.1000000000000014, 1.5000000000000002, 3.2000000000000015], +[3.2000000000000015, 1.5000000000000002, 3.2000000000000015], +[0, 0, 3.3000000000000016], +[0.1, 0, 3.3000000000000016], +[0.2, 0, 3.3000000000000016], +[0.30000000000000004, 0, 3.3000000000000016], +[0.4, 0, 3.3000000000000016], +[0.5, 0, 3.3000000000000016], +[0.6, 0, 3.3000000000000016], +[0.7, 0, 3.3000000000000016], +[0.7999999999999999, 0, 3.3000000000000016], +[0.8999999999999999, 0, 3.3000000000000016], +[0.9999999999999999, 0, 3.3000000000000016], +[1.0999999999999999, 0, 3.3000000000000016], +[1.2, 0, 3.3000000000000016], +[1.3, 0, 3.3000000000000016], +[1.4000000000000001, 0, 3.3000000000000016], +[1.5000000000000002, 0, 3.3000000000000016], +[1.6000000000000003, 0, 3.3000000000000016], +[1.7000000000000004, 0, 3.3000000000000016], +[1.8000000000000005, 0, 3.3000000000000016], +[1.9000000000000006, 0, 3.3000000000000016], +[2.0000000000000004, 0, 3.3000000000000016], +[2.1000000000000005, 0, 3.3000000000000016], +[2.2000000000000006, 0, 3.3000000000000016], +[2.3000000000000007, 0, 3.3000000000000016], +[2.400000000000001, 0, 3.3000000000000016], +[2.500000000000001, 0, 3.3000000000000016], +[2.600000000000001, 0, 3.3000000000000016], +[2.700000000000001, 0, 3.3000000000000016], +[2.800000000000001, 0, 3.3000000000000016], +[2.9000000000000012, 0, 3.3000000000000016], +[3.0000000000000013, 0, 3.3000000000000016], +[3.1000000000000014, 0, 3.3000000000000016], +[3.2000000000000015, 0, 3.3000000000000016], +[3.3000000000000016, 0, 3.3000000000000016], +[3.4000000000000017, 0, 3.3000000000000016], +[3.5000000000000018, 0, 3.3000000000000016], +[3.600000000000002, 0, 3.3000000000000016], +[3.700000000000002, 0, 3.3000000000000016], +[3.800000000000002, 0, 3.3000000000000016], +[3.900000000000002, 0, 3.3000000000000016], +[0, 0.1, 3.3000000000000016], +[0.1, 0.1, 3.3000000000000016], +[3.800000000000002, 0.1, 3.3000000000000016], +[3.900000000000002, 0.1, 3.3000000000000016], +[0, 0.2, 3.3000000000000016], +[0.1, 0.2, 3.3000000000000016], +[3.800000000000002, 0.2, 3.3000000000000016], +[0.1, 0.30000000000000004, 3.3000000000000016], +[0.2, 0.30000000000000004, 3.3000000000000016], +[3.700000000000002, 0.30000000000000004, 3.3000000000000016], +[3.800000000000002, 0.30000000000000004, 3.3000000000000016], +[0.1, 0.4, 3.3000000000000016], +[0.2, 0.4, 3.3000000000000016], +[3.700000000000002, 0.4, 3.3000000000000016], +[0.2, 0.5, 3.3000000000000016], +[0.30000000000000004, 0.5, 3.3000000000000016], +[3.600000000000002, 0.5, 3.3000000000000016], +[3.700000000000002, 0.5, 3.3000000000000016], +[0.2, 0.6, 3.3000000000000016], +[0.30000000000000004, 0.6, 3.3000000000000016], +[3.600000000000002, 0.6, 3.3000000000000016], +[0.30000000000000004, 0.7, 3.3000000000000016], +[0.4, 0.7, 3.3000000000000016], +[3.5000000000000018, 0.7, 3.3000000000000016], +[3.600000000000002, 0.7, 3.3000000000000016], +[0.30000000000000004, 0.7999999999999999, 3.3000000000000016], +[0.4, 0.7999999999999999, 3.3000000000000016], +[3.5000000000000018, 0.7999999999999999, 3.3000000000000016], +[0.4, 0.8999999999999999, 3.3000000000000016], +[0.5, 0.8999999999999999, 3.3000000000000016], +[3.4000000000000017, 0.8999999999999999, 3.3000000000000016], +[3.5000000000000018, 0.8999999999999999, 3.3000000000000016], +[0.4, 0.9999999999999999, 3.3000000000000016], +[0.5, 0.9999999999999999, 3.3000000000000016], +[3.4000000000000017, 0.9999999999999999, 3.3000000000000016], +[0.5, 1.0999999999999999, 3.3000000000000016], +[0.6, 1.0999999999999999, 3.3000000000000016], +[0.7, 1.0999999999999999, 3.3000000000000016], +[0.7999999999999999, 1.0999999999999999, 3.3000000000000016], +[0.8999999999999999, 1.0999999999999999, 3.3000000000000016], +[0.9999999999999999, 1.0999999999999999, 3.3000000000000016], +[1.0999999999999999, 1.0999999999999999, 3.3000000000000016], +[1.2, 1.0999999999999999, 3.3000000000000016], +[1.3, 1.0999999999999999, 3.3000000000000016], +[1.4000000000000001, 1.0999999999999999, 3.3000000000000016], +[1.5000000000000002, 1.0999999999999999, 3.3000000000000016], +[1.6000000000000003, 1.0999999999999999, 3.3000000000000016], +[1.7000000000000004, 1.0999999999999999, 3.3000000000000016], +[1.8000000000000005, 1.0999999999999999, 3.3000000000000016], +[1.9000000000000006, 1.0999999999999999, 3.3000000000000016], +[2.0000000000000004, 1.0999999999999999, 3.3000000000000016], +[2.1000000000000005, 1.0999999999999999, 3.3000000000000016], +[2.2000000000000006, 1.0999999999999999, 3.3000000000000016], +[2.3000000000000007, 1.0999999999999999, 3.3000000000000016], +[2.400000000000001, 1.0999999999999999, 3.3000000000000016], +[2.500000000000001, 1.0999999999999999, 3.3000000000000016], +[2.600000000000001, 1.0999999999999999, 3.3000000000000016], +[2.700000000000001, 1.0999999999999999, 3.3000000000000016], +[2.800000000000001, 1.0999999999999999, 3.3000000000000016], +[2.9000000000000012, 1.0999999999999999, 3.3000000000000016], +[3.0000000000000013, 1.0999999999999999, 3.3000000000000016], +[3.1000000000000014, 1.0999999999999999, 3.3000000000000016], +[3.2000000000000015, 1.0999999999999999, 3.3000000000000016], +[3.3000000000000016, 1.0999999999999999, 3.3000000000000016], +[3.4000000000000017, 1.0999999999999999, 3.3000000000000016], +[0.5, 1.2, 3.3000000000000016], +[0.6, 1.2, 3.3000000000000016], +[0.7, 1.2, 3.3000000000000016], +[0.7999999999999999, 1.2, 3.3000000000000016], +[0.8999999999999999, 1.2, 3.3000000000000016], +[0.9999999999999999, 1.2, 3.3000000000000016], +[1.0999999999999999, 1.2, 3.3000000000000016], +[1.2, 1.2, 3.3000000000000016], +[1.3, 1.2, 3.3000000000000016], +[1.4000000000000001, 1.2, 3.3000000000000016], +[1.5000000000000002, 1.2, 3.3000000000000016], +[1.6000000000000003, 1.2, 3.3000000000000016], +[1.7000000000000004, 1.2, 3.3000000000000016], +[1.8000000000000005, 1.2, 3.3000000000000016], +[1.9000000000000006, 1.2, 3.3000000000000016], +[2.0000000000000004, 1.2, 3.3000000000000016], +[2.1000000000000005, 1.2, 3.3000000000000016], +[2.2000000000000006, 1.2, 3.3000000000000016], +[2.3000000000000007, 1.2, 3.3000000000000016], +[2.400000000000001, 1.2, 3.3000000000000016], +[2.500000000000001, 1.2, 3.3000000000000016], +[2.600000000000001, 1.2, 3.3000000000000016], +[2.700000000000001, 1.2, 3.3000000000000016], +[2.800000000000001, 1.2, 3.3000000000000016], +[2.9000000000000012, 1.2, 3.3000000000000016], +[3.0000000000000013, 1.2, 3.3000000000000016], +[3.1000000000000014, 1.2, 3.3000000000000016], +[3.2000000000000015, 1.2, 3.3000000000000016], +[3.3000000000000016, 1.2, 3.3000000000000016], +[0.6, 1.3, 3.3000000000000016], +[0.7, 1.3, 3.3000000000000016], +[0.7999999999999999, 1.3, 3.3000000000000016], +[0.8999999999999999, 1.3, 3.3000000000000016], +[0.9999999999999999, 1.3, 3.3000000000000016], +[1.0999999999999999, 1.3, 3.3000000000000016], +[1.2, 1.3, 3.3000000000000016], +[1.3, 1.3, 3.3000000000000016], +[1.4000000000000001, 1.3, 3.3000000000000016], +[1.5000000000000002, 1.3, 3.3000000000000016], +[1.6000000000000003, 1.3, 3.3000000000000016], +[1.7000000000000004, 1.3, 3.3000000000000016], +[1.8000000000000005, 1.3, 3.3000000000000016], +[1.9000000000000006, 1.3, 3.3000000000000016], +[2.0000000000000004, 1.3, 3.3000000000000016], +[2.1000000000000005, 1.3, 3.3000000000000016], +[2.2000000000000006, 1.3, 3.3000000000000016], +[2.3000000000000007, 1.3, 3.3000000000000016], +[2.400000000000001, 1.3, 3.3000000000000016], +[2.500000000000001, 1.3, 3.3000000000000016], +[2.600000000000001, 1.3, 3.3000000000000016], +[2.700000000000001, 1.3, 3.3000000000000016], +[2.800000000000001, 1.3, 3.3000000000000016], +[2.9000000000000012, 1.3, 3.3000000000000016], +[3.0000000000000013, 1.3, 3.3000000000000016], +[3.1000000000000014, 1.3, 3.3000000000000016], +[3.2000000000000015, 1.3, 3.3000000000000016], +[3.3000000000000016, 1.3, 3.3000000000000016], +[0.6, 1.4000000000000001, 3.3000000000000016], +[0.7, 1.4000000000000001, 3.3000000000000016], +[0.7999999999999999, 1.4000000000000001, 3.3000000000000016], +[0.8999999999999999, 1.4000000000000001, 3.3000000000000016], +[0.9999999999999999, 1.4000000000000001, 3.3000000000000016], +[1.0999999999999999, 1.4000000000000001, 3.3000000000000016], +[1.2, 1.4000000000000001, 3.3000000000000016], +[1.3, 1.4000000000000001, 3.3000000000000016], +[1.4000000000000001, 1.4000000000000001, 3.3000000000000016], +[1.5000000000000002, 1.4000000000000001, 3.3000000000000016], +[1.6000000000000003, 1.4000000000000001, 3.3000000000000016], +[1.7000000000000004, 1.4000000000000001, 3.3000000000000016], +[1.8000000000000005, 1.4000000000000001, 3.3000000000000016], +[1.9000000000000006, 1.4000000000000001, 3.3000000000000016], +[2.0000000000000004, 1.4000000000000001, 3.3000000000000016], +[2.1000000000000005, 1.4000000000000001, 3.3000000000000016], +[2.2000000000000006, 1.4000000000000001, 3.3000000000000016], +[2.3000000000000007, 1.4000000000000001, 3.3000000000000016], +[2.400000000000001, 1.4000000000000001, 3.3000000000000016], +[2.500000000000001, 1.4000000000000001, 3.3000000000000016], +[2.600000000000001, 1.4000000000000001, 3.3000000000000016], +[2.700000000000001, 1.4000000000000001, 3.3000000000000016], +[2.800000000000001, 1.4000000000000001, 3.3000000000000016], +[2.9000000000000012, 1.4000000000000001, 3.3000000000000016], +[3.0000000000000013, 1.4000000000000001, 3.3000000000000016], +[3.1000000000000014, 1.4000000000000001, 3.3000000000000016], +[3.2000000000000015, 1.4000000000000001, 3.3000000000000016], +[3.3000000000000016, 1.4000000000000001, 3.3000000000000016], +[0, 0, 3.4000000000000017], +[0.1, 0, 3.4000000000000017], +[0.2, 0, 3.4000000000000017], +[0.30000000000000004, 0, 3.4000000000000017], +[0.4, 0, 3.4000000000000017], +[0.5, 0, 3.4000000000000017], +[0.6, 0, 3.4000000000000017], +[0.7, 0, 3.4000000000000017], +[0.7999999999999999, 0, 3.4000000000000017], +[0.8999999999999999, 0, 3.4000000000000017], +[0.9999999999999999, 0, 3.4000000000000017], +[1.0999999999999999, 0, 3.4000000000000017], +[1.2, 0, 3.4000000000000017], +[1.3, 0, 3.4000000000000017], +[1.4000000000000001, 0, 3.4000000000000017], +[1.5000000000000002, 0, 3.4000000000000017], +[1.6000000000000003, 0, 3.4000000000000017], +[1.7000000000000004, 0, 3.4000000000000017], +[1.8000000000000005, 0, 3.4000000000000017], +[1.9000000000000006, 0, 3.4000000000000017], +[2.0000000000000004, 0, 3.4000000000000017], +[2.1000000000000005, 0, 3.4000000000000017], +[2.2000000000000006, 0, 3.4000000000000017], +[2.3000000000000007, 0, 3.4000000000000017], +[2.400000000000001, 0, 3.4000000000000017], +[2.500000000000001, 0, 3.4000000000000017], +[2.600000000000001, 0, 3.4000000000000017], +[2.700000000000001, 0, 3.4000000000000017], +[2.800000000000001, 0, 3.4000000000000017], +[2.9000000000000012, 0, 3.4000000000000017], +[3.0000000000000013, 0, 3.4000000000000017], +[3.1000000000000014, 0, 3.4000000000000017], +[3.2000000000000015, 0, 3.4000000000000017], +[3.3000000000000016, 0, 3.4000000000000017], +[3.4000000000000017, 0, 3.4000000000000017], +[3.5000000000000018, 0, 3.4000000000000017], +[3.600000000000002, 0, 3.4000000000000017], +[3.700000000000002, 0, 3.4000000000000017], +[3.800000000000002, 0, 3.4000000000000017], +[3.900000000000002, 0, 3.4000000000000017], +[0, 0.1, 3.4000000000000017], +[0.1, 0.1, 3.4000000000000017], +[3.800000000000002, 0.1, 3.4000000000000017], +[3.900000000000002, 0.1, 3.4000000000000017], +[0, 0.2, 3.4000000000000017], +[0.1, 0.2, 3.4000000000000017], +[3.800000000000002, 0.2, 3.4000000000000017], +[0.1, 0.30000000000000004, 3.4000000000000017], +[0.2, 0.30000000000000004, 3.4000000000000017], +[3.700000000000002, 0.30000000000000004, 3.4000000000000017], +[3.800000000000002, 0.30000000000000004, 3.4000000000000017], +[0.1, 0.4, 3.4000000000000017], +[0.2, 0.4, 3.4000000000000017], +[3.700000000000002, 0.4, 3.4000000000000017], +[0.2, 0.5, 3.4000000000000017], +[0.30000000000000004, 0.5, 3.4000000000000017], +[3.600000000000002, 0.5, 3.4000000000000017], +[3.700000000000002, 0.5, 3.4000000000000017], +[0.2, 0.6, 3.4000000000000017], +[0.30000000000000004, 0.6, 3.4000000000000017], +[3.600000000000002, 0.6, 3.4000000000000017], +[0.30000000000000004, 0.7, 3.4000000000000017], +[0.4, 0.7, 3.4000000000000017], +[3.5000000000000018, 0.7, 3.4000000000000017], +[3.600000000000002, 0.7, 3.4000000000000017], +[0.30000000000000004, 0.7999999999999999, 3.4000000000000017], +[0.4, 0.7999999999999999, 3.4000000000000017], +[3.5000000000000018, 0.7999999999999999, 3.4000000000000017], +[0.4, 0.8999999999999999, 3.4000000000000017], +[0.5, 0.8999999999999999, 3.4000000000000017], +[0.6, 0.8999999999999999, 3.4000000000000017], +[0.7, 0.8999999999999999, 3.4000000000000017], +[0.7999999999999999, 0.8999999999999999, 3.4000000000000017], +[0.8999999999999999, 0.8999999999999999, 3.4000000000000017], +[0.9999999999999999, 0.8999999999999999, 3.4000000000000017], +[1.0999999999999999, 0.8999999999999999, 3.4000000000000017], +[1.2, 0.8999999999999999, 3.4000000000000017], +[1.3, 0.8999999999999999, 3.4000000000000017], +[1.4000000000000001, 0.8999999999999999, 3.4000000000000017], +[1.5000000000000002, 0.8999999999999999, 3.4000000000000017], +[1.6000000000000003, 0.8999999999999999, 3.4000000000000017], +[1.7000000000000004, 0.8999999999999999, 3.4000000000000017], +[1.8000000000000005, 0.8999999999999999, 3.4000000000000017], +[1.9000000000000006, 0.8999999999999999, 3.4000000000000017], +[2.0000000000000004, 0.8999999999999999, 3.4000000000000017], +[2.1000000000000005, 0.8999999999999999, 3.4000000000000017], +[2.2000000000000006, 0.8999999999999999, 3.4000000000000017], +[2.3000000000000007, 0.8999999999999999, 3.4000000000000017], +[2.400000000000001, 0.8999999999999999, 3.4000000000000017], +[2.500000000000001, 0.8999999999999999, 3.4000000000000017], +[2.600000000000001, 0.8999999999999999, 3.4000000000000017], +[2.700000000000001, 0.8999999999999999, 3.4000000000000017], +[2.800000000000001, 0.8999999999999999, 3.4000000000000017], +[2.9000000000000012, 0.8999999999999999, 3.4000000000000017], +[3.0000000000000013, 0.8999999999999999, 3.4000000000000017], +[3.1000000000000014, 0.8999999999999999, 3.4000000000000017], +[3.2000000000000015, 0.8999999999999999, 3.4000000000000017], +[3.3000000000000016, 0.8999999999999999, 3.4000000000000017], +[3.4000000000000017, 0.8999999999999999, 3.4000000000000017], +[3.5000000000000018, 0.8999999999999999, 3.4000000000000017], +[0.4, 0.9999999999999999, 3.4000000000000017], +[0.5, 0.9999999999999999, 3.4000000000000017], +[0.6, 0.9999999999999999, 3.4000000000000017], +[0.7, 0.9999999999999999, 3.4000000000000017], +[0.7999999999999999, 0.9999999999999999, 3.4000000000000017], +[0.8999999999999999, 0.9999999999999999, 3.4000000000000017], +[0.9999999999999999, 0.9999999999999999, 3.4000000000000017], +[1.0999999999999999, 0.9999999999999999, 3.4000000000000017], +[1.2, 0.9999999999999999, 3.4000000000000017], +[1.3, 0.9999999999999999, 3.4000000000000017], +[1.4000000000000001, 0.9999999999999999, 3.4000000000000017], +[1.5000000000000002, 0.9999999999999999, 3.4000000000000017], +[1.6000000000000003, 0.9999999999999999, 3.4000000000000017], +[1.7000000000000004, 0.9999999999999999, 3.4000000000000017], +[1.8000000000000005, 0.9999999999999999, 3.4000000000000017], +[1.9000000000000006, 0.9999999999999999, 3.4000000000000017], +[2.0000000000000004, 0.9999999999999999, 3.4000000000000017], +[2.1000000000000005, 0.9999999999999999, 3.4000000000000017], +[2.2000000000000006, 0.9999999999999999, 3.4000000000000017], +[2.3000000000000007, 0.9999999999999999, 3.4000000000000017], +[2.400000000000001, 0.9999999999999999, 3.4000000000000017], +[2.500000000000001, 0.9999999999999999, 3.4000000000000017], +[2.600000000000001, 0.9999999999999999, 3.4000000000000017], +[2.700000000000001, 0.9999999999999999, 3.4000000000000017], +[2.800000000000001, 0.9999999999999999, 3.4000000000000017], +[2.9000000000000012, 0.9999999999999999, 3.4000000000000017], +[3.0000000000000013, 0.9999999999999999, 3.4000000000000017], +[3.1000000000000014, 0.9999999999999999, 3.4000000000000017], +[3.2000000000000015, 0.9999999999999999, 3.4000000000000017], +[3.3000000000000016, 0.9999999999999999, 3.4000000000000017], +[3.4000000000000017, 0.9999999999999999, 3.4000000000000017], +[0.5, 1.0999999999999999, 3.4000000000000017], +[0.6, 1.0999999999999999, 3.4000000000000017], +[0.7, 1.0999999999999999, 3.4000000000000017], +[0.7999999999999999, 1.0999999999999999, 3.4000000000000017], +[0.8999999999999999, 1.0999999999999999, 3.4000000000000017], +[0.9999999999999999, 1.0999999999999999, 3.4000000000000017], +[1.0999999999999999, 1.0999999999999999, 3.4000000000000017], +[1.2, 1.0999999999999999, 3.4000000000000017], +[1.3, 1.0999999999999999, 3.4000000000000017], +[1.4000000000000001, 1.0999999999999999, 3.4000000000000017], +[1.5000000000000002, 1.0999999999999999, 3.4000000000000017], +[1.6000000000000003, 1.0999999999999999, 3.4000000000000017], +[1.7000000000000004, 1.0999999999999999, 3.4000000000000017], +[1.8000000000000005, 1.0999999999999999, 3.4000000000000017], +[1.9000000000000006, 1.0999999999999999, 3.4000000000000017], +[2.0000000000000004, 1.0999999999999999, 3.4000000000000017], +[2.1000000000000005, 1.0999999999999999, 3.4000000000000017], +[2.2000000000000006, 1.0999999999999999, 3.4000000000000017], +[2.3000000000000007, 1.0999999999999999, 3.4000000000000017], +[2.400000000000001, 1.0999999999999999, 3.4000000000000017], +[2.500000000000001, 1.0999999999999999, 3.4000000000000017], +[2.600000000000001, 1.0999999999999999, 3.4000000000000017], +[2.700000000000001, 1.0999999999999999, 3.4000000000000017], +[2.800000000000001, 1.0999999999999999, 3.4000000000000017], +[2.9000000000000012, 1.0999999999999999, 3.4000000000000017], +[3.0000000000000013, 1.0999999999999999, 3.4000000000000017], +[3.1000000000000014, 1.0999999999999999, 3.4000000000000017], +[3.2000000000000015, 1.0999999999999999, 3.4000000000000017], +[3.3000000000000016, 1.0999999999999999, 3.4000000000000017], +[3.4000000000000017, 1.0999999999999999, 3.4000000000000017], +[0, 0, 3.5000000000000018], +[0.1, 0, 3.5000000000000018], +[0.2, 0, 3.5000000000000018], +[0.30000000000000004, 0, 3.5000000000000018], +[0.4, 0, 3.5000000000000018], +[0.5, 0, 3.5000000000000018], +[0.6, 0, 3.5000000000000018], +[0.7, 0, 3.5000000000000018], +[0.7999999999999999, 0, 3.5000000000000018], +[0.8999999999999999, 0, 3.5000000000000018], +[0.9999999999999999, 0, 3.5000000000000018], +[1.0999999999999999, 0, 3.5000000000000018], +[1.2, 0, 3.5000000000000018], +[1.3, 0, 3.5000000000000018], +[1.4000000000000001, 0, 3.5000000000000018], +[1.5000000000000002, 0, 3.5000000000000018], +[1.6000000000000003, 0, 3.5000000000000018], +[1.7000000000000004, 0, 3.5000000000000018], +[1.8000000000000005, 0, 3.5000000000000018], +[1.9000000000000006, 0, 3.5000000000000018], +[2.0000000000000004, 0, 3.5000000000000018], +[2.1000000000000005, 0, 3.5000000000000018], +[2.2000000000000006, 0, 3.5000000000000018], +[2.3000000000000007, 0, 3.5000000000000018], +[2.400000000000001, 0, 3.5000000000000018], +[2.500000000000001, 0, 3.5000000000000018], +[2.600000000000001, 0, 3.5000000000000018], +[2.700000000000001, 0, 3.5000000000000018], +[2.800000000000001, 0, 3.5000000000000018], +[2.9000000000000012, 0, 3.5000000000000018], +[3.0000000000000013, 0, 3.5000000000000018], +[3.1000000000000014, 0, 3.5000000000000018], +[3.2000000000000015, 0, 3.5000000000000018], +[3.3000000000000016, 0, 3.5000000000000018], +[3.4000000000000017, 0, 3.5000000000000018], +[3.5000000000000018, 0, 3.5000000000000018], +[3.600000000000002, 0, 3.5000000000000018], +[3.700000000000002, 0, 3.5000000000000018], +[3.800000000000002, 0, 3.5000000000000018], +[3.900000000000002, 0, 3.5000000000000018], +[0, 0.1, 3.5000000000000018], +[0.1, 0.1, 3.5000000000000018], +[3.800000000000002, 0.1, 3.5000000000000018], +[3.900000000000002, 0.1, 3.5000000000000018], +[0, 0.2, 3.5000000000000018], +[0.1, 0.2, 3.5000000000000018], +[3.800000000000002, 0.2, 3.5000000000000018], +[0.1, 0.30000000000000004, 3.5000000000000018], +[0.2, 0.30000000000000004, 3.5000000000000018], +[3.700000000000002, 0.30000000000000004, 3.5000000000000018], +[3.800000000000002, 0.30000000000000004, 3.5000000000000018], +[0.1, 0.4, 3.5000000000000018], +[0.2, 0.4, 3.5000000000000018], +[3.700000000000002, 0.4, 3.5000000000000018], +[0.2, 0.5, 3.5000000000000018], +[0.30000000000000004, 0.5, 3.5000000000000018], +[3.600000000000002, 0.5, 3.5000000000000018], +[3.700000000000002, 0.5, 3.5000000000000018], +[0.2, 0.6, 3.5000000000000018], +[0.30000000000000004, 0.6, 3.5000000000000018], +[3.600000000000002, 0.6, 3.5000000000000018], +[0.30000000000000004, 0.7, 3.5000000000000018], +[0.4, 0.7, 3.5000000000000018], +[0.5, 0.7, 3.5000000000000018], +[0.6, 0.7, 3.5000000000000018], +[0.7, 0.7, 3.5000000000000018], +[0.7999999999999999, 0.7, 3.5000000000000018], +[0.8999999999999999, 0.7, 3.5000000000000018], +[0.9999999999999999, 0.7, 3.5000000000000018], +[1.0999999999999999, 0.7, 3.5000000000000018], +[1.2, 0.7, 3.5000000000000018], +[1.3, 0.7, 3.5000000000000018], +[1.4000000000000001, 0.7, 3.5000000000000018], +[1.5000000000000002, 0.7, 3.5000000000000018], +[1.6000000000000003, 0.7, 3.5000000000000018], +[1.7000000000000004, 0.7, 3.5000000000000018], +[1.8000000000000005, 0.7, 3.5000000000000018], +[1.9000000000000006, 0.7, 3.5000000000000018], +[2.0000000000000004, 0.7, 3.5000000000000018], +[2.1000000000000005, 0.7, 3.5000000000000018], +[2.2000000000000006, 0.7, 3.5000000000000018], +[2.3000000000000007, 0.7, 3.5000000000000018], +[2.400000000000001, 0.7, 3.5000000000000018], +[2.500000000000001, 0.7, 3.5000000000000018], +[2.600000000000001, 0.7, 3.5000000000000018], +[2.700000000000001, 0.7, 3.5000000000000018], +[2.800000000000001, 0.7, 3.5000000000000018], +[2.9000000000000012, 0.7, 3.5000000000000018], +[3.0000000000000013, 0.7, 3.5000000000000018], +[3.1000000000000014, 0.7, 3.5000000000000018], +[3.2000000000000015, 0.7, 3.5000000000000018], +[3.3000000000000016, 0.7, 3.5000000000000018], +[3.4000000000000017, 0.7, 3.5000000000000018], +[3.5000000000000018, 0.7, 3.5000000000000018], +[3.600000000000002, 0.7, 3.5000000000000018], +[0.30000000000000004, 0.7999999999999999, 3.5000000000000018], +[0.4, 0.7999999999999999, 3.5000000000000018], +[0.5, 0.7999999999999999, 3.5000000000000018], +[0.6, 0.7999999999999999, 3.5000000000000018], +[0.7, 0.7999999999999999, 3.5000000000000018], +[0.7999999999999999, 0.7999999999999999, 3.5000000000000018], +[0.8999999999999999, 0.7999999999999999, 3.5000000000000018], +[0.9999999999999999, 0.7999999999999999, 3.5000000000000018], +[1.0999999999999999, 0.7999999999999999, 3.5000000000000018], +[1.2, 0.7999999999999999, 3.5000000000000018], +[1.3, 0.7999999999999999, 3.5000000000000018], +[1.4000000000000001, 0.7999999999999999, 3.5000000000000018], +[1.5000000000000002, 0.7999999999999999, 3.5000000000000018], +[1.6000000000000003, 0.7999999999999999, 3.5000000000000018], +[1.7000000000000004, 0.7999999999999999, 3.5000000000000018], +[1.8000000000000005, 0.7999999999999999, 3.5000000000000018], +[1.9000000000000006, 0.7999999999999999, 3.5000000000000018], +[2.0000000000000004, 0.7999999999999999, 3.5000000000000018], +[2.1000000000000005, 0.7999999999999999, 3.5000000000000018], +[2.2000000000000006, 0.7999999999999999, 3.5000000000000018], +[2.3000000000000007, 0.7999999999999999, 3.5000000000000018], +[2.400000000000001, 0.7999999999999999, 3.5000000000000018], +[2.500000000000001, 0.7999999999999999, 3.5000000000000018], +[2.600000000000001, 0.7999999999999999, 3.5000000000000018], +[2.700000000000001, 0.7999999999999999, 3.5000000000000018], +[2.800000000000001, 0.7999999999999999, 3.5000000000000018], +[2.9000000000000012, 0.7999999999999999, 3.5000000000000018], +[3.0000000000000013, 0.7999999999999999, 3.5000000000000018], +[3.1000000000000014, 0.7999999999999999, 3.5000000000000018], +[3.2000000000000015, 0.7999999999999999, 3.5000000000000018], +[3.3000000000000016, 0.7999999999999999, 3.5000000000000018], +[3.4000000000000017, 0.7999999999999999, 3.5000000000000018], +[3.5000000000000018, 0.7999999999999999, 3.5000000000000018], +[0.4, 0.8999999999999999, 3.5000000000000018], +[0.5, 0.8999999999999999, 3.5000000000000018], +[0.6, 0.8999999999999999, 3.5000000000000018], +[0.7, 0.8999999999999999, 3.5000000000000018], +[0.7999999999999999, 0.8999999999999999, 3.5000000000000018], +[0.8999999999999999, 0.8999999999999999, 3.5000000000000018], +[0.9999999999999999, 0.8999999999999999, 3.5000000000000018], +[1.0999999999999999, 0.8999999999999999, 3.5000000000000018], +[1.2, 0.8999999999999999, 3.5000000000000018], +[1.3, 0.8999999999999999, 3.5000000000000018], +[1.4000000000000001, 0.8999999999999999, 3.5000000000000018], +[1.5000000000000002, 0.8999999999999999, 3.5000000000000018], +[1.6000000000000003, 0.8999999999999999, 3.5000000000000018], +[1.7000000000000004, 0.8999999999999999, 3.5000000000000018], +[1.8000000000000005, 0.8999999999999999, 3.5000000000000018], +[1.9000000000000006, 0.8999999999999999, 3.5000000000000018], +[2.0000000000000004, 0.8999999999999999, 3.5000000000000018], +[2.1000000000000005, 0.8999999999999999, 3.5000000000000018], +[2.2000000000000006, 0.8999999999999999, 3.5000000000000018], +[2.3000000000000007, 0.8999999999999999, 3.5000000000000018], +[2.400000000000001, 0.8999999999999999, 3.5000000000000018], +[2.500000000000001, 0.8999999999999999, 3.5000000000000018], +[2.600000000000001, 0.8999999999999999, 3.5000000000000018], +[2.700000000000001, 0.8999999999999999, 3.5000000000000018], +[2.800000000000001, 0.8999999999999999, 3.5000000000000018], +[2.9000000000000012, 0.8999999999999999, 3.5000000000000018], +[3.0000000000000013, 0.8999999999999999, 3.5000000000000018], +[3.1000000000000014, 0.8999999999999999, 3.5000000000000018], +[3.2000000000000015, 0.8999999999999999, 3.5000000000000018], +[3.3000000000000016, 0.8999999999999999, 3.5000000000000018], +[3.4000000000000017, 0.8999999999999999, 3.5000000000000018], +[3.5000000000000018, 0.8999999999999999, 3.5000000000000018], +[0, 0, 3.600000000000002], +[0.1, 0, 3.600000000000002], +[0.2, 0, 3.600000000000002], +[0.30000000000000004, 0, 3.600000000000002], +[0.4, 0, 3.600000000000002], +[0.5, 0, 3.600000000000002], +[0.6, 0, 3.600000000000002], +[0.7, 0, 3.600000000000002], +[0.7999999999999999, 0, 3.600000000000002], +[0.8999999999999999, 0, 3.600000000000002], +[0.9999999999999999, 0, 3.600000000000002], +[1.0999999999999999, 0, 3.600000000000002], +[1.2, 0, 3.600000000000002], +[1.3, 0, 3.600000000000002], +[1.4000000000000001, 0, 3.600000000000002], +[1.5000000000000002, 0, 3.600000000000002], +[1.6000000000000003, 0, 3.600000000000002], +[1.7000000000000004, 0, 3.600000000000002], +[1.8000000000000005, 0, 3.600000000000002], +[1.9000000000000006, 0, 3.600000000000002], +[2.0000000000000004, 0, 3.600000000000002], +[2.1000000000000005, 0, 3.600000000000002], +[2.2000000000000006, 0, 3.600000000000002], +[2.3000000000000007, 0, 3.600000000000002], +[2.400000000000001, 0, 3.600000000000002], +[2.500000000000001, 0, 3.600000000000002], +[2.600000000000001, 0, 3.600000000000002], +[2.700000000000001, 0, 3.600000000000002], +[2.800000000000001, 0, 3.600000000000002], +[2.9000000000000012, 0, 3.600000000000002], +[3.0000000000000013, 0, 3.600000000000002], +[3.1000000000000014, 0, 3.600000000000002], +[3.2000000000000015, 0, 3.600000000000002], +[3.3000000000000016, 0, 3.600000000000002], +[3.4000000000000017, 0, 3.600000000000002], +[3.5000000000000018, 0, 3.600000000000002], +[3.600000000000002, 0, 3.600000000000002], +[3.700000000000002, 0, 3.600000000000002], +[3.800000000000002, 0, 3.600000000000002], +[3.900000000000002, 0, 3.600000000000002], +[0, 0.1, 3.600000000000002], +[0.1, 0.1, 3.600000000000002], +[3.800000000000002, 0.1, 3.600000000000002], +[3.900000000000002, 0.1, 3.600000000000002], +[0, 0.2, 3.600000000000002], +[0.1, 0.2, 3.600000000000002], +[3.800000000000002, 0.2, 3.600000000000002], +[0.1, 0.30000000000000004, 3.600000000000002], +[0.2, 0.30000000000000004, 3.600000000000002], +[3.700000000000002, 0.30000000000000004, 3.600000000000002], +[3.800000000000002, 0.30000000000000004, 3.600000000000002], +[0.1, 0.4, 3.600000000000002], +[0.2, 0.4, 3.600000000000002], +[3.700000000000002, 0.4, 3.600000000000002], +[0.2, 0.5, 3.600000000000002], +[0.30000000000000004, 0.5, 3.600000000000002], +[0.4, 0.5, 3.600000000000002], +[0.5, 0.5, 3.600000000000002], +[0.6, 0.5, 3.600000000000002], +[0.7, 0.5, 3.600000000000002], +[0.7999999999999999, 0.5, 3.600000000000002], +[0.8999999999999999, 0.5, 3.600000000000002], +[0.9999999999999999, 0.5, 3.600000000000002], +[1.0999999999999999, 0.5, 3.600000000000002], +[1.2, 0.5, 3.600000000000002], +[1.3, 0.5, 3.600000000000002], +[1.4000000000000001, 0.5, 3.600000000000002], +[1.5000000000000002, 0.5, 3.600000000000002], +[1.6000000000000003, 0.5, 3.600000000000002], +[1.7000000000000004, 0.5, 3.600000000000002], +[1.8000000000000005, 0.5, 3.600000000000002], +[1.9000000000000006, 0.5, 3.600000000000002], +[2.0000000000000004, 0.5, 3.600000000000002], +[2.1000000000000005, 0.5, 3.600000000000002], +[2.2000000000000006, 0.5, 3.600000000000002], +[2.3000000000000007, 0.5, 3.600000000000002], +[2.400000000000001, 0.5, 3.600000000000002], +[2.500000000000001, 0.5, 3.600000000000002], +[2.600000000000001, 0.5, 3.600000000000002], +[2.700000000000001, 0.5, 3.600000000000002], +[2.800000000000001, 0.5, 3.600000000000002], +[2.9000000000000012, 0.5, 3.600000000000002], +[3.0000000000000013, 0.5, 3.600000000000002], +[3.1000000000000014, 0.5, 3.600000000000002], +[3.2000000000000015, 0.5, 3.600000000000002], +[3.3000000000000016, 0.5, 3.600000000000002], +[3.4000000000000017, 0.5, 3.600000000000002], +[3.5000000000000018, 0.5, 3.600000000000002], +[3.600000000000002, 0.5, 3.600000000000002], +[3.700000000000002, 0.5, 3.600000000000002], +[0.2, 0.6, 3.600000000000002], +[0.30000000000000004, 0.6, 3.600000000000002], +[0.4, 0.6, 3.600000000000002], +[0.5, 0.6, 3.600000000000002], +[0.6, 0.6, 3.600000000000002], +[0.7, 0.6, 3.600000000000002], +[0.7999999999999999, 0.6, 3.600000000000002], +[0.8999999999999999, 0.6, 3.600000000000002], +[0.9999999999999999, 0.6, 3.600000000000002], +[1.0999999999999999, 0.6, 3.600000000000002], +[1.2, 0.6, 3.600000000000002], +[1.3, 0.6, 3.600000000000002], +[1.4000000000000001, 0.6, 3.600000000000002], +[1.5000000000000002, 0.6, 3.600000000000002], +[1.6000000000000003, 0.6, 3.600000000000002], +[1.7000000000000004, 0.6, 3.600000000000002], +[1.8000000000000005, 0.6, 3.600000000000002], +[1.9000000000000006, 0.6, 3.600000000000002], +[2.0000000000000004, 0.6, 3.600000000000002], +[2.1000000000000005, 0.6, 3.600000000000002], +[2.2000000000000006, 0.6, 3.600000000000002], +[2.3000000000000007, 0.6, 3.600000000000002], +[2.400000000000001, 0.6, 3.600000000000002], +[2.500000000000001, 0.6, 3.600000000000002], +[2.600000000000001, 0.6, 3.600000000000002], +[2.700000000000001, 0.6, 3.600000000000002], +[2.800000000000001, 0.6, 3.600000000000002], +[2.9000000000000012, 0.6, 3.600000000000002], +[3.0000000000000013, 0.6, 3.600000000000002], +[3.1000000000000014, 0.6, 3.600000000000002], +[3.2000000000000015, 0.6, 3.600000000000002], +[3.3000000000000016, 0.6, 3.600000000000002], +[3.4000000000000017, 0.6, 3.600000000000002], +[3.5000000000000018, 0.6, 3.600000000000002], +[3.600000000000002, 0.6, 3.600000000000002], +[0.30000000000000004, 0.7, 3.600000000000002], +[0.4, 0.7, 3.600000000000002], +[0.5, 0.7, 3.600000000000002], +[0.6, 0.7, 3.600000000000002], +[0.7, 0.7, 3.600000000000002], +[0.7999999999999999, 0.7, 3.600000000000002], +[0.8999999999999999, 0.7, 3.600000000000002], +[0.9999999999999999, 0.7, 3.600000000000002], +[1.0999999999999999, 0.7, 3.600000000000002], +[1.2, 0.7, 3.600000000000002], +[1.3, 0.7, 3.600000000000002], +[1.4000000000000001, 0.7, 3.600000000000002], +[1.5000000000000002, 0.7, 3.600000000000002], +[1.6000000000000003, 0.7, 3.600000000000002], +[1.7000000000000004, 0.7, 3.600000000000002], +[1.8000000000000005, 0.7, 3.600000000000002], +[1.9000000000000006, 0.7, 3.600000000000002], +[2.0000000000000004, 0.7, 3.600000000000002], +[2.1000000000000005, 0.7, 3.600000000000002], +[2.2000000000000006, 0.7, 3.600000000000002], +[2.3000000000000007, 0.7, 3.600000000000002], +[2.400000000000001, 0.7, 3.600000000000002], +[2.500000000000001, 0.7, 3.600000000000002], +[2.600000000000001, 0.7, 3.600000000000002], +[2.700000000000001, 0.7, 3.600000000000002], +[2.800000000000001, 0.7, 3.600000000000002], +[2.9000000000000012, 0.7, 3.600000000000002], +[3.0000000000000013, 0.7, 3.600000000000002], +[3.1000000000000014, 0.7, 3.600000000000002], +[3.2000000000000015, 0.7, 3.600000000000002], +[3.3000000000000016, 0.7, 3.600000000000002], +[3.4000000000000017, 0.7, 3.600000000000002], +[3.5000000000000018, 0.7, 3.600000000000002], +[3.600000000000002, 0.7, 3.600000000000002], +[0, 0, 3.700000000000002], +[0.1, 0, 3.700000000000002], +[0.2, 0, 3.700000000000002], +[0.30000000000000004, 0, 3.700000000000002], +[0.4, 0, 3.700000000000002], +[0.5, 0, 3.700000000000002], +[0.6, 0, 3.700000000000002], +[0.7, 0, 3.700000000000002], +[0.7999999999999999, 0, 3.700000000000002], +[0.8999999999999999, 0, 3.700000000000002], +[0.9999999999999999, 0, 3.700000000000002], +[1.0999999999999999, 0, 3.700000000000002], +[1.2, 0, 3.700000000000002], +[1.3, 0, 3.700000000000002], +[1.4000000000000001, 0, 3.700000000000002], +[1.5000000000000002, 0, 3.700000000000002], +[1.6000000000000003, 0, 3.700000000000002], +[1.7000000000000004, 0, 3.700000000000002], +[1.8000000000000005, 0, 3.700000000000002], +[1.9000000000000006, 0, 3.700000000000002], +[2.0000000000000004, 0, 3.700000000000002], +[2.1000000000000005, 0, 3.700000000000002], +[2.2000000000000006, 0, 3.700000000000002], +[2.3000000000000007, 0, 3.700000000000002], +[2.400000000000001, 0, 3.700000000000002], +[2.500000000000001, 0, 3.700000000000002], +[2.600000000000001, 0, 3.700000000000002], +[2.700000000000001, 0, 3.700000000000002], +[2.800000000000001, 0, 3.700000000000002], +[2.9000000000000012, 0, 3.700000000000002], +[3.0000000000000013, 0, 3.700000000000002], +[3.1000000000000014, 0, 3.700000000000002], +[3.2000000000000015, 0, 3.700000000000002], +[3.3000000000000016, 0, 3.700000000000002], +[3.4000000000000017, 0, 3.700000000000002], +[3.5000000000000018, 0, 3.700000000000002], +[3.600000000000002, 0, 3.700000000000002], +[3.700000000000002, 0, 3.700000000000002], +[3.800000000000002, 0, 3.700000000000002], +[3.900000000000002, 0, 3.700000000000002], +[0, 0.1, 3.700000000000002], +[0.1, 0.1, 3.700000000000002], +[3.800000000000002, 0.1, 3.700000000000002], +[3.900000000000002, 0.1, 3.700000000000002], +[0, 0.2, 3.700000000000002], +[0.1, 0.2, 3.700000000000002], +[3.800000000000002, 0.2, 3.700000000000002], +[0.1, 0.30000000000000004, 3.700000000000002], +[0.2, 0.30000000000000004, 3.700000000000002], +[0.30000000000000004, 0.30000000000000004, 3.700000000000002], +[0.4, 0.30000000000000004, 3.700000000000002], +[0.5, 0.30000000000000004, 3.700000000000002], +[0.6, 0.30000000000000004, 3.700000000000002], +[0.7, 0.30000000000000004, 3.700000000000002], +[0.7999999999999999, 0.30000000000000004, 3.700000000000002], +[0.8999999999999999, 0.30000000000000004, 3.700000000000002], +[0.9999999999999999, 0.30000000000000004, 3.700000000000002], +[1.0999999999999999, 0.30000000000000004, 3.700000000000002], +[1.2, 0.30000000000000004, 3.700000000000002], +[1.3, 0.30000000000000004, 3.700000000000002], +[1.4000000000000001, 0.30000000000000004, 3.700000000000002], +[1.5000000000000002, 0.30000000000000004, 3.700000000000002], +[1.6000000000000003, 0.30000000000000004, 3.700000000000002], +[1.7000000000000004, 0.30000000000000004, 3.700000000000002], +[1.8000000000000005, 0.30000000000000004, 3.700000000000002], +[1.9000000000000006, 0.30000000000000004, 3.700000000000002], +[2.0000000000000004, 0.30000000000000004, 3.700000000000002], +[2.1000000000000005, 0.30000000000000004, 3.700000000000002], +[2.2000000000000006, 0.30000000000000004, 3.700000000000002], +[2.3000000000000007, 0.30000000000000004, 3.700000000000002], +[2.400000000000001, 0.30000000000000004, 3.700000000000002], +[2.500000000000001, 0.30000000000000004, 3.700000000000002], +[2.600000000000001, 0.30000000000000004, 3.700000000000002], +[2.700000000000001, 0.30000000000000004, 3.700000000000002], +[2.800000000000001, 0.30000000000000004, 3.700000000000002], +[2.9000000000000012, 0.30000000000000004, 3.700000000000002], +[3.0000000000000013, 0.30000000000000004, 3.700000000000002], +[3.1000000000000014, 0.30000000000000004, 3.700000000000002], +[3.2000000000000015, 0.30000000000000004, 3.700000000000002], +[3.3000000000000016, 0.30000000000000004, 3.700000000000002], +[3.4000000000000017, 0.30000000000000004, 3.700000000000002], +[3.5000000000000018, 0.30000000000000004, 3.700000000000002], +[3.600000000000002, 0.30000000000000004, 3.700000000000002], +[3.700000000000002, 0.30000000000000004, 3.700000000000002], +[3.800000000000002, 0.30000000000000004, 3.700000000000002], +[0.1, 0.4, 3.700000000000002], +[0.2, 0.4, 3.700000000000002], +[0.30000000000000004, 0.4, 3.700000000000002], +[0.4, 0.4, 3.700000000000002], +[0.5, 0.4, 3.700000000000002], +[0.6, 0.4, 3.700000000000002], +[0.7, 0.4, 3.700000000000002], +[0.7999999999999999, 0.4, 3.700000000000002], +[0.8999999999999999, 0.4, 3.700000000000002], +[0.9999999999999999, 0.4, 3.700000000000002], +[1.0999999999999999, 0.4, 3.700000000000002], +[1.2, 0.4, 3.700000000000002], +[1.3, 0.4, 3.700000000000002], +[1.4000000000000001, 0.4, 3.700000000000002], +[1.5000000000000002, 0.4, 3.700000000000002], +[1.6000000000000003, 0.4, 3.700000000000002], +[1.7000000000000004, 0.4, 3.700000000000002], +[1.8000000000000005, 0.4, 3.700000000000002], +[1.9000000000000006, 0.4, 3.700000000000002], +[2.0000000000000004, 0.4, 3.700000000000002], +[2.1000000000000005, 0.4, 3.700000000000002], +[2.2000000000000006, 0.4, 3.700000000000002], +[2.3000000000000007, 0.4, 3.700000000000002], +[2.400000000000001, 0.4, 3.700000000000002], +[2.500000000000001, 0.4, 3.700000000000002], +[2.600000000000001, 0.4, 3.700000000000002], +[2.700000000000001, 0.4, 3.700000000000002], +[2.800000000000001, 0.4, 3.700000000000002], +[2.9000000000000012, 0.4, 3.700000000000002], +[3.0000000000000013, 0.4, 3.700000000000002], +[3.1000000000000014, 0.4, 3.700000000000002], +[3.2000000000000015, 0.4, 3.700000000000002], +[3.3000000000000016, 0.4, 3.700000000000002], +[3.4000000000000017, 0.4, 3.700000000000002], +[3.5000000000000018, 0.4, 3.700000000000002], +[3.600000000000002, 0.4, 3.700000000000002], +[3.700000000000002, 0.4, 3.700000000000002], +[0.2, 0.5, 3.700000000000002], +[0.30000000000000004, 0.5, 3.700000000000002], +[0.4, 0.5, 3.700000000000002], +[0.5, 0.5, 3.700000000000002], +[0.6, 0.5, 3.700000000000002], +[0.7, 0.5, 3.700000000000002], +[0.7999999999999999, 0.5, 3.700000000000002], +[0.8999999999999999, 0.5, 3.700000000000002], +[0.9999999999999999, 0.5, 3.700000000000002], +[1.0999999999999999, 0.5, 3.700000000000002], +[1.2, 0.5, 3.700000000000002], +[1.3, 0.5, 3.700000000000002], +[1.4000000000000001, 0.5, 3.700000000000002], +[1.5000000000000002, 0.5, 3.700000000000002], +[1.6000000000000003, 0.5, 3.700000000000002], +[1.7000000000000004, 0.5, 3.700000000000002], +[1.8000000000000005, 0.5, 3.700000000000002], +[1.9000000000000006, 0.5, 3.700000000000002], +[2.0000000000000004, 0.5, 3.700000000000002], +[2.1000000000000005, 0.5, 3.700000000000002], +[2.2000000000000006, 0.5, 3.700000000000002], +[2.3000000000000007, 0.5, 3.700000000000002], +[2.400000000000001, 0.5, 3.700000000000002], +[2.500000000000001, 0.5, 3.700000000000002], +[2.600000000000001, 0.5, 3.700000000000002], +[2.700000000000001, 0.5, 3.700000000000002], +[2.800000000000001, 0.5, 3.700000000000002], +[2.9000000000000012, 0.5, 3.700000000000002], +[3.0000000000000013, 0.5, 3.700000000000002], +[3.1000000000000014, 0.5, 3.700000000000002], +[3.2000000000000015, 0.5, 3.700000000000002], +[3.3000000000000016, 0.5, 3.700000000000002], +[3.4000000000000017, 0.5, 3.700000000000002], +[3.5000000000000018, 0.5, 3.700000000000002], +[3.600000000000002, 0.5, 3.700000000000002], +[3.700000000000002, 0.5, 3.700000000000002], +[0, 0, 3.800000000000002], +[0.1, 0, 3.800000000000002], +[0.2, 0, 3.800000000000002], +[0.30000000000000004, 0, 3.800000000000002], +[0.4, 0, 3.800000000000002], +[0.5, 0, 3.800000000000002], +[0.6, 0, 3.800000000000002], +[0.7, 0, 3.800000000000002], +[0.7999999999999999, 0, 3.800000000000002], +[0.8999999999999999, 0, 3.800000000000002], +[0.9999999999999999, 0, 3.800000000000002], +[1.0999999999999999, 0, 3.800000000000002], +[1.2, 0, 3.800000000000002], +[1.3, 0, 3.800000000000002], +[1.4000000000000001, 0, 3.800000000000002], +[1.5000000000000002, 0, 3.800000000000002], +[1.6000000000000003, 0, 3.800000000000002], +[1.7000000000000004, 0, 3.800000000000002], +[1.8000000000000005, 0, 3.800000000000002], +[1.9000000000000006, 0, 3.800000000000002], +[2.0000000000000004, 0, 3.800000000000002], +[2.1000000000000005, 0, 3.800000000000002], +[2.2000000000000006, 0, 3.800000000000002], +[2.3000000000000007, 0, 3.800000000000002], +[2.400000000000001, 0, 3.800000000000002], +[2.500000000000001, 0, 3.800000000000002], +[2.600000000000001, 0, 3.800000000000002], +[2.700000000000001, 0, 3.800000000000002], +[2.800000000000001, 0, 3.800000000000002], +[2.9000000000000012, 0, 3.800000000000002], +[3.0000000000000013, 0, 3.800000000000002], +[3.1000000000000014, 0, 3.800000000000002], +[3.2000000000000015, 0, 3.800000000000002], +[3.3000000000000016, 0, 3.800000000000002], +[3.4000000000000017, 0, 3.800000000000002], +[3.5000000000000018, 0, 3.800000000000002], +[3.600000000000002, 0, 3.800000000000002], +[3.700000000000002, 0, 3.800000000000002], +[3.800000000000002, 0, 3.800000000000002], +[3.900000000000002, 0, 3.800000000000002], +[0, 0.1, 3.800000000000002], +[0.1, 0.1, 3.800000000000002], +[0.2, 0.1, 3.800000000000002], +[0.30000000000000004, 0.1, 3.800000000000002], +[0.4, 0.1, 3.800000000000002], +[0.5, 0.1, 3.800000000000002], +[0.6, 0.1, 3.800000000000002], +[0.7, 0.1, 3.800000000000002], +[0.7999999999999999, 0.1, 3.800000000000002], +[0.8999999999999999, 0.1, 3.800000000000002], +[0.9999999999999999, 0.1, 3.800000000000002], +[1.0999999999999999, 0.1, 3.800000000000002], +[1.2, 0.1, 3.800000000000002], +[1.3, 0.1, 3.800000000000002], +[1.4000000000000001, 0.1, 3.800000000000002], +[1.5000000000000002, 0.1, 3.800000000000002], +[1.6000000000000003, 0.1, 3.800000000000002], +[1.7000000000000004, 0.1, 3.800000000000002], +[1.8000000000000005, 0.1, 3.800000000000002], +[1.9000000000000006, 0.1, 3.800000000000002], +[2.0000000000000004, 0.1, 3.800000000000002], +[2.1000000000000005, 0.1, 3.800000000000002], +[2.2000000000000006, 0.1, 3.800000000000002], +[2.3000000000000007, 0.1, 3.800000000000002], +[2.400000000000001, 0.1, 3.800000000000002], +[2.500000000000001, 0.1, 3.800000000000002], +[2.600000000000001, 0.1, 3.800000000000002], +[2.700000000000001, 0.1, 3.800000000000002], +[2.800000000000001, 0.1, 3.800000000000002], +[2.9000000000000012, 0.1, 3.800000000000002], +[3.0000000000000013, 0.1, 3.800000000000002], +[3.1000000000000014, 0.1, 3.800000000000002], +[3.2000000000000015, 0.1, 3.800000000000002], +[3.3000000000000016, 0.1, 3.800000000000002], +[3.4000000000000017, 0.1, 3.800000000000002], +[3.5000000000000018, 0.1, 3.800000000000002], +[3.600000000000002, 0.1, 3.800000000000002], +[3.700000000000002, 0.1, 3.800000000000002], +[3.800000000000002, 0.1, 3.800000000000002], +[3.900000000000002, 0.1, 3.800000000000002], +[0, 0.2, 3.800000000000002], +[0.1, 0.2, 3.800000000000002], +[0.2, 0.2, 3.800000000000002], +[0.30000000000000004, 0.2, 3.800000000000002], +[0.4, 0.2, 3.800000000000002], +[0.5, 0.2, 3.800000000000002], +[0.6, 0.2, 3.800000000000002], +[0.7, 0.2, 3.800000000000002], +[0.7999999999999999, 0.2, 3.800000000000002], +[0.8999999999999999, 0.2, 3.800000000000002], +[0.9999999999999999, 0.2, 3.800000000000002], +[1.0999999999999999, 0.2, 3.800000000000002], +[1.2, 0.2, 3.800000000000002], +[1.3, 0.2, 3.800000000000002], +[1.4000000000000001, 0.2, 3.800000000000002], +[1.5000000000000002, 0.2, 3.800000000000002], +[1.6000000000000003, 0.2, 3.800000000000002], +[1.7000000000000004, 0.2, 3.800000000000002], +[1.8000000000000005, 0.2, 3.800000000000002], +[1.9000000000000006, 0.2, 3.800000000000002], +[2.0000000000000004, 0.2, 3.800000000000002], +[2.1000000000000005, 0.2, 3.800000000000002], +[2.2000000000000006, 0.2, 3.800000000000002], +[2.3000000000000007, 0.2, 3.800000000000002], +[2.400000000000001, 0.2, 3.800000000000002], +[2.500000000000001, 0.2, 3.800000000000002], +[2.600000000000001, 0.2, 3.800000000000002], +[2.700000000000001, 0.2, 3.800000000000002], +[2.800000000000001, 0.2, 3.800000000000002], +[2.9000000000000012, 0.2, 3.800000000000002], +[3.0000000000000013, 0.2, 3.800000000000002], +[3.1000000000000014, 0.2, 3.800000000000002], +[3.2000000000000015, 0.2, 3.800000000000002], +[3.3000000000000016, 0.2, 3.800000000000002], +[3.4000000000000017, 0.2, 3.800000000000002], +[3.5000000000000018, 0.2, 3.800000000000002], +[3.600000000000002, 0.2, 3.800000000000002], +[3.700000000000002, 0.2, 3.800000000000002], +[3.800000000000002, 0.2, 3.800000000000002], +[0.1, 0.30000000000000004, 3.800000000000002], +[0.2, 0.30000000000000004, 3.800000000000002], +[0.30000000000000004, 0.30000000000000004, 3.800000000000002], +[0.4, 0.30000000000000004, 3.800000000000002], +[0.5, 0.30000000000000004, 3.800000000000002], +[0.6, 0.30000000000000004, 3.800000000000002], +[0.7, 0.30000000000000004, 3.800000000000002], +[0.7999999999999999, 0.30000000000000004, 3.800000000000002], +[0.8999999999999999, 0.30000000000000004, 3.800000000000002], +[0.9999999999999999, 0.30000000000000004, 3.800000000000002], +[1.0999999999999999, 0.30000000000000004, 3.800000000000002], +[1.2, 0.30000000000000004, 3.800000000000002], +[1.3, 0.30000000000000004, 3.800000000000002], +[1.4000000000000001, 0.30000000000000004, 3.800000000000002], +[1.5000000000000002, 0.30000000000000004, 3.800000000000002], +[1.6000000000000003, 0.30000000000000004, 3.800000000000002], +[1.7000000000000004, 0.30000000000000004, 3.800000000000002], +[1.8000000000000005, 0.30000000000000004, 3.800000000000002], +[1.9000000000000006, 0.30000000000000004, 3.800000000000002], +[2.0000000000000004, 0.30000000000000004, 3.800000000000002], +[2.1000000000000005, 0.30000000000000004, 3.800000000000002], +[2.2000000000000006, 0.30000000000000004, 3.800000000000002], +[2.3000000000000007, 0.30000000000000004, 3.800000000000002], +[2.400000000000001, 0.30000000000000004, 3.800000000000002], +[2.500000000000001, 0.30000000000000004, 3.800000000000002], +[2.600000000000001, 0.30000000000000004, 3.800000000000002], +[2.700000000000001, 0.30000000000000004, 3.800000000000002], +[2.800000000000001, 0.30000000000000004, 3.800000000000002], +[2.9000000000000012, 0.30000000000000004, 3.800000000000002], +[3.0000000000000013, 0.30000000000000004, 3.800000000000002], +[3.1000000000000014, 0.30000000000000004, 3.800000000000002], +[3.2000000000000015, 0.30000000000000004, 3.800000000000002], +[3.3000000000000016, 0.30000000000000004, 3.800000000000002], +[3.4000000000000017, 0.30000000000000004, 3.800000000000002], +[3.5000000000000018, 0.30000000000000004, 3.800000000000002], +[3.600000000000002, 0.30000000000000004, 3.800000000000002], +[3.700000000000002, 0.30000000000000004, 3.800000000000002], +[3.800000000000002, 0.30000000000000004, 3.800000000000002], +[0, 0, 3.900000000000002], +[0.1, 0, 3.900000000000002], +[0.2, 0, 3.900000000000002], +[0.30000000000000004, 0, 3.900000000000002], +[0.4, 0, 3.900000000000002], +[0.5, 0, 3.900000000000002], +[0.6, 0, 3.900000000000002], +[0.7, 0, 3.900000000000002], +[0.7999999999999999, 0, 3.900000000000002], +[0.8999999999999999, 0, 3.900000000000002], +[0.9999999999999999, 0, 3.900000000000002], +[1.0999999999999999, 0, 3.900000000000002], +[1.2, 0, 3.900000000000002], +[1.3, 0, 3.900000000000002], +[1.4000000000000001, 0, 3.900000000000002], +[1.5000000000000002, 0, 3.900000000000002], +[1.6000000000000003, 0, 3.900000000000002], +[1.7000000000000004, 0, 3.900000000000002], +[1.8000000000000005, 0, 3.900000000000002], +[1.9000000000000006, 0, 3.900000000000002], +[2.0000000000000004, 0, 3.900000000000002], +[2.1000000000000005, 0, 3.900000000000002], +[2.2000000000000006, 0, 3.900000000000002], +[2.3000000000000007, 0, 3.900000000000002], +[2.400000000000001, 0, 3.900000000000002], +[2.500000000000001, 0, 3.900000000000002], +[2.600000000000001, 0, 3.900000000000002], +[2.700000000000001, 0, 3.900000000000002], +[2.800000000000001, 0, 3.900000000000002], +[2.9000000000000012, 0, 3.900000000000002], +[3.0000000000000013, 0, 3.900000000000002], +[3.1000000000000014, 0, 3.900000000000002], +[3.2000000000000015, 0, 3.900000000000002], +[3.3000000000000016, 0, 3.900000000000002], +[3.4000000000000017, 0, 3.900000000000002], +[3.5000000000000018, 0, 3.900000000000002], +[3.600000000000002, 0, 3.900000000000002], +[3.700000000000002, 0, 3.900000000000002], +[3.800000000000002, 0, 3.900000000000002], +[3.900000000000002, 0, 3.900000000000002], +[0, 0.1, 3.900000000000002], +[0.1, 0.1, 3.900000000000002], +[0.2, 0.1, 3.900000000000002], +[0.30000000000000004, 0.1, 3.900000000000002], +[0.4, 0.1, 3.900000000000002], +[0.5, 0.1, 3.900000000000002], +[0.6, 0.1, 3.900000000000002], +[0.7, 0.1, 3.900000000000002], +[0.7999999999999999, 0.1, 3.900000000000002], +[0.8999999999999999, 0.1, 3.900000000000002], +[0.9999999999999999, 0.1, 3.900000000000002], +[1.0999999999999999, 0.1, 3.900000000000002], +[1.2, 0.1, 3.900000000000002], +[1.3, 0.1, 3.900000000000002], +[1.4000000000000001, 0.1, 3.900000000000002], +[1.5000000000000002, 0.1, 3.900000000000002], +[1.6000000000000003, 0.1, 3.900000000000002], +[1.7000000000000004, 0.1, 3.900000000000002], +[1.8000000000000005, 0.1, 3.900000000000002], +[1.9000000000000006, 0.1, 3.900000000000002], +[2.0000000000000004, 0.1, 3.900000000000002], +[2.1000000000000005, 0.1, 3.900000000000002], +[2.2000000000000006, 0.1, 3.900000000000002], +[2.3000000000000007, 0.1, 3.900000000000002], +[2.400000000000001, 0.1, 3.900000000000002], +[2.500000000000001, 0.1, 3.900000000000002], +[2.600000000000001, 0.1, 3.900000000000002], +[2.700000000000001, 0.1, 3.900000000000002], +[2.800000000000001, 0.1, 3.900000000000002], +[2.9000000000000012, 0.1, 3.900000000000002], +[3.0000000000000013, 0.1, 3.900000000000002], +[3.1000000000000014, 0.1, 3.900000000000002], +[3.2000000000000015, 0.1, 3.900000000000002], +[3.3000000000000016, 0.1, 3.900000000000002], +[3.4000000000000017, 0.1, 3.900000000000002], +[3.5000000000000018, 0.1, 3.900000000000002], +[3.600000000000002, 0.1, 3.900000000000002], +[3.700000000000002, 0.1, 3.900000000000002], +[3.800000000000002, 0.1, 3.900000000000002], +[3.900000000000002, 0.1, 3.900000000000002], +] \ No newline at end of file diff --git a/Visual_2.0.py b/Visual.py similarity index 95% rename from Visual_2.0.py rename to Visual.py index 6bf3a9a..4115763 100644 --- a/Visual_2.0.py +++ b/Visual.py @@ -1,181 +1,181 @@ -import math - -import pygame -from pygame.locals import * - -from OpenGL.GL import * -from OpenGL.GLU import * - -''' -Импортировать метод ShowModel - Принимает 3 аргумента: - 1 - массив с координатама (x, y, z) вокселей - 2 - размер вокселя - 3 - debug_mod (True/False) -____________________________________________________________ -Приоритеты в планах: - - Добавить цвет - - Переработать debug_mode - - Доделать полноценное перемещение -''' - - -def _GetModel(voxel_size: float, voxels_coords: []): - model = ( - [], # Вершины - ( # Грани - (0, 1), - (0, 3), - (0, 4), - (2, 1), - (2, 3), - (2, 7), - (6, 3), - (6, 4), - (6, 7), - (5, 1), - (5, 4), - (5, 7) - ), - ( # Поверхности - (0, 1, 2, 3), - (3, 2, 7, 6), - (6, 7, 5, 4), - (4, 5, 1, 0), - (1, 5, 7, 2), - (4, 0, 3, 6) - ) - ) - - for voxel_coords in voxels_coords: - model[0].append(_GetVoxel(voxel_size, voxel_coords)) - - return model - - -def _GetVoxel(voxel_size: float, voxel: []): - x = voxel[0] / voxel_size / 5 - y = voxel[1] / voxel_size / 5 - z = voxel[2] / voxel_size / 5 - - return ( - (x + 0.1, y - 0.1, z - 0.1), # правый низ зад - (x + 0.1, y + 0.1, z - 0.1), # правый верх зад - (x - 0.1, y + 0.1, z - 0.1), # левый верх зад - (x - 0.1, y - 0.1, z - 0.1), # левый низ зад - (x + 0.1, y - 0.1, z + 0.1), # правый низ перед - (x + 0.1, y + 0.1, z + 0.1), # правый верх перед - (x - 0.1, y - 0.1, z + 0.1), # левый низ перед - (x - 0.1, y + 0.1, z + 0.1) # левый верх перед - ) - - -def _Model(model: [], debug_mode: bool): - for verticies in model[0]: - glBegin(GL_QUADS) - glColor3f(1, 0, 0) - for surface in model[2]: - for vertex in surface: - glVertex3fv(verticies[vertex]) - glEnd() - - if debug_mode: - glBegin(GL_LINES) # Отображение границ - for edge in model[1]: - for vertex in edge: - glColor3f(1, 1, 0) - glVertex3fv(verticies[vertex]) - glEnd() - - -def ShowModel(voxels_coords: [], voxel_size: float, debug_mode: bool): - - model = _GetModel(voxel_size, voxels_coords) - - pygame.init() - display = (800, 600) # Размер окна - pygame.display.set_mode(display, DOUBLEBUF | OPENGL) - - pygame.display.set_caption("Result") # Название окна - - gluPerspective(45, (display[0] / display[1]), 0.1, 50.0) - - glTranslatef(0, 0, -2) - - glRotatef(0, 0, 0, 0) - - x_move = 0 - y_move = 0 - z_move = 0 - - x_rotate = 0 - y_rotate = 0 - z_rotate = 0 - step = 0 - - # radians_axis_z = 0 - radians_axis_y = 0 - radians_axis_x = 0 - - degrees_axis_y = 0 # Вращение право/лево - degrees_axis_x = 0 # Вращение верх/низ - # degrees_axis_z = 0 - - while True: - for event in pygame.event.get(): - if event.type == pygame.QUIT: - pygame.quit() - quit() - - if event.type == pygame.KEYDOWN: - if event.key == pygame.K_LEFT: - x_rotate = -0.1 - step = 1 - if event.key == pygame.K_RIGHT: - x_rotate = 0.1 - step = 1 - - # ВРЕМЕННО НЕ РАБОТАЕТ - # if event.key == pygame.K_DOWN: - # y_rotate = 0.1 - # step = 1 - # if event.key == pygame.K_UP: - # y_rotate = -0.1 - # step = 1 - - if event.type == pygame.KEYUP: - if event.key == pygame.K_LEFT or event.key == pygame.K_RIGHT: - x_rotate = 0 - step = 0 - if event.key == pygame.K_DOWN or event.key == pygame.K_UP: - y_rotate = 0 - step = 0 - - # Вращение вправо/влево - z_move = -math.cos(radians_axis_y) * 0.1 - x_move = math.sin(radians_axis_y) * 0.1 - - # Вращение вверх/вниз - # z_move = math.cos(radians_axis_x) * -0.1 - # y_move = math.sin(radians_axis_x) * -0.1 - - # Приближение/отдаление - if event.type == pygame.MOUSEBUTTONDOWN: - if event.button == 4: - glTranslatef(x_move, y_move, z_move) - if event.button == 5: - glTranslatef(-x_move, -y_move, -z_move) - - # Изменение оси Y (Вращение влево/вправо) - degrees_axis_y += x_rotate * step * 10 - radians_axis_y += x_rotate * step * 10 / 180 * math.pi - - # Изменение оси X (Вращение вверх/вниз) - degrees_axis_x += y_rotate * step * 10 - radians_axis_x += y_rotate * step * 10 / 180 * math.pi - - glRotatef(step, y_rotate, x_rotate, z_rotate) # Изменение ориентации - - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT) - _Model(model, debug_mode) - pygame.display.flip() - pygame.time.wait(10) +import math + +import pygame +from pygame.locals import * + +from OpenGL.GL import * +from OpenGL.GLU import * + +''' +Импортировать метод ShowModel - Принимает 3 аргумента: + 1 - массив с координатами (x, y, z) вокселей + 2 - размер вокселя + 3 - debug_mod (True/False) +____________________________________________________________ +Приоритеты в планах: + - Добавить цвет + - Переработать debug_mode + - Доделать полноценное перемещение +''' + + +def _GetModel(voxel_size: float, voxels_coords: []): + model = ( + [], # Вершины + ( # Грани + (0, 1), + (0, 3), + (0, 4), + (2, 1), + (2, 3), + (2, 7), + (6, 3), + (6, 4), + (6, 7), + (5, 1), + (5, 4), + (5, 7) + ), + ( # Поверхности + (0, 1, 2, 3), + (3, 2, 7, 6), + (6, 7, 5, 4), + (4, 5, 1, 0), + (1, 5, 7, 2), + (4, 0, 3, 6) + ) + ) + + for voxel_coords in voxels_coords: + model[0].append(_GetVoxel(voxel_size, voxel_coords)) + + return model + + +def _GetVoxel(voxel_size: float, voxel: []): + x = voxel[0] / voxel_size / 5 + y = voxel[1] / voxel_size / 5 + z = voxel[2] / voxel_size / 5 + + return ( + (x + 0.1, y - 0.1, z - 0.1), # правый низ зад + (x + 0.1, y + 0.1, z - 0.1), # правый верх зад + (x - 0.1, y + 0.1, z - 0.1), # левый верх зад + (x - 0.1, y - 0.1, z - 0.1), # левый низ зад + (x + 0.1, y - 0.1, z + 0.1), # правый низ перед + (x + 0.1, y + 0.1, z + 0.1), # правый верх перед + (x - 0.1, y - 0.1, z + 0.1), # левый низ перед + (x - 0.1, y + 0.1, z + 0.1) # левый верх перед + ) + + +def _Model(model: [], debug_mode: bool): + for verticies in model[0]: + glBegin(GL_QUADS) + glColor3f(1, 0, 0) + for surface in model[2]: + for vertex in surface: + glVertex3fv(verticies[vertex]) + glEnd() + + if debug_mode: + glBegin(GL_LINES) # Отображение границ + for edge in model[1]: + for vertex in edge: + glColor3f(1, 1, 0) + glVertex3fv(verticies[vertex]) + glEnd() + + +def ShowModel(voxels_coords: [], voxel_size: float, debug_mode: bool): + + model = _GetModel(voxel_size, voxels_coords) + + pygame.init() + display = (800, 600) # Размер окна + pygame.display.set_mode(display, DOUBLEBUF | OPENGL) + + pygame.display.set_caption("Result") # Название окна + + gluPerspective(45, (display[0] / display[1]), 0.1, 50.0) + + glTranslatef(0, 0, -2) + + glRotatef(0, 0, 0, 0) + + x_move = 0 + y_move = 0 + z_move = 0 + + x_rotate = 0 + y_rotate = 0 + z_rotate = 0 + step = 0 + + # radians_axis_z = 0 + radians_axis_y = 0 + radians_axis_x = 0 + + degrees_axis_y = 0 # Вращение право/лево + degrees_axis_x = 0 # Вращение верх/низ + # degrees_axis_z = 0 + + while True: + for event in pygame.event.get(): + if event.type == pygame.QUIT: + pygame.quit() + quit() + + if event.type == pygame.KEYDOWN: + if event.key == pygame.K_LEFT: + x_rotate = -0.1 + step = 1 + if event.key == pygame.K_RIGHT: + x_rotate = 0.1 + step = 1 + + # ВРЕМЕННО НЕ РАБОТАЕТ + # if event.key == pygame.K_DOWN: + # y_rotate = 0.1 + # step = 1 + # if event.key == pygame.K_UP: + # y_rotate = -0.1 + # step = 1 + + if event.type == pygame.KEYUP: + if event.key == pygame.K_LEFT or event.key == pygame.K_RIGHT: + x_rotate = 0 + step = 0 + if event.key == pygame.K_DOWN or event.key == pygame.K_UP: + y_rotate = 0 + step = 0 + + # Вращение вправо/влево + z_move = -math.cos(radians_axis_y) * 0.1 + x_move = math.sin(radians_axis_y) * 0.1 + + # Вращение вверх/вниз + # z_move = math.cos(radians_axis_x) * -0.1 + # y_move = math.sin(radians_axis_x) * -0.1 + + # Приближение/отдаление + if event.type == pygame.MOUSEBUTTONDOWN: + if event.button == 4: + glTranslatef(x_move, y_move, z_move) + if event.button == 5: + glTranslatef(-x_move, -y_move, -z_move) + + # Изменение оси Y (Вращение влево/вправо) + degrees_axis_y += x_rotate * step * 10 + radians_axis_y += x_rotate * step * 10 / 180 * math.pi + + # Изменение оси X (Вращение вверх/вниз) + degrees_axis_x += y_rotate * step * 10 + radians_axis_x += y_rotate * step * 10 / 180 * math.pi + + glRotatef(step, y_rotate, x_rotate, z_rotate) # Изменение ориентации + + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT) + _Model(model, debug_mode) + pygame.display.flip() + pygame.time.wait(10) diff --git a/Visualization.py b/Visualization.py index dac195e..afb853f 100644 --- a/Visualization.py +++ b/Visualization.py @@ -1,57 +1,3 @@ -def _get_voxel(x, y, z): - a = 10 # Длина вокселя !!!НЕ ИЗМЕНЯТЬ!! - b = a / 2 # Половина длины вокселя - c = 0.02 # Толщина ребра - d = 0.001 # Толщина грани - _get_verges(a, b, c, d, x, y, z) - _get_borders(a, b, c, x, y, z) - - -def _get_verges(a, b, c, d, x, y, z): - """ - pos - позиция, задается => vec(x, y, z), где x/y/z - любое число - size - размер (в нашем случае он не важен, т.к. все воксели одинаковые) - color - цвет, задается => vec(r, g, b), где r/g/b - [0,1] - shininess - Блеск (0 - off, 1 - on(по умол.)) - emissive - Игнорирование источников света (True - игнор., False - не игнор.(по умол.)) - """ - m = (b - 0.5 * d) # Сдвиг грани от центра вокселя - p = (a - 2 * c) # Длина грани между ребрами - box(pos=vec(x, y, z + m), size=vec(p, p, d), color=color.green, shininess=0, emissive=True) # front(x, y) - box(pos=vec(x, y, z - m), size=vec(p, p, d), color=color.green, shininess=0, emissive=True) # back(x, y) - box(pos=vec(x - m, y, z), size=vec(d, p, p), color=color.green, shininess=0, emissive=True) # left(y, z) - box(pos=vec(x + m, y, z), size=vec(d, p, p), color=color.green, shininess=0, emissive=True) # right(y, z) - box(pos=vec(x, y + m, z), size=vec(p, d, p), color=color.green, shininess=0, emissive=True) # up(x, z) - box(pos=vec(x, y - m, z), size=vec(p, d, p), color=color.green, shininess=0, emissive=True) # down(x, z) - - -def _get_borders(a, b, c, x, y, z): - n = (b - 0.5 * c) # Сдвиг ребра от центра вокселя - box(pos=vec(x, y - n, z + n), size=vec(a, c, c), color=color.red, shininess=0, emissive=True) # перед низ - box(pos=vec(x, y + n, z + n), size=vec(a, c, c), color=color.red, shininess=0, emissive=True) # перед верх - box(pos=vec(x - n, y, z + n), size=vec(c, a, c), color=color.red, shininess=0, emissive=True) # перед лево - box(pos=vec(x + n, y, z + n), size=vec(c, a, c), color=color.red, shininess=0, emissive=True) # перед право - box(pos=vec(x, y - n, z - n), size=vec(a, c, c), color=color.red, shininess=0, emissive=True) # зад низ - box(pos=vec(x, y + n, z - n), size=vec(a, c, c), color=color.red, shininess=0, emissive=True) # зад верх - box(pos=vec(x - n, y, z - n), size=vec(c, a, c), color=color.red, shininess=0, emissive=True) # зад лево - box(pos=vec(x + n, y, z - n), size=vec(c, a, c), color=color.red, shininess=0, emissive=True) # зад право - box(pos=vec(x - n, y - n, z), size=vec(c, c, a), color=color.red, shininess=0, emissive=True) # лево низ - box(pos=vec(x - n, y + n, z), size=vec(c, c, a), color=color.red, shininess=0, emissive=True) # лево верх - box(pos=vec(x + n, y - n, z), size=vec(c, c, a), color=color.red, shininess=0, emissive=True) # право низ - box(pos=vec(x + n, y + n, z), size=vec(c, c, a), color=color.red, shininess=0, emissive=True) # право верх - - -def get_model(coords: []): - """ - Метод, визуализирующий воксели. - Принимает массив вида : [[x, y, z], [x, y, z], ...], где x/y/z/ - координаты вокселя - Импортировать и вызывать его - """ - # TODO временно - #if len(coords) == 0: - #raise ValueError("Input array is empty") # Проверка на пустой массив без данных (если не нужен, можно урать) - for voxel in coords: - _get_voxel(voxel[0], voxel[1], voxel[2]) from vpython import * @@ -103,5 +49,8 @@ def get_model(coords: [], voxel_size: float): Принимает массив вида : [[x, y, z], [x, y, z], ...], где x/y/z/ - координаты вокселя Импортировать и вызывать его """ + # TODO временно + #if len(coords) == 0: + #raise ValueError("Input array is empty") # Проверка на пустой массив без данных (если не нужен, можно урать) for voxel in coords: - _get_voxel(voxel[0], voxel[1], voxel[2], voxel_size) + _get_voxel(voxel[0], voxel[1], voxel[2], voxel_size) \ No newline at end of file From 2078b9521cfa0472bc13525c374214e1611b087e Mon Sep 17 00:00:00 2001 From: Alllex202 <56914444+Alllex202@users.noreply.github.com> Date: Sat, 23 Nov 2019 13:42:15 +0500 Subject: [PATCH 19/36] Fixed model centering --- Visual_2_0.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Visual_2_0.py b/Visual_2_0.py index beac71b..9ded471 100644 --- a/Visual_2_0.py +++ b/Visual_2_0.py @@ -88,7 +88,7 @@ def _Model(model: [], debug_mode: bool): glEnd() -def _ModelCentering(voxels_coords: [], extreme_coordinates: ()): +def _ModelCentering(voxels_coords: [], extreme_coordinates: (), voxel_size: float): """ :param extreme_coordinates: в виде -> ((Xmin, Ymin, Zmin), (Xmax, Ymax, Zmax)) :return: () @@ -102,13 +102,13 @@ def _ModelCentering(voxels_coords: [], extreme_coordinates: ()): voxel_coords[1] = voxel_coords[1] - extreme_coordinates[0][1] - (dif_y / 2) voxel_coords[2] = voxel_coords[2] - extreme_coordinates[0][2] - (dif_z / 2) - max_half = max(dif_x, dif_y, dif_z) / 2 + max_half = max(dif_x, dif_y, dif_z) / 2 / voxel_size return (max_half * 1.3, max_half * 10) def ShowModel(voxels_coords: [], voxel_size: float, extreme_coordinates: (), debug_mode: bool): - perspective = _ModelCentering(voxels_coords, extreme_coordinates) + perspective = _ModelCentering(voxels_coords, extreme_coordinates, voxel_size) model = _GetModel(voxel_size, voxels_coords) From 2cec1322db9745823d75a765c449aea0c1976177 Mon Sep 17 00:00:00 2001 From: Sw24sX Date: Sun, 24 Nov 2019 00:32:52 +0500 Subject: [PATCH 20/36] End work with OcTreeV2 --- Crossing.py | 2 +- Experiments/OcTree1.py | 2 +- Experiments/experiment.py | 11 ++- MeshToVoxel.py | 81 ------------------ OcTree/NodeOcTree.py | 2 +- .../__pycache__/CreateOcTree.cpython-37.pyc | Bin 0 -> 2667 bytes OcTree/__pycache__/NodeOcTree.cpython-37.pyc | Bin 0 -> 5747 bytes OcTreeV2/NodeOcTreeV2.py | 5 +- OcTreeV2/OcTree.py | 31 +++++-- .../__pycache__/NodeOcTreeV2.cpython-37.pyc | Bin 0 -> 4774 bytes OcTreeV2/__pycache__/OcTree.cpython-37.pyc | Bin 0 -> 4774 bytes Tests/MeshToVoxelTests.py | 10 +-- Tests/{NodeV2Tests.py => OctreeV2.py} | 80 +++++++++++++++-- Tests/TimeTests.py | 22 +++++ Tests/__pycache__/Samples.cpython-37.pyc | Bin 0 -> 3348 bytes Visual.py => Visual_2_0.py | 0 Visualization.py | 2 +- __pycache__/Crossing.cpython-37.pyc | Bin 0 -> 7600 bytes __pycache__/MeshToVoxel.cpython-37.pyc | Bin 0 -> 723 bytes __pycache__/Visualization.cpython-37.pyc | Bin 1619 -> 2622 bytes 20 files changed, 139 insertions(+), 109 deletions(-) create mode 100644 OcTree/__pycache__/CreateOcTree.cpython-37.pyc create mode 100644 OcTree/__pycache__/NodeOcTree.cpython-37.pyc create mode 100644 OcTreeV2/__pycache__/NodeOcTreeV2.cpython-37.pyc create mode 100644 OcTreeV2/__pycache__/OcTree.cpython-37.pyc rename Tests/{NodeV2Tests.py => OctreeV2.py} (70%) create mode 100644 Tests/TimeTests.py create mode 100644 Tests/__pycache__/Samples.cpython-37.pyc rename Visual.py => Visual_2_0.py (100%) create mode 100644 __pycache__/Crossing.cpython-37.pyc create mode 100644 __pycache__/MeshToVoxel.cpython-37.pyc diff --git a/Crossing.py b/Crossing.py index b9b5cad..ea55e22 100644 --- a/Crossing.py +++ b/Crossing.py @@ -88,7 +88,7 @@ def _points_in_figure(figure: [], points: []): def _get_all_vertex_voxel(voxel: [], size: float): if size < 0: - raise Exception("size can't be less than zero") + raise Exception("size_voxel can't be less than zero") res = [] for x in range(2): for y in range(2): diff --git a/Experiments/OcTree1.py b/Experiments/OcTree1.py index 0afc2af..9ab8b79 100644 --- a/Experiments/OcTree1.py +++ b/Experiments/OcTree1.py @@ -82,7 +82,7 @@ def find_and_get_child(self, pos_point: []): # Протестированно def _get_all_voxels_vertex(self, voxel: [], size: float): # Протестированно if size < 0: - raise Exception("size can't be less than zero") + raise Exception("size_voxel can't be less than zero") for x in range(2): for y in range(2): for z in range(2): diff --git a/Experiments/experiment.py b/Experiments/experiment.py index 05ebc70..12ea0e8 100644 --- a/Experiments/experiment.py +++ b/Experiments/experiment.py @@ -9,4 +9,13 @@ def convert_base(num, to_base=10, from_base=10): else: return convert_base(n // to_base, to_base) + alphabet[n % to_base] -print(convert_base("1", to_base=2, from_base=10)) + +def is_polyndrom(n: int) -> int: + for base in range(2, 37): + num = convert_base(str(n), base, 10) + if num == num[::-1]: + return base + return 0 + + +print(is_polyndrom(99998)) diff --git a/MeshToVoxel.py b/MeshToVoxel.py index 8d1695b..b9b5544 100644 --- a/MeshToVoxel.py +++ b/MeshToVoxel.py @@ -21,88 +21,7 @@ def get_voxel_model(model, size_mod, size_voxel): while x < size_mod[0][1]: if octree.check_crossing([x, y, z], size_voxel): yield [x, y, z] - #res.append([x, y, z]) - # TODO Временно - #print([x, y, z]) x += size_voxel y += size_voxel z += size_voxel return res - - -def is_voxel(voxel: [], model: [], size_voxel: float): - for mesh in model: - if check_all_projection(voxel, size_voxel, mesh.V1, mesh.V2): - return True - elif check_all_projection(voxel, size_voxel, mesh.V1, mesh.V3): - return True - elif check_all_projection(voxel, size_voxel, mesh.V2, mesh.V3): - return True - return False - - -def check_all_projection(voxel: [], size_voxel: float, ver_1: [], ver_2: []): - # TODO - # Нет проверки, когда меш полностью внутри проекции - # Нет проверки, когда воксель полностью внутри меша - return check_crossing_projection([voxel[0], voxel[1]], size_voxel, ver_1, ver_2) and \ - check_crossing_projection([voxel[1], voxel[2]], size_voxel, ver_1, ver_2) and \ - check_crossing_projection([voxel[0], voxel[2]], size_voxel, ver_1, ver_2) - - -def check_crossing_projection(voxel_projection: [], size_voxel: float, ver_1: [], ver_2: []): - """ - Проверяет пересечение проекции вокселя с линией проекции меша - :param voxel_projection: координаты верхней левой вершины проекции вокселя - :param size_voxel: размер вокселя - :param ver_1: первая вершина - :param ver_2: вторая вершина - :return: - """ - if check_crossing_lines(ver_1, ver_2, voxel_projection, [voxel_projection[0], voxel_projection[1] + size_voxel]): - return True - elif check_crossing_lines(ver_1, ver_2, voxel_projection, [voxel_projection[0] + size_voxel, voxel_projection[1]]): - return True - elif check_crossing_lines(ver_1, ver_2, [voxel_projection[0], voxel_projection[1] + size_voxel],\ - [voxel_projection[0] + size_voxel, voxel_projection[1] + size_voxel]): - return True - - elif check_crossing_lines(ver_1, ver_2, [voxel_projection[0] + size_voxel, voxel_projection[1]],\ - [voxel_projection[0] + size_voxel, voxel_projection[1] + size_voxel]): - return True - return False - - -def check_crossing_lines(ver_1: [], ver_2: [], voxel_1: [], voxel_2: []): - """ - Проверяет, пересекаются ли две линии и находится ли точка пересечения между вершинами вокселя - :param ver_1: Первая вершина меша - :param ver_2: вторая вершина меша - :param voxel_1: первая вершина вокселя - :param voxel_2: вторая вершина вокселя - :return: - """ - devider = det([ver_1[0] - ver_2[0], ver_1[1] - ver_2[1]], [voxel_1[0] - voxel_2[0], voxel_1[1] - voxel_2[1]]) - if devider == 0: - a1 = ver_1[1] - ver_2[1] - b1 = ver_2[0] - ver_1[0] - c1 = ver_1[0] * ver_2[1] - ver_2[0] * ver_1[1] - a2 = voxel_1[1] - voxel_2[1] - b2 = voxel_2[0] - voxel_1[0] - c2 = voxel_1[0] * voxel_2[1] - voxel_2[0] * voxel_1[1] - if det([a1, b1], [a2, b2]) == 0 and det([a1, c1], [a2, c2]) == 0 and det([b1, c1], [b2, c2]) == 0: - return voxel_1[0] <= ver_1[0] <= voxel_2[0] and voxel_1[1] <= ver_1[1] <= voxel_2[1] or \ - voxel_1[0] <= ver_2[0] <= voxel_2[0] and voxel_1[1] <= ver_2[1] <= voxel_2[1] - - if det([a1, b1], [a2, b2]) == 0: - return False - - x = (det(ver_1, ver_2) * (voxel_1[0] - voxel_2[0]) - (ver_1[0] - ver_2[0]) * det(voxel_1, voxel_2)) / devider - y = (det(ver_1, ver_2) * (voxel_1[1] - voxel_2[1]) - (ver_1[1] - ver_2[1]) * det(voxel_1, voxel_2)) / devider - - return voxel_1[0] <= x <= voxel_2[0] and voxel_1[1] <= y <= voxel_2[1] - - -def det(ver_1: [], ver_2: []): - return ver_1[0] * ver_2[1] - ver_2[0] * ver_1[1] - diff --git a/OcTree/NodeOcTree.py b/OcTree/NodeOcTree.py index b8f5fd4..bdf57bc 100644 --- a/OcTree/NodeOcTree.py +++ b/OcTree/NodeOcTree.py @@ -140,7 +140,7 @@ def _get_all_voxels_vertex(voxel: [], size: float): # Tested :return: ленивый список вершин вокселя """ if size < 0: - raise Exception("size can't be less than zero") + raise Exception("size_voxel can't be less than zero") for x in range(2): for y in range(2): for z in range(2): diff --git a/OcTree/__pycache__/CreateOcTree.cpython-37.pyc b/OcTree/__pycache__/CreateOcTree.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ea24c3e53c729da3f32ee53d03be6b84bb0d8c30 GIT binary patch literal 2667 zcmb7GO>YxN7@pZLJH`nqMGz=LONFXhilQD%geWbDLse3wpi+fIE92c5H)}i0+SG~G zQobsvsERoCg4*QRn~7=>K4OklZ|hsN*PikhxU|nZvv!<94_#}<^X|O!`8?12?q|cp z8HVT6p+D#TPBZow8NEkG<04A%1uB=h+-GGzqj6Tm&($7luI?He#*FT1uKAd|mYafQ zBv#rTf@KyN> zqZeds+uaRxt>A47PHp?<&2p*YG{)_6zTq_H#%*aYDSN4BFDrX_ZfWr9EM#*>n;dt}Yk9?$E7jdo)f^^((AcoA@Z^C1KG^s$QSFJUM%H=}O7>g4t_JwQ6Pd+p1WY{ff3& zTF%!>c=Ki9y70W&OTx?7JY`HQF1^m2_e(*oP%STB$YQF1c4o2V(?zf5R12VzH*wyt z7V>^@0gayPl-!JYuM;9F0;8~O)bIE=*{dY_#p^bh54PSwBFMxJCq2mDI6#){$(+0toHwlvT?_Uf=LHvFy)v!WCNJ*Z-ym5017P?E#F2SwU`R63Dc68q@bnHapn3{&Jf4ZicdNuq+8W`#Vu8eXf&Mps&FU{ z$5wuE(W|)e@%d6E5wVj;izH1Bxs(KYW{eCkaH^F96Cni|)H8E@aC-Rl7MK|l-n@sn zQ1E6B4Gb1Yo+_Lv)sx`G7^?SCf|ID2Wq>Xj5XL|~iehjJWmJ=XIZd2~liXcj{S*Z# z0#FH#pt{HAp?4&{bO<`FbE)D-=ulw)g4^Ghl7x9srReHD=po-abLI>r_yl5nD#a{w z93`2SP4J;1^%(6WYTM6tN!}O$R3SVFT3-+Z9tlEf=PVjBS)BTw-QzfoM&A`1X{2*R zGCEO`H1z&>x&xA;98WhY$B#DoeYOeG-{)JJ8Y3?r0rZ2yZLhFE%%I3midSC~j_`b# zckyxI=PUT?5TsQJ9NHxR*tqM7By39nDMEjO(#tF7{+oGk%QFKhXOAGn=1h^V6ulgm zYvYfW#h;Bo6=wdu}!&)Ds$V0J|Ae#c`J4srl9H^Rt?p_R2 nMYk^log}LqqlkVmO2+B)$bfaVeIeJY5jCGj-$ByPzfe@k!9GsOlU&C#)Q78 zWw_vHSlU>}I2+GV-TE1597l0)p>h}`Sw<6FXxCUqcZ@vd-_e92V%LmJOvFVW?#J^C z_f6dI7YW?&%QMFm+t5#n0rdM-e-QocB87e;>hBOk=x@X9op-p{C0;@==?p~kcZ=a` z#v;!QiapSGZ(xj~%kzi=l;m>}B=X zFjH-8BEJ1ZUMJe^b6 zJUl%cn6_Og6+GLf6LV=T#^dTQ!Qa5OHbC-+TT*E)FrZvEh)tIZB`-&Kq90x9?A3W6 zN5i9&>EZWTI2D!$~ z5$lNcmQ_7HJ7T@98nqGYJ7~Q4TYZg%Z=M@g_fFPvlm_2hZ|{K60gY}R1Hx@Xbr3FXa%q5CY;

rBDz-`d%Bn{IV9^UhBWtagHx%!sX+eK=I6-G=|`CFZ(dyscfnQs z4!_PWffK=}$vM8nE;C_(V>Gn*UCq;%lsCX5@R!#Yd7dpA_c&+W<07{8IE{+f*7LU- zr`cOSf9r9Yzt#FQ+C47f@aewF7|ts)w*Pxz;xpydkI7@29!)L`&=Sz^N3x?$Z-{QB zd0oKrrG?nN=05^1Rwz>S&ZTr~)KXc<7s@#E z-4kxNC$u8>Sy^#9V>g000_{zL*+yjnt5s_ZJkT}eDI^!7mCq_?981T7{h$v-J3A-K zu1hiR!-6-Vtmn9aUUW*KrydG{(Iun~!M@l`MbW5Y%3$|$aCa4KU&V1N;|9Fc10Q(^ zWAC7ZSz}+48`>Zr;z@35wVet!J!@)`mJ1SelD5*K3o=Bi%9CG5qiO*n3~<;zr+ehh zAwYC#DnOV31Tw|6Uik}zqx11U?asl%h_dNfhc3Jlnw?U%CCbPs3xd;k0-?jMVanJ7 zQK!(RXbJcD^)M4{~K!e=mHA|Uh z3;0AvAs;4RCabx>LX~H8diCs*BH5<5p86OGPe+{PtvEYp2%~OH#^pORLwIe{C;Q|O z{93Cw(;av`TIU#NGeasXA8BH{f)6Efz!YyEZ-EsmlE%L{Uk;f+`*Bpcle#V79WMz-(pjVImQ3L%vBa*<0m|6}Tx%!^UK{y3+d-B>!7)d94E^XzMX}Ht8Uk;yfN%=wBf`}Jdi0$@ z=#!c(qK$6@s{K>6jb{58z4wyT8H7EwAcFw*s6*n{>OSO~5;1C(#yi&gq(l0al8#5x zeM;KukXTj{W+c&1Es=mjZL55aO+?`G|IqlD!ij>Ps=6~2;I#M6u=R%8gV<=v|54)8 zo7^Zk)ec1Yl;uv8D@9Q{u5~1QP1LbN1;KTqs&(?2bt0~HdS@J`?D0p{ zoHI>dKvYO<`h_xlZ$u+#Iwxx#t{{fr%7RtVeUjGIKBGdW5Q~X51aTVcjF+|3FN`EK-c7?=FhWzj2VRs~q z6luNMZOxb+8oek!hp0K&PA{xnmLPM{vG85YwY-UJ$*MWB9KP2OUH}mJU0fAEft4uK zHS?Wnz-I$q>&3_jBtAlMDdlA*FoLj3f3^K>>e;}5 literal 0 HcmV?d00001 diff --git a/OcTreeV2/NodeOcTreeV2.py b/OcTreeV2/NodeOcTreeV2.py index 566e4ed..cc5b07a 100644 --- a/OcTreeV2/NodeOcTreeV2.py +++ b/OcTreeV2/NodeOcTreeV2.py @@ -92,7 +92,6 @@ def distribute(self, is_voxels=False, size_voxels=0): Разбивает объекты в вершине между вершиной и детьми :return: """ - #try: node_objects = [] for ob in self.Objects: object_vertex = ob @@ -112,8 +111,6 @@ def distribute(self, is_voxels=False, size_voxels=0): if not is_added: self.find_and_get_child(location).Objects.append(ob) self.Objects = node_objects - #except: - #raise Exception("error") @staticmethod def _get_all_voxels_vertex(voxel: [], size: float): # Tested @@ -124,7 +121,7 @@ def _get_all_voxels_vertex(voxel: [], size: float): # Tested :return: ленивый список вершин вокселя """ if size < 0: - raise Exception("size can't be less than zero") + raise Exception("size_voxel can't be less than zero") res = [] for x in range(2): for y in range(2): diff --git a/OcTreeV2/OcTree.py b/OcTreeV2/OcTree.py index f38103d..1cc0d62 100644 --- a/OcTreeV2/OcTree.py +++ b/OcTreeV2/OcTree.py @@ -18,19 +18,22 @@ def __init__(self, objects: [], size_voxel: [], ep: [], is_voxels=False): self.Size_voxel = size_voxel self.Is_voxels = is_voxels - def fill_tree(self, node: Node): # Tested + def fill_tree(self): + self._fill_tree(self.Start) + + def _fill_tree(self, node: Node): # Tested """ Заполнение дерева :param node: вершина :return: """ - if node.Size <= self.Size_voxel or len(node.Objects) <= 1: + if node.Size <= self.Size_voxel or str(type(node.Objects)) == "" or len(node.Objects) <= 1: return if len(node.Children) == 0: node.add_children() node.distribute(self.Is_voxels, self.Size_voxel) for child in node.Children: - self.fill_tree(child) + self._fill_tree(child) def get_first_crossing(self, object_checked, node: Node): """ @@ -48,7 +51,7 @@ def get_first_crossing(self, object_checked, node: Node): if temp is not None: return temp - def get_all_crossing(self, object_checked, node: Node): + def get_all_crossing(self, object_checked, node: Node): # Tested """ Предназначена для возвращения вокселей, когда они находятся в дереве :param object_checked: Меш @@ -58,11 +61,12 @@ def get_all_crossing(self, object_checked, node: Node): not_crossing = [] for ob in node.Objects: if Crossing.crossing(object_checked, ob, self.Size_voxel): - not_crossing.append(ob) yield ob + else: + not_crossing.append(ob) node.Objects = not_crossing if len(node.Children) > 0: - for child in self._get_children_for_checked(self._get_all_voxels_vertex(object_checked, self.Size_voxel), node): + for child in self._get_children_for_checked(object_checked, node): temp = self.get_all_crossing(object_checked, child) for i in temp: yield i @@ -92,8 +96,21 @@ def _get_all_voxels_vertex(voxel: [], size: float): # Tested :return: ленивый список вершин вокселя """ if size < 0: - raise Exception("size can't be less than zero") + raise Exception("size_voxel can't be less than zero") for x in range(2): for y in range(2): for z in range(2): yield [x * size + voxel[0], y * size + voxel[1], z * size + voxel[2]] + + @staticmethod + def get_all_voxels(start_point: [], size_voxel: float, max_size: float): + x = 0 + while x < max_size: + y = 0 + while y < max_size: + z = 0 + while z < max_size: + yield [start_point[0] + x, start_point[1] + y, start_point[2] + z] + z += size_voxel + y += size_voxel + x += size_voxel diff --git a/OcTreeV2/__pycache__/NodeOcTreeV2.cpython-37.pyc b/OcTreeV2/__pycache__/NodeOcTreeV2.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..bec2488e5cd455f0f5e378dc6463b0787e03a2d7 GIT binary patch literal 4774 zcma)9&u<&Y6`q-0l1qwWY{jwa*l@RL(v+^O+G!EEs%sdw>jD8P8*tzNj9ixHtYu0R zDa|fjiXZ{o5^B0OVgxOUqR7Fz6e!SxqWXtoJMzDp1E=kEryTlG> zX5YMdGw*xfyg4&Enqqiz<$qi`xR0@aQKR=5sGP>@j-mJklT7keyelHdq`1VgMiKqd zW1@B%uRDjrVL2{YPRv67GcJWRR?VD&mWftO#?dm-N}y%QBw8_>Nd*#?F&sk1#mN_Z;`e#D!lW(k=D?B$M_rr>B1?F^BI$0j1iq)!;rAonbiewEv zF}zeii`Tu3qRE>q&zb@yZyG33o8yunWGxdlA^8E;G{>2)i-Eck)@Nx9R)P{MKpB%J ztccbA2IVQc`%EnsRAIqJ=~TQa+ke@)=|A=#`CI-o+u!gXcW!pt{-*zB=ibgCZmHo+ z*$`j%pZYII@_!8IFBz&)3dtWzvTfpFLP6b{zos9?ai`w46yaXeH z)Y)h|gOM}US_NA>d!||s5*Mz{IYrM6th3ikWr-zbV}a>9DiYPu+9Fv)5B<}tAwke?vWIMq z@emq-0^BKTkMSY$jsFMi>*sLEhW{LX{1UtS*ru+|@6deKxsCb;HhOrkS8RXN?%cw+ zr*O!6Z`ezChz7jS-r9&J>0+j9E--M*f9Y@P@c_+^$@-&|VvTdQlzF8TB-O99lo3kl zx*66#LKy4N+X9NC_4{i&csBHQZ(!RWcWxs9v4PL=K8f5%KIq(m4>rk75Wr__HX^8V z3*R;)g}qp&Wp_gv-qtbv0NP$4%pTa0wsrXJ6>$hVUSOJ!>l60!gx$E(*WUG?ef0Q* z4W+kW2h7%%{e4#O6*TZ7DzYE(G&fEXNqXZ&BVf_PzZ(W%I+8KQYV^%=@>0~5?u*a_^hS;xzlt3}Nzd5zmQF~TMM zvxLbr{7s&wS7dl&Tw{Irh$2xWJ@ik;Y34bJN_e>45!b>4E`67`#T<^fgX}K5!|rf= zG4x?)d0YbT=YZz6$P1YOYONZbMiC4K7zX>^xv!l{4)4*#Zgz>rPVJ-sM5(z@aOa~S zCAuTCDf-1YQ?4efwdgKPmi&}3KAEkt#j z?PH&cB^-r)CxD2=vDY1V%TUw5EJS&gHPu?Og{JA&4VF5+8s>6L3unrt(}>o^XfkZ<`IZ)E@P^(%5` zv|w_|2wuJ5)2QeLpJ;J-5}*SOA8CoGeuyZ!E!wP2bPQsiHQH=NtQen~ONW;BkP~4( zO#t(0VTz!Sn6vR0@Or?P1K4VWOM9CH^w~1JN$;aS+$7$3=Ns15_un*BCPSrN@HHAGU_)9pMlCFR|0&TuGj{7Zua{FKOX;BmjLg(1`wJ?_ zk&OBu;YEhfypM~A*@`u}dK;N2Z<6$YW#-)##7|Mn@E4UdDTE#s;?SD88GE0l&CzR#ANu(mj8uLyB-ldJNGF$ zisspMp6T5@|KW5trgPa~zxGz4T+ZL1OM{!g;V93kE24UJkcvqZ*_5WGAX$QdmdlOM zJ*3x2S8!A4<-LKZUd@e$NpM$PVD(amoCOugf*q;83&pun&skWE5{sRfN=Y1Ts&uvH zIXOtX-$TLTCQxMJmj*pqxU2}&Q~2${YvST!^8LK=nx?J(cz`*kO;>c&iCBwpPngnp zA{T)h_&mVfV=bM7Uq{wqX!4%{+Ac?}4_apZT+})NqzNF+X!3pFFTxuxzh<`u?m-LK z)Zf53<7_s}#HT)DOA~kx12IBl<)36#gq7b@f=Wp;_~s_kQk{iwAiV`9hAzO=#I=~d zAai^WY3LG-UOq@>Q0V?nA#&^RrMWNB%dexG+Xh(giygPC0gHyG>e~}C)LVT7*~J3U z(^bdDP1d!&>xGJqOK(-5oSLd|WF5t(gy$LIG8{=#1MdC!c;vDtR_qBS}v=bSko z@5ghV_dWbz*RBl1@9&*|T>osGv42sg_tVfghvFVZWiy*s*%B{uPHj;YMe!lCHCtb0 zw%!p%%@&tf!FY|itiVHkwr)GKW$N{Q1{&v3+~1;dSdrVTDD263M*nQ_P*b}Z*vYU{ ztE{LyhMj)MZPOlE)r+aPm$66DOUJ#ey$e0l8JTAo$vqVIZhLH1@9<(qjg8uSFg9-Q zRb$y`%o(*OaN0h5zZ%_TAAsZs!_>vHCmm;|poQuBjRmLdxnahwv>fZ>defihTbfY9oOZixw>3pyq{H6PwU^95uz1#gHA3P48cOT@t_qw-(jo>B5 zUj|zk2p-X=O^j{^kAltN?fObh=hez5!3&y=bvWQz_YRg}-{ECW0|Go#3!c(J!DhaD zH`wm}GI$nj<*~&!9U43jwuV<$+{lLR7irKFb0h!GfB?bP_mh3fu!{N#)MWTeDDELt z^UP=0C)(TxoDMS7{2-fTzZ1(k%qd>eI!V=^(F?`Y$&gp1NrO~<{@(fNYd^U)Q>i-c zwV&Sd>a}aXsLRD`m&xIkR>`Yir0KZyRnT+Ql(hy z?Fd0rmQ|@$Jj~XvRrf3!z4@~Ps_0m#RGC0Ssgmuf605+K^h(--kRzBD8jX6T z=JmCZqZpN0RAVTyFojg8EtQ&*L<@~eUP*ez(UNUj3A8Wup*`~Bo`bMVcb)2-B*`RM zS`yZaBZ&)(Ic#ew2rc1`SBK;X&7SsYtaBB;nB#nsXL*XZb`M!7F$TGa2uEEgQp0C! zC=2SE*sxK7&%%KjYpznQT69k(S-!v}Xe)ANBna6e97$&FLswaZ@zz*;c=C~Wssx)9p_;eHV9xX;|n5#<)2>xp(+x%iK7$j2Y0b<;IHV z$UWFW64DD=&dp}@ipPYhwy{8u1V8}wU^B+%+oQ)P+ryLLi03yl0r$xGX?x3u*0D? zh#H>czP>Kn2FP73j>rqXfn6@ZcN74%6$?;Kj2rw(aqweuLGXlXuqCndMvuD{ z5v_KAt-dJ+f2HV~`1r5Eb{_sGXM&jH^)#n@he&r5F5V1YoB%be$&YF8Xc(mY-vdF! z1#p&AUUY1QnLhvDPqY}s)hmd)9i!_39Sy-L3P`m{#o}tt2 z&>t9O1EK6bltC=nfR2bLutul*Y5(|P$SPdU7DnV-a4?W3>#kd=&4*?=ZYiwFui>kt z7!e+{<{dA=q%~KUJ)Oh->Qf1%qM|%_(2<_g49983Tt&KA7w=j~Db$9!L9# zzd>i|p0m^#B1QQ&z8pny=@PMY7C1J6=R-iV$y*0wJimElf@``RgzGYjyNYU_wYBES z7~4nNy23V)8DsmnuU`i9EN6Xf4GD(gm+Td!C%&+VrNjcU6kpWk?dGW%>k-P20ND}B z4WK;L9QTQ-GVQdVRy)?Nu;r@>+CTi?pnXT)0Yp6=1oJjP1Sr$xxd(7O?mhrw?tFQg zGw3Fu`ypMHKCGhLDrU>Cg6gS!@R>@u{{N_!--M54o+`z=sZyii)a*W{<+t!H93#jO zcoU485wjkll?2RUwpQ;$Sbm$v38#|aC@DM-WA!-3PNTTAoTYVO6lfJW#P1v*M=!%$ z2X-KK;CK<5(FJl`b$k+9DV3nmssQ{WGyq`HJnIuRpKgPc5$?5h-qvk^crhgpFJ}N| zv6z+!k84D^lrIy3qoshDNkI5FY?rt-_+vo6+>CP3E*PqNSK(=c($wxf#X^c@UMR){ zLk{>}u@M%7vby()Ta%q*8tmx@$^xMgoq;n4_^-brX0ANwPvz!dwoihmLo30Gi98#@ zqhxhVb6Qbx5v7upk6KaocMLig$LA_F+bW?X{8lhz0iPmLGJ9b-)Jf{l>}@jaa{|)^ zl$f7%_&5V*5-9L?z87zkQxNBOvM4e$BYGt1lo$>;otR5Gy@dwl=Zk1 zE~Hle2>}x02ESJxp~uG-qE3fk0w+?49q=W+vUaf3o3A3J_m_oEvdZ9FD-mS+D`8|u zbp22AD7dr^tIS*pl`ofS$GrRvCy(cioA+*(YI)>w_1Bc{Mj0L)H}b<~*=Z26LPM5n z^9~U74o#Rs74l}tZ-u-y44A|CSVVE@*}+Uxg|i$8qV@HiV0k01;&DCd(qklsG0{S3 z_Ffc8xT8>)u*Jvd*c^bUQuqRV8tCcGj}$*JX`^Q}zvm;U;oH>+BEANY0AzR)>Z%23 z_(l&Ln9JYC8-4jOLL$I}w!S=pHeiLewwwZJ=+U7^Ij}O8{0`($c0eNV9<@n$NmMD{ zrRuv>ouY~`A64o(lIyW_lwwry)usHF3A$*#aswMJ`Z3w)-KqsLXPwB%S8 zUP2b0Un^B=XDw@arBsc+$h~wpy?fN#PvzSx|ByuNVHVc+D&-}|yIHrRAY#l_>m^T; zOXd4i^~F~$^}N*Zf%H{T!4wlYQ_JOYW4Q^z$9JRT1eY|YpckP*^kSZ({{-rFB571u Yqj_I+NNApkbUKTyg1H0${Q1 zwS+&Cjo^|yQs9`I16UYi%r(auDTipUIYd@2xkW;e$g7&2{n#WNa-&Dx)t~C>ntIh$ z{b^rcMxcE4_peib^a$}A4dRkO=Mz+~j7AA1%OXeAD9ehGGo(vp2k+Cy2O7KH?BiIUdg3a)T9c+gy z!B4@49WL3y!{7-Po(8+YV>@^Nt_=(}F*wB=$F$?ubal)Q?gh_+t#Ap9+cpbYXSP@v zb8CqM_e?ZD3T=V3o9Cy_j7@$qf7UHK-sG3_{!Df9`i#CZd2wdWDZ2{=-^I)Y$Me0( z^M%SRxJGB^8&njSNe=3CjmIjNZiMn50h=o?W<5RA*f7qSIyd_<~W)iQ*(76<-sgFJB=Z z>^R7aEYP{qA-`jVJR`nz#L?QrQO|n)F54b~w`ZVvHJ~592ev3$CL=%@R0^M6ppq9b zs5Uw+P~-R&CnHg^N|Z#++9j|Zj9>@D6GGQEQVW6;nrBEZ6sfkGQEtmV_jOm8;z2v0 z{KxP4+AUN|WoHa}cw`EZ)O~1?*Ao@w^>UGN4;2$N)ui4!I==W$#y5U}kU**wkwvjqfPn{9%$eFsw4X>W(1E(mNKy&F6V?vvQ?=D(%BwH*+WL`IGj-)IJFJ2nJ0Ls}>-H7P;FSsNQijB~cesBa3X}qhejwVdf*^ zd*do%aoYv5M#C6=zad?8%t~Pnja!YDN!s(wc-i&*;!I`s^m&p@$0WtVyO-Un%6smD zlV=-@j+bYOg|c@VotQssHLOa(pKh3L^>QPj;aN^2ohMlZ?PN{e4_OU)O%H+cky%3z zQ=k4pa|9jOcg`8Cc!Ov}a!_WBjO>@g_>LL+80NB8w3UQ3lGhyVJ98|(NOzkGQF2|r zl;h~sMV+0E+AEemUN?A**>SjL$C}U|HP_z3--!Y5w=f_=O($lLIJA52iZ$*%jSg{rX=v{eFNT>-_j0wKrupl9n>n$ji zFHXBfpU+ou!}Hf&f4Vu2_fLV@BXxuvk!h*l zK`$#cIa#(>)0-nVbgpo0h$1dNAFCZy=rNA0A2l15@4|1^@s6 literal 0 HcmV?d00001 diff --git a/Visual.py b/Visual_2_0.py similarity index 100% rename from Visual.py rename to Visual_2_0.py diff --git a/Visualization.py b/Visualization.py index afb853f..64a7b0d 100644 --- a/Visualization.py +++ b/Visualization.py @@ -12,7 +12,7 @@ def _get_voxel(x, y, z, voxel_size: float): def _get_verges(voxel_size, b, c, d, x, y, z): """ pos - позиция, задается => vec(x, y, z), где x/y/z - любое число - size - размер (в нашем случае он не важен, т.к. все воксели одинаковые) + size_voxel - размер (в нашем случае он не важен, т.к. все воксели одинаковые) color - цвет, задается => vec(r, g, b), где r/g/b - [0,1] shininess - Блеск (0 - off, 1 - on(по умол.)) emissive - Игнорирование источников света (True - игнор., False - не игнор.(по умол.)) diff --git a/__pycache__/Crossing.cpython-37.pyc b/__pycache__/Crossing.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b4ac8417646850e6d34eb0c8db3235a6658e7997 GIT binary patch literal 7600 zcmc&(-ES1v6`wmZyIy~PV8B2^C*U^S)UgUmBWgu$l~9X^mLh@pa17h^&R{lP?=E-7 zU|Va+*wC~Mt$FApYMO^us+3BOi&NJm=BY1zh-Rg}bY9yR{)ImEcg~$1&#o6R2(@e7 zJ9E$dnEUZNzjMy@yPchF8h&Gie_sCmQBC_76>7f(UVeb&{u`OC*`lCLi!ohjllXHC zTfcAEhHc(9$4rzHcH+KnC+!xLlVOV#TD012khH`k?REzwshFhG?t-M1Bz8AO>9KoJ zZsV`?p}fcLN4cHKXt5Wg?z8tp(xD`f4cs^F1NK44I%yOh=@4YE*sns?6-o}H=htit zl5TGC8pb|iA4R#x7H75e;A5;*JDoNHbJ}sQ1&JG_S*H-Rx%qh~!|yqRTHu#Nq78Zv z$^8*BPpfF2sA$V#SzjeF8W*kn!k?croTF5RX?mQ`CC?X+48@D^ymJnRk)c&#J%hH~e*rx>Y~KAR9dLNI5IB(-y6CBpfO(=k=mu z6C-Tl+Yd0tm;NdS{fGvAfWnslSNbkyhFPGNYU-vDA8&gTM=T7t>i>nOzu2^kbi5f^ z9I?*H8E1$W<3FTDHmqtLtKtcw5-a0cnn7);>;5L~&1kmZI@X)`lI1_5?Zi%OpdGE? z3k!Spu)2)ytNuDq_%ZfgdrT)S>235}+6?+Lla80k77CfNEPdeQynLzX21dat1__xh zPC7wbCU?!rO;MY4QtH&3hcNLL^w2KHyN>np{>DXt$p2B3ooN1_;gcidKb{-S7aVu| z%$!#$j^8ZFsqym!$NYSjK0f}QEV*vJI5}LN3sSkTKwoq_kZJ8*qC<3v0g)228|Abf zq;5FU%jX<7=*pF5ie9Ex&e3e?N2sR6s9wU$q_&_VLG6I!4+zza<0}h^ivByGoiQwc zVfCgT&?faygwQHRlUiUstTm%r^a%S#wb%DufKEV5%t-^fV9xxlK^NAmKf`e^R+n+$ zOSPj0sx87N$~a-XKLTR5aJIlNse->TVqLs6WL+E^vM!DBIkRdJs5gK_96kmEtXClb zk_lOBR`oVxAJrIP-FpB1*&%Cg$eO=AWW`>Ghlel6pvudcUi;6AC_93~{OG}x8{<_3r{2dWo3nK4sP`se0QST%vXvFKJ zKqO!dcndGY>lHy9E!jvA$A@K$jE1LE3A}H}Z&TUUfmvhbClO|U3;z8jHktXex}spV zhEo8*n2gjR<8XJ-a*Q1S5Y;$3t%&{OsA^nXvu^)WhOW0eLyC$4Wg=;xccFR*=7cqL z6+C>GbPpozPe{tumFgW{;<-_rXMf1De60DRvdWQEEgxd44i1HFYvdT)PB(4Hew?n{ zOBo$_Bf7{h`X-V~SkqD+z*a3us*4aqa3<6+VqU=uu_W+9UVs3LY2*XgqGC=Zfed}- ze1wdcWsh(H7(A^0nrs>K5-<|kco?rW#b#{dL*?E!;<4p5JN9s#XP{+=wI}bQ4tdNG zL?HxWOm-zc;!82|v`V!JAt{5B=v$vvSGEBJTd!P#FG-^mKw#tcMs}J=*qIFh(wixl z@{$jTZGSXJ;-M50^UwrdDu_R( zG}+_9CM}C4LB8DVDNoo2`*80p7_)Cjr8gE#UWri={jhj8e7gMN%1ng+Z0>>6#Arnq6c0>n@*7!;xMX>kAn*a zM`n(x$MGBilz#Li=ax130bbxyP&^dsCA5>GCIEF(2k4Fv=o(s}PPO6|C*v(hv*RNu zU8m9FQj9ylqgT{s5^BNYM3QJWtJEum|8HJC{3&WdkfeMgx_zhvHL1()bYX{^qpmLK zCgTnUU#FoT;z5>g=N-q6kG>oOsWgcpLF&W&K!F@v;OLUYUyWN}YJD87*HmEm#MYs@ zao6oI40<5oGO3G;$W11=yK$V#*8xIF-f$xue*>}`NG>@;TI*qOF{J@_3tkrU9KwD_Rw_>9&q=@*@pJ#yj)@UxO zf33FGzYS|iRFar;s?rL*L_eO_8p~T)-qs*bR!H7jsgsA_;e9dTmQ0CzqV$%U&6Fsb zx+XNN*AC~)Y!S5^SG%*_uDlwK$Lo#S-EJJOMD1w(g7T={r?v6UYV=)ZqGqf7Dr6J% zUv4-x>~-B4V?V%l%X&YZw|PigXosZMk7f{_FZYXPG!SxNtX~HickpI=r33qF+|x@} z!stDez(|`jSK)QATEuT!RXm0`HD-knm8>E(TSBY~jpXadkcz1MXTHb#B`X z`39_l{1&pY7TdW&5qh9!j|KV!QVuD59PdcE<8qLiex0(0z%LEiuaH~|nb!U;;;A0| zSz&%koDrvCv`qbkIH5~wjZnoX!$CuKJV@kbWTqU26Lt4K|3Kr&VkmopNQ(KA`4{%V z1dAc^LT)aLsf1i4hMh9yc*uTiM-;D?&a1JeaG$7HH5@zMW?uD+wINGq%1Z__&Sp z8p4R1NG^Rx6Ozj5-m&iKtXD3Syh46rn4@wFa(Nh8khoeXWj+2+N?_n7iSL*BB9QNa zBwZkIaIUT-$kS)XhhfC)0Z(v;lN6dF=cWQ33wM_97rU8R+Td@1dv zho1TY?y=BQf1_W}z4qi^=&7?SI~Y1*M(@qrotd2%!=VFc$De*re;ELO6xkVac#bX} zV@Mz&8RWz_2qZ>AKY~va@&+d6232?!Q}sjZqg&`Py7-Bqgf(fQC9Uy|uILO_W=j$> z#wuf2S=E=;+HyLEIq)CI5NXw}lGfhxPF*9zds^*PUfbL9PW{@_wShUiwPqCi8T|8( zT>$~a##31Jmcd)VGYZ?w6U3Ir*3w06sy8(s9LGiTZX+J$ZeAoT^Y$|$ZCHqD&%M6R z(?wVvx_MNE)%4KSyzY3t<4wn#>GZ!U?~3ZaIA`S@Uv!-|YX6*I*r+g}(!PjG&Y17a zSQ!=?%Tav8;&~YJLWp!RoAjlnr}g{05v8M%ZsXhAYm_q~Nh3)uN%bB006Y9We(440 z^;w!R5xlO;ViCMA_&m5$1Ex(>rkFWr;^wl@siWIkK2)RV(rOzlGqH|%f&m_k43iAV zqkC7V`}hd;iRm9)#FzM@%+F>En9By)Z;U_Mc(XyNsQv1qrpU0sRN% C#kUdw literal 0 HcmV?d00001 diff --git a/__pycache__/Visualization.cpython-37.pyc b/__pycache__/Visualization.cpython-37.pyc index 517c9e73e7b397f519e089a2fa1f74efa7c7a180..28aaec8e645d5537c4df72d4f210885aeb7ec384 100644 GIT binary patch literal 2622 zcma)8OK%)S5bmDG?)nu%FknDLeL^0ztP^pwAVv^{Q>;i>LGnYEcYC~9Snrsgwb@<9 zk{?k53dBOGfjIfd6-9`zde#rDm~5}Qwjb5iRn=8r&HFt) zoeXWX{M*FHbBz5-lf!0W@E*E92qKx}Wj4ZGE{!!VO=;b>Mh$7p)NM9u%CyYj-zw66 z$C@EKWf%5s+5Hi7dJb@&IXvcXf^^P%HMczJml|%tq7Ae(dItRibbVW3O8y#Ku%xkI zOLHMrWq}!3fgPj*7VyAWNpn`^t+iw&#i1i^vxW~0h$(*2`@@HSG`<@uK6&`puh;W8 zh8!dAnk>52$$3{5T|e&Dlf0*-t9&ON^IFX7F>ffcJLdVA7h*0SGS!3m-)~FqitBil{sZYmmk};*mRJDYanTs5ut;e0oeZ)hi`r6k#!!7)Jxq`!4 zfo!MNflg!XgKo}Xm4t=8tdA|E1162Y(Bn*%EKhuqewnS9m}T%YF)}_e>1Cw-jSc^t z;Ol!fU%HQxf3-Z5B%UD;cecf62gI4kgLY@i10QbwA3mAFtET6kz$KjmZPxR}TOxcM z?uVPQ5&caG)TZsbU*wN zLYgAF3mHq{PPnfxpwOJuQ3|$b5i&Q!UC3P&{o#fP_rmq)%di>l3OW<5;52R(khDje z7;RwTXK?IgMYNm?w{utmuin`Yw`qvWw&=*CaEk)s+20Ouif@7Zf-(@ZP9-TT;B9_R$Qh*rJr0X zq7~S>AMWIwL=$(W<)m6+MK92WRs4I#y^*j*@VD$o#UJ%DpFVgrWB09EB zZKJ}-F54AK^@K8E^ojwJsxYVe0(!MTYSqy4# z1nerCxVT`Tgd38-Le$XI1m!ChXP>1$X3_%4+jIZmh{mjNjbM)e6418+jM)S*trKc$ z&|d`X-jBY*>=)WT0jjy=`1b@-8jE&u459>JZ5<%Bgk^v@iA1#!gJNu~RU#&`;>0kQ z%VFVU%@`mEBxEB1Y~eO)&AtC95UnQnKfrZ>(`XS!9DyaczXnv|0FZtY9RQlFHE~f= zd^E5f(35MN8+MY<1jkgb)0+M^v2}4e^?q>&ecQ}<(kFaN+j!v!wX2VWuG(A6C zuio-1u{~Y(rmFhuL&KDQQO$NjBz^QK!nru}4usB?-7BP&PoS7F&t)#r94doGv z{)#Fg3FIV)oN~BKCM*FYA`>mT$GByPZ)`XlSHR*w13AVRXa!^jc|Oo2{hzoTs>q7B zX3qCFpb5m(v&84d&3co5J9Xd0!cC%d>qpkh-*VI2NTH z$Ve)`u6M&YjD^;|EBc|<;ZSUNmd|$N$Y(#Iv?Vb`M_E-s{60#D;Cq&h8H_*WJ13A*aUGaLnMF|?lxl!0Xe1;j z6D)e4s+Jkv1YX1FMow1A_SILAP}7hl>@jDRww7>qKn|`vC)~zM;-o(j(l|YKDHP+@ zlX#FO?XFVYtR3pM=ns-inM*S@i8rt&7KylQJnKfOc&wCEvx8D)3MlQN9EqqZcBahD zE$cmzyy#0Vq87T^MMaz@xX=K#fHq?N+HjEFO?G8m@v6^fFs6H|V!8JaltyC3G(=md IT;^W<4dX4f5C8xG From 288e17d020e11ee449084b56a1bed0fbe4f3a5fc Mon Sep 17 00:00:00 2001 From: Sw24sX Date: Sun, 24 Nov 2019 01:17:48 +0500 Subject: [PATCH 21/36] End change crossing --- Experiments/experiment.py | 69 +++++++++++++------ MeshToVoxel.py | 1 + Tests/TimeTestsForCrossing.py | 34 +++++++++ Tests/{TimeTests.py => TimeTestsForOctree.py} | 0 4 files changed, 83 insertions(+), 21 deletions(-) create mode 100644 Tests/TimeTestsForCrossing.py rename Tests/{TimeTests.py => TimeTestsForOctree.py} (100%) diff --git a/Experiments/experiment.py b/Experiments/experiment.py index 12ea0e8..ab56502 100644 --- a/Experiments/experiment.py +++ b/Experiments/experiment.py @@ -1,21 +1,48 @@ -def convert_base(num, to_base=10, from_base=10): - if isinstance(num, str): - n = int(num, from_base) - else: - n = int(num) - alphabet = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ" - if n < to_base: - return alphabet[n] - else: - return convert_base(n // to_base, to_base) + alphabet[n % to_base] - - -def is_polyndrom(n: int) -> int: - for base in range(2, 37): - num = convert_base(str(n), base, 10) - if num == num[::-1]: - return base - return 0 - - -print(is_polyndrom(99998)) +import matplotlib.pyplot as plt +from sympy import Line, Point, Segment +import numpy as np + + +def crossing(p1: Point, p2: Point, p3: Point, p4: Point): + line1, seg1 = Line(p1, p2), Segment(p1, p2) + line2, seg2 = Line(p3, p4), Segment(p3, p4) + intersect = line1.intersection(line2) + if intersect: + seg1 = Segment(p1, p2) + seg2 = Segment(p3, p4) + pi = intersect[0] + return seg1.contains(pi) and seg2.contains(pi) + + +print(crossing(Point(0, 1), Point(2, 0), Point(0, 4), Point(2, 0))) + +x1, y1 = [0, 1], [-1, 0] +x2, y2 = [0, 4], [2, 0] + +# объекты точек +p1, p2, p3, p4 = (Point(x1[0], y1[0]), Point(x1[1], y1[1]), + Point(x2[0], y2[0]), Point(x2[1], y2[1])) + +# объекты прямых для установления факта пересечения +# объекты отрезков для проверки наличия точки пересечения уже на отрезке +line1, seg1 = Line(p1, p2), Segment(p1, p2) +line2, seg2 = Line(p3, p4), Segment(p3, p4) + +intersect = line1.intersection(line2) +print(intersect) + +l1, = plt.plot(x1, y1, marker='o', zorder=3) +l2, = plt.plot(x2, y2, marker='o', zorder=3) + +if intersect: + pi = intersect[0] + if not seg1.contains(pi): + xydata = l1.get_xydata() + xydata = np.vstack((xydata, [pi.x, pi.y])) + plt.plot(xydata[:, 0], xydata[:, 1], '--', alpha=.5) + + if not seg2.contains(pi): + xydata = l2.get_xydata() + xydata = np.vstack((xydata, [pi.x, pi.y])) + plt.plot(xydata[:, 0], xydata[:, 1], '--', alpha=.5) +plt.show() \ No newline at end of file diff --git a/MeshToVoxel.py b/MeshToVoxel.py index b9b5544..64da701 100644 --- a/MeshToVoxel.py +++ b/MeshToVoxel.py @@ -9,6 +9,7 @@ def get_voxel_model(model, size_mod, size_voxel): :param size_voxel: :return: """ + # TODO Прикрепить новую структуру Octree octree = Octree.get_octree(model, size_mod, size_voxel) diff --git a/Tests/TimeTestsForCrossing.py b/Tests/TimeTestsForCrossing.py new file mode 100644 index 0000000..672a7d6 --- /dev/null +++ b/Tests/TimeTestsForCrossing.py @@ -0,0 +1,34 @@ +import time +import Crossing +from sympy import Line, Point, Segment + + +start_time = time.time() +for i in range(1000): + a = Crossing._check_crossing_lines([0, 0], [2, 0], [0, 2], [2, 2]) +print(a) +for i in range(1000): + a = Crossing._check_crossing_lines([0, 0], [2, 2], [0, 2], [2, 0]) +print(a) +print(print("--- %s seconds ---" % (time.time() - start_time))) + + +def crossing(p1: Point, p2: Point, p3: Point, p4: Point): + line1, seg1 = Line(p1, p2), Segment(p1, p2) + line2, seg2 = Line(p3, p4), Segment(p3, p4) + intersect = line1.intersection(line2) + if intersect: + seg1 = Segment(p1, p2) + seg2 = Segment(p3, p4) + pi = intersect[0] + return seg1.contains(pi) and seg2.contains(pi) + + +start_time = time.time() +for i in range(1000): + a = crossing(Point(0, 0), Point(2, 0), Point(0, 2), Point(2, 2)) +print(a) +for i in range(1000): + a = crossing(Point(0, 0), Point(2, 2), Point(0, 2), Point(2, 0)) +print(a) +print(print("--- %s seconds ---" % (time.time() - start_time))) diff --git a/Tests/TimeTests.py b/Tests/TimeTestsForOctree.py similarity index 100% rename from Tests/TimeTests.py rename to Tests/TimeTestsForOctree.py From 5a02e13519ce3b4e1576b4214af44eab3ac30064 Mon Sep 17 00:00:00 2001 From: Sw24sX Date: Sun, 24 Nov 2019 01:39:35 +0500 Subject: [PATCH 22/36] End create readObj --- ReadObj.py | 75 ++++++++++++++++++------------------------------------ 1 file changed, 25 insertions(+), 50 deletions(-) diff --git a/ReadObj.py b/ReadObj.py index 7e0b411..03a5dd6 100644 --- a/ReadObj.py +++ b/ReadObj.py @@ -1,55 +1,30 @@ -import math - - def read_file(path: str): - # TODO - # Работает не правильно, переделать """ - Возвращает список мешей из файла по указаному пути + парсит файл на меши :param path: путь к файлу - :return: список в формате [[mesh], [mesh], ...], где [mesh] это [[v1], [v2], [v3]], где [v] это [x, y, z], - [min_x, max_x], [min_y, max_y], [min_z, max_z] + :return: """ - res = [] + vertexes = _get_vertexes(path) + result = [] with open(path, "r") as file: - points = _get_list_vertex(file) - for string in file: - temp = string.split() - if len(temp) > 0 and temp[0] == "f": - temp = [i.split("/")[0] for i in temp[1:]] - res.append([points[0][int(i) - 1] for i in temp]) - - return res, points[1], points[2], points[3] - - -def _get_list_vertex(file): - points = [] - - min_x = math.inf - max_x = 0 - min_y = math.inf - max_y = 0 - min_z = math.inf - max_z = 0 - - for string in file: - temp = string.split() - if len(temp) > 0 and temp[0].lower() == "v": - points.append([float(i) for i in temp[1:]]) - if min_x > float(temp[1]): - min_x = float(temp[1]) - if min_y > float(temp[2]): - min_y = float(temp[2]) - if min_z > float(temp[3]): - min_z = float(temp[3]) - - if max_x < float(temp[1]): - max_x = float(temp[1]) - if max_y < float(temp[2]): - max_y = float(temp[2]) - if max_z < float(temp[3]): - max_z = float(temp[3]) - - if len(points) > 0 and (len(temp) > 0 or temp[0].lower() == "f"): - break - return points, [min_x, max_x], [min_y, max_y], [min_z, max_z] \ No newline at end of file + for line in file: + line = line.strip().split() + if len(line) > 0 and line[0].lower() == "f": + line = [int(i.split("/")[0]) for i in line[1:]] + result.append([vertexes[i - 1] for i in line]) + return result + + +def _get_vertexes(path: str): + result = [] + with open(path) as file: + for line in file: + line = line.strip().split() + if len(line) > 0 and line[0].lower() == "v": + result.append([float(i) for i in line[1:]]) + return result + + +def _check_line(line: str, letter: str): + line = line.strip().split() + return len(line) > 0 and line[0].lower() == letter From b0dbbe7254f48d413fae8f03ba710389776259d1 Mon Sep 17 00:00:00 2001 From: Sw24sX Date: Sun, 24 Nov 2019 02:34:56 +0500 Subject: [PATCH 23/36] Save. Need fixed --- Main.py | 10 ++++++ MeshToVoxel.py | 28 ++++++--------- OcTreeV2/OcTree.py | 2 +- .../__pycache__/NodeOcTreeV2.cpython-37.pyc | Bin 4774 -> 4774 bytes OcTreeV2/__pycache__/OcTree.cpython-37.pyc | Bin 4774 -> 4789 bytes ReadObj.py | 33 +++++++++++++++--- __pycache__/MeshToVoxel.cpython-37.pyc | Bin 723 -> 952 bytes __pycache__/ReadObj.cpython-37.pyc | Bin 0 -> 1788 bytes 8 files changed, 50 insertions(+), 23 deletions(-) create mode 100644 Main.py create mode 100644 __pycache__/ReadObj.cpython-37.pyc diff --git a/Main.py b/Main.py new file mode 100644 index 0000000..821c91d --- /dev/null +++ b/Main.py @@ -0,0 +1,10 @@ +import MeshToVoxel +import ReadObj +import Visualization + + +path = "experiments/deer.obj" +size_voxel = 1.0 +model = ReadObj.read_file(path) +voxels = MeshToVoxel.get_voxel_model(model[0], model[1], size_voxel) +Visualization.get_model(voxels, size_voxel) diff --git a/MeshToVoxel.py b/MeshToVoxel.py index 64da701..198cb9c 100644 --- a/MeshToVoxel.py +++ b/MeshToVoxel.py @@ -1,4 +1,4 @@ -import OcTree.CreateOcTree as Octree +from OcTreeV2.OcTree import Octree def get_voxel_model(model, size_mod, size_voxel): @@ -9,20 +9,12 @@ def get_voxel_model(model, size_mod, size_voxel): :param size_voxel: :return: """ - # TODO Прикрепить новую структуру Octree - - octree = Octree.get_octree(model, size_mod, size_voxel) - - res = [] - z = size_mod[2][0] - while z < size_mod[2][1]: - y = size_mod[1][0] - while y < size_mod[1][1]: - x = size_mod[0][0] - while x < size_mod[0][1]: - if octree.check_crossing([x, y, z], size_voxel): - yield [x, y, z] - x += size_voxel - y += size_voxel - z += size_voxel - return res + max_size_model = max(*[i[1] - i[0] for i in size_mod]) + start_pos = [i[0] for i in size_mod] + voxels = Octree.get_all_voxels(start_pos, size_voxel, max_size_model) + tree = Octree(voxels, size_voxel, size_mod, True) + tree.fill_tree() + for mesh in model: + temp = tree.get_all_crossing(mesh, tree.Start) + for i in temp: + yield i diff --git a/OcTreeV2/OcTree.py b/OcTreeV2/OcTree.py index 1cc0d62..8ba1584 100644 --- a/OcTreeV2/OcTree.py +++ b/OcTreeV2/OcTree.py @@ -92,7 +92,7 @@ def _get_all_voxels_vertex(voxel: [], size: float): # Tested """ Генерирует все вершины вокселя :param voxel: воксель - :param size: размер + :param size: размер вокселя :return: ленивый список вершин вокселя """ if size < 0: diff --git a/OcTreeV2/__pycache__/NodeOcTreeV2.cpython-37.pyc b/OcTreeV2/__pycache__/NodeOcTreeV2.cpython-37.pyc index bec2488e5cd455f0f5e378dc6463b0787e03a2d7..b14a5cdec329d4a3a7855a3e8100599c93c1502e 100644 GIT binary patch delta 725 zcmZWm-D(q25bm6&YqRa{rilitwYJp=i`Li*f>(kf2tu)U5|Cv{Pk&^SUCyp0?HhO} zJ+DxD(YvyW58xws<+<`f1fB0B#Ap}xn=^Cf`)1C}S?jFjKleO$ioe$%f4uwNxbS}y zb+j*H3d&4;prtC`g+k4-QFTBthFVFLbJ3pVfN|n1ll`5rGR(Y&*tC*)rxGg}|3fm) zF|CYMLSe+iM}~SKDgUpuE@n^mk;LIEFhVUulMeWF3wgF9D^r8J!tj{?TrfCOs>z1A z*I`Bs$a4rp4%uQ>siynY&rgu42zQlHsez#*L&xFtFn0|J|5w#--KU!lZY&?89F?$d zzRb1FHp*|VE86IBiw97BIq1r)I7s`-3XH~m53=JysapAK{tLCS5YvqIWD&(l5*?-k zndH%-RD~R|X%=Sicpp%9)HRvyPT{c`V`Xh z3gU%#Wn20HeTtr|K8VoHcQ(Wn7xtSobLRVI&dhcDy6tUOtL_Yc2l4OEi;ZvIUm~MD z5z%~}iZg2AG7zf5Mm+}1Pr%QqbR#-t4j3m&Q`tWZN=0T9u~{VtrW7d|{YNs+1+7d} z0%63)rlDRys&*%>v$?M)NaFAuj8H3V44v|6nNLL>E91jmWq8B?KrlEn>M0xMF2IZ# zkmnGd!XaDCD*3u!{{9Y`if~sNml_#5H*^uq7P-%nVCOJZRey4~UO&W*^t{!)8SUVc;iNjvM1 zurGpG;Hb9elB!}j~ gQJh4XB~J+!v)23drDrWcc0qeQVJzx?)@8l<4-I^Si~s-t diff --git a/OcTreeV2/__pycache__/OcTree.cpython-37.pyc b/OcTreeV2/__pycache__/OcTree.cpython-37.pyc index 88eb5dd5a8b9266846e12da77187afe53be7a47c..da983037242431fa785cd585e6d33481322c8bd9 100644 GIT binary patch delta 441 zcmYL^Jx{_=6o$P8ngVSpNC-uspzcEZ8I*~EJW^$t(&eb0HHep3Tx3MRs*bh z!f$d!g%=^M#Bh*7%rN*WG-VaIa8rxpQ+7IitLrhR)jhCGn!=ECIy4JgVU-le{cwY; zs94V-@(5J=yfGSCL-SuvHF%DutEi>32z2S<&|!A!xUN0ir*oKR5%cgJO_TCCCEgHH zf+s1Hto)XI;qQwuku;(~M1Cg|_>?ao#;I@?1HO*S3y@c`qyX#6SGj?Kz)<7q3f@DA x7NUt*LM+2h{IXueYnj0pUC;3B?xE%N9FuAoh4u!H;n4!_tip7nO>*EST0g5*YpDPL delta 437 zcmYL^u}{K46otc+9F2=Y$9UV2U zhUlb&ga3op)yc)d*~EJT@rEyVzxRG$au4O(va}{ikr{U0PT#jL@1?r{@!>IWOghjG zo(VBFsS%o(yash5_`xmv(4q=7_=@I>x@mTezCARlHR?o6+x4j3JMb(TXDynf` v5~77z1|xp8P{OOm;ES%Od$zG}d40#E1&l&FLr3>$5qDOhnCKD}P7 0 and line[0].lower() == "f": line = [int(i.split("/")[0]) for i in line[1:]] result.append([vertexes[i - 1] for i in line]) - return result + return result, mod[1] def _get_vertexes(path: str): result = [] + min_x = math.inf + min_y = math.inf + min_z = math.inf + max_x = 0.0 + max_y = 0.0 + max_z = 0.0 with open(path) as file: for line in file: line = line.strip().split() if len(line) > 0 and line[0].lower() == "v": - result.append([float(i) for i in line[1:]]) - return result + line = [float(i) for i in line[1:]] + result.append(line) + if min_x > line[0]: + min_x = line[0] + if max_x < line[0]: + max_x = line[0] + + if min_y > line[1]: + min_y = line[1] + if max_y < line[1]: + max_y = line[1] + + if min_z > line[2]: + min_z = line[2] + if max_z < line[2]: + max_z = line[2] + return result, [[min_x, max_x], [min_y, max_y], [min_z, max_z]] def _check_line(line: str, letter: str): diff --git a/__pycache__/MeshToVoxel.cpython-37.pyc b/__pycache__/MeshToVoxel.cpython-37.pyc index 5c565a66665f9abd79d6c423aef37936c915dd00..91ed5c7de1ef48a3159d7a3b6603721f8d08dd8f 100644 GIT binary patch literal 952 zcmZuvO>5gg5S`UmWMMnSzrj^#vBEfU6Yl%2N*IG0>o{B-BE^(o3s1R*jP>D)eT7{0 z)ZaMQ61G+{EmJaeqvm?TG9Bm4)2_7K$c(kR0S0M1gFZ~2<~vx?GRznHM#;^zk(pSx z@=8`2;l9PYQ&_w?1y4tc#_Ee@H8DDKhdWU-iakHw?o7{6U6@ofA#<{!r+q7kf| zB*4m%FFp)oS!&Ohw^la{MB>KLyjR5*f*2XFdUEb3Q%Rq!@WXaDj9n)bJ)D&L|4>2a zOBH)Kkt(XCiaYj95|>0<3MbXvpma~4?+`RG)o|P~86LNcLd6T<#LTV}FDDGQ+=N|u zA0VKA&3;raxjYskn4R1DAaQuovI<>lu+8#n3ro(VKD$o0Tdw$_T@m!vbRLVskUNB} z$pf?qtt+&|kLLelUhMwm83_{&Okg%xT|OqW@NF?($LeuQwRcb4A(9`xXm2M{rCfdB Wi*$(0Da0Z(v;lN6dF=cWQ33wM_97rU8R+Td@1dv zho1TY?y=BQf1_W}z4qi^=&7?SI~Y1*M(@qrotd2%!=VFc$De*re;ELO6xkVac#bX} zV@Mz&8RWz_2qZ>AKY~va@&+d6232?!Q}sjZqg&`Py7-Bqgf(fQC9Uy|uILO_W=j$> z#wuf2S=E=;+HyLEIq)CI5NXw}lGfhxPF*9zds^*PUfbL9PW{@_wShUiwPqCi8T|8( zT>$~a##31Jmcd)VGYZ?w6U3Ir*3w06sy8(s9LGiTZX+J$ZeAoT^Y$|$ZCHqD&%M6R z(?wVvx_MNE)%4KSyzY3t<4wn#>GZ!U?~3ZaIA`S@Uv!-|YX6*I*r+g}(!PjG&Y17a zSQ!=?%Tav8;&~YJLWp!RoAjlnr}g{05v8M%ZsXhAYm_q~Nh3)uN%bB006Y9We(440 z^;w!R5xlO;ViCMA_&m5$1Ex(>rkFWr;^wl@siWIkK2)RV(rOzlGqH|%f&m_k43iAV zqkC7V`}hd;iRm9)#FzM@%+F>En9By)Z;U_Mc(XyNsQv1qrpU0sRN% C#kUdw diff --git a/__pycache__/ReadObj.cpython-37.pyc b/__pycache__/ReadObj.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..29e1cac7300b11827c39909c7462cd4836cb5c37 GIT binary patch literal 1788 zcmZux&u<$=6n-=N!@F)$N zXjg(dh$10Xa6}byE=b&RK`I5rg(E_?#HD+LQ~rgV_}=W=B~^FzX5PG+dGp?z@0<5# zXN!a{`2O+cHJj*P9!x$1%Da&89W)+!BA|8hg(n{f&+yDcb6w^m%d;^ue1UP{f%F{D z#n|-34XPARu$$H@A~k!p=vH0u5T6BcA$&^s9h!(@8i+*1!V@L>ikg(jNW|pHfxN$+ z82zo-Sf$PN#Ei|MJffj-M2Q(;G{BCwspeyxSfZhIM4r)>YTh$F>yTizy}}o=M62xI zjOEb&k{SY0T8B<-vh_#^+MT~iH_0n}OxNjCiY4N(OVp6a!QI7MZ* zTc`YJPj!~`Kyh(Wp;FP9)=9#Io1q(!@CuqH>a;nR2-Hgqg-1uaUIX!s+%*xaJQZ(f zKNXo8txl9$VJ~P!7|De#Iu}*Y-bX1%9~k(SFqJY~1Op_QogOz8|y> zYEcW8>weAqaBF*^w|`n(4q9PU@9y+gp65uiunsOOEU7l&Wnnq!)@wny0%fxDg!5TD zlL}w^3+&($8lB38MBGCv9$lgm-1b%E_x(^$s&hOwgXSV6 z52{i~XRA#=s!o=sX1C{eP>4vida8hxsS&Ut=-%;FYS((0_9~X*q*7z2>!r5x!@VF% zO-?N}gI34Sq7mvm7U^?ScbdG(r@x4XY)3f46f>d-d0EVfd7(0gjY}? z;2d|kEr51z4c!9Ci3PDCg-9|p?*E-Q{Xb&|9QY$~W0&ziG{FHkvSJq;kl?^#?0P`@ z(9Suqm~+4d2WZLx7sx5ZE~6ee*E_KH+e}Mj41esUP3ni-X2k|H@B!-{Wm;myc5Wl} zS8lUo6Iwy9`zO=DIGm+zq~pVEQrKP8Y@?iQ0&!SPiBoK}*wK_tLvznrYob#6%jt1@ zT1&n!F1_XkmtO;FCgaA05&6BPRwL-vz=J1n${@rS@&re(Vl)BwD`!yjEP!j6o^Tiy zCpC9KcII3|U0|Qg6OA^-;8cuy#X(kz8fa<``nt8#>Qwt#x1V(f=xTj!M8`&S2kIr> z&#ZYm?B`%(U*TJ52;j5zZ$dKx!wC?%cUa`veoiR%fWolz)DHY8@>QLa;*Wb4jn~(p z#55!zPXKw8A(LOp{p`_@boge)Bv3|wRHG;>VJ-=x0*W3AoO0~ukd3O@>A*<=P#bW`X9=Tg!=#h literal 0 HcmV?d00001 From 7665762e1d6c85074b04008f1207ef0ee86398e0 Mon Sep 17 00:00:00 2001 From: Alllex202 <56914444+Alllex202@users.noreply.github.com> Date: Sun, 24 Nov 2019 16:30:29 +0500 Subject: [PATCH 24/36] Fixed zooming and minor changes. Fixed zooming on start for little model (eg for one voxel). And changed the type of transmitted data for color. --- Visual_2_0.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Visual_2_0.py b/Visual_2_0.py index 9ded471..67b8934 100644 --- a/Visual_2_0.py +++ b/Visual_2_0.py @@ -73,7 +73,7 @@ def _GetVoxel(voxel_size: float, voxel: []): def _Model(model: [], debug_mode: bool): for verticies in model[0]: glBegin(GL_QUADS) - glColor3f(1, 0, 0) + glColor3ub(255, 0, 0) for surface in model[2]: for vertex in surface: glVertex3fv(verticies[vertex]) @@ -83,7 +83,7 @@ def _Model(model: [], debug_mode: bool): glBegin(GL_LINES) # Отображение границ for edge in model[1]: for vertex in edge: - glColor3f(1, 1, 0) + glColor3ub(255, 255, 0) glVertex3fv(verticies[vertex]) glEnd() @@ -95,7 +95,7 @@ def _ModelCentering(voxels_coords: [], extreme_coordinates: (), voxel_size: floa """ dif_x = extreme_coordinates[1][0] - extreme_coordinates[0][0] dif_y = extreme_coordinates[1][1] - extreme_coordinates[0][1] - dif_z = extreme_coordinates[1][2] - extreme_coordinates[0][2] + dif_z = extreme_coordinates[1][2] - extreme_coordinates[0][2] + voxel_size for voxel_coords in voxels_coords: voxel_coords[0] = voxel_coords[0] - extreme_coordinates[0][0] - (dif_x / 2) From 0bab783e39818704056e9c6ec046e6dd5e91e11e Mon Sep 17 00:00:00 2001 From: Alllex202 <56914444+Alllex202@users.noreply.github.com> Date: Sun, 24 Nov 2019 16:31:38 +0500 Subject: [PATCH 25/36] Fixed zooming and minor changes. Fixed zooming on start for little model (eg for one voxel). And changed the type of transmitted data for color. --- Visual_2_0.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Visual_2_0.py b/Visual_2_0.py index 9ded471..67b8934 100644 --- a/Visual_2_0.py +++ b/Visual_2_0.py @@ -73,7 +73,7 @@ def _GetVoxel(voxel_size: float, voxel: []): def _Model(model: [], debug_mode: bool): for verticies in model[0]: glBegin(GL_QUADS) - glColor3f(1, 0, 0) + glColor3ub(255, 0, 0) for surface in model[2]: for vertex in surface: glVertex3fv(verticies[vertex]) @@ -83,7 +83,7 @@ def _Model(model: [], debug_mode: bool): glBegin(GL_LINES) # Отображение границ for edge in model[1]: for vertex in edge: - glColor3f(1, 1, 0) + glColor3ub(255, 255, 0) glVertex3fv(verticies[vertex]) glEnd() @@ -95,7 +95,7 @@ def _ModelCentering(voxels_coords: [], extreme_coordinates: (), voxel_size: floa """ dif_x = extreme_coordinates[1][0] - extreme_coordinates[0][0] dif_y = extreme_coordinates[1][1] - extreme_coordinates[0][1] - dif_z = extreme_coordinates[1][2] - extreme_coordinates[0][2] + dif_z = extreme_coordinates[1][2] - extreme_coordinates[0][2] + voxel_size for voxel_coords in voxels_coords: voxel_coords[0] = voxel_coords[0] - extreme_coordinates[0][0] - (dif_x / 2) From 7d5588c78ecd85ae2ed065f37c0fa778d53e6a47 Mon Sep 17 00:00:00 2001 From: Alllex202 Date: Sun, 24 Nov 2019 17:38:45 +0500 Subject: [PATCH 26/36] Minor changes. --- Visual_2_0.py | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/Visual_2_0.py b/Visual_2_0.py index 67b8934..0f5fe0d 100644 --- a/Visual_2_0.py +++ b/Visual_2_0.py @@ -29,21 +29,21 @@ def _GetModel(voxel_size: float, voxels_coords: []): (0, 4), (2, 1), (2, 3), - (2, 7), - (6, 3), - (6, 4), - (6, 7), + (2, 6), + (7, 3), + (7, 4), + (7, 6), (5, 1), (5, 4), - (5, 7) + (5, 6) ), ( # Поверхности (0, 1, 2, 3), - (3, 2, 7, 6), - (6, 7, 5, 4), + (3, 2, 6, 7), + (7, 6, 5, 4), (4, 5, 1, 0), - (1, 5, 7, 2), - (4, 0, 3, 6) + (1, 5, 6, 2), + (4, 0, 3, 7) ) ) @@ -65,8 +65,8 @@ def _GetVoxel(voxel_size: float, voxel: []): (x - 0.1, y - 0.1, z - 0.1), # левый низ зад (x + 0.1, y - 0.1, z + 0.1), # правый низ перед (x + 0.1, y + 0.1, z + 0.1), # правый верх перед - (x - 0.1, y - 0.1, z + 0.1), # левый низ перед - (x - 0.1, y + 0.1, z + 0.1) # левый верх перед + (x - 0.1, y + 0.1, z + 0.1), # левый верх перед + (x - 0.1, y - 0.1, z + 0.1) # левый низ перед ) @@ -93,14 +93,14 @@ def _ModelCentering(voxels_coords: [], extreme_coordinates: (), voxel_size: floa :param extreme_coordinates: в виде -> ((Xmin, Ymin, Zmin), (Xmax, Ymax, Zmax)) :return: () """ - dif_x = extreme_coordinates[1][0] - extreme_coordinates[0][0] - dif_y = extreme_coordinates[1][1] - extreme_coordinates[0][1] + dif_x = extreme_coordinates[1][0] - extreme_coordinates[0][0] + voxel_size + dif_y = extreme_coordinates[1][1] - extreme_coordinates[0][1] + voxel_size dif_z = extreme_coordinates[1][2] - extreme_coordinates[0][2] + voxel_size for voxel_coords in voxels_coords: - voxel_coords[0] = voxel_coords[0] - extreme_coordinates[0][0] - (dif_x / 2) - voxel_coords[1] = voxel_coords[1] - extreme_coordinates[0][1] - (dif_y / 2) - voxel_coords[2] = voxel_coords[2] - extreme_coordinates[0][2] - (dif_z / 2) + voxel_coords[0] = voxel_coords[0] - extreme_coordinates[0][0] + voxel_size / 2 - (dif_x / 2) + voxel_coords[1] = voxel_coords[1] - extreme_coordinates[0][1] + voxel_size / 2 - (dif_y / 2) + voxel_coords[2] = voxel_coords[2] - extreme_coordinates[0][2] + voxel_size / 2 - (dif_z / 2) max_half = max(dif_x, dif_y, dif_z) / 2 / voxel_size return (max_half * 1.3, max_half * 10) From 0949906fac5b0d4926507178a86a3a1d0bc0243e Mon Sep 17 00:00:00 2001 From: Sw24sX Date: Sun, 24 Nov 2019 18:48:02 +0500 Subject: [PATCH 27/36] Save --- Main.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Main.py b/Main.py index 821c91d..9d832da 100644 --- a/Main.py +++ b/Main.py @@ -3,8 +3,8 @@ import Visualization -path = "experiments/deer.obj" -size_voxel = 1.0 +path = "experiments/sphere.obj" +size_voxel = 0.1 model = ReadObj.read_file(path) voxels = MeshToVoxel.get_voxel_model(model[0], model[1], size_voxel) Visualization.get_model(voxels, size_voxel) From 58341650095bae204db62616ee7fdd1e71d96a02 Mon Sep 17 00:00:00 2001 From: Alllex202 Date: Mon, 25 Nov 2019 22:32:46 +0500 Subject: [PATCH 28/36] Updated debug mode. Changed colors. --- Visual_2_0.py | 196 +++++++++++++++++++++++++++++++++++++------------- 1 file changed, 147 insertions(+), 49 deletions(-) diff --git a/Visual_2_0.py b/Visual_2_0.py index dcf675d..0862954 100644 --- a/Visual_2_0.py +++ b/Visual_2_0.py @@ -10,7 +10,8 @@ Импортировать метод ShowModel - Принимает 4 аргумента: 1 - массив с координатама (x, y, z) вокселей 2 - размер вокселя - 3 - крайние координаты объекта в виде -> ((Xmin, Ymin, Zmin), (Xmax, Ymax, Zmax)) + 3 - крайние координаты объекта в виде (Желательно в классе "Tuple", для отлова непредвиденных изменений) + -> ((Xmin, Ymin, Zmin), (Xmax, Ymax, Zmax)) 4 - debug_mod (True/False) ____________________________________________________________ Приоритеты в планах: @@ -20,24 +21,44 @@ ''' -def _GetModel(voxel_size: float, voxels_coords: []): +def _GetModel(voxel_size: float, voxels_coords: [], debug_mode: bool): model = ( [], # Вершины - ( # Грани - (0, 1), - (0, 3), - (0, 4), - (2, 1), - (2, 3), - (2, 6), - (7, 3), - (7, 4), - (7, 6), - (5, 1), - (5, 4), - (5, 6) + ( # Поверхности для debug_mode + (0, 1, 2, 3), + (4, 5, 6, 7), + (8, 9, 10, 11), + (12, 13, 14, 15), + (16, 17, 18, 19), + (20, 21, 22, 23) + ), + ( # Ребра для debug_mode + (10, 30, 26, 9), # Верх + (26, 25, 8, 9), + (25, 29, 11, 8), + (29, 30, 10, 11), + (31, 27, 13, 14), # Низ + (27, 13, 12, 24), + (24, 12, 15, 28), + (14, 15, 28, 31), + (31, 30, 6, 7), # Перед + (30, 29, 5, 6), + (29, 28, 4, 5), + (7, 4, 28, 31), + (27, 26, 2, 3), # Зад + (26, 25, 1, 2), + (1, 0, 24, 25), + (3, 0, 24, 27), + (27, 26, 16, 17), # Лево + (26, 30, 19, 16), + (19, 30, 31, 18), + (17, 18, 31, 27), + (28, 29, 22, 23), # Право + (29, 25, 21, 22), + (25, 21, 20, 24), + (24, 28, 23, 20) ), - ( # Поверхности + ( # Поверхности для нормального вокселя (0, 1, 2, 3), (3, 2, 6, 7), (7, 6, 5, 4), @@ -48,42 +69,118 @@ def _GetModel(voxel_size: float, voxels_coords: []): ) for voxel_coords in voxels_coords: - model[0].append(_GetVoxel(voxel_size, voxel_coords)) + if debug_mode: + model[0].append(_GetDebugVoxel(voxel_size, voxel_coords)) + else: + model[0].append(_GetVoxel(voxel_size, voxel_coords)) return model -def _GetVoxel(voxel_size: float, voxel: []): - x = voxel[0] / voxel_size / 5 - y = voxel[1] / voxel_size / 5 - z = voxel[2] / voxel_size / 5 +def _GetVoxel(voxel_size: float, voxel_coord: []): + x = voxel_coord[0] / voxel_size / 5 + y = voxel_coord[1] / voxel_size / 5 + z = voxel_coord[2] / voxel_size / 5 + half_side = 0.2 / 2 + + return ( + (x + half_side, y - half_side, z - half_side), # правый низ зад + (x + half_side, y + half_side, z - half_side), # правый верх зад + (x - half_side, y + half_side, z - half_side), # левый верх зад + (x - half_side, y - half_side, z - half_side), # левый низ зад + (x + half_side, y - half_side, z + half_side), # правый низ перед + (x + half_side, y + half_side, z + half_side), # правый верх перед + (x - half_side, y + half_side, z + half_side), # левый верх перед + (x - half_side, y - half_side, z + half_side) # левый низ перед + ) + + +def _GetDebugVoxel(voxel_size: float, voxel_coord: []): + x = voxel_coord[0] / voxel_size / 5 + y = voxel_coord[1] / voxel_size / 5 + z = voxel_coord[2] / voxel_size / 5 + border = 0.01 # Ширина ребра + half_side = 0.2 / 2 return ( - (x + 0.1, y - 0.1, z - 0.1), # правый низ зад - (x + 0.1, y + 0.1, z - 0.1), # правый верх зад - (x - 0.1, y + 0.1, z - 0.1), # левый верх зад - (x - 0.1, y - 0.1, z - 0.1), # левый низ зад - (x + 0.1, y - 0.1, z + 0.1), # правый низ перед - (x + 0.1, y + 0.1, z + 0.1), # правый верх перед - (x - 0.1, y + 0.1, z + 0.1), # левый верх перед - (x - 0.1, y - 0.1, z + 0.1) # левый низ перед + # --Внутренние-- + # зад (0 - 3) + (x + half_side - border, y - half_side + border, z - half_side), # правый низ зад + (x + half_side - border, y + half_side - border, z - half_side), # правый верх зад + (x - half_side + border, y + half_side - border, z - half_side), # левый верх зад + (x - half_side + border, y - half_side + border, z - half_side), # левый низ зад + + # Перед (4 - 7) + (x + half_side - border, y - half_side + border, z + half_side), # правый низ перед + (x + half_side - border, y + half_side - border, z + half_side), # правый верх перед + (x - half_side + border, y + half_side - border, z + half_side), # левый верх перед + (x - half_side + border, y - half_side + border, z + half_side), # левый низ перед + + # Верх (8 - 11) + (x + half_side - border, y + half_side, z - half_side + border), # правый верх зад + (x - half_side + border, y + half_side, z - half_side + border), # левый верх зад + (x - half_side + border, y + half_side, z + half_side - border), # левый верх перед + (x + half_side - border, y + half_side, z + half_side - border), # правый верх перед + + # Низ (12 - 15) + (x + half_side - border, y - half_side, z - half_side + border), # правый низ зад + (x - half_side + border, y - half_side, z - half_side + border), # левый низ зад + (x - half_side + border, y - half_side, z + half_side - border), # левый низ перед + (x + half_side - border, y - half_side, z + half_side - border), # правый низ перед + + # Лево (16 - 19) + (x - half_side, y + half_side - border, z - half_side + border), # левый верх зад + (x - half_side, y - half_side + border, z - half_side + border), # левый низ зад + (x - half_side, y - half_side + border, z + half_side - border), # левый низ перед + (x - half_side, y + half_side - border, z + half_side - border), # левый верх перед + + # Право (20 - 23) + (x + half_side, y - half_side + border, z - half_side + border), # правый низ зад + (x + half_side, y + half_side - border, z - half_side + border), # правый верх зад + (x + half_side, y + half_side - border, z + half_side - border), # правый верх перед + (x + half_side, y - half_side + border, z + half_side - border), # правый низ перед + + # ------------------------------------------------------------------------------------ + + # --Внешние-- (24 - 31) + (x + half_side, y - half_side, z - half_side), # правый низ зад + (x + half_side, y + half_side, z - half_side), # правый верх зад + (x - half_side, y + half_side, z - half_side), # левый верх зад + (x - half_side, y - half_side, z - half_side), # левый низ зад + (x + half_side, y - half_side, z + half_side), # правый низ перед + (x + half_side, y + half_side, z + half_side), # правый верх перед + (x - half_side, y + half_side, z + half_side), # левый верх перед + (x - half_side, y - half_side, z + half_side), # левый низ перед ) def _Model(model: [], debug_mode: bool): - for verticies in model[0]: - glBegin(GL_QUADS) - glColor3ub(255, 0, 0) - for surface in model[2]: - for vertex in surface: - glVertex3fv(verticies[vertex]) - glEnd() - if debug_mode: - glBegin(GL_LINES) # Отображение границ - for edge in model[1]: - for vertex in edge: - glColor3ub(255, 255, 0) + if debug_mode: + # Отрисовка маленьких граней + for verticies in model[0]: + glBegin(GL_QUADS) + glColor3ub(27, 171, 104) # Выбор цвета + for surface in model[1]: + for vertex in surface: + glVertex3fv(verticies[vertex]) + glEnd() + + # Отрисовка ребер + for verticies in model[0]: + glBegin(GL_QUADS) + glColor3ub(0, 0, 0) # Выбор цвета + for surface in model[2]: + for vertex in surface: + glVertex3fv(verticies[vertex]) + glEnd() + else: + # Отрисовка больших граней + for verticies in model[0]: + glBegin(GL_QUADS) + glColor3ub(27, 171, 104) # Выбор цвета + for surface in model[3]: + for vertex in surface: glVertex3fv(verticies[vertex]) glEnd() @@ -107,23 +204,24 @@ def _ModelCentering(voxels_coords: [], extreme_coordinates: (), voxel_size: floa def ShowModel(voxels_coords: [], voxel_size: float, extreme_coordinates: (), debug_mode: bool): - """ - :param extreme_coordinates: в виде -> ((Xmin, Ymin, Zmin), (Xmax, Ymax, Zmax)) - :return: () - """ + perspective = _ModelCentering(voxels_coords, extreme_coordinates, voxel_size) - model = _GetModel(voxel_size, voxels_coords) + + model = _GetModel(voxel_size, voxels_coords, debug_mode) pygame.init() display = (800, 600) # Размер окна pygame.display.set_mode(display, DOUBLEBUF | OPENGL) - pygame.display.set_caption("Result") # Название окна - gluPerspective(45, (display[0] / display[1]), 0.1, perspective[1]) + glEnable(GL_DEPTH_TEST) # Необходимо для корректного отображения без просветов + if debug_mode: + glClearColor(100 / 255, 100 / 255, 100 / 255, 1) # Выбор цвета фона + else: + glClearColor(70 / 255, 70 / 255, 70 / 255, 1) # Выбор цвета фона + gluPerspective(45, (display[0] / display[1]), 0.1, perspective[1]) glTranslatef(0, 0, -perspective[0]) - glRotatef(0, 0, 0, 0) x_move = 0 From bed6edea4f930a9a3d5a6080d97a4afd3bf86ba6 Mon Sep 17 00:00:00 2001 From: Alllex202 <56914444+Alllex202@users.noreply.github.com> Date: Mon, 25 Nov 2019 22:59:19 +0500 Subject: [PATCH 29/36] Minor changes --- Visual_2_0.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/Visual_2_0.py b/Visual_2_0.py index 0862954..8c98a63 100644 --- a/Visual_2_0.py +++ b/Visual_2_0.py @@ -15,8 +15,6 @@ 4 - debug_mod (True/False) ____________________________________________________________ Приоритеты в планах: - - Добавить цвет - - Переработать debug_mode - Доделать полноценное перемещение (На данный момент: вращение только по одной оси и зум) ''' @@ -299,4 +297,4 @@ def ShowModel(voxels_coords: [], voxel_size: float, extreme_coordinates: (), deb glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT) _Model(model, debug_mode) pygame.display.flip() - pygame.time.wait(10) \ No newline at end of file + pygame.time.wait(10) From 3986ad5a5c3033ceecc90168b8c069a4f727aeb8 Mon Sep 17 00:00:00 2001 From: Sw24sX Date: Wed, 27 Nov 2019 17:36:00 +0500 Subject: [PATCH 30/36] add some tests, change method get_child --- Experiments/experiment.py | 48 -------------- OcTreeV2/NodeOcTreeV2.py | 45 ++++++------- OcTreeV2/OcTree.py | 12 ++-- .../__pycache__/NodeOcTreeV2.cpython-37.pyc | Bin 4774 -> 4774 bytes OcTreeV2/__pycache__/OcTree.cpython-37.pyc | Bin 4789 -> 4758 bytes Tests/{OctreeV2.py => OctreeV2Tests.py} | 61 +++++++++--------- __pycache__/Crossing.cpython-37.pyc | Bin 7600 -> 7600 bytes __pycache__/MeshToVoxel.cpython-37.pyc | Bin 952 -> 952 bytes __pycache__/ReadObj.cpython-37.pyc | Bin 1788 -> 1788 bytes __pycache__/Visual_2_0.cpython-37.pyc | Bin 0 -> 5584 bytes __pycache__/Visualization.cpython-37.pyc | Bin 2622 -> 2622 bytes 11 files changed, 58 insertions(+), 108 deletions(-) rename Tests/{OctreeV2.py => OctreeV2Tests.py} (84%) create mode 100644 __pycache__/Visual_2_0.cpython-37.pyc diff --git a/Experiments/experiment.py b/Experiments/experiment.py index ab56502..e69de29 100644 --- a/Experiments/experiment.py +++ b/Experiments/experiment.py @@ -1,48 +0,0 @@ -import matplotlib.pyplot as plt -from sympy import Line, Point, Segment -import numpy as np - - -def crossing(p1: Point, p2: Point, p3: Point, p4: Point): - line1, seg1 = Line(p1, p2), Segment(p1, p2) - line2, seg2 = Line(p3, p4), Segment(p3, p4) - intersect = line1.intersection(line2) - if intersect: - seg1 = Segment(p1, p2) - seg2 = Segment(p3, p4) - pi = intersect[0] - return seg1.contains(pi) and seg2.contains(pi) - - -print(crossing(Point(0, 1), Point(2, 0), Point(0, 4), Point(2, 0))) - -x1, y1 = [0, 1], [-1, 0] -x2, y2 = [0, 4], [2, 0] - -# объекты точек -p1, p2, p3, p4 = (Point(x1[0], y1[0]), Point(x1[1], y1[1]), - Point(x2[0], y2[0]), Point(x2[1], y2[1])) - -# объекты прямых для установления факта пересечения -# объекты отрезков для проверки наличия точки пересечения уже на отрезке -line1, seg1 = Line(p1, p2), Segment(p1, p2) -line2, seg2 = Line(p3, p4), Segment(p3, p4) - -intersect = line1.intersection(line2) -print(intersect) - -l1, = plt.plot(x1, y1, marker='o', zorder=3) -l2, = plt.plot(x2, y2, marker='o', zorder=3) - -if intersect: - pi = intersect[0] - if not seg1.contains(pi): - xydata = l1.get_xydata() - xydata = np.vstack((xydata, [pi.x, pi.y])) - plt.plot(xydata[:, 0], xydata[:, 1], '--', alpha=.5) - - if not seg2.contains(pi): - xydata = l2.get_xydata() - xydata = np.vstack((xydata, [pi.x, pi.y])) - plt.plot(xydata[:, 0], xydata[:, 1], '--', alpha=.5) -plt.show() \ No newline at end of file diff --git a/OcTreeV2/NodeOcTreeV2.py b/OcTreeV2/NodeOcTreeV2.py index cc5b07a..ed5c500 100644 --- a/OcTreeV2/NodeOcTreeV2.py +++ b/OcTreeV2/NodeOcTreeV2.py @@ -54,38 +54,32 @@ def get_coordinate(mask: [], div_size): self.Children = [Node(self, div_size, get_coordinate([x, y, z], div_size)) for x in range(2) for y in range(2) for z in range(2)] - def find_and_get_child(self, pos_point: []): # Tested + def get_child(self, pos_point: []): # Tested """ - Ищет по позиционным координатам потомка :param pos_point: позиционная координата :return: """ - # TODO Сделать из этой херни конфетку if 0 in pos_point: raise Exception("pos_point shouldn't contains 0") + return self.Children[self._get_num_children_from_location(pos_point)] - if pos_point[0] == 1: - if pos_point[1] == 1: - if pos_point[2] == 1: - return self.Children[7] - else: - return self.Children[6] - else: - if pos_point[2] == 1: - return self.Children[5] - else: - return self.Children[4] - else: - if pos_point[1] == 1: - if pos_point[2] == 1: - return self.Children[3] - else: - return self.Children[2] - else: - if pos_point[2] == 1: - return self.Children[1] - else: - return self.Children[0] + def _get_num_children_from_location(self, location: []): + if location == [-1, -1, -1]: + return 0 + elif location == [-1, -1, 1]: + return 1 + elif location == [-1, 1, -1]: + return 2 + elif location == [-1, 1, 1]: + return 3 + elif location == [1, -1, -1]: + return 4 + elif location == [1, -1, 1]: + return 5 + elif location == [1, 1, -1]: + return 6 + elif location == [1, 1, 1]: + return 7 def distribute(self, is_voxels=False, size_voxels=0): """ @@ -96,6 +90,7 @@ def distribute(self, is_voxels=False, size_voxels=0): for ob in self.Objects: object_vertex = ob if is_voxels: + # TODO проверять только две диагоналные точки object_vertex = self._get_all_voxels_vertex(ob, size_voxels) location = self.get_location_point(object_vertex[0]) if 0 in location: diff --git a/OcTreeV2/OcTree.py b/OcTreeV2/OcTree.py index 8ba1584..2c59de9 100644 --- a/OcTreeV2/OcTree.py +++ b/OcTreeV2/OcTree.py @@ -104,13 +104,13 @@ def _get_all_voxels_vertex(voxel: [], size: float): # Tested @staticmethod def get_all_voxels(start_point: [], size_voxel: float, max_size: float): - x = 0 - while x < max_size: + z = 0 + while z < max_size: y = 0 while y < max_size: - z = 0 - while z < max_size: + x = 0 + while x < max_size: yield [start_point[0] + x, start_point[1] + y, start_point[2] + z] - z += size_voxel + x += size_voxel y += size_voxel - x += size_voxel + z += size_voxel diff --git a/OcTreeV2/__pycache__/NodeOcTreeV2.cpython-37.pyc b/OcTreeV2/__pycache__/NodeOcTreeV2.cpython-37.pyc index b14a5cdec329d4a3a7855a3e8100599c93c1502e..5fccfe9c39ba04e30ea29845d6595eaf1956201c 100644 GIT binary patch delta 20 acmZ3cx=fYZiI8DKR(8bVvB#*_|^FR`0Mz~SiLiLS40GRcLX37qkH;J?TIH& zA(?1RuQiF>J*s<^z*pPmA!J8y&C?ug^=-d~`& z)h59l!8}2DrdjTEyp}8en}wr3$DRBlDP|G&60LS{P!Vn4ueGY;4Arv)OX^qLhUL+0 z;tfDveX_DpP~WYK;EZBPhns68DyogtJml1N>cI*9mWgp4!+(lUWqr+szTWFdUGfGK zJ!D32R~jK}A~Sneq#3e9sSWU1T*xq~rzzu@8DXYjW~NzHqamXnF0;PbT`6Hd%#E&H zVmI*;YUteau?v^0%UB2ii-x`+@$s5?NS5=BLA3AV|TJjMe`s|j6n zR~9TrVoM^_4?q$B!4k4&$0r~p?zp0s=IESz&%L(ie9C>x*$-?xPVo8t`RD$ZulAIA zB2Y=F6G`gOfS@R-V5p5#I0X+H6f5S1_Gkn6y2o}%Sh28gG$`MeFo+BZ;FduYx5V_O zAqCP);+*x6>|g0qNd|FAhXAB|uuJrgg888me0$g&GYwo z1lx}}AQlpP#!l_n=aVSLED(Hbh@*}_jy!o)_gxW;S<`Q+r1cVtqa*7o1xJ01rV|Tj z=hyX&qyE~C`W}4*DYY1LU}>}!E7H894QUOF8p8Efxzq7m9={ys8TBENE-h=vHH5v1 zR$Cmpyd4C!R)yct^^}Gc4f=X{^b!)9t&V;r&H-}j%wB-JI=43fpq}f`P}y6TCz4pwD_u$s}zM-a%#bo=PKB9xAi9CCyMhm*{nfWb>G%N0AvJ zW5~>TQen?@MwsPY(l@)yyVwu8(Vat%nPZ)mx)#PmFdpOL>cbRx5kDmSse;8fG&ePD zYPh9gUBhj4e>y)qhm=qQ;_&~hsQ1$^)|Rwo6=6IPh_a};Z+ua0dpx5{=Ids=EO=IX O?kF~M2x;ZcZ2kiqY?iwK diff --git a/Tests/OctreeV2.py b/Tests/OctreeV2Tests.py similarity index 84% rename from Tests/OctreeV2.py rename to Tests/OctreeV2Tests.py index cae3e7e..368d703 100644 --- a/Tests/OctreeV2.py +++ b/Tests/OctreeV2Tests.py @@ -1,6 +1,7 @@ import unittest from OcTreeV2.NodeOcTreeV2 import Node from OcTreeV2.OcTree import Octree +import math def get_simple_node(size=4): @@ -103,6 +104,13 @@ def test_with_mesh_on_bounding_boxes(self): class TestsFillOctree(unittest.TestCase): + @staticmethod + def get_count_voxels_on_upper_node(size_voxel: float, max_size: float): + length = math.ceil(max_size / size_voxel) + if length % 2 == 0: + return math.pow(length, 3) - math.pow(((length / 2) - 1), 3) * 8 + return math.pow(length, 3) - math.pow(math.floor(length / 2), 3) * 8 + def test_with_one_voxel(self): points = [[0, 0, 0]] octree = get_octree(points, 4) @@ -112,27 +120,28 @@ def test_with_one_voxel(self): self.assertEqual([], ch.Objects) def test_with_8_voxels(self): - voxels = [] - for x in range(2): - for y in range(2): - for z in range(2): - voxels.append([x * 2, y * 2, z * 2]) + voxels = [i for i in Octree.get_all_voxels([0, 0, 0], 2, True)] tree = get_octree(voxels, 2, True) tree._fill_tree(tree.Start) + count_voxels = self.get_count_voxels_on_upper_node(2, 4) self.assertEqual(voxels, tree.Start.Objects) def test_with_64_voxels(self): - voxels = Node._get_all_voxels_vertex([0, 0, 0], 2) - v = [] - for i in voxels: - temp = Node._get_all_voxels_vertex(i, 1) - for t in temp: - v.append(t) - tree = get_octree(v, 1, True) + voxels = [i for i in Octree.get_all_voxels([0, 0, 0], 1, 4)] + tree = get_octree(voxels, 1, True) tree._fill_tree(tree.Start) - self.assertEqual(56, len(tree.Start.Objects)) + self.assertEqual(self.get_count_voxels_on_upper_node(1, 4), len(tree.Start.Objects)) for child in tree.Start.Children: - self.assertEqual(1, len(child.Objects)) + self.assertEqual(self.get_count_voxels_on_upper_node(1, 1), len(child.Objects)) + + def test_with_125_voxels(self): + voxels =[i for i in Octree.get_all_voxels([0, 0, 0], 1, 5)] + tree = Octree(voxels, 1, [[0, 5], [0, 5], [0, 5]], True) + #tree.fill_tree() + tree.Start.distribute(True, 1) + self.assertEqual(self.get_count_voxels_on_upper_node(1, 5), len(tree.Start.Objects)) + for child in range(8): + self.assertEqual(self.get_count_voxels_on_upper_node(1, 2) - 1, len(tree.Start.Children[child].Objects), str(child)) def test_with_voxels_in_child(self): # TODO @@ -149,23 +158,17 @@ def test_with_voxels_in_child(self): print(1) def test_with_512_voxels(self): - # TODO - # Работает правильно, но лень настраивать тест - voxels = Node._get_all_voxels_vertex([0, 0, 0], 2) - v = [] - for i in voxels: - temp = Node._get_all_voxels_vertex(i, 1) - for t in temp: - v.append(t) - voxels = [] - for i in v: - temp = Node._get_all_voxels_vertex(i, 0.5) - for t in temp: - voxels.append(t) + voxels = [i for i in Octree.get_all_voxels([0, 0, 0], 0.5, 4)] tree = get_octree(voxels, 0.5, True) tree._fill_tree(tree.Start) - #for ch in tree.Start.Children: - #self.assertEqual(26, len(ch.Objects)) + self.assertEqual(19200, len(tree.Start.Objects)) + + def test_temp(self): + voxels = [[0, 0, 3], [1, 0, 3], [0, 0, 4], [1, 0, 4]] + tree = Octree(voxels, 1, [[0, 2.5], [0, 2.5], [2.5, 5]], True) + tree.fill_tree() + #temp = self.get_count_voxels_on_upper_node(1, 2.5) + self.assertEqual(self.get_count_voxels_on_upper_node(1, 2.5), len(tree.Start.Objects)) class TestsDistribute(unittest.TestCase): diff --git a/__pycache__/Crossing.cpython-37.pyc b/__pycache__/Crossing.cpython-37.pyc index b4ac8417646850e6d34eb0c8db3235a6658e7997..56f927699dc0214310d291214e2bc613e681daaa 100644 GIT binary patch delta 20 acmdmBy}_E>iIiIlk(`OLh{=l446%vT(}M+9kdAnxtn} z3Z*Vj_Mykr$R%kG_OU2X6h&IJy|jNo3b?m+kxSc41oYTb4@H0P4Y?#`#SXg5c{}g- z-n^N4^Yw zSW#TFp}3Z#f2uo%W8O3D6d{iFsph1dH28GFXPhkf4D070&pQS1S!fqs(;0(>lCuv; z4jLvf%NhUFa3-8dV0lNqqEzNpMUB;C6+O;wwmPm~4ZLkPE^t1muD4pk3F55d zUf*a`Z?_zGU8h2LsDBpHIiz3#1U0LU=IC{!t9MRC>YVcat6d|~#K{P~nNl7op&BWX zaaVh&s>+@51l5MoH6_x~HgmCJRScoR?hX@;a#VN4*fA(i_3uyvc2W{eQ$9n424yEF z(LCh~M2bYlBwC{UJ|g2pCL}sZ`Tax=5IIQbA+&-D?HnO;7(|dEpbShAK<4}CQRH`? zC4lN+5p>IxXOwKQ2>oE)X#%JfLbgIYp8(vzLttUy1wsiB+{$MpN<|nDFH-I~iPA^b zMotjq0$AYc%LI^rg!GSW85btku?V_UL@+RHms>{N7UXh44u>uS)D=Oa!6KlXr;(E_ zCpl0m!hZa7D)^eV05I72*VE2f}jBMc(6XkwGru^;E%8Z?!L{YBu+_ZwK}+1a#+JP8TId0}>IEA$zxrzRPXLw5|^@NQN+IKyNQ>ud)(5xQD$yHf(Pc z8e3LFuuomkz9)$KTQqvqGKK|3xhN%Bpo zh?hYYkpfyCidy2=&?nX5m$edy(>$f=%?^(+MgAX$J66|%gDtp`T&_nJsB|iF?EE2F zPs<=JDeGyY+>>NavN@3ToZh!IVzV#XtG>r&PqE4Er(W*Sho{J7FZb{Z%Iz&fTfWlf z(`8SxIV^*v5r0V!B>mept|NUPkv+-gunhT;a>MmWnbh9h_uVq7mH2bS=AJV4<*+`q zhOopBk71AuVX_?(>(2v;Nqc>4*xo2MC|fUMQ%LQ-Dg1cymlyuNeedk9-61vD9mEN& zVeu^@CqZKCIwCe#h;I`@Tl&y0@eRtAH!6DV<+^gD97p9$R__J=qYuf1x3)Od4e=v6i z!M=a4<+sFZ8`lx$`&V5Nx}DeRo3`2T=bH{r{$xn(%qFDXy5|OVD%cS9+PWKCgt?tv z(sM?B$nLgC(a6_dnD5#<6gioUXA|p>CN5k=s8^sg?fGGv*MLVc;>Db5I;m||u2F!n(S{SUWjv?aHBq}=-ou5b%H>DD#_!SZ9)0%c zH|6pxXUgT7nRjn{&Ew_wnA)I~<7HsA4q-%X&`L#`7H+s9ny1P$k{`sO9CkMT{5d`U zKFhZs+!1vunwDYY>u4X3p=~-|z1oqVE&16N6^QLL^s5xG?4Dj@a(bO}o1rVbX5$ag zmSLmZhqSCZgZH?Go#lIwAuQ(D6(NcuxMtc`)(NABu0XU{c=p^!I0+wPu0&Yz*fG?I z?wmUEW~e>TA7Za?)UFk3H;o5oWQA6knpGZZwEqA}JA5|{GhvqYm`E2t40G6(=r!&d zs?sciH~D2g%sVunu<}8%Ga*<_M+W6cJ1pSVo&pbfPN5wrED}O5$(>Xexo#RMgOo+e zA?1-!vJ2hr7*Yvo--l}FGo&ME=h%bNL(Jt5)%T0t@o49`5aLJ%KQeqQrqjvZ0Oi_v8eoyDH zEDt&Ls}N2uBDK|fy+l2gB*`Qy;Fk^hwV462nGUM76Simmom zqjuYk4X^2iamw+6wqM(_(}5fE-#2z?&Faehl@&XW!^U@Of=?W~*zh-&T@ke1_0ZdNNxC9x&A`X@UdO*u z{^eFk+1PY9vCw0^;fAphZna(8cxUykmDsqm;e~eU;{1DaOKXd#EY}~GeH)4Ig6~uag^Kk6a(&`m-Xk}$-k!@MmH$vQ8 zW3BDcsmZOjC(xU7OAAYvtLXaqd3@elVNiB)0P+bI8+G4nqro2e@`IWeRwnk^h3s5= z-~@Tvp23jVRtMgOTdb|#cUykbovL8R*y*h#x82LdMi9DfyC`ao2Uk{W9WSVE?czIj z(QzBXbqDehz9Y`k^cju(;>?vBtq=HA{~Xd_6GYMSc+T%}8ZW(3Iyyf7KQB36G5`Po literal 0 HcmV?d00001 diff --git a/__pycache__/Visualization.cpython-37.pyc b/__pycache__/Visualization.cpython-37.pyc index 28aaec8e645d5537c4df72d4f210885aeb7ec384..ba4c97d7f8c7fc53b46622995f2c16c4c854f2d7 100644 GIT binary patch delta 20 acmdldvQLEDiI Date: Wed, 27 Nov 2019 23:44:26 +0500 Subject: [PATCH 31/36] fix get_location_point (uncorrect work with negative values) --- OcTreeV2/NodeOcTreeV2.py | 37 +++++++-------- OcTreeV2/OcTree.py | 2 +- Tests/OctreeV2Tests.py | 97 +++++++++++++++++++++++++++++++++++++--- 3 files changed, 109 insertions(+), 27 deletions(-) diff --git a/OcTreeV2/NodeOcTreeV2.py b/OcTreeV2/NodeOcTreeV2.py index ed5c500..3c9cd08 100644 --- a/OcTreeV2/NodeOcTreeV2.py +++ b/OcTreeV2/NodeOcTreeV2.py @@ -32,9 +32,9 @@ def get_location_point(self, point: []): # Tested """ res = [] for area in range(3): - if abs(self.BoundingBox[area] > abs(point[area])): + if (self.BoundingBox[area]) > (point[area]): res.append(-1) - elif abs(self.BoundingBox[area] < abs(point[area])): + elif (self.BoundingBox[area]) < (point[area]): res.append(1) else: res.append(0) @@ -81,32 +81,26 @@ def _get_num_children_from_location(self, location: []): elif location == [1, 1, 1]: return 7 - def distribute(self, is_voxels=False, size_voxels=0): + def distribute(self, is_voxels=True, size_voxels=0): """ Разбивает объекты в вершине между вершиной и детьми :return: """ node_objects = [] - for ob in self.Objects: - object_vertex = ob - if is_voxels: - # TODO проверять только две диагоналные точки - object_vertex = self._get_all_voxels_vertex(ob, size_voxels) - location = self.get_location_point(object_vertex[0]) - if 0 in location: - node_objects.append(ob) + for objects in self.Objects: + first_diagonal_vertex = objects + second_diagonal_vertex = [i + size_voxels for i in objects] + if self._compare_diagonal_vertexes(first_diagonal_vertex, second_diagonal_vertex): + node_objects.append(objects) continue - is_added = False - for i in object_vertex: - temp_location = self.get_location_point(i) - if 0 in temp_location or temp_location != location: - node_objects.append(ob) - is_added = True - break - if not is_added: - self.find_and_get_child(location).Objects.append(ob) + self.get_child(self.get_location_point(first_diagonal_vertex)).Objects.append(objects) self.Objects = node_objects + def _compare_diagonal_vertexes(self, first_vertex, second_vertex) -> bool: + location_first_vertex = self.get_location_point(first_vertex) + location_second_vertex = self.get_location_point(second_vertex) + return location_first_vertex != location_second_vertex or (0 in location_first_vertex in location_second_vertex) + @staticmethod def _get_all_voxels_vertex(voxel: [], size: float): # Tested """ @@ -123,3 +117,6 @@ def _get_all_voxels_vertex(voxel: [], size: float): # Tested for z in range(2): res.append([x * size + voxel[0], y * size + voxel[1], z * size + voxel[2]]) return res + + def __len__(self): + return len(self.Objects) diff --git a/OcTreeV2/OcTree.py b/OcTreeV2/OcTree.py index 2c59de9..e29002b 100644 --- a/OcTreeV2/OcTree.py +++ b/OcTreeV2/OcTree.py @@ -85,7 +85,7 @@ def _get_children_for_checked(vertexes: [], node: Node): # Tested continue if location not in children: children.append(location) - yield node.find_and_get_child(location) + yield node.get_child(location) @staticmethod def _get_all_voxels_vertex(voxel: [], size: float): # Tested diff --git a/Tests/OctreeV2Tests.py b/Tests/OctreeV2Tests.py index 368d703..d343040 100644 --- a/Tests/OctreeV2Tests.py +++ b/Tests/OctreeV2Tests.py @@ -4,8 +4,8 @@ import math -def get_simple_node(size=4): - return Node(None, size, [0, 0, 0]) +def get_simple_node(size=4.0, position=[0.0, 0.0, 0.0]): + return Node(None, size, position) class TestsAddChildren(unittest.TestCase): @@ -25,7 +25,7 @@ def test_simple(self): self.assertEqual(10, len(node.Objects)) -class TestsDectribute(unittest.TestCase): +class TestsDectributeForMeshes(unittest.TestCase): def test_add_one_object_on_bounding(self): node = get_simple_node() @@ -59,6 +59,76 @@ def test_last(self): self.assertEqual(1, len(node.Children[0].Objects)) +class TestDistributeForVoxels(unittest.TestCase): + + def test_distribute_one_voxel(self): + node = get_simple_node(4) + node.add_objects([[0, 0, 0]]) + node.distribute(True, 4) + self.assertEqual(1, len(node)) + + def test_with_8_voxels(self): + node = get_simple_node() + node.add_objects(Octree.get_all_voxels([0, 0, 0], 2, 4)) + node.distribute(True, 2) + self.assertEqual(8, len(node)) + + def test_with_27_voxels(self): + node = get_simple_node(3) + node.add_objects(Octree.get_all_voxels([0, 0, 0], 1, 3)) + node.distribute(True, 1) + self.assertEqual(TestsFillOctree.get_count_voxels_on_upper_node(1, 3), len(node)) + for i in range(8): + child = node.Children[i] + self.assertEqual(1, len(child)) + + def test_with_64_voxels(self): + node = get_simple_node() + node.add_objects(Octree.get_all_voxels([0, 0, 0], 1, 4)) + node.distribute(True, 1) + self.assertEqual(TestsFillOctree.get_count_voxels_on_upper_node(1, 4), len(node), "start node") + te = TestsFillOctree.get_count_voxels_on_upper_node(1, 4, ) + for i in range(8): + child = node.Children[i] + self.assertEqual(1, len(child)) + + def test_with_125_voxels(self): + node = get_simple_node(5) + node.add_objects(Octree.get_all_voxels([0, 0, 0], 1, 5)) + node.distribute(True, 1) + self.assertEqual(TestsFillOctree.get_count_voxels_on_upper_node(1, 5), len(node)) + for i in range(8): + child = node.Children[i] + self.assertEqual(8, len(child)) + + def test_bounding_boxes_on_start_coordinates_with_64_voxels(self): + node = get_simple_node(4, [-2, -2, -2]) + node.add_objects([i for i in Octree.get_all_voxels([-2, -2, -2], 1, 4)]) + node.distribute(True, 1) + self.assertEqual(TestsFillOctree.get_count_voxels_on_upper_node(1, 4), len(node), "start node") + for i in range(8): + child = node.Children[i] + self.assertEqual(1, len(child), "child num: " + str(i)) + + def test_bounding_boxes_on_start_coordinates_with_125_voxels(self): + node = get_simple_node(5, [-2.5, -2.5, -2.5]) + node.add_objects(Octree.get_all_voxels([-2.5, -2.5, -2.5], 1, 5)) + node.distribute(True, 1) + self.assertEqual(TestsFillOctree.get_count_voxels_on_upper_node(1, 5), len(node)) + for i in range(8): + child = node.Children[i] + self.assertEqual(8, len(child), "child num: " + str(i)) + + def test_bounding_boxes_on_negative_side_with_8_voxels(self): + node = get_simple_node(4, [-4, -4, -4]) + node.add_objects(Octree.get_all_voxels([-4, -4, -4], 2, 4)) + node.distribute(True, 2) + self.assertEqual(8, len(node)) + for i in range(8): + child = node.Children[i] + self.assertEqual(0, len(child), "child num: " + str(i)) + + def get_octree(objects=[], size_voxel=1.0, is_voxel=True): return Octree(objects, size_voxel, [[0, 4], [0, 4], [0, 4]], is_voxel) @@ -126,6 +196,14 @@ def test_with_8_voxels(self): count_voxels = self.get_count_voxels_on_upper_node(2, 4) self.assertEqual(voxels, tree.Start.Objects) + def test_with_27_voxels(self): + voxels = [i for i in Octree.get_all_voxels([0, 0, 0], 1, 3)] + tree = Octree(voxels, 1, [[0, 3], [0, 3], [0, 3]], True) + tree.fill_tree() + self.assertEqual(self.get_count_voxels_on_upper_node(1, 3), len(tree.Start.Objects)) + for i in range(8): + self.assertEqual(1, len(tree.Start.Children[i]), str(i)) + def test_with_64_voxels(self): voxels = [i for i in Octree.get_all_voxels([0, 0, 0], 1, 4)] tree = get_octree(voxels, 1, True) @@ -137,11 +215,14 @@ def test_with_64_voxels(self): def test_with_125_voxels(self): voxels =[i for i in Octree.get_all_voxels([0, 0, 0], 1, 5)] tree = Octree(voxels, 1, [[0, 5], [0, 5], [0, 5]], True) - #tree.fill_tree() - tree.Start.distribute(True, 1) + tree.fill_tree() + #tree.Start.distribute(True, 1) self.assertEqual(self.get_count_voxels_on_upper_node(1, 5), len(tree.Start.Objects)) for child in range(8): self.assertEqual(self.get_count_voxels_on_upper_node(1, 2) - 1, len(tree.Start.Children[child].Objects), str(child)) + for i in range(8): + ch = tree.Start.Children[child] + self.assertTrue(len(ch.Children[i]) == 1 or 0) def test_with_voxels_in_child(self): # TODO @@ -161,7 +242,11 @@ def test_with_512_voxels(self): voxels = [i for i in Octree.get_all_voxels([0, 0, 0], 0.5, 4)] tree = get_octree(voxels, 0.5, True) tree._fill_tree(tree.Start) - self.assertEqual(19200, len(tree.Start.Objects)) + self.assertEqual(self.get_count_voxels_on_upper_node(0.5, 4), len(tree.Start.Objects)) + for child in range(8): + ch = tree.Start.Children[child] + self.assertEqual(self.get_count_voxels_on_upper_node(0.5, 1.5), len(ch), str(child)) + def test_temp(self): voxels = [[0, 0, 3], [1, 0, 3], [0, 0, 4], [1, 0, 4]] From 36201ebf86da8dbb2baf469f85984a7c6568525b Mon Sep 17 00:00:00 2001 From: Sw24sX Date: Thu, 28 Nov 2019 01:11:34 +0500 Subject: [PATCH 32/36] Fix bugs --- Experiments/dode.obj | 92 ++++++++++++++++++ Main.py | 8 +- MeshToVoxel.py | 2 +- OcTreeV2/NodeOcTreeV2.py | 23 +++-- OcTreeV2/OcTree.py | 2 +- .../__pycache__/NodeOcTreeV2.cpython-37.pyc | Bin 4774 -> 5000 bytes OcTreeV2/__pycache__/OcTree.cpython-37.pyc | Bin 4758 -> 4780 bytes Tests/OctreeV2Tests.py | 28 +++--- __pycache__/MeshToVoxel.cpython-37.pyc | Bin 952 -> 1057 bytes 9 files changed, 132 insertions(+), 23 deletions(-) create mode 100644 Experiments/dode.obj diff --git a/Experiments/dode.obj b/Experiments/dode.obj new file mode 100644 index 0000000..6f98fad --- /dev/null +++ b/Experiments/dode.obj @@ -0,0 +1,92 @@ +#### +# +# OBJ File Generated by Meshlab +# +#### +# Object Dode.obj +# +# Vertices: 32 +# Faces: 12 +# +#### +vn 0.934172 -0.000000 0.356822 +v 4.236068 0.000000 1.618034 +vn 0.577350 0.577350 0.577350 +v 2.618034 2.618034 2.618034 +vn -0.000000 0.356822 0.934172 +v 0.000000 1.618034 4.236068 +vn -0.000000 -0.356822 0.934172 +v 0.000000 -1.618034 4.236068 +vn 0.577350 -0.577350 0.577350 +v 2.618034 -2.618034 2.618034 +vn 0.525731 0.000000 0.850651 +v 1.894427 0.000000 3.065248 +vn -0.577350 0.577350 0.577350 +v -2.618034 2.618034 2.618034 +vn -0.934172 -0.000000 0.356822 +v -4.236068 0.000000 1.618034 +vn -0.577350 -0.577350 0.577350 +v -2.618034 -2.618034 2.618034 +vn -0.525731 0.000000 0.850651 +v -1.894427 0.000000 3.065248 +vn 0.356822 0.934172 0.000000 +v 1.618034 4.236068 0.000000 +vn -0.356822 0.934172 0.000000 +v -1.618034 4.236068 0.000000 +vn 0.000000 0.850651 0.525731 +v 0.000000 3.065248 1.894427 +vn -0.356822 -0.934172 -0.000000 +v -1.618034 -4.236068 0.000000 +vn 0.356822 -0.934172 -0.000000 +v 1.618034 -4.236068 0.000000 +vn 0.000000 -0.850651 0.525731 +v -0.000000 -3.065248 1.894427 +vn 0.934172 -0.000000 -0.356822 +v 4.236068 0.000000 -1.618034 +vn 0.577350 0.577350 -0.577350 +v 2.618034 2.618034 -2.618034 +vn 0.850651 0.525731 0.000000 +v 3.065248 1.894427 0.000000 +vn -0.577350 0.577350 -0.577350 +v -2.618034 2.618034 -2.618034 +vn -0.934172 -0.000000 -0.356822 +v -4.236068 0.000000 -1.618034 +vn -0.850651 0.525731 0.000000 +v -3.065248 1.894427 0.000000 +vn -0.577350 -0.577350 -0.577350 +v -2.618034 -2.618034 -2.618034 +vn -0.850651 -0.525731 0.000000 +v -3.065248 -1.894427 0.000000 +vn 0.577350 -0.577350 -0.577350 +v 2.618034 -2.618034 -2.618034 +vn 0.850651 -0.525731 0.000000 +v 3.065248 -1.894427 0.000000 +vn -0.000000 0.356822 -0.934172 +v 0.000000 1.618034 -4.236068 +vn 0.000000 0.850651 -0.525731 +v 0.000000 3.065248 -1.894427 +vn -0.000000 -0.356822 -0.934172 +v 0.000000 -1.618034 -4.236068 +vn 0.000000 -0.850651 -0.525731 +v 0.000000 -3.065248 -1.894427 +vn 0.525731 0.000000 -0.850651 +v 1.894427 0.000000 -3.065248 +vn -0.525731 0.000000 -0.850651 +v -1.894427 0.000000 -3.065248 +# 32 vertices, 0 vertices normals + +f 2//2 3//3 4//4 5//5 1//1 +f 8//8 9//9 4//4 3//3 7//7 +f 3//3 2//2 11//11 12//12 7//7 +f 14//14 15//15 5//5 4//4 9//9 +f 1//1 17//17 18//18 11//11 2//2 +f 12//12 20//20 21//21 8//8 7//7 +f 8//8 21//21 23//23 14//14 9//9 +f 5//5 15//15 25//25 17//17 1//1 +f 11//11 18//18 27//27 20//20 12//12 +f 29//29 25//25 15//15 14//14 23//23 +f 17//17 25//25 29//29 27//27 18//18 +f 21//21 20//20 27//27 29//29 23//23 +# 12 faces, 0 coords texture + +# End of File diff --git a/Main.py b/Main.py index 9d832da..1562812 100644 --- a/Main.py +++ b/Main.py @@ -1,10 +1,12 @@ import MeshToVoxel import ReadObj import Visualization +import Visual_2_0 -path = "experiments/sphere.obj" -size_voxel = 0.1 +path = "experiments/dode.obj" +size_voxel = 1 model = ReadObj.read_file(path) voxels = MeshToVoxel.get_voxel_model(model[0], model[1], size_voxel) -Visualization.get_model(voxels, size_voxel) +#Visualization.get_model(voxels, size_voxel) +Visual_2_0.ShowModel(voxels, size_voxel, [[i[0] for i in model[1]], [i[1] for i in model[1]]], False) diff --git a/MeshToVoxel.py b/MeshToVoxel.py index 198cb9c..e195442 100644 --- a/MeshToVoxel.py +++ b/MeshToVoxel.py @@ -11,7 +11,7 @@ def get_voxel_model(model, size_mod, size_voxel): """ max_size_model = max(*[i[1] - i[0] for i in size_mod]) start_pos = [i[0] for i in size_mod] - voxels = Octree.get_all_voxels(start_pos, size_voxel, max_size_model) + voxels =[i for i in Octree.get_all_voxels(start_pos, size_voxel, max_size_model)] tree = Octree(voxels, size_voxel, size_mod, True) tree.fill_tree() for mesh in model: diff --git a/OcTreeV2/NodeOcTreeV2.py b/OcTreeV2/NodeOcTreeV2.py index 3c9cd08..ca0b166 100644 --- a/OcTreeV2/NodeOcTreeV2.py +++ b/OcTreeV2/NodeOcTreeV2.py @@ -10,7 +10,7 @@ def __init__(self, parent, size, coordinate: []): self.Size = size self.Coordinate = coordinate div_size = self.Size / 2 - self.BoundingBox = [self.Coordinate[2] + div_size, self.Coordinate[1] + div_size, self.Coordinate[0] + div_size] + self.BoundingBox = [i + div_size for i in self.Coordinate] self.Objects = [] self.Children = [] @@ -45,14 +45,25 @@ def add_children(self): # Tested Добавить потомков в вершину :return: """ + def _pow(x, y): + if y == 0: + return x + return x * x - def get_coordinate(mask: [], div_size): - mask = [m * div_size for m in mask] - return [self.Coordinate[i] + mask[i] for i in range(3)] + #[self.BoundingBox[0] + _pow(-1, x) * div_size[0], + #self.BoundingBox[1] + _pow(-1, y) * div_size[1], + #self.BoundingBox[2] + _pow(-1, z) * div_size[2]] + #div_size = [(abs(self.BoundingBox[i]) - abs(self.Coordinate[i])) / 2 for i in range(3)] div_size = self.Size / 2 - self.Children = [Node(self, div_size, get_coordinate([x, y, z], div_size)) - for x in range(2) for y in range(2) for z in range(2)] + for x in range(2): + for y in range(2): + for z in range(2): + child = Node(self, self.Size / 2, [self.Coordinate[0] + x * div_size, + self.Coordinate[1] + y * div_size, + self.Coordinate[2] + z * div_size]) + self.Children.append(child) + def get_child(self, pos_point: []): # Tested """ diff --git a/OcTreeV2/OcTree.py b/OcTreeV2/OcTree.py index e29002b..9e28d44 100644 --- a/OcTreeV2/OcTree.py +++ b/OcTreeV2/OcTree.py @@ -27,7 +27,7 @@ def _fill_tree(self, node: Node): # Tested :param node: вершина :return: """ - if node.Size <= self.Size_voxel or str(type(node.Objects)) == "" or len(node.Objects) <= 1: + if node.Size <= self.Size_voxel or (str(type(node.Objects)) != "" and len(node.Objects) <= 1): return if len(node.Children) == 0: node.add_children() diff --git a/OcTreeV2/__pycache__/NodeOcTreeV2.cpython-37.pyc b/OcTreeV2/__pycache__/NodeOcTreeV2.cpython-37.pyc index 5fccfe9c39ba04e30ea29845d6595eaf1956201c..568de71aa1b74cc92fe49a53440a166afd2f8279 100644 GIT binary patch literal 5000 zcmai2TW=f36`t7(MNt$jtF|0pVsBD6DO*`^+zSHLFbvzhAVB1xHf(^AyP-L2ni9p8 zXP1sdP=zfCO+O=h#EhMqTd^cc->!4I-Ovya%d z=ss!8Y3JAq@#1FaaU=AmFmR$-{|XyrtoWInFUsPah2E+8lUDG&bt`xnJP5XeCswc# zJZ#-+eH?5C-?Z-Zzv5LI&ZGtQ`@!Sj8F7Bk3!Mw%oF_P83ok#Q&4c@`<<^~-y}qqM z;1Wki4-ur7AE0?~3`Tdml3n6W{xRFfKGSaCmR~YSJb5kDCXR=^0{x~%<)%$CtCeqm zb#8L{-NoNjs*X4P-lFf;rayG$?DQpf!KqdnMZbcX^QDW@aW0*hCKI)ZiTTBEGbgJR z&o8-i^QVSM43a6u8m|%Ggl$)972mcePFCGgvFe?|pv^s%PZd({DP4!g1qc&n&L(CL zht9b58eE`!#$5;p&R?BzO1>AS&t9)o1a*TPg}El_kFIy|~9mjg6TqYKk* zF_iD*FvU_SPJbCbhQ2Y}BP z@Hx!-H9TS?cnUZA2F878(Nya%AfL3BG2VckdriG!1)EmuHr5`)AMUqbdkzPo7oI6+ z*+>qFT{adME_ge59&D=j;j?{*b>5PWUzfGXWMT^5ku3^gmty@&vSnVAyYM5)y_8m? zPU&=rxZ`7YW8G76no9G=h*DTlz>$r8S>u~bvM{qUh4Vd*^x`C)~^}PBu z>G|byy}x+AF>WnH-C{=z+Z4Xr|HHFQ0Jx2Y^cI@3SSvd+3o1+%=jWZ8$QzO4j?tVh z9j{;jXNvtkJX&^qn}CTB&Q>mZ0B?9B=-7b4b9|I%scAXh*r(ij=Nkza6W$D=DX0D$ z1_CK)l>v;|3={f6a`9!K3thSR%_V(dKB2^tvG9k4`u&pWBbl||!>=w3go57G_5juu zZGtwsXbKfGqRaY`a6@-}8(z)>nYHGz|}n#?xY1ze)Z_TV?KO-WLEgxXrj7ec<+Zzu!C z`S3VxlS0RMnj5@vB*B?BXmzp-@k?@-Xz%?PA>Bx-qU1s9$blqTOHw+JhtTB*BByzc zCRFk`LL&=Z$Qz*U1IT6~L*5vDaKj}@ce*m_Q8RFWdy)%Ij?DrTE`X^+bEd(i* z7WewXovMxCerK0{V=DbM4krRz-gUQL6}2~gtK`=FVx{I;#}R~szg{Rg^Atx)q2Upm zBBfTJOEQXmO}cYQw6#;qQQV>5+Jp3}()Ky5MkY7YFnS}G#GqQHN~RsYFV^Je*nqr_ z{>nOhZsUo)EKIy`!YJUd=N#-?f>kO@5*^<^BD_-C+&9Qhbk z)h3c_oVB}(991{>)KirCC=EWMwAZ_`75rT#^#_#vTX!k-Cg4B0ax< z$HJKBAnZl|yt+!BOWG|exicN%ZA`}SXds;$Dye3;28e9z>bodZl!_oI@jFr<`P^CB z=I7|(HHf@*PBkJ%s0fz~c#JWt&z}Hl>IT?nQ|<(25ThDu^iGz6j7kxvg8D)>x@DxU z!f<@KnB3cj7Q2UQESc_M@0eUEKu$o?8i`DnXZX;_v@_Pr&4nV|RK6jpqD~NvcA(6q zG(h1%*fh&Jxj|LW*OT&L8gY3kq257haW0|WUP6(8Sks$)4>T!|OHfc4F@+)nlo?Yf zDfY2)R8vo)co;`JjOdK&>3@+_?JwuxuT*MMxr=;r3k9aCr#DcjBK~^5oQcHuG_9Zp zyqD|{7treZ$X(q`cl((rh_=yS(RZ*nm37Q~l%2%mNDhl~Jkpv_i7zoD{ zA{VO&V1*EI9DCr3YSJ`iK|*!jpMl_%9m! EKMI5I@&Et; literal 4774 zcma)9-)|eo5#HT9l1GYSY{jwT*flO`(t@rm*eMXWs%sdw>jD8P8*tzNj9ixHo@GiD zDeWCyiXZ{o5^B0OVgxOUqR4~v(xN~g6xBZz+mZi;Bl>pjTc7mYx4g99?2$)Oa?&1g z%h|oz+1Z_$Z)VSqj;0u%KcD&M)xW>a*uSXLdkhd~@VaAYe#Rt|dCZ zOxj>y_n-PNi1U9;=x-Y9Ji`iGnEZ%@`|F)Mo%`Q3eOo}`ZB7kdHkFO%;+M3(fq5B9 z1gUe;aRwu2tF;P_cIIrg9waVan{|qw8(8OVl*$rY%*F!Kb;{R+c(`NqAVJXzfh9{f z^VIzdQ?Fs*>mQ$=oc{UJg;LpZr!Ose)ynj*s%mcfO118kOO1k8!pOzqN6K-oygyB* z?R6#=mI5oEFI7rjK2Of+X3(&BoYODGkD_gi(u|277rY`-4Ye(jHuTUxz1k(nwVP~} ztuY?D23!H=6t&0r5ZT869nSR&m}J9$4m*B@(|v5yQ0F)3KI_~8y@7)sKI>)M-?Tfo z@$D%Lvfi8a5*DHfFSNBbqD8ts(^VHfaNB?BZ|eDQnjMSvXDP?4smf$DFqIWSx*%n~ z*fowyVk=ppM)0R-zuF98vj^Q^gt)uQ?!|zsgC}nB#vXl`1D|o8v4v`>;zg%Pym7qx zG#5b3u$HJ__XsHXd3H6|GCYLbtY{*DKq2T3vSmJp09GfPV%3mhjdQk`c_kM()h{%c z5prqT4C#*%#ya%2;KkAY{WTpt8~V66aO{secMyO$z~^|MMCKzKbne0in`9<1;4=;z z5!AVjZ<~?8UM$nLyP*tg>ll6rX)h3F5A8_WI_&m}ID{TAu*@g*aeHapZd~n4@7m8k zc4FLy(A&@h>g)<+AA$!o1~LFW9sot)h}fJB@mv0*&a(f!^Xa&ajX|>=VmkLjJlM6> zar?M^Y+!Nn@h5OSoEt#o+s+26o*0_?1)cLZ>-EXf#m2Z@51Xa_DQr_XZ~q66B8O50 z+gUS+sX}GO35>!uS6LVe;)R6;ry{dv=*@4?n4uguX9BqjI~{v$#_{syYEffKUiGl~R}^w2*kr;+Crh%mX`71zTAm%hi_Viqax5WC0j zvb!8#44v#Ok4yObd3bYMg5C-Sod7zC-2JgYdZgh#}PVR&NM5#Gn zaOa{RCAcHCk>Qzp6wO@*rJ?qU)z)g=<62$hX&OWDcGacunu<<<#Lx+7G5bJJ0=$}T zA*$PKANx!!A{F+H03Z?*#{)i}<%*EH4>@0_PL)fpSFFx2oPHl)T#_7Tjh{q#(*v)G zQ)IugdwPN_)6aGN@xG)XJ;{T#o<~4vJ@>bGo6iE}53;sy4-9Gy9TVULPSS*cmq2|7 zROo1wxD>gKveEnyZ&zitA2jB^Nq^lLv{wuf-eO4aTuahmn;G862{46t%g1;l`+x6W zkvXFclTm0nz2P$;^oCEiI4lXL0}LN+iHJT-klYq+)+RUxFwYomwk(#7&&ztR1%?8HeD54d*g_+5By(}K2Ztq= z`5pAAAe6?OP-W1_U7G$7wArOk>jE-%kX=SJpp=XgwfJm+xUmkn?E#K;%>iAyD?-D|Or~JAk=oy|i3l0|KXmRz`AAI%!ZSQuUMkX}#zyP#vkX6Lm|U@8NSFoOCn?W7kU+ znJ?hgVM!I!kHF@VQ?rD{Es;isNb{6Pg9_W;e@b+7#%>uG^mdA*DLteGsj0o}Paseu z8TH@8iVUIo02dFl6>DdgzD#_f3l0(h zL4WNIY2Ull_^WV?r>KKBQT}x6s)4dpUp0m*V5&{1PM=au!6O3U;J=8-jDAo-@A?6&5>vDkYKHROwpH zb8_Hz$?sUqgcq6kr2$VCE-M0b3co#gOc-xhz_hHMdpO1Pc;b{V%W;FRe;1~HDF282C2kb!) zzNxJU-irRH5~-lImR(0(30 zhB233U9nogBlt;1|IYBnA?+=%js@Ug2twI3-I*(ec_*I_Qu+LRRo2Qxr}O#6TA>_% zQFQN9RMLe(L|Ih_k)i@6NV^_t=;FNN-KfeScD-CJc#4!8P`Ix(RSWcLtu2wsWRjV^ gRwnay>Y(7dmY70fCyrN553Ez6j;D#^-+0-70fp|>djJ3c diff --git a/OcTreeV2/__pycache__/OcTree.cpython-37.pyc b/OcTreeV2/__pycache__/OcTree.cpython-37.pyc index c56509e812a59d42789a835c8b189b1c5184c265..554b1d3db12557f3692a397c4a932a2cd616a08c 100644 GIT binary patch delta 698 zcmX|8yKWOf6rDRWyMATK!-04qj-3$4a&Tc1q(ma3Kqws`5s4t9B$(aBPyCo2kQ1#* zkq!!qk)T4di*z)|-#|}^Tu|{B2#Grzk(KVzId{&zv%BY0?rYAvZ&`7I&*$&I4!(S| zW{gvbDu4zFNCTSS7bTSpH9vzhaG}XWNg5a0rA-hem+g_TW8yh)Qn4GrFft;5TZU2G z64RST6i7dXbLInbaAiOPGK>dw1VDO+`$X?37;kELwR&&Vc2AN!POIYk*?iS&d!iyc zB7aXr@c5Ac#6qIX_v$B}m_{*Sz7!KKkGtL^^7v)LbEH3EEw8Oo<_jo}kIkzTZ1pjk zPFzR3xS?lk_1Ci1kLW{KR7)`%mdD$%BF)>{kk+uIAzW`(x?QjBipybHI=)|TSH(@;U(~RwLH}M6y@Z5jYvbREb4ccpmt$2AhimngTQEdkom(4_ z8UM7>)LhrrTk6mBB4kx+=J3?S2FG%+{I>`$3|PMvuz)s+=%V8NCjk$Yi^}M42S%u# z1?aU&U@Ty+E=9&e#*ncEQe{tdUYP3^85q5leLN32@698}{ISordL~9iFe-i#Lzsvt z;){eISTMzg=7xq%4YxIv)ZN))avmw69OCf5R@J-N=j+SbvW763@?}NVo!6eMbzG6r XE#pg%5F`cQsTPTfkS;tbb|8$Y*xe@;zl z$GfO}XfmHQp#@IC<*1aGV4)I4i?6XTqhdyBadFj$p*CWGo}rGO2>C`Fn3qGJdWUVL z2i#}FsLw|Ltp8wx(H^Gyyp9LO=l`wA+sUWNx5?Lu{HU!jiU`&o3P3bto9bHQ&=#jq z1WMcP1d&I(O}pwk^1i+Uh4Fj+G>4r09yRnV_K3Xv6>UL5K91#IrPc9%%;e{DRG1~0 zBMA4>E4`lGvBZgq(uVw!FiP`8XAm}%ovyoG6YfxM+h}GP%IdzUe8y3-eST-rFrYV7OFNX-MjAVq1y44A&$<1JoD8oF^)_NnSupF diff --git a/Tests/OctreeV2Tests.py b/Tests/OctreeV2Tests.py index d343040..5d3a95d 100644 --- a/Tests/OctreeV2Tests.py +++ b/Tests/OctreeV2Tests.py @@ -15,6 +15,19 @@ def test_simple(self): node.add_children() self.assertEqual(8, len(node.Children)) + def test_2(self): + node = get_simple_node(4) + node.add_children() + self.assertEqual([2, 2, 2], node.BoundingBox) + + self.assertEqual([1, 1, 1], node.Children[0].BoundingBox, "node num: 0") + self.assertEqual([1, 1, 3], node.Children[1].BoundingBox, "node num: 1") + self.assertEqual([1, 3, 1], node.Children[2].BoundingBox, "node num: 2") + self.assertEqual([1, 3, 3], node.Children[3].BoundingBox, "node num: 3") + self.assertEqual([3, 1, 1], node.Children[4].BoundingBox, "node num: 4") + self.assertEqual([3, 1, 3], node.Children[5].BoundingBox, "node num: 5") + self.assertEqual([3, 3, 1], node.Children[6].BoundingBox, "node num: 6") + self.assertEqual([3, 3, 3], node.Children[7].BoundingBox, "node num: 7") class TestsAddObjects(unittest.TestCase): @@ -173,7 +186,6 @@ def test_with_mesh_on_bounding_boxes(self): class TestsFillOctree(unittest.TestCase): - @staticmethod def get_count_voxels_on_upper_node(size_voxel: float, max_size: float): length = math.ceil(max_size / size_voxel) @@ -219,10 +231,10 @@ def test_with_125_voxels(self): #tree.Start.distribute(True, 1) self.assertEqual(self.get_count_voxels_on_upper_node(1, 5), len(tree.Start.Objects)) for child in range(8): - self.assertEqual(self.get_count_voxels_on_upper_node(1, 2) - 1, len(tree.Start.Children[child].Objects), str(child)) + self.assertEqual(7, len(tree.Start.Children[child]), str(child)) for i in range(8): ch = tree.Start.Children[child] - self.assertTrue(len(ch.Children[i]) == 1 or 0) + self.assertTrue(len(ch.Children[i]) == 1 or len(ch.Children[i]) == 0) def test_with_voxels_in_child(self): # TODO @@ -245,15 +257,7 @@ def test_with_512_voxels(self): self.assertEqual(self.get_count_voxels_on_upper_node(0.5, 4), len(tree.Start.Objects)) for child in range(8): ch = tree.Start.Children[child] - self.assertEqual(self.get_count_voxels_on_upper_node(0.5, 1.5), len(ch), str(child)) - - - def test_temp(self): - voxels = [[0, 0, 3], [1, 0, 3], [0, 0, 4], [1, 0, 4]] - tree = Octree(voxels, 1, [[0, 2.5], [0, 2.5], [2.5, 5]], True) - tree.fill_tree() - #temp = self.get_count_voxels_on_upper_node(1, 2.5) - self.assertEqual(self.get_count_voxels_on_upper_node(1, 2.5), len(tree.Start.Objects)) + self.assertEqual(26, len(ch), str(child)) class TestsDistribute(unittest.TestCase): diff --git a/__pycache__/MeshToVoxel.cpython-37.pyc b/__pycache__/MeshToVoxel.cpython-37.pyc index e606a6062b359245a356fc28984ebd96096a9d75..cd4a5b8bd0078b7f23b0e4326a031e8d8f55b0f5 100644 GIT binary patch delta 152 zcmdnNzL100iIS;|T&EGbMa3?+;Um}*#Rm};08 zGP^J|GuE<}FxIdF`HU&76PKFu=7cj8hJ-Vuumv+{vTuC8o>3>65o9P3Faa?$5C;Qs qu>g=rXQ*L_<)~$>VVuZR$P&y@#4 Date: Thu, 28 Nov 2019 01:23:35 +0500 Subject: [PATCH 33/36] Need fixed --- Main.py | 15 ++++++++++----- MeshToVoxel.py | 2 +- .../__pycache__/NodeOcTreeV2.cpython-37.pyc | Bin 5000 -> 5000 bytes OcTreeV2/__pycache__/OcTree.cpython-37.pyc | Bin 4780 -> 4780 bytes __pycache__/MeshToVoxel.cpython-37.pyc | Bin 1057 -> 952 bytes 5 files changed, 11 insertions(+), 6 deletions(-) diff --git a/Main.py b/Main.py index 1562812..40a226b 100644 --- a/Main.py +++ b/Main.py @@ -4,9 +4,14 @@ import Visual_2_0 -path = "experiments/dode.obj" -size_voxel = 1 +path = "experiments/sphere.obj" +size_voxel = 0.3 model = ReadObj.read_file(path) -voxels = MeshToVoxel.get_voxel_model(model[0], model[1], size_voxel) -#Visualization.get_model(voxels, size_voxel) -Visual_2_0.ShowModel(voxels, size_voxel, [[i[0] for i in model[1]], [i[1] for i in model[1]]], False) +#не лениво +voxels = [i for i in MeshToVoxel.get_voxel_model(model[0], model[1], size_voxel)] + +#лениво +#voxels = MeshToVoxel.get_voxel_model(model[0], model[1], size_voxel) + +Visualization.get_model(voxels, size_voxel) +Visual_2_0.ShowModel(voxels, size_voxel, [[i[0] for i in model[1]], [i[1] for i in model[1]]], True) diff --git a/MeshToVoxel.py b/MeshToVoxel.py index e195442..198cb9c 100644 --- a/MeshToVoxel.py +++ b/MeshToVoxel.py @@ -11,7 +11,7 @@ def get_voxel_model(model, size_mod, size_voxel): """ max_size_model = max(*[i[1] - i[0] for i in size_mod]) start_pos = [i[0] for i in size_mod] - voxels =[i for i in Octree.get_all_voxels(start_pos, size_voxel, max_size_model)] + voxels = Octree.get_all_voxels(start_pos, size_voxel, max_size_model) tree = Octree(voxels, size_voxel, size_mod, True) tree.fill_tree() for mesh in model: diff --git a/OcTreeV2/__pycache__/NodeOcTreeV2.cpython-37.pyc b/OcTreeV2/__pycache__/NodeOcTreeV2.cpython-37.pyc index 568de71aa1b74cc92fe49a53440a166afd2f8279..ffdb04ac0872df82035fb81a04359069eae4cdc8 100644 GIT binary patch delta 19 ZcmeBB?@;G*;^pOH0D^5dHgeSo0{|+s1gQW3 delta 19 ZcmeBB?@;G*;^pOH0D>ErHgeSo0{|;w1jPUV diff --git a/OcTreeV2/__pycache__/OcTree.cpython-37.pyc b/OcTreeV2/__pycache__/OcTree.cpython-37.pyc index 554b1d3db12557f3692a397c4a932a2cd616a08c..a9954159db3b2f2281b9a85002904c14cc6c2dad 100644 GIT binary patch delta 19 ZcmZ3Zx<-}DiI~_2mmgv1l|Au diff --git a/__pycache__/MeshToVoxel.cpython-37.pyc b/__pycache__/MeshToVoxel.cpython-37.pyc index cd4a5b8bd0078b7f23b0e4326a031e8d8f55b0f5..cc61e007eea1a1878c323f2cdb8f5446e8319b72 100644 GIT binary patch delta 91 zcmZ3;v4fr0iI1*SZbJRm=`kFvX(H` rumahPDJ&D$oAM@wGZcD-Go-KvGib7H{J5TR@_(jNjC_+%F^2;HA|M$+ delta 152 zcmdnNzL100iIS;|T&EGbMa3?+;Um}*#Rm};08 zGP^J|GuE<}FxIdF`HU&76PKFu=7cj8hJ-Vuumv+{vTuC8o>3>65o9P3Faa?$5C;Qs qu>g=rXQ*L_<)~$>VVuZR$P&y@#4 Date: Thu, 28 Nov 2019 19:04:46 +0500 Subject: [PATCH 34/36] Fixed bug --- Visual_2_0.py | 39 +++++++++++++++++++-------------------- 1 file changed, 19 insertions(+), 20 deletions(-) diff --git a/Visual_2_0.py b/Visual_2_0.py index 8c98a63..03434e9 100644 --- a/Visual_2_0.py +++ b/Visual_2_0.py @@ -19,7 +19,7 @@ ''' -def _GetModel(voxel_size: float, voxels_coords: [], debug_mode: bool): +def _GetModel(voxel_size: float, voxels_coords: [], debug_mode: bool, extreme_coordinates: ()): model = ( [], # Вершины ( # Поверхности для debug_mode @@ -63,10 +63,18 @@ def _GetModel(voxel_size: float, voxels_coords: [], debug_mode: bool): (4, 5, 1, 0), (1, 5, 6, 2), (4, 0, 3, 7) - ) + ), + [] # Данные об отдаленности камеры и максимальной прорисовки ) + dif_x = extreme_coordinates[1][0] - extreme_coordinates[0][0] + voxel_size + dif_y = extreme_coordinates[1][1] - extreme_coordinates[0][1] + voxel_size + dif_z = extreme_coordinates[1][2] - extreme_coordinates[0][2] + voxel_size + + model[4].append(_GetDistanceData(dif_x, dif_y, dif_z, voxel_size)) + for voxel_coords in voxels_coords: + _VoxelCentering(voxel_coords, extreme_coordinates, voxel_size, dif_x, dif_y, dif_z) if debug_mode: model[0].append(_GetDebugVoxel(voxel_size, voxel_coords)) else: @@ -183,29 +191,20 @@ def _Model(model: [], debug_mode: bool): glEnd() -def _ModelCentering(voxels_coords: [], extreme_coordinates: (), voxel_size: float): - """ - :param extreme_coordinates: в виде -> ((Xmin, Ymin, Zmin), (Xmax, Ymax, Zmax)) - :return: () - """ - dif_x = extreme_coordinates[1][0] - extreme_coordinates[0][0] + voxel_size - dif_y = extreme_coordinates[1][1] - extreme_coordinates[0][1] + voxel_size - dif_z = extreme_coordinates[1][2] - extreme_coordinates[0][2] + voxel_size +def _VoxelCentering(voxel_coords: [], extreme_coordinates: (), voxel_size: float, + dif_x: float, dif_y: float, dif_z: float): + voxel_coords[0] = voxel_coords[0] - extreme_coordinates[0][0] + voxel_size / 2 - (dif_x / 2) + voxel_coords[1] = voxel_coords[1] - extreme_coordinates[0][1] + voxel_size / 2 - (dif_y / 2) + voxel_coords[2] = voxel_coords[2] - extreme_coordinates[0][2] + voxel_size / 2 - (dif_z / 2) - for voxel_coords in voxels_coords: - voxel_coords[0] = voxel_coords[0] - extreme_coordinates[0][0] + voxel_size / 2 - (dif_x / 2) - voxel_coords[1] = voxel_coords[1] - extreme_coordinates[0][1] + voxel_size / 2 - (dif_y / 2) - voxel_coords[2] = voxel_coords[2] - extreme_coordinates[0][2] + voxel_size / 2 - (dif_z / 2) +def _GetDistanceData(dif_x: float, dif_y: float, dif_z: float, voxel_size: float): max_half = max(dif_x, dif_y, dif_z) / 2 / voxel_size return (max_half * 1.3, max_half * 10) def ShowModel(voxels_coords: [], voxel_size: float, extreme_coordinates: (), debug_mode: bool): - - perspective = _ModelCentering(voxels_coords, extreme_coordinates, voxel_size) - - model = _GetModel(voxel_size, voxels_coords, debug_mode) + model = _GetModel(voxel_size, voxels_coords, debug_mode, extreme_coordinates) pygame.init() display = (800, 600) # Размер окна @@ -218,8 +217,8 @@ def ShowModel(voxels_coords: [], voxel_size: float, extreme_coordinates: (), deb else: glClearColor(70 / 255, 70 / 255, 70 / 255, 1) # Выбор цвета фона - gluPerspective(45, (display[0] / display[1]), 0.1, perspective[1]) - glTranslatef(0, 0, -perspective[0]) + gluPerspective(45, (display[0] / display[1]), 0.1, model[4][0][1]) + glTranslatef(0, 0, -model[4][0][0]) glRotatef(0, 0, 0, 0) x_move = 0 From 459324be256ca9cbb7fbc35d74baf57ee87bced5 Mon Sep 17 00:00:00 2001 From: Sw24sX Date: Sun, 8 Dec 2019 19:20:20 +0500 Subject: [PATCH 35/36] Create ConvertToFile --- ConvertToFile.py | 34 ++++++++++++++++++++++++++++++++++ Experiments/OcTreeTests1.py | 6 +++--- Main.py | 6 +----- OcTreeV2/NodeOcTreeV2.py | 2 +- Tests/OcTreeTests.py | 6 +++--- Tests/OctreeV2Tests.py | 18 +++++++++--------- model.PCD | 3 +++ 7 files changed, 54 insertions(+), 21 deletions(-) create mode 100644 ConvertToFile.py create mode 100644 model.PCD diff --git a/ConvertToFile.py b/ConvertToFile.py new file mode 100644 index 0000000..e10ac99 --- /dev/null +++ b/ConvertToFile.py @@ -0,0 +1,34 @@ +from OcTreeV2.NodeOcTreeV2 import Node + + +def convert(voxels: [], size_voxel: float): + points = get_all_points(voxels, size_voxel) + with open("model.PCD", "w") as file: + write_header(file, len(points)) + for point in points: + file.write(get_str_from_point(point)) + + +def write_header(file, count_points: int): + file.write("# .PCD v.7 - Point Cloud Data file format\n") + file.write("VERSION .7\n") + file.write("FIELDS x y z\n") + file.write("SIZE 4 4 4 4\n") + file.write("TYPE F F F F\n") + file.write("COUNT 1 1 1 1\n") + file.write("WIDTH 213\n") + file.write("HEIGHT 1\n") + file.write("VIEWPOINT 0 0 0 1 0 0 0\n") + file.write("POINTS " + str(count_points)) + file.write("DATA ascii") + + +def get_all_points(voxels: [], size: int): + res = [] + for i in voxels: + [res.append(j) for j in Node.get_all_voxels_vertex(i, size)] + return res + + +def get_str_from_point(point: []): + return str(point[0]) + " " + str(point[1]) + " " + str(point[2]) diff --git a/Experiments/OcTreeTests1.py b/Experiments/OcTreeTests1.py index 7136444..b6b72cd 100644 --- a/Experiments/OcTreeTests1.py +++ b/Experiments/OcTreeTests1.py @@ -90,20 +90,20 @@ class TestsGetAllVoxelsVertex(): def test_simple(self): node = get_empty_node_with_empty_children() - res = [i for i in node._get_all_voxels_vertex([0, 0, 0], 1)] + res = [i for i in node.get_all_voxels_vertex([0, 0, 0], 1)] answ = [[0, 0, 0], [0, 0, 1], [0, 1, 0], [0, 1, 1], [1, 0, 0], [1, 0, 1], [1, 1, 0], [1, 1, 1]] self.assertEqual(res, answ) def test_voxel_on_negative_side(self): node = get_empty_node_with_empty_children() - res = [i for i in node._get_all_voxels_vertex([-4, -4, -4], 2)] + res = [i for i in node.get_all_voxels_vertex([-4, -4, -4], 2)] answ = [[-4, -4, -4], [-4, -4, -2], [-4, -2, -4], [-4, -2, -2], [-2, -4, -4], [-2, -4, -2], [-2, -2, -4], [-2, -2, -2]] self.assertEqual(res, answ) def test_voxel_on_positive_side(self): node = get_empty_node_with_empty_children() - res = [i for i in node._get_all_voxels_vertex([1, 1, 1], 1)] + res = [i for i in node.get_all_voxels_vertex([1, 1, 1], 1)] answ = [[1, 1, 1], [1, 1, 2], [1, 2, 1], [1, 2, 2], [2, 1, 1], [2, 1, 2], [2, 2, 1], [2, 2, 2]] self.assertEqual(res, answ) diff --git a/Main.py b/Main.py index 40a226b..f4485e8 100644 --- a/Main.py +++ b/Main.py @@ -7,11 +7,7 @@ path = "experiments/sphere.obj" size_voxel = 0.3 model = ReadObj.read_file(path) -#не лениво -voxels = [i for i in MeshToVoxel.get_voxel_model(model[0], model[1], size_voxel)] -#лениво -#voxels = MeshToVoxel.get_voxel_model(model[0], model[1], size_voxel) +voxels = MeshToVoxel.get_voxel_model(model[0], model[1], size_voxel) -Visualization.get_model(voxels, size_voxel) Visual_2_0.ShowModel(voxels, size_voxel, [[i[0] for i in model[1]], [i[1] for i in model[1]]], True) diff --git a/OcTreeV2/NodeOcTreeV2.py b/OcTreeV2/NodeOcTreeV2.py index ca0b166..8492a3b 100644 --- a/OcTreeV2/NodeOcTreeV2.py +++ b/OcTreeV2/NodeOcTreeV2.py @@ -113,7 +113,7 @@ def _compare_diagonal_vertexes(self, first_vertex, second_vertex) -> bool: return location_first_vertex != location_second_vertex or (0 in location_first_vertex in location_second_vertex) @staticmethod - def _get_all_voxels_vertex(voxel: [], size: float): # Tested + def get_all_voxels_vertex(voxel: [], size: float): # Tested """ Генерирует все вершины вокселя :param voxel: воксель diff --git a/Tests/OcTreeTests.py b/Tests/OcTreeTests.py index fc0e128..e83217a 100644 --- a/Tests/OcTreeTests.py +++ b/Tests/OcTreeTests.py @@ -90,20 +90,20 @@ class TestsGetAllVoxelsVertex(unittest.TestCase): def test_simple(self): node = get_empty_node_with_empty_children() - res = [i for i in node._get_all_voxels_vertex([0, 0, 0], 1)] + res = [i for i in node.get_all_voxels_vertex([0, 0, 0], 1)] answ = [[0, 0, 0], [0, 0, 1], [0, 1, 0], [0, 1, 1], [1, 0, 0], [1, 0, 1], [1, 1, 0], [1, 1, 1]] self.assertEqual(res, answ) def test_voxel_on_negative_side(self): node = get_empty_node_with_empty_children() - res = [i for i in node._get_all_voxels_vertex([-4, -4, -4], 2)] + res = [i for i in node.get_all_voxels_vertex([-4, -4, -4], 2)] answ = [[-4, -4, -4], [-4, -4, -2], [-4, -2, -4], [-4, -2, -2], [-2, -4, -4], [-2, -4, -2], [-2, -2, -4], [-2, -2, -2]] self.assertEqual(res, answ) def test_voxel_on_positive_side(self): node = get_empty_node_with_empty_children() - res = [i for i in node._get_all_voxels_vertex([1, 1, 1], 1)] + res = [i for i in node.get_all_voxels_vertex([1, 1, 1], 1)] answ = [[1, 1, 1], [1, 1, 2], [1, 2, 1], [1, 2, 2], [2, 1, 1], [2, 1, 2], [2, 2, 1], [2, 2, 2]] self.assertEqual(res, answ) diff --git a/Tests/OctreeV2Tests.py b/Tests/OctreeV2Tests.py index 5d3a95d..26aa1da 100644 --- a/Tests/OctreeV2Tests.py +++ b/Tests/OctreeV2Tests.py @@ -239,10 +239,10 @@ def test_with_125_voxels(self): def test_with_voxels_in_child(self): # TODO # Работает правильно, но лень настраивать тест - voxels = Node._get_all_voxels_vertex([0, 0, 0], 1) + voxels = Node.get_all_voxels_vertex([0, 0, 0], 1) v = [] for i in voxels: - temp = Node._get_all_voxels_vertex(i, 0.5) + temp = Node.get_all_voxels_vertex(i, 0.5) for t in temp: if 2 not in t: v.append(t) @@ -282,7 +282,7 @@ def test_with_one_voxel_in_child(self): self.assertEqual(node.Children[3].Objects, voxel) def test_with_8_voxels(self): - voxels = Node._get_all_voxels_vertex([0, 0, 0], 3) + voxels = Node.get_all_voxels_vertex([0, 0, 0], 3) node = get_simple_node() node.add_objects(voxels) node.distribute(True, 1) @@ -291,15 +291,15 @@ def test_with_8_voxels(self): self.assertEqual(0, len(node.Objects)) def test_distribute_child(self): - voxels = Node._get_all_voxels_vertex([0, 0, 0], 2) + voxels = Node.get_all_voxels_vertex([0, 0, 0], 2) v = [] for i in voxels: - temp = Node._get_all_voxels_vertex(i, 1) + temp = Node.get_all_voxels_vertex(i, 1) for t in temp: v.append(t) voxels = [] for i in v: - temp = Node._get_all_voxels_vertex(i, 0.5) + temp = Node.get_all_voxels_vertex(i, 0.5) for t in temp: voxels.append(t) node = get_simple_node(4) @@ -321,7 +321,7 @@ def test_simple(self): self.assertEqual(0, len(tree.Start.Objects)) def test_with_8_voxels(self): - voxels = Node._get_all_voxels_vertex([0, 0, 0], 2) + voxels = Node.get_all_voxels_vertex([0, 0, 0], 2) tree = get_octree(voxels, 2) tree.fill_tree() mesh = [[0, 0, 0], [3, 1, 0], [2, 3, 0]] @@ -337,10 +337,10 @@ def test_with_8_voxels(self): self.assertEqual(3, len(tree.Start.Objects)) def test_with_64_voxels(self): - vo = Node._get_all_voxels_vertex([0, 0, 0], 2) + vo = Node.get_all_voxels_vertex([0, 0, 0], 2) voxels = [] for i in vo: - temp = Node._get_all_voxels_vertex(i, 1) + temp = Node.get_all_voxels_vertex(i, 1) for t in temp: voxels.append(t) tree = get_octree(voxels, 1) diff --git a/model.PCD b/model.PCD new file mode 100644 index 0000000..0220c47 --- /dev/null +++ b/model.PCD @@ -0,0 +1,3 @@ +# .PCD v.7 - Point Cloud Data file format +VERSION .7 +FIELDS x y z From 182018e677cd5127a736d5d9aa630924242f3a76 Mon Sep 17 00:00:00 2001 From: Alllex202 Date: Sat, 28 Dec 2019 18:34:57 +0500 Subject: [PATCH 36/36] Implemented window interface. (Visualization via OpenGL) Minor changes to the file "ConverToFile.py" and "Visual_2_0.py". --- ConvertToFile.py | 4 +- Visual_2_0.py | 42 +++++------ WindowMenu/MainMenu.py | 81 ++++++++++++++++++++++ WindowMenu/WinMenu.py | 69 ++++++++++++++++++ WindowMenu/WinMenu.ui | 154 +++++++++++++++++++++++++++++++++++++++++ 5 files changed, 328 insertions(+), 22 deletions(-) create mode 100644 WindowMenu/MainMenu.py create mode 100644 WindowMenu/WinMenu.py create mode 100644 WindowMenu/WinMenu.ui diff --git a/ConvertToFile.py b/ConvertToFile.py index e10ac99..857af6d 100644 --- a/ConvertToFile.py +++ b/ConvertToFile.py @@ -1,9 +1,9 @@ from OcTreeV2.NodeOcTreeV2 import Node -def convert(voxels: [], size_voxel: float): +def convert(file_name, voxels: [], size_voxel: float): points = get_all_points(voxels, size_voxel) - with open("model.PCD", "w") as file: + with open(file_name, "w") as file: write_header(file, len(points)) for point in points: file.write(get_str_from_point(point)) diff --git a/Visual_2_0.py b/Visual_2_0.py index 03434e9..d41a3df 100644 --- a/Visual_2_0.py +++ b/Visual_2_0.py @@ -238,11 +238,28 @@ def ShowModel(voxels_coords: [], voxel_size: float, extreme_coordinates: (), deb degrees_axis_x = 0 # Вращение верх/низ # degrees_axis_z = 0 - while True: + update = True + + while update: + # Изменение оси Y (Вращение влево/вправо) + degrees_axis_y += x_rotate * step * 10 + radians_axis_y += x_rotate * step * 10 / 180 * math.pi + + # Изменение оси X (Вращение вверх/вниз) + degrees_axis_x += y_rotate * step * 10 + radians_axis_x += y_rotate * step * 10 / 180 * math.pi + + glRotatef(step, y_rotate, x_rotate, z_rotate) # Изменение ориентации + + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT) + _Model(model, debug_mode) + pygame.display.flip() + pygame.time.wait(10) + for event in pygame.event.get(): if event.type == pygame.QUIT: + update = False pygame.quit() - quit() if event.type == pygame.KEYDOWN: if event.key == pygame.K_LEFT: @@ -264,9 +281,9 @@ def ShowModel(voxels_coords: [], voxel_size: float, extreme_coordinates: (), deb if event.key == pygame.K_LEFT or event.key == pygame.K_RIGHT: x_rotate = 0 step = 0 - if event.key == pygame.K_DOWN or event.key == pygame.K_UP: - y_rotate = 0 - step = 0 + # if event.key == pygame.K_DOWN or event.key == pygame.K_UP: + # y_rotate = 0 + # step = 0 # Вращение вправо/влево z_move = -math.cos(radians_axis_y) * 0.1 @@ -282,18 +299,3 @@ def ShowModel(voxels_coords: [], voxel_size: float, extreme_coordinates: (), deb glTranslatef(x_move, y_move, z_move) if event.button == 5: glTranslatef(-x_move, -y_move, -z_move) - - # Изменение оси Y (Вращение влево/вправо) - degrees_axis_y += x_rotate * step * 10 - radians_axis_y += x_rotate * step * 10 / 180 * math.pi - - # Изменение оси X (Вращение вверх/вниз) - degrees_axis_x += y_rotate * step * 10 - radians_axis_x += y_rotate * step * 10 / 180 * math.pi - - glRotatef(step, y_rotate, x_rotate, z_rotate) # Изменение ориентации - - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT) - _Model(model, debug_mode) - pygame.display.flip() - pygame.time.wait(10) diff --git a/WindowMenu/MainMenu.py b/WindowMenu/MainMenu.py new file mode 100644 index 0000000..948f593 --- /dev/null +++ b/WindowMenu/MainMenu.py @@ -0,0 +1,81 @@ +import sys # sys нужен для передачи argv в QApplication +from PyQt5 import QtWidgets, QtCore + +from PyQt5.QtWidgets import QFileDialog +import MeshToVoxel +import ReadObj +from Visualization import get_model +from ConvertToFile import convert +from Visual_2_0 import ShowModel +import pygame + +import WindowMenu.WinMenu as WM # Это наш конвертированный файл дизайна + + +class ExampleApp(QtWidgets.QMainWindow, WM.Ui_MainWindow): + def __init__(self): + # Это здесь нужно для доступа к переменным, методам + # и т.д. в файле design.py + super().__init__() + self.setupUi(self) # Это нужно для инициализации нашего дизайна + self.current_file_path = "" + self.result = None + self.InitProgram() + + def closeEvent(self, *args, **kwargs): + quit() + + def InitProgram(self): + self.button_Save.setEnabled(False) + self.button_Show.setEnabled(False) + self.button_FileChoose.clicked.connect(self.FileChoose) + self.button_Reset.clicked.connect(self.Reset) + self.button_Show.clicked.connect(self.Show) + self.button_Save.clicked.connect(self.Save) + # self.button_Show.hide() # Из-за наличия багов убрал + + def FileChoose(self): + self.current_file_path = QFileDialog.getOpenFileName(self, "File Choose", "/home", "*.obj")[0] + if self.current_file_path != "": + self.label_FilePath.setText(self.current_file_path) + self.button_Save.setEnabled(True) + self.button_Show.setEnabled(True) + else: + self.label_FilePath.setText("Выберите файл типа *.obj") + self.button_Save.setEnabled(False) + self.button_Show.setEnabled(False) + + def Reset(self): + self.doubleSpinBox_VoxelSize.setValue(1.000) + self.label_FilePath.setText("") + self.current_file_path = "" + self.result = None + self.button_Save.setEnabled(False) + self.button_Show.setEnabled(False) + self.button_FileChoose.setEnabled(True) + + def Save(self): + file_name = QFileDialog.getSaveFileName(self, "File Save", "/", "*.pcd")[0] + if file_name != "" and file_name is not None: + self.Voxelization() + convert(file_name, self.result, float(self.doubleSpinBox_VoxelSize.value())) + + def Show(self): + self.Voxelization() + ShowModel(self.result, float(self.doubleSpinBox_VoxelSize.value()), [[i[0] for i in self.model[1]], [i[1] for i in self.model[1]]], False) + + def Voxelization(self): + self.model = ReadObj.read_file(self.current_file_path) + self.result = MeshToVoxel.get_voxel_model(self.model[0], self.model[1], float(self.doubleSpinBox_VoxelSize.value())) + self.button_FileChoose.setEnabled(False) + + +def main(): + app = QtWidgets.QApplication(sys.argv) # Новый экземпляр QApplication + window = ExampleApp() # Создаём объект класса ExampleApp + window.show() # Показываем окно + app.exec_() # и запускаем приложение + + +if __name__ == '__main__': # Если мы запускаем файл напрямую, а не импортируем + main() # то запускаем функцию main() diff --git a/WindowMenu/WinMenu.py b/WindowMenu/WinMenu.py new file mode 100644 index 0000000..0d0e564 --- /dev/null +++ b/WindowMenu/WinMenu.py @@ -0,0 +1,69 @@ +# -*- coding: utf-8 -*- + +# Form implementation generated from reading ui file 'WinMenu.ui' +# +# Created by: PyQt5 UI code generator 5.13.0 +# +# WARNING! All changes made in this file will be lost! + + +from PyQt5 import QtCore, QtGui, QtWidgets + + +class Ui_MainWindow(object): + def setupUi(self, MainWindow): + MainWindow.setObjectName("MainWindow") + MainWindow.resize(460, 160) + sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(MainWindow.sizePolicy().hasHeightForWidth()) + MainWindow.setSizePolicy(sizePolicy) + MainWindow.setMinimumSize(QtCore.QSize(460, 160)) + MainWindow.setMaximumSize(QtCore.QSize(460, 160)) + MainWindow.setMouseTracking(False) + MainWindow.setTabletTracking(False) + MainWindow.setStatusTip("") + MainWindow.setToolButtonStyle(QtCore.Qt.ToolButtonIconOnly) + self.centralwidget = QtWidgets.QWidget(MainWindow) + self.centralwidget.setObjectName("centralwidget") + self.button_FileChoose = QtWidgets.QPushButton(self.centralwidget) + self.button_FileChoose.setGeometry(QtCore.QRect(10, 10, 101, 41)) + self.button_FileChoose.setObjectName("button_FileChoose") + self.label_FilePath = QtWidgets.QLabel(self.centralwidget) + self.label_FilePath.setGeometry(QtCore.QRect(120, 10, 331, 41)) + self.label_FilePath.setText("") + self.label_FilePath.setObjectName("label_FilePath") + self.label_TextVoxelSize = QtWidgets.QLabel(self.centralwidget) + self.label_TextVoxelSize.setGeometry(QtCore.QRect(20, 60, 91, 31)) + self.label_TextVoxelSize.setObjectName("label_TextVoxelSize") + self.doubleSpinBox_VoxelSize = QtWidgets.QDoubleSpinBox(self.centralwidget) + self.doubleSpinBox_VoxelSize.setGeometry(QtCore.QRect(120, 60, 81, 41)) + self.doubleSpinBox_VoxelSize.setDecimals(3) + self.doubleSpinBox_VoxelSize.setMinimum(0.001) + self.doubleSpinBox_VoxelSize.setMaximum(10.0) + self.doubleSpinBox_VoxelSize.setSingleStep(0.001) + self.doubleSpinBox_VoxelSize.setProperty("value", 1.0) + self.doubleSpinBox_VoxelSize.setObjectName("doubleSpinBox_VoxelSize") + self.button_Reset = QtWidgets.QPushButton(self.centralwidget) + self.button_Reset.setGeometry(QtCore.QRect(280, 70, 171, 81)) + self.button_Reset.setObjectName("button_Reset") + self.button_Show = QtWidgets.QPushButton(self.centralwidget) + self.button_Show.setGeometry(QtCore.QRect(20, 110, 111, 41)) + self.button_Show.setObjectName("button_Show") + self.button_Save = QtWidgets.QPushButton(self.centralwidget) + self.button_Save.setGeometry(QtCore.QRect(150, 110, 121, 41)) + self.button_Save.setObjectName("button_Save") + MainWindow.setCentralWidget(self.centralwidget) + + self.retranslateUi(MainWindow) + QtCore.QMetaObject.connectSlotsByName(MainWindow) + + def retranslateUi(self, MainWindow): + _translate = QtCore.QCoreApplication.translate + MainWindow.setWindowTitle(_translate("MainWindow", "Mesh To Voxel")) + self.button_FileChoose.setText(_translate("MainWindow", "Выбрать файл")) + self.label_TextVoxelSize.setText(_translate("MainWindow", "Размер вокселя: ")) + self.button_Reset.setText(_translate("MainWindow", "Сброс")) + self.button_Show.setText(_translate("MainWindow", "Показать")) + self.button_Save.setText(_translate("MainWindow", "Сохранить")) diff --git a/WindowMenu/WinMenu.ui b/WindowMenu/WinMenu.ui new file mode 100644 index 0000000..8da4ff1 --- /dev/null +++ b/WindowMenu/WinMenu.ui @@ -0,0 +1,154 @@ + + + MainWindow + + + + 0 + 0 + 460 + 160 + + + + + 0 + 0 + + + + + 460 + 160 + + + + + 460 + 160 + + + + false + + + false + + + Mesh To Voxel + + + + + + Qt::ToolButtonIconOnly + + + + + + 10 + 10 + 101 + 41 + + + + Выбрать файл + + + + + + 120 + 10 + 331 + 41 + + + + + + + + + + 20 + 60 + 91 + 31 + + + + Размер вокселя: + + + + + + 120 + 60 + 81 + 41 + + + + 3 + + + 0.001000000000000 + + + 10.000000000000000 + + + 0.001000000000000 + + + 1.000000000000000 + + + + + + 280 + 70 + 171 + 81 + + + + Сброс + + + + + + 20 + 110 + 111 + 41 + + + + Показать + + + + + + 150 + 110 + 121 + 41 + + + + Сохранить + + + + + + +