HIVE-Project

Retro Style Eigenbau Computer mit Parallax Propeller
Aktuelle Zeit: Mo 10. Dez 2018, 05:43

Alle Zeiten sind UTC [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 23 Beiträge ]  Gehe zu Seite 1, 2, 3  Nächste
Autor Nachricht
 Betreff des Beitrags: Fraktal-Retro-Kram...
BeitragVerfasst: Fr 11. Jul 2014, 06:44 
Offline
Benutzeravatar

Registriert: Fr 27. Aug 2010, 14:48
Beiträge: 1755
Wohnort: Wrong Planet
Vor Ewigkeiten hatte ich mal ein Apfelmännchenprogramm in 68000-Assembler geschrieben, das ohne Fließkommaarrithmetik auskam und in den Bootsektor der damaligen Atari-ST-Disketten passte...
...und irgendwann mal unter Linux in C mit Ausgabe via SVGALib und so kompakt, daß es als Signatur tauglich war...

Und jetzt <trommelwirbel> gibt es auch die Spin-Version </trommelwirbel>.

Ich hatte es bislang nur in Spinsim laufen und Spinsim hat keine Graphik...

Code:
(yeti@darkstar:5)~/wrk/propeller/spinsim/mandelbrot$ cat mandelbrot-20140625.spin
' mandelbrot-20140625
'
con
  _clkmode = xtal1+pll16x
  _clkfreq = 80_000_000

  xmin=-8601    ' int(-2.1*4096)
  xmax=2867     ' int( 0.7*4096)

  ymin=-4915    ' int(-1.2*4096)
  ymax=4915     ' int( 1.2*4096)

  maxiter=25

  MPX=79        ' 0..79
  MPY=24        ' 0..24

obj
  ser : "conio"

pub main | c,cx,cy,dx,dy,x,y,xn,yn,rsq,iter,px,py

  ser.start(31, 30, 0, 115200)

  dx:=(xmax-xmin)/MPX
  dy:=(ymax-ymin)/MPY

  cy:=ymin
  repeat py from 0 to MPY
    cx:=xmin
    repeat px from 0 to MPX
      x:=0
      y:=0
      rsq:=0
      iter:=0
      repeat while iter=<maxiter and rsq=<16384
        xn:=((x*x-y*y)~>12)+cx
        yn:=((x*y)~>11)+cy
        x:=xn
        y:=yn
        rsq:=(x*x+y*y)~>12
        iter+=1
      cx+=dx
      ser.out(iter+32)
    cy+=dy
    ser.out(10)
(yeti@darkstar:5)~/wrk/propeller/spinsim/mandelbrot$ spinsim mandelbrot-20140625.binary
!!!!!!!!!!!!!!!"""""""""""""####################################""""""""""""""""
!!!!!!!!!!!!!"""""""""#######################$$$$$$$%'+)%%%$$$$$#####"""""""""""
!!!!!!!!!!!"""""""#######################$$$$$$$$%%%&&(+,)++&%$$$$$$######""""""
!!!!!!!!!"""""#######################$$$$$$$$$$%%%%&')*4:/+('&%%$$$$$$#######"""
!!!!!!!!""""#####################$$$$$$$$$$%%%&&&''),:::::::,'&%%%%%$$$$########
!!!!!!!"""####################$$$$$$$$%%%&'())((())*,::::::/+))('&&&&)'%$$######
!!!!!!""###################$$$$$%%%%%%&&&'+.:::/::::::::::::::::/++:..9:%%$#####
!!!!!"################$$$%%%%%%%%%%&&&&'),+1:::::::::::::::::::::::::1(&&%$$####
!!!!"##########$$$$$%%&(-(''''''''''''(*,5::::::::::::::::::::::::::::+)-&%$$###
!!!!####$$$$$$$$%%%%%&'(*-:1.+.:-4+))**:::::::::::::::::::::::::::::::4-(&%$$$##
!!!!#$$$$$$$$$%%%%%%'''++.6:::::::::8/0::::::::::::::::::::::::::::::::3(%%$$$$#
!!!#$$$$$$$%&&&&''()/-3.5::::::::::::::::::::::::::::::::::::::::::::::'&%%$$$$#
!!!(**+/+:523/:0/46::::::::::::::::::::::::::::::::::::::::::::::::4+)'&&%%$$$$#
!!!#$$$$$$$%&&&&''().-2.:::::::::::::::::::::::::::::::::::::::::::::::'&%%$$$$#
!!!!#$$$$$$$$$%%%%%&'''/,.7::::::::::/0::::::::::::::::::::::::::::::::0'%%$$$$#
!!!!####$$$$$$$$%%%%%&'(*-:2.,/:-5+))**:::::::::::::::::::::::::::::::4+(&%$$$##
!!!!"##########$$$$$%%&(,(''''(''''''((*,4:::::::::::::::::::::::::::4+)-&%$$###
!!!!!"################$$$%%%%%%%%%%&&&&'):,4:::::::::::::::::::::::::/('&%%$####
!!!!!!""##################$$$$$$%%%%%%&&&'*.:::0::::::::::::::::1,,://:)%%$#####
!!!!!!!"""####################$$$$$$$$%%%&(())((()**-::::::/+)))'&&&')'%$$######
!!!!!!!!""""#####################$$$$$$$$$$%%%&&&''(,:::::::+'&&%%%%%$$$########
!!!!!!!!!"""""#######################$$$$$$$$$$%%%%&')*7:0+('&%%%$$$$$#######"""
!!!!!!!!!!!"""""""######################$$$$$$$$$%%%&&(+-).*&%$$$$$$######""""""
!!!!!!!!!!!!!"""""""""#######################$$$$$$%%'7(%%%$$$$$######""""""""""
!!!!!!!!!!!!!!!""""""""""""#####################################""""""""""""""""
(yeti@darkstar:5)~/wrk/propeller/spinsim/mandelbrot$ _
...ursprünglich wollte ich es auch noch auf höhere Genauigkeit bringen (siehe Spin-**-Operation), aber dann drängelten sich wieder andere Einträge meiner unendlichen MMMABSSGDAHListe (Mach-Mich-Mal-Am-Besten-Sogar-Schon-Gestern-Du-Alter-Hänger-Liste) vor...

