Regards, Chrisir
int i_init = 0;
int i_point = 0;
int amt = 0;
PVector[] from=new PVector[11];
PVector[] to=new PVector[11];
void setup() {
size(600, 600);
define_circuit();
}
void draw() {
background(255);
draw_circuit();
current();
}
// --------------------------------------------------------------------
// Tools
void current() {
// show text
fill(0);
text("line "+i_point,
20, 20);
// show ellipse
float x = lerp(from[ i_point ].x, to[ i_point ].x, amt/100.0);
float y = lerp(from[ i_point ].y, to[ i_point ].y, amt/100.0);
ellipse(x, y,
10, 10);
// manage numbers
// increase lerp percentage between 2 points
amt+=1;
// if lerp percentage reached maximum
if (amt>=100) {
// reset
amt=0;
// next line
i_point++;
if (i_point >= from.length) {
i_point=0;
}
}
}
void draw_circuit() {
stroke(0);
for (int i2=0; i2 < from.length; i2++) {
line(from[i2].x, from[i2].y,
to[i2].x, to[i2].y);
}//for
}//func
// ------------------------------------------------------
// Inits
void define_circuit() {
addLine(145, 200, 145, 80);
addLine(145, 80, 340, 80);
addLine(340, 80, 340, 200);
//---
addLine(340, 200, 360, 220);
addLine(360, 220, 320, 240);
addLine(320, 240, 360, 260);
addLine(360, 260, 320, 280);
addLine(320, 280, 340, 300);
//---
addLine(340, 300, 340, 400);
addLine(340, 400, 145, 400);
addLine(145, 400, 145, 300);
}
void addLine(float x1, float y1,
float x2, float y2) {
from[i_init] = new PVector();
to[i_init] = new PVector();
from[i_init].x= x1;
from[i_init].y= y1;
to[i_init].x= x2;
to[i_init].y= y2;
i_init++;
}
//