summaryrefslogtreecommitdiff
path: root/support/latexdraw/bin/ldtortendiagramm
blob: 634c9c6a87971178a69711841c05f11d6a3f05f3 (plain)
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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
#!/bin/ksh
#!/bin/ksh
# Erzeugung Tortendiagramm als LaTeXdraw-Datei
# Information, die nachfolgend in einer Zeile, muss auch in der
#      Eingabe-Datei in einer Zeile sein 
# Trennzeichen zwischen Eingabeeinheiten in einer Zeile ist der Zwischenraum
# Falls nur eine Einheit in einer Zeile verlangt wird, koennen auch
#      Zwischenraeume in der Einheit sein
# Eingabe ueber stdin, Ausgabe ueber stdout
# Leerzeilen werden ueberlesen
# Kommentarzeilen (mit # oder % beginnend) werden ueberlesen
# stdin: unterschrift
#        text1 wert1
#        text2 wert2
#        usw
#        falls Schluesselwort farbig allein in Zeile auftritt
#           wird farbiges Diagramm erzeugt
#        falls Schluesselwort Folie allein in Zeile auftritt,
#           wird die Schrift als 18pt-Schrift erzeugt 
#           (Makro \FXVIIIpt) 
#        falls Schluesselwort Anmerkung allein in einer Zeile
#           auftritt, werden alle folgenden Zeilen als Anmerkungen
#           betrachtet und nach der Bildunterschrift zeilenweise
#           ausgegeben
# stdout:LaTeXdraw-Datei, die in latexdraw eingelesen werden kann
# Stand 6.3.96 Siegert

# Dimension ggf durch xpixel und ypixel aendern
# Farben durch andere Zuweisung von Werten an farbe[] aenderbar
# Farbnummern aus LaTeXdraw
# Farben spaeter auch durch chatt in LaTeXdraw aenderbar
# Farben werden im Diagramm ggf. zyklisch wiederholt

awk 'BEGIN{rpixel=125; rmm=40; xmpixel = 500; ympixel = 300;
           schwarz=0;grau90=2;grau80=3;grau70=4;grau60=5;
           grau50=6;grau40=7;grau30=8;grau20=9; grau10=10;
           rot=11; gruen=29; blau=33; magenta=36;orange=27; 
           gelb=15; cyan=32; hellgruen=44; hellblau=52;

           farbe[1]=schwarz;farbe[2]=grau80;farbe[3]=grau60;
           farbe[4]=grau40;farbe[5]=grau20;farbe[6]=grau90;
           farbe[7]=grau70;farbe[8]=grau50;farbe[9]=grau30;
           farbe[10]=grau10; 
           anzfarben=10;
           farbe[11]=gruen;farbe[12]=blau;farbe[13]=rot;
           farbe[14]=magenta;farbe[15]=orange;farbe[16]=cyan;
           farbe[17]=hellgruen;farbe[18]=hellblau;
           farbe[19]=gelb;
           anzffarben=9; 

           summe=0; unterschrift=""; schrift=1; i=0;
           anzanm=0; istanmerkung = 0; } 
     {if (NF==0) next; 
      if (substr($0,1,1)=="#") next;
      if (substr($0,1,1)=="%") next;
      if (istanmerkung == 1) {anzanm++; anmerkung[anzanm]=$0; next;}
      if ((NF==1)&&($1=="farbig")) {
          for (k=1;k<=anzffarben;k++) farbe[k]=farbe[k+anzfarben];
          anzfarben=anzffarben; next;}
      if ((NF==1)&&($1=="folie")) {schrift=6; next;}
      if ((NF==1)&&($1=="Folie")) {schrift=6; next;}
      if ((NF==1)&&(substr($1,1,9)=="Anmerkung")) {
          istanmerkung = 1; next;}
      if ((NF==1)&&(substr($1,1,9)=="anmerkung")) {
          istanmerkung = 1; next;}

      if (i==0) {unterschrift = $0; i++; next; } 
      gruppe[i] = $1; wert[i] = $2; i++; summe = summe + $2; } 
     END{  wend=900;
           xupixel = xmpixel-1.4*rpixel; yupixel = ympixel-1.6*rpixel;
           print "LaTeXdraw (Siegert, TUM, C14.14)Digi";
           printf(" %.3f (TEXFAKTOR) \n", rmm/rpixel );
           print " 2.00000E+00  (TEXDASHLAENGE)";
           print " 1.80000E+00  (TEXDOTGAP)";
           print " 8.00000E-01  (TEXINTERDOTGAP)";
           print " 16.667 16.667 562.800 295.000 1.000 0.000 0.000 1.000  (GITTERWERTE)";
           print " 446 295 547 411 101 116 160 240 1 1 (AUSGABEOPTIONEN)";
           m = 1;
           for (k=1;k<i;k++) {
             wanf=wend-wert[k]*3600/summe;
             if (wanf<0) wanf += 3600;
             printf("15 %s %s  0 0 0 0 0 0 %.3f %.3f %d01 0 1 %s %s 0.000 \n", \
               xmpixel,ympixel,wanf,wend,farbe[m],rpixel,rpixel);
             dw = (wend-wanf);
             if (dw < 0) dw +=3600;
             wmittel = wanf+dw/2.0;
             if (wmittel >= 3600) wmittel -= 3600;
             vzc = 1; vzs = 1; tausch = -1;
             if (wmittel >=1800) {wmittel -= 1800; vzc = -1; vzs = -1;}
             if (wmittel >=900) {wmittel -= 900; tausch = -tausch; 
                                x = vzc; vzc = vzs; vzs = -x;}
             if (wmittel >450) {wmittel = 900-wmittel; tausch = -tausch;
                                x = vzc; vzc = vzs; vzs = x;}
             wmittel = wmittel/1800*3.14159;
             wq=wmittel*wmittel;
             sini = vzs*(wmittel*(1-wq/6*(1-wq/20*(1-wq/42*(1-wq/72)))));
             cosi = vzc*(1-wq/2*(1-wq/12*(1-wq/30*(1-wq/56))));
             if (tausch >0) {x=cosi; cosi = sini; sini = x;}
             xtpixel = xmpixel+1.2*rpixel*cosi;
             ytpixel = ympixel+1.2*rpixel*sini;
             richtung=" 4 0 ";
             if (xtpixel < xmpixel) richtung = " 9 2 ";
             printf("2 %s %s  0 0 0 0 0 0  0 3600 1 2 %d %s 0 \n", \
                     xtpixel,ytpixel, schrift, richtung);
             printf("%2.1f\%%  %s\n", wert[k]/summe*100, gruppe[k]);
             wend=wanf;
             m++;
             if (m>anzfarben) m -= anzfarben;
           }
           printf("2 %s %s  0 0 0 0 0 0  0 3600 1 2 %d 4 0 0 \n", \
                   xupixel,yupixel,schrift);
           print unterschrift;
           dy =20;
           yakt=yupixel-dy/2;
           for (j=1;j<=anzanm;j++) {
             yakt -= dy;
             printf("2 %.3f %.3f  0 0 0 0 0 0  0 3600 1 2 %d 4 0 0 \n", \
                     xupixel,yakt,schrift);
             print anmerkung[j]; }
           print "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ";
           print "0 ";
           print "0 0 ";
           print ;
        }'