当前位置:首页 > JavaScript

js实现玫瑰

2026-02-01 03:19:58JavaScript

使用Canvas绘制玫瑰曲线

在JavaScript中,可以通过Canvas绘制玫瑰曲线(Rose Curve)。玫瑰曲线是极坐标下的一种数学曲线,方程为 \( r = a \cdot \cos(k \theta) \) 或 \( r = a \cdot \sin(k \theta) \)。

const canvas = document.createElement('canvas');
canvas.width = 400;
canvas.height = 400;
document.body.appendChild(canvas);

const ctx = canvas.getContext('2d');
ctx.translate(canvas.width / 2, canvas.height / 2);

function drawRose(k, a, color) {
    ctx.beginPath();
    for (let theta = 0; theta < Math.PI * 2; theta += 0.01) {
        const r = a * Math.cos(k * theta);
        const x = r * Math.cos(theta) * 50;
        const y = r * Math.sin(theta) * 50;
        if (theta === 0) {
            ctx.moveTo(x, y);
        } else {
            ctx.lineTo(x, y);
        }
    }
    ctx.strokeStyle = color;
    ctx.stroke();
}

drawRose(5, 1, 'red');

参数说明

  • \( k \):控制花瓣的数量和形状。若为整数,表示花瓣数;若为分数,形状更复杂。
  • \( a \):控制曲线的大小。
  • 调整 theta 的步长(如 0.01)可改变曲线的平滑度。

动态生成玫瑰

通过动画循环动态改变参数,可生成动态玫瑰效果:

let angle = 0;
function animate() {
    ctx.clearRect(-200, -200, 400, 400);
    drawRose(5, Math.sin(angle) * 2 + 3, 'red');
    angle += 0.05;
    requestAnimationFrame(animate);
}
animate();

使用SVG绘制玫瑰

SVG也可实现玫瑰曲线,适合矢量图形场景:

js实现玫瑰

<svg width="400" height="400" viewBox="-200 -200 400 400">
    <path id="rose" fill="none" stroke="blue" stroke-width="1"/>
</svg>

<script>
    const svgPath = document.getElementById('rose');
    let pathData = '';
    const k = 3, a = 100;
    for (let theta = 0; theta < Math.PI * 8; theta += 0.05) {
        const r = a * Math.sin(k * theta);
        const x = r * Math.cos(theta);
        const y = r * Math.sin(theta);
        pathData += (theta === 0 ? 'M' : 'L') + x + ' ' + y + ' ';
    }
    svgPath.setAttribute('d', pathData);
</script>

标签: 玫瑰js
分享给朋友:

相关文章

js实现vue

js实现vue

Vue.js 的基本实现方法 在 JavaScript 中实现 Vue.js 的功能,可以通过直接引入 Vue 库或使用现代构建工具(如 Vite 或 Webpack)。以下是几种常见的实现方式:…

js实现

js实现

实现 JavaScript 功能的方法 在 JavaScript 中实现特定功能通常涉及多个步骤。以下是常见的实现方法: 基础语法和变量声明 使用 let 或 const 声明变量: let co…

js实现轮播

js实现轮播

实现轮播图的基本思路 轮播图的核心逻辑是通过定时切换展示的图片或内容,通常结合左右滑动按钮和指示器(小圆点)增强交互性。以下是基于原生JavaScript的实现方法。 HTML结构 构建轮播图的HT…

jquery.js

jquery.js

jQuery 是一个快速、简洁的 JavaScript 库,简化了 HTML 文档遍历、事件处理、动画设计和 Ajax 交互等操作。以下是关于 jQuery.js 的核心信息和使用方法: 获取 jQ…

js实现tab选项卡切换

js实现tab选项卡切换

实现Tab选项卡切换的JavaScript方法 使用纯JavaScript实现Tab切换功能,可以通过监听点击事件动态切换内容显示状态。以下是两种常见实现方式: 基础DOM操作实现 // 获取所有…

js实现祖玛

js实现祖玛

实现祖玛游戏的核心思路 祖玛游戏的核心玩法是发射彩色珠子,形成三个或以上相同颜色的珠子即可消除。以下是使用JavaScript实现的基本框架。 游戏初始化 创建画布并初始化游戏状态: const…