boundaryToward method
Implementation
@override
DiagramPoint boundaryToward(DiagramPoint target) {
final center = bounds.center;
final ray = target - center;
if (ray.x == 0 && ray.y == 0) return center;
var nearestScale = double.infinity;
for (var index = 0; index < points.length; index += 1) {
final start = points[index];
final end = points[(index + 1) % points.length];
final edge = end - start;
final denominator = _cross(ray, edge);
if (denominator.abs() < 1e-9) continue;
final fromCenter = start - center;
final rayScale = _cross(fromCenter, edge) / denominator;
final edgeScale = _cross(fromCenter, ray) / denominator;
if (rayScale >= 0 &&
edgeScale >= 0 &&
edgeScale <= 1 &&
rayScale < nearestScale) {
nearestScale = rayScale;
}
}
return nearestScale.isFinite ? center + ray * nearestScale : center;
}