tween

package
v0.9.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 28, 2026 License: Apache-2.0 Imports: 1 Imported by: 0

Documentation

Overview

Package tween 提供缓动函数与贝塞尔曲线插值原语,用于平滑动画和轨迹模拟。

适用:UI 动画(弹出/淡入)、赛车漂移轨迹、RPG 飞弹抛物线、镜头追踪、 状态同步中的客户端预测平滑。

两大组件:

  • Ease 函数:输入 t∈[0,1],输出 [0,1] 的变换后进度。提供业界标准的 EaseIn/EaseOut/EaseInOut 系列(Quad、Cubic、Quart、Quint、Sine、Expo、 Circ、Back、Elastic、Bounce)。
  • 贝塞尔曲线:二次(Quadratic)与三次(Cubic)Bézier,支持求值、 弧长近似、等速采样。

值类型,无状态,并发安全。

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func EaseInBack

func EaseInBack(t float64) float64

func EaseInBounce

func EaseInBounce(t float64) float64

func EaseInCirc

func EaseInCirc(t float64) float64

func EaseInCubic

func EaseInCubic(t float64) float64

func EaseInElastic

func EaseInElastic(t float64) float64

func EaseInExpo

func EaseInExpo(t float64) float64

func EaseInOutBack

func EaseInOutBack(t float64) float64

func EaseInOutBounce

func EaseInOutBounce(t float64) float64

func EaseInOutCirc

func EaseInOutCirc(t float64) float64

func EaseInOutCubic

func EaseInOutCubic(t float64) float64

func EaseInOutElastic

func EaseInOutElastic(t float64) float64

func EaseInOutExpo

func EaseInOutExpo(t float64) float64

func EaseInOutQuad

func EaseInOutQuad(t float64) float64

func EaseInOutQuart

func EaseInOutQuart(t float64) float64

func EaseInOutQuint

func EaseInOutQuint(t float64) float64

func EaseInOutSine

func EaseInOutSine(t float64) float64

func EaseInQuad

func EaseInQuad(t float64) float64

func EaseInQuart

func EaseInQuart(t float64) float64

func EaseInQuint

func EaseInQuint(t float64) float64

func EaseInSine

func EaseInSine(t float64) float64

func EaseOutBack

func EaseOutBack(t float64) float64

func EaseOutBounce

func EaseOutBounce(t float64) float64

func EaseOutCirc

func EaseOutCirc(t float64) float64

func EaseOutCubic

func EaseOutCubic(t float64) float64

func EaseOutElastic

func EaseOutElastic(t float64) float64

func EaseOutExpo

func EaseOutExpo(t float64) float64

func EaseOutQuad

func EaseOutQuad(t float64) float64

func EaseOutQuart

func EaseOutQuart(t float64) float64

func EaseOutQuint

func EaseOutQuint(t float64) float64

func EaseOutSine

func EaseOutSine(t float64) float64

func Linear

func Linear(t float64) float64

Linear 线性(无缓动)。

Types

type CubicBezier

type CubicBezier struct {
	P0, P1, P2, P3 Vec2
}

CubicBezier 三次贝塞尔曲线:P0 起点,P1/P2 控制点,P3 终点。 B(t) = (1-t)³P0 + 3(1-t)²tP1 + 3(1-t)t²P2 + t³P3

func (CubicBezier) ArcLength

func (b CubicBezier) ArcLength(segments int) float64

ArcLength 用 N 段线性近似估计曲线弧长。segments <= 0 时默认 64。

func (CubicBezier) At

func (b CubicBezier) At(t float64) Vec2

At 求值:t∈[0,1] 返回曲线上的点。

func (CubicBezier) EvenSample

func (b CubicBezier) EvenSample(n int) []Vec2

EvenSample 等弧长采样:返回 n+1 个均匀分布在曲线上的点(含首尾)。 用于匀速运动(避免原始 t 参数化带来的变速感)。n <= 0 时返回首尾两点。

func (CubicBezier) Tangent

func (b CubicBezier) Tangent(t float64) Vec2

Tangent 返回参数 t 处的切线方向(未归一化)。

type EaseFunc

type EaseFunc func(t float64) float64

EaseFunc 缓动函数签名:t∈[0,1] → [0,1]。

type QuadraticBezier

type QuadraticBezier struct {
	P0, P1, P2 Vec2
}

QuadraticBezier 二次贝塞尔曲线:P0 为起点,P1 为控制点,P2 为终点。 B(t) = (1-t)²P0 + 2(1-t)tP1 + t²P2

func (QuadraticBezier) At

func (b QuadraticBezier) At(t float64) Vec2

At 求值:t∈[0,1] 返回曲线上的点。

func (QuadraticBezier) Tangent

func (b QuadraticBezier) Tangent(t float64) Vec2

Tangent 返回参数 t 处的切线方向(未归一化)。

type Vec2

type Vec2 struct {
	X, Y float64
}

Vec2 二维浮点向量(轻量,仅用于曲线计算)。

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL