U.S. spelling for consistency.
This commit is contained in:
Родитель
3d3ac3b147
Коммит
a8bc56d914
40
d3.ai.js
40
d3.ai.js
|
@ -3,8 +3,8 @@
|
|||
d3.ai.boid = function() {
|
||||
var position = [0, 0],
|
||||
velocity = [0, 0],
|
||||
gravityCentre = null,
|
||||
neighbourRadius = 50,
|
||||
gravityCenter = null,
|
||||
neighborRadius = 50,
|
||||
maxForce = .1,
|
||||
maxSpeed = 1,
|
||||
separationWeight = 2,
|
||||
|
@ -12,13 +12,13 @@ d3.ai.boid = function() {
|
|||
cohesionWeight = 1,
|
||||
desiredSeparation = 10;
|
||||
|
||||
function boid(neighbours) {
|
||||
var accel = flock(neighbours);
|
||||
function boid(neighbors) {
|
||||
var accel = flock(neighbors);
|
||||
d3_ai_boidWrap(position);
|
||||
velocity[0] += accel[0];
|
||||
velocity[1] += accel[1];
|
||||
if (gravityCentre) {
|
||||
var g = d3_ai_boidGravity(gravityCentre, position, neighbourRadius);
|
||||
if (gravityCenter) {
|
||||
var g = d3_ai_boidGravity(gravityCenter, position, neighborRadius);
|
||||
velocity[0] += g[0];
|
||||
velocity[1] += g[1];
|
||||
}
|
||||
|
@ -28,7 +28,7 @@ d3.ai.boid = function() {
|
|||
return position;
|
||||
}
|
||||
|
||||
function flock(neighbours) {
|
||||
function flock(neighbors) {
|
||||
var separation = [0, 0],
|
||||
alignment = [0, 0],
|
||||
cohesion = [0, 0],
|
||||
|
@ -36,9 +36,9 @@ d3.ai.boid = function() {
|
|||
alignmentCount = 0,
|
||||
cohesionCount = 0,
|
||||
i = -1,
|
||||
l = neighbours.length;
|
||||
l = neighbors.length;
|
||||
while (++i < l) {
|
||||
var n = neighbours[i];
|
||||
var n = neighbors[i];
|
||||
if (n === this) continue;
|
||||
var npos = n.position(),
|
||||
d = d3_ai_boidDistance(position, npos);
|
||||
|
@ -49,7 +49,7 @@ d3.ai.boid = function() {
|
|||
separation[1] += tmp[1] / d;
|
||||
separationCount++;
|
||||
}
|
||||
if (d < neighbourRadius) {
|
||||
if (d < neighborRadius) {
|
||||
var nvel = n.velocity();
|
||||
alignment[0] += nvel[0];
|
||||
alignment[1] += nvel[1];
|
||||
|
@ -123,15 +123,15 @@ d3.ai.boid = function() {
|
|||
return boid;
|
||||
}
|
||||
|
||||
boid.gravityCentre = function(x) {
|
||||
if (!arguments.length) return gravityCentre;
|
||||
gravityCentre = x;
|
||||
boid.gravityCenter = function(x) {
|
||||
if (!arguments.length) return gravityCenter;
|
||||
gravityCenter = x;
|
||||
return boid;
|
||||
}
|
||||
|
||||
boid.neighbourRadius = function(x) {
|
||||
if (!arguments.length) return neighbourRadius;
|
||||
neighbourRadius = x;
|
||||
boid.neighborRadius = function(x) {
|
||||
if (!arguments.length) return neighborRadius;
|
||||
neighborRadius = x;
|
||||
return boid;
|
||||
}
|
||||
|
||||
|
@ -190,11 +190,11 @@ function d3_ai_boidWrap(position) {
|
|||
else if (position[1] < 0) position[1] = h;
|
||||
}
|
||||
|
||||
function d3_ai_boidGravity(centre, position, neighbourRadius) {
|
||||
if (centre[0] != null) {
|
||||
var m = d3_ai_boidSubtract(centre.slice(), position),
|
||||
function d3_ai_boidGravity(center, position, neighborRadius) {
|
||||
if (center[0] != null) {
|
||||
var m = d3_ai_boidSubtract(center.slice(), position),
|
||||
d = d3_ai_boidMagnitude(m) - 10;
|
||||
if (d > 0 && d < neighbourRadius * 5) {
|
||||
if (d > 0 && d < neighborRadius * 5) {
|
||||
d3_ai_boidNormalize(m);
|
||||
m[0] /= d;
|
||||
m[1] /= d;
|
||||
|
|
|
@ -1 +1 @@
|
|||
(function(){function g(b,c){f(b)>c&&(a(b),b[0]*=c,b[1]*=c);return b}function f(a){return Math.sqrt(a[0]*a[0]+a[1]*a[1])}function e(a,b){a[0]-=b[0],a[1]-=b[1];return a}function d(a,b){var c=a[0]-b[0],d=a[1]-b[1];c>w/2&&(c=w-c),d>h/2&&(d=h-d);return Math.sqrt(c*c+d*d)}function c(b,c,d){if(b[0]!=null){var g=e(b.slice(),c),h=f(g)-10;if(h>0&&h<d*5){a(g),g[0]/=h,g[1]/=h;return g}}return[0,0]}function b(a){a[0]>w?a[0]=0:a[0]<0&&(a[0]=w),a[1]>h?a[1]=0:a[1]<0&&(a[1]=h)}function a(a){var b=f(a);b>0&&(a[0]/=b,a[1]/=b);return a}d3.ai={},d3.ai.boid=function(){function t(b){var c=e(b,h),d=f(c);if(d>0){a(c);var j=m*(d<100?d/100:1);c[0]*=j,c[1]*=j;var k=e(c,i);g(k,l)}else k=[0,0];return k}function s(b){var c=[0,0],f=[0,0],i=[0,0],j=0,m=0,r=0,s=-1,u=b.length;while(++s<u){var v=b[s];if(v===this)continue;var w=v.position(),x=d(h,w);if(x>0){if(x<q){var y=a(e(h.slice(),w));c[0]+=y[0]/x,c[1]+=y[1]/x,j++}if(x<k){var z=v.velocity();f[0]+=z[0],f[1]+=z[1],m++,i[0]+=w[0],i[1]+=w[1],r++}}}j>0&&(c[0]/=j,c[1]/=j),m>0&&(f[0]/=m,f[1]/=m),g(f,l),r>0?(i[0]/=r,i[1]/=r):i=h.slice(),i=t(i);return[c[0]*n+f[0]*o+i[0]*p,c[1]*n+f[1]*o+i[1]*p]}function r(a){var d=s(a);b(h),i[0]+=d[0],i[1]+=d[1];if(j){var e=c(j,h,k);i[0]+=e[0],i[1]+=e[1]}g(i,m),h[0]+=i[0],h[1]+=i[1];return h}var h=[0,0],i=[0,0],j=null,k=50,l=.1,m=1,n=2,o=1,p=1,q=10;r.position=function(a){if(!arguments.length)return h;h=a;return r},r.velocity=function(a){if(!arguments.length)return i;i=a;return r},r.gravityCentre=function(a){if(!arguments.length)return j;j=a;return r},r.neighbourRadius=function(a){if(!arguments.length)return k;k=a;return r},r.maxForce=function(a){if(!arguments.length)return l;l=a;return r},r.maxSpeed=function(a){if(!arguments.length)return m;m=a;return r},r.separationWeight=function(a){if(!arguments.length)return n;n=a;return r},r.alignmentWeight=function(a){if(!arguments.length)return o;o=a;return r},r.cohesionWeight=function(a){if(!arguments.length)return p;p=a;return r},r.desiredSeparation=function(a){if(!arguments.length)return q;q=a;return r};return r}})()
|
||||
(function(){function g(b,c){f(b)>c&&(a(b),b[0]*=c,b[1]*=c);return b}function f(a){return Math.sqrt(a[0]*a[0]+a[1]*a[1])}function e(a,b){a[0]-=b[0],a[1]-=b[1];return a}function d(a,b){var c=a[0]-b[0],d=a[1]-b[1];c>w/2&&(c=w-c),d>h/2&&(d=h-d);return Math.sqrt(c*c+d*d)}function c(b,c,d){if(b[0]!=null){var g=e(b.slice(),c),h=f(g)-10;if(h>0&&h<d*5){a(g),g[0]/=h,g[1]/=h;return g}}return[0,0]}function b(a){a[0]>w?a[0]=0:a[0]<0&&(a[0]=w),a[1]>h?a[1]=0:a[1]<0&&(a[1]=h)}function a(a){var b=f(a);b>0&&(a[0]/=b,a[1]/=b);return a}d3.ai={},d3.ai.boid=function(){function t(b){var c=e(b,h),d=f(c);if(d>0){a(c);var j=m*(d<100?d/100:1);c[0]*=j,c[1]*=j;var k=e(c,i);g(k,l)}else k=[0,0];return k}function s(b){var c=[0,0],f=[0,0],i=[0,0],j=0,m=0,r=0,s=-1,u=b.length;while(++s<u){var v=b[s];if(v===this)continue;var w=v.position(),x=d(h,w);if(x>0){if(x<q){var y=a(e(h.slice(),w));c[0]+=y[0]/x,c[1]+=y[1]/x,j++}if(x<k){var z=v.velocity();f[0]+=z[0],f[1]+=z[1],m++,i[0]+=w[0],i[1]+=w[1],r++}}}j>0&&(c[0]/=j,c[1]/=j),m>0&&(f[0]/=m,f[1]/=m),g(f,l),r>0?(i[0]/=r,i[1]/=r):i=h.slice(),i=t(i);return[c[0]*n+f[0]*o+i[0]*p,c[1]*n+f[1]*o+i[1]*p]}function r(a){var d=s(a);b(h),i[0]+=d[0],i[1]+=d[1];if(j){var e=c(j,h,k);i[0]+=e[0],i[1]+=e[1]}g(i,m),h[0]+=i[0],h[1]+=i[1];return h}var h=[0,0],i=[0,0],j=null,k=50,l=.1,m=1,n=2,o=1,p=1,q=10;r.position=function(a){if(!arguments.length)return h;h=a;return r},r.velocity=function(a){if(!arguments.length)return i;i=a;return r},r.gravityCenter=function(a){if(!arguments.length)return j;j=a;return r},r.neighborRadius=function(a){if(!arguments.length)return k;k=a;return r},r.maxForce=function(a){if(!arguments.length)return l;l=a;return r},r.maxSpeed=function(a){if(!arguments.length)return m;m=a;return r},r.separationWeight=function(a){if(!arguments.length)return n;n=a;return r},r.alignmentWeight=function(a){if(!arguments.length)return o;o=a;return r},r.cohesionWeight=function(a){if(!arguments.length)return p;p=a;return r},r.desiredSeparation=function(a){if(!arguments.length)return q;q=a;return r};return r}})()
|
|
@ -7,7 +7,7 @@ var boids = d3.range(100).map(function(d) {
|
|||
return d3.ai.boid()
|
||||
.position([Math.random() * w, Math.random() * h])
|
||||
.velocity([Math.random() * 2 - 1, Math.random() * 2 - 1])
|
||||
.gravityCentre(mouse);
|
||||
.gravityCenter(mouse);
|
||||
});
|
||||
|
||||
// Compute initial positions.
|
||||
|
@ -15,7 +15,7 @@ var vertices = boids.map(function(boid) {
|
|||
return boid(boids);
|
||||
});
|
||||
|
||||
// Insert mouse position (gravity centre).
|
||||
// Insert mouse position (gravity center).
|
||||
vertices.unshift(mouse);
|
||||
|
||||
var svg = d3.select("#vis")
|
||||
|
|
|
@ -2,8 +2,8 @@
|
|||
d3.ai.boid = function() {
|
||||
var position = [0, 0],
|
||||
velocity = [0, 0],
|
||||
gravityCentre = null,
|
||||
neighbourRadius = 50,
|
||||
gravityCenter = null,
|
||||
neighborRadius = 50,
|
||||
maxForce = .1,
|
||||
maxSpeed = 1,
|
||||
separationWeight = 2,
|
||||
|
@ -11,13 +11,13 @@ d3.ai.boid = function() {
|
|||
cohesionWeight = 1,
|
||||
desiredSeparation = 10;
|
||||
|
||||
function boid(neighbours) {
|
||||
var accel = flock(neighbours);
|
||||
function boid(neighbors) {
|
||||
var accel = flock(neighbors);
|
||||
d3_ai_boidWrap(position);
|
||||
velocity[0] += accel[0];
|
||||
velocity[1] += accel[1];
|
||||
if (gravityCentre) {
|
||||
var g = d3_ai_boidGravity(gravityCentre, position, neighbourRadius);
|
||||
if (gravityCenter) {
|
||||
var g = d3_ai_boidGravity(gravityCenter, position, neighborRadius);
|
||||
velocity[0] += g[0];
|
||||
velocity[1] += g[1];
|
||||
}
|
||||
|
@ -27,7 +27,7 @@ d3.ai.boid = function() {
|
|||
return position;
|
||||
}
|
||||
|
||||
function flock(neighbours) {
|
||||
function flock(neighbors) {
|
||||
var separation = [0, 0],
|
||||
alignment = [0, 0],
|
||||
cohesion = [0, 0],
|
||||
|
@ -35,9 +35,9 @@ d3.ai.boid = function() {
|
|||
alignmentCount = 0,
|
||||
cohesionCount = 0,
|
||||
i = -1,
|
||||
l = neighbours.length;
|
||||
l = neighbors.length;
|
||||
while (++i < l) {
|
||||
var n = neighbours[i];
|
||||
var n = neighbors[i];
|
||||
if (n === this) continue;
|
||||
var npos = n.position(),
|
||||
d = d3_ai_boidDistance(position, npos);
|
||||
|
@ -48,7 +48,7 @@ d3.ai.boid = function() {
|
|||
separation[1] += tmp[1] / d;
|
||||
separationCount++;
|
||||
}
|
||||
if (d < neighbourRadius) {
|
||||
if (d < neighborRadius) {
|
||||
var nvel = n.velocity();
|
||||
alignment[0] += nvel[0];
|
||||
alignment[1] += nvel[1];
|
||||
|
@ -122,15 +122,15 @@ d3.ai.boid = function() {
|
|||
return boid;
|
||||
}
|
||||
|
||||
boid.gravityCentre = function(x) {
|
||||
if (!arguments.length) return gravityCentre;
|
||||
gravityCentre = x;
|
||||
boid.gravityCenter = function(x) {
|
||||
if (!arguments.length) return gravityCenter;
|
||||
gravityCenter = x;
|
||||
return boid;
|
||||
}
|
||||
|
||||
boid.neighbourRadius = function(x) {
|
||||
if (!arguments.length) return neighbourRadius;
|
||||
neighbourRadius = x;
|
||||
boid.neighborRadius = function(x) {
|
||||
if (!arguments.length) return neighborRadius;
|
||||
neighborRadius = x;
|
||||
return boid;
|
||||
}
|
||||
|
||||
|
@ -189,11 +189,11 @@ function d3_ai_boidWrap(position) {
|
|||
else if (position[1] < 0) position[1] = h;
|
||||
}
|
||||
|
||||
function d3_ai_boidGravity(centre, position, neighbourRadius) {
|
||||
if (centre[0] != null) {
|
||||
var m = d3_ai_boidSubtract(centre.slice(), position),
|
||||
function d3_ai_boidGravity(center, position, neighborRadius) {
|
||||
if (center[0] != null) {
|
||||
var m = d3_ai_boidSubtract(center.slice(), position),
|
||||
d = d3_ai_boidMagnitude(m) - 10;
|
||||
if (d > 0 && d < neighbourRadius * 5) {
|
||||
if (d > 0 && d < neighborRadius * 5) {
|
||||
d3_ai_boidNormalize(m);
|
||||
m[0] /= d;
|
||||
m[1] /= d;
|
||||
|
|
Загрузка…
Ссылка в новой задаче