当前位置: 首页 > 知识库问答 >
问题:

如何在处理中删除draw()后的上一个形状

慕通
2023-03-14

代码如下:

//Create array of objects 
ArrayList<Circle> circles = new ArrayList<Circle>();
ArrayList<Connector> centrePoint = new ArrayList<Connector>();

void setup(){
  size(800, 800);
  frameRate(1);
  rectMode(CENTER);
  background(204);
   for(int i = 1; i < 50; i++){
       float r = random(100,height-100);
       float s = random(100,width-100);
       float t = 20;
       float u = 20;
       println("Print ellipse r and s " + r,s);
       circles.add(new Circle(r,s,t,u,color(14,255,255),random(360),random(5),random(10)));
   }
    //Draw out all the circles from the array
    for(Circle circle : circles){
      circle.draw();
      float connectStartX = circle.x1;
      float connectStartY = circle.y1;
      println("PrintconnectStartX and Y  " + connectStartX,connectStartY);
        for(Circle circleEnd : circles){
          float connectEndX = (circleEnd.x1);
          float connectEndY = (circleEnd.y1);
          centrePoint.add(new Connector(connectStartX,connectStartY,connectEndX,connectEndY));
}
 }

//For each ellipse, add the centre point of the ellipse to array
    for(Connector connectUp : centrePoint){
      println(connectUp.connectStartX ,connectUp.connectStartY ,connectUp.connectEndX ,connectUp.connectEndY);
      stroke(100, 0, 0);
     if (dist(connectUp.connectStartX ,connectUp.connectStartY ,connectUp.connectEndX ,connectUp.connectEndY) < 75){
      connectUp.draw(connectUp.connectStartX ,connectUp.connectStartY ,connectUp.connectEndX ,connectUp.connectEndY);
     }
    }

//For the line weight it should equal the fat of the node it has come from ie
//for each circle, for each connectUp if the x==connectStartX and y==connectStartY then make the line strokeWeight==fat
for(Circle circle : circles){
for(Connector connectUp : centrePoint){

    if (connectUp.connectStartX == circle.x1 & connectUp.connectStartY == circle.y1 & (dist(connectUp.connectStartX ,connectUp.connectStartY ,connectUp.connectEndX ,connectUp.connectEndY) < 75)){
    print(" true "+ circle.fat);
    float authority = circle.fat;
    strokeWeight(authority*1.5);
    connectUp.draw(connectUp.connectStartX ,connectUp.connectStartY ,connectUp.connectEndX ,connectUp.connectEndY);
    }
  }
}
}

void update(){
}
void draw() {
 for(Circle circle : circles){
  circle.rot =+0.02;
  circle.draw();
  circle.rot = random(-6,6);

}
}


//Need to connect each ellipse to all the other ellipses

class Connector {
   public float connectStartX; 
   public float connectStartY;
   public float connectEndX;
   public float connectEndY;
   public color cB;
   public float thickness;

   public Connector(float connectStartX, float connectStartY, float connectEndX, float connectEndY){
      this.connectStartX = connectStartX;
      this.connectStartY = connectStartY;
      this.connectEndX = connectEndX;
      this.connectEndY = connectEndY;
      //this.cB = tempcB;
      //this.thickness = thickness;
   }

void draw(float connectStartX, float connectStartY, float connectEndX, float connectEndY){
     line(connectStartX, connectStartY, connectEndX, connectEndY);
      // float fat = random(255);
       //fill(fat);
       stroke(100, 0, 0);
   }
   }

class Circle{
   public float x1; 
   public float y1;
   public float x2;
   public float y2;
   public color cB;
   public float rot;
   public float fat = random(5);
   public float fert = 0.1;

   public Circle(float x1, float y1, float x2, float y2, color tempcB, float rot, float fat, float fert){
      this.x1 = x1;
      this.y1 = y1;
      this.x2 = x2;
      this.y2 = y2;

      this.cB = tempcB;
      //Tilt - I think this is done in radians
      this.rot = rot;
      //Authority -this is the fill
      this.fat = fat;
      //Fertility- this is a multiplier for the tilt
      this.fert = fert;
   }
   void draw(){   
      pushMatrix();
        translate(x1, y1);
        fert = random(0.5);
        rot = random(-6,6);
        rotate(rot*fert);
        translate(-x1, -y1);
        //float fat = random(255);
        fill(fat);
        rect(x1, y1, 24, 36);
        popMatrix();
   }
}

共有1个答案

松越
2023-03-14

我在以前的文章中看到了一些代码中正在发生的事情。你画画的方式没有任何意义,我会解释为什么。

以下是大多数处理草图所做的:

  • 使用setup()函数设置程序中使用的任何数据结构。不要从setup()函数中进行任何绘图。
  • 调用background()每个帧以清除旧帧。
  • draw()函数中绘制要在框架中绘制的所有内容。
  • 修改数据结构以更改在屏幕上绘制的内容。
ArrayList<PVector> circles = new ArrayList<PVector>();

void setup() {
  size(500, 500);
  ellipseMode(RADIUS);

  //setup your data structures here
  circles.add(new PVector(250, 250));

  //don't do any drawing yet
}

void mousePressed() {
  //modify the data structure whenever you want to change what's on the screen
  circles.add(new PVector(mouseX, mouseY));
}

void keyPressed() {
  //modify the data structure whenever you want to change what's on the screen
  if (!circles.isEmpty()) {
    circles.remove(0);
  }
}

void draw() {
  //call background every frame to clear out old frames
  background(0);

  //draw everything
  for (PVector p : circles) {
    ellipse(p.x, p.y, 20, 20);
  }
}
    null
 类似资料:
  • 我有一个主类,该类将输出打印到控制台。。。 例如,如果行中包含A和B,我需要打印“Apple” 我将在主方法中通过首先实例化该类的对象来实现这一点,即。 代码示例:

  • 问题内容: 说我有一些任意的多行文本文件: 如何在不使文本文件无效的情况下仅删除文件的最后一个字符(e,而不是换行符或null)? 问题答案: 一个更简单的方法( 输出到stdout ,不更新输入文件): 是仅与最后一个输入行匹配的Sed地址,因此导致仅在最后一行执行以下函数调用()。 用空字符串替换(在本例中为 last )行的 最后 一个字符;即,有效地删除最后一个字符。(在换行符之前)。 匹

  • 全部。 我有一些骆驼路线。我的场景如下。 1.远程服务器上的文件大小检查 2.将文件大小存储在标题上 3.通过PollRich通过sftp获取文件 4.将下载文件的大小与原始头文件值的大小进行比较 5.如果有不同,请重试下载 我知道旧标题的价值在投票后消失了。我能做些什么来满足我的场景吗? 非常感谢。

  • 问题内容: 我想删除字符串的最后一个字符,但在此之前,我想检查最后一个字符是否为“ +”。如何才能做到这一点? 问题答案: 这是删除尾随加号的几种方法。 输出:

  • 我将在main方法中这样做,首先实例化该类的一个对象,即。 代码示例:

  • 问题内容: 我需要更新或删除几个文档。 当我更新时,我这样做: 我首先搜索文档,为返回的结果设置更大的限制(比方说,大小:10000)。 对于每个返回的文档,我都会修改某些值。 我不喜欢对整个修改后的清单(批量索引)进行Elasticsearch。 该操作一直进行到点1不再返回结果为止。 当我删除时,我这样做: 我首先搜索文档,为返回结果设置更大的限制(例如,大小:10000) 我删除所有找到的发