summaryrefslogtreecommitdiffstats
path: root/examples
diff options
context:
space:
mode:
authorMiikka Heikkinen <miikka.heikkinen@digia.com>2014-02-10 12:01:35 +0200
committerMiikka Heikkinen <miikka.heikkinen@digia.com>2014-02-11 07:51:34 +0200
commitb86e535d839643298ba610da9789e9c4bc9149db (patch)
treeaffb34cf301618eb5c869a5bef2b48ab4229ffb1 /examples
parent51ad2b7e532296fde314e8157475b667b18ae82a (diff)
Add rotations example
+Fix scatter rangegradient Task-number: QTRD-2801 Change-Id: I1515b0a500cd995471b3de1e0b5356099bc19ede Reviewed-by: Tomi Korpipää <tomi.korpipaa@digia.com> Reviewed-by: Miikka Heikkinen <miikka.heikkinen@digia.com>
Diffstat (limited to 'examples')
-rw-r--r--examples/examples.pro3
-rw-r--r--examples/rotations/doc/src/rotations.qdoc68
-rw-r--r--examples/rotations/main.cpp87
-rw-r--r--examples/rotations/mesh/largesphere.obj1938
-rw-r--r--examples/rotations/mesh/narrowarrow.obj413
-rw-r--r--examples/rotations/rotations.pro15
-rw-r--r--examples/rotations/rotations.qrc6
-rw-r--r--examples/rotations/scatterdatamodifier.cpp183
-rw-r--r--examples/rotations/scatterdatamodifier.h56
9 files changed, 2768 insertions, 1 deletions
diff --git a/examples/examples.pro b/examples/examples.pro
index 9c3b5704..5ca239d5 100644
--- a/examples/examples.pro
+++ b/examples/examples.pro
@@ -13,7 +13,8 @@ SUBDIRS += qmlbars \
customproxy \
itemmodel \
scatter \
- surface
+ surface \
+ rotations
}
qtHaveModule(multimedia):!android:!ios: SUBDIRS += audiolevels
diff --git a/examples/rotations/doc/src/rotations.qdoc b/examples/rotations/doc/src/rotations.qdoc
new file mode 100644
index 00000000..2de29195
--- /dev/null
+++ b/examples/rotations/doc/src/rotations.qdoc
@@ -0,0 +1,68 @@
+/****************************************************************************
+**
+** Copyright (C) 2014 Digia Plc
+** All rights reserved.
+** For any questions to Digia, please use contact form at http://qt.digia.com
+**
+** This file is part of the QtDataVisualization module.
+**
+** Licensees holding valid Qt Enterprise licenses may use this file in
+** accordance with the Qt Enterprise License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia.
+**
+** If you have questions regarding the use of this file, please use
+** contact form at http://qt.digia.com
+**
+****************************************************************************/
+
+/*!
+ \example rotations
+ \title Rotations Example
+ \ingroup qtdatavisualization_examples
+ \brief Using rotated scatter items
+
+ This example shows how to do the following:
+
+ \list
+ \li Use item rotations
+ \li Use custom item meshes
+ \li Use range gradient to color the series
+ \endlist
+
+ For more basic example about using Qt Data Visualization graphs, see \l{Bars Example}.
+
+ \image rotations-example.png
+
+ \section1 Using rotations
+
+ In this example we want to orient the arrow items tangentially to the origin. This requires
+ rotating them, which can be achieved by specifying rotation quaternion to each item:
+
+ \snippet ../examples/rotations/scatterdatamodifier.cpp 0
+ \snippet ../examples/rotations/scatterdatamodifier.cpp 1
+ \snippet ../examples/rotations/scatterdatamodifier.cpp 2
+
+ Since the items need to be rotated along two axes, we define two rotation quaternions, one
+ for Y-axis and one for Z-axis, and then multiply these together to get the total rotation,
+ which we set to the data item.
+
+ \section1 Using custom item meshes
+
+ The narrow arrow mesh we use for magnetic field arrow items is not a standard mesh. Instead
+ we supply our own \c{narrowarrow.obj} file which contains the object definition for the mesh
+ in \c Wavefront obj format:
+
+ \snippet ../examples/rotations/scatterdatamodifier.cpp 3
+
+ \section1 Using range gradient
+
+ Setting the color style to range gradient in a series means that the item is colored according
+ to its relative Y-value on the visible Y-coordinate range. We want the arrows on the bottom
+ part of the graph to be darker and gradually get lighter higher they are, so we define a
+ range gradient with black color at the position 0.0 and white color at the position 1.0:
+
+ \snippet ../examples/rotations/scatterdatamodifier.cpp 4
+
+ \section1 Example contents
+*/
diff --git a/examples/rotations/main.cpp b/examples/rotations/main.cpp
new file mode 100644
index 00000000..3ddb7b55
--- /dev/null
+++ b/examples/rotations/main.cpp
@@ -0,0 +1,87 @@
+/****************************************************************************
+**
+** Copyright (C) 2014 Digia Plc
+** All rights reserved.
+** For any questions to Digia, please use contact form at http://qt.digia.com
+**
+** This file is part of the QtDataVisualization module.
+**
+** Licensees holding valid Qt Enterprise licenses may use this file in
+** accordance with the Qt Enterprise License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia.
+**
+** If you have questions regarding the use of this file, please use
+** contact form at http://qt.digia.com
+**
+****************************************************************************/
+
+#include "scatterdatamodifier.h"
+
+#include <QApplication>
+#include <QWidget>
+#include <QHBoxLayout>
+#include <QVBoxLayout>
+#include <QPushButton>
+#include <QScreen>
+#include <QSlider>
+#include <QLabel>
+
+int main(int argc, char **argv)
+{
+ QApplication app(argc, argv);
+ Q3DScatter *graph = new Q3DScatter();
+ QWidget *container = QWidget::createWindowContainer(graph);
+
+ QSize screenSize = graph->screen()->size();
+ container->setMinimumSize(QSize(screenSize.width() / 2, screenSize.height() / 1.5));
+ container->setMaximumSize(screenSize);
+ container->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
+ container->setFocusPolicy(Qt::StrongFocus);
+
+ QWidget *widget = new QWidget;
+ QHBoxLayout *hLayout = new QHBoxLayout(widget);
+ QVBoxLayout *vLayout = new QVBoxLayout();
+ hLayout->addWidget(container, 1);
+ hLayout->addLayout(vLayout);
+
+ widget->setWindowTitle(QStringLiteral("Item rotations example - Magnetic field of the sun"));
+
+ QPushButton *toggleRotationButton = new QPushButton(widget);
+ toggleRotationButton->setText(QStringLiteral("Toggle animation"));
+ QPushButton *toggleSunButton = new QPushButton(widget);
+ toggleSunButton->setText(QStringLiteral("Toggle Sun"));
+
+ QSlider *fieldLinesSlider = new QSlider(Qt::Horizontal, widget);
+ fieldLinesSlider->setTickInterval(1);
+ fieldLinesSlider->setMinimum(1);
+ fieldLinesSlider->setValue(12);
+ fieldLinesSlider->setMaximum(128);
+
+ QSlider *arrowsSlider = new QSlider(Qt::Horizontal, widget);
+ arrowsSlider->setTickInterval(1);
+ arrowsSlider->setMinimum(8);
+ arrowsSlider->setValue(16);
+ arrowsSlider->setMaximum(32);
+
+ vLayout->addWidget(toggleRotationButton);
+ vLayout->addWidget(toggleSunButton);
+ vLayout->addWidget(new QLabel(QStringLiteral("Field Lines (1 - 128):")));
+ vLayout->addWidget(fieldLinesSlider);
+ vLayout->addWidget(new QLabel(QStringLiteral("Arrows per line (8 - 32):")));
+ vLayout->addWidget(arrowsSlider, 1, Qt::AlignTop);
+
+ ScatterDataModifier *modifier = new ScatterDataModifier(graph);
+
+ QObject::connect(toggleRotationButton, &QPushButton::clicked, modifier,
+ &ScatterDataModifier::toggleRotation);
+ QObject::connect(toggleSunButton, &QPushButton::clicked, modifier,
+ &ScatterDataModifier::toggleSun);
+ QObject::connect(fieldLinesSlider, &QSlider::valueChanged, modifier,
+ &ScatterDataModifier::setFieldLines);
+ QObject::connect(arrowsSlider, &QSlider::valueChanged, modifier,
+ &ScatterDataModifier::setArrowsPerLine);
+
+ widget->show();
+ return app.exec();
+}
diff --git a/examples/rotations/mesh/largesphere.obj b/examples/rotations/mesh/largesphere.obj
new file mode 100644
index 00000000..63101413
--- /dev/null
+++ b/examples/rotations/mesh/largesphere.obj
@@ -0,0 +1,1938 @@
+# Blender v2.66 (sub 0) OBJ File: ''
+# www.blender.org
+o Sphere_Sphere.001
+v -1.251476 7.901507 0.000000
+v -2.472136 7.608452 0.000000
+v -3.631924 7.128052 0.000000
+v -4.702282 6.472136 0.000000
+v -5.656854 5.656854 0.000000
+v -6.472136 4.702282 0.000000
+v -7.128052 3.631924 0.000000
+v -7.608452 2.472136 0.000000
+v -7.901507 1.251475 0.000000
+v -8.000000 -0.000001 0.000000
+v -7.901506 -1.251477 0.000000
+v -7.608451 -2.472138 0.000000
+v -7.128051 -3.631927 0.000000
+v -6.472134 -4.702285 0.000000
+v -5.656851 -5.656857 0.000000
+v -4.702279 -6.472138 0.000000
+v -3.631920 -7.128055 0.000000
+v -2.472131 -7.608454 0.000000
+v -1.251470 -7.901508 0.000000
+v -1.190224 7.901506 -0.386729
+v -2.351141 7.608452 -0.763934
+v -3.454165 7.128052 -1.122328
+v -4.472136 6.472136 -1.453087
+v -5.379988 5.656855 -1.748066
+v -6.155366 4.702282 -2.000002
+v -6.779180 3.631924 -2.202692
+v -7.236068 2.472136 -2.351143
+v -7.514779 1.251475 -2.441702
+v -7.608452 -0.000001 -2.472138
+v -7.514779 -1.251477 -2.441702
+v -7.236067 -2.472138 -2.351143
+v -6.779179 -3.631927 -2.202691
+v -6.155365 -4.702285 -2.000002
+v -5.379985 -5.656857 -1.748065
+v -4.472132 -6.472138 -1.453086
+v -3.454160 -7.128055 -1.122327
+v -2.351136 -7.608454 -0.763933
+v -1.190218 -7.901508 -0.386727
+v 0.000006 -8.000000 0.000000
+v -1.012464 7.901506 -0.735603
+v -1.999999 7.608452 -1.453089
+v -2.938287 7.128052 -2.134795
+v -3.804224 6.472136 -2.763936
+v -4.576490 5.656855 -3.325019
+v -5.236066 4.702282 -3.804230
+v -5.766714 3.631924 -4.189768
+v -6.155365 2.472136 -4.472140
+v -6.392451 1.251475 -4.644393
+v -6.472135 -0.000001 -4.702287
+v -6.392451 -1.251477 -4.644393
+v -6.155365 -2.472138 -4.472139
+v -5.766713 -3.631927 -4.189767
+v -5.236064 -4.702285 -3.804229
+v -4.576487 -5.656857 -3.325018
+v -3.804221 -6.472138 -2.763934
+v -2.938283 -7.128055 -2.134793
+v -1.999994 -7.608454 -1.453086
+v -1.012459 -7.901508 -0.735599
+v -0.735596 7.901506 -1.012470
+v -1.453082 7.608452 -2.000005
+v -2.134788 7.128052 -2.938294
+v -2.763928 6.472136 -3.804231
+v -3.325012 5.656855 -4.576497
+v -3.804222 4.702282 -5.236073
+v -4.189760 3.631924 -5.766721
+v -4.472132 2.472136 -6.155373
+v -4.644385 1.251475 -6.392459
+v -4.702279 -0.000001 -6.472142
+v -4.644385 -1.251477 -6.392458
+v -4.472132 -2.472138 -6.155372
+v -4.189760 -3.631927 -5.766720
+v -3.804221 -4.702285 -5.236072
+v -3.325010 -5.656857 -4.576494
+v -2.763927 -6.472138 -3.804229
+v -2.134786 -7.128055 -2.938290
+v -1.453079 -7.608454 -2.000001
+v -0.735593 -7.901508 -1.012466
+v -0.386723 7.901506 -1.190230
+v -0.763927 7.608452 -2.351147
+v -1.122321 7.128052 -3.454171
+v -1.453079 6.472136 -4.472141
+v -1.748058 5.656855 -5.379994
+v -1.999994 4.702282 -6.155373
+v -2.202683 3.631924 -6.779186
+v -2.351135 2.472136 -7.236074
+v -2.441693 1.251475 -7.514785
+v -2.472130 -0.000001 -7.608459
+v -2.441693 -1.251477 -7.514784
+v -2.351135 -2.472138 -7.236073
+v -2.202683 -3.631927 -6.779185
+v -1.999993 -4.702285 -6.155371
+v -1.748057 -5.656857 -5.379991
+v -1.453079 -6.472138 -4.472138
+v -1.122320 -7.128055 -3.454167
+v -0.763926 -7.608454 -2.351142
+v -0.386721 -7.901508 -1.190225
+v 0.000007 7.901506 -1.251482
+v 0.000007 7.608452 -2.472142
+v 0.000007 7.128052 -3.631930
+v 0.000008 6.472136 -4.702287
+v 0.000008 5.656855 -5.656860
+v 0.000008 4.702282 -6.472141
+v 0.000008 3.631924 -7.128057
+v 0.000008 2.472136 -7.608458
+v 0.000009 1.251475 -7.901512
+v 0.000009 -0.000001 -8.000006
+v 0.000009 -1.251477 -7.901511
+v 0.000008 -2.472138 -7.608456
+v 0.000008 -3.631927 -7.128057
+v 0.000008 -4.702285 -6.472139
+v 0.000008 -5.656857 -5.656857
+v 0.000007 -6.472138 -4.702284
+v 0.000007 -7.128055 -3.631926
+v 0.000007 -7.608454 -2.472137
+v 0.000007 -7.901508 -1.251476
+v 0.386736 7.901506 -1.190230
+v 0.763941 7.608452 -2.351147
+v 1.122336 7.128052 -3.454170
+v 1.453094 6.472136 -4.472140
+v 1.748074 5.656855 -5.379993
+v 2.000010 4.702282 -6.155371
+v 2.202699 3.631924 -6.779185
+v 2.351151 2.472136 -7.236073
+v 2.441710 1.251475 -7.514783
+v 2.472147 -0.000001 -7.608457
+v 2.441710 -1.251477 -7.514783
+v 2.351151 -2.472138 -7.236071
+v 2.202699 -3.631927 -6.779184
+v 2.000009 -4.702285 -6.155369
+v 1.748073 -5.656857 -5.379990
+v 1.453093 -6.472138 -4.472137
+v 1.122334 -7.128055 -3.454166
+v 0.763939 -7.608454 -2.351141
+v 0.386734 -7.901508 -1.190225
+v 0.735610 7.901506 -1.012470
+v 1.453096 7.608452 -2.000005
+v 2.134803 7.128052 -2.938292
+v 2.763942 6.472136 -3.804229
+v 3.325027 5.656855 -4.576495
+v 3.804237 4.702282 -5.236070
+v 4.189775 3.631924 -5.766718
+v 4.472148 2.472136 -6.155370
+v 4.644401 1.251475 -6.392455
+v 4.702294 -0.000001 -6.472139
+v 4.644400 -1.251477 -6.392455
+v 4.472147 -2.472138 -6.155369
+v 4.189774 -3.631927 -5.766717
+v 3.804236 -4.702285 -5.236069
+v 3.325025 -5.656857 -4.576492
+v 2.763941 -6.472138 -3.804227
+v 2.134800 -7.128055 -2.938289
+v 1.453092 -7.608454 -2.000000
+v 0.735606 -7.901508 -1.012465
+v 1.012477 7.901506 -0.735602
+v 2.000012 7.608452 -1.453088
+v 2.938301 7.128052 -2.134794
+v 3.804237 6.472136 -2.763933
+v 4.576503 5.656855 -3.325017
+v 5.236080 4.702282 -3.804226
+v 5.766727 3.631924 -4.189765
+v 6.155380 2.472136 -4.472136
+v 6.392465 1.251475 -4.644389
+v 6.472148 -0.000001 -4.702283
+v 6.392465 -1.251477 -4.644389
+v 6.155378 -2.472138 -4.472136
+v 5.766726 -3.631927 -4.189764
+v 5.236078 -4.702285 -3.804225
+v 4.576500 -5.656857 -3.325016
+v 3.804235 -6.472138 -2.763932
+v 2.938297 -7.128055 -2.134791
+v 2.000007 -7.608454 -1.453085
+v 1.012472 -7.901508 -0.735599
+v 1.190237 7.901506 -0.386729
+v 2.351154 7.608452 -0.763933
+v 3.454178 7.128052 -1.122326
+v 4.472147 6.472136 -1.453085
+v 5.380000 5.656855 -1.748063
+v 6.155379 4.702282 -1.999998
+v 6.779192 3.631924 -2.202688
+v 7.236081 2.472136 -2.351139
+v 7.514791 1.251475 -2.441698
+v 7.608464 -0.000001 -2.472134
+v 7.514791 -1.251477 -2.441698
+v 7.236079 -2.472138 -2.351139
+v 6.779191 -3.631927 -2.202688
+v 6.155377 -4.702285 -1.999998
+v 5.379997 -5.656857 -1.748063
+v 4.472144 -6.472138 -1.453084
+v 3.454173 -7.128055 -1.122325
+v 2.351148 -7.608454 -0.763931
+v 1.190231 -7.901508 -0.386727
+v 1.251488 7.901506 0.000001
+v 2.472148 7.608452 0.000001
+v 3.631936 7.128052 0.000002
+v 4.702293 6.472136 0.000002
+v 5.656866 5.656855 0.000003
+v 6.472147 4.702282 0.000004
+v 7.128063 3.631924 0.000003
+v 7.608464 2.472136 0.000004
+v 7.901517 1.251475 0.000004
+v 8.000011 -0.000001 0.000004
+v 7.901517 -1.251477 0.000004
+v 7.608462 -2.472138 0.000004
+v 7.128062 -3.631927 0.000003
+v 6.472145 -4.702285 0.000004
+v 5.656862 -5.656857 0.000002
+v 4.702290 -6.472138 0.000002
+v 3.631932 -7.128055 0.000002
+v 2.472143 -7.608454 0.000001
+v 1.251483 -7.901508 0.000001
+v 1.190236 7.901506 0.386730
+v 2.351153 7.608452 0.763935
+v 3.454176 7.128052 1.122330
+v 4.472146 6.472136 1.453089
+v 5.379998 5.656855 1.748069
+v 6.155376 4.702282 2.000005
+v 6.779190 3.631924 2.202694
+v 7.236078 2.472136 2.351147
+v 7.514788 1.251475 2.441705
+v 7.608462 -0.000001 2.472141
+v 7.514788 -1.251477 2.441705
+v 7.236076 -2.472138 2.351146
+v 6.779189 -3.631927 2.202693
+v 6.155375 -4.702285 2.000004
+v 5.379995 -5.656857 1.748067
+v 4.472143 -6.472138 1.453088
+v 3.454172 -7.128055 1.122328
+v 2.351147 -7.608454 0.763933
+v 1.190231 -7.901508 0.386728
+v 1.012476 7.901506 0.735603
+v 2.000010 7.608452 1.453090
+v 2.938298 7.128052 2.134796
+v 3.804235 6.472136 2.763937
+v 4.576499 5.656855 3.325021
+v 5.236075 4.702282 3.804232
+v 5.766723 3.631924 4.189770
+v 6.155375 2.472136 4.472143
+v 6.392460 1.251475 4.644395
+v 6.472144 -0.000001 4.702289
+v 6.392460 -1.251477 4.644395
+v 6.155374 -2.472138 4.472141
+v 5.766722 -3.631927 4.189769
+v 5.236074 -4.702285 3.804231
+v 4.576497 -5.656857 3.325018
+v 3.804232 -6.472138 2.763935
+v 2.938295 -7.128055 2.134794
+v 2.000006 -7.608454 1.453086
+v 1.012471 -7.901508 0.735600
+v 0.735608 7.901506 1.012471
+v 1.453094 7.608452 2.000006
+v 2.134799 7.128052 2.938294
+v 2.763939 6.472136 3.804232
+v 3.325022 5.656855 4.576497
+v 3.804231 4.702282 5.236074
+v 4.189770 3.631924 5.766721
+v 4.472141 2.472136 6.155374
+v 4.644393 1.251475 6.392459
+v 4.702287 -0.000001 6.472143
+v 4.644393 -1.251477 6.392459
+v 4.472141 -2.472138 6.155372
+v 4.189768 -3.631927 5.766720
+v 3.804231 -4.702285 5.236073
+v 3.325021 -5.656857 4.576494
+v 2.763937 -6.472138 3.804228
+v 2.134797 -7.128055 2.938291
+v 1.453090 -7.608454 2.000001
+v 0.735605 -7.901508 1.012466
+v 0.386735 7.901506 1.190230
+v 0.763939 7.608452 2.351147
+v 1.122332 7.128052 3.454171
+v 1.453090 6.472136 4.472141
+v 1.748069 5.656855 5.379993
+v 2.000002 4.702282 6.155373
+v 2.202693 3.631924 6.779186
+v 2.351144 2.472136 7.236073
+v 2.441703 1.251475 7.514784
+v 2.472139 -0.000001 7.608459
+v 2.441703 -1.251477 7.514784
+v 2.351144 -2.472138 7.236072
+v 2.202692 -3.631927 6.779184
+v 2.000003 -4.702285 6.155371
+v 1.748068 -5.656857 5.379990
+v 1.453089 -6.472138 4.472137
+v 1.122331 -7.128055 3.454167
+v 0.763937 -7.608454 2.351141
+v 0.386733 -7.901508 1.190225
+v 0.000005 7.901506 1.251482
+v 0.000005 7.608452 2.472142
+v 0.000004 7.128052 3.631929
+v 0.000003 6.472136 4.702286
+v 0.000003 5.656855 5.656859
+v 0.000001 4.702282 6.472140
+v 0.000002 3.631924 7.128057
+v 0.000001 2.472136 7.608456
+v 0.000001 1.251475 7.901510
+v 0.000000 -0.000001 8.000005
+v 0.000001 -1.251477 7.901510
+v 0.000002 -2.472138 7.608455
+v 0.000001 -3.631927 7.128055
+v 0.000002 -4.702285 6.472138
+v 0.000003 -5.656857 5.656855
+v 0.000004 -6.472138 4.702283
+v 0.000004 -7.128055 3.631925
+v 0.000005 -7.608454 2.472136
+v 0.000006 -7.901508 1.251476
+v -0.386724 7.901506 1.190230
+v -0.763929 7.608452 2.351146
+v -1.122324 7.128052 3.454169
+v -1.453083 6.472136 4.472139
+v -1.748063 5.656855 5.379992
+v -2.000000 4.702282 6.155369
+v -2.202688 3.631924 6.779183
+v -2.351142 2.472136 7.236070
+v -2.441700 1.251475 7.514781
+v -2.472137 -0.000001 7.608455
+v -2.441700 -1.251477 7.514781
+v -2.351140 -2.472138 7.236069
+v -2.202689 -3.631927 6.779181
+v -1.999999 -4.702285 6.155367
+v -1.748061 -5.656857 5.379988
+v -1.453082 -6.472138 4.472136
+v -1.122323 -7.128055 3.454165
+v -0.763927 -7.608454 2.351140
+v -0.386722 -7.901508 1.190224
+v -0.735597 7.901506 1.012470
+v -1.453084 7.608452 2.000003
+v -2.134790 7.128052 2.938291
+v -2.763931 6.472136 3.804227
+v -3.325015 5.656855 4.576493
+v -3.804227 4.702282 5.236067
+v -4.189764 3.631924 5.766716
+v -4.472137 2.472136 6.155366
+v -4.644390 1.251475 6.392452
+v -4.702284 -0.000001 6.472136
+v -4.644390 -1.251477 6.392452
+v -4.472136 -2.472138 6.155365
+v -4.189764 -3.631927 5.766714
+v -3.804225 -4.702285 5.236066
+v -3.325012 -5.656857 4.576489
+v -2.763929 -6.472138 3.804224
+v -2.134788 -7.128055 2.938287
+v -1.453080 -7.608454 1.999999
+v -0.735594 -7.901508 1.012465
+v 0.000001 8.000000 0.000004
+v -1.012464 7.901506 0.735602
+v -1.999999 7.608452 1.453087
+v -2.938287 7.128052 2.134792
+v -3.804225 6.472136 2.763931
+v -4.576491 5.656855 3.325015
+v -5.236069 4.702282 3.804223
+v -5.766715 3.631924 4.189762
+v -6.155367 2.472136 4.472132
+v -6.392453 1.251475 4.644385
+v -6.472137 -0.000001 4.702279
+v -6.392453 -1.251477 4.644385
+v -6.155365 -2.472138 4.472132
+v -5.766714 -3.631927 4.189760
+v -5.236066 -4.702285 3.804223
+v -4.576488 -5.656857 3.325012
+v -3.804222 -6.472138 2.763929
+v -2.938284 -7.128055 2.134789
+v -1.999995 -7.608454 1.453083
+v -1.012460 -7.901508 0.735598
+v -1.190224 7.901506 0.386728
+v -2.351140 7.608452 0.763932
+v -3.454164 7.128052 1.122325
+v -4.472135 6.472136 1.453082
+v -5.379988 5.656855 1.748062
+v -6.155366 4.702282 1.999995
+v -6.779179 3.631924 2.202685
+v -7.236067 2.472136 2.351135
+v -7.514778 1.251475 2.441694
+v -7.608452 -0.000001 2.472130
+v -7.514778 -1.251477 2.441694
+v -7.236065 -2.472138 2.351135
+v -6.779178 -3.631927 2.202684
+v -6.155364 -4.702285 1.999995
+v -5.379983 -5.656857 1.748060
+v -4.472131 -6.472138 1.453082
+v -3.454160 -7.128055 1.122324
+v -2.351135 -7.608454 0.763930
+v -1.190218 -7.901508 0.386726
+vt 0.035483 0.289114
+vt 0.042491 0.337738
+vt 0.007397 0.296413
+vt 0.063422 0.533643
+vt 0.068439 0.582662
+vt 0.015908 0.545902
+vt 0.097669 0.776914
+vt 0.111929 0.824070
+vt 0.027296 0.795217
+vt 0.391159 0.929226
+vt 0.461397 0.895775
+vt 0.452242 0.950225
+vt 0.026572 0.240871
+vt 0.004734 0.246573
+vt 0.058567 0.484592
+vt 0.014398 0.495993
+vt 0.087726 0.728878
+vt 0.023823 0.745426
+vt 0.270350 0.936037
+vt 0.231553 0.980467
+vt 0.014254 0.193317
+vt 0.001048 0.196795
+vt 0.053639 0.435556
+vt 0.012882 0.446084
+vt 0.080129 0.680372
+vt 0.021272 0.695580
+vt 0.178869 0.909944
+vt 0.068145 0.942733
+vt 0.048386 0.386583
+vt 0.011281 0.396180
+vt 0.073887 0.631595
+vt 0.019234 0.645702
+vt 0.135028 0.869370
+vt 0.042415 0.894305
+vt 0.009500 0.346287
+vt 0.017489 0.595807
+vt 0.032618 0.844897
+vt 0.484179 0.902186
+vt 0.550590 0.948315
+vt 1.004734 0.246573
+vt 1.007397 0.296413
+vt 0.982704 0.246140
+vt 1.014398 0.495993
+vt 1.015908 0.545902
+vt 0.969883 0.495119
+vt 1.023823 0.745426
+vt 1.027296 0.795217
+vt 0.957447 0.744128
+vt 1.231553 0.980467
+vt 0.750122 0.974207
+vt 1.001048 0.196795
+vt 0.987598 0.196530
+vt 1.012882 0.446084
+vt 0.971892 0.445278
+vt 1.021272 0.695580
+vt 0.960802 0.694395
+vt 1.068145 0.942733
+vt 0.901563 0.939596
+vt 1.011281 0.396180
+vt 0.974014 0.395447
+vt 1.019234 0.645702
+vt 0.963490 0.644610
+vt 1.042415 0.894305
+vt 0.933349 0.892198
+vt 1.009500 0.346287
+vt 0.976377 0.345635
+vt 1.017489 0.595807
+vt 0.965794 0.594793
+vt 1.032618 0.844897
+vt 0.945957 0.843211
+vt 0.979169 0.295858
+vt 0.967884 0.544959
+vt 0.952893 0.793765
+vt 0.960930 0.239587
+vt 0.925822 0.482052
+vt 0.894284 0.725297
+vt 0.716363 0.929856
+vt 0.974473 0.192535
+vt 0.931207 0.433203
+vt 0.902436 0.677050
+vt 0.801451 0.904132
+vt 0.936960 0.384433
+vt 0.909171 0.628493
+vt 0.844888 0.864413
+vt 0.943427 0.335818
+vt 0.915075 0.579756
+vt 0.868695 0.819731
+vt 0.951128 0.287472
+vt 0.920529 0.530922
+vt 0.883697 0.773009
+vt 0.509882 0.901680
+vt 0.603672 0.925341
+vt 0.939868 0.227168
+vt 0.882765 0.457977
+vt 0.837646 0.692981
+vt 0.690972 0.886830
+vt 0.962264 0.185007
+vt 0.891191 0.410771
+vt 0.848554 0.646630
+vt 0.746350 0.860374
+vt 0.900372 0.363822
+vt 0.857974 0.599764
+vt 0.782623 0.823943
+vt 0.910879 0.317332
+vt 0.866529 0.552601
+vt 0.806908 0.782514
+vt 0.923572 0.271605
+vt 0.874667 0.505296
+vt 0.824298 0.738476
+vt 0.531785 0.894399
+vt 0.616896 0.895419
+vt 0.840708 0.424882
+vt 0.787319 0.652419
+vt 0.666434 0.846117
+vt 0.951650 0.174333
+vt 0.851788 0.379552
+vt 0.799275 0.607479
+vt 0.706276 0.816232
+vt 0.864196 0.334814
+vt 0.810089 0.562030
+vt 0.735147 0.779653
+vt 0.878757 0.291055
+vt 0.820304 0.516318
+vt 0.756661 0.739218
+vt 0.896714 0.248885
+vt 0.830369 0.470540
+vt 0.773481 0.696510
+vt 0.545835 0.882162
+vt 0.613251 0.864748
+vt 0.920019 0.209353
+vt 0.601814 0.835743
+vt 0.902011 0.186799
+vt 0.798974 0.385208
+vt 0.741339 0.608286
+vt 0.641659 0.808678
+vt 0.812374 0.341530
+vt 0.753261 0.563866
+vt 0.671741 0.774500
+vt 0.827915 0.298950
+vt 0.764518 0.519117
+vt 0.694750 0.736000
+vt 0.846764 0.258126
+vt 0.775586 0.474273
+vt 0.713019 0.694862
+vt 0.551827 0.867272
+vt 0.551336 0.851697
+vt 0.870653 0.220135
+vt 0.786910 0.429557
+vt 0.728181 0.652086
+vt 0.943465 0.161100
+vt 0.886800 0.160336
+vt 0.756203 0.341667
+vt 0.697515 0.564418
+vt 0.616262 0.775491
+vt 0.771631 0.298973
+vt 0.708699 0.519594
+vt 0.639253 0.736889
+vt 0.790354 0.258010
+vt 0.719689 0.474675
+vt 0.657473 0.695657
+vt 0.814109 0.219846
+vt 0.730930 0.429879
+vt 0.672573 0.652794
+vt 0.546100 0.836912
+vt 0.845356 0.186292
+vt 0.742904 0.385443
+vt 0.685664 0.608914
+vt 0.586129 0.809772
+vt 0.938802 0.146131
+vt 0.876174 0.131001
+vt 0.710309 0.297343
+vt 0.654008 0.524127
+vt 0.590087 0.747535
+vt 0.727302 0.254538
+vt 0.663845 0.478153
+vt 0.607276 0.704820
+vt 0.749262 0.214082
+vt 0.673880 0.432264
+vt 0.621259 0.660654
+vt 0.779077 0.177660
+vt 0.684564 0.386653
+vt 0.643951 0.570007
+vt 0.537514 0.823995
+vt 0.820645 0.148333
+vt 0.696450 0.341564
+vt 0.567816 0.787838
+vt 0.658464 0.256085
+vt 0.609517 0.490486
+vt 0.563122 0.725732
+vt 0.700288 0.169995
+vt 0.617324 0.442954
+vt 0.575103 0.679574
+vt 0.625569 0.395564
+vt 0.633223 0.615598
+vt 0.585045 0.632740
+vt 0.737701 0.133357
+vt 0.634697 0.348462
+vt 0.601779 0.538040
+vt 0.526630 0.813733
+vt 0.796084 0.107238
+vt 0.645335 0.301858
+vt 0.547763 0.770746
+vt 0.939113 0.130553
+vt 0.874144 0.100247
+vt 0.563421 0.466357
+vt 0.535483 0.710885
+vt 0.675759 0.211740
+vt 0.635028 0.130630
+vt 0.568439 0.417338
+vt 0.542491 0.662261
+vt 0.573887 0.368405
+vt 0.593757 0.585502
+vt 0.548386 0.613416
+vt 0.678869 0.090056
+vt 0.580129 0.319628
+vt 0.558567 0.515408
+vt 0.514254 0.806683
+vt 0.770350 0.063964
+vt 0.587726 0.271122
+vt 0.526572 0.759129
+vt 0.946160 0.115905
+vt 0.891158 0.070774
+vt 0.597669 0.223086
+vt 0.611929 0.175930
+vt 0.542415 0.105695
+vt 0.517489 0.404193
+vt 0.509500 0.653713
+vt 0.519234 0.354298
+vt 0.553639 0.564444
+vt 0.511281 0.603820
+vt 0.568145 0.057267
+vt 0.521272 0.304420
+vt 0.514398 0.504007
+vt 0.501048 0.803204
+vt 0.731552 0.019533
+vt 0.523822 0.254574
+vt 0.504734 0.753426
+vt 0.961397 0.104224
+vt 0.952242 0.049775
+vt 0.527296 0.204783
+vt 0.515908 0.454098
+vt 0.507397 0.703586
+vt 0.532618 0.155103
+vt 0.433350 0.107802
+vt 0.465794 0.405207
+vt 0.476377 0.654364
+vt 0.463490 0.355390
+vt 0.512882 0.553916
+vt 0.474014 0.604552
+vt 0.401564 0.060404
+vt 0.460802 0.305605
+vt 0.469884 0.504881
+vt 0.487599 0.803469
+vt 1.250123 0.025793
+vt 0.457447 0.255872
+vt 0.482704 0.753860
+vt 0.984179 0.097813
+vt 1.050589 0.051685
+vt 0.452893 0.206235
+vt 0.467885 0.455040
+vt 0.479169 0.704142
+vt 0.445957 0.156790
+vt 0.344888 0.135587
+vt 0.415075 0.420244
+vt 0.443428 0.664182
+vt 0.409171 0.371507
+vt 0.471892 0.554721
+vt 0.436960 0.615567
+vt 0.250123 0.025793
+vt 0.301452 0.095868
+vt 0.402437 0.322950
+vt 0.425822 0.517948
+vt 0.474473 0.807464
+vt 0.050589 0.051685
+vt 0.216363 0.070144
+vt 0.394284 0.274702
+vt 0.460930 0.760413
+vt 0.009882 0.098319
+vt 0.103671 0.074658
+vt 0.383698 0.226991
+vt 0.420529 0.469078
+vt 0.451128 0.712528
+vt 0.366529 0.447399
+vt 0.410880 0.682668
+vt 0.282623 0.176056
+vt 0.357975 0.400236
+vt 0.431207 0.566797
+vt 0.400372 0.636177
+vt 0.246351 0.139626
+vt 0.348554 0.353370
+vt 0.382765 0.542022
+vt 0.462264 0.814992
+vt 0.190972 0.113170
+vt 0.337646 0.307019
+vt 0.439868 0.772831
+vt 0.031785 0.105600
+vt 0.116896 0.104580
+vt 0.368695 0.180269
+vt 0.324298 0.261524
+vt 0.374667 0.494704
+vt 0.423573 0.728394
+vt 0.306908 0.217486
+vt 0.378757 0.708945
+vt 0.235147 0.220346
+vt 0.310089 0.437969
+vt 0.391191 0.589229
+vt 0.364196 0.665186
+vt 0.206276 0.183767
+vt 0.299275 0.392521
+vt 0.340709 0.575117
+vt 0.451650 0.825666
+vt 0.166434 0.153882
+vt 0.287319 0.347580
+vt 0.420019 0.790647
+vt 0.045835 0.117837
+vt 0.113250 0.135252
+vt 0.273481 0.303490
+vt 0.330370 0.529459
+vt 0.396715 0.751114
+vt 0.256661 0.260781
+vt 0.320304 0.483681
+vt 0.171741 0.225499
+vt 0.253261 0.436134
+vt 0.351788 0.620448
+vt 0.312374 0.658470
+vt 0.141659 0.191322
+vt 0.241339 0.391714
+vt 0.402011 0.813201
+vt 0.101814 0.164257
+vt 0.228181 0.347914
+vt 0.286910 0.570443
+vt 0.370653 0.779864
+vt 0.051826 0.132727
+vt 0.051336 0.148303
+vt 0.213019 0.305137
+vt 0.275586 0.525726
+vt 0.346765 0.741874
+vt 0.194750 0.264000
+vt 0.264518 0.480883
+vt 0.327915 0.701050
+vt 0.139253 0.263111
+vt 0.208699 0.480406
+vt 0.271631 0.701027
+vt 0.116262 0.224508
+vt 0.197515 0.435582
+vt 0.298975 0.614792
+vt 0.443465 0.838899
+vt 0.386800 0.839664
+vt 0.086129 0.190228
+vt 0.185664 0.391086
+vt 0.242904 0.614557
+vt 0.345357 0.813708
+vt 0.046099 0.163088
+vt 0.172573 0.347205
+vt 0.230930 0.570121
+vt 0.314109 0.780154
+vt 0.157473 0.304343
+vt 0.219689 0.525325
+vt 0.290354 0.741990
+vt 0.107276 0.295180
+vt 0.163845 0.521847
+vt 0.227302 0.745462
+vt 0.090087 0.252465
+vt 0.154008 0.475873
+vt 0.256203 0.658333
+vt 0.438803 0.853868
+vt 0.376175 0.868999
+vt 0.067816 0.212161
+vt 0.143951 0.429993
+vt 0.196450 0.658436
+vt 0.320646 0.851667
+vt 0.037514 0.176004
+vt 0.133223 0.384401
+vt 0.184564 0.613347
+vt 0.279077 0.822340
+vt 0.121259 0.339345
+vt 0.173881 0.567736
+vt 0.249262 0.785918
+vt 0.175759 0.788260
+vt 0.063122 0.274267
+vt 0.109517 0.509514
+vt 0.210309 0.702657
+vt 0.439113 0.869447
+vt 0.374144 0.899752
+vt 0.047763 0.229253
+vt 0.101779 0.461959
+vt 0.145335 0.698142
+vt 0.296085 0.892762
+vt 0.026630 0.186267
+vt 0.093757 0.414497
+vt 0.134697 0.651538
+vt 0.237701 0.866643
+vt 0.085045 0.367260
+vt 0.125569 0.604436
+vt 0.200288 0.830006
+vt 0.075103 0.320425
+vt 0.117324 0.557046
+vt 0.995265 0.147143
+vt 1.014254 0.193317
+vt 0.495265 0.852856
+vt 1.009882 0.098319
+vt 1.031785 0.105600
+vt 1.045835 0.117837
+vt 1.051826 0.132727
+vt 1.051336 0.148303
+vt 1.046099 0.163088
+vt 1.037514 0.176004
+vt 0.446160 0.884095
+vt 1.026630 0.186267
+vt 0.158464 0.743915
+vn -0.460158 -0.887814 0.000000
+vn -0.592853 -0.805292 0.000000
+vn -0.437635 -0.887814 -0.142186
+vn -0.951781 -0.306742 0.000000
+vn -0.987854 -0.155217 0.000000
+vn -0.905179 -0.306742 -0.294107
+vn -0.892575 0.450850 0.000000
+vn -0.811670 0.584063 0.000000
+vn -0.848903 0.450850 -0.275826
+vn -0.316050 0.948729 0.000000
+vn -0.164068 0.986419 0.000000
+vn -0.300577 0.948729 -0.097659
+vn -0.316050 -0.948729 0.000000
+vn -0.300577 -0.948729 -0.097659
+vn -0.892575 -0.450850 0.000000
+vn -0.848903 -0.450850 -0.275826
+vn -0.951781 0.306742 0.000000
+vn -0.905179 0.306742 -0.294107
+vn -0.460158 0.887814 0.000000
+vn -0.437635 0.887814 -0.142186
+vn -0.164068 -0.986419 0.000000
+vn -0.156011 -0.986419 -0.050691
+vn -0.811670 -0.584063 0.000000
+vn -0.771935 -0.584063 -0.250801
+vn -0.987854 0.155217 0.000000
+vn -0.939512 0.155217 -0.305246
+vn -0.592853 0.805292 0.000000
+vn -0.563829 0.805292 -0.183203
+vn -0.710959 -0.703207 0.000000
+vn -0.676168 -0.703207 -0.219703
+vn -1.000000 0.000000 0.000000
+vn -0.951048 0.000000 -0.309000
+vn -0.710959 0.703207 0.000000
+vn -0.676168 0.703207 -0.219703
+vn -0.563829 -0.805292 -0.183203
+vn -0.939512 -0.155217 -0.305246
+vn -0.771935 0.584063 -0.250801
+vn -0.156011 0.986419 -0.050691
+vn -0.255684 0.948729 -0.185766
+vn -0.255684 -0.948729 -0.185766
+vn -0.722098 -0.450850 -0.524644
+vn -0.770012 0.306742 -0.559435
+vn -0.372265 0.887814 -0.270455
+vn -0.132725 -0.986419 -0.096408
+vn -0.656667 -0.584063 -0.477096
+vn -0.799188 0.155217 -0.580645
+vn -0.479629 0.805292 -0.348460
+vn -0.575182 -0.703207 -0.417890
+vn -0.809015 0.000000 -0.587756
+vn -0.575182 0.703207 -0.417890
+vn -0.479629 -0.805292 -0.348460
+vn -0.799188 -0.155217 -0.580645
+vn -0.656667 0.584063 -0.477096
+vn -0.372265 -0.887814 -0.270455
+vn -0.770012 -0.306742 -0.559435
+vn -0.722098 0.450850 -0.524644
+vn -0.185766 -0.948729 -0.255684
+vn -0.524644 -0.450850 -0.722098
+vn -0.559435 0.306742 -0.770012
+vn -0.270455 0.887814 -0.372265
+vn -0.096408 -0.986419 -0.132725
+vn -0.477096 -0.584063 -0.656667
+vn -0.580645 0.155217 -0.799188
+vn -0.348460 0.805292 -0.479629
+vn -0.417890 -0.703207 -0.575182
+vn -0.587756 0.000000 -0.809015
+vn -0.417890 0.703207 -0.575182
+vn -0.348460 -0.805292 -0.479629
+vn -0.580645 -0.155217 -0.799188
+vn -0.477096 0.584063 -0.656667
+vn -0.270455 -0.887814 -0.372265
+vn -0.559435 -0.306742 -0.770012
+vn -0.524644 0.450850 -0.722098
+vn -0.132725 0.986419 -0.096408
+vn -0.185766 0.948729 -0.255684
+vn -0.097659 -0.948729 -0.300577
+vn -0.275826 -0.450850 -0.848903
+vn -0.294107 0.306742 -0.905179
+vn -0.142186 0.887814 -0.437635
+vn -0.050691 -0.986419 -0.156011
+vn -0.250801 -0.584063 -0.771935
+vn -0.305246 0.155217 -0.939512
+vn -0.183203 0.805292 -0.563829
+vn -0.219703 -0.703207 -0.676168
+vn -0.309000 0.000000 -0.951048
+vn -0.219703 0.703207 -0.676168
+vn -0.183203 -0.805292 -0.563829
+vn -0.305246 -0.155217 -0.939512
+vn -0.250801 0.584063 -0.771935
+vn -0.142186 -0.887814 -0.437635
+vn -0.294107 -0.306742 -0.905179
+vn -0.275826 0.450850 -0.848903
+vn -0.096408 0.986419 -0.132725
+vn -0.097659 0.948729 -0.300577
+vn 0.000000 -0.450850 -0.892575
+vn 0.000000 0.306742 -0.951781
+vn 0.000000 0.887814 -0.460158
+vn 0.000000 -0.986419 -0.164068
+vn 0.000000 -0.584063 -0.811670
+vn 0.000000 0.155217 -0.987854
+vn 0.000000 0.805292 -0.592853
+vn 0.000000 -0.703207 -0.710959
+vn 0.000000 0.000000 -1.000000
+vn 0.000000 0.703207 -0.710959
+vn 0.000000 -0.805292 -0.592853
+vn 0.000000 -0.155217 -0.987854
+vn 0.000000 0.584063 -0.811670
+vn 0.000000 -0.887814 -0.460158
+vn 0.000000 -0.306742 -0.951781
+vn 0.000000 0.450850 -0.892575
+vn -0.050691 0.986419 -0.156011
+vn 0.000000 0.948729 -0.316050
+vn 0.000000 -0.948729 -0.316050
+vn 0.097659 0.948729 -0.300577
+vn 0.097659 -0.948729 -0.300577
+vn 0.275826 -0.450850 -0.848903
+vn 0.294107 0.306742 -0.905179
+vn 0.142186 0.887814 -0.437635
+vn 0.250801 -0.584063 -0.771935
+vn 0.305246 0.155217 -0.939512
+vn 0.183203 0.805292 -0.563829
+vn 0.219703 -0.703207 -0.676168
+vn 0.309000 0.000000 -0.951048
+vn 0.219703 0.703207 -0.676168
+vn 0.183203 -0.805292 -0.563829
+vn 0.305246 -0.155217 -0.939512
+vn 0.250801 0.584063 -0.771935
+vn 0.000000 0.986419 -0.164068
+vn 0.050691 0.986419 -0.156011
+vn 0.142186 -0.887814 -0.437635
+vn 0.294107 -0.306742 -0.905179
+vn 0.275826 0.450850 -0.848903
+vn 0.050691 -0.986419 -0.156011
+vn 0.185766 -0.948729 -0.255684
+vn 0.524644 -0.450850 -0.722098
+vn 0.559435 0.306742 -0.770012
+vn 0.270455 0.887814 -0.372265
+vn 0.477096 -0.584063 -0.656667
+vn 0.580645 0.155217 -0.799188
+vn 0.348460 0.805292 -0.479629
+vn 0.417890 -0.703207 -0.575182
+vn 0.587756 0.000000 -0.809015
+vn 0.417890 0.703207 -0.575182
+vn 0.348460 -0.805292 -0.479629
+vn 0.580645 -0.155217 -0.799188
+vn 0.477096 0.584063 -0.656667
+vn 0.096408 0.986419 -0.132725
+vn 0.270455 -0.887814 -0.372265
+vn 0.559435 -0.306742 -0.770012
+vn 0.524644 0.450850 -0.722098
+vn 0.185766 0.948729 -0.255684
+vn 0.096408 -0.986419 -0.132725
+vn 0.255684 -0.948729 -0.185766
+vn 0.722098 -0.450850 -0.524644
+vn 0.770012 0.306742 -0.559435
+vn 0.372265 0.887814 -0.270455
+vn 0.656667 -0.584063 -0.477096
+vn 0.799188 0.155217 -0.580645
+vn 0.479629 0.805292 -0.348460
+vn 0.575182 -0.703207 -0.417890
+vn 0.809015 0.000000 -0.587756
+vn 0.575182 0.703207 -0.417890
+vn 0.479629 -0.805292 -0.348460
+vn 0.799188 -0.155217 -0.580645
+vn 0.722098 0.450850 -0.524644
+vn 0.132725 0.986419 -0.096408
+vn 0.372265 -0.887814 -0.270455
+vn 0.770012 -0.306742 -0.559435
+vn 0.255684 0.948729 -0.185766
+vn 0.848903 -0.450850 -0.275826
+vn 0.905179 0.306742 -0.294107
+vn 0.437635 0.887814 -0.142186
+vn 0.676168 -0.703207 -0.219703
+vn 0.939512 0.155217 -0.305246
+vn 0.563829 0.805292 -0.183203
+vn 0.951048 0.000000 -0.309000
+vn 0.656667 0.584063 -0.477096
+vn 0.676168 0.703207 -0.219703
+vn 0.563829 -0.805292 -0.183203
+vn 0.939512 -0.155217 -0.305246
+vn 0.848903 0.450850 -0.275826
+vn 0.156011 0.986419 -0.050691
+vn 0.437635 -0.887814 -0.142186
+vn 0.905179 -0.306742 -0.294107
+vn 0.300577 0.948729 -0.097659
+vn 0.132725 -0.986419 -0.096408
+vn 0.300577 -0.948729 -0.097659
+vn 0.951781 0.306742 0.000000
+vn 0.460158 0.887814 0.000000
+vn 0.771935 -0.584063 -0.250801
+vn 0.710959 -0.703207 0.000000
+vn 0.987854 0.155217 0.000000
+vn 0.592853 0.805292 0.000000
+vn 1.000000 0.000000 0.000000
+vn 0.771935 0.584063 -0.250801
+vn 0.710959 0.703207 0.000000
+vn 0.592853 -0.805292 0.000000
+vn 0.987854 -0.155217 0.000000
+vn 0.892575 0.450850 0.000000
+vn 0.164068 0.986419 0.000000
+vn 0.460158 -0.887814 0.000000
+vn 0.951781 -0.306742 0.000000
+vn 0.316050 0.948729 0.000000
+vn 0.156011 -0.986419 -0.050691
+vn 0.316050 -0.948729 0.000000
+vn 0.892575 -0.450850 0.000000
+vn 0.811670 -0.584063 0.000000
+vn 0.676168 -0.703207 0.219703
+vn 0.939512 0.155217 0.305246
+vn 0.563829 0.805292 0.183203
+vn 0.951048 0.000000 0.309000
+vn 0.811670 0.584063 0.000000
+vn 0.676168 0.703207 0.219703
+vn 0.563829 -0.805292 0.183203
+vn 0.939512 -0.155217 0.305246
+vn 0.848903 0.450850 0.275826
+vn 0.156011 0.986419 0.050691
+vn 0.437635 -0.887814 0.142186
+vn 0.905179 -0.306742 0.294107
+vn 0.300577 0.948729 0.097659
+vn 0.164068 -0.986419 0.000000
+vn 0.300577 -0.948729 0.097659
+vn 0.848903 -0.450850 0.275826
+vn 0.905179 0.306742 0.294107
+vn 0.437635 0.887814 0.142186
+vn 0.771935 -0.584063 0.250801
+vn 0.575182 -0.703207 0.417890
+vn 0.799188 0.155217 0.580645
+vn 0.479629 0.805292 0.348460
+vn 0.809015 0.000000 0.587756
+vn 0.771935 0.584063 0.250801
+vn 0.575182 0.703207 0.417890
+vn 0.479629 -0.805292 0.348460
+vn 0.799188 -0.155217 0.580645
+vn 0.722098 0.450850 0.524644
+vn 0.132725 0.986419 0.096408
+vn 0.372265 -0.887814 0.270455
+vn 0.770012 -0.306742 0.559435
+vn 0.255684 0.948729 0.185766
+vn 0.156011 -0.986419 0.050691
+vn 0.255684 -0.948729 0.185766
+vn 0.722098 -0.450850 0.524644
+vn 0.770012 0.306742 0.559435
+vn 0.372265 0.887814 0.270455
+vn 0.656667 -0.584063 0.477096
+vn 0.417890 -0.703207 0.575182
+vn 0.580645 0.155217 0.799188
+vn 0.348460 0.805292 0.479629
+vn 0.587756 0.000000 0.809015
+vn 0.656667 0.584063 0.477096
+vn 0.417890 0.703207 0.575182
+vn 0.348460 -0.805292 0.479629
+vn 0.580645 -0.155217 0.799188
+vn 0.524644 0.450850 0.722098
+vn 0.096408 0.986419 0.132725
+vn 0.270455 -0.887814 0.372265
+vn 0.559435 -0.306742 0.770012
+vn 0.185766 0.948729 0.255684
+vn 0.132725 -0.986419 0.096408
+vn 0.185766 -0.948729 0.255684
+vn 0.524644 -0.450850 0.722098
+vn 0.559435 0.306742 0.770012
+vn 0.270455 0.887814 0.372265
+vn 0.305246 0.155217 0.939512
+vn 0.183203 0.805292 0.563829
+vn 0.219703 -0.703207 0.676168
+vn 0.309000 0.000000 0.951048
+vn 0.477096 0.584063 0.656667
+vn 0.219703 0.703207 0.676168
+vn 0.183203 -0.805292 0.563829
+vn 0.305246 -0.155217 0.939512
+vn 0.275826 0.450850 0.848903
+vn 0.050691 0.986419 0.156011
+vn 0.142186 -0.887814 0.437635
+vn 0.294107 -0.306742 0.905179
+vn 0.097659 0.948729 0.300577
+vn 0.096408 -0.986419 0.132725
+vn 0.097659 -0.948729 0.300577
+vn 0.477096 -0.584063 0.656667
+vn 0.275826 -0.450850 0.848903
+vn 0.294107 0.306742 0.905179
+vn 0.142186 0.887814 0.437635
+vn 0.250801 -0.584063 0.771935
+vn 0.000000 0.805292 0.592853
+vn 0.000000 -0.703207 0.710959
+vn 0.000000 0.000000 1.000000
+vn 0.250801 0.584063 0.771935
+vn 0.000000 0.703207 0.710959
+vn 0.000000 -0.805292 0.592853
+vn 0.000000 -0.155217 0.987854
+vn 0.000000 0.450850 0.892575
+vn 0.000000 0.986419 0.164068
+vn 0.000000 -0.887814 0.460158
+vn 0.000000 -0.306742 0.951781
+vn 0.000000 0.948729 0.316050
+vn 0.050691 -0.986419 0.156011
+vn 0.000000 -0.948729 0.316050
+vn 0.000000 -0.450850 0.892575
+vn 0.000000 0.306742 0.951781
+vn 0.000000 0.887814 0.460158
+vn 0.000000 -0.584063 0.811670
+vn 0.000000 0.155217 0.987854
+vn -0.183203 -0.805292 0.563829
+vn -0.305246 -0.155217 0.939512
+vn 0.000000 0.584063 0.811670
+vn -0.250801 0.584063 0.771935
+vn -0.142186 -0.887814 0.437635
+vn -0.294107 -0.306742 0.905179
+vn -0.097659 0.948729 0.300577
+vn -0.097659 -0.948729 0.300577
+vn -0.275826 -0.450850 0.848903
+vn -0.294107 0.306742 0.905179
+vn -0.142186 0.887814 0.437635
+vn 0.000000 -0.986419 0.164068
+vn -0.050691 -0.986419 0.156011
+vn -0.250801 -0.584063 0.771935
+vn -0.305246 0.155217 0.939512
+vn -0.183203 0.805292 0.563829
+vn -0.219703 -0.703207 0.676168
+vn -0.309000 0.000000 0.951048
+vn -0.219703 0.703207 0.676168
+vn -0.348460 -0.805292 0.479629
+vn -0.580645 -0.155217 0.799188
+vn -0.477096 0.584063 0.656667
+vn -0.270455 -0.887814 0.372265
+vn -0.559435 -0.306742 0.770012
+vn -0.275826 0.450850 0.848903
+vn -0.050691 0.986419 0.156011
+vn -0.185766 0.948729 0.255684
+vn -0.185766 -0.948729 0.255684
+vn -0.524644 -0.450850 0.722098
+vn -0.559435 0.306742 0.770012
+vn -0.270455 0.887814 0.372265
+vn -0.096408 -0.986419 0.132725
+vn -0.477096 -0.584063 0.656667
+vn -0.580645 0.155217 0.799188
+vn -0.348460 0.805292 0.479629
+vn -0.417890 -0.703207 0.575182
+vn -0.587756 0.000000 0.809015
+vn -0.417890 0.703207 0.575182
+vn -0.479629 -0.805292 0.348460
+vn -0.799188 -0.155217 0.580645
+vn -0.656667 0.584063 0.477096
+vn -0.372265 -0.887814 0.270455
+vn -0.770012 -0.306742 0.559435
+vn -0.524644 0.450850 0.722098
+vn -0.096408 0.986419 0.132725
+vn -0.255684 0.948729 0.185766
+vn -0.255684 -0.948729 0.185766
+vn -0.722098 -0.450850 0.524644
+vn -0.770012 0.306742 0.559435
+vn -0.372265 0.887814 0.270455
+vn -0.132725 -0.986419 0.096408
+vn -0.656667 -0.584063 0.477096
+vn -0.799188 0.155217 0.580645
+vn -0.479629 0.805292 0.348460
+vn -0.575182 -0.703207 0.417890
+vn -0.809015 0.000000 0.587756
+vn -0.575182 0.703207 0.417890
+vn -0.771935 0.584063 0.250801
+vn -0.437635 -0.887814 0.142186
+vn -0.905179 -0.306742 0.294107
+vn -0.722098 0.450850 0.524644
+vn -0.132725 0.986419 0.096408
+vn -0.300577 0.948729 0.097659
+vn -0.300577 -0.948729 0.097659
+vn -0.848903 -0.450850 0.275826
+vn -0.905179 0.306742 0.294107
+vn -0.437635 0.887814 0.142186
+vn -0.156011 -0.986419 0.050691
+vn -0.771935 -0.584063 0.250801
+vn -0.939512 0.155217 0.305246
+vn -0.563829 0.805292 0.183203
+vn -0.676168 -0.703207 0.219703
+vn -0.951048 0.000000 0.309000
+vn -0.676168 0.703207 0.219703
+vn -0.563829 -0.805292 0.183203
+vn -0.939512 -0.155217 0.305246
+vn 0.000000 -0.999969 0.000000
+vn 0.000000 1.000000 0.000000
+vn -0.156011 0.986419 0.050691
+vn -0.848903 0.450850 0.275826
+s 1
+f 17/1/1 16/2/2 36/3/3
+f 12/4/4 11/5/5 31/6/6
+f 7/7/7 6/8/8 26/9/9
+f 2/10/10 1/11/11 21/12/12
+f 18/13/13 17/1/1 37/14/14
+f 13/15/15 12/4/4 32/16/16
+f 8/17/17 7/7/7 27/18/18
+f 3/19/19 2/10/10 22/20/20
+f 19/21/21 18/13/13 38/22/22
+f 14/23/23 13/15/15 33/24/24
+f 9/25/25 8/17/17 28/26/26
+f 4/27/27 3/19/19 23/28/28
+f 15/29/29 14/23/23 34/30/30
+f 10/31/31 9/25/25 29/32/32
+f 5/33/33 4/27/27 24/34/34
+f 16/2/2 15/29/29 35/35/35
+f 11/5/5 10/31/31 30/36/36
+f 6/8/8 5/33/33 25/37/37
+f 21/12/12 20/38/38 41/39/39
+f 37/40/14 36/41/3 57/42/40
+f 32/43/16 31/44/6 52/45/41
+f 27/46/18 26/47/9 47/48/42
+f 22/49/20 21/12/12 42/50/43
+f 38/51/22 37/40/14 58/52/44
+f 33/53/24 32/43/16 53/54/45
+f 28/55/26 27/46/18 48/56/46
+f 23/57/28 22/49/20 43/58/47
+f 34/59/30 33/53/24 54/60/48
+f 29/61/32 28/55/26 49/62/49
+f 24/63/34 23/57/28 44/64/50
+f 35/65/35 34/59/30 55/66/51
+f 30/67/36 29/61/32 50/68/52
+f 25/69/37 24/63/34 45/70/53
+f 36/41/3 35/65/35 56/71/54
+f 31/44/6 30/67/36 51/72/55
+f 26/47/9 25/69/37 46/73/56
+f 57/42/40 56/71/54 76/74/57
+f 52/45/41 51/72/55 71/75/58
+f 47/48/42 46/73/56 66/76/59
+f 42/50/43 41/39/39 61/77/60
+f 58/52/44 57/42/40 77/78/61
+f 53/54/45 52/45/41 72/79/62
+f 48/56/46 47/48/42 67/80/63
+f 43/58/47 42/50/43 62/81/64
+f 54/60/48 53/54/45 73/82/65
+f 49/62/49 48/56/46 68/83/66
+f 44/64/50 43/58/47 63/84/67
+f 55/66/51 54/60/48 74/85/68
+f 50/68/52 49/62/49 69/86/69
+f 45/70/53 44/64/50 64/87/70
+f 56/71/54 55/66/51 75/88/71
+f 51/72/55 50/68/52 70/89/72
+f 46/73/56 45/70/53 65/90/73
+f 41/39/39 40/91/74 60/92/75
+f 76/74/57 75/88/71 95/93/76
+f 71/75/58 70/89/72 90/94/77
+f 66/76/59 65/90/73 85/95/78
+f 61/77/60 60/92/75 80/96/79
+f 77/78/61 76/74/57 96/97/80
+f 72/79/62 71/75/58 91/98/81
+f 67/80/63 66/76/59 86/99/82
+f 62/81/64 61/77/60 81/100/83
+f 73/82/65 72/79/62 92/101/84
+f 68/83/66 67/80/63 87/102/85
+f 63/84/67 62/81/64 82/103/86
+f 74/85/68 73/82/65 93/104/87
+f 69/86/69 68/83/66 88/105/88
+f 64/87/70 63/84/67 83/106/89
+f 75/88/71 74/85/68 94/107/90
+f 70/89/72 69/86/69 89/108/91
+f 65/90/73 64/87/70 84/109/92
+f 60/92/75 59/110/93 79/111/94
+f 90/94/77 89/108/91 109/112/95
+f 85/95/78 84/109/92 104/113/96
+f 80/96/79 79/111/94 99/114/97
+f 96/97/80 95/93/76 115/115/98
+f 91/98/81 90/94/77 110/116/99
+f 86/99/82 85/95/78 105/117/100
+f 81/100/83 80/96/79 100/118/101
+f 92/101/84 91/98/81 111/119/102
+f 87/102/85 86/99/82 106/120/103
+f 82/103/86 81/100/83 101/121/104
+f 93/104/87 92/101/84 112/122/105
+f 88/105/88 87/102/85 107/123/106
+f 83/106/89 82/103/86 102/124/107
+f 94/107/90 93/104/87 113/125/108
+f 89/108/91 88/105/88 108/126/109
+f 84/109/92 83/106/89 103/127/110
+f 79/111/94 78/128/111 98/129/112
+f 95/93/76 94/107/90 114/130/113
+f 99/114/97 98/129/112 117/131/114
+f 115/115/98 114/130/113 133/132/115
+f 110/116/99 109/112/95 128/133/116
+f 105/117/100 104/113/96 123/134/117
+f 100/118/101 99/114/97 118/135/118
+f 111/119/102 110/116/99 129/136/119
+f 106/120/103 105/117/100 124/137/120
+f 101/121/104 100/118/101 119/138/121
+f 112/122/105 111/119/102 130/139/122
+f 107/123/106 106/120/103 125/140/123
+f 102/124/107 101/121/104 120/141/124
+f 113/125/108 112/122/105 131/142/125
+f 108/126/109 107/123/106 126/143/126
+f 103/127/110 102/124/107 121/144/127
+f 98/129/112 97/145/128 116/146/129
+f 114/130/113 113/125/108 132/147/130
+f 109/112/95 108/126/109 127/148/131
+f 104/113/96 103/127/110 122/149/132
+f 134/150/133 133/132/115 152/151/134
+f 129/136/119 128/133/116 147/152/135
+f 124/137/120 123/134/117 142/153/136
+f 119/138/121 118/135/118 137/154/137
+f 130/139/122 129/136/119 148/155/138
+f 125/140/123 124/137/120 143/156/139
+f 120/141/124 119/138/121 138/157/140
+f 131/142/125 130/139/122 149/158/141
+f 126/143/126 125/140/123 144/159/142
+f 121/144/127 120/141/124 139/160/143
+f 132/147/130 131/142/125 150/161/144
+f 127/148/131 126/143/126 145/162/145
+f 122/149/132 121/144/127 140/163/146
+f 117/131/114 116/146/129 135/164/147
+f 133/132/115 132/147/130 151/165/148
+f 128/133/116 127/148/131 146/166/149
+f 123/134/117 122/149/132 141/167/150
+f 118/135/118 117/131/114 136/168/151
+f 153/169/152 152/151/134 171/170/153
+f 148/155/138 147/152/135 166/171/154
+f 143/156/139 142/153/136 161/172/155
+f 138/157/140 137/154/137 156/173/156
+f 149/158/141 148/155/138 167/174/157
+f 144/159/142 143/156/139 162/175/158
+f 139/160/143 138/157/140 157/176/159
+f 150/161/144 149/158/141 168/177/160
+f 145/162/145 144/159/142 163/178/161
+f 140/163/146 139/160/143 158/179/162
+f 151/165/148 150/161/144 169/180/163
+f 146/166/149 145/162/145 164/181/164
+f 141/167/150 140/163/146 160/182/165
+f 136/168/151 135/164/147 154/183/166
+f 152/151/134 151/165/148 170/184/167
+f 147/152/135 146/166/149 165/185/168
+f 142/153/136 141/167/150 160/182/165
+f 137/154/137 136/168/151 155/186/169
+f 167/174/157 166/171/154 185/187/170
+f 162/175/158 161/172/155 180/188/171
+f 157/176/159 156/173/156 175/189/172
+f 168/177/160 167/174/157 187/190/173
+f 163/178/161 162/175/158 181/191/174
+f 158/179/162 157/176/159 176/192/175
+f 169/180/163 168/177/160 187/190/173
+f 164/181/164 163/178/161 182/193/176
+f 159/194/177 158/179/162 177/195/178
+f 170/184/167 169/180/163 188/196/179
+f 165/185/168 164/181/164 183/197/180
+f 160/182/165 159/194/177 179/198/181
+f 155/186/169 154/183/166 173/199/182
+f 171/170/153 170/184/167 189/200/183
+f 166/171/154 165/185/168 184/201/184
+f 161/172/155 160/182/165 179/198/181
+f 156/173/156 155/186/169 174/202/185
+f 172/203/186 171/170/153 190/204/187
+f 181/191/174 180/188/171 199/205/188
+f 176/192/175 175/189/172 194/206/189
+f 187/190/173 186/207/190 206/208/191
+f 182/193/176 181/191/174 200/209/192
+f 177/195/178 176/192/175 195/210/193
+f 188/196/179 187/190/173 206/208/191
+f 183/197/180 182/193/176 201/211/194
+f 178/212/195 177/195/178 196/213/196
+f 189/200/183 188/196/179 207/214/197
+f 184/201/184 183/197/180 202/215/198
+f 179/198/181 178/212/195 198/216/199
+f 174/202/185 173/199/182 192/217/200
+f 190/204/187 189/200/183 208/218/201
+f 185/187/170 184/201/184 203/219/202
+f 180/188/171 179/198/181 198/216/199
+f 175/189/172 174/202/185 193/220/203
+f 191/221/204 190/204/187 209/222/205
+f 186/207/190 185/187/170 204/223/206
+f 206/208/191 205/224/207 225/225/208
+f 201/211/194 200/209/192 219/226/209
+f 196/213/196 195/210/193 214/227/210
+f 207/214/197 206/208/191 225/225/208
+f 202/215/198 201/211/194 220/228/211
+f 197/229/212 196/213/196 215/230/213
+f 208/218/201 207/214/197 226/231/214
+f 203/219/202 202/215/198 221/232/215
+f 198/216/199 197/229/212 217/233/216
+f 193/220/203 192/217/200 211/234/217
+f 209/222/205 208/218/201 227/235/218
+f 204/223/206 203/219/202 222/236/219
+f 199/205/188 198/216/199 217/233/216
+f 194/206/189 193/220/203 212/237/220
+f 210/238/221 209/222/205 228/239/222
+f 205/224/207 204/223/206 223/240/223
+f 200/209/192 199/205/188 218/241/224
+f 195/210/193 194/206/189 213/242/225
+f 225/225/208 224/243/226 244/244/227
+f 220/228/211 219/226/209 238/245/228
+f 215/230/213 214/227/210 233/246/229
+f 226/231/214 225/225/208 244/244/227
+f 221/232/215 220/228/211 239/247/230
+f 216/248/231 215/230/213 234/249/232
+f 227/235/218 226/231/214 245/250/233
+f 222/236/219 221/232/215 240/251/234
+f 217/233/216 216/248/231 236/252/235
+f 212/237/220 211/234/217 230/253/236
+f 228/239/222 227/235/218 246/254/237
+f 223/240/223 222/236/219 241/255/238
+f 218/241/224 217/233/216 236/252/235
+f 213/242/225 212/237/220 231/256/239
+f 229/257/240 228/239/222 247/258/241
+f 224/243/226 223/240/223 242/259/242
+f 219/226/209 218/241/224 237/260/243
+f 214/227/210 213/242/225 232/261/244
+f 244/244/227 243/262/245 263/263/246
+f 239/247/230 238/245/228 257/264/247
+f 234/249/232 233/246/229 252/265/248
+f 245/250/233 244/244/227 263/263/246
+f 240/251/234 239/247/230 258/266/249
+f 235/267/250 234/249/232 253/268/251
+f 246/269/237 245/250/233 264/270/252
+f 241/255/238 240/251/234 259/271/253
+f 236/252/235 235/267/250 255/272/254
+f 231/256/239 230/253/236 249/273/255
+f 247/274/241 246/269/237 265/275/256
+f 242/259/242 241/255/238 260/276/257
+f 237/260/243 236/252/235 255/272/254
+f 232/261/244 231/256/239 250/277/258
+f 248/278/259 247/274/241 266/279/260
+f 243/262/245 242/259/242 261/280/261
+f 238/245/228 237/260/243 256/281/262
+f 233/246/229 232/261/244 251/282/263
+f 258/266/249 257/264/247 276/283/264
+f 253/268/251 252/265/248 271/284/265
+f 264/270/252 263/263/246 282/285/266
+f 259/271/253 258/266/249 277/286/267
+f 254/287/268 253/268/251 272/288/269
+f 265/275/256 264/270/252 283/289/270
+f 260/276/257 259/271/253 278/290/271
+f 255/272/254 254/287/268 274/291/272
+f 250/277/258 249/273/255 268/292/273
+f 266/279/260 265/275/256 284/293/274
+f 261/280/261 260/276/257 279/294/275
+f 256/281/262 255/272/254 274/291/272
+f 251/282/263 250/277/258 269/295/276
+f 267/296/277 266/279/260 285/297/278
+f 262/298/279 261/280/261 280/299/280
+f 257/264/247 256/281/262 275/300/281
+f 252/265/248 251/282/263 270/301/282
+f 263/263/246 262/298/279 281/302/283
+f 272/288/269 271/284/265 290/303/284
+f 283/289/270 282/285/266 301/304/285
+f 278/290/271 277/286/267 296/305/286
+f 273/306/287 272/288/269 291/307/288
+f 284/293/274 283/289/270 302/308/289
+f 279/294/275 278/290/271 297/309/290
+f 274/291/272 273/306/287 293/310/291
+f 269/295/276 268/292/273 287/311/292
+f 285/297/278 284/293/274 303/312/293
+f 280/299/280 279/294/275 298/313/294
+f 275/300/281 274/291/272 293/310/291
+f 270/301/282 269/295/276 288/314/295
+f 286/315/296 285/297/278 304/316/297
+f 281/302/283 280/299/280 299/317/298
+f 276/283/264 275/300/281 294/318/299
+f 271/284/265 270/301/282 289/319/300
+f 282/285/266 281/302/283 300/320/301
+f 277/286/267 276/283/264 295/321/302
+f 302/308/289 301/304/285 321/322/303
+f 297/309/290 296/305/286 316/323/304
+f 292/324/305 291/307/288 311/325/306
+f 303/312/293 302/308/289 322/326/307
+f 298/313/294 297/309/290 317/327/308
+f 293/310/291 292/324/305 311/325/306
+f 288/314/295 287/311/292 307/328/309
+f 304/316/297 303/312/293 323/329/310
+f 299/317/298 298/313/294 318/330/311
+f 294/318/299 293/310/291 313/331/312
+f 289/319/300 288/314/295 308/332/313
+f 305/333/314 304/316/297 324/334/315
+f 300/320/301 299/317/298 319/335/316
+f 295/321/302 294/318/299 314/336/317
+f 290/303/284 289/319/300 309/337/318
+f 301/304/285 300/320/301 320/338/319
+f 296/305/286 295/321/302 315/339/320
+f 291/307/288 290/303/284 310/340/321
+f 321/322/303 320/338/319 340/341/322
+f 316/323/304 315/339/320 335/342/323
+f 311/325/306 310/340/321 330/343/324
+f 322/326/307 321/322/303 341/344/325
+f 317/327/308 316/323/304 336/345/326
+f 312/346/327 311/325/306 330/343/324
+f 307/328/309 306/347/328 326/348/329
+f 323/329/310 322/326/307 342/349/330
+f 318/330/311 317/327/308 337/350/331
+f 313/331/312 312/346/327 332/351/332
+f 308/332/313 307/328/309 327/352/333
+f 324/334/315 323/329/310 343/353/334
+f 319/335/316 318/330/311 338/354/335
+f 314/336/317 313/331/312 333/355/336
+f 309/337/318 308/332/313 328/356/337
+f 320/338/319 319/335/316 339/357/338
+f 315/339/320 314/336/317 334/358/339
+f 310/340/321 309/337/318 329/359/340
+f 340/341/322 339/357/338 360/360/341
+f 335/342/323 334/358/339 355/361/342
+f 330/343/324 329/359/340 350/362/343
+f 341/344/325 340/341/322 361/363/344
+f 336/345/326 335/342/323 356/364/345
+f 331/365/346 330/343/324 350/362/343
+f 326/348/329 325/366/347 346/367/348
+f 342/349/330 341/344/325 362/368/349
+f 337/350/331 336/345/326 357/369/350
+f 332/351/332 331/365/346 352/370/351
+f 327/352/333 326/348/329 347/371/352
+f 343/353/334 342/349/330 363/372/353
+f 338/354/335 337/350/331 358/373/354
+f 333/355/336 332/351/332 353/374/355
+f 328/356/337 327/352/333 348/375/356
+f 339/357/338 338/354/335 359/376/357
+f 334/358/339 333/355/336 354/377/358
+f 329/359/340 328/356/337 349/378/359
+f 350/362/343 349/378/359 369/379/360
+f 361/363/344 360/360/341 380/380/361
+f 356/364/345 355/361/342 375/381/362
+f 351/382/363 350/362/343 369/379/360
+f 346/367/348 345/383/364 365/384/365
+f 362/368/349 361/363/344 381/385/366
+f 357/369/350 356/364/345 376/386/367
+f 352/370/351 351/382/363 371/387/368
+f 347/371/352 346/367/348 366/388/369
+f 363/372/353 362/368/349 382/389/370
+f 358/373/354 357/369/350 377/390/371
+f 353/374/355 352/370/351 372/391/372
+f 348/375/356 347/371/352 367/392/373
+f 359/376/357 358/373/354 378/393/374
+f 354/377/358 353/374/355 373/394/375
+f 349/378/359 348/375/356 368/395/376
+f 360/360/341 359/376/357 379/396/377
+f 355/361/342 354/377/358 374/397/378
+f 39/398/379 19/399/21 38/51/22
+f 1/11/11 344/400/380 20/38/38
+f 39/398/379 38/51/22 58/52/44
+f 20/38/38 344/400/380 40/91/74
+f 39/398/379 58/52/44 77/78/61
+f 40/91/74 344/400/380 59/110/93
+f 39/398/379 77/78/61 96/97/80
+f 59/110/93 344/400/380 78/128/111
+f 39/398/379 96/97/80 115/115/98
+f 78/128/111 344/400/380 97/145/128
+f 39/398/379 115/115/98 134/150/133
+f 97/145/128 344/400/380 116/146/129
+f 39/398/379 134/150/133 153/169/152
+f 116/146/129 344/400/380 135/164/147
+f 39/398/379 153/169/152 172/203/186
+f 135/164/147 344/400/380 154/183/166
+f 39/398/379 172/203/186 191/221/204
+f 154/183/166 344/400/380 173/199/182
+f 39/398/379 191/221/204 210/238/221
+f 173/199/182 344/400/380 192/217/200
+f 39/398/379 210/238/221 229/257/240
+f 192/217/200 344/400/380 211/234/217
+f 39/398/379 229/257/240 248/401/259
+f 211/234/217 344/400/380 230/253/236
+f 39/398/379 248/401/259 267/402/277
+f 230/253/236 344/400/380 249/273/255
+f 249/273/255 344/400/380 268/292/273
+f 39/398/379 267/402/277 286/403/296
+f 268/292/273 344/400/380 287/311/292
+f 39/398/379 286/403/296 305/404/314
+f 287/311/292 344/400/380 306/347/328
+f 39/398/379 305/404/314 324/405/315
+f 306/347/328 344/400/380 325/366/347
+f 39/398/379 324/405/315 343/406/334
+f 325/366/347 344/400/380 345/383/364
+f 39/398/379 343/406/334 363/407/353
+f 345/383/364 344/400/380 364/408/381
+f 39/398/379 363/407/353 382/409/370
+f 364/408/381 344/400/380 1/11/11
+f 380/380/361 379/396/377 16/2/2
+f 375/381/362 374/397/378 12/4/4
+f 370/410/382 369/379/360 7/7/7
+f 365/384/365 364/408/381 2/10/10
+f 381/385/366 380/380/361 17/1/1
+f 376/386/367 375/381/362 13/15/15
+f 371/387/368 370/410/382 8/17/17
+f 366/388/369 365/384/365 3/19/19
+f 382/389/370 381/385/366 18/13/13
+f 377/390/371 376/386/367 13/15/15
+f 372/391/372 371/387/368 9/25/25
+f 367/392/373 366/388/369 4/27/27
+f 39/398/379 382/409/370 19/399/21
+f 378/393/374 377/390/371 14/23/23
+f 373/394/375 372/391/372 10/31/31
+f 368/395/376 367/392/373 5/33/33
+f 379/396/377 378/393/374 15/29/29
+f 374/397/378 373/394/375 11/5/5
+f 369/379/360 368/395/376 6/8/8
+f 16/2/2 35/35/35 36/3/3
+f 11/5/5 30/36/36 31/6/6
+f 6/8/8 25/37/37 26/9/9
+f 1/11/11 20/38/38 21/12/12
+f 17/1/1 36/3/3 37/14/14
+f 12/4/4 31/6/6 32/16/16
+f 7/7/7 26/9/9 27/18/18
+f 2/10/10 21/12/12 22/20/20
+f 18/13/13 37/14/14 38/22/22
+f 13/15/15 32/16/16 33/24/24
+f 8/17/17 27/18/18 28/26/26
+f 3/19/19 22/20/20 23/28/28
+f 14/23/23 33/24/24 34/30/30
+f 9/25/25 28/26/26 29/32/32
+f 4/27/27 23/28/28 24/34/34
+f 15/29/29 34/30/30 35/35/35
+f 10/31/31 29/32/32 30/36/36
+f 5/33/33 24/34/34 25/37/37
+f 20/38/38 40/91/74 41/39/39
+f 36/41/3 56/71/54 57/42/40
+f 31/44/6 51/72/55 52/45/41
+f 26/47/9 46/73/56 47/48/42
+f 21/12/12 41/39/39 42/50/43
+f 37/40/14 57/42/40 58/52/44
+f 32/43/16 52/45/41 53/54/45
+f 27/46/18 47/48/42 48/56/46
+f 22/49/20 42/50/43 43/58/47
+f 33/53/24 53/54/45 54/60/48
+f 28/55/26 48/56/46 49/62/49
+f 23/57/28 43/58/47 44/64/50
+f 34/59/30 54/60/48 55/66/51
+f 29/61/32 49/62/49 50/68/52
+f 24/63/34 44/64/50 45/70/53
+f 35/65/35 55/66/51 56/71/54
+f 30/67/36 50/68/52 51/72/55
+f 25/69/37 45/70/53 46/73/56
+f 56/71/54 75/88/71 76/74/57
+f 51/72/55 70/89/72 71/75/58
+f 46/73/56 65/90/73 66/76/59
+f 41/39/39 60/92/75 61/77/60
+f 57/42/40 76/74/57 77/78/61
+f 52/45/41 71/75/58 72/79/62
+f 47/48/42 66/76/59 67/80/63
+f 42/50/43 61/77/60 62/81/64
+f 53/54/45 72/79/62 73/82/65
+f 48/56/46 67/80/63 68/83/66
+f 43/58/47 62/81/64 63/84/67
+f 54/60/48 73/82/65 74/85/68
+f 49/62/49 68/83/66 69/86/69
+f 44/64/50 63/84/67 64/87/70
+f 55/66/51 74/85/68 75/88/71
+f 50/68/52 69/86/69 70/89/72
+f 45/70/53 64/87/70 65/90/73
+f 40/91/74 59/110/93 60/92/75
+f 75/88/71 94/107/90 95/93/76
+f 70/89/72 89/108/91 90/94/77
+f 65/90/73 84/109/92 85/95/78
+f 60/92/75 79/111/94 80/96/79
+f 76/74/57 95/93/76 96/97/80
+f 71/75/58 90/94/77 91/98/81
+f 66/76/59 85/95/78 86/99/82
+f 61/77/60 80/96/79 81/100/83
+f 72/79/62 91/98/81 92/101/84
+f 67/80/63 86/99/82 87/102/85
+f 62/81/64 81/100/83 82/103/86
+f 73/82/65 92/101/84 93/104/87
+f 68/83/66 87/102/85 88/105/88
+f 63/84/67 82/103/86 83/106/89
+f 74/85/68 93/104/87 94/107/90
+f 69/86/69 88/105/88 89/108/91
+f 64/87/70 83/106/89 84/109/92
+f 59/110/93 78/128/111 79/111/94
+f 89/108/91 108/126/109 109/112/95
+f 84/109/92 103/127/110 104/113/96
+f 79/111/94 98/129/112 99/114/97
+f 95/93/76 114/130/113 115/115/98
+f 90/94/77 109/112/95 110/116/99
+f 85/95/78 104/113/96 105/117/100
+f 80/96/79 99/114/97 100/118/101
+f 91/98/81 110/116/99 111/119/102
+f 86/99/82 105/117/100 106/120/103
+f 81/100/83 100/118/101 101/121/104
+f 92/101/84 111/119/102 112/122/105
+f 87/102/85 106/120/103 107/123/106
+f 82/103/86 101/121/104 102/124/107
+f 93/104/87 112/122/105 113/125/108
+f 88/105/88 107/123/106 108/126/109
+f 83/106/89 102/124/107 103/127/110
+f 78/128/111 97/145/128 98/129/112
+f 94/107/90 113/125/108 114/130/113
+f 118/135/118 99/114/97 117/131/114
+f 134/150/133 115/115/98 133/132/115
+f 129/136/119 110/116/99 128/133/116
+f 124/137/120 105/117/100 123/134/117
+f 119/138/121 100/118/101 118/135/118
+f 130/139/122 111/119/102 129/136/119
+f 125/140/123 106/120/103 124/137/120
+f 120/141/124 101/121/104 119/138/121
+f 131/142/125 112/122/105 130/139/122
+f 126/143/126 107/123/106 125/140/123
+f 121/144/127 102/124/107 120/141/124
+f 132/147/130 113/125/108 131/142/125
+f 127/148/131 108/126/109 126/143/126
+f 122/149/132 103/127/110 121/144/127
+f 117/131/114 98/129/112 116/146/129
+f 133/132/115 114/130/113 132/147/130
+f 128/133/116 109/112/95 127/148/131
+f 123/134/117 104/113/96 122/149/132
+f 153/169/152 134/150/133 152/151/134
+f 148/155/138 129/136/119 147/152/135
+f 143/156/139 124/137/120 142/153/136
+f 138/157/140 119/138/121 137/154/137
+f 149/158/141 130/139/122 148/155/138
+f 144/159/142 125/140/123 143/156/139
+f 139/160/143 120/141/124 138/157/140
+f 150/161/144 131/142/125 149/158/141
+f 145/162/145 126/143/126 144/159/142
+f 140/163/146 121/144/127 139/160/143
+f 151/165/148 132/147/130 150/161/144
+f 146/166/149 127/148/131 145/162/145
+f 141/167/150 122/149/132 140/163/146
+f 136/168/151 117/131/114 135/164/147
+f 152/151/134 133/132/115 151/165/148
+f 147/152/135 128/133/116 146/166/149
+f 142/153/136 123/134/117 141/167/150
+f 137/154/137 118/135/118 136/168/151
+f 172/203/186 153/169/152 171/170/153
+f 167/174/157 148/155/138 166/171/154
+f 162/175/158 143/156/139 161/172/155
+f 157/176/159 138/157/140 156/173/156
+f 168/177/160 149/158/141 167/174/157
+f 163/178/161 144/159/142 162/175/158
+f 158/179/162 139/160/143 157/176/159
+f 169/180/163 150/161/144 168/177/160
+f 164/181/164 145/162/145 163/178/161
+f 159/194/177 140/163/146 158/179/162
+f 170/184/167 151/165/148 169/180/163
+f 165/185/168 146/166/149 164/181/164
+f 140/163/146 159/194/177 160/182/165
+f 155/186/169 136/168/151 154/183/166
+f 171/170/153 152/151/134 170/184/167
+f 166/171/154 147/152/135 165/185/168
+f 161/172/155 142/153/136 160/182/165
+f 156/173/156 137/154/137 155/186/169
+f 186/207/190 167/174/157 185/187/170
+f 181/191/174 162/175/158 180/188/171
+f 176/192/175 157/176/159 175/189/172
+f 167/174/157 186/207/190 187/190/173
+f 182/193/176 163/178/161 181/191/174
+f 177/195/178 158/179/162 176/192/175
+f 188/196/179 169/180/163 187/190/173
+f 183/197/180 164/181/164 182/193/176
+f 178/212/195 159/194/177 177/195/178
+f 189/200/183 170/184/167 188/196/179
+f 184/201/184 165/185/168 183/197/180
+f 159/194/177 178/212/195 179/198/181
+f 174/202/185 155/186/169 173/199/182
+f 190/204/187 171/170/153 189/200/183
+f 185/187/170 166/171/154 184/201/184
+f 180/188/171 161/172/155 179/198/181
+f 175/189/172 156/173/156 174/202/185
+f 191/221/204 172/203/186 190/204/187
+f 200/209/192 181/191/174 199/205/188
+f 195/210/193 176/192/175 194/206/189
+f 186/207/190 205/224/207 206/208/191
+f 201/211/194 182/193/176 200/209/192
+f 196/213/196 177/195/178 195/210/193
+f 207/214/197 188/196/179 206/208/191
+f 202/215/198 183/197/180 201/211/194
+f 197/229/212 178/212/195 196/213/196
+f 208/218/201 189/200/183 207/214/197
+f 203/219/202 184/201/184 202/215/198
+f 178/212/195 197/229/212 198/216/199
+f 193/220/203 174/202/185 192/217/200
+f 209/222/205 190/204/187 208/218/201
+f 204/223/206 185/187/170 203/219/202
+f 199/205/188 180/188/171 198/216/199
+f 194/206/189 175/189/172 193/220/203
+f 210/238/221 191/221/204 209/222/205
+f 205/224/207 186/207/190 204/223/206
+f 205/224/207 224/243/226 225/225/208
+f 220/228/211 201/211/194 219/226/209
+f 215/230/213 196/213/196 214/227/210
+f 226/231/214 207/214/197 225/225/208
+f 221/232/215 202/215/198 220/228/211
+f 216/248/231 197/229/212 215/230/213
+f 227/235/218 208/218/201 226/231/214
+f 222/236/219 203/219/202 221/232/215
+f 197/229/212 216/248/231 217/233/216
+f 212/237/220 193/220/203 211/234/217
+f 228/239/222 209/222/205 227/235/218
+f 223/240/223 204/223/206 222/236/219
+f 218/241/224 199/205/188 217/233/216
+f 213/242/225 194/206/189 212/237/220
+f 229/257/240 210/238/221 228/239/222
+f 224/243/226 205/224/207 223/240/223
+f 219/226/209 200/209/192 218/241/224
+f 214/227/210 195/210/193 213/242/225
+f 224/243/226 243/262/245 244/244/227
+f 239/247/230 220/228/211 238/245/228
+f 234/249/232 215/230/213 233/246/229
+f 245/250/233 226/231/214 244/244/227
+f 240/251/234 221/232/215 239/247/230
+f 235/267/250 216/248/231 234/249/232
+f 246/269/237 227/235/218 245/250/233
+f 241/255/238 222/236/219 240/251/234
+f 216/248/231 235/267/250 236/252/235
+f 231/256/239 212/237/220 230/253/236
+f 247/258/241 228/239/222 246/254/237
+f 242/259/242 223/240/223 241/255/238
+f 237/260/243 218/241/224 236/252/235
+f 232/261/244 213/242/225 231/256/239
+f 248/401/259 229/257/240 247/258/241
+f 243/262/245 224/243/226 242/259/242
+f 238/245/228 219/226/209 237/260/243
+f 233/246/229 214/227/210 232/261/244
+f 243/262/245 262/298/279 263/263/246
+f 258/266/249 239/247/230 257/264/247
+f 253/268/251 234/249/232 252/265/248
+f 264/270/252 245/250/233 263/263/246
+f 259/271/253 240/251/234 258/266/249
+f 254/287/268 235/267/250 253/268/251
+f 265/275/256 246/269/237 264/270/252
+f 260/276/257 241/255/238 259/271/253
+f 235/267/250 254/287/268 255/272/254
+f 250/277/258 231/256/239 249/273/255
+f 266/279/260 247/274/241 265/275/256
+f 261/280/261 242/259/242 260/276/257
+f 256/281/262 237/260/243 255/272/254
+f 251/282/263 232/261/244 250/277/258
+f 267/296/277 248/278/259 266/279/260
+f 262/298/279 243/262/245 261/280/261
+f 257/264/247 238/245/228 256/281/262
+f 252/265/248 233/246/229 251/282/263
+f 277/286/267 258/266/249 276/283/264
+f 272/288/269 253/268/251 271/284/265
+f 283/289/270 264/270/252 282/285/266
+f 278/290/271 259/271/253 277/286/267
+f 273/306/287 254/287/268 272/288/269
+f 284/293/274 265/275/256 283/289/270
+f 279/294/275 260/276/257 278/290/271
+f 254/287/268 273/306/287 274/291/272
+f 269/295/276 250/277/258 268/292/273
+f 285/297/278 266/279/260 284/293/274
+f 280/299/280 261/280/261 279/294/275
+f 275/300/281 256/281/262 274/291/272
+f 270/301/282 251/282/263 269/295/276
+f 286/315/296 267/296/277 285/297/278
+f 281/302/283 262/298/279 280/299/280
+f 276/283/264 257/264/247 275/300/281
+f 271/284/265 252/265/248 270/301/282
+f 282/285/266 263/263/246 281/302/283
+f 291/307/288 272/288/269 290/303/284
+f 302/308/289 283/289/270 301/304/285
+f 297/309/290 278/290/271 296/305/286
+f 292/324/305 273/306/287 291/307/288
+f 303/312/293 284/293/274 302/308/289
+f 298/313/294 279/294/275 297/309/290
+f 273/306/287 292/324/305 293/310/291
+f 288/314/295 269/295/276 287/311/292
+f 304/316/297 285/297/278 303/312/293
+f 299/317/298 280/299/280 298/313/294
+f 294/318/299 275/300/281 293/310/291
+f 289/319/300 270/301/282 288/314/295
+f 305/333/314 286/315/296 304/316/297
+f 300/320/301 281/302/283 299/317/298
+f 295/321/302 276/283/264 294/318/299
+f 290/303/284 271/284/265 289/319/300
+f 301/304/285 282/285/266 300/320/301
+f 296/305/286 277/286/267 295/321/302
+f 301/304/285 320/338/319 321/322/303
+f 296/305/286 315/339/320 316/323/304
+f 291/307/288 310/340/321 311/325/306
+f 302/308/289 321/322/303 322/326/307
+f 297/309/290 316/323/304 317/327/308
+f 312/346/327 293/310/291 311/325/306
+f 287/311/292 306/347/328 307/328/309
+f 303/312/293 322/326/307 323/329/310
+f 298/313/294 317/327/308 318/330/311
+f 293/310/291 312/346/327 313/331/312
+f 288/314/295 307/328/309 308/332/313
+f 304/316/297 323/329/310 324/334/315
+f 299/317/298 318/330/311 319/335/316
+f 294/318/299 313/331/312 314/336/317
+f 289/319/300 308/332/313 309/337/318
+f 300/320/301 319/335/316 320/338/319
+f 295/321/302 314/336/317 315/339/320
+f 290/303/284 309/337/318 310/340/321
+f 320/338/319 339/357/338 340/341/322
+f 315/339/320 334/358/339 335/342/323
+f 310/340/321 329/359/340 330/343/324
+f 321/322/303 340/341/322 341/344/325
+f 316/323/304 335/342/323 336/345/326
+f 331/365/346 312/346/327 330/343/324
+f 306/347/328 325/366/347 326/348/329
+f 322/326/307 341/344/325 342/349/330
+f 317/327/308 336/345/326 337/350/331
+f 312/346/327 331/365/346 332/351/332
+f 307/328/309 326/348/329 327/352/333
+f 323/329/310 342/349/330 343/353/334
+f 318/330/311 337/350/331 338/354/335
+f 313/331/312 332/351/332 333/355/336
+f 308/332/313 327/352/333 328/356/337
+f 319/335/316 338/354/335 339/357/338
+f 314/336/317 333/355/336 334/358/339
+f 309/337/318 328/356/337 329/359/340
+f 339/357/338 359/376/357 360/360/341
+f 334/358/339 354/377/358 355/361/342
+f 329/359/340 349/378/359 350/362/343
+f 340/341/322 360/360/341 361/363/344
+f 335/342/323 355/361/342 356/364/345
+f 351/382/363 331/365/346 350/362/343
+f 325/366/347 345/383/364 346/367/348
+f 341/344/325 361/363/344 362/368/349
+f 336/345/326 356/364/345 357/369/350
+f 331/365/346 351/382/363 352/370/351
+f 326/348/329 346/367/348 347/371/352
+f 342/349/330 362/368/349 363/372/353
+f 337/350/331 357/369/350 358/373/354
+f 332/351/332 352/370/351 353/374/355
+f 327/352/333 347/371/352 348/375/356
+f 338/354/335 358/373/354 359/376/357
+f 333/355/336 353/374/355 354/377/358
+f 328/356/337 348/375/356 349/378/359
+f 349/378/359 368/395/376 369/379/360
+f 360/360/341 379/396/377 380/380/361
+f 355/361/342 374/397/378 375/381/362
+f 370/410/382 351/382/363 369/379/360
+f 345/383/364 364/408/381 365/384/365
+f 361/363/344 380/380/361 381/385/366
+f 356/364/345 375/381/362 376/386/367
+f 351/382/363 370/410/382 371/387/368
+f 346/367/348 365/384/365 366/388/369
+f 362/368/349 381/385/366 382/389/370
+f 357/369/350 376/386/367 377/390/371
+f 352/370/351 371/387/368 372/391/372
+f 347/371/352 366/388/369 367/392/373
+f 358/373/354 377/390/371 378/393/374
+f 353/374/355 372/391/372 373/394/375
+f 348/375/356 367/392/373 368/395/376
+f 359/376/357 378/393/374 379/396/377
+f 354/377/358 373/394/375 374/397/378
+f 17/1/1 380/380/361 16/2/2
+f 374/397/378 11/5/5 12/4/4
+f 369/379/360 6/8/8 7/7/7
+f 364/408/381 1/11/11 2/10/10
+f 18/13/13 381/385/366 17/1/1
+f 375/381/362 12/4/4 13/15/15
+f 370/410/382 7/7/7 8/17/17
+f 365/384/365 2/10/10 3/19/19
+f 19/21/21 382/389/370 18/13/13
+f 14/23/23 377/390/371 13/15/15
+f 371/387/368 8/17/17 9/25/25
+f 366/388/369 3/19/19 4/27/27
+f 15/29/29 378/393/374 14/23/23
+f 372/391/372 9/25/25 10/31/31
+f 367/392/373 4/27/27 5/33/33
+f 16/2/2 379/396/377 15/29/29
+f 373/394/375 10/31/31 11/5/5
+f 368/395/376 5/33/33 6/8/8
diff --git a/examples/rotations/mesh/narrowarrow.obj b/examples/rotations/mesh/narrowarrow.obj
new file mode 100644
index 00000000..481fc1d1
--- /dev/null
+++ b/examples/rotations/mesh/narrowarrow.obj
@@ -0,0 +1,413 @@
+# Blender v2.69 (sub 0) OBJ File: ''
+# www.blender.org
+v 0.000000 0.986570 0.000000
+v 0.000000 0.500000 -0.218399
+v -0.042608 0.500000 -0.214202
+v -0.083578 0.500000 -0.201774
+v -0.121336 0.500000 -0.181592
+v -0.154431 0.500000 -0.154431
+v -0.181592 0.500000 -0.121336
+v -0.201774 0.500000 -0.083578
+v -0.214202 0.500000 -0.042608
+v -0.218399 0.500000 -0.000000
+v -0.214202 0.500000 0.042607
+v -0.201774 0.500000 0.083578
+v -0.181592 0.500000 0.121336
+v -0.154431 0.500000 0.154431
+v -0.121336 0.500000 0.181592
+v -0.083578 0.500000 0.201774
+v -0.042607 0.500000 0.214202
+v 0.000000 0.500000 0.218399
+v 0.042608 0.500000 0.214202
+v 0.083578 0.500000 0.201774
+v 0.121336 0.500000 0.181592
+v 0.154431 0.500000 0.154431
+v 0.181592 0.500000 0.121336
+v 0.201774 0.500000 0.083577
+v 0.214202 0.500000 0.042607
+v 0.218399 0.500000 -0.000000
+v 0.214202 0.500000 -0.042608
+v 0.201774 0.500000 -0.083578
+v 0.181592 0.500000 -0.121336
+v 0.154431 0.500000 -0.154432
+v 0.121336 0.500000 -0.181592
+v 0.083577 0.500000 -0.201774
+v 0.042607 0.500000 -0.214202
+v 0.000000 0.000000 0.000000
+v 0.000000 0.000000 0.000000
+v -0.000000 0.500000 -0.126422
+v -0.024664 0.500000 -0.123993
+v -0.048380 0.500000 -0.116799
+v -0.070236 0.500000 -0.105116
+v -0.089394 0.500000 -0.089394
+v -0.105116 0.500000 -0.070236
+v -0.116799 0.500000 -0.048380
+v -0.123993 0.500000 -0.024664
+v -0.126422 0.500000 -0.000000
+v -0.123993 0.500000 0.024664
+v -0.116799 0.500000 0.048380
+v -0.105116 0.500000 0.070236
+v -0.089394 0.500000 0.089394
+v -0.070236 0.500000 0.105116
+v -0.048380 0.500000 0.116799
+v -0.024664 0.500000 0.123993
+v 0.000000 0.500000 0.126422
+v 0.024664 0.500000 0.123993
+v 0.048380 0.500000 0.116799
+v 0.070236 0.500000 0.105116
+v 0.089394 0.500000 0.089394
+v 0.105116 0.500000 0.070236
+v 0.116799 0.500000 0.048380
+v 0.123993 0.500000 0.024664
+v 0.126422 0.500000 -0.000000
+v 0.123993 0.500000 -0.024664
+v 0.116799 0.500000 -0.048380
+v 0.105116 0.500000 -0.070237
+v 0.089394 0.500000 -0.089394
+v 0.070236 0.500000 -0.105116
+v 0.048380 0.500000 -0.116799
+v 0.024664 0.500000 -0.123993
+v 0.126422 -0.983070 -0.000000
+v 0.123993 -0.983070 0.024664
+v -0.048380 -0.983070 -0.116799
+v -0.024664 -0.983070 -0.123993
+v -0.070236 -0.983070 0.105116
+v -0.089394 -0.983070 0.089394
+v 0.116799 -0.983070 0.048380
+v 0.105116 -0.983070 0.070236
+v -0.105116 -0.983070 0.070236
+v -0.116799 -0.983070 0.048380
+v 0.024664 -0.983070 -0.123993
+v 0.048380 -0.983070 -0.116799
+v 0.089394 -0.983070 0.089394
+v 0.070236 -0.983070 0.105116
+v -0.123993 -0.983070 0.024664
+v -0.126422 -0.983070 -0.000000
+v 0.070236 -0.983070 -0.105116
+v 0.089394 -0.983070 -0.089394
+v 0.048380 -0.983070 0.116799
+v 0.024664 -0.983070 0.123993
+v -0.123993 -0.983070 -0.024664
+v -0.116799 -0.983070 -0.048380
+v 0.105116 -0.983070 -0.070237
+v 0.116799 -0.983070 -0.048380
+v -0.105116 -0.983070 -0.070236
+v -0.089394 -0.983070 -0.089394
+v 0.000000 -0.983070 0.126422
+v -0.024664 -0.983070 0.123993
+v 0.123993 -0.983070 -0.024664
+v -0.070236 -0.983070 -0.105116
+v -0.048380 -0.983070 0.116799
+v -0.000000 -0.983070 -0.126422
+vt 0.000000 0.000000
+vt 1.000000 0.000000
+vt 1.000000 1.000000
+vt 0.000000 1.000000
+vt 0.500000 1.000000
+vt 0.597545 0.990393
+vt 0.402456 0.990393
+vt 0.691342 0.961940
+vt 0.777785 0.915735
+vt 0.853553 0.853553
+vt 0.915735 0.777785
+vt 0.961940 0.691342
+vt 0.990393 0.597545
+vt 1.000000 0.500000
+vt 0.990393 0.402455
+vt 0.961940 0.308658
+vt 0.915735 0.222215
+vt 0.853553 0.146447
+vt 0.777785 0.084265
+vt 0.691342 0.038060
+vt 0.597545 0.009607
+vt 0.308659 0.961940
+vt 0.222215 0.915735
+vt 0.146447 0.853554
+vt 0.308658 0.038060
+vt 0.500000 0.000000
+vt 0.402455 0.009607
+vt 0.222215 0.084265
+vt 0.146446 0.146447
+vt 0.084265 0.222215
+vt 0.009607 0.402455
+vt 0.038060 0.308659
+vt 0.009607 0.597546
+vt 0.000000 0.500000
+vt 0.038060 0.691342
+vt 0.084266 0.777786
+vn -0.089495 0.407852 -0.908651
+vn -0.265044 0.407852 -0.873733
+vn -0.430408 0.407852 -0.805236
+vn -0.579231 0.407852 -0.705796
+vn -0.705796 0.407852 -0.579232
+vn -0.805237 0.407852 -0.430408
+vn -0.873733 0.407852 -0.265043
+vn -0.908651 0.407852 -0.089495
+vn -0.908652 0.407852 0.089494
+vn -0.873732 0.407852 0.265044
+vn -0.805237 0.407852 0.430407
+vn -0.705796 0.407852 0.579232
+vn -0.579231 0.407852 0.705796
+vn -0.430408 0.407852 0.805237
+vn -0.265044 0.407852 0.873733
+vn -0.089494 0.407852 0.908652
+vn 0.089495 0.407852 0.908651
+vn 0.265044 0.407852 0.873732
+vn 0.430408 0.407852 0.805237
+vn 0.579232 0.407852 0.705796
+vn 0.705796 0.407852 0.579231
+vn 0.805237 0.407852 0.430406
+vn 0.873733 0.407852 0.265044
+vn 0.908652 0.407852 0.089493
+vn 0.908651 0.407852 -0.089496
+vn 0.873732 0.407852 -0.265045
+vn 0.805236 0.407852 -0.430409
+vn 0.705795 0.407852 -0.579232
+vn 0.579231 0.407852 -0.705796
+vn 0.430407 0.407852 -0.805237
+vn 0.265042 0.407852 -0.873733
+vn 0.089494 0.407852 -0.908652
+vn 0.000000 -1.000000 0.000000
+vn 0.000000 -1.000000 0.000062
+vn -0.290284 0.000000 0.956940
+vn -0.098017 0.000000 0.995185
+vn -0.634393 0.000000 -0.773010
+vn -0.773010 0.000000 -0.634393
+vn 0.956940 0.000000 -0.290286
+vn 0.881921 0.000000 -0.471398
+vn -0.881922 0.000000 -0.471396
+vn -0.956940 0.000000 -0.290285
+vn 0.098017 0.000000 0.995185
+vn 0.290285 0.000000 0.956940
+vn 0.773010 0.000000 -0.634394
+vn 0.634392 0.000000 -0.773011
+vn -0.995185 0.000000 -0.098017
+vn -0.995185 0.000000 0.098017
+vn 0.471397 0.000000 0.881921
+vn 0.634394 0.000000 0.773010
+vn 0.471395 0.000000 -0.881922
+vn 0.290283 0.000000 -0.956941
+vn 0.098016 0.000000 -0.995185
+vn -0.956940 0.000000 0.290285
+vn -0.881922 0.000000 0.471396
+vn 0.773011 0.000000 0.634393
+vn 0.881922 0.000000 0.471396
+vn -0.773010 0.000000 0.634393
+vn -0.634394 0.000000 0.773010
+vn -0.471397 0.000000 0.881921
+vn -0.098016 0.000000 -0.995185
+vn -0.290284 0.000000 -0.956940
+vn -0.471397 0.000000 -0.881921
+vn 0.956941 0.000000 0.290284
+vn 0.995185 0.000000 0.098016
+vn 0.995185 0.000000 -0.098018
+vn 0.000000 -1.000000 0.000001
+vn 0.000000 -1.000000 0.000018
+vn 0.000000 -1.000000 -0.000013
+vn 0.000000 -1.000000 0.000011
+vn 0.000000 -1.000000 0.000002
+vn 0.000000 -1.000000 -0.000031
+vn 0.000000 -1.000000 0.000031
+vn 0.000000 -1.000000 -0.000021
+vn 0.000000 -1.000000 -0.000016
+vn 0.000000 -1.000000 -0.000005
+vn 0.000000 -1.000000 0.000003
+vn -0.098015 0.000000 0.995185
+vn -0.773011 0.000000 -0.634393
+vn -0.881921 0.000000 -0.471396
+vn 0.773009 0.000000 -0.634394
+vn 0.098017 0.000000 -0.995185
+vn -0.634393 0.000000 0.773011
+vn -0.098018 0.000000 -0.995185
+vn -0.290285 0.000000 -0.956940
+s off
+f 1/1/1 2/2/1 3/3/1
+f 1/1/2 3/2/2 4/3/2
+f 1/1/3 4/2/3 5/3/3
+f 1/1/4 5/2/4 6/3/4
+f 1/1/5 6/2/5 7/3/5
+f 1/1/6 7/2/6 8/3/6
+f 1/1/7 8/2/7 9/3/7
+f 1/1/8 9/2/8 10/3/8
+f 1/1/9 10/2/9 11/3/9
+f 1/1/10 11/2/10 12/3/10
+f 1/1/11 12/2/11 13/3/11
+f 1/1/12 13/2/12 14/3/12
+f 1/1/13 14/2/13 15/3/13
+f 1/1/14 15/2/14 16/3/14
+f 1/1/15 16/2/15 17/3/15
+f 1/1/16 17/2/16 18/3/16
+f 1/1/17 18/2/17 19/3/17
+f 1/1/18 19/2/18 20/3/18
+f 1/1/19 20/2/19 21/3/19
+f 1/1/20 21/2/20 22/3/20
+f 1/1/21 22/2/21 23/3/21
+f 1/1/22 23/2/22 24/3/22
+f 1/1/23 24/2/23 25/3/23
+f 1/1/24 25/2/24 26/3/24
+f 1/1/25 26/2/25 27/3/25
+f 1/1/26 27/2/26 28/3/26
+f 1/1/27 28/2/27 29/3/27
+f 1/1/28 29/2/28 30/3/28
+f 1/1/29 30/2/29 31/3/29
+f 1/1/30 31/2/30 32/3/30
+f 1/1/31 32/2/31 33/3/31
+f 1/1/32 33/2/32 2/3/32
+f 24/1/33 23/2/33 58/4/33
+f 13/1/33 12/2/33 47/4/33
+f 2/1/33 33/2/33 36/4/33
+f 23/1/33 22/2/33 57/4/33
+f 12/1/33 11/2/33 46/4/33
+f 33/1/33 32/2/33 67/4/33
+f 22/1/33 21/2/33 56/4/33
+f 11/1/33 10/2/33 45/4/33
+f 32/1/33 31/2/33 66/4/33
+f 21/1/33 20/2/33 55/4/33
+f 10/1/33 9/2/33 44/4/33
+f 31/1/33 30/2/33 65/4/33
+f 20/1/33 19/2/33 54/4/33
+f 9/1/33 8/2/33 43/4/33
+f 30/1/33 29/2/33 64/4/33
+f 19/1/33 18/2/33 53/4/33
+f 3/1/33 2/2/33 37/4/33
+f 8/1/33 7/2/33 42/4/33
+f 29/1/33 28/2/33 63/4/33
+f 7/1/33 6/2/33 41/4/33
+f 18/1/33 17/2/33 52/4/33
+f 28/1/33 27/2/33 62/4/33
+f 6/1/33 5/2/33 40/4/33
+f 17/1/33 16/2/33 51/4/33
+f 27/1/33 26/2/33 61/4/33
+f 5/1/33 4/2/33 39/4/33
+f 16/1/33 15/2/33 50/4/33
+f 26/1/33 25/2/33 60/4/33
+f 4/1/33 3/2/33 38/4/33
+f 15/1/33 14/2/33 49/4/33
+f 25/1/33 24/2/33 59/4/33
+f 14/1/33 13/2/33 48/4/33
+f 81/5/34 86/6/34 80/7/34
+f 51/1/35 50/2/35 95/4/35
+f 52/1/36 51/2/36 94/4/36
+f 40/1/37 39/2/37 93/4/37
+f 41/1/38 40/2/38 92/4/38
+f 62/1/39 61/2/39 91/4/39
+f 63/1/40 62/2/40 90/4/40
+f 42/1/41 41/2/41 89/4/41
+f 43/1/42 42/2/42 88/4/42
+f 53/1/43 52/2/43 87/4/43
+f 54/1/44 53/2/44 86/4/44
+f 64/1/45 63/2/45 85/4/45
+f 65/1/46 64/2/46 84/4/46
+f 44/1/47 43/2/47 83/4/47
+f 45/1/48 44/2/48 82/4/48
+f 55/1/49 54/2/49 81/4/49
+f 56/1/50 55/2/50 80/4/50
+f 66/1/51 65/2/51 79/4/51
+f 67/1/52 66/2/52 78/4/52
+f 36/1/53 67/2/53 99/4/53
+f 46/1/54 45/2/54 77/4/54
+f 47/1/55 46/2/55 76/4/55
+f 57/1/56 56/2/56 75/4/56
+f 58/1/57 57/2/57 74/4/57
+f 48/1/58 47/2/58 73/4/58
+f 49/1/59 48/2/59 72/4/59
+f 50/1/60 49/2/60 98/4/60
+f 37/1/61 36/2/61 71/4/61
+f 38/1/62 37/2/62 70/4/62
+f 39/1/63 38/2/63 97/4/63
+f 59/1/64 58/2/64 69/4/64
+f 60/1/65 59/2/65 68/4/65
+f 61/1/66 60/2/66 96/4/66
+f 23/2/33 57/3/33 58/4/33
+f 12/2/33 46/3/33 47/4/33
+f 33/2/33 67/3/33 36/4/33
+f 22/2/33 56/3/33 57/4/33
+f 11/2/33 45/3/33 46/4/33
+f 32/2/67 66/3/67 67/4/67
+f 21/2/33 55/3/33 56/4/33
+f 10/2/33 44/3/33 45/4/33
+f 31/2/33 65/3/33 66/4/33
+f 20/2/33 54/3/33 55/4/33
+f 9/2/33 43/3/33 44/4/33
+f 30/2/33 64/3/33 65/4/33
+f 19/2/33 53/3/33 54/4/33
+f 8/2/33 42/3/33 43/4/33
+f 29/2/33 63/3/33 64/4/33
+f 18/2/33 52/3/33 53/4/33
+f 2/2/33 36/3/33 37/4/33
+f 7/2/33 41/3/33 42/4/33
+f 28/2/33 62/3/33 63/4/33
+f 6/2/33 40/3/33 41/4/33
+f 17/2/33 51/3/33 52/4/33
+f 27/2/33 61/3/33 62/4/33
+f 5/2/33 39/3/33 40/4/33
+f 16/2/67 50/3/67 51/4/67
+f 26/2/33 60/3/33 61/4/33
+f 4/2/33 38/3/33 39/4/33
+f 15/2/33 49/3/33 50/4/33
+f 25/2/33 59/3/33 60/4/33
+f 3/2/33 37/3/33 38/4/33
+f 14/2/33 48/3/33 49/4/33
+f 24/2/33 58/3/33 59/4/33
+f 13/2/33 47/3/33 48/4/33
+f 86/6/33 87/8/33 80/7/33
+f 87/8/33 94/9/33 80/7/33
+f 94/9/33 95/10/33 80/7/33
+f 95/10/68 98/11/68 80/7/68
+f 98/11/69 72/12/69 80/7/69
+f 72/12/70 73/13/70 80/7/70
+f 73/13/33 76/14/33 80/7/33
+f 76/14/33 77/15/33 80/7/33
+f 77/15/33 82/16/33 80/7/33
+f 82/16/33 83/17/33 80/7/33
+f 83/17/33 88/18/33 80/7/33
+f 88/18/33 89/19/33 80/7/33
+f 89/19/33 92/20/33 93/21/33
+f 80/7/71 89/19/71 93/21/71
+f 75/22/33 80/7/33 93/21/33
+f 74/23/33 75/22/33 93/21/33
+f 69/24/33 74/23/33 93/21/33
+f 71/25/72 97/26/72 70/27/72
+f 71/25/73 93/21/73 97/26/73
+f 99/28/74 93/21/74 71/25/74
+f 78/29/33 93/21/33 99/28/33
+f 79/30/33 93/21/33 78/29/33
+f 85/31/73 79/30/73 84/32/73
+f 85/31/33 93/21/33 79/30/33
+f 91/33/75 85/31/75 90/34/75
+f 91/33/33 93/21/33 85/31/33
+f 96/35/33 68/36/33 91/33/33
+f 68/36/76 69/24/76 93/21/76
+f 91/33/77 68/36/77 93/21/77
+f 50/2/35 98/3/35 95/4/35
+f 51/2/78 95/3/78 94/4/78
+f 39/2/37 97/3/37 93/4/37
+f 40/2/79 93/3/79 92/4/79
+f 61/2/39 96/3/39 91/4/39
+f 62/2/40 91/3/40 90/4/40
+f 41/2/80 92/3/80 89/4/80
+f 42/2/42 89/3/42 88/4/42
+f 52/2/43 94/3/43 87/4/43
+f 53/2/44 87/3/44 86/4/44
+f 63/2/81 90/3/81 85/4/81
+f 64/2/46 85/3/46 84/4/46
+f 43/2/47 88/3/47 83/4/47
+f 44/2/48 83/3/48 82/4/48
+f 54/2/49 86/3/49 81/4/49
+f 55/2/50 81/3/50 80/4/50
+f 65/2/51 84/3/51 79/4/51
+f 66/2/52 79/3/52 78/4/52
+f 67/2/82 78/3/82 99/4/82
+f 45/2/54 82/3/54 77/4/54
+f 46/2/55 77/3/55 76/4/55
+f 56/2/56 80/3/56 75/4/56
+f 57/2/57 75/3/57 74/4/57
+f 47/2/58 76/3/58 73/4/58
+f 48/2/83 73/3/83 72/4/83
+f 49/2/60 72/3/60 98/4/60
+f 36/2/84 99/3/84 71/4/84
+f 37/2/85 71/3/85 70/4/85
+f 38/2/63 70/3/63 97/4/63
+f 58/2/64 74/3/64 69/4/64
+f 59/2/65 69/3/65 68/4/65
+f 60/2/66 68/3/66 96/4/66
diff --git a/examples/rotations/rotations.pro b/examples/rotations/rotations.pro
new file mode 100644
index 00000000..dba80dad
--- /dev/null
+++ b/examples/rotations/rotations.pro
@@ -0,0 +1,15 @@
+!include( ../examples.pri ) {
+ error( "Couldn't find the examples.pri file!" )
+}
+
+SOURCES += main.cpp scatterdatamodifier.cpp
+HEADERS += scatterdatamodifier.h
+
+QT += widgets
+
+RESOURCES += rotations.qrc
+
+INSTALLS += target
+
+OTHER_FILES += doc/src/* \
+ doc/images/*
diff --git a/examples/rotations/rotations.qrc b/examples/rotations/rotations.qrc
new file mode 100644
index 00000000..bf66ebeb
--- /dev/null
+++ b/examples/rotations/rotations.qrc
@@ -0,0 +1,6 @@
+<RCC>
+ <qresource prefix="/">
+ <file>mesh/narrowarrow.obj</file>
+ <file>mesh/largesphere.obj</file>
+ </qresource>
+</RCC>
diff --git a/examples/rotations/scatterdatamodifier.cpp b/examples/rotations/scatterdatamodifier.cpp
new file mode 100644
index 00000000..d916ffbd
--- /dev/null
+++ b/examples/rotations/scatterdatamodifier.cpp
@@ -0,0 +1,183 @@
+/****************************************************************************
+**
+** Copyright (C) 2014 Digia Plc
+** All rights reserved.
+** For any questions to Digia, please use contact form at http://qt.digia.com
+**
+** This file is part of the QtDataVisualization module.
+**
+** Licensees holding valid Qt Enterprise licenses may use this file in
+** accordance with the Qt Enterprise License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia.
+**
+** If you have questions regarding the use of this file, please use
+** contact form at http://qt.digia.com
+**
+****************************************************************************/
+
+#include "scatterdatamodifier.h"
+#include <QtDataVisualization/qscatterdataproxy.h>
+#include <QtDataVisualization/qvalue3daxis.h>
+#include <QtDataVisualization/q3dscene.h>
+#include <QtDataVisualization/q3dcamera.h>
+#include <QtDataVisualization/qscatter3dseries.h>
+#include <QtDataVisualization/q3dtheme.h>
+#include <qmath.h>
+
+using namespace QtDataVisualization;
+
+static const float verticalRange = 8.0f;
+static const float horizontalRange = verticalRange;
+static const float ellipse_a = horizontalRange / 3.0f;
+static const float ellipse_b = verticalRange;
+static const float doublePi = float(M_PI) * 2.0f;
+static const float radiansToDegrees = 360.0f / doublePi;
+static const float animationFrames = 30.0f;
+
+ScatterDataModifier::ScatterDataModifier(Q3DScatter *scatter)
+ : m_graph(scatter),
+ m_fieldLines(12),
+ m_arrowsPerLine(16),
+ m_magneticField(new QScatter3DSeries),
+ m_sun(new QScatter3DSeries),
+ m_magneticFieldArray(0),
+ m_angleOffset(0.0f),
+ m_angleStep(doublePi / m_arrowsPerLine / animationFrames)
+{
+ m_graph->setShadowQuality(QAbstract3DGraph::ShadowQualityNone);
+ m_graph->scene()->activeCamera()->setCameraPreset(Q3DCamera::CameraPresetFront);
+
+ // Magnetic field lines use custom narrow arrow
+ m_magneticField->setItemSize(0.2f);
+ //! [3]
+ m_magneticField->setMesh(QAbstract3DSeries::MeshUserDefined);
+ m_magneticField->setUserDefinedMesh(QStringLiteral(":/mesh/narrowarrow.obj"));
+ //! [3]
+ //! [4]
+ QLinearGradient fieldGradient(0, 0, 16, 1024);
+ fieldGradient.setColorAt(0.0, Qt::black);
+ fieldGradient.setColorAt(1.0, Qt::white);
+ m_magneticField->setBaseGradient(fieldGradient);
+ m_magneticField->setColorStyle(Q3DTheme::ColorStyleRangeGradient);
+ //! [4]
+
+ // For 'sun' we use a custom large sphere.
+ m_sun->setItemSize(0.2f);
+ m_sun->setName(QStringLiteral("Sun"));
+ m_sun->setItemLabelFormat(QStringLiteral("@seriesName"));
+ m_sun->setMesh(QAbstract3DSeries::MeshUserDefined);
+ m_sun->setUserDefinedMesh(QStringLiteral(":/mesh/largesphere.obj"));
+ m_sun->setBaseColor(QColor(0xff, 0xBB, 0x00));
+ m_sun->dataProxy()->addItem(QScatterDataItem(QVector3D()));
+
+ m_graph->addSeries(m_magneticField);
+ m_graph->addSeries(m_sun);
+
+ // Configure the axes according to the data
+ m_graph->axisX()->setRange(-horizontalRange, horizontalRange);
+ m_graph->axisY()->setRange(-verticalRange, verticalRange);
+ m_graph->axisZ()->setRange(-horizontalRange, horizontalRange);
+ m_graph->axisX()->setSegmentCount(int(horizontalRange));
+ m_graph->axisZ()->setSegmentCount(int(horizontalRange));
+
+ QObject::connect(&m_rotationTimer, &QTimer::timeout, this,
+ &ScatterDataModifier::triggerRotation);
+
+ toggleRotation();
+ generateData();
+}
+
+ScatterDataModifier::~ScatterDataModifier()
+{
+ delete m_graph;
+}
+
+void ScatterDataModifier::generateData()
+{
+ // Reusing existing array is computationally cheaper than always generating new array, even if
+ // all data items change in the array, if the array size doesn't change.
+ if (!m_magneticFieldArray)
+ m_magneticFieldArray = new QScatterDataArray;
+
+ int arraySize = m_fieldLines * m_arrowsPerLine;
+ if (arraySize != m_magneticFieldArray->size())
+ m_magneticFieldArray->resize(arraySize);
+
+ QScatterDataItem *ptrToDataArray = &m_magneticFieldArray->first();
+
+ for (float i = 0; i < m_fieldLines; i++) {
+ float horizontalAngle = (doublePi * i) / m_fieldLines;
+ float xCenter = ellipse_a * qCos(horizontalAngle);
+ float zCenter = ellipse_a * qSin(horizontalAngle);
+
+ // Rotate - arrow always tangential to origo
+ //! [0]
+ QQuaternion yRotation = QQuaternion::fromAxisAndAngle(0.0f, 1.0f, 0.0f, horizontalAngle * radiansToDegrees);
+ //! [0]
+
+ for (float j = 0; j < m_arrowsPerLine; j++) {
+ // Calculate point on ellipse centered on origo and parallel to x-axis
+ float verticalAngle = ((doublePi * j) / m_arrowsPerLine) + m_angleOffset;
+ float xUnrotated = ellipse_a * qCos(verticalAngle);
+ float y = ellipse_b * qSin(verticalAngle);
+
+ // Rotate the ellipse around y-axis
+ float xRotated = xUnrotated * qCos(horizontalAngle);
+ float zRotated = xUnrotated * qSin(horizontalAngle);
+
+ // Add offset
+ float x = xCenter + xRotated;
+ float z = zCenter + zRotated;
+
+ //! [1]
+ QQuaternion zRotation = QQuaternion::fromAxisAndAngle(0.0f, 0.0f, 1.0f, verticalAngle * radiansToDegrees);
+ QQuaternion totalRotation = yRotation * zRotation;
+ //! [1]
+
+ ptrToDataArray->setPosition(QVector3D(x, y, z));
+ //! [2]
+ ptrToDataArray->setRotation(totalRotation);
+ //! [2]
+ ptrToDataArray++;
+ }
+ }
+
+ if (m_graph->selectedSeries() == m_magneticField)
+ m_graph->clearSelection();
+
+ m_magneticField->dataProxy()->resetArray(m_magneticFieldArray);
+}
+
+void ScatterDataModifier::setFieldLines(int lines)
+{
+ m_fieldLines = lines;
+ generateData();
+}
+
+void ScatterDataModifier::setArrowsPerLine(int arrows)
+{
+ m_angleOffset = 0.0f;
+ m_angleStep = doublePi / m_arrowsPerLine / animationFrames;
+ m_arrowsPerLine = arrows;
+ generateData();
+}
+
+void ScatterDataModifier::triggerRotation()
+{
+ m_angleOffset += m_angleStep;
+ generateData();
+}
+
+void ScatterDataModifier::toggleSun()
+{
+ m_sun->setVisible(!m_graph->seriesList().at(1)->isVisible());
+}
+
+void ScatterDataModifier::toggleRotation()
+{
+ if (m_rotationTimer.isActive())
+ m_rotationTimer.stop();
+ else
+ m_rotationTimer.start(15);
+}
diff --git a/examples/rotations/scatterdatamodifier.h b/examples/rotations/scatterdatamodifier.h
new file mode 100644
index 00000000..9df1f26a
--- /dev/null
+++ b/examples/rotations/scatterdatamodifier.h
@@ -0,0 +1,56 @@
+/****************************************************************************
+**
+** Copyright (C) 2014 Digia Plc
+** All rights reserved.
+** For any questions to Digia, please use contact form at http://qt.digia.com
+**
+** This file is part of the QtDataVisualization module.
+**
+** Licensees holding valid Qt Enterprise licenses may use this file in
+** accordance with the Qt Enterprise License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia.
+**
+** If you have questions regarding the use of this file, please use
+** contact form at http://qt.digia.com
+**
+****************************************************************************/
+
+#ifndef SCATTERDATAMODIFIER_H
+#define SCATTERDATAMODIFIER_H
+
+#include <QtDataVisualization/q3dscatter.h>
+#include <QtDataVisualization/qscatterdataproxy.h>
+#include <QtCore/QTimer>
+
+using namespace QtDataVisualization;
+
+class ScatterDataModifier : public QObject
+{
+ Q_OBJECT
+public:
+ explicit ScatterDataModifier(Q3DScatter *scatter);
+ ~ScatterDataModifier();
+
+ void generateData();
+
+public slots:
+ void setFieldLines(int lines);
+ void setArrowsPerLine(int arrows);
+ void toggleRotation();
+ void triggerRotation();
+ void toggleSun();
+
+private:
+ Q3DScatter *m_graph;
+ QTimer m_rotationTimer;
+ int m_fieldLines;
+ int m_arrowsPerLine;
+ QScatter3DSeries *m_magneticField;
+ QScatter3DSeries *m_sun;
+ QScatterDataArray *m_magneticFieldArray;
+ float m_angleOffset;
+ float m_angleStep;
+};
+
+#endif