Druckdaten für Weltkugel aus 2d-Vorlage erstellen

N

nerwoest

Aktives Mitglied
Thread Starter
Dabei seit
07.07.2005
Beiträge
393
Reaktionspunkte
9
Hallo zusammen.

Ich habe folgendes vor:
Aus einer stilisierten (gerasterten) Weltkarte möchte ich Druckdaten für das bedrucken einer Kugel erstellen.
Dafür muss ich ja aus einer rechteckigen Vorlage einzelne, an den Polen gestauchte Segmente erstellen, die später auf der Kugel das große ganze ergeben.
Gibt es eine Vorlage/Funktion (CS3 vorhanden), mit der ich die benötigte Verzerrung der "Melonenscheiben" automatisieren kann?

Anbei ein Beispielbild, wie das Ergebnis aussehen sollte.


Besten Dank für Tips.
 

Anhänge

  • Globussegment.jpg
    Globussegment.jpg
    62,6 KB · Aufrufe: 1.854
Zuletzt bearbeitet:
Dazu müsste man erst einmal wissen um welchen Kartentyp es sich eigentlich genau handelt oder anders gesagt, wie genau die Erdoberfläche auf die Kartenoberfläche projiziert wurde, denn da gibt es nicht "die eine" Methode. Entsprechend schwierig wird es wahrscheinlich auch werden eine gute Umrechnung mit Adobes Creative Suite hinzubekommen. Mit Mathematica, Matlab und Co wäre das kein Problem.
 
In solchen Spezialfällen würde ich immer direkt mit dem Dienstleister sprechen, der den Druck später realisieren soll.

Denn dieser wird für die »Kugel-Bedruckung« eine native App für's RIP benutzen. Vermutlich brauchst du als Grafiker nur ein normales 2D-Bild anliefern, den Rest macht der Drucker.

Ohne diese Info würde ich gar nicht erst weiterarbeiten.
 
Das wird keine richtige Kugel, sondern nur eine Annäherung. Wenn Du das auf eine Kugel kleben willst, ich meine, auf eine richtige Kugel, wird das nicht gehen, denke ich. Wird eher ein Strandball ;-)

Wüsste nicht, wie man Papier zu einer Kugel zusammenbringt. Gibt doch immer nur eine Annäherung, die umso besser wird, je kleiner die Schnipsel.
 
Oder habe ich das falsch verstanden und es wird direkt auf die Kugel gedruckt? Wenn man eine rechteckige Karte als Mercator-Projektion auf eine Kugel legt (z.B. wenn man das in OpenGL über eine Textur macht), ergibt es das passende Bild. Vielleicht hilft Dir das Stichwort Mercator-Projektion?
 
Ihr habt recht - es wird nur eine Annäherung geben. Das Ausgangsmaterial ist nicht optimal - ich benötige aber eh nur eine abstrahierte Form der Kontinente.
Aus anderer Quelle hab ich einen Downloadlink bekommen, der die Stauchung der sphärischen Zweiecke vorbereitet. Ist etwas älter, scheint aber einen gute Grundlage zu liefern.

klickklack

Dank euch für die Tips, ich "bastel" jetzt mal ...
Felix
 
Wenn du bereit bist die Streifen irgendwie zur Verfügung zu stellen, würde ich die nötigen Berechnungen durchführen.
 
Sehr gerne! Ich verzweifel an den Verkrümmungen ...

Hier die Datei: klickklack
Illustrator-pdf (CS4) - einmal als Ganzes und oben drüber die Unterteilung in 18 Segmente als Schnittmasken.

Bin auch für Tips dankbar, wie ich das selber hinbekommen kann.

Die Vorlage ist jetzt nur eine Kontur - das finale Punktraster bringe ich nach dem stauchen auf ... muss dann nur die Übergänge hin"pfuschen".

Grundsätzlich: BxH = Uxd - das seh ich richtig, richtig?

Dank vorab,
Felix
 
