当前位置:首页 > 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) \)。

js实现玫瑰

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)可改变曲线的平滑度。

动态生成玫瑰

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

js实现玫瑰

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也可实现玫瑰曲线,适合矢量图形场景:

<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 实现倒计时

js 实现倒计时

实现倒计时的基本方法 使用 JavaScript 实现倒计时可以通过 setInterval 或 setTimeout 结合日期计算来完成。以下是两种常见实现方式。 使用 setInterval 实…

js实现论坛

js实现论坛

实现论坛的基本功能 使用JavaScript实现一个论坛需要结合前端和后端技术。前端可以使用React、Vue或Angular等框架,后端可以选择Node.js配合Express或Koa框架。数据库可…

js实现点击显示和隐藏

js实现点击显示和隐藏

实现点击显示和隐藏的JavaScript方法 使用classList.toggle切换类名 通过添加/移除CSS类控制元素的显示与隐藏,需提前在CSS中定义隐藏样式(如display: none)。…

js实现vue路由

js实现vue路由

Vue 路由的基本实现 在 Vue.js 中实现路由功能通常使用 Vue Router 库。Vue Router 是 Vue.js 官方的路由管理器,用于构建单页面应用(SPA)。 安装 Vue R…

js分页实现

js分页实现

分页的基本原理 分页的核心是通过计算当前页码和数据偏移量,从服务器或本地数据中截取对应范围的数据进行展示。通常需要以下参数:当前页码(currentPage)、每页条数(pageSize)、总数据量(…

js 实现拖拽

js 实现拖拽

实现拖拽的基本步骤 在JavaScript中实现拖拽功能需要监听几个关键事件:mousedown、mousemove和mouseup。以下是实现的基本逻辑。 监听目标元素的mousedown事件,记…