[OT] Poll: What does it mean for 1 rect to be 'within' a certain distance of another rect?

Alex Tweedly alex at tweedly.net
Tue Feb 16 08:26:47 EST 2021


Hi Henk,

No, it's maybe not obvious but it does take all cases into account.

If the smallest distance is between corners of each rectangle - only 
then does the 'sqrt' have real meaning. In all other cases, one or other 
of the DX and DY comes out as 0.

------
  |    |
| R1 |  ------
  |    |  |    |
  |    |  | R2 |
  ------  |    |
          -----


So if there is an overlap in one dimension, (Y above) then DY is 
calculated as 0 - and the result is the distance in X (i.e. sqrt(DX*DX+0) ).

Alex.


On 16/02/2021 07:45, Henk van der Velden via use-livecode wrote:
> Alex,
> No one would challenge your definition I think, but your solution only takes the corner points into account, right? So this wouldn’t give correct results in case the rectangles have different sizes or are positioned obliquely.
>
> Henk
>
>
>> On 16 Feb 2021, at 03:12, use-livecode-request at lists.runrev.com wrote:
>>
>> For me, a more precise problem specification is:
>>
>> Given two rectangles (in regular Livecode format), the distance between
>> them is :
>>
>> ?- if they touch or overlap, distance is zero.
>>
>> ?- otherwise, it's the smallest distance from any point in R1 to any
>> point in R2.
>>
>> Which leads to a simple solution
>>
>>> function rdist R1, R2
>>> ?? local DX, DY
>>> ?? put max( item 1 of R1 - item 3 of R2, item 1 of R2 - item 3 of R1,
>>> 0) into DX
>>> ?? put max( item 2 of R1 - item 4 of R2, item 2 of R2 - item 4 of R1,
>>> 0) into DY
>>> ?? return sqrt( DX*DX + DY * DY)
>>> end rdist
>>>
>> Alex.
> _______________________________________________
> use-livecode mailing list
> use-livecode at lists.runrev.com
> Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
> http://lists.runrev.com/mailman/listinfo/use-livecode



More information about the use-livecode mailing list