Sonnenauf- & Untergang, Blaue Stunde - Berechnungen

CHDK-Skripte, CHDK-Entwicklung, PC-Zusatzprogramme, Informationen für Tüftler

Re: Sonnenauf- & Untergang, Blaue Stunde - Berechnungen

Beitragvon msl » 10.12.2012, 14:01

Hallo zusammen,

@Werner_O
da hast du ja ganze Arbeit geleistet. Ich sehe es ähnlich wie du. Für den Fotografen sind als Anhaltspunkte in erster Linie Sonnenauf- und Untergang sowie die bürgerliche Dämmerung interessant.

@Sinter
Wie immer sind deine Beiträge inspirierend, mal über bestimmte Dinge näher nachzudenken. Allerdings sollte nicht immer alles in ein Skript gepackt werden. Gerade Einträge in die Exif-Daten sind sehr komplex. Hier würde in jedem Fall gesondert agieren.

Diverse Sonnenstände lassen sich dann bestimmt auch über verallgemeinerte Formeln berechnen.

Deinen Hinweis zu separaten Daten habe ich mittlerweile integriert.


Es liegt eine überarbeitete Skriptversion vor: viewtopic.php?f=7&t=2976&p=26913#p26913

Hier ein Screenshot. Die Ergebnisse können sich sehen:
Bild

Geplant ist, dass man zusätzlich manuell Koordinaten eingeben kann. Außerdem sollen GPS-Kameras ihre aktuellen Standortdaten an das Skript übermitteln.

An dieser Stelle möchte ich rudi noch einmal für seine Grundlagenarbeit danken.

Gruß msl
Benutzeravatar
msl
Super-Mod
Super-Mod
 
Beiträge: 4567
Bilder: 271
Registriert: 22.02.2008, 11:47
Wohnort: Leipzig
Kamera(s): A720 1.00c
SX220 1.01a

Re: Sonnenauf- & Untergang, Blaue Stunde - Berechnungen

Beitragvon Sinter » 12.12.2012, 12:32

Hallo Msl,

vielen Dank für das beeindruckende Skript. So ein File-Handling ist tricky. Dein Ergebnis sieht vorbildlich gelungen aus.

Deine Planung der zusätzlichen manuellen Eingabe von Koordinaten wäre für nicht hinterlegte Orte sicher hilfreich. Ich überlege gerade was man machen kann, falls in einer Karte kein Koordinatennetz hinterlegt wäre und zu einem bestimmten Ort keine Koordinaten bekannt wären. Falls man aber anhand einer Karte zumindest erkennt, man befindet sich in einem Schnittpunkt bekannter Städte bspw. auf gleicher Breite wie Frankfurt, und gleicher Länge wie Hamburg, dann könnte man sich vielleicht orientieren, indem man den Breitengrad von Frankfurt einliest sowie den Längengrad von Hamburg. Allerdings wäre so ein kombiniertes Koordinaten-Auswahlverfahren innerhalb eines Skripts (zu) aufwendig. Im geo_data.txt-File sind jedoch einzig codierte Daten hinterlegt. Vielleicht sollte man noch einen File (Liste) mit uncodierten Ortskoordinaten ins Paket nehmen. Dann könnte man in so einer zusätzlichen Liste manuell nachsehen, an welchen bekannten Schnittpunkt-Koordinaten man sich orientieren kann, und diese Koordinaten dann manuell eingeben.

Auf alle Fälle ist beeindruckend, welche Features dank Rudis Tools nun möglich werden. Ebenfalls von meiner Seite ein Dankeschön auch an Rudi. Denn diese Grundlagen erschaffen bedeutende Werkzeuge für die Umsetzung weiterer Ideen.

Viele Grüße,
Sinter
Ixus 60 (SD600) Firmware 1.00a
CHDK-DE aktuelle Version
Benutzeravatar
Sinter
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 416
Bilder: 2
Registriert: 14.08.2009, 13:16
Wohnort: München

Re: Sonnenauf- & Untergang, Blaue Stunde - Berechnungen

Beitragvon msl » 13.12.2012, 23:38

Hallo,

es gibt wieder ein Update zum Skript: viewtopic.php?f=7&t=2976&p=26913#p26913

Prinzipiell werden jetzt alle Datensätze angefügt. So ist es möglich mehrere Dateien mit Datensätzen einzulesen. Das gleiche gilt für die neue Funktion zur manuellen Eingabe von Standortdaten. Hier werden die Daten über eine vorgegebene Eingabemaske eingefügt.

Neu ist auch die Möglichkeit des Löschens einzelner Datensätze.

