用一条线处理连接椭圆

时间:2018-12-05 12:47:17

标签: java processing

我是Processing的初学者,对我要解决的任务有疑问。

我有两个不同的椭圆数组,一个红色在屏幕顶部,一个蓝色在底部。现在,我试图仅使用一条线就可以绘制从每个蓝色椭圆到每个红色椭圆的线。

我将不胜感激。

谢谢。

这是我当前的椭圆代码。

float x=50;
float yDown=height-50;
float yTop=height-550;
float radius=50;
KreisRot[] kreisRot = new KreisRot[width];
KreisBlau[] kreisBlau = new KreisBlau[width];

void setup() {
  size(600, 600);

  for (int r=0; r < kreisRot.length; r++) {
  kreisRot[r] = new KreisRot();
  }

  for (int b=0; b < kreisRot.length; b++) {
    kreisBlau[b] = new KreisBlau();
  }
}

void draw() {
  for (int r=0; r < kreisRot.length; r++) {

    kreisRot[r].showRed();
  }

  for (int b=0; b < kreisRot.length; b++) {

    kreisBlau[b].showBlue();
  }
}

class KreisBlau {
  float x=50;
  float yDown=height-50;
  float radius=50;

  void showBlue() {
    for (int b=0; b < kreisBlau.length; b++) {

      fill(0, 0, 255);
      ellipse(50+(b)*100, yDown, radius, radius);
    }
  }
}

class KreisRot {

  float x=50;
  float yTop=height-550;
  float radius=50;

  void showRed() {

    for (int r=0; r < kreisRot.length; r++) {

      fill(255, 0, 0);
      ellipse(50+(r)*100, yTop, radius, radius);
    }
  }
}

1 个答案:

答案 0 :(得分:0)

我建议创建一个单独的类Kreis,该类具有一个constructor,该类可以初始化对象的位置和颜色。此外,该类还应具有一些方法,以询问对象的ist x和y位置(X()y()):

class Kreis {
    float _x, _y;
    int  _r, _g, _b;
    float radius=50;

    Kreis(float x, float y, int r, int g, int b ) {
        this._x = x;
        this._y = y;
        this._r = r;
        this._g = g;
        this._b = b;
    }

    float X() { return _x; }
    float Y() { return _y; }

    void show() {
        fill(_r, _g, _b);
        noStroke();
        ellipse(_x, _y, radius, radius);
    }
}

像这样设置对象:

Kreis[] kreisRot = new Kreis[6];
Kreis[] kreisBlau = new Kreis[6];

void setup() {
  size(600, 600);

    for (int r=0; r < kreisRot.length; r++) {
        kreisRot[r] = new Kreis(50+r*100, 50, 255, 0, 0);
    }

    for (int b=0; b < kreisRot.length; b++) {
        kreisBlau[b] = new Kreis(50+b*100, height-50, 0, 0, 255);
    }
}

要从每个蓝色椭圆到每个红色椭圆画一条线,您需要2个嵌套循环。获取椭圆在循环中的位置,并在它们之间画一条线:

void draw() {
    for (int r=0; r < kreisRot.length; r++) {
        kreisRot[r].show();
     }

    for (int b=0; b < kreisBlau.length; b++) {
        kreisBlau[b].show();
    }

    for (int r=0; r < kreisRot.length; r++) {
        for (int b=0; b < kreisBlau.length; b++) {
            stroke(0, 196, 0);
            strokeWeight(3);
            line(kreisRot[r].X(), kreisRot[r].Y(), kreisBlau[b].X(), kreisBlau[b].Y());
        }
    }
}

预览: