Surface Graph Gallery¶
Surface Graph Gallery demonstrates three different custom features with Surface3D graphs. The features have their own tabs in the application.
# Copyright (C) 2023 The Qt Company Ltd.
# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
from __future__ import annotations
from math import sin, pi
from PySide6.QtCore import QObject, QRandomGenerator, Slot
from PySide6.QtQml import QmlElement
from PySide6.QtGui import QVector3D
from PySide6.QtDataVisualization import QSurfaceDataItem, QSurface3DSeries
QML_IMPORT_NAME = "SurfaceGallery"
QML_IMPORT_MAJOR_VERSION = 1
@QmlElement
class DataSource(QObject):
def __init__(self, parent=None):
super().__init__(parent)
self.m_index = -1
self.m_resetArray = None
self.m_data = []
@Slot(int, int, int, float, float, float, float, float, float)
def generateData(self, cacheCount, rowCount, columnCount,
xMin, xMax, yMin, yMax, zMin, zMax):
if not cacheCount or not rowCount or not columnCount:
return
self.clearData()
xRange = xMax - xMin
yRange = yMax - yMin
zRange = zMax - zMin
cacheIndexStep = columnCount / cacheCount
cacheStep = float(cacheIndexStep) * xRange / float(columnCount)
# Populate caches
self.m_data = []
rand_gen = QRandomGenerator.global_()
for i in range(0, cacheCount):
cache = []
cacheXAdjustment = cacheStep * i
cacheIndexAdjustment = cacheIndexStep * i
for j in range(0, rowCount):
row = []
rowMod = (float(j)) / float(rowCount)
yRangeMod = yRange * rowMod
zRangeMod = zRange * rowMod
z = zRangeMod + zMin
rowColWaveAngleMul = pi * pi * rowMod
rowColWaveMul = yRangeMod * 0.2
for k in range(0, columnCount):
colMod = (float(k)) / float(columnCount)
xRangeMod = xRange * colMod
x = xRangeMod + xMin + cacheXAdjustment
colWave = sin((2.0 * pi * colMod) - (1.0 / 2.0 * pi)) + 1.0
rand_nr = rand_gen.generateDouble() * 0.15
y = ((colWave * ((sin(rowColWaveAngleMul * colMod) + 1.0)))
* rowColWaveMul + rand_nr * yRangeMod)
index = k + cacheIndexAdjustment
if index >= columnCount:
# Wrap over
index -= columnCount
x -= xRange
row.append(QSurfaceDataItem(QVector3D(x, y, z)))
cache.append(row)
self.m_data.append(cache)
@Slot(QSurface3DSeries)
def update(self, series):
if series and self.m_data:
# Each iteration uses data from a different cached array
self.m_index += 1
if self.m_index > len(self.m_data) - 1:
self.m_index = 0
array = self.m_data[self.m_index]
newRowCount = len(array)
newColumnCount = len(array[0])
# Copy items from our cache to the reset array
self.m_resetArray = []
for i in range(0, newRowCount):
sourceRow = array[i]
row = []
for j in range(0, newColumnCount):
row.append(QSurfaceDataItem(sourceRow[j].position()))
self.m_resetArray.append(row)
# Notify the proxy that data has changed
series.dataProxy().resetArray(self.m_resetArray)
@Slot()
def clearData(self):
self.m_data = []
# Copyright (C) 2023 The Qt Company Ltd.
# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
from __future__ import annotations
"""PySide6 port of the Qt DataVisualization qmlsurfacegallery example from Qt v6.x"""
import os
import sys
from pathlib import Path
from PySide6.QtCore import QCoreApplication, QUrl
from PySide6.QtGui import QGuiApplication
from PySide6.QtQuick import QQuickView
from PySide6.QtDataVisualization import qDefaultSurfaceFormat
from datasource import DataSource # noqa: F401
import rc_qmlsurfacegallery # noqa: F401
if __name__ == "__main__":
os.environ["QSG_RHI_BACKEND"] = "opengl"
app = QGuiApplication(sys.argv)
viewer = QQuickView()
# Enable antialiasing in direct rendering mode
viewer.setFormat(qDefaultSurfaceFormat(True))
viewer.engine().quit.connect(QCoreApplication.quit)
viewer.setTitle("Surface Graph Gallery")
qml_file = Path(__file__).resolve().parent / "qml" / "qmlsurfacegallery" / "main.qml"
viewer.setSource(QUrl.fromLocalFile(qml_file))
viewer.setResizeMode(QQuickView.ResizeMode.SizeRootObjectToView)
viewer.show()
ex = app.exec()
del viewer
sys.exit(ex)
<RCC>
<qresource prefix="/">
<file>qml/qmlsurfacegallery/heightmap.png</file>
</qresource>
</RCC>
// Copyright (C) 2023 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
import QtQuick
Item {
property alias model: dataModel
ListModel {
id: dataModel
ListElement{ radius: "0"; angle: "0"; value: "50"; }
ListElement{ radius: "0"; angle: "5"; value: "54.3578"; }
ListElement{ radius: "0"; angle: "10"; value: "58.6824"; }
ListElement{ radius: "0"; angle: "15"; value: "62.941"; }
ListElement{ radius: "0"; angle: "20"; value: "67.101"; }
ListElement{ radius: "0"; angle: "25"; value: "71.1309"; }
ListElement{ radius: "0"; angle: "30"; value: "75"; }
ListElement{ radius: "0"; angle: "35"; value: "78.6788"; }
ListElement{ radius: "0"; angle: "40"; value: "82.1394"; }
ListElement{ radius: "0"; angle: "45"; value: "85.3553"; }
ListElement{ radius: "0"; angle: "50"; value: "88.3022"; }
ListElement{ radius: "0"; angle: "55"; value: "90.9576"; }
ListElement{ radius: "0"; angle: "60"; value: "93.3013"; }
ListElement{ radius: "0"; angle: "65"; value: "95.3154"; }
ListElement{ radius: "0"; angle: "70"; value: "96.9846"; }
ListElement{ radius: "0"; angle: "75"; value: "98.2963"; }
ListElement{ radius: "0"; angle: "80"; value: "99.2404"; }
ListElement{ radius: "0"; angle: "85"; value: "99.8097"; }
ListElement{ radius: "0"; angle: "90"; value: "100"; }
ListElement{ radius: "0"; angle: "95"; value: "99.8097"; }
ListElement{ radius: "0"; angle: "100"; value: "99.2404"; }
ListElement{ radius: "0"; angle: "105"; value: "98.2963"; }
ListElement{ radius: "0"; angle: "110"; value: "96.9846"; }
ListElement{ radius: "0"; angle: "115"; value: "95.3154"; }
ListElement{ radius: "0"; angle: "120"; value: "93.3013"; }
ListElement{ radius: "0"; angle: "125"; value: "90.9576"; }
ListElement{ radius: "0"; angle: "130"; value: "88.3022"; }
ListElement{ radius: "0"; angle: "135"; value: "85.3553"; }
ListElement{ radius: "0"; angle: "140"; value: "82.1394"; }
ListElement{ radius: "0"; angle: "145"; value: "78.6788"; }
ListElement{ radius: "0"; angle: "150"; value: "75"; }
ListElement{ radius: "0"; angle: "155"; value: "71.1309"; }
ListElement{ radius: "0"; angle: "160"; value: "67.101"; }
ListElement{ radius: "0"; angle: "165"; value: "62.941"; }
ListElement{ radius: "0"; angle: "170"; value: "58.6824"; }
ListElement{ radius: "0"; angle: "175"; value: "54.3578"; }
ListElement{ radius: "0"; angle: "180"; value: "50"; }
ListElement{ radius: "0"; angle: "185"; value: "45.6422"; }
ListElement{ radius: "0"; angle: "190"; value: "41.3176"; }
ListElement{ radius: "0"; angle: "195"; value: "37.059"; }
ListElement{ radius: "0"; angle: "200"; value: "32.899"; }
ListElement{ radius: "0"; angle: "205"; value: "28.8691"; }
ListElement{ radius: "0"; angle: "210"; value: "25"; }
ListElement{ radius: "0"; angle: "215"; value: "21.3212"; }
ListElement{ radius: "0"; angle: "220"; value: "17.8606"; }
ListElement{ radius: "0"; angle: "225"; value: "14.6447"; }
ListElement{ radius: "0"; angle: "230"; value: "11.6978"; }
ListElement{ radius: "0"; angle: "235"; value: "9.0424"; }
ListElement{ radius: "0"; angle: "240"; value: "6.69873"; }
ListElement{ radius: "0"; angle: "245"; value: "4.68461"; }
ListElement{ radius: "0"; angle: "250"; value: "3.01537"; }
ListElement{ radius: "0"; angle: "255"; value: "1.70371"; }
ListElement{ radius: "0"; angle: "260"; value: "0.759612"; }
ListElement{ radius: "0"; angle: "265"; value: "0.190265"; }
ListElement{ radius: "0"; angle: "270"; value: "0"; }
ListElement{ radius: "0"; angle: "275"; value: "0.190265"; }
ListElement{ radius: "0"; angle: "280"; value: "0.759612"; }
ListElement{ radius: "0"; angle: "285"; value: "1.70371"; }
ListElement{ radius: "0"; angle: "290"; value: "3.01537"; }
ListElement{ radius: "0"; angle: "295"; value: "4.68461"; }
ListElement{ radius: "0"; angle: "300"; value: "6.69873"; }
ListElement{ radius: "0"; angle: "305"; value: "9.0424"; }
ListElement{ radius: "0"; angle: "310"; value: "11.6978"; }
ListElement{ radius: "0"; angle: "315"; value: "14.6447"; }
ListElement{ radius: "0"; angle: "320"; value: "17.8606"; }
ListElement{ radius: "0"; angle: "325"; value: "21.3212"; }
ListElement{ radius: "0"; angle: "330"; value: "25"; }
ListElement{ radius: "0"; angle: "335"; value: "28.8691"; }
ListElement{ radius: "0"; angle: "340"; value: "32.899"; }
ListElement{ radius: "0"; angle: "345"; value: "37.059"; }
ListElement{ radius: "0"; angle: "350"; value: "41.3176"; }
ListElement{ radius: "0"; angle: "355"; value: "45.6422"; }
ListElement{ radius: "0"; angle: "360"; value: "50"; }
ListElement{ radius: "5"; angle: "0"; value: "49.3844"; }
ListElement{ radius: "5"; angle: "5"; value: "53.7422"; }
ListElement{ radius: "5"; angle: "10"; value: "58.0668"; }
ListElement{ radius: "5"; angle: "15"; value: "62.3254"; }
ListElement{ radius: "5"; angle: "20"; value: "66.4854"; }
ListElement{ radius: "5"; angle: "25"; value: "70.5153"; }
ListElement{ radius: "5"; angle: "30"; value: "74.3844"; }
ListElement{ radius: "5"; angle: "35"; value: "78.0632"; }
ListElement{ radius: "5"; angle: "40"; value: "81.5238"; }
ListElement{ radius: "5"; angle: "45"; value: "84.7398"; }
ListElement{ radius: "5"; angle: "50"; value: "87.6866"; }
ListElement{ radius: "5"; angle: "55"; value: "90.342"; }
ListElement{ radius: "5"; angle: "60"; value: "92.6857"; }
ListElement{ radius: "5"; angle: "65"; value: "94.6998"; }
ListElement{ radius: "5"; angle: "70"; value: "96.369"; }
ListElement{ radius: "5"; angle: "75"; value: "97.6807"; }
ListElement{ radius: "5"; angle: "80"; value: "98.6248"; }
ListElement{ radius: "5"; angle: "85"; value: "99.1942"; }
ListElement{ radius: "5"; angle: "90"; value: "99.3844"; }
ListElement{ radius: "5"; angle: "95"; value: "99.1942"; }
ListElement{ radius: "5"; angle: "100"; value: "98.6248"; }
ListElement{ radius: "5"; angle: "105"; value: "97.6807"; }
ListElement{ radius: "5"; angle: "110"; value: "96.369"; }
ListElement{ radius: "5"; angle: "115"; value: "94.6998"; }
ListElement{ radius: "5"; angle: "120"; value: "92.6857"; }
ListElement{ radius: "5"; angle: "125"; value: "90.342"; }
ListElement{ radius: "5"; angle: "130"; value: "87.6866"; }
ListElement{ radius: "5"; angle: "135"; value: "84.7398"; }
ListElement{ radius: "5"; angle: "140"; value: "81.5238"; }
ListElement{ radius: "5"; angle: "145"; value: "78.0632"; }
ListElement{ radius: "5"; angle: "150"; value: "74.3844"; }
ListElement{ radius: "5"; angle: "155"; value: "70.5153"; }
ListElement{ radius: "5"; angle: "160"; value: "66.4854"; }
ListElement{ radius: "5"; angle: "165"; value: "62.3254"; }
ListElement{ radius: "5"; angle: "170"; value: "58.0668"; }
ListElement{ radius: "5"; angle: "175"; value: "53.7422"; }
ListElement{ radius: "5"; angle: "180"; value: "49.3844"; }
ListElement{ radius: "5"; angle: "185"; value: "45.0266"; }
ListElement{ radius: "5"; angle: "190"; value: "40.702"; }
ListElement{ radius: "5"; angle: "195"; value: "36.4435"; }
ListElement{ radius: "5"; angle: "200"; value: "32.2834"; }
ListElement{ radius: "5"; angle: "205"; value: "28.2535"; }
ListElement{ radius: "5"; angle: "210"; value: "24.3844"; }
ListElement{ radius: "5"; angle: "215"; value: "20.7056"; }
ListElement{ radius: "5"; angle: "220"; value: "17.245"; }
ListElement{ radius: "5"; angle: "225"; value: "14.0291"; }
ListElement{ radius: "5"; angle: "230"; value: "11.0822"; }
ListElement{ radius: "5"; angle: "235"; value: "8.42681"; }
ListElement{ radius: "5"; angle: "240"; value: "6.08315"; }
ListElement{ radius: "5"; angle: "245"; value: "4.06903"; }
ListElement{ radius: "5"; angle: "250"; value: "2.39979"; }
ListElement{ radius: "5"; angle: "255"; value: "1.08813"; }
ListElement{ radius: "5"; angle: "260"; value: "0.144029"; }
ListElement{ radius: "5"; angle: "265"; value: "-0.425318"; }
ListElement{ radius: "5"; angle: "270"; value: "-0.615583"; }
ListElement{ radius: "5"; angle: "275"; value: "-0.425318"; }
ListElement{ radius: "5"; angle: "280"; value: "0.144029"; }
ListElement{ radius: "5"; angle: "285"; value: "1.08813"; }
ListElement{ radius: "5"; angle: "290"; value: "2.39979"; }
ListElement{ radius: "5"; angle: "295"; value: "4.06903"; }
ListElement{ radius: "5"; angle: "300"; value: "6.08315"; }
ListElement{ radius: "5"; angle: "305"; value: "8.42681"; }
ListElement{ radius: "5"; angle: "310"; value: "11.0822"; }
ListElement{ radius: "5"; angle: "315"; value: "14.0291"; }
ListElement{ radius: "5"; angle: "320"; value: "17.245"; }
ListElement{ radius: "5"; angle: "325"; value: "20.7056"; }
ListElement{ radius: "5"; angle: "330"; value: "24.3844"; }
ListElement{ radius: "5"; angle: "335"; value: "28.2535"; }
ListElement{ radius: "5"; angle: "340"; value: "32.2834"; }
ListElement{ radius: "5"; angle: "345"; value: "36.4435"; }
ListElement{ radius: "5"; angle: "350"; value: "40.702"; }
ListElement{ radius: "5"; angle: "355"; value: "45.0266"; }
ListElement{ radius: "5"; angle: "360"; value: "49.3844"; }
ListElement{ radius: "10"; angle: "0"; value: "47.5528"; }
ListElement{ radius: "10"; angle: "5"; value: "51.9106"; }
ListElement{ radius: "10"; angle: "10"; value: "56.2352"; }
ListElement{ radius: "10"; angle: "15"; value: "60.4938"; }
ListElement{ radius: "10"; angle: "20"; value: "64.6538"; }
ListElement{ radius: "10"; angle: "25"; value: "68.6837"; }
ListElement{ radius: "10"; angle: "30"; value: "72.5528"; }
ListElement{ radius: "10"; angle: "35"; value: "76.2316"; }
ListElement{ radius: "10"; angle: "40"; value: "79.6922"; }
ListElement{ radius: "10"; angle: "45"; value: "82.9082"; }
ListElement{ radius: "10"; angle: "50"; value: "85.855"; }
ListElement{ radius: "10"; angle: "55"; value: "88.5104"; }
ListElement{ radius: "10"; angle: "60"; value: "90.8541"; }
ListElement{ radius: "10"; angle: "65"; value: "92.8682"; }
ListElement{ radius: "10"; angle: "70"; value: "94.5375"; }
ListElement{ radius: "10"; angle: "75"; value: "95.8491"; }
ListElement{ radius: "10"; angle: "80"; value: "96.7932"; }
ListElement{ radius: "10"; angle: "85"; value: "97.3626"; }
ListElement{ radius: "10"; angle: "90"; value: "97.5528"; }
ListElement{ radius: "10"; angle: "95"; value: "97.3626"; }
ListElement{ radius: "10"; angle: "100"; value: "96.7932"; }
ListElement{ radius: "10"; angle: "105"; value: "95.8491"; }
ListElement{ radius: "10"; angle: "110"; value: "94.5375"; }
ListElement{ radius: "10"; angle: "115"; value: "92.8682"; }
ListElement{ radius: "10"; angle: "120"; value: "90.8541"; }
ListElement{ radius: "10"; angle: "125"; value: "88.5104"; }
ListElement{ radius: "10"; angle: "130"; value: "85.855"; }
ListElement{ radius: "10"; angle: "135"; value: "82.9082"; }
ListElement{ radius: "10"; angle: "140"; value: "79.6922"; }
ListElement{ radius: "10"; angle: "145"; value: "76.2316"; }
ListElement{ radius: "10"; angle: "150"; value: "72.5528"; }
ListElement{ radius: "10"; angle: "155"; value: "68.6837"; }
ListElement{ radius: "10"; angle: "160"; value: "64.6538"; }
ListElement{ radius: "10"; angle: "165"; value: "60.4938"; }
ListElement{ radius: "10"; angle: "170"; value: "56.2352"; }
ListElement{ radius: "10"; angle: "175"; value: "51.9106"; }
ListElement{ radius: "10"; angle: "180"; value: "47.5528"; }
ListElement{ radius: "10"; angle: "185"; value: "43.195"; }
ListElement{ radius: "10"; angle: "190"; value: "38.8704"; }
ListElement{ radius: "10"; angle: "195"; value: "34.6119"; }
ListElement{ radius: "10"; angle: "200"; value: "30.4518"; }
ListElement{ radius: "10"; angle: "205"; value: "26.4219"; }
ListElement{ radius: "10"; angle: "210"; value: "22.5528"; }
ListElement{ radius: "10"; angle: "215"; value: "18.874"; }
ListElement{ radius: "10"; angle: "220"; value: "15.4134"; }
ListElement{ radius: "10"; angle: "225"; value: "12.1975"; }
ListElement{ radius: "10"; angle: "230"; value: "9.2506"; }
ListElement{ radius: "10"; angle: "235"; value: "6.59522"; }
ListElement{ radius: "10"; angle: "240"; value: "4.25156"; }
ListElement{ radius: "10"; angle: "245"; value: "2.23744"; }
ListElement{ radius: "10"; angle: "250"; value: "0.568195"; }
ListElement{ radius: "10"; angle: "255"; value: "-0.743465"; }
ListElement{ radius: "10"; angle: "260"; value: "-1.68756"; }
ListElement{ radius: "10"; angle: "265"; value: "-2.25691"; }
ListElement{ radius: "10"; angle: "270"; value: "-2.44717"; }
ListElement{ radius: "10"; angle: "275"; value: "-2.25691"; }
ListElement{ radius: "10"; angle: "280"; value: "-1.68756"; }
ListElement{ radius: "10"; angle: "285"; value: "-0.743465"; }
ListElement{ radius: "10"; angle: "290"; value: "0.568195"; }
ListElement{ radius: "10"; angle: "295"; value: "2.23744"; }
ListElement{ radius: "10"; angle: "300"; value: "4.25156"; }
ListElement{ radius: "10"; angle: "305"; value: "6.59522"; }
ListElement{ radius: "10"; angle: "310"; value: "9.2506"; }
ListElement{ radius: "10"; angle: "315"; value: "12.1975"; }
ListElement{ radius: "10"; angle: "320"; value: "15.4134"; }
ListElement{ radius: "10"; angle: "325"; value: "18.874"; }
ListElement{ radius: "10"; angle: "330"; value: "22.5528"; }
ListElement{ radius: "10"; angle: "335"; value: "26.4219"; }
ListElement{ radius: "10"; angle: "340"; value: "30.4518"; }
ListElement{ radius: "10"; angle: "345"; value: "34.6119"; }
ListElement{ radius: "10"; angle: "350"; value: "38.8704"; }
ListElement{ radius: "10"; angle: "355"; value: "43.195"; }
ListElement{ radius: "10"; angle: "360"; value: "47.5528"; }
ListElement{ radius: "15"; angle: "0"; value: "44.5503"; }
ListElement{ radius: "15"; angle: "5"; value: "48.9081"; }
ListElement{ radius: "15"; angle: "10"; value: "53.2327"; }
ListElement{ radius: "15"; angle: "15"; value: "57.4913"; }
ListElement{ radius: "15"; angle: "20"; value: "61.6513"; }
ListElement{ radius: "15"; angle: "25"; value: "65.6812"; }
ListElement{ radius: "15"; angle: "30"; value: "69.5503"; }
ListElement{ radius: "15"; angle: "35"; value: "73.2291"; }
ListElement{ radius: "15"; angle: "40"; value: "76.6897"; }
ListElement{ radius: "15"; angle: "45"; value: "79.9057"; }
ListElement{ radius: "15"; angle: "50"; value: "82.8525"; }
ListElement{ radius: "15"; angle: "55"; value: "85.5079"; }
ListElement{ radius: "15"; angle: "60"; value: "87.8516"; }
ListElement{ radius: "15"; angle: "65"; value: "89.8657"; }
ListElement{ radius: "15"; angle: "70"; value: "91.535"; }
ListElement{ radius: "15"; angle: "75"; value: "92.8466"; }
ListElement{ radius: "15"; angle: "80"; value: "93.7907"; }
ListElement{ radius: "15"; angle: "85"; value: "94.3601"; }
ListElement{ radius: "15"; angle: "90"; value: "94.5503"; }
ListElement{ radius: "15"; angle: "95"; value: "94.3601"; }
ListElement{ radius: "15"; angle: "100"; value: "93.7907"; }
ListElement{ radius: "15"; angle: "105"; value: "92.8466"; }
ListElement{ radius: "15"; angle: "110"; value: "91.535"; }
ListElement{ radius: "15"; angle: "115"; value: "89.8657"; }
ListElement{ radius: "15"; angle: "120"; value: "87.8516"; }
ListElement{ radius: "15"; angle: "125"; value: "85.5079"; }
ListElement{ radius: "15"; angle: "130"; value: "82.8525"; }
ListElement{ radius: "15"; angle: "135"; value: "79.9057"; }
ListElement{ radius: "15"; angle: "140"; value: "76.6897"; }
ListElement{ radius: "15"; angle: "145"; value: "73.2291"; }
ListElement{ radius: "15"; angle: "150"; value: "69.5503"; }
ListElement{ radius: "15"; angle: "155"; value: "65.6812"; }
ListElement{ radius: "15"; angle: "160"; value: "61.6513"; }
ListElement{ radius: "15"; angle: "165"; value: "57.4913"; }
ListElement{ radius: "15"; angle: "170"; value: "53.2327"; }
ListElement{ radius: "15"; angle: "175"; value: "48.9081"; }
ListElement{ radius: "15"; angle: "180"; value: "44.5503"; }
ListElement{ radius: "15"; angle: "185"; value: "40.1925"; }
ListElement{ radius: "15"; angle: "190"; value: "35.8679"; }
ListElement{ radius: "15"; angle: "195"; value: "31.6094"; }
ListElement{ radius: "15"; angle: "200"; value: "27.4493"; }
ListElement{ radius: "15"; angle: "205"; value: "23.4194"; }
ListElement{ radius: "15"; angle: "210"; value: "19.5503"; }
ListElement{ radius: "15"; angle: "215"; value: "15.8715"; }
ListElement{ radius: "15"; angle: "220"; value: "12.4109"; }
ListElement{ radius: "15"; angle: "225"; value: "9.19499"; }
ListElement{ radius: "15"; angle: "230"; value: "6.2481"; }
ListElement{ radius: "15"; angle: "235"; value: "3.59272"; }
ListElement{ radius: "15"; angle: "240"; value: "1.24906"; }
ListElement{ radius: "15"; angle: "245"; value: "-0.765063"; }
ListElement{ radius: "15"; angle: "250"; value: "-2.4343"; }
ListElement{ radius: "15"; angle: "255"; value: "-3.74597"; }
ListElement{ radius: "15"; angle: "260"; value: "-4.69006"; }
ListElement{ radius: "15"; angle: "265"; value: "-5.25941"; }
ListElement{ radius: "15"; angle: "270"; value: "-5.44967"; }
ListElement{ radius: "15"; angle: "275"; value: "-5.25941"; }
ListElement{ radius: "15"; angle: "280"; value: "-4.69006"; }
ListElement{ radius: "15"; angle: "285"; value: "-3.74597"; }
ListElement{ radius: "15"; angle: "290"; value: "-2.4343"; }
ListElement{ radius: "15"; angle: "295"; value: "-0.765063"; }
ListElement{ radius: "15"; angle: "300"; value: "1.24906"; }
ListElement{ radius: "15"; angle: "305"; value: "3.59272"; }
ListElement{ radius: "15"; angle: "310"; value: "6.2481"; }
ListElement{ radius: "15"; angle: "315"; value: "9.19499"; }
ListElement{ radius: "15"; angle: "320"; value: "12.4109"; }
ListElement{ radius: "15"; angle: "325"; value: "15.8715"; }
ListElement{ radius: "15"; angle: "330"; value: "19.5503"; }
ListElement{ radius: "15"; angle: "335"; value: "23.4194"; }
ListElement{ radius: "15"; angle: "340"; value: "27.4493"; }
ListElement{ radius: "15"; angle: "345"; value: "31.6094"; }
ListElement{ radius: "15"; angle: "350"; value: "35.8679"; }
ListElement{ radius: "15"; angle: "355"; value: "40.1925"; }
ListElement{ radius: "15"; angle: "360"; value: "44.5503"; }
ListElement{ radius: "20"; angle: "0"; value: "40.4508"; }
ListElement{ radius: "20"; angle: "5"; value: "44.8086"; }
ListElement{ radius: "20"; angle: "10"; value: "49.1333"; }
ListElement{ radius: "20"; angle: "15"; value: "53.3918"; }
ListElement{ radius: "20"; angle: "20"; value: "57.5519"; }
ListElement{ radius: "20"; angle: "25"; value: "61.5818"; }
ListElement{ radius: "20"; angle: "30"; value: "65.4508"; }
ListElement{ radius: "20"; angle: "35"; value: "69.1297"; }
ListElement{ radius: "20"; angle: "40"; value: "72.5902"; }
ListElement{ radius: "20"; angle: "45"; value: "75.8062"; }
ListElement{ radius: "20"; angle: "50"; value: "78.7531"; }
ListElement{ radius: "20"; angle: "55"; value: "81.4085"; }
ListElement{ radius: "20"; angle: "60"; value: "83.7521"; }
ListElement{ radius: "20"; angle: "65"; value: "85.7662"; }
ListElement{ radius: "20"; angle: "70"; value: "87.4355"; }
ListElement{ radius: "20"; angle: "75"; value: "88.7471"; }
ListElement{ radius: "20"; angle: "80"; value: "89.6912"; }
ListElement{ radius: "20"; angle: "85"; value: "90.2606"; }
ListElement{ radius: "20"; angle: "90"; value: "90.4508"; }
ListElement{ radius: "20"; angle: "95"; value: "90.2606"; }
ListElement{ radius: "20"; angle: "100"; value: "89.6912"; }
ListElement{ radius: "20"; angle: "105"; value: "88.7471"; }
ListElement{ radius: "20"; angle: "110"; value: "87.4355"; }
ListElement{ radius: "20"; angle: "115"; value: "85.7662"; }
ListElement{ radius: "20"; angle: "120"; value: "83.7521"; }
ListElement{ radius: "20"; angle: "125"; value: "81.4085"; }
ListElement{ radius: "20"; angle: "130"; value: "78.7531"; }
ListElement{ radius: "20"; angle: "135"; value: "75.8062"; }
ListElement{ radius: "20"; angle: "140"; value: "72.5902"; }
ListElement{ radius: "20"; angle: "145"; value: "69.1297"; }
ListElement{ radius: "20"; angle: "150"; value: "65.4508"; }
ListElement{ radius: "20"; angle: "155"; value: "61.5818"; }
ListElement{ radius: "20"; angle: "160"; value: "57.5519"; }
ListElement{ radius: "20"; angle: "165"; value: "53.3918"; }
ListElement{ radius: "20"; angle: "170"; value: "49.1333"; }
ListElement{ radius: "20"; angle: "175"; value: "44.8086"; }
ListElement{ radius: "20"; angle: "180"; value: "40.4508"; }
ListElement{ radius: "20"; angle: "185"; value: "36.0931"; }
ListElement{ radius: "20"; angle: "190"; value: "31.7684"; }
ListElement{ radius: "20"; angle: "195"; value: "27.5099"; }
ListElement{ radius: "20"; angle: "200"; value: "23.3498"; }
ListElement{ radius: "20"; angle: "205"; value: "19.3199"; }
ListElement{ radius: "20"; angle: "210"; value: "15.4508"; }
ListElement{ radius: "20"; angle: "215"; value: "11.772"; }
ListElement{ radius: "20"; angle: "220"; value: "8.31147"; }
ListElement{ radius: "20"; angle: "225"; value: "5.09551"; }
ListElement{ radius: "20"; angle: "230"; value: "2.14863"; }
ListElement{ radius: "20"; angle: "235"; value: "-0.506752"; }
ListElement{ radius: "20"; angle: "240"; value: "-2.85042"; }
ListElement{ radius: "20"; angle: "245"; value: "-4.86454"; }
ListElement{ radius: "20"; angle: "250"; value: "-6.53378"; }
ListElement{ radius: "20"; angle: "255"; value: "-7.84544"; }
ListElement{ radius: "20"; angle: "260"; value: "-8.78954"; }
ListElement{ radius: "20"; angle: "265"; value: "-9.35889"; }
ListElement{ radius: "20"; angle: "270"; value: "-9.54915"; }
ListElement{ radius: "20"; angle: "275"; value: "-9.35889"; }
ListElement{ radius: "20"; angle: "280"; value: "-8.78954"; }
ListElement{ radius: "20"; angle: "285"; value: "-7.84544"; }
ListElement{ radius: "20"; angle: "290"; value: "-6.53378"; }
ListElement{ radius: "20"; angle: "295"; value: "-4.86454"; }
ListElement{ radius: "20"; angle: "300"; value: "-2.85042"; }
ListElement{ radius: "20"; angle: "305"; value: "-0.506752"; }
ListElement{ radius: "20"; angle: "310"; value: "2.14863"; }
ListElement{ radius: "20"; angle: "315"; value: "5.09551"; }
ListElement{ radius: "20"; angle: "320"; value: "8.31147"; }
ListElement{ radius: "20"; angle: "325"; value: "11.772"; }
ListElement{ radius: "20"; angle: "330"; value: "15.4508"; }
ListElement{ radius: "20"; angle: "335"; value: "19.3199"; }
ListElement{ radius: "20"; angle: "340"; value: "23.3498"; }
ListElement{ radius: "20"; angle: "345"; value: "27.5099"; }
ListElement{ radius: "20"; angle: "350"; value: "31.7684"; }
ListElement{ radius: "20"; angle: "355"; value: "36.0931"; }
ListElement{ radius: "20"; angle: "360"; value: "40.4508"; }
ListElement{ radius: "25"; angle: "0"; value: "35.3553"; }
ListElement{ radius: "25"; angle: "5"; value: "39.7131"; }
ListElement{ radius: "25"; angle: "10"; value: "44.0377"; }
ListElement{ radius: "25"; angle: "15"; value: "48.2963"; }
ListElement{ radius: "25"; angle: "20"; value: "52.4563"; }
ListElement{ radius: "25"; angle: "25"; value: "56.4863"; }
ListElement{ radius: "25"; angle: "30"; value: "60.3553"; }
ListElement{ radius: "25"; angle: "35"; value: "64.0342"; }
ListElement{ radius: "25"; angle: "40"; value: "67.4947"; }
ListElement{ radius: "25"; angle: "45"; value: "70.7107"; }
ListElement{ radius: "25"; angle: "50"; value: "73.6576"; }
ListElement{ radius: "25"; angle: "55"; value: "76.3129"; }
ListElement{ radius: "25"; angle: "60"; value: "78.6566"; }
ListElement{ radius: "25"; angle: "65"; value: "80.6707"; }
ListElement{ radius: "25"; angle: "70"; value: "82.34"; }
ListElement{ radius: "25"; angle: "75"; value: "83.6516"; }
ListElement{ radius: "25"; angle: "80"; value: "84.5957"; }
ListElement{ radius: "25"; angle: "85"; value: "85.1651"; }
ListElement{ radius: "25"; angle: "90"; value: "85.3553"; }
ListElement{ radius: "25"; angle: "95"; value: "85.1651"; }
ListElement{ radius: "25"; angle: "100"; value: "84.5957"; }
ListElement{ radius: "25"; angle: "105"; value: "83.6516"; }
ListElement{ radius: "25"; angle: "110"; value: "82.34"; }
ListElement{ radius: "25"; angle: "115"; value: "80.6707"; }
ListElement{ radius: "25"; angle: "120"; value: "78.6566"; }
ListElement{ radius: "25"; angle: "125"; value: "76.3129"; }
ListElement{ radius: "25"; angle: "130"; value: "73.6576"; }
ListElement{ radius: "25"; angle: "135"; value: "70.7107"; }
ListElement{ radius: "25"; angle: "140"; value: "67.4947"; }
ListElement{ radius: "25"; angle: "145"; value: "64.0342"; }
ListElement{ radius: "25"; angle: "150"; value: "60.3553"; }
ListElement{ radius: "25"; angle: "155"; value: "56.4863"; }
ListElement{ radius: "25"; angle: "160"; value: "52.4563"; }
ListElement{ radius: "25"; angle: "165"; value: "48.2963"; }
ListElement{ radius: "25"; angle: "170"; value: "44.0377"; }
ListElement{ radius: "25"; angle: "175"; value: "39.7131"; }
ListElement{ radius: "25"; angle: "180"; value: "35.3553"; }
ListElement{ radius: "25"; angle: "185"; value: "30.9976"; }
ListElement{ radius: "25"; angle: "190"; value: "26.6729"; }
ListElement{ radius: "25"; angle: "195"; value: "22.4144"; }
ListElement{ radius: "25"; angle: "200"; value: "18.2543"; }
ListElement{ radius: "25"; angle: "205"; value: "14.2244"; }
ListElement{ radius: "25"; angle: "210"; value: "10.3553"; }
ListElement{ radius: "25"; angle: "215"; value: "6.67652"; }
ListElement{ radius: "25"; angle: "220"; value: "3.21596"; }
ListElement{ radius: "25"; angle: "225"; value: "5.55112e-15"; }
ListElement{ radius: "25"; angle: "230"; value: "-2.94688"; }
ListElement{ radius: "25"; angle: "235"; value: "-5.60226"; }
ListElement{ radius: "25"; angle: "240"; value: "-7.94593"; }
ListElement{ radius: "25"; angle: "245"; value: "-9.96005"; }
ListElement{ radius: "25"; angle: "250"; value: "-11.6293"; }
ListElement{ radius: "25"; angle: "255"; value: "-12.941"; }
ListElement{ radius: "25"; angle: "260"; value: "-13.885"; }
ListElement{ radius: "25"; angle: "265"; value: "-14.4544"; }
ListElement{ radius: "25"; angle: "270"; value: "-14.6447"; }
ListElement{ radius: "25"; angle: "275"; value: "-14.4544"; }
ListElement{ radius: "25"; angle: "280"; value: "-13.885"; }
ListElement{ radius: "25"; angle: "285"; value: "-12.941"; }
ListElement{ radius: "25"; angle: "290"; value: "-11.6293"; }
ListElement{ radius: "25"; angle: "295"; value: "-9.96005"; }
ListElement{ radius: "25"; angle: "300"; value: "-7.94593"; }
ListElement{ radius: "25"; angle: "305"; value: "-5.60226"; }
ListElement{ radius: "25"; angle: "310"; value: "-2.94688"; }
ListElement{ radius: "25"; angle: "315"; value: "-5.55112e-15"; }
ListElement{ radius: "25"; angle: "320"; value: "3.21596"; }
ListElement{ radius: "25"; angle: "325"; value: "6.67652"; }
ListElement{ radius: "25"; angle: "330"; value: "10.3553"; }
ListElement{ radius: "25"; angle: "335"; value: "14.2244"; }
ListElement{ radius: "25"; angle: "340"; value: "18.2543"; }
ListElement{ radius: "25"; angle: "345"; value: "22.4144"; }
ListElement{ radius: "25"; angle: "350"; value: "26.6729"; }
ListElement{ radius: "25"; angle: "355"; value: "30.9976"; }
ListElement{ radius: "25"; angle: "360"; value: "35.3553"; }
ListElement{ radius: "30"; angle: "0"; value: "29.3893"; }
ListElement{ radius: "30"; angle: "5"; value: "33.747"; }
ListElement{ radius: "30"; angle: "10"; value: "38.0717"; }
ListElement{ radius: "30"; angle: "15"; value: "42.3302"; }
ListElement{ radius: "30"; angle: "20"; value: "46.4903"; }
ListElement{ radius: "30"; angle: "25"; value: "50.5202"; }
ListElement{ radius: "30"; angle: "30"; value: "54.3893"; }
ListElement{ radius: "30"; angle: "35"; value: "58.0681"; }
ListElement{ radius: "30"; angle: "40"; value: "61.5286"; }
ListElement{ radius: "30"; angle: "45"; value: "64.7446"; }
ListElement{ radius: "30"; angle: "50"; value: "67.6915"; }
ListElement{ radius: "30"; angle: "55"; value: "70.3469"; }
ListElement{ radius: "30"; angle: "60"; value: "72.6905"; }
ListElement{ radius: "30"; angle: "65"; value: "74.7047"; }
ListElement{ radius: "30"; angle: "70"; value: "76.3739"; }
ListElement{ radius: "30"; angle: "75"; value: "77.6856"; }
ListElement{ radius: "30"; angle: "80"; value: "78.6297"; }
ListElement{ radius: "30"; angle: "85"; value: "79.199"; }
ListElement{ radius: "30"; angle: "90"; value: "79.3893"; }
ListElement{ radius: "30"; angle: "95"; value: "79.199"; }
ListElement{ radius: "30"; angle: "100"; value: "78.6297"; }
ListElement{ radius: "30"; angle: "105"; value: "77.6856"; }
ListElement{ radius: "30"; angle: "110"; value: "76.3739"; }
ListElement{ radius: "30"; angle: "115"; value: "74.7047"; }
ListElement{ radius: "30"; angle: "120"; value: "72.6905"; }
ListElement{ radius: "30"; angle: "125"; value: "70.3469"; }
ListElement{ radius: "30"; angle: "130"; value: "67.6915"; }
ListElement{ radius: "30"; angle: "135"; value: "64.7446"; }
ListElement{ radius: "30"; angle: "140"; value: "61.5286"; }
ListElement{ radius: "30"; angle: "145"; value: "58.0681"; }
ListElement{ radius: "30"; angle: "150"; value: "54.3893"; }
ListElement{ radius: "30"; angle: "155"; value: "50.5202"; }
ListElement{ radius: "30"; angle: "160"; value: "46.4903"; }
ListElement{ radius: "30"; angle: "165"; value: "42.3302"; }
ListElement{ radius: "30"; angle: "170"; value: "38.0717"; }
ListElement{ radius: "30"; angle: "175"; value: "33.747"; }
ListElement{ radius: "30"; angle: "180"; value: "29.3893"; }
ListElement{ radius: "30"; angle: "185"; value: "25.0315"; }
ListElement{ radius: "30"; angle: "190"; value: "20.7069"; }
ListElement{ radius: "30"; angle: "195"; value: "16.4483"; }
ListElement{ radius: "30"; angle: "200"; value: "12.2883"; }
ListElement{ radius: "30"; angle: "205"; value: "8.25835"; }
ListElement{ radius: "30"; angle: "210"; value: "4.38926"; }
ListElement{ radius: "30"; angle: "215"; value: "0.710441"; }
ListElement{ radius: "30"; angle: "220"; value: "-2.75012"; }
ListElement{ radius: "30"; angle: "225"; value: "-5.96608"; }
ListElement{ radius: "30"; angle: "230"; value: "-8.91296"; }
ListElement{ radius: "30"; angle: "235"; value: "-11.5683"; }
ListElement{ radius: "30"; angle: "240"; value: "-13.912"; }
ListElement{ radius: "30"; angle: "245"; value: "-15.9261"; }
ListElement{ radius: "30"; angle: "250"; value: "-17.5954"; }
ListElement{ radius: "30"; angle: "255"; value: "-18.907"; }
ListElement{ radius: "30"; angle: "260"; value: "-19.8511"; }
ListElement{ radius: "30"; angle: "265"; value: "-20.4205"; }
ListElement{ radius: "30"; angle: "270"; value: "-20.6107"; }
ListElement{ radius: "30"; angle: "275"; value: "-20.4205"; }
ListElement{ radius: "30"; angle: "280"; value: "-19.8511"; }
ListElement{ radius: "30"; angle: "285"; value: "-18.907"; }
ListElement{ radius: "30"; angle: "290"; value: "-17.5954"; }
ListElement{ radius: "30"; angle: "295"; value: "-15.9261"; }
ListElement{ radius: "30"; angle: "300"; value: "-13.912"; }
ListElement{ radius: "30"; angle: "305"; value: "-11.5683"; }
ListElement{ radius: "30"; angle: "310"; value: "-8.91296"; }
ListElement{ radius: "30"; angle: "315"; value: "-5.96608"; }
ListElement{ radius: "30"; angle: "320"; value: "-2.75012"; }
ListElement{ radius: "30"; angle: "325"; value: "0.710441"; }
ListElement{ radius: "30"; angle: "330"; value: "4.38926"; }
ListElement{ radius: "30"; angle: "335"; value: "8.25835"; }
ListElement{ radius: "30"; angle: "340"; value: "12.2883"; }
ListElement{ radius: "30"; angle: "345"; value: "16.4483"; }
ListElement{ radius: "30"; angle: "350"; value: "20.7069"; }
ListElement{ radius: "30"; angle: "355"; value: "25.0315"; }
ListElement{ radius: "30"; angle: "360"; value: "29.3893"; }
ListElement{ radius: "35"; angle: "0"; value: "22.6995"; }
ListElement{ radius: "35"; angle: "5"; value: "27.0573"; }
ListElement{ radius: "35"; angle: "10"; value: "31.3819"; }
ListElement{ radius: "35"; angle: "15"; value: "35.6405"; }
ListElement{ radius: "35"; angle: "20"; value: "39.8005"; }
ListElement{ radius: "35"; angle: "25"; value: "43.8304"; }
ListElement{ radius: "35"; angle: "30"; value: "47.6995"; }
ListElement{ radius: "35"; angle: "35"; value: "51.3783"; }
ListElement{ radius: "35"; angle: "40"; value: "54.8389"; }
ListElement{ radius: "35"; angle: "45"; value: "58.0549"; }
ListElement{ radius: "35"; angle: "50"; value: "61.0017"; }
ListElement{ radius: "35"; angle: "55"; value: "63.6571"; }
ListElement{ radius: "35"; angle: "60"; value: "66.0008"; }
ListElement{ radius: "35"; angle: "65"; value: "68.0149"; }
ListElement{ radius: "35"; angle: "70"; value: "69.6842"; }
ListElement{ radius: "35"; angle: "75"; value: "70.9958"; }
ListElement{ radius: "35"; angle: "80"; value: "71.9399"; }
ListElement{ radius: "35"; angle: "85"; value: "72.5093"; }
ListElement{ radius: "35"; angle: "90"; value: "72.6995"; }
ListElement{ radius: "35"; angle: "95"; value: "72.5093"; }
ListElement{ radius: "35"; angle: "100"; value: "71.9399"; }
ListElement{ radius: "35"; angle: "105"; value: "70.9958"; }
ListElement{ radius: "35"; angle: "110"; value: "69.6842"; }
ListElement{ radius: "35"; angle: "115"; value: "68.0149"; }
ListElement{ radius: "35"; angle: "120"; value: "66.0008"; }
ListElement{ radius: "35"; angle: "125"; value: "63.6571"; }
ListElement{ radius: "35"; angle: "130"; value: "61.0017"; }
ListElement{ radius: "35"; angle: "135"; value: "58.0549"; }
ListElement{ radius: "35"; angle: "140"; value: "54.8389"; }
ListElement{ radius: "35"; angle: "145"; value: "51.3783"; }
ListElement{ radius: "35"; angle: "150"; value: "47.6995"; }
ListElement{ radius: "35"; angle: "155"; value: "43.8304"; }
ListElement{ radius: "35"; angle: "160"; value: "39.8005"; }
ListElement{ radius: "35"; angle: "165"; value: "35.6405"; }
ListElement{ radius: "35"; angle: "170"; value: "31.3819"; }
ListElement{ radius: "35"; angle: "175"; value: "27.0573"; }
ListElement{ radius: "35"; angle: "180"; value: "22.6995"; }
ListElement{ radius: "35"; angle: "185"; value: "18.3417"; }
ListElement{ radius: "35"; angle: "190"; value: "14.0171"; }
ListElement{ radius: "35"; angle: "195"; value: "9.75857"; }
ListElement{ radius: "35"; angle: "200"; value: "5.59852"; }
ListElement{ radius: "35"; angle: "205"; value: "1.56861"; }
ListElement{ radius: "35"; angle: "210"; value: "-2.30048"; }
ListElement{ radius: "35"; angle: "215"; value: "-5.9793"; }
ListElement{ radius: "35"; angle: "220"; value: "-9.43986"; }
ListElement{ radius: "35"; angle: "225"; value: "-12.6558"; }
ListElement{ radius: "35"; angle: "230"; value: "-15.6027"; }
ListElement{ radius: "35"; angle: "235"; value: "-18.2581"; }
ListElement{ radius: "35"; angle: "240"; value: "-20.6017"; }
ListElement{ radius: "35"; angle: "245"; value: "-22.6159"; }
ListElement{ radius: "35"; angle: "250"; value: "-24.2851"; }
ListElement{ radius: "35"; angle: "255"; value: "-25.5968"; }
ListElement{ radius: "35"; angle: "260"; value: "-26.5409"; }
ListElement{ radius: "35"; angle: "265"; value: "-27.1102"; }
ListElement{ radius: "35"; angle: "270"; value: "-27.3005"; }
ListElement{ radius: "35"; angle: "275"; value: "-27.1102"; }
ListElement{ radius: "35"; angle: "280"; value: "-26.5409"; }
ListElement{ radius: "35"; angle: "285"; value: "-25.5968"; }
ListElement{ radius: "35"; angle: "290"; value: "-24.2851"; }
ListElement{ radius: "35"; angle: "295"; value: "-22.6159"; }
ListElement{ radius: "35"; angle: "300"; value: "-20.6017"; }
ListElement{ radius: "35"; angle: "305"; value: "-18.2581"; }
ListElement{ radius: "35"; angle: "310"; value: "-15.6027"; }
ListElement{ radius: "35"; angle: "315"; value: "-12.6558"; }
ListElement{ radius: "35"; angle: "320"; value: "-9.43986"; }
ListElement{ radius: "35"; angle: "325"; value: "-5.9793"; }
ListElement{ radius: "35"; angle: "330"; value: "-2.30048"; }
ListElement{ radius: "35"; angle: "335"; value: "1.56861"; }
ListElement{ radius: "35"; angle: "340"; value: "5.59852"; }
ListElement{ radius: "35"; angle: "345"; value: "9.75857"; }
ListElement{ radius: "35"; angle: "350"; value: "14.0171"; }
ListElement{ radius: "35"; angle: "355"; value: "18.3417"; }
ListElement{ radius: "35"; angle: "360"; value: "22.6995"; }
ListElement{ radius: "40"; angle: "0"; value: "15.4508"; }
ListElement{ radius: "40"; angle: "5"; value: "19.8086"; }
ListElement{ radius: "40"; angle: "10"; value: "24.1333"; }
ListElement{ radius: "40"; angle: "15"; value: "28.3918"; }
ListElement{ radius: "40"; angle: "20"; value: "32.5519"; }
ListElement{ radius: "40"; angle: "25"; value: "36.5818"; }
ListElement{ radius: "40"; angle: "30"; value: "40.4508"; }
ListElement{ radius: "40"; angle: "35"; value: "44.1297"; }
ListElement{ radius: "40"; angle: "40"; value: "47.5902"; }
ListElement{ radius: "40"; angle: "45"; value: "50.8062"; }
ListElement{ radius: "40"; angle: "50"; value: "53.7531"; }
ListElement{ radius: "40"; angle: "55"; value: "56.4085"; }
ListElement{ radius: "40"; angle: "60"; value: "58.7521"; }
ListElement{ radius: "40"; angle: "65"; value: "60.7662"; }
ListElement{ radius: "40"; angle: "70"; value: "62.4355"; }
ListElement{ radius: "40"; angle: "75"; value: "63.7471"; }
ListElement{ radius: "40"; angle: "80"; value: "64.6912"; }
ListElement{ radius: "40"; angle: "85"; value: "65.2606"; }
ListElement{ radius: "40"; angle: "90"; value: "65.4508"; }
ListElement{ radius: "40"; angle: "95"; value: "65.2606"; }
ListElement{ radius: "40"; angle: "100"; value: "64.6912"; }
ListElement{ radius: "40"; angle: "105"; value: "63.7471"; }
ListElement{ radius: "40"; angle: "110"; value: "62.4355"; }
ListElement{ radius: "40"; angle: "115"; value: "60.7662"; }
ListElement{ radius: "40"; angle: "120"; value: "58.7521"; }
ListElement{ radius: "40"; angle: "125"; value: "56.4085"; }
ListElement{ radius: "40"; angle: "130"; value: "53.7531"; }
ListElement{ radius: "40"; angle: "135"; value: "50.8062"; }
ListElement{ radius: "40"; angle: "140"; value: "47.5902"; }
ListElement{ radius: "40"; angle: "145"; value: "44.1297"; }
ListElement{ radius: "40"; angle: "150"; value: "40.4508"; }
ListElement{ radius: "40"; angle: "155"; value: "36.5818"; }
ListElement{ radius: "40"; angle: "160"; value: "32.5519"; }
ListElement{ radius: "40"; angle: "165"; value: "28.3918"; }
ListElement{ radius: "40"; angle: "170"; value: "24.1333"; }
ListElement{ radius: "40"; angle: "175"; value: "19.8086"; }
ListElement{ radius: "40"; angle: "180"; value: "15.4508"; }
ListElement{ radius: "40"; angle: "185"; value: "11.0931"; }
ListElement{ radius: "40"; angle: "190"; value: "6.76844"; }
ListElement{ radius: "40"; angle: "195"; value: "2.5099"; }
ListElement{ radius: "40"; angle: "200"; value: "-1.65016"; }
ListElement{ radius: "40"; angle: "205"; value: "-5.68006"; }
ListElement{ radius: "40"; angle: "210"; value: "-9.54915"; }
ListElement{ radius: "40"; angle: "215"; value: "-13.228"; }
ListElement{ radius: "40"; angle: "220"; value: "-16.6885"; }
ListElement{ radius: "40"; angle: "225"; value: "-19.9045"; }
ListElement{ radius: "40"; angle: "230"; value: "-22.8514"; }
ListElement{ radius: "40"; angle: "235"; value: "-25.5068"; }
ListElement{ radius: "40"; angle: "240"; value: "-27.8504"; }
ListElement{ radius: "40"; angle: "245"; value: "-29.8645"; }
ListElement{ radius: "40"; angle: "250"; value: "-31.5338"; }
ListElement{ radius: "40"; angle: "255"; value: "-32.8454"; }
ListElement{ radius: "40"; angle: "260"; value: "-33.7895"; }
ListElement{ radius: "40"; angle: "265"; value: "-34.3589"; }
ListElement{ radius: "40"; angle: "270"; value: "-34.5492"; }
ListElement{ radius: "40"; angle: "275"; value: "-34.3589"; }
ListElement{ radius: "40"; angle: "280"; value: "-33.7895"; }
ListElement{ radius: "40"; angle: "285"; value: "-32.8454"; }
ListElement{ radius: "40"; angle: "290"; value: "-31.5338"; }
ListElement{ radius: "40"; angle: "295"; value: "-29.8645"; }
ListElement{ radius: "40"; angle: "300"; value: "-27.8504"; }
ListElement{ radius: "40"; angle: "305"; value: "-25.5068"; }
ListElement{ radius: "40"; angle: "310"; value: "-22.8514"; }
ListElement{ radius: "40"; angle: "315"; value: "-19.9045"; }
ListElement{ radius: "40"; angle: "320"; value: "-16.6885"; }
ListElement{ radius: "40"; angle: "325"; value: "-13.228"; }
ListElement{ radius: "40"; angle: "330"; value: "-9.54915"; }
ListElement{ radius: "40"; angle: "335"; value: "-5.68006"; }
ListElement{ radius: "40"; angle: "340"; value: "-1.65016"; }
ListElement{ radius: "40"; angle: "345"; value: "2.5099"; }
ListElement{ radius: "40"; angle: "350"; value: "6.76844"; }
ListElement{ radius: "40"; angle: "355"; value: "11.0931"; }
ListElement{ radius: "40"; angle: "360"; value: "15.4508"; }
ListElement{ radius: "45"; angle: "0"; value: "7.82172"; }
ListElement{ radius: "45"; angle: "5"; value: "12.1795"; }
ListElement{ radius: "45"; angle: "10"; value: "16.5041"; }
ListElement{ radius: "45"; angle: "15"; value: "20.7627"; }
ListElement{ radius: "45"; angle: "20"; value: "24.9227"; }
ListElement{ radius: "45"; angle: "25"; value: "28.9526"; }
ListElement{ radius: "45"; angle: "30"; value: "32.8217"; }
ListElement{ radius: "45"; angle: "35"; value: "36.5005"; }
ListElement{ radius: "45"; angle: "40"; value: "39.9611"; }
ListElement{ radius: "45"; angle: "45"; value: "43.1771"; }
ListElement{ radius: "45"; angle: "50"; value: "46.1239"; }
ListElement{ radius: "45"; angle: "55"; value: "48.7793"; }
ListElement{ radius: "45"; angle: "60"; value: "51.123"; }
ListElement{ radius: "45"; angle: "65"; value: "53.1371"; }
ListElement{ radius: "45"; angle: "70"; value: "54.8064"; }
ListElement{ radius: "45"; angle: "75"; value: "56.118"; }
ListElement{ radius: "45"; angle: "80"; value: "57.0621"; }
ListElement{ radius: "45"; angle: "85"; value: "57.6315"; }
ListElement{ radius: "45"; angle: "90"; value: "57.8217"; }
ListElement{ radius: "45"; angle: "95"; value: "57.6315"; }
ListElement{ radius: "45"; angle: "100"; value: "57.0621"; }
ListElement{ radius: "45"; angle: "105"; value: "56.118"; }
ListElement{ radius: "45"; angle: "110"; value: "54.8064"; }
ListElement{ radius: "45"; angle: "115"; value: "53.1371"; }
ListElement{ radius: "45"; angle: "120"; value: "51.123"; }
ListElement{ radius: "45"; angle: "125"; value: "48.7793"; }
ListElement{ radius: "45"; angle: "130"; value: "46.1239"; }
ListElement{ radius: "45"; angle: "135"; value: "43.1771"; }
ListElement{ radius: "45"; angle: "140"; value: "39.9611"; }
ListElement{ radius: "45"; angle: "145"; value: "36.5005"; }
ListElement{ radius: "45"; angle: "150"; value: "32.8217"; }
ListElement{ radius: "45"; angle: "155"; value: "28.9526"; }
ListElement{ radius: "45"; angle: "160"; value: "24.9227"; }
ListElement{ radius: "45"; angle: "165"; value: "20.7627"; }
ListElement{ radius: "45"; angle: "170"; value: "16.5041"; }
ListElement{ radius: "45"; angle: "175"; value: "12.1795"; }
ListElement{ radius: "45"; angle: "180"; value: "7.82172"; }
ListElement{ radius: "45"; angle: "185"; value: "3.46394"; }
ListElement{ radius: "45"; angle: "190"; value: "-0.860686"; }
ListElement{ radius: "45"; angle: "195"; value: "-5.11923"; }
ListElement{ radius: "45"; angle: "200"; value: "-9.27928"; }
ListElement{ radius: "45"; angle: "205"; value: "-13.3092"; }
ListElement{ radius: "45"; angle: "210"; value: "-17.1783"; }
ListElement{ radius: "45"; angle: "215"; value: "-20.8571"; }
ListElement{ radius: "45"; angle: "220"; value: "-24.3177"; }
ListElement{ radius: "45"; angle: "225"; value: "-27.5336"; }
ListElement{ radius: "45"; angle: "230"; value: "-30.4805"; }
ListElement{ radius: "45"; angle: "235"; value: "-33.1359"; }
ListElement{ radius: "45"; angle: "240"; value: "-35.4795"; }
ListElement{ radius: "45"; angle: "245"; value: "-37.4937"; }
ListElement{ radius: "45"; angle: "250"; value: "-39.1629"; }
ListElement{ radius: "45"; angle: "255"; value: "-40.4746"; }
ListElement{ radius: "45"; angle: "260"; value: "-41.4187"; }
ListElement{ radius: "45"; angle: "265"; value: "-41.988"; }
ListElement{ radius: "45"; angle: "270"; value: "-42.1783"; }
ListElement{ radius: "45"; angle: "275"; value: "-41.988"; }
ListElement{ radius: "45"; angle: "280"; value: "-41.4187"; }
ListElement{ radius: "45"; angle: "285"; value: "-40.4746"; }
ListElement{ radius: "45"; angle: "290"; value: "-39.1629"; }
ListElement{ radius: "45"; angle: "295"; value: "-37.4937"; }
ListElement{ radius: "45"; angle: "300"; value: "-35.4795"; }
ListElement{ radius: "45"; angle: "305"; value: "-33.1359"; }
ListElement{ radius: "45"; angle: "310"; value: "-30.4805"; }
ListElement{ radius: "45"; angle: "315"; value: "-27.5336"; }
ListElement{ radius: "45"; angle: "320"; value: "-24.3177"; }
ListElement{ radius: "45"; angle: "325"; value: "-20.8571"; }
ListElement{ radius: "45"; angle: "330"; value: "-17.1783"; }
ListElement{ radius: "45"; angle: "335"; value: "-13.3092"; }
ListElement{ radius: "45"; angle: "340"; value: "-9.27928"; }
ListElement{ radius: "45"; angle: "345"; value: "-5.11923"; }
ListElement{ radius: "45"; angle: "350"; value: "-0.860686"; }
ListElement{ radius: "45"; angle: "355"; value: "3.46394"; }
ListElement{ radius: "45"; angle: "360"; value: "7.82172"; }
ListElement{ radius: "50"; angle: "0"; value: "3.06162e-15"; }
ListElement{ radius: "50"; angle: "5"; value: "4.35779"; }
ListElement{ radius: "50"; angle: "10"; value: "8.68241"; }
ListElement{ radius: "50"; angle: "15"; value: "12.941"; }
ListElement{ radius: "50"; angle: "20"; value: "17.101"; }
ListElement{ radius: "50"; angle: "25"; value: "21.1309"; }
ListElement{ radius: "50"; angle: "30"; value: "25"; }
ListElement{ radius: "50"; angle: "35"; value: "28.6788"; }
ListElement{ radius: "50"; angle: "40"; value: "32.1394"; }
ListElement{ radius: "50"; angle: "45"; value: "35.3553"; }
ListElement{ radius: "50"; angle: "50"; value: "38.3022"; }
ListElement{ radius: "50"; angle: "55"; value: "40.9576"; }
ListElement{ radius: "50"; angle: "60"; value: "43.3013"; }
ListElement{ radius: "50"; angle: "65"; value: "45.3154"; }
ListElement{ radius: "50"; angle: "70"; value: "46.9846"; }
ListElement{ radius: "50"; angle: "75"; value: "48.2963"; }
ListElement{ radius: "50"; angle: "80"; value: "49.2404"; }
ListElement{ radius: "50"; angle: "85"; value: "49.8097"; }
ListElement{ radius: "50"; angle: "90"; value: "50"; }
ListElement{ radius: "50"; angle: "95"; value: "49.8097"; }
ListElement{ radius: "50"; angle: "100"; value: "49.2404"; }
ListElement{ radius: "50"; angle: "105"; value: "48.2963"; }
ListElement{ radius: "50"; angle: "110"; value: "46.9846"; }
ListElement{ radius: "50"; angle: "115"; value: "45.3154"; }
ListElement{ radius: "50"; angle: "120"; value: "43.3013"; }
ListElement{ radius: "50"; angle: "125"; value: "40.9576"; }
ListElement{ radius: "50"; angle: "130"; value: "38.3022"; }
ListElement{ radius: "50"; angle: "135"; value: "35.3553"; }
ListElement{ radius: "50"; angle: "140"; value: "32.1394"; }
ListElement{ radius: "50"; angle: "145"; value: "28.6788"; }
ListElement{ radius: "50"; angle: "150"; value: "25"; }
ListElement{ radius: "50"; angle: "155"; value: "21.1309"; }
ListElement{ radius: "50"; angle: "160"; value: "17.101"; }
ListElement{ radius: "50"; angle: "165"; value: "12.941"; }
ListElement{ radius: "50"; angle: "170"; value: "8.68241"; }
ListElement{ radius: "50"; angle: "175"; value: "4.35779"; }
ListElement{ radius: "50"; angle: "180"; value: "9.18485e-15"; }
ListElement{ radius: "50"; angle: "185"; value: "-4.35779"; }
ListElement{ radius: "50"; angle: "190"; value: "-8.68241"; }
ListElement{ radius: "50"; angle: "195"; value: "-12.941"; }
ListElement{ radius: "50"; angle: "200"; value: "-17.101"; }
ListElement{ radius: "50"; angle: "205"; value: "-21.1309"; }
ListElement{ radius: "50"; angle: "210"; value: "-25"; }
ListElement{ radius: "50"; angle: "215"; value: "-28.6788"; }
ListElement{ radius: "50"; angle: "220"; value: "-32.1394"; }
ListElement{ radius: "50"; angle: "225"; value: "-35.3553"; }
ListElement{ radius: "50"; angle: "230"; value: "-38.3022"; }
ListElement{ radius: "50"; angle: "235"; value: "-40.9576"; }
ListElement{ radius: "50"; angle: "240"; value: "-43.3013"; }
ListElement{ radius: "50"; angle: "245"; value: "-45.3154"; }
ListElement{ radius: "50"; angle: "250"; value: "-46.9846"; }
ListElement{ radius: "50"; angle: "255"; value: "-48.2963"; }
ListElement{ radius: "50"; angle: "260"; value: "-49.2404"; }
ListElement{ radius: "50"; angle: "265"; value: "-49.8097"; }
ListElement{ radius: "50"; angle: "270"; value: "-50"; }
ListElement{ radius: "50"; angle: "275"; value: "-49.8097"; }
ListElement{ radius: "50"; angle: "280"; value: "-49.2404"; }
ListElement{ radius: "50"; angle: "285"; value: "-48.2963"; }
ListElement{ radius: "50"; angle: "290"; value: "-46.9846"; }
ListElement{ radius: "50"; angle: "295"; value: "-45.3154"; }
ListElement{ radius: "50"; angle: "300"; value: "-43.3013"; }
ListElement{ radius: "50"; angle: "305"; value: "-40.9576"; }
ListElement{ radius: "50"; angle: "310"; value: "-38.3022"; }
ListElement{ radius: "50"; angle: "315"; value: "-35.3553"; }
ListElement{ radius: "50"; angle: "320"; value: "-32.1394"; }
ListElement{ radius: "50"; angle: "325"; value: "-28.6788"; }
ListElement{ radius: "50"; angle: "330"; value: "-25"; }
ListElement{ radius: "50"; angle: "335"; value: "-21.1309"; }
ListElement{ radius: "50"; angle: "340"; value: "-17.101"; }
ListElement{ radius: "50"; angle: "345"; value: "-12.941"; }
ListElement{ radius: "50"; angle: "350"; value: "-8.68241"; }
ListElement{ radius: "50"; angle: "355"; value: "-4.35779"; }
ListElement{ radius: "50"; angle: "360"; value: "-9.18485e-15"; }
ListElement{ radius: "55"; angle: "0"; value: "-7.82172"; }
ListElement{ radius: "55"; angle: "5"; value: "-3.46394"; }
ListElement{ radius: "55"; angle: "10"; value: "0.860686"; }
ListElement{ radius: "55"; angle: "15"; value: "5.11923"; }
ListElement{ radius: "55"; angle: "20"; value: "9.27928"; }
ListElement{ radius: "55"; angle: "25"; value: "13.3092"; }
ListElement{ radius: "55"; angle: "30"; value: "17.1783"; }
ListElement{ radius: "55"; angle: "35"; value: "20.8571"; }
ListElement{ radius: "55"; angle: "40"; value: "24.3177"; }
ListElement{ radius: "55"; angle: "45"; value: "27.5336"; }
ListElement{ radius: "55"; angle: "50"; value: "30.4805"; }
ListElement{ radius: "55"; angle: "55"; value: "33.1359"; }
ListElement{ radius: "55"; angle: "60"; value: "35.4795"; }
ListElement{ radius: "55"; angle: "65"; value: "37.4937"; }
ListElement{ radius: "55"; angle: "70"; value: "39.1629"; }
ListElement{ radius: "55"; angle: "75"; value: "40.4746"; }
ListElement{ radius: "55"; angle: "80"; value: "41.4187"; }
ListElement{ radius: "55"; angle: "85"; value: "41.988"; }
ListElement{ radius: "55"; angle: "90"; value: "42.1783"; }
ListElement{ radius: "55"; angle: "95"; value: "41.988"; }
ListElement{ radius: "55"; angle: "100"; value: "41.4187"; }
ListElement{ radius: "55"; angle: "105"; value: "40.4746"; }
ListElement{ radius: "55"; angle: "110"; value: "39.1629"; }
ListElement{ radius: "55"; angle: "115"; value: "37.4937"; }
ListElement{ radius: "55"; angle: "120"; value: "35.4795"; }
ListElement{ radius: "55"; angle: "125"; value: "33.1359"; }
ListElement{ radius: "55"; angle: "130"; value: "30.4805"; }
ListElement{ radius: "55"; angle: "135"; value: "27.5336"; }
ListElement{ radius: "55"; angle: "140"; value: "24.3177"; }
ListElement{ radius: "55"; angle: "145"; value: "20.8571"; }
ListElement{ radius: "55"; angle: "150"; value: "17.1783"; }
ListElement{ radius: "55"; angle: "155"; value: "13.3092"; }
ListElement{ radius: "55"; angle: "160"; value: "9.27928"; }
ListElement{ radius: "55"; angle: "165"; value: "5.11923"; }
ListElement{ radius: "55"; angle: "170"; value: "0.860686"; }
ListElement{ radius: "55"; angle: "175"; value: "-3.46394"; }
ListElement{ radius: "55"; angle: "180"; value: "-7.82172"; }
ListElement{ radius: "55"; angle: "185"; value: "-12.1795"; }
ListElement{ radius: "55"; angle: "190"; value: "-16.5041"; }
ListElement{ radius: "55"; angle: "195"; value: "-20.7627"; }
ListElement{ radius: "55"; angle: "200"; value: "-24.9227"; }
ListElement{ radius: "55"; angle: "205"; value: "-28.9526"; }
ListElement{ radius: "55"; angle: "210"; value: "-32.8217"; }
ListElement{ radius: "55"; angle: "215"; value: "-36.5005"; }
ListElement{ radius: "55"; angle: "220"; value: "-39.9611"; }
ListElement{ radius: "55"; angle: "225"; value: "-43.1771"; }
ListElement{ radius: "55"; angle: "230"; value: "-46.1239"; }
ListElement{ radius: "55"; angle: "235"; value: "-48.7793"; }
ListElement{ radius: "55"; angle: "240"; value: "-51.123"; }
ListElement{ radius: "55"; angle: "245"; value: "-53.1371"; }
ListElement{ radius: "55"; angle: "250"; value: "-54.8064"; }
ListElement{ radius: "55"; angle: "255"; value: "-56.118"; }
ListElement{ radius: "55"; angle: "260"; value: "-57.0621"; }
ListElement{ radius: "55"; angle: "265"; value: "-57.6315"; }
ListElement{ radius: "55"; angle: "270"; value: "-57.8217"; }
ListElement{ radius: "55"; angle: "275"; value: "-57.6315"; }
ListElement{ radius: "55"; angle: "280"; value: "-57.0621"; }
ListElement{ radius: "55"; angle: "285"; value: "-56.118"; }
ListElement{ radius: "55"; angle: "290"; value: "-54.8064"; }
ListElement{ radius: "55"; angle: "295"; value: "-53.1371"; }
ListElement{ radius: "55"; angle: "300"; value: "-51.123"; }
ListElement{ radius: "55"; angle: "305"; value: "-48.7793"; }
ListElement{ radius: "55"; angle: "310"; value: "-46.1239"; }
ListElement{ radius: "55"; angle: "315"; value: "-43.1771"; }
ListElement{ radius: "55"; angle: "320"; value: "-39.9611"; }
ListElement{ radius: "55"; angle: "325"; value: "-36.5005"; }
ListElement{ radius: "55"; angle: "330"; value: "-32.8217"; }
ListElement{ radius: "55"; angle: "335"; value: "-28.9526"; }
ListElement{ radius: "55"; angle: "340"; value: "-24.9227"; }
ListElement{ radius: "55"; angle: "345"; value: "-20.7627"; }
ListElement{ radius: "55"; angle: "350"; value: "-16.5041"; }
ListElement{ radius: "55"; angle: "355"; value: "-12.1795"; }
ListElement{ radius: "55"; angle: "360"; value: "-7.82172"; }
ListElement{ radius: "60"; angle: "0"; value: "-15.4508"; }
ListElement{ radius: "60"; angle: "5"; value: "-11.0931"; }
ListElement{ radius: "60"; angle: "10"; value: "-6.76844"; }
ListElement{ radius: "60"; angle: "15"; value: "-2.5099"; }
ListElement{ radius: "60"; angle: "20"; value: "1.65016"; }
ListElement{ radius: "60"; angle: "25"; value: "5.68006"; }
ListElement{ radius: "60"; angle: "30"; value: "9.54915"; }
ListElement{ radius: "60"; angle: "35"; value: "13.228"; }
ListElement{ radius: "60"; angle: "40"; value: "16.6885"; }
ListElement{ radius: "60"; angle: "45"; value: "19.9045"; }
ListElement{ radius: "60"; angle: "50"; value: "22.8514"; }
ListElement{ radius: "60"; angle: "55"; value: "25.5068"; }
ListElement{ radius: "60"; angle: "60"; value: "27.8504"; }
ListElement{ radius: "60"; angle: "65"; value: "29.8645"; }
ListElement{ radius: "60"; angle: "70"; value: "31.5338"; }
ListElement{ radius: "60"; angle: "75"; value: "32.8454"; }
ListElement{ radius: "60"; angle: "80"; value: "33.7895"; }
ListElement{ radius: "60"; angle: "85"; value: "34.3589"; }
ListElement{ radius: "60"; angle: "90"; value: "34.5492"; }
ListElement{ radius: "60"; angle: "95"; value: "34.3589"; }
ListElement{ radius: "60"; angle: "100"; value: "33.7895"; }
ListElement{ radius: "60"; angle: "105"; value: "32.8454"; }
ListElement{ radius: "60"; angle: "110"; value: "31.5338"; }
ListElement{ radius: "60"; angle: "115"; value: "29.8645"; }
ListElement{ radius: "60"; angle: "120"; value: "27.8504"; }
ListElement{ radius: "60"; angle: "125"; value: "25.5068"; }
ListElement{ radius: "60"; angle: "130"; value: "22.8514"; }
ListElement{ radius: "60"; angle: "135"; value: "19.9045"; }
ListElement{ radius: "60"; angle: "140"; value: "16.6885"; }
ListElement{ radius: "60"; angle: "145"; value: "13.228"; }
ListElement{ radius: "60"; angle: "150"; value: "9.54915"; }
ListElement{ radius: "60"; angle: "155"; value: "5.68006"; }
ListElement{ radius: "60"; angle: "160"; value: "1.65016"; }
ListElement{ radius: "60"; angle: "165"; value: "-2.5099"; }
ListElement{ radius: "60"; angle: "170"; value: "-6.76844"; }
ListElement{ radius: "60"; angle: "175"; value: "-11.0931"; }
ListElement{ radius: "60"; angle: "180"; value: "-15.4508"; }
ListElement{ radius: "60"; angle: "185"; value: "-19.8086"; }
ListElement{ radius: "60"; angle: "190"; value: "-24.1333"; }
ListElement{ radius: "60"; angle: "195"; value: "-28.3918"; }
ListElement{ radius: "60"; angle: "200"; value: "-32.5519"; }
ListElement{ radius: "60"; angle: "205"; value: "-36.5818"; }
ListElement{ radius: "60"; angle: "210"; value: "-40.4508"; }
ListElement{ radius: "60"; angle: "215"; value: "-44.1297"; }
ListElement{ radius: "60"; angle: "220"; value: "-47.5902"; }
ListElement{ radius: "60"; angle: "225"; value: "-50.8062"; }
ListElement{ radius: "60"; angle: "230"; value: "-53.7531"; }
ListElement{ radius: "60"; angle: "235"; value: "-56.4085"; }
ListElement{ radius: "60"; angle: "240"; value: "-58.7521"; }
ListElement{ radius: "60"; angle: "245"; value: "-60.7662"; }
ListElement{ radius: "60"; angle: "250"; value: "-62.4355"; }
ListElement{ radius: "60"; angle: "255"; value: "-63.7471"; }
ListElement{ radius: "60"; angle: "260"; value: "-64.6912"; }
ListElement{ radius: "60"; angle: "265"; value: "-65.2606"; }
ListElement{ radius: "60"; angle: "270"; value: "-65.4508"; }
ListElement{ radius: "60"; angle: "275"; value: "-65.2606"; }
ListElement{ radius: "60"; angle: "280"; value: "-64.6912"; }
ListElement{ radius: "60"; angle: "285"; value: "-63.7471"; }
ListElement{ radius: "60"; angle: "290"; value: "-62.4355"; }
ListElement{ radius: "60"; angle: "295"; value: "-60.7662"; }
ListElement{ radius: "60"; angle: "300"; value: "-58.7521"; }
ListElement{ radius: "60"; angle: "305"; value: "-56.4085"; }
ListElement{ radius: "60"; angle: "310"; value: "-53.7531"; }
ListElement{ radius: "60"; angle: "315"; value: "-50.8062"; }
ListElement{ radius: "60"; angle: "320"; value: "-47.5902"; }
ListElement{ radius: "60"; angle: "325"; value: "-44.1297"; }
ListElement{ radius: "60"; angle: "330"; value: "-40.4508"; }
ListElement{ radius: "60"; angle: "335"; value: "-36.5818"; }
ListElement{ radius: "60"; angle: "340"; value: "-32.5519"; }
ListElement{ radius: "60"; angle: "345"; value: "-28.3918"; }
ListElement{ radius: "60"; angle: "350"; value: "-24.1333"; }
ListElement{ radius: "60"; angle: "355"; value: "-19.8086"; }
ListElement{ radius: "60"; angle: "360"; value: "-15.4508"; }
ListElement{ radius: "65"; angle: "0"; value: "-22.6995"; }
ListElement{ radius: "65"; angle: "5"; value: "-18.3417"; }
ListElement{ radius: "65"; angle: "10"; value: "-14.0171"; }
ListElement{ radius: "65"; angle: "15"; value: "-9.75857"; }
ListElement{ radius: "65"; angle: "20"; value: "-5.59852"; }
ListElement{ radius: "65"; angle: "25"; value: "-1.56861"; }
ListElement{ radius: "65"; angle: "30"; value: "2.30048"; }
ListElement{ radius: "65"; angle: "35"; value: "5.9793"; }
ListElement{ radius: "65"; angle: "40"; value: "9.43986"; }
ListElement{ radius: "65"; angle: "45"; value: "12.6558"; }
ListElement{ radius: "65"; angle: "50"; value: "15.6027"; }
ListElement{ radius: "65"; angle: "55"; value: "18.2581"; }
ListElement{ radius: "65"; angle: "60"; value: "20.6017"; }
ListElement{ radius: "65"; angle: "65"; value: "22.6159"; }
ListElement{ radius: "65"; angle: "70"; value: "24.2851"; }
ListElement{ radius: "65"; angle: "75"; value: "25.5968"; }
ListElement{ radius: "65"; angle: "80"; value: "26.5409"; }
ListElement{ radius: "65"; angle: "85"; value: "27.1102"; }
ListElement{ radius: "65"; angle: "90"; value: "27.3005"; }
ListElement{ radius: "65"; angle: "95"; value: "27.1102"; }
ListElement{ radius: "65"; angle: "100"; value: "26.5409"; }
ListElement{ radius: "65"; angle: "105"; value: "25.5968"; }
ListElement{ radius: "65"; angle: "110"; value: "24.2851"; }
ListElement{ radius: "65"; angle: "115"; value: "22.6159"; }
ListElement{ radius: "65"; angle: "120"; value: "20.6017"; }
ListElement{ radius: "65"; angle: "125"; value: "18.2581"; }
ListElement{ radius: "65"; angle: "130"; value: "15.6027"; }
ListElement{ radius: "65"; angle: "135"; value: "12.6558"; }
ListElement{ radius: "65"; angle: "140"; value: "9.43986"; }
ListElement{ radius: "65"; angle: "145"; value: "5.9793"; }
ListElement{ radius: "65"; angle: "150"; value: "2.30048"; }
ListElement{ radius: "65"; angle: "155"; value: "-1.56861"; }
ListElement{ radius: "65"; angle: "160"; value: "-5.59852"; }
ListElement{ radius: "65"; angle: "165"; value: "-9.75857"; }
ListElement{ radius: "65"; angle: "170"; value: "-14.0171"; }
ListElement{ radius: "65"; angle: "175"; value: "-18.3417"; }
ListElement{ radius: "65"; angle: "180"; value: "-22.6995"; }
ListElement{ radius: "65"; angle: "185"; value: "-27.0573"; }
ListElement{ radius: "65"; angle: "190"; value: "-31.3819"; }
ListElement{ radius: "65"; angle: "195"; value: "-35.6405"; }
ListElement{ radius: "65"; angle: "200"; value: "-39.8005"; }
ListElement{ radius: "65"; angle: "205"; value: "-43.8304"; }
ListElement{ radius: "65"; angle: "210"; value: "-47.6995"; }
ListElement{ radius: "65"; angle: "215"; value: "-51.3783"; }
ListElement{ radius: "65"; angle: "220"; value: "-54.8389"; }
ListElement{ radius: "65"; angle: "225"; value: "-58.0549"; }
ListElement{ radius: "65"; angle: "230"; value: "-61.0017"; }
ListElement{ radius: "65"; angle: "235"; value: "-63.6571"; }
ListElement{ radius: "65"; angle: "240"; value: "-66.0008"; }
ListElement{ radius: "65"; angle: "245"; value: "-68.0149"; }
ListElement{ radius: "65"; angle: "250"; value: "-69.6842"; }
ListElement{ radius: "65"; angle: "255"; value: "-70.9958"; }
ListElement{ radius: "65"; angle: "260"; value: "-71.9399"; }
ListElement{ radius: "65"; angle: "265"; value: "-72.5093"; }
ListElement{ radius: "65"; angle: "270"; value: "-72.6995"; }
ListElement{ radius: "65"; angle: "275"; value: "-72.5093"; }
ListElement{ radius: "65"; angle: "280"; value: "-71.9399"; }
ListElement{ radius: "65"; angle: "285"; value: "-70.9958"; }
ListElement{ radius: "65"; angle: "290"; value: "-69.6842"; }
ListElement{ radius: "65"; angle: "295"; value: "-68.0149"; }
ListElement{ radius: "65"; angle: "300"; value: "-66.0008"; }
ListElement{ radius: "65"; angle: "305"; value: "-63.6571"; }
ListElement{ radius: "65"; angle: "310"; value: "-61.0017"; }
ListElement{ radius: "65"; angle: "315"; value: "-58.0549"; }
ListElement{ radius: "65"; angle: "320"; value: "-54.8389"; }
ListElement{ radius: "65"; angle: "325"; value: "-51.3783"; }
ListElement{ radius: "65"; angle: "330"; value: "-47.6995"; }
ListElement{ radius: "65"; angle: "335"; value: "-43.8304"; }
ListElement{ radius: "65"; angle: "340"; value: "-39.8005"; }
ListElement{ radius: "65"; angle: "345"; value: "-35.6405"; }
ListElement{ radius: "65"; angle: "350"; value: "-31.3819"; }
ListElement{ radius: "65"; angle: "355"; value: "-27.0573"; }
ListElement{ radius: "65"; angle: "360"; value: "-22.6995"; }
ListElement{ radius: "70"; angle: "0"; value: "-29.3893"; }
ListElement{ radius: "70"; angle: "5"; value: "-25.0315"; }
ListElement{ radius: "70"; angle: "10"; value: "-20.7069"; }
ListElement{ radius: "70"; angle: "15"; value: "-16.4483"; }
ListElement{ radius: "70"; angle: "20"; value: "-12.2883"; }
ListElement{ radius: "70"; angle: "25"; value: "-8.25835"; }
ListElement{ radius: "70"; angle: "30"; value: "-4.38926"; }
ListElement{ radius: "70"; angle: "35"; value: "-0.710441"; }
ListElement{ radius: "70"; angle: "40"; value: "2.75012"; }
ListElement{ radius: "70"; angle: "45"; value: "5.96608"; }
ListElement{ radius: "70"; angle: "50"; value: "8.91296"; }
ListElement{ radius: "70"; angle: "55"; value: "11.5683"; }
ListElement{ radius: "70"; angle: "60"; value: "13.912"; }
ListElement{ radius: "70"; angle: "65"; value: "15.9261"; }
ListElement{ radius: "70"; angle: "70"; value: "17.5954"; }
ListElement{ radius: "70"; angle: "75"; value: "18.907"; }
ListElement{ radius: "70"; angle: "80"; value: "19.8511"; }
ListElement{ radius: "70"; angle: "85"; value: "20.4205"; }
ListElement{ radius: "70"; angle: "90"; value: "20.6107"; }
ListElement{ radius: "70"; angle: "95"; value: "20.4205"; }
ListElement{ radius: "70"; angle: "100"; value: "19.8511"; }
ListElement{ radius: "70"; angle: "105"; value: "18.907"; }
ListElement{ radius: "70"; angle: "110"; value: "17.5954"; }
ListElement{ radius: "70"; angle: "115"; value: "15.9261"; }
ListElement{ radius: "70"; angle: "120"; value: "13.912"; }
ListElement{ radius: "70"; angle: "125"; value: "11.5683"; }
ListElement{ radius: "70"; angle: "130"; value: "8.91296"; }
ListElement{ radius: "70"; angle: "135"; value: "5.96608"; }
ListElement{ radius: "70"; angle: "140"; value: "2.75012"; }
ListElement{ radius: "70"; angle: "145"; value: "-0.710441"; }
ListElement{ radius: "70"; angle: "150"; value: "-4.38926"; }
ListElement{ radius: "70"; angle: "155"; value: "-8.25835"; }
ListElement{ radius: "70"; angle: "160"; value: "-12.2883"; }
ListElement{ radius: "70"; angle: "165"; value: "-16.4483"; }
ListElement{ radius: "70"; angle: "170"; value: "-20.7069"; }
ListElement{ radius: "70"; angle: "175"; value: "-25.0315"; }
ListElement{ radius: "70"; angle: "180"; value: "-29.3893"; }
ListElement{ radius: "70"; angle: "185"; value: "-33.747"; }
ListElement{ radius: "70"; angle: "190"; value: "-38.0717"; }
ListElement{ radius: "70"; angle: "195"; value: "-42.3302"; }
ListElement{ radius: "70"; angle: "200"; value: "-46.4903"; }
ListElement{ radius: "70"; angle: "205"; value: "-50.5202"; }
ListElement{ radius: "70"; angle: "210"; value: "-54.3893"; }
ListElement{ radius: "70"; angle: "215"; value: "-58.0681"; }
ListElement{ radius: "70"; angle: "220"; value: "-61.5286"; }
ListElement{ radius: "70"; angle: "225"; value: "-64.7446"; }
ListElement{ radius: "70"; angle: "230"; value: "-67.6915"; }
ListElement{ radius: "70"; angle: "235"; value: "-70.3469"; }
ListElement{ radius: "70"; angle: "240"; value: "-72.6905"; }
ListElement{ radius: "70"; angle: "245"; value: "-74.7047"; }
ListElement{ radius: "70"; angle: "250"; value: "-76.3739"; }
ListElement{ radius: "70"; angle: "255"; value: "-77.6856"; }
ListElement{ radius: "70"; angle: "260"; value: "-78.6297"; }
ListElement{ radius: "70"; angle: "265"; value: "-79.199"; }
ListElement{ radius: "70"; angle: "270"; value: "-79.3893"; }
ListElement{ radius: "70"; angle: "275"; value: "-79.199"; }
ListElement{ radius: "70"; angle: "280"; value: "-78.6297"; }
ListElement{ radius: "70"; angle: "285"; value: "-77.6856"; }
ListElement{ radius: "70"; angle: "290"; value: "-76.3739"; }
ListElement{ radius: "70"; angle: "295"; value: "-74.7047"; }
ListElement{ radius: "70"; angle: "300"; value: "-72.6905"; }
ListElement{ radius: "70"; angle: "305"; value: "-70.3469"; }
ListElement{ radius: "70"; angle: "310"; value: "-67.6915"; }
ListElement{ radius: "70"; angle: "315"; value: "-64.7446"; }
ListElement{ radius: "70"; angle: "320"; value: "-61.5286"; }
ListElement{ radius: "70"; angle: "325"; value: "-58.0681"; }
ListElement{ radius: "70"; angle: "330"; value: "-54.3893"; }
ListElement{ radius: "70"; angle: "335"; value: "-50.5202"; }
ListElement{ radius: "70"; angle: "340"; value: "-46.4903"; }
ListElement{ radius: "70"; angle: "345"; value: "-42.3302"; }
ListElement{ radius: "70"; angle: "350"; value: "-38.0717"; }
ListElement{ radius: "70"; angle: "355"; value: "-33.747"; }
ListElement{ radius: "70"; angle: "360"; value: "-29.3893"; }
ListElement{ radius: "75"; angle: "0"; value: "-35.3553"; }
ListElement{ radius: "75"; angle: "5"; value: "-30.9976"; }
ListElement{ radius: "75"; angle: "10"; value: "-26.6729"; }
ListElement{ radius: "75"; angle: "15"; value: "-22.4144"; }
ListElement{ radius: "75"; angle: "20"; value: "-18.2543"; }
ListElement{ radius: "75"; angle: "25"; value: "-14.2244"; }
ListElement{ radius: "75"; angle: "30"; value: "-10.3553"; }
ListElement{ radius: "75"; angle: "35"; value: "-6.67652"; }
ListElement{ radius: "75"; angle: "40"; value: "-3.21596"; }
ListElement{ radius: "75"; angle: "45"; value: "5.55112e-15"; }
ListElement{ radius: "75"; angle: "50"; value: "2.94688"; }
ListElement{ radius: "75"; angle: "55"; value: "5.60226"; }
ListElement{ radius: "75"; angle: "60"; value: "7.94593"; }
ListElement{ radius: "75"; angle: "65"; value: "9.96005"; }
ListElement{ radius: "75"; angle: "70"; value: "11.6293"; }
ListElement{ radius: "75"; angle: "75"; value: "12.941"; }
ListElement{ radius: "75"; angle: "80"; value: "13.885"; }
ListElement{ radius: "75"; angle: "85"; value: "14.4544"; }
ListElement{ radius: "75"; angle: "90"; value: "14.6447"; }
ListElement{ radius: "75"; angle: "95"; value: "14.4544"; }
ListElement{ radius: "75"; angle: "100"; value: "13.885"; }
ListElement{ radius: "75"; angle: "105"; value: "12.941"; }
ListElement{ radius: "75"; angle: "110"; value: "11.6293"; }
ListElement{ radius: "75"; angle: "115"; value: "9.96005"; }
ListElement{ radius: "75"; angle: "120"; value: "7.94593"; }
ListElement{ radius: "75"; angle: "125"; value: "5.60226"; }
ListElement{ radius: "75"; angle: "130"; value: "2.94688"; }
ListElement{ radius: "75"; angle: "135"; value: "5.55112e-15"; }
ListElement{ radius: "75"; angle: "140"; value: "-3.21596"; }
ListElement{ radius: "75"; angle: "145"; value: "-6.67652"; }
ListElement{ radius: "75"; angle: "150"; value: "-10.3553"; }
ListElement{ radius: "75"; angle: "155"; value: "-14.2244"; }
ListElement{ radius: "75"; angle: "160"; value: "-18.2543"; }
ListElement{ radius: "75"; angle: "165"; value: "-22.4144"; }
ListElement{ radius: "75"; angle: "170"; value: "-26.6729"; }
ListElement{ radius: "75"; angle: "175"; value: "-30.9976"; }
ListElement{ radius: "75"; angle: "180"; value: "-35.3553"; }
ListElement{ radius: "75"; angle: "185"; value: "-39.7131"; }
ListElement{ radius: "75"; angle: "190"; value: "-44.0377"; }
ListElement{ radius: "75"; angle: "195"; value: "-48.2963"; }
ListElement{ radius: "75"; angle: "200"; value: "-52.4563"; }
ListElement{ radius: "75"; angle: "205"; value: "-56.4863"; }
ListElement{ radius: "75"; angle: "210"; value: "-60.3553"; }
ListElement{ radius: "75"; angle: "215"; value: "-64.0342"; }
ListElement{ radius: "75"; angle: "220"; value: "-67.4947"; }
ListElement{ radius: "75"; angle: "225"; value: "-70.7107"; }
ListElement{ radius: "75"; angle: "230"; value: "-73.6576"; }
ListElement{ radius: "75"; angle: "235"; value: "-76.3129"; }
ListElement{ radius: "75"; angle: "240"; value: "-78.6566"; }
ListElement{ radius: "75"; angle: "245"; value: "-80.6707"; }
ListElement{ radius: "75"; angle: "250"; value: "-82.34"; }
ListElement{ radius: "75"; angle: "255"; value: "-83.6516"; }
ListElement{ radius: "75"; angle: "260"; value: "-84.5957"; }
ListElement{ radius: "75"; angle: "265"; value: "-85.1651"; }
ListElement{ radius: "75"; angle: "270"; value: "-85.3553"; }
ListElement{ radius: "75"; angle: "275"; value: "-85.1651"; }
ListElement{ radius: "75"; angle: "280"; value: "-84.5957"; }
ListElement{ radius: "75"; angle: "285"; value: "-83.6516"; }
ListElement{ radius: "75"; angle: "290"; value: "-82.34"; }
ListElement{ radius: "75"; angle: "295"; value: "-80.6707"; }
ListElement{ radius: "75"; angle: "300"; value: "-78.6566"; }
ListElement{ radius: "75"; angle: "305"; value: "-76.3129"; }
ListElement{ radius: "75"; angle: "310"; value: "-73.6576"; }
ListElement{ radius: "75"; angle: "315"; value: "-70.7107"; }
ListElement{ radius: "75"; angle: "320"; value: "-67.4947"; }
ListElement{ radius: "75"; angle: "325"; value: "-64.0342"; }
ListElement{ radius: "75"; angle: "330"; value: "-60.3553"; }
ListElement{ radius: "75"; angle: "335"; value: "-56.4863"; }
ListElement{ radius: "75"; angle: "340"; value: "-52.4563"; }
ListElement{ radius: "75"; angle: "345"; value: "-48.2963"; }
ListElement{ radius: "75"; angle: "350"; value: "-44.0377"; }
ListElement{ radius: "75"; angle: "355"; value: "-39.7131"; }
ListElement{ radius: "75"; angle: "360"; value: "-35.3553"; }
ListElement{ radius: "80"; angle: "0"; value: "-40.4508"; }
ListElement{ radius: "80"; angle: "5"; value: "-36.0931"; }
ListElement{ radius: "80"; angle: "10"; value: "-31.7684"; }
ListElement{ radius: "80"; angle: "15"; value: "-27.5099"; }
ListElement{ radius: "80"; angle: "20"; value: "-23.3498"; }
ListElement{ radius: "80"; angle: "25"; value: "-19.3199"; }
ListElement{ radius: "80"; angle: "30"; value: "-15.4508"; }
ListElement{ radius: "80"; angle: "35"; value: "-11.772"; }
ListElement{ radius: "80"; angle: "40"; value: "-8.31147"; }
ListElement{ radius: "80"; angle: "45"; value: "-5.09551"; }
ListElement{ radius: "80"; angle: "50"; value: "-2.14863"; }
ListElement{ radius: "80"; angle: "55"; value: "0.506752"; }
ListElement{ radius: "80"; angle: "60"; value: "2.85042"; }
ListElement{ radius: "80"; angle: "65"; value: "4.86454"; }
ListElement{ radius: "80"; angle: "70"; value: "6.53378"; }
ListElement{ radius: "80"; angle: "75"; value: "7.84544"; }
ListElement{ radius: "80"; angle: "80"; value: "8.78954"; }
ListElement{ radius: "80"; angle: "85"; value: "9.35889"; }
ListElement{ radius: "80"; angle: "90"; value: "9.54915"; }
ListElement{ radius: "80"; angle: "95"; value: "9.35889"; }
ListElement{ radius: "80"; angle: "100"; value: "8.78954"; }
ListElement{ radius: "80"; angle: "105"; value: "7.84544"; }
ListElement{ radius: "80"; angle: "110"; value: "6.53378"; }
ListElement{ radius: "80"; angle: "115"; value: "4.86454"; }
ListElement{ radius: "80"; angle: "120"; value: "2.85042"; }
ListElement{ radius: "80"; angle: "125"; value: "0.506752"; }
ListElement{ radius: "80"; angle: "130"; value: "-2.14863"; }
ListElement{ radius: "80"; angle: "135"; value: "-5.09551"; }
ListElement{ radius: "80"; angle: "140"; value: "-8.31147"; }
ListElement{ radius: "80"; angle: "145"; value: "-11.772"; }
ListElement{ radius: "80"; angle: "150"; value: "-15.4508"; }
ListElement{ radius: "80"; angle: "155"; value: "-19.3199"; }
ListElement{ radius: "80"; angle: "160"; value: "-23.3498"; }
ListElement{ radius: "80"; angle: "165"; value: "-27.5099"; }
ListElement{ radius: "80"; angle: "170"; value: "-31.7684"; }
ListElement{ radius: "80"; angle: "175"; value: "-36.0931"; }
ListElement{ radius: "80"; angle: "180"; value: "-40.4508"; }
ListElement{ radius: "80"; angle: "185"; value: "-44.8086"; }
ListElement{ radius: "80"; angle: "190"; value: "-49.1333"; }
ListElement{ radius: "80"; angle: "195"; value: "-53.3918"; }
ListElement{ radius: "80"; angle: "200"; value: "-57.5519"; }
ListElement{ radius: "80"; angle: "205"; value: "-61.5818"; }
ListElement{ radius: "80"; angle: "210"; value: "-65.4508"; }
ListElement{ radius: "80"; angle: "215"; value: "-69.1297"; }
ListElement{ radius: "80"; angle: "220"; value: "-72.5902"; }
ListElement{ radius: "80"; angle: "225"; value: "-75.8062"; }
ListElement{ radius: "80"; angle: "230"; value: "-78.7531"; }
ListElement{ radius: "80"; angle: "235"; value: "-81.4085"; }
ListElement{ radius: "80"; angle: "240"; value: "-83.7521"; }
ListElement{ radius: "80"; angle: "245"; value: "-85.7662"; }
ListElement{ radius: "80"; angle: "250"; value: "-87.4355"; }
ListElement{ radius: "80"; angle: "255"; value: "-88.7471"; }
ListElement{ radius: "80"; angle: "260"; value: "-89.6912"; }
ListElement{ radius: "80"; angle: "265"; value: "-90.2606"; }
ListElement{ radius: "80"; angle: "270"; value: "-90.4508"; }
ListElement{ radius: "80"; angle: "275"; value: "-90.2606"; }
ListElement{ radius: "80"; angle: "280"; value: "-89.6912"; }
ListElement{ radius: "80"; angle: "285"; value: "-88.7471"; }
ListElement{ radius: "80"; angle: "290"; value: "-87.4355"; }
ListElement{ radius: "80"; angle: "295"; value: "-85.7662"; }
ListElement{ radius: "80"; angle: "300"; value: "-83.7521"; }
ListElement{ radius: "80"; angle: "305"; value: "-81.4085"; }
ListElement{ radius: "80"; angle: "310"; value: "-78.7531"; }
ListElement{ radius: "80"; angle: "315"; value: "-75.8062"; }
ListElement{ radius: "80"; angle: "320"; value: "-72.5902"; }
ListElement{ radius: "80"; angle: "325"; value: "-69.1297"; }
ListElement{ radius: "80"; angle: "330"; value: "-65.4508"; }
ListElement{ radius: "80"; angle: "335"; value: "-61.5818"; }
ListElement{ radius: "80"; angle: "340"; value: "-57.5519"; }
ListElement{ radius: "80"; angle: "345"; value: "-53.3918"; }
ListElement{ radius: "80"; angle: "350"; value: "-49.1333"; }
ListElement{ radius: "80"; angle: "355"; value: "-44.8086"; }
ListElement{ radius: "80"; angle: "360"; value: "-40.4508"; }
ListElement{ radius: "85"; angle: "0"; value: "-44.5503"; }
ListElement{ radius: "85"; angle: "5"; value: "-40.1925"; }
ListElement{ radius: "85"; angle: "10"; value: "-35.8679"; }
ListElement{ radius: "85"; angle: "15"; value: "-31.6094"; }
ListElement{ radius: "85"; angle: "20"; value: "-27.4493"; }
ListElement{ radius: "85"; angle: "25"; value: "-23.4194"; }
ListElement{ radius: "85"; angle: "30"; value: "-19.5503"; }
ListElement{ radius: "85"; angle: "35"; value: "-15.8715"; }
ListElement{ radius: "85"; angle: "40"; value: "-12.4109"; }
ListElement{ radius: "85"; angle: "45"; value: "-9.19499"; }
ListElement{ radius: "85"; angle: "50"; value: "-6.2481"; }
ListElement{ radius: "85"; angle: "55"; value: "-3.59272"; }
ListElement{ radius: "85"; angle: "60"; value: "-1.24906"; }
ListElement{ radius: "85"; angle: "65"; value: "0.765063"; }
ListElement{ radius: "85"; angle: "70"; value: "2.4343"; }
ListElement{ radius: "85"; angle: "75"; value: "3.74597"; }
ListElement{ radius: "85"; angle: "80"; value: "4.69006"; }
ListElement{ radius: "85"; angle: "85"; value: "5.25941"; }
ListElement{ radius: "85"; angle: "90"; value: "5.44967"; }
ListElement{ radius: "85"; angle: "95"; value: "5.25941"; }
ListElement{ radius: "85"; angle: "100"; value: "4.69006"; }
ListElement{ radius: "85"; angle: "105"; value: "3.74597"; }
ListElement{ radius: "85"; angle: "110"; value: "2.4343"; }
ListElement{ radius: "85"; angle: "115"; value: "0.765063"; }
ListElement{ radius: "85"; angle: "120"; value: "-1.24906"; }
ListElement{ radius: "85"; angle: "125"; value: "-3.59272"; }
ListElement{ radius: "85"; angle: "130"; value: "-6.2481"; }
ListElement{ radius: "85"; angle: "135"; value: "-9.19499"; }
ListElement{ radius: "85"; angle: "140"; value: "-12.4109"; }
ListElement{ radius: "85"; angle: "145"; value: "-15.8715"; }
ListElement{ radius: "85"; angle: "150"; value: "-19.5503"; }
ListElement{ radius: "85"; angle: "155"; value: "-23.4194"; }
ListElement{ radius: "85"; angle: "160"; value: "-27.4493"; }
ListElement{ radius: "85"; angle: "165"; value: "-31.6094"; }
ListElement{ radius: "85"; angle: "170"; value: "-35.8679"; }
ListElement{ radius: "85"; angle: "175"; value: "-40.1925"; }
ListElement{ radius: "85"; angle: "180"; value: "-44.5503"; }
ListElement{ radius: "85"; angle: "185"; value: "-48.9081"; }
ListElement{ radius: "85"; angle: "190"; value: "-53.2327"; }
ListElement{ radius: "85"; angle: "195"; value: "-57.4913"; }
ListElement{ radius: "85"; angle: "200"; value: "-61.6513"; }
ListElement{ radius: "85"; angle: "205"; value: "-65.6812"; }
ListElement{ radius: "85"; angle: "210"; value: "-69.5503"; }
ListElement{ radius: "85"; angle: "215"; value: "-73.2291"; }
ListElement{ radius: "85"; angle: "220"; value: "-76.6897"; }
ListElement{ radius: "85"; angle: "225"; value: "-79.9057"; }
ListElement{ radius: "85"; angle: "230"; value: "-82.8525"; }
ListElement{ radius: "85"; angle: "235"; value: "-85.5079"; }
ListElement{ radius: "85"; angle: "240"; value: "-87.8516"; }
ListElement{ radius: "85"; angle: "245"; value: "-89.8657"; }
ListElement{ radius: "85"; angle: "250"; value: "-91.535"; }
ListElement{ radius: "85"; angle: "255"; value: "-92.8466"; }
ListElement{ radius: "85"; angle: "260"; value: "-93.7907"; }
ListElement{ radius: "85"; angle: "265"; value: "-94.3601"; }
ListElement{ radius: "85"; angle: "270"; value: "-94.5503"; }
ListElement{ radius: "85"; angle: "275"; value: "-94.3601"; }
ListElement{ radius: "85"; angle: "280"; value: "-93.7907"; }
ListElement{ radius: "85"; angle: "285"; value: "-92.8466"; }
ListElement{ radius: "85"; angle: "290"; value: "-91.535"; }
ListElement{ radius: "85"; angle: "295"; value: "-89.8657"; }
ListElement{ radius: "85"; angle: "300"; value: "-87.8516"; }
ListElement{ radius: "85"; angle: "305"; value: "-85.5079"; }
ListElement{ radius: "85"; angle: "310"; value: "-82.8525"; }
ListElement{ radius: "85"; angle: "315"; value: "-79.9057"; }
ListElement{ radius: "85"; angle: "320"; value: "-76.6897"; }
ListElement{ radius: "85"; angle: "325"; value: "-73.2291"; }
ListElement{ radius: "85"; angle: "330"; value: "-69.5503"; }
ListElement{ radius: "85"; angle: "335"; value: "-65.6812"; }
ListElement{ radius: "85"; angle: "340"; value: "-61.6513"; }
ListElement{ radius: "85"; angle: "345"; value: "-57.4913"; }
ListElement{ radius: "85"; angle: "350"; value: "-53.2327"; }
ListElement{ radius: "85"; angle: "355"; value: "-48.9081"; }
ListElement{ radius: "85"; angle: "360"; value: "-44.5503"; }
ListElement{ radius: "90"; angle: "0"; value: "-47.5528"; }
ListElement{ radius: "90"; angle: "5"; value: "-43.195"; }
ListElement{ radius: "90"; angle: "10"; value: "-38.8704"; }
ListElement{ radius: "90"; angle: "15"; value: "-34.6119"; }
ListElement{ radius: "90"; angle: "20"; value: "-30.4518"; }
ListElement{ radius: "90"; angle: "25"; value: "-26.4219"; }
ListElement{ radius: "90"; angle: "30"; value: "-22.5528"; }
ListElement{ radius: "90"; angle: "35"; value: "-18.874"; }
ListElement{ radius: "90"; angle: "40"; value: "-15.4134"; }
ListElement{ radius: "90"; angle: "45"; value: "-12.1975"; }
ListElement{ radius: "90"; angle: "50"; value: "-9.2506"; }
ListElement{ radius: "90"; angle: "55"; value: "-6.59522"; }
ListElement{ radius: "90"; angle: "60"; value: "-4.25156"; }
ListElement{ radius: "90"; angle: "65"; value: "-2.23744"; }
ListElement{ radius: "90"; angle: "70"; value: "-0.568195"; }
ListElement{ radius: "90"; angle: "75"; value: "0.743465"; }
ListElement{ radius: "90"; angle: "80"; value: "1.68756"; }
ListElement{ radius: "90"; angle: "85"; value: "2.25691"; }
ListElement{ radius: "90"; angle: "90"; value: "2.44717"; }
ListElement{ radius: "90"; angle: "95"; value: "2.25691"; }
ListElement{ radius: "90"; angle: "100"; value: "1.68756"; }
ListElement{ radius: "90"; angle: "105"; value: "0.743465"; }
ListElement{ radius: "90"; angle: "110"; value: "-0.568195"; }
ListElement{ radius: "90"; angle: "115"; value: "-2.23744"; }
ListElement{ radius: "90"; angle: "120"; value: "-4.25156"; }
ListElement{ radius: "90"; angle: "125"; value: "-6.59522"; }
ListElement{ radius: "90"; angle: "130"; value: "-9.2506"; }
ListElement{ radius: "90"; angle: "135"; value: "-12.1975"; }
ListElement{ radius: "90"; angle: "140"; value: "-15.4134"; }
ListElement{ radius: "90"; angle: "145"; value: "-18.874"; }
ListElement{ radius: "90"; angle: "150"; value: "-22.5528"; }
ListElement{ radius: "90"; angle: "155"; value: "-26.4219"; }
ListElement{ radius: "90"; angle: "160"; value: "-30.4518"; }
ListElement{ radius: "90"; angle: "165"; value: "-34.6119"; }
ListElement{ radius: "90"; angle: "170"; value: "-38.8704"; }
ListElement{ radius: "90"; angle: "175"; value: "-43.195"; }
ListElement{ radius: "90"; angle: "180"; value: "-47.5528"; }
ListElement{ radius: "90"; angle: "185"; value: "-51.9106"; }
ListElement{ radius: "90"; angle: "190"; value: "-56.2352"; }
ListElement{ radius: "90"; angle: "195"; value: "-60.4938"; }
ListElement{ radius: "90"; angle: "200"; value: "-64.6538"; }
ListElement{ radius: "90"; angle: "205"; value: "-68.6837"; }
ListElement{ radius: "90"; angle: "210"; value: "-72.5528"; }
ListElement{ radius: "90"; angle: "215"; value: "-76.2316"; }
ListElement{ radius: "90"; angle: "220"; value: "-79.6922"; }
ListElement{ radius: "90"; angle: "225"; value: "-82.9082"; }
ListElement{ radius: "90"; angle: "230"; value: "-85.855"; }
ListElement{ radius: "90"; angle: "235"; value: "-88.5104"; }
ListElement{ radius: "90"; angle: "240"; value: "-90.8541"; }
ListElement{ radius: "90"; angle: "245"; value: "-92.8682"; }
ListElement{ radius: "90"; angle: "250"; value: "-94.5375"; }
ListElement{ radius: "90"; angle: "255"; value: "-95.8491"; }
ListElement{ radius: "90"; angle: "260"; value: "-96.7932"; }
ListElement{ radius: "90"; angle: "265"; value: "-97.3626"; }
ListElement{ radius: "90"; angle: "270"; value: "-97.5528"; }
ListElement{ radius: "90"; angle: "275"; value: "-97.3626"; }
ListElement{ radius: "90"; angle: "280"; value: "-96.7932"; }
ListElement{ radius: "90"; angle: "285"; value: "-95.8491"; }
ListElement{ radius: "90"; angle: "290"; value: "-94.5375"; }
ListElement{ radius: "90"; angle: "295"; value: "-92.8682"; }
ListElement{ radius: "90"; angle: "300"; value: "-90.8541"; }
ListElement{ radius: "90"; angle: "305"; value: "-88.5104"; }
ListElement{ radius: "90"; angle: "310"; value: "-85.855"; }
ListElement{ radius: "90"; angle: "315"; value: "-82.9082"; }
ListElement{ radius: "90"; angle: "320"; value: "-79.6922"; }
ListElement{ radius: "90"; angle: "325"; value: "-76.2316"; }
ListElement{ radius: "90"; angle: "330"; value: "-72.5528"; }
ListElement{ radius: "90"; angle: "335"; value: "-68.6837"; }
ListElement{ radius: "90"; angle: "340"; value: "-64.6538"; }
ListElement{ radius: "90"; angle: "345"; value: "-60.4938"; }
ListElement{ radius: "90"; angle: "350"; value: "-56.2352"; }
ListElement{ radius: "90"; angle: "355"; value: "-51.9106"; }
ListElement{ radius: "90"; angle: "360"; value: "-47.5528"; }
ListElement{ radius: "95"; angle: "0"; value: "-49.3844"; }
ListElement{ radius: "95"; angle: "5"; value: "-45.0266"; }
ListElement{ radius: "95"; angle: "10"; value: "-40.702"; }
ListElement{ radius: "95"; angle: "15"; value: "-36.4435"; }
ListElement{ radius: "95"; angle: "20"; value: "-32.2834"; }
ListElement{ radius: "95"; angle: "25"; value: "-28.2535"; }
ListElement{ radius: "95"; angle: "30"; value: "-24.3844"; }
ListElement{ radius: "95"; angle: "35"; value: "-20.7056"; }
ListElement{ radius: "95"; angle: "40"; value: "-17.245"; }
ListElement{ radius: "95"; angle: "45"; value: "-14.0291"; }
ListElement{ radius: "95"; angle: "50"; value: "-11.0822"; }
ListElement{ radius: "95"; angle: "55"; value: "-8.42681"; }
ListElement{ radius: "95"; angle: "60"; value: "-6.08315"; }
ListElement{ radius: "95"; angle: "65"; value: "-4.06903"; }
ListElement{ radius: "95"; angle: "70"; value: "-2.39979"; }
ListElement{ radius: "95"; angle: "75"; value: "-1.08813"; }
ListElement{ radius: "95"; angle: "80"; value: "-0.144029"; }
ListElement{ radius: "95"; angle: "85"; value: "0.425318"; }
ListElement{ radius: "95"; angle: "90"; value: "0.615583"; }
ListElement{ radius: "95"; angle: "95"; value: "0.425318"; }
ListElement{ radius: "95"; angle: "100"; value: "-0.144029"; }
ListElement{ radius: "95"; angle: "105"; value: "-1.08813"; }
ListElement{ radius: "95"; angle: "110"; value: "-2.39979"; }
ListElement{ radius: "95"; angle: "115"; value: "-4.06903"; }
ListElement{ radius: "95"; angle: "120"; value: "-6.08315"; }
ListElement{ radius: "95"; angle: "125"; value: "-8.42681"; }
ListElement{ radius: "95"; angle: "130"; value: "-11.0822"; }
ListElement{ radius: "95"; angle: "135"; value: "-14.0291"; }
ListElement{ radius: "95"; angle: "140"; value: "-17.245"; }
ListElement{ radius: "95"; angle: "145"; value: "-20.7056"; }
ListElement{ radius: "95"; angle: "150"; value: "-24.3844"; }
ListElement{ radius: "95"; angle: "155"; value: "-28.2535"; }
ListElement{ radius: "95"; angle: "160"; value: "-32.2834"; }
ListElement{ radius: "95"; angle: "165"; value: "-36.4435"; }
ListElement{ radius: "95"; angle: "170"; value: "-40.702"; }
ListElement{ radius: "95"; angle: "175"; value: "-45.0266"; }
ListElement{ radius: "95"; angle: "180"; value: "-49.3844"; }
ListElement{ radius: "95"; angle: "185"; value: "-53.7422"; }
ListElement{ radius: "95"; angle: "190"; value: "-58.0668"; }
ListElement{ radius: "95"; angle: "195"; value: "-62.3254"; }
ListElement{ radius: "95"; angle: "200"; value: "-66.4854"; }
ListElement{ radius: "95"; angle: "205"; value: "-70.5153"; }
ListElement{ radius: "95"; angle: "210"; value: "-74.3844"; }
ListElement{ radius: "95"; angle: "215"; value: "-78.0632"; }
ListElement{ radius: "95"; angle: "220"; value: "-81.5238"; }
ListElement{ radius: "95"; angle: "225"; value: "-84.7398"; }
ListElement{ radius: "95"; angle: "230"; value: "-87.6866"; }
ListElement{ radius: "95"; angle: "235"; value: "-90.342"; }
ListElement{ radius: "95"; angle: "240"; value: "-92.6857"; }
ListElement{ radius: "95"; angle: "245"; value: "-94.6998"; }
ListElement{ radius: "95"; angle: "250"; value: "-96.369"; }
ListElement{ radius: "95"; angle: "255"; value: "-97.6807"; }
ListElement{ radius: "95"; angle: "260"; value: "-98.6248"; }
ListElement{ radius: "95"; angle: "265"; value: "-99.1942"; }
ListElement{ radius: "95"; angle: "270"; value: "-99.3844"; }
ListElement{ radius: "95"; angle: "275"; value: "-99.1942"; }
ListElement{ radius: "95"; angle: "280"; value: "-98.6248"; }
ListElement{ radius: "95"; angle: "285"; value: "-97.6807"; }
ListElement{ radius: "95"; angle: "290"; value: "-96.369"; }
ListElement{ radius: "95"; angle: "295"; value: "-94.6998"; }
ListElement{ radius: "95"; angle: "300"; value: "-92.6857"; }
ListElement{ radius: "95"; angle: "305"; value: "-90.342"; }
ListElement{ radius: "95"; angle: "310"; value: "-87.6866"; }
ListElement{ radius: "95"; angle: "315"; value: "-84.7398"; }
ListElement{ radius: "95"; angle: "320"; value: "-81.5238"; }
ListElement{ radius: "95"; angle: "325"; value: "-78.0632"; }
ListElement{ radius: "95"; angle: "330"; value: "-74.3844"; }
ListElement{ radius: "95"; angle: "335"; value: "-70.5153"; }
ListElement{ radius: "95"; angle: "340"; value: "-66.4854"; }
ListElement{ radius: "95"; angle: "345"; value: "-62.3254"; }
ListElement{ radius: "95"; angle: "350"; value: "-58.0668"; }
ListElement{ radius: "95"; angle: "355"; value: "-53.7422"; }
ListElement{ radius: "95"; angle: "360"; value: "-49.3844"; }
ListElement{ radius: "100"; angle: "0"; value: "-50"; }
ListElement{ radius: "100"; angle: "5"; value: "-45.6422"; }
ListElement{ radius: "100"; angle: "10"; value: "-41.3176"; }
ListElement{ radius: "100"; angle: "15"; value: "-37.059"; }
ListElement{ radius: "100"; angle: "20"; value: "-32.899"; }
ListElement{ radius: "100"; angle: "25"; value: "-28.8691"; }
ListElement{ radius: "100"; angle: "30"; value: "-25"; }
ListElement{ radius: "100"; angle: "35"; value: "-21.3212"; }
ListElement{ radius: "100"; angle: "40"; value: "-17.8606"; }
ListElement{ radius: "100"; angle: "45"; value: "-14.6447"; }
ListElement{ radius: "100"; angle: "50"; value: "-11.6978"; }
ListElement{ radius: "100"; angle: "55"; value: "-9.0424"; }
ListElement{ radius: "100"; angle: "60"; value: "-6.69873"; }
ListElement{ radius: "100"; angle: "65"; value: "-4.68461"; }
ListElement{ radius: "100"; angle: "70"; value: "-3.01537"; }
ListElement{ radius: "100"; angle: "75"; value: "-1.70371"; }
ListElement{ radius: "100"; angle: "80"; value: "-0.759612"; }
ListElement{ radius: "100"; angle: "85"; value: "-0.190265"; }
ListElement{ radius: "100"; angle: "90"; value: "0"; }
ListElement{ radius: "100"; angle: "95"; value: "-0.190265"; }
ListElement{ radius: "100"; angle: "100"; value: "-0.759612"; }
ListElement{ radius: "100"; angle: "105"; value: "-1.70371"; }
ListElement{ radius: "100"; angle: "110"; value: "-3.01537"; }
ListElement{ radius: "100"; angle: "115"; value: "-4.68461"; }
ListElement{ radius: "100"; angle: "120"; value: "-6.69873"; }
ListElement{ radius: "100"; angle: "125"; value: "-9.0424"; }
ListElement{ radius: "100"; angle: "130"; value: "-11.6978"; }
ListElement{ radius: "100"; angle: "135"; value: "-14.6447"; }
ListElement{ radius: "100"; angle: "140"; value: "-17.8606"; }
ListElement{ radius: "100"; angle: "145"; value: "-21.3212"; }
ListElement{ radius: "100"; angle: "150"; value: "-25"; }
ListElement{ radius: "100"; angle: "155"; value: "-28.8691"; }
ListElement{ radius: "100"; angle: "160"; value: "-32.899"; }
ListElement{ radius: "100"; angle: "165"; value: "-37.059"; }
ListElement{ radius: "100"; angle: "170"; value: "-41.3176"; }
ListElement{ radius: "100"; angle: "175"; value: "-45.6422"; }
ListElement{ radius: "100"; angle: "180"; value: "-50"; }
ListElement{ radius: "100"; angle: "185"; value: "-54.3578"; }
ListElement{ radius: "100"; angle: "190"; value: "-58.6824"; }
ListElement{ radius: "100"; angle: "195"; value: "-62.941"; }
ListElement{ radius: "100"; angle: "200"; value: "-67.101"; }
ListElement{ radius: "100"; angle: "205"; value: "-71.1309"; }
ListElement{ radius: "100"; angle: "210"; value: "-75"; }
ListElement{ radius: "100"; angle: "215"; value: "-78.6788"; }
ListElement{ radius: "100"; angle: "220"; value: "-82.1394"; }
ListElement{ radius: "100"; angle: "225"; value: "-85.3553"; }
ListElement{ radius: "100"; angle: "230"; value: "-88.3022"; }
ListElement{ radius: "100"; angle: "235"; value: "-90.9576"; }
ListElement{ radius: "100"; angle: "240"; value: "-93.3013"; }
ListElement{ radius: "100"; angle: "245"; value: "-95.3154"; }
ListElement{ radius: "100"; angle: "250"; value: "-96.9846"; }
ListElement{ radius: "100"; angle: "255"; value: "-98.2963"; }
ListElement{ radius: "100"; angle: "260"; value: "-99.2404"; }
ListElement{ radius: "100"; angle: "265"; value: "-99.8097"; }
ListElement{ radius: "100"; angle: "270"; value: "-100"; }
ListElement{ radius: "100"; angle: "275"; value: "-99.8097"; }
ListElement{ radius: "100"; angle: "280"; value: "-99.2404"; }
ListElement{ radius: "100"; angle: "285"; value: "-98.2963"; }
ListElement{ radius: "100"; angle: "290"; value: "-96.9846"; }
ListElement{ radius: "100"; angle: "295"; value: "-95.3154"; }
ListElement{ radius: "100"; angle: "300"; value: "-93.3013"; }
ListElement{ radius: "100"; angle: "305"; value: "-90.9576"; }
ListElement{ radius: "100"; angle: "310"; value: "-88.3022"; }
ListElement{ radius: "100"; angle: "315"; value: "-85.3553"; }
ListElement{ radius: "100"; angle: "320"; value: "-82.1394"; }
ListElement{ radius: "100"; angle: "325"; value: "-78.6788"; }
ListElement{ radius: "100"; angle: "330"; value: "-75"; }
ListElement{ radius: "100"; angle: "335"; value: "-71.1309"; }
ListElement{ radius: "100"; angle: "340"; value: "-67.101"; }
ListElement{ radius: "100"; angle: "345"; value: "-62.941"; }
ListElement{ radius: "100"; angle: "350"; value: "-58.6824"; }
ListElement{ radius: "100"; angle: "355"; value: "-54.3578"; }
ListElement{ radius: "100"; angle: "360"; value: "-50"; }
}
}
// Copyright (C) 2023 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
import QtQuick
import QtQuick.Controls
import QtDataVisualization
Rectangle {
id: heightMapView
color: surfacePlot.theme.windowColor
required property bool portraitMode
property real buttonWidth: heightMapView.portraitMode ? (heightMapView.width - 35) / 2
: (heightMapView.width - 40) / 3
Item {
id: surfaceView
anchors.top: buttons.bottom
anchors.bottom: heightMapView.bottom
anchors.left: heightMapView.left
anchors.right: heightMapView.right
//! [1]
ColorGradient {
id: surfaceGradient
ColorGradientStop { position: 0.0; color: "darkgreen"}
ColorGradientStop { position: 0.15; color: "darkslategray" }
ColorGradientStop { position: 0.7; color: "peru" }
ColorGradientStop { position: 1.0; color: "white" }
}
//! [1]
Surface3D {
id: surfacePlot
width: surfaceView.width
height: surfaceView.height
aspectRatio: 3.0
//! [2]
theme: Theme3D {
type: Theme3D.ThemeStoneMoss
font.family: "STCaiyun"
font.pointSize: 35
colorStyle: Theme3D.ColorStyleRangeGradient
baseGradients: [surfaceGradient] // Use the custom gradient
}
//! [2]
shadowQuality: AbstractGraph3D.ShadowQualityMedium
selectionMode: AbstractGraph3D.SelectionSlice | AbstractGraph3D.SelectionItemAndRow
scene.activeCamera.cameraPreset: Camera3D.CameraPresetIsometricLeft
axisX.segmentCount: 3
axisX.subSegmentCount: 3
axisX.labelFormat: "%i"
axisZ.segmentCount: 3
axisZ.subSegmentCount: 3
axisZ.labelFormat: "%i"
axisY.segmentCount: 2
axisY.subSegmentCount: 2
axisY.labelFormat: "%i"
axisY.title: "Height (m)"
axisX.title: "Longitude 175.x\"E"
axisZ.title: "Latitude -39.x\"N"
axisY.titleVisible: true
axisX.titleVisible: true
axisZ.titleVisible: true
//! [0]
Surface3DSeries {
id: heightSeries
flatShadingEnabled: false
drawMode: Surface3DSeries.DrawSurface
HeightMapSurfaceDataProxy {
heightMapFile: ":/qml/qmlsurfacegallery/heightmap.png"
// We don't want the default data values set by heightmap proxy, but use
// actual coordinate and height values instead
autoScaleY: true
minYValue: 740
maxYValue: 2787
minZValue: -374 // ~ -39.374411"N
maxZValue: -116 // ~ -39.115971"N
minXValue: 472 // ~ 175.471767"E
maxXValue: 781 // ~ 175.780758"E
}
onDrawModeChanged: heightMapView.checkState()
}
//! [0]
}
}
Item {
id: buttons
anchors.top: parent.top
anchors.left: parent.left
anchors.right: parent.right
anchors.margins: 10
height: heightMapView.portraitMode ? surfaceGridToggle.implicitHeight * 3 + 20
: surfaceGridToggle.implicitHeight * 2 + 15
opacity: 0.5
Button {
id: surfaceGridToggle
anchors.margins: 5
anchors.left: parent.left
anchors.top: parent.top
width: heightMapView.buttonWidth // Calculated elsewhere based on screen orientation
text: "Show Surface\nGrid"
//! [3]
onClicked: {
if (heightSeries.drawMode & Surface3DSeries.DrawWireframe)
heightSeries.drawMode &= ~Surface3DSeries.DrawWireframe;
else
heightSeries.drawMode |= Surface3DSeries.DrawWireframe;
}
//! [3]
}
Button {
id: surfaceGridColor
anchors.margins: 5
anchors.left: surfaceGridToggle.right
anchors.top: parent.top
width: heightMapView.buttonWidth
text: "Red surface\ngrid color"
//! [4]
onClicked: {
if (Qt.colorEqual(heightSeries.wireframeColor, "#000000")) {
heightSeries.wireframeColor = "red";
text = "Black surface\ngrid color";
} else {
heightSeries.wireframeColor = "black";
text = "Red surface\ngrid color";
}
}
//! [4]
}
Button {
id: surfaceToggle
anchors.margins: 5
anchors.left: heightMapView.portraitMode ? parent.left : surfaceGridColor.right
anchors.top: heightMapView.portraitMode ? surfaceGridColor.bottom : parent.top
width: heightMapView.buttonWidth
text: "Hide\nSurface"
//! [5]
onClicked: {
if (heightSeries.drawMode & Surface3DSeries.DrawSurface)
heightSeries.drawMode &= ~Surface3DSeries.DrawSurface;
else
heightSeries.drawMode |= Surface3DSeries.DrawSurface;
}
//! [5]
}
Button {
id: flatShadingToggle
anchors.margins: 5
anchors.left: heightMapView.portraitMode ? surfaceToggle.right : parent.left
anchors.top: heightMapView.portraitMode ? surfaceGridColor.bottom : surfaceToggle.bottom
width: heightMapView.buttonWidth
text: heightSeries.flatShadingSupported ? "Show\nFlat" : "Flat not\nsupported"
enabled: heightSeries.flatShadingSupported
//! [6]
onClicked: {
if (heightSeries.flatShadingEnabled) {
heightSeries.flatShadingEnabled = false;
text = "Show\nFlat"
} else {
heightSeries.flatShadingEnabled = true;
text = "Show\nSmooth"
}
}
//! [6]
}
Button {
id: backgroundToggle
anchors.margins: 5
anchors.left: heightMapView.portraitMode ? parent.left : flatShadingToggle.right
anchors.top: heightMapView.portraitMode ? flatShadingToggle.bottom
: surfaceToggle.bottom
width: heightMapView.buttonWidth
text: "Hide\nBackground"
onClicked: {
if (surfacePlot.theme.backgroundEnabled) {
surfacePlot.theme.backgroundEnabled = false;
text = "Show\nBackground";
} else {
surfacePlot.theme.backgroundEnabled = true;
text = "Hide\nBackground";
}
}
}
Button {
id: gridToggle
anchors.margins: 5
anchors.left: backgroundToggle.right
anchors.top: heightMapView.portraitMode ? flatShadingToggle.bottom
: surfaceToggle.bottom
width: heightMapView.buttonWidth
text: "Hide\nGrid"
onClicked: {
if (surfacePlot.theme.gridEnabled) {
surfacePlot.theme.gridEnabled = false;
text = "Show\nGrid";
} else {
surfacePlot.theme.gridEnabled = true;
text = "Hide\nGrid";
}
}
}
}
function checkState() {
if (heightSeries.drawMode & Surface3DSeries.DrawSurface)
surfaceToggle.text = "Hide\nSurface";
else
surfaceToggle.text = "Show\nSurface";
if (heightSeries.drawMode & Surface3DSeries.DrawWireframe)
surfaceGridToggle.text = "Hide Surface\nGrid";
else
surfaceGridToggle.text = "Show Surface\nGrid";
}
}
// Copyright (C) 2023 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
import QtQuick
import QtQuick.Controls
import QtDataVisualization
//! [0]
import SurfaceGallery
//! [0]
Item {
id: oscilloscopeView
property int sampleColumns: sampleSlider.value
property int sampleRows: sampleColumns / 2
property int sampleCache: 24
required property bool portraitMode
property real controlWidth: oscilloscopeView.portraitMode ? oscilloscopeView.width - 10
: oscilloscopeView.width / 4 - 6.66
property real buttonWidth: oscilloscopeView.portraitMode ? oscilloscopeView.width - 10
: oscilloscopeView.width / 3 - 7.5
onSampleRowsChanged: {
surfaceSeries.selectedPoint = surfaceSeries.invalidSelectionPosition
generateData()
}
//![1]
DataSource {
id: dataSource
}
//![1]
Item {
id: dataView
anchors.bottom: parent.bottom
width: parent.width
height: parent.height - controlArea.height
//! [2]
Surface3D {
id: surfaceGraph
anchors.fill: parent
Surface3DSeries {
id: surfaceSeries
drawMode: Surface3DSeries.DrawSurfaceAndWireframe
itemLabelFormat: "@xLabel, @zLabel: @yLabel"
//! [2]
//! [3]
itemLabelVisible: false
//! [3]
//! [4]
onItemLabelChanged: {
if (surfaceSeries.selectedPoint == surfaceSeries.invalidSelectionPosition)
selectionText.text = "No selection";
else
selectionText.text = surfaceSeries.itemLabel;
}
//! [4]
}
shadowQuality: AbstractGraph3D.ShadowQualityNone
selectionMode: AbstractGraph3D.SelectionSlice | AbstractGraph3D.SelectionItemAndColumn
theme: Theme3D {
type: Theme3D.ThemeIsabelle
backgroundEnabled: false
}
scene.activeCamera.cameraPreset: Camera3D.CameraPresetFrontHigh
axisX.labelFormat: "%d ms"
axisY.labelFormat: "%d W"
axisZ.labelFormat: "%d mV"
axisX.min: 0
axisY.min: 0
axisZ.min: 0
axisX.max: 1000
axisY.max: 100
axisZ.max: 800
axisX.segmentCount: 4
axisY.segmentCount: 4
axisZ.segmentCount: 4
measureFps: true
renderingMode: AbstractGraph3D.RenderDirectToBackground
onCurrentFpsChanged: (fps)=> {
if (fps > 10)
fpsText.text = "FPS: " + Math.round(surfaceGraph.currentFps);
else
fpsText.text = "FPS: " + Math.round(surfaceGraph.currentFps * 10.0) / 10.0;
}
//! [5]
Component.onCompleted: oscilloscopeView.generateData();
//! [5]
}
}
//! [7]
Timer {
id: refreshTimer
interval: 1000 / frequencySlider.value
running: true
repeat: true
onTriggered: dataSource.update(surfaceSeries);
}
//! [7]
Rectangle {
id: controlArea
height: oscilloscopeView.portraitMode ? flatShadingToggle.implicitHeight * 7
: flatShadingToggle.implicitHeight * 2
anchors.left: parent.left
anchors.top: parent.top
anchors.right: parent.right
color: surfaceGraph.theme.backgroundColor
// Samples
Rectangle {
id: samples
width: oscilloscopeView.controlWidth
height: flatShadingToggle.implicitHeight
anchors.left: parent.left
anchors.top: parent.top
anchors.margins: 5
color: surfaceGraph.theme.windowColor
border.color: surfaceGraph.theme.gridLineColor
border.width: 1
radius: 4
Row {
anchors.centerIn: parent
spacing: 10
padding: 5
Slider {
id: sampleSlider
from: oscilloscopeView.sampleCache * 2
to: from * 10
stepSize: oscilloscopeView.sampleCache
background: Rectangle {
x: sampleSlider.leftPadding
y: sampleSlider.topPadding + sampleSlider.availableHeight / 2
- height / 2
implicitWidth: 200
implicitHeight: 4
width: sampleSlider.availableWidth
height: implicitHeight
radius: 2
color: surfaceGraph.theme.gridLineColor
Rectangle {
width: sampleSlider.visualPosition * parent.width
height: parent.height
color: surfaceGraph.theme.labelTextColor
radius: 2
}
}
handle: Rectangle {
x: sampleSlider.leftPadding + sampleSlider.visualPosition
* (sampleSlider.availableWidth - width)
y: sampleSlider.topPadding + sampleSlider.availableHeight / 2
- height / 2
implicitWidth: 20
implicitHeight: 20
radius: 10
color: sampleSlider.pressed ? surfaceGraph.theme.gridLineColor
: surfaceGraph.theme.windowColor
border.color: sampleSlider.pressed ? surfaceGraph.theme.labelTextColor
: surfaceGraph.theme.gridLineColor
}
Component.onCompleted: value = from;
}
Text {
id: samplesText
text: "Samples: " + (oscilloscopeView.sampleRows * oscilloscopeView.sampleColumns)
verticalAlignment: Text.AlignVCenter
horizontalAlignment: Text.AlignHCenter
color: surfaceGraph.theme.labelTextColor
}
}
}
// Frequency
Rectangle {
id: frequency
width: oscilloscopeView.controlWidth
height: flatShadingToggle.implicitHeight
anchors.left: oscilloscopeView.portraitMode ? parent.left : samples.right
anchors.top: oscilloscopeView.portraitMode ? samples.bottom : parent.top
anchors.margins: 5
color: surfaceGraph.theme.windowColor
border.color: surfaceGraph.theme.gridLineColor
border.width: 1
radius: 4
Row {
anchors.centerIn: parent
spacing: 10
padding: 5
Slider {
id: frequencySlider
from: 2
to: 60
stepSize: 2
value: 30
background: Rectangle {
x: frequencySlider.leftPadding
y: frequencySlider.topPadding + frequencySlider.availableHeight / 2
- height / 2
implicitWidth: 200
implicitHeight: 4
width: frequencySlider.availableWidth
height: implicitHeight
radius: 2
color: surfaceGraph.theme.gridLineColor
Rectangle {
width: frequencySlider.visualPosition * parent.width
height: parent.height
color: surfaceGraph.theme.labelTextColor
radius: 2
}
}
handle: Rectangle {
x: frequencySlider.leftPadding + frequencySlider.visualPosition
* (frequencySlider.availableWidth - width)
y: frequencySlider.topPadding + frequencySlider.availableHeight / 2
- height / 2
implicitWidth: 20
implicitHeight: 20
radius: 10
color: frequencySlider.pressed ? surfaceGraph.theme.gridLineColor
: surfaceGraph.theme.windowColor
border.color: frequencySlider.pressed ? surfaceGraph.theme.labelTextColor
: surfaceGraph.theme.gridLineColor
}
}
Text {
id: frequencyText
text: "Freq: " + frequencySlider.value + " Hz"
verticalAlignment: Text.AlignVCenter
horizontalAlignment: Text.AlignHCenter
color: surfaceGraph.theme.labelTextColor
}
}
}
// FPS
Rectangle {
id: fpsindicator
width: oscilloscopeView.controlWidth
height: flatShadingToggle.implicitHeight
anchors.left: oscilloscopeView.portraitMode ? parent.left : frequency.right
anchors.top: oscilloscopeView.portraitMode ? frequency.bottom : parent.top
anchors.margins: 5
color: surfaceGraph.theme.windowColor
border.color: surfaceGraph.theme.gridLineColor
border.width: 1
radius: 4
Text {
id: fpsText
anchors.fill: parent
verticalAlignment: Text.AlignVCenter
horizontalAlignment: Text.AlignHCenter
color: surfaceGraph.theme.labelTextColor
}
}
// Selection
Rectangle {
id: selection
width: oscilloscopeView.controlWidth
height: flatShadingToggle.implicitHeight
anchors.left: oscilloscopeView.portraitMode ? parent.left : fpsindicator.right
anchors.top: oscilloscopeView.portraitMode ? fpsindicator.bottom : parent.top
anchors.margins: 5
color: surfaceGraph.theme.windowColor
border.color: surfaceGraph.theme.gridLineColor
border.width: 1
radius: 4
Text {
id: selectionText
anchors.fill: parent
verticalAlignment: Text.AlignVCenter
horizontalAlignment: Text.AlignHCenter
text: "No selection"
color: surfaceGraph.theme.labelTextColor
}
}
// Flat shading
Button {
id: flatShadingToggle
width: oscilloscopeView.buttonWidth
anchors.left: parent.left
anchors.top: selection.bottom
anchors.margins: 5
text: surfaceSeries.flatShadingSupported ? "Show\nSmooth" : "Flat\nnot supported"
enabled: surfaceSeries.flatShadingSupported
onClicked: {
if (surfaceSeries.flatShadingEnabled) {
surfaceSeries.flatShadingEnabled = false;
text = "Show\nFlat"
} else {
surfaceSeries.flatShadingEnabled = true;
text = "Show\nSmooth"
}
}
contentItem: Text {
text: flatShadingToggle.text
opacity: flatShadingToggle.enabled ? 1.0 : 0.3
color: surfaceGraph.theme.labelTextColor
horizontalAlignment: Text.AlignHCenter
verticalAlignment: Text.AlignVCenter
elide: Text.ElideRight
}
background: Rectangle {
opacity: flatShadingToggle.enabled ? 1 : 0.3
color: flatShadingToggle.down ? surfaceGraph.theme.gridLineColor
: surfaceGraph.theme.windowColor
border.color: flatShadingToggle.down ? surfaceGraph.theme.labelTextColor
: surfaceGraph.theme.gridLineColor
border.width: 1
radius: 2
}
}
// Surface grid
Button {
id: surfaceGridToggle
width: oscilloscopeView.buttonWidth
anchors.left: oscilloscopeView.portraitMode ? parent.left : flatShadingToggle.right
anchors.top: oscilloscopeView.portraitMode ? flatShadingToggle.bottom : selection.bottom
anchors.margins: 5
text: "Hide\nSurface Grid"
onClicked: {
if (surfaceSeries.drawMode & Surface3DSeries.DrawWireframe) {
surfaceSeries.drawMode &= ~Surface3DSeries.DrawWireframe;
text = "Show\nSurface Grid";
} else {
surfaceSeries.drawMode |= Surface3DSeries.DrawWireframe;
text = "Hid\nSurface Grid";
}
}
contentItem: Text {
text: surfaceGridToggle.text
color: surfaceGraph.theme.labelTextColor
horizontalAlignment: Text.AlignHCenter
verticalAlignment: Text.AlignVCenter
elide: Text.ElideRight
}
background: Rectangle {
color: surfaceGridToggle.down ? surfaceGraph.theme.gridLineColor
: surfaceGraph.theme.windowColor
border.color: surfaceGridToggle.down ? surfaceGraph.theme.labelTextColor
: surfaceGraph.theme.gridLineColor
border.width: 1
radius: 2
}
}
// Exit
Button {
id: exitButton
width: oscilloscopeView.buttonWidth
height: surfaceGridToggle.height
anchors.left: oscilloscopeView.portraitMode ? parent.left : surfaceGridToggle.right
anchors.top: oscilloscopeView.portraitMode ? surfaceGridToggle.bottom : selection.bottom
anchors.margins: 5
text: "Quit"
onClicked: Qt.quit();
contentItem: Text {
text: exitButton.text
color: surfaceGraph.theme.labelTextColor
horizontalAlignment: Text.AlignHCenter
verticalAlignment: Text.AlignVCenter
elide: Text.ElideRight
}
background: Rectangle {
color: exitButton.down ? surfaceGraph.theme.gridLineColor
: surfaceGraph.theme.windowColor
border.color: exitButton.down ? surfaceGraph.theme.labelTextColor
: surfaceGraph.theme.gridLineColor
border.width: 1
radius: 2
}
}
}
//! [6]
function generateData() {
dataSource.generateData(oscilloscopeView.sampleCache, oscilloscopeView.sampleRows,
oscilloscopeView.sampleColumns,
surfaceGraph.axisX.min, surfaceGraph.axisX.max,
surfaceGraph.axisY.min, surfaceGraph.axisY.max,
surfaceGraph.axisZ.min, surfaceGraph.axisZ.max);
}
//! [6]
}
// Copyright (C) 2023 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
import QtQuick
import QtQuick.Controls
import QtDataVisualization
Rectangle {
id: spectrogramView
color: surfaceGraph.theme.windowColor
required property bool portraitMode
property real buttonWidth: spectrogramView.portraitMode ? (spectrogramView.width - 35) / 2
: (spectrogramView.width - 50) / 5
SpectrogramData {
id: surfaceData
}
Item {
id: surfaceView
anchors.top: buttons.bottom
anchors.left: parent.left
anchors.right: legend.left
anchors.bottom: parent.bottom
ColorGradient {
id: surfaceGradient
ColorGradientStop { position: 0.0; color: "black" }
ColorGradientStop { position: 0.2; color: "red" }
ColorGradientStop { position: 0.5; color: "blue" }
ColorGradientStop { position: 0.8; color: "yellow" }
ColorGradientStop { position: 1.0; color: "white" }
}
ValueAxis3D {
id: xAxis
segmentCount: 8
labelFormat: "%i\u00B0"
title: "Angle"
titleVisible: true
titleFixed: false
}
ValueAxis3D {
id: yAxis
segmentCount: 8
labelFormat: "%i \%"
title: "Value"
titleVisible: true
labelAutoRotation: 0
titleFixed: false
}
ValueAxis3D {
id: zAxis
segmentCount: 5
labelFormat: "%i nm"
title: "Radius"
titleVisible: true
titleFixed: false
}
Theme3D {
id: customTheme
type: Theme3D.ThemeQt
// Don't show specular spotlight as we don't want it to distort the colors
lightStrength: 0.0
ambientLightStrength: 1.0
backgroundEnabled: false
gridLineColor: "#AAAAAA"
windowColor: "#EEEEEE"
}
//! [0]
Surface3D {
id: surfaceGraph
anchors.fill: parent
Surface3DSeries {
id: surfaceSeries
flatShadingEnabled: false
drawMode: Surface3DSeries.DrawSurface
baseGradient: surfaceGradient
colorStyle: Theme3D.ColorStyleRangeGradient
itemLabelFormat: "(@xLabel, @zLabel): @yLabel"
ItemModelSurfaceDataProxy {
itemModel: surfaceData.model
rowRole: "radius"
columnRole: "angle"
yPosRole: "value"
}
}
//! [0]
//! [1]
// Remove the perspective and view the graph from top down to achieve 2D effect
orthoProjection: true
scene.activeCamera.cameraPreset: Camera3D.CameraPresetDirectlyAbove
//! [1]
//! [2]
flipHorizontalGrid: true
//! [2]
//! [4]
radialLabelOffset: 0.01
//! [4]
//! [5]
inputHandler: TouchInputHandler3D {
rotationEnabled: !surfaceGraph.orthoProjection
}
//! [5]
theme: customTheme
shadowQuality: AbstractGraph3D.ShadowQualityNone
selectionMode: AbstractGraph3D.SelectionSlice | AbstractGraph3D.SelectionItemAndColumn
axisX: xAxis
axisY: yAxis
axisZ: zAxis
aspectRatio: 1.0
horizontalAspectRatio: 1.0
scene.activeCamera.zoomLevel: 140
}
}
Item {
id: buttons
anchors.top: parent.top
anchors.left: parent.left
anchors.right: parent.right
height: spectrogramView.portraitMode ? (polarToggle.height + 10) * 3
: polarToggle.height + 30
anchors.margins: 10
//! [3]
Button {
id: polarToggle
anchors.margins: 5
anchors.left: parent.left
anchors.top: parent.top
width: spectrogramView.buttonWidth // Calculated elsewhere based on screen orientation
text: "Switch to\n" + (surfaceGraph.polar ? "cartesian" : "polar")
onClicked: surfaceGraph.polar = !surfaceGraph.polar;
}
//! [3]
Button {
id: orthoToggle
anchors.margins: 5
anchors.left: polarToggle.right
anchors.top: parent.top
width: spectrogramView.buttonWidth
text: "Switch to\n" + (surfaceGraph.orthoProjection ? "perspective" : "orthographic")
onClicked: {
if (surfaceGraph.orthoProjection) {
surfaceGraph.orthoProjection = false;
xAxis.labelAutoRotation = 30;
yAxis.labelAutoRotation = 30;
zAxis.labelAutoRotation = 30;
} else {
surfaceGraph.orthoProjection = true;
surfaceGraph.scene.activeCamera.cameraPreset
= Camera3D.CameraPresetDirectlyAbove;
surfaceSeries.drawMode &= ~Surface3DSeries.DrawWireframe;
xAxis.labelAutoRotation = 0;
yAxis.labelAutoRotation = 0;
zAxis.labelAutoRotation = 0;
}
}
}
Button {
id: flipGridToggle
anchors.margins: 5
anchors.left: spectrogramView.portraitMode ? parent.left : orthoToggle.right
anchors.top: spectrogramView.portraitMode ? orthoToggle.bottom : parent.top
width: spectrogramView.buttonWidth
text: "Toggle axis\ngrid on top"
onClicked: surfaceGraph.flipHorizontalGrid = !surfaceGraph.flipHorizontalGrid;
}
Button {
id: labelOffsetToggle
anchors.margins: 5
anchors.left: flipGridToggle.right
anchors.top: spectrogramView.portraitMode ? orthoToggle.bottom : parent.top
width: spectrogramView.buttonWidth
text: "Toggle radial\nlabel position"
visible: surfaceGraph.polar
onClicked: {
if (surfaceGraph.radialLabelOffset >= 1.0)
surfaceGraph.radialLabelOffset = 0.01;
else
surfaceGraph.radialLabelOffset = 1.0;
}
}
Button {
id: surfaceGridToggle
anchors.margins: 5
anchors.left: spectrogramView.portraitMode ? (labelOffsetToggle.visible ? parent.left
: flipGridToggle.right)
: (labelOffsetToggle.visible ? labelOffsetToggle.right
: flipGridToggle.right)
anchors.top: spectrogramView.portraitMode ? (labelOffsetToggle.visible ? labelOffsetToggle.bottom
: orthoToggle.bottom)
: parent.top
width: spectrogramView.buttonWidth
text: "Toggle\nsurface grid"
visible: !surfaceGraph.orthoProjection
onClicked: {
if (surfaceSeries.drawMode & Surface3DSeries.DrawWireframe)
surfaceSeries.drawMode &= ~Surface3DSeries.DrawWireframe;
else
surfaceSeries.drawMode |= Surface3DSeries.DrawWireframe;
}
}
}
Item {
id: legend
anchors.bottom: parent.bottom
anchors.top: buttons.bottom
anchors.right: parent.right
width: spectrogramView.portraitMode ? 100 : 125
Rectangle {
id: gradient
anchors.margins: 20
anchors.bottom: legend.bottom
anchors.top: legend.top
anchors.right: legend.right
border.color: "black"
border.width: 1
width: spectrogramView.portraitMode ? 25 : 50
rotation: 180
gradient: Gradient {
GradientStop { position: 0.0; color: "black" }
GradientStop { position: 0.2; color: "red" }
GradientStop { position: 0.5; color: "blue" }
GradientStop { position: 0.8; color: "yellow" }
GradientStop { position: 1.0; color: "white" }
}
}
Text {
anchors.verticalCenter: gradient.bottom
anchors.right: gradient.left
anchors.margins: 2
text: surfaceGraph.axisY.min + "%"
}
Text {
anchors.verticalCenter: gradient.verticalCenter
anchors.right: gradient.left
anchors.margins: 2
text: (surfaceGraph.axisY.max + surfaceGraph.axisY.min) / 2 + "%"
}
Text {
anchors.verticalCenter: gradient.top
anchors.right: gradient.left
anchors.margins: 2
text: surfaceGraph.axisY.max + "%"
}
}
}
// Copyright (C) 2023 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
import QtQuick
import QtQuick.Controls
import QtQuick.Layouts
Item {
id: mainView
width: 1280
height: 1024
visible: true
property bool portraitMode: width < height
TabBar {
id: tabBar
width: parent.width
TabButton {
text: "Height Map"
}
TabButton {
text: "Spectrogram"
}
TabButton {
text: "Oscilloscope"
}
}
StackLayout {
anchors.top: tabBar.bottom
anchors.bottom: parent.bottom
width: parent.width
currentIndex: tabBar.currentIndex
SurfaceHeightMap {
Layout.fillHeight: true
Layout.fillWidth: true
portraitMode: mainView.portraitMode
}
SurfaceSpectrogram {
Layout.fillHeight: true
Layout.fillWidth: true
portraitMode: mainView.portraitMode
}
SurfaceOscilloscope {
Layout.fillHeight: true
Layout.fillWidth: true
portraitMode: mainView.portraitMode
}
}
}