[OT] Poll: What does it mean for 1 rect to be 'within' a certain distance of another rect?
paul at researchware.com
Tue Feb 16 16:43:02 EST 2021
On 2/16/2021 2:46 PM, Alex Tweedly via use-livecode wrote:
> Paul - if you need to do this (i.e. find pairs of rects which are too
> close) for LARGE numbers of rects, I have some code to do this very
> efficiently (somewhere in an old archive, just ready to translate from
> C to LC). It uses a 'trailing window horizontal scan' so reduces the
> complexity/time from N^2 to N log N
The actual application is for a product my company Researchware produces
called HyperRESEARCH for performing qualitative data analysis.
Researchers can take unstructured content (text files, word documents,
PDFs, images, audio, video, etc.) and make selection and apply a "code"
or label to the selection and perform various analytics.
In this specific case there is an interest in generating the following
"report". If I have coded some rectangular area of an image file with
the code "A", report on what other of my many codes on that image file
are "within" X pixels of my code A and list those codes. So the
researcher would select code "A" and a range, like 50px, and get a list
of codes B, E, F, and G which either overlap with A or are within 50px.
If they change the distance to 200px, then maybe the report returns
codes B, E, F, G, H, I J, K, L, M, N, and Z.
The report generator is not working with graphic objects (actual LC
rects, but just with lists of stored rectangles (l,t,r,b), so everything
is in variables and it is just tacking the rect of A and comparing it to
the remaining N-1 rects in the list of codes for that image file. So it
will always be an N-1 task for each file where N is the number of codes
the researcher applied to the content of the file. Worst case would be
if they want to see what codes are within X distance of every code on
the file which makes it an N(N-1) or N^2-N problem but most researchers
would not have very large numbers of iimage codes.
More information about the use-livecode