I’m running a process to which only images that are visible or partially visible in the viewport are relevant. The following code works, it returns true if any part of the img is on the screen. But is there a more succinct way to express the same logic?
//Can't figure out an easier way to do this!
return (imgLeft>=winData.l && imgLeft<winData.r && imgTop>=winData.t && imgTop<winData.b) || //TL somewhere on screen
(imgRight>=winData.l && imgRight<winData.r && imgTop>=winData.t && imgTop<winData.b) || //TR somewhere on screen
(imgLeft>=winData.l && imgLeft<winData.r && imgBottom>=winData.t && imgBottom<winData.b) || //BL somewhere on screen
(imgRight>=winData.l && imgRight<winData.r && imgBottom>=winData.t && imgBottom<winData.b) || //BR somewhere on screen
(imgLeft<winData.l && imgRight>winData.r && imgTop>=winData.t && imgTop<winData.b) || //L offscreen L and R offscreen R, top on screen
(imgLeft<winData.l && imgRight>winData.r && imgBottom>=winData.t && imgBottom<winData.b) || //L offscreen L and R offscreen R, bottom on screen
(imgTop<winData.t && imgBottom>winData.b && imgLeft>=winData.l && imgLeft<winData.r) || //T offscreen T and B offscreen B, left on screen
(imgTop<winData.t && imgBottom>winData.b && imgRight>=winData.l && imgRight<winData.r) || //T offscreen T and B offscreen B, right on screen
(imgLeft<winData.l && imgRight>winData.r && imgTop<winData.t && imgBottom>winData.b) //All sides offscreen
Ok doh I made something of a meal of that… too much else to think about that day I think 🙂