Разбиение Делоне
Дипломная работа - Компьютеры, программирование
Другие дипломы по предмету Компьютеры, программирование
>
{(isMouseDown)
{b = sender as Ellipse;currX = e.GetPosition(this).X;currY = e.GetPosition(this).Y;left = (double)b.GetValue(Canvas.LeftProperty);top = (double)b.GetValue(Canvas.TopProperty);.SetValue(Canvas.LeftProperty, left + currX - beginX);.SetValue(Canvas.TopProperty, top + currY - beginY);= currX;= currY;();
}
}void Window_KeyDown(object sender, KeyEventArgs e)
{(e.Key)
{Key.Left:.SetValue(Canvas.LeftProperty, (double)shape.GetValue(Canvas.LeftProperty) - 1);;Key.Right:.SetValue(Canvas.LeftProperty, (double)shape.GetValue(Canvas.LeftProperty) + 1);;Key.Up:.SetValue(Canvas.TopProperty, (double)shape.GetValue(Canvas.TopProperty) - 1);;Key.Down:.SetValue(Canvas.TopProperty, (double)shape.GetValue(Canvas.TopProperty) + 1);;Key.PageUp:.SetValue(Canvas.LeftProperty, (double)shape.GetValue(Canvas.LeftProperty) - 1);.SetValue(Canvas.TopProperty, (double)shape.GetValue(Canvas.TopProperty) - 1);.Width += 2;.Height += 2;;Key.PageDown:(shape.Width - 2 >= 0)
{.SetValue(Canvas.LeftProperty, (double)shape.GetValue(Canvas.LeftProperty) + 1);.SetValue(Canvas.TopProperty, (double)shape.GetValue(Canvas.TopProperty) + 1);.Width -= 2;.Height -= 2;
};Key.Tab:(shape == c1)= c2;(shape == c2)= c3;= c1;;Key.Escape:();;
}();
}void Window_MouseWheel(object sender, MouseWheelEventArgs e)
{k = Math.Abs(e.Delta) / e.Delta;(shape.Width + 2 * k >= 0)
{.SetValue(Canvas.LeftProperty, (double)shape.GetValue(Canvas.LeftProperty) - k);.SetValue(Canvas.TopProperty, (double)shape.GetValue(Canvas.TopProperty) - k);.Width += 2 * k;.Height += 2 * k;
}();
}
Функции для определения радиусов кругов Делоне, и для переопределения по мере передвижения кругов по рабочему окну.
private void ReCalclateDeloneCircle()
{r1 = c1.Width / 2;x1 = (double)c1.GetValue(Canvas.LeftProperty) + r1;y1 = (double)c1.GetValue(Canvas.TopProperty) + r1;r2 = c2.Width / 2;x2 = (double)c2.GetValue(Canvas.LeftProperty) + r2;y2 = (double)c2.GetValue(Canvas.TopProperty) + r2;r3 = c3.Width / 2;x3 = (double)c3.GetValue(Canvas.LeftProperty) + r3;y3 = (double)c3.GetValue(Canvas.TopProperty) + r3;x4, y4, r4, x5, y5, r5;(x1, y1, r1, x2, y2, r2, x3, y3, r3, out x4, out y4, out r4, out x5, out y5, out r5);= Math.Abs(r4);(!double.IsInfinity(r4))
{.SetValue(Canvas.LeftProperty, x4 - r4);.SetValue(Canvas.TopProperty, y4 - r4);.Width = 2 * r4;.Height = 2 * r4;
}= Math.Abs(r5);(!double.IsInfinity(r4))
{.SetValue(Canvas.LeftProperty, x5 - r5);.SetValue(Canvas.TopProperty, y5 - r5);.Width = 2 * r5;.Height = 2 * r5;
}
}void CalclateDeloneCircle(x1, double y1, double r1,x2, double y2, double r2,x3, double y3, double r3,double x4, out double y4, out double r4,double x5, out double y5, out double r5)
{x21 = x2 - x1;y21 = y2 - y1;r21 = r2 - r1;x31 = x3 - x1;y31 = y3 - y1;r31 = r3 - r1;XY = x21 * y31 - x31 * y21;(XY == 0)
{= double.NaN;= double.NaN;= double.NaN;= double.NaN;= double.NaN;= double.NaN;;
}z21 = (x21 * x21 + y21 * y21 - r21 * r21) / 2;z31 = (x31 * x31 + y31 * y31 - r31 * r31) / 2;Ax = y21 * r31 - y31 * r21;Ay = -(x21 * r31 - x31 * r21);Bx = -(y21 * z31 - y31 * z21);By = x21 * z31 - x31 * z21;A = Ax * Ax + Ay * Ay - XY * XY;B = Ax * Bx + Ay * By;C = Bx * Bx + By * By;D = B * B - A * C;(D < 0)
{= double.NaN;= double.NaN;= double.NaN;= double.NaN;= double.NaN;= double.NaN;;
}R;= (-B - Math.Sqrt(D)) / A;= R - r1;= (Ay * R + By) / XY + y1;= (Ax * R + Bx) / XY + x1;= (-B + Math.Sqrt(D)) / A;= R - r1;= (Ay * R + By) / XY + y1;
x5 = (Ax * R + Bx) / XY + x1;
}
6. Вид рабочего приложения
Рис. 6.1
Раис 6.2
ВЫВОДЫ
Данная программа демонстрирует возможности программирования с помощью технологии Microsoft Windows Presentation Foundation. В этой программе наглядно показано новшества, которые WPF внесло в программирование Windows приложений, а именно: новое визуальное оформление, новая философия настройки элементов, новые графические средства и новый программный интерфейс.WPF состоит из двух взаимосвязанных программных интерфейсов. Программы WPF могут быть полностью написаны на C# или любом другом языке программирования, компилируемом в соответствии с правилами .NET CLS(Common Language Specification). Кроме того, WPF содержит новый язык разметки на базе XML, называемый XAML( eXtensible Application Markup Language).В отдельных случая на XAML можно написать целую программу, однако это приложение построено как из программного кода, так и из кода разметки. В этой программе XAML используется для определения пользовательского интерфейса, а программный код - для обработки событий. Подводя итоги можно сказать, что данная программа показывает преимущества технологии WPF над технологией Windows Forms.
Список литературы
1.Медведев Н.Н. Метод Вороного - Делоне в исследовании структуры некристаллических систем / РАН, Сиб. отд-ние, РФФИ, Институт химической кинетики и горения СО РАН. Новосибирск: НИЦ ОИГГМ СО РАН, Издательство СО РАН, 2000, 214 с.