Autor Beitrag
Mathematiker
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 2622
Erhaltene Danke: 1447

Win 7, 8.1, 10
Delphi 5, 7, 10.1
BeitragVerfasst: Mi 08.07.15 10:40 
Hallo,
die Darstellung der Erdkugel ist eigentlich sehr, sehr einfach. Hat man die entsprechenden Daten, ist der Rest nur noch die Transformation der Kugelkoordinaten auf die Ebene.
erdkugel
Ich zeige das Beispiel nur, da es vielleicht doch den einen oder anderen gibt, der mal schnell eine Erdkugeldarstellung braucht und ich in der EE nichts gefunden habe oder natürlich falsch gesucht habe.
Im Matheprogramm nutze ich diese Routine mehrmals.
Evtl. interessiert es auch einen "Anfänger". Es ist aber kein Beispiel für "gute Programmierung". :wink:

Außer der Exe benötigt man die Dateien erde.000 bzw. erde2.000. In denen befinden sich die Koordinaten der Landgrenzen der Erde. Die zweite Datei ergibt einer genauere Darstellung.
Schaltet man auf "transparente Erde" wird auch die verdeckte Halbkugel gezeichnet. Dann kommt es wieder zu einer optischen Täuschung. Dreht sich die Erde dann links herum oder rechts herum?

Beste Grüße
Mathematiker

Revision 1: Mit Äquator, Nullmeridian, Breiten- und Längenkreise.
Revision 2: Mit wahlweiser Neigung der Erdachse.

Ergänzung: Dank der Superhilfe von user profile iconNersgatt und user profile iconub60 gibt es jetzt auch eine Komponente zur Erdkugeldarstellung. In dem Zip-File ist auch ein Demoprogramm.

Komponente:
Revision 1: Mit eigenem Breitenkreis und einstellbaren Abständen zwischen den Breiten- und Längenkreisen.
Revision 2: Im Demoprogramm kann der eigene Breitenkreis gewählt werden. Außerdem sind erste Farben einstellbar.
Revision 3: Weitere Eigenschaften der Komponente und wesentlich erweiterte Demo.
Revision 4: Zeitanzeige in die Komponente eingefügt. Zusätzlich Polarkreise. Demoprogramm überarbeitet.
Einloggen, um Attachments anzusehen!
_________________
Töten im Krieg ist nach meiner Auffassung um nichts besser als gewöhnlicher Mord. Albert Einstein


Zuletzt bearbeitet von Mathematiker am Fr 10.07.15 17:33, insgesamt 7-mal bearbeitet

Für diesen Beitrag haben gedankt: Narses
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 08.07.15 10:58 
- Nachträglich durch die Entwickler-Ecke gelöscht -
hathor
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 08.07.15 11:05 
Lieber Mathematiker,
zeichne doch bitte noch den Greenwich-Meridian (Nullmeridian) und den Äquator dazu.
de.wikipedia.org/wiki/Referenzellipsoid

Farben wären auch ganz toll: Wasser blau, Land ocker o.ä.

VIELEN, VIELEN DANK FÜR ALLE DEINE BEITRÄGE !!!
Einloggen, um Attachments anzusehen!

Für diesen Beitrag haben gedankt: Mathematiker
Mathematiker Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 2622
Erhaltene Danke: 1447

Win 7, 8.1, 10
Delphi 5, 7, 10.1
BeitragVerfasst: Mi 08.07.15 15:12 
Hallo,
user profile iconhathor hat folgendes geschrieben Zum zitierten Posting springen:
... zeichne doch bitte noch den Greenwich-Meridian (Nullmeridian) und den Äquator dazu.

Danke für den Hinweis. In der Revision 1 kann man nun Nullmeridian, Äquator sowie Breiten- und Längenkreise einzeichnen lassen.
user profile iconhathor hat folgendes geschrieben Zum zitierten Posting springen:
Farben wären auch ganz toll: Wasser blau, Land ocker o.ä.

Hmm, das dauert aber wesentlich länger. Die Idee ist gut, nur werden die Grenzen zwischen Land und Wasser im Moment nicht als Polygone gezeichnet, sondern als Folge von Einzelstrecken. Für das Färben der Wasserflächen muss ich mir etwas einfallen lassen.

