wtc-math模拟橡皮筋中小球跳动带动橡皮圈变形动画效果代码
代码语言:html
所属分类:动画
代码描述:wtc-math模拟橡皮筋中小球跳动带动橡皮圈变形动画效果代码
代码标签: wtc-math 模拟 橡皮筋 小球 跳动 变形 动画
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html> <html lang="en" > <head> <meta charset="UTF-8"> <style> body { margin: 0; overflow: hidden; } canvas { background: #E6E6E6; /* image-rendering: pixelated; */ width: 100vw; } </style> </head> <body translate="no"> <script type="module"> import { Vec2 } from "https://esm.sh/wtc-math"; import { Pane } from "//repo.bfw.wiki/bfwrepo/js/tweakpane.4.0.3.js"; console.clear(); // --- SETTINGS --- const settings = { numPoints: 8, padding: 100, ropeEnds: .5, dimensions: new Vec2(window.innerWidth, window.innerHeight), dpr: 2, ballRadius: window.innerWidth / 30, rafid: 0, lineWidth: window.innerWidth / 80, linePadding: 0, anchorPadding: 100, drawPoints: true, debug: false, speed: 1, foreground: "#EEE", background: "#33333A" }; // --- PANE --- const pane = new Pane(); const f1 = pane.addFolder({ title: "Config", expanded: false }); const pointSetting = f1.addBinding(settings, "numPoints", { step: 1, min: 1, max: 50 }); pointSetting.on('change', e => { const diff = e.value - points.length; if (diff < 0) { points.splice(diff, Math.abs(diff)); } else if (diff > 0) { points.push(...new Array(diff). fill(null). map( makePoint)); } }); f1.addBinding(settings, "anchorPadding", { min: -100, max: 200 }); f1.addBinding(settings, "ropeEnds", { min: .3, max: .7 }); const radiusSetting = f1.addBinding(settings, "ballRadius", { min: 0, max: 100 }); const linewidthSetting = f1.addBinding(settings, "lineWidth", { min: 0, max: 30 }); const linepaddinSgetting = f1.addBinding(settings, "linePadding", { min: 0, max: 30 }); function metricChange() { settings.lineDistance = settings.ballRadius + settings.lineWidth / 2 + settings.linePadding; } radiusSetting.........完整代码请登录后点击上方下载按钮下载查看
网友评论0