Sorry for the double post

Here is my initial polyvector disc based from Ocean's OpenGL code posted earlier as a straight forward function. Please refer to Ocean's code for a more indepth description of the algorithm involved as no point in me explaining something that's already been said

.
At the present moment the function just draws a disc with an inner & outer radius, the texture side of things is still to be implemented & things will change as I develop the function. For example I may change the outer radius variable to be a thickness one instead as that seems more logical plus other additions. Once it is completed I will post the full function into the 2d snippets section of the forum.
Next job is extracting a 1 pixel wide texture from sf-in-sf's original post to sweep around the disc & hopefully produce the same results as the initial post with a nice boost in speed

.
Lee
// --------------------------------- //
// Project: poly_disc
// Start: Sunday, August 11, 2013
// IDE Version: 10.283
// SETCURRENTDIR("Media") // go to media files
// Fuzzys polyvector disc based/inspired by Ocean's circle experiments (ogl_circle)
LOCAL x%,y%
LOCAL radius%, blue%
radius = 30
x = 320
y = 240
WHILE TRUE
drawdisc(x,y,radius,radius+20)
INC radius, 1
radius = MOD (radius, 320)
SHOWSCREEN
//KEYWAIT
WEND
FUNCTION drawdisc: x%,y%,radius_inner%,radius_outer%,id%=-1,colour%=RGB(255,255,255)
LOCAL segments%, theta#, c#, s#, t_inner#, t_outer#, lx_outer#, ly_outer#, lx_inner#, ly_inner#
LOCAL start_x_outer#, start_y_outer#, start_x_inner#, start_y_inner#
LOCAL idx%
IF radius_inner > radius_outer // Make sure inner radius is
SWAP radius_inner,radius_outer // smaller than the outer radius
ENDIF
segments = INTEGER(10 * SQR(radius_inner))
theta = 360.0 / segments
c = COS(theta)
s = SIN(theta)
lx_inner = radius_inner
ly_inner = 0
lx_outer = radius_outer
ly_outer = 0
idx = 0
STARTPOLY id,2
start_x_inner = lx_inner + x // Store the initial points
start_y_inner = ly_inner + y // to close the polyvector
start_x_outer = lx_outer + x // at the end
start_y_outer = ly_outer + y
WHILE (idx < segments)
POLYVECTOR lx_inner + x, ly_inner + y ,0,0, colour%
POLYVECTOR lx_outer + x, ly_outer + y ,0,0, colour%
t_inner = lx_inner
t_outer = lx_outer
lx_inner = c * lx_inner - s * ly_inner
ly_inner = s * t_inner + c * ly_inner
lx_outer = c * lx_outer - s * ly_outer
ly_outer = s * t_outer + c * ly_outer
INC idx, 1
WEND
POLYVECTOR start_x_inner,start_y_inner,0,0,colour% // Close the polyvector
POLYVECTOR start_x_outer,start_y_outer,0,0,colour%
ENDPOLY
ENDFUNCTION