Circle Magic

HMG Samples and Enhancements

Moderator: Rathinagiri

User avatar
Rathinagiri
Posts: 5471
Joined: Tue Jul 29, 2008 6:30 pm
DBs Used: MariaDB, SQLite, SQLCipher and MySQL
Location: Sivakasi, India
Contact:

Circle Magic

Post by Rathinagiri »

Hi,

Yesterday I had seen a video to draw the relative positions of the planets Venus and Earth.

https://www.youtube.com/watch?v=_CAtiymmOaU

I wanted to do it in HMG with various parameters. The result is amazing! Hope you like it.

A request to Claudio:

Can we draw a line or other shapes transparently like the video?
circlemagic.jpg
circlemagic.jpg (54.76 KiB) Viewed 4499 times

Code: Select all

#include <hmg.ch>

Function Main

   define window cm at 0, 0 width 800 height 600 main title 'Circle Magic'
      define button draw
         row 10
         col 10
         caption 'Draw'
         width 50
         action draw()
      end button   
      define label innerrlabel
         row 15
         col 70
         width 90
         value 'Inner Planet R'
      end label
      define spinner innerr
         row 10
         col 160
         width 60
         rangemin 5
         rangemax 150
         increment 5
         value 80
      end spinner
      define label outerrlabel
         row 15
         col 230
         width 90
         value 'Outer Planet R'
      end label
      define spinner outerr
         row 10
         col 320
         width 60
         rangemin 5
         rangemax 200
         increment 5
         value 110
      end spinner
      define label innerspeed
         row 45
         col 70
         width 90
         value 'Inner Speed'
      end label
      define spinner speed
         row 40
         col 160
         width 60
         rangemin 1
         rangemax 50
         value 20
         increment 1
      end spinner
      define label outerspeed
         row 45
         col 230
         width 90
         value 'Outer Speed'
      end label
      define spinner ospeed
         row 40
         col 320
         width 60
         rangemin 1
         rangemax 50
         value 3
         increment 1
      end spinner
      define label revolutionslabel
         row 45
         col 390
         width 90
         value 'Revolutions'
      end label
      define spinner revolutions
         row 40
         col 480
         width 60
         rangemin 1
         rangemax 50
         value 1
         increment 1
      end spinner
      define checkbox stereo
         row 40
         col 550
         width 70
         caption 'Stereo'
         backcolor { 255, 255, 0 }
         value .f.
      end checkbox   
      define spinner base
         row 40
         col 630
         width 60
         rangemin 2
         rangemax 50
         value 20
         increment 2
      end spinner
      define label backcolorlabel
         row 75
         col 70
         width 90
         value 'Back Color'
      end label   
      define label backcolor
         row 70
         col 160
         width 60
         height 20
         backcolor { 255, 255, 255 }         
         onclick getbackcolor()
      end label 
      define label pencolorlabel
         row 75
         col 230
         width 90
         value 'Pen Color'
      end label   
      define label pencolor
         row 70
         col 320
         width 60
         height 20
         backcolor { 255, 0, 0 }         
         onclick getpencolor()
      end label 
      define checkbox randomcolor
         row 70
         col 390
         width 90
         caption 'Use Random'
      end checkbox   
      define checkbox singlecolor
         row 70
         col 490
         width 90
         caption 'Single Color'
      end checkbox   
      define label animationspeed
         row 15
         col 580
         width 100 
         value 'Animation Speed'         
      end label   
      define spinner anispeed
         row 10
         col 680
         width 80
         rangemin 1000
         rangemax 100000
         value 50000
         increment 5000
      end spinner
      
   end window
   cm.center
   cm.activate


Return


