Похоже, что первым шагом является упрощение путем усреднения точек ближнего соседа в одну точку.Затем найдите наименьший выпуклый многоугольник, содержащий все точки (это легко сделать).Затем выборочно вбейте несколько сторон, чтобы встретить внутренние точки (многоугольник становится вогнутым).Есть много способов выбрать, какие стороны бить, а какие указывать на первый, и я не могу быть уверен, что лучше, не зная больше о ваших конкретных целях.
Простой подход заключается вразберитесь сначала с теми точками, которые ближе всего к существующей стороне, и пробейте ближайшую сторону, чтобы встретить их.Но вы можете захотеть применить другие условия подсчета очков, чтобы выбрать лучшие точки, чтобы иметь дело с первыми и лучшими сторонами, чтобы пробить. Например, вы можете хотеть дать более высокие оценки точкам, которые тесно выровнены по вертикали или горизонтали с одной из вершин.текущего многоугольника, чтобы они рассматривались раньше, а не позже;и дать сторонам, примыкающим к этой вершине, более высокий балл в качестве кандидатов на штампование. Возможно, вы также захотите наградить более длинные стороны более высокими баллами в качестве кандидатов на штампование.
Я полагаю, что с помощью нескольких простых критериев взвешивания, таких какэто, вы быстро получите некоторые ощутимые результаты.
Наконец, если вы хотите, вы можете вернуться к своему исходному набору нематериальных точек и внести дополнительные небольшие корректировки в форму, чтобы все эти точки выпадали наружу.его границы.