Eine Umrechnung der Vektorgraphik ist schwierig, bedeutend einfacher wäre eine Umrechnung der gerasterten Graphik. Wenn du mir verraten würdest, welche Auflösung (in dpi) bzw. wie viele Bildpunkte du in Höhe und Breite haben willst, bekommst du gleich das gerasterte Ergebnis.
 
Die Auflösung ist mir eigentlich "schnuppe", da ich die Kontur nur als Schablone für meine Punkte benötige.
Wenn du das mit der Stauchung so flott hinbekommst: Ich hab hier das gleiche nochmal mit geänderter Höhe hochgeladen. Hatte mich vertan - die Bildhöhe ist natürlich nicht gleich dem Durchmesse, sondern dem halben Umfang ...

Darf ich dir bitte 3 Kisten Bier schicken!? ;-)
 
Sorry, dass ich erst jetzt antworte, habe eben erst wieder etwas Zeit gefunden. Zwei Sachen: Zuerst einmal, ich habe deine PDF in ein 300dpi png umgewandelt (etwa 11000x5000 Pixel). Das musste sein, da es in den Polregionen ein paar Linien gibt, die ansonsten nicht vernünftig transformiert worden wären (wären nicht zu sehen bei mangelnder Auflösung). Das Endergebnis hat knapp 1,7 MB, allerdings wüsste ich nicht, wie ich dir die Datei am besten zukommen lassen kann. Nun zum zweiten Punkt. Leider war deine zweite Karte nicht ganz exakt beschnitten, soll heißen, oben, rechts und unten musste ich die Karte beschneiden. Das hatte zur Folge, dass die senkrechten Linien nicht exakt bei 1/18, 2/18 usw. der Papierbreite waren und somit etwas verschoben sind. D.h. nach dem Ausdrucken werden diese Linien auf dem Globus verbleiben (denn wenn man diese wegschneidet, wäre der Globus nicht mehr ganz bedeckt).
Besser wäre sicher, wenn du deine Karte nochmal richtig beschnitten ohne diese Hilfslinien und Kartenbegrenzungen hier einstellst, dann sind diese auf dem Globus auch nicht zu sehen. Aber das ist deine Entscheidung.

PS: Du solltest darauf achten, dass das Seitenverhältnis der Karte genau 1:2 ist (Höhe zu Breite), dann bedeckt das Ergebnis auch die gesamte Kugel.

PS2: Du schuldest mir nichts :)
 
Hallo Sirius,

jepp - die Vorlage war nicht ganz exakt. Ist mir vorhin auch aufgefallen. Das ist aber auch nicht so wichtig - die Kontur gilt ja wie gesagt nur als eben solche, um mein Punkteraster zu begrenzen.
Wie es momentan aussieht, werde ich die Konturlinien am Ende wieder von der Kugel entfernen.

1,7MB - das könntes du ja einfach an die effweh at me dot com schicken?

Ich bin extrem beeindruckt von deinem Einsatz und deiner Hilfsbereitschaft! Vielen Dank dafür!
Um deine Zeit nicht weiter zu rauben, stell ich jetzt auch nicht noch eine Datei hoch, an der du arbeitest. Es reicht, wenn ich mir das Wochenende mit Arbeit "versaue" ... was unabhängig vom Globus eh der Fall ist ;-)
Ich werde deine Datei dann soweit bearbeiten, dass später alles schick ist.

Fotos von der Ausstellung gibt's auch - wenn du schon kein Bier möchtest ;)


Dank dir nochmal & Gruß,
Felix

---
Ah: das Seitenverhältnis hatte ich in der zweiten Datei ja bereits auf 1:2 angepasst. Hatte vorher den Denkfehler drin - in der aktuellen Datei sollte es passen ... so wie die 1/18tel-Teiler ;)
 
Um deine Zeit nicht weiter zu rauben, stell ich jetzt auch nicht noch eine Datei hoch, an der du arbeitest.

