createLine static method

List<FreeHexagon> createLine({
  1. required FreeHexagon start,
  2. required int direction,
  3. required int count,
  4. List<double>? sizes,
  5. double gap = 0.0,
})

创建线性排列的六边形

start 起始六边形 direction 方向(边索引) count 数量(不包括起始六边形) sizes 每个六边形的大小列表 gap 间隙

Implementation

static List<FreeHexagon> createLine({
  required FreeHexagon start,
  required int direction,
  required int count,
  List<double>? sizes,
  double gap = 0.0,
}) {
  final line = <FreeHexagon>[start];
  var currentHex = start;

  for (var i = 0; i < count; i++) {
    final size = sizes?[i] ?? start.size;
    final nextCenter = calculateAdjacentCenter(
      sourceHex: currentHex,
      sourceEdge: direction,
      targetSize: size,
      gap: gap,
      targetOrientation: start.orientation,
    );

    final nextHex = FreeHexagon(
      id: '${start.id}_line_$i',
      center: nextCenter,
      size: size,
      orientation: start.orientation,
    );

    line.add(nextHex);
    currentHex = nextHex;
  }

  return line;
}