/* JWildfire - an image and animation processor written in Java Copyright (C) 1995-2011 Andreas Maschke This is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this software; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA, or see the FSF site: http://www.fsf.org. */ // Port of Hexes and Crackle plugin by slobo777, see http://slobo777.deviantart.com/art/Apo-Plugins-Hexes-And-Crackle-99243824 // All credits for this wonderful plugin to him! package org.jwildfire.create.tina.variation; import static org.jwildfire.base.mathlib.MathLib.floor; public class NoiseTools { //This is an implementation of "Simplex Noise" and "Perlin Noise" as invented by Ken Perlin, //and described by Stefan Gustavson. private final static int _x_ = 0; private final static int _y_ = 1; private final static int _z_ = 2; //p[] contains "random" hash values used to pick gradients. The structure repeats to prevent // need to write code to handle wrap-arounds - i.e. it is safe to add two values from // this list (or anything else modulo 1024) and lookup a third result which will also be // between 0 and 1023 inclusive. private static final int p[] = new int[] { 127, 71, 882, 898, 798, 463, 517, 451, 454, 634, 578, 695, 728, 742, 325, 350, 684, 153, 340, 311, 992, 706, 218, 285, 96, 486, 160, 98, 686, 288, 193, 119, 410, 246, 536, 415, 953, 417, 784, 573, 734, 1, 136, 381, 177, 678, 773, 22, 301, 51, 874, 844, 775, 744, 633, 468, 1019, 287, 475, 78, 294, 724, 519, 17, 323, 191, 187, 446, 262, 212, 170, 33, 7, 227, 566, 526, 264, 556, 717, 477, 815, 671, 225, 207, 692, 663, 969, 393, 658, 877, 353, 788, 128, 303, 614, 501, 490, 387, 53, 941, 951, 736, 539, 102, 163, 175, 584, 988, 35, 347, 442, 649, 642, 198, 727, 939, 913, 811, 894, 858, 181, 412, 307, 830, 154, 479, 704, 326, 681, 619, 698, 621, 552, 598, 74, 890, 299, 922, 701, 481, 867, 214, 817, 731, 768, 673, 315, 338, 576, 222, 484, 305, 623, 239, 269, 46, 748, 608, 546, 537, 125, 667, 998, 714, 529, 823, 247, 289, 771, 808, 973, 735, 516, 974, 702, 636, 357, 455, 600, 80, 336, 696, 963, 297, 92, 980, 670, 958, 625, 712, 406, 173, 19, 763, 470, 793, 283, 655, 59, 421, 1016, 219, 13, 105, 840, 111, 38, 408, 945, 242, 559, 206, 443, 331, 737, 580, 767, 1020, 220, 31, 968, 15, 527, 833, 139, 129, 859, 739, 418, 783, 933, 49, 789, 178, 124, 772, 627, 0, 23, 388, 950, 976, 940, 485, 685, 21, 523, 723, 244, 637, 488, 835, 379, 342, 452, 862, 295, 765, 897, 507, 370, 567, 416, 100, 914, 300, 120, 392, 694, 94, 265, 791, 171, 200, 787, 441, 868, 672, 769, 983, 911, 427, 82, 69, 224, 176, 920, 500, 462, 263, 513, 797, 293, 322, 645, 469, 635, 40, 215, 687, 960, 818, 826, 34, 603, 316, 994, 611, 511, 93, 899, 114, 73, 241, 585, 327, 674, 280, 957, 471, 24, 502, 355, 159, 1017, 855, 270, 538, 521, 162, 880, 334, 986, 740, 719, 266, 820, 97, 41, 52, 750, 893, 838, 616, 83, 896, 777, 464, 562, 183, 362, 411, 478, 398, 384, 912, 599, 587, 609, 822, 243, 504, 753, 857, 157, 964, 65, 261, 81, 371, 435, 924, 885, 884, 863, 613, 721, 669, 121, 639, 989, 487, 238, 448, 216, 852, 643, 713, 676, 277, 879, 133, 123, 304, 547, 396, 70, 141, 909, 848, 900, 318, 146, 356, 802, 4, 807, 558, 764, 545, 588, 872, 554, 467, 544, 505, 149, 62, 901, 64, 45, 813, 27, 109, 718, 803, 853, 996, 1014, 476, 575, 28, 199, 688, 6, 482, 703, 560, 395, 66, 341, 794, 422, 376, 601, 76, 14, 569, 480, 39, 1011, 1001, 854, 55, 89, 335, 761, 363, 419, 252, 799, 358, 324, 1012, 152, 312, 496, 235, 916, 582, 615, 979, 1005, 891, 1013, 641, 18, 148, 185, 512, 378, 58, 211, 495, 594, 87, 762, 366, 660, 449, 520, 424, 886, 819, 281, 147, 290, 390, 32, 572, 993, 720, 683, 309, 254, 607, 568, 256, 533, 394, 620, 429, 67, 831, 103, 423, 668, 693, 518, 551, 697, 253, 949, 54, 875, 116, 434, 743, 644, 590, 279, 843, 589, 11, 647, 586, 806, 549, 375, 226, 851, 499, 450, 978, 29, 982, 189, 107, 508, 373, 796, 20, 700, 110, 26, 461, 782, 591, 828, 57, 904, 847, 328, 122, 630, 711, 44, 397, 404, 209, 365, 84, 194, 1021, 675, 135, 965, 329, 557, 691, 79, 352, 498, 629, 869, 90, 921, 233, 622, 871, 755, 439, 955, 228, 63, 825, 43, 943, 438, 144, 961, 359, 330, 682, 626, 425, 259, 249, 801, 754, 1003, 230, 377, 217, 878, 1007, 313, 2, 915, 550, 271, 437, 846, 548, 145, 715, 346, 251, 372, 99, 543, 16, 47, 195, 679, 174, 905, 188, 804, 169, 785, 231, 726, 814, 339, 531, 420, 258, 1009, 134, 972, 458, 234, 690, 260, 666, 646, 142, 184, 91, 628, 987, 10, 210, 926, 348, 386, 161, 60, 409, 680, 204, 164, 444, 708, 276, 68, 383, 491, 382, 42, 816, 483, 699, 150, 9, 565, 555, 433, 593, 86, 952, 839, 618, 751, 889, 108, 361, 595, 677, 407, 856, 255, 604, 85, 648, 928, 824, 213, 192, 267, 902, 792, 656, 631, 403, 389, 493, 333, 756, 602, 925, 113, 632, 354, 37, 873, 577, 56, 278, 930, 367, 428, 332, 317, 530, 364, 800, 774, 497, 1023, 12, 137, 845, 653, 101, 888, 542, 167, 48, 158, 1002, 745, 292, 944, 456, 990, 574, 25, 1018, 937, 298, 966, 430, 400, 349, 860, 689, 320, 117, 778, 104, 314, 786, 205, 606, 440, 936, 457, 932, 934, 948, 168, 445, 931, 757, 291, 571, 919, 360, 284, 509, 296, 245, 836, 166, 3, 257, 50, 282, 151, 810, 344, 947, 236, 946, 865, 752, 77, 610, 967, 795, 131, 302, 760, 781, 190, 938, 61, 1022, 652, 138, 984, 832, 202, 140, 985, 5, 657, 997, 401, 319, 431, 662, 405, 275, 650, 651, 887, 310, 1004, 368, 208, 596, 248, 758, 8, 126, 730, 489, 343, 337, 506, 515, 432, 232, 250, 532, 954, 524, 115, 229, 522, 908, 729, 186, 561, 995, 156, 196, 118, 805, 399, 918, 991, 849, 273, 747, 640, 143, 321, 624, 268, 306, 30, 722, 540, 534, 710, 130, 155, 883, 716, 525, 426, 812, 345, 929, 975, 472, 837, 605, 664, 391, 581, 272, 746, 112, 659, 665, 780, 240, 841, 474, 563, 36, 579, 286, 436, 907, 369, 201, 402, 962, 106, 749, 172, 494, 88, 466, 473, 414, 597, 374, 942, 308, 766, 459, 821, 592, 881, 380, 759, 866, 779, 809, 876, 541, 829, 528, 999, 221, 661, 927, 413, 977, 182, 583, 733, 892, 741, 570, 351, 617, 956, 72, 709, 850, 732, 770, 870, 95, 935, 223, 179, 861, 917, 447, 385, 132, 827, 923, 75, 465, 612, 460, 725, 492, 553, 1008, 910, 981, 503, 165, 895, 834, 1000, 180, 638, 906, 510, 274, 776, 971, 564, 738, 903, 654, 864, 959, 1015, 453, 535, 237, 197, 1006, 790, 514, 842, 970, 705, 707, 1010, 203, //1k Block repeats here 127, 71, 882, 898, 798, 463, 517, 451, 454, 634, 578, 695, 728, 742, 325, 350, 684, 153, 340, 311, 992, 706, 218, 285, 96, 486, 160, 98, 686, 288, 193, 119, 410, 246, 536, 415, 953, 417, 784, 573, 734, 1, 136, 381, 177, 678, 773, 22, 301, 51, 874, 844, 775, 744, 633, 468, 1019, 287, 475, 78, 294, 724, 519, 17, 323, 191, 187, 446, 262, 212, 170, 33, 7, 227, 566, 526, 264, 556, 717, 477, 815, 671, 225, 207, 692, 663, 969, 393, 658, 877, 353, 788, 128, 303, 614, 501, 490, 387, 53, 941, 951, 736, 539, 102, 163, 175, 584, 988, 35, 347, 442, 649, 642, 198, 727, 939, 913, 811, 894, 858, 181, 412, 307, 830, 154, 479, 704, 326, 681, 619, 698, 621, 552, 598, 74, 890, 299, 922, 701, 481, 867, 214, 817, 731, 768, 673, 315, 338, 576, 222, 484, 305, 623, 239, 269, 46, 748, 608, 546, 537, 125, 667, 998, 714, 529, 823, 247, 289, 771, 808, 973, 735, 516, 974, 702, 636, 357, 455, 600, 80, 336, 696, 963, 297, 92, 980, 670, 958, 625, 712, 406, 173, 19, 763, 470, 793, 283, 655, 59, 421, 1016, 219, 13, 105, 840, 111, 38, 408, 945, 242, 559, 206, 443, 331, 737, 580, 767, 1020, 220, 31, 968, 15, 527, 833, 139, 129, 859, 739, 418, 783, 933, 49, 789, 178, 124, 772, 627, 0, 23, 388, 950, 976, 940, 485, 685, 21, 523, 723, 244, 637, 488, 835, 379, 342, 452, 862, 295, 765, 897, 507, 370, 567, 416, 100, 914, 300, 120, 392, 694, 94, 265, 791, 171, 200, 787, 441, 868, 672, 769, 983, 911, 427, 82, 69, 224, 176, 920, 500, 462, 263, 513, 797, 293, 322, 645, 469, 635, 40, 215, 687, 960, 818, 826, 34, 603, 316, 994, 611, 511, 93, 899, 114, 73, 241, 585, 327, 674, 280, 957, 471, 24, 502, 355, 159, 1017, 855, 270, 538, 521, 162, 880, 334, 986, 740, 719, 266, 820, 97, 41, 52, 750, 893, 838, 616, 83, 896, 777, 464, 562, 183, 362, 411, 478, 398, 384, 912, 599, 587, 609, 822, 243, 504, 753, 857, 157, 964, 65, 261, 81, 371, 435, 924, 885, 884, 863, 613, 721, 669, 121, 639, 989, 487, 238, 448, 216, 852, 643, 713, 676, 277, 879, 133, 123, 304, 547, 396, 70, 141, 909, 848, 900, 318, 146, 356, 802, 4, 807, 558, 764, 545, 588, 872, 554, 467, 544, 505, 149, 62, 901, 64, 45, 813, 27, 109, 718, 803, 853, 996, 1014, 476, 575, 28, 199, 688, 6, 482, 703, 560, 395, 66, 341, 794, 422, 376, 601, 76, 14, 569, 480, 39, 1011, 1001, 854, 55, 89, 335, 761, 363, 419, 252, 799, 358, 324, 1012, 152, 312, 496, 235, 916, 582, 615, 979, 1005, 891, 1013, 641, 18, 148, 185, 512, 378, 58, 211, 495, 594, 87, 762, 366, 660, 449, 520, 424, 886, 819, 281, 147, 290, 390, 32, 572, 993, 720, 683, 309, 254, 607, 568, 256, 533, 394, 620, 429, 67, 831, 103, 423, 668, 693, 518, 551, 697, 253, 949, 54, 875, 116, 434, 743, 644, 590, 279, 843, 589, 11, 647, 586, 806, 549, 375, 226, 851, 499, 450, 978, 29, 982, 189, 107, 508, 373, 796, 20, 700, 110, 26, 461, 782, 591, 828, 57, 904, 847, 328, 122, 630, 711, 44, 397, 404, 209, 365, 84, 194, 1021, 675, 135, 965, 329, 557, 691, 79, 352, 498, 629, 869, 90, 921, 233, 622, 871, 755, 439, 955, 228, 63, 825, 43, 943, 438, 144, 961, 359, 330, 682, 626, 425, 259, 249, 801, 754, 1003, 230, 377, 217, 878, 1007, 313, 2, 915, 550, 271, 437, 846, 548, 145, 715, 346, 251, 372, 99, 543, 16, 47, 195, 679, 174, 905, 188, 804, 169, 785, 231, 726, 814, 339, 531, 420, 258, 1009, 134, 972, 458, 234, 690, 260, 666, 646, 142, 184, 91, 628, 987, 10, 210, 926, 348, 386, 161, 60, 409, 680, 204, 164, 444, 708, 276, 68, 383, 491, 382, 42, 816, 483, 699, 150, 9, 565, 555, 433, 593, 86, 952, 839, 618, 751, 889, 108, 361, 595, 677, 407, 856, 255, 604, 85, 648, 928, 824, 213, 192, 267, 902, 792, 656, 631, 403, 389, 493, 333, 756, 602, 925, 113, 632, 354, 37, 873, 577, 56, 278, 930, 367, 428, 332, 317, 530, 364, 800, 774, 497, 1023, 12, 137, 845, 653, 101, 888, 542, 167, 48, 158, 1002, 745, 292, 944, 456, 990, 574, 25, 1018, 937, 298, 966, 430, 400, 349, 860, 689, 320, 117, 778, 104, 314, 786, 205, 606, 440, 936, 457, 932, 934, 948, 168, 445, 931, 757, 291, 571, 919, 360, 284, 509, 296, 245, 836, 166, 3, 257, 50, 282, 151, 810, 344, 947, 236, 946, 865, 752, 77, 610, 967, 795, 131, 302, 760, 781, 190, 938, 61, 1022, 652, 138, 984, 832, 202, 140, 985, 5, 657, 997, 401, 319, 431, 662, 405, 275, 650, 651, 887, 310, 1004, 368, 208, 596, 248, 758, 8, 126, 730, 489, 343, 337, 506, 515, 432, 232, 250, 532, 954, 524, 115, 229, 522, 908, 729, 186, 561, 995, 156, 196, 118, 805, 399, 918, 991, 849, 273, 747, 640, 143, 321, 624, 268, 306, 30, 722, 540, 534, 710, 130, 155, 883, 716, 525, 426, 812, 345, 929, 975, 472, 837, 605, 664, 391, 581, 272, 746, 112, 659, 665, 780, 240, 841, 474, 563, 36, 579, 286, 436, 907, 369, 201, 402, 962, 106, 749, 172, 494, 88, 466, 473, 414, 597, 374, 942, 308, 766, 459, 821, 592, 881, 380, 759, 866, 779, 809, 876, 541, 829, 528, 999, 221, 661, 927, 413, 977, 182, 583, 733, 892, 741, 570, 351, 617, 956, 72, 709, 850, 732, 770, 870, 95, 935, 223, 179, 861, 917, 447, 385, 132, 827, 923, 75, 465, 612, 460, 725, 492, 553, 1008, 910, 981, 503, 165, 895, 834, 1000, 180, 638, 906, 510, 274, 776, 971, 564, 738, 903, 654, 864, 959, 1015, 453, 535, 237, 197, 1006, 790, 514, 842, 970, 705, 707, 1010, 203, //2k block overlaps by two items here . . . (to allow for over-runs caused by taking // "next item in sequence") 127, 71 }; //grad[][] contains gradient values that will be associated with grid points for // the simplex code to interpolate. They are chosen using the hash codes // from p[], above private static final double grad3[][] = new double[][] { { 0.79148875, 0.11986299, -0.59931496 }, { 0.51387411, -0.61170974, 0.60145208 }, { -0.95395128, -0.21599571, 0.20814132 }, { 0.59830026, 0.67281067, 0.43515813 }, { -0.93971346, 0.16019818, -0.30211777 }, { -0.74549699, -0.35758846, 0.56246309 }, { -0.78850321, -0.29060783, 0.54204223 }, { 0.61332339, 0.38915256, 0.68730976 }, { -0.64370632, -0.40843865, 0.64716307 }, { -0.23922684, 0.70399949, -0.66869667 }, { -0.82882802, -0.00130741, 0.55950192 }, { 0.07987672, 0.62439350, -0.77701510 }, { -0.46863456, -0.57517073, 0.67049257 }, { 0.30792870, 0.42464616, -0.85138449 }, { -0.06972001, 0.30439513, 0.94999091 }, { 0.58798450, -0.00151777, 0.80887077 }, { -0.32757867, 0.51578941, 0.79161449 }, { -0.44745031, 0.86883688, 0.21192142 }, { -0.38042636, 0.71222019, 0.58993066 }, { -0.32616370, 0.61421101, -0.71858339 }, { 0.45483340, 0.19928843, -0.86799234 }, { -0.81020233, -0.05930352, 0.58314259 }, { 0.81994145, 0.39825895, 0.41120046 }, { 0.49257662, 0.74240487, 0.45409612 }, { 0.95124863, -0.26667257, -0.15495734 }, { -0.95745656, 0.09203090, -0.27350914 }, { 0.20842499, -0.82482150, -0.52557446 }, { 0.46829293, -0.47740985, -0.74349282 }, { -0.65000311, -0.74754355, 0.13665502 }, { 0.83566743, 0.53294928, -0.13275921 }, { 0.90454761, -0.35449497, -0.23691126 }, { -0.64270969, 0.21532175, 0.73522839 }, { -0.39693478, -0.17553935, -0.90090439 }, { 0.45073049, 0.65155528, 0.61017845 }, { 0.69618384, -0.07989842, 0.71340333 }, { 0.09059934, 0.85274641, -0.51440773 }, { -0.00560267, 0.69197466, 0.72190005 }, { 0.23586856, -0.95830502, 0.16129945 }, { 0.20354340, -0.96925430, -0.13826128 }, { -0.45516395, 0.63885905, 0.62022970 }, { 0.80792021, 0.47917579, 0.34300946 }, { 0.40886670, -0.32579857, -0.85245722 }, { -0.83819701, -0.30910810, 0.44930831 }, { -0.57602641, -0.75801200, 0.30595978 }, { -0.16591524, -0.96579983, -0.19925569 }, { 0.27174061, 0.93638167, -0.22214053 }, { -0.45758922, 0.73185326, -0.50497812 }, { -0.18029934, -0.78067110, -0.59836843 }, { 0.14087163, -0.39189764, -0.90915974 }, { -0.03534787, -0.02750024, 0.99899663 }, { 0.91016878, 0.06772570, 0.40866370 }, { 0.70142578, 0.70903193, 0.07263332 }, { -0.49486157, -0.54111502, -0.67993129 }, { -0.26972486, -0.84418773, -0.46324462 }, { 0.91931005, 0.03121901, 0.39229378 }, { -0.15332070, -0.87495538, 0.45928842 }, { -0.59010107, -0.66883868, 0.45214549 }, { 0.51964273, -0.78565398, -0.33573688 }, { -0.25845001, 0.87348329, -0.41259003 }, { -0.64741807, -0.59846669, 0.47189773 }, { -0.79348688, -0.32782128, -0.51274923 }, { -0.86280237, -0.14342378, -0.48476972 }, { 0.19469709, -0.76349966, 0.61576076 }, { 0.39371236, -0.70742193, -0.58697938 }, { 0.62103834, -0.50000004, -0.60358209 }, { -0.19652824, -0.51508695, 0.83430335 }, { -0.96016549, -0.26826630, -0.07820118 }, { 0.52655683, 0.84118729, 0.12305219 }, { 0.56222101, 0.70557745, -0.43135599 }, { 0.06395307, 0.99025162, -0.12374061 }, { -0.65379289, 0.52521996, 0.54470070 }, { 0.81206590, -0.38643765, 0.43728128 }, { -0.69449067, -0.71926243, -0.01855435 }, { 0.33968533, 0.75504287, 0.56082452 }, { -0.52402654, -0.70537870, -0.47732282 }, { -0.65379327, -0.46369816, 0.59794512 }, { -0.08582021, -0.01217948, 0.99623619 }, { -0.66287577, 0.49604924, 0.56083051 }, { 0.70911302, 0.68748287, -0.15660789 }, { -0.58662137, -0.46475685, 0.66323181 }, { -0.76681755, 0.63310950, -0.10565607 }, { 0.68601816, -0.59353001, 0.42083395 }, { 0.64792478, -0.72668696, 0.22829704 }, { 0.68756542, -0.69062543, 0.22425499 }, { -0.46901797, -0.72307343, -0.50713604 }, { -0.71418521, -0.11738817, 0.69004312 }, { 0.50880449, -0.80611081, 0.30216445 }, { 0.27793962, -0.58372922, -0.76289565 }, { -0.39417207, 0.91575060, -0.07764800 }, { -0.84724113, -0.47860304, 0.23048124 }, { 0.67628991, 0.54362408, -0.49709638 }, { 0.65073821, -0.09420630, 0.75343544 }, { 0.66910202, 0.73566783, -0.10533437 }, { 0.72191995, -0.00305613, 0.69196983 }, { -0.00313125, 0.06634333, 0.99779194 }, { -0.06908811, 0.28990653, -0.95455803 }, { 0.17507626, 0.73870621, 0.65089280 }, { -0.57470594, 0.75735703, 0.31003777 }, { -0.91870733, 0.08883536, 0.38481830 }, { -0.27399536, 0.39846316, 0.87530203 }, { 0.99772699, -0.05473919, 0.03929993 }, { 0.22663907, 0.97393801, -0.00891541 }, { 0.62338001, 0.59656797, -0.50547405 }, { 0.59177247, 0.49473684, -0.63642816 }, { -0.24457664, -0.31345545, 0.91756632 }, { -0.44691491, -0.89198404, -0.06805539 }, { -0.83115967, -0.44685014, 0.33090566 }, { -0.39940345, 0.67719937, -0.61796270 }, { 0.55460272, -0.63265953, -0.54051619 }, { 0.82284412, 0.14794174, -0.54867185 }, { -0.39887172, -0.82890906, -0.39218761 }, { 0.28591109, 0.71270085, 0.64055628 }, { -0.15438831, 0.66966606, 0.72643762 }, { -0.75134796, 0.54289699, 0.37515211 }, { 0.32016243, 0.77691605, -0.54212311 }, { 0.50884942, 0.15171482, -0.84738119 }, { 0.08945627, 0.73684807, 0.67011379 }, { -0.68792851, -0.71885270, -0.10002580 }, { 0.02292266, -0.07249674, 0.99710520 }, { 0.94083723, -0.10191422, 0.32316993 }, { -0.81053204, 0.43703808, 0.38991733 }, { -0.19558496, -0.07485841, 0.97782552 }, { 0.68911052, -0.49915226, -0.52533200 }, { 0.19796974, 0.93342057, 0.29922235 }, { -0.79540501, -0.26473293, 0.54520395 }, { -0.27945416, -0.91288360, 0.29757168 }, { 0.82074194, 0.43648314, 0.36859889 }, { -0.20594999, -0.70696486, -0.67659832 }, { -0.05687654, -0.70968577, 0.70221874 }, { -0.26280466, 0.69993747, -0.66409430 }, { -0.54551347, -0.78469719, 0.29438983 }, { 0.90609571, 0.39319111, 0.15617717 }, { 0.69129692, 0.67317351, 0.26257571 }, { 0.98391565, -0.05206160, 0.17087883 }, { 0.63806303, 0.67740288, -0.36606134 }, { -0.50096077, 0.83542684, -0.22605378 }, { 0.65237128, 0.35509583, 0.66956603 }, { -0.85711882, -0.19885856, 0.47518691 }, { 0.79383271, -0.12451513, 0.59525256 }, { -0.63301076, 0.07907192, 0.77009416 }, { 0.57925311, -0.49077742, 0.65084818 }, { 0.14070842, 0.97298117, 0.18305403 }, { -0.59601232, 0.69646383, -0.39963413 }, { -0.68205637, -0.47455943, 0.55641033 }, { 0.47997775, -0.84805982, -0.22453484 }, { 0.83562547, -0.48273957, 0.26209270 }, { 0.59180830, 0.36411758, 0.71915320 }, { 0.66057023, -0.66033264, 0.35722231 }, { 0.53319130, 0.75511965, 0.38144639 }, { -0.21631797, -0.12712992, 0.96801060 }, { -0.23971441, 0.89928294, -0.36582400 }, { -0.72825564, 0.27377922, -0.62824252 }, { 0.02135570, 0.73882696, 0.67355672 }, { 0.48112026, 0.78759215, 0.38499597 }, { -0.58250985, -0.09956878, 0.80670213 }, { 0.21323385, 0.36856735, 0.90481459 }, { -0.36459960, -0.93062781, -0.03160697 }, { -0.68684541, 0.17314748, -0.70587771 }, { 0.68032531, -0.07909205, -0.72863017 }, { 0.25007484, -0.61882132, 0.74466284 }, { 0.77055613, 0.59380162, 0.23160935 }, { 0.67996118, -0.03835970, 0.73224403 }, { 0.43079959, 0.38901749, -0.81429547 }, { 0.76815116, -0.63831184, 0.05001794 }, { -0.13601015, 0.75596033, -0.64033211 }, { 0.36884321, -0.45188838, -0.81225093 }, { 0.79562623, -0.43647179, 0.42008485 }, { -0.65875496, 0.39126701, -0.64261344 }, { -0.68899899, 0.44217527, 0.57424858 }, { 0.25292617, 0.96620732, -0.04971687 }, { -0.68558843, -0.70460233, 0.18304118 }, { 0.86382379, 0.29507865, 0.40833448 }, { 0.13627838, 0.31500179, 0.93925613 }, { 0.67187940, 0.64336667, 0.36695693 }, { 0.37977583, 0.31123423, 0.87115072 }, { -0.03326050, -0.99451574, -0.09915731 }, { -0.66427749, -0.01424397, -0.74735033 }, { 0.68859558, 0.44744486, -0.57063931 }, { -0.56738045, 0.30154774, -0.76625608 }, { -0.58488004, 0.63357146, 0.50646080 }, { 0.38842469, 0.92016339, 0.04925032 }, { 0.15316057, -0.97495961, -0.16123153 }, { 0.57623375, 0.51659393, 0.63331301 }, { 0.32392581, -0.79816566, -0.50794059 }, { 0.73136440, -0.54179646, 0.41420129 }, { -0.58929886, -0.58690534, -0.55521975 }, { 0.64030162, 0.32487137, -0.69604054 }, { 0.80502987, -0.00635101, 0.59320028 }, { 0.46595373, 0.62005710, -0.63120227 }, { 0.83612498, 0.53677947, 0.11297261 }, { -0.60753284, -0.29028728, -0.73934913 }, { -0.45583848, 0.84488003, 0.27998037 }, { -0.27320563, -0.39709327, 0.87617100 }, { 0.84893256, -0.09000823, 0.52078021 }, { -0.35708766, -0.73203774, 0.58018027 }, { 0.10507148, -0.71032871, 0.69598355 }, { 0.68468508, 0.26788814, -0.67782172 }, { -0.94602428, -0.13594737, -0.29420466 }, { 0.27104088, 0.95431757, 0.12575696 }, { -0.55840113, 0.14909310, 0.81606337 }, { 0.47553129, 0.80729730, 0.34948685 }, { -0.01891509, -0.97526220, 0.22024047 }, { -0.65760518, -0.45924250, -0.59720327 }, { -0.70549425, 0.70862555, 0.01129989 }, { -0.88864223, 0.43707946, -0.13883994 }, { 0.49252849, -0.43814774, 0.75195894 }, { -0.01398277, 0.69598571, 0.71791947 }, { -0.67265622, 0.27228276, -0.68803758 }, { -0.91724038, -0.01083918, -0.39818663 }, { -0.24468025, 0.75690032, 0.60599792 }, { -0.49070434, -0.48530058, 0.72366608 }, { 0.67110346, -0.55453760, -0.49204492 }, { -0.95532877, -0.26328211, -0.13427388 }, { -0.66012945, 0.41730904, 0.62456567 }, { 0.96822786, -0.03273592, 0.24791766 }, { 0.91952853, 0.23575545, -0.31446248 }, { 0.63712542, 0.06762652, 0.76778763 }, { -0.21680947, 0.65843559, 0.72073312 }, { 0.06143588, 0.47272235, -0.87906724 }, { 0.70541616, -0.21884659, 0.67416186 }, { -0.04396589, -0.67487644, -0.73661984 }, { -0.65032618, 0.75012744, 0.11993615 }, { -0.78840054, 0.58187068, -0.19962741 }, { 0.99318416, 0.11467779, 0.02083796 }, { 0.76775820, 0.46845611, -0.43714554 }, { -0.70891635, -0.54302381, -0.45006972 }, { 0.55548849, -0.71825576, -0.41897638 }, { -0.62167600, 0.77500231, 0.11353575 }, { 0.38413022, -0.79687865, 0.46629218 }, { -0.56271512, 0.54186596, -0.62428597 }, { 0.62019121, -0.70563211, -0.34270424 }, { 0.85913131, 0.50529005, 0.08108862 }, { 0.54973106, -0.66129569, -0.51037612 }, { -0.74254469, -0.49670185, -0.44934914 }, { -0.75780366, 0.59195518, -0.27444976 }, { -0.40050287, 0.04302113, -0.91528500 }, { -0.60859484, 0.35063171, 0.71180736 }, { -0.57297537, 0.81938865, -0.01736289 }, { 0.98721933, 0.09373543, -0.12888621 }, { 0.30397213, 0.87942861, 0.36634172 }, { 0.32615126, -0.64515144, -0.69094498 }, { 0.83015604, 0.30783918, 0.46483974 }, { 0.42822875, -0.04288671, -0.90265213 }, { 0.16585965, 0.53714643, 0.82702133 }, { -0.37193298, 0.88497229, 0.28016051 }, { 0.73544877, 0.67744273, 0.01365471 }, { -0.66150496, 0.09327263, -0.74411787 }, { 0.41664753, -0.23786298, -0.87739731 }, { -0.78513086, -0.42653313, 0.44904233 }, { 0.08029855, 0.84803303, 0.52382451 }, { -0.09507221, 0.50524394, -0.85772364 }, { 0.66939507, -0.17805679, 0.72125309 }, { -0.76923153, 0.41652205, -0.48455364 }, { 0.51989556, 0.79632686, 0.30914743 }, { 0.85617969, -0.51024476, 0.08128121 }, { 0.71830013, 0.03208003, 0.69499337 }, { -0.96000528, -0.11640072, -0.25463844 }, { 0.66084196, -0.19355993, 0.72513617 }, { -0.57661819, -0.54757438, 0.60636109 }, { 0.65123443, -0.64818909, -0.39464494 }, { 0.36952748, -0.22540306, -0.90146708 }, { 0.34048182, -0.33515083, 0.87849078 }, { 0.11132435, -0.75280467, 0.64876191 }, { 0.67563520, 0.64934616, -0.34909404 }, { 0.23316576, 0.69276343, -0.68243135 }, { 0.30368064, -0.87532007, 0.37628825 }, { -0.27080673, -0.74246398, 0.61270789 }, { -0.21655683, -0.49565083, -0.84109060 }, { -0.98776592, -0.14473189, 0.05806181 }, { 0.64562720, 0.38598860, 0.65892209 }, { -0.63746045, -0.57205546, 0.51613635 }, { 0.06117405, -0.78423981, -0.61743474 }, { 0.74829362, 0.59119862, 0.30090006 }, { -0.42571462, 0.51302568, -0.74536683 }, { -0.56331794, 0.48608227, -0.66812943 }, { -0.75919788, -0.64885422, 0.05105673 }, { 0.14385006, -0.53933953, 0.82971081 }, { -0.77031548, -0.28344830, 0.57120148 }, { -0.98358057, 0.17900745, 0.02292584 }, { -0.25051205, 0.10358351, 0.96255606 }, { -0.32867861, -0.83176115, -0.44737430 }, { -0.36281449, -0.92995082, -0.05964161 }, { -0.53796595, -0.03614791, 0.84219117 }, { 0.92960703, 0.10461247, 0.35339354 }, { 0.64021850, 0.61360003, 0.46218532 }, { 0.22343529, 0.69409296, 0.68433299 }, { 0.01781074, 0.89088149, 0.45388648 }, { -0.63004672, -0.26934609, 0.72835007 }, { 0.48560056, -0.35192051, -0.80021500 }, { 0.62050161, 0.57366872, 0.53467931 }, { 0.00265452, 0.71539198, -0.69871830 }, { 0.64229521, 0.41380752, 0.64515130 }, { 0.23080049, -0.43573115, 0.86998247 }, { 0.14620517, 0.61171896, -0.77744708 }, { -0.27436021, -0.61900378, 0.73590814 }, { 0.69959023, 0.71050058, 0.07591065 }, { 0.70362024, 0.62044755, -0.34635731 }, { -0.29622242, -0.71700405, -0.63099721 }, { 0.31094340, -0.84299864, -0.43893905 }, { 0.07704196, -0.46344069, -0.88277248 }, { -0.94533514, -0.04418570, 0.32309301 }, { 0.65845027, -0.36172634, -0.65999795 }, { 0.76069300, -0.18013255, 0.62361721 }, { 0.18607691, -0.45751624, -0.86951382 }, { -0.67626808, -0.39178398, -0.62383235 }, { -0.58782719, 0.55645189, -0.58721418 }, { 0.37531624, 0.80640206, 0.45700485 }, { 0.32610790, -0.50457786, 0.79940905 }, { 0.62915643, 0.76094546, -0.15850616 }, { 0.62803678, -0.75273385, -0.19738681 }, { 0.42539119, -0.89094420, 0.15893638 }, { 0.17668676, -0.40626331, 0.89651096 }, { 0.02778178, -0.78957083, -0.61303024 }, { -0.25950053, -0.16244258, 0.95198313 }, { -0.44117714, 0.73727502, -0.51165249 }, { -0.30827444, 0.94136275, 0.13712420 }, { 0.97572111, -0.04258044, -0.21483768 }, { 0.55607688, 0.60474525, -0.57014181 }, { -0.67430479, 0.12532345, 0.72774109 }, { -0.31325824, -0.81393777, -0.48925921 }, { -0.34811982, -0.70956566, 0.61264114 }, { 0.22583632, 0.72502572, -0.65064250 }, { 0.76936493, 0.63742123, -0.04209247 }, { -0.55303394, -0.38417341, -0.73929984 }, { -0.20953448, -0.92686077, -0.31148742 }, { -0.18786352, 0.39920999, 0.89740664 }, { 0.46307517, -0.88470611, 0.05344618 }, { -0.70328479, 0.30353783, 0.64284935 }, { 0.85916171, 0.15710234, 0.48699077 }, { -0.26398391, 0.42122173, 0.86768932 }, { 0.82468427, 0.55134621, 0.12614757 }, { 0.05993298, 0.63414584, 0.77088721 }, { -0.57291678, 0.81909656, -0.02910645 }, { 0.64075141, 0.74416542, -0.18882655 }, { 0.67112660, -0.55747979, -0.48867716 }, { 0.89932863, 0.23426637, -0.36922525 }, { 0.59146340, -0.44386974, 0.67316469 }, { 0.46684506, 0.19781570, -0.86193076 }, { 0.18536399, 0.76259887, 0.61974443 }, { 0.84144446, -0.53500771, -0.07574940 }, { 0.31212800, 0.82898453, -0.46406977 }, { -0.88440729, -0.27020677, -0.38054178 }, { 0.20051055, 0.77523319, 0.59900670 }, { 0.48749115, 0.44082691, -0.75367368 }, { 0.24971103, -0.88242146, 0.39871892 }, { -0.29777449, -0.95158243, -0.07629705 }, { -0.37776905, -0.58777023, 0.71541366 }, { 0.22179317, 0.14730715, -0.96390269 }, { 0.58348153, 0.68630504, 0.43420582 }, { -0.96759942, 0.14572096, 0.20619593 }, { -0.15181654, 0.47495708, 0.86681458 }, { 0.26580537, 0.74350537, -0.61363447 }, { -0.39189499, 0.72950601, 0.56057051 }, { -0.01888074, 0.73557245, -0.67718290 }, { 0.73486517, 0.20569655, -0.64626783 }, { -0.26354754, -0.23595215, -0.93534447 }, { -0.62584298, -0.65116585, 0.42930594 }, { -0.66666701, 0.61406968, 0.42246127 }, { 0.71799877, 0.67101619, 0.18497305 }, { 0.80098282, -0.45681211, -0.38697444 }, { 0.13205975, 0.91574792, -0.37942847 }, { 0.68891728, 0.72389791, -0.03694308 }, { 0.50346408, 0.46323331, -0.72934136 }, { 0.84557323, 0.53378861, -0.00869685 }, { 0.08666773, -0.81879883, 0.56750082 }, { -0.50044423, 0.65858460, -0.56198033 }, { 0.35669785, 0.32248792, -0.87679427 }, { -0.97346629, -0.22237373, -0.05397509 }, { -0.53358835, -0.29312069, -0.79332448 }, { 0.12615748, 0.47083230, 0.87315591 }, { -0.97022570, 0.19065350, 0.14937651 }, { -0.57777643, 0.36008023, 0.73247295 }, { 0.60132454, 0.72398065, 0.33802488 }, { 0.19047827, -0.94729649, -0.25757988 }, { -0.45904437, 0.69100108, 0.55838676 }, { 0.39148612, -0.51878308, 0.76000180 }, { 0.04137949, -0.75662546, -0.65253786 }, { 0.20020542, -0.76439245, -0.61288006 }, { 0.07933739, -0.21074410, 0.97431643 }, { -0.40807425, 0.80614533, 0.42849166 }, { -0.95397962, -0.09342040, -0.28494828 }, { -0.31365384, 0.14377778, -0.93858895 }, { 0.84618575, -0.39191761, 0.36106822 }, { -0.90177404, 0.07825801, -0.42506385 }, { -0.19689944, -0.97296956, 0.12066831 }, { 0.61145370, 0.51715369, -0.59889601 }, { -0.57329050, -0.80450317, -0.15528251 }, { -0.27749150, -0.76245284, 0.58452044 }, { -0.74877628, 0.66124357, 0.04572758 }, { 0.60284514, 0.58208119, 0.54567318 }, { 0.17695878, -0.67360184, 0.71759748 }, { -0.83953853, 0.41240184, 0.35369447 }, { 0.37802442, -0.60322405, 0.70229501 }, { 0.51050450, -0.42970396, 0.74480847 }, { -0.48366785, -0.20902730, -0.84992529 }, { -0.87971286, -0.14820690, -0.45181855 }, { -0.11520437, -0.59044778, -0.79881123 }, { 0.38877393, 0.92116844, -0.01742240 }, { 0.94330646, -0.27385756, -0.18754989 }, { -0.66585548, 0.46928680, -0.58000550 }, { 0.20659390, -0.97226278, -0.10965425 }, { 0.70114934, 0.70875543, -0.07781609 }, { 0.50683262, 0.81003447, 0.29489803 }, { -0.75501572, 0.56485827, -0.33299610 }, { -0.43930454, -0.48824131, 0.75407688 }, { -0.43442626, 0.51174617, 0.74120826 }, { -0.97139119, -0.22722375, 0.06905442 }, { -0.27189670, 0.51890879, -0.81043559 }, { 0.34109465, 0.91412005, -0.21917797 }, { 0.23216825, -0.66497033, 0.70986785 }, { 0.87281521, 0.48669099, 0.03640737 }, { -0.60266004, -0.34235001, -0.72083101 }, { -0.01994494, -0.52747354, 0.84933731 }, { -0.27000504, -0.77679344, -0.56893693 }, { -0.12330809, 0.85744248, -0.49958734 }, { -0.69270982, 0.61145042, -0.38246763 }, { -0.60277814, 0.55015465, 0.57791727 }, { 0.64946165, -0.22132925, -0.72747023 }, { 0.24257305, 0.26557728, 0.93307397 }, { -0.66814908, 0.64881591, -0.36416303 }, { -0.74538727, -0.44634982, -0.49514609 }, { 0.25115903, 0.38535072, -0.88793241 }, { -0.61584597, -0.69782826, -0.36574509 }, { 0.13745929, 0.92666227, 0.34985995 }, { -0.50342245, -0.82980249, -0.24081874 }, { 0.11249648, 0.99333196, -0.02522230 }, { 0.83241096, 0.21922825, -0.50895085 }, { 0.50175590, 0.86108612, 0.08229039 }, { -0.35527286, -0.56925625, -0.74143679 }, { 0.31441654, -0.91653449, 0.24719782 }, { 0.62936968, 0.70222610, 0.33282475 }, { 0.77755375, -0.56236234, -0.28135169 }, { -0.80098254, -0.37712493, 0.46497715 }, { 0.59310190, -0.68181911, -0.42819720 }, { 0.15392285, -0.98282954, 0.10175390 }, { -0.96618662, 0.25781497, 0.00385483 }, { 0.33750940, -0.86020836, 0.38226820 }, { -0.09597976, -0.40348179, -0.90993974 }, { -0.70910783, 0.60681107, -0.35909108 }, { 0.41726791, -0.90380775, 0.09496860 }, { -0.03646000, 0.99581799, -0.08376873 }, { 0.35348135, -0.70899268, 0.61022972 }, { 0.66002017, 0.74115740, -0.12271547 }, { 0.18515044, 0.96534454, -0.18392727 }, { -0.29364182, -0.88826809, -0.35320572 }, { 0.99692330, 0.02436644, -0.07449968 }, { -0.13529570, 0.35908874, 0.92344483 }, { -0.76888326, -0.29702475, 0.56621095 }, { -0.31931644, 0.72859881, 0.60595444 }, { 0.52827199, -0.82385659, 0.20539968 }, { -0.83281688, -0.27413556, 0.48090097 }, { -0.76899198, 0.23377782, 0.59497837 }, { -0.60599231, 0.54438401, -0.58001670 }, { -0.59616975, -0.18605791, 0.78100198 }, { -0.83753036, 0.32458912, -0.43952794 }, { 0.62016934, 0.71285793, 0.32745011 }, { -0.62489231, 0.01790151, 0.78050570 }, { -0.44050813, -0.31396367, 0.84105850 }, { 0.82831903, 0.51349534, 0.22407615 }, { -0.54638365, -0.42878084, -0.71945250 }, { -0.30690837, -0.54588407, -0.77962673 }, { -0.51419246, 0.49668914, 0.69921814 }, { 0.12759508, 0.79794754, 0.58906640 }, { 0.59812622, 0.53597438, 0.59579904 }, { 0.75450428, 0.31026344, 0.57832507 }, { -0.34806954, -0.09710281, 0.93242621 }, { -0.40140375, -0.85287390, 0.33388792 }, { 0.57290191, 0.32347021, -0.75309390 }, { -0.53362688, -0.81285892, 0.23345818 }, { -0.74679447, 0.64927639, 0.14400758 }, { -0.80251380, -0.59638095, 0.01736004 }, { -0.56868668, 0.61763086, -0.54325646 }, { -0.72976559, 0.04179896, -0.68241852 }, { 0.57244144, -0.09255805, -0.81470474 }, { 0.97741613, 0.07186077, -0.19873032 }, { 0.72298477, 0.06613486, 0.68769121 }, { -0.42596585, -0.65375247, -0.62542850 }, { 0.64840687, 0.16136696, -0.74399545 }, { 0.34352050, -0.92950264, 0.13423304 }, { 0.74687236, 0.45351768, -0.48631613 }, { -0.51873425, -0.73762481, -0.43223191 }, { 0.29790392, 0.44209023, 0.84605525 }, { -0.67740274, 0.46717430, -0.56821977 }, { -0.36224935, -0.42773177, 0.82814307 }, { -0.44192484, 0.73919980, 0.50821855 }, { -0.92680658, -0.18163204, -0.32869343 }, { -0.71384582, -0.70014113, 0.01505111 }, { 0.70600729, -0.70152253, 0.09705589 }, { 0.90031692, -0.36943663, 0.23010002 }, { 0.25264659, -0.65121757, -0.71560141 }, { 0.96727807, 0.19056552, 0.16750499 }, { -0.65770755, -0.65887301, 0.36511251 }, { 0.05208955, -0.10417910, 0.99319353 }, { -0.65282932, -0.40832320, 0.63803294 }, { -0.00628739, -0.99502463, -0.09943061 }, { -0.51900794, -0.62993523, 0.57776497 }, { 0.83046729, -0.16527060, 0.53198657 }, { 0.66869945, -0.56606479, -0.48209097 }, { -0.54299772, -0.48639669, -0.68452300 }, { 0.52407156, -0.42268239, 0.73938393 }, { 0.71446999, -0.30844019, -0.62801057 }, { -0.67320882, 0.39978543, 0.62206228 }, { -0.53289859, -0.05079670, -0.84465306 }, { 0.67708925, -0.71979254, 0.15313018 }, { -0.61369683, 0.65230332, 0.44483321 }, { -0.26453665, -0.69129417, -0.67240816 }, { 0.85045794, 0.03075140, 0.52514345 }, { -0.76757885, -0.10940324, 0.63154861 }, { 0.72754104, -0.17450402, -0.66350011 }, { -0.34075755, -0.67303082, 0.65644026 }, { 0.70044829, 0.13095479, -0.70158609 }, { 0.43950040, -0.88211196, 0.16946353 }, { -0.35706397, 0.48041126, 0.80106825 }, { -0.77687193, 0.33320308, -0.53427120 }, { 0.51274543, 0.77662232, 0.36599165 }, { 0.33380578, 0.79591657, 0.50506486 }, { -0.76587225, -0.03670574, 0.64194422 }, { -0.23491078, 0.43695339, -0.86826762 }, { 0.25698923, -0.62346599, 0.73840822 }, { 0.13009757, -0.93331414, -0.33466303 }, { -0.54841950, 0.64297666, -0.53461861 }, { 0.69823865, 0.51710521, -0.49504039 }, { -0.64058874, -0.76638614, -0.04794108 }, { -0.99383538, 0.10829476, 0.02373760 }, { 0.53702674, -0.26620457, -0.80046075 }, { 0.95618706, 0.14762618, 0.25280983 }, { 0.46882627, -0.32353926, -0.82190284 }, { 0.37771393, -0.17580406, -0.90907927 }, { -0.38046162, 0.14393199, -0.91352752 }, { 0.99319923, -0.09757638, -0.06351493 }, { 0.50851715, 0.83898531, 0.19368521 }, { 0.32506349, -0.66811447, 0.66929574 }, { -0.48035988, -0.63636898, -0.60356351 }, { -0.06435942, 0.26733173, 0.96145286 }, { 0.60598929, -0.04278909, 0.79432114 }, { -0.24869997, 0.88809619, -0.38656626 }, { 0.37370464, 0.04464997, -0.92647246 }, { -0.48971589, -0.59472073, 0.63756224 }, { 0.69752714, 0.12358938, 0.70581978 }, { 0.52787180, 0.64468756, -0.55292794 }, { -0.10489693, 0.16880171, -0.98005235 }, { -0.63336451, -0.45121552, -0.62869226 }, { 0.54866356, 0.65678858, 0.51729785 }, { -0.85968969, 0.49557488, -0.12385145 }, { -0.47320716, -0.15150042, 0.86782637 }, { 0.19900943, -0.10259966, 0.97461200 }, { -0.52893938, 0.84740153, 0.04619294 }, { 0.65121421, -0.49243156, -0.57743503 }, { 0.45693424, 0.73751862, 0.49726994 }, { -0.47661222, -0.77374319, -0.41732752 }, { -0.04808540, 0.90050093, 0.43218730 }, { 0.91129978, -0.31013948, 0.27082507 }, { 0.58778939, -0.42668247, -0.68734686 }, { 0.82297839, -0.34772114, -0.44921773 }, { 0.29494223, -0.86544442, -0.40498769 }, { -0.39161493, 0.79055212, 0.47081322 }, { 0.79434783, -0.59398096, -0.12727195 }, { 0.77174313, 0.29796481, 0.56180915 }, { 0.78482345, -0.44974833, 0.42635500 }, { -0.58988658, -0.54565594, 0.59522551 }, { -0.97115669, 0.13450224, 0.19688532 }, { 0.42988246, 0.15513097, -0.88945796 }, { -0.30013401, -0.45617888, 0.83774722 }, { 0.50990724, -0.38026491, -0.77161727 }, { -0.68923129, 0.29274099, -0.66276914 }, { -0.81531731, -0.42344291, -0.39490984 }, { 0.26048163, -0.96468719, -0.03908901 }, { 0.32147033, 0.32614689, -0.88897977 }, { 0.70055924, -0.70700997, 0.09671429 }, { -0.58890140, -0.17999683, 0.78790626 }, { 0.70222863, 0.69308083, -0.16283095 }, { -0.75366081, -0.65098223, -0.09065052 }, { -0.19053922, -0.78772343, -0.58582130 }, { -0.58846812, 0.34955220, 0.72905317 }, { -0.60563594, -0.40529546, -0.68479244 }, { -0.71315551, 0.69904447, 0.05240265 }, { -0.45479055, 0.81186703, -0.36611129 }, { -0.29059626, 0.05377439, 0.95533352 }, { 0.56290473, 0.78501299, 0.25863657 }, { -0.43010366, -0.47609705, 0.76703484 }, { 0.63372606, -0.06214270, -0.77105744 }, { 0.28788198, -0.78226752, -0.55243234 }, { -0.55506056, 0.67832002, -0.48144545 }, { -0.47229498, 0.84794057, -0.24069533 }, { -0.27628326, 0.87423025, -0.39923556 }, { 0.97754921, -0.01429369, -0.21022189 }, { -0.78483628, 0.30941478, -0.53693064 }, { -0.35769150, -0.53057471, 0.76847073 }, { 0.56804560, 0.59946775, -0.56388173 }, { 0.80328735, -0.57298006, -0.16255243 }, { -0.34327107, -0.35133498, -0.87105034 }, { 0.80357102, -0.01979284, -0.59487970 }, { -0.87804782, 0.46346126, 0.11931336 }, { -0.11872912, -0.93845057, 0.32436695 }, { 0.68065237, 0.69467363, 0.23268195 }, { -0.71974506, -0.36713686, 0.58921776 }, { 0.52822234, 0.82314813, -0.20834663 }, { -0.67654042, -0.73158271, 0.08414148 }, { -0.39062516, 0.89358947, -0.22115571 }, { -0.62142505, 0.43386674, -0.65237302 }, { -0.48099381, -0.18611372, -0.85674188 }, { 0.05036514, -0.74987003, 0.65966528 }, { -0.49984895, -0.80920390, -0.30877188 }, { 0.50496868, 0.85618105, 0.10936472 }, { -0.54084761, 0.24485715, 0.80469176 }, { -0.81973873, -0.50777759, 0.26493457 }, { 0.72082268, -0.43713926, -0.53788839 }, { 0.91725234, -0.15187152, 0.36821621 }, { -0.17151325, 0.57985483, 0.79646192 }, { -0.74076471, 0.06061813, -0.66902398 }, { 0.32541463, -0.08200506, 0.94200875 }, { -0.10818362, 0.99402161, -0.01474260 }, { -0.61710380, -0.78296663, 0.07839742 }, { -0.38878719, -0.57916742, 0.71652608 }, { 0.37911419, 0.92170992, 0.08199541 }, { -0.60810067, -0.43108035, 0.66662082 }, { -0.11745691, 0.38395577, 0.91585034 }, { 0.47694470, -0.81050760, 0.34000174 }, { 0.40287244, 0.88894800, 0.21786522 }, { 0.46780815, -0.54966937, 0.69211207 }, { 0.07109649, 0.79259959, -0.60558333 }, { -0.52073054, -0.06778631, 0.85102569 }, { -0.36866700, 0.77676019, -0.51061556 }, { -0.71702100, -0.35727116, 0.59853004 }, { -0.59010862, -0.73536014, -0.33319257 }, { -0.66875911, 0.58597660, 0.45759445 }, { -0.59798034, -0.69169805, 0.40493619 }, { -0.20490060, 0.79048994, 0.57718402 }, { 0.48765302, 0.85851673, 0.15856717 }, { 0.88918101, 0.10371433, 0.44564612 }, { 0.48664272, 0.83596000, 0.25367252 }, { -0.24554119, 0.50230038, -0.82909822 }, { 0.03554055, -0.41884154, -0.90736356 }, { -0.03701100, -0.61772404, 0.78552352 }, { 0.42824046, 0.20582938, -0.87991158 }, { -0.06839464, -0.43555129, -0.89756183 }, { -0.40866952, -0.70331213, -0.58167111 }, { -0.74822692, 0.38256599, 0.54203297 }, { 0.71541445, 0.51615594, 0.47091953 }, { 0.60759905, -0.70288934, -0.36982423 }, { -0.01648745, -0.13394229, -0.99085197 }, { -0.64568452, -0.13342451, 0.75185730 }, { -0.42008783, 0.33302268, 0.84416948 }, { -0.63557180, -0.46817632, 0.61388877 }, { -0.82478405, -0.45636029, 0.33386606 }, { -0.66628051, 0.24058840, 0.70582399 }, { -0.60499178, -0.78374178, -0.14047697 }, { 0.63041860, -0.60894989, -0.48140672 }, { -0.07945150, -0.91288865, -0.40040202 }, { -0.66942344, 0.18523930, 0.71941550 }, { -0.00849762, -0.47038898, 0.88241827 }, { 0.66223413, -0.33585751, 0.66981019 }, { 0.82512667, -0.23099667, -0.51556427 }, { -0.75186864, 0.65450118, -0.07950940 }, { 0.87383910, 0.08193441, 0.47926192 }, { -0.26554211, 0.78650504, 0.55758158 }, { -0.49574252, 0.70523568, 0.50683527 }, { -0.49212635, -0.64694353, 0.58247381 }, { 0.32264136, 0.78159510, -0.53386482 }, { 0.71510371, -0.22498049, 0.66182359 }, { 0.61434883, -0.51790453, 0.59527340 }, { -0.82551670, -0.14228251, -0.54614821 }, { -0.46251954, 0.64306734, -0.61036060 }, { -0.52117891, -0.69061769, 0.50141773 }, { 0.27468699, -0.88951139, -0.36512537 }, { 0.65713642, -0.75365863, -0.01305358 }, { 0.94136220, -0.21960140, -0.25614924 }, { -0.85554460, 0.30842011, -0.41583708 }, { -0.35233681, -0.15379949, 0.92314922 }, { -0.74432132, 0.44164975, -0.50093040 }, { 0.53994954, -0.79953954, -0.26304184 }, { 0.42964607, 0.11880600, 0.89514769 }, { -0.87921789, 0.18018271, 0.44103298 }, { -0.80353079, 0.36514238, 0.47011628 }, { 0.50404538, 0.65465655, -0.56334986 }, { -0.92083981, -0.30381360, -0.24444087 }, { 0.13956423, -0.96009192, -0.24237437 }, { -0.71698508, 0.68682212, 0.11919639 }, { -0.76698836, 0.61675487, -0.17703754 }, { -0.21874818, -0.57847904, -0.78581883 }, { 0.55494484, -0.79971185, 0.22912262 }, { 0.79660662, -0.41090893, 0.44336412 }, { 0.66489466, 0.00947646, -0.74687703 }, { -0.59920476, 0.36935905, 0.71030103 }, { -0.57524868, -0.51402380, -0.63629277 }, { 0.20536135, -0.69296940, 0.69110066 }, { -0.05544564, -0.99802158, 0.02964287 }, { 0.13201661, 0.16519726, -0.97738502 }, { 0.46510187, 0.64584669, -0.60544390 }, { -0.80108393, -0.59762086, 0.03337417 }, { -0.39806873, -0.44410006, -0.80269323 }, { 0.95136791, -0.21916666, -0.21648342 }, { -0.82086395, 0.17982074, 0.54207645 }, { 0.79513089, 0.37056075, 0.48005374 }, { 0.77112323, 0.56616567, 0.29124800 }, { 0.81176337, -0.24837815, 0.52853432 }, { -0.81842091, 0.50060656, 0.28209979 }, { -0.38248924, -0.72602893, 0.57147525 }, { 0.46198573, 0.37950267, 0.80159024 }, { -0.59524911, 0.04222053, 0.80243126 }, { -0.52273882, 0.79497643, -0.30782561 }, { -0.79922245, 0.45390541, 0.39397125 }, { 0.38051244, -0.76512679, 0.51941436 }, { 0.83818590, 0.22605420, 0.49633043 }, { 0.63218067, 0.48127057, 0.60722832 }, { 0.59242495, 0.18424992, -0.78427333 }, { 0.85249021, -0.48552132, 0.19372531 }, { -0.43548364, -0.58439144, 0.68471939 }, { 0.73179011, 0.29594379, -0.61392223 }, { -0.45280534, -0.80755156, 0.37792566 }, { 0.55557939, 0.30092870, -0.77509578 }, { 0.42575514, 0.70893498, 0.56226662 }, { 0.60528173, -0.51550786, 0.60653580 }, { -0.51076670, 0.84729685, -0.14562083 }, { -0.33474095, 0.69713420, -0.63399716 }, { -0.48650711, 0.74561924, 0.45537104 }, { -0.41670009, -0.87381546, -0.25061440 }, { 0.92586094, -0.34254116, -0.15952140 }, { -0.10682502, 0.59910669, 0.79351092 }, { -0.44718479, -0.59299328, 0.66961536 }, { 0.69862855, -0.48858264, 0.52269031 }, { -0.74718902, 0.51933770, -0.41472512 }, { -0.56931667, 0.42835158, 0.70170753 }, { 0.05154068, 0.16647211, 0.98469823 }, { 0.74568360, -0.66371406, 0.05864824 }, { 0.64686641, 0.41668704, 0.63869849 }, { 0.27796256, -0.73021674, 0.62411563 }, { 0.77079499, -0.62615383, 0.11750087 }, { -0.06833979, 0.90160690, 0.42712371 }, { -0.98003087, -0.09480635, 0.17478914 }, { -0.85191651, 0.47279136, 0.22518122 }, { 0.52473004, -0.19693989, -0.82817454 }, { 0.16081399, 0.75081437, -0.64063768 }, { 0.71441816, 0.52488995, -0.46270642 }, { -0.23333515, -0.88652173, 0.39954216 }, { 0.54760612, -0.74897952, -0.37303782 }, { 0.48186221, -0.57810371, 0.65848683 }, { -0.21255857, -0.53489421, -0.81774509 }, { 0.77930308, 0.57549405, -0.24797842 }, { 0.60279872, -0.76604104, -0.22319235 }, { 0.37230136, -0.52720909, 0.76383393 }, { -0.13321231, -0.92277683, 0.36157627 }, { -0.47833070, -0.49076061, -0.72825392 }, { 0.28828612, -0.93601402, 0.20191301 }, { -0.66460360, -0.65589055, 0.35792406 }, { 0.90686144, 0.30403802, 0.29182738 }, { -0.00682204, 0.42199214, 0.90657382 }, { -0.33221520, 0.26584830, -0.90496284 }, { -0.59515132, 0.55081686, 0.58514588 }, { 0.77123373, 0.59869357, -0.21625109 }, { -0.69765329, -0.61042387, 0.37505011 }, { 0.02426772, -0.55656860, -0.83044715 }, { 0.65180023, 0.75814507, 0.01930051 }, { -0.01531784, -0.78276243, 0.62213209 }, { 0.63847163, 0.03936370, 0.76863807 }, { 0.40703600, -0.09783879, -0.90815707 }, { -0.46223121, -0.64783550, -0.60551753 }, { 0.82788442, -0.46539053, 0.31307993 }, { -0.75467147, 0.24001984, 0.61062382 }, { -0.70062375, -0.69087941, 0.17835919 }, { 0.35457466, 0.88605939, -0.29862279 }, { 0.20159504, -0.88658663, -0.41632150 }, { -0.32096612, 0.72494426, -0.60945597 }, { 0.14147986, 0.53949815, -0.83001518 }, { 0.28297638, 0.93772862, 0.20146813 }, { 0.67192636, 0.43759891, -0.59751332 }, { 0.98497844, 0.01967209, 0.17155312 }, { 0.60388215, -0.68969665, 0.39955586 }, { 0.41200242, 0.85002960, 0.32818240 }, { -0.83375884, 0.39266173, -0.38815328 }, { -0.70938505, -0.58502714, -0.39308535 }, { -0.63048972, 0.77513872, 0.04053013 }, { 0.10261233, -0.69355480, -0.71305852 }, { 0.65702752, -0.38976767, -0.64528753 }, { -0.41388260, 0.33890875, 0.84489174 }, { 0.03028400, -0.46424256, -0.88519022 }, { 0.45068344, -0.52775066, -0.71997478 }, { 0.48930093, 0.41323002, -0.76800101 }, { 0.28350070, 0.66390322, 0.69199701 }, { 0.42450922, -0.60916900, 0.66985450 }, { 0.67306932, 0.51724488, -0.52861652 }, { 0.31095891, 0.94487804, -0.10251852 }, { -0.25569777, 0.90632689, -0.33643754 }, { -0.21431592, 0.07778980, -0.97366187 }, { 0.27676605, -0.87464593, 0.39798876 }, { 0.00288072, -0.88726140, -0.46125796 }, { 0.51138622, 0.12353356, 0.85042554 }, { 0.59734197, 0.76052363, 0.25453168 }, { -0.43336730, -0.76588813, 0.47498227 }, { 0.34180565, -0.68750195, -0.64071052 }, { -0.65078280, 0.51803512, 0.55508681 }, { -0.89824124, 0.40466264, -0.17149586 }, { 0.54253116, 0.81082175, -0.21960883 }, { -0.53994336, 0.54836630, 0.63855741 }, { 0.68778819, 0.33483595, -0.64407475 }, { -0.63530446, -0.39864092, 0.66141792 }, { 0.80728009, -0.58358794, -0.08788616 }, { 0.94835277, 0.26419320, 0.17558181 }, { -0.15823843, -0.51165316, 0.84449490 }, { 0.17510951, -0.22389002, 0.95875436 }, { 0.13697442, -0.88598087, 0.44303037 }, { -0.73457485, -0.23332652, -0.63714874 }, { 0.95521505, -0.11801760, 0.27135964 }, { -0.40184319, -0.90170455, -0.15953355 }, { 0.16857866, -0.70975159, -0.68398386 }, { -0.55230772, 0.37144476, 0.74631426 }, { 0.29875717, -0.61848962, -0.72678383 }, { 0.62465217, -0.76131685, 0.17379963 }, { 0.75759704, 0.19352541, 0.62337360 }, { -0.10375594, 0.61563856, 0.78116827 }, { 0.52725731, 0.25296549, 0.81117704 }, { -0.71292545, -0.53989924, -0.44748867 }, { 0.78246146, 0.54867457, 0.29446609 }, { 0.31458005, 0.63401883, -0.70644145 }, { -0.09360697, -0.99481997, -0.03963538 }, { -0.59000956, 0.10880136, -0.80003186 }, { 0.49713243, 0.77379744, -0.39255173 }, { -0.92985377, 0.17383167, 0.32427537 }, { 0.73574353, -0.63730495, -0.22918086 }, { -0.04383386, -0.80273910, -0.59471719 }, { 0.68411849, 0.52929683, -0.50182344 }, { -0.19561815, -0.57428906, -0.79493749 }, { 0.90257811, -0.06366895, -0.42579222 }, { 0.62294256, 0.39027502, -0.67795868 }, { -0.39046281, -0.70398950, 0.59324327 }, { 0.70990020, 0.62433400, -0.32595821 }, { -0.99157404, 0.01300690, 0.12888658 }, { -0.55765988, -0.46179257, 0.68975581 }, { -0.53736280, -0.34635255, -0.76894807 }, { 0.25083685, 0.44726649, -0.85850659 }, { 0.45758528, 0.86982087, -0.18446507 }, { -0.18615519, 0.23441065, -0.95414773 }, { 0.56359579, -0.41325118, -0.71525048 }, { -0.48542469, 0.59678985, -0.63890903 }, { -0.72243931, -0.40815930, 0.55811059 }, { -0.23748605, 0.68466361, -0.68908354 }, { -0.69257361, 0.27959985, -0.66495543 }, { -0.10352601, -0.17369566, -0.97934273 }, { 0.00192480, -0.09194122, 0.99576258 }, { 0.36297645, 0.86362173, 0.34986513 }, { -0.71118388, -0.10242990, 0.69550385 }, { 0.45146824, 0.43080300, 0.78139952 }, { -0.13265094, -0.68773403, -0.71374059 }, { 0.56016516, -0.56270148, -0.60793259 }, { -0.95871022, -0.27465634, -0.07374694 }, { -0.84169709, 0.06533746, -0.53598230 }, { 0.69711911, -0.61618111, -0.36653212 }, { -0.01620384, 0.59778204, -0.80149490 }, { -0.34911215, 0.65899531, -0.66621760 }, { -0.19279427, -0.50540811, -0.84106659 }, { -0.60506152, 0.72292944, 0.33357695 }, { 0.79789244, -0.59553505, 0.09330415 }, { -0.48173680, -0.74189415, 0.46639331 }, { 0.84140763, 0.31839867, 0.43664115 }, { 0.79614481, 0.60391839, -0.03789486 }, { 0.19384456, 0.57096572, 0.79776089 }, { 0.83441754, -0.25078854, -0.49076723 }, { -0.62605441, 0.72550166, 0.28583776 }, { 0.55337866, -0.75558589, 0.35051679 }, { 0.80543476, -0.01571309, 0.59247611 }, { -0.00851542, 0.98991715, 0.14139139 }, { -0.94076275, -0.29730096, -0.16302633 }, { -0.75465549, -0.41353736, -0.50939371 }, { 0.37739255, -0.63080384, 0.67798332 }, { 0.47325376, -0.73145333, -0.49092453 }, { 0.12930721, -0.49066326, -0.86170135 }, { 0.71173142, -0.11663112, 0.69270165 }, { 0.41952295, -0.63051086, -0.65303641 }, { 0.85916103, 0.42641569, 0.28286390 }, { 0.54792224, -0.66418740, 0.50856299 }, { 0.28479416, 0.43856869, 0.85237890 }, { -0.59050384, -0.68486024, -0.42693285 }, { 0.54884141, 0.60847988, 0.57317130 }, { 0.87567478, 0.25649070, -0.40915304 }, { 0.02961573, 0.33496172, 0.94176619 }, { 0.67428181, 0.70665199, 0.21444580 }, { 0.23609059, -0.51982231, 0.82100305 }, { 0.93726653, 0.00671493, 0.34854893 }, { -0.39891590, -0.91536143, -0.05458531 }, { 0.93359117, -0.35793085, 0.01711843 }, { 0.53572079, -0.56879583, 0.62407896 }, { -0.61516933, -0.36856434, -0.69694119 }, { 0.74630703, -0.65946218, -0.09019675 }, { 0.50607373, -0.59204544, -0.62719342 }, { -0.89793356, 0.43675114, 0.05444050 }, { -0.91682171, 0.07126199, 0.39288634 }, { -0.61178292, -0.15203616, -0.77627744 }, { -0.14028895, 0.63023583, 0.76362413 }, { 0.71475895, -0.54060748, 0.44369268 }, { -0.31764961, 0.92630790, -0.20261391 }, { 0.59833443, -0.58864018, -0.54359788 }, { -0.81450219, 0.22699691, -0.53390879 }, { 0.00452737, -0.06652318, 0.99777461 }, { 0.59311614, 0.19797584, -0.78039657 }, { -0.71375488, -0.02586188, 0.69991795 }, { -0.75600145, -0.26384588, -0.59903853 }, { 0.25716644, 0.77480857, -0.57752671 }, { 0.71712423, 0.61984999, -0.31862018 }, { -0.28194922, -0.55108799, 0.78537040 }, { 0.57068285, -0.67066160, 0.47385030 }, { 0.48969101, -0.22604767, -0.84208382 }, { -0.93763991, -0.34062289, 0.06933579 }, { -0.67376035, 0.15110895, -0.72333469 }, { -0.72414406, -0.65877431, -0.20403872 }, { -0.71204285, 0.41163046, -0.56881926 }, { 0.23641604, -0.86280490, 0.44685026 }, { 0.84208951, 0.19949878, -0.50108432 }, { -0.67481860, 0.67904385, -0.28899707 }, { 0.52167146, 0.66360202, 0.53618211 }, { -0.49330390, -0.48590434, 0.72149029 }, { -0.18240720, 0.04137646, -0.98235208 }, { 0.30714395, 0.55170433, 0.77542564 }, { -0.14577549, 0.95376355, -0.26283949 }, { -0.54373260, -0.69781662, -0.46626905 }, { 0.01799205, -0.81833182, 0.57446437 }, { 0.51019037, -0.56615200, -0.64743934 }, { 0.48463473, 0.59436639, 0.64176146 }, { 0.09115853, -0.52830175, -0.84414891 }, { -0.62962436, -0.38408030, -0.67531880 }, { 0.50864721, -0.48401592, -0.71204396 }, { -0.69669235, -0.63427804, -0.33512853 }, { 0.60735178, -0.18339351, 0.77297518 }, { 0.74102699, 0.67064566, 0.03336744 }, { -0.47352242, -0.76145583, -0.44267543 }, { 0.47751531, -0.79737827, -0.36900816 }, { 0.74175025, -0.64892413, 0.16942269 }, { 0.65484829, -0.70924167, -0.26105549 }, { 0.60455058, -0.64392987, -0.46890608 }, { -0.61878613, -0.77223405, 0.14407742 }, { -0.72376655, -0.65562529, 0.21521492 }, { 0.24420910, -0.52118606, -0.81775731 }, { 0.61291622, 0.39870471, -0.68217906 }, { 0.67751893, 0.65970488, 0.32520389 }, { -0.04366879, -0.96113671, 0.27259726 }, { 0.36541094, 0.62808212, 0.68701361 }, { -0.92572867, 0.10611717, -0.36299528 }, { 0.80766374, -0.02031352, -0.58929335 }, { -0.82117076, 0.53034081, 0.21075390 }, { -0.62778197, -0.51872129, 0.58036025 }, { 0.37696186, 0.57743439, -0.72420251 }, { -0.56818895, -0.47089866, -0.67484500 }, { -0.61126182, -0.69853192, 0.37203783 }, { 0.57901952, 0.81284241, -0.06343191 }, { -0.53287943, 0.70445351, 0.46881208 }, { 0.22300157, -0.93258969, 0.28380764 }, { -0.63832115, -0.40157013, -0.65672486 }, { -0.22074780, 0.50999380, 0.83137040 }, { -0.59081050, -0.13684815, -0.79511982 }, { -0.79824305, 0.52060475, -0.30295004 }, { -0.56871170, 0.76435226, 0.30386284 }, { 0.12786983, -0.64236825, -0.75565358 }, { -0.17631562, -0.76167939, -0.62350405 }, { 0.34713709, 0.61125835, -0.71123770 }, { -0.39238887, -0.52886732, 0.75254922 }, { 0.38116332, 0.71358998, -0.58779577 }, { -0.72949527, -0.67040404, 0.13562844 }, { -0.62057913, 0.45165344, -0.64100757 }, { -0.10668918, -0.98309252, -0.14881706 }, { 0.59490400, -0.46196716, -0.65778079 }, { 0.22433782, 0.49054463, 0.84204424 }, { 0.77498791, -0.57220981, 0.26827165 }, { 0.26474565, 0.93986866, -0.21576987 }, { -0.01328623, 0.99975439, 0.01773780 }, { 0.53097408, 0.47771884, 0.69989373 }, { 0.24635212, -0.37499947, -0.89369236 }, { 0.31300988, -0.54171955, 0.78010560 }, { 0.77494650, -0.52634980, 0.34987684 }, { 0.65518408, 0.51410661, -0.55355958 }, { 0.78000762, -0.61855443, -0.09475515 }, { 0.58176976, 0.62638121, 0.51883574 }, { -0.62371886, -0.59433046, 0.50768699 }, { 0.85206333, 0.17478222, -0.49339564 }, { 0.69974170, -0.42963013, 0.57077098 }, { -0.44953934, 0.62956163, -0.63369277 }, { 0.63562255, 0.51965998, -0.57090935 }, { -0.02766532, -0.52812789, -0.84871406 }, { 0.78698609, 0.04742916, -0.61514500 }, { 0.37827449, 0.78614098, 0.48876454 }, { 0.90534508, -0.25600916, -0.33883565 }, { -0.37701605, 0.47347359, -0.79604124 }, { -0.43802429, 0.40756165, -0.80126664 }, { -0.87945568, -0.47372426, -0.04629300 }, { -0.22787901, -0.82242670, 0.52123457 }, { 0.48721529, 0.74652617, -0.45312243 }, { -0.68473990, -0.68222429, 0.25632263 }, { -0.33289944, 0.62102263, -0.70958358 }, { -0.07838790, -0.85438083, -0.51370101 }, { 0.18575601, 0.96209034, 0.19969195 }, { 0.09048656, -0.68256793, -0.72519874 }, { 0.29506068, -0.68306389, -0.66810397 }, { -0.94937153, -0.17748927, 0.25921277 }, { -0.38725072, 0.16372291, 0.90732116 }, { -0.02691563, 0.81898594, 0.57318198 }, { -0.65244629, -0.52276924, -0.54865851 }, { 0.15270967, -0.00097578, 0.98827061 }, { 0.39108739, 0.55471383, -0.73439990 }, { 0.85379797, -0.05140234, 0.51806064 }, { 0.31443713, 0.14998906, -0.93735403 }, { -0.44277186, -0.56474741, -0.69642907 }, { -0.31521736, 0.37268196, 0.87278071 }, { 0.97997903, -0.16829529, 0.10638514 }, { -0.25174419, -0.84939324, 0.46384910 }, { 0.03867740, -0.72044135, 0.69243651 }, { -0.80207202, 0.48047131, 0.35472214 }, { 0.48200634, -0.48413492, 0.73026246 }, { -0.41800015, 0.44068588, -0.79440029 }, { 0.58661859, -0.43233611, 0.68480955 }, { 0.40830998, -0.53710845, 0.73810397 }, { 0.61242611, -0.72220206, -0.32149407 }, { -0.34159283, -0.62199145, -0.70458567 }, { -0.29885191, 0.58492128, -0.75402562 }, { -0.62924060, 0.77130626, -0.09561862 }, { 0.91118189, 0.27762192, 0.30442344 }, { 0.08064464, -0.99213777, -0.09570315 }, { 0.93083382, -0.34928416, -0.10746612 }, { 0.66101659, -0.67569323, 0.32633681 }, { 0.07148482, -0.97619739, -0.20476469 }, { 0.30440743, -0.78193565, -0.54397863 }, { -0.35656518, -0.19962907, 0.91269355 }, { 0.82151650, -0.31061678, 0.47815045 }, { -0.69709423, -0.71173375, -0.08657198 }, { -0.46044170, -0.78565215, -0.41321197 }, { -0.70275364, -0.21121895, 0.67935548 }, { 0.38087769, 0.63933041, 0.66797366 } }; //Simplex noise is evaluated on a tetrahedral grid, as opposed to a regular //cube-based one. The two "skew factors" are used to convert between views //of the grid so that calculations of which gridpoints to use are simpler. //These numbers are straightforward for 3D, but the geometry is not so kind in //2D or 4D private static final double skewF3 = 1.0 / 3.0; private static final double skewG3 = 1.0 / 6.0; //simplexNoise3D - given a vector in (x,y,z) returns the noise value for the //location public static final double simplexNoise3D(double V[]) { double C[][] = new double[4][3]; // Co-ordinates of four simplex shape corners in (x,y,z) double n = 0.0; // Noise total value int gi[] = new int[4]; // Hashed grid index for each corner, used to determine gradient double U[]; // Pointer to current gradient vector . . . int corner; // Iterator for which corner is being processed double t; // Temp double // Convert input co-ordinates ( x, y, z ) to // integer-based simplex grid ( i, j, k ) double skewIn = (V[_x_] + V[_y_] + V[_z_]) * skewF3; int i = (int) floor(V[_x_] + skewIn); int j = (int) floor(V[_y_] + skewIn); int k = (int) floor(V[_z_] + skewIn); t = (double) (i + j + k) * skewG3; // Cell origin co-ordinates in input space (x,y,z) double X0 = i - t; double Y0 = j - t; double Z0 = k - t; // This value of t finished with, not used later . . . // Point offset within cell, in input space (x,y,z) C[0][_x_] = V[_x_] - X0; C[0][_y_] = V[_y_] - Y0; C[0][_z_] = V[_z_] - Z0; // For the 3D case, the simplex shape is a slightly irregular tetrahedron. // The nested logic determines which simplex we are in, and therefore in which // order to get gradients for the four corners int i1, j1, k1; // Offsets for second corner of simplex in (i,j,k) coords int i2, j2, k2; // Offsets for third corner of simplex in (i,j,k) coords // The fourth corner is always i3 = 1, j3 = 1, k3 = 1, so no need to // calculate values if (C[0][_x_] >= C[0][_y_]) { if (C[0][_y_] >= C[0][_z_]) { i1 = 1; j1 = 0; k1 = 0; i2 = 1; j2 = 1; k2 = 0; } else { // y0<z0 if (C[0][_x_] >= C[0][_z_]) { i1 = 1; j1 = 0; k1 = 0; i2 = 1; j2 = 0; k2 = 1; } else { i1 = 0; j1 = 0; k1 = 1; i2 = 1; j2 = 0; k2 = 1; } } } else { // x0<y0 if (C[0][_y_] < C[0][_z_]) { i1 = 0; j1 = 0; k1 = 1; i2 = 0; j2 = 1; k2 = 1; } else { if (C[0][_x_] < C[0][_z_]) { i1 = 0; j1 = 1; k1 = 0; i2 = 0; j2 = 1; k2 = 1; } else { i1 = 0; j1 = 1; k1 = 0; i2 = 1; j2 = 1; k2 = 0; } // Y X Z order } } // A step of 1i in (i,j,k) is a step of (1-skewG3, -skewG3, -skewG3) in (x,y,z), // and this is similar for j and k . . . // Offsets for second corner in (x,y,z) coords C[1][_x_] = C[0][_x_] - i1 + skewG3; C[1][_y_] = C[0][_y_] - j1 + skewG3; C[1][_z_] = C[0][_z_] - k1 + skewG3; // Offsets for third corner in (x,y,z) coords C[2][_x_] = C[0][_x_] - i2 + 2.0 * skewG3; C[2][_y_] = C[0][_y_] - j2 + 2.0 * skewG3; C[2][_z_] = C[0][_z_] - k2 + 2.0 * skewG3; // Offsets for last corner in (x,y,z) coords C[3][_x_] = C[0][_x_] - 1.0 + 3.0 * skewG3; C[3][_y_] = C[0][_y_] - 1.0 + 3.0 * skewG3; C[3][_z_] = C[0][_z_] - 1.0 + 3.0 * skewG3; // Work out the hashed gradient indices of the four simplex corners int ii = i & 0x3ff; int jj = j & 0x3ff; int kk = k & 0x3ff; gi[0] = p[ii + p[jj + p[kk]]]; gi[1] = p[ii + i1 + p[jj + j1 + p[kk + k1]]]; gi[2] = p[ii + i2 + p[jj + j2 + p[kk + k2]]]; gi[3] = p[ii + 1 + p[jj + 1 + p[kk + 1]]]; // Calculate the contribution from the four corners, and add to total for (corner = 0; corner < 4; corner++) { t = 0.6 - C[corner][_x_] * C[corner][_x_] - C[corner][_y_] * C[corner][_y_] - C[corner][_z_] * C[corner][_z_]; if (t > 0.0) { U = grad3[gi[corner]]; t *= t; n += t * t * (U[_x_] * C[corner][_x_] + U[_y_] * C[corner][_y_] + U[_z_] * C[corner][_z_]); } } // The result is scaled be fit -1.0 to 1.0 return 32.0 * n; } //The Perlin noise function is based on summing coherent noise in "octaves" public final static double perlinNoise3D(double V[], double aScale, double fScale, int octaves) { int i; // Iterator double n = 0.0; // Sum of noise values double U[] = new double[3]; double a = 1.0; U[_x_] = V[_x_]; U[_y_] = V[_y_]; U[_z_] = V[_z_]; for (i = 0; i < octaves; i++) { n += simplexNoise3D(U) / a; // None of the below required for last octave . . . a *= aScale; U[_x_] *= fScale; U[_y_] *= fScale; U[_z_] *= fScale; } return n; } }