diagramWorldToRouteControl function

DiagramPoint diagramWorldToRouteControl(
  1. DiagramPoint point,
  2. DiagramPoint start,
  3. DiagramPoint end
)

Encodes a world point as endpoint-relative route control intent.

Implementation

DiagramPoint diagramWorldToRouteControl(
  DiagramPoint point,
  DiagramPoint start,
  DiagramPoint end,
) {
  final chord = end - start;
  final squaredLength = chord.x * chord.x + chord.y * chord.y;
  if (squaredLength <= 1e-18) return DiagramPoint.zero;
  final offset = point - start;
  return DiagramPoint(
    (offset.x * chord.x + offset.y * chord.y) / squaredLength,
    (offset.y * chord.x - offset.x * chord.y) / squaredLength,
  );
}