Beleuchtungstabelle berechnet

Der Fotograf braucht sowas heute wohl nicht mehr, die Kamera erledigt alles automatisch. Wer mit Beleuchtungen zu tun hat für den ist es durchaus interessant zu wissen vieviel Beleuchtungsstärke man für bestimmte Fotoaufnahmen benötigt um die Lichttechnik zu dimensionieren. Deshalb ist diese Tabelle nicht, wie in der Fotografie üblich, in Lichtwerten, sondern in Beleuchtungsstärke. Wenn man z.B. weiss dass direkte Sommersonne ca. 100 kLux erzeugt sieht man aus dieser Tabelle welche Blichtungskombinationen damit möglich sind.

Das Beispiel zeigt schön wie man die Schriftfarbe und die Hintergrundfarbe den Werten anpassen kann. Gnuplot erzeugt eine CSV Datei mit den Datenwerden und erzeugt dann daraus die Grafik.

Tabelle mit Beleuchtungsstärke aus Blenden/Zeit-Kombinationen

Skript Download

#!/usr/bin/gnuplot
#                ©2019 Joachim Schwender
# Erstellt eine Tabelle mit den Beleuchtungsstärken in Lux
# als Zeile die Beliechtungszeiten und
# als Spalten die Blendenwerte
# Die Tabellenfelder sind mit einer Farbpalette eingefärbt die die Beleuchtungsstärke repräsentiert.
# Die Werte werden berechnet und in eine Tabelle geschrieben
# und anschliessend zum plotten wieder aus dieser Tabelle gelesen.
#
print "generiert Zahlentabelle der Beleuchtungsstärke zur Darstellung in Gnuplot"
#
BN='BeleuchtungsTabelle'
#CSV=sprintf("%s%s",BN,'.csv')
CSV=BN.'.csv'
PDF=BN.'.pdf'
PNG=BN.'.png'
set print CSV   # Ausgaben für print Befehl in Datei leiten
       ISO = 100.0             # ISO Zahl der Empfindlichkeit
  GrauWert = 0.18              # Reflektionsgrad für Grauwert (18%)
     Koeff = 0.43958
#   Werte für die Tabelle, man könnte die Zahlenfolge auch berechnen...
Blendenreihe="1 1.4 2 2.8 4 5.6 8 11 16 22 32" 
#   Diese Zahlenfolge lässt sich nicht einfach berechnen da Rundungen drin sind.
Zeitreihe="1 2 4 8 15 30 60 125 250 500 1000 2000 4000 8000 12500 16000 32000"  
#
Xmax=0   # maximalwert der X-Koordinaten der Tabellen-Zellen vor dem Hochzählen mit Startwert belegen
Ymax=0   # maximalwert der Y-Koordinaten der Tabellen-Zellen vor dem Hochzählen mit Startwert belegen
#
do for [y=1:words(Blendenreihe)] {
    do for [x=1:words(Zeitreihe)] {
            Blende = word(Blendenreihe,y)
              Zeit = word(Zeitreihe,x)
       Beleuchtung = Koeff / GrauWert * 100.0 / ISO * Blende**2.0 * Zeit
          Farbwert = log(Blende**2.0 * Zeit)
       print x, " ",y , " ", Farbwert, " ", Blende, " ", Beleuchtung
       Xmax=x   # Maximalwerte merken
       Ymax=y
    }
}
#
set print # Ausgaben mit print wieder auf die Konsole leiten
#
print "schreibe die PDF Datei."
#
set terminal pdf enhanced font 'arial,16' size 29.7cm,21cm
set output PDF
set size 0.9,0.5
set origin 0.05,0.30
set decimalsign locale
unset key    # Legende würde stören
set view map
set style data linespoints
set xtics border in scale 0,0 mirror norotate  offset character 0, 0, 0
set ytics border in scale 0,0 mirror norotate  offset character 0, 0, 0
#set ztics border in scale 0,0 nomirror norotate  offset character 0, 0, 0
set nocbtics
set title "Erforderliche Beleuchtungsstärke E_V in Lux für Kombinationen aus Blende und Belichtungszeit" \
     font ",24"
set xrange [ 0 : Xmax+1 ] noreverse nowriteback
set yrange [ 0 : Ymax+1 ] noreverse nowriteback
set xtics out("" 0)   # xtics löschen
do for [n=1:words(Zeitreihe)] {
    set xtics out add (sprintf("1\n—\n%s",word(Zeitreihe,n)) n)
}
set ytics out ("1" 1, "1,4" 2, "2" 3, "2,8" 4, "4" 5, "5,6" 6, \
      "8" 7, "11" 8, "16" 9, "22" 10, "32" 11, "Blende f" 12) tc rgb 'brown' font ",20"
#set palette model HSV; set palette rgb 3,2,-2
#set palette rgbformulae -3, -24, 12
#set palette model XYZ functions gray**0.42+0.5, gray**0.2, 1
set palette model HSV functions 1.0-gray, 0.8-gray, 1
#set palette gray
#set palette rgbformulae 3, -11, -6
#set palette rgbformulae 13, 1.24, 2.01
#set palette gray negative
unset key
unset colorbox
set label sprintf("E_V = k * %1.0f/ISO * f² / t   ; mit k=%1.6f / %2.2f ;\
       E_V in Lux; Werte für die Empfindlichkeit 100 ISO",ISO,Koeff,GrauWert) at 2,-3
plot CSV using 1:2:3 with image, \
 ''                 using 1:2:(($5 > 10000000) ? gprintf("%.0s %c",$5) :\
			       ($5 > 1000000) ? gprintf("%.1s %c",$5) :\
                               ($5 > 100000) ? gprintf("%.0s %c",$5) :\
                               ($5 > 10000) ? gprintf("%.0s %c",$5) :\
                               ($5 > 1000) ? gprintf("%.1s %c",$5) :\
                               ($5 > 100) ? gprintf("%.0s %c",$5) :\
                                gprintf("%.1s %c",$5)):($3) with labels center tc variable font ",20"


set terminal png enhanced font 'arial,10' size 1600,800
set output PNG
set size 0.93,0.93
set origin 0.05,0.04
replot