@@ -8,28 +8,16 @@ export default function(circles) {
8
8
export function packEncloseRandom ( circles , random ) {
9
9
var i = 0 , n = ( circles = shuffle ( Array . from ( circles ) , random ) ) . length , B = [ ] , p , e ;
10
10
11
- var minX = Number . MAX_VALUE , minY = Number . MAX_VALUE ;
12
- var maxX = Number . MIN_VALUE , maxY = Number . MIN_VALUE ;
13
- for ( var k = 0 ; k < n ; ++ k ) {
14
- var c = circles [ k ] ;
15
- minX = Math . min ( minX , c . x - c . r ) ;
16
- minY = Math . min ( minY , c . y - c . r ) ;
17
- maxX = Math . max ( maxX , c . x + c . r ) ;
18
- maxY = Math . max ( maxY , c . y + c . r ) ;
19
- }
20
-
21
- var cx = ( minX + maxX ) / 2 , cy = ( minY + maxY ) / 2 ;
22
-
23
11
while ( i < n ) {
24
12
p = circles [ i ] ;
25
13
if ( e && enclosesWeak ( e , p ) ) ++ i ;
26
- else e = encloseBasis ( B = extendBasis ( B , p , cx , cy ) , cx , cy ) , i = 0 ;
14
+ else e = encloseBasis ( B = extendBasis ( B , p ) ) , i = 0 ;
27
15
}
28
16
29
17
return e ;
30
18
}
31
19
32
- function extendBasis ( B , p , cx , cy ) {
20
+ function extendBasis ( B , p ) {
33
21
var i , j ;
34
22
35
23
if ( enclosesWeakAll ( p , B ) ) return [ p ] ;
@@ -48,7 +36,7 @@ function extendBasis(B, p, cx, cy) {
48
36
if ( enclosesNot ( encloseBasis2 ( B [ i ] , B [ j ] ) , p )
49
37
&& enclosesNot ( encloseBasis2 ( B [ i ] , p ) , B [ j ] )
50
38
&& enclosesNot ( encloseBasis2 ( B [ j ] , p ) , B [ i ] )
51
- && enclosesWeakAll ( encloseBasis3 ( B [ i ] , B [ j ] , p , cx , cy ) , B ) ) {
39
+ && enclosesWeakAll ( encloseBasis3 ( B [ i ] , B [ j ] , p ) , B ) ) {
52
40
return [ B [ i ] , B [ j ] , p ] ;
53
41
}
54
42
}
@@ -77,11 +65,11 @@ function enclosesWeakAll(a, B) {
77
65
return true ;
78
66
}
79
67
80
- function encloseBasis ( B , cx , cy ) {
68
+ function encloseBasis ( B ) {
81
69
switch ( B . length ) {
82
70
case 1 : return encloseBasis1 ( B [ 0 ] ) ;
83
71
case 2 : return encloseBasis2 ( B [ 0 ] , B [ 1 ] ) ;
84
- case 3 : return encloseBasis3 ( B [ 0 ] , B [ 1 ] , B [ 2 ] , cx , cy ) ;
72
+ case 3 : return encloseBasis3 ( B [ 0 ] , B [ 1 ] , B [ 2 ] ) ;
85
73
}
86
74
}
87
75
@@ -105,7 +93,8 @@ function encloseBasis2(a, b) {
105
93
} ;
106
94
}
107
95
108
- function encloseBasis3 ( a , b , c , cx , cy ) {
96
+ function encloseBasis3 ( a , b , c ) {
97
+ var cx = ( a . x + b . x + c . x ) / 3 , cy = ( a . y + b . y + c . y ) / 3 ;
109
98
var x1 = a . x - cx , y1 = a . y - cy , r1 = a . r ,
110
99
x2 = b . x - cx , y2 = b . y - cy , r2 = b . r ,
111
100
x3 = c . x - cx , y3 = c . y - cy , r3 = c . r ,
0 commit comments