我试图旋转一些路径,但没有找到片段,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;
}