public double GetArea(Circle circle) { var callback = OperationContext.Current.GetCallbackChannel<ICircleAreaCalculatorCallback>(); double area = Math.PI * circle.Radius * circle.Radius; callback.Result(area); return area; }
private void CalculateArea(object sender, RoutedEventArgs e) { var circle = InputCircle.Text.Split(new char[] { ';' }).ToList(); var radius = double.Parse(circle[1]); var xys = circle[0].Split(new char[] { ',' }).Select(x => double.Parse(x)).ToList(); var center = new Multiverse.Services.Point(xys[0], xys[1]); Circle c = new Circle(radius, center); var area = areaCalculator.GetArea(c); Area.Text = String.Format("{0:0.00}", area); }
public Circle CreateCircle(Point pt1, Point pt2, Point pt3) { double offset = Math.Pow(pt2.X, 2) + Math.Pow(pt2.Y, 2); double bc = (Math.Pow(pt1.X, 2) + Math.Pow(pt1.Y, 2) - offset) / 2.0; double cd = (offset - Math.Pow(pt3.X, 2) - Math.Pow(pt3.Y, 2)) / 2.0; double det = (pt1.X - pt2.X) * (pt2.Y - pt3.Y) - (pt2.X - pt3.X) * (pt1.Y - pt2.Y); double idet = 1 / det; double centerx = (bc * (pt2.Y - pt3.Y) - cd * (pt1.Y - pt2.Y)) * idet; double centery = (cd * (pt1.X - pt2.X) - bc * (pt2.X - pt3.X)) * idet; double radius = Math.Sqrt(Math.Pow(pt2.X - centerx, 2) + Math.Pow(pt2.Y - centery, 2)); Point center = new Point(centerx, centery); Circle circle = new Circle(radius, center); return circle; }