summaryrefslogtreecommitdiffstats
path: root/examples/mapdata
diff options
context:
space:
mode:
Diffstat (limited to 'examples/mapdata')
-rw-r--r--examples/mapdata/main.cpp209
-rw-r--r--examples/mapdata/mapdata.cpp309
-rw-r--r--examples/mapdata/mapdata.h84
-rw-r--r--examples/mapdata/mapdata.pro10
-rw-r--r--examples/mapdata/mapdata.qrc9
-rw-r--r--examples/mapdata/suomi.jpgbin0 -> 157067 bytes
-rw-r--r--examples/mapdata/suomi2.jpgbin0 -> 287172 bytes
-rw-r--r--examples/mapdata/weirdthing.obj1232
8 files changed, 1853 insertions, 0 deletions
diff --git a/examples/mapdata/main.cpp b/examples/mapdata/main.cpp
new file mode 100644
index 00000000..34d9bec6
--- /dev/null
+++ b/examples/mapdata/main.cpp
@@ -0,0 +1,209 @@
+/****************************************************************************
+**
+** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the documentation of QtDataVis3D module.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
+** of its contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "mapdata.h"
+
+#include <QApplication>
+#include <QWidget>
+#include <QHBoxLayout>
+#include <QVBoxLayout>
+#include <QPushButton>
+#include <QCheckBox>
+#include <QSlider>
+#include <QComboBox>
+#include <QFontComboBox>
+#include <QLabel>
+#include <QScreen>
+#include <QFontDatabase>
+
+int main(int argc, char **argv)
+{
+ QApplication app(argc, argv);
+
+ QWidget *widget = new QWidget;
+ QHBoxLayout *hLayout = new QHBoxLayout(widget);
+ QVBoxLayout *vLayout = new QVBoxLayout(widget);
+
+ Q3DMaps *chart = new Q3DMaps();
+ QSize screenSize = chart->screen()->size();
+
+ QWidget *container = QWidget::createWindowContainer(chart);
+ container->setMinimumSize(QSize(screenSize.width() / 2, screenSize.height() / 2));
+ container->setMaximumSize(screenSize);
+ container->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
+ container->setFocusPolicy(Qt::StrongFocus);
+
+ widget->setWindowTitle(QStringLiteral("Population of a few cities in Finland"));
+
+ hLayout->addWidget(container);
+ hLayout->addLayout(vLayout);
+
+// QPushButton *dataButton = new QPushButton(widget);
+// dataButton->setText(QStringLiteral("Add a row of random data"));
+// dataButton->setEnabled(false);
+
+ QPushButton *themeButton = new QPushButton(widget);
+ themeButton->setText(QStringLiteral("Change theme"));
+
+ QPushButton *labelButton = new QPushButton(widget);
+ labelButton->setText(QStringLiteral("Change label style"));
+
+ QPushButton *styleButton = new QPushButton(widget);
+ styleButton->setText(QStringLiteral("Change bar style"));
+
+ QPushButton *cameraButton = new QPushButton(widget);
+ cameraButton->setText(QStringLiteral("Change camera preset"));
+
+// QPushButton *selectionButton = new QPushButton(widget);
+// selectionButton->setText(QStringLiteral("Change selection mode"));
+
+// QCheckBox *gridCheckBox = new QCheckBox(widget);
+// gridCheckBox->setText(QStringLiteral("Show grid"));
+// gridCheckBox->setChecked(true);
+
+// QCheckBox *rotationCheckBox = new QCheckBox(widget);
+// rotationCheckBox->setText("Rotate with slider");
+
+// QSlider *rotationSliderX = new QSlider(Qt::Horizontal, widget);
+// rotationSliderX->setTickInterval(1);
+// rotationSliderX->setMinimum(-180);
+// rotationSliderX->setValue(0);
+// rotationSliderX->setMaximum(180);
+// rotationSliderX->setEnabled(false);
+// QSlider *rotationSliderY = new QSlider(Qt::Horizontal, widget);
+// rotationSliderY->setTickInterval(1);
+// rotationSliderY->setMinimum(0);
+// rotationSliderY->setValue(0);
+// rotationSliderY->setMaximum(90);
+// rotationSliderY->setEnabled(false);
+
+// QSlider *sizeSliderX = new QSlider(Qt::Horizontal, widget);
+// sizeSliderX->setTickInterval(1);
+// sizeSliderX->setMinimum(1);
+// sizeSliderX->setValue(100);
+// sizeSliderX->setMaximum(100);
+// QSlider *sizeSliderZ = new QSlider(Qt::Horizontal, widget);
+// sizeSliderZ->setTickInterval(1);
+// sizeSliderZ->setMinimum(1);
+// sizeSliderZ->setValue(100);
+// sizeSliderZ->setMaximum(100);
+
+ QComboBox *valueDimension = new QComboBox(widget);
+ valueDimension->addItem(QStringLiteral("Height"));
+ valueDimension->addItem(QStringLiteral("Width"));
+ valueDimension->addItem(QStringLiteral("Depth"));
+ valueDimension->addItem(QStringLiteral("Radius"));
+ valueDimension->addItem(QStringLiteral("All"));
+ valueDimension->setCurrentIndex(0);
+
+ QFontComboBox *fontList = new QFontComboBox(widget);
+
+ QSlider *fontSizeSlider = new QSlider(Qt::Horizontal, widget);
+ fontSizeSlider->setTickInterval(1);
+ fontSizeSlider->setMinimum(1);
+ fontSizeSlider->setValue(20);
+ fontSizeSlider->setMaximum(200);
+
+// vLayout->addWidget(rotationCheckBox, 0, Qt::AlignTop);
+// vLayout->addWidget(rotationSliderX, 0, Qt::AlignTop);
+// vLayout->addWidget(rotationSliderY, 0, Qt::AlignTop);
+// vLayout->addWidget(new QLabel(QStringLiteral("Adjust relative bar size")));
+// vLayout->addWidget(sizeSliderX, 0, Qt::AlignTop);
+// vLayout->addWidget(sizeSliderZ, 0, Qt::AlignTop);
+// vLayout->addWidget(dataButton, 0, Qt::AlignTop);
+ vLayout->addWidget(themeButton, 0, Qt::AlignTop);
+ vLayout->addWidget(labelButton, 0, Qt::AlignTop);
+ vLayout->addWidget(styleButton, 0, Qt::AlignTop);
+ vLayout->addWidget(cameraButton, 0, Qt::AlignTop);
+ vLayout->addWidget(new QLabel(QStringLiteral("Apply value to:")));
+ vLayout->addWidget(valueDimension, 0, Qt::AlignTop);
+// vLayout->addWidget(selectionButton, 0, Qt::AlignTop);
+// vLayout->addWidget(gridCheckBox);
+ vLayout->addWidget(new QLabel(QStringLiteral("Change font")));
+ vLayout->addWidget(fontList);
+ vLayout->addWidget(new QLabel(QStringLiteral("Adjust font size")));
+ vLayout->addWidget(fontSizeSlider, 1, Qt::AlignTop);
+// // TODO: Add example for setMeshFileName
+
+ widget->show();
+
+ MapsModifier *modifier = new MapsModifier(chart);
+
+// QObject::connect(rotationSliderX, &QSlider::valueChanged, modifier, &MapsModifier::rotateX);
+// QObject::connect(rotationSliderY, &QSlider::valueChanged, modifier, &MapsModifier::rotateY);
+
+// QObject::connect(sizeSliderX, &QSlider::valueChanged, modifier, &MapsModifier::setSpecsX);
+// QObject::connect(sizeSliderZ, &QSlider::valueChanged, modifier, &MapsModifier::setSpecsZ);
+
+ QObject::connect(fontSizeSlider, &QSlider::valueChanged, modifier,
+ &MapsModifier::changeFontSize);
+
+ QObject::connect(styleButton, &QPushButton::clicked, modifier, &MapsModifier::changeStyle);
+ QObject::connect(cameraButton, &QPushButton::clicked, modifier,
+ &MapsModifier::changePresetCamera);
+ QObject::connect(themeButton, &QPushButton::clicked, modifier, &MapsModifier::changeTheme);
+ QObject::connect(labelButton, &QPushButton::clicked, modifier,
+ &MapsModifier::changeTransparency);
+// QObject::connect(dataButton, &QPushButton::clicked, modifier, &MapsModifier::addBars);
+// QObject::connect(selectionButton, &QPushButton::clicked, modifier,
+// &MapsModifier::changeSelectionMode);
+
+ QObject::connect(valueDimension, SIGNAL(currentIndexChanged(int)), modifier,
+ SLOT(changeValueDimension(int)));
+
+ QObject::connect(fontList, &QFontComboBox::currentFontChanged, modifier,
+ &MapsModifier::changeFont);
+
+// QObject::connect(gridCheckBox, &QCheckBox::stateChanged, modifier,
+// &MapsModifier::setGridEnabled);
+
+// QObject::connect(rotationCheckBox, &QCheckBox::stateChanged, rotationSliderX,
+// &QSlider::setEnabled);
+// QObject::connect(rotationCheckBox, &QCheckBox::stateChanged, rotationSliderX,
+// &QSlider::setValue);
+// QObject::connect(rotationCheckBox, &QCheckBox::stateChanged, rotationSliderY,
+// &QSlider::setEnabled);
+// QObject::connect(rotationCheckBox, &QCheckBox::stateChanged, rotationSliderY,
+// &QSlider::setValue);
+
+ modifier->start();
+
+ return app.exec();
+}
diff --git a/examples/mapdata/mapdata.cpp b/examples/mapdata/mapdata.cpp
new file mode 100644
index 00000000..fe1ffdcf
--- /dev/null
+++ b/examples/mapdata/mapdata.cpp
@@ -0,0 +1,309 @@
+/****************************************************************************
+**
+** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the documentation of QtDataVis3D module.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
+** of its contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "mapdata.h"
+#include <QImage>
+#include <QFile>
+
+using namespace QtDataVis3D;
+
+MapsModifier::MapsModifier(Q3DMaps *maps)
+ : m_chart(maps),
+ m_imageRect(QRect()),
+ m_fontSize(20.0f),
+ m_barSpecs(QVector3D(30.0f, 30.0f, 30.0f))
+{
+ m_chart->setBarSpecs(m_barSpecs, Q3DMaps::AdjustHeight);
+ QImage image = QImage(QStringLiteral(":/images/suomi"));
+ m_imageRect = image.rect();
+ m_chart->setAreaSpecs(m_imageRect, image);
+ //m_chart->setBarType(Cones, false);
+ m_chart->setMeshFileName(QStringLiteral(":/meshes/weirdthing"));
+}
+
+MapsModifier::~MapsModifier()
+{
+ delete m_chart;
+}
+
+void MapsModifier::start()
+{
+ addData();
+}
+
+void MapsModifier::addData()
+{
+ QDataItem *item;
+ item = new QDataItem();
+ item->setValue(191050);
+ item->setLabel("Oulu", true);
+ item->setPosition(QPoint(438, 510));
+ m_chart->addDataItem(item);
+
+ item = new QDataItem();
+ item->setValue(22274);
+ item->setLabel("Kemi", true);
+ item->setPosition(QPoint(412, 445));
+ m_chart->addDataItem(item);
+
+ item = new QDataItem();
+ item->setValue(60887);
+ item->setLabel("Rovaniemi", true);
+ item->setPosition(QPoint(451, 363));
+ m_chart->addDataItem(item);
+
+ item = new QDataItem();
+ item->setValue(16176);
+ item->setLabel("Kuusamo", true);
+ item->setPosition(QPoint(587, 419));
+ m_chart->addDataItem(item);
+
+ item = new QDataItem();
+ item->setValue(3998);
+ item->setLabel("Ivalo", true);
+ item->setPosition(QPoint(525, 156));
+ m_chart->addDataItem(item);
+
+ item = new QDataItem();
+ item->setValue(37978);
+ item->setLabel("Kajaani", true);
+ item->setPosition(QPoint(577, 596));
+ m_chart->addDataItem(item);
+
+ item = new QDataItem();
+ item->setValue(46809);
+ item->setLabel("Kokkola", true);
+ item->setPosition(QPoint(333, 624));
+ m_chart->addDataItem(item);
+
+ item = new QDataItem();
+ item->setValue(105236);
+ item->setLabel("Kuopio", true);
+ item->setPosition(QPoint(560, 706));
+ m_chart->addDataItem(item);
+
+ item = new QDataItem();
+ item->setValue(133557);
+ item->setLabel("Jyväskylä", true);
+ item->setPosition(QPoint(472, 754));
+ m_chart->addDataItem(item);
+
+ item = new QDataItem();
+ item->setValue(65771);
+ item->setLabel("Vaasa", true);
+ item->setPosition(QPoint(259, 702));
+ m_chart->addDataItem(item);
+
+ item = new QDataItem();
+ item->setValue(217603);
+ item->setLabel("Tampere", true);
+ item->setPosition(QPoint(365, 826));
+ m_chart->addDataItem(item);
+
+ item = new QDataItem();
+ item->setValue(180350);
+ item->setLabel("Turku", true);
+ item->setPosition(QPoint(270, 951));
+ m_chart->addDataItem(item);
+
+ item = new QDataItem();
+ item->setValue(605022);
+ item->setLabel("Helsinki", true);
+ item->setPosition(QPoint(399, 971));
+ m_chart->addDataItem(item);
+
+ item = new QDataItem();
+ item->setValue(72400);
+ item->setLabel("Lappeenranta", true);
+ item->setPosition(QPoint(543, 897));
+ m_chart->addDataItem(item);
+
+ item = new QDataItem();
+ item->setValue(14754);
+ item->setLabel("Tammisaari", true);
+ item->setPosition(QPoint(325, 1004));
+ m_chart->addDataItem(item);
+
+ item = new QDataItem();
+ item->setValue(1879);
+ item->setLabel("Enontekiö", true);
+ item->setPosition(QPoint(380, 175));
+ m_chart->addDataItem(item);
+
+ item = new QDataItem();
+ item->setValue(36624);
+ item->setLabel("Savonlinna", true);
+ item->setPosition(QPoint(587, 812));
+ m_chart->addDataItem(item);
+
+ item = new QDataItem();
+ item->setValue(54887);
+ item->setLabel("Kotka", true);
+ item->setPosition(QPoint(497, 948));
+ m_chart->addDataItem(item);
+}
+
+void MapsModifier::changeStyle()
+{
+ static int model = 0;
+ switch (model) {
+ case 0:
+ m_chart->setBarType(Cylinders, false);
+ break;
+ case 1:
+ m_chart->setBarType(Cylinders, true);
+ break;
+ case 2:
+ m_chart->setBarType(Cones, false);
+ break;
+ case 3:
+ m_chart->setBarType(Cones, true);
+ break;
+ case 4:
+ m_chart->setBarType(Bars, false);
+ break;
+ case 5:
+ m_chart->setBarType(Bars, true);
+ break;
+ case 6:
+ m_chart->setBarType(Pyramids, false);
+ break;
+ case 7:
+ m_chart->setBarType(Pyramids, true);
+ break;
+ case 8:
+ m_chart->setBarType(Spheres, false);
+ break;
+ case 9:
+ m_chart->setBarType(Spheres, true);
+ break;
+ }
+ model++;
+ if (model > 9)
+ model = 0;
+}
+
+void MapsModifier::changePresetCamera()
+{
+ static int preset = PresetFrontLow;
+
+ m_chart->setCameraPreset((CameraPreset)preset);
+
+ if (++preset > PresetDirectlyAboveCCW45)
+ preset = PresetFrontLow;
+}
+
+void MapsModifier::changeTheme()
+{
+ static int theme = ThemeSystem;
+
+ m_chart->setTheme((ColorTheme)theme);
+
+ if (++theme > ThemeLight)
+ theme = ThemeSystem;
+}
+
+//void MapsModifier::changeSelectionMode()
+//{
+// static int selectionMode = 0;
+
+// m_chart->setSelectionMode((SelectionMode)selectionMode);
+
+// if (++selectionMode > (int)ModeZoomColumn)
+// selectionMode = 0;
+//}
+
+void MapsModifier::changeTransparency()
+{
+ static int transparency = TransparencyFromTheme;
+
+ m_chart->setLabelTransparency((LabelTransparency)transparency);
+
+ if (++transparency > TransparencyNoBackground)
+ transparency = TransparencyNone;
+}
+
+void MapsModifier::changeValueDimension(int dimension)
+{
+ m_chart->setBarSpecs(m_barSpecs, (Q3DMaps::AdjustmentDirection)dimension);
+}
+
+void MapsModifier::changeFont(const QFont &font)
+{
+ QFont newFont = font;
+ newFont.setPointSizeF(m_fontSize);
+ qDebug() << newFont << newFont.style();
+ m_chart->setFont(newFont);
+}
+
+void MapsModifier::changeFontSize(int fontsize)
+{
+ m_fontSize = fontsize;
+ m_chart->setFontSize((GLfloat)m_fontSize);
+}
+
+//void MapsModifier::setGridEnabled(int enabled)
+//{
+// m_chart->setGridEnabled((bool)enabled);
+//}
+
+//void MapsModifier::rotateX(int rotation)
+//{
+// m_xRotation = rotation;
+// m_chart->setCameraPosition(m_xRotation, m_yRotation);
+//}
+
+//void MapsModifier::rotateY(int rotation)
+//{
+// m_yRotation = rotation;
+// m_chart->setCameraPosition(m_xRotation, m_yRotation);
+//}
+
+//void MapsModifier::setSpecsX(int barwidth)
+//{
+// m_barWidth = (float)barwidth / 100.0f;
+// m_chart->setBarSpecs(QSizeF(m_barWidth, m_barDepth), QSizeF(m_barSpacingX, m_barSpacingZ));
+//}
+
+//void MapsModifier::setSpecsZ(int bardepth)
+//{
+// m_barDepth = (float)bardepth / 100.0f;
+// m_chart->setBarSpecs(QSizeF(m_barWidth, m_barDepth), QSizeF(m_barSpacingX, m_barSpacingZ));
+//}
diff --git a/examples/mapdata/mapdata.h b/examples/mapdata/mapdata.h
new file mode 100644
index 00000000..00ba8e68
--- /dev/null
+++ b/examples/mapdata/mapdata.h
@@ -0,0 +1,84 @@
+/****************************************************************************
+**
+** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the documentation of QtDataVis3D module.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
+** of its contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef CHARTMODIFIER_H
+#define CHARTMODIFIER_H
+
+#include "q3dmaps.h"
+#include "qdataset.h"
+
+#include <QFont>
+#include <QDebug>
+
+using namespace QtDataVis3D;
+
+class MapsModifier : public QObject
+{
+ Q_OBJECT
+public:
+ explicit MapsModifier(Q3DMaps *maps);
+ ~MapsModifier();
+
+ void addData();
+ void changeStyle();
+ void changePresetCamera();
+ void changeTheme();
+// void changeSelectionMode();
+ void changeTransparency();
+ void changeFont(const QFont &font);
+ void changeFontSize(int fontsize);
+// void rotateX(int rotation);
+// void rotateY(int rotation);
+// void setGridEnabled(int enabled);
+// void setSpecsX(int barwidth);
+// void setSpecsZ(int bardepth);
+ void start();
+
+public slots:
+ void changeValueDimension(int dimension);
+
+private:
+ Q3DMaps *m_chart;
+ QRect m_imageRect;
+ int m_fontSize;
+ QVector3D m_barSpecs;
+};
+
+#endif
diff --git a/examples/mapdata/mapdata.pro b/examples/mapdata/mapdata.pro
new file mode 100644
index 00000000..848b2fb5
--- /dev/null
+++ b/examples/mapdata/mapdata.pro
@@ -0,0 +1,10 @@
+SOURCES += main.cpp mapdata.cpp
+HEADERS += mapdata.h
+
+QT += datavis3d
+
+target.path = $$[QT_INSTALL_EXAMPLES]/datavis3d/mapdata
+INSTALLS += target
+
+RESOURCES += \
+ mapdata.qrc
diff --git a/examples/mapdata/mapdata.qrc b/examples/mapdata/mapdata.qrc
new file mode 100644
index 00000000..9ae43a92
--- /dev/null
+++ b/examples/mapdata/mapdata.qrc
@@ -0,0 +1,9 @@
+<RCC>
+ <qresource prefix="/images">
+ <file alias="suomi">suomi2.jpg</file>
+ <file alias="finland">suomi.jpg</file>
+ </qresource>
+ <qresource prefix="/meshes">
+ <file alias="weirdthing">weirdthing.obj</file>
+ </qresource>
+</RCC>
diff --git a/examples/mapdata/suomi.jpg b/examples/mapdata/suomi.jpg
new file mode 100644
index 00000000..8d63914f
--- /dev/null
+++ b/examples/mapdata/suomi.jpg
Binary files differ
diff --git a/examples/mapdata/suomi2.jpg b/examples/mapdata/suomi2.jpg
new file mode 100644
index 00000000..b6c48e76
--- /dev/null
+++ b/examples/mapdata/suomi2.jpg
Binary files differ
diff --git a/examples/mapdata/weirdthing.obj b/examples/mapdata/weirdthing.obj
new file mode 100644
index 00000000..46c9e789
--- /dev/null
+++ b/examples/mapdata/weirdthing.obj
@@ -0,0 +1,1232 @@
+# Blender v2.66 (sub 0) OBJ File: 'kummajuttu.blend'
+# www.blender.org
+o Sphere
+v 0.003570 0.980785 -0.198744
+v 0.003570 0.923880 -0.386337
+v 0.003570 0.831470 -0.559224
+v 0.003570 0.707107 -0.710760
+v 0.003570 0.555570 -0.835123
+v 0.003570 0.382683 -0.927533
+v 0.003570 0.195090 -0.984439
+v 0.003570 0.000000 -1.003654
+v 0.003570 -0.195090 -0.984439
+v 0.003570 -0.382683 -0.927533
+v 0.003570 -0.555570 -0.835123
+v 0.003570 -0.707107 -0.710760
+v 0.003570 -0.831470 -0.559224
+v 0.003570 -0.923880 -0.386337
+v 0.003570 -0.980785 -0.198744
+v 0.078228 0.980785 -0.183894
+v 0.150016 0.923880 -0.357207
+v 0.216177 0.831470 -0.516933
+v 0.274168 0.707107 -0.656935
+v 0.321760 0.555570 -0.771831
+v 0.357123 0.382683 -0.857207
+v 0.378900 0.195090 -0.909781
+v 0.386254 0.000000 -0.927533
+v 0.378900 -0.195090 -0.909781
+v 0.357124 -0.382683 -0.857207
+v 0.321760 -0.555570 -0.771831
+v 0.274168 -0.707107 -0.656935
+v 0.216177 -0.831470 -0.516933
+v 0.150016 -0.923880 -0.357207
+v 0.078227 -0.980785 -0.183893
+v 0.003569 -1.000000 -0.003653
+v 0.141519 0.980785 -0.141603
+v 0.274168 0.923880 -0.274251
+v 0.396417 0.831470 -0.396501
+v 0.503570 0.707107 -0.503653
+v 0.591508 0.555570 -0.591591
+v 0.656851 0.382683 -0.656934
+v 0.697090 0.195090 -0.697173
+v 0.710677 0.000000 -0.710760
+v 0.697090 -0.195090 -0.697173
+v 0.656852 -0.382683 -0.656935
+v 0.591508 -0.555570 -0.591591
+v 0.503570 -0.707107 -0.503653
+v 0.396417 -0.831470 -0.396501
+v 0.274168 -0.923880 -0.274251
+v 0.141519 -0.980785 -0.141603
+v 0.183810 0.980785 -0.078311
+v 0.357123 0.923880 -0.150100
+v 0.516850 0.831470 -0.216261
+v 0.656851 0.707107 -0.274251
+v 0.771748 0.555570 -0.321843
+v 0.857123 0.382683 -0.357206
+v 0.909697 0.195090 -0.378983
+v 0.927450 0.000000 -0.386336
+v 0.909697 -0.195090 -0.378983
+v 0.857123 -0.382683 -0.357206
+v 0.771748 -0.555570 -0.321843
+v 0.656851 -0.707107 -0.274251
+v 0.516850 -0.831470 -0.216261
+v 0.357123 -0.923880 -0.150100
+v 0.183810 -0.980785 -0.078311
+v 0.198660 0.980785 -0.003653
+v 0.677357 1.471222 -0.125912
+v 0.559140 0.831470 -0.003653
+v 0.710676 0.707107 -0.003653
+v 0.835039 0.555570 -0.003653
+v 0.927449 0.382683 -0.003653
+v 0.984355 0.195090 -0.003653
+v 1.003570 0.000000 -0.003653
+v 0.984355 -0.195090 -0.003653
+v 0.927449 -0.382683 -0.003653
+v 0.835039 -0.555570 -0.003653
+v 0.710676 -0.707107 -0.003653
+v 0.559140 -0.831470 -0.003653
+v 0.386253 -0.923880 -0.003653
+v 0.198660 -0.980785 -0.003653
+v 0.183810 0.980785 0.071005
+v 0.357123 0.923880 0.142794
+v 0.516850 0.831470 0.208955
+v 0.656851 0.707107 0.266945
+v 0.771747 0.555570 0.314537
+v 0.857123 0.382683 0.349901
+v 0.909697 0.195090 0.371678
+v 0.927449 0.000000 0.379031
+v 0.909697 -0.195090 0.371678
+v 0.857123 -0.382683 0.349901
+v 0.771747 -0.555570 0.314537
+v 0.656851 -0.707107 0.266945
+v 0.516850 -0.831470 0.208955
+v 0.357123 -0.923880 0.142794
+v 0.183809 -0.980785 0.071005
+v 0.141519 0.980785 0.134297
+v 0.274168 0.923880 0.266945
+v 0.396417 0.831470 0.389194
+v 0.503569 0.707107 0.496347
+v 0.510364 0.555081 0.463719
+v 0.656851 0.382683 0.649629
+v 0.697089 0.195090 0.689867
+v 0.710676 0.000000 0.703454
+v 0.748412 -0.191114 0.569205
+v 0.656851 -0.382683 0.649629
+v 0.591507 -0.555570 0.584285
+v 0.503569 -0.707107 0.496347
+v 0.396417 -0.831470 0.389195
+v 0.274167 -0.923880 0.266945
+v 0.141519 -0.980785 0.134296
+v 0.078227 0.980785 0.176587
+v 0.150016 0.923880 0.349900
+v 0.216177 0.831470 0.509627
+v 0.274167 0.707107 0.649628
+v 0.291322 0.560724 0.763409
+v 0.277774 0.364301 0.818832
+v 0.378899 0.195090 0.902475
+v 0.386252 0.000000 0.920227
+v 0.379597 -0.105845 0.875443
+v 0.357122 -0.382683 0.849900
+v 0.321759 -0.555570 0.764525
+v 0.274167 -0.707107 0.649628
+v 0.216177 -0.831470 0.509627
+v 0.150016 -0.923880 0.349900
+v 0.078227 -0.980785 0.176587
+v 0.003569 0.980785 0.191437
+v 0.003569 0.923880 0.379030
+v 0.003569 0.831470 0.551917
+v 0.003569 0.707107 0.703454
+v 0.003569 0.555570 0.827816
+v 0.002822 0.396037 1.575037
+v -0.004287 0.229143 1.537837
+v 0.003569 0.000000 0.996347
+v 0.002270 0.152905 1.513075
+v 0.003569 -0.382683 0.920226
+v 0.003569 -0.555570 0.827816
+v 0.003569 -0.707107 0.703454
+v 0.003569 -0.831470 0.551917
+v 0.003569 -0.923880 0.379030
+v 0.003569 -0.980785 0.191437
+v -0.071089 0.980785 0.176587
+v -0.142877 0.923880 0.349900
+v -0.209038 0.831470 0.509627
+v -0.267029 0.707107 0.649628
+v -0.278921 0.569917 0.759967
+v -0.256269 0.375922 0.808299
+v -0.371761 0.195090 0.902474
+v -0.379115 0.000000 0.920226
+v -0.376325 -0.115657 0.878437
+v -0.349985 -0.382683 0.849900
+v -0.314621 -0.555570 0.764524
+v -0.267029 -0.707107 0.649628
+v -0.209038 -0.831470 0.509627
+v -0.142877 -0.923880 0.349900
+v -0.071088 -0.980785 0.176587
+v -0.134381 0.980785 0.134296
+v -0.267029 0.923880 0.266945
+v -0.389278 0.831470 0.389194
+v -0.496431 0.707107 0.496346
+v -0.514055 0.534945 0.480404
+v -0.649713 0.382683 0.649628
+v -0.689951 0.195090 0.689866
+v -0.703538 0.000000 0.703453
+v -0.717210 -0.189018 0.574779
+v -0.649712 -0.382683 0.649628
+v -0.584369 -0.555570 0.584284
+v -0.496431 -0.707107 0.496346
+v -0.389278 -0.831470 0.389194
+v -0.267029 -0.923880 0.266945
+v -0.134380 -0.980785 0.134296
+v -0.176671 0.980785 0.071004
+v -0.349984 0.923880 0.142793
+v -0.509711 0.831470 0.208954
+v -0.649712 0.707107 0.266944
+v -0.764608 0.555570 0.314536
+v -0.849984 0.382683 0.349899
+v -0.902558 0.195090 0.371676
+v -0.920310 0.000000 0.379030
+v -0.902558 -0.195090 0.371676
+v -0.849984 -0.382683 0.349899
+v -0.764608 -0.555570 0.314536
+v -0.649712 -0.707107 0.266944
+v -0.509711 -0.831470 0.208954
+v -0.349984 -0.923880 0.142793
+v -0.176671 -0.980785 0.071004
+v -0.191521 0.980785 -0.003654
+v -0.670833 1.424588 -0.130514
+v -0.552001 0.831470 -0.003654
+v -0.703537 0.707107 -0.003654
+v -0.827900 0.555570 -0.003654
+v -0.920310 0.382683 -0.003654
+v -0.977216 0.195090 -0.003654
+v -0.996431 0.000000 -0.003654
+v -0.977216 -0.195090 -0.003654
+v -0.920310 -0.382683 -0.003654
+v -0.827900 -0.555570 -0.003654
+v -0.703537 -0.707107 -0.003654
+v -0.552001 -0.831470 -0.003654
+v -0.379114 -0.923880 -0.003654
+v -0.191521 -0.980785 -0.003653
+v -0.176671 0.980785 -0.078311
+v -0.349984 0.923880 -0.150100
+v -0.509711 0.831470 -0.216261
+v -0.649712 0.707107 -0.274252
+v -0.764608 0.555570 -0.321844
+v -0.849984 0.382683 -0.357207
+v -0.902558 0.195090 -0.378984
+v -0.920310 0.000000 -0.386338
+v -0.902558 -0.195090 -0.378984
+v -0.849984 -0.382683 -0.357207
+v -0.764608 -0.555570 -0.321844
+v -0.649712 -0.707107 -0.274252
+v -0.509711 -0.831470 -0.216261
+v -0.349984 -0.923880 -0.150100
+v -0.176670 -0.980785 -0.078311
+v -0.004740 0.946694 -0.042452
+v -0.134380 0.980785 -0.141603
+v -0.267029 0.923880 -0.274252
+v -0.389278 0.831470 -0.396501
+v -0.496430 0.707107 -0.503654
+v -0.584368 0.555570 -0.591592
+v -0.649712 0.382683 -0.656935
+v -0.689950 0.195090 -0.697174
+v -0.703537 0.000000 -0.710761
+v -0.689950 -0.195090 -0.697174
+v -0.649711 -0.382683 -0.656935
+v -0.584368 -0.555570 -0.591592
+v -0.496430 -0.707107 -0.503654
+v -0.389278 -0.831470 -0.396501
+v -0.267029 -0.923880 -0.274252
+v -0.134380 -0.980785 -0.141603
+v -0.071088 0.980785 -0.183894
+v -0.142877 0.923880 -0.357207
+v -0.209038 0.831470 -0.516934
+v -0.267028 0.707107 -0.656935
+v -0.314620 0.555570 -0.771831
+v -0.349983 0.382683 -0.857207
+v -0.371760 0.195090 -0.909781
+v -0.379113 0.000000 -0.927533
+v -0.371760 -0.195090 -0.909781
+v -0.349983 -0.382683 -0.857207
+v -0.314620 -0.555570 -0.771831
+v -0.267028 -0.707107 -0.656935
+v -0.209038 -0.831470 -0.516934
+v -0.142877 -0.923880 -0.357207
+v -0.071088 -0.980785 -0.183893
+vt 0.999851 0.254364
+vt 1.000216 0.316861
+vt 0.947490 0.313317
+vt 1.001430 0.629353
+vt 1.001720 0.691851
+vt 0.931922 0.687175
+vt 0.999311 0.191868
+vt 0.951339 0.251099
+vt 1.001186 0.566854
+vt 0.934881 0.624892
+vt 1.007035 0.941813
+vt 0.425056 0.995097
+vt 0.688036 0.976661
+vt 0.998332 0.129375
+vt 0.957069 0.189020
+vt 1.000962 0.504356
+vt 0.937391 0.562576
+vt 1.003771 0.879336
+vt 0.883350 0.933568
+vt 1.000738 0.441858
+vt 0.939710 0.500246
+vt 1.002681 0.816844
+vt 0.911801 0.873194
+vt 1.000498 0.379359
+vt 0.942029 0.437916
+vt 1.002102 0.754348
+vt 0.922311 0.811468
+vt 0.944536 0.375600
+vt 0.928063 0.749391
+vt 0.967518 0.127291
+vt 0.914370 0.179467
+vt 0.874297 0.548708
+vt 0.793367 0.911832
+vt 0.878776 0.486849
+vt 0.830431 0.854878
+vt 0.883328 0.425001
+vt 0.847177 0.794812
+vt 0.888332 0.363217
+vt 0.857097 0.733741
+vt 0.894325 0.301577
+vt 0.864050 0.672239
+vt 0.902279 0.240220
+vt 0.869538 0.610526
+vt 0.673229 0.952622
+vt 0.840021 0.282844
+vt 0.799196 0.650007
+vt 0.851832 0.222629
+vt 0.806082 0.588829
+vt 0.647674 0.930190
+vt 0.936876 0.120264
+vt 0.870487 0.163782
+vt 0.812241 0.527510
+vt 0.728438 0.886032
+vt 0.818195 0.466151
+vt 0.761780 0.830244
+vt 0.824401 0.404841
+vt 0.779430 0.771193
+vt 0.831401 0.343685
+vt 0.790798 0.710891
+vt 0.764618 0.380134
+vt 0.718010 0.745282
+vt 0.772877 0.319381
+vt 0.728814 0.685077
+vt 0.783442 0.259124
+vt 0.737196 0.624350
+vt 0.798621 0.199874
+vt 0.744340 0.563358
+vt 0.707182 0.860354
+vt 0.906609 0.108594
+vt 0.824112 0.142946
+vt 0.750946 0.502250
+vt 0.757534 0.441139
+vt 0.702334 0.804422
+vt 0.876972 0.092772
+vt 0.772639 0.118425
+vt 0.689719 0.476662
+vt 0.628630 0.839481
+vt 0.696023 0.415406
+vt 0.648446 0.780984
+vt 0.703032 0.354290
+vt 0.660884 0.720963
+vt 0.711521 0.293471
+vt 0.669897 0.660249
+vt 0.722910 0.233237
+vt 0.677174 0.599187
+vt 0.740364 0.174247
+vt 0.683593 0.537954
+vt 0.619392 0.910335
+vt 0.589901 0.893857
+vt 0.656384 0.208905
+vt 0.618155 0.578027
+vt 0.673599 0.149088
+vt 0.623041 0.516276
+vt 0.559721 0.881431
+vt 0.848420 0.073445
+vt 0.710510 0.092518
+vt 0.654100 0.398336
+vt 0.584434 0.822825
+vt 0.597641 0.762372
+vt 0.638711 0.331180
+vt 0.615729 0.669357
+vt 0.646031 0.269806
+vt 0.571320 0.314734
+vt 0.606283 0.701204
+vt 0.552981 0.688148
+vt 0.575821 0.252624
+vt 0.551486 0.628681
+vt 0.582490 0.190702
+vt 0.562178 0.501443
+vt 0.594534 0.129251
+vt 0.627829 0.454510
+vt 0.529129 0.873575
+vt 0.822173 0.051396
+vt 0.626046 0.069542
+vt 0.568416 0.404557
+vt 0.541593 0.812161
+vt 0.548412 0.750252
+vt 0.498332 0.870625
+vt 0.803855 0.027548
+vt 0.507034 0.058187
+vt 0.564908 0.439180
+vt 0.501186 0.433146
+vt 0.499311 0.808132
+vt 0.501720 0.308149
+vt 0.499851 0.745636
+vt 0.500216 0.683139
+vt 0.502102 0.245652
+vt 0.548785 0.563632
+vt 0.500498 0.620641
+vt 0.502681 0.183156
+vt 0.500213 0.480106
+vt 0.503771 0.120664
+vt 0.500833 0.511381
+vt 0.450277 0.630514
+vt 0.411801 0.126807
+vt 0.439710 0.499754
+vt 0.383351 0.066432
+vt 0.437391 0.437424
+vt 0.457069 0.810979
+vt 0.925055 0.004903
+vt 1.188037 0.023339
+vt 0.500933 0.465124
+vt 0.433581 0.399732
+vt 0.451339 0.748901
+vt 0.431922 0.312826
+vt 0.447490 0.686683
+vt 0.428063 0.250609
+vt 0.422311 0.188532
+vt 0.351556 0.393216
+vt 0.394325 0.698423
+vt 0.357098 0.266259
+vt 0.347177 0.205188
+vt 0.454645 0.567651
+vt 0.385200 0.656262
+vt 0.330431 0.145123
+vt 0.378776 0.513151
+vt 0.293367 0.088168
+vt 0.374297 0.451292
+vt 0.467518 0.872709
+vt 0.414370 0.820533
+vt 0.188037 0.023339
+vt 0.173229 0.047378
+vt 0.402279 0.759780
+vt 0.228438 0.113968
+vt 0.312241 0.472490
+vt 0.436876 0.879736
+vt 0.370488 0.836218
+vt 0.147674 0.069810
+vt 0.306082 0.411171
+vt 0.351833 0.777370
+vt 0.364050 0.327761
+vt 0.340021 0.717156
+vt 0.290798 0.289109
+vt 0.331401 0.656315
+vt 0.279430 0.228807
+vt 0.383329 0.574999
+vt 0.261780 0.169756
+vt 0.318195 0.533849
+vt 0.218010 0.254718
+vt 0.324402 0.595159
+vt 0.264618 0.619866
+vt 0.202334 0.195578
+vt 0.257534 0.558861
+vt 0.175646 0.138926
+vt 0.250946 0.497750
+vt 0.406609 0.891406
+vt 0.376972 0.907228
+vt 0.119392 0.089665
+vt 0.244340 0.436642
+vt 0.298621 0.800125
+vt 0.299196 0.349993
+vt 0.237196 0.375650
+vt 0.283443 0.740876
+vt 0.228814 0.314923
+vt 0.272877 0.680619
+vt 0.177174 0.400813
+vt 0.222910 0.766763
+vt 0.169898 0.339751
+vt 0.211521 0.706529
+vt 0.160884 0.279037
+vt 0.203032 0.645710
+vt 0.148446 0.219016
+vt 0.128630 0.160519
+vt 0.189719 0.523338
+vt 0.290338 0.852691
+vt 0.272639 0.881575
+vt 0.089901 0.106143
+vt 0.183593 0.462046
+vt 0.084435 0.177175
+vt 0.196023 0.584594
+vt 0.127829 0.545490
+vt 0.348421 0.926554
+vt 0.210511 0.907482
+vt 0.059721 0.118569
+vt 0.123041 0.483724
+vt 0.240365 0.825753
+vt 0.173599 0.850912
+vt 0.118155 0.421973
+vt 0.156384 0.791095
+vt 0.112765 0.360300
+vt 0.146031 0.730194
+vt 0.106283 0.298796
+vt 0.138711 0.668820
+vt 0.097641 0.237628
+vt 0.132896 0.607213
+vt 0.052981 0.311852
+vt 0.071320 0.685266
+vt 0.048412 0.249748
+vt 0.067856 0.623066
+vt 0.041593 0.187839
+vt 0.064908 0.560821
+vt 0.322173 0.948604
+vt 0.126046 0.930458
+vt 0.029129 0.126425
+vt 0.062178 0.498557
+vt 0.094534 0.870749
+vt 0.059443 0.436293
+vt 0.082490 0.809298
+vt 0.056480 0.374049
+vt 0.075821 0.747376
+vt 0.486102 0.945947
+vt 0.995670 0.066893
+vt 1.173229 0.047378
+vt 1.147674 0.069810
+vt 1.119392 0.089665
+vt 1.089901 0.106143
+vt 1.059721 0.118569
+vt 0.303856 0.972452
+vt 1.029129 0.126425
+vt 0.000738 0.441858
+vt 0.002681 0.816844
+vt 0.002103 0.754348
+vt 0.000498 0.379359
+vt 0.001720 0.691851
+vt 1.048412 0.249748
+vt 1.052981 0.311852
+vt 0.001430 0.629353
+vt 1.041593 0.187839
+vt 0.001186 0.566854
+vt 0.007035 0.941813
+vt 0.000962 0.504356
+vt 0.003771 0.879336
+vt 1.383351 0.066432
+vt 0.000216 0.316861
+vn 0.000000 -0.825831 -0.563891
+vn 0.000000 -0.701041 -0.713095
+vn 0.272866 -0.701041 -0.658803
+vn 0.000000 0.192785 -0.981231
+vn 0.000000 0.378430 -0.925596
+vn 0.354198 0.378430 -0.855159
+vn 0.000000 -0.919523 -0.393017
+vn 0.215796 -0.825831 -0.520981
+vn 0.000000 0.000000 -1.000000
+vn 0.375500 0.192785 -0.906522
+vn 0.000000 0.919523 -0.393017
+vn -0.000519 0.997436 -0.071200
+vn 0.027406 0.997192 -0.069613
+vn 0.000000 -0.978362 -0.206793
+vn 0.150395 -0.919523 -0.363109
+vn 0.000000 -0.192785 -0.981231
+vn 0.382672 0.000000 -0.923856
+vn 0.000000 0.825831 -0.563891
+vn 0.150395 0.919523 -0.363109
+vn 0.000000 -0.378430 -0.925596
+vn 0.375500 -0.192785 -0.906522
+vn 0.000000 0.701041 -0.713095
+vn 0.215796 0.825831 -0.520981
+vn 0.000000 -0.550005 -0.835139
+vn 0.354198 -0.378430 -0.855159
+vn 0.000000 0.550005 -0.835139
+vn 0.272866 0.701041 -0.658803
+vn 0.319590 -0.550005 -0.771569
+vn 0.319590 0.550005 -0.771569
+vn 0.079134 -0.978362 -0.191046
+vn 0.277902 -0.919523 -0.277902
+vn 0.707083 0.000000 -0.707083
+vn 0.277902 0.919523 -0.277902
+vn 0.693838 -0.192785 -0.693838
+vn 0.398724 0.825831 -0.398724
+vn 0.654500 -0.378430 -0.654500
+vn 0.504227 0.701041 -0.504227
+vn 0.590533 -0.550005 -0.590533
+vn 0.590533 0.550005 -0.590533
+vn 0.504227 -0.701041 -0.504227
+vn 0.654500 0.378430 -0.654500
+vn 0.398724 -0.825831 -0.398724
+vn 0.693838 0.192785 -0.693838
+vn 0.055757 0.996734 -0.058199
+vn 0.658803 -0.701041 -0.272866
+vn 0.855159 0.378430 -0.354198
+vn 0.520981 -0.825831 -0.215796
+vn 0.906522 0.192785 -0.375500
+vn -0.236305 0.959014 -0.156285
+vn 0.146214 -0.978362 -0.146214
+vn 0.363109 -0.919523 -0.150395
+vn 0.923856 0.000000 -0.382672
+vn 0.011261 0.683889 -0.729453
+vn 0.906522 -0.192785 -0.375500
+vn 0.605701 0.653768 -0.453536
+vn 0.855159 -0.378430 -0.354198
+vn 0.658803 0.701041 -0.272866
+vn 0.771569 -0.550005 -0.319590
+vn 0.771569 0.550005 -0.319590
+vn 0.925596 -0.378430 0.000000
+vn 0.713095 0.701041 0.000000
+vn 0.835139 -0.550005 0.000000
+vn 0.835139 0.550005 0.000000
+vn 0.713095 -0.701041 0.000000
+vn 0.925596 0.378430 0.000000
+vn 0.563891 -0.825831 0.000000
+vn 0.981231 0.192785 0.000000
+vn 0.457015 0.878414 -0.139592
+vn 0.191046 -0.978362 -0.079134
+vn 0.393017 -0.919523 0.000000
+vn 1.000000 0.000000 0.000000
+vn 0.981231 -0.192785 0.000000
+vn 0.826655 0.536607 0.169225
+vn 0.206793 -0.978362 0.000000
+vn 0.363109 -0.919523 0.150395
+vn 0.918363 -0.013153 0.395428
+vn 0.332072 0.776086 0.536058
+vn 0.887234 -0.192480 0.419202
+vn 0.520981 0.825831 0.215796
+vn 0.853755 -0.365734 0.370556
+vn 0.661458 0.653645 0.367626
+vn 0.771569 -0.550005 0.319590
+vn 0.697836 0.595203 0.398389
+vn 0.658803 -0.701041 0.272866
+vn 0.855159 0.378430 0.354198
+vn 0.520981 -0.825831 0.215796
+vn 0.906522 0.192785 0.375500
+vn -0.493942 0.869381 -0.011963
+vn -0.170476 0.970946 0.167882
+vn 0.504227 -0.701041 0.504227
+vn 0.585894 0.507614 0.631642
+vn 0.398724 -0.825831 0.398724
+vn 0.693838 0.192785 0.693838
+vn 0.071383 0.994934 0.070467
+vn 0.191046 -0.978362 0.079134
+vn 0.277902 -0.919523 0.277902
+vn 0.742882 -0.188543 0.642293
+vn 0.277902 0.919523 0.277902
+vn 0.398724 0.825831 0.398724
+vn 0.673086 -0.270486 0.688314
+vn 0.604236 0.484725 0.632374
+vn 0.590533 -0.550005 0.590533
+vn 0.363536 -0.292184 0.884548
+vn 0.652760 0.351756 0.670919
+vn 0.377728 0.636097 0.672811
+vn 0.319590 -0.550005 0.771569
+vn 0.382183 0.480911 0.789056
+vn 0.272866 -0.701041 0.658803
+vn 0.561907 0.233131 0.793634
+vn 0.215796 -0.825831 0.520981
+vn 0.683676 -0.129032 0.718253
+vn 0.039155 0.994781 0.093997
+vn 0.146214 -0.978362 0.146214
+vn 0.150395 -0.919523 0.363109
+vn 0.489853 -0.255684 0.833430
+vn 0.150395 0.919523 0.363109
+vn 0.215796 0.825831 0.520981
+vn -0.000214 0.994781 0.101779
+vn 0.079134 -0.978362 0.191046
+vn 0.000000 -0.919523 0.393017
+vn 0.373913 -0.143284 0.916318
+vn 0.483200 0.406323 0.775475
+vn 0.000000 0.919523 0.393017
+vn 0.090335 -0.566515 0.819056
+vn 0.000000 0.825831 0.563891
+vn 0.001495 0.700217 0.713889
+vn 0.000000 -0.550005 0.835139
+vn 0.503006 0.524033 0.687246
+vn 0.164159 0.810419 0.562334
+vn 0.000000 -0.701041 0.713095
+vn 0.058321 -0.465743 0.882962
+vn 0.000000 -0.825831 0.563891
+vn 0.073977 0.415296 0.906644
+vn -0.589007 0.456130 0.667043
+vn -0.215796 -0.825831 0.520981
+vn -0.704520 0.368694 0.606342
+vn -0.150395 -0.919523 0.363109
+vn -0.530290 -0.262947 0.805994
+vn -0.150395 0.919523 0.363109
+vn 0.000000 -0.978362 0.206793
+vn -0.079134 -0.978362 0.191046
+vn 0.049959 0.476424 0.877773
+vn -0.661336 -0.128391 0.738975
+vn -0.215796 0.825831 0.520981
+vn -0.469863 -0.393567 0.790124
+vn -0.287149 0.689108 0.665304
+vn -0.319590 -0.550005 0.771569
+vn -0.272866 -0.701041 0.658803
+vn -0.673421 -0.193152 0.713553
+vn -0.604236 0.498520 0.621540
+vn -0.590533 -0.550005 0.590533
+vn -0.504227 -0.701041 0.504227
+vn -0.768883 0.370861 0.520829
+vn -0.544877 0.410474 0.731132
+vn -0.398724 -0.825831 0.398724
+vn -0.666066 0.221381 0.712241
+vn -0.277902 -0.919523 0.277902
+vn -0.671102 -0.151128 0.725761
+vn -0.038942 0.994964 0.092257
+vn -0.277902 0.919523 0.277902
+vn -0.146214 -0.978362 0.146214
+vn -0.398724 0.825831 0.398724
+vn -0.363109 -0.919523 0.150395
+vn -0.923856 0.000000 0.382672
+vn -0.069369 0.995270 0.067782
+vn -0.291696 0.836390 0.464003
+vn -0.191046 -0.978362 0.079134
+vn -0.897244 -0.193762 0.396680
+vn -0.520981 0.825831 0.215796
+vn -0.655873 -0.216712 0.723075
+vn -0.658803 0.701041 0.272866
+vn -0.771569 -0.550005 0.319590
+vn -0.740257 0.558123 0.374828
+vn -0.658803 -0.701041 0.272866
+vn -0.502091 0.528520 0.684500
+vn -0.520981 -0.825831 0.215796
+vn -0.906522 0.192785 0.375500
+vn -0.713095 -0.701041 0.000000
+vn -0.855159 0.378430 0.354198
+vn -0.925596 0.378430 0.000000
+vn -0.563891 -0.825831 0.000000
+vn -0.981231 0.192785 0.000000
+vn -0.393017 -0.919523 0.000000
+vn -1.000000 0.000000 0.000000
+vn -0.085879 0.995697 0.033967
+vn 0.169530 0.985382 0.015473
+vn -0.206793 -0.978362 0.000000
+vn -0.981231 -0.192785 0.000000
+vn -0.759606 0.649922 0.023621
+vn -0.855159 -0.378430 0.354198
+vn -0.925596 -0.378430 0.000000
+vn -0.713095 0.701041 0.000000
+vn -0.835139 -0.550005 0.000000
+vn -0.835139 0.550005 0.000000
+vn -0.855159 -0.378430 -0.354198
+vn -0.658803 0.701041 -0.272866
+vn -0.771569 -0.550005 -0.319590
+vn -0.771569 0.550005 -0.319590
+vn -0.658803 -0.701041 -0.272866
+vn -0.855159 0.378430 -0.354198
+vn -0.520981 -0.825831 -0.215796
+vn -0.363109 -0.919523 -0.150395
+vn -0.923856 0.000000 -0.382672
+vn -0.495224 0.845058 -0.201483
+vn -0.237465 0.770379 -0.591693
+vn -0.191046 -0.978362 -0.079134
+vn -0.906522 -0.192785 -0.375500
+vn -0.277902 -0.919523 -0.277902
+vn -0.906522 0.192785 -0.375500
+vn -0.707083 0.000000 -0.707083
+vn -0.073366 0.996765 -0.032228
+vn -0.277902 0.919523 -0.277902
+vn -0.146214 -0.978362 -0.146214
+vn -0.693838 -0.192785 -0.693838
+vn -0.520981 0.825831 -0.215796
+vn -0.398724 0.825831 -0.398724
+vn -0.654500 -0.378430 -0.654500
+vn -0.504227 0.701041 -0.504227
+vn -0.590533 -0.550005 -0.590533
+vn -0.590533 0.550005 -0.590533
+vn -0.504227 -0.701041 -0.504227
+vn -0.654500 0.378430 -0.654500
+vn -0.398724 -0.825831 -0.398724
+vn -0.693838 0.192785 -0.693838
+vn -0.272866 -0.701041 -0.658803
+vn -0.354198 0.378430 -0.855159
+vn -0.215796 -0.825831 -0.520981
+vn -0.375500 0.192785 -0.906522
+vn -0.150395 -0.919523 -0.363109
+vn -0.382672 0.000000 -0.923856
+vn -0.051729 0.997223 -0.053529
+vn -0.150395 0.919523 -0.363109
+vn -0.079134 -0.978362 -0.191046
+vn -0.375500 -0.192785 -0.906522
+vn -0.215796 0.825831 -0.520981
+vn -0.354198 -0.378430 -0.855159
+vn -0.272866 0.701041 -0.658803
+vn -0.319590 -0.550005 -0.771569
+vn -0.319590 0.550005 -0.771569
+vn 0.007691 0.999298 0.035981
+vn 0.000000 -0.999969 0.000000
+vn -0.026765 0.997467 -0.065828
+s 1
+f 13/1/1 12/2/2 27/3/3
+f 7/4/4 6/5/5 21/6/6
+f 14/7/7 13/1/1 28/8/8
+f 8/9/9 7/4/4 22/10/10
+f 2/11/11 1/12/12 16/13/13
+f 15/14/14 14/7/7 29/15/15
+f 9/16/16 8/9/9 23/17/17
+f 3/18/18 2/11/11 17/19/19
+f 10/20/20 9/16/16 24/21/21
+f 4/22/22 3/18/18 18/23/23
+f 11/24/24 10/20/20 25/25/25
+f 5/26/26 4/22/22 19/27/27
+f 12/2/2 11/24/24 26/28/28
+f 6/5/5 5/26/26 20/29/29
+f 30/30/30 29/15/15 45/31/31
+f 24/21/21 23/17/17 39/32/32
+f 18/23/23 17/19/19 33/33/33
+f 25/25/25 24/21/21 40/34/34
+f 19/27/27 18/23/23 34/35/35
+f 26/28/28 25/25/25 41/36/36
+f 20/29/29 19/27/27 35/37/37
+f 27/3/3 26/28/28 42/38/38
+f 21/6/6 20/29/29 36/39/39
+f 28/8/8 27/3/3 43/40/40
+f 22/10/10 21/6/6 37/41/41
+f 29/15/15 28/8/8 44/42/42
+f 23/17/17 22/10/10 38/43/43
+f 17/19/19 16/13/13 32/44/44
+f 44/42/42 43/40/40 58/45/45
+f 38/43/43 37/41/41 52/46/46
+f 45/31/31 44/42/42 59/47/47
+f 39/32/32 38/43/43 53/48/48
+f 33/33/33 32/44/44 47/49/49
+f 46/50/50 45/31/31 60/51/51
+f 40/34/34 39/32/32 54/52/52
+f 34/35/35 33/33/33 48/53/53
+f 41/36/36 40/34/34 55/54/54
+f 35/37/37 34/35/35 49/55/55
+f 42/38/38 41/36/36 56/56/56
+f 36/39/39 35/37/37 50/57/57
+f 43/40/40 42/38/38 57/58/58
+f 37/41/41 36/39/39 51/59/59
+f 57/58/58 56/56/56 71/60/60
+f 51/59/59 50/57/57 65/61/61
+f 58/45/45 57/58/58 72/62/62
+f 52/46/46 51/59/59 66/63/63
+f 59/47/47 58/45/45 73/64/64
+f 53/48/48 52/46/46 67/65/65
+f 60/51/51 59/47/47 74/66/66
+f 54/52/52 53/48/48 68/67/67
+f 48/53/53 47/49/49 63/68/68
+f 61/69/69 60/51/51 75/70/70
+f 55/54/54 54/52/52 69/71/71
+f 49/55/55 48/53/53 63/68/68
+f 56/56/56 55/54/54 70/72/72
+f 50/57/57 49/55/55 64/73/73
+f 76/74/74 75/70/70 90/75/75
+f 70/72/72 69/71/71 84/76/76
+f 64/73/73 63/68/68 78/77/77
+f 71/60/60 70/72/72 85/78/78
+f 65/61/61 64/73/73 79/79/79
+f 72/62/62 71/60/60 86/80/80
+f 66/63/63 65/61/61 80/81/81
+f 73/64/64 72/62/62 87/82/82
+f 67/65/65 66/63/63 81/83/83
+f 74/66/66 73/64/64 88/84/84
+f 68/67/67 67/65/65 82/85/85
+f 75/70/70 74/66/66 89/86/86
+f 69/71/71 68/67/67 83/87/87
+f 63/68/68 62/88/88 77/89/89
+f 89/86/86 88/84/84 103/90/90
+f 83/87/87 82/85/85 97/91/91
+f 90/75/75 89/86/86 104/92/92
+f 84/76/76 83/87/87 98/93/93
+f 78/77/77 77/89/89 92/94/94
+f 91/95/95 90/75/75 105/96/96
+f 85/78/78 84/76/76 100/97/97
+f 79/79/79 78/77/77 93/98/98
+f 86/80/80 85/78/78 100/97/97
+f 80/81/81 79/79/79 94/99/99
+f 87/82/82 86/80/80 101/100/100
+f 81/83/83 80/81/81 96/101/101
+f 88/84/84 87/82/82 102/102/102
+f 82/85/85 81/83/83 97/91/91
+f 102/102/102 101/100/100 116/103/103
+f 96/101/101 95/104/104 110/105/105
+f 103/90/90 102/102/102 117/106/106
+f 97/91/91 96/101/101 111/107/107
+f 104/92/92 103/90/90 118/108/108
+f 98/93/93 97/91/91 113/109/109
+f 105/96/96 104/92/92 119/110/110
+f 99/111/111 98/93/93 113/109/109
+f 93/98/98 92/94/94 107/112/112
+f 106/113/113 105/96/96 120/114/114
+f 100/97/97 99/111/111 115/115/115
+f 94/99/99 93/98/98 108/116/116
+f 101/100/100 100/97/97 115/115/115
+f 95/104/104 94/99/99 109/117/117
+f 108/116/116 107/112/112 122/118/118
+f 121/119/119 120/114/114 135/120/120
+f 115/115/115 114/121/121 129/122/122
+f 109/117/117 108/116/116 123/123/123
+f 116/103/103 115/115/115 131/124/124
+f 110/105/105 109/117/117 124/125/125
+f 117/106/106 116/103/103 131/124/124
+f 111/107/107 110/105/105 125/126/126
+f 118/108/108 117/106/106 132/127/127
+f 112/128/128 111/107/107 126/129/129
+f 119/110/110 118/108/108 133/130/130
+f 113/109/109 112/128/128 128/131/131
+f 120/114/114 119/110/110 134/132/132
+f 114/121/121 113/109/109 129/122/122
+f 127/133/133 126/129/129 141/134/134
+f 134/132/132 133/130/130 149/135/135
+f 128/131/131 127/133/133 143/136/136
+f 135/120/120 134/132/132 150/137/137
+f 129/122/122 128/131/131 144/138/138
+f 123/123/123 122/118/118 138/139/139
+f 136/140/140 135/120/120 151/141/141
+f 130/142/142 129/122/122 145/143/143
+f 124/125/125 123/123/123 139/144/144
+f 131/124/124 130/142/142 146/145/145
+f 125/126/126 124/125/125 140/146/146
+f 132/127/127 131/124/124 147/147/147
+f 126/129/129 125/126/126 140/146/146
+f 133/130/130 132/127/127 148/148/148
+f 146/145/145 145/143/143 160/149/149
+f 140/146/146 139/144/144 155/150/150
+f 147/147/147 146/145/145 162/151/151
+f 141/134/134 140/146/146 155/150/150
+f 148/148/148 147/147/147 163/152/152
+f 142/153/153 141/134/134 156/154/154
+f 149/135/135 148/148/148 164/155/155
+f 143/136/136 142/153/153 158/156/156
+f 150/137/137 149/135/135 165/157/157
+f 144/138/138 143/136/136 159/158/158
+f 138/139/139 137/159/159 153/160/160
+f 151/161/141 150/137/137 166/162/161
+f 145/143/143 144/138/138 160/149/149
+f 139/144/144 138/139/139 154/163/162
+f 165/157/157 164/155/155 180/164/163
+f 159/158/158 158/156/156 174/165/164
+f 153/160/160 152/166/165 168/167/166
+f 166/162/161 165/157/157 181/168/167
+f 160/149/149 159/158/158 175/169/168
+f 154/163/162 153/160/160 169/170/169
+f 161/171/170 160/149/149 175/169/168
+f 155/150/150 154/163/162 170/172/171
+f 162/151/151 161/171/170 177/173/172
+f 156/154/154 155/150/150 171/174/173
+f 163/152/152 162/151/151 178/175/174
+f 157/176/175 156/154/154 171/174/173
+f 164/155/155 163/152/152 179/177/176
+f 158/156/156 157/176/175 173/178/177
+f 178/175/174 177/173/172 193/179/178
+f 172/180/179 171/174/173 187/181/180
+f 179/177/176 178/175/174 194/182/181
+f 173/178/177 172/180/179 188/183/182
+f 180/164/163 179/177/176 195/184/183
+f 174/165/164 173/178/177 189/185/184
+f 168/167/166 167/186/185 182/187/186
+f 181/168/167 180/164/163 196/188/187
+f 175/169/168 174/165/164 190/189/188
+f 169/170/169 168/167/166 184/190/189
+f 176/191/190 175/169/168 191/192/191
+f 170/172/171 169/170/169 185/193/192
+f 177/173/172 176/191/190 192/194/193
+f 171/174/173 170/172/171 186/195/194
+f 191/192/191 190/189/188 206/196/195
+f 185/193/192 184/190/189 200/197/196
+f 192/194/193 191/192/191 207/198/197
+f 186/195/194 185/193/192 201/199/198
+f 193/179/178 192/194/193 208/200/199
+f 187/181/180 186/195/194 202/201/200
+f 194/182/181 193/179/178 209/202/201
+f 188/183/182 187/181/180 202/201/200
+f 195/184/183 194/182/181 210/203/202
+f 189/185/184 188/183/182 204/204/203
+f 183/205/204 182/187/186 198/206/205
+f 196/188/187 195/184/183 211/207/206
+f 190/189/188 189/185/184 205/208/207
+f 184/190/189 183/205/204 198/206/205
+f 210/203/202 209/202/201 226/209/208
+f 204/204/203 203/210/209 220/211/210
+f 198/206/205 197/212/211 214/213/212
+f 211/207/206 210/203/202 227/214/213
+f 205/208/207 204/204/203 221/215/214
+f 199/216/215 198/206/205 215/217/216
+f 206/196/195 205/208/207 222/218/217
+f 200/197/196 199/216/215 216/219/218
+f 207/198/197 206/196/195 223/220/219
+f 201/199/198 200/197/196 217/221/220
+f 208/200/199 207/198/197 224/222/221
+f 202/201/200 201/199/198 218/223/222
+f 209/202/201 208/200/199 225/224/223
+f 203/210/209 202/201/200 219/225/224
+f 224/222/221 223/220/219 239/226/225
+f 218/223/222 217/221/220 233/227/226
+f 225/224/223 224/222/221 240/228/227
+f 219/225/224 218/223/222 234/229/228
+f 226/209/208 225/224/223 241/230/229
+f 220/211/210 219/225/224 235/231/230
+f 214/213/212 213/232/231 229/233/232
+f 227/214/213 226/209/208 242/234/233
+f 221/215/214 220/211/210 236/235/234
+f 215/217/216 214/213/212 230/236/235
+f 222/218/217 221/215/214 237/237/236
+f 216/219/218 215/217/216 231/238/237
+f 223/220/219 222/218/217 238/239/238
+f 217/221/220 216/219/218 232/240/239
+f 1/12/12 212/241/240 16/13/13
+f 31/242/241 15/14/14 30/30/30
+f 31/242/241 30/30/30 46/50/50
+f 16/13/13 212/241/240 32/44/44
+f 32/44/44 212/241/240 47/49/49
+f 31/242/241 46/50/50 61/69/69
+f 47/49/49 212/241/240 62/88/88
+f 31/242/241 61/69/69 76/74/74
+f 31/242/241 76/74/74 91/95/95
+f 62/88/88 212/241/240 77/89/89
+f 77/89/89 212/241/240 92/94/94
+f 31/242/241 91/95/95 106/113/113
+f 92/94/94 212/241/240 107/112/112
+f 31/242/241 106/113/113 121/119/119
+f 31/242/241 121/119/119 136/140/140
+f 107/112/112 212/241/240 122/118/118
+f 122/118/118 212/241/240 137/159/159
+f 31/242/241 136/140/140 151/141/141
+f 137/159/159 212/241/240 152/166/165
+f 31/242/241 151/141/141 166/243/161
+f 31/242/241 166/243/161 181/244/167
+f 152/166/165 212/241/240 167/186/185
+f 167/186/185 212/241/240 182/187/186
+f 31/242/241 181/244/167 196/245/187
+f 31/242/241 196/245/187 211/246/206
+f 182/187/186 212/241/240 197/212/211
+f 31/242/241 211/246/206 227/247/213
+f 197/212/211 212/241/240 213/232/231
+f 213/232/231 212/241/240 228/248/242
+f 31/242/241 227/247/213 242/249/233
+f 31/242/241 242/249/233 15/14/14
+f 237/237/236 236/235/234 10/250/20
+f 231/238/237 230/236/235 4/251/22
+f 238/239/238 237/237/236 10/250/20
+f 232/240/239 231/238/237 5/252/26
+f 239/226/225 238/239/238 11/253/24
+f 233/227/226 232/240/239 6/254/5
+f 240/255/227 239/256/225 13/1/1
+f 234/229/228 233/227/226 7/257/4
+f 228/248/242 212/241/240 1/12/12
+f 241/258/229 240/255/227 14/7/7
+f 235/231/230 234/229/228 8/259/9
+f 229/233/232 228/248/242 2/260/11
+f 242/249/233 241/258/229 15/14/14
+f 236/235/234 235/231/230 9/261/16
+f 230/236/235 229/233/232 3/262/18
+f 28/8/8 13/1/1 27/3/3
+f 22/10/10 7/4/4 21/6/6
+f 29/15/15 14/7/7 28/8/8
+f 23/17/17 8/9/9 22/10/10
+f 17/19/19 2/11/11 16/13/13
+f 30/30/30 15/14/14 29/15/15
+f 24/21/21 9/16/16 23/17/17
+f 18/23/23 3/18/18 17/19/19
+f 25/25/25 10/20/20 24/21/21
+f 19/27/27 4/22/22 18/23/23
+f 26/28/28 11/24/24 25/25/25
+f 20/29/29 5/26/26 19/27/27
+f 27/3/3 12/2/2 26/28/28
+f 21/6/6 6/5/5 20/29/29
+f 46/50/50 30/30/30 45/31/31
+f 40/34/34 24/21/21 39/32/32
+f 34/35/35 18/23/23 33/33/33
+f 41/36/36 25/25/25 40/34/34
+f 35/37/37 19/27/27 34/35/35
+f 42/38/38 26/28/28 41/36/36
+f 36/39/39 20/29/29 35/37/37
+f 43/40/40 27/3/3 42/38/38
+f 37/41/41 21/6/6 36/39/39
+f 44/42/42 28/8/8 43/40/40
+f 38/43/43 22/10/10 37/41/41
+f 45/31/31 29/15/15 44/42/42
+f 39/32/32 23/17/17 38/43/43
+f 33/33/33 17/19/19 32/44/44
+f 59/47/47 44/42/42 58/45/45
+f 53/48/48 38/43/43 52/46/46
+f 60/51/51 45/31/31 59/47/47
+f 54/52/52 39/32/32 53/48/48
+f 48/53/53 33/33/33 47/49/49
+f 61/69/69 46/50/50 60/51/51
+f 55/54/54 40/34/34 54/52/52
+f 49/55/55 34/35/35 48/53/53
+f 56/56/56 41/36/36 55/54/54
+f 50/57/57 35/37/37 49/55/55
+f 57/58/58 42/38/38 56/56/56
+f 51/59/59 36/39/39 50/57/57
+f 58/45/45 43/40/40 57/58/58
+f 52/46/46 37/41/41 51/59/59
+f 72/62/62 57/58/58 71/60/60
+f 66/63/63 51/59/59 65/61/61
+f 73/64/64 58/45/45 72/62/62
+f 67/65/65 52/46/46 66/63/63
+f 74/66/66 59/47/47 73/64/64
+f 68/67/67 53/48/48 67/65/65
+f 75/70/70 60/51/51 74/66/66
+f 69/71/71 54/52/52 68/67/67
+f 47/49/49 62/88/88 63/68/68
+f 76/74/74 61/69/69 75/70/70
+f 70/72/72 55/54/54 69/71/71
+f 64/73/73 49/55/55 63/68/68
+f 71/60/60 56/56/56 70/72/72
+f 65/61/61 50/57/57 64/73/73
+f 91/95/95 76/74/74 90/75/75
+f 85/78/78 70/72/72 84/76/76
+f 79/79/79 64/73/73 78/77/77
+f 86/80/80 71/60/60 85/78/78
+f 80/81/81 65/61/61 79/79/79
+f 87/82/82 72/62/62 86/80/80
+f 81/83/83 66/63/63 80/81/81
+f 88/84/84 73/64/64 87/82/82
+f 82/85/85 67/65/65 81/83/83
+f 89/86/86 74/66/66 88/84/84
+f 83/87/87 68/67/67 82/85/85
+f 90/75/75 75/70/70 89/86/86
+f 84/76/76 69/71/71 83/87/87
+f 78/77/77 63/68/68 77/89/89
+f 104/92/92 89/86/86 103/90/90
+f 98/93/93 83/87/87 97/91/91
+f 105/96/96 90/75/75 104/92/92
+f 99/111/111 84/76/76 98/93/93
+f 93/98/98 78/77/77 92/94/94
+f 106/113/113 91/95/95 105/96/96
+f 84/76/76 99/111/111 100/97/97
+f 94/99/99 79/79/79 93/98/98
+f 101/100/100 86/80/80 100/97/97
+f 95/104/104 80/81/81 94/99/99
+f 102/102/102 87/82/82 101/100/100
+f 80/81/81 95/104/104 96/101/101
+f 103/90/90 88/84/84 102/102/102
+f 81/83/83 96/101/101 97/91/91
+f 117/106/106 102/102/102 116/103/103
+f 111/107/107 96/101/101 110/105/105
+f 118/108/108 103/90/90 117/106/106
+f 112/128/128 97/91/91 111/107/107
+f 119/110/110 104/92/92 118/108/108
+f 97/91/91 112/128/128 113/109/109
+f 120/114/114 105/96/96 119/110/110
+f 114/121/121 99/111/111 113/109/109
+f 108/116/116 93/98/98 107/112/112
+f 121/119/119 106/113/113 120/114/114
+f 99/111/111 114/121/121 115/115/115
+f 109/117/117 94/99/99 108/116/116
+f 116/103/103 101/100/100 115/115/115
+f 110/105/105 95/104/104 109/117/117
+f 123/123/123 108/116/116 122/118/118
+f 136/140/140 121/119/119 135/120/120
+f 130/142/142 115/115/115 129/122/122
+f 124/125/125 109/117/117 123/123/123
+f 115/115/115 130/142/142 131/124/124
+f 125/126/126 110/105/105 124/125/125
+f 132/127/127 117/106/106 131/124/124
+f 126/129/129 111/107/107 125/126/126
+f 133/130/130 118/108/108 132/127/127
+f 127/133/133 112/128/128 126/129/129
+f 134/132/132 119/110/110 133/130/130
+f 112/128/128 127/133/133 128/131/131
+f 135/120/120 120/114/114 134/132/132
+f 113/109/109 128/131/131 129/122/122
+f 142/153/153 127/133/133 141/134/134
+f 133/130/130 148/148/148 149/135/135
+f 127/133/133 142/153/153 143/136/136
+f 134/132/132 149/135/135 150/137/137
+f 128/131/131 143/136/136 144/138/138
+f 122/118/118 137/159/159 138/139/139
+f 135/120/120 150/263/137 151/141/141
+f 129/122/122 144/138/138 145/143/143
+f 123/123/123 138/139/139 139/144/144
+f 130/142/142 145/143/143 146/145/145
+f 124/125/125 139/144/144 140/146/146
+f 131/124/124 146/145/145 147/147/147
+f 141/134/134 126/129/129 140/146/146
+f 132/127/127 147/147/147 148/148/148
+f 161/171/170 146/145/145 160/149/149
+f 139/144/144 154/163/162 155/150/150
+f 146/145/145 161/171/170 162/151/151
+f 156/154/154 141/134/134 155/150/150
+f 147/147/147 162/151/151 163/152/152
+f 157/176/175 142/153/153 156/154/154
+f 148/148/148 163/152/152 164/155/155
+f 142/153/153 157/176/175 158/156/156
+f 149/135/135 164/155/155 165/157/157
+f 143/136/136 158/156/156 159/158/158
+f 137/159/159 152/166/165 153/160/160
+f 150/137/137 165/157/157 166/162/161
+f 144/138/138 159/158/158 160/149/149
+f 138/139/139 153/160/160 154/163/162
+f 164/155/155 179/177/176 180/164/163
+f 158/156/156 173/178/177 174/165/164
+f 152/166/165 167/186/185 168/167/166
+f 165/157/157 180/164/163 181/168/167
+f 159/158/158 174/165/164 175/169/168
+f 153/160/160 168/167/166 169/170/169
+f 176/191/190 161/171/170 175/169/168
+f 154/163/162 169/170/169 170/172/171
+f 161/171/170 176/191/190 177/173/172
+f 155/150/150 170/172/171 171/174/173
+f 162/151/151 177/173/172 178/175/174
+f 172/180/179 157/176/175 171/174/173
+f 163/152/152 178/175/174 179/177/176
+f 157/176/175 172/180/179 173/178/177
+f 177/173/172 192/194/193 193/179/178
+f 171/174/173 186/195/194 187/181/180
+f 178/175/174 193/179/178 194/182/181
+f 172/180/179 187/181/180 188/183/182
+f 179/177/176 194/182/181 195/184/183
+f 173/178/177 188/183/182 189/185/184
+f 183/205/204 168/167/166 182/187/186
+f 180/164/163 195/184/183 196/188/187
+f 174/165/164 189/185/184 190/189/188
+f 168/167/166 183/205/204 184/190/189
+f 175/169/168 190/189/188 191/192/191
+f 169/170/169 184/190/189 185/193/192
+f 176/191/190 191/192/191 192/194/193
+f 170/172/171 185/193/192 186/195/194
+f 190/189/188 205/208/207 206/196/195
+f 184/190/189 199/216/215 200/197/196
+f 191/192/191 206/196/195 207/198/197
+f 185/193/192 200/197/196 201/199/198
+f 192/194/193 207/198/197 208/200/199
+f 186/195/194 201/199/198 202/201/200
+f 193/179/178 208/200/199 209/202/201
+f 203/210/209 188/183/182 202/201/200
+f 194/182/181 209/202/201 210/203/202
+f 188/183/182 203/210/209 204/204/203
+f 182/187/186 197/212/211 198/206/205
+f 195/184/183 210/203/202 211/207/206
+f 189/185/184 204/204/203 205/208/207
+f 199/216/215 184/190/189 198/206/205
+f 209/202/201 225/224/223 226/209/208
+f 203/210/209 219/225/224 220/211/210
+f 197/212/211 213/232/231 214/213/212
+f 210/203/202 226/209/208 227/214/213
+f 204/204/203 220/211/210 221/215/214
+f 198/206/205 214/213/212 215/217/216
+f 205/208/207 221/215/214 222/218/217
+f 199/216/215 215/217/216 216/219/218
+f 206/196/195 222/218/217 223/220/219
+f 200/197/196 216/219/218 217/221/220
+f 207/198/197 223/220/219 224/222/221
+f 201/199/198 217/221/220 218/223/222
+f 208/200/199 224/222/221 225/224/223
+f 202/201/200 218/223/222 219/225/224
+f 223/220/219 238/239/238 239/226/225
+f 217/221/220 232/240/239 233/227/226
+f 224/222/221 239/226/225 240/228/227
+f 218/223/222 233/227/226 234/229/228
+f 225/224/223 240/228/227 241/230/229
+f 219/225/224 234/229/228 235/231/230
+f 213/232/231 228/248/242 229/233/232
+f 226/209/208 241/230/229 242/234/233
+f 220/211/210 235/231/230 236/235/234
+f 214/213/212 229/233/232 230/236/235
+f 221/215/214 236/235/234 237/237/236
+f 215/217/216 230/236/235 231/238/237
+f 222/218/217 237/237/236 238/239/238
+f 216/219/218 231/238/237 232/240/239
+f 236/235/234 9/261/16 10/250/20
+f 230/236/235 3/262/18 4/251/22
+f 11/253/24 238/239/238 10/250/20
+f 231/238/237 4/251/22 5/252/26
+f 12/264/2 239/226/225 11/253/24
+f 232/240/239 5/252/26 6/254/5
+f 239/256/225 12/2/2 13/1/1
+f 233/227/226 6/254/5 7/257/4
+f 240/255/227 13/1/1 14/7/7
+f 234/229/228 7/257/4 8/259/9
+f 228/248/242 1/12/12 2/260/11
+f 241/258/229 14/7/7 15/14/14
+f 235/231/230 8/259/9 9/261/16
+f 229/233/232 2/260/11 3/262/18