Jim Hurley wrote:
on mouseUp
    put field 1 into tList
    put 0 into area
    put  line 1 of tList into pOld
    repeat with i = 1 to the number of lines in tList
      put  line i of tList into  pNew
      add thisToArea(pNew,pOld) to area
      put pNew into pOld
    end repeat
    put area
end mouseUp

function thisToArea ptNew,ptOld
    put item 1 of ptNew into xNew
    put item 2 of ptNew into yNew
    put item 1 of ptOld into xOld
    put item 2 of ptOld into yOld
    return -(xNew - xOld)*(yNew + yOld)/2
end thisToArea


> put line 1 of tList into pOld



Dar Scott wrote:


Should this be -1 to get the last edge?



Dar,

Actually it contributes nothing to the area since the first term in the sum is the area under the line joining the first point with itself; not very smart but, no harm, no foul. It would have been more sensible if I had started the sum with i = 2.

Since the last point in the list is identical to the first point (it is a *closed* polygon), the last edge is included by performing the repeat up to the number of lines (points in the polygon) in tList.

But a cleaner (and faster) version might be:

on mouseUp
    put field 1 into tList
    put 0 into area
    put  line 1 of tList into pOld
    repeat for each line tLine in tList
      add thisToArea(tLine,pOld) to tArea
      put tLine into pOld
    end repeat
    put tArea
end mouseUp

But you still get no contribution from the first repeat, but what is 0 among friends.

Regards,

Jim
_______________________________________________
use-revolution mailing list
[EMAIL PROTECTED]
http://lists.runrev.com/mailman/listinfo/use-revolution

Reply via email to