Which points of a set of points are closest to me/ any fixed point?
(or: Who is closest for trying to catch in the schoolyard?)
To make it easier for the kids among you the following is also attached as stack.
Code: Select all
-- script button "closest points", for explaining the approach on mouseUp lock screen; lock messages put the points of grc "setOfPoints" into p0 -- any number of lines of points put the loc of grc "redOval" into p1 -- the point of interest put item 1 of p1 into x0; put item 2 of p1 into y0 -- now compute the distances with the help of a sum of absolute values repeat for each line p in p0 if p is empty then next repeat put cr & abs(x0 - item 1 of p) + abs(y0 - item 2 of p) &","& p after ds end repeat delete char 1 of ds sort ds numeric by item 1 of each put ds into fld "distances" put item 2 to 3 of line 1 of ds into p2 set layer of grc "redOval" to top set layer of grc "connectingLine" to top show grc "connectingLine" set points of grc "connectingLine" to p1 & cr & p2 unlock screen; unlock messages end mouseUp -- next two are the script of grc "redOval" on mouseDown hide grc "connectingLine" grab me end mouseDown on mouseUp send "mouseUp" to btn "closest points" end mouseUp
Imagine a certain product, say a TV.
On the vertical line you hace the prices, from low at bottom up to high at top.
In horizontal direction you have quality, from low at left to high at right.
Now set your prefered point (redOval) determining a price and a quality level.
Then compute the closest product point to your prefered point.
Having this it is easy to have more dimensions, say you split your "quality" criterium into three different kinds.
Then your points have four dimensions and you set your preference point again to a point (x1,x2,x3,x4) and compute the distances to the other points as above, simply using adding absolute values of four differences instead of two.
Very simple. Isn't it? Difficult is only to visualize four dimensions, but we don't need this for our decision.
Edit. Changed picture and stack, text of *describing field* in that was wrong, sorry (I made this originally for euclidian distance), scripts are unchanged.