Beste Grüße
Mathematiker

_________________
Töten im Krieg ist nach meiner Auffassung um nichts besser als gewöhnlicher Mord. Albert Einstein
hathor
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 08.07.15 15:58 
Super-schnell, super-toll !
DANKE !

Was mir noch auffiel:
Die Erdachsenneigung von ca. 23,4° könnte man noch einarbeiten...
de.wikipedia.org/wiki/Erdachse
Mathematiker Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 2622
Erhaltene Danke: 1447

Win 7, 8.1, 10
Delphi 5, 7, 10.1
BeitragVerfasst: Mi 08.07.15 17:18 
Hallo,
user profile iconhathor hat folgendes geschrieben Zum zitierten Posting springen:
Die Erdachsenneigung von ca. 23,4° könnte man noch einarbeiten...

Kein Problem.
In der Revision 2 kannst du jetzt auch die Erdachse um die 23,4° neigen.

Beste Grüße
Mathematiker

_________________
Töten im Krieg ist nach meiner Auffassung um nichts besser als gewöhnlicher Mord. Albert Einstein
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 08.07.15 17:37 
- Nachträglich durch die Entwickler-Ecke gelöscht -
Mathematiker Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 2622
Erhaltene Danke: 1447

Win 7, 8.1, 10
Delphi 5, 7, 10.1
BeitragVerfasst: Mi 08.07.15 19:51 
Hallo,
user profile iconFrühlingsrolle hat folgendes geschrieben Zum zitierten Posting springen:
Der Globus als Komponente wäre sehr interessant.
Würdest du es umsetzen wollen?

Würde ich schon.
Da ich aber mich aber noch nie mit der Komponentenerstellung beschäftigt habe, muss ich wohl passen.
Wenn sich jemand in der EE "opfert" :wink: , könnte ich noch etwas lernen.

Beste Grüße
Mathematiker

_________________
Töten im Krieg ist nach meiner Auffassung um nichts besser als gewöhnlicher Mord. Albert Einstein
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 08.07.15 20:05 
- Nachträglich durch die Entwickler-Ecke gelöscht -

Für diesen Beitrag haben gedankt: Mathematiker
hathor
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 08.07.15 21:16 
How To Embed GoogleEarth in your Delphi Application:

delphidabbler.com/articles?article=26
Einloggen, um Attachments anzusehen!

Für diesen Beitrag haben gedankt: Mathematiker
Nersgatt
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1581
Erhaltene Danke: 279


Delphi 10 Seattle Prof.
BeitragVerfasst: Do 09.07.15 07:47 
In der Anlage mal Deine Erde als Komponente. Ist alles quick and dirty.

Was habe ich gemacht?
Ich habe eine TPaintBox abgeleitet und die Paint-Methode überschrieben. Hier hab ich Deine Berechnungen und die Zeichnroutinen hinein gepackt.
Dann habe ich alles, was Zugriffe auf Steuerelemente des Formulars waren, in Properties umgewandelt. Die können jetzt im Objektinspektor oder im Code gesetzt werden.
Außerdem habe ich den Pfad zur Koordinatendatei zur Property gemacht. Damit kann auch das von außen gesetzt werden.

Dann habe ich ein Beispielprojekt gemacht. Hier hab ich dein Formular genommen und setzt nur noch die Properties der Komponente.

Warum heißt die Komponente "spErde"? Den Präfix "sp" habe ich in Anlehnung Deines Namens verwendet. Wenn Du mehr Komponenten machst, ist es hilfreich, wenn die eigenen Komponenten einen einheitlichen Präfix haben. Das machen die meisten Komponentenhersteller auch (DevExpress heißt z.B. immer Tcx... oder Tdx...).

Erstellt hab ich das mit Delphi XE7, hab leider grade kein Delphi 7 zur Hand. Von daher muss evtl. das dfm-File angepasst werden, damit man das Testprojekt in Delphi 7 öffnen kann.
Einloggen, um Attachments anzusehen!
_________________
Gruß, Jens
Zuerst ignorieren sie dich, dann lachen sie über dich, dann bekämpfen sie dich und dann gewinnst du. (Mahatma Gandhi)

