Код ниже является частью метода
void paint(Canvas canvas, Size size) {}
.
Я определил класс Point следующим образом:
class Point {
int x;
int y;
double distanceFromO;
Offset offset;
Point(this.x, this.y) {
distanceFromO = Offset(x.toDouble(), y.toDouble()).distance;
offset = Offset(x.toDouble(), y.toDouble());
}
Offset getOff() {
return offset;
}
}
Этот алгоритм / код проверяет, находится ли следующая последовательная точка над ним, и рисует только в этом случае. Как мне заставить его путешествовать случайным образом и всегда начинать и заканчивать с двух фиксированных точек, а также делать его более похожим на электричество (заметное и динамичное c количество расстояний между координатами x и y точек)?
for (int i = 0; i < 35000; i++) {
var x = Random().nextInt(400);
var y = Random().nextInt(400);
Point temp = new Point(x, y);
for (int j = 0; j < points.length; j++) {
if (temp.y - points[j].y > 0 ||
temp.x - points[j].x > 100 && temp.x - points[j].x < 200 ||
temp.y - points[j].y > 100 && temp.y - points[j].y < 200)
isBiggestPoint = false;
}
if (isBiggestPoint) points.add(temp);
isBiggestPoint = true;
}
points.forEach(
(p) => print('x' + p.x.toString() + ' ' + 'y' + p.y.toString()));
points.sort((a, b) {
int cmp = b.y.compareTo(a.y);
if (cmp != 0) return cmp;
return b.x.compareTo(a.x);
});
//debug print
points.forEach(
(p) => print('x' + p.x.toString() + ' ' + 'y' + p.y.toString()));
for (int k = 1; k < points.length; k++) {
canvas.drawLine(points[k - 1].getOff(), points[k].getOff(), tpaint);
}
Токовый выход:
Ожидаемый выход:
Заранее спасибо