flutter:使用Float64List Matrix4在CustomPaint中转换路径



我试图旋转一些路径,但没有找到片段,matrix4通常没有很好的文档记录。所以,如果其他人有这个问题,这就是我最终使用的原因

首先,这里有一篇关于它背后的数学以及如何使用matrix4的精彩文章。

在我的演示中,我使用了一个箭头。由于顺序很重要,我在(0,0(处绘制,然后绕z轴旋转,最后将尖端移动到所需的位置。

Path _getArrow (Offset offset, double alpha) {
Path a = Path();
a.moveTo(ARROWSIZE, - ARROWSIZE);
a.lineTo(0, 0);
a.lineTo(ARROWSIZE, ARROWSIZE);
final translateM = Float64List.fromList([
1,             0,     0, 0,
0,             1,     0, 0,
0,             0,     1, 0,
offset.dx, offset.dy, 0, 1]
);
final rotateM = Float64List.fromList([
cos(alpha), sin(alpha), 0, 0,
-sin(alpha), cos(alpha), 0, 0,
0,         0,       1, 0,
0,         0,       0, 1]
);
final b = a.transform(rotateM);
final c = b.transform(translateM);
return c;
}

相关内容

  • 没有找到相关文章

最新更新