function drawstereo
LOCAL  hDC, BTstruct
local nSmallRadius := cm.innerr.value
local nBigRadius := cm.outerr.value
local nBigRevolutions := cm.revolutions.value
local nInnerSpeed := cm.speed.value
local nOuterSpeed := cm.ospeed.value
local nCenterCol := 400
local nCenterRow := 300
local nSmallRow := 0
local nSmallCol := 0
local nBigRow := 0
local nBigCol := 0
local nDotRadius := 1
local nSmallDots := 360
local nBigDots := round( nSmallDots * nBigRadius / nSmallRadius, 0 )
local aLSmall := {}
local aLBig := {}
local aRSmall := {}
local aRBig := {}
local nRadians := 0.0174532925
local nSmallCount := 0
local nBigCount := 0
local nMax := 150
local nAniSpeed := cm.anispeed.value
local nStereoBase := cm.base.value

local nLSmallCenterCol := nCenterCol - 200 - ( nStereoBase / 2 )
local nRSmallCenterCol := nCenterCol + 200 + ( nStereoBase / 2 )

local nLBigCenterCol := nCenterCol - 200 + ( nStereoBase / 2 )
local nRBigCenterCol := nCenterCol + 200 - ( nStereoBase / 2 )

if nSmallRadius < 10 
   nSmallRadius := 10
   cm.innerr.value := nSmallRadius
endif   

if nBigRadius > nMax
   nBigRadius := nMax
   cm.outerr.value := nBigRadius
endif

if nSmallRadius > nBigRadius + 10
   nSmallRadius := nBigRadius - 10
   cm.innerr.value := nSmallRadius
endif

if nBigRadius <= nSmallRadius + 10
   nBigRadius := nSmallRadius + 10
   cm.outerr.value := nBigRadius
endif

hDC := BT_CreateDC ( "cm", BT_HDC_ALLCLIENTAREA, @BTstruct ) 
BT_DrawFillRectangle (hDC, 150, 20, 770, 300, cm.backcolor.backcolor, cm.backcolor.backcolor, 1)


for i := 1 to nSmallDots
   nSmallRow := nCenterRow + nSmallRadius * Cos( i / ( nSmallDots / 360 ) * nRadians ) 
   nSmallCol := nCenterCol + nSmallRadius * Sin( i / ( nSmallDots / 360 ) * nRadians )
   nLSmallCol := nLSmallCenterCol + nSmallRadius * Sin( i / ( nSmallDots / 360 ) * nRadians )
   nRSmallCol := nRSmallCenterCol + nSmallRadius * Sin( i / ( nSmallDots / 360 ) * nRadians )
   aadd( aLSmall, { nSmallRow, nLSmallCol } )
   aadd( aRSmall, { nSmallRow, nRSmallCol } )
   && if msgyesno( str( nSmallRow ) + ' ' + str( nLSmallCol ) + ' ' + str( nSmallRow ) + ' ' + str( nRSmallCol ) )
      && BT_DeleteDC (BTstruct)
      && return nil
   && endif
//   BT_DrawEllipse ( hDC, nSmallRow, nSmallCol, nDotRadius, nDotRadius, { 0, 0, 0 } )
//   BT_DrawEllipse ( hDC, nSmallRow, nLSmallCol, nDotRadius, nDotRadius, { 0, 0, 0 } )
   BT_DrawEllipse ( hDC, nSmallRow, nLSmallCol, nDotRadius, nDotRadius, { 0, 0, 0 } )
   BT_DrawEllipse ( hDC, nSmallRow, nRSmallCol, nDotRadius, nDotRadius, { 0, 0, 0 } )
next i   
for i := 1 to nBigDots
   nBigCol := nCenterCol + nBigRadius * Sin( i / ( nBigDots / 360 ) * nRadians )
   nBigRow := nCenterRow + nBigRadius * Cos( i / ( nBigDots / 360 ) * nRadians ) 
   nLBigCol := nLBigCenterCol + nBigRadius * Sin( i / ( nBigDots / 360 ) * nRadians )
   nRBigCol := nRBigCenterCol + nBigRadius * Sin( i / ( nBigDots / 360 ) * nRadians )
   aadd( aLBig, { nBigRow, nLBigCol } )
   aadd( aRBig, { nBigRow, nRBigCol } )
   BT_DrawEllipse ( hDC, nBigRow, nLBigCol, nDotRadius, nDotRadius, { 0, 0, 0 } )
   BT_DrawEllipse ( hDC, nBigRow, nRBigCol, nDotRadius, nDotRadius, { 0, 0, 0 } )
