120 lines
4.2 KiB
Plaintext
120 lines
4.2 KiB
Plaintext
|
/*
|
||
|
This file is part of "Interface Fractures III - Silicon".
|
||
|
Copyright (c) 2015 Luka Prinčič, All rights reserved.
|
||
|
This program is free software distributed under
|
||
|
GNU General Public Licence. See COPYING for more info.
|
||
|
- - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||
|
|
||
|
drawCurvesfly.pde
|
||
|
|
||
|
*/
|
||
|
|
||
|
|
||
|
void drawFlylines( boolean render, // should we render or not?
|
||
|
int curvesNum,
|
||
|
int pixBank, int pixId,
|
||
|
float speed, float direction, float sensitivity,
|
||
|
float brightDirection,
|
||
|
float rotation, float brightRotation,
|
||
|
int curveHue, int curveSatur, int curveBright,
|
||
|
int curveAlpha, float curveBrightAlpha,
|
||
|
int lineLength, float brightLength, int strokeWeight,
|
||
|
int pixHue, int pixSatur, int pixBright, int pixAlpha
|
||
|
)
|
||
|
{
|
||
|
if (render) {
|
||
|
|
||
|
colorMode(HSB, 127, 127, 127, 127);
|
||
|
blendMode(BLEND); // reset blend mode just in case
|
||
|
textureMode(IMAGE);
|
||
|
|
||
|
// curvesNum = int(map(float(curvesNum), 0, 127, 0, 7000));
|
||
|
speed = speed * 0.002;
|
||
|
brightDirection = map(brightDirection, 0, 127, -5, 5);
|
||
|
brightRotation = map(brightRotation, 0, 127, 0, 7);
|
||
|
curveBrightAlpha = map(curveBrightAlpha, 0, 127, 0, 1);
|
||
|
|
||
|
pixBank = min(pixBank, imgPool.length - 1);
|
||
|
pixId = min(pixId, imgPool[pixBank].length - 1);
|
||
|
|
||
|
|
||
|
// main loop!
|
||
|
for (int i = 0; i < curvesNum; i++) { // for each curve
|
||
|
|
||
|
// is this the time of creation?
|
||
|
if (curveX[i] == 0.0) {
|
||
|
if (curveY[i] == 0.0) {
|
||
|
curveX[i] = random(width);
|
||
|
curveY[i] = random(height);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
color curveC = imgPool[pixBank][pixId] // load only full-size HD images!
|
||
|
.get(int(curveX[i]), int(curveY[i])); // get color of the pixel
|
||
|
float curvePixBrightness = pow(brightness(curveC), 1.8) / 127.0;
|
||
|
// maximum: pow(127, 1.8) / 127 = 48.19954
|
||
|
// if sensitivity is 0 then speedPixBrightness is a constant 48.2 / 2
|
||
|
// speed * (curvePixBrightness * sensitivity) + ((1-sensitivity) * 25))
|
||
|
|
||
|
float curvDirection = radians(map(direction, 0, 127, 0, 360) + (curvePixBrightness * brightDirection));
|
||
|
float cosdir = cos(curvDirection);
|
||
|
float sindir = sin(curvDirection);
|
||
|
|
||
|
float speedPixBrightness = speed * ((curvePixBrightness * sensitivity) + ((1-sensitivity) * 25));
|
||
|
|
||
|
float lineLengthBri = pow(lineLength * 0.1, 2) * ( (curvePixBrightness * brightLength ) + ((1 - brightLength)*1 ) );
|
||
|
//println(curvePixBrightness);
|
||
|
|
||
|
curveX[i] = curveX[i] + speedPixBrightness * cosdir;
|
||
|
curveY[i] = curveY[i] + speedPixBrightness * sindir;
|
||
|
|
||
|
|
||
|
if (curveX[i] > width-1) { // if off-sceen on X-axis
|
||
|
curveX[i] = 1; // wrap back
|
||
|
curveY[i] = random(height-1); } // randomize Y-axis position
|
||
|
else if (curveX[i] < 1) {
|
||
|
curveX[i] = width-1;
|
||
|
curveY[i] = random(height-1); // randomize Y-axis position
|
||
|
}
|
||
|
|
||
|
if (curveY[i] > height-1) { // if off-sceen on X-axis
|
||
|
curveY[i] = 1; // wrap back
|
||
|
curveX[i] = random(width-1); } // randomize Y-axis position
|
||
|
else if (curveY[i] < 0-1) {
|
||
|
curveY[i] = height-1;
|
||
|
curveX[i] = random(width-1); // randomize Y-axis position
|
||
|
}
|
||
|
|
||
|
float curveRotation = radians(map(rotation, 0, 127, 0, 180) + (brightRotation * curvePixBrightness) );
|
||
|
|
||
|
|
||
|
// float curveBrightAlphaFact = (brightness(curveC) / 127.0) * curveBrightAlpha;
|
||
|
float curveAlphaDest = curveAlpha * (((brightness(curveC) / 127.0)
|
||
|
* curveBrightAlpha)
|
||
|
+ (1 - curveBrightAlpha));
|
||
|
|
||
|
pushMatrix();
|
||
|
stroke(color(curveHue, curveSatur, curveBright, curveAlphaDest));
|
||
|
strokeWeight(strokeWeight);
|
||
|
translate(curveX[i], curveY[i]);
|
||
|
rotate(curveRotation);
|
||
|
line (0, lineLengthBri, 0, -lineLengthBri);
|
||
|
popMatrix();
|
||
|
|
||
|
}
|
||
|
|
||
|
noStroke();
|
||
|
beginShape();
|
||
|
texture(imgPool[pixBank][pixId]);
|
||
|
tint(pixHue, pixSatur, pixBright, pixAlpha);
|
||
|
vertex(0, 0, 0, 0);
|
||
|
vertex(width, 0, width, 0);
|
||
|
vertex(width, height, width, height);
|
||
|
vertex(0, height, 0, height);
|
||
|
endShape();
|
||
|
|
||
|
|
||
|
}
|
||
|
}
|
||
|
|