Bitmap/Bézier curves/Cubic: Difference between revisions

Content added Content deleted
Line 1,092: Line 1,092:
It can be run on line [https://www.openprocessing.org/sketch/846556/ here.]
It can be run on line [https://www.openprocessing.org/sketch/846556/ here.]
<lang>
<lang>
int ptSize = 6;
float[]x = new float[4];
float[]x = new float[4];
float[]y = new float[4];
float[]y = new float[4];
Line 1,100: Line 1,099:
size(300, 300);
size(300, 300);
smooth();
smooth();
// fill coordinate arrays
// startpoint coordinates
x[0] = x[1] = 50;
x[0] = x[1] = 50;
x[2] = x[3] = width-50;
y[0] = 50;
y[0] = height/2-50;
y[1] = y[2] = 150;
y[3] = height/2+50;
x[2] = x[3] = 250;
y[1] = y[2] = height/2;
y[3] = 250;

//initialize dragging flags to false
for (int i =0; i< 4; i++) {
permitDrag[i] = false;
}
}
}


Line 1,116: Line 1,111:
background(255);
background(255);
noFill();
noFill();
stroke(0, 0, 255);

stroke(0, 30, 200);
bezier (x[1], y[1], x[0], y[0], x[3], y[3], x[2], y[2]);
bezier (x[1], y[1], x[0], y[0], x[3], y[3], x[2], y[2]);
// draw bezier handles
// the bezier handles
strokeWeight(1);
strokeWeight(1);
stroke(100);
stroke(100);
line(x[0], y[0], x[1], y[1]);
line(x[0], y[0], x[1], y[1]);
line(x[2], y[2], x[3], y[3]);
line(x[2], y[2], x[3], y[3]);
// draw anchor/control points
// the anchor and control points
stroke(0);
stroke(0);
fill(0);
fill(0);
Line 1,131: Line 1,125:
fill(255, 100, 10);
fill(255, 100, 10);
rectMode(CENTER);
rectMode(CENTER);
rect(x[i], y[i], ptSize, ptSize);
rect(x[i], y[i], 5, 5);
} else {
} else {
fill(0);
fill(0);
ellipse(x[i], y[i], ptSize, ptSize);
ellipse(x[i], y[i], 5, 5);
}
}
}
}


// start dragging if flag true
// permit dragging
for (int i =0; i< 4; i++) {
for (int i =0; i< 4; i++) {
if (permitDrag[i]) {
if (permitDrag[i]) {
Line 1,147: Line 1,141:
}
}


// release any point attached to the mouse
void mouseReleased () {
void mouseReleased () {
for (int i =0; i< 4; i++) {
for (int i =0; i< 4; i++) {
Line 1,154: Line 1,147:
}
}


// for dragg'n dem points
void mousePressed () {
void mousePressed () {
for (int i =0; i< 4; i++) {
for (int i =0; i< 4; i++) {
if (mouseX>=x[i]-5 && mouseX<=x[i]+ptSize+5 &&
if (mouseX>=x[i]-5 && mouseX<=x[i]+10 && mouseY>=y[i]-5 && mouseY<=y[i]+10) {
mouseY>=y[i]-5 && mouseY<=y[i]+ptSize+5) {
permitDrag[i] = true;
permitDrag[i] = true;
}
}
Line 1,164: Line 1,155:
}
}


// show hand when over draggable points
// hand curser when over dragging over points
void mouseMoved () {
void mouseMoved () {
cursor(ARROW);
cursor(ARROW);
for (int i =0; i< 4; i++) {
for (int i =0; i< 4; i++) {
if (mouseX>=x[i]-5 && mouseX<=x[i]+ptSize+5 &&
if (mouseX>=x[i]-5 && mouseX<=x[i]+10 &&
mouseY>=y[i]-5 && mouseY<=y[i]+ptSize+5) {
mouseY>=y[i]-5 && mouseY<=y[i]+10) {
cursor(HAND);
cursor(HAND);
}
}