0%

Flutter实现自旋转的伪3D球

Flutter实现自旋转的伪3D球

一个自动旋转的仿3D球体。基于https://github.com/al4fun/3DBall,进行二次封装。

特性

  • 支持手动/自动转动
  • 支持暂停/继续转动控制
  • 支持高亮处理部分标签

思路

  • 建立了一个虚拟的3d坐标系:坐标原点位于球心,Z轴垂直于屏幕并指向屏幕外。根据球面方程将需要绘制的点均匀散布到整个球面上。
  • 由点坐标可以得到点在XY平面上的投影位置;根据点到球体最前方垂直切面的距离,计算点的尺寸和颜色值(距离越远,尺寸越小,颜色越暗淡)。
  • 由球体旋转的方向和位移可以得到球体的旋转轴矢量和旋转角,进而可由罗德里格旋转公式计算出旋转后点的坐标。

Getting Started

1
2
3
4
5
6
7
8
9
10
RBallView(
isAnimate: provider.curIndex == 0,
isShowDecoration: false,
mediaQueryData: MediaQuery.of(context),
keywords: snapshot.data,
highlight: [snapshot.data[0]],
onTapRBallTagCallback: (RBallTagData data) {
print('点击回调:${data.tag}');
},
),

源码和Demo地址

https://github.com/rzrobert/RBallView