torqml 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (79) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +32 -0
  3. data/.yardopts +3 -0
  4. data/Gemfile +5 -0
  5. data/LICENSE +21 -0
  6. data/README.md +148 -0
  7. data/Rakefile +6 -0
  8. data/assets/images/capture.png +0 -0
  9. data/assets/images/configure.png +0 -0
  10. data/assets/images/edit.png +0 -0
  11. data/assets/images/play.png +0 -0
  12. data/assets/images/reload.png +0 -0
  13. data/assets/images/stop.png +0 -0
  14. data/assets/shapes/TQBox.obj +44 -0
  15. data/assets/shapes/TQCone.obj +169 -0
  16. data/assets/shapes/TQCylinder.obj +585 -0
  17. data/assets/shapes/TQSphere.obj +1497 -0
  18. data/assets/shapes/TQTorus.obj +3754 -0
  19. data/bin/torqml +12 -0
  20. data/examples/SerialLink/SerialLink.qml +35 -0
  21. data/examples/SerialLink/main.qml +29 -0
  22. data/examples/SerialLink/main_multi.qml +40 -0
  23. data/examples/Tutorial/MyModel.qml +34 -0
  24. data/examples/Tutorial/main_00_minimal.qml +10 -0
  25. data/examples/Tutorial/main_01_property.qml +15 -0
  26. data/examples/Tutorial/main_02_pose.qml +19 -0
  27. data/examples/Tutorial/main_03_link.qml +32 -0
  28. data/examples/Tutorial/main_04_importmodel.qml +7 -0
  29. data/examples/Tutorial/main_05_cameralight.qml +17 -0
  30. data/examples/Tutorial/main_06_animation.qml +18 -0
  31. data/examples/WheeledVehicle/WheeledVehicle.qml +62 -0
  32. data/examples/WheeledVehicle/data/maze2014student.dat +19 -0
  33. data/examples/WheeledVehicle/data/wheeledvehicle.csv +11712 -0
  34. data/examples/WheeledVehicle/main.qml +38 -0
  35. data/examples/WheeledVehicle/plugins/MazeWallGenerator/plugin.rb +68 -0
  36. data/examples/WheeledVehicle/plugins/MazeWallGenerator/qml/TorQML/Plugins/MazeWallGenerator/MazeHorizWall.qml +29 -0
  37. data/examples/WheeledVehicle/plugins/MazeWallGenerator/qml/TorQML/Plugins/MazeWallGenerator/MazeVertWall.qml +30 -0
  38. data/examples/WheeledVehicle/plugins/MazeWallGenerator/qml/TorQML/Plugins/MazeWallGenerator/MazeWallGenerator.qml +24 -0
  39. data/examples/WheeledVehicle/plugins/MazeWallGenerator/qml/TorQML/Plugins/MazeWallGenerator/qmldir +4 -0
  40. data/examples/WheeledVehicle/plugins/MazeWallGenerator/qml/TorQML/Plugins/MazeWallGenerator/wallAllocator.js +47 -0
  41. data/ext/TorQML/FrameGrabber/extconf.rb +45 -0
  42. data/ext/TorQML/FrameGrabber/framegrabber.cpp +36 -0
  43. data/ext/TorQML/FrameGrabber/framegrabber.pro +9 -0
  44. data/ext/TorQML/FrameGrabber/qmldir +2 -0
  45. data/lib/torqml.rb +47 -0
  46. data/lib/torqml/datasources.rb +12 -0
  47. data/lib/torqml/datasources/csvdatasource.rb +44 -0
  48. data/lib/torqml/datasources/datasource.rb +44 -0
  49. data/lib/torqml/datasources/lineardatasource.rb +47 -0
  50. data/lib/torqml/datasources/matrixdatasource.rb +37 -0
  51. data/lib/torqml/plugins.rb +44 -0
  52. data/lib/torqml/version.rb +6 -0
  53. data/plugins/DO_NOT_MODIFY_THIS_DIRECTORY +2 -0
  54. data/qml/TorQML/DataSources/TQCSVDataSource.qml +17 -0
  55. data/qml/TorQML/DataSources/TQLinearDataSource.qml +18 -0
  56. data/qml/TorQML/DataSources/qmldir +3 -0
  57. data/qml/TorQML/Shapes/TQAxis.qml +26 -0
  58. data/qml/TorQML/Shapes/TQBox.qml +11 -0
  59. data/qml/TorQML/Shapes/TQCone.qml +17 -0
  60. data/qml/TorQML/Shapes/TQCoordinate.qml +30 -0
  61. data/qml/TorQML/Shapes/TQCylinder.qml +17 -0
  62. data/qml/TorQML/Shapes/TQGrid.qml +36 -0
  63. data/qml/TorQML/Shapes/TQPrimitive.qml +33 -0
  64. data/qml/TorQML/Shapes/TQSphere.qml +18 -0
  65. data/qml/TorQML/Shapes/TQTorus.qml +18 -0
  66. data/qml/TorQML/Shapes/qmldir +10 -0
  67. data/qml/TorQML/TQModel.qml +9 -0
  68. data/qml/TorQML/Views/Dialogs/TQCaptureDialog.qml +197 -0
  69. data/qml/TorQML/Views/Dialogs/TQProgressDialog.qml +36 -0
  70. data/qml/TorQML/Views/Dialogs/qmldir +3 -0
  71. data/qml/TorQML/Views/TQBasicView.qml +148 -0
  72. data/qml/TorQML/Views/TQCamera.qml +11 -0
  73. data/qml/TorQML/Views/TQViewport.qml +41 -0
  74. data/qml/TorQML/Views/basicview.js +172 -0
  75. data/qml/TorQML/Views/mouseEventHandler.js +55 -0
  76. data/qml/TorQML/Views/qmldir +4 -0
  77. data/qml/TorQML/qmldir +2 -0
  78. data/torqml.gemspec +29 -0
  79. metadata +181 -0
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: d914a0f7cdc360a1c4382b7815015ed76b6329a6
4
+ data.tar.gz: a4aaf0642f1aa842478e1aa18f920c3b1e4d46d1
5
+ SHA512:
6
+ metadata.gz: db4e74821ad8b41a92c5b5c1c67f75a019677487619ec4090a305cdf167b0820df41166c8307ae4d90041b4b0a0223593cb62ad5e3a3e304b53f758d50df1804
7
+ data.tar.gz: e3689a046b17911a125c897bfcacef18da02b7f3899cc1c74e7b7f0c6e365e86c4e7abb650c7394f706a080a7dcdb3b1b3820d687bac7b2f00a00cf7a8690bb4
@@ -0,0 +1,32 @@
1
+ # C++ objects and libs
2
+ *.slo
3
+ *.lo
4
+ *.o
5
+ *.a
6
+ *.la
7
+ *.lai
8
+ *.so
9
+ *.dll
10
+ *.dylib
11
+ *.bundle
12
+
13
+ # Qt-es
14
+ *.pro.user
15
+ *.pro.user.*
16
+ *.moc
17
+ moc_*.cpp
18
+ qrc_*.cpp
19
+ Makefile
20
+ *-build-*
21
+ .qmake.stash
22
+ *.autosave
23
+
24
+ # YARD
25
+ .yardoc
26
+ doc
27
+
28
+ # Rake
29
+ pkg
30
+
31
+ # exports
32
+ examples/**/*.png
@@ -0,0 +1,3 @@
1
+ --protected
2
+ --no-private
3
+ -
data/Gemfile ADDED
@@ -0,0 +1,5 @@
1
+ ruby ">=2.0.0"
2
+
3
+ gemspec name: "torqml"
4
+
5
+ gem "rake-compiler"
data/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT Open Source License
2
+
3
+ Copyright 2014-2015 Tokoro
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
6
+
7
+ The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
8
+
9
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
10
+
11
+ ----
12
+
13
+ Icons under assets directory are made by:
14
+ - Freepik (http://www.freepik.com/)
15
+ - SimpleIcon (http://www.simpleicon.com/)
16
+ - Appzgear (http://appzgear.com/)
17
+ - Icons8 (http://www.icons8.com/)
18
+ - Icomoon (http://www.icomoon.io/)
19
+ by flaticon.com (http://www.flaticon.com/).
20
+ Licensed under CC BY 3.0 (http://creativecommons.org/licenses/by/3.0/).
21
+
@@ -0,0 +1,148 @@
1
+ TorQML
2
+ ======
3
+
4
+ TorQML is a 3D visualization toolkit for numerical simulations.
5
+ It provides an architecture for describing 3D structures in Qt Quick QML and enables you to animate the models with numerical data.
6
+
7
+ TorQML is now under development.
8
+ Stable release will be out after the official release of Qt3D (in Qt 5.5).
9
+
10
+ ## Features
11
+
12
+ * User-friendly QML language for modelling
13
+ * TorQML Viewer application for quick preview and exporting
14
+ * Frame capture to PNG sequence
15
+ * Extensibility with Ruby, QML with Javascript, and C++, thanks to [ruby-qml](https://github.com/seanchas116/ruby-qml/)
16
+
17
+ ## Gallery
18
+ ![Gallery](https://github.com/tokoro10g/torqml/wiki/img/wheeled_vehicle.png)
19
+ ![Gallery](https://github.com/tokoro10g/torqml/wiki/img/quad_pendulum.png)
20
+ ![Gallery](https://github.com/tokoro10g/torqml/wiki/img/furuta_pendulum.png)
21
+
22
+ ## Installation
23
+
24
+ ### Requirements
25
+
26
+ * Git
27
+ * Qt 5.2 or later
28
+ * Qt3D for Qt 5
29
+ * Ruby 2.0.0 or later
30
+ * [ruby-qml](https://github.com/seanchas116/ruby-qml/) \>= 1.0.0 and its dependencies
31
+
32
+ Tested on Arch Linux, Ubuntu 14.04 LTS.
33
+ Not supporting Windows.
34
+
35
+ ### Linux
36
+
37
+ #### Install Dependencies
38
+
39
+ * Install Qt 5, Ruby and git
40
+ * Install ruby-qml (install its dependencies beforehand)
41
+
42
+ ```sh
43
+ $ gem install qml
44
+ ```
45
+
46
+ * Install Qt3D
47
+ * Ubuntu 14.04
48
+
49
+ ```sh
50
+ $ sudo apt-get install qtdeclarative5-qt3d-plugin
51
+ ```
52
+
53
+ * Manual Build (for Qt 5.3 or later)
54
+
55
+ ```sh
56
+ $ git clone https://gitorious.org/qt/qt3d.git
57
+ $ cd qt3d
58
+ $ git checkout bdb98ba
59
+ $ qmake && make && make docs
60
+ $ sudo make install
61
+ $ sudo make install-docs
62
+ ```
63
+
64
+ Installing documentations is recommended.
65
+
66
+ * Install build dependencies (for development)
67
+
68
+ ```sh
69
+ $ bundle install
70
+ ```
71
+
72
+ #### Install TorQML
73
+
74
+ ```sh
75
+ $ gem install torqml
76
+ ```
77
+
78
+ You can also build the latest version by yourself.
79
+
80
+ ```sh
81
+ $ git clone https://github.com/tokoro10g/torqml.git
82
+ $ cd torqml
83
+ $ rake install
84
+ ```
85
+
86
+ ### OS X
87
+
88
+ TODO: write docs for OS X
89
+
90
+ ## Documentations
91
+
92
+ See [wiki](https://github.com/tokoro10g/torqml/wiki) for further information.
93
+
94
+ ### Writing Model Structure
95
+
96
+ Using TorQML, you can define your model in JSON-like language, QML.
97
+ Models are composed of shapes (e.g. Box, Cylinder, etc.) and transformations.
98
+ Linked structures are expressed by nested structures.
99
+
100
+ ``` qml
101
+ TQModel {
102
+ TQBox { // 1st link
103
+ xLength: 0.5; yWidth: 0.3; zDepth: 0.3
104
+ TQBox { // 2nd link
105
+ xLength: 1.0; yWidth: 0.3; zDepth: 0.3
106
+ color: "blue"
107
+ transform: [ Rotation3D { angle: 30; axis: "0,0,1" } ]
108
+ TQBox { // 3rd link
109
+ xLength: 0.5; yWidth: 0.3; zDepth: 0.3
110
+ color: "green"
111
+ transform: [ Rotation3D { angle: 30; axis: "0,0,1" } ]
112
+ }
113
+ }
114
+ }
115
+ }
116
+ ```
117
+
118
+ ### Visualize Data
119
+
120
+ You can import numerical data from MATLAB Mat-File and CSV / TSV / SSV to create animations for your models.
121
+
122
+ ![Visualization](https://github.com/tokoro10g/torqml/wiki/img/viewer_main.png)
123
+
124
+ The animations are ready for exporting to the handy PNG image files.
125
+
126
+ ### Extending TorQML
127
+
128
+ TorQML also offers an extensible, yet simple plugin system.
129
+ You can write your plugin in QML, Ruby, C++, and Javascript for your own advanced project, and for the community as well.
130
+
131
+ ## Future Works
132
+
133
+ * Introduce data pipe from external simulation applications (e.g. MATLAB, Octave, etc.)
134
+ * Implement mp4 capture mode
135
+ * Design the interface for dynamic model parameter editing
136
+ * Provide an example of running a simulation inside TorQML
137
+ * Wait for a stable release of Qt3D (in near future), then write tests
138
+
139
+ ## Contributing
140
+
141
+ Contributing and issue reporting to TorQML ( https://github.com/tokoro10g/torqml ) are welcome.
142
+
143
+ You should follow these steps :
144
+
145
+ 1. Install dependencies
146
+ 1. Fork on GitHub
147
+ 1. Edit, and commit the changes into new branch
148
+ 1. Push, and create a pull-request via GitHub
@@ -0,0 +1,6 @@
1
+ require "bundler/gem_tasks"
2
+ require "rspec/core/rake_task"
3
+
4
+ RSpec::Core::RakeTask.new(:spec)
5
+
6
+ task :default => :spec
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -0,0 +1,44 @@
1
+ # Blender v2.74 (sub 0) OBJ File: ''
2
+ # www.blender.org
3
+ o Cube_Cube.001
4
+ v 0.000000 0.500000 0.500000
5
+ v 0.000000 0.500000 -0.500000
6
+ v 0.000000 -0.500000 -0.500000
7
+ v 0.000000 -0.500000 0.500000
8
+ v 0.000000 0.500000 -0.500000
9
+ v 1.000000 0.500000 -0.500000
10
+ v 1.000000 -0.500000 -0.500000
11
+ v 0.000000 -0.500000 -0.500000
12
+ v 1.000000 0.500000 -0.500000
13
+ v 1.000000 0.500000 0.500000
14
+ v 1.000000 -0.500000 0.500000
15
+ v 1.000000 -0.500000 -0.500000
16
+ v 1.000000 0.500000 0.500000
17
+ v 0.000000 0.500000 0.500000
18
+ v 0.000000 -0.500000 0.500000
19
+ v 1.000000 -0.500000 0.500000
20
+ v 0.000000 -0.500000 0.500000
21
+ v 0.000000 -0.500000 -0.500000
22
+ v 1.000000 -0.500000 -0.500000
23
+ v 1.000000 -0.500000 0.500000
24
+ v 1.000000 0.500000 0.500000
25
+ v 1.000000 0.500000 -0.500000
26
+ v 0.000000 0.500000 -0.500000
27
+ v 0.000000 0.500000 0.500000
28
+ vt 0.000000 0.000000
29
+ vt 1.000000 0.000000
30
+ vt 1.000000 1.000000
31
+ vt 0.000000 1.000000
32
+ vn -1.000000 0.000000 0.000000
33
+ vn 0.000000 0.000000 -1.000000
34
+ vn 1.000000 0.000000 0.000000
35
+ vn 0.000000 -0.000000 1.000000
36
+ vn 0.000000 -1.000000 -0.000000
37
+ vn 0.000000 1.000000 0.000000
38
+ s off
39
+ f 1/1/1 2/2/1 3/3/1 4/4/1
40
+ f 5/1/2 6/2/2 7/3/2 8/4/2
41
+ f 9/1/3 10/2/3 11/3/3 12/4/3
42
+ f 13/1/4 14/2/4 15/3/4 16/4/4
43
+ f 17/1/5 18/2/5 19/3/5 20/4/5
44
+ f 21/1/6 22/2/6 23/3/6 24/4/6
@@ -0,0 +1,169 @@
1
+ # Blender v2.74 (sub 0) OBJ File: ''
2
+ # www.blender.org
3
+ o Cone_Cone.000
4
+ v 0.000000 0.000000 0.000000
5
+ v 0.000000 0.000000 -1.000000
6
+ v 0.000000 -0.195090 -0.980785
7
+ v 0.000000 -0.382683 -0.923880
8
+ v 0.000000 -0.555570 -0.831470
9
+ v 0.000000 -0.707107 -0.707107
10
+ v 0.000000 -0.831470 -0.555570
11
+ v 0.000000 -0.923880 -0.382683
12
+ v 0.000000 -0.980785 -0.195090
13
+ v 0.000000 -1.000000 -0.000000
14
+ v 0.000000 -0.980785 0.195090
15
+ v 0.000000 -0.923880 0.382683
16
+ v 0.000000 -0.831470 0.555570
17
+ v 0.000000 -0.707107 0.707107
18
+ v 0.000000 -0.555570 0.831470
19
+ v 0.000000 -0.382683 0.923880
20
+ v 0.000000 -0.195090 0.980785
21
+ v 0.000000 -0.000000 1.000000
22
+ v 0.000000 0.195091 0.980785
23
+ v 0.000000 0.382684 0.923879
24
+ v 0.000000 0.555571 0.831469
25
+ v 0.000000 0.707107 0.707106
26
+ v 0.000000 0.831470 0.555570
27
+ v 0.000000 0.923880 0.382683
28
+ v 0.000000 0.980785 0.195089
29
+ v 0.000000 1.000000 -0.000001
30
+ v 0.000000 0.980785 -0.195091
31
+ v 0.000000 0.923879 -0.382684
32
+ v 0.000000 0.831469 -0.555571
33
+ v 0.000000 0.707106 -0.707108
34
+ v 0.000000 0.555569 -0.831470
35
+ v 0.000000 0.382682 -0.923880
36
+ v 0.000000 0.195089 -0.980786
37
+ v 1.000000 0.000000 0.000000
38
+ vt 0.500000 0.500000
39
+ vt 0.500000 1.000000
40
+ vt 0.597545 0.990393
41
+ vt 0.691342 0.961940
42
+ vt 0.777785 0.915735
43
+ vt 0.853553 0.853553
44
+ vt 0.915735 0.777785
45
+ vt 0.961940 0.691342
46
+ vt 0.990393 0.597545
47
+ vt 1.000000 0.500000
48
+ vt 0.990393 0.402455
49
+ vt 0.961940 0.308658
50
+ vt 0.915735 0.222215
51
+ vt 0.853553 0.146447
52
+ vt 0.777785 0.084265
53
+ vt 0.691342 0.038060
54
+ vt 0.597545 0.009607
55
+ vt 0.500000 0.000000
56
+ vt 0.402455 0.009607
57
+ vt 0.308658 0.038060
58
+ vt 0.222215 0.084265
59
+ vt 0.146446 0.146447
60
+ vt 0.084265 0.222215
61
+ vt 0.038060 0.308659
62
+ vt 0.009607 0.402455
63
+ vt 0.000000 0.500000
64
+ vt 0.009607 0.597546
65
+ vt 0.038060 0.691342
66
+ vt 0.084266 0.777786
67
+ vt 0.146447 0.853554
68
+ vt 0.222215 0.915735
69
+ vt 0.308659 0.961940
70
+ vt 0.402456 0.990393
71
+ vt 0.597545 0.009689
72
+ vn -1.000000 0.000000 0.000000
73
+ vn 0.705400 -0.069500 -0.705400
74
+ vn 0.705400 -0.205800 -0.678300
75
+ vn 0.705400 -0.334100 -0.625100
76
+ vn 0.705400 -0.449700 -0.547900
77
+ vn 0.705400 -0.547900 -0.449700
78
+ vn 0.705400 -0.625100 -0.334100
79
+ vn 0.705400 -0.678300 -0.205800
80
+ vn 0.705400 -0.705400 -0.069500
81
+ vn 0.705400 -0.705400 0.069500
82
+ vn 0.705400 -0.678300 0.205800
83
+ vn 0.705400 -0.625100 0.334100
84
+ vn 0.705400 -0.547900 0.449700
85
+ vn 0.705400 -0.449700 0.547900
86
+ vn 0.705400 -0.334100 0.625100
87
+ vn 0.705400 -0.205800 0.678300
88
+ vn 0.705400 -0.069500 0.705400
89
+ vn 0.705400 0.069500 0.705400
90
+ vn 0.705400 0.205800 0.678300
91
+ vn 0.705400 0.334100 0.625100
92
+ vn 0.705400 0.449700 0.547900
93
+ vn 0.705400 0.547900 0.449700
94
+ vn 0.705400 0.625100 0.334100
95
+ vn 0.705400 0.678300 0.205800
96
+ vn 0.705400 0.705400 0.069500
97
+ vn 0.705400 0.705400 -0.069500
98
+ vn 0.705400 0.678300 -0.205800
99
+ vn 0.705400 0.625100 -0.334100
100
+ vn 0.705400 0.547900 -0.449700
101
+ vn 0.705400 0.449700 -0.547900
102
+ vn 0.705400 0.334100 -0.625100
103
+ vn 0.705400 0.205800 -0.678300
104
+ vn 0.705400 0.069500 -0.705400
105
+ s off
106
+ f 1/1/1 2/2/1 3/3/1
107
+ f 1/1/1 3/3/1 4/4/1
108
+ f 1/1/1 4/4/1 5/5/1
109
+ f 1/1/1 5/5/1 6/6/1
110
+ f 1/1/1 6/6/1 7/7/1
111
+ f 1/1/1 7/7/1 8/8/1
112
+ f 1/1/1 8/8/1 9/9/1
113
+ f 1/1/1 9/9/1 10/10/1
114
+ f 1/1/1 10/10/1 11/11/1
115
+ f 1/1/1 11/11/1 12/12/1
116
+ f 1/1/1 12/12/1 13/13/1
117
+ f 1/1/1 13/13/1 14/14/1
118
+ f 1/1/1 14/14/1 15/15/1
119
+ f 1/1/1 15/15/1 16/16/1
120
+ f 1/1/1 16/16/1 17/17/1
121
+ f 1/1/1 17/17/1 18/18/1
122
+ f 1/1/1 18/18/1 19/19/1
123
+ f 1/1/1 19/19/1 20/20/1
124
+ f 1/1/1 20/20/1 21/21/1
125
+ f 1/1/1 21/21/1 22/22/1
126
+ f 1/1/1 22/22/1 23/23/1
127
+ f 1/1/1 23/23/1 24/24/1
128
+ f 1/1/1 24/24/1 25/25/1
129
+ f 1/1/1 25/25/1 26/26/1
130
+ f 1/1/1 26/26/1 27/27/1
131
+ f 1/1/1 27/27/1 28/28/1
132
+ f 1/1/1 28/28/1 29/29/1
133
+ f 1/1/1 29/29/1 30/30/1
134
+ f 1/1/1 30/30/1 31/31/1
135
+ f 1/1/1 31/31/1 32/32/1
136
+ f 1/1/1 32/32/1 33/33/1
137
+ f 1/1/1 33/33/1 2/2/1
138
+ f 2/2/2 34/1/2 3/3/2
139
+ f 3/3/3 34/1/3 4/4/3
140
+ f 4/4/4 34/1/4 5/5/4
141
+ f 5/5/5 34/1/5 6/6/5
142
+ f 6/6/6 34/1/6 7/7/6
143
+ f 7/7/7 34/1/7 8/8/7
144
+ f 8/8/8 34/1/8 9/9/8
145
+ f 9/9/9 34/1/9 10/10/9
146
+ f 10/10/10 34/1/10 11/11/10
147
+ f 11/11/11 34/1/11 12/12/11
148
+ f 12/12/12 34/1/12 13/13/12
149
+ f 13/13/13 34/1/13 14/14/13
150
+ f 14/14/14 34/1/14 15/15/14
151
+ f 15/15/15 34/1/15 16/16/15
152
+ f 16/16/16 34/1/16 17/17/16
153
+ f 17/34/17 34/1/17 18/18/17
154
+ f 18/18/18 34/1/18 19/19/18
155
+ f 19/19/19 34/1/19 20/20/19
156
+ f 20/20/20 34/1/20 21/21/20
157
+ f 21/21/21 34/1/21 22/22/21
158
+ f 22/22/22 34/1/22 23/23/22
159
+ f 23/23/23 34/1/23 24/24/23
160
+ f 24/24/24 34/1/24 25/25/24
161
+ f 25/25/25 34/1/25 26/26/25
162
+ f 26/26/26 34/1/26 27/27/26
163
+ f 27/27/27 34/1/27 28/28/27
164
+ f 28/28/28 34/1/28 29/29/28
165
+ f 29/29/29 34/1/29 30/30/29
166
+ f 30/30/30 34/1/30 31/31/30
167
+ f 31/31/31 34/1/31 32/32/31
168
+ f 32/32/32 34/1/32 33/33/32
169
+ f 33/33/33 34/1/33 2/2/33