Gruß msl
Benutzeravatar
msl
Super-Mod
Super-Mod
 
Beiträge: 4567
Bilder: 271
Registriert: 22.02.2008, 11:47
Wohnort: Leipzig
Kamera(s): A720 1.00c
SX220 1.01a

Re: Sonnenauf- & Untergang, Blaue Stunde - Berechnungen

Beitragvon Sinter » 19.12.2012, 13:44

Hallo zusammen,

besteht eigentlich die Aussicht, Winkelfunktionen in CHDK auch außerhalb von Lua zu nutzen, so dass Ergebnisse von Blaue-Stunde-Berechnungen irgendwann auch ohne Lua-Skript live (!) im Display angezeigt werden können, ähnlich wie die aktuelle Uhrzeit, Batteriestand etc.? Denn es wäre erfreulich, wenn sich die Funktionalität des Blaue-Stunde-Skripts direkt in CHDK implementieren lässt.

Viele Grüße,
Sinter
Ixus 60 (SD600) Firmware 1.00a
CHDK-DE aktuelle Version
Benutzeravatar
Sinter
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 416
Bilder: 2
Registriert: 14.08.2009, 13:16
Wohnort: München

Re: Sonnenauf- & Untergang, Blaue Stunde - Berechnungen

Beitragvon msl » 19.12.2012, 22:27

Hallo Sinter,

rudi hat im Zusammenhang Cordic-Algorithmus einen Patch für CHDK erarbeitet, der es ermöglicht, diese Winkelfunktionen auch intern in CHDK zu benutzen. In diesem Patch ist auch eine neue interne Lua-Bibliothek enthalten, die die Winkelfunktionen und weitere ergänzende mathematische Funktionen wie quadratische Wurzel und logarithmische Funktionen enthält. Damit wird eine externe Bibliothek überflüssig.

philmoz, führender CHDK-Entwickler, erarbeitet gerade umfangreiche Optimierungen, die die CHDK-Binärdateien deutlich verkleinern werden (ca. 30 bis 40 %). Wie immer kann man diese Arbeiten mitverfolgen: http://trac.assembla.com/chdk/browser/b ... lmoz-reorg

Da die Cordic-Erweiterung einiges an Platz benötigt, wurde sie von philmoz gleich in diesen neuen Entwicklungszweig eingearbeitet.

Wenn der Entwicklungszweig dann in das offizielle CHDK übernommen wird (vermutlich als CHDK-Version 1.3), stehen die neuen Funktionen inkl. der neuen Lua-imath-Bibliothek für alle bereit.

Dann stehen alle Möglichkeiten offen, Berechnungen wie die "Blaue Stunde" in die CHDK-Benutzeroberfläche zu integrieren. Allerdings plädiere ich dann dafür, dass dafür der CHDK-Kalender genutzt wird.

Gruß msl
Benutzeravatar
msl
Super-Mod
Super-Mod
 
Beiträge: 4567
Bilder: 271
Registriert: 22.02.2008, 11:47
Wohnort: Leipzig
Kamera(s): A720 1.00c
SX220 1.01a

Re: Sonnenauf- & Untergang, Blaue Stunde - Berechnungen

Beitragvon Sinter » 21.12.2012, 16:13

Hallo Msl,

vielen Dank für Deine ausführlichen Erläuterungen. Rudis Umsetzung neuer Features ist faszinierend. Sieht aus, als könnte man jetzt bereits die Gedanken spielen lassen, was sich damit zukünftig in CHDK einbauen lässt.

Viele Grüße,
Sinter
Ixus 60 (SD600) Firmware 1.00a
CHDK-DE aktuelle Version
Benutzeravatar
Sinter
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 416
Bilder: 2
Registriert: 14.08.2009, 13:16
Wohnort: München

Re: Sonnenauf- & Untergang, Blaue Stunde - Berechnungen

Beitragvon msl » 21.12.2012, 23:02

Hallo zusammen,

im Zusammenhang mit den Berechnungen rund um die "Blaue Stunde" spielt die Zeitzone eine wichtige Rolle. Da diese auch bei einer ganzen Reihe von Kameras einstellbar ist, stellt sich die Frage, ob man diese Daten auslesen und nutzen kann. Nach meinen Recherchen werden diese Daten im Parameterspeicher abgelegt. Scheinbar erfolgt dies einheitlich im Parameter 20.

In diesem Parameter 20 werden offensichtlich 8 Informationen gespeichert. 5 davon konnte ich bisher ermitteln.

