123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- var _util = require("./util");
- var normalizeRadian = _util.normalizeRadian;
- var PI2 = Math.PI * 2;
- function containStroke(cx, cy, r, startAngle, endAngle, anticlockwise, lineWidth, x, y) {
- if (lineWidth === 0) {
- return false;
- }
- var _l = lineWidth;
- x -= cx;
- y -= cy;
- var d = Math.sqrt(x * x + y * y);
- if (d - _l > r || d + _l < r) {
- return false;
- }
- if (Math.abs(startAngle - endAngle) % PI2 < 1e-4) {
-
- return true;
- }
- if (anticlockwise) {
- var tmp = startAngle;
- startAngle = normalizeRadian(endAngle);
- endAngle = normalizeRadian(tmp);
- } else {
- startAngle = normalizeRadian(startAngle);
- endAngle = normalizeRadian(endAngle);
- }
- if (startAngle > endAngle) {
- endAngle += PI2;
- }
- var angle = Math.atan2(y, x);
- if (angle < 0) {
- angle += PI2;
- }
- return angle >= startAngle && angle <= endAngle || angle + PI2 >= startAngle && angle + PI2 <= endAngle;
- }
- exports.containStroke = containStroke;
|