summaryrefslogtreecommitdiffstats
path: root/tests/manual/planets-qml/planets.js
blob: 661f836eabaa058e73c92064e01ccf4275862c49 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
// Copyright (C) 2016 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only

.pragma library

var SUN = 0;
var MERCURY = 1;
var VENUS = 2;
var EARTH = 3;
var MARS = 4;
var JUPITER = 5;
var SATURN = 6;
var URANUS = 7;
var NEPTUNE = 8;
var NUM_SELECTABLE_PLANETS = 9;
var MOON = 9;
var SOLAR_SYSTEM = 100;

function planetId(planetName) {
    switch (planetName) {
    case "Sun":
        return SUN
    case "Mercury":
        return MERCURY
    case "Venus":
        return VENUS
    case "Earth":
        return EARTH
    case "Mars":
        return MARS
    case "Jupiter":
        return JUPITER
    case "Saturn":
        return SATURN
    case "Uranus":
        return URANUS
    case "Neptune":
        return NEPTUNE
    case "Solar System":
        return SOLAR_SYSTEM
    }
}

function planetIndex(planetName) {
    switch (planetName) {
    case "Sun":
        return 0
    case "Mercury":
        return 1
    case "Venus":
        return 2
    case "Earth":
        return 3
    case "Mars":
        return 4
    case "Jupiter":
        return 5
    case "Saturn":
        return 6
    case "Uranus":
        return 7
    case "Neptune":
        return 8
    case "Solar System":
        return 9
    }
}

var planets = []; // Planet data info

// Units are in 10^3 KM

var solarDistance = 2600.000;
var saturnOuterRadius = 0.120700;
var uranusOuterRadius = 0.040;

var auScale = 149.597870700; // 0.001 AU (in thousands of kilometers)

function loadPlanetData() {

    // Planet Data
    // radius - planet radius
    // tilt - planet axis angle
    // N1/2 - longitude of the ascending node
    // i1/2 - inclination to the ecliptic (plane of the Earth's orbit)
    // w1/2 - argument of perihelion
    // a1/2 - semi-major axis, or mean distance from Sun
    // e1/2 - eccentricity (0=circle, 0-1=ellipse, 1=parabola)
    // M1/2 - mean anomaly (0 at perihelion; increases uniformly with time)
    // period - sidereal rotation period
    // centerOfOrbit - the planet in the center of the orbit
    // (orbital elements based on http://www.stjarnhimlen.se/comp/ppcomp.html)

    var sun = { radius: 0.694439, tilt: 63.87, period: 25.05, x: 0, y: 0, z: 0,
        roll: 0 };
    planets.push(sun);
    var mercury = {
        radius: 0.002433722, tilt: 0.04, N1: 48.3313, N2: 0.0000324587,
        i1: 7.0047, i2: 0.0000000500, w1: 29.1241, w2: 0.0000101444,
        a1: 0.387098, a2: 0, e1: 0.205635, e2: 0.000000000559,
        M1: 168.6562, M2: 4.0923344368, period: 58.646, x: 0, y: 0, z: 0,
        roll: 0, centerOfOrbit: SUN
    };
    planets.push(mercury);
    var venus = {
        radius: 0.006046079, tilt: 177.36, N1: 76.6799, N2: 0.0000246590,
        i1: 3.3946, i2: 0.0000000275, w1: 54.8910, w2: 0.0000138374,
        a1: 0.723330, a2: 0, e1: 0.006773, e2: -0.000000001302,
        M1: 48.0052, M2: 1.6021302244, period: 243.0185, x: 0, y: 0, z: 0,
        roll: 0, centerOfOrbit: SUN
    };
    planets.push(venus);
    var earth = {
        radius: 0.006371, tilt: 25.44, N1: 174.873, N2: 0,
        i1: 0.00005, i2: 0, w1: 102.94719, w2: 0,
        a1: 1, a2: 0, e1: 0.01671022, e2: 0,
        M1: 357.529, M2: 0.985608, period: 0.997, x: 0, y: 0, z: 0,
        roll: 0, centerOfOrbit: SUN
    };
    planets.push(earth);
    var mars = {
        radius: 0.003389372, tilt: 25.19, N1: 49.5574, N2: 0.0000211081,
        i1: 1.8497, i2: -0.0000000178, w1: 286.5016, w2: 0.0000292961,
        a1: 1.523688, a2: 0, e1: 0.093405, e2: 0.000000002516,
        M1: 18.6021, M2: 0.5240207766, period: 1.025957, x: 0, y: 0, z: 0,
        roll: 0, centerOfOrbit: SUN
    };
    planets.push(mars);
    var jupiter = {
        radius: 0.07141254, tilt: 3.13, N1: 100.4542, N2: 0.0000276854,
        i1: 1.3030, i2: -0.0000001557, w1: 273.8777, w2: 0.0000164505,
        a1: 5.20256, a2: 0, e1: 0.048498, e2: 0.000000004469,
        M1: 19.8950, M2: 0.0830853001, period: 0.4135, x: 0, y: 0, z: 0,
        roll: 0, centerOfOrbit: SUN
    };
    planets.push(jupiter);
    var saturn = {
        radius: 0.06019958, tilt: 26.73, N1: 113.6634, N2: 0.0000238980,
        i1: 2.4886, i2: -0.0000001081, w1: 339.3939, w2: 0.0000297661,
        a1: 9.55475, a2: 0, e1: 0.055546, e2: -0.000000009499,
        M1: 316.9670, M2: 0.0334442282, period: 0.4395, x: 0, y: 0, z: 0,
        roll: 0, centerOfOrbit: SUN
    };
    planets.push(saturn);
    var uranus = {
        radius: 0.0255286, tilt: 97.77, N1: 74.0005, N2: 0.000013978,
        i1: 0.7733, i2: 0.000000019, w1: 96.6612, w2: 0.000030565,
        a1: 19.18171, a2: -0.0000000155, e1: 0.047318, e2: 0.00000000745,
        M1: 142.5905, M2: 0.011725806, period: 0.71833, x: 0, y: 0, z: 0,
        roll: 0, centerOfOrbit: SUN
    };
    planets.push(uranus);
    var neptune = {
        radius: 0.02473859, tilt: 28.32, N1: 131.7806, N2: 0.000030173,
        i1: 1.7700, i2: -0.000000255, w1: 272.8461, w2: 0.000006027,
        a1: 30.05826, a2: 0.00000003313, e1: 0.008606, e2: 0.00000000215,
        M1: 260.2471, M2: 0.005995147, period: 0.6713, x: 0, y: 0, z: 0,
        roll: 0, centerOfOrbit: SUN
    };
    planets.push(neptune);
    var moon = {
        radius: 0.0015424, tilt: 28.32, N1: 125.1228, N2: -0.0529538083,
        i1: 5.1454, i2: 0, w1: 318.0634, w2: 0.1643573223,
        a1: 0.273, a2: 0, e1: 0.054900, e2: 0,
        M1: 115.3654, M2: 13.0649929509, period: 27.321582, x: 0, y: 0, z: 0,
        roll: 0, centerOfOrbit: EARTH
    };
    planets.push(moon);

    return planets;
}

function getOuterRadius(planet) {
    var outerRadius = solarDistance;
    if (planet !== SOLAR_SYSTEM) {
        outerRadius = planets[planet]["radius"];
        if (planet === SATURN) {
            outerRadius =+ saturnOuterRadius;
        } else if (planet === URANUS) {
            outerRadius =+ uranusOuterRadius;
        } else if (planet === SUN) {
            outerRadius = planets[planet]["radius"] / 10;
        }
    }

    return outerRadius;
}