├── CHANGELOG ├── Gruntfile.coffee ├── LICENSE ├── README.md ├── bower.json ├── build ├── leap.rigged-hand-0.1.7.js └── leap.rigged-hand-0.1.7.min.js ├── examples ├── advanced.coffee ├── advanced.js ├── confidence2-49fps.json.lz └── lib │ ├── Stats.js │ ├── TrackballControls.js │ └── three.js ├── index.html ├── models ├── Game Quality Hand │ ├── Arm:Hand │ │ ├── Leapmotion_Basehand_Rig_Left.dae │ │ ├── Leapmotion_Basehand_Rig_Left.fbx │ │ ├── Leapmotion_Basehand_Rig_RIght.dae │ │ ├── Leapmotion_Basehand_Rig_Right.fbx │ │ └── leapmotion_basehand_lowpoly.obj │ ├── Handsolo │ │ ├── Leapmotion_Handsolo_Rig_Left.blend │ │ ├── Leapmotion_Handsolo_Rig_Left.dae │ │ ├── Leapmotion_Handsolo_Rig_Left.fbx │ │ ├── Leapmotion_Handsolo_Rig_Left.json │ │ ├── Leapmotion_Handsolo_Rig_RIght.dae │ │ ├── Leapmotion_Handsolo_Rig_Right.blend │ │ ├── Leapmotion_Handsolo_Rig_Right.fbx │ │ ├── Leapmotion_Handsolo_Rig_Right.json │ │ └── leapmotion_handsolo_lowpoly.obj │ ├── leapmotion_basehand_diffuse.tga.zip │ └── leapmotion_basehand_normals.tga.zip ├── Other │ └── Hand Pair.dae ├── Readme.md ├── Revamped Hand │ ├── handrevamp_hipoly_rig_left.dae │ ├── handrevamp_hipoly_rig_left.fbx │ ├── handrevamp_hipoly_rig_right.dae │ ├── handrevamp_hipoly_rig_right.fbx │ ├── handrevamp_lowpoly_rig_left.dae │ ├── handrevamp_lowpoly_rig_left.fbx │ ├── handrevamp_lowpoly_rig_right.dae │ └── handrevamp_lowpoly_rig_right.fbx └── Test Rig │ ├── Leapmotion_Basehand_Rig_Left.dae │ ├── Leapmotion_Basehand_Rig_Left.fbx │ ├── Leapmotion_Basehand_Rig_Right.dae │ └── Leapmotion_Basehand_Rig_Right.fbx ├── package.json ├── quickstart.html └── src ├── leap.rigged-hand.coffee ├── lib └── Detector.js └── models ├── hand_models_v1.js └── left_hand_terrence_3.js /CHANGELOG: -------------------------------------------------------------------------------- 1 | # 0.1.7 2 | - THREE.js r70 support 3 | 4 | # 0.1.6 5 | - Fix an issue introduced in 0.1.5 which caused the hand mesh to be incorrectly scaled 6 | - Remove deprecated scale and offset options (please use transform plugin instead) 7 | 8 | 9 | # 0.1.5 10 | - Fixed issue where rigged hand would not scale correctly based upon leap frame data 11 | - Scale and Offset parameters are now discouraged in favor of the transform plugin 12 | - offset: null is now accepted 13 | - The scale of the camera and hand are now based upon actual leap data 14 | - the default camera position is moved from [0,6,30] to [0,160,400] 15 | - the default offset is now [0,-100,0] from [0,-10,0] 16 | - THREE.Vector3.fromLeap no longer accepts scale as a second parameter. 17 | 18 | # 0.1.2 19 | - Speed up hands entering the field of view by caching mesh data 20 | - Fix issue where hand events would throw errors when `controller` not available on window. 21 | 22 | # 0.1.1 23 | 24 | # 0.1.0 25 | 26 | Initial Build -------------------------------------------------------------------------------- /Gruntfile.coffee: -------------------------------------------------------------------------------- 1 | module.exports = (grunt) -> 2 | 3 | filename = "leap.rigged-hand-<%= pkg.version %>" 4 | 5 | grunt.initConfig 6 | pkg: grunt.file.readJSON("package.json") 7 | # note that for performance, watch does not minify. be sure to do so before shipping. 8 | watch: { 9 | options: { 10 | livereload: true 11 | atBegin: true 12 | } 13 | coffee: { 14 | files: ['src/*.coffee', 'examples/*.coffee'], 15 | tasks: ['default-no-uglify'], 16 | options: { 17 | spawn: false, 18 | }, 19 | }, 20 | js: { 21 | files: ['src/models/*.js'], 22 | tasks: ['default-no-uglify'], 23 | options: { 24 | spawn: false, 25 | }, 26 | }, 27 | html: { 28 | files: ['./*.html'], 29 | tasks: [], 30 | options: { 31 | spawn: false, 32 | }, 33 | }, 34 | grunt: { 35 | files: ['Gruntfile.coffee'], 36 | tasks: ['default-no-uglify'] 37 | } 38 | }, 39 | coffee: 40 | build: 41 | files: [{ 42 | expand: true 43 | cwd: 'src/' 44 | src: 'leap.rigged-hand.coffee' 45 | dest: 'build/' 46 | rename: (task, path, options)-> 47 | task + filename + '.js' 48 | }, 49 | { 50 | expand: true 51 | cwd: 'examples/' 52 | src: '*.coffee' 53 | dest: 'examples/' 54 | rename: (task, path, options)-> 55 | task + path.replace('.coffee', '.js') 56 | }] 57 | concat: { 58 | build: { 59 | src: ['src/lib/*.js', 'src/models/hand_models_v1.js', 'build/' + filename + '.js'], 60 | dest: 'build/' + filename + '.js' 61 | options: { 62 | banner: ";(function( window, undefined ){\n\n", 63 | footer: "\n}( window ));" 64 | } 65 | } 66 | } 67 | 'string-replace': { 68 | build: { 69 | files: { 70 | './': './*.html' 71 | } 72 | options:{ 73 | replacements: [ 74 | { 75 | pattern: /leap.rigged-hand-*\.js/ 76 | replacement: filename + '.js' 77 | } 78 | ] 79 | } 80 | } 81 | } 82 | clean: { 83 | build: { 84 | src: ['./build/*'] 85 | } 86 | } 87 | uglify: { 88 | build: { 89 | src: "build/#{filename}.js" 90 | dest: "build/#{filename}.min.js" 91 | } 92 | } 93 | usebanner: { 94 | build: { 95 | options: { 96 | banner: '/* 97 | \n * LeapJS Rigged Hand - v<%= pkg.version %> - <%= grunt.template.today(\"yyyy-mm-dd\") %> 98 | \n * http://github.com/leapmotion/leapjs-rigged-hand/ 99 | \n * 100 | \n * Copyright <%= grunt.template.today(\"yyyy\") %> LeapMotion, Inc 101 | \n * 102 | \n * Licensed under the Apache License, Version 2.0 (the "License"); 103 | \n * you may not use this file except in compliance with the License. 104 | \n * You may obtain a copy of the License at 105 | \n * 106 | \n * http://www.apache.org/licenses/LICENSE-2.0 107 | \n * 108 | \n * Unless required by applicable law or agreed to in writing, software 109 | \n * distributed under the License is distributed on an "AS IS" BASIS, 110 | \n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 111 | \n * See the License for the specific language governing permissions and 112 | \n * limitations under the License. 113 | \n * 114 | \n */ 115 | \n' 116 | } 117 | src: ["build/#{filename}.js", "build/#{filename}.min.js"] 118 | } 119 | } 120 | connect: { 121 | server: { 122 | options: { 123 | port: 8000 124 | } 125 | } 126 | } 127 | 128 | require('load-grunt-tasks')(grunt); 129 | 130 | 131 | grunt.registerTask('serve', [ 132 | 'default-no-uglify', 133 | 'connect', 134 | 'watch', 135 | ]); 136 | 137 | grunt.registerTask('default-no-uglify', [ 138 | 'clean', 139 | 'coffee', 140 | 'concat', 141 | 'string-replace' 142 | ]); 143 | 144 | grunt.registerTask('default', [ 145 | 'clean', 146 | 'coffee', 147 | 'concat', 148 | 'string-replace', 149 | 'uglify', 150 | 'usebanner' 151 | ]); 152 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | 2 | Apache License 3 | Version 2.0, January 2004 4 | http://www.apache.org/licenses/ 5 | 6 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 7 | 8 | 1. Definitions. 9 | 10 | "License" shall mean the terms and conditions for use, reproduction, 11 | and distribution as defined by Sections 1 through 9 of this document. 12 | 13 | "Licensor" shall mean the copyright owner or entity authorized by 14 | the copyright owner that is granting the License. 15 | 16 | "Legal Entity" shall mean the union of the acting entity and all 17 | other entities that control, are controlled by, or are under common 18 | control with that entity. For the purposes of this definition, 19 | "control" means (i) the power, direct or indirect, to cause the 20 | direction or management of such entity, whether by contract or 21 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 22 | outstanding shares, or (iii) beneficial ownership of such entity. 23 | 24 | "You" (or "Your") shall mean an individual or Legal Entity 25 | exercising permissions granted by this License. 26 | 27 | "Source" form shall mean the preferred form for making modifications, 28 | including but not limited to software source code, documentation 29 | source, and configuration files. 30 | 31 | "Object" form shall mean any form resulting from mechanical 32 | transformation or translation of a Source form, including but 33 | not limited to compiled object code, generated documentation, 34 | and conversions to other media types. 35 | 36 | "Work" shall mean the work of authorship, whether in Source or 37 | Object form, made available under the License, as indicated by a 38 | copyright notice that is included in or attached to the work 39 | (an example is provided in the Appendix below). 40 | 41 | "Derivative Works" shall mean any work, whether in Source or Object 42 | form, that is based on (or derived from) the Work and for which the 43 | editorial revisions, annotations, elaborations, or other modifications 44 | represent, as a whole, an original work of authorship. For the purposes 45 | of this License, Derivative Works shall not include works that remain 46 | separable from, or merely link (or bind by name) to the interfaces of, 47 | the Work and Derivative Works thereof. 48 | 49 | "Contribution" shall mean any work of authorship, including 50 | the original version of the Work and any modifications or additions 51 | to that Work or Derivative Works thereof, that is intentionally 52 | submitted to Licensor for inclusion in the Work by the copyright owner 53 | or by an individual or Legal Entity authorized to submit on behalf of 54 | the copyright owner. For the purposes of this definition, "submitted" 55 | means any form of electronic, verbal, or written communication sent 56 | to the Licensor or its representatives, including but not limited to 57 | communication on electronic mailing lists, source code control systems, 58 | and issue tracking systems that are managed by, or on behalf of, the 59 | Licensor for the purpose of discussing and improving the Work, but 60 | excluding communication that is conspicuously marked or otherwise 61 | designated in writing by the copyright owner as "Not a Contribution." 62 | 63 | "Contributor" shall mean Licensor and any individual or Legal Entity 64 | on behalf of whom a Contribution has been received by Licensor and 65 | subsequently incorporated within the Work. 66 | 67 | 2. Grant of Copyright License. Subject to the terms and conditions of 68 | this License, each Contributor hereby grants to You a perpetual, 69 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 70 | copyright license to reproduce, prepare Derivative Works of, 71 | publicly display, publicly perform, sublicense, and distribute the 72 | Work and such Derivative Works in Source or Object form. 73 | 74 | 3. Grant of Patent License. Subject to the terms and conditions of 75 | this License, each Contributor hereby grants to You a perpetual, 76 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 77 | (except as stated in this section) patent license to make, have made, 78 | use, offer to sell, sell, import, and otherwise transfer the Work, 79 | where such license applies only to those patent claims licensable 80 | by such Contributor that are necessarily infringed by their 81 | Contribution(s) alone or by combination of their Contribution(s) 82 | with the Work to which such Contribution(s) was submitted. If You 83 | institute patent litigation against any entity (including a 84 | cross-claim or counterclaim in a lawsuit) alleging that the Work 85 | or a Contribution incorporated within the Work constitutes direct 86 | or contributory patent infringement, then any patent licenses 87 | granted to You under this License for that Work shall terminate 88 | as of the date such litigation is filed. 89 | 90 | 4. Redistribution. You may reproduce and distribute copies of the 91 | Work or Derivative Works thereof in any medium, with or without 92 | modifications, and in Source or Object form, provided that You 93 | meet the following conditions: 94 | 95 | (a) You must give any other recipients of the Work or 96 | Derivative Works a copy of this License; and 97 | 98 | (b) You must cause any modified files to carry prominent notices 99 | stating that You changed the files; and 100 | 101 | (c) You must retain, in the Source form of any Derivative Works 102 | that You distribute, all copyright, patent, trademark, and 103 | attribution notices from the Source form of the Work, 104 | excluding those notices that do not pertain to any part of 105 | the Derivative Works; and 106 | 107 | (d) If the Work includes a "NOTICE" text file as part of its 108 | distribution, then any Derivative Works that You distribute must 109 | include a readable copy of the attribution notices contained 110 | within such NOTICE file, excluding those notices that do not 111 | pertain to any part of the Derivative Works, in at least one 112 | of the following places: within a NOTICE text file distributed 113 | as part of the Derivative Works; within the Source form or 114 | documentation, if provided along with the Derivative Works; or, 115 | within a display generated by the Derivative Works, if and 116 | wherever such third-party notices normally appear. The contents 117 | of the NOTICE file are for informational purposes only and 118 | do not modify the License. You may add Your own attribution 119 | notices within Derivative Works that You distribute, alongside 120 | or as an addendum to the NOTICE text from the Work, provided 121 | that such additional attribution notices cannot be construed 122 | as modifying the License. 123 | 124 | You may add Your own copyright statement to Your modifications and 125 | may provide additional or different license terms and conditions 126 | for use, reproduction, or distribution of Your modifications, or 127 | for any such Derivative Works as a whole, provided Your use, 128 | reproduction, and distribution of the Work otherwise complies with 129 | the conditions stated in this License. 130 | 131 | 5. Submission of Contributions. Unless You explicitly state otherwise, 132 | any Contribution intentionally submitted for inclusion in the Work 133 | by You to the Licensor shall be under the terms and conditions of 134 | this License, without any additional terms or conditions. 135 | Notwithstanding the above, nothing herein shall supersede or modify 136 | the terms of any separate license agreement you may have executed 137 | with Licensor regarding such Contributions. 138 | 139 | 6. Trademarks. This License does not grant permission to use the trade 140 | names, trademarks, service marks, or product names of the Licensor, 141 | except as required for reasonable and customary use in describing the 142 | origin of the Work and reproducing the content of the NOTICE file. 143 | 144 | 7. Disclaimer of Warranty. Unless required by applicable law or 145 | agreed to in writing, Licensor provides the Work (and each 146 | Contributor provides its Contributions) on an "AS IS" BASIS, 147 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 148 | implied, including, without limitation, any warranties or conditions 149 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 150 | PARTICULAR PURPOSE. You are solely responsible for determining the 151 | appropriateness of using or redistributing the Work and assume any 152 | risks associated with Your exercise of permissions under this License. 153 | 154 | 8. Limitation of Liability. In no event and under no legal theory, 155 | whether in tort (including negligence), contract, or otherwise, 156 | unless required by applicable law (such as deliberate and grossly 157 | negligent acts) or agreed to in writing, shall any Contributor be 158 | liable to You for damages, including any direct, indirect, special, 159 | incidental, or consequential damages of any character arising as a 160 | result of this License or out of the use or inability to use the 161 | Work (including but not limited to damages for loss of goodwill, 162 | work stoppage, computer failure or malfunction, or any and all 163 | other commercial damages or losses), even if such Contributor 164 | has been advised of the possibility of such damages. 165 | 166 | 9. Accepting Warranty or Additional Liability. While redistributing 167 | the Work or Derivative Works thereof, You may choose to offer, 168 | and charge a fee for, acceptance of support, warranty, indemnity, 169 | or other liability obligations and/or rights consistent with this 170 | License. However, in accepting such obligations, You may act only 171 | on Your own behalf and on Your sole responsibility, not on behalf 172 | of any other Contributor, and only if You agree to indemnify, 173 | defend, and hold each Contributor harmless for any liability 174 | incurred by, or claims asserted against, such Contributor by reason 175 | of your accepting any such warranty or additional liability. 176 | 177 | END OF TERMS AND CONDITIONS 178 | 179 | APPENDIX: How to apply the Apache License to your work. 180 | 181 | To apply the Apache License to your work, attach the following 182 | boilerplate notice, with the fields enclosed by brackets "[]" 183 | replaced with your own identifying information. (Don't include 184 | the brackets!) The text should be enclosed in the appropriate 185 | comment syntax for the file format. We also recommend that a 186 | file or class name and description of purpose be included on the 187 | same "printed page" as the copyright notice for easier 188 | identification within third-party archives. 189 | 190 | Copyright [yyyy] [name of copyright owner] 191 | 192 | Licensed under the Apache License, Version 2.0 (the "License"); 193 | you may not use this file except in compliance with the License. 194 | You may obtain a copy of the License at 195 | 196 | http://www.apache.org/licenses/LICENSE-2.0 197 | 198 | Unless required by applicable law or agreed to in writing, software 199 | distributed under the License is distributed on an "AS IS" BASIS, 200 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 201 | See the License for the specific language governing permissions and 202 | limitations under the License. 203 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | JS Rigged Hand Plugin 2 | ============== 3 | 4 | This allows a Leap-Enabled hand to be added to any Three.JS scene. 5 | Requires LeapJS Skeletal 0.4.2 or greater with LeapJS-Plugins 0.1.3 or greater. 6 | 7 | - Live Demo: [http://leapmotion.github.io/leapjs-rigged-hand/](http://leapmotion.github.io/leapjs-rigged-hand/) 8 | - If you don't have a Leap, automatic mode is available. Give it a moment to load and then make sure you have the page in focus for playback. Insert your hand over the Leap to take control http://leapmotion.github.io/leapjs-rigged-hand/?playback=1 9 | 10 | ![hands](https://f.cloud.github.com/assets/407497/2405446/5e7ee120-aa50-11e3-8ac0-579b316efc04.png) 11 | 12 | Automatically adds or removes hand meshes to/from the scene as they come in to or out of view of the leap controller. 13 | 14 | 15 | ## Usage: 16 | 17 | ### Basic 18 | 19 | ```coffeescript 20 | # simplest possible usage, see `quickstart.html` 21 | (window.controller = new Leap.Controller) 22 | .use('riggedHand') 23 | .connect() 24 | ``` 25 | 26 | This will create a canvas with fixed position which covers the entire screen. A neat trick is to allow pointer-events to pass through the canvas with one CSS rule, so that you can interact with your page like normal. 27 | 28 | ```css 29 | canvas{ 30 | pointer-events: none; 31 | } 32 | ``` 33 | 34 | 35 | 36 | ### Advanced 37 | 38 | ```coffeescript 39 | # advanced configuration, see `index.html` and `main.coffee` 40 | (window.controller = new Leap.Controller) 41 | # handHold and handEntry are dependencies of this plugin, available to the controller through leap-plugins.js 42 | # By default rigged-hand will use these, but we can call explicitly to provide configuration: 43 | .use('handHold', {}) 44 | .use('handEntry', {}) 45 | .use('riggedHand', { 46 | parent: scene 47 | 48 | # this is called on every animationFrame 49 | renderFn: -> 50 | renderer.render(scene, camera) 51 | # Here we update the camera controls for clicking and rotating 52 | controls.update() 53 | 54 | # These options are merged with the material options hash 55 | # Any valid Three.js material options are valid here. 56 | materialOptions: { 57 | wireframe: true, 58 | color: new THREE.Color(0xff0000) 59 | } 60 | geometryOptions: {} 61 | 62 | # This will show pink dots at the raw position of every leap joint. 63 | # they will be slightly offset from the rig shape, due to it having slightly different proportions. 64 | dotsMode: true 65 | 66 | # Sets the default position offset from the parent/scene. Default of new THREE.Vector3(0,-10,0) 67 | offset: new THREE.Vector3(0,0,0) 68 | 69 | # sets the scale of the mesh in the scene. The default scale works with a camera of distance ~15. 70 | scale: 1.5 71 | 72 | # Allows hand movement to be scaled independently of hand size. 73 | # With a value of 2, the hand will cover twice the distance on screen as it does in the world. 74 | positionScale: 2 75 | 76 | # allows 2d text to be attached to joint positions on the screen 77 | # Labels are by default white text with a black dropshadow 78 | # this method is called for every bone on each frame 79 | # boneMeshes are named Finger_xx, where the first digit is the finger number, and the second the bone, 0 indexed. 80 | boneLabels: (boneMesh, leapHand)-> 81 | return boneMesh.name 82 | 83 | # allows individual bones to be colorized 84 | # Here we turn thumb and index finger blue while pinching 85 | # this method is called for every bone on each frame 86 | # should return an object with hue, saturation, and an optional lightness ranging from 0 to 1 87 | # http://threejs.org/docs/#Reference/Math/Color [setHSL] 88 | boneColors: (boneMesh, leapHand)-> 89 | if (boneMesh.name.indexOf('Finger_0') == 0) || (boneMesh.name.indexOf('Finger_1') == 0) 90 | return { 91 | hue: 0.6, 92 | saturation: leapHand.pinchStrength 93 | } 94 | 95 | # This will add a warning message to the page on browsers which do not support WebGL or do not have it enabled. 96 | # By default, this will be used unless a `parent` scene is passed in. 97 | # This uses @mrdoob's Detector.js 98 | # Chrome, Firefox, Safari Developer mode, and IE11 all support WebGL. http://caniuse.com/webgl 99 | checkWebGL: true 100 | 101 | }) 102 | .connect() 103 | ``` 104 | 105 | Note that the size of this file is quite large, as it includes left and right hand models. It is recommended that you 106 | include the files [from our CDN](https://developer.leapmotion.com/leapjs/plugins), as that will encourage browser caching 107 | and ensure the assets are gzipped from 845KB to 348KB before sending. 108 | 109 | ### Scope objects 110 | 111 | Certain objects are made available on the plugin scope. This is the same "options" object which is passed in to `use`. 112 | 113 | ```coffeescript 114 | scope = controller.plugins.riggedHand; 115 | 116 | scope.camera # THREE.js camera 117 | 118 | scope.scene # THREE.js camera 119 | 120 | scope.Detector # Can be used to detect webgl availability through `if !!Detector.webgl` 121 | ``` 122 | 123 | There are many which are currently undocumented. Inspect the object manually to discover. 124 | 125 | ### Events 126 | 127 | `riggedHand.meshAdded` and `riggedHand.meshRemoved` are available. These may be useful to customize behaviors of the 128 | hand or change defaults. By default, `material.opacity == 0.7`, `material.depthTest == true`, and 129 | `handMesh.castShadow == true`, but these could be customized in the event callback. 130 | 131 | ```javascript 132 | controller.on('riggedHand.meshAdded', function(handMesh, leapHand){ 133 | handMesh.material.opacity = 1; 134 | }); 135 | ``` 136 | 137 | ### Scene Position 138 | 139 | `handMesh.scenePosition(leapPosition, scenePosition)` can be used to convert coordinates from Leap Space to THREE scene space. 140 | leapPosition should be an array [x,y,z] as found on Leap frames, scenePosition should be a `THREE.Vector3` which will be edited in-place. 141 | 142 | [LIVE DEMO](http://leapmotion.github.io/leapjs-rigged-hand/?scenePosition=true) 143 | 144 | 145 | ```coffeescript 146 | sphere = new THREE.Mesh( 147 | new THREE.SphereGeometry(1), 148 | new THREE.MeshBasicMaterial(0x0000ff) 149 | ) 150 | scene.add(sphere) 151 | 152 | controller.on 'frame', (frame)-> 153 | if hand = frame.hands[0] 154 | handMesh = frame.hands[0].data('riggedHand.mesh') 155 | 156 | handMesh.scenePosition(hand.indexFinger.tipPosition, sphere.position) 157 | 158 | ``` 159 | 160 | 161 | ### Screen Position 162 | 163 | When a hand is on the screen, that hand will be available to your application (such as in a plugin or on 'frame' callback) 164 | through `frame.hands[index].data('riggedHand.mesh')`. This will be the Three.js mesh, as is. 165 | 166 | To get the css window coordinates of anything in leap-space, use the `handMesh.screenPosition` method, as seen in 167 | main.coffee. The number returned will be distance from the bottom left corner of the WebGL canvas. 168 | 169 | Note that if a custom scene is passed in, `scope.renderer` must also be passed in/set. 170 | 171 | ```coffeescript 172 | controller.on 'frame', (frame)-> 173 | if hand = frame.hands[0] 174 | handMesh = frame.hands[0].data('riggedHand.mesh') 175 | # to use screenPosition, we pass in any leap vector3 and the camera 176 | screenPosition = handMesh.screenPosition( 177 | hand.fingers[1].tipPosition 178 | ) 179 | cursor.style.left = screenPosition.x 180 | cursor.style.bottom = screenPosition.y 181 | ``` 182 | 183 | 184 | 185 | Contributing 186 | =============== 187 | 188 | #### Open an issue! 189 | - https://github.com/leapmotion/leapjs-plugins/issues 190 | - We listen for bug reports, feature requests, contributions, an so on :-) 191 | -------------------------------------------------------------------------------- /bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "leapjs-rigged-hand", 3 | "version": "0.1.4", 4 | "homepage": "https://github.com/leapmotion/leapjs-rigged-hand", 5 | "authors": [ 6 | "Peter Ehrlich " 7 | ], 8 | "description": "A live skinned hand for the Leap Motion Controller", 9 | "main": "./build/leap.rigged-hand-0.1.4.js", 10 | "keywords": [ 11 | "leap", 12 | "leapmotion", 13 | "skinned", 14 | "rigged", 15 | "hand" 16 | ], 17 | "license": "Apache-2.0", 18 | "ignore": [ 19 | "**/.*", 20 | "node_modules", 21 | "bower_components", 22 | "test", 23 | "tests" 24 | ] 25 | } 26 | -------------------------------------------------------------------------------- /examples/advanced.coffee: -------------------------------------------------------------------------------- 1 | `// http://stackoverflow.com/questions/901115/how-can-i-get-query-string-values-in-javascript 2 | function getParam(name) { 3 | name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]"); 4 | var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"), 5 | results = regex.exec(location.search); 6 | return results == null ? "" : decodeURIComponent(results[1].replace(/\+/g, " ")); 7 | }` 8 | 9 | window.scene = null 10 | window.renderer = null 11 | window.camera = null 12 | 13 | 14 | initScene = (element)-> 15 | window.scene = new THREE.Scene() 16 | 17 | window.renderer = new THREE.WebGLRenderer(alpha: true) 18 | renderer.setClearColor(0x000000, 1) 19 | 20 | renderer.setSize(window.innerWidth, window.innerHeight) 21 | element.appendChild(renderer.domElement) 22 | 23 | axis = new THREE.AxisHelper(40) 24 | scene.add axis 25 | 26 | scene.add new THREE.AmbientLight(0x888888) 27 | 28 | pointLight = new THREE.PointLight(0xFFffff) 29 | pointLight.position = new THREE.Vector3(-20, 10, 0) 30 | pointLight.lookAt new THREE.Vector3(0, 0, 0) 31 | scene.add(pointLight) 32 | 33 | window.camera = new THREE.PerspectiveCamera( 34 | 45, 35 | window.innerWidth / window.innerHeight, 36 | 1, 37 | 1000 38 | ) 39 | 40 | 41 | camera.position.fromArray([0,160,400]) 42 | camera.lookAt(new THREE.Vector3(0, 0, 0)) 43 | window.controls = new THREE.TrackballControls( camera ) 44 | scene.add(camera) 45 | 46 | window.addEventListener( 'resize', -> 47 | camera.aspect = window.innerWidth / window.innerHeight 48 | camera.updateProjectionMatrix() 49 | 50 | renderer.setSize( window.innerWidth, window.innerHeight ) 51 | 52 | controls.handleResize() 53 | 54 | renderer.render(scene, camera) 55 | , false ); 56 | 57 | renderer.render(scene, camera) 58 | 59 | 60 | `// via Detector.js: 61 | var webglAvailable = ( function () { try { var canvas = document.createElement( 'canvas' ); return !! window.WebGLRenderingContext && ( canvas.getContext( 'webgl' ) || canvas.getContext( 'experimental-webgl' ) ); } catch( e ) { return false; } } )()` 62 | 63 | if webglAvailable 64 | initScene(document.body) 65 | 66 | stats = new Stats(); 67 | 68 | stats.domElement.style.position = 'absolute'; 69 | stats.domElement.style.left = '0px'; 70 | stats.domElement.style.top = '0px'; 71 | 72 | document.body.appendChild( stats.domElement ); 73 | 74 | 75 | window.controller = controller = (new Leap.Controller) 76 | controller.use('handHold') 77 | .use('transform', { 78 | # quaternion: (new THREE.Quaternion).setFromEuler(new THREE.Euler(0, Math.PI / 2, Math.PI / 2)) 79 | position: new THREE.Vector3(1,0,0) 80 | # scale: -> 81 | # new THREE.Vector3(0.5,0.5,0.5) 82 | }) 83 | .use('handEntry') 84 | .use('screenPosition') 85 | .use('riggedHand', { 86 | parent: scene 87 | renderer: renderer # needed for screenPosition later 88 | scale: getParam('scale') # a number, default of 1 89 | positionScale: getParam('positionScale') # a number, default of 1 90 | helper: true 91 | 92 | # This allows individual hand offsets 93 | # offset: (leapHand)-> 94 | # create a "breathing" effect.. 95 | # new THREE.Vector3(0, Math.sin( (new Date).getTime() / 1000 * 3), 0) 96 | 97 | offset: new THREE.Vector3(0, 0, 0) 98 | 99 | renderFn: ()-> 100 | renderer.render(scene, camera) 101 | controls.update() 102 | 103 | materialOptions: { 104 | wireframe: getParam('wireframe') 105 | } 106 | # set ?dots=true in the URL to show raw joint positions 107 | dotsMode: getParam('dots') 108 | stats: stats 109 | camera: camera 110 | boneLabels: (boneMesh, leapHand)-> 111 | # return boneMesh.name 112 | if boneMesh.name.indexOf('Finger_03') == 0 113 | leapHand.pinchStrength 114 | boneColors: (boneMesh, leapHand)-> 115 | if (boneMesh.name.indexOf('Finger_0') == 0) || (boneMesh.name.indexOf('Finger_1') == 0) 116 | return { 117 | hue: 0.6, 118 | saturation: leapHand.pinchStrength 119 | } 120 | checkWebGL: true 121 | }) 122 | .connect() 123 | 124 | 125 | if getParam('screenPosition') 126 | cursor = document.createElement('div'); 127 | cursor.style.width = '50px' 128 | cursor.style.height = '50px' 129 | cursor.style.position = 'absolute' 130 | cursor.style.zIndex = '10' 131 | 132 | cursor.style.backgroundColor = 'green' 133 | cursor.style.opacity = '0.8' 134 | cursor.style.color = 'white' 135 | cursor.style.fontFamily = 'curior' 136 | cursor.style.textAlign = 'center' 137 | cursor.innerHTML = "<div>" 138 | 139 | document.body.appendChild(cursor) 140 | 141 | controller.on 'frame', (frame)-> 142 | if hand = frame.hands[0] 143 | handMesh = frame.hands[0].data('riggedHand.mesh') 144 | # to use screenPosition, we pass in any leap vector3 and the camera 145 | screenPosition = handMesh.screenPosition(hand.fingers[1].tipPosition, camera) 146 | cursor.style.left = screenPosition.x 147 | cursor.style.bottom = screenPosition.y 148 | 149 | if getParam('scenePosition') 150 | 151 | window.sphere = new THREE.Mesh( 152 | new THREE.SphereGeometry(1), 153 | new THREE.MeshBasicMaterial(0x0000ff) 154 | ) 155 | scene.add(sphere) 156 | 157 | controller.on 'frame', (frame)-> 158 | if hand = frame.hands[0] 159 | handMesh = frame.hands[0].data('riggedHand.mesh') 160 | handMesh.scenePosition(hand.indexFinger.tipPosition, sphere.position) 161 | 162 | 163 | if getParam('playback') 164 | controller.use('playback', { 165 | recording: 'examples/confidence2-49fps.json.lz' 166 | autoPlay: true 167 | pauseOnHand: true 168 | }) 169 | 170 | 171 | if getParam('boneHand') 172 | riggedHand = controller.plugins.riggedHand 173 | 174 | controller.use('boneHand', { 175 | renderer: riggedHand.renderer 176 | scene: riggedHand.parent 177 | camera: riggedHand.camera 178 | render: -> 179 | }) 180 | -------------------------------------------------------------------------------- /examples/advanced.js: -------------------------------------------------------------------------------- 1 | (function() { 2 | // http://stackoverflow.com/questions/901115/how-can-i-get-query-string-values-in-javascript 3 | function getParam(name) { 4 | name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]"); 5 | var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"), 6 | results = regex.exec(location.search); 7 | return results == null ? "" : decodeURIComponent(results[1].replace(/\+/g, " ")); 8 | }; 9 | var controller, cursor, initScene, riggedHand, stats; 10 | 11 | window.scene = null; 12 | 13 | window.renderer = null; 14 | 15 | window.camera = null; 16 | 17 | initScene = function(element) { 18 | var axis, pointLight; 19 | window.scene = new THREE.Scene(); 20 | window.renderer = new THREE.WebGLRenderer({ 21 | alpha: true 22 | }); 23 | renderer.setClearColor(0x000000, 1); 24 | renderer.setSize(window.innerWidth, window.innerHeight); 25 | element.appendChild(renderer.domElement); 26 | axis = new THREE.AxisHelper(40); 27 | scene.add(axis); 28 | scene.add(new THREE.AmbientLight(0x888888)); 29 | pointLight = new THREE.PointLight(0xFFffff); 30 | pointLight.position = new THREE.Vector3(-20, 10, 0); 31 | pointLight.lookAt(new THREE.Vector3(0, 0, 0)); 32 | scene.add(pointLight); 33 | window.camera = new THREE.PerspectiveCamera(45, window.innerWidth / window.innerHeight, 1, 1000); 34 | camera.position.fromArray([0, 160, 400]); 35 | camera.lookAt(new THREE.Vector3(0, 0, 0)); 36 | window.controls = new THREE.TrackballControls(camera); 37 | scene.add(camera); 38 | window.addEventListener('resize', function() { 39 | camera.aspect = window.innerWidth / window.innerHeight; 40 | camera.updateProjectionMatrix(); 41 | renderer.setSize(window.innerWidth, window.innerHeight); 42 | controls.handleResize(); 43 | return renderer.render(scene, camera); 44 | }, false); 45 | return renderer.render(scene, camera); 46 | }; 47 | 48 | // via Detector.js: 49 | var webglAvailable = ( function () { try { var canvas = document.createElement( 'canvas' ); return !! window.WebGLRenderingContext && ( canvas.getContext( 'webgl' ) || canvas.getContext( 'experimental-webgl' ) ); } catch( e ) { return false; } } )(); 50 | 51 | if (webglAvailable) { 52 | initScene(document.body); 53 | } 54 | 55 | stats = new Stats(); 56 | 57 | stats.domElement.style.position = 'absolute'; 58 | 59 | stats.domElement.style.left = '0px'; 60 | 61 | stats.domElement.style.top = '0px'; 62 | 63 | document.body.appendChild(stats.domElement); 64 | 65 | window.controller = controller = new Leap.Controller; 66 | 67 | controller.use('handHold').use('transform', { 68 | position: new THREE.Vector3(1, 0, 0) 69 | }).use('handEntry').use('screenPosition').use('riggedHand', { 70 | parent: scene, 71 | renderer: renderer, 72 | scale: getParam('scale'), 73 | positionScale: getParam('positionScale'), 74 | helper: true, 75 | offset: new THREE.Vector3(0, 0, 0), 76 | renderFn: function() { 77 | renderer.render(scene, camera); 78 | return controls.update(); 79 | }, 80 | materialOptions: { 81 | wireframe: getParam('wireframe') 82 | }, 83 | dotsMode: getParam('dots'), 84 | stats: stats, 85 | camera: camera, 86 | boneLabels: function(boneMesh, leapHand) { 87 | if (boneMesh.name.indexOf('Finger_03') === 0) { 88 | return leapHand.pinchStrength; 89 | } 90 | }, 91 | boneColors: function(boneMesh, leapHand) { 92 | if ((boneMesh.name.indexOf('Finger_0') === 0) || (boneMesh.name.indexOf('Finger_1') === 0)) { 93 | return { 94 | hue: 0.6, 95 | saturation: leapHand.pinchStrength 96 | }; 97 | } 98 | }, 99 | checkWebGL: true 100 | }).connect(); 101 | 102 | if (getParam('screenPosition')) { 103 | cursor = document.createElement('div'); 104 | cursor.style.width = '50px'; 105 | cursor.style.height = '50px'; 106 | cursor.style.position = 'absolute'; 107 | cursor.style.zIndex = '10'; 108 | cursor.style.backgroundColor = 'green'; 109 | cursor.style.opacity = '0.8'; 110 | cursor.style.color = 'white'; 111 | cursor.style.fontFamily = 'curior'; 112 | cursor.style.textAlign = 'center'; 113 | cursor.innerHTML = "<div>"; 114 | document.body.appendChild(cursor); 115 | controller.on('frame', function(frame) { 116 | var hand, handMesh, screenPosition; 117 | if (hand = frame.hands[0]) { 118 | handMesh = frame.hands[0].data('riggedHand.mesh'); 119 | screenPosition = handMesh.screenPosition(hand.fingers[1].tipPosition, camera); 120 | cursor.style.left = screenPosition.x; 121 | return cursor.style.bottom = screenPosition.y; 122 | } 123 | }); 124 | } 125 | 126 | if (getParam('scenePosition')) { 127 | window.sphere = new THREE.Mesh(new THREE.SphereGeometry(1), new THREE.MeshBasicMaterial(0x0000ff)); 128 | scene.add(sphere); 129 | controller.on('frame', function(frame) { 130 | var hand, handMesh; 131 | if (hand = frame.hands[0]) { 132 | handMesh = frame.hands[0].data('riggedHand.mesh'); 133 | return handMesh.scenePosition(hand.indexFinger.tipPosition, sphere.position); 134 | } 135 | }); 136 | } 137 | 138 | if (getParam('playback')) { 139 | controller.use('playback', { 140 | recording: 'examples/confidence2-49fps.json.lz', 141 | autoPlay: true, 142 | pauseOnHand: true 143 | }); 144 | } 145 | 146 | if (getParam('boneHand')) { 147 | riggedHand = controller.plugins.riggedHand; 148 | controller.use('boneHand', { 149 | renderer: riggedHand.renderer, 150 | scene: riggedHand.parent, 151 | camera: riggedHand.camera, 152 | render: function() {} 153 | }); 154 | } 155 | 156 | }).call(this); 157 | -------------------------------------------------------------------------------- /examples/lib/Stats.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @author mrdoob / http://mrdoob.com/ 3 | */ 4 | 5 | var Stats = function () { 6 | 7 | var startTime = Date.now(), prevTime = startTime; 8 | var ms = 0, msMin = Infinity, msMax = 0; 9 | var fps = 0, fpsMin = Infinity, fpsMax = 0; 10 | var frames = 0, mode = 0; 11 | 12 | var container = document.createElement( 'div' ); 13 | container.id = 'stats'; 14 | container.addEventListener( 'mousedown', function ( event ) { event.preventDefault(); setMode( ++ mode % 2 ) }, false ); 15 | container.style.cssText = 'width:80px;opacity:0.9;cursor:pointer'; 16 | 17 | var fpsDiv = document.createElement( 'div' ); 18 | fpsDiv.id = 'fps'; 19 | fpsDiv.style.cssText = 'padding:0 0 3px 3px;text-align:left;background-color:#002'; 20 | container.appendChild( fpsDiv ); 21 | 22 | var fpsText = document.createElement( 'div' ); 23 | fpsText.id = 'fpsText'; 24 | fpsText.style.cssText = 'color:#0ff;font-family:Helvetica,Arial,sans-serif;font-size:9px;font-weight:bold;line-height:15px'; 25 | fpsText.innerHTML = 'FPS'; 26 | fpsDiv.appendChild( fpsText ); 27 | 28 | var fpsGraph = document.createElement( 'div' ); 29 | fpsGraph.id = 'fpsGraph'; 30 | fpsGraph.style.cssText = 'position:relative;width:74px;height:30px;background-color:#0ff'; 31 | fpsDiv.appendChild( fpsGraph ); 32 | 33 | while ( fpsGraph.children.length < 74 ) { 34 | 35 | var bar = document.createElement( 'span' ); 36 | bar.style.cssText = 'width:1px;height:30px;float:left;background-color:#113'; 37 | fpsGraph.appendChild( bar ); 38 | 39 | } 40 | 41 | var msDiv = document.createElement( 'div' ); 42 | msDiv.id = 'ms'; 43 | msDiv.style.cssText = 'padding:0 0 3px 3px;text-align:left;background-color:#020;display:none'; 44 | container.appendChild( msDiv ); 45 | 46 | var msText = document.createElement( 'div' ); 47 | msText.id = 'msText'; 48 | msText.style.cssText = 'color:#0f0;font-family:Helvetica,Arial,sans-serif;font-size:9px;font-weight:bold;line-height:15px'; 49 | msText.innerHTML = 'MS'; 50 | msDiv.appendChild( msText ); 51 | 52 | var msGraph = document.createElement( 'div' ); 53 | msGraph.id = 'msGraph'; 54 | msGraph.style.cssText = 'position:relative;width:74px;height:30px;background-color:#0f0'; 55 | msDiv.appendChild( msGraph ); 56 | 57 | while ( msGraph.children.length < 74 ) { 58 | 59 | var bar = document.createElement( 'span' ); 60 | bar.style.cssText = 'width:1px;height:30px;float:left;background-color:#131'; 61 | msGraph.appendChild( bar ); 62 | 63 | } 64 | 65 | var setMode = function ( value ) { 66 | 67 | mode = value; 68 | 69 | switch ( mode ) { 70 | 71 | case 0: 72 | fpsDiv.style.display = 'block'; 73 | msDiv.style.display = 'none'; 74 | break; 75 | case 1: 76 | fpsDiv.style.display = 'none'; 77 | msDiv.style.display = 'block'; 78 | break; 79 | } 80 | 81 | } 82 | 83 | var updateGraph = function ( dom, value ) { 84 | 85 | var child = dom.appendChild( dom.firstChild ); 86 | child.style.height = value + 'px'; 87 | 88 | } 89 | 90 | return { 91 | 92 | REVISION: 11, 93 | 94 | domElement: container, 95 | 96 | setMode: setMode, 97 | 98 | begin: function () { 99 | 100 | startTime = Date.now(); 101 | 102 | }, 103 | 104 | end: function () { 105 | 106 | var time = Date.now(); 107 | 108 | ms = time - startTime; 109 | msMin = Math.min( msMin, ms ); 110 | msMax = Math.max( msMax, ms ); 111 | 112 | msText.textContent = ms + ' MS (' + msMin + '-' + msMax + ')'; 113 | updateGraph( msGraph, Math.min( 30, 30 - ( ms / 200 ) * 30 ) ); 114 | 115 | frames ++; 116 | 117 | if ( time > prevTime + 1000 ) { 118 | 119 | fps = Math.round( ( frames * 1000 ) / ( time - prevTime ) ); 120 | fpsMin = Math.min( fpsMin, fps ); 121 | fpsMax = Math.max( fpsMax, fps ); 122 | 123 | fpsText.textContent = fps + ' FPS (' + fpsMin + '-' + fpsMax + ')'; 124 | updateGraph( fpsGraph, Math.min( 30, 30 - ( fps / 100 ) * 30 ) ); 125 | 126 | prevTime = time; 127 | frames = 0; 128 | 129 | } 130 | 131 | return time; 132 | 133 | }, 134 | 135 | update: function () { 136 | 137 | startTime = this.end(); 138 | 139 | } 140 | 141 | } 142 | 143 | }; 144 | -------------------------------------------------------------------------------- /examples/lib/TrackballControls.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @author Eberhard Graether / http://egraether.com/ 3 | * @author Mark Lundin / http://mark-lundin.com 4 | */ 5 | 6 | THREE.TrackballControls = function ( object, domElement ) { 7 | 8 | var _this = this; 9 | var STATE = { NONE: -1, ROTATE: 0, ZOOM: 1, PAN: 2, TOUCH_ROTATE: 3, TOUCH_ZOOM: 4, TOUCH_PAN: 5 }; 10 | 11 | this.object = object; 12 | this.domElement = ( domElement !== undefined ) ? domElement : document; 13 | 14 | // API 15 | 16 | this.enabled = true; 17 | 18 | this.screen = { left: 0, top: 0, width: 0, height: 0 }; 19 | 20 | this.rotateSpeed = 1.0; 21 | this.zoomSpeed = 1.2; 22 | this.panSpeed = 0.3; 23 | 24 | this.noRotate = false; 25 | this.noZoom = false; 26 | this.noPan = false; 27 | this.noRoll = false; 28 | 29 | this.staticMoving = false; 30 | this.dynamicDampingFactor = 0.2; 31 | 32 | this.minDistance = 0; 33 | this.maxDistance = Infinity; 34 | 35 | this.keys = [ 65 /*A*/, 83 /*S*/, 68 /*D*/ ]; 36 | 37 | // internals 38 | 39 | this.target = new THREE.Vector3(); 40 | 41 | var lastPosition = new THREE.Vector3(); 42 | 43 | var _state = STATE.NONE, 44 | _prevState = STATE.NONE, 45 | 46 | _eye = new THREE.Vector3(), 47 | 48 | _rotateStart = new THREE.Vector3(), 49 | _rotateEnd = new THREE.Vector3(), 50 | 51 | _zoomStart = new THREE.Vector2(), 52 | _zoomEnd = new THREE.Vector2(), 53 | 54 | _touchZoomDistanceStart = 0, 55 | _touchZoomDistanceEnd = 0, 56 | 57 | _panStart = new THREE.Vector2(), 58 | _panEnd = new THREE.Vector2(); 59 | 60 | // for reset 61 | 62 | this.target0 = this.target.clone(); 63 | this.position0 = this.object.position.clone(); 64 | this.up0 = this.object.up.clone(); 65 | 66 | // events 67 | 68 | var changeEvent = { type: 'change' }; 69 | var startEvent = { type: 'start'}; 70 | var endEvent = { type: 'end'}; 71 | 72 | 73 | // methods 74 | 75 | this.handleResize = function () { 76 | 77 | if ( this.domElement === document ) { 78 | 79 | this.screen.left = 0; 80 | this.screen.top = 0; 81 | this.screen.width = window.innerWidth; 82 | this.screen.height = window.innerHeight; 83 | 84 | } else { 85 | 86 | this.screen = this.domElement.getBoundingClientRect(); 87 | // adjustments come from similar code in the jquery offset() function 88 | var d = this.domElement.ownerDocument.documentElement 89 | this.screen.left += window.pageXOffset - d.clientLeft 90 | this.screen.top += window.pageYOffset - d.clientTop 91 | 92 | } 93 | 94 | }; 95 | 96 | this.handleEvent = function ( event ) { 97 | 98 | if ( typeof this[ event.type ] == 'function' ) { 99 | 100 | this[ event.type ]( event ); 101 | 102 | } 103 | 104 | }; 105 | 106 | this.getMouseOnScreen = function ( pageX, pageY, vector ) { 107 | 108 | return vector.set( 109 | ( pageX - _this.screen.left ) / _this.screen.width, 110 | ( pageY - _this.screen.top ) / _this.screen.height 111 | ); 112 | 113 | }; 114 | 115 | this.getMouseProjectionOnBall = (function(){ 116 | 117 | var objectUp = new THREE.Vector3(), 118 | mouseOnBall = new THREE.Vector3(); 119 | 120 | 121 | return function ( pageX, pageY, projection ) { 122 | 123 | mouseOnBall.set( 124 | ( pageX - _this.screen.width * 0.5 - _this.screen.left ) / (_this.screen.width*.5), 125 | ( _this.screen.height * 0.5 + _this.screen.top - pageY ) / (_this.screen.height*.5), 126 | 0.0 127 | ); 128 | 129 | var length = mouseOnBall.length(); 130 | 131 | if ( _this.noRoll ) { 132 | 133 | if ( length < Math.SQRT1_2 ) { 134 | 135 | mouseOnBall.z = Math.sqrt( 1.0 - length*length ); 136 | 137 | } else { 138 | 139 | mouseOnBall.z = .5 / length; 140 | 141 | } 142 | 143 | } else if ( length > 1.0 ) { 144 | 145 | mouseOnBall.normalize(); 146 | 147 | } else { 148 | 149 | mouseOnBall.z = Math.sqrt( 1.0 - length * length ); 150 | 151 | } 152 | 153 | _eye.copy( _this.object.position ).sub( _this.target ); 154 | 155 | projection.copy( _this.object.up ).setLength( mouseOnBall.y ) 156 | projection.add( objectUp.copy( _this.object.up ).cross( _eye ).setLength( mouseOnBall.x ) ); 157 | projection.add( _eye.setLength( mouseOnBall.z ) ); 158 | 159 | return projection; 160 | } 161 | 162 | }()); 163 | 164 | this.rotateCamera = (function(){ 165 | 166 | var axis = new THREE.Vector3(), 167 | quaternion = new THREE.Quaternion(); 168 | 169 | 170 | return function () { 171 | 172 | var angle = Math.acos( _rotateStart.dot( _rotateEnd ) / _rotateStart.length() / _rotateEnd.length() ); 173 | 174 | if ( angle ) { 175 | 176 | axis.crossVectors( _rotateStart, _rotateEnd ).normalize(); 177 | 178 | angle *= _this.rotateSpeed; 179 | 180 | quaternion.setFromAxisAngle( axis, -angle ); 181 | 182 | _eye.applyQuaternion( quaternion ); 183 | _this.object.up.applyQuaternion( quaternion ); 184 | 185 | _rotateEnd.applyQuaternion( quaternion ); 186 | 187 | if ( _this.staticMoving ) { 188 | 189 | _rotateStart.copy( _rotateEnd ); 190 | 191 | } else { 192 | 193 | quaternion.setFromAxisAngle( axis, angle * ( _this.dynamicDampingFactor - 1.0 ) ); 194 | _rotateStart.applyQuaternion( quaternion ); 195 | 196 | } 197 | 198 | } 199 | } 200 | 201 | }()); 202 | 203 | this.zoomCamera = function () { 204 | 205 | if ( _state === STATE.TOUCH_ZOOM ) { 206 | 207 | var factor = _touchZoomDistanceStart / _touchZoomDistanceEnd; 208 | _touchZoomDistanceStart = _touchZoomDistanceEnd; 209 | _eye.multiplyScalar( factor ); 210 | 211 | } else { 212 | 213 | var factor = 1.0 + ( _zoomEnd.y - _zoomStart.y ) * _this.zoomSpeed; 214 | 215 | if ( factor !== 1.0 && factor > 0.0 ) { 216 | 217 | _eye.multiplyScalar( factor ); 218 | 219 | if ( _this.staticMoving ) { 220 | 221 | _zoomStart.copy( _zoomEnd ); 222 | 223 | } else { 224 | 225 | _zoomStart.y += ( _zoomEnd.y - _zoomStart.y ) * this.dynamicDampingFactor; 226 | 227 | } 228 | 229 | } 230 | 231 | } 232 | 233 | }; 234 | 235 | this.panCamera = (function(){ 236 | 237 | var mouseChange = new THREE.Vector2(), 238 | objectUp = new THREE.Vector3(), 239 | pan = new THREE.Vector3(); 240 | 241 | return function () { 242 | 243 | mouseChange.copy( _panEnd ).sub( _panStart ); 244 | 245 | if ( mouseChange.lengthSq() ) { 246 | 247 | mouseChange.multiplyScalar( _eye.length() * _this.panSpeed ); 248 | 249 | pan.copy( _eye ).cross( _this.object.up ).setLength( mouseChange.x ); 250 | pan.add( objectUp.copy( _this.object.up ).setLength( mouseChange.y ) ); 251 | 252 | _this.object.position.add( pan ); 253 | _this.target.add( pan ); 254 | 255 | if ( _this.staticMoving ) { 256 | 257 | _panStart.copy( _panEnd ); 258 | 259 | } else { 260 | 261 | _panStart.add( mouseChange.subVectors( _panEnd, _panStart ).multiplyScalar( _this.dynamicDampingFactor ) ); 262 | 263 | } 264 | 265 | } 266 | } 267 | 268 | }()); 269 | 270 | this.checkDistances = function () { 271 | 272 | if ( !_this.noZoom || !_this.noPan ) { 273 | 274 | if ( _eye.lengthSq() > _this.maxDistance * _this.maxDistance ) { 275 | 276 | _this.object.position.addVectors( _this.target, _eye.setLength( _this.maxDistance ) ); 277 | 278 | } 279 | 280 | if ( _eye.lengthSq() < _this.minDistance * _this.minDistance ) { 281 | 282 | _this.object.position.addVectors( _this.target, _eye.setLength( _this.minDistance ) ); 283 | 284 | } 285 | 286 | } 287 | 288 | }; 289 | 290 | this.update = function () { 291 | 292 | _eye.subVectors( _this.object.position, _this.target ); 293 | 294 | if ( !_this.noRotate ) { 295 | 296 | _this.rotateCamera(); 297 | 298 | } 299 | 300 | if ( !_this.noZoom ) { 301 | 302 | _this.zoomCamera(); 303 | 304 | } 305 | 306 | if ( !_this.noPan ) { 307 | 308 | _this.panCamera(); 309 | 310 | } 311 | 312 | _this.object.position.addVectors( _this.target, _eye ); 313 | 314 | _this.checkDistances(); 315 | 316 | _this.object.lookAt( _this.target ); 317 | 318 | if ( lastPosition.distanceToSquared( _this.object.position ) > 0 ) { 319 | 320 | _this.dispatchEvent( changeEvent ); 321 | 322 | lastPosition.copy( _this.object.position ); 323 | 324 | } 325 | 326 | }; 327 | 328 | this.reset = function () { 329 | 330 | _state = STATE.NONE; 331 | _prevState = STATE.NONE; 332 | 333 | _this.target.copy( _this.target0 ); 334 | _this.object.position.copy( _this.position0 ); 335 | _this.object.up.copy( _this.up0 ); 336 | 337 | _eye.subVectors( _this.object.position, _this.target ); 338 | 339 | _this.object.lookAt( _this.target ); 340 | 341 | _this.dispatchEvent( changeEvent ); 342 | 343 | lastPosition.copy( _this.object.position ); 344 | 345 | }; 346 | 347 | // listeners 348 | 349 | function keydown( event ) { 350 | 351 | if ( _this.enabled === false ) return; 352 | 353 | window.removeEventListener( 'keydown', keydown ); 354 | 355 | _prevState = _state; 356 | 357 | if ( _state !== STATE.NONE ) { 358 | 359 | return; 360 | 361 | } else if ( event.keyCode === _this.keys[ STATE.ROTATE ] && !_this.noRotate ) { 362 | 363 | _state = STATE.ROTATE; 364 | 365 | } else if ( event.keyCode === _this.keys[ STATE.ZOOM ] && !_this.noZoom ) { 366 | 367 | _state = STATE.ZOOM; 368 | 369 | } else if ( event.keyCode === _this.keys[ STATE.PAN ] && !_this.noPan ) { 370 | 371 | _state = STATE.PAN; 372 | 373 | } 374 | 375 | } 376 | 377 | function keyup( event ) { 378 | 379 | if ( _this.enabled === false ) return; 380 | 381 | _state = _prevState; 382 | 383 | window.addEventListener( 'keydown', keydown, false ); 384 | 385 | } 386 | 387 | function mousedown( event ) { 388 | 389 | if ( _this.enabled === false ) return; 390 | 391 | event.preventDefault(); 392 | event.stopPropagation(); 393 | 394 | if ( _state === STATE.NONE ) { 395 | 396 | _state = event.button; 397 | 398 | } 399 | 400 | if ( _state === STATE.ROTATE && !_this.noRotate ) { 401 | 402 | _this.getMouseProjectionOnBall( event.pageX, event.pageY, _rotateStart ); 403 | _rotateEnd.copy(_rotateStart) 404 | 405 | } else if ( _state === STATE.ZOOM && !_this.noZoom ) { 406 | 407 | _this.getMouseOnScreen( event.pageX, event.pageY, _zoomStart ); 408 | _zoomEnd.copy(_zoomStart); 409 | 410 | } else if ( _state === STATE.PAN && !_this.noPan ) { 411 | 412 | _this.getMouseOnScreen( event.pageX, event.pageY, _panStart ); 413 | _panEnd.copy(_panStart) 414 | 415 | } 416 | 417 | document.addEventListener( 'mousemove', mousemove, false ); 418 | document.addEventListener( 'mouseup', mouseup, false ); 419 | _this.dispatchEvent( startEvent ); 420 | 421 | 422 | } 423 | 424 | function mousemove( event ) { 425 | 426 | if ( _this.enabled === false ) return; 427 | 428 | event.preventDefault(); 429 | event.stopPropagation(); 430 | 431 | if ( _state === STATE.ROTATE && !_this.noRotate ) { 432 | 433 | _this.getMouseProjectionOnBall( event.pageX, event.pageY, _rotateEnd ); 434 | 435 | } else if ( _state === STATE.ZOOM && !_this.noZoom ) { 436 | 437 | _this.getMouseOnScreen( event.pageX, event.pageY, _zoomEnd ); 438 | 439 | } else if ( _state === STATE.PAN && !_this.noPan ) { 440 | 441 | _this.getMouseOnScreen( event.pageX, event.pageY, _panEnd ); 442 | 443 | } 444 | 445 | } 446 | 447 | function mouseup( event ) { 448 | 449 | if ( _this.enabled === false ) return; 450 | 451 | event.preventDefault(); 452 | event.stopPropagation(); 453 | 454 | _state = STATE.NONE; 455 | 456 | document.removeEventListener( 'mousemove', mousemove ); 457 | document.removeEventListener( 'mouseup', mouseup ); 458 | _this.dispatchEvent( endEvent ); 459 | 460 | } 461 | 462 | function mousewheel( event ) { 463 | 464 | if ( _this.enabled === false ) return; 465 | 466 | event.preventDefault(); 467 | event.stopPropagation(); 468 | 469 | var delta = 0; 470 | 471 | if ( event.wheelDelta ) { // WebKit / Opera / Explorer 9 472 | 473 | delta = event.wheelDelta / 40; 474 | 475 | } else if ( event.detail ) { // Firefox 476 | 477 | delta = - event.detail / 3; 478 | 479 | } 480 | 481 | _zoomStart.y += delta * 0.01; 482 | _this.dispatchEvent( startEvent ); 483 | _this.dispatchEvent( endEvent ); 484 | 485 | } 486 | 487 | function touchstart( event ) { 488 | 489 | if ( _this.enabled === false ) return; 490 | 491 | switch ( event.touches.length ) { 492 | 493 | case 1: 494 | _state = STATE.TOUCH_ROTATE; 495 | _rotateEnd.copy( _this.getMouseProjectionOnBall( event.touches[ 0 ].pageX, event.touches[ 0 ].pageY, _rotateStart )); 496 | break; 497 | 498 | case 2: 499 | _state = STATE.TOUCH_ZOOM; 500 | var dx = event.touches[ 0 ].pageX - event.touches[ 1 ].pageX; 501 | var dy = event.touches[ 0 ].pageY - event.touches[ 1 ].pageY; 502 | _touchZoomDistanceEnd = _touchZoomDistanceStart = Math.sqrt( dx * dx + dy * dy ); 503 | break; 504 | 505 | case 3: 506 | _state = STATE.TOUCH_PAN; 507 | _panEnd.copy( _this.getMouseOnScreen( event.touches[ 0 ].pageX, event.touches[ 0 ].pageY, _panStart )); 508 | break; 509 | 510 | default: 511 | _state = STATE.NONE; 512 | 513 | } 514 | _this.dispatchEvent( startEvent ); 515 | 516 | 517 | } 518 | 519 | function touchmove( event ) { 520 | 521 | if ( _this.enabled === false ) return; 522 | 523 | event.preventDefault(); 524 | event.stopPropagation(); 525 | 526 | switch ( event.touches.length ) { 527 | 528 | case 1: 529 | _this.getMouseProjectionOnBall( event.touches[ 0 ].pageX, event.touches[ 0 ].pageY, _rotateEnd ); 530 | break; 531 | 532 | case 2: 533 | var dx = event.touches[ 0 ].pageX - event.touches[ 1 ].pageX; 534 | var dy = event.touches[ 0 ].pageY - event.touches[ 1 ].pageY; 535 | _touchZoomDistanceEnd = Math.sqrt( dx * dx + dy * dy ) 536 | break; 537 | 538 | case 3: 539 | _this.getMouseOnScreen( event.touches[ 0 ].pageX, event.touches[ 0 ].pageY, _panEnd ); 540 | break; 541 | 542 | default: 543 | _state = STATE.NONE; 544 | 545 | } 546 | 547 | } 548 | 549 | function touchend( event ) { 550 | 551 | if ( _this.enabled === false ) return; 552 | 553 | switch ( event.touches.length ) { 554 | 555 | case 1: 556 | _rotateStart.copy( _this.getMouseProjectionOnBall( event.touches[ 0 ].pageX, event.touches[ 0 ].pageY, _rotateEnd )); 557 | break; 558 | 559 | case 2: 560 | _touchZoomDistanceStart = _touchZoomDistanceEnd = 0; 561 | break; 562 | 563 | case 3: 564 | _panStart.copy( _this.getMouseOnScreen( event.touches[ 0 ].pageX, event.touches[ 0 ].pageY, _panEnd )); 565 | break; 566 | 567 | } 568 | 569 | _state = STATE.NONE; 570 | _this.dispatchEvent( endEvent ); 571 | 572 | } 573 | 574 | this.domElement.addEventListener( 'contextmenu', function ( event ) { event.preventDefault(); }, false ); 575 | 576 | this.domElement.addEventListener( 'mousedown', mousedown, false ); 577 | 578 | this.domElement.addEventListener( 'mousewheel', mousewheel, false ); 579 | this.domElement.addEventListener( 'DOMMouseScroll', mousewheel, false ); // firefox 580 | 581 | this.domElement.addEventListener( 'touchstart', touchstart, false ); 582 | this.domElement.addEventListener( 'touchend', touchend, false ); 583 | this.domElement.addEventListener( 'touchmove', touchmove, false ); 584 | 585 | window.addEventListener( 'keydown', keydown, false ); 586 | window.addEventListener( 'keyup', keyup, false ); 587 | 588 | this.handleResize(); 589 | 590 | }; 591 | 592 | THREE.TrackballControls.prototype = Object.create( THREE.EventDispatcher.prototype ); 593 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Leap Rigged Hand 6 | 7 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 38 | 39 | 40 | 41 | -------------------------------------------------------------------------------- /models/Game Quality Hand/Arm:Hand/Leapmotion_Basehand_Rig_Left.fbx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leapmotion/leapjs-rigged-hand/f7767d2394353494d83ae7fd4bfa0046b9d17928/models/Game Quality Hand/Arm:Hand/Leapmotion_Basehand_Rig_Left.fbx -------------------------------------------------------------------------------- /models/Game Quality Hand/Arm:Hand/Leapmotion_Basehand_Rig_Right.fbx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leapmotion/leapjs-rigged-hand/f7767d2394353494d83ae7fd4bfa0046b9d17928/models/Game Quality Hand/Arm:Hand/Leapmotion_Basehand_Rig_Right.fbx -------------------------------------------------------------------------------- /models/Game Quality Hand/Handsolo/Leapmotion_Handsolo_Rig_Left.blend: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leapmotion/leapjs-rigged-hand/f7767d2394353494d83ae7fd4bfa0046b9d17928/models/Game Quality Hand/Handsolo/Leapmotion_Handsolo_Rig_Left.blend -------------------------------------------------------------------------------- /models/Game Quality Hand/Handsolo/Leapmotion_Handsolo_Rig_Left.fbx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leapmotion/leapjs-rigged-hand/f7767d2394353494d83ae7fd4bfa0046b9d17928/models/Game Quality Hand/Handsolo/Leapmotion_Handsolo_Rig_Left.fbx -------------------------------------------------------------------------------- /models/Game Quality Hand/Handsolo/Leapmotion_Handsolo_Rig_Right.blend: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leapmotion/leapjs-rigged-hand/f7767d2394353494d83ae7fd4bfa0046b9d17928/models/Game Quality Hand/Handsolo/Leapmotion_Handsolo_Rig_Right.blend -------------------------------------------------------------------------------- /models/Game Quality Hand/Handsolo/Leapmotion_Handsolo_Rig_Right.fbx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leapmotion/leapjs-rigged-hand/f7767d2394353494d83ae7fd4bfa0046b9d17928/models/Game Quality Hand/Handsolo/Leapmotion_Handsolo_Rig_Right.fbx -------------------------------------------------------------------------------- /models/Game Quality Hand/leapmotion_basehand_diffuse.tga.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leapmotion/leapjs-rigged-hand/f7767d2394353494d83ae7fd4bfa0046b9d17928/models/Game Quality Hand/leapmotion_basehand_diffuse.tga.zip -------------------------------------------------------------------------------- /models/Game Quality Hand/leapmotion_basehand_normals.tga.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leapmotion/leapjs-rigged-hand/f7767d2394353494d83ae7fd4bfa0046b9d17928/models/Game Quality Hand/leapmotion_basehand_normals.tga.zip -------------------------------------------------------------------------------- /models/Readme.md: -------------------------------------------------------------------------------- 1 | ## For usage and export instructions, check out the wiki: 2 | 3 | #### [leapjs-rigged-hand/wiki/Creating-Rigged-Hands](https://github.com/leapmotion/leapjs-rigged-hand/wiki/Creating-Rigged-Hands) 4 | -------------------------------------------------------------------------------- /models/Revamped Hand/handrevamp_hipoly_rig_left.fbx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leapmotion/leapjs-rigged-hand/f7767d2394353494d83ae7fd4bfa0046b9d17928/models/Revamped Hand/handrevamp_hipoly_rig_left.fbx -------------------------------------------------------------------------------- /models/Revamped Hand/handrevamp_hipoly_rig_right.fbx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leapmotion/leapjs-rigged-hand/f7767d2394353494d83ae7fd4bfa0046b9d17928/models/Revamped Hand/handrevamp_hipoly_rig_right.fbx -------------------------------------------------------------------------------- /models/Revamped Hand/handrevamp_lowpoly_rig_left.fbx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leapmotion/leapjs-rigged-hand/f7767d2394353494d83ae7fd4bfa0046b9d17928/models/Revamped Hand/handrevamp_lowpoly_rig_left.fbx -------------------------------------------------------------------------------- /models/Revamped Hand/handrevamp_lowpoly_rig_right.dae: -------------------------------------------------------------------------------- 1 | 2 | 3 | FBX COLLADA exporter2014-03-18T21:49:51Z2014-03-18T21:49:51ZY_UP 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 0.000000 0.000000 0.000000 1.000000 16 | 17 | 18 | 0.000000 0.000000 0.000000 1.000000 19 | 20 | 21 | 0.400000 0.400000 0.400000 1.000000 22 | 23 | 24 | 0.500000 0.500000 0.500000 1.000000 25 | 26 | 27 | 6.311791 28 | 29 | 30 | 0.000000 0.000000 0.000000 1.000000 31 | 32 | 33 | 0.500000 34 | 35 | 36 | 0.000000 0.000000 0.000000 1.000000 37 | 38 | 39 | 1.000000 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 0.118783 0.488885 -1.625226 52 | 1.262575 0.273636 1.859980 53 | -0.424992 0.485564 -1.543281 54 | 0.004850 0.537152 2.125163 55 | -0.967661 0.365970 -1.502159 56 | -1.567209 0.011399 -1.552016 57 | -2.067039 -0.055836 1.676011 58 | 0.908008 0.013623 -1.935088 59 | 0.058848 0.434965 2.590383 60 | -1.039672 0.203088 2.527393 61 | -1.029020 0.296125 1.984589 62 | -2.123990 -0.113309 2.161913 63 | 1.678709 0.156394 3.889362 64 | 1.323201 0.079340 4.062677 65 | 1.957392 -0.022775 3.964991 66 | 0.552095 0.219778 4.232892 67 | -0.151446 0.188189 4.292541 68 | -0.903171 -0.015816 4.076102 69 | -1.536796 -0.129211 3.950071 70 | -1.977877 -0.175339 3.059618 71 | -2.510072 -0.356217 2.987620 72 | -0.938372 -0.017113 4.369169 73 | -1.558749 -0.130708 4.271232 74 | -2.032228 -0.175953 3.305395 75 | -2.260395 -0.137426 3.271997 76 | -2.544846 -0.339685 3.240156 77 | 0.553772 0.194293 4.603156 78 | -0.113284 0.182532 4.644823 79 | 1.380158 0.037426 4.429265 80 | 1.992745 -0.028367 4.357575 81 | 1.828037 0.014720 5.215837 82 | 1.500851 -0.076845 5.254986 83 | 2.098276 -0.112502 5.180251 84 | 2.115885 -0.131530 5.373167 85 | 1.847718 0.009595 5.434875 86 | 1.542556 -0.070824 5.458363 87 | 0.303826 0.225629 5.675060 88 | -0.025148 0.099729 5.728312 89 | 0.596018 0.096621 5.690509 90 | 0.606123 0.061369 5.941522 91 | 0.324645 0.205737 5.965245 92 | -0.000286 0.071475 5.965360 93 | -1.377721 -0.037634 5.121823 94 | -1.656074 -0.187879 5.100114 95 | -1.065925 -0.126041 5.158248 96 | -1.088108 -0.127433 5.394689 97 | -1.393753 -0.036468 5.355962 98 | -1.685367 -0.195440 5.315315 99 | -2.400989 -0.169677 4.050678 100 | -2.184384 -0.222719 4.086248 101 | -2.152004 -0.232271 3.898354 102 | -2.649787 -0.322615 4.040889 103 | -2.614184 -0.326007 3.842557 104 | 1.082735 -1.034754 -2.209952 105 | 2.684293 -1.432020 -0.761716 106 | 0.543920 0.323369 -1.790284 107 | 1.563439 0.205752 0.264714 108 | -0.125683 0.540238 0.956275 109 | -0.977816 0.323826 0.954428 110 | 0.449137 -1.699265 -2.032122 111 | 1.694436 -1.880778 -0.216674 112 | -0.257556 -1.716502 -1.737434 113 | 0.236943 -1.484083 0.238070 114 | 0.787801 -1.245103 0.970500 115 | 1.809880 -1.322304 0.606365 116 | -0.794817 -1.716057 -1.655586 117 | -0.812518 -1.356203 0.412128 118 | -1.645161 -1.354385 0.484715 119 | -1.409674 -1.545521 -1.605445 120 | 0.118291 -0.902027 2.828835 121 | 0.096557 -1.090466 2.155546 122 | -1.033416 -1.009594 2.702073 123 | -2.098651 -0.992250 2.315702 124 | -0.530238 -0.871066 2.808884 125 | -1.572715 -0.980883 2.483278 126 | -1.904908 -0.553214 -1.625338 127 | -2.296139 -0.495050 0.561405 128 | -2.401751 -0.346880 1.887727 129 | -1.483095 -0.670085 -2.300961 130 | -0.784844 -1.377358 -2.395550 131 | 0.299670 -0.865370 -2.635305 132 | -0.735645 -0.678481 -2.702062 133 | -0.385117 -0.707231 -2.753974 134 | 0.089082 0.054477 -2.460874 135 | -0.942835 0.075208 -2.321056 136 | -0.530354 0.205213 -2.326056 137 | -1.277509 -0.183793 -2.321764 138 | -1.261992 -1.207477 -2.290204 139 | -0.158406 0.162372 -2.403889 140 | 0.035352 -0.478850 -2.710520 141 | -0.086085 -0.340111 -2.701441 142 | -0.271116 -0.220116 -2.676127 143 | -0.612214 -0.171193 -2.623955 144 | -0.940534 -0.280975 -2.568826 145 | -1.104900 -0.393602 -2.525789 146 | -1.206544 -0.657280 -2.505768 147 | -1.068053 -0.956270 -2.529755 148 | -0.777653 -1.031461 -2.613434 149 | -0.403066 -1.070250 -2.672335 150 | -0.130817 -0.992996 -2.694617 151 | 0.021674 -0.796470 -2.695135 152 | -2.432774 -0.749514 2.077166 153 | -1.964029 -0.049537 1.240176 154 | -2.331807 -0.400212 1.250939 155 | -2.399682 -0.849574 1.406863 156 | -2.257709 -0.956608 0.508770 157 | -1.884041 -1.081613 -1.581756 158 | -1.415598 -0.953983 -2.312908 159 | -1.619845 -0.072583 2.094995 160 | -1.785675 -0.067959 1.974454 161 | -1.567318 -0.246208 2.547480 162 | -1.585297 -0.570562 2.802693 163 | -1.656679 -0.574026 2.723210 164 | -1.719206 -0.594811 2.744298 165 | -1.714228 -0.287621 2.431237 166 | -1.639856 -0.334900 4.011823 167 | -1.851914 -0.345514 3.132383 168 | -1.858785 -0.577627 3.232352 169 | -1.624223 -0.542162 4.052294 170 | -1.776396 -0.832756 2.680120 171 | -1.492957 -0.840612 2.842018 172 | -1.047676 -0.949740 2.901463 173 | -2.168481 -0.959044 2.487577 174 | -2.609518 -0.276706 4.322668 175 | -2.244816 -0.235510 4.367085 176 | -2.286050 -0.284442 4.727802 177 | -2.466964 -0.251251 4.786956 178 | -2.653625 -0.314244 4.682168 179 | -1.674542 -0.203418 5.914020 180 | -1.240660 -0.161951 5.974399 181 | -1.485836 -0.190843 6.526520 182 | -1.729126 -0.250396 6.387509 183 | -1.243893 -0.208384 6.456270 184 | 0.057514 0.006508 6.524961 185 | 0.549901 0.039836 6.509656 186 | 0.346696 -0.050149 7.102840 187 | 0.109858 -0.089689 7.046492 188 | 0.581452 -0.103229 7.022974 189 | 1.656755 -0.096519 5.910362 190 | 2.104575 -0.129760 5.852235 191 | 1.698469 -0.144588 6.409173 192 | 2.197865 -0.203947 6.330229 193 | -2.529891 -0.634079 3.113822 194 | -2.358974 -0.821226 3.225811 195 | -1.903540 -0.340212 3.356282 196 | -1.903745 -0.582471 3.423064 197 | -2.049582 -0.788655 3.434880 198 | -2.017756 -0.779253 3.291156 199 | -2.375975 -0.826094 3.384348 200 | -2.570683 -0.610592 3.310716 201 | -1.511301 -0.732667 4.119251 202 | -1.234297 -0.854609 4.201139 203 | -0.486903 0.293509 2.355758 204 | 0.644278 -0.068958 2.817096 205 | 0.888687 -0.055323 2.703295 206 | 0.728505 0.166152 2.444640 207 | -0.276629 -0.054886 4.412857 208 | -0.582588 0.004686 2.849755 209 | -0.442347 0.057337 2.811411 210 | 0.876281 -0.573319 3.085772 211 | 0.771738 -0.489324 3.052743 212 | -0.633923 -0.370355 3.163377 213 | -0.538413 -0.348303 3.125026 214 | 0.692607 -0.463883 3.071555 215 | 0.772405 -0.854403 2.734232 216 | 1.140051 -0.158837 4.140169 217 | 1.839801 -0.454461 2.299501 218 | 2.035826 -0.373574 4.006375 219 | 0.666898 -0.076617 4.316682 220 | -0.789401 -0.211192 4.183815 221 | 1.117279 -0.490086 4.136148 222 | 1.402490 -0.917685 2.541944 223 | 1.794489 -0.545318 1.674735 224 | -0.982158 0.316801 1.444001 225 | -0.076206 0.534750 1.471421 226 | 1.866259 -0.423603 2.538261 227 | 1.700737 -0.019939 2.011246 228 | 1.436049 -0.867598 2.742283 229 | 1.671950 -0.117906 1.471346 230 | 1.101254 0.317732 1.265791 231 | 0.479516 0.445483 1.426562 232 | -0.499527 0.379569 1.506042 233 | -1.537581 0.097351 1.427238 234 | -0.315629 0.369684 2.364071 235 | 0.406449 0.379480 2.331145 236 | -0.692607 0.316849 2.293506 237 | -1.379473 0.089334 2.197108 238 | 1.682952 -0.777669 4.063871 239 | 0.539723 -0.661557 3.125383 240 | 0.117737 -0.803239 3.091352 241 | -0.291014 -0.710819 3.195674 242 | -0.265558 -0.284663 4.496029 243 | -0.462137 -0.383358 3.216270 244 | -0.806100 -0.483395 4.227763 245 | -0.739541 -0.767508 3.119392 246 | -0.944604 -0.746798 4.232080 247 | 0.350943 -0.359286 -2.584168 248 | 2.733125 -0.824957 -0.703684 249 | 1.075015 -0.483719 -2.043399 250 | 0.030647 -1.254417 -2.561704 251 | 2.322924 -1.799455 -0.609843 252 | 0.888409 -1.428476 -2.180581 253 | -0.362828 -1.397200 -2.482917 254 | 0.077097 -1.760149 -1.846341 255 | 1.278842 -1.241241 0.844490 256 | 0.918274 -1.779607 0.016052 257 | 2.467681 -0.422141 -0.461749 258 | 1.746583 -0.155394 -1.112619 259 | 0.513838 0.459734 -0.467159 260 | -0.275338 0.512902 -0.293503 261 | -0.974016 0.358118 -0.286979 262 | -1.730416 0.012780 -0.413994 263 | -2.158446 -0.507530 -0.540709 264 | -2.112669 -1.078767 -0.565245 265 | -1.591158 -1.534145 -0.508740 266 | -0.765312 -1.625977 -0.525600 267 | -0.068680 -1.714930 -0.697287 268 | 0.420530 -1.951406 -0.927437 269 | 1.101358 -1.948064 -1.258580 270 | 1.639480 -1.678892 -1.456727 271 | 1.887853 -1.206113 -1.492548 272 | 1.873503 -0.647296 -1.367926 273 | 0.212618 -0.665168 4.571940 274 | -0.142963 -0.527056 4.551789 275 | 0.599551 -0.413963 4.470341 276 | 1.317957 -0.716570 4.126833 277 | 1.005178 0.227987 2.302540 278 | 1.798583 -0.047408 0.637468 279 | 1.974390 -0.457852 0.903364 280 | 2.680156 -0.474504 -0.266152 281 | 1.130885 0.278995 -0.679830 282 | 2.137091 -0.299695 0.254205 283 | 1.953704 -0.054832 -0.008764 284 | 2.155491 -0.565061 0.659719 285 | 2.963562 -0.887199 -0.499171 286 | 2.897452 -1.458088 -0.564438 287 | 2.630624 -1.822910 -0.291342 288 | 2.338496 -1.793075 0.076609 289 | 2.187703 -1.451298 0.566205 290 | -1.972749 -1.204328 1.742090 291 | -1.435442 -1.190368 1.946791 292 | -0.956787 -1.167602 2.093808 293 | -0.456376 -1.099246 2.139384 294 | -0.386292 -1.675415 -0.642971 295 | -0.526148 -1.716194 -1.696428 296 | -0.573799 -1.387210 -2.439114 297 | -1.896188 -0.023028 0.762871 298 | -2.313972 -0.447631 0.906172 299 | -2.328814 -0.903133 0.957887 300 | -1.846224 -1.239295 1.114024 301 | -1.209837 -1.216656 1.276156 302 | -0.323953 -1.131538 1.275332 303 | -0.819742 -1.148398 1.276797 304 | -0.236597 -1.363698 0.338939 305 | 0.171456 -1.155882 1.186224 306 | 0.726241 -1.125706 2.078595 307 | 1.385606 -1.059447 1.943250 308 | 2.030529 -0.731900 0.998100 309 | 2.150993 -0.815682 0.753629 310 | 1.933519 -1.005712 0.879055 311 | 2.162853 -1.221103 0.708698 312 | 2.425528 -0.847565 0.528489 313 | 2.390134 -1.215093 0.740400 314 | 2.416304 -1.483216 0.626799 315 | 2.627763 -1.799421 0.245773 316 | 2.902952 -1.803211 -0.117559 317 | 3.118872 -1.495520 -0.292094 318 | 3.159364 -0.962599 -0.268763 319 | 2.082949 -0.377949 4.288636 320 | 1.756888 -0.782023 4.342754 321 | 1.382993 -0.739029 4.408292 322 | 1.191857 -0.511204 4.422767 323 | 1.195169 -0.188225 4.436311 324 | 2.196922 -0.410345 5.144313 325 | 2.217976 -0.417375 5.328738 326 | 1.907487 -0.746497 5.188196 327 | 1.558069 -0.723024 5.236313 328 | 1.391004 -0.536070 5.273223 329 | 1.361825 -0.277076 5.283154 330 | 1.386054 -0.264800 5.433077 331 | 1.403906 -0.543055 5.419810 332 | 1.566458 -0.734144 5.385153 333 | 1.932033 -0.771185 5.322597 334 | 1.899230 -0.046113 5.853899 335 | 0.325752 0.102890 6.498235 336 | -1.352061 -0.191957 6.523678 337 | -1.642584 -0.235009 6.486560 338 | -1.453717 -0.117379 5.908882 339 | -2.358542 -0.263827 4.776511 340 | -2.427418 -0.209549 4.311528 341 | 3.507408 -1.062814 1.308028 342 | 3.661105 -0.894118 1.155712 343 | 3.868894 -0.834430 0.898508 344 | 4.073554 -1.105404 0.566662 345 | 4.070137 -1.579164 0.502719 346 | 3.918340 -1.904728 0.659943 347 | 3.606682 -1.944068 0.993394 348 | 3.418790 -1.611966 1.328822 349 | 3.428478 -1.304873 1.380589 350 | 2.871975 -0.567968 -0.037800 351 | 3.289947 -0.765657 0.398082 352 | 3.047524 -0.833478 0.646836 353 | 2.927929 -1.019938 0.845734 354 | 2.865421 -1.236657 0.934494 355 | 2.862357 -1.525778 0.905010 356 | 3.020010 -1.865114 0.491039 357 | 3.323128 -1.830680 0.174685 358 | 3.515258 -1.520846 0.038300 359 | 3.512641 -1.057408 0.070610 360 | -2.660770 -0.580795 3.849999 361 | -2.686463 -0.564561 4.017509 362 | -2.723354 -0.544501 4.329284 363 | -2.709832 -0.520088 4.672997 364 | -2.463725 -0.811354 3.906400 365 | -2.487708 -0.823410 4.042225 366 | -2.193635 -0.781240 4.076134 367 | -2.175868 -0.784723 3.962543 368 | -2.020880 -0.587812 3.970909 369 | -2.043926 -0.579198 4.080660 370 | -2.023741 -0.392766 3.926821 371 | -2.049639 -0.391803 4.084353 372 | -2.548972 -0.795179 4.358386 373 | -2.270071 -0.791507 4.389832 374 | -2.106804 -0.605962 4.401796 375 | -2.099723 -0.393759 4.380477 376 | -2.586937 -0.693682 4.673634 377 | -2.353621 -0.692874 4.703984 378 | -2.203426 -0.430563 4.709898 379 | -1.657958 -0.323568 4.284188 380 | -1.642454 -0.539387 4.292654 381 | -1.517577 -0.719249 4.347305 382 | -0.821268 -0.216400 4.404263 383 | -0.855425 -0.492147 4.436669 384 | -0.988275 -0.716600 4.434789 385 | -1.261782 -0.826925 4.411925 386 | -1.731673 -0.374305 5.134965 387 | -1.752673 -0.380433 5.324593 388 | -1.725667 -0.551013 5.183445 389 | -1.744750 -0.555665 5.352172 390 | -1.661912 -0.738586 5.397248 391 | -1.641465 -0.733012 5.237114 392 | -1.400506 -0.850931 5.289462 393 | -1.419421 -0.876150 5.447542 394 | -1.135387 -0.765920 5.300772 395 | -1.144072 -0.787435 5.472614 396 | -0.980129 -0.562634 5.284230 397 | -1.002759 -0.586066 5.464728 398 | -0.970601 -0.344823 5.431986 399 | -0.940876 -0.322291 5.235731 400 | -1.794294 -0.384312 5.928278 401 | -1.797258 -0.585832 5.951577 402 | -1.709150 -0.789748 6.003991 403 | -1.492300 -0.924031 6.053752 404 | -1.228804 -0.873189 6.075560 405 | -1.064723 -0.645264 6.064896 406 | -1.068374 -0.363570 6.048296 407 | -1.136326 -0.355602 6.408797 408 | -1.142716 -0.609657 6.385199 409 | -1.302636 -0.806357 6.373235 410 | -1.518231 -0.849681 6.346959 411 | -1.714798 -0.730359 6.321355 412 | -1.798149 -0.578854 6.303228 413 | -1.803326 -0.397956 6.319134 414 | -0.232215 -0.057923 4.693285 415 | 0.665974 -0.105245 4.622041 416 | 0.586182 -0.403513 4.712921 417 | 0.227928 -0.652036 4.775246 418 | -0.115285 -0.506467 4.796194 419 | -0.228029 -0.274289 4.762759 420 | 0.329320 -0.675588 5.714874 421 | 0.637204 -0.419632 5.688697 422 | 0.696868 -0.163850 5.689915 423 | 0.012123 -0.594052 5.751043 424 | -0.156459 -0.324053 5.728092 425 | -0.145474 -0.097883 5.728031 426 | -0.112349 -0.117343 5.967943 427 | -0.125973 -0.346491 5.961981 428 | 0.034164 -0.602260 5.959177 429 | 0.368628 -0.676480 5.938844 430 | 0.641687 -0.425406 5.900472 431 | 0.689795 -0.173121 5.906230 432 | 0.708886 -0.184135 6.459845 433 | 0.667528 -0.239834 6.952968 434 | 0.690297 -0.422121 6.439452 435 | 0.646235 -0.427347 6.914551 436 | 0.402210 -0.606905 6.893081 437 | 0.383173 -0.692770 6.424683 438 | 0.087822 -0.610668 6.434300 439 | 0.146611 -0.550483 6.918562 440 | -0.070835 -0.409885 6.489655 441 | 0.016220 -0.404301 6.953302 442 | -0.082513 -0.182601 6.512204 443 | 0.001944 -0.218197 6.989777 444 | 1.484306 -0.280572 5.925134 445 | 1.463078 -0.526716 5.918699 446 | 1.624076 -0.760705 5.900473 447 | 1.978034 -0.806298 5.838310 448 | 2.252435 -0.482675 5.818805 449 | 1.612321 -0.282274 6.403274 450 | 1.600565 -0.504146 6.384628 451 | 1.744063 -0.700196 6.345773 452 | 2.009747 -0.729986 6.302832 453 | 2.241550 -0.529832 6.294440 454 | 4.360847 -1.136014 0.778815 455 | 4.171882 -0.854861 1.084846 456 | 3.917387 -0.917886 1.374333 457 | 3.786544 -1.098037 1.529301 458 | 3.694924 -1.336438 1.589357 459 | 3.677082 -1.665678 1.536571 460 | 3.889359 -1.990477 1.202903 461 | 4.199719 -1.938186 0.836017 462 | 4.360864 -1.627205 0.711691 463 | 4.675680 -1.211198 1.051441 464 | 4.497360 -0.943969 1.322942 465 | 4.444360 -0.950494 1.581254 466 | 4.769941 -1.513772 1.054951 467 | 4.258337 -1.107409 1.793583 468 | 4.177745 -1.374901 1.877094 469 | 4.183838 -1.667274 1.815527 470 | 4.388605 -1.974652 1.501386 471 | 4.699849 -1.879546 1.151877 472 | 5.310718 -1.273783 1.616859 473 | 5.173181 -1.082426 1.803125 474 | 4.845305 -1.001056 1.861793 475 | 5.235971 -1.470610 1.449795 476 | 4.648243 -1.157375 2.000159 477 | 4.582587 -1.360669 2.024191 478 | 4.619385 -1.617507 1.953669 479 | 4.816391 -1.847638 1.710793 480 | 5.060925 -1.779356 1.475543 481 | 5.164310 -1.242674 1.950233 482 | 4.903605 -1.159882 2.033839 483 | 5.286313 -1.444415 1.803622 484 | 5.249130 -1.616630 1.625853 485 | 5.088019 -1.677389 1.828779 486 | 4.984328 -1.512136 1.996707 487 | 4.930145 -1.346009 2.060960 488 | 2.509987 -0.610512 0.329961 489 | 2.150765 -0.431539 0.485020 490 | 1.892633 -0.226839 0.792647 491 | 1.465871 0.091312 1.407243 492 | 1.719630 -0.512170 6.494725 493 | 2.117036 -0.521699 6.482639 494 | 2.121319 -0.306635 6.501474 495 | 1.757130 -0.303715 6.539161 496 | 2.098112 -0.157583 6.432850 497 | 1.796312 -0.125750 6.462272 498 | 1.944397 -0.134400 6.490061 499 | 1.947295 -0.308868 6.574231 500 | 1.913309 -0.526993 6.541919 501 | 0.475731 -0.424113 7.082188 502 | 0.091662 -0.297976 7.108011 503 | 0.159746 -0.183948 7.137517 504 | 0.324569 -0.234801 7.176611 505 | 0.249341 -0.398493 7.132394 506 | 0.522350 -0.249285 7.120674 507 | 0.224457 -0.056497 7.090457 508 | 0.487302 -0.063798 7.069382 509 | -1.246560 -0.559781 6.549547 510 | -1.703744 -0.576744 6.498952 511 | -1.696774 -0.430178 6.532322 512 | -1.239237 -0.386329 6.562886 513 | -1.367539 -0.385992 6.623359 514 | -1.535239 -0.404492 6.627371 515 | -1.366159 -0.625902 6.580189 516 | -1.535139 -0.645284 6.573086 517 | -2.349170 -0.566391 4.802029 518 | -2.621680 -0.535244 4.789402 519 | -2.598348 -0.379477 4.809347 520 | -2.209096 -0.574632 4.684447 521 | -2.336134 -0.399341 4.821741 522 | -2.565918 -0.266146 4.772666 523 | -2.488114 -0.563391 4.827112 524 | -2.466902 -0.391670 4.848556 525 | -2.223306 -0.123667 2.976813 526 | -2.446900 -0.361588 2.577015 527 | -2.476825 -0.677984 2.698121 528 | -2.299965 -0.894673 2.832296 529 | -1.898231 -0.821932 2.965062 530 | -1.787852 -0.587811 2.944434 531 | -1.806822 -0.329950 2.801718 532 | -1.932823 -0.178144 2.666095 533 | -2.359663 -0.192069 3.872763 534 | -2.309801 -0.164731 3.572023 535 | -2.569585 -0.343572 3.572062 536 | -2.612540 -0.588440 3.597969 537 | -2.419202 -0.818904 3.649292 538 | -2.113034 -0.786807 3.699253 539 | -1.962676 -0.565190 3.699763 540 | -1.976090 -0.389370 3.654974 541 | -2.091910 -0.204091 3.601515 542 | -1.200978 0.060386 3.936578 543 | -1.432412 -0.032708 3.229176 544 | -1.575927 -0.314075 3.295506 545 | -1.577000 -0.508214 3.325059 546 | -1.466321 -0.771371 3.440266 547 | -1.149805 -0.902173 3.541550 548 | -0.844756 -0.746680 3.616136 549 | -0.724880 -0.428238 3.634431 550 | -0.717941 -0.135155 3.531618 551 | -0.846408 0.067768 3.344254 552 | 0.216795 0.363520 4.182997 553 | -0.194443 0.202244 3.473593 554 | -0.329861 -0.026064 3.607968 555 | -0.355250 -0.317045 3.783613 556 | -0.256406 -0.590570 3.882578 557 | 0.216365 -0.720603 3.862081 558 | 0.552053 -0.498206 3.740767 559 | 0.632584 -0.152517 3.579042 560 | 0.490831 0.196215 3.377524 561 | -1.263560 0.034232 4.319229 562 | -1.327926 -0.036349 4.720201 563 | -1.575899 -0.172791 4.704269 564 | -1.663761 -0.346377 4.714961 565 | -1.661303 -0.527275 4.742758 566 | -1.576089 -0.716931 4.800489 567 | -1.332405 -0.843262 4.857043 568 | -1.051313 -0.750113 4.883406 569 | -0.924239 -0.564942 4.874746 570 | -0.888610 -0.274277 4.817087 571 | -1.017071 -0.103184 4.764928 572 | 0.255211 0.300488 4.629541 573 | 0.287787 0.248668 5.164175 574 | -0.047767 0.118362 5.192812 575 | -0.172639 -0.122369 5.213565 576 | -0.192234 -0.299158 5.245188 577 | -0.051581 -0.550259 5.273620 578 | 0.292735 -0.669547 5.271071 579 | 0.611659 -0.411552 5.200524 580 | 0.660114 -0.160635 5.163092 581 | 0.561450 0.093144 5.156767 582 | 1.415726 0.227470 2.367300 583 | 1.537713 0.191670 3.097610 584 | 1.209353 0.111718 3.255360 585 | 1.039869 -0.127488 3.444022 586 | 1.002302 -0.516877 3.579464 587 | 1.180435 -0.776462 3.530845 588 | 1.567532 -0.837783 3.413333 589 | 1.944988 -0.379681 3.193298 590 | 1.845424 0.005881 3.087533 591 | 1.745633 0.115312 4.399209 592 | 1.788000 0.038120 4.816191 593 | 1.451588 -0.051869 4.846855 594 | 1.316170 -0.220788 4.857036 595 | 1.291359 -0.523610 4.847732 596 | 1.489262 -0.736837 4.817533 597 | 1.843286 -0.760481 4.768016 598 | 2.129240 -0.392376 4.716953 599 | 2.045717 -0.070442 4.769390 600 | -1.155224 0.117889 3.251711 601 | -1.069696 0.157564 2.683631 602 | -1.368625 0.013951 2.677065 603 | -1.576541 -0.257321 2.730797 604 | -1.559304 -0.593655 2.979260 605 | -1.487105 -0.753663 3.046659 606 | -1.121811 -0.913439 3.157855 607 | -0.765845 -0.762300 3.243578 608 | -0.656663 -0.384826 3.281140 609 | -0.625262 -0.040275 2.994049 610 | -0.780890 0.162858 2.774270 611 | -2.182807 -0.142677 2.600621 612 | -2.426372 -0.360150 2.232150 613 | -2.429623 -0.713773 2.325930 614 | -2.136586 -0.114613 2.263965 615 | -1.859206 -0.119722 2.310875 616 | -1.737080 -0.298152 2.523421 617 | -1.753530 -0.591311 2.844365 618 | -1.841041 -0.821531 2.809248 619 | -2.240489 -0.932999 2.654631 620 | -2.447427 -0.700697 2.486207 621 | 0.130047 0.344889 3.345397 622 | 0.067247 0.367797 2.866927 623 | -0.231308 0.238992 2.966665 624 | -0.367294 -0.019240 3.182204 625 | -0.393865 -0.347963 3.423534 626 | -0.273831 -0.601741 3.459026 627 | 0.159696 -0.748122 3.465264 628 | 0.529132 -0.544980 3.380879 629 | 0.629409 -0.130144 3.191732 630 | 0.451790 0.231536 2.915719 631 | 1.023124 -0.801578 2.962545 632 | 1.101662 -0.792849 3.143272 633 | 1.491782 -0.846917 2.991103 634 | 1.785553 -0.015005 2.582859 635 | 1.895797 -0.404486 2.760348 636 | 0.970987 -0.116209 3.050950 637 | 0.925957 -0.529133 3.204908 638 | 1.134469 0.151790 2.790681 639 | 1.441564 0.199063 2.608736 640 | 0.908879 0.430534 0.691069 641 | 1.423131 0.161949 0.980697 642 | 1.592278 0.019653 1.191032 643 | 644 | 645 | 646 | 647 | 648 | 649 | 650 | 651 | 652 | 653 | 654 | 0.128107 0.980610 -0.148298 655 | 0.371438 0.928015 -0.028687 656 | -0.104167 0.988436 -0.110201 657 | -0.006533 0.998583 0.052809 658 | -0.361405 0.925099 -0.116523 659 | -0.646714 0.733753 -0.208250 660 | -0.537734 0.839242 -0.080722 661 | 0.589407 0.662486 -0.462289 662 | 0.014543 0.972579 0.232117 663 | -0.293591 0.934465 0.201444 664 | -0.320137 0.945901 0.052760 665 | -0.410708 0.910774 0.042547 666 | 0.174272 0.984374 0.025260 667 | -0.461459 0.878338 0.124811 668 | 0.833659 0.545842 -0.084079 669 | 0.713808 0.699516 -0.034001 670 | -0.621380 0.780237 0.071526 671 | 0.493981 0.861101 0.120368 672 | -0.709305 0.704498 -0.023853 673 | 0.466655 0.881446 0.072703 674 | -0.874898 0.465865 -0.132374 675 | 0.432040 0.884601 0.175564 676 | -0.663601 0.748076 0.003919 677 | 0.460597 0.874772 0.150410 678 | -0.303865 0.952709 0.003465 679 | -0.825190 0.556261 -0.098163 680 | 0.685748 0.723624 0.078220 681 | -0.570408 0.809717 0.137815 682 | -0.430695 0.880044 0.200064 683 | 0.791336 0.609930 -0.042106 684 | 0.062831 0.996753 0.050347 685 | -0.505299 0.856650 0.104041 686 | 0.762848 0.644810 -0.047788 687 | 0.784244 0.620452 0.000948 688 | 0.094263 0.993231 0.067877 689 | -0.505956 0.850959 0.140986 690 | 0.018524 0.998598 0.049578 691 | -0.595791 0.799394 0.077471 692 | 0.713041 0.701103 -0.005256 693 | 0.693040 0.717001 0.074862 694 | 0.005649 0.990920 0.134332 695 | -0.572527 0.806294 0.148671 696 | -0.115732 0.993279 -0.001905 697 | -0.691122 0.717302 -0.088475 698 | 0.515521 0.851830 0.092867 699 | 0.543685 0.826688 0.144889 700 | -0.108550 0.991849 0.066723 701 | -0.675826 0.737048 -0.004351 702 | -0.192745 0.981021 -0.021147 703 | 0.507060 0.855484 0.105060 704 | 0.507898 0.853630 0.115562 705 | -0.814552 0.574446 -0.080728 706 | -0.779064 0.608570 -0.150669 707 | 0.669418 -0.057429 -0.740663 708 | 0.891193 -0.321407 -0.320113 709 | 0.387572 0.866249 -0.315278 710 | 0.468582 0.882257 -0.045319 711 | -0.059684 0.998169 0.009779 712 | -0.306126 0.951865 0.015445 713 | 0.101789 -0.887835 -0.448763 714 | 0.068997 -0.991025 0.114494 715 | -0.206783 -0.972850 -0.103940 716 | -0.147678 -0.923395 0.354306 717 | -0.009787 -0.967507 0.252654 718 | -0.058753 -0.876755 0.477334 719 | -0.184435 -0.974282 -0.129456 720 | -0.006483 -0.972986 0.230772 721 | -0.278963 -0.950593 0.136206 722 | -0.435461 -0.879916 -0.190057 723 | 0.028451 -0.936769 0.348790 724 | -0.016944 -0.982974 0.182962 725 | 0.011804 -0.947164 0.320531 726 | -0.364315 -0.898339 0.245481 727 | 0.041543 -0.925254 0.377068 728 | -0.129645 -0.927670 0.350171 729 | -0.901268 0.278973 -0.331497 730 | -0.920082 0.374620 -0.114496 731 | -0.927177 0.364288 -0.087385 732 | -0.792541 0.161570 -0.588026 733 | -0.246468 -0.790357 -0.560883 734 | 0.417922 -0.049472 -0.907135 735 | -0.147277 0.038414 -0.988349 736 | -0.032944 0.017398 -0.999306 737 | 0.296270 0.702796 -0.646762 738 | -0.385478 0.809948 -0.442031 739 | -0.147996 0.875179 -0.460608 740 | -0.641682 0.588458 -0.491896 741 | -0.478983 -0.698997 -0.531016 742 | 0.056247 0.845980 -0.530239 743 | 0.249145 0.181346 -0.951336 744 | 0.164655 0.381608 -0.909541 745 | -0.015680 0.446504 -0.894644 746 | -0.144434 0.485276 -0.862349 747 | -0.313806 0.470153 -0.824914 748 | -0.487665 0.308413 -0.816740 749 | -0.526871 0.051171 -0.848403 750 | -0.390766 -0.325646 -0.860963 751 | -0.202459 -0.404733 -0.891741 752 | -0.052469 -0.384498 -0.921633 753 | 0.080644 -0.306526 -0.948440 754 | 0.218504 -0.076236 -0.972853 755 | -0.893987 -0.447355 0.025725 756 | -0.564180 0.824349 -0.046367 757 | -0.896639 0.426780 -0.117886 758 | -0.878824 -0.475670 -0.037493 759 | -0.841026 -0.539604 -0.038771 760 | -0.841369 -0.451743 -0.296693 761 | -0.724906 -0.348664 -0.594092 762 | -0.431435 0.884492 0.177587 763 | -0.213348 0.964902 0.153122 764 | -0.847072 0.494137 0.195697 765 | -0.963656 -0.058781 0.260599 766 | -0.620082 0.189017 0.761427 767 | 0.752318 -0.004826 0.658782 768 | 0.511830 0.731640 0.450259 769 | -0.975840 0.205277 -0.074818 770 | 0.911698 0.371907 0.174620 771 | 0.943693 -0.218365 0.248515 772 | -0.948890 -0.309372 -0.062429 773 | 0.244959 -0.828314 0.503876 774 | -0.506199 -0.796909 0.329694 775 | -0.011384 -0.945213 0.326256 776 | -0.284686 -0.936490 0.204795 777 | -0.753554 0.657277 -0.011933 778 | 0.513484 0.840778 0.171538 779 | 0.516372 0.822185 0.239523 780 | -0.017543 0.865283 0.500976 781 | -0.775697 0.627518 0.067198 782 | -0.639582 0.768307 0.025290 783 | 0.517955 0.842301 0.149171 784 | -0.196046 0.839239 0.507192 785 | -0.592747 0.799698 0.095571 786 | 0.487356 0.848846 0.204805 787 | -0.570911 0.802238 0.174573 788 | 0.634506 0.762648 0.125580 789 | 0.089452 0.782956 0.615612 790 | -0.549711 0.791735 0.266408 791 | 0.628809 0.742680 0.230272 792 | -0.493348 0.855668 0.156329 793 | 0.785358 0.619024 0.004670 794 | -0.492626 0.849679 0.188057 795 | 0.842035 0.534344 0.073850 796 | -0.932459 -0.348359 -0.095737 797 | -0.313358 -0.947580 0.062446 798 | 0.892441 0.388292 0.229735 799 | 0.940715 -0.260063 0.217767 800 | 0.472679 -0.875264 0.102406 801 | 0.400808 -0.896858 0.187081 802 | -0.339902 -0.939766 -0.036147 803 | -0.946784 -0.299698 -0.117396 804 | -0.628228 -0.778019 -0.004146 805 | -0.011202 -0.996959 0.077112 806 | -0.229462 0.958228 0.170721 807 | 0.808759 0.527368 0.260370 808 | -0.510317 0.684323 0.520845 809 | 0.219218 0.941059 0.257587 810 | -0.955658 0.277949 0.097271 811 | 0.597474 0.660331 0.454958 812 | -0.764535 0.559272 0.320469 813 | -0.781081 -0.158990 0.603850 814 | 0.217913 0.177494 0.959693 815 | 0.845272 -0.096649 0.525522 816 | -0.225871 0.108502 0.968096 817 | 0.839887 -0.045021 0.540891 818 | 0.059029 -0.932596 0.356061 819 | -0.910106 0.374092 0.178222 820 | 0.907783 -0.418101 -0.033478 821 | 0.939983 -0.320045 -0.118334 822 | 0.997495 0.062446 -0.033218 823 | 0.961724 0.236022 0.139210 824 | -0.949117 -0.242381 0.201070 825 | 0.424238 -0.886420 0.185151 826 | 0.939750 -0.332955 -0.077528 827 | -0.270066 0.961434 0.052042 828 | 0.004926 0.997947 0.063848 829 | 0.949466 -0.295536 -0.105697 830 | 0.870787 0.474007 -0.130568 831 | 0.409800 -0.909047 0.075488 832 | 0.944237 0.298521 -0.138928 833 | 0.265399 0.958293 0.106012 834 | 0.199295 0.974216 0.105761 835 | -0.223991 0.971420 0.078559 836 | -0.376479 0.922884 0.080928 837 | -0.387893 0.907763 0.159706 838 | 0.359806 0.924639 0.124828 839 | -0.072007 0.988471 0.133189 840 | -0.494230 0.860396 0.124322 841 | 0.465540 -0.884327 -0.035201 842 | 0.442550 -0.778461 0.445138 843 | 0.058555 -0.927656 0.368817 844 | -0.387974 -0.818211 0.424272 845 | -0.974419 -0.177021 0.138460 846 | -0.897128 -0.086692 0.433182 847 | 0.957506 -0.251205 0.141698 848 | 0.533772 -0.720025 0.443453 849 | 0.660855 -0.738355 0.134543 850 | 0.451619 0.366918 -0.813272 851 | 0.927595 0.252965 -0.274911 852 | 0.707332 0.281138 -0.648570 853 | 0.166323 -0.570139 -0.804536 854 | 0.471694 -0.868366 -0.153121 855 | 0.450229 -0.564869 -0.691532 856 | -0.038487 -0.800217 -0.598474 857 | -0.138240 -0.956831 -0.255666 858 | 0.190796 -0.932916 0.305393 859 | -0.078215 -0.937553 0.338935 860 | 0.744518 0.664317 -0.066151 861 | 0.707059 0.659287 -0.255750 862 | 0.159993 0.986358 -0.038739 863 | -0.072330 0.997379 -0.001964 864 | -0.326289 0.945269 -0.001430 865 | -0.583273 0.809761 -0.063867 866 | -0.925482 0.342953 -0.160830 867 | -0.855347 -0.506782 -0.107485 868 | -0.379918 -0.923667 0.050008 869 | -0.082371 -0.984940 0.152015 870 | -0.226703 -0.953059 0.200708 871 | -0.166404 -0.983119 0.076066 872 | 0.150162 -0.967774 -0.202149 873 | 0.553177 -0.732767 -0.396293 874 | 0.861430 -0.170570 -0.478377 875 | 0.858510 0.280310 -0.429402 876 | 0.134851 -0.986680 0.090983 877 | -0.593566 -0.793326 0.135327 878 | 0.796932 -0.603373 0.028978 879 | -0.431419 -0.891837 0.136029 880 | 0.045930 0.982180 0.182242 881 | 0.775082 0.630777 0.036982 882 | 0.990073 -0.051453 -0.130794 883 | 0.642415 0.745693 0.176765 884 | 0.435883 0.892859 -0.113174 885 | 0.723583 0.649836 0.232683 886 | 0.692869 0.720949 -0.012827 887 | 0.972999 -0.065514 0.221317 888 | 0.950400 0.266048 -0.161117 889 | 0.865988 -0.431337 -0.253008 890 | 0.266633 -0.961803 -0.061988 891 | -0.451090 -0.874887 0.176324 892 | -0.781777 -0.565684 0.262346 893 | -0.324095 -0.938744 0.117141 894 | -0.021127 -0.984664 0.173179 895 | 0.054841 -0.985409 0.161125 896 | 0.044297 -0.985695 0.162613 897 | -0.065343 -0.981399 0.180514 898 | -0.068687 -0.990942 -0.115398 899 | -0.086409 -0.827208 -0.555213 900 | -0.532610 0.845602 -0.035827 901 | -0.921836 0.369938 -0.115604 902 | -0.802368 -0.593637 -0.061654 903 | -0.257397 -0.964475 0.059448 904 | 0.045299 -0.993044 0.108676 905 | 0.023384 -0.991860 0.125168 906 | 0.077826 -0.989315 0.123286 907 | -0.040666 -0.957537 0.285427 908 | -0.056299 -0.986021 0.156819 909 | 0.031744 -0.981550 0.188553 910 | 0.450608 -0.885050 0.116784 911 | 0.912663 -0.395468 -0.103205 912 | 0.924784 -0.140729 0.353510 913 | 0.765239 -0.643746 -0.000362 914 | -0.916395 0.047458 0.397451 915 | -0.510424 0.654025 0.558318 916 | -0.819208 0.232994 0.524034 917 | -0.754392 -0.575350 0.316015 918 | -0.411029 -0.903376 0.122337 919 | 0.312273 -0.934937 -0.168461 920 | 0.869700 -0.396851 -0.293483 921 | 0.934183 0.329834 -0.136055 922 | 0.948039 -0.286180 -0.139010 923 | 0.447562 -0.890707 -0.079553 924 | -0.417422 -0.904371 0.088729 925 | -0.923391 -0.318676 0.213998 926 | -0.913126 0.324668 0.246561 927 | 0.952825 -0.270563 -0.137553 928 | 0.969677 -0.224411 -0.096782 929 | 0.456349 -0.885556 -0.086815 930 | -0.381648 -0.922707 0.054372 931 | -0.915829 -0.374915 0.143859 932 | -0.954778 0.252199 0.157465 933 | -0.935538 0.309652 0.169951 934 | -0.928716 -0.352820 0.114038 935 | -0.423918 -0.905671 -0.007271 936 | 0.421652 -0.899202 -0.116813 937 | 0.111115 0.990013 0.086759 938 | -0.024802 0.984349 0.174474 939 | 0.182510 0.884054 0.430277 940 | -0.421860 0.830810 0.363028 941 | -0.109442 0.989300 0.096481 942 | 0.210259 0.904813 0.370277 943 | -0.160785 0.985000 0.062631 944 | -0.660365 0.679349 0.320003 945 | -0.273291 0.943670 0.186546 946 | 0.341276 0.938341 -0.055202 947 | 0.848849 0.437785 -0.296309 948 | 0.878407 -0.283883 -0.384463 949 | 0.331782 -0.910748 -0.245882 950 | -0.414615 -0.908636 0.049751 951 | -0.833667 -0.482477 0.268728 952 | -0.897581 0.217483 0.383469 953 | 0.492137 0.839130 0.231651 954 | 0.396896 0.915991 0.058607 955 | -0.224056 0.926098 0.303547 956 | -0.637910 0.666916 0.385089 957 | -0.869566 0.247405 0.427370 958 | -0.810483 -0.509658 0.288734 959 | -0.398862 -0.914910 0.062033 960 | 0.334166 -0.914965 -0.226214 961 | 0.878837 -0.321407 -0.352622 962 | 0.891308 0.389372 -0.232291 963 | -0.940304 -0.300892 -0.159036 964 | -0.962832 -0.251587 -0.098279 965 | -0.983492 -0.179781 -0.020534 966 | -0.989043 -0.092416 0.115120 967 | -0.388522 -0.919681 -0.056896 968 | -0.416201 -0.908483 -0.037888 969 | 0.455117 -0.885893 0.089790 970 | 0.441616 -0.892547 0.091293 971 | 0.920024 -0.346240 0.183503 972 | 0.926335 -0.335449 0.171397 973 | 0.906502 0.382837 0.178016 974 | 0.916692 0.362303 0.168559 975 | -0.454690 -0.886384 0.087061 976 | 0.359727 -0.909612 0.207850 977 | 0.881240 -0.400221 0.251474 978 | 0.913410 0.335356 0.230690 979 | -0.477978 -0.829841 0.287924 980 | 0.238003 -0.865641 0.440477 981 | 0.873627 0.246061 0.419798 982 | -0.974723 0.220955 -0.033085 983 | -0.951775 -0.303055 -0.047771 984 | -0.635275 -0.771290 -0.039212 985 | 0.950385 0.246690 0.189507 986 | 0.947627 -0.284764 0.144612 987 | 0.619302 -0.779554 0.093595 988 | -0.028671 -0.999483 0.014545 989 | -0.977805 0.155570 -0.140343 990 | -0.971777 0.227633 -0.061901 991 | -0.946927 -0.286883 -0.145006 992 | -0.968785 -0.227764 -0.097876 993 | -0.711041 -0.692626 -0.121204 994 | -0.650431 -0.749243 -0.124797 995 | -0.067373 -0.995670 -0.064053 996 | -0.108594 -0.988059 -0.109300 997 | 0.548529 -0.835513 0.032154 998 | 0.582017 -0.812660 -0.028970 999 | 0.927184 -0.357542 0.111774 1000 | 0.946732 -0.311649 0.081074 1001 | 0.942958 0.290582 0.162459 1002 | 0.970143 0.198572 0.139256 1003 | -0.967212 0.250830 -0.039816 1004 | -0.968587 -0.241464 -0.059459 1005 | -0.697092 -0.715486 -0.046288 1006 | -0.140220 -0.990120 0.000929 1007 | 0.532484 -0.843023 0.075983 1008 | 0.932391 -0.333122 0.140270 1009 | 0.941733 0.294452 0.162593 1010 | 0.917487 0.316353 0.241120 1011 | 0.879479 -0.310828 0.360420 1012 | 0.433612 -0.789142 0.435012 1013 | -0.212084 -0.894001 0.394693 1014 | -0.694840 -0.668177 0.265966 1015 | -0.971236 -0.205318 0.120607 1016 | -0.963297 0.253145 0.089307 1017 | -0.937261 0.318727 0.141265 1018 | 0.994350 0.104040 0.021057 1019 | 0.804482 -0.593324 -0.027840 1020 | 0.160222 -0.987026 -0.010443 1021 | -0.649356 -0.758343 0.057033 1022 | -0.970940 -0.214643 0.105849 1023 | 0.235777 -0.970923 -0.041449 1024 | 0.816925 -0.573932 -0.056878 1025 | 0.994824 0.092852 -0.041267 1026 | -0.579875 -0.814401 0.022246 1027 | -0.956731 -0.281489 0.073687 1028 | -0.944906 0.317185 0.080908 1029 | -0.946288 0.299007 0.123019 1030 | -0.950688 -0.300437 0.077011 1031 | -0.559603 -0.828334 0.026607 1032 | 0.313845 -0.948700 -0.038331 1033 | 0.837274 -0.543883 -0.056243 1034 | 0.988919 0.148432 -0.002564 1035 | 0.975526 0.216159 0.040312 1036 | 0.953912 0.202295 0.221648 1037 | 0.846380 -0.532546 0.005955 1038 | 0.823276 -0.534102 0.192230 1039 | 0.244433 -0.937190 0.248850 1040 | 0.282490 -0.958435 0.040023 1041 | -0.515695 -0.852670 0.083738 1042 | -0.427540 -0.846012 0.318550 1043 | -0.922892 -0.367545 0.114813 1044 | -0.852141 -0.433703 0.292843 1045 | -0.950969 0.272884 0.145577 1046 | -0.920796 0.294970 0.255202 1047 | -0.921517 0.327666 0.208425 1048 | -0.929032 -0.310949 0.200524 1049 | -0.442890 -0.889674 0.111037 1050 | 0.386537 -0.922029 -0.021237 1051 | 0.967821 -0.244835 -0.058125 1052 | -0.888343 0.313383 0.335616 1053 | -0.891092 -0.264420 0.368832 1054 | -0.367229 -0.866347 0.338504 1055 | 0.353297 -0.909181 0.220389 1056 | 0.963463 -0.257482 0.073764 1057 | 0.855757 0.420079 -0.302015 1058 | 0.395099 0.917533 -0.045063 1059 | -0.249129 0.938670 0.238398 1060 | -0.639131 0.657506 0.398995 1061 | -0.866750 0.176539 0.466453 1062 | -0.779743 -0.503105 0.372673 1063 | -0.340831 -0.929545 0.140640 1064 | 0.381650 -0.904254 -0.191488 1065 | 0.882118 -0.272831 -0.383967 1066 | 0.845483 0.469012 -0.255316 1067 | 0.489162 0.870626 -0.052262 1068 | -0.092250 0.973017 0.211491 1069 | 0.929066 -0.166216 -0.330468 1070 | -0.576984 0.687482 0.440973 1071 | -0.809123 0.127065 0.573737 1072 | -0.684962 -0.519964 0.510358 1073 | -0.235575 -0.934137 0.268128 1074 | 0.525882 -0.843252 -0.111242 1075 | 0.857594 0.512177 -0.046978 1076 | 0.597735 0.795593 0.098710 1077 | 0.018946 0.966889 0.254492 1078 | 0.970664 -0.071932 -0.229426 1079 | -0.550753 0.638374 0.537727 1080 | -0.697311 0.041985 0.715538 1081 | -0.527975 -0.529933 0.663636 1082 | -0.113329 -0.890912 0.439810 1083 | 0.609124 -0.792972 0.012733 1084 | 0.264606 0.245656 0.932543 1085 | -0.258430 0.525577 0.810545 1086 | 0.529742 -0.176049 0.829687 1087 | 0.640604 -0.638665 0.426303 1088 | 0.013770 -0.686375 0.727117 1089 | -0.242433 -0.436466 0.866443 1090 | -0.451592 -0.067835 0.889642 1091 | 0.073206 0.870300 0.487052 1092 | 0.981770 0.047701 0.183990 1093 | 0.988616 0.149938 -0.012539 1094 | 0.604699 0.795170 -0.045201 1095 | -0.465582 -0.258978 0.846265 1096 | 0.538178 -0.403512 0.739961 1097 | 0.658355 0.076740 0.748785 1098 | -0.388399 0.085305 0.917534 1099 | 0.389912 0.874923 0.287190 1100 | -0.156296 0.925202 0.345793 1101 | 0.117793 0.837676 0.533314 1102 | 0.092628 0.099523 0.990715 1103 | 0.054305 -0.487585 0.871385 1104 | 0.302011 -0.573464 0.761530 1105 | -0.545815 -0.275046 0.791477 1106 | -0.378820 0.170832 0.909567 1107 | 0.079140 0.007327 0.996837 1108 | -0.136653 -0.576317 0.805720 1109 | 0.482798 -0.095608 0.870497 1110 | -0.255667 0.887633 0.383069 1111 | 0.303702 0.851230 0.427987 1112 | 0.641102 -0.306401 0.703638 1113 | -0.663992 -0.370621 0.649427 1114 | -0.668673 0.053958 0.741596 1115 | 0.648754 0.096123 0.754903 1116 | 0.177059 0.131887 0.975323 1117 | -0.239157 0.101841 0.965625 1118 | 0.232817 -0.517424 0.823449 1119 | -0.224152 -0.553540 0.802091 1120 | 0.300185 -0.415516 0.858624 1121 | -0.626900 -0.163983 0.761647 1122 | -0.575242 0.142374 0.805498 1123 | 0.812296 -0.381507 0.441167 1124 | 0.413477 0.031132 0.909982 1125 | -0.371440 0.884834 0.281248 1126 | -0.069742 -0.436962 0.896772 1127 | -0.027243 0.089296 0.995632 1128 | -0.312395 0.948310 -0.055822 1129 | -0.869980 0.483206 -0.098223 1130 | -0.951524 -0.293952 -0.090520 1131 | -0.341434 -0.935701 0.088808 1132 | 0.410001 -0.878739 0.244372 1133 | 0.957058 -0.118460 0.264589 1134 | 0.855670 0.478616 0.196866 1135 | 0.373665 0.919407 0.122737 1136 | -0.220288 0.974729 -0.037102 1137 | -0.276950 0.960548 0.025405 1138 | -0.810123 0.578149 -0.097186 1139 | -0.942399 -0.307608 -0.131383 1140 | -0.355754 -0.934014 -0.032529 1141 | 0.462003 -0.879743 0.112278 1142 | 0.936573 -0.282906 0.206872 1143 | 0.904648 0.364216 0.221265 1144 | 0.488749 0.853485 0.180800 1145 | -0.173028 0.982796 0.064603 1146 | -0.676623 0.736315 0.004603 1147 | -0.962946 0.265908 -0.045028 1148 | -0.975285 -0.217832 -0.036994 1149 | -0.647787 -0.761716 -0.012674 1150 | -0.010099 -0.998535 0.053153 1151 | 0.697215 -0.706044 0.124069 1152 | 0.971359 -0.188551 0.144604 1153 | 0.923866 0.343650 0.168449 1154 | 0.385123 0.909483 0.156591 1155 | -0.010039 0.999812 0.016580 1156 | -0.597671 0.799383 0.061458 1157 | -0.934309 0.346869 0.082145 1158 | -0.987394 -0.113244 0.110585 1159 | -0.610253 -0.782640 0.122742 1160 | 0.158377 -0.984155 0.079729 1161 | 0.814050 -0.580669 0.012091 1162 | 0.995639 0.079169 -0.049353 1163 | 0.677414 0.734403 -0.041989 1164 | -0.181422 0.979426 0.088382 1165 | -0.155733 0.984424 0.081591 1166 | -0.678033 0.734771 -0.019586 1167 | -0.977346 0.197062 -0.077207 1168 | -0.952261 -0.288410 -0.100095 1169 | -0.646897 -0.756012 -0.099855 1170 | -0.044324 -0.998371 -0.035916 1171 | 0.579807 -0.813029 0.052982 1172 | 0.933116 -0.341279 0.113239 1173 | 0.961695 0.214731 0.170392 1174 | 0.465903 0.866925 0.177131 1175 | 0.003556 0.992835 0.119442 1176 | 0.025557 0.996263 0.082506 1177 | -0.597288 0.795341 0.103336 1178 | -0.947280 0.306332 0.093926 1179 | -0.964047 -0.256765 0.068456 1180 | -0.611993 -0.790667 0.017634 1181 | 0.209906 -0.976551 -0.047819 1182 | 0.800327 -0.596320 -0.062282 1183 | 0.996605 0.077867 -0.026750 1184 | 0.732229 0.680455 0.028645 1185 | 0.336660 0.941453 0.018081 1186 | 0.197776 0.980247 0.001119 1187 | -0.438468 0.891869 0.110972 1188 | -0.895220 0.414118 0.164583 1189 | -0.957977 -0.205147 0.200487 1190 | -0.429812 -0.890270 0.150600 1191 | 0.473960 -0.880383 -0.016926 1192 | 0.946468 -0.304500 -0.107134 1193 | 0.808405 0.580204 -0.099217 1194 | 0.121385 0.986383 0.110968 1195 | 0.071854 0.990672 0.115788 1196 | -0.478493 0.857574 0.188711 1197 | -0.926385 0.303346 0.223143 1198 | -0.917690 -0.342546 0.201265 1199 | -0.376757 -0.920847 0.100475 1200 | 0.463545 -0.884352 -0.055206 1201 | 0.948953 -0.288997 -0.126369 1202 | 0.786881 0.615977 -0.037308 1203 | -0.213039 0.974338 0.072666 1204 | -0.255635 0.957963 0.130221 1205 | -0.650225 0.757919 0.052586 1206 | -0.921339 0.387960 0.024936 1207 | -0.983984 -0.175521 0.031119 1208 | -0.650460 -0.754436 0.087905 1209 | -0.046674 -0.993428 0.104511 1210 | 0.695375 -0.699867 0.163217 1211 | 0.975775 -0.110142 0.189031 1212 | 0.804798 0.536656 0.253575 1213 | 0.232369 0.942677 0.239508 1214 | -0.354914 0.934788 -0.014402 1215 | -0.893311 0.447123 -0.045556 1216 | -0.897878 -0.438721 -0.036591 1217 | -0.377354 0.925178 0.040610 1218 | 0.283492 0.940771 0.185962 1219 | 0.762135 0.588895 0.268984 1220 | 0.946954 -0.009508 0.321229 1221 | 0.421977 -0.867886 0.262126 1222 | -0.271196 -0.959786 0.072551 1223 | -0.931345 -0.351095 -0.096589 1224 | 0.001586 0.999867 0.016242 1225 | -0.000911 0.986900 0.161332 1226 | -0.558341 0.808376 0.186501 1227 | -0.894723 0.411205 0.174304 1228 | -0.984006 -0.067684 0.164774 1229 | -0.567637 -0.804166 0.176364 1230 | 0.080288 -0.986351 0.143756 1231 | 0.768073 -0.625062 0.139143 1232 | 0.973199 0.223574 0.053840 1233 | 0.647867 0.757042 0.084596 1234 | -0.229445 -0.917618 0.324549 1235 | -0.381746 -0.912541 0.146762 1236 | 0.463000 -0.885957 -0.026661 1237 | 0.817558 0.563822 -0.117062 1238 | 0.948599 -0.292909 -0.119852 1239 | -0.871854 0.435916 0.223267 1240 | -0.964374 -0.103884 0.243293 1241 | -0.407455 0.895203 0.180532 1242 | 0.266232 0.963768 0.016479 1243 | 0.208148 0.978078 -0.006067 1244 | 0.600413 0.797516 0.058927 1245 | 0.883262 0.468380 0.021647 1246 | 1247 | 1248 | 1249 | 1250 | 1251 | 1252 | 1253 | 1254 | 1255 | 1256 | 1257 | 0.710919 0.339930 1258 | 0.695672 0.308811 1259 | 0.718036 0.313731 1260 | 0.716366 0.285936 1261 | 0.660680 0.315893 1262 | 0.672358 0.288565 1263 | 0.636059 0.428659 1264 | 0.636448 0.401743 1265 | 0.657993 0.417193 1266 | 0.686324 0.411385 1267 | 0.673142 0.426986 1268 | 0.546238 0.522255 1269 | 0.537998 0.494623 1270 | 0.561313 0.520815 1271 | 0.551464 0.534633 1272 | 0.534175 0.538947 1273 | 0.465303 0.216084 1274 | 0.421238 0.220321 1275 | 0.451203 0.192821 1276 | 0.608455 0.474893 1277 | 0.597812 0.463170 1278 | 0.617315 0.447195 1279 | 0.580798 0.481143 1280 | 0.584679 0.449447 1281 | 0.581402 0.255253 1282 | 0.535086 0.244606 1283 | 0.567554 0.219281 1284 | 0.595740 0.376861 1285 | 0.608666 0.314766 1286 | 0.641672 0.358233 1287 | 0.600900 0.418124 1288 | 0.559079 0.424134 1289 | 0.515945 0.455480 1290 | 0.552167 0.462916 1291 | 0.227919 0.407822 1292 | 0.257021 0.381361 1293 | 0.248899 0.423566 1294 | 0.276208 0.436633 1295 | 0.288320 0.403899 1296 | 0.297982 0.440521 1297 | 0.402066 0.557513 1298 | 0.393031 0.521019 1299 | 0.421946 0.544428 1300 | 0.476100 0.459524 1301 | 0.493926 0.482339 1302 | 0.351840 0.336883 1303 | 0.319717 0.315243 1304 | 0.358830 0.314572 1305 | 0.344626 0.354714 1306 | 0.324744 0.356271 1307 | 0.374830 0.301217 1308 | 0.343799 0.278692 1309 | 0.382912 0.287226 1310 | 0.261956 0.325915 1311 | 0.292822 0.313856 1312 | 0.275000 0.335418 1313 | 0.381606 0.237159 1314 | 0.351793 0.253095 1315 | 0.365713 0.223613 1316 | 0.298512 0.361586 1317 | 0.387681 0.251606 1318 | 0.388192 0.266973 1319 | 0.356536 0.386906 1320 | 0.370294 0.378265 1321 | 0.311875 0.399392 1322 | 0.505970 0.630591 1323 | 0.500474 0.639410 1324 | 0.499582 0.631188 1325 | 0.683690 0.675110 1326 | 0.689398 0.684711 1327 | 0.679437 0.678717 1328 | 0.648376 0.736216 1329 | 0.638947 0.729611 1330 | 0.649750 0.725852 1331 | 0.677002 0.682874 1332 | 0.667659 0.672174 1333 | 0.675518 0.689270 1334 | 0.659684 0.707957 1335 | 0.661087 0.696936 1336 | 0.665797 0.704278 1337 | 0.822654 0.702827 1338 | 0.810031 0.688598 1339 | 0.828061 0.697405 1340 | 0.817012 0.707367 1341 | 0.823870 0.724807 1342 | 0.811493 0.713235 1343 | 0.619336 0.871125 1344 | 0.603130 0.878626 1345 | 0.611253 0.861336 1346 | 0.566792 0.896860 1347 | 0.554749 0.906682 1348 | 0.552909 0.893785 1349 | 0.939378 0.623674 1350 | 0.925438 0.610527 1351 | 0.944973 0.618194 1352 | 0.934428 0.628708 1353 | 0.941068 0.642286 1354 | 0.931826 0.638347 1355 | 0.953933 0.613529 1356 | 0.961143 0.625044 1357 | 0.389667 0.958448 1358 | 0.404266 0.966375 1359 | 0.391454 0.970530 1360 | 0.957315 0.366812 1361 | 0.966005 0.375345 1362 | 0.955029 0.374128 1363 | 0.958083 0.382916 1364 | 0.967697 0.345351 1365 | 0.974709 0.354417 1366 | 0.962658 0.354385 1367 | 0.446151 0.711810 1368 | 0.437480 0.715098 1369 | 0.440662 0.702564 1370 | 0.449840 0.710985 1371 | 0.446151 0.711810 1372 | 0.706825 0.381903 1373 | 0.713990 0.406767 1374 | 0.734452 0.373689 1375 | 0.735898 0.270354 1376 | 0.722578 0.264594 1377 | 0.655533 0.267193 1378 | 0.677546 0.262362 1379 | 0.634796 0.285053 1380 | 0.603585 0.196340 1381 | 0.626681 0.163381 1382 | 0.626400 0.197075 1383 | 0.222224 0.634779 1384 | 0.196632 0.626053 1385 | 0.213882 0.617241 1386 | 0.346395 0.575373 1387 | 0.351134 0.535895 1388 | 0.372447 0.570104 1389 | 0.947789 0.356866 1390 | 0.960438 0.360908 1391 | 0.649454 0.704027 1392 | 0.642472 0.702034 1393 | 0.648287 0.696243 1394 | 0.647373 0.709872 1395 | 0.641621 0.715187 1396 | 0.633783 0.716388 1397 | 0.635578 0.708637 1398 | 0.592977 0.851516 1399 | 0.590007 0.863531 1400 | 0.582363 0.851253 1401 | 0.398423 0.938636 1402 | 0.407761 0.932207 1403 | 0.407913 0.946600 1404 | 0.434376 0.950405 1405 | 0.434409 0.936285 1406 | 0.445798 0.951481 1407 | 0.270875 0.992752 1408 | 0.263877 0.979769 1409 | 0.280134 0.985135 1410 | 0.256248 0.996217 1411 | 0.229895 0.979710 1412 | 0.244855 0.974872 1413 | 0.240803 0.992712 1414 | 0.047952 0.691868 1415 | 0.063363 0.685526 1416 | 0.059507 0.703220 1417 | 0.005513 0.628078 1418 | 0.025970 0.630853 1419 | 0.012663 0.641395 1420 | 0.749977 0.045111 1421 | 0.744482 0.032613 1422 | 0.756677 0.033568 1423 | 0.756315 0.020697 1424 | 0.728639 0.006698 1425 | 0.746862 0.005983 1426 | 0.734229 0.019089 1427 | 0.528690 0.577049 1428 | 0.546981 0.569899 1429 | 0.541134 0.588720 1430 | 0.537704 0.297302 1431 | 0.479385 0.285671 1432 | 0.477226 0.248889 1433 | 0.527678 0.344166 1434 | 0.472225 0.320527 1435 | 0.424825 0.302024 1436 | 0.430384 0.275966 1437 | 0.429132 0.249195 1438 | 0.457013 0.350247 1439 | 0.413780 0.324376 1440 | 0.505042 0.381973 1441 | 0.437005 0.374112 1442 | 0.398450 0.344015 1443 | 0.476400 0.409345 1444 | 0.416157 0.392842 1445 | 0.384185 0.363001 1446 | 0.447607 0.425815 1447 | 0.514328 0.511649 1448 | 0.511543 0.202306 1449 | 0.495641 0.167608 1450 | 0.729546 0.433721 1451 | 0.712191 0.450706 1452 | 0.696675 0.467960 1453 | 0.655077 0.494384 1454 | 0.637896 0.508066 1455 | 0.620135 0.522245 1456 | 0.578295 0.545923 1457 | 0.564131 0.556517 1458 | 0.810360 0.353539 1459 | 0.780738 0.349675 1460 | 0.780385 0.325946 1461 | 0.811730 0.331128 1462 | 0.815810 0.309280 1463 | 0.779885 0.302730 1464 | 0.840367 0.335749 1465 | 0.838093 0.357332 1466 | 0.843750 0.314204 1467 | 0.836489 0.378979 1468 | 0.810880 0.376022 1469 | 0.782355 0.373664 1470 | 0.774876 0.279930 1471 | 0.827875 0.289055 1472 | 0.847092 0.292292 1473 | 0.764462 0.454666 1474 | 0.779232 0.431215 1475 | 0.822097 0.465697 1476 | 0.799670 0.479572 1477 | 0.784350 0.497729 1478 | 0.749400 0.474155 1479 | 0.827770 0.500195 1480 | 0.814278 0.518822 1481 | 0.840727 0.479558 1482 | 0.774052 0.518369 1483 | 0.736597 0.493520 1484 | 0.802248 0.537198 1485 | 0.773014 0.545026 1486 | 0.726260 0.513597 1487 | 0.790081 0.554173 1488 | 0.713525 0.559503 1489 | 0.695798 0.569985 1490 | 0.667917 0.540740 1491 | 0.685616 0.529310 1492 | 0.733902 0.581584 1493 | 0.719015 0.593868 1494 | 0.705945 0.522613 1495 | 0.738783 0.557133 1496 | 0.748529 0.569323 1497 | 0.682736 0.585827 1498 | 0.652358 0.555600 1499 | 0.705532 0.607738 1500 | 0.677254 0.609984 1501 | 0.638643 0.573588 1502 | 0.692577 0.622054 1503 | 0.607866 0.582142 1504 | 0.595040 0.592628 1505 | 0.579782 0.575612 1506 | 0.593181 0.565040 1507 | 0.620807 0.597480 1508 | 0.609293 0.608255 1509 | 0.606780 0.556482 1510 | 0.622435 0.573419 1511 | 0.631860 0.586443 1512 | 0.583220 0.604504 1513 | 0.566778 0.588262 1514 | 0.598198 0.619582 1515 | 0.572864 0.617545 1516 | 0.557127 0.603033 1517 | 0.587879 0.631650 1518 | 0.754539 0.603642 1519 | 0.740828 0.616168 1520 | 0.768315 0.591965 1521 | 0.727802 0.629202 1522 | 0.716321 0.642328 1523 | 0.634209 0.613081 1524 | 0.623125 0.623330 1525 | 0.646151 0.603317 1526 | 0.612401 0.633918 1527 | 0.602233 0.645185 1528 | 0.856406 0.522829 1529 | 0.842745 0.540166 1530 | 0.871979 0.505475 1531 | 0.830581 0.557430 1532 | 0.819683 0.575077 1533 | 0.867895 0.340333 1534 | 0.865155 0.361061 1535 | 0.863539 0.381824 1536 | 0.871733 0.319496 1537 | 0.876663 0.298520 1538 | 0.891093 0.364756 1539 | 0.894324 0.345024 1540 | 0.898623 0.324927 1541 | 0.919685 0.350079 1542 | 0.915167 0.368214 1543 | 0.921460 0.330214 1544 | 0.889727 0.384727 1545 | 0.911175 0.386579 1546 | 0.906974 0.304975 1547 | 0.919609 0.308276 1548 | 0.947923 0.337573 1549 | 0.954747 0.317860 1550 | 0.938713 0.371440 1551 | 0.936868 0.386551 1552 | 0.857649 0.577279 1553 | 0.869715 0.561581 1554 | 0.883129 0.545481 1555 | 0.895336 0.583399 1556 | 0.880891 0.595748 1557 | 0.905300 0.565742 1558 | 0.849409 0.594356 1559 | 0.862845 0.604087 1560 | 0.901095 0.531771 1561 | 0.911954 0.543130 1562 | 0.930781 0.590956 1563 | 0.938452 0.574026 1564 | 0.907735 0.618228 1565 | 0.892783 0.628291 1566 | 0.748525 0.650575 1567 | 0.761955 0.637957 1568 | 0.775112 0.624853 1569 | 0.783356 0.660233 1570 | 0.767590 0.669739 1571 | 0.793847 0.644636 1572 | 0.736753 0.665403 1573 | 0.746261 0.674743 1574 | 0.790106 0.613177 1575 | 0.800037 0.623106 1576 | 0.816882 0.670352 1577 | 0.827487 0.658136 1578 | 0.792220 0.693406 1579 | 0.779765 0.702052 1580 | 0.650472 0.653166 1581 | 0.636599 0.638067 1582 | 0.646753 0.628197 1583 | 0.658356 0.642172 1584 | 0.639274 0.660251 1585 | 0.626045 0.647575 1586 | 0.671682 0.658981 1587 | 0.651843 0.670036 1588 | 0.657848 0.619467 1589 | 0.664516 0.628343 1590 | 0.677021 0.646468 1591 | 0.628737 0.670228 1592 | 0.615907 0.658062 1593 | 0.640134 0.681975 1594 | 0.422628 0.167272 1595 | 0.378948 0.206343 1596 | 0.481331 0.132795 1597 | 0.203553 0.375807 1598 | 0.245169 0.337003 1599 | 0.167744 0.430558 1600 | 0.202202 0.450553 1601 | 0.139544 0.488607 1602 | 0.178697 0.495386 1603 | 0.539979 0.096671 1604 | 0.538487 0.142511 1605 | 0.556520 0.089364 1606 | 0.568186 0.124839 1607 | 0.155978 0.521261 1608 | 0.130438 0.502199 1609 | 0.614304 0.242359 1610 | 0.234449 0.468447 1611 | 0.269632 0.478547 1612 | 0.217063 0.521123 1613 | 0.265016 0.526095 1614 | 0.180026 0.545652 1615 | 0.266588 0.574389 1616 | 0.227128 0.570036 1617 | 0.194793 0.576461 1618 | 0.302853 0.483012 1619 | 0.324549 0.438541 1620 | 0.337014 0.482659 1621 | 0.306783 0.530322 1622 | 0.308127 0.576284 1623 | 0.312742 0.625054 1624 | 0.266082 0.625142 1625 | 0.353873 0.619208 1626 | 0.230068 0.608170 1627 | 0.204837 0.602723 1628 | 0.369522 0.473187 1629 | 0.351323 0.431593 1630 | 0.336119 0.393540 1631 | 0.396720 0.457478 1632 | 0.375102 0.421104 1633 | 0.420486 0.494071 1634 | 0.445271 0.523325 1635 | 0.446922 0.474462 1636 | 0.421770 0.441548 1637 | 0.469333 0.502703 1638 | 0.395831 0.408440 1639 | 0.366160 0.664771 1640 | 0.322884 0.679581 1641 | 0.413619 0.662725 1642 | 0.390195 0.611635 1643 | 0.374265 0.697569 1644 | 0.349105 0.701326 1645 | 0.402975 0.697731 1646 | 0.420839 0.594502 1647 | 0.443681 0.633003 1648 | 0.447416 0.575856 1649 | 0.477559 0.612398 1650 | 0.462705 0.662388 1651 | 0.447387 0.680407 1652 | 0.481796 0.648952 1653 | 0.469320 0.552097 1654 | 0.493380 0.578518 1655 | 0.491211 0.530687 1656 | 0.511864 0.556301 1657 | 0.514779 0.593278 1658 | 0.505309 0.612644 1659 | 0.447567 0.696610 1660 | 0.431314 0.688801 1661 | 0.422587 0.705416 1662 | 0.493773 0.625415 1663 | 0.494911 0.645099 1664 | 0.505595 0.624902 1665 | 0.575929 0.518696 1666 | 0.563136 0.490899 1667 | 0.505969 0.630591 1668 | 0.609488 0.544173 1669 | 0.583005 0.509484 1670 | 0.503600 0.666617 1671 | 0.509971 0.653449 1672 | 0.492010 0.675924 1673 | 0.517330 0.630958 1674 | 0.510207 0.635129 1675 | 0.523304 0.619997 1676 | 0.594554 0.541321 1677 | 0.532208 0.719031 1678 | 0.517507 0.691996 1679 | 0.529535 0.681400 1680 | 0.549368 0.718377 1681 | 0.558380 0.732141 1682 | 0.544187 0.740464 1683 | 0.519388 0.654460 1684 | 0.530214 0.643804 1685 | 0.545299 0.658310 1686 | 0.536991 0.673890 1687 | 0.559893 0.671002 1688 | 0.549519 0.685205 1689 | 0.554100 0.644545 1690 | 0.538838 0.631487 1691 | 0.569033 0.657387 1692 | 0.517771 0.725287 1693 | 0.504686 0.700937 1694 | 0.530061 0.747796 1695 | 0.531737 0.604900 1696 | 0.477957 0.687190 1697 | 0.465658 0.699907 1698 | 0.667511 0.689389 1699 | 0.690247 0.667535 1700 | 0.685394 0.691335 1701 | 0.679620 0.696035 1702 | 0.800852 0.719261 1703 | 0.836165 0.690036 1704 | 0.842433 0.678693 1705 | 0.835511 0.717936 1706 | 0.843396 0.708160 1707 | 0.847800 0.699347 1708 | 0.921973 0.645678 1709 | 0.960205 0.602778 1710 | 0.952673 0.637267 1711 | 0.445896 0.964270 1712 | 0.436095 0.964674 1713 | 0.985497 0.335029 1714 | 0.994490 0.352363 1715 | 0.563230 0.630995 1716 | 0.547733 0.617604 1717 | 0.578222 0.644286 1718 | 0.575719 0.683106 1719 | 0.568438 0.697278 1720 | 0.583916 0.669714 1721 | 0.592746 0.657112 1722 | 0.504130 0.733384 1723 | 0.491455 0.710541 1724 | 0.516304 0.755584 1725 | 0.490991 0.742123 1726 | 0.479047 0.720654 1727 | 0.502748 0.763807 1728 | 0.628554 0.438437 1729 | 0.755207 0.418128 1730 | 0.753590 0.401414 1731 | 0.755207 0.418128 1732 | 0.749852 0.345552 1733 | 0.758567 0.372354 1734 | 0.760948 0.397272 1735 | 0.767608 0.396512 1736 | 0.439975 0.738713 1737 | 0.442315 0.779238 1738 | 0.423957 0.776877 1739 | 0.421964 0.748065 1740 | 0.445413 0.794752 1741 | 0.426812 0.801642 1742 | 0.657618 0.469898 1743 | 0.679481 0.492966 1744 | 0.458240 0.711376 1745 | 0.451650 0.718944 1746 | 0.701855 0.498955 1747 | 0.664289 0.458502 1748 | 0.439825 0.722793 1749 | 0.421451 0.725372 1750 | 0.329939 0.701101 1751 | 0.320022 0.738873 1752 | 0.301714 0.717899 1753 | 0.318577 0.759992 1754 | 0.292931 0.749206 1755 | 0.339601 0.704041 1756 | 0.277648 0.667335 1757 | 0.271017 0.703936 1758 | 0.814315 0.397906 1759 | 0.779235 0.396603 1760 | 0.833443 0.400738 1761 | 0.689981 0.245580 1762 | 0.235965 0.649133 1763 | 0.242239 0.665834 1764 | 0.240799 0.692003 1765 | 0.228850 0.759152 1766 | 0.258720 0.772251 1767 | 0.254595 0.810921 1768 | 0.225613 0.817055 1769 | 0.251434 0.839689 1770 | 0.223894 0.836827 1771 | 0.339992 0.751409 1772 | 0.360987 0.754683 1773 | 0.364372 0.784312 1774 | 0.343469 0.791789 1775 | 0.368259 0.809783 1776 | 0.347436 0.808787 1777 | 0.457012 0.737497 1778 | 0.468084 0.730044 1779 | 0.478038 0.750648 1780 | 0.464211 0.758296 1781 | 0.488867 0.772129 1782 | 0.473331 0.780155 1783 | 0.287526 0.780425 1784 | 0.315840 0.785553 1785 | 0.309879 0.824856 1786 | 0.282613 0.814689 1787 | 0.305310 0.844705 1788 | 0.278454 0.842553 1789 | 0.222224 0.634779 1790 | 0.653491 0.224539 1791 | 0.661082 0.207210 1792 | 0.748436 0.274146 1793 | 0.748468 0.295765 1794 | 0.263909 0.738508 1795 | 0.232966 0.728637 1796 | 0.749185 0.320249 1797 | 0.637432 0.232792 1798 | 0.378819 0.726448 1799 | 0.357820 0.729656 1800 | 0.401430 0.725212 1801 | 0.404736 0.778562 1802 | 0.402473 0.751299 1803 | 0.407743 0.805078 1804 | 0.550143 0.180925 1805 | 0.582987 0.159602 1806 | 0.384772 0.780994 1807 | 0.381763 0.753356 1808 | 0.388218 0.807747 1809 | 0.637903 0.195790 1810 | 0.653024 0.186788 1811 | 0.610035 0.136303 1812 | 0.594751 0.107880 1813 | 0.645240 0.165265 1814 | 0.579507 0.079478 1815 | 0.134753 0.541808 1816 | 0.118832 0.521752 1817 | 0.152268 0.563765 1818 | 0.167182 0.587431 1819 | 0.180606 0.609019 1820 | 0.222224 0.634779 1821 | 0.175076 0.652143 1822 | 0.165733 0.637222 1823 | 0.153772 0.619869 1824 | 0.141060 0.600480 1825 | 0.127111 0.580167 1826 | 0.111932 0.560452 1827 | 0.097102 0.541998 1828 | 0.608565 0.067683 1829 | 0.621275 0.090901 1830 | 0.635720 0.114351 1831 | 0.248794 0.868454 1832 | 0.222839 0.867193 1833 | 0.274457 0.871129 1834 | 0.299630 0.875152 1835 | 0.862786 0.402527 1836 | 0.246446 0.895807 1837 | 0.220898 0.897869 1838 | 0.218733 0.914717 1839 | 0.245141 0.918548 1840 | 0.244846 0.947296 1841 | 0.222116 0.945895 1842 | 0.270950 0.898355 1843 | 0.269129 0.920602 1844 | 0.293767 0.905885 1845 | 0.294564 0.924094 1846 | 0.893100 0.405748 1847 | 0.902938 0.406826 1848 | 0.939502 0.405269 1849 | 0.267273 0.949870 1850 | 0.291238 0.951814 1851 | 0.143486 0.670056 1852 | 0.137452 0.650822 1853 | 0.127688 0.632756 1854 | 0.112900 0.663254 1855 | 0.123813 0.679675 1856 | 0.103354 0.645878 1857 | 0.650990 0.135126 1858 | 0.660579 0.095074 1859 | 0.678632 0.113195 1860 | 0.681901 0.079060 1861 | 0.695371 0.101919 1862 | 0.646063 0.073689 1863 | 0.668036 0.058695 1864 | 0.634363 0.050087 1865 | 0.651382 0.037210 1866 | 0.088763 0.577837 1867 | 0.072458 0.560812 1868 | 0.055409 0.575296 1869 | 0.067476 0.594112 1870 | 0.103184 0.595971 1871 | 0.080687 0.611426 1872 | 0.116176 0.614454 1873 | 0.092772 0.628609 1874 | 0.606614 0.669262 1875 | 0.619633 0.680622 1876 | 0.631669 0.691392 1877 | 0.598168 0.681253 1878 | 0.611513 0.691606 1879 | 0.624436 0.700938 1880 | 0.603816 0.703611 1881 | 0.590628 0.694429 1882 | 0.618985 0.712116 1883 | 0.584808 0.709745 1884 | 0.594138 0.716294 1885 | 0.613904 0.727527 1886 | 0.556097 0.762889 1887 | 0.570437 0.756315 1888 | 0.541980 0.769847 1889 | 0.528279 0.777351 1890 | 0.501351 0.793904 1891 | 0.487603 0.802777 1892 | 0.514828 0.785393 1893 | 0.567786 0.784930 1894 | 0.583930 0.780764 1895 | 0.590281 0.791914 1896 | 0.577630 0.804712 1897 | 0.588282 0.829945 1898 | 0.608258 0.830481 1899 | 0.553485 0.791354 1900 | 0.564171 0.812059 1901 | 0.574264 0.833069 1902 | 0.551306 0.819101 1903 | 0.540002 0.798579 1904 | 0.562240 0.839019 1905 | 0.526937 0.806509 1906 | 0.538812 0.826748 1907 | 0.551185 0.847012 1908 | 0.514105 0.815318 1909 | 0.525819 0.834369 1910 | 0.541030 0.857700 1911 | 0.502313 0.826491 1912 | 0.509330 0.837709 1913 | 0.531796 0.874463 1914 | 0.572206 0.856896 1915 | 0.562659 0.864580 1916 | 0.555320 0.874956 1917 | 0.564680 0.883758 1918 | 0.571927 0.879457 1919 | 0.581559 0.872730 1920 | 0.452288 0.828722 1921 | 0.430135 0.829862 1922 | 0.373009 0.838286 1923 | 0.354557 0.841488 1924 | 0.392099 0.835132 1925 | 0.411207 0.832362 1926 | 0.414849 0.859376 1927 | 0.395963 0.862135 1928 | 0.377120 0.866739 1929 | 0.399782 0.887291 1930 | 0.381481 0.890470 1931 | 0.417766 0.884875 1932 | 0.358028 0.876067 1933 | 0.360671 0.890559 1934 | 0.434462 0.858132 1935 | 0.436644 0.882880 1936 | 0.456221 0.860410 1937 | 0.457677 0.877166 1938 | 0.455847 0.916269 1939 | 0.436672 0.911347 1940 | 0.419787 0.909953 1941 | 0.403920 0.911685 1942 | 0.388351 0.917288 1943 | 0.369579 0.928363 1944 | 0.420789 0.931907 1945 | 0.421201 0.949182 1946 | 0.974431 0.395642 1947 | 0.985604 0.387300 1948 | 0.692798 0.044819 1949 | 0.703618 0.060553 1950 | 0.680395 0.026024 1951 | 0.719712 0.078147 1952 | 0.091613 0.698886 1953 | 0.086982 0.676640 1954 | 0.080054 0.658894 1955 | 0.070871 0.642679 1956 | 0.059315 0.627011 1957 | 0.045046 0.611889 1958 | 0.027424 0.595581 1959 | 0.716933 0.031061 1960 | 0.725214 0.044601 1961 | 0.712546 0.013526 1962 | 0.737294 0.060065 1963 | 0.059009 0.670377 1964 | 0.051343 0.656204 1965 | 0.040657 0.642049 1966 | 0.041275 0.680886 1967 | 0.034836 0.669709 1968 | 0.026000 0.654128 1969 | 0.973991 0.365567 1970 | 0.994813 0.371601 1971 | 0.421725 0.967814 1972 | 0.578809 0.896761 1973 | 0.592097 0.891036 1974 | 0.655945 0.718241 1975 | 0.342370 0.736165 1976 | 0.329939 0.701101 1977 | 1978 | 1979 | 1980 | 1981 | 1982 | 1983 | 1984 | 1985 | 1986 | 1987 | 1988 | 1989 |

