CircleService.js 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. import Point from "../Geometry/Point.js";
  2. import Circle from "../Geometry/Circle.js";
  3. import { dataService } from "./DataService.js";
  4. import { uiService } from "./UIService.js";
  5. import VectorCategory from "../enum/VectorCategory.js";
  6. import { mathUtil } from "../Util/MathUtil.js";
  7. import Constant from "../Constant.js";
  8. export default class CircleService {
  9. constructor() {}
  10. create(center, radius, vectorId) {
  11. if (!center || !radius || radius < Constant.minAdsorbPix / 2) {
  12. return null;
  13. }
  14. let circle = new Circle(center, radius, vectorId);
  15. dataService.addCircle(circle);
  16. return circle;
  17. }
  18. copy(vectorId) {
  19. let circle = dataService.getCircle(vectorId);
  20. let center = uiService.getNewPositionForPop(circle.center);
  21. let radius = circle.radius;
  22. let newCircle = this.create(center, radius);
  23. newCircle.setColor(circle.color);
  24. return newCircle.vectorId;
  25. }
  26. updateRadiusXYForPoint(vectorId, pointIndex) {
  27. let circle = dataService.getCircle(vectorId);
  28. const radiusX = Math.abs(circle.points[pointIndex].x - circle.center.x);
  29. const radiusY = Math.abs(circle.points[pointIndex].y - circle.center.y);
  30. return {
  31. radiusX: radiusX,
  32. radiusY: radiusY,
  33. };
  34. }
  35. }
  36. const circleService = new CircleService();
  37. export { circleService };