С небольшим количеством математики (чтобы расстояние тренировки между кругами) и небольшим количеством манипуляций пикселей, чтобы установить цвета пикселей, основанные на них рассчитанные расстояния, вы можете визуализировать 2D метабазы и там plenty of examples
Для удовольствия, однако, я решил сделать удар, сделав очень взломанный v ersion примера вы разделяемый просто рендеринг эллипсов в изображение, затем фильтрует изображение в конце:
PGraphics pg;//a separate layer to render into
int dilateAmt = 3;
PImage grid;//pixels of the grid alone, minus the 'cursor'
void setup(){
size(400,400);
//create a new layer
pg = createGraphics(width,height);
pg.beginDraw();
//draw a di-grid inside
pg.background(255);
pg.noStroke();pg.fill(0);
for(int y = 0 ; y < 5; y++)
for(int x = 0 ; x < 5; x++)
pg.ellipse((y%2==0?40:0)+(x * 80),40+(y * 80), 40, 40);
pg.endDraw();
//grab a snapshot for later re-use
grid = pg.get();
}
void draw(){
pg.beginDraw();
//draw the cached grid (no need to loop and re-render circles)
pg.image(grid,0,0);
//and the cursor into the layer
pg.ellipse(mouseX,mouseY,60,60);
pg.endDraw();
//since PGraphics extends PImage, you can filter, so we dilate
for(int i = 0; i < dilateAmt; i++) pg.filter(DILATE);
//finally render the result
image(pg,0,0);
}
void keyPressed(){
if(keyCode == UP) dilateAmt++;
if(keyCode == DOWN) dilateAmt--;
if(dilateAmt < 1) dilateAmt = 1;
println(dilateAmt);
}
Обратите внимания, что конечный результат растровый, а не вектор.
Если вы хотите добиться точного эффекта, вам нужно будет переносить свой пример с JavaScript на Java. Исходный код доступен.
Если вам нравится Обработка приведенного выше примера, вы можете использовать простой javascript, используя p5.js. Вы найдете большинство знакомых функций от Processing, но также напрямую используйте библиотеку paper.js.
он отличный, это помогает! Это вместе с paperjs, я, вероятно, могу его перенести, спасибо! – Oscar