Skip to content

Commit 90aa935

Browse files
Increased precision for ellipse's perimeter
1 parent 268aab3 commit 90aa935

2 files changed

Lines changed: 12 additions & 4 deletions

File tree

pages/elliptic-bar.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,11 @@
11
function Perimeter() {
22
let A = floatElseZero(dim.A.elt.value);
33
let B = floatElseZero(dim.B.elt.value);
4-
return 2 * PI * sqrt((A * A + B * B) / 8);
4+
let a = A / 2;
5+
let b = B / 2;
6+
let h = pow(a - b, 2) / pow(a + b, 2);
7+
let factor = 1 + 3 * h / (10 + sqrt(4 - 3 * h));
8+
return PI * (a + b) * factor;
59
}
610

711
function Area() {

pages/hollow-elliptic-bar.js

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,13 @@ function Perimeter() {
22
let A = floatElseZero(dim.A.elt.value);
33
let B = floatElseZero(dim.B.elt.value);
44
let t = floatElseZero(dim.t.elt.value);
5-
let outerSqrt = sqrt((pow(A, 2) + pow(B, 2)) / 8);
6-
let innerSqrt = sqrt((pow(A - 2 * t, 2) + pow(B - 2 * t, 2)) / 8);
7-
return 2 * PI * (outerSqrt + innerSqrt);
5+
let a = A / 2;
6+
let b = B / 2;
7+
let hOut = pow(a - b, 2) / pow(a + b, 2);
8+
let outer = PI * (a + b) * (1 + 3 * hOut / (10 + sqrt(4 - 3 * hOut)));
9+
let hInn = pow(a - b, 2) / pow(a + b - 2 * t, 2);
10+
let inner = PI * (a + b - 2 * t) * (1 + 3 * hInn / (10 + sqrt(4 - 3 * hInn)));
11+
return outer + inner;
812
}
913

1014
function Area() {

0 commit comments

Comments
 (0)