Für diesen Beitrag haben gedankt: Mathematiker, Narses
Mathematiker Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 2622
Erhaltene Danke: 1447

Win 7, 8.1, 10
Delphi 5, 7, 10.1
BeitragVerfasst: Do 09.07.15 08:13 
ICH BIN SAUBLÖD!!!! :autsch: :autsch: :autsch: :autsch: Gerade habe ich diesen Beitrag gelöscht! Deshalb noch mal.

Hallo Nersgatt,
Vielen Dank für die Umsetzung als Komponente. Es funktioniert hervorragend. :zustimm: :zustimm: Ich konnte unter D7 die Komponente problemlos installieren.

Jetzt werde ich mir dies genauer ansehen und habe wieder etwas zum Lernen. :dance2:

Beste Grüße
Mathematiker

_________________
Töten im Krieg ist nach meiner Auffassung um nichts besser als gewöhnlicher Mord. Albert Einstein


Zuletzt bearbeitet von Mathematiker am Do 09.07.15 14:13, insgesamt 1-mal bearbeitet
Mathematiker Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 2622
Erhaltene Danke: 1447

Win 7, 8.1, 10
Delphi 5, 7, 10.1
BeitragVerfasst: Do 09.07.15 14:11 
Hallo,
ich habe mir jetzt die Komponente von user profile iconNersgatt angesehen und glaube, das Prinzip verstanden zu haben.
Natürlich musste ich sofort experimentieren.

Deshalb habe ich die Datei erde2.000 erst einmal mit Zlib gepackt und das Ergebnis in Create der Komponente in einer Tstringlist geladen. Das spart das ständige Nachladen der Daten. Wahrscheinlich ist ein Array mit den 32000 Koordinaten noch besser.
Schöner Nebeneffekt: Zieht man die Komponente auf ein Formular, so wird sofort die Erde angezeigt und man kann gezielter die Starteinstellungen festlegen. (veränderte Komponente im Anhang)
Ich hoffe, dass mein Versuch von constructor und destructor richtig sind. Aber die Stringliste muss ja erzeugt und wieder gelöscht werden.

Und nun mein Problem: Es ist immer noch die Datei erde2.c00 notwendig.
In meinem "jugendlichen" :wink: Wahn dachte ich, machst du daraus eine RCDATA-Ressource und fügst sie mit
{$R erde.res}
ein. Dann wird zu Beginn des Programms, wie ich es immer mache, die Ressource in einen Stream geladen und entpackt.
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
procedure listedll(liste:tstringlist);
var ms1: TResourcestream;
    ms2: TMemoryStream;
begin
    ms1 := TResourceStream.Create(hinstance,'erde2',RT_RCDATA);
    try
      ms2 := TMemoryStream.Create;
      try
        DecompressStream(ms1, ms2);
        liste.LoadFromStream(ms2);
      finally
        ms2.Free;
      end;
    finally
      ms1.Free;
    end;
end;
Und das funktioniert nicht. Die res-Datei wird einfach ignoriert und ist gar nicht in der dcu der Komponente enthalten.
Was mache ich schon wieder falsch?

Beste Grüße
Mathematiker

Nachtrag: Ich habe noch ein paar Starteinstellungen festgelegt und die Eigenschaften Farbe der Landgrenze und Farbe der Kreise ergänzt. Das macht Spaß.
Nachtrag 2: Ich habe noch die Stringliste entfernt und ein Koordinatenfeld eingebaut.

Hinweis: Die korrekte Komponente findet ihr im 1.Beitrag.
Einloggen, um Attachments anzusehen!
_________________
Töten im Krieg ist nach meiner Auffassung um nichts besser als gewöhnlicher Mord. Albert Einstein


Zuletzt bearbeitet von Mathematiker am Do 09.07.15 19:39, insgesamt 1-mal bearbeitet
hathor
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 09.07.15 15:41 
Hast Du das so o.ä. in das DPR-File eingebunden?

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
...
{$R *.RES}

{$R erde2.RES}

begin
  Application.Initialize;
...
Mathematiker Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 2622
Erhaltene Danke: 1447

Win 7, 8.1, 10
Delphi 5, 7, 10.1
BeitragVerfasst: Do 09.07.15 17:28 
Hallo,
user profile iconhathor hat folgendes geschrieben Zum zitierten Posting springen:
Hast Du das so o.ä. in das DPR-File eingebunden?