next i
&& BT_DeleteDC (BTstruct)
&& RETURN

nSmallCount := 1
nBigCount := 1

if cm.singlecolor.value
   if cm.randomcolor.value
      nR := random( 255 )
      nG := random( 255 )
      nB := random( 255 )
   else
      aRGB := cm.pencolor.backcolor
      nR := aRGB[ 1 ]      
      nG := aRGB[ 2 ]
      nB := aRGB[ 3 ]
   endif
endif

nCount := int( nBigDots * nBigRevolutions / nOuterSpeed )
for i := 1 to  nCount
   nBigCount := nBigCount + nOuterSpeed
   nSmallCount := nSmallCount + nInnerSpeed
   if nSmallCount > nSmallDots
      nSmallCount := nSmallCount - nSmallDots 
   endif
   if nBigCount > nBigDots 
      nBigCount := nBigCount - nBigDots
   endif
   if cm.randomcolor.value .and. .not. cm.singlecolor.value
      nR := random( 255 )
      nG := random( 255 )
      nB := random( 255 )
   endif
   nSmallRow := aLSmall[ nSmallCount, 1 ]
   nLSmallCol := aLSmall[ nSmallCount, 2 ]
   nRSmallCol := aRSmall[ nSmallCount, 2 ]
   nBigRow := aLBig[ nBigCount, 1 ]
   nLBigCol := aLBig[ nBigCount, 2 ]
   nRBigCol := aRBig[ nBigCount, 2 ]
   BT_DrawLine ( hDC, nSmallRow, nLSmallCol, nBigRow, nLBigCol, { nR, nG, nB } )
   BT_DrawLine ( hDC, nSmallRow, nRSmallCol, nBigRow, nRBigCol, { nR, nG, nB } )
   for j := 1 to nAniSpeed
   next j
   Do Events
next i
BT_DeleteDC (BTstruct)
RETURN


function getbackcolor
   local aRGB := cm.backcolor.backcolor
   local aNewRGB := aclone( aRGB )
   aNewRGB := getcolor( aRGB )   
   if aNewRGB[ 1 ] <> Nil
      cm.backcolor.backcolor := aNewRGB
   endif
   return nil

function getpencolor
   local aRGB := cm.pencolor.backcolor
   local aNewRGB := aclone( aRGB )
   aNewRGB := getcolor( aRGB )   
   if aNewRGB[ 1 ] <> Nil
      cm.pencolor.backcolor := aNewRGB
   endif
   return nil






function draw
LOCAL  hDC, BTstruct
local nSmallRadius := cm.innerr.value
local nBigRadius := cm.outerr.value
local nBigRevolutions := cm.revolutions.value
local nInnerSpeed := cm.speed.value
local nOuterSpeed := cm.ospeed.value
local nCenterCol := 400
local nCenterRow := 300
local nSmallRow := 0
local nSmallCol := 0
local nBigRow := 0
local nBigCol := 0
local nDotRadius := 1
local nSmallDots := 360
local nBigDots := round( nSmallDots * nBigRadius / nSmallRadius, 0 )
local aSmall := {}
local aBig := {}
local nRadians := 0.0174532925
local nSmallCount := 0
local nBigCount := 0
local nMax := 200
local nAniSpeed := cm.anispeed.value

if cm.stereo.value
   drawstereo()
   return nil
endif   

if nSmallRadius < 10 
   nSmallRadius := 10
   cm.innerr.value := nSmallRadius
endif   

if nBigRadius > nMax
   nBigRadius := nMax
   cm.outerr.value := nBigRadius
