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

1.2.1 三角不等式演示

<!DOCTYPEhtml><html><head><metacharset="UTF-8"><title>三角不等式动态演示:||x|-|a|| ≤ |x-a|</title><style>canvas{background:#f8f9fa;border:1px solid #ccc;display:block;margin:20px auto;}.controls{text-align:center;font-family:Arial,sans-serif;}input{width:300px;cursor:pointer;}p{font-size:18px;}.note{color:#555;font-size:14px;}</style></head><body><divclass="controls"><h3>📐 三角不等式:||x| - |a|| ≤ |x - a|</h3><p>a =<spanid="a_val">0</span>&nbsp;&nbsp;&nbsp;x =<spanid="x_val">0</span></p><p><spanstyle="color:red;">红色长度 = ||x| - |a|| =<spanid="d1">0</span></span><br><spanstyle="color:blue;">蓝色长度 = |x - a| =<spanid="d2">0</span></span><br><strong>✅ 红色 ≤ 蓝色 永远成立</strong></p><p><label>拖动 a 的值:</label><inputtype="range"id="a_slider"min="-5"max="5"step="0.1"value="2"></p><p><label>拖动 x 的值:</label><inputtype="range"id="x_slider"min="-5"max="5"step="0.1"value="-2"></p><pclass="note">💡 观察:当 a 和 x 在原点同侧时,红蓝长度相等;<br>&nbsp;&nbsp;&nbsp;&nbsp;当 a 和 x 在原点异侧时,红色长度小于蓝色长度。</p></div><canvasid="canvas"width="800"height="300"></canvas><script>constcanvas=document.getElementById('canvas');constctx=canvas.getContext('2d');constwidth=800,height=300;canvas.width=width;canvas.height=height;// 坐标映射:数轴范围 -6 到 6,画布 x 范围 100 到 700functiontoX(value){return100+(value+6)/12*600;}// 获取 DOM 元素constaSlider=document.getElementById('a_slider');constxSlider=document.getElementById('x_slider');constaValSpan=document.getElementById('a_val');constxValSpan=document.getElementById('x_val');constd1Span=document.getElementById('d1');constd2Span=document.getElementById('d2');functiondraw(){leta=parseFloat(aSlider.value);letx=parseFloat(xSlider.value);// 更新数值显示aValSpan.innerText=a.toFixed(2);xValSpan.innerText=x.toFixed(2);letabsA=Math.abs(a);letabsX=Math.abs(x);letd1=Math.abs(absX-absA);letd2=Math.abs(x-a);d1Span.innerText=d1.toFixed(3);d2Span.innerText=d2.toFixed(3);// 清空画布ctx.clearRect(0,0,width,height);// 绘制数轴ctx.beginPath();ctx.moveTo(50,height/2);ctx.lineTo(width-50,height/2);ctx.strokeStyle='#aaa';ctx.stroke();// 绘制刻度for(letval=-6;val<=6;val+=1){letxc=toX(val);ctx.beginPath();ctx.moveTo(xc,height/2-5);ctx.lineTo(xc,height/2+5);ctx.stroke();ctx.fillStyle='#333';ctx.fillText(val,xc-5,height/2-10);}// 原点标注ctx.fillStyle='black';ctx.fillText("0",toX(0)-5,height/2-10);// 画 a 点(蓝色)letax=toX(a);ctx.beginPath();ctx.arc(ax,height/2,8,0,2*Math.PI);ctx.fillStyle='blue';ctx.fill();ctx.fillStyle='white';ctx.font='bold 14px Arial';ctx.fillText("a",ax-4,height/2+4);// 画 x 点(红色)letxx=toX(x);ctx.beginPath();ctx.arc(xx,height/2,8,0,2*Math.PI);ctx.fillStyle='red';ctx.fill();ctx.fillStyle='white';ctx.fillText("x",xx-4,height/2+4);// 画 |a| 点(浅蓝色,位于正半轴)letabsAx=toX(absA);ctx.beginPath();ctx.arc(absAx,height/2-40,6,0,2*Math.PI);ctx.fillStyle='#66c2ff';ctx.fill();ctx.fillStyle='black';ctx.fillText("|a|",absAx-8,height/2-45);// 画 |x| 点(浅红色,位于正半轴)letabsXx=toX(absX);ctx.beginPath();ctx.arc(absXx,height/2-40,6,0,2*Math.PI);ctx.fillStyle='#ff9999';ctx.fill();ctx.fillStyle='black';ctx.fillText("|x|",absXx-8,height/2-45);// 绘制蓝色线段:a 到 x(实际距离)ctx.beginPath();ctx.moveTo(ax,height/2);ctx.lineTo(xx,height/2);ctx.strokeStyle='blue';ctx.lineWidth=3;ctx.stroke();// 绘制红色线段:|a| 到 |x|(绝对值距离)ctx.beginPath();ctx.moveTo(absAx,height/2-40);ctx.lineTo(absXx,height/2-40);ctx.strokeStyle='red';ctx.lineWidth=3;ctx.stroke();// 可选:从 a 和 x 到它们绝对值点的虚线(展示翻折效果)ctx.beginPath();ctx.moveTo(ax,height/2);ctx.lineTo(absAx,height/2-40);ctx.strokeStyle='gray';ctx.lineWidth=1;ctx.setLineDash([5,5]);ctx.stroke();ctx.beginPath();ctx.moveTo(xx,height/2);ctx.lineTo(absXx,height/2-40);ctx.stroke();ctx.setLineDash([]);// 恢复实线// 标注长度ctx.font='14px Arial';ctx.fillStyle='blue';letmidX=(ax+xx)/2;ctx.fillText("|x-a|",midX,height/2-15);ctx.fillStyle='red';letmidAbsX=(absAx+absXx)/2;ctx.fillText("||x|-|a||",midAbsX,height/2-55);// 额外文字提示比较if(d1<=d2){ctx.fillStyle='green';ctx.font='bold 16px Arial';ctx.fillText("✓ 不等式成立",width-150,50);}}aSlider.addEventListener('input',draw);xSlider.addEventListener('input',draw);draw();</script></body></html>
http://www.jsqmd.com/news/597232/

相关文章:

  • 跨境电商多语言社交媒体营销:这些制作技巧能帮你省下大量时间
  • 突破单机限制:Nucleus Co-Op如何让单人游戏秒变多人同屏体验
  • 盒马鲜生卡回收靠谱吗?揭露四大注意事项避免踩坑 - 团团收购物卡回收
  • 单片机世界探秘:07+1 中断优先级管理详解——谁先救谁,谁抢谁的CPU!大会!
  • ADBKeyBoard完整指南:解决Android自动化测试中Unicode输入难题的终极方案
  • FactoryBluePrints:重新定义戴森球计划的模块化工厂构建范式
  • Qwen3-ASR-1.7B与Anaconda环境配置最佳实践
  • Asian Beauty Z-Image Turbo 企业级应用:构建内部数字员工形象生成平台
  • 2026届毕业生推荐的AI辅助写作方案实测分析
  • 劳力士官方售后服务中心新址实地考察报告(2026年4月权威发布) - 亨得利官方服务中心
  • 2026年安徽省有名的钢管出租公司选哪家,军旺盘扣售后完善靠谱 - 工业推荐榜
  • GME-Qwen2-VL-2B-Instruct开发指南:STM32嵌入式设备AI视觉原型
  • Qwen3.5-9B-AWQ-4bit应用场景:新媒体运营快速生成配图说明与标题建议
  • SAP ME21N增强实战:利用ME_PROCESS_PO_CUST实现采购订单的精细化校验
  • 2026年安徽省顶托油托租赁,靠谱的品牌有哪些 - 工业品网
  • 银泰百货卡回收全攻略:这些注意事项你必须知道! - 团团收购物卡回收
  • 4大维度掌握QMK Toolbox:写给机械键盘玩家的固件定制全攻略
  • 盘点全国海盗船游乐器材厂商,哪家价格更实惠? - 工业推荐榜
  • 携程任我行礼品卡如何快速出售?团团收教你一招制胜 - 团团收购物卡回收
  • 设备映射配置完全指南:解决RetroArch多设备兼容与自定义控制难题
  • 保姆级教程:用AntV L7快速搭建可交互的3D地图(附四川地图JSON数据下载)
  • 免费开源毕设:基于 YOLO 的佩戴口罩检测系统
  • STM32 CANFD波特率配置实战:从理论到代码实现
  • 闲置百联OK卡别浪费!可可收正规回收平台推荐,轻松盘活闲置价值 - 可可收
  • 用快马ai快速构建java面试题在线练习平台,助你高效备战
  • 2026年直播带货培训品牌企业推荐,北京上海优质机构排名 - 工业品牌热点
  • **发散创新:基于CUDA的GPU加速图像卷积运算实战详解**在现代计算机视觉与深度学习领域,**图像处理
  • VutronMusic:重新定义跨平台音乐体验的革新者
  • 单文件C++库如何高效加载3D模型?tinyobjloader的实战指南
  • 车辆碰撞避免的网络模型预测控制(MPC)MATLAB仿真