w46*_*461 1 graphics flutter flutter-layout
我试图旋转一些路径,但没有找到片段,并且一般来说,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;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2087 次 |
| 最近记录: |