| 
					
				 | 
			
			
				@@ -627,37 +627,44 @@ export default { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     setPaperContour(){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      let getExentricPoint = (b,a,c) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        // get ac vecteur 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        const ac  = { x: c.x - a.x, y: c.y - a.y } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        // get ac longueur ac 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        const lac = Math.sqrt(Math.pow(ac.x, 2) + Math.pow(ac.y, 2)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        // get ab vecteur 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        const ab  = { x: b.x - a.x, y: b.y - a.y } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        // get ab longeur 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        const lab = Math.sqrt(Math.pow(ab.x, 2) + Math.pow(ab.y, 2)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        // get unit vecteur ab 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        const vab = { x: ab.x/lab, y: ab.y/lab } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        // get an vecteur 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        const an  = { x: vab.x*lac, y: vab.y*lac } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        // get n point 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        const n   = { x: a.x + an.x, y: a.y+an.y } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        // get nc midle point 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        const m   = { x: (c.x + n.x)/2, y: (c.y + n.y)/2 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        // get ma vecteur 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        const ma  = { x:a.x - m.x, y: a.y - m.y } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        // get longeur m->a 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        const lma = Math.sqrt(Math.pow(ma.x, 2)+Math.pow(ma.y, 2)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        // get ma vecteur unitaire 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        const vma = { x: ma.x/lma, y: ma.y / lma } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        const pad = 4; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        return [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      let getPaddedRoundedSegments = (b,a,c) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        const ac  = { x: c.x - a.x, y: c.y - a.y } // get ac vecteur 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        const lac = Math.sqrt(Math.pow(ac.x, 2) + Math.pow(ac.y, 2)); // get ac longueur ac 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        const ab  = { x: b.x - a.x, y: b.y - a.y } // get ab vecteur 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        const lab = Math.sqrt(Math.pow(ab.x, 2) + Math.pow(ab.y, 2)); // get ab longeur 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        const vab = { x: ab.x/lab, y: ab.y/lab } // get unit vecteur ab 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        const an  = { x: vab.x*lac, y: vab.y*lac } // get an vecteur 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        const n   = { x: a.x + an.x, y: a.y+an.y } // get n point 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        const m   = { x: (c.x + n.x)/2, y: (c.y + n.y)/2 } // get nc midle point 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        const ma  = { x:a.x - m.x, y: a.y - m.y } // get ma vecteur 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        const lma = Math.sqrt(Math.pow(ma.x, 2)+Math.pow(ma.y, 2)) // get longeur m->a 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        const vma = { x: ma.x/lma, y: ma.y / lma } // get ma vecteur unitaire 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        const pad = 4; // exterior padding 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // the final padded point 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        const pa  = [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           this.pos.x+(a.x+vma.x*pad)*this.scale, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           this.pos.y+(a.y+vma.y*pad)*this.scale 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         ] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+         
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // handles 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        const delta = 0.25; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // handle IN 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        const hli   = Math.abs(lab)*delta;            // handle longeur 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        const vnai  = { x: -vma.y, y: vma.x }     // get the ma normal unit vector IN 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        const hai   = [ vnai.x*hli, vnai.y*hli ]; // get the handleIn point 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // handle OUT 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        const hlo   = Math.abs(lac)*delta;            // handle longeur 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        const vnao  = { x: vma.y, y: -vma.x }     // get the ma normal vector Out 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        const hao   = [ vnao.x*hlo, vnao.y*hlo ]; // get the handleOut point 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return new paper.Segment({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          point: pa, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          handleIn: hai, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          handleOut: hao 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      const first_point = getExentricPoint( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      const first_point = getPaddedRoundedSegments( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         this.salientPoints[this.salientPoints.length-1].pos, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         this.salientPoints[0].pos, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         this.salientPoints[1].pos 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -665,13 +672,13 @@ export default { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       let segments = [first_point];  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       for (let j = 1; j < this.salientPoints.length-1; j++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         // segments.push([this.pos.x+this.salientPoints[j].pos.x*this.scale*gap, this.pos.y+this.salientPoints[j].pos.y*this.scale*gap]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          segments.push(getExentricPoint( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          segments.push(getPaddedRoundedSegments( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             this.salientPoints[j-1].pos, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             this.salientPoints[j].pos, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             this.salientPoints[j+1].pos, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           )) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      const last_point = getExentricPoint( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      const last_point = getPaddedRoundedSegments( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         this.salientPoints[this.salientPoints.length-2].pos, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         this.salientPoints[this.salientPoints.length-1].pos, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         this.salientPoints[0].pos 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -679,15 +686,23 @@ export default { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       segments.push(last_point) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       segments.push(first_point) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      return new paper.Path({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      const contrs = new paper.Path({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         name: 'contours', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         segments: segments, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         fillColor: 'rgba(255,255,255,0.8)', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // selected: true, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         // strokeColor: '#000', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         // strokeWidth: 1, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         pivot: new paper.Point(this.pos), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         cid: this.id 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      // contrs.segments[0].selected = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      // contrs.segments[1].selected = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      return contrs; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     setPaperEntites(){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       let g = new paper.Group({ 
			 |