gpt4 book ai didi

java - 在数组内部使用循环时节点不是交集?

转载 作者:太空宇宙 更新时间:2023-11-04 09:18:20 25 4
gpt4 key购买 nike

我的问题是,无论我单击一个节点,第二次单击时都会出现另一个节点并连接边缘...所以我希望当我单击任何位置时,该节点应该在最近的网格交点处生成。我尝试使用循环。我试图在没有“类”的情况下做到这一点

int n_partition=10;
int length = 101;
PVector[] position = new PVector[length];
int BallNum;

void setup() {
size(600, 360);
background(255);
}

void draw() {
fill(255);
grid();
fill(0);
}

void mousePressed(){
stroke(0);
BallNum++;
position[BallNum]= new PVector(mouseX, mouseY);
circle(position[BallNum].x, position[BallNum].y, 10);
if (BallNum > 1) {
line(position[BallNum].x,position[BallNum].y,position[BallNum-
1].x,position[BallNum-1].y);
line(position[1].x,position[1].y,position[BallNum].x,position[BallNum] .y);
}
for (int i = 0; i < position[BallNum].length; ++ i) {
position[BallNum] = position[BallNum].get(i);
position[BallNum] = position[BallNum].get((i+1) % position[BallNum].length);
line(position[BallNum].x, position[BallNum].y,
position[BallNum].x, position[BallNum].y);
}
}

我预计节点应该到达最近的交叉点。

最佳答案

您必须计算鼠标到网格上的点的最近位置。为此,您必须知道单元格的宽度 (tile_width) 和高度 (tile_height)。单元格的索引可以通过将鼠标位置除以图 block 的大小和 round() 来计算。结果为整数值(例如 round(mouseX/(float)tile_width))。
不要在 mousePressed 回调中绘制任何内容。您唯一要做的就是在列表中添加一品脱:

void mousePressed(){
int tile_width = width / n_partition; // adapt this for your needs
int tile_height = height / n_partition;

int x = round(mouseX / (float)tile_width) * tile_width;
int y = round(mouseY / (float)tile_height) * tile_height;
position[BallNum]= new PVector(x, y);
BallNum++;
}

所有绘图都必须在draw()中完成。在单独的循环中绘制线和点:

void draw() {
background(255);
grid();

// draw the lines in a loop
strokeWeight(3);
stroke(0, 0, 255);
for (int i = 0; i < BallNum; ++ i) {
int i2 = (i+1) % BallNum;
line(position[i].x, position[i].y, position[i2].x, position[i2].y);
}

// draw balls in a loop
strokeWeight(1);
stroke(0, 0, 0);
fill (255, 0, 0);
for (int i = 0; i < BallNum; ++i) {
circle(position[i].x, position[i].y, 10);
}
}

请注意,场景在每一帧中都会连续重绘。在绘制场景之前,必须通过background()“清除”整个窗口。 。

查看结果:

关于java - 在数组内部使用循环时节点不是交集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58676416/

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