rem Start of BASIC! Program FN.DEF bezier1(p1x,p1y,s1x,s1y,s2x,s2y,p2x,p2y) n=(HYPOT(s1x-p1x,s1y-p1y)+ HYPOT(s2x-s1x,s2y-s1y)+ HYPOT(p2x-s2x,p2y-s2y))/20 ox=p1x oy=p1y FOR i=0 TO 1 STEP 1/n x1=p1x+(s1x-p1x)*i y1=p1y+(s1y-p1y)*i x2=s1x+(s2x-s1x)*i y2=s1y+(s2y-s1y)*i x3=s2x+(p2x-s2x)*i y3=s2y+(p2y-s2y)*i x4=x1+(x2-x1)*i y4=y1+(y2-y1)*i x5=x2+(x3-x2)*i y5=y2+(y3-y2)*i x=x4+(x5-x4)*i y=y4+(y5-y4)*i GR.LINE vd,ox,oy,x,y ox=x oy=y NEXT i GR.LINE vd,ox,oy,p2x,p2y FN.END totalcur=1 GR.OPEN 255,255,255,255,0,1 dim l[100] dim glox[100] dim gloy[100] GR.SCREEN sx,sy do gr.touch yyy,x,y until yyy sx=x*(sy/sx) sy=y*(sy/sx) glox[totalcur]=INT(sx/10*1) gloy[totalcur]=INT(sy/20*8) glox[totalcur+1]=INT(sx/10*6) gloy[totalcur+1]=INT(sy/20*9) glox[totalcur+2]=INT(sx/10*4) gloy[totalcur+2]=INT(sy/20*13) glox[totalcur+3]=INT(sx/10*8) gloy[totalcur+3]=INT(sy/20*10) DO GR.CLS GR.TEXT.SIZE sy/30 GR.TEXT.ALIGN 2 GR.SET.STROKE 1 GR.COLOR 255,255,0,0,1 GR.CIRCLE vd,x1,y1,sx/100 GR.COLOR 255,0,255,0,1 GR.CIRCLE vd,x2,y2,sx/100 GR.COLOR 255,0,0,255,1 GR.CIRCLE vd,x3,y3,sx/100 GR.COLOR 255,255,255,0,1 GR.CIRCLE vd,x4,y4,sx/100 GR.COLOR 255,255,0,255,1 GR.CIRCLE vd,x5,y5,sx/100 GR.COLOR 255,180,0,200,1 GR.CIRCLE vd,x6,y6,sx/100 GR.COLOR 255,100,266,200,1 GR.CIRCLE vd,x7,y7,sx/100 GR.COLOR 255,180,240,100,1 !GR.CIRCLE vd,x8,y8,sx/100 GR.COLOR 255,150,250,50,1 ! GR.CIRCLE vd,x9,y9,sx/100 GR.COLOR 255,130,140,175,1 !GR.CIRCLE vd,x10,y10,sx/100 GR.COLOR 255,0,255,255,1 !GR.LINE gol1,x1,y1,x2,y2 !GR.LINE gol2,x3,y3,x4,y4 GR.COLOR 255,0,0,0,1 GR.SET.STROKE 1 !GR.LINE gol3,x1,y1,x2,y2 ! GR.LINE gol4,x3,y3,x4,y4 GR.SET.STROKE 6 ! bezier(x1,y1,x2,y2,x3,y3,x4,y4,x5,y5,x6,y6,x7,y7,x8,y8) !gr.render bezier1(glox[totalcur] ,gloy[totalcur] , glox[totalcur+1], gloy[totalcur+1], glox[totalcur+2], gloy[totalcur+2],glox[totalcur+3],gloy[totalcur+3]) ! GR.RENDER !bezier1( x4,y4,x5,y5,x6,y6,x7,y7) GR.RENDER GR.TOUCH tt,tx,ty IF tt&!ott THEN l[totalcur]=HYPOT(tx- glox[totalcur],ty-gloy[totalcur] ) l[totalcur+1]=HYPOT(tx-glox[totalcur+1],ty-gloy[totalcur+1]) l[totalcur+2]=HYPOT(tx-glox[totalcur+2],ty-gloy[totalcur+2]) l[totalcur+3]=HYPOT(tx-glox[totalcur+3],ty-gloy[totalcur+3]) ARRAY.MIN amin,l[] ARRAY.SEARCH l[],amin,p ELSEIF tt&ott THEN IF p=1 THEN glox[totalcur] =INT(tx/20)*20 gloy[totalcur] =INT(ty/20)*20 ELSEIF p=2 THEN glox[totalcur+1]=INT(tx/20)*20 gloy[totalcur+1]=INT(ty/20)*20 ELSEIF p=3 THEN glox[totalcur+2]=INT(tx/20)*20 gloy[totalcur+2]=INT(ty/20)*20 ELSEIF p=4 THEN glox[totalcur+3]=INT(tx/20)*20 gloy[totalcur+3]=INT(ty/20)*20 ENDIF ELSE PAUSE 1 ENDIF ott=tt UNTIL 0