Spaces:
Sleeping
Sleeping
| var ε = 1e-6, | |
| ε2 = ε * ε, | |
| π = Math.PI, | |
| τ = 2 * π, | |
| τε = τ - ε, | |
| halfπ = π / 2, | |
| d3_radians = π / 180, | |
| d3_degrees = 180 / π; | |
| function d3_sgn(x) { | |
| return x > 0 ? 1 : x < 0 ? -1 : 0; | |
| } | |
| // Returns the 2D cross product of AB and AC vectors, i.e., the z-component of | |
| // the 3D cross product in a quadrant I Cartesian coordinate system (+x is | |
| // right, +y is up). Returns a positive value if ABC is counter-clockwise, | |
| // negative if clockwise, and zero if the points are collinear. | |
| function d3_cross2d(a, b, c) { | |
| return (b[0] - a[0]) * (c[1] - a[1]) - (b[1] - a[1]) * (c[0] - a[0]); | |
| } | |
| function d3_acos(x) { | |
| return x > 1 ? 0 : x < -1 ? π : Math.acos(x); | |
| } | |
| function d3_asin(x) { | |
| return x > 1 ? halfπ : x < -1 ? -halfπ : Math.asin(x); | |
| } | |
| function d3_sinh(x) { | |
| return ((x = Math.exp(x)) - 1 / x) / 2; | |
| } | |
| function d3_cosh(x) { | |
| return ((x = Math.exp(x)) + 1 / x) / 2; | |
| } | |
| function d3_tanh(x) { | |
| return ((x = Math.exp(2 * x)) - 1) / (x + 1); | |
| } | |
| function d3_haversin(x) { | |
| return (x = Math.sin(x / 2)) * x; | |
| } | |