首页 > 其他分享 >背景旋转

背景旋转

时间:2024-03-26 12:23:40浏览次数:23  
标签:canvas const 背景 ctx 旋转 points radius Math

以下是一个简单的示例,说明如何实现类似的效果:

  1. 创建一个HTML文件,并添加一个<canvas>元素:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Abstract Shape</title>
</head>
<body>
    <canvas id="myCanvas" width="400" height="400"></canvas>
    <script src="script.js"></script>
</body>
</html>
  1. 在同一个目录下创建一个名为script.js的JavaScript文件,并编写以下代码:
const canvas = document.getElementById('myCanvas');
const ctx = canvas.getContext('2d');

// 定义一些点的位置
const points = [
    { x: 100, y: 100 },
    { x: 150, y: 75 },
    { x: 200, y: 100 },
    // 添加更多点...
];

// 绘制连接这些点的线段
function drawShape() {
    ctx.clearRect(0, 0, canvas.width, canvas.height);
    ctx.beginPath();
    for (let i = 0; i < points.length; i++) {
        const p = points[i];
        if (i === 0) {
            ctx.moveTo(p.x, p.y);
        } else {
            ctx.lineTo(p.x, p.y);
        }
    }
    ctx.closePath();
    ctx.stroke();
}

// 更新点的位置以模拟旋转效果
function updatePoints() {
    for (let i = 0; i < points.length; i++) {
        const angle = (i / points.length) * Math.PI;
        const radius = Math.random() * 30 + 60;
        const newX = Math.cos(angle) * radius + 200;
        const newY = Math.sin(angle) * radius + 200;
        points[i].x += (newX - points[i].x) * 0.1;
        points[i].y += (newY - points[i].y) * 0.1;
    }
}

setInterval(() => {
    updatePoints();
    drawShape();
}, 30);

这段代码首先定义了一些点的位置,然后绘制了连接这些点的线段。通过定期更新点的位置并重新绘制形状,我们可以模拟出旋转的效果。

标签:canvas,const,背景,ctx,旋转,points,radius,Math
From: https://www.cnblogs.com/luo9tian/p/18096385

相关文章

  • Android 9.0 Launcher3定制化之folder文件夹去掉背景功能实现
    1.概述在9.0的系统产品开发rom定制中,在Launcher3的开发中,在Launcher3的folder文件夹中,在进入文件夹由于背景是白色的,不是很美观,所以要求去掉白色背景,要求背景换成透明的所以需要从folder文件夹流程中,找到相关的背景设置的地方,去掉相关背景的功能就可以了2.Launcher3folder......
  • 变形元素旋转css阴影
    一、css3transform变换translate(x,y)设置盒子的位移scale(x,y)设置盒子缩放roate(dog)设置盒子的旋转skew(x-angle,y-angle)设置盒子的斜切perspective 设置透视距离transform-styoleflat:preserved-3d设置盒子是否按3d空间显示translateXtranslateYtranslateZ设......
  • 添加的影像批量调整背景或显示方法
    很多时候,批量添加了tif影像,由于边缘黑边,加载后有压盖,需要将背景色调整为透明,可以列表属性——设置背景色000,但只能单张修改,很麻烦这时可以打开菜单——窗口——影像分析功能选中列表中的影像后,即可批量设置相关属性。 当然,本方法只是显示变化,不对影像造成改变,如要一劳永逸,......
  • html网页制作-3D旋转卡片
    网页制作-3D旋转卡片两种旋转卡片的制作旋转卡片(1)代码html代码<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0">......
  • Three.js 中的 OrbitControls 是一个用于控制相机围绕目标旋转以及缩放、平移等操作的
    demo案例Three.js中的OrbitControls是一个用于控制相机围绕目标旋转以及缩放、平移等操作的控制器。下面是它的详细讲解:构造函数:OrbitControls(object:Camera,domElement?:HTMLElement)object:THREE.Camera实例,控制器将围绕此对象进行操作,例如相机。domElement......
  • 【LeetCode-153.寻找旋转排序数组的最小值】
    已知一个长度为 n 的数组,预先按照升序排列,经由 1 到 n 次 旋转 后,得到输入数组。例如,原数组 nums=[0,1,2,4,5,6,7] 在变化后可能得到:若旋转 4 次,则可以得到 [4,5,6,7,0,1,2]若旋转 7 次,则可以得到 [0,1,2,4,5,6,7]注意,数组 [a[0],a[1],a[2],...,a[n-1......
  • 新人学习笔记之(CSS背景和列表)
    一、CSS背景    1.background-color        1)background-color:颜色ltransparent(black)颜色值(颜色名|rgb|十六进制)背景区包括内容内边距,边框,不包括外边距.box1{background-color:red;}    2.background-image     ......
  • LeetCodeHot100 二分查找 35. 搜索插入位置 74. 搜索二维矩阵 34. 在排序数组中查
    35.搜索插入位置https://leetcode.cn/problems/search-insert-position/description/?envType=study-plan-v2&envId=top-100-likedpublicintsearchInsert(int[]nums,inttarget){intleft=0;intright=nums.length-1;while(left<......
  • css背景样式
    background-image:url(../a.jpg);设置背景图片urlbackground-repeat设置显示方式repeat-x水平方向平铺repeat-y垂直方向平铺repeat:水平和垂直方向平铺round:自动缩放铺满整个容器space:背景等比例缩放铺满整个背景,可能会有空缺background-position设置背景的显示位置,......
  • vue3使用qrcodejs2-fix生成背景透明的二维码
    qrcodejs官方仓库:GitHub-davidshimjs/qrcodejs:Cross-browserQRCodegeneratorforjavascriptqrcodejs2-fix 是一个用于生成QR码的JavaScript库,使用的时候先安装,然后通过设置前景色和背景色可以控制显示的二维码效果。想生成透明背景的二维码也可以,我通过下面配置前景......