Per Lua-Skript lassen sich die numerischen Werte auslesen. Die Ausgabe erfolgt im Hex-Format:
Syntax: [ Download ] [ Verstecken ]
Benutze Lua Syntax Highlighting
str = get_parameter_data(20)
if str then
    for i=1, string.len(str) do
        print(string.format("0x%02x ", string.byte(str, i)))
    end
end
Erstellt in 0.005 Sekunden, mit GeSHi 1.0.8.9


Es sind 32 Zeitzonen einstellbar. Die ermittelten Werte können wie folgt zusammengefasst werden:
Code: Alles auswählen
Parameter 20 mit 8 Einträgen

1. 0x00 32 Zeitzonen Richtung Osten (Standard)
2. 0x01 ?
3. 0x00 32 Zeitzonen Richtung Osten (Welt)
4. 0x01 ?
5. 0x00 Standard; 0x01 Welt
6. 0x00 Sommerzeit aus; 0x01 Sommerzeit ein (Standard)
7. 0x00 Sommerzeit aus; 0x01 Sommerzeit ein (Welt)
8. 0x00 ?

London       00:00          0x00     0
Paris       +01:00          0x01     1
Kairo       +02:00          0x02     2
Moskau      +03:00          0x03     3
Teheran     +03:30          0x04     4
Dubai       +04:00          0x05     5
Kabul       +04:30          0x06     6
Karachi     +05:00          0x07     7
Dehli       +05:30          0x08     8
Kathmandu   +05:45          0x09     9
Dacca       +06:00          0x0a    10
Yangon      +06:30          0x0b    11
Bangkok     +07:00          0x0c    12
Hong Kong   +08:00          0x0d    13
Tokyo       +09:00          0x0e    14
Adelaide    +09:30          0x0f    15
Sydney      +10:00          0x10    16
Solomon     +11:00          0x11    17
Wellington  +12:00          0x12    18
Chatham     +12:45          0x13    19
Samoa       -11:00          0x14    20
Honolulu    -10:00          0x15    21
Anchorage   -09:00          0x16    22
Los Angeles -08:00          0x17    23
Denver      -07:00          0x18    24
Chicago     -06:00          0x19    25
New York    -05:00          0x1a    26
Caracas     -04:30          0x1b    27
Santiago    -04:00          0x1c    28
Neufundland -03:30          0x1d    29
Sao Paulo   -03:00          0x1e    30
Fernando de Noronha -02:00  0x1f    31
Azoren      -01:00          0x20    32


'Standard' steht für die Einstellung, die man für den Heimatstandort vornimmt. 'Welt' soll als Reiseeinstellung benutzt werden. Nach meinen Erkenntnissen betrifft diese Einstellmöglichkeit nicht alle Kameras. Scheinbar verfügen alle SX-Modelle und viele Kameras der Ixus-Serie über diese Funktion. G- und S-Klasse sollten ebenfalls mit dieser Funktion ausgestattet sein - zumindest neuere Modelle. Bei der A-Klasse dürften es nur neuere Modelle mit 4-stelliger Nummerierung sein.

msl
Benutzeravatar
msl
Super-Mod
Super-Mod
 
Beiträge: 4567
Bilder: 271
Registriert: 22.02.2008, 11:47
Wohnort: Leipzig
Kamera(s): A720 1.00c
SX220 1.01a

Re: Sonnenauf- & Untergang, Blaue Stunde - Berechnungen

Beitragvon Sinter » 28.12.2012, 14:42

Hallo Msl,

bei den Zeitzonen überlege ich, ob man sich im Urlaub denn tatsächlich im Kamera-Menü die Urlaubsort-spezifische Zeitzone sucht, oder ob viele User nicht einfach nur die Zeit in der Kamera neu einstellen ohne explizit eine neue Zeitzone innerhalb der Kamera zu wählen.

Denkbar wäre vielleicht auch, die Zeitzone einfach als zusätzlichen Dateneintrag bei jedem Ort in deinen Geodaten-File zu integrieren.


Nebenbei: Dein Twilight-Skript klappt vorzüglich und wird immer komplexer. Vielleicht könnte man noch eine twilight.ini-Datei hinzufügen, die sich den zuletzt abgerufenen Ort deiner Liste „merkt“, so dass bei einem erneuten Aufruf von Twilight.lua nicht stets mit Berlin gestartet wird, sondern mit dem zuletzt gewählten Ort.

Viele Grüße,
Sinter
Ixus 60 (SD600) Firmware 1.00a
CHDK-DE aktuelle Version
Benutzeravatar
Sinter
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 416
Bilder: 2
Registriert: 14.08.2009, 13:16
Wohnort: München

