Вот точечная коллекция полигонов
<Polygon Points="24,188,24,183,25,176,26,172,29,166,33,160,38,155,44,151,50,148,54,147,61,146,67,146,74,147,78,148,84,151,90,155,95,160,99,166,102,172,103,176,104,183,104,188" Stroke="Black" StrokeThickness="1" />
<Polygon Points="568,263,520,263,520,256,521,253,523,249,526,245,531,241,536,239,540,238,548,238,552,239,557,241,562,245,565,249,567,253,568,256,568,263" Stroke="Black" StrokeThickness="1" />
, которая дает мне следующие формы.
Мне нужно проверить форму полукруга или нет?Пожалуйста, кто-нибудь может направить меня, чтобы определить.Это полукруг?
Я получу коллекцию только до рисования, только я должен определить формы.Это может быть любой (прямоугольник, линия, полукруг, кривая и т. Д.). Я могу найти форму прямоугольника, треугольника и линий из набора точек.Как и для прямоугольника, я проверяю, что его противоположные грани должны быть равны, а внутренний угол должен быть 90 градусов.
public bool IsRectangle()
{
var pointColl = polygon.PointCollection;
bool isRightAngle = false;
if (polygon == null || pointColl == null)
{
return false;
}
if (pointColl.Count == 5)
{
double length1 = (pointColl[0] - pointColl[1]).LengthSquared;
double width1 = (pointColl[1] - pointColl[2]).LengthSquared;
double length2 = (pointColl[2] - pointColl[3]).LengthSquared;
double width2 = (pointColl[3] - pointColl[0]).LengthSquared;
if ((length1 == length2 && length1 != 0) && (width1 == width2 && width1 != 0))
isRightAngle = CalculateAngle(polygon);
}
else
{
isRightAngle = false;
}
Могу ли я написать что-то подобное для обнаружения полукруга или круглой формы?Заранее спасибо.