on 3/21/03 9:46 PM, Jim Hurley at [EMAIL PROTECTED] wrote: >> 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, >
Not quite: you are repeating the first line, but that does not mean that you are closing the loop. Now if you have a filled polygon, the first line and the last line in the points are the same, so you have no problem. OTOH, if you don't have a filled polygon or are simply submitting a set of points, you should do this: put line -1 of tList into pOld This will close the loop, and it is unlikely (though possible) that the contribution will be equal to 0. But the loop *must* be closed. If it is not closed you will likely get the wrong area. Cheers! Raymond _______________________________________________ use-revolution mailing list [EMAIL PROTECTED] http://lists.runrev.com/mailman/listinfo/use-revolution