Re: Sonnenauf- & Untergang, Blaue Stunde - Berechnungen

Beitragvon msl » 28.12.2012, 15:40

Hallo Sinter,

die Zeitzonen lassen sich bei neueren Kameras ziemlich bequem einstellen. Man hat eine Standardeinstellung, bei der man von der Home Zone sprechen könnte. Eine zweite Zeitzoneneinstellung dient für Reisen.

Das Skript habe ich hinsichtlich deines Wunsches schon erweitert. Man kann eine persönliche Datendatei als Startdatei benutzen, damit jeder seine individuellen Vorgaben eintragen kann.

Da sich das Interesse hier in Grenzen hält, habe ich mich aber entschlossen, Updates hier nicht mehr zu veröffentlichen. Dafür kann man die Weiterentwicklung jetzt auf dem Subversionskontrollsystem von Assembla, wo auch der Quellcode von CHDK liegt, mitzuverfolgen und bei Bedarf die aktuelle Skriptversion inkl. notwendiger Zusatzdateien herunterzuladen.

http://trac.assembla.com/chdkde/browser ... s/twilight

Mittlerweile habe ich die Darstellung komplett auf Draw umgestellt, sprich, es wird alles mit Zeichenfunktionen dargestellt. Das hat u.a. den Vorteil, dass man mit Farben arbeiten kann. Es gibt ein Jahresdiagramm zum Sonnenauf- und untergang. Man kann Koordinaten manuell eingeben und speichern.

Wahrscheinlich werden in Kürze die imath-Funktionen von rudi in die CHDK-Version 1.2 eingebaut. Dafür habe ich eine zweite Skriptvariante bereits vorbereitet. Der Geschwindigkeitsvorteil ist übrigens sensationell.

Gruß msl
Benutzeravatar
msl
Super-Mod
Super-Mod
 
Beiträge: 4567
Bilder: 271
Registriert: 22.02.2008, 11:47
Wohnort: Leipzig
Kamera(s): A720 1.00c
SX220 1.01a

Re: Sonnenauf- & Untergang, Blaue Stunde - Berechnungen

Beitragvon Sinter » 28.12.2012, 17:33

Hallo Msl, hallo Rudi,

das sind ja aussichtsreiche Nachrichten von euch, wie sich die Sache im Hintergrund weiterentwickelt.

Die geringe aktuelle Beteiligung bei dem komplexen Thema bereitet mir wenig Sorgen, denn die bisher von euch hart erarbeiteten Grundlagen eröffnen erst noch weitere Features. Das aktuell auf Draw umgestellte Skript muss ich mir in den nächsten Tagen ansehen. Ich begrüße die Umstellung auf Draw, denn auch ich habe bereits gewisse Vorstellungen, eure Berechnungen mittels Draw einzusetzen.

Offen gesagt hoffe ich, dass man die Draw-Darstellung bei Bedarf auch leichter für CHDK unmittelbar ins OSD umsetzen kann. Die Ansicht ist schon richtig, dass einiges der Thematik im CHDK-Kalender gut aufgehoben ist, aber ein paar künftige Features gehen demnächst über eine reine Kalenderanwendung hinaus. Sobald weitere zugehörige Features in Draw umgesetzt sind, können wir die optionale Übernahme ins OSD sicher ausführlicher diskutieren.

Viele Grüße,
Sinter
Ixus 60 (SD600) Firmware 1.00a
CHDK-DE aktuelle Version
Benutzeravatar
Sinter
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 416
Bilder: 2
Registriert: 14.08.2009, 13:16
Wohnort: München

Re: Sonnenauf- & Untergang, Blaue Stunde - Berechnungen

Beitragvon rudi » 30.12.2012, 18:48

Hallo msl,

dein "Twilight"-Skript hast du hervorragend umgesetzt. Optisch und funktional einfach Klasse!

Für die SX230 und SX260 können auch die GPS-Koordinaten benutzt werden. Nach dem Auslesen der Position und der Zeitzone werden die Daten wie bei einem Neueintrag behandelt. Damit ist es auch möglich den Namen noch anzupassen.

Für GPS-Kameras muss die gpsLib.lua in A/CHDK/LUALIB/ abgelegt sein.

Gruß rudi
Benutzeravatar
rudi
CHDK-Spezialist
CHDK-Spezialist
 
Beiträge: 510
Registriert: 11.09.2009, 11:27
Kamera(s): A590IS_101B, SX260_100B

Ein "Blaue-Stunde-OSD"

Beitragvon Sinter » 02.01.2013, 14:56

