Cantor set

From Rosetta Code
Revision as of 06:47, 20 April 2018 by CalmoSoft (talk | contribs) (Created page with "Create the Cantor set. See details: [https://en.wikipedia.org/wiki/Cantor_set Cantor set] =={{header|Ring}}== <lang ring> # Project : Cantor set # Date : 2018/04/20 # Auth...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Create the Cantor set. See details: Cantor set

Ring

<lang ring>

  1. Project : Cantor set
  2. Date  : 2018/04/20
  3. Author : Gal Zsolt [~ CalmoSoft ~]
  4. Email  : <calmosoft@gmail.com>

load "guilib.ring" paint = null

new qapp

       {
       win1 = new qwidget() {
                 setwindowtitle("")
                 setgeometry(100,100,800,600)
                 label1 = new qlabel(win1) {
                             setgeometry(10,10,800,600)
                             settext("")
                 }
                 new qpushbutton(win1) {
                         setgeometry(150,500,100,30)
                         settext("draw")
                         setclickevent("draw()")
                 }
                 show()
       }
       exec()
       }

func draw

       p1 = new qpicture()
              color = new qcolor() {
              setrgb(0,0,255,255)
       }
       pen = new qpen() {
                setcolor(color)
                setwidth(10)
       }
       paint = new qpainter() {
                 begin(p1)
                 setpen(pen)
       cantor(10,20,600)
       endpaint()
       }
       label1 { setpicture(p1) show() }
       return

func cantor(x,y,lens)

       if lens >= 1
          paint.drawline(x,y,x+lens,y)
          y = y + 20
          cantor(x,y,floor(lens/3))
          cantor(x+floor(lens*2/3),y,floor(lens/3))
       ok

</lang> Output image:

Cantor set