Ejemplo n.º 1
0
 public bool IntersectsWith(Circle other)
 {
     var dx = X - other.X;
     var dy = Y - other.Y;
     var r = R + other.R;
     return dx * dx + dy * dy < r * r;
 }
Ejemplo n.º 2
0
        private Circle createNewCircleAtLowestPossiblePlace(float r)
        {
            const float delta = 2;
            var lo = r;
            var hi = MaxUsedY + r;
            var circle = new Circle(NextDropX - r, 0, r);

            while (lo + delta < hi)
            {
                circle.Y = (lo + hi) / 2;
                if (fits(circle))
                    hi = circle.Y - 1;
                else
                    lo = circle.Y + 1;
            }

            return circle;
        }
Ejemplo n.º 3
0
 private bool fits(Circle circle)
 {
     return Circles.TrueForAll(_ => !_.IntersectsWith(circle));
 }