Schikos Senf
C++ ,  MFC Magische Auge    Home    Family    Laser    Bumerangs    Sonstiges    NoFrames   

Stereogramme alias "Das Magische Auge"

Magic 2 Mini C-Programm Links

Magic2

Magic2 Screenshot Als das Buch : "Das Magische Auge" erschien, habe ich alles stehen und liegen lassen, und mit Turbopascal rumgehackt bis ich auch ein 3D Bild auf dem Schirm hatte. Die ersten Tage waren noch recht mühsam. Ein Internet kannte ich nur vom Namen nach, und das Buch war die einzige Referenz auf Stereogramme, die ich überhaupt hatte. Algorithmen die "Schnee" erzeugen ließen sich gut betrachten und auch schnell programmieren. Ich wollte aber möglichst Fotos als Rasterbilder verwenden. Diese hatten aber nach dem Schneeagorithmus berechnet einige Nachteile: Sie erzeugen liebend gerne "Schattenbilder" durch ungewollte Wiederholungen der Pixel. Oder sie zeigen häßliche Abbruchkannten. Dann kam noch hinzu, daß ein Bild immer von links nach rechts berechnet wurde. Das hatte zur Folge, daß ein Foto immer nur an der Kante wie das Original aussah (unschön). Also mußte ich von der Mitte an nach außen rechnen, was mir aber nach einigen Fehlversuchen doch noch vernünftig gelang. Zum Schluß war Komandozeilen Programm fertig, das das Bild direkt auf den Drucker ausgabe ; Was hab ich mich mit den Epson ESC-Sequenzen rumgequält. Der grösste Nutzen, den ich aus der ganzen Hackerei dabei gezogen habe, war mein Umstieg auf C. Erst war es Borland, dann Microsof Visual C++ 1.0 . Das war noch grottenlangsam auf meinem 368er. Dann ist alles eingeschlafen, ich habe Bumerangs gebaut, und jetzt habe ich's wieder vorgekramt ;-)

Doku : ?.. If I only had time, only time ..la la zum hundertsten..
Zumindest für den Parser muß schnell etwas her..Also:
Syntax:
UPN, wie ein HP-Taschenrechner, siehe www.hp-sonstwas.com
zwischen jeder Zahl,Operator muß ein Leerzeichen sein.
Der maximale Spanne der Operationen mal "Ebenen" sollte nicht mehr als 1/2 Rasterbreite betragen
Sourcen: ? kommt noch ..


History
23.06.01: Speichern, Spiegeln, zoomen auch ohne Mousewheel, Wahl der Tiefenstufen, Parser liefert die angegebenen Höhestufen im Bereich (-1,1)

Magic2 Anwendung [266 kb]
Algorithmus Sourcen [3 kb]

Eierkarton-Waben
Berechnet mit folgenden Einstellengen:
Raster : vt500klein50.bmp
Parser : R 20 / cos hight 2 - Y 15 / - cos *
Ebenen : 4
Größe : 1107 x 100
3D-Effekt : Eierkarton-Waben


Mini C-Programm

Es geht auch ganz ohne Graphik in ANSI-C :-)
		
012345678901234567890123456789012345678901234567890123456789
012345678901234567890123457890122345789122345578912234557891
012345678901234567890123568901233556801335568800133556880013
012345678901234567890124578901245578902455789002245578900224
012345678901234567890124578901245789012457890112245789011224
012345678901234567890124578901245789012457890112245789011224
012345678901234567890123568901235689012356890011235689001123
012345678901234567890123467901234679012346799001234679900123
012345678901234567890123456891234568912345566891234556689123
012345678901234567890123456780134567801334456780133445678013
012345678901234567890123456789013467889901346788990134678899
012345678901234567890123456789012356778901235677890123567789
012345678901234567890123456789012345678901234567890123456789
012345678901234567890123456789012345678901234567890123456789
		
		
		
		
#include <stdio.h>
#include <string.h>

char* Tiefe = "\
                                                  \n\
                111111       111111               \n\
              1122222211   1122222211             \n\
             1122222222111112222222211            \n\
             1122222222222222222222211            \n\
             1122222222222222222222211            \n\
              11222222222222222222211             \n\
               112222222222222222211              \n\
                 11222222222222211                \n\
                   1122222222211                  \n\
                      1122211                     \n\
                        111                       \n\
                                                  \n\
                                                  ";

char* Muster = "0123456789";
void PutLine( int nLine, char* szTiefe, char* szMuster )
{
   char szLine[100];
   char cNextUnused='A';
   char* p;
   int   i,n,nTiefe;
   int   nNull;
   strcpy(szLine,szMuster);
   nNull = strlen(szLine);
   for( i=0,p= szLine + nNull ; szTiefe && szTiefe[i] && (szTiefe[i] !='\n') ;i++,p++)
   {
      nTiefe = (szTiefe[i]==' ')?0:szTiefe[i]-'0';
      *p = *(p+nTiefe-nNull) ? *(p+nTiefe-nNull) : cNextUnused++;
   }
   *p = 0;
   if(*szTiefe)
   {
      printf(szLine);printf("\n");
      PutLine( ++nLine, szTiefe + i + 1,szMuster );
   }
}
int main(int argc, char* argv[])
{
   PutLine(0,Tiefe,Muster);
   return 0;
}
		
		

Verspätete Weihnachtskarte

Für alle diejenigen, die keine Anhänge in den Mails erlauben, ist hier noch mal das Bild :-)

Fünfter Advent

Links zu anderen Stereogramm-Seiten:


www.alc-wbc.com Ein französche Version
stereograph.sourceforge.net Für Linux. Der Algorithmus rechnet auch ab Bildmitte !


seit 13.06.01:
Counter
Top Mail: Schiko@Schikos.de.