Node.py 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. from typing import Tuple
  2. import core
  3. from dict.model_config import _global_model_configs
  4. class Node:
  5. def __init__(self, original_point: Tuple[float, float], node_type, div_index):
  6. self.model_config = _global_model_configs[node_type]
  7. self.original_point = original_point
  8. original_point = original_point[0], -original_point[1]
  9. self.div_index = div_index
  10. self.agg_point = self.get_agg(original_point)
  11. self.div_point = self.get_div(original_point)
  12. # 对坐标进行图层聚合偏移、旋转、缩放调整处理
  13. def get_agg(self, point):
  14. shift_x = self.model_config.agg_shift[0]
  15. shift_y = self.model_config.agg_shift[1]
  16. route = self.model_config.agg_route
  17. scale = self.model_config.agg_scale
  18. point_ = core.rotate_point_around_another(point, (0, 0), route)
  19. point_ = core.scale_point(point_[0], point_[1], scale)
  20. point_ = point_[0] + shift_x, point_[1] + shift_y
  21. return point_
  22. # 对坐标进行图层分离偏移、旋转、缩放调整处理
  23. def get_div(self, point):
  24. shift_x = self.model_config.div_shift[self.div_index][0]
  25. shift_y = self.model_config.div_shift[self.div_index][1]
  26. route = self.model_config.div_route[self.div_index]
  27. scale = self.model_config.div_scale[self.div_index]
  28. point_ = core.rotate_point_around_another(point, (0, 0), route)
  29. point_ = core.scale_point(point_[0], point_[1], scale)
  30. point_ = point_[0] + shift_x, point_[1] + shift_y
  31. return point_
  32. class Node2D(Node):
  33. def __init__(self, original_point: Tuple[float, float], div_index):
  34. super().__init__(original_point, '2d', div_index)
  35. class Node3D(Node):
  36. def __init__(self, original_point: Tuple[float, float], div_index):
  37. super().__init__(original_point, '3d', div_index)
  38. # class Route:
  39. # def __init__(self,div_route,agg_route):
  40. # self.div_route =div_route
  41. # self.agg_route = agg_route