Hallo zusammen,

ich bin erst jetzt gerade dazu gekommen, die neue Version von Twilight korrekt runterzuladen. Die neue Version von twilight.lua ist beeindruckend. Klasse gemacht! Ein dickes Dankeschön an Msl und Rudi! So kann das gerne in den Kalender integriert werden.

An dieser Stelle vielleicht noch zum Vergleich der verschiedenen Kameragenerationen: Die Berechnung der grafischen Kurve im Diagramm dauert mit meiner Ixus60 16,97 Sekunden. Etwa Mitte März sind zweimals Ausreißerpunkte zwischen den roten und grünen Linien platziert. Ebenfalls ein Ausreißer etwa bei 20. September. Die drei Ausreißer können wir aber locker ignorieren.

Ich weiß nicht ob mir beim Einrichten der Dateien ein Fehler unterlaufen ist, beim Ladeversuch mittels Twilight.lua (mittels Set, Set) der GeoData1.txt kam bei mir die Fehlermeldung:
:163: attempt to get length of local 'description' (a nil value)

Auch TW_imath.lua habe ich probiert. Läuft bei mir (noch) nicht. Offenbar ist das die angekündigte Parallel-Version für die noch zu realisierenden Befehle von Rudi.


Mittlerweile von eurer Blauen-Stunde "infiziert" und auf den Geschmack gekommen, habe ich parallel dazu in den vergangenen Tagen ebenfalls schon gescriptet, um meinen eigenen Wunschvorstellungen eine Gestalt zu geben. Gerade musste ich noch mein Skript an die neue Erkenntnis anpassen, dass Msl für eine goldene Stunde bis +6° rechnet. Ich hatte bei meinem Skript zwar ebenfalls eine rötliche Sonnenauf-/untergangszeit berücksichtigt, allerdings nur bis +5°. Jetzt habe ich in Twilight.lua nachgesehen, eine goldene Stunde berechnet sich darin bis +6°. Daher habe ich gerade noch versucht, auch mein Skript an +6° statt ursprünglich +5° anzupassen. Ich hoffe, ich habe nichts übersehen.

Grundsätzlich geht es mir um eine Function für eine Art "Rund-um-Twilight-Live-OSD", mit der sich einige Live-Daten rund um die Blaue Stunde visualisieren lassen. Eine zu lösende Voraussetzung wäre noch, dass wir den Stand der Sonne gegenüber dem Horizont, also die Variable h, anhand der aktuellen Kamera-Uhrzeit (und den üblichen anderen Rahmendaten) berechnen. Da dies noch nicht vollständig gelöst ist, habe ich im Skript einen abnehmenden Sonnenstand erst mal nur simuliert um euch einen Eindruck über das Verhalten der live-OSD-Einblendungen je nach Sonnenstand zu geben. In dieser Simulation reduziert sich der Winkel der Sonne gegenüber dem Horizont pro Sekunde um ein halbes Grad. Die Sonne taucht in dieser Simulation vom Tageslicht bis zur Nacht.

Die Visualisierung erfolgt hauptsächlich in einem "Balken" am linken Bildrand.


Features:

Die Sonne wird von einer gelben Scheibe mit schwarzer Umrandung repräsentiert. Sie wird in einer Art "OSD-Balken" je nach Status platziert/verschoben.

Links über dem "OSD-Balken" steht die Ziffernanzeige des "aktuellen Sonnenwinkels gegenüber dem Horizont". Derzeit noch als Ganzzahl. (TODO: eine Dezimale müsste noch hinzugefügt werden.)

Der "OSD-Balken" repräsentiert im oberen Teil den Tageslichtzustand. Ganz oben rastet die Sonnenscheibe in eine oberste Position ein falls die Sonne mehr als +5° über dem Horizont steht.

Bei tiefstehender Sonne im Bereich 0° bis +5° wandert die Sonnenscheibe runter in den roten (analog Sonnenrot) Keilbereich mit kleinteiliger Skala. Jeder schwarze Querstrich entspricht einem Grad. (6 Pixel je Grad)

