d3js-plugins-rails 0.0.1 → 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -60,6 +60,7 @@ d3.geo.projection.js: \
|
|
60
60
|
geo/projection/polyconic.js \
|
61
61
|
geo/projection/robinson.js \
|
62
62
|
geo/projection/satellite.js \
|
63
|
+
geo/projection/two-point-equidistant.js \
|
63
64
|
geo/projection/van-der-grinten.js \
|
64
65
|
geo/projection/van-der-grinten4.js \
|
65
66
|
geo/projection/wagner4.js \
|
@@ -0,0 +1,63 @@
|
|
1
|
+
// TODO clip to ellipse
|
2
|
+
// TODO expose d3.geo.rotation?
|
3
|
+
|
4
|
+
function twoPointEquidistant(z0) {
|
5
|
+
if (!z0) return d3.geo.azimuthalEquidistant.raw;
|
6
|
+
var λa = -z0 / 2,
|
7
|
+
λb = -λa,
|
8
|
+
z02 = z0 * z0;
|
9
|
+
return function(λ, φ) {
|
10
|
+
var za = acos(Math.cos(φ) * Math.cos(λ - λa)),
|
11
|
+
zb = acos(Math.cos(φ) * Math.cos(λ - λb)),
|
12
|
+
ys = φ < 0 ? -1 : 1;
|
13
|
+
za *= za, zb *= zb;
|
14
|
+
return [
|
15
|
+
(za - zb) / (2 * z0),
|
16
|
+
ys * asqrt(4 * z02 * zb - (z02 - za + zb) * (z02 - za + zb)) / (2 * z0)
|
17
|
+
];
|
18
|
+
};
|
19
|
+
}
|
20
|
+
|
21
|
+
function twoPointEquidistantProjection() {
|
22
|
+
var points = [[0, 0], [0, 0]],
|
23
|
+
m = projectionMutator(twoPointEquidistant),
|
24
|
+
p = m(0),
|
25
|
+
rotate = p.rotate;
|
26
|
+
|
27
|
+
delete p.rotate;
|
28
|
+
|
29
|
+
p.points = function(_) {
|
30
|
+
if (!arguments.length) return points;
|
31
|
+
points = _;
|
32
|
+
|
33
|
+
// Compute the origin as the midpoint of the two reference points.
|
34
|
+
// Rotate one of the reference points by the origin.
|
35
|
+
// Apply the spherical law of sines to compute γ rotation.
|
36
|
+
var origin = d3.geo.interpolate(_[0], _[1])(.5),
|
37
|
+
p = twoPointEquidistant_rotate(-origin[0] * radians, -origin[1] * radians, _[0][0] * radians, _[0][1] * radians),
|
38
|
+
b = acos(Math.cos(p[1]) * Math.cos(p[0])), // |[0, 0] - p|
|
39
|
+
c = (p[0] < 0 ? -1 : +1) * p[1], // |[p[0], 0] - p|
|
40
|
+
γ = asin(Math.sin(c) / Math.sin(b));
|
41
|
+
|
42
|
+
rotate.call(p, [-origin[0], -origin[1], -γ * degrees]);
|
43
|
+
|
44
|
+
return m(b * 2);
|
45
|
+
};
|
46
|
+
|
47
|
+
return p
|
48
|
+
}
|
49
|
+
|
50
|
+
function twoPointEquidistant_rotate(δλ, δφ, λ, φ) {
|
51
|
+
var cosδφ = Math.cos(δφ),
|
52
|
+
sinδφ = Math.sin(δφ),
|
53
|
+
cosφ = Math.cos(φ),
|
54
|
+
x = Math.cos(λ += δλ) * cosφ,
|
55
|
+
y = Math.sin(λ) * cosφ,
|
56
|
+
z = Math.sin(φ);
|
57
|
+
return [
|
58
|
+
Math.atan2(y, x * cosδφ - z * sinδφ),
|
59
|
+
asin(z * cosδφ + x * sinδφ)
|
60
|
+
];
|
61
|
+
}
|
62
|
+
|
63
|
+
(d3.geo.twoPointEquidistant = twoPointEquidistantProjection).raw = twoPointEquidistant;
|
@@ -37,6 +37,18 @@ d3.hexbin = function() {
|
|
37
37
|
return d3.values(binsById);
|
38
38
|
}
|
39
39
|
|
40
|
+
function hexagon(radius) {
|
41
|
+
var x0 = 0, y0 = 0;
|
42
|
+
return d3_hexbinAngles.map(function(angle) {
|
43
|
+
var x1 = Math.sin(angle) * radius,
|
44
|
+
y1 = -Math.cos(angle) * radius,
|
45
|
+
dx = x1 - x0,
|
46
|
+
dy = y1 - y0;
|
47
|
+
x0 = x1, y0 = y1;
|
48
|
+
return [dx, dy];
|
49
|
+
});
|
50
|
+
}
|
51
|
+
|
40
52
|
hexbin.x = function(_) {
|
41
53
|
if (!arguments.length) return x;
|
42
54
|
x = _;
|
@@ -50,20 +62,12 @@ d3.hexbin = function() {
|
|
50
62
|
};
|
51
63
|
|
52
64
|
hexbin.hexagon = function(radius) {
|
53
|
-
var x0 = 0, y0 = 0;
|
54
65
|
if (arguments.length < 1) radius = r;
|
55
|
-
return "m" +
|
56
|
-
var x1 = Math.sin(angle) * radius,
|
57
|
-
y1 = -Math.cos(angle) * radius,
|
58
|
-
dx = x1 - x0,
|
59
|
-
dy = y1 - y0;
|
60
|
-
x0 = x1, y0 = y1;
|
61
|
-
return [dx, dy];
|
62
|
-
}).join("l") + "z";
|
66
|
+
return "m" + hexagon(radius).join("l") + "z";
|
63
67
|
};
|
64
68
|
|
65
69
|
hexbin.mesh = function() {
|
66
|
-
var path = [], mesh =
|
70
|
+
var path = [], mesh = hexagon(r).slice(0, 4).join("l");
|
67
71
|
for (var y = 0, odd = false; y < height + r; y += dy, odd = !odd) {
|
68
72
|
for (var x = odd ? dx / 2 : 0; x < width; x += dx) {
|
69
73
|
path.push("M", x, ",", y, "m", mesh);
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: d3js-plugins-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-01-
|
12
|
+
date: 2013-01-28 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: railties
|
@@ -145,6 +145,7 @@ files:
|
|
145
145
|
- vendor/assets/javascripts/d3/plugins/geo/projection/test/robinson-test.js
|
146
146
|
- vendor/assets/javascripts/d3/plugins/geo/projection/test/wagner6-test.js
|
147
147
|
- vendor/assets/javascripts/d3/plugins/geo/projection/test/winkel3-test.js
|
148
|
+
- vendor/assets/javascripts/d3/plugins/geo/projection/two-point-equidistant.js
|
148
149
|
- vendor/assets/javascripts/d3/plugins/geo/projection/van-der-grinten.js
|
149
150
|
- vendor/assets/javascripts/d3/plugins/geo/projection/van-der-grinten4.js
|
150
151
|
- vendor/assets/javascripts/d3/plugins/geo/projection/wagner4.js
|
@@ -211,7 +212,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
211
212
|
version: '0'
|
212
213
|
requirements: []
|
213
214
|
rubyforge_project:
|
214
|
-
rubygems_version: 1.8.
|
215
|
+
rubygems_version: 1.8.23
|
215
216
|
signing_key:
|
216
217
|
specification_version: 3
|
217
218
|
summary: Gemified d3js-plugins asset for Rails
|