PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : 3D-Karte unserer Milchstraße



Seiten : [1] 2

Bernhard
06.08.2011, 09:09
Hallo zusammen,

ich habe es im Nachbarthema (http://www.astronews.com/forum/showthread.php?5102-Sonnensystem-Position-der-Planeten&p=78522#post78522) ja bereits erwähnt und möchte es hier gerne vertiefen. Wie wäre es mit einem Gemeinschaftsprojekt zur Entwicklung einer 3D-Karte unserer Milchstraße? Dass so etwas für die Raumfahrt ziemlich sinnlos ist, ist mir dabei durchaus klar, trotzdem halte ich den Unterhaltungswert eines solchen Projektes durchaus für groß.

Man braucht dazu "nur" die Position der Sterne und Objekte und deren Entfernungen. Viele dieser Angaben finden sich bei den bekannteren Objekten bereits in der Wikipedia und mit etwas Hilfe kann man vermutlich auch bereits vorhandene, freie Kataloge verwenden. So reicht die Angabe der Rektaszension, Deklination und Enfernung (in Lichtjahren) aus, um die dreidimensionale Position festzuhalten.

Ausgehend von Runzelrübes Link (http://www.sternkun.de/galaxy/) bräuchte man noch die Möglichkeit komfortabel zu zoomen und nach Objekten über deren Bezeichnung zu suchen.

In der vollen Ausbaustufe stelle ich mir dann im Überblick einen 3D-Blick auf die gesamte Milchstraße vor.


Man erkennt grob die Spiralarme und das Halo der Kugelsternhaufen
Über die Suche findet man die galaktischen Objekte des Messier-Katalogs und die bekannteren Objekte des NGC-Katalaogs u.v.a.
Über einen Button findet man einige bekannte Neutronensterne
Ein Button verbindet diejenigen Sterne, die unsere bekannten Sternbilder bilden
Über das Zoom kann man die nähere Umgebung unseres Planetensystems erkunden
Kennzeichnung der Sterne mit Exoplaneten
usw.

Beste Grüße

FrankSpecht
06.08.2011, 10:07
Hallo, Bernhard,

meinst du so etwas wie das Open-Source-Projekt "celestia (http://www.shatters.net/celestia/)"?
Da ist fast alles drin, was du dir oben vorstellst.

Bernhard
06.08.2011, 10:22
Da ist fast alles drin, was du dir oben vorstellst.
Hallo Frank,

ich muss mir celestia jetzt wirklich mal ansehen. Ich wusste nur nicht, ob man dort den Beobachter auch außerhalb der Galaxis setzen kann.
Danke für den Link.

mac
06.08.2011, 10:27
Hallo Bernhard,

ich finde diese Idee (schon ziemlich lange) sehr gut, zumal ich im Grunde genommen durch sie hier im Forum gelandet bin.

Kataloge die diese Positionen auflisten gibt es zwar, aber die sind mehr oder minder auf unsere ‚nähere‘ Umgebung beschränkt.

CNS3 und Recons wären da für mich die erste Wahl
Darüber hinaus, aber bei weitem nicht mehr so vollständig, wäre der Hipparchos/Tycho-Katalog und der Katalog von Frau Kharchenko mit 2,5 Millionen Einträgen. Aber nicht erst bei diesem Katalog gibt es das Problem, daß die Entfernungsangaben mit zum aller aller größten Teil riesigen Fehlergrenzen angegeben werden müssen und die meisten Sterne darin eh ohne Entfernungsangabe gelistet sind.

Bei den Namen der Objekte, (die überhaupt Namen haben) gibt es nicht wenige die mehr als 1 bis 3 Dutzend Namen führen. Die Kreuzidentifikation füllt teilweise eigene Kataloge und ist in selbständiger Hobbyarbeit nur in wenigen (hundert) Fällen möglich. Für einen naiven Neuling (wie mich) tat sich da zunächst mal ein bodenloses Chaos auf, bis ich mir klar machen konnte, wie dieses Chaos historisch zwangsläufig entstehen mußte.

Im Prinzip kann ich Euch diese Daten aus den Katalogen z.B. als CSV (oder sonst wie separiert) erstellen (wenn auch noch nicht in den kommenden Wochen) Wir müssen uns nur auf ein Format einigen.


Wenn Du im Celestia Programm mal etwas rumstöberst, wirst Du einen erheblichen Teil Deiner Vorstellungen schon verwirklicht finden (das ist natürlich nicht so schön, wie was selbstgemachtes, extra als Kartentank)

Ich hatte sowas schon mal vor gut 10 Jahren angefangen, animiert durch den Kartentank in David Braben’s Frontier (Elite2). Translation, Rotation und Expansion mit der Möglichkeit reale und reproduzierbar zufällige Sterne darzustellen. Die reine Darstellung und das Scrollen funktionierte schon und ich meine mich zu erinnern, daß ich bei einem Bug in der reproduzierbar zufälligen ‚Sternproduktion‘ meine Hobbyarbeit unterbrechen mußte und dann nie wieder Zeit und Lust hatte dort weiter zu machen.

Wenn Du willst, kann ich Dir die Listings aller Enwicklungsschritte zuschicken (geschrieben in GFA-Basic, das kann ich Dir auch mitschicken, dann kannst Du es auch im Ablauf sehen) Ok, bei einem solch alten Programm ist es wohl besser es neu zu schreiben, das geht meistens schneller und heute schreibt man ein solches Projekt auch hobbymäßig doch deutlich anders.

Herzliche Grüße

MAC

Bernhard
06.08.2011, 11:15
Im Prinzip kann ich Euch diese Daten aus den Katalogen z.B. als CSV (oder sonst wie separiert) erstellen (wenn auch noch nicht in den kommenden Wochen) Wir müssen uns nur auf ein Format einigen.
Hi MAC,

ich denke ich werde mich jetzt wieder bei sourceforge.net anmelden und mal ein passendes MFC-Projekt für Windows einstellen. Bei celestia kann man nicht komplex navigieren und Deep-Sky-Objekte habe ich auf die Schnelle auch nicht gefunden. Beides finde ich aber wirklich entscheidend. Die paar Rotationen, die zum Navigieren notwendig sind, müsste ich auch selber programmieren können.

Sobald das fertig ist und gefällt könnte ich auch einen Import von CSV-Dateien einbauen. Ich würde dann auf dieses Angebot sehr gerne zurückkommen.
Gruß

PlanetHunter
06.08.2011, 11:59
Hallo,
ich wäre auch dabei, gerade weil ich mir so eine navigierbare Galaxis schon länger wünsche. Allerdings weiß ich nicht, ob ich wirklich Zeit finde...
Ich halte allerdings das Problem, dass man die Entfernungsangaben der Sterne nur mit einem großen Fehler angeben kann, für grundlegend. Auch kennen wir ja noch nicht mal den uns gegenüberliegenden Teil der Milchstraße z.B.. Ich denke, dass wir nur im Umkreis von ca. 1000 LJ einigermaßen genau bleiben könnten. Dann wäre der Sinn einer kompletten Galaxie irgendwie nicht gegeben.

Und: Muss es denn wirklich MFC sein? Ich halte für solche Gemeinschaftsprojekte Zwischencode-basierte Sprachen wie Java oder C# für besser geeignet. Gerade Java bietet gute OpenGL-Anbindungen. Bei solchen Sprachen ist die Fehlerrate einfach niedriger und es programmiert sich schneller.

Bernhard
06.08.2011, 12:51
ich wäre auch dabei, gerade weil ich mir so eine navigierbare Galaxis schon länger wünsche.
Prima! Ich habe inzwischen die Anmeldung bei sourceforge.net vorgenommen. Man bekommt da mittlerweile sogar ein Wiki für die Dokumentation. Die ist aktuell natürlich leer, aber hier schon mal der Link: http://sourceforge.net/p/my3dstarchart/wiki/Home/.


Ich halte allerdings das Problem, dass man die Entfernungsangaben der Sterne nur mit einem großen Fehler angeben kann, für grundlegend.
Es geht momentan erst mal nur um einen "zivilisierten" Unterhaltungswert und nicht um wissenschaftliche Ziele. Als Ausgangsbasis will ich zumindest die wichtigsten Sternbilder von der Erde aus sehen (umgesetzt, wie bei einer drehbaren Sternkarte - ganz simpel). Dann soll man sagen dürfen, wo sich der Beobachter befindet, z.B. mit Rektaszension, Deklination und Entfernung. Zusätzlich gibt man dann noch vor, wo der Beobachter hinschaut. Ebenfalls wieder mit einer Angabe in Rektasension und Deklination. Man hätte damit als erstes Koordinatensystem das übliche heliozentrische Koordiantensystem mit Frühlingspunkt usw. Alternativ dazu könnte man dann noch ein galaktisches Koordinatesystem verwenden, dessen Ursprung mit dem Schwerpunkt der Galaxis zusammenfällt, aber das wäre dann schon die nächste Ausbaustufe.


Auch kennen wir ja noch nicht mal den uns gegenüberliegenden Teil der Milchstraße z.B.. Ich denke, dass wir nur im Umkreis von ca. 1000 LJ einigermaßen genau bleiben könnten. Dann wäre der Sinn einer kompletten Galaxie irgendwie nicht gegeben.
Wie gesagt. Als Datenmaterial stelle ich mir die bekannten/üblichen Sternbilder vor. Man soll z.B. mit dem Programm klären können, wie das Sternbild Leier vom Zentrum der Galaxis aussieht, inklusive Verbindungslinien und den (halbwegs) korrekten Helligkeiten. Die Galaxis ist als Ganzes interessant, wenn man Deep-Sky-Objekte mitnimmt. M13 ist z.B. laut Wikipedia 25,1 kLj entfernt. Die Regionen, die von uns aus gesehen hinter dem Zentrum der Galaxis liegen bleiben natürlich prinzipiell leer. Die Karte hat dann eben ein Void (terra incognita).


Und: Muss es denn wirklich MFC sein?
Für mich aktuell schon, weil ich damit sehr schnell entwickeln kann und bereits vorhanden Code einsetzen, bzw. modifizieren kann. Steht das Programm erst mal, kann man es gerne in andere Sprachen übersetzen.


Ich halte für solche Gemeinschaftsprojekte Zwischencode-basierte Sprachen wie Java oder C# für besser geeignet.
So was könnte man auch parallel zu (m)einer Grobversion bei sourceforge verwalten.


Gerade Java bietet gute OpenGL-Anbindungen.
Auf OpenGl möchte ich für den Anfang ebenfalls verzichten. Die paar Koordinatentransformationen sind viel übersichtlicher und für die Darstellung der Karte kann man mit einer ganz einfachen Halbkugelprojektion schon sehr viel erreichen.

Als "Format" für die Datenbank bietet sich eine Tabelle mit den Spalten: "RA, D, Entfernung, Helligkeit, Name" an. Wenn MAC da bereits Material hat: umso besser...

mac
06.08.2011, 19:05
Hallo Bernhard,

Namen? Welchen?

Beispiel Sirius, der den man mit bloßem Auge sehen kann, nicht der weiße Zwerg Sirius B
Astronomisches Recheninstitut Heidelberg: ARICNS 515
CNS-Kataloge: Gliese 244 A
Fifth Fundamental Catalogue: FK5 257
Henry Draper Katalog HD48915
Hipparchos Katalog: HIP 32349
Bonner Durchmusterung BD: -16° 1591
Yale Parallax Catalogue: YPC 1577.00
Luyten half second Catalogue: LHS 219
Bayer-Flamsteed: ALF CMa / Alpha Canis Majoris
Aitken-Doppelsternkatalog: ADS 5423
Luyten's Two Tenths Katalog: LTT 2638
Bright Star-Katalogue: HR 2491
Smithsonian Astrophysical Observatory Star Catalog: SAO 151881
Und noch einige common names: Sirius, Hundsstern, Aschere, Canicula

Im Prinzip hat beinahe jeder Katalog seine eigene Bezeichnung.

Bei den hellen Sternen ist das alles noch kein wirkliches Problem, aber bei den leuchtschwachen wird’s echt schwierig mit den eindeutigen Zuordnungen.

Die Einigung auf einen Index (relationale DB) für die Sterne sollten wir Diskutieren. Das Thema ist nicht trivial, wenn wir uns nicht auf die historischen Kataloge, vielleicht noch mit den dazu verfügbaren Hipparchos-Daten beschränken wollen.

Nur als Eisbergspitze: Der Tycho-Katalog ist nach RA2000 sortiert, mit einer Auflösung von 1 ms, Diese Indexierung ist zwar die eindeutigste mir bekannte, aber sie macht bereits eine 12 stellige Ganzzahl als Index erforderlich und hat den Nachteil, daß die Sterne ihre Positionen verändern, was bei dieser Auflösung schon deshalb keine einfach eindeutige Zuordnung mehr zuläßt, sobald man den 2000er Bezug verläßt. Ganz davon abgesehen, daß es außer dem Tycho Katalog und seinen Derivaten kaum Kataloge mit einer Millisekundenauflösung gibt. Und sollte mal der Hipparchos-Nachfolger starten, wird die Auflösung nochmal um mehr als nur eine Größenordnung zunehmen.

@ Planet Hunter
Mit Deinen 1000 Lichtjahren, war das jetzt eine bewußt gewählte Toleranzschwelle, oder eher ein Bauchgefühlt? Die Konsequenz bei einem solchen Radius kann ich Dir mangels Vergleichsmasse nicht quantitativ beschreiben, aber im Umkreis von 25 Parsec (der Radius bei dem der CNS3 mal den Anspruch auf Vollständigkeit erhoben hat, und immer noch eine hervorragende Referenz ist) war ich vor 5 Jahren völlig überraschend mit diesem Phänomen konfrontiert, http://www.astronews.com/forum/showthread.php?700-Sterne-pro-Kubikparsec&p=8574#post8574
Erst UMa hatte hier: http://www.astronews.com/forum/showthread.php?700-Sterne-pro-Kubikparsec&p=13034#post13034 die richtigen Worte, um meine Denkblockade aufzulösen.

Und genau in diese Schwierigkeit geraten wir auf jeden Fall, sobald wir auch nur den Hipparchos-Katalag verlassen. Die 3D-Genauigkeit ist bis auf extrem wenige Ausnahmen eine sehr grobe Hausnummer - auch und gerade bei den sehr leuchtstarken Sternen, die weiter weg sind. (Eta Carinae z.B. in Wiki mit 7000 bis 10000 Lichtjahren Entfernung angegeben und das ist, vermute ich mal, nur der 1s Bereich)

Herzliche Grüße

MAC

Bernhard
06.08.2011, 21:03
Hallo MAC,

ich möchte das Projekt wirklich möglichst einfach starten. Für den Anfang würden z.B. 100 Sterne bis zu einer Grenzhelligkeit von 4 Magnituden völlig ausreichen. Die Namen, wie Sirius, Prokyon, Capella usw., könnte man am Anfang vermutlich auch erst mal weglassen und durch die griechischen Buchstaben ersetzen, wie z.B. alpha (Canis major) anstelle von Sirius.

Beim Start des Programms soll man als erstes eine große schwarze Scheibe sehen und in der Scheibe die hellsten Sterne, wie sie ein Beobachter ohne optische Hilfsmittel in einer Großstadt sehen würde. Der besondere Trick an den Programm ist dann, dass man den Standort des Beobachters von der Erde weg in jeden beliebigen Punkt der Galaxis und auch außerhalb setzen kann. Man soll also die Milchstraße aus ganz unterschiedlichen Blickwinkeln betrachten können, um ein Gefühl dafür zu bekommen, wo die wirklich dicken Brummer des Sternhimmels räumlich sitzen. Sozusagen ein Werkzeug für einen hypothetischen Raumfahrer mit Raumschiff Enterprise.

Die Beschränkung auf 100 helle Sterne hat auch den Vorteil, dass man von denen dann hoffentlich auch die Entfernung gut genug kennt. Vermutlich wird die Hauptarbeit eh die Zusammenstellung des Zahlenmaterials. Es wäre deswegen auch schön, wenn sich hier möglichst viele Teilnehmer an dieser Sucharbeit beteiligen würden. Der Katalog sollte am Ende natürlich alle Sterne mit bekannter Parallaxe enthalten. An Kataloge wie Tycho oder gar GSC brauchen oder sollten wir momentan tunlichst nicht denken. Einen großen Fundus an Objekten erwarte ich zusätzlich bei den galaktischen Messier-Objekten. Da sind viele Enternungen wenigstens schätzungsweise bekannt und das reicht mir momentan definitiv aus, um dieses Software-Projekt zu starten.
Gruß

mac
06.08.2011, 21:26
Hallo Bernhard,


Für den Anfang würden z.B. 100 Sterne bis zu einer Grenzhelligkeit von 4 Magnituden völlig ausreichen.Ok, wenn Du akzeptierst, daß beide Bedingungen (100 und 4Mag) nicht gleichzeitig erfüllbar sind, dann findest Du die hellsten 100 hier: http://de.wikipedia.org/wiki/Hellste_Sterne

Herzliche Grüße

MAC

Runzelrübe
06.08.2011, 21:40
Damit, dass mein (mittlerweile doch recht) altes Programm auf so viel Nächstenliebe stößt, hatte ich nicht gerechnet.

Der volle Umfang des kleinen Shockwaves (ersonnen als Bestandteil eines nie vollendeten Weltraum-Handelsspiels) ist schnell erklärt:

Ein (wiederholbarer) Klick auf "Start" erstellt einen neuen zufälligen Raum aus bis zu 250 Sternen um eine Ebene. Die Lote auf diese Ebene sowie die Ebene selbst sind einblendbar. Jeder Stern erhält eine fiktive Verbindung zu anderen Sternen innerhalb eines bestimmten Radius, die ebenfalls einblendbar ist (ursprünglich als Transportroute gedacht).

Die Buttons oben ermöglichen ein Zooming und ein Verschieben der Beobachter- und der Targetpositionen. Es existiert eine Tastaturunterstützung für die Pfeiltasten sowie die Bildlauftasten. Jeder Stern ist anklickbar. Dies führt zu einem automatischen Zentrieren dieses Sterns als Target und einem Zoom auf dieses neue Ziel. Dieser Autozoom war ursprünglich dafür gedacht, in dieser Stufe das jeweilige Sternsystem anzuzeigen.

Das richtige Anzeigen von Labeln neben den Objekten ist übrigens auch weit weniger schlimm als man annehmen mag:

http://www.sternkun.de/astro/names.png

Die ersten Schritte hin zu der verlinkten Version habe ich in den 90ern in Turbo Pascal unternommen. Dann kamen, um die Jahrtausendwende, PHP und Shockwave. Daraus ist dann ziemlich schnell die Idee entsprungen, einen 3D Viewer für (Achtung!) unsere nähere Sternumgebung zu bauen. Doch die Umrechnung aus dem Almanach, der damals noch echte Hardware war (das Buch "Starlist 2000") war mir zu aufwendig und zu ungenau. Weiter ging es dann mit Java und letzten Endes nun seit Jahren C#.NET.

Ich habe sogar einen Versuch unternommen, eine zufällige Verteilung anhand des HRD Diagramms zu erreichen. Mein Spaß daran war nun, dass ich einen Sternhaufen anhand einer Primzahlverteilung angestrebt hatte. Hä, wie, was, warum, wieso? Nun, jeder, der einmal unvoreingenommen einen Blick auf folgendes Bild wirft, wird mir zustimmen, dass dieses Bild einer schönen Wolke entspricht:

http://www.sternkun.de/astro/p10mil.jpg

Umso verblüffter werden wohl einige sein, wenn ich euch den simplen Ablauf (ich glaube, ich generiere wohl wieder ein neues Thema) erkläre.
Man nehme eine Primzahl nach der nächsten (im Bild sind nur die Primzahlen unter 10 Millionen zu sehen) und gehe wie folgt vor:

Primzahl Modulo 5 == 1 --> gehe nach oben, erhöhe die Intensität um +1
Primzahl Modulo 5 == 2 --> gehe nach rechts, erhöhe die Intensität um +1
Primzahl Modulo 5 == 3 --> gehe nach unten, erhöhe die Intensität um +1
Primzahl Modulo 5 == 4 --> gehe nach links, erhöhe die Intensität um +1

Ja, schönes Bild, nicht wahr? 3D sieht das dann mit Mod 7 auch hübsch aus. Notiz für später: ich muss wohl mal all meine alten Programme ausbuddeln. :D

Die Verteilung innerhalb der Wolke wollte ich anhand eines Schwellwerts in eine Sternregion verwandeln. Nun, das ist halt leider alles nicht geschehen. Daher schnell zurück zu den Fakten.

Ich persönlich verfolge Shockwave bzw. Flash als Entwicklungsumgebungen für ein Display nicht weiter und finde diese auch nicht annähernd brauchbar für wissenschaftliche Arbeiten. Mir würde eine Weiterentwicklung in .NET gefallen. Ein wichtiger Punkt hierbei ist, dass dieselben Bibliotheken in webbasierte Anwendungen gegossen werden können. Ein mögliches Anwendungsbeispiel wäre daher eine Website, auf der ihr nach einem noch zu definierenden Format eure zeitabhängigen Objektkoordinaten hochladet, damit sie direkt in ein Video transformiert werden, welches ihr dann downloaden könnt und das eine 3D-Repräsentation aus einer Betrachterposition widerspiegelt.

Doch noch kurz zurück zum Thema Galaxie. Die Berechnung der Darstellung eines Frames für Millionen Objekte lastet die Rechnerkapazität eines Durchschnitts-Servers bereits für nur einen einzigen Benutzer aus. Leider! Ohne Culling und Mapping wird das also nix. Aber das größte Problem ist das wohl haarigste von allen. Wir können zwar wunderschön berechnen, wo wir auf der Erde gerade welchen Stern sehen und wie weit er dadurch sichtbar entfernt ist, doch die echte Position eines 600 lj entfernten Sterns ist nunmal 600 lj weiter. Wie soll also das Vorgehen sein, wenn man sich die gesamte Szenerie von diesem Stern aus ansehen möchte? Und wie, wenn man sich von diesem Stern aus zu einem anderen bewegen möchte? Genau dort hatte ich bisher meinen Kopf abgeschaltet. Machbar wäre es sicher irgendwie. Hmmm....

Bernhard
06.08.2011, 22:34
dann findest Du die hellsten 100 hier: http://de.wikipedia.org/wiki/Hellste_Sterne
Dank Dir MAC. Genau so etwas ist sehr gut verwertbar. Zusammen mit den passenden Messier-Objekten haben wir damit schon eine Liste mit 167 Einträgen (100 Sterne und 67 Messier-Objekte) :) .
Gruß

EDIT: Die Liste der Messiers kann man sich recht leicht mit google und Wiki zuammenstellen.

Bernhard
07.08.2011, 16:41
Hallo zusammen,

ein erster Programmentwurf ist jetzt hier http://sourceforge.net/projects/my3dstarchart/files/ erhältlich. Die Dateien Messier.txt und Sterne.txt können beliebig erweitert werden. Das Programm zeigt aber die Sterne nur bis zur 6. Größe an.

Der Beobachter befindet sich momentan fest am Nordpol der Erde, soll aber in den nächsten Versionen beliebig positionierbar sein.

Der Quelltext wurde mit MS-Visual C++ 6.0 erstellt.
Gruß

Runzelrübe
07.08.2011, 20:06
Ich hätte da noch einmal einen Augenschmaus:

http://www.vimeo.com/4169279

http://www.vimeo.com/4151493

Ich frage mich derzeit, ob hier wirklich nur ein neuer, vereinfachter 3D Viewer gebaut werden soll. Alles andere sind doch eh nur Daten, die für der Viewer aufbereitet werden müssen. Die Daten bekommen können wir relativ zur Erde. Und zum Umrechnen braucht man noch eine Koordinate, die man auf den Ursprung festlegt. Der Rest ist ein wenig Mathematik. 3D Viewer gibt es eine Menge, für jede beliebige Plattform. Wenn also das Programm keine besondere Funktionalität erhalten soll, dann erkenne ich den Nutzen nicht, sich um mehr zu kümmern als um die Datenbeschaffung. Darüber hinaus wundert mich, dass das Publikum durch das Entwickeln einer webfreien Variante so stark eingeschränkt wird. Wäre ein wenig Planung am Anfang vielleicht nicht doch die bessere Alternative als Drauflos-Programmieren von "etwas"? Es macht sicherlich einen Heidenspass, Punkte rumzuschubsen, doch ob ein hoch gestecktes Ziel dann nicht erst über viele Umwege erreicht wird, ist fraglich. Oder aber ich stehe auf dem Schlauch und sehe nicht, wo das hinführen soll.

Der Unterhaltungswert des Anwenders steigt sicherlich weiter, wenn Sterne je nach Entfernung heller, dunkler, kleiner, größer werden, eine echte Farbe zugewiesen bekommen, Erklärungen abrufbar werden etc. Der Unterhaltungswert des Programmierers steigt natürlich durch seine Herausforderungen. Eventuell was letzteres gemeint. :D

Bernhard
07.08.2011, 21:23
Es macht sicherlich einen Heidenspass, Punkte rumzuschubsen, doch ob ein hoch gestecktes Ziel dann nicht erst über viele Umwege erreicht wird, ist fraglich. Oder aber ich stehe auf dem Schlauch und sehe nicht, wo das hinführen soll.
Hi Rübe,

mir jucken momentan halt etwas die Finger und da ist so ein Viewer schnell mal programmiert und zwar mit den Konventionen, die einem gerade optimal liegen. Bei anderen Viewern müsste man sich erst in die Bedienung einarbeiten und sowas dauert dann z.T. länger als das "einhacken" eines primitiven Prototypen.

Wenn Du aus den beiden Dateien Messier.txt und Sterne.txt noch mehr herausholen kannst, bitte gerne.
Gruß

Runzelrübe
07.08.2011, 23:01
Wenn Du aus den beiden Dateien Messier.txt und Sterne.txt noch mehr herausholen kannst, bitte gerne.

Ich versuch grad, aus einem Uraltprogramm von Data-Becker '94 namens "Sirius" die Datenformate zu entschlüsseln. Dort drinnen befinden sich ca. 1 Mio Objekte bis Mag 11. War zwar nicht 3D, aber was nicht ist, kann durchaus werden. Bleib dran! :D

Obwohl.. da draußen zeigt sich grad noch so der Mond überm Horizont.. ich glaube, mein Teleskop ruft. :)

Bernhard
08.08.2011, 22:23
Hallo Leute,

den Primitiv-Viewer gibt es jetzt in der Version 1.0!! Man kann jetzt auch einstellen, wohin der Beobachter hinschaut und wo er sich befindet. In den Grundeinstellungen befindet er sich in der Mitte von Deutschland und schaut mit seinem 180°-Fischauge senkrecht nach oben in den Himmel. Befindet sich zumindest die Datei Sterne.txt im Installationsverzeichnis sieht man auf der Karte also auch Polaris aber natürlich nicht in der Mitte.

Stellt man bei Einstellungen/Beobachter/Blickrichtung die Deklination auf 90° steht Polaris in der Mitte. Bei -90° bekommt man den Blick in den Sternhimmel vom Südpol aus.

Zusätzlich kann man den Beobachter auf eine virtuelle Reise zu den Sternen schicken. Man stellt in dem eben genannten Einstellungen-Dialog einfach den Stern (eigentlich Richtung) mit Rektaszension und Deklination ein, zu dem der Beobachter reisen soll und die zugehörige Entfernung von der Erde in Lichtjahren.

Das große runde Display kann man jetzt übrigens auch mit der Maus nach oben und unten scrollen.

Bei den Kollegen vom astrotreff habe ich gerade auch die Adresse zu den Daten vom Hipparcos-Katalog gesehen und siehe da: Dieser Katalog enthält zu jedem Stern auch eine Parallaxe, also die Entfernung. Dies wiederum bedeutet, dass man die Datei Sterne.txt zumindest prinzipiell noch ziemlich stark erweitern kann. Das Programm zeigt momentan programmtechnisch aber nur Sterne bis zur 6ten visuellen Grenzgröße an.

Die Helligkeiten der Sterne ändern sich bei der virtuellen Reise des Beobachters auch noch nicht, aber man kann sich jetzt trotzdem schon mal ein paar interessante Werte für den Beobachtungsstandort überlegen :D .

Viel Spaß beim Ausprobieren :) .

Bernhard
09.08.2011, 01:12
Ganz nett ist übrigens die folgende Einstellung:

1.) Man verwendet beide Dateien Messier.txt und Sterne.txt.

2.) Man stellt den Standort des Beobachters auf RA=0h42m44s, D=+41°16'09'', die Entfernung auf 50.000 Lj - 2,2 Millionen Lichtjahre und die Blickrichtung auf RA=14h0m0s, D=-70°0'0''.

Man bekommt dann die Ansicht unserer Milchstraße (momentan zwar nur ganz grob, aber immerhin), wie sie ein Raumfahrer auf dem Weg zur Andromeda-Galaxie sehen würde. Am Ende der Reise bei 2,2 Millionen Lichtjahre ist unsere Galaxis dann nur noch als vergleichsweise großes Deep-Sky-Objekt zu sehen.

Runzelrübe
09.08.2011, 09:49
Man erhält allerdings niemals auch nur die richtige Ansicht. Alle Positionen sind dort, wo ein Betrachter auf der Erde sie sieht, nicht dort wo sie wirklich sind. Und wenn man sich zu solch einer Position bewegt, wäre das von der Erde aus betrachtete Objekt zum heutigen Zeitpunkt einfach nicht mehr dort. Es ist eben nur eine 3D Karte zu einem einzigen Standort. Stell Dir vor, wenn zum jetzigen Zeitpunkt ein Raumfahrer in 2.000.000 Lichtjahren sitzt und sich unsere Milchstraße anschaut, dann bekommt er ein Bild, das 2.000.000 Jahre alt ist. Aber dieses Manko hatte jedes einzelne Programm, das ich bisher zu dem Thema angeschaut habe. Wird wohl auch so bleiben... :)

mac
09.08.2011, 10:24
Hallo Runzelrübe,


Aber dieses Manko hatte jedes einzelne Programm, das ich bisher zu dem Thema angeschaut habe. Wird wohl auch so bleiben... :)Ja. Oder fast 100% ja. Oder man überlegt sich dazu, wie genau man es denn sehen möchte und dann wird das ganz schnell völlig uninteressant.

Wenn unsere Umgebung repräsentativ ist, dann gilt für nahezu alle Sterne der Milchstraße, wenn man sie bei der Darstellung auf einen Kreis mit 200 Pixeln Durchmesser verteilt, nach 2 Millionen Jahren eine Abweichung von weniger als ein Pixel vom bekannten Mittelwert.

Siehe dazu auch: http://de.wikipedia.org/wiki/Galaktisches_Jahr

Herzliche Grüße

MAC

Runzelrübe
09.08.2011, 11:50
Für eine Ansicht Millionen Lichtjahre entfernt oder für eine Ansicht nahe der Erde mag der darzustellende bildliche Unterschied durchaus nicht repräsentativ ausfallen.

Möchte man jedoch zum jetzigen Zeitpunkt eine Ansicht des Sternenhimmels um einen anderen Stern in unserer Nachbarschaft berechnen, lässt sich das Thema nicht mehr kleinreden. Wir schauen als Beispiel mal in Richtung eines Sterns, der 200 Lj entfernt ist und springen nun einmal linear jeweils um 1 Lichtjahr in Richtung der Position, an der wir den Stern eingangs aus Sicht der Erde gesehen haben. Nach dem 50sten Sprung schauen wir uns einmal um. Nun, wenn wir dahin zurückschauen, von wo wir gekommen sind, dann befindet sich die Erde (bzw. das Sonnensystem) nun nicht mehr sichtbar auf der Linie, aus der wir gekommen sind. Schauen wir nach vorn, befindet sich der Stern, zu dem wir wollen, auch nicht mehr auf der Linie, an der wir entlangspringen. Aber nicht nur Start und Ziel sind verschoben sondern der gesamte Sternenhimmel. Hinter uns ist er scheinbar älter, vor uns scheinbar jünger. Dass Photonen auch so elendig langsam sein müssen... :D
Innerhalb von 50 Jahren bewegt sich die Sonne um gut 0,04 Lichtjahre. Am Ende der Reise von 200 Lichtjahren kämen wir, insofern die Bewegung unseres Zielsterns um das GC auch nur bei 250 km/s lag, an einem Punkt an, der gut 1/6 Lichtjahr von seiner echten Position entfernt ist. Auch die Erde liegt gut 1/6 Lichtjahre neben unserer Linie. Und hierbei habe ich noch nicht einmal die relativen Bewegungsrichtungen der Sterne zueinander beachtet. Es kann also noch deutlich mehr ausfallen, manchmal jedoch auch weniger. Je nach Kamerawinkel hat man dann durchaus mehrere Pixel Unterschied bei jedem Stern.

Anders ausgedrückt, bei 100.000 Lichtjahren Durchmesser der Galaxie, die wir in 200 Pixel quetschen haben wir 0.5% Abweichung zum Original und merken das vielleicht echt nur in Farbveränderungen. Das mag für einen Standort außerhalb der Galaxie befriedigend sein. Für eine galaktische Karte jedoch könnten wir versucht sein, eine Lösung zu finden. Das liefe wohl aber darauf hinaus, je Stern keine Position im Raum sondern viele Positionen in der Raumzeit zu speichern. Wäre ja mal was... :)

[Edit:]

Mal abgesehen von der Genauigkeit - eine 3D Visualisierung für eine Farbbrille wäre auch etwas tolles. :D

http://www.faz.net/artikel/C31509/3d-darstellung-tanz-ums-schwarze-loch-30014563.html

mac
09.08.2011, 15:56
Hallo Runzelrübe,


Für eine Ansicht Millionen Lichtjahre entfernt oder für eine Ansicht nahe der Erde mag der darzustellende bildliche Unterschied durchaus nicht repräsentativ ausfallen. Ja. Das Beispiel mit Andromeda kam von Dir.




Innerhalb von 50 Jahren bewegt sich die Sonne um gut 0,04 Lichtjahre. Am Ende der Reise von 200 Lichtjahren kämen wir, insofern die Bewegung unseres Zielsterns um das GC auch nur bei 250 km/s lag, an einem Punkt an, der gut 1/6 Lichtjahr von seiner echten Position entfernt ist. Auch die Erde liegt gut 1/6 Lichtjahre neben unserer Linie. Ja, bezogen auf sagg.A – gut 25000 Lichtjahre entfernt.



Und hierbei habe ich noch nicht einmal die relativen Bewegungsrichtungen der Sterne zueinander beachtet. Ja. Die liegen aber bis auf ganz wenige Ausnahmen sehr deutlich unter der Umlaufgeschwindigkeit ums GZ.


Es kann also noch deutlich mehr ausfallen, manchmal jedoch auch weniger. Je nach Kamerawinkel hat man dann durchaus mehrere Pixel Unterschied bei jedem Stern.Nein, jedenfalls nicht in nennenswertem Umfang, was die Kandidaten dafür angeht.

Für die Sterne in unserer Umgebung sind die Positionen und Geschwindigkeitsvektoren vergleichsweise gut bekannt.



Das liefe wohl aber darauf hinaus, je Stern keine Position im Raum sondern viele Positionen in der Raumzeit zu speichern. Wäre ja mal was... :)Ja. Da wäre Bernhard auch nicht der Erste der das Tut. (siehe z.B. den Link zum galaktischen Jahr)



Mal abgesehen von der Genauigkeit - eine 3D Visualisierung für eine Farbbrille wäre auch etwas tolles. :DJa. Alternativ, um nicht den Farbeindruck zu verlieren, wäre mit einer Echtzeitrotation ein ähnlicher Effekt zu erreichen, besonders, wenn man den Standort mit Linien auf eine Ebene verlängert.


Herzliche Grüße

MAC

Runzelrübe
09.08.2011, 16:24
Hallo MAC,


Ja. Das Beispiel mit Andromeda kam von Dir.

Ich habe mir meinen diesbezüglichen Eintrag eben nochmal durchgelesen. Du hast Recht, meine Ausführungen kann man ja tatsächlich als Vorschlag interpretieren!? :o Dabei wollte ich doch nur die Idee von Bernhard aufgreifen, der sich übrigens hier mächtig viel ins Zeug legt! :) Tjaja, was ein fehlendes Zitat anrichten kann, sehen wir ja derzeit in der Politik. :D

Liebe Grüße,
Rübe

Bernhard
09.08.2011, 19:15
Hallo Rübe und MAC,

die Sache mit der Lichtlaufzeit ist tatsächlich ein Problem für das Programm. Dummerweise ist eine Berücksichtigung der Lichtlaufzeiten mit (vermutlich sehr) viel Arbeit verbunden. Man müsste dazu erst mal die Daten zusammentragen und dann auch noch im Programm berücksichtigen.

Ich persönlich bin für's Erste zufrieden damit, eine primitive Sternkarte selber geschrieben zu haben und natürlich ist es auch ein schönes Erfolgserlebnis diese Sternkarte für verschiedene Himmelsregionen zu testen und dann zu sehen, dass es rein optisch passt.

Mit der 3D-Visualisierung war ich eventuell wirklich zu vorschnell, aber es war programmtechnisch auch keine übermäßig große Sache. Wie schlimm die Vernachlässigung tatsächlich ist, bzw. was da noch geändert werden sollte, kann ich auf die Schnelle nicht beurteilen. Mir ging es für den Anfang, wie gesagt, eher um ein sehr grundlegendes, räumliches Verständnis der Messier-Objekte. Dieses Ziel ist erreicht. Alles Weitere sollte man sorgfältig planen. Die Diskussionen dazu sind sehr hilfreich - Danke dafür.

Bernhard
12.08.2011, 19:37
die Sache mit der Lichtlaufzeit ist tatsächlich ein Problem für das Programm.
Um dieses "Problem" vorerst zu beheben, sollte man vielleicht noch erwähnen, dass man die Lichtlaufzeiten zu Erde ganz gut mit Hilfe der retardierten Positionen der Objekte berücksichtigen kann. MAC hatte dazu weiter oben aber schon geschrieben, dass die resultierenden Korrekturen nur für genauere Sternkarten wichtig sind. Für einen optischen Pi-Mal-Daumen-Eindruck spielen die Lichtlaufzeiten eine eher untergeordnete Rolle. Ganz interessant wären in diesem Zusammenhang die räumlichen Geschwindigkeiten der Kugelsternhaufen. Dort hat man immerhin Lichtlaufzeiten bis hin zu 80.000 Lichtjahren.
Gruß

mac
12.08.2011, 20:16
Hallo Bernhard,

die tatsächliche (2D) Geschwindigkeit ist proportional zur Winkelgeschwindigkeit * Entfernung. Die tatsächliche Geschwindigkeit hat aber sehr enge Grenzen (Fluchtgeschwindigkeit). Um also eine 'wahrnehmbare' Winkelgeschwindigkeit zu finden, muß man bei den nahen Objekten suchen. Im richtigen Leben war es übrigens umgekehrt, da hat man zuerst bei den Sternen, die durch ihre hohe Winkelgeschwindigkeit auffielen, versucht durch Paralaxenmessungen ihre Entfernung zu bestimmen. Siehe auch: http://en.wikipedia.org/wiki/Proper_motion#History

Herzliche Grüße

MAC

Bernhard
13.08.2011, 22:49
Version 1.1 der 3D-Sternkarte ist ab sofort freigeschaltet :) . Der Darstellungsfehler aus Version 1.0 ist behoben und man kann jetzt auch den Hipparcos-Main-Katalog (ohne Tycho) verwenden. Der Darstellungsfehler bei der Projektion auf die Sternkarte fiel mir gerade beim Hipparcos-Katalog auf. Irgendwie sammelten sich da in der Bildmitte immer viel zu viele Sterne und die Sternbilder waren hin zur Bildmitte auch mehr und mehr verzerrt :o . Jetzt bekommt man gerade bei Verwendung der Hipparcos-Daten eine nette Übersichtskarte mit sehr vielen Sternen.

Weitere Beschreibungen findet man direkt auf der Download-Seite: http://sourceforge.net/projects/my3dstarchart/files/.

Viel Spaß beim Ansehen und Ausprobieren.

Runzelrübe
14.08.2011, 21:41
Ich hätte da etwas für darstellbare Vergleichsinformationen:

http://dsc.discovery.com/videos/how-the-universe-works-big-stars.html

Bernhard
19.08.2011, 00:39
Hi Leute,

das Programm My3DStarChart.exe gibt es jetzt in der Version 1.2.

Neue Features:
- Vergrößern und Verkleinern des Gesichtsfeldes mit dem Scrollrad der Maus (Zoom)
- Verändern der Blickrichtung mit den Pfeiltasten
- Positionieren der Sternkarte innerhalb des Anzeigefensters mit den Tasten g,h,u,j

Eine kurze Programmbeschreibung befindet sich auch auf der Download-Seite. Quelltext ist auch erhältlich, inklusive hyg.csv-Katalog.

Das Programm bietet jetzt eine vollständige 2D-Sternkarte, allerdings ohne Anzeige der konkreten Sternbilder und Sternbildgrenzen.
Gruß

Runzelrübe
19.08.2011, 11:33
Hi Bernhard,

habe mal über Deinen Quelltext drüber geschnuppert und auf Anhieb Optimierungspotenzial beim Normieren und Rotieren entdeckt. Ich schicke Dir dazu eine PM, wenn ich wieder aus dem Urlaub zurück bin. :)

Und ein großes Lob für die Mühe, die Du da reinsteckst! Ich selbst habe auch angefangen, meinen alten .NET 3D Viewer zu verfeinern. Ein aktuelles Bild siehe hier (Standort nahe Jupiter):

http://imageshack.us/photo/my-images/692/3dviewersolarsystem.jpg/

Texturen, Shading und Beleuchtung sind in dem Fall ausgestellt. Das Gittermodell zeigt den derzeitigen Stand der Triangulierung der Objekte. Alles hübsch getrennt - Viewer, Modell und Physik. Wie man sieht, ich bin immernoch im Sonnensystem kleben geblieben und mir lag es noch fern die GUI aufzuhübschen. :D

Bernhard
19.08.2011, 15:08
und mir lag es noch fern die GUI aufzuhübschen. :D
Kommt Zeit, kommt Rat :) ....

pmvstrm
03.11.2011, 16:31
Habs auch mal kompiliert. Geht auch mit Visual C/C++ 2010 und lässt sich als Win32 und Win64 gleichermaßen kompilieren.
Die kostenlose Express Version von Visual C++ 2010 gibts hier: http://go.microsoft.com/?linkid=9782373

Bernhard
03.11.2011, 18:05
Geht auch mit Visual C/C++ 2010
Hallo pmvstrm,

wie hast du das gemacht? Wenn ich versuche die dsw-Datei mit Visual C++ Express 2010 zu öffnen, versucht Visual C++ das Projekt zu konvertieren, schafft das aber nicht.
Wäre für Tips dankbar.
Gruß B.

pmvstrm
03.11.2011, 20:18
Hallo Bernhard.

Also ich habe das genauso gemacht wie Du es beschrieben hast.
Der einzige Unterschied ist, dass ich die Ultimate Version von Visual C/C++ 2010 verwende.
Hier ist der Workspace. Ich habe die Debug/Release Targes für 32/64-Bit angepasst und im
Ordner Redist die mfc42 dll's für 32/64 Bit hinzugefügt.
http://www.filesonic.com/file/2957079805/My3DStarChart.src.zip
(Du musst unten auf der Seite auf Slow download klicken, geht aber trotzdem schnell).

ps:
Wenn Du beim kompilieren trotzdem Probleme bekommst, dann fehlen Dir vermutlich noch die
Platform SDK Header (die werden in der Express Edition nicht mitgeliefert)
Kann man hier laden: http://www.microsoft.com/download/en/details.aspx?id=8279

ps:
Die Win32 Version läuft sogar unter Linux und Mac mittes LibWINE (die Starmap wird sogar
schneller nachgeladen habe ich den Eindruck:)

sebix
03.11.2011, 21:52
Oh, ich dachte schon ich werde das Programm nie nutzen können, weil es nur für M$ VS geschrieben ist.

Könntest du ein Binary hochladen, würde die Software gern unter Linux ausprobieren (Hab weder Windows noch die M$-Entwicklertools)?

pmvstrm
03.11.2011, 22:30
Oh, ich dachte schon ich werde das Programm nie nutzen können, weil es nur für M$ VS geschrieben ist.
Könntest du ein Binary hochladen, würde die Software gern unter Linux ausprobieren (Hab weder Windows noch die M$-Entwicklertools)?

Klar, kein Problem
http://www.filesonic.com/file/2957795485/stars.iso

Das ISO File kannst Du entweder auf CD ROM brennen oder es per 7zip unter Linux oder Mac OS X öffnen
und in deinen Homeordner entpacken.

Das Programm startest Du übers Terminal so: sudo wine My3DStarChart1.2.exe

ps:
Na klar brauchst Du WINE selbst. Wenn Du ein Debian Derivat hast (also z.B Ubuntu geht es konfortabel übers
Softwarecenter - dort kannst Du einfach nach WINE suchen) oder über Kommandozeile apt-get install wine eingeben.

ps2:
Unter Unbuntu wird WINE so eingerichtet, das Du eine Windows 32-Bit Exe einfach per Rechtsmausklick
und dem Menüpunkt "Mit Wine öffnen" anklickst Für MAC OS X (10.5 und höher) muss man XQuarz und
Mac Ports verwenden um Wine zu installieren.

Hier läuft das Programm unter Linux
http://img10.imageshack.us/img10/2060/ubuntustar.png

Bernhard
04.11.2011, 08:21
Könntest du ein Binary hochladen, würde die Software gern unter Linux ausprobieren
Hallo sebix,

hier auch nochmal die "offizielle" Downloadseite: http://sourceforge.net/projects/my3dstarchart/files/

Dort gibt es neben dem mit VC++ 6.0 übersetzten Binary auch eine Beschreibung in Deutsch und Englisch mit dem Download-Link für den Hipparcos-Katalog. Mit einer kleinen Modifikation des Quelltextes bekommt man mit diesem Katalog dann auch eine grobe Sternkarte (ohne Koordiantenlinien) mit einer Grenzgröße über 6 Magnituden.

@pmvstrm: Vielen Dank für die Beschreibung. Werde das bei nächster Gelegenheit dann mal ausprobieren, um die "Lebenserwartung" des Programms zu steigern :) .

sebix
04.11.2011, 09:39
Oh, da gibts ja auch ein Binary auf SF :O

Es läuft unter Wine (wine-1.3.31) out-of-the-Box (auch ohne SU-rechte @pmvstrm), allerdings nicht wenn die *.txt-Files verfügbar sind. Vielleicht könnt ihr mit dem Debug-Output etwas anfangen: http://pastebin.com/179PnVtV
Kann mich erst nächste Woche wieder damit beschäftigen.

Bernhard
04.11.2011, 09:57
Hallo sebix,

stell' einfach mal die mfc42.dll (gibts bei jedem Windows im System-Ordner /Windows/system32/mfc42.dll o.ä) mit in's Arbeitsverzeichnis der exe.
Gruß

pmvstrm
04.11.2011, 23:35
Also da scheinbar Interesse an einer Linux und ggf. auch Mac Version besteht, habe ich den Programmrumpf mal auf QT portiert und
und unter Win (32/64-Bit), Mac (vorerst nur 32-Bit) und Linux (32/64-Bit) kompilier (jeweils aus ein und dem selben Quellcode). Falls
Interesse besteht kann ich auch noch eine Unix (FreeBSD) Version bauen, aber das spare ich mir momentan.

Die Vorteile sind folgende:
-QTCreator ist kostenlos für Mac/Win/Linux beziehbar, so erreichen wir mehr potentielle Programmierer
-Für Visual Studio Benutzer gibts einen kostenlosen AddinWizzard der QT Makefiles in Visual Studio Solution wandern kann (und umgekehrt)
-Native Programmversionen für Windows XP/Wn7, Mac OS X Tiger, Leopard, Snow Leopard, Lion, Linux.
-Platformübergreifender Zugriff auf die Grafikhardware, XML, Netzwerk, SQL, Threads u.s.w
-Die C++ Programmierung ist konfortabler und einfacher als MFC (eigentlich ist MFC ein einziger Albtraum:D)

Mac
http://img703.imageshack.us/img703/4657/macosx104.png

Windows
http://img72.imageshack.us/img72/4112/vista64scn.jpg

Linux
http://img406.imageshack.us/img406/305/ubuntu11.png

Zum entwickeln...
braucht man nur den kostenlosen QT Creator von Nokia (eine komplette C/C++ Umgebung)
Wer lieber mit Visual Studio C/C++ arbeiten will oder den Visual C/C++ Compiler und/oder Intel Compiler nutzen
will kann dies auch machen.

ps:
Die Bilder zeigen nur... den Programmrumpf auf dem jeweiligen System.Es sind native Binaries (keine
emulierten Windows EXE Dateien). Um die Darstellung der Karte habe ich mich noch nicht gekümmert (CSV),
aber es sind schon die Parameter Dialoge von Bernds Programm da und die CSV Datei wird geöffnet und
Zeilenweise komplett geladen.Die 2D Canvas Zechnungtests waren auch erfolgreich (siehe Linie).


ps2:
Der nächste Schritt... ist jetzt eigentlich nur noch die Darstellungsroutine aus Bernds Programm zu
klauen aber dazu bin ich noch nicht gekommen, danach lade ich das dann bei Sourceforge hoch
(wenn Bernhard mich als Developer invitet).

Gruß, P

QTCreator Download (http://qt.nokia.com/downloads)

FrankSpecht
05.11.2011, 00:53
:cool:
Kommt mir das nur so vor oder bist du tatsächlich der erste, der hier Bilder eingefügt hat?
Die Option gibt's ja noch nicht so lange.


Bernds Programm
Der Schöpfer (sic!) heisst Bernhard!

Aber: Tolle Leistung von dir! Hätte ich, ehrlich gesagt, nach deinem Erstpost nicht gedacht.
Erinnert mich an einen anderen User, ich glaube es war "rmw".

Bernhard
05.11.2011, 05:51
Der Schöpfer (sic!) heisst Bernhard!
Hallo Frank,

ich bin da nicht so pingelig, werde ich doch sogar innerhalb der Verwandtschaft z.T. Bernd genannt. Angesichts des Interesses an dem Programm komme ich mit dieser Abkürzung zu recht :) .
Gruß

Bernhard
05.11.2011, 06:20
eigentlich ist MFC ein einziger Albtraum:D
Man muss z.T. recht lange suchen, bzw. warten, bis man mit der MFC auf Lösungen kommt, darf aber nicht vergessen, dass die MFC vor rund 10 Jahren in Sachen Komfort so ziemlich unschlagbar war. Als Konkurrenz gab es damals schließlich nur so Pakete, wie X Window und OSF/Motif.

Ich frage mich in diesem Zusammenhang auch, ob M$ nicht die ersten waren, die einen komfortablen Code-Generator (Assistenten) in diesem Bereich vorgestellt haben. Das Programmieren mit Qt und dem uic raubt mir persönlich nämlich noch wesentlich öfter den letzten Nerv (denke ich da nur kurz an das Konzept mit den Slots, bekomme ich schon wieder "Zustände")...werde mir aber den Qt Creator gerne mal ansehen.


(wenn Bernhard mich als Developer invitet).
Bist Du auf sourceforge angemeldet? Falls ja und falls Du eine compilierbare Version mit Qt hast, würde ich das prinzipiell machen. Ob ich für ein Qt-Release das Zoom-Feature (Vergrößern der Sternekarte mit dem Scrollrad der Maus) als Bedingung stelle, weiß ich noch nicht. Mit der Ultimate-Version von oben konnte ich mit meinem Studio Express leider nichts anfangen. Der beigefügte Code war nicht zu übersetzen und hatte als Projekt-Modus auch x64, was auf einem 32-Bit OS, denke ich, prinzipiell wenig Sinn macht.

Kurz eine Qt-Version würde ich selbstverständlich gerne bei Sourceforge dabei haben. Sie sollte aber vorher getestet sein und der M$-Version das "Wasser" reichen können. Wie üblich - sollte Code zumindest ausreichend kommentiert und vor allem gut lesbar sein.
Gruß

pmvstrm
05.11.2011, 11:31
@Bernhard

Ja, ich bin unter pmvstrm auf sourceforge.net registriert. Ich habe Dir dort auf deiner My3DStarChart Projektseite eine Nachricht über
Sourceforge geschickt. Du musst mich da glaube ich nur anklicken und inviten. Ich pflege den Sourcecode dann in die Versionsverwaltung
ein, so das Du ihn lokal auschecken und dran arbeiten kannst.Dann sieht man auch besser wer was wo wann verändert hat.

ps:
Die QT Version ist übersetzbar. Du kannst unter WinXP oder Vista/Win7 (32 bit oder 64) Bit entwickeln. Am einfachsten ist
es wirklich sich den QTCreator von Nokia zu laden. Der kann das QT Projekt direkt öffnen und hat auch einen komfortablen
GUI Editor, den ich sehr gerne benutze. Der integrierte/mitgelieferte Compiler ist der GNU Crossplatform Compiler GCC (aber
Du kannst im QT Creator auch einstellen, das der MS Compiler von Visual Studio 2010 Express oder z.B der Intel C/C++
Compiler verwendet werden werden soll.

Hier mal ein paar Bilder von dem guten Teil und dem Visual Studio Addin in Action

QTCreator Codecompletion und Refactoring Features
http://img854.imageshack.us/img854/4835/qchellobernhard.jpg

MS-Visual Studio 2008/2010 AddIn (kann QT Creator Projjete *.pro Files) öffnen und daraus neues MS Visual Solution/Projekt erstellen
http://img510.imageshack.us/img510/7440/qtaddinvs2010.jpg

Cross Compiler Settings QMake erstellt im Hintergrund Compiler spezifische Exe/DLL oder SO/Libs
http://img513.imageshack.us/img513/2121/qccomilerfeat.jpg

@Frank
Jo, man kann das Imagetag natürlich verwenden.Man braucht halt einen Bildhoster sonst sieht man halt nix:)

eeralfcosmo
05.11.2011, 11:59
btw:3d,du ,ihr habt alle sterne,und scwarze loecher und alles was es so gibt in einem schema????ß


nein
ich scheiss drauf

Bernhard
05.11.2011, 12:03
Du musst mich da glaube ich nur anklicken und inviten.
Ich habe Dich eben als Developer auf der Seite gefunden und Dir Schreibrechte zugewiesen. Ich weiß aber nicht, ob das schon ausreicht. Eine Code-Verwaltung wäre schön.


Die QT Version ist übersetzbar.
Der zugehörige Quelltext würde sich auf der sourceforge-Seite, meine ich, recht gut machen :o . Schau mal, ob Du das jetzt dort veröffentlichen kannst.
Gruß

Bernhard
05.11.2011, 12:04
ich scheiss drauf
Hallo Ralf,

ich habe deinen Beitrag eben gemeldet. Bitte überlege dir zukünftig etwas besser, was du hier einstellst oder lass es einfach bleiben.
Danke.

Webmaster
05.11.2011, 12:20
btw:3d,du ,ihr habt alle sterne,und scwarze loecher und alles was es so gibt in einem schema????ß


nein
ich scheiss drauf

Würden Sie bitte auf Ihre Ausdrucksweise achten? Andernfalls muss ich Sie wegen Störens der Diskussion verwarnen. Vielen Dank. S. D.

eeralfcosmo
05.11.2011, 12:49
entschuldigung meine ausdrucksweise, aber gemeint habe ich das schon in richtiung universum, ich werde das nicht mehr tun, sry

eeralfcosmo
05.11.2011, 12:57
benhard, ich glaube nicht das ich auf irgendwas antworten muß, du must dir ueberlegen ob die teilclchen so sind oder so, du hasst ein problem?, ok weit her geholt, aber das leben ist so

eeralfcosmo
05.11.2011, 13:08
ob jemand ja oder nein sagt, an was haengt das, an quarks, , protonen, atomen, molekuelen, oder nur wechselwirkung?
, ich hab keine ...

Bernhard
05.11.2011, 13:30
Hi Ralf,

ich denke Du weißt einfach nicht, um was es in diesem Thema hier geht. Als kleinen Tip empfehle ich Dir deswegen erst mal die Lektüre dieses W-Artikels: http://de.wikipedia.org/wiki/Sternkarte. Quarks & Co. haben in diesem Thema nichts zu suchen.

Deinen Beitrag habe ich übrigens gemeldet, um Dich daran zu erinnern, dass hier nicht alles erlaubt ist.
Gruß

pmvstrm
05.11.2011, 16:00
Der zugehörige Quelltext würde sich auf der sourceforge-Seite, meine ich, recht gut machen :o . Schau mal, ob Du das jetzt dort veröffentlichen kannst.
Gruß

Hi Bernhard,
Ich würde vorschlagen das wir uns auf Mercurial als OpenSource Versionskontrollsystem verständigen. Um es zu aktivieren musst
Du bei Sourceforge im Administrationsbereich unter Tools einen Mercurial Mountpoint einrichten. Default steht da immer nur "Code"
aber das solltest Du gegen etwas sinnvolles wie M3DS oder so ersetzen als Kurzbezeichnung ersetzen. Dann musst Du mich
unter den Usern in die Gruppe Developer packen (unter Permisions). Zu den anderen SCM Systemen. CVS ist zu alt und
wird von Sourceforge nicht unterstützt. Subversion wirft ziemlich viele Fehler und funktioniert momentan wohl nur über
HTTPS Upload und es ist extrem langsam. Mercurial hat bei allen noch am besten abgeschnitten (zumindest was das
den Standalone Client betrifft). In QTCreator gibt es zwar eine Integration aber die nutzt den Standalone Client und da
hapert es zumindest bei mir noch momentan. Ist aber nicht so wichtig, notfalls kann man zum Versionieren auch
einfach den Mercurial Standalone Client nutzen.Er integriert sich in den Windows Explorer und man nimmt
seine Files, packt sie in den Versionskontrollordner und fügt diese dann per Click hinzu.
Das hätte Sourceforge auch alles etwas einfacher gestalten können:cool:

Bernhard
05.11.2011, 17:27
Ich würde vorschlagen das wir uns auf Mercurial als OpenSource Versionskontrollsystem verständigen.
OK.

Um es zu aktivieren musst Du bei Sourceforge im Administrationsbereich unter Tools einen Mercurial Mountpoint einrichten. Default steht da immer nur "Code"
aber das solltest Du gegen etwas sinnvolles wie M3DS oder so ersetzen als Kurzbezeichnung ersetzen.
Habe ich gemacht. Der Mountpoint heisst my3dsc.

Dann musst Du mich unter den Usern in die Gruppe Developer packen (unter Permisions).
Gib mir bescheid, wenn Du keine Schreibrechte auf dem Repository hast.

BTW: Genaugenommen bräuchten wir mindestens zwei, besser drei Repositories. Eines für die zukünftige Qt-Version und eines für die bestehende MFC-Version. Eventuell dann auch noch eines für eine .NET-Version. Geht so etwas, oder hat man pro Projekt immer nur eine Repository zur Verfügung?
Gruß

pmvstrm
05.11.2011, 17:36
@Bernhard

Man kann da Forks über das Webadmin Menü bei Sourceforge einstellen, ich glaube damit kann man das machen.

Was die Rechte betrifft, so habe ich momentan auf "my3dsc" RO (Read only) Rechte. Ich glaube da muss ich noch
in die Developerliste rein oder so.

Update:

So, lesenden Zugriff habe ich jetzt mit dem Mecurial Standalone Client auf my3dsc
Brauche nur noch die Schreibrechte.

Bernhard
05.11.2011, 18:00
Brauche nur noch die Schreibrechte.
Hallo P.

ich schaue es mir nochmal an. Wenn ich nichts finde schicke ich eine eMail an den Support. Dort habe ich bis jetzt immer innerhalb einiger Tage kompetente Antworten bekommen.

pmvstrm
05.11.2011, 18:05
Hi

Bernhard! Nun klappt es! Habe mal eine Test Textdai eingecheckt. Was für ein Akt:)

Bernhard
05.11.2011, 18:14
Nun klappt es!
OK. Hatte Dir gerade noch eine PN geschickt. Die kannste dann löschen.

Ich werde mir als nächstes dann mal den Qt Creator ansehen. Ab Montag kann ich dann auch mit passender Doku mitprogrammieren.
Gruß

pmvstrm
05.11.2011, 18:29
@Bernhard.

So, erstes initial Release der QT Version ist nun drin.
Es ist aber nur der Programmrumpf, deine Darstellungsfunktion fehlt noch.
Damit Du das runterladen kannst, brauchst Du auch noch unbedingt das hier:

http://tortoisehg.bitbucket.org/download/index.html

