Toggle navigation
在线编辑器
在线代码
文本比较
jQuery下载
前端库
在线手册
登录/注册
下载代码
html
css
js
分享到微信朋友圈
X
html
css
body { background-color: #262626; overflow: hidden }
JavaScript
class Courbe { constructor( firstControlX, firstControlY, secondControlX, secondControlY, pointX, pointY ) { this.firstControlX = firstControlX; this.firstControlY = firstControlY; this.secondControlX = secondControlX; this.secondControlY = secondControlY; this.pointX = pointX; this.pointY = pointY; } } class Blossom { constructor(radius) { this.courbesNumber = 48; // should be a multiple of 4 this.courbes = []; this.courbesAngles = []; this.angle = (Math.PI * 2) / this.courbesNumber; this.radius = radius; this.radiusAjust = 20; } computeAngles() { let fullCurveCounter = 0; for (let i = 0; i < this.courbesNumber; i++) { let firstControlTheta, secondControlTheta, pointTheta; let startTheta = this.angle * i; let middleTheta = startTheta + this.angle / 2; let stopTheta = this.angle * (i + 1); if (i % 2 == 0) { firstControlTheta = middleTheta; secondControlTheta = stopTheta * 0.995; pointTheta = stopTheta; } else { firstControlTheta = startTheta * 1.005; secondControlTheta = middleTheta; pointTheta = stopTheta; } let angles = [ cos(firstControlTheta), sin(firstControlTheta), cos(secondControlTheta), sin(secondControlTheta), cos(pointTheta), sin(pointTheta) ]; this.courbesAngles[i] = angles; } } render() { courbeIncrement = courbeIncrement + 0.0006; let courbeVariator = (cos(courbeIncrement) * this.radius) / 200; let fullCurveCounter = 0; for (let i = 0; i < this.courbesNumber; i++) { let firstControlRadiusAjust, secondControlRadiusAjust, pointRadius, radiusPlusAjust; let ajust = this.radiusAjust; ajust = ajust * courbeVariator; if (fullCurveCounter % 2 == 0) { ajust = ajust * -1; } radiusPlusAjust = this.radius + ajust; firstControlRadiusAjust = radiusPlusAjust; secondControlRadiusAjust = radiusPlusAjust; if (i % 2 == 0) { pointRadius = radiusPlusAjust; } else { fullCurveCounter++; pointRadius = this.radius; } this.courbes[i] = new Courbe( this.courbesAngles[i][0] * firstControlRadiusAjust, this.courbesAngles[i][1] * firstControlRadiusAjust, this.courbesAngles[i][2] * secondControlRadiusAjust, this.courbesAngles[i][3] * secondControlRadiusAjust, this.courbesAngles[i][4] * pointRadius, this.courbesAngles[i][5] * pointRadius ); } beginShape(); vertex( this.courbes[this.courbes.length - 1].pointX, this.courbes[this.courbes.length - 1].pointY ); for (let i = 0; i < this.courbes.length; i++) { bezierVertex( this.courbes[i].firstControlX, this.courbes[i].firstControlY, this.courbes[i].secondControlX, this.courbes[i].secondControlY, this.courbes[i].pointX, this.courbes[i].pointY ); } endShape(); } } const blossomNumber = 21; let blossomRadius; let blossoms = []; let courbeIncrement = 0; let rotation = 1; function setup() { blossomRadius = windowWidth / blossomNumber / 2; createCanvas(windowWidth, windowHeight); stroke("rgb(170,170,255)"); strokeWeight(1); noFill(); for (let i = 0; i < blossomNumber; i++) { blossoms[i] = new Blossom(i * blossomRadius); } for (let i = 0; i < blossomNumber; i++) { blossoms[i].computeAngles(); } } function draw() { translate(windowWidth / 2, windowHeight / 2); background("rgba(0, 0, 215,0.1)"); for (let i = 0; i < blossomNumber; i++) { rotation = rotation + 0.000002 * i; rotate(rotation); blossoms[i].render(); } } function windowResized() { resizeCanvas(windowWidth, windowHeight); }
粒子
时间
文字
hover
canvas
3d
游戏
音乐
火焰
水波
轮播图
鼠标跟随
动画
css
加载动画
导航
菜单
按钮
滑块
tab
弹出层
统计图
svg
×
Close
在线代码下载提示
开通在线代码永久免费下载,需支付20jQ币
开通后,在线代码模块中所有代码可终身免费下!
您已开通在线代码永久免费下载,关闭提示框后,点下载代码可直接下载!
您已经开通过在线代码永久免费下载
对不起,您的jQ币不足!可通过发布资源 或
直接充值获取jQ币
取消
开通下载
<!doctype html> <html> <head> <meta charset="utf-8"> <title>贝塞尔曲线漩涡-jq22.com</title> <script src="https://www.jq22.com/jquery/jquery-1.10.2.js"></script> <style>
</style> </head> <body>
<script>
</script>
</body> </html>
2012-2021 jQuery插件库版权所有
jquery插件
|
jq22工具库
|
网页技术
|
广告合作
|
在线反馈
|
版权声明
沪ICP备13043785号-1
浙公网安备 33041102000314号