summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsanine-a <sanine.not@pm.me>2020-10-27 20:58:46 -0500
committersanine-a <sanine.not@pm.me>2020-10-27 20:58:46 -0500
commitc3698446644365283fcd3d3f47f3eea67cad8331 (patch)
tree4ad91fc176600f21a0bc298012635178a75d92d9
parent7dcdcc6824a515417d0e663277acf0a6b2cd1747 (diff)
fix bug with working directory and add Vector and Matrix wrappers
-rw-r--r--demo/Matrix.lua77
-rw-r--r--demo/Suzanne.mtl13
-rw-r--r--demo/Suzanne.obj2076
-rw-r--r--demo/Vec3.lua100
-rw-r--r--demo/Vector.lua60
-rw-r--r--demo/main.lua51
-rw-r--r--src/cglm_bindings.c17
-rw-r--r--src/cglm_bindings.h12
-rw-r--r--src/honey.c14
-rw-r--r--src/mesh/mesh.c126
-rw-r--r--src/mesh/mesh.h8
11 files changed, 2528 insertions, 26 deletions
diff --git a/demo/Matrix.lua b/demo/Matrix.lua
new file mode 100644
index 0000000..a78de65
--- /dev/null
+++ b/demo/Matrix.lua
@@ -0,0 +1,77 @@
+local Mat3 = {}
+
+Mat3.tostring = function(mat)
+ local str = '[ ['..
+ tostring(honey.cglm.get_value(mat, 0))..', '..
+ tostring(honey.cglm.get_value(mat, 1))..', '..
+ tostring(honey.cglm.get_value(mat, 2))..']\n ['..
+ tostring(honey.cglm.get_value(mat, 3))..', '..
+ tostring(honey.cglm.get_value(mat, 4))..', '..
+ tostring(honey.cglm.get_value(mat, 5))..']\n ['..
+ tostring(honey.cglm.get_value(mat, 6))..', '..
+ tostring(honey.cglm.get_value(mat, 7))..', '..
+ tostring(honey.cglm.get_value(mat, 8))..'] ]'
+ return str
+end
+
+Mat3.new = function(tbl)
+ if tbl == nil then
+ return honey.cglm.new_array_zero(9)
+ end
+
+ if #tbl ~= 9 then
+ error('3x3 matrices require exactly nine elements!')
+ end
+
+ local mat3 = honey.cglm.new_array_zero(9)
+ for i = 0,8 do
+ honey.cglm.set_value(mat3, i, tbl[i+1])
+ end
+
+ return mat3
+end
+
+-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+local Mat4 = {}
+
+Mat4.tostring = function(mat)
+ local str = '[ ['..
+ tostring(honey.cglm.get_value(mat, 0))..', '..
+ tostring(honey.cglm.get_value(mat, 1))..', '..
+ tostring(honey.cglm.get_value(mat, 2))..', '..
+ tostring(honey.cglm.get_value(mat, 3))..']\n ['..
+ tostring(honey.cglm.get_value(mat, 4))..', '..
+ tostring(honey.cglm.get_value(mat, 5))..', '..
+ tostring(honey.cglm.get_value(mat, 6))..', '..
+ tostring(honey.cglm.get_value(mat, 7))..']\n ['..
+ tostring(honey.cglm.get_value(mat, 8))..', '..
+ tostring(honey.cglm.get_value(mat, 9))..', '..
+ tostring(honey.cglm.get_value(mat, 10))..', '..
+ tostring(honey.cglm.get_value(mat, 11))..']\n ['..
+ tostring(honey.cglm.get_value(mat, 12))..', '..
+ tostring(honey.cglm.get_value(mat, 13))..', '..
+ tostring(honey.cglm.get_value(mat, 14))..', '..
+ tostring(honey.cglm.get_value(mat, 15))..'] ]'
+ return str
+end
+
+Mat4.new = function(tbl)
+ if tbl == nil then
+ return honey.cglm.new_array_zero(16)
+ end
+
+ if #tbl ~= 16 then
+ error('4x4 matrices require exactly 16 elements!')
+ end
+
+ local mat4 = honey.cglm.new_array_zero(16)
+ for i = 0,15 do
+ honey.cglm.set_value(mat4, i, tbl[i+1])
+ end
+
+ return mat4
+end
+
+
+return function() return Mat3, Mat4 end
diff --git a/demo/Suzanne.mtl b/demo/Suzanne.mtl
new file mode 100644
index 0000000..6dcd681
--- /dev/null
+++ b/demo/Suzanne.mtl
@@ -0,0 +1,13 @@
+# Blender MTL File: 'None'
+# Material Count: 1
+
+newmtl Material.001
+Ns 225.000000
+Ka 1.000000 1.000000 1.000000
+Kd 0.800000 0.800000 0.800000
+Ks 0.500000 0.500000 0.500000
+Ke 0.000000 0.000000 0.000000
+Ni 1.450000
+d 1.000000
+illum 2
+map_Kd Suzanne-tex.png
diff --git a/demo/Suzanne.obj b/demo/Suzanne.obj
new file mode 100644
index 0000000..988092b
--- /dev/null
+++ b/demo/Suzanne.obj
@@ -0,0 +1,2076 @@
+# Blender v2.82 (sub 7) OBJ File: ''
+# www.blender.org
+mtllib Suzanne.mtl
+o Suzanne
+v 0.468750 0.242188 0.757812
+v 0.437500 0.164062 0.765625
+v 0.500000 0.093750 0.687500
+v 0.562500 0.242188 0.671875
+v -0.500000 0.093750 0.687500
+v -0.437500 0.164062 0.765625
+v -0.468750 0.242188 0.757812
+v -0.562500 0.242188 0.671875
+v 0.546875 0.054688 0.578125
+v 0.625000 0.242188 0.562500
+v -0.546875 0.054688 0.578125
+v -0.625000 0.242188 0.562500
+v 0.351562 0.031250 0.718750
+v 0.351562 -0.023438 0.617188
+v -0.351562 -0.023438 0.617188
+v -0.351562 0.031250 0.718750
+v 0.351562 0.132812 0.781250
+v -0.351562 0.132812 0.781250
+v 0.273438 0.164062 0.796875
+v 0.203125 0.093750 0.742188
+v -0.203125 0.093750 0.742188
+v -0.273438 0.164062 0.796875
+v 0.156250 0.054688 0.648438
+v -0.156250 0.054688 0.648438
+v 0.140625 0.242188 0.742188
+v 0.078125 0.242188 0.656250
+v -0.078125 0.242188 0.656250
+v -0.140625 0.242188 0.742188
+v 0.242188 0.242188 0.796875
+v -0.242188 0.242188 0.796875
+v 0.273438 0.328125 0.796875
+v 0.203125 0.390625 0.742188
+v -0.203125 0.390625 0.742188
+v -0.273438 0.328125 0.796875
+v 0.156250 0.437500 0.648438
+v -0.156250 0.437500 0.648438
+v 0.351562 0.453125 0.718750
+v 0.351562 0.515625 0.617188
+v -0.351562 0.515625 0.617188
+v -0.351562 0.453125 0.718750
+v 0.351562 0.359375 0.781250
+v -0.351562 0.359375 0.781250
+v 0.437500 0.328125 0.765625
+v 0.500000 0.390625 0.687500
+v -0.500000 0.390625 0.687500
+v -0.437500 0.328125 0.765625
+v 0.546875 0.437500 0.578125
+v -0.546875 0.437500 0.578125
+v 0.445312 0.335938 0.781250
+v 0.476562 0.242188 0.773438
+v -0.445312 0.335938 0.781250
+v -0.476562 0.242188 0.773438
+v 0.351562 0.375000 0.804688
+v -0.351562 0.375000 0.804688
+v 0.265625 0.335938 0.820312
+v -0.265625 0.335938 0.820312
+v 0.226562 0.242188 0.820312
+v -0.226562 0.242188 0.820312
+v 0.265625 0.156250 0.820312
+v -0.265625 0.156250 0.820312
+v 0.351562 0.117188 0.804688
+v -0.351562 0.117188 0.804688
+v 0.445312 0.156250 0.781250
+v -0.445312 0.156250 0.781250
+v 0.351562 0.242188 0.828125
+v -0.351562 0.242188 0.828125
+v 0.179688 -0.968750 0.554688
+v 0.164062 -0.929688 0.632812
+v 0.000000 -0.945312 0.640625
+v 0.000000 -0.984375 0.578125
+v -0.164062 -0.929688 0.632812
+v -0.179688 -0.968750 0.554688
+v 0.328125 -0.945312 0.523438
+v 0.234375 -0.914062 0.632812
+v -0.234375 -0.914062 0.632812
+v -0.328125 -0.945312 0.523438
+v 0.367188 -0.890625 0.531250
+v 0.265625 -0.820312 0.664062
+v -0.265625 -0.820312 0.664062
+v -0.367188 -0.890625 0.531250
+v 0.351562 -0.695312 0.570312
+v 0.250000 -0.703125 0.687500
+v -0.250000 -0.703125 0.687500
+v -0.351562 -0.695312 0.570312
+v 0.312500 -0.437500 0.570312
+v 0.210938 -0.445312 0.710938
+v -0.210938 -0.445312 0.710938
+v -0.312500 -0.437500 0.570312
+v 0.203125 -0.187500 0.562500
+v 0.437500 -0.140625 0.531250
+v 0.398438 -0.046875 0.671875
+v 0.125000 -0.101562 0.812500
+v -0.398438 -0.046875 0.671875
+v -0.437500 -0.140625 0.531250
+v -0.203125 -0.187500 0.562500
+v -0.125000 -0.101562 0.812500
+v 0.632812 -0.039062 0.539062
+v 0.617188 0.054688 0.625000
+v -0.617188 0.054688 0.625000
+v -0.632812 -0.039062 0.539062
+v 0.828125 0.148438 0.445312
+v 0.726562 0.203125 0.601562
+v -0.726562 0.203125 0.601562
+v -0.828125 0.148438 0.445312
+v 0.859375 0.429688 0.593750
+v 0.742188 0.375000 0.656250
+v -0.742188 0.375000 0.656250
+v -0.859375 0.429688 0.593750
+v 0.710938 0.484375 0.625000
+v 0.687500 0.414062 0.726562
+v -0.687500 0.414062 0.726562
+v -0.710938 0.484375 0.625000
+v 0.492188 0.601562 0.687500
+v 0.437500 0.546875 0.796875
+v -0.437500 0.546875 0.796875
+v -0.492188 0.601562 0.687500
+v 0.320312 0.757812 0.734375
+v 0.312500 0.640625 0.835938
+v -0.312500 0.640625 0.835938
+v -0.320312 0.757812 0.734375
+v 0.156250 0.718750 0.757812
+v 0.203125 0.617188 0.851562
+v -0.203125 0.617188 0.851562
+v -0.156250 0.718750 0.757812
+v 0.062500 0.492188 0.750000
+v 0.101562 0.429688 0.843750
+v -0.101562 0.429688 0.843750
+v -0.062500 0.492188 0.750000
+v 0.000000 0.429688 0.742188
+v 0.000000 0.351562 0.820312
+v 0.164062 0.414062 0.773438
+v 0.250000 0.468750 0.757812
+v -0.250000 0.468750 0.757812
+v -0.164062 0.414062 0.773438
+v 0.328125 0.476562 0.742188
+v -0.328125 0.476562 0.742188
+v 0.429688 0.437500 0.718750
+v -0.429688 0.437500 0.718750
+v 0.601562 0.375000 0.664062
+v -0.601562 0.375000 0.664062
+v 0.640625 0.296875 0.648438
+v -0.640625 0.296875 0.648438
+v 0.625000 0.187500 0.648438
+v -0.625000 0.187500 0.648438
+v 0.492188 0.062500 0.671875
+v -0.492188 0.062500 0.671875
+v 0.375000 0.015625 0.703125
+v -0.375000 0.015625 0.703125
+v 0.203125 0.093750 0.742188
+v -0.203125 0.093750 0.742188
+v 0.164062 0.140625 0.750000
+v 0.000000 0.046875 0.726562
+v -0.164062 0.140625 0.750000
+v 0.125000 0.304688 0.765625
+v -0.125000 0.304688 0.765625
+v 0.000000 0.210938 0.765625
+v 0.132812 0.210938 0.757812
+v -0.132812 0.210938 0.757812
+v 0.062500 -0.882812 0.695312
+v 0.000000 -0.890625 0.687500
+v -0.062500 -0.882812 0.695312
+v 0.117188 -0.835938 0.710938
+v -0.117188 -0.835938 0.710938
+v 0.109375 -0.718750 0.734375
+v -0.109375 -0.718750 0.734375
+v 0.078125 -0.445312 0.750000
+v 0.117188 -0.687500 0.734375
+v -0.117188 -0.687500 0.734375
+v -0.078125 -0.445312 0.750000
+v 0.085938 -0.289062 0.742188
+v 0.000000 -0.328125 0.742188
+v 0.000000 -0.445312 0.750000
+v -0.085938 -0.289062 0.742188
+v 0.000000 -0.679688 0.734375
+v 0.000000 -0.765625 0.734375
+v 0.125000 -0.226562 0.750000
+v 0.132812 -0.226562 0.796875
+v 0.093750 -0.273438 0.781250
+v -0.093750 -0.273438 0.781250
+v -0.132812 -0.226562 0.796875
+v -0.125000 -0.226562 0.750000
+v 0.101562 -0.148438 0.742188
+v 0.109375 -0.132812 0.781250
+v -0.109375 -0.132812 0.781250
+v -0.101562 -0.148438 0.742188
+v 0.000000 -0.140625 0.742188
+v 0.039062 -0.125000 0.781250
+v -0.039062 -0.125000 0.781250
+v 0.000000 -0.195312 0.750000
+v 0.000000 -0.187500 0.796875
+v 0.000000 -0.320312 0.781250
+v 0.078125 -0.250000 0.804688
+v 0.000000 -0.289062 0.804688
+v -0.078125 -0.250000 0.804688
+v 0.000000 -0.203125 0.828125
+v 0.046875 -0.148438 0.812500
+v -0.046875 -0.148438 0.812500
+v 0.093750 -0.156250 0.812500
+v -0.093750 -0.156250 0.812500
+v 0.109375 -0.226562 0.828125
+v -0.109375 -0.226562 0.828125
+v 0.164062 -0.242188 0.710938
+v -0.164062 -0.242188 0.710938
+v 0.179688 -0.312500 0.710938
+v -0.179688 -0.312500 0.710938
+v 0.257812 -0.312500 0.554688
+v -0.257812 -0.312500 0.554688
+v 0.234375 -0.250000 0.554688
+v -0.234375 -0.250000 0.554688
+v 0.000000 -0.773438 0.718750
+v 0.093750 -0.742188 0.726562
+v -0.093750 -0.742188 0.726562
+v 0.093750 -0.820312 0.710938
+v -0.093750 -0.820312 0.710938
+v 0.046875 -0.867188 0.687500
+v -0.046875 -0.867188 0.687500
+v 0.000000 -0.875000 0.687500
+v 0.046875 -0.851562 0.632812
+v 0.000000 -0.859375 0.632812
+v -0.046875 -0.851562 0.632812
+v 0.093750 -0.812500 0.640625
+v -0.093750 -0.812500 0.640625
+v 0.093750 -0.750000 0.664062
+v -0.093750 -0.750000 0.664062
+v 0.000000 -0.781250 0.656250
+v 0.187500 0.156250 0.773438
+v 0.171875 0.218750 0.781250
+v -0.187500 0.156250 0.773438
+v -0.171875 0.218750 0.781250
+v 0.179688 0.296875 0.781250
+v -0.179688 0.296875 0.781250
+v 0.210938 0.375000 0.781250
+v -0.210938 0.375000 0.781250
+v 0.226562 0.109375 0.781250
+v -0.226562 0.109375 0.781250
+v 0.375000 0.062500 0.742188
+v -0.375000 0.062500 0.742188
+v 0.476562 0.101562 0.718750
+v -0.476562 0.101562 0.718750
+v 0.578125 0.195312 0.679688
+v -0.578125 0.195312 0.679688
+v 0.585938 0.289062 0.687500
+v -0.585938 0.289062 0.687500
+v 0.562500 0.351562 0.695312
+v -0.562500 0.351562 0.695312
+v 0.421875 0.398438 0.773438
+v -0.421875 0.398438 0.773438
+v 0.335938 0.429688 0.757812
+v -0.335938 0.429688 0.757812
+v 0.273438 0.421875 0.773438
+v -0.273438 0.421875 0.773438
+v 0.234375 0.359375 0.757812
+v 0.281250 0.398438 0.765625
+v -0.234375 0.359375 0.757812
+v -0.281250 0.398438 0.765625
+v 0.335938 0.406250 0.750000
+v -0.335938 0.406250 0.750000
+v 0.414062 0.390625 0.750000
+v -0.414062 0.390625 0.750000
+v 0.531250 0.335938 0.679688
+v -0.531250 0.335938 0.679688
+v 0.554688 0.281250 0.671875
+v -0.554688 0.281250 0.671875
+v 0.546875 0.210938 0.671875
+v -0.546875 0.210938 0.671875
+v 0.460938 0.117188 0.703125
+v -0.460938 0.117188 0.703125
+v 0.375000 0.085938 0.726562
+v -0.375000 0.085938 0.726562
+v 0.242188 0.125000 0.757812
+v -0.242188 0.125000 0.757812
+v 0.203125 0.171875 0.750000
+v -0.203125 0.171875 0.750000
+v 0.195312 0.296875 0.757812
+v -0.195312 0.296875 0.757812
+v 0.195312 0.226562 0.750000
+v -0.195312 0.226562 0.750000
+v 0.109375 0.460938 0.609375
+v 0.000000 0.406250 0.601562
+v -0.109375 0.460938 0.609375
+v 0.195312 0.664062 0.617188
+v -0.195312 0.664062 0.617188
+v 0.335938 0.687500 0.593750
+v -0.335938 0.687500 0.593750
+v 0.484375 0.554688 0.554688
+v -0.484375 0.554688 0.554688
+v 0.679688 0.453125 0.492188
+v -0.679688 0.453125 0.492188
+v 0.796875 0.406250 0.460938
+v -0.796875 0.406250 0.460938
+v 0.773438 0.164062 0.375000
+v -0.773438 0.164062 0.375000
+v 0.601562 -0.000000 0.414062
+v -0.601562 -0.000000 0.414062
+v 0.437500 -0.093750 0.468750
+v -0.437500 -0.093750 0.468750
+v 0.000000 -0.570312 0.320312
+v 0.000000 -0.484375 0.281250
+v 0.179688 -0.414062 0.257812
+v 0.125000 -0.539062 0.359375
+v -0.179688 -0.414062 0.257812
+v -0.125000 -0.539062 0.359375
+v 0.000000 -0.804688 0.343750
+v 0.140625 -0.757812 0.367188
+v -0.140625 -0.757812 0.367188
+v 0.000000 -0.976562 0.460938
+v 0.164062 -0.945312 0.437500
+v -0.164062 -0.945312 0.437500
+v 0.328125 -0.914062 0.398438
+v -0.328125 -0.914062 0.398438
+v 0.289062 -0.710938 0.382812
+v -0.289062 -0.710938 0.382812
+v 0.250000 -0.500000 0.390625
+v -0.250000 -0.500000 0.390625
+v 0.234375 -0.351562 0.406250
+v -0.234375 -0.351562 0.406250
+v 0.218750 -0.281250 0.429688
+v 0.210938 -0.226562 0.468750
+v -0.210938 -0.226562 0.468750
+v -0.218750 -0.281250 0.429688
+v 0.203125 -0.171875 0.500000
+v -0.203125 -0.171875 0.500000
+v 0.000000 0.070312 -0.828125
+v 0.335938 0.054688 -0.664062
+v 0.343750 -0.148438 -0.539062
+v 0.000000 -0.195312 -0.671875
+v -0.343750 -0.148438 -0.539062
+v -0.335938 0.054688 -0.664062
+v 0.296875 -0.312500 -0.265625
+v 0.000000 -0.382812 -0.351562
+v -0.296875 -0.312500 -0.265625
+v 0.210938 -0.390625 0.164062
+v 0.000000 -0.460938 0.187500
+v -0.210938 -0.390625 0.164062
+v 0.734375 -0.046875 0.070312
+v 0.851562 0.234375 0.054688
+v -0.734375 -0.046875 0.070312
+v -0.851562 0.234375 0.054688
+v 0.000000 0.562500 -0.851562
+v 0.460938 0.437500 -0.703125
+v -0.460938 0.437500 -0.703125
+v 0.000000 0.898438 0.289062
+v 0.453125 0.851562 0.234375
+v 0.453125 0.929688 -0.070312
+v 0.000000 0.984375 -0.078125
+v -0.453125 0.929688 -0.070312
+v -0.453125 0.851562 0.234375
+v 0.453125 0.867188 -0.382812
+v 0.000000 0.898438 -0.546875
+v -0.453125 0.867188 -0.382812
+v 0.726562 0.406250 0.335938
+v 0.632812 0.453125 0.281250
+v -0.726562 0.406250 0.335938
+v -0.632812 0.453125 0.281250
+v 0.796875 0.562500 0.125000
+v 0.640625 0.703125 0.054688
+v -0.796875 0.562500 0.125000
+v -0.640625 0.703125 0.054688
+v 0.796875 0.617188 -0.117188
+v 0.640625 0.750000 -0.195312
+v -0.796875 0.617188 -0.117188
+v -0.640625 0.750000 -0.195312
+v 0.796875 0.539062 -0.359375
+v 0.640625 0.679688 -0.445312
+v -0.796875 0.539062 -0.359375
+v -0.640625 0.679688 -0.445312
+v 0.773438 0.265625 -0.437500
+v 0.617188 0.328125 -0.585938
+v -0.617188 0.328125 -0.585938
+v -0.773438 0.265625 -0.437500
+v 0.460938 0.523438 0.429688
+v -0.460938 0.523438 0.429688
+v 0.000000 0.570312 0.570312
+v 0.859375 0.320312 -0.046875
+v -0.859375 0.320312 -0.046875
+v 0.820312 0.328125 -0.203125
+v -0.820312 0.328125 -0.203125
+v 0.429688 -0.195312 -0.210938
+v 0.406250 -0.171875 0.148438
+v -0.429688 -0.195312 -0.210938
+v -0.406250 -0.171875 0.148438
+v 0.593750 -0.125000 -0.164062
+v -0.593750 -0.125000 -0.164062
+v 0.640625 -0.007812 -0.429688
+v 0.484375 0.023438 -0.546875
+v -0.484375 0.023438 -0.546875
+v -0.640625 -0.007812 -0.429688
+v 1.023438 0.476562 -0.312500
+v 0.890625 0.406250 -0.234375
+v 0.921875 0.359375 -0.218750
+v 1.015625 0.414062 -0.289062
+v -0.921875 0.359375 -0.218750
+v -0.890625 0.406250 -0.234375
+v -1.023438 0.476562 -0.312500
+v -1.015625 0.414062 -0.289062
+v 1.187500 0.437500 -0.390625
+v 1.234375 0.507812 -0.421875
+v -1.187500 0.437500 -0.390625
+v -1.234375 0.507812 -0.421875
+v 1.265625 0.289062 -0.406250
+v 1.351562 0.320312 -0.421875
+v -1.265625 0.289062 -0.406250
+v -1.351562 0.320312 -0.421875
+v 1.210938 0.078125 -0.406250
+v 1.281250 0.054688 -0.429688
+v -1.210938 0.078125 -0.406250
+v -1.281250 0.054688 -0.429688
+v 1.031250 -0.039062 -0.304688
+v 1.039062 -0.101562 -0.328125
+v -1.031250 -0.039062 -0.304688
+v -1.039062 -0.101562 -0.328125
+v 0.828125 -0.070312 -0.132812
+v 0.773438 -0.140625 -0.125000
+v -0.828125 -0.070312 -0.132812
+v -0.773438 -0.140625 -0.125000
+v 1.039062 0.000000 -0.367188
+v 0.882812 -0.023438 -0.210938
+v -0.882812 -0.023438 -0.210938
+v -1.039062 0.000000 -0.367188
+v 1.187500 0.093750 -0.445312
+v -1.187500 0.093750 -0.445312
+v 1.234375 0.250000 -0.445312
+v -1.234375 0.250000 -0.445312
+v 1.171875 0.359375 -0.437500
+v -1.171875 0.359375 -0.437500
+v 1.023438 0.343750 -0.359375
+v -1.023438 0.343750 -0.359375
+v 0.945312 0.304688 -0.289062
+v -0.945312 0.304688 -0.289062
+v 0.718750 -0.023438 -0.171875
+v 0.726562 0.000000 -0.070312
+v -0.718750 -0.023438 -0.171875
+v -0.726562 0.000000 -0.070312
+v 0.843750 0.289062 -0.210938
+v -0.843750 0.289062 -0.210938
+v 0.812500 -0.015625 -0.273438
+v -0.812500 -0.015625 -0.273438
+v 0.843750 0.015625 -0.273438
+v 0.718750 0.039062 -0.187500
+v -0.718750 0.039062 -0.187500
+v -0.843750 0.015625 -0.273438
+v 0.757812 0.093750 -0.273438
+v 0.820312 0.085938 -0.273438
+v -0.757812 0.093750 -0.273438
+v -0.820312 0.085938 -0.273438
+v 0.835938 0.171875 -0.273438
+v 0.796875 0.203125 -0.210938
+v -0.796875 0.203125 -0.210938
+v -0.835938 0.171875 -0.273438
+v 0.890625 0.242188 -0.265625
+v -0.890625 0.242188 -0.265625
+v 0.890625 0.234375 -0.320312
+v 0.953125 0.289062 -0.343750
+v -0.890625 0.234375 -0.320312
+v -0.953125 0.289062 -0.343750
+v 0.843750 0.171875 -0.320312
+v -0.843750 0.171875 -0.320312
+v 0.765625 0.093750 -0.320312
+v -0.765625 0.093750 -0.320312
+v 0.828125 0.078125 -0.320312
+v -0.828125 0.078125 -0.320312
+v 0.851562 0.015625 -0.320312
+v -0.851562 0.015625 -0.320312
+v 0.812500 -0.015625 -0.320312
+v -0.812500 -0.015625 -0.320312
+v 0.882812 -0.015625 -0.265625
+v -0.882812 -0.015625 -0.265625
+v 1.039062 0.328125 -0.414062
+v -1.039062 0.328125 -0.414062
+v 1.187500 0.343750 -0.484375
+v -1.187500 0.343750 -0.484375
+v 1.257812 0.242188 -0.492188
+v -1.257812 0.242188 -0.492188
+v 1.210938 0.085938 -0.484375
+v -1.210938 0.085938 -0.484375
+v 1.046875 0.000000 -0.421875
+v -1.046875 0.000000 -0.421875
+v 0.937500 0.062500 -0.335938
+v 0.890625 0.109375 -0.328125
+v -0.937500 0.062500 -0.335938
+v -0.890625 0.109375 -0.328125
+v 1.000000 0.125000 -0.367188
+v 0.960938 0.171875 -0.351562
+v -1.000000 0.125000 -0.367188
+v -0.960938 0.171875 -0.351562
+v 1.054688 0.187500 -0.382812
+v 1.015625 0.234375 -0.375000
+v -1.054688 0.187500 -0.382812
+v -1.015625 0.234375 -0.375000
+v 1.109375 0.210938 -0.390625
+v 1.085938 0.273438 -0.390625
+v -1.109375 0.210938 -0.390625
+v -1.085938 0.273438 -0.390625
+v 0.789062 -0.125000 -0.328125
+v 1.039062 -0.085938 -0.492188
+v -0.789062 -0.125000 -0.328125
+v -1.039062 -0.085938 -0.492188
+v 1.312500 0.054688 -0.531250
+v -1.312500 0.054688 -0.531250
+v 1.367188 0.296875 -0.500000
+v -1.367188 0.296875 -0.500000
+v 1.250000 0.468750 -0.546875
+v -1.250000 0.468750 -0.546875
+v 1.023438 0.437500 -0.484375
+v -1.023438 0.437500 -0.484375
+v 0.859375 0.382812 -0.382812
+v -0.859375 0.382812 -0.382812
+vt 0.890955 0.590063
+vt 0.870622 0.589649
+vt 0.860081 0.560115
+vt 0.904571 0.559404
+vt 0.856226 0.850547
+vt 0.868067 0.821510
+vt 0.888398 0.821999
+vt 0.900640 0.853232
+vt 0.853018 0.521562
+vt 0.920166 0.524546
+vt 0.847458 0.888748
+vt 0.914672 0.888748
+vt 0.828900 0.590771
+vt 0.798481 0.569535
+vt 0.795104 0.838402
+vt 0.826436 0.818537
+vt 0.854402 0.604754
+vt 0.852534 0.805700
+vt 0.854107 0.625459
+vt 0.828171 0.633354
+vt 0.827598 0.775964
+vt 0.853157 0.785002
+vt 0.791018 0.645443
+vt 0.791018 0.762238
+vt 0.855181 0.668527
+vt 0.842358 0.702491
+vt 0.844839 0.707525
+vt 0.856142 0.742025
+vt 0.867508 0.642291
+vt 0.867293 0.768782
+vt 0.890474 0.641909
+vt 0.900375 0.666964
+vt 0.901223 0.745592
+vt 0.890219 0.770183
+vt 0.918898 0.699697
+vt 0.921180 0.713713
+vt 0.931889 0.636832
+vt 0.968392 0.645333
+vt 0.968213 0.770220
+vt 0.931368 0.777093
+vt 0.905882 0.627902
+vt 0.904990 0.784860
+vt 0.906232 0.605742
+vt 0.933717 0.593037
+vt 0.931250 0.820926
+vt 0.904357 0.807013
+vt 0.968392 0.573812
+vt 0.965038 0.841671
+vt 0.902359 0.607909
+vt 0.889591 0.593275
+vt 0.900583 0.804677
+vt 0.887178 0.818729
+vt 0.899781 0.626257
+vt 0.898822 0.786233
+vt 0.887842 0.636527
+vt 0.887351 0.775442
+vt 0.870908 0.635245
+vt 0.870376 0.775972
+vt 0.859881 0.623942
+vt 0.858859 0.786774
+vt 0.859664 0.608186
+vt 0.857942 0.802505
+vt 0.871664 0.593961
+vt 0.869299 0.817249
+vt 0.879400 0.616512
+vt 0.878029 0.795063
+vt 0.540260 0.053805
+vt 0.536419 0.062072
+vt 0.518925 0.059681
+vt 0.518916 0.050294
+vt 0.501452 0.062043
+vt 0.497626 0.053770
+vt 0.551930 0.058338
+vt 0.542788 0.064089
+vt 0.495083 0.064047
+vt 0.485955 0.058273
+vt 0.555073 0.061900
+vt 0.546290 0.072669
+vt 0.491565 0.072625
+vt 0.482805 0.061829
+vt 0.563812 0.076586
+vt 0.548333 0.084893
+vt 0.489507 0.084858
+vt 0.474014 0.076511
+vt 0.583135 0.108495
+vt 0.555621 0.121749
+vt 0.482177 0.121781
+vt 0.454527 0.108481
+vt 0.605512 0.165134
+vt 0.647395 0.200502
+vt 0.621513 0.227818
+vt 0.553118 0.209599
+vt 0.416514 0.229490
+vt 0.389677 0.201890
+vt 0.432024 0.165644
+vt 0.485339 0.210053
+vt 0.676379 0.233241
+vt 0.664761 0.253225
+vt 0.372747 0.256357
+vt 0.360308 0.235899
+vt 0.715342 0.265392
+vt 0.683908 0.279995
+vt 0.353696 0.284606
+vt 0.320452 0.270303
+vt 0.707254 0.310054
+vt 0.687515 0.311539
+vt 0.351187 0.317440
+vt 0.330721 0.316853
+vt 0.697446 0.332673
+vt 0.676824 0.323937
+vt 0.362723 0.329722
+vt 0.341964 0.339667
+vt 0.662817 0.372521
+vt 0.639050 0.357330
+vt 0.402772 0.362131
+vt 0.379297 0.378686
+vt 0.626842 0.395792
+vt 0.618316 0.375151
+vt 0.424583 0.379267
+vt 0.416915 0.400552
+vt 0.604826 0.397804
+vt 0.600808 0.377857
+vt 0.442396 0.381222
+vt 0.439252 0.401540
+vt 0.553095 0.390512
+vt 0.559674 0.357011
+vt 0.482938 0.358497
+vt 0.490934 0.391862
+vt 0.521923 0.386009
+vt 0.521086 0.343868
+vt 0.577279 0.340156
+vt 0.599845 0.344815
+vt 0.441977 0.347815
+vt 0.464579 0.342230
+vt 0.615546 0.342005
+vt 0.425972 0.345582
+vt 0.634472 0.332311
+vt 0.406362 0.336480
+vt 0.662406 0.312804
+vt 0.377061 0.317685
+vt 0.668440 0.297958
+vt 0.370304 0.302644
+vt 0.664101 0.277872
+vt 0.374100 0.281778
+vt 0.639236 0.253047
+vt 0.398938 0.255633
+vt 0.613992 0.242662
+vt 0.424464 0.244473
+vt 0.572941 0.258564
+vt 0.466409 0.259709
+vt 0.563905 0.272007
+vt 0.519760 0.248864
+vt 0.475886 0.273078
+vt 0.558527 0.316594
+vt 0.482619 0.317843
+vt 0.520277 0.294764
+vt 0.556923 0.291214
+vt 0.483433 0.292249
+vt 0.525483 0.068967
+vt 0.518928 0.067899
+vt 0.512375 0.068956
+vt 0.531231 0.073829
+vt 0.506626 0.073811
+vt 0.531019 0.087431
+vt 0.506827 0.087416
+vt 0.532042 0.127713
+vt 0.532669 0.090920
+vt 0.505177 0.090908
+vt 0.505828 0.127728
+vt 0.538112 0.158382
+vt 0.518981 0.151749
+vt 0.518941 0.128358
+vt 0.499851 0.158434
+vt 0.518925 0.093952
+vt 0.518927 0.085180
+vt 0.548362 0.173560
+vt 0.537959 0.175966
+vt 0.535214 0.166808
+vt 0.502799 0.166857
+vt 0.500100 0.176033
+vt 0.489683 0.173693
+vt 0.544281 0.193366
+vt 0.537248 0.187577
+vt 0.500890 0.187571
+vt 0.493996 0.193428
+vt 0.519841 0.200843
+vt 0.528757 0.191785
+vt 0.509219 0.191626
+vt 0.517577 0.190607
+vt 0.519132 0.185382
+vt 0.518998 0.159028
+vt 0.531131 0.171631
+vt 0.519016 0.165599
+vt 0.506910 0.171667
+vt 0.519099 0.179457
+vt 0.528222 0.186316
+vt 0.509787 0.186260
+vt 0.533528 0.184215
+vt 0.504547 0.184206
+vt 0.533449 0.176739
+vt 0.504604 0.176791
+vt 0.561572 0.167779
+vt 0.476363 0.167996
+vt 0.559475 0.149319
+vt 0.478371 0.149447
+vt 0.596138 0.133426
+vt 0.441395 0.133592
+vt 0.601169 0.147885
+vt 0.436337 0.148194
+vt 0.518925 0.083865
+vt 0.528933 0.084957
+vt 0.508915 0.084945
+vt 0.529036 0.075429
+vt 0.508820 0.075415
+vt 0.523751 0.070508
+vt 0.514106 0.070501
+vt 0.518929 0.069468
+vt 0.521560 0.074970
+vt 0.518928 0.074259
+vt 0.516297 0.074966
+vt 0.524236 0.076691
+vt 0.513619 0.076684
+vt 0.524601 0.079886
+vt 0.513252 0.079879
+vt 0.518926 0.079331
+vt 0.571787 0.277295
+vt 0.568351 0.292904
+vt 0.468070 0.278617
+vt 0.471978 0.294282
+vt 0.573085 0.311386
+vt 0.467790 0.313081
+vt 0.584855 0.327708
+vt 0.456477 0.329961
+vt 0.580734 0.266620
+vt 0.458737 0.268049
+vt 0.611720 0.255725
+vt 0.427062 0.257728
+vt 0.632494 0.262853
+vt 0.406068 0.265508
+vt 0.653658 0.279971
+vt 0.384904 0.283634
+vt 0.656064 0.297636
+vt 0.383015 0.301864
+vt 0.652752 0.310186
+vt 0.386858 0.314615
+vt 0.629040 0.323864
+vt 0.411556 0.327673
+vt 0.614408 0.331972
+vt 0.426727 0.335361
+vt 0.601033 0.333624
+vt 0.440344 0.336537
+vt 0.590644 0.321516
+vt 0.601799 0.328453
+vt 0.450408 0.323919
+vt 0.439372 0.331331
+vt 0.613335 0.327083
+vt 0.427623 0.330358
+vt 0.626851 0.320513
+vt 0.413648 0.324175
+vt 0.646248 0.306421
+vt 0.393381 0.310510
+vt 0.649541 0.296225
+vt 0.389662 0.300183
+vt 0.647785 0.283486
+vt 0.391040 0.287071
+vt 0.629829 0.267263
+vt 0.408893 0.269959
+vt 0.612641 0.261560
+vt 0.426254 0.263693
+vt 0.585166 0.270991
+vt 0.454369 0.272583
+vt 0.578124 0.281900
+vt 0.461798 0.283441
+vt 0.579548 0.309340
+vt 0.461204 0.311233
+vt 0.577524 0.293776
+vt 0.462754 0.295432
+vt 0.553209 0.433063
+vt 0.523031 0.433628
+vt 0.492809 0.434538
+vt 0.609819 0.431516
+vt 0.435860 0.435740
+vt 0.648174 0.419316
+vt 0.396518 0.425416
+vt 0.692106 0.388274
+vt 0.350292 0.396229
+vt 0.726332 0.341754
+vt 0.312756 0.350588
+vt 0.735879 0.312112
+vt 0.301067 0.320593
+vt 0.729900 0.256393
+vt 0.304876 0.261087
+vt 0.698172 0.216906
+vt 0.337414 0.219179
+vt 0.663103 0.190671
+vt 0.373474 0.191872
+vt 0.626908 0.015608
+vt 0.649444 0.022378
+vt 0.660451 0.076084
+vt 0.621440 0.048089
+vt 0.376796 0.075296
+vt 0.388827 0.021586
+vt 0.411318 0.015131
+vt 0.416419 0.047631
+vt 0.567460 0.000144
+vt 0.577206 0.032801
+vt 0.470636 0.000144
+vt 0.460782 0.032656
+vt 0.518922 0.024886
+vt 0.547413 0.041724
+vt 0.490511 0.041669
+vt 0.558059 0.053871
+vt 0.479842 0.053785
+vt 0.576951 0.057998
+vt 0.460920 0.057845
+vt 0.611687 0.078268
+vt 0.425932 0.077985
+vt 0.626663 0.111357
+vt 0.410618 0.111244
+vt 0.629482 0.130456
+vt 0.623495 0.146796
+vt 0.413741 0.147158
+vt 0.407648 0.130594
+vt 0.619303 0.159841
+vt 0.418035 0.160361
+vt 0.945900 0.079569
+vt 0.886245 0.121777
+vt 0.849114 0.099732
+vt 0.891780 0.036916
+vt 0.183115 0.092127
+vt 0.141314 0.112482
+vt 0.078961 0.060719
+vt 0.142277 0.021467
+vt 0.788458 0.080826
+vt 0.805584 0.010786
+vt 0.246353 0.076510
+vt 0.232648 0.003484
+vt 0.687018 0.077204
+vt 0.672384 0.022201
+vt 0.349875 0.075955
+vt 0.365979 0.020991
+vt 0.760215 0.193244
+vt 0.789046 0.233323
+vt 0.271553 0.193871
+vt 0.241255 0.236977
+vt 0.994525 0.167705
+vt 0.909112 0.183261
+vt 0.107928 0.179083
+vt 0.011829 0.155367
+vt 0.911671 0.402429
+vt 0.862868 0.338556
+vt 0.894128 0.301884
+vt 0.962901 0.344752
+vt 0.123776 0.315519
+vt 0.160557 0.356821
+vt 0.106400 0.432652
+vt 0.043968 0.367038
+vt 0.915360 0.259804
+vt 0.999856 0.254640
+vt 0.098965 0.266968
+vt 0.000144 0.259113
+vt 0.749542 0.334683
+vt 0.766337 0.300809
+vt 0.789162 0.313727
+vt 0.267408 0.310142
+vt 0.288183 0.346496
+vt 0.242992 0.325552
+vt 0.815314 0.276388
+vt 0.846174 0.293397
+vt 0.213065 0.285164
+vt 0.178537 0.304983
+vt 0.845007 0.256352
+vt 0.873517 0.265922
+vt 0.179662 0.263312
+vt 0.147089 0.274284
+vt 0.859075 0.228168
+vt 0.886999 0.233769
+vt 0.162803 0.231720
+vt 0.131514 0.237587
+vt 0.842355 0.195160
+vt 0.875030 0.184705
+vt 0.145224 0.182749
+vt 0.176788 0.196179
+vt 0.794286 0.364062
+vt 0.239776 0.382592
+vt 0.770185 0.379538
+vt 0.268122 0.398737
+vt 0.845499 0.449967
+vt 0.185281 0.484099
+vt 0.815858 0.445381
+vt 0.770572 0.444261
+vt 0.755700 0.418603
+vt 0.287033 0.442912
+vt 0.271364 0.473316
+vt 0.219260 0.477186
+vt 0.819845 0.468071
+vt 0.215894 0.503605
+vt 0.809631 0.233887
+vt 0.219168 0.237388
+vt 0.829287 0.219562
+vt 0.199067 0.222464
+vt 0.786480 0.117591
+vt 0.715482 0.139727
+vt 0.246666 0.114850
+vt 0.319538 0.139409
+vt 0.785486 0.152330
+vt 0.245969 0.151002
+vt 0.837382 0.156361
+vt 0.858171 0.137775
+vt 0.171653 0.132294
+vt 0.196622 0.155241
+vt 0.506166 0.904851
+vt 0.432388 0.894943
+vt 0.438797 0.870229
+vt 0.491058 0.881714
+vt 0.315867 0.868209
+vt 0.321637 0.893225
+vt 0.247207 0.901159
+vt 0.263032 0.878321
+vt 0.572792 0.860484
+vt 0.604825 0.879946
+vt 0.181486 0.854693
+vt 0.148729 0.873349
+vt 0.586396 0.793977
+vt 0.619962 0.791615
+vt 0.169745 0.787474
+vt 0.136063 0.784093
+vt 0.549027 0.746412
+vt 0.563786 0.739211
+vt 0.208656 0.740879
+vt 0.194086 0.733241
+vt 0.500314 0.711729
+vt 0.508270 0.697693
+vt 0.258399 0.707497
+vt 0.250811 0.693249
+vt 0.438641 0.680683
+vt 0.434803 0.658882
+vt 0.320962 0.677959
+vt 0.325318 0.656224
+vt 0.505666 0.730944
+vt 0.452955 0.700023
+vt 0.306136 0.696976
+vt 0.252524 0.726592
+vt 0.542850 0.755753
+vt 0.214575 0.750414
+vt 0.568148 0.787367
+vt 0.188269 0.781375
+vt 0.555495 0.826352
+vt 0.199850 0.820889
+vt 0.501231 0.844356
+vt 0.253846 0.840502
+vt 0.457832 0.840040
+vt 0.297562 0.837358
+vt 0.796021 0.176969
+vt 0.783193 0.187449
+vt 0.233625 0.175620
+vt 0.246955 0.187075
+vt 0.391039 0.611891
+vt 0.394766 0.686125
+vt 0.369913 0.610196
+vt 0.364838 0.684445
+vt 0.391747 0.862097
+vt 0.401605 0.841460
+vt 0.354026 0.840297
+vt 0.363377 0.861308
+vt 0.435018 0.718280
+vt 0.323658 0.715731
+vt 0.433669 0.729661
+vt 0.384658 0.710299
+vt 0.374400 0.708969
+vt 0.324726 0.727177
+vt 0.410995 0.747662
+vt 0.427812 0.742828
+vt 0.347028 0.745816
+vt 0.330270 0.740536
+vt 0.418086 0.784946
+vt 0.384657 0.795423
+vt 0.372270 0.794472
+vt 0.338952 0.783073
+vt 0.431333 0.817535
+vt 0.324790 0.815460
+vt 0.816266 0.203086
+vt 0.825107 0.209762
+vt 0.199767 0.214827
+vt 0.209828 0.206161
+vt 0.802192 0.184609
+vt 0.226485 0.183086
+vt 0.448505 0.804621
+vt 0.473386 0.824700
+vt 0.307886 0.802031
+vt 0.282357 0.821525
+vt 0.435868 0.779569
+vt 0.321237 0.777208
+vt 0.423718 0.754191
+vt 0.334089 0.752045
+vt 0.437950 0.749777
+vt 0.319919 0.747250
+vt 0.445392 0.731997
+vt 0.312907 0.729222
+vt 0.440995 0.724383
+vt 0.317510 0.721697
+vt 0.455277 0.713731
+vt 0.303460 0.710657
+vt 0.512485 0.828811
+vt 0.242975 0.824574
+vt 0.550942 0.811814
+vt 0.204839 0.806417
+vt 0.552139 0.787682
+vt 0.204331 0.782156
+vt 0.539407 0.764539
+vt 0.217774 0.759319
+vt 0.508439 0.743135
+vt 0.249419 0.738732
+vt 0.470841 0.748408
+vt 0.454776 0.761665
+vt 0.286960 0.745020
+vt 0.302729 0.758742
+vt 0.488870 0.770464
+vt 0.475403 0.783904
+vt 0.268291 0.766661
+vt 0.281439 0.780511
+vt 0.503673 0.787562
+vt 0.494476 0.802470
+vt 0.252972 0.783410
+vt 0.261790 0.798626
+vt 0.518562 0.791602
+vt 0.516802 0.807339
+vt 0.237920 0.787045
+vt 0.239243 0.802891
+vt 0.484068 0.628776
+vt 0.543385 0.683538
+vt 0.276936 0.625067
+vt 0.216123 0.678120
+vt 0.581052 0.726933
+vt 0.177176 0.720426
+vt 0.616701 0.759965
+vt 0.140379 0.752377
+vt 0.707492 0.759884
+vt 0.660647 0.741167
+vt 0.049526 0.748824
+vt 0.097038 0.732052
+vt 0.745511 0.652100
+vt 0.677256 0.670436
+vt 0.019409 0.639749
+vt 0.083564 0.662038
+vt 0.740843 0.572428
+vt 0.671403 0.592656
+vt 0.033664 0.564403
+vt 0.092820 0.589862
+vt 0.834578 0.206879
+vt 0.834705 0.206959
+vt 0.051216 0.522659
+vt 0.145041 0.562595
+vt 0.620420 0.565675
+vt 0.498072 0.552315
+vt 0.264218 0.550140
+vn 0.9777 -0.0110 0.2098
+vn 0.7277 -0.6545 0.2051
+vn 0.6040 -0.5102 0.6122
+vn 0.8021 -0.0034 0.5972
+vn -0.6040 -0.5102 0.6122
+vn -0.7277 -0.6545 0.2051
+vn -0.9777 -0.0110 0.2098
+vn -0.8021 -0.0034 0.5972
+vn 0.6829 -0.5475 0.4835
+vn 0.8684 -0.0033 0.4958
+vn -0.6829 -0.5475 0.4835
+vn -0.8684 -0.0033 0.4958
+vn 0.0982 -0.7510 0.6530
+vn 0.1159 -0.8670 0.4847
+vn -0.1159 -0.8670 0.4847
+vn -0.0982 -0.7510 0.6530
+vn 0.0375 -0.9651 0.2593
+vn -0.0375 -0.9651 0.2593
+vn -0.6553 -0.6928 0.3008
+vn -0.4514 -0.5393 0.7109
+vn 0.4514 -0.5393 0.7109
+vn 0.6553 -0.6928 0.3008
+vn -0.5512 -0.6358 0.5402
+vn 0.5512 -0.6358 0.5402
+vn -0.6940 -0.0035 0.7199
+vn -0.8148 -0.0038 0.5797
+vn 0.8148 -0.0038 0.5797
+vn 0.6940 -0.0035 0.7199
+vn -0.9461 -0.0128 0.3237
+vn 0.9461 -0.0128 0.3237
+vn -0.6622 0.6914 0.2889
+vn -0.4551 0.5251 0.7191
+vn 0.4551 0.5251 0.7191
+vn 0.6622 0.6914 0.2889
+vn -0.5298 0.6266 0.5716
+vn 0.5298 0.6266 0.5716
+vn 0.1019 0.7401 0.6647
+vn 0.1224 0.8373 0.5328
+vn -0.1224 0.8373 0.5328
+vn -0.1019 0.7401 0.6647
+vn 0.0321 0.9710 0.2369
+vn -0.0321 0.9710 0.2369
+vn 0.7320 0.6527 0.1949
+vn 0.6084 0.4949 0.6203
+vn -0.6084 0.4949 0.6203
+vn -0.7320 0.6527 0.1949
+vn 0.6722 0.5381 0.5084
+vn -0.6722 0.5381 0.5084
+vn 0.7220 0.6499 0.2374
+vn 0.9737 -0.0122 0.2273
+vn -0.7220 0.6499 0.2374
+vn -0.9737 -0.0122 0.2273
+vn 0.0374 0.9336 0.3564
+vn -0.0374 0.9336 0.3564
+vn -0.6263 0.6470 0.4347
+vn 0.6263 0.6470 0.4348
+vn -0.9113 -0.0123 0.4116
+vn 0.9113 -0.0123 0.4116
+vn -0.6181 -0.6538 0.4364
+vn 0.6181 -0.6538 0.4364
+vn 0.0369 -0.9351 0.3524
+vn -0.0369 -0.9351 0.3524
+vn 0.7150 -0.6569 0.2391
+vn -0.7150 -0.6569 0.2391
+vn 0.1836 -0.0053 0.9830
+vn -0.1836 -0.0053 0.9830
+vn 0.1576 -0.9745 0.1596
+vn 0.1679 -0.7535 0.6356
+vn 0.0000 -0.7922 0.6102
+vn 0.0000 -0.9777 0.2098
+vn -0.1679 -0.7535 0.6356
+vn -0.1576 -0.9745 0.1596
+vn 0.6541 -0.7418 0.1480
+vn 0.3630 -0.6184 0.6970
+vn -0.3630 -0.6184 0.6970
+vn -0.6541 -0.7418 0.1480
+vn 0.9696 -0.1473 0.1954
+vn 0.5559 -0.2160 0.8027
+vn -0.5559 -0.2160 0.8027
+vn -0.9696 -0.1473 0.1954
+vn 0.9758 0.0949 0.1970
+vn 0.5679 -0.0330 0.8224
+vn -0.5679 -0.0330 0.8224
+vn -0.9758 0.0949 0.1970
+vn 0.9651 0.2189 0.1435
+vn 0.5872 0.1119 0.8016
+vn -0.5872 0.1119 0.8016
+vn -0.9651 0.2189 0.1435
+vn 0.9053 -0.3891 0.1703
+vn 0.3605 -0.9316 0.0454
+vn 0.3809 -0.5176 0.7662
+vn 0.0663 -0.1929 0.9789
+vn -0.3809 -0.5176 0.7662
+vn -0.3605 -0.9316 0.0454
+vn -0.9053 -0.3891 0.1703
+vn -0.0663 -0.1929 0.9789
+vn 0.5889 -0.7908 0.1668
+vn 0.4987 -0.4011 0.7683
+vn -0.4987 -0.4011 0.7683
+vn -0.5889 -0.7908 0.1668
+vn 0.9126 -0.4027 -0.0698
+vn 0.5489 -0.3266 0.7694
+vn -0.5489 -0.3266 0.7694
+vn -0.9126 -0.4027 -0.0698
+vn 0.8801 0.4238 0.2138
+vn 0.4875 -0.1470 0.8606
+vn -0.4875 -0.1470 0.8606
+vn -0.8801 0.4238 0.2138
+vn 0.5100 0.8330 0.2144
+vn 0.3417 -0.0325 0.9392
+vn -0.3417 -0.0325 0.9392
+vn -0.5100 0.8330 0.2144
+vn 0.5978 0.7838 0.1683
+vn 0.3141 -0.0304 0.9489
+vn -0.3141 -0.0304 0.9489
+vn -0.5978 0.7838 0.1683
+vn 0.2283 0.9588 0.1689
+vn 0.2711 0.2130 0.9387
+vn -0.2711 0.2130 0.9387
+vn -0.2283 0.9588 0.1689
+vn -0.5987 0.7773 0.1930
+vn -0.1643 0.1591 0.9735
+vn 0.1643 0.1591 0.9735
+vn 0.5987 0.7773 0.1930
+vn -0.7917 0.5829 0.1826
+vn -0.0729 -0.0287 0.9969
+vn 0.0729 -0.0287 0.9969
+vn 0.7917 0.5829 0.1826
+vn 0.0000 0.9595 0.2816
+vn 0.0000 -0.0241 0.9997
+vn 0.2654 -0.2040 0.9423
+vn 0.2660 -0.1257 0.9557
+vn -0.2660 -0.1257 0.9557
+vn -0.2654 -0.2040 0.9423
+vn 0.1334 -0.0975 0.9862
+vn -0.1334 -0.0975 0.9862
+vn 0.1978 -0.0104 0.9802
+vn -0.1978 -0.0104 0.9802
+vn 0.2413 -0.3067 0.9207
+vn -0.2413 -0.3067 0.9207
+vn 0.3630 -0.2123 0.9073
+vn -0.3630 -0.2123 0.9073
+vn 0.4415 -0.2058 0.8733
+vn -0.4415 -0.2058 0.8733
+vn 0.4194 -0.3797 0.8245
+vn -0.4194 -0.3797 0.8245
+vn 0.3106 -0.3403 0.8875
+vn -0.3106 -0.3403 0.8875
+vn -0.1349 -0.2146 0.9673
+vn 0.1349 -0.2146 0.9673
+vn -0.3104 -0.1697 0.9353
+vn 0.0000 0.0135 0.9999
+vn 0.3104 -0.1697 0.9353
+vn 0.0284 -0.1986 0.9796
+vn -0.0284 -0.1986 0.9796
+vn 0.0000 -0.2235 0.9747
+vn -0.1624 -0.1997 0.9663
+vn 0.1624 -0.1997 0.9663
+vn -0.0252 -0.4118 0.9109
+vn 0.0000 -0.3312 0.9435
+vn 0.0252 -0.4118 0.9109
+vn 0.0891 -0.3229 0.9422
+vn -0.0891 -0.3229 0.9422
+vn 0.1559 -0.1706 0.9729
+vn -0.1559 -0.1706 0.9729
+vn 0.1386 0.0029 0.9903
+vn 0.1802 -0.0578 0.9819
+vn -0.1802 -0.0578 0.9819
+vn -0.1386 0.0029 0.9903
+vn 0.4969 -0.4356 0.7505
+vn 0.0000 -0.4576 0.8892
+vn 0.0000 -0.0041 1.0000
+vn -0.4969 -0.4356 0.7505
+vn 0.0000 -0.0342 0.9994
+vn 0.0000 -0.4257 0.9048
+vn 0.7215 -0.3646 0.5885
+vn 0.9246 -0.2129 0.3159
+vn 0.5803 -0.7306 0.3597
+vn -0.5803 -0.7306 0.3597
+vn -0.9246 -0.2129 0.3159
+vn -0.7215 -0.3646 0.5885
+vn 0.2528 0.3479 0.9028
+vn 0.6218 0.7744 0.1168
+vn -0.6218 0.7744 0.1168
+vn -0.2528 0.3479 0.9028
+vn 0.0000 0.5692 0.8221
+vn -0.3018 0.9416 0.1492
+vn 0.3018 0.9416 0.1492
+vn 0.0000 0.7592 0.6508
+vn 0.0000 0.7851 0.6193
+vn 0.0000 -0.8574 0.5146
+vn 0.2206 -0.5640 0.7958
+vn 0.0000 -0.5286 0.8489
+vn -0.2206 -0.5640 0.7958
+vn 0.0000 0.1136 0.9935
+vn -0.1992 0.6017 0.7734
+vn 0.1992 0.6017 0.7734
+vn 0.3664 0.4751 0.8000
+vn -0.3664 0.4751 0.8000
+vn 0.4297 -0.1849 0.8838
+vn -0.4297 -0.1849 0.8838
+vn 0.7430 0.0295 0.6686
+vn -0.7430 0.0295 0.6686
+vn 0.6464 0.1424 0.7496
+vn -0.6464 0.1424 0.7496
+vn 0.9385 0.3251 0.1160
+vn -0.9385 0.3251 0.1160
+vn 0.9534 0.2816 0.1079
+vn -0.9534 0.2816 0.1079
+vn 0.0000 -0.9031 0.4294
+vn -0.1140 -0.6151 0.7801
+vn 0.1140 -0.6151 0.7801
+vn -0.6503 0.0615 0.7572
+vn 0.6503 0.0615 0.7572
+vn -0.3705 0.5450 0.7521
+vn 0.3705 0.5450 0.7521
+vn 0.0000 0.6467 0.7627
+vn -0.3272 0.4745 0.8171
+vn 0.0000 0.5289 0.8487
+vn 0.3272 0.4745 0.8171
+vn -0.6748 0.1147 0.7290
+vn 0.6748 0.1147 0.7290
+vn -0.5163 -0.7041 0.4874
+vn 0.5163 -0.7041 0.4874
+vn 0.0000 -0.6988 0.7152
+vn -0.0170 -0.0610 0.9980
+vn 0.1649 -0.0897 0.9822
+vn 0.0170 -0.0610 0.9980
+vn -0.1649 -0.0897 0.9822
+vn 0.2359 -0.1089 0.9656
+vn -0.2359 -0.1089 0.9656
+vn 0.1633 -0.0836 0.9830
+vn -0.1633 -0.0836 0.9830
+vn 0.0129 -0.1560 0.9876
+vn -0.0129 -0.1560 0.9876
+vn 0.1998 -0.2072 0.9577
+vn -0.1998 -0.2072 0.9577
+vn 0.2858 -0.0425 0.9573
+vn -0.2858 -0.0425 0.9573
+vn 0.2990 -0.0934 0.9497
+vn -0.2990 -0.0934 0.9497
+vn 0.1870 -0.0655 0.9802
+vn -0.1870 -0.0655 0.9802
+vn 0.3063 0.0342 0.9513
+vn -0.3063 0.0342 0.9513
+vn 0.1730 -0.1109 0.9786
+vn -0.1730 -0.1109 0.9786
+vn 0.1657 0.1129 0.9797
+vn -0.1657 0.1129 0.9797
+vn 0.1828 0.0367 0.9825
+vn -0.1828 0.0367 0.9825
+vn 0.5010 -0.3839 0.7756
+vn 0.3063 -0.3432 0.8879
+vn -0.5010 -0.3839 0.7756
+vn -0.3063 -0.3432 0.8879
+vn 0.0021 -0.4953 0.8687
+vn -0.0021 -0.4953 0.8687
+vn -0.1401 -0.7620 0.6322
+vn 0.1401 -0.7620 0.6322
+vn -0.1943 -0.6160 0.7633
+vn 0.1943 -0.6160 0.7633
+vn -0.3549 -0.1286 0.9260
+vn 0.3549 -0.1286 0.9260
+vn -0.2549 0.2241 0.9406
+vn 0.2549 0.2241 0.9406
+vn -0.0831 0.5416 0.8365
+vn 0.0831 0.5416 0.8365
+vn 0.1489 0.6135 0.7755
+vn -0.1489 0.6135 0.7755
+vn 0.4245 0.5609 0.7108
+vn -0.4245 0.5609 0.7108
+vn 0.6875 0.2974 0.6624
+vn -0.6875 0.2974 0.6625
+vn 0.7465 -0.2135 0.6302
+vn -0.7465 -0.2135 0.6302
+vn 0.8052 0.0150 0.5928
+vn -0.8052 0.0150 0.5928
+vn -0.5046 0.8622 0.0448
+vn 0.0000 0.8794 0.4760
+vn 0.5046 0.8622 0.0448
+vn -0.4770 0.5100 -0.7158
+vn 0.4770 0.5100 -0.7158
+vn 0.1146 0.6555 -0.7464
+vn -0.1146 0.6555 -0.7464
+vn 0.3084 0.9138 -0.2642
+vn -0.3084 0.9138 -0.2642
+vn 0.3515 0.9087 -0.2249
+vn -0.3515 0.9087 -0.2249
+vn 0.7392 0.6005 -0.3048
+vn -0.7392 0.6005 -0.3048
+vn 0.9393 -0.3068 -0.1533
+vn -0.9393 -0.3068 -0.1533
+vn 0.5768 -0.8110 -0.0972
+vn -0.5768 -0.8110 -0.0972
+vn 0.4394 -0.8925 -0.1016
+vn -0.4394 -0.8925 -0.1016
+vn 0.0000 -0.3178 -0.9481
+vn 0.0000 -0.8051 -0.5931
+vn 0.7260 -0.5865 -0.3591
+vn 0.3375 -0.2535 -0.9066
+vn -0.7260 -0.5865 -0.3591
+vn -0.3375 -0.2535 -0.9066
+vn 0.0000 -0.2978 -0.9546
+vn 0.1293 -0.1789 -0.9753
+vn -0.1293 -0.1789 -0.9753
+vn 0.0000 -0.8508 -0.5255
+vn 0.0993 -0.7679 -0.6327
+vn -0.0993 -0.7679 -0.6327
+vn 0.5586 -0.4679 -0.6848
+vn -0.5586 -0.4679 -0.6848
+vn 0.6058 0.0208 -0.7953
+vn -0.6058 0.0208 -0.7953
+vn 0.7766 -0.0093 -0.6299
+vn -0.7766 -0.0093 -0.6299
+vn 0.9601 -0.0016 -0.2794
+vn -0.9601 -0.0016 -0.2794
+vn 0.9731 -0.2302 0.0002
+vn 0.9537 -0.1999 0.2246
+vn -0.9537 -0.1999 0.2246
+vn -0.9731 -0.2302 0.0002
+vn 0.8140 -0.5544 0.1732
+vn -0.8140 -0.5544 0.1732
+vn 0.0000 -0.3004 -0.9538
+vn 0.4237 -0.3240 -0.8459
+vn 0.5191 -0.6556 -0.5483
+vn 0.0000 -0.6966 -0.7174
+vn -0.5191 -0.6556 -0.5483
+vn -0.4237 -0.3240 -0.8459
+vn 0.5213 -0.8255 -0.2162
+vn 0.0000 -0.9410 -0.3385
+vn -0.5213 -0.8255 -0.2162
+vn 0.5887 -0.8081 -0.0185
+vn 0.0000 -0.9863 -0.1650
+vn -0.5887 -0.8081 -0.0185
+vn 0.7152 -0.6950 0.0736
+vn 0.9762 -0.2019 0.0787
+vn -0.7152 -0.6950 0.0736
+vn -0.9762 -0.2019 0.0787
+vn 0.0000 0.3141 -0.9494
+vn 0.4534 0.1969 -0.8693
+vn -0.4534 0.1969 -0.8693
+vn 0.0000 0.8267 0.5627
+vn 0.4610 0.7338 0.4989
+vn 0.4198 0.9069 0.0349
+vn 0.0000 0.9997 0.0232
+vn -0.4198 0.9069 0.0349
+vn -0.4610 0.7338 0.4989
+vn 0.4258 0.8032 -0.4165
+vn 0.0000 0.8325 -0.5539
+vn -0.4258 0.8032 -0.4165
+vn 0.7652 0.6244 0.1565
+vn 0.4721 0.7778 0.4149
+vn -0.7652 0.6244 0.1565
+vn -0.4721 0.7778 0.4149
+vn 0.7475 0.5326 0.3969
+vn 0.6514 0.6814 0.3335
+vn -0.7475 0.5326 0.3969
+vn -0.6514 0.6814 0.3335
+vn 0.8548 0.5181 -0.0301
+vn 0.6788 0.7318 -0.0612
+vn -0.8548 0.5181 -0.0301
+vn -0.6788 0.7318 -0.0612
+vn 0.8739 0.3070 -0.3769
+vn 0.6440 0.5379 -0.5438
+vn -0.8739 0.3070 -0.3769
+vn -0.6440 0.5379 -0.5438
+vn 0.6260 -0.0259 -0.7794
+vn 0.5860 -0.0155 -0.8101
+vn -0.5860 -0.0155 -0.8101
+vn -0.6260 -0.0259 -0.7794
+vn 0.3916 0.8280 0.4012
+vn -0.3916 0.8280 0.4012
+vn 0.0000 0.6204 0.7843
+vn 0.9989 -0.0455 0.0062
+vn -0.9989 -0.0455 0.0062
+vn 0.8965 0.3044 0.3220
+vn -0.8965 0.3044 0.3220
+vn 0.5809 -0.8007 -0.1463
+vn 0.5730 -0.8037 0.1600
+vn -0.5809 -0.8007 -0.1463
+vn -0.5730 -0.8037 0.1600
+vn 0.2744 -0.9600 -0.0552
+vn -0.2744 -0.9600 -0.0552
+vn 0.4020 -0.6167 -0.6767
+vn 0.5443 -0.4959 -0.6766
+vn -0.5443 -0.4959 -0.6766
+vn -0.4020 -0.6167 -0.6767
+vn 0.0163 0.8736 0.4863
+vn -0.2878 0.7388 0.6094
+vn 0.4590 -0.0631 0.8862
+vn 0.5420 -0.0674 0.8376
+vn -0.4590 -0.0631 0.8862
+vn 0.2878 0.7388 0.6094
+vn -0.0163 0.8736 0.4863
+vn -0.5420 -0.0674 0.8376
+vn 0.3174 -0.0930 0.9437
+vn 0.3604 0.8605 0.3600
+vn -0.3174 -0.0930 0.9437
+vn -0.3604 0.8605 0.3600
+vn -0.1201 -0.0897 0.9887
+vn 0.7896 0.1790 0.5869
+vn 0.1201 -0.0897 0.9887
+vn -0.7896 0.1790 0.5869
+vn -0.0240 0.2739 0.9614
+vn 0.6731 -0.4998 0.5450
+vn 0.0240 0.2739 0.9614
+vn -0.6731 -0.4998 0.5450
+vn 0.4921 0.2738 0.8263
+vn 0.4719 -0.7796 0.4117
+vn -0.4921 0.2738 0.8263
+vn -0.4719 -0.7796 0.4117
+vn 0.3413 0.3527 0.8712
+vn -0.0439 -0.6481 0.7602
+vn -0.3413 0.3527 0.8712
+vn 0.0439 -0.6481 0.7602
+vn -0.1665 0.9539 0.2497
+vn 0.2330 0.8788 0.4164
+vn -0.2330 0.8788 0.4164
+vn 0.1665 0.9539 0.2497
+vn -0.7613 0.6471 0.0399
+vn 0.7613 0.6471 0.0399
+vn -0.9810 -0.0934 0.1698
+vn 0.9810 -0.0934 0.1698
+vn -0.1410 -0.7728 0.6188
+vn 0.1410 -0.7728 0.6188
+vn 0.5587 -0.6583 0.5044
+vn -0.5587 -0.6583 0.5044
+vn 0.6878 -0.5533 0.4698
+vn -0.6878 -0.5533 0.4698
+vn 0.7450 0.0855 0.6615
+vn 0.8615 -0.4880 -0.1400
+vn -0.7450 0.0855 0.6615
+vn -0.8615 -0.4880 -0.1400
+vn 0.7427 -0.2611 0.6166
+vn -0.7427 -0.2611 0.6166
+vn 0.5933 0.5663 0.5720
+vn -0.5933 0.5663 0.5720
+vn 0.8837 -0.0624 0.4639
+vn 0.9210 -0.1749 0.3480
+vn -0.9210 -0.1749 0.3480
+vn -0.8837 -0.0624 0.4639
+vn 0.8589 0.0371 0.5108
+vn 0.5731 0.7263 0.3795
+vn -0.8589 0.0371 0.5108
+vn -0.5731 0.7263 0.3795
+vn 0.7481 -0.5799 0.3224
+vn 0.8720 -0.4240 0.2446
+vn -0.8720 -0.4240 0.2446
+vn -0.7481 -0.5799 0.3224
+vn 0.6963 -0.5412 0.4714
+vn -0.6963 -0.5412 0.4714
+vn 0.6669 -0.4348 0.6052
+vn 0.6358 -0.4092 0.6544
+vn -0.6669 -0.4348 0.6052
+vn -0.6358 -0.4092 0.6544
+vn 0.5714 -0.4259 0.7015
+vn -0.5714 -0.4259 0.7015
+vn 0.7837 0.2514 0.5680
+vn -0.7837 0.2514 0.5680
+vn 0.4447 0.3740 0.8138
+vn -0.4447 0.3740 0.8138
+vn 0.3739 0.3687 0.8510
+vn -0.3739 0.3687 0.8510
+vn 0.6600 0.3495 0.6650
+vn -0.6600 0.3495 0.6650
+vn -0.0507 0.9518 0.3023
+vn 0.0507 0.9518 0.3023
+vn 0.4844 -0.3373 0.8072
+vn -0.4844 -0.3373 0.8072
+vn -0.2485 -0.5826 0.7738
+vn 0.2485 -0.5826 0.7738
+vn -0.7433 -0.0973 0.6618
+vn 0.7433 -0.0973 0.6618
+vn -0.5392 0.4506 0.7114
+vn 0.5392 0.4506 0.7114
+vn 0.0873 0.7400 0.6668
+vn -0.0873 0.7400 0.6668
+vn 0.3855 0.1162 0.9153
+vn 0.1983 0.0051 0.9801
+vn -0.3855 0.1162 0.9153
+vn -0.1983 0.0051 0.9801
+vn 0.4315 -0.0331 0.9015
+vn 0.3281 0.0002 0.9446
+vn -0.4315 -0.0331 0.9015
+vn -0.3281 0.0002 0.9446
+vn 0.3447 -0.0767 0.9355
+vn 0.3178 0.0937 0.9435
+vn -0.3447 -0.0767 0.9355
+vn -0.3178 0.0937 0.9435
+vn 0.4365 -0.0136 0.8996
+vn 0.3573 0.2980 0.8851
+vn -0.4365 -0.0136 0.8996
+vn -0.3573 0.2980 0.8851
+vn -0.0797 -0.8453 -0.5283
+vn -0.0418 -0.6989 -0.7140
+vn 0.0797 -0.8453 -0.5283
+vn 0.0418 -0.6989 -0.7140
+vn 0.6149 -0.4906 -0.6174
+vn -0.6149 -0.4906 -0.6174
+vn 0.9234 0.0856 -0.3741
+vn -0.9234 0.0856 -0.3741
+vn 0.3048 0.6219 -0.7213
+vn -0.3048 0.6219 -0.7213
+vn -0.4176 0.5586 -0.7166
+vn 0.4176 0.5586 -0.7166
+vn -0.6562 0.5715 -0.4927
+vn 0.6562 0.5715 -0.4927
+usemtl Material.001
+s 1
+f 1/1/1 2/2/2 3/3/3 4/4/4
+f 5/5/5 6/6/6 7/7/7 8/8/8
+f 4/4/4 3/3/3 9/9/9 10/10/10
+f 11/11/11 5/5/5 8/8/8 12/12/12
+f 3/3/3 13/13/13 14/14/14 9/9/9
+f 15/15/15 16/16/16 5/5/5 11/11/11
+f 2/2/2 17/17/17 13/13/13 3/3/3
+f 16/16/16 18/18/18 6/6/6 5/5/5
+f 17/17/17 19/19/19 20/20/20 13/13/13
+f 21/21/21 22/22/22 18/18/18 16/16/16
+f 13/13/13 20/20/20 23/23/23 14/14/14
+f 24/24/24 21/21/21 16/16/16 15/15/15
+f 20/20/20 25/25/25 26/26/26 23/23/23
+f 27/27/27 28/28/28 21/21/21 24/24/24
+f 19/19/19 29/29/29 25/25/25 20/20/20
+f 28/28/28 30/30/30 22/22/22 21/21/21
+f 29/29/29 31/31/31 32/32/32 25/25/25
+f 33/33/33 34/34/34 30/30/30 28/28/28
+f 25/25/25 32/32/32 35/35/35 26/26/26
+f 36/36/36 33/33/33 28/28/28 27/27/27
+f 32/32/32 37/37/37 38/38/38 35/35/35
+f 39/39/39 40/40/40 33/33/33 36/36/36
+f 31/31/31 41/41/41 37/37/37 32/32/32
+f 40/40/40 42/42/42 34/34/34 33/33/33
+f 41/41/41 43/43/43 44/44/44 37/37/37
+f 45/45/45 46/46/46 42/42/42 40/40/40
+f 37/37/37 44/44/44 47/47/47 38/38/38
+f 48/48/48 45/45/45 40/40/40 39/39/39
+f 44/44/44 4/4/4 10/10/10 47/47/47
+f 12/12/12 8/8/8 45/45/45 48/48/48
+f 43/43/43 1/1/1 4/4/4 44/44/44
+f 8/8/8 7/7/7 46/46/46 45/45/45
+f 1/1/1 43/43/43 49/49/49 50/50/50
+f 51/51/51 46/46/46 7/7/7 52/52/52
+f 43/43/43 41/41/41 53/53/53 49/49/49
+f 54/54/54 42/42/42 46/46/46 51/51/51
+f 41/41/41 31/31/31 55/55/55 53/53/53
+f 56/56/56 34/34/34 42/42/42 54/54/54
+f 31/31/31 29/29/29 57/57/57 55/55/55
+f 58/58/58 30/30/30 34/34/34 56/56/56
+f 29/29/29 19/19/19 59/59/59 57/57/57
+f 60/60/60 22/22/22 30/30/30 58/58/58
+f 19/19/19 17/17/17 61/61/61 59/59/59
+f 62/62/62 18/18/18 22/22/22 60/60/60
+f 17/17/17 2/2/2 63/63/63 61/61/61
+f 64/64/64 6/6/6 18/18/18 62/62/62
+f 2/2/2 1/1/1 50/50/50 63/63/63
+f 52/52/52 7/7/7 6/6/6 64/64/64
+f 65/65/65 63/63/63 50/50/50
+f 52/52/52 64/64/64 66/66/66
+f 61/61/61 63/63/63 65/65/65
+f 66/66/66 64/64/64 62/62/62
+f 65/65/65 59/59/59 61/61/61
+f 62/62/62 60/60/60 66/66/66
+f 65/65/65 57/57/57 59/59/59
+f 60/60/60 58/58/58 66/66/66
+f 65/65/65 55/55/55 57/57/57
+f 58/58/58 56/56/56 66/66/66
+f 65/65/65 53/53/53 55/55/55
+f 56/56/56 54/54/54 66/66/66
+f 65/65/65 49/49/49 53/53/53
+f 54/54/54 51/51/51 66/66/66
+f 65/65/65 50/50/50 49/49/49
+f 51/51/51 52/52/52 66/66/66
+f 67/67/67 68/68/68 69/69/69 70/70/70
+f 69/69/69 71/71/71 72/72/72 70/70/70
+f 73/73/73 74/74/74 68/68/68 67/67/67
+f 71/71/71 75/75/75 76/76/76 72/72/72
+f 77/77/77 78/78/78 74/74/74 73/73/73
+f 75/75/75 79/79/79 80/80/80 76/76/76
+f 81/81/81 82/82/82 78/78/78 77/77/77
+f 79/79/79 83/83/83 84/84/84 80/80/80
+f 85/85/85 86/86/86 82/82/82 81/81/81
+f 83/83/83 87/87/87 88/88/88 84/84/84
+f 89/89/89 90/90/90 91/91/91 92/92/92
+f 93/93/93 94/94/94 95/95/95 96/96/96
+f 90/90/90 97/97/97 98/98/98 91/91/91
+f 99/99/99 100/100/100 94/94/94 93/93/93
+f 97/97/97 101/101/101 102/102/102 98/98/98
+f 103/103/103 104/104/104 100/100/100 99/99/99
+f 101/101/101 105/105/105 106/106/106 102/102/102
+f 107/107/107 108/108/108 104/104/104 103/103/103
+f 105/105/105 109/109/109 110/110/110 106/106/106
+f 111/111/111 112/112/112 108/108/108 107/107/107
+f 109/109/109 113/113/113 114/114/114 110/110/110
+f 115/115/115 116/116/116 112/112/112 111/111/111
+f 113/113/113 117/117/117 118/118/118 114/114/114
+f 119/119/119 120/120/120 116/116/116 115/115/115
+f 117/117/117 121/121/121 122/122/122 118/118/118
+f 123/123/123 124/124/124 120/120/120 119/119/119
+f 121/121/121 125/125/125 126/126/126 122/122/122
+f 127/127/127 128/128/128 124/124/124 123/123/123
+f 125/125/125 129/129/129 130/130/130 126/126/126
+f 130/130/130 129/129/129 128/128/128 127/127/127
+f 131/131/131 132/132/132 122/122/122 126/126/126
+f 123/123/123 133/133/133 134/134/134 127/127/127
+f 132/132/132 135/135/135 118/118/118 122/122/122
+f 119/119/119 136/136/136 133/133/133 123/123/123
+f 137/137/137 114/114/114 118/118/118 135/135/135
+f 119/119/119 115/115/115 138/138/138 136/136/136
+f 139/139/139 110/110/110 114/114/114 137/137/137
+f 115/115/115 111/111/111 140/140/140 138/138/138
+f 141/141/141 106/106/106 110/110/110 139/139/139
+f 111/111/111 107/107/107 142/142/142 140/140/140
+f 143/143/143 102/102/102 106/106/106 141/141/141
+f 107/107/107 103/103/103 144/144/144 142/142/142
+f 145/145/145 98/98/98 102/102/102 143/143/143
+f 103/103/103 99/99/99 146/146/146 144/144/144
+f 147/147/147 91/91/91 98/98/98 145/145/145
+f 99/99/99 93/93/93 148/148/148 146/146/146
+f 149/149/149 92/92/92 91/91/91 147/147/147
+f 93/93/93 96/96/96 150/150/150 148/148/148
+f 149/149/149 151/151/151 152/152/152 92/92/92
+f 152/152/152 153/153/153 150/150/150 96/96/96
+f 131/131/131 126/126/126 130/130/130 154/154/154
+f 130/130/130 127/127/127 134/134/134 155/155/155
+f 154/154/154 130/130/130 156/156/156 157/157/157
+f 156/156/156 130/130/130 155/155/155 158/158/158
+f 152/152/152 151/151/151 157/157/157 156/156/156
+f 158/158/158 153/153/153 152/152/152 156/156/156
+f 159/159/159 160/160/160 69/69/69 68/68/68
+f 69/69/69 160/160/160 161/161/161 71/71/71
+f 162/162/162 159/159/159 68/68/68 74/74/74
+f 71/71/71 161/161/161 163/163/163 75/75/75
+f 164/164/164 162/162/162 74/74/74 78/78/78
+f 75/75/75 163/163/163 165/165/165 79/79/79
+f 86/86/86 166/166/166 167/167/167 82/82/82
+f 168/168/168 169/169/169 87/87/87 83/83/83
+f 164/164/164 78/78/78 82/82/82 167/167/167
+f 83/83/83 79/79/79 165/165/165 168/168/168
+f 170/170/170 171/171/171 172/172/172 166/166/166
+f 172/172/172 171/171/171 173/173/173 169/169/169
+f 167/167/167 166/166/166 172/172/172 174/174/174
+f 172/172/172 169/169/169 168/168/168 174/174/174
+f 175/175/175 164/164/164 167/167/167 174/174/174
+f 168/168/168 165/165/165 175/175/175 174/174/174
+f 176/176/176 177/177/177 178/178/178 170/170/170
+f 179/179/179 180/180/180 181/181/181 173/173/173
+f 182/182/182 183/183/183 177/177/177 176/176/176
+f 180/180/180 184/184/184 185/185/185 181/181/181
+f 186/186/186 187/187/187 183/183/183 182/182/182
+f 184/184/184 188/188/188 186/186/186 185/185/185
+f 189/189/189 190/190/190 187/187/187 186/186/186
+f 188/188/188 190/190/190 189/189/189 186/186/186
+f 171/171/171 170/170/170 178/178/178 191/191/191
+f 179/179/179 173/173/173 171/171/171 191/191/191
+f 191/191/191 178/178/178 192/192/192 193/193/193
+f 194/194/194 179/179/179 191/191/191 193/193/193
+f 190/190/190 195/195/195 196/196/196 187/187/187
+f 197/197/197 195/195/195 190/190/190 188/188/188
+f 187/187/187 196/196/196 198/198/198 183/183/183
+f 199/199/199 197/197/197 188/188/188 184/184/184
+f 183/183/183 198/198/198 200/200/200 177/177/177
+f 201/201/201 199/199/199 184/184/184 180/180/180
+f 177/177/177 200/200/200 192/192/192 178/178/178
+f 194/194/194 201/201/201 180/180/180 179/179/179
+f 195/195/195 200/200/200 198/198/198 196/196/196
+f 199/199/199 201/201/201 195/195/195 197/197/197
+f 195/195/195 193/193/193 192/192/192 200/200/200
+f 194/194/194 193/193/193 195/195/195 201/201/201
+f 186/186/186 182/182/182 92/92/92 152/152/152
+f 96/96/96 185/185/185 186/186/186 152/152/152
+f 182/182/182 176/176/176 202/202/202 92/92/92
+f 203/203/203 181/181/181 185/185/185 96/96/96
+f 176/176/176 170/170/170 204/204/204 202/202/202
+f 205/205/205 173/173/173 181/181/181 203/203/203
+f 170/170/170 166/166/166 86/86/86 204/204/204
+f 87/87/87 169/169/169 173/173/173 205/205/205
+f 85/85/85 206/206/206 204/204/204 86/86/86
+f 205/205/205 207/207/207 88/88/88 87/87/87
+f 206/206/206 208/208/208 202/202/202 204/204/204
+f 203/203/203 209/209/209 207/207/207 205/205/205
+f 89/89/89 92/92/92 202/202/202 208/208/208
+f 203/203/203 96/96/96 95/95/95 209/209/209
+f 164/164/164 175/175/175 210/210/210 211/211/211
+f 210/210/210 175/175/175 165/165/165 212/212/212
+f 162/162/162 164/164/164 211/211/211 213/213/213
+f 212/212/212 165/165/165 163/163/163 214/214/214
+f 159/159/159 162/162/162 213/213/213 215/215/215
+f 214/214/214 163/163/163 161/161/161 216/216/216
+f 160/160/160 159/159/159 215/215/215 217/217/217
+f 216/216/216 161/161/161 160/160/160 217/217/217
+f 217/217/217 215/215/215 218/218/218 219/219/219
+f 220/220/220 216/216/216 217/217/217 219/219/219
+f 215/215/215 213/213/213 221/221/221 218/218/218
+f 222/222/222 214/214/214 216/216/216 220/220/220
+f 213/213/213 211/211/211 223/223/223 221/221/221
+f 224/224/224 212/212/212 214/214/214 222/222/222
+f 211/211/211 210/210/210 225/225/225 223/223/223
+f 225/225/225 210/210/210 212/212/212 224/224/224
+f 225/225/225 219/219/219 218/218/218 223/223/223
+f 220/220/220 219/219/219 225/225/225 224/224/224
+f 223/223/223 218/218/218 221/221/221
+f 222/222/222 220/220/220 224/224/224
+f 157/157/157 151/151/151 226/226/226 227/227/227
+f 228/228/228 153/153/153 158/158/158 229/229/229
+f 154/154/154 157/157/157 227/227/227 230/230/230
+f 229/229/229 158/158/158 155/155/155 231/231/231
+f 131/131/131 154/154/154 230/230/230 232/232/232
+f 231/231/231 155/155/155 134/134/134 233/233/233
+f 151/151/151 149/149/149 234/234/234 226/226/226
+f 235/235/235 150/150/150 153/153/153 228/228/228
+f 149/149/149 147/147/147 236/236/236 234/234/234
+f 237/237/237 148/148/148 150/150/150 235/235/235
+f 147/147/147 145/145/145 238/238/238 236/236/236
+f 239/239/239 146/146/146 148/148/148 237/237/237
+f 145/145/145 143/143/143 240/240/240 238/238/238
+f 241/241/241 144/144/144 146/146/146 239/239/239
+f 143/143/143 141/141/141 242/242/242 240/240/240
+f 243/243/243 142/142/142 144/144/144 241/241/241
+f 141/141/141 139/139/139 244/244/244 242/242/242
+f 245/245/245 140/140/140 142/142/142 243/243/243
+f 139/139/139 137/137/137 246/246/246 244/244/244
+f 247/247/247 138/138/138 140/140/140 245/245/245
+f 137/137/137 135/135/135 248/248/248 246/246/246
+f 249/249/249 136/136/136 138/138/138 247/247/247
+f 135/135/135 132/132/132 250/250/250 248/248/248
+f 251/251/251 133/133/133 136/136/136 249/249/249
+f 132/132/132 131/131/131 232/232/232 250/250/250
+f 233/233/233 134/134/134 133/133/133 251/251/251
+f 250/250/250 232/232/232 252/252/252 253/253/253
+f 254/254/254 233/233/233 251/251/251 255/255/255
+f 248/248/248 250/250/250 253/253/253 256/256/256
+f 255/255/255 251/251/251 249/249/249 257/257/257
+f 246/246/246 248/248/248 256/256/256 258/258/258
+f 257/257/257 249/249/249 247/247/247 259/259/259
+f 244/244/244 246/246/246 258/258/258 260/260/260
+f 259/259/259 247/247/247 245/245/245 261/261/261
+f 242/242/242 244/244/244 260/260/260 262/262/262
+f 261/261/261 245/245/245 243/243/243 263/263/263
+f 240/240/240 242/242/242 262/262/262 264/264/264
+f 263/263/263 243/243/243 241/241/241 265/265/265
+f 238/238/238 240/240/240 264/264/264 266/266/266
+f 265/265/265 241/241/241 239/239/239 267/267/267
+f 236/236/236 238/238/238 266/266/266 268/268/268
+f 267/267/267 239/239/239 237/237/237 269/269/269
+f 234/234/234 236/236/236 268/268/268 270/270/270
+f 269/269/269 237/237/237 235/235/235 271/271/271
+f 226/226/226 234/234/234 270/270/270 272/272/272
+f 271/271/271 235/235/235 228/228/228 273/273/273
+f 232/232/232 230/230/230 274/274/274 252/252/252
+f 275/275/275 231/231/231 233/233/233 254/254/254
+f 230/230/230 227/227/227 276/276/276 274/274/274
+f 277/277/277 229/229/229 231/231/231 275/275/275
+f 227/227/227 226/226/226 272/272/272 276/276/276
+f 273/273/273 228/228/228 229/229/229 277/277/277
+f 129/129/129 125/125/125 278/278/278 279/279/279
+f 280/280/280 128/128/128 129/129/129 279/279/279
+f 125/125/125 121/121/121 281/281/281 278/278/278
+f 282/282/282 124/124/124 128/128/128 280/280/280
+f 121/121/121 117/117/117 283/283/283 281/281/281
+f 284/284/284 120/120/120 124/124/124 282/282/282
+f 117/117/117 113/113/113 285/285/285 283/283/283
+f 286/286/286 116/116/116 120/120/120 284/284/284
+f 113/113/113 109/109/109 287/287/287 285/285/285
+f 288/288/288 112/112/112 116/116/116 286/286/286
+f 109/109/109 105/105/105 289/289/289 287/287/287
+f 290/290/290 108/108/108 112/112/112 288/288/288
+f 105/105/105 101/101/101 291/291/291 289/289/289
+f 292/292/292 104/104/104 108/108/108 290/290/290
+f 101/101/101 97/97/97 293/293/293 291/291/291
+f 294/294/294 100/100/100 104/104/104 292/292/292
+f 97/97/97 90/90/90 295/295/295 293/293/293
+f 296/296/296 94/94/94 100/100/100 294/294/294
+f 297/297/297 298/298/298 299/299/299 300/300/300
+f 301/301/301 298/302/298 297/303/297 302/304/302
+f 303/305/303 297/297/297 300/300/300 304/306/304
+f 302/304/302 297/303/297 303/307/303 305/308/305
+f 306/309/306 303/305/303 304/306/304 307/310/307
+f 305/308/305 303/307/303 306/309/306 308/311/308
+f 67/67/67 70/70/70 306/309/306 307/310/307
+f 306/309/306 70/70/70 72/72/72 308/311/308
+f 73/73/73 67/67/67 307/310/307 309/312/309
+f 308/311/308 72/72/72 76/76/76 310/313/310
+f 77/77/77 73/73/73 309/312/309 311/314/311
+f 310/313/310 76/76/76 80/80/80 312/315/312
+f 81/81/81 77/77/77 311/314/311 313/316/313
+f 312/315/312 80/80/80 84/84/84 314/317/314
+f 311/314/311 304/306/304 300/300/300 313/316/313
+f 302/304/302 305/308/305 312/315/312 314/317/314
+f 311/314/311 309/312/309 307/310/307 304/306/304
+f 308/311/308 310/313/310 312/315/312 305/308/305
+f 315/318/315 313/316/313 300/300/300 299/299/299
+f 302/304/302 314/317/314 316/319/316 301/301/301
+f 85/85/85 81/81/81 313/316/313 315/318/315
+f 314/317/314 84/84/84 88/88/88 316/319/316
+f 206/206/206 317/320/317 318/321/318 208/208/208
+f 319/322/319 320/323/320 207/207/207 209/209/209
+f 85/85/85 315/318/315 317/320/317 206/206/206
+f 320/323/320 316/319/316 88/88/88 207/207/207
+f 89/89/89 208/208/208 318/321/318 321/324/321
+f 319/322/319 209/209/209 95/95/95 322/325/322
+f 89/89/89 321/324/321 295/295/295 90/90/90
+f 296/296/296 322/325/322 95/95/95 94/94/94
+f 323/326/323 324/327/324 325/328/325 326/329/326
+f 327/330/327 328/331/328 323/332/323 326/333/326
+f 326/329/326 325/328/325 329/334/329 330/335/330
+f 331/336/331 327/330/327 326/333/326 330/337/330
+f 330/335/330 329/334/329 332/338/332 333/339/333
+f 334/340/334 331/336/331 330/337/330 333/341/333
+f 333/339/333 332/338/332 299/299/299 298/298/298
+f 301/301/301 334/340/334 333/341/333 298/302/298
+f 315/318/315 299/299/299 332/338/332 317/320/317
+f 334/340/334 301/301/301 316/319/316 320/323/320
+f 291/291/291 293/293/293 335/342/335 336/343/336
+f 337/344/337 294/294/294 292/292/292 338/345/338
+f 339/346/339 340/347/340 324/327/324 323/326/323
+f 328/331/328 341/348/341 339/349/339 323/332/323
+f 342/350/342 343/351/343 344/352/344 345/353/345
+f 346/354/346 347/355/347 342/356/342 345/357/345
+f 345/353/345 344/352/344 348/358/348 349/359/349
+f 350/360/350 346/354/346 345/357/345 349/361/349
+f 349/359/349 348/358/348 340/347/340 339/346/339
+f 341/348/341 350/360/350 349/361/349 339/349/339
+f 287/362/287 289/289/289 351/363/351 352/364/352
+f 353/365/353 290/290/290 288/366/288 354/367/354
+f 352/364/352 351/363/351 355/368/355 356/369/356
+f 357/370/357 353/365/353 354/367/354 358/371/358
+f 356/369/356 355/368/355 359/372/359 360/373/360
+f 361/374/361 357/370/357 358/371/358 362/375/362
+f 360/373/360 359/372/359 363/376/363 364/377/364
+f 365/378/365 361/374/361 362/375/362 366/379/366
+f 367/380/367 368/381/368 364/377/364 363/376/363
+f 366/379/366 369/382/369 370/383/370 365/378/365
+f 340/347/340 348/358/348 364/377/364 368/381/368
+f 366/379/366 350/360/350 341/348/341 369/382/369
+f 348/358/348 344/352/344 360/373/360 364/377/364
+f 362/375/362 346/354/346 350/360/350 366/379/366
+f 344/352/344 343/351/343 356/369/356 360/373/360
+f 358/371/358 347/355/347 346/354/346 362/375/362
+f 343/351/343 371/384/371 352/364/352 356/369/356
+f 354/367/354 372/385/372 347/355/347 358/371/358
+f 285/386/285 287/362/287 352/364/352 371/384/371
+f 354/367/354 288/366/288 286/387/286 372/385/372
+f 373/388/373 371/384/371 343/351/343 342/350/342
+f 347/355/347 372/385/372 373/389/373 342/356/342
+f 278/390/278 281/391/281 283/392/283 285/386/285
+f 284/393/284 282/394/282 280/395/280 286/387/286
+f 278/390/278 285/386/285 371/384/371 373/388/373
+f 372/385/372 286/387/286 280/395/280 373/389/373
+f 279/396/279 278/390/278 373/388/373
+f 373/389/373 280/395/280 279/397/279
+f 289/289/289 291/291/291 336/343/336 351/363/351
+f 338/345/338 292/292/292 290/290/290 353/365/353
+f 336/343/336 374/398/374 355/368/355 351/363/351
+f 357/370/357 375/399/375 338/345/338 353/365/353
+f 374/398/374 376/400/376 359/372/359 355/368/355
+f 361/374/361 377/401/377 375/399/375 357/370/357
+f 367/380/367 363/376/363 359/372/359 376/400/376
+f 361/374/361 365/378/365 370/383/370 377/401/377
+f 332/338/332 329/334/329 378/402/378 379/403/379
+f 380/404/380 331/336/331 334/340/334 381/405/381
+f 335/342/335 379/403/379 378/402/378 382/406/382
+f 380/404/380 381/405/381 337/344/337 383/407/383
+f 293/293/293 295/295/295 379/403/379 335/342/335
+f 381/405/381 296/296/296 294/294/294 337/344/337
+f 295/295/295 318/321/318 317/320/317 379/403/379
+f 320/323/320 319/322/319 296/296/296 381/405/381
+f 317/320/317 332/338/332 379/403/379
+f 381/405/381 334/340/334 320/323/320
+f 295/295/295 321/324/321 318/321/318
+f 319/322/319 322/325/322 296/296/296
+f 367/380/367 384/408/384 385/409/385 368/381/368
+f 386/410/386 387/411/387 370/383/370 369/382/369
+f 340/347/340 368/381/368 385/409/385 324/327/324
+f 386/410/386 369/382/369 341/348/341 328/331/328
+f 382/406/382 378/402/378 385/409/385 384/408/384
+f 386/410/386 380/404/380 383/407/383 387/411/387
+f 329/334/329 325/328/325 385/409/385 378/402/378
+f 386/410/386 327/330/327 331/336/331 380/404/380
+f 324/327/324 385/409/385 325/328/325
+f 327/330/327 386/410/386 328/331/328
+f 388/412/388 389/413/389 390/414/390 391/415/391
+f 392/416/392 393/417/393 394/418/394 395/419/395
+f 388/412/388 391/415/391 396/420/396 397/421/397
+f 398/422/398 395/419/395 394/418/394 399/423/399
+f 397/421/397 396/420/396 400/424/400 401/425/401
+f 402/426/402 398/422/398 399/423/399 403/427/403
+f 401/425/401 400/424/400 404/428/404 405/429/405
+f 406/430/406 402/426/402 403/427/403 407/431/407
+f 405/429/405 404/428/404 408/432/408 409/433/409
+f 410/434/410 406/430/406 407/431/407 411/435/411
+f 409/433/409 408/432/408 412/436/412 413/437/413
+f 414/438/414 410/434/410 411/435/411 415/439/415
+f 408/432/408 416/440/416 417/441/417 412/436/412
+f 418/442/418 419/443/419 410/434/410 414/438/414
+f 404/428/404 420/444/420 416/440/416 408/432/408
+f 419/443/419 421/445/421 406/430/406 410/434/410
+f 400/424/400 422/446/422 420/444/420 404/428/404
+f 421/445/421 423/447/423 402/426/402 406/430/406
+f 396/420/396 424/448/424 422/446/422 400/424/400
+f 423/447/423 425/449/425 398/422/398 402/426/402
+f 391/415/391 426/450/426 424/448/424 396/420/396
+f 425/449/425 427/451/427 395/419/395 398/422/398
+f 391/415/391 390/414/390 428/452/428 426/450/426
+f 429/453/429 392/416/392 395/419/395 427/451/427
+f 335/342/335 382/406/382 430/454/430 431/455/431
+f 432/456/432 383/407/383 337/344/337 433/457/433
+f 382/458/382 413/437/413 412/436/412 430/459/430
+f 414/438/414 415/439/415 383/460/383 432/461/432
+f 336/343/336 335/342/335 431/455/431 374/398/374
+f 433/457/433 337/344/337 338/345/338 375/399/375
+f 376/462/376 434/463/434 390/414/390 389/413/389
+f 392/416/392 435/464/435 377/465/377 393/417/393
+f 412/436/412 417/441/417 436/466/436 430/459/430
+f 437/467/437 418/442/418 414/438/414 432/461/432
+f 438/468/438 439/469/439 430/459/430 436/466/436
+f 432/461/432 440/470/440 441/471/441 437/467/437
+f 442/472/442 439/469/439 438/468/438 443/473/443
+f 441/471/441 440/470/440 444/474/444 445/475/445
+f 446/476/446 447/477/447 439/469/439 442/472/442
+f 440/470/440 448/478/448 449/479/449 444/474/444
+f 434/463/434 447/477/447 446/476/446 450/480/450
+f 449/479/449 448/478/448 435/464/435 451/481/451
+f 390/414/390 434/463/434 450/480/450 428/452/428
+f 451/481/451 435/464/435 392/416/392 429/453/429
+f 374/398/374 447/482/447 434/483/434 376/400/376
+f 435/484/435 448/485/448 375/399/375 377/401/377
+f 374/398/374 431/455/431 439/486/439 447/482/447
+f 440/487/440 433/457/433 375/399/375 448/485/448
+f 431/455/431 430/454/430 439/486/439
+f 440/487/440 432/456/432 433/457/433
+f 428/452/428 450/480/450 452/488/452 453/489/453
+f 454/490/454 451/481/451 429/453/429 455/491/455
+f 450/480/450 446/476/446 456/492/456 452/488/452
+f 457/493/457 449/479/449 451/481/451 454/490/454
+f 446/476/446 442/472/442 458/494/458 456/492/456
+f 459/495/459 444/474/444 449/479/449 457/493/457
+f 442/472/442 443/473/443 460/496/460 458/494/458
+f 461/497/461 445/475/445 444/474/444 459/495/459
+f 443/473/443 438/468/438 462/498/462 460/496/460
+f 463/499/463 441/471/441 445/475/445 461/497/461
+f 438/468/438 436/466/436 464/500/464 462/498/462
+f 465/501/465 437/467/437 441/471/441 463/499/463
+f 436/466/436 417/441/417 466/502/466 464/500/464
+f 467/503/467 418/442/418 437/467/437 465/501/465
+f 426/450/426 428/452/428 453/489/453 468/504/468
+f 455/491/455 429/453/429 427/451/427 469/505/469
+f 424/448/424 426/450/426 468/504/468 470/506/470
+f 469/505/469 427/451/427 425/449/425 471/507/471
+f 422/446/422 424/448/424 470/506/470 472/508/472
+f 471/507/471 425/449/425 423/447/423 473/509/473
+f 420/444/420 422/446/422 472/508/472 474/510/474
+f 473/509/473 423/447/423 421/445/421 475/511/475
+f 416/440/416 420/444/420 474/510/474 476/512/476
+f 475/511/475 421/445/421 419/443/419 477/513/477
+f 417/441/417 416/440/416 476/512/476 466/502/466
+f 477/513/477 419/443/419 418/442/418 467/503/467
+f 460/496/460 462/498/462 478/514/478 479/515/479
+f 480/516/480 463/499/463 461/497/461 481/517/481
+f 479/515/479 478/514/478 482/518/482 483/519/483
+f 484/520/484 480/516/480 481/517/481 485/521/485
+f 483/519/483 482/518/482 486/522/486 487/523/487
+f 488/524/488 484/520/484 485/521/485 489/525/489
+f 487/523/487 486/522/486 490/526/490 491/527/491
+f 492/528/492 488/524/488 489/525/489 493/529/493
+f 468/504/468 453/489/453 487/523/487 491/527/491
+f 489/525/489 455/491/455 469/505/469 493/529/493
+f 452/488/452 483/519/483 487/523/487 453/489/453
+f 489/525/489 485/521/485 454/490/454 455/491/455
+f 452/488/452 456/492/456 479/515/479 483/519/483
+f 481/517/481 457/493/457 454/490/454 485/521/485
+f 460/496/460 479/515/479 456/492/456 458/494/458
+f 457/493/457 481/517/481 461/497/461 459/495/459
+f 464/500/464 466/502/466 478/514/478 462/498/462
+f 480/516/480 467/503/467 465/501/465 463/499/463
+f 476/512/476 482/518/482 478/514/478 466/502/466
+f 480/516/480 484/520/484 477/513/477 467/503/467
+f 474/510/474 486/522/486 482/518/482 476/512/476
+f 484/520/484 488/524/488 475/511/475 477/513/477
+f 472/508/472 490/526/490 486/522/486 474/510/474
+f 488/524/488 492/528/492 473/509/473 475/511/475
+f 470/506/470 491/527/491 490/526/490 472/508/472
+f 492/528/492 493/529/493 471/507/471 473/509/473
+f 468/504/468 491/527/491 470/506/470
+f 471/507/471 493/529/493 469/505/469
+f 409/433/409 413/437/413 494/530/494 495/531/495
+f 496/532/496 415/439/415 411/435/411 497/533/497
+f 405/429/405 409/433/409 495/531/495 498/534/498
+f 497/533/497 411/435/411 407/431/407 499/535/499
+f 401/425/401 405/429/405 498/534/498 500/536/500
+f 499/535/499 407/431/407 403/427/403 501/537/501
+f 397/538/397 401/425/401 500/536/500 502/539/502
+f 501/537/501 403/427/403 399/540/399 503/541/503
+f 388/542/388 397/538/397 502/539/502 504/543/504
+f 503/541/503 399/540/399 394/544/394 505/545/505
+f 389/546/389 388/542/388 504/543/504 506/547/506
+f 505/545/505 394/544/394 393/548/393 507/549/507
+f 504/543/504 495/531/495 494/530/494 506/547/506
+f 496/532/496 497/533/497 505/545/505 507/549/507
+f 504/543/504 502/539/502 498/534/498 495/531/495
+f 499/535/499 503/541/503 505/545/505 497/533/497
+f 502/539/502 500/536/500 498/534/498
+f 499/535/499 501/537/501 503/541/503
+f 367/380/367 376/400/376 389/550/389 506/551/506
+f 393/548/393 377/552/377 370/553/370 507/549/507
+f 367/554/367 506/547/506 494/530/494 384/555/384
+f 496/532/496 507/549/507 370/553/370 387/556/387
+f 382/458/382 384/555/384 494/530/494 413/437/413
+f 496/532/496 387/556/387 383/460/383 415/439/415
diff --git a/demo/Vec3.lua b/demo/Vec3.lua
new file mode 100644
index 0000000..39569bc
--- /dev/null
+++ b/demo/Vec3.lua
@@ -0,0 +1,100 @@
+local Vec3 = {}
+
+Vec3.prototype = {}
+
+Vec3.prototype.dot = function(self, v)
+ local result = Vec3.new{0,0,0}
+ honey.cglm.vec3.dot(self.data, v.data, result.data)
+ return result
+end
+
+Vec3.prototype.norm = function(self)
+ return honey.cglm.vec3.norm(self.data)
+end
+
+Vec3.prototype.norm2 = function(self)
+ return honey.cglm.vec3.norm2(self.data)
+end
+
+Vec3.prototype.add = function(self, v)
+ local result = Vec3.new{0,0,0}
+ honey.cglm.vec3.add(self.data, v.data, result.data)
+ return result
+end
+
+Vec3.prototype.adds = function(self, s)
+ local result = Vec3.new{0,0,0}
+ honey.cglm.vec3.adds(self.data, s, result.data)
+ return result
+end
+
+Vec3.prototype.mul = function(self, v)
+ local result = Vec3.new{0,0,0}
+ honey.cglm.vec3.mul(self.data, v.data, result.data)
+ return result
+end
+
+Vec3.prototype.muls = function(self, s)
+ local result = Vec3.new{0,0,0}
+ honey.cglm.vec3.muls(self.data, s, result.data)
+ return result
+end
+
+Vec3.prototype.normalize = function(self)
+ honey.cglm.vec3.normalize(self.data)
+end
+
+Vec3.prototype.lerp = function(self, other, s)
+ local result = Vec3.new{0,0,0}
+ honey.cglm.vec3.lerp(self.data, other.data, s, result.data)
+ return result
+end
+
+-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Vec3.mt = {}
+
+Vec3.mt.__index = function(self, index)
+ if type(index) == 'number' then
+ return honey.cglm.get_value(self.data, index)
+ else
+ return Vec3.prototype[index]
+ end
+end
+
+Vec3.mt.__newindex = function(self, index, value)
+ if type(index) == 'number' then
+ honey.cglm.set_value(self.data, index, value)
+ else
+ rawset(self, index, value)
+ end
+end
+
+Vec3.mt.__tostring = function(vec3)
+ local str = '['..
+ tostring(self.data[0])..', '..
+ tostring(self.data[1])..', '..
+ tostring(self.data[2])..']'
+ return str
+end
+
+-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Vec3.new = function(tbl)
+ if #tbl ~= 3 then
+ error('3-vectors require exactly three elements!')
+ end
+
+ local data = honey.cglm.new_array_zero(3)
+ for i = 0,2 do
+ honey.cglm.set_value(data, i, tbl[i+1])
+ end
+
+ local vec3 = {}
+ vec3.data = data
+ setmetatable(vec3, Vec3.mt)
+ return vec3
+end
+
+return Vec3
+
diff --git a/demo/Vector.lua b/demo/Vector.lua
new file mode 100644
index 0000000..752c927
--- /dev/null
+++ b/demo/Vector.lua
@@ -0,0 +1,60 @@
+local Vec3 = {}
+
+Vec3.tostring = function(vec3)
+ local str = '['..
+ tostring(honey.cglm.get_value(vec4, 0))..','..
+ tostring(honey.cglm.get_value(vec4, 1))..','..
+ tostring(honey.cglm.get_value(vec4, 2))..']'
+ return str
+end
+
+Vec3.new = function(tbl)
+ if tbl == nil then
+ return honey.cglm.new_array_zero(3)
+ end
+
+ if #tbl ~= 3 then
+ error('3-vectors require exactly three elements!')
+ end
+
+ local vec3 = honey.cglm.new_array_zero(3)
+ for i = 0,2 do
+ honey.cglm.set_value(data, i, tbl[i+1])
+ end
+
+ return vec3
+end
+
+-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+local Vec4 = {}
+
+Vec4.tostring = function(vec4)
+ local str = '['..
+ tostring(honey.cglm.get_value(vec4, 0))..','..
+ tostring(honey.cglm.get_value(vec4, 1))..','..
+ tostring(honey.cglm.get_value(vec4, 2))..','..
+ tostring(honey.cglm.get_value(vec4, 3))..']'
+ return str
+end
+
+Vec4.new = function(tbl)
+ if tbl == nil then
+ return honey.cglm.new_array_zero(4)
+ end
+
+ if #tbl ~= 4 then
+ error('4-vectors require exactly four elements!')
+ end
+
+ local vec4 = honey.cglm.new_array_zero(4)
+ for i = 0,3 do
+ honey.cglm.set_value(vec4, i, tbl[i+1])
+ end
+
+ return vec4
+end
+
+
+return function() return Vec3, Vec4 end
+
diff --git a/demo/main.lua b/demo/main.lua
index 1be7eaf..1cb63d8 100644
--- a/demo/main.lua
+++ b/demo/main.lua
@@ -1,27 +1,50 @@
-for k, v in pairs(honey.shader) do
- print(k, v)
-end
+local Vec3, Vec4 = require('Vector')()
+local Mat3, Mat4 = require('Matrix')()
+
+local m = Mat3.new{1, 0, 1,
+ 0, 1, 0,
+ 0, 0, 0}
+print(Mat3.tostring(m))
honey.input.key.bind(honey.input.key.escape, honey.exit)
-local vec4 = function(v)
- local vector = honey.cglm.new_array_zero(4)
- honey.cglm.set_value(vector, 0, v[1])
- honey.cglm.set_value(vector, 1, v[2])
- honey.cglm.set_value(vector, 2, v[3])
- honey.cglm.set_value(vector, 3, v[4])
- return vector
+local basis = function(matrix)
+ local b = {}
+ b.x = Vec3.new{1, 0, 0}
+ b.y = Vec3.new{0, 1, 0}
+ b.z = Vec3.new{0, 0, 1}
+
+ local mat3 = honey.cglm.new_array_zero(9)
+ honey.cglm.mat4.pick3(matrix, mat3)
+
+ honey.cglm.mat3.mulv(b.x, mat3, b.x)
+ honey.cglm.mat3.mulv(b.y, mat3, b.y)
+ honey.cglm.mat3.mulv(b.z, mat3, b.z)
+
+ return b
end
local vertex_shader = [[
#version 330 core
layout(location = 0) in vec3 position;
+layout(location = 1) in vec3 normal;
+layout(location = 2) in vec2 tex_coord;
+
+out vec2 uv_coord;
+out vec3 v_normal;
+out vec3 v_position;
+
+uniform mat4 model;
+uniform mat4 view;
+uniform mat4 projection;
void main()
{
- gl_Position.xyz = position - vec3(1,1,0);
- gl_Position.w = 1.0;
+ gl_Position = projection * view * model * vec4(position.xyz, 1);
+ uv_coord = tex_coord;
+ v_normal = mat3(view) * normal;
+ v_position = vec3(view * model * vec4(position.xyz, 1.0));
} ]]
local fragment_shader = [[
#version 330 core
@@ -33,8 +56,8 @@ void main() { color = base_color; } ]]
local shader = honey.shader.new(vertex_shader, fragment_shader)
local plane = honey.primitives.plane(2,2)
-local color1 = vec4{1,0,0,1}
-local color2 = vec4{0,0,1,1}
+local color1 = Vec4.new{1,0,0,1}
+local color2 = Vec4.new{0,0,1,1}
local color = honey.cglm.new_array_zero(4)
local total_time = 0
diff --git a/src/cglm_bindings.c b/src/cglm_bindings.c
index 95c9d81..f8f6c8a 100644
--- a/src/cglm_bindings.c
+++ b/src/cglm_bindings.c
@@ -61,6 +61,7 @@ void honey_setup_cglm(lua_State* L)
honey_lua_element camera_elements[] = {
{ "perspective", HONEY_FUNCTION, { .function = honey_cglm_perspective } },
{ "orthographic", HONEY_FUNCTION, { .function = honey_cglm_orthographic } },
+ { "look", HONEY_FUNCTION, { .function = honey_cglm_look } },
};
honey_lua_element cglm_elements[] = {
@@ -73,7 +74,7 @@ void honey_setup_cglm(lua_State* L)
{ "mat3", HONEY_TABLE, { .table = { 8, mat3_elements } } },
{ "mat4", HONEY_TABLE, { .table = { 10, mat4_elements } } },
{ "affine", HONEY_TABLE, { .table = { 3, affine_elements } } },
- { "camera", HONEY_TABLE, { .table = { 2, camera_elements } } },
+ { "camera", HONEY_TABLE, { .table = { 3, camera_elements } } },
};
honey_lua_create_table(L, cglm_elements, 9);
@@ -769,3 +770,17 @@ int honey_cglm_orthographic(lua_State* L)
glm_ortho_aabb(box, matrix);
return 0;
}
+
+/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
+
+int honey_cglm_look(lua_State* L)
+{
+ float *position, *direction, *up, *dest;
+ honey_lua_parse_arguments(L, 4,
+ HONEY_USERDATA, &position,
+ HONEY_USERDATA, &direction,
+ HONEY_USERDATA, &up,
+ HONEY_USERDATA, &dest);
+ glm_look(position, direction, up, dest);
+ return 0;
+}
diff --git a/src/cglm_bindings.h b/src/cglm_bindings.h
index 09a29c3..ba7714e 100644
--- a/src/cglm_bindings.h
+++ b/src/cglm_bindings.h
@@ -508,4 +508,16 @@ int honey_cglm_perspective(lua_State* L);
*/
int honey_cglm_orthographic(lua_State* L);
+/** @brief Compute the view matrix.
+ *
+ * @param[in] position The camera's vec3 position.
+ * @param[in] direction The vec3 direction the camera is facing.
+ * @param[in] up The camera's vec3 up vector.
+ * @param[out] dest The view matrix destination.
+ *
+ * @returns Nothing.
+ */
+int honey_cglm_look(lua_State* L);
+
+
#endif
diff --git a/src/honey.c b/src/honey.c
index 17b0648..c63ab2f 100644
--- a/src/honey.c
+++ b/src/honey.c
@@ -97,16 +97,9 @@ bool honey_run(lua_State* L, honey_options opts) {
honey_window_information* info = lua_touserdata(L, -1);
honey_window window = info->window;
- char* script;
- honey_result res = honey_format_string(&script,
- "%s/main.lua",
- opts.script_directory);
- if (res != HONEY_OK) {
- fprintf(stderr, "[honey] FATAL: could not allocate space for script filename!");
- return false;
- }
+ chdir(opts.script_directory);
- if (luaL_loadfile(L, script) == 0) {
+ if (luaL_loadfile(L, "main.lua") == 0) {
if (!honey_lua_pcall(L, 0, 1) == 0) {
const char* error = lua_tostring(L, -1);
fprintf(stderr, "[honey] ERROR: %s\n", error);
@@ -116,8 +109,7 @@ bool honey_run(lua_State* L, honey_options opts) {
else {
fprintf(stderr,
- "[honey] ERROR: failed to load %s: %s!\n",
- script,
+ "[honey] ERROR: failed to load main.lua: %s!\n",
lua_tostring(L, -1));
return false;
}
diff --git a/src/mesh/mesh.c b/src/mesh/mesh.c
index 9c045ec..ab3e92c 100644
--- a/src/mesh/mesh.c
+++ b/src/mesh/mesh.c
@@ -22,6 +22,7 @@ static int honey_mesh_lua_delete(lua_State* L)
void honey_setup_mesh(lua_State* L)
{
honey_lua_element mesh_elements[] = {
+ { "load", HONEY_FUNCTION, { .function = honey_mesh_load } },
{ "draw", HONEY_FUNCTION, { .function = honey_mesh_lua_draw } },
{ "delete", HONEY_FUNCTION, { .function = honey_mesh_lua_delete } },
};
@@ -31,6 +32,131 @@ void honey_setup_mesh(lua_State* L)
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
+static honey_mesh assimp_to_honey_mesh(struct aiMesh* mesh,
+ struct aiScene* scene)
+{
+ unsigned int vertex_step = 6;
+ bool mesh_has_uvs = false;
+ unsigned int n_vertices = mesh->mNumVertices;
+
+ if (mesh->mTextureCoords[0]) {
+ mesh_has_uvs = true;
+ vertex_step = 8;
+ }
+
+ float* vertices = malloc(sizeof(float) * vertex_step * n_vertices);
+ for (int i=0; i<n_vertices; i++) {
+ int j = i*vertex_step;
+ /* positions */
+ vertices[j+0] = mesh->mVertices[i].x;
+ vertices[j+1] = mesh->mVertices[i].y;
+ vertices[j+2] = mesh->mVertices[i].z;
+
+ /* normals */
+ vertices[j+3] = mesh->mNormals[i].x;
+ vertices[j+4] = mesh->mNormals[i].y;
+ vertices[j+5] = mesh->mNormals[i].z;
+
+ /* uvs? */
+ if (mesh_has_uvs) {
+ vertices[j+6] = mesh->mTextureCoords[0][i].x;
+ vertices[j+7] = mesh->mTextureCoords[0][i].y;
+ }
+ }
+
+ unsigned int n_indices = mesh->mNumFaces*3;
+ unsigned int* indices = malloc(sizeof(unsigned int) * n_indices);
+ for (int i=0; i<mesh->mNumFaces; i++) {
+ int j = 3*i;
+ struct aiFace face = mesh->mFaces[i];
+ indices[j+0] = face.mIndices[0];
+ indices[j+1] = face.mIndices[1];
+ indices[j+2] = face.mIndices[2];
+ }
+
+ honey_mesh result;
+
+ if (mesh_has_uvs) {
+ unsigned int n_attributes = 3;
+ unsigned int attribute_sizes[] = { 3, 3, 2 };
+ honey_mesh_new(&result,
+ vertices, n_vertices,
+ n_attributes, attribute_sizes,
+ indices, n_indices);
+ }
+ else {
+ unsigned int n_attributes = 2;
+ unsigned int attribute_sizes[] = { 3, 3 };
+ honey_mesh_new(&result,
+ vertices, n_vertices,
+ n_attributes, attribute_sizes,
+ indices, n_indices);
+ }
+
+ free(vertices);
+ free(indices);
+
+ return result;
+}
+
+/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
+
+static void process_nodes_recursively(lua_State* L,
+ struct aiScene* scene,
+ struct aiNode* node,
+ int* n_meshes)
+{
+ for (int i=0; i<node->mNumMeshes; i++) {
+ honey_mesh* mesh = lua_newuserdata(L, sizeof(honey_mesh));
+ struct aiMesh* assimp_mesh = scene->mMeshes[node->mMeshes[i]];
+ *mesh = assimp_to_honey_mesh(assimp_mesh, scene);
+ lua_rawseti(L, -2, *n_meshes);
+ *n_meshes++;
+ }
+
+ for (int i=0; i<node->mNumChildren; i++) {
+ process_nodes_recursively(L, scene, node->mChildren[i], n_meshes);
+ }
+}
+
+/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
+
+int honey_mesh_load(lua_State* L)
+{
+ char* filename;
+ honey_lua_parse_arguments(L, 1, HONEY_STRING, &filename);
+
+ int n_meshes = 1;
+
+ struct aiScene* scene = aiImportFile(filename,
+ aiProcess_Triangulate |
+ aiProcess_FlipUVs);
+ if (scene == NULL) {
+ char* error;
+ honey_format_string(&error, "could not open file '%s'", filename);
+ lua_pushstring(L, error);
+ free(error);
+ lua_error(L);
+ }
+
+ if (scene->mFlags & AI_SCENE_FLAGS_INCOMPLETE ||
+ scene->mRootNode == NULL) {
+ char* error;
+ honey_format_string(&error, "could not read mesh(es) in '%s'", filename);
+ lua_pushstring(L, error);
+ free(error);
+ lua_error(L);
+ }
+
+ lua_createtable(L, 0, 0);
+
+ process_nodes_recursively(L, scene, scene->mRootNode, n_meshes);
+
+ return 1;
+}
+
+/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
+
honey_result honey_mesh_new(honey_mesh* mesh,
float* vertices,
unsigned int n_vertices,
diff --git a/src/mesh/mesh.h b/src/mesh/mesh.h
index 81bcc94..0f9c1a3 100644
--- a/src/mesh/mesh.h
+++ b/src/mesh/mesh.h
@@ -16,6 +16,14 @@ typedef struct {
/** @brief Lua bindings for mesh drawing and deletion functions. */
void honey_setup_mesh(lua_State* L);
+/** @brief Load all meshes from a file.
+ *
+ * @param[in] filename The name of the file to load from.
+ *
+ * @returns A table containing all of the meshes.
+ */
+int honey_mesh_load(lua_State* L);
+
/** @brief Create a new mesh from vertex and index arrays.
*
* Note that this function creates copies of the vertex and index arrays,