Zitat von
cumi:
Also hier mal den Code, welchen ich brauch um die Divergenze von einem Punkt zu berechenn:
Delphi-Quellcode:
TComplex=record
r,i:Extended;
end;
(...)
function TFrmMain.CalcDivMandel(x,y:Extended):Integer;
var
z1,z2:TComplex;
h1,h2:Extended;
i :Integer;
begin
z1.r:=0;
z1.i:=0;
i :=0;
repeat
h1 :=z1.r*z1.r;
h2 :=z1.i*z1.i;
z2.r:=h1-h2 +x;
z2.i:=2*z1.r*z1.i+y;
z1:=z2;
inc(i);
until (i>=steps) or ((h1+h2)>4);
result:=i;
end;
Na das sieht doch recht gut aus! Wenn du auf die Genauigkeit verzichten kannst: Double ist deutlich schneller als Extended. Aber grad für einen Zoom kann die Genauigkeit interessant werden (ich selbst hab bei immens starkem Zoom auch schon mal das "Ende von Double" gesehen
).
Zitat von
cumi:
Nun also ich hab das ganze mit der GR32
Unit einmal ausprobiert. Und ich muss sagen... kein vergleich viel schneller. Nur leider versteh ich das mit dem Alpha Teil des TColor32 Typs noch nicht ganz. Für was ist der gut? Kann man den auch weglassen? Denn momentan hab ich noch das Problem, das meine Bitmaps vielviel grösser werden als sie vorhin waren. Dies ist relativ verherend da ich ja nicht belibig
Ram habe....
Den Alphateil kanst du ganz weg lassen, ja. Der sollte dann
imho auf 255 gesetzt werden. Der wird erst interessant wenn du mehrere Bitmaps halbtransparent überlagern möchtest. Allerdings kann man ihn nicht
ganz weg lassen, d.h. ein Pixel wird immer volle 32 Bit beanspruchen. Deshalb ja auch Graphics
32 .
Die gesamte Sequenz im
RAM zu halten ist
imho ohnehin nicht so glücklich. Über Chunks von so 10 bis 20 Bitmaps im Speicher kann man reden, die dann in einem Schwupps geschrieben werden, aber ich hab jedes Bitmap direkt nach Fertigstellung weggeschrieben und fertig.
Zitat von
cumi:
Nun nochmals eine kurze Frage. Du sagtest du überlässt das "Filmmachen" an Virtualdub etc. Wie funktioniert das denn bei dir genau? Also Virtualdub kenn ich relativ gut. Ich benutzte es häufig zum umcodieren von Filmen. Jetzt speicherst du einfach alle Frames als Bitmap auf die HDD?
Japp, genau so
Einfach mit aufsteigender Nummereierung benennen (z.B. frac0001.bmp; frac0002.bmp; ...; fracXXXX.bmp), und VirtualDub (und auch TMPGEnc) erkennen mit Öffnen des ersten Bildes der Sequenz dass es auch eine Sequenz ist, und behandelt es wie ein Video.
Ist zunächst mal die einfachere Variante während man sich noch mit den "wichtigen" Dingen rumplagen muss 8).
Gruss,
Fabian
Fabian K.
INSERT INTO HandVonFreundin SELECT * FROM Himmel