Nein, das geht ja nicht.
Die Komponente hat ja kein Projektfile sondern nur eine Unit.

Beste Grüße
Mathematiker

_________________
Töten im Krieg ist nach meiner Auffassung um nichts besser als gewöhnlicher Mord. Albert Einstein
ub60
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 762
Erhaltene Danke: 127



BeitragVerfasst: Do 09.07.15 18:47 
Was spricht denn gegen das Array?

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
const Daten : array[0..313860..2of single=
((5.670.1920),
(5.36, -0.3921),
(5.151, -0.8871),
(5.008, -1.4171),
(4.776, -1.7371),
(4.788, -2.1991),
(4.931, -2.5961),
(4.952, -2.7721),
(4.975, -3.0041),
...
(80.49219.7631),
(80.46619.961),
(80.41719.951),
(80.40319.961));

Habe es eben probiert. Funktioniert gut und schnell.

ub60

Für diesen Beitrag haben gedankt: Mathematiker
Mathematiker Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 2622
Erhaltene Danke: 1447

Win 7, 8.1, 10
Delphi 5, 7, 10.1
BeitragVerfasst: Do 09.07.15 19:28 
Hallo,
user profile iconub60 hat folgendes geschrieben Zum zitierten Posting springen:
Was spricht denn gegen das Array?

Nichts!
Genau das ist es. Die Idee ist super. Vielen Dank! :dance2: :dance2:

Und damit kann die Erdkugel-Komponente ohne zusätzliche Datei auskommen.
Ich werde den ersten Beitrag jetzt um die Komponenten-Dateien und ein Demoprogramm mit der Komponente ergänzen.

Danke Eurer Superhilfe bin ich jetzt doch etwas stolz. "Meine" erste Komponente. :D
Wer sagt eigentlich, dass es in der EE sehr ruhig geworden ist? :P So schnelle Hilfe bekommt man nur hier. :!:

Jetzt kann der Urlaub beginnen! :beer:
Beste Grüße und nochmals vielen Dank
Mathematiker

_________________
Töten im Krieg ist nach meiner Auffassung um nichts besser als gewöhnlicher Mord. Albert Einstein
hathor
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 09.07.15 19:53 
Aber ZLIB ändern dauert etwas länger...
www.entwickler-ecke.....php?p=678947#678947
----------------------------------------------------------------------------------------
ErdeKomponente.zip (644.86 KB) Rev 0 funktioniert sehr gut ! DANKE !


Zuletzt bearbeitet von hathor am Do 09.07.15 20:16, insgesamt 1-mal bearbeitet

Für diesen Beitrag haben gedankt: Mathematiker
Mathematiker Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 2622
Erhaltene Danke: 1447

Win 7, 8.1, 10
Delphi 5, 7, 10.1
BeitragVerfasst: Do 09.07.15 19:57 
user profile iconhathor hat folgendes geschrieben Zum zitierten Posting springen:
Aber ZLIB ändern dauert etwas länger...

Eigentlich müsste ich mich schämen. :oops: :oops:
Aber heute nicht!
Jetzt ist Party angesagt! :party: :beer: :party: :dunce:

Beste Grüße
Mathematiker

_________________
Töten im Krieg ist nach meiner Auffassung um nichts besser als gewöhnlicher Mord. Albert Einstein
hathor
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 09.07.15 20:37 
Ich habe die Start-Procedure etwas erweitert, weil die Änderung der CheckButtons VOR dem Drehen nicht übernommen wird.

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
procedure TForm1.BDrehungClick(Sender: TObject);
begin
 spERDE3.aequator:=checkequa.checked;
 spERDE3.Transparent:=checktran.checked;
 spERDE3.nullmeridian:=checknull.checked;
 spERDE3.breitenkreise:=checkbkreis.checked;
 spERDE3.laengenkreise:=checklkreis.checked;
 spERDE3.erdachse:=checkachse.checked;

  timer1.enabled:=not timer1.enabled;
  if timer1.enabled then BDrehung.caption:='Stopp'
                    else BDrehung.caption:='Drehung';
end;

Für diesen Beitrag haben gedankt: Mathematiker