|
@@ -53,25 +53,19 @@ define(["leaflet", "jshashes"],
|
|
|
p.x -= s.x
|
|
|
p.y -= s.y
|
|
|
|
|
|
- var distance = startDistance
|
|
|
- var startAngle = d.startAngle
|
|
|
- var angle = startAngle
|
|
|
-
|
|
|
- for (var i = 0; i < clients; i++) {
|
|
|
- if ((angle - startAngle) > 2 * Math.PI) {
|
|
|
- angle = startAngle
|
|
|
- distance += 2 * radius * a
|
|
|
- }
|
|
|
-
|
|
|
- var x = p.x + distance * Math.cos(angle)
|
|
|
- var y = p.y + distance * Math.sin(angle)
|
|
|
+ for (var orbit = 0, i = 0; i < clients; orbit++) {
|
|
|
+ var distance = startDistance + orbit * 2 * radius * a
|
|
|
+ var n = Math.floor((Math.PI * distance) / (a * radius))
|
|
|
+ var delta = clients - i
|
|
|
|
|
|
- ctx.moveTo(x, y)
|
|
|
- ctx.arc(x, y, radius, 0, 2 * Math.PI)
|
|
|
+ for (var j = 0; j < Math.min(delta, n); i++, j++) {
|
|
|
+ var angle = 2 * Math.PI / n * j
|
|
|
+ var x = p.x + distance * Math.cos(angle + d.startAngle)
|
|
|
+ var y = p.y + distance * Math.sin(angle + d.startAngle)
|
|
|
|
|
|
- var n = Math.floor((Math.PI * distance) / (a * radius))
|
|
|
- var angleDelta = 2 * Math.PI / n
|
|
|
- angle += angleDelta
|
|
|
+ ctx.moveTo(x, y)
|
|
|
+ ctx.arc(x, y, radius, 0, 2 * Math.PI)
|
|
|
+ }
|
|
|
}
|
|
|
})
|
|
|
|