我想解決這個問題:在屏幕上繪製隨機線,然後在所有線的交點處創建點。我的解決方案:我沒有創建實際的線條,而是使用小點來構建線條。每個「行」是一個稱爲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