¿Cómo hacer este extraño logo de manzana en relieve?

Estaba en Pinterest y vi esta imagen. Es bastante nuevo para mí y no tengo idea de por dónde empezar. ¿Cómo lograrías esto en cualquier programa? Por favor, ayúdame.

Logotipo de Apple de aspecto extraño.

Hola. Bienvenido a GDSSE. ¿Qué has probado? ¿Qué ha fallado? Nos gusta responder preguntas aquí, pero esperamos al menos algún esfuerzo por parte de los usuarios. GDSE no es un sitio de tutoriales bajo demanda. También tenga en cuenta que el logotipo de Apple es una marca registrada, y hacer algo con él es ilegal.
Lo siento, esa es mi culpa. Si es así, por favor borre esta publicación.
@ user287001 al editar, no debe agregar cosas a la publicación que el autor no pretendía.

Respuestas (3)

Todo es un poco más fácil de discutir si comenzamos con líneas horizontales, así:

Versión con líneas horizontales

Como dijo Ilmari Karonen, esto es solo un mapa de desplazamiento . Comienza con una topografía 3D h ( x , y ) y luego cada punto ( x , y ) en el resultado debe usar la línea que comienza en y 0 = yh ( x , y ).

Con los gráficos de trama, esto se puede representar de inmediato, pero para obtener líneas vectoriales limpias, en realidad tendríamos que trabajar al revés: cada línea debe parametrizarse como

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

El problema es que esta es solo una ecuación de definición implícita , porque la RHS contiene y = f y 0 ( x ). Esto podría resolverse con Newton-Raphson, pero hay una manera más simple: simplemente construya las líneas que van de izquierda a derecha, y en cada punto suba o baje según sea necesario para completar la ecuación. Suponiendo continuidad, esto siempre es solo una pequeña actualización, por lo que podemos aproximarnos a h como constante allí.

Implementación en 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)

Luego, con una entrada de imagen adecuada como

entrada de imagen de ejemplo

obtenemos contornos como

resultado para el ejemplo de la pera

Código completo: https://gist.github.com/leftaroundabout/8b7075d25adecdf16806ea5d7a7ea2aa

La rotación a líneas diagonales se deja como ejercicio.

Esto es básicamente solo un mapa de desplazamiento aplicado a un montón de líneas.

La parte complicada es que aplicar un mapa de desplazamiento a una textura de mapa de bits estirará y comprimirá toda la textura, incluidas las líneas y los espacios entre ellas. Para obtener el efecto de sombreado en su imagen de ejemplo, querrá estirar solo los espacios, no las líneas en sí. Puedo ver dos (o tal vez tres) formas de evitar esto:

  1. Use un editor de imágenes vectoriales que se puede configurar para desplazar solo la ruta de las líneas y dejar su ancho sin cambios. No estoy seguro de si algún software de dibujo vectorial disponible en el mercado (Illustrator, Inkscape, etc.) admite esto, pero si lo hacen, probablemente produciría el resultado más limpio.

  2. En un editor de mapa de bits (Photoshop, GIMP, etc.), comience con una textura que consista en franjas alternas en blanco y negro del mismo ancho, aplique el mapa de desplazamiento a eso, luego use un filtro de detección de bordes para convertir los límites de la franja en líneas (o tal vez rastrear automáticamente los límites de la franja desplazada en un programa de dibujo vectorial). El riesgo aquí es que, a menos que trabaje con una resolución muy alta (y luego reduzca el resultado final), la calidad puede verse afectada debido al aliasing.

  3. Escriba su propio software para hacer uno de los anteriores. Obviamente, esto requiere algunas habilidades de programación que no todos tienen, pero en lo que respecta a las tareas de programación de gráficos, esto en realidad no debería ser particularmente difícil.

De hecho, probé la opción 2 usando el filtro de desplazamiento en GIMP. Desafortunadamente, no tengo tiempo para escribir un tutorial paso a paso en este momento (tal vez más tarde...), pero como adelanto, aquí está el resultado final de mi experimento rápido:

Resultado final

El "desplazamiento" mencionado por Ilmari Karonen y el "efecto de alivio" mencionado por Abdul Qayum son casi lo mismo.

Aquí hay algunas imágenes del Algoritmo de alivio de imágenes y su aplicación en la impresión de seguridad . Usamos una imagen para hacer que las celdas (o cuadrículas) sean irregulares (o que tengan un desplazamiento), y luego dibujamos líneas paralelas sobre ellas.

Puede implementar este algoritmo a mano o usar un software, como el mapa de desplazamiento GIMP o JURA (usado por Abdul Qayum).

ingrese la descripción de la imagen aquí