Function Newbie question...

Dar Scott dsc at swcp.com
Fri Dec 6 13:01:00 EST 2002


On Friday, December 6, 2002, at 03:17 AM, Malte Brill wrote:

> O.K., but if I have more than two objects (lets say about 5). how 
> could I
> check the distances between all of them efficiantly?
>
> 1->2 2->1
> 1->3 2->3
> 1->4 2->4
> 1->5 2->5 ... 5->4
>
> Using a repeat structure seams not being a good idea to me.

What about 20? 300?

If you want to _calculate_ the distances among n objects you will need 
to to calculate n(n-1)/2 distances.  It may be the easiest way to do 
this is to do n^2 calculations, or n(n-1) calculations as Ken Ray 
suggested.  One way to do the n(n-1)/2 calculations is to have a list of 
objects and go through the list calculating the distances of each object 
to the objects below it.

However, if you want to _check_ distances, say find out which pairs are 
closer than some threshold, there are probably ways to cut down on the 
number of calculations.  You can sort them into bins and only check 
pairs in the same or adjacent bins.

If you need to calculate/check only a few, then something like Ken's 
example should work.  (If you want to tweak that, try changing the start 
value for y to x+1 and leaving out the equality test.  And the last loop 
for x is not needed.)

Note that his example used your distance function and built upon it.

To calculate the pairs of distances, the repeat is probably the best way 
to go.  If you are comfortable with recursion, then you might want to 
try that.

Dar Scott






More information about the use-livecode mailing list