So liegt es nun seit vielen Tagen rum und würde sich sicher über etwas Zuwendung freuen!

...vielleicht mag ja JemandIn damit weiterspielen, dem ganzen Graphik aufpfropfen oder WasAuchImmer...

edit@20170604: Eine Variante mit Graphik ist in einem Nachbarthread erwähnt.

_________________
I have a natural instinct for science. — D.J. Trump
OmmmMMMmmmMMMmmmPtimistisch bleiben!
Hive #14 rennt TriOS-pre-R58-20180430
Digitales Heimat-Museum
MediYETIer mal über "Vermummungsverbot und Schleierfahndung"!


Zuletzt geändert von yeti am So 4. Jun 2017, 09:44, insgesamt 1-mal geändert.

Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Fraktal-Retro-Kram...
BeitragVerfasst: Do 8. Jan 2015, 16:27 
Offline
Benutzeravatar

Registriert: Di 10. Jan 2012, 17:10
Beiträge: 78
Wohnort: ESSEN
Tach!

Vor ein paar Tagen habe ich auf einem Recyclinghof einen GTR eingesteckt. Es ist ein Casio fx-7000G von 1985. Das war damals der erste erhältliche Grafiktaschenrechner (laut Wikipedia). Das Teil hat auch einen Programmiermodus in einem tokenbasierten Basic. Im Internet habe ich dann ein Programm für die Berechnung eines Fraktals gefunden. Der Rechner hat dafür 104 min. und 32 sek. gebraucht :lol:

Hier das Ergebnis:
Bild

_________________
Viele Grüße, PropellerFan
EIN WEITERER ATARI ST BESITZER UND FAN!!!
Mein HIVE ist der 300!

Open Source, Open mind.


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Fraktal-Retro-Kram...
BeitragVerfasst: Do 8. Jan 2015, 20:13 
Offline

Registriert: Sa 29. Okt 2011, 14:34
Beiträge: 752
Cool - und jetzt mal reinzoomen in das Apfelmännchen :mrgreen:

_________________
Drohne 206 ist ein HIVE R14-u
Drohne 266 ist ein HIVE R14-V
Der Mensch ist das wichtigste und kostbarste Peripheriegerät einer Computeranlage.


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Fraktal-Retro-Kram...
BeitragVerfasst: Fr 9. Jan 2015, 17:15 
Offline
Administrator
Benutzeravatar

Registriert: Sa 23. Mai 2009, 22:44
Beiträge: 596
Wohnort: Schorfheide
Da hättest du aus dem Gedächtnis das Apfelmännchen per Hand wesentlich schneller fertig gepixelt. ;-)