226 0 531 2 1 1 531 2 176 3 1 1 226 0 1 1 179 4 440 5 179 4 1 1 183 6 3 8 174 7 3 8 184 9 174 7 8 10 184 9 3 8 3 8 183 6 8 10 6 11 109 13 102 12 11 14 109 13 6 11 77 15 11 14 6 11 7 16 198 18 196 17 9 19 185 21 10 20 10 20 186 22 9 19 10 20 185 21 173 23 186 22 10 20 173 23 56 24 232 26 230 25 57 27 180 29 589 28 181 30 57 27 58 31 181 30 174 7 57 27 57 27 174 7 180 29 246 32 182 33 58 31 173 23 58 31 182 33 58 31 173 23 181 30 201 34 59 36 199 35 203 37 61 39 202 38 252 40 250 42 66 41 76 43 247 44 246 32 95 45 94 47 81 46 96 48 95 45 81 46 97 49 96 48 81 46 93 50 92 52 81 51 94 47 93 50 81 51 100 53 99 55 82 54 89 56 100 58 82 57 99 55 98 59 82 54 90 60 89 56 82 57 91 61 90 60 82 57 87 62 107 63 96 48 202 38 245 64 98 59 246 32 102 12 182 33 186 65 108 67 110 66 125 68 288 70 470 69 125 71 470 73 327 72 126 74 288 70 289 75 471 76 126 74 289 75 468 77 471 79 127 78 130 80 285 82 287 81 286 83 130 80 287 81 286 83 131 85 460 84 131 86 362 88 460 87 461 89 356 91 132 90 135 92 457 94 284 93 456 95 135 92 284 93 456 95 136 97 452 96 137 98 457 94 455 99 382 100 137 102 455 101 446 103 140 105 444 104 140 105 398 106 444 104 141 107 445 109 443 108 183 110 152 112 158 111 152 112 185 114 157 113 155 115 184 9 153 116 226 0 155 115 154 117 175 118 166 119 176 3 591 120 440 5 178 121 179 4 589 28 180 29 179 4 590 122 589 28 231 123 438 125 437 124 233 126 258 128 261 127 254 129 251 131 253 130 446 103 447 133 283 132 447 133 445 109 283 132 467 134 312 136 325 135 472 137 467 134 325 135 466 138 326 140 469 139 361 141 360 143 459 142 384 144 450 146 385 145 451 147 392 149 390 148 441 150 399 152 400 151 449 153 441 150 400 151 402 154 442 156 401 155 431 157 423 159 425 158 424 160 433 162 429 161 431 163 436 165 430 164 436 165 435 166 430 164 433 167 432 169 434 168 562 170 569 172 561 171 55 175 208 173 230 25 208 173 55 175 0 174 209 176 0 174 2 177 0 174 209 176 208 173 88 179 2 177 0 174 2 177 88 179 85 178 83 180 0 174 55 175 0 174 83 180 88 179 176 3 178 121 1 1 1 1 178 121 440 5 4 181 85 178 84 182 85 178 4 181 2 177 210 183 2 177 4 181 2 177 210 183 209 176 86 185 5 184 4 181 4 181 84 182 86 185 211 186 4 181 5 184 4 181 211 186 210 183 86 185 75 187 5 184 75 187 86 185 78 188 212 189 5 184 75 187 5 184 212 189 211 186 6 11 103 190 77 15 103 190 6 11 102 12 55 175 7 16 196 17 55 175 196 17 83 180 7 16 230 25 207 191 230 25 7 16 55 175 7 16 221 192 198 18 221 192 7 16 207 191 579 193 8 10 571 194 8 10 579 193 184 9 8 10 572 195 571 194 572 195 8 10 183 6 559 196 9 19 550 197 9 19 559 196 185 21 551 198 9 19 186 22 9 19 551 198 550 197 564 199 11 14 563 200 11 14 564 199 109 13 561 171 11 14 77 15 11 14 561 171 563 200 12 204 533 202 13 201 533 202 12 204 532 203 12 204 539 206 532 203 539 206 12 204 14 205 540 207 13 201 28 208 13 201 540 207 12 204 14 205 540 207 29 209 540 207 14 205 12 204 28 208 165 211 272 210 165 211 28 208 13 201 13 201 534 212 165 211 534 212 13 201 533 202 14 205 538 213 539 206 538 213 14 205 167 214 268 215 14 205 29 209 14 205 268 215 167 214 15 219 508 217 509 216 508 217 15 219 168 218 501 220 509 216 570 221 509 216 501 220 15 219 521 223 15 219 501 220 15 219 521 223 26 222 26 222 168 218 15 219 168 218 26 222 364 224 501 220 502 226 16 225 502 226 501 220 570 221 521 223 16 225 27 227 16 225 521 223 501 220 16 225 503 229 156 228 503 229 16 225 502 226 27 227 156 228 363 230 156 228 27 227 16 225 491 232 500 234 549 233 500 234 491 232 17 231 510 236 17 231 491 232 17 231 510 236 21 235 499 237 17 231 169 238 17 231 499 237 500 234 21 235 169 238 17 231 169 238 21 235 331 239 491 232 492 241 18 240 492 241 491 232 549 233 510 236 18 240 22 242 18 240 510 236 491 232 18 240 493 244 115 243 493 244 18 240 492 241 22 242 115 243 328 245 115 243 22 242 18 240 474 247 481 249 560 248 481 249 474 247 19 246 24 251 19 246 474 247 19 246 24 251 23 250 19 246 480 252 481 249 480 252 19 246 116 253 23 250 116 253 19 246 116 253 23 250 144 254 474 247 475 256 20 255 475 256 474 247 560 248 24 251 20 255 25 257 20 255 24 251 474 247 20 255 476 259 142 258 476 259 20 255 475 256 25 257 142 258 149 260 142 258 25 257 20 255 520 261 510 236 511 262 510 236 520 261 21 235 520 261 331 239 21 235 331 239 520 261 519 263 510 236 512 264 511 262 512 264 510 236 22 242 512 264 328 245 513 265 328 245 512 264 22 242 490 266 24 251 483 267 24 251 490 266 23 250 490 266 144 254 23 250 144 254 490 266 489 268 483 267 25 257 484 269 25 257 483 267 24 251 484 269 149 260 485 270 149 260 484 269 25 257 522 272 530 271 521 223 530 271 26 222 521 223 364 224 530 271 529 273 530 271 364 224 26 222 523 274 521 223 27 227 521 223 523 274 522 272 523 274 363 230 524 275 363 230 523 274 27 227 540 207 542 277 541 276 542 277 540 207 28 208 542 277 272 210 543 278 272 210 542 277 28 208 548 279 540 207 541 276 540 207 548 279 29 209 547 280 29 209 548 279 29 209 547 280 268 215 541 276 31 281 30 282 31 281 541 276 542 277 30 282 32 283 541 276 32 283 548 279 541 276 30 282 35 285 34 284 35 285 30 282 31 281 33 286 30 282 34 284 30 282 33 286 32 283 31 281 543 278 278 287 543 278 31 281 542 277 279 288 31 281 278 287 31 281 279 288 35 285 273 289 548 279 32 283 548 279 273 289 547 280 274 290 32 283 33 286 32 283 274 290 273 289 139 291 34 284 283 132 34 284 139 291 33 286 397 292 33 286 139 291 33 286 397 292 274 290 34 284 138 293 283 132 138 293 34 284 35 285 138 293 279 288 393 294 279 288 138 293 35 285 36 296 523 274 37 295 523 274 36 296 522 272 36 296 530 271 522 272 530 271 36 296 38 297 41 299 40 298 36 296 41 299 36 296 37 295 40 298 38 297 36 296 38 297 40 298 39 300 37 295 524 275 374 301 524 275 37 295 523 274 41 299 374 301 375 302 374 301 41 299 37 295 38 297 529 273 530 271 529 273 38 297 371 303 39 300 371 303 38 297 371 303 39 300 380 304 134 305 40 298 284 93 40 298 134 305 39 300 381 306 39 300 134 305 39 300 381 306 380 304 284 93 40 298 133 307 133 307 40 298 41 299 133 307 375 302 391 308 375 302 133 307 41 299 42 310 512 264 43 309 512 264 42 310 511 262 42 310 520 261 511 262 520 261 42 310 44 311 47 313 42 310 43 309 42 310 47 313 46 312 46 312 44 311 42 310 44 311 46 312 45 314 43 309 513 265 335 315 513 265 43 309 512 264 47 313 335 315 336 316 335 315 47 313 43 309 44 311 519 263 520 261 519 263 44 311 348 317 45 314 348 317 44 311 348 317 45 314 347 318 45 314 287 81 129 319 287 81 45 314 46 312 129 319 347 318 45 314 347 318 129 319 355 320 128 321 46 312 47 313 46 312 128 321 287 81 128 321 336 316 349 322 336 316 128 321 47 313 49 326 482 324 48 323 482 324 49 326 50 325 48 323 52 328 51 327 52 328 48 323 482 324 289 75 49 326 48 323 49 326 289 75 124 329 48 323 123 330 289 75 123 330 48 323 51 327 319 331 49 326 320 332 49 326 319 331 50 325 324 333 320 332 124 329 124 329 320 332 49 326 50 325 483 267 482 324 483 267 50 325 490 266 50 325 489 268 490 266 489 268 50 325 319 331 310 334 52 328 309 335 52 328 310 334 51 327 311 336 51 327 310 334 51 327 311 336 123 330 482 324 484 269 52 328 484 269 482 324 483 267 52 328 485 270 309 335 485 270 52 328 484 269 80 338 198 18 53 337 198 18 80 338 196 17 198 18 221 192 53 337 220 339 53 337 221 192 80 341 201 34 199 35 201 34 80 341 53 340 53 340 219 343 201 34 219 343 53 340 220 342 220 342 200 345 219 343 200 345 220 342 54 344 220 339 197 347 54 346 197 347 220 339 221 192 54 346 234 349 235 348 234 349 54 346 197 347 54 344 236 350 200 345 236 350 54 344 235 351 232 26 56 24 231 123 56 24 227 352 231 123 56 24 208 173 589 28 208 173 56 24 230 25 56 24 590 122 227 352 590 122 56 24 589 28 589 28 209 176 57 27 209 176 589 28 208 173 58 31 209 176 210 183 209 176 58 31 57 27 246 32 210 183 211 186 210 183 246 32 58 31 218 353 201 34 219 343 201 34 218 353 59 36 203 37 199 35 59 36 199 35 203 37 202 38 217 354 59 36 218 353 59 36 217 354 203 37 218 353 205 356 217 354 205 356 218 353 60 355 219 343 60 355 218 353 60 355 219 343 200 345 200 345 237 357 60 355 237 357 200 345 236 350 64 359 205 356 60 355 205 356 64 359 204 358 237 357 64 359 60 355 64 359 237 357 238 360 217 354 61 39 203 37 61 39 217 354 216 361 61 39 245 64 202 38 245 64 61 39 244 362 216 361 244 362 61 39 244 362 216 361 243 363 62 364 217 354 205 356 217 354 62 364 216 361 216 361 62 364 253 130 253 130 243 363 216 361 63 365 205 356 204 358 205 356 63 365 62 364 254 129 62 364 63 365 62 364 254 129 253 130 256 367 63 365 204 358 63 365 256 367 255 366 255 366 254 129 63 365 254 129 255 366 70 368 259 369 204 358 64 359 204 358 259 369 256 367 64 359 260 370 259 369 260 370 64 359 238 360 243 363 65 372 244 362 65 372 243 363 215 371 244 362 79 373 245 64 79 373 244 362 65 372 215 371 68 375 65 372 68 375 215 371 214 374 65 372 87 62 79 373 87 62 65 372 68 375 66 41 214 374 215 371 214 374 66 41 67 376 253 130 215 371 243 363 215 371 253 130 66 41 251 131 66 41 253 130 66 41 251 131 252 40 67 376 250 42 249 377 250 42 67 376 66 41 67 376 213 379 214 374 213 379 67 376 105 378 105 378 249 377 248 380 249 377 105 378 67 376 106 381 214 374 213 379 214 374 106 381 68 375 87 62 68 375 106 381 106 381 107 63 87 62 164 383 70 368 255 366 70 368 164 383 69 382 69 382 242 385 70 368 242 385 69 382 73 384 69 382 188 387 189 386 188 387 69 382 164 383 190 388 69 382 189 386 69 382 190 388 73 384 70 368 251 131 254 129 251 131 70 368 242 385 71 390 242 385 73 384 242 385 71 390 241 389 74 392 241 389 71 390 241 389 74 392 240 391 73 384 121 393 71 390 121 393 73 384 194 394 120 395 71 390 121 393 71 390 120 395 74 392 72 397 240 391 74 392 240 391 72 397 239 396 101 399 239 396 72 397 239 396 101 399 104 398 72 397 119 401 122 400 119 401 72 397 74 392 562 170 72 397 122 400 72 397 562 170 101 399 162 403 194 394 73 384 194 394 162 403 161 402 162 403 190 388 192 404 190 388 162 403 73 384 112 405 120 395 111 406 120 395 112 405 74 392 119 401 112 405 113 407 112 405 119 401 74 392 75 187 107 63 106 381 107 63 75 187 78 188 213 379 75 187 106 381 75 187 213 379 212 189 76 43 211 186 212 189 211 186 76 43 246 32 212 189 105 378 76 43 105 378 212 189 213 379 248 380 76 43 105 378 76 43 248 380 247 44 77 15 104 398 101 399 104 398 77 15 103 190 78 188 86 185 94 47 78 188 94 47 95 45 96 48 79 373 87 62 79 373 96 48 97 49 97 49 245 64 79 373 245 64 97 49 98 59 199 35 100 53 80 341 100 53 199 35 99 55 80 338 89 56 196 17 89 56 80 338 100 58 98 59 97 49 82 54 97 49 81 46 82 54 92 52 82 57 81 51 82 57 92 52 91 61 196 17 90 60 83 180 90 60 196 17 89 56 91 61 83 180 90 60 83 180 91 61 88 179 84 182 92 52 93 50 92 52 84 182 85 178 102 12 247 44 103 190 247 44 102 12 246 32 103 190 248 380 104 398 248 380 103 190 247 44 249 377 104 398 248 380 104 398 249 377 239 396 114 408 108 409 109 13 186 22 182 33 108 409 182 33 186 22 173 23 110 66 112 405 111 406 112 405 110 66 108 67 112 405 114 410 113 407 112 405 108 67 114 410 551 198 110 412 552 411 110 412 551 198 186 22 111 406 552 414 110 66 552 414 111 406 553 413 553 413 120 395 554 415 120 395 553 413 111 406 565 417 113 407 114 410 113 407 565 417 566 416 567 418 113 407 566 416 113 407 567 418 119 401 564 199 114 408 109 13 114 408 564 199 565 419 115 423 494 421 118 420 494 421 115 423 493 422 328 424 118 420 329 425 118 420 328 424 115 423 116 429 479 427 480 426 479 427 116 429 117 428 144 431 117 428 116 429 117 428 144 431 145 430 117 428 478 433 479 427 478 433 117 428 147 432 145 430 147 432 117 428 147 432 145 430 146 434 118 420 495 436 150 435 495 436 118 420 494 421 329 425 150 435 330 437 150 435 329 425 118 420 567 418 568 438 122 400 122 400 119 401 567 418 121 393 554 415 120 395 554 415 121 393 555 439 555 439 194 394 556 440 194 394 555 439 121 393 122 400 569 172 562 170 569 172 122 400 568 438 289 75 127 441 471 76 127 441 289 75 123 330 127 78 311 336 312 136 311 336 127 78 123 330 289 75 125 68 124 329 125 68 289 75 288 70 324 333 125 68 327 442 125 68 324 333 124 329 473 443 288 70 126 74 288 70 473 443 470 69 471 76 473 443 126 74 473 443 471 76 468 444 468 77 312 136 467 134 312 136 468 77 127 78 287 81 131 85 286 83 131 85 287 81 128 321 362 445 128 321 349 322 128 321 362 445 131 85 287 81 132 446 129 319 132 446 287 81 285 82 355 320 132 446 356 447 132 446 355 320 129 319 130 80 462 449 285 82 462 449 130 80 463 448 286 83 463 448 130 80 463 448 286 83 460 84 132 446 285 82 462 449 132 446 462 449 461 450 456 95 284 93 136 97 284 93 133 307 136 97 392 451 133 307 391 308 133 307 392 451 136 97 284 93 137 98 134 305 137 98 284 93 457 94 382 452 134 305 137 98 134 305 382 452 381 306 453 453 457 94 135 92 457 94 453 453 455 99 456 95 453 453 135 92 453 453 456 95 452 96 451 147 452 455 392 149 392 149 452 455 136 454 446 103 283 132 140 105 283 132 138 293 140 105 140 105 393 294 398 106 393 294 140 105 138 293 283 132 141 107 139 291 141 107 283 132 445 109 397 292 141 107 402 456 141 107 397 292 139 291 402 456 443 108 442 457 443 108 402 456 141 107 142 258 477 459 143 458 477 459 142 258 476 259 149 260 143 458 148 460 143 458 149 260 142 258 143 458 478 433 147 432 478 433 143 458 477 459 148 460 147 432 146 434 147 432 148 460 143 458 145 430 489 462 488 461 489 462 145 430 144 431 488 461 487 463 145 430 487 463 146 434 145 430 148 460 487 463 486 464 487 463 148 460 146 434 485 270 148 460 486 464 148 460 485 270 149 260 150 435 496 466 151 465 496 466 150 435 495 436 330 437 151 465 334 467 151 465 330 437 150 435 151 465 497 469 195 468 497 469 151 465 496 466 151 465 333 470 334 467 333 470 151 465 195 468 183 6 181 30 152 471 181 30 183 6 174 7 162 403 152 112 157 113 157 113 161 402 162 403 158 111 162 403 192 404 152 112 162 403 158 111 153 116 579 193 578 472 579 193 153 116 184 9 160 473 155 115 153 116 160 473 153 116 163 474 154 117 587 475 226 0 587 475 154 117 585 476 154 117 160 473 159 477 160 473 154 117 155 115 159 477 585 476 154 117 585 476 159 477 586 478 180 29 184 9 155 115 184 9 180 29 174 7 156 480 504 482 191 481 504 482 156 480 503 479 363 483 191 481 368 484 191 481 363 483 156 480 559 196 157 485 185 21 157 485 559 196 558 486 161 402 558 488 557 487 558 488 161 402 157 113 572 195 158 490 573 489 158 490 572 195 183 6 192 404 573 491 158 111 573 491 192 404 574 492 160 493 164 383 159 494 164 383 580 495 159 494 581 497 159 494 580 495 159 494 581 497 586 496 160 493 188 387 164 383 188 387 160 493 163 498 556 440 161 402 557 487 161 402 556 440 194 394 171 499 255 366 256 367 255 366 171 499 164 383 580 495 171 499 177 500 171 499 580 495 164 383 165 211 535 502 170 501 535 502 165 211 534 212 272 210 170 501 271 503 170 501 272 210 165 211 176 3 172 504 178 121 172 504 176 3 166 119 166 506 256 367 172 505 256 367 166 506 171 499 175 507 171 499 166 506 171 499 175 507 177 500 167 511 537 509 538 508 537 509 167 511 187 510 268 513 269 512 187 510 268 513 187 510 167 511 168 517 507 515 508 514 507 515 168 517 224 516 364 519 224 516 168 517 224 516 364 519 365 518 498 521 169 523 193 522 169 523 498 521 499 520 331 525 193 522 169 523 193 522 331 525 332 524 535 527 225 529 170 528 225 529 535 527 536 526 271 530 225 529 270 531 225 529 271 530 170 528 257 532 172 505 256 367 256 367 259 369 257 532 172 504 228 533 178 121 228 533 172 504 257 534 583 536 175 118 176 3 175 118 583 536 584 535 584 538 177 500 175 507 177 500 584 538 582 537 583 536 531 2 588 539 531 2 583 536 176 3 582 537 580 495 177 500 580 495 582 537 581 497 591 120 228 533 439 540 228 533 591 120 178 121 590 122 440 5 591 120 440 5 590 122 179 4 187 510 536 526 537 509 536 526 187 510 225 529 270 531 187 510 269 512 187 510 270 531 225 529 577 542 576 541 189 386 577 542 189 386 188 387 576 541 190 388 189 386 190 388 576 541 575 543 192 404 575 543 574 492 575 543 192 404 190 388 191 481 505 545 223 544 505 545 191 481 504 482 368 484 223 544 367 546 223 544 368 484 191 481 193 522 497 469 498 521 497 469 193 522 195 468 333 470 193 522 332 524 193 522 333 470 195 468 197 347 221 192 207 191 197 347 207 191 206 547 197 347 229 548 234 349 229 548 197 347 206 547 207 191 232 26 206 547 232 26 207 191 230 25 206 547 232 26 229 548 232 26 231 123 229 548 223 544 506 550 222 549 506 550 223 544 505 545 224 516 506 550 507 515 506 550 224 516 222 549 365 518 222 549 224 516 222 549 365 518 366 551 367 546 222 549 366 551 222 549 367 546 223 544 226 0 588 539 531 2 588 539 226 0 587 475 227 352 590 122 439 540 590 122 591 120 439 540 227 352 438 125 231 123 438 125 227 352 439 540 438 125 439 540 233 552 439 540 228 533 233 552 257 534 233 552 228 533 233 552 257 534 258 553 229 548 437 124 299 554 437 124 229 548 231 123 234 349 229 548 267 555 267 555 229 548 299 554 437 124 233 552 261 556 233 552 437 124 438 125 267 555 266 557 235 348 235 348 234 349 267 555 235 351 265 558 236 350 265 558 235 351 266 559 236 350 264 560 237 357 264 560 236 350 265 558 238 360 237 357 263 561 237 357 264 560 263 561 262 562 238 360 263 561 238 360 262 562 260 370 250 42 239 396 249 377 239 396 250 42 240 391 250 42 241 389 240 391 241 389 250 42 252 40 258 128 259 369 260 370 259 369 258 128 257 532 261 127 260 370 262 562 260 370 261 127 258 128 261 127 301 564 437 563 301 564 261 127 302 565 302 565 261 127 303 566 261 127 262 562 303 566 303 566 262 562 263 561 303 566 263 561 304 567 263 561 305 568 304 567 305 568 263 561 264 560 265 558 305 568 264 560 305 568 265 558 306 569 266 559 306 569 265 558 306 569 266 559 307 570 266 557 308 572 307 571 308 572 266 557 267 555 308 572 267 555 299 554 299 554 300 573 308 572 547 575 269 512 268 513 269 512 547 575 546 574 545 576 269 512 546 574 269 512 545 576 270 531 544 577 271 530 545 576 545 576 271 530 270 531 543 278 271 503 544 578 271 503 543 278 272 210 273 580 546 574 547 575 546 574 273 580 275 579 275 579 274 581 282 582 274 581 275 579 273 580 282 582 397 584 396 583 397 584 282 582 274 581 276 585 546 574 275 579 546 574 276 585 545 576 282 582 276 585 275 579 276 585 282 582 281 586 277 587 544 577 276 585 276 585 544 577 545 576 281 586 277 587 276 585 277 587 281 586 280 588 278 287 544 578 277 589 544 578 278 287 543 278 280 590 278 287 277 589 278 287 280 590 279 288 394 591 279 288 280 590 279 288 394 591 393 294 394 593 280 588 395 592 395 592 280 588 281 586 396 583 281 586 282 582 281 586 396 583 395 592 302 565 291 594 301 564 291 594 302 565 290 595 303 566 298 596 302 565 290 595 302 565 298 596 406 597 291 594 290 595 291 594 406 597 405 598 290 595 407 599 406 597 407 599 290 595 298 596 300 573 291 602 292 601 291 602 300 573 301 600 292 601 405 604 404 603 405 604 292 601 291 602 300 573 293 605 308 572 293 605 300 573 292 601 293 605 292 601 403 606 292 601 404 603 403 606 307 571 293 605 294 607 293 605 307 571 308 572 294 607 403 606 411 608 403 606 294 607 293 605 307 570 295 609 306 569 295 609 307 570 294 610 294 610 410 612 295 609 410 612 294 610 411 611 306 569 296 613 305 568 296 613 306 569 295 609 295 609 409 614 296 613 409 614 295 609 410 612 296 613 304 567 305 568 304 567 296 613 297 615 297 615 296 613 409 614 409 614 408 616 297 615 298 596 304 567 297 615 304 567 298 596 303 566 298 596 297 615 407 599 407 599 297 615 408 616 299 554 301 600 300 573 301 600 299 554 437 124 309 335 486 464 313 617 486 464 309 335 485 270 309 335 313 617 310 334 314 618 310 334 313 617 311 336 314 618 321 619 314 618 311 336 310 334 311 336 325 135 312 136 325 135 311 336 321 619 486 464 316 620 313 617 316 620 486 464 487 463 313 617 315 621 314 618 315 621 313 617 316 620 314 618 322 622 321 619 322 622 314 618 315 621 316 620 317 624 315 621 318 623 315 621 317 624 323 625 315 621 318 623 315 621 323 625 322 622 317 624 487 463 488 461 487 463 317 624 316 620 319 626 488 461 489 462 488 461 319 626 317 624 320 627 317 624 319 626 317 624 320 627 318 623 324 628 318 623 320 627 318 623 324 628 323 625 321 619 326 140 325 135 326 140 321 619 322 622 323 625 469 139 326 140 326 140 322 622 323 625 469 139 324 628 327 72 324 628 469 139 323 625 472 137 326 140 466 138 326 140 472 137 325 135 327 72 466 138 469 139 466 138 327 72 470 73 513 630 329 425 514 629 329 425 513 630 328 424 514 629 330 437 515 631 330 437 514 629 329 425 515 631 334 467 516 632 334 467 515 631 330 437 332 524 519 634 518 633 519 634 332 524 331 525 333 470 518 633 517 635 518 633 333 470 332 524 334 467 517 635 516 632 517 635 334 467 333 470 335 637 514 629 337 636 514 629 335 637 513 630 336 638 337 636 338 639 337 636 336 638 335 637 349 641 338 639 350 640 338 639 349 641 336 638 337 636 515 631 340 642 515 631 337 636 514 629 338 639 340 642 339 643 340 642 338 639 337 636 350 640 339 643 351 644 339 643 350 640 338 639 339 643 341 646 342 645 341 646 339 643 340 642 351 644 342 645 352 647 342 645 351 644 339 643 340 642 516 632 341 646 516 632 340 642 515 631 516 632 343 648 341 646 343 648 516 632 517 635 341 646 344 649 342 645 344 649 341 646 343 648 342 645 353 650 352 647 353 650 342 645 344 649 345 651 517 635 518 633 517 635 345 651 343 648 346 652 343 648 345 651 343 648 346 652 344 649 354 653 344 649 346 652 344 649 354 653 353 650 518 633 348 654 345 651 348 654 518 633 519 634 347 655 345 651 348 654 345 651 347 655 346 652 355 656 346 652 347 655 346 652 355 656 354 653 362 88 350 640 361 141 350 640 362 88 349 641 361 141 351 644 360 143 351 644 361 141 350 640 360 143 352 647 359 657 352 647 360 143 351 644 352 647 358 658 359 657 358 658 352 647 353 650 358 658 354 653 357 659 354 653 358 658 353 650 357 659 355 656 356 91 355 656 357 659 354 653 356 91 458 660 357 659 458 660 356 91 461 89 464 661 358 658 458 660 358 658 357 659 458 660 464 661 465 662 359 657 359 657 358 658 464 661 459 142 359 657 465 662 359 657 459 142 360 143 459 142 362 88 361 141 362 88 459 142 460 87 524 663 368 484 525 664 368 484 524 663 363 483 365 518 529 666 528 665 529 666 365 518 364 519 528 665 366 551 365 518 366 551 528 665 527 667 526 668 366 551 527 667 366 551 526 668 367 546 525 664 367 546 526 668 367 546 525 664 368 484 372 669 527 667 369 670 527 667 372 669 526 668 370 671 527 667 528 665 527 667 370 671 369 670 379 673 369 670 370 671 369 670 379 673 378 672 377 674 369 670 378 672 369 670 377 674 372 669 371 675 528 665 529 666 528 665 371 675 370 671 380 676 370 671 371 675 370 671 380 676 379 673 373 677 526 668 372 669 526 668 373 677 525 664 376 678 372 669 377 674 372 669 376 678 373 677 374 679 525 664 373 677 525 664 374 679 524 663 375 680 373 677 376 678 373 677 375 680 374 679 391 681 376 678 389 682 376 678 391 681 375 680 389 682 376 678 387 683 387 683 376 678 377 674 387 683 378 672 386 684 378 672 387 683 377 674 386 684 379 673 383 685 379 673 386 684 378 672 383 685 380 676 381 686 380 676 383 685 379 673 384 144 381 686 382 100 381 686 384 144 383 685 450 146 382 100 455 101 382 100 450 146 384 144 385 145 383 685 384 144 383 685 385 145 386 684 388 687 386 684 385 145 386 684 388 687 387 683 454 688 385 145 450 146 385 145 454 688 388 687 389 682 388 687 390 148 388 687 389 682 387 683 454 688 390 148 388 687 390 148 454 688 451 147 399 689 393 294 394 591 393 294 399 689 398 106 399 152 394 593 400 151 394 593 395 592 400 151 401 155 395 592 396 583 395 592 401 155 400 151 398 106 441 690 444 104 441 690 398 106 399 689 449 153 401 155 442 156 401 155 449 153 400 151 403 606 404 603 412 691 404 603 413 692 412 691 415 693 411 608 412 691 411 608 403 606 412 691 404 603 405 604 413 692 405 604 414 694 413 692 416 696 405 598 406 597 405 598 416 696 414 695 406 597 417 697 416 696 417 697 406 597 407 599 417 697 407 599 408 616 417 697 408 616 418 698 409 614 418 698 408 616 418 698 409 614 419 699 410 612 419 699 409 614 419 699 410 612 420 700 411 611 420 700 410 612 420 700 411 611 415 701 421 702 412 691 413 692 413 692 422 703 421 702 412 691 424 704 415 693 424 704 412 691 421 702 413 692 423 705 422 703 423 705 413 692 414 694 414 695 425 158 423 159 425 158 414 695 416 696 415 701 429 161 420 700 429 161 415 701 424 160 416 696 426 706 425 158 426 706 416 696 417 697 426 706 417 697 418 698 426 706 418 698 427 707 419 699 427 707 418 698 427 707 419 699 428 708 420 700 428 708 419 699 428 708 420 700 429 161 432 169 421 702 430 164 421 702 422 703 430 164 425 158 436 709 431 157 436 709 425 158 426 706 436 709 426 706 427 707 427 707 435 710 436 709 428 708 435 710 427 707 435 710 428 708 434 711 444 104 449 713 448 712 449 713 444 104 441 690 448 712 442 457 443 108 442 457 448 712 449 713 445 109 447 133 448 712 448 712 443 108 445 109 453 714 450 146 455 101 450 146 453 714 454 688 462 715 458 660 461 89 458 660 462 715 464 661 463 716 459 142 465 662 459 142 463 716 460 87 473 717 466 138 470 73 466 138 473 717 472 137 475 256 560 248 563 200 475 256 563 200 561 171 475 256 569 172 476 259 569 172 475 256 561 171 476 259 568 438 477 459 568 438 476 259 569 172 477 459 567 418 478 433 567 418 477 459 568 438 567 418 566 416 478 433 479 427 478 433 566 416 480 426 566 416 565 417 566 416 480 426 479 427 481 249 565 419 564 199 565 419 481 249 480 252 560 248 564 199 563 200 564 199 560 248 481 249 549 233 551 198 492 241 551 198 549 233 550 197 492 241 552 411 493 244 552 411 492 241 551 198 493 422 553 413 494 421 553 413 493 422 552 414 494 421 554 415 495 436 554 415 494 421 553 413 495 436 555 439 496 466 555 439 495 436 554 415 496 466 556 440 497 469 556 440 496 466 555 439 497 469 557 487 498 521 557 487 497 469 556 440 557 487 499 520 498 521 499 520 557 487 558 488 500 234 558 486 559 196 558 486 500 234 499 237 549 233 559 196 550 197 559 196 549 233 500 234 570 221 572 195 502 226 572 195 570 221 571 194 502 226 573 489 503 229 573 489 502 226 572 195 503 479 574 492 504 482 574 492 503 479 573 491 504 482 575 543 505 545 575 543 504 482 574 492 505 545 576 541 506 550 576 541 505 545 575 543 507 515 576 541 577 542 576 541 507 515 506 550 508 514 577 542 578 718 577 542 508 514 507 515 509 216 578 472 579 193 578 472 509 216 508 217 570 221 579 193 571 194 579 193 570 221 509 216 532 203 587 475 533 202 587 475 532 203 588 539 583 536 532 203 539 206 532 203 583 536 588 539 585 476 533 202 587 475 533 202 585 476 534 212 534 212 586 478 535 502 586 478 534 212 585 476 536 526 586 496 581 497 586 496 536 526 535 527 537 509 581 497 582 537 581 497 537 509 536 526 538 508 582 537 584 538 582 537 538 508 537 509 561 171 101 399 562 170 101 399 561 171 77 15 107 63 95 45 96 48 95 45 107 63 78 188 93 50 86 185 84 182 86 185 93 50 94 47 91 61 92 52 85 178 85 178 88 179 91 61 199 35 202 38 99 55 202 38 98 59 99 55 181 30 185 21 152 471 185 21 181 30 173 23 226 0 180 29 155 115 180 29 226 0 179 4 252 40 242 385 241 389 242 385 252 40 251 131 390 148 391 681 389 682 391 681 390 148 392 149 402 154 396 583 397 584 396 583 402 154 401 155 433 167 424 704 421 702 421 702 432 169 433 167 423 705 430 164 422 703 430 164 423 705 431 163 429 161 434 711 428 708 434 711 429 161 433 162 432 169 435 166 434 168 435 166 432 169 430 164 446 103 448 712 447 133 448 712 446 103 444 104 454 688 452 455 451 147 452 455 454 688 453 714 463 716 464 661 462 715 464 661 463 716 465 662 468 77 467 134 473 717 473 717 467 134 472 137 539 206 584 535 583 536 584 535 539 206 538 213 108 409 182 33 109 13 182 33 102 12 109 13 577 542 163 498 578 718 163 498 577 542 188 387 578 718 163 498 153 719

