Untitled
unknown
plain_text
2 years ago
2.5 kB
10
Indexable
public class ViewModel
{
public bool IsRectangleTouchingOuterCircle(Rect rectangleBounds, double circularProgressBarRadius, Point circularProgressBarCenter)
{
Point rectangleTopLeft = new Point(rectangleBounds.Left, rectangleBounds.Top);
Point rectangleTopRight = new Point(rectangleBounds.Right, rectangleBounds.Top);
Point rectangleBottomLeft = new Point(rectangleBounds.Left, rectangleBounds.Bottom);
Point rectangleBottomRight = new Point(rectangleBounds.Right, rectangleBounds.Bottom);
double distanceToTopLeft = CalculateDistance(rectangleTopLeft, circularProgressBarCenter);
double distanceToTopRight = CalculateDistance(rectangleTopRight, circularProgressBarCenter);
double distanceToBottomLeft = CalculateDistance(rectangleBottomLeft, circularProgressBarCenter);
double distanceToBottomRight = CalculateDistance(rectangleBottomRight, circularProgressBarCenter);
double tolerance = 1.0; // Adjust this tolerance as needed
return IsApproximatelyEqual(distanceToTopLeft, circularProgressBarRadius, tolerance) ||
IsApproximatelyEqual(distanceToTopRight, circularProgressBarRadius, tolerance) ||
IsApproximatelyEqual(distanceToBottomLeft, circularProgressBarRadius, tolerance) ||
IsApproximatelyEqual(distanceToBottomRight, circularProgressBarRadius, tolerance);
}
private double CalculateDistance(Point point1, Point point2)
{
double dx = point1.X - point2.X;
double dy = point1.Y - point2.Y;
return Math.Sqrt(dx * dx + dy * dy);
}
private bool IsApproximatelyEqual(double value1, double value2, double tolerance)
{
return Math.Abs(value1 - value2) <= tolerance;
}
}
// Example usage
ViewModel viewModel = new ViewModel();
Rect rectangleBounds = new Rect(rectangleLeft, rectangleTop, rectangleWidth, rectangleHeight); // Rectangle bounds
double currentCircularProgressBarRadius = ...; // Current radius of the circular progress bar
Point currentCircularProgressBarCenter = ...; // Current center point of the circular progress bar
bool isTouchingOuterCircle = viewModel.IsRectangleTouchingOuterCircle(rectangleBounds, currentCircularProgressBarRadius, currentCircularProgressBarCenter);
if (isTouchingOuterCircle)
{
// Rectangle is touching the outer circle of the circular progress bar
}
else
{
// Rectangle is not touching the outer circle of the circular progress bar
}
Editor is loading...