1a22d072dc6eba9c3a670f177720ee0b62776cfb2e10ca214eb59cd4744e17af1476b23bd30ed9575e0573ebc109d3996da043d9cc62eeecd102e92756d945 753 B

12345678910111213141516171819202122232425262728
  1. import {quadraticProjectPoint} from '../core/curve';
  2. /**
  3. * 二次贝塞尔曲线描边包含判断
  4. */
  5. export function containStroke(
  6. x0: number, y0: number, x1: number, y1: number, x2: number, y2: number,
  7. lineWidth: number, x: number, y: number
  8. ): boolean {
  9. if (lineWidth === 0) {
  10. return false;
  11. }
  12. const _l = lineWidth;
  13. // Quick reject
  14. if (
  15. (y > y0 + _l && y > y1 + _l && y > y2 + _l)
  16. || (y < y0 - _l && y < y1 - _l && y < y2 - _l)
  17. || (x > x0 + _l && x > x1 + _l && x > x2 + _l)
  18. || (x < x0 - _l && x < x1 - _l && x < x2 - _l)
  19. ) {
  20. return false;
  21. }
  22. const d = quadraticProjectPoint(
  23. x0, y0, x1, y1, x2, y2,
  24. x, y, null
  25. );
  26. return d <= _l / 2;
  27. }