Wed, 16 Oct 2013 23:20:35 +0300
removed some custom functions in favor of Qt implementations
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
1 | /* |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
2 | * LDForge: LDraw parts authoring CAD |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
3 | * Copyright (C) 2013 Santeri Piippo |
455
c5d14d112034
Code formatting: use same separators everywhere, remove extra spaces from license headers, simplified message manager api a bit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
421
diff
changeset
|
4 | * |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
5 | * This program is free software: you can redistribute it and/or modify |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
6 | * it under the terms of the GNU General Public License as published by |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
7 | * the Free Software Foundation, either version 3 of the License, or |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
8 | * (at your option) any later version. |
455
c5d14d112034
Code formatting: use same separators everywhere, remove extra spaces from license headers, simplified message manager api a bit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
421
diff
changeset
|
9 | * |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
10 | * This program is distributed in the hope that it will be useful, |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
13 | * GNU General Public License for more details. |
455
c5d14d112034
Code formatting: use same separators everywhere, remove extra spaces from license headers, simplified message manager api a bit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
421
diff
changeset
|
14 | * |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
15 | * You should have received a copy of the GNU General Public License |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
16 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
17 | */ |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
18 | |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
19 | #include <math.h> |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
20 | #include <locale.h> |
455
c5d14d112034
Code formatting: use same separators everywhere, remove extra spaces from license headers, simplified message manager api a bit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
421
diff
changeset
|
21 | #include <QColor> |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
22 | #include "common.h" |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
23 | #include "misc.h" |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
24 | #include "gui.h" |
211
8d35e631bef3
Added dialog for rotation points
Santeri Piippo <crimsondusk64@gmail.com>
parents:
189
diff
changeset
|
25 | #include "dialogs.h" |
332
3013acb1df53
Converted rotation point prompt
Santeri Piippo <crimsondusk64@gmail.com>
parents:
308
diff
changeset
|
26 | #include "ui_rotpoint.h" |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
27 | |
500
cad8cdc42a64
Finally got the ringfinder working! Working on integrating it to ring drawing...
Santeri Piippo <crimsondusk64@gmail.com>
parents:
498
diff
changeset
|
28 | RingFinder g_RingFinder; |
cad8cdc42a64
Finally got the ringfinder working! Working on integrating it to ring drawing...
Santeri Piippo <crimsondusk64@gmail.com>
parents:
498
diff
changeset
|
29 | |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
30 | // Prime number table. |
498
791c831c8020
further cleansing - removed most uses of unsigned ints, removed list reversers
Santeri Piippo <crimsondusk64@gmail.com>
parents:
493
diff
changeset
|
31 | const int g_primes[NUM_PRIMES] = |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
461
diff
changeset
|
32 | { 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
461
diff
changeset
|
33 | 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
461
diff
changeset
|
34 | 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
461
diff
changeset
|
35 | 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
461
diff
changeset
|
36 | 179, 181, 191, 193, 197, 199, 211, 223, 227, 229, |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
461
diff
changeset
|
37 | 233, 239, 241, 251, 257, 263, 269, 271, 277, 281, |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
461
diff
changeset
|
38 | 283, 293, 307, 311, 313, 317, 331, 337, 347, 349, |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
461
diff
changeset
|
39 | 353, 359, 367, 373, 379, 383, 389, 397, 401, 409, |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
461
diff
changeset
|
40 | 419, 421, 431, 433, 439, 443, 449, 457, 461, 463, |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
461
diff
changeset
|
41 | 467, 479, 487, 491, 499, 503, 509, 521, 523, 541, |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
461
diff
changeset
|
42 | 547, 557, 563, 569, 571, 577, 587, 593, 599, 601, |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
461
diff
changeset
|
43 | 607, 613, 617, 619, 631, 641, 643, 647, 653, 659, |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
461
diff
changeset
|
44 | 661, 673, 677, 683, 691, 701, 709, 719, 727, 733, |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
461
diff
changeset
|
45 | 739, 743, 751, 757, 761, 769, 773, 787, 797, 809, |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
461
diff
changeset
|
46 | 811, 821, 823, 827, 829, 839, 853, 857, 859, 863, |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
461
diff
changeset
|
47 | 877, 881, 883, 887, 907, 911, 919, 929, 937, 941, |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
461
diff
changeset
|
48 | 947, 953, 967, 971, 977, 983, 991, 997, 1009, 1013, |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
461
diff
changeset
|
49 | 1019, 1021, 1031, 1033, 1039, 1049, 1051, 1061, 1063, 1069, |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
461
diff
changeset
|
50 | 1087, 1091, 1093, 1097, 1103, 1109, 1117, 1123, 1129, 1151, |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
461
diff
changeset
|
51 | 1153, 1163, 1171, 1181, 1187, 1193, 1201, 1213, 1217, 1223, |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
461
diff
changeset
|
52 | 1229, 1231, 1237, 1249, 1259, 1277, 1279, 1283, 1289, 1291, |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
461
diff
changeset
|
53 | 1297, 1301, 1303, 1307, 1319, 1321, 1327, 1361, 1367, 1373, |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
461
diff
changeset
|
54 | 1381, 1399, 1409, 1423, 1427, 1429, 1433, 1439, 1447, 1451, |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
461
diff
changeset
|
55 | 1453, 1459, 1471, 1481, 1483, 1487, 1489, 1493, 1499, 1511, |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
461
diff
changeset
|
56 | 1523, 1531, 1543, 1549, 1553, 1559, 1567, 1571, 1579, 1583, |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
461
diff
changeset
|
57 | 1597, 1601, 1607, 1609, 1613, 1619, 1621, 1627, 1637, 1657, |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
461
diff
changeset
|
58 | 1663, 1667, 1669, 1693, 1697, 1699, 1709, 1721, 1723, 1733, |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
461
diff
changeset
|
59 | 1741, 1747, 1753, 1759, 1777, 1783, 1787, 1789, 1801, 1811, |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
461
diff
changeset
|
60 | 1823, 1831, 1847, 1861, 1867, 1871, 1873, 1877, 1879, 1889, |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
461
diff
changeset
|
61 | 1901, 1907, 1913, 1931, 1933, 1949, 1951, 1973, 1979, 1987, |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
461
diff
changeset
|
62 | 1993, 1997, 1999, 2003, 2011, 2017, 2027, 2029, 2039, 2053, |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
461
diff
changeset
|
63 | 2063, 2069, 2081, 2083, 2087, 2089, 2099, 2111, 2113, 2129, |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
461
diff
changeset
|
64 | 2131, 2137, 2141, 2143, 2153, 2161, 2179, 2203, 2207, 2213, |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
461
diff
changeset
|
65 | 2221, 2237, 2239, 2243, 2251, 2267, 2269, 2273, 2281, 2287, |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
461
diff
changeset
|
66 | 2293, 2297, 2309, 2311, 2333, 2339, 2341, 2347, 2351, 2357, |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
461
diff
changeset
|
67 | 2371, 2377, 2381, 2383, 2389, 2393, 2399, 2411, 2417, 2423, |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
461
diff
changeset
|
68 | 2437, 2441, 2447, 2459, 2467, 2473, 2477, 2503, 2521, 2531, |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
461
diff
changeset
|
69 | 2539, 2543, 2549, 2551, 2557, 2579, 2591, 2593, 2609, 2617, |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
461
diff
changeset
|
70 | 2621, 2633, 2647, 2657, 2659, 2663, 2671, 2677, 2683, 2687, |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
461
diff
changeset
|
71 | 2689, 2693, 2699, 2707, 2711, 2713, 2719, 2729, 2731, 2741, |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
461
diff
changeset
|
72 | 2749, 2753, 2767, 2777, 2789, 2791, 2797, 2801, 2803, 2819, |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
461
diff
changeset
|
73 | 2833, 2837, 2843, 2851, 2857, 2861, 2879, 2887, 2897, 2903, |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
461
diff
changeset
|
74 | 2909, 2917, 2927, 2939, 2953, 2957, 2963, 2969, 2971, 2999, |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
461
diff
changeset
|
75 | 3001, 3011, 3019, 3023, 3037, 3041, 3049, 3061, 3067, 3079, |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
461
diff
changeset
|
76 | 3083, 3089, 3109, 3119, 3121, 3137, 3163, 3167, 3169, 3181, |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
461
diff
changeset
|
77 | 3187, 3191, 3203, 3209, 3217, 3221, 3229, 3251, 3253, 3257, |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
461
diff
changeset
|
78 | 3259, 3271, 3299, 3301, 3307, 3313, 3319, 3323, 3329, 3331, |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
461
diff
changeset
|
79 | 3343, 3347, 3359, 3361, 3371, 3373, 3389, 3391, 3407, 3413, |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
461
diff
changeset
|
80 | 3433, 3449, 3457, 3461, 3463, 3467, 3469, 3491, 3499, 3511, |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
461
diff
changeset
|
81 | 3517, 3527, 3529, 3533, 3539, 3541, 3547, 3557, 3559, 3571, |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
82 | }; |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
83 | |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
84 | // ============================================================================= |
455
c5d14d112034
Code formatting: use same separators everywhere, remove extra spaces from license headers, simplified message manager api a bit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
421
diff
changeset
|
85 | // ----------------------------------------------------------------------------- |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
86 | // Grid stuff |
461
fbcc91ae1dd2
- added "Go to line" action, renamed the config classes to proper camelcase
Santeri Piippo <crimsondusk64@gmail.com>
parents:
455
diff
changeset
|
87 | cfg (Int, grid, Grid::Medium); |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
88 | |
461
fbcc91ae1dd2
- added "Go to line" action, renamed the config classes to proper camelcase
Santeri Piippo <crimsondusk64@gmail.com>
parents:
455
diff
changeset
|
89 | cfg (Float, grid_coarse_x, 5.0f); |
fbcc91ae1dd2
- added "Go to line" action, renamed the config classes to proper camelcase
Santeri Piippo <crimsondusk64@gmail.com>
parents:
455
diff
changeset
|
90 | cfg (Float, grid_coarse_y, 5.0f); |
fbcc91ae1dd2
- added "Go to line" action, renamed the config classes to proper camelcase
Santeri Piippo <crimsondusk64@gmail.com>
parents:
455
diff
changeset
|
91 | cfg (Float, grid_coarse_z, 5.0f); |
fbcc91ae1dd2
- added "Go to line" action, renamed the config classes to proper camelcase
Santeri Piippo <crimsondusk64@gmail.com>
parents:
455
diff
changeset
|
92 | cfg (Float, grid_coarse_angle, 45.0f); |
fbcc91ae1dd2
- added "Go to line" action, renamed the config classes to proper camelcase
Santeri Piippo <crimsondusk64@gmail.com>
parents:
455
diff
changeset
|
93 | cfg (Float, grid_medium_x, 1.0f); |
fbcc91ae1dd2
- added "Go to line" action, renamed the config classes to proper camelcase
Santeri Piippo <crimsondusk64@gmail.com>
parents:
455
diff
changeset
|
94 | cfg (Float, grid_medium_y, 1.0f); |
fbcc91ae1dd2
- added "Go to line" action, renamed the config classes to proper camelcase
Santeri Piippo <crimsondusk64@gmail.com>
parents:
455
diff
changeset
|
95 | cfg (Float, grid_medium_z, 1.0f); |
fbcc91ae1dd2
- added "Go to line" action, renamed the config classes to proper camelcase
Santeri Piippo <crimsondusk64@gmail.com>
parents:
455
diff
changeset
|
96 | cfg (Float, grid_medium_angle, 22.5f); |
fbcc91ae1dd2
- added "Go to line" action, renamed the config classes to proper camelcase
Santeri Piippo <crimsondusk64@gmail.com>
parents:
455
diff
changeset
|
97 | cfg (Float, grid_fine_x, 0.1f); |
fbcc91ae1dd2
- added "Go to line" action, renamed the config classes to proper camelcase
Santeri Piippo <crimsondusk64@gmail.com>
parents:
455
diff
changeset
|
98 | cfg (Float, grid_fine_y, 0.1f); |
fbcc91ae1dd2
- added "Go to line" action, renamed the config classes to proper camelcase
Santeri Piippo <crimsondusk64@gmail.com>
parents:
455
diff
changeset
|
99 | cfg (Float, grid_fine_z, 0.1f); |
fbcc91ae1dd2
- added "Go to line" action, renamed the config classes to proper camelcase
Santeri Piippo <crimsondusk64@gmail.com>
parents:
455
diff
changeset
|
100 | cfg (Float, grid_fine_angle, 7.5f); |
fbcc91ae1dd2
- added "Go to line" action, renamed the config classes to proper camelcase
Santeri Piippo <crimsondusk64@gmail.com>
parents:
455
diff
changeset
|
101 | cfg (Int, edit_rotpoint, 0); |
fbcc91ae1dd2
- added "Go to line" action, renamed the config classes to proper camelcase
Santeri Piippo <crimsondusk64@gmail.com>
parents:
455
diff
changeset
|
102 | cfg (Float, edit_rotpoint_x, 0.0f); // TODO: make a VertexConfig and use it here |
fbcc91ae1dd2
- added "Go to line" action, renamed the config classes to proper camelcase
Santeri Piippo <crimsondusk64@gmail.com>
parents:
455
diff
changeset
|
103 | cfg (Float, edit_rotpoint_y, 0.0f); |
fbcc91ae1dd2
- added "Go to line" action, renamed the config classes to proper camelcase
Santeri Piippo <crimsondusk64@gmail.com>
parents:
455
diff
changeset
|
104 | cfg (Float, edit_rotpoint_z, 0.0f); |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
105 | |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
461
diff
changeset
|
106 | const gridinfo g_GridInfo[3] = |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
461
diff
changeset
|
107 | { { "Coarse", { &grid_coarse_x, &grid_coarse_y, &grid_coarse_z, &grid_coarse_angle }}, |
382
c1642530ea35
Converted ForgeWindow to Designer UI(!)
Santeri Piippo <crimsondusk64@gmail.com>
parents:
381
diff
changeset
|
108 | { "Medium", { &grid_medium_x, &grid_medium_y, &grid_medium_z, &grid_medium_angle }}, |
c1642530ea35
Converted ForgeWindow to Designer UI(!)
Santeri Piippo <crimsondusk64@gmail.com>
parents:
381
diff
changeset
|
109 | { "Fine", { &grid_fine_x, &grid_fine_y, &grid_fine_z, &grid_fine_angle }} |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
110 | }; |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
111 | |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
112 | // ============================================================================= |
185
6fea53f1ffc2
Speed up picking - no need to rebuild the object list as its contents do not change while picking. Fixed transparent stuff always being opaque (although it still appears messed up for some reason)
Santeri Piippo <crimsondusk64@gmail.com>
parents:
183
diff
changeset
|
113 | // Snap the given coordinate value on the current grid's given axis. |
455
c5d14d112034
Code formatting: use same separators everywhere, remove extra spaces from license headers, simplified message manager api a bit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
421
diff
changeset
|
114 | // ----------------------------------------------------------------------------- |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
461
diff
changeset
|
115 | double Grid::snap (double in, const Grid::Config axis) |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
461
diff
changeset
|
116 | { const double gridval = currentGrid().confs[axis]->value; |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
117 | const long mult = abs (in / gridval); |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
118 | const bool neg = (in < 0); |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
119 | double out = mult * gridval; |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
461
diff
changeset
|
120 | |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
121 | if (abs<double> (in) - (mult * gridval) > gridval / 2) |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
122 | out += gridval; |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
461
diff
changeset
|
123 | |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
124 | if (neg && out != 0) |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
125 | out *= -1; |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
461
diff
changeset
|
126 | |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
127 | return out; |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
128 | } |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
129 | |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
130 | // ============================================================================= |
455
c5d14d112034
Code formatting: use same separators everywhere, remove extra spaces from license headers, simplified message manager api a bit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
421
diff
changeset
|
131 | // ----------------------------------------------------------------------------- |
508
7ace3537a560
removed some custom functions in favor of Qt implementations
Santeri Piippo <crimsondusk64@gmail.com>
parents:
507
diff
changeset
|
132 | bool numeric (const str& tok) |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
461
diff
changeset
|
133 | { bool gotDot = false; |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
461
diff
changeset
|
134 | |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
461
diff
changeset
|
135 | for (int i = 0; i < tok.length(); ++i) |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
461
diff
changeset
|
136 | { const qchar c = tok[i]; |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
461
diff
changeset
|
137 | |
256
9f7e6e288953
rewrote isNumber using range-for
Santeri Piippo <crimsondusk64@gmail.com>
parents:
223
diff
changeset
|
138 | // Allow leading hyphen for negatives |
286
7a562bf3d829
Converted to 16-bit strings.. again
Santeri Piippo <crimsondusk64@gmail.com>
parents:
268
diff
changeset
|
139 | if (i == 0 && c == '-') |
256
9f7e6e288953
rewrote isNumber using range-for
Santeri Piippo <crimsondusk64@gmail.com>
parents:
223
diff
changeset
|
140 | continue; |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
461
diff
changeset
|
141 | |
256
9f7e6e288953
rewrote isNumber using range-for
Santeri Piippo <crimsondusk64@gmail.com>
parents:
223
diff
changeset
|
142 | // Check for decimal point |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
461
diff
changeset
|
143 | if (!gotDot && c == '.') |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
461
diff
changeset
|
144 | { gotDot = true; |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
145 | continue; |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
146 | } |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
461
diff
changeset
|
147 | |
256
9f7e6e288953
rewrote isNumber using range-for
Santeri Piippo <crimsondusk64@gmail.com>
parents:
223
diff
changeset
|
148 | if (c >= '0' && c <= '9') |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
149 | continue; // Digit |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
461
diff
changeset
|
150 | |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
151 | // If the above cases didn't catch this character, it was |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
152 | // illegal and this is therefore not a number. |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
153 | return false; |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
154 | } |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
461
diff
changeset
|
155 | |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
156 | return true; |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
157 | } |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
158 | |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
159 | // ============================================================================= |
455
c5d14d112034
Code formatting: use same separators everywhere, remove extra spaces from license headers, simplified message manager api a bit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
421
diff
changeset
|
160 | // ----------------------------------------------------------------------------- |
500
cad8cdc42a64
Finally got the ringfinder working! Working on integrating it to ring drawing...
Santeri Piippo <crimsondusk64@gmail.com>
parents:
498
diff
changeset
|
161 | void simplify (int& numer, int& denom) |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
461
diff
changeset
|
162 | { bool repeat; |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
461
diff
changeset
|
163 | |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
461
diff
changeset
|
164 | do |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
461
diff
changeset
|
165 | { repeat = false; |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
461
diff
changeset
|
166 | |
498
791c831c8020
further cleansing - removed most uses of unsigned ints, removed list reversers
Santeri Piippo <crimsondusk64@gmail.com>
parents:
493
diff
changeset
|
167 | for (int x = 0; x < NUM_PRIMES; x++) |
791c831c8020
further cleansing - removed most uses of unsigned ints, removed list reversers
Santeri Piippo <crimsondusk64@gmail.com>
parents:
493
diff
changeset
|
168 | { const int prime = g_primes[NUM_PRIMES - x - 1]; |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
461
diff
changeset
|
169 | |
268
778eed342ee4
Make LDMatrixObject's transform and pos members properties
Santeri Piippo <crimsondusk64@gmail.com>
parents:
257
diff
changeset
|
170 | if (numer <= prime || denom <= prime) |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
171 | continue; |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
461
diff
changeset
|
172 | |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
461
diff
changeset
|
173 | if ( (numer % prime == 0) && (denom % prime == 0)) |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
461
diff
changeset
|
174 | { numer /= prime; |
268
778eed342ee4
Make LDMatrixObject's transform and pos members properties
Santeri Piippo <crimsondusk64@gmail.com>
parents:
257
diff
changeset
|
175 | denom /= prime; |
778eed342ee4
Make LDMatrixObject's transform and pos members properties
Santeri Piippo <crimsondusk64@gmail.com>
parents:
257
diff
changeset
|
176 | repeat = true; |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
177 | break; |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
178 | } |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
179 | } |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
461
diff
changeset
|
180 | } |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
461
diff
changeset
|
181 | while (repeat); |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
182 | } |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
183 | |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
184 | // ============================================================================= |
455
c5d14d112034
Code formatting: use same separators everywhere, remove extra spaces from license headers, simplified message manager api a bit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
421
diff
changeset
|
185 | // ----------------------------------------------------------------------------- |
504
6a1fa662bfc1
Removed the List -> QList alias, use QList directly
Santeri Piippo <crimsondusk64@gmail.com>
parents:
502
diff
changeset
|
186 | vertex rotPoint (const QList<LDObject*>& objs) |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
461
diff
changeset
|
187 | { LDBoundingBox box; |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
461
diff
changeset
|
188 | |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
461
diff
changeset
|
189 | switch (edit_rotpoint) |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
461
diff
changeset
|
190 | { case ObjectOrigin: |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
461
diff
changeset
|
191 | |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
461
diff
changeset
|
192 | // Calculate center vertex |
421
7d26db0be944
style cleanup - it should be all unified now
Santeri Piippo <crimsondusk64@gmail.com>
parents:
406
diff
changeset
|
193 | for (LDObject * obj : objs) |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
461
diff
changeset
|
194 | if (obj->hasMatrix()) |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
461
diff
changeset
|
195 | box << dynamic_cast<LDMatrixObject*> (obj)->position(); |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
461
diff
changeset
|
196 | else |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
461
diff
changeset
|
197 | box << obj; |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
461
diff
changeset
|
198 | |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
461
diff
changeset
|
199 | return box.center(); |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
461
diff
changeset
|
200 | |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
461
diff
changeset
|
201 | case WorldOrigin: |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
461
diff
changeset
|
202 | return g_origin; |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
461
diff
changeset
|
203 | |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
461
diff
changeset
|
204 | case CustomPoint: |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
461
diff
changeset
|
205 | return vertex (edit_rotpoint_x, edit_rotpoint_y, edit_rotpoint_z); |
211
8d35e631bef3
Added dialog for rotation points
Santeri Piippo <crimsondusk64@gmail.com>
parents:
189
diff
changeset
|
206 | } |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
461
diff
changeset
|
207 | |
332
3013acb1df53
Converted rotation point prompt
Santeri Piippo <crimsondusk64@gmail.com>
parents:
308
diff
changeset
|
208 | return vertex(); |
211
8d35e631bef3
Added dialog for rotation points
Santeri Piippo <crimsondusk64@gmail.com>
parents:
189
diff
changeset
|
209 | } |
8d35e631bef3
Added dialog for rotation points
Santeri Piippo <crimsondusk64@gmail.com>
parents:
189
diff
changeset
|
210 | |
455
c5d14d112034
Code formatting: use same separators everywhere, remove extra spaces from license headers, simplified message manager api a bit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
421
diff
changeset
|
211 | // ============================================================================= |
c5d14d112034
Code formatting: use same separators everywhere, remove extra spaces from license headers, simplified message manager api a bit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
421
diff
changeset
|
212 | // ----------------------------------------------------------------------------- |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
461
diff
changeset
|
213 | void configRotationPoint() |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
461
diff
changeset
|
214 | { QDialog* dlg = new QDialog; |
332
3013acb1df53
Converted rotation point prompt
Santeri Piippo <crimsondusk64@gmail.com>
parents:
308
diff
changeset
|
215 | Ui::RotPointUI ui; |
421
7d26db0be944
style cleanup - it should be all unified now
Santeri Piippo <crimsondusk64@gmail.com>
parents:
406
diff
changeset
|
216 | ui.setupUi (dlg); |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
461
diff
changeset
|
217 | |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
461
diff
changeset
|
218 | switch (edit_rotpoint) |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
461
diff
changeset
|
219 | { case ObjectOrigin: |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
461
diff
changeset
|
220 | ui.objectPoint->setChecked (true); |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
461
diff
changeset
|
221 | break; |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
461
diff
changeset
|
222 | |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
461
diff
changeset
|
223 | case WorldOrigin: |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
461
diff
changeset
|
224 | ui.worldPoint->setChecked (true); |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
461
diff
changeset
|
225 | break; |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
461
diff
changeset
|
226 | |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
461
diff
changeset
|
227 | case CustomPoint: |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
461
diff
changeset
|
228 | ui.customPoint->setChecked (true); |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
461
diff
changeset
|
229 | break; |
332
3013acb1df53
Converted rotation point prompt
Santeri Piippo <crimsondusk64@gmail.com>
parents:
308
diff
changeset
|
230 | } |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
461
diff
changeset
|
231 | |
421
7d26db0be944
style cleanup - it should be all unified now
Santeri Piippo <crimsondusk64@gmail.com>
parents:
406
diff
changeset
|
232 | ui.customX->setValue (edit_rotpoint_x); |
7d26db0be944
style cleanup - it should be all unified now
Santeri Piippo <crimsondusk64@gmail.com>
parents:
406
diff
changeset
|
233 | ui.customY->setValue (edit_rotpoint_y); |
7d26db0be944
style cleanup - it should be all unified now
Santeri Piippo <crimsondusk64@gmail.com>
parents:
406
diff
changeset
|
234 | ui.customZ->setValue (edit_rotpoint_z); |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
461
diff
changeset
|
235 | |
421
7d26db0be944
style cleanup - it should be all unified now
Santeri Piippo <crimsondusk64@gmail.com>
parents:
406
diff
changeset
|
236 | if (!dlg->exec()) |
211
8d35e631bef3
Added dialog for rotation points
Santeri Piippo <crimsondusk64@gmail.com>
parents:
189
diff
changeset
|
237 | return; |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
461
diff
changeset
|
238 | |
332
3013acb1df53
Converted rotation point prompt
Santeri Piippo <crimsondusk64@gmail.com>
parents:
308
diff
changeset
|
239 | edit_rotpoint = |
421
7d26db0be944
style cleanup - it should be all unified now
Santeri Piippo <crimsondusk64@gmail.com>
parents:
406
diff
changeset
|
240 | (ui.objectPoint->isChecked()) ? ObjectOrigin : |
7d26db0be944
style cleanup - it should be all unified now
Santeri Piippo <crimsondusk64@gmail.com>
parents:
406
diff
changeset
|
241 | (ui.worldPoint->isChecked()) ? WorldOrigin : |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
461
diff
changeset
|
242 | CustomPoint; |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
461
diff
changeset
|
243 | |
332
3013acb1df53
Converted rotation point prompt
Santeri Piippo <crimsondusk64@gmail.com>
parents:
308
diff
changeset
|
244 | edit_rotpoint_x = ui.customX->value(); |
3013acb1df53
Converted rotation point prompt
Santeri Piippo <crimsondusk64@gmail.com>
parents:
308
diff
changeset
|
245 | edit_rotpoint_y = ui.customY->value(); |
3013acb1df53
Converted rotation point prompt
Santeri Piippo <crimsondusk64@gmail.com>
parents:
308
diff
changeset
|
246 | edit_rotpoint_z = ui.customZ->value(); |
211
8d35e631bef3
Added dialog for rotation points
Santeri Piippo <crimsondusk64@gmail.com>
parents:
189
diff
changeset
|
247 | } |
8d35e631bef3
Added dialog for rotation points
Santeri Piippo <crimsondusk64@gmail.com>
parents:
189
diff
changeset
|
248 | |
455
c5d14d112034
Code formatting: use same separators everywhere, remove extra spaces from license headers, simplified message manager api a bit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
421
diff
changeset
|
249 | // ============================================================================= |
c5d14d112034
Code formatting: use same separators everywhere, remove extra spaces from license headers, simplified message manager api a bit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
421
diff
changeset
|
250 | // ----------------------------------------------------------------------------- |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
461
diff
changeset
|
251 | str join (initlist<StringFormatArg> vals, str delim) |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
461
diff
changeset
|
252 | { QStringList list; |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
461
diff
changeset
|
253 | |
500
cad8cdc42a64
Finally got the ringfinder working! Working on integrating it to ring drawing...
Santeri Piippo <crimsondusk64@gmail.com>
parents:
498
diff
changeset
|
254 | for (const StringFormatArg& arg : vals) |
421
7d26db0be944
style cleanup - it should be all unified now
Santeri Piippo <crimsondusk64@gmail.com>
parents:
406
diff
changeset
|
255 | list << arg.value(); |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
461
diff
changeset
|
256 | |
286
7a562bf3d829
Converted to 16-bit strings.. again
Santeri Piippo <crimsondusk64@gmail.com>
parents:
268
diff
changeset
|
257 | return list.join (delim); |
7a562bf3d829
Converted to 16-bit strings.. again
Santeri Piippo <crimsondusk64@gmail.com>
parents:
268
diff
changeset
|
258 | } |
7a562bf3d829
Converted to 16-bit strings.. again
Santeri Piippo <crimsondusk64@gmail.com>
parents:
268
diff
changeset
|
259 | |
455
c5d14d112034
Code formatting: use same separators everywhere, remove extra spaces from license headers, simplified message manager api a bit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
421
diff
changeset
|
260 | // ============================================================================= |
500
cad8cdc42a64
Finally got the ringfinder working! Working on integrating it to ring drawing...
Santeri Piippo <crimsondusk64@gmail.com>
parents:
498
diff
changeset
|
261 | // This is the main algorithm of the ring finder. It tries to use math to find |
cad8cdc42a64
Finally got the ringfinder working! Working on integrating it to ring drawing...
Santeri Piippo <crimsondusk64@gmail.com>
parents:
498
diff
changeset
|
262 | // the one ring between r0 and r1. If it fails (the ring number is non-integral), |
cad8cdc42a64
Finally got the ringfinder working! Working on integrating it to ring drawing...
Santeri Piippo <crimsondusk64@gmail.com>
parents:
498
diff
changeset
|
263 | // it finds an intermediate radius (ceil of the ring number times scale) and |
cad8cdc42a64
Finally got the ringfinder working! Working on integrating it to ring drawing...
Santeri Piippo <crimsondusk64@gmail.com>
parents:
498
diff
changeset
|
264 | // splits the radius at this point, calling this function again to try find the |
cad8cdc42a64
Finally got the ringfinder working! Working on integrating it to ring drawing...
Santeri Piippo <crimsondusk64@gmail.com>
parents:
498
diff
changeset
|
265 | // rings between r0 - r and r - r1. |
cad8cdc42a64
Finally got the ringfinder working! Working on integrating it to ring drawing...
Santeri Piippo <crimsondusk64@gmail.com>
parents:
498
diff
changeset
|
266 | // |
cad8cdc42a64
Finally got the ringfinder working! Working on integrating it to ring drawing...
Santeri Piippo <crimsondusk64@gmail.com>
parents:
498
diff
changeset
|
267 | // This does not always yield into usable results. If at some point r == r0 or |
cad8cdc42a64
Finally got the ringfinder working! Working on integrating it to ring drawing...
Santeri Piippo <crimsondusk64@gmail.com>
parents:
498
diff
changeset
|
268 | // r == r1, there is no hope of finding the rings, at least with this algorithm, |
cad8cdc42a64
Finally got the ringfinder working! Working on integrating it to ring drawing...
Santeri Piippo <crimsondusk64@gmail.com>
parents:
498
diff
changeset
|
269 | // as it would fall into an infinite recursion. |
cad8cdc42a64
Finally got the ringfinder working! Working on integrating it to ring drawing...
Santeri Piippo <crimsondusk64@gmail.com>
parents:
498
diff
changeset
|
270 | // ----------------------------------------------------------------------------- |
507
fc76d38c3530
reworked the ring finder algorithm greatly, tries harder to find the optimal solution
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
271 | bool RingFinder::findRingsRecursor (double r0, double r1, Solution& currentSolution) |
fc76d38c3530
reworked the ring finder algorithm greatly, tries harder to find the optimal solution
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
272 | { char tabs[64]; |
fc76d38c3530
reworked the ring finder algorithm greatly, tries harder to find the optimal solution
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
273 | memset (tabs, '\t', m_stack); |
fc76d38c3530
reworked the ring finder algorithm greatly, tries harder to find the optimal solution
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
274 | tabs[m_stack] = '\0'; |
501
8f314f3f5054
ring finder integrated! it lives!
Santeri Piippo <crimsondusk64@gmail.com>
parents:
500
diff
changeset
|
275 | |
507
fc76d38c3530
reworked the ring finder algorithm greatly, tries harder to find the optimal solution
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
276 | // Don't recurse too deep. |
fc76d38c3530
reworked the ring finder algorithm greatly, tries harder to find the optimal solution
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
277 | if (m_stack >= 5) |
fc76d38c3530
reworked the ring finder algorithm greatly, tries harder to find the optimal solution
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
278 | return false; |
fc76d38c3530
reworked the ring finder algorithm greatly, tries harder to find the optimal solution
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
279 | |
fc76d38c3530
reworked the ring finder algorithm greatly, tries harder to find the optimal solution
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
280 | // Find the scale and number of a ring between r1 and r0. |
fc76d38c3530
reworked the ring finder algorithm greatly, tries harder to find the optimal solution
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
281 | assert (r1 >= r0); |
500
cad8cdc42a64
Finally got the ringfinder working! Working on integrating it to ring drawing...
Santeri Piippo <crimsondusk64@gmail.com>
parents:
498
diff
changeset
|
282 | double scale = r1 - r0; |
cad8cdc42a64
Finally got the ringfinder working! Working on integrating it to ring drawing...
Santeri Piippo <crimsondusk64@gmail.com>
parents:
498
diff
changeset
|
283 | double num = r0 / scale; |
cad8cdc42a64
Finally got the ringfinder working! Working on integrating it to ring drawing...
Santeri Piippo <crimsondusk64@gmail.com>
parents:
498
diff
changeset
|
284 | |
cad8cdc42a64
Finally got the ringfinder working! Working on integrating it to ring drawing...
Santeri Piippo <crimsondusk64@gmail.com>
parents:
498
diff
changeset
|
285 | // If the ring number is integral, we have found a fitting ring to r0 -> r1! |
cad8cdc42a64
Finally got the ringfinder working! Working on integrating it to ring drawing...
Santeri Piippo <crimsondusk64@gmail.com>
parents:
498
diff
changeset
|
286 | if (isInteger (num)) |
507
fc76d38c3530
reworked the ring finder algorithm greatly, tries harder to find the optimal solution
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
287 | { Component cmp; |
500
cad8cdc42a64
Finally got the ringfinder working! Working on integrating it to ring drawing...
Santeri Piippo <crimsondusk64@gmail.com>
parents:
498
diff
changeset
|
288 | cmp.scale = scale; |
507
fc76d38c3530
reworked the ring finder algorithm greatly, tries harder to find the optimal solution
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
289 | cmp.num = (int) round (num); |
fc76d38c3530
reworked the ring finder algorithm greatly, tries harder to find the optimal solution
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
290 | currentSolution.addComponent (cmp); |
fc76d38c3530
reworked the ring finder algorithm greatly, tries harder to find the optimal solution
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
291 | |
fc76d38c3530
reworked the ring finder algorithm greatly, tries harder to find the optimal solution
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
292 | // If we're still at the first recursion, this is the only |
fc76d38c3530
reworked the ring finder algorithm greatly, tries harder to find the optimal solution
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
293 | // ring and there's nothing left to do. Guess we found the winner. |
fc76d38c3530
reworked the ring finder algorithm greatly, tries harder to find the optimal solution
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
294 | if (m_stack == 0) |
fc76d38c3530
reworked the ring finder algorithm greatly, tries harder to find the optimal solution
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
295 | { m_solutions.push_back (currentSolution); |
fc76d38c3530
reworked the ring finder algorithm greatly, tries harder to find the optimal solution
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
296 | return true; |
fc76d38c3530
reworked the ring finder algorithm greatly, tries harder to find the optimal solution
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
297 | } |
500
cad8cdc42a64
Finally got the ringfinder working! Working on integrating it to ring drawing...
Santeri Piippo <crimsondusk64@gmail.com>
parents:
498
diff
changeset
|
298 | } |
cad8cdc42a64
Finally got the ringfinder working! Working on integrating it to ring drawing...
Santeri Piippo <crimsondusk64@gmail.com>
parents:
498
diff
changeset
|
299 | else |
507
fc76d38c3530
reworked the ring finder algorithm greatly, tries harder to find the optimal solution
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
300 | { // Try find solutions by splitting the ring in various positions. |
fc76d38c3530
reworked the ring finder algorithm greatly, tries harder to find the optimal solution
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
301 | if (isZero (r1 - r0)) |
500
cad8cdc42a64
Finally got the ringfinder working! Working on integrating it to ring drawing...
Santeri Piippo <crimsondusk64@gmail.com>
parents:
498
diff
changeset
|
302 | return false; |
cad8cdc42a64
Finally got the ringfinder working! Working on integrating it to ring drawing...
Santeri Piippo <crimsondusk64@gmail.com>
parents:
498
diff
changeset
|
303 | |
507
fc76d38c3530
reworked the ring finder algorithm greatly, tries harder to find the optimal solution
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
304 | double interval; |
fc76d38c3530
reworked the ring finder algorithm greatly, tries harder to find the optimal solution
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
305 | |
fc76d38c3530
reworked the ring finder algorithm greatly, tries harder to find the optimal solution
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
306 | // Determine interval. The smaller delta between radii, the more precise |
fc76d38c3530
reworked the ring finder algorithm greatly, tries harder to find the optimal solution
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
307 | // interval should be used. We can't really use a 0.5 increment when |
fc76d38c3530
reworked the ring finder algorithm greatly, tries harder to find the optimal solution
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
308 | // calculating rings to 10 -> 105... that would take ages to process! |
fc76d38c3530
reworked the ring finder algorithm greatly, tries harder to find the optimal solution
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
309 | if (r1 - r0 < 0.5) |
fc76d38c3530
reworked the ring finder algorithm greatly, tries harder to find the optimal solution
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
310 | interval = 0.1; |
fc76d38c3530
reworked the ring finder algorithm greatly, tries harder to find the optimal solution
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
311 | else if (r1 - r0 < 10) |
fc76d38c3530
reworked the ring finder algorithm greatly, tries harder to find the optimal solution
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
312 | interval = 0.5; |
fc76d38c3530
reworked the ring finder algorithm greatly, tries harder to find the optimal solution
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
313 | else if (r1 - r0 < 50) |
fc76d38c3530
reworked the ring finder algorithm greatly, tries harder to find the optimal solution
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
314 | interval = 1; |
fc76d38c3530
reworked the ring finder algorithm greatly, tries harder to find the optimal solution
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
315 | else |
fc76d38c3530
reworked the ring finder algorithm greatly, tries harder to find the optimal solution
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
316 | interval = 5; |
fc76d38c3530
reworked the ring finder algorithm greatly, tries harder to find the optimal solution
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
317 | |
fc76d38c3530
reworked the ring finder algorithm greatly, tries harder to find the optimal solution
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
318 | // Now go through possible splits and try find rings for both segments. |
fc76d38c3530
reworked the ring finder algorithm greatly, tries harder to find the optimal solution
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
319 | for (double r = r0 + interval; r < r1; r += interval) |
fc76d38c3530
reworked the ring finder algorithm greatly, tries harder to find the optimal solution
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
320 | { Solution sol = currentSolution; |
fc76d38c3530
reworked the ring finder algorithm greatly, tries harder to find the optimal solution
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
321 | |
fc76d38c3530
reworked the ring finder algorithm greatly, tries harder to find the optimal solution
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
322 | m_stack++; |
fc76d38c3530
reworked the ring finder algorithm greatly, tries harder to find the optimal solution
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
323 | bool res = findRingsRecursor (r0, r, sol) && findRingsRecursor (r, r1, sol); |
fc76d38c3530
reworked the ring finder algorithm greatly, tries harder to find the optimal solution
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
324 | m_stack--; |
fc76d38c3530
reworked the ring finder algorithm greatly, tries harder to find the optimal solution
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
325 | |
fc76d38c3530
reworked the ring finder algorithm greatly, tries harder to find the optimal solution
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
326 | if (res) |
fc76d38c3530
reworked the ring finder algorithm greatly, tries harder to find the optimal solution
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
327 | { // We succeeded in finding radii for this segment. If the stack is 0, this |
fc76d38c3530
reworked the ring finder algorithm greatly, tries harder to find the optimal solution
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
328 | // is the first recursion to this function. Thus there are no more ring segments |
fc76d38c3530
reworked the ring finder algorithm greatly, tries harder to find the optimal solution
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
329 | // to process and we can add the solution. |
fc76d38c3530
reworked the ring finder algorithm greatly, tries harder to find the optimal solution
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
330 | // |
fc76d38c3530
reworked the ring finder algorithm greatly, tries harder to find the optimal solution
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
331 | // If not, when this function ends, it will be called again with more arguments. |
fc76d38c3530
reworked the ring finder algorithm greatly, tries harder to find the optimal solution
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
332 | // Accept the solution to this segment by setting currentSolution to sol, and |
fc76d38c3530
reworked the ring finder algorithm greatly, tries harder to find the optimal solution
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
333 | // return true to continue processing. |
fc76d38c3530
reworked the ring finder algorithm greatly, tries harder to find the optimal solution
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
334 | if (m_stack == 0) |
fc76d38c3530
reworked the ring finder algorithm greatly, tries harder to find the optimal solution
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
335 | m_solutions.push_back (sol); |
fc76d38c3530
reworked the ring finder algorithm greatly, tries harder to find the optimal solution
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
336 | else |
fc76d38c3530
reworked the ring finder algorithm greatly, tries harder to find the optimal solution
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
337 | { currentSolution = sol; |
fc76d38c3530
reworked the ring finder algorithm greatly, tries harder to find the optimal solution
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
338 | return true; |
fc76d38c3530
reworked the ring finder algorithm greatly, tries harder to find the optimal solution
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
339 | } |
fc76d38c3530
reworked the ring finder algorithm greatly, tries harder to find the optimal solution
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
340 | } |
fc76d38c3530
reworked the ring finder algorithm greatly, tries harder to find the optimal solution
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
341 | } |
fc76d38c3530
reworked the ring finder algorithm greatly, tries harder to find the optimal solution
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
342 | |
fc76d38c3530
reworked the ring finder algorithm greatly, tries harder to find the optimal solution
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
343 | return false; |
500
cad8cdc42a64
Finally got the ringfinder working! Working on integrating it to ring drawing...
Santeri Piippo <crimsondusk64@gmail.com>
parents:
498
diff
changeset
|
344 | } |
cad8cdc42a64
Finally got the ringfinder working! Working on integrating it to ring drawing...
Santeri Piippo <crimsondusk64@gmail.com>
parents:
498
diff
changeset
|
345 | |
cad8cdc42a64
Finally got the ringfinder working! Working on integrating it to ring drawing...
Santeri Piippo <crimsondusk64@gmail.com>
parents:
498
diff
changeset
|
346 | return true; |
507
fc76d38c3530
reworked the ring finder algorithm greatly, tries harder to find the optimal solution
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
347 | } |
fc76d38c3530
reworked the ring finder algorithm greatly, tries harder to find the optimal solution
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
348 | |
fc76d38c3530
reworked the ring finder algorithm greatly, tries harder to find the optimal solution
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
349 | // ============================================================================= |
fc76d38c3530
reworked the ring finder algorithm greatly, tries harder to find the optimal solution
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
350 | // Main function. Call this with r0 and r1. If this returns true, use bestSolution |
fc76d38c3530
reworked the ring finder algorithm greatly, tries harder to find the optimal solution
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
351 | // for the solution that was presented. |
fc76d38c3530
reworked the ring finder algorithm greatly, tries harder to find the optimal solution
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
352 | // ----------------------------------------------------------------------------- |
fc76d38c3530
reworked the ring finder algorithm greatly, tries harder to find the optimal solution
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
353 | bool RingFinder::findRings (double r0, double r1) |
fc76d38c3530
reworked the ring finder algorithm greatly, tries harder to find the optimal solution
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
354 | { m_solutions.clear(); |
fc76d38c3530
reworked the ring finder algorithm greatly, tries harder to find the optimal solution
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
355 | Solution sol; |
fc76d38c3530
reworked the ring finder algorithm greatly, tries harder to find the optimal solution
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
356 | |
fc76d38c3530
reworked the ring finder algorithm greatly, tries harder to find the optimal solution
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
357 | // Recurse in and try find solutions. |
fc76d38c3530
reworked the ring finder algorithm greatly, tries harder to find the optimal solution
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
358 | findRingsRecursor (r0, r1, sol); |
fc76d38c3530
reworked the ring finder algorithm greatly, tries harder to find the optimal solution
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
359 | |
fc76d38c3530
reworked the ring finder algorithm greatly, tries harder to find the optimal solution
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
360 | // Compare the solutions and find the best one. The solution class has an operator> |
fc76d38c3530
reworked the ring finder algorithm greatly, tries harder to find the optimal solution
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
361 | // overload to compare two solutions. |
fc76d38c3530
reworked the ring finder algorithm greatly, tries harder to find the optimal solution
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
362 | m_bestSolution = null; |
fc76d38c3530
reworked the ring finder algorithm greatly, tries harder to find the optimal solution
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
363 | |
fc76d38c3530
reworked the ring finder algorithm greatly, tries harder to find the optimal solution
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
364 | for (QVector<Solution>::iterator solp = m_solutions.begin(); solp != m_solutions.end(); ++solp) |
fc76d38c3530
reworked the ring finder algorithm greatly, tries harder to find the optimal solution
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
365 | { const Solution& sol = *solp; |
fc76d38c3530
reworked the ring finder algorithm greatly, tries harder to find the optimal solution
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
366 | |
fc76d38c3530
reworked the ring finder algorithm greatly, tries harder to find the optimal solution
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
367 | if (m_bestSolution == null || sol > *m_bestSolution) |
fc76d38c3530
reworked the ring finder algorithm greatly, tries harder to find the optimal solution
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
368 | m_bestSolution = / |
fc76d38c3530
reworked the ring finder algorithm greatly, tries harder to find the optimal solution
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
369 | } |
fc76d38c3530
reworked the ring finder algorithm greatly, tries harder to find the optimal solution
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
370 | |
fc76d38c3530
reworked the ring finder algorithm greatly, tries harder to find the optimal solution
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
371 | return (m_bestSolution != null); |
fc76d38c3530
reworked the ring finder algorithm greatly, tries harder to find the optimal solution
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
372 | } |
fc76d38c3530
reworked the ring finder algorithm greatly, tries harder to find the optimal solution
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
373 | |
fc76d38c3530
reworked the ring finder algorithm greatly, tries harder to find the optimal solution
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
374 | // ============================================================================= |
fc76d38c3530
reworked the ring finder algorithm greatly, tries harder to find the optimal solution
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
375 | // ----------------------------------------------------------------------------- |
fc76d38c3530
reworked the ring finder algorithm greatly, tries harder to find the optimal solution
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
376 | bool RingFinder::Solution::operator> (const RingFinder::Solution& other) const |
fc76d38c3530
reworked the ring finder algorithm greatly, tries harder to find the optimal solution
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
377 | { // If this solution has less components than the other one, this one |
fc76d38c3530
reworked the ring finder algorithm greatly, tries harder to find the optimal solution
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
378 | // is definitely better. |
fc76d38c3530
reworked the ring finder algorithm greatly, tries harder to find the optimal solution
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
379 | if (components().size() < other.components().size()) |
fc76d38c3530
reworked the ring finder algorithm greatly, tries harder to find the optimal solution
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
380 | return true; |
fc76d38c3530
reworked the ring finder algorithm greatly, tries harder to find the optimal solution
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
381 | |
fc76d38c3530
reworked the ring finder algorithm greatly, tries harder to find the optimal solution
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
382 | // vice versa |
fc76d38c3530
reworked the ring finder algorithm greatly, tries harder to find the optimal solution
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
383 | if (other.components().size() < components().size()) |
fc76d38c3530
reworked the ring finder algorithm greatly, tries harder to find the optimal solution
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
384 | return false; |
fc76d38c3530
reworked the ring finder algorithm greatly, tries harder to find the optimal solution
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
385 | |
fc76d38c3530
reworked the ring finder algorithm greatly, tries harder to find the optimal solution
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
386 | // Calculate the maximum ring number. Since the solutions have equal |
fc76d38c3530
reworked the ring finder algorithm greatly, tries harder to find the optimal solution
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
387 | // ring counts, the solutions with lesser maximum rings should result |
fc76d38c3530
reworked the ring finder algorithm greatly, tries harder to find the optimal solution
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
388 | // in cleaner code and less new primitives, right? |
fc76d38c3530
reworked the ring finder algorithm greatly, tries harder to find the optimal solution
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
389 | int maxA = 0, |
fc76d38c3530
reworked the ring finder algorithm greatly, tries harder to find the optimal solution
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
390 | maxB = 0; |
fc76d38c3530
reworked the ring finder algorithm greatly, tries harder to find the optimal solution
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
391 | |
fc76d38c3530
reworked the ring finder algorithm greatly, tries harder to find the optimal solution
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
392 | for (int i = 0; i < components().size(); ++i) |
fc76d38c3530
reworked the ring finder algorithm greatly, tries harder to find the optimal solution
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
393 | { if (components()[i].num > maxA) |
fc76d38c3530
reworked the ring finder algorithm greatly, tries harder to find the optimal solution
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
394 | maxA = components()[i].num; |
fc76d38c3530
reworked the ring finder algorithm greatly, tries harder to find the optimal solution
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
395 | |
fc76d38c3530
reworked the ring finder algorithm greatly, tries harder to find the optimal solution
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
396 | if (other.components()[i].num > maxB) |
fc76d38c3530
reworked the ring finder algorithm greatly, tries harder to find the optimal solution
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
397 | maxB = other.components()[i].num; |
fc76d38c3530
reworked the ring finder algorithm greatly, tries harder to find the optimal solution
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
398 | } |
fc76d38c3530
reworked the ring finder algorithm greatly, tries harder to find the optimal solution
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
399 | |
fc76d38c3530
reworked the ring finder algorithm greatly, tries harder to find the optimal solution
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
400 | if (maxA < maxB) |
fc76d38c3530
reworked the ring finder algorithm greatly, tries harder to find the optimal solution
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
401 | return true; |
fc76d38c3530
reworked the ring finder algorithm greatly, tries harder to find the optimal solution
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
402 | |
fc76d38c3530
reworked the ring finder algorithm greatly, tries harder to find the optimal solution
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
403 | if (maxB < maxA) |
fc76d38c3530
reworked the ring finder algorithm greatly, tries harder to find the optimal solution
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
404 | return false; |
fc76d38c3530
reworked the ring finder algorithm greatly, tries harder to find the optimal solution
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
405 | |
fc76d38c3530
reworked the ring finder algorithm greatly, tries harder to find the optimal solution
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
406 | // Solutions have equal rings and equal maximum ring numbers. Let's |
fc76d38c3530
reworked the ring finder algorithm greatly, tries harder to find the optimal solution
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
407 | // just say this one is better, at this point it does not matter which |
fc76d38c3530
reworked the ring finder algorithm greatly, tries harder to find the optimal solution
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
408 | // one is chosen. |
fc76d38c3530
reworked the ring finder algorithm greatly, tries harder to find the optimal solution
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
409 | return true; |
fc76d38c3530
reworked the ring finder algorithm greatly, tries harder to find the optimal solution
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
410 | } |