Here's one I did that draws rounded corners on triangles in yabasic. Hey look, 4 1/2 years ago!
rem Rounded triangles thing V2 (no circle command), by Jim Shaw 7/8/2002
open window 640,512
repeat
setrgb 1,ran(255),ran(255),ran(255)
rounded_tri(ran(640),ran(512),ran(640),ran(512),ran(640),ran(512),int(ran(10))+1)
until (peek("port1")<>0)
end
sub rounded_tri(x0,y0,x1,y1,x2,y2,r)
local t,dx,dy,a
' fill circle x0,y0,r
' fill circle x1,y1,r
' fill circle x2,y2,r
docircle(x0,y0,r)
docircle(x1,y1,r)
docircle(x2,y2,r)
fill triangle x0,y0 to x1,y1 to x2,y2
if (((x1-x0)*(y2-y0) - (x2-x0)*(y1-y0)) < 0) then
t = x1
x1 = x2
x2 = t
t = y1
y1 = y2
y2 = t
fi
a = -atan(x1-x0,y1-y0)
dx =r*cos(a)
dy =r*sin(a)
fill triangle x0,y0 to x0+dx,y0+dy to x1,y1
fill triangle x0+dx,y0+dy to x1,y1 to x1+dx,y1+dy
a = -atan(x2-x1,y2-y1)
dx =r*cos(a)
dy =r*sin(a)
fill triangle x1,y1 to x1+dx,y1+dy to x2,y2
fill triangle x1+dx,y1+dy to x2,y2 to x2+dx,y2+dy
a = -atan(x0-x2,y0-y2)
dx =r*cos(a)
dy =r*sin(a)
fill triangle x2,y2 to x2+dx,y2+dy to x0,y0
fill triangle x2+dx,y2+dy to x0,y0 to x0+dx,y0+dy
end sub
sub docircle(x,y,r)
local ox,oy,nx,ny,z
ox = r
oy = 0
for z = 1 to 8
nx = r*cos(z/8*2*3.14159)
ny = r*sin(z/8*2*3.14159)
fill triangle x,y to x+ox,y+oy to x+nx,y+ny
ox = nx
oy = ny
next z
end sub
Jim