Nach der Installation hast Du im Win Explorer (Dateisystem Explorer)
so ein weiteres Kontextmenü. Damit kannst Du die Files in einen Ordner auschecken.
Das Ausschecken heisst bei Mercurial aber "clonen". Willst Du etwas hinzufügen, musst
Du die Dateien erst hinzufügen, dann lokal commiten und dann erst syncronisieren.
Sonst macht der gar nichts und 'Du suchst nach dem Fehler ewig und 3 Tage.
Was mir aufgefallen ist.Momentan geht nur SSH Upload (nicht über HTTPS 403 Fehler)
Am besten Du machst beim syncronisieren vorne SSH als Uploadtyp. Wenn es korrekt
ist fragt er nach Username und Passwort, dann dauerts einen Moment aber er lädt hoch.

Grüße. P

Bernhard
05.11.2011, 21:06
Hallo pmvstrm,

habe jetzt TortoiseHg auf meinem Rechner (Win32). Mir ist dabei aber noch nicht klar, wie ich das Ding dazu bringe, die von Dir eingespielten Dateien zumindest mal anzusehen. Kommt TortoiseHg auch ohne eine SSH-Client zurecht, oder sollte ich den noch installieren? Einen plausiblen Servernamen habe ich im Einstellungen-Dialog bereits eingetragen.

pmvstrm
05.11.2011, 22:01
Hallo Bernhard,

Ja damit musste ich mich auch abärgern aber Mercurial ist da doch noch netter als CVS oder gar GIT:)

Ok, zum runterziehen kann man so vorgehen:

Step 1)
http://img401.imageshack.us/img401/3717/step1bp.jpg

Step 2)
http://img193.imageshack.us/img193/5049/step2yg.jpg

Achtung:
Sourceforge gibt die Mercuria Befehle immer so aus, als ob man von der Kommandozeile
aus arbeiten würde aber Mercurial braucht das Format im Bild 1! Benutzername muss
natürlich dein gültiger Sourceforge Benuzername sein, danach wirst Du nach deinem
Sourceforge Passwort gefragt.

Ok, hoffe das hilft.

Habe gerade noch ein update gefahren und den ersten Code aus deinem MFC Programm per
Paste & Copy eingefügt (Messier, Sterne, Einstellungen u.s.w).

Hier noch mal zur Übersicht. Falls es gar nicht geht kann man auch jede einzelne Datei runterladen (über
den Browser und in irgend einen Ordner werfen und dann mittels QTCreator die *.pro Datei öffnen)
http://sourceforge.net/p/my3dstarchart/my3dsc

SSH Nachtrag


Kommt TortoiseHg auch ohne eine SSH-Client zurecht, oder sollte ich den noch installieren?


Also ich weiß nicht ob er Putty auf meinem Rechner gefunden hat aber Tortoise SVN wollte den wissen,
deshalb lade Dir am besten putty.exe (win32 SSH-Terminal) plink.exe (SSH-Remote Batchbefehle) und
pscp.exe (mit SSH Dateien von Windows nach Linux/Unix/Mac transferieren.Ich hab die drei Exe Files
in den C:\Windows Ordner gepackt, da findet es jedes andere Programm und wenn nicht weißt Du
wohin der Pfad zeigen muss.

Putty Download
http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html

ps2: Ich kann es nicht mit Sicherheit sagen ob das jetzt nur TortoiseSVN (Subversion Client) betrifft oder
auch TortoiseHJ (Mercurial Client). Aber es war glaube ich TortoiseSVN. Das Ding hatte einen freeze bei der
authentifizierung gegen den Sourceforge SSH-Server. Ich hab dann einfach via Putty einmal direkt an
den sourceforge SSH eingeloggt und mit den RSH Key für die Verschlüssellung geholt, danach gings.
Aber kann sein das es für Mercurial egal ist (nur für den Fall das Du nen SSH Fehler siehst, so kann man
ihn umgehen).

Grüsse, Peter

Bernhard
05.11.2011, 23:13
Hallo Peter,

habe jetzt das Repository lokal auf meinem Rechner. Qt Creator habe ich installiert. Das Projekt wird fehlerfrei kompiliert. Beim Starten der exe im Debug-Verzeichnis wurden zuerst zwei dlls nicht gefunden (z.B. mingwm10.dll). Ich habe deshalb zwei neue Einträge in der PATH-Variable gesetzt, vermute aber, dass da noch ein ganzes Softwarepaket fehlt. Richtig?
Gruß und Danke schon mal für die vielen Tips.

pmvstrm
05.11.2011, 23:25
Hi Bernhard

das hört man gerne:)

QTCreator bringt sein eigenes QT mit (du kannst aber jede menge andere Versionen parallel installieren z.B für
andere Compiler optimiert wie den Intel, den Microsoft oder Borland) das ist dem Ding wurst:)

Standardmässig installiert der QTCreator sein eigenen QT unter
c:\QtSDK\Desktop\Qt\4.7.4 (wenn Du ihn nach C:\ installiert hast)

Achtung:
MinGW ist ja der Linux/Unix GCC Compiler (die Windows Version davon). Programme die damit erstellt
wurden (also auch QTCreator selbst) brauchen manchmal diese Datei. Die ist aber nicht von QT selbst
sondern gehört zum Gnu GCC Compiler!

Bin gerade beim rüberziehen der Funktionen aus der MFC App.
Achtung: Wenn Du Paste & Copy machst von Visual C/C++ Editor in den QTCreator Editor,
dann kopiere das lieber erst in den Windows Notepad.exe und dann von dort nach QTCreator,
sonst zeigt QTCreator Dir fehler an, da sind wohl unsichtbare Sonderzeichen beim Paste & Copy sonst drin.

Update:
So hab jetzt 6.11.2011 00:06 Uhr noch etwas commited.



private:
long m_DeltaX;
long m_DeltaY;
double m_Zoom;
long m_breite;
long m_hoehe;

CMessier* m_ptr;
long m_anz1;

CSterne* m_ptr1;
long m_anz2;

long m_Katalog;

// Beobachter
long m_RAh_obs;
long m_RAm_obs;
long m_RAs_obs;
long m_Dg_obs;
long m_Dm_obs;
long m_Ds_obs;
double m_Dist_obs;
long m_vRAh_obs;
long m_vRAm_obs;
long m_vRAs_obs;
long m_vDg_obs;
long m_vDm_obs;
long m_vDs_obs;

double m_x_obs;
double m_y_obs;
double m_z_obs;

double m_x_v1;
double m_y_v1;
double m_z_v1;

double m_x_v2;
double m_y_v2;
double m_z_v2;

double m_x_v3;
double m_y_v3;
double m_z_v3;


protected:
void paintEvent(QPaintEvent *);
void UpdateParameter();
void RA2Phi(double &phi, long h, long m, long s);
void D2Theta(double &theta, long deg, long m, long s);
void Phi2RA(double phi, long &h, long &m, long &s);
void Theta2D(double theta, long &deg, long &m, long &s);
void Links();
void Rechts();
void Oben();
void Unten();

void ZeichneStern6(int x, int y, QPainter* pdc);


ist nun drin und bist auf ZechneStern6 laufen die andern.

Gute Nacht.

Grüße, Peter

Bernhard
06.11.2011, 06:47
Guten Morgen Peter,

habe gerade sämtliche dlls aus dem Verzeichnis C:\QtSDK\Desktop\Qt\4.7.4\mingw\bin in den Windows-Systemordner kopiert. Dann kann man die kompilierte exe auch per Mausklick starten. Ab jetzt können wir auch gemeinsam an der Qt-Portierung arbeiten. Für die Qt Details muss ich mir aber voraussichtlich noch ein passendes Buch (J. Wolf, "Qt4 - GUI-Entwicklung mit C++") dazu ausleihen.
Gruß

pmvstrm
06.11.2011, 12:29
Moin Moin Bernhard,
Ok das hört sich gut an.:)

Die DLL Datei für den GNU GCC Compiler für Windows (MinGW) der beim QTCreator dabei ist braucht manchmal
diese und noch andere Dateien (wie bei Windows halt die mfc42.dll u.s.w) die aber alle im QTCreator Ordner
drin sind. Wenn man lieber eine große Exe möchte, dann kommt man leider nicht umhin und muss QT auf der
Kommandozeile einmal voll durch kompilieren und zwar mit den Einstellungen für den Buildtyp static. Dann
wird aber schon eine HelloWorld Exe ca. 15 bis 20 MByte groß:D

Es gibt also zwei Varianten. Wir packen einen Installer für den Download des Releases bei und / oder
eine gezippte Version zur manuellen Installation.

Die Setup.exe kann ich erstellen. Da kann man den Nullsoft OpenSource Installer nutzen, der von
vielen Programmierern verwendet wird. Die Downloads sind dann auch kleiner als gezippte oder RAR
Dateien. Sobald das später soweit ist, packe ich einfach das Installerscript Projekt bei. Das kann
man dann mit dem Nullsoft Installer Compiler builden und fertig ist das Setup.

Bernhard
06.11.2011, 19:08
Die Setup.exe kann ich erstellen.
Prima. Bin froh, wenn ich da nichts machen muss.

Bei der Portierung sehe ich die folgenden Arbeitspakete auf uns zukommen:
1.) Programmierung der grafischen Darstellung mit QPaint
2.) Portierung der Mouse- und Keyboard-Events
3.) Portierung der Datei-Auslesefunktion
4.) Portierung der Berechnungsmethoden

3 und 4 würde ich mir auch alleine zutrauen. Bei 1 und 2 braucht es etwas mehr und spezielleres Qt-Know-How...

Dass der Rumpf schon mal steht ist eine prima Basis. Werde mir jetzt noch die Commits von heute ansehen.
Gruß

pmvstrm
07.11.2011, 13:03
Hallo Bernhard.
Ich habe mal ein Videotutorial zu Slots bezüglich des QTDesigners erstett (mein erstes überhaupt:))

QTDesigner und Slot-Events für einen Button

http://www.youtube.com/watch?v=GT-TppcuaI8

QTDesigner und zusätzliche Dialoge per Menü oder Button-click aufrufen

http://www.youtube.com/watch?v=8ZYHl9rGFWs*


ps:
Die Aufteilung finde ich gut.Noch ein Hinweis zu Mercurial.Wenn Du die alten, ausgecheckten Sourcecodes nichtm ehr brauchst, dann
würde ich ein erneutes "frisches" auschecken vorschlagen. Ich werde zum einchecken und synkronisieren sowie zum Merge auch noch
ein kurzes Video machen denke ich

Grüsse, Peter

Bernhard
07.11.2011, 13:20
Ich werde zum einchecken und synkronisieren sowie zum Merge auch noch
ein kurzes Video machen denke ich
Hi Peter,

wie mergen funktioniert weiß ich. Und genau deswegen möchte ich vorschlagen, dass wir die Arbeit vorher so aufteilen, bzw. so weit festlegen, dass ein mergen gar nicht mehr nötig ist. Wir könnten z.B. festlegen, dass Du jeweils Mo,Mi,Fr,(So) Code einarbeitest und ich an den verbleibenden Tagen. Wenn dann die Themen verteilt sind, sollte das gut klappen. Ich denke spätestens in einem Monat sollten wir dann alles fertig haben, falls die Mouse-, und Keyboard-Events portierbar sind. Ansonsten müsste man den Zoom noch mit in den Einstellungen-Dialog einbauen.

EDIT: Zum Einlernen in Qt werde ich auch das Buch von Jürgen Wolf, "Qt 4 GUI-Entwicklung mit C++" benutzen. QtDesigner und Slots kenne ich noch von Qt3. Damit habe ich bereits mehrere simple Anwendungen erstellt, die auch grafische Elemente hatten. Besonders stolz bin ich auf einen "Klickety-Solver" :) . Dieses Programm hatte optimierte Lösungen für das Gadget "Klickety" berechnet und hat auch auf Mouse-Events reagiert. Alles noch mit Qt3.

pmvstrm
07.11.2011, 14:48
@Hi Bernhard

Naja das ist dann ja perfekt, dann können wir uns mehr auf die Programmierung konnzentrieren:)
Aber dennoch ist das nicht falsch das wir uns hier Tips und Tricks geben denke ich, denn wenn andere die
auch zum Projekt beitragen wollen ein paar Infos brauchen können Sie hier nachschauen:)
Ich bin schon auf deine ersten commits gespannt. Ich denke die Programmlogik deines MFC
Programms verstehst Du auch am besten.Ich denke der Zeitplan der Dir vorschwebt ist bei
zwei Programmierern realistisch.

Ok damit wir anfangs die Merges vermeiden, kümmere ich mich erstmal um die Builds und
Bereitstellung der Installerpakete damit wir pünktlich zu Weihnachten eine Betaversion
releasen können :D

Ich denke wir können
Für Windows XP/Vista/Win7 32/64-Bit nehmen wie *.MSI Pakte
Für Linux gibt es Debian DEB Pakete (32 und 64 Bit).
Für Mac OS X stellen wir DMG Volumes zur verfügung.


Grüße, Peter

sebix
07.11.2011, 17:22
Super, dass das hier weitergeht. Hätte mich nicht gedacht, dass dadurch eine Qt-Version entsteht.

Ich hoffe ich komme auch dazu, etwas beizusteuern, dann würde mein Buch zu Qt 4.6 endlich benutzt werden :)
Das soll aber nicht heißen, dass ich mich damit auskenne, hatte das letze Mal vor 2 Jahren da rein geschaut.
Praktischerweise ist dort auch ein Kapiter zu QPainter. Bernhard, weißt du ob sich SVG's (in Qt) verzerren lassen? Ansonsten QPixmap mit drawPoints()

@pmvstrm: Nächster Meilenstein wäre eine stable-v. rechtzeitig für Precise Pangolin :D

P.S.: Nokia hat Qt abgetreten, das ist nun eigenständig!

Bernhard
07.11.2011, 18:13
Bernhard, weißt du ob sich SVG's (in Qt) verzerren lassen? Ansonsten QPixmap mit drawPoints()
Hallo sebix,

gleich mal willkommen an "Bord".

Die Darstellung der Karte ist aktuell ziemlich primitiv. Ich habe da einfach den Winkel (wird über ein Skalarprodukt berechnet) von der Blickrichtung weg als linearen Maßstab hergenommen. Das zaubert sehr schnell nette Bildchen und mehr wollte ich anfangs auch gar nicht haben.
Gruß

sebix
07.11.2011, 19:24
Das Koordinatensystem lässt sich beliebig transformieren, mit QPainter::worldTransform(). Gute Dokumentation dazu hab ich leider noch nicht gefunden, auch nicht ob sich damit Verzerrungen realisieren lassen.

http://doc.qt.nokia.com/latest/qpainter.html#coordinate-transformations

Bernhard
07.11.2011, 19:46
damit wir pünktlich zu Weihnachten eine Betaversion
releasen können :D
Hallo Peter,

dann fangen wir gleich mal mit den Grundlagen an. Ich wollte eben gerade mal die ui-Datei des Hauptfensters von allen Controls befreien, um eine freie Fläche zum Zeichnen der Sternkarte zu bekommen. Das Anpassen der ui-Datei hat zwar geklappt, nur wie kann ich jetzt die veränderte Datei mainwindow.ui einchecken?
Gruß

pmvstrm
07.11.2011, 22:53
Hi Bernhard,

Also ich checke die Sachen niemals direkt über den QTCreator ein, da das bisher in den Tests nie richtig funktioniert hat.
Die UI Dateien sind eigentlich menschenlesbare XML-Textdateien. Der QT Designer parst mehr oder weniger die XML
Tags und macht aus den visuellen Objekten Buttons (eigentlich besser als wie bei MFC das gewusel mit den RC Multibyte
Gedöns :D

Eine Warnung vor weg:
Bevor Du eincheckst, würde ich vorschlagen das Du noch mal komplett "frisch" auscheckst, da ich gestern ziemlich
lange an der MainWindows.h und MainWindows.cpp gearbeitet habe. Falls Du da Codeänderunge hast, speichere
die am besten kurz in teinem Textfile zwischen und nach dem check out pflegst Du deinen Code ein.
Mit dem neuem Checkout arbeitest Du jetzt fortan rein mit add+commit (bei neuen Files) commit (bei Ändernungen)

Das Mercurial checkin
Ich benutze nie die Mercurial Integration in QTCreator weil die irgendwie nicht so funktioniert (ist zumindest mein
Eindruck). Ich gehe also direkt in den Prokektordner \my3dsc und suche mir nur die Files raus die ich entweder im
QTCreator neu angelegt, geändert oder die ich in den Ordner geworfen habe (z.B irgendwelche CSV Dateien oder
so). Dann klicke ich mit der rechten Austaste "add files" für die neuen Dateien oder HG Commit falls NUR
Änderungen JEDOCH keine NEUEN Dateien dazu gekommen sind. Nach adden der neuen Files und HG Commot
auf die geänderten Filles ist das lokale commit in Mercurial fertig (bitte nicht die Ordner Debug/Release oder HG
einchecken!!! (immer die einzelnen Fils die sich geändert haben gezielt markieren und committen.

Dann der letzte Schritt. Du gehst raus aus dem Projektordner und eine Verzeichnisebene davor,
so das Du quasi nicht mehr im Projektordner bist sondern einen davor. Du siehst den Projektordner
"my3dsc" und klickst dann die Rechte Maustause. Dann siehst Du im Popupmenü nun eine ganze
Menge weiter HGMercurial Menüpunkte die vorher ausgeblendet waren. Da gehst Du auf Syncronisieren.
Als nächstes kommst Du in die Workbench. In der Zeile wo Du den Server für Sourcefoge hinterlegt
hast, steht vorne der Typ der Verbindung (steht standardmässig auf HTTP) das funktioniert aber nicht.
Stell das mal auf SSH um und klick dann auf den Butto Syncronisieren. Dann fragt er Dich noch mal,
ob Du wirklich an den Remoteserver commiten willst und Du bestätigst mit "yes".
Als nächste will er deinen Sourceforge Username haben und das dazugehörige Passwort.
Dann dauerts einige Sek und das wars.

Als nächstes kannt Du hier sehen obs geklappt hat:
http://sourceforge.net/p/my3dstarchart/my3dsc/

Ok das wars.

Grüsse, Peter

pmvstrm
07.11.2011, 23:09
ps: Ich war auch nicht faul und der Windows MSI Paket Installer für das Projekt ist fertig.
Morgen kümmere ich mich um den Mac und Linux.

Hier unser neuer MSI Windows Installer: (Windows Installer 2.0 compliant

Startup
http://img716.imageshack.us/img716/7202/setup1win32.jpg

Installaction
http://img59.imageshack.us/img59/465/setup2win32.jpg

Endergebnis
http://img855.imageshack.us/img855/7217/setup3win32.jpg

Der Installer läuft und kann eingesetzt werden.

Das gesamte Installer Projekt basiert auf WIX (Windows Installer XML)
http://wix.sourceforge.net/index.html Eines der wenigen M$ OpenSource
Projekte. Installer Compiler und Linker bekommt man auf Sourceforge.
Dann kann man mit einem Texteditor seiner Wahl den XML-Source
für den Installer coden und am Ende (wenn alles gut geht, bekommt
man einen Installer dabei raus:)

Das Installerscript + Manual wie man WIX für die Kompilation aufsetzt
commit ich auch noch in einen Unterordner ein. Müssen uns bloss über
die Ordnerstruktur klar werden.

Gute Nacht,
Peter

Bernhard
08.11.2011, 04:32
Hallo Peter,

bin jetzt doch ein Stückchen voran gekommen und konnte schon mal einen kleinen Testhintergrund der Sternkarte zeichnen:


QPoint cPoint(100,100);
QBrush cBrush;

cBrush.setStyle(Qt::SolidPattern);
cBrush.setColor(QColor(0,0,32));

painter.setBrush(cBrush);
painter.drawEllipse(cPoint, 20, 20);
Die Farbe stammt aus Cartes Du Ciel und hat einen winzigen Anteil Blau, was dem Nachthimmel recht nahe kommt.

Den Button zum Laden des Katalogs würde ich auch gerne ausbauen. Für den Benutzer ist es denke ich am einfachsten, wenn das Programm beim Starten automatisch den besten vorhandenen Katalog lädt.

Ich habe auch versucht, meine Änderungen mit "Synchronisation" auf den Sourceforge-Server zu laden. Kannst Du bitte kontrollieren, ob und wo da etwas angekommen ist?

Gruß Bernhard

EDIT: Die Online-Doku zu Qt erscheint durchaus brauchbar zu sein. Bin jetzt wieder etwas optimistischer.

pmvstrm
08.11.2011, 07:27
Guten Morgen Bernhard,

Das freut mich das es bei der Darstellung der Sternenkarte voran geht (ist ja auch das wichtigste Feature des Programms):)
Das beim starten alles geladen wird was da ist, ist auf jeden Fall eine gute Idee. Vielleicht sollten wir uns irgendwann in der
Zukunft noch mal darüber Gedanken machen wie und wo wir grundsätzlich die Daten hernehmen (vielleicht ist ja
der Astronews Webmaster so nett und spendiert uns einen PHP+MySQL Zugang dann könnten wie die Daten aus einer
zentralen Quelle abfragen die man hier vom Forum aus aktuell halten könnte (aber das ist nur so eine Idee und wir sind
ja nicht in Zeitnot) :)

Was deine Commits gegen den Sourceforgeserver angeht muss ich jedoch sagen das keine neuen commits (ausser
meine bisher eingegangen sind).

Hier kann man die aktuellen Änderungen einsehen (die obersten sind die aktuellsten)
http://sourceforge.net/p/my3dstarchart/my3dsc/commit_browser

Vermutlich hast Du nur lokal commited aber die Syncronisation nicht durchgeführt (den Fehler habe ich am
Anfang auch gemacht;) )

Grüße, Peter

Bernhard
08.11.2011, 09:11
Vielleicht sollten wir uns irgendwann in der
Zukunft noch mal darüber Gedanken machen wie und wo wir grundsätzlich die Daten hernehmen (vielleicht ist ja
der Astronews Webmaster so nett und spendiert uns einen PHP+MySQL Zugang dann könnten wie die Daten aus einer
zentralen Quelle abfragen die man hier vom Forum aus aktuell halten könnte (aber das ist nur so eine Idee und wir sind
ja nicht in Zeitnot) :)
Hallo Peter,

diese Idee ist naheliegend, aber vermutlich zu aufwendig, weil sich z.B. an dem Hipparcos-Katalog für unsere Zwecke nichts mehr ändern wird. Zusätzlich würde das die Applikation unnötig aufblähen, weil dann der lokale Anwender bei jedem Programmstart die Daten erst aus dem Netz laden müsste. Vebuchen wir das vorerst einfach als Zukunftsvision. Die Qt-Schnittstelle zu MySQL-Datenbanken ist trotzdem eine gute Motivation sich mit Qt zu beschäftigen.

Das Laden von der lokalen Platte ist mit den alten C-Funktionen fopen und fclose maximal leicht zu machen und ist bei den Datenmengen IMHO noch gut zu vertreten. Man muss nur nachsehen, wie man sich den Pfad zum aktuellen Arbeitsverzeichnis verschafft. Würde mich aber sehr wundern, wenn es da keine fertigen Qt-Funkionen dafür gäbe.


Vermutlich hast Du nur lokal commited aber die Syncronisation nicht durchgeführt (den Fehler habe ich am
Anfang auch gemacht;) )
Komischerweise wurde ich beim Synchronisieren nach dem sourceforge-Passwort gefragt. Ich werde es mir aber nochmal genauer ansehen. Danke.

Gruß Bernhard

Runzelrübe
08.11.2011, 10:20
Zum Ersten finde ich es echt gut, dass ihr euch zusammengefunden habt. Mal sehen, was aus dem Projekt wird. :)


vielleicht ist ja der Astronews Webmaster so nett und spendiert uns einen PHP+MySQL Zugang dann könnten wie die Daten aus einer
zentralen Quelle abfragen die man hier vom Forum aus aktuell halten könnte (aber das ist nur so eine Idee und wir sind
ja nicht in Zeitnot)

Zum Zweiten würde ich euch davon abraten, eine Datenbank zu verwenden, die in einem nichtöffentlichen Teil des Internets steht, wenn ihr eine publizierbare Applikation inklusive Sourcecode(!) ausgebt. Sonst heißt es: "Willkommen in der Scheune.", denn schliesslich muss der ConnectionString zur Datenbank funktionieren.

Solch ein Ansinnen zur Datenhaltung bedarf einer eigenständigen Webapplikation mit gesicherter Authentifizierung und Historie. Eine Synchronisierung mit Bernhards Programm dürfte dann, wenn überhaupt, nur per Interface und nur in eine Richtung erlaubt sein (das kommt einem Download gleich, der aber keinerlei Ahnung von der Datenbankanbindung haben darf).

pmvstrm
08.11.2011, 11:00
Hallo Peter,

diese Idee ist naheliegend, aber vermutlich zu aufwendig, weil sich z.B. an dem Hipparcos-Katalog für unsere Zwecke nichts mehr ändern wirdM Qt-Schnittstelle zu MySQL-Datenbanken ist trotzdem eine gute Motivation sich mit Qt zu beschäftigen.


Jo. MySQL wird direkt von QT unterstützt. Für einfache Zwecke kann man man aber auch das beiliegende SQLLite verwenden.
Der Vorteil bei SQLLite ist, das Du die DB Engine direkt in die Applikation linken kannst und keinerlei Drittanbieter Setups benötigst,
keine Adminrechte u.s.w. ca. 2GByte Textdaten kann man pro SQLLite DB File verwalten meine ich.MySQL ist ebenso einfach
anzusprechen und hat natürlich tolle Features wie UDF und Storedprocedures, Triggers und Views und seit Version 5 sogar
Cronjob artige Events. Ich mag aber MySQL nicht mehr so gerne seit es ORACLE gehört. Falls wir mal was mit DBs machen würde
ich mich über Postgres freuen, die Datenbank wurde sogar historisch für die Verwaltung in der Astronomie entwickelt aber
Postgres kann unendliche viele Dinge mehr die ich einfach nur stark finde (aber ich beuge mich der Mehrheitsentscheidung,
MySQL, Firebird, SQLLite, Apache Derbry sind auch gute DB's :)

Das Laden von der lokalen Platte ist mit den alten C-Funktionen fopen und fclose maximal leicht zu machen und ist bei den Datenmengen IMHO noch gut zu vertreten. Man muss nur nachsehen, wie man sich den Pfad zum aktuellen Arbeitsverzeichnis verschafft. Würde mich aber sehr wundern, wenn es da keine fertigen Qt-Funkionen dafür gäbe.

Klaro:D


#include <qdir.h>
QDir currentDir = QDir::current();
currentDir.setFilter( QDir::Dirs );
// Aktuelles Verzeichnis wo die Exe liegt
// QStringList entries = currentDir.entryList();




Komischerweise wurde ich beim Synchronisieren nach dem sourceforge-Passwort gefragt. Ich werde es mir aber nochmal genauer ansehen. Danke.


Ja, das ist absolut normal. Aber das ist das Zeichen das Du korrekt comitted hast. Commit auf deine Projektordner Files
sind nur lokale commits aber nicht Sourceforge comits:) Beim Syncen schickt er dann alles hoch und deine ganzen Schandtaten
werden sichtbar!

Grüße Peter

pmvstrm
08.11.2011, 12:03
Hi,

Zum Ersten finde ich es echt gut, dass ihr euch zusammengefunden habt. Mal sehen, was aus dem Projekt wird. :)

Jo aber da steckt noch viel Arbeit drin und deshalb sind helfende Hände mit profunden Kenntnissen in WebApplikationenx,Datenmanagement
und einer Leidenschaft für Astronomie, C/C++, OpenSource mehr als willkommen :)



Zum Zweiten würde ich euch davon abraten, eine Datenbank zu verwenden, die in einem nichtöffentlichen Teil des Internets steht, wenn ihr
eine publizierbare Applikation inklusive Sourcecode(!) ausgebt. Sonst heißt es: "Willkommen in der Scheune.", denn schliesslich muss der ConnectionString zur Datenbank funktionieren.


Da sprichst Du auf jeden Fall wichtige Punkte an.



Solch ein Ansinnen zur Datenhaltung bedarf einer eigenständigen Webapplikation mit gesicherter Authentifizierung und Historie.
Eine Synchronisierung mit Bernhards Programm dürfte dann, wenn überhaupt, nur per Interface und nur in eine Richtung erlaubt sein
(das kommt einem Download gleich, der aber keinerlei Ahnung von der Datenbankanbindung haben darf).

Das sehe ich ebenso. Vielleicht sollte man sich dazu irgendwann mal anschauen wie Google Earth (das Windows QT Programm)
das macht. Aber das hat keine Priorität. Erstmal schauben wir bis Ende des Jahres an einer stable 1.0 Version und danach
sollten wir die besten Ideen aufgreifen, diskutieren und abstimmen.Ich bin da ganz Basisdemokrat:)

Grüße, Peter

pmvstrm
08.11.2011, 17:27
So, es hat zwar noch etwas Feinschliff bedurft und einen Tag Arbeit mehr,
aber nun sind die Win32 und Win64 Builds für das Projekt erstellt, fertig verpackt
und haben ebenfalls jeweils ein 32-Bit / 64 konformes Setup.

Die 32-Bit Variante läuft auf jedem Windows System ab

Windows 2000 SP4 32-Bit x86 (geprüft)
Windows XP SP3 32-Bit x86 (geprüft)
Windows Server 2003 32-Bit x86 (geprüft)
Windows Vista SP2 32-Bit (geprüft) mit und ohne UAC
Windows Vista SP2 64-Bit (geprüft) mit und ohne UAC
Windows 7 32-Bit (geprüft) mit und ohne UAC
Windows 7 64-Bit (geprüft) mit und ohne UAC

Die Windows 32-Bit Version wurde mit dem GCC 4.4 für Windows (MinGW) kompiliert (release config) erstellt.
Die Windows 64-Bit Version wurde mit dem MS-Visual C/C++ 2010 Compiler (release config) erstellt.

Das Setup ist mit einem Texteditor und den freien MS-Build Tools erstellbar
http://img28.imageshack.us/img28/6019/msbuildwixsln.jpg

32 Bit und 64-Bit Installation in Action
http://img98.imageshack.us/img98/2790/3264bits.jpg

http://img838.imageshack.us/img838/925/stepinstall.jpg

Die Arbeiten am Windows Setup sind damit abgeschlossen. Bei neuen Builds
können wir das Deployment jetzt autoamtisch durchführen. Neue Setups für
die jeweilige Win32/Win64 Platform sind in Min erstellt.:)

Schönen Feierabend,
Gruß Peter

Bernhard
08.11.2011, 18:26
Hi Peter,

habe jetzt eine neue Version eingespielt :) . Diese Version zeichnet den Hintergrund und drei sehr helle Sterne in die Mitte.

