1pub const K_SWAP_MASK: u8 = 0x01;
11pub const K_INVERT_MASK: u8 = 0x02;
15
16pub const K_IJTO_POS: [[usize; 4]; 4] = [
22 [0, 1, 3, 2], [0, 3, 1, 2], [2, 3, 1, 0], [2, 1, 3, 0], ];
28
29pub const K_POS_TO_IJ: [[usize; 4]; 4] = [
37 [0, 1, 3, 2], [0, 2, 3, 1], [3, 2, 0, 1], [3, 1, 0, 2], ];
43
44pub const K_POS_TO_ORIENTATION: [u8; 4] = [K_SWAP_MASK, 0, 0, K_INVERT_MASK + K_SWAP_MASK];
51
52pub const K_FACE_UVW_FACES: [[[i32; 2]; 3]; 6] = [
54 [
56 [4, 1], [5, 2], [3, 0], ],
60 [
62 [0, 3], [5, 2], [4, 1], ],
66 [
68 [0, 3], [1, 4], [5, 2], ],
72 [
74 [2, 5], [1, 4], [0, 3], ],
78 [
80 [2, 5], [3, 0], [1, 4], ],
84 [
86 [4, 1], [3, 0], [2, 5], ],
90];
91
92pub const K_FACE_UVW_AXES: [[[f64; 3]; 3]; 6] = [
94 [
96 [0.0, 1.0, 0.0], [0.0, 0.0, 1.0], [1.0, 0.0, 0.0], ],
100 [
102 [-1.0, 0.0, 0.0], [0.0, 0.0, 1.0], [0.0, 1.0, 0.0], ],
106 [
108 [-1.0, 0.0, 0.0], [0.0, -1.0, 0.0], [0.0, 0.0, 1.0], ],
112 [
114 [0.0, 0.0, -1.0], [0.0, -1.0, 0.0], [-1.0, 0.0, 0.0], ],
118 [
120 [0.0, 0.0, -1.0], [1.0, 0.0, 0.0], [0.0, -1.0, 0.0], ],
124 [
126 [0.0, 1.0, 0.0], [1.0, 0.0, 0.0], [0.0, 0.0, -1.0], ],
130];
131
132pub const LOOKUP_POS: [u16; 1024] = [
134 0, 1, 682, 683, 14, 4, 685, 679, 17, 58, 688, 667, 20, 61, 702, 663, 234, 64, 705, 619, 237,
135 78, 708, 615, 240, 81, 762, 603, 254, 84, 765, 599, 257, 938, 768, 427, 260, 941, 782, 423,
136 314, 944, 785, 411, 317, 958, 788, 407, 320, 961, 1002, 363, 334, 964, 1005, 359, 337, 1018,
137 1008, 347, 340, 1021, 1022, 343, 5, 15, 678, 684, 9, 8, 675, 674, 31, 54, 693, 668, 24, 51,
138 697, 658, 230, 69, 719, 620, 227, 73, 712, 610, 245, 95, 758, 604, 249, 88, 755, 594, 271, 934,
139 773, 428, 264, 931, 777, 418, 310, 949, 799, 412, 307, 953, 792, 402, 325, 975, 998, 364, 329,
140 968, 995, 354, 351, 1014, 1013, 348, 344, 1011, 1017, 338, 59, 16, 666, 689, 55, 30, 669, 692,
141 33, 32, 651, 650, 36, 46, 647, 653, 218, 123, 720, 625, 221, 119, 734, 628, 203, 97, 736, 586,
142 199, 100, 750, 589, 272, 922, 827, 433, 286, 925, 823, 436, 288, 907, 801, 394, 302, 903, 804,
143 397, 379, 976, 986, 369, 375, 990, 989, 372, 353, 992, 971, 330, 356, 1006, 967, 333, 60, 21,
144 662, 703, 50, 25, 659, 696, 47, 37, 652, 646, 40, 41, 642, 643, 214, 124, 725, 639, 211, 114,
145 729, 632, 204, 111, 741, 582, 194, 104, 745, 579, 277, 918, 828, 447, 281, 915, 818, 440, 293,
146 908, 815, 390, 297, 898, 808, 387, 380, 981, 982, 383, 370, 985, 979, 376, 367, 997, 972, 326,
147 360, 1001, 962, 323, 65, 235, 618, 704, 68, 231, 621, 718, 122, 219, 624, 721, 125, 215, 638,
148 724, 129, 128, 555, 554, 132, 142, 551, 557, 186, 145, 539, 560, 189, 148, 535, 574, 491, 874,
149 833, 448, 487, 877, 836, 462, 475, 880, 890, 465, 471, 894, 893, 468, 384, 811, 897, 298, 398,
150 807, 900, 301, 401, 795, 954, 304, 404, 791, 957, 318, 79, 236, 614, 709, 72, 226, 611, 713,
151 118, 220, 629, 735, 115, 210, 633, 728, 143, 133, 556, 550, 136, 137, 546, 547, 182, 159, 540,
152 565, 179, 152, 530, 569, 492, 870, 847, 453, 482, 867, 840, 457, 476, 885, 886, 479, 466, 889,
153 883, 472, 389, 812, 911, 294, 393, 802, 904, 291, 415, 796, 950, 309, 408, 786, 947, 313, 80,
154 241, 602, 763, 94, 244, 605, 759, 96, 202, 587, 737, 110, 205, 583, 740, 144, 187, 561, 538,
155 158, 183, 564, 541, 160, 161, 522, 523, 174, 164, 525, 519, 497, 858, 848, 507, 500, 861, 862,
156 503, 458, 843, 864, 481, 461, 839, 878, 484, 443, 817, 912, 282, 439, 820, 926, 285, 417, 778,
157 928, 267, 420, 781, 942, 263, 85, 255, 598, 764, 89, 248, 595, 754, 101, 198, 588, 751, 105,
158 195, 578, 744, 149, 188, 575, 534, 153, 178, 568, 531, 165, 175, 518, 524, 169, 168, 515, 514,
159 511, 854, 853, 508, 504, 851, 857, 498, 454, 844, 869, 495, 451, 834, 873, 488, 444, 831, 917,
160 278, 434, 824, 921, 275, 431, 774, 933, 268, 424, 771, 937, 258, 939, 256, 426, 769, 935, 270,
161 429, 772, 923, 273, 432, 826, 919, 276, 446, 829, 875, 490, 449, 832, 871, 493, 452, 846, 859,
162 496, 506, 849, 855, 510, 509, 852, 513, 512, 171, 170, 516, 526, 167, 173, 570, 529, 155, 176,
163 573, 532, 151, 190, 576, 746, 107, 193, 590, 749, 103, 196, 593, 752, 91, 250, 596, 766, 87,
164 253, 940, 261, 422, 783, 930, 265, 419, 776, 924, 287, 437, 822, 914, 280, 441, 819, 876, 486,
165 463, 837, 866, 483, 456, 841, 860, 501, 502, 863, 850, 505, 499, 856, 527, 517, 172, 166, 520,
166 521, 162, 163, 566, 543, 156, 181, 563, 536, 146, 185, 581, 742, 108, 207, 585, 739, 98, 200,
167 607, 757, 92, 246, 600, 761, 82, 243, 945, 315, 410, 784, 948, 311, 413, 798, 906, 289, 395,
168 800, 909, 292, 391, 814, 881, 474, 464, 891, 884, 477, 478, 887, 842, 459, 480, 865, 845, 455,
169 494, 868, 528, 571, 177, 154, 542, 567, 180, 157, 544, 545, 138, 139, 558, 548, 141, 135, 635,
170 730, 113, 208, 631, 733, 116, 222, 609, 715, 74, 224, 612, 711, 77, 238, 959, 316, 406, 789,
171 952, 306, 403, 793, 902, 303, 396, 805, 899, 296, 386, 809, 895, 470, 469, 892, 888, 467, 473,
172 882, 838, 460, 485, 879, 835, 450, 489, 872, 533, 572, 191, 150, 537, 562, 184, 147, 549, 559,
173 134, 140, 553, 552, 131, 130, 636, 726, 127, 213, 626, 723, 120, 217, 623, 716, 70, 229, 616,
174 706, 67, 233, 960, 321, 362, 1003, 974, 324, 365, 999, 977, 378, 368, 987, 980, 381, 382, 983,
175 810, 385, 299, 896, 813, 388, 295, 910, 816, 442, 283, 913, 830, 445, 279, 916, 747, 577, 192,
176 106, 743, 580, 206, 109, 731, 634, 209, 112, 727, 637, 212, 126, 640, 641, 42, 43, 654, 644,
177 45, 39, 657, 698, 48, 27, 660, 701, 62, 23, 965, 335, 358, 1004, 969, 328, 355, 994, 991, 374,
178 373, 988, 984, 371, 377, 978, 806, 399, 300, 901, 803, 392, 290, 905, 821, 438, 284, 927, 825,
179 435, 274, 920, 748, 591, 197, 102, 738, 584, 201, 99, 732, 630, 223, 117, 722, 627, 216, 121,
180 645, 655, 38, 44, 649, 648, 35, 34, 671, 694, 53, 28, 664, 691, 57, 18, 1019, 336, 346, 1009,
181 1015, 350, 349, 1012, 993, 352, 331, 970, 996, 366, 327, 973, 794, 400, 305, 955, 797, 414,
182 308, 951, 779, 416, 266, 929, 775, 430, 269, 932, 753, 592, 251, 90, 756, 606, 247, 93, 714,
183 608, 225, 75, 717, 622, 228, 71, 699, 656, 26, 49, 695, 670, 29, 52, 673, 672, 11, 10, 676,
184 686, 7, 13, 1020, 341, 342, 1023, 1010, 345, 339, 1016, 1007, 357, 332, 966, 1000, 361, 322,
185 963, 790, 405, 319, 956, 787, 409, 312, 946, 780, 421, 262, 943, 770, 425, 259, 936, 767, 597,
186 252, 86, 760, 601, 242, 83, 710, 613, 239, 76, 707, 617, 232, 66, 700, 661, 22, 63, 690, 665,
187 19, 56, 687, 677, 12, 6, 680, 681, 2, 3,
188];
189
190pub const LOOKUP_IJ: [u16; 1024] = [
192 0, 1, 1022, 1023, 65, 4, 959, 1018, 69, 68, 955, 954, 6, 67, 1016, 957, 9, 128, 1015, 894, 12,
193 193, 1010, 831, 76, 197, 946, 827, 75, 134, 949, 888, 137, 136, 887, 886, 140, 201, 882, 823,
194 204, 205, 818, 819, 203, 142, 821, 880, 198, 79, 824, 945, 135, 74, 889, 948, 131, 10, 893,
195 1012, 192, 13, 830, 1011, 257, 16, 767, 1006, 260, 81, 762, 943, 324, 85, 698, 939, 323, 22,
196 701, 1000, 384, 25, 638, 999, 449, 28, 575, 994, 453, 92, 571, 930, 390, 91, 632, 933, 392,
197 153, 630, 871, 457, 156, 567, 866, 461, 220, 563, 802, 398, 219, 624, 805, 335, 214, 689, 808,
198 330, 151, 692, 873, 266, 147, 756, 877, 269, 208, 755, 814, 273, 272, 751, 750, 276, 337, 746,
199 687, 340, 341, 682, 683, 339, 278, 685, 744, 400, 281, 622, 743, 465, 284, 559, 738, 469, 348,
200 555, 674, 406, 347, 616, 677, 408, 409, 614, 615, 473, 412, 551, 610, 477, 476, 547, 546, 414,
201 475, 608, 549, 351, 470, 673, 552, 346, 407, 676, 617, 282, 403, 740, 621, 285, 464, 739, 558,
202 222, 463, 800, 561, 159, 458, 865, 564, 155, 394, 869, 628, 216, 397, 806, 627, 215, 334, 809,
203 688, 210, 271, 812, 753, 146, 267, 876, 757, 149, 328, 875, 694, 87, 326, 937, 696, 82, 263,
204 940, 761, 18, 259, 1004, 765, 21, 320, 1003, 702, 24, 385, 998, 639, 89, 388, 935, 634, 93,
205 452, 931, 570, 30, 451, 992, 573, 33, 512, 991, 510, 36, 577, 986, 447, 100, 581, 922, 443, 99,
206 518, 925, 504, 160, 521, 862, 503, 225, 524, 799, 498, 229, 588, 795, 434, 166, 587, 856, 437,
207 168, 649, 854, 375, 233, 652, 791, 370, 237, 716, 787, 306, 174, 715, 848, 309, 111, 710, 913,
208 312, 106, 647, 916, 377, 42, 643, 980, 381, 45, 704, 979, 318, 48, 769, 974, 255, 113, 772,
209 911, 250, 117, 836, 907, 186, 54, 835, 968, 189, 57, 896, 967, 126, 60, 961, 962, 63, 124, 965,
210 898, 59, 123, 902, 901, 120, 185, 904, 839, 118, 188, 969, 834, 55, 252, 973, 770, 51, 251,
211 910, 773, 112, 246, 847, 776, 177, 183, 842, 841, 180, 179, 778, 845, 244, 240, 781, 782, 243,
212 304, 785, 718, 239, 369, 788, 655, 234, 373, 852, 651, 170, 310, 851, 712, 173, 313, 912, 711,
213 110, 316, 977, 706, 47, 380, 981, 642, 43, 379, 918, 645, 104, 441, 920, 583, 102, 444, 985,
214 578, 39, 508, 989, 514, 35, 507, 926, 517, 96, 502, 863, 520, 161, 439, 858, 585, 164, 435,
215 794, 589, 228, 496, 797, 526, 227, 495, 734, 529, 288, 490, 671, 532, 353, 426, 667, 596, 357,
216 429, 728, 595, 294, 366, 727, 656, 297, 303, 722, 721, 300, 299, 658, 725, 364, 360, 661, 662,
217 363, 358, 599, 664, 425, 295, 594, 729, 428, 291, 530, 733, 492, 352, 533, 670, 491, 417, 536,
218 607, 486, 420, 601, 602, 423, 484, 605, 538, 419, 483, 542, 541, 480, 545, 544, 479, 478, 548,
219 609, 474, 415, 612, 613, 410, 411, 611, 550, 413, 472, 672, 553, 350, 471, 737, 556, 287, 466,
220 741, 620, 283, 402, 678, 619, 344, 405, 680, 681, 342, 343, 745, 684, 279, 338, 749, 748, 275,
221 274, 686, 747, 336, 277, 623, 742, 401, 280, 618, 679, 404, 345, 554, 675, 468, 349, 557, 736,
222 467, 286, 560, 801, 462, 223, 625, 804, 399, 218, 629, 868, 395, 154, 566, 867, 456, 157, 569,
223 928, 455, 94, 572, 993, 450, 31, 636, 997, 386, 27, 635, 934, 389, 88, 697, 936, 327, 86, 700,
224 1001, 322, 23, 764, 1005, 258, 19, 763, 942, 261, 80, 758, 879, 264, 145, 695, 874, 329, 148,
225 691, 810, 333, 212, 752, 813, 270, 211, 816, 817, 206, 207, 881, 820, 143, 202, 885, 884, 139,
226 138, 822, 883, 200, 141, 825, 944, 199, 78, 828, 1009, 194, 15, 892, 1013, 130, 11, 891, 950,
227 133, 72, 953, 952, 71, 70, 956, 1017, 66, 7, 1020, 1021, 2, 3, 1019, 958, 5, 64, 1014, 895, 8,
228 129, 951, 890, 73, 132, 947, 826, 77, 196, 1008, 829, 14, 195, 1007, 766, 17, 256, 1002, 703,
229 20, 321, 938, 699, 84, 325, 941, 760, 83, 262, 878, 759, 144, 265, 815, 754, 209, 268, 811,
230 690, 213, 332, 872, 693, 150, 331, 870, 631, 152, 393, 807, 626, 217, 396, 803, 562, 221, 460,
231 864, 565, 158, 459, 929, 568, 95, 454, 932, 633, 90, 391, 996, 637, 26, 387, 995, 574, 29, 448,
232 990, 511, 32, 513, 927, 506, 97, 516, 923, 442, 101, 580, 984, 445, 38, 579, 983, 382, 41, 640,
233 978, 319, 44, 705, 914, 315, 108, 709, 917, 376, 107, 646, 855, 374, 169, 648, 850, 311, 172,
234 713, 786, 307, 236, 717, 789, 368, 235, 654, 792, 433, 230, 591, 857, 436, 167, 586, 861, 500,
235 163, 522, 798, 499, 224, 525, 735, 494, 289, 528, 730, 431, 292, 593, 666, 427, 356, 597, 669,
236 488, 355, 534, 606, 487, 416, 537, 543, 482, 481, 540, 539, 418, 485, 604, 600, 421, 422, 603,
237 598, 359, 424, 665, 535, 354, 489, 668, 531, 290, 493, 732, 592, 293, 430, 731, 657, 296, 367,
238 726, 660, 361, 362, 663, 724, 365, 298, 659, 723, 302, 301, 720, 719, 238, 305, 784, 714, 175,
239 308, 849, 650, 171, 372, 853, 653, 232, 371, 790, 590, 231, 432, 793, 527, 226, 497, 796, 523,
240 162, 501, 860, 584, 165, 438, 859, 582, 103, 440, 921, 519, 98, 505, 924, 515, 34, 509, 988,
241 576, 37, 446, 987, 641, 40, 383, 982, 644, 105, 378, 919, 708, 109, 314, 915, 707, 46, 317,
242 976, 768, 49, 254, 975, 833, 52, 191, 970, 837, 116, 187, 906, 774, 115, 248, 909, 777, 176,
243 247, 846, 780, 241, 242, 783, 844, 245, 178, 779, 843, 182, 181, 840, 905, 184, 119, 838, 908,
244 249, 114, 775, 972, 253, 50, 771, 971, 190, 53, 832, 966, 127, 56, 897, 903, 122, 121, 900,
245 899, 58, 125, 964, 960, 61, 62, 963,
246];