Начните с точки с наименьшей x-координатой. (Назовите это Точкой X) Постройте набор «граничных точек», начиная с точки x, и вертикальной линии, проходящей через точку. Не должно быть других точек слева от PointX) найдите следующую точку на границе, медленно вращая линию по часовой стрелке (Или против часовой стрелки), пока линия не коснется другой точки (см. ниже). Добавьте эту точку в набор и повторите с этой следующей точкой, чтобы получить следующую, пока вы в конечном итоге не вернетесь к исходной точке x. У вас npw есть набор точек, образующих границу полного набора. Сравните расстояние между каждой парой в этом сокращенном наборе, чтобы найти пару, которая находится дальше всего друг от друга.
Чтобы «повернуть линию» (чтобы найти каждую последующую граничную точку), возьмите точку, которая является «самой дальней» в направлении, перпендикулярном линии, использованной для последней граничной точки, и постройте новую линию между последней граничной точкой и этой точкой » следующий "пункт. Затем убедитесь, что в новом перпендикулярном направлении, образованном этой новой линией, нет других точек. Если в направлении, перпендикулярном этой или последней линии, нет других точек, «выходящих наружу», то это правильный выбор для следующей граничной точки, если такая точка есть, переключитесь на эту и повторите проверку.
person
Charles Bretana
schedule
24.10.2009