Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ////////////
- function left(a, b, c) {
- const result = (b.x - a.x) * (c.y - a.y) - (b.y - a.y) * (c.x - a.x);
- if (result > 0) return -1;
- else if (result < 0) return 1;
- else return 0;
- }
- ////////////
- points.sort((a, b) => a.y - b.y);
- const startPoint = points.shift();
- points.sort((a, b) => left(startPoint, a, b));
- points.unshift(startPoint);
- const N = points.length;
- let stack = new Array();
- stack.push(points[0]);
- stack.push(points[1]);
- stack.push(points[2]);
- for (let i = 3; i < N; i++) {
- let top = stack.pop();
- while (left(stack[stack.length - 1], top, points[i]) != -1) {
- top = stack.pop();
- }
- stack.push(top);
- stack.push(points[i]);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement