Минимальная выпуклая оболочка по методу Эндрю

Скрипт отрисовывает рисунок геометрической змейки с помошью функции drawSnake, точки наносятся на холст в цикле.

Функция andrewsChainsMethod осуществляет поиск минимальной выпуклой оболочки по точкам рисунка и рендерит ее с задержкой, переданной в параметре delay.

Изначально находится точка с минимальной координатой по оси Ox - leftmost (также для определения более левой точки используется функция orientation для определения поворота алгоритма относительно плоскости. Далее следует инициализация начальной точки
минимальной выпуклой оболочки (она равна leftmost), а также массива hull, в котором будут хранится в дальнейшем все точки оболочки.

Далее, начиная с самой левой нижней точки, движемся по часовой стрелке добавляя точки к нашей оболочке, пока не вернемся к начальной. Этот функционал реализован в функции drawShell, здесь же задается задержка отрисовки линий оболочки.