base.js 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. import { mix } from '../util/common';
  2. import MatrixUtil from '../graphic/util/matrix';
  3. import Vector2 from '../graphic/util/vector2';
  4. var defaultMatrix = [1, 0, 0, 1, 0, 0];
  5. class Base {
  6. _initDefaultCfg() {}
  7. constructor(cfg) {
  8. this._initDefaultCfg();
  9. mix(this, cfg);
  10. var start;
  11. var end;
  12. if (this.plot) {
  13. start = this.plot.bl;
  14. end = this.plot.tr;
  15. this.start = start;
  16. this.end = end;
  17. } else {
  18. start = this.start;
  19. end = this.end;
  20. }
  21. this.init(start, end);
  22. }
  23. _scale(s1, s2) {
  24. var matrix = this.matrix;
  25. var center = this.center;
  26. MatrixUtil.translate(matrix, matrix, [center.x, center.y]);
  27. MatrixUtil.scale(matrix, matrix, [s1, s2]);
  28. MatrixUtil.translate(matrix, matrix, [-center.x, -center.y]);
  29. }
  30. init(start, end) {
  31. this.matrix = [].concat(defaultMatrix); // 设置中心点
  32. this.center = {
  33. x: (end.x - start.x) / 2 + start.x,
  34. y: (end.y - start.y) / 2 + start.y
  35. };
  36. if (this.scale) {
  37. this._scale(this.scale[0], this.scale[1]);
  38. }
  39. }
  40. convertPoint(point) {
  41. var {
  42. x,
  43. y
  44. } = this._convertPoint(point);
  45. if (!MatrixUtil.isChanged(this.matrix)) {
  46. return {
  47. x,
  48. y
  49. };
  50. }
  51. var vector = [x, y];
  52. Vector2.transformMat2d(vector, vector, this.matrix);
  53. return {
  54. x: vector[0],
  55. y: vector[1]
  56. };
  57. }
  58. invertPoint(point) {
  59. return this._invertPoint(point);
  60. }
  61. _convertPoint(point) {
  62. return point;
  63. }
  64. _invertPoint(point) {
  65. return point;
  66. }
  67. reset(plot) {
  68. this.plot = plot;
  69. var {
  70. bl,
  71. tr
  72. } = plot;
  73. this.start = bl;
  74. this.end = tr;
  75. this.init(bl, tr);
  76. }
  77. }
  78. export default Base;