当前位置: 首页 > news >正文

心形公式实现

代码关键部分解释

  1. Canvas基础配置

    • 将Canvas原点移到中心(ctx.translate),解决Canvas默认原点在左上角的问题,方便绘制对称爱心;
    • 设置黑色背景,还原剧中的暗黑氛围感,让彩色爱心更突出。
  2. 心形公式实现

    • 核心是笛卡尔心形公式 $x^2 + (y - \sqrt{|x|})^2 = 1$,通过getHeartY(x)函数计算对应y值;
    • 计算上下两部分y值(y1y2),实现爱心的对称结构。
  3. 动态绘制与渐变

    • progress变量控制绘制进度,通过requestAnimationFrame实现逐帧动画,模拟剧中“逐步生成爱心”的效果;
    • 颜色渐变:根据x轴位置计算RGB值,从浅粉色(#ff99cc)平滑过渡到深红色(#ff0033)。
  4. 坐标系适配

    • Canvas默认y轴向下,因此在绘制时给y值加负号(-y1 * scale),让爱心正立显示;
    • 通过scale缩放系数,将公式的(-1,1)范围映射到Canvas的可视区域。

运行说明

  1. 将代码复制到文本编辑器(如记事本、VS Code);
  2. 保存为heart.html(注意文件后缀是.html);
  3. 双击该文件,用任意浏览器(Chrome、Edge、Firefox等)打开,即可看到爱心动态绘制的效果。

总结

  1. 核心依赖HTML5 Canvas实现图形绘制,无需额外库,浏览器原生支持;
  2. 基于笛卡尔心形数学公式计算坐标,保证爱心形状的经典还原;
  3. 通过requestAnimationFrame实现动态绘制动画,搭配RGB颜色渐变,还原剧中的视觉氛围感。

`

李峋的爱心代码 - JS版
Lᵒᵛᵉ ᵧₒᵤ ❤️
<script>// 获取Canvas元素和绘图上下文const canvas = document.getElementById('heartCanvas');const ctx = canvas.getContext('2d');// 设置Canvas尺寸(适配屏幕,居中显示)const canvasSize = 600;canvas.width = canvasSize;canvas.height = canvasSize;// 坐标系偏移:将原点移到Canvas中心,方便绘制对称爱心ctx.translate(canvasSize / 2, canvasSize / 2);// 缩放系数,适配Canvas尺寸const scale = 80;// 定义笛卡尔心形公式:x² + (y - √|x|)² = 1// 计算给定x对应的y值function getHeartY(x) {return Math.sqrt(1 - Math.pow(x, 2)) + Math.pow(Math.abs(x), 1/3);}// 动态绘制的进度(0~1)let progress = 0;// 绘制的步长(越小越平滑)const step = 0.01;// 核心绘制函数function drawHeart() {// 清空画布(保留背景)ctx.clearRect(-canvasSize/2, -canvasSize/2, canvasSize, canvasSize);// 遍历x轴,范围-1到1(心形公式的有效范围)for (let x = -1; x <= 1 && x <= progress; x += step) {// 计算上下两部分的y值(对称爱心)const y1 = getHeartY(x);const y2 = -getHeartY(x);// 计算渐变颜色:从浅粉(#ff99cc)到深红(#ff0033)// 根据x的位置(-1~1)映射颜色值const colorRatio = (x + 1) / 2; // 0~1的比例const r = 255;const g = Math.floor(153 - colorRatio * 153); // 153→0const b = Math.floor(204 - colorRatio * 171); // 204→33const color = `rgb(${r}, ${g}, ${b})`;// 绘制上半部分点drawPoint(x * scale, -y1 * scale, color); // 负号调整y轴方向(Canvas y轴向下)// 绘制下半部分点drawPoint(x * scale, -y2 * scale, color);}// 增加进度,实现动态绘制效果if (progress < 1) {progress += 0.005;requestAnimationFrame(drawHeart); // 循环绘制,形成动画}}// 绘制单个点(用小矩形模拟,更清晰)function drawPoint(x, y, color) {ctx.fillStyle = color;ctx.fillRect(x, y, 2, 2); // 点的大小:2x2像素}// 启动绘制drawHeart();
</script>
`
http://www.gsyq.cn/news/153056.html

相关文章:

  • 国标GB28181算法算力平台EasyGBS实时视频播放与监控服务方案
  • 别让粗糙工单拖慢整个线束制造生产线!这一功能,让编制效率提升300%
  • 为什么顶级科技公司都在用Open-AutoGLM做流程自动化?从点咖啡看AI落地细节
  • PW2605R输入短路保护芯片,专为5V充电线设计,防水USB口守护神
  • 2025防渗膜土工膜定制厂家榜单:土工膜土工布/防渗复合土工膜/土工格栅工程厂家精选 - 品牌推荐官
  • 默认安装C盘软件,剪切到其他盘并建立软连接
  • 旱的旱死涝的涝死:计算机专业的出路到底在哪里?
  • Android暗黑模式适配全攻略:从入门到精通,告别“阴间配色“
  • 数字人系统源码边走边拍生成--开发方案--api接口
  • 2025年12月广东酿酒设备厂家权威推荐榜:自动/不锈钢/蒸汽/全自动酿酒设备,匠心工艺与高效产能深度解析 - 品牌企业推荐师(官方)
  • 【独家首发】Open-AutoGLM连接架构深度拆解:揭秘智普开源背后的工程智慧
  • 错过再等一年!Open-AutoGLM模型首次开放,立即获取官方地址与权限
  • 收藏!大模型企业落地全指南:从阶段划分到六问拆解,小白/程序员必看
  • 现代化的 Python unittest HTML 测试报告
  • 露,生理药理实验多用仪 带你了解什么是生理药理实验多用仪
  • 【2025】国内GEO优化源码搭建排行榜 - 品牌推荐官优选
  • 从黑客视角拆解:DDoS攻击为何至今仍是网络防御难题?
  • 2025年终三峡旅游路线推荐:景观价值与体验丰富度双维度实测TOP3。 - 品牌推荐
  • 2025最新便携/车载/弥散/高原单兵氧气机厂家十大品牌推荐榜:氧源领跑特殊环境供氧领域 - 深度智识库
  • 2025年口碑好的混合动力汽车维修培训学校推荐 - 工业品牌热点
  • 【大模型安全可控新方案】:为什么90%的AI团队都在关注Open-AutoGLM离线部署?
  • Open-AutoGLM接口调用全解析,彻底解决模型延迟与超时问题
  • 揭秘Open-AutoGLM底层机制:如何实现零代码大模型调用与部署
  • 【Open-AutoGLM入门到精通】:掌握自动推理与模型压缩的终极武器
  • 单北斗GNSS桥梁变形监测系统的应用与发展解析
  • 大模型部署革命:Cornserve实现Any-to-Any模型3.81倍性能提升(值得收藏)
  • 简单介绍@TransactionalEventListener - r1
  • 2025扬州必吃淮扬菜餐厅排行榜传统市井味TOP5 - 真知灼见33
  • 《计算机与人脑》:神经脉冲的本质
  • 短信接口:面向开发者的极简技术手册 - 互亿无线