Page 1 of 1

Bezier

Posted: Wed Mar 11, 2015 10:52 pm
by DrChip

Code: Select all

rem bezier
rem iPhone 6 Plus / 8.3 b2
rem enjoy...

gosub initialize


main:
 do
  de=de-1
  if de=0 then
   de=cd
   dm=(dm+1)%mdm
  end if

  ang=ang+1
  if ang>360 then ang=ang-360

  
  graphics clear 0,0,0

  for a=1 to mp
   ax=asi(ang+a*mlt)*sw/2
   ay=aco(ang+a*mlt)*sh/2
   avx=asi(ang*10)*80
   avy=aco(ang*10)*80
   aaa=a+1
   if a=mp then aaa=1
   dx=asi(ang+aaa*mlt)*sw/2
   dy=aco(ang+aaa*mlt)*sh/2
   dvx=aco(ang*10)*80
   dvy=asi(ang*10)*80
   gosub drawbezier '(ax,ay,dx,dy,avx,avy,dvx,dvy)
  next a
 until 1=2
return



drawbezier: '(ax,ay,dx,dy,avx,avy,dvx,dvy)
 'new curve
 bx=ax+avx
 by=ay+avy
 cx=dx+dvx
 cy=dy+dvy

 for t=0 to 1 step 0.05
  aa=t
  bb=1-t
  x=ax*bb^3+3*bx*bb^2*aa+(3*cx)*bb*aa^2+dx*aa^3
  y=ay*bb^3+3*by*bb^2*aa+(3*cy)*bb*aa^2+dy*aa^3
  fill color x,y,-x-y
  draw color x,y,-x-y
  si=asi(ang)*20
  if dm=0 then fill rect x,y to x+1,y+1
  if dm=1 then draw line to x,y
  if dm=2 then draw line 0,0 to x,y
  if dm=3 then draw line x,y to -x,-y
  if dm=4 then fill rect x-si,y-si to x+si,y+si
  if dm=5 then draw line x,y to y,x
  if dm=6 then draw line x,y to x*4,y*4
  if dm=6 then draw line 0,0 to y,x
  if dm=7 then draw line x,0 to 0,y
  if dm=8 then draw line x,y to asi(ang*10)*100,aco(ang*10)*100
 next t
return

initialize:
 graphics
 
 sw=screen_width()
 sh=screen_height()
 pi=3.1415
 mdm=9
 cd=200
 de=cd

 dim aco(3601),asi(3601)
 f=3.14/180
 for a=0 to 3600
  aco(a)=cos(a*f)
  asi(a)=sin(a*f)
 next a

 mp=4
 mlt=360/mp
return