endif

if nSmallRadius > nBigRadius + 10
   nSmallRadius := nBigRadius - 10
   cm.innerr.value := nSmallRadius
endif

if nBigRadius <= nSmallRadius + 10
   nBigRadius := nSmallRadius + 10
   cm.outerr.value := nBigRadius
endif

   

hDC := BT_CreateDC ( "cm", BT_HDC_ALLCLIENTAREA, @BTstruct ) 
BT_DrawFillRectangle (hDC, 150, 20, 770, 300, cm.backcolor.backcolor, cm.backcolor.backcolor, 1)


for i := 1 to nSmallDots
   nSmallRow := nCenterRow + nSmallRadius * Cos( i / ( nSmallDots / 360 ) * nRadians ) 
   nSmallCol := nCenterCol + nSmallRadius * Sin( i / ( nSmallDots / 360 ) * nRadians )
   aadd( aSmall, { nSmallRow, nSmallCol } )
   BT_DrawEllipse ( hDC, nSmallRow, nSmallCol, nDotRadius, nDotRadius, { 0, 0, 0 } )
next i   
for i := 1 to nBigDots
   nBigCol := nCenterCol + nBigRadius * Sin( i / ( nBigDots / 360 ) * nRadians )
   nBigRow := nCenterRow + nBigRadius * Cos( i / ( nBigDots / 360 ) * nRadians ) 
   aadd( aBig, { nBigRow, nBigCol } )
   BT_DrawEllipse ( hDC, nBigRow, nBigCol, nDotRadius, nDotRadius, { 0, 0, 0 } )
next i
nSmallCount := 1
nBigCount := 1
nCount := int( nBigDots * nBigRevolutions / nOuterSpeed )

if cm.singlecolor.value
   if cm.randomcolor.value
      nR := random( 255 )
      nG := random( 255 )
      nB := random( 255 )
   else
      aRGB := cm.pencolor.backcolor
      nR := aRGB[ 1 ]      
      nG := aRGB[ 2 ]
      nB := aRGB[ 3 ]
   endif
endif
   
for i := 1 to  nCount
   nBigCount := nBigCount + nOuterSpeed
   nSmallCount := nSmallCount + nInnerSpeed
   if nSmallCount > nSmallDots
      nSmallCount := nSmallCount - nSmallDots 
   endif
   if nBigCount > nBigDots 
      nBigCount := nBigCount - nBigDots
   endif
   if .not. cm.singlecolor.value
      nR := random( 255 )
      nG := random( 255 )
      nB := random( 255 )
   endif
   nSmallRow := aSmall[ nSmallCount, 1 ]
   nSmallCol := aSmall[ nSmallCount, 2 ]
   nBigRow := aBig[ nBigCount, 1 ]
   nBigCol := aBig[ nBigCount, 2 ]
   BT_DrawLine ( hDC, nSmallRow, nSmallCol, nBigRow, nBigCol, { nR, nG, nB } )
   for j := 1 to nAniSpeed
   next j
   Do Events
next i
BT_DeleteDC (BTstruct)
RETURN



East or West HMG is the Best.
South or North HMG is worth.
...the possibilities are endless.
User avatar
andyglezl
Posts: 1461
Joined: Fri Oct 26, 2012 7:58 pm
Location: Guadalajara Jalisco, MX
Contact:

Re: Circle Magic

Post by andyglezl »

Wow
Es increible lo que se puede hacer con las matematicas, gracias Rathinagiri.
----------------------------------------------------------------------------------------------
Wow
It's amazing what you can do with mathematics, thanks Rathinagiri.
CircleMagic.jpg
CircleMagic.jpg (157.29 KiB) Viewed 4516 times
Andrés González López
Desde Guadalajara, Jalisco. México.
User avatar
serge_girard
Posts: 3167
Joined: Sun Nov 25, 2012 2:44 pm
DBs Used: 1 MySQL - MariaDB
2 DBF
Location: Belgium
Contact:

