if (point->x < box->low.x) dx = box->low.x - point->x; if (point->x > box->high.x) dx = point->x - box->high.x; if (point->y < box->low.y) dy = box->low.y - point->y; if (point->y > box->high.y) dy = point->y - box->high.y; return HYPOT(dx, dy);
I feel myself quite tangled. Could anybody clarify it for me? Did I miss something? Thanks.
ISTM that you miss the projection on the segment if dx=0 or dy=0.
I don't need to find projection itself, I need only distance. When dx = 0 then nearest point is on horizontal line of box, so distance to it is dy. Same when dy = 0. When both of them are 0 then point is in the box.