Flutter: масштабирование контура приводит к тому, что фигуры не выравниваются, как мне выровнять?

Я пытаюсь нарисовать многоугольник с помощью CustomPainter, все работает нормально. Затем я хотел бы нарисовать второй многоугольник, идентичный первому под ним, но в X раз больше. В настоящее время я трансформирую путь, например:

polygon1 = new Path();
polygon1.addPolygon(polygonPoints, true);

double scale = 1.5;
Matrix4 matrix4 = Matrix4.identity()
    ..scale(scale,scale,0);
Path polygon2 = Path.from(polygon1)
    ..transform(matrix4.storage);

Однако кажется, что polygon2 также транслируется, что нежелательно. Я бы хотел, чтобы он был идеально позади polygon1.

Как мне этого добиться?

Фотографии для справки:

Многоугольник 1 (зеленый) и Многоугольник 2 (оранжевый) далеко от точки (0,0) и НЕ выровнен

Многоугольник 1 (зеленый) и Многоугольник 2 (оранжевый) в точке ~ (0,0) и выровнен

1 ответ

Мне удалось центрировать масштабированный многоугольник 2 путем нормализации многоугольника 1 относительно точки 0, затем масштабирования пути, как указано выше, и, наконец, сдвига обоих путей с использованием смещения от точки 0. Кроме того, многоугольник 2 необходимо сместить относительно многоугольника 1, и для этого я использовал Параметр Rect polygon1 bottomCenter.

Другие вопросы по тегам