From 7078cbc744227a87d706c999c17a5c47d4b5f432 Mon Sep 17 00:00:00 2001 From: Ying-Li Niu <64801511@qq.com> Date: Thu, 18 Jun 2026 23:05:23 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E8=BD=A8=E9=81=93=E7=A4=BA=E6=84=8F?= =?UTF-8?q?=E5=9B=BE=E5=A4=AA=E9=98=B3=E7=A7=BB=E8=87=B3=E5=B7=A6=E7=84=A6?= =?UTF-8?q?=E7=82=B9=EF=BC=8C=E9=BB=98=E8=AE=A4=20e=3D0.017=EF=BC=88?= =?UTF-8?q?=E5=9C=B0=E7=90=83=E7=9C=9F=E5=AE=9E=200.0167=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 椭圆中心改为 cx+f,使左焦点=cx 为太阳 - 偏心距标注从椭圆中心指向左焦点 - a/b 标注、近日点/远日点位置同步修正 - 滑块映射改为 e=value/1000(精度 0.001) - 滑块默认值 17 → e=0.017 ≈ 地球真实 0.0167 --- examples/case04/Readme.html | 44 ++++++++++++++++++------------------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/examples/case04/Readme.html b/examples/case04/Readme.html index fded8aa..69c5fd9 100644 --- a/examples/case04/Readme.html +++ b/examples/case04/Readme.html @@ -244,8 +244,8 @@ MathJax = {
- - + +
@@ -396,18 +396,18 @@ MathJax = { ctx.stroke(); ctx.setLineDash([]); - // 椭圆轨道 + // 椭圆轨道(中心在 cx+f,左焦点=cx 为太阳) ctx.beginPath(); - ctx.ellipse(cx - f, cy, A, b, 0, 0, Math.PI * 2); + ctx.ellipse(cx + f, cy, A, b, 0, 0, Math.PI * 2); ctx.strokeStyle = '#58a6ff'; ctx.lineWidth = 1.5; ctx.stroke(); - // 半长轴 a(标注线) + // 半长轴 a(标注线,从椭圆中心到右顶点) var aY = cy + 28; ctx.beginPath(); - ctx.moveTo(cx - f, aY); - ctx.lineTo(cx - f + A, aY); + ctx.moveTo(cx + f, aY); + ctx.lineTo(cx + f + A, aY); ctx.strokeStyle = '#c9d1d9'; ctx.lineWidth = 1.5; ctx.stroke(); @@ -430,13 +430,13 @@ MathJax = { ctx.font = '13px "Segoe UI", Arial, sans-serif'; ctx.textAlign = 'center'; ctx.textBaseline = 'top'; - ctx.fillText('a = ' + A.toFixed(0), cx - f + A/2, aY + 6); + ctx.fillText('a = ' + A.toFixed(0), cx + f + A/2, aY + 6); - // 偏心距 c = ea 标注 + // 偏心距 c = ea(从左焦点到椭圆中心) var cY = cy - b - 20; ctx.beginPath(); - ctx.moveTo(cx - f, cY); - ctx.lineTo(cx, cY); + ctx.moveTo(cx, cY); + ctx.lineTo(cx + f, cY); ctx.strokeStyle = '#d29922'; ctx.lineWidth = 1.5; ctx.stroke(); @@ -458,10 +458,10 @@ MathJax = { ctx.font = '13px "Segoe UI", Arial, sans-serif'; ctx.textAlign = 'center'; ctx.textBaseline = 'bottom'; - ctx.fillText('c = ea = ' + f.toFixed(1), cx - f/2, cY - 4); + ctx.fillText('c = ea = ' + f.toFixed(1), cx + f/2, cY - 4); - // 半短轴 b 标注 - var bX = cx - f + A + 18; + // 半短轴 b 标注(从椭圆中心到上顶点) + var bX = cx + f + A + 18; ctx.beginPath(); ctx.moveTo(bX, cy); ctx.lineTo(bX, cy - b); @@ -500,10 +500,10 @@ MathJax = { ctx.font = '13px "Segoe UI", Arial, sans-serif'; ctx.textAlign = 'center'; ctx.textBaseline = 'bottom'; - ctx.fillText('太阳(焦点)', cx, cy - 12); + ctx.fillText('太阳(左焦点)', cx, cy - 12); - // 近日点标注 - var periX = cx - f - A; + // 近日点(左顶点:距左焦点最近) + var periX = cx + f - A; ctx.fillStyle = '#58a6ff'; ctx.beginPath(); ctx.arc(periX, cy, 4, 0, Math.PI * 2); @@ -514,8 +514,8 @@ MathJax = { ctx.textBaseline = 'top'; ctx.fillText('近日点 r = a(1-e) = ' + (A * (1 - e)).toFixed(1), periX, cy + 12); - // 远日点标注 - var apX = cx - f + A; + // 远日点标注(右顶点:距左焦点最远) + var apX = cx + f + A; ctx.fillStyle = '#58a6ff'; ctx.beginPath(); ctx.arc(apX, cy, 4, 0, Math.PI * 2); @@ -528,7 +528,7 @@ MathJax = { // 地球(轨道上的点) var angle = 0.4; - var ex = cx - f + A * Math.cos(angle); + var ex = cx + f + A * Math.cos(angle); var ey = cy - b * Math.sin(angle); ctx.beginPath(); ctx.arc(ex, ey, 5, 0, Math.PI * 2); @@ -579,8 +579,8 @@ MathJax = { function update() { var val = parseInt(slider.value); - var e = val / 100; - eDisplay.textContent = e.toFixed(2); + var e = val / 1000; + eDisplay.textContent = e.toFixed(4); draw(e); }