Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
MandalaV1
#1
I'm back to art programs.

 In this series, I'm doing single Mandalas instead of art programs with lots of buttons.

 I will later attempt to create a graphics file for each Mandala. Several of these should be good material for a video.

Code:
'  By Rick3137    http://rb23.yolasite.com/
'  You have permission to copy, paste, alter or post anywhere as long as you don't copyright my work.
'  If it breaks your computer or does damage to your health or wealth , I didn't do it.
'  If you repost this material to another website like Utube, please make changes to the content and name so no one gets confused.
visible:
'event = 1 ; mx = 0 ; my = 0
hidden:
set redraw off

set window 0, 0, 1200, 700
  set color 0,0,10
  cls
  proc Mandala

 ' proc Mandala1
  redraw
  wait keydown
end

procedure Setup()

endproc

procedure PrintText()
     
     set caret 10,200
     write " MouseX = " ; wln str$(mx)
     write " MouseY = " ; wln str$(my)
     
endproc
        function MoveX#(x#, d#, angle#)
           x2# = 0.0;
           dx# = cos#( angle# )
           x2 = x + (dx * d);
           return x2;
        endfunc

        function MoveY#(y#, d#, angle#)
            y2# = 0.0;
            dy# = sin#( angle# )
            y2 = y - (dy * d);
            return y2;
        endfunc

      procedure DrawStar(x#, y#, size#)
          cnt = 1 ; angle# = 360.0
           x = x - size/2.0 ; y = y - size/6.0  
           x2# = x + size;
           y2# = y;
           
          while cnt < 6
             
               draw line int(x),int(y), int(x2), int(y2)
               angle = angle - 144.0
               x = x2; y = y2;
               x2# = MoveX(x, size, angle) ;  y2# = MoveY(y, size, angle)

               cnt = cnt + 1;
           wend
      endproc

      procedure DrawStar9(x#, y#, size#)
         z = 1
           x = x - size/2.0 ; y = y - size/6.0
        while z < 9
           cnt = 1 ; angle# = 360.0
 
           x2# = x + size;
           y2# = y;
          while cnt < 6
             
               draw line int(x),int(y), int(x2), int(y2)
               angle = angle - 144.0
               x = x2; y = y2;
               x2# = MoveX(x, size, angle) ;  y2# = MoveY(y, size, angle)

               cnt = cnt + 1;
           wend
           z = z + 1
           size = size - 1.0 ; cnt = 1
        '  x = x - size/2.0 ; y = y - size/6.0
          wend
      endproc

procedure DrawPentagon(x#,y#,radius#)
 x1#; y1#; x2#; y2#; angle1# ; dx1# ; dy1# ; angle2# ; dx2# ; dy2#
 angle1 = 54.0
 angle2 = angle1 + 72.0
 
 b=0
 while radius > 0.0
  for a = 1 to 5
    dy1 = sin(angle1) * radius
    dx1 = cos(angle1) * radius
    dy2 = sin(angle2) * radius
    dx2 = cos(angle2) * radius
    x1 = x + dx1 ; x2 = x + dx2
    y1 = y + dy1 ; y2 = y + dy2
    draw line int(x1),int(y1),int(x2),int(y2)
    angle1 = angle1 + 72.0
    angle2 = angle2 + 72.0
  next
  radius = radius - 0.001
  b=b+1
 
 wend
endproc
     
      procedure Circle( x#, y#, size# , type )
           angle# = 0.0; cnt = 1; distance# = size/ 2.0
          x2 = int(x)
          y2 = int(y)
          size2 = int(size) ; size3 = int(size/ 2.0)
          if type = 0 then draw ellipse x2,y2,size2,size2,0
          if type = 1 then draw ellipse x2,y2,size2,size2,1
          if type = 2
           while cnt < 33
               x3# = MoveX(x, distance, angle) ;  y3# = MoveY(y, distance , angle)
               x4 = int(x3) ; y4 = int(y3)
               draw ellipse x4,y4,size3,size3,0
           angle = angle + 11.25;
           cnt = cnt + 1
           wend
          endif
      endproc

      procedure Circle8( x#, y#, size# , distance#, type)
           angle# = 0.0; cnt = 1;  
           while cnt < 33
              x2# = MoveX(x, distance, angle) ;  y2# = MoveY(y, distance , angle)
              proc Circle  x2,  y2, size, type ;
           angle = angle + 11.25;
           cnt = cnt + 1
           wend
      endproc

      procedure Circle8x( x#, y#, size#, distance1#, distance2#, type)
           angle1# = 0.0; cnt1 = 1; angle2# = 0.0; cnt2 = 1;  
           while cnt1 < 9
              x2# = MoveX(x, distance1, angle1) ;  y2# = MoveY(y, distance1 , angle1)
                   cnt2 = 1 ; angle2 = 0.0
                   while cnt2 < 9
                      x3# = MoveX(x2, distance2, angle2) ;  y3# = MoveY(y2, distance2 , angle2)
                      proc Circle  x3,  y3, size, type ;
                      angle2 = angle2 + 45.0;
                      cnt2 = cnt2 + 1

                   wend
           angle1 = angle1 + 45.0;
           cnt1 = cnt1 + 1
           wend

      endproc

      procedure Circle16( x#, y#, size# , distance#, type)
           angle# = 0.0; cnt = 1;  
           while cnt < 17
              x2# = MoveX(x, distance, angle) ;  y2# = MoveY(y, distance , angle)
              proc Circle  x2,  y2, size, type ;
           angle = angle + 22.5;
           cnt = cnt + 1
      wend
      endproc

   
      procedure Circle32( x#, y#, size# , distance#, type)
           angle# = 0.0; cnt = 1;  
           while cnt < 33
              x2# = MoveX(x, distance, angle) ;  y2# = MoveY(y, distance , angle)
              proc Circle  x2,  y2, size, type ;
           angle = angle + 11.25;
           cnt = cnt + 1
      wend
      endproc

      procedure Circle32a( x#, y#, size# , distance#, type)
           angle# = 5.625 ; cnt = 1;
            while cnt < 33 ;
              x2# = MoveX(x, distance, angle) ;  y2# = MoveY(y, distance , angle)
              proc Circle  x2,  y2, size, type ;
           angle = angle + 11.25;
           cnt = cnt + 1
      wend
      endproc

      procedure Circle180( x#, y#, size# , distance#, type)
           angle# = 0.0; cnt = 1;  
           while cnt < 181
              x2# = MoveX(x, distance, angle) ;  y2# = MoveY(y, distance , angle)
              proc Circle  x2,  y2, size, type ;
           angle = angle + 2.0;
           cnt = cnt + 1
      wend
      endproc
procedure Mandala1()
  set color 0,0,0
  cls

    angle# = 0.0; cnt = 1; x# = 600.0 ; y# = 350.0 ; size# = 40.0 ; d# = 100.0 ; angle2# = 22.5
        ' center
    set color 0,30,80 ; proc Circle  x,  y, 350.0, 1 ;
    set color 0,40,60 ; proc Circle180  x,  y, 80.0, 270.0, 0 ;

    set color 0,40,160 ; proc Circle  x,  y, 200.0, 1 ;
    set color 0,170,150 ; proc Circle32  x,  y, 60.0, 140.0, 0 ;
    set color 255,255,255 ; proc Circle32  x,  y, 10.0, 190.0, 0 ;
      proc Circle32  x,  y, 30.0, 20.0, 0 ; proc Circle32  x,  y, 6.0, 190.0, 1 ;

    while cnt < 9
     
      x2# = MoveX(x, 90.0, angle) ;  y2# = MoveY(y, 90.0, angle) ; set color 0,0,255
       proc Circle  x2,  y2, 30.0, 1 ; set color 255,255,255 ; proc Circle  x2,  y2, 30.0, 0 ;
       proc Circle32  x2,  y2,  10.0,20.0, 0 ;
    '  x2# = MoveX(x, 150.0, angle) ;  y2# = MoveY(y, 150.0, angle) ; set color 50,50,255
    '   proc Circle  x2,  y2, 25.0, 1 ; set color 200,200,255 ; proc Circle  x2,  y2, 25.0, 0 ;
        set color 0,155,255 ; proc Circle32  x2, y2, 10.0,10.0, 0 ;
      x2# = MoveX(x, 227.0, angle) ;  y2# = MoveY(y, 227.0, angle) ; set color 100,100,255
       proc Circle  x2,  y2, 22.0, 1 ; set color 255,255,255 ; proc Circle  x2,  y2, 22.0, 0 ;
       set color 0,255,155 ; proc Circle32  x2, y2, 8.0,8.0, 0 ;
      x2# = MoveX(x, 275.0, angle) ;  y2# = MoveY(y, 275.0, angle) ; set color 150,150,255
       proc Circle  x2,  y2, 19.0, 1 ; set color 255,255,255 ; proc Circle  x2,  y2, 19.0, 0 ;
       set color 0,150,100 ; proc Circle32  x2, y2, 8.0,8.0, 0 ;
      x2# = MoveX(x, 320.0, angle) ;  y2# = MoveY(y, 320.0, angle)
       set color 255,255,255 ; proc Circle  x2,  y2, 16.0, 1 ;
       set color 0,200,200 ; proc Circle32  x2,  y2,  8.0,8.0, 0 ;
      angle = angle + 45.0;
      cnt = cnt + 1
    wend
     cnt = 1;
    while cnt < 9
       
          x2# = MoveX(x, 190.0, angle2) ;  y2# = MoveY(y, 190.0, angle2)
            set color 255,255,0 ; proc Circle32  x2,  y2,  30.0,30.0, 0 ;
          x2# = MoveX(x, 310.0, angle2) ;  y2# = MoveY(y, 310.0, angle2)
            set color 0,255,150 ; proc Circle  x2,  y2, 40.0, 1 ;
            set color 255,255,0 ; proc Circle32  x2,  y2,  26.0,26.0, 0 ;

        angle2 = angle2 + 45.0
        cnt = cnt + 1
    wend
endproc

procedure Mandala()
       ' Outer background
       set color 30,10,50
       cls

    angle# = 0.0; cnt = 1; x# = 600.0 ; y# = 350.0 ; size# = 40.0 ; d# = 100.0 ; angle2# = 22.5
        ' Middle Background
    set color 50,0,180 ; proc Circle  x,  y, 350.0, 1 ;
        ' Center Background
    set color 60,0,30 ; proc Circle  x,  y, 200.0, 1 ;

        ' Draw from center
    set color 0,40,60 ; proc Circle180  x,  y, 80.0, 270.0, 0 ;

    set color 0,170,150 ; proc Circle32  x,  y, 60.0, 140.0, 0 ;


      set color 255,0,0 ; proc Circle32  x,  y, 10.0, 190.0, 0  
      set color 255,55,255 ; proc Circle32  x,  y, 30.0, 20.0, 0
      set color 255,0,255 ; proc Circle32  x,  y, 6.0, 190.0, 1 ;

    while cnt < 9
      ' 8 main angles
      x2# = MoveX(x, 90.0, angle) ;  y2# = MoveY(y, 90.0, angle) ;
       set color 100,0,200 ;  proc Circle  x2,  y2, 10.0, 1  
       set color 255,255,255 ; proc Circle  x2,  y2, 30.0, 0 ;
       proc Circle32  x2,  y2,  10.0,20.0, 0 ;
   
       proc Circle  x2,  y2, 25.0, 1 ; set color 200,0,255 ; proc Circle  x2,  y2, 25.0, 0 ;
        set color 150,0,255 ; proc Circle32  x2, y2, 10.0,10.0, 0 ;
      x2# = MoveX(x, 227.0, angle) ;  y2# = MoveY(y, 227.0, angle) ; set color 100,0,255
       proc Circle  x2,  y2, 22.0, 1 ; set color 255,255,255 ; proc Circle  x2,  y2, 22.0, 0 ;
       set color 100,5,155 ; proc Circle32  x2, y2, 8.0,8.0, 0 ;
      x2# = MoveX(x, 275.0, angle) ;  y2# = MoveY(y, 275.0, angle) ; set color 150,0,255
       proc Circle  x2,  y2, 19.0, 1 ; set color 255,255,255 ; proc Circle  x2,  y2, 19.0, 0 ;
       set color 150,0,100 ; proc Circle32  x2, y2, 8.0,8.0, 0 ;
      x2# = MoveX(x, 320.0, angle) ;  y2# = MoveY(y, 320.0, angle)
       set color 255,255,255 ; proc Circle  x2,  y2, 16.0, 1 ;
       set color 50,0,200 ; proc Circle32  x2,  y2,  8.0,8.0, 0 ;
      angle = angle + 45.0;
      cnt = cnt + 1
    wend
     cnt = 1;
     ' alternate angles
    while cnt < 9
       
          x2# = MoveX(x, 190.0, angle2) ;  y2# = MoveY(y, 190.0, angle2)
            set color 255,5,155 ; proc Circle32  x2,  y2,  30.0,30.0, 0 ;
          x2# = MoveX(x, 310.0, angle2) ;  y2# = MoveY(y, 310.0, angle2)
            set color 250,55,150 ; proc Circle  x2,  y2, 40.0, 1 ;
            set color 255,100,200 ; proc Circle32  x2,  y2,  26.0,26.0, 0 ;

        angle2 = angle2 + 45.0
        cnt = cnt + 1
    wend
endproc



end
Reply
#2
Thumbs Up 
Looks nice, great work Smile
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)