Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
elcircle
#1
elcircle is a pretty quick subroutine to draw filled ellipses (and circles) that doesn't have the problems using Paint does. It's not a fast as fcircle but it's speedy and it can do ellipses.

Code: (Select All)
'elcircle demo
' by James D. Jarvis
' a fast subroutine to fill an ellipsoid or a circlc without using PAINT
'expanded from a circle routine by Chuck Venoit here https://basicanywheremachine-news.blogsp...nVdETyxJk4
Screen _NewImage(800, 500, 256)
Randomize Timer
e = 64000
t1 = Timer
For c = 1 To e
    elcircle Rnd * _Width, Rnd * _Height, Int(10 + c / 1000), 1.5, Int(Rnd * 256)
Next c
t2 = Timer
For c = 1 To e
    elcircle2 Rnd * _Width, Rnd * _Height, Int(10 + c / 1000), 0.5, Int(Rnd * 256)
Next c
t3 = Timer
Print "elcircle"; t2 - t1; "  elcircle 2 "; t3 - t2; " press any key to continue"
Sleep
Cls
Print "use standard circle comands if you wish to add a 1 pixel outline to the circles"
elcircle 200, 200, 100, 0.5, 12
Circle (200, 200), 100, 15, , , 0.5
elcircle 400, 200, 100, 3.5, 12
Circle (400, 200), 100, 15, , , 3.5

Sub elcircle (cx, cy, crad, aspectr, klr As _Unsigned Long)
    'elcircle  does not render correctly if ascpect ratio is <1
    If aspectr < 1 Then
        elcircle2 cx, cy, crad, aspectr, klr
    Else
        For xy = 0 To crad * 0.75
            a = Sqr(crad * crad - xy * xy)
            a_ar = a / aspectr
            xy_ar = xy / aspectr
            Line (cx - a_ar, cy - xy)-(cx + a_ar, cy - xy), klr, BF
            Line (cx - a_ar, cy + xy)-(cx + a_ar, cy + xy), klr, BF
            Line (cx - xy_ar, cy - a)-(cx + xy_ar, cy - a), klr, BF
            Line (cx - xy_ar, cy + a)-(cx + xy_ar, cy + a), klr, BF
        Next xy
    End If
End Sub
Sub elcircle2 (cx, cy, crad, aspectr, klr As _Unsigned Long)
    'elcircle2 renders aspect ratios <1 correctly but it is  slower than elcircle itself
    For xy = 0 To (crad * 0.75)
        a = Sqr(crad * crad - xy * xy)
        a_ar = a * aspectr
        xy_ar = xy * aspectr
        Line (cx - xy, cy + a_ar)-(cx + xy, cy - a_ar), klr, BF
        Line (cx - a, cy + xy_ar)-(cx + a, cy - xy_ar), klr, BF
    Next xy
End Sub

Reply


Messages In This Thread
elcircle - by James D Jarvis - 09-14-2023, 04:02 PM
RE: elcircle - by SMcNeill - 09-14-2023, 05:08 PM
RE: elcircle - by bplus - 09-14-2023, 05:39 PM
RE: elcircle - by James D Jarvis - 09-14-2023, 06:36 PM
RE: elcircle - by Dav - 09-15-2023, 12:28 AM



Users browsing this thread: 2 Guest(s)