Cómo encontrar los puntos que se encuentran en el límite de un casco convexo en una cuadrícula Integer 2D. Tengo el punto de los vértices y todos los puntos que forman parte de las formas. Intenté verificar la colinealidad de todos los puntos y muchos puntos que eran colineales con otros dos puntos estaban dentro de las formas.

Ya calculé las coordenadas de los puntos azules y las coordenadas de los vértices, pero no puedo encontrar las coordenadas del punto en el límite del casco convexo. Código Traté de obtener todos los puntos pero luego fallé al hacerlo
function collinear(p, q, r) { var a = px * (qy - ry) + qx * (ry - py) + rx * (py - qy); if (a == 0 && !hull.includes(q)) hull.push(q); else return; } for (let i = 0; i < hull.length; i++) { for (let j = 0; j < hull.length; j++) { for (let k = 1; k < points.length; k++) { collinear(hull[i], hull[j], points[k]); } } }La matriz de casco contiene objetos de puntos que están en los vértices, y la matriz de puntos consta de todos los puntos que son 1 en la cuadrícula de enteros 2d. ¿Cómo encontrar los puntos en el límite del casco convexo?