                                             
                   F. Fiala
                
                            

De Clu sol ei charakteristische Symbo haben Kei tierisc 
ernstes.

Di Schle habe unbewu ei tierische abe kei ernste abe 
doc kritische gezeichne welches au di Tafe gemalt di noc 
relati unkritische Freud be da neu Spielzeu Compute aus
drckte 

De Hun mu i seine Wese nich nhe beschriebe werden E is 
j bekannt Di bekannte 'Projekt-Phasen beginne j auc irgend
w mi de Begeisterung Vielleich knne wi de Umstnde ent
sprechen ander Symbol finden di de jeweilige Clubzustan 
besse beschreiben 

Da Symbo sollt zu ED auc ein Verbindun haben Als sollt 
e durc ei Zeichenprogram gemal werden Da hie vorgestellt 
einfach Zeichenprogram is ei Vorschla f di Konzeptio vo 
Zeichenprogrammen E besteh au 

      Zeicheprogram  Analysier di Zeichnun  (ZEICHNE.PAS)
     * Unterprogrammsammlung der Zeichenelemente  (FIGUR.P)
       (hier nur Unterprogramm Ellipse) 
     * Zeichnung                                  (ODIE.DAT)
       (Folge von Ellipsen)

Da Zeichenprogram lies ein Date (Zeichnun  rein ASCII-
Datei di mi eine Edito geschriebe wurde un interpretier 
di Zeilen.

Jed Zeil de Zeichnun is ei z zeichnende Elemen (Gerade 
Kreis Punkt...) Di Ar de Elemente is durc de Anfangstex 
gegebe (hie einbuchstabig) Diese Text de da Zeichenelemen 
beschreib folg ein Argumentenliste di di zu Zeichne erfor
derliche Element enthl (Bei Kreis Mittelpunkt Radius) Di 
Element sin durc Beistrich getrennt Leerzeiche stre nicht 
Da Zeiche '/ kndig an da de Res de Zeil ein Anmerkun 
ist.

procedure Teil (var z:string80;var Wert:real);
   Ein: z:numerische Zeichen, durch Beistriche getrennt
   Aus: z:wie Ein, nur erster Wert entfernt und in 'Wert' umgewandelt
        Leerzeichen unkritisch
procedure Leerraum (z:string80);
   Ein z:numerisch Zeichen durc Beistrich getrennt
   Aus: z:wie Ein, Leerzeichen entfernt
procedure Paint (z:string80);
   Zeichnet ein Element (= eine Zeile) aus der Zeichnung

Di Darstellun vo Zeichnunge i diese Ar wir brigen auc 
von groen Grafikprogrammen (wie z.B. ACAD) hnlich ausgefhrt. 
.pa
(****************************************************************)
procedur E (xm,ym,l,b,wa,we,w:real) (  Dateinam   FIGUR. *)
(****************************************************************)
(*
   xm,ym    : Mittelpunktskoordinaten
   l,b      : Lnge, Breite
   wa,we    : Anfangs- und Endwinkel in Grad
   w        : Drehungswinkel in Grad
*)
   var
      x,y,xw,yw,xa,ya,phi:real;
      i,count: integer;
   const
      pi:real=3.1415;
      step:real=5.0;
      ymax=200;
   begin
      phi:=wa*pi/180;
      x:=cos(phi)*l;
      y:=sin(phi)*b;
      w:=pi*w/180;
      xa:=xm+x*cos(w)-y*sin(w);
      ya:=ymax-(ym+x*sin(w)+y*cos(w));
      count:=Round((we-wa)/step);
      for i:=1 to count do begin
         phi:=(wa+i*step)*pi/180;
         x:=cos(phi)*l;
         y:=sin(phi)*b;
         xw:=xm+x*cos(w)-y*sin(w);
         yw:=ymax-(ym+x*sin(w)+y*cos(w));
         Draw(Round(xa),Round(ya),Round(xw),Round(yw),3);
         xa:=xw;ya:=yw;
      end;
   end;

(* Hauptprogramm zum Testen der Prozedur Ellipse
begin
   GraphMode;
   El (100,100,100,50,36,136,0);
   ReadLn;
   TextMode
end.
*)

.pa
(****************************************************************)
program zeichnen;                     (* Dateiname: ZEICHNE.PAS *)
(****************************************************************)

(*$C+,U+ *)
(*$I figur.p *)

type
     string80=string(.80.);
const
     TEST=false;
     mul=6;
     xmul=4;ymul=6;
     xmax=320;ymax=200;
var
     xo,yo:integer;
     f:text;
     z:string80;

(****************************************************************)
procedure Teil (var z:string80;var Wert:real);
(****************************************************************)
     const
          TEST=false;
     var
          l:string (.10.);
          i,error:integer;
     begin     l:='';
               i:=1;
          while not ((i>Length(z)) or (Copy(z,i,1)=',')) do 
          begin
             l:=l+Copy(z,i,1);
             i:=i+1
          end;
          z:=Copy(z,i+1,255);
          while Copy(l,1,1)=' ' do l:=Copy(l,2,255);
          Val (l,Wert,error);
          if TEST then WriteLn (l:5,error:3,Wert,z:30)
     end;
     
(****************************************************************)
procedure Leerraum (z:string80);
(****************************************************************)
     begin
        while not (Copy(z,1,1)<>' ') do 
          z:=Copy(z,2,255)
     end;
.pa     
(****************************************************************)
procedure Paint (z:string80);
(****************************************************************)
     const
          TEST=false;
     var
          Kurve            :string(.2.);
          xm,ym,l,b,wa,we,w:real;
     
     begin
          if TEST then WriteLn (z);
          if (z=' ') or (Length(z)=0) then Exit;
          Leerraum (z);
          if Copy (z,1,1)='/' then Exit;
          if Length (z)<2 then exit;
          Kurve := Copy (z,1,1);
          Kurve := UpCase (Kurve);
          if TEST then WriteLn (Kurve);
          z := Copy (z,3,255);
          if TEST then WriteLn (z);
          case Kurve of
          'E':begin
               Teil (z,xm);
               Teil (z,ym);
               xm:=(xm*mul)+xo;ym:=(ym*mul)+yo;
               Teil (z,l);
               Teil (z,b);
               l:=l*mul;b:=b*mul;
               Teil (z,wa);
               Teil (z,we);
               Teil (z,w);
               if TEST then WriteLn (xm,ym,l,b,wa,we,w)
                       else El (xm,ym,l,b,wa,we,w);
              end;
          end; (* case *)
     end;
     
(****************************************************************)
begin (* Hauptprogramm *)
     xo:=Round(xmax/2);yo:=Round(ymax/2);
     Assign (f,'ODIE.DAT');
     Reset (f);
     TextMode;
     if not TEST then GraphMode;

     while not eof (f) do begin
          ReadLn (f,z);
          if TEST then WriteLn(z);
          Paint (z)
     end;
     ReadLn;
     TextMode
end.
(****************************************************************)
.pa
/****************************************************************
/ODIE-ZEICHNUNG                    Dateiname: ODIE.DAT
/****************************************************************

/Augen /1                          /Rcken /28                     
e,-2.7,4.9,1.1,0.6,  0,360,35      e,5,-10.9,2.4,1.2,-15,195,-90   
e,-3.4,5.3,1.1,0.6,-10,210,35      /Hinterbeine /29                
e,-3.3,4.5,0.4,0.2,  0,360,35      e,3.5,-14.2,1.5,1,120,420,0     
e,-4  ,4.8,0.4,0.2,  0,360,35      e,1.7,-13.2,1.5,1,160,380,-90   
/Nase /5                           e,2.7,-10.9,1.1,0.8,0,180,50    
e,-4,  2,2.2,2.2,   90,180,0       /Vorderbeine /32                
e,-4,  2,2.2,1.3,  180,360,0       e,-1.9,-13.4,1,1,0,180,90       
e,-6,  3,0.8,0.3,    0,360,35      e,-1.9,-13.4,3,1,270,345,0      
/Zhne /8                          e,-0.5,-10.5,1.3,0.6,0,180,45   
e,-1.1,2.3,0.7,0.5,180,360,0       e,-2.5,-12.6,1.6,1.4,0,210,45   
e, 0.4,2.3,0.8,0.5,180,360,0       e,-4.3,-11.5,1.1,0.9,-20,200,90 
/Kopf /10                          e,-3.4,-10.1,1.2,0.7,90,200,0   
e,0  , 0,6.2,3.2, 90,210,-120      e,-3.4,-10.8,1.2,1.4,0,90,0     
e,5.8,-3,6.7,3.2,270,395,-120      /Brust                          
/Mund /12                          e,-3,-8.5,1.9,3,295,380,0       
e,-1.4,-2,5.5,1.4,0,140,-90                                        
e,-1.4,-2,5.5,2  ,0,140,-90        /Tropfen /40                    
/Zunge /14                         e,-7.5,-14,0.5,0.3,180,360,0    
  /Spitze                          e,-7,-14,3,1.0,25,90,90         
e,-5.7,-7.6, 2.5,1.7,90,290,70     e,-8,-14,3,1.0,270,335,90       
  /Oben                                                            
e, 1.4,-9.8,11.3,9.1,35, 90,70     /Schwanz /43                    
  /Unten                           e,5.6,-5.3,4.7,1.7,50,160,240   
e, 2.4,-6.7, 8  ,6  ,45,110,70     e,5.6,-5.3,4.7,3,90,120,240     
                                   e,5.6,-5.3,4.7,4.4,70,140,240   
/Ohr rechts /17                    e,8,-7,4.7,2.5,70,100,60        
e,-7,  6.3,6.1,1.7,  0,95,15       e,8,-7,4.7,3.5,70,120,60        
e,-2,  7.6,1,  1.5,270,360,15
e,-7.7,9.2,3.6,1.4,180,270,15
e,-7.7,9.2,3.6,2.8,90,180,15
e,-2,9,2,4,300,380,15
/Ohr links /21
e,-3.5,11.5,5.2,2.3,90,180,0
e,-5.5,11.5,3.2,1.6,180,330,0
e,-1.5,8.9,3.4,2.0,0,100,15
e,-1.5,8.9,3.4,2.8,250,360,15
e,-3.5,10.5,6.2,3.3,0,90,0
e,0,10.5,2.7,4.7,270,360,0
.pa
