20120225
Buddhabrot konečně v C
Tak jsem se konečně rozhoupal k tomu, abych v C napsal generátor buddhabrota, který je zobrazen skrze knihovnu SDL. Je to lepší než (pomalým) pythonem sázet do 3D světa blenderu vertexy, které mají efekt halo a dostatečně velkou alfu a pak to celé ještě renderovat jako klasickou 3D scénu blenderu... No prostě neřešil jsem to úplně čistě a optimálně. Navíc po několika stech milionů vertexů se Blenderu přestal můj záměr líbit a leckdy už ani nebyl schopen nastartovat renderer...
Kategorie:
buddhabrot,
c,
programování
20120122
Programovací jazyk C: 01-Příprava prostředí
Pokud chceš PVP projít dobře, musíš mít alespoň snahu psát programy. A k tomu potřebuješ nějaké vývojové prostředí, aby ses mohl o co edukovat (například studování výstupu programu gcc s parametrem -S je opravdu velmi výživný zdroj informací). Předpokládejme úplně průměrný osobní počítač s 32-bit Windows XP.
Budeme instalovat:
Budeme instalovat:
- PSPad - http://www.pspad.com
- Cygwin - http://www.cygwin.com
- gcc
Zvýrazňuje související závorky, umí doplňovat párové znaky, spravuje projekty, umí FTP...
- Poměrně kvalitní textový editor se zvýrazněním syntaxe a možností přiřazení kompilátoru k tlačítku GUI.
- Díky němu se můžeš ve Windows pohybovat jako v linuxu s hromadou linuxových příkazů včetně interpreta příkazové řádky (bash) a základních GNU nástrojů.
- OpenSourcový kompilátor jazyka C. Tento program si vezme náš zdrojový kód v souboru program.c, udělá nějaká kouzla a vyrobí z toho spustitelný program.exe . Může nám také místo spustitelné "binárky" vygenerovat zdrojový kód pro assembler GAS, který musíme pro převod do binárky převést assemblerem na objektový soubor a ten pak linkerem na spustitelnou binárku.
Kategorie:
c,
edu,
programování
20110925
AVR Assembler-01: Ponor k 0.000000125 sekundové informaci
Ve škole jsme se konečně dostali k předmětu MIT (ne, to opravdu není zkratka pro Massachusetts Institute of Technology , ale pro cosi s mikrokontrolérama) a já měl tedy pořádný důvod začít s assemblerem. Tak se podíváme, co tu máme.
Kategorie:
assembler,
atmega16,
atmel,
avr,
elektronika,
programování
20110103
Bůh je matematik... , chvilku poté
A toto nechám běžet přes noc. Uvidíme.
from Blender import Redraw,Save
import bpy
from random import randrange
me=bpy.data.meshes['Mandel']
batches=[]
vertcount=1
curbatch=0
it=100000
bail=50
def check(r,i,it,bail):
zr=r
zi=i
a=1
while a<=it:
zr,zi=zr*zr-zi*zi+r,2*zr*zi+i
if (zr**2+zi**2)>=bail:
return False
a+=1
return True
try:
a=1
while 0==0:
r=randrange(-50000000000000,50000000000000)/10000000000000.0
i=randrange(-50000000000000,50000000000000)/10000000000000.0
if (a%1000)==0:
print a,"iterovanych bodu Z,",vertcount,"bodu naneseno"
if check(r,i,it,bail)==False:
zr=r
zi=i
b=1
while b<=it:
zr,zi=zr*zr-zi*zi+r,2*zr*zi+i
if ((zr>-3)&(zr<2)&(zi>-2.5)&(zi<2.5)):
batches.append([zr,zi,0])
if(vertcount%10000==0):
me.verts.extend(batches)
batches=[]
name="C:\Users\programagor\mandel{0}.blend".format(curbatch%2)
Save(name,1)
Redraw()
curbatch+=1
print "--prubeh ulozen (",name,")--"
vertcount+=1
if (zr**2+zi**2)>=bail:
b=it
b+=1
a+=1
finally:
me.verts.extend(batches)
print "--prubeh ulozen--"
print "Celkem iterovano",a,"bodu Z,",vertcount,"bodu naneseno"
from Blender import Redraw,Save
import bpy
from random import randrange
me=bpy.data.meshes['Mandel']
batches=[]
vertcount=1
curbatch=0
it=100000
bail=50
def check(r,i,it,bail):
zr=r
zi=i
a=1
while a<=it:
zr,zi=zr*zr-zi*zi+r,2*zr*zi+i
if (zr**2+zi**2)>=bail:
return False
a+=1
return True
try:
a=1
while 0==0:
r=randrange(-50000000000000,50000000000000)/10000000000000.0
i=randrange(-50000000000000,50000000000000)/10000000000000.0
if (a%1000)==0:
print a,"iterovanych bodu Z,",vertcount,"bodu naneseno"
if check(r,i,it,bail)==False:
zr=r
zi=i
b=1
while b<=it:
zr,zi=zr*zr-zi*zi+r,2*zr*zi+i
if ((zr>-3)&(zr<2)&(zi>-2.5)&(zi<2.5)):
batches.append([zr,zi,0])
if(vertcount%10000==0):
me.verts.extend(batches)
batches=[]
name="C:\Users\programagor\mandel{0}.blend".format(curbatch%2)
Save(name,1)
Redraw()
curbatch+=1
print "--prubeh ulozen (",name,")--"
vertcount+=1
if (zr**2+zi**2)>=bail:
b=it
b+=1
a+=1
finally:
me.verts.extend(batches)
print "--prubeh ulozen--"
print "Celkem iterovano",a,"bodu Z,",vertcount,"bodu naneseno"
Kategorie:
buddhabrot,
programování
20110102
Bůh je matematik...
...a já jsem bůh
Aneb takhle nějak by to mohlo vypadat, ještě než se vrhnu na optimalizaci...
Kategorie:
buddhabrot,
programování
20100518
20100405
[WIP] Jonathan Coulton - Still Alive [Piano cover]
Jsem ve fázi učení, takže kompletní skladbu budu umět až tak někdy za měsíc. Ale i tak doufám, že se vám bude líbiti.
Přihlásit se k odběru:
Příspěvky (Atom)