gpt4 book ai didi

java - 检测线的交叉点

转载 作者:行者123 更新时间:2023-11-30 03:57:36 26 4
gpt4 key购买 nike

我正在尝试解决这个问题:在屏幕上绘制随机线,然后在所有线的交叉点处创建点。我的解决方案:我不创建真实的线条,而是使用小点来构建线条。每条“线”都是一个名为 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();
}
}

最佳答案

这是一个简单的数学问题。每条直线都有平面上的 2 个点,您可以使用这 2 个点按照此 https://www.khanacademy.org/test-prep/algebra1-brushup/graph-eqns-brushups/v/equation-of-a-line-3 得到直线方程如果您有两条不同直线的方程,您可以找到它们通过 G(x) = F(x) 相交的点。

问候

关于java - 检测线的交叉点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22757105/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com