_________________
http://hive-project.de


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Fraktal-Retro-Kram...
BeitragVerfasst: Sa 14. Feb 2015, 00:30 
Offline
Benutzeravatar

Registriert: Fr 27. Aug 2010, 14:48
Beiträge: 1755
Wohnort: Wrong Planet
Update: Jetzt mit dramatisch verbeserter Genauigkeit!
Code:
' mandelbrot-20150214
'
con
  _clkmode = xtal1+pll16x
  _clkfreq = 80_000_000

  xmin=-563714457 ' -2.1
  xmax=187904819  '  0.7

  ymin=-322122547 ' -1.2
  ymax=322122547  '  1.2

  maxiter=24

  MPX=79          ' 0..79
  MPY=24          ' 0..24

  c4=1073741824

obj
  ser : "conio"

pub main | c,cx,cy,dx,dy,x,y,xn,yn,rsq,iter,px,py

  ser.start(31, 30, 0, 115200)

  dx:=(xmax-xmin)/MPX
  dy:=(ymax-ymin)/MPY

  cy:=ymin
  repeat py from 0 to MPY
    cx:=xmin
    repeat px from 0 to MPX
      x:=0
      y:=0
      rsq:=0
      iter:=0
      repeat while iter=<maxiter and rsq=<c4
        xn:=((x**x-y**y)<<4)+cx
        yn:=((x**y)<<5)+cy
        x:=xn
        y:=yn
        rsq:=(x**x+y**y)<<4
        iter+=1
      cx+=dx
      ser.out(iter+32)
    cy+=dy
    ser.out(10)

Die Multiplikation wird dabei zu
        mul(x,y) = (x**y)<<4
und bietet Vorzeichen, 3 Bits vor dem Dezimalpunkt und der Rest ist der gebrochene Anteil der Zahl. Prinzipbedingt sind nach dieser Multiplikation die niedrigsten 4 Bits = %0000.

** macht diese 28-Bit-Arrithmetik "billig", mehr Genauikeit würde spürbar komplexere Operationen erfordern.

Der Vollständigkeit halber das Ergebnis:
Code:
(yeti@aurora:3)~/wrk/propeller/spinsim$ /opt/parallax/bin/spinsim main.binary
!!!!!!!!!!!!!!!"""""""""""""(&###$('$)*'&%)*####################"""""""""""""""+
!!!!!!!!!!!!!"""""""""$,%)##'1%$%$%%')#######$0'%+$$%'0(%&-$$1%$####$"""""""""""
!!!!!!!!!!!"""""""%$)###$&&)+%%'%)#######$)%%&&$$'&%4&(+,)+3'$$$&%'&####)$""""""
!!!!!!!!!"""""()&##$$$,'$,$$'&#######5%&(/)$$$$)+%%&'1*99/**)(%+$$$%%(####'%$"""
!!!!!!!!""""(##$%-+%%%%%%$#######)+)('%$$$$&%%))&)'/,9999999+'&%%%&($$$/####$$('
!!!!!!!"""#%-+($%$(2$%########&')$$$$$'&%&'-,+)-(+)*/999999..)+('&&&&/&&$&###$&&
!!!!!!""-)&%&&%%$##########$$$$$%.1'%%&+&'+.99908999999999999999/+.9739)%*$####'
!!!!!"$&+$/$##########$$$/)+*'&%%%%,4&&'+-+799999999999999999999999997(&++$$####
!!!!"6+%#######')$$$)%&(,,**-+''(-*('((/259999999999999999999999999994,)4-&$%###
!!!!+###9'(&(($$&)(*%*0*20922+89-7,)),*99999999999999999999999999999999+''*$&'##
!!!!#,%'&&)$$$*(%%%%+''++.7999999999902999999999999999999999999999999999'%0$,'-#
!!!#'$$$$$$%'**&**)).24.69999999999999999999999999999999999999999999999'(%)$$%&#
!!!69999999999999999999999999999999999999999999999999999999999999992++'&(%*$$(%#
!!!#'$$$$$$%'**&**)).24.69999999999999999999999999999999999999999999999'(%)$$%&#
!!!!#,%'&&)$$$,(%%%%1''++.7999999999902999999999999999999999999999999998'%-$+')#
!!!!9###+'(&(($$&)(+%*/*30926+69-7,)),*99999999999999999999999999999998+''-$&'##
!!!!"+*%#######')$$$)%&(,1**-+''(4*('((0259999999999999999999999999994,)47&$%###
!!!!!"$&*$+$##########$$$/)0)'&%%%%+*&&'+-+799999999999999999999999999(&/5$$####
!!!!!!"",)&%&&%%$##########$$$$$%+,'%%&6&'+.99908999999999999999/+.9939)%*$####'
!!!!!!!"""#%+3($%$()$%########&'*$$$$$'&%&'/,+)0(+)*/999999..)+('&&&&/&&$&###$&&
!!!!!!!!""""(##$%,+%%%%%%$#######)+)('%$$$$&%%))&)'2,9999999+'&%%%&($$$.####$$('
!!!!!!!!!"""""*)&##$$$)'$+$$'&#######6%&(,,$$$$),%%&'-*99/**)(%*$$$%%(####'%$"""
!!!!!!!!!!!"""""""%$,###$&&-.%%'%)#######$)%%&&$$'&%.&(+,)+/'$$$&%'&####*$""""""
!!!!!!!!!!!!!"""""""""$*%)##'*%$%$%%')#######$2'%5$$%'0(%&0$$)%$####$"""""""""""
!!!!!!!!!!!!!!!"""""""""""""(&###$('$+*'&%)0####################""""""""""""""")

