Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

77
Vistas
Cómo pasar por dos colores con onda sinusoidal en p5.js

Sé cómo hacerlo con blanco y negro.

 let a = 0; function setup() { createCanvas(400, 400); } function draw() { background(220); fill(map(sin(a), -1, 1, 0, 255)); rect(20, 20, 50); a += 0.01; }
 <script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.4.1/p5.js"></script>

ejemplo

Me gustaría que fuera morado en lugar de negro pero no puedo hacerlo. Me gustaría lograr algo como esto .

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

No sé mucho sobre p5.js. Pero simplemente googlear y ofrecería esta solución.

 let a = 0; let white; let purple; function setup() { createCanvas(400, 400); white = color(255, 255, 255); purple = color(160, 32, 240); } function draw() { background(220); const temp = map(sin(a), -1, 1, 0, 1); fill(lerpColor(white, purple, temp)); rect(20, 20, 50); a += 0.01; }
 <script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.4.1/p5.js"></script>

Con lerp color, puede crear una implementación que admita aún más colores.

 let white = color(255, 255, 255); // at 0 (-1 on sin) let purple = color(160, 32, 240); // at 0.5 ( 0 on sin) let blue = color(0,0,255); // at 1 (1 on sin) let temp = map(sin(a),-1,1,0,1); if(temp < 0.5){ let temp2 = map(temp, 0, 0.5, 0, 1); result = lerpColor(white, purple, temp2); } else { let temp2 = map(temp, 0.5, 1, 0, 1); result = lerpColor(purple, blue, temp2); }

Con algo de refactorización y más trabajo, esto podría admitir un número arbitrario de colores. Podrías hacer que un pecado atraviese todo el arcoíris.

about 4 years ago · Juan Pablo Isaza Denunciar

0

Un enfoque es colorMode(HSB) . El brillo de la saturación del tono facilita la elección de un tono púrpura (280 de 360), luego cambia la saturación y el brillo para desvanecerse entre la escala de grises y el tono. Rango de saturación y brillo de 0 a 100.

En este caso, me desvanezco entre 0 y 40 en saturación y entre 60 y 100 en brillo. En un extremo, HSB de (280, 0, 100) es blanco puro. En el otro extremo, (280, 40, 60) es violeta.

 let a = 0; function setup() { createCanvas(400, 400); colorMode(HSB); } function draw() { background(220); const v = map(sin(a), -1, 1, 0, 40); fill(280, v, 100 - v); rect(20, 20, 50); a += 0.01; }
 <script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.4.1/p5.js"></script>

lerpColor , mencionado en esta respuesta , probablemente sea lo mejor para este caso, pero dejaré mi respuesta ya que ofrece cierta capacidad de ajuste que lerpColor podría no tener.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda