使用two.js生成的卫星环绕动画效果
来源:GBin1.com
two.js是一个帮助你实现绘图和动画效果的类库,同时支持三种前端绘图实现:
- webgl
- svg
- 2d画布
使用这个类库,可以方便的支持这三种不同的实现,你只需要设置参数:Two.Types.canvas, Two.Types.svg, or Two.Types.webgl
下面是使用two.js生成的一个动画效果:
http://www.gbtags.com/gb/debug/592abb4d-6449-4654-a824-0232c0c3b110.htm
相关JS代码如下:
var el = document.getElementById("main"), two = new Two({ width: '800', height: '600' }); two.appendTo(el); var earthAngle = 0, moonAngle = 0, distance = 30, radius = 50, padding = 100, orbit = 200, offset = orbit + padding, orbits = two.makeGroup(); var earthOrbit = two.makeCircle(offset, offset, orbit); earthOrbit.noFill(); earthOrbit.linewidth = 2; earthOrbit.stroke = "#EFEFEF"; orbits.add(earthOrbit); two.update(); var pos = getPositions(earthAngle++, orbit), earth = two.makeCircle(pos.x + offset, pos.y + offset, radius); earth.stroke = "#444"; earth.linewidth = 3; earth.fill = "#CCCCCC"; var moonOrbit = two.makeCircle(earth.translation.x, earth.translation.y, radius + distance); moonOrbit.noFill(); moonOrbit.linewidth = 2; moonOrbit.stroke = "#ccc"; orbits.add(moonOrbit); var pos = getPositions(moonAngle, radius + distance), moon = two.makeCircle(earth.translation.x + pos.x, earth.translation.y + pos.y, radius / 4); moonAngle += 5; moon.fill = "#474747"; two.bind("update", function (frameCount) { var pos = getPositions(earthAngle++, orbit); earth.translation.x = pos.x + offset; earth.translation.y = pos.y + offset; var moonPos = getPositions(moonAngle, radius + distance); moon.translation.x = earth.translation.x + moonPos.x; moon.translation.y = earth.translation.y + moonPos.y; moonAngle += 5; moonOrbit.translation.x = earth.translation.x; moonOrbit.translation.y = earth.translation.y; }); function getPositions(angle, orbit) { return { x: Math.cos(angle * Math.PI / 180) * orbit, y: Math.sin(angle * Math.PI / 180) * orbit }; } two.play();
网站地址:http://jonobr1.github.io/two.js
via 极客标签
欢迎访问GBin1.com
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架