Wie macht man dieses seltsam geprägte Apfellogo?

Ich war auf Pinterest und habe dieses Bild gesehen. Es ist ziemlich neu für mich und ich habe keine Ahnung, wo ich anfangen soll? Wie würden Sie dies in einem beliebigen Programm erreichen? Bitte hilf mir.

Seltsam aussehendes Apple-Logo.

Hallo. Willkommen bei GDSE. Was hast du versucht? Was ist gescheitert? Wir beantworten hier gerne Fragen, erwarten aber zumindest etwas Einsatz von den Nutzern. GDSE ist keine Tutorial-on-Demand-Site. Beachten Sie auch, dass das Apple-Logo markenrechtlich geschützt ist und jegliche Änderung daran illegal ist.
Entschuldigung, das ist mein Fehler. Wenn dem so ist, dann bitte diesen Beitrag löschen.
@ user287001 Beim Bearbeiten sollten Sie dem Beitrag keine Dinge hinzufügen, die der Autor nicht beabsichtigt hat.

Antworten (3)

Es ist alles ein bisschen einfacher zu diskutieren, wenn wir mit horizontalen Linien beginnen, etwa so:

Version mit horizontalen Linien

Wie Ilmari Karonen sagte, ist dies nur eine Verschiebungskarte . Sie beginnen mit einer 3D-Topografie h ( x , y ), und dann sollte jeder Punkt ( x , y ) im Ergebnis die Linie verwenden, die bei y 0 = yh ( x , y ) beginnt.

Mit Rastergrafiken kann dies sofort gerendert werden, aber um saubere Vektorlinien zu erhalten, müssten wir eigentlich andersherum vorgehen: Jede Linie sollte als parametrisiert werden

f y 0 ( x ) = y 0 + h ( x , f y 0 ( x ))

Das Problem ist, dass dies nur eine implizite Definitionsgleichung ist, weil das RHS y = f y 0 ( x ) enthält. Dies könnte mit Newton-Raphson gelöst werden, aber es gibt einen einfacheren Weg: Konstruieren Sie einfach die Linien, die von links nach rechts verlaufen, und gehen Sie an jedem Punkt nach oben oder unten, um die Gleichung zu erfüllen. Kontinuität vorausgesetzt, ist dies immer nur eine kleine Aktualisierung, sodass wir dort h als konstant annähern können.

Implementierung in Haskell:

type ℝ = Double

horizContourLine ::
     ((ℝ,ℝ) -> ℝ) -- ^ The topography/height function
  -> (ℝ,ℝ)        -- ^ x-interval on which to render the path
  -> ℝ            -- ^ Step size / resolution along the path
  -> ℝ            -- ^ Base-level y-coordinate of the line
  -> [(ℝ,ℝ)]      -- ^ Trail line
horizContourLine h (x₀,xe) δx y₀ = go (x₀,y₀)
 where go (x,y) = (x,yTgt)
            : if x<xe then go (x+δx, yTgt) 
                      else []
        where yTgt = y₀ + h (x,y)

Dann mit einem geeigneten Bildeingang wie

Beispiel Bildeingabe

wir bekommen Konturen wie

Ergebnis für das Birnenbeispiel

Vollständiger Code: https://gist.github.com/leftaroundabout/8b7075d25adecdf16806ea5d7a7ea2aa

Die Rotation zu diagonalen Linien bleibt als Übung übrig.

Dies ist im Grunde nur eine Verschiebungskarte, die auf eine Reihe von Linien angewendet wird.

Der schwierige Teil besteht darin, dass das Anwenden einer Displacement Map auf eine Bitmap-Textur die gesamte Textur dehnt und komprimiert, einschließlich der Linien und der Lücken zwischen ihnen. Um den Schattierungseffekt in Ihrem Beispielbild zu erzielen, sollten Sie nur die Lücken strecken, nicht die Linien selbst. Ich sehe zwei (oder vielleicht drei) Möglichkeiten, dies zu umgehen:

  1. Verwenden Sie einen Vektorbild-Editor, der so konfiguriert werden kann, dass nur der Pfad der Linien verschoben wird, während ihre Breite unverändert bleibt. Ich bin mir nicht sicher, ob eine handelsübliche Vektorzeichensoftware (Illustrator, Inkscape usw.) dies unterstützt, aber wenn dies der Fall ist, würde dies wahrscheinlich das sauberste Ergebnis liefern.

  2. Beginnen Sie in einem Bitmap-Editor (Photoshop, GIMP usw.) mit einer Textur, die aus abwechselnden schwarzen und weißen Streifen gleicher Breite besteht, wenden Sie die Displacement Map darauf an und verwenden Sie dann einen Kantenerkennungsfilter, um die Streifengrenzen in Linien umzuwandeln (bzw möglicherweise die verschobenen Streifengrenzen in einem Vektorzeichenprogramm automatisch nachzeichnen). Hier besteht das Risiko, dass die Qualität aufgrund von Aliasing leiden kann, es sei denn, Sie arbeiten mit einer sehr hohen Auflösung (und skalieren dann das Endergebnis herunter).

  3. Schreiben Sie Ihre eigene Software, um eine der oben genannten Aufgaben auszuführen. Offensichtlich erfordert dies einige Programmierkenntnisse, die nicht jeder hat, aber was Grafikprogrammieraufgaben angeht, sollte dies eigentlich nicht besonders schwierig sein.

Ich habe tatsächlich Option 2 mit dem Verschiebungsfilter in GIMP getestet. Leider habe ich jetzt nicht wirklich Zeit, eine Schritt-für-Schritt-Anleitung zu schreiben (vielleicht später …), aber als Teaser hier das Endergebnis meines schnellen Experiments:

Endergebnis

Die von Ilmari Karonen erwähnte „Verschiebung“ und der von Abdul Qayum erwähnte „Erleichterungseffekt“ sind fast dasselbe.

Hier sind einige Bilder vom Image Relief Algorithm und seiner Anwendung im Sicherheitsdruck . Wir verwenden ein Bild, um Zellen (oder Gitter) unregelmäßig zu machen (oder um eine Verschiebung zu haben) und zeichnen dann parallele Linien darauf.

Sie können diesen Algorithmus manuell implementieren oder eine Software wie GIMP Displacement Map oder JURA (verwendet von Abdul Qayum) verwenden.

Geben Sie hier die Bildbeschreibung ein