Re: Circle Magic

Post by serge_girard »

Thanks Rathi !

I like it (and fractals too !)

Serge
There's nothing you can do that can't be done...
User avatar
Rathinagiri
Posts: 5471
Joined: Tue Jul 29, 2008 6:30 pm
DBs Used: MariaDB, SQLite, SQLCipher and MySQL
Location: Sivakasi, India
Contact:

Re: Circle Magic

Post by Rathinagiri »

Wow! It looks great Andy! I have changed to accommodate some color options now!
East or West HMG is the Best.
South or North HMG is worth.
...the possibilities are endless.
User avatar
esgici
Posts: 4543
Joined: Wed Jul 30, 2008 9:17 pm
DBs Used: DBF
Location: iskenderun / Turkiye
Contact:

Re: Circle Magic

Post by esgici »

Hi Mr. Rathinagiri

Did you returned back from 3D to 2D ? :lol:

Whereas you has been wrote the book of this topic :?
Last edited by esgici on Tue Oct 27, 2015 8:46 pm, edited 2 times in total.
Viva INTERNATIONAL HMG :D
User avatar
srvet_claudio
Posts: 2193
Joined: Thu Feb 25, 2010 8:43 pm
Location: Uruguay
Contact:

Re: Circle Magic

Post by srvet_claudio »

Rathinagiri wrote: A request to Claudio:

Can we draw a line or other shapes transparently like the video?
I have a book about fractals, I'm going to search it.

The draw of this code is more efficient, because I created a bitmap that acts as double buffer.

Code: Select all

#include <hmg.ch>

Function Main

   hBitmap := 0
   
   define window cm at 0, 0 width 800 height 600 main title 'Circle Magic'; 
   ON PAINT     ProcOnPaint();
   ON RELEASE   BT_BitmapRelease (hBitmap)

      define button draw
         row 10
         col 10
         caption 'Draw'
         width 50
         action Draw()
      end button

      define label innerrlabel
         row 15
         col 70
         width 90
         value 'Inner Planet R'
      end label

      define spinner innerr
         row 10
         col 160
         width 60
         rangemin 5
         rangemax 150
         increment 5
         value 80
      end spinner

      define label outerrlabel
         row 15
         col 230
         width 90
         value 'Outer Planet R'
      end label

      define spinner outerr
         row 10
         col 320
         width 60
         rangemin 5
         rangemax 200
         increment 5
         value 110
      end spinner

      define label backcolorlabel
         row 10
         col 390
         width 90
         value 'Back Color'
      end label   

      define label backcolor
         row 15
         col 480
         width 50
         height 20
         backcolor { 255, 255, 255 }
         onclick getbackcolor()
      end label 

      define label animationspeed
         row 15
         col 540
         width 100 
         value 'Animation Speed'
      end label   

      define spinner anispeed
         row 10
         col 640
         width 80
         rangemin 1000
         rangemax 100000
         value 50000
         increment 5000
      end spinner

      define label innerspeed
         row 45
         col 70
         width 90
         value 'Inner Speed'
      end label

      define spinner speed
         row 40
         col 160
         width 60
         rangemin 1
         rangemax 50
         value 20
         increment 1
      end spinner

      define label outerspeed
         row 45
         col 230
         width 90
         value 'Outer Speed'
      end label

      define spinner ospeed
         row 40
         col 320
         width 60
         rangemin 1
         rangemax 50
         value 3
         increment 1
      end spinner

      define label revolutionslabel
         row 45
         col 390
         width 90
         value 'Revolutions'
      end label

      define spinner revolutions
         row 40
         col 480
         width 60
         rangemin 1
         rangemax 50
         value 1
         increment 1
      end spinner

      define checkbox stereo
         row 40
         col 550
         width 70
         caption 'Stereo'
         value .f.
         ON CHANGE BT_ClientAreaInvalidateAll ("cm")
      end checkbox

      define spinner base
         row 40
         col 630
         width 60
         rangemin 2
         rangemax 50
         value 20
         increment 2
      end spinner

   end window

   cm.center
   cm.activate

