Code archives/Graphics/3D Circle function

This code has been declared by its author to be Public Domain code.

Download source code

3D Circle function by Ziltch2002
This function creates a mesh based circle.
'segs' sets the number of sides (4 being a square, 100 very round).
'parent' allows you to parent it.
'twosided' is set to true/false (1 or 0). True if you want a circle you can see from both sides.

To adjust size use the scaleentity command.

To texture use the entitytexture command.

example

disk=createcircle(20,0,true)

This creates a 20 sided circle that can be seen from top and bottom.
Function createcircle(segs=8,parent=0,twosided=False)

  mesh=CreateMesh( parent ) 
  surf=CreateSurface( mesh ) 

  AddVertex surf,0,0,0,.5,.5
  
  vc=0
  inc#=360/segs
  ii#=0

  While ii<= 360

    vc = vc+1
    ii  = ii +inc
    xc# = Sin(ii)
    zc# = Cos(ii)
    u#=xc/2+.5
    v#=zc/2+.5
    AddVertex surf,xc,0,zc,u,v

    AddTriangle (surf,0,vc-1,vc)
    If twosided Then AddTriangle (surf,0,vc,vc-1)

  Wend 
  AddTriangle (surf,0,vc,1)
  If twosided Then AddTriangle (surf,0,vc-1,vc)
  UpdateNormals mesh

  Return mesh

End Function

Comments

None.

Code Archives Forum