/* built with Studio Sketchpad:
* https://sketchpad.cc
*
* observe the evolution of this sketch:
* https://studio.sketchpad.cc/sp/pad/view/ro.keV5EdcvWTV/rev.823
*
* authors:
*
*
*
*
*
*
*
*
* Casey
*
*
*
*
*
*
* Darby Rathbone
*
*
*
* license (unless otherwise specified):
* creative commons attribution-share alike 3.0 license.
* https://creativecommons.org/licenses/by-sa/3.0/
*/
PGraphics colorchooser;
color current= new color();
boolean touched = false;
var touches[];
var ptouches[];
boolean colorchoosermouse() {
if (5<=mouseX && mouseX<=110 && 5<=mouseY && mouseY<=110)
{
current = colorchooser.get(mouseX, 100-mouseY);
return true;
}else {return false;}
}
void colorchoosersetup() {
colorchooser = createGraphics(110, 110, P3D);
colorchooser.beginDraw();
colorchooser.noStroke();
colorchooser.background(100);
colorchooser.colorMode(HSB, 100);
for (int i=0; i<=100; i++) {
for (int j=0; j<=100; j++) {
colorchooser.saturation(j);
colorchooser.stroke(i, j*2, (100-j)*2);
colorchooser.point(i+5, j+5);
}
}
colorchooser.endDraw();
}
int count;
int num = 60;
float[] mx = new float[0];
float[] my = new float[0];
int value;
//// Setup ////
void setup() {
colorchoosersetup();
size(500, 500);
count = 0;
frameRate(30);
smooth();
value = 0;
strokeJoin(BEVEL);
strokeCap(SQUARE);
stroke(255, 1);
strokeWeight(2);
background(255);
}
//// mouseReleased ////
void mouseReleased() {
if (value == 255) {
value = 0;
}
}
//// mousePressed ////
void mousePressed() {
if (!colorchoosermouse())
{
if (value == 0) {
mx = new float[0];
my = new float[0];
value = 255;
}
}
}
//// mouseDragged ////
void mouseDragged() {
float dy, dx, db;
db = dist(pmouseX, pmouseY, mouseX, mouseY);
for (int j = 0;j<=db;j+=5) {
mx = append(mx, lerp(pmouseX, mouseX, j/db));
my = append(my, lerp(pmouseY, mouseY, j/db));
}
//mx = append(mx, mouseX);
//my = append(my, mouseY);
//println(mx+"|"+my+" | "+mx.length+"|"+count);
//println(my);
for (int k = 1;k<=db;k+=5)
{
for (int i = mx.length-1; i >= 1; i--) {
float dg = dist(mx[mx.length-k], my[mx.length-k], mx[i], my[i]);
//println(mx[mx.length-1]);
if (dg > 35 || dg < 5) {
continue;
}
else {
stroke(current, dg/15);
line(mx[mx.length-k], my[mx.length-k], mx[i], my[i]);
//image(colorchooser,0,0)
}
}
//println(lerp(pmouseX,mouseX,k/db));
}
image(colorchooser, 0, 0);
}