自定义旋转指示器(Spinner)与角度分段动画

自定义旋转指示器(Spinner)与角度分段动画
几何画板及绘图内容加载中,请稍等……
2021-01-22 22:27
该范例演示如何用自定义“旋转指示器”持续生成带有分段高亮的旋转效果,并可通过缓动(easing)与定时器控制旋转速度与落点。 核心数学概念包括:角度与圆周运动的关系(角度随时间变化)、分段扇区的离散化(将圆周划分为若干区间)、利用条件判断实现状态切换(是否开始/是否已旋转到终点)、以及用参数/序列驱动连续运动与可视化。 作图要点:基于GeoGebra的几何对象与控制对象实现动画。构造摘要中涉及的关键命令/对象包括:Point用于设置旋转中心spinnerCenter与关键点;Sequence用于生成旋转所需的扇区或取值列表spinnerValues、spinnerSections;Angle用于计算当前角度currentAngle并形成旋转位置;If与Element用于在旋转过程中根据条件更新高亮与状态(highlighted、started、spun、moveAllow);Textfield用于显示或配置旋转相关文本spinnerText;以及通过计时器/事件对象spinTimer、spinMove、spinnerStart、spinnerChange、spinnerEnd与参数spinnerEasing、spinnerRadius、spinnerLocation、spinner、button1等完成“从起始到结束”的动画驱动。 适合学段:中学信息技术/数学可视化课程与大学入门(如离散动画、几何建模、程序化建模)。也适用于讲解概率与统计中的“旋转随机机制/抽样直观”(如将扇区视为离散结果)以及几何变换与参数化动画的教学演示。

GeoGebra 命令及参数

  1. Point({0, 0}) → spinnerCenter
  2. Sequence(Sector[Circle[spinnerCenter, spinnerRadius], ((spinnerRadius * cos(((i * 2) * π / Length[spinnerValues]))), (spinnerRadius * sin(((i * 2) * π / Length[spinnerValues])))), ((spinnerRadius * cos((((i + 1) * 2) * π / Length[spinnerValues]))), (spinnerRadius * sin((((i + 1) * 2) * π / Length[spinnerValues]))))], i, 0, Length[spinnerValues] - 1) → spinnerSections
  3. Angle(spinner) → currentAngle
  4. If(ceil((currentAngle / ((2 * π)) * Length[spinnerValues])) ≟ 0, Length[spinnerValues], ceil((currentAngle / ((2 * π)) * Length[spinnerValues]))) → spinnerLocation
  5. Element(spinnerSections, spinnerLocation) → highlighted
  6. Textfield(spinnerValues) → InputBox1
  7. Sequence(Text[Element[spinnerValues, i], TextAdjuster + (((spinnerRadius * 0.7) * cos(π / Length[spinnerValues] + (((i - 1) * 2) * π / Length[spinnerValues]))), ((spinnerRadius * 0.7) * sin(π / Length[spinnerValues] + (((i - 1) * 2) * π / Length[spinnerValues]))))], i, 1, Length[spinnerValues]) → spinnerText

AI 绘图提示语参考

以一个圆的旋转中心为基点,画出若干扇区:先给定中心与半径,在圆上按等分把扇区端点连接成对应的圆周分段。再画一个与中心同心的指示器元素,使其角度随时间从起始方向连续变化,用当前角度映射到扇区序号,并在动画过程中高亮与该序号对应的扇区,同时在圆周附近放置一组文字,逐一显示每个扇区对应的数值或标签,文字位置沿半径方向偏移以避免重叠。最后整体形成可理解的旋转指示器示意。
以上提示语为根据原始绘图命令整理而来,仅供参考。