REVO2700@ Bezier LineZ1on openstack palette this stack end openstack   UGeneva UTimes UTimes WGenevaUGeneva UGeneva WGeneva WTimes cREVGeneral debugObjectscard id 1002 of stack "Untitled 2" graphic id 1011 of card id 1002 of stack "Bezier control" button id 1017 of card id 1002 of stack "Bezier control" graphic id 1011 of group id 1015 of card id 1002 of stack "Bezier control" graphic id 1010 of group id 1015 of card id 1002 of stack "Bezier control" graphic id 1078 of group id 1077 of card id 1002 of stack "Bezier control" group id 1077 of card id 1002 of stack "GroupBezier" button id 1017 of card id 1002 of stack "GroupBezier" button id 1179 of card id 1145 of stack "Bezier help" of stack "Bezier Line" graphic id 1011 of group id 1015 of card id 1002 of stack "Bezier Line" button id 1017 of card id 1002 of stack "Bezier Line" button id 1086 of card id 1002 of stack "Bezier Line" P5on preopencard palette this stack end preopencard ]] cREVGeneral breakPoints45=>@%Paste bezier curve onto card grahic.Exon mouseup answer "Click on the graphic to be transformed into a bezier line." with "OK" or "Cancel" if it is not "OK" then exit mouseUP copy group "GroupBezier" --put group "BezierGroup" into tBezierGroup wait until the mouseclick put the clickstack into tStackName put the clickLoc into tClickPoint go stack tStackName repeat with i = 1 to the number of graphics in stack tStackName put the short name of graphic i into TheTemp put the rect of graphic i into temp --of stack tStackName into temp if tClickPoint is within the rect of graphic i then put the name of graphic i into tGraphicName end if end repeat if tGraphicName is "" then Answer "Couldn't find the graphic. Try again." with "OK" exit mouseUP end if if "Bezier" is in the short name of tStackName then beep answer "Can't add bezier line to this stack." with "OK" exit mouseUP end if Ask "Assign a unique name to the bezier group." with "Foo" if it is "" then exit mouseUP set the cursor to hand repeat with i = 1 to the number of groups --on this card of this stack if it is in the short name of group i then beep answer "There is already a graphic of this name. Change the name." with "OK" exit mouseUp end if end repeat set the name of grc tGraphicName to it put it into tGraphicName set the style of grc tGraphicName to "line" put it & "Bezier" into tGroupName put tGroupName into tBaseGroupName put the points of grc tGraphicName into tGraphicPoints if the last line of tGraphicPoints = the first line of tGraphicPoints then \ delete the last line of tGraphicPoints put the number of lines in tGraphicPoints -1 into tNumberOfBezierGroups repeat with i = 1 to tNumberOfBezierGroups put i,i+1 into line i of tPairList end repeat repeat with i =1 to tNumberOfBezierGroups put line (item 1 of line i of tPairList)of tGraphicPoints into line 1 of tPairPoints[i] put line (item 2 of line i of tPairList) of tGraphicPoints into line 2 of tPairPoints[i] end repeat paste set the name of the last group to tGroupName setTheHandleLocs tGroupName,tPairPoints[1] setGraphicProperties tGroupName repeat with i = 2 to tNumberOfBezierGroups clone group tGroupName put tGroupName &"A" into tGroupName set the name of the last group to tGroupName set the loc of group tGroupName to 300,300 setTheHandleLocs tGroupName,tPairPoints[i] setGraphicProperties tGroupName setCustomCoordinates tGroupName end repeat setTheLayersOfR4 tBaseGroupName hide graphic tGraphicName end mouseUP on setTheHandleLocs tGroup,tPointList put line 1 of tPointList into r1 put line 2 of tPointList into r4 put item 1 of r1 into x1 put item 2 of r1 into y1 put item 1 of r4 into x4 put item 2 of r4 into y4 put (3*x1+x4)div 4, (3*y1+y4)div 4 into r2 put (x1+3*x4)div 4, (y1+3*y4)div 4 into r3 set the loc of grc "r1" of group tGroup to r1 set the loc of grc "r2" of group tGroup to r2 set the loc of grc "r3" of group tGroup to r3 set the loc of grc "r4" of group tGroup to r4 set the points of grc "tangentStartLine" of group tGroup to r1 & return &r2 set the points of grc "tangentEndLine" of group tGroup to r3 & return & r4 set the points of grc "bezierLine" of group tGroup to r1 & return & r4 end setTheHandleLocs on setCustomCoordinates theOwner put the loc of grc "r2" of group theOwner into tR2Loc put the loc of grc "r1" of group theOwner into tR1Loc put item 1 of tR2Loc - item 1 of tR1Loc into dx2 put item 2 of tR2Loc - item 2 of tR1Loc into dy2 set the dx of grc "r2" of group theOwner to dx2 set the dy of grc "r2" of group theOwner to dy2 put the loc of grc "r3" of group theOwner into tR3Loc put the loc of grc "r4" of group theOwner into tR4Loc put item 1 of tR4loc - item 1 of tR3Loc into dx3 put item 2 of tR4Loc - item 2 of tR3Loc into dy3 set the dx of grc "r3" of group theOwner to dx3 set the dy of grc "r3" of group theOwner to dy3 end setCustomCoordinates on setGraphicProperties tGroup set the r1 of grc "BezierLine" of group tGroup to the loc of grc "r1" of group tGroup set the r2 of grc "BezierLine" of group tGroup to the loc of grc "r2" of group tGroup set the r3 of grc "BezierLine" of group tGroup to the loc of grc "r3" of group tGroup set the r4 of grc "BezierLine" of group tGroup to the loc of grc "r4" of group tGroup send "mouseUP" to grc "r2" of group tGroup send "mouseUP" to grc "r3" of group tGroup end setGraphicProperties on setTheLayersOfR4 tName set the layer of group tName to top repeat put tName & "A" into tName if there is group tName then set the layer of group tName to bottom else exit repeat end repeat end setTheLayersOfR4 function characterMax tList put 0,0 into theMax repeat with i = 1 to the number of items in tList put the number of chars in item i of tList into theNum if theNum> item 2 of theMax then put i,theNum into theMax end repeat return item (item 1 of theMax) of tList end characterMax ??$P cREVGeneral revUniqueID 1082262794709 breakPoints10 37 Field 1)`x cREVGeneral revUniqueID 1082592352204  Instructions @ @ tYou see above the elemental components of the bezier curve. First, experiment a little with the curve above. There are two end points, blue and red. Each has a tangent control, yellow and green, which determine the slope and curvature at the end points. By double clicking on the line itself, the controls are hidden. You may move the entire group by "grabbing" the line. @s @ Paste this curve onto any line graphic on another card of another stack as outlined below. (You can't paste it onto this plug-in stack.) @ @ 1) Create a line graphic on the card. Use the polygon tool and double click to complete. (You may also want to set the style to "line" rather than polygon.) @ @ 2) Next click on the Paste the bezier line button above, and then on the graphic line you which to convert to a bezier curve. (If this is a vertical or horizontal line, it may be difficult to find. Keep trying. Better still, don't use vertical or horizontal lines to begin with.) @ @ 3) Give the line a unique name. (The bezier curve is placed on the card--the original line remains intact, but is hidden. It may be deleted.) @ @ Each segment of the line graphic becomes a bezier line segment. They work as a unit because there is a vocabulary built into the controls which allows nearest neighbors to talk to one another (gossip). @ @ IThere is a fair bit of overhead associated wtih the bezier line. The burden to your stack size can be reduced (by a hundred K perhaps) by using the "Replace bezier line with a line graphic" button below. Click on it, click on the bezier line, and it will put the graphic points on the bezier line sements into a varibale and then set the points of the original line to those points, so that you wind up with a simple graphic line in the shape of the bezier line sans all the bezier controls and their scripts. Of course you will no longer be able to use the bezier tools on this line. @H @ This is not intended to be a commercial product. It has some rough edges. But hopefully it will be useful to seasoned Revolutionaries. @   `y=Behind the scenesEx4on mouseUP go to stack "Bezier help" end mouseUP TT cREVGeneral revUniqueID 1083101057828 5 GroupBezieri@on resetLayers put the short name of me into tName put offset("bezier",tName)+5 into tNum put char 1 to tNum of tName into tBaseName repeat if there is a group tBaseName then set the layer of group tBaseName to bottom put tBaseName & "A" into tBaseName else exit repeat end repeat end resetLayers on resetProperties tGroup put theBaseName(tGroup) into tBaseName repeat if there is a group tBaseName then put the name of group tBaseName into tOwner set the r1 of grc "BezierLine" of tOwner to the loc of grc "r1" of tOwner set the r2 of grc "BezierLine" of tOwner to the loc of grc "r2" of tOwner set the r3 of grc "BezierLine" of tOwner to the loc of grc "r3" of tOwner set the r4 of grc "BezierLine" of tOwner to the loc of grc "r4" of tOwner put tBaseName & "A" into tBaseName else exit repeat end repeat end resetProperties function theBaseName tGroupName put offset("bezier",tGroupName)+5 into tNum put char 1 to tNum of tGroupName into theBaseName return theBaseName end theBaseName IU"dx23dy16r3138,146 cREVGeneral revUniqueID 1083082872873 breakPoints2 156 BezierLineKV local myName, tOwner, dx, dy,theGroupNames,theGroupDisplacement,theBaseGroupName on mouseDown put the name of me into myName put the owner of me into tOwner put the short name of the owner of me into tGroupName repeat if the last char of tGroupName is "A" then delete the last char of tGroupName else exit repeat end repeat put tGroupName into theBaseGroupName repeat if there is a group tGroupName then put the loc of group tGroupName into tGroupLoc put mouseH() -item 1 of tGroupLoc into dx put mouseV() - item 2 of tGroupLoc into dy put dx,dy into theGroupDisplacement[tGroupName] put tGroupName & "A" into tGroupName else exit repeat end repeat end mouseDown on mouseMove x,y if myName is "" then exit mouseMove put theBaseGroupName into tGroupName repeat --with i = 1 to the number of lines in the keys of theGroupNames if there is a group tGroupName then put theGroupDisplacement[tGroupName] into tGroupDisplacement --put theGroupNames[i] into tGroupName set the loc of group tGroupName to x- item 1 of tGroupDisplacement,y- item 2 of tGroupDisplacement put tGroupName & "A" into tGroupName else exit repeat end repeat end mouseMove on mouseUP put "" into myName if the shiftKey is down then put "" into myName end if resetProperties the short name of the owner of me resetLayers end mouseUP on mouseDoubleUP put the the short name of owner of me into tGroupName repeat if the last char of tGroupName is "A" then delete the last char of tGroupName else exit repeat end repeat repeat if there is a group tGroupName then hideControls tGroupName put tGroupName & "A" into tGroupName else exit repeat end repeat end mouseDoubleUp on hideControls theOwnerName put "r1","r2","r3","r4","tangentStartLine","tangentEndLine" into tGraphicList if the visible of grc "r1" of group theOwnerName is true then repeat with i = 1 to 6 set the visible of grc item i of tGraphicList of group theOwnerName to false end repeat else repeat with i = 1 to 6 set the visible of grc item i of tGraphicList of group theOwnerName to true end repeat end if end hideControls on mouseEnter put "" into myName end mouseEnter on doMove put the r1 of me into pt1 put the r2 of me into pt2 put the r3 of me into pt3 put the r4 of me into pt4 repeat with i = 0 to 50 put i/50 into t put 1-t into s repeat with j = 1 to 2 put round(s*s*s*item j of pt1 + 3*s*s*t*item j of pt2 + \ 3*s*t*t*item j of pt3 + t*t*t*item j of pt4) into item j of thePt end repeat put thePt & return after tPoints end repeat set the points of grc "BezierLine" of the owner of me to tPoints end doMove on mouseRelease put "" into myName end mouseRelease on setGraphicProperties tOwner set the r1 of grc "BezierLine" of tOwner to the loc of grc "r1" of tOwner set the r2 of grc "BezierLine" of tOwner to the loc of grc "r2" of tOwner set the r3 of grc "BezierLine" of tOwner to the loc of grc "r3" of tOwner set the r4 of grc "BezierLine" of tOwner to the loc of grc "r4" of tOwner end setGraphicProperties N Ir179,23r293,7r3138,5r4150,223OPQRSTUWXY[\^_ a b d f g i k l n p r s u w x z | ~   cREVGeneral revUniqueID 1082203845787 breakPoints247tangentStartLineKFNO] cREVGeneral revUniqueID 10822060148678tangentEndLineKF cREVGeneral revUniqueID 10822060148819r1KTlocal myName,dx2,dy2 on mouseDown put the name of me into myName put the owner of me into tOwner getCustomCoordinates end mouseDown on setCustomCoordinates put the owner of me into tOwner put the loc of grc "r2" of tOwner into tR2Loc put the loc of me into tLoc put item 1 of tloc - item 1 of tR2Loc into dx2 put item 2 of tLoc - item 2 of tR2Loc into dy2 set the dx of grc "r2" of tOwner to -dx2 set the dy of grc "r2" of tOwner to -dy2 end setCustomCoordinates on getCustomCoordinates put the owner of me into tOwner put the dx of grc "r2" of tOwner into dx2 put the dy of grc "r2" of tOwner into dy2 end getCustomCoordinates on mouseUP put "" into myName end mouseUP on mousemove u,v if myName is "" then exit mouseMove doMouseMove u,v end mouseMove on doMouseMove u,v set loc of me to u,v put the owner of me into tOwner set the r1 of grc "BezierLine" of tOwner to u,v getCustomCoordinates send "doMouseMove u+dx2,v+dy2" to grc "r2" of tOwner setCustomCoordinates put u,v & return & the loc of grc "r2" of tOwner after tTangentStartPoints set the points of grc "TangentStartLine" of tOwner to tTangentStartPoints send "doMove" to grc "bezierLine" of tOwner end doMouseMove on mouseRelease mouseUp end mouseRelease ""Mh cREVGeneral revUniqueID 1082200959159 breakPoints36:r2KP local myName,tOwner,tPreviousOwnerName,dx2,dy2,dx3,dy3 on mouseDown put the name of me into myName put the owner of me into tOwner put the short name of tOwner into tOwnerName put tOwnerName into tPreviousOwnerName delete last char of tPreviousOwnerName end mouseDown on mouseUP put "" into myName end mouseUP on mouseEnter put "" into myName end mouseEnter on getCustomCoordinates put the owner of me into tOwner put the dx of grc "r2" of tOwner into dx2 put the dy of grc "r2" of tOwner into dy2 if there is a group tPreviousOwnerName then put the dx of grc "r3" of group tPreviousOwnerName into dx3 put the dy of grc "r3" of group tPreviousOwnerName into dy3 end if end getCustomCoordinates on setCustomCoordinates put the loc of grc "r1" of tOwner into tR1Loc put the loc of me into tLoc put item 1 of tloc - item 1 of tR1Loc into ddx put item 2 of tLoc - item 2 of tR1Loc into ddy set the dx of me to ddx set the dy of me to ddy end setCustomCoordinates on mousemove u,v if myName is "" then exit mouseMove doMouseMove u,v end mouseMove on moveMe u,v if the shiftkey is down then exit to top set loc of me to u,v put the owner of me into tOwner set the r2 of grc "BezierLine" of tOwner to u,v setcustomCoordinates if there is a group tPreviousOwnerName then getCustomCoordinates put (sqrt((dx2^2 + dy2^2)/ (dx3^2+dy3^2))) into temp put 1/temp into temp put the loc of grc "r1" of tOwner into tRedLoc put round(item 1 of tRedLoc - temp*dx2) into x2 put round(item 2 of tRedLoc - temp * dy2) into y2 setCustomCoordinates end if put u,v & return & the loc of grc "r1" of tOwner after tTangentStartPoints set the points of grc "TangentStartLine" of tOwner to tTangentStartPoints send "doMove" to grc "bezierLine" of tOwner end moveMe on doMouseMove u,v moveMe u,v if there is a group tPreviousOwnerName then put the backgroundColor of grc "r4" of group tPreviousOwnerName into tColor end if switch tColor case red if there is a group tPreviousOwnerName then getCustomCoordinates put (sqrt((dx2^2 + dy2^2)/ (dx3^2+dy3^2))) into temp put 1/temp into temp put the loc of grc "r1" of tOwner into tRedLoc put round(item 1 of tRedLoc - temp*dx2) into x2 put round(item 2 of tRedLoc - temp * dy2) into y2 setCustomCoordinates end if put u,v & return & the loc of grc "r1" of tOwner after tTangentStartPoints set the points of grc "TangentStartLine" of tOwner to tTangentStartPoints send "moveMe x2,y2" to grc "r3" of group tPreviousOwnerName send "doMove" to grc "bezierLine" of tOwner break end switch end doMouseMove put u,v & return & the loc of grc "r1" of tOwner after tTangentStartPoints set the points of grc "TangentStartLine" of tOwner to tTangentStartPoints send "doMove" to grc "bezierLine" of tOwner setCustomCoordinates end doMouseMove on mouseRelease mouseUp end mouseRelease Ydx14dy-16 cREVGeneral revUniqueID 1082201057991 breakPoints;r3KP local myName,tNextOwnerName,dx2,dy2,dx3,dy3,tOwner on mouseDown put the name of me into myName put the owner of me into tOwner put the short name of tOwner into tOwnerName put tOwnerName & "A" into tNextOwnerName --getCustomCoordinates end mouseDown on setMeStraight mouseDown getCustomCoordinates doMouseMove mouseH() -dx3,mouseV() - dy3 put "" into myName end setMeStraight on getCustomCoordinates put the owner of me into tOwner put the dx of grc "r3" of tOwner into dx3 put the dy of grc "r3" of tOwner into dy3 put the short name of tOwner&"A" into tNextOwnerName if there is a group tNextOwnerName then put the dx of grc "r2" of group tNextOwnerName into dx2 put the dy of grc "r2" of group tNextOwnerName into dy2 end if end getCustomCoordinates on mouseEnter put "" into myName end mouseEnter on mouseUP put "" into myName setCustomCoordinates end mouseUP on setCustomCoordinates put the owner of me into tOwner put the loc of grc "r4" of tOwner into tR4Loc put the loc of me into tR3Loc put item 1 of tR4Loc - item 1 of tR3Loc into ddx put item 2 of tR4Loc - item 2 of tR3Loc into ddy set the dx of me to ddx set the dy of me to ddy end setCustomCoordinates on mousemove u,v if myName is "" then exit mouseMove doMouseMove u,v end mouseMove on moveMe u,v set loc of me to u,v put the owner of me into tOwner set the r3 of grc "BezierLine" of tOwner to u,v put u,v & return & the loc of grc "r4" of tOwner after tTangentEndPoints set the points of grc "TangentEndLine" of tOwner to tTangentEndPoints if there is a group tNextOwnerName then getCustomCoordinates put the loc of grc "r4" of tOwner into tRedLoc put (sqrt((dx2^2 + dy2^2)/ (dx3^2+dy3^2))) into temp put round(item 1 of tRedLoc + temp*dx3) into x2 put round(item 2 of tRedLoc + temp * dy3) into y2 setCustomCoordinates end if send "doMove" to grc "bezierLine" of tOwner end moveMe on doMouseMove u,v if the shiftKey is down then exit to top moveMe u,v put the backgroundColor of grc "r4" of tOwner into tColor switch tColor case red if there is a group tNextOwnerName then getCustomCoordinates put (sqrt((dx2^2 + dy2^2)/ (dx3^2+dy3^2))) into temp put the loc of grc "r4" of tOwner into tRedLoc put round(item 1 of tRedLoc + temp*dx3) into x2 put round(item 2 of tRedLoc + temp * dy3) into y2 setCustomCoordinates end if put u,v & return & the loc of grc "r4" of tOwner after tTangentEndPoints set the points of grc "TangentEndLine" of tOwner to tTangentEndPoints if there is a group tNextOwnerName then send "moveMe x2,y2" to grc "r2" of group tNextOwnerName end if break case black put u,v & return & the loc of grc "r4" of tOwner after tTangentEndPoints set the points of grc "TangentEndLine" of tOwner to tTangentEndPoints send "doMove" to grc "bezierLine" of tOwner break end switch end doMouseMove on mouseRelease mouseUp end mouseRelease // dx12dy17 cREVGeneral revUniqueID 1082201058379 breakPoints1 15 49<r4KTlocal myName,tOwner,dx3,dy3 on mouseDown put the name of me into myName put the owner of me into theOwner put theOwner into tOwner getCustomCoordinates theOwner setCustomCoordinates theOwner end mouseDown on setCustomCoordinates theOwner put the loc of grc "r3" of theOwner into tR3Loc put the loc of me into tLoc put item 1 of tloc - item 1 of tR3Loc into dx3 put item 2 of tLoc - item 2 of tR3Loc into dy3 set the dx3 of grc "r3" of theOwner to dx3 set the dy3 of grc "r3" of theOwner to dy3 end setCustomCoordinates function theNextOwner thisOwner put the short name of thisOwner into tOwnerName put tOwnerName & "A" into tNewOwnerName if there is a group tNewOwnerName then put the long name of group tNewOwnerName into tNextGroup else put thisOwner into tNextGroup return tNextGroup end theNextOwner on getCustomCoordinates theOwner --put the owner of me into tOwner put the dx of grc "r3" of theOwner into dx3 put the dy of grc "r3" of theOwner into dy3 end getCustomCoordinates on mouseUP put "" into myName end mouseUP on mousemove u,v if myName is "" then exit mouseMove doMouseMove u,v end mouseMove on doMouseMove u,v put the owner of me into tOwner set loc of me to u,v set the r4 of grc "BezierLine" of tOwner to u,v set the loc of grc "r3" of tOwner to u-dx3,v-dy3 set the r3 of of grc "BezierLine" of tOwner to u-dx3,v-dy3 put u,v & return & the loc of grc "r3" of tOwner after tTangentEndPoints set the points of grc "TangentEndLine" of tOwner to tTangentEndPoints send "doMove" to grc "bezierLine" of tOwner put the short name of the owner of me into tOwnerName put tOwnerName & "A" into tNextGroupName if there is a group tNextGroupName then send "doMouseMove u,v" to grc "r1" of group tNextGroupName end if end doMouseMove on mouseEnter put "" into myName end mouseEnter on mouseRelease mouseUp end mouseRelease on mouseDoubleUp if the backgroundcolor of me is red then set the backgroundcolor of me to black else set the backgroundcolor of me to red send "setMeStraight" to grc "r3" of group the owner of me end if resetLayers doMouseMove mouseh(),mouseV() end mouseDoubleUp blackh cREVGeneral revUniqueID 1082201059002 breakPoints17 40>(Replace bezier line with a line graphicExon mouseup answer "Click on the bezier line to be replaced." with "OK" or "Cancel" if it is not "OK" then exit mouseUP --copy group "GroupBezier" --put group "BezierGroup" into tBezierGroup wait until the mouseclick put the clickstack into tStackName put the clickLoc into tClickPoint go stack tStackName repeat with i = 1 to the number of graphics in stack tStackName put the short name of graphic i into TheTemp --put the rect of graphic i into temp --of stack tStackName into temp if tClickPoint is within the rect of graphic i then put the name of graphic i into tGraphicName put the owner of tGraphicName into tempOwner if "bezier" is in tempOwner then exit repeat end if end repeat if tGraphicName is "" then Answer "Couldn't find the graphic. Try again." with "OK" exit mouseUP end if if "Bezier" is in the short name of tStackName then beep answer "Can't add bezier line to this stack." with "OK" exit mouseUP end if put the owner of tGraphicName into theGroup put the short name of the owner of tGraphicName into theGroupName repeat if the last char of theGroupName is "a" then delete the last char of theGroupName else exit repeat end repeat put theGroupName into theGraphicName delete char -6 to -1 of theGraphicName set the visible of grc theGraphicName to true repeat if there is a group theGroupName then put the points in grc "bezierLine" of group theGroupName & return after tPoints delete group theGroupName else exit repeat put theGroupName & "A" into theGroupName end repeat set the points of grc theGraphicName to tPoints exit mouseUP -- -- Ask "Assign a unique name to the bezier group." with "Foo" -- if it is "" then exit mouseUP -- set the cursor to hand -- repeat with i = 1 to the number of groups --on this card of this stack -- if it is in the short name of group i then -- beep -- answer "There is already a graphic of this name. Change the name." with "OK" -- exit mouseUp -- end if -- end repeat -- set the name of grc tGraphicName to it -- put it into tGraphicName -- set the style of grc tGraphicName to "line" -- put it & "Bezier" into tGroupName -- put tGroupName into tBaseGroupName -- put the points of grc tGraphicName into tGraphicPoints -- if the last line of tGraphicPoints = the first line of tGraphicPoints then \ -- delete the last line of tGraphicPoints -- put the number of lines in tGraphicPoints -1 into tNumberOfBezierGroups -- repeat with i = 1 to tNumberOfBezierGroups -- put i,i+1 into line i of tPairList -- end repeat -- repeat with i =1 to tNumberOfBezierGroups -- put line (item 1 of line i of tPairList)of tGraphicPoints into line 1 of tPairPoints[i] -- put line (item 2 of line i of tPairList) of tGraphicPoints into line 2 of tPairPoints[i] -- end repeat -- paste -- set the name of the last group to tGroupName -- setTheHandleLocs tGroupName,tPairPoints[1] -- setGraphicProperties tGroupName -- repeat with i = 2 to tNumberOfBezierGroups -- clone group tGroupName -- put tGroupName &"A" into tGroupName -- set the name of the last group to tGroupName -- set the loc of group tGroupName to 300,300 -- setTheHandleLocs tGroupName,tPairPoints[i] -- setGraphicProperties tGroupName -- setCustomCoordinates tGroupName -- end repeat -- setTheLayersOfR4 tBaseGroupName -- hide graphic tGraphicName end mouseUP if the shiftKey is down then put the owner of me into theGroup put the short name of the owner of me into theGroupName repeat if the last char of theGroupName is "a" then delete the last char of theGroupName else exit repeat end repeat put theGroupName into theGraphicName delete char -6 to -1 of theGraphicName set the visible of grc theGraphicName to true repeat if there is a group theGroupName then put the points in grc "bezierLine" of group theGroupName & return after tPoints delete group theGroupName else exit repeat put theGroupName & "A" into theGroupName end repeat set the points of grc theGraphicName to tPoints exit mouseUP end if  cREVGeneral revUniqueID 1083589895325 breakPoints10 17 26 @FooCF9$N2: cREVGeneral revUniqueID 1083597164110 FooBezieri+. cREVGeneral revUniqueID 1082261968828 BezierLineKV local myName, tOwner, dx, dy on mouseDoubleUP put the the short name of owner of me into tGroupName repeat if the last char of tGroupName is "A" then delete the last char of tGroupName else exit repeat end repeat repeat if there is a group tGroupName then hideControls tGroupName put tGroupName & "A" into tGroupName else exit repeat end repeat end mouseDoubleUp on hideControls theOwnerName put "r1","r2","r3","r4","tangentStartLine","tangentEndLine" into tGraphicList if the visible of grc "r1" of group theOwnerName is true then repeat with i = 1 to 6 set the visible of grc item i of tGraphicList of group theOwnerName to false end repeat else repeat with i = 1 to 6 set the visible of grc item i of tGraphicList of group theOwnerName to true end repeat end if end hideControls --on mouseDoubleUP -- repeat with i = 1 to the number of graphics -- put the short Name of grc i into tName -- if "bezierLine" is in tName then -- put the owner of grc i into theOwner -- send "hideControls theOwner" to grc tName of theOwner -- end if -- end repeat --end mouseDoubleUp -- --on hideControls theOwner -- put "r1","r2","r3","r4","tangentStartLine","tangentEndLine" into tGraphicList -- if the visible of grc "r1" of theOwner is true then -- repeat with i = 1 to 6 -- set the visible of grc item i of tGraphicList of theOwner to false -- end repeat -- else -- repeat with i = 1 to 6 -- set the visible of grc item i of tGraphicList of theOwner to true -- end repeat -- end if --end hideControls on mouseUP put "" into myName setGraphicProperties the owner of me end mouseUP on mouseEnter put "" into myName end mouseEnter on doMove put the r1 of me into pt1 put the r2 of me into pt2 put the r3 of me into pt3 put the r4 of me into pt4 repeat with i = 0 to 100 put i/100 into t put 1-t into s repeat with j = 1 to 2 put round(s*s*s*item j of pt1 + 3*s*s*t*item j of pt2 + \ 3*s*t*t*item j of pt3 + t*t*t*item j of pt4) into item j of thePt end repeat put thePt & return after tPoints end repeat set the points of grc "BezierLine" of the owner of me to tPoints end doMove on mouseDown put the name of me into myName put the owner of me into tOwner put the loc of tOwner into tLoc put mouseH() -item 1 of tLoc into dx put mouseV() - item 2 of tLoc into dy end mouseDown on mouseMove x,y if myName is "" then exit mouseMove set the loc of tOwner to x-dx,y-dy end mouseMove on mouseRelease put "" into myName end mouseRelease on setGraphicProperties tOwner set the r1 of grc "BezierLine" of tOwner to the loc of grc "r1" of tOwner set the r2 of grc "BezierLine" of tOwner to the loc of grc "r2" of tOwner set the r3 of grc "BezierLine" of tOwner to the loc of grc "r3" of tOwner set the r4 of grc "BezierLine" of tOwner to the loc of grc "r4" of tOwner end setGraphicProperties "9r135,81r264,52r3140,51r4168,76e#Q$P%O&N'N(M)L*K+K,J-I.H/H0G2F3F4E5E7D8C9C;B<B=A?A@@A@C@D?F?G>I>J>L=M=O=P<R<S<U<V<X;Y;[;\;^;`;a:c:d:f:g:i:k:l:n:o:q:r:t:u;w;x;z;|;};<<<<====>>???@@AABBCCDDEEFGGHHIJKKL cREVGeneral revUniqueID 1082203845787 breakPoints5tangentStartLineKF"3@4#Q cREVGeneral revUniqueID 1082206014867tangentEndLineKF23L cREVGeneral revUniqueID 1082206014881r1KT5--Global r1 local myName,ddx,ddy on mouseDown put the name of me into myName put the owner of me into tOwner -- put the loc of grc "r2" of tOwner into tR2Loc -- put the loc of me into tLoc -- put item 1 of tloc - item 1 of tR2Loc into dx -- put item 2 of tLoc - item 2 of tR2Loc into dy -- put the dx of grc "r2" of tOwner into ddx -- put the dy of grc "r2" of tOwner into ddy end mouseDown on mouseUP put "" into myName end mouseUP on mousemove u,v if myName is "" then exit mouseMove doMouseMove u,v end mouseMove on doMouseMove u,v set loc of me to u,v put the owner of me into tOwner set the r1 of grc "BezierLine" of tOwner to u,v put the dx of grc "r2" of tOwner into ddx put the dy of grc "r2" of tOwner into ddy send "doMouseMove u-ddx,v-ddy" to grc "r2" of tOwner put u,v & return & the loc of grc "r2" of tOwner after tTangentStartPoints set the points of grc "TangentStartLine" of tOwner to tTangentStartPoints send "doMove" to grc "bezierLine" of tOwner end doMouseMove on mouseRelease mouseUp end mouseRelease ""Mh cREVGeneral revUniqueID 1082200959159 breakPoints14r2KPlocal myName,tOwner on mouseDown put the name of me into myName put the owner of me into tOwner end mouseDown on mouseUP put "" into myName put the owner of me into tOwner put the loc of grc "r1" of tOwner into tR1Loc put the loc of me into tLoc put item 1 of tloc - item 1 of tR1Loc into ddx put item 2 of tLoc - item 2 of tR1Loc into ddy set the dx of me to -ddx set the dy of me to -ddy end mouseUP on mousemove u,v if myName is "" then exit mouseMove doMouseMove u,v end mouseMove on doMouseMove u,v set loc of me to u,v put the owner of me into tOwner set the r2 of grc "BezierLine" of tOwner to u,v put u,v & return & the loc of grc "r1" of tOwner after tTangentStartPoints set the points of grc "TangentStartLine" of tOwner to tTangentStartPoints send "doMove" to grc "bezierLine" of tOwner end doMouseMove on mouseRelease mouseUp end mouseRelease <0dx-29dy29 cREVGeneral revUniqueID 1082201057991r3KPclocal myName on mouseDown put the name of me into myName end mouseDown on mouseUP put "" into myName put the owner of me into tOwner put the loc of grc "r4" of tOwner into tR4Loc put the loc of me into tR3Loc put item 1 of tR4Loc - item 1 of tR3Loc into ddx put item 2 of tR4Loc - item 2 of tR3Loc into ddy set the dx of me to ddx set the dy of me to ddy end mouseUP on mousemove u,v if myName is "" then exit mouseMove doMouseMove u,v end mouseMove on doMouseMove u,v set loc of me to u,v put the owner of me into tOwner set the r3 of grc "BezierLine" of tOwner to u,v put u,v & return & the loc of grc "r4" of tOwner after tTangentEndPoints set the points of grc "TangentEndLine" of tOwner to tTangentEndPoints send "doMove" to grc "bezierLine" of tOwner end doMouseMove on mouseRelease mouseUp end mouseRelease // /dx28dy25 cREVGeneral revUniqueID 1082201058379r4KT local myName,tOwner,ddx,ddy on mouseDown put the name of me into myName put the owner of me into tOwner put the dx of grc "r3" of tOwner into ddx put the dy of grc "r3" of tOwner into ddy end mouseDown on mouseUP put "" into myName end mouseUP on mousemove u,v if myName is "" then exit mouseMove doMouseMove u,v end mouseMove on doMouseMove u,v put the owner of me into tOwner set loc of me to u,v set the r4 of grc "BezierLine" of tOwner to u,v send "doMouseMove u-ddx,v-ddy" to grc "r3" of tOwner put u,v & return & the loc of grc "r3" of tOwner after tTangentEndPoints set the points of grc "TangentEndLine" of tOwner to tTangentEndPoints send "doMove" to grc "bezierLine" of tOwner if the backgroundcolor of me is red then put the short name of the owner of me into tOwnerName put tOwnerName & "A" into tNextGroupName if there is a group tNextGroupName then send "doMouseMove u,v" to grc "r1" of group tNextGroupName end if end if end doMouseMove on mouseRelease mouseUp end mouseRelease on mouseDoubleUp if the backgroundcolor of me is red then set the backgroundcolor of me to black put the short name of the owner of me into tName set the layer of group tName to top repeat put tName & "A" into tName if there is group tName then set the layer of group tName to bottom else exit repeat end repeat else set the backgroundcolor of me to red end if doMouseMove mouseh(),mouseV() end mouseDoubleUp blackHh cREVGeneral revUniqueID 1082201059002 breakPoints23 Bezier help@  UTimes WTimes UGeneva WGenevaUTimes UTimesWTimes WTimesUGeneva UGenevaWGeneva WGenevaUGeneva UGeneva WGenevaWGeneva UImpactUImpact UArialUArialWArial @"swx* @+-6.>?@ty @{zB @CEFNOPQRSTUWXYuh @Z[\]^_`abcdefgv Field 1)`yellowJ cREVGeneral revUniqueID 1083085666716  Programming model @ @ kThe basic unit of the multiple control bezier curve is the simple bezier curve with just two end points and no intermediate line controls. These units serve as building blocks for bezier curves with multiple line controls. We can put as many of these together as we like. The only problem then is to let them talk to one another. (It's almost cellular bilogogy.) j  0On the next card you can see how this is done. /myLineCFu)yGvo* cREVGeneral revUniqueID 1083086816594 +Field 1)`  cREVGeneral revUniqueID 1083087770031 * Below you see two "cells," actually groups. Built into neighborhing controls is the intercellular languge. To see it in action, drag the red end control on the left cell. You should see it snap to the adjacent blue dot, giving, in effect, a single bezier line with three line controls, two end controls and one intermediate--the original blue dot is not replaced, it is fixed underneath the red dot. Futhermore, you can se, by dragging the tangent controls, how the tangents are linked. If you doulble click on the middle red line control, it will turn black. This uncouples the slopes of adjoining curves. It becomes a corner point. You may drag then entire bezier line--click and drag--and you may hide all the controls by double clicking on the line. @ @ ]I found the mathematics behind the bezier curve interesting. It is explored on the next card @\ -TwoLineCFS)LTt*T cREVGeneral revUniqueID 10830878190146 FooBezierAi.m\dx23dy16r3138,146 cREVGeneral revUniqueID 10830878649557 BezierLineKV local myName, tOwner, dx, dy,theGroupNames,theGroupDisplacement on mouseDown put the name of me into myName put the owner of me into tOwner put 1 into tGroupNumber repeat with i = 1 to the number of groups if "bezier" is in the short name of group i then put the short name of group i into tGroupName put tGroupName into theGroupNames[tGroupNumber] put the loc of group i into tGroupLoc put mouseH() -item 1 of tGroupLoc into dx put mouseV() - item 2 of tGroupLoc into dy put dx,dy into theGroupDisplacement[tGroupNumber] add 1 to tGroupNumber end if end repeat end mouseDown on mouseUP put "" into myName repeat with i = 1 to the number of lines in the keys of theGroupNames put theGroupNames[i] into temp put the long name of group theGroupNames[i] into tGroup setGraphicProperties tGroup set the layer of group tGroup to top end repeat end mouseUP on mouseMove x,y if myName is "" then exit mouseMove repeat with i = 1 to the number of lines in the keys of theGroupNames put theGroupDisplacement[i] into tGroupDisplacement put theGroupNames[i] into tGroupName set the loc of group tGroupName to x- item 1 of tGroupDisplacement,y- item 2 of tGroupDisplacement end repeat end mouseMove on mouseDoubleUP repeat with i = 1 to the number of graphics put the short Name of grc i into tName if "bezierLine" is in tName then put the owner of grc i into theOwner send "hideControls theOwner" to grc tName of theOwner end if end repeat end mouseDoubleUp on hideControls theOwner put "r1","r2","r3","r4","tangentStartLine","tangentEndLine" into tGraphicList if the visible of grc "r1" of theOwner is true then repeat with i = 1 to 6 set the visible of grc item i of tGraphicList of theOwner to false end repeat else repeat with i = 1 to 6 set the visible of grc item i of tGraphicList of theOwner to true end repeat end if end hideControls on mouseEnter put "" into myName end mouseEnter on doMove put the r1 of me into pt1 put the r2 of me into pt2 put the r3 of me into pt3 put the r4 of me into pt4 repeat with i = 0 to 100 put i/100 into t put 1-t into s repeat with j = 1 to 2 put round(s*s*s*item j of pt1 + 3*s*s*t*item j of pt2 + \ 3*s*t*t*item j of pt3 + t*t*t*item j of pt4) into item j of thePt end repeat put thePt & return after tPoints end repeat set the points of grc "BezierLine" of the owner of me to tPoints end doMove on mouseRelease put "" into myName end mouseRelease on setGraphicProperties tOwner set the r1 of grc "BezierLine" of tOwner to the loc of grc "r1" of tOwner set the r2 of grc "BezierLine" of tOwner to the loc of grc "r2" of tOwner set the r3 of grc "BezierLine" of tOwner to the loc of grc "r3" of tOwner set the r4 of grc "BezierLine" of tOwner to the loc of grc "r4" of tOwner end setGraphicProperties S_r1199,328r2200,372r3292,297r4292,339eVWXZ[\]^^_`aabbcccddddddddddddddccccbbbaa```__^^]]\\[[ZZYYYXXWWV V V U UUUTTTTTTTTTTTTTUUUV V W!W!X"X"Y#Z#[#\$]$^$_$`$a cREVGeneral revUniqueID 1082203845787 breakPoints48tangentStartLineKFU.V cREVGeneral revUniqueID 10822060148679tangentEndLineKF"5,#`#6 cREVGeneral revUniqueID 1082206014881:r1KT--Global r1 local myName,dx2,dy2 on mouseDown put the name of me into myName put the owner of me into tOwner getCustomCoordinates end mouseDown on setCustomCoordinates put the owner of me into tOwner put the loc of grc "r2" of tOwner into tR2Loc put the loc of me into tLoc put item 1 of tloc - item 1 of tR2Loc into dx2 put item 2 of tLoc - item 2 of tR2Loc into dy2 set the dx of grc "r2" of tOwner to -dx2 set the dy of grc "r2" of tOwner to -dy2 end setCustomCoordinates on getCustomCoordinates put the owner of me into tOwner put the dx of grc "r2" of tOwner into dx2 put the dy of grc "r2" of tOwner into dy2 end getCustomCoordinates on mouseUP put "" into myName end mouseUP on mousemove u,v if myName is "" then exit mouseMove doMouseMove u,v end mouseMove on doMouseMove u,v set loc of me to u,v put the owner of me into tOwner set the r1 of grc "BezierLine" of tOwner to u,v getCustomCoordinates send "doMouseMove u+dx2,v+dy2" to grc "r2" of tOwner setCustomCoordinates put u,v & return & the loc of grc "r2" of tOwner after tTangentStartPoints set the points of grc "TangentStartLine" of tOwner to tTangentStartPoints send "doMove" to grc "bezierLine" of tOwner end doMouseMove on mouseRelease mouseUp end mouseRelease ""Rh cREVGeneral revUniqueID 1082200959159 breakPoints36;r2KPlocal myName,tOwner,tPreviousOwnerName,dx2,dy2,dx3,dy3 on mouseDown put the name of me into myName put the owner of me into tOwner put the short name of tOwner into tOwnerName put tOwnerName into tPreviousOwnerName delete last char of tPreviousOwnerName end mouseDown on mouseUP put "" into myName -- put the owner of me into tOwner -- setCustomCoor end mouseUP on mouseEnter put "" into myName end mouseEnter on getCustomCoordinates put the owner of me into tOwner put the dx of grc "r2" of tOwner into dx2 put the dy of grc "r2" of tOwner into dy2 if there is a group tPreviousOwnerName then put the dx of grc "r3" of group tPreviousOwnerName into dx3 put the dy of grc "r3" of group tPreviousOwnerName into dy3 end if end getCustomCoordinates on setCustomCoordinates put the loc of grc "r1" of tOwner into tR1Loc put the loc of me into tLoc put item 1 of tloc - item 1 of tR1Loc into ddx put item 2 of tLoc - item 2 of tR1Loc into ddy set the dx of me to ddx set the dy of me to ddy end setCustomCoordinates on mousemove u,v if myName is "" then exit mouseMove doMouseMove u,v end mouseMove on justMe u,v if the shiftkey is down then exit to top set loc of me to u,v put the owner of me into tOwner set the r2 of grc "BezierLine" of tOwner to u,v setcustomCoordinates if there is a group tPreviousOwnerName then getCustomCoordinates put (sqrt((dx2^2 + dy2^2)/ (dx3^2+dy3^2))) into temp put 1/temp into temp put the loc of grc "r1" of tOwner into tRedLoc put round(item 1 of tRedLoc - temp*dx2) into x2 put round(item 2 of tRedLoc - temp * dy2) into y2 setCustomCoordinates end if put u,v & return & the loc of grc "r1" of tOwner after tTangentStartPoints set the points of grc "TangentStartLine" of tOwner to tTangentStartPoints --send "doMouseMove x2,y2" to grc "r3" of group tPreviousOwnerName --send "JustMe x2,y2" to grc "r3" of group tPreviousOwnerName --set the loc of grc "r2" of group tPreviousOwnerName to x2,y2 --set the r2 of grc "BezierLine" of group tPreviousOwnerName to x2,y2 send "doMove" to grc "bezierLine" of tOwner end justme on doMouseMove u,v justMe u,v if there is a group tPreviousOwnerName then put the backgroundColor of grc "r4" of group tPreviousOwnerName into tColor end if switch tColor case red if there is a group tPreviousOwnerName then getCustomCoordinates put (sqrt((dx2^2 + dy2^2)/ (dx3^2+dy3^2))) into temp put 1/temp into temp put the loc of grc "r1" of tOwner into tRedLoc put round(item 1 of tRedLoc - temp*dx2) into x2 put round(item 2 of tRedLoc - temp * dy2) into y2 setCustomCoordinates end if put u,v & return & the loc of grc "r1" of tOwner after tTangentStartPoints set the points of grc "TangentStartLine" of tOwner to tTangentStartPoints --send "doMouseMove x2,y2" to grc "r3" of group tPreviousOwnerName send "JustMe x2,y2" to grc "r3" of group tPreviousOwnerName --set the loc of grc "r2" of group tPreviousOwnerName to x2,y2 --set the r2 of grc "BezierLine" of group tPreviousOwnerName to x2,y2 send "doMove" to grc "bezierLine" of tOwner break -- break -- case red -- put u,v & return & the loc of grc "r1" of tOwner after tTangentEndPoints -- set the points of grc "TangentEndLine" of tOwner to tTangentEndPoints -- send "doMove" to grc "bezierLine" of tOwner break end switch end doMouseMove put u,v & return & the loc of grc "r1" of tOwner after tTangentStartPoints set the points of grc "TangentStartLine" of tOwner to tTangentStartPoints send "doMove" to grc "bezierLine" of tOwner setCustomCoordinates end doMouseMove on mouseRelease mouseUp end mouseRelease ~44448888-15-15dx1dy44 cREVGeneral revUniqueID 1082201057991 breakPoints<r3KP nlocal myName,tNextOwnerName,dx2,dy2,dx3,dy3,tOwner on mouseDown put the name of me into myName put the owner of me into tOwner put the short name of tOwner into tOwnerName put tOwnerName & "A" into tNextOwnerName --getCustomCoordinates end mouseDown on getCustomCoordinates put the owner of me into tOwner put the dx of grc "r3" of tOwner into dx3 put the dy of grc "r3" of tOwner into dy3 put the short name of tOwner&"A" into tNextOwnerName if there is a group tNextOwnerName then put the dx of grc "r2" of group tNextOwnerName into dx2 put the dy of grc "r2" of group tNextOwnerName into dy2 end if end getCustomCoordinates on mouseEnter put "" into myName end mouseEnter on mouseUP put "" into myName setCustomCoordinates end mouseUP on setCustomCoordinates put the owner of me into tOwner put the loc of grc "r4" of tOwner into tR4Loc put the loc of me into tR3Loc put item 1 of tR4Loc - item 1 of tR3Loc into ddx put item 2 of tR4Loc - item 2 of tR3Loc into ddy set the dx of me to ddx set the dy of me to ddy end setCustomCoordinates on mousemove u,v if myName is "" then exit mouseMove doMouseMove u,v end mouseMove on justMe u,v set loc of me to u,v put the owner of me into tOwner set the r3 of grc "BezierLine" of tOwner to u,v put u,v & return & the loc of grc "r4" of tOwner after tTangentEndPoints set the points of grc "TangentEndLine" of tOwner to tTangentEndPoints if there is a group tNextOwnerName then getCustomCoordinates put the loc of grc "r4" of tOwner into tRedLoc put (sqrt((dx2^2 + dy2^2)/ (dx3^2+dy3^2))) into temp put round(item 1 of tRedLoc + temp*dx3) into x2 put round(item 2 of tRedLoc + temp * dy3) into y2 setCustomCoordinates end if send "doMove" to grc "bezierLine" of tOwner end justMe on doMouseMove u,v if the shiftKey is down then exit to top justMe u,v put the backgroundColor of grc "r4" of tOwner into tColor switch tColor case red if there is a group tNextOwnerName then getCustomCoordinates put (sqrt((dx2^2 + dy2^2)/ (dx3^2+dy3^2))) into temp put the loc of grc "r4" of tOwner into tRedLoc put round(item 1 of tRedLoc + temp*dx3) into x2 put round(item 2 of tRedLoc + temp * dy3) into y2 setCustomCoordinates end if put u,v & return & the loc of grc "r4" of tOwner after tTangentEndPoints set the points of grc "TangentEndLine" of tOwner to tTangentEndPoints if there is a group tNextOwnerName then send "JustMe x2,y2" to grc "r2" of group tNextOwnerName end if break case black put u,v & return & the loc of grc "r4" of tOwner after tTangentEndPoints set the points of grc "TangentEndLine" of tOwner to tTangentEndPoints send "doMove" to grc "bezierLine" of tOwner break end switch end doMouseMove on mouseRelease mouseUp end mouseRelease //  2dx0dy42 cREVGeneral revUniqueID 1082201058379 breakPoints1 15 49=r4KT local myName,tOwner,dx3,dy3 on mouseDown put the name of me into myName put the owner of me into tOwner --set the layer of tOwner to top getCustomCoordinates end mouseDown on setCustomCoordinates put the owner of me into tOwner put the loc of grc "r2" of tOwner into tR2Loc put the loc of me into tLoc put item 1 of tloc - item 1 of tR2Loc into dx2 put item 2 of tLoc - item 2 of tR2Loc into dy2 set the dx2 of grc "r2" of tOwner to dx2 set the dy2 of grc "r2" of tOwner to dy2 end setCustomCoordinates on getCustomCoordinates put the owner of me into tOwner put the dx of grc "r3" of tOwner into dx3 put the dy of grc "r3" of tOwner into dy3 end getCustomCoordinates on mouseUP put "" into myName end mouseUP on mousemove u,v if myName is "" then exit mouseMove doMouseMove u,v end mouseMove on doMouseMove u,v put the owner of me into tOwner set loc of me to u,v set the r4 of grc "BezierLine" of tOwner to u,v --send "doMouseMove u-dx3,v-dy3" to grc "r3" of tOwner set the loc of grc "r3" of tOwner to u-dx3,v-dy3 set the r3 of of grc "BezierLine" of tOwner to u-dx3,v-dy3 put u,v & return & the loc of grc "r3" of tOwner after tTangentEndPoints set the points of grc "TangentEndLine" of tOwner to tTangentEndPoints send "doMove" to grc "bezierLine" of tOwner put the short name of the owner of me into tOwnerName put tOwnerName & "A" into tNextGroupName if there is a group tNextGroupName then send "doMouseMove u,v" to grc "r1" of group tNextGroupName end if -- case black -- put the short name of the owner of me into tOwnerName -- put tOwnerName & "A" into tNextGroupName -- if there is a group tNextGroupName then -- send "doMouseMove u,v" to grc "r1" of group tNextGroupName -- end if -- -- break -- end switch end doMouseMove on mouseEnter put "" into myName end mouseEnter on mouseRelease mouseUp end mouseRelease on mouseDoubleUp if the backgroundcolor of me is red then set the backgroundcolor of me to black put the short name of the owner of me into tName set the layer of group tName to top repeat put tName & "A" into tName if there is group tName then set the layer of group tName to bottom else exit repeat end repeat else set the backgroundcolor of me to red end if doMouseMove mouseh(),mouseV() end mouseDoubleUp red \h cREVGeneral revUniqueID 1082201059002 breakPoints17 40. FooBezieriK*a@dx23r3138,146dy16 cREVGeneral revUniqueID 1083087864831/ BezierLineKV local myName, tOwner, dx, dy,theGroupNames,theGroupDisplacement on mouseDown put the name of me into myName put the owner of me into tOwner put 1 into tGroupNumber repeat with i = 1 to the number of groups if "bezier" is in the short name of group i then put the short name of group i into tGroupName put tGroupName into theGroupNames[tGroupNumber] put the loc of group i into tGroupLoc put mouseH() -item 1 of tGroupLoc into dx put mouseV() - item 2 of tGroupLoc into dy put dx,dy into theGroupDisplacement[tGroupNumber] add 1 to tGroupNumber end if end repeat end mouseDown on mouseUP put "" into myName repeat with i = 1 to the number of lines in the keys of theGroupNames put theGroupNames[i] into temp put the long name of group theGroupNames[i] into tGroup setGraphicProperties tGroup set the layer of group tGroup to top end repeat end mouseUP on mouseMove x,y if myName is "" then exit mouseMove repeat with i = 1 to the number of lines in the keys of theGroupNames put theGroupDisplacement[i] into tGroupDisplacement put theGroupNames[i] into tGroupName set the loc of group tGroupName to x- item 1 of tGroupDisplacement,y- item 2 of tGroupDisplacement end repeat end mouseMove on mouseDoubleUP repeat with i = 1 to the number of graphics put the short Name of grc i into tName if "bezierLine" is in tName then put the owner of grc i into theOwner send "hideControls theOwner" to grc tName of theOwner end if end repeat end mouseDoubleUp on hideControls theOwner put "r1","r2","r3","r4","tangentStartLine","tangentEndLine" into tGraphicList if the visible of grc "r1" of theOwner is true then repeat with i = 1 to 6 set the visible of grc item i of tGraphicList of theOwner to false end repeat else repeat with i = 1 to 6 set the visible of grc item i of tGraphicList of theOwner to true end repeat end if end hideControls on mouseEnter put "" into myName end mouseEnter on doMove put the r1 of me into pt1 put the r2 of me into pt2 put the r3 of me into pt3 put the r4 of me into pt4 repeat with i = 0 to 100 put i/100 into t put 1-t into s repeat with j = 1 to 2 put round(s*s*s*item j of pt1 + 3*s*s*t*item j of pt2 + \ 3*s*t*t*item j of pt3 + t*t*t*item j of pt4) into item j of thePt end repeat put thePt & return after tPoints end repeat set the points of grc "BezierLine" of the owner of me to tPoints end doMove on mouseRelease put "" into myName end mouseRelease on setGraphicProperties tOwner set the r1 of grc "BezierLine" of tOwner to the loc of grc "r1" of tOwner set the r2 of grc "BezierLine" of tOwner to the loc of grc "r2" of tOwner set the r3 of grc "BezierLine" of tOwner to the loc of grc "r3" of tOwner set the r4 of grc "BezierLine" of tOwner to the loc of grc "r4" of tOwner end setGraphicProperties UCP!r186,341r286,311r3163,292r4164,334eVcVbVaV`V_W_W^W]W\X[XZYZYYZXZW[V[V\U]T]S^S_R`Q`QaPbOcOdNeMfMgLhLiKjKkJlJmInIoHpHqGrGsGuFvFwFxEyEzE{E}E~DDDDDDDDDDDDDDDDEEEEFFFGGHHIIJJKLLMNOOPQRSTUVWXZ[\ cREVGeneral revUniqueID 1082203845787 breakPoints40tangentStartLineKFRC SDSb cREVGeneral revUniqueID 10822060148671tangentEndLineKF1,\2 cREVGeneral revUniqueID 10822060148812r1KT--Global r1 local myName,dx2,dy2 on mouseDown put the name of me into myName put the owner of me into tOwner getCustomCoordinates end mouseDown on setCustomCoordinates put the owner of me into tOwner put the loc of grc "r2" of tOwner into tR2Loc put the loc of me into tLoc put item 1 of tloc - item 1 of tR2Loc into dx2 put item 2 of tLoc - item 2 of tR2Loc into dy2 set the dx of grc "r2" of tOwner to -dx2 set the dy of grc "r2" of tOwner to -dy2 end setCustomCoordinates on getCustomCoordinates put the owner of me into tOwner put the dx of grc "r2" of tOwner into dx2 put the dy of grc "r2" of tOwner into dy2 end getCustomCoordinates on mouseUP put "" into myName end mouseUP on mousemove u,v if myName is "" then exit mouseMove doMouseMove u,v end mouseMove on doMouseMove u,v set loc of me to u,v put the owner of me into tOwner set the r1 of grc "BezierLine" of tOwner to u,v getCustomCoordinates send "doMouseMove u+dx2,v+dy2" to grc "r2" of tOwner setCustomCoordinates put u,v & return & the loc of grc "r2" of tOwner after tTangentStartPoints set the points of grc "TangentStartLine" of tOwner to tTangentStartPoints send "doMove" to grc "bezierLine" of tOwner end doMouseMove on mouseRelease mouseUp end mouseRelease ""O^h cREVGeneral revUniqueID 1082200959159 breakPoints363r2KPlocal myName,tOwner,tPreviousOwnerName,dx2,dy2,dx3,dy3 on mouseDown put the name of me into myName put the owner of me into tOwner put the short name of tOwner into tOwnerName put tOwnerName into tPreviousOwnerName delete last char of tPreviousOwnerName end mouseDown on mouseUP put "" into myName -- put the owner of me into tOwner -- setCustomCoor end mouseUP on mouseEnter put "" into myName end mouseEnter on getCustomCoordinates put the owner of me into tOwner put the dx of grc "r2" of tOwner into dx2 put the dy of grc "r2" of tOwner into dy2 if there is a group tPreviousOwnerName then put the dx of grc "r3" of group tPreviousOwnerName into dx3 put the dy of grc "r3" of group tPreviousOwnerName into dy3 end if end getCustomCoordinates on setCustomCoordinates put the loc of grc "r1" of tOwner into tR1Loc put the loc of me into tLoc put item 1 of tloc - item 1 of tR1Loc into ddx put item 2 of tLoc - item 2 of tR1Loc into ddy set the dx of me to ddx set the dy of me to ddy end setCustomCoordinates on mousemove u,v if myName is "" then exit mouseMove doMouseMove u,v end mouseMove on justMe u,v if the shiftkey is down then exit to top set loc of me to u,v put the owner of me into tOwner set the r2 of grc "BezierLine" of tOwner to u,v setcustomCoordinates if there is a group tPreviousOwnerName then getCustomCoordinates put (sqrt((dx2^2 + dy2^2)/ (dx3^2+dy3^2))) into temp put 1/temp into temp put the loc of grc "r1" of tOwner into tRedLoc put round(item 1 of tRedLoc - temp*dx2) into x2 put round(item 2 of tRedLoc - temp * dy2) into y2 setCustomCoordinates end if put u,v & return & the loc of grc "r1" of tOwner after tTangentStartPoints set the points of grc "TangentStartLine" of tOwner to tTangentStartPoints --send "doMouseMove x2,y2" to grc "r3" of group tPreviousOwnerName --send "JustMe x2,y2" to grc "r3" of group tPreviousOwnerName --set the loc of grc "r2" of group tPreviousOwnerName to x2,y2 --set the r2 of grc "BezierLine" of group tPreviousOwnerName to x2,y2 send "doMove" to grc "bezierLine" of tOwner end justme on doMouseMove u,v justMe u,v if there is a group tPreviousOwnerName then put the backgroundColor of grc "r4" of group tPreviousOwnerName into tColor end if switch tColor case red if there is a group tPreviousOwnerName then getCustomCoordinates put (sqrt((dx2^2 + dy2^2)/ (dx3^2+dy3^2))) into temp put 1/temp into temp put the loc of grc "r1" of tOwner into tRedLoc put round(item 1 of tRedLoc - temp*dx2) into x2 put round(item 2 of tRedLoc - temp * dy2) into y2 setCustomCoordinates end if put u,v & return & the loc of grc "r1" of tOwner after tTangentStartPoints set the points of grc "TangentStartLine" of tOwner to tTangentStartPoints --send "doMouseMove x2,y2" to grc "r3" of group tPreviousOwnerName send "JustMe x2,y2" to grc "r3" of group tPreviousOwnerName --set the loc of grc "r2" of group tPreviousOwnerName to x2,y2 --set the r2 of grc "BezierLine" of group tPreviousOwnerName to x2,y2 send "doMove" to grc "bezierLine" of tOwner break -- break -- case red -- put u,v & return & the loc of grc "r1" of tOwner after tTangentEndPoints -- set the points of grc "TangentEndLine" of tOwner to tTangentEndPoints -- send "doMove" to grc "bezierLine" of tOwner break end switch end doMouseMove put u,v & return & the loc of grc "r1" of tOwner after tTangentStartPoints set the points of grc "TangentStartLine" of tOwner to tTangentStartPoints send "doMove" to grc "bezierLine" of tOwner setCustomCoordinates end doMouseMove on mouseRelease mouseUp end mouseRelease O@88884444-15-15dx0dy-30 cREVGeneral revUniqueID 1082201057991 breakPoints4r3KP nlocal myName,tNextOwnerName,dx2,dy2,dx3,dy3,tOwner on mouseDown put the name of me into myName put the owner of me into tOwner put the short name of tOwner into tOwnerName put tOwnerName & "A" into tNextOwnerName --getCustomCoordinates end mouseDown on getCustomCoordinates put the owner of me into tOwner put the dx of grc "r3" of tOwner into dx3 put the dy of grc "r3" of tOwner into dy3 put the short name of tOwner&"A" into tNextOwnerName if there is a group tNextOwnerName then put the dx of grc "r2" of group tNextOwnerName into dx2 put the dy of grc "r2" of group tNextOwnerName into dy2 end if end getCustomCoordinates on mouseEnter put "" into myName end mouseEnter on mouseUP put "" into myName setCustomCoordinates end mouseUP on setCustomCoordinates put the owner of me into tOwner put the loc of grc "r4" of tOwner into tR4Loc put the loc of me into tR3Loc put item 1 of tR4Loc - item 1 of tR3Loc into ddx put item 2 of tR4Loc - item 2 of tR3Loc into ddy set the dx of me to ddx set the dy of me to ddy end setCustomCoordinates on mousemove u,v if myName is "" then exit mouseMove doMouseMove u,v end mouseMove on justMe u,v set loc of me to u,v put the owner of me into tOwner set the r3 of grc "BezierLine" of tOwner to u,v put u,v & return & the loc of grc "r4" of tOwner after tTangentEndPoints set the points of grc "TangentEndLine" of tOwner to tTangentEndPoints if there is a group tNextOwnerName then getCustomCoordinates put the loc of grc "r4" of tOwner into tRedLoc put (sqrt((dx2^2 + dy2^2)/ (dx3^2+dy3^2))) into temp put round(item 1 of tRedLoc + temp*dx3) into x2 put round(item 2 of tRedLoc + temp * dy3) into y2 setCustomCoordinates end if send "doMove" to grc "bezierLine" of tOwner end justMe on doMouseMove u,v if the shiftKey is down then exit to top justMe u,v put the backgroundColor of grc "r4" of tOwner into tColor switch tColor case red if there is a group tNextOwnerName then getCustomCoordinates put (sqrt((dx2^2 + dy2^2)/ (dx3^2+dy3^2))) into temp put the loc of grc "r4" of tOwner into tRedLoc put round(item 1 of tRedLoc + temp*dx3) into x2 put round(item 2 of tRedLoc + temp * dy3) into y2 setCustomCoordinates end if put u,v & return & the loc of grc "r4" of tOwner after tTangentEndPoints set the points of grc "TangentEndLine" of tOwner to tTangentEndPoints if there is a group tNextOwnerName then send "JustMe x2,y2" to grc "r2" of group tNextOwnerName end if break case black put u,v & return & the loc of grc "r4" of tOwner after tTangentEndPoints set the points of grc "TangentEndLine" of tOwner to tTangentEndPoints send "doMove" to grc "bezierLine" of tOwner break end switch end doMouseMove on mouseRelease mouseUp end mouseRelease // .dx1dy42 cREVGeneral revUniqueID 1082201058379 breakPoints1 15 495r4KT local myName,tOwner,dx3,dy3 on mouseDown put the name of me into myName put the owner of me into tOwner --set the layer of tOwner to top getCustomCoordinates end mouseDown on setCustomCoordinates put the owner of me into tOwner put the loc of grc "r2" of tOwner into tR2Loc put the loc of me into tLoc put item 1 of tloc - item 1 of tR2Loc into dx2 put item 2 of tLoc - item 2 of tR2Loc into dy2 set the dx2 of grc "r2" of tOwner to dx2 set the dy2 of grc "r2" of tOwner to dy2 end setCustomCoordinates on getCustomCoordinates put the owner of me into tOwner put the dx of grc "r3" of tOwner into dx3 put the dy of grc "r3" of tOwner into dy3 end getCustomCoordinates on mouseUP put "" into myName end mouseUP on mousemove u,v if myName is "" then exit mouseMove doMouseMove u,v end mouseMove on doMouseMove u,v put the owner of me into tOwner set loc of me to u,v set the r4 of grc "BezierLine" of tOwner to u,v --send "doMouseMove u-dx3,v-dy3" to grc "r3" of tOwner set the loc of grc "r3" of tOwner to u-dx3,v-dy3 set the r3 of of grc "BezierLine" of tOwner to u-dx3,v-dy3 put u,v & return & the loc of grc "r3" of tOwner after tTangentEndPoints set the points of grc "TangentEndLine" of tOwner to tTangentEndPoints send "doMove" to grc "bezierLine" of tOwner put the short name of the owner of me into tOwnerName put tOwnerName & "A" into tNextGroupName if there is a group tNextGroupName then send "doMouseMove u,v" to grc "r1" of group tNextGroupName end if -- case black -- put the short name of the owner of me into tOwnerName -- put tOwnerName & "A" into tNextGroupName -- if there is a group tNextGroupName then -- send "doMouseMove u,v" to grc "r1" of group tNextGroupName -- end if -- -- break -- end switch end doMouseMove on mouseEnter put "" into myName end mouseEnter on mouseRelease mouseUp end mouseRelease on mouseDoubleUp if the backgroundcolor of me is red then set the backgroundcolor of me to black put the short name of the owner of me into tName set the layer of group tName to top repeat put tName & "A" into tName if there is group tName then set the layer of group tName to bottom else exit repeat end repeat else set the backgroundcolor of me to red end if doMouseMove mouseh(),mouseV() end mouseDoubleUp redX h cREVGeneral revUniqueID 1082201059002 breakPoints17 40 >Field 2(@Ln` cREVGeneral revUniqueID 1083102140879 * Left cell-group ?Field 2(@tf cREVGeneral revUniqueID 1083102196333 * Right cell-group @Field 2*@$>4 cREVGeneral revUniqueID 1083102215267 * Nearest neighbors talk" FooBezieriq,~Fdx23r3138,146dy16 cREVGeneral revUniqueID 1083087636542# BezierLineKV local myName, tOwner, dx, dy,theGroupNames,theGroupDisplacement on mouseDown put the name of me into myName put the owner of me into tOwner put 1 into tGroupNumber repeat with i = 1 to the number of groups if "bezier" is in the short name of group i then put the short name of group i into tGroupName put tGroupName into theGroupNames[tGroupNumber] put the loc of group i into tGroupLoc put mouseH() -item 1 of tGroupLoc into dx put mouseV() - item 2 of tGroupLoc into dy put dx,dy into theGroupDisplacement[tGroupNumber] add 1 to tGroupNumber end if end repeat end mouseDown on mouseUP put "" into myName repeat with i = 1 to the number of lines in the keys of theGroupNames put theGroupNames[i] into temp put the long name of group theGroupNames[i] into tGroup setGraphicProperties tGroup set the layer of group tGroup to top end repeat end mouseUP on mouseMove x,y if myName is "" then exit mouseMove repeat with i = 1 to the number of lines in the keys of theGroupNames put theGroupDisplacement[i] into tGroupDisplacement put theGroupNames[i] into tGroupName set the loc of group tGroupName to x- item 1 of tGroupDisplacement,y- item 2 of tGroupDisplacement end repeat end mouseMove on mouseDoubleUP repeat with i = 1 to the number of graphics put the short Name of grc i into tName if "bezierLine" is in tName then put the owner of grc i into theOwner send "hideControls theOwner" to grc tName of theOwner end if end repeat end mouseDoubleUp on hideControls theOwner put "r1","r2","r3","r4","tangentStartLine","tangentEndLine" into tGraphicList if the visible of grc "r1" of theOwner is true then repeat with i = 1 to 6 set the visible of grc item i of tGraphicList of theOwner to false end repeat else repeat with i = 1 to 6 set the visible of grc item i of tGraphicList of theOwner to true end repeat end if end hideControls on mouseEnter put "" into myName end mouseEnter on doMove put the r1 of me into pt1 put the r2 of me into pt2 put the r3 of me into pt3 put the r4 of me into pt4 repeat with i = 0 to 100 put i/100 into t put 1-t into s repeat with j = 1 to 2 put round(s*s*s*item j of pt1 + 3*s*s*t*item j of pt2 + \ 3*s*t*t*item j of pt3 + t*t*t*item j of pt4) into item j of thePt end repeat put thePt & return after tPoints end repeat set the points of grc "BezierLine" of the owner of me to tPoints end doMove on mouseRelease put "" into myName end mouseRelease on setGraphicProperties tOwner set the r1 of grc "BezierLine" of tOwner to the loc of grc "r1" of tOwner set the r2 of grc "BezierLine" of tOwner to the loc of grc "r2" of tOwner set the r3 of grc "BezierLine" of tOwner to the loc of grc "r3" of tOwner set the r4 of grc "BezierLine" of tOwner to the loc of grc "r4" of tOwner end setGraphicProperties xAp*r1121,362r2149,310r3207,308r4231,357eyjzh{g|e|d}c~a`^]\[YXWVUTSRQPONMLLKJIIHGGFFEEDDDCCCBBBBBBBBBBBBBBBBCCCDDDEEFFGGHHIJKKLMNOOPQRSTVWXYZ[]^_abde cREVGeneral revUniqueID 1082203845787 breakPoints4$tangentStartLineKFx566yj cREVGeneral revUniqueID 1082206014867%tangentEndLineKF334e cREVGeneral revUniqueID 1082206014881&r1KT--Global r1 local myName,dx2,dy2 on mouseDown put the name of me into myName put the owner of me into tOwner getCustomCoordinates end mouseDown on setCustomCoordinates put the owner of me into tOwner put the loc of grc "r2" of tOwner into tR2Loc put the loc of me into tLoc put item 1 of tloc - item 1 of tR2Loc into dx2 put item 2 of tLoc - item 2 of tR2Loc into dy2 set the dx of grc "r2" of tOwner to -dx2 set the dy of grc "r2" of tOwner to -dy2 end setCustomCoordinates on getCustomCoordinates put the owner of me into tOwner put the dx of grc "r2" of tOwner into dx2 put the dy of grc "r2" of tOwner into dy2 end getCustomCoordinates on mouseUP put "" into myName end mouseUP on mousemove u,v if myName is "" then exit mouseMove doMouseMove u,v end mouseMove on doMouseMove u,v set loc of me to u,v put the owner of me into tOwner set the r1 of grc "BezierLine" of tOwner to u,v getCustomCoordinates send "doMouseMove u+dx2,v+dy2" to grc "r2" of tOwner setCustomCoordinates put u,v & return & the loc of grc "r2" of tOwner after tTangentStartPoints set the points of grc "TangentStartLine" of tOwner to tTangentStartPoints send "doMove" to grc "bezierLine" of tOwner end doMouseMove on mouseRelease mouseUp end mouseRelease ""ufh cREVGeneral revUniqueID 1082200959159 breakPoints36'r2KPlocal myName,tOwner,tPreviousOwnerName,dx2,dy2,dx3,dy3 on mouseDown put the name of me into myName put the owner of me into tOwner put the short name of tOwner into tOwnerName put tOwnerName into tPreviousOwnerName delete last char of tPreviousOwnerName end mouseDown on mouseUP put "" into myName -- put the owner of me into tOwner -- setCustomCoor end mouseUP on mouseEnter put "" into myName end mouseEnter on getCustomCoordinates put the owner of me into tOwner put the dx of grc "r2" of tOwner into dx2 put the dy of grc "r2" of tOwner into dy2 if there is a group tPreviousOwnerName then put the dx of grc "r3" of group tPreviousOwnerName into dx3 put the dy of grc "r3" of group tPreviousOwnerName into dy3 end if end getCustomCoordinates on setCustomCoordinates put the loc of grc "r1" of tOwner into tR1Loc put the loc of me into tLoc put item 1 of tloc - item 1 of tR1Loc into ddx put item 2 of tLoc - item 2 of tR1Loc into ddy set the dx of me to ddx set the dy of me to ddy end setCustomCoordinates on mousemove u,v if myName is "" then exit mouseMove doMouseMove u,v end mouseMove on justMe u,v if the shiftkey is down then exit to top set loc of me to u,v put the owner of me into tOwner set the r2 of grc "BezierLine" of tOwner to u,v setcustomCoordinates if there is a group tPreviousOwnerName then getCustomCoordinates put (sqrt((dx2^2 + dy2^2)/ (dx3^2+dy3^2))) into temp put 1/temp into temp put the loc of grc "r1" of tOwner into tRedLoc put round(item 1 of tRedLoc - temp*dx2) into x2 put round(item 2 of tRedLoc - temp * dy2) into y2 setCustomCoordinates end if put u,v & return & the loc of grc "r1" of tOwner after tTangentStartPoints set the points of grc "TangentStartLine" of tOwner to tTangentStartPoints --send "doMouseMove x2,y2" to grc "r3" of group tPreviousOwnerName --send "JustMe x2,y2" to grc "r3" of group tPreviousOwnerName --set the loc of grc "r2" of group tPreviousOwnerName to x2,y2 --set the r2 of grc "BezierLine" of group tPreviousOwnerName to x2,y2 send "doMove" to grc "bezierLine" of tOwner end justme on doMouseMove u,v justMe u,v if there is a group tPreviousOwnerName then put the backgroundColor of grc "r4" of group tPreviousOwnerName into tColor end if switch tColor case red if there is a group tPreviousOwnerName then getCustomCoordinates put (sqrt((dx2^2 + dy2^2)/ (dx3^2+dy3^2))) into temp put 1/temp into temp put the loc of grc "r1" of tOwner into tRedLoc put round(item 1 of tRedLoc - temp*dx2) into x2 put round(item 2 of tRedLoc - temp * dy2) into y2 setCustomCoordinates end if put u,v & return & the loc of grc "r1" of tOwner after tTangentStartPoints set the points of grc "TangentStartLine" of tOwner to tTangentStartPoints --send "doMouseMove x2,y2" to grc "r3" of group tPreviousOwnerName send "JustMe x2,y2" to grc "r3" of group tPreviousOwnerName --set the loc of grc "r2" of group tPreviousOwnerName to x2,y2 --set the r2 of grc "BezierLine" of group tPreviousOwnerName to x2,y2 send "doMove" to grc "bezierLine" of tOwner break -- break -- case red -- put u,v & return & the loc of grc "r1" of tOwner after tTangentEndPoints -- set the points of grc "TangentEndLine" of tOwner to tTangentEndPoints -- send "doMove" to grc "bezierLine" of tOwner break end switch end doMouseMove put u,v & return & the loc of grc "r1" of tOwner after tTangentStartPoints set the points of grc "TangentStartLine" of tOwner to tTangentStartPoints send "doMove" to grc "bezierLine" of tOwner setCustomCoordinates end doMouseMove on mouseRelease mouseUp end mouseRelease 288884444-15-15dx28dy-52 cREVGeneral revUniqueID 1082201057991 breakPoints(r3KP nlocal myName,tNextOwnerName,dx2,dy2,dx3,dy3,tOwner on mouseDown put the name of me into myName put the owner of me into tOwner put the short name of tOwner into tOwnerName put tOwnerName & "A" into tNextOwnerName --getCustomCoordinates end mouseDown on getCustomCoordinates put the owner of me into tOwner put the dx of grc "r3" of tOwner into dx3 put the dy of grc "r3" of tOwner into dy3 put the short name of tOwner&"A" into tNextOwnerName if there is a group tNextOwnerName then put the dx of grc "r2" of group tNextOwnerName into dx2 put the dy of grc "r2" of group tNextOwnerName into dy2 end if end getCustomCoordinates on mouseEnter put "" into myName end mouseEnter on mouseUP put "" into myName setCustomCoordinates end mouseUP on setCustomCoordinates put the owner of me into tOwner put the loc of grc "r4" of tOwner into tR4Loc put the loc of me into tR3Loc put item 1 of tR4Loc - item 1 of tR3Loc into ddx put item 2 of tR4Loc - item 2 of tR3Loc into ddy set the dx of me to ddx set the dy of me to ddy end setCustomCoordinates on mousemove u,v if myName is "" then exit mouseMove doMouseMove u,v end mouseMove on justMe u,v set loc of me to u,v put the owner of me into tOwner set the r3 of grc "BezierLine" of tOwner to u,v put u,v & return & the loc of grc "r4" of tOwner after tTangentEndPoints set the points of grc "TangentEndLine" of tOwner to tTangentEndPoints if there is a group tNextOwnerName then getCustomCoordinates put the loc of grc "r4" of tOwner into tRedLoc put (sqrt((dx2^2 + dy2^2)/ (dx3^2+dy3^2))) into temp put round(item 1 of tRedLoc + temp*dx3) into x2 put round(item 2 of tRedLoc + temp * dy3) into y2 setCustomCoordinates end if send "doMove" to grc "bezierLine" of tOwner end justMe on doMouseMove u,v if the shiftKey is down then exit to top justMe u,v put the backgroundColor of grc "r4" of tOwner into tColor switch tColor case red if there is a group tNextOwnerName then getCustomCoordinates put (sqrt((dx2^2 + dy2^2)/ (dx3^2+dy3^2))) into temp put the loc of grc "r4" of tOwner into tRedLoc put round(item 1 of tRedLoc + temp*dx3) into x2 put round(item 2 of tRedLoc + temp * dy3) into y2 setCustomCoordinates end if put u,v & return & the loc of grc "r4" of tOwner after tTangentEndPoints set the points of grc "TangentEndLine" of tOwner to tTangentEndPoints if there is a group tNextOwnerName then send "JustMe x2,y2" to grc "r2" of group tNextOwnerName end if break case black put u,v & return & the loc of grc "r4" of tOwner after tTangentEndPoints set the points of grc "TangentEndLine" of tOwner to tTangentEndPoints send "doMove" to grc "bezierLine" of tOwner break end switch end doMouseMove on mouseRelease mouseUp end mouseRelease // 0dx24dy49 cREVGeneral revUniqueID 1082201058379 breakPoints1 15 49)r4KT local myName,tOwner,dx3,dy3 on mouseDown put the name of me into myName put the owner of me into tOwner --set the layer of tOwner to top getCustomCoordinates end mouseDown on setCustomCoordinates put the owner of me into tOwner put the loc of grc "r2" of tOwner into tR2Loc put the loc of me into tLoc put item 1 of tloc - item 1 of tR2Loc into dx2 put item 2 of tLoc - item 2 of tR2Loc into dy2 set the dx2 of grc "r2" of tOwner to dx2 set the dy2 of grc "r2" of tOwner to dy2 end setCustomCoordinates on getCustomCoordinates put the owner of me into tOwner put the dx of grc "r3" of tOwner into dx3 put the dy of grc "r3" of tOwner into dy3 end getCustomCoordinates on mouseUP put "" into myName end mouseUP on mousemove u,v if myName is "" then exit mouseMove doMouseMove u,v end mouseMove on doMouseMove u,v put the owner of me into tOwner set loc of me to u,v set the r4 of grc "BezierLine" of tOwner to u,v --send "doMouseMove u-dx3,v-dy3" to grc "r3" of tOwner set the loc of grc "r3" of tOwner to u-dx3,v-dy3 set the r3 of of grc "BezierLine" of tOwner to u-dx3,v-dy3 put u,v & return & the loc of grc "r3" of tOwner after tTangentEndPoints set the points of grc "TangentEndLine" of tOwner to tTangentEndPoints send "doMove" to grc "bezierLine" of tOwner put the short name of the owner of me into tOwnerName put tOwnerName & "A" into tNextGroupName if there is a group tNextGroupName then send "doMouseMove u,v" to grc "r1" of group tNextGroupName end if -- case black -- put the short name of the owner of me into tOwnerName -- put tOwnerName & "A" into tNextGroupName -- if there is a group tNextGroupName then -- send "doMouseMove u,v" to grc "r1" of group tNextGroupName -- end if -- -- break -- end switch end doMouseMove on mouseEnter put "" into myName end mouseEnter on mouseRelease mouseUp end mouseRelease on mouseDoubleUp if the backgroundcolor of me is red then set the backgroundcolor of me to black put the short name of the owner of me into tName set the layer of group tName to top repeat put tName & "A" into tName if there is group tName then set the layer of group tName to bottom else exit repeat end repeat else set the backgroundcolor of me to red end if doMouseMove mouseh(),mouseV() end mouseDoubleUp redah cREVGeneral revUniqueID 1082201059002 breakPoints17 40 CField 1)` cREVGeneral revUniqueID 1083347391917 B @The bezier curve is represented parametrically by the equation: @? @ 9r(t) = (1-t)3 r1 + 3 (1-t)2 t r2 + 3 (1-t) t2 r3 + t3 r4 @ @  @  @ @ @ @ @ @ @, @- @/ @0 @4 @5 @7 uwhere t is a parameter which runs from 0 to 1, and the r's are defined in the figure below. All the r's are VECTORS. You may verify that the formula satisfies the appropriate conditions at the end points. For example, when t=0, r(0) = r1, as it should. Similarly, at t =1 r(1) = r4 )Also, the deriviative of r(t) at t=0 is r'(0) = -3 r1 + 3 r2         7Taking the x and y components of this vector equation:  dx/dt = -3 x1 + 3 x2         dy/dt = -3 y1 + 3 y2           So that:     dy/dx = (y2-y1)/(x2 - x1)                      wTherefore the slope at t=0 is equal to the slope of the control line from r1 to r1. Similarly for the other end point.  v  yIt is more difficult to show how the curvature at t=0 and t=1 are determined by the length of the control tangent lines.  x  SJust to see what happens with a differnt parametric equation, go to the next card.  RD `E Graphic 1CF3Z4p@ cREVGeneral revUniqueID 1083347418045F FooBezieri@on resetLayers put the short name of me into tName put offset("bezier",tName)+5 into tNum put char 1 to tNum of tName into tBaseName repeat if there is a group tBaseName then set the layer of group tBaseName to bottom put tBaseName & "A" into tBaseName else exit repeat end repeat end resetLayers on resetProperties tGroup put theBaseName(tGroup) into tBaseName repeat if there is a group tBaseName then put the name of group tBaseName into tOwner set the r1 of grc "BezierLine" of tOwner to the loc of grc "r1" of tOwner set the r2 of grc "BezierLine" of tOwner to the loc of grc "r2" of tOwner set the r3 of grc "BezierLine" of tOwner to the loc of grc "r3" of tOwner set the r4 of grc "BezierLine" of tOwner to the loc of grc "r4" of tOwner put tBaseName & "A" into tBaseName else exit repeat end repeat end resetProperties function theBaseName tGroupName put offset("bezier",tGroupName)+5 into tNum put char 1 to tNum of tGroupName into theBaseName return theBaseName end theBaseName `Edx23dy16r3138,146 cREVGeneral revUniqueID 1083347451078 breakPoints2 15G BezierLineKV clocal myName, tOwner, dx, dy,theGroupNames,theGroupDisplacement,theBaseGroupName on mouseDown put the name of me into myName put the owner of me into tOwner put the short name of the owner of me into tGroupName repeat if the last char of tGroupName is "A" then delete the last char of tGroupName else exit repeat end repeat put tGroupName into theBaseGroupName repeat if there is a group tGroupName then put the loc of group tGroupName into tGroupLoc put mouseH() -item 1 of tGroupLoc into dx put mouseV() - item 2 of tGroupLoc into dy put dx,dy into theGroupDisplacement[tGroupName] put tGroupName & "A" into tGroupName else exit repeat end repeat end mouseDown on mouseMove x,y if myName is "" then exit mouseMove put theBaseGroupName into tGroupName repeat --with i = 1 to the number of lines in the keys of theGroupNames if there is a group tGroupName then put theGroupDisplacement[tGroupName] into tGroupDisplacement --put theGroupNames[i] into tGroupName set the loc of group tGroupName to x- item 1 of tGroupDisplacement,y- item 2 of tGroupDisplacement put tGroupName & "A" into tGroupName else exit repeat end repeat end mouseMove on mouseUP put "" into myName resetProperties the short name of the owner of me resetLayers end mouseUP on mouseDoubleUP put the the short name of owner of me into tGroupName repeat if the last char of tGroupName is "A" then delete the last char of tGroupName else exit repeat end repeat repeat if there is a group tGroupName then hideControls tGroupName put tGroupName & "A" into tGroupName else exit repeat end repeat end mouseDoubleUp on hideControls theOwnerName put "r1","r2","r3","r4","tangentStartLine","tangentEndLine" into tGraphicList if the visible of grc "r1" of group theOwnerName is true then repeat with i = 1 to 6 set the visible of grc item i of tGraphicList of group theOwnerName to false end repeat else repeat with i = 1 to 6 set the visible of grc item i of tGraphicList of group theOwnerName to true end repeat end if end hideControls on mouseEnter put "" into myName end mouseEnter on doMove put the r1 of me into pt1 put the r2 of me into pt2 put the r3 of me into pt3 put the r4 of me into pt4 repeat with i = 0 to 50 put i/50 into t put 1-t into s repeat with j = 1 to 2 put round(s*s*s*item j of pt1 + 3*s*s*t*item j of pt2 + \ 3*s*t*t*item j of pt3 + t*t*t*item j of pt4) into item j of thePt end repeat put thePt & return after tPoints end repeat set the points of grc "BezierLine" of the owner of me to tPoints end doMove on mouseRelease put "" into myName end mouseRelease on setGraphicProperties tOwner set the r1 of grc "BezierLine" of tOwner to the loc of grc "r1" of tOwner set the r2 of grc "BezierLine" of tOwner to the loc of grc "r2" of tOwner set the r3 of grc "BezierLine" of tOwner to the loc of grc "r3" of tOwner set the r4 of grc "BezierLine" of tOwner to the loc of grc "r4" of tOwner end setGraphicProperties f,r1104,308r2154,260r3269,261r4304,3133h4k1n.r,u)y'}%#!  "$& (#+&-)0+3.609 cREVGeneral revUniqueID 1082203845787 breakPoints24HtangentStartLineKFg42h4 cREVGeneral revUniqueID 1082206014867ItangentEndLineKF %609  cREVGeneral revUniqueID 1082206014881Jr1KT--Global r1 local myName,dx2,dy2 on mouseDown put the name of me into myName put the owner of me into tOwner getCustomCoordinates end mouseDown on setCustomCoordinates put the owner of me into tOwner put the loc of grc "r2" of tOwner into tR2Loc put the loc of me into tLoc put item 1 of tloc - item 1 of tR2Loc into dx2 put item 2 of tLoc - item 2 of tR2Loc into dy2 set the dx of grc "r2" of tOwner to -dx2 set the dy of grc "r2" of tOwner to -dy2 end setCustomCoordinates on getCustomCoordinates put the owner of me into tOwner put the dx of grc "r2" of tOwner into dx2 put the dy of grc "r2" of tOwner into dy2 end getCustomCoordinates on mouseUP put "" into myName end mouseUP on mousemove u,v if myName is "" then exit mouseMove doMouseMove u,v end mouseMove on doMouseMove u,v set loc of me to u,v put the owner of me into tOwner set the r1 of grc "BezierLine" of tOwner to u,v getCustomCoordinates send "doMouseMove u+dx2,v+dy2" to grc "r2" of tOwner setCustomCoordinates put u,v & return & the loc of grc "r2" of tOwner after tTangentStartPoints set the points of grc "TangentStartLine" of tOwner to tTangentStartPoints send "doMove" to grc "bezierLine" of tOwner end doMouseMove on mouseRelease mouseUp end mouseRelease ""d0h cREVGeneral revUniqueID 1082200959159 breakPoints36Kr2KPlocal myName,tOwner,tPreviousOwnerName,dx2,dy2,dx3,dy3 on mouseDown put the name of me into myName put the owner of me into tOwner put the short name of tOwner into tOwnerName put tOwnerName into tPreviousOwnerName delete last char of tPreviousOwnerName end mouseDown on mouseUP put "" into myName -- put the owner of me into tOwner -- setCustomCoor end mouseUP on mouseEnter put "" into myName end mouseEnter on getCustomCoordinates put the owner of me into tOwner put the dx of grc "r2" of tOwner into dx2 put the dy of grc "r2" of tOwner into dy2 if there is a group tPreviousOwnerName then put the dx of grc "r3" of group tPreviousOwnerName into dx3 put the dy of grc "r3" of group tPreviousOwnerName into dy3 end if end getCustomCoordinates on setCustomCoordinates put the loc of grc "r1" of tOwner into tR1Loc put the loc of me into tLoc put item 1 of tloc - item 1 of tR1Loc into ddx put item 2 of tLoc - item 2 of tR1Loc into ddy set the dx of me to ddx set the dy of me to ddy end setCustomCoordinates on mousemove u,v if myName is "" then exit mouseMove doMouseMove u,v end mouseMove on justMe u,v if the shiftkey is down then exit to top set loc of me to u,v put the owner of me into tOwner set the r2 of grc "BezierLine" of tOwner to u,v setcustomCoordinates if there is a group tPreviousOwnerName then getCustomCoordinates put (sqrt((dx2^2 + dy2^2)/ (dx3^2+dy3^2))) into temp put 1/temp into temp put the loc of grc "r1" of tOwner into tRedLoc put round(item 1 of tRedLoc - temp*dx2) into x2 put round(item 2 of tRedLoc - temp * dy2) into y2 setCustomCoordinates end if put u,v & return & the loc of grc "r1" of tOwner after tTangentStartPoints set the points of grc "TangentStartLine" of tOwner to tTangentStartPoints --send "doMouseMove x2,y2" to grc "r3" of group tPreviousOwnerName --send "JustMe x2,y2" to grc "r3" of group tPreviousOwnerName --set the loc of grc "r2" of group tPreviousOwnerName to x2,y2 --set the r2 of grc "BezierLine" of group tPreviousOwnerName to x2,y2 send "doMove" to grc "bezierLine" of tOwner end justme on doMouseMove u,v justMe u,v if there is a group tPreviousOwnerName then put the backgroundColor of grc "r4" of group tPreviousOwnerName into tColor end if switch tColor case red if there is a group tPreviousOwnerName then getCustomCoordinates put (sqrt((dx2^2 + dy2^2)/ (dx3^2+dy3^2))) into temp put 1/temp into temp put the loc of grc "r1" of tOwner into tRedLoc put round(item 1 of tRedLoc - temp*dx2) into x2 put round(item 2 of tRedLoc - temp * dy2) into y2 setCustomCoordinates end if put u,v & return & the loc of grc "r1" of tOwner after tTangentStartPoints set the points of grc "TangentStartLine" of tOwner to tTangentStartPoints --send "doMouseMove x2,y2" to grc "r3" of group tPreviousOwnerName send "JustMe x2,y2" to grc "r3" of group tPreviousOwnerName --set the loc of grc "r2" of group tPreviousOwnerName to x2,y2 --set the r2 of grc "BezierLine" of group tPreviousOwnerName to x2,y2 send "doMove" to grc "bezierLine" of tOwner break -- break -- case red -- put u,v & return & the loc of grc "r1" of tOwner after tTangentEndPoints -- set the points of grc "TangentEndLine" of tOwner to tTangentEndPoints -- send "doMove" to grc "bezierLine" of tOwner break end switch end doMouseMove put u,v & return & the loc of grc "r1" of tOwner after tTangentStartPoints set the points of grc "TangentStartLine" of tOwner to tTangentStartPoints send "doMove" to grc "bezierLine" of tOwner setCustomCoordinates end doMouseMove on mouseRelease mouseUp end mouseRelease 44448888-15-15dx50dy-48 cREVGeneral revUniqueID 1082201057991 breakPointsLr3KP local myName,tNextOwnerName,dx2,dy2,dx3,dy3,tOwner on mouseDown put the name of me into myName put the owner of me into tOwner put the short name of tOwner into tOwnerName put tOwnerName & "A" into tNextOwnerName --getCustomCoordinates end mouseDown on setMeStraight mouseDown getCustomCoordinates doMouseMove mouseH() -dx3,mouseV() - dy3 put "" into myName end setMeStraight on getCustomCoordinates put the owner of me into tOwner put the dx of grc "r3" of tOwner into dx3 put the dy of grc "r3" of tOwner into dy3 put the short name of tOwner&"A" into tNextOwnerName if there is a group tNextOwnerName then put the dx of grc "r2" of group tNextOwnerName into dx2 put the dy of grc "r2" of group tNextOwnerName into dy2 end if end getCustomCoordinates on mouseEnter put "" into myName end mouseEnter on mouseUP put "" into myName setCustomCoordinates end mouseUP on setCustomCoordinates put the owner of me into tOwner put the loc of grc "r4" of tOwner into tR4Loc put the loc of me into tR3Loc put item 1 of tR4Loc - item 1 of tR3Loc into ddx put item 2 of tR4Loc - item 2 of tR3Loc into ddy set the dx of me to ddx set the dy of me to ddy end setCustomCoordinates on mousemove u,v if myName is "" then exit mouseMove doMouseMove u,v end mouseMove on justMe u,v set loc of me to u,v put the owner of me into tOwner set the r3 of grc "BezierLine" of tOwner to u,v put u,v & return & the loc of grc "r4" of tOwner after tTangentEndPoints set the points of grc "TangentEndLine" of tOwner to tTangentEndPoints if there is a group tNextOwnerName then getCustomCoordinates put the loc of grc "r4" of tOwner into tRedLoc put (sqrt((dx2^2 + dy2^2)/ (dx3^2+dy3^2))) into temp put round(item 1 of tRedLoc + temp*dx3) into x2 put round(item 2 of tRedLoc + temp * dy3) into y2 setCustomCoordinates end if send "doMove" to grc "bezierLine" of tOwner end justMe on doMouseMove u,v if the shiftKey is down then exit to top justMe u,v put the backgroundColor of grc "r4" of tOwner into tColor switch tColor case red if there is a group tNextOwnerName then getCustomCoordinates put (sqrt((dx2^2 + dy2^2)/ (dx3^2+dy3^2))) into temp put the loc of grc "r4" of tOwner into tRedLoc put round(item 1 of tRedLoc + temp*dx3) into x2 put round(item 2 of tRedLoc + temp * dy3) into y2 setCustomCoordinates end if put u,v & return & the loc of grc "r4" of tOwner after tTangentEndPoints set the points of grc "TangentEndLine" of tOwner to tTangentEndPoints if there is a group tNextOwnerName then send "JustMe x2,y2" to grc "r2" of group tNextOwnerName end if break case black put u,v & return & the loc of grc "r4" of tOwner after tTangentEndPoints set the points of grc "TangentEndLine" of tOwner to tTangentEndPoints send "doMove" to grc "bezierLine" of tOwner break end switch end doMouseMove on mouseRelease mouseUp end mouseRelease //  3535-3-31111121214141515525217171818-22-221919202021212525262688dx35dy526767 cREVGeneral revUniqueID 1082201058379 breakPoints1 15 49Mr4KT local myName,tOwner,dx3,dy3 on mouseDown put the name of me into myName put the owner of me into theOwner put theOwner into tOwner --set the layer of tOwner to top getCustomCoordinates theOwner --getCustomCoordinates theNextOwner(theOwner) setCustomCoordinates theOwner --setCustomCoordinates theNextOwner(theOwner) end mouseDown on setCustomCoordinates theOwner put the loc of grc "r3" of theOwner into tR3Loc put the loc of me into tLoc put item 1 of tloc - item 1 of tR3Loc into dx3 put item 2 of tLoc - item 2 of tR3Loc into dy3 set the dx3 of grc "r3" of theOwner to dx3 set the dy3 of grc "r3" of theOwner to dy3 end setCustomCoordinates function theNextOwner thisOwner put the short name of thisOwner into tOwnerName put tOwnerName & "A" into tNewOwnerName if there is a group tNewOwnerName then put the long name of group tNewOwnerName into tNextGroup else put thisOwner into tNextGroup return tNextGroup end theNextOwner on getCustomCoordinates theOwner --put the owner of me into tOwner put the dx of grc "r3" of theOwner into dx3 put the dy of grc "r3" of theOwner into dy3 end getCustomCoordinates on mouseUP put "" into myName end mouseUP on mousemove u,v if myName is "" then exit mouseMove doMouseMove u,v end mouseMove on doMouseMove u,v put the owner of me into tOwner set loc of me to u,v set the r4 of grc "BezierLine" of tOwner to u,v --send "doMouseMove u-dx3,v-dy3" to grc "r3" of tOwner set the loc of grc "r3" of tOwner to u-dx3,v-dy3 set the r3 of of grc "BezierLine" of tOwner to u-dx3,v-dy3 put u,v & return & the loc of grc "r3" of tOwner after tTangentEndPoints set the points of grc "TangentEndLine" of tOwner to tTangentEndPoints send "doMove" to grc "bezierLine" of tOwner put the short name of the owner of me into tOwnerName put tOwnerName & "A" into tNextGroupName if there is a group tNextGroupName then send "doMouseMove u,v" to grc "r1" of group tNextGroupName end if -- case black -- put the short name of the owner of me into tOwnerName -- put tOwnerName & "A" into tNextGroupName -- if there is a group tNextGroupName then -- send "doMouseMove u,v" to grc "r1" of group tNextGroupName -- end if -- -- break -- end switch end doMouseMove on mouseEnter put "" into myName end mouseEnter on mouseRelease mouseUp end mouseRelease on mouseDoubleUp if the backgroundcolor of me is red then set the backgroundcolor of me to black else set the backgroundcolor of me to red send "setMeStraight" to grc "r3" of group the owner of me end if resetLayers doMouseMove mouseh(),mouseV() end mouseDoubleUp black,5h cREVGeneral revUniqueID 1082201059002 breakPoints17 40N Graphic 2 KF`62Rj@~ cREVGeneral revUniqueID 1083347487140O Graphic 2 KF~$~ cREVGeneral revUniqueID 1083347514956P Graphic 2 KF~6P&@| cREVGeneral revUniqueID 1083347515923Q Graphic 2 KF~Dz~ cREVGeneral revUniqueID 1083347517264R Graphic 2 KF | cREVGeneral revUniqueID 1083347517968 SField 2(@&( cREVGeneral revUniqueID 1083347611219 B r3  TField 2(@( cREVGeneral revUniqueID 1083347665074 B r(t)  UField 2(@T( cREVGeneral revUniqueID 1083347665915 B r4  WField 2*@:( cREVGeneral revUniqueID 1083347667471 B Bezier  curve  XField 2(@z"( cREVGeneral revUniqueID 1083347671520 B r2  YField 2(@R@( cREVGeneral revUniqueID 1083347769097 B r1  ZField 1)` cREVGeneral revUniqueID 1083347391917 h @The bezier curve is represented parametrically by the equation: @? @ 9r(t) = (1-t)3 r1 + 3 (1-t)2 t r2 + 3 (1-t) t2 r3 + t3 r4 @ @  @  @ @ @ @ @ @ @, @- @/ @0 @4 @5 @7 5Just for fun, suppose that equation were changed to:  4  9r(t) = (1-t)3 r1 + 2 (1-t)2 t r2 + 2 (1-t) t2 r3 + t3 r4 @ @  @  @ @ @ @ @ @ @, @- @/ @0 @4 @5 @7  0Now see how the curve responds to the controls.  /[ Graphic 1CF3Z4p@ cREVGeneral revUniqueID 1083347418045\ FooBezieri@on resetLayers put the short name of me into tName put offset("bezier",tName)+5 into tNum put char 1 to tNum of tName into tBaseName repeat if there is a group tBaseName then set the layer of group tBaseName to bottom put tBaseName & "A" into tBaseName else exit repeat end repeat end resetLayers on resetProperties tGroup put theBaseName(tGroup) into tBaseName repeat if there is a group tBaseName then put the name of group tBaseName into tOwner set the r1 of grc "BezierLine" of tOwner to the loc of grc "r1" of tOwner set the r2 of grc "BezierLine" of tOwner to the loc of grc "r2" of tOwner set the r3 of grc "BezierLine" of tOwner to the loc of grc "r3" of tOwner set the r4 of grc "BezierLine" of tOwner to the loc of grc "r4" of tOwner put tBaseName & "A" into tBaseName else exit repeat end repeat end resetProperties function theBaseName tGroupName put offset("bezier",tGroupName)+5 into tNum put char 1 to tNum of tGroupName into theBaseName return theBaseName end theBaseName `Gdx23r3138,146dy16 cREVGeneral revUniqueID 1083347451078 breakPoints2 15j BezierLineKV clocal myName, tOwner, dx, dy,theGroupNames,theGroupDisplacement,theBaseGroupName on mouseDown put the name of me into myName put the owner of me into tOwner put the short name of the owner of me into tGroupName repeat if the last char of tGroupName is "A" then delete the last char of tGroupName else exit repeat end repeat put tGroupName into theBaseGroupName repeat if there is a group tGroupName then put the loc of group tGroupName into tGroupLoc put mouseH() -item 1 of tGroupLoc into dx put mouseV() - item 2 of tGroupLoc into dy put dx,dy into theGroupDisplacement[tGroupName] put tGroupName & "A" into tGroupName else exit repeat end repeat end mouseDown on mouseMove x,y if myName is "" then exit mouseMove put theBaseGroupName into tGroupName repeat --with i = 1 to the number of lines in the keys of theGroupNames if there is a group tGroupName then put theGroupDisplacement[tGroupName] into tGroupDisplacement --put theGroupNames[i] into tGroupName set the loc of group tGroupName to x- item 1 of tGroupDisplacement,y- item 2 of tGroupDisplacement put tGroupName & "A" into tGroupName else exit repeat end repeat end mouseMove on mouseUP put "" into myName resetProperties the short name of the owner of me resetLayers end mouseUP on mouseDoubleUP put the the short name of owner of me into tGroupName repeat if the last char of tGroupName is "A" then delete the last char of tGroupName else exit repeat end repeat repeat if there is a group tGroupName then hideControls tGroupName put tGroupName & "A" into tGroupName else exit repeat end repeat end mouseDoubleUp on hideControls theOwnerName put "r1","r2","r3","r4","tangentStartLine","tangentEndLine" into tGraphicList if the visible of grc "r1" of group theOwnerName is true then repeat with i = 1 to 6 set the visible of grc item i of tGraphicList of group theOwnerName to false end repeat else repeat with i = 1 to 6 set the visible of grc item i of tGraphicList of group theOwnerName to true end repeat end if end hideControls on mouseEnter put "" into myName end mouseEnter on doMove put the r1 of me into pt1 put the r2 of me into pt2 put the r3 of me into pt3 put the r4 of me into pt4 repeat with i = 0 to 50 put i/50 into t put 1-t into s repeat with j = 1 to 2 put round(s*s*s*item j of pt1 + 2*s*s*t*item j of pt2 + \ 2*s*t*t*item j of pt3 + t*t*t*item j of pt4) into item j of thePt end repeat put thePt & return after tPoints end repeat set the points of grc "BezierLine" of the owner of me to tPoints end doMove on mouseRelease put "" into myName end mouseRelease on setGraphicProperties tOwner set the r1 of grc "BezierLine" of tOwner to the loc of grc "r1" of tOwner set the r2 of grc "BezierLine" of tOwner to the loc of grc "r2" of tOwner set the r3 of grc "BezierLine" of tOwner to the loc of grc "r3" of tOwner set the r4 of grc "BezierLine" of tOwner to the loc of grc "r4" of tOwner end setGraphicProperties f-r1104,306r2155,262r3264,258r4304,3133h2k/n-r+u(y&}$"   !#%("*%-(0+3.609 cREVGeneral revUniqueID 1082203845787 breakPoints24ktangentStartLineKFg5.h2 cREVGeneral revUniqueID 1082206014867ltangentEndLineKF*909 cREVGeneral revUniqueID 1082206014881mr1KT--Global r1 local myName,dx2,dy2 on mouseDown put the name of me into myName put the owner of me into tOwner getCustomCoordinates end mouseDown on setCustomCoordinates put the owner of me into tOwner put the loc of grc "r2" of tOwner into tR2Loc put the loc of me into tLoc put item 1 of tloc - item 1 of tR2Loc into dx2 put item 2 of tLoc - item 2 of tR2Loc into dy2 set the dx of grc "r2" of tOwner to -dx2 set the dy of grc "r2" of tOwner to -dy2 end setCustomCoordinates on getCustomCoordinates put the owner of me into tOwner put the dx of grc "r2" of tOwner into dx2 put the dy of grc "r2" of tOwner into dy2 end getCustomCoordinates on mouseUP put "" into myName end mouseUP on mousemove u,v if myName is "" then exit mouseMove doMouseMove u,v end mouseMove on doMouseMove u,v set loc of me to u,v put the owner of me into tOwner set the r1 of grc "BezierLine" of tOwner to u,v getCustomCoordinates send "doMouseMove u+dx2,v+dy2" to grc "r2" of tOwner setCustomCoordinates put u,v & return & the loc of grc "r2" of tOwner after tTangentStartPoints set the points of grc "TangentStartLine" of tOwner to tTangentStartPoints send "doMove" to grc "bezierLine" of tOwner end doMouseMove on mouseRelease mouseUp end mouseRelease ""d.h cREVGeneral revUniqueID 1082200959159 breakPoints36nr2KPlocal myName,tOwner,tPreviousOwnerName,dx2,dy2,dx3,dy3 on mouseDown put the name of me into myName put the owner of me into tOwner put the short name of tOwner into tOwnerName put tOwnerName into tPreviousOwnerName delete last char of tPreviousOwnerName end mouseDown on mouseUP put "" into myName -- put the owner of me into tOwner -- setCustomCoor end mouseUP on mouseEnter put "" into myName end mouseEnter on getCustomCoordinates put the owner of me into tOwner put the dx of grc "r2" of tOwner into dx2 put the dy of grc "r2" of tOwner into dy2 if there is a group tPreviousOwnerName then put the dx of grc "r3" of group tPreviousOwnerName into dx3 put the dy of grc "r3" of group tPreviousOwnerName into dy3 end if end getCustomCoordinates on setCustomCoordinates put the loc of grc "r1" of tOwner into tR1Loc put the loc of me into tLoc put item 1 of tloc - item 1 of tR1Loc into ddx put item 2 of tLoc - item 2 of tR1Loc into ddy set the dx of me to ddx set the dy of me to ddy end setCustomCoordinates on mousemove u,v if myName is "" then exit mouseMove doMouseMove u,v end mouseMove on justMe u,v if the shiftkey is down then exit to top set loc of me to u,v put the owner of me into tOwner set the r2 of grc "BezierLine" of tOwner to u,v setcustomCoordinates if there is a group tPreviousOwnerName then getCustomCoordinates put (sqrt((dx2^2 + dy2^2)/ (dx3^2+dy3^2))) into temp put 1/temp into temp put the loc of grc "r1" of tOwner into tRedLoc put round(item 1 of tRedLoc - temp*dx2) into x2 put round(item 2 of tRedLoc - temp * dy2) into y2 setCustomCoordinates end if put u,v & return & the loc of grc "r1" of tOwner after tTangentStartPoints set the points of grc "TangentStartLine" of tOwner to tTangentStartPoints --send "doMouseMove x2,y2" to grc "r3" of group tPreviousOwnerName --send "JustMe x2,y2" to grc "r3" of group tPreviousOwnerName --set the loc of grc "r2" of group tPreviousOwnerName to x2,y2 --set the r2 of grc "BezierLine" of group tPreviousOwnerName to x2,y2 send "doMove" to grc "bezierLine" of tOwner end justme on doMouseMove u,v justMe u,v if there is a group tPreviousOwnerName then put the backgroundColor of grc "r4" of group tPreviousOwnerName into tColor end if switch tColor case red if there is a group tPreviousOwnerName then getCustomCoordinates put (sqrt((dx2^2 + dy2^2)/ (dx3^2+dy3^2))) into temp put 1/temp into temp put the loc of grc "r1" of tOwner into tRedLoc put round(item 1 of tRedLoc - temp*dx2) into x2 put round(item 2 of tRedLoc - temp * dy2) into y2 setCustomCoordinates end if put u,v & return & the loc of grc "r1" of tOwner after tTangentStartPoints set the points of grc "TangentStartLine" of tOwner to tTangentStartPoints --send "doMouseMove x2,y2" to grc "r3" of group tPreviousOwnerName send "JustMe x2,y2" to grc "r3" of group tPreviousOwnerName --set the loc of grc "r2" of group tPreviousOwnerName to x2,y2 --set the r2 of grc "BezierLine" of group tPreviousOwnerName to x2,y2 send "doMove" to grc "bezierLine" of tOwner break -- break -- case red -- put u,v & return & the loc of grc "r1" of tOwner after tTangentEndPoints -- set the points of grc "TangentEndLine" of tOwner to tTangentEndPoints -- send "doMove" to grc "bezierLine" of tOwner break end switch end doMouseMove put u,v & return & the loc of grc "r1" of tOwner after tTangentStartPoints set the points of grc "TangentStartLine" of tOwner to tTangentStartPoints send "doMove" to grc "bezierLine" of tOwner setCustomCoordinates end doMouseMove on mouseRelease mouseUp end mouseRelease 88884444-15-15dx51dy-44 cREVGeneral revUniqueID 1082201057991 breakPointsor3KP local myName,tNextOwnerName,dx2,dy2,dx3,dy3,tOwner on mouseDown put the name of me into myName put the owner of me into tOwner put the short name of tOwner into tOwnerName put tOwnerName & "A" into tNextOwnerName --getCustomCoordinates end mouseDown on setMeStraight mouseDown getCustomCoordinates doMouseMove mouseH() -dx3,mouseV() - dy3 put "" into myName end setMeStraight on getCustomCoordinates put the owner of me into tOwner put the dx of grc "r3" of tOwner into dx3 put the dy of grc "r3" of tOwner into dy3 put the short name of tOwner&"A" into tNextOwnerName if there is a group tNextOwnerName then put the dx of grc "r2" of group tNextOwnerName into dx2 put the dy of grc "r2" of group tNextOwnerName into dy2 end if end getCustomCoordinates on mouseEnter put "" into myName end mouseEnter on mouseUP put "" into myName setCustomCoordinates end mouseUP on setCustomCoordinates put the owner of me into tOwner put the loc of grc "r4" of tOwner into tR4Loc put the loc of me into tR3Loc put item 1 of tR4Loc - item 1 of tR3Loc into ddx put item 2 of tR4Loc - item 2 of tR3Loc into ddy set the dx of me to ddx set the dy of me to ddy end setCustomCoordinates on mousemove u,v if myName is "" then exit mouseMove doMouseMove u,v end mouseMove on justMe u,v set loc of me to u,v put the owner of me into tOwner set the r3 of grc "BezierLine" of tOwner to u,v put u,v & return & the loc of grc "r4" of tOwner after tTangentEndPoints set the points of grc "TangentEndLine" of tOwner to tTangentEndPoints if there is a group tNextOwnerName then getCustomCoordinates put the loc of grc "r4" of tOwner into tRedLoc put (sqrt((dx2^2 + dy2^2)/ (dx3^2+dy3^2))) into temp put round(item 1 of tRedLoc + temp*dx3) into x2 put round(item 2 of tRedLoc + temp * dy3) into y2 setCustomCoordinates end if send "doMove" to grc "bezierLine" of tOwner end justMe on doMouseMove u,v if the shiftKey is down then exit to top justMe u,v put the backgroundColor of grc "r4" of tOwner into tColor switch tColor case red if there is a group tNextOwnerName then getCustomCoordinates put (sqrt((dx2^2 + dy2^2)/ (dx3^2+dy3^2))) into temp put the loc of grc "r4" of tOwner into tRedLoc put round(item 1 of tRedLoc + temp*dx3) into x2 put round(item 2 of tRedLoc + temp * dy3) into y2 setCustomCoordinates end if put u,v & return & the loc of grc "r4" of tOwner after tTangentEndPoints set the points of grc "TangentEndLine" of tOwner to tTangentEndPoints if there is a group tNextOwnerName then send "JustMe x2,y2" to grc "r2" of group tNextOwnerName end if break case black put u,v & return & the loc of grc "r4" of tOwner after tTangentEndPoints set the points of grc "TangentEndLine" of tOwner to tTangentEndPoints send "doMove" to grc "bezierLine" of tOwner break end switch end doMouseMove on mouseRelease mouseUp end mouseRelease // 3535-3-3111112121414151552521717-22-2218182020191921212525882626dx406767dy55 cREVGeneral revUniqueID 1082201058379 breakPoints1 15 49pr4KT local myName,tOwner,dx3,dy3 on mouseDown put the name of me into myName put the owner of me into theOwner put theOwner into tOwner --set the layer of tOwner to top getCustomCoordinates theOwner --getCustomCoordinates theNextOwner(theOwner) setCustomCoordinates theOwner --setCustomCoordinates theNextOwner(theOwner) end mouseDown on setCustomCoordinates theOwner put the loc of grc "r3" of theOwner into tR3Loc put the loc of me into tLoc put item 1 of tloc - item 1 of tR3Loc into dx3 put item 2 of tLoc - item 2 of tR3Loc into dy3 set the dx3 of grc "r3" of theOwner to dx3 set the dy3 of grc "r3" of theOwner to dy3 end setCustomCoordinates function theNextOwner thisOwner put the short name of thisOwner into tOwnerName put tOwnerName & "A" into tNewOwnerName if there is a group tNewOwnerName then put the long name of group tNewOwnerName into tNextGroup else put thisOwner into tNextGroup return tNextGroup end theNextOwner on getCustomCoordinates theOwner --put the owner of me into tOwner put the dx of grc "r3" of theOwner into dx3 put the dy of grc "r3" of theOwner into dy3 end getCustomCoordinates on mouseUP put "" into myName end mouseUP on mousemove u,v if myName is "" then exit mouseMove doMouseMove u,v end mouseMove on doMouseMove u,v put the owner of me into tOwner set loc of me to u,v set the r4 of grc "BezierLine" of tOwner to u,v --send "doMouseMove u-dx3,v-dy3" to grc "r3" of tOwner set the loc of grc "r3" of tOwner to u-dx3,v-dy3 set the r3 of of grc "BezierLine" of tOwner to u-dx3,v-dy3 put u,v & return & the loc of grc "r3" of tOwner after tTangentEndPoints set the points of grc "TangentEndLine" of tOwner to tTangentEndPoints send "doMove" to grc "bezierLine" of tOwner put the short name of the owner of me into tOwnerName put tOwnerName & "A" into tNextGroupName if there is a group tNextGroupName then send "doMouseMove u,v" to grc "r1" of group tNextGroupName end if -- case black -- put the short name of the owner of me into tOwnerName -- put tOwnerName & "A" into tNextGroupName -- if there is a group tNextGroupName then -- send "doMouseMove u,v" to grc "r1" of group tNextGroupName -- end if -- -- break -- end switch end doMouseMove on mouseEnter put "" into myName end mouseEnter on mouseRelease mouseUp end mouseRelease on mouseDoubleUp if the backgroundcolor of me is red then set the backgroundcolor of me to black else set the backgroundcolor of me to red send "setMeStraight" to grc "r3" of group the owner of me end if resetLayers doMouseMove mouseh(),mouseV() end mouseDoubleUp black,5h cREVGeneral revUniqueID 1082201059002 breakPoints17 40] Graphic 2 KF`62Rj@~ cREVGeneral revUniqueID 1083347487140^ Graphic 2 KF~$~ cREVGeneral revUniqueID 1083347514956_ Graphic 2 KF~6P&@| cREVGeneral revUniqueID 1083347515923` Graphic 2 KF~Dz~ cREVGeneral revUniqueID 1083347517264a Graphic 2 KF | cREVGeneral revUniqueID 1083347517968 bField 2(@&( cREVGeneral revUniqueID 1083347611219 h r3  cField 2(@( cREVGeneral revUniqueID 1083347665074 h r(t)  dField 2(@T( cREVGeneral revUniqueID 1083347665915 h r4  eField 2*@:( cREVGeneral revUniqueID 1083347667471 h Bezier  curve  fField 2(@z"( cREVGeneral revUniqueID 1083347671520 h r2  gField 2(@R@( cREVGeneral revUniqueID 1083347769097 h r1 sNextEp*on mouseUP go to next card end mouseUP  bTS cREVGeneral revUniqueID 1083403360064 tNextEp*on mouseUP go to next card end mouseUP BjTU cREVGeneral revUniqueID 1083403360064 uNextEp*on mouseUP go to next card end mouseUP 0nTU cREVGeneral revUniqueID 1083403401091 vNextEp*on mouseUP go to next card end mouseUP 4nTW cREVGeneral revUniqueID 1083403406486 wField 2(@Zf cREVGeneral revUniqueID 1083102196333   xField 3)`redhJ cREVGeneral revUniqueID 1083403607259  (When you are done with this help substack you may wish to delete it--or remove it as a substack--in order to reduce the size of the Bezier Line plug-in. This will reduce the size to about 100K.) z Graphic 1CBq[ .\r cREVGeneral revUniqueID 1083406874872Special effectExon mouseUP put "fooBezier" into tGroupName put tGroupName into tBaseName put 0 into i repeat if there is a group tGroupName then if i mod 2 is 0 then set the foregroundcolor of grc "bezierLine" of group tGroupName to "red" else set the foregroundcolor of grc "bezierLine" of group tGroupName to "blue" set the endArrow of grc "bezierLine" of group tGroupName to true set the lineSize of grc "bezierLine" of group tGroupName to 2 put tGroupName & "A" into tGroupName else exit repeat add 1 to i end repeat send "mouseDoubleUp" to grc "bezierLine" of group tBaseName end mouseUP THb3 cREVGeneral revUniqueID 1083407033066 breakPoints2 ResetExon mouseUP put "fooBezier" into tGroupName put tGroupName into tBaseName put 0 into i repeat if there is a group tGroupName then if i mod 2 is 0 then set the foregroundcolor of grc "bezierLine" of group tGroupName to "black" else set the foregroundcolor of grc "bezierLine" of group tGroupName to "black" set the endArrow of grc "bezierLine" of group tGroupName to false set the lineSize of grc "bezierLine" of group tGroupName to 1 put tGroupName & "A" into tGroupName else exit repeat add 1 to i end repeat send "mouseDoubleUP" to grc "bezierLine" of group tBaseName end mouseUP Hb5 cREVGeneral revUniqueID 1083407639648 breakPoints2 { FooBezieri@on resetLayers put the short name of me into tName put offset("bezier",tName)+5 into tNum put char 1 to tNum of tName into tBaseName repeat if there is a group tBaseName then set the layer of group tBaseName to bottom put tBaseName & "A" into tBaseName else exit repeat end repeat end resetLayers on resetProperties tGroup put theBaseName(tGroup) into tBaseName repeat if there is a group tBaseName then put the name of group tBaseName into tOwner set the r1 of grc "BezierLine" of tOwner to the loc of grc "r1" of tOwner set the r2 of grc "BezierLine" of tOwner to the loc of grc "r2" of tOwner set the r3 of grc "BezierLine" of tOwner to the loc of grc "r3" of tOwner set the r4 of grc "BezierLine" of tOwner to the loc of grc "r4" of tOwner put tBaseName & "A" into tBaseName else exit repeat end repeat end resetProperties function theBaseName tGroupName put offset("bezier",tGroupName)+5 into tNum put char 1 to tNum of tGroupName into theBaseName return theBaseName end theBaseName yzdx23dy16r3138,146 cREVGeneral revUniqueID 1083406908737 breakPoints2 15| BezierLine@KV glocal myName, tOwner, dx, dy,theGroupNames,theGroupDisplacement,theBaseGroupName on mouseDown put the name of me into myName put the owner of me into tOwner put the short name of the owner of me into tGroupName repeat if the last char of tGroupName is "A" then delete the last char of tGroupName else exit repeat end repeat put tGroupName into theBaseGroupName repeat if there is a group tGroupName then put the loc of group tGroupName into tGroupLoc put mouseH() -item 1 of tGroupLoc into dx put mouseV() - item 2 of tGroupLoc into dy put dx,dy into theGroupDisplacement[tGroupName] put tGroupName & "A" into tGroupName else exit repeat end repeat end mouseDown on mouseMove x,y if myName is "" then exit mouseMove put theBaseGroupName into tGroupName repeat --with i = 1 to the number of lines in the keys of theGroupNames if there is a group tGroupName then put theGroupDisplacement[tGroupName] into tGroupDisplacement --put theGroupNames[i] into tGroupName set the loc of group tGroupName to x- item 1 of tGroupDisplacement,y- item 2 of tGroupDisplacement put tGroupName & "A" into tGroupName else exit repeat end repeat end mouseMove on mouseUP put "" into myName resetProperties the short name of the owner of me resetLayers end mouseUP on mouseDoubleUP put the the short name of owner of me into tGroupName repeat if the last char of tGroupName is "A" then delete the last char of tGroupName else exit repeat end repeat repeat if there is a group tGroupName then hideControls tGroupName put tGroupName & "A" into tGroupName else exit repeat end repeat end mouseDoubleUp on hideControls theOwnerName put "r1","r2","r3","r4","tangentStartLine","tangentEndLine" into tGraphicList if the visible of grc "r1" of group theOwnerName is true then repeat with i = 1 to 6 set the visible of grc item i of tGraphicList of group theOwnerName to false end repeat else repeat with i = 1 to 6 set the visible of grc item i of tGraphicList of group theOwnerName to true end repeat end if end hideControls on mouseEnter put "" into myName end mouseEnter on doMove put the r1 of me into pt1 put the r2 of me into pt2 put the r3 of me into pt3 put the r4 of me into pt4 repeat with i = 0 to 50 put i/50 into t put 1-t into s repeat with j = 1 to 2 put round(s*s*s*item j of pt1 + 3*s*s*t*item j of pt2 + \ 3*s*t*t*item j of pt3 + t*t*t*item j of pt4) into item j of thePt end repeat put thePt & return after tPoints end repeat set the points of grc "BezierLine" of the owner of me to tPoints end doMove on mouseRelease put "" into myName end mouseRelease on setGraphicProperties tOwner set the r1 of grc "BezierLine" of tOwner to the loc of grc "r1" of tOwner set the r2 of grc "BezierLine" of tOwner to the loc of grc "r2" of tOwner set the r3 of grc "BezierLine" of tOwner to the loc of grc "r3" of tOwner set the r4 of grc "BezierLine" of tOwner to the loc of grc "r4" of tOwner end setGraphicProperties redredqrr1206,281r2263,279r3301,240r4301,1853     !"#$&'())*++,,---- cREVGeneral revUniqueID 1082203845787 breakPoints24}tangentStartLineCF; cREVGeneral revUniqueID 1082206014867~tangentEndLineCF,9-- cREVGeneral revUniqueID 1082206014881r1CTlocal myName,dx2,dy2 on mouseDown put the name of me into myName put the owner of me into tOwner getCustomCoordinates end mouseDown on setCustomCoordinates put the owner of me into tOwner put the loc of grc "r2" of tOwner into tR2Loc put the loc of me into tLoc put item 1 of tloc - item 1 of tR2Loc into dx2 put item 2 of tLoc - item 2 of tR2Loc into dy2 set the dx of grc "r2" of tOwner to -dx2 set the dy of grc "r2" of tOwner to -dy2 end setCustomCoordinates on getCustomCoordinates put the owner of me into tOwner put the dx of grc "r2" of tOwner into dx2 put the dy of grc "r2" of tOwner into dy2 end getCustomCoordinates on mouseUP put "" into myName end mouseUP on mousemove u,v if myName is "" then exit mouseMove doMouseMove u,v end mouseMove on doMouseMove u,v set loc of me to u,v put the owner of me into tOwner set the r1 of grc "BezierLine" of tOwner to u,v getCustomCoordinates send "doMouseMove u+dx2,v+dy2" to grc "r2" of tOwner setCustomCoordinates put u,v & return & the loc of grc "r2" of tOwner after tTangentStartPoints set the points of grc "TangentStartLine" of tOwner to tTangentStartPoints send "doMove" to grc "bezierLine" of tOwner end doMouseMove on mouseRelease mouseUp end mouseRelease ""h cREVGeneral revUniqueID 1082200959159 breakPoints36r2CP local myName,tOwner,tPreviousOwnerName,dx2,dy2,dx3,dy3 on mouseDown put the name of me into myName put the owner of me into tOwner put the short name of tOwner into tOwnerName put tOwnerName into tPreviousOwnerName delete last char of tPreviousOwnerName end mouseDown on mouseUP put "" into myName end mouseUP on mouseEnter put "" into myName end mouseEnter on getCustomCoordinates put the owner of me into tOwner put the dx of grc "r2" of tOwner into dx2 put the dy of grc "r2" of tOwner into dy2 if there is a group tPreviousOwnerName then put the dx of grc "r3" of group tPreviousOwnerName into dx3 put the dy of grc "r3" of group tPreviousOwnerName into dy3 end if end getCustomCoordinates on setCustomCoordinates put the loc of grc "r1" of tOwner into tR1Loc put the loc of me into tLoc put item 1 of tloc - item 1 of tR1Loc into ddx put item 2 of tLoc - item 2 of tR1Loc into ddy set the dx of me to ddx set the dy of me to ddy end setCustomCoordinates on mousemove u,v if myName is "" then exit mouseMove doMouseMove u,v end mouseMove on moveMe u,v if the shiftkey is down then exit to top set loc of me to u,v put the owner of me into tOwner set the r2 of grc "BezierLine" of tOwner to u,v setcustomCoordinates if there is a group tPreviousOwnerName then getCustomCoordinates put (sqrt((dx2^2 + dy2^2)/ (dx3^2+dy3^2))) into temp put 1/temp into temp put the loc of grc "r1" of tOwner into tRedLoc put round(item 1 of tRedLoc - temp*dx2) into x2 put round(item 2 of tRedLoc - temp * dy2) into y2 setCustomCoordinates end if put u,v & return & the loc of grc "r1" of tOwner after tTangentStartPoints set the points of grc "TangentStartLine" of tOwner to tTangentStartPoints send "doMove" to grc "bezierLine" of tOwner end moveMe on doMouseMove u,v moveMe u,v if there is a group tPreviousOwnerName then put the backgroundColor of grc "r4" of group tPreviousOwnerName into tColor end if switch tColor case red if there is a group tPreviousOwnerName then getCustomCoordinates put (sqrt((dx2^2 + dy2^2)/ (dx3^2+dy3^2))) into temp put 1/temp into temp put the loc of grc "r1" of tOwner into tRedLoc put round(item 1 of tRedLoc - temp*dx2) into x2 put round(item 2 of tRedLoc - temp * dy2) into y2 setCustomCoordinates end if put u,v & return & the loc of grc "r1" of tOwner after tTangentStartPoints set the points of grc "TangentStartLine" of tOwner to tTangentStartPoints send "moveMe x2,y2" to grc "r3" of group tPreviousOwnerName send "doMove" to grc "bezierLine" of tOwner break end switch end doMouseMove put u,v & return & the loc of grc "r1" of tOwner after tTangentStartPoints set the points of grc "TangentStartLine" of tOwner to tTangentStartPoints send "doMove" to grc "bezierLine" of tOwner setCustomCoordinates end doMouseMove on mouseRelease mouseUp end mouseRelease dx57dy-2 cREVGeneral revUniqueID 1082201057991 breakPointsr3CP local myName,tNextOwnerName,dx2,dy2,dx3,dy3,tOwner on mouseDown put the name of me into myName put the owner of me into tOwner put the short name of tOwner into tOwnerName put tOwnerName & "A" into tNextOwnerName --getCustomCoordinates end mouseDown on setMeStraight mouseDown getCustomCoordinates doMouseMove mouseH() -dx3,mouseV() - dy3 put "" into myName end setMeStraight on getCustomCoordinates put the owner of me into tOwner put the dx of grc "r3" of tOwner into dx3 put the dy of grc "r3" of tOwner into dy3 put the short name of tOwner&"A" into tNextOwnerName if there is a group tNextOwnerName then put the dx of grc "r2" of group tNextOwnerName into dx2 put the dy of grc "r2" of group tNextOwnerName into dy2 end if end getCustomCoordinates on mouseEnter put "" into myName end mouseEnter on mouseUP put "" into myName setCustomCoordinates end mouseUP on setCustomCoordinates put the owner of me into tOwner put the loc of grc "r4" of tOwner into tR4Loc put the loc of me into tR3Loc put item 1 of tR4Loc - item 1 of tR3Loc into ddx put item 2 of tR4Loc - item 2 of tR3Loc into ddy set the dx of me to ddx set the dy of me to ddy end setCustomCoordinates on mousemove u,v if myName is "" then exit mouseMove doMouseMove u,v end mouseMove on moveMe u,v set loc of me to u,v put the owner of me into tOwner set the r3 of grc "BezierLine" of tOwner to u,v put u,v & return & the loc of grc "r4" of tOwner after tTangentEndPoints set the points of grc "TangentEndLine" of tOwner to tTangentEndPoints if there is a group tNextOwnerName then getCustomCoordinates put the loc of grc "r4" of tOwner into tRedLoc put (sqrt((dx2^2 + dy2^2)/ (dx3^2+dy3^2))) into temp put round(item 1 of tRedLoc + temp*dx3) into x2 put round(item 2 of tRedLoc + temp * dy3) into y2 setCustomCoordinates end if send "doMove" to grc "bezierLine" of tOwner end moveMe on doMouseMove u,v if the shiftKey is down then exit to top moveMe u,v put the backgroundColor of grc "r4" of tOwner into tColor switch tColor case red if there is a group tNextOwnerName then getCustomCoordinates put (sqrt((dx2^2 + dy2^2)/ (dx3^2+dy3^2))) into temp put the loc of grc "r4" of tOwner into tRedLoc put round(item 1 of tRedLoc + temp*dx3) into x2 put round(item 2 of tRedLoc + temp * dy3) into y2 setCustomCoordinates end if put u,v & return & the loc of grc "r4" of tOwner after tTangentEndPoints set the points of grc "TangentEndLine" of tOwner to tTangentEndPoints if there is a group tNextOwnerName then send "moveMe x2,y2" to grc "r2" of group tNextOwnerName end if break case black put u,v & return & the loc of grc "r4" of tOwner after tTangentEndPoints set the points of grc "TangentEndLine" of tOwner to tTangentEndPoints send "doMove" to grc "bezierLine" of tOwner break end switch end doMouseMove on mouseRelease mouseUp end mouseRelease // )dx0-25-25dy-552323 cREVGeneral revUniqueID 1082201058379 breakPoints1 15 49r4CTlocal myName,tOwner,dx3,dy3 on mouseDown put the name of me into myName put the owner of me into theOwner put theOwner into tOwner getCustomCoordinates theOwner setCustomCoordinates theOwner end mouseDown on setCustomCoordinates theOwner put the loc of grc "r3" of theOwner into tR3Loc put the loc of me into tLoc put item 1 of tloc - item 1 of tR3Loc into dx3 put item 2 of tLoc - item 2 of tR3Loc into dy3 set the dx3 of grc "r3" of theOwner to dx3 set the dy3 of grc "r3" of theOwner to dy3 end setCustomCoordinates function theNextOwner thisOwner put the short name of thisOwner into tOwnerName put tOwnerName & "A" into tNewOwnerName if there is a group tNewOwnerName then put the long name of group tNewOwnerName into tNextGroup else put thisOwner into tNextGroup return tNextGroup end theNextOwner on getCustomCoordinates theOwner --put the owner of me into tOwner put the dx of grc "r3" of theOwner into dx3 put the dy of grc "r3" of theOwner into dy3 end getCustomCoordinates on mouseUP put "" into myName end mouseUP on mousemove u,v if myName is "" then exit mouseMove doMouseMove u,v end mouseMove on doMouseMove u,v put the owner of me into tOwner set loc of me to u,v set the r4 of grc "BezierLine" of tOwner to u,v set the loc of grc "r3" of tOwner to u-dx3,v-dy3 set the r3 of of grc "BezierLine" of tOwner to u-dx3,v-dy3 put u,v & return & the loc of grc "r3" of tOwner after tTangentEndPoints set the points of grc "TangentEndLine" of tOwner to tTangentEndPoints send "doMove" to grc "bezierLine" of tOwner put the short name of the owner of me into tOwnerName put tOwnerName & "A" into tNextGroupName if there is a group tNextGroupName then send "doMouseMove u,v" to grc "r1" of group tNextGroupName end if end doMouseMove on mouseEnter put "" into myName end mouseEnter on mouseRelease mouseUp end mouseRelease on mouseDoubleUp if the backgroundcolor of me is red then set the backgroundcolor of me to black else set the backgroundcolor of me to red send "setMeStraight" to grc "r3" of group the owner of me end if resetLayers doMouseMove mouseh(),mouseV() end mouseDoubleUp red)h cREVGeneral revUniqueID 1082201059002 breakPoints17 40 FooBezierAi@on resetLayers put the short name of me into tName put offset("bezier",tName)+5 into tNum put char 1 to tNum of tName into tBaseName repeat if there is a group tBaseName then set the layer of group tBaseName to bottom put tBaseName & "A" into tBaseName else exit repeat end repeat end resetLayers on resetProperties tGroup put theBaseName(tGroup) into tBaseName repeat if there is a group tBaseName then put the name of group tBaseName into tOwner set the r1 of grc "BezierLine" of tOwner to the loc of grc "r1" of tOwner set the r2 of grc "BezierLine" of tOwner to the loc of grc "r2" of tOwner set the r3 of grc "BezierLine" of tOwner to the loc of grc "r3" of tOwner set the r4 of grc "BezierLine" of tOwner to the loc of grc "r4" of tOwner put tBaseName & "A" into tBaseName else exit repeat end repeat end resetProperties function theBaseName tGroupName put offset("bezier",tGroupName)+5 into tNum put char 1 to tNum of tGroupName into theBaseName return theBaseName end theBaseName Lxzdx23r3138,146dy16 cREVGeneral revUniqueID 1083406908777 breakPoints2 15 BezierLine@KV glocal myName, tOwner, dx, dy,theGroupNames,theGroupDisplacement,theBaseGroupName on mouseDown put the name of me into myName put the owner of me into tOwner put the short name of the owner of me into tGroupName repeat if the last char of tGroupName is "A" then delete the last char of tGroupName else exit repeat end repeat put tGroupName into theBaseGroupName repeat if there is a group tGroupName then put the loc of group tGroupName into tGroupLoc put mouseH() -item 1 of tGroupLoc into dx put mouseV() - item 2 of tGroupLoc into dy put dx,dy into theGroupDisplacement[tGroupName] put tGroupName & "A" into tGroupName else exit repeat end repeat end mouseDown on mouseMove x,y if myName is "" then exit mouseMove put theBaseGroupName into tGroupName repeat --with i = 1 to the number of lines in the keys of theGroupNames if there is a group tGroupName then put theGroupDisplacement[tGroupName] into tGroupDisplacement --put theGroupNames[i] into tGroupName set the loc of group tGroupName to x- item 1 of tGroupDisplacement,y- item 2 of tGroupDisplacement put tGroupName & "A" into tGroupName else exit repeat end repeat end mouseMove on mouseUP put "" into myName resetProperties the short name of the owner of me resetLayers end mouseUP on mouseDoubleUP put the the short name of owner of me into tGroupName repeat if the last char of tGroupName is "A" then delete the last char of tGroupName else exit repeat end repeat repeat if there is a group tGroupName then hideControls tGroupName put tGroupName & "A" into tGroupName else exit repeat end repeat end mouseDoubleUp on hideControls theOwnerName put "r1","r2","r3","r4","tangentStartLine","tangentEndLine" into tGraphicList if the visible of grc "r1" of group theOwnerName is true then repeat with i = 1 to 6 set the visible of grc item i of tGraphicList of group theOwnerName to false end repeat else repeat with i = 1 to 6 set the visible of grc item i of tGraphicList of group theOwnerName to true end repeat end if end hideControls on mouseEnter put "" into myName end mouseEnter on doMove put the r1 of me into pt1 put the r2 of me into pt2 put the r3 of me into pt3 put the r4 of me into pt4 repeat with i = 0 to 50 put i/50 into t put 1-t into s repeat with j = 1 to 2 put round(s*s*s*item j of pt1 + 3*s*s*t*item j of pt2 + \ 3*s*t*t*item j of pt3 + t*t*t*item j of pt4) into item j of thePt end repeat put thePt & return after tPoints end repeat set the points of grc "BezierLine" of the owner of me to tPoints end doMove on mouseRelease put "" into myName end mouseRelease on setGraphicProperties tOwner set the r1 of grc "BezierLine" of tOwner to the loc of grc "r1" of tOwner set the r2 of grc "BezierLine" of tOwner to the loc of grc "r2" of tOwner set the r3 of grc "BezierLine" of tOwner to the loc of grc "r3" of tOwner set the r4 of grc "BezierLine" of tOwner to the loc of grc "r4" of tOwner end setGraphicProperties bluebluePprr1301,185r2301,126r3259,88r4207,893----,,++*)('&%$#! }{ywusq o m kihfecba`_^]\[[ZZYYYYY cREVGeneral revUniqueID 1082203845787 breakPoints24tangentStartLineCF,}=-~- cREVGeneral revUniqueID 1082206014867tangentEndLineCFW6XY cREVGeneral revUniqueID 1082206014881r1CTlocal myName,dx2,dy2 on mouseDown put the name of me into myName put the owner of me into tOwner getCustomCoordinates end mouseDown on setCustomCoordinates put the owner of me into tOwner put the loc of grc "r2" of tOwner into tR2Loc put the loc of me into tLoc put item 1 of tloc - item 1 of tR2Loc into dx2 put item 2 of tLoc - item 2 of tR2Loc into dy2 set the dx of grc "r2" of tOwner to -dx2 set the dy of grc "r2" of tOwner to -dy2 end setCustomCoordinates on getCustomCoordinates put the owner of me into tOwner put the dx of grc "r2" of tOwner into dx2 put the dy of grc "r2" of tOwner into dy2 end getCustomCoordinates on mouseUP put "" into myName end mouseUP on mousemove u,v if myName is "" then exit mouseMove doMouseMove u,v end mouseMove on doMouseMove u,v set loc of me to u,v put the owner of me into tOwner set the r1 of grc "BezierLine" of tOwner to u,v getCustomCoordinates send "doMouseMove u+dx2,v+dy2" to grc "r2" of tOwner setCustomCoordinates put u,v & return & the loc of grc "r2" of tOwner after tTangentStartPoints set the points of grc "TangentStartLine" of tOwner to tTangentStartPoints send "doMove" to grc "bezierLine" of tOwner end doMouseMove on mouseRelease mouseUp end mouseRelease "")h cREVGeneral revUniqueID 1082200959159 breakPoints36r2CP local myName,tOwner,tPreviousOwnerName,dx2,dy2,dx3,dy3 on mouseDown put the name of me into myName put the owner of me into tOwner put the short name of tOwner into tOwnerName put tOwnerName into tPreviousOwnerName delete last char of tPreviousOwnerName end mouseDown on mouseUP put "" into myName end mouseUP on mouseEnter put "" into myName end mouseEnter on getCustomCoordinates put the owner of me into tOwner put the dx of grc "r2" of tOwner into dx2 put the dy of grc "r2" of tOwner into dy2 if there is a group tPreviousOwnerName then put the dx of grc "r3" of group tPreviousOwnerName into dx3 put the dy of grc "r3" of group tPreviousOwnerName into dy3 end if end getCustomCoordinates on setCustomCoordinates put the loc of grc "r1" of tOwner into tR1Loc put the loc of me into tLoc put item 1 of tloc - item 1 of tR1Loc into ddx put item 2 of tLoc - item 2 of tR1Loc into ddy set the dx of me to ddx set the dy of me to ddy end setCustomCoordinates on mousemove u,v if myName is "" then exit mouseMove doMouseMove u,v end mouseMove on moveMe u,v if the shiftkey is down then exit to top set loc of me to u,v put the owner of me into tOwner set the r2 of grc "BezierLine" of tOwner to u,v setcustomCoordinates if there is a group tPreviousOwnerName then getCustomCoordinates put (sqrt((dx2^2 + dy2^2)/ (dx3^2+dy3^2))) into temp put 1/temp into temp put the loc of grc "r1" of tOwner into tRedLoc put round(item 1 of tRedLoc - temp*dx2) into x2 put round(item 2 of tRedLoc - temp * dy2) into y2 setCustomCoordinates end if put u,v & return & the loc of grc "r1" of tOwner after tTangentStartPoints set the points of grc "TangentStartLine" of tOwner to tTangentStartPoints send "doMove" to grc "bezierLine" of tOwner end moveMe on doMouseMove u,v moveMe u,v if there is a group tPreviousOwnerName then put the backgroundColor of grc "r4" of group tPreviousOwnerName into tColor end if switch tColor case red if there is a group tPreviousOwnerName then getCustomCoordinates put (sqrt((dx2^2 + dy2^2)/ (dx3^2+dy3^2))) into temp put 1/temp into temp put the loc of grc "r1" of tOwner into tRedLoc put round(item 1 of tRedLoc - temp*dx2) into x2 put round(item 2 of tRedLoc - temp * dy2) into y2 setCustomCoordinates end if put u,v & return & the loc of grc "r1" of tOwner after tTangentStartPoints set the points of grc "TangentStartLine" of tOwner to tTangentStartPoints send "moveMe x2,y2" to grc "r3" of group tPreviousOwnerName send "doMove" to grc "bezierLine" of tOwner break end switch end doMouseMove put u,v & return & the loc of grc "r1" of tOwner after tTangentStartPoints set the points of grc "TangentStartLine" of tOwner to tTangentStartPoints send "doMove" to grc "bezierLine" of tOwner setCustomCoordinates end doMouseMove on mouseRelease mouseUp end mouseRelease )zdx0dy-59 cREVGeneral revUniqueID 1082201057991 breakPointsr3CP local myName,tNextOwnerName,dx2,dy2,dx3,dy3,tOwner on mouseDown put the name of me into myName put the owner of me into tOwner put the short name of tOwner into tOwnerName put tOwnerName & "A" into tNextOwnerName --getCustomCoordinates end mouseDown on setMeStraight mouseDown getCustomCoordinates doMouseMove mouseH() -dx3,mouseV() - dy3 put "" into myName end setMeStraight on getCustomCoordinates put the owner of me into tOwner put the dx of grc "r3" of tOwner into dx3 put the dy of grc "r3" of tOwner into dy3 put the short name of tOwner&"A" into tNextOwnerName if there is a group tNextOwnerName then put the dx of grc "r2" of group tNextOwnerName into dx2 put the dy of grc "r2" of group tNextOwnerName into dy2 end if end getCustomCoordinates on mouseEnter put "" into myName end mouseEnter on mouseUP put "" into myName setCustomCoordinates end mouseUP on setCustomCoordinates put the owner of me into tOwner put the loc of grc "r4" of tOwner into tR4Loc put the loc of me into tR3Loc put item 1 of tR4Loc - item 1 of tR3Loc into ddx put item 2 of tR4Loc - item 2 of tR3Loc into ddy set the dx of me to ddx set the dy of me to ddy end setCustomCoordinates on mousemove u,v if myName is "" then exit mouseMove doMouseMove u,v end mouseMove on moveMe u,v set loc of me to u,v put the owner of me into tOwner set the r3 of grc "BezierLine" of tOwner to u,v put u,v & return & the loc of grc "r4" of tOwner after tTangentEndPoints set the points of grc "TangentEndLine" of tOwner to tTangentEndPoints if there is a group tNextOwnerName then getCustomCoordinates put the loc of grc "r4" of tOwner into tRedLoc put (sqrt((dx2^2 + dy2^2)/ (dx3^2+dy3^2))) into temp put round(item 1 of tRedLoc + temp*dx3) into x2 put round(item 2 of tRedLoc + temp * dy3) into y2 setCustomCoordinates end if send "doMove" to grc "bezierLine" of tOwner end moveMe on doMouseMove u,v if the shiftKey is down then exit to top moveMe u,v put the backgroundColor of grc "r4" of tOwner into tColor switch tColor case red if there is a group tNextOwnerName then getCustomCoordinates put (sqrt((dx2^2 + dy2^2)/ (dx3^2+dy3^2))) into temp put the loc of grc "r4" of tOwner into tRedLoc put round(item 1 of tRedLoc + temp*dx3) into x2 put round(item 2 of tRedLoc + temp * dy3) into y2 setCustomCoordinates end if put u,v & return & the loc of grc "r4" of tOwner after tTangentEndPoints set the points of grc "TangentEndLine" of tOwner to tTangentEndPoints if there is a group tNextOwnerName then send "moveMe x2,y2" to grc "r2" of group tNextOwnerName end if break case black put u,v & return & the loc of grc "r4" of tOwner after tTangentEndPoints set the points of grc "TangentEndLine" of tOwner to tTangentEndPoints send "doMove" to grc "bezierLine" of tOwner break end switch end doMouseMove on mouseRelease mouseUp end mouseRelease // T-23-2322dx-52-25-25-52-52dy1 cREVGeneral revUniqueID 1082201058379 breakPoints1 15 49r4CTlocal myName,tOwner,dx3,dy3 on mouseDown put the name of me into myName put the owner of me into theOwner put theOwner into tOwner getCustomCoordinates theOwner setCustomCoordinates theOwner end mouseDown on setCustomCoordinates theOwner put the loc of grc "r3" of theOwner into tR3Loc put the loc of me into tLoc put item 1 of tloc - item 1 of tR3Loc into dx3 put item 2 of tLoc - item 2 of tR3Loc into dy3 set the dx3 of grc "r3" of theOwner to dx3 set the dy3 of grc "r3" of theOwner to dy3 end setCustomCoordinates function theNextOwner thisOwner put the short name of thisOwner into tOwnerName put tOwnerName & "A" into tNewOwnerName if there is a group tNewOwnerName then put the long name of group tNewOwnerName into tNextGroup else put thisOwner into tNextGroup return tNextGroup end theNextOwner on getCustomCoordinates theOwner --put the owner of me into tOwner put the dx of grc "r3" of theOwner into dx3 put the dy of grc "r3" of theOwner into dy3 end getCustomCoordinates on mouseUP put "" into myName end mouseUP on mousemove u,v if myName is "" then exit mouseMove doMouseMove u,v end mouseMove on doMouseMove u,v put the owner of me into tOwner set loc of me to u,v set the r4 of grc "BezierLine" of tOwner to u,v set the loc of grc "r3" of tOwner to u-dx3,v-dy3 set the r3 of of grc "BezierLine" of tOwner to u-dx3,v-dy3 put u,v & return & the loc of grc "r3" of tOwner after tTangentEndPoints set the points of grc "TangentEndLine" of tOwner to tTangentEndPoints send "doMove" to grc "bezierLine" of tOwner put the short name of the owner of me into tOwnerName put tOwnerName & "A" into tNextGroupName if there is a group tNextGroupName then send "doMouseMove u,v" to grc "r1" of group tNextGroupName end if end doMouseMove on mouseEnter put "" into myName end mouseEnter on mouseRelease mouseUp end mouseRelease on mouseDoubleUp if the backgroundcolor of me is red then set the backgroundcolor of me to black else set the backgroundcolor of me to red send "setMeStraight" to grc "r3" of group the owner of me end if resetLayers doMouseMove mouseh(),mouseV() end mouseDoubleUp redUh cREVGeneral revUniqueID 1082201059002 breakPoints17 40 FooBezierAAi@on resetLayers put the short name of me into tName put offset("bezier",tName)+5 into tNum put char 1 to tNum of tName into tBaseName repeat if there is a group tBaseName then set the layer of group tBaseName to bottom put tBaseName & "A" into tBaseName else exit repeat end repeat end resetLayers on resetProperties tGroup put theBaseName(tGroup) into tBaseName repeat if there is a group tBaseName then put the name of group tBaseName into tOwner set the r1 of grc "BezierLine" of tOwner to the loc of grc "r1" of tOwner set the r2 of grc "BezierLine" of tOwner to the loc of grc "r2" of tOwner set the r3 of grc "BezierLine" of tOwner to the loc of grc "r3" of tOwner set the r4 of grc "BezierLine" of tOwner to the loc of grc "r4" of tOwner put tBaseName & "A" into tBaseName else exit repeat end repeat end resetProperties function theBaseName tGroupName put offset("bezier",tGroupName)+5 into tNum put char 1 to tNum of tGroupName into theBaseName return theBaseName end theBaseName cLy}dx23dy16r3138,146 cREVGeneral revUniqueID 1083406908814 breakPoints2 15 BezierLine@KV glocal myName, tOwner, dx, dy,theGroupNames,theGroupDisplacement,theBaseGroupName on mouseDown put the name of me into myName put the owner of me into tOwner put the short name of the owner of me into tGroupName repeat if the last char of tGroupName is "A" then delete the last char of tGroupName else exit repeat end repeat put tGroupName into theBaseGroupName repeat if there is a group tGroupName then put the loc of group tGroupName into tGroupLoc put mouseH() -item 1 of tGroupLoc into dx put mouseV() - item 2 of tGroupLoc into dy put dx,dy into theGroupDisplacement[tGroupName] put tGroupName & "A" into tGroupName else exit repeat end repeat end mouseDown on mouseMove x,y if myName is "" then exit mouseMove put theBaseGroupName into tGroupName repeat --with i = 1 to the number of lines in the keys of theGroupNames if there is a group tGroupName then put theGroupDisplacement[tGroupName] into tGroupDisplacement --put theGroupNames[i] into tGroupName set the loc of group tGroupName to x- item 1 of tGroupDisplacement,y- item 2 of tGroupDisplacement put tGroupName & "A" into tGroupName else exit repeat end repeat end mouseMove on mouseUP put "" into myName resetProperties the short name of the owner of me resetLayers end mouseUP on mouseDoubleUP put the the short name of owner of me into tGroupName repeat if the last char of tGroupName is "A" then delete the last char of tGroupName else exit repeat end repeat repeat if there is a group tGroupName then hideControls tGroupName put tGroupName & "A" into tGroupName else exit repeat end repeat end mouseDoubleUp on hideControls theOwnerName put "r1","r2","r3","r4","tangentStartLine","tangentEndLine" into tGraphicList if the visible of grc "r1" of group theOwnerName is true then repeat with i = 1 to 6 set the visible of grc item i of tGraphicList of group theOwnerName to false end repeat else repeat with i = 1 to 6 set the visible of grc item i of tGraphicList of group theOwnerName to true end repeat end if end hideControls on mouseEnter put "" into myName end mouseEnter on doMove put the r1 of me into pt1 put the r2 of me into pt2 put the r3 of me into pt3 put the r4 of me into pt4 repeat with i = 0 to 50 put i/50 into t put 1-t into s repeat with j = 1 to 2 put round(s*s*s*item j of pt1 + 3*s*s*t*item j of pt2 + \ 3*s*t*t*item j of pt3 + t*t*t*item j of pt4) into item j of thePt end repeat put thePt & return after tPoints end repeat set the points of grc "BezierLine" of the owner of me to tPoints end doMove on mouseRelease put "" into myName end mouseRelease on setGraphicProperties tOwner set the r1 of grc "BezierLine" of tOwner to the loc of grc "r1" of tOwner set the r2 of grc "BezierLine" of tOwner to the loc of grc "r2" of tOwner set the r3 of grc "BezierLine" of tOwner to the loc of grc "r3" of tOwner set the r4 of grc "BezierLine" of tOwner to the loc of grc "r4" of tOwner end setGraphicProperties redredgPqur1207,89r2151,90r3112,135r4112,1883YYYZZ[[\]^_`abcefhjkmoqsuwy{~~}{zyxvuutsrrqqpppp cREVGeneral revUniqueID 1082203845787 breakPoints24tangentStartLineCFX:ZY cREVGeneral revUniqueID 1082206014867tangentEndLineCFo7pp cREVGeneral revUniqueID 1082206014881r1CTlocal myName,dx2,dy2 on mouseDown put the name of me into myName put the owner of me into tOwner getCustomCoordinates end mouseDown on setCustomCoordinates put the owner of me into tOwner put the loc of grc "r2" of tOwner into tR2Loc put the loc of me into tLoc put item 1 of tloc - item 1 of tR2Loc into dx2 put item 2 of tLoc - item 2 of tR2Loc into dy2 set the dx of grc "r2" of tOwner to -dx2 set the dy of grc "r2" of tOwner to -dy2 end setCustomCoordinates on getCustomCoordinates put the owner of me into tOwner put the dx of grc "r2" of tOwner into dx2 put the dy of grc "r2" of tOwner into dy2 end getCustomCoordinates on mouseUP put "" into myName end mouseUP on mousemove u,v if myName is "" then exit mouseMove doMouseMove u,v end mouseMove on doMouseMove u,v set loc of me to u,v put the owner of me into tOwner set the r1 of grc "BezierLine" of tOwner to u,v getCustomCoordinates send "doMouseMove u+dx2,v+dy2" to grc "r2" of tOwner setCustomCoordinates put u,v & return & the loc of grc "r2" of tOwner after tTangentStartPoints set the points of grc "TangentStartLine" of tOwner to tTangentStartPoints send "doMove" to grc "bezierLine" of tOwner end doMouseMove on mouseRelease mouseUp end mouseRelease ""Uh cREVGeneral revUniqueID 1082200959159 breakPoints36r2CP local myName,tOwner,tPreviousOwnerName,dx2,dy2,dx3,dy3 on mouseDown put the name of me into myName put the owner of me into tOwner put the short name of tOwner into tOwnerName put tOwnerName into tPreviousOwnerName delete last char of tPreviousOwnerName end mouseDown on mouseUP put "" into myName end mouseUP on mouseEnter put "" into myName end mouseEnter on getCustomCoordinates put the owner of me into tOwner put the dx of grc "r2" of tOwner into dx2 put the dy of grc "r2" of tOwner into dy2 if there is a group tPreviousOwnerName then put the dx of grc "r3" of group tPreviousOwnerName into dx3 put the dy of grc "r3" of group tPreviousOwnerName into dy3 end if end getCustomCoordinates on setCustomCoordinates put the loc of grc "r1" of tOwner into tR1Loc put the loc of me into tLoc put item 1 of tloc - item 1 of tR1Loc into ddx put item 2 of tLoc - item 2 of tR1Loc into ddy set the dx of me to ddx set the dy of me to ddy end setCustomCoordinates on mousemove u,v if myName is "" then exit mouseMove doMouseMove u,v end mouseMove on moveMe u,v if the shiftkey is down then exit to top set loc of me to u,v put the owner of me into tOwner set the r2 of grc "BezierLine" of tOwner to u,v setcustomCoordinates if there is a group tPreviousOwnerName then getCustomCoordinates put (sqrt((dx2^2 + dy2^2)/ (dx3^2+dy3^2))) into temp put 1/temp into temp put the loc of grc "r1" of tOwner into tRedLoc put round(item 1 of tRedLoc - temp*dx2) into x2 put round(item 2 of tRedLoc - temp * dy2) into y2 setCustomCoordinates end if put u,v & return & the loc of grc "r1" of tOwner after tTangentStartPoints set the points of grc "TangentStartLine" of tOwner to tTangentStartPoints send "doMove" to grc "bezierLine" of tOwner end moveMe on doMouseMove u,v moveMe u,v if there is a group tPreviousOwnerName then put the backgroundColor of grc "r4" of group tPreviousOwnerName into tColor end if switch tColor case red if there is a group tPreviousOwnerName then getCustomCoordinates put (sqrt((dx2^2 + dy2^2)/ (dx3^2+dy3^2))) into temp put 1/temp into temp put the loc of grc "r1" of tOwner into tRedLoc put round(item 1 of tRedLoc - temp*dx2) into x2 put round(item 2 of tRedLoc - temp * dy2) into y2 setCustomCoordinates end if put u,v & return & the loc of grc "r1" of tOwner after tTangentStartPoints set the points of grc "TangentStartLine" of tOwner to tTangentStartPoints send "moveMe x2,y2" to grc "r3" of group tPreviousOwnerName send "doMove" to grc "bezierLine" of tOwner break end switch end doMouseMove put u,v & return & the loc of grc "r1" of tOwner after tTangentStartPoints set the points of grc "TangentStartLine" of tOwner to tTangentStartPoints send "doMove" to grc "bezierLine" of tOwner setCustomCoordinates end doMouseMove on mouseRelease mouseUp end mouseRelease Vdx-56dy1 cREVGeneral revUniqueID 1082201057991 breakPointsr3CP local myName,tNextOwnerName,dx2,dy2,dx3,dy3,tOwner on mouseDown put the name of me into myName put the owner of me into tOwner put the short name of tOwner into tOwnerName put tOwnerName & "A" into tNextOwnerName --getCustomCoordinates end mouseDown on setMeStraight mouseDown getCustomCoordinates doMouseMove mouseH() -dx3,mouseV() - dy3 put "" into myName end setMeStraight on getCustomCoordinates put the owner of me into tOwner put the dx of grc "r3" of tOwner into dx3 put the dy of grc "r3" of tOwner into dy3 put the short name of tOwner&"A" into tNextOwnerName if there is a group tNextOwnerName then put the dx of grc "r2" of group tNextOwnerName into dx2 put the dy of grc "r2" of group tNextOwnerName into dy2 end if end getCustomCoordinates on mouseEnter put "" into myName end mouseEnter on mouseUP put "" into myName setCustomCoordinates end mouseUP on setCustomCoordinates put the owner of me into tOwner put the loc of grc "r4" of tOwner into tR4Loc put the loc of me into tR3Loc put item 1 of tR4Loc - item 1 of tR3Loc into ddx put item 2 of tR4Loc - item 2 of tR3Loc into ddy set the dx of me to ddx set the dy of me to ddy end setCustomCoordinates on mousemove u,v if myName is "" then exit mouseMove doMouseMove u,v end mouseMove on moveMe u,v set loc of me to u,v put the owner of me into tOwner set the r3 of grc "BezierLine" of tOwner to u,v put u,v & return & the loc of grc "r4" of tOwner after tTangentEndPoints set the points of grc "TangentEndLine" of tOwner to tTangentEndPoints if there is a group tNextOwnerName then getCustomCoordinates put the loc of grc "r4" of tOwner into tRedLoc put (sqrt((dx2^2 + dy2^2)/ (dx3^2+dy3^2))) into temp put round(item 1 of tRedLoc + temp*dx3) into x2 put round(item 2 of tRedLoc + temp * dy3) into y2 setCustomCoordinates end if send "doMove" to grc "bezierLine" of tOwner end moveMe on doMouseMove u,v if the shiftKey is down then exit to top moveMe u,v put the backgroundColor of grc "r4" of tOwner into tColor switch tColor case red if there is a group tNextOwnerName then getCustomCoordinates put (sqrt((dx2^2 + dy2^2)/ (dx3^2+dy3^2))) into temp put the loc of grc "r4" of tOwner into tRedLoc put round(item 1 of tRedLoc + temp*dx3) into x2 put round(item 2 of tRedLoc + temp * dy3) into y2 setCustomCoordinates end if put u,v & return & the loc of grc "r4" of tOwner after tTangentEndPoints set the points of grc "TangentEndLine" of tOwner to tTangentEndPoints if there is a group tNextOwnerName then send "moveMe x2,y2" to grc "r2" of group tNextOwnerName end if break case black put u,v & return & the loc of grc "r4" of tOwner after tTangentEndPoints set the points of grc "TangentEndLine" of tOwner to tTangentEndPoints send "doMove" to grc "bezierLine" of tOwner break end switch end doMouseMove on mouseRelease mouseUp end mouseRelease // l-21-21dx0dy532424 cREVGeneral revUniqueID 1082201058379 breakPoints1 15 49r4CTlocal myName,tOwner,dx3,dy3 on mouseDown put the name of me into myName put the owner of me into theOwner put theOwner into tOwner getCustomCoordinates theOwner setCustomCoordinates theOwner end mouseDown on setCustomCoordinates theOwner put the loc of grc "r3" of theOwner into tR3Loc put the loc of me into tLoc put item 1 of tloc - item 1 of tR3Loc into dx3 put item 2 of tLoc - item 2 of tR3Loc into dy3 set the dx3 of grc "r3" of theOwner to dx3 set the dy3 of grc "r3" of theOwner to dy3 end setCustomCoordinates function theNextOwner thisOwner put the short name of thisOwner into tOwnerName put tOwnerName & "A" into tNewOwnerName if there is a group tNewOwnerName then put the long name of group tNewOwnerName into tNextGroup else put thisOwner into tNextGroup return tNextGroup end theNextOwner on getCustomCoordinates theOwner --put the owner of me into tOwner put the dx of grc "r3" of theOwner into dx3 put the dy of grc "r3" of theOwner into dy3 end getCustomCoordinates on mouseUP put "" into myName end mouseUP on mousemove u,v if myName is "" then exit mouseMove doMouseMove u,v end mouseMove on doMouseMove u,v put the owner of me into tOwner set loc of me to u,v set the r4 of grc "BezierLine" of tOwner to u,v set the loc of grc "r3" of tOwner to u-dx3,v-dy3 set the r3 of of grc "BezierLine" of tOwner to u-dx3,v-dy3 put u,v & return & the loc of grc "r3" of tOwner after tTangentEndPoints set the points of grc "TangentEndLine" of tOwner to tTangentEndPoints send "doMove" to grc "bezierLine" of tOwner put the short name of the owner of me into tOwnerName put tOwnerName & "A" into tNextGroupName if there is a group tNextGroupName then send "doMouseMove u,v" to grc "r1" of group tNextGroupName end if end doMouseMove on mouseEnter put "" into myName end mouseEnter on mouseRelease mouseUp end mouseRelease on mouseDoubleUp if the backgroundcolor of me is red then set the backgroundcolor of me to black else set the backgroundcolor of me to red send "setMeStraight" to grc "r3" of group the owner of me end if resetLayers doMouseMove mouseh(),mouseV() end mouseDoubleUp redlh cREVGeneral revUniqueID 1082201059002 breakPoints17 40 FooBezierAAAi@on resetLayers put the short name of me into tName put offset("bezier",tName)+5 into tNum put char 1 to tNum of tName into tBaseName repeat if there is a group tBaseName then set the layer of group tBaseName to bottom put tBaseName & "A" into tBaseName else exit repeat end repeat end resetLayers on resetProperties tGroup put theBaseName(tGroup) into tBaseName repeat if there is a group tBaseName then put the name of group tBaseName into tOwner set the r1 of grc "BezierLine" of tOwner to the loc of grc "r1" of tOwner set the r2 of grc "BezierLine" of tOwner to the loc of grc "r2" of tOwner set the r3 of grc "BezierLine" of tOwner to the loc of grc "r3" of tOwner set the r4 of grc "BezierLine" of tOwner to the loc of grc "r4" of tOwner put tBaseName & "A" into tBaseName else exit repeat end repeat end resetProperties function theBaseName tGroupName put offset("bezier",tGroupName)+5 into tNum put char 1 to tNum of tGroupName into theBaseName return theBaseName end theBaseName cxvdx23r3138,146dy16 cREVGeneral revUniqueID 1083406908855 breakPoints2 15 BezierLine@KV glocal myName, tOwner, dx, dy,theGroupNames,theGroupDisplacement,theBaseGroupName on mouseDown put the name of me into myName put the owner of me into tOwner put the short name of the owner of me into tGroupName repeat if the last char of tGroupName is "A" then delete the last char of tGroupName else exit repeat end repeat put tGroupName into theBaseGroupName repeat if there is a group tGroupName then put the loc of group tGroupName into tGroupLoc put mouseH() -item 1 of tGroupLoc into dx put mouseV() - item 2 of tGroupLoc into dy put dx,dy into theGroupDisplacement[tGroupName] put tGroupName & "A" into tGroupName else exit repeat end repeat end mouseDown on mouseMove x,y if myName is "" then exit mouseMove put theBaseGroupName into tGroupName repeat --with i = 1 to the number of lines in the keys of theGroupNames if there is a group tGroupName then put theGroupDisplacement[tGroupName] into tGroupDisplacement --put theGroupNames[i] into tGroupName set the loc of group tGroupName to x- item 1 of tGroupDisplacement,y- item 2 of tGroupDisplacement put tGroupName & "A" into tGroupName else exit repeat end repeat end mouseMove on mouseUP put "" into myName resetProperties the short name of the owner of me resetLayers end mouseUP on mouseDoubleUP put the the short name of owner of me into tGroupName repeat if the last char of tGroupName is "A" then delete the last char of tGroupName else exit repeat end repeat repeat if there is a group tGroupName then hideControls tGroupName put tGroupName & "A" into tGroupName else exit repeat end repeat end mouseDoubleUp on hideControls theOwnerName put "r1","r2","r3","r4","tangentStartLine","tangentEndLine" into tGraphicList if the visible of grc "r1" of group theOwnerName is true then repeat with i = 1 to 6 set the visible of grc item i of tGraphicList of group theOwnerName to false end repeat else repeat with i = 1 to 6 set the visible of grc item i of tGraphicList of group theOwnerName to true end repeat end if end hideControls on mouseEnter put "" into myName end mouseEnter on doMove put the r1 of me into pt1 put the r2 of me into pt2 put the r3 of me into pt3 put the r4 of me into pt4 repeat with i = 0 to 50 put i/50 into t put 1-t into s repeat with j = 1 to 2 put round(s*s*s*item j of pt1 + 3*s*s*t*item j of pt2 + \ 3*s*t*t*item j of pt3 + t*t*t*item j of pt4) into item j of thePt end repeat put thePt & return after tPoints end repeat set the points of grc "BezierLine" of the owner of me to tPoints end doMove on mouseRelease put "" into myName end mouseRelease on setGraphicProperties tOwner set the r1 of grc "BezierLine" of tOwner to the loc of grc "r1" of tOwner set the r2 of grc "BezierLine" of tOwner to the loc of grc "r2" of tOwner set the r3 of grc "BezierLine" of tOwner to the loc of grc "r3" of tOwner set the r4 of grc "BezierLine" of tOwner to the loc of grc "r4" of tOwner end setGraphicProperties bluebluegpnr1112,188r2112,240r3149,280r4206,2803ppppqqrrsstuvwxz{|~    cREVGeneral revUniqueID 1082203845787 breakPoints24tangentStartLineCFo6pp cREVGeneral revUniqueID 1082206014867tangentEndLineCF; cREVGeneral revUniqueID 1082206014881r1CTlocal myName,dx2,dy2 on mouseDown put the name of me into myName put the owner of me into tOwner getCustomCoordinates end mouseDown on setCustomCoordinates put the owner of me into tOwner put the loc of grc "r2" of tOwner into tR2Loc put the loc of me into tLoc put item 1 of tloc - item 1 of tR2Loc into dx2 put item 2 of tLoc - item 2 of tR2Loc into dy2 set the dx of grc "r2" of tOwner to -dx2 set the dy of grc "r2" of tOwner to -dy2 end setCustomCoordinates on getCustomCoordinates put the owner of me into tOwner put the dx of grc "r2" of tOwner into dx2 put the dy of grc "r2" of tOwner into dy2 end getCustomCoordinates on mouseUP put "" into myName end mouseUP on mousemove u,v if myName is "" then exit mouseMove doMouseMove u,v end mouseMove on doMouseMove u,v set loc of me to u,v put the owner of me into tOwner set the r1 of grc "BezierLine" of tOwner to u,v getCustomCoordinates send "doMouseMove u+dx2,v+dy2" to grc "r2" of tOwner setCustomCoordinates put u,v & return & the loc of grc "r2" of tOwner after tTangentStartPoints set the points of grc "TangentStartLine" of tOwner to tTangentStartPoints send "doMove" to grc "bezierLine" of tOwner end doMouseMove on mouseRelease mouseUp end mouseRelease ""lh cREVGeneral revUniqueID 1082200959159 breakPoints36r2CP local myName,tOwner,tPreviousOwnerName,dx2,dy2,dx3,dy3 on mouseDown put the name of me into myName put the owner of me into tOwner put the short name of tOwner into tOwnerName put tOwnerName into tPreviousOwnerName delete last char of tPreviousOwnerName end mouseDown on mouseUP put "" into myName end mouseUP on mouseEnter put "" into myName end mouseEnter on getCustomCoordinates put the owner of me into tOwner put the dx of grc "r2" of tOwner into dx2 put the dy of grc "r2" of tOwner into dy2 if there is a group tPreviousOwnerName then put the dx of grc "r3" of group tPreviousOwnerName into dx3 put the dy of grc "r3" of group tPreviousOwnerName into dy3 end if end getCustomCoordinates on setCustomCoordinates put the loc of grc "r1" of tOwner into tR1Loc put the loc of me into tLoc put item 1 of tloc - item 1 of tR1Loc into ddx put item 2 of tLoc - item 2 of tR1Loc into ddy set the dx of me to ddx set the dy of me to ddy end setCustomCoordinates on mousemove u,v if myName is "" then exit mouseMove doMouseMove u,v end mouseMove on moveMe u,v if the shiftkey is down then exit to top set loc of me to u,v put the owner of me into tOwner set the r2 of grc "BezierLine" of tOwner to u,v setcustomCoordinates if there is a group tPreviousOwnerName then getCustomCoordinates put (sqrt((dx2^2 + dy2^2)/ (dx3^2+dy3^2))) into temp put 1/temp into temp put the loc of grc "r1" of tOwner into tRedLoc put round(item 1 of tRedLoc - temp*dx2) into x2 put round(item 2 of tRedLoc - temp * dy2) into y2 setCustomCoordinates end if put u,v & return & the loc of grc "r1" of tOwner after tTangentStartPoints set the points of grc "TangentStartLine" of tOwner to tTangentStartPoints send "doMove" to grc "bezierLine" of tOwner end moveMe on doMouseMove u,v moveMe u,v if there is a group tPreviousOwnerName then put the backgroundColor of grc "r4" of group tPreviousOwnerName into tColor end if switch tColor case red if there is a group tPreviousOwnerName then getCustomCoordinates put (sqrt((dx2^2 + dy2^2)/ (dx3^2+dy3^2))) into temp put 1/temp into temp put the loc of grc "r1" of tOwner into tRedLoc put round(item 1 of tRedLoc - temp*dx2) into x2 put round(item 2 of tRedLoc - temp * dy2) into y2 setCustomCoordinates end if put u,v & return & the loc of grc "r1" of tOwner after tTangentStartPoints set the points of grc "TangentStartLine" of tOwner to tTangentStartPoints send "moveMe x2,y2" to grc "r3" of group tPreviousOwnerName send "doMove" to grc "bezierLine" of tOwner break end switch end doMouseMove put u,v & return & the loc of grc "r1" of tOwner after tTangentStartPoints set the points of grc "TangentStartLine" of tOwner to tTangentStartPoints send "doMove" to grc "bezierLine" of tOwner setCustomCoordinates end doMouseMove on mouseRelease mouseUp end mouseRelease ldx0dy52 cREVGeneral revUniqueID 1082201057991 breakPointsr3CP local myName,tNextOwnerName,dx2,dy2,dx3,dy3,tOwner on mouseDown put the name of me into myName put the owner of me into tOwner put the short name of tOwner into tOwnerName put tOwnerName & "A" into tNextOwnerName --getCustomCoordinates end mouseDown on setMeStraight mouseDown getCustomCoordinates doMouseMove mouseH() -dx3,mouseV() - dy3 put "" into myName end setMeStraight on getCustomCoordinates put the owner of me into tOwner put the dx of grc "r3" of tOwner into dx3 put the dy of grc "r3" of tOwner into dy3 put the short name of tOwner&"A" into tNextOwnerName if there is a group tNextOwnerName then put the dx of grc "r2" of group tNextOwnerName into dx2 put the dy of grc "r2" of group tNextOwnerName into dy2 end if end getCustomCoordinates on mouseEnter put "" into myName end mouseEnter on mouseUP put "" into myName setCustomCoordinates end mouseUP on setCustomCoordinates put the owner of me into tOwner put the loc of grc "r4" of tOwner into tR4Loc put the loc of me into tR3Loc put item 1 of tR4Loc - item 1 of tR3Loc into ddx put item 2 of tR4Loc - item 2 of tR3Loc into ddy set the dx of me to ddx set the dy of me to ddy end setCustomCoordinates on mousemove u,v if myName is "" then exit mouseMove doMouseMove u,v end mouseMove on moveMe u,v set loc of me to u,v put the owner of me into tOwner set the r3 of grc "BezierLine" of tOwner to u,v put u,v & return & the loc of grc "r4" of tOwner after tTangentEndPoints set the points of grc "TangentEndLine" of tOwner to tTangentEndPoints if there is a group tNextOwnerName then getCustomCoordinates put the loc of grc "r4" of tOwner into tRedLoc put (sqrt((dx2^2 + dy2^2)/ (dx3^2+dy3^2))) into temp put round(item 1 of tRedLoc + temp*dx3) into x2 put round(item 2 of tRedLoc + temp * dy3) into y2 setCustomCoordinates end if send "doMove" to grc "bezierLine" of tOwner end moveMe on doMouseMove u,v if the shiftKey is down then exit to top moveMe u,v put the backgroundColor of grc "r4" of tOwner into tColor switch tColor case red if there is a group tNextOwnerName then getCustomCoordinates put (sqrt((dx2^2 + dy2^2)/ (dx3^2+dy3^2))) into temp put the loc of grc "r4" of tOwner into tRedLoc put round(item 1 of tRedLoc + temp*dx3) into x2 put round(item 2 of tRedLoc + temp * dy3) into y2 setCustomCoordinates end if put u,v & return & the loc of grc "r4" of tOwner after tTangentEndPoints set the points of grc "TangentEndLine" of tOwner to tTangentEndPoints if there is a group tNextOwnerName then send "moveMe x2,y2" to grc "r2" of group tNextOwnerName end if break case black put u,v & return & the loc of grc "r4" of tOwner after tTangentEndPoints set the points of grc "TangentEndLine" of tOwner to tTangentEndPoints send "doMove" to grc "bezierLine" of tOwner break end switch end doMouseMove on mouseRelease mouseUp end mouseRelease // 3636dx57dy0-1-1 cREVGeneral revUniqueID 1082201058379 breakPoints1 15 49r4CTlocal myName,tOwner,dx3,dy3 on mouseDown put the name of me into myName put the owner of me into theOwner put theOwner into tOwner getCustomCoordinates theOwner setCustomCoordinates theOwner end mouseDown on setCustomCoordinates theOwner put the loc of grc "r3" of theOwner into tR3Loc put the loc of me into tLoc put item 1 of tloc - item 1 of tR3Loc into dx3 put item 2 of tLoc - item 2 of tR3Loc into dy3 set the dx3 of grc "r3" of theOwner to dx3 set the dy3 of grc "r3" of theOwner to dy3 end setCustomCoordinates function theNextOwner thisOwner put the short name of thisOwner into tOwnerName put tOwnerName & "A" into tNewOwnerName if there is a group tNewOwnerName then put the long name of group tNewOwnerName into tNextGroup else put thisOwner into tNextGroup return tNextGroup end theNextOwner on getCustomCoordinates theOwner --put the owner of me into tOwner put the dx of grc "r3" of theOwner into dx3 put the dy of grc "r3" of theOwner into dy3 end getCustomCoordinates on mouseUP put "" into myName end mouseUP on mousemove u,v if myName is "" then exit mouseMove doMouseMove u,v end mouseMove on doMouseMove u,v put the owner of me into tOwner set loc of me to u,v set the r4 of grc "BezierLine" of tOwner to u,v set the loc of grc "r3" of tOwner to u-dx3,v-dy3 set the r3 of of grc "BezierLine" of tOwner to u-dx3,v-dy3 put u,v & return & the loc of grc "r3" of tOwner after tTangentEndPoints set the points of grc "TangentEndLine" of tOwner to tTangentEndPoints send "doMove" to grc "bezierLine" of tOwner put the short name of the owner of me into tOwnerName put tOwnerName & "A" into tNextGroupName if there is a group tNextGroupName then send "doMouseMove u,v" to grc "r1" of group tNextGroupName end if end doMouseMove on mouseEnter put "" into myName end mouseEnter on mouseRelease mouseUp end mouseRelease on mouseDoubleUp if the backgroundcolor of me is red then set the backgroundcolor of me to black else set the backgroundcolor of me to red send "setMeStraight" to grc "r3" of group the owner of me end if resetLayers doMouseMove mouseh(),mouseV() end mouseDoubleUp blackh cREVGeneral revUniqueID 1082201059002 breakPoints17 40 Field 1)` < cREVGeneral revUniqueID 1083408098533 y Because each bezier segment is a separate graphic line, it is possible to set the line properties (lineSize, foreGroundColor, start and endArrows) independantly to create special effects--see below. NextEp*on mouseUP go to next card end mouseUP BjT7 cREVGeneral revUniqueID 1083408414684