Eigentlich würde ich die Portierung die nächsten Tage gerne alleine weiter machen, weil ich den Quellcode natürlich recht gut kenne und die Funktionsweise von Qt auch recht klar ist. Wäre das OK?
Gruß

pmvstrm
08.11.2011, 18:52
Hi Bernhard,
Ja, das geht absolut in Ordnung.
Ich habe ja mit den Setup Sachen für Mac und Linux noch genug zu tun.
So schnell wird mir nicht langweilig.Wir sollten nur drauf achten das die Commits
auf Sourceforge sauber kommentiert sind so das man weiß was wann wie geändert wurde.
Auch der Quellcode kann einige Kommentare zur Erklärung vertragen, so das Neulinge nicht
vor einem Schwarzen Loch stehen:)

ps:
Wie machen wir das mit den Setup Files generell?
Momentan kannst glaube ich nur Du auf den Files Bereich zugreifen um z.B eine Setup.exe,
Daten und Wikis zu erstellen (ich denke das Wiki würde sich für die Doku gut eigenen).

Grüße Peter

sebix
08.11.2011, 19:37
Bernhard, Du hast geschrieben (vor dem Edit), dass die Portierung einfach wäre. Es wäre aber genial, wenn wir es auch elegant hinbekommen würden (Damit meine ich das Verzerren des Koordinatensystems). Wenn es nicht funktioniert, bleibt immernoch die alte Variante, die Position über den Winkel zu berechnen.

Ich habe soeben meinen ersten Commit eingespielt, für einen Test ganz schön umfangreich. Mit Nicht-UTF8 Files wehrt sich mein QtCreator die Dateien zu bearbeiten :D

Wer Links zu unkomplizierten Mercurial-HowTos und Cheatsheets braucht: Ich hab da einige Links gesammelt, da ich es selbst noch nicht kannte (Ich arbeite aber mit hg auf der Shell)

Bernhard
08.11.2011, 19:38
Momentan kannst glaube ich nur Du auf den Files Bereich zugreifen um z.B eine Setup.exe,
Daten und Wikis zu erstellen (ich denke das Wiki würde sich für die Doku gut eigenen).
Probier einfach mal aus, ob Du im Bereich Downloads auch etwas einstellen kannst. Man kann die Dateien auch wieder löschen. Sollte das nicht gehen kannst Du mir auch per eMail Dateien schicken, die ich dann hochlade.
Gruß

Bernhard
08.11.2011, 20:08
Es wäre aber genial, wenn wir es auch elegant hinbekommen würden (Damit meine ich das Verzerren des Koordinatensystems).
Hallo sebix,

ich weiß halt nicht ob die Stabilität und Benutzerfreundlichkeit nicht wichtiger ist als Genialität. Letztlich soll das Programm (von meiner Seite) ja kein Werkzeug für Wissenschaftler werden, sondern vielmehr Lehr- und Anschauungszwecken dienen und auch von Laien benutzbar bleiben. Den thematischen Rahmen einer 3D-Karte würde ich ebenfalls nur sehr ungern verlassen. Bitte erkläre mir also bitte noch genauer, was Du mit dem Programm vorhast.
Gruß

Bernhard
08.11.2011, 21:16
Ich habe soeben meinen ersten Commit eingespielt, für einen Test ganz schön umfangreich. Mit Nicht-UTF8 Files wehrt sich mein QtCreator die Dateien zu bearbeiten :D
Hallo sebix,

ich habe Deinen Commit offensichtlich wieder entfernt, weil ich sonst unter Windows nicht weiter portieren kann. Lass' mich das bitte erst mal fertig machen. Dann können wir über die Darstellungen, bzw. Kartenprojektionen diskutieren. Momentan ist das viel zu früh. Ich möchte innerhalb der nächsten zwei Wochen, wenn möglich, erst mal ein paar Sternbilder mit der Qt-Version ansehen können. Dann haben wir zumindest eine Minimalversion auf die wir dann hoffentlich im Notfall immer wieder zurückgreifen können.

Versuche mal bei Deinem Qt Creator den Zeichensatz einzustellen. Wenn der UTF-8 kann, sollte der eigentlich auch latin1 verarbeiten können. Umgekehrt ist das schwieriger.
Gruß

sebix
08.11.2011, 21:23
Ich meinte mehr die Programmlogik; mit der Zielgruppe und dem Zweck stimme ich auch völlig überein.
Was ich meinte ist die programmtechnische Umsetzung, aber hauptsache es läuft mal, darüber können wir auch später reden.

Ich warte dann mal gespannt auf deine Implementierung

EDIT: Hätte wohl vorher die Seite neu laden sollen...
Wer arbeitet heute eigentlich noch mit latin1?

Bernhard
08.11.2011, 23:32
Die Sterne aus dem Katalog hyg.cvs werden jetzt angezeigt. Es fehlt noch die Bedienung des Programmes über die Einstellungen, Maus und Keyboard. Die exe holt sich beim Programmstart die Daten aus dem Arbeitsverzeichnis.

Gute N8.

pmvstrm
09.11.2011, 09:58
Morgen

@Bernhard.
Bei anlegen von Wikiseiten (wollte eine Faq Seite anlegen) bekomme ich die Fehlermeldung Create Access denied (403)
und wenn ich Wikiseiten ändern möchte bekomme ich Edit Access Error. Auch habe ich keine Zugriff darauf Files in den
Downloadbereich zu schrieben, wäre toll wenn Du mir da Schreib/edit Rechte geben könntest (am besten ertest Du Sebix)
für das Wiki auch Schreibleserechte, da könnte er dann eine Ideenseite Schreiben und jeder kann seine Ideen eintragen).

@Sebix
Ich glaube in den Tutorials von QTCreator (unter Skripting) ist ein Beispiel Projekt enthalten wie man SVG's verarbeitet.
QT hat da reichhaltige Möglichkeiten:)

Hab gerade ein Inverview von einem Autodesk Chef auf youtube gesehen.Die haben das bekannte 3D Animations
Programm Maya komplett auf QT portiert und werden das in der Zukunft wohl auch noch ausbauen. Man sieht also,
QT ist für Großprojekte eine tolle Wahl:)

Grüße, Peter

Bernhard
09.11.2011, 10:17
wäre toll wenn Du mir da Schreib/edit Rechte geben könntest
Done (Hoffentlich).


(am besten ertest Du Sebix)
meinst Du "erdest", also erstmal die Schreibrechte entziehen? Wenn ja, weiß ich leider nicht, wie das gehen soll. Er hat vermutlich Schreibrechte, weil ich an "authenticated" Schreibrechte zugewiesen habe. Damit hat vermutlich jeder Sourceforge-Account Schreibrechte.
Gruß B.

pmvstrm
09.11.2011, 11:12
@Bernhard- Wichtig

Ich habe gerade ein neues commit durchgeführt (nur Änderungen an der my3dsc.pro und 3 Dateien hinzugefügt die deine Sachen nicht
betreffen und habe gesehen, daß deine Sachen nicht mehr drin waren. Ich habe dann aus der Historie deine Änderungen wieder eingefügt
und ich denke das es jetzt wieder korrekt läuft (ich konnte die das Projekt mit deinen und meinen Änderungen hinzufügen und kompilieren).
Meine Änderungen erkennst Du daran das jetzt ein neues Icon oben links im Hauptfenster angezeigt wird.

ps:
Auch wenn ich derzeit keine Codeänderungen durchführe, muss ich manchmal syncronisieren um deine Änderungen sehen zu können,
aber ichd enke das sollte jetzt keine weitere Probleme mehr machen, es läuft ja:)

Update
Ich hab das Repository noch einmal in einem völlig neuen Ordner lokal ausgecheckt und kompiliert.
Die Änderungen von uns beiden harmonierne wie es ausschaut.

http://img256.imageshack.us/img256/5628/apprunqt.jpg

Grüße Peter

Bernhard
09.11.2011, 11:53
@Peter: Wow!!!! Spitzenarbeit....

Ich werde als nächstes dann, wie gesagt, versuchen die Programmbedienung zu portieren. Das wird sicher etwas dauern. Ich kann momentan auch nur abends daran arbeiten.

Bernhard
09.11.2011, 11:55
daß deine Sachen nicht mehr drin waren.
Falls sebix da reinpfuscht sollte man dem mal richtig auf die Finger hauen.

pmvstrm
09.11.2011, 12:06
@Bernhard
Nein Sebix wars nicht, das war mein Fehler. Aber das gute an Sourceforge ist ja, das man die Commithistorie genau sehen kann und
man jeder Zeit einen älteren Commit Stand auschecken kann. Da wird uns nichts verloren gehen:)

Übrigens....

Die Installer für Win64 Win32 sind jetzt auf Sourceforge (mit dem aktuellen Source Stand) verfügbar,
viel Spass beim ausprobieren:)


Grüße, Peter
https://sourceforge.net/projects/my3dstarchart/files/

Bernhard
09.11.2011, 12:22
Hallo Peter,

ich habe die Permissions bei Mercurial noch mal so geändert, dass der Admin und die Developer insgesamt die gleichen Rechte haben. Alle anderen dürfen nur lesen. Bitte gib mir bescheid, falls es mit dem Schreibzugriff erneut Probleme geben sollte.

Bernhard
09.11.2011, 12:55
Falls sebix da reinpfuscht sollte man dem mal richtig auf die Finger hauen.
@sebix

das nehme ich dann natürlich wieder zurück. Bitte entschuldige.

pmvstrm
09.11.2011, 13:24
Aber Sebix hat auf ein Problem hingewiesen das wir demnächst mal prüfen sollten.
QTCreator legt offenbar verschiedene Files mit einer non UTF-8 Kodierung an. Um
Zeichensatzprobleme zu vermeiden sollten wir langfristig alles auf UTF-8 Umstellen
(wenn alles läuft). Ich würde es gut finden wenn Sebix im Wiki mal seine Ideen
aufschreibt, so das man sie nachlesen kann (oder er könnte ja eine Wiki Diskussion
starten auf Sourceforge damit wir das für und wieder diskutieren können).

Grüße, Peter

Bernhard
09.11.2011, 14:53
Ein weiterer Punkt, den sebix bereits angesprochen hat, ist die Kartendarstellung. Die ist momentan natürlich eher eine Katastrophe. Wenn man das ordentlich machen wollte, müsste man sich mal die Formeln dazu heraussuchen und dann inklusive Koordinatenlinien einbauen. Zusätzlich braucht man dann auch noch eine Beschriftung der Koordinatenlinien, was dann insgesamt schon eine ganze Menge Arbeit macht, aber ansatzweise ein Planetariumsprogramm realisieren würde. So ein Projekt ging, wenn dann wohl nur gemeinsam und guter Arbeitsaufteilung. Bei mir ist die Motivation da momentan nicht sooo riesengroß, weil es ja bereits Cartes Du Ciel gibt.
Gruß, Bernhard

sebix
09.11.2011, 19:10
@sebix
das nehme ich dann natürlich wieder zurück. Bitte entschuldige.
Wenn ihr meine Commits überschreibt, kann ich ja nix kaputtmachen ;)

Aber Sebix hat auf ein Problem hingewiesen das wir demnächst mal prüfen sollten. QTCreator legt offenbar verschiedene Files mit einer non UTF-8 Kodierung an. Um Zeichensatzprobleme zu vermeiden sollten wir langfristig alles auf UTF-8 Umstellen (wenn alles läuft). Ich würde es gut finden wenn Sebix im Wiki mal seine Ideen aufschreibt, so das man sie nachlesen kann (oder er könnte ja eine Wiki Diskussion starten auf Sourceforge damit wir das für und wieder diskutieren können).

Ohne Rechte geht da aber leider nix. Home, Tickets, Wiki und Discussions sind Bereiche, die für die eigentlich in einem Open-Source Projekte jeder Rechte haben sollte.
Warum verwendet ihr eigentlich immer nur Deutsch? Wollt ihr das Programm 99.9857% der Weltbevölkerung enthalten?

Wenn ihr dann mal UTF-8 wollt, kann ich das machen, geht auf der Shell mit einem Einzeiler ;) wohl einfacher als händisch. (ihr dürftet ja alle unter Windows proggen?)

Ein weiterer Punkt, den sebix bereits angesprochen hat, ist die Kartendarstellung. Die ist momentan natürlich eher eine Katastrophe. Wenn man das ordentlich machen wollte, müsste man sich mal die Formeln dazu heraussuchen und dann inklusive Koordinatenlinien einbauen. Zusätzlich braucht man dann auch noch eine Beschriftung der Koordinatenlinien, was dann insgesamt schon eine ganze Menge Arbeit macht, aber ansatzweise ein Planetariumsprogramm realisieren würde. So ein Projekt ging, wenn dann wohl nur gemeinsam und guter Arbeitsaufteilung. Bei mir ist die Motivation da momentan nicht sooo riesengroß, weil es ja bereits Cartes Du Ciel gibt.
Und weil es schon Cartes du Ciel gibt, wäre es nicht schlecht wenn wir uns abheben. Wie wärs mit Einfachheit und netten Gimmicks? Zb Rotverschiebung darstellen, oder als Info zu den Sternen wie viele Exoplaneten dort vermutet werden etc.

Aber Danke mal, dass ihr meine Beiträge lest.

lg, sebix

Bernhard
09.11.2011, 19:41
Hallo Peter,

ich habe mir eben mal den Dialog "Beobachter" vorgenommen, einen "Abbrechen"-Button und die nötigen Variablen für den Datentransport eingebaut. Die Datei mainwindow.cpp zeigt momentan auch, dass ich versucht habe die Benutzereingabe "OK", bzw. "Abbrechen" abzufangen. Wenn Du einen Blick auf diese Datei wirfst (Zeile 364) siehst Du wo ich gerade "hänge". Das Programmieren mit dem Qt Creator und Tortoise macht mittlerweile eine Menge Spaß. Man entdeckt immer wieder altbekannte und gern genutzte Features. Weiß aber nicht, ob ich heute noch viel weiter komme.
Schönen Gruß Bernhard

pmvstrm
09.11.2011, 20:06
Hallo Bernhard,

Ja nicht schlecht Herr Specht, ich schaue es mir später mal an. Ich hänge gerade an der Mac OS X Version und kompiliere eine Static Version
von QT. ps: ich bin heute über dein <malloc.h> gestolpert. Das führte auf dem Mac direkt zum Problem (das heisst auf dem mac <sys/malloc.h>.
Wir sollten möglichst die QT Sachen nutzen und so wenig wie möglich alte C Sachen, dann vermeiden wir unnötige Abhängigkeiten. In diesem Fall
tuts vorerst ein IFDEF für dem Präcompiler denke ich:)


Grüße Peter

sebix
09.11.2011, 20:13
Wenn ihr schon bei Includes seid:
Der Include von <QMath.h> funktioniert bei mir (Linux) nicht, laut Dokumentation sollte es auch <QtCore/qmath.h> heißen. Läuft es damit auch bei euch?

Ich hab eine Korrektur schonmal commited, aber die überlebte nicht lang...

pmvstrm
09.11.2011, 20:27
Hi Sebix


Wenn ihr meine Commits überschreibt, kann ich ja nix kaputtmachen ;)
Ohne Rechte geht da aber leider nix. Home, Tickets, Wiki und Discussions sind Bereiche


Ich denke auch das Du die Wikirechte auf jeden Fall haben solltest. Diskussionen kannst Du jetzt schon starten
und darauf Antworten. Am besten Du schreibst das alles mal auf und dann schauen wir uns das an.



Warum verwendet ihr eigentlich immer nur Deutsch? Wollt ihr das Programm 99.9857% der Weltbevölkerung enthalten?


Hmm das hatte bisher keine Priorität. Aber wenn Du magst, kannst Ja gerne mal den Source auschecken und
mit QTLinguist die Resource Strings in Englisch umstrukturieren.Mit Linguist habe ich bisher nichts gemacht,
vielleicht kannst Du das und die SVG Geschichte mal evaulieren? :)



Wenn ihr dann mal UTF-8 wollt, kann ich das machen, geht auf der Shell mit einem Einzeiler ;) wohl einfacher als händisch. (ihr dürftet ja alle unter Windows proggen?)


Das ist nicht so einfach. Wir müssen das so regeln das sich QTCreator nicht dran stört. Aber wenn Du Zeit hast kannst Du ja mal
den aktuellen Source auschecken, kompilieren und schauen das nach der UTF-8 Umstellung alles läuft. Das wäre wirklich nicht
schlecht. Aber obacht! in Mainwindows.cpp musst Du musst statt <malloc.h> -> <sys/malloc.h> stehen sonst gibts einen Buildfehler
mit qmake oder QTCreator (ist ein offener Bug der auf der Todo Liste steht).



Und weil es schon Cartes du Ciel gibt, wäre es nicht schlecht wenn wir uns abheben. Wie wärs mit Einfachheit und netten Gimmicks? Zb Rotverschiebung darstellen, oder als Info zu den Sternen wie viele Exoplaneten dort vermutet werden etc.


Ich habe da auch einige Ideen wie wir das Programm noch interessanter machen können, aber das hat momentan noch
keine Priorität:)

Güße, Peter

pmvstrm
09.11.2011, 20:37
Wenn ihr schon bei Includes seid:
Der Include von <QMath.h> funktioniert bei mir (Linux) nicht, laut Dokumentation sollte es auch <QtCore/qmath.h> heißen. Läuft es damit auch bei euch?
Ich hab eine Korrektur schonmal commited, aber die überlebte nicht lang...

Wichtig ist hat, das auf jeden Fall einen übersetzbaren Stand hast. Check das mal ein, dann fetche ich mir die changes.
Du kannst übrigens den Änderungsverlauf durch die einzelnen commits sehr gut hier nachschauen (nichts geht verloren)
https://sourceforge.net/p/my3dstarchart/my3dsc/commit_browser

Übrigens, die neue Version läuft jetzt auch geprüft auf neuen MAC OS X Versionen 10.6 Snow Leopard und Lion 10.7
http://img23.imageshack.us/img23/2486/appcocoarun.png

Gruß, Peter

sebix
09.11.2011, 21:36
Ich denke auch das Du die Wikirechte auf jeden Fall haben solltest. Diskussionen kannst Du jetzt schon starten
und darauf Antworten. Am besten Du schreibst das alles mal auf und dann schauen wir uns das an.

Ich habe nun auch keine Schreibrechte mehr im Repo, die brauch ich zwar jetzt noch nicht, ginge aber sicherlich gleich in einem.


Hmm das hatte bisher keine Priorität. Aber wenn Du magst, kannst Ja gerne mal den Source auschecken und
mit QTLinguist die Resource Strings in Englisch umstrukturieren.Mit Linguist habe ich bisher nichts gemacht,
vielleicht kannst Du das und die SVG Geschichte mal evaulieren? :)

Was meinst du mit SVG-Geschichte? Die einfache Darstellung oder Verzerrung? Verzerrung habe ich leider noch nichts sinnvolles gefunden, auch nicht für normale Pixmaps.
Darstellung geht natürlich einfach.

QtLinguist kann ich mir anschauen, ich hoffe da ist ein Kapitel in meinem Buch.


Das ist nicht so einfach. Wir müssen das so regeln das sich QTCreator nicht dran stört. Aber wenn Du Zeit hast kannst Du ja mal
den aktuellen Source auschecken, kompilieren und schauen das nach der UTF-8 Umstellung alles läuft. Das wäre wirklich nicht
schlecht. Aber obacht! in Mainwindows.cpp musst Du musst statt <malloc.h> -> <sys/malloc.h> stehen sonst gibts einen Buildfehler
mit qmake oder QTCreator (ist ein offener Bug der auf der Todo Liste steht).

Das Encoding der Sourcefiles hat doch keine Auswirkung auf das Ergebnis?! Bei mir liefs btw.
sys/malloc.h gibts nicht :D Warum braucht das eigentlich einen Include? Bei mir läuft es auch ohne.

Wichtig ist hat, das auf jeden Fall einen übersetzbaren Stand hast. Check das mal ein, dann fetche ich mir die changes.

Wenn auf anderen Platformen QtCore/qmath.h auch funktioniert, kann das wer einpflegen.

Jetzt kommt was ganz fieses:
Hast du es schon auf Linux probiert? Wenn die Messier.txt nämlich exestiert stürtzt das Programm ab. Ich kann mit dem Debug-Output wenig anfangen. Wenn du den gleichen Fehler hättest, wäre das ein erster Bug.

Bernhard
09.11.2011, 22:16
ps: ich bin heute über dein <malloc.h> gestolpert. Das führte auf dem Mac direkt zum Problem (das heisst auf dem mac <sys/malloc.h>.
Wir sollten möglichst die QT Sachen nutzen und so wenig wie möglich alte C Sachen, dann vermeiden wir unnötige Abhängigkeiten.
Hallo Peter,

das malloc war notwendig, weil bei mir aus unerklärlichen Gründen ein new nicht mehr fertig wurde. Ich bin aber gerade dabei das malloc und die new-Operatoren mittels QList durch Listen zu ersetzen. Dabei ist mir aufgefallen, dass die Klasse CMessier noch keine cpp-Datei hat. Lokal habe ich diese Datei jetzt angelegt, damit die Klasse wenigstens einen Standardkonstruktor und -destruktor hat, so wie CSterne. Anschließend verwende ich im Konstruktor von MainWindow eine temporäre Instanz von CMessier und CSterne, um die nötigen Listen zu füllen. Beim Kompilieren des Projektes kommt dann die Fehlermeldung "undefined reference to CMessier::CMessier", was darauf hindeutet, dass die neue Datei CMessier.cpp im Projekt nicht berücksichtig wird. Die Doku zum Qt Creator hilft leider nicht weiter, weil demnach das Einfügen neuer Dateien automatisch gehen soll. Die Datei .files konnte ich auch nicht finden.

Vielleicht fällt Dir etwas dazu ein. QList würde ich ansonsten gerne verwenden.
Gruß, Bernhard

pmvstrm
09.11.2011, 22:55
Hi Bernhard,

Ja da musst Du aufpassen! Eine neu angelegte Datei kannst Du dummerweise nicht einfach durch HG Commit adden sondern nur geänderte.
Im Endeffekt bedeutet dies, das die Datei dann schlicht nicht auf Sourceforge übertragen wird und beim updaten der Neuerungen von
Sourceforge lokal in deinem auscheck Projektordner gelöscht wird und somit als nicht existent und daher als unauflösbares Symbol
erscheint. Wenn die Datei wirklich nicht da ist, dann füge die CPP Datei mit QTCreator hinzu, schaue ob alles sauber kompiliert und
wenn dann alles stimmig ist, gehst Du mit dem Windows Explorer in deinen Projektordner, recktsklick auf die neue CPP Datei,
Hinzufügen/Adden UND danach commit! Jetzt kannst Du wieder eine Verzeichnisebene triefer gehen, den Projektordner insgesammt
markieren rechtsklick und auf syncronisieren klicken. Dann auth Typ (IMMER) auf SSH statt HTTP umstellen, Username +Passwort
von Sourceforge eingeben und bestätigen. Ich kontrolliere nach jedem Sync Hier: https://sourceforge.net/p/my3dstarchart/my3dsc/commit_browser
Ob es geklappt hat.

Grüße, Peter

Bernhard
10.11.2011, 05:44
Guten morgen Peter,

ich bin jetzt mal auf die Idee gekommen die .pro-Datei mit einem Texteditor zu öffnen und siehe da: Genau dort steht in Klartext die Projektzusammensetzung. Genau dort muss man also neue cpp-Dateien, Forms und Header eintragen, damit sie vom Compiler gefunden werden. "Meine Fresse", darauf muss man auch wieder erst mal kommen. Aber gut, auch die Hürde haben wir also geschaftt und das Programm enthält jetzt kein malloc mehr :D . new wird nur noch für die temporären Anwenderdialoge (Kindfenster) verwendet und ich denke, das sollte vorerst auch so bleiben. Die Datei messier.cpp ist jetzt auch in TortoiseHg (Rechte Maus, Add File + Hg Commit) eingecheckt.

Dann ist mir im Commit Browser aufgefallen, dass ich mittlerweile auf einem eigenen Branch arbeite (grün) abseits des Hauptzweiges, bzw. Stammes in rot. Kannst Du das eventuell wieder zusammenführen? Muss man da mergen?

Ich hoffe, dass dann mit QList auch der Programmabsturz unter Linux, wie von sebix beschrieben, behoben ist.
Gruß, Bernhard

Runzelrübe
10.11.2011, 10:27
Hi sebix, verdirb Dir nicht selbst den Start, indem Du Vorgehensweisen angreifst, bevor sie beschlossen sind.


Warum verwendet ihr eigentlich immer nur Deutsch? Wollt ihr das Programm 99.9857% der Weltbevölkerung vorenthalten?
*fett ergänzt

Diese Prozentangabe widerspricht der Realität - so etwas nennt man auch gern mal Präzisionsfalle ("gleich vier Nachkommastellen, man kennt der sich aus").

http://www.andaman.org/BOOK/reprints/weber/rep-weber.htm

Du schlägst jetzt Chinesisch vor, hoffe ich! ;)

Falls Du Deinen Unmut darüber aussprechen möchtest, dass nicht alle Personen außer Dir englische Variablenbezeichnungen nutzen oder ihre Dokumentation auf Englisch verfassen, dann sagst Du so etwas besser frei heraus als durch die Hintertür. Es ist vollkommen inakzeptabel, den Programmierstil anderer Personen anzugreifen, ohne echte Argumente für die Vor- und Nachteile zu bringen. Es bietet sich immer an, eine Frage nach dem "Warum" nicht mit einer Anschuldigung enden zu lassen. Stellt man Fragen so, dass die Antwort durch einen Nachfolgesatz emotional vorbewertet wird, kann man Menschen damit vor den Kopf stoßen und verbietet vorab schon einige Begründungen. Da das Harmoniebedürfnis sehr häufig überwiegt, traut sich nicht jeder, so etwas anzusprechen. Die häufigste Antwort darauf ist "Ist das wirklich so schlimm?" statt "Warum genau findest Du das so schlimm?".


Und weil es schon Cartes du Ciel gibt, wäre es nicht schlecht wenn wir uns abheben. Wie wärs mit Einfachheit und netten Gimmicks?

Steht es denn fest, dass die Programme miteinander konkurrieren sollen? Sonst ist das kein echter Grund und es verschiebt auch nicht die Prioritäten. Ich finde es sehr gut, dass sich Bernhard und Peter erst einmal um die Kompatibilität kümmern.


Ich habe Dir darüber hinaus noch eine PM geschickt.

pmvstrm
10.11.2011, 11:23
Guten Morgen Bernhard



ich bin jetzt mal auf die Idee gekommen die .pro-Datei mit einem Texteditor zu öffnen und siehe da: Genau dort steht in Klartext die Projektzusamm
ensetzung.Genau dort muss man also neue cpp-Dateien, Forms und Header eintragen, damit sie vom Compiler gefunden werden. "Meine Fresse", darauf muss man auch wieder erst mal kommen.

Stimmt.Auf solche dusseligen Sachen kommt man immer erst mit Trick 17 und Selbstüberlistung (ich kenn das):D

Aber Du kannst auch im QTCreator selbst einfach doppelclicken auf die .pro Datei und hast dann auch noch Syntaxhighlighting.
Ich habe da eine QMake Fragmente eingetragen aber effektiv ist nur das einbinden des Windows ICON als Resource momentan
aktiv.Sobald alles auf allen 3 Hauptplatformen geprüft läuft, müssen wir uns mal um die Ordnerstruktur kümmern, denn
die Installationsscripte und Platformspezifischen 64 Bit/ 32-Bit Buildtargets sowie die Erstellung der Zwischendateien
sollten besser in eigenen Ordnern erfolgen, damit wir da eine sauberere Trennung haben. Am wichtigsten ist mir
persönlich jedoch das wir zu jedem Zeitpunkt einen auscheckbaren Stand haben der kompilierbar ist und läuft.
Aber wie gesagt: Wir haben keine Zeitnot und bevor wir die Ordner/Unterordner Strukturen ändern sollten wir das hier
vorher genau besprechen.Am besten Sebix sagt auch etwas dazu, da er ja mit QtLinguist ein Unterprojekt für die
lokalisierung evaluiert, das muss er ja dann auch einchecken können.



Dann ist mir im Commit Browser aufgefallen, dass ich mittlerweile auf einem eigenen Branch arbeite (grün) abseits des Hauptzweiges, bzw. Stammes in rot. Kannst Du das eventuell wieder zusammenführen? Muss man da mergen?


Stimmt.Das habe ich mir gerade mal angeschaut. Aber ich glaube das ist kein Problem, denn in der Wurzel, ander obersten
Stelle sehe ich deine Dateiänderungen dennoch. Deine Änderungen scheinen an der richtigen Stelle zu sein, aber ich
update mal eben meinen Projektordner und wenn mir etwas auffält melde ich mich diesbezüglich noch mal.



Ich hoffe, dass dann mit QList auch der Programmabsturz unter Linux, wie von sebix beschrieben, behoben ist.


Ja, das ist gut das wir Sebix dafür haben, er arbeitet ja ausschliesslich unter Linux.Ich glaube Du kannst Sebix auch
als Developer eintragen. Auch sollte jeder von den Rechten her das Wiki nutzen können, denn Bug Tickets, Todos
und Dikussionen sowie Manuals sollte z.B Sebix auch verfassen können. Kannst Du die Rechte für Sebix mal eben
prüfen?

Grüße, Peter

Runzelrübe
10.11.2011, 11:32
Es ist äußerst unpraktisch für die Sicherheit, dass ihr durch eure Kommentare dafür sorgt, dass jeder per Google herausfinden kann, ob und wer Rechte in Bereich xyz besitzt/besitzen wird. Ich rate euch dringend, Autorisierungsangelegenheiten ausschließlich per PM zu klären und nicht in einem öffentlichen Forum!

Bernhard
10.11.2011, 11:42
Kannst Du die Rechte für Sebix mal eben
prüfen?
Hallo Peter,

wie bist Du bei sourceforge eigentlich Developer geworden? Sobald sebix bei sourceforge auch Developer ist, hat er automatisch auch Schreibrechte.

@Runzelrübe: Danke für den Hinweis, aber ich denke dafür ist es jetzt zu spät. Im Notfall (Sabotage) müssen wir halt auf die lokalen Kopien zurückgreifen und neu einstellen, bzw. einen möglichen Troll-Commit löschen.
Gruß, Bernhard

pmvstrm
10.11.2011, 15:47
@Bernhard

Wenn hier wirklich mal Handlungsbedarf ist, dann ändern wir das. Hat ja niemand Kennwörter ausgetauscht, also dont panic.:)

ps:
Ich habe hier mal einen Screencast genacgt um die Portierung der Mouse und Click Events aus der
MFC Anwendung nach QT mit einem Beispielhaften Vorschlag zu skizzieren.

Den Sourcecode für diese Mini Application (sie besteht nur aus 2 Klassen füge ich bei.

@Bernhard
Am besten Du schaust Dir das kurz an, schaust Dir den Sourcecode an und gibst hier Feedback ob
Du das umgesetzt bekommen würdest (Überladung würde glaube ich ausreichen, damit die alte
Funktionalität auch erhalten bleibt).

Hier mein Vorschlag:

http://www.youtube.com/watch?v=pT-zvC5XTMU

Code_Incubator:
Ich habe im Sourceforge Downloadbereich einen Incubator Unterordner angelegt.
hier kann jeder Codevorschläge oder Codesnippets posten.

Grüße Peter

Anhang:Incubatorlink
https://sourceforge.net/projects/my3dstarchart/files/code_incubator/3DStar_Vorschlag_src.zip/download

Bernhard
10.11.2011, 18:40
Hallo Peter,

mit dem Commit von vor ein paar Minuten kann man jetzt wieder Sternbilder gucken, sprich der Dialog "Beobachter" funktioniert jetzt :) . Ich habe dabei bereits ein Event abfangen müssen. Die MouseEvents findet man in der Qt-Onlinedoku auch recht schnell auf der Seite zu QEvent. Das aktuelle Show-Event wird noch aus allen möglichen Events ausgefiltert, was natürlich wenig elegant ist, aber das Fein-Tuning kommt eben nach der groben Arbeit.

Muss mir jetzt noch ansehen, wie das Projekt unter Linux (OpenSuSE 11.1) läuft, auch wegen des erwähnten Bugs.
Beste Grüße

pmvstrm
10.11.2011, 18:58
Hallo Peter,

mit dem Commit von vor ein paar Minuten kann man jetzt wieder Sternbilder gucken, sprich der Dialog "Beobachter" funktioniert jetzt :) groben Arbeit.
Muss mir jetzt noch ansehen, wie das Projekt unter Linux (OpenSuSE 11.1) läuft, auch wegen des erwähnten Bugs.


Also Mac OS X ist ja ein Unix Betriebssystem und ich habe da bisher nichts bemerkt. Aber man kann nie wissen,
besser Du prüfst das.

ps:
@Bernhard
Hast Du Dir mein letztes Posting durchgelesen? Das war hauptsächlich für Dich gedacht:)

Grüße Peter

Kibo
10.11.2011, 19:08
Ich möchte euch beiden danken, ganz besonders dem Peter!

Durch diesen Thread hier hab ich jetzt auch begonnen mich an Qt ranzutasten, mal sehen wie ich damit zurecht komme.

mfg

Robert

pmvstrm
10.11.2011, 19:29
@Kibo

Schön zu hören:)

Ja mit QT kann man schon tolle Sachen machen und es ist mit Sicherheit nicht die schlechteste Art mit der C/C++ Programmierung
anzufangen. Mach Dir vor allem klar das C und C++ eigentlich 2 Programmiersprachen in einem sind. C ist sehr alt und nicht
Objektorientiert (und daher ganz anders zu programmieren), C++ hingegen ist stark Objektorientiert und ist meist zu bevorzugen.

Warnung: Nichts ist schlimmer als einem alten C Hasen Objektorientierung beizubringen und nichts ist für einen alten C++
Programmierer ätzender als sich mit dem vorsintflutlichen C Kram herum zu ärgern :D:D

Grüße, Peter

Kibo
10.11.2011, 20:06
Naja C++ Erfahrung hab ich ja ein bisschen mit m$ visual studio express und eclipse.
Qt sieht vielversprechend aus für mich :)

Bernhard
10.11.2011, 20:15
Also Mac OS X ist ja ein Unix Betriebssystem und ich habe da bisher nichts bemerkt. Aber man kann nie wissen,
besser Du prüfst das.
Hallo Peter,

also mit OpenSuSE bekommt man beim Compilieren eine Fehlermeldung bei dem qmath header. Mit <QtCore/qmath.h> kann man aber alles übersetzen. Debuggen kann man nur als root. Das Programm selber verhält sich leider hier etwas anders. Das automatische Aktualisieren der Sternkarte nach ändern der Beobachter-Einstellungen funktioniert hier leider nicht. Den Bug von sebix kann ich nicht nachstellen. Ein Fehlen der Datei Messier.txt macht hier keine Probleme.



ps:
@Bernhard
Hast Du Dir mein letztes Posting durchgelesen? Das war hauptsächlich für Dich gedacht:)
Noch nicht. Um richtig guten Code zu schreiben, muss ich mich aber eh noch genauer mit den SIGNALS und SLOTS beschäftigen und dazu werde ich mir dann auch Deine Tutorials ansehen. Mir fehlt momentan nur an allen Ecken und Enden die Zeit. Bei den Prototypen bin ich halt sehr ungeduldig. Wie gesagt, wenn das grobe Gerüst mal steht, hat man einfach mehr Muse sich mit den Details zu beschäftigen.

Insgesamt schließe ich mich noch dem Lob von Kibo an. Die Beschäftigung mit Qt bringt wirklich sehr interessante, neue Perspektiven.
Gruß, Bernhard

sebix
10.11.2011, 20:26
Debuggen kann man nur als root.
Dass man nur als root debuggen kann, verstehe ich nicht. Der Debugger muss lediglich die gleichen Rechte haben, wie das Programm. Ich debugge meine C++-Programme meist mit gdb, auch der Debugger von QtCreator macht bei mir seinen Dienst.

@pmvstrm: Wow, wie gut kennst du dich mit OpenGl aus, oder hast du das alles aus der Dokumentation rauslesen können?
Ich hab anfangs nicht ganz gewusst, was ich mit deiner Idee anfangen soll, jetzt aber schon: Wie wäre es, wenn der Beobachter in einer hohlen Kugel ist, und auf der Kugel sind dann die Punkte aufgemalt?

Bernhard
10.11.2011, 21:19
Wie wäre es, wenn der Beobachter in einer hohlen Kugel ist, und auf der Kugel sind dann die Punkte aufgemalt?
Genau so ist das Programm momentan doch gestrickt!

BTW: Unter Linux frägt Qt Creator nach dem Zeichensatz der Dateien. In der zugehörigen Auswahl gibt es kein UTF-8, dafür UTF-16, die Windows-Zeichensätze und die bekannten Latin-Zeichensätze. Wir sollten deswegen vorerst auf latin1 bleiben. Dass kennen zumindest alle drei Plattformen. Dass in einigen Jahren oder auch schon früher UTF eher Standard sein wird, muss uns jetzt nicht kratzen.

sebix
10.11.2011, 21:33
Genau so ist das Programm momentan doch gestrickt!

Aber doch nicht mit OpenGL? Wenn das eure Intention war, habe ich das leider nicht mitbekommen, sry.


BTW: Unter Linux frägt Qt Creator nach dem Zeichensatz der Dateien. In der zugehörigen Auswahl gibt es kein UTF-8, dafür UTF-16, die Windows-Zeichensätze und die bekannten Latin-Zeichensätze. Wir sollten deswegen vorerst auf latin1 bleiben. Dass kennen zumindest alle drei Plattformen. Dass in einigen Jahren oder auch schon früher UTF eher Standard sein wird, muss uns jetzt nicht kratzen.
Und wenn du die Files nach UTF8 konvertiert hättest, hättest du bemerkt, dass dann QtCreator nicht mehr fragt. Genau das habe ich ja schon vor einigen Seiten beschrieben.
UTF ist btw überall Standard, bestimmt auch schon in neurern Win-Versionen (und sagt jetzt bitte nicht, ich würde M$ verachten oder sonst was, das ist halt so, da kann ich nix dafür...)

Bernhard
10.11.2011, 21:39
Hallo Peter,

habe mir jetzt gerade noch den letzten Clip von Dir angesehen (absolut YouTube-fähig!). OpenGL hatten wir ganz am Anfang des Themas schon mal diskutiert und war praktisch die Motivation dieses Thema hier zu starten. Das zu verwenden ist schon verlockend. Ich würde z.B. gerne die Milchstrasse als 3D-Modell so wie den Würfel drehen können. Könntest Du dazu den Würfel-Code bei sourceforge einfach mal mit zu den anderen Dateien als Download packen? Wenn das halbwegs komfortabel in das bestehende Programm einzubauen ist - warum nicht.
Gruß Bernhard

pmvstrm
10.11.2011, 22:03
HiBernhard



habe mir jetzt gerade noch den letzten Clip von Dir angesehen (absolut YouTube-fähig!).

Das liegt sogar auf Youtube und habe ich nur hier ins Forum durch Video einfügen verlinkt:)

OpenGL hatten wir ganz am Anfang des Themas schon mal diskutiert und war praktisch die Motivation dieses Thema hier zu starten. Das zu verwenden ist schon verlockend. Ich würde z.B. gerne die Milchstrasse als 3D-Modell so wie den Würfel drehen können. Könntest Du dazu den Würfel-Code bei sourceforge einfach mal mit zu den anderen Dateien als Download packen? Wenn das halbwegs komfortabel in das bestehende Programm einzubauen ist - warum nicht.
[/QUOTE]

Violâ:)
https://sourceforge.net/projects/my3dstarchart/files/code_incubator/3DStar_Vorschlag_src.zip/download

ps:
Der Unterordner Incubator auf der Sourceforge Download Seite von unserem Projekt ist denke ich eine gute
Ablage wo man sowas gut hinpacken kann.

Gruß, Peter

pmvstrm
10.11.2011, 22:12
Hi Sebix


Aber doch nicht mit OpenGL? Wenn das eure Intention war, habe ich das leider nicht mitbekommen, sry.


Ja, das mit dem OpenGL ist ja nur ein Vorschlag von mir gewesen, aber es freut mich wenn er Zustimmung erhält:)



Und wenn du die Files nach UTF8 konvertiert hättest, hättest du bemerkt, dass dann QtCreator nicht mehr fragt. Genau das habe ich ja schon vor einigen Seiten beschrieben.


Also da muss ich Bernhard leider recht geben.
Ich arbeite ja momentan amr Mac OS X 10.4 (Carbon) / 10.5 / 10.6 / 10.7-64-Bit (Cocoa) Deployment des Programms
und Mac OS X ist ja nun auch ein Unix System und QTCreator fragt beim importieren des Projekts von einer Fremdplatform
immer nach einem Zeichensatz. Auf Mac OS X bekomme ich Fehler wenn ich nicht Latin9 für den Release Build einstelle.

Gruß,Peter

sebix
10.11.2011, 22:18
Interessant, welches Encoding habt ihr unter Extras->Einstellungen->Umgebung->Encoding?
Laut einer kurzen Inet-Recherche wird das Encoding vom Projekt festgelegt, in der .pro hab ich aber nichts diesbezüglich gefunden. Gibt es sonst noch Orte, wo so etwas gespeichert sein könnte?

pmvstrm
10.11.2011, 22:24
Dass man nur als root debuggen kann, verstehe ich nicht. Der Debugger muss lediglich die gleichen Rechte haben, wie das Programm. Ich debugge meine C++-Programme meist mit gdb, auch der Debugger von QtCreator macht bei mir seinen Dienst.


Hmm könnte sich um so eine Suse Sache handeln. Wenn ich Linux nutze, dann kommt mir nur das gute Debian oder Ubuntu ins
Haus:D APT, Stabilität, Konsistenz, Doku ist alles etwas schicker als bei den anderen.

Aber nichts geht doch über ein echtes Unix wie FreeBSD/OpenBSD oder Solaris:)
(zumindest wenn es ein zuverlässiger Server sein soll)



@pmvstrm: Wow, wie gut kennst du dich mit OpenGl aus, oder hast du das alles aus der Dokumentation rauslesen können?
Ich hab anfangs nicht ganz gewusst, was ich mit deiner Idee anfangen soll, jetzt aber schon: Wie wäre es, wenn der Beobachter in einer hohlen Kugel ist, und auf der Kugel sind dann die Punkte aufgemalt?

Sagen wir es mal so,ich bin lernfähig:)
Ich denke das OpenGL schon sehr vorteilhaft für unsere Zwecke ist, da wir vieles quasi durch die gute QT Integration
geschenkt bekommen und es später sehr viel einfacher haben. Das kann man sogar soweit treiben das wir sogar GL-Shader
einsetzen und die GPU des Grafikchips zum glühen bringen:D

Gruß, Peter

pmvstrm
10.11.2011, 22:27
Interessant, welches Encoding habt ihr unter Extras->Einstellungen->Umgebung->Encoding?
Laut einer kurzen Inet-Recherche wird das Encoding vom Projekt festgelegt, in der .pro hab ich aber nichts diesbezüglich gefunden. Gibt es sonst noch Orte, wo so etwas gespeichert sein könnte?

Das weiß ich leider gerade nicht aus dem Stehgreif. Aber vielleicht hast ja VirtualBox oder VMWare am System und könntest das mal prüfen?
Wäre schon toll wenn wir überall das Encoding haben das zu keinen Problemen führt - aber es muss halt überall gleich gut funktionieren.

Bernhard
11.11.2011, 05:37
Der Unterordner Incubator auf der Sourceforge Download Seite von unserem Projekt ist denke ich eine gute
Ablage wo man sowas gut hinpacken kann.
Guten Morgen Peter,

Prima. Ein netter Prototyp! Man müsste dieses Beispiel aber noch so anpassen, dass am besten nur noch Punkte (also die Ecken des Würfels) angezeigt werden. Die grafische Verbindung der Punkte durch Flächen brauchen wir für die 3D-Karte nicht und OpenGL rechnet sowieso, soviel ich weiß, optimiert mit genau solchen Vektoren/Zahlentripeln/kartesichen Koordinaten. Beleuchtungseffekte braucht die 3D-Karte auch nicht. Der ganze grafische "Schnickschnack" fällt also weg. Allerdings haben wir mit dem Hipparcos-Katalog auch über 100k Vektoren (auch der Hyg.csv hat über 30k) zu drehen und da wäre eine optimierte Bibliothek, wie OpenGL , natürlich Spitze.

Vielleicht kannst Du das Würfelprogramm noch entsprechend ändern? Ich weiß noch nicht genau, ob ich am Wochenende Zeit dafür habe, weil ich z.T. schon in den Urlaubsvorbereitungen für den kommenden Sommer stecke :) . Außerdem möchte ich zuerst an der Portierung weitermachen. Da sind jetzt bereits wesentliche Teile fertig, die man dann nur noch sinngemäß übertragen muss. Wir liegen damit mehr als gut im "Zeitplan".

Die 3D-Karte ist für OpenGL bereits sehr gut vorbereitet, weil dort die sphärischen Koordinaten der Sterne (in Rektaszension und Deklination) intern bereits in kartesische, dreidimensionale Koordinaten umgerechnet werden. Diese können dann direkt von OpenGL gedreht werden. Der dreidimensionale Standort des Beobachter kann über den zugehörigen Dialog ebenfalls bereits eingestellt werden.

In einer zukünftigen Version 2 des Programmes können wir dann Galaxien dreidimensional darstellen, vorausgesetzt wir bekommen die zugehörigen Kataloge in elektronischer Form.

Gruß, Bernhard

EDIT: Der Dialog Ansicht ist jetzt auch fertig. Der Anwender kann damit die Sternkarte im Hauptfenster positionieren.

Mich würde noch interessieren, wie die vier ui_*.h Dateien entstanden sind. Die kann doch sicher der Qt Creator automatisch erzeugen? Auch nachträgliche Änderungen an den ui-Dateien sollten doch irgendwie automatisch in den Code übertragen werden können? Die zwei Buttons von mir habe ich händisch eingetragen.

pmvstrm
11.11.2011, 09:05
Guten Morgen,

@Bernhard
Alles was kompiliert oder erstellt und Zwischenerstellt wird, wird ja von QMake ausgeführt. QTCreator hat da eigentlich wenig
mit zu tun.QTCreator ist mehr oder weniger ein konfortabler Editor für unsere .cpp, .h, und UI Files, aber qmake versteht
eigentlich nur den klar lesbaren Text. Es gibt natürlich default Operationen die qmake durchführt wenn keine Parameter
gesetzt sind und auch erstellt qmake einige Zwischendateien (resourcen, prelink files, *.obj und *.o). Wenn Du Dir mal
die .pro Datei unseres PRojekts anschaust,d ann findest Du einige von mir auskommentierte Blöcke die eigentlich
zum Ziel hatten das ganze übersichtlicher aufzubauen. Ich habe das dann aber vorerst auskommentiert, weil wir dafür
eine angepasste Ordnerstruktur brauchen und die wollte ich nicht eigenmächtig ohne Rücksprache ändern:)

Zum Thema Würfel und Licht. Naja, etwas Licht brauchen wir schon in einer OpenGL Szene denn sonst sieht man
nun mal 0, nix. Aber ich gebe Dir recht. Ein Ambient overall Licht reicht erstmal aus. Später können wir dann mal überlegen
jede Sonne als Lichtquelle zu definieren, damit wir uns des realen Bedingungen noch mehr annähern.

ps:
Der Mac Ccocoa Port ist fertig. Das Binary patching der QT Framework Libs war eine Heidenarbeit. Man muss quasi
alle internen Binäraufe unserer Applikation auf die beigepackten Libs umleiten. oder der User muss sich den fetten Runtime
Brocken mit ca 200 MByte laden. Mit ca. 50 MBytes für den Mac Installer sind wir also noch glimpflich weggekommen.

Systemvoraussetzungen Mac:

Mac OS X Leopard 32/64 (10.5.8)
Mac OS X Snow Leopard 32/64 (10.6.8)
Mac OS X Lion 32/64 (10.7)

Das sind die letzten 3 Betriebssystemgenerationen von Apple, damit sollten wie Mac mässig alles erschlagen
haben. Den Carbon Port auf Mac OS Tiger 10.4.11 tue ich mir nicht an, ich denke solche alten Mac Kisten hat eh keiner mehr.

Als nächstes kümmere ich mich jetzt um Debian/Ubuntu Linux DEB Pakete.
Ich weiß nicht ob wir Redhat und Suse überhaupt noch berücksichtigen sollen

Die wichtigste Distri ist wohl Ubuntu
http://www.google.com/insights/search/#cat=0&q=%20Debian%20Linux%2C%20SUSE%20Linux%2C%20Fedora% 20Linux%2C%20Mandriva%20Linux%2C%20Ubuntu%20Linux&geo=&gprop=&cmpt=q&hl=en-US

Grüße, Peter

Bernhard
11.11.2011, 09:45
Ich weiß nicht ob wir Redhat und Suse überhaupt noch berücksichtigen sollen
SuSE übernehme ich, nach Lust und Zeit. Ubuntu "fliegt" bei mir lediglich auf einer Ersatzplatte irgendwo rum. Ich überlege aber gerade, ob ich mir eine weitere Platte für Windows7 zulegen sollte. Das würde sicher Sinn machen :) , auch für sebix und den UTF8 Zeichensatz.

pmvstrm
11.11.2011, 11:35
@Bernhard

Hast Du alles Files richtig eingecheckt?

Zeile 57 in MainWindows.cpp findet OpenCatalogues(); und im Header sehe ich auch keine Deklaration.
Ich habe es mehrfach frisch ausgecheckt und der Fehler ist gleich. Andere Änderungen die Du gemach hast sind drin.
Kann es sein das Du eine neue Datei angelegt hast und die nicht mit Tortoise add erst hinzugefügt hast?

Grüße, Peter

Bernhard
11.11.2011, 12:05
Kann es sein das Du eine neue Datei angelegt hast und die nicht mit Tortoise add erst hinzugefügt hast?
Oops. Das Tortoise add habe ich übesehen. Kann ich aber erst abends einfügen. Die Funktion OpenCatalogues habe ich in die Datei mainwindow_tools.cpp ausgelagert, damit die Hauptdatei halbwegs übersichtlich bleibt.

pmvstrm
11.11.2011, 13:03
Ach so, dann ist das ja kein größeres Rroblem!

Hier noch mal ein Bild von unserem Programm wie es munter auf dem neuesten Betriebssystem Flagschiff von Apple läuft
http://img809.imageshack.us/img809/7660/macosx107.png

Grüße, Peter

Bernhard
11.11.2011, 14:20
Nett. Nett. Mir fällt da nur auf, dass das Menü oben fehlt. Oder sind das die drei farbigen Lämpchen (Ampel)?
Gruß Bernhard

pmvstrm
11.11.2011, 14:27
Nee da fehlt nix.

Das Menü ist bei Mac Applikationen ganz oben in der Leiste untergebracht und
ändert sich dynamisch durch anklicken der laufenden Applikation. Wenn ich also z.B Firefox
oder Safari als Webbrowser starte, ändert sich oben das Hauptmenü und die Firefox Menü
Strukturen werden z.B sichtbar:)


Die drei Lämpchen open (Ampel) haben quasi die selbe Funktion wie bei Windows _ [] X
Mit dem roten Lämpchen schließt Du das Programm oder Fenster. Mit dem gelben Lämpchen
minimierst Du und mit grün stellst Du das Fenster wieder her.

Bernhard
11.11.2011, 18:06
Zeile 57 in MainWindows.cpp findet OpenCatalogues(); und im Header sehe ich auch keine Deklaration.
Hallo Peter,

schau mal bitte hier http://sourceforge.net/p/my3dstarchart/my3dsc/ci/0b530fe8dd7bf776b6d5598d4c612114f76a4297/tree/ rein. Die Datei mainwindow_tools.cpp habe ich heute in der früh doch korrekt hochgeladen. Scheinbar läuft da bei deinem sync etwas schief.

BTW: Heute abend kann ich mir die Events nochmal etwas ansehen. Übers Wochende bin ich dann beschäftigt und muss das Projekt damit bis Sonntag abend "auf Eis legen".
Gruß

pmvstrm
11.11.2011, 18:52
Hi Bernhard,

Scheinbar fehlt mainwindow_tools.h ..?:)

Grüße, Peter

Bernhard
11.11.2011, 20:15
Hallo Peter,

da fehlt nix! Die Datei mainwindow_tools.cpp soll lediglich Methoden der Klasse MainWindow speichern, die in der Datei mainwindow.cpp bei der Weiterentwicklung nur Platz wegnehmen und dadurch die Datei mainwindow.cpp unnötig groß, bzw. "ellenlang" werden lassen. Die Funktion OpenCatalogues funktioniert und ist mehrfach getestet und ist damit für die Weiterentwicklung erst mal unwichtig.

Solltest Du beim Compilieren immer noch den Fehler mit der Funktion OpenCatalogues bekommen, schau die mal die Datei My3DStarChart.pro an. Diese Datei muss einen Eintrag mainwindow_tools.cpp bei den cpp-Dateien haben. Sonst wirft der Compiler einen Fehler. Hilft das auch nicht weiter poste mal die genau Meldung des Compilers. Die Funktion OpenCatalogues ist in der Datei mainwindow.h gleich am Anfang des private-Teils korrekt deklariert:


private:
39 Ui::MainWindow *ui;
40
41 string ConvertRGBtoHex(int num);
42 string ConvertRGBtoHex(int r, int g, int b);
43 bool OpenCatalogues();

Gruß Bernhard

pmvstrm
11.11.2011, 20:47
Dubios. Jetzt habe ich es noch mal ausgecheckt und es geht. Vielleicht waren da irgendwelche Zwischendateien noch mit im Spiel.
Aber egal, nun läufts wieder.

Update:

Problem geortet. Die Buildeinstellungen mussten bei mir umgestellt und vor dem erstellen qmake einmalig aufgerufen werden,
dann ist der Fehler weg.

Gruß, Peter

Bernhard
12.11.2011, 00:02
Hi Peter,

das Mausrad kann man jetzt auch verwenden, um die Sternkarte zu vergrößern, bzw. zu verkleinern. Der Diaolg Einstellungen/Beobachter sollte jetzt auch auf Linux funktionieren. Da fehlte noch ein update(), um die Sternkarte nach Verändern der Blickrichtung neu zu zeichnen.

Es fehlen jetzt nur noch zwei Features aus der MFC-Version:
1) Die Möglichkeit die Blickrichtung über die Pfeiltasten (rauf, runter, links, rechts) zu verändern. Man muss da nur noch die Keyboard-Events abfangen.
2) Die Messier-Objekte werden noch nicht angezeigt.

Habe heute abend leider vergeblich versucht den Qt Creator auf Windows7 (64 Bit) zu installieren. Der Installer hat sich immer wieder bei der Datei ...\CN.dll verabschiedet.

Meine Ubuntu-Installation habe ich Windows7 geopfert, weil Festplatten zur Zeit ziemlich teuer sind. Der Grund für die Verteuerungsrate von über 100% liegt angeblich in der Flutkatastrophe in Thailand. Die großen Festplattenhersteller sind davon offensichtlich alle betroffen. Man muss sich da also in Geduld üben.
Gruß Bernhard

EDIT: Habe noch eine kleine Frühschicht eingelegt und die Portierung fertig gestellt. Die Tastatur nimmt die Zeichen u,j und g,h entgegen. Mit den Pfeiltasten kann man die Blickrichtung des Beobachters verändern. Info-Box angepasst. Aktuelle Blickrichtung mit Sternbild Orion (links unten mit dem großen Orionnebel M42), Hyaden und Plejaden (M45). Viel Spaß beim Ausprobieren.

Bernhard
12.11.2011, 08:22
und vor dem erstellen qmake einmalig aufgerufen werden,
dann ist der Fehler weg.
Das qmake hat vermutlich die Datei My3DStarChart.pro neu geschrieben. Eben die Datei, die mich weiter oben auch schon Nerven gekostet hatte ;) . Manchmal hilft in solchen Fällen auch im Menü Erstellen (Qt Creator) ein "Bereinigen" und "Alles neu erstellen".

Ich habe auf der Download-Seite abschließend die Datei My3DStarChart_Qt4.7.src.zip eingestellt und die ursprüngliche Source-Datei in My3DStarChart_MFC.src.zip umbenannt. Wir können uns dann nächste Woche Gedanken über neue Features machen. Man könnte als Gag eventuell das aktuelle Datum bestimmen und die Blickrichtung danach festlegen. Die Sternkarte würde dann z.B. beim Start immer den Himmel von Deutschland/Europa aus um ca. 22:00 anzeigen. Nett wären dann natürlich noch ein paar Linien, welche die zugehörigen Sternbilder anzeigen. Mit drawLine sollte das aber recht schnell gemacht sein. Man bräuchte dazu nur einen relatv kleinen, neuen Katalog mit den Orientierungssternen, welche die Sternbilder bilden.
Gruß und schönes Wochenende

Bernhard

pmvstrm
12.11.2011, 12:29
Guten Morgen


Hi Peter,
das Mausrad kann man jetzt auch verwenden, um die Sternkarte zu vergrößern, bzw. zu verkleinern. Der Diaolg Einstellungen/Beobachter sollte jetzt auch auf Linux funktionieren. Da fehlte noch ein update(), um die Sternkarte nach Verändern der Blickrichtung neu zu zeichnen.


Ok, ich werde die Änderungen mal gleich abrufen und studieren



Es fehlen jetzt nur noch zwei Features aus der MFC-Version:
1) Die Möglichkeit die Blickrichtung über die Pfeiltasten (rauf, runter, links, rechts) zu verändern. Man muss da nur noch die Keyboard-Events abfangen.
2) Die Messier-Objekte werden noch nicht angezeigt.


Toller Job Bernhard! Es geht Stück für Stück voran und das ist das wichtigste (wir sind ja nicht auf der Flucht).



Habe heute abend leider vergeblich versucht den Qt Creator auf Windows7 (64 Bit) zu installieren. Der Installer hat sich immer wieder bei der Datei ...\CN.dll verabschiedet.


CN.dll ist ein Perl5 Modul für Windows.Offenbar werden da irgendwelche Argumente übergeben und der Prozess schmiert ab.
Du kannst aber von deinem anderen Rechner einfach deinen QTCreator Ordner kopieren, Verknüpfung auf die C:\QtSDK\QtCreator\bin\qtcreator.exe
machen und das wars:) Wenn QTCreator QT nicht danach nicht findet,nicht schlimm. Einfach in den QTCrerator Einstellungen
c:\QtSDK\Desktop\Qt\4.7.4\mingw\bin und falls er nach dem Compilerverzeichnis fragt: X:\QtSDK\mingw




Meine Ubuntu-Installation habe ich Windows7 geopfert, weil Festplatten zur Zeit ziemlich teuer sind. Der Grund für die Verteuerungsrate von über 100% liegt angeblich in der Flutkatastrophe in Thailand. Die großen Festplattenhersteller sind davon offensichtlich alle betroffen. Man muss sich da also in Geduld üben.


Klar kannst Du Dich in Geduld üben, Du kannst aber auch das hier benutzen (kostenlos) :)
http://img97.imageshack.us/img97/2789/vbwin7.png

Download
https://www.virtualbox.org/wiki/Downloads


EDIT: Habe noch eine kleine Frühschicht eingelegt und die Portierung fertig gestellt. Die Tastatur nimmt die Zeichen u,j und g,h entgegen. Mit den Pfeiltasten kann man die Blickrichtung des Beobachters verändern. Info-Box angepasst. Aktuelle Blickrichtung mit Sternbild Orion (links unten mit dem großen Orionnebel M42), Hyaden und Plejaden (M45). Viel Spaß beim Ausprobieren.[/QUOTE]

Die Funktionen habe ich überprüft, funktioniert alles ganz Klasse auf Windows und Mac, aber unter Linux interpretiert er die
Daten aus der hyg.csv Datei irgendwie anders habe ich den Eindruck.

Darstellungsproblem unter Linux:
http://img163.imageshack.us/img163/1751/ubuntu64bit201111121219.png

Ich denke das hat was mit dem alten LF/RF Problem oder dem Encoding zu tun.
Grüße, Peter

Bernhard
13.11.2011, 20:02
Ich denke das hat was mit dem alten LF/RF Problem oder dem Encoding zu tun.
Hallo Peter,

da gab es früher diese netten Kommandozeilentools unix2dos und dos2unix. Die müsste man mal auf die Datei hyg.csv anwenden und nachsehen, ob es damit klappt.
Gruß,

Bernhard

pmvstrm
13.11.2011, 20:19
Hallo Bernhard,

Das habe ich schon alles ausprobiert und noch einiges mehr. Das ist aber nicht das Problem.
Das seltsame ist, dass ich unter KDE4.x diese Effekte nicht habe.Ubuntu kommt standardmässig mit Gnome
daher. Ich habe schon sämtliche System, Xorg und Gnome locales rekonfiguriert - trotzdem keine Änderung.
Ich habe nun 2x Installationen Ubuntu 11.10 (aktuelle und unterstütze Version) und in beiden Standard Installations
varianten tauchen immer jeweils unter Gnome diese Fehler auf aber unter KDE nicht.Sogar unter FreeBSD Unix 8.2
läuft es tadelos, nur unter Linux mit Gnome nicht.

FreeBSD UNIX 8.2 mit KDE4.5
http://img838.imageshack.us/img838/8448/freebsd8220111113175406.png

Grüße Peter

Bernhard
13.11.2011, 21:34
und in beiden Standard Installations
varianten tauchen immer jeweils unter Gnome diese Fehler auf aber unter KDE nicht.
Hi Peter,

ich hatte lustigerweise bei der Entwicklung der MFC-Version kurzfristig mal ein ähnliches Bild/Problem. Das lag dann daran, dass an einer entscheidenden Stelle in der Berechnung der Sternpositionen statt einem float ein etwas versteckter int verwendet wurde, was dann zu konzentrischen Ringen in der Darstellung der Sternpositionen geführt hat. Um Gnome und Gtk selbst habe ich mich bisher aber eher weniger gekümmert, um mich nicht zu sehr in OS-Details zu verlieren.
Gruß

pmvstrm
14.11.2011, 12:48
GutenMorgen

Ich habe das jetzt noch mal validiert und meine Vermutung, das es ein Gnome Desktop Problem ist, hat sich bestätigt.
Ich habe die aktuelle Ubuntu Version 11.10 mal als KDE Variante (Kubuntu) installiert und viola es funktioniert.

Ubuntu 11.10 mit KDE 4.5 (KUbuntu) Standard Installation:
http://img189.imageshack.us/img189/8888/kubuntu64bit20111114124.png

Ich denke das ist ein generelles Gnome vs. KDE Problem (egal welche Distri man verwendet) und wir müssen dieses Problem
lösen.Ich kümmere mich darum aber vielleicht weiß Sebix aus seiner Erfahrung mehr über GNome/KDE Seltsamkeiten. Ich
werde da mal etwas recherchieren.

Update:
Ich habe nun eine ganze Weile herum gesucht und scheinbar gab und gibt es noch heute zwischen GTK und QT erheblich
Konkurenzkämpfe.Nokia hat zwar einiges in Richtung Gnome/GTK Integration gemacht, aber das bezieht sich offenbar nur
auf die Widgets selbst, nicht auf solche Dinge qie QPainter.

Ein Ausweg....
Aus der ganzen Sache könnte unser geplanter OpenGL Port sein. Ich habe das gerade getestet und unter Gnome gibt es da
keine Probleme. Ist ja auch klar, die Grafikschnittlstelle ist ja eine ganz andere und bypasst das ganze Gnome/KDE Thema.


Grüße, Peter

pmvstrm
14.11.2011, 19:19
Hallo,

Nach ziemlich langer Suche habe ich nun herausgefunden das es doch nicht an KDE vs. Gnome liegt, sondern mit dem Systemweiten
Encoding zu tun hat. hyg.csv wird von file als US English ASCII richtig zugeordnet. QT4 Anwendungen lesen aber offenbar die am System
eingestellten Lokalisierungen ein und interpretieren die Daten dann anders. Ich habe natürlich meine Linux/Unix Systeme auf Deutsch
eingestellt. Danach kommt das. Wenn Deutsch als Systenweite Sprache eingestellt wird, kommt es zu dem Problem. Auch bei US
Englisch, aber nicht bei Irisch Englisch. Ist Irisch Englisch als Systemweite lokalisierung für Gnome/KDE sowie für Konsole eingestellt
werden die HYG Daten derzeit richtig dargestellt.

Das Problem lässt sich folgender massen reproduzieren:

1) Systemeinstellungen KDE4.x/Gnome2.x Regionales/Sprache Englisch/Irisch -> Als Systemweit festlegen
2) Neustart oder ausloggen.Nach Login unser Programm starten. Die Darstellung ist richtig,

Stellt man z.B Deutsch ein, erhällt man die falsche Darstellung und bei US Englisch bleibt der Anzeigebereich
(dort wo eigentlich die Sterne angezeigt werden sollen) leer.

Grüße Peter

Bernhard
14.11.2011, 20:46
Stellt man z.B Deutsch ein, erhällt man die falsche Darstellung und bei US Englisch bleibt der Anzeigebereich
(dort wo eigentlich die Sterne angezeigt werden sollen) leer.
Hi Peter,

man müsste sich das einfach mal im Debugger ansehen. Aber das sind schon sehr gute Hinweise, wenn man weiß, wie man den Fehler reproduzieren kann. Ich werde jetzt noch mal Windows7 ansehen. Dass das QtSDK inklusive Creator über 100k Dateien (!) hat ist natürlich schon etwas fies. Ich besitze nämlich nur einen 4GB-Stick, sonst hätte ich den gesamten Ordner einfach rüberkopiert. So muss man es eben in mehreren Schritten machen.

Ich melde mich dann wieder.
Gruß

Bernhard

pmvstrm
15.11.2011, 14:39
Hallo,
Habe nichts desto trotz die Linux (Ubuntu/Debian) Installationspakete fertig gestellt.
Jetzt nachdem wir die Infrastruktur haben unsere 3 Plattformen (jeweils 32 und 64 Bit) zu
beliefern und per Knopfdruck mit Installern zu versorgen, können wir uns mehr um
das eigentliche Programm kümmern.

Ich werde mal schauen ob wir nicht einen QT/OS neutrales Darstellungsformat finden,
damit uns derartiger Ärger in Zukunft erspart bleibt. Von ASCII Dateien werden wir uns aber
wohl verabschieden müssen, denn die machen mehr Ärger als sie nützen.

Grüße, Peter

Bernhard
15.11.2011, 21:54
Hallo Peter,

vielleicht muss man bei der Installation des Qt Creators (inklusive SDK) auf Windows7 nur lange genug warten können. Das Kopieren des Ordners QtSDK via USB-Stick dauert zumindest schon mal so rund zwei Stunden funktioniert aber auch. Vielen Dank für den Tipp.

Die Debug-Version (von My3DStarChart) habe ich damit dann zum Laufen gebracht. Die Release-Version liefert leider noch Speicherzugriffsfehler und kann deshalb nicht gestartet werden.

pmvstrm
15.11.2011, 22:09
Hmm,
Du kannst natürlich auch den Online Installer verwenden (ist nur ca 12 MBytes groß)
http://get.qt.nokia.com/qtsdk/Qt_SDK_Win_online_v1_1_4_en.exe

Der bietet Dir an was Du installieren willst.
Das ganze Harmatten, Symbian und Simulatorzeugs brauchst Du nicht, nur den Desktop Installationspunkt.
Alles im allen ca. 300 MBytes max.

Grüße, Peter

Bernhard
19.11.2011, 00:25
Darstellungsproblem unter Linux:
http://img163.imageshack.us/img163/1751/ubuntu64bit201111121219.png
Hi Peter,

ich habe gerade OpenSuSE 12.1 installiert und habe dort genau dieses Darstellungsproblem. Es läßt sich so wie Du beschrieben hast, durch Ändern der Sprache auf Englisch beheben. Sieht man sich das Problem im Debugger des Qt Creators an, sieht man, dass bei Vorhandensein des Darstellungsfehlers einige atof's nicht funktionieren und als atoi übersetzt werden.

Es handelt sich also eventuell um einen Bug im gcc.
Grüße, Bernhard

EDIT: Habe sämtliche atofs in der Datei mainwindow_tools.cpp durch ein QString::ToDouble(), mit Hilfe eines temporären QString, ersetzt. Jetzt läuft das Release auch unter Linux (OpenSuSE 12.1) ohne Umstellung der Sprache :) .

pmvstrm
19.11.2011, 06:04
Guten Morgen Bernhard,

Das ist ja mal eine tolle Neuigkeit:)
Werde gleich mal mal die Updates aus dem Repository laden und es mir anschauen.

Update:
Ein Problem beim Hauptmenü scheint es aber noch zu geben.
Offenbar wird durch den Bereich wo die Sterne gezeichnet werden ein Teil des Hauptmenüs unter KDE überdeckt.
Unter GNome ist es ok aber unter KDE sieht es unschön aus. Kannst Du vielleicht die obere Kante des Zeichenbereich
etwas nach unten verlagern? Nur wenn es machbar ist, wenn nicht - auch egal.

Hier das was ich meine (Menü Einstellungen)
FreeBSD UNIX 8.2 mit KDE4.5
http://img838.imageshack.us/img838/8448/freebsd8220111113175406.png


Gruß, Peter

Bernhard
19.11.2011, 06:45
Nur wenn es machbar ist, wenn nicht - auch egal.
Guten Morgen Peter,

ich werde dazu vstl. mal etwas mit dem Zeichenbereich experimentieren, was sehr leicht über einige Attribute der Klasse MainWindow machbar ist. Es kann nur sein, dass man dann in der Windows-Version einen zusätzlichen Rand bekommt. Mal sehen.
Grüße, Bernhard

Bernhard
19.11.2011, 08:41
Mal sehen.
Hi Peter,

ein setClipRect konnte das Problem beseitigen. Das Menü bleibt jetzt unter OpenSuSE 12.1 komplett sichtbar.
Gruß

pmvstrm
19.11.2011, 09:38
Sehr gut, dann haben wir das auch von der Liste.
Müssen mal schauen wie wir das mti den Release Notes und den BuildNr machen.

ps:
Hab mal unser Projekt spasseshalber auf QT Android portiert
http://img197.imageshack.us/img197/9718/onandroid.jpg

Die Untermenüs sind für so ein kleines Display nicht gerade Ideal und die hyg.csv konnte ich noch
nicht deployen, aber grundsätzlich läuft unsere App auch auf Android (wichtigstes Mobile OS für Smartphones
und Tablets - derzeit 53% Marktanteil - stark steigend):)

Grüße, Peter

Bernhard
19.11.2011, 12:22
Die Untermenüs sind für so ein kleines Display nicht gerade Ideal
für so kleine Displays müsste man sich auf ein Menü (z.B. Bearbeiten o.ä.) beschränken und dort nur Untermenüs einbauen, die für eine mobile Anwendung wirklich Sinn machen, z.B. "Sternbilder einblenden". Das wäre dann aber eine eigene, selbständige Applikation unabhängig von dem eigentlichen Programm.

Sternbilder könnte man übrigens tatsächlich aus Cartes Du Ciel übernehmen. Die Bezeichnungen dort stimmen mit dem Katalog hip_main.dat überein. Man müsste sich nur durch schätzungsweise 88 x 5 Sterne durchklicken und die entsprechende HIP-Nr. in einer geeigneten Reihenfolge notieren. So etwas ist, viel Zeit vorausgesetzt, schon machbar und wäre für ein Smartphone dann sicher eine nette Sache, auch wenn es solche Apps bereits gibt.
Gruß

pmvstrm
19.11.2011, 17:00
Hi,

Googles Android ist ja nun auf fast jedem neuen Handy das nicht von Apple ist.
Theoretisch könnte man ja ein Hardwaredevice für Teleskope bauen und dann aufgrund der GPS des Handybesitzers
das Teleskop auf den Stern im Display ausrichten (nur so eine Idee):D:D

Gruß Peter

Bernhard
19.11.2011, 17:20
Googles Android ist ja nun auf fast jedem neuen Handy das nicht von Apple ist.
Hallo Peter,

Handymarken sind definitiv nicht mein Thema, wie man sieht :D . Sprich: "Da weiß ich auch nicht, ob der Stier die Milch gibt, oder der Hahn die Eier legt".


Theoretisch könnte man ja ein Hardwaredevice für Teleskope bauen und dann aufgrund der GPS des Handybesitzers
das Teleskop auf den Stern im Display ausrichten (nur so eine Idee):D:D
Diese Idee finde ich außerordentlich originell. So etwas wäre Komfort pur. Man tippt nur auf das Touchdisplay des Handys und das Goto des Teleskops stellt es ein. Der Zoom wäre da auch ziemlich nützlich!! Ein Vertriebsprofi würde so etwas sofort kommerziell anbieten.
Gruß, Bernhard

pmvstrm
20.11.2011, 00:02
Hallöchen,
Hab auch noch mal einen nächtlichen Streifzug durch die QT Doku und QT Labs Projekte gemacht und dabei heraus gefunden das QT ja
nun auch das GPU Hardwarehersteller neutrale OpenCL versteht:)

Mit kleinen Codeänderungen an QPainter kann man da einiges an Leistung herauskitzeln, falls es mal erforderlich werden sollte.


QCLEvent event = colorize(srcImageBuffer, dstImageBuffer, color);
event.waitForFinished();
dstImageBuffer.read(&dstImage);
QPainter painter(this);
painter.drawImage(0, 0, dstImage);


In einem Testprogramm lief auf einem alten System (DualCore / 8600er Nividia Karte) eine Mandelbrot Simulation zunächst mit
ca. 1,2 Frames pro sek und mit OpenCL als Nachbrenner dann mit ca 20 Frames pro sek!:) Eine erhebliche Leistungssteigerung und
nicht wie CUDA nur auf NVidia Hardware beschränkt.Die Datentypgenauigkeit liegt übrigens über der für mathematischen Genauigkeit
verlangten (das war ja anfangs bei CUDA ein Problem) Sicher brauchen wir das momentan gar nicht, sollten wir aber mal
Performanceprobleme bekommen, haben wir hier noch Leistungsreserven.:)

Grüße, Peter

pmvstrm
20.11.2011, 13:00
Guten Sonntag,

So um an meinen obigen Post noch mal anzuknüpfen.
Wenn man unter Win32/Win64 die Toolchain für Make für den MS Visual C/C++ Compiler 2008/2010 selektiert,
kann man durch simples hinzufügen der OpenMP Includes die Mehrkern Unterstützung aktivieren. Unter dem Gnu C/C++
Compiler geht dies auch, nur benötigt man dazu die pThreading Library, die als DLL's für QTCreator nicht mitgeliefert wird.
Man kann sie aber ausserhalb von QTCreator mittels dem MSYS GNU Teilsystem für Windows kompilieren und dann auch
unter Windows GNU C/C++ Multicore Kompilate erzeugen. Technisch ist damit die Hürde zu Multicore Programmierung
genommen aber damit solche Anwendungsfälle auch sinnvoll sind muss man sein Programm natürlich auch dementsprechend
strukturieren. In einem späteren Codereview (irgendwann nächstes Jahr) kann man sich ja da noch mal Gedanken machen.

Gruß, Peter

Bernhard
21.11.2011, 21:10
Hallo Peter,

ich habe jetzt mal zwei neue Funktionen zum Zeichnen der Sternbilder und ein neues Key-Event eingebaut:

1.) Die Funktion ZeichneSternbilder soll später mal alle Sternbilder zeichnen. Aktuell wird dort nur das Sternbild Orion umrissen
2.) Die Funktion ZeichneSternbildLinie verbindet zwei Sterne aus dem Hipparcos-Katalog mit einer (blauen) Linie
3.) Mit der Taste s auf der Tastatur können die Sternbilder (bzw. aktuell das Sternbild Orion) ein- und ausgeblendet werden.

Das Zeichnen der Sternbilder reduziert sich damit weitestgehend auf das Zusammenstellen der Hipparcos-Nummern und das Ermitteln der zugehörigen Zeilennummern in der Datei hip_main.dat

@All: Es wäre schön, wenn sich diese verbleibende Arbeit aufteilen würde. Kurz: Will da jemand mitmachen?

Gruß, Bernhard

Bernhard
22.11.2011, 18:30
@All: Es wäre schön, wenn sich diese verbleibende Arbeit aufteilen würde. Kurz: Will da jemand mitmachen?
Das hat sich erledigt. Im Code von Cartes Du Ciel befinden sich entsprechende Dateien, die man so konvertieren kann, dass man die gesuchten Nummern aus dem Hipparcos-Katalog bekommt :) . Das sollte in den nächsten Tagen machbar sein.
Gruß

pmvstrm
22.11.2011, 19:16
Hallo Bernhard,

Ich war ein paar nicht so recht fit und bin es auch momentan nicht voll wieder. Aber ich schaue mir die letzten Commits gerade an.
Können wir das in Zukunft so machen das Du folgende Dateien nicht mehr mit eincheckst?

Makefile
Makefile.Debug
object_script.My3DStarChart.Debug
object_script.My3DStarChart.Release
My3DStarChart.pro.user

Zwischendatein
Diese Files werden ja dynamisch vom QMake im Zusammenspiel mit dem QTCreator erstellt und sind für die Toolchain am
jeweiligen Entwicklerrechner verantwortlich. Wenn die Dateien drin sind, werden ggf. Änderungen in den QMake
Steuerungsdateien übersprungen und neueste Änderungen (z.B hinzufügen von QTLibs) wird nicht richtig erkannt und es
hagelt Fehlermeldungen. Im Grunde genommen ist nur die Datei My3DStarChart.pro notwendig, die anderen werden
automatisch erstellt (auch die *.pbh Files für die pre complied Header).

Bugtracking:
Das war das eine was mir aufgefallen ist. Das Du das Problem mit den Locales gelöst hast, werde ich postum
noch mal in unseren Tickettracker eintragen und als erledigt deklarieren (sollten wir immer machen falls Bugs auftauchen).

Compiler und Linker Warnings


my3dsc\mainwindow.cpp:82: Warnung:C4100: 'arg1': Unreferenzierter formaler Parameter
my3dsc\mainwindow_tools.cpp:21: Warnung:C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\INCLUDE\stdio.h(237): Siehe Deklaration von 'fopen'


Ich vermute das Du diese Warnings nicht angezeigt bekommst, weil Du den GCC mit niedriger Logging Stufe laufen lässt, der MS
C/C++ Compiler findet sie aber schon und deshalb fixe ich das jetzt mal und kümmere mich darum warum das der GCC nicht anzeigt.
Ok, das war es erstmal.


Grüße, Peter

Bernhard
22.11.2011, 20:24
Ich war ein paar nicht so recht fit und bin es auch momentan nicht voll wieder.
Hallo Peter,

erst mal gute Besserung.


Können wir das in Zukunft so machen das Du folgende Dateien nicht mehr mit eincheckst?

Makefile
Makefile.Debug
object_script.My3DStarChart.Debug
object_script.My3DStarChart.Release
My3DStarChart.pro.user

Die Datei My3DStarChart.pro.user wird vom Qt Creator automatisch angelegt. Die sollte meiner Meinung nach komplett raus aus der Code-Verwaltung. Ich verstehe auch nicht so recht, warum die miteingecheckt wurde. Das muss ein Versehen gewesen sein. Die anderen Dateien fasse ich sowieso nicht an.


Ich vermute das Du diese Warnings nicht angezeigt bekommst, weil Du den GCC mit niedriger Logging Stufe laufen lässt
Die Warnings wegen arg1, arg2, usw. habe ich schon gesehen. Nachdem das aber Signale (?) sind, die ich nicht angelegt habe, habe ich daran erst mal nichts geändert.

Mit neuen Commits warte ich also, bis Du die Warnings behoben hast. Gib mir aber bitte möglichst umgehend bescheid, wenn Du fertig bist. Für die Sternbilder fehlt nicht mehr viel. Das ist noch etwa eine Stunde Arbeit. Dann habe ich den Code dazu fertig.
Viele Grüße, Bernhard

pmvstrm
22.11.2011, 21:05
Hi Bernhard

Die fixes sind drin (21:01 Uhr eingecheckt / nochmals ausgecheckt alles drin).
Die generated Files sind noch drin (wegen Zeitmangel aber die kannst Du gerne entfernen).

Ich habe die unbenötigten Variablen und den alten, toten Code von mir entfernt und (converRGBtoHex u.s.w)
und in der My3DStarChart.pro in Zeile 12: DEFINES += _CRT_SECURE_NO_WARNINGS # MS Compiler 2008/2010 propertary deprecated Warning off - pmvstrm
eingefügt. Das unterdrückt die deprecated Warning des MSVC Compilers (er schlägt da Windowsspezifische, properitäre Funktionen für scanf u.s.w vor,
das würde ausser auf Windwos aber nicht funktionieren und kann hier ausgeblendert werden. Der GCC stört sich nicht dran, habs getestet),

Grüße, Peter

Bernhard
22.11.2011, 23:09
Für die Sternbilder fehlt nicht mehr viel. Das ist noch etwa eine Stunde Arbeit. Dann habe ich den Code dazu fertig.
Programmiert ist es, aber es kommt insgesamt leider ziemlicher Unsinn raus :D :D . Die ersten Tests sahen gut aus, aber irgendetwas stimmt noch überhaupt nicht. Ich muss mir das nochmal etwas genauer ansehen.

Bernhard
22.11.2011, 23:22
Die generated Files sind noch drin (wegen Zeitmangel aber die kannst Du gerne entfernen).
Hi Peter,

lokal kann man Dateien aus der Codeverwaltung zwar rausnehmen. Das hat aber keine Auswirkungen auf die Dateien bei sourceforge. Ich habe momentan keine Ahnung, wie man Dateien komplett (inklusive aller Commits) aus der Verwaltung löscht.
Gruß, Bernhard

Bernhard
23.11.2011, 00:47
Programmiert ist es, aber es kommt insgesamt leider ziemlicher Unsinn raus.
Hallo Peter,

es war nur ein relativ kleines Detail mit ziemlich großer Wirkung. Jetzt "funzt" es. Ich musste anschließend leider mit -f synchronisieren und hoffe, dass ich dabei nichts gelöscht habe. Um die Sternbilder zu sehen, muss man jetzt nur den Katalog hip_main.dat in das Arbeitsverzeichnis stellen. Das Programm lädt dann automatisch diesen Katalog vor dem hyg.csv. Sobald das Programm gestartet ist, kann man die s-Taste auf der Tastatur drücken, um die einzelnen Sternbilder sichtbar zu machen :) . Erneutes Drücken der s-Taste läßt die Sternbilder wieder verschwinden.
Viele Grüße, Bernhard

pmvstrm
23.11.2011, 13:45
Hi Bernhard,

Du kannst das ja immer gut überprüfen, in dem Du in ein jungfreuliches Verzeichnis zur Kontrolle frisch komplett auscheckst.
Du öffnest dann mit irgend einem Editor oder QTCreator einzelne Files und schaust ob die Änderungen drin sind, dann gehst
Du damit auf Nr sicher:)

In der Commit History steht auf jedem Fall das du Constellations als letztes geaddet/edited hast
http://sourceforge.net/p/my3dstarchart/my3dsc/ci/a0a6cb7df738f79e18767ac45c7d912161e32144/log/

Ich schau mir später die neuesten Commits an. Sind die überflüssigen Files jetzt raus?

Grüße, Peter

Bernhard
23.11.2011, 14:58
Sind die überflüssigen Files jetzt raus?
Leider nein. Ich habe momentan keine Ahnung, wie man das von sourceforge.net aus machen kann.

pmvstrm
23.11.2011, 16:32
Hallo Bernhard,

Du hast leider meine Änderungen an der My3DStarChart.pro rückgängig gemacht und damit die Visual C/C++ Compiler Warnings wieder aktiviert.
Auch wurde sämtlicher toter Code wieder in den aktuellen Stand zurück überführt. Du musst unbedingt VOR irgend welchen neuen Checkins
erstmal aus dem Repository updaten und deinen Stand mit den Repoisitory Stand syncronisieren und erst danach weitere Änderungen einführen,
sonst löscht Du beim einchecken sämtliche anderen checkins!

Ich korrigiere das jetzt und merge das mit mit deinen Änderungen.Warte bitte so lange und speicher deine Arbeiten in einem temporären
Ordner. Sobald ich fertig bin, checkst Du am besten komplett neu aus (in einen frischen Ordner, den alten kannst Du umbennenen) und
pflegst dann deinen neuen Code ein. Dann: Neue Files Add, geärderte Files commit und am Ende Syncronisieren des Checkout Ordners,
dann sollte es stimmen.

cuxmini
23.11.2011, 17:44
Hallo,
...als Nachtrag...

bei der RPI (Rensselaer is America’s oldest technological research university) werden mit Hilfe von Boinc solche Berechnungen bereits gemacht.

Gruß
cuxmini

pmvstrm
23.11.2011, 17:50
SF Rep clean

So ich habe jetzt endlich diese Files aus dem Sourceforge Repositority entfernen können, aber es war ein harter Kampf.
Hab es danach noch einmal in einen frischen Ordner ausgecheckt und jetzt sind die Files "wirklich" nicht mehr vorhanden.

ps:
Ich habe herausgefunden das wenn Du im QtCreator vor dem einchecken auf bereinigen gehst, die meisten autogenerated
Files verschwinden (nur die my3dsc.pro.user bleibt übrig). Wie auch immer. So lange Du nicht neue Files explizit addest,
wird sie auch nicht mehr hochgeladen.

ps2:
Am besten Du benennst deinen alten Projektordner um und checkst den neuen Stand aus (es wäre super fatal wenn Du
jetzt den alten Stand deines Ordners wieder eincheckst!!! Einfach neu auschecken, dann QTCreator starten, deine Modifikationen
einbauen, danach commit und gut. Am besten Du checkst danach noch mal aus damit Du siehst ob alles passt und deine UND
meine Änderungen auch drin geblieben sind.

ps3:
Wenn in deinen checkout Ordner in der Datei My3DStarChar.pro in Zeile 13
DEFINES += _CRT_SECURE_NO_WARNINGS # MS Compiler 2008/2010 propertary deprecated Warning off - pmvstrm
drin steht ist alles gut! WENN NICHT: Unbedingt erst neu auschecken, dann deine Änderungen einbauen, dann commiten,
dann Änderungen aus dem Projekt bei SF ziehen (entfernte Änderungen auf der HG Workbench ziehen) und dann weiter machen.




Grüße, Peter

pmvstrm
23.11.2011, 18:00
Hallo,
...als Nachtrag...

bei der RPI (Rensselaer is America’s oldest technological research university) werden mit Hilfe von Boinc solche Berechnungen bereits gemacht.

Gruß
cuxmini

Hallo,
Kann sein das die etwas ähnliches machen, aber wir sind kein BOINC Projekt und haben einen völlig anderen Ansatz als die.
Zum Teil geht es hier auch einfach nur ums herumexperimentieren und Spass haben.

Gruß, Peter

Bernhard
23.11.2011, 18:37
So ich habe jetzt endlich diese Files aus dem Sourceforge Repositority entfernen können, aber es war ein harter Kampf.
Hab es danach noch einmal in einen frischen Ordner ausgecheckt und jetzt sind die Files "wirklich" nicht mehr vorhanden.
Prima :) .


ps3:
Wenn in deinen checkout Ordner in der Datei My3DStarChar.pro in Zeile 13
DEFINES += _CRT_SECURE_NO_WARNINGS # MS Compiler 2008/2010 propertary deprecated Warning off - pmvstrm
drin steht ist alles gut!
Ich dachte ursprünglich, dass man mit "Synchronize" den aktuellen Stand von den sourceforge-Dateien bekommt, aber das ist leider falsch. Ich habe es gerade explizit mit der Datei My3DStarChar.pro ausprobiert. Es geht aber mit Update auf den Hauptordner.

Ich frage mich nur, warum dann bei dem Dialog bei Synchronize beide Richtungen für Up- und Download als Buttons verfügbar sind. Bei einem Download kommen sogar Meldungen, dass die neuesten Änderungen downloaded wurden. Aber egal. Ich benutze ab jetzt dann halt immer Update. Der Hauptordner hat jetzt auch wieder statt eines roten Häkchens ein grünes und die beschriebene Änderung in der Datei My3DStarChar.pro ist jetzt auch auf meinem Rechner.

Ich werde als nächstes noch ein paar Sternbild-Linien einfügen. Beim Konvertieren der BSC-Nummern von Cartes Du Ciel konnte mein Konverter im Hipparcos-Katalog einige Sterne nicht zuordnen. Ich hoffe, dass ich die fehlenden Hipparcos-Nummern noch manuell mit Cartes Du Ciel finde. Es sind nur etwa neun fehlende Sterne.
Gruß, Bernhard

cuxmini
23.11.2011, 18:38
Hallo Peter,
ich dachte auch eher daran, dass man von der Seite evtl. auch entsprechende Daten bekommen kann.
Ich wollte euch nicht den Spaß am Entwickeln nehmen :-)
Gruß
cuxmini

Bernhard
23.11.2011, 19:55
ich dachte auch eher daran, dass man von der Seite evtl. auch entsprechende Daten bekommen kann.
Hi cuxmini,

solche Vorschläge sind zwar sicher nett gemeint (Danke), aber erst dann hilfreich, wenn die exakte Quelle angegeben wird und idealerweise auch eigene Erfahrungen mit der Quelle gemacht wurden ;) .

@Peter:

habe gleich wieder ein Update eingespielt (s. Commit-Browser). Die Sternbilder sind aber noch nicht fertig. Da kommt noch ein bisschen was nach.
Gruß

pmvstrm
23.11.2011, 20:15
Hi Bernhard

Ganz deiner Meinung was die Sache mit Boinc betrifft.
Ja mit den Checkins funktioniert es jetzt glaube ich ganz gut. Ich habe aber in der Doku zu Mercurial gelesen das nur im Tip Bereich
entwickelt werden und im Branch Bereich jeweils eine stable Version bereit steht, damit Entwicklungs und Releases sich nicht
in die Quere kommen. Wir haben nun beides immer gleichmässig mitgezogen aber ich glaube ich kann die Branches wieder
entfernen und wenn es ein Release von Tip gibt, laden wir eine Stable Version nach Branch hoch.

Grüße Peter

Bernhard
23.11.2011, 20:41
laden wir eine Stable Version nach Branch hoch.
Hallo Peter,

nur zum Verständnis: Wie macht man das eigentlich, bzw. wie machst du das?
Gruß

Bernhard
23.11.2011, 21:34
Hallo Peter,

ich habe gerade gemerkt, dass in dem Hipparcos-Katalog nicht alle Nummern eine gültige Parallaxe haben. Man muss beim Laden also Informationen ergänzen, bzw. beim Anzeigen der Sterne unterdrücken. Deswegen fehlt auch noch eine Linie bei den Sternbildern im Großen Wagen :) .

Ich werde als nächstes also nachsehen, welche Entfernungsangaben fehlen und auch nachsehen, ob diese Angaben zusätzlich aus dem hyg.csv ergänzt werden können. Die Funktion OpenCatalogues muss also verbessert werden und das ist dann wohl die nächste größere Aufgabe.

Grüße, Bernhard

pmvstrm
23.11.2011, 22:02
Hi Bernhard,

Also ich nutze Mercurial bei diesem Projekt auch das erste mal. Aber nach dem was ich jetzt weiß, ist jedes Commit ein Changeset, was wiederum eine
atomisierte Einheit mehrerer Ereignisse mit eindeutiger ID ist, die dann in der History landet. Mit commit fügt man eigene Änderungen an seinem
lokalen Projektordner durch und wird somit in der lokalen Historie gepflegt. Mit push und update werden Änderungen final durchgeführt und mit
entfernten Repositories abgeglichen (alle Dateien die lokal geändert wurden und zur Übermittlung zwecks Verteilung anstehen lassen sich mit
hg status anschauen). Mit hg log kann man dann die wirkliche Historie anschauen (was wo wann passiert ist). Wenn zwei Änderungen,
die nicht gemergt wurden nicht aufgelöst wurden, entsteht als Konsequenz ein eigener Zweig in der History (daher wohl auch die
dein eigener Zweig auf Sourceforge). Nach derzeitiger Info schaut es so aus, das aus einem TIP irgendwann automatisch ein Branch
wird, aber die Bedingungen die dazu führen sind mir noch ein Rätsel (mea culpa):)

ps:
Was aber wohl nicht geht, ist, dass man die History so einfach löschen kann, davor wird sogar gewarnt. Wenn wir also wirklich
irgendwann mal ausmisten wollen, müssen wir wohl sauber auschecken, auf SF das Repo im Adminbereich löschen und das ganze
wieder einchecken und somit eine neue History aufbauen.

Vorschlag:
Am besten wir machen erstmal weiter wie bisher und wenn wir sicher sind das wir die Version 1.0 Release haben,resetten wir
das Sourceforge Repo (ist denke ich am wenigsten Aufwand). Vermutlich ist das sowieso die beste Idee, dann können wir
uns vielleicht auch einen neuen Namen und Bereiche für die einzelnen Setup Projekte einrichten, denn Mercurial mag keine
Unterprojekte (da müssen wir bevor wir das dann machen alles genau planen) :)

Gruß, Peter

pmvstrm
24.11.2011, 00:01
Hallo Bernhard,

Ich habe jetzt gerade noch ein Icon für das Programm und einen Unterordner "./resources" angelegt. Darin liegen die Dateien
my3dsc.ico und my3dsc.rc .Du kannst das Projekt auschecken und bindet das Icon (momentan nur Windows) korrekt ein. Ich habe
es in einen frischen Ordner ausgecheckt, der Unterordner und die zwei Dateien werden richtig ausgecheckt. Übrigens habe
ich herausgefunden wie das mit Tip und Branch geht.

Beim Adden und Single File commit kannst Du das Ziel angeben (Tip oder Branch). Da kann man fortan einfach immer stur
TIP angeben und gut. Wenn wir dann einen Branch wollen, muss man dann dort halt Branch einstellen (entweder Default
als Standardwert oder z.B Release 1.0)

Grüße, Peter

Bernhard
24.11.2011, 00:05
Vorschlag:
Am besten wir machen erstmal weiter wie bisher
Hi Peter,

gerne. Gib mir aber bitte bescheid, ab wann Du mit Deinen aktuellen Änderungen fertig bist. Ich habe gerade gesehen, dass wir momentan beide an dem Projekt arbeiten, bzw. arbeiten wollen. Ich habe meine Sachen also erst mal lokal abgespeichert und habe mir Deine neuen Änderungen geholt.

Ich fände es vorteilhaft, wenn wir vereinbaren würden, wer wann einchecken darf (z.B. die Tagesregelung von weiter oben), damit wir uns nicht gegenseitig behindern, bzw. Code gegenseitig löschen. Ich hatte nämlich schon wieder die Aufforderung ein push -f zu machen und dann wären Deine Änderungen von heute abend wieder weg gewesen :D .
Gruß, Bernhard

pmvstrm
24.11.2011, 00:27
Hi,
Also laut Doku macht Mercurial keinen Ärger wenn man in der gleichen Datei arbeitet.
Allenfalls wenn beide an der gleichen Codestelle hantieren, kann es zu einer Mergeaufforderung kommen. Aber das mergen ist nun mal das tägliche
Geschäft bei Versionskontrollsystemen, das müssen wir beide aus dem FF heraus beherrschen. Lieber kurz und schmerzloss anstatt Stundenpläne
aufstellen denn ansonsten kann man nicht produktiv an einem Projekt arbeiten. Wenn Du committest, addest oder updatest klicke immer automerge
an, dann wird Dir das gröbste schon abgenommen. Die anderen Projekte kriegen das auch hin, das schaffen wir auch:)

Gruß, Peter

Bernhard
24.11.2011, 05:33
Hallo Peter,

ich habe jetzt einfach mal mit Windiff meine Änderungen nachträglich eingebaut (manuelles merging) und dann mit push -f eingecheckt. Auch wenn der Commit-Browser jetzt mehr anzeigt, als ich dachte, sieht der aktuelle Code so aus, als wären alle aktuellen Änderungen von uns vorhanden.

Zu dem neuen Icon: Da wäre mir ein Icon mit mehr Bezug zur Astronomie lieber. Ein gelber Kreis ist zwar besser als gar nichts, sagt mir aber über das Programm zu wenig aus. Besser fände ich z.B. einfach den Schriftzug "3D" oder ein paar Sterne.
Gruß

pmvstrm
24.11.2011, 11:54
Guten Morgen,

Ja perfekt!
Das mit Windiff werde ich in Zukunft genauso handhaben.Für Leute die nicht zum Projekt gehören und einen Patch vorschlagen existiert
auch eine Funktion namens Export. Diese Einsendungen werden dann in der Patchwarteschlange angezeigt und werden dann von einem
der committer nach in Augenscheinname entweder angewendet oder verworfen.

ps:
Um ein neues Icon kümmere ich mich, das sollte kein grösseres Problem sein.
Ich werde hier ein paar Designvorschläge im Forum verlinken und dann nehmen wir das was uns beiden am meisten zusagt:)

So, nach all dem Stress jetzt erstmal einen guten Schluck Kaffee:)

Gruß, Peter

Runzelrübe
24.11.2011, 12:01
Theoretisch könnte man ja ein Hardwaredevice für Teleskope bauen und dann aufgrund der GPS des Handybesitzers
das Teleskop auf den Stern im Display ausrichten (nur so eine Idee)

Extra Hardware braucht man dazu nicht erfinden, die gibt es nämlich seit Jahren zur automatischen Nachführung.

http://www.fernglas-store.ch/contents/de-ch/d93_Celestron_SkyProdigy_Serie_mit_vollautomatisch er_Ausrichtung.html

Man braucht eher eine Schnittstelle zu dem jeweiligen Steuerungsprogramm. Es gibt hier mehrere Hersteller, die aber natürlich alle die Gemeinsamkeit haben, damit Geld verdienen zu wollen. ;)

Die 3D-Ausrichtung eines Mobiltelefons anhand der GPS-Richtung seines GPS-Empfängers plus der Ausrichtung durch seinen Trägheitssensor werden mittlerweile durch eine Menge Spiele genutzt. Zur Ausrichtung eines Teleskops anhand einer Sternkarte bräuchte man nur identische Sternkarten und besagte Motorennachführung.

Für solche Hard- und Softwarekombinationen, die nicht Open Source sind, gelten allerdings strikte Exporteinschränkungen.
Eine Präzisionsausrichtungssoftware, die für jeden quelloffen und ohne reverse engineering zugänglich ist, kann nämlich schnell in eine Verfolgungssoftware umgebaut werden, indem der Updatezyklus an die Hardwareschnittstelle auf einen Sekundentakt gesetzt wird. Das kann ziemlich schnell ziemlich offensiv missbraucht werden, beispielsweise als Raketenausrichtung per Handy - es muss schließlich kein Teleskop an die Halterung montiert sein.

Trägheitsverfolgungssysteme wurden erstmals in den 50ern des letzten Jahrhunderts vom Militär entwickelt und da tut sich immernoch einiges.

pmvstrm
24.11.2011, 14:09
Hi,

Ich habe hier mal einige freie Icons gefunden, die ich für unser Projekt in allen 3 Phasen
getestet habe, da sich das Endergebnis doch teilweise sehr vom Original unterscheidet

Und hier die Kandidaten:
http://img832.imageshack.us/img832/2023/iconcontest.png

Mein Favorit ist Icon 6:)

Gruß, Peter

Bernhard
24.11.2011, 14:31
Mein Favorit ist Icon 6:)
Hi Peter,

ich finde die Nummer 5 richtig stark, weil da auch das Icon einen gewissen 3D-Effekt zeigt. Icon 6 finde ich dagegen eher ungeeignet (Sorry), weil das Programm doch Beobachtungstandpunkte weit weg von der Erde simulieren soll. Dieses Feature haben wir zwar noch kaum besprochen, ist aber dennoch vorhanden. Und genau da liegt doch die Stärke des Programms. Alles andere kann Cartes Du Ciel viel besser.

Ich gebe aber zu, dass Icon 6 von der Optik her mehr "her macht", als Icon 5. Wie wäre es also, wenn wir Kibo dazu überreden würden Icon 6 in ein Qt-Programm zur Atmosphärenerosion einzubauen? Das würde meiner Meinung nach besser passen. Vielleicht kannst Du mir aber Icon 6 auch noch näher bringen. Die Entscheidung ist ja noch nicht gefallen.

pmvstrm
24.11.2011, 14:34
@Runzelrübe

Das war auch nur eine Idee, was man auf der Android Platform machen kann. Wenn überhaupt würde ich das vermutlich als Zusatzextension/PlugIn
für das Hauptprogramm machen. An die GPS Koordinaten kommt man sehr einfach, das ist unter Android nur ein API Call und dann hat man
Längen und Breitengrad. Man kann auch ebenso einfach die Gyroskopdaten (x,y,z Lageedaten) des Handiesabfragen z.B um eine
Kalibrierung mit dem Teleskop durchzuführen. Auf jeden Fall müsste für so ein Projekt ein USB Treiber für Antroid (Accessory) implementiert
werden um eine wie auch immer geartete externe Hardware / ein Thirdparty Servo Interface anzudocken.

Gruß, Peter

pmvstrm
24.11.2011, 14:39
Hi Bernhard,

Mit Icon 5 kann ich mich auch anfreunden. Ich müsste nur mal versuchen ob ich die Randausfransungen etwas glätten kann, denn
das hat man ja quasi ständig vor Augen wenn das Programm läuft.

Ich bin mit Icon5 einverstanden:)


Gruß, Peter

Bernhard
24.11.2011, 15:13
Ich bin mit Icon5 einverstanden:)
Supi...

ich werde als Nächstes dann versuchen die Lücken im Hipparcos mit Informationen aus dem hyg.csv zu füllen.
Gruß

Kibo
24.11.2011, 17:59
Hallo,

Ja daran wollte ich mich demnächst auch mal setzen. Ich habe gerade recht viel zu tun, aber das Icon ist vorgemerkt :D

Bernhard
24.11.2011, 18:08
ich werde als Nächstes dann versuchen die Lücken im Hipparcos mit Informationen aus dem hyg.csv zu füllen.
... was sich auch schon wieder erledigt hat: Kein einziger Treffer.

Bei SIMBAD (http://simbad.u-strasbg.fr/simbad/sim-fbasic) bin ich bei HIP979 fündig geworden. Da wird eine Parallaxe angegeben. Die einzige fehlende Sternbildlinie zu HIP55203 in UMA läßt sich mit SIMBAD allerdings auch nicht schließen.

Für die 312 Sterne aus dem Hipparcos-Katalog ohne Parallaxe habe ich das zusätzlich Attribut m_ok in der Klasse CSterne eingeführt. Dieses Flag steht nach dem Laden des Katalogs auf false, so dass die Zeichenroutinen erst gar nicht in die Versuchung geraten, diese Sterne zu zeichnen.

Man kann jetzt SIMBAD noch nach weiteren Sternen ohne Parallaxen-Angabe durchsuchen und beim Laden des Katalogs diese Spezialfälle hart codiert nachtragen. Die Positionsangaben und die visuelle Helligkeit sind ja vorhanden. Das ist aber eine reine Fleißaufgabe.
Gruß

Bernhard
24.11.2011, 19:39
Hallo Peter,

beim Aufräumen überflüssiger Parameter hast Du zwei Events ausgebaut. Ich habe diese Events wieder eingebaut und an die Variablen ein accept() angehängt. Sonst speichern die Untermenüs ihre Einstellungen nicht mehr ab :D . Nur zur Info.

Ohne die Karteileichen aus dem Hipparcos-Katalog sieht die Milchstrasse aus 30.000 + 26.000 Lichtjahren Entfernung in der Scheibenebene jetzt wie eine schöne Edge-On-Galaxie aus. Das Halo aus Sternen ist jetzt nicht mehr sichtbar und war damit ein Darstellungsfehler. Es gab da auf den ersten Seiten dieses Themas ein paar Beiträge zu diesem Halo.

Hier die Einstellungen und die zugehörige Sternkarte:
http://img228.imageshack.us/img228/9624/milchstrasse.th.jpg (http://imageshack.us/photo/my-images/228/milchstrasse.jpg/)

Gruß

pmvstrm
24.11.2011, 20:37
Hi Bernhard,

Nicht schlecht Herr Specht!:)

Achso das mit den Variablen. Der Compiler war der Meinung das sie von nirgendwo referenziert wurden, also dachte ich mir: Weg damit;)
Aber ist kein Problem.Wenn es möglich ist versuche ich Warnungen, Notes und ungenutzte Variablen zu entfernen. Wo es möglich ist,
wäre ich auch dafür das wir QFile anstatt z.B fopen verwenden, wegen der Warnmeldungen, dann könnten wir aus dem Makefile auch die
Surpess MSVC Defines wieder entfernen (aber nur wenn Du damit keinen Aufwand hast, keinen Stress!):)

Grüße, Peter

Bernhard
25.11.2011, 09:53
Wo es möglich ist,
wäre ich auch dafür das wir QFile anstatt z.B fopen verwenden, wegen der Warnmeldungen, dann könnten wir aus dem Makefile auch die
Surpess MSVC Defines wieder entfernen (aber nur wenn Du damit keinen Aufwand hast, keinen Stress!):)
Gute Idee. Genaugenommen bin ich auch ein gewisser Unicode-Fan und da steigen die uralt-C-Funktionen definitiv aus. Ich werde das bei Gelegenheit mal umstellen.

BTW: Könntest Du das Icon, wie besprochen, noch anpassen, bzw. einspielen? Das würde das Programm nochmal deutlich "aufpeppen".

Als nächste spannende Aufgabe für unser Spielzeug stünde dann OpenGL auf der "Tages- und Nachtordnung". Der CUDA-Code-Schnipsel von weiter oben verspricht ebenfalls intertessante Perspektiven. Das Thema CUDA hat SRMeister im Nachbarthema (Berechnung der Planetenpositionen) auch schon mal angesprochen.
Viele Grüße

Bernhard
25.11.2011, 18:26
Hallo Peter,

ich habe das Icon schon mal ausgetauscht. Bei der Datei Messier.txt sind jetzt auch die Galaxien eingetragen. Die Galaxien werden in der neuesten Verison rot dargestellt, die galaktischen Messiers weiterhin in grün.
Grüße

pmvstrm
25.11.2011, 18:40
Hallo Bernharnd,

Als ich vorhin ausgecheckt habe, was das neue Icon schon drin.
Sieht momentan nur als Desktop Icon hübsch aus aber die kleineren Versionen wirken total zersplittert und zerfrans,
da muss ich noch mal schauen wie man das aufhübscht.

OpenGL
Ich denke das sollte momentan auch unsere Priorität sein. Statt CUDA würde ich aber lieber (wie oben besprochen) das
von QT verfügbare OpenCL verwenden wollen. Es ist nicht Herstellerspezifisch, funktioniert auf allen Platformen auch
ohne NNVidia Karten und hat nicht die Probleme mit der Bitgenauigkeit wie CUDA zu Anfang. Das ist auch der Grund
warum es in QT eingebaut wurde. Allerdings ist die OpenCL 1.2 Lib (ebenso wie CUDA) derzeit nicht fester Teil von
QT. Das OpenCL Modul kann man aber bei Nokia getrennt herunterladen, als DLL kompilieren und steht dann zur verfügung.
Ich bin eher für das offene, von QT unterstützte, OpenCL (um CPU Operationen auf die GPU auszulagern).

Aber bevor wir uns für CUDA oder OpenCL entscheiden, fangen wir erstmal mit OpenGL an und schauen wie weit
wir damit kommen. OpenGL bietet ja ebenfalls Hardwarebeschleunigug und extensive Nutzung der GPU, allerdings
eben nur (dafür aber spezialisiert) für 3D Transformationen, Rasterisierung und große Polygondatenmengen.
Wenn ich das richtig sehe haben zwei getrennte Rechenbereiche - CPU und GPU Operationen Die GPU wird ja nun
schon durch OpenGL und das Zeichen und darstellen der Sterne beansprucht, ich weiß nicht wie sinnvoll das ist
da Leistung mittels OpenCL zu stehen:)

Für CPU spezifische Operationen...
sollten wir uns besser auf Multicore mittels OpenMP V2 verständigen, denn bisher
läuft unser Programm ja nur auf einem CPU Kern, da verschenken wir gewissermaßen erhebliche Leistugsreserven.
Ich denke das wird in der Zukunft immer wichtiger, da ja die Taktfrequenz der CPU kaum noch steigt, dafür aber
immer mehr CPU Kerne in Macs und PC sowie Mobilgeärten verbaut werden (sogar das iPad2 hat schon mehrere
Kerne). OpenMP nimmt uns da schon viel Ärger ab und wird ja ebenfalls auch von Microsoft und vor allem von
Intel extensiv unterstützt.

Gruß, Peter

pmvstrm
25.11.2011, 18:42
Hi Bernhard,

Ich habe ein DLL Paket für QTCreator erzeugte Kompilate (Debug und Release) auf den Downloadbereich hochgeladen.
Link:
https://sourceforge.net/projects/my3dstarchart/files/redist/

Einige der DLL's ließen sich nur schwer in passender Form auftreiben, sie sind aber erforderlich damit Programme die mit
dem QtCreator erstellt wurden und OpenMP nutzen auch ausserhalb der Entwicklungsumgebung funktionieren (libPThread).

Ich habe das jetzt in einem Dummy Projekt getestet. Der Standard MinGW (GCC) Compiler von QtCreator läuft jetzt
einwandfrei damit, aber der MS-Visual C/C++ 2008 und 2010 Compiler (den wir für die Windows 64-Bit Builds brauchen,
benötigt andere (weniger) Parameter. Derzeit klappt das nur wenn man das manuell umstellt.

Gruß Peter

pmvstrm
26.11.2011, 00:54
Hi Bernhard,

Ich habe das Programm nun Multicore tauglich gemacht. Wie oben beschrieben brauchst Du dafür ggf. die DLL
pthreadGC2.dll und libgomp-1.dll damit alles reibungslos läuft (kannst Du aus dem Archiv
my3dsc_mingw32_redist.zip im Downloadbreich unser Sourceforge Seite unter dem Unterordner redist finden.

Sobald Du die jetzt die #include <omp.h> irgendwo einbaust und z.B mit


#pragma omp parallel
std::cout << "Testausgabe" << std::endl;


etwas parallelisierst, werden diese DLL definitiv benötigt. Derzeit ist das nicht der Fall,
daher läuft alles wie gehabt.Wenn Du das aber nutzen willst, lade Dir my3dsc_mingw32_redist.zip herunter
und packe die 2 DLL in deinen Programm Debug/Release Ordner.

Update
http://img69.imageshack.us/img69/2080/openmpx64.png

Ich habe den OpenMP einbau nun auch für Visual Studio C/C++ 2010 auf 64-Bit Basis zum laufen bekommen
(ist ja immer so ein Drahtseilackt wenn das etwas QTFremdes ist). Aber es funktioniert und das ist ja die
Hauptsache.Würde auch komisch aussehen wenn wir jetzt Multicore Unterstützung im Programm haben aber
dafür die 64-Bit Unterstützung kappen müssten:)

Grüße, Peter

pmvstrm
26.11.2011, 01:28
Kleiner Nachtrag

http://img833.imageshack.us/img833/4549/intel12compiler.png

Ich habe mal eben getestet ob ich unser Projekt auch auf den Intel 12 Optimizing Parallel Compiler umstellen kann und es ging tatsächlich.
Sprich, für können jetzt die Bottlenecks und Performance Engpässe gezielt aufspüren und dann daran arbeiten. Der Intel Compiler kann
übrigens für Linux, Windows, Mac gleichermaßen optimieren. Und selbst wenn wir nicht den Intel als Endcompiler nehmen, die Analysedaten
sind trotzdem mehr als hilfreich.

Grüße,Peter

Bernhard
26.11.2011, 08:33
Guten Morgen Peter,

die Plattformunabhängigkeit überlasse ich vorerst gerne Dir. Mein Windows 7 (64-Bit) werde ich vorerst nicht mehr verwenden, weil mich dieses OS einfach zu viel geärgert hat. Bleiben als Test- und Entwicklungs-OS erst mal WinXP und OpenSuSE 12.1 (64-Bit).

Ich möchte zwischendurch auch noch eine automatische Vorgabe der Blickrichtung einbauen. Die Sternkarte soll als Default dann immer den aktuellen Blick nach Süden in Abhängigkeit vom gerade eingestellten Beobachtungsstandort, Datum und Uhrzeit anzeigen. Das ist noch etwas Arbeit, weil diese Einstellungen als Konfiguration auch in einer zusätzlichen Datei abgespeichert werden sollen. Dann kann der Anwender seinen Heimatort einmal eintragen und bekommt bei jedem Programmstart die gleichen Einstellungen aus dieser Datei. Das Programm ist dann in den Grundeinstellungen und mit der Datei hip_main.dat als echte Sternkarte für einfache Beobachtungen zu nutzen. Den Dialog "Beobacher" habe ich mit Hilfe des uic (tolles Teil) bereits entsprechend angepasst.

Sehr nett finde ich auch den verbesserten Zoom. Der blendet jetzt automatisch Sterne ein und aus. Bei der Übersichtskarte machen Sterne der Größe 7 wenig Sinn, bei hohem Zoom aber schon. Man bekommt dann automatisch Sternkarten, die mit dem Hipparcos-Katalog schon recht detailliert sind. Diese Features stammen von der Idee her zwar alle von Cartes Du Ciel, sind aber so praktisch und bringen so viel Komfort, dass sie auch in unserem Programm zu finden sein sollten. Zeitlich bin ich dieses Wochenende wieder ziemlich eingespannt. Die Fertigstellung des Standort-Features wird also noch etwas dauern.
Viele Grüße

pmvstrm
27.11.2011, 03:16
Hi,
Ich habe noch Änderungen an den .pro Makesettings vorgenommen.
Die Kompilate für Win32 unterstützen für die Release Targets: SSE2 und Core2Duo / Athlon (Visual C/C++ Compiler)
sowie für den MinGW GCC 4.4 Compiler SSE4, Core2Duo / Athlon sowie inline Optimierungen. Die Debug Targets haben erweiterte
Symbole bekommen.

Praktisch bedeutet dies, das die Release Kompilate wesentlich schneller Unterwegs sind und hoch optimiert sind.
Wenn Du also auf Release Build umstellst, läuft das Programm nun etwas flinker.

ps: Core2Duo und Athlon ist denke ich eine gute mindesst CPU Anforderung (schon 5 Jahre alt). Es wird wohl kaum Leute geben
die noch so alte Gurken habe und der Programm Performance tuts gut.

Grüße, Peter

Bernhard
27.11.2011, 08:21
Hallo Peter,

Zur Software: der Header stdio.h ist jetzt komplett raus. Könntest Du die .pro-Datei wie besprochen anpassen?

Zum Programm: Das Programm liest jetzt beim Programmstart die aktuelle Uhrzeit und das Datum aus und berechnet daraus in Abhängigkeit vom Beobachtungsstandort den Blick nach Süden, 45° über dem Horizont und mit einem Gesichtsfeld von 91° :). Über den Menüpunkt Beobachter kann man den Beobachtungsstandort, Datum und Uhrzeit verändern.

Was noch fehlt: Das Programm sollte den Beobachtungsstandort in einer Konfigurationsdatei speichern und beim Programmstart immer diese Konfiguration verwenden. Der Default beim ersten Start des Programmes mit 50° nördlicher Breite und 10° östlicher Länge kann beibehalten werden. Das Kosmos Himmelsjahr verwendet diese Koordinaten ebenfalls als Default-Ort für Deutschland.
Gruß

pmvstrm
27.11.2011, 23:40
Hi Bernhard,

Ich habe nun eine Möglichkeit eingebaut einen Teil der Benutzereinstellungen (fürs erste nur die m_DeltaX und m_DeltaY) Werte zu sichern.
Es gibt jetzt eine zentrale Konfigurationsdatei im Executable Hauptverzeichnnis config.xml es ist quasi eine Ini Ersatz, wie man sie
früher bei Windows immer hatte.

Beim Start wird geprüft ob die Datei da ist, wenn nicht wird sie mit allen Sektionen leer angelegt.
Sobald man irgend etwas sichern will, ruft man nur die Method "updateConfig(section, param)" auf und
dann wird der Wert in der XML Datei gesichert.

Wenn Du noch andere Sektionen brauchst, so kannst Du sie in der Funktion bool MainWindow::createConfig()
einfach analog den anderen Elementen hinzufügen. Im Dialog Ansicht hinter dem Button OK wird bool MainWindow::updateConfig()
schon aufgerufen und die m_Delta Variablen gesichert.

Config.xml


<?xml version='1.0' encoding='UTF-8'?>
<config>
<Application>My3D Star Chart</Application>
<Version>1.0.0.1</Version>
<Build>x.x.x.x</Build>
<Rendersystem>Canvas2d</Rendersystem>
<Datasource>file</Datasource>
<Dataoptions>localhost:port:ssl</Dataoptions>
<Update>false</Update>
<m_DeltaX>201</m_DeltaX>
<m_DeltaY>200</m_DeltaY>
</config>


ps:
Momentan gibts noch keine Readmethode, dazu hatte ich noch keine Zeit, aber das mache ich die Tage fertig.

Gruß, Peter

Bernhard
28.11.2011, 01:43
Beim Start wird geprüft ob die Datei da ist, wenn nicht wird sie mit allen Sektionen leer angelegt.
Sobald man irgend etwas sichern will, ruft man nur die Method "updateConfig(section, param)" auf und
dann wird der Wert in der XML Datei gesichert.
Hallo Peter,

genau so hatte ich es mir auch überlegt. Ich hätte es mit einer txt-Datei programmiert, aber mit einer xml-Datei ist das noch eleganter umgesetzt :) . Ich habe eine Warning wegen des parent-Pointers behoben und dann gleich die Einstellungen aus dem Dialog Beobachter hinzugefügt.

Zu den Kommentaren: Du hattest viele C-Kommentare mit /* ... */ verwendet. In einer Zeile finde ich so etwas eher ungünstig, weil man dann größere Bereiche nur noch mit Compiler-Direktiven auskommentieren kann (#if 0 ... #endif). Ich habe deswegen alle Kommentare über eine Zeile durch C++-Kommentare (//) ersetzt.
Viele Grüße

pmvstrm
28.11.2011, 08:12
Guten Morgen Bernhard

Ja das mit den // Kommentaren können wir so machen, kein Problem:)

Ich habe jetzt noch die Methode readConfig(QString section) hinzugefügt.
Jetzt kann man alle Werte, die vorher in der config.xml gesichert worden sind auch wieder ausgelesen
werden.

Ich habe den Dialog Ansicht so präpariert, der er on show die Daten ausliest und so fern sie nicht
"0" sind (ist halt Text) mit den ausgelesenen Daten versorgt. Wenn nicht, bleiben die voreingestellten
Daten erhalten (so wie vorher auch).

Gruß, Peter

Bernhard
28.11.2011, 08:27
Guten Morgen Peter,


Ich habe jetzt noch die Methode readConfig(QString section) hinzugefügt.
Jetzt kann man alle Werte, die vorher in der config.xml gesichert worden sind auch wieder ausgelesen
werden.
Prima.

Ich habe den Dialog Ansicht so präpariert, der er on show die Daten ausliest und so fern sie nicht
"0" sind (ist halt Text) mit den ausgelesenen Daten versorgt.
Ich denke das sollte eher in den Konstruktor von MainWindow. Gerade die Positionierung und den Heimatort des Beobachters stellt ein typischer Anwender normalerweise ein einziges Mal ein und verwendet dann immer wieder die gleichen Einstellungen. Diesen Komfort sollten wir schon bieten, sonst verwendet das Programm auf lange Sicht kein Mensch.

Ich bin aktuell auch etwas am Herumüberlegen, ob man den Inhalt der Datei hip_main.dat und Messier.txt nicht einfach in den Quelltext übernehmen sollte. Man könnte dadurch den Installer entsprechend schlanker gestalten und würde sich das Laden der Daten aus den Dateien sparen.
Viele Grüße

pmvstrm
28.11.2011, 10:52
Also was die Textdateien angeht, die könnte man ja in eine Datenbank packen (am besten SQLLite3)
Das wird von QT gut unterstützt und hat die Möglichkeit CSV Dateien direkt zu importieren.

Für die EXE und DLL Dateien gibt es den UPX Packer, damit konnte ich folgende Packresultate erzielen:



File size Ratio Format Name
-------------------- ------ ----------- -----------
186880 -> 65536 35.07% win32/pe My3DStarChart.exe

File size Ratio Format Name
-------------------- ------ ----------- -----------
2292736 -> 934400 40.75% win32/pe QtCore4.dll
4145152 -> 1087488 26.24% win32/pe QtCored4.dll
8223744 -> 3512320 42.71% win32/pe QtGui4.dll
14583808 -> 4142592 28.41% win32/pe QtGuid4.dll
191488 -> 83968 43.85% win32/pe QtSql4.dll
335872 -> 95232 28.35% win32/pe QtSqld4.dll
339968 -> 134656 39.61% win32/pe QtXml4.dll
602112 -> 159744 26.53% win32/pe QtXmld4.dll
-------------------- ------ ----------- -----------


Das macht schon was her. Danach wird das ganze ja noch mal im Installer seperat verpackt, was die größe noch mal etwas reduziert.
Was ich noch nicht ausprobiert habe, aber auch klappen sollte, wäre, wenn man QT mit Release und compact Code Flags kompiliert.
Dann fallen die ganzen fürs Debugging notwendigen Symbols weg (braucht man für die Setupversion sowieso nicht).

Gruß, Peter

Bernhard
28.11.2011, 11:26
Also was die Textdateien angeht, die könnte man ja in eine Datenbank packen (am besten SQLLite3)
Das wird von QT gut unterstützt und hat die Möglichkeit CSV Dateien direkt zu importieren.
Hallo Peter,

das würde aber doch voraussetzen, dass der Anwender entweder lokal eine Datenbank installiert hat oder per Internet auf eine zentrale Datenbank zugreift. Ersteres halte ich für diese Anwendung für unpraktikabel. Letzteres könnte mal eventuell langfristig realisieren. Man könnte dann auch auf noch größere Kataloge, wie Tycho, GSC oder sogar USNO (geht bis 20 mag) zugreifen und zwar eleganter, als bei CdC (Cartes Du Ciel).

Ich werde dann als Nächstes den Messier- und Hipparcos-Katalog in den Code einbauen. Wenn der Installer damit gut klar kommt ist das, denke ich, einen Versuch wert. Beim Hip-Katalog kann man zusätzlich ziemlich viele Informationen weglassen, was ebenfalls Platz spart.
Gruß

Kibo
28.11.2011, 13:40
Ich möchte anmerken, das bei UPX komprimierten Exen gern auch mal das ein oder andere Antivirenprogramm anschlägt. (Eigene Erfahrung)

sebix
28.11.2011, 16:18
Hallo Peter,
das würde aber doch voraussetzen, dass der Anwender entweder lokal eine Datenbank installiert hat oder per Internet auf eine zentrale Datenbank zugreift. Ersteres halte ich für diese Anwendung für unpraktikabel. Letzteres könnte mal eventuell langfristig realisieren.


Eine SQLite DB wird als File gespeichert und mit SQL anggesprochen. Der SQLite-Teiber greift direkt auf die Datei zu, es wird hierbei eben kein DB-Server benötigt. Deshalb auch der Name SQLite.

Für einen reinen Punkte-Katalog halte ich SQL für overpowered, es reicht auch CSV oder XML. Nur wenn nicht immer auf die DB zugegriffen werden muss, und eventl Suchen vorkommen, kann SQL seine stärken ausspielen.
Bei My3DStarChart wird allerdings sowieso der gesamte Katalog bei Programmstart in den Speicher geladen

pmvstrm
28.11.2011, 18:14
@Sebix

Es wäre auch kein Thema eine DB wie Firebird oder Postgres in den Installer zu packen. Bei Firebird (Interbase) kann man genau wie bei SQLLite
auch die Datenbankdatei in den Installer packen, pei Postgres müsste man postinstall ein komprimiertes Dumpfile einpielen, aber natürlich ist das nicht
besonders sinnvoll. Ich denke einen groben Initial Katalog muss man schon vorhalten (das machen wir ja momentan sowieso schon). a
Alles in allen ist der aktuelle Windows 32-Bit Installer my3dsc_x32.msi 10,3 MBytes groß und darin ist die SQLlite3 und XML
Unterstützung schon enthalten.

Grundsätzliche sehe ich das Problem aber genau wie Bernhard. Eine umfangreiche Onlinedatenbank bietet großes Potential und ist rein
konzeptionell schon eine Überlegung wert.Ich denke für so etwas eignet sich am besten die Cloudplatform von Google. Zum einen weil
es erstmal nichts kostet und zweites weil man dort eine umfangreiche, nicht relationale Datenbank unendlich viele Daten Daten speichern
kann.Die Verbindung kann man SSL und TLS sowie eigens generieten X509 Zertifikaten absichern, die man mit OpenSSL selbst ausstellen
und sich als CA eintragen kann.

Gruß, Peter

Gruß, Peter

Bernhard
28.11.2011, 18:17
Hi Peter,

ich habe jetzt erst mal die Verwaltung der Konfigurationsdatei wie folgt angepasst:

1.) Beim Start des Programmes soll bei Nichtvorhandensein einer Konfiguration keine leere Konfiguration angelegt werden, sondern eine mit Default-Werten. Diese Default-Werte sind im Konstruktor von MainWindow festgelegt und realisieren (wie bisher) eine vernünftige Positionierung der Sternkarte. Der Heimatstandort des Anwenders wird etwas auf die Mitte von Deutschland gelegt (50° nördliche Breite, 10° östliche Länge).

2.) Werden diese Voreinstellung vom Anwender angepasst (über die Dialoge "Ansicht" und "Beobachter"), werden diese neuen Einstellungen via OK-Button in die config.xml geschrieben und werden damit beim nächsten Programmstart automatisch wieder so im Programm verwendet. Damit kann das Programm auch von Astro-Anfängern als einfache Übersichtskarte und Orientierungshilfe am Himmel verwendet werden, gemäß: Beobachtungsort eintragen und den Rest erledigt dann die Sternkarte.

Im Anschluss daran bitte ich Dich noch die zwei folgenden Punkte zu beachten:

1.) Beide Punkte funktionieren, sind aber eventuell noch nicht ideal programmiert. Weitere Optimierungen ergeben sich dann hoffentlich, wenn man das Programm weiter testet und verwendet. Ich habe in der Funktion ansicht::showEvent Deinen Code abgeändert. Der Flüchtigkeitsfehler ist dabei entfernt worden. Schau Dir die Stelle bitte kurz an. Sollte was fehlen, bitte bescheid geben.

2.) Ich werde jetzt noch versuchen die Datei Messier.txt auszubauen und hoffe, dass man dabei dann sieht, wie auch die Datei hip_main.dat möglichst optimal und platzsparend eingebaut werden kann. Die Funktion OpenCatalogues würde dann komplett entfallen und man könnte auch auf die relativ große Datei hyg.cvs verzichten.

Viele Grüße, Bernhard

pmvstrm
28.11.2011, 18:40
Hallo Bernhard,

Nun ja, wenn Du alles in die Startsequenz packst, wird natürlich die gefühlte Ladezeit immer länger, deswegen haben ich mich für das
laden nach Notwendigkeit entschieden (sprich dann wenn die Daten benötigt werden). So wie ich es gemacht habe, wurde zuerst geprüft
ob überhaupt benutzerspezifische Einstellungen vorliegen und wenn nicht wurden dann einfach wie bisher auch deine Standardwerte aus
den UI Designer verwendet.

Gruß, Peter

Bernhard
28.11.2011, 19:36
deswegen haben ich mich für das laden nach Notwendigkeit entschieden
Hallo Peter,

genau das ist auch meine Absicht. Ein Benutzer, beispielsweise in Australien (ich bin da einfach mal sehr optimistisch), will sicher nicht bei jedem Start seinen Beobachtungsort immer wieder neu eingeben müssen. Und der Reiz des Programmes für den schnellen Anwender könnte meiner Meinung nach eben der sein, dass die Karte immer den gerade aktuellen Sternenhimmel anzeigt. Das erfordert aber, dass der Beobachtungsstandort bei jedem Start aus der xml-Datei gelesen wird und nicht auf den Default-Wert gesetzt wird.

Auch wenn ein Anwender die Sternkarte innerhalb des Programmes anders positionieren will, als andere Anwender sollten die entsprechenden Einstellungen sofort beim Programmstart eingelesen werden. Alles andere fände ich ziemlich umständlich und zu wenig benutzerfreundlich.

Das Öffnen der Dialoge "Beobachter" und "Ansicht" sollte IMHO also auf die kleinstmögliche Anzahl reduziert werden, um den Umgang mit dem Programm so komfortabel wie möglich zu gestalten.
Gruß

EDIT: Die Datei Messier.txt ist jetzt nicht mehr nötig, sprich im Code enthalten. War ziemlich viel Tipparbeit, weswegen ich heute an dem Code nichts mehr ändern werde.

pmvstrm
28.11.2011, 19:50
Ach so, das ist dann ja mehr eine Art Komfortfunktion,
das ist natürlich immer gut:)

Gruß, Peter

pmvstrm
28.11.2011, 19:54
Das stimmt zwar, aber die EXE und DLL Dateien die wir dann mit UPX packen sind ja noch mal im Installer verpackt.
Wir können aber auch leider nicht jeden erdenklichen was wäre wenn Fall abdecken. Das mit UPX war jetzt einfach
auch nur ein Test. ich glaube sogar das unser Installer den gleichen Algorithmus wie UPX verwendet, daher werden
wir es wohl eh nicht brauchen.

Grüße, Peter

Bernhard
29.11.2011, 18:48
Die Datei Messier.txt ist jetzt nicht mehr nötig, sprich im Code enthalten.
Hallo Peter,

könntest Du diese Datei eventuell/bitte aus der Code-Verwaltung entfernen. Ich bin momentan zu müde, um mit dem ssh zu kämpfen.

Zu OpenGL: Wenn es nur darum geht einzelne Views von den katalogisierten Sternen zu erhalten, könnte man auch die bereits vorhandenen Funktionen, wie z.B. ZeichneSterneHip() nutzen. Anstatt die 120k Sterne zu drehen ist es hier wesentlich einfacher den Beobachter zu verschieben und die Sterne dann neu auf's Display zu zeichnen.

Was mich ehrlicherweise noch sehr reizen würde, wäre ein entfernter Face-On-Blick auf die Milchstrasse (also ein Blick senkrecht auf die Scheibe). Es würde mich zu sehr interessieren, ob der Hipparcos-Katalog die Spiralarme unserer Heimatgalaxie sichtbar machen kann.
Viele Grüße

pmvstrm
29.11.2011, 20:01
Hallo Bernhard,
Sobald ich Zeit habe entferne ich die Widerspenstige Datei:)
Ich bin die letzten Tage auch recht müde. Das liegt wohl am November.

Zum Thema OpenGL
Das hat ja momentan keine Eile. Natürlich könnten wir das jetzt schon machen, aber mir wäre es lieb wenn wir damit noch etwas
warten, denn ich bin da gerade noch etwas am ausprobieren.Wenn das spruchreif ist werde ich dazu mehr sagen.Das könnte
den Arbeitsaufwand den OpenGL durch seine Vielseitigkeit mit sich bringt etwas reduzieren.Die QT Leute haben da eine neue
Abstraktionsschicht für QT eingeführt qt/q3d die auf OpenGL basiert, aber dafür sorgt das die 3D Ergebnisse auf jedem für
uns interessanten Gerät gut aussehen.Ich habe ehrlich gesagt wenig Lust dazu für alle möglichen Systemkonfigurationen
und Geräte Optimierungen durchzuführen.Das ist das eine Das andere betrifft den Google Native Client als neue Plattform
für unser Projekt.

Was ist Google Native Client?
Es lässt C/C++ Programmcode in einer Website laufen und nutzt dafür eine angepasste GCC Compiler Version
http://img685.imageshack.us/img685/8233/naclpong.png

OpenGL läuft bisher noch nicht rund, aber der 2DCanvas den wir bisher zum zeichnen der Sterne verwendet haben sollte kein Problem sein.
Ich denke wir sollten auch wenn wir 3D mal anbieten unsere 2D Zeichenfunktionen weiterhin ausbauen und pflegen, denn 3D Hardware-
beschleunigung verbraucht ja auch die Akkus auf mobilen Geräten und da sollten wir dem Benutzer einfach überlassen ob er den 2D oder
3D Modus nutzen möchte.

Was haben wir vom Googles Native Client? Vor allem eine komfortable, installationslose Webvariante mit Zugriff auf eine riesige Datenbank,
bei gleicher Leistungsfähigkeit wie unsere Classicversion würde ich sagen und sicher ist es alle mal, da es zweifach gesandboxt ist und nach
der Prüfung durch den Loader direkten Maschinencode auf den CPU(s) und Grafikkarte(n) ausführen kann (sogar eingebetteten Assembler Code).
Es gibt natürlich bestimmte Sachen die nicht Möglich sind, wie lokaler Filesystemzugriff oder das starten neuer Prozesse (Threads sind aber
kein Problem). Das soltle aber kein Problem sein, da wir QFile auch sagen können das es die hyg.csv nicht via local Filesysten sondern
als Resource oder aber von einer Web Adresse z.B http://www.my3dstarchart.de/daten/hyg.csv laden soll.

Update:
Messiert.txt aus dem Repo entfernt.

Gruß, Peter

Bernhard
29.11.2011, 22:20
Messiert.txt aus dem Repo entfernt.
Danke.

Gruß, Bernhard

Bernhard
30.11.2011, 11:46
Hallo Peter,

ich habe heute früh die ui_*.h-Dateien aus der Codeverwaltung gelöscht (mit Tortoise). Diese Dateien werden beim Kompilieren immer wieder automatisch erzeugt und beim Ändern der *.ui-Dateien nur dann angepasst, wenn sie nicht in einem Verzeichnis mit der .pro-Datei stehen. Diese Dateien machen innerhalb der Codeverwaltung also keinen Sinn.

Known bugs: Für Beobachter auf der Südhalbkugel wird die Uhrzeit noch nicht richtig auf die Ansicht der Sternkarte übertragen.
Gruß

pmvstrm
01.12.2011, 07:21
Guten Morgen Bernhard,

Ich habe gerade alles frisch ausgecheckt und für Visual C/C++ und GCC gestest, keine Fehler. Ich denke das können wir so lassen:)

Gruß, Peter

Bernhard
01.12.2011, 08:11
Known bugs: Für Beobachter auf der Südhalbkugel wird die Uhrzeit noch nicht richtig auf die Ansicht der Sternkarte übertragen.

Das ist jetzt so Pi * Daumen auch erledigt.
Gruß

pmvstrm
01.12.2011, 11:34
Hi Bernhard,

Ich habe jetzt nicht nachgeschaut, aber hast Du schon die Arbeit an der ablösung von fopen durch QFile begonnen?
Das sind ja die Stellen im Code die noch bei dem Visual C/C++ Compiler für Warnings sorgen und momentan ja lediglich unterdrückt
werden.Der andere Punkt: betrifft die Parallelisierungen mit OpenMP. Besonders bei häufig wiederkehrenden Operationen macht eine
Parallelisierung Sinn (Arrays sortieren, in Arrays suchen oder Daten aus Dateien Zeilenweise laden). Also im großen und ganzen
sind besonders Schleifen besonders gut auf mehrere CPU Kerne verteilbar. ABER: momentan unterstützt die OpenMP Schnittstelle
leider nur FOR Schleifen. Iterationen, While und Foreach sind jedoch momentan noch nicht parallelisierbar. Wie wäre es, wenn Du
von Opencatalog eine zweite Kopie erstellst, die keine While sondern eine FOR schleife verwendet verwendet? Dann könnte man mal
Messungen durchführen ob das laden der hyg.csv wirklich schneller geht.

Grüße, Peter

Bernhard
01.12.2011, 12:58
Ich habe jetzt nicht nachgeschaut, aber hast Du schon die Arbeit an der ablösung von fopen durch QFile begonnen?
Ja. Die komplette stdio.h wird mittlerweile nicht mehr benutzt.


Der andere Punkt: betrifft die Parallelisierungen mit OpenMP. Besonders bei häufig wiederkehrenden Operationen macht eine
Parallelisierung Sinn (Arrays sortieren, in Arrays suchen oder Daten aus Dateien Zeilenweise laden). Also im großen und ganzen
sind besonders Schleifen besonders gut auf mehrere CPU Kerne verteilbar. ABER: momentan unterstützt die OpenMP Schnittstelle
leider nur FOR Schleifen. Iterationen, While und Foreach sind jedoch momentan noch nicht parallelisierbar. Wie wäre es, wenn Du
von Opencatalog eine zweite Kopie erstellst, die keine While sondern eine FOR schleife verwendet verwendet? Dann könnte man mal
Messungen durchführen ob das laden der hyg.csv wirklich schneller geht.
Am liebsten würde ich die hyg.csv zuerst ganz aus dem Projekt entfernen. Man könnte dann immer noch einen umfangreicheren Geschwindigkeitstest machen zwischen einer for-Schleife und dem Laden aus konstanten Arrays. Das Dumme an diesem Umbau sind die rund 330 Lücken im Hipparcos (Sterne ohne Entfernungsangabe). Die machen leider zusätzlich Arbeit, was die Aufgabe zeitintensiver macht, insbesondere am Feierabend :rolleyes: .
Viele Grüße

Bernhard
01.12.2011, 19:13
Am liebsten würde ich die hyg.csv zuerst ganz aus dem Projekt entfernen.
Hi Peter,

das Thema "Daten aus großen Arrays laden" hat sich erstmal erledigt. Schreibt man die für uns wichtigen Informationen aus dem Hip-Katalog (Hipparcos) in Dateien raus, kann man die Datenmenge auf etwa 5 MB reduzieren. Schreibt man dann diese Daten in statische Arrays kann der Qt Creator diese Dateien dann aber nicht mehr laden, bzw. anzeigen. Der verabschiedet sich dann einfach stillschweigend :D .

Damit bin ich mit meinen Ideen zur Verwaltung der Daten erst mal fertig. Die Geschwindigkeitstests (Benchmarks) auf Multicore-CPUs muss ich Dir überlassen, weil ich da keine Testhardware habe.
Gruß

pmvstrm
01.12.2011, 20:52
Hi Bernhard,
Hmm ich kann mir gar nicht vorstellen das Du so einen alten Rechner hast (mit nur einen CPU Kern). Das müsste
dann mindestens ein alter AMD Athlon oder ein alter Pentium4 sein?!:) Tip mal unter Startmenü/öffnen den Befehl
dxdiag ein und drück dann ENTER.Was steht im Reiter System / Prozessor?

Gruß Peter

Bernhard
01.12.2011, 21:02
Das müsste dann mindestens ein alter AMD Athlon oder ein alter Pentium4 sein?!:)
Hallo Peter,

der Gerätemanager bestätigt: AMD Athlon. Gekauft vor ca. 3 Jahren. Mir war damals eine 64 Bit-CPU wichtiger als eine gedoppelte CPU.

pmvstrm
01.12.2011, 21:43
Hallo Peter,
der Gerätemanager bestätigt: AMD Athlon. Gekauft vor ca. 3 Jahren. Mir war damals eine 64 Bit-CPU wichtiger als eine gedoppelte CPU.

Der Gerätemanager gibt nur generische Infos heraus. Gib mal dxdiag am DOS prompt oder unter Start/Ausführen ein. Da erhälst Du genaue
Daten zu deiner CPU, Grafikkarte u.s.w

Alle AMD64 K9 Prozessoren sind Multicore CPU's
Der erste AMD64 Multikernprozessor von AMD war der
-AMD Athlon FX (Erstauslieferung 2006)

Das wäre ja fies wenn Dir der Händler einfach nen alten non Multicore Restposten untergejubelt hat:D

Gruß Peter

Bernhard
02.12.2011, 01:42
Gib mal dxdiag am DOS prompt oder unter Start/Ausführen ein.
CPU = AMD Athlon 64 LE-1640 (SingleCore laut google)
Grafik = NVidia GeForce 7025

Sicher kein High-End-Gerät. Eher ein gutes Preis-Leistungs-Verhältnis.

Bernhard
02.12.2011, 05:57
Guten Morgen Peter,

ich habe doch noch einen etwas verwegeneren Versuch gestartet, den Code selbständiger zu machen. Die neue Datei mainwindow_tools_1.cpp enthält die Funktion bool MainWindow::LoadHipparcosData(). Diese Funktion enthält die nötigen Daten, um ohne zusätzliche Dateien, wie z.B. hip_main.dat auszukommen. Die Datei mainwindow_tools_1.cpp ist auch in dem gezippten Qt-Code auf der "Downloads"-Seite von Sourceforge.net enthalten.

Man kann jetzt die Datei My3DStarChart_Qt4.7.src.zip auf den Rechner laden und wie gewohnt ohne weitere Änderungen mit Qt Creator übersetzen, weil die neue Datei mainwindow_tools_1.cpp noch nicht in der .pro-Datei eingetragen ist. Zusätzlich kann man unter Linux aber auch die neue Funktion LoadHipparcosData() manuell einbauen (My3DStarChart.pro, mainwindow.h und mainwindow_tools.cpp müssen dazu angepasst werden). Man kann dann mit "qmake My3DStarChart.pro" ein Makefile erzeugen und mit make übersetzen. Der Code zwar keine syntaktischen Fehler, aber die Sterne werden noch nicht angezeigt. Den verbleibenden Ladefehler kann man so aber auch ohne den Qt Creator suchen.
Gruß, Bernhard

pmvstrm
02.12.2011, 05:57
Jo das ist noch ein K8 Prozessor:)

Aber wie es ausschaut müssen wir Programmierer (und zwar alle) uns endlich an das sperrige Thema Multicore Programmierung ranwagen. Es gibt leider keinen Compiler oder Interpreter der zuverlässig autoparallelisiert und die CPU Taktfrequenz wird wohl nicht weiter steigen. Der normale ALDI PC hat heute schon 6 Kerne und zwischen 2 bis 8 GByte RAM. Intel hat sschon 12 Kerner für nächstes Jahr angekündigt und es dauert nicht lange dann sind 50 CPU Kerne normal (intel
spricht sogar schon davon das 1000 Kerne machbar sind)Es nützt nichts, man muss lernen wie man damit effizienten Code erzeugt. Aber Gott sei dank gibt es Hilfsbibliotheken wie OpenMP, die machen das Leben zwar leichter, trotzdem muss man aber wissen wie man das nutzt.

Wir als C/C++ Programmierer können darauf ja explizit Einfluss nehmen, aber ich frage mich was mit den ganzen anderen Sprachen wohl werden wird, wo doch mittlerweile klar ist, das automatische Parallelisierung einfach nicht funktioniert. Die werden diese Sprachen wohl aufbohren müssen. Es wundert mich irgendwie gar nicht mehr, das C/C++ so einen neue Welle erlebt, denn damit kann man wohl dieses Problem noch am besten lösen.Auch müssen wir nicht erst darauf warten das irgend jemand die Möglichkeiten der Parallelisierung an unsere Compiler andockt, diese Möglichkeit haben wir schon lange - nur damit auch guten
Code hinzukriegen der gut auf allen Kernen skaliert ist die Königsdisziplin.

Gruß, Peter

pmvstrm
02.12.2011, 06:40
Guten Morgen Bernhard,

Also ich bin kein großer Fan davon Daten direkt in das Programm hart zu kodieren.
Unser Install liegt momentan bei 10 MBytes mit hyg.csv, das ist denke ich noch absolut vertretbar:)

Gruß, Peter

Bernhard
02.12.2011, 07:36
Es wundert mich irgendwie gar nicht mehr, das C/C++ so einen neue Welle erlebt, denn damit kann man wohl dieses Problem noch am besten lösen.
Diese Sprache entspringt eben dem denkbar naheliegendsten Konzept, über den Assemblercode eine pragmatischen und programmierfreundliche Schicht zu legen, die nicht zu viele Kompromisse macht, sprich alle Features der Maschine nutzt. Ich persönlich werde auch immer hellhörig, wenn neuartige Programmiersprachen hochgelobt werden, die genau diese enge Anbindung an die Hardware nicht oder nur unzureichend unterstützen.


nur damit auch guten Code hinzukriegen der gut auf allen Kernen skaliert ist die Königsdisziplin.
Hört sich spannend an. Klingt aber auch nach Aufgaben, die auf verschiedene Arten gelöst werden können.

Bernhard
02.12.2011, 07:47
Also ich bin kein großer Fan davon Daten direkt in das Programm hart zu kodieren.
Ich eigentlich auch nicht, aber der Zweck (Geschwindigkeit beim Laden) würde bei mir in diesem Fall die Mittel durchaus rechtfertigen. Aber keine Sorge. Ich will das nicht erzwingen und momentan liegt der zugehörige Code quasi auch nur als Kommentar vor.


Unser Install liegt momentan bei 10 MBytes mit hyg.csv, das ist denke ich noch absolut vertretbar:)
Das Thema hyg.csv sehe ich schon etwas verbissener. Bei Cartes Du Ciel gehört zur Minimalausstattung bereits der Hip-Katalog. Da fühle ich mich bei einer Präsentation des hyg.csv in der Öffentlichkeit irgendwie nackt. Wenn man die Sternkarte maximal vergrößert sieht man auch recht deutlich den Unterschied. D.h. jeder Amateurastronom mit relativ einfachen optischen Hilfsmitteln wird über den hyg.csv doch eher ein wenig lächeln.
Viele Grüße, Bernhard

pmvstrm
02.12.2011, 07:54
Hört sich spannend an. Klingt aber auch nach Aufgaben, die auf verschiedene Arten gelöst werden können.

Ja wie immer. Bevor es OpenMP gab musste man wirklich alles auf die harte Tour selbst machen.OpenMP ist halt der erste,
ernst zu nehmende Ansatz die Herrausforderungen der Parallelprogrammierung anzugehen. Sogar der MS Visual C/C++
Compiler unterstützt OpenMP Version 2.0 (aktuell ist 3.1), der Gnu GCC unterstützt OpenMP sowieso. Aber der derzeit
fortschrittlichste C/C++ ist wohl der Intel 12 C/C++ Compiler der sich in Visual Studio 2008/2010 reinklingt.Allerdings
übernimmt Intel dann wiederum keine Gewähr ob die Kompilate dann auf AMD Prozessoren laufen. Am besten bleiben
wir bei OpenMP, das kann man ja ganz einfach mit <omp.h> einbinden.

Und dann kann man mit pragma makros arbeiten z.B so:

int main(int argc, char* argv[])
{
#pragma omp parallel
printf("Hallo Welt!\n");

return 0;
}

Das zeigt zwar wie es geht, es ist aber leider zu nichts nutze.
Sinnvoll wird es dann, wenn z.B ein Prozess eine Textdatei von oben und einer anfängt von unten zu lesen (wenn mehrere CPU's da sind
kann man die Arbeitspakete immer noch weiter auf die CPU's austeilen).

Gruß, Peter

pmvstrm
05.12.2011, 09:29
Guten Morgen Bernhard,

Ich habe gesehen das Du einige Commits vorgenommen hast, kannst Du kurz sagen was Du da, schönes, neues eingebaut hast?`

ps:
Sebix. Bist Du noch beim Projekt dabei (Du hattest ja die Aufgabe mit QTLinguist übernommen wenn ich mich nicht irre?) oder bist
Du anderweitig zu stark eingebunden?

Gruß, Peter

Bernhard
05.12.2011, 10:32
kannst Du kurz sagen was Du da, schönes, neues eingebaut hast?
Guten Morgen Peter,

am Wochenende gab es von meiner Seite nur kosmetische Änderungen. Der letzte Commit betraf eine erweiterte Kommentarzeile. Bei den Commits davor habe ich die Tabulatorreihenfolge geschönt.

Zusätzlich habe ich mal eine Face-On-3D-View auf die Milchstrasse berechnet und angesehen. Das Ergebnis war aber eher ernüchternd, weil es von der Ansicht eines Kugelsternhaufens nicht zu unterscheiden war. Von Spiralarmen und dergleichen keine Spur. Vermutlich braucht man für solche Details noch wesentlich umgangreichere Kataloge als den HIP. Bei Interesse gebe ich gerne die Einstellungen für diese Ansicht weiter.


Sebix. Bist Du noch beim Projekt dabei
Wir können jetzt auch auf UTF-8 umsteigen. Im Menüpunkt "Bearbeiten/Encoding auswählen..." kann man auch unter Windows den Zeichensatz auf UTF-8 u.a. umstellen.
Viele Grüße

pmvstrm
05.12.2011, 11:02
@Bernhard

Ach so. Ok, dann steigen wir mal voll auf UTF8, dann sind wir auf der sicheren Seite (partiell waren wir es ja ohnehin schon).
Was meinst Du, sollten wir jetzt die Kommentare durchgängige in English hinterlegen und mit QTLinguist mal die English Spachdatei
beipacken? Mit QTLinguist kann man ja ein vorhandenes Projekt um die Mehrsprachigkeit erweitern. Vorhandene Beschreibungen
werden dann z.B Deutsch zugeordnet und wenn ein Benutzer im Datei Menü English anklickt, wird das Programm sofort auf
Englisch umgestellt.Man könnte auch beim Start ermitteln welche Sprache der Benutzer verwendet und die entsprechende
QM Datei (die alle Texte in binärer Form enthält) direkt laden.QM Dateien werden aus TS Dateien generiert die man zuvor mit
dem QTLinguist erstellt.

Gru, Peter

Bernhard
05.12.2011, 11:33
Hallo Peter,


dann steigen wir mal voll auf UTF8, dann sind wir auf der sicheren Seite (partiell waren wir es ja ohnehin schon).
Machst Du das dann?


Was meinst Du, sollten wir jetzt die Kommentare durchgängige in English hinterlegen und mit QTLinguist mal die English Spachdatei
beipacken?
Gerne. Bei der Übersetzung der Kommentare kann ich mich beteiligen.


Mit QTLinguist kann man ja ein vorhandenes Projekt um die Mehrsprachigkeit erweitern.
Damit kenne ich mich nicht aus. Wäre nett, wenn Du das machen würdest, da ich bis zum Ende Jahres noch ziemlich vollgepackt bin mit Arbeit.
Viele Grüße

pmvstrm
05.12.2011, 11:44
Ok, dann machst Du die Comments und UTF8 (wo Du kannst) und ich setze mich mit QTLinguist auseinander:)

Gruß, Peter

Bernhard
05.12.2011, 13:27
Ok, dann machst Du die Comments und UTF8 (wo Du kannst)
Der Qt Creator kann die Konvertierung nach UTF-8 machen. Wenn mir nichts dazwischen kommt, committe ich das heute abend (sagen wir mal spätestens bis 22:00). Zu den Kommentaren sollte man am besten den gesamten Code inklusive Benamung der Klassen, Methoden usw. übersetzen, damit alles einheitlich bleibt. Das ist dann eine Aufgabe, die für mich nur noch verteilt über mehrere Tage machbar ist.
Gruß

pmvstrm
05.12.2011, 14:20
Jo, Du kannst comitten wann Du magst. Ich hole mir ja immer die letzten Änderungen und achte beim einchecken darauf das es keine Konflikte gibt,
da gibt es eigentlich keine Probleme:) Derartige Dinge müssen ja sowieso geklärt sein, da ich denke, dass wenn wir ein internationales Projekt werden
auch mehr interessierte Entwickler erreichen die vielleicht etwas beitragen möchten.


Grüße, Peter

Bernhard
05.12.2011, 17:49
Hi Peter,

soweit ich es gesehen habe, musste nur noch die Datei mainwindow.cpp im Zeichensatz nach utf-8 konvertiert werden. Ich habe die Konvertierung dann doch mit iconv in einer Linux-Konsole gemacht, weil der Qt Creator das nicht machen konnte.
Gruß