Nach einigem Nachdenken bin ich zu dem Schluss gekommen, dass die Potenzfunktion in dem Fall auch nicht allzu viel hilft, da in CHDK-Lua nur Ganzzahl-Berechnungen verfügbar sind.
Aber es gibt trotzdem einen einfachen Weg, die Umrechnung einfach und genau hinzubekommen.
Ich habe einfach die Umrechnungsfunktion so skaliert, dass zum Schluss der Blendenwert*1000000 herauskommt und dann das Ganze durch ein Polynom 2. Ordnung approximiert. Dann wird noch durch 1000 dividiert, damit das Ergebnis nicht gar so groß ist.
Die Funktion liefert also aus dem Wert, den die Kamera-Funktion get_av96 zurückgibt, den Blendenwert * 1000.
Die eigentliche Funktion ist herzhaft kurz:
-- Blendenberechnung aus Apex96-Blende
-- Die theoretische Umrechnung lautet: Blende = 2 ^ (Av96/192)
-- z.B. Apex96=6*96=576 ergibt: Blende = 2 ^ (576/192) = 2 ^ 3 = 8
function av1000
(apex96
) -- Apex96 wird in 1000x echte Blende umgerechnet
-- Approximation durch quadratische Gleichung:
-- Blende * 1000000 = k2 * apex96 ^ 2 + k1 * apex96 + k0
k2
= 33 k1
= -
9648 k0
= 2998100 -- Koeffizienten
return (apex96
* apex96
* k2 + apex96
* k1 + k0
) / 1000
end
-- Ein paar Beispiele (halbe Blendenstufen):
print("Bl 2,8:", av1000
(288))
print("Bl 3,4:", av1000
(336))
print("Bl 4,0:", av1000
(384))
print("Bl 4,8:", av1000
(432))
print("Bl 5,6:", av1000
(480))
print("Bl 6,7:", av1000
(528))
print("Bl 8,0:", av1000
(576))
Erstellt in 0.007 Sekunden, mit
GeSHi 1.0.8.9
Die Ausgabe:
Bl
2,
8:
2873
Bl
3,
4:
3369
Bl
4,
0:
4011
Bl
4,
8:
4802
Bl
5,
6:
5739
Bl
6,
7:
6825
Bl
8,
0:
8057
*** BEENDET ***
Erstellt in 0.001 Sekunden, mit
GeSHi 1.0.8.9
Wie man sieht, gibt es kleine Abweichungen. Die stammen zum größten Teil daher, dass die üblichen Blendenwerte z.T. nur Näherungen sind. Z.B. Blende 2,8 ist in Wirklichkeit der Wert 2*Wurzel2=2,828... Der Fehler durch die Approximation liegt für alle Werte unter 1%, was für den Zweck mehr als ausreichend ist.
Der nächste Schritt für mich ist, hieraus einen Ersatz für die fehlerhaften Funktionen get_dof und get_hyp_dist zu berechnen - folgt demnächst.
Gruß
elektronikfreak