(stream, radius, delta, direction, t0, t1)
| 113311 | |
| 113312 | // Generates a circle centered at [0°, 0°], with a given radius and precision. |
| 113313 | function circleStream(stream, radius, delta, direction, t0, t1) { |
| 113314 | if (!delta) return; |
| 113315 | var cosRadius = (0, _math.cos)(radius), |
| 113316 | sinRadius = (0, _math.sin)(radius), |
| 113317 | step = direction * delta; |
| 113318 | |
| 113319 | if (t0 == null) { |
| 113320 | t0 = radius + direction * _math.tau; |
| 113321 | t1 = radius - step / 2; |
| 113322 | } else { |
| 113323 | t0 = circleRadius(cosRadius, t0); |
| 113324 | t1 = circleRadius(cosRadius, t1); |
| 113325 | if (direction > 0 ? t0 < t1 : t0 > t1) t0 += direction * _math.tau; |
| 113326 | } |
| 113327 | |
| 113328 | for (var point, t = t0; direction > 0 ? t > t1 : t < t1; t -= step) { |
| 113329 | point = (0, _cartesian.spherical)([cosRadius, -sinRadius * (0, _math.cos)(t), -sinRadius * (0, _math.sin)(t)]); |
| 113330 | stream.point(point[0], point[1]); |
| 113331 | } |
| 113332 | } // Returns the signed angle of a cartesian point relative to [cosRadius, 0, 0]. |
| 113333 | |
| 113334 | |
| 113335 | function circleRadius(cosRadius, point) { |
no test coverage detected