@@ -18,14 +18,14 @@ Pts.quickStart( "#pt", "#123" );
1818
1919 // A simple function to repel the points if they are too close
2020 let repel = ( size ) => {
21+ let sizeSq = size * size ;
2122 for ( let k = 0 , len = de . length ; k < len ; k ++ ) {
22- for ( let i = 0 , len = de . length ; i < len ; i ++ ) {
23- if ( i !== k ) {
24- let d = de [ k ] . $subtract ( de [ i ] ) ;
25- if ( d . magnitudeSq ( ) < size * size ) {
26- de [ k ] . subtract ( d . $divide ( - size / 3 ) ) ;
27- de [ i ] . subtract ( d . $divide ( size / 3 ) ) ;
28- }
23+ for ( let i = k + 1 ; i < len ; i ++ ) {
24+ let d = de [ k ] . $subtract ( de [ i ] ) ;
25+ if ( d . magnitudeSq ( ) < sizeSq ) {
26+ let push = d . $divide ( size / 6 ) ;
27+ de [ k ] . add ( push ) ;
28+ de [ i ] . subtract ( push ) ;
2929 }
3030 }
3131 }
@@ -58,7 +58,7 @@ Pts.quickStart( "#pt", "#123" );
5858
5959 // Guides: Show the neighbor cells of the point nearest to pointer
6060 let nearIndex = Polygon . nearestPt ( de , space . pointer ) ;
61- de . neighbors ( nearIndex , true ) . map ( ( n ) => {
61+ de . neighbors ( nearIndex , true ) . forEach ( ( n ) => {
6262 form . strokeOnly ( "rgba(255,255,0, .9)" , 3 ) . polygon ( n . triangle ) ;
6363 form . strokeOnly ( "rgba(255,255,0,.3)" , 1 ) . circle ( n . circle ) ;
6464 form . fillOnly ( "#fe6" , 1 ) . point ( n . circle [ 0 ] , 2 ) ;
0 commit comments