feat: Add angle mode toggle and apply to trig functions

Co-authored-by: aider (gemini/gemini-2.5-pro) <aider@aider.chat>
This commit is contained in:
2026-03-14 13:30:51 -06:00
committed by Tanner
parent 3c18e0326d
commit 8b5ac36284
+45 -10
View File
@@ -64,10 +64,11 @@ var scientificOperators = {
'sin': {grid: [0, 0], val: 'sin'},
'cos': {grid: [1, 0], val: 'cos'},
'tan': {grid: [0, 1], val: 'tan'},
'log': {grid: [1, 1], val: 'log'},
'tenpow': {grid: [0, 2], val: '10^x'},
'ln': {grid: [1, 2], val: 'ln'},
'epow': {grid: [0, 3], val: 'e^x'},
'angleMode': {grid: [1, 1], val: 'rad'},
'log': {grid: [0, 2], val: 'log'},
'tenpow': {grid: [1, 2], val: '10^x'},
'ln': {grid: [0, 3], val: 'ln'},
'epow': {grid: [1, 3], val: 'e^x'},
};
var specialsGrid = [2, 2];
@@ -85,6 +86,7 @@ var operator = null;
var results = null;
var isDecimal = false;
var hasPressedEquals = false;
var angleMode = 'rad';
function prepareScreen(screen, grid, defaultColor) {
for (var k in screen) {
@@ -360,30 +362,54 @@ function buttonPress(val) {
break;
case 'sin':
if (results != null) {
results = Math.sin(results);
let angle = results;
if (angleMode === 'deg') {
angle = angle * Math.PI / 180;
}
results = Math.sin(angle);
displayOutput(results);
} else if (currNumber != null) {
currNumber = Math.sin(currNumber);
let angle = currNumber;
if (angleMode === 'deg') {
angle = angle * Math.PI / 180;
}
currNumber = Math.sin(angle);
displayOutput(currNumber);
}
hasPressedNumber = false;
break;
case 'cos':
if (results != null) {
results = Math.cos(results);
let angle = results;
if (angleMode === 'deg') {
angle = angle * Math.PI / 180;
}
results = Math.cos(angle);
displayOutput(results);
} else if (currNumber != null) {
currNumber = Math.cos(currNumber);
let angle = currNumber;
if (angleMode === 'deg') {
angle = angle * Math.PI / 180;
}
currNumber = Math.cos(angle);
displayOutput(currNumber);
}
hasPressedNumber = false;
break;
case 'tan':
if (results != null) {
results = Math.tan(results);
let angle = results;
if (angleMode === 'deg') {
angle = angle * Math.PI / 180;
}
results = Math.tan(angle);
displayOutput(results);
} else if (currNumber != null) {
currNumber = Math.tan(currNumber);
let angle = currNumber;
if (angleMode === 'deg') {
angle = angle * Math.PI / 180;
}
currNumber = Math.tan(angle);
displayOutput(currNumber);
}
hasPressedNumber = false;
@@ -428,6 +454,15 @@ function buttonPress(val) {
}
hasPressedNumber = false;
break;
case 'angleMode':
if (angleMode === 'rad') {
angleMode = 'deg';
} else {
angleMode = 'rad';
}
scientificOperators.angleMode.val = angleMode;
drawKey('angleMode', scientificOperators.angleMode);
break;
case 'i':
if (results != null) {
results = divide(1, results);