Das Proggie mal auf 800x600 bei 100 Iterationen und ein PGM-Bild als Ausgabeformat (musste ich in GIF wandeln, da das Forum .PGM nicht mag...) umgestrixxelt, ergibt sich Folgendes:
Dateianhang:
Dateikommentar: Da ist wohl noch ein Wurm drin...
m.gif
m.gif [ 128.51 KiB | 4956-mal betrachtet ]

Schon recht nett, aber irgendwo ist da noch ein interessanter Wurm drin... mal schau'n wann ich dem auf die Schliche komme...

_________________
I have a natural instinct for science. — D.J. Trump
OmmmMMMmmmMMMmmmPtimistisch bleiben!
Hive #14 rennt TriOS-pre-R58-20180430
Digitales Heimat-Museum
MediYETIer mal über "Vermummungsverbot und Schleierfahndung"!


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Fraktal-Retro-Kram...
BeitragVerfasst: So 4. Jun 2017, 11:23 
Offline
Benutzeravatar

Registriert: Fr 27. Aug 2010, 14:48
Beiträge: 1755
Wohnort: Wrong Planet
Okay... nach Anstarren des Quelltextes von offensichtlich endlicher Dauer (im Gegensatz zu Debugger anwerfen!) war es dann so weit und der Groschen (liebe Kids, das entspricht heute der 5-€uro¢ent-Münze!) ist gefallen... ;-)

Die letzten 4 Bits der 28-Stelligen Fixpunktarrithmetik, die theoretisch immer %0000 sein sollten, sind das Problem. Sie bleiben durch die sorglose Rumrechnerei ohne dies Endnibble brav immer wieder zu nullen eben nicht %0000.

Auf der Suche nach einem Kompromiß zwischen Rechenaufwand der Fixpunktmultiplikation und ihrer Genauigkeit habe nun zu 24 Nachkommastellenbits gegriffen.

Die 28-Nachkommastellen-Fixpunktmultiplikation (die mit den Zwangs-%0000-Bits am Ende ja auch eine 24-Nachkommastellen-Genauigkeit hat) zu retten hätte Nibble-Operationen erfordert. Bei 24-Nachkommastellen sind die notwendigen zusätzlichen Schritte Byte-Operationen, die Spin leichter ausm Ärmel schüttelt.
Code:
' mandelbrot-20170604

con
  _clkmode = xtal1+pll16x
  _clkfreq = 80_000_000

  xmin=round(-2.1*float(1<<24))
  xmax=round( 0.7*float(1<<24))

  ymin=round(-1.2*float(1<<24))
  ymax=round( 1.2*float(1<<24))

  maxiter=32

  MPX=79 ' 0..MPX
  MPY=24 ' 0..MPY

  c4=4<<24

obj
  ser : "FullDuplexSerial"

