We are about to switch to a new forum software. Until then we have removed the registration on this forum.
Hello! Really new to processing.. new to programming in general so bear with me. All I want to do is:
1) Change the color of the text
2) Zoom in and out using the directional keys (Up, down, left, right)
I can't manage to figure it out.. some help would be great. Thank you.
TextGraphics tg;
PVector root = new PVector(random(1234), random(1234), random(1234)), //noise root
nSpeed = new PVector(random(-.02, .02), random(-.02, .02), random(-.02, .02));//noise speed;
ArrayList<Particle> particles = new ArrayList<Particle>();
int nbParticle = 6000;
int[] pgpx;//PGraphics' pixels array
float zoom = 100;//noise zoom level
Boolean noiseOn = true, hitMode = true;
import peasy.*;
PeasyCam cam;
void setup()
{
size(1300, 800, P3D);
cam = new PeasyCam(this, 800);
cam.setMinimumDistance(50);
cam.setMaximumDistance(1300);
tg = new TextGraphics();
strokeWeight(10);
smooth();
}
void draw()
{
background(0);
lights();
box(0);
pushMatrix();
box(0);
popMatrix();
for (int i = 0; i < nbParticle; i++)
{
Particle p = particles.get(i);
p.update();
}
root.add(nSpeed);//update noise
}
void createParticles()
{
particles = new ArrayList<Particle>();
//random particle disposition
while (particles.size () < nbParticle)
{
Particle p = new Particle(particles.size ());
particles.add(p);
}
}
void mousePressed()
{
root = new PVector(random(1234), random(1234));//reset noise root
nSpeed = new PVector(random(-.02, .02), random(-.02, .02));//reset noise speed
}
void keyPressed()
{
switch(key)
{
case 'n'://noise toggle
noiseOn = !noiseOn;
break;
case 'h'://hit toggle
hitMode = !hitMode;
if (!hitMode)
for (Particle p : particles)
{
p.speed.mult(-1);
}
break;
case ' '://ignore SPACE
case ESC://ignore ESCAPE
case ENTER://ignore ENTER
case BACKSPACE://ignore BACKSPACE
break;
default://char input
//tg.process("" + key);//RUN IN JAVA
break;
}
}
class Particle
{
final float SPEED_MIN = .12, SPEED_MAX = .25, h = 40;
PVector pos, origin, speed;
int rank, col = color(random(128, 255), random(128, 205), 90, 120);
float n, nz;//noise
Boolean stuck = false;//against a wall
Particle(int p_rank)
{
rank = p_rank;
init();
}
void init()
{
stuck = false;
float theta = random(TWO_PI);
speed = new PVector(cos(theta), sin(theta), -cos(theta));
speed.mult(random(SPEED_MIN, SPEED_MAX) * (random(1)<0?1:-1));
Boolean done = false;
while (!done)
{
pos = new PVector(random(width), random(height));
if (green(pgpx[(int)pos.y * width + (int)pos.x]) > 100)
{
pos.z = random(-h/2, h/2);
origin = pos.get();
done = true;
}
}
}
void update()
{
if (noiseOn && !stuck)
{
n = noise(root.x + pos.x/zoom, root.y + pos.y/zoom, root.z + pos.z/zoom)*2*TWO_PI;
nz = noise(root.x/10 + pos.x/zoom, root.y + pos.y/zoom, root.z + pos.z/zoom)*2*TWO_PI;
speed.set(cos(n), sin(n), -cos(nz));
speed.mult(SPEED_MAX);
}
if (!(stuck && hitMode))
pos.add(speed);
if (green(pgpx[(int)pos.y * width + (int)pos.x]) < 80)//particle outside the letter
{
stuck = hitMode;
pos.sub(speed);
if (!hitMode)
{
if (noiseOn)
{
pos = origin.get();
} else
{
speed.x *= -1;
speed.y *= -1;
}
}
}
if (pos.z > h/2 || pos.z < -h/2)
{
stuck = hitMode;
pos.z = constrain(pos.z, -h/2, h/2);
if (!hitMode)
{
if (noiseOn)
{
pos = origin.get();
} else
{
speed.z *= -1;
}
}
}
stroke(map(pos.z, -h/2, h/2, 128, 255), map(pos.z, -h/2, h/2, 128, 205), 90, 120);
point(pos.x-width/2, pos.y-height/2, pos.z);
}
}
class TextGraphics
{
PGraphics pg;//buffer PG used to write the input char
TextGraphics()
{
pg = createGraphics(width, height, P2D);
process(new String("Nothing is ever complete."));//"�")//initialize with a String
}
void process(String c)
{
pg.beginDraw();
pg.translate(-width/2, -height/1.7);
pg.background(0);
pg.textSize(70);//500
pg.fill(color(255, 255, 255));
pg.textAlign(CENTER, CENTER);
pg.text(c, width, height);
pg.translate(width/2, height/1.7);
pg.endDraw();
pgpx = new int[width * height];
pg.loadPixels();
arrayCopy(pg.pixels, pgpx);
pg.updatePixels();
createParticles();
}
}
Answers
What do you have so far? What does your code accomplish so far? What part are you stuck exactly on your code?
Kf