getEdgeNormal method

Offset getEdgeNormal(
  1. int edgeIndex
)

获取指定边的法向量(指向外侧)

Implementation

Offset getEdgeNormal(int edgeIndex) {
  final corners = getCorners();
  final corner1 = corners[edgeIndex % 6];
  final corner2 = corners[(edgeIndex + 1) % 6];

  // 边的方向向量
  final edgeVector = Offset(corner2.dx - corner1.dx, corner2.dy - corner1.dy);

  // 法向量(顺时针旋转90度,指向外侧)
  // 从 (dx, dy) 顺时针旋转90度得到 (dy, -dx)
  final normal = Offset(edgeVector.dy, -edgeVector.dx);

  // 归一化
  final length = math.sqrt(normal.dx * normal.dx + normal.dy * normal.dy);
  return Offset(normal.dx / length, normal.dy / length);
}