Das wäre kein Problem, die Transformation bzw. die dazu nötigen Berechnungen erledigt Mathematica. Soll heißen, die Befehle sind so weit alle fertig und gespeichert, ich bräuchte nur die Datei, würde sie in Mathematica importieren und der Rest erledigt dann der Mac. Die Berechnung dauert zwar etwa 15 Minuten (bei 11000x5500 Pixeln, da er für jeden Pixel die neue Position berechnen muss), aber bei einem Mehrkernprozessor (die Umrechnung läuft nur auf einem Kern) kann die bequem im Hintergrund durchgeführt werden. Ansonsten wünsche ich noch viel Spass.

PS: Die E-Mail ist übrigens bereits raus, solltest du also noch keine erhalten haben, scheint da etwas schief zu laufen. Nicht, dass du unnötig wartest.
 
  • Gefällt mir
Reaktionen: nerwoest
Daten sind angekommen - vielen Dank nochmal!!
 
Hi,

ich krame diesen alten Thread nochmals aus, weil ich ebenfalls hilfe benötige. Ich brauche einen Bastelbogen vom Mond. Kugelradius beträgt 45cm --> Umfang ca 141ca.
Die einzelnen Streifen sollen nicht breiter sein als 3cm, also sinds insgesamt 48 Segmente. im Prinzip solls wie beim TE so aussehen.
Mond Klein.jpg
Quelle: http://www.jflothow.de

als Ausgangsbild ist ein NASA-bild vorhanden 11520x5760, hier die verkleinerte Version:
LOLA_plus_Clementine_45r_11K_klein.jpg

vielleicht kann mir jemand helfen?

kann mir jemand einen Tipp geben, wie ich es umsetze?
 
Wenn du mir einen Link zum Originalbild schicken kannst und mir (per PN) (d)eine E-Mail-Adresse zukommen lässt, würde ich dir die Transformation eben berechnen.

PS: Im Anhang das Ergebnis für dein kleines Bild.
 

Anhänge

  • Mond.jpg
    Mond.jpg
    70,3 KB · Aufrufe: 189
Da sich jm401 bisher nicht gemeldet hat, scheint das Anliegen entweder gelöst zu sein oder nicht so wichtig zu sein. Sei es drum, für alle, die den Thread mit einem ähnlichen Anliegen finden sollten, hier meine Lösung für Mathematica:

