Autor Beitrag
Arno-Wien
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 33

xp

BeitragVerfasst: Do 01.12.05 18:13 
Erzeugung eines Apfelmännchenbildes:

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
 1PROCEDURE apf_beliebiger_ausschnitt;  
 2VAR m,n,i:longint;  
 3:     p:pbytearray;  
 4:     xwert,ywert,x_konst,x1_konst,y_konst,y2wert,xqu,yqu,summe,  
 5:     deltax,deltay:extended;  
 6BEGIN  
 7:  ausschnitt_check:=true;  
 8:  deltax:=(c_reel2-c_reel1)/639;  
 9:  deltay:=(c_imag2-c_imag1)/479;  
10:  y_konst:=c_imag1-deltay;  
11:  m:=0;  
12:  REPEAT  
13:    p:=a_bild.ScanLine[m];  
14:    y_konst:=y_konst+deltay;  
15:    x_konst:=c_reel1-deltax;  
16:    FOR n:=0 TO 639 DO  
17:    BEGIN  
18:      x1_konst:=x_konst+deltax;  
19:      x_konst:=x1_konst;  
20:      xwert:=0.0;  
21:      ywert:=0.0;  
22:      xqu:=0.0;  
23:      yqu:=0.0;  
24:      color:=0;  
25:      REPEAT  
26:        y2wert:=xwert*ywert;  
27:        ywert:=y2wert+y2wert-y_konst;  
28:        xwert:=xqu-yqu-x_konst;  
29:        xqu:=xwert*xwert;  
30:        yqu:=ywert*ywert;  
31:        summe:=xqu+yqu;  
32:        color:=succ(color)  
33:      UNTIL (summe > maxsum) OR (color = colormax);  
34:      IF form7.checkbox6.checked THEN  
35:      BEGIN  
36:        IF (color >= colormin) OR (color = colormax) THEN  
37:        begin  
38:          i:=3*n;  
39:          p[i]:=farbe_blau;  
40:          p[i+1]:=farbe_gruen;  
41:          p[i+2]:=farbe_rot;  
42:          form7.canvas.pixels[n,m]:=farben  
43:        end  
44:      END ELSE  
45:      BEGIN  
46:        IF (color <= colormin) OR (color = colormax) THEN  
47:        begin  
48:          i:=3*n;  
49:          p[i]:=farbe_blau;  
50:          p[i+1]:=farbe_gruen;  
51:          p[i+2]:=farbe_rot;  
52:          form7.canvas.pixels[n,m]:=farben  
53:        end  
54:      END  
55:    END;  
56:    m:=succ(m);  
57:    Application.processMessages  
58:  UNTIL (m = 480or ende;  
59:  daten_aktualisieren(werte_apf_alt);  
60:  BitBlt(bild_apf.canvas.handle,0,0,640,480,  
61:         a_bild.canvas.handle,0,0,SRCCOPY)  
62END;



Mein Problem ist die Schleife 25 -33

Alles andere ist zeitlich nicht relevant und ohne kompletten Source-Code
auch nicht immer logisch.

Ab 10 000 Iterationen (colormax) wird es mühsam.
Ab 100 000 öd.

Die Zahlen in diesem Abschnitt produzieren sicher keine Fehler.

Kann ich nicht alle Kontrollen ausschalten, zwei Werte in die Register
schieben (ST), rechnen lassen und auslesen.


Gibt es eine Lösung ( Assembler )

Arno[delphi]
F34r0fTh3D4rk
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 5284
Erhaltene Danke: 27

Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
BeitragVerfasst: Do 01.12.05 18:17 
bin ich jetzt blöd, oder hab ich den thread heute nicht schonmal gesehen ? mit mehr als 2 views und sogar lösungsansätze ? :shock:
Tilman
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1405
Erhaltene Danke: 51

Win 7, Android
Turbo Delphi, Eclipse
BeitragVerfasst: Do 01.12.05 19:09 
nein bist du nicht, die suche im profil ergab

www.delphi-forum.de/...52357&highlight=

(ich habs gemeldet)

_________________
Bringe einen Menschen zum grübeln, dann kannst du heimlich seinen Reis essen.
(Koreanisches Sprichwort)
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Do 01.12.05 19:12 
Da es da bereits einen Thread zu gibt, mache ich hier zu. :-)

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Dieses Thema ist gesperrt, Du kannst keine Beiträge editieren oder beantworten.

Das Thema wurde von einem Team-Mitglied geschlossen. Wenn du mit der Schließung des Themas nicht einverstanden bist, kontaktiere bitte das Team.