
SEO关键词:数学曲线加载动画、Loading动画库、HTML加载动画、CSS动画效果、JavaScript动画、Lissajous曲线、玫瑰曲线、前端动画库、UI加载效果、纯JS动画
大家好 这里是「代码简单说」`,欢迎大家关注同名公众号,不定时更新更多实用有趣的教程 也欢迎大家在评论区一起讨论交流!~
前几天在 GitHub 上发现了一个非常有意思的前端动画项目,它没有依赖任何框架,也没有引入 Canvas 动画库,而是利用各种数学曲线公式生成炫酷的 Loading 效果。
很多开发者平时接触的加载动画大多是旋转圆圈、骨架屏或者进度条,但实际上数学曲线也能创造出非常具有科技感和艺术感的动态效果。
今天就来分享这个开源项目——Math Curve Loaders。

https://github.com/Paidax01/math-curve-loaders
Math Curve Loaders 是一个基于数学曲线构建的 Loading 动画展示库。
项目使用:
纯原生实现。
通过不同的参数方程生成各种轨迹路径,再让粒子沿着路径运动,从而形成各种独特的加载动画效果。
项目不仅提供动画展示,还支持:
非常适合:
项目首页会展示多个数学曲线动画。
包括:
曲线类型 | 数学领域 |
|---|---|
Rose Curve | 玫瑰曲线 |
Lissajous Curve | 李萨如曲线 |
Cardioid | 心形线 |
Hypotrochoid | 内旋轮线 |
Cassini Oval | 卡西尼卵形线 |
Fourier Path | 傅里叶路径 |
Original Particle Trail | 原始粒子轨迹 |
每个动画都可以点击查看详情。
详情弹窗中会展示:
对于学习数学可视化非常方便。
项目结构十分简洁:
math-curve-loaders
│
├── index.html
├── style.css
├── main.js
│
├── original.html
├── original.css
└── original.js各文件作用如下:
文件 | 说明 |
|---|---|
index.html | 动画展示入口 |
style.css | 页面样式与弹窗样式 |
main.js | 动画引擎与曲线定义 |
original.html | 原始加载动画演示 |
original.css | 原始样式 |
original.js | 原始动画逻辑 |
项目核心思想其实非常简单:
利用参数方程生成坐标点。
例如:
for(let t = 0; t < Math.PI * 2; t += 0.01){
const x = Math.cos(t)
const y = Math.sin(t)
points.push({x,y})
}得到圆形轨迹后。
粒子沿着轨迹循环移动:
particle.x = points[index].x
particle.y = points[index].y这样就形成了动态加载动画。
最简单的情况:
x = r cos(t)
y = r sin(t)实现:
function circle(t,r){
return {
x:r*Math.cos(t),
y:r*Math.sin(t)
}
}效果:
●●●●●●●
● ●
● ●
●●●●●●●虽然简单,但也是绝大多数 Loading 动画的基础。
项目中最漂亮的动画之一。
公式:
r = a cos(kθ)转换为直角坐标:
x = a cos(kθ) cos(θ)
y = a cos(kθ) sin(θ)实现:
function rose(t,a,k){
const r = a*Math.cos(k*t)
return {
x:r*Math.cos(t),
y:r*Math.sin(t)
}
}当:
k=4会形成八瓣花。
效果类似:
*
* *
* * *
* *
*非常适合作为:
李萨如曲线是前端动画领域经常使用的一类轨迹。
公式:
x = A sin(at + δ)
y = B sin(bt)实现:
function lissajous(t){
return {
x:120*Math.sin(3*t+Math.PI/2),
y:120*Math.sin(2*t)
}
}不同参数会产生不同图案。
例如:
a:b |
|---|
1:1 |
2:1 |
3:2 |
5:4 |
都能生成完全不同的轨迹。
经典数学曲线。
公式:
r = a(1-cosθ)实现:
function cardioid(t,a){
const r = a*(1-Math.cos(t))
return {
x:r*Math.cos(t),
y:r*Math.sin(t)
}
}生成效果:
** **
****** *
*******
*****
***
*非常适合:
这种曲线经常出现在机械设计与几何学中。
公式:
x=(R-r)cos(t)+d cos((R-r)t/r)
y=(R-r)sin(t)-d sin((R-r)t/r)实现:
function hypotrochoid(t,R,r,d){
return {
x:(R-r)*Math.cos(t)+
d*Math.cos((R-r)*t/r),
y:(R-r)*Math.sin(t)-
d*Math.sin((R-r)*t/r)
}
}生成效果非常复杂。
视觉上类似:
∞∞∞∞∞∞
∞ ∞
∞∞∞∞∞∞具有强烈科技感。
卡西尼卵形线。
属于数学分析中的经典曲线。
公式:
(x²+y²)²−2a²(x²−y²)=b⁴−a⁴这种曲线可以形成:
多种形态。
作为 Loading 动画时辨识度极高。
项目中还加入了傅里叶级数生成的路径。
原理:
f(t)=Σ an sin(nt)+bn cos(nt)实现:
let x = 0
let y = 0
for(let n=1;n<=10;n++){
x += ax[n]*Math.cos(n*t)
y += ay[n]*Math.sin(n*t)
}通过叠加多个频率。
可以生成极其复杂的动态轨迹。
项目采用统一动画引擎。
大致流程:
requestAnimationFrame
↓
更新参数 t
↓
计算曲线坐标
↓
更新粒子位置
↓
绘制轨迹
↓
下一帧核心代码:
function animate(){
time += speed
updateCurve(time)
render()
requestAnimationFrame(animate)
}这种实现方式具有:
等优点。
○○○○○特点:
✿∞♥✧特点:
项目没有使用:
完全依赖:
HTML
CSS
JavaScript因此具有:
指标 | 表现 |
|---|---|
学习成本 | 低 |
部署难度 | 低 |
文件体积 | 小 |
可维护性 | 高 |
二次开发 | 容易 |
对于中小型项目来说完全够用。
数据加载:
Loading Dashboard...推理动画:
AI Thinking...图表加载:
Generating Report...品牌展示动画:
Welcomehttps://paidax01.github.io/math-curve-loaders/https://github.com/paidax01/math-curve-loadersMath Curve Loaders 将数学公式与前端动画结合在一起,通过玫瑰曲线、Lissajous 曲线、心形线、内旋轮线、Cassini Oval 和 Fourier Path 等经典数学模型,实现了大量具有艺术感和科技感的 Loading 动画。
相比传统旋转圆圈式加载动画,这种基于参数方程的实现方式不仅视觉效果更丰富,而且扩展性极强。只要修改曲线公式,就能快速创造出全新的动画形态。
如果你正在开发:
那么这个项目非常值得研究和借鉴。