Processing练习之自动绘制

案例代码如下:

import processing.pdf.*;

import java.util.Calendar;

boolean savePDF = false;

int maxCount = 5000;

int currentCount = 1;

float\[\] x=new floatmaxCount;

float\[\] y=new floatmaxCount;

float\[\] r=new floatmaxCount;

void setup(){

size(600,600);

smooth();

frameRate(10);

x0 = width/2;

y0 = height/2;

r0 = 10;

}

void draw(){

if(savePDF)beginRecord(PDF,timestamp()+".pdf");

background(255);

strokeWeight(0.5);

float newR = random(1,7);

float newX = random(0+newR,width-newR);

float newY = random(0+newR,height-newR);

float closestDist = 100000000;

int closestIndex =0;

for(int i=0;i<currentCount;i++){

float newDist = dist(newX,newY,xi,yi);

if(newDist <closestDist){

closestDist =newDist;

closestIndex=i;

}

}

float angle =atan2(newY-yclosestIndex,newX-xclosestIndex);

xcurrentCount =xclosestIndex+cos(angle)*(rclosestIndex+newR);

ycurrentCount =yclosestIndex+sin(angle)*(rclosestIndex+newR);

rcurrentCount = newR;

currentCount++;

for(int i=0;i<currentCount;i++){

fill(50);

ellipse(xi,yi,ri*2,ri*2);

}

if(currentCount++>=maxCount) noLoop();

if(savePDF){

savePDF =false;

endShape();

}

}

void keyReleased(){

if(key=='s'||key=='S') saveFrame(timestamp()+"_##.png");

if(key=='p'||key=='P') savePDF=true;

}

String timestamp(){

Calendar now=Calendar.getInstance();

return String.format("%1ty%1tm%1td_%1tH%1tM%1tS",now);

}

保存并运行如图1

图1

相关推荐
别动我齐刘海4 分钟前
从0到1独立搭建机器人软件系统
c++·人工智能·神经网络·opencv·目标检测·机器学习·机器人
我命由我123455 分钟前
Android 设备的日志缓冲区被写满,logcat: Unexpected EOF!
android·java·java-ee·android studio·android jetpack·android-studio·android runtime
dear_bi_MyOnly8 分钟前
数组字符串深度解析:从入门到卡牌实战
开发语言·c++·学习
xcl092510 分钟前
分销返利商城系统开发实战:返利算法与架构设计指南
java·spring boot
171320330计算机毕设编程14 分钟前
2027计算机毕设五大方向对比&选题推荐
java·ide·python·算法·django·php·推荐算法
171320330计算机毕设编程15 分钟前
基于SpringBoot的在线拍卖系统
android·java·spring boot·小程序·课程设计
未秃头的程序猿20 分钟前
一次秒杀把服务打挂了,我用Sentinel规则配置化救了回来
java·后端·spring cloud
Zane199423 分钟前
明明没删字段,反序列化却报错:都是隐式 serialVersionUID 惹的祸
java·后端
0xBADCODE25 分钟前
动态DEX加载+反射+DES硬编码密钥:安卓三层逆向实战
android·java·python·安全·网络安全·逆向·ctf
被摘下的星星29 分钟前
Java 中 .length、.length() 以及 .size() 的区分
java·开发语言