Я понимаю ваше намерение с помощью mouseX и mouseY указать координаты одной из 3 точек конверта при нажатии. В настоящее время проблема заключается в том, что все 3 точки устанавливаются на одну и ту же координату при каждом нажатии. Вам необходимо ввести переменную, чтобы отслеживать, какую координату устанавливать при нажатии, чтобы была установлена только одна пара. Затем, только когда все 3 координаты установлены, вызывается drawLines ().
Я предлагаю следующее:
Введите 2 переменные, одну для отслеживания того, какая точка изменяется; другой массив PVectors (просто чтобы сделать его чище).
int index = 0;
PVector[] coords = new PVector[3];
Изменить mouseClicked () , включив в него следующее:
void mouseClicked() {
ellipse(mouseX, mouseY, 8, 8);
coords[index] = new PVector(mouseX, mouseY);
index += 1;
if (index == 3) {
drawLines(lines);
}
index %= 3;
}
drawLines () становится:
void drawLines(int numLines) {
for (int i = 0; i < numLines; i = i + 1) {
x = coords[0].x;
x1 = coords[1].x;
x2 = coords[2].x;
y = coords[0].y;
y1 = coords[1].y;
y2 = coords[2].y;
float t = (float) i / (numLines - 1);
float startX = x + t * (x1 - x);
float startY = y + t * (y1 - y);
float endX = x1 + t * (x2 - x1);
float endY = y1 + t * (y2 - y1);
line(startX, startY, endX, endY);
}
}
Наконец, поскольку ваш рисунок на черном фоне, а цвет обводки по умолчанию черный, используйте strokeColour (), чтобы изменить цвет линий, чтобы вы могли видеть конверт после его отрисовки.