Skip to content

Commit 94ecad4

Browse files
authored
Update index.html
1 parent 6a83eb7 commit 94ecad4

1 file changed

Lines changed: 35 additions & 28 deletions

File tree

index.html

Lines changed: 35 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -998,44 +998,51 @@ <h4 style="font-size:160%;margin:7px">Trigonometry</h4>
998998
}
999999

10001000
function Asin(x) {
1001-
if (typeof x !== 'number' || isNaN(x) || x <= 0 || x > 1) return null;
1001+
if (typeof x !== 'number' || isNaN(x) || x < 0 || x > 1) return null;
10021002

1003-
const isSineZone = x >= 0.707;
1004-
const sourceFunc = isSineZone ? 'sin' : 'cos';
1005-
1006-
const match = closestValue(x, sourceFunc);
1007-
if (!match?.angle || typeof match.angle !== 'string') {
1008-
console.warn(`Asin: No angle match found for ${x} in ${sourceFunc}`);
1009-
return null;
1010-
}
1003+
let radian = null;
10111004

1012-
const parsed = match.angle.match(/rad\(([\d.]+)\)/);
1013-
if (!parsed) {
1014-
console.warn(`Asin: Could not parse radian from "${match.angle}"`);
1015-
return null;
1016-
}
1005+
if (x > 0.706) {
1006+
// Direct match
1007+
const match = closestValue(x, 'sin');
1008+
if (!match?.angle) return null;
1009+
const parsed = match.angle.match(/rad\(([\d.]+)\)/);
1010+
if (!parsed) return null;
1011+
radian = parseFloat(parsed[1]);
1012+
} else {
1013+
// Reflective zone
1014+
const match = closestValue(x, 'cos');
1015+
if (!match?.angle) return null;
1016+
const parsed = match.angle.match(/rad\(([\d.]+)\)/);
1017+
if (!parsed) return null;
1018+
radian = parseFloat(parsed[1]); }
10171019

1018-
const radian = parseFloat(parsed[1]);
1019-
return isSineZone ? radian : radian; // no reflection needed
1020+
return radian;
10201021
}
10211022

10221023
function Acos(x) {
1023-
if (typeof x !== 'number' || x <= 0 || x > 1) return null;
1024+
if (typeof x !== 'number' || isNaN(x) || x < 0 || x > 1) return null;
10241025

1025-
if (x <= 0.707) {
1026+
let radian = null;
1027+
1028+
if (x < 0.708) {
1029+
// Direct match
10261030
const match = closestValue(x, 'cos');
1027-
const parsed = match?.angle.match(/rad\\(([\d.]+)\\)/);
1031+
if (!match?.angle) return null;
1032+
const parsed = match.angle.match(/rad\(([\d.]+)\)/);
10281033
if (!parsed) return null;
1029-
return parseFloat(parsed[1]);
1030-
}
1031-
1032-
// No reflection — match via cosine
1033-
const match = closestValue(x, 'sin');
1034-
const parsed = match?.angle.match(/rad\\(([\d.]+)\\)/);
1035-
if (!parsed) return null;
1036-
return parseFloat(parsed[1]);
1037-
}
1034+
radian = parseFloat(parsed[1]);
1035+
} else {
1036+
// Reflective zone
1037+
const match = closestValue(x, 'sin');
1038+
if (!match?.angle) return null;
1039+
const parsed = match.angle.match(/rad\(([\d.]+)\)/);
1040+
if (!parsed) return null;
1041+
radian = parseFloat(parsed[1]); }
10381042

1043+
return radian;
1044+
}
1045+
10391046
function Atan(x) {
10401047
if (typeof x !== 'number' || isNaN(x) || x <= 0) return null;
10411048

0 commit comments

Comments
 (0)