我想解决这个问题:在屏幕上绘制随机线,然后在所有线的交点处创建点。我的解决方案:我没有创建实际的线条,而是使用小点来构建线条。每个“行”是一个称为Pointe的类的实例。我将每一行实例的所有坐标存储在它自己的数组中。为了检测交集,我写了函数collide()来比较每一行的存储坐标。如果距离为< 10,我将线条的厚度更改为10像素以创建“气球”效果。检测线的交叉点
int p = 0;
class Pointe {
int x;
int y;
int speedX;
int speedY;
float size = 2;
color c = color(random(255),random(255),random(255));
int position_stored[] = {};
Pointe(int xPosition, int yPosition, int speed_X, int speed_Y) {
x = xPosition;
y= yPosition;
speedX = int(random(speed_X));
speedY = int(random(speed_Y));
}
int b = int(mouseX);
int n = int(mouseY);
void move() {
x = x + speedX;
y = y + speedY;
if (x>60) {x = x; y = y;}
if (y>60) {y = y; x = x;}
store_position();
}
void display() {
noStroke();
fill(c);
ellipse(x,y,size,size);
}
int getX() {return x;}
int getY() {return y;}
void store_position() {
int position_stored2[] = append(position_stored,getX());
int position_stored3[] = append(position_stored2,getY());
position_stored = position_stored3;
}
void collide(int[] a) {
for (int i = 1; i < a.length ; i=i+2) {
int distance = int(dist(x,y,a[i-1],a[i]));
if (distance < 20) {size = 10;}
else {size = 2;}
}
}
}
int number = 109;
void setup(){
size(600,600);
background(255);
for (int i = 0; i <number; i++) {
points[i] = new Pointe(int(random(600)),int(random(600)),int(random(-6,6)),int(random(-6,6)));
}
}
Pointe[] points = new Pointe[number];
void draw(){
for (int i = 0; i <number; i++) {
for (int z = 0; z <number; z++) {
if (i == z) {}
points[i].collide(points[z].position_stored);
}
points[i].display();
points[i].move();
}
}
你的问题是什么? –
*“我的解决方案:不是创建真实的线条,而是使用小点来构建线条” - 这听起来并不像解决方案,而是像新问题的源头。任何特定的原因*为什么*你这样做? – Marco13
说明不应该作为答案添加,而是通过添加注释或编辑原始问题。 (并在http://stackoverflow.com/questions/22771887再次问同样的问题也不会在这里帮助)。显然,这个问题或你的意图不够清楚。 – Marco13