Return


PROCEDURE ProcOnPaint
LOCAL  hDC, BTstruct
   hDC := BT_CreateDC ( "cm", BT_HDC_INVALIDCLIENTAREA, @BTstruct )
      BT_DrawFillRectangle (hDC, 150, 20, 770, 300, cm.backcolor.backcolor, cm.backcolor.backcolor, 1)
      if cm.stereo.value
         BT_DrawBitmapTransparent (hDC, 0, -200, NIL, NIL, BT_COPY, hBitmap, NIL)
         BT_DrawBitmapTransparent (hDC, 0,  100, NIL, NIL, BT_COPY, hBitmap, NIL)
      else
         BT_DrawBitmapTransparent (hDC, 0, 0, NIL, NIL, BT_COPY, hBitmap, NIL)
      endif   
   BT_DeleteDC (BTstruct)
RETURN


FUNCTION GetBackColor
local aRGB := cm.backcolor.backcolor
local aNewRGB := aclone( aRGB )
   aNewRGB := getcolor( aRGB )   
   if aNewRGB[ 1 ] <> Nil
      cm.backcolor.backcolor := aNewRGB
   endif
   BT_ClientAreaInvalidateAll ("cm")
RETURN NIL



FUNCTION Draw
LOCAL  hDC, BTstruct
LOCAL  hDC2, BTstruct2
local nSmallRadius := cm.innerr.value
local nBigRadius := cm.outerr.value
local nBigRevolutions := cm.revolutions.value
local nInnerSpeed := cm.speed.value
local nOuterSpeed := cm.ospeed.value
local nCenterCol := 400
local nCenterRow := 300
local nSmallRow := 0
local nSmallCol := 0
local nBigRow := 0
local nBigCol := 0
local nDotRadius := 1
local nSmallDots := 360
local nBigDots := round( nSmallDots * nBigRadius / nSmallRadius, 0 )
local aSmall := {}
local aBig := {}
local nRadians := 0.0174532925
local nSmallCount := 0
local nBigCount := 0
local nMax := 200
local nAniSpeed := cm.anispeed.value


   if nSmallRadius < 10 
      nSmallRadius := 10
      cm.innerr.value := nSmallRadius
   endif   

   if nBigRadius > nMax
      nBigRadius := nMax
      cm.outerr.value := nBigRadius
   endif

   if nSmallRadius > nBigRadius + 10
      nSmallRadius := nBigRadius - 10
      cm.innerr.value := nSmallRadius
   endif

   if nBigRadius <= nSmallRadius + 10
      nBigRadius := nSmallRadius + 10
      cm.outerr.value := nBigRadius
   endif

   IF hBitmap <> 0
      BT_BitmapRelease (hBitmap)
   ENDIF

   BT_ClientAreaInvalidateAll ("cm")

   hBitmap := BT_BitmapCreateNew (1000, 800, BLACK)

   hDC  := BT_CreateDC ( "cm", BT_HDC_ALLCLIENTAREA, @BTstruct )
   hDC2 := BT_CreateDC ( hBitmap, BT_HDC_BITMAP, @BTstruct2 )

   for i := 1 to nSmallDots
      nSmallRow := nCenterRow + nSmallRadius * Cos( i / ( nSmallDots / 360 ) * nRadians ) 
      nSmallCol := nCenterCol + nSmallRadius * Sin( i / ( nSmallDots / 360 ) * nRadians )
      aadd( aSmall, { nSmallRow, nSmallCol } )
   
      BT_DrawEllipse ( hDC, nSmallRow, nSmallCol, nDotRadius, nDotRadius, { 0, 0, 0 } )
      BT_DrawEllipse ( hDC2, nSmallRow, nSmallCol, nDotRadius, nDotRadius, { 0, 0, 0 } )
   next i   

   for i := 1 to nBigDots
      nBigCol := nCenterCol + nBigRadius * Sin( i / ( nBigDots / 360 ) * nRadians )
      nBigRow := nCenterRow + nBigRadius * Cos( i / ( nBigDots / 360 ) * nRadians ) 
      aadd( aBig, { nBigRow, nBigCol } )
   
      BT_DrawEllipse ( hDC, nBigRow, nBigCol, nDotRadius, nDotRadius, { 0, 0, 0 } )
      BT_DrawEllipse ( hDC2, nBigRow, nBigCol, nDotRadius, nDotRadius, { 0, 0, 0 } )
   next i

   nSmallCount := 1
   nBigCount := 1
   nCount := int( nBigDots * nBigRevolutions / nOuterSpeed )

   for i := 1 to  nCount
      nBigCount := nBigCount + nOuterSpeed
      nSmallCount := nSmallCount + nInnerSpeed
      if nSmallCount > nSmallDots
         nSmallCount := nSmallCount - nSmallDots 
      endif
      if nBigCount > nBigDots 
         nBigCount := nBigCount - nBigDots
      endif
      nRandomR := random( 255 )
      nRandomG := random( 255 )
      nRandomB := random( 255 )
      nSmallRow := aSmall[ nSmallCount, 1 ]
      nSmallCol := aSmall[ nSmallCount, 2 ]
      nBigRow := aBig[ nBigCount, 1 ]
      nBigCol := aBig[ nBigCount, 2 ]
   
      BT_DrawLine ( hDC, nSmallRow, nSmallCol, nBigRow, nBigCol, { nRandomR, nRandomG, nRandomB } )
      BT_DrawLine ( hDC2, nSmallRow, nSmallCol, nBigRow, nBigCol, { nRandomR, nRandomG, nRandomB } )
   
      for j := 1 to nAniSpeed
      next j
      Do Events
   next i

   BT_DeleteDC (BTstruct)
   BT_DeleteDC (BTstruct2)

   if cm.stereo.value
      BT_ClientAreaInvalidateAll ("cm")
   endif

RETURN
Best regards.
Dr. Claudio Soto
(from Uruguay)
http://srvet.blogspot.com
User avatar
andyglezl
Posts: 1461
Joined: Fri Oct 26, 2012 7:58 pm
Location: Guadalajara Jalisco, MX
Contact:

Re: Circle Magic

Post by andyglezl »

Gracias Dr. Claudio, funciona OK.
Andrés González López
Desde Guadalajara, Jalisco. México.
User avatar
bpd2000
Posts: 1207
Joined: Sat Sep 10, 2011 4:07 am
Location: India

Re: Circle Magic

Post by bpd2000 »

Thank you Dr. Claudio and Mr. Rathi
BPD
Convert Dream into Reality through HMG
User avatar
serge_girard
Posts: 3167
Joined: Sun Nov 25, 2012 2:44 pm
DBs Used: 1 MySQL - MariaDB
2 DBF
Location: Belgium
Contact:

Re: Circle Magic

Post by serge_girard »

Thanks !

Serge
There's nothing you can do that can't be done...
User avatar
srvet_claudio
Posts: 2193
Joined: Thu Feb 25, 2010 8:43 pm
Location: Uruguay
Contact:

Re: Circle Magic

Post by srvet_claudio »

srvet_claudio wrote:
Rathinagiri wrote: A request to Claudio:

Can we draw a line or other shapes transparently like the video?
I have a book about fractals, I'm going to search it.
I have not found my PDF book about fractals, but I found this chapter on-line of other book ( The Science of Fractal Images ).
I hope is useful.
Attachments
Cap 2 - Algorithm For Random Fractals.rar
(1.77 MiB) Downloaded 269 times
Best regards.
Dr. Claudio Soto
(from Uruguay)
http://srvet.blogspot.com
Post Reply