Some cleaning 😢
This commit is contained in:
		
							parent
							
								
									59518eb702
								
							
						
					
					
						commit
						5e0a6c3121
					
				| @ -138,6 +138,8 @@ L3D.PointerCamera = function() { | |||||||
|      */ |      */ | ||||||
|     this.listenerTarget = listenerTarget; |     this.listenerTarget = listenerTarget; | ||||||
| 
 | 
 | ||||||
|  |     this.movingToRecommendation = null; | ||||||
|  | 
 | ||||||
|     // Set events from the document
 |     // Set events from the document
 | ||||||
|     var self = this; |     var self = this; | ||||||
|     var onKeyDown = function(event) {self.onKeyDown(event);}; |     var onKeyDown = function(event) {self.onKeyDown(event);}; | ||||||
|  | |||||||
| Before Width: | Height: | Size: 4.5 MiB After Width: | Height: | Size: 4.5 MiB | 
| @ -1,9 +1,9 @@ | |||||||
| OPT=--compilation_level SIMPLE_OPTIMIZATIONS | OPT=--compilation_level SIMPLE_OPTIMIZATIONS | ||||||
| 
 | 
 | ||||||
| ifeq ($(TYPE),RELEASE) | ifeq ($(TYPE),RELEASE) | ||||||
| 	CLOSURE=java -jar ../utils/closure-compiler/closure-compiler.jar | 	CLOSURE=java -jar ../../utils/closure-compiler/closure-compiler.jar | ||||||
| else | else | ||||||
| 	CLOSURE=../utils/simple-compiler/compiler.sh | 	CLOSURE=../../utils/simple-compiler/compiler.sh | ||||||
| endif | endif | ||||||
| 
 | 
 | ||||||
| all: Geo | all: Geo | ||||||
| @ -1,4 +1,6 @@ | |||||||
| var Log = require('../lib/NodeLog.js'); | var Log = require('../lib/NodeLog.js'); | ||||||
|  | var L3D = require('../../static/js/l3d.min.js'); | ||||||
|  | var THREE = require('three'); | ||||||
| 
 | 
 | ||||||
| function clone(vec) { | function clone(vec) { | ||||||
|     return {x : vec.x, y : vec.y, z : vec.z}; |     return {x : vec.x, y : vec.y, z : vec.z}; | ||||||
| @ -110,7 +112,7 @@ geo.MeshContainer = function(path, transfo, callback) { | |||||||
| 
 | 
 | ||||||
|     if (path !== undefined) { |     if (path !== undefined) { | ||||||
| 
 | 
 | ||||||
|         this.loadFromFile(path); |         this.loadFromFile('../' + path); | ||||||
| 
 | 
 | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
| @ -233,12 +235,18 @@ function trySetLoaded() { | |||||||
| 
 | 
 | ||||||
| var availableMeshNames = { | var availableMeshNames = { | ||||||
|     '/static/data/castle/princess peaches castle (outside).obj': { |     '/static/data/castle/princess peaches castle (outside).obj': { | ||||||
|         done: false |         done: false, | ||||||
|  |         recommendations : L3D.createPeachRecommendations(1134, 768) | ||||||
|  | 
 | ||||||
|     }, |     }, | ||||||
|     '/static/data/mountain/coocoolmountain.obj': { |     '/static/data/mountain/coocoolmountain.obj': { | ||||||
|         done: false |         done: false, | ||||||
|  |         recommendations : L3D.createMountainRecommendations(1134, 768) | ||||||
|  |     }, | ||||||
|  |     '/static/data/mountain/coocoolmountain_sub.obj': { | ||||||
|  |         done: false, | ||||||
|  |         recommendations : L3D.createMountainRecommendations(1134, 768) | ||||||
|     }, |     }, | ||||||
| 
 |  | ||||||
|     '/static/data/whomp/Whomps Fortress.obj': { |     '/static/data/whomp/Whomps Fortress.obj': { | ||||||
|         done: false, |         done: false, | ||||||
|         transfo: { |         transfo: { | ||||||
| @ -253,9 +261,26 @@ var availableMeshNames = { | |||||||
|                 z: 0 |                 z: 0 | ||||||
|             }, |             }, | ||||||
|             scale: 0.1 |             scale: 0.1 | ||||||
|         } |         }, | ||||||
|  |         recommendations : L3D.createWhompRecommendations(1134, 768) | ||||||
|  |     }, | ||||||
|  |     '/static/data/whomp/Whomps Fortress_sub.obj': { | ||||||
|  |         done: false, | ||||||
|  |         transfo: { | ||||||
|  |             rotation: { | ||||||
|  |                 x: -Math.PI / 2, | ||||||
|  |                 y: 0, | ||||||
|  |                 z: Math.PI / 2 | ||||||
|  |             }, | ||||||
|  |             translation: { | ||||||
|  |                 x: 0, | ||||||
|  |                 y: 0, | ||||||
|  |                 z: 0 | ||||||
|  |             }, | ||||||
|  |             scale: 0.1 | ||||||
|  |         }, | ||||||
|  |         recommendations : L3D.createWhompRecommendations(1134, 768) | ||||||
|     }, |     }, | ||||||
| 
 |  | ||||||
|     '/static/data/bobomb/bobomb battlefeild.obj': { |     '/static/data/bobomb/bobomb battlefeild.obj': { | ||||||
|         done: false, |         done: false, | ||||||
|         transfo: { |         transfo: { | ||||||
| @ -269,7 +294,25 @@ var availableMeshNames = { | |||||||
|                 y: 0, |                 y: 0, | ||||||
|                 z: 0 |                 z: 0 | ||||||
|             } |             } | ||||||
|         } |         }, | ||||||
|  |         recommendations : L3D.createBobombRecommendations(1134, 768) | ||||||
|  |     }, | ||||||
|  | 
 | ||||||
|  |     '/static/data/bobomb/bobomb battlefeild_sub.obj': { | ||||||
|  |         done: false, | ||||||
|  |         transfo: { | ||||||
|  |             rotation: { | ||||||
|  |                 x: 0, | ||||||
|  |                 y: Math.PI - 0.27, | ||||||
|  |                 z: 0 | ||||||
|  |             }, | ||||||
|  |             translation: { | ||||||
|  |                 x: 0, | ||||||
|  |                 y: 0, | ||||||
|  |                 z: 0 | ||||||
|  |             } | ||||||
|  |         }, | ||||||
|  |         recommendations : L3D.createBobombRecommendations(1134, 768) | ||||||
|     }, |     }, | ||||||
| 
 | 
 | ||||||
|     '/static/data/sponza/sponza.obj': { |     '/static/data/sponza/sponza.obj': { | ||||||
| @ -294,6 +337,36 @@ function pushMesh(name) { | |||||||
|         name.substring(1, name.length), |         name.substring(1, name.length), | ||||||
|         availableMeshNames[name].transfo, |         availableMeshNames[name].transfo, | ||||||
|         function() { |         function() { | ||||||
|  |             geo.availableMeshes[name].recommendations = []; | ||||||
|  | 
 | ||||||
|  |             if (availableMeshNames[name].recommendations !== undefined) { | ||||||
|  | 
 | ||||||
|  |                 for (var i = 0; i < availableMeshNames[name].recommendations.length; i++) { | ||||||
|  | 
 | ||||||
|  |                     var reco = availableMeshNames[name].recommendations[i].camera; | ||||||
|  | 
 | ||||||
|  |                     reco.lookAt(reco.target); | ||||||
|  | 
 | ||||||
|  |                     reco.updateMatrix(); | ||||||
|  |                     reco.updateProjectionMatrix(); | ||||||
|  |                     reco.updateMatrixWorld(); | ||||||
|  | 
 | ||||||
|  |                     reco.matrixWorldInverse.getInverse( reco.matrixWorld ); | ||||||
|  | 
 | ||||||
|  |                     var frustum = new THREE.Frustum(); | ||||||
|  |                     var projScreenMatrix = new THREE.Matrix4(); | ||||||
|  |                     projScreenMatrix.multiplyMatrices(reco.projectionMatrix, reco.matrixWorldInverse); | ||||||
|  | 
 | ||||||
|  |                     frustum.setFromMatrix(new THREE.Matrix4().multiplyMatrices(reco.projectionMatrix, reco.matrixWorldInverse)); | ||||||
|  | 
 | ||||||
|  |                     geo.availableMeshes[name].recommendations.push({ | ||||||
|  |                         position: reco.position, | ||||||
|  |                         frustum: frustum.planes | ||||||
|  |                     }); | ||||||
|  | 
 | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  | 
 | ||||||
|             availableMeshNames[name].done = true; |             availableMeshNames[name].done = true; | ||||||
|             trySetLoaded(); |             trySetLoaded(); | ||||||
|         } |         } | ||||||
| @ -1,3 +1,59 @@ | |||||||
|  | var THREE = require('three'); | ||||||
|  | var L3D = require('../../static/js/l3d.min.js'); | ||||||
|  | 
 | ||||||
|  | function isInFrustum(element, planes) { | ||||||
|  | 
 | ||||||
|  |     if (element instanceof Array) { | ||||||
|  | 
 | ||||||
|  |         var outcodes = []; | ||||||
|  | 
 | ||||||
|  |         for (var i = 0; i < element.length; i++) { | ||||||
|  | 
 | ||||||
|  |             var vertex = element[i]; | ||||||
|  |             var currentOutcode = ""; | ||||||
|  | 
 | ||||||
|  |             for (var j = 0; j < planes.length;  j++) { | ||||||
|  | 
 | ||||||
|  |                 var plane = planes[j]; | ||||||
|  | 
 | ||||||
|  |                 distance = | ||||||
|  |                     plane.normal.x * vertex.x + | ||||||
|  |                     plane.normal.y * vertex.y + | ||||||
|  |                     plane.normal.z * vertex.z + | ||||||
|  |                     plane.constant; | ||||||
|  | 
 | ||||||
|  |                 // if (distance < 0) {
 | ||||||
|  |                 //     exitToContinue = true;
 | ||||||
|  |                 //     break;
 | ||||||
|  |                 // }
 | ||||||
|  | 
 | ||||||
|  |                 currentOutcode += distance > 0 ? '0' : '1'; | ||||||
|  | 
 | ||||||
|  |             } | ||||||
|  | 
 | ||||||
|  |             outcodes.push(parseInt(currentOutcode,2)); | ||||||
|  | 
 | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         // http://vterrain.org/LOD/culling.html
 | ||||||
|  |         // I have no idea what i'm doing
 | ||||||
|  |         // http://i.kinja-img.com/gawker-media/image/upload/japbcvpavbzau9dbuaxf.jpg
 | ||||||
|  |         // But it seems to work
 | ||||||
|  |         // EDIT : Not, this should be ok http://www.cs.unc.edu/~blloyd/comp770/Lecture07.pdf
 | ||||||
|  | 
 | ||||||
|  |         if ((outcodes[0] | outcodes[1] | outcodes[2]) === 0) { | ||||||
|  |             return true; | ||||||
|  |         } else if ((outcodes[0] & outcodes[1] & outcodes[2]) !== 0) { | ||||||
|  |             return false; | ||||||
|  |         } else { | ||||||
|  |             // part of the triangle is inside the viewing volume
 | ||||||
|  |             return true; | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  | } | ||||||
|  | 
 | ||||||
| /** | /** | ||||||
|  * @private |  * @private | ||||||
|  */ |  */ | ||||||
| @ -97,6 +153,18 @@ geo.MeshStreamer = function(path) { | |||||||
| 
 | 
 | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | geo.MeshStreamer.prototype.isBackFace = function(camera, face) { | ||||||
|  | 
 | ||||||
|  |     var directionCamera = L3D.Tools.diff(camera.target, camera.position); | ||||||
|  | 
 | ||||||
|  |     var v1 = L3D.Tools.diff(this.mesh.vertices[face.b], this.mesh.vertices[face.a]); | ||||||
|  |     var v2 = L3D.Tools.diff(this.mesh.vertices[face.c], this.mesh.vertices[face.a]); | ||||||
|  | 
 | ||||||
|  |     var normal = L3D.Tools.cross(v1, v2); | ||||||
|  | 
 | ||||||
|  |     return L3D.Tools.dot(directionCamera, normal) > 0; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
| /** | /** | ||||||
|  * Compute a function that can compare two faces |  * Compute a function that can compare two faces | ||||||
|  * @param {Camera} camera a camera seeing or not face |  * @param {Camera} camera a camera seeing or not face | ||||||
| @ -192,6 +260,13 @@ geo.MeshStreamer.prototype.start = function(socket) { | |||||||
| 
 | 
 | ||||||
|         self.mesh = geo.availableMeshes[path]; |         self.mesh = geo.availableMeshes[path]; | ||||||
| 
 | 
 | ||||||
|  |         if (self.mesh === undefined) { | ||||||
|  |             process.stderr.write('Wrong path for model : ' + path); | ||||||
|  |             socket.emit('refused'); | ||||||
|  |             socket.disconnect(); | ||||||
|  |             return; | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|         self.meshFaces = new Array(self.mesh.meshes.length); |         self.meshFaces = new Array(self.mesh.meshes.length); | ||||||
| 
 | 
 | ||||||
|         for (var i = 0; i < self.meshFaces.length; i++) { |         for (var i = 0; i < self.meshFaces.length; i++) { | ||||||
| @ -203,15 +278,6 @@ geo.MeshStreamer.prototype.start = function(socket) { | |||||||
| 
 | 
 | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         var regex = /.*\.\..*/; |  | ||||||
|         var filePath = path.substring(1, path.length); |  | ||||||
| 
 |  | ||||||
|         if (regex.test(filePath)) { |  | ||||||
|             socket.emit('refused'); |  | ||||||
|             socket.disconnect(); |  | ||||||
|             return; |  | ||||||
|         } |  | ||||||
| 
 |  | ||||||
|         socket.emit('ok'); |         socket.emit('ok'); | ||||||
| 
 | 
 | ||||||
|     }); |     }); | ||||||
| @ -344,8 +410,8 @@ geo.MeshStreamer.prototype.nextElements = function(_camera, force) { | |||||||
|     var mightBeCompletetlyFinished = true; |     var mightBeCompletetlyFinished = true; | ||||||
| 
 | 
 | ||||||
|     // BOOM
 |     // BOOM
 | ||||||
|     if (camera != null) |     // if (camera != null)
 | ||||||
|         this.mesh.faces.sort(this.faceComparator(camera)); |     //     this.mesh.faces.sort(this.faceComparator(camera));
 | ||||||
| 
 | 
 | ||||||
|     for (var faceIndex = 0; faceIndex < this.mesh.faces.length; faceIndex++) { |     for (var faceIndex = 0; faceIndex < this.mesh.faces.length; faceIndex++) { | ||||||
| 
 | 
 | ||||||
| @ -355,64 +421,30 @@ geo.MeshStreamer.prototype.nextElements = function(_camera, force) { | |||||||
| 
 | 
 | ||||||
|             continue; |             continue; | ||||||
| 
 | 
 | ||||||
|         } else { |  | ||||||
| 
 |  | ||||||
|             mightBeCompletetlyFinished = false; |  | ||||||
| 
 |  | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|  |         mightBeCompletetlyFinished = false; | ||||||
|  | 
 | ||||||
|         var vertex1 = this.mesh.vertices[currentFace.a]; |         var vertex1 = this.mesh.vertices[currentFace.a]; | ||||||
|         var vertex2 = this.mesh.vertices[currentFace.b]; |         var vertex2 = this.mesh.vertices[currentFace.b]; | ||||||
|         var vertex3 = this.mesh.vertices[currentFace.c]; |         var vertex3 = this.mesh.vertices[currentFace.c]; | ||||||
| 
 | 
 | ||||||
|         if (!force) { |         if (!force && camera !== null) { | ||||||
| 
 | 
 | ||||||
|             var display = false; |             var display = false; | ||||||
|             var outcodes = []; |  | ||||||
|             var exitToContinue = false; |             var exitToContinue = false; | ||||||
|             threeVertices = [vertex1, vertex2, vertex3]; |             threeVertices = [vertex1, vertex2, vertex3]; | ||||||
| 
 | 
 | ||||||
|             for (i = 0; i < threeVertices.length; i++) { |             // Frustum culling
 | ||||||
| 
 |             if (!isInFrustum(threeVertices, planes)) { | ||||||
|                 var vertex = threeVertices[i]; |  | ||||||
|                 var currentOutcode = ""; |  | ||||||
| 
 |  | ||||||
|                 for (var j = 0; j < planes.length;  j++) { |  | ||||||
| 
 |  | ||||||
|                     var plane = planes[j]; |  | ||||||
| 
 |  | ||||||
|                     distance = |  | ||||||
|                         plane.normal.x * vertex.x + |  | ||||||
|                         plane.normal.y * vertex.y + |  | ||||||
|                         plane.normal.z * vertex.z + |  | ||||||
|                         plane.constant; |  | ||||||
| 
 |  | ||||||
|                     // if (distance < 0) {
 |  | ||||||
|                     //     exitToContinue = true;
 |  | ||||||
|                     //     break;
 |  | ||||||
|                     // }
 |  | ||||||
| 
 |  | ||||||
|                     currentOutcode += distance > 0 ? '0' : '1'; |  | ||||||
| 
 |  | ||||||
|                 } |  | ||||||
| 
 |  | ||||||
|                 outcodes.push(parseInt(currentOutcode,2)); |  | ||||||
| 
 |  | ||||||
|             } |  | ||||||
| 
 |  | ||||||
|             // http://vterrain.org/LOD/culling.html
 |  | ||||||
|             // I have no idea what i'm doing
 |  | ||||||
|             // http://i.kinja-img.com/gawker-media/image/upload/japbcvpavbzau9dbuaxf.jpg
 |  | ||||||
|             // But it seems to work
 |  | ||||||
|             if ( (outcodes[0] | outcodes[1]) === 0 && (outcodes[1] | outcodes[2]) === 0 ) { |  | ||||||
|                 // all points in
 |  | ||||||
|             } else if ( (outcodes[0] === outcodes[1]) && (outcodes[0] === outcodes[2]) ) { |  | ||||||
|                 // all points out
 |  | ||||||
|                 continue; |                 continue; | ||||||
|             } |             } | ||||||
|             else { | 
 | ||||||
|                 // part of the triangle is inside the viewing volume
 |             // Backface culling
 | ||||||
|  |             if (this.isBackFace(camera, currentFace)) { | ||||||
|  |                 continue; | ||||||
|             } |             } | ||||||
|  | 
 | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         if (!this.vertices[currentFace.a]) { |         if (!this.vertices[currentFace.a]) { | ||||||
							
								
								
									
										1
									
								
								server/geo/mat1.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								server/geo/mat1.json
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1 @@ | |||||||
|  | [[0,0.07894736842105263,0.18421052631578946,0,0.02631578947368421,0.02631578947368421,0,0.02631578947368421,0,0.13157894736842105,0.2894736842105263,0.2631578947368421],[0,0,0.10526315789473684,0.15789473684210525,0.18421052631578946,0.02631578947368421,0,0.07894736842105263,0.02631578947368421,0.05263157894736842,0.05263157894736842,0.05263157894736842],[0,0.02631578947368421,0,0.5,0.02631578947368421,0.02631578947368421,0.02631578947368421,0.07894736842105263,0.02631578947368421,0.07894736842105263,0.07894736842105263,0.05263157894736842],[0,0.05263157894736842,0.07894736842105263,0,0.4473684210526316,0.02631578947368421,0.13157894736842105,0.02631578947368421,0,0.07894736842105263,0,0.13157894736842105],[0,0,0.02631578947368421,0.15789473684210525,0,0.3157894736842105,0.21052631578947367,0.05263157894736842,0,0.07894736842105263,0,0.10526315789473684],[0,0.10526315789473684,0,0.05263157894736842,0.13157894736842105,0,0.13157894736842105,0.05263157894736842,0.15789473684210525,0.02631578947368421,0.02631578947368421,0.02631578947368421],[0,0.15789473684210525,0.10526315789473684,0,0,0.10526315789473684,0,0.05263157894736842,0.21052631578947367,0.13157894736842105,0,0],[0,0.07894736842105263,0.05263157894736842,0.02631578947368421,0.07894736842105263,0.07894736842105263,0.10526315789473684,0,0.07894736842105263,0.02631578947368421,0.02631578947368421,0.05263157894736842],[0,0,0.10526315789473684,0.02631578947368421,0.02631578947368421,0.18421052631578946,0.15789473684210525,0,0,0.21052631578947367,0.07894736842105263,0.07894736842105263],[0,0.07894736842105263,0.10526315789473684,0.02631578947368421,0,0,0.07894736842105263,0.15789473684210525,0.13157894736842105,0,0.21052631578947367,0.07894736842105263],[0,0.02631578947368421,0.10526315789473684,0.07894736842105263,0.05263157894736842,0.02631578947368421,0,0.02631578947368421,0.23684210526315788,0.07894736842105263,0,0.10526315789473684],[0,0.18421052631578946,0.13157894736842105,0.13157894736842105,0.10526315789473684,0.02631578947368421,0,0.13157894736842105,0.02631578947368421,0.05263157894736842,0.07894736842105263,0]] | ||||||
							
								
								
									
										1
									
								
								server/geo/mat1.json.bak
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								server/geo/mat1.json.bak
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1 @@ | |||||||
|  | [[0,0,602,0,0,0,0,0,0,151,191,0],[0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,1116,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0],[0,87,0,0,0,0,0,0,0,0,0,82],[0,0,0,0,0,0,0,0,195,0,0,0],[0,86,41,0,0,0,0,0,0,563,74,72],[0,0,59,0,0,0,0,0,0,0,0,49],[0,147,151,0,0,0,0,0,0,0,0,110],[0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0]] | ||||||
							
								
								
									
										1
									
								
								server/geo/mat2.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								server/geo/mat2.json
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1 @@ | |||||||
|  | [[0,0.03125,0.09375,0.5,0.21875,0.03125,0.09375,0.1875,0,0.125,0.15625,0],[0,0,0.15625,0.0625,0.21875,0.0625,0.15625,0.09375,0,0.0625,0.03125,0],[0,0.21875,0,0.0625,0.0625,0,0,0,0,0,0.03125,0.0625],[0,0.09375,0.0625,0,0.25,0.03125,0.1875,0.1875,0.03125,0.25,0,0.03125],[0,0.125,0.0625,0.125,0,0.03125,0,0,0.1875,0.09375,0.15625,0.0625],[0,0.03125,0,0,0,0,0.21875,0,0.25,0,0,0.1875],[0,0.03125,0.0625,0.0625,0.03125,0.34375,0,0.125,0.34375,0,0.40625,0.0625],[0,0.125,0,0.15625,0,0.0625,0.25,0,0.03125,0.09375,0,0],[0,0.125,0.03125,0.0625,0,0.1875,0.15625,0.03125,0,0.0625,0,0.25],[0,0.1875,0,0.125,0.125,0,0.0625,0.03125,0,0,0.03125,0.125],[0,0.0625,0.0625,0.03125,0.09375,0,0.46875,0.09375,0.03125,0.09375,0,0.1875],[0,0,0.0625,0.0625,0,0,0,0.03125,0.1875,0.125,0.46875,0]] | ||||||
							
								
								
									
										1
									
								
								server/geo/mat2.json.bak
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								server/geo/mat2.json.bak
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1 @@ | |||||||
|  | [[0,0,0,218,0,0,0,0,0,0,0,0],[0,0,0,106,36,0,0,182,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,3,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,72],[0,0,0,0,0,0,0,0,0,0,0,0]] | ||||||
							
								
								
									
										1
									
								
								server/geo/mat3.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								server/geo/mat3.json
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1 @@ | |||||||
|  | [[0,0.05555555555555555,0.08333333333333333,0,0.16666666666666666,0.027777777777777776,0.5,0,0.05555555555555555,0.027777777777777776,0],[0,0,0.05555555555555555,0.08333333333333333,0.08333333333333333,0,0.08333333333333333,0,0.027777777777777776,0.027777777777777776,0],[0,0.05555555555555555,0,0.1111111111111111,0.027777777777777776,0,0.027777777777777776,0,0.027777777777777776,0.027777777777777776,0],[0,0.05555555555555555,0.027777777777777776,0,0.1111111111111111,0,0.027777777777777776,0.027777777777777776,0.08333333333333333,0.027777777777777776,0],[0,0.08333333333333333,0,0.1111111111111111,0,0.3888888888888889,0,0.16666666666666666,0.05555555555555555,0.027777777777777776,0.05555555555555555],[0,0,0,0.027777777777777776,0.25,0,0.1111111111111111,0.1388888888888889,0,0,0.2222222222222222],[0,0.05555555555555555,0.08333333333333333,0.1388888888888889,0,0.027777777777777776,0,0.027777777777777776,0.08333333333333333,0.16666666666666666,0.3055555555555556],[0,0.027777777777777776,0.027777777777777776,0,0.027777777777777776,0.1388888888888889,0.05555555555555555,0,0.08333333333333333,0.05555555555555555,0.027777777777777776],[0,0,0,0,0.08333333333333333,0.05555555555555555,0.1111111111111111,0.05555555555555555,0,0.1111111111111111,0.1111111111111111],[0,0.027777777777777776,0.027777777777777776,0.027777777777777776,0.16666666666666666,0,0.05555555555555555,0.027777777777777776,0.1388888888888889,0,0],[0,0,0.027777777777777776,0,0.1388888888888889,0.16666666666666666,0.1111111111111111,0.08333333333333333,0.1111111111111111,0,0]] | ||||||
							
								
								
									
										1
									
								
								server/geo/mat3.json.bak
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								server/geo/mat3.json.bak
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1 @@ | |||||||
|  | [[0,0,0,0,0,0,70,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,12,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0],[0,0,0,10,0,0,0,0,0,0,0],[0,0,0,0,0,83,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,64],[0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,36,0,0,0,16,0,0]] | ||||||
							
								
								
									
										1
									
								
								server/geo/matt1.json.bak
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								server/geo/matt1.json.bak
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1 @@ | |||||||
|  | [[0,0.1,0.3,0,0,0,0,0,0,0.1,0.4,0.5],[0,0,0.1,0.2,0.2,0,0,0.2,0,0.1,0.1,0],[0,0.1,0,0.4,0,0,0.1,0.3,0.1,0.1,0.1,0],[0,0.1,0,0,0.4,0.1,0.2,0,0,0.1,0,0.2],[0,0,0,0.2,0,0.5,0.1,0,0,0.1,0,0],[0,0,0,0,0.3,0,0.1,0,0.3,0.1,0.1,0.1],[0,0.3,0.1,0,0,0,0,0.1,0.4,0.1,0,0],[0,0.1,0.1,0,0.1,0,0.4,0,0,0,0.1,0.2],[0,0,0.3,0,0,0.3,0.1,0,0,0.3,0.1,0],[0,0.1,0.1,0,0,0,0.1,0.4,0,0,0.2,0.1],[0,0,0.2,0.2,0.1,0.1,0,0.1,0.3,0,0,0],[0,0.2,0.2,0.3,0,0,0,0.1,0,0.1,0.1,0]] | ||||||
							
								
								
									
										1
									
								
								server/geo/matt2.json.bak
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								server/geo/matt2.json.bak
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1 @@ | |||||||
|  | [[0,0,0.1,0.5,0.3,0,0.1,0.1,0,0.2,0,0],[0,0,0.2,0.1,0.1,0,0.3,0.2,0,0.2,0,0],[0,0.2,0,0.1,0.2,0,0,0,0,0,0,0.1],[0,0.1,0.1,0,0.4,0,0,0.2,0,0.3,0,0],[0,0.2,0,0,0,0.1,0,0,0.4,0.1,0.2,0.1],[0,0.1,0,0,0,0,0.1,0,0.4,0,0,0.2],[0,0.1,0,0,0.1,0.4,0,0.1,0.1,0,0.3,0.1],[0,0,0,0.3,0,0.1,0.2,0,0,0,0,0],[0,0.2,0.1,0.1,0,0.2,0.2,0,0,0,0,0.2],[0,0.3,0,0.1,0.1,0,0.1,0,0,0,0.1,0],[0,0.1,0.1,0,0,0,0.3,0.1,0,0.1,0,0.2],[0,0,0.1,0.1,0,0,0,0,0.1,0,0.5,0]] | ||||||
							
								
								
									
										1
									
								
								server/geo/matt3.json.bak
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								server/geo/matt3.json.bak
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1 @@ | |||||||
|  | [[0,0.16666666666666666,0.16666666666666666,0,0.16666666666666666,0,0.5,0,0,0,0],[0,0,0.16666666666666666,0.16666666666666666,0,0,0,0,0.16666666666666666,0.16666666666666666,0],[0,0.16666666666666666,0,0.16666666666666666,0.16666666666666666,0,0.16666666666666666,0,0,0,0],[0,0.16666666666666666,0.16666666666666666,0,0,0,0,0.16666666666666666,0.16666666666666666,0.16666666666666666,0],[0,0,0,0.3333333333333333,0,0.16666666666666666,0,0.16666666666666666,0.16666666666666666,0,0],[0,0,0,0.16666666666666666,0.5,0,0,0,0,0,0.3333333333333333],[0,0,0.16666666666666666,0.16666666666666666,0,0,0,0,0,0,0.5],[0,0,0,0,0,0.3333333333333333,0.16666666666666666,0,0.16666666666666666,0,0],[0,0,0,0,0,0.16666666666666666,0.16666666666666666,0,0,0.5,0.16666666666666666],[0,0.16666666666666666,0,0.16666666666666666,0.16666666666666666,0,0,0,0.3333333333333333,0,0],[0,0,0,0,0,0.3333333333333333,0.16666666666666666,0.3333333333333333,0.16666666666666666,0,0]] | ||||||
							
								
								
									
										141
									
								
								server/lib/Matrix.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										141
									
								
								server/lib/Matrix.js
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,141 @@ | |||||||
|  | "use strict"; | ||||||
|  | 
 | ||||||
|  | let fs = require('fs'); | ||||||
|  | 
 | ||||||
|  | class OutOfBoundError extends Error { | ||||||
|  |     constructor(matrix, i, j) { | ||||||
|  |         super(`Index array out of bound (${i},${j}) exceeds (${matrix.lines}, ${matrix.columns}).`); | ||||||
|  |         this.name = 'OutOfBoundError'; | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | class Matrix { | ||||||
|  |     constructor(lines, columns) { | ||||||
|  |         // this.lines = lines;
 | ||||||
|  |         // this.columns = columns;
 | ||||||
|  | 
 | ||||||
|  |         this.data = []; | ||||||
|  | 
 | ||||||
|  |         for (let i = 0; i < lines; i++) { | ||||||
|  |             let line = []; | ||||||
|  |             for (let j = 0; j < columns; j++) { | ||||||
|  |                 line.push(0); | ||||||
|  |             } | ||||||
|  |             this.data.push(line); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     get(i, j) { | ||||||
|  |         // if (i >= this.lines || j >= this.columns || i < 0 || j < 0 ) {
 | ||||||
|  |         //     this._throwOutOfBoundError(i,j);
 | ||||||
|  |         // }
 | ||||||
|  |         return this.data[i][j]; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     set(i, j, value) { | ||||||
|  |         // if (i >= this.lines || j >= this.columns || i < 0 || j < 0 ) {
 | ||||||
|  |         //     this._throwOutOfBoundError(i,j);
 | ||||||
|  |         // }
 | ||||||
|  |         return this.data[i][j] = value; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     print(type) { | ||||||
|  |         if (type === 'matlab') { | ||||||
|  | 
 | ||||||
|  |             let maxColumns = 0; | ||||||
|  | 
 | ||||||
|  |             for (let i = 0; i < this.data.length; i++) { | ||||||
|  |                 if (this.data[i].length > maxColumns) | ||||||
|  |                     maxColumns = this.data[i].length; | ||||||
|  |             } | ||||||
|  | 
 | ||||||
|  |             let str = '['; | ||||||
|  | 
 | ||||||
|  |             for (let i = 0; i < this.data.length; i++) { | ||||||
|  |                 str += '['; | ||||||
|  |                 for (let j = 0; j < maxColumns; j++) { | ||||||
|  |                     str += | ||||||
|  |                         (this.data[i][j] !== undefined ? this.data[i][j] : 0) + | ||||||
|  |                         (j === maxColumns - 1 ? ']' : ','); | ||||||
|  |                 } | ||||||
|  |                 str += (i === this.data.length - 1 ? ']' : ';'); | ||||||
|  |             } | ||||||
|  | 
 | ||||||
|  |             console.log(str + ';'); | ||||||
|  | 
 | ||||||
|  |             return; | ||||||
|  |         } | ||||||
|  |         // for (let i = 0; i < this.lines; i++) {
 | ||||||
|  |         //     for (let j = 0; j < this.columns; j++) {
 | ||||||
|  |         //         process.stdout.write(this.get(i,j) + ' ');
 | ||||||
|  |         //     }
 | ||||||
|  |         //     process.stdout.write('\n');
 | ||||||
|  |         // }
 | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     toArray() { | ||||||
|  |         return this.data; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     fromArray(array) { | ||||||
|  | 
 | ||||||
|  |         // if (! array instanceof Array)
 | ||||||
|  |         //     throw new TypeError('Parameter is not an array');
 | ||||||
|  | 
 | ||||||
|  |         // let columns = null;
 | ||||||
|  |         // for (let line of array) {
 | ||||||
|  |         //     if (! line instanceof Array)
 | ||||||
|  |         //         throw new TypeError('Parameter is not an array of array');
 | ||||||
|  | 
 | ||||||
|  |         //     if (columns === null) {
 | ||||||
|  |         //         columns = line.length;
 | ||||||
|  |         //     } else if (columns !== line.length) {
 | ||||||
|  |         //         throw new Typerror('The lines have not the same size');
 | ||||||
|  |         //     }
 | ||||||
|  | 
 | ||||||
|  |         // }
 | ||||||
|  | 
 | ||||||
|  |         this.data = array; | ||||||
|  | 
 | ||||||
|  |         // this.columns = columns;
 | ||||||
|  |         // this.lines = array.length;
 | ||||||
|  | 
 | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     saveToFile(path, type) { | ||||||
|  |         if (type === 'matlab') { | ||||||
|  |             fs.writeFileSync(path, JSON.stringify(this.data).replace('],', '];')); | ||||||
|  |             return; | ||||||
|  |         } | ||||||
|  |         fs.writeFileSync(path, JSON.stringify(this.data)); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     loadFromFile(path) { | ||||||
|  |         this.fromArray(JSON.parse(fs.readFileSync(path, 'utf-8'))); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     _throwOutOfBoundError(i,j) { | ||||||
|  |         throw new OutOfBoundError(this, i, j); | ||||||
|  |     } | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | module.exports = Matrix; | ||||||
|  | 
 | ||||||
|  | function main() { | ||||||
|  | 
 | ||||||
|  |     var m = new Matrix(2,3); | ||||||
|  |     m.set(1,2,3); | ||||||
|  |     m.print(); | ||||||
|  |     m.saveToFile('tests/myMatrix.json'); | ||||||
|  | 
 | ||||||
|  |     console.log('----'); | ||||||
|  | 
 | ||||||
|  |     var m2 = new Matrix(); | ||||||
|  |     m2.loadFromFile('tests/myMatrix.json'); | ||||||
|  |     m2.print(); | ||||||
|  | 
 | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | if (require.main === module) { | ||||||
|  |     main(); | ||||||
|  | } | ||||||
							
								
								
									
										101
									
								
								server/lib/Serial.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										101
									
								
								server/lib/Serial.js
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,101 @@ | |||||||
|  | "use strict"; | ||||||
|  | 
 | ||||||
|  | let fs = require('fs'); | ||||||
|  | let THREE = require('three'); | ||||||
|  | let L3D = require('../static/js/l3d.min.js'); | ||||||
|  | 
 | ||||||
|  | function serialize(object) { | ||||||
|  | 
 | ||||||
|  |     let data = {}; | ||||||
|  | 
 | ||||||
|  |     data.vertices = object.children[0].geometry.vertices; | ||||||
|  | 
 | ||||||
|  |     data.children = []; | ||||||
|  | 
 | ||||||
|  |     for (let objChild of object.children) { | ||||||
|  | 
 | ||||||
|  |         let newChild = {}; | ||||||
|  | 
 | ||||||
|  |         // newChild.faceVertexUvs = objChild.geometry.faceVertexUvs;
 | ||||||
|  |         newChild.faces = objChild.geometry.faces; | ||||||
|  | 
 | ||||||
|  |         data.children.push(newChild); | ||||||
|  | 
 | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     return JSON.stringify(data); | ||||||
|  | 
 | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | function deserialize(str) { | ||||||
|  | 
 | ||||||
|  |     let parse = JSON.parse(str); | ||||||
|  |     let vertices = []; | ||||||
|  |     let material = new THREE.MeshBasicMaterial(); | ||||||
|  | 
 | ||||||
|  |     let ret = new THREE.Object3D(); | ||||||
|  | 
 | ||||||
|  |     for (let vertex of parse.vertices) { | ||||||
|  | 
 | ||||||
|  |         vertices.push(new THREE.Vector3(vertex.x, vertex.y, vertex.z)); | ||||||
|  | 
 | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     for (let parseChild of parse.children) { | ||||||
|  | 
 | ||||||
|  |         let geometry = new THREE.Geometry(); | ||||||
|  |         geometry.vertices = vertices; | ||||||
|  | 
 | ||||||
|  |         for (let face of parseChild.faces) { | ||||||
|  | 
 | ||||||
|  |             geometry.faces.push(new THREE.Face3(face.a, face.b, face.c)); | ||||||
|  | 
 | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         geometry.computeBoundingSphere(); | ||||||
|  |         let newChild = new THREE.Mesh(geometry, material); | ||||||
|  | 
 | ||||||
|  |         ret.children.push(newChild); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     return ret; | ||||||
|  | 
 | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | function serializeToFile(path, obj) { | ||||||
|  | 
 | ||||||
|  |     fs.writeFileSync(path, serialize(obj)); | ||||||
|  | 
 | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | function loadFromFile(path) { | ||||||
|  | 
 | ||||||
|  |     return deserialize(fs.readFileSync(path, 'utf-8')); | ||||||
|  | 
 | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | module.exports.serialize = serialize; | ||||||
|  | module.exports.deserialize = deserialize; | ||||||
|  | module.exports.serializeToFile = serializeToFile; | ||||||
|  | module.exports.loadFromFile = loadFromFile; | ||||||
|  | 
 | ||||||
|  | function main() { | ||||||
|  | 
 | ||||||
|  |     let loader = new L3D.ProgressiveLoader( | ||||||
|  |         '/static/data/castle/princess peaches castle (outside).obj', | ||||||
|  |         new THREE.Object3D(), | ||||||
|  |         null | ||||||
|  |     ); | ||||||
|  | 
 | ||||||
|  |     loader.load(function() { | ||||||
|  |         console.log("Loaded"); | ||||||
|  |         // console.log(loader.obj.children[0].geometry);
 | ||||||
|  |         deserialize(serialize(loader.obj)); | ||||||
|  |     }); | ||||||
|  | 
 | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | if (require.main === module) { | ||||||
|  |     main(); | ||||||
|  | } | ||||||
							
								
								
									
										1
									
								
								server/lib/mat1.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								server/lib/mat1.json
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1 @@ | |||||||
|  | [[0,0.07894736842105263,0.18421052631578946,0,0.02631578947368421,0.02631578947368421,0,0.02631578947368421,0,0.13157894736842105,0.2894736842105263,0.2631578947368421],[0,0,0.10526315789473684,0.15789473684210525,0.18421052631578946,0.02631578947368421,0,0.07894736842105263,0.02631578947368421,0.05263157894736842,0.05263157894736842,0.05263157894736842],[0,0.02631578947368421,0,0.5,0.02631578947368421,0.02631578947368421,0.02631578947368421,0.07894736842105263,0.02631578947368421,0.07894736842105263,0.07894736842105263,0.05263157894736842],[0,0.05263157894736842,0.07894736842105263,0,0.4473684210526316,0.02631578947368421,0.13157894736842105,0.02631578947368421,0,0.07894736842105263,0,0.13157894736842105],[0,0,0.02631578947368421,0.15789473684210525,0,0.3157894736842105,0.21052631578947367,0.05263157894736842,0,0.07894736842105263,0,0.10526315789473684],[0,0.10526315789473684,0,0.05263157894736842,0.13157894736842105,0,0.13157894736842105,0.05263157894736842,0.15789473684210525,0.02631578947368421,0.02631578947368421,0.02631578947368421],[0,0.15789473684210525,0.10526315789473684,0,0,0.10526315789473684,0,0.05263157894736842,0.21052631578947367,0.13157894736842105,0,0],[0,0.07894736842105263,0.05263157894736842,0.02631578947368421,0.07894736842105263,0.07894736842105263,0.10526315789473684,0,0.07894736842105263,0.02631578947368421,0.02631578947368421,0.05263157894736842],[0,0,0.10526315789473684,0.02631578947368421,0.02631578947368421,0.18421052631578946,0.15789473684210525,0,0,0.21052631578947367,0.07894736842105263,0.07894736842105263],[0,0.07894736842105263,0.10526315789473684,0.02631578947368421,0,0,0.07894736842105263,0.15789473684210525,0.13157894736842105,0,0.21052631578947367,0.07894736842105263],[0,0.02631578947368421,0.10526315789473684,0.07894736842105263,0.05263157894736842,0.02631578947368421,0,0.02631578947368421,0.23684210526315788,0.07894736842105263,0,0.10526315789473684],[0,0.18421052631578946,0.13157894736842105,0.13157894736842105,0.10526315789473684,0.02631578947368421,0,0.13157894736842105,0.02631578947368421,0.05263157894736842,0.07894736842105263,0],] | ||||||
							
								
								
									
										1
									
								
								server/lib/mat2.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								server/lib/mat2.json
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1 @@ | |||||||
|  | [[0,0.03125,0.09375,0.5,0.21875,0.03125,0.09375,0.1875,0,0.125,0.15625,0],[0,0,0.15625,0.0625,0.21875,0.0625,0.15625,0.09375,0,0.0625,0.03125,0],[0,0.21875,0,0.0625,0.0625,0,0,0,0,0,0.03125,0.0625],[0,0.09375,0.0625,0,0.25,0.03125,0.1875,0.1875,0.03125,0.25,0,0.03125],[0,0.125,0.0625,0.125,0,0.03125,0,0,0.1875,0.09375,0.15625,0.0625],[0,0.03125,0,0,0,0,0.21875,0,0.25,0,0,0.1875],[0,0.03125,0.0625,0.0625,0.03125,0.34375,0,0.125,0.34375,0,0.40625,0.0625],[0,0.125,0,0.15625,0,0.0625,0.25,0,0.03125,0.09375,0,0],[0,0.125,0.03125,0.0625,0,0.1875,0.15625,0.03125,0,0.0625,0,0.25],[0,0.1875,0,0.125,0.125,0,0.0625,0.03125,0,0,0.03125,0.125],[0,0.0625,0.0625,0.03125,0.09375,0,0.46875,0.09375,0.03125,0.09375,0,0.1875],[0,0,0.0625,0.0625,0,0,0,0.03125,0.1875,0.125,0.46875,0],] | ||||||
							
								
								
									
										1
									
								
								server/lib/mat3.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								server/lib/mat3.json
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1 @@ | |||||||
|  | [[0,0.05555555555555555,0.08333333333333333,0,0.16666666666666666,0.027777777777777776,0.5,0,0.05555555555555555,0.027777777777777776,0],[0,0,0.05555555555555555,0.08333333333333333,0.08333333333333333,0,0.08333333333333333,0,0.027777777777777776,0.027777777777777776,0],[0,0.05555555555555555,0,0.1111111111111111,0.027777777777777776,0,0.027777777777777776,0,0.027777777777777776,0.027777777777777776,0],[0,0.05555555555555555,0.027777777777777776,0,0.1111111111111111,0,0.027777777777777776,0.027777777777777776,0.08333333333333333,0.027777777777777776,0],[0,0.08333333333333333,0,0.1111111111111111,0,0.3888888888888889,0,0.16666666666666666,0.05555555555555555,0.027777777777777776,0.05555555555555555],[0,0,0,0.027777777777777776,0.25,0,0.1111111111111111,0.1388888888888889,0,0,0.2222222222222222],[0,0.05555555555555555,0.08333333333333333,0.1388888888888889,0,0.027777777777777776,0,0.027777777777777776,0.08333333333333333,0.16666666666666666,0.3055555555555556],[0,0.027777777777777776,0.027777777777777776,0,0.027777777777777776,0.1388888888888889,0.05555555555555555,0,0.08333333333333333,0.05555555555555555,0.027777777777777776],[0,0,0,0,0.08333333333333333,0.05555555555555555,0.1111111111111111,0.05555555555555555,0,0.1111111111111111,0.1111111111111111],[0,0.027777777777777776,0.027777777777777776,0.027777777777777776,0.16666666666666666,0,0.05555555555555555,0.027777777777777776,0.1388888888888889,0,0],[0,0,0.027777777777777776,0,0.1388888888888889,0.16666666666666666,0.1111111111111111,0.08333333333333333,0.1111111111111111,0,0],] | ||||||
							
								
								
									
										1
									
								
								server/lib/matt1.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								server/lib/matt1.json
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1 @@ | |||||||
|  | [[0,0.1,0.3,0,0,0,0,0,0,0.1,0.4,0.5],[0,0,0.1,0.2,0.2,0,0,0.2,0,0.1,0.1,0],[0,0.1,0,0.4,0,0,0.1,0.3,0.1,0.1,0.1,0],[0,0.1,0,0,0.4,0.1,0.2,0,0,0.1,0,0.2],[0,0,0,0.2,0,0.5,0.1,0,0,0.1,0,0],[0,0,0,0,0.3,0,0.1,0,0.3,0.1,0.1,0.1],[0,0.3,0.1,0,0,0,0,0.1,0.4,0.1,0,0],[0,0.1,0.1,0,0.1,0,0.4,0,0,0,0.1,0.2],[0,0,0.3,0,0,0.3,0.1,0,0,0.3,0.1,0],[0,0.1,0.1,0,0,0,0.1,0.4,0,0,0.2,0.1],[0,0,0.2,0.2,0.1,0.1,0,0.1,0.3,0,0,0],[0,0.2,0.2,0.3,0,0,0,0.1,0,0.1,0.1,0],] | ||||||
							
								
								
									
										1
									
								
								server/lib/matt2.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								server/lib/matt2.json
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1 @@ | |||||||
|  | [[0,0,0.1,0.5,0.3,0,0.1,0.1,0,0.2,0,0],[0,0,0.2,0.1,0.1,0,0.3,0.2,0,0.2,0,0],[0,0.2,0,0.1,0.2,0,0,0,0,0,0,0.1],[0,0.1,0.1,0,0.4,0,0,0.2,0,0.3,0,0],[0,0.2,0,0,0,0.1,0,0,0.4,0.1,0.2,0.1],[0,0.1,0,0,0,0,0.1,0,0.4,0,0,0.2],[0,0.1,0,0,0.1,0.4,0,0.1,0.1,0,0.3,0.1],[0,0,0,0.3,0,0.1,0.2,0,0,0,0,0],[0,0.2,0.1,0.1,0,0.2,0.2,0,0,0,0,0.2],[0,0.3,0,0.1,0.1,0,0.1,0,0,0,0.1,0],[0,0.1,0.1,0,0,0,0.3,0.1,0,0.1,0,0.2],[0,0,0.1,0.1,0,0,0,0,0.1,0,0.5,0],] | ||||||
							
								
								
									
										1
									
								
								server/lib/matt3.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								server/lib/matt3.json
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1 @@ | |||||||
|  | [[0,0.16666666666666666,0.16666666666666666,0,0.16666666666666666,0,0.5,0,0,0,0],[0,0,0.16666666666666666,0.16666666666666666,0,0,0,0,0.16666666666666666,0.16666666666666666,0],[0,0.16666666666666666,0,0.16666666666666666,0.16666666666666666,0,0.16666666666666666,0,0,0,0],[0,0.16666666666666666,0.16666666666666666,0,0,0,0,0.16666666666666666,0.16666666666666666,0.16666666666666666,0],[0,0,0,0.3333333333333333,0,0.16666666666666666,0,0.16666666666666666,0.16666666666666666,0,0],[0,0,0,0.16666666666666666,0.5,0,0,0,0,0,0.3333333333333333],[0,0,0.16666666666666666,0.16666666666666666,0,0,0,0,0,0,0.5],[0,0,0,0,0,0.3333333333333333,0.16666666666666666,0,0.16666666666666666,0,0],[0,0,0,0,0,0.16666666666666666,0.16666666666666666,0,0,0.5,0.16666666666666666],[0,0.16666666666666666,0,0.16666666666666666,0.16666666666666666,0,0,0,0.3333333333333333,0,0],[0,0,0,0,0,0.3333333333333333,0.16666666666666666,0.3333333333333333,0.16666666666666666,0,0],] | ||||||
							
								
								
									
										1
									
								
								server/lib/tests/myMatrix.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								server/lib/tests/myMatrix.json
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1 @@ | |||||||
|  | [[0,0,0],[0,0,3]] | ||||||
Some files were not shown because too many files have changed in this diff Show More
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user