Bild = Import["Bild.png"];
aspect = ImageAspectRatio[test];
NumSegmente = 48;
fun[x_, y_] := {IntegerPart[NumSegmente*x]/NumSegmente +
1/(2*NumSegmente) +
Cos[(y/aspect - 1/2)*Pi]*(FractionalPart[NumSegmente*x] - 1/2)/
NumSegmente, y};
TransformiertesBild =
ImageForwardTransformation[Bild, fun[#[[1]], #[[2]]] &,
Interpolated -> False];
Export["Mond.png", TransformiertesBild]

Wichtig, das Originalbild ("Bild.png") sollte in ausreichender Auflösung vorliegen und ein Seitenverhältnis von 1:2 (Höhe:Breite) aufweisen, damit es am Ende auf die Kugel passt. Eins noch, die Segmente im exportierten Bild weisen keinen Überlapp auf, also bitte genau arbeiten bzw. sich immer darüber im Klaren sein, dass beim aufbringen auf die Kugel eventuell unschöne Zwischenräume freibleiben, sollte man nicht genau gearbeitet haben. Man könnte natürlich noch einen Überlapp mit einrechnen, sodass man die Segmente überlappend aufkleben muss, da das aber nicht gefordert war und man dann beim Aufkleben darauf achten muss den Überlapp richtig hinzubekommen (ansonsten gibt es Sprünge im Bild, die nicht unbedingt besser aussehen), habe ich das hier gelassen (wer will, kann meinen Code ja entsprechend modifizieren).
 
  • Gefällt mir
Reaktionen: Phrasenbieger
Hi TEXnician, danke für den tollen Code. Arbeite gerade an einem Studentenprojekt. Dafür konnte ich den Code sehr gebrauchen :clap: Du hast angemerkt, dass eine Überlappung möglich wäre. Da beim kleben leider die genannten Zwischenräume sehr leicht entstehen, wäre das genial. Ich kenne mich damit jedoch nicht aus. Besteht die Möglichkeit, dass du die Überlappung ergänzt? Ist das sehr kompliziert? :confused:
Danke und viele Grüße!
 
Kann man machen, macht die Sache aber etwas komplizierter. Auch hier teilt man das Ursprungsbild in N gleichbreite Streifen ein, die sich nicht überlappen und verbreitert dann jeden einzelnen Streifen etwas links und rechts, sodass sich die Streifen dann überlappen (Vorsicht beim ersten und letzten Streifen, da man beim ersten Streifen einen kleinen Streifen vom Ende des Bilds davor ergänzen muss und umgekehrt). Die einzelnen Streifen kann man dann geometrisch so anpassen wie oben. Die so entstehenden Kugeloberflächensegmente überlappen sich dann. In Mathematica ist das ganze nicht so einfach zu lösen, denn obige Funktion kann meines Wissens nach nicht einen Bildpunkt des Urspungsbilds auf zwei Punkte im Endbild abbilden (was ja beim Überlapp nötig wäre). Man müsste also zuerst Einzelbilder der verbreiterten Streifen erstellen, diese einzeln verformen und dann am Ende wieder aneinanderfügen, damit man dann alles als ein Bild (das jetzt im übrigen durch den Überlapp breiter ist!) drucken kann. Beim Aufkleben müsste man die einzelnen Kugeloberflächensegmente allerdings einzeln ausschneiden, da man sie ja überlappen muss. Wenn ich mehr Zeit habe, setze ich mich mal an den Code.
 
Hier der Code (quick and dirty).

Code:
Bild = Import["Bild.png"];

NumSegmente = 6;
Überlapp = 1/10;

dimx = ImageDimensions[Bild][[1]];
dimy = ImageDimensions[Bild][[2]];

BildListe = {};

For[i = 2, i <= (NumSegmente - 1), i++,
  BildListe = Append[BildListe, ImageTrim[Bild, {{(i - 1 - Überlapp)/NumSegmente*dimx, 0}, {(i + Überlapp)/NumSegmente*dimx, dimy}}]];
  ];

BildListe = Insert[BildListe, ImageAssemble[{ImageTrim[Bild, {{(NumSegmente - Überlapp)/NumSegmente*dimx, 0}, {dimx,dimy}}], ImageTrim[Bild, {{0, 0}, {(1 + Überlapp)/NumSegmente*dimx, dimy}}]}], 1];
BildListe = Append[BildListe, ImageAssemble[{ImageTrim[Bild, {{(NumSegmente - 1 - Überlapp)/NumSegmente*dimx, 0}, {dimx, dimy}}], ImageTrim[Bild, {{0, 0}, {(Überlapp)/NumSegmente*dimx, dimy}}]}]];

BildListeTransform = {};

For[i = 1, i <= Length[BildListe], i++,
  TeilBild = BildListe[[i]];
  aspect = ImageAspectRatio[TeilBild];
  fun[x_, y_] := {1/2 + Cos[(y/aspect - 1/2)*Pi]*(x - 1/2), y};
  BildListeTransform = Append[BildListeTransform,ImageForwardTransformation[TeilBild, fun[#[[1]], #[[2]]] &, Interpolated -> False]];
  ];

TransformiertesBild = ImageAssemble[BildListeTransform]

Export["TransformiertesBild.png", TransformiertesBild];

"NumSegmente" ist die Anzahl der Segmente, in die das Bild zerteilt werden soll und "Überlapp" ist der Bruchteil der Breite der einzelnen Streifen, der als Überlapp verwendet werden soll (jeweils links und rechts).

Viel Spaß damit.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: Phrasenbieger
Zurück
Oben Unten