Code archives/Graphics/Draw a Circle
This code has been declared by its author to be Public Domain code.
Download source code
| |||||
A simple explanation and introduction to Cos() and Sin() functions | |||||
'Simple Circles with Max2D SuperStrict 'Turn the graphics on Graphics 640,480 'Declare Variables Local x:Float Local y:Float Local originx:Float = 640/2 Local originy:Float = 480/2 Local degree:Float Local radius:Float = 64 Local toggle:Byte = True 'Main loop Repeat Cls DrawText("originx:"+String(originx),0,0) DrawText("originy:"+String(originy),0,12) DrawText("radius:"+String(radius),0,24) DrawText("Use arrow keys and +/- to modify",0,36) DrawText("Use [SPACE] to toggle",0,48) 'Draw the whole circle If Toggle=True For degree = 0 To 360 Step .5 x = originx +Cos(degree) * radius Y = originy +Sin(degree) * radius Plot x,y Next 'Show the plot of the circle Else x = originx +Cos(degree) * radius Y = originy +Sin(degree) * radius Plot x,y degree:+5 End If 'User Interface If KeyDown(key_left) originx:-1 If KeyDown(key_right) originx:+1 If KeyDown(key_up) originy:-1 If KeyDown(key_down) originy:+1 If KeyDown(key_numadd) radius :+.5 If KeyDown(key_numsubtract) radius:-.5 If KeyHit(Key_space) toggle:+1 If toggle > 1 toggle = 0 Flip Until KeyHit(key_escape) |
Comments
| ||
This is an interesting program you've written, Matt. If you make the following change:For degree# = 0 To 360 Step .25You can draw a circle that does not have any gaps appear between points (at least for this resolution). Really sterling work, a good study for people interested in usage of COS() and SIN(). |
| ||
the number of pixels to interpolate is the perimeter. For a simple circle : Local perimeter:int = ceil(radius*2*Pi) * 1.5 '(multiply this by 1.5 to prevent from the gap) For d = 0 to perimeter Local degree:float = float(360.0 * d) / perimeter [...] for an elipse, take the largest axis to compute the perimeter, it will be a good approximation (or use a real elipse formula) |
Code Archives Forum