Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Prism Farbskala für eine Juliamenge ($1FFF) (https://www.delphipraxis.net/125226-farbskala-fuer-eine-juliamenge-%241fff.html)

SemolasP 2. Dez 2008 20:41


Farbskala für eine Juliamenge ($1FFF)
 
[delphi]

Ich programmiere gerade ein Programm das Julia-Mengen abbildet.
Und bin bei der Abstimmung der Farbskalen beim Anschauen von
anderen Programmiertexten auf folgenden Ausdruck gestossen:
$1FFF. Könnte mir jemand bitte erklären um was es da geht.

SemolasP

mkinzler 2. Dez 2008 20:43

Re: $1FFF
 
Handelt sich um eine Hexzahl

SemolasP 2. Dez 2008 20:48

Re: $1FFF
 
Und was ist eine Hexzahl? Sorry, bin Anfänger ...

DP-Maintenance 2. Dez 2008 20:51

DP-Maintenance
 
Dieses Thema wurde von "Phoenix" von "Tutorials und Kurse" nach "Sonstige Fragen zu Delphi" verschoben.
Das ist unter Garantie weder ein Tutorial noch ein Kurs...

mkinzler 2. Dez 2008 20:54

Re: $1FFF
 
Eine andere Drastellung einer Zahl, wobei eine Stelle nun 16 Wertmöglichkeiten besitzt

Dual - 2 Möglichkeiten: 0, 1
Dezimal - 10 Möglichkeiten: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
Oktal - 8 Möglichkeiten: 0, ..., 7
Hexadezimal - 16 Mögl. : 0, ..., 9, A, B, C, D, E, F

Bsp: Zahl 11 16

Dual: 1011 10000
Dezimal: 11 16
Hex: B 10

Phoenix 2. Dez 2008 20:59

Re: $1FFF
 
Hallo und herzlich Willkommen in der DP :dp:

Was eine Hexzahl ist, hätte Dir Google bei der Suche nach Bei Google suchenhexzahl im dritten Treffer im Detail verraten. Ein bisschen mehr Eigeninitiative darf hier schon verlangt werden.

Dann solltest Du bitte zukünftig auch schauen, in welche Sparte zu postest. Diese Frage ist ganz sicher kein Tutorial.

Zum anderen: Bist Du Dir 100% sicher, dass das eine Frage zu Delphi.NET ist, oder meinst Du normales Delphi (für Win32)?

Zuguterletzt möchte ich Dich bitten, Deiner Frage noch einen etwas aussagekräftigeren Titel zu geben. Bitte klicke dazu rechts oben bei dem Beitrag auf 'Edit' und ändere den Titel so, dass man weiss um was es geht. Mit "$1FFF" (bzw. "8191") kann niemand etwas anfangen.

SemolasP 2. Dez 2008 21:04

Re: $1FFF
 
Und wie steht das in Zusammenhang mit meiner
Farbskala?

Hier ist mein Programmiertext der zutreffenden
Funktion:

Delphi-Quellcode:
procedure iteriere(z:Complex) ;
var i,k : integer ;
 begin
  k:= 1 ;
  for i:=1 to 1001 do
   begin
    if ((z.re*z.re+z.im*z.im) > (c.im*c.im+c.re*c.re))
    and ((z.re*z.re+z.im*z.im) > 4 ) then break;
    z:= f(z) ;
    k:= k+1
   end;
 
   if k >= 1001 then Form1.Image1.Canvas.Pixels[xpix,ypix] := clBlack
   else Form1.Image1.canvas.pixels[xPix,yPix] := $1FFF*(k+x) ;  //x steht für eine beliebige Zahl ;

 end;
[edit=Phoenix]Delphi-Tag geschlossen Mfg, Phoenix[/edit]

Medium 3. Dez 2008 01:54

Re: Farbskala für eine Juliamenge ($1FFF)
 
Eigentlich hat es überhaupt nichts mit der Berechnung des Fraktals zu tun. Dies ist eine von ich würde behaupten unbegrenzt vielen Möglichkeiten Pixeln eine Farbe zuzuweisen, in diesem Fall abhängig davon wie viele Iterationen der Ausgangswert "überlebt" hat.

TCanvas.Pixels[] ist vom Typ Delphi-Referenz durchsuchenTColor, welcher erstmal nichts weiter als ein Integer ist. Dabei werden die 4 Bytes aus denen ein Integer zusammengesetzt ist jeweils als Helligkeitswert für eine der drei Grundfarben interpretiert (das höchste Byte bleibt zunächst einmal ungenutzt). $1FFF würde in diesem Fall als Blau = 0; Grün = $1F; Rot = $FF interpretiert, was einem ganz leicht orangenem Rot entsprechen dürfte. Das Multiplizieren mit (k+x) führt dann im Grunde nur noch dazu, dass für unterschiedliche Werte von k unterschiedliche Farben dabei heraus kommen.
Das Verfahren ist allerdings zugegebenermaßen ein wenig ungewöhnlich, da man in den meisten Fällen Rot, Grün und Blau separat berechnet, und anschließend mit Bei Google suchenBitoperationen zu einem einzigen Farbwert zusammen setzt. Es gibt aber keine Regel die das von dir gezeigte Vorgehen verbieten würde. Es ist eben eine von vielen Möglichen, und du bist nicht gezwungen es genau so zu machen.


Als genereller Tipp: Verabschiede dich von der Untrennbarkeit zwischen Wert und Darstellung. Ich kann z.B. den Wert von 12 auf beliebige Weise darstellen in dem ich einfach ein anderes System verwende. Das allgemein gebräuchliche ist das Dezimalsystem, in welchem dem (modernen) Menschen "12" sofort einleuchtet. Ich kann den selben Wert auch als "C" schreiben, sollte dann nur dazu sagen dass ich das Hexadezimalsystem verwende. In Delphi tut man dies, in dem man das Dollarzeichen der Zahl voran stellt, also "$C". Gemeint ist nach wie vor der Dezimalwert von 12. Man könnte auch ein ganz anderes System, etwa das der Maya verwenden. Dann sieht die Darstellung des Wertes wieder ganz anders aus, aber es ist noch immer der Wert von dezimal 12 gemeint.
$1FFF ist also im Hexadezimalsystem dargestellt, und würde im Dezimalsystem 8191 lauten. Allerdings bietet sich gerade bei Farben die hexadezimale Darstellung an, da immer zwei Stellen der Zahl zu je einem Byte gehören, und somit die Helligkeit jeder der Farbkomponenten ganz gut ersichtlich ist. Im Dezimalsystem ist diese Zuordnung so einfach nicht möglich. Als Beispiel:
$1FFF ist das gleiche wie $001FFF (einfach Nullen vorne auffüllen, tut im Dezimalsystem auch nicht weh). Je Farbkomponente habe ich 2 Stellen, also ist eine "00", eine "1F" und die letzte "FF". Welcher Wert zu welcher Farbe gehört ist eine Sache der Konvention, in diesem Falle ist es Blau, Grün, Rot. Also weiss ich ohne weiteres:
Blau=00 -> ganz dunkel, kein Blau in der Farbe
Grün=1F -> sehr dunkles Grün ist beteiligt
Rot =FF -> volle Pulle Rot
Jetzt ist es hilfreich zu wissen, dass das RGB-Farbsystem ein additives ist (Lichtfarben), und Rot+Grün=Gelb gilt. Da nur sehr wenig Grün dabei ist, wird hier ein sehr rotes Orange (oder auch gelbliches Rot) hinten raus kommen.

SemolasP 3. Dez 2008 16:30

Re: Farbskala für eine Juliamenge ($1FFF)
 
Danke ... :thumb:


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:20 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz