- 18 Jun, 2013 4 commits
-
-
Mike Bostock authored
Rather than return NaN, this change restores the previous undefined behavior when an unorderable value is used for bisection. After discussing with Jason, I think this is more consistent given that d3.bisect also requires that the input array is sortable, and therefore only contains orderable values. Thus, it is the responsibility of the caller to check that the search value is defined before doing bisection, and so this commit fixes the threshold scale rather than the bisect method. (Also, this is consistent with the existing quantile scale.)
-
Mike Bostock authored
Since the quantile scale allows arbitrary values in the range, there’s no reason the return value for unorderable input needs to be a number.
-
Mike Bostock authored
-
Mike Bostock authored
In addition to NaN, which is not equal to itself, you can have objects that are not orderable due to defined valueOf functions which return NaN. For example: var o = new Number(NaN); Here, o == o is true, but o <= o is false. Therefore it was possible for d3.min, d3.max and d3.extent to observe these non-orderable values rather than ignore them as intended. The fix is to check !(o <= o) rather than o == o. This commit also fixes d3.bisect when the search value is non-orderable. Previously, bisectLeft returned lo for non-orderable values, and bisectRight returned hi. However, if the search value is non-orderable, then this return value does not satisfy the conditions of bisection. This commit changes the bisection methods to return NaN when the search value is non-orderable. As a side-effect, the fix to d3.bisect now causes d3.scale.threshold to return undefined when passed a non-orderable value, such as undefined. (Previously, a threshold scale would return the highest value in the range, because it used bisectRight internally.)
-
- 13 Jun, 2013 4 commits
-
-
Mike Bostock authored
-
Mike Bostock authored
-
Mike Bostock authored
-
Mike Bostock authored
-
- 12 Jun, 2013 4 commits
-
-
Mike Bostock authored
The previous implementation depended on CSS3 transforms being vendor-prefixed, and would assume no vendor prefix if the browser supports transforms natively. Now we detect the vendor prefix on a case-by-case prefix, rather than assuming a single global prefix.
-
Mike Bostock authored
-
Mike Bostock authored
Fixes #857. By default, the radius of each circle in the pack layout is derived from the square root of the node’s value, which is then scaled according to the bounding box of all circles and the layout’s size. By specifying a radius function, you can now explictly control the radius, disabling automatic scaling. The radius function takes the value as input and returns the corresponding radius. If no radius function is specified, automatic scaling is enabled; this is the default. Conveniently, d3.scale.sqrt can be used as a radius function.
-
Jason Davies authored
The use of preventDefault while dragging or zooming was preventing desirable defaults from being triggered. Using user-select: none is a less intrusive way to prevent text from being selected. If user-select or a vendor-prefixed user-select is not supported, we suppress the selectstart event instead (for IE9). Note that Firefox has a bug where absolutely-positioned elements do not inherit the -moz-user-select style from the body element, so users may wish to additionally set -moz-user-select: none on absolutely-positioned elements, at least until this bug is fixed: https://bugzilla.mozilla.org/show_bug.cgi?id=648624 Fixes #1288, #1099.
-
- 11 Jun, 2013 5 commits
-
-
Mike Bostock authored
It’s not strictly geo-specific, so math seems like a reasonable place for it.
-
Mike Bostock authored
-
Mike Bostock authored
-
Mike Bostock authored
-
Jason Davies authored
This uses double the available floating point precision, so that small floating point errors do not accumulate too quickly. Fixes #1305.
-
- 08 Jun, 2013 5 commits
-
-
Jason Davies authored
-
Jason Davies authored
Also includes support for parsing "%" literals.
-
Jason Davies authored
This point-in-polygon algorithm uses the same area calculation as d3.geo.area, inlined for performance. Fixes #1300.
-
Jason Davies authored
This avoids recreating closures for handling polygon rings, which was causing the V8 JIT to recompile them.
-
Jason Davies authored
-
- 04 Jun, 2013 2 commits
-
-
Mike Bostock authored
Use relative error for intersections. Fixes #1075.
-
Jason Davies authored
-
- 03 Jun, 2013 3 commits
-
-
Mike Bostock authored
-
Mike Bostock authored
The stream doesn’t capture the current value of the precision, so there’s no reason to invalidate the stream when the precision changes. This partially reverts commit 9a2fb581.
-
Mike Bostock authored
-
- 02 Jun, 2013 1 commit
-
-
Jason Davies authored
This generalises the centre of mass formula given in: J. E. Brock, The Inertia Tensor for a Spherical Triangle, J. Applied Mechanics 42, 239 (1975) In addition, centroids of zero-extent features now fall back to the centroid of the feature treated as a lower dimension, i.e. polygons → lines → points. Specifically, if the centroid of a polygon or multipolygon feature is ambiguous, it will treat it as a set of lines. Similarly (but not exactly the same), if a line or set of lines has zero length, it will be treated as a set of points. This also applies to d3.geo.path.centroid, except that the fallback always occurs if the feature has zero extent (area or length). For geographic polygons, it was simpler to fall back if the centroid was undefined, as area is not tracked in a simple fashion. Fixes #1011. Optimised d3_acos, and used d3_asin and d3_acos where appropriate instead of Math.min and Math.max.
-
- 01 Jun, 2013 2 commits
-
-
Mike Bostock authored
-
Mike Bostock authored
The cached stream must be invalidated when the precision changes, and when the context is changed.
-
- 30 May, 2013 10 commits
-
-
Mike Bostock authored
-
Mike Bostock authored
-
Mike Bostock authored
This deprecates voronoi.size.
-
Mike Bostock authored
-
Mike Bostock authored
-
Mike Bostock authored
-
Mike Bostock authored
-
Mike Bostock authored
-
Mike Bostock authored
-
Mike Bostock authored
-