package com.vitco.export.dataStatic; import com.vitco.low.CubeIndexer; import gnu.trove.map.hash.TIntObjectHashMap; /** * Static data for the Kv6 file format */ public class Kv6Static { // ================================================ // ================================================ // [Offline computation] generate distinct directions private static final double GOLDRAT = 0.3819660112501052; private static double[] equiind2vec(long i, double zmulk, double zaddk) { double[] result = new double[3]; result[2] = i*zmulk + zaddk; double r = Math.sqrt(1.f - result[2]*result[2]); double val = i * (GOLDRAT * Math.PI * 2); result[0] = Math.cos(val) * r; result[1] = Math.sin(val) * r; return result; } private static TIntObjectHashMap<double[]> equivecp = new TIntObjectHashMap<double[]>(); // generate buffer private static void equimemset (int n) { double zmulk = 2 / (float)n; double zaddk = zmulk * .5 - 1.0; for (int z = n-1; z >= 0; z--) { double[] result = equiind2vec(z, zmulk, zaddk); equivecp.put(z, result); } equivecp.put(n, new double[3]); } // print distrinct directions private static void generateDistinctDirections() { int directions = 255; equimemset(directions); // print result for (int i = 0; i <= directions; i++) { double[] entry = equivecp.get(i); System.out.println("new double[] {" + entry[0] + ", " + entry[1] + ", " + entry[2] + "},"); System.out.println(Kv6Static.directions[i][0] + ", " + Kv6Static.directions[i][1] + ", " + Kv6Static.directions[i][2]); } } // ============= // print circle values private static void generateCircleValues() { int radius = 3; // loop over different radii for (int xr = -radius; xr <= radius; xr++) { for (int yr = -radius; yr <= radius; yr++) { for (int zr = -radius; zr <= radius; zr++) { // check that point is in sphere if (xr * xr + yr * yr + zr * zr <= (radius + 1) * (radius + 1)) { // first entry is the offset that can be used to efficiently shift the // posId bit of the CubeIndexer (without the need to shift three distinct values) System.out.println("new int[] {" + CubeIndexer.getShiftOperand(xr, yr, zr) + ", " + xr + ", " + yr + ", " + zr + "},"); } } } } } // offline computations public static void main(String[] args) { generateCircleValues(); generateDistinctDirections(); } // ================================================ // ================================================ // circle values public static final int[][] circleValues = new int[][] { new int[] {-5121603, -3, -2, -1}, new int[] {-5120003, -3, -2, 0}, new int[] {-5118403, -3, -2, 1}, new int[] {-2563203, -3, -1, -2}, new int[] {-2561603, -3, -1, -1}, new int[] {-2560003, -3, -1, 0}, new int[] {-2558403, -3, -1, 1}, new int[] {-2556803, -3, -1, 2}, new int[] {-3203, -3, 0, -2}, new int[] {-1603, -3, 0, -1}, new int[] {-3, -3, 0, 0}, new int[] {1597, -3, 0, 1}, new int[] {3197, -3, 0, 2}, new int[] {2556797, -3, 1, -2}, new int[] {2558397, -3, 1, -1}, new int[] {2559997, -3, 1, 0}, new int[] {2561597, -3, 1, 1}, new int[] {2563197, -3, 1, 2}, new int[] {5118397, -3, 2, -1}, new int[] {5119997, -3, 2, 0}, new int[] {5121597, -3, 2, 1}, new int[] {-7681602, -2, -3, -1}, new int[] {-7680002, -2, -3, 0}, new int[] {-7678402, -2, -3, 1}, new int[] {-5123202, -2, -2, -2}, new int[] {-5121602, -2, -2, -1}, new int[] {-5120002, -2, -2, 0}, new int[] {-5118402, -2, -2, 1}, new int[] {-5116802, -2, -2, 2}, new int[] {-2564802, -2, -1, -3}, new int[] {-2563202, -2, -1, -2}, new int[] {-2561602, -2, -1, -1}, new int[] {-2560002, -2, -1, 0}, new int[] {-2558402, -2, -1, 1}, new int[] {-2556802, -2, -1, 2}, new int[] {-2555202, -2, -1, 3}, new int[] {-4802, -2, 0, -3}, new int[] {-3202, -2, 0, -2}, new int[] {-1602, -2, 0, -1}, new int[] {-2, -2, 0, 0}, new int[] {1598, -2, 0, 1}, new int[] {3198, -2, 0, 2}, new int[] {4798, -2, 0, 3}, new int[] {2555198, -2, 1, -3}, new int[] {2556798, -2, 1, -2}, new int[] {2558398, -2, 1, -1}, new int[] {2559998, -2, 1, 0}, new int[] {2561598, -2, 1, 1}, new int[] {2563198, -2, 1, 2}, new int[] {2564798, -2, 1, 3}, new int[] {5116798, -2, 2, -2}, new int[] {5118398, -2, 2, -1}, new int[] {5119998, -2, 2, 0}, new int[] {5121598, -2, 2, 1}, new int[] {5123198, -2, 2, 2}, new int[] {7678398, -2, 3, -1}, new int[] {7679998, -2, 3, 0}, new int[] {7681598, -2, 3, 1}, new int[] {-7683201, -1, -3, -2}, new int[] {-7681601, -1, -3, -1}, new int[] {-7680001, -1, -3, 0}, new int[] {-7678401, -1, -3, 1}, new int[] {-7676801, -1, -3, 2}, new int[] {-5124801, -1, -2, -3}, new int[] {-5123201, -1, -2, -2}, new int[] {-5121601, -1, -2, -1}, new int[] {-5120001, -1, -2, 0}, new int[] {-5118401, -1, -2, 1}, new int[] {-5116801, -1, -2, 2}, new int[] {-5115201, -1, -2, 3}, new int[] {-2564801, -1, -1, -3}, new int[] {-2563201, -1, -1, -2}, new int[] {-2561601, -1, -1, -1}, new int[] {-2560001, -1, -1, 0}, new int[] {-2558401, -1, -1, 1}, new int[] {-2556801, -1, -1, 2}, new int[] {-2555201, -1, -1, 3}, new int[] {-4801, -1, 0, -3}, new int[] {-3201, -1, 0, -2}, new int[] {-1601, -1, 0, -1}, new int[] {-1, -1, 0, 0}, new int[] {1599, -1, 0, 1}, new int[] {3199, -1, 0, 2}, new int[] {4799, -1, 0, 3}, new int[] {2555199, -1, 1, -3}, new int[] {2556799, -1, 1, -2}, new int[] {2558399, -1, 1, -1}, new int[] {2559999, -1, 1, 0}, new int[] {2561599, -1, 1, 1}, new int[] {2563199, -1, 1, 2}, new int[] {2564799, -1, 1, 3}, new int[] {5115199, -1, 2, -3}, new int[] {5116799, -1, 2, -2}, new int[] {5118399, -1, 2, -1}, new int[] {5119999, -1, 2, 0}, new int[] {5121599, -1, 2, 1}, new int[] {5123199, -1, 2, 2}, new int[] {5124799, -1, 2, 3}, new int[] {7676799, -1, 3, -2}, new int[] {7678399, -1, 3, -1}, new int[] {7679999, -1, 3, 0}, new int[] {7681599, -1, 3, 1}, new int[] {7683199, -1, 3, 2}, new int[] {-7683200, 0, -3, -2}, new int[] {-7681600, 0, -3, -1}, new int[] {-7680000, 0, -3, 0}, new int[] {-7678400, 0, -3, 1}, new int[] {-7676800, 0, -3, 2}, new int[] {-5124800, 0, -2, -3}, new int[] {-5123200, 0, -2, -2}, new int[] {-5121600, 0, -2, -1}, new int[] {-5120000, 0, -2, 0}, new int[] {-5118400, 0, -2, 1}, new int[] {-5116800, 0, -2, 2}, new int[] {-5115200, 0, -2, 3}, new int[] {-2564800, 0, -1, -3}, new int[] {-2563200, 0, -1, -2}, new int[] {-2561600, 0, -1, -1}, new int[] {-2560000, 0, -1, 0}, new int[] {-2558400, 0, -1, 1}, new int[] {-2556800, 0, -1, 2}, new int[] {-2555200, 0, -1, 3}, new int[] {-4800, 0, 0, -3}, new int[] {-3200, 0, 0, -2}, new int[] {-1600, 0, 0, -1}, new int[] {0, 0, 0, 0}, new int[] {1600, 0, 0, 1}, new int[] {3200, 0, 0, 2}, new int[] {4800, 0, 0, 3}, new int[] {2555200, 0, 1, -3}, new int[] {2556800, 0, 1, -2}, new int[] {2558400, 0, 1, -1}, new int[] {2560000, 0, 1, 0}, new int[] {2561600, 0, 1, 1}, new int[] {2563200, 0, 1, 2}, new int[] {2564800, 0, 1, 3}, new int[] {5115200, 0, 2, -3}, new int[] {5116800, 0, 2, -2}, new int[] {5118400, 0, 2, -1}, new int[] {5120000, 0, 2, 0}, new int[] {5121600, 0, 2, 1}, new int[] {5123200, 0, 2, 2}, new int[] {5124800, 0, 2, 3}, new int[] {7676800, 0, 3, -2}, new int[] {7678400, 0, 3, -1}, new int[] {7680000, 0, 3, 0}, new int[] {7681600, 0, 3, 1}, new int[] {7683200, 0, 3, 2}, new int[] {-7683199, 1, -3, -2}, new int[] {-7681599, 1, -3, -1}, new int[] {-7679999, 1, -3, 0}, new int[] {-7678399, 1, -3, 1}, new int[] {-7676799, 1, -3, 2}, new int[] {-5124799, 1, -2, -3}, new int[] {-5123199, 1, -2, -2}, new int[] {-5121599, 1, -2, -1}, new int[] {-5119999, 1, -2, 0}, new int[] {-5118399, 1, -2, 1}, new int[] {-5116799, 1, -2, 2}, new int[] {-5115199, 1, -2, 3}, new int[] {-2564799, 1, -1, -3}, new int[] {-2563199, 1, -1, -2}, new int[] {-2561599, 1, -1, -1}, new int[] {-2559999, 1, -1, 0}, new int[] {-2558399, 1, -1, 1}, new int[] {-2556799, 1, -1, 2}, new int[] {-2555199, 1, -1, 3}, new int[] {-4799, 1, 0, -3}, new int[] {-3199, 1, 0, -2}, new int[] {-1599, 1, 0, -1}, new int[] {1, 1, 0, 0}, new int[] {1601, 1, 0, 1}, new int[] {3201, 1, 0, 2}, new int[] {4801, 1, 0, 3}, new int[] {2555201, 1, 1, -3}, new int[] {2556801, 1, 1, -2}, new int[] {2558401, 1, 1, -1}, new int[] {2560001, 1, 1, 0}, new int[] {2561601, 1, 1, 1}, new int[] {2563201, 1, 1, 2}, new int[] {2564801, 1, 1, 3}, new int[] {5115201, 1, 2, -3}, new int[] {5116801, 1, 2, -2}, new int[] {5118401, 1, 2, -1}, new int[] {5120001, 1, 2, 0}, new int[] {5121601, 1, 2, 1}, new int[] {5123201, 1, 2, 2}, new int[] {5124801, 1, 2, 3}, new int[] {7676801, 1, 3, -2}, new int[] {7678401, 1, 3, -1}, new int[] {7680001, 1, 3, 0}, new int[] {7681601, 1, 3, 1}, new int[] {7683201, 1, 3, 2}, new int[] {-7681598, 2, -3, -1}, new int[] {-7679998, 2, -3, 0}, new int[] {-7678398, 2, -3, 1}, new int[] {-5123198, 2, -2, -2}, new int[] {-5121598, 2, -2, -1}, new int[] {-5119998, 2, -2, 0}, new int[] {-5118398, 2, -2, 1}, new int[] {-5116798, 2, -2, 2}, new int[] {-2564798, 2, -1, -3}, new int[] {-2563198, 2, -1, -2}, new int[] {-2561598, 2, -1, -1}, new int[] {-2559998, 2, -1, 0}, new int[] {-2558398, 2, -1, 1}, new int[] {-2556798, 2, -1, 2}, new int[] {-2555198, 2, -1, 3}, new int[] {-4798, 2, 0, -3}, new int[] {-3198, 2, 0, -2}, new int[] {-1598, 2, 0, -1}, new int[] {2, 2, 0, 0}, new int[] {1602, 2, 0, 1}, new int[] {3202, 2, 0, 2}, new int[] {4802, 2, 0, 3}, new int[] {2555202, 2, 1, -3}, new int[] {2556802, 2, 1, -2}, new int[] {2558402, 2, 1, -1}, new int[] {2560002, 2, 1, 0}, new int[] {2561602, 2, 1, 1}, new int[] {2563202, 2, 1, 2}, new int[] {2564802, 2, 1, 3}, new int[] {5116802, 2, 2, -2}, new int[] {5118402, 2, 2, -1}, new int[] {5120002, 2, 2, 0}, new int[] {5121602, 2, 2, 1}, new int[] {5123202, 2, 2, 2}, new int[] {7678402, 2, 3, -1}, new int[] {7680002, 2, 3, 0}, new int[] {7681602, 2, 3, 1}, new int[] {-5121597, 3, -2, -1}, new int[] {-5119997, 3, -2, 0}, new int[] {-5118397, 3, -2, 1}, new int[] {-2563197, 3, -1, -2}, new int[] {-2561597, 3, -1, -1}, new int[] {-2559997, 3, -1, 0}, new int[] {-2558397, 3, -1, 1}, new int[] {-2556797, 3, -1, 2}, new int[] {-3197, 3, 0, -2}, new int[] {-1597, 3, 0, -1}, new int[] {3, 3, 0, 0}, new int[] {1603, 3, 0, 1}, new int[] {3203, 3, 0, 2}, new int[] {2556803, 3, 1, -2}, new int[] {2558403, 3, 1, -1}, new int[] {2560003, 3, 1, 0}, new int[] {2561603, 3, 1, 1}, new int[] {2563203, 3, 1, 2}, new int[] {5118403, 3, 2, -1}, new int[] {5120003, 3, 2, 0}, new int[] {5121603, 3, 2, 1} }; // mapping of byte to distinct equally distributed directions (taken from slab6) public static final double[][] directions = new double[][] { new double[] {0.088475, 0.000000, -0.996078}, new double[] {-0.112774, 0.103310, -0.988235}, new double[] {0.017228, -0.196302, -0.980392}, new double[] {0.141583, 0.184669, -0.972549}, new double[] {-0.259304, -0.045867, -0.964706}, new double[] {0.245145, -0.155941, -0.956863}, new double[] {-0.081832, 0.304410, -0.949020}, new double[] {-0.155748, -0.299882, -0.941176}, new double[] {0.337227, 0.123154, -0.933333}, new double[] {-0.350116, 0.144523, -0.925490}, new double[] {0.168435, -0.359936, -0.917647}, new double[] {0.124214, 0.396015, -0.909804}, new double[] {-0.373614, -0.216517, -0.901961}, new double[] {0.437387, -0.096158, -0.894118}, new double[] {-0.266376, 0.378895, -0.886275}, new double[] {-0.061412, -0.473906, -0.878431}, new double[] {0.376217, 0.317075, -0.870588}, new double[] {-0.505207, 0.020893, -0.862745}, new double[] {0.367733, -0.365944, -0.854902}, new double[] {-0.024550, 0.530932, -0.847059}, new double[] {-0.348417, -0.417519, -0.839216}, new double[] {0.550753, 0.074103, -0.831373}, new double[] {-0.465651, 0.323988, -0.823529}, new double[] {0.126969, -0.564389, -0.815686}, new double[] {0.293037, 0.511389, -0.807843}, new double[] {-0.571616, -0.182361, -0.800000}, new double[] {0.554041, -0.255981, -0.792157}, new double[] {-0.239496, 0.572270, -0.784314}, new double[] {-0.213279, -0.592963, -0.776471}, new double[] {0.566254, 0.297605, -0.768627}, new double[] {-0.627568, 0.165427, -0.760784}, new double[] {0.355917, -0.553537, -0.752941}, new double[] {0.112968, 0.657318, -0.745098}, new double[] {-0.534158, -0.413680, -0.737255}, new double[] {0.681739, -0.056482, -0.729412}, new double[] {-0.470155, 0.508226, -0.721569}, new double[] {0.003415, -0.700417, -0.713725}, new double[] {0.475917, 0.524627, -0.705882}, new double[] {-0.713004, -0.066080, -0.698039}, new double[] {0.576407, -0.437474, -0.690196}, new double[] {-0.130840, 0.719219, -0.682353}, new double[] {-0.393206, -0.624841, -0.674510}, new double[] {0.718849, 0.197006, -0.666667}, new double[] {-0.669308, 0.343479, -0.658823}, new double[] {0.263873, -0.711755, -0.650980}, new double[] {0.288721, 0.709235, -0.643137}, new double[] {-0.697867, -0.330731, -0.635294}, new double[] {0.744094, -0.229412, -0.627451}, new double[] {-0.396868, 0.677186, -0.619608}, new double[] {-0.166081, -0.773409, -0.611765}, new double[] {0.649788, 0.461579, -0.603922}, new double[] {-0.796762, 0.099299, -0.596078}, new double[] {0.524168, -0.615814, -0.588235}, new double[] {0.029677, 0.813796, -0.580392}, new double[] {-0.575483, -0.583959, -0.572549}, new double[] {0.824216, 0.042137, -0.564706}, new double[] {-0.640310, 0.529063, -0.556863}, new double[] {0.115487, -0.827793, -0.549020}, new double[] {0.476901, 0.692599, -0.541176}, new double[] {-0.824365, -0.189679, -0.533333}, new double[] {0.740246, -0.419400, -0.525490}, new double[] {-0.264013, 0.813842, -0.517647}, new double[] {-0.357016, -0.782713, -0.509804}, new double[] {0.796202, 0.337784, -0.501961}, new double[] {-0.819511, 0.290259, -0.494118}, new double[] {0.410286, -0.771494, -0.486274}, new double[] {0.219685, 0.850201, -0.478431}, new double[] {-0.739837, -0.480821, -0.470588}, new double[] {0.874404, -0.145891, -0.462745}, new double[] {-0.548706, 0.701417, -0.454902}, new double[] {-0.069510, -0.891800, -0.447059}, new double[] {0.656489, 0.613279, -0.439216}, new double[] {-0.902131, -0.008798, -0.431373}, new double[] {0.673905, -0.605372, -0.423529}, new double[] {-0.088346, 0.905207, -0.415686}, new double[] {-0.548443, -0.729982, -0.407843}, new double[] {0.900905, 0.168435, -0.400000}, new double[] {-0.780947, 0.486142, -0.392157}, new double[] {0.248351, -0.889171, -0.384314}, new double[] {0.418959, 0.826283, -0.376471}, new double[] {-0.870020, -0.327382, -0.368627}, new double[] {0.865520, -0.347433, -0.360784}, new double[] {-0.404816, 0.843538, -0.352941}, new double[] {-0.272150, -0.898244, -0.345098}, new double[] {0.809879, 0.479954, -0.337255}, new double[] {-0.924098, 0.193731, -0.329412}, new double[] {0.552112, -0.769263, -0.321569}, new double[] {0.112832, 0.942786, -0.313725}, new double[] {-0.721979, -0.620630, -0.305882}, new double[] {0.954078, -0.030135, -0.298039}, new double[] {-0.684879, 0.668377, -0.290196}, new double[] {0.053658, -0.957809, -0.282353}, new double[] {0.608865, 0.744264, -0.274510}, new double[] {-0.953882, -0.137830, -0.266667}, new double[] {0.798231, -0.543909, -0.258824}, new double[] {-0.221659, 0.942272, -0.250980}, new double[] {-0.474028, -0.846275, -0.243137}, new double[] {0.923019, 0.304421, -0.235294}, new double[] {-0.887940, 0.399786, -0.227451}, new double[] {0.385399, -0.896237, -0.219608}, new double[] {0.321789, 0.922826, -0.211765}, new double[] {-0.862104, -0.463888, -0.203921}, new double[] {0.950593, -0.240679, -0.196078}, new double[] {-0.539204, 0.820869, -0.188235}, new double[] {-0.157132, -0.970963, -0.180392}, new double[] {0.772843, 0.610689, -0.172549}, new double[] {-0.983723, 0.071843, -0.164706}, new double[] {0.677703, -0.718409, -0.156863}, new double[] {-0.014457, 0.988729, -0.149020}, new double[] {-0.657981, -0.739682, -0.141176}, new double[] {0.985904, 0.101070, -0.133333}, new double[] {-0.796068, 0.592054, -0.125490}, new double[] {0.187251, -0.975242, -0.117647}, new double[] {0.521164, 0.846364, -0.109804}, new double[] {-0.956804, -0.272270, -0.101961}, new double[] {0.890124, -0.445894, -0.094118}, new double[] {-0.355406, 0.930722, -0.086274}, new double[] {-0.366867, -0.926961, -0.078431}, new double[] {0.897197, 0.435954, -0.070588}, new double[] {-0.956550, 0.284738, -0.062745}, new double[] {0.513230, -0.856494, -0.054902}, new double[] {0.200194, 0.978626, -0.047059}, new double[] {-0.808943, -0.586578, -0.039216}, new double[] {0.992992, -0.113940, -0.031372}, new double[] {-0.655378, 0.754935, -0.023529}, new double[] {-0.026700, -0.999520, -0.015686}, new double[] {0.694918, 0.719046, -0.007843}, new double[] {-0.998150, -0.060794, 0.000000}, new double[] {0.777047, -0.629394, 0.007843}, new double[] {-0.147807, 0.988892, 0.015686}, new double[] {-0.558912, -0.828893, 0.023529}, new double[] {0.971824, 0.233610, 0.031373}, new double[] {-0.874152, 0.484067, 0.039216}, new double[] {0.317482, -0.947096, 0.047059}, new double[] {0.405490, 0.912449, 0.054902}, new double[] {-0.914922, -0.398723, 0.062745}, new double[] {0.943473, -0.323845, 0.070588}, new double[] {-0.476653, 0.875586, 0.078431}, new double[] {-0.239824, -0.966975, 0.086275}, new double[] {0.829429, 0.550626, 0.094118}, new double[] {-0.982774, 0.154137, 0.101961}, new double[] {0.620028, -0.776858, 0.109804}, new double[] {0.067509, 0.990758, 0.117647}, new double[] {-0.718331, -0.684290, 0.125490}, new double[] {0.990883, 0.019329, 0.133333}, new double[] {-0.742887, 0.654361, 0.141177}, new double[] {0.105645, -0.983175, 0.149020}, new double[] {0.585506, 0.795347, 0.156863}, new double[] {-0.967730, -0.190713, 0.164706}, new double[] {0.841253, -0.512368, 0.172549}, new double[] {-0.273823, 0.944711, 0.180392}, new double[] {-0.435582, -0.880247, 0.188235}, new double[] {0.914351, 0.354281, 0.196078}, new double[] {-0.912036, 0.355818, 0.203922}, new double[] {0.431420, -0.876945, 0.211765}, new double[] {0.273766, 0.936389, 0.219608}, new double[] {-0.832850, -0.504606, 0.227451}, new double[] {0.953145, -0.190136, 0.235294}, new double[] {-0.573242, 0.782482, 0.243137}, new double[] {-0.105649, -0.962209, 0.250980}, new double[] {0.726311, 0.636775, 0.258824}, new double[] {-0.963559, 0.021031, 0.266667}, new double[] {0.694700, -0.664858, 0.274510}, new double[] {-0.062996, 0.957240, 0.282353}, new double[] {-0.598689, -0.746564, 0.290196}, new double[] {0.943366, 0.145716, 0.298039}, new double[] {-0.791972, 0.528409, 0.305882}, new double[] {0.226431, -0.922120, 0.313726}, new double[] {0.454658, 0.830590, 0.321569}, new double[] {-0.893750, -0.304463, 0.329412}, new double[] {0.862146, -0.378104, 0.337255}, new double[] {-0.379164, 0.858570, 0.345098}, new double[] {-0.299437, -0.886437, 0.352941}, new double[] {0.816950, 0.449919, 0.360784}, new double[] {-0.903324, 0.219360, 0.368627}, new double[] {0.516153, -0.769322, 0.376471}, new double[] {0.138589, 0.912741, 0.384314}, new double[] {-0.716167, -0.577337, 0.392157}, new double[] {0.914688, -0.057839, 0.400000}, new double[] {-0.632992, 0.658016, 0.407843}, new double[] {0.022179, -0.909238, 0.415686}, new double[] {0.595444, 0.682693, 0.423529}, new double[] {-0.896529, -0.100766, 0.431373}, new double[] {0.726074, -0.529062, 0.439216}, new double[] {-0.177240, 0.876769, 0.447059}, new double[] {-0.459513, -0.762832, 0.454902}, new double[] {0.850231, 0.250946, 0.462745}, new double[] {-0.792727, 0.387466, 0.470588}, new double[] {0.321256, -0.817250, 0.478431}, new double[] {0.313610, 0.815589, 0.486275}, new double[] {-0.778220, -0.387583, 0.494118}, new double[] {0.831314, -0.238645, 0.501961}, new double[] {-0.449380, 0.733592, 0.509804}, new double[] {-0.163279, -0.839870, 0.517647}, new double[] {0.683867, 0.506148, 0.525490}, new double[] {-0.841293, 0.088217, 0.533333}, new double[] {0.557441, -0.629593, 0.541177}, new double[] {0.014157, 0.835689, 0.549020}, new double[] {-0.571359, -0.602871, 0.556863}, new double[] {0.823236, 0.058216, 0.564706}, new double[] {-0.642107, 0.509790, 0.572549}, new double[] {0.128240, -0.804176, 0.580392}, new double[] {0.445541, 0.674887, 0.588235}, new double[] {-0.778817, -0.195280, 0.596079}, new double[] {0.701012, -0.379291, 0.603922}, new double[] {-0.258733, 0.747530, 0.611765}, new double[] {-0.311733, -0.720353, 0.619608}, new double[] {0.710744, 0.318038, 0.627451}, new double[] {-0.732852, 0.243575, 0.635294}, new double[] {0.372677, -0.668944, 0.643137}, new double[] {0.175525, 0.738522, 0.650981}, new double[] {-0.622666, -0.422183, 0.658824}, new double[] {0.737447, -0.108291, 0.666667}, new double[] {-0.466144, 0.572491, 0.674510}, new double[] {-0.042592, -0.729781, 0.682353}, new double[] {0.519058, 0.504191, 0.690196}, new double[] {-0.715753, -0.020935, 0.698039}, new double[] {0.536065, -0.462994, 0.705882}, new double[] {-0.081609, 0.695655, 0.713726}, new double[] {-0.405004, -0.561525, 0.721569}, new double[] {0.669846, 0.138797, 0.729412}, new double[] {-0.580412, 0.345799, 0.737255}, new double[] {0.191902, -0.638751, 0.745098}, new double[] {0.286112, 0.592638, 0.752941}, new double[] {-0.602854, -0.240363, 0.760784}, new double[] {0.598184, -0.226687, 0.768628}, new double[] {-0.283662, 0.562698, 0.776471}, new double[] {-0.168279, -0.597105, 0.784314}, new double[] {0.518880, 0.321326, 0.792157}, new double[] {-0.589522, 0.111642, 0.800000}, new double[] {0.352933, -0.472046, 0.807843}, new double[] {0.057537, 0.575626, 0.815686}, new double[] {-0.422890, -0.378104, 0.823530}, new double[] {0.555675, -0.006716, 0.831373}, new double[] {-0.396511, 0.372150, 0.839216}, new double[] {0.040064, -0.529987, 0.847059}, new double[] {0.320604, 0.407867, 0.854902}, new double[] {-0.498937, -0.082049, 0.862745}, new double[] {0.411916, -0.269074, 0.870588}, new double[] {-0.118471, 0.462950, 0.878431}, new double[] {-0.218425, -0.408421, 0.886275}, new double[] {0.422484, 0.148529, 0.894118}, new double[] {-0.397129, 0.169574, 0.901961}, new double[] {0.171357, -0.378013, 0.909804}, new double[] {0.123508, 0.377716, 0.917647}, new double[] {-0.329988, -0.185945, 0.925490}, new double[] {0.349680, -0.081318, 0.933333}, new double[] {-0.190990, 0.278764, 0.941177}, new double[] {-0.044283, -0.312091, 0.949020}, new double[] {0.224407, 0.184539, 0.956863}, new double[] {-0.262954, 0.014059, 0.964706}, new double[] {0.162948, -0.166121, 0.972549}, new double[] {-0.006723, 0.196941, 0.980392}, new double[] {-0.099402, -0.116233, 0.988235}, new double[] {0.087819, 0.010737, 0.996079}, new double[] {0.000000, 0.000000, 0.000000} }; // generated mapping // public static final double[][] directions = new double[][] { // new double[] {0.08847462357319358, 0.0, -0.9960784311406314}, // new double[] {-0.11277406702103579, 0.10331028333557762, -0.9882352934218943}, // new double[] {0.017227797749310908, -0.19630186963048818, -0.9803921557031572}, // new double[] {0.14158256936584035, 0.1846693901796049, -0.9725490179844201}, // new double[] {-0.25930436964434533, -0.04586729187735522, -0.9647058802656829}, // new double[] {0.24514495423665636, -0.15594115344528184, -0.9568627425469458}, // new double[] {-0.08183170358702202, 0.3044098584799059, -0.9490196048282087}, // new double[] {-0.15574760903613824, -0.2998825437381443, -0.9411764671094716}, // new double[] {0.33722667546487833, 0.1231546410141026, -0.9333333293907344}, // new double[] {-0.35011582103335465, 0.14452272133152522, -0.9254901916719973}, // new double[] {0.16843486492748064, -0.3599355229034275, -0.9176470539532602}, // new double[] {0.12421428201403695, 0.3960147044593953, -0.9098039162345231}, // new double[] {-0.3736137430116818, -0.21651680085387903, -0.9019607785157859}, // new double[] {0.43738682228890163, -0.09615826591373385, -0.8941176407970488}, // new double[] {-0.26637714482794494, 0.37889407742349807, -0.8862745030783117}, // new double[] {-0.06141121501356904, -0.4739061078136374, -0.8784313653595746}, // new double[] {0.37621673778823905, 0.31707586489854567, -0.8705882276408374}, // new double[] {-0.5052073217589256, 0.020891908875937996, -0.8627450899221003}, // new double[] {0.3677333303988277, -0.3659437796064652, -0.8549019522033632}, // new double[] {-0.024550715052095357, 0.5309318479751716, -0.847058814484626}, // new double[] {-0.34841681292162285, -0.41751978676933377, -0.8392156767658889}, // new double[] {0.5507526203015244, 0.07410298610243038, -0.8313725390471518}, // new double[] {-0.46565125513943356, 0.323988014801062, -0.8235294013284147}, // new double[] {0.12696877118903663, -0.5643889177696791, -0.8156862636096776}, // new double[] {0.2930371946746429, 0.5113889776754771, -0.8078431258909404}, // new double[] {-0.5716156813423534, -0.1823609930001248, -0.7999999881722033}, // new double[] {0.5540408698138511, -0.25598093455481424, -0.7921568504534662}, // new double[] {-0.23949855511907217, 0.5722695537176006, -0.784313712734729}, // new double[] {-0.21327689187022209, -0.5929640912639756, -0.7764705750159919}, // new double[] {0.5662527582752538, 0.29760657986597283, -0.7686274372972548}, // new double[] {-0.6275681890631013, 0.16542496060414774, -0.7607842995785177}, // new double[] {0.3559187396927559, -0.5535354166742756, -0.7529411618597806}, // new double[] {0.11296628035747362, 0.657318457007948, -0.7450980241410434}, // new double[] {-0.5341566447634339, -0.41368092934229267, -0.7372548864223063}, // new double[] {0.6817392689498997, -0.05648070488987883, -0.7294117487035692}, // new double[] {-0.4701557878195451, 0.5082246302779933, -0.721568610984832}, // new double[] {0.0034168699573326046, -0.7004172141022689, -0.7137254732660949}, // new double[] {0.4759158224541341, 0.5246277330641342, -0.7058823355473578}, // new double[] {-0.713003908951353, -0.06608104202315845, -0.6980391978286207}, // new double[] {0.5764082664409583, -0.437473323743658, -0.6901960601098835}, // new double[] {-0.13084109908394112, 0.7192183924892134, -0.6823529223911464}, // new double[] {-0.3932045522570286, -0.6248413642401802, -0.6745097846724093}, // new double[] {0.7188490348753451, 0.19700671790152938, -0.6666666469536722}, // new double[] {-0.6693088132751418, 0.34347823242759784, -0.658823509234935}, // new double[] {0.2638740371817286, -0.7117549075363293, -0.6509803715161979}, // new double[] {0.2887207662682757, 0.7092353753365733, -0.6431372337974608}, // new double[] {-0.6978665770717029, -0.3307319943606037, -0.6352940960787237}, // new double[] {0.7440936853710741, -0.22941203596155835, -0.6274509583599865}, // new double[] {-0.3968688288294096, 0.6771862973390513, -0.6196078206412494}, // new double[] {-0.16608068889585115, -0.7734088036120338, -0.6117646829225123}, // new double[] {0.6497875844787631, 0.4615786631723124, -0.6039215452037752}, // new double[] {-0.796762354233931, 0.09929895772718242, -0.596078407485038}, // new double[] {0.524168080696773, -0.6158141688704706, -0.5882352697663009}, // new double[] {0.02967707003869502, 0.8137961935098994, -0.5803921320475638}, // new double[] {-0.5754783263768478, -0.5839626229165282, -0.5725489943288267}, // new double[] {0.8242155596149631, 0.042142695676218186, -0.5647058566100895}, // new double[] {-0.6403131352972511, 0.5290585989044455, -0.5568627188913524}, // new double[] {0.11549224890714589, -0.8277916645699062, -0.5490195811726153}, // new double[] {0.47689692140212203, 0.6926018938811745, -0.5411764434538782}, // new double[] {-0.8243636966400444, -0.18968416026539375, -0.533333305735141}, // new double[] {0.7402484496175841, -0.41939517898618567, -0.5254901680164039}, // new double[] {-0.2640183067567411, 0.81384020896077, -0.5176470302976668}, // new double[] {-0.35701122395576673, -0.7827151315012227, -0.5098038925789297}, // new double[] {0.7961998773594092, 0.3377886260267617, -0.5019607548601925}, // new double[] {-0.8195121540561353, 0.29025438805420906, -0.4941176171414554}, // new double[] {0.41028991584351876, -0.7714916173357184, -0.4862744794227183}, // new double[] {0.21968053043736252, 0.8502022793559704, -0.47843134170398116}, // new double[] {-0.7398340569739552, -0.48082461502235996, -0.47058820398524404}, // new double[] {0.8744049886678895, -0.1458866664185392, -0.4627450662665069}, // new double[] {-0.5487095024679586, 0.7014143691890586, -0.4549019285477698}, // new double[] {-0.06950522615728677, -0.8918001239511618, -0.44705879082903266}, // new double[] {0.6564864731441976, 0.6132822520190759, -0.43921565311029553}, // new double[] {-0.9021309648220994, -0.008802003971120704, -0.4313725153915584}, // new double[] {0.673907782330922, -0.6053686208929989, -0.4235293776728213}, // new double[] {-0.08835020156261157, 0.9052067121915753, -0.41568623995408416}, // new double[] {-0.5484403912667049, -0.7299843431103655, -0.40784310223534703}, // new double[] {0.9009043555586673, 0.16843803169751576, -0.3999999645166099}, // new double[] {-0.7809492816149166, 0.486139118710857, -0.3921568267978728}, // new double[] {0.24835431365252772, -0.8891699068662678, -0.38431368907913566}, // new double[] {0.41895579014020357, 0.8262844364178689, -0.37647055136039853}, // new double[] {-0.8700189898490481, -0.3273847693676379, -0.3686274136416614}, // new double[] {0.8655211090005772, -0.3474304478901957, -0.3607842759229243}, // new double[] {-0.40481879149101113, 0.8435367798850801, -0.35294113820418715}, // new double[] {-0.27214714146057306, -0.8982445677296262, -0.34509800048545003}, // new double[] {0.8098772954510993, 0.47995616867899343, -0.3372548627667129}, // new double[] {-0.9240980431744767, 0.19372847493855846, -0.3294117250479758}, // new double[] {0.5521137062646445, -0.7692620483280035, -0.32156858732923865}, // new double[] {0.11282980072374602, 0.942786178481276, -0.31372544961050153}, // new double[] {-0.7219780656571875, -0.6206316814195479, -0.3058823118917644}, // new double[] {0.9540779035977885, -0.030133113425411747, -0.2980391741730273}, // new double[] {-0.6848800735077172, 0.6683753027590743, -0.29019603645429015}, // new double[] {0.05365929945966003, -0.957808707497029, -0.282352898735553}, // new double[] {0.6088634712435995, 0.7442645124494953, -0.2745097610168159}, // new double[] {-0.9538822881247144, -0.13783139127484662, -0.2666666232980788}, // new double[] {0.7982318905577123, -0.543908312318557, -0.25882348557934165}, // new double[] {-0.22166001386759177, 0.9422715655478462, -0.2509803478606045}, // new double[] {-0.47402735029115217, -0.8462755864494608, -0.2431372101418674}, // new double[] {0.9230190496563494, 0.3044216376245757, -0.23529407242313027}, // new double[] {-0.8879402532472915, 0.3997851660144903, -0.22745093470439315}, // new double[] {0.3853990717880765, -0.8962365597140054, -0.21960779698565602}, // new double[] {0.321788234413981, 0.9228261273275148, -0.2117646592669189}, // new double[] {-0.8621042990150473, -0.46388812300946924, -0.20392152154818177}, // new double[] {0.9505928183136864, -0.2406793741999421, -0.19607838382944465}, // new double[] {-0.5392041307117978, 0.820869293825135, -0.18823524611070752}, // new double[] {-0.15713186139753937, -0.9709625458088711, -0.1803921083919704}, // new double[] {0.7728432116166335, 0.6106883190119943, -0.17254897067323327}, // new double[] {-0.9837227934667748, 0.07184326137287005, -0.16470583295449615}, // new double[] {0.6777139066828973, -0.7183995792955188, -0.15686269523575902}, // new double[] {-0.014470963422299801, 0.988728356372498, -0.1490195575170219}, // new double[] {-0.6579704276104835, -0.7396919188980071, -0.14117641979828477}, // new double[] {0.9859027632892896, 0.101084010745709, -0.13333328207954764}, // new double[] {-0.7960766472790883, 0.5920423931824383, -0.12549014436081052}, // new double[] {0.18726440018479637, -0.9752390610776356, -0.11764700664207339}, // new double[] {0.5211523145511956, 0.8463707080277522, -0.10980386892333627}, // new double[] {-0.9567999544544521, -0.2722826774662352, -0.10196073120459914}, // new double[] {0.8901296516425976, -0.4458823632563392, -0.09411759348586202}, // new double[] {-0.35541809946365926, 0.9307173001807405, -0.08627445576712489}, // new double[] {-0.36685475521507754, -0.9269660818634511, -0.07843131804838777}, // new double[] {0.8971909606909141, 0.43596523812371035, -0.07058818032965064}, // new double[] {-0.9565532460110261, 0.2847260914871063, -0.06274504261091352}, // new double[] {0.5132404423024389, -0.8564870280537863, -0.05490190489217639}, // new double[] {0.20018138089757964, 0.9786280637576537, -0.047058767173439264}, // new double[] {-0.8089354349296679, -0.5865880978349461, -0.03921562945470214}, // new double[] {0.992993566532524, -0.1139277998878875, -0.031372491735965014}, // new double[] {-0.6553866280341245, 0.7549269748085519, -0.023529354017227888}, // new double[] {-0.026688247358006293, -0.9995207251834225, -0.015686216298490763}, // new double[] {0.69490975922996, 0.7190541792141608, -0.007843078579753637}, // new double[] {-0.9981496491382273, -0.060805245869333745, 5.9138983488082886E-8}, // new double[] {0.7770539387386508, -0.6293851448467781, 0.007843196857720613}, // new double[] {-0.14781819200981797, 0.9888901460822147, 0.01568633457645774}, // new double[] {-0.5589031680566855, -0.8288990364753176, 0.023529472295194864}, // new double[] {0.9718216370392019, 0.23362034398433593, 0.03137261001393199}, // new double[] {-0.874156984368713, 0.4840575294416617, 0.039215747732669115}, // new double[] {0.31749235386736624, -0.9470924276625964, 0.04705888545140624}, // new double[] {0.4054801743876778, 0.9124536130841739, 0.054902023170143366}, // new double[] {-0.9149183424529252, -0.3987323305529921, 0.06274516088888049}, // new double[] {0.9434764692922835, -0.3238355199656898, 0.07058829860761762}, // new double[] {-0.47666223599573776, 0.8755807344678894, 0.07843143632635474}, // new double[] {-0.23981438140783168, -0.966977642111397, 0.08627457404509187}, // new double[] {0.8294238888264771, 0.5506340608573941, 0.09411771176382899}, // new double[] {-0.9827759924616661, 0.15412765427975794, 0.10196084948256612}, // new double[] {0.620035722404553, -0.7768518438782006, 0.10980398720130324}, // new double[] {0.0674998107062276, 0.9907587645601081, 0.11764712492004037}, // new double[] {-0.7183246592616491, -0.6842966300366286, 0.1254902626387775}, // new double[] {0.99088256445311, 0.01933773026834579, 0.13333340035751462}, // new double[] {-0.74289286685792, 0.654354165164726, 0.14117653807625175}, // new double[] {0.10565329692533475, -0.983173696289096, 0.14901967579498887}, // new double[] {0.5854992318755768, 0.7953519392128666, 0.156862813513726}, // new double[] {-0.9677278529273622, -0.19072166184575678, 0.16470595123246312}, // new double[] {0.841257050048244, -0.5123606031363428, 0.17254908895120025}, // new double[] {-0.2738306796792063, 0.9447091634061172, 0.18039222666993737}, // new double[] {-0.4355753408376968, -0.8802508563174405, 0.1882353643886745}, // new double[] {0.914348605699541, 0.3542878042871631, 0.19607850210741162}, // new double[] {-0.9120386753561789, 0.355810932188938, 0.20392163982614875}, // new double[] {0.431426424909878, -0.8769417990270771, 0.21176477754488587}, // new double[] {0.273759113628102, 0.9363911101986826, 0.219607915263623}, // new double[] {-0.8328461956848571, -0.5046119626311649, 0.22745105298236012}, // new double[] {0.953146069119689, -0.19012946837352884, 0.23529419070109725}, // new double[] {-0.5732476705770387, 0.7824776978974318, 0.24313732841983438}, // new double[] {-0.10564285663661432, -0.9622101602345099, 0.2509804661385715}, // new double[] {0.7263067304873949, 0.6367800839654344, 0.2588236038573086}, // new double[] {-0.9635594477162193, 0.021024739095384187, 0.26666674157604575}, // new double[] {0.6947040693012769, -0.6648538051826209, 0.2745098792947829}, // new double[] {-0.06300154474523652, 0.9572395620444638, 0.28235301701352}, // new double[] {-0.598684617079633, -0.7465674256561325, 0.29019615473225713}, // new double[] {0.943365162631527, 0.14572148121846445, 0.29803929245099425}, // new double[] {-0.7919749950525695, 0.5284047181138165, 0.3058824301697314}, // new double[] {0.2264360082054942, -0.9221187571246012, 0.3137255678884685}, // new double[] {0.454653816312651, 0.8305922434543008, 0.32156870560720563}, // new double[] {-0.8937488876049146, -0.30446800058722495, 0.32941184332594275}, // new double[] {0.8621482787048033, -0.378099753090236, 0.3372549810446799}, // new double[] {-0.3791685553783008, 0.8585676997408435, 0.345098118763417}, // new double[] {-0.2994322138472686, -0.8864382769168544, 0.35294125648215413}, // new double[] {0.8169479166505146, 0.4499230182836611, 0.36078439420089126}, // new double[] {-0.9033252942480322, 0.21935622964153428, 0.3686275319196284}, // new double[] {0.5161566957599931, -0.769319244737948, 0.3764706696383655}, // new double[] {0.13858552966544294, 0.9127414466550954, 0.38431380735710263}, // new double[] {-0.7161642440354544, -0.5773401995304943, 0.39215694507583976}, // new double[] {0.9146884460539956, -0.05783580568867589, 0.4000000827945769}, // new double[] {-0.6329943738686825, 0.6580137005655149, 0.407843220513314}, // new double[] {0.022182049517975623, -0.9092374872710413, 0.41568635823205113}, // new double[] {0.5954415428834143, 0.6826947598072585, 0.42352949595078826}, // new double[] {-0.8965284862038047, -0.10076866748216864, 0.4313726336695254}, // new double[] {0.7260755547142786, -0.5290593492323579, 0.4392157713882625}, // new double[] {-0.1772428310565451, 0.8767686756648646, 0.44705890910699964}, // new double[] {-0.4595104956004909, -0.7628330303721427, 0.45490204682573676}, // new double[] {0.8502305714076192, 0.250947942061246, 0.4627451845444739}, // new double[] {-0.7927283777642876, 0.3874639983749422, 0.470588322263211}, // new double[] {0.3212582698960835, -0.8172493267803386, 0.47843145998194814}, // new double[] {0.3136081082131067, 0.8155899521781966, 0.48627459770068526}, // new double[] {-0.7782195002748066, -0.3875849235148501, 0.4941177354194224}, // new double[] {0.8313148979336397, -0.2386437141681275, 0.5019608731381595}, // new double[] {-0.44938149175591313, 0.7335912658841103, 0.5098040108568966}, // new double[] {-0.1632776189924389, -0.8398701380021055, 0.5176471485756338}, // new double[] {0.6838661016192332, 0.5061493001737458, 0.5254902862943709}, // new double[] {-0.8412927199588496, 0.08821574788378332, 0.533333424013108}, // new double[] {0.5574422361987073, -0.6295919967200052, 0.5411765617318451}, // new double[] {0.014156353721541911, 0.8356895160671234, 0.5490196994505823}, // new double[] {-0.5713582230034422, -0.6028710986488612, 0.5568628371693194}, // new double[] {0.8232362818039363, 0.058216717937029615, 0.5647059748880565}, // new double[] {-0.6421074323091285, 0.5097897204010211, 0.5725491126067936}, // new double[] {0.12824064116868716, -0.8041760837743874, 0.5803922503255308}, // new double[] {0.44554115103703623, 0.6748868134620816, 0.5882353880442679}, // new double[] {-0.7788171147145269, -0.19528003725916784, 0.596078525763005}, // new double[] {0.701011557887222, -0.37929068019920475, 0.6039216634817421}, // new double[] {-0.25873315691337156, 0.7475299201542228, 0.6117648012004793}, // new double[] {-0.3117335462771785, -0.7203528289343597, 0.6196079389192164}, // new double[] {0.7107440683283801, 0.31803775839025145, 0.6274510766379535}, // new double[] {-0.7328521298256904, 0.24357548525018816, 0.6352942143566906}, // new double[] {0.3726766252254909, -0.6689443021477546, 0.6431373520754278}, // new double[] {0.17552607868761358, 0.7385221713719222, 0.6509804897941649}, // new double[] {-0.6226662195795926, -0.4221826699726073, 0.658823627512902}, // new double[] {0.7374471138491369, -0.10829209763948908, 0.6666667652316391}, // new double[] {-0.4661435734645703, 0.572491536827886, 0.6745099029503763}, // new double[] {-0.042570918479134585, -0.7297821899645526, 0.6823530406691134}, // new double[] {0.519042997535535, 0.5042059123494418, 0.6901961783878505}, // new double[] {-0.7157527247946337, -0.020955908916221355, 0.6980393161065876}, // new double[] {0.5360787308936698, -0.46297900132184255, 0.7058824538253248}, // new double[] {-0.0816288547244545, 0.6956525785558858, 0.7137255915440619}, // new double[] {-0.404988037041104, -0.5615365160019987, 0.721568729262799}, // new double[] {0.6698420494675233, 0.13881627091828233, 0.7294118669815361}, // new double[] {-0.5804215366351346, 0.34578302135083056, 0.7372550047002733}, // new double[] {0.19191981648578813, -0.6387452874219908, 0.7450981424190104}, // new double[] {0.28609566333580205, 0.5926455096303164, 0.7529412801377475}, // new double[] {-0.602847285714129, -0.24037932451414612, 0.7607844178564847}, // new double[] {0.5981905522039799, -0.22667100402203386, 0.7686275555752218}, // new double[] {-0.2836769630829778, 0.5626905393478886, 0.7764706932939589}, // new double[] {-0.16826232056778623, -0.5971093752063616, 0.784313831012696}, // new double[] {0.5188714871776599, 0.32134049960170097, 0.7921569687314332}, // new double[] {-0.5895246570940554, 0.11162664716747754, 0.8000001064501703}, // new double[] {0.35294540892841286, -0.4720368959806113, 0.8078432441689074}, // new double[] {0.05752126308182604, 0.5756275103715206, 0.8156863818876445}, // new double[] {-0.4228804055838253, -0.37811544918204765, 0.8235295196063817}, // new double[] {0.5556748981264736, -0.006701659817074849, 0.8313726573251188}, // new double[] {-0.3965211276519461, 0.3721395500004507, 0.8392157950438559}, // new double[] {0.04007822409152683, -0.5299857548847575, 0.847058932762593}, // new double[] {0.32059372774611633, 0.40787511767277973, 0.8549020704813302}, // new double[] {-0.4989353646951889, -0.08206221776372742, 0.8627452082000673}, // new double[] {0.41192300966856327, -0.26906386984497366, 0.8705883459188044}, // new double[] {-0.11848236791876166, 0.4629471428216301, 0.8784314836375415}, // new double[] {-0.21841506188219198, -0.40842643925532435, 0.8862746213562787}, // new double[] {0.42248010195438523, 0.14853954476597903, 0.8941177590750158}, // new double[] {-0.3971328016741327, 0.16956437859840431, 0.9019608967937529}, // new double[] {0.17136609640809433, -0.3780083065048274, 0.90980403451249}, // new double[] {0.12349833653885454, 0.37771924516519984, 0.9176471722312272}, // new double[] {-0.3299836598594226, -0.18595287148764325, 0.9254903099499643}, // new double[] {0.3496819184178336, -0.08130947911823676, 0.9333334476687014}, // new double[] {-0.19099712185434603, 0.27875927708651727, 0.9411765853874385}, // new double[] {-0.0442756108258071, -0.31209170998518904, 0.9490197231061757}, // new double[] {0.22440292516688995, 0.18454482585677323, 0.9568628608249128}, // new double[] {-0.2629541190742445, 0.014052317808367206, 0.9647059985436499}, // new double[] {0.16295146363815008, -0.16611742248623276, 0.972549136262387}, // new double[] {-0.0067277687129258, 0.196940920700259, 0.9803922739811242}, // new double[] {-0.09939928891167696, -0.11623490192820132, 0.9882354116998613}, // new double[] {0.087819071249555, 0.010739372095533575, 0.9960785494185984}, // new double[] {0.0, 0.0, 0.0} // }; }