pub main | c,cx,cy,dx,dy,x,y,xn,yn,rsq,iter,px,py

  ser.start(31, 30, 0, 115200)

  dx:=(xmax-xmin)/MPX
  dy:=(ymax-ymin)/MPY

  cy:=ymin
  repeat py from 0 to MPY
    cx:=xmin
    repeat px from 0 to MPX
      x:=0
      y:=0
      rsq:=0
      iter:=0
      repeat while iter=<maxiter and rsq=<c4
        xn:=((fpm(x,x)-fpm(y,y)))+cx
        yn:=2*fpm(x,y)+cy
        x:=xn
        y:=yn
        rsq:=fpm(x,x)+fpm(y,y)
        iter+=1
      cx+=dx
      ser.tx(iter+32)
    cy+=dy
    ser.tx(10)

  waitcnt(_clkfreq+cnt)
  ser.stop
  cogstop(0)

'
'           AAAAAAAAaaaaaaaaaaaaaaaaaaaaaaaa
' *         BBBBBBBBbbbbbbbbbbbbbbbbbbbbbbbb
'           ================================
' = CCCCCCCCCCCCCCCCcccccccccccccccccccccccccccccccccccccccccccccccc
'   \______________  ______________/\______________  ______________/
'                  \/                              \/
'              SChi:=SA**SB                    SClo:=SA*SB
'
pri fpm(SA,SB) | SClo
  SClo:=(SA*SB)
  return (SA**SB)<<8 | SClo.byte[0]

