Mikle » 08.06.2004 (Вт) 13:41
Линии:
Есть мин и макс координаты. Получается прямоугольник из четырех квадрантов:
........
.1. 2.
........
.3. 4.
.......
С помощью:
M = M + ((Way(n).X - MinX - 0.0001) / (MaxX - MinX - 0.0001) - 0.5) * ((Way(n).Y - MinY - 0.0001) / (MaxY - MinY - 0.0001) - 0.5)
подвожу статистику, формула дает положительный результат для 1 и 4 квадрантов. Результат дает возможность ответить, как расположена линия, так "\" или так "/". Соответственно линия будет либо:
minx,miny - maxx,maxy
либо:
minx,maxy - maxx,miny
Дальше проверяю, расположены ли точки между началом и концом. Если да - это линия.
Прямоугольник:
Если все точки содержат хотя бы одну из координат:
minx,maxy,maxx,miny
- это прямоугольник.
Круг - расстояние от всех точек до центра равно радиусу.
Во всех сравнениях допускаю некоторые отклонения.