Я ищу помощь по языку программирования/среде обработки.Выход обработки высокого разрешения
Я довольно новичок в обработке, и я экспериментирую с куском кода от кого-то на openprocessing.org. Мне очень нравятся визуальные результаты, которые дает этот код, и я хотел бы продолжить работу с ним. К сожалению, выход очень низкий. Поэтому я ищу кого-то, кто мог бы помочь мне разобраться, как: а) увеличить размер или разрешение сформированных форм и б) сохранить все как файл PDF.
Вы можете найти исходный код в действии здесь: https://www.openprocessing.org/sketch/377730
Это код:
import java.util.Arrays;
float[][] z, v, a;
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void setup() {
size(512, 512);
colorMode(RGB, 2);
z = new float[width][height];
v = new float[width][height];
a = new float[width][height];
loadPixels();
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void draw() {
for (int x = 1; x < width-1; x++) {
for (int y = 1; y < height-1; y++) {
a[x][y] = (v[x-1][y] + v[x+1][y] + v[x][y-1] + v[x][y+1])/4 - v[x][y];
}
}
for (int x = 1; x < width-1; x++) {
for (int y = 1; y < height-1; y++) {
v[x][y] += a[x][y];
z[x][y] += v[x][y];
pixels[width*y+x] = color(sin(z[x][y]) + 1, cos(z[x][y]), 1);
}
}
updatePixels();
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void move() {
if (mouseX > -1 && mouseX < width && mouseY > -1 && mouseY < height) {
v[mouseX][mouseY] = randomGaussian() * TAU;
}
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void mouseClicked() { move(); }
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void mouseDragged() { move(); }
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void keyPressed() {
noLoop();
for (int x = 0; x < width; x++) Arrays.fill(z[x], 0);
for (int x = 0; x < width; x++) Arrays.fill(v[x], 0);
loop();
}
До сих пор я экспериментировал с предполагаемым методом с высокой разрешающей способностью, публикуемую в обработке-форума, который не работал для меня, хотя, по крайней мере, не в контексте вышеприведенного кода, с которым я работаю. Вот кусок кода из форума, который демонстрирует путь одного пользователя сохранения выходного выходной обработки в высоком разрешении:
int dim = 5000;
int dimScreen = dim/10;
color c1 = #AFA786;
color c2 = #000000;
void setup() { size(dimScreen,dimScreen); }
void draw() { exampleSketch(); }
void exampleSketch() {
for (int y=0; y<=height; y++) {
stroke(lerpColor(c1,c2,float(y)/height));
line(0,y,width,y);
}
stroke(#FFFFFF);
fill(#BBBBBB);
ellipse(width/2, height/2, width/2, height/2);
line(0, 0, width, height);
}
void keyPressed() {
if (key ==' ') {
g = createGraphics(dim,dim,JAVA2D);
this.height = dim;
this.width = dim;
g.beginDraw();
exampleSketch();
g.endDraw();
save("result.png");
println("screenshot saved");
this.height = dimScreen;
this.width = dimScreen;
}
}
Я был бы очень благодарен всем, кто достаточно опытен с обработкой и Java, чтобы помочь меня. Большое спасибо и хорошо провести ночь.
Вот моя попытка реализации второго кода в первой:
import processing.pdf.*;
import java.util.Arrays;
float[][] z, v, a;
int dim = 900;
int dimScreen = dim/10;
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void setup() {
size(900, 900);
smooth(8);
colorMode(RGB, 2);
z = new float[width][height];
v = new float[width][height];
a = new float[width][height];
loadPixels();
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void draw() { exampleSketch(); }
void exampleSketch() {
for (int x = 1; x < width-1; x++) {
for (int y = 1; y < height-1; y++) {
a[x][y] = (v[x-1][y] + v[x+1][y] + v[x][y-1] + v[x][y+1])/4 - v[x][y];
}
}
for (int x = 1; x < width-1; x++) {
for (int y = 1; y < height-1; y++) {
v[x][y] += a[x][y];
z[x][y] += v[x][y];
pixels[width*y+x] = color(sin(z[x][y]) + 1, cos(z[x][y]), 1);
}
}
updatePixels();
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void move() {
if (mouseX > -1 && mouseX < width && mouseY > -1 && mouseY < height) {
v[mouseX][mouseY] = randomGaussian() * TAU;
}
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void mouseClicked() { move(); }
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void mouseDragged() { move(); }
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void keyPressed() {
if (key ==' ') {
g = createGraphics(dim,dim,JAVA2D);
this.height = dim;
this.width = dim;
g.beginDraw();
exampleSketch();
g.endDraw();
save("result2.png");
println("screenshot saved");
this.height = 900;
this.width = 900;
}
}
Edit: Два скриншоты сравнивающих различные визуальные результаты до и после реализации решения Джорджа на белом фоне:
Можете ли вы быть более конкретным именно о том, что не работает о второй части кода? Кроме того, какое разрешение вы планируете? Как вы хотите, чтобы эффект масштабировался? –
Спасибо за ваш быстрый ответ! Я попытался реализовать метод сохранения из второго кода в первый (с моим ограниченным знанием о том, как обрабатываются и работает Java). Я добавил модифицированный код к моему первоначальному сообщению выше. К сожалению, сохраненный png не содержит ничего. – JoSch
Какое разрешение вы планируете? Вы хотите, чтобы результат был больше или окно эскиза было больше, или вы хотите, чтобы окно эскиза оставалось неизменным, а просто имело большие капли цвета? Должен ли он экспортироваться как 'pdf', или это нормально экспортировать в качестве файла изображения? –