...und nun schaut das Ergebnis wieder "glatt" aus:
Code:
!!!!!!!!!!!!!!!"""""""""""""####################################""""""""""""""""
!!!!!!!!!!!!!"""""""""#######################$$$$$$$%'/(%%%$$$$$#####"""""""""""
!!!!!!!!!!!"""""""#######################$$$$$$$$%%%&&(++)++&$$$$$$$######""""""
!!!!!!!!!"""""#######################$$$$$$$$$$%%%%&')*A;/*('&%%$$$$$$#######"""
!!!!!!!!""""#####################$$$$$$$$$$%%%&&&''),AAAAAAA+'&%%%%%$$$$########
!!!!!!!"""####################$$$$$$$$%%%&'())((())*-AAAAAA.+))('&&&&+&%$$######
!!!!!!""###################$$$$$%%%%%%&&&'+.AAA08AAAAAAAAAAAAAAA/+,A//A)%%$#####
!!!!!"################$$$%%%%%%%%%%&&&&')-+7AAAAAAAAAAAAAAAAAAAAAAAAA4(&&%$$####
!!!!"##########$$$$$%%&(,('''''''''''((*-5AAAAAAAAAAAAAAAAAAAAAAAAAAA3+)4&%$$###
!!!!####$$$$$$$$%%%%%&'(*-A1.+/A-4+))**AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3+'&%$$$##
!!!!#$$$$$$$$$%%%%%%'''++.7AAAAAAAAA9/0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA<6'%%$$$$#
!!!#$$$$$$$%&&&&''().-2.6AAAAAAAAAAAAA>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'&%%$$$$#
!!!.3;5;;AA<AA=<AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2+)'&&%%$$$$#
!!!#$$$$$$$%&&&&''().-2.6AAAAAAAAAAAAA>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'&%%$$$$#
!!!!#$$$$$$$$$%%%%%%'''++.7AAAAAAAAA9/0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA<6'%%$$$$#
!!!!####$$$$$$$$%%%%%&'(*-A1.+/A-4+))**AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3+'&%$$$##
!!!!"##########$$$$$%%&(,('''''''''''((*-5AAAAAAAAAAAAAAAAAAAAAAAAAAA3+)4&%$$###
!!!!!"################$$$%%%%%%%%%%&&&&')-+7AAAAAAAAAAAAAAAAAAAAAAAAA4(&&%$$####
!!!!!!""###################$$$$$%%%%%%&&&'+.AAA08AAAAAAAAAAAAAAA/+,A//A)%%$#####
!!!!!!!"""####################$$$$$$$$%%%&'())((())*-AAAAAA.+))('&&&&+&%$$######
!!!!!!!!""""#####################$$$$$$$$$$%%%&&&''),AAAAAA@+'&%%%%%$$$$########
!!!!!!!!!"""""#######################$$$$$$$$$$%%%%&')*A;/*('&%%$$$$$$#######"""
!!!!!!!!!!!"""""""#######################$$$$$$$$%%%&&(++)++&$$$$$$$######""""""
!!!!!!!!!!!!!"""""""""#######################$$$$$$$%'0(%%%$$$$$#####"""""""""""
!!!!!!!!!!!!!!!"""""""""""""####################################""""""""""""""""

Auch etwas höher aufgelöst ist noch Alles noch in Ordnung:
Dateianhang:
Dateikommentar:  
 
So muß Fraggle!
 

m.gif
m.gif [ 50.06 KiB | 3474-mal betrachtet ]

_________________
I have a natural instinct for science. — D.J. Trump
OmmmMMMmmmMMMmmmPtimistisch bleiben!
Hive #14 rennt TriOS-pre-R58-20180430
Digitales Heimat-Museum
MediYETIer mal über "Vermummungsverbot und Schleierfahndung"!


Zuletzt geändert von yeti am So 11. Jun 2017, 19:47, insgesamt 5-mal geändert.

Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Fraktal-Retro-Kram...
BeitragVerfasst: So 4. Jun 2017, 17:08 
Offline
Administrator
Benutzeravatar

Registriert: So 24. Mai 2009, 10:35
Beiträge: 2258
Wohnort: Lutherstadt Wittenberg
Hier die TriOS Version im Texmodus:

Code:
' mandelbrot-20170604

con
  _clkmode = xtal1+pll16x
  _clkfreq = 80_000_000

  xmin=round(-2.1*float(1<<24))
  xmax=round( 0.7*float(1<<24))

  ymin=round(-1.2*float(1<<24))
  ymax=round( 1.2*float(1<<24))

  maxiter=32

  MPX=62 ' 0..MPX
  MPY=20 ' 0..MPY

  c4=4<<24

obj
  ios: "reg-ios"

pub main | c,cx,cy,dx,dy,x,y,xn,yn,rsq,iter,px,py

  ios.start

  dx:=(xmax-xmin)/MPX
  dy:=(ymax-ymin)/MPY

  cy:=ymin
  repeat py from 0 to MPY
    cx:=xmin
    repeat px from 0 to MPX
      x:=0
      y:=0
      rsq:=0
      iter:=0
      repeat while iter=<maxiter and rsq=<c4
        xn:=((fpm(x,x)-fpm(y,y)))+cx
        yn:=2*fpm(x,y)+cy
        x:=xn
        y:=yn
        rsq:=fpm(x,x)+fpm(y,y)
        iter+=1
      cx+=dx
      ios.printchar(iter+32)
    cy+=dy
    ios.printnl

  waitcnt(_clkfreq+cnt)

'
'           AAAAAAAAaaaaaaaaaaaaaaaaaaaaaaaa
' *         BBBBBBBBbbbbbbbbbbbbbbbbbbbbbbbb
'           ================================
' = CCCCCCCCCCCCCCCCcccccccccccccccccccccccccccccccccccccccccccccccc
'   \______________  ______________/\______________  ______________/
'                  \/                              \/
'              SChi:=SA**SB                    SClo:=SA*SB
'
pri fpm(SA,SB) | SClo
  SClo:=(SA*SB)
  return (SA**SB)<<8 | SClo.byte[0]



Dateianhänge:
20170604_180244.jpg
20170604_180244.jpg [ 1.74 MiB | 3471-mal betrachtet ]

_________________
"Ob Sie denken, dass Sie es können, oder ob Sie denken, dass Sie es nicht können - in beiden Fällen haben Sie recht." Henry Ford
Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Fraktal-Retro-Kram...
BeitragVerfasst: So 4. Jun 2017, 17:17 
Offline
Administrator
Benutzeravatar

Registriert: So 24. Mai 2009, 10:35
Beiträge: 2258
Wohnort: Lutherstadt Wittenberg
Jo, einen hab ich noch: Apple unter TriOS im G0 Grafikmodus, Auflösung 256x192, Rechenzeit 3:50 min. SO, wer schreibt jetzt die PASM Version für alle 8 COGs? Damit landen wir locker im Sekundenbereich... :mrgreen:


Code:
' mandelbrot-20170604

con
  _clkmode = xtal1+pll16x
  _clkfreq = 80_000_000

  xmin=round(-2.1*float(1<<24))
  xmax=round( 0.7*float(1<<24))

  ymin=round(-1.2*float(1<<24))
  ymax=round( 1.2*float(1<<24))

  maxiter=32

  MPX=256 ' 0..MPX
  MPY=192 ' 0..MPY

  c4=4<<24

obj
  ios: "reg-ios"

pub main | c,cx,cy,dx,dy,x,y,xn,yn,rsq,iter,px,py,gx,gy

  ios.start
  ios.g0_load
  ios.g0_static
 'ios.g0_setscreen($e04,$05,$06,$02) 'alternativ graukeil statt rgb
  waitcnt(cnt+clkfreq*3)

  ios.g0_clear
  ios.g0_width(0)
  gy := 0

  dx:=(xmax-xmin)/MPX
  dy:=(ymax-ymin)/MPY

  cy:=ymin
  repeat py from 0 to MPY
    cx:=xmin
    gx := 0
    repeat px from 0 to MPX
      x:=0
      y:=0
      rsq:=0
      iter:=0
      repeat while iter=<maxiter and rsq=<c4
        xn:=((fpm(x,x)-fpm(y,y)))+cx
        yn:=2*fpm(x,y)+cy
        x:=xn
        y:=yn
        rsq:=fpm(x,x)+fpm(y,y)
        iter+=1
      cx+=dx

      ios.g0_color(3)
      if iter>8
        ios.g0_color(2)
      if iter > 16
        ios.g0_color(1)
      if iter > 24
        ios.g0_color(0)
      ios.g0_plot(gx++,gy)

    cy+=dy
    gy++

  waitcnt(_clkfreq+cnt)

'
'           AAAAAAAAaaaaaaaaaaaaaaaaaaaaaaaa
' *         BBBBBBBBbbbbbbbbbbbbbbbbbbbbbbbb
'           ================================
' = CCCCCCCCCCCCCCCCcccccccccccccccccccccccccccccccccccccccccccccccc
'   \______________  ______________/\______________  ______________/
'                  \/                              \/
'              SChi:=SA**SB                    SClo:=SA*SB
'
pri fpm(SA,SB) | SClo
  SClo:=(SA*SB)
  return (SA**SB)<<8 | SClo.byte[0]




Dateianhänge:
20170604_180124.jpg
20170604_180124.jpg [ 1.26 MiB | 3468-mal betrachtet ]

_________________
"Ob Sie denken, dass Sie es können, oder ob Sie denken, dass Sie es nicht können - in beiden Fällen haben Sie recht." Henry Ford
Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Fraktal-Retro-Kram...
BeitragVerfasst: So 4. Jun 2017, 17:40 
Offline
Benutzeravatar

Registriert: Fr 27. Aug 2010, 14:48
Beiträge: 1755
Wohnort: Wrong Planet
Die Version im Threadstart rechnet mit 12 Nachkommabits und ist dadurch einfacher und schneller. Aber beim Reinzoomen geht der Auflösung dieses Zahlenbereiches (in 1/4096-steln) natürlich schnell die Puste aus.

Die Version von heute sollte für ein paar nette Bildchen reichen mit ihren 24 Nachkommabits... ich hab's aber auch noch nicht an seine Grenzen getrieben...

Die Verteilung der Farben auf die ermittelten Iterationswerte macht dabei viel aus... da fängt's an, nimmer mein Ding zu sein... ich hab weder für Farben ein gutes Pfötchen, noch für Kunst im Allgemeinen...

_________________
I have a natural instinct for science. — D.J. Trump
OmmmMMMmmmMMMmmmPtimistisch bleiben!
Hive #14 rennt TriOS-pre-R58-20180430
Digitales Heimat-Museum
MediYETIer mal über "Vermummungsverbot und Schleierfahndung"!


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Fraktal-Retro-Kram...
BeitragVerfasst: Do 5. Okt 2017, 14:51 
Offline
Benutzeravatar

Registriert: Fr 27. Aug 2010, 14:48
Beiträge: 1755
Wohnort: Wrong Planet
Nicht wirklich retro, aber rund ums Mandelbrötchen und irgendwie von überraschend bis spannend:

[Numberphile] The Mandelbrot Set

[Numberphile] Pi and the Mandelbrot Set

[Numberphile] Fibonacci Numbers hidden in the Mandelbrot Set

...also Spiel, Spaß und Spannung für die ganze Familie!

_________________
I have a natural instinct for science. — D.J. Trump
OmmmMMMmmmMMMmmmPtimistisch bleiben!
Hive #14 rennt TriOS-pre-R58-20180430
Digitales Heimat-Museum
MediYETIer mal über "Vermummungsverbot und Schleierfahndung"!


Nach oben
 Profil  
 
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 23 Beiträge ]  Gehe zu Seite 1, 2, 3  Nächste

Alle Zeiten sind UTC [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 6 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
cron
Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de