1990 |
1991 |
1992 |
1993 | 1994 | 1995 | 1996 | 1.000000 -0.000000 0.000000 0.000000 0.000000 1.000000 -0.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 0.000000 1.000000 1997 | 1998 | 1999 | 2000 | Wrist1 Finger_04 Finger_05 Finger_06 Finger_07 Finger_44 Finger_45 Finger_46 2001 | Finger_47 Finger_48 Finger_49 Finger_50 Finger_51 Finger_52 Finger_53 Finger_54 2002 | Finger_55 Finger_56 Finger_57 Finger_58 Finger_59 2003 | 2004 | 2005 | 2006 | 2007 | 2008 | 2009 | 2010 | 2011 | 2012 | 1.000000 -0.000000 0.000000 -0.000000 -0.000000 -1.000000 -0.000000 -0.000000 0.000000 0.000000 -1.000000 -0.000000 0.000000 0.000000 0.000000 1.000000 2013 | 0.575786 0.053915 -0.815821 -1.680264 -0.079808 -0.989352 -0.121710 -0.840199 -0.813696 0.135188 -0.565352 0.584582 0.000000 0.000000 0.000000 1.000000 2014 | 0.645087 0.041823 -0.762964 -1.894106 -0.079808 -0.989352 -0.121710 -0.840202 -0.759930 0.139404 -0.634880 2.349219 0.000000 0.000000 0.000000 1.000000 2015 | 0.645087 0.041823 -0.762964 -1.894103 -0.079808 -0.989352 -0.121710 -0.840200 -0.759930 0.139404 -0.634880 4.013598 0.000000 0.000000 0.000000 1.000000 2016 | 0.645087 0.041823 -0.762964 -1.894106 -0.079808 -0.989352 -0.121710 -0.840197 -0.759930 0.139404 -0.634880 5.270106 0.000000 0.000000 0.000000 1.000000 2017 | 0.985831 0.009105 -0.167492 -0.927702 -0.004630 -0.996669 -0.081427 0.163456 -0.167675 0.081049 -0.982505 2.381660 0.000000 0.000000 0.000000 1.000000 2018 | 0.985831 0.009105 -0.167492 -0.927698 -0.004630 -0.996669 -0.081427 0.163456 -0.167675 0.081049 -0.982505 4.338138 0.000000 0.000000 0.000000 1.000000 2019 | 0.985831 0.009105 -0.167492 -0.927702 -0.004630 -0.996669 -0.081427 0.163457 -0.167675 0.081049 -0.982505 5.510204 0.000000 0.000000 0.000000 1.000000 2020 | 0.985831 0.009105 -0.167492 -0.927702 -0.004630 -0.996669 -0.081427 0.163457 -0.167675 0.081049 -0.982505 6.660997 0.000000 0.000000 0.000000 1.000000 2021 | 0.998631 0.004425 -0.052129 0.075271 0.000093 -0.996566 -0.082802 0.253750 -0.052317 0.082683 -0.995202 2.456673 0.000000 0.000000 0.000000 1.000000 2022 | 0.998631 0.004425 -0.052129 0.075271 0.000093 -0.996566 -0.082802 0.253750 -0.052317 0.082683 -0.995202 4.387759 0.000000 0.000000 0.000000 1.000000 2023 | 0.998631 0.004425 -0.052129 0.075271 0.000093 -0.996566 -0.082802 0.253750 -0.052317 0.082683 -0.995202 5.703100 0.000000 0.000000 0.000000 1.000000 2024 | 0.998631 0.004425 -0.052129 0.075271 0.000093 -0.996566 -0.082802 0.253750 -0.052317 0.082683 -0.995202 7.039001 0.000000 0.000000 0.000000 1.000000 2025 | 0.993535 -0.016076 0.112383 0.692511 -0.006559 -0.996398 -0.084543 0.139162 0.113337 0.083259 -0.990062 2.404245 0.000000 0.000000 0.000000 1.000000 2026 | 0.993535 -0.016076 0.112383 0.692514 -0.006559 -0.996398 -0.084543 0.139162 0.113337 0.083259 -0.990062 4.408857 0.000000 0.000000 0.000000 1.000000 2027 | 0.993535 -0.016076 0.112383 0.692512 -0.006559 -0.996398 -0.084543 0.139161 0.113337 0.083259 -0.990062 5.583076 0.000000 0.000000 0.000000 1.000000 2028 | 0.993535 -0.016076 0.112383 0.692514 -0.006559 -0.996398 -0.084543 0.139161 0.113337 0.083259 -0.990062 6.713318 0.000000 0.000000 0.000000 1.000000 2029 | 0.986942 -0.016266 0.160253 1.644519 -0.014214 -0.999802 -0.013944 -0.414255 0.160448 0.011484 -0.986977 2.439768 0.000000 0.000000 0.000000 1.000000 2030 | 0.986942 -0.016266 0.160253 1.644529 -0.014214 -0.999802 -0.013944 -0.414255 0.160448 0.011484 -0.986977 3.589239 0.000000 0.000000 0.000000 1.000000 2031 | 0.986942 -0.016266 0.160253 1.644520 -0.014214 -0.999802 -0.013944 -0.414255 0.160448 0.011484 -0.986977 4.329031 0.000000 0.000000 0.000000 1.000000 2032 | 0.986942 -0.016266 0.160253 1.644519 -0.014214 -0.999802 -0.013944 -0.414255 0.160448 0.011484 -0.986977 5.130478 0.000000 0.000000 0.000000 1.000000 2033 | 2034 | 2035 | 2036 | 2037 | 2038 | 2039 | 2040 | 2041 | 2042 | 1.000000 0.991796 0.008204 0.772033 0.225139 0.001800 0.996080 0.003920 0.890400 0.001600 0.104500 0.003500 0.994343 0.005657 0.996706 0.003194 2043 | 0.738100 0.006400 0.255500 0.858492 0.141508 0.183000 0.815300 0.001100 0.320200 0.001500 0.676600 0.001800 0.884800 0.113800 0.073400 0.925600 2044 | 0.838900 0.160900 0.924000 0.075900 0.881200 0.118700 0.707100 0.292300 0.726400 0.273100 0.724800 0.274700 0.761700 0.235600 0.002400 0.760100 2045 | 0.239200 0.661600 0.337800 0.090300 0.909700 0.133400 0.866200 0.454200 0.545700 0.089000 0.910900 0.091700 0.907900 0.122000 0.877200 0.124600 2046 | 0.874900 0.114600 0.885000 0.084700 0.914800 0.566700 0.432900 0.818000 0.181600 0.734900 0.264800 0.097600 0.902200 0.067900 0.931600 0.114800 2047 | 0.884600 0.581900 0.417600 0.765000 0.234800 0.588600 0.410900 0.118400 0.880400 0.001200 0.065600 0.933800 0.116800 0.882700 0.987300 0.012400 2048 | 0.990800 0.008800 0.994100 0.005700 0.957000 0.042900 0.972900 0.027100 0.958300 0.041600 0.420900 0.578700 0.146000 0.853600 0.001200 0.865600 2049 | 0.133200 0.212100 0.787400 0.878300 0.121300 0.768168 0.231675 0.013200 0.913400 0.073300 0.965651 0.034349 0.796592 0.188041 0.010770 0.004597 2050 | 0.998109 0.001300 0.999700 0.938450 0.061400 0.449387 0.499985 0.049091 0.001419 0.942697 0.056968 0.986001 0.005815 0.004722 0.002203 0.941649 2051 | 0.031247 0.013552 0.010737 0.001876 0.422556 0.408301 0.156997 0.011546 0.938748 0.061046 0.995071 0.001101 0.001713 0.994161 0.001230 0.004008 2052 | 0.950200 0.049400 0.227546 0.149730 0.478197 0.139328 0.004201 0.816232 0.052741 0.086867 0.039831 0.003202 0.234200 0.003500 0.033300 0.556500 2053 | 0.171700 0.219200 0.015100 0.764400 0.121816 0.014302 0.148920 0.695391 0.019203 0.130900 0.002900 0.086000 0.779300 0.982700 0.017000 0.988601 2054 | 0.010301 0.492300 0.507600 0.958000 0.041800 0.929353 0.070540 0.969557 0.030443 0.931589 0.068411 0.964680 0.035320 0.999028 0.994922 0.005078 2055 | 0.998836 0.001164 0.988684 0.011214 0.932400 0.067500 0.999333 0.997471 0.002529 0.994500 0.005500 0.997104 0.002896 0.995075 0.004925 0.981106 2056 | 0.018894 0.971863 0.028034 0.940774 0.059126 0.922710 0.077189 0.942355 0.057538 0.984400 0.015600 0.990955 0.009045 0.995962 0.004038 0.128000 2057 | 0.871000 0.929800 0.001600 0.068500 0.925500 0.074000 0.898400 0.101200 0.991498 0.007505 0.974100 0.025600 0.948500 0.051300 0.563000 0.248600 2058 | 0.188400 0.929400 0.020800 0.049800 0.199800 0.453400 0.345100 0.001700 0.394300 0.002200 0.599900 0.001200 0.001000 0.208900 0.001100 0.786900 2059 | 0.001700 0.116200 0.879800 0.002600 0.067800 0.063800 0.867900 0.847700 0.150500 0.001600 0.864000 0.135300 0.773000 0.226000 0.805700 0.191900 2060 | 0.002100 0.015200 0.026000 0.957400 0.050100 0.006600 0.482000 0.002700 0.457300 0.081800 0.001600 0.018000 0.810000 0.001000 0.087600 0.063100 2061 | 0.005700 0.929900 0.001200 0.011200 0.986400 0.002400 0.010300 0.985600 0.004100 0.939000 0.060300 0.878300 0.121600 0.945500 0.053900 0.037500 2062 | 0.962000 0.021700 0.978000 0.890900 0.108800 0.001800 0.985800 0.012400 0.001300 0.987700 0.011000 0.004900 0.985400 0.009700 0.003300 0.980300 2063 | 0.016400 0.511300 0.488700 0.773400 0.226500 0.694000 0.305900 0.004400 0.985100 0.010500 0.002100 0.993600 0.004300 0.716000 0.283800 0.797000 2064 | 0.202800 0.838100 0.161600 0.751700 0.247600 0.130500 0.869300 0.138600 0.860500 0.259000 0.738800 0.002200 0.859800 0.139700 0.149800 0.848400 2065 | 0.001800 0.098300 0.900700 0.001000 0.754600 0.243200 0.001800 0.745200 0.253600 0.804300 0.096700 0.098900 0.255800 0.184100 0.558800 0.317800 2066 | 0.499400 0.181800 0.719200 0.134100 0.146700 0.818700 0.181100 0.102300 0.111500 0.785700 0.183900 0.643500 0.172100 0.001200 0.734900 0.001800 2067 | 0.260300 0.001500 0.006900 0.495200 0.001000 0.494000 0.002400 0.205600 0.791500 0.001000 0.405800 0.590900 0.011600 0.291500 0.693300 0.002400 2068 | 0.112800 0.760800 0.113800 0.011200 0.874700 0.125100 0.328353 0.008140 0.002000 0.660307 0.001000 0.810100 0.189700 0.730800 0.268800 0.797700 2069 | 0.202000 0.725000 0.274400 0.158000 0.001900 0.829800 0.008400 0.803119 0.037677 0.012785 0.146012 0.999500 0.991500 0.008100 0.091700 0.002700 2070 | 0.904100 0.499920 0.499720 0.064200 0.925800 0.001800 0.006600 0.915672 0.010571 0.003220 0.070537 0.971688 0.001388 0.026624 0.998605 0.999000 2071 | 0.992400 0.004900 0.002700 0.951800 0.037400 0.010700 0.964400 0.005200 0.030400 0.963100 0.006400 0.030400 0.502000 0.494700 0.003300 0.497000 2072 | 0.502700 0.021500 0.129100 0.838000 0.010100 0.067000 0.057000 0.819300 0.054300 0.001500 0.011200 0.008200 0.867100 0.110600 0.001900 0.204000 2073 | 0.795700 0.001400 0.593700 0.402100 0.708000 0.291600 0.015200 0.001800 0.040700 0.932600 0.008900 0.781500 0.218000 0.998215 0.001785 0.001200 2074 | 0.990600 0.008200 0.810715 0.189285 0.932982 0.067018 0.039100 0.931400 0.029300 0.835818 0.164182 0.974584 0.025416 0.956425 0.043453 0.824927 2075 | 0.118419 0.041970 0.013588 0.961130 0.027532 0.009796 0.001321 0.009200 0.987200 0.003500 0.058200 0.941700 0.995402 0.004598 1.000000 0.999178 2076 | 0.997414 0.002086 0.994900 0.004000 0.001000 0.993296 0.005704 0.001001 0.996905 0.002188 0.997176 0.002011 0.992762 0.006082 0.976920 0.022163 2077 | 0.781923 0.217449 0.111015 0.887652 0.001333 0.013300 0.985800 0.007500 0.992400 0.157400 0.841100 0.001300 0.087100 0.912400 0.107400 0.892200 2078 | 0.504200 0.495500 0.961400 0.032800 0.005800 0.761238 0.188252 0.035344 0.015166 0.581964 0.306511 0.073550 0.037866 0.005200 0.978200 0.016400 2079 | 0.949100 0.050600 0.306185 0.623954 0.059666 0.010195 0.334576 0.645058 0.016729 0.003637 0.344700 0.521420 0.112787 0.020874 0.930600 0.069100 2080 | 0.003000 0.848300 0.148700 0.009200 0.823500 0.167200 0.034600 0.848400 0.116700 0.113674 0.548878 0.333133 0.003945 0.908800 0.002500 0.088400 2081 | 0.900800 0.001200 0.015400 0.082300 0.871746 0.001900 0.007700 0.070804 0.047703 0.896630 0.008202 0.022506 0.063316 0.009102 0.995913 0.003367 2082 | 0.939559 0.060230 0.960850 0.039150 0.996402 0.003400 0.979100 0.020500 0.978151 0.021503 0.987953 0.011503 0.993531 0.001400 0.004701 0.987420 2083 | 0.002404 0.003607 0.004809 0.001002 0.992779 0.003301 0.002301 0.995840 0.001431 0.985883 0.001826 0.001511 0.004836 0.003627 0.002015 0.906899 2084 | 0.002100 0.070177 0.015417 0.004505 0.917733 0.009617 0.002302 0.068447 0.001501 0.528188 0.325034 0.097107 0.049245 0.306786 0.507231 0.163206 2085 | 0.022574 0.459965 0.389889 0.118525 0.031097 0.155158 0.554647 0.281216 0.008639 0.074500 0.699800 0.220600 0.004900 0.058368 0.291960 0.645910 2086 | 0.003356 0.037740 0.244076 0.716246 0.001530 0.010800 0.219400 0.769200 0.002600 0.171600 0.825700 0.117200 0.882200 0.061400 0.938500 0.122400 2087 | 0.876800 0.103900 0.894600 0.001400 0.117600 0.880500 0.001900 0.125500 0.873000 0.001500 0.083400 0.916100 0.666100 0.333300 0.098300 0.901500 2088 | 0.664000 0.335100 0.001500 0.599000 0.399300 0.001300 0.614900 0.383600 0.766600 0.232800 0.219500 0.779900 0.225100 0.773900 0.222000 0.777100 2089 | 0.149100 0.850600 0.001700 0.990500 0.007700 0.001700 0.988900 0.009400 0.975000 0.024900 0.966200 0.033500 0.005600 0.994300 0.955600 0.044300 2090 | 0.007200 0.992200 0.004700 0.951100 0.043600 0.003400 0.967600 0.028700 0.001400 0.982300 0.016300 0.994900 0.004900 0.989200 0.010400 0.001500 2091 | 0.968200 0.030200 0.003500 0.954600 0.041600 0.003800 0.953400 0.042200 0.003500 0.959700 0.036200 0.001900 0.911500 0.086600 0.010000 0.989800 2092 | 0.001500 0.028200 0.969700 0.003000 0.024600 0.970700 0.001500 0.004200 0.025600 0.967600 0.002300 0.002800 0.019900 0.974500 0.002600 0.001100 2093 | 0.019200 0.978000 0.001700 0.008400 0.990500 0.001000 0.002500 0.997300 0.999300 0.001100 0.769600 0.229300 0.159600 0.839900 0.008500 0.988600 2094 | 0.002900 0.926800 0.072800 0.001400 0.800600 0.197900 0.271000 0.728200 0.270300 0.729100 0.001600 0.788400 0.209900 0.772500 0.226500 0.194700 2095 | 0.805100 0.868600 0.130800 0.076500 0.923400 0.016600 0.981200 0.002100 0.015300 0.984000 0.009100 0.990700 0.003300 0.996200 0.960400 0.039000 2096 | 0.985600 0.014000 0.979800 0.020100 0.127200 0.872400 0.170900 0.828400 0.176700 0.822300 0.085400 0.914600 0.097500 0.902400 0.148700 0.850700 2097 | 0.161800 0.837100 0.980400 0.019000 0.932100 0.067700 0.946700 0.052500 0.818000 0.181700 0.577100 0.422200 0.880900 0.118200 0.815800 0.183200 2098 | 0.400900 0.598200 0.840300 0.158900 0.373300 0.626200 0.955800 0.043700 0.845100 0.154700 0.975200 0.024800 0.994900 0.005000 0.024900 0.974800 2099 | 0.023500 0.975700 0.017900 0.979700 0.002400 0.018300 0.975400 0.006300 0.013200 0.982700 0.004200 0.016500 0.982900 0.008900 0.991000 0.991400 2100 | 0.007800 0.990500 0.008800 0.001200 0.938700 0.060100 0.001900 0.937500 0.060700 0.002000 0.966700 0.031400 0.001800 0.986600 0.011600 0.001100 2101 | 0.994900 0.004000 0.070300 0.929300 0.065700 0.933600 0.020200 0.978000 0.001800 0.029400 0.967900 0.002700 0.011500 0.987000 0.001500 0.018200 2102 | 0.981000 0.272300 0.727400 0.115900 0.883900 0.130500 0.869400 0.178200 0.821700 0.260800 0.739200 0.496800 0.503200 0.057100 0.942800 0.036100 2103 | 0.963900 0.031200 0.968700 0.052200 0.947700 0.024200 0.975600 0.028200 0.971500 0.002100 0.993600 0.004300 0.913700 0.086200 0.001300 0.995700 2104 | 0.003000 0.940900 0.059100 0.953300 0.046700 0.001400 0.997300 0.001200 0.998600 0.968100 0.031900 0.998400 0.001000 0.948400 0.051600 0.001100 2105 | 0.997600 0.001400 0.951600 0.048300 0.008700 0.986300 0.005000 0.011800 0.984000 0.004200 0.011600 0.985000 0.003400 0.007000 0.991400 0.001600 2106 | 0.001500 0.997900 0.902100 0.097600 0.918000 0.081500 0.944500 0.055000 0.965400 0.034400 0.974300 0.025700 0.957000 0.043000 0.936300 0.063600 2107 | 0.923300 0.076200 0.870300 0.128700 0.874900 0.124100 0.887500 0.111500 0.883600 0.115600 0.912900 0.086800 0.954800 0.045100 0.067100 0.932600 2108 | 0.058700 0.941100 0.032500 0.967000 0.019100 0.980800 0.065100 0.934300 0.068100 0.931000 0.058200 0.940400 0.001400 0.061800 0.937800 0.034400 2109 | 0.965500 0.952800 0.047000 0.965500 0.034400 0.003000 0.989600 0.007400 0.995500 0.003700 0.004800 0.989700 0.005400 0.007400 0.986600 0.006000 2110 | 0.016500 0.958000 0.025600 0.003000 0.995400 0.001700 0.998200 0.528300 0.471600 0.950300 0.049100 0.504900 0.495100 0.976300 0.023700 0.988200 2111 | 0.011700 0.002400 0.872600 0.124900 0.965300 0.034200 0.029822 0.905585 0.063161 0.001433 0.319357 0.588254 0.077568 0.014701 0.710587 0.209544 2112 | 0.054434 0.025312 0.977741 0.001829 0.019929 0.530400 0.469500 0.508300 0.491700 0.501800 0.498200 0.512300 0.487600 0.505300 0.494700 0.517600 2113 | 0.482400 0.500900 0.499100 0.500300 0.499700 0.502300 0.497700 0.507400 0.492600 0.512100 0.487900 0.511700 0.488300 0.500600 0.499400 0.500700 2114 | 0.499300 0.507400 0.492600 0.508600 0.491400 0.510700 0.489300 0.865100 0.134800 0.906800 0.093000 0.938300 0.061600 0.943400 0.056500 0.502400 2115 | 0.497600 0.501600 0.498400 0.509400 0.490600 0.505500 0.494500 0.907200 0.092700 0.516100 0.483800 0.509400 0.490600 0.995800 0.003900 0.507500 2116 | 0.492500 0.948000 0.052000 0.503300 0.496700 0.500600 0.499400 0.940100 0.059800 0.001800 0.985700 0.012500 0.983500 0.015700 0.001900 0.976900 2117 | 0.020900 0.001200 0.986300 0.012300 0.006900 0.973900 0.019100 0.003300 0.983600 0.012900 0.001200 0.993000 0.004900 0.958700 0.041100 0.003100 2118 | 0.995700 0.001200 0.002900 0.992800 0.004200 0.005300 0.981500 0.013200 0.009900 0.976100 0.014000 0.013500 0.974200 0.012200 0.006100 0.985400 2119 | 0.008500 0.004800 0.991400 0.003800 0.013500 0.984300 0.002200 0.969000 0.030800 0.001500 0.991200 0.002300 0.005000 0.001400 0.973000 0.007300 2120 | 0.018100 0.001400 0.955400 0.008600 0.034300 0.002100 0.954100 0.017500 0.025700 0.001600 0.972500 0.018300 0.006700 0.001300 0.984800 0.012600 2121 | 0.002700 0.985700 0.011500 0.002200 0.989400 0.008300 0.999000 0.922300 0.077600 0.997400 0.001800 0.991100 0.006300 0.002500 0.978600 0.017600 2122 | 0.003600 0.936500 0.060800 0.002400 0.959100 0.039700 0.001900 0.969000 0.028600 0.001800 0.985700 0.011800 0.996000 0.002400 0.016800 0.983200 2123 | 0.999500 0.002700 0.997100 0.004700 0.994800 0.007200 0.991100 0.001700 0.007600 0.987000 0.005400 0.007500 0.982800 0.009700 0.005500 0.988600 2124 | 0.005900 0.003600 0.994900 0.001500 0.002100 0.997700 0.001100 0.998800 0.035000 0.964800 0.001200 0.989000 0.009800 0.001700 0.993500 0.004800 2125 | 0.987100 0.012200 0.979700 0.019900 0.975500 0.024200 0.969200 0.030000 0.975100 0.024300 0.001200 0.981000 0.017800 0.002000 0.989900 0.008200 2126 | 0.030600 0.969300 0.997900 0.001700 0.997700 0.001400 0.992800 0.004600 0.001900 0.972300 0.023600 0.003900 0.935500 0.060700 0.003100 0.001100 2127 | 0.944900 0.053100 0.993500 0.005900 0.998500 0.001300 0.016300 0.983600 0.992400 0.007300 0.002000 0.994700 0.003300 0.003000 0.989400 0.007500 2128 | 0.006800 0.976200 0.017000 0.007300 0.971700 0.021000 0.005400 0.978200 0.016400 0.003400 0.988600 0.008000 0.001600 0.993300 0.005100 0.999300 2129 | 0.026900 0.972200 0.020000 0.966800 0.013100 0.088900 0.604300 0.001500 0.304000 0.008600 0.002100 0.619000 0.004400 0.365000 0.018900 0.003600 2130 | 0.691400 0.005600 0.279700 0.014500 0.004800 0.941600 0.002700 0.035900 0.004400 0.014600 0.974600 0.001500 0.004300 0.057500 0.940300 0.001300 2131 | 0.011800 0.029800 0.958100 0.016200 0.003700 0.980100 0.997200 0.002200 0.031600 0.968000 0.021600 0.977500 0.012600 0.987000 0.035200 0.004000 2132 | 0.960700 0.014200 0.020900 0.963900 0.033100 0.961200 0.005300 0.002300 0.007500 0.987500 0.002600 0.011000 0.001200 0.984000 0.003700 0.004000 2133 | 0.994100 0.001700 0.998900 0.017100 0.982100 0.008900 0.985700 0.005300 0.003800 0.970200 0.025600 0.933500 0.002000 0.063700 0.001500 0.965200 2134 | 0.005300 0.027000 0.004500 0.005800 0.980700 0.003400 0.005500 0.003200 0.026400 0.965700 0.003100 0.001500 0.012600 0.023700 0.962700 0.017400 2135 | 0.005300 0.977300 0.022500 0.930600 0.002200 0.042500 0.001900 0.005900 0.961900 0.008900 0.022600 0.011900 0.979000 0.005800 0.002900 0.013900 2136 | 0.986000 0.010400 0.988700 0.020300 0.958400 0.020800 0.936000 0.003000 0.059800 0.013300 0.982900 0.003700 0.001500 0.998400 0.997291 0.002308 2137 | 0.984446 0.010784 0.001624 0.003146 0.970710 0.014909 0.003342 0.011039 2138 | 2139 | 2140 | 2141 | 2142 | 2143 | 2144 | 2145 | 2146 | 2147 | 2148 | 2149 | 2150 | 2151 | 2 3 2 4 2 2 3 2 3 4 2 2 2 2 2 2 2 2 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 2 2 2 2 2 2 2 2 2 2 3 2 2 2 3 2 4 2 1 2 4 2 4 5 4 2 3 3 2 5 5 5 3 5 4 2 2 2 2 2 2 2 2 1 2 2 2 2 1 2 2 2 2 2 2 2 2 2 2 2 2 2 3 2 2 2 2 2 3 3 3 5 5 3 3 3 2 2 3 3 5 6 4 3 3 2 2 2 2 2 2 3 3 3 3 2 2 2 3 3 2 2 2 2 2 2 3 2 3 3 3 2 3 3 3 3 2 3 3 5 5 2 3 4 4 2 5 2 2 2 2 4 4 1 2 3 2 4 4 3 1 1 3 3 3 3 3 2 4 5 5 2 3 2 5 2 2 3 2 2 3 2 2 2 4 4 3 2 2 1 1 2 3 3 2 2 2 2 2 3 2 2 3 2 2 2 3 4 4 3 2 4 4 4 2 3 3 3 4 3 4 5 5 2 2 2 2 2 2 2 3 5 3 2 6 5 5 4 4 4 4 4 4 4 3 3 2 2 2 3 3 3 2 2 2 2 3 3 2 2 2 2 2 3 3 2 2 2 2 2 3 3 3 2 2 3 3 3 3 3 2 3 4 4 4 4 3 2 1 3 2 3 2 3 2 2 3 2 2 2 2 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 3 3 2 2 2 2 3 3 3 3 3 2 2 3 3 3 2 2 2 2 2 2 2 2 2 2 2 2 2 3 2 3 2 2 3 1 2 2 2 3 2 3 3 3 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 2 2 2 2 3 2 3 3 3 3 1 2 2 2 2 2 3 2 4 4 4 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 2 3 3 3 3 3 2 3 3 3 3 3 3 3 3 2 4 4 4 4 4 3 3 3 1 2 2 3 3 3 2 3 3 2 2 1 2 2 3 3 3 3 3 2 2 2 3 3 2 2 2 2 2 3 3 2 2 2 3 3 3 3 2 2 2 2 3 3 3 3 3 3 3 1 2 3 4 5 5 5 5 3 3 3 2 2 2 2 3 3 3 4 4 3 1 2 3 3 3 4 5 5 3 3 5 4 4 2 2 3 3 3 2 2 4 4 2152 | 0 1 1 2 0 3 5 4 9 5 0 6 1 7 0 8 5 9 9 10 13 11 0 12 1 13 0 14 1 15 0 16 13 17 17 18 0 19 1 20 0 21 9 22 13 23 0 24 9 25 13 26 17 27 0 28 13 29 0 30 17 31 5 32 6 33 5 34 6 35 5 36 6 37 9 38 10 39 9 40 10 41 13 42 14 43 13 44 14 45 17 46 17 47 18 48 17 49 18 50 13 51 14 52 13 53 14 54 17 55 18 56 17 57 18 58 17 59 18 60 9 61 10 62 9 63 10 64 5 65 6 66 5 67 6 68 6 69 7 70 6 71 7 72 6 73 7 74 6 75 7 76 6 77 7 78 6 79 7 80 10 81 11 82 10 83 11 84 10 85 11 86 10 87 11 88 12 89 10 90 11 91 10 92 11 93 14 94 15 95 14 96 15 97 14 98 15 99 14 100 15 101 14 102 15 103 14 104 15 105 18 106 19 107 18 108 19 109 17 110 18 111 19 112 18 113 19 114 18 115 19 116 0 117 1 118 0 119 1 120 2 121 0 122 1 123 0 124 1 125 2 126 5 127 0 128 9 129 0 130 0 131 1 132 0 133 1 134 2 135 5 136 0 137 1 138 0 139 1 140 2 141 5 142 0 143 1 144 2 145 5 146 9 147 0 148 1 149 2 150 5 151 0 152 1 153 0 154 1 155 17 156 0 157 1 158 17 159 0 160 1 161 0 162 5 163 9 164 13 165 17 166 0 167 5 168 9 169 13 170 17 171 0 172 5 173 9 174 13 175 17 176 0 177 13 178 17 179 0 180 5 181 9 182 13 183 17 184 0 185 9 186 13 187 17 188 0 189 1 190 0 191 17 192 0 193 17 194 0 195 1 196 0 197 1 198 0 199 1 200 0 201 1 202 0 203 1 204 0 205 0 206 1 207 0 208 1 209 0 210 1 211 0 212 1 213 0 214 0 215 1 216 0 217 1 218 0 219 1 220 0 221 1 222 0 223 1 224 0 225 1 226 0 227 1 228 0 229 1 230 0 231 1 232 0 233 1 234 0 235 1 236 0 237 1 238 0 239 17 240 0 241 13 242 17 243 0 244 17 245 0 246 17 247 0 248 17 249 0 250 1 251 0 252 1 253 0 254 13 255 17 256 0 257 13 258 17 259 0 260 13 261 17 262 9 263 13 264 14 265 17 266 18 267 9 268 13 269 14 270 17 271 18 272 13 273 17 274 18 275 0 276 13 277 17 278 13 279 14 280 17 281 17 282 18 283 17 284 18 285 13 286 14 287 17 288 0 289 13 290 17 291 0 292 9 293 13 294 14 295 17 296 0 297 5 298 9 299 13 300 14 301 17 302 0 303 13 304 17 305 18 306 18 307 19 308 20 309 18 310 19 311 20 312 19 313 20 314 19 315 20 316 19 317 20 318 14 319 15 320 14 321 15 322 15 323 16 324 14 325 15 326 16 327 14 328 15 329 16 330 10 331 11 332 12 333 10 334 11 335 12 336 11 337 12 338 11 339 12 340 11 341 12 342 6 343 7 344 8 345 6 346 7 347 8 348 7 349 8 350 7 351 8 352 17 353 18 354 17 355 18 356 17 357 18 358 17 359 18 360 17 361 18 362 19 363 17 364 18 365 17 366 18 367 19 368 17 369 18 370 19 371 13 372 14 373 17 374 13 375 14 376 0 377 9 378 13 379 0 380 5 381 9 382 0 383 5 384 9 385 0 386 5 387 9 388 9 389 10 390 0 391 9 392 13 393 0 394 9 395 13 396 0 397 5 398 6 399 9 400 13 401 0 402 5 403 6 404 9 405 13 406 9 407 13 408 5 409 9 410 13 411 0 412 5 413 9 414 13 415 0 416 5 417 9 418 13 419 5 420 6 421 0 422 1 423 2 424 5 425 9 426 5 427 6 428 9 429 10 430 13 431 14 432 5 433 6 434 0 435 1 436 5 437 9 438 0 439 1 440 2 441 5 442 0 443 0 444 9 445 0 446 1 447 5 448 0 449 5 450 0 451 5 452 6 453 9 454 0 455 1 456 2 457 5 458 0 459 1 460 5 461 0 462 0 463 0 464 13 465 17 466 0 467 9 468 13 469 0 470 5 471 9 472 0 473 9 474 13 475 0 476 13 477 17 478 5 479 6 480 0 481 5 482 9 483 13 484 0 485 5 486 9 487 13 488 17 489 0 490 5 491 9 492 13 493 17 494 9 495 10 496 5 497 9 498 13 499 13 500 14 501 0 502 5 503 9 504 13 505 17 506 13 507 14 508 0 509 1 510 0 511 1 512 2 513 0 514 1 515 0 516 1 517 0 518 1 519 2 520 0 521 1 522 0 523 1 524 0 525 1 526 0 527 1 528 2 529 5 530 0 531 1 532 2 533 5 534 0 535 1 536 2 537 0 538 1 539 0 540 1 541 0 542 0 543 0 544 1 545 0 546 1 547 17 548 0 549 1 550 17 551 0 552 1 553 0 554 1 555 0 556 1 557 0 558 1 559 0 560 1 561 0 562 1 563 2 564 0 565 1 566 0 567 1 568 9 569 10 570 11 571 9 572 10 573 9 574 10 575 5 576 6 577 0 578 5 579 9 580 0 581 1 582 2 583 5 584 0 585 1 586 2 587 5 588 0 589 1 590 2 591 0 592 1 593 0 594 1 595 2 596 5 597 0 598 1 599 2 600 5 601 0 602 1 603 2 604 5 605 1 606 2 607 0 608 1 609 2 610 0 611 1 612 2 613 0 614 1 615 2 616 0 617 1 618 2 619 5 620 0 621 13 622 17 623 0 624 9 625 13 626 17 627 0 628 5 629 9 630 13 631 17 632 0 633 5 634 9 635 13 636 17 637 0 638 1 639 0 640 1 641 0 642 1 643 0 644 17 645 0 646 17 647 0 648 17 649 0 650 17 651 0 652 13 653 17 654 0 655 5 656 9 657 13 658 17 659 0 660 13 661 17 662 0 663 1 664 0 665 1 666 2 667 5 668 9 669 13 670 0 671 1 672 5 673 9 674 13 675 0 676 1 677 2 678 5 679 9 680 0 681 1 682 2 683 5 684 0 685 1 686 2 687 5 688 0 689 1 690 2 691 5 692 0 693 1 694 2 695 5 696 0 697 1 698 2 699 5 700 0 701 1 702 2 703 5 704 0 705 1 706 2 707 5 708 0 709 1 710 2 711 0 712 1 713 2 714 1 715 2 716 1 717 2 718 5 719 6 720 5 721 6 722 7 723 5 724 6 725 7 726 5 727 6 728 7 729 5 730 6 731 6 732 7 733 6 734 7 735 6 736 7 737 5 738 6 739 7 740 5 741 6 742 7 743 6 744 7 745 6 746 7 747 6 748 7 749 6 750 7 751 6 752 7 753 6 754 7 755 8 756 10 757 11 758 12 759 15 760 16 761 15 762 16 763 14 764 15 765 19 766 20 767 18 768 19 769 1 770 2 771 3 772 1 773 2 774 3 775 1 776 2 777 3 778 2 779 3 780 2 781 3 782 1 783 2 784 3 785 1 786 2 787 3 788 1 789 2 790 3 791 1 792 2 793 3 794 0 795 1 796 2 797 1 798 2 799 0 800 1 801 2 802 0 803 1 804 2 805 3 806 0 807 1 808 2 809 3 810 0 811 1 812 2 813 3 814 0 815 1 816 2 817 3 818 1 819 2 820 3 821 1 822 2 823 2 824 17 825 18 826 19 827 18 828 19 829 18 830 19 831 20 832 19 833 20 834 17 835 18 836 19 837 18 838 19 839 18 840 19 841 17 842 18 843 19 844 18 845 19 846 18 847 19 848 18 849 19 850 18 851 19 852 18 853 19 854 20 855 18 856 19 857 18 858 19 859 18 860 19 861 19 862 20 863 19 864 20 865 19 866 20 867 13 868 14 869 13 870 14 871 13 872 14 873 13 874 14 875 13 876 14 877 13 878 14 879 13 880 14 881 14 882 15 883 14 884 15 885 14 886 15 887 14 888 15 889 14 890 15 891 14 892 15 893 14 894 15 895 14 896 15 897 14 898 15 899 14 900 15 901 14 902 15 903 14 904 15 905 14 906 15 907 14 908 15 909 14 910 15 911 14 912 15 913 14 914 15 915 16 916 14 917 15 918 16 919 14 920 15 921 16 922 14 923 15 924 14 925 15 926 15 927 16 928 15 929 16 930 14 931 15 932 16 933 14 934 15 935 16 936 14 937 15 938 16 939 14 940 15 941 16 942 14 943 15 944 16 945 9 946 10 947 9 948 10 949 9 950 10 951 11 952 9 953 10 954 11 955 9 956 10 957 11 958 9 959 10 960 10 961 11 962 10 963 11 964 10 965 11 966 10 967 11 968 10 969 11 970 10 971 11 972 10 973 11 974 10 975 11 976 10 977 11 978 10 979 11 980 10 981 11 982 10 983 11 984 10 985 11 986 12 987 11 988 12 989 10 990 11 991 12 992 11 993 12 994 11 995 12 996 10 997 11 998 12 999 11 1000 11 1001 12 1002 11 1003 12 1004 11 1005 12 1006 10 1007 11 1008 12 1009 11 1010 12 1011 6 1012 7 1013 8 1014 6 1015 7 1016 8 1017 6 1018 7 1019 8 1020 6 1021 7 1022 8 1023 6 1024 7 1025 7 1026 8 1027 7 1028 8 1029 7 1030 8 1031 7 1032 8 1033 7 1034 8 1035 2 1036 3 1037 2 1038 3 1039 2 1040 3 1041 2 1042 3 1043 2 1044 3 1045 2 1046 3 1047 2 1048 3 1049 2 1050 3 1051 2 1052 3 1053 2 1054 3 1055 2 1056 3 1057 2 1058 3 1059 2 1060 3 1061 2 1062 3 1063 2 1064 3 1065 2 1066 3 1067 4 1068 2 1069 3 1070 2 1071 3 1072 3 1073 4 1074 3 1075 4 1076 2 1077 3 1078 4 1079 3 1080 4 1081 2 1082 3 1083 4 1084 2 1085 3 1086 4 1087 2 1088 3 1089 4 1090 2 1091 3 1092 4 1093 3 1094 3 1095 4 1096 3 1097 4 1098 3 1099 4 1100 3 1101 4 1102 3 1103 4 1104 2 1105 3 1106 4 1107 3 1108 4 1109 0 1110 1 1111 2 1112 5 1113 0 1114 1 1115 2 1116 5 1117 0 1118 1 1119 2 1120 5 1121 0 1122 1 1123 5 1124 7 1125 8 1126 7 1127 8 1128 7 1129 8 1130 7 1131 8 1132 7 1133 8 1134 7 1135 8 1136 7 1137 8 1138 7 1139 8 1140 7 1141 8 1142 11 1143 12 1144 11 1145 12 1146 11 1147 12 1148 11 1149 12 1150 11 1151 12 1152 11 1153 12 1154 11 1155 12 1156 11 1157 12 1158 15 1159 16 1160 15 1161 16 1162 15 1163 16 1164 15 1165 16 1166 15 1167 16 1168 15 1169 16 1170 15 1171 16 1172 15 1173 16 1174 19 1175 20 1176 19 1177 20 1178 19 1179 20 1180 19 1181 20 1182 19 1183 20 1184 19 1185 20 1186 19 1187 20 1188 19 1189 20 1190 17 1191 18 1192 0 1193 17 1194 18 1195 17 1196 18 1197 0 1198 17 1199 18 1200 13 1201 17 1202 18 1203 13 1204 17 1205 18 1206 13 1207 17 1208 18 1209 0 1210 17 1211 18 1212 18 1213 19 1214 17 1215 18 1216 19 1217 17 1218 18 1219 19 1220 17 1221 18 1222 19 1223 17 1224 18 1225 19 1226 17 1227 18 1228 19 1229 17 1230 18 1231 19 1232 17 1233 18 1234 19 1235 17 1236 18 1237 19 1238 13 1239 14 1240 0 1241 13 1242 14 1243 17 1244 0 1245 13 1246 14 1247 17 1248 0 1249 13 1250 14 1251 17 1252 0 1253 13 1254 14 1255 17 1256 0 1257 13 1258 14 1259 17 1260 9 1261 13 1262 14 1263 9 1264 13 1265 14 1266 9 1267 13 1268 14 1269 13 1270 9 1271 10 1272 9 1273 10 1274 9 1275 10 1276 13 1277 9 1278 10 1279 13 1280 9 1281 10 1282 13 1283 9 1284 10 1285 5 1286 9 1287 10 1288 5 1289 9 1290 10 1291 9 1292 10 1293 13 1294 14 1295 14 1296 13 1297 14 1298 13 1299 14 1300 13 1301 14 1302 15 1303 13 1304 14 1305 15 1306 13 1307 14 1308 15 1309 13 1310 14 1311 15 1312 13 1313 14 1314 15 1315 13 1316 14 1317 13 1318 14 1319 9 1320 10 1321 9 1322 10 1323 11 1324 9 1325 10 1326 11 1327 10 1328 11 1329 10 1330 11 1331 10 1332 11 1333 10 1334 11 1335 10 1336 11 1337 9 1338 10 1339 11 1340 9 1341 10 1342 11 1343 0 1344 5 1345 5 1346 6 1347 5 1348 6 1349 5 1350 6 1351 9 1352 5 1353 6 1354 9 1355 5 1356 6 1357 9 1358 0 1359 5 1360 6 1361 5 1362 6 1363 5 1364 6 1365 5 1366 6 1367 6 1368 7 1369 5 1370 6 1371 7 1372 5 1373 6 1374 7 1375 5 1376 6 1377 7 1378 5 1379 6 1380 7 1381 5 1382 6 1383 7 1384 5 1385 6 1386 7 1387 5 1388 6 1389 7 1390 13 1391 0 1392 13 1393 0 1394 13 1395 17 1396 0 1397 13 1398 14 1399 17 1400 0 1401 9 1402 13 1403 14 1404 17 1405 0 1406 9 1407 13 1408 14 1409 17 1410 0 1411 9 1412 13 1413 14 1414 17 1415 0 1416 9 1417 13 1418 14 1419 17 1420 9 1421 13 1422 14 1423 0 1424 9 1425 13 1426 0 1427 9 1428 13 1429 17 1430 18 1431 0 1432 17 1433 0 1434 17 1435 0 1436 17 1437 0 1438 13 1439 17 1440 0 1441 13 1442 17 1443 13 1444 17 1445 18 1446 0 1447 13 1448 17 1449 18 1450 0 1451 13 1452 17 1453 18 1454 0 1455 17 1456 18 1457 9 1458 0 1459 9 1460 0 1461 9 1462 13 1463 0 1464 9 1465 13 1466 9 1467 10 1468 13 1469 5 1470 9 1471 10 1472 13 1473 0 1474 5 1475 9 1476 10 1477 13 1478 0 1479 5 1480 9 1481 10 1482 13 1483 0 1484 5 1485 9 1486 0 1487 5 1488 9 1489 0 1490 5 1491 6 1492 9 1493 13 1494 0 1495 5 1496 6 1497 9 1498 0 1499 5 1500 6 1501 9 1502 0 1503 5 1504 0 1505 5 1506 0 1507 5 1508 9 1509 5 1510 6 1511 9 1512 0 1513 5 1514 9 1515 0 1516 5 1517 0 1518 1 1519 0 1520 1 1521 2 1522 5 1523 0 1524 1 1525 2 1526 5 1527 2153 | 2154 | 2155 | 2156 | 2157 | 2158 | 2159 | 1.000000 0.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 0.000000 1.0000001.0000001.0000001.000000 0.000000 0.000000 0.000000 0.000000 -1.000000 0.000000 0.000000 0.000000 -0.000000 -1.000000 0.000000 0.000000 0.000000 0.000000 1.0000001.0000000.900865 -0.079808 -0.426699 1.376090 0.019320 0.989352 -0.144255 0.819689 0.433668 0.121710 0.892815 1.142560 0.000000 0.000000 0.000000 1.0000001.0000000.996129 -0.000000 0.087907 -0.000004 -0.000000 1.000000 0.000000 0.000003 -0.087907 -0.000000 0.996129 -1.922048 0.000000 0.000000 0.000000 1.0000001.0000001.000000 -0.000000 0.000000 -0.000002 -0.000000 1.000000 0.000000 -0.000002 0.000000 -0.000000 1.000000 -1.664379 0.000000 0.000000 0.000000 1.0000001.0000001.000000 0.000000 0.000000 0.000003 0.000000 1.000000 0.000000 -0.000003 -0.000000 -0.000000 1.000000 -1.256508 0.000000 0.000000 0.000000 1.0000001.0000000.985831 -0.004630 -0.167675 1.314660 -0.009105 0.996669 -0.081049 0.021673 0.167492 0.081427 0.982505 -2.197920 0.000000 0.000000 0.000000 1.0000001.0000001.000000 -0.000000 0.000000 -0.000003 0.000000 1.000000 -0.000000 0.000000 0.000000 -0.000000 1.000000 -1.956478 0.000000 0.000000 0.000000 1.0000001.0000001.000000 0.000000 0.000000 0.000003 0.000000 1.000000 -0.000000 -0.000001 0.000000 -0.000000 1.000000 -1.172066 0.000000 0.000000 0.000000 1.0000001.0000001.000000 0.000000 0.000000 0.000000 -0.000000 1.000000 0.000000 -0.000000 -0.000000 -0.000000 1.000000 -1.150793 0.000000 0.000000 0.000000 1.0000001.0000000.998631 0.000093 -0.052317 0.053333 -0.004425 0.996566 -0.082683 -0.049419 0.052129 0.082802 0.995202 -2.469820 0.000000 0.000000 0.000000 1.0000001.0000001.000000 -0.000000 0.000000 0.000000 -0.000000 1.000000 0.000000 -0.000000 0.000000 -0.000000 1.000000 -1.931086 0.000000 0.000000 0.000000 1.0000001.0000001.000000 -0.000000 -0.000000 -0.000000 -0.000000 1.000000 0.000000 0.000000 0.000000 -0.000000 1.000000 -1.315341 0.000000 0.000000 0.000000 1.0000001.0000001.000000 -0.000000 -0.000000 0.000000 -0.000000 1.000000 0.000000 0.000000 0.000000 -0.000000 1.000000 -1.335900 0.000000 0.000000 0.000000 1.0000001.0000000.993535 -0.006559 0.113337 -0.959611 0.016076 0.996398 -0.083259 0.050382 -0.112383 0.084543 0.990062 -2.314290 0.000000 0.000000 0.000000 1.0000001.0000001.000000 0.000000 0.000000 -0.000003 0.000000 1.000000 -0.000000 -0.000000 0.000000 0.000000 1.000000 -2.004612 0.000000 0.000000 0.000000 1.0000001.0000001.000000 0.000000 0.000000 0.000002 0.000000 1.000000 -0.000000 0.000001 0.000000 0.000000 1.000000 -1.174219 0.000000 0.000000 0.000000 1.0000001.0000001.000000 0.000000 0.000000 -0.000002 0.000000 1.000000 -0.000000 -0.000001 0.000000 0.000000 1.000000 -1.130243 0.000000 0.000000 0.000000 1.0000001.0000000.986942 -0.014214 0.160448 -2.020390 0.016266 0.999802 -0.011484 0.415441 -0.160253 0.013944 0.986977 -2.138680 0.000000 0.000000 0.000000 1.0000001.0000001.000000 0.000000 0.000000 -0.000009 0.000000 1.000000 -0.000000 -0.000000 0.000000 0.000000 1.000000 -1.149471 0.000000 0.000000 0.000000 1.0000001.0000001.000000 -0.000000 0.000000 0.000009 0.000000 1.000000 0.000000 0.000000 0.000000 -0.000000 1.000000 -0.739793 0.000000 0.000000 0.000000 1.0000001.0000001.000000 -0.000000 0.000000 0.000001 -0.000000 1.000000 0.000000 0.000000 0.000000 -0.000000 1.000000 -0.801447 0.000000 0.000000 0.000000 1.0000001.000000 2160 | 24.0000000.0416672.000000 2161 | 2162 | 2163 | 2164 | 2165 | 2166 |
2167 | -------------------------------------------------------------------------------- /models/Revamped Hand/handrevamp_lowpoly_rig_right.fbx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leapmotion/leapjs-rigged-hand/f7767d2394353494d83ae7fd4bfa0046b9d17928/models/Revamped Hand/handrevamp_lowpoly_rig_right.fbx -------------------------------------------------------------------------------- /models/Test Rig/Leapmotion_Basehand_Rig_Left.dae: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Blender User 6 | Blender 2.69.0 r60991 7 | 8 | 2014-02-21T20:56:58 9 | 2014-02-21T20:56:58 10 | 11 | Z_UP 12 | 13 | 14 | 15 | 16 | 17 | 18 | 49.13434 19 | 1.777778 20 | 0.1 21 | 100 22 | 23 | 24 | 25 | 26 | 27 | 0 28 | 0 29 | 0 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 1 1 1 39 | 1 40 | 0 41 | 0.00111109 42 | 43 | 44 | 45 | 46 | 0.000999987 47 | 1 48 | 0.1 49 | 0.1 50 | 1 51 | 1 52 | 1 53 | 2 54 | 0 55 | 1 56 | 1 57 | 1 58 | 1 59 | 1 60 | 0 61 | 2880 62 | 2 63 | 30.002 64 | 1.000799 65 | 0.04999995 66 | 29.99998 67 | 1 68 | 2 69 | 0 70 | 0 71 | 1 72 | 1 73 | 1 74 | 1 75 | 8192 76 | 1 77 | 1 78 | 0 79 | 1 80 | 1 81 | 1 82 | 3 83 | 0 84 | 0 85 | 0 86 | 0 87 | 45 88 | 0 89 | 1 90 | 1 91 | 1 92 | 3 93 | 0.15 94 | 75 95 | 1 96 | 1 97 | 0 98 | 1 99 | 1 100 | 0 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 0.6858805 -0.3173701 0.6548619 7.481132 0.7276338 0.3124686 -0.6106656 -6.50764 -0.01081678 0.8953432 0.4452454 5.343665 0 0 0 1 111 | 112 | 113 | 114 | -0.2908646 -0.7711008 0.5663932 4.076245 0.9551712 -0.1998834 0.2183912 1.005454 -0.05518906 0.6045247 0.7946723 5.903862 0 0 0 1 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | -------------------------------------------------------------------------------- /models/Test Rig/Leapmotion_Basehand_Rig_Left.fbx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leapmotion/leapjs-rigged-hand/f7767d2394353494d83ae7fd4bfa0046b9d17928/models/Test Rig/Leapmotion_Basehand_Rig_Left.fbx -------------------------------------------------------------------------------- /models/Test Rig/Leapmotion_Basehand_Rig_Right.fbx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leapmotion/leapjs-rigged-hand/f7767d2394353494d83ae7fd4bfa0046b9d17928/models/Test Rig/Leapmotion_Basehand_Rig_Right.fbx -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "leapjs-rigged-hand", 3 | "version": "0.1.7", 4 | "description": "WebGL Rigged hand for LeapJS", 5 | "main": "main/leapjs-rigged-hand-0.1.6.js", 6 | "dependencies": {}, 7 | "devDependencies": { 8 | "coffee-script": ">=1.7.1", 9 | "grunt": "~0.4.2", 10 | "grunt-banner": "git://github.com/pehrlich/grunt-banner.git", 11 | "grunt-bump": "0.0.13", 12 | "grunt-contrib-clean": "~0.5.0", 13 | "grunt-contrib-coffee": "~0.8.2", 14 | "grunt-contrib-concat": "~0.3.0", 15 | "grunt-contrib-connect": "^0.7.1", 16 | "grunt-contrib-uglify": "~0.3.2", 17 | "grunt-contrib-watch": "~0.6.1", 18 | "grunt-string-replace": "~0.2.7", 19 | "load-grunt-tasks": "~0.4.0" 20 | }, 21 | "repository": { 22 | "type": "git", 23 | "url": "git://github.com/leapmotion/leapjs-rigged-hand.git" 24 | }, 25 | "keywords": [ 26 | "leap", 27 | "leapjs", 28 | "plugin", 29 | "rigged", 30 | "hand" 31 | ], 32 | "author": "pehrlich", 33 | "license": "Apache-2.0", 34 | "bugs": { 35 | "url": "http://github.com/leapmotion/leapjs-rigged-hand/issues" 36 | }, 37 | "homepage": "http://github.com/leapmotion/leapjs-rigged-hand" 38 | } 39 | -------------------------------------------------------------------------------- /quickstart.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |

