|
|
@@ -0,0 +1,118 @@ |
|
|
|
class Bounder { |
|
|
|
int state; |
|
|
|
float h; |
|
|
|
float angle, arcangle; |
|
|
|
|
|
|
|
float angle(PVector v1, PVector v2) { |
|
|
|
float a = atan2(v2.y, v2.x) - atan2(v1.y, v1.x); |
|
|
|
if (a < 0) a += TWO_PI; |
|
|
|
return a; |
|
|
|
} |
|
|
|
PVector p1, p2, p3, p4; |
|
|
|
void click() { |
|
|
|
if (state < 4) state++; |
|
|
|
if (state == 1) { |
|
|
|
p1 = new PVector(mouseX, mouseY); |
|
|
|
} |
|
|
|
if (state == 2) { |
|
|
|
p2 = new PVector(mouseX, mouseY); |
|
|
|
} |
|
|
|
if (state == 3) { |
|
|
|
h = -p2.dist(new PVector(mouseX, mouseY)); |
|
|
|
} |
|
|
|
} |
|
|
|
void update() { |
|
|
|
if (state == 2) { |
|
|
|
h = -p2.dist(new PVector(mouseX, mouseY)); |
|
|
|
} |
|
|
|
} |
|
|
|
void display() { |
|
|
|
if (state > 0) { |
|
|
|
fill(0); |
|
|
|
noStroke(); |
|
|
|
circle(p1.x, p1.y, 5); |
|
|
|
} |
|
|
|
if (state == 1) { |
|
|
|
stroke(1); |
|
|
|
line(p1.x, p1.y, mouseX, mouseY); |
|
|
|
} |
|
|
|
if (state > 1) { |
|
|
|
//stroke(1); |
|
|
|
//line(p1.x, p1.y, p2.x, p2.y); |
|
|
|
fill(0); |
|
|
|
noStroke(); |
|
|
|
circle(p2.x, p2.y, 5); |
|
|
|
fill(255, 100); |
|
|
|
stroke(1); |
|
|
|
pushMatrix(); |
|
|
|
translate(p1.x, p1.y); |
|
|
|
rotate(angle(new PVector(0, width), PVector.sub(p2, p1))); |
|
|
|
rect(0, 0, h, p1.dist(p2)); |
|
|
|
p3 = new PVector(screenX(h, 0), screenY(h, 0)); |
|
|
|
p4 = new PVector(screenX(h, p1.dist(p2)), screenY(h, p1.dist(p2))); |
|
|
|
popMatrix(); |
|
|
|
fill(0); |
|
|
|
noStroke(); |
|
|
|
circle(p3.x, p3.y, 5); |
|
|
|
circle(p4.x, p4.y, 5); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
void compile() { |
|
|
|
PVector ptopmid = new PVector((p1.x + p2.x)/2, (p1.y + p2.y)/2); |
|
|
|
PVector pbotmid = new PVector((p3.x + p4.x)/2, (p3.y + p4.y)/2); |
|
|
|
|
|
|
|
/* |
|
|
|
links: p1 -> ptopmid -> pbotmid -> p3 |
|
|
|
rechts: ptopmid -> p2 -> p4 -> pbotmid |
|
|
|
*/ |
|
|
|
int leftLeftTopX = (int)map(p1.x, 0, width, 0, images[imageNo].width); |
|
|
|
int leftLeftTopY = (int)map(p1.y, 0, height, 0, images[imageNo].height); |
|
|
|
int leftRightTopX = (int)map(ptopmid.x, 0, width, 0, images[imageNo].width); |
|
|
|
int leftRightTopY = (int)map(ptopmid.y, 0, height, 0, images[imageNo].height); |
|
|
|
int leftRightBotX = (int)map(pbotmid.x, 0, width, 0, images[imageNo].width); |
|
|
|
int leftRightBotY = (int)map(pbotmid.y, 0, height, 0, images[imageNo].height); |
|
|
|
int leftLeftBotX = (int)map(p3.x, 0, width, 0, images[imageNo].width); |
|
|
|
int leftLeftBotY = (int)map(p3.y, 0, height, 0, images[imageNo].height); |
|
|
|
|
|
|
|
int rightLeftTopX = leftRightTopX; |
|
|
|
int rightLeftTopY = leftRightTopY; |
|
|
|
int rightRightTopX = (int)map(p2.x, 0, width, 0, images[imageNo].width); |
|
|
|
int rightRightTopY = (int)map(p2.y, 0, height, 0, images[imageNo].height); |
|
|
|
int rightRightBotX = (int)map(p4.x, 0, width, 0, images[imageNo].width); |
|
|
|
int rightRightBotY = (int)map(p4.y, 0, height, 0, images[imageNo].height); |
|
|
|
int rightLeftBotX = leftRightBotX; |
|
|
|
int rightLeftBotY = leftRightBotY; |
|
|
|
|
|
|
|
|
|
|
|
//beispielcommands: |
|
|
|
//for f in ./*.jpg; do convert "$f" \( -clone 0 -fill black -colorize 100 -fill white -draw "polygon 3218,2414 4882,2414 4882,2621 3218,4771" \) -alpha off -compose copy_opacity -composite -trim +repage "$f"_left.jpg; done |
|
|
|
//for f in ./*.jpg; do convert "$f" \( -clone 0 -fill black -colorize 100 -fill white -draw "polygon 3218,2414 4882,2414 4882,2621 3218,4771" \) -alpha off -compose copy_opacity -composite -trim +repage "$f"_right.jpg; done |
|
|
|
|
|
|
|
String folderName = String.valueOf((int)random(100000000)); |
|
|
|
String cmdleft = "for f in ./*.jpg; do convert \"$f\" \\( -clone 0 -fill black -colorize 100 -fill white -draw \"polygon " + leftLeftTopX + "," + leftLeftTopY + " " + leftRightTopX + "," + leftRightTopY + " " + leftRightBotX + "," + leftRightBotY + " " + leftLeftBotX + "," + leftLeftBotY + "\" \\) -alpha off -compose copy_opacity -composite -trim +repage " + folderName + "/\"$f\"_left.jpg; done"; |
|
|
|
String cmdright = "for f in ./*.jpg; do convert \"$f\" \\( -clone 0 -fill black -colorize 100 -fill white -draw \"polygon " + rightLeftTopX + "," + rightLeftTopY + " " + rightRightTopX + "," + rightRightTopY + " " + rightRightBotX + "," + rightRightBotY + " " + rightLeftBotX + "," + rightLeftBotY + "\" \\) -alpha off -compose copy_opacity -composite -trim +repage " + folderName + "/\"$f\"_right.jpg; done"; |
|
|
|
String cmdpdf = "convert " + folderName + "/*.jpg notizheft.pdf"; |
|
|
|
println(cmdleft); |
|
|
|
println(cmdright); |
|
|
|
//execl("/bin/sh", "-c", "cd", (const char *)0); |
|
|
|
//exec("/bin/sh -c cd " + folderURI + " && " + cmdleft); |
|
|
|
|
|
|
|
//String[] runConvert = { "/bin/bash", "-c", "cd " + folderURI + " && mkdir " + folderName + " && " + cmdleft + " && " + cmdright + " && " + cmdpdf }; |
|
|
|
String[] runConvert = { "/bin/bash", "-c", "cd " + folderURI + " && mkdir " + folderName + " && " + cmdleft + " && " + cmdright }; |
|
|
|
exec(runConvert); |
|
|
|
|
|
|
|
//println(leftLeftTopX + "," + leftLeftTopY + " " + leftRightTopX + "," + leftRightTopY + " " + leftRightBotX + "," + leftRightBotY + " " + leftLeftBotX + "," + leftLeftBotY); |
|
|
|
//println(rightLeftTopX + "," + rightLeftTopY + " " + rightRightTopX + "," + rightRightTopY + " " + rightRightBotX + "," + rightRightBotY + " " + rightLeftBotX + "," + rightLeftBotY); |
|
|
|
|
|
|
|
/* |
|
|
|
println((int)map(p1.x, 0, width, 0, images[imageNo].width)); |
|
|
|
println((int)map(p1.y, 0, height, 0, images[imageNo].height)); |
|
|
|
println((int)map(p2.x, 0, width, 0, images[imageNo].width)); |
|
|
|
println((int)map(p2.y, 0, height, 0, images[imageNo].height)); |
|
|
|
println((int)map(p3.x, 0, width, 0, images[imageNo].width)); |
|
|
|
println((int)map(p3.y, 0, height, 0, images[imageNo].height)); |
|
|
|
println((int)map(p4.x, 0, width, 0, images[imageNo].width)); |
|
|
|
println((int)map(p4.y, 0, height, 0, images[imageNo].height));*/ |
|
|
|
} |
|
|
|
} |