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);
}