MBR = minimal boundary rectange - минимальный описывающий (геообъект) прямоугольник (в текущей системе координат).
3. В той записи min(x) - наименьшая из всех координат по x, соотвественно max(y) - наибольшая из всех координат по y. x,y не обязательно принадлежат одной и той же точке. Для меня это простейший способ указать, что такое северо-западный угол. Иначе придется изобретать какую-то другую формулировку. Поскольку MBR - получается для любого объекта функцией MapBsic'а (МВ) - MBR(obj) - для меня это простейший случай. Этого левый верхний угол и будет этим самым ((mix(x),max(y)). Видимо как получить из полигона точки - вы уже знаете. В моей рекомендации точки сохранялись в новую таблицу, при которых сохранялись а) координаты x,y б) номер вершины в исходном многоугольнике.
(x-min(x))**2+(y-max(y))**2 - это квадрат расстояния от любой точки (вершины) до точки ((mix(x),max(y)) - лев-верх угла MBR. Соответственно, точку, у которой это расстояние минимально следует считать самой близкой к лев-верх углу MBR. В моей формулировке - это и есть самая лев-верх точка многоугольника. Наверное есть какая-то другая формулировка того, что следует считать самой лев-верх точкой многоугольника, может быть этому есть даже какое-то официальное толкование. Я его просто не знаю и предложил его исходя из своего здравого смысла
4. В п.3 мы выбирали начальную точку. Это и будет наша точка 1. Исходя из формулировки задачи, как ее уточнила автор вопроса, обход вершин следует выполнять строго в порядке их смежности и в направлении по часовой стрелке. Это будут точки с номерами (в исходном многоугольнике) +1 и -1 к выбранной нами точке начала. Крайние варианты - это если точка начала оказалась начальной или конечной точкой многоугольника. Но все равно, в замкнутом множестве, где после точки с максимальным номером следует точка с наименьшим - это точки +-1. И координаты относительно исходной точки и будем исследовать.
5. Угол по часовой стрелке - он ведь не относительно начала координат, а относительно чего-то, что связано с нашим геометрическим объектом - многоугольником. Т.е. относительно некоторой внутренней точки этого многоугольника. Что бы не множить сложности, я посчитал, что это может быть центр, рассмотренной выше MBR. Centroid(obj) - может быть с тем же успехом. И та и другая точки легко рассчитываются, и для всех выпуклых многоугольников лежат внутри объекта, для большинства других - то же, но тут возможны варианты. Для тех случаев, когда они лежат вне объектов и любые другие предположения будут гораздо труднее рассчитать и алгоритмизировать. Но возможно, что Centroid() - надежней, т.к. если его не двигали, он всегда лежит внутри объекта. Алгоритм нахождения угла между двумя отрезками я так сразу не припомню, но он должен быть какой-то очевидный - что вроде произведения векторов(?).
6. В любом случае нам нужен не просто угол, а именно угол со знаком, т.к. знак и задает направление. Если я верно помню начальную тригонометрию, то по часовой стрелке - это угол как раз отрицательный. Узнав какая это точка +1 или -1 - мы получаем знак направления обхода.
7. К этому моменту мы имеем - номер начальной точки в исходной нумерации вершин = M, и приращение точек в направлении по часовой стрелке +1 или -1, в любом случае, для нас это k. Теперь точка N, В новой системе нумерации точек (выводимой на экран и сохраняемой нами в атрибуте) -> 1, точка N+k -> 2 или для точки i в старой системе нумерации вершин i -> ((i-N)*k) Mod Max(i-1), т.е. число ((i-N)*k) по модулю (общее кол-во вершин минус один). Минус один, т.к. в многоугольнике, когда он задает Region начальная точка дублируется как первая и последняя. И эту точку надо было игнорировать еще на этапе разбора многоугольника на вершины.
8. Геокодирование точек с выводом атрибута на экран. Геокодирование, потому, что я предложил в начале не создавать точек из вершин, только сохранять их координаты в таблицу - плоскую без геоинформации. С атрибутом - это потому, что я предложил присваивать новые номера точкам в процессе обхода и сохранять новый номер в атрибут.