Wenn die Sonne den Horizont erreicht, taucht die Sonnenscheibe bei dem Skalenwert „0“ (=Horizont) in den Blaue-Stunde-Bereich ein, der deutlich gespreizter (20 Pixel je Grad) skaliert ist um den Intensitäts-Status der Blauen Stunde deutlich differenziert erkennbar anzuzeigen. Hier geht ein blauer Keil in einen grauen Keil nach unten über. Rechts von den Skalierungsstrichen kann man jeweils die zugehörige "Gradzahl unterhalb des Horizonts" ablesen. Auf ein Minuszeichen jeweils davor, habe ich zugunsten der Übersichtlichkeit verzichtet.
Die Platzierung der Sonnenscheibe erfolgt noch bis -6,5° in diesem weit gespreizten Maßstab und taucht unterhalb von -6° bereits in den untersten schwarzen Nacht-Bereich ein. Somit ist zugleich bei aufgehender Sonne gewährleistet, dass sich die Sonnenscheibe im Display bereits knapp vor Beginn der Bürgerlichen Blauen Stunde nach oben zu bewegen beginnt.

Steht die Sonne (nachts) noch tiefer als -6,5°, so rastet die Sonnenscheibe am unteren Ende des unteren schwarzen (Nacht-)Bereichs ein. Der OSD-Balken allein liefert dann jedoch keine Visualisierung des Sonnenwinkels. Hierfür dient dann das nun folgende Feature.

Eine aus der Sonnenscheibe "herausstrahlende" gelbe Linie (SunBeam) visualisiert generell (auch noch in der oberen und unteren Raststellung) in Verbindung mit einer zusätzlichen waagrecht eingeblendeten kurzen schwarzweißen Linie (die einen waagrechten Horizont repräsentiert), den Sonnenwinkel gegenüber dem Horizont. Das ist evtl. nützlich für all diejenigen Fälle, in denen die Sonne tiefer als -6,5° oder höher als 6° gegenüber dem Horizont steht, und der Winkel nicht aus der OSD-Balkenskala optisch ermittelbar ist.
Die korrekte Berechnung der Neigung des gelben Strahls ist noch nicht realisiert. Diese Simulation verwendet daher hilfsweise eine ähnlich anmutende Dummy-Berechnung, um den Sachverhalt mittels SunBeam erst mal ungefähr zu verdeutlichen.

Als Zahlenwerte werden zusätzlich die sieben Countdown-Zeiten und sieben absolute Ereigniszeiten für das Erreichen der vollen sieben Gradzahlen innerhalb der Blauen Stunde eingeblendet. In der Simulation nur schematisch jeweils mit identischen Dummywerten.

Eigentlich hätte ich diese Zeitwerte gerne ohne den etwas störenden massiven Blockhintergrund anzeigen wollen. Um die Zahlenwerte dennoch vom Bildhintergrund besser abzuheben, dachte ich, man könnte vielleicht für die Zeichen auch Schatten setzen indem man die Zeichen unmittelbar vorher um ein oder zwei Pixel versetzt in Schwarz (mit transparentem Hintergrund geschrieben hätte und danach die Zeichen überlappend drüberlegt. Allerdings scheinen die schwarzen Zeichen dabei mit jeder Pixelmatrix automatisch überschrieben/gelöscht zu werden. Insofern bleibt wohl doch nur die weniger elegante Lösung mit einem für jedes Zeichen kompletten Hintergrund in Form der etwas arg massiven rechteckigen Hintergrund-Pixelmatrix.

Vielleicht sollte ich den gelben Beam aus der Sonnenscheibe ebenfalls noch mit angelegten
schwarzen Linien vom Hintergrund deutlicher abheben.

Den gelben Strahl und auch die Zeitenwerte könnte man auch als zuschaltbare Optionen programmieren, welche der User bei Bedarf einer möglichst "vollkommenen Information" zuschalten kann. Denkbar wäre auch, den SunBeam ausschließlich erst außerhalb (!) der goldenen und blauen Stunde automatisch zuzuschalten. Vielleicht wäre dies die ansprechendste Lösung, um die eingeblendeten Zeitdaten nicht zu stören/übermalen.


Noch eine kurze technische Bemerkung: Das Skript verwendet die Variable h aktuell intern in Hundertstel-Grad. Also um den Faktor 100 skaliert. Eine RAD-Umrechnung ist aktuell nicht integriert.


TODOs:
Berechnung von h in Grad (DEG) anhand der aktuellen Uhrzeit der Kamera.
Berechnung des Countdown bis jeweilige Ereignisse (Erreichen einer bestimmten Gradzahl) in der Blauen Stunde.
Berechnung der Ereignisuhrzeit der jeweiligen Ereignisse (Erreichen einer bestimmten Gradzahl) in der Blauen Stunde.
Evtl. Färbung der Ereignis-Zeiten je nachdem ob schon vorbei (rot) oder erst künftig stattfindend (grün).
Bei den Zeiteinblendungen gelingen leider keine Schatten mittels vorherigem schwarzen Offset um ein oder zwei Pixel. Offenbar muss man daher mit leider stärker bildverdeckenden Kastenhintergründen arbeiten.




Es fehlt uns ja noch die Berechnung von h anhand der Kamerauhrzeit:
Falls ich mich nicht täusche, so lässt sich unser Gleichungssystem auflösen in die Gleichung:

sin (h)=((Zeitdifferenz*PI*cos(B)*cos(Deklination))/12+(sin(B)*sin(Deklination))

Vielleicht kann jemand dieses Ergebnis bei Gelegenheit bestätigen oder korrigieren.

Damit sind wir der Auflösung nach h hoffentlich näher. Jedoch muss die "Zeitdifferenz" noch unabhängig von h eingesetzt werden:
Hier wird es dann etwas undurchsichtig: Evtl. muss man noch zwischen Vormittag und Nachmittag unterscheiden? Vormittags müsste wohl gelten:

Zeitdifferenz=12-WOZ

Somit könnte man diese Zeitdifferenzformel oben in die Gleichung einsetzen.

Aber es müssten wohl auch noch MOZ und Zeitzone und Sommerzeit berücksichtigt werden, sowie ein Korrekturfaktor bezüglich des Längengrads. Wenn das gelöst wäre, dann könnten Rudis neue Winkelbefehle die Lösung für die Berechnung von h anhand der Uhrzeit in der Kamera zaubern.


Nebenbei: Wer die Einblendungen schön groß aus der Nähe betrachten mag, statt Lupe, eine normale Lesehilfebrille mit 2 oder 3 Dioptrien vereinfacht das genaue Verfolgen der Einblendungen aus der Nähe deutlich.

Kritik, Anmerkungen und weitere Gedanken sind gerne willkommen.

Viel Spaß beim Testen des simulierten "Rund-um-Twilight-Live-OSD",
Sinter
Dateianhänge
Visu_07.lua
Blaue-Stunde-OSD
(8.4 KiB) 404-mal heruntergeladen
Ixus 60 (SD600) Firmware 1.00a
CHDK-DE aktuelle Version
Benutzeravatar
Sinter
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 416
Bilder: 2
Registriert: 14.08.2009, 13:16
Wohnort: München

Re: Sonnenauf- & Untergang, Blaue Stunde - Berechnungen

Beitragvon msl » 02.01.2013, 17:39

Hallo Sinter,

Danke für den Testbericht. Der von dir festgestellte Fehler ist korrigiert. Er hatte sich bei den letzten Aufräumarbeiten eingeschlichen. Mittlerweile ist das Skript so umfangreich, dass ich nicht immer alle Funktionen überprüfen kann.

Deine Angabe zur Berechnungszeit ist interessant. Die A720 benötigt knapp 12 Sekunden. Bei der SX220 sind es dann nur noch 7 Sekunden. Hier sieht man deutlich die unterschiedliche Rechenleistung der verwendeten Prozessoren. Einen richtigen Geschwindigkeitsschub bringt dann aber integrierte imath-Funktion. Hier benötigt die SX220 nur noch 460 ms.

Edit: Die Ausreißer habe ich ebenfalls. Bei der imath-Version treten diese aber nicht mehr auf, was für genauere Algorithmen Dank C-Pogrammierung spricht.

Tw-imath.lua ist für diese neue CHDK-Version vorgesehen, die noch nicht als Autobuild-Version verfügbar ist.

Neu im Twilight-Skript ist eine Kalenderfunktion, die die Datumsauswahl ermöglicht. Als ToDo steht die Umstellung der UTC-Angaben von Stunden in Minuten an, damit man Zeitzonen auch im Minutenbereich berücksichtigen kann.



Deine Demonstration zum Sonnenstand ist imposant. Die grafische Darstellung macht dein Vorhaben verständlicher. Mit der Formelumstellung auf h habe ich mich noch nicht befasst. Das sollte aber gehen.

Die Zeichenfunktionen sind etwas tricky. Da muss man experimentieren, um herauszufinden, was geht. Bei einer Zeichenkette wird immer zwangsweise mit Hintergrundfarbe und Farbe für das Zeichen gearbeitet. Durch die Hintergrundfarbe ist dann eine Art Schattenfunktion nicht möglich.

Generell solltest du dir bei den Zeichenfunktionen für die Koordinaten Basiswerte festlegen, wie Bildschirmabmessung und Font-Größe.

Ich bin gespannt, wie sich dein Entwurf weiterentwickelt.

Gruß msl
Benutzeravatar
msl
Super-Mod
Super-Mod
 
Beiträge: 4567
Bilder: 271
Registriert: 22.02.2008, 11:47
Wohnort: Leipzig
Kamera(s): A720 1.00c
SX220 1.01a

Re: Sonnenauf- & Untergang, Blaue Stunde - Berechnungen

Beitragvon msl » 06.01.2013, 20:51

Hallo CHDK-Bastler,

hier nun ein paar Informationen zum Entwicklungsstand von twilight.lua, dem Skript rund um die Sonnenstände. Das Skript funktioniert nur mit einer aktuellen Revision der CHDK-Version 1.2.

Das Skript kann hier heruntergeladen werden: http://trac.assembla.com/chdkde/browser ... format=txt
Den Skript-Code kann man hier einsehen: http://trac.assembla.com/chdkde/browser ... ilight.lua

Zu dem gehören zwei Dateien mit Koordinaten diverser Städte. Diese Dateien gehören in den Ordner CHDK/DATA.
Datei1: http://trac.assembla.com/chdkde/browser ... format=txt
Datei2: http://trac.assembla.com/chdkde/browser ... format=txt

Die GPS-Kamera SX230 und SX260 benötigen zusätzlich die Lua-Bibliothek gpsLip.lua, die in den Ordner CHDK/LUALIB gehört. Dadurch können dann auch Standortdaten per GPS eingelesen werden.

Benutzerbeschreibung: http://trac.assembla.com/chdkde/browser ... /usage.txt

Das Skript sollte im Wiedergabemodus benutzt werden. Die Ausgabe erfolgt nicht wie üblich auf der Skriptkonsole. Es wird die Lua-Zeichenfunktion verwendet, um eine Art grafische Benutzeroberfläche (GUI) zu schaffen. Sollte diese aus den verschiedensten Gründen einmal nicht sichtbar sein, kann man sie durch Tastendruck wieder zurückholen.

Nachfolgend ein paar Screenshots. Sie zeigen eine 4:3-Darstellung auf einen 16:9-Bildschirm. Das Skript lässt auch eine 16:9-Darstellung zu, wenn die Kamera über einen solchen Bildschirm verfügt.

412 413
414 415
416 417

Zukünftige Versionen könnten beispielsweise eine zeitlich definierte Anbindung an ein Timelapse(Zeitraffer)-Skript und die Live-OSD-Idee von Sinter beinhalten. Weitere Ideen sind willkommen.

An dieser Stelle noch ein großes Dankeschön an rudi für die neuen mathematischen Funktionen im CHDK sowie die Zuarbeit zum Skript.

Gruß msl
Benutzeravatar
msl
Super-Mod
Super-Mod
 
Beiträge: 4567
Bilder: 271
Registriert: 22.02.2008, 11:47
Wohnort: Leipzig
Kamera(s): A720 1.00c
SX220 1.01a

Vielleicht noch eine Zusatzoption

Beitragvon Sinter » 07.01.2013, 17:29

Hallo Msl,

kann es an meiner „alten“ imath-CHDK-Version liegen?:
Das heute runtergeladene Skript bricht bei mir ab:
:632: attempt to index field ‚?‘ (a nil value)

Die heutige imath-CHDK-Version wäre ein Kilobyte kleiner. Daher habe ich noch die von letztens behalten.


Zum Skript selbst, vielleicht eine Zusatzoption, die sich aber von der Kalenderfunktion etwas entfernen würde:

Um das Skript möglichst wenig „bedienen“ zu müssen, falls man das Skript nachmittags aufruft, dann könnte es evtl. auch sinnvoll sein, gar nicht mehr die Daten der bereits zurückliegenden Morgendämmerung anzuzeigen, sondern einzig vorausblickend nur noch die Abenddämmerung des aktuellen Tages sowie die Morgendämmerung des morgigen Tages anzuzeigen. Ähnlich hast du es offenbar bereits in deinen „Informationen“ gelöst. Das ist schön nahe an den Bedürfnissen des Users.

Das könnte man auch als Option anbieten mittels eines optionalen „Floating“-Parameters. Der User könnte dann vorab einstellen, ob er die Kalenderfunktion bevorzugt und selbst jeweils auf den morgigen Tag schalten mag, oder ob ihm das Skript bereits ausschließlich die beiden zukünftigen (!) Ereignisse anzeigt.

Viele Grüße,
Sinter
Ixus 60 (SD600) Firmware 1.00a
CHDK-DE aktuelle Version
Benutzeravatar
Sinter
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 416
Bilder: 2
Registriert: 14.08.2009, 13:16
Wohnort: München

VorherigeNächste

Zurück zu Code-Ecke

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 23 Gäste