Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

79
Views
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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!