Rigged Hand - Quickstart

12 |

Bring your hand over the Leap, and you should see it displayed

13 | 14 | 23 | 24 | 25 | 34 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /src/leap.rigged-hand.coffee: -------------------------------------------------------------------------------- 1 | # todo: document that this must be run via http server 2 | # Options include: 3 | # parent - Optional - A ThreeJS.Object3d, such as a scene or camera, which the hands will be added to 4 | # renderFn - If provided, this will be executed on every animation frame. 5 | # E.g. function(){ renderer.render(scene, camera) } 6 | # materialOptions - A hash of properties for the material, such as wireframe: true 7 | # meshOptions - A hash of properties for the hand meshes, such as castShadow: true 8 | # dotsMode - shows a dot for every actual joint position, for comparison against the mesh calculations 9 | # checkWebGL: Boolean - whether or not to display a warning for non webgl-capable browser. By default, this 10 | # renderer: a THREE.js renderer to use. By default, one will be created to fill the entire window, and be automatically 11 | # resized. Passing in a custom renderer will cause camera.aspect and camera.setSize to no longer be set. 12 | # 13 | # will be used only if a THREE.js scene is not passed in for the hand. 14 | 15 | ` 16 | // http://stackoverflow.com/questions/6902280/cross-browser-dom-ready 17 | function bindReady(handler){ 18 | var called = false 19 | function ready() { 20 | if (called) return 21 | called = true 22 | handler() 23 | } 24 | if ( document.addEventListener ) { 25 | document.addEventListener( "DOMContentLoaded", function(){ 26 | ready() 27 | }, false ) 28 | } else if ( document.attachEvent ) { 29 | if ( document.documentElement.doScroll && window == window.top ) { 30 | function tryScroll(){ 31 | if (called) return 32 | if (!document.body) return 33 | try { 34 | document.documentElement.doScroll("left") 35 | ready() 36 | } catch(e) { 37 | setTimeout(tryScroll, 0) 38 | } 39 | } 40 | tryScroll() 41 | } 42 | document.attachEvent("onreadystatechange", function(){ 43 | if ( document.readyState === "complete" ) { 44 | ready() 45 | } 46 | }) 47 | } 48 | if (window.addEventListener) 49 | window.addEventListener('load', ready, false) 50 | else if (window.attachEvent) 51 | window.attachEvent('onload', ready) 52 | /* else // use this 'else' statement for very old browsers :) 53 | window.onload=ready 54 | */ 55 | } 56 | readyList = [] 57 | function onReady(handler) { 58 | if (!readyList.length) { 59 | bindReady(function() { 60 | for(var i=0; i 72 | axis = (new THREE.Vector3).crossVectors(a, b) 73 | @set(axis.x, axis.y, axis.z, 1 + a.dot(b)) 74 | @normalize() 75 | @ 76 | 77 | unless THREE.Bone.prototype.positionFromWorld 78 | 79 | # Set's the bones quaternion 80 | THREE.Bone.prototype.positionFromWorld = (eye, target) -> 81 | directionDotParentDirection = @worldDirection.dot(@parent.worldDirection) 82 | angle = Math.acos directionDotParentDirection 83 | @worldAxis.crossVectors(@parent.worldDirection, @worldDirection).normalize() 84 | 85 | # http://en.wikipedia.org/wiki/Rodrigues'_rotation_formula 86 | # v = palmNormal = parentUp 87 | # k = rotation axis = worldAxis 88 | @worldUp.set(0,0,0) 89 | .add(@parent.worldUp.clone().multiplyScalar(directionDotParentDirection)) 90 | .add((new THREE.Vector3).crossVectors(@worldAxis, @parent.worldUp).multiplyScalar(Math.sin(angle))) 91 | .add(@worldAxis.clone().multiplyScalar(@worldAxis.dot(@parent.worldUp) * (1 - directionDotParentDirection))) 92 | .normalize() 93 | 94 | 95 | @matrix.lookAt(eye, target, @worldUp) 96 | @worldQuaternion.setFromRotationMatrix( @matrix ) 97 | # Set this quaternion to be only the local change: 98 | @quaternion.copy(@parent.worldQuaternion).inverse().multiply(@worldQuaternion) 99 | @ 100 | 101 | # Creates the default ThreeJS scene if no parent passed in. 102 | initScene = (element)-> 103 | scope = @ 104 | @scene = new THREE.Scene() 105 | 106 | pointLight = new THREE.PointLight(0xFFffff) 107 | pointLight.position = new THREE.Vector3(-20, 10, 0) 108 | pointLight.lookAt new THREE.Vector3(0, 0, 0) 109 | @scene.add(pointLight) 110 | 111 | @camera = new THREE.PerspectiveCamera( 112 | 45, 113 | window.innerWidth / window.innerHeight, 114 | 1, 115 | 10000 116 | ) 117 | @camera.position.fromArray([0,160,400]) 118 | @camera.lookAt(new THREE.Vector3(0, 0, 0)) 119 | 120 | unless @renderer 121 | @renderer = new THREE.WebGLRenderer(alpha: true) 122 | @renderer.setClearColor( 0x000000, 0 ) 123 | @renderer.setSize(window.innerWidth, window.innerHeight) 124 | @renderer.domElement.style.position = 'fixed' 125 | @renderer.domElement.style.top = 0 126 | @renderer.domElement.style.left = 0 127 | @renderer.domElement.style.width = '100%' 128 | @renderer.domElement.style.height = '100%' 129 | 130 | window.addEventListener( 'resize', -> 131 | scope.camera.aspect = window.innerWidth / window.innerHeight 132 | scope.camera.updateProjectionMatrix() 133 | 134 | scope.renderer.setSize( window.innerWidth, window.innerHeight ) 135 | 136 | scope.renderer.render(scope.scene, scope.camera) 137 | , false ) 138 | 139 | scope.scene.add(scope.camera) 140 | scope.renderer.render(scope.scene, scope.camera) 141 | 142 | 143 | 144 | Leap.plugin 'riggedHand', (scope = {})-> 145 | @use('handHold') 146 | @use('handEntry') 147 | @use('versionCheck', {requiredProtocolVersion: 6}) 148 | 149 | # this allow the hand to move disproportionately to its size. 150 | scope.positionScale ||= 1 151 | scope.initScene = initScene 152 | 153 | controller = this 154 | 155 | 156 | # check WebGL support: 157 | scope.Detector = Detector 158 | 159 | if scope['checkWebGL'] == undefined 160 | scope.checkWebGL = !scope.parent 161 | 162 | if scope.checkWebGL 163 | unless scope.Detector.webgl 164 | scope.Detector.addGetWebGLMessage(); 165 | return 166 | 167 | 168 | unless scope.parent 169 | 170 | scope.initScene() 171 | scope.parent = scope.scene 172 | 173 | onReady => 174 | document.body.appendChild(scope.renderer.domElement) 175 | 176 | 177 | 178 | if scope.renderFn == undefined 179 | scope.renderFn = -> 180 | scope.renderer.render(scope.scene, scope.camera) 181 | 182 | 183 | spareMeshes = { 184 | left: [], 185 | right: [] 186 | } 187 | 188 | # converts a ThreeJS JSON blob in to a mesh 189 | createMesh = (JSON)-> 190 | # note: this causes a good 90ms pause on first run 191 | # it appears as if mesh.clone does not clone material and geometry, so at this point we refrain from doing so 192 | # see THREE.SkinnedMesh.prototype.clone 193 | # instead, we call createMesh right off, to have the results "cached" 194 | data = (new THREE.JSONLoader).parse JSON 195 | data.materials[0].skinning = true 196 | data.materials[0].transparent = true 197 | data.materials[0].opacity = 0.7 198 | data.materials[0].emissive.setHex(0x888888) 199 | 200 | data.materials[0].vertexColors = THREE.VertexColors 201 | data.materials[0].depthTest = true 202 | 203 | Leap._.extend(data.materials[0], scope.materialOptions) 204 | Leap._.extend(data.geometry, scope.geometryOptions) 205 | handMesh = new THREE.SkinnedMesh(data.geometry, data.materials[0]) 206 | handMesh.positionRaw = new THREE.Vector3 207 | handMesh.fingers = handMesh.children[0].children 208 | handMesh.castShadow = true 209 | 210 | # Re-create the skin index on bones in a manner which will be accessible later 211 | handMesh.bonesBySkinIndex = {} 212 | i = 0 213 | handMesh.children[0].traverse (bone)-> 214 | bone.skinIndex = i 215 | handMesh.bonesBySkinIndex[i] = bone 216 | i++ 217 | 218 | handMesh.boneLabels = {} 219 | 220 | if scope.boneLabels 221 | handMesh.traverse (bone)-> 222 | label = handMesh.boneLabels[bone.id] ||= document.createElement('div') 223 | label.style.position = 'absolute' 224 | label.style.zIndex = '10' 225 | 226 | label.style.color = 'white' 227 | label.style.fontSize = '20px' 228 | label.style.textShadow = '0px 0px 3px black' 229 | label.style.fontFamily = 'helvetica' 230 | label.style.textAlign = 'center' 231 | 232 | for attribute, value of scope.labelAttributes 233 | label.setAttribute(attribute, value) 234 | 235 | 236 | # takes in a vec3 of leap coordinates, and converts them in to screen position, 237 | # based on the hand mesh position and camera position. 238 | # accepts optional width and height values, which default to 239 | handMesh.screenPosition = (position)-> 240 | 241 | camera = scope.camera 242 | console.assert(camera instanceof THREE.Camera, "screenPosition expects camera, got", camera); 243 | 244 | width = parseInt(window.getComputedStyle(scope.renderer.domElement).width, 10) 245 | height = parseInt(window.getComputedStyle(scope.renderer.domElement).height, 10) 246 | console.assert(width && height); 247 | 248 | screenPosition = new THREE.Vector3() 249 | 250 | if position instanceof THREE.Vector3 251 | screenPosition.fromArray(position.toArray()) 252 | else 253 | screenPosition.fromArray(position) 254 | # the palm may have its base position scaled on top of leap coordinates: 255 | .sub(@positionRaw) 256 | .add(@position) 257 | 258 | screenPosition.project(camera) 259 | screenPosition.x = (screenPosition.x * width / 2) + width / 2 260 | screenPosition.y = (screenPosition.y * height / 2) + height / 2 261 | 262 | console.assert(!isNaN(screenPosition.x) && !isNaN(screenPosition.x), 'x/y screen position invalid') 263 | 264 | screenPosition 265 | 266 | handMesh.scenePosition = (leapPosition, scenePosition) -> 267 | scenePosition.fromArray(leapPosition) 268 | # these two add the base offset, factoring in for positionScale 269 | .sub(handMesh.positionRaw) 270 | .add(handMesh.position) 271 | 272 | # Mesh scale set by comparing leap first bone length to mesh first bone length 273 | handMesh.scaleFromHand = (leapHand) -> 274 | middleProximalLeapLength = (new THREE.Vector3).subVectors( 275 | (new THREE.Vector3).fromArray(leapHand.fingers[2].pipPosition) 276 | (new THREE.Vector3).fromArray(leapHand.fingers[2].mcpPosition) 277 | ).length() 278 | # skinnedmesh positions are relative distances to the parent bone 279 | middleProximalMeshLength = handMesh.fingers[2].position.length() 280 | 281 | handMesh.leapScale = ( middleProximalLeapLength / middleProximalMeshLength ) 282 | handMesh.scale.set( handMesh.leapScale, handMesh.leapScale, handMesh.leapScale ) 283 | 284 | handMesh 285 | 286 | getMesh = (leapHand)-> 287 | # Meshes are kept in memory after first-use, as it takes about 24ms, or two frames, to add one to the screen 288 | # on a good computer. 289 | meshes = spareMeshes[leapHand.type] 290 | if meshes.length > 0 291 | handMesh = meshes.pop() 292 | else 293 | JSON = rigs[leapHand.type] 294 | handMesh = createMesh(JSON) 295 | 296 | handMesh 297 | 298 | 299 | 300 | # initialize JSONloader for speed 301 | createMesh(rigs['right']) 302 | 303 | zeroVector = new THREE.Vector3(0,0,0) 304 | 305 | addMesh = (leapHand)-> 306 | # console.time 'addMesh' 307 | 308 | handMesh = getMesh(leapHand) 309 | 310 | scope.parent.add handMesh 311 | leapHand.data('riggedHand.mesh', handMesh) 312 | palm = handMesh.children[0] 313 | 314 | if scope.helper 315 | handMesh.helper = new THREE.SkeletonHelper( handMesh ) 316 | scope.parent.add handMesh.helper 317 | 318 | # Initialize Vectors for later use 319 | # actually we need the above so that position is factored in 320 | palm.worldUp = new THREE.Vector3 321 | palm.positionLeap = new THREE.Vector3 322 | for rigFinger in handMesh.fingers 323 | rigFinger.pip = rigFinger.children[0] 324 | rigFinger.dip = rigFinger.pip.children[0] 325 | rigFinger.tip = rigFinger.dip.children[0] 326 | 327 | rigFinger. worldQuaternion = new THREE.Quaternion 328 | rigFinger.pip.worldQuaternion = new THREE.Quaternion 329 | rigFinger.dip.worldQuaternion = new THREE.Quaternion 330 | 331 | rigFinger. worldAxis = new THREE.Vector3 332 | rigFinger.pip.worldAxis = new THREE.Vector3 333 | rigFinger.dip.worldAxis = new THREE.Vector3 334 | 335 | rigFinger. worldDirection = new THREE.Vector3 336 | rigFinger.pip.worldDirection = new THREE.Vector3 337 | rigFinger.dip.worldDirection = new THREE.Vector3 338 | 339 | rigFinger. worldUp = new THREE.Vector3 340 | rigFinger.pip.worldUp = new THREE.Vector3 341 | rigFinger.dip.worldUp = new THREE.Vector3 342 | 343 | rigFinger. positionLeap = new THREE.Vector3 344 | rigFinger.pip.positionLeap = new THREE.Vector3 345 | rigFinger.dip.positionLeap = new THREE.Vector3 346 | rigFinger.tip.positionLeap = new THREE.Vector3 347 | 348 | palm.worldDirection = new THREE.Vector3 349 | palm.worldQuaternion = handMesh.quaternion 350 | 351 | 352 | if scope.boneLabels 353 | # start with palm 354 | handMesh.children[0].traverse (bone)-> 355 | document.body.appendChild handMesh.boneLabels[bone.id] 356 | 357 | controller.emit('riggedHand.meshAdded', handMesh, leapHand) 358 | 359 | # console.timeEnd 'addMesh' 360 | 361 | 362 | removeMesh = (leapHand)-> 363 | handMesh = leapHand.data('riggedHand.mesh') 364 | leapHand.data('riggedHand.mesh', null) 365 | 366 | scope.parent.remove handMesh 367 | 368 | # this should really emit events for add/remove, and not be in one ugly global callback 369 | if handMesh.helper 370 | scope.parent.remove handMesh.helper 371 | handMesh.helper = null 372 | 373 | 374 | spareMeshes[leapHand.type].push(handMesh) 375 | 376 | if scope.boneLabels 377 | # start with palm 378 | handMesh.children[0].traverse (bone)-> 379 | document.body.removeChild handMesh.boneLabels[bone.id] 380 | 381 | controller.emit('riggedHand.meshRemoved', handMesh, leapHand) 382 | scope.renderFn() if scope.renderFn 383 | 384 | # for use when dotsMode = true 385 | scope.dots = {} 386 | basicDotMesh = new THREE.Mesh( 387 | new THREE.IcosahedronGeometry( 2 , 1 ), 388 | new THREE.MeshNormalMaterial() 389 | ) 390 | 391 | 392 | scope.positionDots = (leapHand, handMesh)-> 393 | return unless scope.dotsMode 394 | 395 | unless scope.dots["palmPosition"] 396 | scope.dots["palmPosition"] = new THREE.Mesh( 397 | new THREE.IcosahedronGeometry( 4 , 1 ), 398 | new THREE.MeshNormalMaterial() 399 | ) 400 | scope.parent.add scope.dots["palmPosition"] 401 | 402 | handMesh.scenePosition(leapHand["palmPosition"], scope.dots["palmPosition"].position) 403 | 404 | for leapFinger, i in leapHand.fingers 405 | for point in ['carp', 'mcp', 'pip', 'dip', 'tip'] 406 | 407 | # create meshes if necessary: 408 | unless scope.dots["#{point}-#{i}"] 409 | scope.dots["#{point}-#{i}"] = basicDotMesh.clone() 410 | scope.parent.add scope.dots["#{point}-#{i}"] 411 | 412 | handMesh.scenePosition(leapFinger["#{point}Position"], scope.dots["#{point}-#{i}"].position) 413 | 414 | @on 'handFound', addMesh 415 | @on 'handLost', removeMesh 416 | 417 | 418 | 419 | { 420 | frame: (frame)-> 421 | 422 | scope.stats.begin() if scope.stats 423 | for leapHand in frame.hands 424 | 425 | # this works around a subtle bug where non-extended fingers would appear after extended ones 426 | leapHand.fingers = Leap._.sortBy(leapHand.fingers, (finger)-> finger.id) 427 | handMesh = leapHand.data('riggedHand.mesh') 428 | palm = handMesh.children[0] 429 | 430 | handMesh.scaleFromHand(leapHand) 431 | 432 | palm.positionLeap.fromArray(leapHand.palmPosition) 433 | 434 | # wrist -> mcp -> pip -> dip -> tip 435 | for mcp, i in palm.children 436 | mcp. positionLeap.fromArray(leapHand.fingers[i].mcpPosition) 437 | mcp.pip.positionLeap.fromArray(leapHand.fingers[i].pipPosition) 438 | mcp.dip.positionLeap.fromArray(leapHand.fingers[i].dipPosition) 439 | mcp.tip.positionLeap.fromArray(leapHand.fingers[i].tipPosition) 440 | 441 | 442 | # set heading on palm so that finger.parent can access 443 | palm.worldDirection.fromArray(leapHand.direction) 444 | palm.up.fromArray(leapHand.palmNormal).multiplyScalar(-1) 445 | palm.worldUp.fromArray(leapHand.palmNormal).multiplyScalar(-1) 446 | 447 | # hand mesh (root is where) is set to the palm position 448 | # this should mean it would move in sync with a fixed offset 449 | handMesh.positionRaw.fromArray(leapHand.palmPosition) 450 | handMesh.position.copy(handMesh.positionRaw).multiplyScalar(scope.positionScale) 451 | 452 | handMesh.matrix.lookAt(palm.worldDirection, zeroVector, palm.up) 453 | 454 | # set worldQuaternion before using it to position fingers (threejs updates handMesh.quaternion, but only too late) 455 | palm.worldQuaternion.setFromRotationMatrix( handMesh.matrix ) 456 | 457 | for mcp in palm.children 458 | mcp.traverse (bone)-> 459 | if bone.children[0] 460 | bone.worldDirection.subVectors(bone.children[0].positionLeap, bone.positionLeap).normalize() 461 | bone.positionFromWorld(bone.children[0].positionLeap, bone.positionLeap) 462 | 463 | if handMesh.helper 464 | handMesh.helper.update() 465 | 466 | scope.positionDots(leapHand, handMesh) 467 | 468 | 469 | if scope.boneLabels 470 | palm.traverse (bone)-> 471 | # the condition here is necessary in case scope.boneLabels is set while a hand is in the frame 472 | if element = handMesh.boneLabels[bone.id] 473 | screenPosition = handMesh.screenPosition(bone.positionLeap, scope.camera) 474 | element.style.left = "#{screenPosition.x}px" 475 | element.style.bottom = "#{screenPosition.y}px" 476 | element.innerHTML = scope.boneLabels(bone, leapHand) || '' 477 | 478 | if scope.boneColors 479 | geometry = handMesh.geometry 480 | # H. S controlled by weights, Lightness constant. 481 | boneColors = {} 482 | 483 | i = 0 484 | while i < geometry.vertices.length 485 | # 0-index at palm id 486 | # boneColors must return an array with [hue, saturation, lightness] 487 | boneColors[geometry.skinIndices[i].x] ||= (scope.boneColors(handMesh.bonesBySkinIndex[geometry.skinIndices[i].x], leapHand) || {hue: 0, saturation: 0}) 488 | boneColors[geometry.skinIndices[i].y] ||= (scope.boneColors(handMesh.bonesBySkinIndex[geometry.skinIndices[i].y], leapHand) || {hue: 0, saturation: 0}) 489 | xBoneHSL = boneColors[geometry.skinIndices[i].x] 490 | yBoneHSL = boneColors[geometry.skinIndices[i].y] 491 | weights = geometry.skinWeights[i] 492 | 493 | # the best way to do this would be additive blending of hue based upon weights 494 | # currently, we just hue to whichever is set 495 | hue = xBoneHSL.hue || yBoneHSL.hue 496 | lightness = xBoneHSL.lightness || yBoneHSL.lightness || 0.5 497 | 498 | saturation = 499 | (xBoneHSL.saturation) * weights.x + 500 | (yBoneHSL.saturation) * weights.y 501 | 502 | 503 | geometry.colors[i] ||= new THREE.Color() 504 | geometry.colors[i].setHSL(hue, saturation, lightness) 505 | i++ 506 | geometry.colorsNeedUpdate = true 507 | 508 | # copy vertex colors to the face 509 | faceIndices = 'abc' 510 | for face in geometry.faces 511 | j = 0 512 | while j < 3 513 | face.vertexColors[j] = geometry.colors[face[faceIndices[j]]] 514 | j++ 515 | 516 | 517 | scope.renderFn() if scope.renderFn 518 | scope.stats.end() if scope.stats 519 | } -------------------------------------------------------------------------------- /src/lib/Detector.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @author alteredq / http://alteredqualia.com/ 3 | * @author mr.doob / http://mrdoob.com/ 4 | */ 5 | 6 | var Detector = { 7 | 8 | canvas: !! window.CanvasRenderingContext2D, 9 | webgl: ( function () { try { var canvas = document.createElement( 'canvas' ); return !! window.WebGLRenderingContext && ( canvas.getContext( 'webgl' ) || canvas.getContext( 'experimental-webgl' ) ); } catch( e ) { return false; } } )(), 10 | workers: !! window.Worker, 11 | fileapi: window.File && window.FileReader && window.FileList && window.Blob, 12 | 13 | getWebGLErrorMessage: function () { 14 | 15 | var element = document.createElement( 'div' ); 16 | element.id = 'webgl-error-message'; 17 | element.style.fontFamily = 'monospace'; 18 | element.style.fontSize = '13px'; 19 | element.style.fontWeight = 'normal'; 20 | element.style.textAlign = 'center'; 21 | element.style.background = '#fff'; 22 | element.style.color = '#000'; 23 | element.style.padding = '1.5em'; 24 | element.style.width = '400px'; 25 | element.style.margin = '5em auto 0'; 26 | 27 | if ( ! this.webgl ) { 28 | 29 | element.innerHTML = window.WebGLRenderingContext ? [ 30 | 'Your graphics card does not seem to support WebGL.
', 31 | 'Find out how to get it here.' 32 | ].join( '\n' ) : [ 33 | 'Your browser does not seem to support WebGL.
', 34 | 'Find out how to get it here.' 35 | ].join( '\n' ); 36 | 37 | } 38 | 39 | return element; 40 | 41 | }, 42 | 43 | addGetWebGLMessage: function ( parameters ) { 44 | 45 | var parent, id, element; 46 | 47 | parameters = parameters || {}; 48 | 49 | parent = parameters.parent !== undefined ? parameters.parent : document.body; 50 | id = parameters.id !== undefined ? parameters.id : 'oldie'; 51 | 52 | element = Detector.getWebGLErrorMessage(); 53 | element.id = id; 54 | 55 | parent.appendChild( element ); 56 | 57 | } 58 | 59 | }; --------------------------------------------------------------------------------